From 94781b40f2e8280efd5ca430b2952541b93ac77a Mon Sep 17 00:00:00 2001 From: kebab Date: Wed, 6 Dec 2023 13:21:56 -0500 Subject: [PATCH] second --- CMakeLists.txt | 6 +- QGCCommon.pri | 14 +- QGCExternalLibs.pri | 88 +- QGCPostLinkCommon.pri | 29 +- QGCPostLinkInstaller.pri | 13 +- README.md | 74 +- Spiri/README.md | 69 + Spiri/config/.gitkeep | 0 Spiri/data/.gitkeep | 0 Spiri/model/spiri.mesh | Bin 0 -> 780564 bytes Spiri/qml/.gitkeep | 0 Spiri/resources/icon/spiri.ico | Bin 0 -> 4286 bytes Spiri/resources/icon/spiri1.ico | Bin 0 -> 175693 bytes Spiri/resources/images/Spiri-release.svg | 1 + Spiri/resources/images/Spiri_black_120.ico | Bin 0 -> 35649 bytes Spiri/resources/images/Spiri_black_160.jpg | Bin 0 -> 52719 bytes Spiri/resources/images/Spiri_black_240.jpg | Bin 0 -> 66711 bytes Spiri/resources/images/Spiri_black_320.jpg | Bin 0 -> 83209 bytes Spiri/resources/images/Spiri_black_480.jpg | Bin 0 -> 125721 bytes Spiri/resources/images/Spiri_black_640.jpg | Bin 0 -> 177446 bytes Spiri/resources/images/Spiri_black_bl.ico | Bin 0 -> 179470 bytes Spiri/resources/images/Spiri_black_bl.jpg | Bin 0 -> 34724 bytes Spiri/resources/images/spiri.png | Bin 0 -> 7789 bytes Spiri/src/.gitkeep | 0 UnitTest.qrc | 5 - Vagrantfile | 37 +- android.pri | 85 +- android/AndroidManifest.xml | 20 +- android/res/drawable-hdpi/icon.png | Bin 22083 -> 1499 bytes android/res/drawable-ldpi/icon.png | Bin 20526 -> 521 bytes android/res/drawable-mdpi/icon.png | Bin 20526 -> 990 bytes android/res/drawable-xhdpi/icon.png | Bin 23838 -> 2117 bytes android/res/drawable-xxhdpi/icon.png | Bin 27649 -> 3379 bytes android/res/drawable-xxxhdpi/icon.png | Bin 27649 -> 4687 bytes android/src/AndroidInterface.cc | 36 - .../mavlink/qgroundcontrol/QGCActivity.java | 32 - backup-Jenkinsfile | 345 + build_ios.sh | 20 + .../InstrumentValueIcons.qrc | 590 +- {custom-example => custom}/README.jpg | Bin {custom-example => custom}/README.md | 0 .../res/drawable-hdpi/icon.png | Bin .../res/drawable-ldpi/icon.png | Bin .../res/drawable-mdpi/icon.png | Bin .../res/drawable-xhdpi/icon.png | Bin .../res/drawable-xxhdpi/icon.png | Bin .../res/drawable-xxxhdpi/icon.png | Bin {custom-example => custom}/custom.pri | 23 +- {custom-example => custom}/custom.qrc | 0 {custom-example => custom}/custom_deploy.pri | 0 .../deploy/qgroundcontrol-start.sh | 0 .../deploy/qgroundcontrol.desktop | 0 .../qgcresources.exclusion | 0 {custom-example => custom}/qgcresources.qrc | 4 - .../qgroundcontrol.exclusion | 0 {custom-example => custom}/qgroundcontrol.qrc | 21 +- .../res/Custom/Camera/ZoomControl.qml | 0 .../res/Custom/Camera/qmldir | 0 .../Widgets/CustomArtificialHorizon.qml | 0 .../Custom/Widgets/CustomAttitudeWidget.qml | 0 .../res/Custom/Widgets/CustomIconButton.qml | 0 .../res/Custom/Widgets/CustomOnOffSwitch.qml | 0 .../res/Custom/Widgets/CustomQuickButton.qml | 0 .../Custom/Widgets/CustomSignalStrength.qml | 0 .../Custom/Widgets/CustomToolBarButton.qml | 0 .../Custom/Widgets/CustomVehicleButton.qml | 0 .../res/Custom/Widgets/qmldir | 0 .../res/CustomFlyViewOverlay.qml | 34 +- .../res/Images/CustomAppIcon.png | Bin .../res/Images/CustomVehicleIcon.svg | 12 +- .../res/Images/altitude.svg | 0 .../res/Images/attitude_crosshair.svg | 0 .../res/Images/attitude_dial.svg | 0 .../res/Images/attitude_pointer.svg | 0 .../res/Images/chronometer.svg | 0 .../res/Images/compass_needle.svg | 0 .../res/Images/compass_pointer.svg | 0 .../res/Images/distance.svg | 0 .../res/Images/horizontal_speed.svg | 0 .../res/Images/microSD.svg | 0 .../res/Images/odometer.svg | 0 .../res/Images/vertical_speed.svg | 0 .../res/Images/void.png | Bin .../AutoPilotPlugin/CustomAutoPilotPlugin.cc | 0 .../AutoPilotPlugin/CustomAutoPilotPlugin.h | 0 .../src/CustomPlugin.cc | 0 {custom-example => custom}/src/CustomPlugin.h | 0 .../FirmwarePlugin/CustomFirmwarePlugin.cc | 0 .../src/FirmwarePlugin/CustomFirmwarePlugin.h | 0 .../CustomFirmwarePluginFactory.cc | 0 .../CustomFirmwarePluginFactory.h | 0 .../updateinstrumentqrc.py | 0 {custom-example => custom}/updateqrc.py | 0 deploy/docker/Dockerfile-build-linux | 2 +- deploy/docker/install-qt-linux.sh | 6 +- deploy/linux-fixup-rpaths.bash | 69 +- deploy/windows/driver.msi | Bin 6561792 -> 1667072 bytes deploy/windows/nullsoft_installer.nsi | 2 +- doc/Doxyfile | 6 +- libs/libevents/CMakeLists.txt | 6 +- libs/shapelib/AUTHORS | 2 + libs/shapelib/CMakeLists.txt | 248 + libs/shapelib/COPYING | 483 + libs/shapelib/ChangeLog | 528 + libs/shapelib/INSTALL | 370 + libs/shapelib/Makefile.am | 76 + libs/shapelib/Makefile.in | 1558 ++ libs/shapelib/NEWS | 2 + libs/shapelib/README | 25 + libs/shapelib/README.CMake | 63 + libs/shapelib/README.tree | 172 + libs/shapelib/aclocal.m4 | 1217 + libs/shapelib/ar-lib | 270 + libs/shapelib/autogen.sh | 42 + libs/shapelib/compile | 347 + libs/shapelib/config.guess | 1441 ++ libs/shapelib/config.sub | 1813 ++ libs/shapelib/configure | 19184 ++++++++++++++++ libs/shapelib/configure.ac | 70 + libs/shapelib/contrib/Makefile.am | 59 + libs/shapelib/contrib/Makefile.in | 1437 ++ libs/shapelib/contrib/ShapeFileII.pas | 239 + libs/shapelib/contrib/Shape_PointInPoly.cpp | 243 + libs/shapelib/contrib/dbfcat.c | 166 + libs/shapelib/contrib/dbfinfo.c | 111 + .../contrib/doc/Shape_PointInPoly_README.txt | 59 + libs/shapelib/contrib/doc/shpproj.txt | 71 + libs/shapelib/contrib/doc/shpsort.txt | 44 + libs/shapelib/contrib/makefile.vc | 34 + libs/shapelib/contrib/shpcat.c | 100 + libs/shapelib/contrib/shpcentrd.c | 159 + libs/shapelib/contrib/shpdata.c | 134 + libs/shapelib/contrib/shpdxf.c | 340 + libs/shapelib/contrib/shpfix.c | 110 + libs/shapelib/contrib/shpgeo.c | 1631 ++ libs/shapelib/contrib/shpgeo.h | 162 + libs/shapelib/contrib/shpinfo.c | 118 + libs/shapelib/contrib/shpproj.c | 260 + libs/shapelib/contrib/shpsort.c | 605 + libs/shapelib/contrib/shpwkb.c | 129 + libs/shapelib/contrib/tests/shpproj.sh | 39 + libs/shapelib/dbfadd.c | 133 + libs/shapelib/dbfcreate.c | 131 + libs/shapelib/dbfdump.c | 295 + libs/shapelib/dbfopen.c | 2405 ++ libs/shapelib/depcomp | 791 + libs/shapelib/install-sh | 508 + libs/shapelib/ltmain.sh | 11156 +++++++++ libs/shapelib/m4/libtool.m4 | 8388 +++++++ libs/shapelib/m4/ltoptions.m4 | 437 + libs/shapelib/m4/ltsugar.m4 | 124 + libs/shapelib/m4/ltversion.m4 | 23 + libs/shapelib/m4/lt~obsolete.m4 | 99 + libs/shapelib/makefile.vc | 90 + libs/shapelib/missing | 215 + libs/shapelib/safileio.c | 291 + libs/shapelib/sbnsearch.c | 985 + libs/shapelib/shapefil.h | 747 + libs/shapelib/shapelib.pc.in | 14 + libs/shapelib/shpadd.c | 241 + libs/shapelib/shpcreate.c | 135 + libs/shapelib/shpdump.c | 284 + libs/shapelib/shpopen.c | 3086 +++ libs/shapelib/shprewind.c | 121 + libs/shapelib/shptest.c | 314 + libs/shapelib/shptree.c | 1266 + libs/shapelib/shptreedump.c | 466 + libs/shapelib/shputils.c | 1077 + libs/shapelib/test-driver | 148 + libs/shapelib/tests/stream1.out | 1465 ++ libs/shapelib/tests/test1.sh | 45 + libs/shapelib/tests/test2.sh | 27 + libs/shapelib/tests/test3.sh | 38 + libs/shapelib/web/codepage.html | 403 + libs/shapelib/web/dbf_api.html | 434 + libs/shapelib/web/index.html | 232 + libs/shapelib/web/license.html | 78 + libs/shapelib/web/manifest.html | 87 + libs/shapelib/web/maptools.css | 357 + libs/shapelib/web/release.html | 103 + libs/shapelib/web/shapelib-tools.html | 352 + libs/shapelib/web/shp_api.html | 376 + qgcimages.qrc | 10 - qgcresources.qrc | 4 - qgroundcontrol.pro | 170 +- qgroundcontrol.qrc | 23 +- resources/Gripper.svg | 20 - resources/GripperGrab.svg | 27 - resources/GripperRelease.svg | 27 - resources/NoVideoBackground.jpg | Bin 333633 -> 0 bytes .../SDL_GameControllerDB/gamecontrollerdb.txt | 2105 +- snap/snapcraft.yaml | 15 + src/ADSB/ADSBVehicle.cc | 7 +- src/ADSB/ADSBVehicle.h | 9 +- src/ADSB/ADSBVehicleManager.cc | 162 +- src/ADSB/ADSBVehicleManager.h | 7 +- src/Airmap/AirMap.SettingsGroup.json | 55 + src/Airmap/AirMapAdvisoryManager.cc | 145 + src/Airmap/AirMapAdvisoryManager.h | 71 + src/Airmap/AirMapFlightManager.cc | 112 + src/Airmap/AirMapFlightManager.h | 51 + src/Airmap/AirMapFlightPlanManager.cc | 926 + src/Airmap/AirMapFlightPlanManager.h | 181 + src/Airmap/AirMapManager.cc | 257 + src/Airmap/AirMapManager.h | 73 + src/Airmap/AirMapRestrictionManager.cc | 234 + src/Airmap/AirMapRestrictionManager.h | 56 + src/Airmap/AirMapRulesetsManager.cc | 388 + src/Airmap/AirMapRulesetsManager.h | 132 + src/Airmap/AirMapSettings.cc | 28 + src/Airmap/AirMapSettings.h | 31 + src/Airmap/AirMapSharedState.cc | 124 + src/Airmap/AirMapSharedState.h | 77 + src/Airmap/AirMapTelemetry.cc | 156 + src/Airmap/AirMapTelemetry.h | 57 + src/Airmap/AirMapTrafficMonitor.cc | 79 + src/Airmap/AirMapTrafficMonitor.h | 52 + src/Airmap/AirMapVehicleManager.cc | 100 + src/Airmap/AirMapVehicleManager.h | 49 + src/Airmap/AirMapWeatherInfoManager.cc | 72 + src/Airmap/AirMapWeatherInfoManager.h | 61 + src/Airmap/AirmapSettings.qml | 732 + src/Airmap/AirspaceControl.qml | 603 + src/Airmap/AirspaceRegulation.qml | 58 + src/Airmap/AirspaceWeather.qml | 44 + src/Airmap/CMakeLists.txt | 49 + src/Airmap/ComplianceRules.qml | 124 + src/Airmap/FlightBrief.qml | 234 + src/Airmap/FlightDetails.qml | 212 + src/Airmap/FlightFeature.qml | 103 + src/Airmap/LifetimeChecker.h | 29 + src/Airmap/QJsonWebToken/README.md | 47 + .../QJsonWebToken/src/qjsonwebtoken.cpp | 337 + src/Airmap/QJsonWebToken/src/qjsonwebtoken.h | 404 + .../QJsonWebToken/src/qjsonwebtoken.pri | 7 + src/Airmap/README.md | 2 + src/Airmap/RuleSelector.qml | 55 + src/Airmap/airmap.qrc | 59 + src/Airmap/dummy/AirspaceControl.qml | 6 + src/Airmap/dummy/AirspaceManager.cc | 35 + src/Airmap/dummy/AirspaceManager.h | 58 + src/Airmap/dummy/AirspaceRegulation.qml | 3 + src/Airmap/dummy/AirspaceWeather.qml | 4 + src/Airmap/dummy/ComplianceRules.qml | 5 + src/Airmap/dummy/FlightBrief.qml | 5 + src/Airmap/dummy/FlightDetails.qml | 5 + src/Airmap/dummy/FlightFeature.qml | 5 + src/Airmap/dummy/QGroundControl.Airmap.qmldir | 5 + src/Airmap/dummy/RuleSelector.qml | 5 + src/Airmap/dummy/airmap_dummy.qrc | 13 + src/Airmap/images/advisory-icon.svg | 21 + src/Airmap/images/colapse.svg | 9 + src/Airmap/images/expand.svg | 9 + src/Airmap/images/pencil.svg | 17 + src/Airmap/images/right-arrow.svg | 9 + src/Airmap/images/unavailable.svg | 8 + src/Airmap/images/weather-icons/clear.svg | 12 + src/Airmap/images/weather-icons/cloudy.svg | 12 + .../images/weather-icons/cloudy_wind.svg | 12 + src/Airmap/images/weather-icons/drizzle.svg | 12 + .../images/weather-icons/drizzle_day.svg | 12 + .../images/weather-icons/drizzle_night.svg | 12 + src/Airmap/images/weather-icons/foggy.svg | 18 + src/Airmap/images/weather-icons/frigid.svg | 13 + src/Airmap/images/weather-icons/hail.svg | 12 + .../images/weather-icons/heavy_rain.svg | 12 + src/Airmap/images/weather-icons/hurricane.svg | 14 + .../weather-icons/isolated_thunderstorms.svg | 12 + .../images/weather-icons/mostly_clear.svg | 12 + .../weather-icons/mostly_cloudy_day.svg | 12 + .../weather-icons/mostly_cloudy_night.svg | 12 + .../images/weather-icons/mostly_sunny.svg | 12 + .../weather-icons/partly_cloudy_day.svg | 12 + .../weather-icons/partly_cloudy_night.svg | 12 + src/Airmap/images/weather-icons/rain.svg | 12 + src/Airmap/images/weather-icons/rain_snow.svg | 14 + .../scattered_snow_showers_day.svg | 14 + .../scattered_snow_showers_night.svg | 14 + .../scattered_thunderstorms_day.svg | 13 + .../scattered_thunderstorms_night.svg | 12 + src/Airmap/images/weather-icons/snow.svg | 15 + .../images/weather-icons/snow_storm.svg | 15 + src/Airmap/images/weather-icons/sunny.svg | 12 + .../images/weather-icons/thunderstorm.svg | 12 + src/Airmap/images/weather-icons/tornado.svg | 12 + src/Airmap/images/weather-icons/unknown.svg | 14 + src/Airmap/images/weather-icons/windy.svg | 12 + src/Airmap/services/advisory.cpp | 36 + src/Airmap/services/advisory.h | 29 + src/Airmap/services/aircrafts.cpp | 36 + src/Airmap/services/aircrafts.h | 32 + src/Airmap/services/airspaces.cpp | 27 + src/Airmap/services/airspaces.h | 31 + src/Airmap/services/authenticator.cpp | 38 + src/Airmap/services/authenticator.h | 37 + src/Airmap/services/client.cpp | 166 + src/Airmap/services/client.h | 65 + src/Airmap/services/dispatcher.cpp | 62 + src/Airmap/services/dispatcher.h | 53 + src/Airmap/services/flight_plans.cpp | 60 + src/Airmap/services/flight_plans.h | 36 + src/Airmap/services/flights.cpp | 88 + src/Airmap/services/flights.h | 40 + src/Airmap/services/logger.cpp | 78 + src/Airmap/services/logger.h | 57 + src/Airmap/services/pilots.cpp | 86 + src/Airmap/services/pilots.h | 41 + src/Airmap/services/rulesets.cpp | 53 + src/Airmap/services/rulesets.h | 31 + src/Airmap/services/status.cpp | 34 + src/Airmap/services/status.h | 32 + src/Airmap/services/telemetry.cpp | 20 + src/Airmap/services/telemetry.h | 31 + src/Airmap/services/traffic.cpp | 52 + src/Airmap/services/traffic.h | 54 + src/Airmap/services/types.cpp | 79 + src/Airmap/services/types.h | 67 + .../AirspaceAdvisoryProvider.cc | 46 + .../AirspaceAdvisoryProvider.h | 104 + .../AirspaceFlightPlanProvider.cc | 169 + .../AirspaceFlightPlanProvider.h | 216 + src/AirspaceManagement/AirspaceManager.cc | 155 + src/AirspaceManagement/AirspaceManager.h | 148 + src/AirspaceManagement/AirspaceRestriction.cc | 35 + src/AirspaceManagement/AirspaceRestriction.h | 76 + .../AirspaceRestrictionProvider.cc | 16 +- .../AirspaceRestrictionProvider.h | 45 + .../AirspaceRulesetsProvider.cc | 30 + .../AirspaceRulesetsProvider.h | 173 + .../AirspaceVehicleManager.cc | 40 + .../AirspaceVehicleManager.h | 58 + .../AirspaceWeatherInfoProvider.cc | 15 + .../AirspaceWeatherInfoProvider.h | 58 + src/AirspaceManagement/CMakeLists.txt | 14 + src/AnalyzeView/AnalyzeView.qml | 39 +- src/AnalyzeView/LogDownloadController.cc | 2 +- src/AnalyzeView/LogDownloadPage.qml | 25 +- src/AnalyzeView/VibrationPage.qml | 103 +- .../APM/APMAutoPilotPlugin.cc | 6 - src/AutoPilotPlugins/APM/APMAutoPilotPlugin.h | 2 - .../APM/APMCameraSubComponent.qml | 8 +- src/AutoPilotPlugins/APM/APMCompassCal.cc | 690 + src/AutoPilotPlugins/APM/APMCompassCal.h | 168 + src/AutoPilotPlugins/APM/APMHeliComponent.qml | 52 +- .../APM/APMLightsComponent.qml | 4 +- .../APM/APMPowerComponent.qml | 205 +- .../APM/APMRemoteSupportComponent.cc | 58 - .../APM/APMRemoteSupportComponent.h | 35 - .../APM/APMRemoteSupportComponent.qml | 68 - .../APM/APMSafetyComponent.qml | 201 +- .../APM/APMSensorsComponent.qml | 539 +- .../APM/APMSensorsComponentController.cc | 15 +- .../APM/APMSensorsComponentController.h | 3 + .../APM/APMSubFrameComponent.qml | 71 +- src/AutoPilotPlugins/APM/CMakeLists.txt | 3 +- .../APM/Images/ForwardingSupportIcon.svg | 17 - .../APM/Images/ForwardingSupportIconGreen.svg | 40 - src/AutoPilotPlugins/CMakeLists.txt | 4 +- .../Common/RadioComponent.qml | 84 +- .../PX4/ActuatorComponent.qml | 24 +- .../PX4/AirframeComponent.qml | 28 +- .../PX4/AirframeFactMetaData.xml | 813 +- src/AutoPilotPlugins/PX4/CMakeLists.txt | 1 + .../PX4/FlightModesComponent.cc | 3 +- .../PX4/FlightModesComponentSummary.qml | 60 +- .../PX4/PX4AdvancedFlightModes.qml | 384 + .../PX4/PX4AdvancedFlightModesController.cc | 800 + .../PX4/PX4AdvancedFlightModesController.h | 226 + .../PX4/PX4AutoPilotPlugin.cc | 1 + src/AutoPilotPlugins/PX4/PX4FlightBehavior.cc | 10 +- src/AutoPilotPlugins/PX4/PX4FlightModes.qml | 4 +- .../PX4/PX4SimpleFlightModes.qml | 12 +- .../PX4/PX4TuningComponent.cc | 12 +- .../PX4/PX4TuningComponentPlaneAll.qml | 8 +- .../PX4/PX4TuningComponentPlaneAttitude.qml | 71 - .../PX4/PX4TuningComponentPlaneRate.qml | 173 - src/AutoPilotPlugins/PX4/PowerComponent.cc | 15 +- src/AutoPilotPlugins/PX4/PowerComponent.qml | 45 +- .../PX4/PowerComponentSummary.qml | 6 +- src/AutoPilotPlugins/PX4/SensorsSetup.qml | 249 +- src/CMakeLists.txt | 6 +- src/Camera/QGCCameraControl.cc | 76 +- src/Camera/QGCCameraControl.h | 1 - src/Camera/QGCCameraManager.cc | 2 + src/FactSystem/Fact.cc | 1 - src/FactSystem/FactControls/FactComboBox.qml | 11 - src/FactSystem/FactControls/FactTextField.qml | 23 +- .../FactControls/FactValueSlider.qml | 2 +- src/FactSystem/FactMetaData.cc | 46 +- src/FactSystem/FactMetaData.h | 19 +- src/FactSystem/ParameterManager.cc | 322 +- src/FactSystem/ParameterManager.h | 9 +- src/FactSystem/ParameterManagerTest.cc | 93 - src/FactSystem/ParameterManagerTest.h | 3 - src/FirmwarePlugin/APM/APMFirmwarePlugin.cc | 183 +- src/FirmwarePlugin/APM/APMFirmwarePlugin.h | 11 - .../APM/APMFirmwarePluginFactory.cc | 10 +- .../APMParameterFactMetaData.Copter.3.5.xml | 11623 ++++++++++ .../APMParameterFactMetaData.Copter.3.6.xml | 9401 ++++++++ .../APMParameterFactMetaData.Copter.3.7.xml | 14791 ++++++++++++ .../APMParameterFactMetaData.Copter.4.0.xml | 16158 +++++++++++++ ...> APMParameterFactMetaData.Copter.4.1.xml} | 5816 ++--- .../APMParameterFactMetaData.Plane.3.10.xml | 13856 +++++++++++ .../APMParameterFactMetaData.Plane.3.8.xml | 8268 +++++++ .../APMParameterFactMetaData.Plane.3.9.xml | 10620 +++++++++ .../APMParameterFactMetaData.Plane.4.0.xml | 14946 ++++++++++++ ...=> APMParameterFactMetaData.Plane.4.1.xml} | 6182 ++--- .../APMParameterFactMetaData.Rover.3.4.xml | 7224 ++++++ .../APMParameterFactMetaData.Rover.3.5.xml | 11650 ++++++++++ .../APMParameterFactMetaData.Rover.3.6.xml | 13034 +++++++++++ .../APMParameterFactMetaData.Rover.4.0.xml | 13621 +++++++++++ ...=> APMParameterFactMetaData.Rover.4.1.xml} | 5097 ++-- .../APM/APMParameterFactMetaData.Sub.3.4.xml | 6680 ++++++ .../APM/APMParameterFactMetaData.Sub.3.5.xml | 8765 +++++++ .../APM/APMParameterFactMetaData.Sub.3.6.xml | 12574 ++++++++++ .../APM/APMParameterFactMetaData.Sub.4.0.xml | 13283 +++++++++++ .../APM/APMParameterFactMetaData.Sub.4.1.xml | 15203 ++++++++++++ .../APM/APMParameterMetaData.cc | 10 +- src/FirmwarePlugin/APM/APMResources.qrc | 44 +- src/FirmwarePlugin/APM/APMSensorParams.qml | 2 +- .../APM/ArduCopterFirmwarePlugin.cc | 17 +- .../APM/ArduCopterFirmwarePlugin.h | 10 +- .../APM/ArduRoverFirmwarePlugin.cc | 10 +- .../APM/ArduRoverFirmwarePlugin.h | 6 + src/FirmwarePlugin/APM/BuildParamMetaData.sh | 7 + src/FirmwarePlugin/FirmwarePlugin.cc | 35 +- src/FirmwarePlugin/FirmwarePlugin.h | 33 +- src/FirmwarePlugin/PX4/PX4FirmwarePlugin.cc | 109 +- src/FirmwarePlugin/PX4/PX4FirmwarePlugin.h | 8 - .../PX4/PX4ParameterFactMetaData.xml | 5985 ++--- src/FirmwarePlugin/PX4/PX4Resources.qrc | 3 +- src/FirstRunPromptDialogs/FirstRunPrompt.qml | 4 +- src/FlightDisplay/CMakeLists.txt | 5 +- src/FlightDisplay/FlightDisplayViewUVC.qml | 20 +- src/FlightDisplay/FlightDisplayViewVideo.qml | 37 +- src/FlightDisplay/FlyView.qml | 32 +- .../FlyViewAirspaceIndicator.qml | 66 + src/FlightDisplay/FlyViewCustomLayer.qml | 29 +- src/FlightDisplay/FlyViewInsetViewer.qml | 194 - src/FlightDisplay/FlyViewInstrumentPanel.qml | 9 + src/FlightDisplay/FlyViewMap.qml | 194 +- .../FlyViewMissionCompleteDialog.qml | 120 +- .../FlyViewPreFlightChecklistPopup.qml | 2 + .../FlyViewToolStripActionList.qml | 3 +- src/FlightDisplay/FlyViewWidgetLayer.qml | 81 +- src/FlightDisplay/GripperMenu.qml | 71 - src/FlightDisplay/GuidedActionConfirm.qml | 51 +- src/FlightDisplay/GuidedActionGripper.qml | 24 - src/FlightDisplay/GuidedActionList.qml | 62 +- src/FlightDisplay/GuidedActionsController.qml | 122 +- src/FlightDisplay/GuidedAltitudeSlider.qml | 106 + src/FlightDisplay/GuidedValueSlider.qml | 179 - src/FlightDisplay/TelemetryValuesBar.qml | 17 +- src/FlightDisplay/VehicleWarnings.qml | 2 +- src/FlightMap/FlightMap.qml | 11 +- src/FlightMap/MapItems/VehicleMapItem.qml | 10 +- src/FlightMap/Widgets/PhotoVideoControl.qml | 18 +- src/Joystick/Joystick.cc | 62 +- src/Joystick/Joystick.h | 16 +- src/Joystick/JoystickManager.cc | 11 +- src/Joystick/JoystickManager.h | 2 +- src/Joystick/JoystickSDL.cc | 5 + src/MissionManager/CorridorScanComplexItem.cc | 8 - src/MissionManager/GeoFenceController.cc | 87 +- src/MissionManager/GeoFenceController.h | 13 +- src/MissionManager/GeoFenceManager.cc | 3 + src/MissionManager/GeoFenceManager.h | 7 + src/MissionManager/MavCmdInfoCommon.json | 189 +- src/MissionManager/MissionCommandTreeTest.cc | 4 +- src/MissionManager/MissionCommandUIInfo.cc | 23 +- src/MissionManager/MissionCommandUIInfo.h | 8 - src/MissionManager/MissionController.cc | 2 +- src/MissionManager/PlanMasterController.cc | 20 + src/MissionManager/PlanMasterController.h | 3 + src/MissionManager/QGCMapPolygonVisuals.qml | 8 +- src/MissionManager/QGCMapPolylineVisuals.qml | 5 +- src/MissionManager/SimpleMissionItem.cc | 9 - .../TransectStyleComplexItem.cc | 8 +- src/PlanView/MissionItemEditor.qml | 8 +- src/PlanView/MissionSettingsEditor.qml | 2 +- src/PlanView/PlanToolBarIndicators.qml | 2 +- src/PlanView/PlanView.qml | 327 +- src/PlanView/SimpleItemEditor.qml | 2 +- src/PlanView/StructureScanEditor.qml | 71 +- src/PlanView/TerrainStatus.qml | 1 + .../TransectStyleComplexItemEditor.qml | 25 +- .../TransectStyleComplexItemTerrainFollow.qml | 2 +- src/PositionManager/PositionManager.cpp | 13 +- src/QGCApplication.cc | 15 +- src/QGCCachedFileDownload.cc | 71 - src/QGCCachedFileDownload.h | 39 - src/QGCFileDownload.cc | 27 +- src/QGCFileDownload.h | 6 +- src/QGCLoggingCategory.cc | 2 - src/QGCLoggingCategory.h | 1 - src/QGCToolbox.cc | 14 + src/QGCToolbox.h | 3 + src/QmlControls/AltModeDialog.qml | 18 +- src/QmlControls/AppMessages.qml | 6 +- src/QmlControls/AutotuneUI.qml | 34 +- src/QmlControls/CMakeLists.txt | 3 - src/QmlControls/CustomAction.h | 58 - src/QmlControls/CustomActionManager.cc | 101 - src/QmlControls/CustomActionManager.h | 37 - src/QmlControls/CustomActions.json | 22 - src/QmlControls/EditPositionDialog.qml | 233 +- src/QmlControls/HorizontalFactValueGrid.qml | 10 +- src/QmlControls/InstrumentValueEditDialog.qml | 30 +- src/QmlControls/InstrumentValueLabel.qml | 11 +- src/QmlControls/InstrumentValueValue.qml | 1 - src/QmlControls/JoystickThumbPad.qml | 11 +- src/QmlControls/LogReplayStatusBar.qml | 1 - src/QmlControls/MissionCommandDialog.qml | 135 +- src/QmlControls/ParameterDiffDialog.qml | 5 +- src/QmlControls/ParameterEditor.qml | 66 +- src/QmlControls/ParameterEditorController.cc | 17 +- src/QmlControls/ParameterEditorDialog.qml | 313 +- src/QmlControls/QGCColumnButton.qml | 63 - src/QmlControls/QGCComboBox.qml | 1 - src/QmlControls/QGCFileDialog.qml | 222 +- src/QmlControls/QGCFlickable.qml | 10 +- src/QmlControls/QGCMouseArea.qml | 2 +- src/QmlControls/QGCPipOverlay.qml | 1 - src/QmlControls/QGCPopupDialog.qml | 291 +- src/QmlControls/QGCPopupDialogContainer.qml | 232 + src/QmlControls/QGCSimpleMessageDialog.qml | 33 - src/QmlControls/QGCTextField.qml | 4 - src/QmlControls/QGCToolBarButton.qml | 7 +- src/QmlControls/QGCViewDialog.qml | 46 + src/QmlControls/QGCViewDialogContainer.qml | 177 + src/QmlControls/QGCViewMessage.qml | 35 + src/QmlControls/QGroundControl/Airmap/qmldir | 10 + .../QGroundControl/Controls/qmldir | 8 +- .../QGroundControl/FlightDisplay/qmldir | 6 +- src/QmlControls/QGroundControlQmlGlobal.cc | 28 +- src/QmlControls/QGroundControlQmlGlobal.h | 21 +- src/QmlControls/QmlObjectListModel.cc | 2 +- src/QmlControls/QmlUnitsConversion.h | 6 - src/QmlControls/RCToParamDialog.qml | 9 +- src/QmlControls/SliderSwitch.qml | 68 +- src/QmlControls/ToolStrip.qml | 2 +- src/QtLocationPlugin/ElevationMapProvider.cpp | 20 +- src/QtLocationPlugin/ElevationMapProvider.h | 5 +- src/QtLocationPlugin/GenericMapProvider.cpp | 8 - src/QtLocationPlugin/GenericMapProvider.h | 13 +- src/QtLocationPlugin/QGCMapEngine.cpp | 12 +- src/QtLocationPlugin/QGCMapEngine.h | 16 +- src/QtLocationPlugin/QGCMapEngineData.h | 2 +- src/QtLocationPlugin/QGCMapTileSet.cpp | 4 +- src/QtLocationPlugin/QGCMapUrlEngine.cpp | 45 +- src/QtLocationPlugin/QGCMapUrlEngine.h | 16 +- src/QtLocationPlugin/QGCTileCacheWorker.cpp | 22 +- .../QMLControl/OfflineMap.qml | 301 +- .../QMLControl/QGCMapEngineManager.cc | 14 +- src/QtLocationPlugin/qtlocation/README.md | 9 + .../5.5.1/QtLocation/private/qcache3q_p.h | 1 + .../private/qgeocameracapabilities_p.h | 1 + .../QtLocation/private/qgeocameradata_p.h | 1 + .../QtLocation/private/qgeocameratiles_p.h | 1 + .../QtLocation/private/qgeocodereply_p.h | 1 + .../QtLocation/private/qgeocodingmanager_p.h | 1 + .../private/qgeocodingmanagerengine_p.h | 1 + .../5.5.1/QtLocation/private/qgeomaneuver_p.h | 1 + .../5.5.1/QtLocation/private/qgeomap_p.h | 1 + .../5.5.1/QtLocation/private/qgeomap_p_p.h | 1 + .../QtLocation/private/qgeomapcontroller_p.h | 1 + .../QtLocation/private/qgeomappingmanager_p.h | 1 + .../private/qgeomappingmanager_p_p.h | 1 + .../private/qgeomappingmanagerengine_p.h | 1 + .../private/qgeomappingmanagerengine_p_p.h | 1 + .../5.5.1/QtLocation/private/qgeomapscene_p.h | 1 + .../5.5.1/QtLocation/private/qgeomaptype_p.h | 1 + .../QtLocation/private/qgeomaptype_p_p.h | 1 + .../5.5.1/QtLocation/private/qgeoroute_p.h | 1 + .../QtLocation/private/qgeoroutereply_p.h | 1 + .../QtLocation/private/qgeorouterequest_p.h | 1 + .../QtLocation/private/qgeoroutesegment_p.h | 1 + .../QtLocation/private/qgeoroutingmanager_p.h | 1 + .../private/qgeoroutingmanagerengine_p.h | 1 + .../private/qgeoserviceprovider_p.h | 1 + .../QtLocation/private/qgeotilecache_p.h | 1 + .../5.5.1/QtLocation/private/qgeotiledmap_p.h | 1 + .../QtLocation/private/qgeotiledmap_p_p.h | 1 + .../private/qgeotiledmappingmanagerengine_p.h | 1 + .../qgeotiledmappingmanagerengine_p_p.h | 1 + .../QtLocation/private/qgeotiledmapreply_p.h | 1 + .../private/qgeotiledmapreply_p_p.h | 1 + .../QtLocation/private/qgeotilefetcher_p.h | 1 + .../QtLocation/private/qgeotilefetcher_p_p.h | 1 + .../private/qgeotilerequestmanager_p.h | 1 + .../5.5.1/QtLocation/private/qgeotilespec_p.h | 1 + .../QtLocation/private/qgeotilespec_p_p.h | 1 + .../5.5.1/QtLocation/private/qplace_p.h | 1 + .../QtLocation/private/qplaceattribute_p.h | 1 + .../QtLocation/private/qplacecategory_p.h | 1 + .../private/qplacecontactdetail_p.h | 1 + .../QtLocation/private/qplacecontent_p.h | 1 + .../private/qplacecontentrequest_p.h | 1 + .../QtLocation/private/qplaceeditorial_p.h | 1 + .../5.5.1/QtLocation/private/qplaceicon_p.h | 1 + .../5.5.1/QtLocation/private/qplaceimage_p.h | 1 + .../private/qplacemanagerengine_p.h | 1 + .../private/qplaceproposedsearchresult_p.h | 1 + .../QtLocation/private/qplaceratings_p.h | 1 + .../5.5.1/QtLocation/private/qplacereply_p.h | 1 + .../5.5.1/QtLocation/private/qplaceresult_p.h | 1 + .../5.5.1/QtLocation/private/qplacereview_p.h | 1 + .../QtLocation/private/qplacesearchresult_p.h | 1 + .../QtLocation/private/qplacesupplier_p.h | 1 + .../5.5.1/QtLocation/private/qplaceuser_p.h | 1 + .../QtLocation/private/unsupportedreplies_p.h | 1 + .../include/QtLocation/QGeoCodeReply | 1 + .../include/QtLocation/QGeoCodingManager | 1 + .../QtLocation/QGeoCodingManagerEngine | 1 + .../include/QtLocation/QGeoManeuver | 1 + .../qtlocation/include/QtLocation/QGeoRoute | 1 + .../include/QtLocation/QGeoRouteReply | 1 + .../include/QtLocation/QGeoRouteRequest | 1 + .../include/QtLocation/QGeoRouteSegment | 1 + .../include/QtLocation/QGeoRoutingManager | 1 + .../QtLocation/QGeoRoutingManagerEngine | 1 + .../include/QtLocation/QGeoServiceProvider | 1 + .../QtLocation/QGeoServiceProviderFactory | 1 + .../qtlocation/include/QtLocation/QLocation | 1 + .../qtlocation/include/QtLocation/QPlace | 1 + .../include/QtLocation/QPlaceAttribute | 1 + .../include/QtLocation/QPlaceCategory | 1 + .../include/QtLocation/QPlaceContactDetail | 1 + .../include/QtLocation/QPlaceContent | 1 + .../include/QtLocation/QPlaceContentReply | 1 + .../include/QtLocation/QPlaceContentRequest | 1 + .../include/QtLocation/QPlaceDetailsReply | 1 + .../include/QtLocation/QPlaceEditorial | 1 + .../qtlocation/include/QtLocation/QPlaceIcon | 1 + .../include/QtLocation/QPlaceIdReply | 1 + .../qtlocation/include/QtLocation/QPlaceImage | 1 + .../include/QtLocation/QPlaceManager | 1 + .../include/QtLocation/QPlaceManagerEngine | 1 + .../include/QtLocation/QPlaceMatchReply | 1 + .../include/QtLocation/QPlaceMatchRequest | 1 + .../QtLocation/QPlaceProposedSearchResult | 1 + .../include/QtLocation/QPlaceRatings | 1 + .../qtlocation/include/QtLocation/QPlaceReply | 1 + .../include/QtLocation/QPlaceResult | 1 + .../include/QtLocation/QPlaceReview | 1 + .../include/QtLocation/QPlaceSearchReply | 1 + .../include/QtLocation/QPlaceSearchRequest | 1 + .../include/QtLocation/QPlaceSearchResult | 1 + .../QtLocation/QPlaceSearchSuggestionReply | 1 + .../include/QtLocation/QPlaceSupplier | 1 + .../qtlocation/include/QtLocation/QPlaceUser | 1 + .../qtlocation/include/QtLocation/QtLocation | 47 + .../include/QtLocation/QtLocationVersion | 1 + .../include/QtLocation/placemacro.h | 1 + .../include/QtLocation/qgeocodereply.h | 1 + .../include/QtLocation/qgeocodingmanager.h | 1 + .../QtLocation/qgeocodingmanagerengine.h | 1 + .../include/QtLocation/qgeomaneuver.h | 1 + .../qtlocation/include/QtLocation/qgeoroute.h | 1 + .../include/QtLocation/qgeoroutereply.h | 1 + .../include/QtLocation/qgeorouterequest.h | 1 + .../include/QtLocation/qgeoroutesegment.h | 1 + .../include/QtLocation/qgeoroutingmanager.h | 1 + .../QtLocation/qgeoroutingmanagerengine.h | 1 + .../include/QtLocation/qgeoserviceprovider.h | 1 + .../QtLocation/qgeoserviceproviderfactory.h | 1 + .../qtlocation/include/QtLocation/qlocation.h | 1 + .../include/QtLocation/qlocationglobal.h | 1 + .../qtlocation/include/QtLocation/qplace.h | 1 + .../include/QtLocation/qplaceattribute.h | 1 + .../include/QtLocation/qplacecategory.h | 1 + .../include/QtLocation/qplacecontactdetail.h | 1 + .../include/QtLocation/qplacecontent.h | 1 + .../include/QtLocation/qplacecontentreply.h | 1 + .../include/QtLocation/qplacecontentrequest.h | 1 + .../include/QtLocation/qplacedetailsreply.h | 1 + .../include/QtLocation/qplaceeditorial.h | 1 + .../include/QtLocation/qplaceicon.h | 1 + .../include/QtLocation/qplaceidreply.h | 1 + .../include/QtLocation/qplaceimage.h | 1 + .../include/QtLocation/qplacemanager.h | 1 + .../include/QtLocation/qplacemanagerengine.h | 1 + .../include/QtLocation/qplacematchreply.h | 1 + .../include/QtLocation/qplacematchrequest.h | 1 + .../QtLocation/qplaceproposedsearchresult.h | 1 + .../include/QtLocation/qplaceratings.h | 1 + .../include/QtLocation/qplacereply.h | 1 + .../include/QtLocation/qplaceresult.h | 1 + .../include/QtLocation/qplacereview.h | 1 + .../include/QtLocation/qplacesearchreply.h | 1 + .../include/QtLocation/qplacesearchrequest.h | 1 + .../include/QtLocation/qplacesearchresult.h | 1 + .../QtLocation/qplacesearchsuggestionreply.h | 1 + .../include/QtLocation/qplacesupplier.h | 1 + .../include/QtLocation/qplaceuser.h | 1 + .../include/QtLocation/qtlocationversion.h | 9 + .../private/qdeclarativegeoaddress_p.h | 1 + .../private/qdeclarativegeolocation_p.h | 1 + .../QtPositioning/private/qdoublevector2d_p.h | 1 + .../QtPositioning/private/qdoublevector3d_p.h | 1 + .../QtPositioning/private/qgeoaddress_p.h | 1 + .../QtPositioning/private/qgeocircle_p.h | 1 + .../QtPositioning/private/qgeocoordinate_p.h | 1 + .../QtPositioning/private/qgeolocation_p.h | 1 + .../private/qgeopositioninfosource_p.h | 1 + .../QtPositioning/private/qgeoprojection_p.h | 1 + .../QtPositioning/private/qgeorectangle_p.h | 1 + .../5.5.1/QtPositioning/private/qgeoshape_p.h | 1 + .../QtPositioning/private/qlocationutils_p.h | 1 + .../private/qnmeapositioninfosource_p.h | 1 + .../include/QtPositioning/QGeoAddress | 1 + .../include/QtPositioning/QGeoAreaMonitorInfo | 1 + .../QtPositioning/QGeoAreaMonitorSource | 1 + .../include/QtPositioning/QGeoCircle | 1 + .../include/QtPositioning/QGeoCoordinate | 1 + .../include/QtPositioning/QGeoLocation | 1 + .../include/QtPositioning/QGeoPositionInfo | 1 + .../QtPositioning/QGeoPositionInfoSource | 1 + .../QGeoPositionInfoSourceFactory | 1 + .../include/QtPositioning/QGeoRectangle | 1 + .../include/QtPositioning/QGeoSatelliteInfo | 1 + .../QtPositioning/QGeoSatelliteInfoSource | 1 + .../include/QtPositioning/QGeoShape | 1 + .../QtPositioning/QNmeaPositionInfoSource | 1 + .../include/QtPositioning/QtPositioning | 20 + .../QtPositioning/QtPositioningVersion | 1 + .../include/QtPositioning/qgeoaddress.h | 1 + .../QtPositioning/qgeoareamonitorinfo.h | 1 + .../QtPositioning/qgeoareamonitorsource.h | 1 + .../include/QtPositioning/qgeocircle.h | 1 + .../include/QtPositioning/qgeocoordinate.h | 1 + .../include/QtPositioning/qgeolocation.h | 1 + .../include/QtPositioning/qgeopositioninfo.h | 1 + .../QtPositioning/qgeopositioninfosource.h | 1 + .../qgeopositioninfosourcefactory.h | 1 + .../include/QtPositioning/qgeorectangle.h | 1 + .../include/QtPositioning/qgeosatelliteinfo.h | 1 + .../QtPositioning/qgeosatelliteinfosource.h | 1 + .../include/QtPositioning/qgeoshape.h | 1 + .../QtPositioning/qnmeapositioninfosource.h | 1 + .../QtPositioning/qpositioningglobal.h | 1 + .../QtPositioning/qtpositioningversion.h | 9 + .../qtlocation/src/location/maps/maps.pri | 89 + .../qtlocation/src/location/maps/qcache3q_p.h | 471 + .../location/maps/qgeocameracapabilities_p.h | 97 + .../src/location/maps/qgeocameradata_p.h | 98 + .../src/location/maps/qgeocameratiles_p.h | 89 + .../src/location/maps/qgeocodereply.h | 105 + .../src/location/maps/qgeocodereply_p.h | 83 + .../src/location/maps/qgeocodingmanager.h | 92 + .../src/location/maps/qgeocodingmanager_p.h | 76 + .../location/maps/qgeocodingmanagerengine.h | 89 + .../location/maps/qgeocodingmanagerengine_p.h | 75 + .../src/location/maps/qgeomaneuver.h | 104 + .../src/location/maps/qgeomaneuver_p.h | 80 + .../qtlocation/src/location/maps/qgeomap_p.h | 115 + .../src/location/maps/qgeomap_p_p.h | 89 + .../src/location/maps/qgeomapcontroller_p.h | 112 + .../src/location/maps/qgeomappingmanager_p.h | 106 + .../location/maps/qgeomappingmanager_p_p.h | 73 + .../maps/qgeomappingmanagerengine_p.h | 125 + .../maps/qgeomappingmanagerengine_p_p.h | 87 + .../src/location/maps/qgeomapscene_p.h | 98 + .../src/location/maps/qgeomaptype_p.h | 101 + .../src/location/maps/qgeomaptype_p_p.h | 83 + .../qtlocation/src/location/maps/qgeoroute.h | 96 + .../src/location/maps/qgeoroute_p.h | 89 + .../src/location/maps/qgeoroutereply.h | 95 + .../src/location/maps/qgeoroutereply_p.h | 80 + .../src/location/maps/qgeorouterequest.h | 161 + .../src/location/maps/qgeorouterequest_p.h | 82 + .../src/location/maps/qgeoroutesegment.h | 89 + .../src/location/maps/qgeoroutesegment_p.h | 82 + .../src/location/maps/qgeoroutingmanager.h | 91 + .../src/location/maps/qgeoroutingmanager_p.h | 69 + .../location/maps/qgeoroutingmanagerengine.h | 100 + .../maps/qgeoroutingmanagerengine_p.h | 83 + .../src/location/maps/qgeoserviceprovider.h | 163 + .../src/location/maps/qgeoserviceprovider_p.h | 121 + .../maps/qgeoserviceproviderfactory.h | 72 + .../src/location/maps/qgeotilecache_p.h | 168 + .../src/location/maps/qgeotiledmap_p.h | 105 + .../src/location/maps/qgeotiledmap_p_p.h | 102 + .../maps/qgeotiledmappingmanagerengine_p.h | 119 + .../maps/qgeotiledmappingmanagerengine_p_p.h | 84 + .../src/location/maps/qgeotiledmapreply_p.h | 109 + .../src/location/maps/qgeotiledmapreply_p_p.h | 75 + .../src/location/maps/qgeotilefetcher_p.h | 103 + .../src/location/maps/qgeotilefetcher_p_p.h | 86 + .../location/maps/qgeotilerequestmanager_p.h | 81 + .../src/location/maps/qgeotilespec_p.h | 103 + .../src/location/maps/qgeotilespec_p_p.h | 78 + .../qtlocation/src/location/qlocation.h | 65 + .../qtlocation/src/location/qlocationglobal.h | 56 + .../positioning/qdeclarativegeoaddress_p.h | 103 + .../positioning/qdeclarativegeolocation_p.h | 82 + .../src/positioning/qdoublevector2d_p.h | 242 + .../src/positioning/qdoublevector3d_p.h | 296 + .../qtlocation/src/positioning/qgeoaddress.h | 100 + .../src/positioning/qgeoaddress_p.h | 74 + .../src/positioning/qgeoareamonitorinfo.h | 97 + .../src/positioning/qgeoareamonitorsource.h | 102 + .../qtlocation/src/positioning/qgeocircle.h | 89 + .../qtlocation/src/positioning/qgeocircle_p.h | 79 + .../src/positioning/qgeocoordinate.h | 127 + .../src/positioning/qgeocoordinate_p.h | 71 + .../qtlocation/src/positioning/qgeolocation.h | 82 + .../src/positioning/qgeolocation_p.h | 63 + .../src/positioning/qgeopositioninfo.h | 107 + .../src/positioning/qgeopositioninfosource.h | 108 + .../positioning/qgeopositioninfosource_p.h | 65 + .../qgeopositioninfosourcefactory.h | 60 + .../src/positioning/qgeoprojection_p.h | 77 + .../src/positioning/qgeorectangle.h | 124 + .../src/positioning/qgeorectangle_p.h | 79 + .../src/positioning/qgeosatelliteinfo.h | 106 + .../src/positioning/qgeosatelliteinfosource.h | 92 + .../qtlocation/src/positioning/qgeoshape.h | 106 + .../qtlocation/src/positioning/qgeoshape_p.h | 86 + .../src/positioning/qlocationutils_p.h | 112 + .../src/positioning/qnmeapositioninfosource.h | 91 + .../positioning/qnmeapositioninfosource_p.h | 171 + .../src/positioning/qpositioningglobal.h | 54 + src/Settings/App.SettingsGroup.json | 19 +- src/Settings/AppSettings.cc | 42 +- src/Settings/AppSettings.h | 33 +- src/Settings/CMakeLists.txt | 2 - src/Settings/FlyView.SettingsGroup.json | 19 - src/Settings/FlyViewSettings.cc | 4 - src/Settings/FlyViewSettings.h | 3 - src/Settings/RemoteID.SettingsGroup.json | 169 - src/Settings/RemoteIDSettings.cc | 40 - src/Settings/RemoteIDSettings.h | 42 - src/Settings/SettingsManager.cc | 8 +- src/Settings/SettingsManager.h | 16 +- src/Settings/UnitsSettings.cc | 2 +- src/Settings/Video.SettingsGroup.json | 2 +- src/Settings/VideoSettings.cc | 29 +- src/Settings/VideoSettings.h | 2 - src/Terrain/TerrainQuery.cc | 27 +- src/TerrainTile.cc | 252 +- src/TerrainTile.h | 27 +- src/Vehicle/Actuators/ActuatorActions.cc | 12 +- src/Vehicle/Actuators/ActuatorActions.h | 3 +- src/Vehicle/Actuators/ActuatorTesting.cc | 12 +- src/Vehicle/Actuators/ActuatorTesting.h | 3 +- src/Vehicle/Actuators/Actuators.cc | 130 +- src/Vehicle/Actuators/Actuators.h | 7 - src/Vehicle/Actuators/GeometryImage.cc | 11 - src/Vehicle/Actuators/GeometryImage.h | 2 - src/Vehicle/Actuators/Mixer.cc | 331 +- src/Vehicle/Actuators/Mixer.h | 108 +- src/Vehicle/Actuators/MotorAssignment.cc | 16 +- src/Vehicle/Actuators/MotorAssignment.h | 6 +- src/Vehicle/Autotune.cpp | 46 +- src/Vehicle/Autotune.h | 3 +- src/Vehicle/CMakeLists.txt | 15 +- src/Vehicle/ClockFact.json | 5 - src/Vehicle/CompInfo.h | 8 +- src/Vehicle/CompInfoActuators.cc | 4 +- src/Vehicle/CompInfoActuators.h | 2 +- src/Vehicle/CompInfoEvents.cc | 4 +- src/Vehicle/CompInfoEvents.h | 2 +- src/Vehicle/CompInfoGeneral.cc | 10 +- src/Vehicle/CompInfoGeneral.h | 2 +- src/Vehicle/CompInfoParam.cc | 4 +- src/Vehicle/CompInfoParam.h | 2 +- src/Vehicle/ComponentInformationManager.cc | 117 +- src/Vehicle/ComponentInformationManager.h | 10 - .../ComponentInformationTranslation.cc | 341 - src/Vehicle/ComponentInformationTranslation.h | 55 - src/Vehicle/EFIFact.json | 122 - src/Vehicle/EventHandler.cc | 31 +- src/Vehicle/EventHandler.h | 22 +- src/Vehicle/FTPManager.cc | 48 +- src/Vehicle/FTPManager.h | 18 +- src/Vehicle/FTPManagerTest.cc | 6 +- src/Vehicle/GeneratorFact.json | 77 - src/Vehicle/HealthAndArmingCheckReport.cc | 95 - src/Vehicle/HealthAndArmingCheckReport.h | 92 - src/Vehicle/HealthAndArmingChecks.cc | 125 + src/Vehicle/HealthAndArmingChecks.h | 84 + src/Vehicle/InitialConnectStateMachine.cc | 40 +- src/Vehicle/InitialConnectStateMachine.h | 2 - src/Vehicle/MAVLinkLogManager.cc | 2 +- src/Vehicle/RemoteIDManager.cc | 430 - src/Vehicle/RemoteIDManager.h | 128 - src/Vehicle/RequestMessageTest.cc | 18 +- src/Vehicle/SendMavCommandWithHandlerTest.cc | 117 +- src/Vehicle/SendMavCommandWithHandlerTest.h | 10 +- .../SendMavCommandWithSignallingTest.cc | 11 +- src/Vehicle/StandardModes.cc | 183 - src/Vehicle/StandardModes.h | 69 - src/Vehicle/Vehicle.cc | 829 +- src/Vehicle/Vehicle.h | 212 +- src/Vehicle/VehicleClockFactGroup.cc | 5 - src/Vehicle/VehicleClockFactGroup.h | 4 - src/Vehicle/VehicleEFIFactGroup.cc | 114 - src/Vehicle/VehicleEFIFactGroup.h | 94 - src/Vehicle/VehicleFact.json | 20 - src/Vehicle/VehicleGeneratorFactGroup.cc | 110 - src/Vehicle/VehicleGeneratorFactGroup.h | 75 - src/Vehicle/VehicleHygrometerFactGroup.cc | 4 +- src/VehicleSetup/FirmwareUpgrade.qml | 364 +- src/VehicleSetup/FirmwareUpgradeController.cc | 39 +- src/VehicleSetup/FirmwareUpgradeController.h | 3 + src/VehicleSetup/JoystickConfig.qml | 17 +- src/VehicleSetup/JoystickConfigController.cc | 1 - src/VehicleSetup/JoystickConfigGeneral.qml | 21 +- src/VehicleSetup/SetupView.qml | 8 +- src/VideoManager/VideoManager.cc | 96 +- src/VideoManager/VideoManager.h | 11 +- src/VideoReceiver/GStreamer.cc | 6 +- src/VideoReceiver/GstVideoReceiver.cc | 13 +- src/VideoReceiver/GstVideoReceiver.h | 4 +- src/VideoReceiver/README.md | 6 +- src/VideoReceiver/VideoReceiver.pri | 9 +- src/VideoReceiver/gstqgcvideosinkbin.c | 16 +- src/api/QGCCorePlugin.cc | 26 +- src/api/QGCOptions.h | 3 - src/comm/LinkManager.cc | 65 +- src/comm/LinkManager.h | 44 +- src/comm/MAVLinkProtocol.cc | 12 - src/comm/MockLink.cc | 104 +- src/comm/MockLink.h | 22 +- src/comm/MockLinkFTP.cc | 5 +- src/comm/MockLinkFTP.h | 2 - src/comm/MockLinkOptionsDlg.qml | 8 +- src/comm/Mocklink.Arduplane.params.ftp.bin | Bin 15213 -> 0 bytes src/comm/QGCMAVLink.cc | 11 +- src/comm/QGCMAVLink.h | 2 +- src/comm/QGCSerialPortInfo.cc | 8 +- src/comm/SerialLink.cc | 6 +- src/comm/TCPLink.cc | 59 +- src/comm/TCPLink.h | 6 +- src/comm/USBBoardInfo.json | 10 +- src/qgcunittest/CMakeLists.txt | 2 - .../ComponentInformationTranslationTest.cc | 46 - .../ComponentInformationTranslationTest.h | 34 - src/qgcunittest/RadioConfigTest.cc | 10 + src/qgcunittest/TranslationTest.json | 151 - src/qgcunittest/TranslationTest_de_DE.ts | 186 - src/qgcunittest/UnitTestList.cc | 2 - src/uas/UASMessageHandler.cc | 12 +- src/uas/UASMessageHandler.h | 12 +- src/ui/AppSettings.qml | 20 +- src/ui/MainRootWindow.qml | 420 +- src/ui/preferences/GeneralSettings.qml | 94 +- src/ui/preferences/LinkSettings.qml | 13 +- src/ui/preferences/MavlinkSettings.qml | 17 +- src/ui/preferences/RemoteIDSettings.qml | 922 - .../toolbar/APMSupportForwardingIndicator.qml | 75 - src/ui/toolbar/CMakeLists.txt | 1 - src/ui/toolbar/FlightModeMenuIndicator.qml | 102 - src/ui/toolbar/GPSRTKIndicator.qml | 2 +- .../toolbar/Images/RidEmergencyBackground.svg | 1 - .../RidEmergencyBackgroundHighlight.svg | 1 - .../toolbar/Images/RidFlagBackgroundGreen.svg | 1 - .../toolbar/Images/RidFlagBackgroundRed.svg | 1 - src/ui/toolbar/Images/RidIconGreen.svg | 1 - src/ui/toolbar/Images/RidIconGrey.svg | 1 - src/ui/toolbar/Images/RidIconRed.svg | 1 - src/ui/toolbar/Images/RidIconYellow.svg | 1 - src/ui/toolbar/MainStatusIndicator.qml | 179 +- src/ui/toolbar/MainToolBar.qml | 6 - src/ui/toolbar/MainToolBarIndicators.qml | 17 +- src/ui/toolbar/MessageIndicator.qml | 45 +- src/ui/toolbar/RCRSSIIndicator.qml | 2 +- src/ui/toolbar/RemoteIDIndicator.qml | 358 - translations/qgc_json_zh_CN.ts | 6 +- translations/qgc_source_tr_TR.ts | 40 +- translations/qgc_source_zh_CN.ts | 6 +- 972 files changed, 314003 insertions(+), 27003 deletions(-) create mode 100644 Spiri/README.md create mode 100644 Spiri/config/.gitkeep create mode 100644 Spiri/data/.gitkeep create mode 100644 Spiri/model/spiri.mesh create mode 100644 Spiri/qml/.gitkeep create mode 100644 Spiri/resources/icon/spiri.ico create mode 100644 Spiri/resources/icon/spiri1.ico create mode 100644 Spiri/resources/images/Spiri-release.svg create mode 100644 Spiri/resources/images/Spiri_black_120.ico create mode 100644 Spiri/resources/images/Spiri_black_160.jpg create mode 100644 Spiri/resources/images/Spiri_black_240.jpg create mode 100644 Spiri/resources/images/Spiri_black_320.jpg create mode 100644 Spiri/resources/images/Spiri_black_480.jpg create mode 100644 Spiri/resources/images/Spiri_black_640.jpg create mode 100644 Spiri/resources/images/Spiri_black_bl.ico create mode 100644 Spiri/resources/images/Spiri_black_bl.jpg create mode 100644 Spiri/resources/images/spiri.png create mode 100644 Spiri/src/.gitkeep delete mode 100644 android/src/AndroidInterface.cc create mode 100644 backup-Jenkinsfile create mode 100755 build_ios.sh rename {custom-example => custom}/InstrumentValueIcons.qrc (100%) rename {custom-example => custom}/README.jpg (100%) rename {custom-example => custom}/README.md (100%) rename {custom-example/android => custom/android-abandon}/res/drawable-hdpi/icon.png (100%) rename {custom-example/android => custom/android-abandon}/res/drawable-ldpi/icon.png (100%) rename {custom-example/android => custom/android-abandon}/res/drawable-mdpi/icon.png (100%) rename {custom-example/android => custom/android-abandon}/res/drawable-xhdpi/icon.png (100%) rename {custom-example/android => custom/android-abandon}/res/drawable-xxhdpi/icon.png (100%) rename {custom-example/android => custom/android-abandon}/res/drawable-xxxhdpi/icon.png (100%) rename {custom-example => custom}/custom.pri (78%) rename {custom-example => custom}/custom.qrc (100%) rename {custom-example => custom}/custom_deploy.pri (100%) rename {custom-example => custom}/deploy/qgroundcontrol-start.sh (100%) mode change 100755 => 100644 rename {custom-example => custom}/deploy/qgroundcontrol.desktop (100%) rename {custom-example => custom}/qgcresources.exclusion (100%) rename {custom-example => custom}/qgcresources.qrc (96%) rename {custom-example => custom}/qgroundcontrol.exclusion (100%) rename {custom-example => custom}/qgroundcontrol.qrc (95%) rename {custom-example => custom}/res/Custom/Camera/ZoomControl.qml (100%) rename {custom-example => custom}/res/Custom/Camera/qmldir (100%) rename {custom-example => custom}/res/Custom/Widgets/CustomArtificialHorizon.qml (100%) rename {custom-example => custom}/res/Custom/Widgets/CustomAttitudeWidget.qml (100%) rename {custom-example => custom}/res/Custom/Widgets/CustomIconButton.qml (100%) rename {custom-example => custom}/res/Custom/Widgets/CustomOnOffSwitch.qml (100%) rename {custom-example => custom}/res/Custom/Widgets/CustomQuickButton.qml (100%) rename {custom-example => custom}/res/Custom/Widgets/CustomSignalStrength.qml (100%) rename {custom-example => custom}/res/Custom/Widgets/CustomToolBarButton.qml (100%) rename {custom-example => custom}/res/Custom/Widgets/CustomVehicleButton.qml (100%) rename {custom-example => custom}/res/Custom/Widgets/qmldir (100%) rename {custom-example => custom}/res/CustomFlyViewOverlay.qml (84%) rename {custom-example => custom}/res/Images/CustomAppIcon.png (100%) rename {custom-example => custom}/res/Images/CustomVehicleIcon.svg (99%) rename {custom-example => custom}/res/Images/altitude.svg (100%) rename {custom-example => custom}/res/Images/attitude_crosshair.svg (100%) rename {custom-example => custom}/res/Images/attitude_dial.svg (100%) rename {custom-example => custom}/res/Images/attitude_pointer.svg (100%) rename {custom-example => custom}/res/Images/chronometer.svg (100%) rename {custom-example => custom}/res/Images/compass_needle.svg (100%) rename {custom-example => custom}/res/Images/compass_pointer.svg (100%) rename {custom-example => custom}/res/Images/distance.svg (100%) rename {custom-example => custom}/res/Images/horizontal_speed.svg (100%) rename {custom-example => custom}/res/Images/microSD.svg (100%) rename {custom-example => custom}/res/Images/odometer.svg (100%) rename {custom-example => custom}/res/Images/vertical_speed.svg (100%) rename {custom-example => custom}/res/Images/void.png (100%) rename {custom-example => custom}/src/AutoPilotPlugin/CustomAutoPilotPlugin.cc (100%) rename {custom-example => custom}/src/AutoPilotPlugin/CustomAutoPilotPlugin.h (100%) rename {custom-example => custom}/src/CustomPlugin.cc (100%) rename {custom-example => custom}/src/CustomPlugin.h (100%) rename {custom-example => custom}/src/FirmwarePlugin/CustomFirmwarePlugin.cc (100%) rename {custom-example => custom}/src/FirmwarePlugin/CustomFirmwarePlugin.h (100%) rename {custom-example => custom}/src/FirmwarePlugin/CustomFirmwarePluginFactory.cc (100%) rename {custom-example => custom}/src/FirmwarePlugin/CustomFirmwarePluginFactory.h (100%) rename {custom-example => custom}/updateinstrumentqrc.py (100%) mode change 100755 => 100644 rename {custom-example => custom}/updateqrc.py (100%) mode change 100755 => 100644 create mode 100644 libs/shapelib/AUTHORS create mode 100644 libs/shapelib/CMakeLists.txt create mode 100644 libs/shapelib/COPYING create mode 100644 libs/shapelib/ChangeLog create mode 100644 libs/shapelib/INSTALL create mode 100644 libs/shapelib/Makefile.am create mode 100644 libs/shapelib/Makefile.in create mode 100644 libs/shapelib/NEWS create mode 100644 libs/shapelib/README create mode 100644 libs/shapelib/README.CMake create mode 100644 libs/shapelib/README.tree create mode 100644 libs/shapelib/aclocal.m4 create mode 100755 libs/shapelib/ar-lib create mode 100755 libs/shapelib/autogen.sh create mode 100755 libs/shapelib/compile create mode 100755 libs/shapelib/config.guess create mode 100755 libs/shapelib/config.sub create mode 100755 libs/shapelib/configure create mode 100644 libs/shapelib/configure.ac create mode 100644 libs/shapelib/contrib/Makefile.am create mode 100644 libs/shapelib/contrib/Makefile.in create mode 100644 libs/shapelib/contrib/ShapeFileII.pas create mode 100644 libs/shapelib/contrib/Shape_PointInPoly.cpp create mode 100644 libs/shapelib/contrib/dbfcat.c create mode 100644 libs/shapelib/contrib/dbfinfo.c create mode 100644 libs/shapelib/contrib/doc/Shape_PointInPoly_README.txt create mode 100644 libs/shapelib/contrib/doc/shpproj.txt create mode 100644 libs/shapelib/contrib/doc/shpsort.txt create mode 100644 libs/shapelib/contrib/makefile.vc create mode 100644 libs/shapelib/contrib/shpcat.c create mode 100644 libs/shapelib/contrib/shpcentrd.c create mode 100644 libs/shapelib/contrib/shpdata.c create mode 100644 libs/shapelib/contrib/shpdxf.c create mode 100644 libs/shapelib/contrib/shpfix.c create mode 100644 libs/shapelib/contrib/shpgeo.c create mode 100644 libs/shapelib/contrib/shpgeo.h create mode 100644 libs/shapelib/contrib/shpinfo.c create mode 100644 libs/shapelib/contrib/shpproj.c create mode 100644 libs/shapelib/contrib/shpsort.c create mode 100644 libs/shapelib/contrib/shpwkb.c create mode 100755 libs/shapelib/contrib/tests/shpproj.sh create mode 100644 libs/shapelib/dbfadd.c create mode 100644 libs/shapelib/dbfcreate.c create mode 100644 libs/shapelib/dbfdump.c create mode 100644 libs/shapelib/dbfopen.c create mode 100755 libs/shapelib/depcomp create mode 100755 libs/shapelib/install-sh create mode 100644 libs/shapelib/ltmain.sh create mode 100644 libs/shapelib/m4/libtool.m4 create mode 100644 libs/shapelib/m4/ltoptions.m4 create mode 100644 libs/shapelib/m4/ltsugar.m4 create mode 100644 libs/shapelib/m4/ltversion.m4 create mode 100644 libs/shapelib/m4/lt~obsolete.m4 create mode 100644 libs/shapelib/makefile.vc create mode 100755 libs/shapelib/missing create mode 100644 libs/shapelib/safileio.c create mode 100644 libs/shapelib/sbnsearch.c create mode 100644 libs/shapelib/shapefil.h create mode 100644 libs/shapelib/shapelib.pc.in create mode 100644 libs/shapelib/shpadd.c create mode 100644 libs/shapelib/shpcreate.c create mode 100644 libs/shapelib/shpdump.c create mode 100644 libs/shapelib/shpopen.c create mode 100644 libs/shapelib/shprewind.c create mode 100644 libs/shapelib/shptest.c create mode 100644 libs/shapelib/shptree.c create mode 100644 libs/shapelib/shptreedump.c create mode 100644 libs/shapelib/shputils.c create mode 100755 libs/shapelib/test-driver create mode 100644 libs/shapelib/tests/stream1.out create mode 100755 libs/shapelib/tests/test1.sh create mode 100755 libs/shapelib/tests/test2.sh create mode 100755 libs/shapelib/tests/test3.sh create mode 100644 libs/shapelib/web/codepage.html create mode 100644 libs/shapelib/web/dbf_api.html create mode 100644 libs/shapelib/web/index.html create mode 100644 libs/shapelib/web/license.html create mode 100644 libs/shapelib/web/manifest.html create mode 100644 libs/shapelib/web/maptools.css create mode 100644 libs/shapelib/web/release.html create mode 100644 libs/shapelib/web/shapelib-tools.html create mode 100644 libs/shapelib/web/shp_api.html delete mode 100644 resources/Gripper.svg delete mode 100644 resources/GripperGrab.svg delete mode 100644 resources/GripperRelease.svg delete mode 100644 resources/NoVideoBackground.jpg create mode 100644 snap/snapcraft.yaml create mode 100644 src/Airmap/AirMap.SettingsGroup.json create mode 100644 src/Airmap/AirMapAdvisoryManager.cc create mode 100644 src/Airmap/AirMapAdvisoryManager.h create mode 100644 src/Airmap/AirMapFlightManager.cc create mode 100644 src/Airmap/AirMapFlightManager.h create mode 100644 src/Airmap/AirMapFlightPlanManager.cc create mode 100644 src/Airmap/AirMapFlightPlanManager.h create mode 100644 src/Airmap/AirMapManager.cc create mode 100644 src/Airmap/AirMapManager.h create mode 100644 src/Airmap/AirMapRestrictionManager.cc create mode 100644 src/Airmap/AirMapRestrictionManager.h create mode 100644 src/Airmap/AirMapRulesetsManager.cc create mode 100644 src/Airmap/AirMapRulesetsManager.h create mode 100644 src/Airmap/AirMapSettings.cc create mode 100644 src/Airmap/AirMapSettings.h create mode 100644 src/Airmap/AirMapSharedState.cc create mode 100644 src/Airmap/AirMapSharedState.h create mode 100644 src/Airmap/AirMapTelemetry.cc create mode 100644 src/Airmap/AirMapTelemetry.h create mode 100644 src/Airmap/AirMapTrafficMonitor.cc create mode 100644 src/Airmap/AirMapTrafficMonitor.h create mode 100644 src/Airmap/AirMapVehicleManager.cc create mode 100644 src/Airmap/AirMapVehicleManager.h create mode 100644 src/Airmap/AirMapWeatherInfoManager.cc create mode 100644 src/Airmap/AirMapWeatherInfoManager.h create mode 100644 src/Airmap/AirmapSettings.qml create mode 100644 src/Airmap/AirspaceControl.qml create mode 100644 src/Airmap/AirspaceRegulation.qml create mode 100644 src/Airmap/AirspaceWeather.qml create mode 100644 src/Airmap/CMakeLists.txt create mode 100644 src/Airmap/ComplianceRules.qml create mode 100644 src/Airmap/FlightBrief.qml create mode 100644 src/Airmap/FlightDetails.qml create mode 100644 src/Airmap/FlightFeature.qml create mode 100644 src/Airmap/LifetimeChecker.h create mode 100644 src/Airmap/QJsonWebToken/README.md create mode 100644 src/Airmap/QJsonWebToken/src/qjsonwebtoken.cpp create mode 100644 src/Airmap/QJsonWebToken/src/qjsonwebtoken.h create mode 100644 src/Airmap/QJsonWebToken/src/qjsonwebtoken.pri create mode 100644 src/Airmap/README.md create mode 100644 src/Airmap/RuleSelector.qml create mode 100644 src/Airmap/airmap.qrc create mode 100644 src/Airmap/dummy/AirspaceControl.qml create mode 100644 src/Airmap/dummy/AirspaceManager.cc create mode 100644 src/Airmap/dummy/AirspaceManager.h create mode 100644 src/Airmap/dummy/AirspaceRegulation.qml create mode 100644 src/Airmap/dummy/AirspaceWeather.qml create mode 100644 src/Airmap/dummy/ComplianceRules.qml create mode 100644 src/Airmap/dummy/FlightBrief.qml create mode 100644 src/Airmap/dummy/FlightDetails.qml create mode 100644 src/Airmap/dummy/FlightFeature.qml create mode 100644 src/Airmap/dummy/QGroundControl.Airmap.qmldir create mode 100644 src/Airmap/dummy/RuleSelector.qml create mode 100644 src/Airmap/dummy/airmap_dummy.qrc create mode 100644 src/Airmap/images/advisory-icon.svg create mode 100644 src/Airmap/images/colapse.svg create mode 100644 src/Airmap/images/expand.svg create mode 100644 src/Airmap/images/pencil.svg create mode 100644 src/Airmap/images/right-arrow.svg create mode 100644 src/Airmap/images/unavailable.svg create mode 100755 src/Airmap/images/weather-icons/clear.svg create mode 100755 src/Airmap/images/weather-icons/cloudy.svg create mode 100755 src/Airmap/images/weather-icons/cloudy_wind.svg create mode 100755 src/Airmap/images/weather-icons/drizzle.svg create mode 100755 src/Airmap/images/weather-icons/drizzle_day.svg create mode 100755 src/Airmap/images/weather-icons/drizzle_night.svg create mode 100755 src/Airmap/images/weather-icons/foggy.svg create mode 100755 src/Airmap/images/weather-icons/frigid.svg create mode 100755 src/Airmap/images/weather-icons/hail.svg create mode 100755 src/Airmap/images/weather-icons/heavy_rain.svg create mode 100755 src/Airmap/images/weather-icons/hurricane.svg create mode 100755 src/Airmap/images/weather-icons/isolated_thunderstorms.svg create mode 100755 src/Airmap/images/weather-icons/mostly_clear.svg create mode 100755 src/Airmap/images/weather-icons/mostly_cloudy_day.svg create mode 100755 src/Airmap/images/weather-icons/mostly_cloudy_night.svg create mode 100755 src/Airmap/images/weather-icons/mostly_sunny.svg create mode 100755 src/Airmap/images/weather-icons/partly_cloudy_day.svg create mode 100755 src/Airmap/images/weather-icons/partly_cloudy_night.svg create mode 100755 src/Airmap/images/weather-icons/rain.svg create mode 100755 src/Airmap/images/weather-icons/rain_snow.svg create mode 100755 src/Airmap/images/weather-icons/scattered_snow_showers_day.svg create mode 100755 src/Airmap/images/weather-icons/scattered_snow_showers_night.svg create mode 100755 src/Airmap/images/weather-icons/scattered_thunderstorms_day.svg create mode 100755 src/Airmap/images/weather-icons/scattered_thunderstorms_night.svg create mode 100755 src/Airmap/images/weather-icons/snow.svg create mode 100755 src/Airmap/images/weather-icons/snow_storm.svg create mode 100755 src/Airmap/images/weather-icons/sunny.svg create mode 100755 src/Airmap/images/weather-icons/thunderstorm.svg create mode 100755 src/Airmap/images/weather-icons/tornado.svg create mode 100644 src/Airmap/images/weather-icons/unknown.svg create mode 100755 src/Airmap/images/weather-icons/windy.svg create mode 100644 src/Airmap/services/advisory.cpp create mode 100644 src/Airmap/services/advisory.h create mode 100644 src/Airmap/services/aircrafts.cpp create mode 100644 src/Airmap/services/aircrafts.h create mode 100644 src/Airmap/services/airspaces.cpp create mode 100644 src/Airmap/services/airspaces.h create mode 100644 src/Airmap/services/authenticator.cpp create mode 100644 src/Airmap/services/authenticator.h create mode 100644 src/Airmap/services/client.cpp create mode 100644 src/Airmap/services/client.h create mode 100644 src/Airmap/services/dispatcher.cpp create mode 100644 src/Airmap/services/dispatcher.h create mode 100644 src/Airmap/services/flight_plans.cpp create mode 100644 src/Airmap/services/flight_plans.h create mode 100644 src/Airmap/services/flights.cpp create mode 100644 src/Airmap/services/flights.h create mode 100644 src/Airmap/services/logger.cpp create mode 100644 src/Airmap/services/logger.h create mode 100644 src/Airmap/services/pilots.cpp create mode 100644 src/Airmap/services/pilots.h create mode 100644 src/Airmap/services/rulesets.cpp create mode 100644 src/Airmap/services/rulesets.h create mode 100644 src/Airmap/services/status.cpp create mode 100644 src/Airmap/services/status.h create mode 100644 src/Airmap/services/telemetry.cpp create mode 100644 src/Airmap/services/telemetry.h create mode 100644 src/Airmap/services/traffic.cpp create mode 100644 src/Airmap/services/traffic.h create mode 100644 src/Airmap/services/types.cpp create mode 100644 src/Airmap/services/types.h create mode 100644 src/AirspaceManagement/AirspaceAdvisoryProvider.cc create mode 100644 src/AirspaceManagement/AirspaceAdvisoryProvider.h create mode 100644 src/AirspaceManagement/AirspaceFlightPlanProvider.cc create mode 100644 src/AirspaceManagement/AirspaceFlightPlanProvider.h create mode 100644 src/AirspaceManagement/AirspaceManager.cc create mode 100644 src/AirspaceManagement/AirspaceManager.h create mode 100644 src/AirspaceManagement/AirspaceRestriction.cc create mode 100644 src/AirspaceManagement/AirspaceRestriction.h rename android/src/AndroidInterface.h => src/AirspaceManagement/AirspaceRestrictionProvider.cc (53%) create mode 100644 src/AirspaceManagement/AirspaceRestrictionProvider.h create mode 100644 src/AirspaceManagement/AirspaceRulesetsProvider.cc create mode 100644 src/AirspaceManagement/AirspaceRulesetsProvider.h create mode 100644 src/AirspaceManagement/AirspaceVehicleManager.cc create mode 100644 src/AirspaceManagement/AirspaceVehicleManager.h create mode 100644 src/AirspaceManagement/AirspaceWeatherInfoProvider.cc create mode 100644 src/AirspaceManagement/AirspaceWeatherInfoProvider.h create mode 100644 src/AirspaceManagement/CMakeLists.txt create mode 100644 src/AutoPilotPlugins/APM/APMCompassCal.cc create mode 100644 src/AutoPilotPlugins/APM/APMCompassCal.h delete mode 100644 src/AutoPilotPlugins/APM/APMRemoteSupportComponent.cc delete mode 100644 src/AutoPilotPlugins/APM/APMRemoteSupportComponent.h delete mode 100644 src/AutoPilotPlugins/APM/APMRemoteSupportComponent.qml delete mode 100644 src/AutoPilotPlugins/APM/Images/ForwardingSupportIcon.svg delete mode 100644 src/AutoPilotPlugins/APM/Images/ForwardingSupportIconGreen.svg create mode 100644 src/AutoPilotPlugins/PX4/PX4AdvancedFlightModes.qml create mode 100644 src/AutoPilotPlugins/PX4/PX4AdvancedFlightModesController.cc create mode 100644 src/AutoPilotPlugins/PX4/PX4AdvancedFlightModesController.h delete mode 100644 src/AutoPilotPlugins/PX4/PX4TuningComponentPlaneAttitude.qml delete mode 100644 src/AutoPilotPlugins/PX4/PX4TuningComponentPlaneRate.qml create mode 100644 src/FirmwarePlugin/APM/APMParameterFactMetaData.Copter.3.5.xml create mode 100644 src/FirmwarePlugin/APM/APMParameterFactMetaData.Copter.3.6.xml create mode 100644 src/FirmwarePlugin/APM/APMParameterFactMetaData.Copter.3.7.xml create mode 100644 src/FirmwarePlugin/APM/APMParameterFactMetaData.Copter.4.0.xml rename src/FirmwarePlugin/APM/{APMParameterFactMetaData.Copter.4.2.xml => APMParameterFactMetaData.Copter.4.1.xml} (89%) create mode 100644 src/FirmwarePlugin/APM/APMParameterFactMetaData.Plane.3.10.xml create mode 100644 src/FirmwarePlugin/APM/APMParameterFactMetaData.Plane.3.8.xml create mode 100644 src/FirmwarePlugin/APM/APMParameterFactMetaData.Plane.3.9.xml create mode 100644 src/FirmwarePlugin/APM/APMParameterFactMetaData.Plane.4.0.xml rename src/FirmwarePlugin/APM/{APMParameterFactMetaData.Plane.4.2.xml => APMParameterFactMetaData.Plane.4.1.xml} (89%) create mode 100644 src/FirmwarePlugin/APM/APMParameterFactMetaData.Rover.3.4.xml create mode 100644 src/FirmwarePlugin/APM/APMParameterFactMetaData.Rover.3.5.xml create mode 100644 src/FirmwarePlugin/APM/APMParameterFactMetaData.Rover.3.6.xml create mode 100644 src/FirmwarePlugin/APM/APMParameterFactMetaData.Rover.4.0.xml rename src/FirmwarePlugin/APM/{APMParameterFactMetaData.Rover.4.2.xml => APMParameterFactMetaData.Rover.4.1.xml} (91%) create mode 100644 src/FirmwarePlugin/APM/APMParameterFactMetaData.Sub.3.4.xml create mode 100644 src/FirmwarePlugin/APM/APMParameterFactMetaData.Sub.3.5.xml create mode 100644 src/FirmwarePlugin/APM/APMParameterFactMetaData.Sub.3.6.xml create mode 100644 src/FirmwarePlugin/APM/APMParameterFactMetaData.Sub.4.0.xml create mode 100644 src/FirmwarePlugin/APM/APMParameterFactMetaData.Sub.4.1.xml create mode 100644 src/FirmwarePlugin/APM/BuildParamMetaData.sh create mode 100644 src/FlightDisplay/FlyViewAirspaceIndicator.qml delete mode 100644 src/FlightDisplay/FlyViewInsetViewer.qml delete mode 100644 src/FlightDisplay/GripperMenu.qml delete mode 100644 src/FlightDisplay/GuidedActionGripper.qml create mode 100644 src/FlightDisplay/GuidedAltitudeSlider.qml delete mode 100644 src/FlightDisplay/GuidedValueSlider.qml delete mode 100644 src/QGCCachedFileDownload.cc delete mode 100644 src/QGCCachedFileDownload.h delete mode 100644 src/QmlControls/CustomAction.h delete mode 100644 src/QmlControls/CustomActionManager.cc delete mode 100644 src/QmlControls/CustomActionManager.h delete mode 100644 src/QmlControls/CustomActions.json delete mode 100644 src/QmlControls/QGCColumnButton.qml create mode 100644 src/QmlControls/QGCPopupDialogContainer.qml delete mode 100644 src/QmlControls/QGCSimpleMessageDialog.qml create mode 100644 src/QmlControls/QGCViewDialog.qml create mode 100644 src/QmlControls/QGCViewDialogContainer.qml create mode 100644 src/QmlControls/QGCViewMessage.qml create mode 100644 src/QmlControls/QGroundControl/Airmap/qmldir create mode 100644 src/QtLocationPlugin/qtlocation/README.md create mode 100644 src/QtLocationPlugin/qtlocation/include/QtLocation/5.5.1/QtLocation/private/qcache3q_p.h create mode 100644 src/QtLocationPlugin/qtlocation/include/QtLocation/5.5.1/QtLocation/private/qgeocameracapabilities_p.h create mode 100644 src/QtLocationPlugin/qtlocation/include/QtLocation/5.5.1/QtLocation/private/qgeocameradata_p.h create mode 100644 src/QtLocationPlugin/qtlocation/include/QtLocation/5.5.1/QtLocation/private/qgeocameratiles_p.h create mode 100644 src/QtLocationPlugin/qtlocation/include/QtLocation/5.5.1/QtLocation/private/qgeocodereply_p.h create mode 100644 src/QtLocationPlugin/qtlocation/include/QtLocation/5.5.1/QtLocation/private/qgeocodingmanager_p.h create mode 100644 src/QtLocationPlugin/qtlocation/include/QtLocation/5.5.1/QtLocation/private/qgeocodingmanagerengine_p.h create mode 100644 src/QtLocationPlugin/qtlocation/include/QtLocation/5.5.1/QtLocation/private/qgeomaneuver_p.h create mode 100644 src/QtLocationPlugin/qtlocation/include/QtLocation/5.5.1/QtLocation/private/qgeomap_p.h create mode 100644 src/QtLocationPlugin/qtlocation/include/QtLocation/5.5.1/QtLocation/private/qgeomap_p_p.h create mode 100644 src/QtLocationPlugin/qtlocation/include/QtLocation/5.5.1/QtLocation/private/qgeomapcontroller_p.h create mode 100644 src/QtLocationPlugin/qtlocation/include/QtLocation/5.5.1/QtLocation/private/qgeomappingmanager_p.h create mode 100644 src/QtLocationPlugin/qtlocation/include/QtLocation/5.5.1/QtLocation/private/qgeomappingmanager_p_p.h create mode 100644 src/QtLocationPlugin/qtlocation/include/QtLocation/5.5.1/QtLocation/private/qgeomappingmanagerengine_p.h create mode 100644 src/QtLocationPlugin/qtlocation/include/QtLocation/5.5.1/QtLocation/private/qgeomappingmanagerengine_p_p.h create mode 100644 src/QtLocationPlugin/qtlocation/include/QtLocation/5.5.1/QtLocation/private/qgeomapscene_p.h create mode 100644 src/QtLocationPlugin/qtlocation/include/QtLocation/5.5.1/QtLocation/private/qgeomaptype_p.h create mode 100644 src/QtLocationPlugin/qtlocation/include/QtLocation/5.5.1/QtLocation/private/qgeomaptype_p_p.h create mode 100644 src/QtLocationPlugin/qtlocation/include/QtLocation/5.5.1/QtLocation/private/qgeoroute_p.h create mode 100644 src/QtLocationPlugin/qtlocation/include/QtLocation/5.5.1/QtLocation/private/qgeoroutereply_p.h create mode 100644 src/QtLocationPlugin/qtlocation/include/QtLocation/5.5.1/QtLocation/private/qgeorouterequest_p.h create mode 100644 src/QtLocationPlugin/qtlocation/include/QtLocation/5.5.1/QtLocation/private/qgeoroutesegment_p.h create mode 100644 src/QtLocationPlugin/qtlocation/include/QtLocation/5.5.1/QtLocation/private/qgeoroutingmanager_p.h create mode 100644 src/QtLocationPlugin/qtlocation/include/QtLocation/5.5.1/QtLocation/private/qgeoroutingmanagerengine_p.h create mode 100644 src/QtLocationPlugin/qtlocation/include/QtLocation/5.5.1/QtLocation/private/qgeoserviceprovider_p.h create mode 100644 src/QtLocationPlugin/qtlocation/include/QtLocation/5.5.1/QtLocation/private/qgeotilecache_p.h create mode 100644 src/QtLocationPlugin/qtlocation/include/QtLocation/5.5.1/QtLocation/private/qgeotiledmap_p.h create mode 100644 src/QtLocationPlugin/qtlocation/include/QtLocation/5.5.1/QtLocation/private/qgeotiledmap_p_p.h create mode 100644 src/QtLocationPlugin/qtlocation/include/QtLocation/5.5.1/QtLocation/private/qgeotiledmappingmanagerengine_p.h create mode 100644 src/QtLocationPlugin/qtlocation/include/QtLocation/5.5.1/QtLocation/private/qgeotiledmappingmanagerengine_p_p.h create mode 100644 src/QtLocationPlugin/qtlocation/include/QtLocation/5.5.1/QtLocation/private/qgeotiledmapreply_p.h create mode 100644 src/QtLocationPlugin/qtlocation/include/QtLocation/5.5.1/QtLocation/private/qgeotiledmapreply_p_p.h create mode 100644 src/QtLocationPlugin/qtlocation/include/QtLocation/5.5.1/QtLocation/private/qgeotilefetcher_p.h create mode 100644 src/QtLocationPlugin/qtlocation/include/QtLocation/5.5.1/QtLocation/private/qgeotilefetcher_p_p.h create mode 100644 src/QtLocationPlugin/qtlocation/include/QtLocation/5.5.1/QtLocation/private/qgeotilerequestmanager_p.h create mode 100644 src/QtLocationPlugin/qtlocation/include/QtLocation/5.5.1/QtLocation/private/qgeotilespec_p.h create mode 100644 src/QtLocationPlugin/qtlocation/include/QtLocation/5.5.1/QtLocation/private/qgeotilespec_p_p.h create mode 100644 src/QtLocationPlugin/qtlocation/include/QtLocation/5.5.1/QtLocation/private/qplace_p.h create mode 100644 src/QtLocationPlugin/qtlocation/include/QtLocation/5.5.1/QtLocation/private/qplaceattribute_p.h create mode 100644 src/QtLocationPlugin/qtlocation/include/QtLocation/5.5.1/QtLocation/private/qplacecategory_p.h create mode 100644 src/QtLocationPlugin/qtlocation/include/QtLocation/5.5.1/QtLocation/private/qplacecontactdetail_p.h create mode 100644 src/QtLocationPlugin/qtlocation/include/QtLocation/5.5.1/QtLocation/private/qplacecontent_p.h create mode 100644 src/QtLocationPlugin/qtlocation/include/QtLocation/5.5.1/QtLocation/private/qplacecontentrequest_p.h create mode 100644 src/QtLocationPlugin/qtlocation/include/QtLocation/5.5.1/QtLocation/private/qplaceeditorial_p.h create mode 100644 src/QtLocationPlugin/qtlocation/include/QtLocation/5.5.1/QtLocation/private/qplaceicon_p.h create mode 100644 src/QtLocationPlugin/qtlocation/include/QtLocation/5.5.1/QtLocation/private/qplaceimage_p.h create mode 100644 src/QtLocationPlugin/qtlocation/include/QtLocation/5.5.1/QtLocation/private/qplacemanagerengine_p.h create mode 100644 src/QtLocationPlugin/qtlocation/include/QtLocation/5.5.1/QtLocation/private/qplaceproposedsearchresult_p.h create mode 100644 src/QtLocationPlugin/qtlocation/include/QtLocation/5.5.1/QtLocation/private/qplaceratings_p.h create mode 100644 src/QtLocationPlugin/qtlocation/include/QtLocation/5.5.1/QtLocation/private/qplacereply_p.h create mode 100644 src/QtLocationPlugin/qtlocation/include/QtLocation/5.5.1/QtLocation/private/qplaceresult_p.h create mode 100644 src/QtLocationPlugin/qtlocation/include/QtLocation/5.5.1/QtLocation/private/qplacereview_p.h create mode 100644 src/QtLocationPlugin/qtlocation/include/QtLocation/5.5.1/QtLocation/private/qplacesearchresult_p.h create mode 100644 src/QtLocationPlugin/qtlocation/include/QtLocation/5.5.1/QtLocation/private/qplacesupplier_p.h create mode 100644 src/QtLocationPlugin/qtlocation/include/QtLocation/5.5.1/QtLocation/private/qplaceuser_p.h create mode 100644 src/QtLocationPlugin/qtlocation/include/QtLocation/5.5.1/QtLocation/private/unsupportedreplies_p.h create mode 100644 src/QtLocationPlugin/qtlocation/include/QtLocation/QGeoCodeReply create mode 100644 src/QtLocationPlugin/qtlocation/include/QtLocation/QGeoCodingManager create mode 100644 src/QtLocationPlugin/qtlocation/include/QtLocation/QGeoCodingManagerEngine create mode 100644 src/QtLocationPlugin/qtlocation/include/QtLocation/QGeoManeuver create mode 100644 src/QtLocationPlugin/qtlocation/include/QtLocation/QGeoRoute create mode 100644 src/QtLocationPlugin/qtlocation/include/QtLocation/QGeoRouteReply create mode 100644 src/QtLocationPlugin/qtlocation/include/QtLocation/QGeoRouteRequest create mode 100644 src/QtLocationPlugin/qtlocation/include/QtLocation/QGeoRouteSegment create mode 100644 src/QtLocationPlugin/qtlocation/include/QtLocation/QGeoRoutingManager create mode 100644 src/QtLocationPlugin/qtlocation/include/QtLocation/QGeoRoutingManagerEngine create mode 100644 src/QtLocationPlugin/qtlocation/include/QtLocation/QGeoServiceProvider create mode 100644 src/QtLocationPlugin/qtlocation/include/QtLocation/QGeoServiceProviderFactory create mode 100644 src/QtLocationPlugin/qtlocation/include/QtLocation/QLocation create mode 100644 src/QtLocationPlugin/qtlocation/include/QtLocation/QPlace create mode 100644 src/QtLocationPlugin/qtlocation/include/QtLocation/QPlaceAttribute create mode 100644 src/QtLocationPlugin/qtlocation/include/QtLocation/QPlaceCategory create mode 100644 src/QtLocationPlugin/qtlocation/include/QtLocation/QPlaceContactDetail create mode 100644 src/QtLocationPlugin/qtlocation/include/QtLocation/QPlaceContent create mode 100644 src/QtLocationPlugin/qtlocation/include/QtLocation/QPlaceContentReply create mode 100644 src/QtLocationPlugin/qtlocation/include/QtLocation/QPlaceContentRequest create mode 100644 src/QtLocationPlugin/qtlocation/include/QtLocation/QPlaceDetailsReply create mode 100644 src/QtLocationPlugin/qtlocation/include/QtLocation/QPlaceEditorial create mode 100644 src/QtLocationPlugin/qtlocation/include/QtLocation/QPlaceIcon create mode 100644 src/QtLocationPlugin/qtlocation/include/QtLocation/QPlaceIdReply create mode 100644 src/QtLocationPlugin/qtlocation/include/QtLocation/QPlaceImage create mode 100644 src/QtLocationPlugin/qtlocation/include/QtLocation/QPlaceManager create mode 100644 src/QtLocationPlugin/qtlocation/include/QtLocation/QPlaceManagerEngine create mode 100644 src/QtLocationPlugin/qtlocation/include/QtLocation/QPlaceMatchReply create mode 100644 src/QtLocationPlugin/qtlocation/include/QtLocation/QPlaceMatchRequest create mode 100644 src/QtLocationPlugin/qtlocation/include/QtLocation/QPlaceProposedSearchResult create mode 100644 src/QtLocationPlugin/qtlocation/include/QtLocation/QPlaceRatings create mode 100644 src/QtLocationPlugin/qtlocation/include/QtLocation/QPlaceReply create mode 100644 src/QtLocationPlugin/qtlocation/include/QtLocation/QPlaceResult create mode 100644 src/QtLocationPlugin/qtlocation/include/QtLocation/QPlaceReview create mode 100644 src/QtLocationPlugin/qtlocation/include/QtLocation/QPlaceSearchReply create mode 100644 src/QtLocationPlugin/qtlocation/include/QtLocation/QPlaceSearchRequest create mode 100644 src/QtLocationPlugin/qtlocation/include/QtLocation/QPlaceSearchResult create mode 100644 src/QtLocationPlugin/qtlocation/include/QtLocation/QPlaceSearchSuggestionReply create mode 100644 src/QtLocationPlugin/qtlocation/include/QtLocation/QPlaceSupplier create mode 100644 src/QtLocationPlugin/qtlocation/include/QtLocation/QPlaceUser create mode 100644 src/QtLocationPlugin/qtlocation/include/QtLocation/QtLocation create mode 100644 src/QtLocationPlugin/qtlocation/include/QtLocation/QtLocationVersion create mode 100644 src/QtLocationPlugin/qtlocation/include/QtLocation/placemacro.h create mode 100644 src/QtLocationPlugin/qtlocation/include/QtLocation/qgeocodereply.h create mode 100644 src/QtLocationPlugin/qtlocation/include/QtLocation/qgeocodingmanager.h create mode 100644 src/QtLocationPlugin/qtlocation/include/QtLocation/qgeocodingmanagerengine.h create mode 100644 src/QtLocationPlugin/qtlocation/include/QtLocation/qgeomaneuver.h create mode 100644 src/QtLocationPlugin/qtlocation/include/QtLocation/qgeoroute.h create mode 100644 src/QtLocationPlugin/qtlocation/include/QtLocation/qgeoroutereply.h create mode 100644 src/QtLocationPlugin/qtlocation/include/QtLocation/qgeorouterequest.h create mode 100644 src/QtLocationPlugin/qtlocation/include/QtLocation/qgeoroutesegment.h create mode 100644 src/QtLocationPlugin/qtlocation/include/QtLocation/qgeoroutingmanager.h create mode 100644 src/QtLocationPlugin/qtlocation/include/QtLocation/qgeoroutingmanagerengine.h create mode 100644 src/QtLocationPlugin/qtlocation/include/QtLocation/qgeoserviceprovider.h create mode 100644 src/QtLocationPlugin/qtlocation/include/QtLocation/qgeoserviceproviderfactory.h create mode 100644 src/QtLocationPlugin/qtlocation/include/QtLocation/qlocation.h create mode 100644 src/QtLocationPlugin/qtlocation/include/QtLocation/qlocationglobal.h create mode 100644 src/QtLocationPlugin/qtlocation/include/QtLocation/qplace.h create mode 100644 src/QtLocationPlugin/qtlocation/include/QtLocation/qplaceattribute.h create mode 100644 src/QtLocationPlugin/qtlocation/include/QtLocation/qplacecategory.h create mode 100644 src/QtLocationPlugin/qtlocation/include/QtLocation/qplacecontactdetail.h create mode 100644 src/QtLocationPlugin/qtlocation/include/QtLocation/qplacecontent.h create mode 100644 src/QtLocationPlugin/qtlocation/include/QtLocation/qplacecontentreply.h create mode 100644 src/QtLocationPlugin/qtlocation/include/QtLocation/qplacecontentrequest.h create mode 100644 src/QtLocationPlugin/qtlocation/include/QtLocation/qplacedetailsreply.h create mode 100644 src/QtLocationPlugin/qtlocation/include/QtLocation/qplaceeditorial.h create mode 100644 src/QtLocationPlugin/qtlocation/include/QtLocation/qplaceicon.h create mode 100644 src/QtLocationPlugin/qtlocation/include/QtLocation/qplaceidreply.h create mode 100644 src/QtLocationPlugin/qtlocation/include/QtLocation/qplaceimage.h create mode 100644 src/QtLocationPlugin/qtlocation/include/QtLocation/qplacemanager.h create mode 100644 src/QtLocationPlugin/qtlocation/include/QtLocation/qplacemanagerengine.h create mode 100644 src/QtLocationPlugin/qtlocation/include/QtLocation/qplacematchreply.h create mode 100644 src/QtLocationPlugin/qtlocation/include/QtLocation/qplacematchrequest.h create mode 100644 src/QtLocationPlugin/qtlocation/include/QtLocation/qplaceproposedsearchresult.h create mode 100644 src/QtLocationPlugin/qtlocation/include/QtLocation/qplaceratings.h create mode 100644 src/QtLocationPlugin/qtlocation/include/QtLocation/qplacereply.h create mode 100644 src/QtLocationPlugin/qtlocation/include/QtLocation/qplaceresult.h create mode 100644 src/QtLocationPlugin/qtlocation/include/QtLocation/qplacereview.h create mode 100644 src/QtLocationPlugin/qtlocation/include/QtLocation/qplacesearchreply.h create mode 100644 src/QtLocationPlugin/qtlocation/include/QtLocation/qplacesearchrequest.h create mode 100644 src/QtLocationPlugin/qtlocation/include/QtLocation/qplacesearchresult.h create mode 100644 src/QtLocationPlugin/qtlocation/include/QtLocation/qplacesearchsuggestionreply.h create mode 100644 src/QtLocationPlugin/qtlocation/include/QtLocation/qplacesupplier.h create mode 100644 src/QtLocationPlugin/qtlocation/include/QtLocation/qplaceuser.h create mode 100644 src/QtLocationPlugin/qtlocation/include/QtLocation/qtlocationversion.h create mode 100644 src/QtLocationPlugin/qtlocation/include/QtPositioning/5.5.1/QtPositioning/private/qdeclarativegeoaddress_p.h create mode 100644 src/QtLocationPlugin/qtlocation/include/QtPositioning/5.5.1/QtPositioning/private/qdeclarativegeolocation_p.h create mode 100644 src/QtLocationPlugin/qtlocation/include/QtPositioning/5.5.1/QtPositioning/private/qdoublevector2d_p.h create mode 100644 src/QtLocationPlugin/qtlocation/include/QtPositioning/5.5.1/QtPositioning/private/qdoublevector3d_p.h create mode 100644 src/QtLocationPlugin/qtlocation/include/QtPositioning/5.5.1/QtPositioning/private/qgeoaddress_p.h create mode 100644 src/QtLocationPlugin/qtlocation/include/QtPositioning/5.5.1/QtPositioning/private/qgeocircle_p.h create mode 100644 src/QtLocationPlugin/qtlocation/include/QtPositioning/5.5.1/QtPositioning/private/qgeocoordinate_p.h create mode 100644 src/QtLocationPlugin/qtlocation/include/QtPositioning/5.5.1/QtPositioning/private/qgeolocation_p.h create mode 100644 src/QtLocationPlugin/qtlocation/include/QtPositioning/5.5.1/QtPositioning/private/qgeopositioninfosource_p.h create mode 100644 src/QtLocationPlugin/qtlocation/include/QtPositioning/5.5.1/QtPositioning/private/qgeoprojection_p.h create mode 100644 src/QtLocationPlugin/qtlocation/include/QtPositioning/5.5.1/QtPositioning/private/qgeorectangle_p.h create mode 100644 src/QtLocationPlugin/qtlocation/include/QtPositioning/5.5.1/QtPositioning/private/qgeoshape_p.h create mode 100644 src/QtLocationPlugin/qtlocation/include/QtPositioning/5.5.1/QtPositioning/private/qlocationutils_p.h create mode 100644 src/QtLocationPlugin/qtlocation/include/QtPositioning/5.5.1/QtPositioning/private/qnmeapositioninfosource_p.h create mode 100644 src/QtLocationPlugin/qtlocation/include/QtPositioning/QGeoAddress create mode 100644 src/QtLocationPlugin/qtlocation/include/QtPositioning/QGeoAreaMonitorInfo create mode 100644 src/QtLocationPlugin/qtlocation/include/QtPositioning/QGeoAreaMonitorSource create mode 100644 src/QtLocationPlugin/qtlocation/include/QtPositioning/QGeoCircle create mode 100644 src/QtLocationPlugin/qtlocation/include/QtPositioning/QGeoCoordinate create mode 100644 src/QtLocationPlugin/qtlocation/include/QtPositioning/QGeoLocation create mode 100644 src/QtLocationPlugin/qtlocation/include/QtPositioning/QGeoPositionInfo create mode 100644 src/QtLocationPlugin/qtlocation/include/QtPositioning/QGeoPositionInfoSource create mode 100644 src/QtLocationPlugin/qtlocation/include/QtPositioning/QGeoPositionInfoSourceFactory create mode 100644 src/QtLocationPlugin/qtlocation/include/QtPositioning/QGeoRectangle create mode 100644 src/QtLocationPlugin/qtlocation/include/QtPositioning/QGeoSatelliteInfo create mode 100644 src/QtLocationPlugin/qtlocation/include/QtPositioning/QGeoSatelliteInfoSource create mode 100644 src/QtLocationPlugin/qtlocation/include/QtPositioning/QGeoShape create mode 100644 src/QtLocationPlugin/qtlocation/include/QtPositioning/QNmeaPositionInfoSource create mode 100644 src/QtLocationPlugin/qtlocation/include/QtPositioning/QtPositioning create mode 100644 src/QtLocationPlugin/qtlocation/include/QtPositioning/QtPositioningVersion create mode 100644 src/QtLocationPlugin/qtlocation/include/QtPositioning/qgeoaddress.h create mode 100644 src/QtLocationPlugin/qtlocation/include/QtPositioning/qgeoareamonitorinfo.h create mode 100644 src/QtLocationPlugin/qtlocation/include/QtPositioning/qgeoareamonitorsource.h create mode 100644 src/QtLocationPlugin/qtlocation/include/QtPositioning/qgeocircle.h create mode 100644 src/QtLocationPlugin/qtlocation/include/QtPositioning/qgeocoordinate.h create mode 100644 src/QtLocationPlugin/qtlocation/include/QtPositioning/qgeolocation.h create mode 100644 src/QtLocationPlugin/qtlocation/include/QtPositioning/qgeopositioninfo.h create mode 100644 src/QtLocationPlugin/qtlocation/include/QtPositioning/qgeopositioninfosource.h create mode 100644 src/QtLocationPlugin/qtlocation/include/QtPositioning/qgeopositioninfosourcefactory.h create mode 100644 src/QtLocationPlugin/qtlocation/include/QtPositioning/qgeorectangle.h create mode 100644 src/QtLocationPlugin/qtlocation/include/QtPositioning/qgeosatelliteinfo.h create mode 100644 src/QtLocationPlugin/qtlocation/include/QtPositioning/qgeosatelliteinfosource.h create mode 100644 src/QtLocationPlugin/qtlocation/include/QtPositioning/qgeoshape.h create mode 100644 src/QtLocationPlugin/qtlocation/include/QtPositioning/qnmeapositioninfosource.h create mode 100644 src/QtLocationPlugin/qtlocation/include/QtPositioning/qpositioningglobal.h create mode 100644 src/QtLocationPlugin/qtlocation/include/QtPositioning/qtpositioningversion.h create mode 100644 src/QtLocationPlugin/qtlocation/src/location/maps/maps.pri create mode 100644 src/QtLocationPlugin/qtlocation/src/location/maps/qcache3q_p.h create mode 100644 src/QtLocationPlugin/qtlocation/src/location/maps/qgeocameracapabilities_p.h create mode 100644 src/QtLocationPlugin/qtlocation/src/location/maps/qgeocameradata_p.h create mode 100644 src/QtLocationPlugin/qtlocation/src/location/maps/qgeocameratiles_p.h create mode 100644 src/QtLocationPlugin/qtlocation/src/location/maps/qgeocodereply.h create mode 100644 src/QtLocationPlugin/qtlocation/src/location/maps/qgeocodereply_p.h create mode 100644 src/QtLocationPlugin/qtlocation/src/location/maps/qgeocodingmanager.h create mode 100644 src/QtLocationPlugin/qtlocation/src/location/maps/qgeocodingmanager_p.h create mode 100644 src/QtLocationPlugin/qtlocation/src/location/maps/qgeocodingmanagerengine.h create mode 100644 src/QtLocationPlugin/qtlocation/src/location/maps/qgeocodingmanagerengine_p.h create mode 100644 src/QtLocationPlugin/qtlocation/src/location/maps/qgeomaneuver.h create mode 100644 src/QtLocationPlugin/qtlocation/src/location/maps/qgeomaneuver_p.h create mode 100644 src/QtLocationPlugin/qtlocation/src/location/maps/qgeomap_p.h create mode 100644 src/QtLocationPlugin/qtlocation/src/location/maps/qgeomap_p_p.h create mode 100644 src/QtLocationPlugin/qtlocation/src/location/maps/qgeomapcontroller_p.h create mode 100644 src/QtLocationPlugin/qtlocation/src/location/maps/qgeomappingmanager_p.h create mode 100644 src/QtLocationPlugin/qtlocation/src/location/maps/qgeomappingmanager_p_p.h create mode 100644 src/QtLocationPlugin/qtlocation/src/location/maps/qgeomappingmanagerengine_p.h create mode 100644 src/QtLocationPlugin/qtlocation/src/location/maps/qgeomappingmanagerengine_p_p.h create mode 100644 src/QtLocationPlugin/qtlocation/src/location/maps/qgeomapscene_p.h create mode 100644 src/QtLocationPlugin/qtlocation/src/location/maps/qgeomaptype_p.h create mode 100644 src/QtLocationPlugin/qtlocation/src/location/maps/qgeomaptype_p_p.h create mode 100644 src/QtLocationPlugin/qtlocation/src/location/maps/qgeoroute.h create mode 100644 src/QtLocationPlugin/qtlocation/src/location/maps/qgeoroute_p.h create mode 100644 src/QtLocationPlugin/qtlocation/src/location/maps/qgeoroutereply.h create mode 100644 src/QtLocationPlugin/qtlocation/src/location/maps/qgeoroutereply_p.h create mode 100644 src/QtLocationPlugin/qtlocation/src/location/maps/qgeorouterequest.h create mode 100644 src/QtLocationPlugin/qtlocation/src/location/maps/qgeorouterequest_p.h create mode 100644 src/QtLocationPlugin/qtlocation/src/location/maps/qgeoroutesegment.h create mode 100644 src/QtLocationPlugin/qtlocation/src/location/maps/qgeoroutesegment_p.h create mode 100644 src/QtLocationPlugin/qtlocation/src/location/maps/qgeoroutingmanager.h create mode 100644 src/QtLocationPlugin/qtlocation/src/location/maps/qgeoroutingmanager_p.h create mode 100644 src/QtLocationPlugin/qtlocation/src/location/maps/qgeoroutingmanagerengine.h create mode 100644 src/QtLocationPlugin/qtlocation/src/location/maps/qgeoroutingmanagerengine_p.h create mode 100644 src/QtLocationPlugin/qtlocation/src/location/maps/qgeoserviceprovider.h create mode 100644 src/QtLocationPlugin/qtlocation/src/location/maps/qgeoserviceprovider_p.h create mode 100644 src/QtLocationPlugin/qtlocation/src/location/maps/qgeoserviceproviderfactory.h create mode 100644 src/QtLocationPlugin/qtlocation/src/location/maps/qgeotilecache_p.h create mode 100644 src/QtLocationPlugin/qtlocation/src/location/maps/qgeotiledmap_p.h create mode 100644 src/QtLocationPlugin/qtlocation/src/location/maps/qgeotiledmap_p_p.h create mode 100644 src/QtLocationPlugin/qtlocation/src/location/maps/qgeotiledmappingmanagerengine_p.h create mode 100644 src/QtLocationPlugin/qtlocation/src/location/maps/qgeotiledmappingmanagerengine_p_p.h create mode 100644 src/QtLocationPlugin/qtlocation/src/location/maps/qgeotiledmapreply_p.h create mode 100644 src/QtLocationPlugin/qtlocation/src/location/maps/qgeotiledmapreply_p_p.h create mode 100644 src/QtLocationPlugin/qtlocation/src/location/maps/qgeotilefetcher_p.h create mode 100644 src/QtLocationPlugin/qtlocation/src/location/maps/qgeotilefetcher_p_p.h create mode 100644 src/QtLocationPlugin/qtlocation/src/location/maps/qgeotilerequestmanager_p.h create mode 100644 src/QtLocationPlugin/qtlocation/src/location/maps/qgeotilespec_p.h create mode 100644 src/QtLocationPlugin/qtlocation/src/location/maps/qgeotilespec_p_p.h create mode 100644 src/QtLocationPlugin/qtlocation/src/location/qlocation.h create mode 100644 src/QtLocationPlugin/qtlocation/src/location/qlocationglobal.h create mode 100644 src/QtLocationPlugin/qtlocation/src/positioning/qdeclarativegeoaddress_p.h create mode 100644 src/QtLocationPlugin/qtlocation/src/positioning/qdeclarativegeolocation_p.h create mode 100644 src/QtLocationPlugin/qtlocation/src/positioning/qdoublevector2d_p.h create mode 100644 src/QtLocationPlugin/qtlocation/src/positioning/qdoublevector3d_p.h create mode 100644 src/QtLocationPlugin/qtlocation/src/positioning/qgeoaddress.h create mode 100644 src/QtLocationPlugin/qtlocation/src/positioning/qgeoaddress_p.h create mode 100644 src/QtLocationPlugin/qtlocation/src/positioning/qgeoareamonitorinfo.h create mode 100644 src/QtLocationPlugin/qtlocation/src/positioning/qgeoareamonitorsource.h create mode 100644 src/QtLocationPlugin/qtlocation/src/positioning/qgeocircle.h create mode 100644 src/QtLocationPlugin/qtlocation/src/positioning/qgeocircle_p.h create mode 100644 src/QtLocationPlugin/qtlocation/src/positioning/qgeocoordinate.h create mode 100644 src/QtLocationPlugin/qtlocation/src/positioning/qgeocoordinate_p.h create mode 100644 src/QtLocationPlugin/qtlocation/src/positioning/qgeolocation.h create mode 100644 src/QtLocationPlugin/qtlocation/src/positioning/qgeolocation_p.h create mode 100644 src/QtLocationPlugin/qtlocation/src/positioning/qgeopositioninfo.h create mode 100644 src/QtLocationPlugin/qtlocation/src/positioning/qgeopositioninfosource.h create mode 100644 src/QtLocationPlugin/qtlocation/src/positioning/qgeopositioninfosource_p.h create mode 100644 src/QtLocationPlugin/qtlocation/src/positioning/qgeopositioninfosourcefactory.h create mode 100644 src/QtLocationPlugin/qtlocation/src/positioning/qgeoprojection_p.h create mode 100644 src/QtLocationPlugin/qtlocation/src/positioning/qgeorectangle.h create mode 100644 src/QtLocationPlugin/qtlocation/src/positioning/qgeorectangle_p.h create mode 100644 src/QtLocationPlugin/qtlocation/src/positioning/qgeosatelliteinfo.h create mode 100644 src/QtLocationPlugin/qtlocation/src/positioning/qgeosatelliteinfosource.h create mode 100644 src/QtLocationPlugin/qtlocation/src/positioning/qgeoshape.h create mode 100644 src/QtLocationPlugin/qtlocation/src/positioning/qgeoshape_p.h create mode 100644 src/QtLocationPlugin/qtlocation/src/positioning/qlocationutils_p.h create mode 100644 src/QtLocationPlugin/qtlocation/src/positioning/qnmeapositioninfosource.h create mode 100644 src/QtLocationPlugin/qtlocation/src/positioning/qnmeapositioninfosource_p.h create mode 100644 src/QtLocationPlugin/qtlocation/src/positioning/qpositioningglobal.h delete mode 100644 src/Settings/RemoteID.SettingsGroup.json delete mode 100644 src/Settings/RemoteIDSettings.cc delete mode 100644 src/Settings/RemoteIDSettings.h delete mode 100644 src/Vehicle/ComponentInformationTranslation.cc delete mode 100644 src/Vehicle/ComponentInformationTranslation.h delete mode 100644 src/Vehicle/EFIFact.json delete mode 100644 src/Vehicle/GeneratorFact.json delete mode 100644 src/Vehicle/HealthAndArmingCheckReport.cc delete mode 100644 src/Vehicle/HealthAndArmingCheckReport.h create mode 100644 src/Vehicle/HealthAndArmingChecks.cc create mode 100644 src/Vehicle/HealthAndArmingChecks.h delete mode 100644 src/Vehicle/RemoteIDManager.cc delete mode 100644 src/Vehicle/RemoteIDManager.h delete mode 100644 src/Vehicle/StandardModes.cc delete mode 100644 src/Vehicle/StandardModes.h delete mode 100644 src/Vehicle/VehicleEFIFactGroup.cc delete mode 100644 src/Vehicle/VehicleEFIFactGroup.h delete mode 100644 src/Vehicle/VehicleGeneratorFactGroup.cc delete mode 100644 src/Vehicle/VehicleGeneratorFactGroup.h delete mode 100644 src/comm/Mocklink.Arduplane.params.ftp.bin delete mode 100644 src/qgcunittest/ComponentInformationTranslationTest.cc delete mode 100644 src/qgcunittest/ComponentInformationTranslationTest.h delete mode 100644 src/qgcunittest/TranslationTest.json delete mode 100644 src/qgcunittest/TranslationTest_de_DE.ts delete mode 100644 src/ui/preferences/RemoteIDSettings.qml delete mode 100644 src/ui/toolbar/APMSupportForwardingIndicator.qml delete mode 100644 src/ui/toolbar/FlightModeMenuIndicator.qml delete mode 100644 src/ui/toolbar/Images/RidEmergencyBackground.svg delete mode 100644 src/ui/toolbar/Images/RidEmergencyBackgroundHighlight.svg delete mode 100644 src/ui/toolbar/Images/RidFlagBackgroundGreen.svg delete mode 100644 src/ui/toolbar/Images/RidFlagBackgroundRed.svg delete mode 100644 src/ui/toolbar/Images/RidIconGreen.svg delete mode 100644 src/ui/toolbar/Images/RidIconGrey.svg delete mode 100644 src/ui/toolbar/Images/RidIconRed.svg delete mode 100644 src/ui/toolbar/Images/RidIconYellow.svg delete mode 100644 src/ui/toolbar/RemoteIDIndicator.qml diff --git a/CMakeLists.txt b/CMakeLists.txt index 2e7bbdc..a2cc985 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -6,7 +6,7 @@ include(GNUInstallDirs) set_property(CACHE CMAKE_BUILD_TYPE PROPERTY STRINGS "Debug;Release;RelWithDebInfo;MinSizeRel;Coverage") -set(CMAKE_CXX_STANDARD 17) +set(CMAKE_CXX_STANDARD 14) set(CMAKE_AUTOMOC ON) set(CMAKE_AUTOUIC ON) set(CMAKE_AUTORCC ON) @@ -164,7 +164,7 @@ include_directories( libs/libevents libs/mavlink/include/mavlink/v2.0 - libs/mavlink/include/mavlink/v2.0/all + libs/mavlink/include/mavlink/v2.0/ardupilotmega libs/mavlink/include/mavlink/v2.0/common libs/shapelib @@ -178,6 +178,8 @@ set(QGC_RESOURCES ${CMAKE_CURRENT_SOURCE_DIR}/qgcresources.qrc ${CMAKE_CURRENT_SOURCE_DIR}/qgroundcontrol.qrc ${CMAKE_CURRENT_SOURCE_DIR}/resources/InstrumentValueIcons/InstrumentValueIcons.qrc + ${CMAKE_CURRENT_SOURCE_DIR}/src/Airmap/airmap.qrc + ${CMAKE_CURRENT_SOURCE_DIR}/src/Airmap/dummy/airmap_dummy.qrc ${CMAKE_CURRENT_SOURCE_DIR}/src/FirmwarePlugin/APM/APMResources.qrc ${CMAKE_CURRENT_SOURCE_DIR}/src/FirmwarePlugin/PX4/PX4Resources.qrc ${CMAKE_CURRENT_SOURCE_DIR}/VideoReceiverApp/qml.qrc diff --git a/QGCCommon.pri b/QGCCommon.pri index f39686c..d45af61 100644 --- a/QGCCommon.pri +++ b/QGCCommon.pri @@ -20,7 +20,9 @@ CONFIG -= debug_and_release CONFIG += warn_on CONFIG += resources_big CONFIG += c++17 - + +DEFINES += DISABLE_AIRMAP # AIRMAP SDK does not exist anymore + linux { linux-g++ | linux-g++-64 | linux-g++-32 | linux-clang { message("Linux build") @@ -107,21 +109,19 @@ linux { QMAKE_CXXFLAGS += -fvisibility=hidden QMAKE_CXXFLAGS_WARN_ON += -Werror \ -Wno-unused-parameter \ # gst-plugins-good - -Wno-unused-but-set-variable \ # eigen & QGCTileCacheWorker.cpp -Wno-deprecated-declarations # eigen } else { error("Unsupported Mac toolchain, only 64-bit LLVM+clang is supported") } } else : ios { message("iOS build") - CONFIG += iOSBuild MobileBuild app_bundle + CONFIG += iOSBuild MobileBuild app_bundle NoSerialBuild CONFIG -= bitcode DEFINES += __ios__ DEFINES += QGC_NO_GOOGLE_MAPS DEFINES += NO_SERIAL_LINK DEFINES += QGC_DISABLE_UVC DEFINES += QGC_GST_TAISYNC_ENABLED - DEFINES += NO_SERIAL_LINK QMAKE_IOS_DEPLOYMENT_TARGET = 11.0 QMAKE_APPLE_TARGETED_DEVICE_FAMILY = 1,2 # Universal QMAKE_LFLAGS += -Wl,-no_pie @@ -143,10 +143,6 @@ linux|macx|ios { } } -contains(DEFINES, NO_SERIAL_LINK) { - message("Serial port support disabled") -} - !MacBuild:!AndroidBuild { # See QGCPostLinkCommon.pri for details on why MacBuild doesn't use DESTDIR DESTDIR = staging @@ -199,8 +195,6 @@ exists ($$PWD/.git) { DEFINES += APP_VERSION_STR=\"\\\"$$APP_VERSION_STR\\\"\" AndroidBuild { - QGC_ANDROID_PACKAGE = org.mavlink.qgroundcontrol - message(VERSION $${VERSION}) MAJOR_VERSION = $$section(VERSION, ".", 0, 0) MINOR_VERSION = $$section(VERSION, ".", 1, 1) diff --git a/QGCExternalLibs.pri b/QGCExternalLibs.pri index ace9afc..e2a2307 100644 --- a/QGCExternalLibs.pri +++ b/QGCExternalLibs.pri @@ -54,8 +54,7 @@ isEmpty(MAVLINK_CONF) { MAVLINK_CONF = $$fromfile(user_config.pri, MAVLINK_CONF) message($$sprintf("Using user-supplied mavlink dialect '%1' specified in user_config.pri", $$MAVLINK_CONF)) } else { - MAVLINK_CONF = all - message($$sprintf("Using MAVLink dialect '%1'.", $$MAVLINK_CONF)) + MAVLINK_CONF = ardupilotmega } } @@ -68,18 +67,32 @@ contains (CONFIG, QGC_DISABLE_APM_MAVLINK) { CONFIG += ArdupilotEnabled } +# First we select the dialect, checking for valid user selection +# Users can override all other settings by specifying MAVLINK_CONF as an argument to qmake +!isEmpty(MAVLINK_CONF) { + message($$sprintf("Using MAVLink dialect '%1'.", $$MAVLINK_CONF)) +} + # Then we add the proper include paths dependent on the dialect. INCLUDEPATH += $$MAVLINKPATH -count(MAVLINK_CONF, 1) { - exists($$MAVLINKPATH/$$MAVLINK_CONF) { - INCLUDEPATH += $$MAVLINKPATH/$$MAVLINK_CONF - DEFINES += $$sprintf('QGC_USE_%1_MESSAGES', $$upper($$MAVLINK_CONF)) +exists($$MAVLINKPATH/common) { + !isEmpty(MAVLINK_CONF) { + count(MAVLINK_CONF, 1) { + exists($$MAVLINKPATH/$$MAVLINK_CONF) { + INCLUDEPATH += $$MAVLINKPATH/$$MAVLINK_CONF + DEFINES += $$sprintf('QGC_USE_%1_MESSAGES', $$upper($$MAVLINK_CONF)) + } else { + error($$sprintf("MAVLink dialect '%1' does not exist at '%2'!", $$MAVLINK_CONF, $$MAVLINKPATH_REL)) + } + } else { + error(Only a single mavlink dialect can be specified in MAVLINK_CONF) + } } else { - error($$sprintf("MAVLink dialect '%1' does not exist at '%2'!", $$MAVLINK_CONF, $$MAVLINKPATH_REL)) + INCLUDEPATH += $$MAVLINKPATH/common } } else { - error(Only a single mavlink dialect can be specified in MAVLINK_CONF) + error($$sprintf("MAVLink folder does not exist at '%1'! Run 'git submodule init && git submodule update' on the command line.",$$MAVLINKPATH_REL)) } # @@ -92,13 +105,11 @@ DEFINES += NOMINMAX # [REQUIRED] Events submodule HEADERS+= \ libs/libevents/libevents/libs/cpp/protocol/receive.h \ - libs/libevents/libevents/libs/cpp/parse/health_and_arming_checks.h \ libs/libevents/libevents/libs/cpp/parse/parser.h \ libs/libevents/libevents/libs/cpp/generated/events_generated.h \ libs/libevents/libevents_definitions.h SOURCES += \ libs/libevents/libevents/libs/cpp/protocol/receive.cpp \ - libs/libevents/libevents/libs/cpp/parse/health_and_arming_checks.cpp \ libs/libevents/libevents/libs/cpp/parse/parser.cpp \ libs/libevents/definitions.cpp INCLUDEPATH += \ @@ -213,9 +224,9 @@ MacBuild { # Include Android OpenSSL libs AndroidBuild { include($$SOURCE_DIR/libs/OpenSSL/android_openssl/openssl.pri) - #message("ANDROID_EXTRA_LIBS") - #message($$ANDROID_TARGET_ARCH) - #message($$ANDROID_EXTRA_LIBS) + message("ANDROID_EXTRA_LIBS") + message($$ANDROID_TARGET_ARCH) + message($$ANDROID_EXTRA_LIBS) } # Pairing @@ -264,3 +275,54 @@ contains (DEFINES, DISABLE_ZEROCONF) { } else { message("Skipping support for Zeroconf (unsupported platform)") } + +# +# [OPTIONAL] AirMap Support +# +contains (DEFINES, DISABLE_AIRMAP) { + message("Skipping support for AirMap (manual override from command line)") +# Otherwise the user can still disable this feature in the user_config.pri file. +} else:exists(user_config.pri):infile(user_config.pri, DEFINES, DISABLE_AIRMAP) { + message("Skipping support for AirMap (manual override from user_config.pri)") +} else { + AIRMAP_PLATFORM_SDK_PATH = $${OUT_PWD}/libs/airmap-platform-sdk + AIRMAP_QT_PATH = Qt.$${QT_MAJOR_VERSION}.$${QT_MINOR_VERSION} + message("Including support for AirMap") + MacBuild { + exists("$${AIRMAPD_PATH}/macOS/$$AIRMAP_QT_PATH") { + message("Including support for AirMap for macOS") + LIBS += -L$${AIRMAPD_PATH}/macOS/$$AIRMAP_QT_PATH -lairmap-qt + DEFINES += QGC_AIRMAP_ENABLED + } + } else:LinuxBuild { + #-- Download and install platform-sdk libs and headers iff they're not already in the build directory + AIRMAP_PLATFORM_SDK_URL = "https://github.com/airmap/platform-sdk/releases/download/2.0/airmap-platform-sdk-2.0.0-Linux.deb" + AIRMAP_PLATFORM_SDK_FILEPATH = "$${OUT_PWD}/airmap-platform-sdk.deb" + AIRMAP_PLATFORM_SDK_INSTALL_DIR = "tmp" + + airmap_platform_sdk_install.target = $${AIRMAP_PLATFORM_SDK_PATH}/include/airmap + airmap_platform_sdk_install.commands = \ + rm -rf $${AIRMAP_PLATFORM_SDK_PATH} && \ + mkdir -p "$${AIRMAP_PLATFORM_SDK_PATH}/linux/$${AIRMAP_QT_PATH}" && \ + mkdir -p "$${AIRMAP_PLATFORM_SDK_PATH}/include/airmap" && \ + mkdir -p "$${AIRMAP_PLATFORM_SDK_PATH}/$${AIRMAP_PLATFORM_SDK_INSTALL_DIR}" && \ + curl --location --output "$${AIRMAP_PLATFORM_SDK_FILEPATH}" "$${AIRMAP_PLATFORM_SDK_URL}" && \ + ar p "$${AIRMAP_PLATFORM_SDK_FILEPATH}" data.tar.gz | tar xvz -C "$${AIRMAP_PLATFORM_SDK_PATH}/$${AIRMAP_PLATFORM_SDK_INSTALL_DIR}/" --strip-components=1 && \ + mv -u "$${AIRMAP_PLATFORM_SDK_PATH}/$${AIRMAP_PLATFORM_SDK_INSTALL_DIR}/usr/lib/x86_64-linux-gnu/*" "$${AIRMAP_PLATFORM_SDK_PATH}/linux/$${AIRMAP_QT_PATH}/" && \ + mv -u "$${AIRMAP_PLATFORM_SDK_PATH}/$${AIRMAP_PLATFORM_SDK_INSTALL_DIR}/usr/include/airmap/*" "$${AIRMAP_PLATFORM_SDK_PATH}/include/airmap/" && \ + rm -rf "$${AIRMAP_PLATFORM_SDK_PATH}/$${AIRMAP_PLATFORM_SDK_INSTALL_DIR}" && \ + rm "$${AIRMAP_PLATFORM_SDK_FILEPATH}" + airmap_platform_sdk_install.depends = + QMAKE_EXTRA_TARGETS += airmap_platform_sdk_install + PRE_TARGETDEPS += $$airmap_platform_sdk_install.target + + LIBS += -L$${AIRMAP_PLATFORM_SDK_PATH}/linux/$${AIRMAP_QT_PATH} -lairmap-cpp + DEFINES += QGC_AIRMAP_ENABLED + } else { + message("Skipping support for Airmap (unsupported platform)") + } + contains (DEFINES, QGC_AIRMAP_ENABLED) { + INCLUDEPATH += \ + $${AIRMAP_PLATFORM_SDK_PATH}/include + } +} diff --git a/QGCPostLinkCommon.pri b/QGCPostLinkCommon.pri index 4ad6b57..4816d61 100644 --- a/QGCPostLinkCommon.pri +++ b/QGCPostLinkCommon.pri @@ -25,12 +25,22 @@ MacBuild { # with the differences between post list command running in a shell script (XCode) versus a makefile (Qt Creator) macx-xcode { # SDL2 Framework - QMAKE_POST_LINK += && rsync -a --delete $$SOURCE_DIR/libs/Frameworks/SDL2.framework $BUILT_PRODUCTS_DIR/$${TARGET}.app/Contents/Frameworks + QMAKE_POST_LINK += && rsync -a --delete $$SOURCE_DIR/libs/Frameworks/SDL2.Framework $BUILT_PRODUCTS_DIR/$${TARGET}.app/Contents/Frameworks QMAKE_POST_LINK += && install_name_tool -change "@rpath/SDL2.framework/Versions/A/SDL2" "@executable_path/../Frameworks/SDL2.framework/Versions/A/SDL2" $BUILT_PRODUCTS_DIR/$${TARGET}.app/Contents/MacOS/$${TARGET} + # AirMap + contains (DEFINES, QGC_AIRMAP_ENABLED) { + QMAKE_POST_LINK += && rsync -a $$SOURCE_DIR/libs/airmapd/macOS/$$AIRMAP_QT_PATH/* $BUILT_PRODUCTS_DIR/$${TARGET}.app/Contents/Frameworks/ + QMAKE_POST_LINK += && install_name_tool -change "@rpath/libairmap-qt.0.0.1.dylib" "@executable_path/../Frameworks/libairmap-qt.0.0.1.dylib" $BUILT_PRODUCTS_DIR/$${TARGET}.app/Contents/MacOS/$${TARGET} + } } else { # SDL2 Framework - QMAKE_POST_LINK += && rsync -a --delete $$SOURCE_DIR/libs/Frameworks/SDL2.framework $${TARGET}.app/Contents/Frameworks + QMAKE_POST_LINK += && rsync -a --delete $$SOURCE_DIR/libs/Frameworks/SDL2.Framework $${TARGET}.app/Contents/Frameworks QMAKE_POST_LINK += && install_name_tool -change "@rpath/SDL2.framework/Versions/A/SDL2" "@executable_path/../Frameworks/SDL2.framework/Versions/A/SDL2" $${TARGET}.app/Contents/MacOS/$${TARGET} + # AirMap + contains (DEFINES, QGC_AIRMAP_ENABLED) { + QMAKE_POST_LINK += && rsync -a $$SOURCE_DIR/libs/airmap-platform-sdk/macOS/$$AIRMAP_QT_PATH/* $${TARGET}.app/Contents/Frameworks/ + QMAKE_POST_LINK += && install_name_tool -change "@rpath/libairmap-qt.0.0.1.dylib" "@executable_path/../Frameworks/libairmap-qt.0.0.1.dylib" $${TARGET}.app/Contents/MacOS/$${TARGET} + } } } @@ -54,9 +64,7 @@ WindowsBuild { # Copy Visual Studio DLLs # Note that this is only done for release because the debugging versions of these DLLs cannot be redistributed. QMAKE_POST_LINK += $$escape_expand(\\n) $$QMAKE_COPY \"$$SOURCE_DIR\\libs\\Microsoft\\windows\\msvcp140.dll\" \"$$DESTDIR\" - QMAKE_POST_LINK += $$escape_expand(\\n) $$QMAKE_COPY \"$$SOURCE_DIR\\libs\\Microsoft\\windows\\msvcp140_1.dll\" \"$$DESTDIR\" QMAKE_POST_LINK += $$escape_expand(\\n) $$QMAKE_COPY \"$$SOURCE_DIR\\libs\\Microsoft\\windows\\vcruntime140.dll\" \"$$DESTDIR\" - QMAKE_POST_LINK += $$escape_expand(\\n) $$QMAKE_COPY \"$$SOURCE_DIR\\libs\\Microsoft\\windows\\vcruntime140_1.dll\" \"$$DESTDIR\" } DEPLOY_TARGET = $$shell_quote($$shell_path($$DESTDIR\\$${TARGET}.exe)) @@ -122,9 +130,9 @@ LinuxBuild { libicui18n.so \ libicuuc.so } - # Copy only if non-existing to avoid file timestamp updates + for(QT_LIB, QT_LIB_LIST) { - QMAKE_POST_LINK += && $$QMAKE_COPY -n --dereference $$[QT_INSTALL_LIBS]/$$QT_LIB $$DESTDIR/Qt/libs/ + QMAKE_POST_LINK += && $$QMAKE_COPY --dereference $$[QT_INSTALL_LIBS]/$$QT_LIB $$DESTDIR/Qt/libs/ } # QT_INSTALL_PLUGINS @@ -144,11 +152,16 @@ LinuxBuild { } for(QT_PLUGIN, QT_PLUGIN_LIST) { - QMAKE_POST_LINK += && $$QMAKE_COPY -n --dereference --recursive $$[QT_INSTALL_PLUGINS]/$$QT_PLUGIN $$DESTDIR/Qt/plugins/ + QMAKE_POST_LINK += && $$QMAKE_COPY --dereference --recursive $$[QT_INSTALL_PLUGINS]/$$QT_PLUGIN $$DESTDIR/Qt/plugins/ } # QT_INSTALL_QML - QMAKE_POST_LINK += && $$QMAKE_COPY -n --dereference --recursive $$[QT_INSTALL_QML] $$DESTDIR/Qt/ + QMAKE_POST_LINK += && $$QMAKE_COPY --dereference --recursive $$[QT_INSTALL_QML] $$DESTDIR/Qt/ + + # Airmap + contains (DEFINES, QGC_AIRMAP_ENABLED) { + QMAKE_POST_LINK += && $$QMAKE_COPY $$OUT_PWD/libs/airmap-platform-sdk/linux/$$AIRMAP_QT_PATH/libairmap-cpp.so.2.0.0 $$DESTDIR/Qt/libs/ + } # QGroundControl start script contains (CONFIG, QGC_DISABLE_CUSTOM_BUILD) | !exists($$PWD/custom/custom.pri) { diff --git a/QGCPostLinkInstaller.pri b/QGCPostLinkInstaller.pri index 162f0a3..7c2a0b2 100644 --- a/QGCPostLinkInstaller.pri +++ b/QGCPostLinkInstaller.pri @@ -16,10 +16,10 @@ installer { QMAKE_POST_LINK += && $$dirname(QMAKE_QMAKE)/macdeployqt $${TARGET}.app -appstore-compliant -verbose=1 -qmldir=$${SOURCE_DIR}/src # macdeployqt is missing some relocations once in a while. "Fix" it: - QMAKE_POST_LINK += && rsync -a --delete /Library/Frameworks/GStreamer.framework $${TARGET}.app/Contents/Frameworks + QMAKE_POST_LINK += && cp -R /Library/Frameworks/GStreamer.framework $${TARGET}.app/Contents/Frameworks QMAKE_POST_LINK += && echo libexec QMAKE_POST_LINK += && ln -sf $${TARGET}.app/Contents/Frameworks $${TARGET}.app/Contents/Frameworks/GStreamer.framework/Versions/1.0/libexec/Frameworks - QMAKE_POST_LINK += && install_name_tool -change /Library/Frameworks/GStreamer.framework/Versions/1.0/lib/GStreamer @executable_path/../Frameworks/GStreamer.framework/Versions/1.0/lib/GStreamer $${TARGET}.app/Contents/MacOS/$${TARGET} + QMAKE_POST_LINK += && install_name_tool -change /Library/Frameworks/GStreamer.framework/Versions/1.0/lib/GStreamer @executable_path/../Frameworks/GStreamer.framework/Versions/1.0/lib/GStreamer $${TARGET}.app/Contents/MacOS/QGroundControl QMAKE_POST_LINK += && rm -rf $${TARGET}.app/Contents/Frameworks/GStreamer.framework/Versions/1.0/{bin,etc,share,Headers,include,Commands} QMAKE_POST_LINK += && rm -rf $${TARGET}.app/Contents/Frameworks/GStreamer.framework/Versions/1.0/lib/{*.a,*.la,glib-2.0,gst-validate-launcher,pkgconfig} @@ -34,8 +34,6 @@ installer { QMAKE_POST_LINK += && mkdir -p package QMAKE_POST_LINK += && mkdir -p staging QMAKE_POST_LINK += && rsync -a --delete $${TARGET}.app staging - QMAKE_POST_LINK += && rm -rf /tmp/tmp.dmg - QMAKE_POST_LINK += && rm -rf package/$${TARGET}.dmg QMAKE_POST_LINK += && hdiutil create /tmp/tmp.dmg -ov -volname "$${TARGET}-$${MAC_VERSION}" -fs HFS+ -srcfolder "staging" QMAKE_POST_LINK += && hdiutil convert /tmp/tmp.dmg -format UDBZ -o package/$${TARGET}.dmg QMAKE_POST_LINK += && rm /tmp/tmp.dmg @@ -51,13 +49,10 @@ installer { } AndroidBuild { _ANDROID_KEYSTORE_PASSWORD = $$(ANDROID_KEYSTORE_PASSWORD) - QMAKE_POST_LINK += && mkdir -p package isEmpty(_ANDROID_KEYSTORE_PASSWORD) { - message(Keystore password not available - not signing package) - # This is for builds in forks and PR where the Android keystore password is not available - QMAKE_POST_LINK += && make apk - QMAKE_POST_LINK += && cp android-build/build/outputs/apk/debug/android-build-debug.apk package/QGroundControl$${ANDROID_TRUE_BITNESS}.apk + message(Skipping androiddeployqt since keystore password is not available) } else { + QMAKE_POST_LINK += && mkdir -p package QMAKE_POST_LINK += && make apk_install_target INSTALL_ROOT=android-build QMAKE_POST_LINK += && androiddeployqt --verbose --input android-QGroundControl-deployment-settings.json --output android-build --release --sign $${SOURCE_DIR}/android/android_release.keystore QGCAndroidKeyStore --storepass $$(ANDROID_KEYSTORE_PASSWORD) QMAKE_POST_LINK += && cp android-build/build/outputs/apk/release/android-build-release-signed.apk package/QGroundControl$${ANDROID_TRUE_BITNESS}.apk diff --git a/README.md b/README.md index a914739..3112f0f 100644 --- a/README.md +++ b/README.md @@ -1,11 +1,15 @@ -# QGroundControl Ground Control Station +# Spiri Ground Control Station -[![Releases](https://img.shields.io/github/release/mavlink/QGroundControl.svg)](https://github.com/mavlink/QGroundControl/releases) +[![Releases](https://git.spirirobotics.com/hetongapp/Spiri-App/raw/branch/master/Spiri/resources/images/Spiri-release.svg)](https://git.spirirobotics.com/hetongapp/Spiri-App/releases) +[![Travis Build Status](https://travis-ci.org/mavlink/qgroundcontrol.svg?branch=master)](https://travis-ci.org/mavlink/qgroundcontrol) +[![Appveyor Build Status](https://ci.appveyor.com/api/projects/status/crxcm4qayejuvh6c/branch/master?svg=true)](https://ci.appveyor.com/project/mavlink/qgroundcontrol) -*QGroundControl* (QGC) is an intuitive and powerful ground control station (GCS) for UAVs. -The primary goal of QGC is ease of use for both first time and professional users. -It provides full flight control and mission planning for any MAVLink enabled drone, and vehicle setup for both PX4 and ArduPilot powered UAVs. Instructions for *using QGroundControl* are provided in the [User Manual](https://docs.qgroundcontrol.com/en/) (you may not need them because the UI is very intuitive!) + +*Spiri GroundControl* (SGC) is an intuitive and powerful ground control station (GCS) for UAVs. + +The primary goal of SGC is ease of use for both first time and professional users. +It provides full flight control and mission planning for any MAVLink enabled drone, and vehicle setup for both PX4 and ArduPilot powered UAVs. Instructions for *using Spiri GroundControl* are provided in the [User Manual](https://docs.qgroundcontrol.com/en/) (you may not need them because the UI is very intuitive!) All the code is open-source, so you can contribute and evolve it as you want. The [Developer Guide](https://dev.qgroundcontrol.com/en/) explains how to [build](https://dev.qgroundcontrol.com/en/getting_started/) and extend QGC. @@ -18,3 +22,63 @@ Key Links: * [Discussion/Support](https://docs.qgroundcontrol.com/en/Support/Support.html) * [Contributing](https://dev.qgroundcontrol.com/en/contribute/) * [License](https://github.com/mavlink/qgroundcontrol/blob/master/COPYING.md) + + +# Setup Installation (Windows) + +*Install QT 5.15.2 +* Here is the link and Download: [Website](https://download.qt.io/official_releases/online_installers/) (Windows) +* Setup the environment for QT! + * 1. right click the desktop and click the attribution. + * 2. select the "Advanced System Settings" + * 3. select the "Environment Variables" + * 4. create a new qt system variable(using your own QT install Path) (eg. D:\QT5.15.2\5.15.2\msvc2019_64) + +*Install Spiri QGC +* create a folder in your workspace and name it such as "Spiri" +* git clone https://git.spirirobotics.com/hetongapp/SpiriGroundControl.git +* Then cd to the "Spiri/SpiriGroundControl" and update the repo: "git submodule update --init --recursive". +* Open the "qgroundcontrol.pro" in "Spiri/SpiriGroundControl" folder by using the QT creator +* click "build" and "run" + + +# Setup Installation (MacOS) + +* Install the Xcode in Apple Store +* Install Qt Creator for macOS: [Website](https://info.qt.io/zh-cn/download-qt-for-application-development) +* Create or open a Qt project and check the "iphonesimulator-clang-..." environment in the project configuration page +* create a folder in your workspace and name it such as "Spiri" +* git clone https://git.spirirobotics.com/hetongapp/SpiriGroundControl.git +* Then cd to the "Spiri/SpiriGroundControl" and update the repo: "git submodule update --init --recursive". +* Click the hammer compile button in the lower left corner, after the compilation is successful, you can close Qt Creator. +* After the compilation is complete, there will be an "Info.plist" file in the output folder, open it with Xcode. + + +# Setup Installation (Ubuntu20.04) + +*Install QT 5.15.2 +* Setup the environment for QT! + ```bash + sudo chmod u+x ./Ubuntu_QT_install.sh && source ./Ubuntu_QT_install.sh + ``` +*Install Spiri QGC +* create a folder in your workspace and name it such as "Spiri" +* git clone https://git.spirirobotics.com/Spiri/SpiriGroundControlTest.git +* Then cd to the "Spiri/SpiriGroundControlTest" and update the repo: "git submodule update --init --recursive". +* Open the "qgroundcontrol.pro" in "Spiri/SpiriGroundControlTest" folder by using the QT creator +* click "build" and "run" + + +# Branch naming rules + + * Dev-AndroidAPP-Tong + * Bug-AndroidAPP-Tong + * Rev-AndroidAPP-Tong + + Note: + + * Dev:This branch is for develop + * Bug: This branch is for bug fix + * Rev: This branch is for revision + * Tong:Contributer's name + * AndroidAPP:The general description of this task \ No newline at end of file diff --git a/Spiri/README.md b/Spiri/README.md new file mode 100644 index 0000000..ddb5b54 --- /dev/null +++ b/Spiri/README.md @@ -0,0 +1,69 @@ +# Spiri Ground Control Station + +[![Releases](https://img.shields.io/github/release/mavlink/QGroundControl.svg)](https://git.spirirobotics.com/hetongapp/SpiriGroundControl/releases) +[![Travis Build Status](https://travis-ci.org/mavlink/qgroundcontrol.svg?branch=master)](https://travis-ci.org/mavlink/qgroundcontrol) +[![Appveyor Build Status](https://ci.appveyor.com/api/projects/status/crxcm4qayejuvh6c/branch/master?svg=true)](https://ci.appveyor.com/project/mavlink/qgroundcontrol) + + + +*Spiri GroundControl* (SGC) is an intuitive and powerful ground control station (GCS) for UAVs. + +The primary goal of SGC is ease of use for both first time and professional users. +It provides full flight control and mission planning for any MAVLink enabled drone, and vehicle setup for both PX4 and ArduPilot powered UAVs. Instructions for *using Spiri GroundControl* are provided in the [User Manual](https://docs.qgroundcontrol.com/en/) (you may not need them because the UI is very intuitive!) + +All the code is open-source, so you can contribute and evolve it as you want. +The [Developer Guide](https://dev.qgroundcontrol.com/en/) explains how to [build](https://dev.qgroundcontrol.com/en/getting_started/) and extend QGC. + + +Key Links: +* [Website](http://qgroundcontrol.com) (qgroundcontrol.com) +* [User Manual](https://docs.qgroundcontrol.com/en/) +* [Developer Guide](https://dev.qgroundcontrol.com/en/) +* [Discussion/Support](https://docs.qgroundcontrol.com/en/Support/Support.html) +* [Contributing](https://dev.qgroundcontrol.com/en/contribute/) +* [License](https://github.com/mavlink/qgroundcontrol/blob/master/COPYING.md) + + +# Setup Installation (Windows) + +*Install QT 5.15.2 +* Here is the link and Download: [Website](https://download.qt.io/official_releases/online_installers/) (Windows) +* Setup the environment for QT! + * 1. right click the desktop and click the attribution. + * 2. select the "Advanced System Settings" + * 3. select the "Environment Variables" + * 4. create a new qt system variable(using your own QT install Path) (eg. D:\QT5.15.2\5.15.2\msvc2019_64) + +*Install Spiri QGC +* create a folder in your workspace and name it such as "Spiri" +* git clone https://git.spirirobotics.com/hetongapp/SpiriGroundControl.git +* Then cd to the "Spiri/SpiriGroundControl" and update the repo: "git submodule update --init --recursive". +* Open the "qgroundcontrol.pro" in "Spiri/SpiriGroundControl" folder by using the QT creator +* click "build" and "run" + + +# Setup Installation (MacOS) + +* Install the Xcode in Apple Store +* Install Qt Creator for macOS: [Website](https://info.qt.io/zh-cn/download-qt-for-application-development) +* Create or open a Qt project and check the "iphonesimulator-clang-..." environment in the project configuration page +* create a folder in your workspace and name it such as "Spiri" +* git clone https://git.spirirobotics.com/hetongapp/SpiriGroundControl.git +* Then cd to the "Spiri/SpiriGroundControl" and update the repo: "git submodule update --init --recursive". +* Click the hammer compile button in the lower left corner, after the compilation is successful, you can close Qt Creator. +* After the compilation is complete, there will be an "Info.plist" file in the output folder, open it with Xcode. + + +# Setup Installation (Ubuntu20.04) + +*Install QT 5.15.2 +* Setup the environment for QT! + ```bash + sudo chmod u+x ./Ubuntu_QT_install.sh && source ./Ubuntu_QT_install.sh + ``` +*Install Spiri QGC +* create a folder in your workspace and name it such as "Spiri" +* git clone https://git.spirirobotics.com/Spiri/SpiriGroundControlTest.git +* Then cd to the "Spiri/SpiriGroundControlTest" and update the repo: "git submodule update --init --recursive". +* Open the "qgroundcontrol.pro" in "Spiri/SpiriGroundControlTest" folder by using the QT creator +* click "build" and "run" \ No newline at end of file diff --git a/Spiri/config/.gitkeep b/Spiri/config/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/Spiri/data/.gitkeep b/Spiri/data/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/Spiri/model/spiri.mesh b/Spiri/model/spiri.mesh new file mode 100644 index 0000000000000000000000000000000000000000..0137c2e6555435c789c0387c4d82ca722f712107 GIT binary patch literal 780564 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�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 z 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�aTgVf+b*J#{q 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 kKc7sv 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%0D;nOag^6!>;Or|W;QHA+0%>b2 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

|S1MHhH(UCmj} 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 CwV!GL literal 0 HcmV?d00001 diff --git a/Spiri/resources/images/Spiri_black_320.jpg b/Spiri/resources/images/Spiri_black_320.jpg new file mode 100644 index 0000000000000000000000000000000000000000..634568ad37705247e61d098ccb35545ec4dd5edd GIT binary patch literal 83209 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%0Dx0WYt+-u<{6Ib3!Z+bhr9pT1f}!-kmvomMV4mA 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 F`%i;UgpvRN literal 0 HcmV?d00001 diff --git a/Spiri/resources/images/Spiri_black_bl.ico b/Spiri/resources/images/Spiri_black_bl.ico new file mode 100644 index 0000000000000000000000000000000000000000..cb0f00bd7c96fe03432ddeea5497dff689f45895 GIT binary patch literal 179470 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 ZMt3PmXe|u0N3oUta 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/MissionManager/UnitTest/PolygonBadXml.kml src/MissionManager/UnitTest/PolygonBadCoordinatesNode.kml src/comm/MockLinkOptionsDlg.qml - src/qgcunittest/TranslationTest.json - src/qgcunittest/TranslationTest_de_DE.ts - - - src/comm/MockLinkOptionsDlg.qml diff --git a/Vagrantfile b/Vagrantfile index a57ab79..4b41ae5 100644 --- a/Vagrantfile +++ b/Vagrantfile @@ -1,38 +1,21 @@ # -*- mode: ruby -*- # vi: set ft=ruby : +# if you update this file, please consider updating .travis.yml too + require 'yaml' current_dir = File.dirname(File.expand_path(__FILE__)) configfile = YAML.load_file("#{current_dir}/.vagrantconfig.yml") +travisfile = YAML.load_file("#{current_dir}/.travis.yml") yaml_config = configfile['configs']['dev'] -env_global = [ - 'JOBS=4', - 'SHADOW_BUILD_DIR=/tmp/shadow_build_dir', - 'CODESIGN=nocodesign', -] - -packages = [ - 'build-essential', - 'fuse', - 'git', - 'libgstreamer-plugins-base1.0-dev', - 'libgstreamer1.0-0:amd64', - 'libgstreamer1.0-dev', - 'libsdl2-dev', - 'libudev-dev', - 'speech-dispatcher', - 'wget' -] - - Vagrant.configure(2) do |config| # This trick is used to prefer a VM box over docker config.vm.provider "virtualbox" config.vm.provider "vmware_fusion" - config.vm.box = "ubuntu/jammy64" + config.vm.box = "ubuntu/bionic64" config.vm.provider :docker do |docker, override| override.vm.box = "tknerr/baseimage-ubuntu-16.04" end @@ -81,8 +64,6 @@ Vagrant.configure(2) do |config| apt-get install -y python3-pip su - vagrant -c "pip3 install --user aqtinstall" - apt-get install -y patchelf - dir="%{qt_deps_unpack_dir}" version="5.15.2" host="linux" @@ -92,8 +73,6 @@ Vagrant.configure(2) do |config| su - vagrant -c "mkdir -p ${dir}" su - vagrant -c "python3 -m aqt install-qt -O ${dir} ${host} ${target} ${version} -m ${modules}" - mkdir -p /vagrant/shadow-build - # write out a pair of scripts to make rebuilding on the VM easy: su - vagrant -c "cat <do-qmake.sh #!/bin/bash @@ -122,10 +101,6 @@ MAKE " su - vagrant -c "chmod +x do-qmake.sh do-make.sh" - # increase the allowed number of open files (the link step takes a - # lot of open filehandles!): -echo '* soft nofile 2048' >/etc/security/limits.d/fileno.conf - # now run the scripts: su - vagrant -c ./do-qmake.sh su - vagrant -c ./do-make.sh @@ -137,8 +112,8 @@ echo '* soft nofile 2048' >/etc/security/limits.d/file :qt_deps_tarball => yaml_config['qt_deps_tarball'], :pro => yaml_config['pro'], :spec => yaml_config['spec'], - :apt_pkgs => (packages).join(' '), - :build_env => env_global.select { |item| item.is_a?(String) }.join(' '), + :apt_pkgs => (travisfile['addons']['apt']['packages']+['git', 'build-essential', 'fuse', 'libsdl2-dev']).join(' '), + :build_env => travisfile['env']['global'].select { |item| item.is_a?(String) }.join(' '), :project_root_dir => yaml_config['project_root_dir'], :qt_deps_unpack_parent_dir => yaml_config['qt_deps_unpack_parent_dir'], diff --git a/android.pri b/android.pri index 43dbbf9..3965065 100644 --- a/android.pri +++ b/android.pri @@ -1,71 +1,24 @@ +include($$PWD/libs/qtandroidserialport/src/qtandroidserialport.pri) +message("Adding Serial Java Classes") QT += androidextras -include($$PWD/libs/qtandroidserialport/src/qtandroidserialport.pri) +ANDROID_PACKAGE_SOURCE_DIR = $$PWD/android -ANDROID_PACKAGE_SOURCE_DIR = $$OUT_PWD/ANDROID_PACKAGE_SOURCE_DIR # Tells Qt location of package files for build -ANDROID_PACKAGE_QGC_SOURCE_DIR = $$PWD/android # Original location of QGC package files -ANDROID_PACKAGE_CUSTOM_SOURCE_DIR = $$PWD/custom/android # Original location for custom build override package files +exists($$PWD/custom/android) { + message("Merging $$PWD/custom/android/ -> $$PWD/android/") -# We always move the package files to the ANDROID_PACKAGE_SOURCE_DIR build dir so we can modify the manifest as needed + ANDROID_PACKAGE_SOURCE_DIR = $$OUT_PWD/ANDROID_PACKAGE_SOURCE_DIR + android_source_dir_target.target = android_source_dir + PRE_TARGETDEPS += $$android_source_dir_target.target + QMAKE_EXTRA_TARGETS += android_source_dir_target -android_source_dir_target.target = $$ANDROID_PACKAGE_SOURCE_DIR/AndroidManifest.xml -android_source_dir_target.commands = \ - $$QMAKE_MKDIR $$ANDROID_PACKAGE_SOURCE_DIR && \ - $$QMAKE_COPY_DIR $$ANDROID_PACKAGE_QGC_SOURCE_DIR/* $$ANDROID_PACKAGE_SOURCE_DIR -PRE_TARGETDEPS += $$android_source_dir_target.target -QMAKE_EXTRA_TARGETS += android_source_dir_target -exists($$ANDROID_PACKAGE_CUSTOM_SOURCE_DIR/AndroidManifest.xml) { - android_source_dir_target.depends = $$ANDROID_PACKAGE_CUSTOM_SOURCE_DIR/AndroidManifest.xml -} else { - android_source_dir_target.depends = $$ANDROID_PACKAGE_QGC_SOURCE_DIR/AndroidManifest.xml + android_source_dir_target.commands = $$QMAKE_MKDIR $$ANDROID_PACKAGE_SOURCE_DIR && \ + $$QMAKE_COPY_DIR $$PWD/android/* $$OUT_PWD/ANDROID_PACKAGE_SOURCE_DIR && \ + $$QMAKE_COPY_DIR $$PWD/custom/android/* $$OUT_PWD/ANDROID_PACKAGE_SOURCE_DIR && \ + $$QMAKE_STREAM_EDITOR -i \"s/package=\\\"org.mavlink.spiri\\\"/package=\\\"$$QGC_ANDROID_PACKAGE\\\"/\" $$ANDROID_PACKAGE_SOURCE_DIR/AndroidManifest.xml + android_source_dir_target.depends = FORCE } -# Custom builds can override android package file - -exists($$ANDROID_PACKAGE_CUSTOM_SOURCE_DIR) { - message("Merging$$ $$ANDROID_PACKAGE_QGC_SOURCE_DIR and $$ANDROID_PACKAGE_CUSTOM_SOURCE_DIR to $$ANDROID_PACKAGE_SOURCE_DIR") - - android_source_dir_target.commands = $$android_source_dir_target.commands && \ - $$QMAKE_COPY_DIR $$ANDROID_PACKAGE_CUSTOM_SOURCE_DIR/* $$ANDROID_PACKAGE_SOURCE_DIR && \ - $$QMAKE_STREAM_EDITOR -i \"s/package=\\\"org.mavlink.qgroundcontrol\\\"/package=\\\"$$QGC_ANDROID_PACKAGE\\\"/\" $$ANDROID_PACKAGE_SOURCE_DIR/AndroidManifest.xml -} - -# Insert package name into manifest file - -android_source_dir_target.commands = $$android_source_dir_target.commands && \ - $$QMAKE_STREAM_EDITOR -i \"s/%%QGC_INSERT_PACKAGE_NAME%%/$$QGC_ANDROID_PACKAGE/\" $$ANDROID_PACKAGE_SOURCE_DIR/AndroidManifest.xml - -# Update manifest activity intent filter as needed - -QGC_INSERT_ACTIVITY_INTENT_FILTER = "" -AndroidHomeApp { - # QGC is the android home application - QGC_INSERT_ACTIVITY_INTENT_FILTER = $$QGC_INSERT_ACTIVITY_INTENT_FILTER "\r\n\r\n" -} -!contains(DEFINES, NO_SERIAL_LINK) { - # Add usb device support - QGC_INSERT_ACTIVITY_INTENT_FILTER = $$QGC_INSERT_ACTIVITY_INTENT_FILTER "\r\n\r\n\r\n" -} -contains(DEFINES, QGC_ENABLE_BLUETOOTH) { - QGC_INSERT_ACTIVITY_INTENT_FILTER = $$QGC_INSERT_ACTIVITY_INTENT_FILTER "\r\n\r\n" -} -android_source_dir_target.commands = $$android_source_dir_target.commands && \ - $$QMAKE_STREAM_EDITOR -i \"s//$$QGC_INSERT_ACTIVITY_INTENT_FILTER/\" $$ANDROID_PACKAGE_SOURCE_DIR/AndroidManifest.xml - -# Update manifest activity meta data as needed - -contains(DEFINES, NO_SERIAL_LINK) { - # No need to add anything to manifest - android_source_dir_target.commands = $$android_source_dir_target.commands && \ - $$QMAKE_STREAM_EDITOR -i \"s///\" $$ANDROID_PACKAGE_SOURCE_DIR/AndroidManifest.xml -} else { - # Updates the manifest for usb device support - android_source_dir_target.commands = $$android_source_dir_target.commands && \ - $$QMAKE_STREAM_EDITOR -i \"s//\r\n\r\n/\" $$ANDROID_PACKAGE_SOURCE_DIR/AndroidManifest.xml -} - -# OTHER_FILES makes the specified files be visible in Qt Creator for editing - exists($$PWD/custom/android/AndroidManifest.xml) { OTHER_FILES += \ $$PWD/custom/android/AndroidManifest.xml @@ -92,6 +45,7 @@ OTHER_FILES += \ $$PWD/android/src/org/freedesktop/gstreamer/androidmedia/GstAhsCallback.java \ $$PWD/android/src/org/freedesktop/gstreamer/androidmedia/GstAmcOnFrameAvailableListener.java + DISTFILES += \ $$PWD/android/gradle/wrapper/gradle-wrapper.jar \ $$PWD/android/gradlew \ @@ -99,12 +53,3 @@ DISTFILES += \ $$PWD/android/build.gradle \ $$PWD/android/gradle/wrapper/gradle-wrapper.properties \ $$PWD/android/gradlew.bat - -SOURCES += \ - $$PWD/android/src/AndroidInterface.cc - -HEADERS += \ - $$PWD/android/src/AndroidInterface.h - -INCLUDEPATH += \ - $$PWD/android/src diff --git a/android/AndroidManifest.xml b/android/AndroidManifest.xml index 15c35bc..7fc431b 100644 --- a/android/AndroidManifest.xml +++ b/android/AndroidManifest.xml @@ -1,5 +1,5 @@ - - + + @@ -14,12 +14,15 @@ - - + + + + + - - - + + + @@ -95,10 +98,9 @@ - + - diff --git a/android/res/drawable-hdpi/icon.png b/android/res/drawable-hdpi/icon.png index f6323cd90f2f6323161df8f449a9f811ff5a071f..490d9ac47b30dc639364ef4ff1d143643672ec8a 100644 GIT binary patch literal 1499 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 M07*qoM6N<$f-jib9RL6T literal 20526 zcmeI4c|4Tg`|xi|_K-D6jU^;wW-Ox_W8V|9g;I=}F(%81(O4p~r>sR0X|Y7Kp@dR| zl09XYC?R|z$^ILyKJ)1_&-e9ve$VT9JGosV96rT8B5K#xw+&?v@ZWmJpAXD?28cT@Q0+`Od|< z+~LtG0kTHBZD+jJ*yvwQDC_EaH$2?Ar$*->`nhe;3jT>>mF=?od@yQhZuZT?w^E^s zhe8dRzrK0$;`83@t<6d7;m*D9;|-VYajq_jwM*0(JD1tX2@F~A9gWjVJ3XVAEfJ%W zwDakXwpHxg0r^EHjR6(l))5Vcz(jD~Aq>+O6B%ARQq|iz0GKW(K7J|7#uVZjHrPyF zozh%3%-R8jxELoL1%ShPQVQ13?`qbu0f1gssN5}W(a(=J%U7{%eY~OfG3SyKJX}Yr z=7|ok4hJ@5tGCn68z*&SBO7mt$vHt@YKbXVS-3_fdvPl~vANH!?!~i!X3KmmTM^36 ztXj~4HaW^g`bCmF{kd?Dhi_+ukxzE~;HvuFVe36n$>BbenWYmkkR*tEJgBO=Pd z;6b8VJ)n4UDYC*4b~f~mh5Adb65X;q)h*!$S2$a+Bv@L!P*!@2ckveW)9}k9Ed{PT z-SHZ_bAi(YiHJJln2@>rM#(|U6q|F+~SFhL~@=VZZ&Harpi_9c z)bgf9R35*wZyKU8Ovue9m!h&pGLH zqH+-H>-jnP{rQ|WGd2y@@z)Pq1r-_CC|M0%XMdSeV3VJ*Z`?}M3V&TKFDf6ON3_D!H6$B)UCpI;U$k5$jV zei@;wv`5MIuI0>G7fsfo^GCm4B$=^~$mXWb1fS{`nA-Vvr)ZAy-ZB`@!7V=}HN~#L zsKBDYaJ&*;G?AN;Q>kBWzZlA`UAITZLB?D@txrVIrfvK6`m0X z5cb)2HU|#fH7Lv|-0`ZsusnBDZkbuKSwZG2eD$qQrO!&Q-xIm@u9KywsMMo02#t3Z z#@~BdR6UtonH=;W=*+S@>&B=q?gFs`V!=Me-U7(|$o{mZi<6o`Pd}%OLhyFYyv?0T zL#6x;J8K9TR_X1Acwu~*PuNU!Y>dgt28C1&g>=!{zWU1HJ*3&AhXw=MW;4?7razg; z>$y1zpCn91^E$b-nHzi+8P>oR`i)-3D$1o9mi~;!8#(As9%aZQ<)% z_p-_PbLc5yjV~JBmxeTkP^$fk{q~M8RIBdQ-)k_hCT2QD4CtPaT*a;ithNHVAv+lG zOfjL_p$8ckzXlu^e-x*Q?7@Ax(>0-eI;%`uP&@u);mLQ83&maQKPD84&yAdKN^Bx< zN9+s!@T!Fs{T>}#9n2*Y5fxz@sTt=LZMUTrma0N-?bY=e&|A<;(d$pg!^{yk!FyEX zH1ZXWpt@BbC_m7wRdBI?(P5WiXY6jW6`>$k1ow1*IIuJ^6ZJOZE$2|6@Oeo6Aus>S zO;0{Y92`N=!tIQ*Z8J;6&rTH&qHow^Qk+svko zIB~tzQLr@>_`(^u$bNZ${R-zcTh+DdpL#!H|&bs&vFBG|5T}* zM~8XAgl%e3aHVvBsaxpb$InkbE@5yR=d|H?7ZEhx`+DM#xgErQpai`TnIWnn7;~yf zphq}W@If*ziw(h-+DQ9IyL!` z$MNjtv8r*An?1EpYPUUn=BETZ{CWT4#A9+VS#0X+0FU|banK3bRoD63vsNv+i^(F% z$*asv=Vz8MO5h#JqLbk{1#JA(P1pWF-Zn zHy#2*AP^9!B1BOUOsN6(@%JR5{lK0+lHZ;D^rMIK!FUtANCcuMXw5I$ndnPWmylQs z^y~Q1E)TC?fjoVFu%l3f_@TWZFa;>&PexeGFB>mkZ})GvhQ&Z|?l=#eC&`Cm2m7O) z*U!!WFY~{J{H6Zaz?42QHT|>k&-?Z8_+w}vlKwFYf*(l#7WSv5kF~!S4q}P(A^Lh_ zaQeq6O_BUl>q!Kc-<|U}PivZgy?2}+;a|+wG~dm>4TbMLgrc++sq2kHlZf8dM54RK z_fhuy`HAxQv^J_hvZiPZ!E^1QY9|UpZS=dxfBVDfp-DImiY*)rRi^w|!<3Oqsz~T= z$~6)SUFYO`O)4LzL@dF@f1MANH6N5wt%yJ>t@-=qV_i*ZACwt{MU&9~k(c##*ZIL> zkS;`T4>U=G;DN^DAYPt$6y$f|x|+Yn6;hYzPV}bS7EVJ61^H9)AFU`)s{6h_sA~9F z8tQyJe1RM@lRDi8_v##DcKi|eI(%937g!aVXjP*1q1quWL7U`^vfxEb1ohisL zP_Qyq83*32y4xA-0z;!!RiPM!k~8jGXPBC>8U}~Lm0i$S6~y;mrvzH(>>q*5y$O^IigsUDXRR$* zN-!5C<=s#fC1DsarNw*0}(KSCK1d?@4If8Bhb z%!+S0(h7I<@1;K#?u2i-&I|4BgIk-)>JmSv@~`ChEBCG0e9H((G-fSJYGBqT8V-ws z{H^r&ZT+(RVMh38cm8JxzWZNi{_io!t~gIx)AYNmZ?*p2i4W0*L`Hk#wDFV?@}K39 z?|%PoNF4wLSzA}!3I7MW!Uuiqf3G8;FjX8Dp@aZKl`sg(SX5L6BV3?LU>9YKGG!>D zan4GJpB??*?Fbb(k}{Qk zFZ%BLZ2Ws>{JC=cGn1m$wkb$T7N%qb^tbFsS;hWQ_IuQPuWz@OP2GLJ*M~#b4$5wp za{RDeucx-P|6kay*Hhd6Hns62kTev3grh26XSKGQ`o7RxQ8xZK4NBvvi>PbwBlzLm z?eqwgRn%u~HBjFD!-iV%M??F6GhCl+8coxdZa+!Q&sP_17Bo zKY8)HMgNmtseI9cPywMW(s9w|L#3tTq5?u&q~oH^he}JwMFoVmNXJE+50#dViwX#B zk&cTtA1W;!7ZniNA{`fPK2%ydE-E0jMLI6pe5kZ^TvR}4i*#JH`A});xTt{87U{TX z^P$qxaZv%GEz)t(=0l~WA0wX&=%>qX!D`c(s5A% zp)JyJ(dI*?rQ@OkLR+NcqRod&OUFe8gtkb>MVk+mmX3=G2yKxjE{@-?^5Q%x@9&Z+ zFX}!?+2%rd$rpq%vNQ#NfE@r35(WVCtCaI70QgcqOf%*L0Lb$IAWTehd}=`XG>yHn zp0>4L_sa|ZB%2Pw+7o0yjI?6q>2NJ0P+EeWggwWeP{xv-9Cqd}Dk9P-TjpLs&$KkV|;&egu%eftvf%!i?fxr^+ZbF(F6 z`a+~@L-w=C?1OnT>~Ukga!FP8xmJ=LP$9*n$>6+b>CGI*uy~zspTP0SOX1B)h|N(O z2AMy~yeNKjDK`57$KvaeePY~t#38LP*3BGC*2i-5`q9G7E%lvo7j^hW_f{=LeY&8` zA>6X`CAho4|ID&0LtHJNL$So$DD=w@O|yeuzOTAN&&4Pvw3vJbv315})a(x2nnPX* zmvX!ParY_z`SjxV9}U9T`#xZ~?nm6W5Bp3T%S zc7k6>sB?=TKN2n{eYVHtj87)ydSmy(w8BJYhN0zxF-VW4B0%|}Mf`-Fcx_J|@113s zfXvIjMU?5m!*!dJPOm#cFf)FMfj#fS9M6_}?o}g($?U-+n=0N$ zwWK(jv=50C6B}wTXX;C{S@1`rP+Kjg9YmwfoZeh6?la#tueAT-O}T>D3NFU{P7f1# zw!HjPZSLrnF@0CvC0B=e@r}g7IyHjCVBn=XUd`}@5;a-#im3M|f#ju_FiDz_$%{@if#scy0~udvm2B|8iesoOW!%eZK0KqMtHVB1OewIHO!NpOE%BJL>`4p&8|z$^!P|q%Gd}HH*4km>IUXy+GR798|b&D8QK6S6sit zO=_`f6R(!XJ)MJU{hWA7cBkMm@JDb2^GXn`c3Ad>D9^sdzpOrlMe=`|KX6jWO!qqR zvdc<<9ADe@N)Hh^g}7~M>7QGQ@o5_KAh(oO?BPyFPYu*KSc{o>5xZ)tpm*9TNF!W?ECB6criKJSgv} z#lfY;!L8NeRyBW!dBgdoBaZzKi)$O|5vc8?7->Uv{u$Q${rJ5J(az2dAPM+ zYrOW*edtiRt56bGqdD>Efn@WlHq!ANY3Ht>lWE0I^BS|ZXGCu$jD0l7SlzyIro^TF z;wKZs;sf12>WH_G4X5Nq&-30j-g^}jytyzD`sgcVacTYI7lN@LX+$b;!yR@oB76<6(V zC#CkK*ZEpriw61PjtIdpAiF?Z_X*R-Wy!2OHUlwIXWn9C0CVAK1r4FaF1h^Rk}c0( zN3SeM9e}S2o75^uwS#K3w%?lD`~aTC5zXR-6l~>Zu$L@YmIRRkv|9)Xl8kEAPewuh z$DM<_KOUW(@YpY)ubqOkDLB`4U)o2{Lti)EbkJ?PW+p%1Cf>Q!fuiPyXBrt!9CO6k z@W*YvaWiNM$D%fa`UGyUetfx41Rbxf#|LGkfk zV>6>41t(uK;JEVU_CV`siAMn(vZ9FV^&Q|7 z)`z(d<(eORu{2xrSFA@4TyQHy#9N3e#5xA|DK=*$BGk=a#vBsAB%3j<%{a| zP8?Thb1F3BZ}+Wu_+Wmo55}ZQP#pN{OSjmzY6V}Nw_p8Da;CJK7ZLx3D{& zxVcTKK@{Ttn#V!4JM2Y}U-!fE5z~jhp!m%n;fAek{%(gh)HTl@Yj>1=dcjhdks-+D z7^>XMNUxY+PICAAthFftyVL3Ui}aIeW8f}*nTEi-Pu+P(>j;fL@fGt!qu1l;!j-ftF zELpWd;^IuwpiW)wyP7lICqGhdn(Kx7@%IZFV|Hs>iB+!7$0a+-(N(!xpH$c$GJmzZ zHnaJ}go=@q*qg7?m~)@y*HgZ`U2029(!*~c@?lpMOFDrP&c-?qQ-NQi{b;)Ct` zLWFw@mPbhak}|FSJF>}-wi|8gyL|8+OZo=vm$P;&s(^iz*YL+D??u->yJD}N9=qA z7clG5q_b*{9}$AAp6iWO(?We9Lxt=!u6+3IbmYuaXNBj%?XynaM3 zWWwcCYGGc1r1A0bJ&EUrGkX$f{Jmgfm8)mpN(g-A3 zU1WVbt}A2W>>Ij<`PK(xDO*})NElkOBqj+PPp_Gry_rv~;X}zR zJuc8PLTAT($IutQ$wd7!S{LSI@klz(Gk+rVdut&Kf{992=Q9f^itr3R))&YZ(hMHN zuWL0D2AFEeZEP40-k?HRaK9yIfY<3ei&nvTtygVMu=5L|_2~3~ooL-NqgBBWwCNU$~1m;-`@iokMXrm=`t7+;6RT1xRlh?#?9x#`wf zXL7&l_rcvk3BHlHrXvc|4=`m*DYFA%xiKoN#mz0Qn!D(DwFgGl{3CJZShDYxb3HzL zf!oq~kKypZPB9e&+5Rvc22oaC?WIkCv^C2Wu8b1oeMZaTVq(7Z?lgN>As%#ZY^NA- z3zymxcjSl&3XRDTxZvA4hGj{;5Z=)AsrZ9UnQVd-bcVzg0@Ch;zH)Z5W-@v*7ImXk zMdP^;n@O&21hbsPQ&H5Kx9?ymqMxs=tyf2CNkBkbo?BjmVg6*qg`?b9hSfn29uF^? z1O2ne9~{yx$c|wp(>Tb^(Pm0Q+`zTX6=FtpJ*uc?ar0M2HEJud)7`rdg8fmNMRGGt z6osm9cj-`$Cdf%rmM6lVU!js;ud5ePr~7u5@XKh;wR*OMaAGU zgB9KBZlBWl`#}`POLKGYY&;&nQmj}#F*!C?qa+6cJ_D*+viM~}1Mw%VX=TdyeMuDs zc|ActE*Qwg;XG{oR=-gK1&p9s2b%`uBnc3Z+({oFl<|H(Kaa@i0|8*^>WPxZ@3juS zL8~j2HSy<$G<}|bv#->Fx%x`1uaSx=BefVe;l4A)1#qNnH4a zGkqGm|26FrSw`kwe3H~vy!S=X1Tl5ruah4w1>1wf{$@iD{VXQhhF%frp^%*JHbl^B zx2C4WUBPyw(AVjOPK=f5H#RSF%A5>MU(tzC+`cGaJ zeUF2?LncA&^5gOkJwf}Sj2ReeKd-X#dQuN!q9&pZdq)8RfhY-eH(q~Yij8B*tts?! z`Q5y;6B?cWvAi5m`67{?F}oosBnar323|5dYhTYTlboKK`a0RS%HC2IzVs067B6ot zJ(N#!+74K}tF{hB5Jm@Fn_%-RX_o>KxEoWAzlHS{9Gxwat>St!Pg|p4!>Mhq!eV!_ zE+uKy)I^0=->!zFqHr{ymrJH&jdoF8$fpAnEV`>B!K#@#w=W1;!9Xy7&_78UW=n=I~r zK62tHPydeWd02FUPT{8J5=@WNfal#gxQ7vcot@EhjYPsO$6ieCP*5`V>B5t;RogPB zR=x|GWb~SyU#&wSB7gtO6-H1^w`)j_;zSb(W|`RqpL+>QoM1>;mj6(g+I}}*eVb*u zN7Sb$A@Q6DwQJL}z{poDU$3eyzHhli+r~8}1}r9!piw%roSvVyHjJ}o$uZMxtZ)7VkH<{3L z9SqQdcGm7Bs8w38OMJsC5D;4F%U_p#`oHJ$A1vAv&eHDZ`f0o4aP$`dCI)c*Qau;U FzX1pG4o?68 literal 23838 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 OOe!m=%NNO--TN=dS;p`H diff --git a/android/res/drawable-xxhdpi/icon.png b/android/res/drawable-xxhdpi/icon.png index f74d76f41f81bf844e0b2875f36e94003acc6474..39e7e39ebc87769056d5c611ebb1ff63c46d780a 100644 GIT binary patch literal 3379 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 akC?A5p~Q8SzFvGmfS$H7qEhQ_^gjVNgIgB> literal 27649 zcmeIb1yr2P^6)uGZ~{R>a1RcHy99T43GVI?g1bY|K=2^J-5r7ig1fs*u;B1bUccOX z+5h?W+p}l)Fb9~auCA)5f8AZ({me`fEGsR72!{m+000ohLNH-%Sf zK~JzYqH6X4fP}`cU$Db;iXs32PR3L~Kvveo+QHi1#M*{HOhACZ#?IQv)WQ$|aG6O_ zFjiF9e#w2laLO+cNFbMIYjB?Cg2w(W| zUM%@`cXlnW(eio2k=Ou`VJZv=?Qe;}02dxyTvSA@(9Hlamr-~aK&w=8D-b8}9%+aF zqb8V_A6TnHG@AsB7aD-?T?Bs)fKM3AD<$!@0w5g{pwp+Xw+fJ@0qBr@}~emx&d^0h>2YQejfp7!pACHM^wego0K3@AIrJwNZ5tEHDG9Lp;c69@yG|n zFsRU2bis9#_-NZ*KVmX?Ga)UV^aB9t(deMop4_?&JTD#?V2P-Hu1&Mk0(DQMr?+~y zK3HJG2LLQPcnsfB(^X)3aYA`n-er;=K$^UTPj@^IH7ZBqs{*8N�W({9+@N5mh%m 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�W({9+@N5mh%m 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 -#include -#include "QGCApplication.h" -#include "AndroidInterface.h" -#include -#include - -QString AndroidInterface::getSDCardPath() -{ - QAndroidJniObject value = QAndroidJniObject::callStaticObjectMethod("org/mavlink/qgroundcontrol/QGCActivity", "getSDCardPath", - "()Ljava/lang/String;"); - QString sdCardPath = value.toString(); - - QString readPermission("android.permission.READ_EXTERNAL_STORAGE"); - QString writePermission("android.permission.WRITE_EXTERNAL_STORAGE"); - - if (QtAndroid::checkPermission(readPermission) == QtAndroid::PermissionResult::Denied || - QtAndroid::checkPermission(writePermission) == QtAndroid::PermissionResult::Denied) { - QtAndroid::PermissionResultMap resultHash = QtAndroid::requestPermissionsSync(QStringList({ readPermission, writePermission })); - if (resultHash[readPermission] == QtAndroid::PermissionResult::Denied || - resultHash[writePermission] == QtAndroid::PermissionResult::Denied) { - return QString(); - } - } - - return sdCardPath; -} diff --git a/android/src/org/mavlink/qgroundcontrol/QGCActivity.java b/android/src/org/mavlink/qgroundcontrol/QGCActivity.java index c46192b..14fb760 100644 --- a/android/src/org/mavlink/qgroundcontrol/QGCActivity.java +++ b/android/src/org/mavlink/qgroundcontrol/QGCActivity.java @@ -38,7 +38,6 @@ import java.util.concurrent.Executors; import java.util.Timer; import java.util.TimerTask; import java.io.IOException; -import java.lang.reflect.Method; import android.app.Activity; import android.app.PendingIntent; @@ -59,8 +58,6 @@ import android.app.PendingIntent; import android.view.WindowManager; import android.os.Bundle; import android.bluetooth.BluetoothDevice; -import android.os.storage.StorageManager; -import android.os.storage.StorageVolume; import com.hoho.android.usbserial.driver.*; import org.qtproject.qt5.android.bindings.QtActivity; @@ -765,34 +762,5 @@ public class QGCActivity extends QtActivity } }).start(); } - - public static String getSDCardPath() { - StorageManager storageManager = (StorageManager)_instance.getSystemService(Activity.STORAGE_SERVICE); - List volumes = storageManager.getStorageVolumes(); - Method mMethodGetPath; - String path = ""; - for (StorageVolume vol : volumes) { - try { - mMethodGetPath = vol.getClass().getMethod("getPath"); - } catch (NoSuchMethodException e) { - e.printStackTrace(); - continue; - } - try { - path = (String) mMethodGetPath.invoke(vol); - } catch (Exception e) { - e.printStackTrace(); - continue; - } - - if (vol.isRemovable() == true) { - Log.i(TAG, "removable sd card mounted " + path); - return path; - } else { - Log.i(TAG, "storage mounted " + path); - } - } - return ""; - } } diff --git a/backup-Jenkinsfile b/backup-Jenkinsfile new file mode 100644 index 0000000..54d9f38 --- /dev/null +++ b/backup-Jenkinsfile @@ -0,0 +1,345 @@ +pipeline { + agent none + stages { + + stage('build') { + parallel { + + stage('Android 32 bit Release') { + environment { + CCACHE_BASEDIR = "${env.WORKSPACE}" + CCACHE_CPP2 = '1' + QGC_CONFIG = 'release' + QMAKE_VER = "5.12.5/android_armv7/bin/qmake" + QT_MKSPEC = "android-clang" + BITNESS=32 + } + agent { + docker { + image 'mavlink/qgc-build-android:2019-11-12' + args '-v ${CCACHE_DIR}:${CCACHE_DIR}:rw' + } + } + steps { + sh 'export' + sh 'ccache -z' + sh 'git submodule deinit -f .' + sh 'git clean -ff -x -d .' + sh 'git submodule update --init --recursive --force' + sh 'mkdir build; cd build; ${QT_PATH}/${QMAKE_VER} -r ${WORKSPACE}/qgroundcontrol.pro CONFIG+=${QGC_CONFIG} CONFIG+=WarningsAsErrorsOn' + sh 'cd build; make -j`nproc --all`' + sh 'ccache -s' + } + post { + cleanup { + sh 'git clean -ff -x -d .' + } + } + } + + stage('Android 64 bit Release') { + environment { + CCACHE_BASEDIR = "${env.WORKSPACE}" + CCACHE_CPP2 = '1' + QGC_CONFIG = 'release' + QMAKE_VER = "5.12.5/android_arm64_v8a/bin/qmake" + QT_MKSPEC = "android-clang" + BITNESS=64 + } + agent { + docker { + image 'mavlink/qgc-build-android_arm64_v8a:2019-11-12' + args '-v ${CCACHE_DIR}:${CCACHE_DIR}:rw' + } + } + steps { + sh 'export' + sh 'ccache -z' + sh 'git submodule deinit -f .' + sh 'git clean -ff -x -d .' + sh 'git submodule update --init --recursive --force' + sh 'mkdir build; cd build; ${QT_PATH}/${QMAKE_VER} -r ${WORKSPACE}/qgroundcontrol.pro CONFIG+=${QGC_CONFIG} CONFIG+=WarningsAsErrorsOn' + //sh 'cd build; make -j`nproc --all`' // FIXME + sh 'ccache -s' + } + post { + cleanup { + sh 'git clean -ff -x -d .' + } + } + } + + stage('Linux Debug') { + environment { + CCACHE_BASEDIR = "${env.WORKSPACE}" + QGC_CONFIG = 'debug' + QMAKE_VER = "5.12.5/gcc_64/bin/qmake" + } + agent { + docker { + image 'mavlink/qgc-build-linux:2019-11-12' + args '-v ${CCACHE_DIR}:${CCACHE_DIR}:rw' + } + } + steps { + sh 'export' + sh 'ccache -z' + sh 'git submodule deinit -f .' + sh 'git clean -ff -x -d .' + sh 'git submodule update --init --recursive --force' + sh 'mkdir build; cd build; ${QT_PATH}/${QMAKE_VER} -r ${WORKSPACE}/qgroundcontrol.pro CONFIG+=${QGC_CONFIG} CONFIG+=WarningsAsErrorsOn' + sh 'cd build; make -j`nproc --all`' + sh 'ccache -s' + } + post { + cleanup { + sh 'git clean -ff -x -d .' + } + } + } + + stage('Linux Debug (cmake)') { + environment { + CCACHE_BASEDIR = "${env.WORKSPACE}" + CMAKE_BUILD_TYPE = 'Debug' + QT_VERSION = "5.12.5" + QT_MKSPEC = "gcc_64" + } + agent { + docker { + image 'mavlink/qgc-build-linux:2019-11-12' + args '-v ${CCACHE_DIR}:${CCACHE_DIR}:rw' + } + } + steps { + sh 'export' + sh 'ccache -z' + sh 'make distclean' + sh 'make submodulesclean' + sh 'make linux' + //sh 'make linux check' // TODO: needs Xvfb or similar + sh 'ccache -s' + sh 'make distclean' + } + post { + cleanup { + sh 'git clean -ff -x -d .' + } + } + } + + stage('Linux Release') { + environment { + CCACHE_BASEDIR = "${env.WORKSPACE}" + QGC_CONFIG = 'release' + QMAKE_VER = "5.12.5/gcc_64/bin/qmake" + } + agent { + docker { + image 'mavlink/qgc-build-linux:2019-11-12' + args '-v ${CCACHE_DIR}:${CCACHE_DIR}:rw' + } + } + steps { + sh 'export' + sh 'ccache -z' + sh 'git submodule deinit -f .' + sh 'git clean -ff -x -d .' + sh 'git submodule update --init --recursive --force' + withCredentials([file(credentialsId: 'QGC_Airmap_api_key', variable: 'AIRMAP_API_HEADER')]) { + sh 'cp $AIRMAP_API_HEADER ${WORKSPACE}/src/Airmap/Airmap_api_key.h' + } + sh 'mkdir build; cd build; ${QT_PATH}/${QMAKE_VER} -r ${WORKSPACE}/qgroundcontrol.pro CONFIG+=${QGC_CONFIG} CONFIG+=WarningsAsErrorsOn' + //sh 'cd build; make -j`nproc --all`' // TODO: increase slave memory + sh 'cd build; make' + sh 'ccache -s' + } + post { + cleanup { + sh 'git clean -ff -x -d .' + } + } + } + + stage('Linux Release (cmake)') { + environment { + CCACHE_BASEDIR = "${env.WORKSPACE}" + CMAKE_BUILD_TYPE = 'Release' + QT_VERSION = "5.12.5" + QT_MKSPEC = "gcc_64" + } + agent { + docker { + image 'mavlink/qgc-build-linux:2019-11-12' + args '-v ${CCACHE_DIR}:${CCACHE_DIR}:rw' + } + } + steps { + sh 'export' + sh 'ccache -z' + sh 'make distclean' + sh 'make submodulesclean' + sh 'make linux' + sh 'ccache -s' + sh 'make distclean' + } + post { + cleanup { + sh 'git clean -ff -x -d .' + } + } + } + + stage('OSX Debug') { + agent { + node { + label 'mac' + } + } + environment { + CCACHE_BASEDIR = "${env.WORKSPACE}" + QGC_CONFIG = 'debug' + QMAKE_VER = "5.11.0/clang_64/bin/qmake" + } + steps { + sh 'export' + sh 'ccache -z' + sh 'git submodule deinit -f .' + sh 'git clean -ff -x -d .' + sh 'git submodule update --init --recursive --force' + sh 'mkdir build; cd build; ${QT_PATH}/${QMAKE_VER} -r ${WORKSPACE}/qgroundcontrol.pro CONFIG+=${QGC_CONFIG} CONFIG+=WarningsAsErrorsOn' + sh 'cd build; make -j`sysctl -n hw.ncpu`' + sh 'ccache -s' + } + post { + cleanup { + sh 'git clean -ff -x -d .' + } + } + } + + stage('OSX Debug (cmake)') { + agent { + node { + label 'mac' + } + } + environment { + CCACHE_BASEDIR = "${env.WORKSPACE}" + CCACHE_CPP2 = '1' + CMAKE_BUILD_TYPE = 'Debug' + QT_VERSION = "5.11.0" + QT_MKSPEC = "clang_64" + } + steps { + sh 'export' + sh 'ccache -z' + sh 'make distclean' + sh 'make submodulesclean' + sh 'make mac' + sh 'ccache -s' + sh 'make distclean' + } + post { + cleanup { + sh 'git clean -ff -x -d .' + } + } + } + + stage('OSX Release') { + agent { + node { + label 'mac' + } + } + environment { + CCACHE_BASEDIR = "${env.WORKSPACE}" + CCACHE_CPP2 = '1' + QGC_CONFIG = 'installer' + QMAKE_VER = "5.11.0/clang_64/bin/qmake" + } + stages { + stage('Clean Checkout') { + steps { + sh 'export' + sh 'ccache -z' + sh 'git submodule deinit -f .' + sh 'git clean -ff -x -d .' + sh 'git submodule update --init --recursive --force' + } + } + + stage('Add Airmap API key') { + steps { + withCredentials([file(credentialsId: 'QGC_Airmap_api_key', variable: 'AIRMAP_API_HEADER')]) { + sh 'cp $AIRMAP_API_HEADER ${WORKSPACE}/src/Airmap/Airmap_api_key.h' + } + } + when { + anyOf { + branch 'master'; + branch 'Stable_*' + } + } + } + + stage('Build OSX Release') { + steps { + sh 'mkdir build; cd build; ${QT_PATH}/${QMAKE_VER} -r ${WORKSPACE}/qgroundcontrol.pro CONFIG+=${QGC_CONFIG} CONFIG+=WarningsAsErrorsOn' + sh 'cd build; make -j`sysctl -n hw.ncpu`' + archiveArtifacts(artifacts: 'build/**/*.dmg', fingerprint: true) + sh 'ccache -s' + } + } + } + post { + cleanup { + sh 'git clean -ff -x -d .' + } + } + } + + stage('OSX Release (cmake)') { + agent { + node { + label 'mac' + } + } + environment { + CCACHE_BASEDIR = "${env.WORKSPACE}" + CCACHE_CPP2 = '1' + CMAKE_BUILD_TYPE = 'Release' + QT_VERSION = "5.11.0" + QT_MKSPEC = "clang_64" + } + steps { + sh 'export' + sh 'ccache -z' + sh 'make distclean' + sh 'make submodulesclean' + sh 'make mac' + sh 'ccache -s' + sh 'make distclean' + } + post { + cleanup { + sh 'git clean -ff -x -d .' + } + } + } + + } // parallel + } // stage('build') + } // stages + + environment { + CCACHE_DIR = '/tmp/ccache' + QT_FATAL_WARNINGS = '1' + } + + options { + buildDiscarder(logRotator(numToKeepStr: '10', artifactDaysToKeepStr: '30')) + timeout(time: 60, unit: 'MINUTES') + } +} diff --git a/build_ios.sh b/build_ios.sh new file mode 100755 index 0000000..ed58565 --- /dev/null +++ b/build_ios.sh @@ -0,0 +1,20 @@ +#!/bin/bash +if [ ! -d /Volumes/RAMDisk ] ; then + echo 'RAM Disk not found' + echo 'Only used for App Store builds. It will not work on your computer.' + exit 1 +fi +#-- Set to my local installation +QMAKE=/Users/gus/Applications/Qt/5.12.2/ios/bin/qmake +#-- Using Travis variables as this will eventually live there +SHADOW_BUILD_DIR=/Volumes/RAMDisk/build-qgroundcontrol-iOS-Release +TRAVIS_BUILD_DIR=/Users/gus/github/work/UpstreamQGC +#-- Build it +mkdir -p ${SHADOW_BUILD_DIR} && +cd ${SHADOW_BUILD_DIR} && +#-- Create project only (build using Xcode) +${QMAKE} -r ${TRAVIS_BUILD_DIR}/qgroundcontrol.pro CONFIG+=WarningsAsErrorsOn CONFIG-=debug_and_release CONFIG+=release CONFIG+=ForAppStore +sed -i .bak 's/com.yourcompany.${PRODUCT_NAME:rfc1034identifier}/org.QGroundControl.qgc/' ${SHADOW_BUILD_DIR}/QGroundControl.xcodeproj/project.pbxproj +#-- Create and build +#${QMAKE} -r ${TRAVIS_BUILD_DIR}/qgroundcontrol.pro CONFIG+=WarningsAsErrorsOn CONFIG-=debug_and_release CONFIG+=release CONFIG+=ForAppStore && +#xcodebuild -configuration Release -xcconfig ${TRAVIS_BUILD_DIR}/ios/qgroundcontrol_appstore.xcconfig diff --git a/custom-example/InstrumentValueIcons.qrc b/custom/InstrumentValueIcons.qrc similarity index 100% rename from custom-example/InstrumentValueIcons.qrc rename to custom/InstrumentValueIcons.qrc index 282ed41..7d5a381 100644 --- a/custom-example/InstrumentValueIcons.qrc +++ b/custom/InstrumentValueIcons.qrc @@ -1,301 +1,301 @@ - ../resources/InstrumentValueIcons/stethoscope.svg - ../resources/InstrumentValueIcons/inbox-check.svg - ../resources/InstrumentValueIcons/cheveron-up.svg - ../resources/InstrumentValueIcons/location-shopping.svg - ../resources/InstrumentValueIcons/cheveron-right.svg - ../resources/InstrumentValueIcons/bookmark.svg - ../resources/InstrumentValueIcons/travel-case.svg - ../resources/InstrumentValueIcons/user-solid-square.svg - ../resources/InstrumentValueIcons/arrow-simple-up.svg - ../resources/InstrumentValueIcons/list.svg - ../resources/InstrumentValueIcons/shuffle.svg - ../resources/InstrumentValueIcons/travel-walk.svg - ../resources/InstrumentValueIcons/checkmark.svg - ../resources/InstrumentValueIcons/trophy.svg - ../resources/InstrumentValueIcons/mood-happy-solid.svg - ../resources/InstrumentValueIcons/cog.svg - ../resources/InstrumentValueIcons/text-box.svg - ../resources/InstrumentValueIcons/video-camera.svg - ../resources/InstrumentValueIcons/backward-step.svg - ../resources/InstrumentValueIcons/view-column.svg - ../resources/InstrumentValueIcons/add-outline.svg - ../resources/InstrumentValueIcons/battery-low.svg - ../resources/InstrumentValueIcons/bookmark copy 2.svg - ../resources/InstrumentValueIcons/volume-down.svg - ../resources/InstrumentValueIcons/travel-taxi-cab.svg - ../resources/InstrumentValueIcons/camera.svg - ../resources/InstrumentValueIcons/apparel.svg - ../resources/InstrumentValueIcons/checkmark-outline.svg - ../resources/InstrumentValueIcons/envelope.svg - ../resources/InstrumentValueIcons/flag.svg - ../resources/InstrumentValueIcons/window-new.svg - ../resources/InstrumentValueIcons/arrow-simple-right.svg - ../resources/InstrumentValueIcons/filter.svg - ../resources/InstrumentValueIcons/minus-outline.svg - ../resources/InstrumentValueIcons/edit-cut.svg - ../resources/InstrumentValueIcons/volume-off.svg - ../resources/InstrumentValueIcons/zoom-in.svg - ../resources/InstrumentValueIcons/pin.svg - ../resources/InstrumentValueIcons/layers.svg - ../resources/InstrumentValueIcons/airplane.svg - ../resources/InstrumentValueIcons/view-tile.svg - ../resources/InstrumentValueIcons/location-marina.svg - ../resources/InstrumentValueIcons/border-top.svg - ../resources/InstrumentValueIcons/refresh.svg - ../resources/InstrumentValueIcons/travel-bus.svg - ../resources/InstrumentValueIcons/add-solid.svg - ../resources/InstrumentValueIcons/notifications.svg - ../resources/InstrumentValueIcons/indent-decrease.svg - ../resources/InstrumentValueIcons/badge.svg - ../resources/InstrumentValueIcons/align-center.svg - ../resources/InstrumentValueIcons/queue.svg - ../resources/InstrumentValueIcons/conversation.svg - ../resources/InstrumentValueIcons/inbox-download.svg - ../resources/InstrumentValueIcons/cloud.svg - ../resources/InstrumentValueIcons/text-decoration.svg - ../resources/InstrumentValueIcons/date-add.svg - ../resources/InstrumentValueIcons/network.svg - ../resources/InstrumentValueIcons/list-add.svg - ../resources/InstrumentValueIcons/film.svg - ../resources/InstrumentValueIcons/book-reference.svg - ../resources/InstrumentValueIcons/star-full.svg - ../resources/InstrumentValueIcons/information-outline.svg - ../resources/InstrumentValueIcons/user-group.svg - ../resources/InstrumentValueIcons/hard-drive.svg - ../resources/InstrumentValueIcons/chart-bar.svg - ../resources/InstrumentValueIcons/box.svg - ../resources/InstrumentValueIcons/music-notes.svg - ../resources/InstrumentValueIcons/bookmark copy 3.svg - ../resources/InstrumentValueIcons/anchor.svg - ../resources/InstrumentValueIcons/mood-sad-solid.svg - ../resources/InstrumentValueIcons/coffee.svg - ../resources/InstrumentValueIcons/mood-neutral-outline.svg - ../resources/InstrumentValueIcons/menu.svg - ../resources/InstrumentValueIcons/fast-rewind.svg - ../resources/InstrumentValueIcons/user-add.svg - ../resources/InstrumentValueIcons/mobile-devices.svg - ../resources/InstrumentValueIcons/time.svg - ../resources/InstrumentValueIcons/subdirectory-left.svg - ../resources/InstrumentValueIcons/window.svg - ../resources/InstrumentValueIcons/hand-stop.svg - ../resources/InstrumentValueIcons/beverage.svg - ../resources/InstrumentValueIcons/volume-mute.svg - ../resources/InstrumentValueIcons/reply-all.svg - ../resources/InstrumentValueIcons/location-food.svg - ../resources/InstrumentValueIcons/arrow-thin-left.svg - ../resources/InstrumentValueIcons/folder-outline.svg - ../resources/InstrumentValueIcons/dial-pad.svg - ../resources/InstrumentValueIcons/battery-half.svg - ../resources/InstrumentValueIcons/trash.svg - ../resources/InstrumentValueIcons/notification.svg - ../resources/InstrumentValueIcons/send.svg - ../resources/InstrumentValueIcons/station.svg - ../resources/InstrumentValueIcons/pen-tool.svg - ../resources/InstrumentValueIcons/gift.svg - ../resources/InstrumentValueIcons/arrow-outline-down.svg - ../resources/InstrumentValueIcons/ticket.svg - ../resources/InstrumentValueIcons/border-none.svg - ../resources/InstrumentValueIcons/format-italic.svg - ../resources/InstrumentValueIcons/user-solid-circle.svg - ../resources/InstrumentValueIcons/edit-pencil.svg - ../resources/InstrumentValueIcons/step-forward.svg - ../resources/InstrumentValueIcons/edit-copy.svg - ../resources/InstrumentValueIcons/globe.svg - ../resources/InstrumentValueIcons/arrow-thin-right.svg - ../resources/InstrumentValueIcons/inbox-full.svg - ../resources/InstrumentValueIcons/mood-sad-outline.svg - ../resources/InstrumentValueIcons/bug.svg - ../resources/InstrumentValueIcons/question.svg - ../resources/InstrumentValueIcons/dots-horizontal-double.svg - ../resources/InstrumentValueIcons/format-bold.svg - ../resources/InstrumentValueIcons/close-outline.svg - ../resources/InstrumentValueIcons/dots-horizontal-triple.svg - ../resources/InstrumentValueIcons/format-text-size.svg - ../resources/InstrumentValueIcons/computer-laptop.svg - ../resources/InstrumentValueIcons/arrow-thick-down.svg - ../resources/InstrumentValueIcons/cheveron-outline-down.svg - ../resources/InstrumentValueIcons/travel.svg - ../resources/InstrumentValueIcons/usb.svg - ../resources/InstrumentValueIcons/cheveron-down.svg - ../resources/InstrumentValueIcons/key.svg - ../resources/InstrumentValueIcons/tools copy.svg - ../resources/InstrumentValueIcons/album.svg - ../resources/InstrumentValueIcons/arrow-base-down.svg - ../resources/InstrumentValueIcons/copy.svg - ../resources/InstrumentValueIcons/align-left.svg - ../resources/InstrumentValueIcons/explore.svg - ../resources/InstrumentValueIcons/watch.svg - ../resources/InstrumentValueIcons/playlist.svg - ../resources/InstrumentValueIcons/pause-outline.svg - ../resources/InstrumentValueIcons/location-current.svg - ../resources/InstrumentValueIcons/home.svg - ../resources/InstrumentValueIcons/battery-full.svg - ../resources/InstrumentValueIcons/format-font-size.svg - ../resources/InstrumentValueIcons/exclamation-solid.svg - ../resources/InstrumentValueIcons/music-artist.svg - ../resources/InstrumentValueIcons/music-album.svg - ../resources/InstrumentValueIcons/chart-pie.svg - ../resources/InstrumentValueIcons/photo.svg - ../resources/InstrumentValueIcons/lock-open.svg - ../resources/InstrumentValueIcons/inbox.svg - ../resources/InstrumentValueIcons/hot.svg - ../resources/InstrumentValueIcons/browser-window-new.svg - ../resources/InstrumentValueIcons/zoom-out.svg - ../resources/InstrumentValueIcons/search.svg - ../resources/InstrumentValueIcons/backward.svg - ../resources/InstrumentValueIcons/store-front.svg - ../resources/InstrumentValueIcons/user.svg - ../resources/InstrumentValueIcons/lock-closed.svg - ../resources/InstrumentValueIcons/load-balancer.svg - ../resources/InstrumentValueIcons/border-all.svg - ../resources/InstrumentValueIcons/location-gas-station.svg - ../resources/InstrumentValueIcons/news-paper.svg - ../resources/InstrumentValueIcons/align-justified.svg - ../resources/InstrumentValueIcons/color-palette.svg - ../resources/InstrumentValueIcons/radio.svg - ../resources/InstrumentValueIcons/reply.svg - ../resources/InstrumentValueIcons/target.svg - ../resources/InstrumentValueIcons/border-vertical.svg - ../resources/InstrumentValueIcons/duplicate.svg - ../resources/InstrumentValueIcons/arrow-thick-right.svg - ../resources/InstrumentValueIcons/exclamation-outline.svg - ../resources/InstrumentValueIcons/bolt.svg - ../resources/InstrumentValueIcons/shopping-cart.svg - ../resources/InstrumentValueIcons/calendar.svg - ../resources/InstrumentValueIcons/travel-train.svg - ../resources/InstrumentValueIcons/save-disk.svg - ../resources/InstrumentValueIcons/cloud-upload.svg - ../resources/InstrumentValueIcons/dashboard.svg - ../resources/InstrumentValueIcons/arrow-simple-down.svg - ../resources/InstrumentValueIcons/computer-desktop.svg - ../resources/InstrumentValueIcons/music-playlist.svg - ../resources/InstrumentValueIcons/share-01.svg - ../resources/InstrumentValueIcons/travel-car.svg - ../resources/InstrumentValueIcons/border-horizontal.svg - ../resources/InstrumentValueIcons/fast-forward.svg - ../resources/InstrumentValueIcons/keyboard.svg - ../resources/InstrumentValueIcons/chat-bubble-dots.svg - ../resources/InstrumentValueIcons/folder.svg - ../resources/InstrumentValueIcons/document.svg - ../resources/InstrumentValueIcons/format-underline.svg - ../resources/InstrumentValueIcons/arrow-thin-down.svg - ../resources/InstrumentValueIcons/cheveron-outline-left.svg - ../resources/InstrumentValueIcons/thumbs-down.svg - ../resources/InstrumentValueIcons/stroke-width.svg - ../resources/InstrumentValueIcons/yin-yang.svg - ../resources/InstrumentValueIcons/thumbs-up.svg - ../resources/InstrumentValueIcons/cheveron-left.svg - ../resources/InstrumentValueIcons/radar.svg - ../resources/InstrumentValueIcons/play.svg - ../resources/InstrumentValueIcons/bluetooth.svg - ../resources/InstrumentValueIcons/clipboard.svg - ../resources/InstrumentValueIcons/mood-happy-outline.svg - ../resources/InstrumentValueIcons/reload.svg - ../resources/InstrumentValueIcons/information-solid.svg - ../resources/InstrumentValueIcons/php-elephant.svg - ../resources/InstrumentValueIcons/bookmark-outline-add.svg - ../resources/InstrumentValueIcons/border-inner.svg - ../resources/InstrumentValueIcons/brightness-up.svg - ../resources/InstrumentValueIcons/view-hide.svg - ../resources/InstrumentValueIcons/forward-step.svg - ../resources/InstrumentValueIcons/cheveron-outline-up.svg - ../resources/InstrumentValueIcons/cheveron-outline-right.svg - ../resources/InstrumentValueIcons/share.svg - ../resources/InstrumentValueIcons/border-right.svg - ../resources/InstrumentValueIcons/location-hotel.svg - ../resources/InstrumentValueIcons/brightness-down.svg - ../resources/InstrumentValueIcons/light-bulb.svg - ../resources/InstrumentValueIcons/location-park.svg - ../resources/InstrumentValueIcons/factory.svg - ../resources/InstrumentValueIcons/stand-by.svg - ../resources/InstrumentValueIcons/swap.svg - ../resources/InstrumentValueIcons/portfolio.svg - ../resources/InstrumentValueIcons/arrow-outline-right.svg - ../resources/InstrumentValueIcons/tuning.svg - ../resources/InstrumentValueIcons/view-carousel.svg - ../resources/InstrumentValueIcons/calculator.svg - ../resources/InstrumentValueIcons/show-sidebar.svg - ../resources/InstrumentValueIcons/step-backward.svg - ../resources/InstrumentValueIcons/tablet.svg - ../resources/InstrumentValueIcons/backspace.svg - ../resources/InstrumentValueIcons/map.svg - ../resources/InstrumentValueIcons/arrow-simple-left.svg - ../resources/InstrumentValueIcons/view-show.svg - ../resources/InstrumentValueIcons/adjust.svg - ../resources/InstrumentValueIcons/border-bottom.svg - ../resources/InstrumentValueIcons/document-add.svg - ../resources/InstrumentValueIcons/plugin.svg - ../resources/InstrumentValueIcons/navigation-more.svg - ../resources/InstrumentValueIcons/browser-window-open.svg - ../resources/InstrumentValueIcons/flashlight.svg - ../resources/InstrumentValueIcons/currency-dollar.svg - ../resources/InstrumentValueIcons/close-solid.svg - ../resources/InstrumentValueIcons/vector.svg - ../resources/InstrumentValueIcons/paste.svg - ../resources/InstrumentValueIcons/arrow-outline-up.svg - ../resources/InstrumentValueIcons/pause.svg - ../resources/InstrumentValueIcons/artist.svg - ../resources/InstrumentValueIcons/hour-glass.svg - ../resources/InstrumentValueIcons/browser-window.svg - ../resources/InstrumentValueIcons/border-left.svg - ../resources/InstrumentValueIcons/tag.svg - ../resources/InstrumentValueIcons/translate.svg - ../resources/InstrumentValueIcons/mood-neutral-solid.svg - ../resources/InstrumentValueIcons/pause-solid.svg - ../resources/InstrumentValueIcons/phone.svg - ../resources/InstrumentValueIcons/heart.svg - ../resources/InstrumentValueIcons/headphones.svg - ../resources/InstrumentValueIcons/servers.svg - ../resources/InstrumentValueIcons/close.svg ../resources/InstrumentValueIcons/directions.svg - ../resources/InstrumentValueIcons/arrow-thick-left.svg - ../resources/InstrumentValueIcons/play-outline.svg - ../resources/InstrumentValueIcons/arrow-thick-up.svg - ../resources/InstrumentValueIcons/code.svg - ../resources/InstrumentValueIcons/thermometer.svg - ../resources/InstrumentValueIcons/location-restroom.svg - ../resources/InstrumentValueIcons/list-bullet.svg - ../resources/InstrumentValueIcons/wrench.svg - ../resources/InstrumentValueIcons/compose.svg - ../resources/InstrumentValueIcons/at-symbol.svg - ../resources/InstrumentValueIcons/library.svg - ../resources/InstrumentValueIcons/view-list.svg - ../resources/InstrumentValueIcons/timer.svg - ../resources/InstrumentValueIcons/window-open.svg - ../resources/InstrumentValueIcons/mouse.svg - ../resources/InstrumentValueIcons/buoy.svg - ../resources/InstrumentValueIcons/subdirectory-right.svg - ../resources/InstrumentValueIcons/volume-up.svg - ../resources/InstrumentValueIcons/edit-crop.svg - ../resources/InstrumentValueIcons/screen-full.svg - ../resources/InstrumentValueIcons/forward.svg - ../resources/InstrumentValueIcons/pylon.svg - ../resources/InstrumentValueIcons/align-right.svg - ../resources/InstrumentValueIcons/border-outer.svg - ../resources/InstrumentValueIcons/arrow-thin-up.svg - ../resources/InstrumentValueIcons/printer.svg - ../resources/InstrumentValueIcons/wallet.svg - ../resources/InstrumentValueIcons/arrow-outline-left.svg - ../resources/InstrumentValueIcons/credit-card.svg - ../resources/InstrumentValueIcons/repost.svg - ../resources/InstrumentValueIcons/notifications-outline.svg - ../resources/InstrumentValueIcons/bookmark-outline.svg - ../resources/InstrumentValueIcons/radar copy 2.svg - ../resources/InstrumentValueIcons/share-alt.svg - ../resources/InstrumentValueIcons/link.svg - ../resources/InstrumentValueIcons/attachment.svg - ../resources/InstrumentValueIcons/chart.svg - ../resources/InstrumentValueIcons/shield.svg - ../resources/InstrumentValueIcons/block.svg - ../resources/InstrumentValueIcons/indent-increase.svg - ../resources/InstrumentValueIcons/arrow-base-up.svg - ../resources/InstrumentValueIcons/minus-solid.svg - ../resources/InstrumentValueIcons/folder-outline-add.svg - ../resources/InstrumentValueIcons/location.svg - ../resources/InstrumentValueIcons/mic.svg - ../resources/InstrumentValueIcons/education.svg ../resources/InstrumentValueIcons/announcement.svg + ../resources/InstrumentValueIcons/user-solid-square.svg + ../resources/InstrumentValueIcons/shield.svg + ../resources/InstrumentValueIcons/watch.svg + ../resources/InstrumentValueIcons/share.svg + ../resources/InstrumentValueIcons/bookmark-outline-add.svg + ../resources/InstrumentValueIcons/arrow-thick-left.svg + ../resources/InstrumentValueIcons/reload.svg + ../resources/InstrumentValueIcons/badge.svg + ../resources/InstrumentValueIcons/travel-walk.svg + ../resources/InstrumentValueIcons/cog.svg + ../resources/InstrumentValueIcons/folder-outline.svg + ../resources/InstrumentValueIcons/queue.svg + ../resources/InstrumentValueIcons/indent-decrease.svg + ../resources/InstrumentValueIcons/menu.svg + ../resources/InstrumentValueIcons/computer-laptop.svg + ../resources/InstrumentValueIcons/view-column.svg + ../resources/InstrumentValueIcons/list.svg + ../resources/InstrumentValueIcons/question.svg + ../resources/InstrumentValueIcons/music-artist.svg + ../resources/InstrumentValueIcons/playlist.svg + ../resources/InstrumentValueIcons/wallet.svg + ../resources/InstrumentValueIcons/bluetooth.svg + ../resources/InstrumentValueIcons/radar copy 2.svg + ../resources/InstrumentValueIcons/tuning.svg + ../resources/InstrumentValueIcons/book-reference.svg + ../resources/InstrumentValueIcons/information-solid.svg + ../resources/InstrumentValueIcons/user-group.svg + ../resources/InstrumentValueIcons/view-hide.svg + ../resources/InstrumentValueIcons/gift.svg + ../resources/InstrumentValueIcons/pylon.svg + ../resources/InstrumentValueIcons/arrow-thin-left.svg + ../resources/InstrumentValueIcons/pause.svg + ../resources/InstrumentValueIcons/layers.svg + ../resources/InstrumentValueIcons/repost.svg + ../resources/InstrumentValueIcons/hand-stop.svg + ../resources/InstrumentValueIcons/border-horizontal.svg + ../resources/InstrumentValueIcons/send.svg + ../resources/InstrumentValueIcons/beverage.svg + ../resources/InstrumentValueIcons/align-center.svg + ../resources/InstrumentValueIcons/travel-bus.svg + ../resources/InstrumentValueIcons/artist.svg + ../resources/InstrumentValueIcons/color-palette.svg + ../resources/InstrumentValueIcons/compose.svg + ../resources/InstrumentValueIcons/news-paper.svg + ../resources/InstrumentValueIcons/printer.svg + ../resources/InstrumentValueIcons/border-all.svg + ../resources/InstrumentValueIcons/edit-copy.svg + ../resources/InstrumentValueIcons/dots-horizontal-triple.svg + ../resources/InstrumentValueIcons/border-left.svg + ../resources/InstrumentValueIcons/view-show.svg + ../resources/InstrumentValueIcons/globe.svg + ../resources/InstrumentValueIcons/subdirectory-right.svg + ../resources/InstrumentValueIcons/chart.svg + ../resources/InstrumentValueIcons/arrow-outline-down.svg + ../resources/InstrumentValueIcons/browser-window.svg + ../resources/InstrumentValueIcons/inbox.svg + ../resources/InstrumentValueIcons/music-album.svg + ../resources/InstrumentValueIcons/currency-dollar.svg + ../resources/InstrumentValueIcons/chart-bar.svg + ../resources/InstrumentValueIcons/text-box.svg + ../resources/InstrumentValueIcons/border-outer.svg + ../resources/InstrumentValueIcons/stethoscope.svg + ../resources/InstrumentValueIcons/coffee.svg + ../resources/InstrumentValueIcons/timer.svg + ../resources/InstrumentValueIcons/mood-sad-outline.svg + ../resources/InstrumentValueIcons/show-sidebar.svg + ../resources/InstrumentValueIcons/border-vertical.svg + ../resources/InstrumentValueIcons/thumbs-up.svg + ../resources/InstrumentValueIcons/step-forward.svg + ../resources/InstrumentValueIcons/location-marina.svg + ../resources/InstrumentValueIcons/inbox-download.svg + ../resources/InstrumentValueIcons/cheveron-outline-down.svg + ../resources/InstrumentValueIcons/volume-down.svg + ../resources/InstrumentValueIcons/browser-window-new.svg + ../resources/InstrumentValueIcons/add-solid.svg + ../resources/InstrumentValueIcons/credit-card.svg + ../resources/InstrumentValueIcons/cheveron-outline-up.svg + ../resources/InstrumentValueIcons/edit-pencil.svg + ../resources/InstrumentValueIcons/format-bold.svg + ../resources/InstrumentValueIcons/paste.svg + ../resources/InstrumentValueIcons/radio.svg + ../resources/InstrumentValueIcons/album.svg + ../resources/InstrumentValueIcons/at-symbol.svg + ../resources/InstrumentValueIcons/education.svg + ../resources/InstrumentValueIcons/radar.svg + ../resources/InstrumentValueIcons/headphones.svg + ../resources/InstrumentValueIcons/load-balancer.svg + ../resources/InstrumentValueIcons/home.svg + ../resources/InstrumentValueIcons/backward.svg + ../resources/InstrumentValueIcons/tablet.svg + ../resources/InstrumentValueIcons/mood-happy-solid.svg + ../resources/InstrumentValueIcons/align-right.svg + ../resources/InstrumentValueIcons/folder.svg + ../resources/InstrumentValueIcons/duplicate.svg + ../resources/InstrumentValueIcons/envelope.svg + ../resources/InstrumentValueIcons/bookmark copy 3.svg + ../resources/InstrumentValueIcons/lock-closed.svg + ../resources/InstrumentValueIcons/clipboard.svg + ../resources/InstrumentValueIcons/border-bottom.svg + ../resources/InstrumentValueIcons/shuffle.svg + ../resources/InstrumentValueIcons/save-disk.svg + ../resources/InstrumentValueIcons/refresh.svg + ../resources/InstrumentValueIcons/lock-open.svg + ../resources/InstrumentValueIcons/link.svg + ../resources/InstrumentValueIcons/view-carousel.svg + ../resources/InstrumentValueIcons/share-01.svg + ../resources/InstrumentValueIcons/arrow-thick-down.svg + ../resources/InstrumentValueIcons/ticket.svg + ../resources/InstrumentValueIcons/portfolio.svg + ../resources/InstrumentValueIcons/arrow-simple-down.svg + ../resources/InstrumentValueIcons/location-restroom.svg + ../resources/InstrumentValueIcons/yin-yang.svg + ../resources/InstrumentValueIcons/buoy.svg + ../resources/InstrumentValueIcons/play-outline.svg + ../resources/InstrumentValueIcons/box.svg + ../resources/InstrumentValueIcons/align-left.svg + ../resources/InstrumentValueIcons/minus-solid.svg + ../resources/InstrumentValueIcons/play.svg + ../resources/InstrumentValueIcons/format-italic.svg + ../resources/InstrumentValueIcons/close.svg + ../resources/InstrumentValueIcons/screen-full.svg + ../resources/InstrumentValueIcons/airplane.svg + ../resources/InstrumentValueIcons/forward.svg + ../resources/InstrumentValueIcons/document.svg + ../resources/InstrumentValueIcons/cheveron-outline-left.svg + ../resources/InstrumentValueIcons/travel-car.svg + ../resources/InstrumentValueIcons/library.svg + ../resources/InstrumentValueIcons/heart.svg + ../resources/InstrumentValueIcons/zoom-out.svg + ../resources/InstrumentValueIcons/travel-taxi-cab.svg + ../resources/InstrumentValueIcons/chat-bubble-dots.svg + ../resources/InstrumentValueIcons/vector.svg + ../resources/InstrumentValueIcons/notifications-outline.svg + ../resources/InstrumentValueIcons/swap.svg + ../resources/InstrumentValueIcons/mic.svg + ../resources/InstrumentValueIcons/folder-outline-add.svg + ../resources/InstrumentValueIcons/forward-step.svg + ../resources/InstrumentValueIcons/minus-outline.svg + ../resources/InstrumentValueIcons/translate.svg + ../resources/InstrumentValueIcons/navigation-more.svg + ../resources/InstrumentValueIcons/battery-full.svg + ../resources/InstrumentValueIcons/pause-solid.svg + ../resources/InstrumentValueIcons/explore.svg + ../resources/InstrumentValueIcons/format-text-size.svg + ../resources/InstrumentValueIcons/reply.svg + ../resources/InstrumentValueIcons/volume-off.svg + ../resources/InstrumentValueIcons/list-add.svg + ../resources/InstrumentValueIcons/pin.svg + ../resources/InstrumentValueIcons/zoom-in.svg + ../resources/InstrumentValueIcons/photo.svg + ../resources/InstrumentValueIcons/mobile-devices.svg + ../resources/InstrumentValueIcons/text-decoration.svg + ../resources/InstrumentValueIcons/music-playlist.svg + ../resources/InstrumentValueIcons/step-backward.svg + ../resources/InstrumentValueIcons/information-outline.svg + ../resources/InstrumentValueIcons/share-alt.svg + ../resources/InstrumentValueIcons/exclamation-outline.svg + ../resources/InstrumentValueIcons/notification.svg + ../resources/InstrumentValueIcons/window.svg + ../resources/InstrumentValueIcons/map.svg + ../resources/InstrumentValueIcons/thermometer.svg + ../resources/InstrumentValueIcons/calendar.svg + ../resources/InstrumentValueIcons/stand-by.svg + ../resources/InstrumentValueIcons/thumbs-down.svg + ../resources/InstrumentValueIcons/cheveron-down.svg + ../resources/InstrumentValueIcons/factory.svg + ../resources/InstrumentValueIcons/stroke-width.svg + ../resources/InstrumentValueIcons/indent-increase.svg + ../resources/InstrumentValueIcons/search.svg + ../resources/InstrumentValueIcons/add-outline.svg + ../resources/InstrumentValueIcons/mood-neutral-outline.svg + ../resources/InstrumentValueIcons/cheveron-outline-right.svg + ../resources/InstrumentValueIcons/arrow-thick-right.svg + ../resources/InstrumentValueIcons/key.svg + ../resources/InstrumentValueIcons/cloud.svg + ../resources/InstrumentValueIcons/mood-happy-outline.svg + ../resources/InstrumentValueIcons/dots-horizontal-double.svg + ../resources/InstrumentValueIcons/format-font-size.svg + ../resources/InstrumentValueIcons/arrow-outline-up.svg + ../resources/InstrumentValueIcons/arrow-thin-up.svg + ../resources/InstrumentValueIcons/network.svg + ../resources/InstrumentValueIcons/mouse.svg + ../resources/InstrumentValueIcons/checkmark-outline.svg + ../resources/InstrumentValueIcons/mood-sad-solid.svg + ../resources/InstrumentValueIcons/store-front.svg + ../resources/InstrumentValueIcons/battery-half.svg + ../resources/InstrumentValueIcons/tools copy.svg + ../resources/InstrumentValueIcons/time.svg + ../resources/InstrumentValueIcons/block.svg + ../resources/InstrumentValueIcons/camera.svg + ../resources/InstrumentValueIcons/user-add.svg + ../resources/InstrumentValueIcons/cheveron-up.svg + ../resources/InstrumentValueIcons/window-new.svg + ../resources/InstrumentValueIcons/battery-low.svg + ../resources/InstrumentValueIcons/volume-up.svg + ../resources/InstrumentValueIcons/volume-mute.svg + ../resources/InstrumentValueIcons/arrow-simple-up.svg + ../resources/InstrumentValueIcons/travel.svg + ../resources/InstrumentValueIcons/location.svg + ../resources/InstrumentValueIcons/dashboard.svg + ../resources/InstrumentValueIcons/light-bulb.svg + ../resources/InstrumentValueIcons/travel-case.svg + ../resources/InstrumentValueIcons/edit-crop.svg + ../resources/InstrumentValueIcons/close-solid.svg + ../resources/InstrumentValueIcons/notifications.svg + ../resources/InstrumentValueIcons/video-camera.svg + ../resources/InstrumentValueIcons/film.svg + ../resources/InstrumentValueIcons/border-right.svg + ../resources/InstrumentValueIcons/bolt.svg + ../resources/InstrumentValueIcons/keyboard.svg + ../resources/InstrumentValueIcons/shopping-cart.svg + ../resources/InstrumentValueIcons/cheveron-left.svg + ../resources/InstrumentValueIcons/flag.svg + ../resources/InstrumentValueIcons/adjust.svg + ../resources/InstrumentValueIcons/wrench.svg + ../resources/InstrumentValueIcons/station.svg + ../resources/InstrumentValueIcons/target.svg + ../resources/InstrumentValueIcons/location-food.svg + ../resources/InstrumentValueIcons/hour-glass.svg + ../resources/InstrumentValueIcons/date-add.svg + ../resources/InstrumentValueIcons/location-gas-station.svg + ../resources/InstrumentValueIcons/cheveron-right.svg + ../resources/InstrumentValueIcons/checkmark.svg + ../resources/InstrumentValueIcons/format-underline.svg + ../resources/InstrumentValueIcons/border-none.svg + ../resources/InstrumentValueIcons/inbox-full.svg + ../resources/InstrumentValueIcons/window-open.svg + ../resources/InstrumentValueIcons/travel-train.svg + ../resources/InstrumentValueIcons/location-current.svg + ../resources/InstrumentValueIcons/computer-desktop.svg + ../resources/InstrumentValueIcons/servers.svg + ../resources/InstrumentValueIcons/close-outline.svg + ../resources/InstrumentValueIcons/apparel.svg + ../resources/InstrumentValueIcons/arrow-thick-up.svg + ../resources/InstrumentValueIcons/border-top.svg + ../resources/InstrumentValueIcons/bookmark copy 2.svg + ../resources/InstrumentValueIcons/trophy.svg + ../resources/InstrumentValueIcons/view-list.svg + ../resources/InstrumentValueIcons/arrow-thin-right.svg + ../resources/InstrumentValueIcons/arrow-outline-left.svg + ../resources/InstrumentValueIcons/edit-cut.svg + ../resources/InstrumentValueIcons/brightness-up.svg + ../resources/InstrumentValueIcons/phone.svg + ../resources/InstrumentValueIcons/arrow-outline-right.svg + ../resources/InstrumentValueIcons/mood-neutral-solid.svg + ../resources/InstrumentValueIcons/arrow-base-down.svg + ../resources/InstrumentValueIcons/arrow-simple-left.svg + ../resources/InstrumentValueIcons/browser-window-open.svg + ../resources/InstrumentValueIcons/document-add.svg + ../resources/InstrumentValueIcons/inbox-check.svg + ../resources/InstrumentValueIcons/star-full.svg + ../resources/InstrumentValueIcons/fast-forward.svg + ../resources/InstrumentValueIcons/fast-rewind.svg + ../resources/InstrumentValueIcons/hot.svg + ../resources/InstrumentValueIcons/brightness-down.svg + ../resources/InstrumentValueIcons/backward-step.svg + ../resources/InstrumentValueIcons/user.svg + ../resources/InstrumentValueIcons/backspace.svg + ../resources/InstrumentValueIcons/border-inner.svg + ../resources/InstrumentValueIcons/chart-pie.svg + ../resources/InstrumentValueIcons/arrow-base-up.svg + ../resources/InstrumentValueIcons/music-notes.svg + ../resources/InstrumentValueIcons/filter.svg + ../resources/InstrumentValueIcons/code.svg + ../resources/InstrumentValueIcons/dial-pad.svg + ../resources/InstrumentValueIcons/reply-all.svg + ../resources/InstrumentValueIcons/arrow-thin-down.svg + ../resources/InstrumentValueIcons/usb.svg + ../resources/InstrumentValueIcons/anchor.svg + ../resources/InstrumentValueIcons/align-justified.svg + ../resources/InstrumentValueIcons/conversation.svg + ../resources/InstrumentValueIcons/bug.svg + ../resources/InstrumentValueIcons/arrow-simple-right.svg + ../resources/InstrumentValueIcons/location-park.svg + ../resources/InstrumentValueIcons/flashlight.svg + ../resources/InstrumentValueIcons/pen-tool.svg + ../resources/InstrumentValueIcons/subdirectory-left.svg + ../resources/InstrumentValueIcons/exclamation-solid.svg + ../resources/InstrumentValueIcons/php-elephant.svg + ../resources/InstrumentValueIcons/bookmark.svg + ../resources/InstrumentValueIcons/location-hotel.svg + ../resources/InstrumentValueIcons/calculator.svg + ../resources/InstrumentValueIcons/view-tile.svg + ../resources/InstrumentValueIcons/plugin.svg + ../resources/InstrumentValueIcons/tag.svg + ../resources/InstrumentValueIcons/pause-outline.svg + ../resources/InstrumentValueIcons/copy.svg + ../resources/InstrumentValueIcons/hard-drive.svg + ../resources/InstrumentValueIcons/attachment.svg + ../resources/InstrumentValueIcons/cloud-upload.svg + ../resources/InstrumentValueIcons/list-bullet.svg + ../resources/InstrumentValueIcons/user-solid-circle.svg + ../resources/InstrumentValueIcons/trash.svg + ../resources/InstrumentValueIcons/bookmark-outline.svg + ../resources/InstrumentValueIcons/location-shopping.svg diff --git a/custom-example/README.jpg b/custom/README.jpg similarity index 100% rename from custom-example/README.jpg rename to custom/README.jpg diff --git a/custom-example/README.md b/custom/README.md similarity index 100% rename from custom-example/README.md rename to custom/README.md diff --git a/custom-example/android/res/drawable-hdpi/icon.png b/custom/android-abandon/res/drawable-hdpi/icon.png similarity index 100% rename from custom-example/android/res/drawable-hdpi/icon.png rename to custom/android-abandon/res/drawable-hdpi/icon.png diff --git a/custom-example/android/res/drawable-ldpi/icon.png b/custom/android-abandon/res/drawable-ldpi/icon.png similarity index 100% rename from custom-example/android/res/drawable-ldpi/icon.png rename to custom/android-abandon/res/drawable-ldpi/icon.png diff --git a/custom-example/android/res/drawable-mdpi/icon.png b/custom/android-abandon/res/drawable-mdpi/icon.png similarity index 100% rename from custom-example/android/res/drawable-mdpi/icon.png rename to custom/android-abandon/res/drawable-mdpi/icon.png diff --git a/custom-example/android/res/drawable-xhdpi/icon.png b/custom/android-abandon/res/drawable-xhdpi/icon.png similarity index 100% rename from custom-example/android/res/drawable-xhdpi/icon.png rename to custom/android-abandon/res/drawable-xhdpi/icon.png diff --git a/custom-example/android/res/drawable-xxhdpi/icon.png b/custom/android-abandon/res/drawable-xxhdpi/icon.png similarity index 100% rename from custom-example/android/res/drawable-xxhdpi/icon.png rename to custom/android-abandon/res/drawable-xxhdpi/icon.png diff --git a/custom-example/android/res/drawable-xxxhdpi/icon.png b/custom/android-abandon/res/drawable-xxxhdpi/icon.png similarity index 100% rename from custom-example/android/res/drawable-xxxhdpi/icon.png rename to custom/android-abandon/res/drawable-xxxhdpi/icon.png diff --git a/custom-example/custom.pri b/custom/custom.pri similarity index 78% rename from custom-example/custom.pri rename to custom/custom.pri index dd5aa4b..6d26c44 100644 --- a/custom-example/custom.pri +++ b/custom/custom.pri @@ -23,6 +23,7 @@ DEFINES += APP_VERSION_STR=\"\\\"$$CUSTOM_QGC_VERSION\\\"\" message(Custom QGC Version: $${CUSTOM_QGC_VERSION}) # Build a single flight stack by disabling APM support +MAVLINK_CONF = common CONFIG += QGC_DISABLE_APM_MAVLINK CONFIG += QGC_DISABLE_APM_PLUGIN QGC_DISABLE_APM_PLUGIN_FACTORY @@ -34,19 +35,19 @@ CONFIG += QGC_DISABLE_PX4_PLUGIN_FACTORY DEFINES += CUSTOMHEADER=\"\\\"CustomPlugin.h\\\"\" DEFINES += CUSTOMCLASS=CustomPlugin -TARGET = CustomQGroundControl -DEFINES += QGC_APPLICATION_NAME='"\\\"Custom QGroundControl\\\""' +TARGET = Spiri +DEFINES += QGC_APPLICATION_NAME='"\\\"Spiri\\\""' -DEFINES += QGC_ORG_NAME=\"\\\"qgroundcontrol.org\\\"\" -DEFINES += QGC_ORG_DOMAIN=\"\\\"org.qgroundcontrol\\\"\" +DEFINES += QGC_ORG_NAME=\"\\\"spiri.org\\\"\" +DEFINES += QGC_ORG_DOMAIN=\"\\\"org.spiri\\\"\" -QGC_APP_NAME = "Custom QGroundControl" -QGC_BINARY_NAME = "CustomQGroundControl" -QGC_ORG_NAME = "Custom" -QGC_ORG_DOMAIN = "org.custom" -QGC_ANDROID_PACKAGE = "org.custom.qgroundcontrol" -QGC_APP_DESCRIPTION = "Custom QGroundControl" -QGC_APP_COPYRIGHT = "Copyright (C) 2020 QGroundControl Development Team. All rights reserved." +QGC_APP_NAME = "Spiri" +QGC_BINARY_NAME = "Spiri" +QGC_ORG_NAME = "Spiri" +QGC_ORG_DOMAIN = "org.spiri" +QGC_ANDROID_PACKAGE = "org.spiri.spiri" +QGC_APP_DESCRIPTION = "Spiri" +QGC_APP_COPYRIGHT = "Copyright (C) 2023 Spiri Development Team. All rights reserved." # Our own, custom resources RESOURCES += \ diff --git a/custom-example/custom.qrc b/custom/custom.qrc similarity index 100% rename from custom-example/custom.qrc rename to custom/custom.qrc diff --git a/custom-example/custom_deploy.pri b/custom/custom_deploy.pri similarity index 100% rename from custom-example/custom_deploy.pri rename to custom/custom_deploy.pri diff --git a/custom-example/deploy/qgroundcontrol-start.sh b/custom/deploy/qgroundcontrol-start.sh old mode 100755 new mode 100644 similarity index 100% rename from custom-example/deploy/qgroundcontrol-start.sh rename to custom/deploy/qgroundcontrol-start.sh diff --git a/custom-example/deploy/qgroundcontrol.desktop b/custom/deploy/qgroundcontrol.desktop similarity index 100% rename from custom-example/deploy/qgroundcontrol.desktop rename to custom/deploy/qgroundcontrol.desktop diff --git a/custom-example/qgcresources.exclusion b/custom/qgcresources.exclusion similarity index 100% rename from custom-example/qgcresources.exclusion rename to custom/qgcresources.exclusion diff --git a/custom-example/qgcresources.qrc b/custom/qgcresources.qrc similarity index 96% rename from custom-example/qgcresources.qrc rename to custom/qgcresources.qrc index 3d5fda0..23d76dd 100644 --- a/custom-example/qgcresources.qrc +++ b/custom/qgcresources.qrc @@ -31,7 +31,6 @@ ../resources/LockClosed.svg ../resources/LockOpen.svg ../resources/notile.png - ../resources/NoVideoBackground.jpg ../resources/Pause.svg ../resources/pause-mission.svg ../resources/pencil.svg @@ -55,9 +54,6 @@ ../resources/XDelete.svg ../resources/XDeleteBlack.svg ../resources/waypoint.svg - ../resources/Gripper.svg - ../resources/GripperRelease.svg - ../resources/GripperGrab.svg ../resources/icons/qgroundcontrol.ico diff --git a/custom-example/qgroundcontrol.exclusion b/custom/qgroundcontrol.exclusion similarity index 100% rename from custom-example/qgroundcontrol.exclusion rename to custom/qgroundcontrol.exclusion diff --git a/custom-example/qgroundcontrol.qrc b/custom/qgroundcontrol.qrc similarity index 95% rename from custom-example/qgroundcontrol.qrc rename to custom/qgroundcontrol.qrc index 5a56173..d4fce6e 100644 --- a/custom-example/qgroundcontrol.qrc +++ b/custom/qgroundcontrol.qrc @@ -14,11 +14,9 @@ ../src/ui/toolbar/ModeIndicator.qml ../src/ui/toolbar/MultiVehicleSelector.qml ../src/ui/toolbar/RCRSSIIndicator.qml - ../src/ui/toolbar/RemoteIDIndicator.qml ../src/ui/toolbar/ROIIndicator.qml ../src/ui/toolbar/TelemetryRSSIIndicator.qml ../src/ui/toolbar/VTOLModeIndicator.qml - ../src/ui/toolbar/APMSupportForwardingIndicator.qml ../src/FlightDisplay/DefaultChecklist.qml @@ -40,7 +38,6 @@ ../src/ui/preferences/BluetoothSettings.qml ../src/PlanView/CorridorScanEditor.qml ../src/ui/preferences/DebugWindow.qml - ../src/ui/preferences/RemoteIDSettings.qml ../src/AutoPilotPlugins/Common/ESP8266Component.qml ../src/AutoPilotPlugins/Common/ESP8266ComponentSummary.qml ../src/ui/ExitWithErrorWindow.qml @@ -111,7 +108,6 @@ ../src/QmlControls/KMLOrSHPFileDialog.qml ../src/QmlControls/LogReplayStatusBar.qml ../src/ui/toolbar/MainStatusIndicator.qml - ../src/ui/toolbar/FlightModeMenuIndicator.qml ../src/ui/toolbar/MainToolBar.qml ../src/QmlControls/MainWindowSavedState.qml ../src/QmlControls/MAVLinkChart.qml @@ -133,7 +129,6 @@ ../src/QmlControls/PreFlightCheckGroup.qml ../src/QmlControls/PreFlightCheckModel.qml ../src/QmlControls/QGCButton.qml - ../src/QmlControls/QGCColumnButton.qml ../src/QmlControls/AutotuneUI.qml ../src/QmlControls/QGCCheckBox.qml ../src/QmlControls/QGCColoredImage.qml @@ -156,10 +151,10 @@ ../src/QmlControls/QGCMouseArea.qml ../src/QmlControls/QGCMovableItem.qml ../src/QmlControls/QGCPopupDialog.qml + ../src/QmlControls/QGCPopupDialogContainer.qml ../src/QmlControls/QGCPipOverlay.qml ../src/QmlControls/QGCPipState.qml ../src/QmlControls/QGCRadioButton.qml - ../src/QmlControls/QGCSimpleMessageDialog.qml ../src/QmlControls/QGCSlider.qml ../src/QmlControls/QGCSwitch.qml ../src/QmlControls/QGCTabBar.qml @@ -167,6 +162,9 @@ ../src/QmlControls/QGCTextField.qml ../src/QmlControls/QGCToolBarButton.qml ../src/QmlControls/QGCToolInsets.qml + ../src/QmlControls/QGCViewDialog.qml + ../src/QmlControls/QGCViewDialogContainer.qml + ../src/QmlControls/QGCViewMessage.qml ../src/QmlControls/QGroundControl/Controls/qmldir ../src/PlanView/RallyPointEditorHeader.qml ../src/PlanView/RallyPointItemEditor.qml @@ -206,6 +204,7 @@ ../src/QmlControls/QGroundControl/FactControls/qmldir ../src/FlightDisplay/FlightDisplayViewVideo.qml ../src/FlightDisplay/FlightDisplayViewWidgets.qml + ../src/FlightDisplay/FlyViewAirspaceIndicator.qml ../src/FlightDisplay/FlyView.qml ../src/FlightDisplay/FlyViewInstrumentPanel.qml ../src/FlightDisplay/FlyViewMap.qml @@ -221,11 +220,9 @@ ../src/FlightDisplay/GuidedActionLand.qml ../src/FlightDisplay/GuidedActionList.qml ../src/FlightDisplay/GuidedActionTakeoff.qml - ../src/FlightDisplay/GuidedActionGripper.qml - ../src/FlightDisplay/GripperMenu.qml ../src/FlightDisplay/GuidedActionPause.qml ../src/FlightDisplay/GuidedActionRTL.qml - ../src/FlightDisplay/GuidedValueSlider.qml + ../src/FlightDisplay/GuidedAltitudeSlider.qml ../src/FlightDisplay/GuidedToolStripAction.qml ../src/FlightDisplay/MultiVehicleList.qml ../src/FlightDisplay/PreFlightBatteryCheck.qml @@ -286,8 +283,6 @@ ../src/AnalyzeView/VibrationPage.qml ../src/FlightDisplay/VirtualJoystick.qml ../src/PlanView/VTOLLandingPatternEditor.qml - ../src/comm/MockLinkOptionsDlg.qml - ../src/FlightDisplay/FlyViewInsetViewer.qml ../src/FirstRunPromptDialogs/UnitsFirstRunPrompt.qml @@ -304,7 +299,6 @@ ../src/MissionManager/CameraSection.FactMetaData.json ../src/MissionManager/CameraSpec.FactMetaData.json ../src/MissionManager/CorridorScan.SettingsGroup.json - ../src/Settings/RemoteID.SettingsGroup.json ../src/QmlControls/EditPositionDialog.FactMetaData.json ../src/Settings/FirmwareUpgrade.SettingsGroup.json ../src/Settings/FlightMap.SettingsGroup.json @@ -346,8 +340,6 @@ ../src/Vehicle/VibrationFact.json ../src/Vehicle/WindFact.json ../src/Vehicle/HygrometerFact.json - ../src/Vehicle/GeneratorFact.json - ../src/Vehicle/EFIFact.json ../src/Settings/Video.SettingsGroup.json ../src/MissionManager/VTOLLandingPattern.FactMetaData.json @@ -358,6 +350,5 @@ ../src/comm/MockLink.General.MetaData.json.xz ../src/comm/MockLink.Parameter.MetaData.json.xz ../src/comm/MockLink.Parameter.MetaData.json - ../src/comm/Mocklink.Arduplane.params.ftp.bin diff --git a/custom-example/res/Custom/Camera/ZoomControl.qml b/custom/res/Custom/Camera/ZoomControl.qml similarity index 100% rename from custom-example/res/Custom/Camera/ZoomControl.qml rename to custom/res/Custom/Camera/ZoomControl.qml diff --git a/custom-example/res/Custom/Camera/qmldir b/custom/res/Custom/Camera/qmldir similarity index 100% rename from custom-example/res/Custom/Camera/qmldir rename to custom/res/Custom/Camera/qmldir diff --git a/custom-example/res/Custom/Widgets/CustomArtificialHorizon.qml b/custom/res/Custom/Widgets/CustomArtificialHorizon.qml similarity index 100% rename from custom-example/res/Custom/Widgets/CustomArtificialHorizon.qml rename to custom/res/Custom/Widgets/CustomArtificialHorizon.qml diff --git a/custom-example/res/Custom/Widgets/CustomAttitudeWidget.qml b/custom/res/Custom/Widgets/CustomAttitudeWidget.qml similarity index 100% rename from custom-example/res/Custom/Widgets/CustomAttitudeWidget.qml rename to custom/res/Custom/Widgets/CustomAttitudeWidget.qml diff --git a/custom-example/res/Custom/Widgets/CustomIconButton.qml b/custom/res/Custom/Widgets/CustomIconButton.qml similarity index 100% rename from custom-example/res/Custom/Widgets/CustomIconButton.qml rename to custom/res/Custom/Widgets/CustomIconButton.qml diff --git a/custom-example/res/Custom/Widgets/CustomOnOffSwitch.qml b/custom/res/Custom/Widgets/CustomOnOffSwitch.qml similarity index 100% rename from custom-example/res/Custom/Widgets/CustomOnOffSwitch.qml rename to custom/res/Custom/Widgets/CustomOnOffSwitch.qml diff --git a/custom-example/res/Custom/Widgets/CustomQuickButton.qml b/custom/res/Custom/Widgets/CustomQuickButton.qml similarity index 100% rename from custom-example/res/Custom/Widgets/CustomQuickButton.qml rename to custom/res/Custom/Widgets/CustomQuickButton.qml diff --git a/custom-example/res/Custom/Widgets/CustomSignalStrength.qml b/custom/res/Custom/Widgets/CustomSignalStrength.qml similarity index 100% rename from custom-example/res/Custom/Widgets/CustomSignalStrength.qml rename to custom/res/Custom/Widgets/CustomSignalStrength.qml diff --git a/custom-example/res/Custom/Widgets/CustomToolBarButton.qml b/custom/res/Custom/Widgets/CustomToolBarButton.qml similarity index 100% rename from custom-example/res/Custom/Widgets/CustomToolBarButton.qml rename to custom/res/Custom/Widgets/CustomToolBarButton.qml diff --git a/custom-example/res/Custom/Widgets/CustomVehicleButton.qml b/custom/res/Custom/Widgets/CustomVehicleButton.qml similarity index 100% rename from custom-example/res/Custom/Widgets/CustomVehicleButton.qml rename to custom/res/Custom/Widgets/CustomVehicleButton.qml diff --git a/custom-example/res/Custom/Widgets/qmldir b/custom/res/Custom/Widgets/qmldir similarity index 100% rename from custom-example/res/Custom/Widgets/qmldir rename to custom/res/Custom/Widgets/qmldir diff --git a/custom-example/res/CustomFlyViewOverlay.qml b/custom/res/CustomFlyViewOverlay.qml similarity index 84% rename from custom-example/res/CustomFlyViewOverlay.qml rename to custom/res/CustomFlyViewOverlay.qml index 422c930..03ff9e8 100644 --- a/custom-example/res/CustomFlyViewOverlay.qml +++ b/custom/res/CustomFlyViewOverlay.qml @@ -55,38 +55,8 @@ Item { QGCToolInsets { id: _totalToolInsets - leftEdgeTopInset: parentToolInsets.leftEdgeTopInset - leftEdgeCenterInset: exampleRectangle.leftEdgeCenterInset - leftEdgeBottomInset: parentToolInsets.leftEdgeBottomInset - rightEdgeTopInset: parentToolInsets.rightEdgeTopInset - rightEdgeCenterInset: parentToolInsets.rightEdgeCenterInset - rightEdgeBottomInset: parent.width - compassBackground.x - topEdgeLeftInset: parentToolInsets.topEdgeLeftInset topEdgeCenterInset: compassArrowIndicator.y + compassArrowIndicator.height - topEdgeRightInset: parentToolInsets.topEdgeRightInset - bottomEdgeLeftInset: parentToolInsets.bottomEdgeLeftInset - bottomEdgeCenterInset: parentToolInsets.bottomEdgeCenterInset - bottomEdgeRightInset: parent.height - attitudeIndicator.y - } - - // This is an example of how you can use parent tool insets to position an element on the custom fly view layer - // - we use parent topEdgeLeftInset to position the widget below the toolstrip - // - we use parent bottomEdgeLeftInset to dodge the virtual joystick if enabled - // - we use the parent leftEdgeTopInset to size our element to the same width as the ToolStripAction - // - we export the width of this element as the leftEdgeCenterInset so that the map will recenter if the vehicle flys behind this element - Rectangle { - id: exampleRectangle - visible: false // to see this example, set this to true. To view insets, enable the insets viewer FlyView.qml - anchors.left: parent.left - anchors.top: parent.top - anchors.bottom: parent.bottom - anchors.topMargin: parentToolInsets.topEdgeLeftInset + _toolsMargin - anchors.bottomMargin: parentToolInsets.bottomEdgeLeftInset + _toolsMargin - anchors.leftMargin: _toolsMargin - width: parentToolInsets.leftEdgeTopInset - _toolsMargin - color: 'red' - - property real leftEdgeCenterInset: visible ? x + width : 0 + rightEdgeBottomInset: parent.width - compassBackground.x } //------------------------------------------------------------------------- @@ -239,7 +209,7 @@ Item { Rectangle { id: attitudeIndicator - anchors.bottomMargin: _toolsMargin + parentToolInsets.bottomEdgeRightInset + anchors.bottomMargin: _toolsMargin anchors.rightMargin: _toolsMargin anchors.bottom: parent.bottom anchors.right: parent.right diff --git a/custom-example/res/Images/CustomAppIcon.png b/custom/res/Images/CustomAppIcon.png similarity index 100% rename from custom-example/res/Images/CustomAppIcon.png rename to custom/res/Images/CustomAppIcon.png diff --git a/custom-example/res/Images/CustomVehicleIcon.svg b/custom/res/Images/CustomVehicleIcon.svg similarity index 99% rename from custom-example/res/Images/CustomVehicleIcon.svg rename to custom/res/Images/CustomVehicleIcon.svg index 341f04c..671b229 100644 --- a/custom-example/res/Images/CustomVehicleIcon.svg +++ b/custom/res/Images/CustomVehicleIcon.svg @@ -1,7 +1,7 @@ - - - - - Svg Vector Icons : http://www.onlinewebfonts.com/icon - + + + + + Svg Vector Icons : http://www.onlinewebfonts.com/icon + \ No newline at end of file diff --git a/custom-example/res/Images/altitude.svg b/custom/res/Images/altitude.svg similarity index 100% rename from custom-example/res/Images/altitude.svg rename to custom/res/Images/altitude.svg diff --git a/custom-example/res/Images/attitude_crosshair.svg b/custom/res/Images/attitude_crosshair.svg similarity index 100% rename from custom-example/res/Images/attitude_crosshair.svg rename to custom/res/Images/attitude_crosshair.svg diff --git a/custom-example/res/Images/attitude_dial.svg b/custom/res/Images/attitude_dial.svg similarity index 100% rename from custom-example/res/Images/attitude_dial.svg rename to custom/res/Images/attitude_dial.svg diff --git a/custom-example/res/Images/attitude_pointer.svg b/custom/res/Images/attitude_pointer.svg similarity index 100% rename from custom-example/res/Images/attitude_pointer.svg rename to custom/res/Images/attitude_pointer.svg diff --git a/custom-example/res/Images/chronometer.svg b/custom/res/Images/chronometer.svg similarity index 100% rename from custom-example/res/Images/chronometer.svg rename to custom/res/Images/chronometer.svg diff --git a/custom-example/res/Images/compass_needle.svg b/custom/res/Images/compass_needle.svg similarity index 100% rename from custom-example/res/Images/compass_needle.svg rename to custom/res/Images/compass_needle.svg diff --git a/custom-example/res/Images/compass_pointer.svg b/custom/res/Images/compass_pointer.svg similarity index 100% rename from custom-example/res/Images/compass_pointer.svg rename to custom/res/Images/compass_pointer.svg diff --git a/custom-example/res/Images/distance.svg b/custom/res/Images/distance.svg similarity index 100% rename from custom-example/res/Images/distance.svg rename to custom/res/Images/distance.svg diff --git a/custom-example/res/Images/horizontal_speed.svg b/custom/res/Images/horizontal_speed.svg similarity index 100% rename from custom-example/res/Images/horizontal_speed.svg rename to custom/res/Images/horizontal_speed.svg diff --git a/custom-example/res/Images/microSD.svg b/custom/res/Images/microSD.svg similarity index 100% rename from custom-example/res/Images/microSD.svg rename to custom/res/Images/microSD.svg diff --git a/custom-example/res/Images/odometer.svg b/custom/res/Images/odometer.svg similarity index 100% rename from custom-example/res/Images/odometer.svg rename to custom/res/Images/odometer.svg diff --git a/custom-example/res/Images/vertical_speed.svg b/custom/res/Images/vertical_speed.svg similarity index 100% rename from custom-example/res/Images/vertical_speed.svg rename to custom/res/Images/vertical_speed.svg diff --git a/custom-example/res/Images/void.png b/custom/res/Images/void.png similarity index 100% rename from custom-example/res/Images/void.png rename to custom/res/Images/void.png diff --git a/custom-example/src/AutoPilotPlugin/CustomAutoPilotPlugin.cc b/custom/src/AutoPilotPlugin/CustomAutoPilotPlugin.cc similarity index 100% rename from custom-example/src/AutoPilotPlugin/CustomAutoPilotPlugin.cc rename to custom/src/AutoPilotPlugin/CustomAutoPilotPlugin.cc diff --git a/custom-example/src/AutoPilotPlugin/CustomAutoPilotPlugin.h b/custom/src/AutoPilotPlugin/CustomAutoPilotPlugin.h similarity index 100% rename from custom-example/src/AutoPilotPlugin/CustomAutoPilotPlugin.h rename to custom/src/AutoPilotPlugin/CustomAutoPilotPlugin.h diff --git a/custom-example/src/CustomPlugin.cc b/custom/src/CustomPlugin.cc similarity index 100% rename from custom-example/src/CustomPlugin.cc rename to custom/src/CustomPlugin.cc diff --git a/custom-example/src/CustomPlugin.h b/custom/src/CustomPlugin.h similarity index 100% rename from custom-example/src/CustomPlugin.h rename to custom/src/CustomPlugin.h diff --git a/custom-example/src/FirmwarePlugin/CustomFirmwarePlugin.cc b/custom/src/FirmwarePlugin/CustomFirmwarePlugin.cc similarity index 100% rename from custom-example/src/FirmwarePlugin/CustomFirmwarePlugin.cc rename to custom/src/FirmwarePlugin/CustomFirmwarePlugin.cc diff --git a/custom-example/src/FirmwarePlugin/CustomFirmwarePlugin.h b/custom/src/FirmwarePlugin/CustomFirmwarePlugin.h similarity index 100% rename from custom-example/src/FirmwarePlugin/CustomFirmwarePlugin.h rename to custom/src/FirmwarePlugin/CustomFirmwarePlugin.h diff --git a/custom-example/src/FirmwarePlugin/CustomFirmwarePluginFactory.cc b/custom/src/FirmwarePlugin/CustomFirmwarePluginFactory.cc similarity index 100% rename from custom-example/src/FirmwarePlugin/CustomFirmwarePluginFactory.cc rename to custom/src/FirmwarePlugin/CustomFirmwarePluginFactory.cc diff --git a/custom-example/src/FirmwarePlugin/CustomFirmwarePluginFactory.h b/custom/src/FirmwarePlugin/CustomFirmwarePluginFactory.h similarity index 100% rename from custom-example/src/FirmwarePlugin/CustomFirmwarePluginFactory.h rename to custom/src/FirmwarePlugin/CustomFirmwarePluginFactory.h diff --git a/custom-example/updateinstrumentqrc.py b/custom/updateinstrumentqrc.py old mode 100755 new mode 100644 similarity index 100% rename from custom-example/updateinstrumentqrc.py rename to custom/updateinstrumentqrc.py diff --git a/custom-example/updateqrc.py b/custom/updateqrc.py old mode 100755 new mode 100644 similarity index 100% rename from custom-example/updateqrc.py rename to custom/updateqrc.py diff --git a/deploy/docker/Dockerfile-build-linux b/deploy/docker/Dockerfile-build-linux index 14be001..907db59 100644 --- a/deploy/docker/Dockerfile-build-linux +++ b/deploy/docker/Dockerfile-build-linux @@ -18,7 +18,7 @@ ENV QT_DESKTOP $QT_PATH/${QT_VERSION}/gcc_64 ENV PATH /usr/lib/ccache:$QT_DESKTOP/bin:$PATH -RUN apt-get update && apt-get -y --quiet --no-install-recommends install \ +RUN apt update && apt -y --quiet --no-install-recommends install \ apt-utils \ binutils \ build-essential \ diff --git a/deploy/docker/install-qt-linux.sh b/deploy/docker/install-qt-linux.sh index dd5dbaa..2cc384f 100755 --- a/deploy/docker/install-qt-linux.sh +++ b/deploy/docker/install-qt-linux.sh @@ -10,9 +10,9 @@ QT_MODULES="${QT_MODULES:-qtcharts}" # Exit immediately if a command exits with a non-zero status set -e -apt-get update -apt-get install python3 python3-pip -y +apt update +apt install python3 python3-pip -y pip3 install aqtinstall -aqt install-qt ${QT_HOST} ${QT_TARGET} ${QT_VERSION} -O ${QT_PATH} -m ${QT_MODULES} +aqt install --outputdir ${QT_PATH} ${QT_VERSION} ${QT_HOST} ${QT_TARGET} -m ${QT_MODULES} echo "Remember to export the following to your PATH: ${QT_PATH}/${QT_VERSION}/*/bin" echo "export PATH=$(readlink -e ${QT_PATH}/${QT_VERSION}/*/bin/):PATH" \ No newline at end of file diff --git a/deploy/linux-fixup-rpaths.bash b/deploy/linux-fixup-rpaths.bash index 4ea8c5f..5b566bf 100755 --- a/deploy/linux-fixup-rpaths.bash +++ b/deploy/linux-fixup-rpaths.bash @@ -47,47 +47,40 @@ find "${SEARCHDIR}" \ -executable \ 2>/dev/null | while IFS='' read -r library; do + # Get the library's current RPATH (RUNPATH) + # Example output of `readelf -d ./build/build-qgroundcontrol-Desktop_Qt_5_15_2_GCC_64bit-Debug/staging/QGroundControl`: + # 0x000000000000001d (RUNPATH) Library runpath: [$ORIGIN/Qt/libs:/home/kbennett/storage/Qt/5.15.2/gcc_64/lib] + # + # It's possible there's no current rpath for a particular library, so turn + # off pipefail to avoid grep causing it to die. + # If you find a better way to do this, please fix. + set +o pipefail + current_rpath="$( + # read the library, parsing its header + # search for the RUNPATH field + # filter out the human-readable text to leave only the RUNPATH value + readelf -d "${library}" | + grep -P '^ 0x[0-9a-f]+ +\(RUNPATH\) ' | + sed -r 's/^ 0x[0-9a-f]+ +\(RUNPATH\) +Library runpath: \[(.*)\]$/\1/g' + )" + set -o pipefail - # readelf is expensive, so keep track of updates with a timestamp file - if [ ! -e "$library.stamp" ] || [ "$library" -nt "$library.stamp" ]; then + # Get the directory containing the library + library_dir="$(dirname "${library}")" - # Get the library's current RPATH (RUNPATH) - # Example output of `readelf -d ./build/build-qgroundcontrol-Desktop_Qt_5_15_2_GCC_64bit-Debug/staging/QGroundControl`: - # 0x000000000000001d (RUNPATH) Library runpath: [$ORIGIN/Qt/libs:/home/kbennett/storage/Qt/5.15.2/gcc_64/lib] - # - # It's possible there's no current rpath for a particular library, so turn - # off pipefail to avoid grep causing it to die. - # If you find a better way to do this, please fix. - set +o pipefail - current_rpath="$( - # read the library, parsing its header - # search for the RUNPATH field - # filter out the human-readable text to leave only the RUNPATH value - readelf -d "${library}" | - grep -P '^ 0x[0-9a-f]+ +\(RUNPATH\) ' | - sed -r 's/^ 0x[0-9a-f]+ +\(RUNPATH\) +Library runpath: \[(.*)\]$/\1/g' - )" - set -o pipefail + # Get the relative path from the library's directory to the Qt/libs directory. + our_rpath="$(realpath --relative-to "${library_dir}" "${RPATHDIR}")" - # Get the directory containing the library - library_dir="$(dirname "${library}")" + # Calculate a new rpath with our library's rpath prefixed. + # Note: '$ORIGIN' must not be expanded by the shell! + # shellcheck disable=SC2016 + new_rpath='$ORIGIN/'"${our_rpath}" - # Get the relative path from the library's directory to the Qt/libs directory. - our_rpath="$(realpath --relative-to "${library_dir}" "${RPATHDIR}")" - - # Calculate a new rpath with our library's rpath prefixed. - # Note: '$ORIGIN' must not be expanded by the shell! - # shellcheck disable=SC2016 - new_rpath='$ORIGIN/'"${our_rpath}" - - # If the library already had an rpath, then prefix ours to it. - if [ -n "${current_rpath}" ]; then - new_rpath="${new_rpath}:${current_rpath}" - fi - - # patch the library's rpath - patchelf --set-rpath "${new_rpath}" "${library}" - - touch "$library.stamp" + # If the library already had an rpath, then prefix ours to it. + if [ -n "${current_rpath}" ]; then + new_rpath="${new_rpath}:${current_rpath}" fi + + # patch the library's rpath + patchelf --set-rpath "${new_rpath}" "${library}" done diff --git a/deploy/windows/driver.msi b/deploy/windows/driver.msi index 7d89feef635c83049c7fdb3379d4a138e5238492..361a907f21b7a7c31d96a3ccf69d76076cd49976 100644 GIT binary patch delta 1056383 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

LyjGDO4^SW;<2t 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 z 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%0DwbF#k~uBRMoXGK9e~~PGFK5Ab}u30z^fF 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%0A9QDjvpKrY9HpHeK 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

Y0V7pt8H;)(Q25zU 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%0A-4V_zErXakO8Z&~070?hQmVcKyL}P*t#TF2h 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 Z=X?|Sfy_`JXR_{i5pInWH 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

Ic>pQ1; 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 z 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�I(QesV8x7Pahy@oywn59cPcF% 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 delta 5981657 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 S4alS7Fg6 z0@Ydj$aK5y)vSWl4AH;-^*tDEZfht7aif*C=qQ5r>no1w5|E1x65Sl;Y?V5lp-@wX zflvKK^nbFhoZWkmesE)|YuBnY%K5{I$h`j8?^d0(+t%=A0uRw@xIu+DE;WmN*7oUx zZY5WUg&leNfS*`|Up_(*LsEm$XL%Rpzk6tM1f+Wl$!?1vEJmw3JO*85_&oqAXk&i~ zIQBa}m^9=Px7g)oq?M*r=inr3bnH~as4$7;l?`t;HqM7tsNLiP*s9?~!_=deb{*EE z$~QG!9A@pGl9YG)?><8=;+ZrS{*# z`NOWY*Ji45V1tZr0|=Q1F1hY4zfBWCVw3`xeFr~H$kWddXoU}HZOLONB6i#NrL%c@ znZT&lKRwV1^^>Gf(IG3yn{77WwEvmq)AxJ!KX)IF>FB4Ad$i6!oPJ{W#oi`qKVd+#dy=lp6k0khdGuL*C4 z8DnE*TiuU8YCc)}i66sEE9x2z`aiGK#%lAFE33S9Q9*IQ9h!%=n5^hkq;^G7(wcMW$%U_(q=<*i-QCrv(h z@3d4`9cu%N#;YWT$#x@tb7dHes8m|SrOf?q(qi)Ri*9dr>Cz8scR)fre>{cv&BMuu z1{1Xoq_K_K20r~|8$6C-R)j5ikVdHs|8@wlM! z*W>Q1ZEw2KmKh%TW1z$4unB<*i7s)bNUAwF1nF}1 z{NeSOzYhJkj+Y9;?LoE5Jx!ZMw79K6Go@u*pzL}6{4*^V){w^Yjn&qXFN1A|?vC$7 znWr~yLy-S6z6%1aCd<@M8of?F^BdDu)qixUjI;+b3-I@DBhyUgQFm%F4pHLUyT`k> zsLzpA^j>}Y?gIQf>#Hhz+Zkq}Q5!AQrc{WgWPv;7VFG`4&Z2lWqxRovj~NZSecZP9 zfR?hB>RyvzWJKuVYE5se*kSkimkf{cufzns?)c1VVmtHqVJ`Huo^(ZgMKLX!Dh5Bs zbS4Yb4u;CrGR72XcY#2b&%e1KL=wcHc6h0lspR{RhUmW1ZiK z$+ZPoL4=JYmd4|Z?@&eFvns{l_V3tmeWEC7E;5;tt;~ASyRGsN*g;#>22T4e9jI*d zwnt$oCTsRF_I63T6T!QaUgg?CP&V`;S&j_IN|`>3)N|-W%E+ zVWZLUJ5b!?*;g<5P~f{NKWN!t80b zF^KhzyOQl6$yk=J7Gujj9T_QXBL8p>L+THO{l>%U*$>6Aerzwi?_`718J0JTtOo#b z-jNX0xVVDtTdP^d!_O7RQrSxp*wOl$%fzGkp>%VKg;iV;HXU$MXys-M%0AKuY#53w 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
FLh-@vrJL-;?>k73HAcr2__ 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%0Dh3#jnMgnd@$%?(@2odL@>ue?I>4F5)001D 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%0Ax>FGuod3?Ndh7mlj&oP(S_y{|Jkf-zNP_Zp z2ZCal8uIoEWPV-f&(&8es`aEZT2#=l;e!iKhvV7*5O-Yt&!9`h>!v#|m^u)#Z7|x- z2zmb%zqgL9r9gP8=DUHOH|4eE#kzfkwuwQRUB0J=K`Gx26c2&+r znkI-z@$i8=vsxe}m@K7+fW`RT%%wf=m#%lOy5gH;j+F$1|G2Yf4F?~loq%$L16~$h zowi(JA)vI>chL?ZPcP(No5&f*BMzO3JPr_R^y=x@d+kL`_vTHn+AL z^|Z<_2R zO?8I<9twRrlPqnkIYs3&oonyyu!x)0!_T$^a_yEIe8@+dxI!6Nxyp#oIJzG<8q=g_ zHX6;~MPZK{qhKl?y<(QTD`P&<#+u{TUQ7zeTS=AJm|z&cQQJ)oc#FBNgR{$a?Mg3C z8aBClv~*nfVR2yo#nr_-!n-IJn(6UrXi$dgKYz|4f0!&G7kr%0#VK`s>YfpdNQ4WJ z*UXEc3A*k;D325^?o{#!4fKh;{f(l?ioBh_CmTuY+AleIr6CyPYS(fQoiN4=Y_$=bbVJ?nM>qW^Dgr9#4QkjQTAz(sLt(cYpl$t3Cs$e{TXP(f5{jDCxM^Ll(kn)EHAr;tJEhIVqRuL! z^vmdFY~*P6qCGG^-Pxq>(r`t@+IV?=Gx4XTkUJN0>vq@6Qvszsg#{Oeu+W+t{l}%n zXNhA;PPb}9-jh+Jk#2ah+I&|6F%50bDtIkOwp{s~w7XgH!hP&)rg8!_ij$L>QwOR@ zw>`YAJr4Dhr)jd_H1d`mX_n{G82Xf$UIg zGQ0uYo*BpzEPx2JfyDy-7IXM(`~)zFHN-{?)~s20*+||cUu27jY-hu0@38*$k^*HK zK4r0L@ByXW=TRxmSn2`>qS>+MsR_gA4_k5rFdAGnVW3E=axhbzfPR4%qsOSMf#~ zNNsBP9j>N}x~^Ht;y-)J$z16-g*o5EE%YzZZI$HKDC^?;CSldOQGI70%sjB}P*r~g z)%KB%Q?_LvGY$ZL+7By?DPpQd&WN?RAIe%-AdX;g1k;Vu;Kd z6`kWd@q2Y@l4!Ac-{h?injxxsRSfhgPZ&uDBSkE%pzgi7%X6ymZspUG@rr)}n8Z*y zoyAQ!_%3+}8#aMLj8F@FKJya`*Ew%6<)ekcn%+9+`g?%iz%522US!dsG-nsj zo49~wK4yvBx~!83y=y*ov@<=+4&Lr|xw9fqoUU9ML*2VyE!yL!xK2F=&GI$O>DQl+ zJMw21Uy}EN} zzd$zV;VcJ+MQ}P?u!GyS`#>YuSu@o{KA{IT!p_iSKGApv!6;%cdy*NuRa;DiUc@F& z-uUt3DKmec5=#W=C5B z=u2pgWIbv%4m5p0#NL?l|Efi_$ekB+;(-gKTFw>qHyA1rr8v)Cb)M8AdGFf;4gFc+4%(Xam?I�PUMe^ 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 ZLopy+3Nj_L)HtT+UKQrT@ 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%0D*pQF3G+RLSt8EAy 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 z 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%0Dy0Avb@~? zZs92SLKmk>rhyMLWO!crVI*t*Rlk=_O~63&hP6R6MKeVamu{twzU<`{=1Ffo2}dj} z*a-YQ_)7K_JG_au2~twDcxeIFsYRvchG|r#N=;4D(Mo^yaiGS%fi^eO2g!>{7!pPZ zoAGkbolYJXuZcP90h=a1Wn9K=gVWkvko}$KFu+1KlwvNz*(fqsgP$kM7N%C|eucEG z^k>!fOnP6eph{&2TiRHhcz_xSP%x0dd4-*gl=cB(Cn2TNSZx6y87^78LCG{Z)|+!x zryWm>eQtk>O#%w|>(PD-YGwIceYEQ1@jTm1ZDesBOi22NmSXUa{(^)r_7M6b%w#g}Um;Ch^abkeqswFBBwXF#~ zKxWt4661o`JHvRU-pB%XKdB{Oi~U5^lo)yB#t~?d4$5hzPw8#hpP1ZN-GQ0kNVo4n zi7JIaHQKR~m`eqHuNCKN@huyr%eVNqY07gdnK(h}cYyE2FzdLyOukQJIh^J6M(l$5 zMSp(>z3a%{A{5FN5fvwtAOH8R_ha1}qcwu|-Pq45C2o_D!8dB%&Jn_JnR#k{w_UP1 z-vtaYY^Aw9FR;+++q zhvi1ItZRb zMU=X0L78nnCi?}exb;>NGwykwb@N+BkK7O;w#F|D4I{qet@z*xCOSdQ-zX#pCr)IS zf9Wr}4-u3PB{OP-PTLlF=l52d3cOzPyC?XTEsRyk+xXVj&cO(7msZm@Ume*yJ6?aP zmk@x@BTUQ_zip3Ow#3Y#_=toJs7rwUAFS?t-LgbPAE_rj zz;RF) z9aFS~anLoVC^yZWOkNYl=L8;riLa@2kBp@qhE*XAKS)QSoY!Y;?V(1_By9c% z6mzC~UA&T6SL1Y6L~xc>t;}^mL;ObDdo!gVA~$@E%bR!WIMMq`NgID*+b*17Y^lut z-*i|x(q!0W*a?`rQoE2{6qc4lGOd|QbPg1qDe#^6aH&KuK!13`D)qA?U3L?>N9fIo z3=}kqkZ(3_uh$s)yEBZu-{TV+jXnxKNv_=CU9rZk+Dz%N012O!(Z}|i@{3EMJ<~C3pjE+Vhu=i< zOKrmE=wL3*)dkmHFG(r33&^cNYX8*Hv}aOJS0?Ebi{C#%Lo72RW{PO;$V04*gC6aP zulf#=eLEkY#4k50F8-5>#zeFz?P%e7Jl_*BS3AC&aWUtP-dKOn`QZF~W(3KQQlI#>B+rn%3i*V| zqvV4Jg_bz!{=LT^z71cN>Mq(a3J8$sIUkj1X?dA@5dp4Jn#{PBMkI<5<&`yQBF+*G%AhibHx zado$sAtUO+AiLP0@EiAxjx3o=^Ya*U=I0N*V*jcbcxT)2#eg+}n=HZf`f_*ZHAOk5 zU4;!T*v{v2-X7E?8xXj4UKGhco+%`5`TOTc+slI@3g-HU{i+yV*MAone&uB#`G}!V z>L=@fuP}dG%4c}5k){C~&dO5ggWtAunfLd!MwegT_3tZXkp?qYPW458F!g62dA?h8 zTp98rz?e>AX;IOSNbmVSYJ=ONU46O1N1kctxk=$wXDVlA37h%}q)=pmc@|H~{p`8h zw$#Nsaq@e1r7NNTYpgZf0x08ntBdgSZTOyztqgzZtJ!YEwm?9EmqB%4ac_nd5=(8= zv1~Uz2C5b4@wB|Eu8nb97s<4>(!y`c0TUBhe_ACxX7WNY?&u0gIbFd=SYb5gBhw(7 zKXl>U4M9Vnkox#31b_$sisF)5&{$b{f_N;57~t4M;HGrO*M^3d(3dV1K6su_ln9>e z->`pc@i=8moYht{EqnL%ntE7EFr_e8p7k3>Zt6h+yNOv_mccEBd*6<6OFQ~M9lw_^ zoze}bTqS-Du_Oye95#jZj*_tNocrnd#mr!ZchAK^=7*Jjsp3-oh7*nxTVn*8eJhzH zR*q;|77qxw$)ZSWsW7*TyGrq2P)ZD(eiVNv$&z0pHtPuXo}8iiufiG-L9v}@^-zCX z5XMiQ0N7{}LGiXk*hw9ZAd4;ZS@h ze2G|3!d|$*uBisrCgvGgm2xpy;##OS^ow6SidEr>&wQzaQqoK8`TBx{vKcVFe9Uu` zvUHDnaeH}8{~KfzP-&sI52BH2?ni$dD9w3qn^v;^Jiw;wXMc#sZ%U77)<9Q7hS$`B zuR#A!)-((a5U(bh0a1I2W`zM8_FuyvcMG=Lx>))m$GYjg8?E!aOZY{VFZcN_OF$o3 ziUvxT%=uAe-Z_CJ*V!%tJa0tzg+&t63a4pg4WEb$pX6n^+CLj~VN4@Yrr&=AztBP4 zcz9fZ`$QSg&XQ@RV}6c|`=!nrC|)|P0=<*8KE(`RXY@-c#nk_*-SjLsC9i;+u^^&k z(jCWwgB5ZoXZCo+6i(8drt*7bOsxES5Wu1csz9uBagU%EfOj$|wP4d)Dwc(HGOA^I zFpQQTzK+)QMUJpF6X^N4I@o_b)e_5sRkZ%T6fDR=+lV z^d@s4pI#S2Xp$)`E=)eq!f)vV^~CdW{#9?{v4 zhbtD3bFm|W!o3k$AqhV{rIqX#Q<`a9)Q{CfD^*_6q@GH)-q9wQWD|cu-ZY}nCG+W} z70Mais>V*aK>hCZ4NyAQY7Y~ZvY?slKoak=s(2C4zO(OC9{3ZXn z5`NSxg;u0W*2HVCo@_NKo{$!7Mh$s5fbd{jLK4MrZ2aJ zos~7u*2g}2k-YMi6;XfGAVXGo88QX^wOX2r(w|x1(;O${c6fu1{z4I7w<`pFf|))| z6FU*+0_3_pnk8;XSaUatg*27Vr)QPU|I;R@JS*&fB}y)fmz0hMGqD`jjnG*P#SA)m z75MMcbfk*pq6wDhr;=efsT+ADV}c%9ww7>8W{23SfEVoToK}C4I!mK1lN`*(TamS? znRI_00j>Tzy&NC*+O&EaOH#xzsXeipkYGGX`N+g^BCXZko`_Jf5z|ewb-&WdWGA+Kk$+@Wqh^2pgHAH zN|(Rf+vPWl<>-HAew6ci_*{0Dv|h(q78-6nKpEtYZ<$aqT>WyIh)Vx(MIymD!UxC+ zYuRTRA(j-F`)AQg*>bIy0#0{9`k&#^fdl~r00?u05sn1I1}57Xk(FvCp9UY@5IFyW z$u?dR*)mJ>iw?J4C=PosDta*fSS*>M<3y~!f|#sZ8KZyTAQPSap63XEnmn5#v%v&P z%V&QYH52VDn0}&C8DE!G{Sml)39z)mJ^xwxo3W)>VfJBTrgZh$iDk+wd*TYdYp2Xr{SsBnUiFFhP|d^`szOp zef23IEix-H5D)hG{D}9w3C4ahyd!0Ux!_fT&S2(o_9&lC!~Lqny&DY#?k0X1#))Nx z$tpOi8M9?Z*)5uQSTRH4AYRF?5=O#f{c|erD0_c72{Ret)AXgXWn39iLn@toQGxu= z=i@Ab4hd1V64p{$`aeDbW6rfS`h;o$trsOU;`yDvKy{L%zsep4>eb>6${BL7Vv@yD zrtiW(4K}9HYqmpuI>2~ufuF-t=@x=_DMgVd5eVg?L)6^^$}0HLZz`BW67_N z4;p{7gkCv^e2s>r1f%=;YSx8>=Kzu7HuZ&blR7U)jl`>IbJ|z19Tl(1M9=#qSv*CQ zQQylzqmK%)bFOaANj{fXhj`)P`%9x1g_TlO)dJ)dkX(z@8@_7i2c;~_lwkVPb&zAf z?nMt}5Pwe?>Xq@?vG}z!ePlK#QxPaXAv}ND=Tv_y$6iiao4WuvfYDZYOC`r53|2x?239{)0V^0Om@A1CeHG1=y$WW^Ph~#}yb3%@oQg7(YAT~r3=>Xys9c<~ zT7h7ik~jjj8Juul0;ic*y(y&?+?0Q*3fUC$N;O5ivQ2rfSW+5RPE(94NfgA2(2CGS zXHs~FiVUPimZ;#6h|bXE_ar{FZ(zO$rgWvD@)7! z>QL}z&T1_h0^4OBX(LQr4% z!-dgsk@*Z#>qck?1)!bQ1?pU6 zInX0ts#^Vj-avST`j+DhmezkN(h_FDk!)QDyJ81xS=P3>pK|q{>z)feFJs>>x0&lPZfVWsX6_c&9?IG zx<7lF%8hM<>6mZq{4|2^CkrJncZv~Ig%GB&+=Kj!?5KGv4Z~4`ZrA^jI8(wY@%u1= zKS;d8*O1=oBvnjvOs#iMFn96pv%+AOVN+2avfA~PnSEGkH4>d$kf8s45qoe^lP2+W zC!yxTC+?Wf=g@CC9G!mp)TlYtTXZXtTNE5sSNc zemDcN57tKX^yQu~ivt&qLvI6F$webwpfX;w-piJ7dx(TSOIjT!XCr}soR54*uz!?& z)WMOnj&moTM4luY3mm49EfnG9l)DXodJL)&O7mYsbo6vsH8y{UhHfsMlsnpO6i->P z>A>K;5zTZo*8&YKIRC*VT(O6-Zw6I8+!H$CYglid3hHbq&QoeEac)Wv&5u!}v8`4Z(T9{3W7&n6M2@D>OVONWF+SgN3O; zp20s)Z8}8jw_z9OmD((0KKB^xqOEcUARlGy>HlLWLu7w;FrvK8t8?f@45!9iSkPfw z!cOZc_r=gpfHQZE1Dy}l#0X*)>!;kvTXDTyso+z{nBZ`$R6I0w!3N7u!+s(>v-WRc zjOR+XsGF)8frj>ey>+(gu1N&3!Y2uL8mHA-fg+ zM}4=x)DwRTHw;1-R7J}=V9tm3@Sm^_^ti1^W`TM6rjq>H7$1Zy^h%>~V2Bk45&?@- zemsB*CUDu%8?r`3mUv=9_|V?KlZt9V0u3#8e&Qc)Oq?@9|5?mz!ti)DuqYU7EP2*} zodui5k)h@(zqni0ueESX)MaxSei>V0Bt+!nKDJ*B%dy;k%s4R9xLVHo9Rbsn+Er9kcyxT{(%=mIT=?b*R~31`NO zOomk#WD}F&{1kPXVUBLA!qx#TsWd!XIGW+iS{aRF=#+KMjC?ur z<#GC7I#ehfN>fo4S-w=}c;Nv{Y%3=;xzm4@?X-4b{pOggg-QDK2**{ho!hj(qfK2) zP@@;Jn8BGPtDS_SN)ETCF&jh8R^E86tM7R8mwo3gHc3KWL<5NaKTwO)+H6Jh7IzSu9%>*i8y%zY^o*DN9cc6 zcZwpuvzeoOZAGbg;r22xO11RZ1*M+zpF$L^ixurb*Z=BcXKCNRgL=lw303%MX0dvD z7#$;ZNQnkDW8Kv&%baeP#K~2ZY)yVBby{Ipa>Y}R_3~-4ovZrW7&fsFT}x;&jy77l zd92Q(32**2K6qf#-l71Hh#lyaH1U7Ls)+IZ-Xed)D*nwpThNN&hlA-aPMD^g(AzK$`XywXvEB?#so=qnuc&zT4aC9cvUQu zC)I-UDrS=kis!Tj{q?d$dhNw4t2)~ph7jb9z_&J}iIrh$PpQwZfh)flIZmR+U0Ta< zM;43wWo>meQr6DEd*U;GlfM6ZSmq6Gvw;D9YefUeyXH4=xl-ROC;pl7z&Z8jz#vdVEfkCX;iEEvA-YWtINf4i8o4-CrpW`wJc$%; zL3Z-#V9f5HAINyvyX6E;N=lIbCniZQ1pjlGRQ3Y!?fs{<$AH-vr*Jq)DpWhGQjTpj zGGJC@bm=G?TOP=VA`X8;sruf+#bVAGu`BVZqo~#C`Dkb$>nSrJ@f28w;@Ds%3R}ou zoYBGYNdQhO>6XAO@Djys_URjQ%UU2dA+*5osJi@LkB{QIPm(`^!r*LT4PR#EH-wt* zFf*Dx`Onk@_ER(&a9aJnL{-u1WH@7KXNaF-2y(XCLe4LS3_X8xAnqt|K(xKxFxqQD zv8>hQfks+l-ZZI3C0?9oUD+|kqIeL>+QwHff%NqN$~b zK6ovFe5%_mlv?2-Jimq?_GzoZOH*mMsQIYC2=c6*H;f7wLw=qYNHeY(7p=DDg~elQ zW<25h*k&>Yw*r6T>){zh>pIxhq&&*!W z*k4PtQC7xPPd&Acmu%1&Wxb~72BQ?Q!6O=O)H-Pmdys=0J;<2j9*|$a$EerHx7*+Q z+zC=h1xbIeuOEI~1VRfcfgp9S%o{+(kRiK;EJ67R(Pp^N;i%?^02*q-X+_y$llS6bKF>V6`@9 zv#fuGSE|K2iJBBoo&Oe8L4-SqLFThk87f-O7y7(YwI_NQ&7sv+lAc1jt2xzkHns84 zO`t~{08P_IB&Op-R%a$DRb?H$La~3lRvE0cr0E-%Eo0iAI>v0PVMk{pdSzK@$Krrz z0E|k|oEMc@Q=E}=dQfO22vm25kXDRmM=gJ!0b_W#=SfAkt;=5NRXtL+=({l4woTVW zo%W1Z6Vxrhs2r#y=@}w3$Y;=vfO2@c=S9U8A4a17d7+uzhGsPtku!Sqd}>FX$u`RN zZ^O>4s^(Y4>dXt=hh87XK)s-tfPEH-1Pl8NeBD=iwp-dkYV;b<)~m%SKZQf+Jx+g% zojNobjI!$Nin4Gn@-{R+s=F_(IY`uT;KvU~+uAQZm0)oF&81fL`%pt0Qpi8Y^Hm1e z&XC1wEhMz`k>kL8a^YBea#C3glc39}vqG#U8R&`V{w4huN?S)e`wAYlAhUnZ3XMM& z#->7@_J>OmvrRP`KS~oHLZYBYA;^E>gSc_{a4`gW08sGv(d=j`#BF7E#_7g}XjWy_ zp08<`J`3Hj*WxPRNhuX6=tTc$JbO;`0NW@i?CE1frvLYj85L%>8je037vd282;nrt zXJ?vF(Y!^JGO3gp{5~z0wq=<2Wg%*4eLlAbX}V$FInNejdO37p=ZaU)DyM&}z>9^9 zq(H_I_MQ!XC;;7oYOg$0I$RKm1{Xw~z(r=r?&6RMgoP}IkSLi|EHA02o&X3^aiU=PCaclp4U*LH%~EXs$9GC95BC=N%VFl zF}~vZlf;zy3C~1jt+P&O@X%nOfr;BWbWGf_A)|nz)v~aLf=jKYF}CN#U!~l0X9JG= zJ~L1tma^8>sMUS zb+b{g7%X)5d2<|b-vDi_{93K2+i^`p0aXWxPDF)6k4Oi>QK`Y7fyH>j0%@hhN2W1J3}Vy!-b`ouR~}(=WPS+ z2Lu+NAMi+P(1Cv)9&`Sz@>cvAPrw7px$?FmkRb=eFkvgOylJbQeWOO3tr>L|UEl80 zbfdiYdh$}}EDbYI(AGfzj1)Si{|cJYexjQpDyOjMw3zAO>5u~j9C)@1P1$AS0$=uB z_yi?uGn$RAGc$v_RJC-m%CNWvj`4&M7P81e%zCyxw^x5#_pdt7&a>bpeNXYfn}X@J znnR5$rBnT(X&PzWcuGWt1$lWoAcYh>FNL${%gRI3Z|}5pY*#3&Md)v%!CyX$ z0-j5sJ!;ScU1mJ(jI* zf}S?siuHfD1ImTvZ8&=O*GZ-3JChp%+;`Ts5(S^+x#m?yxxB#fIsY6+Y>up{|kijS}j5l)&^!F zMqv%%PzOP9zdImFpYrMLS!nm(BwC+nrDv+N1KIvWVjEBrnxRyO6fY))C+y~hv$k5Z zm~Iy;(@NTGNur$sz-hZ6D`GTy682idD@bgVCd?yl^}WiOnYP+?rRi2gA}ZAkuVi=r zT0nnt@P)th7{}K_^KXVy!DH+G?R>AZ&QkGYMP))iR&CK%BX>(!Q;Ve?qehD7rlDf2 zG*s}38n>R&5of^Az#RdC2DK@Pg0~hwZm9*Zoq|m(;Ad)({^h)Edl}|w4`%6Zi$cvH zkQ)Vgh^yfg|AzJJ%+_h-i^No8ddwFq&4Pcl=TEH@8boP$o-X62H?ahCOpxFMjlWT{lPCiGDlJ|oTN%i@7yY%bBS5c$Rq*b7QmM*PDk^ovjrN5)k9=_2!n;IDk?7ysk z3dgm7My&H<6Q7+8 zY=YS3ac0Is&0d8cSgeWjG{|f)nMS;&J?Ye8*IJd_)ibYm`%BCU> ztrXHgL>o=i(;!H#0@6}K`)Ep#56zMxL!)|;qM3%}VuOXKsx>49t5f!W*PJ7+7p4aq zeyQAoTFQ=INK+!eraN;nzESN$+vaL!^d|;0yfrXlg0YIX3fY9p(`&vMXJAcWPa5&7 zU|YQ+21#mHZFTG_I>qTSUW~PWI_oH>8H4P_{-bj-u<)YG(G(l3gxri(x~-CA8Ko;_+6ln#|z z=>lGi@EojeV4%g!NJ0XCL1bcD$9)ZID5@uX5zx?SR)IR=v^KK}w+ISxF({4AC&uuyeSY#S1&5!>U3q5=M`?sC`>5dD+S%> z)J;6^RJ{@+(z>fbm{$H* zB|#_)1cho}J+?l7(@W2la__Lez^1~PUjC(Q{HEuI&O1iB0^A78X0txaJZAy|k|dBX zg4f?dLBWoag3fkn=_O2QTWX(bbh0k`S~xLf1TC6{Sp~f5LPDn0;D)OmNYD@vTWh0a zGvWqu--ol@AT=))G?1FHgg??A^c$4)wJk6j?kpFjTUn=nTBRb2`r7Jjza%QK4YL(E zrVS$PbfBrN7L?Q2+qwo?;I`pyjzea})O2}4DUDkciTVqiPJWl7!~=y9WW8|_C~rVw zfVX$F6e18Xg(xCfthSZ(H#;<~l{kHUAfMWB`LbURR zCsP2hMpb2L20&W@!C?k;a0}sqjYnWHjfp3KVT(@2h04Wr^xQX2b@nsgOC~re;&F+Y z&pN;8C2h7Uq|_$F4favdb*n=XZfr@>xE5cvA+p$i7+9Mvgcs|9mpVI&$1n{NQLu`k z3>_@oen+kHQni_Z;xPq{&I}oW^Y224YQjPx{{bBF)~ve6?{|bM#&p%b!_Y$T*L*sa zuav62LW+XVtIy74mbSm3rPkuqx)MRsu`07=iUW7C4xn(rKm-1lEY)36rv_-^z@UPI z0}w-h@CiY15fB>fQmqXAa;SJPkU@wB0Y|IPs@i%bQ}{3Iw6HT!mt~+IB` zTaZF|H1I}RSkxC8=vBAirAr+l!iBcm8)m|Pqz=N!^vUWV+uCV;gHs25tf3k(KFUP?AZBl!DH7MOF*Cw-i#ILaNlE zc&;!N096#G!GgnTgautR&6AXIP^!ZgPg}u%IO^3?4_j{_3)KwD2Bd-BzGC0VRl?MN zB-w&vD-1#o2eJx5I(4442%FS6&iL8fGjRi_QmKe`QzNZ&1gQd8qrDYw7_-`8h@smW zd3S*2A<`s>rda7hQpO*hojwDl>djy(l@&515!NXbax{W&6bv@>?;~Y|6cm)UdKaR8 zXyLC7Qv5Gx(Q$)ZECbkjqfuuuiyXs$RKgmV@@-4nI19qnL>z9k(=)sn>`YEnj+#2k zfh$o9Bw#`W6fQ7=kOV(x181dE#kyr%x2-i&mVTHb@L$a;vs&#Wp3{T>c@`87qVhBz zpY4Sm=(#Cuf$7J(rfZ!zSv@{W3|f1SMRJPGzdh|NIYDF<^mN zjl719`&Tcv+S0U>?snR3>9)T7M*It9CzavSpSd_^`DFC+Gx1 zpU2E0UpFWKoVcQ41zM%%e23QlFk(qgON#XupFVPP=>Y174p%*azqapHbMK~`Fm z4!}JF_z&b}pgsWX11v?x*U<`p-lggsRk=LK?eNV^o}{X+vNfM36>baD55>Yf;#dLw z-D{wk=s0>Fy?(Ztv=G`#r&AF0m&amEoB8ZuC~^ZVPIFj8z`On{;iZRxmI}e_HE{{I z`KLM2I9H{lTXZV8g|pO_s*IJ9^Rp|_nMJn3w1A`?EGQ75W)nKF&h-?3I05%G&Dqw7 zRq$e?rKv&{OOOOvbaadO3@>qUPbKR~h)FND(_zNiswjgV{?;iGaG(eTQlVfLi6JUB zT}v139%;2akW?}yQ0kr>rE-L!w^`Ptmr)kDxa<+9j^S87t;4X`9cJ__L`=yb5K({Tmtb8ebkKld~vi+ z(^118V)xqsMWC&cT0O~}%<-Q~uyZUL)q}55y)g?8qKXJQ4~5QTX52IN zI`c+Gu<@`AC018|i=V~Ss=;E=RuZHdAizKkd;}3h4Y=TdxR#?3wspYx*mJih){Cd= zuYI}&t(Z=#Bn~5S^BFN1Gks)d^xA@wNi->}=+16a}NLf7WI;*h+za&{fY{D3zR2F$Ec&jerae zLmb9W%6u9pBsj1i8N9}Hq4WIq*kxHwU1f>|T9~j&nWV(j7|MA=VlutO zKpA@@lKI>4m)X~wxS^_v(fuLH6hM`NUUq2dZEdW7BdGZ`i#G%ps_pT+Lgoo-cOq1N z@)bXXRvWZGIRxxu)M4^9aE`M2sn4DUzhW)>mTq4#Ye6F-P}Lb{`qU<-d2xJk=O=5s zsS+bts@_=01zR=hmlgimO3izw2F(lv5D*b&PqGz*|1SBtzw4f7Tq#j_;6knTc%Xm9OeXph2$F9f33+QMhg!i2@Dw2igP zs;f>$XhRDkz`V_^9AgVwc;s4w4(s3LY8CjXrP%RDPf&Iv(~WnA3Sew7*{ho^RvnuTv9zYC+agHx-*`yuw;<|& z@+~4l?Jdn9yv2y&&O!&S_rL0Jua^b68`>)9#rsg=Y`Tbb|{ zsae5MWo@-kES?Nr;Bd2d2G^gxIt9YdpdsA_@!njnDeHJ@s-S`bim0Uu3TYGqF?%Bk z#8%c0_`Pc}w-j3FKCxnROQJzVT4#fQ>(|1K!m!IrE(T=$!PN#|+8P71tJ6B{miVn< z5f;|=U1G~Z_3gf`4z{Rvq|?iGXCd{qaG~g}bn}YX7Q@)UY{A)swf$(PZdOz(i8wG) zu*U(90@7fRXEUjOgEWz!z}VEMKq%!6|IkXOkf2azh)AK98dcsHU1$W8R2npYHYt_1 zc_n)K2rx6yqps){J|m}+bYBi6Dv95=7YqWbG2JG;`xfe5apUSqfBI8f);g@gb)y{F z8wKh)T#Rnq-w+>ij+;y?TiJmZJxj__j;tJz2=!sNh&5v;kyjX#*eAzO9?%8&qzx;m zsU6?ey5Si_p}7*_RIY&-8(c$wnsKYPH7v(d{d5~I#!resqfvSr1&A#oi-FieZn252 z(tDJ2Ig8T=ztG>CV@>W%{D@c=GQa^W(541KG%DgvA>ba22WEgk1ArQ>**eaZ1Mo7H zI3`tAFBlnu2p(94gB3mEuzd%iRON3!qYI=!TE+_~Zi3GBL=n8wwR5JVF?Msic5LRFYasF;v0;+km2I^REqW6hIr=ylsOx~2o!XbFgaE;%~7%Aiw%xc>eZ zYZok0HrFpA1=omZRT>3{`h#u09DiSQNwL`Li3tTw9+hY?js3KEku8R5ltG45`Fa$*NLVrFlx;D&$obt$@P{)Rml{om>H+ z=ZgC5;za9d&i@2+!^P)}r?8?~3GU+T`JEQA_|Ktv^3Mg#gNi8kfmBz{XYuxa0_*}l z5!FAFS3?^R@DZcutO)i)GW>xKgp$JuWkAdFM`Fm-4Ig)ZM@dCk{vgu8n~~OQS+LC` zl>xOo3cW_k2u@a>4L!Z-lVP2Z-+Nc4XK1-~*9LY>>d~khBx0lZ7QkU_0Br>QLQ1Ix zsUCMFMrzDGvqs#X$DZM%4Cy;tHgLZzTga~*aeFJ{llq6DTx}_qqomVgvN@?Se)+nU zG6Got2xtm_za;qtKUr&h#y^HxzGibLNNzjWh@TIjACdZTtGPM(@Xuaz#T}iW&wltt z13&p06Y0^coYa&nXOJsN%Gg;H_Bn?B-tW2(lzm4WU3whufC}}kPUW;y?Z-|{dslQlV2U9P-ec$StrCju(Pvzz%)JGaLkh74C#aS zA7XH~z+@FgHYF*?ns9^8uM7#5G6B3tX?e|8#fXU1Decwpkm~F`k(*Bk= zg7$cS*My{{?YrLSyk(GyteIV4q|^33@&v^pWn506;pf(R%JA0D#g* zkv@;~f248B=N~mzI61nwNz#6j5KojiLwd-6m3t_DvY>*{X~!lBNrKXH6EYh2B9{C!x2CPdz0meVemi ztZJm%n0Q1FxfSvsx`*B@udYESX+_#||6XJW9O_owYZ`C%G;KeLGsORLUv)EyC2RGUn-6mV zz(@16Bs}ZCM)--5*J;;%;;A=3QXPC!V&kKK>aJ#|j*(0sd!NP_z|1ZE#UYm@eE`VS zb42MxX?>w2`y}uyu8KjTtNinSym$gt{?U;&TYmVFY%-*Mkb{-$?4NqBx*$4ibxZ@I zMkdRVVq4Ka#t(_5Wd-!(n4X)6heHopw%+CV=|nimh{JDW^CBtyhGuy0ZTm<)oC18sE8^X*EEJoRmplImO(gXkyUjOt2Ex__Z)Ia`^_q%50PUC zzS^2zVMUt@gQLZsTpKcfL;e=L#wvc=Wy*VxAs4q{&vf~c#{L(}9S3v^sv6#=qG{Dv zve-_t3K65pOOBN}Q90_@LOuK>q^++(Scuw;CF?le;<e z1e+7ObXKiX>E5o&_G4-wBWnqq-XczIvHh*Ld)Qjzdba00i~3!qFTOb+IhI2hXWgJD zok4h>3*;w!b2^}Z^M^MhK|n;d3w;{9vQGR9#T~BN@7`|=L)~|x{`z0}Jb$3lsCX{p zYwxgGkc_7ug2E%@L4)wz;h9~0pU+YcRmTPHAS1O&glbFd1A~#j1&Bznl7!X@hNi~b z;mLPI7(uegt+$W9VSgBZ(_M$HASL@sw8~0+q-Oh$czNc3cBp_})cqHEKglObBV+?A zQTCdF2xW3D zhl1RWa$m=PFpfw#X2_h$?v^8uT%_BqbmoB9E^5m2!<663l%ixsDHisA9KA=Fn2)FQq{J zMveg=_RsgXDYixz*X^plxWi6UBa2S+L4jqzBSAv4sFFs8+UQtD$z4fU9{IOJ(fvk> z`sh)c5+2q+^O}qlZ6gLYQ7=mzLPd6Xh)zz)nLa7<=3eKNr@S3eG%?aAqdV2qk2?r- z&4ng^qkG38wd7`?#dS>&&-!wsk7)z}SqnUTbj^n}6GadGb!pkUej~*n+0Qwh#u>|^ zJZ~g*{);HP96lGB|a#fO%q~W8%;)k1iMw*!|uT4Bfhwm8@{C95~K^d|n9dbAk zXbQy%M-wBJ{6Vr1XGek$NfyU;Br&VKWXKnP2l(2L%jHS1(6x-LQ(iJ09s|9j;tu8;T~#)Kme0*6cDrEu6Os4EDLeB5d--6+7mCi( zzrms0tIxd4{S#kp$`Y$EAi`rm%BExHKB#CSG8Ic+hc0qyC(weU=R$IosqvTD#ser5-%A>)H6 zo;S5RSLJf(Hjf*Y@2iz_D~G^sK17h6SkIuFd2AN@U40MwDHLy4oX5g9K_%z>PII(E*N_N-3 z7G~L9%}Kk;MshSDIKscKHhvu}#i&OT958O(aVWnzvIiY*Q8DX(c!~QcQtvk1 zy%(NorQ=DS@NYx#-<|gr3@!4P_0J$soq+Q6+g*2tOcbN5gys ziw2*N3zsiOF31UtP9G0{-c>@M2Gw~do#Bg^k)qxMFH<|PPXPX?ZjylSC&@1(r&HVb zEv=qe=p8nG<4S(jUx5v~FJu=;k2d$%AZ?@c9I`v=_Dt7~|29x9^n;&4Im8*_m2($C zwOcaMSis8ATBYlz2IDopIGZBtS*yP4TOT1Fq(g%J!ORc-_5IF&5T3WPPndI&KC=HD ztVog?y6Xq|zXLCu@_v#TqmN%s9B*orb9vVuQr4))&8M2X@D0&R9H!iCzfI~7R?W5; z8(Z^LrrorE>e<1&q~olja*O-!PSD$FJbO}YMVqzMUM_b}SMSk2^F>eGYIkWitHhh` z`hRmYpsnwkRmT2*vBfV?tu|RMk!oS0#$*5An@+-DCCyko9)8CU@JU{}0Xyf;Gyd15 z|K(-Wc*b!E{GalSF+uMH2&Mq^6!~#2+)E7dfM*)UNMt@^Gtvdg4J4yz7Qh8X_*ayx zsSImiR5}l?LgRw$k9MDmcTQ6`1V9-%dZ9y8D9DWcBlCoRK9>~JxY)DUC@ahdE}k)H z$}@q0KgTrgNMlgbJ^w||{P7t-BW2=%!&t0(+pPWovoAIx>KEwz=nmAe(a6>62* zD#%rKuP#?QSHf3DE8wn$CBmE8&d&3sgP5F zrXn-NgB5MlVzunHdKJaG9fE~BXn{w}MJUru&2WYRzQxE5LLYI*;3Xgq%Czp4;h=l5 z-T>mjObXGs60%cWREkY~8(P{UDX>SG+{IMzI1mGWfsHC=(Zwbs@&Tp<#BrIl<6jax zJS!n&FKsGP-9Z}aMcVyS%b5yEcqD!L&LeLGTNMJt%)XDxwhboF%Das=$Y|GRpF7 zvj1Iw5SBUFcye%V(3*=q``^&zvw9|-o#0A!ccQDl-pFnRm**Lny2G9v{v}_Z;Fex& zIp8B%REjm`Pcu(KCpH`*p*tFv`8vKOvJRjRf8!uqD3R-}9<}y{Iw_X~IDo@)o|8Hp zmSM--O@xch3bHh0VYWd_%q>t-&rAD?1ro`Bv0f68fzMV+%o$&l!>gAPN__r*s=|+Wq4_1MZ4Ila7qIz_#9xNHF$iGuWdq=Wd>A# zXP3|uhC8RXD-#EWI1OuZ`d6pvz^%L3*|;u=s9BmM;fxNVFiklB)y&wGh`Pk=?U!N) zh66H$HQrz)E;c*j8T=G`*2APN3}i-9RBrBx+)f3YaL7doBB*OMu-Vy3B|qb|3mk{oHhxl~`H%yVKz zRUk9*^kLSvfZ#y1LP{E5BB+ulxUxmz3=V2=OSy1c2GI7ywC!S;LtPSb@MB_s^zZ_l zaCKx)$oLSO^|?nCTr!QbYMXB+t+gltecRuP$W*q6?2Q2)ZI4J;6q%4(VV|vlej%U- z*P@Hbvbq-4V4KBS1u#x!DVRf^37rwBCSfUdj<}Q-%F2>9&`ag^DY6HdM(qdeFblM0 z$c}bNy?vZ?k9z!AVD&jR!7Idn!fF{M7K31>Dc6amu^n$n*u{pbxG1C_WSu-VK`S|m z3b-y#L>U|RO7$qE(O8|j*3mYbYkQnw;yYZG2y3$xCuOE zSKl^)2I&dXqpAX(U~f);J&PIx+da5;1FZZ+0bW87?_&Il z%I)2NRS9QuaEDBJ`{A^v4DZEc;$0f?53~XaXEi__O%jZwKmxC5TbrDeqP9%_r5O?g zP6zZ53E5uO?KIK^zhF{FORlxtxB;dWLwZewLQ(02v9ZdOt>QSNQbdC61acp=s&r|C zqZC+%&VbYq9=AOnX~dCsfmtWqOkAXWQ8lS?XVMW20>ZTyH76IFincdy)PPEEBarli zV=~9N8;CR)kR48c6JAGP2Kd~@wQxiVd!Q(*y0O9XmOv(JOa2um6b0b}e8GbrIsKy= zKw~4ZCW1CtT0olV;73kyYNmKgQ&6-Qn+~iA+ykhBv|(p}+34U$PXA)pX!m$x!*TS1 z&D1mya|dR`i-|%-<>W_{RibT*xev~!flKlVoIYxk2d7SdvM={LyegUkdM`P|%yo`U zp@VQyzXK1!4)@?I4bJ40r)~-dyJZV=HY9&9KpVRzY>uA^F-L;~GHqP-*vf_t!nvb$ z6sy=KG!5CS>q`Ev89Ccwt+Kss^DZ5hsHx26JW9PK(WOpJ!J$+EFAv2^<1W#Epw2lx^MKV_|%*dXA%W5<|Uc;G`$ zaN;I^K)zeLrm?Bmdw}@vO=}0&1lp0{01kNaLvR1JK0|Y?VOCR3!Hdm~yANb~fkB%N zDT+fna8jmSzZ(M07Z%QJDy?2uIg*MFwmn@|U9_g5!B=RSilgvrqL6BGY!eufftoVn z(AW?Nxtcnp5#}T;`f{d9QNzjerPshQnVeK(@}%FE-d-P7;!a90(o6 z_`hBCvhNbu*l0Vx}vhveF4NnuXs|xObV=_#ChU5hM+dtMmm9xMxoCJh`4d74|Y@@VX%h(le z5)8%K5Z5lz5r6=I1Ug{6K&At5)+KHQwgg%MfkCYO{ucn8mTBgNEJ($s2FnS^P`w1m zA=JaZ+Rr$bxdG@20ai((ruLQ!vD};yApl2}UvJoe8EePe2MpXaQ5DQg`aP_F#9#xV zehqhC#fuG&ya`&-x#8afLk#pgsHUO~n+av5)B`h2?pcwrBD>h$knjOJEXu0D1QYtJ zEm!n5ICU@j9lQ*-iMq!Trm#Gyz3=vE9%&!5yy$Xtwu4Oc|SmR1DH(54~Xi zyUNHZlDQx4_>SA`HS{kXimOzodpL@6_%(T2CuqGBY zzK3E(ftd#9?NU?ui%kdDgMXqed2fMKJh02K_D%q?UTikdcYyr~Y^7;}=;?q1WL$#T zM(~OUXqmV}8JmSlg1}%|;H>b#tAVKn4OO+Uc&IzF1ushpbR6 z@$SGaQ+D7@FpkR%vdj*^AP}J)en;S(osH=upaGB^_l*YA`KB8}~)*MR%8(5jCF13F(euHrJViL?I zK^$%q#70#K$g#HxkRz{uihTzLnJO+;3Ckmcp8vgxn5hUIJ!O~WHaI98BEmQFefz>2 zLQLGE|NcWH1~n3v)JETrPk%MNQZoLmT%|WUB)c438J4NX0HTJA@{1bD0<- zMzcr-95zlYslObUWkPhxl^L*sDb`+o*kFIk7=A;Vzj~y{feD6x!PHf43obT0=q5Nv z;|F3n)&c;cN&_2Mc>5ctg*2L43)X&_(@$%G)hRMTt1_>mF9s$s&|q8Kz%Bz+GVV~~V`E7OB-}<*nvySOoV=TvVih}Ebz#naT-uRF4cXvMDE zV9Tdd93LV?AAwo}vv4xvwqQEbCd;U)n18Syq&jkBS#Z9HTRXyAZ%|as7e~OM=UGN9 z0{N50;>bjQVGo3o%FGv%xVQQufuc#se+(jUV9T10YLdmGg7QTyfr_HzG?5kC+97EO zJ5i2<0zmU~Xvg8H3U)rAyoY-nS{X#5PF~4jG?2yhfG!Gz>G9w4#0fR z93g@G*~ItVDP#kMM7IIm1Uj!b2W_Ctwnja+CuBh=KlHRgF|4 zU;!L|0pNg0^c3^=pYsO04?UP80NQIKjM=3t;-NqwrZBUXHc@No?`KrQGal2-dDqt}5|f<=9eIErXQtEdhD%I*M-X?8=+O*2Pp z@qE|izBlGT}xcjZXml#WyTFzRLnn&-&&1CHf_qVfdLk zyZ@*D|EdB20H9_L0F3Av91MqH#^v1mUZ0nG|FAkENUY0>q6H!(fgPWp2sa6FlaqIU zcR^7TfHXPW9py{^L3ALx5Z#DwL^q-v(GBPZbc4D<-5_odH;5ZV4WfL*JzCLAZV)$! z8$_;;J!|&(#$*acGb#}FJGcZsk6j~vj zGUMJX4f3RVhAzCoK!2jADy|6+7El6z!p?NRFANf34Z&UeK>VE;T7i$L_aHBOw14rr zQF~@ZfKXmsExHH_%N93xgG!?6cq*`7C8-Vv-~g_0pzT5cB){w}#xh2<=p0JRh#UZO zbHl6n2&fXksD&q^h0wwIBNiay5`fqPY@lX=p|4ocq=gt0GJRa(l7=hSMVk75@My$w z0Z;soa&f*$Y=a5M1e_1AQ8BPaoQG-}*(x~#0*n;ip0UjF8o8cm&}qb=ZH5h?t@O$@ zyrCnSp{1=Uh=#`@eJV7_mDf^1+s}nu)qhEwzD;gj-d{5qFV7DMc*%j>y!*HbrF@|N z-zh2=k~^6H6Jb2AqaAraSCyBtk_HZQZnj@bz! zMjPWk_DgdLcVGCs^yiO%_72xH93YI0!ciHc>f~UM^ zU%4OU^LtYQs6+nKP4Jk1YAzNN{4;dUbG+~eSCfF3ZpMgOf&_!Gg^@GjwbCZDGBNMI zehyVNK($5G(#yFlNl<>MTf{%NE7QtBb7c5+kV^ObTq(A@LzNhQM(9fnY2ea%FKT!C zN6{J5P6y&mMUXE~Gk_iRR8CKQCc99E zMQr{BB1_nRq=6eEtND}s4^5nPhKR+h3rYGvP99W(&{d@ycxK5sym+b7(bf{n#jzl zD8eH$*41{PwkJbC z5Ti?gyfZ=U;YZ@7LzK7hLFhh_DcAp0*w+pBplOWWC*ABm)Nr|tazO%Ksy6#LQni21 z)u|bqQY}5mclrtj?wv0|N&NO6BiEZD&eNOy>Rzw?GM8$t3fJd366X_$F@59Nm?YiI2A(~f z!&fV7bbRG>l+>V8fQBv&rOzDJ(iE5@B4-(fpHqiQ278rogE#Iy2qo%1VdVd*6)e`? zyQvU=o8{v7_ao_a_4(h0%gD81bjE8=IlNk%`TxKCp0mZj)-@lknx$1WV2f629qZT+ zPu94!_Nk}M+TYFckG6Q)hD6e@jqyHu$-mH~6-2Z`dsPwMd-(T%MuhxEJVQKqWo@4J#uKxNbB$}-tuS8I z_?Zk^J;F4tYE}DBcxl)JChN*v0+es!EwrTuZ*0a{SR@HA_X~BRksU`MQkn<_cMM%X zL-XMCI=8ieB!t=3zaAcc znGVlK>&Zg_1bzU}x_it`dT#t{6g(hC8XIa0-jX^*g>il1)%?J}O!WWvEwd`)Z0mJi z-$5kVk&NplSE9{ZC#;eqYbQiL;~S38^+R36jblezm6($$rvRh5J9*fiC$oI~KQ7^J zsaf~;o28z?k5L5Y+ybu0P=?=shP~8(O|O5#I6NGKy|eq-WFMzmD*-a1Co+>eH>I9> zQU}p|`X0zbsXq-IsHR?V3MT2OhbfI1NZA>dH7}!^nTwMp{f}v^Q8+<X>yMx z8z@|)Nl8E+|AXhn&*jbTYGhU?DwwmYQvw`Wunfq+q}Eq-j&A}M}^-praw@7 zA{a7w`H~#?K4dCki3gzp!k|TZ=q?)qc_yuXfV#W|&(Q`=Ie*x7?n7wyo@ zzx=HGrCyKc9ORIL4s!BA=f-(zwWv!Cr&I5EOC3(7R=e~h_rU5Uo(%+l%pBZS4tYux zv{NuTy!Nf<@ozr~QCW^(X4P>&pM<2AMR>egR zKW(rQ->bkWsy59>XsCsMt;)s|Y^juBC z`;ETYv9??afmiK)W8)`tzYd@SwI|6$o_&&IfTTu$zVPg2~-Xr zAmY4Kz)qy2sNN++4`xS6%4CeRDLQ$@C(KNEh0|x-%5#V99&F%QeUkeE{@GZWnT{-G zueq$RR3xYMyZ9Y{{tFUJI3&=DX6Yu`@?NTKUgW;n-}5|D$~nC&A5ULjj(NBt{!bZZ z;VlMqd4_p(1%M-*KxJ-NGwd11TVGd{<>DOItB^{41WjwiS!T)iFL6xAn7-_)fzr`m)(HQWV<-AQ^@ZPu9rKKCu3OjQV#0LY!2yq9|pYa&ACo zg-Pi-q(f671SHvNg7XFTg23RGi!%q%9sqzXY`}*PW1?_2eFj=T9+fH-6UWddmSizm zwoH7?mO^jG(B0D6<@9hj$V)3QKcCwY{;w_6N9>xe^cQLl)ys7XctzBeGa=`c3eaLTSas zagGacX2s>re+(%TEZHY7Bd3ceG;hwJOc^a6&u~oQ3`cofZe)wPpB;;y?wkW-FJfaB zLFxKM#+$}euNp~sF4}8>0AqnuZC`qK-g&RsS5*3cANfJh+%imIFhFp~KE@&2kaIQ? zl>LqYgbbu;JU9vr*aLeoY;?5a8EGjrA?xi%{&CK@qzsCjRz~2(Gx`PS0ZYXb3$oog zbYYEQleZJVf!$hh{8N5**W<+7v&}dj=>oZ?+~RBQr(F<7FJ%y`yg^vLb@9>v(5thIz=rm->HAh=O zj+XWlkJvWG>Ua}GEgwlNLS*tf^g`D`i40jiLmuXM;a!-Lhih0^ti-LCv$Jbf(JZci zWQB@rV^|>}Il9orPRAA^tkWs2qrgAt`$U#z&4|Z8-Lt@knc#bAegF&^l@m-;CF@_I)p1VWY8m<&Q4r{9^_t6dpRWoV2he1g*b3)#&Ez$FA3gX+Pq ztM(OzTOf5k@5MH&>3Mx5#^JA6KqGw;TEtlvKCVulT)f#0&$#)(%9;3-Ci7J?q_(k{SJG0IJydC|wp^t|Kd^KduVHZjJ{3YTjh*VZG= znn7H-8k*7{BI7!bVDdhUW{1SLcNXVczYS2 zOu@Fg(6vNDud{{%H!Wc#u(N9b2Keu$uoWLkIFp~4)3tK1V#9_U*0hS#OscS+4* z2gMt>twHAQmz{y4i?V(gVW@`k_$$XXwus6TQOJgZ^0b7HrSeoA%Hf8a4H;z^M&_#2 z((2dS+&oDgFmQf`l7leNR`XXkFa)w6S6sZaGk82uIqPSVf!dINF&w!+qH}EwnvAc7 zGUh0$Ftj^u%~F$H=5wa+&|hHXiVfF8Ecfr1P$V`&K4LW}aByMZuy1xLJ^9a_k6OrI zY*4}|t{{u70|-0IS1x$38hJJ=8quqb_MnK_!Wyp#FrfAc3rIZ!7Os^+z#-MfP|M|& zBnC7HngEijz@l@1{u^2Cj1;J{V{z?iwMC`lXG1k<;j~#afMQ{5h)U?BM$5LqF}E!p zpbfVTg+WuxV&1?J+=1=F(svDK5P`Up8{0r^gzbe2L1Yc~Zlax~h-NTyDjr2u2O6s^ucD?qPf!p6CzJjOoe0v{w+N?qX|(T~oqWFlAYec* zrvLx|k^lez!T|sP356fjYyxLUrYkWb(fzuj?}iY+gREy8+0OU=ggGCuHu)#AW>RVE-7 zB&SK2a{Y|f3Oy>SyL$k~tX-|SBh>>k{LWJx_z)cN7|LVg3wpdRs7ib$>t_vxdR12V z*R-#GG2`kJt1wI9{-%3DA&sC9+y;6c_ThvZJImO_UqtSAt}`5t+vbrOyUYk~Kq*kR z)E|$3KCrgF24R#diofz1lul61xoD~o(}5<9ZGy#S0co9}juvDCPJt6@Vt6+fBLJ!* z+?i9rDBz&XPOAr9`dEmWpsdp?O(EQXVy58d08T)$zor=JqAEaPGXQ;!4~v%pTjs6R zB22(Bb6{#5JzCrjNcbSYv&j>uz)(OirwJm>NhU=ae;{q299YIjw}C~Veque@iKApe zO;b?<$$ZP^xNT9+R5I2-L*zlFl-G~I-Qw+dxX8ACRGl6lk14N<{exos@S5(Y)3fxc z1LruaZah$bIi!^Tlr0|rV|kDB0L)B<2ABLUqW$=l{KeAsl>G5B<^P#NIr-{&g-;-{ zKmVmXe^37X(oeq)@KzZy&-`e(N~)fJK7;8x@vkQTK%2qu?5gyLlojLuZ`aDo%JG)e zkJ-P^8GiWfc9AZtSKQOK>QtpaeG*O|g>Gz;LGDbc*_uEjxU#(`P4ik+g1YZ?aQcJj zMKk-shX}0`B{R5zcW^xfpM9kCI$^D;CQG_7f4s_k+%n69pZ9=cur2zyuLh{*KQ!bi znErV8f)dd+v?u*JPYK~PycN6JN5dqz#)Q?U>O8#CJRIb9LnnPJ^SiXeqgp&O<0s$C zESu*^3g6xssPMe~aT|tI;(Yf4bie+gp!{o9W}Hj$dXDPsh_YW#=UwlK=B28541U-K ze`i5=!nga7@H@5jv{Ci{U1tE4^07K~SKOW|Rhn1-=Wu4dyunH5md*~UnW~h-YyUWn zj1^I7#{JoS3elZ?bn+WhZRaMcfP;$sj7g8w&Vatp&2rXHFLdf}wtg9-ZbuvwE^K+; z(wYL)17^kesN|B?{hoM}w~I6|cm4x6e;y7!#2>sTj!xarjjQM~c%OI-@9@1w!YOYi zj|ZhZHQO}g|KOB^gS|xz#O?D(PT&cm!PW1ApM!p33 zn1)LDE{D;C8!4oP#AqioF!vps#a?1LDrI7g0OK(GUg+YoisF0!ul`M#sCZNk`SmDxjdxhn&cC|ug z%A~|vH1FmNZ4YFQ|JCVZ-4Uy<8$^=AuLwq8r| zsbQfwxwooEKH)}2Hq5=?T1LfyC=1pVOU!$(VZV2T&vuYx`z0Ib59i?PPGii0KHuTS z3U~qLM06nm6a21eXfKDFf1r*@u0fec%V}eV*6uHhuPz%T%oytuGK-u^W{g!8ncT@n z^oFi^O<2wbDu%H)mFbQjUw3V~mv3E<_YdR8)};B0OSdx$oC9kwZd2YA^eLp za*}l5%Lub!c45PV*zh@J2Sj{GOtc}0FXn0N3SgC1pzI2OF^%$7%eYUaxZ;x@V?YVi zArPRMkv4!qgBF`Te?c+J2p!pGB=k}A__Ko%qY0g1a17_bCjvZJXg`L7Ov;;R4=WfH zP1lBw0HXy=05XCqn1^V#bjX)+)WKnXp@lTLQ5z>fg-1e?J3#Au zU`R4Ud|)LA1;CiB2Gp?4iq|Q(S{^Zv`NWgB5DG9KogJ-D3JIW z>N=taa~gy(h=Ql+6Uwo61pfm_1Qv8^N;6FDf&od}E0Uwwr=G_ohI=*%s6;k~jYcpD zq#fUls5%i&*eAk!&W95AXqzH*ZV#(@a1e*&y46JQJkJr=oi09g;s>K%fJ z1+65AFj@gR1}NCjA}oTQ9nOF?N!jbkW-zS>tYBNM<)s4|Y{Ax~pJN#q0s&vZ?btSD zRC@2rEo^G(4@zE!K>olXnUfS@T=x$IUf}DHod$&ilCni>o_g29ekg30?Xtj<_kqCR z3Hsz=f8&s{ap0cUMQ~v6_#j0UP}*)=7F}XLpwt0QOZ`=LNX;-?#%7o*&0wv7<^I9% z(12{e&w|lgYU>qf8KTYudkIy=W37dqYxhoTS;f7wR)V$S0A1Y~LnquzZ3un4x@B7eaG zS}oeD?Wq9Upn*@ft0IiqJ+JaJu<2Y>*hD#=@E$fM= zdid*+w^ZTZ?4J9z@9WEq_jzlIw*x7;Toy$(z zYf|lqZd-1+yQJOm#B8~?`!VW@mJj(*Qd7f2AzCkjY&5-jCSf^ zOt(+9UfO!n?)zf1K8s2AsW0xfTJKI47*jg8!H=A0%|5Zvx%-w5zQ;>Dise&`ptBJx$WM0mWBL1P_MJ)yB}wPlOtE|^{6zbkjuOV zxaIioQ~|QW9FrRi=b-m;&hi&Cy#J04xAG^QPCxPe-_e!M(fH-8cmb8{f1fY)65--b zTf@cm)G<3cZ@A*_n6bCijKIf)yViCLyVJ(9jx9kC8mmF+Re#$u3RCefEe&<1&BJZ6 zwrmw=>y=E|h30@%Of(y;U_n_bGF1+nceqH?ffh2spnG9)FY;8Z~3M{Y!pa%G~b0WTy6d3DiH!s420La>8Rtn~yqf63@;vp)SNP539J zs18FrxgZAU^P!uOB)%2GK0!@FDHY2^)P+$1Y0^!JV!ll{CDAEOnLwn(j1tnBS3-hj zqu6##o77U0nYY%#{yGX~bMR?#KA>hY6OPSHX$7bO&JHVp-0Q_ri3kBg0)QO=0Zf~B zy?49)?%sf&M_@O&f2fE(&$*E$4^<=;WhD}YtR#gBz^TCSjIs^z{&1#1VNZdJ=M~lM z;s2KqsJI(A-a#Si!k-D!s&dqCMEwksl4dkiR#k;F1qg>w0&inEt|KE2|JD6HeUSr! zZwT*3QzM{*k@s;?q#~(=B*cjoB2*ZL1VNw%0}|yrNt)OQf0_hJ8U!JLg^C~$3FzTa zP!(X@&2b)1w{70nT=NRitPPGrDq~ykS=8XogW+WCvM$eFZkEFC@9xGwMFquCi{~H2 z#$fv~u>T+m0RW(~0st_o^K|p7cGjh=r3dw0R6T1M3YBn@6`au|2u6=`S((>F6irC` z37M1mFjYa5e?mV#Yp6*gnk;CPQ@M&lY!%7D24K+vhY=y0U?R*+44@+DXc!sDkG*rQ z{CUVe<|)GD=HEmtJon!#U7n}@&K?&>b_iwcAQX)<%b(*?>5$EC(%D$r0Hlq%!-^t; z{MhmynQDQn0J|izVY6?j4oQJzrh6>NGfCGpAFj``-vl~A5hH=AZ7LF}$nb}1njm!2=;X9yN>H&yn1Dw`FSaQ-3K`S~Lx zt^Sgf5sC&t0y4lbD`NyBItCb-11Kms1A}F`|7j^9E|FPBQd@r_X7oqKg&*UQeJS2Z zS?fA0U1Hc z7NC8)#WLh@CR5RATTo0nw54ol`8jkdfp_sR>*{-iCPDbeXcnCU~qDOzoXGMJJ zHzAz)Y?Rp4a4bcBgFZWMSP>k0+*>@vnFykTe=}yg5YpicFu)%!vI8OLiVQG$5FLK$ z!bONm5m&SknqRbdC)Vio&QlTE^CNb1JEf5!bVuu6vZ<4NpuY1}06(_fk-O8CLZY%E zu~pG=hy0=PQ1=31t|~Gz7t`VY!4o zf8GiX!^VZ%8?%!J!wrf~g(A&VS_NTiShr3Y*JZNlk!`~Tw%n@COU4kWW7^B!roH{d z!*~<)Qi|^r7*PGYo+=f0y#V8H_Hy^~WsFbfXf$zE!Q3^}(_wqU7tRZrTxrH)mNeG(Cpf5;IB zf@64yBeRZ}zpfhw^uIun~mvl0)JiNHHY&VFel3hFjwtNzZ+)#p=s z*LGLyi`Y81+gb^L^9ROWo+Igne-$eGR!r?q1cS3j4e!QdcmRfKg4`rEC!W`sG#x6c zgt#$lti++9xotL~&>cv=6YHuhFFEl^Pt}(8o(YF{YWB@T@*B!x;!bVhByW?v`BBy3 z_C}jV?_>l46Y)5%jXFW_l9=6RC`>Fht8}@#FHH_<*6K^Wzbm3^J8RQ)e^yUT=Wx4| zm&n`UAhK0?r#j*^`A74b0C~Ie#2Pknnd??dk7+BFFgGz(RhhFU4B`8N%6aKF!+UXL z641^)yNuP;`b@XB-eGcsV@VhbDw^|E;a!`gK|~dpYC;t%_lD%6Qm1MahYhY$ zSkJeCCox@;D5J3cD63Ha15bFJDZn_<7Xx5Qf6+!K8xr4~WMCYb zAVzO6{c$<>d|DN#pAVit0~}gh%vi>o+i~!$zrZ2Gmefk%IBEI0rY_ah=M@~+=R%a* zso9E7SEezKsKTtwvG5p7$Apges5dT}ijEyu_63IIZa2+C8X2TS@ZH}|jjqYu*9>=o zIalpJPg>}M8R6Cqe^;$eFWgXl(KR)u-I(4HcZyKnLp(TJNC?{4ES7kMIFWo5ipo1= z?>f4G#jUu$oj2Ft^1uT6H4;hUQj5%-+eb)JCXfH!vh{Dk6a*Z2=on}ou`i=2G{lm; zrLgDPM7FAl(=N$t4d;%AQr4Tp?2&x zKJewZ-ZV6>DbGw&-9Sj084(#98EWQMi__za4PC*|F%Z!9@$=S!FMB=T^7oSY{@KZ3 zzk<-I_}hz$e}=u2NKLDFkM&fAs(sk-%-+U=7cl$o%Oef*&}RU1m~+#=6TBlrM6I)n zM}u~>*mc5`l!MkJ)jYqO7D9*DE44^47Yas+vm=5_OGXf2$beGX1PL-Afl*_A|WJ5Jri$ z_Mq#4!Wnd63LeYC4ik6sydW+<^Bp&R0=#&y6p#gY)_5aNv!WddJ=<5*M3$4*MM=~I z4cr$gtDL9mJ{zSx4n>k?%#KDmaqu@d1hdR|6u!aZwj6HwIxOYyBRb2`*F0Q?wYl01 zVwiT5f4qqLt&WS*zT$Mi_^QEUZjJW=K^)OBuxuYvI+9=KB);|W)~nUPytJV|_)1L& zbY8J`tf9zLm+PloRRwilju21e$H5C5Y#%T(S+7Dysh%+7bP;)xaI7(eBvCUAt>lnf z;!bF#OD~7-7L|``2%q#Qr`?Y#SKJLzZuakWe~qhC5imE8TD%$zP*>5j17#a)_y~HU z#qq+RrSxXjuuCnI+EcND6xZu?5uAp#yT*%h4gf+YTbK?N_?FW(M`rZxUeQKfGmQ&&ITh52n^wq&a ze-GeA9@iC#BohS~edjG|d`Q8iuJv$BciTqjU(ysB#Wb3T&m8dYYlYo84;|4Y``{hz zj_g;mx)?JCy)I7!j_E_R*PFYLG&qfW8eZ~&;h83i^nkwO_>huM4fkC7?Ne9^6N2WA za!20VQBD^+pCsmdaDwnj+tW;~-`ho=e|{+x*SXpo3vWn{Tv79uJWy56yzsQk$=78g z8p^sTu3Pn`y+81*8<2Nf@&GGvTd{{;cO%a<9;B11awSun1_nKKHxLty%`*-a5$2zuF;r%Xwx&ZR?SP^Bu*7mkc@Qg zf8lh^-$GC~okWmYslxIfH}(=2o24=8ReYS7$AYlh0R#xz0|W^B1Aw2)Pnv4<8UTO- z1oQy`0)PM@KnM^61O(&(0)PM@KnM`<2LuQK0)PN7dzAgIx>2$4oMd$hf7yW*QW3-( zr=$f!ZT1jr?^!*!Ddj1$CcR3Xr=#8e%|6S_&G$$C-CesX5BH1{r%dm=t~Fv$sS=kA z-DEPPmU_0m)kJ?Rh!6XrJc!+&_|wU43pV8^RHmJ}uR_GG+pI)#`>a1`spebu&n(|b zd!sxmWFOV5FE{&b??3nBf96uJJv#-`ulbUil{7j_lGL;uDCzF^AlrZ19oOz8y)^L$ zuJ~3nYQjp%oD)_l@2IrWbihwM?T)RyCm!wD=ff!xEBoz+WAtnE!{gD*1c5`Zn#ep+*PvW4=#sZ5=T{Z5-Gn{|7qYO$=kP4 zB)frsM^Yx{E>d()&^^52G^g;;p<0zqQzKd)ub*!xF0@x#RK$~J89s_HAm)GDfd=PI zJM5>1vIZpkzfE-5f7}X2oMfj~pq+Sp;6~v-T&W1$Q=cHOwQ{MdY7IT1oA%QNN~*y< zSU#=38#eS)F7`_qRj+>AA2$;11Zroi(Y`#WyQU_x?#kn(8r@eOY)R_VxUKh#&QlAg z*%2!qRog3Vd!Wbfq)O;q`ni%>&3R9S3Nku4ffd{8`8D6&e?;3Q2N&2#DOM>pa_2bz z)KC*89-b5r>ZR=*gHM-EvF$1abCsTes?5BHE&r@8(`kJK+7okbZq%J_r6cewz7=aP zQKWBFXGiT4o8D7FH{xfnO}Lt*AK&V*2K_|&LyuhL>n6dtFyn^J3CVD<+B6Hzj%>Ka za#$7xrn&oUf2Uo*z6cK{x`m8PtWs6{Km3SN2)9N<)Faa3_K*y{oRUPuCuDT+gwm-QV z9~@O!e{DKH)E;sj#xWG@;iq9+2NVuSm^=JUFX>^hwgKwy|Mjm^nW^dRf$U+?VW2}i z2UZVg4y+tNG<1bEJpkViU9yfseqj`%aXOG_rh5mE1p_owPAsg`fskqqB+l>PbHRlC z^HKS&c^FU_m49**pQ8S#GD6P(k#+n0|N8x9e}dEQ*vr&Vs7_yt^+8d{^9ozi(7ieV z_?>#i^D*X@xTyS7)q8|dCr`gp)((Gu4z1IMi@#co1wGe1qaMbXNe{z)e^MOtH=&IM zd~A?F?HkvXom{-%osRQV^tM`}%cMQm=YEUMjag?HCdxZJ#>VjX$?nlv>9Jtw=qjf0 zf8w9Mkttg}{Nx#K^^7`*8aXC#C?d8z;_G6JgT^zJujv>n+MtIV>dE*Wjj?tv(DuOw~ubEV9-pc?L72h%BnKwxYmvN_5g%x;;HCRgDJmr`LiMFI)uK2 zlMzzuAlw$Koil7-94wzO1T2VX{y3H|f63JHZK=w~pDm&6@ZT!uDWWxA-Jau)ob|~i zUnp5xe9qpANA$qO)y(=($dz#u?#`L)^~TVSBV9OW78U5r&6h0540^OGHD$jSVmHe!ctH6@&4Cs<+JOAd%C^Xu&PM(e`k2V z(Jd9xQyMQcspy}n0Aq5x`@OCDnNR9F#Qr*Y#hmL0Ujyj%u0=mIA{FRS?fSLa|GkiD z(vbqQru=)m?txf#6q>SjzoJ%5cm~{n=1&XBYPOO(Rf+?0vgzpsVU!Ue!Xnk^LoH}Q zS|&eOljhBLNUnbtBg(Yjq71pae@6rYTt3XWB@>`rOZ*Lr!?fr)HkChXKo=Z&xA>=v zdjEFnWM%)hHs3@^LHmv#kWazR{PJx2uF;8&z_b!I8RlnFLmigMC-1?8iyOQPfem>z z5YR#H-C~XmBAGTcYK=F1C^WDO6B*bT3}w>`$lG{38n?~g9LDIfXozKof2gR(;MQ}p z^jzcE-{&4}L3FM3b+LUF@9fN54i0*k{7kiS`Dj4R;nagk17;3|bvqDEB;Y#%XY@J2 zjFHJ5r=kHJt#2CUZ@ySwU_o`Q8%uME?xOczU95*e9m|vWMgMO#6Wj&yd3jp9QMP)LrF1meHP=H4IcZFn`-# zXP6c1-hLNG9?B}+xCQ;&e0+ajGw%G%z5%(&1u}A<#8m$hAUu8le`>4))}&Cpuz{Wu zBM>*$r8ZpjeqKIj4+rjn#HM3cLNT6%KJm#Ar$HU3`;gG5DV%za?aaWPjqGIB-Sg+? zuCb%DFdOdixo%(nBS0}`)>Q+~hxQZNG1NC+_=b77A?@#;@etVe=lKo$d=1>aL~TCc z65P?fgp)j3T$1vjf0VXo3}rRV@mE;oc+}v|eCTj19kWmF5+Hf9FxNS`Nka?ftKV_D z7<1mqpqE`jn*2d##vK%%=9)d3K~%J3a>5T8*CR28B@vd1-RyEKq=5_beZIWidR<`I zS1~_IH%s`4#boj_YO5s6U#k%-9XP;A>|dg5)TU_37^Nzr#m;PB zM|g8mT_@w0JKZ$4XKqjTfYLC!=|i=-Y)O7a6@DiqI|GRwk7Nbx?g337(-k>^Q#jcE z0N4&c-S`Q;#-IXo>L2x+B^3?3_~@Ld*hetxn@=h;e>ah+RWstk1@srA!l*Ks-|SkZ zhx=KQVba_=q>LzztWTg#f9rmX{}Z;fxPBf;MYUT9Dd-jKz@XZ)y8pY{1`8kO06xe8 z&^;=f5!P4)VNwt zc^E<8ut|UY^3V?yW~#2`==j52fb3VG81)6n|0e|qLoE5uPkQ3E<3HJhc`+#elTg3WHDQNjN< z_y3DHAoy~eKi*Nj;=1kSu-qx)*xz49 zVhLX;k#8q}PN<*Cdx2Zms*8?XZF!@c+g$NvW(;!u3of9U{irlWK77jNT{y5}GCvxT z6^8-vdsvH9LR)&%s{NdP=LWkyB&Q+Sv6;M9Rf1!=x5y_B~Ar8q1X`49j)rB2TvZF8jRQv-g#k?g) zxT8SK1;FwBIqo^2UMC0mA$6N`Lt$p=xH7vZf1Bl4k_87Jcdc7Ye$^8dB7)3i`#=z2 zm1xfDikn^(D9Vvb^*SW=&&QR=JGMW_?EdZ9Nu!sYp<#-2 z$^;1JS7tLS&n?c~?N@PoK>z<0BP{4!b*2*kzEqk+rHWFQf84(B)2FVj7y2;h7&|KU zFesp1h9-bE3BFcRp6HIie*_JZ!3J$$47t{Yr>P&KO^R6#4wwVPCB{v{XArL^wAS97 zY8j~TILnr0XiD4sU0~^?$74)6df{on7|chBw!dSGr?F4OV%B$d34+B6-%W6j_1_fE zg1Uqrr9={s3SD&=ph4{gXTXdu0Ym0#1=KQ;jEreUk}?KLU}n9>e<0cN-zv;0B1p$eE@#- zzP8GYuLzebdsUF(PR3Uylz+`t;?nEd(<506TKbX43u4AK^$bI;o{(K->;KqGu1Ell z!J*&WYGf$`y19QPe--Z=t)-~Sc(_P%U-NgLqc4G1`r}29j_cCpwyIL^R4*T=vJ*+R z<94Mo5|`_qtthSF zjQWFOuZhC|(A^!P5OZgG9PZVXkeM=tRmWlxD~ntFst8_j{Jn+C~S`+$I$g-__0cYlDUl z!jW=#mgjN#Yo8plV(2p+kwk;;@a>~0g3*>ENHg-hf4~MzqK@byMxaG>EI7q05^I#T zm-Z}9799$0>i>Yo*KiorL%-%1y=$4f!58)%$846rFDKRgfyvGc?7F~NF{J30bHxu1 zw&GiKT?W%wq*c!HHR(IYa*X4VO@-k)*etrk(%37uKc<1=&V()EP{K=M+f!&^Ur`7T z1*g?$f8wm2YNjr3Ms7jIL7w*n_pt9FKM}3uOql?1mwq=px|LG@=-LYXh-Q&S3<6SW zN}iA)Hg-7T_bRJwTv-TMpBP_OUj4T>6=qX(wG*p~^>-WGndO`5E~}zgp>s}OK+r)+ z*#)u4bZDhGEhno?z-9qXuBB#X{WAqW3r^>ff9?C#-lGyw#aC+^RtNW-a}(S!s&;U0 zOZloP_evphr1y-nS?u|STz~Fq1i_@UWg&%7d*LLOTI;Wh3)FnvZ}w= zNaI4r)!8|T+8t8RBH-i1b~0P8a9Mo}4v>4GKVBBUwmjMsKu;SMy}jfi*Hak{tJXd^ zf3I#4##p0ugGfi@A%PC=Gd66{yD*hH1_k6a4xv||!>l|vNRD#I7N4w<^lIz0EaI>5 zEmk2<9N$G|EYZ5QBlm(W^Mc3VAjBI)t^)_}XO-U17nQ;`(Mo3YiW~+H5=3kbABnRy z#!8^+{grtBHM!A2+fY^oRpFK#@Njyee;hvxTka}xpbIgj3xZ>wx5_gFS&N|rtxV$R z2n_MPjb_&ctagJeM3Mr^-x$-2FEw_$Oy0QwdyaxH$LlCFtg=h-Ya|}5o-bj^2U)Jo z4zwy4VzXRyh2j>D+w`&srx)UjK~`VMTrSWnNN+V2R@QX%4@T=2dNF`2!ym#;f3koN zrnk_?8>??nE3sg%669i6Gb+rNF5<+<5&wicLV+w}pTu3MM$X%qD=Fnq5c zOmX`Bf_pnZ$NduSk0`0uJZ)OaW}U++e!8IcFF3|QK`b!a)ne@vu-;Iu@G zK6yj)(gxV}7MkKCCbK>Y(M@z7f8vL=%UGMOhf4L4e=Q>7OpvGgiOO^${7w~ikzHbx z&1PT{mBhTFGtH{^*s^jay)IgpA7X-Wmry=S6Nt=%(z5ya5w(b87hRJzj6~Rb|r!mEIm7B&I6b>jLNLYD9NXazf#i%;1^o;fLe;Sr4N2Hr| z%$tBlp=zx_nm(Cq`Ay;qE+<+|0h+>D`bOOU>~IO!tZf)HgaGwDbi($yG0(nu3mRe3P-rEZ^56iyfBTwHf;H4x!62)NU@`!q>C#Bn-( zr!l|{wgre`!DQUT$dT=B;tgf3jp`nb9O^{004KTP{HnAuGD)6-q&jSNc0iq(yL8$&|K35lQffGL zNIgkR$6^8xJ*#|@vrE@}kFl$w_|psx0$*A9M$x2X85)e`^lAo1dOVeiLAr7Unmq~8 zQ)#B@H%8Bmoufy?eEYJL&HprQR4Hl-1UZc@ZLY~(k%83!6f5~>uu;?t1)@$%6O4v3b zojik>s~}(pmuLn?zo}@-2Ek1dy-I4-i`_=(Cd=BC3D}G8H#r6VYX621;bR+z|Ji?e zYA`n4Lv2PulGF{-DvaVjzl9S(>Pxrd3*%8XWVcmd!fL(J@s$;gzpb%1@FF63gp`Fl zB@bmGL`evSe;{QPgcL+LC{Y6Pp%Ee}5_1S54#JR;Nvb6XzXd7@AVwpc1>qum)2p}w z652d|OcshlN|LucwmpN-@#U*xnblo!v`J|oIHZzw;GHUd7At@K9G69-@H4Za?c*?1A2n-vR5SmBD@JY;yp zZx5c6iac#_Hso&xo&?GGU+doz0&}&a{ohR0>9=Wvy(v}-HS5gyX0d++U9 zNGl;oNu~%=;3SfW12_PH004k7lrG?|;dMfl+ca%fjqxh6vdRwudriiZo5(QibXcys z-CaG&t-EuYcYQIdg4AIRW+TGE4`?C ze{adw)T@21)c(1o4v&#Qx;YaEI+J#nz z9$?9a`5#qsh%x5esCvie+7rJ=Cq0jGw=5h^5rBR&_~FbXB9`23cFPDmWO)4IZfmGX z!hGe$Zv2$nZRIK4CbI@}!=^g`n|ebWa=HYkL$Gq|?dDX{G>RMwbe&DJL+*VZe+eVx z)|<{-FKVQ-C>3d*&KCQhuU7K7?>sFRv)TQRH?WIupDJ?iSrh5re+T$VhPby~Ev8N;LG_Zfo!`f=a9-D5oBSMHVwu<4I~NjRH0(CNRNhA7kTYwews2pDO5TME(E z8^os0xhnSFR`}E5xgbln(eb#{e=Ba`Y)<|FlQ!VnUFb>^tx!1MQM32O1W!JDKl2;S z(Oc#wlpyi^{wvpWfx%kh{G@kT<&n0?ylnT4+qKUkZuT0GKT>H7xh$J_;mdtFG;5NG zFkj}J6lx zI^4e_xoOod-yLS<+$x>MfAgvl63*Mlm#OaLTS-R^+C4J^t;pf0BXqj<{kvt+zkjlu zmE3G@#H|A#Z)FR(&n~^CJ143PP5g8yvu2fuuwzW%n_lX_^*fP&MyHSom+qGqnz;K( zwueUL92p7z1E2Yn|Fk5D7V2*SVe~qBnZVIZsIxetstLLD4Z;4z{z9^E_y^ZtjfvqKqOc!msZs@MZ$OGzg;YO2Zg?l);BP!8qG_M53?>PL=G<%Y+clL3$GhkZrltuqS}g;|oDq6<4YEgd=_)Mt8yfx0MB1JgXFwdF z+6vltb|9)B!A{wu@|O-g<@sw%H@<>z=Q-6;&c~M8f8iS>pP6NR-Z%qo=+lvIYpWAK zdq#O}3UtR!^T<(cPg?V=54$=ih3DIC9O^*N@g2VT^8;G;C&1A9TjZ<*<(K)xx__LEu2UD9-MFw!T#Uri5sJWs}c^7a@vXy$2s^GAQC z&mW(PJxmx7)mrC;-hnUJ47Cwfn7!@!Ys8m5f0`fEJPO1&ljDQ5uJkEJPq@rDhnu+L z#7F{3mmKevUwgj=vcEHa<(Q`AIWo@1Dvfj2>)jtSJ*~A>DZOGxjX!97M%rxFlK-$| zt<+?sa<}9``FA$23w4V%@t*v%>)|8LpT6x+kAL^q`+UuR1LogQPh4XFPqzr-_wnz} ze?gZF6*-bwRQ40WC%@~8AMl?nS}N_mExU8l9R8&CTz1iEXvpxVUKqvD^GaSiJUKTQ zfidt;#=UPP`zP0gQ@5kB$mTZ2B4HVm`)DBpM0A6#k&KAxGK#sFQ}ltBai*g?B-i3r z&nDN+$y(W;Ohlc}PTF3wI&!s*+v!W}VOlMl^VvR_x8+mAGNBsX@j>QIf96UHf4Js| zjh9y08V$CWx9pg?3K4&1z}6d^%0r zKFCV0lv?t6uw=I=UKY z4*zOm{tw4vUxEPn3czHY;smeLCf)mkZMAXDza>(}v!@R!5BVUwqu7j&KsMU4PFF8{tY^{Eg?i3?%qazeJ-C0^3wdv)EZ!@iLDJxtm?a$x0P+0Cch5cnc z%GKBj%k#1X|AdBEqeP*)-YPLOOw$>Di5&-O1Gu&OnnNY=7Y*(nc`5Ych@T*yJ`#GW z2E#Di`2pTQy-N7#e@I}sHp8S8seTdO?*|G?FnWLB-%az!QNE%L5JR)<_LeZcg+!~tBS#o?es zn1pBva{3HXfi+Z+@68}gVWeto{YRQ`&>qc2Q+-3sYzo7VfseeKn;Yw4pWC}IhNd;c zp&HS3OgmtJ#UQidC-18gaa&3)yS$k*FORA59mf~c9AeqONtme}+!jA?U`i=8J72>x zZtAifk!3-qe2cO+}*5f&MozBnOWX9 zU^=e{J7P4PJ7Y{J$zWO+f9klWtw_~+<>j?H4Jm&leD=U3r#tK1 z&i%s?G*u-vxpsM36eYLAFRfQ)4xU${pgUS`W#P)nB2^ffk{VkXB`0c1=dt`DaQcQu zo$_8G*0xu$3`66?jrMBJseb<}qpJS9$0O;%f5gfKSka;OHKFNB^-+PpVL5Leu^gxB z-VRDB8^S!EoGE-GVG?ltA9!rZ|7KWg)b$%S)H0$u|TuZPZRhwXFo__uF|?Uv*3 zQv{H&dn$i|slJAv*Ymm{VJRQ#8?F0h1xCc+Rp+RO;h2s&u0*bX>dT*$uE6sdp?{tfLMuVhK)cLSRfi#;C_usH;keZMDSyszi(l9V8TJn94&n z)Mbusl)R*@fkA4bM9~bCRL9m}SddcXu_qNV!Y;~-aZBVEf?3oP$23ORjqFhsm#e)8 zp&R^}td&uF&}oe|A!jtjg+_w^?W23Df3MmdIG1$U*>~hxa*PxZSZr5@-x4=4(x0$O z5o<_RGv2?d8FNSu=frcGx1G!?Yr19(Q-wQ2b4NMy!V>yH2ancW&#>za_r=_cewr~iV~${7 zH^Nh<`lh!05~~kk)p}Ga#HC@yagG@JjCu2*H|kv7X(ja;8~nMlWyN}{Pk)u@JUsYg zOiUQ_mtQ#g=$=X9KZAq@4}(yAf7+B-7|6o!L{1pW5>xFWY$k=r@{|D4aW95IQ^MS7 zk+H&r2Gv-;`d|tUw8QAcGB%oim>Xg=ENHK@NWDa>l46n%`Qwz4xo7U53~LMO#3UxU zwj)uj9i7nE-LCrl*;mP1IIpE(AUvi^52D9Uj+j~!+2Y%acewpd8NbqBe+1frm~?$# z^?$nZPuJQ)q^FU1o&@ydF{v<2FV~CT0x17&^INBd2zp-L9KEt|8WxI-FLoOaftc!s z_}KpfOTM-D3kD@HClyMta!FC!G)iFlt^)e`a2K)uyjei*0AaY@MDBu)&zJKE1g6rm zuzFAfX~>K;)_-&=M= zKBaLvMxmVU9#vl<2kslund^=Kkwc&mlM5pdYn|&y=@Gp3zjcpe0o0#{k+qn`4eV&6 z#92i9zhc(G%{s5`f1oF>$FQzi7sKO*jn?l+<9_ueT2){)~cjC~v>&{(8$jAPf?TbFE}vLG{jqe<^5FXLKrE<3qLPr&O|w z_413+c9yhJA9OzeK|sF0FWfgr@sWiwT$If@ZN7Fq2YaZQ<#l<7L%>KsO$V49wTcS- zM2wV+38{}!?DmrTK-=Z69M0MWq-cVqL|lLR&nt)*vj1Xj>DKI5i)3d8-v)!8Cg{N~ zk7y4CJjjC|EWtN0%zsKs@uxvO`|ESc(V6)i3|R@E@6dnfj5CnQH;NyX*27irPe*9* z@mj1IHf9`#HZ=n|Ow18u;%cxjO7=t?7%06=@e$EHED|g8AFh|a4?^?verl)IqG=mW zAWDNtVL)V3%+Dmnl$209I#O1o<_;(iBpLLNH{vx|MT5XkpnnysV8Y!@;NOJh(fS%zd2S=in zYi1=@a?VK8i+@NgQzAdaB%x2O=EToxGd4{SUP*nUYMspEG-3iRnXY>bdROp_hkN9j zjAu0tjiSz;Cz@MXdCpN#T?s85Z1u#7{?#f^LIhb3fS(bI06#}~SF$N5X(kF5>h?Pg zGbGH+5}0$$4e(So3um=fNVa?eP(Cgn1Ck;?N{k3bc7GvrCaCpE(g{I0Ad(}Lk)=kk z*i6n1>VN)gg_4XsK)RjDwui~TyTU^u-Dk&jRj^l`aW)AZ7iOdxLT=ZhrD1Z6t(oC$ z_ZF>#&mYhAWEwCTm~(09`(-7mC}~irbtK>mwH#~k0_vH_ytpXFEi~ABfqvw#ga*~a zg#gGMtbZxkuL!?KCQK8%5d9g%SQ6~2VM7@wd?-y4LV;AO;{#5VaDv|$7St(3sNKFX zv>b>I{+Lplbl?g$l!Qcsz$oTc(Gr{f>qcV)-jxSSF@;~*)y>ixJA>d4NU^lC3}fI7 zmNQ3fk#-+9*_KVna3#jCkTz){=^{07{y2CRLVvWO+%hUM5P};<4~k(nkqo5YEp8LO znT9u=Pp49f^Tx=WPA?jZKgpgBgjq9>Z+_e;SB~j=Dq1w9SJh1| z&)Vhako;UhV={gA{7WhE?yMj)-nd6X+&y<@f13*DXsE5ga9`M{#m#>ODMocko>z~U z9)C$S7`NVLm0=SmJ9GO8rH1%_Y!r6DI1>^Hou132!89SUoCU%Q=wkVMxV08Z%7zFg zPX$pMAQT1-#Q1@x229+ug;;EJ;&KB~$ez7+7Sc9S1+pnok@a1KV-#EnTS8^ww5>Xj z51(knAAU?0_h~vPg&U?Qu+6yOw6=>i=YIg>iw@HkYMqP13vkA6nJWfF;Xrw%z3D@p zH7e3#>XTZzPrRg!t>h&b3tksc!!-h>J_I?i6B6%b&VKRCY%nEXZde_R=KeuO1SIS! zQ`AU*EMC8R;c{kbE#=6<3`|t0MwYNWn}-uK{tAW0p|An>y7TKL%b~FH21*q^GJkLw z0K!0){E~cXpsHGo9txTmMq{kCO4{R_<8}{wM^IVI_DUaMP_liII<&ognUJAViQ=VK zR&VD;n2hiY&fRg#H=F5|70r6I#bu=W#j7uVd8r;ga>Uf_O!aWDqcvFBLUnk2VowSq z23Nm~rRrHFL%m)N?E8_y`1y4LbRJaBnDYtnOmyoJRMqn0LS*{uy!_ z-uhwn`Sl<&!@*b-SwsfTX5q$If zgWl>Ohl68?!eygaE!sV%r_Sne75P>A)Xu)59r4n41-;?y#enmI!qWsG6V?9C2CLMs zIpv_fYfx9~{3%)B6O<&)lzo2l2aj6)daGv8mhrDKqllVQ#1rmlyMG&60|iVBv<$-5 z3Uut@irS^B80NNFL|csks>J!Lm%s`wx2(30rEqf@ms&Cqu^xN<$*TQZh z&7Gli|6Oo)f!>U8qkoUKBzZzepp$@JFAmB9$lRS$!w-<_6KL*6bSp$dE&a4z=m$ML z=@dOZ3%Cx)ZsK{WvAx$I=uq3tX(`h|o*KxwryvF+Yb!l8mSr!S|r|b#KRU_m2rjf~uwEzki0De_DZs$}@nB6u7Cp zJ*LLACs^2)7=EyJyrbV0I~rep9~z5lA^7#RK!9# zT#~-tkTw-J_|P!n=Dea_&en}C1M<5I`>XY!G9FLZhb)Gd?0NbsCkcNOWtAre^Xv*6?XLZq`b}%=UIVAso3q@0zSds za7tIC=6}mX_e>40WO(=YCeu8JQ_e!T%g6qtsijY! z!}!bzlc{pnnGopirND4g^m7Rtotrt;R*=PqOg5 zu``E&uMHRhm+7q5x;TWTI-m+rXD?>U^Mc|=fD z#QqD~G9#QOXkyaGgm)kd&`|v<$c$Q=T>;DHqB{NHC{1M<_931STtJf<9w5O}NnF+> zG=Epf20xs1|3Ms~g;{t8$DOg1uiblmIy!#W6D(uD6c5W(&3;lH9_8vg?DVcS$d+sW z8r^DtTg6v#C|Dr`Wgz3!>vnscFCNQ+*7Z<)4VXDwcER5t2CHP0c7g!V}~B) z7L7LVS(qJk5%GMA>r^K*9A^=ouvf|!wSS*0L!NtYY0tuEs_G2(NQF@4Blg!a$AO;& zW~v?%vBP-tQRaPTScz5CZl%vurTv%rn@TPoMxGmBB1c;y4JFdcCSDEY2S^f!p8^z)R>b%iD09pya3c6UG&gfX zD1{KHXJodOenny4K91v{0OngZF-i6XU*}Nq$9+a{Z3e~QlpFyQ=rz|IpgjOs`tHMY zU^;QUeg+*Vxb5qopKAr(Kiho`>VKRifK;+^Hj~;}PO%m~JOx?VH{lL3n;*a{HqTEe zP1?_j*j}Pq3VzU_EKhbYIK^zE#Kgj7A2_3J#CD4#?I{Z=1&y0I` zC``;7VBtFHH6<(tavK4acV_y67LkM6chNCoT9qrg*V87sU#1ocWhf5zjelP7L_8P< zJ`uYa@Ku|;d;JGPHGE=f#s>{C%$U9kV&K;+Q~d&Kwk`!Y6|SYP{J+Z9O+H~p1bP&P z2e>nIupnMLE3bleR&U;1^@`2d8FC?3u+oBGAJI$o@L}b^5y}d@s0ROM37(*${3!_Q zgPyCPa`cb{Q}F4~vDBuzJ%1QWEU+{WBqUQ0B$S!GE!G1gHqiPmkL|w`d*aX&Ff*%YtClHZ+JuHu+L6BtOo^;5#~UgF-Czno1b&fw zLD4XUq4FZ=>yV5TNIj-(VkMETUyC^3bf20e_;Ata7Kok{7=H}B*}dIUiF&7# z&Oykg_vHfvf{*Xq$jkz9;oW^wm<~KMA8�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
    5O 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

    aRt^s$q#{P!&@S9fIPOHz43XdvR>AIf5vK6$SV1 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≪~#%L)I^|u@*Yi&Ap#bxh6)PX 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�j0^pH=hCAAX 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,Z}i3+3mKpx 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%0D!nf6i6m-q6F;0FyKg$RK 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 z󫣛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

    NL0EYD}@X?oE;r>te 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

    QV?vV*oi}3>wCdgmt*URPYElxd0-`_ ztrJ&d4qg_~*|GjH4M5ZX+pnf+ccj{^N2z06yTi*cP|BB=}}y32C{$uORzm# zC148*2A;!7A%sC0ts%f-%n5tcwru^V)YT*ROPTvQIZ#;5IRAflJ^8{zXwv!_c8C*$S�xCnivJxwje;P}08KZ$wPhZ+!jy3~Jnd1UwIWnh2 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 z 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 SHt6tf%oV*Q?BbZ!j-&H1U3~FBGR> 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%0D)>uxXi5r0R~2K2A05i0{Xn_j$FDrqT^im9jOg$ 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

    roeA0CSt7+=Y!w|or|V7qj4tfor^RJ&;cG!n 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%0AgAJWy7Xa_P;=DgH$uI?&d^`@4D>L?lkKu_ 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%0DubQ$Ay~f`zOhx=EVV5Z&v^7VaYT^ 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%0DlO89ZWkSa>W@ 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¬<6mAeesSK$NMAl9U#!Y-!VQuL-PBWm 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%0DvnT008g+000000002W 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

    d3lvS$0ep>AAdIps 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 z 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

    aFJeZF!hj)0XqE_U#4?0|S{GgF2AT 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 z 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

    }9J?uzT{W&mf11oL@3BV`GZd$ZR@rw3 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�y3h!T#QbG2KBx#tI$=zhJL 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%0Df^93#+XRoEK2;XRvjl|-NUU}HJq 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�Zaf zyy9SC@(XQ<^|nZ5Tr9%uoT)5BF~H@jI)U>OcoCob& z*gNRnn!?r{4&{1cK=8(9$U$6aaz!L~22pC+#EnD@lPfqIxSNVJag;Qz0wVwu!@sf{ zVqNJ}CTps>J2(U|WvdRL0kt%2*l1LFkPdSBH-d*rKN3;m?O8v6wMI`AOOUZ_12Ugu zNRzt)C5l6IsNh6w@w6QT9Z0`2tgc}!r#4~H+yy2q0FRJoEBQn+bPNkXyMT<+*YV>S z$mP9)Y{;x8? z1axlWl!TgrI8}ncO z4g1kwQxzOPY$6)LAK_9j_~_b*`j89d#Y<99cE-lrHtyqp)Kk%VM*qpjHG6^C&IP+7 z%El>rL6*4HzY-I2bZTM{sZI{t33&&ie#l!0fC3})Vb5GsBYK8dz$!g86Z9DAw0xC$ z12+Z7dA{~311H-0m7#g+CgJAhy<;w1M~Uq5SFiFpGx>jqsm;}mkab>rQL24-mF3L> zOM1anLnZ8gEmx%q=%?t0EZL=@K93I2UqCmSrR8}8R4G40e#sv5#SIA@RVXOwsReqW zSPTMa9v{_n#__!*rm-bQOYBi_S1pcRC0XM{TCJ=r*uFE4RMQK`C?$rkP(lxe={-)y*rizI77=5eCe-gnBWRv#= z0>0SYG5ENq@%%Xrp@~?ku)r}AnYfmZLjv=JtYpLKkGNnFk*UO=RLH(`R$$}&N4Zz# zQc6RA7>R>I5-r8}^2aD!l#s%^Yc8(%l^oQ+f(>7J-!A1A@CV%4+&SDa_&DE#f5o7` zh26t%VA?~Gi2pM0!fwD9MHnGa$w^H$0g$44Z=uIIT%8C{b=&$=XAx6P} z-E~NCFd$pK1xFT5Hj8Y;I9+QvX=WOeM1Zx3EJXNty5=Ckn6D=lFh72`)3kayF(eBM z+VBf!`fc-`m1{L;m}3Ofu3AuU64Qvh6~Q~{z31C1?K}}Gu-&xPr^9jMR+=uuTo?b* z$sbQ?n0P$xGuvUXjVPQgh;LP~8pn)(P0Jp%|80Bs{~pE*jg0^56@4-0zLhFZW|C)< z8HSo8<}wpkjUn)}nR{FN80Z(lj{q?yIRE12<^^)5xN_PJt#Yz*aE2?X(t1p)%@-NY zQkk=0_E~w+NCe;Dm_ac_9%&ZE=aPH4-xMuzOW+$&KM1vpgFM5yYWhQm&nNSCuM_w6PZqyk55;`j0u%45lIPSk;Yu@XzeOcTp zFEAb-D&vt^4;2K}s})p4=GH)%mJz1`%bKVJqkq4=t?$nj z@IKbZ?MxEedh@x*e*zI4&oW+r@|LnvqQ*YqELV19tw@(Hfncem`VhT?c^M*u}q{y{VLM~CFTX}T$xLUE?x{leP)2iZJRY*

    =9&$O?dGavNR74=qO3B1DkxE0jm@z- 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

    AWlehKgR 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 z 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≤k~ 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

    avz^JOS#`FbIJFn^WN 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

    GoTl|7 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 z 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%0Dm1e2q%*fxBIt+m2m5g&u=o7UtCUHJyvtXP9 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≈7k_P3`Z!L!|Z8%I7OP&gNzO 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

    lHT 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

    WYoAe3QzGi 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

    u64=&|z@;=h$2ZvTLAXVt-47uk8Y^W8 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¨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

    |OTo=+RObo+)FjqL6$dyQM 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

    DQ9@ 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�{9mZEq9YUU|{bHbe}~$Wepnh%o2*XwA`cqiBdU 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�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%0A1XTk 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͋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

    BF&BP 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 et al. + diff --git a/libs/shapelib/CMakeLists.txt b/libs/shapelib/CMakeLists.txt new file mode 100644 index 0000000..4ce1b6c --- /dev/null +++ b/libs/shapelib/CMakeLists.txt @@ -0,0 +1,248 @@ +# Top-level CMakeLists.txt for the CMake-based build and test system +# of the shapelib software. + +# Copyright (C) 2012-2013 Alan W. Irwin + +# See README.CMake + +# This file is free software; you can redistribute it and/or modify +# it under the terms of the GNU Library General Public License as published +# by the Free Software Foundation; version 2 of the License. +# +# This file is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Library General Public License for more details. +# +# You should have received a copy of the GNU Library General Public License +# along with this file; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + +# It is a fatal error if no working C compiler is available to build +# the shapelib library and utilities +project(shapelib C) + +message(STATUS "CMake version = ${CMAKE_VERSION}") +message(STATUS "CMAKE_SYSTEM_NAME = ${CMAKE_SYSTEM_NAME}") + +# Version 2.8.5 or above of cmake is currently required for all platforms. +cmake_minimum_required(VERSION 2.8.5 FATAL_ERROR) + +# libraries are all shared by default. +option(BUILD_SHARED_LIBS "Build shared libraries" OFF) + +cmake_policy(SET CMP0026 OLD) # Disallow use of the LOCATION property for build targets + +if(NOT MSVC) + add_compile_options( + -Wno-missing-braces + -Wno-sign-compare + -Wno-return-type + ) +endif() + +set(CMAKE_POSITION_INDEPENDENT_CODE ON) + +# Use rpath? +if(CMAKE_SYSTEM_NAME STREQUAL "Darwin") + # No rpath on Darwin. Setting it will only cause trouble. +else(CMAKE_SYSTEM_NAME STREQUAL "Darwin") + option(USE_RPATH "Use -rpath when linking libraries, executables" ON) +endif(CMAKE_SYSTEM_NAME STREQUAL "Darwin") + +# In windows all created dlls are gathered in the dll directory +# if you add this directory to your PATH all shared libraries are available +if(BUILD_SHARED_LIBS AND WIN32 AND NOT CYGWIN) + set(LIBRARY_OUTPUT_PATH ${CMAKE_CURRENT_BINARY_DIR}/dll) +endif(BUILD_SHARED_LIBS AND WIN32 AND NOT CYGWIN) + +set(PACKAGE shp) + +# Set up install locations. +set( + CMAKE_INSTALL_BINDIR + ${CMAKE_INSTALL_PREFIX}/bin + CACHE PATH "install location for user executables" + ) + +set( + CMAKE_INSTALL_LIBDIR + ${CMAKE_INSTALL_PREFIX}/lib + CACHE PATH "install location for object code libraries" + ) + +set( + CMAKE_INSTALL_INCLUDEDIR + ${CMAKE_INSTALL_PREFIX}/include + CACHE PATH "install location for C header files" + ) + +set( + CMAKE_INSTALL_SHP_DATADIR + ${CMAKE_INSTALL_PREFIX}/share/${PACKAGE} + CACHE PATH "install location for read-only architecture-independent shp data" + ) + +# Export build information to help other projects link installed +# shapelib software. Only one of these signatures is required +# for the export_shp name. +install(EXPORT export_shp DESTINATION ${CMAKE_INSTALL_SHP_DATADIR}) + +# Initial boilerplate done, now build library and executables. + +set(lib_SRC + shpopen.c + dbfopen.c + safileio.c + shptree.c + sbnsearch.c + ) +option(SHP_DROP_UNABLE_TO_OPEN_MSG "Drop \"unable to open\" error messages" ON) +if(SHP_DROP_UNABLE_TO_OPEN_MSG) + #define the SHP_DROP_UNABLE_TO_OPEN_MSG C macro for this source file. + set_source_files_properties(shpopen.c + PROPERTIES + COMPILE_DEFINITIONS SHP_DROP_UNABLE_TO_OPEN_MSG + ) +endif(SHP_DROP_UNABLE_TO_OPEN_MSG) + +add_library(shp ${lib_SRC}) + +if(WIN32 AND NOT CYGWIN) + set_target_properties(shp + PROPERTIES + COMPILE_DEFINITIONS SHAPELIB_DLLEXPORT + ) +endif(WIN32 AND NOT CYGWIN) + +if(UNIX) + find_library(M_LIB m) + if(M_LIB) + TARGET_LINK_LIBRARIES(shp -lm) + endif() +endif(UNIX) + +set(shp_SOVERSION 1) +set(shp_VERSION 1.4.1) +set_target_properties(shp + PROPERTIES + SOVERSION ${shp_SOVERSION} + VERSION ${shp_VERSION} + INSTALL_NAME_DIR "${CMAKE_INSTALL_LIBDIR}" + ) + +if(USE_RPATH) + set_target_properties(shp + PROPERTIES + INSTALL_RPATH "${CMAKE_INSTALL_LIBDIR}" + ) +endif(USE_RPATH) + +install(TARGETS shp + EXPORT export_shp + ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} + LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} + RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} + ) + +# executables to be built and installed. +set(executables + shpcreate + shpadd + shpdump + shprewind + dbfcreate + dbfadd + dbfdump + shptreedump + ) + +find_program(BASH_EXECUTABLE bash) +find_program(SED_EXECUTABLE sed) +if(BASH_EXECUTABLE AND SED_EXECUTABLE) + #set(BUILD_TEST ON) +else(BASH_EXECUTABLE AND SED_EXECUTABLE) + message(STATUS "WARNING: sed or bash not available so disabling testing") +endif(BASH_EXECUTABLE AND SED_EXECUTABLE) + +# For the first series of tests, the user needs to have downloaded +# from http://dl.maptools.org/dl/shapelib/shape_eg_data.zip, unpacked +# that file, and specified the location of that directory with +# the cmake option, -DEG_DATA:PATH=whatever +if(BUILD_TEST) + if(EG_DATA) + file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/script.sed "s?/u/www/projects/shapelib/eg_data?${EG_DATA}?\n") + else(EG_DATA) + file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/script.sed "") + message(STATUS "WARNING: EG_DATA:PATH not set to point to downloaded eg_data directory so the eg_data part of testing will be ignored.") + endif(EG_DATA) +endif(BUILD_TEST) + +foreach(executable ${executables}) + add_executable(${executable} EXCLUDE_FROM_ALL ${executable}.c) + target_link_libraries(${executable} shp) + if(USE_RPATH) + set_target_properties(${executable} + PROPERTIES + INSTALL_RPATH "${CMAKE_INSTALL_LIBDIR}" + ) + endif(USE_RPATH) + if(BUILD_TEST) + get_target_property(${executable}_LOC ${executable} LOCATION) + file(APPEND ${CMAKE_CURRENT_BINARY_DIR}/script.sed "s?\\./${executable}?${${executable}_LOC}?\n") + endif(BUILD_TEST) +endforeach(executable ${executables}) + +# Install header +install(FILES shapefil.h DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}) + +if(BUILD_TEST) + # Set up tests: + + enable_testing() + + # Other executables to be built to facilitate tests. + foreach(executable shptest shputils) + add_executable(${executable} EXCLUDE_FROM_ALL ${executable}.c) + target_link_libraries(${executable} shp) + get_target_property(${executable}_LOC ${executable} LOCATION) + file(APPEND ${CMAKE_CURRENT_BINARY_DIR}/script.sed "s?\\./${executable}?${${executable}_LOC}?\n") + endforeach(executable shptest shputils) + + # Write this as a shell script since execute_process cannot handle + # anything like redirection. + file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/script.sh "${SED_EXECUTABLE} -f script.sed < $1 >| $2") + execute_process( + COMMAND + ${BASH_EXECUTABLE} ${CMAKE_CURRENT_BINARY_DIR}/script.sh ${CMAKE_CURRENT_SOURCE_DIR}/tests/test1.sh ${CMAKE_CURRENT_BINARY_DIR}/sed_scripted_test1.sh + ) + + execute_process( + COMMAND + ${BASH_EXECUTABLE} ${CMAKE_CURRENT_BINARY_DIR}/script.sh ${CMAKE_CURRENT_SOURCE_DIR}/tests/test2.sh ${CMAKE_CURRENT_BINARY_DIR}/sed_scripted_test2.sh + ) + + execute_process( + COMMAND + ${BASH_EXECUTABLE} ${CMAKE_CURRENT_BINARY_DIR}/script.sh ${CMAKE_CURRENT_SOURCE_DIR}/tests/test3.sh ${CMAKE_CURRENT_BINARY_DIR}/sed_scripted_test3.sh + ) + + if(EG_DATA) + # These tests correspond to everything in test1.sh + add_test( + NAME test1 + COMMAND ${BASH_EXECUTABLE} ${CMAKE_CURRENT_BINARY_DIR}/sed_scripted_test1.sh + ) + endif(EG_DATA) + # These tests correspond to everything in test2.sh + add_test( + NAME test2 + COMMAND ${BASH_EXECUTABLE} ${CMAKE_CURRENT_BINARY_DIR}/sed_scripted_test2.sh + ) + + # These tests correspond to everything in test3.sh + add_test( + NAME test3 + COMMAND ${BASH_EXECUTABLE} ${CMAKE_CURRENT_BINARY_DIR}/sed_scripted_test3.sh + ) +endif(BUILD_TEST) diff --git a/libs/shapelib/COPYING b/libs/shapelib/COPYING new file mode 100644 index 0000000..0b643ac --- /dev/null +++ b/libs/shapelib/COPYING @@ -0,0 +1,483 @@ + + GNU LIBRARY GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1991 Free Software Foundation, Inc. + 675 Mass Ave, Cambridge, MA 02139, USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + +[This is the first released version of the library GPL. It is + numbered 2 because it goes with version 2 of the ordinary GPL.] + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +Licenses are intended to guarantee your freedom to share and change +free software--to make sure the software is free for all its users. + + This license, the Library General Public License, applies to some +specially designated Free Software Foundation software, and to any +other libraries whose authors decide to use it. You can use it for +your libraries, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +this service if you wish), that you receive source code or can get it +if you want it, that you can change the software or use pieces of it +in new free programs; and that you know you can do these things. + + To protect your rights, we need to make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if +you distribute copies of the library, or if you modify it. + + For example, if you distribute copies of the library, whether gratis +or for a fee, you must give the recipients all the rights that we gave +you. You must make sure that they, too, receive or can get the source +code. If you link a program with the library, you must provide +complete object files to the recipients so that they can relink them +with the library, after making changes to the library and recompiling +it. And you must show them these terms so they know their rights. + + Our method of protecting your rights has two steps: (1) copyright +the library, and (2) offer you this license which gives you legal +permission to copy, distribute and/or modify the library. + + Also, for each distributor's protection, we want to make certain +that everyone understands that there is no warranty for this free +library. If the library is modified by someone else and passed on, we +want its recipients to know that what they have is not the original +version, so that any problems introduced by others will not reflect on +the original authors' reputations. + + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that companies distributing free +software will individually obtain patent licenses, thus in effect +transforming the program into proprietary software. To prevent this, +we have made it clear that any patent must be licensed for everyone's +free use or not licensed at all. + + Most GNU software, including some libraries, is covered by the ordinary +GNU General Public License, which was designed for utility programs. This +license, the GNU Library General Public License, applies to certain +designated libraries. This license is quite different from the ordinary +one; be sure to read it in full, and don't assume that anything in it is +the same as in the ordinary license. + + The reason we have a separate public license for some libraries is that +they blur the distinction we usually make between modifying or adding to a +program and simply using it. Linking a program with a library, without +changing the library, is in some sense simply using the library, and is +analogous to running a utility program or application program. However, in +a textual and legal sense, the linked executable is a combined work, a +derivative of the original library, and the ordinary General Public License +treats it as such. + + Because of this blurred distinction, using the ordinary General +Public License for libraries did not effectively promote software +sharing, because most developers did not use the libraries. We +concluded that weaker conditions might promote sharing better. + + However, unrestricted linking of non-free programs would deprive the +users of those programs of all benefit from the free status of the +libraries themselves. This Library General Public License is intended to +permit developers of non-free programs to use free libraries, while +preserving your freedom as a user of such programs to change the free +libraries that are incorporated in them. (We have not seen how to achieve +this as regards changes in header files, but we have achieved it as regards +changes in the actual functions of the Library.) The hope is that this +will lead to faster development of free libraries. + + The precise terms and conditions for copying, distribution and +modification follow. Pay close attention to the difference between a +"work based on the library" and a "work that uses the library". The +former contains code derived from the library, while the latter only +works together with the library. + + Note that it is possible for a library to be covered by the ordinary +General Public License rather than by this special one. + + GNU LIBRARY GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License Agreement applies to any software library which +contains a notice placed by the copyright holder or other authorized +party saying it may be distributed under the terms of this Library +General Public License (also called "this License"). Each licensee is +addressed as "you". + + A "library" means a collection of software functions and/or data +prepared so as to be conveniently linked with application programs +(which use some of those functions and data) to form executables. + + The "Library", below, refers to any such software library or work +which has been distributed under these terms. A "work based on the +Library" means either the Library or any derivative work under +copyright law: that is to say, a work containing the Library or a +portion of it, either verbatim or with modifications and/or translated +straightforwardly into another language. (Hereinafter, translation is +included without limitation in the term "modification".) + + "Source code" for a work means the preferred form of the work for +making modifications to it. For a library, complete source code means +all the source code for all modules it contains, plus any associated +interface definition files, plus the scripts used to control compilation +and installation of the library. + + Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running a program using the Library is not restricted, and output from +such a program is covered only if its contents constitute a work based +on the Library (independent of the use of the Library in a tool for +writing it). Whether that is true depends on what the Library does +and what the program that uses the Library does. + + 1. You may copy and distribute verbatim copies of the Library's +complete source code as you receive it, in any medium, provided that +you conspicuously and appropriately publish on each copy an +appropriate copyright notice and disclaimer of warranty; keep intact +all the notices that refer to this License and to the absence of any +warranty; and distribute a copy of this License along with the +Library. + + You may charge a fee for the physical act of transferring a copy, +and you may at your option offer warranty protection in exchange for a +fee. + + 2. You may modify your copy or copies of the Library or any portion +of it, thus forming a work based on the Library, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) The modified work must itself be a software library. + + b) You must cause the files modified to carry prominent notices + stating that you changed the files and the date of any change. + + c) You must cause the whole of the work to be licensed at no + charge to all third parties under the terms of this License. + + d) If a facility in the modified Library refers to a function or a + table of data to be supplied by an application program that uses + the facility, other than as an argument passed when the facility + is invoked, then you must make a good faith effort to ensure that, + in the event an application does not supply such function or + table, the facility still operates, and performs whatever part of + its purpose remains meaningful. + + (For example, a function in a library to compute square roots has + a purpose that is entirely well-defined independent of the + application. Therefore, Subsection 2d requires that any + application-supplied function or table used by this function must + be optional: if the application does not supply it, the square + root function must still compute square roots.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Library, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Library, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote +it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Library. + +In addition, mere aggregation of another work not based on the Library +with the Library (or with a work based on the Library) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may opt to apply the terms of the ordinary GNU General Public +License instead of this License to a given copy of the Library. To do +this, you must alter all the notices that refer to this License, so +that they refer to the ordinary GNU General Public License, version 2, +instead of to this License. (If a newer version than version 2 of the +ordinary GNU General Public License has appeared, then you can specify +that version instead if you wish.) Do not make any other change in +these notices. + + Once this change is made in a given copy, it is irreversible for +that copy, so the ordinary GNU General Public License applies to all +subsequent copies and derivative works made from that copy. + + This option is useful when you wish to copy part of the code of +the Library into a program that is not a library. + + 4. You may copy and distribute the Library (or a portion or +derivative of it, under Section 2) in object code or executable form +under the terms of Sections 1 and 2 above provided that you accompany +it with the complete corresponding machine-readable source code, which +must be distributed under the terms of Sections 1 and 2 above on a +medium customarily used for software interchange. + + If distribution of object code is made by offering access to copy +from a designated place, then offering equivalent access to copy the +source code from the same place satisfies the requirement to +distribute the source code, even though third parties are not +compelled to copy the source along with the object code. + + 5. A program that contains no derivative of any portion of the +Library, but is designed to work with the Library by being compiled or +linked with it, is called a "work that uses the Library". Such a +work, in isolation, is not a derivative work of the Library, and +therefore falls outside the scope of this License. + + However, linking a "work that uses the Library" with the Library +creates an executable that is a derivative of the Library (because it +contains portions of the Library), rather than a "work that uses the +library". The executable is therefore covered by this License. +Section 6 states terms for distribution of such executables. + + When a "work that uses the Library" uses material from a header file +that is part of the Library, the object code for the work may be a +derivative work of the Library even though the source code is not. +Whether this is true is especially significant if the work can be +linked without the Library, or if the work is itself a library. The +threshold for this to be true is not precisely defined by law. + + If such an object file uses only numerical parameters, data +structure layouts and accessors, and small macros and small inline +functions (ten lines or less in length), then the use of the object +file is unrestricted, regardless of whether it is legally a derivative +work. (Executables containing this object code plus portions of the +Library will still fall under Section 6.) + + Otherwise, if the work is a derivative of the Library, you may +distribute the object code for the work under the terms of Section 6. +Any executables containing that work also fall under Section 6, +whether or not they are linked directly with the Library itself. + + 6. As an exception to the Sections above, you may also compile or +link a "work that uses the Library" with the Library to produce a +work containing portions of the Library, and distribute that work +under terms of your choice, provided that the terms permit +modification of the work for the customer's own use and reverse +engineering for debugging such modifications. + + You must give prominent notice with each copy of the work that the +Library is used in it and that the Library and its use are covered by +this License. You must supply a copy of this License. If the work +during execution displays copyright notices, you must include the +copyright notice for the Library among them, as well as a reference +directing the user to the copy of this License. Also, you must do one +of these things: + + a) Accompany the work with the complete corresponding + machine-readable source code for the Library including whatever + changes were used in the work (which must be distributed under + Sections 1 and 2 above); and, if the work is an executable linked + with the Library, with the complete machine-readable "work that + uses the Library", as object code and/or source code, so that the + user can modify the Library and then relink to produce a modified + executable containing the modified Library. (It is understood + that the user who changes the contents of definitions files in the + Library will not necessarily be able to recompile the application + to use the modified definitions.) + + b) Accompany the work with a written offer, valid for at + least three years, to give the same user the materials + specified in Subsection 6a, above, for a charge no more + than the cost of performing this distribution. + + c) If distribution of the work is made by offering access to copy + from a designated place, offer equivalent access to copy the above + specified materials from the same place. + + d) Verify that the user has already received a copy of these + materials or that you have already sent this user a copy. + + For an executable, the required form of the "work that uses the +Library" must include any data and utility programs needed for +reproducing the executable from it. However, as a special exception, +the source code distributed need not include anything that is normally +distributed (in either source or binary form) with the major +components (compiler, kernel, and so on) of the operating system on +which the executable runs, unless that component itself accompanies +the executable. + + It may happen that this requirement contradicts the license +restrictions of other proprietary libraries that do not normally +accompany the operating system. Such a contradiction means you cannot +use both them and the Library together in an executable that you +distribute. + + 7. You may place library facilities that are a work based on the +Library side-by-side in a single library together with other library +facilities not covered by this License, and distribute such a combined +library, provided that the separate distribution of the work based on +the Library and of the other library facilities is otherwise +permitted, and provided that you do these two things: + + a) Accompany the combined library with a copy of the same work + based on the Library, uncombined with any other library + facilities. This must be distributed under the terms of the + Sections above. + + b) Give prominent notice with the combined library of the fact + that part of it is a work based on the Library, and explaining + where to find the accompanying uncombined form of the same work. + + 8. You may not copy, modify, sublicense, link with, or distribute +the Library except as expressly provided under this License. Any +attempt otherwise to copy, modify, sublicense, link with, or +distribute the Library is void, and will automatically terminate your +rights under this License. However, parties who have received copies, +or rights, from you under this License will not have their licenses +terminated so long as such parties remain in full compliance. + + 9. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Library or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Library (or any work based on the +Library), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Library or works based on it. + + 10. Each time you redistribute the Library (or any work based on the +Library), the recipient automatically receives a license from the +original licensor to copy, distribute, link with or modify the Library +subject to these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + + 11. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Library at all. For example, if a patent +license would not permit royalty-free redistribution of the Library by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Library. + +If any portion of this section is held invalid or unenforceable under any +particular circumstance, the balance of the section is intended to apply, +and the section as a whole is intended to apply in other circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 12. If the distribution and/or use of the Library is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Library under this License may add +an explicit geographical distribution limitation excluding those countries, +so that distribution is permitted only in or among countries not thus +excluded. In such case, this License incorporates the limitation as if +written in the body of this License. + + 13. The Free Software Foundation may publish revised and/or new +versions of the Library General Public License from time to time. +Such new versions will be similar in spirit to the present version, +but may differ in detail to address new problems or concerns. + +Each version is given a distinguishing version number. If the Library +specifies a version number of this License which applies to it and +"any later version", you have the option of following the terms and +conditions either of that version or of any later version published by +the Free Software Foundation. If the Library does not specify a +license version number, you may choose any version ever published by +the Free Software Foundation. + + 14. If you wish to incorporate parts of the Library into other free +programs whose distribution conditions are incompatible with these, +write to the author to ask for permission. For software which is +copyrighted by the Free Software Foundation, write to the Free +Software Foundation; we sometimes make exceptions for this. Our +decision will be guided by the two goals of preserving the free status +of all derivatives of our free software and of promoting the sharing +and reuse of software generally. + + NO WARRANTY + + 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO +WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. +EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR +OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY +KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE +LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME +THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN +WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY +AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU +FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR +CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE +LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING +RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A +FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF +SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH +DAMAGES. + + END OF TERMS AND CONDITIONS + + Appendix: How to Apply These Terms to Your New Libraries + + If you develop a new library, and you want it to be of the greatest +possible use to the public, we recommend making it free software that +everyone can redistribute and change. You can do so by permitting +redistribution under these terms (or, alternatively, under the terms of the +ordinary General Public License). + + To apply these terms, attach the following notices to the library. It is +safest to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least the +"copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public + License as published by the Free Software Foundation; either + version 2 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with this library; if not, write to the Free + Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + +Also add information on how to contact you by electronic and paper mail. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the library, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the + library `Frob' (a library for tweaking knobs) written by James Random Hacker. + + , 1 April 1990 + Ty Coon, President of Vice + +That's all there is to it! + diff --git a/libs/shapelib/ChangeLog b/libs/shapelib/ChangeLog new file mode 100644 index 0000000..e8fbde5 --- /dev/null +++ b/libs/shapelib/ChangeLog @@ -0,0 +1,528 @@ +2017-09-10 Even Rouault + + * shpopen.c: resync with GDAL copy. Make sure to zero terminate all + error messages. And fix regression regarding re-writing the last shape + of a file (https://trac.osgeo.org/gdal/ticket/7031) + +2017-07-10 Even Rouault + + * contrib/shpgeo.c: fix compilation on _MSC_VER < 1800 regarding lack + of NAN macro. + +2016-12-09 Even Rouault + + * Makefile.am: add web/maptools.css to EXTRA_DIST + + * Shapelib 1.4.0 released + +2016-12-06 Even Rouault + + * configure.ac: change soname to 2:1:0 to be in sync with Debian soname. + http://bugzilla.maptools.org/show_bug.cgi?id=2628 + Patch by Bas Couwenberg + + * contrib/doc/Shape_PointInPoly_README.txt, contrib/shpgeo.c: typo fixes. + http://bugzilla.maptools.org/show_bug.cgi?id=2629 + Patch by Bas Couwenberg + + * web/*: use a local .css file to avoid a privacy breach issue reported + by the lintian QA tool. + http://bugzilla.maptools.org/show_bug.cgi?id=2630 + Patch by Bas Couwenberg + +2016-12-06 Even Rouault + + * web/release.html, HOWTO-RELEASE, configure.ac, CMakeLists.txt: prepare + for 1.4.0 release. + +2016-12-05 Even Rouault + + * dbfopen.c, shapefil.h: write DBF end-of-file character 0x1A by default. + This behaviour can be controlled with the DBFSetWriteEndOfFileChar() + function. + +2016-12-05 Even Rouault + + * Major overhaul of Makefile build system to use autoconf/automake. + Contributed by Sandro Mani: https://github.com/manisandro/shapelib/tree/autotools + + * Warning fixes in contrib/ + +2016-12-04 Even Rouault + + * shpopen.c, dbfopen.c, shptree.c, shapefil.h: resync with + GDAL Shapefile driver. Mostly cleanups. SHPObject and DBFInfo + structures extended with new members. New functions: + DBFSetLastModifiedDate, SHPOpenLLEx, SHPRestoreSHX, + SHPSetFastModeReadObject + + * sbnsearch.c: new file to implement original ESRI .sbn spatial + index reading. (no write support). New functions: + SBNOpenDiskTree, SBNCloseDiskTree, SBNSearchDiskTree, + SBNSearchDiskTreeInteger, SBNSearchFreeIds + + * Makefile, makefile.vc, CMakeLists.txt, shapelib.def: updates + with new file and symbols. + + * commit: helper script to cvs commit + +2013-11-26 Frank Warmerdam + + * CMakeLists.txt: CMake support from Alan W. Irwin. + + * dbfdump.c: untested reporting for deleted records. + +2012-04-10 Frank Warmerdam + + * Shapelib 1.3.0 released. + +2012-01-27 Frank Warmerdam + + * shptree.c: optimize quadtree generation (gdal #4472) + +2012-01-24 Frank Warmerdam + + * shpopen.c: fix memory leaks on failure to open .shp file. + +2011-12-11 Frank Warmerdam + + * shptree.c,h: Use SAHooks for .qix access (gdal #3365) + +2011-09-14 Frank Warmerdam + + * shpopen.c: fix missing cast (#2344) + +2011-07-24 + + * shpopen.c, dbfopen.c, shptree.c, shapefil.h: Minimize use of + CPL services in favor of SAHooks.Error(). + + * Makefile: Remove all the shared library building stuff, it is just + too half assed, and results in all sorts of bug reports and complaints. + Instead just install a static libshp.a. + +2011-07-23 + + * Makefile: build shpdumptree as part of all target (#1648). + + * shpopen.c: fix memory leaks in error cases (#2061) + + * contrib/*.c: Include stdlib.h and strings.h (#2146) + + * shpdump.c: change to use %.15g for coordinate reporting. (#2277) + +2011-05-13 Frank Warmerdam + + * dbfopen.c, shapelib.h: Add functions to reorder and alter + field definitions. DBFReorderFields() and DBFAlterFields(). + +2011-05-07 Frank Warmerdam + + * dbfopen.c: Ensure pending record is flushed when adding a native + field (gdal #4073). + +2011-04-16 Frank Warmerdam + + * shapefil.h: avoid warnings with SHP_CVSID on gcc. + +2010-12-06 Frank Warmerdam + + * dbfopen.c: fix read past end of init data fetching code page + http://bugzilla.maptools.org/show_bug.cgi?id=2276 + +2010-07-01 Frank Warmerdam + + * shpopen.c: do not error out on a shape with zero vertices. + + * shpdump.c: do not crash if null shape returned by read object. + +2010-06-29 Frank Warmerdam + + * shptree.c: fix sign of Z and M comparisons in SHPCheckObjectContained. + (http://bugzilla.maptools.org/show_bug.cgi?id=2223) + +2010-01-28 Frank Warmerdam + + * shpopen.c/shapefil.h: Handle the .shp file length limits more + gracefully. (http://trac.osgeo.org/gdal/ticket/3236) + + * shpopen.c: Improve the numerical accurancy of algorithms in + SHPRewind() (http://trac.osgeo.org/gdal/ticket/3363). + +2010-01-16 Frank Warmerdam + + * shpopen.c: support passing in zero/nulls to create an empty + SHPObject: http://bugzilla.maptools.org/show_bug.cgi?id=2148 + +2009-10-29 Frank Warmerdam + + * dbfopen.c: avoid crash risk for truncated files. + http://trac.osgeo.org/gdal/ticket/3093 + +2009-09-17 Bram de Greve + + * shpopen.c: on Win32, define snprintf as alias to _snprintf + +2008-11-12 Frank Warmerdam + + * shptree.c: improve safety in face of buggy .shp file. + http://trac.osgeo.org/gdal/ticket/2610 + + * dbfopen.c: DBFCreateField() can now also operate on files with + records, c/o Martin Dobias. + https://trac.osgeo.org/gdal/ticket/2672 + +2008-11-11 Frank Warmerdam + + * dbfopen.c: Introduce DBFDeleteField() function from Martin Dobias. + http://trac.osgeo.org/gdal/ticket/2671 + +2008-03-14 Frank Warmerdam + + * Correct crash on buggy geometries (Even Rouault). + http://trac.osgeo.org/gdal/ticket/2218 + +2008-01-16 Bram de Greve + + * shapefil.h, safileio.c: add file hooks that accept UTF-8 + encoded filenames on some platforms. Use SASetupUtf8Hooks + to setup the hooks and check SHPAPI_UTF8_HOOKS for its + availability. Currently, this is only available on the Windows + platform that decodes the UTF-8 filenames to wide character + strings and feed them to _wfopen and _wremove. + +2008-01-10 Frank Warmerdam + + * shapefil.h: Avoid _ prefix on #defines. + http://bugzilla.maptools.org/show_bug.cgi?id=1840 + +2008-01-03 Bram de Greve + + * dbfopen.c: in DBFCreate, use default code page + LDID/87 (= 0x57, ANSI) instead of LDID/3. This seems + to be the same as what ESRI would be doing by default. + +2007-12-30 Frank Warmerdam + + * shpadd.c/shpcreate.c: Add support for z and m files. + + * Massive overhaul to use hooks for file io, etc. + +2007-12-18 Bram de Greve + + * dbfopen.c/shapefil.h/safileio.c: create hook for client + specific atof http://bugzilla.maptools.org/show_bug.cgi?id=1615 + + * dbfopen.c: check for NULL handle before closing cpCPG file, + and close after reading. + +2007-12-15 Bram de Greve + + * dbfopen.c/shapefil.h/safileio.c: read the Code Page information + from the DBF file, and exports this information as a string through + the DBFGetCodePage function. This is either the number from the LDID + header field ("LDID/") or as the content of an accompanying + .CPG file. When creating a DBF file, the code can be set using + DBFCreateEx. + +2007-12-12 Bram de Greve + + * dbfopen.c: check for NULL handle in DBFClose. + +2007-11-21 Frank Warmerdam + + * shpopen.c/shapefil.h: Don't keep .shx file open in read-only mode. + http://trac.osgeo.org/gdal/ticket/1956 + +2007-11-14 Frank Warmerdam + + * shpopen.c: checks after mallocs to detect for corrupted/voluntary + broken shapefiles. http://trac.osgeo.org/gdal/ticket/1991 + +2007-09-03 Frank Warmerdam + + * shpgeo.c: Fixed SHPDimension() (missing breaks) in shpgeo.c. + Fix contributed by Andrea Peri. + + * dbfopen.c: Move the static dDoubleField return buffer into DBFInfo + structure to avoid multithreaded risks. + + * dbfopen.c: Simplify DBFReadTuple() to avoid use of static tuple. + Note that this means DBFReadTuple() results are only valid till the + next record is read for any reason. + +2007-06-21 Frank Warmerdam + + * shpopen.c: Fix for SHPRewind() for "contact at one vertex" + cases in rings. http://trac.osgeo.org/gdal/ticket/976 + +2006-11-06 Frank Warmerdam + + * contrib/shpgeo.c: Modified SHPProject to use pj_transform() so + it works for datums and stuff. Submitted by Steffen Macke. + +2006-09-04 Frank Warmerdam + + * shpeopen.c: (MLoskot) Added stronger test of Shapefile reading + failures, e.g. truncated files. The problem was discovered by Tim + Sutton and reported here: + https://svn.qgis.org/trac/ticket/200 + +2006-06-17 Frank Warmerdam + + * dbfopen.c: use calloc() for DBFInfo in DBFCreate() to ensure + all fields initialized to zero if not otherwise mentioned. + + * dbfopen.c: Don't allow creation of string fields with width larger + than 255 per http://bugzilla.maptools.org/show_bug.cgi?id=1434 + +2006-06-16 Frank Warmerdam + + * dbfopen.c: Don't treat decimals value as high order field length + for strings, as it causes serious bugs in some cases such as + http://bugzilla.remotesensing.org/show_bug.cgi?id=1202 + + * dbfopen.c: Made static field buffer in DBFReadAttribute() into a + field in the DBFInfo structure to avoid multi-threading problems. + +2006-03-29 Frank Warmerdam + + * dbfopen.c: Fixed bug in DBFCloneEmpty() (treating pachFieldType as + an array of int). + +2006-02-08 Frank Warmerdam + + * dbfopen.c: Changed to put spaces into string fields that are NULL + as per http://bugzilla.maptools.org/show_bug.cgi?id=316. + +2006-01-26 Frank Warmerdam + + * shpopen.c, shapefil.h, shpdump.c: Added bMeasureIsUsed support as + per http://bugzilla.maptools.org/show_bug.cgi?id=1249 + +2006-01-04 Frank Warmerdam + + * dbfopen.c/shapefil.h: Added functions to check if dbf record is + deleted, and to mark it as deleted. + +2005-02-11 Frank Warmerdam + + * shpopen.c: Check panPartStart[0] is 0 in SHPCreateObject(). + + * Fixed bug 305 in DBFCloneEmpty() - header length problem. + + * Make the pszStringField buffer for DBFReadAttribute() static char + [256] as per bug 306. + +2004-09-15 Frank Warmerdam + + * dbfopen.c: treat all blanks as NULL in DBFIsAttributeNULL(). + +2004-06-23 Frank Warmerdam + + * contrib/shpsort.c: added new contribute program from Eric Miller. + +2003-04-07 Frank Warmerdam + + * Issue 1.2.10 Release. + +2003-03-10 Frank Warmerdam + + * dbfopen.c: modified DBFWriteAttribute call so that it returns FALSE + if it has to truncate the input value. + +2003-01-28 Frank Warmerdam + + * shptree.c: avoid build warnings. + +2002-05-07 Frank Warmerdam + + * dbfopen.c: Added DBFWriteAttributeDirectly() from the AVCE00 + distribution to simplify AVC integration in GDAL. + + * shptree.c: added use of qsort() in place of bubble sort as + submitted by Bernhard Herzog. + +2002-04-10 Frank Warmerdam + + * shpopen.c: Added SHPRewindObject() to correct ring winding. + + * shprewind.c: New utility program. + +2002-03-12 Frank Warmerdam + + * shapelib.def: added DBFWriteNULLAttribute. + +2002-01-17 Frank Warmerdam + + * contrib/ShapeFileII.pas: Contributed Delphi Pascal interface + to Shapelib. + +2002-01-15 Frank Warmerdam + + * shapelib.h: Added support for SHAPELIB_DLLEXPORT macro, and write + up material attempting to explain the use of SHPAPI_CALL macros. + + * dbfopen.c: Compute nHeaderLength in DBFCloneEmpty() instead of + copying it from the source file so we don't have quirks when copying + from files with extra bytes of spacers in the header that don't + themselves get copied properly. + +2001-12-07 Frank Warmerdam + + * shpopen.c: Fix fclose() of SHX file if SHX file fails to open. + Should be closing SHP file. Reported by Ben Discoe. + +2001-11-28 Frank Warmerdam + + * dbfopen.c: two fixes for compiler warnings as suggested by + Richard Hash. + +2001-11-01 Frank Warmerdam + + * shpopen.c/shapefil.h: Move record buffer into SHPInfo so that + different threads can safely access separate files. Other threading + issues may remain. + +2001-08-28 Frank Warmerdam + + * Issue Shapelib 1.2.9 + + * shputils.c: DBFAddField() call should check for -1 return value + for failure. + +2001-07-03 Frank Warmerdam + + * shpopen.c: cleanup better if SHX missing, provided by + Riccardo Cohen. + +2001-06-21 Frank Warmerdam + + * dbfopen.c: Fixed NULL support with patches from Jim Matthews. + + * shpopen.c: Be more careful of establishing initial file bounds in + face of possible NULL shapes. + +2001-06-01 Frank Warmerdam + + * dbfopen.c: ensure binary mode open. + +2001-05-31 Frank Warmerdam + + * shpopen.c: Add support for writing null shapes. + + * dbfopen.c: added DBFGetFieldIndex(), contributed by Jim Matthews. + + * dbfopen.c/shapefil.h/dbf_api.h: added support for NULL fields + in .dbf files. + +2001-05-28 Frank Warmerdam + + * shpopen.c: add some checking on the record count to ensure it + is reasonable. + +2001-05-23 Frank Warmerdam + + * shapefile.h, shpopen.c, dbfopen.c, shptree.c: added the SHPAPI_CALL + macro to allow compilation with _stdcall conventions. + +2001-02-06 Frank Warmerdam + + * Fixed a few memory leaks when SHPOpen() fails. + +2000-12-05 Frank Warmerdam + + * Fix from Craig Bruce (Cubewerx) for DBFReadAttribute() for + the white space trimming code to avoid reading outside allocated + memory. + +2000-11-02 Frank Warmerdam + + * Checked in upgraded shputils.c from Bill Miller. + +2000-10-05 Frank Warmerdam + + * Fixed DBFWriteAttribute() to ensure we can't overwrite the + end of the szSField buffer even if the width is set large. + Bug report by Kirk Benell . + +2000-09-25 Frank Warmerdam + + * Added DBFGetNativeFieldType() (contributed by Daniel) to dbfopen.c. + +2000-07-18 Frank Warmerdam + + * added better enforcement of -1 for append in SHPWriteObject(). + +2000-07-07 Frank Warmerdam + + * Added stdlib.h and string.h where needed, and removed lots of + unused variables, mainly from example mainlines at the suggestion + of Bill Hughes. + +2000-05-24 Frank Warmerdam + + * Added logic to shpadd to grow vertex lists at the suggestion of + Santiago Nullo . + +2000-05-23 Frank Warmerdam + + * Added checks in dbfopen.c on return result of fseek() and fread(). + + * Avoid crashing in DBReadIntegerAttribute() or DBFReadDoubleAttribte() + if the field or record are out of range. + +2000-03-28 Frank Warmerdam + + * Release as 1.2.8. + + * Incorporated a -version-info fix and added mkinstalldirs from Jan. + +2000-03-17 Frank Warmerdam + + * Added shared library hack to Makefile. + + * Fixed up test scripts to look in ./ for executables. + +Wed Feb 16 11:20:29 2000 Frank Warmerdam + + * Release 1.2.7. + + * Modified SHPReadObject() so that will return NULL (type 0) shapes + in a sort of sensible way. + +Wed Dec 15 08:49:53 1999 Frank Warmerdam + + * Fixed record size written at beginning of records in .shp + file. It was 4 bytes to long (thanks to Mikko Syrja of 3D-system Oy) + + * Use atof() instead of sscanf() in dbfopen.c, and add stdlib.h. + +Mon Dec 13 12:29:01 1999 Frank Warmerdam + + * Added support for uppercase .DBF extention c/o + Dennis Christopher + +Fri Nov 5 09:12:31 1999 Frank Warmerdam + + * Updated license headers to include the option of use of the code + under the LGPL. + +1999-09-15 + + * Added shapelib.dll target to makefile.vc. + +Mon May 10 23:19:42 1999 Frank Warmerdam + + * Added candrsn's improvements to extension handling in dbfopen.c + + * Added ``raw tuple'' api to dbfopen.c, still not in dbf_api.html. + From candrsn. + + +Tue May 4 11:04:31 1999 Frank Warmerdam + + * Prepare 1.2.5 release. + + * Added support for 'F' fields. + diff --git a/libs/shapelib/INSTALL b/libs/shapelib/INSTALL new file mode 100644 index 0000000..2099840 --- /dev/null +++ b/libs/shapelib/INSTALL @@ -0,0 +1,370 @@ +Installation Instructions +************************* + +Copyright (C) 1994-1996, 1999-2002, 2004-2013 Free Software Foundation, +Inc. + + Copying and distribution of this file, with or without modification, +are permitted in any medium without royalty provided the copyright +notice and this notice are preserved. This file is offered as-is, +without warranty of any kind. + +Basic Installation +================== + + Briefly, the shell command `./configure && make && make install' +should configure, build, and install this package. The following +more-detailed instructions are generic; see the `README' file for +instructions specific to this package. Some packages provide this +`INSTALL' file but do not implement all of the features documented +below. The lack of an optional feature in a given package is not +necessarily a bug. More recommendations for GNU packages can be found +in *note Makefile Conventions: (standards)Makefile Conventions. + + The `configure' shell script attempts to guess correct values for +various system-dependent variables used during compilation. It uses +those values to create a `Makefile' in each directory of the package. +It may also create one or more `.h' files containing system-dependent +definitions. Finally, it creates a shell script `config.status' that +you can run in the future to recreate the current configuration, and a +file `config.log' containing compiler output (useful mainly for +debugging `configure'). + + It can also use an optional file (typically called `config.cache' +and enabled with `--cache-file=config.cache' or simply `-C') that saves +the results of its tests to speed up reconfiguring. Caching is +disabled by default to prevent problems with accidental use of stale +cache files. + + If you need to do unusual things to compile the package, please try +to figure out how `configure' could check whether to do them, and mail +diffs or instructions to the address given in the `README' so they can +be considered for the next release. If you are using the cache, and at +some point `config.cache' contains results you don't want to keep, you +may remove or edit it. + + The file `configure.ac' (or `configure.in') is used to create +`configure' by a program called `autoconf'. You need `configure.ac' if +you want to change it or regenerate `configure' using a newer version +of `autoconf'. + + The simplest way to compile this package is: + + 1. `cd' to the directory containing the package's source code and type + `./configure' to configure the package for your system. + + Running `configure' might take a while. While running, it prints + some messages telling which features it is checking for. + + 2. Type `make' to compile the package. + + 3. Optionally, type `make check' to run any self-tests that come with + the package, generally using the just-built uninstalled binaries. + + 4. Type `make install' to install the programs and any data files and + documentation. When installing into a prefix owned by root, it is + recommended that the package be configured and built as a regular + user, and only the `make install' phase executed with root + privileges. + + 5. Optionally, type `make installcheck' to repeat any self-tests, but + this time using the binaries in their final installed location. + This target does not install anything. Running this target as a + regular user, particularly if the prior `make install' required + root privileges, verifies that the installation completed + correctly. + + 6. You can remove the program binaries and object files from the + source code directory by typing `make clean'. To also remove the + files that `configure' created (so you can compile the package for + a different kind of computer), type `make distclean'. There is + also a `make maintainer-clean' target, but that is intended mainly + for the package's developers. If you use it, you may have to get + all sorts of other programs in order to regenerate files that came + with the distribution. + + 7. Often, you can also type `make uninstall' to remove the installed + files again. In practice, not all packages have tested that + uninstallation works correctly, even though it is required by the + GNU Coding Standards. + + 8. Some packages, particularly those that use Automake, provide `make + distcheck', which can by used by developers to test that all other + targets like `make install' and `make uninstall' work correctly. + This target is generally not run by end users. + +Compilers and Options +===================== + + Some systems require unusual options for compilation or linking that +the `configure' script does not know about. Run `./configure --help' +for details on some of the pertinent environment variables. + + You can give `configure' initial values for configuration parameters +by setting variables in the command line or in the environment. Here +is an example: + + ./configure CC=c99 CFLAGS=-g LIBS=-lposix + + *Note Defining Variables::, for more details. + +Compiling For Multiple Architectures +==================================== + + You can compile the package for more than one kind of computer at the +same time, by placing the object files for each architecture in their +own directory. To do this, you can use GNU `make'. `cd' to the +directory where you want the object files and executables to go and run +the `configure' script. `configure' automatically checks for the +source code in the directory that `configure' is in and in `..'. This +is known as a "VPATH" build. + + With a non-GNU `make', it is safer to compile the package for one +architecture at a time in the source code directory. After you have +installed the package for one architecture, use `make distclean' before +reconfiguring for another architecture. + + On MacOS X 10.5 and later systems, you can create libraries and +executables that work on multiple system types--known as "fat" or +"universal" binaries--by specifying multiple `-arch' options to the +compiler but only a single `-arch' option to the preprocessor. Like +this: + + ./configure CC="gcc -arch i386 -arch x86_64 -arch ppc -arch ppc64" \ + CXX="g++ -arch i386 -arch x86_64 -arch ppc -arch ppc64" \ + CPP="gcc -E" CXXCPP="g++ -E" + + This is not guaranteed to produce working output in all cases, you +may have to build one architecture at a time and combine the results +using the `lipo' tool if you have problems. + +Installation Names +================== + + By default, `make install' installs the package's commands under +`/usr/local/bin', include files under `/usr/local/include', etc. You +can specify an installation prefix other than `/usr/local' by giving +`configure' the option `--prefix=PREFIX', where PREFIX must be an +absolute file name. + + You can specify separate installation prefixes for +architecture-specific files and architecture-independent files. If you +pass the option `--exec-prefix=PREFIX' to `configure', the package uses +PREFIX as the prefix for installing programs and libraries. +Documentation and other data files still use the regular prefix. + + In addition, if you use an unusual directory layout you can give +options like `--bindir=DIR' to specify different values for particular +kinds of files. Run `configure --help' for a list of the directories +you can set and what kinds of files go in them. In general, the +default for these options is expressed in terms of `${prefix}', so that +specifying just `--prefix' will affect all of the other directory +specifications that were not explicitly provided. + + The most portable way to affect installation locations is to pass the +correct locations to `configure'; however, many packages provide one or +both of the following shortcuts of passing variable assignments to the +`make install' command line to change installation locations without +having to reconfigure or recompile. + + The first method involves providing an override variable for each +affected directory. For example, `make install +prefix=/alternate/directory' will choose an alternate location for all +directory configuration variables that were expressed in terms of +`${prefix}'. Any directories that were specified during `configure', +but not in terms of `${prefix}', must each be overridden at install +time for the entire installation to be relocated. The approach of +makefile variable overrides for each directory variable is required by +the GNU Coding Standards, and ideally causes no recompilation. +However, some platforms have known limitations with the semantics of +shared libraries that end up requiring recompilation when using this +method, particularly noticeable in packages that use GNU Libtool. + + The second method involves providing the `DESTDIR' variable. For +example, `make install DESTDIR=/alternate/directory' will prepend +`/alternate/directory' before all installation names. The approach of +`DESTDIR' overrides is not required by the GNU Coding Standards, and +does not work on platforms that have drive letters. On the other hand, +it does better at avoiding recompilation issues, and works well even +when some directory options were not specified in terms of `${prefix}' +at `configure' time. + +Optional Features +================= + + If the package supports it, you can cause programs to be installed +with an extra prefix or suffix on their names by giving `configure' the +option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'. + + Some packages pay attention to `--enable-FEATURE' options to +`configure', where FEATURE indicates an optional part of the package. +They may also pay attention to `--with-PACKAGE' options, where PACKAGE +is something like `gnu-as' or `x' (for the X Window System). The +`README' should mention any `--enable-' and `--with-' options that the +package recognizes. + + For packages that use the X Window System, `configure' can usually +find the X include and library files automatically, but if it doesn't, +you can use the `configure' options `--x-includes=DIR' and +`--x-libraries=DIR' to specify their locations. + + Some packages offer the ability to configure how verbose the +execution of `make' will be. For these packages, running `./configure +--enable-silent-rules' sets the default to minimal output, which can be +overridden with `make V=1'; while running `./configure +--disable-silent-rules' sets the default to verbose, which can be +overridden with `make V=0'. + +Particular systems +================== + + On HP-UX, the default C compiler is not ANSI C compatible. If GNU +CC is not installed, it is recommended to use the following options in +order to use an ANSI C compiler: + + ./configure CC="cc -Ae -D_XOPEN_SOURCE=500" + +and if that doesn't work, install pre-built binaries of GCC for HP-UX. + + HP-UX `make' updates targets which have the same time stamps as +their prerequisites, which makes it generally unusable when shipped +generated files such as `configure' are involved. Use GNU `make' +instead. + + On OSF/1 a.k.a. Tru64, some versions of the default C compiler cannot +parse its `' header file. The option `-nodtk' can be used as +a workaround. If GNU CC is not installed, it is therefore recommended +to try + + ./configure CC="cc" + +and if that doesn't work, try + + ./configure CC="cc -nodtk" + + On Solaris, don't put `/usr/ucb' early in your `PATH'. This +directory contains several dysfunctional programs; working variants of +these programs are available in `/usr/bin'. So, if you need `/usr/ucb' +in your `PATH', put it _after_ `/usr/bin'. + + On Haiku, software installed for all users goes in `/boot/common', +not `/usr/local'. It is recommended to use the following options: + + ./configure --prefix=/boot/common + +Specifying the System Type +========================== + + There may be some features `configure' cannot figure out +automatically, but needs to determine by the type of machine the package +will run on. Usually, assuming the package is built to be run on the +_same_ architectures, `configure' can figure that out, but if it prints +a message saying it cannot guess the machine type, give it the +`--build=TYPE' option. TYPE can either be a short name for the system +type, such as `sun4', or a canonical name which has the form: + + CPU-COMPANY-SYSTEM + +where SYSTEM can have one of these forms: + + OS + KERNEL-OS + + See the file `config.sub' for the possible values of each field. If +`config.sub' isn't included in this package, then this package doesn't +need to know the machine type. + + If you are _building_ compiler tools for cross-compiling, you should +use the option `--target=TYPE' to select the type of system they will +produce code for. + + If you want to _use_ a cross compiler, that generates code for a +platform different from the build platform, you should specify the +"host" platform (i.e., that on which the generated programs will +eventually be run) with `--host=TYPE'. + +Sharing Defaults +================ + + If you want to set default values for `configure' scripts to share, +you can create a site shell script called `config.site' that gives +default values for variables like `CC', `cache_file', and `prefix'. +`configure' looks for `PREFIX/share/config.site' if it exists, then +`PREFIX/etc/config.site' if it exists. Or, you can set the +`CONFIG_SITE' environment variable to the location of the site script. +A warning: not all `configure' scripts look for a site script. + +Defining Variables +================== + + Variables not defined in a site shell script can be set in the +environment passed to `configure'. However, some packages may run +configure again during the build, and the customized values of these +variables may be lost. In order to avoid this problem, you should set +them in the `configure' command line, using `VAR=value'. For example: + + ./configure CC=/usr/local2/bin/gcc + +causes the specified `gcc' to be used as the C compiler (unless it is +overridden in the site shell script). + +Unfortunately, this technique does not work for `CONFIG_SHELL' due to +an Autoconf limitation. Until the limitation is lifted, you can use +this workaround: + + CONFIG_SHELL=/bin/bash ./configure CONFIG_SHELL=/bin/bash + +`configure' Invocation +====================== + + `configure' recognizes the following options to control how it +operates. + +`--help' +`-h' + Print a summary of all of the options to `configure', and exit. + +`--help=short' +`--help=recursive' + Print a summary of the options unique to this package's + `configure', and exit. The `short' variant lists options used + only in the top level, while the `recursive' variant lists options + also present in any nested packages. + +`--version' +`-V' + Print the version of Autoconf used to generate the `configure' + script, and exit. + +`--cache-file=FILE' + Enable the cache: use and save the results of the tests in FILE, + traditionally `config.cache'. FILE defaults to `/dev/null' to + disable caching. + +`--config-cache' +`-C' + Alias for `--cache-file=config.cache'. + +`--quiet' +`--silent' +`-q' + Do not print messages saying which checks are being made. To + suppress all normal output, redirect it to `/dev/null' (any error + messages will still be shown). + +`--srcdir=DIR' + Look for the package's source code in directory DIR. Usually + `configure' can determine that directory automatically. + +`--prefix=DIR' + Use DIR as the installation prefix. *note Installation Names:: + for more details, including other options available for fine-tuning + the installation locations. + +`--no-create' +`-n' + Run the configure checks, but stop before creating any output + files. + +`configure' also accepts some other, not widely useful, options. Run +`configure --help' for more details. diff --git a/libs/shapelib/Makefile.am b/libs/shapelib/Makefile.am new file mode 100644 index 0000000..2d22cc6 --- /dev/null +++ b/libs/shapelib/Makefile.am @@ -0,0 +1,76 @@ +## Process this file with automake to produce Makefile.in + +SUBDIRS = . contrib + +ACLOCAL_AMFLAGS = -I m4 +AUTOMAKE_OPTIONS = dist-zip + +if PLATFORM_WIN32 +no_undefined = -no-undefined +endif + +# Extra files to distribute in the source tarball +EXTRA_DIST = makefile.vc CMakeLists.txt autogen.sh \ + tests/test1.sh tests/test2.sh tests/test3.sh \ + tests/stream1.out tests/stream1.out tests/stream1.out \ + web/maptools.css \ + web/codepage.html \ + web/index.html \ + web/shapelib-tools.html \ + web/shp_api.html \ + web/release.html \ + web/dbf_api.html \ + web/license.html \ + web/manifest.html \ + README.tree README.CMake + +# pkg-config file +pkgconfigdir = $(libdir)/pkgconfig +pkgconfig_DATA = shapelib.pc + +# Library +lib_LTLIBRARIES = libshp.la +libshp_la_includedir = $(includedir) +libshp_la_include_HEADERS = shapefil.h +libshp_la_SOURCES = shpopen.c dbfopen.c safileio.c shptree.c sbnsearch.c +libshp_la_LDFLAGS = -version-info $(SHAPELIB_SO_VERSION) $(no_undefined) $(LIBM) + +# Installed executables +bin_PROGRAMS = dbfadd dbfcreate dbfdump shpadd shpcreate shpdump shprewind shptreedump shputils + +dbfadd_SOURCES = dbfadd.c +dbfadd_LDADD = $(top_builddir)/libshp.la + +dbfcreate_SOURCES = dbfcreate.c +dbfcreate_LDADD = $(top_builddir)/libshp.la + +dbfdump_SOURCES = dbfdump.c +dbfdump_LDADD = $(top_builddir)/libshp.la + +shpadd_SOURCES = shpadd.c +shpadd_LDADD = $(top_builddir)/libshp.la + +shpcreate_SOURCES = shpcreate.c +shpcreate_LDADD = $(top_builddir)/libshp.la + +shpdump_SOURCES = shpdump.c +shpdump_LDADD = $(top_builddir)/libshp.la + +shprewind_SOURCES = shprewind.c +shprewind_LDADD = $(top_builddir)/libshp.la + +shptreedump_SOURCES = shptreedump.c +shptreedump_LDADD = $(top_builddir)/libshp.la + +shputils_SOURCES = shputils.c +shputils_LDADD = $(top_builddir)/libshp.la + +# Non-installed executables +noinst_PROGRAMS = shptest +shptest_SOURCES = shptest.c +shptest_LDADD = $(top_builddir)/libshp.la + +# Tests +TESTS_ENVIRONMENT = top_builddir=$(abs_top_builddir) +# tests/test1.sh requires ftp://gdal.velocet.ca/pub/outgoing/shape_eg_data.zip +TESTS = tests/test2.sh tests/test3.sh diff --git a/libs/shapelib/Makefile.in b/libs/shapelib/Makefile.in new file mode 100644 index 0000000..39629e8 --- /dev/null +++ b/libs/shapelib/Makefile.in @@ -0,0 +1,1558 @@ +# Makefile.in generated by automake 1.15 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994-2014 Free Software Foundation, Inc. + +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + + + + +VPATH = @srcdir@ +am__is_gnu_make = { \ + if test -z '$(MAKELEVEL)'; then \ + false; \ + elif test -n '$(MAKE_HOST)'; then \ + true; \ + elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ + true; \ + else \ + false; \ + fi; \ +} +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +bin_PROGRAMS = dbfadd$(EXEEXT) dbfcreate$(EXEEXT) dbfdump$(EXEEXT) \ + shpadd$(EXEEXT) shpcreate$(EXEEXT) shpdump$(EXEEXT) \ + shprewind$(EXEEXT) shptreedump$(EXEEXT) shputils$(EXEEXT) +noinst_PROGRAMS = shptest$(EXEEXT) +subdir = . +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \ + $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ + $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ + $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +DIST_COMMON = $(srcdir)/Makefile.am $(top_srcdir)/configure \ + $(am__configure_deps) $(libshp_la_include_HEADERS) \ + $(am__DIST_COMMON) +am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \ + configure.lineno config.status.lineno +mkinstalldirs = $(install_sh) -d +CONFIG_CLEAN_FILES = shapelib.pc +CONFIG_CLEAN_VPATH_FILES = +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; +am__install_max = 40 +am__nobase_strip_setup = \ + srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` +am__nobase_strip = \ + for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" +am__nobase_list = $(am__nobase_strip_setup); \ + for p in $$list; do echo "$$p $$p"; done | \ + sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ + $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ + if (++n[$$2] == $(am__install_max)) \ + { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ + END { for (dir in files) print dir, files[dir] }' +am__base_list = \ + sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ + sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' +am__uninstall_files_from_dir = { \ + test -z "$$files" \ + || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ + || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ + $(am__cd) "$$dir" && rm -f $$files; }; \ + } +am__installdirs = "$(DESTDIR)$(libdir)" "$(DESTDIR)$(bindir)" \ + "$(DESTDIR)$(pkgconfigdir)" \ + "$(DESTDIR)$(libshp_la_includedir)" +LTLIBRARIES = $(lib_LTLIBRARIES) +libshp_la_LIBADD = +am_libshp_la_OBJECTS = shpopen.lo dbfopen.lo safileio.lo shptree.lo \ + sbnsearch.lo +libshp_la_OBJECTS = $(am_libshp_la_OBJECTS) +AM_V_lt = $(am__v_lt_@AM_V@) +am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) +am__v_lt_0 = --silent +am__v_lt_1 = +libshp_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(libshp_la_LDFLAGS) $(LDFLAGS) -o $@ +PROGRAMS = $(bin_PROGRAMS) $(noinst_PROGRAMS) +am_dbfadd_OBJECTS = dbfadd.$(OBJEXT) +dbfadd_OBJECTS = $(am_dbfadd_OBJECTS) +dbfadd_DEPENDENCIES = $(top_builddir)/libshp.la +am_dbfcreate_OBJECTS = dbfcreate.$(OBJEXT) +dbfcreate_OBJECTS = $(am_dbfcreate_OBJECTS) +dbfcreate_DEPENDENCIES = $(top_builddir)/libshp.la +am_dbfdump_OBJECTS = dbfdump.$(OBJEXT) +dbfdump_OBJECTS = $(am_dbfdump_OBJECTS) +dbfdump_DEPENDENCIES = $(top_builddir)/libshp.la +am_shpadd_OBJECTS = shpadd.$(OBJEXT) +shpadd_OBJECTS = $(am_shpadd_OBJECTS) +shpadd_DEPENDENCIES = $(top_builddir)/libshp.la +am_shpcreate_OBJECTS = shpcreate.$(OBJEXT) +shpcreate_OBJECTS = $(am_shpcreate_OBJECTS) +shpcreate_DEPENDENCIES = $(top_builddir)/libshp.la +am_shpdump_OBJECTS = shpdump.$(OBJEXT) +shpdump_OBJECTS = $(am_shpdump_OBJECTS) +shpdump_DEPENDENCIES = $(top_builddir)/libshp.la +am_shprewind_OBJECTS = shprewind.$(OBJEXT) +shprewind_OBJECTS = $(am_shprewind_OBJECTS) +shprewind_DEPENDENCIES = $(top_builddir)/libshp.la +am_shptest_OBJECTS = shptest.$(OBJEXT) +shptest_OBJECTS = $(am_shptest_OBJECTS) +shptest_DEPENDENCIES = $(top_builddir)/libshp.la +am_shptreedump_OBJECTS = shptreedump.$(OBJEXT) +shptreedump_OBJECTS = $(am_shptreedump_OBJECTS) +shptreedump_DEPENDENCIES = $(top_builddir)/libshp.la +am_shputils_OBJECTS = shputils.$(OBJEXT) +shputils_OBJECTS = $(am_shputils_OBJECTS) +shputils_DEPENDENCIES = $(top_builddir)/libshp.la +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = +DEFAULT_INCLUDES = -I.@am__isrc@ +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__depfiles_maybe = depfiles +am__mv = mv -f +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ + $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ + $(AM_CFLAGS) $(CFLAGS) +AM_V_CC = $(am__v_CC_@AM_V@) +am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) +am__v_CC_0 = @echo " CC " $@; +am__v_CC_1 = +CCLD = $(CC) +LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(AM_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_CCLD = $(am__v_CCLD_@AM_V@) +am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) +am__v_CCLD_0 = @echo " CCLD " $@; +am__v_CCLD_1 = +SOURCES = $(libshp_la_SOURCES) $(dbfadd_SOURCES) $(dbfcreate_SOURCES) \ + $(dbfdump_SOURCES) $(shpadd_SOURCES) $(shpcreate_SOURCES) \ + $(shpdump_SOURCES) $(shprewind_SOURCES) $(shptest_SOURCES) \ + $(shptreedump_SOURCES) $(shputils_SOURCES) +DIST_SOURCES = $(libshp_la_SOURCES) $(dbfadd_SOURCES) \ + $(dbfcreate_SOURCES) $(dbfdump_SOURCES) $(shpadd_SOURCES) \ + $(shpcreate_SOURCES) $(shpdump_SOURCES) $(shprewind_SOURCES) \ + $(shptest_SOURCES) $(shptreedump_SOURCES) $(shputils_SOURCES) +RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \ + ctags-recursive dvi-recursive html-recursive info-recursive \ + install-data-recursive install-dvi-recursive \ + install-exec-recursive install-html-recursive \ + install-info-recursive install-pdf-recursive \ + install-ps-recursive install-recursive installcheck-recursive \ + installdirs-recursive pdf-recursive ps-recursive \ + tags-recursive uninstall-recursive +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +DATA = $(pkgconfig_DATA) +HEADERS = $(libshp_la_include_HEADERS) +RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ + distclean-recursive maintainer-clean-recursive +am__recursive_targets = \ + $(RECURSIVE_TARGETS) \ + $(RECURSIVE_CLEAN_TARGETS) \ + $(am__extra_recursive_targets) +AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \ + cscope check recheck distdir dist dist-all distcheck +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` +ETAGS = etags +CTAGS = ctags +CSCOPE = cscope +am__tty_colors_dummy = \ + mgn= red= grn= lgn= blu= brg= std=; \ + am__color_tests=no +am__tty_colors = { \ + $(am__tty_colors_dummy); \ + if test "X$(AM_COLOR_TESTS)" = Xno; then \ + am__color_tests=no; \ + elif test "X$(AM_COLOR_TESTS)" = Xalways; then \ + am__color_tests=yes; \ + elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \ + am__color_tests=yes; \ + fi; \ + if test $$am__color_tests = yes; then \ + red=''; \ + grn=''; \ + lgn=''; \ + blu=''; \ + mgn=''; \ + brg=''; \ + std=''; \ + fi; \ +} +am__recheck_rx = ^[ ]*:recheck:[ ]* +am__global_test_result_rx = ^[ ]*:global-test-result:[ ]* +am__copy_in_global_log_rx = ^[ ]*:copy-in-global-log:[ ]* +# A command that, given a newline-separated list of test names on the +# standard input, print the name of the tests that are to be re-run +# upon "make recheck". +am__list_recheck_tests = $(AWK) '{ \ + recheck = 1; \ + while ((rc = (getline line < ($$0 ".trs"))) != 0) \ + { \ + if (rc < 0) \ + { \ + if ((getline line2 < ($$0 ".log")) < 0) \ + recheck = 0; \ + break; \ + } \ + else if (line ~ /$(am__recheck_rx)[nN][Oo]/) \ + { \ + recheck = 0; \ + break; \ + } \ + else if (line ~ /$(am__recheck_rx)[yY][eE][sS]/) \ + { \ + break; \ + } \ + }; \ + if (recheck) \ + print $$0; \ + close ($$0 ".trs"); \ + close ($$0 ".log"); \ +}' +# A command that, given a newline-separated list of test names on the +# standard input, create the global log from their .trs and .log files. +am__create_global_log = $(AWK) ' \ +function fatal(msg) \ +{ \ + print "fatal: making $@: " msg | "cat >&2"; \ + exit 1; \ +} \ +function rst_section(header) \ +{ \ + print header; \ + len = length(header); \ + for (i = 1; i <= len; i = i + 1) \ + printf "="; \ + printf "\n\n"; \ +} \ +{ \ + copy_in_global_log = 1; \ + global_test_result = "RUN"; \ + while ((rc = (getline line < ($$0 ".trs"))) != 0) \ + { \ + if (rc < 0) \ + fatal("failed to read from " $$0 ".trs"); \ + if (line ~ /$(am__global_test_result_rx)/) \ + { \ + sub("$(am__global_test_result_rx)", "", line); \ + sub("[ ]*$$", "", line); \ + global_test_result = line; \ + } \ + else if (line ~ /$(am__copy_in_global_log_rx)[nN][oO]/) \ + copy_in_global_log = 0; \ + }; \ + if (copy_in_global_log) \ + { \ + rst_section(global_test_result ": " $$0); \ + while ((rc = (getline line < ($$0 ".log"))) != 0) \ + { \ + if (rc < 0) \ + fatal("failed to read from " $$0 ".log"); \ + print line; \ + }; \ + printf "\n"; \ + }; \ + close ($$0 ".trs"); \ + close ($$0 ".log"); \ +}' +# Restructured Text title. +am__rst_title = { sed 's/.*/ & /;h;s/./=/g;p;x;s/ *$$//;p;g' && echo; } +# Solaris 10 'make', and several other traditional 'make' implementations, +# pass "-e" to $(SHELL), and POSIX 2008 even requires this. Work around it +# by disabling -e (using the XSI extension "set +e") if it's set. +am__sh_e_setup = case $$- in *e*) set +e;; esac +# Default flags passed to test drivers. +am__common_driver_flags = \ + --color-tests "$$am__color_tests" \ + --enable-hard-errors "$$am__enable_hard_errors" \ + --expect-failure "$$am__expect_failure" +# To be inserted before the command running the test. Creates the +# directory for the log if needed. Stores in $dir the directory +# containing $f, in $tst the test, in $log the log. Executes the +# developer- defined test setup AM_TESTS_ENVIRONMENT (if any), and +# passes TESTS_ENVIRONMENT. Set up options for the wrapper that +# will run the test scripts (or their associated LOG_COMPILER, if +# thy have one). +am__check_pre = \ +$(am__sh_e_setup); \ +$(am__vpath_adj_setup) $(am__vpath_adj) \ +$(am__tty_colors); \ +srcdir=$(srcdir); export srcdir; \ +case "$@" in \ + */*) am__odir=`echo "./$@" | sed 's|/[^/]*$$||'`;; \ + *) am__odir=.;; \ +esac; \ +test "x$$am__odir" = x"." || test -d "$$am__odir" \ + || $(MKDIR_P) "$$am__odir" || exit $$?; \ +if test -f "./$$f"; then dir=./; \ +elif test -f "$$f"; then dir=; \ +else dir="$(srcdir)/"; fi; \ +tst=$$dir$$f; log='$@'; \ +if test -n '$(DISABLE_HARD_ERRORS)'; then \ + am__enable_hard_errors=no; \ +else \ + am__enable_hard_errors=yes; \ +fi; \ +case " $(XFAIL_TESTS) " in \ + *[\ \ ]$$f[\ \ ]* | *[\ \ ]$$dir$$f[\ \ ]*) \ + am__expect_failure=yes;; \ + *) \ + am__expect_failure=no;; \ +esac; \ +$(AM_TESTS_ENVIRONMENT) $(TESTS_ENVIRONMENT) +# A shell command to get the names of the tests scripts with any registered +# extension removed (i.e., equivalently, the names of the test logs, with +# the '.log' extension removed). The result is saved in the shell variable +# '$bases'. This honors runtime overriding of TESTS and TEST_LOGS. Sadly, +# we cannot use something simpler, involving e.g., "$(TEST_LOGS:.log=)", +# since that might cause problem with VPATH rewrites for suffix-less tests. +# See also 'test-harness-vpath-rewrite.sh' and 'test-trs-basic.sh'. +am__set_TESTS_bases = \ + bases='$(TEST_LOGS)'; \ + bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \ + bases=`echo $$bases` +RECHECK_LOGS = $(TEST_LOGS) +TEST_SUITE_LOG = test-suite.log +TEST_EXTENSIONS = @EXEEXT@ .test +LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver +LOG_COMPILE = $(LOG_COMPILER) $(AM_LOG_FLAGS) $(LOG_FLAGS) +am__set_b = \ + case '$@' in \ + */*) \ + case '$*' in \ + */*) b='$*';; \ + *) b=`echo '$@' | sed 's/\.log$$//'`; \ + esac;; \ + *) \ + b='$*';; \ + esac +am__test_logs1 = $(TESTS:=.log) +am__test_logs2 = $(am__test_logs1:@EXEEXT@.log=.log) +TEST_LOGS = $(am__test_logs2:.test.log=.log) +TEST_LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver +TEST_LOG_COMPILE = $(TEST_LOG_COMPILER) $(AM_TEST_LOG_FLAGS) \ + $(TEST_LOG_FLAGS) +DIST_SUBDIRS = $(SUBDIRS) +am__DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/shapelib.pc.in \ + AUTHORS COPYING ChangeLog INSTALL NEWS README ar-lib compile \ + config.guess config.sub depcomp install-sh ltmain.sh missing \ + test-driver +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +distdir = $(PACKAGE)-$(VERSION) +top_distdir = $(distdir) +am__remove_distdir = \ + if test -d "$(distdir)"; then \ + find "$(distdir)" -type d ! -perm -200 -exec chmod u+w {} ';' \ + && rm -rf "$(distdir)" \ + || { sleep 5 && rm -rf "$(distdir)"; }; \ + else :; fi +am__post_remove_distdir = $(am__remove_distdir) +am__relativize = \ + dir0=`pwd`; \ + sed_first='s,^\([^/]*\)/.*$$,\1,'; \ + sed_rest='s,^[^/]*/*,,'; \ + sed_last='s,^.*/\([^/]*\)$$,\1,'; \ + sed_butlast='s,/*[^/]*$$,,'; \ + while test -n "$$dir1"; do \ + first=`echo "$$dir1" | sed -e "$$sed_first"`; \ + if test "$$first" != "."; then \ + if test "$$first" = ".."; then \ + dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ + dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ + else \ + first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ + if test "$$first2" = "$$first"; then \ + dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ + else \ + dir2="../$$dir2"; \ + fi; \ + dir0="$$dir0"/"$$first"; \ + fi; \ + fi; \ + dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ + done; \ + reldir="$$dir2" +DIST_ARCHIVES = $(distdir).tar.gz $(distdir).zip +GZIP_ENV = --best +DIST_TARGETS = dist-gzip dist-zip +distuninstallcheck_listfiles = find . -type f -print +am__distuninstallcheck_listfiles = $(distuninstallcheck_listfiles) \ + | sed 's|^\./|$(prefix)/|' | grep -v '$(infodir)/dir$$' +distcleancheck_listfiles = find . -type f -print +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AR = @AR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DLLTOOL = @DLLTOOL@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +FGREP = @FGREP@ +GREP = @GREP@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBM = @LIBM@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ +MAKEINFO = @MAKEINFO@ +MANIFEST_TOOL = @MANIFEST_TOOL@ +MKDIR_P = @MKDIR_P@ +NM = @NM@ +NMEDIT = @NMEDIT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +PROJ_CFLAGS = @PROJ_CFLAGS@ +PROJ_LIBS = @PROJ_LIBS@ +RANLIB = @RANLIB@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHAPELIB_SO_VERSION = @SHAPELIB_SO_VERSION@ +SHELL = @SHELL@ +STRIP = @STRIP@ +VERSION = @VERSION@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +runstatedir = @runstatedir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +SUBDIRS = . contrib +ACLOCAL_AMFLAGS = -I m4 +AUTOMAKE_OPTIONS = dist-zip +@PLATFORM_WIN32_TRUE@no_undefined = -no-undefined + +# Extra files to distribute in the source tarball +EXTRA_DIST = makefile.vc CMakeLists.txt autogen.sh \ + tests/test1.sh tests/test2.sh tests/test3.sh \ + tests/stream1.out tests/stream1.out tests/stream1.out \ + web/maptools.css \ + web/codepage.html \ + web/index.html \ + web/shapelib-tools.html \ + web/shp_api.html \ + web/release.html \ + web/dbf_api.html \ + web/license.html \ + web/manifest.html \ + README.tree README.CMake + + +# pkg-config file +pkgconfigdir = $(libdir)/pkgconfig +pkgconfig_DATA = shapelib.pc + +# Library +lib_LTLIBRARIES = libshp.la +libshp_la_includedir = $(includedir) +libshp_la_include_HEADERS = shapefil.h +libshp_la_SOURCES = shpopen.c dbfopen.c safileio.c shptree.c sbnsearch.c +libshp_la_LDFLAGS = -version-info $(SHAPELIB_SO_VERSION) $(no_undefined) $(LIBM) +dbfadd_SOURCES = dbfadd.c +dbfadd_LDADD = $(top_builddir)/libshp.la +dbfcreate_SOURCES = dbfcreate.c +dbfcreate_LDADD = $(top_builddir)/libshp.la +dbfdump_SOURCES = dbfdump.c +dbfdump_LDADD = $(top_builddir)/libshp.la +shpadd_SOURCES = shpadd.c +shpadd_LDADD = $(top_builddir)/libshp.la +shpcreate_SOURCES = shpcreate.c +shpcreate_LDADD = $(top_builddir)/libshp.la +shpdump_SOURCES = shpdump.c +shpdump_LDADD = $(top_builddir)/libshp.la +shprewind_SOURCES = shprewind.c +shprewind_LDADD = $(top_builddir)/libshp.la +shptreedump_SOURCES = shptreedump.c +shptreedump_LDADD = $(top_builddir)/libshp.la +shputils_SOURCES = shputils.c +shputils_LDADD = $(top_builddir)/libshp.la +shptest_SOURCES = shptest.c +shptest_LDADD = $(top_builddir)/libshp.la + +# Tests +TESTS_ENVIRONMENT = top_builddir=$(abs_top_builddir) +# tests/test1.sh requires ftp://gdal.velocet.ca/pub/outgoing/shape_eg_data.zip +TESTS = tests/test2.sh tests/test3.sh +all: all-recursive + +.SUFFIXES: +.SUFFIXES: .c .lo .log .o .obj .test .test$(EXEEXT) .trs +am--refresh: Makefile + @: +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + echo ' cd $(srcdir) && $(AUTOMAKE) --gnu'; \ + $(am__cd) $(srcdir) && $(AUTOMAKE) --gnu \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + echo ' $(SHELL) ./config.status'; \ + $(SHELL) ./config.status;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + $(SHELL) ./config.status --recheck + +$(top_srcdir)/configure: $(am__configure_deps) + $(am__cd) $(srcdir) && $(AUTOCONF) +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + $(am__cd) $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS) +$(am__aclocal_m4_deps): +shapelib.pc: $(top_builddir)/config.status $(srcdir)/shapelib.pc.in + cd $(top_builddir) && $(SHELL) ./config.status $@ + +install-libLTLIBRARIES: $(lib_LTLIBRARIES) + @$(NORMAL_INSTALL) + @list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \ + list2=; for p in $$list; do \ + if test -f $$p; then \ + list2="$$list2 $$p"; \ + else :; fi; \ + done; \ + test -z "$$list2" || { \ + echo " $(MKDIR_P) '$(DESTDIR)$(libdir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(libdir)" || exit 1; \ + echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(libdir)'"; \ + $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(libdir)"; \ + } + +uninstall-libLTLIBRARIES: + @$(NORMAL_UNINSTALL) + @list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \ + for p in $$list; do \ + $(am__strip_dir) \ + echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(libdir)/$$f'"; \ + $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(libdir)/$$f"; \ + done + +clean-libLTLIBRARIES: + -test -z "$(lib_LTLIBRARIES)" || rm -f $(lib_LTLIBRARIES) + @list='$(lib_LTLIBRARIES)'; \ + locs=`for p in $$list; do echo $$p; done | \ + sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ + sort -u`; \ + test -z "$$locs" || { \ + echo rm -f $${locs}; \ + rm -f $${locs}; \ + } + +libshp.la: $(libshp_la_OBJECTS) $(libshp_la_DEPENDENCIES) $(EXTRA_libshp_la_DEPENDENCIES) + $(AM_V_CCLD)$(libshp_la_LINK) -rpath $(libdir) $(libshp_la_OBJECTS) $(libshp_la_LIBADD) $(LIBS) +install-binPROGRAMS: $(bin_PROGRAMS) + @$(NORMAL_INSTALL) + @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(bindir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(bindir)" || exit 1; \ + fi; \ + for p in $$list; do echo "$$p $$p"; done | \ + sed 's/$(EXEEXT)$$//' | \ + while read p p1; do if test -f $$p \ + || test -f $$p1 \ + ; then echo "$$p"; echo "$$p"; else :; fi; \ + done | \ + sed -e 'p;s,.*/,,;n;h' \ + -e 's|.*|.|' \ + -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \ + sed 'N;N;N;s,\n, ,g' | \ + $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \ + { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ + if ($$2 == $$4) files[d] = files[d] " " $$1; \ + else { print "f", $$3 "/" $$4, $$1; } } \ + END { for (d in files) print "f", d, files[d] }' | \ + while read type dir files; do \ + if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ + test -z "$$files" || { \ + echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(bindir)$$dir'"; \ + $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(bindir)$$dir" || exit $$?; \ + } \ + ; done + +uninstall-binPROGRAMS: + @$(NORMAL_UNINSTALL) + @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \ + files=`for p in $$list; do echo "$$p"; done | \ + sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \ + -e 's/$$/$(EXEEXT)/' \ + `; \ + test -n "$$list" || exit 0; \ + echo " ( cd '$(DESTDIR)$(bindir)' && rm -f" $$files ")"; \ + cd "$(DESTDIR)$(bindir)" && rm -f $$files + +clean-binPROGRAMS: + @list='$(bin_PROGRAMS)'; test -n "$$list" || exit 0; \ + echo " rm -f" $$list; \ + rm -f $$list || exit $$?; \ + test -n "$(EXEEXT)" || exit 0; \ + list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ + echo " rm -f" $$list; \ + rm -f $$list + +clean-noinstPROGRAMS: + @list='$(noinst_PROGRAMS)'; test -n "$$list" || exit 0; \ + echo " rm -f" $$list; \ + rm -f $$list || exit $$?; \ + test -n "$(EXEEXT)" || exit 0; \ + list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ + echo " rm -f" $$list; \ + rm -f $$list + +dbfadd$(EXEEXT): $(dbfadd_OBJECTS) $(dbfadd_DEPENDENCIES) $(EXTRA_dbfadd_DEPENDENCIES) + @rm -f dbfadd$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(dbfadd_OBJECTS) $(dbfadd_LDADD) $(LIBS) + +dbfcreate$(EXEEXT): $(dbfcreate_OBJECTS) $(dbfcreate_DEPENDENCIES) $(EXTRA_dbfcreate_DEPENDENCIES) + @rm -f dbfcreate$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(dbfcreate_OBJECTS) $(dbfcreate_LDADD) $(LIBS) + +dbfdump$(EXEEXT): $(dbfdump_OBJECTS) $(dbfdump_DEPENDENCIES) $(EXTRA_dbfdump_DEPENDENCIES) + @rm -f dbfdump$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(dbfdump_OBJECTS) $(dbfdump_LDADD) $(LIBS) + +shpadd$(EXEEXT): $(shpadd_OBJECTS) $(shpadd_DEPENDENCIES) $(EXTRA_shpadd_DEPENDENCIES) + @rm -f shpadd$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(shpadd_OBJECTS) $(shpadd_LDADD) $(LIBS) + +shpcreate$(EXEEXT): $(shpcreate_OBJECTS) $(shpcreate_DEPENDENCIES) $(EXTRA_shpcreate_DEPENDENCIES) + @rm -f shpcreate$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(shpcreate_OBJECTS) $(shpcreate_LDADD) $(LIBS) + +shpdump$(EXEEXT): $(shpdump_OBJECTS) $(shpdump_DEPENDENCIES) $(EXTRA_shpdump_DEPENDENCIES) + @rm -f shpdump$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(shpdump_OBJECTS) $(shpdump_LDADD) $(LIBS) + +shprewind$(EXEEXT): $(shprewind_OBJECTS) $(shprewind_DEPENDENCIES) $(EXTRA_shprewind_DEPENDENCIES) + @rm -f shprewind$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(shprewind_OBJECTS) $(shprewind_LDADD) $(LIBS) + +shptest$(EXEEXT): $(shptest_OBJECTS) $(shptest_DEPENDENCIES) $(EXTRA_shptest_DEPENDENCIES) + @rm -f shptest$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(shptest_OBJECTS) $(shptest_LDADD) $(LIBS) + +shptreedump$(EXEEXT): $(shptreedump_OBJECTS) $(shptreedump_DEPENDENCIES) $(EXTRA_shptreedump_DEPENDENCIES) + @rm -f shptreedump$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(shptreedump_OBJECTS) $(shptreedump_LDADD) $(LIBS) + +shputils$(EXEEXT): $(shputils_OBJECTS) $(shputils_DEPENDENCIES) $(EXTRA_shputils_DEPENDENCIES) + @rm -f shputils$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(shputils_OBJECTS) $(shputils_LDADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dbfadd.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dbfcreate.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dbfdump.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dbfopen.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/safileio.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sbnsearch.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/shpadd.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/shpcreate.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/shpdump.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/shpopen.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/shprewind.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/shptest.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/shptree.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/shptreedump.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/shputils.Po@am__quote@ + +.c.o: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< + +.c.obj: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` + +.c.lo: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +distclean-libtool: + -rm -f libtool config.lt +install-pkgconfigDATA: $(pkgconfig_DATA) + @$(NORMAL_INSTALL) + @list='$(pkgconfig_DATA)'; test -n "$(pkgconfigdir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(pkgconfigdir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(pkgconfigdir)" || exit 1; \ + fi; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(pkgconfigdir)'"; \ + $(INSTALL_DATA) $$files "$(DESTDIR)$(pkgconfigdir)" || exit $$?; \ + done + +uninstall-pkgconfigDATA: + @$(NORMAL_UNINSTALL) + @list='$(pkgconfig_DATA)'; test -n "$(pkgconfigdir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + dir='$(DESTDIR)$(pkgconfigdir)'; $(am__uninstall_files_from_dir) +install-libshp_la_includeHEADERS: $(libshp_la_include_HEADERS) + @$(NORMAL_INSTALL) + @list='$(libshp_la_include_HEADERS)'; test -n "$(libshp_la_includedir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(libshp_la_includedir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(libshp_la_includedir)" || exit 1; \ + fi; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(libshp_la_includedir)'"; \ + $(INSTALL_HEADER) $$files "$(DESTDIR)$(libshp_la_includedir)" || exit $$?; \ + done + +uninstall-libshp_la_includeHEADERS: + @$(NORMAL_UNINSTALL) + @list='$(libshp_la_include_HEADERS)'; test -n "$(libshp_la_includedir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + dir='$(DESTDIR)$(libshp_la_includedir)'; $(am__uninstall_files_from_dir) + +# This directory's subdirectories are mostly independent; you can cd +# into them and run 'make' without going through this Makefile. +# To change the values of 'make' variables: instead of editing Makefiles, +# (1) if the variable is set in 'config.status', edit 'config.status' +# (which will cause the Makefiles to be regenerated when you run 'make'); +# (2) otherwise, pass the desired values on the 'make' command line. +$(am__recursive_targets): + @fail=; \ + if $(am__make_keepgoing); then \ + failcom='fail=yes'; \ + else \ + failcom='exit 1'; \ + fi; \ + dot_seen=no; \ + target=`echo $@ | sed s/-recursive//`; \ + case "$@" in \ + distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ + *) list='$(SUBDIRS)' ;; \ + esac; \ + for subdir in $$list; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + dot_seen=yes; \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || eval $$failcom; \ + done; \ + if test "$$dot_seen" = "no"; then \ + $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ + fi; test -z "$$fail" + +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-recursive +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + set x; \ + here=`pwd`; \ + if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ + include_option=--etags-include; \ + empty_fix=.; \ + else \ + include_option=--include; \ + empty_fix=; \ + fi; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test ! -f $$subdir/TAGS || \ + set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ + fi; \ + done; \ + $(am__define_uniq_tagged_files); \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: ctags-recursive + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" +cscope: cscope.files + test ! -s cscope.files \ + || $(CSCOPE) -b -q $(AM_CSCOPEFLAGS) $(CSCOPEFLAGS) -i cscope.files $(CSCOPE_ARGS) +clean-cscope: + -rm -f cscope.files +cscope.files: clean-cscope cscopelist +cscopelist: cscopelist-recursive + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + -rm -f cscope.out cscope.in.out cscope.po.out cscope.files + +# Recover from deleted '.trs' file; this should ensure that +# "rm -f foo.log; make foo.trs" re-run 'foo.test', and re-create +# both 'foo.log' and 'foo.trs'. Break the recipe in two subshells +# to avoid problems with "make -n". +.log.trs: + rm -f $< $@ + $(MAKE) $(AM_MAKEFLAGS) $< + +# Leading 'am--fnord' is there to ensure the list of targets does not +# expand to empty, as could happen e.g. with make check TESTS=''. +am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck) +am--force-recheck: + @: + +$(TEST_SUITE_LOG): $(TEST_LOGS) + @$(am__set_TESTS_bases); \ + am__f_ok () { test -f "$$1" && test -r "$$1"; }; \ + redo_bases=`for i in $$bases; do \ + am__f_ok $$i.trs && am__f_ok $$i.log || echo $$i; \ + done`; \ + if test -n "$$redo_bases"; then \ + redo_logs=`for i in $$redo_bases; do echo $$i.log; done`; \ + redo_results=`for i in $$redo_bases; do echo $$i.trs; done`; \ + if $(am__make_dryrun); then :; else \ + rm -f $$redo_logs && rm -f $$redo_results || exit 1; \ + fi; \ + fi; \ + if test -n "$$am__remaking_logs"; then \ + echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \ + "recursion detected" >&2; \ + elif test -n "$$redo_logs"; then \ + am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \ + fi; \ + if $(am__make_dryrun); then :; else \ + st=0; \ + errmsg="fatal: making $(TEST_SUITE_LOG): failed to create"; \ + for i in $$redo_bases; do \ + test -f $$i.trs && test -r $$i.trs \ + || { echo "$$errmsg $$i.trs" >&2; st=1; }; \ + test -f $$i.log && test -r $$i.log \ + || { echo "$$errmsg $$i.log" >&2; st=1; }; \ + done; \ + test $$st -eq 0 || exit 1; \ + fi + @$(am__sh_e_setup); $(am__tty_colors); $(am__set_TESTS_bases); \ + ws='[ ]'; \ + results=`for b in $$bases; do echo $$b.trs; done`; \ + test -n "$$results" || results=/dev/null; \ + all=` grep "^$$ws*:test-result:" $$results | wc -l`; \ + pass=` grep "^$$ws*:test-result:$$ws*PASS" $$results | wc -l`; \ + fail=` grep "^$$ws*:test-result:$$ws*FAIL" $$results | wc -l`; \ + skip=` grep "^$$ws*:test-result:$$ws*SKIP" $$results | wc -l`; \ + xfail=`grep "^$$ws*:test-result:$$ws*XFAIL" $$results | wc -l`; \ + xpass=`grep "^$$ws*:test-result:$$ws*XPASS" $$results | wc -l`; \ + error=`grep "^$$ws*:test-result:$$ws*ERROR" $$results | wc -l`; \ + if test `expr $$fail + $$xpass + $$error` -eq 0; then \ + success=true; \ + else \ + success=false; \ + fi; \ + br='==================='; br=$$br$$br$$br$$br; \ + result_count () \ + { \ + if test x"$$1" = x"--maybe-color"; then \ + maybe_colorize=yes; \ + elif test x"$$1" = x"--no-color"; then \ + maybe_colorize=no; \ + else \ + echo "$@: invalid 'result_count' usage" >&2; exit 4; \ + fi; \ + shift; \ + desc=$$1 count=$$2; \ + if test $$maybe_colorize = yes && test $$count -gt 0; then \ + color_start=$$3 color_end=$$std; \ + else \ + color_start= color_end=; \ + fi; \ + echo "$${color_start}# $$desc $$count$${color_end}"; \ + }; \ + create_testsuite_report () \ + { \ + result_count $$1 "TOTAL:" $$all "$$brg"; \ + result_count $$1 "PASS: " $$pass "$$grn"; \ + result_count $$1 "SKIP: " $$skip "$$blu"; \ + result_count $$1 "XFAIL:" $$xfail "$$lgn"; \ + result_count $$1 "FAIL: " $$fail "$$red"; \ + result_count $$1 "XPASS:" $$xpass "$$red"; \ + result_count $$1 "ERROR:" $$error "$$mgn"; \ + }; \ + { \ + echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" | \ + $(am__rst_title); \ + create_testsuite_report --no-color; \ + echo; \ + echo ".. contents:: :depth: 2"; \ + echo; \ + for b in $$bases; do echo $$b; done \ + | $(am__create_global_log); \ + } >$(TEST_SUITE_LOG).tmp || exit 1; \ + mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG); \ + if $$success; then \ + col="$$grn"; \ + else \ + col="$$red"; \ + test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG); \ + fi; \ + echo "$${col}$$br$${std}"; \ + echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}"; \ + echo "$${col}$$br$${std}"; \ + create_testsuite_report --maybe-color; \ + echo "$$col$$br$$std"; \ + if $$success; then :; else \ + echo "$${col}See $(subdir)/$(TEST_SUITE_LOG)$${std}"; \ + if test -n "$(PACKAGE_BUGREPORT)"; then \ + echo "$${col}Please report to $(PACKAGE_BUGREPORT)$${std}"; \ + fi; \ + echo "$$col$$br$$std"; \ + fi; \ + $$success || exit 1 + +check-TESTS: + @list='$(RECHECK_LOGS)'; test -z "$$list" || rm -f $$list + @list='$(RECHECK_LOGS:.log=.trs)'; test -z "$$list" || rm -f $$list + @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + @set +e; $(am__set_TESTS_bases); \ + log_list=`for i in $$bases; do echo $$i.log; done`; \ + trs_list=`for i in $$bases; do echo $$i.trs; done`; \ + log_list=`echo $$log_list`; trs_list=`echo $$trs_list`; \ + $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) TEST_LOGS="$$log_list"; \ + exit $$?; +recheck: all + @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + @set +e; $(am__set_TESTS_bases); \ + bases=`for i in $$bases; do echo $$i; done \ + | $(am__list_recheck_tests)` || exit 1; \ + log_list=`for i in $$bases; do echo $$i.log; done`; \ + log_list=`echo $$log_list`; \ + $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) \ + am__force_recheck=am--force-recheck \ + TEST_LOGS="$$log_list"; \ + exit $$? +tests/test2.sh.log: tests/test2.sh + @p='tests/test2.sh'; \ + b='tests/test2.sh'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +tests/test3.sh.log: tests/test3.sh + @p='tests/test3.sh'; \ + b='tests/test3.sh'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +.test.log: + @p='$<'; \ + $(am__set_b); \ + $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +@am__EXEEXT_TRUE@.test$(EXEEXT).log: +@am__EXEEXT_TRUE@ @p='$<'; \ +@am__EXEEXT_TRUE@ $(am__set_b); \ +@am__EXEEXT_TRUE@ $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ +@am__EXEEXT_TRUE@ --log-file $$b.log --trs-file $$b.trs \ +@am__EXEEXT_TRUE@ $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ +@am__EXEEXT_TRUE@ "$$tst" $(AM_TESTS_FD_REDIRECT) + +distdir: $(DISTFILES) + $(am__remove_distdir) + test -d "$(distdir)" || mkdir "$(distdir)" + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done + @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + $(am__make_dryrun) \ + || test -d "$(distdir)/$$subdir" \ + || $(MKDIR_P) "$(distdir)/$$subdir" \ + || exit 1; \ + dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ + $(am__relativize); \ + new_distdir=$$reldir; \ + dir1=$$subdir; dir2="$(top_distdir)"; \ + $(am__relativize); \ + new_top_distdir=$$reldir; \ + echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ + echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ + ($(am__cd) $$subdir && \ + $(MAKE) $(AM_MAKEFLAGS) \ + top_distdir="$$new_top_distdir" \ + distdir="$$new_distdir" \ + am__remove_distdir=: \ + am__skip_length_check=: \ + am__skip_mode_fix=: \ + distdir) \ + || exit 1; \ + fi; \ + done + -test -n "$(am__skip_mode_fix)" \ + || find "$(distdir)" -type d ! -perm -755 \ + -exec chmod u+rwx,go+rx {} \; -o \ + ! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \ + ! -type d ! -perm -400 -exec chmod a+r {} \; -o \ + ! -type d ! -perm -444 -exec $(install_sh) -c -m a+r {} {} \; \ + || chmod -R a+r "$(distdir)" +dist-gzip: distdir + tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz + $(am__post_remove_distdir) + +dist-bzip2: distdir + tardir=$(distdir) && $(am__tar) | BZIP2=$${BZIP2--9} bzip2 -c >$(distdir).tar.bz2 + $(am__post_remove_distdir) + +dist-lzip: distdir + tardir=$(distdir) && $(am__tar) | lzip -c $${LZIP_OPT--9} >$(distdir).tar.lz + $(am__post_remove_distdir) + +dist-xz: distdir + tardir=$(distdir) && $(am__tar) | XZ_OPT=$${XZ_OPT--e} xz -c >$(distdir).tar.xz + $(am__post_remove_distdir) + +dist-tarZ: distdir + @echo WARNING: "Support for distribution archives compressed with" \ + "legacy program 'compress' is deprecated." >&2 + @echo WARNING: "It will be removed altogether in Automake 2.0" >&2 + tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z + $(am__post_remove_distdir) + +dist-shar: distdir + @echo WARNING: "Support for shar distribution archives is" \ + "deprecated." >&2 + @echo WARNING: "It will be removed altogether in Automake 2.0" >&2 + shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz + $(am__post_remove_distdir) +dist-zip: distdir + -rm -f $(distdir).zip + zip -rq $(distdir).zip $(distdir) + $(am__post_remove_distdir) + +dist dist-all: + $(MAKE) $(AM_MAKEFLAGS) $(DIST_TARGETS) am__post_remove_distdir='@:' + $(am__post_remove_distdir) + +# This target untars the dist file and tries a VPATH configuration. Then +# it guarantees that the distribution is self-contained by making another +# tarfile. +distcheck: dist + case '$(DIST_ARCHIVES)' in \ + *.tar.gz*) \ + GZIP=$(GZIP_ENV) gzip -dc $(distdir).tar.gz | $(am__untar) ;;\ + *.tar.bz2*) \ + bzip2 -dc $(distdir).tar.bz2 | $(am__untar) ;;\ + *.tar.lz*) \ + lzip -dc $(distdir).tar.lz | $(am__untar) ;;\ + *.tar.xz*) \ + xz -dc $(distdir).tar.xz | $(am__untar) ;;\ + *.tar.Z*) \ + uncompress -c $(distdir).tar.Z | $(am__untar) ;;\ + *.shar.gz*) \ + GZIP=$(GZIP_ENV) gzip -dc $(distdir).shar.gz | unshar ;;\ + *.zip*) \ + unzip $(distdir).zip ;;\ + esac + chmod -R a-w $(distdir) + chmod u+w $(distdir) + mkdir $(distdir)/_build $(distdir)/_build/sub $(distdir)/_inst + chmod a-w $(distdir) + test -d $(distdir)/_build || exit 0; \ + dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \ + && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \ + && am__cwd=`pwd` \ + && $(am__cd) $(distdir)/_build/sub \ + && ../../configure \ + $(AM_DISTCHECK_CONFIGURE_FLAGS) \ + $(DISTCHECK_CONFIGURE_FLAGS) \ + --srcdir=../.. --prefix="$$dc_install_base" \ + && $(MAKE) $(AM_MAKEFLAGS) \ + && $(MAKE) $(AM_MAKEFLAGS) dvi \ + && $(MAKE) $(AM_MAKEFLAGS) check \ + && $(MAKE) $(AM_MAKEFLAGS) install \ + && $(MAKE) $(AM_MAKEFLAGS) installcheck \ + && $(MAKE) $(AM_MAKEFLAGS) uninstall \ + && $(MAKE) $(AM_MAKEFLAGS) distuninstallcheck_dir="$$dc_install_base" \ + distuninstallcheck \ + && chmod -R a-w "$$dc_install_base" \ + && ({ \ + (cd ../.. && umask 077 && mkdir "$$dc_destdir") \ + && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \ + && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \ + && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \ + distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \ + } || { rm -rf "$$dc_destdir"; exit 1; }) \ + && rm -rf "$$dc_destdir" \ + && $(MAKE) $(AM_MAKEFLAGS) dist \ + && rm -rf $(DIST_ARCHIVES) \ + && $(MAKE) $(AM_MAKEFLAGS) distcleancheck \ + && cd "$$am__cwd" \ + || exit 1 + $(am__post_remove_distdir) + @(echo "$(distdir) archives ready for distribution: "; \ + list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \ + sed -e 1h -e 1s/./=/g -e 1p -e 1x -e '$$p' -e '$$x' +distuninstallcheck: + @test -n '$(distuninstallcheck_dir)' || { \ + echo 'ERROR: trying to run $@ with an empty' \ + '$$(distuninstallcheck_dir)' >&2; \ + exit 1; \ + }; \ + $(am__cd) '$(distuninstallcheck_dir)' || { \ + echo 'ERROR: cannot chdir into $(distuninstallcheck_dir)' >&2; \ + exit 1; \ + }; \ + test `$(am__distuninstallcheck_listfiles) | wc -l` -eq 0 \ + || { echo "ERROR: files left after uninstall:" ; \ + if test -n "$(DESTDIR)"; then \ + echo " (check DESTDIR support)"; \ + fi ; \ + $(distuninstallcheck_listfiles) ; \ + exit 1; } >&2 +distcleancheck: distclean + @if test '$(srcdir)' = . ; then \ + echo "ERROR: distcleancheck can only run from a VPATH build" ; \ + exit 1 ; \ + fi + @test `$(distcleancheck_listfiles) | wc -l` -eq 0 \ + || { echo "ERROR: files left in build directory after distclean:" ; \ + $(distcleancheck_listfiles) ; \ + exit 1; } >&2 +check-am: all-am + $(MAKE) $(AM_MAKEFLAGS) check-TESTS +check: check-recursive +all-am: Makefile $(LTLIBRARIES) $(PROGRAMS) $(DATA) $(HEADERS) +install-binPROGRAMS: install-libLTLIBRARIES + +installdirs: installdirs-recursive +installdirs-am: + for dir in "$(DESTDIR)$(libdir)" "$(DESTDIR)$(bindir)" "$(DESTDIR)$(pkgconfigdir)" "$(DESTDIR)$(libshp_la_includedir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +install: install-recursive +install-exec: install-exec-recursive +install-data: install-data-recursive +uninstall: uninstall-recursive + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-recursive +install-strip: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + -test -z "$(TEST_LOGS)" || rm -f $(TEST_LOGS) + -test -z "$(TEST_LOGS:.log=.trs)" || rm -f $(TEST_LOGS:.log=.trs) + -test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-recursive + +clean-am: clean-binPROGRAMS clean-generic clean-libLTLIBRARIES \ + clean-libtool clean-noinstPROGRAMS mostlyclean-am + +distclean: distclean-recursive + -rm -f $(am__CONFIG_DISTCLEAN_FILES) + -rm -rf ./$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-libtool distclean-tags + +dvi: dvi-recursive + +dvi-am: + +html: html-recursive + +html-am: + +info: info-recursive + +info-am: + +install-data-am: install-libshp_la_includeHEADERS \ + install-pkgconfigDATA + +install-dvi: install-dvi-recursive + +install-dvi-am: + +install-exec-am: install-binPROGRAMS install-libLTLIBRARIES + +install-html: install-html-recursive + +install-html-am: + +install-info: install-info-recursive + +install-info-am: + +install-man: + +install-pdf: install-pdf-recursive + +install-pdf-am: + +install-ps: install-ps-recursive + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-recursive + -rm -f $(am__CONFIG_DISTCLEAN_FILES) + -rm -rf $(top_srcdir)/autom4te.cache + -rm -rf ./$(DEPDIR) + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-recursive + +mostlyclean-am: mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool + +pdf: pdf-recursive + +pdf-am: + +ps: ps-recursive + +ps-am: + +uninstall-am: uninstall-binPROGRAMS uninstall-libLTLIBRARIES \ + uninstall-libshp_la_includeHEADERS uninstall-pkgconfigDATA + +.MAKE: $(am__recursive_targets) check-am install-am install-strip + +.PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am \ + am--refresh check check-TESTS check-am clean clean-binPROGRAMS \ + clean-cscope clean-generic clean-libLTLIBRARIES clean-libtool \ + clean-noinstPROGRAMS cscope cscopelist-am ctags ctags-am dist \ + dist-all dist-bzip2 dist-gzip dist-lzip dist-shar dist-tarZ \ + dist-xz dist-zip distcheck distclean distclean-compile \ + distclean-generic distclean-libtool distclean-tags \ + distcleancheck distdir distuninstallcheck dvi dvi-am html \ + html-am info info-am install install-am install-binPROGRAMS \ + install-data install-data-am install-dvi install-dvi-am \ + install-exec install-exec-am install-html install-html-am \ + install-info install-info-am install-libLTLIBRARIES \ + install-libshp_la_includeHEADERS install-man install-pdf \ + install-pdf-am install-pkgconfigDATA install-ps install-ps-am \ + install-strip installcheck installcheck-am installdirs \ + installdirs-am maintainer-clean maintainer-clean-generic \ + mostlyclean mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool pdf pdf-am ps ps-am recheck tags tags-am \ + uninstall uninstall-am uninstall-binPROGRAMS \ + uninstall-libLTLIBRARIES uninstall-libshp_la_includeHEADERS \ + uninstall-pkgconfigDATA + +.PRECIOUS: Makefile + + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/libs/shapelib/NEWS b/libs/shapelib/NEWS new file mode 100644 index 0000000..70ba85d --- /dev/null +++ b/libs/shapelib/NEWS @@ -0,0 +1,2 @@ +See ChangeLog + diff --git a/libs/shapelib/README b/libs/shapelib/README new file mode 100644 index 0000000..81af4b1 --- /dev/null +++ b/libs/shapelib/README @@ -0,0 +1,25 @@ + +Building on Unix +---------------- + +1) run ./configure to generate build scripts + Note: type ./configure --help for a list of fine-tuning options + +2) type "make" + +3) type "make check" to perform self-tests + +4) type "make install" to install + + +Building on Windows +------------------- + +If you have run the VC++ VCVARS32.BAT, you should be able to type the +following in a command window to build the code and executables: + +C:> nmake /f makefile.vc + +Otherwise create your own VC++ project. There aren't many files to deal with +here! + diff --git a/libs/shapelib/README.CMake b/libs/shapelib/README.CMake new file mode 100644 index 0000000..de3ff24 --- /dev/null +++ b/libs/shapelib/README.CMake @@ -0,0 +1,63 @@ +The CMakeLists.txt file in the current directory is a complete build +system for shapelib which does everything that the shapelib Makefile +does and Linux and the shapelib makefile.vc file does on Windows with +a lot more flexibility. For example, full testing can be done with +the present CMake-based approach because an optional and configurable +location is used for the downloadable (for example, wget +http://dl.maptools.org/dl/shapelib/shape_eg_data.zip) eg_data tree +that is used for all the "stream1" tests. + +To use this build system on Unix or MinGW/MSYS/Windows: + +(1) (Optional) Download eg_data from the location above. + +(2) Download shapelib-1.3.0.tar.gz from http://download.osgeo.org/shapelib +and unpack it + +(3) Copy the CMakeLists.txt file into the top-level of the unpacked +shapelib-1.3.0 source tree. + +(4) Apply shapelib.patch (which optionally quiets error messages when +shapelib is unable to open shapefiles). First change directory +to the top-level of the shapelib-1.3.0 source tree, then + +patch -p1 < + +(5) Create a separate empty build tree and use it to configure, build, +install and test shapelib. For example (you will need to tailor the +compiler, compile options, install prefix, eg_data location, and source tree location to your own +needs): + +mkdir build_dir +cd build_dir + +# Configure with the compiler and compiler options of your choice. +# N.B. the gcc -fvisibility=hidden option not (yet) supported by shapelib. +env CC=gcc CFLAGS="-O3 -Wuninitialized" \ +cmake \ +-G "Unix Makefiles" \ +-DCMAKE_INSTALL_PREFIX=/home/software/shapelib/install \ +-DEG_DATA:PATH=/home/software/shapefile/eg_data/ \ +../shapelib-1.3.0 >& cmake.out + +# Build and install +make VERBOSE=1 -j4 install >& install.out + +# Test +ctest + +The -DEG_DATA:PATH option is optional, but if you don't specify +the eg_data directory that way the stream1 tests will be dropped. + +Note the above procedure is what you should do on a Unix platform like +Linux where the generator -G "Unix Makefiles" works well. On +MINGW/MSYS the procedure is essentially the same except you should use +the -G "MSYS Makefiles" cmake option instead to specify a good generator +for that platform. + +I have used variants of the above procedure to create, test, and +install shapelib on both the Linux and MinGW/MSYS/Wine platforms. +Furthermore, on both platforms I have built and tested PLplot using +the installed versions created by the above procedure. No issues were +discovered with PLplot example 19 (which demos PLplot map capabilities with +map shapefiles) for these two separate platform tests. diff --git a/libs/shapelib/README.tree b/libs/shapelib/README.tree new file mode 100644 index 0000000..434c648 --- /dev/null +++ b/libs/shapelib/README.tree @@ -0,0 +1,172 @@ +Venkat, + +I have completed the planned Shapefile quadtree mechanism. The additions +to the traditional Shapelib are found in shptree.c (functions supporting +quad tree searching and query). There are also some new prototypes for +the tree stuff in shapefil.h ... including some prototypes for functions +you don't require and hence that I haven't implemented at this time. + +I have also prepared a demonstration program using the API. That is +the ``shpdumptree'' program, with the source code in shpdumptree.c. The +shpdumptree program has two functions. One is to dump an ASCII rendering +of the internal quadtree, and the other is example use of a quad tree +searching function. + +Dumping the Tree +---------------- + +The tree dumping is done as shown below. The "-maxdepth" commandline +switch can be used to control the maximum depth, otherwise it internally +computes a ``reasonable depth'' to use based on the number of structures +in the shapefile. + +warmerda@gdal[207]% shptreedump -maxdepth 6 eg_data/polygon.shp +( SHPTreeNode + Min = (471127.19,4751545.00) + Max = (489292.31,4765610.50) + Shapes(0): + ( SHPTreeNode + Min = (471127.19,4751545.00) + Max = (481118.01,4765610.50) + Shapes(0): + ( SHPTreeNode + Min = (471127.19,4751545.00) + Max = (481118.01,4759281.03) + Shapes(0): + ( SHPTreeNode + Min = (471127.19,4751545.00) + Max = (476622.14,4759281.03) + Shapes(0): + ( SHPTreeNode + Min = (471127.19,4751545.00) + Max = (476622.14,4755799.81) + Shapes(0): + ( SHPTreeNode + Min = (471127.19,4751545.00) + Max = (474149.41,4755799.81) + Shapes(6): 395 397 402 404 405 422 + ) + ( SHPTreeNode + Min = (473599.92,4751545.00) + Max = (476622.14,4755799.81) + Shapes(10): 392 394 403 413 414 417 426 433 434 447 + ) + ) +... + +A structure like the following represents one node in the tree. In +this case it cover the region of 473599.92 < X < 476622.14,and +4751545.0 < Y < 4755799.81. There are ten shapes within this region +who's shapeids are 392, 394 ... 447. This node has no children nodes. + + ( SHPTreeNode + Min = (473599.92,4751545.00) + Max = (476622.14,4755799.81) + Shapes(10): 392 394 403 413 414 417 426 433 434 447 + ) + +The heirarchy of indentation is intended to show the parent, child +relationship between nodes, with the tree being deeper the further to the +right you go. + +The `-v' flag to the program can be used to expand the report to include +the full information about shapes, not just their shapeid. This can result +in a report looking more like this: + + ... + ( SHPTreeNode + Min = (478095.78,4751545.00) + Max = (481118.01,4755799.81) + Shapes(3): + ( Shape + ShapeId = 448 + Min = (479988.09,4753300.00) + Max = (480705.59,4754236.50) + Vertex[0] = (480136.59,4754174.50) + Vertex[1] = (480229.97,4754182.00) + Vertex[2] = (480370.09,4754200.50) + Vertex[3] = (480695.12,4754236.50) + Vertex[4] = (480687.97,4754129.50) + Vertex[5] = (480650.47,4754075.50) + Vertex[6] = (480520.62,4753948.00) + Vertex[7] = (480490.00,4753900.00) + Vertex[8] = (480499.78,4753840.50) + Vertex[9] = (480500.97,4753820.50) + Vertex[10] = (480534.75,4753660.50) + Vertex[11] = (480560.00,4753565.00) + Vertex[12] = (480574.91,4753550.50) + ... + +While it is possible to part the output of the shptreedump program, and +insert it into your database, my intention was that the shptreedump program +would serve as an example of how to pre-order traversal of the quad tree, +and collect the information you will need to insert into your database. +I would then expect you to write a new program based on shptreedump that +calls a C API for your database to insert objects instead of printing them +out. Alternatively there may be an ASCII format for loading tables that +you could modify the program to output. + +Searching +--------- + +The other thing that you can do with the shptreedump program is to +perform a search on the quadtree. For instance the following shows +searching on a small region. + +% shptreedump -search 471127 4751545 476622 4759281 eg_data/polygon.shp +Shape 17: not in area of interest, but fetched. +Shape 31: not in area of interest, but fetched. +Shape 52: not in area of interest, but fetched. +Shape 76: not in area of interest, but fetched. +Shape 82: not in area of interest, but fetched. +Shape 104: not in area of interest, but fetched. +Shape 124: not in area of interest, but fetched. +Shape 134: not in area of interest, but fetched. +Shape 139: not in area of interest, but fetched. +Shape 154: not in area of interest, but fetched. +Shape 175: not in area of interest, but fetched. +Shape 177: not in area of interest, but fetched. +Shape 185: not in area of interest, but fetched. +Shape 192: not in area of interest, but fetched. +Shape 196: appears to be in area of interest. +.... + + +I have included this capability (and the SHPTreeFindLikelyShapes() function) +so that you can see a working example of how to search this quad tree. +Note that searching is a multi-stage affair. + +First a pass is made over the quadtree, collecting the shapeids of all +shapes contained in a quadtree node for which the bounding rectangle overlaps +the search rectangle. This is all accomplished by SHPTreeFindLikelyShapes() +in shptree.c. + +The second phase is to fetch the actual shapes, and verify if their bounding +box falls within the area of interest. This is necessary because the shape +will tend to have a significantly smaller bounding rectangle than the tree +node in which it is found. This can result ``false positives'' on the first +phase search, as indicated by teh ``not in area of interest, but fetched'' +messages above. This stage is done in the SHPTreeNodeSearchAndDump() +function in shptreedump.c. + +A possible third phase is to verify that the actualy line segments in the +shape actually cross the area of interest. I don't both with this as it +is complicated, and assuming that the drawing engine takes care of clipping +it is quite a bit easier to let it fall through. + +Building +-------- + +I have added a makefile.vc to the shapelib distribution. After you have +unpacked the shapefile you should have a shapelib subdirectory. If you +cd to that directory, and enter ``nmake -f makefile.vc'' in a DOS window +you should be able to build everything with VC++ (assuming it is properly +installed and in your path). + +You can also create a project in VC just including the files +shpopen.c, shptree.c and shptreedump.c, building as a Win32 console +application. + +For your convenience I am including prebuild .obj files, and .exe files +in the distribution. + diff --git a/libs/shapelib/aclocal.m4 b/libs/shapelib/aclocal.m4 new file mode 100644 index 0000000..110817d --- /dev/null +++ b/libs/shapelib/aclocal.m4 @@ -0,0 +1,1217 @@ +# generated automatically by aclocal 1.15 -*- Autoconf -*- + +# Copyright (C) 1996-2014 Free Software Foundation, Inc. + +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +m4_ifndef([AC_CONFIG_MACRO_DIRS], [m4_defun([_AM_CONFIG_MACRO_DIRS], [])m4_defun([AC_CONFIG_MACRO_DIRS], [_AM_CONFIG_MACRO_DIRS($@)])]) +m4_ifndef([AC_AUTOCONF_VERSION], + [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl +m4_if(m4_defn([AC_AUTOCONF_VERSION]), [2.69],, +[m4_warning([this file was generated for autoconf 2.69. +You have another version of autoconf. It may work, but is not guaranteed to. +If you have problems, you may need to regenerate the build system entirely. +To do so, use the procedure documented by the package, typically 'autoreconf'.])]) + +# Copyright (C) 2002-2014 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# AM_AUTOMAKE_VERSION(VERSION) +# ---------------------------- +# Automake X.Y traces this macro to ensure aclocal.m4 has been +# generated from the m4 files accompanying Automake X.Y. +# (This private macro should not be called outside this file.) +AC_DEFUN([AM_AUTOMAKE_VERSION], +[am__api_version='1.15' +dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to +dnl require some minimum version. Point them to the right macro. +m4_if([$1], [1.15], [], + [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl +]) + +# _AM_AUTOCONF_VERSION(VERSION) +# ----------------------------- +# aclocal traces this macro to find the Autoconf version. +# This is a private macro too. Using m4_define simplifies +# the logic in aclocal, which can simply ignore this definition. +m4_define([_AM_AUTOCONF_VERSION], []) + +# AM_SET_CURRENT_AUTOMAKE_VERSION +# ------------------------------- +# Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced. +# This function is AC_REQUIREd by AM_INIT_AUTOMAKE. +AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION], +[AM_AUTOMAKE_VERSION([1.15])dnl +m4_ifndef([AC_AUTOCONF_VERSION], + [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl +_AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))]) + +# Copyright (C) 2011-2014 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# AM_PROG_AR([ACT-IF-FAIL]) +# ------------------------- +# Try to determine the archiver interface, and trigger the ar-lib wrapper +# if it is needed. If the detection of archiver interface fails, run +# ACT-IF-FAIL (default is to abort configure with a proper error message). +AC_DEFUN([AM_PROG_AR], +[AC_BEFORE([$0], [LT_INIT])dnl +AC_BEFORE([$0], [AC_PROG_LIBTOOL])dnl +AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl +AC_REQUIRE_AUX_FILE([ar-lib])dnl +AC_CHECK_TOOLS([AR], [ar lib "link -lib"], [false]) +: ${AR=ar} + +AC_CACHE_CHECK([the archiver ($AR) interface], [am_cv_ar_interface], + [AC_LANG_PUSH([C]) + am_cv_ar_interface=ar + AC_COMPILE_IFELSE([AC_LANG_SOURCE([[int some_variable = 0;]])], + [am_ar_try='$AR cru libconftest.a conftest.$ac_objext >&AS_MESSAGE_LOG_FD' + AC_TRY_EVAL([am_ar_try]) + if test "$ac_status" -eq 0; then + am_cv_ar_interface=ar + else + am_ar_try='$AR -NOLOGO -OUT:conftest.lib conftest.$ac_objext >&AS_MESSAGE_LOG_FD' + AC_TRY_EVAL([am_ar_try]) + if test "$ac_status" -eq 0; then + am_cv_ar_interface=lib + else + am_cv_ar_interface=unknown + fi + fi + rm -f conftest.lib libconftest.a + ]) + AC_LANG_POP([C])]) + +case $am_cv_ar_interface in +ar) + ;; +lib) + # Microsoft lib, so override with the ar-lib wrapper script. + # FIXME: It is wrong to rewrite AR. + # But if we don't then we get into trouble of one sort or another. + # A longer-term fix would be to have automake use am__AR in this case, + # and then we could set am__AR="$am_aux_dir/ar-lib \$(AR)" or something + # similar. + AR="$am_aux_dir/ar-lib $AR" + ;; +unknown) + m4_default([$1], + [AC_MSG_ERROR([could not determine $AR interface])]) + ;; +esac +AC_SUBST([AR])dnl +]) + +# AM_AUX_DIR_EXPAND -*- Autoconf -*- + +# Copyright (C) 2001-2014 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets +# $ac_aux_dir to '$srcdir/foo'. In other projects, it is set to +# '$srcdir', '$srcdir/..', or '$srcdir/../..'. +# +# Of course, Automake must honor this variable whenever it calls a +# tool from the auxiliary directory. The problem is that $srcdir (and +# therefore $ac_aux_dir as well) can be either absolute or relative, +# depending on how configure is run. This is pretty annoying, since +# it makes $ac_aux_dir quite unusable in subdirectories: in the top +# source directory, any form will work fine, but in subdirectories a +# relative path needs to be adjusted first. +# +# $ac_aux_dir/missing +# fails when called from a subdirectory if $ac_aux_dir is relative +# $top_srcdir/$ac_aux_dir/missing +# fails if $ac_aux_dir is absolute, +# fails when called from a subdirectory in a VPATH build with +# a relative $ac_aux_dir +# +# The reason of the latter failure is that $top_srcdir and $ac_aux_dir +# are both prefixed by $srcdir. In an in-source build this is usually +# harmless because $srcdir is '.', but things will broke when you +# start a VPATH build or use an absolute $srcdir. +# +# So we could use something similar to $top_srcdir/$ac_aux_dir/missing, +# iff we strip the leading $srcdir from $ac_aux_dir. That would be: +# am_aux_dir='\$(top_srcdir)/'`expr "$ac_aux_dir" : "$srcdir//*\(.*\)"` +# and then we would define $MISSING as +# MISSING="\${SHELL} $am_aux_dir/missing" +# This will work as long as MISSING is not called from configure, because +# unfortunately $(top_srcdir) has no meaning in configure. +# However there are other variables, like CC, which are often used in +# configure, and could therefore not use this "fixed" $ac_aux_dir. +# +# Another solution, used here, is to always expand $ac_aux_dir to an +# absolute PATH. The drawback is that using absolute paths prevent a +# configured tree to be moved without reconfiguration. + +AC_DEFUN([AM_AUX_DIR_EXPAND], +[AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT])dnl +# Expand $ac_aux_dir to an absolute path. +am_aux_dir=`cd "$ac_aux_dir" && pwd` +]) + +# AM_CONDITIONAL -*- Autoconf -*- + +# Copyright (C) 1997-2014 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# AM_CONDITIONAL(NAME, SHELL-CONDITION) +# ------------------------------------- +# Define a conditional. +AC_DEFUN([AM_CONDITIONAL], +[AC_PREREQ([2.52])dnl + m4_if([$1], [TRUE], [AC_FATAL([$0: invalid condition: $1])], + [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl +AC_SUBST([$1_TRUE])dnl +AC_SUBST([$1_FALSE])dnl +_AM_SUBST_NOTMAKE([$1_TRUE])dnl +_AM_SUBST_NOTMAKE([$1_FALSE])dnl +m4_define([_AM_COND_VALUE_$1], [$2])dnl +if $2; then + $1_TRUE= + $1_FALSE='#' +else + $1_TRUE='#' + $1_FALSE= +fi +AC_CONFIG_COMMANDS_PRE( +[if test -z "${$1_TRUE}" && test -z "${$1_FALSE}"; then + AC_MSG_ERROR([[conditional "$1" was never defined. +Usually this means the macro was only invoked conditionally.]]) +fi])]) + +# Copyright (C) 1999-2014 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + + +# There are a few dirty hacks below to avoid letting 'AC_PROG_CC' be +# written in clear, in which case automake, when reading aclocal.m4, +# will think it sees a *use*, and therefore will trigger all it's +# C support machinery. Also note that it means that autoscan, seeing +# CC etc. in the Makefile, will ask for an AC_PROG_CC use... + + +# _AM_DEPENDENCIES(NAME) +# ---------------------- +# See how the compiler implements dependency checking. +# NAME is "CC", "CXX", "OBJC", "OBJCXX", "UPC", or "GJC". +# We try a few techniques and use that to set a single cache variable. +# +# We don't AC_REQUIRE the corresponding AC_PROG_CC since the latter was +# modified to invoke _AM_DEPENDENCIES(CC); we would have a circular +# dependency, and given that the user is not expected to run this macro, +# just rely on AC_PROG_CC. +AC_DEFUN([_AM_DEPENDENCIES], +[AC_REQUIRE([AM_SET_DEPDIR])dnl +AC_REQUIRE([AM_OUTPUT_DEPENDENCY_COMMANDS])dnl +AC_REQUIRE([AM_MAKE_INCLUDE])dnl +AC_REQUIRE([AM_DEP_TRACK])dnl + +m4_if([$1], [CC], [depcc="$CC" am_compiler_list=], + [$1], [CXX], [depcc="$CXX" am_compiler_list=], + [$1], [OBJC], [depcc="$OBJC" am_compiler_list='gcc3 gcc'], + [$1], [OBJCXX], [depcc="$OBJCXX" am_compiler_list='gcc3 gcc'], + [$1], [UPC], [depcc="$UPC" am_compiler_list=], + [$1], [GCJ], [depcc="$GCJ" am_compiler_list='gcc3 gcc'], + [depcc="$$1" am_compiler_list=]) + +AC_CACHE_CHECK([dependency style of $depcc], + [am_cv_$1_dependencies_compiler_type], +[if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then + # We make a subdir and do the tests there. Otherwise we can end up + # making bogus files that we don't know about and never remove. For + # instance it was reported that on HP-UX the gcc test will end up + # making a dummy file named 'D' -- because '-MD' means "put the output + # in D". + rm -rf conftest.dir + mkdir conftest.dir + # Copy depcomp to subdir because otherwise we won't find it if we're + # using a relative directory. + cp "$am_depcomp" conftest.dir + cd conftest.dir + # We will build objects and dependencies in a subdirectory because + # it helps to detect inapplicable dependency modes. For instance + # both Tru64's cc and ICC support -MD to output dependencies as a + # side effect of compilation, but ICC will put the dependencies in + # the current directory while Tru64 will put them in the object + # directory. + mkdir sub + + am_cv_$1_dependencies_compiler_type=none + if test "$am_compiler_list" = ""; then + am_compiler_list=`sed -n ['s/^#*\([a-zA-Z0-9]*\))$/\1/p'] < ./depcomp` + fi + am__universal=false + m4_case([$1], [CC], + [case " $depcc " in #( + *\ -arch\ *\ -arch\ *) am__universal=true ;; + esac], + [CXX], + [case " $depcc " in #( + *\ -arch\ *\ -arch\ *) am__universal=true ;; + esac]) + + for depmode in $am_compiler_list; do + # Setup a source with many dependencies, because some compilers + # like to wrap large dependency lists on column 80 (with \), and + # we should not choose a depcomp mode which is confused by this. + # + # We need to recreate these files for each test, as the compiler may + # overwrite some of them when testing with obscure command lines. + # This happens at least with the AIX C compiler. + : > sub/conftest.c + for i in 1 2 3 4 5 6; do + echo '#include "conftst'$i'.h"' >> sub/conftest.c + # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with + # Solaris 10 /bin/sh. + echo '/* dummy */' > sub/conftst$i.h + done + echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf + + # We check with '-c' and '-o' for the sake of the "dashmstdout" + # mode. It turns out that the SunPro C++ compiler does not properly + # handle '-M -o', and we need to detect this. Also, some Intel + # versions had trouble with output in subdirs. + am__obj=sub/conftest.${OBJEXT-o} + am__minus_obj="-o $am__obj" + case $depmode in + gcc) + # This depmode causes a compiler race in universal mode. + test "$am__universal" = false || continue + ;; + nosideeffect) + # After this tag, mechanisms are not by side-effect, so they'll + # only be used when explicitly requested. + if test "x$enable_dependency_tracking" = xyes; then + continue + else + break + fi + ;; + msvc7 | msvc7msys | msvisualcpp | msvcmsys) + # This compiler won't grok '-c -o', but also, the minuso test has + # not run yet. These depmodes are late enough in the game, and + # so weak that their functioning should not be impacted. + am__obj=conftest.${OBJEXT-o} + am__minus_obj= + ;; + none) break ;; + esac + if depmode=$depmode \ + source=sub/conftest.c object=$am__obj \ + depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ + $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ + >/dev/null 2>conftest.err && + grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && + grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && + grep $am__obj sub/conftest.Po > /dev/null 2>&1 && + ${MAKE-make} -s -f confmf > /dev/null 2>&1; then + # icc doesn't choke on unknown options, it will just issue warnings + # or remarks (even with -Werror). So we grep stderr for any message + # that says an option was ignored or not supported. + # When given -MP, icc 7.0 and 7.1 complain thusly: + # icc: Command line warning: ignoring option '-M'; no argument required + # The diagnosis changed in icc 8.0: + # icc: Command line remark: option '-MP' not supported + if (grep 'ignoring option' conftest.err || + grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else + am_cv_$1_dependencies_compiler_type=$depmode + break + fi + fi + done + + cd .. + rm -rf conftest.dir +else + am_cv_$1_dependencies_compiler_type=none +fi +]) +AC_SUBST([$1DEPMODE], [depmode=$am_cv_$1_dependencies_compiler_type]) +AM_CONDITIONAL([am__fastdep$1], [ + test "x$enable_dependency_tracking" != xno \ + && test "$am_cv_$1_dependencies_compiler_type" = gcc3]) +]) + + +# AM_SET_DEPDIR +# ------------- +# Choose a directory name for dependency files. +# This macro is AC_REQUIREd in _AM_DEPENDENCIES. +AC_DEFUN([AM_SET_DEPDIR], +[AC_REQUIRE([AM_SET_LEADING_DOT])dnl +AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])dnl +]) + + +# AM_DEP_TRACK +# ------------ +AC_DEFUN([AM_DEP_TRACK], +[AC_ARG_ENABLE([dependency-tracking], [dnl +AS_HELP_STRING( + [--enable-dependency-tracking], + [do not reject slow dependency extractors]) +AS_HELP_STRING( + [--disable-dependency-tracking], + [speeds up one-time build])]) +if test "x$enable_dependency_tracking" != xno; then + am_depcomp="$ac_aux_dir/depcomp" + AMDEPBACKSLASH='\' + am__nodep='_no' +fi +AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno]) +AC_SUBST([AMDEPBACKSLASH])dnl +_AM_SUBST_NOTMAKE([AMDEPBACKSLASH])dnl +AC_SUBST([am__nodep])dnl +_AM_SUBST_NOTMAKE([am__nodep])dnl +]) + +# Generate code to set up dependency tracking. -*- Autoconf -*- + +# Copyright (C) 1999-2014 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + + +# _AM_OUTPUT_DEPENDENCY_COMMANDS +# ------------------------------ +AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS], +[{ + # Older Autoconf quotes --file arguments for eval, but not when files + # are listed without --file. Let's play safe and only enable the eval + # if we detect the quoting. + case $CONFIG_FILES in + *\'*) eval set x "$CONFIG_FILES" ;; + *) set x $CONFIG_FILES ;; + esac + shift + for mf + do + # Strip MF so we end up with the name of the file. + mf=`echo "$mf" | sed -e 's/:.*$//'` + # Check whether this is an Automake generated Makefile or not. + # We used to match only the files named 'Makefile.in', but + # some people rename them; so instead we look at the file content. + # Grep'ing the first line is not enough: some people post-process + # each Makefile.in and add a new line on top of each file to say so. + # Grep'ing the whole file is not good either: AIX grep has a line + # limit of 2048, but all sed's we know have understand at least 4000. + if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then + dirpart=`AS_DIRNAME("$mf")` + else + continue + fi + # Extract the definition of DEPDIR, am__include, and am__quote + # from the Makefile without running 'make'. + DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` + test -z "$DEPDIR" && continue + am__include=`sed -n 's/^am__include = //p' < "$mf"` + test -z "$am__include" && continue + am__quote=`sed -n 's/^am__quote = //p' < "$mf"` + # Find all dependency output files, they are included files with + # $(DEPDIR) in their names. We invoke sed twice because it is the + # simplest approach to changing $(DEPDIR) to its actual value in the + # expansion. + for file in `sed -n " + s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ + sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g'`; do + # Make sure the directory exists. + test -f "$dirpart/$file" && continue + fdir=`AS_DIRNAME(["$file"])` + AS_MKDIR_P([$dirpart/$fdir]) + # echo "creating $dirpart/$file" + echo '# dummy' > "$dirpart/$file" + done + done +} +])# _AM_OUTPUT_DEPENDENCY_COMMANDS + + +# AM_OUTPUT_DEPENDENCY_COMMANDS +# ----------------------------- +# This macro should only be invoked once -- use via AC_REQUIRE. +# +# This code is only required when automatic dependency tracking +# is enabled. FIXME. This creates each '.P' file that we will +# need in order to bootstrap the dependency handling code. +AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS], +[AC_CONFIG_COMMANDS([depfiles], + [test x"$AMDEP_TRUE" != x"" || _AM_OUTPUT_DEPENDENCY_COMMANDS], + [AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"]) +]) + +# Do all the work for Automake. -*- Autoconf -*- + +# Copyright (C) 1996-2014 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This macro actually does too much. Some checks are only needed if +# your package does certain things. But this isn't really a big deal. + +dnl Redefine AC_PROG_CC to automatically invoke _AM_PROG_CC_C_O. +m4_define([AC_PROG_CC], +m4_defn([AC_PROG_CC]) +[_AM_PROG_CC_C_O +]) + +# AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE]) +# AM_INIT_AUTOMAKE([OPTIONS]) +# ----------------------------------------------- +# The call with PACKAGE and VERSION arguments is the old style +# call (pre autoconf-2.50), which is being phased out. PACKAGE +# and VERSION should now be passed to AC_INIT and removed from +# the call to AM_INIT_AUTOMAKE. +# We support both call styles for the transition. After +# the next Automake release, Autoconf can make the AC_INIT +# arguments mandatory, and then we can depend on a new Autoconf +# release and drop the old call support. +AC_DEFUN([AM_INIT_AUTOMAKE], +[AC_PREREQ([2.65])dnl +dnl Autoconf wants to disallow AM_ names. We explicitly allow +dnl the ones we care about. +m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl +AC_REQUIRE([AM_SET_CURRENT_AUTOMAKE_VERSION])dnl +AC_REQUIRE([AC_PROG_INSTALL])dnl +if test "`cd $srcdir && pwd`" != "`pwd`"; then + # Use -I$(srcdir) only when $(srcdir) != ., so that make's output + # is not polluted with repeated "-I." + AC_SUBST([am__isrc], [' -I$(srcdir)'])_AM_SUBST_NOTMAKE([am__isrc])dnl + # test to see if srcdir already configured + if test -f $srcdir/config.status; then + AC_MSG_ERROR([source directory already configured; run "make distclean" there first]) + fi +fi + +# test whether we have cygpath +if test -z "$CYGPATH_W"; then + if (cygpath --version) >/dev/null 2>/dev/null; then + CYGPATH_W='cygpath -w' + else + CYGPATH_W=echo + fi +fi +AC_SUBST([CYGPATH_W]) + +# Define the identity of the package. +dnl Distinguish between old-style and new-style calls. +m4_ifval([$2], +[AC_DIAGNOSE([obsolete], + [$0: two- and three-arguments forms are deprecated.]) +m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl + AC_SUBST([PACKAGE], [$1])dnl + AC_SUBST([VERSION], [$2])], +[_AM_SET_OPTIONS([$1])dnl +dnl Diagnose old-style AC_INIT with new-style AM_AUTOMAKE_INIT. +m4_if( + m4_ifdef([AC_PACKAGE_NAME], [ok]):m4_ifdef([AC_PACKAGE_VERSION], [ok]), + [ok:ok],, + [m4_fatal([AC_INIT should be called with package and version arguments])])dnl + AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])dnl + AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])])dnl + +_AM_IF_OPTION([no-define],, +[AC_DEFINE_UNQUOTED([PACKAGE], ["$PACKAGE"], [Name of package]) + AC_DEFINE_UNQUOTED([VERSION], ["$VERSION"], [Version number of package])])dnl + +# Some tools Automake needs. +AC_REQUIRE([AM_SANITY_CHECK])dnl +AC_REQUIRE([AC_ARG_PROGRAM])dnl +AM_MISSING_PROG([ACLOCAL], [aclocal-${am__api_version}]) +AM_MISSING_PROG([AUTOCONF], [autoconf]) +AM_MISSING_PROG([AUTOMAKE], [automake-${am__api_version}]) +AM_MISSING_PROG([AUTOHEADER], [autoheader]) +AM_MISSING_PROG([MAKEINFO], [makeinfo]) +AC_REQUIRE([AM_PROG_INSTALL_SH])dnl +AC_REQUIRE([AM_PROG_INSTALL_STRIP])dnl +AC_REQUIRE([AC_PROG_MKDIR_P])dnl +# For better backward compatibility. To be removed once Automake 1.9.x +# dies out for good. For more background, see: +# +# +AC_SUBST([mkdir_p], ['$(MKDIR_P)']) +# We need awk for the "check" target (and possibly the TAP driver). The +# system "awk" is bad on some platforms. +AC_REQUIRE([AC_PROG_AWK])dnl +AC_REQUIRE([AC_PROG_MAKE_SET])dnl +AC_REQUIRE([AM_SET_LEADING_DOT])dnl +_AM_IF_OPTION([tar-ustar], [_AM_PROG_TAR([ustar])], + [_AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])], + [_AM_PROG_TAR([v7])])]) +_AM_IF_OPTION([no-dependencies],, +[AC_PROVIDE_IFELSE([AC_PROG_CC], + [_AM_DEPENDENCIES([CC])], + [m4_define([AC_PROG_CC], + m4_defn([AC_PROG_CC])[_AM_DEPENDENCIES([CC])])])dnl +AC_PROVIDE_IFELSE([AC_PROG_CXX], + [_AM_DEPENDENCIES([CXX])], + [m4_define([AC_PROG_CXX], + m4_defn([AC_PROG_CXX])[_AM_DEPENDENCIES([CXX])])])dnl +AC_PROVIDE_IFELSE([AC_PROG_OBJC], + [_AM_DEPENDENCIES([OBJC])], + [m4_define([AC_PROG_OBJC], + m4_defn([AC_PROG_OBJC])[_AM_DEPENDENCIES([OBJC])])])dnl +AC_PROVIDE_IFELSE([AC_PROG_OBJCXX], + [_AM_DEPENDENCIES([OBJCXX])], + [m4_define([AC_PROG_OBJCXX], + m4_defn([AC_PROG_OBJCXX])[_AM_DEPENDENCIES([OBJCXX])])])dnl +]) +AC_REQUIRE([AM_SILENT_RULES])dnl +dnl The testsuite driver may need to know about EXEEXT, so add the +dnl 'am__EXEEXT' conditional if _AM_COMPILER_EXEEXT was seen. This +dnl macro is hooked onto _AC_COMPILER_EXEEXT early, see below. +AC_CONFIG_COMMANDS_PRE(dnl +[m4_provide_if([_AM_COMPILER_EXEEXT], + [AM_CONDITIONAL([am__EXEEXT], [test -n "$EXEEXT"])])])dnl + +# POSIX will say in a future version that running "rm -f" with no argument +# is OK; and we want to be able to make that assumption in our Makefile +# recipes. So use an aggressive probe to check that the usage we want is +# actually supported "in the wild" to an acceptable degree. +# See automake bug#10828. +# To make any issue more visible, cause the running configure to be aborted +# by default if the 'rm' program in use doesn't match our expectations; the +# user can still override this though. +if rm -f && rm -fr && rm -rf; then : OK; else + cat >&2 <<'END' +Oops! + +Your 'rm' program seems unable to run without file operands specified +on the command line, even when the '-f' option is present. This is contrary +to the behaviour of most rm programs out there, and not conforming with +the upcoming POSIX standard: + +Please tell bug-automake@gnu.org about your system, including the value +of your $PATH and any error possibly output before this message. This +can help us improve future automake versions. + +END + if test x"$ACCEPT_INFERIOR_RM_PROGRAM" = x"yes"; then + echo 'Configuration will proceed anyway, since you have set the' >&2 + echo 'ACCEPT_INFERIOR_RM_PROGRAM variable to "yes"' >&2 + echo >&2 + else + cat >&2 <<'END' +Aborting the configuration process, to ensure you take notice of the issue. + +You can download and install GNU coreutils to get an 'rm' implementation +that behaves properly: . + +If you want to complete the configuration process using your problematic +'rm' anyway, export the environment variable ACCEPT_INFERIOR_RM_PROGRAM +to "yes", and re-run configure. + +END + AC_MSG_ERROR([Your 'rm' program is bad, sorry.]) + fi +fi +dnl The trailing newline in this macro's definition is deliberate, for +dnl backward compatibility and to allow trailing 'dnl'-style comments +dnl after the AM_INIT_AUTOMAKE invocation. See automake bug#16841. +]) + +dnl Hook into '_AC_COMPILER_EXEEXT' early to learn its expansion. Do not +dnl add the conditional right here, as _AC_COMPILER_EXEEXT may be further +dnl mangled by Autoconf and run in a shell conditional statement. +m4_define([_AC_COMPILER_EXEEXT], +m4_defn([_AC_COMPILER_EXEEXT])[m4_provide([_AM_COMPILER_EXEEXT])]) + +# When config.status generates a header, we must update the stamp-h file. +# This file resides in the same directory as the config header +# that is generated. The stamp files are numbered to have different names. + +# Autoconf calls _AC_AM_CONFIG_HEADER_HOOK (when defined) in the +# loop where config.status creates the headers, so we can generate +# our stamp files there. +AC_DEFUN([_AC_AM_CONFIG_HEADER_HOOK], +[# Compute $1's index in $config_headers. +_am_arg=$1 +_am_stamp_count=1 +for _am_header in $config_headers :; do + case $_am_header in + $_am_arg | $_am_arg:* ) + break ;; + * ) + _am_stamp_count=`expr $_am_stamp_count + 1` ;; + esac +done +echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count]) + +# Copyright (C) 2001-2014 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# AM_PROG_INSTALL_SH +# ------------------ +# Define $install_sh. +AC_DEFUN([AM_PROG_INSTALL_SH], +[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl +if test x"${install_sh+set}" != xset; then + case $am_aux_dir in + *\ * | *\ *) + install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;; + *) + install_sh="\${SHELL} $am_aux_dir/install-sh" + esac +fi +AC_SUBST([install_sh])]) + +# Copyright (C) 2003-2014 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# Check whether the underlying file-system supports filenames +# with a leading dot. For instance MS-DOS doesn't. +AC_DEFUN([AM_SET_LEADING_DOT], +[rm -rf .tst 2>/dev/null +mkdir .tst 2>/dev/null +if test -d .tst; then + am__leading_dot=. +else + am__leading_dot=_ +fi +rmdir .tst 2>/dev/null +AC_SUBST([am__leading_dot])]) + +# Check to see how 'make' treats includes. -*- Autoconf -*- + +# Copyright (C) 2001-2014 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# AM_MAKE_INCLUDE() +# ----------------- +# Check to see how make treats includes. +AC_DEFUN([AM_MAKE_INCLUDE], +[am_make=${MAKE-make} +cat > confinc << 'END' +am__doit: + @echo this is the am__doit target +.PHONY: am__doit +END +# If we don't find an include directive, just comment out the code. +AC_MSG_CHECKING([for style of include used by $am_make]) +am__include="#" +am__quote= +_am_result=none +# First try GNU make style include. +echo "include confinc" > confmf +# Ignore all kinds of additional output from 'make'. +case `$am_make -s -f confmf 2> /dev/null` in #( +*the\ am__doit\ target*) + am__include=include + am__quote= + _am_result=GNU + ;; +esac +# Now try BSD make style include. +if test "$am__include" = "#"; then + echo '.include "confinc"' > confmf + case `$am_make -s -f confmf 2> /dev/null` in #( + *the\ am__doit\ target*) + am__include=.include + am__quote="\"" + _am_result=BSD + ;; + esac +fi +AC_SUBST([am__include]) +AC_SUBST([am__quote]) +AC_MSG_RESULT([$_am_result]) +rm -f confinc confmf +]) + +# Fake the existence of programs that GNU maintainers use. -*- Autoconf -*- + +# Copyright (C) 1997-2014 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# AM_MISSING_PROG(NAME, PROGRAM) +# ------------------------------ +AC_DEFUN([AM_MISSING_PROG], +[AC_REQUIRE([AM_MISSING_HAS_RUN]) +$1=${$1-"${am_missing_run}$2"} +AC_SUBST($1)]) + +# AM_MISSING_HAS_RUN +# ------------------ +# Define MISSING if not defined so far and test if it is modern enough. +# If it is, set am_missing_run to use it, otherwise, to nothing. +AC_DEFUN([AM_MISSING_HAS_RUN], +[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl +AC_REQUIRE_AUX_FILE([missing])dnl +if test x"${MISSING+set}" != xset; then + case $am_aux_dir in + *\ * | *\ *) + MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;; + *) + MISSING="\${SHELL} $am_aux_dir/missing" ;; + esac +fi +# Use eval to expand $SHELL +if eval "$MISSING --is-lightweight"; then + am_missing_run="$MISSING " +else + am_missing_run= + AC_MSG_WARN(['missing' script is too old or missing]) +fi +]) + +# Helper functions for option handling. -*- Autoconf -*- + +# Copyright (C) 2001-2014 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# _AM_MANGLE_OPTION(NAME) +# ----------------------- +AC_DEFUN([_AM_MANGLE_OPTION], +[[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])]) + +# _AM_SET_OPTION(NAME) +# -------------------- +# Set option NAME. Presently that only means defining a flag for this option. +AC_DEFUN([_AM_SET_OPTION], +[m4_define(_AM_MANGLE_OPTION([$1]), [1])]) + +# _AM_SET_OPTIONS(OPTIONS) +# ------------------------ +# OPTIONS is a space-separated list of Automake options. +AC_DEFUN([_AM_SET_OPTIONS], +[m4_foreach_w([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])]) + +# _AM_IF_OPTION(OPTION, IF-SET, [IF-NOT-SET]) +# ------------------------------------------- +# Execute IF-SET if OPTION is set, IF-NOT-SET otherwise. +AC_DEFUN([_AM_IF_OPTION], +[m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])]) + +# Copyright (C) 1999-2014 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# _AM_PROG_CC_C_O +# --------------- +# Like AC_PROG_CC_C_O, but changed for automake. We rewrite AC_PROG_CC +# to automatically call this. +AC_DEFUN([_AM_PROG_CC_C_O], +[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl +AC_REQUIRE_AUX_FILE([compile])dnl +AC_LANG_PUSH([C])dnl +AC_CACHE_CHECK( + [whether $CC understands -c and -o together], + [am_cv_prog_cc_c_o], + [AC_LANG_CONFTEST([AC_LANG_PROGRAM([])]) + # Make sure it works both with $CC and with simple cc. + # Following AC_PROG_CC_C_O, we do the test twice because some + # compilers refuse to overwrite an existing .o file with -o, + # though they will create one. + am_cv_prog_cc_c_o=yes + for am_i in 1 2; do + if AM_RUN_LOG([$CC -c conftest.$ac_ext -o conftest2.$ac_objext]) \ + && test -f conftest2.$ac_objext; then + : OK + else + am_cv_prog_cc_c_o=no + break + fi + done + rm -f core conftest* + unset am_i]) +if test "$am_cv_prog_cc_c_o" != yes; then + # Losing compiler, so override with the script. + # FIXME: It is wrong to rewrite CC. + # But if we don't then we get into trouble of one sort or another. + # A longer-term fix would be to have automake use am__CC in this case, + # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)" + CC="$am_aux_dir/compile $CC" +fi +AC_LANG_POP([C])]) + +# For backward compatibility. +AC_DEFUN_ONCE([AM_PROG_CC_C_O], [AC_REQUIRE([AC_PROG_CC])]) + +# Copyright (C) 2001-2014 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# AM_RUN_LOG(COMMAND) +# ------------------- +# Run COMMAND, save the exit status in ac_status, and log it. +# (This has been adapted from Autoconf's _AC_RUN_LOG macro.) +AC_DEFUN([AM_RUN_LOG], +[{ echo "$as_me:$LINENO: $1" >&AS_MESSAGE_LOG_FD + ($1) >&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD + (exit $ac_status); }]) + +# Check to make sure that the build environment is sane. -*- Autoconf -*- + +# Copyright (C) 1996-2014 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# AM_SANITY_CHECK +# --------------- +AC_DEFUN([AM_SANITY_CHECK], +[AC_MSG_CHECKING([whether build environment is sane]) +# Reject unsafe characters in $srcdir or the absolute working directory +# name. Accept space and tab only in the latter. +am_lf=' +' +case `pwd` in + *[[\\\"\#\$\&\'\`$am_lf]]*) + AC_MSG_ERROR([unsafe absolute working directory name]);; +esac +case $srcdir in + *[[\\\"\#\$\&\'\`$am_lf\ \ ]]*) + AC_MSG_ERROR([unsafe srcdir value: '$srcdir']);; +esac + +# Do 'set' in a subshell so we don't clobber the current shell's +# arguments. Must try -L first in case configure is actually a +# symlink; some systems play weird games with the mod time of symlinks +# (eg FreeBSD returns the mod time of the symlink's containing +# directory). +if ( + am_has_slept=no + for am_try in 1 2; do + echo "timestamp, slept: $am_has_slept" > conftest.file + set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null` + if test "$[*]" = "X"; then + # -L didn't work. + set X `ls -t "$srcdir/configure" conftest.file` + fi + if test "$[*]" != "X $srcdir/configure conftest.file" \ + && test "$[*]" != "X conftest.file $srcdir/configure"; then + + # If neither matched, then we have a broken ls. This can happen + # if, for instance, CONFIG_SHELL is bash and it inherits a + # broken ls alias from the environment. This has actually + # happened. Such a system could not be considered "sane". + AC_MSG_ERROR([ls -t appears to fail. Make sure there is not a broken + alias in your environment]) + fi + if test "$[2]" = conftest.file || test $am_try -eq 2; then + break + fi + # Just in case. + sleep 1 + am_has_slept=yes + done + test "$[2]" = conftest.file + ) +then + # Ok. + : +else + AC_MSG_ERROR([newly created file is older than distributed files! +Check your system clock]) +fi +AC_MSG_RESULT([yes]) +# If we didn't sleep, we still need to ensure time stamps of config.status and +# generated files are strictly newer. +am_sleep_pid= +if grep 'slept: no' conftest.file >/dev/null 2>&1; then + ( sleep 1 ) & + am_sleep_pid=$! +fi +AC_CONFIG_COMMANDS_PRE( + [AC_MSG_CHECKING([that generated files are newer than configure]) + if test -n "$am_sleep_pid"; then + # Hide warnings about reused PIDs. + wait $am_sleep_pid 2>/dev/null + fi + AC_MSG_RESULT([done])]) +rm -f conftest.file +]) + +# Copyright (C) 2009-2014 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# AM_SILENT_RULES([DEFAULT]) +# -------------------------- +# Enable less verbose build rules; with the default set to DEFAULT +# ("yes" being less verbose, "no" or empty being verbose). +AC_DEFUN([AM_SILENT_RULES], +[AC_ARG_ENABLE([silent-rules], [dnl +AS_HELP_STRING( + [--enable-silent-rules], + [less verbose build output (undo: "make V=1")]) +AS_HELP_STRING( + [--disable-silent-rules], + [verbose build output (undo: "make V=0")])dnl +]) +case $enable_silent_rules in @%:@ ((( + yes) AM_DEFAULT_VERBOSITY=0;; + no) AM_DEFAULT_VERBOSITY=1;; + *) AM_DEFAULT_VERBOSITY=m4_if([$1], [yes], [0], [1]);; +esac +dnl +dnl A few 'make' implementations (e.g., NonStop OS and NextStep) +dnl do not support nested variable expansions. +dnl See automake bug#9928 and bug#10237. +am_make=${MAKE-make} +AC_CACHE_CHECK([whether $am_make supports nested variables], + [am_cv_make_support_nested_variables], + [if AS_ECHO([['TRUE=$(BAR$(V)) +BAR0=false +BAR1=true +V=1 +am__doit: + @$(TRUE) +.PHONY: am__doit']]) | $am_make -f - >/dev/null 2>&1; then + am_cv_make_support_nested_variables=yes +else + am_cv_make_support_nested_variables=no +fi]) +if test $am_cv_make_support_nested_variables = yes; then + dnl Using '$V' instead of '$(V)' breaks IRIX make. + AM_V='$(V)' + AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)' +else + AM_V=$AM_DEFAULT_VERBOSITY + AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY +fi +AC_SUBST([AM_V])dnl +AM_SUBST_NOTMAKE([AM_V])dnl +AC_SUBST([AM_DEFAULT_V])dnl +AM_SUBST_NOTMAKE([AM_DEFAULT_V])dnl +AC_SUBST([AM_DEFAULT_VERBOSITY])dnl +AM_BACKSLASH='\' +AC_SUBST([AM_BACKSLASH])dnl +_AM_SUBST_NOTMAKE([AM_BACKSLASH])dnl +]) + +# Copyright (C) 2001-2014 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# AM_PROG_INSTALL_STRIP +# --------------------- +# One issue with vendor 'install' (even GNU) is that you can't +# specify the program used to strip binaries. This is especially +# annoying in cross-compiling environments, where the build's strip +# is unlikely to handle the host's binaries. +# Fortunately install-sh will honor a STRIPPROG variable, so we +# always use install-sh in "make install-strip", and initialize +# STRIPPROG with the value of the STRIP variable (set by the user). +AC_DEFUN([AM_PROG_INSTALL_STRIP], +[AC_REQUIRE([AM_PROG_INSTALL_SH])dnl +# Installed binaries are usually stripped using 'strip' when the user +# run "make install-strip". However 'strip' might not be the right +# tool to use in cross-compilation environments, therefore Automake +# will honor the 'STRIP' environment variable to overrule this program. +dnl Don't test for $cross_compiling = yes, because it might be 'maybe'. +if test "$cross_compiling" != no; then + AC_CHECK_TOOL([STRIP], [strip], :) +fi +INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" +AC_SUBST([INSTALL_STRIP_PROGRAM])]) + +# Copyright (C) 2006-2014 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# _AM_SUBST_NOTMAKE(VARIABLE) +# --------------------------- +# Prevent Automake from outputting VARIABLE = @VARIABLE@ in Makefile.in. +# This macro is traced by Automake. +AC_DEFUN([_AM_SUBST_NOTMAKE]) + +# AM_SUBST_NOTMAKE(VARIABLE) +# -------------------------- +# Public sister of _AM_SUBST_NOTMAKE. +AC_DEFUN([AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE($@)]) + +# Check how to create a tarball. -*- Autoconf -*- + +# Copyright (C) 2004-2014 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# _AM_PROG_TAR(FORMAT) +# -------------------- +# Check how to create a tarball in format FORMAT. +# FORMAT should be one of 'v7', 'ustar', or 'pax'. +# +# Substitute a variable $(am__tar) that is a command +# writing to stdout a FORMAT-tarball containing the directory +# $tardir. +# tardir=directory && $(am__tar) > result.tar +# +# Substitute a variable $(am__untar) that extract such +# a tarball read from stdin. +# $(am__untar) < result.tar +# +AC_DEFUN([_AM_PROG_TAR], +[# Always define AMTAR for backward compatibility. Yes, it's still used +# in the wild :-( We should find a proper way to deprecate it ... +AC_SUBST([AMTAR], ['$${TAR-tar}']) + +# We'll loop over all known methods to create a tar archive until one works. +_am_tools='gnutar m4_if([$1], [ustar], [plaintar]) pax cpio none' + +m4_if([$1], [v7], + [am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -'], + + [m4_case([$1], + [ustar], + [# The POSIX 1988 'ustar' format is defined with fixed-size fields. + # There is notably a 21 bits limit for the UID and the GID. In fact, + # the 'pax' utility can hang on bigger UID/GID (see automake bug#8343 + # and bug#13588). + am_max_uid=2097151 # 2^21 - 1 + am_max_gid=$am_max_uid + # The $UID and $GID variables are not portable, so we need to resort + # to the POSIX-mandated id(1) utility. Errors in the 'id' calls + # below are definitely unexpected, so allow the users to see them + # (that is, avoid stderr redirection). + am_uid=`id -u || echo unknown` + am_gid=`id -g || echo unknown` + AC_MSG_CHECKING([whether UID '$am_uid' is supported by ustar format]) + if test $am_uid -le $am_max_uid; then + AC_MSG_RESULT([yes]) + else + AC_MSG_RESULT([no]) + _am_tools=none + fi + AC_MSG_CHECKING([whether GID '$am_gid' is supported by ustar format]) + if test $am_gid -le $am_max_gid; then + AC_MSG_RESULT([yes]) + else + AC_MSG_RESULT([no]) + _am_tools=none + fi], + + [pax], + [], + + [m4_fatal([Unknown tar format])]) + + AC_MSG_CHECKING([how to create a $1 tar archive]) + + # Go ahead even if we have the value already cached. We do so because we + # need to set the values for the 'am__tar' and 'am__untar' variables. + _am_tools=${am_cv_prog_tar_$1-$_am_tools} + + for _am_tool in $_am_tools; do + case $_am_tool in + gnutar) + for _am_tar in tar gnutar gtar; do + AM_RUN_LOG([$_am_tar --version]) && break + done + am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"' + am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"' + am__untar="$_am_tar -xf -" + ;; + plaintar) + # Must skip GNU tar: if it does not support --format= it doesn't create + # ustar tarball either. + (tar --version) >/dev/null 2>&1 && continue + am__tar='tar chf - "$$tardir"' + am__tar_='tar chf - "$tardir"' + am__untar='tar xf -' + ;; + pax) + am__tar='pax -L -x $1 -w "$$tardir"' + am__tar_='pax -L -x $1 -w "$tardir"' + am__untar='pax -r' + ;; + cpio) + am__tar='find "$$tardir" -print | cpio -o -H $1 -L' + am__tar_='find "$tardir" -print | cpio -o -H $1 -L' + am__untar='cpio -i -H $1 -d' + ;; + none) + am__tar=false + am__tar_=false + am__untar=false + ;; + esac + + # If the value was cached, stop now. We just wanted to have am__tar + # and am__untar set. + test -n "${am_cv_prog_tar_$1}" && break + + # tar/untar a dummy directory, and stop if the command works. + rm -rf conftest.dir + mkdir conftest.dir + echo GrepMe > conftest.dir/file + AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar]) + rm -rf conftest.dir + if test -s conftest.tar; then + AM_RUN_LOG([$am__untar /dev/null 2>&1 && break + fi + done + rm -rf conftest.dir + + AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool]) + AC_MSG_RESULT([$am_cv_prog_tar_$1])]) + +AC_SUBST([am__tar]) +AC_SUBST([am__untar]) +]) # _AM_PROG_TAR + +m4_include([m4/libtool.m4]) +m4_include([m4/ltoptions.m4]) +m4_include([m4/ltsugar.m4]) +m4_include([m4/ltversion.m4]) +m4_include([m4/lt~obsolete.m4]) diff --git a/libs/shapelib/ar-lib b/libs/shapelib/ar-lib new file mode 100755 index 0000000..463b9ec --- /dev/null +++ b/libs/shapelib/ar-lib @@ -0,0 +1,270 @@ +#! /bin/sh +# Wrapper for Microsoft lib.exe + +me=ar-lib +scriptversion=2012-03-01.08; # UTC + +# Copyright (C) 2010-2014 Free Software Foundation, Inc. +# Written by Peter Rosin . +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2, or (at your option) +# any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + +# This file is maintained in Automake, please report +# bugs to or send patches to +# . + + +# func_error message +func_error () +{ + echo "$me: $1" 1>&2 + exit 1 +} + +file_conv= + +# func_file_conv build_file +# Convert a $build file to $host form and store it in $file +# Currently only supports Windows hosts. +func_file_conv () +{ + file=$1 + case $file in + / | /[!/]*) # absolute file, and not a UNC file + if test -z "$file_conv"; then + # lazily determine how to convert abs files + case `uname -s` in + MINGW*) + file_conv=mingw + ;; + CYGWIN*) + file_conv=cygwin + ;; + *) + file_conv=wine + ;; + esac + fi + case $file_conv in + mingw) + file=`cmd //C echo "$file " | sed -e 's/"\(.*\) " *$/\1/'` + ;; + cygwin) + file=`cygpath -m "$file" || echo "$file"` + ;; + wine) + file=`winepath -w "$file" || echo "$file"` + ;; + esac + ;; + esac +} + +# func_at_file at_file operation archive +# Iterate over all members in AT_FILE performing OPERATION on ARCHIVE +# for each of them. +# When interpreting the content of the @FILE, do NOT use func_file_conv, +# since the user would need to supply preconverted file names to +# binutils ar, at least for MinGW. +func_at_file () +{ + operation=$2 + archive=$3 + at_file_contents=`cat "$1"` + eval set x "$at_file_contents" + shift + + for member + do + $AR -NOLOGO $operation:"$member" "$archive" || exit $? + done +} + +case $1 in + '') + func_error "no command. Try '$0 --help' for more information." + ;; + -h | --h*) + cat < /dev/null 2>&1 || { + echo "**Error**: You must have \`libtool' installed." + echo "You can get it from: ftp://ftp.gnu.org/pub/gnu/" + echo + exit 1 +} + +(autoreconf --version) < /dev/null > /dev/null 2>&1 || { + echo "**Error**: You must have \`autoreconf' installed." + echo "Download the appropriate package for your distribution," + echo "or get the source tarball at ftp://ftp.gnu.org/pub/gnu/" + echo + exit 1 +} + + +( + cd "$srcdir" + echo "Running autoreconf..." + autoreconf -fiv +) + + +if test x$NOCONFIGURE = x; then + echo Running $srcdir/configure "$@" ... + $srcdir/configure "$@" \ + && echo Now type \`make\' to compile. || exit 1 +else + echo Skipping configure process. +fi diff --git a/libs/shapelib/compile b/libs/shapelib/compile new file mode 100755 index 0000000..a85b723 --- /dev/null +++ b/libs/shapelib/compile @@ -0,0 +1,347 @@ +#! /bin/sh +# Wrapper for compilers which do not understand '-c -o'. + +scriptversion=2012-10-14.11; # UTC + +# Copyright (C) 1999-2014 Free Software Foundation, Inc. +# Written by Tom Tromey . +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2, or (at your option) +# any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + +# This file is maintained in Automake, please report +# bugs to or send patches to +# . + +nl=' +' + +# We need space, tab and new line, in precisely that order. Quoting is +# there to prevent tools from complaining about whitespace usage. +IFS=" "" $nl" + +file_conv= + +# func_file_conv build_file lazy +# Convert a $build file to $host form and store it in $file +# Currently only supports Windows hosts. If the determined conversion +# type is listed in (the comma separated) LAZY, no conversion will +# take place. +func_file_conv () +{ + file=$1 + case $file in + / | /[!/]*) # absolute file, and not a UNC file + if test -z "$file_conv"; then + # lazily determine how to convert abs files + case `uname -s` in + MINGW*) + file_conv=mingw + ;; + CYGWIN*) + file_conv=cygwin + ;; + *) + file_conv=wine + ;; + esac + fi + case $file_conv/,$2, in + *,$file_conv,*) + ;; + mingw/*) + file=`cmd //C echo "$file " | sed -e 's/"\(.*\) " *$/\1/'` + ;; + cygwin/*) + file=`cygpath -m "$file" || echo "$file"` + ;; + wine/*) + file=`winepath -w "$file" || echo "$file"` + ;; + esac + ;; + esac +} + +# func_cl_dashL linkdir +# Make cl look for libraries in LINKDIR +func_cl_dashL () +{ + func_file_conv "$1" + if test -z "$lib_path"; then + lib_path=$file + else + lib_path="$lib_path;$file" + fi + linker_opts="$linker_opts -LIBPATH:$file" +} + +# func_cl_dashl library +# Do a library search-path lookup for cl +func_cl_dashl () +{ + lib=$1 + found=no + save_IFS=$IFS + IFS=';' + for dir in $lib_path $LIB + do + IFS=$save_IFS + if $shared && test -f "$dir/$lib.dll.lib"; then + found=yes + lib=$dir/$lib.dll.lib + break + fi + if test -f "$dir/$lib.lib"; then + found=yes + lib=$dir/$lib.lib + break + fi + if test -f "$dir/lib$lib.a"; then + found=yes + lib=$dir/lib$lib.a + break + fi + done + IFS=$save_IFS + + if test "$found" != yes; then + lib=$lib.lib + fi +} + +# func_cl_wrapper cl arg... +# Adjust compile command to suit cl +func_cl_wrapper () +{ + # Assume a capable shell + lib_path= + shared=: + linker_opts= + for arg + do + if test -n "$eat"; then + eat= + else + case $1 in + -o) + # configure might choose to run compile as 'compile cc -o foo foo.c'. + eat=1 + case $2 in + *.o | *.[oO][bB][jJ]) + func_file_conv "$2" + set x "$@" -Fo"$file" + shift + ;; + *) + func_file_conv "$2" + set x "$@" -Fe"$file" + shift + ;; + esac + ;; + -I) + eat=1 + func_file_conv "$2" mingw + set x "$@" -I"$file" + shift + ;; + -I*) + func_file_conv "${1#-I}" mingw + set x "$@" -I"$file" + shift + ;; + -l) + eat=1 + func_cl_dashl "$2" + set x "$@" "$lib" + shift + ;; + -l*) + func_cl_dashl "${1#-l}" + set x "$@" "$lib" + shift + ;; + -L) + eat=1 + func_cl_dashL "$2" + ;; + -L*) + func_cl_dashL "${1#-L}" + ;; + -static) + shared=false + ;; + -Wl,*) + arg=${1#-Wl,} + save_ifs="$IFS"; IFS=',' + for flag in $arg; do + IFS="$save_ifs" + linker_opts="$linker_opts $flag" + done + IFS="$save_ifs" + ;; + -Xlinker) + eat=1 + linker_opts="$linker_opts $2" + ;; + -*) + set x "$@" "$1" + shift + ;; + *.cc | *.CC | *.cxx | *.CXX | *.[cC]++) + func_file_conv "$1" + set x "$@" -Tp"$file" + shift + ;; + *.c | *.cpp | *.CPP | *.lib | *.LIB | *.Lib | *.OBJ | *.obj | *.[oO]) + func_file_conv "$1" mingw + set x "$@" "$file" + shift + ;; + *) + set x "$@" "$1" + shift + ;; + esac + fi + shift + done + if test -n "$linker_opts"; then + linker_opts="-link$linker_opts" + fi + exec "$@" $linker_opts + exit 1 +} + +eat= + +case $1 in + '') + echo "$0: No command. Try '$0 --help' for more information." 1>&2 + exit 1; + ;; + -h | --h*) + cat <<\EOF +Usage: compile [--help] [--version] PROGRAM [ARGS] + +Wrapper for compilers which do not understand '-c -o'. +Remove '-o dest.o' from ARGS, run PROGRAM with the remaining +arguments, and rename the output as expected. + +If you are trying to build a whole package this is not the +right script to run: please start by reading the file 'INSTALL'. + +Report bugs to . +EOF + exit $? + ;; + -v | --v*) + echo "compile $scriptversion" + exit $? + ;; + cl | *[/\\]cl | cl.exe | *[/\\]cl.exe ) + func_cl_wrapper "$@" # Doesn't return... + ;; +esac + +ofile= +cfile= + +for arg +do + if test -n "$eat"; then + eat= + else + case $1 in + -o) + # configure might choose to run compile as 'compile cc -o foo foo.c'. + # So we strip '-o arg' only if arg is an object. + eat=1 + case $2 in + *.o | *.obj) + ofile=$2 + ;; + *) + set x "$@" -o "$2" + shift + ;; + esac + ;; + *.c) + cfile=$1 + set x "$@" "$1" + shift + ;; + *) + set x "$@" "$1" + shift + ;; + esac + fi + shift +done + +if test -z "$ofile" || test -z "$cfile"; then + # If no '-o' option was seen then we might have been invoked from a + # pattern rule where we don't need one. That is ok -- this is a + # normal compilation that the losing compiler can handle. If no + # '.c' file was seen then we are probably linking. That is also + # ok. + exec "$@" +fi + +# Name of file we expect compiler to create. +cofile=`echo "$cfile" | sed 's|^.*[\\/]||; s|^[a-zA-Z]:||; s/\.c$/.o/'` + +# Create the lock directory. +# Note: use '[/\\:.-]' here to ensure that we don't use the same name +# that we are using for the .o file. Also, base the name on the expected +# object file name, since that is what matters with a parallel build. +lockdir=`echo "$cofile" | sed -e 's|[/\\:.-]|_|g'`.d +while true; do + if mkdir "$lockdir" >/dev/null 2>&1; then + break + fi + sleep 1 +done +# FIXME: race condition here if user kills between mkdir and trap. +trap "rmdir '$lockdir'; exit 1" 1 2 15 + +# Run the compile. +"$@" +ret=$? + +if test -f "$cofile"; then + test "$cofile" = "$ofile" || mv "$cofile" "$ofile" +elif test -f "${cofile}bj"; then + test "${cofile}bj" = "$ofile" || mv "${cofile}bj" "$ofile" +fi + +rmdir "$lockdir" +exit $ret + +# Local Variables: +# mode: shell-script +# sh-indentation: 2 +# eval: (add-hook 'write-file-hooks 'time-stamp) +# time-stamp-start: "scriptversion=" +# time-stamp-format: "%:y-%02m-%02d.%02H" +# time-stamp-time-zone: "UTC" +# time-stamp-end: "; # UTC" +# End: diff --git a/libs/shapelib/config.guess b/libs/shapelib/config.guess new file mode 100755 index 0000000..1659250 --- /dev/null +++ b/libs/shapelib/config.guess @@ -0,0 +1,1441 @@ +#! /bin/sh +# Attempt to guess a canonical system name. +# Copyright 1992-2015 Free Software Foundation, Inc. + +timestamp='2015-08-20' + +# This file is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, see . +# +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that +# program. This Exception is an additional permission under section 7 +# of the GNU General Public License, version 3 ("GPLv3"). +# +# Originally written by Per Bothner; maintained since 2000 by Ben Elliston. +# +# You can get the latest version of this script from: +# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD +# +# Please send patches to . + + +me=`echo "$0" | sed -e 's,.*/,,'` + +usage="\ +Usage: $0 [OPTION] + +Output the configuration name of the system \`$me' is run on. + +Operation modes: + -h, --help print this help, then exit + -t, --time-stamp print date of last modification, then exit + -v, --version print version number, then exit + +Report bugs and patches to ." + +version="\ +GNU config.guess ($timestamp) + +Originally written by Per Bothner. +Copyright 1992-2015 Free Software Foundation, Inc. + +This is free software; see the source for copying conditions. There is NO +warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." + +help=" +Try \`$me --help' for more information." + +# Parse command line +while test $# -gt 0 ; do + case $1 in + --time-stamp | --time* | -t ) + echo "$timestamp" ; exit ;; + --version | -v ) + echo "$version" ; exit ;; + --help | --h* | -h ) + echo "$usage"; exit ;; + -- ) # Stop option processing + shift; break ;; + - ) # Use stdin as input. + break ;; + -* ) + echo "$me: invalid option $1$help" >&2 + exit 1 ;; + * ) + break ;; + esac +done + +if test $# != 0; then + echo "$me: too many arguments$help" >&2 + exit 1 +fi + +trap 'exit 1' 1 2 15 + +# CC_FOR_BUILD -- compiler used by this script. Note that the use of a +# compiler to aid in system detection is discouraged as it requires +# temporary files to be created and, as you can see below, it is a +# headache to deal with in a portable fashion. + +# Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still +# use `HOST_CC' if defined, but it is deprecated. + +# Portable tmp directory creation inspired by the Autoconf team. + +set_cc_for_build=' +trap "exitcode=\$?; (rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null) && exit \$exitcode" 0 ; +trap "rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null; exit 1" 1 2 13 15 ; +: ${TMPDIR=/tmp} ; + { tmp=`(umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } || + { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir $tmp) ; } || + { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir $tmp) && echo "Warning: creating insecure temp directory" >&2 ; } || + { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } ; +dummy=$tmp/dummy ; +tmpfiles="$dummy.c $dummy.o $dummy.rel $dummy" ; +case $CC_FOR_BUILD,$HOST_CC,$CC in + ,,) echo "int x;" > $dummy.c ; + for c in cc gcc c89 c99 ; do + if ($c -c -o $dummy.o $dummy.c) >/dev/null 2>&1 ; then + CC_FOR_BUILD="$c"; break ; + fi ; + done ; + if test x"$CC_FOR_BUILD" = x ; then + CC_FOR_BUILD=no_compiler_found ; + fi + ;; + ,,*) CC_FOR_BUILD=$CC ;; + ,*,*) CC_FOR_BUILD=$HOST_CC ;; +esac ; set_cc_for_build= ;' + +# This is needed to find uname on a Pyramid OSx when run in the BSD universe. +# (ghazi@noc.rutgers.edu 1994-08-24) +if (test -f /.attbin/uname) >/dev/null 2>&1 ; then + PATH=$PATH:/.attbin ; export PATH +fi + +UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown +UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown +UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown +UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown + +case "${UNAME_SYSTEM}" in +Linux|GNU|GNU/*) + # If the system lacks a compiler, then just pick glibc. + # We could probably try harder. + LIBC=gnu + + eval $set_cc_for_build + cat <<-EOF > $dummy.c + #include + #if defined(__UCLIBC__) + LIBC=uclibc + #elif defined(__dietlibc__) + LIBC=dietlibc + #else + LIBC=gnu + #endif + EOF + eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^LIBC' | sed 's, ,,g'` + ;; +esac + +# Note: order is significant - the case branches are not exclusive. + +case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in + *:NetBSD:*:*) + # NetBSD (nbsd) targets should (where applicable) match one or + # more of the tuples: *-*-netbsdelf*, *-*-netbsdaout*, + # *-*-netbsdecoff* and *-*-netbsd*. For targets that recently + # switched to ELF, *-*-netbsd* would select the old + # object file format. This provides both forward + # compatibility and a consistent mechanism for selecting the + # object file format. + # + # Note: NetBSD doesn't particularly care about the vendor + # portion of the name. We always set it to "unknown". + sysctl="sysctl -n hw.machine_arch" + UNAME_MACHINE_ARCH=`(uname -p 2>/dev/null || \ + /sbin/$sysctl 2>/dev/null || \ + /usr/sbin/$sysctl 2>/dev/null || \ + echo unknown)` + case "${UNAME_MACHINE_ARCH}" in + armeb) machine=armeb-unknown ;; + arm*) machine=arm-unknown ;; + sh3el) machine=shl-unknown ;; + sh3eb) machine=sh-unknown ;; + sh5el) machine=sh5le-unknown ;; + earmv*) + arch=`echo ${UNAME_MACHINE_ARCH} | sed -e 's,^e\(armv[0-9]\).*$,\1,'` + endian=`echo ${UNAME_MACHINE_ARCH} | sed -ne 's,^.*\(eb\)$,\1,p'` + machine=${arch}${endian}-unknown + ;; + *) machine=${UNAME_MACHINE_ARCH}-unknown ;; + esac + # The Operating System including object format, if it has switched + # to ELF recently, or will in the future. + case "${UNAME_MACHINE_ARCH}" in + arm*|earm*|i386|m68k|ns32k|sh3*|sparc|vax) + eval $set_cc_for_build + if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \ + | grep -q __ELF__ + then + # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout). + # Return netbsd for either. FIX? + os=netbsd + else + os=netbsdelf + fi + ;; + *) + os=netbsd + ;; + esac + # Determine ABI tags. + case "${UNAME_MACHINE_ARCH}" in + earm*) + expr='s/^earmv[0-9]/-eabi/;s/eb$//' + abi=`echo ${UNAME_MACHINE_ARCH} | sed -e "$expr"` + ;; + esac + # The OS release + # Debian GNU/NetBSD machines have a different userland, and + # thus, need a distinct triplet. However, they do not need + # kernel version information, so it can be replaced with a + # suitable tag, in the style of linux-gnu. + case "${UNAME_VERSION}" in + Debian*) + release='-gnu' + ;; + *) + release=`echo ${UNAME_RELEASE} | sed -e 's/[-_].*//' | cut -d. -f1,2` + ;; + esac + # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM: + # contains redundant information, the shorter form: + # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used. + echo "${machine}-${os}${release}${abi}" + exit ;; + *:Bitrig:*:*) + UNAME_MACHINE_ARCH=`arch | sed 's/Bitrig.//'` + echo ${UNAME_MACHINE_ARCH}-unknown-bitrig${UNAME_RELEASE} + exit ;; + *:OpenBSD:*:*) + UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'` + echo ${UNAME_MACHINE_ARCH}-unknown-openbsd${UNAME_RELEASE} + exit ;; + *:ekkoBSD:*:*) + echo ${UNAME_MACHINE}-unknown-ekkobsd${UNAME_RELEASE} + exit ;; + *:SolidBSD:*:*) + echo ${UNAME_MACHINE}-unknown-solidbsd${UNAME_RELEASE} + exit ;; + macppc:MirBSD:*:*) + echo powerpc-unknown-mirbsd${UNAME_RELEASE} + exit ;; + *:MirBSD:*:*) + echo ${UNAME_MACHINE}-unknown-mirbsd${UNAME_RELEASE} + exit ;; + *:Sortix:*:*) + echo ${UNAME_MACHINE}-unknown-sortix + exit ;; + alpha:OSF1:*:*) + case $UNAME_RELEASE in + *4.0) + UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'` + ;; + *5.*) + UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'` + ;; + esac + # According to Compaq, /usr/sbin/psrinfo has been available on + # OSF/1 and Tru64 systems produced since 1995. I hope that + # covers most systems running today. This code pipes the CPU + # types through head -n 1, so we only detect the type of CPU 0. + ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^ The alpha \(.*\) processor.*$/\1/p' | head -n 1` + case "$ALPHA_CPU_TYPE" in + "EV4 (21064)") + UNAME_MACHINE="alpha" ;; + "EV4.5 (21064)") + UNAME_MACHINE="alpha" ;; + "LCA4 (21066/21068)") + UNAME_MACHINE="alpha" ;; + "EV5 (21164)") + UNAME_MACHINE="alphaev5" ;; + "EV5.6 (21164A)") + UNAME_MACHINE="alphaev56" ;; + "EV5.6 (21164PC)") + UNAME_MACHINE="alphapca56" ;; + "EV5.7 (21164PC)") + UNAME_MACHINE="alphapca57" ;; + "EV6 (21264)") + UNAME_MACHINE="alphaev6" ;; + "EV6.7 (21264A)") + UNAME_MACHINE="alphaev67" ;; + "EV6.8CB (21264C)") + UNAME_MACHINE="alphaev68" ;; + "EV6.8AL (21264B)") + UNAME_MACHINE="alphaev68" ;; + "EV6.8CX (21264D)") + UNAME_MACHINE="alphaev68" ;; + "EV6.9A (21264/EV69A)") + UNAME_MACHINE="alphaev69" ;; + "EV7 (21364)") + UNAME_MACHINE="alphaev7" ;; + "EV7.9 (21364A)") + UNAME_MACHINE="alphaev79" ;; + esac + # A Pn.n version is a patched version. + # A Vn.n version is a released version. + # A Tn.n version is a released field test version. + # A Xn.n version is an unreleased experimental baselevel. + # 1.2 uses "1.2" for uname -r. + echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[PVTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` + # Reset EXIT trap before exiting to avoid spurious non-zero exit code. + exitcode=$? + trap '' 0 + exit $exitcode ;; + Alpha\ *:Windows_NT*:*) + # How do we know it's Interix rather than the generic POSIX subsystem? + # Should we change UNAME_MACHINE based on the output of uname instead + # of the specific Alpha model? + echo alpha-pc-interix + exit ;; + 21064:Windows_NT:50:3) + echo alpha-dec-winnt3.5 + exit ;; + Amiga*:UNIX_System_V:4.0:*) + echo m68k-unknown-sysv4 + exit ;; + *:[Aa]miga[Oo][Ss]:*:*) + echo ${UNAME_MACHINE}-unknown-amigaos + exit ;; + *:[Mm]orph[Oo][Ss]:*:*) + echo ${UNAME_MACHINE}-unknown-morphos + exit ;; + *:OS/390:*:*) + echo i370-ibm-openedition + exit ;; + *:z/VM:*:*) + echo s390-ibm-zvmoe + exit ;; + *:OS400:*:*) + echo powerpc-ibm-os400 + exit ;; + arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*) + echo arm-acorn-riscix${UNAME_RELEASE} + exit ;; + arm*:riscos:*:*|arm*:RISCOS:*:*) + echo arm-unknown-riscos + exit ;; + SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*) + echo hppa1.1-hitachi-hiuxmpp + exit ;; + Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*) + # akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE. + if test "`(/bin/universe) 2>/dev/null`" = att ; then + echo pyramid-pyramid-sysv3 + else + echo pyramid-pyramid-bsd + fi + exit ;; + NILE*:*:*:dcosx) + echo pyramid-pyramid-svr4 + exit ;; + DRS?6000:unix:4.0:6*) + echo sparc-icl-nx6 + exit ;; + DRS?6000:UNIX_SV:4.2*:7* | DRS?6000:isis:4.2*:7*) + case `/usr/bin/uname -p` in + sparc) echo sparc-icl-nx7; exit ;; + esac ;; + s390x:SunOS:*:*) + echo ${UNAME_MACHINE}-ibm-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit ;; + sun4H:SunOS:5.*:*) + echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit ;; + sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*) + echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit ;; + i86pc:AuroraUX:5.*:* | i86xen:AuroraUX:5.*:*) + echo i386-pc-auroraux${UNAME_RELEASE} + exit ;; + i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*) + eval $set_cc_for_build + SUN_ARCH="i386" + # If there is a compiler, see if it is configured for 64-bit objects. + # Note that the Sun cc does not turn __LP64__ into 1 like gcc does. + # This test works for both compilers. + if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then + if (echo '#ifdef __amd64'; echo IS_64BIT_ARCH; echo '#endif') | \ + (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \ + grep IS_64BIT_ARCH >/dev/null + then + SUN_ARCH="x86_64" + fi + fi + echo ${SUN_ARCH}-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit ;; + sun4*:SunOS:6*:*) + # According to config.sub, this is the proper way to canonicalize + # SunOS6. Hard to guess exactly what SunOS6 will be like, but + # it's likely to be more like Solaris than SunOS4. + echo sparc-sun-solaris3`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit ;; + sun4*:SunOS:*:*) + case "`/usr/bin/arch -k`" in + Series*|S4*) + UNAME_RELEASE=`uname -v` + ;; + esac + # Japanese Language versions have a version number like `4.1.3-JL'. + echo sparc-sun-sunos`echo ${UNAME_RELEASE}|sed -e 's/-/_/'` + exit ;; + sun3*:SunOS:*:*) + echo m68k-sun-sunos${UNAME_RELEASE} + exit ;; + sun*:*:4.2BSD:*) + UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null` + test "x${UNAME_RELEASE}" = "x" && UNAME_RELEASE=3 + case "`/bin/arch`" in + sun3) + echo m68k-sun-sunos${UNAME_RELEASE} + ;; + sun4) + echo sparc-sun-sunos${UNAME_RELEASE} + ;; + esac + exit ;; + aushp:SunOS:*:*) + echo sparc-auspex-sunos${UNAME_RELEASE} + exit ;; + # The situation for MiNT is a little confusing. The machine name + # can be virtually everything (everything which is not + # "atarist" or "atariste" at least should have a processor + # > m68000). The system name ranges from "MiNT" over "FreeMiNT" + # to the lowercase version "mint" (or "freemint"). Finally + # the system name "TOS" denotes a system which is actually not + # MiNT. But MiNT is downward compatible to TOS, so this should + # be no problem. + atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*) + echo m68k-atari-mint${UNAME_RELEASE} + exit ;; + atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*) + echo m68k-atari-mint${UNAME_RELEASE} + exit ;; + *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*) + echo m68k-atari-mint${UNAME_RELEASE} + exit ;; + milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*) + echo m68k-milan-mint${UNAME_RELEASE} + exit ;; + hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*) + echo m68k-hades-mint${UNAME_RELEASE} + exit ;; + *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*) + echo m68k-unknown-mint${UNAME_RELEASE} + exit ;; + m68k:machten:*:*) + echo m68k-apple-machten${UNAME_RELEASE} + exit ;; + powerpc:machten:*:*) + echo powerpc-apple-machten${UNAME_RELEASE} + exit ;; + RISC*:Mach:*:*) + echo mips-dec-mach_bsd4.3 + exit ;; + RISC*:ULTRIX:*:*) + echo mips-dec-ultrix${UNAME_RELEASE} + exit ;; + VAX*:ULTRIX*:*:*) + echo vax-dec-ultrix${UNAME_RELEASE} + exit ;; + 2020:CLIX:*:* | 2430:CLIX:*:*) + echo clipper-intergraph-clix${UNAME_RELEASE} + exit ;; + mips:*:*:UMIPS | mips:*:*:RISCos) + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c +#ifdef __cplusplus +#include /* for printf() prototype */ + int main (int argc, char *argv[]) { +#else + int main (argc, argv) int argc; char *argv[]; { +#endif + #if defined (host_mips) && defined (MIPSEB) + #if defined (SYSTYPE_SYSV) + printf ("mips-mips-riscos%ssysv\n", argv[1]); exit (0); + #endif + #if defined (SYSTYPE_SVR4) + printf ("mips-mips-riscos%ssvr4\n", argv[1]); exit (0); + #endif + #if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD) + printf ("mips-mips-riscos%sbsd\n", argv[1]); exit (0); + #endif + #endif + exit (-1); + } +EOF + $CC_FOR_BUILD -o $dummy $dummy.c && + dummyarg=`echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` && + SYSTEM_NAME=`$dummy $dummyarg` && + { echo "$SYSTEM_NAME"; exit; } + echo mips-mips-riscos${UNAME_RELEASE} + exit ;; + Motorola:PowerMAX_OS:*:*) + echo powerpc-motorola-powermax + exit ;; + Motorola:*:4.3:PL8-*) + echo powerpc-harris-powermax + exit ;; + Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*) + echo powerpc-harris-powermax + exit ;; + Night_Hawk:Power_UNIX:*:*) + echo powerpc-harris-powerunix + exit ;; + m88k:CX/UX:7*:*) + echo m88k-harris-cxux7 + exit ;; + m88k:*:4*:R4*) + echo m88k-motorola-sysv4 + exit ;; + m88k:*:3*:R3*) + echo m88k-motorola-sysv3 + exit ;; + AViiON:dgux:*:*) + # DG/UX returns AViiON for all architectures + UNAME_PROCESSOR=`/usr/bin/uname -p` + if [ $UNAME_PROCESSOR = mc88100 ] || [ $UNAME_PROCESSOR = mc88110 ] + then + if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx ] || \ + [ ${TARGET_BINARY_INTERFACE}x = x ] + then + echo m88k-dg-dgux${UNAME_RELEASE} + else + echo m88k-dg-dguxbcs${UNAME_RELEASE} + fi + else + echo i586-dg-dgux${UNAME_RELEASE} + fi + exit ;; + M88*:DolphinOS:*:*) # DolphinOS (SVR3) + echo m88k-dolphin-sysv3 + exit ;; + M88*:*:R3*:*) + # Delta 88k system running SVR3 + echo m88k-motorola-sysv3 + exit ;; + XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3) + echo m88k-tektronix-sysv3 + exit ;; + Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD) + echo m68k-tektronix-bsd + exit ;; + *:IRIX*:*:*) + echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'` + exit ;; + ????????:AIX?:[12].1:2) # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX. + echo romp-ibm-aix # uname -m gives an 8 hex-code CPU id + exit ;; # Note that: echo "'`uname -s`'" gives 'AIX ' + i*86:AIX:*:*) + echo i386-ibm-aix + exit ;; + ia64:AIX:*:*) + if [ -x /usr/bin/oslevel ] ; then + IBM_REV=`/usr/bin/oslevel` + else + IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} + fi + echo ${UNAME_MACHINE}-ibm-aix${IBM_REV} + exit ;; + *:AIX:2:3) + if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + #include + + main() + { + if (!__power_pc()) + exit(1); + puts("powerpc-ibm-aix3.2.5"); + exit(0); + } +EOF + if $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` + then + echo "$SYSTEM_NAME" + else + echo rs6000-ibm-aix3.2.5 + fi + elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then + echo rs6000-ibm-aix3.2.4 + else + echo rs6000-ibm-aix3.2 + fi + exit ;; + *:AIX:*:[4567]) + IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'` + if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then + IBM_ARCH=rs6000 + else + IBM_ARCH=powerpc + fi + if [ -x /usr/bin/lslpp ] ; then + IBM_REV=`/usr/bin/lslpp -Lqc bos.rte.libc | + awk -F: '{ print $3 }' | sed s/[0-9]*$/0/` + else + IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} + fi + echo ${IBM_ARCH}-ibm-aix${IBM_REV} + exit ;; + *:AIX:*:*) + echo rs6000-ibm-aix + exit ;; + ibmrt:4.4BSD:*|romp-ibm:BSD:*) + echo romp-ibm-bsd4.4 + exit ;; + ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC BSD and + echo romp-ibm-bsd${UNAME_RELEASE} # 4.3 with uname added to + exit ;; # report: romp-ibm BSD 4.3 + *:BOSX:*:*) + echo rs6000-bull-bosx + exit ;; + DPX/2?00:B.O.S.:*:*) + echo m68k-bull-sysv3 + exit ;; + 9000/[34]??:4.3bsd:1.*:*) + echo m68k-hp-bsd + exit ;; + hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*) + echo m68k-hp-bsd4.4 + exit ;; + 9000/[34678]??:HP-UX:*:*) + HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` + case "${UNAME_MACHINE}" in + 9000/31? ) HP_ARCH=m68000 ;; + 9000/[34]?? ) HP_ARCH=m68k ;; + 9000/[678][0-9][0-9]) + if [ -x /usr/bin/getconf ]; then + sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null` + sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null` + case "${sc_cpu_version}" in + 523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0 + 528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1 + 532) # CPU_PA_RISC2_0 + case "${sc_kernel_bits}" in + 32) HP_ARCH="hppa2.0n" ;; + 64) HP_ARCH="hppa2.0w" ;; + '') HP_ARCH="hppa2.0" ;; # HP-UX 10.20 + esac ;; + esac + fi + if [ "${HP_ARCH}" = "" ]; then + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + + #define _HPUX_SOURCE + #include + #include + + int main () + { + #if defined(_SC_KERNEL_BITS) + long bits = sysconf(_SC_KERNEL_BITS); + #endif + long cpu = sysconf (_SC_CPU_VERSION); + + switch (cpu) + { + case CPU_PA_RISC1_0: puts ("hppa1.0"); break; + case CPU_PA_RISC1_1: puts ("hppa1.1"); break; + case CPU_PA_RISC2_0: + #if defined(_SC_KERNEL_BITS) + switch (bits) + { + case 64: puts ("hppa2.0w"); break; + case 32: puts ("hppa2.0n"); break; + default: puts ("hppa2.0"); break; + } break; + #else /* !defined(_SC_KERNEL_BITS) */ + puts ("hppa2.0"); break; + #endif + default: puts ("hppa1.0"); break; + } + exit (0); + } +EOF + (CCOPTS= $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy` + test -z "$HP_ARCH" && HP_ARCH=hppa + fi ;; + esac + if [ ${HP_ARCH} = "hppa2.0w" ] + then + eval $set_cc_for_build + + # hppa2.0w-hp-hpux* has a 64-bit kernel and a compiler generating + # 32-bit code. hppa64-hp-hpux* has the same kernel and a compiler + # generating 64-bit code. GNU and HP use different nomenclature: + # + # $ CC_FOR_BUILD=cc ./config.guess + # => hppa2.0w-hp-hpux11.23 + # $ CC_FOR_BUILD="cc +DA2.0w" ./config.guess + # => hppa64-hp-hpux11.23 + + if echo __LP64__ | (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | + grep -q __LP64__ + then + HP_ARCH="hppa2.0w" + else + HP_ARCH="hppa64" + fi + fi + echo ${HP_ARCH}-hp-hpux${HPUX_REV} + exit ;; + ia64:HP-UX:*:*) + HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` + echo ia64-hp-hpux${HPUX_REV} + exit ;; + 3050*:HI-UX:*:*) + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + #include + int + main () + { + long cpu = sysconf (_SC_CPU_VERSION); + /* The order matters, because CPU_IS_HP_MC68K erroneously returns + true for CPU_PA_RISC1_0. CPU_IS_PA_RISC returns correct + results, however. */ + if (CPU_IS_PA_RISC (cpu)) + { + switch (cpu) + { + case CPU_PA_RISC1_0: puts ("hppa1.0-hitachi-hiuxwe2"); break; + case CPU_PA_RISC1_1: puts ("hppa1.1-hitachi-hiuxwe2"); break; + case CPU_PA_RISC2_0: puts ("hppa2.0-hitachi-hiuxwe2"); break; + default: puts ("hppa-hitachi-hiuxwe2"); break; + } + } + else if (CPU_IS_HP_MC68K (cpu)) + puts ("m68k-hitachi-hiuxwe2"); + else puts ("unknown-hitachi-hiuxwe2"); + exit (0); + } +EOF + $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` && + { echo "$SYSTEM_NAME"; exit; } + echo unknown-hitachi-hiuxwe2 + exit ;; + 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* ) + echo hppa1.1-hp-bsd + exit ;; + 9000/8??:4.3bsd:*:*) + echo hppa1.0-hp-bsd + exit ;; + *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*) + echo hppa1.0-hp-mpeix + exit ;; + hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* ) + echo hppa1.1-hp-osf + exit ;; + hp8??:OSF1:*:*) + echo hppa1.0-hp-osf + exit ;; + i*86:OSF1:*:*) + if [ -x /usr/sbin/sysversion ] ; then + echo ${UNAME_MACHINE}-unknown-osf1mk + else + echo ${UNAME_MACHINE}-unknown-osf1 + fi + exit ;; + parisc*:Lites*:*:*) + echo hppa1.1-hp-lites + exit ;; + C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*) + echo c1-convex-bsd + exit ;; + C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*) + if getsysinfo -f scalar_acc + then echo c32-convex-bsd + else echo c2-convex-bsd + fi + exit ;; + C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*) + echo c34-convex-bsd + exit ;; + C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*) + echo c38-convex-bsd + exit ;; + C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*) + echo c4-convex-bsd + exit ;; + CRAY*Y-MP:*:*:*) + echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + exit ;; + CRAY*[A-Z]90:*:*:*) + echo ${UNAME_MACHINE}-cray-unicos${UNAME_RELEASE} \ + | sed -e 's/CRAY.*\([A-Z]90\)/\1/' \ + -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \ + -e 's/\.[^.]*$/.X/' + exit ;; + CRAY*TS:*:*:*) + echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + exit ;; + CRAY*T3E:*:*:*) + echo alphaev5-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + exit ;; + CRAY*SV1:*:*:*) + echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + exit ;; + *:UNICOS/mp:*:*) + echo craynv-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + exit ;; + F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*) + FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` + FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` + FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'` + echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" + exit ;; + 5000:UNIX_System_V:4.*:*) + FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` + FUJITSU_REL=`echo ${UNAME_RELEASE} | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/ /_/'` + echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" + exit ;; + i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*) + echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE} + exit ;; + sparc*:BSD/OS:*:*) + echo sparc-unknown-bsdi${UNAME_RELEASE} + exit ;; + *:BSD/OS:*:*) + echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE} + exit ;; + *:FreeBSD:*:*) + UNAME_PROCESSOR=`/usr/bin/uname -p` + case ${UNAME_PROCESSOR} in + amd64) + echo x86_64-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; + *) + echo ${UNAME_PROCESSOR}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; + esac + exit ;; + i*:CYGWIN*:*) + echo ${UNAME_MACHINE}-pc-cygwin + exit ;; + *:MINGW64*:*) + echo ${UNAME_MACHINE}-pc-mingw64 + exit ;; + *:MINGW*:*) + echo ${UNAME_MACHINE}-pc-mingw32 + exit ;; + *:MSYS*:*) + echo ${UNAME_MACHINE}-pc-msys + exit ;; + i*:windows32*:*) + # uname -m includes "-pc" on this system. + echo ${UNAME_MACHINE}-mingw32 + exit ;; + i*:PW*:*) + echo ${UNAME_MACHINE}-pc-pw32 + exit ;; + *:Interix*:*) + case ${UNAME_MACHINE} in + x86) + echo i586-pc-interix${UNAME_RELEASE} + exit ;; + authenticamd | genuineintel | EM64T) + echo x86_64-unknown-interix${UNAME_RELEASE} + exit ;; + IA64) + echo ia64-unknown-interix${UNAME_RELEASE} + exit ;; + esac ;; + [345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*) + echo i${UNAME_MACHINE}-pc-mks + exit ;; + 8664:Windows_NT:*) + echo x86_64-pc-mks + exit ;; + i*:Windows_NT*:* | Pentium*:Windows_NT*:*) + # How do we know it's Interix rather than the generic POSIX subsystem? + # It also conflicts with pre-2.0 versions of AT&T UWIN. Should we + # UNAME_MACHINE based on the output of uname instead of i386? + echo i586-pc-interix + exit ;; + i*:UWIN*:*) + echo ${UNAME_MACHINE}-pc-uwin + exit ;; + amd64:CYGWIN*:*:* | x86_64:CYGWIN*:*:*) + echo x86_64-unknown-cygwin + exit ;; + p*:CYGWIN*:*) + echo powerpcle-unknown-cygwin + exit ;; + prep*:SunOS:5.*:*) + echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit ;; + *:GNU:*:*) + # the GNU system + echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-${LIBC}`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'` + exit ;; + *:GNU/*:*:*) + # other systems with GNU libc and userland + echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-${LIBC} + exit ;; + i*86:Minix:*:*) + echo ${UNAME_MACHINE}-pc-minix + exit ;; + aarch64:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; + aarch64_be:Linux:*:*) + UNAME_MACHINE=aarch64_be + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; + alpha:Linux:*:*) + case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in + EV5) UNAME_MACHINE=alphaev5 ;; + EV56) UNAME_MACHINE=alphaev56 ;; + PCA56) UNAME_MACHINE=alphapca56 ;; + PCA57) UNAME_MACHINE=alphapca56 ;; + EV6) UNAME_MACHINE=alphaev6 ;; + EV67) UNAME_MACHINE=alphaev67 ;; + EV68*) UNAME_MACHINE=alphaev68 ;; + esac + objdump --private-headers /bin/sh | grep -q ld.so.1 + if test "$?" = 0 ; then LIBC="gnulibc1" ; fi + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; + arc:Linux:*:* | arceb:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; + arm*:Linux:*:*) + eval $set_cc_for_build + if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \ + | grep -q __ARM_EABI__ + then + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + else + if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \ + | grep -q __ARM_PCS_VFP + then + echo ${UNAME_MACHINE}-unknown-linux-${LIBC}eabi + else + echo ${UNAME_MACHINE}-unknown-linux-${LIBC}eabihf + fi + fi + exit ;; + avr32*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; + cris:Linux:*:*) + echo ${UNAME_MACHINE}-axis-linux-${LIBC} + exit ;; + crisv32:Linux:*:*) + echo ${UNAME_MACHINE}-axis-linux-${LIBC} + exit ;; + e2k:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; + frv:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; + hexagon:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; + i*86:Linux:*:*) + echo ${UNAME_MACHINE}-pc-linux-${LIBC} + exit ;; + ia64:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; + m32r*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; + m68*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; + mips:Linux:*:* | mips64:Linux:*:*) + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + #undef CPU + #undef ${UNAME_MACHINE} + #undef ${UNAME_MACHINE}el + #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL) + CPU=${UNAME_MACHINE}el + #else + #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB) + CPU=${UNAME_MACHINE} + #else + CPU= + #endif + #endif +EOF + eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^CPU'` + test x"${CPU}" != x && { echo "${CPU}-unknown-linux-${LIBC}"; exit; } + ;; + openrisc*:Linux:*:*) + echo or1k-unknown-linux-${LIBC} + exit ;; + or32:Linux:*:* | or1k*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; + padre:Linux:*:*) + echo sparc-unknown-linux-${LIBC} + exit ;; + parisc64:Linux:*:* | hppa64:Linux:*:*) + echo hppa64-unknown-linux-${LIBC} + exit ;; + parisc:Linux:*:* | hppa:Linux:*:*) + # Look for CPU level + case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in + PA7*) echo hppa1.1-unknown-linux-${LIBC} ;; + PA8*) echo hppa2.0-unknown-linux-${LIBC} ;; + *) echo hppa-unknown-linux-${LIBC} ;; + esac + exit ;; + ppc64:Linux:*:*) + echo powerpc64-unknown-linux-${LIBC} + exit ;; + ppc:Linux:*:*) + echo powerpc-unknown-linux-${LIBC} + exit ;; + ppc64le:Linux:*:*) + echo powerpc64le-unknown-linux-${LIBC} + exit ;; + ppcle:Linux:*:*) + echo powerpcle-unknown-linux-${LIBC} + exit ;; + s390:Linux:*:* | s390x:Linux:*:*) + echo ${UNAME_MACHINE}-ibm-linux-${LIBC} + exit ;; + sh64*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; + sh*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; + sparc:Linux:*:* | sparc64:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; + tile*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; + vax:Linux:*:*) + echo ${UNAME_MACHINE}-dec-linux-${LIBC} + exit ;; + x86_64:Linux:*:*) + echo ${UNAME_MACHINE}-pc-linux-${LIBC} + exit ;; + xtensa*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; + i*86:DYNIX/ptx:4*:*) + # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there. + # earlier versions are messed up and put the nodename in both + # sysname and nodename. + echo i386-sequent-sysv4 + exit ;; + i*86:UNIX_SV:4.2MP:2.*) + # Unixware is an offshoot of SVR4, but it has its own version + # number series starting with 2... + # I am not positive that other SVR4 systems won't match this, + # I just have to hope. -- rms. + # Use sysv4.2uw... so that sysv4* matches it. + echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION} + exit ;; + i*86:OS/2:*:*) + # If we were able to find `uname', then EMX Unix compatibility + # is probably installed. + echo ${UNAME_MACHINE}-pc-os2-emx + exit ;; + i*86:XTS-300:*:STOP) + echo ${UNAME_MACHINE}-unknown-stop + exit ;; + i*86:atheos:*:*) + echo ${UNAME_MACHINE}-unknown-atheos + exit ;; + i*86:syllable:*:*) + echo ${UNAME_MACHINE}-pc-syllable + exit ;; + i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.[02]*:*) + echo i386-unknown-lynxos${UNAME_RELEASE} + exit ;; + i*86:*DOS:*:*) + echo ${UNAME_MACHINE}-pc-msdosdjgpp + exit ;; + i*86:*:4.*:* | i*86:SYSTEM_V:4.*:*) + UNAME_REL=`echo ${UNAME_RELEASE} | sed 's/\/MP$//'` + if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then + echo ${UNAME_MACHINE}-univel-sysv${UNAME_REL} + else + echo ${UNAME_MACHINE}-pc-sysv${UNAME_REL} + fi + exit ;; + i*86:*:5:[678]*) + # UnixWare 7.x, OpenUNIX and OpenServer 6. + case `/bin/uname -X | grep "^Machine"` in + *486*) UNAME_MACHINE=i486 ;; + *Pentium) UNAME_MACHINE=i586 ;; + *Pent*|*Celeron) UNAME_MACHINE=i686 ;; + esac + echo ${UNAME_MACHINE}-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION} + exit ;; + i*86:*:3.2:*) + if test -f /usr/options/cb.name; then + UNAME_REL=`sed -n 's/.*Version //p' /dev/null >/dev/null ; then + UNAME_REL=`(/bin/uname -X|grep Release|sed -e 's/.*= //')` + (/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486 + (/bin/uname -X|grep '^Machine.*Pentium' >/dev/null) \ + && UNAME_MACHINE=i586 + (/bin/uname -X|grep '^Machine.*Pent *II' >/dev/null) \ + && UNAME_MACHINE=i686 + (/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \ + && UNAME_MACHINE=i686 + echo ${UNAME_MACHINE}-pc-sco$UNAME_REL + else + echo ${UNAME_MACHINE}-pc-sysv32 + fi + exit ;; + pc:*:*:*) + # Left here for compatibility: + # uname -m prints for DJGPP always 'pc', but it prints nothing about + # the processor, so we play safe by assuming i586. + # Note: whatever this is, it MUST be the same as what config.sub + # prints for the "djgpp" host, or else GDB configury will decide that + # this is a cross-build. + echo i586-pc-msdosdjgpp + exit ;; + Intel:Mach:3*:*) + echo i386-pc-mach3 + exit ;; + paragon:*:*:*) + echo i860-intel-osf1 + exit ;; + i860:*:4.*:*) # i860-SVR4 + if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then + echo i860-stardent-sysv${UNAME_RELEASE} # Stardent Vistra i860-SVR4 + else # Add other i860-SVR4 vendors below as they are discovered. + echo i860-unknown-sysv${UNAME_RELEASE} # Unknown i860-SVR4 + fi + exit ;; + mini*:CTIX:SYS*5:*) + # "miniframe" + echo m68010-convergent-sysv + exit ;; + mc68k:UNIX:SYSTEM5:3.51m) + echo m68k-convergent-sysv + exit ;; + M680?0:D-NIX:5.3:*) + echo m68k-diab-dnix + exit ;; + M68*:*:R3V[5678]*:*) + test -r /sysV68 && { echo 'm68k-motorola-sysv'; exit; } ;; + 3[345]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0 | S7501*:*:4.0:3.0) + OS_REL='' + test -r /etc/.relid \ + && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` + /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ + && { echo i486-ncr-sysv4.3${OS_REL}; exit; } + /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ + && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;; + 3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*) + /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ + && { echo i486-ncr-sysv4; exit; } ;; + NCR*:*:4.2:* | MPRAS*:*:4.2:*) + OS_REL='.3' + test -r /etc/.relid \ + && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` + /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ + && { echo i486-ncr-sysv4.3${OS_REL}; exit; } + /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ + && { echo i586-ncr-sysv4.3${OS_REL}; exit; } + /bin/uname -p 2>/dev/null | /bin/grep pteron >/dev/null \ + && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;; + m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*) + echo m68k-unknown-lynxos${UNAME_RELEASE} + exit ;; + mc68030:UNIX_System_V:4.*:*) + echo m68k-atari-sysv4 + exit ;; + TSUNAMI:LynxOS:2.*:*) + echo sparc-unknown-lynxos${UNAME_RELEASE} + exit ;; + rs6000:LynxOS:2.*:*) + echo rs6000-unknown-lynxos${UNAME_RELEASE} + exit ;; + PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.[02]*:*) + echo powerpc-unknown-lynxos${UNAME_RELEASE} + exit ;; + SM[BE]S:UNIX_SV:*:*) + echo mips-dde-sysv${UNAME_RELEASE} + exit ;; + RM*:ReliantUNIX-*:*:*) + echo mips-sni-sysv4 + exit ;; + RM*:SINIX-*:*:*) + echo mips-sni-sysv4 + exit ;; + *:SINIX-*:*:*) + if uname -p 2>/dev/null >/dev/null ; then + UNAME_MACHINE=`(uname -p) 2>/dev/null` + echo ${UNAME_MACHINE}-sni-sysv4 + else + echo ns32k-sni-sysv + fi + exit ;; + PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort + # says + echo i586-unisys-sysv4 + exit ;; + *:UNIX_System_V:4*:FTX*) + # From Gerald Hewes . + # How about differentiating between stratus architectures? -djm + echo hppa1.1-stratus-sysv4 + exit ;; + *:*:*:FTX*) + # From seanf@swdc.stratus.com. + echo i860-stratus-sysv4 + exit ;; + i*86:VOS:*:*) + # From Paul.Green@stratus.com. + echo ${UNAME_MACHINE}-stratus-vos + exit ;; + *:VOS:*:*) + # From Paul.Green@stratus.com. + echo hppa1.1-stratus-vos + exit ;; + mc68*:A/UX:*:*) + echo m68k-apple-aux${UNAME_RELEASE} + exit ;; + news*:NEWS-OS:6*:*) + echo mips-sony-newsos6 + exit ;; + R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*) + if [ -d /usr/nec ]; then + echo mips-nec-sysv${UNAME_RELEASE} + else + echo mips-unknown-sysv${UNAME_RELEASE} + fi + exit ;; + BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only. + echo powerpc-be-beos + exit ;; + BeMac:BeOS:*:*) # BeOS running on Mac or Mac clone, PPC only. + echo powerpc-apple-beos + exit ;; + BePC:BeOS:*:*) # BeOS running on Intel PC compatible. + echo i586-pc-beos + exit ;; + BePC:Haiku:*:*) # Haiku running on Intel PC compatible. + echo i586-pc-haiku + exit ;; + x86_64:Haiku:*:*) + echo x86_64-unknown-haiku + exit ;; + SX-4:SUPER-UX:*:*) + echo sx4-nec-superux${UNAME_RELEASE} + exit ;; + SX-5:SUPER-UX:*:*) + echo sx5-nec-superux${UNAME_RELEASE} + exit ;; + SX-6:SUPER-UX:*:*) + echo sx6-nec-superux${UNAME_RELEASE} + exit ;; + SX-7:SUPER-UX:*:*) + echo sx7-nec-superux${UNAME_RELEASE} + exit ;; + SX-8:SUPER-UX:*:*) + echo sx8-nec-superux${UNAME_RELEASE} + exit ;; + SX-8R:SUPER-UX:*:*) + echo sx8r-nec-superux${UNAME_RELEASE} + exit ;; + Power*:Rhapsody:*:*) + echo powerpc-apple-rhapsody${UNAME_RELEASE} + exit ;; + *:Rhapsody:*:*) + echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE} + exit ;; + *:Darwin:*:*) + UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown + eval $set_cc_for_build + if test "$UNAME_PROCESSOR" = unknown ; then + UNAME_PROCESSOR=powerpc + fi + if test `echo "$UNAME_RELEASE" | sed -e 's/\..*//'` -le 10 ; then + if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then + if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \ + (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \ + grep IS_64BIT_ARCH >/dev/null + then + case $UNAME_PROCESSOR in + i386) UNAME_PROCESSOR=x86_64 ;; + powerpc) UNAME_PROCESSOR=powerpc64 ;; + esac + fi + fi + elif test "$UNAME_PROCESSOR" = i386 ; then + # Avoid executing cc on OS X 10.9, as it ships with a stub + # that puts up a graphical alert prompting to install + # developer tools. Any system running Mac OS X 10.7 or + # later (Darwin 11 and later) is required to have a 64-bit + # processor. This is not true of the ARM version of Darwin + # that Apple uses in portable devices. + UNAME_PROCESSOR=x86_64 + fi + echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE} + exit ;; + *:procnto*:*:* | *:QNX:[0123456789]*:*) + UNAME_PROCESSOR=`uname -p` + if test "$UNAME_PROCESSOR" = "x86"; then + UNAME_PROCESSOR=i386 + UNAME_MACHINE=pc + fi + echo ${UNAME_PROCESSOR}-${UNAME_MACHINE}-nto-qnx${UNAME_RELEASE} + exit ;; + *:QNX:*:4*) + echo i386-pc-qnx + exit ;; + NEO-?:NONSTOP_KERNEL:*:*) + echo neo-tandem-nsk${UNAME_RELEASE} + exit ;; + NSE-*:NONSTOP_KERNEL:*:*) + echo nse-tandem-nsk${UNAME_RELEASE} + exit ;; + NSR-?:NONSTOP_KERNEL:*:*) + echo nsr-tandem-nsk${UNAME_RELEASE} + exit ;; + *:NonStop-UX:*:*) + echo mips-compaq-nonstopux + exit ;; + BS2000:POSIX*:*:*) + echo bs2000-siemens-sysv + exit ;; + DS/*:UNIX_System_V:*:*) + echo ${UNAME_MACHINE}-${UNAME_SYSTEM}-${UNAME_RELEASE} + exit ;; + *:Plan9:*:*) + # "uname -m" is not consistent, so use $cputype instead. 386 + # is converted to i386 for consistency with other x86 + # operating systems. + if test "$cputype" = "386"; then + UNAME_MACHINE=i386 + else + UNAME_MACHINE="$cputype" + fi + echo ${UNAME_MACHINE}-unknown-plan9 + exit ;; + *:TOPS-10:*:*) + echo pdp10-unknown-tops10 + exit ;; + *:TENEX:*:*) + echo pdp10-unknown-tenex + exit ;; + KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*) + echo pdp10-dec-tops20 + exit ;; + XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*) + echo pdp10-xkl-tops20 + exit ;; + *:TOPS-20:*:*) + echo pdp10-unknown-tops20 + exit ;; + *:ITS:*:*) + echo pdp10-unknown-its + exit ;; + SEI:*:*:SEIUX) + echo mips-sei-seiux${UNAME_RELEASE} + exit ;; + *:DragonFly:*:*) + echo ${UNAME_MACHINE}-unknown-dragonfly`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` + exit ;; + *:*VMS:*:*) + UNAME_MACHINE=`(uname -p) 2>/dev/null` + case "${UNAME_MACHINE}" in + A*) echo alpha-dec-vms ; exit ;; + I*) echo ia64-dec-vms ; exit ;; + V*) echo vax-dec-vms ; exit ;; + esac ;; + *:XENIX:*:SysV) + echo i386-pc-xenix + exit ;; + i*86:skyos:*:*) + echo ${UNAME_MACHINE}-pc-skyos`echo ${UNAME_RELEASE}` | sed -e 's/ .*$//' + exit ;; + i*86:rdos:*:*) + echo ${UNAME_MACHINE}-pc-rdos + exit ;; + i*86:AROS:*:*) + echo ${UNAME_MACHINE}-pc-aros + exit ;; + x86_64:VMkernel:*:*) + echo ${UNAME_MACHINE}-unknown-esx + exit ;; +esac + +cat >&2 < in order to provide the needed +information to handle your system. + +config.guess timestamp = $timestamp + +uname -m = `(uname -m) 2>/dev/null || echo unknown` +uname -r = `(uname -r) 2>/dev/null || echo unknown` +uname -s = `(uname -s) 2>/dev/null || echo unknown` +uname -v = `(uname -v) 2>/dev/null || echo unknown` + +/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null` +/bin/uname -X = `(/bin/uname -X) 2>/dev/null` + +hostinfo = `(hostinfo) 2>/dev/null` +/bin/universe = `(/bin/universe) 2>/dev/null` +/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null` +/bin/arch = `(/bin/arch) 2>/dev/null` +/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null` +/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null` + +UNAME_MACHINE = ${UNAME_MACHINE} +UNAME_RELEASE = ${UNAME_RELEASE} +UNAME_SYSTEM = ${UNAME_SYSTEM} +UNAME_VERSION = ${UNAME_VERSION} +EOF + +exit 1 + +# Local variables: +# eval: (add-hook 'write-file-hooks 'time-stamp) +# time-stamp-start: "timestamp='" +# time-stamp-format: "%:y-%02m-%02d" +# time-stamp-end: "'" +# End: diff --git a/libs/shapelib/config.sub b/libs/shapelib/config.sub new file mode 100755 index 0000000..1acc966 --- /dev/null +++ b/libs/shapelib/config.sub @@ -0,0 +1,1813 @@ +#! /bin/sh +# Configuration validation subroutine script. +# Copyright 1992-2015 Free Software Foundation, Inc. + +timestamp='2015-08-20' + +# This file is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, see . +# +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that +# program. This Exception is an additional permission under section 7 +# of the GNU General Public License, version 3 ("GPLv3"). + + +# Please send patches to . +# +# Configuration subroutine to validate and canonicalize a configuration type. +# Supply the specified configuration type as an argument. +# If it is invalid, we print an error message on stderr and exit with code 1. +# Otherwise, we print the canonical config type on stdout and succeed. + +# You can get the latest version of this script from: +# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD + +# This file is supposed to be the same for all GNU packages +# and recognize all the CPU types, system types and aliases +# that are meaningful with *any* GNU software. +# Each package is responsible for reporting which valid configurations +# it does not support. The user should be able to distinguish +# a failure to support a valid configuration from a meaningless +# configuration. + +# The goal of this file is to map all the various variations of a given +# machine specification into a single specification in the form: +# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM +# or in some cases, the newer four-part form: +# CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM +# It is wrong to echo any other type of specification. + +me=`echo "$0" | sed -e 's,.*/,,'` + +usage="\ +Usage: $0 [OPTION] CPU-MFR-OPSYS + $0 [OPTION] ALIAS + +Canonicalize a configuration name. + +Operation modes: + -h, --help print this help, then exit + -t, --time-stamp print date of last modification, then exit + -v, --version print version number, then exit + +Report bugs and patches to ." + +version="\ +GNU config.sub ($timestamp) + +Copyright 1992-2015 Free Software Foundation, Inc. + +This is free software; see the source for copying conditions. There is NO +warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." + +help=" +Try \`$me --help' for more information." + +# Parse command line +while test $# -gt 0 ; do + case $1 in + --time-stamp | --time* | -t ) + echo "$timestamp" ; exit ;; + --version | -v ) + echo "$version" ; exit ;; + --help | --h* | -h ) + echo "$usage"; exit ;; + -- ) # Stop option processing + shift; break ;; + - ) # Use stdin as input. + break ;; + -* ) + echo "$me: invalid option $1$help" + exit 1 ;; + + *local*) + # First pass through any local machine types. + echo $1 + exit ;; + + * ) + break ;; + esac +done + +case $# in + 0) echo "$me: missing argument$help" >&2 + exit 1;; + 1) ;; + *) echo "$me: too many arguments$help" >&2 + exit 1;; +esac + +# Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any). +# Here we must recognize all the valid KERNEL-OS combinations. +maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'` +case $maybe_os in + nto-qnx* | linux-gnu* | linux-android* | linux-dietlibc | linux-newlib* | \ + linux-musl* | linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | \ + knetbsd*-gnu* | netbsd*-gnu* | netbsd*-eabi* | \ + kopensolaris*-gnu* | \ + storm-chaos* | os2-emx* | rtmk-nova*) + os=-$maybe_os + basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'` + ;; + android-linux) + os=-linux-android + basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`-unknown + ;; + *) + basic_machine=`echo $1 | sed 's/-[^-]*$//'` + if [ $basic_machine != $1 ] + then os=`echo $1 | sed 's/.*-/-/'` + else os=; fi + ;; +esac + +### Let's recognize common machines as not being operating systems so +### that things like config.sub decstation-3100 work. We also +### recognize some manufacturers as not being operating systems, so we +### can provide default operating systems below. +case $os in + -sun*os*) + # Prevent following clause from handling this invalid input. + ;; + -dec* | -mips* | -sequent* | -encore* | -pc532* | -sgi* | -sony* | \ + -att* | -7300* | -3300* | -delta* | -motorola* | -sun[234]* | \ + -unicom* | -ibm* | -next | -hp | -isi* | -apollo | -altos* | \ + -convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\ + -c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \ + -harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \ + -apple | -axis | -knuth | -cray | -microblaze*) + os= + basic_machine=$1 + ;; + -bluegene*) + os=-cnk + ;; + -sim | -cisco | -oki | -wec | -winbond) + os= + basic_machine=$1 + ;; + -scout) + ;; + -wrs) + os=-vxworks + basic_machine=$1 + ;; + -chorusos*) + os=-chorusos + basic_machine=$1 + ;; + -chorusrdb) + os=-chorusrdb + basic_machine=$1 + ;; + -hiux*) + os=-hiuxwe2 + ;; + -sco6) + os=-sco5v6 + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -sco5) + os=-sco3.2v5 + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -sco4) + os=-sco3.2v4 + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -sco3.2.[4-9]*) + os=`echo $os | sed -e 's/sco3.2./sco3.2v/'` + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -sco3.2v[4-9]*) + # Don't forget version if it is 3.2v4 or newer. + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -sco5v6*) + # Don't forget version if it is 3.2v4 or newer. + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -sco*) + os=-sco3.2v2 + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -udk*) + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -isc) + os=-isc2.2 + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -clix*) + basic_machine=clipper-intergraph + ;; + -isc*) + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -lynx*178) + os=-lynxos178 + ;; + -lynx*5) + os=-lynxos5 + ;; + -lynx*) + os=-lynxos + ;; + -ptx*) + basic_machine=`echo $1 | sed -e 's/86-.*/86-sequent/'` + ;; + -windowsnt*) + os=`echo $os | sed -e 's/windowsnt/winnt/'` + ;; + -psos*) + os=-psos + ;; + -mint | -mint[0-9]*) + basic_machine=m68k-atari + os=-mint + ;; +esac + +# Decode aliases for certain CPU-COMPANY combinations. +case $basic_machine in + # Recognize the basic CPU types without company name. + # Some are omitted here because they have special meanings below. + 1750a | 580 \ + | a29k \ + | aarch64 | aarch64_be \ + | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \ + | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \ + | am33_2.0 \ + | arc | arceb \ + | arm | arm[bl]e | arme[lb] | armv[2-8] | armv[3-8][lb] | armv7[arm] \ + | avr | avr32 \ + | ba \ + | be32 | be64 \ + | bfin \ + | c4x | c8051 | clipper \ + | d10v | d30v | dlx | dsp16xx \ + | e2k | epiphany \ + | fido | fr30 | frv | ft32 \ + | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ + | hexagon \ + | i370 | i860 | i960 | ia64 \ + | ip2k | iq2000 \ + | k1om \ + | le32 | le64 \ + | lm32 \ + | m32c | m32r | m32rle | m68000 | m68k | m88k \ + | maxq | mb | microblaze | microblazeel | mcore | mep | metag \ + | mips | mipsbe | mipseb | mipsel | mipsle \ + | mips16 \ + | mips64 | mips64el \ + | mips64octeon | mips64octeonel \ + | mips64orion | mips64orionel \ + | mips64r5900 | mips64r5900el \ + | mips64vr | mips64vrel \ + | mips64vr4100 | mips64vr4100el \ + | mips64vr4300 | mips64vr4300el \ + | mips64vr5000 | mips64vr5000el \ + | mips64vr5900 | mips64vr5900el \ + | mipsisa32 | mipsisa32el \ + | mipsisa32r2 | mipsisa32r2el \ + | mipsisa32r6 | mipsisa32r6el \ + | mipsisa64 | mipsisa64el \ + | mipsisa64r2 | mipsisa64r2el \ + | mipsisa64r6 | mipsisa64r6el \ + | mipsisa64sb1 | mipsisa64sb1el \ + | mipsisa64sr71k | mipsisa64sr71kel \ + | mipsr5900 | mipsr5900el \ + | mipstx39 | mipstx39el \ + | mn10200 | mn10300 \ + | moxie \ + | mt \ + | msp430 \ + | nds32 | nds32le | nds32be \ + | nios | nios2 | nios2eb | nios2el \ + | ns16k | ns32k \ + | open8 | or1k | or1knd | or32 \ + | pdp10 | pdp11 | pj | pjl \ + | powerpc | powerpc64 | powerpc64le | powerpcle \ + | pyramid \ + | riscv32 | riscv64 \ + | rl78 | rx \ + | score \ + | sh | sh[1234] | sh[24]a | sh[24]aeb | sh[23]e | sh[234]eb | sheb | shbe | shle | sh[1234]le | sh3ele \ + | sh64 | sh64le \ + | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet | sparclite \ + | sparcv8 | sparcv9 | sparcv9b | sparcv9v \ + | spu \ + | tahoe | tic4x | tic54x | tic55x | tic6x | tic80 | tron \ + | ubicom32 \ + | v850 | v850e | v850e1 | v850e2 | v850es | v850e2v3 \ + | visium \ + | we32k \ + | x86 | xc16x | xstormy16 | xtensa \ + | z8k | z80) + basic_machine=$basic_machine-unknown + ;; + c54x) + basic_machine=tic54x-unknown + ;; + c55x) + basic_machine=tic55x-unknown + ;; + c6x) + basic_machine=tic6x-unknown + ;; + leon|leon[3-9]) + basic_machine=sparc-$basic_machine + ;; + m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x | nvptx | picochip) + basic_machine=$basic_machine-unknown + os=-none + ;; + m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k) + ;; + ms1) + basic_machine=mt-unknown + ;; + + strongarm | thumb | xscale) + basic_machine=arm-unknown + ;; + xgate) + basic_machine=$basic_machine-unknown + os=-none + ;; + xscaleeb) + basic_machine=armeb-unknown + ;; + + xscaleel) + basic_machine=armel-unknown + ;; + + # We use `pc' rather than `unknown' + # because (1) that's what they normally are, and + # (2) the word "unknown" tends to confuse beginning users. + i*86 | x86_64) + basic_machine=$basic_machine-pc + ;; + # Object if more than one company name word. + *-*-*) + echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 + exit 1 + ;; + # Recognize the basic CPU types with company name. + 580-* \ + | a29k-* \ + | aarch64-* | aarch64_be-* \ + | alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \ + | alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \ + | alphapca5[67]-* | alpha64pca5[67]-* | arc-* | arceb-* \ + | arm-* | armbe-* | armle-* | armeb-* | armv*-* \ + | avr-* | avr32-* \ + | ba-* \ + | be32-* | be64-* \ + | bfin-* | bs2000-* \ + | c[123]* | c30-* | [cjt]90-* | c4x-* \ + | c8051-* | clipper-* | craynv-* | cydra-* \ + | d10v-* | d30v-* | dlx-* \ + | e2k-* | elxsi-* \ + | f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \ + | h8300-* | h8500-* \ + | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \ + | hexagon-* \ + | i*86-* | i860-* | i960-* | ia64-* \ + | ip2k-* | iq2000-* \ + | k1om-* \ + | le32-* | le64-* \ + | lm32-* \ + | m32c-* | m32r-* | m32rle-* \ + | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \ + | m88110-* | m88k-* | maxq-* | mcore-* | metag-* \ + | microblaze-* | microblazeel-* \ + | mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \ + | mips16-* \ + | mips64-* | mips64el-* \ + | mips64octeon-* | mips64octeonel-* \ + | mips64orion-* | mips64orionel-* \ + | mips64r5900-* | mips64r5900el-* \ + | mips64vr-* | mips64vrel-* \ + | mips64vr4100-* | mips64vr4100el-* \ + | mips64vr4300-* | mips64vr4300el-* \ + | mips64vr5000-* | mips64vr5000el-* \ + | mips64vr5900-* | mips64vr5900el-* \ + | mipsisa32-* | mipsisa32el-* \ + | mipsisa32r2-* | mipsisa32r2el-* \ + | mipsisa32r6-* | mipsisa32r6el-* \ + | mipsisa64-* | mipsisa64el-* \ + | mipsisa64r2-* | mipsisa64r2el-* \ + | mipsisa64r6-* | mipsisa64r6el-* \ + | mipsisa64sb1-* | mipsisa64sb1el-* \ + | mipsisa64sr71k-* | mipsisa64sr71kel-* \ + | mipsr5900-* | mipsr5900el-* \ + | mipstx39-* | mipstx39el-* \ + | mmix-* \ + | mt-* \ + | msp430-* \ + | nds32-* | nds32le-* | nds32be-* \ + | nios-* | nios2-* | nios2eb-* | nios2el-* \ + | none-* | np1-* | ns16k-* | ns32k-* \ + | open8-* \ + | or1k*-* \ + | orion-* \ + | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \ + | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* \ + | pyramid-* \ + | riscv32-* | riscv64-* \ + | rl78-* | romp-* | rs6000-* | rx-* \ + | sh-* | sh[1234]-* | sh[24]a-* | sh[24]aeb-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \ + | shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \ + | sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | sparclet-* \ + | sparclite-* \ + | sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | sv1-* | sx*-* \ + | tahoe-* \ + | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \ + | tile*-* \ + | tron-* \ + | ubicom32-* \ + | v850-* | v850e-* | v850e1-* | v850es-* | v850e2-* | v850e2v3-* \ + | vax-* \ + | visium-* \ + | we32k-* \ + | x86-* | x86_64-* | xc16x-* | xps100-* \ + | xstormy16-* | xtensa*-* \ + | ymp-* \ + | z8k-* | z80-*) + ;; + # Recognize the basic CPU types without company name, with glob match. + xtensa*) + basic_machine=$basic_machine-unknown + ;; + # Recognize the various machine names and aliases which stand + # for a CPU type and a company and sometimes even an OS. + 386bsd) + basic_machine=i386-unknown + os=-bsd + ;; + 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc) + basic_machine=m68000-att + ;; + 3b*) + basic_machine=we32k-att + ;; + a29khif) + basic_machine=a29k-amd + os=-udi + ;; + abacus) + basic_machine=abacus-unknown + ;; + adobe68k) + basic_machine=m68010-adobe + os=-scout + ;; + alliant | fx80) + basic_machine=fx80-alliant + ;; + altos | altos3068) + basic_machine=m68k-altos + ;; + am29k) + basic_machine=a29k-none + os=-bsd + ;; + amd64) + basic_machine=x86_64-pc + ;; + amd64-*) + basic_machine=x86_64-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + amdahl) + basic_machine=580-amdahl + os=-sysv + ;; + amiga | amiga-*) + basic_machine=m68k-unknown + ;; + amigaos | amigados) + basic_machine=m68k-unknown + os=-amigaos + ;; + amigaunix | amix) + basic_machine=m68k-unknown + os=-sysv4 + ;; + apollo68) + basic_machine=m68k-apollo + os=-sysv + ;; + apollo68bsd) + basic_machine=m68k-apollo + os=-bsd + ;; + aros) + basic_machine=i386-pc + os=-aros + ;; + asmjs) + basic_machine=asmjs-unknown + ;; + aux) + basic_machine=m68k-apple + os=-aux + ;; + balance) + basic_machine=ns32k-sequent + os=-dynix + ;; + blackfin) + basic_machine=bfin-unknown + os=-linux + ;; + blackfin-*) + basic_machine=bfin-`echo $basic_machine | sed 's/^[^-]*-//'` + os=-linux + ;; + bluegene*) + basic_machine=powerpc-ibm + os=-cnk + ;; + c54x-*) + basic_machine=tic54x-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + c55x-*) + basic_machine=tic55x-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + c6x-*) + basic_machine=tic6x-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + c90) + basic_machine=c90-cray + os=-unicos + ;; + cegcc) + basic_machine=arm-unknown + os=-cegcc + ;; + convex-c1) + basic_machine=c1-convex + os=-bsd + ;; + convex-c2) + basic_machine=c2-convex + os=-bsd + ;; + convex-c32) + basic_machine=c32-convex + os=-bsd + ;; + convex-c34) + basic_machine=c34-convex + os=-bsd + ;; + convex-c38) + basic_machine=c38-convex + os=-bsd + ;; + cray | j90) + basic_machine=j90-cray + os=-unicos + ;; + craynv) + basic_machine=craynv-cray + os=-unicosmp + ;; + cr16 | cr16-*) + basic_machine=cr16-unknown + os=-elf + ;; + crds | unos) + basic_machine=m68k-crds + ;; + crisv32 | crisv32-* | etraxfs*) + basic_machine=crisv32-axis + ;; + cris | cris-* | etrax*) + basic_machine=cris-axis + ;; + crx) + basic_machine=crx-unknown + os=-elf + ;; + da30 | da30-*) + basic_machine=m68k-da30 + ;; + decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn) + basic_machine=mips-dec + ;; + decsystem10* | dec10*) + basic_machine=pdp10-dec + os=-tops10 + ;; + decsystem20* | dec20*) + basic_machine=pdp10-dec + os=-tops20 + ;; + delta | 3300 | motorola-3300 | motorola-delta \ + | 3300-motorola | delta-motorola) + basic_machine=m68k-motorola + ;; + delta88) + basic_machine=m88k-motorola + os=-sysv3 + ;; + dicos) + basic_machine=i686-pc + os=-dicos + ;; + djgpp) + basic_machine=i586-pc + os=-msdosdjgpp + ;; + dpx20 | dpx20-*) + basic_machine=rs6000-bull + os=-bosx + ;; + dpx2* | dpx2*-bull) + basic_machine=m68k-bull + os=-sysv3 + ;; + ebmon29k) + basic_machine=a29k-amd + os=-ebmon + ;; + elxsi) + basic_machine=elxsi-elxsi + os=-bsd + ;; + encore | umax | mmax) + basic_machine=ns32k-encore + ;; + es1800 | OSE68k | ose68k | ose | OSE) + basic_machine=m68k-ericsson + os=-ose + ;; + fx2800) + basic_machine=i860-alliant + ;; + genix) + basic_machine=ns32k-ns + ;; + gmicro) + basic_machine=tron-gmicro + os=-sysv + ;; + go32) + basic_machine=i386-pc + os=-go32 + ;; + h3050r* | hiux*) + basic_machine=hppa1.1-hitachi + os=-hiuxwe2 + ;; + h8300hms) + basic_machine=h8300-hitachi + os=-hms + ;; + h8300xray) + basic_machine=h8300-hitachi + os=-xray + ;; + h8500hms) + basic_machine=h8500-hitachi + os=-hms + ;; + harris) + basic_machine=m88k-harris + os=-sysv3 + ;; + hp300-*) + basic_machine=m68k-hp + ;; + hp300bsd) + basic_machine=m68k-hp + os=-bsd + ;; + hp300hpux) + basic_machine=m68k-hp + os=-hpux + ;; + hp3k9[0-9][0-9] | hp9[0-9][0-9]) + basic_machine=hppa1.0-hp + ;; + hp9k2[0-9][0-9] | hp9k31[0-9]) + basic_machine=m68000-hp + ;; + hp9k3[2-9][0-9]) + basic_machine=m68k-hp + ;; + hp9k6[0-9][0-9] | hp6[0-9][0-9]) + basic_machine=hppa1.0-hp + ;; + hp9k7[0-79][0-9] | hp7[0-79][0-9]) + basic_machine=hppa1.1-hp + ;; + hp9k78[0-9] | hp78[0-9]) + # FIXME: really hppa2.0-hp + basic_machine=hppa1.1-hp + ;; + hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893) + # FIXME: really hppa2.0-hp + basic_machine=hppa1.1-hp + ;; + hp9k8[0-9][13679] | hp8[0-9][13679]) + basic_machine=hppa1.1-hp + ;; + hp9k8[0-9][0-9] | hp8[0-9][0-9]) + basic_machine=hppa1.0-hp + ;; + hppa-next) + os=-nextstep3 + ;; + hppaosf) + basic_machine=hppa1.1-hp + os=-osf + ;; + hppro) + basic_machine=hppa1.1-hp + os=-proelf + ;; + i370-ibm* | ibm*) + basic_machine=i370-ibm + ;; + i*86v32) + basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` + os=-sysv32 + ;; + i*86v4*) + basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` + os=-sysv4 + ;; + i*86v) + basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` + os=-sysv + ;; + i*86sol2) + basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` + os=-solaris2 + ;; + i386mach) + basic_machine=i386-mach + os=-mach + ;; + i386-vsta | vsta) + basic_machine=i386-unknown + os=-vsta + ;; + iris | iris4d) + basic_machine=mips-sgi + case $os in + -irix*) + ;; + *) + os=-irix4 + ;; + esac + ;; + isi68 | isi) + basic_machine=m68k-isi + os=-sysv + ;; + leon-*|leon[3-9]-*) + basic_machine=sparc-`echo $basic_machine | sed 's/-.*//'` + ;; + m68knommu) + basic_machine=m68k-unknown + os=-linux + ;; + m68knommu-*) + basic_machine=m68k-`echo $basic_machine | sed 's/^[^-]*-//'` + os=-linux + ;; + m88k-omron*) + basic_machine=m88k-omron + ;; + magnum | m3230) + basic_machine=mips-mips + os=-sysv + ;; + merlin) + basic_machine=ns32k-utek + os=-sysv + ;; + microblaze*) + basic_machine=microblaze-xilinx + ;; + mingw64) + basic_machine=x86_64-pc + os=-mingw64 + ;; + mingw32) + basic_machine=i686-pc + os=-mingw32 + ;; + mingw32ce) + basic_machine=arm-unknown + os=-mingw32ce + ;; + miniframe) + basic_machine=m68000-convergent + ;; + *mint | -mint[0-9]* | *MiNT | *MiNT[0-9]*) + basic_machine=m68k-atari + os=-mint + ;; + mips3*-*) + basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'` + ;; + mips3*) + basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown + ;; + monitor) + basic_machine=m68k-rom68k + os=-coff + ;; + morphos) + basic_machine=powerpc-unknown + os=-morphos + ;; + moxiebox) + basic_machine=moxie-unknown + os=-moxiebox + ;; + msdos) + basic_machine=i386-pc + os=-msdos + ;; + ms1-*) + basic_machine=`echo $basic_machine | sed -e 's/ms1-/mt-/'` + ;; + msys) + basic_machine=i686-pc + os=-msys + ;; + mvs) + basic_machine=i370-ibm + os=-mvs + ;; + nacl) + basic_machine=le32-unknown + os=-nacl + ;; + ncr3000) + basic_machine=i486-ncr + os=-sysv4 + ;; + netbsd386) + basic_machine=i386-unknown + os=-netbsd + ;; + netwinder) + basic_machine=armv4l-rebel + os=-linux + ;; + news | news700 | news800 | news900) + basic_machine=m68k-sony + os=-newsos + ;; + news1000) + basic_machine=m68030-sony + os=-newsos + ;; + news-3600 | risc-news) + basic_machine=mips-sony + os=-newsos + ;; + necv70) + basic_machine=v70-nec + os=-sysv + ;; + next | m*-next ) + basic_machine=m68k-next + case $os in + -nextstep* ) + ;; + -ns2*) + os=-nextstep2 + ;; + *) + os=-nextstep3 + ;; + esac + ;; + nh3000) + basic_machine=m68k-harris + os=-cxux + ;; + nh[45]000) + basic_machine=m88k-harris + os=-cxux + ;; + nindy960) + basic_machine=i960-intel + os=-nindy + ;; + mon960) + basic_machine=i960-intel + os=-mon960 + ;; + nonstopux) + basic_machine=mips-compaq + os=-nonstopux + ;; + np1) + basic_machine=np1-gould + ;; + neo-tandem) + basic_machine=neo-tandem + ;; + nse-tandem) + basic_machine=nse-tandem + ;; + nsr-tandem) + basic_machine=nsr-tandem + ;; + op50n-* | op60c-*) + basic_machine=hppa1.1-oki + os=-proelf + ;; + openrisc | openrisc-*) + basic_machine=or32-unknown + ;; + os400) + basic_machine=powerpc-ibm + os=-os400 + ;; + OSE68000 | ose68000) + basic_machine=m68000-ericsson + os=-ose + ;; + os68k) + basic_machine=m68k-none + os=-os68k + ;; + pa-hitachi) + basic_machine=hppa1.1-hitachi + os=-hiuxwe2 + ;; + paragon) + basic_machine=i860-intel + os=-osf + ;; + parisc) + basic_machine=hppa-unknown + os=-linux + ;; + parisc-*) + basic_machine=hppa-`echo $basic_machine | sed 's/^[^-]*-//'` + os=-linux + ;; + pbd) + basic_machine=sparc-tti + ;; + pbb) + basic_machine=m68k-tti + ;; + pc532 | pc532-*) + basic_machine=ns32k-pc532 + ;; + pc98) + basic_machine=i386-pc + ;; + pc98-*) + basic_machine=i386-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + pentium | p5 | k5 | k6 | nexgen | viac3) + basic_machine=i586-pc + ;; + pentiumpro | p6 | 6x86 | athlon | athlon_*) + basic_machine=i686-pc + ;; + pentiumii | pentium2 | pentiumiii | pentium3) + basic_machine=i686-pc + ;; + pentium4) + basic_machine=i786-pc + ;; + pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*) + basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + pentiumpro-* | p6-* | 6x86-* | athlon-*) + basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*) + basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + pentium4-*) + basic_machine=i786-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + pn) + basic_machine=pn-gould + ;; + power) basic_machine=power-ibm + ;; + ppc | ppcbe) basic_machine=powerpc-unknown + ;; + ppc-* | ppcbe-*) + basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + ppcle | powerpclittle | ppc-le | powerpc-little) + basic_machine=powerpcle-unknown + ;; + ppcle-* | powerpclittle-*) + basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + ppc64) basic_machine=powerpc64-unknown + ;; + ppc64-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + ppc64le | powerpc64little | ppc64-le | powerpc64-little) + basic_machine=powerpc64le-unknown + ;; + ppc64le-* | powerpc64little-*) + basic_machine=powerpc64le-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + ps2) + basic_machine=i386-ibm + ;; + pw32) + basic_machine=i586-unknown + os=-pw32 + ;; + rdos | rdos64) + basic_machine=x86_64-pc + os=-rdos + ;; + rdos32) + basic_machine=i386-pc + os=-rdos + ;; + rom68k) + basic_machine=m68k-rom68k + os=-coff + ;; + rm[46]00) + basic_machine=mips-siemens + ;; + rtpc | rtpc-*) + basic_machine=romp-ibm + ;; + s390 | s390-*) + basic_machine=s390-ibm + ;; + s390x | s390x-*) + basic_machine=s390x-ibm + ;; + sa29200) + basic_machine=a29k-amd + os=-udi + ;; + sb1) + basic_machine=mipsisa64sb1-unknown + ;; + sb1el) + basic_machine=mipsisa64sb1el-unknown + ;; + sde) + basic_machine=mipsisa32-sde + os=-elf + ;; + sei) + basic_machine=mips-sei + os=-seiux + ;; + sequent) + basic_machine=i386-sequent + ;; + sh) + basic_machine=sh-hitachi + os=-hms + ;; + sh5el) + basic_machine=sh5le-unknown + ;; + sh64) + basic_machine=sh64-unknown + ;; + sparclite-wrs | simso-wrs) + basic_machine=sparclite-wrs + os=-vxworks + ;; + sps7) + basic_machine=m68k-bull + os=-sysv2 + ;; + spur) + basic_machine=spur-unknown + ;; + st2000) + basic_machine=m68k-tandem + ;; + stratus) + basic_machine=i860-stratus + os=-sysv4 + ;; + strongarm-* | thumb-*) + basic_machine=arm-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + sun2) + basic_machine=m68000-sun + ;; + sun2os3) + basic_machine=m68000-sun + os=-sunos3 + ;; + sun2os4) + basic_machine=m68000-sun + os=-sunos4 + ;; + sun3os3) + basic_machine=m68k-sun + os=-sunos3 + ;; + sun3os4) + basic_machine=m68k-sun + os=-sunos4 + ;; + sun4os3) + basic_machine=sparc-sun + os=-sunos3 + ;; + sun4os4) + basic_machine=sparc-sun + os=-sunos4 + ;; + sun4sol2) + basic_machine=sparc-sun + os=-solaris2 + ;; + sun3 | sun3-*) + basic_machine=m68k-sun + ;; + sun4) + basic_machine=sparc-sun + ;; + sun386 | sun386i | roadrunner) + basic_machine=i386-sun + ;; + sv1) + basic_machine=sv1-cray + os=-unicos + ;; + symmetry) + basic_machine=i386-sequent + os=-dynix + ;; + t3e) + basic_machine=alphaev5-cray + os=-unicos + ;; + t90) + basic_machine=t90-cray + os=-unicos + ;; + tile*) + basic_machine=$basic_machine-unknown + os=-linux-gnu + ;; + tx39) + basic_machine=mipstx39-unknown + ;; + tx39el) + basic_machine=mipstx39el-unknown + ;; + toad1) + basic_machine=pdp10-xkl + os=-tops20 + ;; + tower | tower-32) + basic_machine=m68k-ncr + ;; + tpf) + basic_machine=s390x-ibm + os=-tpf + ;; + udi29k) + basic_machine=a29k-amd + os=-udi + ;; + ultra3) + basic_machine=a29k-nyu + os=-sym1 + ;; + v810 | necv810) + basic_machine=v810-nec + os=-none + ;; + vaxv) + basic_machine=vax-dec + os=-sysv + ;; + vms) + basic_machine=vax-dec + os=-vms + ;; + vpp*|vx|vx-*) + basic_machine=f301-fujitsu + ;; + vxworks960) + basic_machine=i960-wrs + os=-vxworks + ;; + vxworks68) + basic_machine=m68k-wrs + os=-vxworks + ;; + vxworks29k) + basic_machine=a29k-wrs + os=-vxworks + ;; + w65*) + basic_machine=w65-wdc + os=-none + ;; + w89k-*) + basic_machine=hppa1.1-winbond + os=-proelf + ;; + xbox) + basic_machine=i686-pc + os=-mingw32 + ;; + xps | xps100) + basic_machine=xps100-honeywell + ;; + xscale-* | xscalee[bl]-*) + basic_machine=`echo $basic_machine | sed 's/^xscale/arm/'` + ;; + ymp) + basic_machine=ymp-cray + os=-unicos + ;; + z8k-*-coff) + basic_machine=z8k-unknown + os=-sim + ;; + z80-*-coff) + basic_machine=z80-unknown + os=-sim + ;; + none) + basic_machine=none-none + os=-none + ;; + +# Here we handle the default manufacturer of certain CPU types. It is in +# some cases the only manufacturer, in others, it is the most popular. + w89k) + basic_machine=hppa1.1-winbond + ;; + op50n) + basic_machine=hppa1.1-oki + ;; + op60c) + basic_machine=hppa1.1-oki + ;; + romp) + basic_machine=romp-ibm + ;; + mmix) + basic_machine=mmix-knuth + ;; + rs6000) + basic_machine=rs6000-ibm + ;; + vax) + basic_machine=vax-dec + ;; + pdp10) + # there are many clones, so DEC is not a safe bet + basic_machine=pdp10-unknown + ;; + pdp11) + basic_machine=pdp11-dec + ;; + we32k) + basic_machine=we32k-att + ;; + sh[1234] | sh[24]a | sh[24]aeb | sh[34]eb | sh[1234]le | sh[23]ele) + basic_machine=sh-unknown + ;; + sparc | sparcv8 | sparcv9 | sparcv9b | sparcv9v) + basic_machine=sparc-sun + ;; + cydra) + basic_machine=cydra-cydrome + ;; + orion) + basic_machine=orion-highlevel + ;; + orion105) + basic_machine=clipper-highlevel + ;; + mac | mpw | mac-mpw) + basic_machine=m68k-apple + ;; + pmac | pmac-mpw) + basic_machine=powerpc-apple + ;; + *-unknown) + # Make sure to match an already-canonicalized machine name. + ;; + *) + echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 + exit 1 + ;; +esac + +# Here we canonicalize certain aliases for manufacturers. +case $basic_machine in + *-digital*) + basic_machine=`echo $basic_machine | sed 's/digital.*/dec/'` + ;; + *-commodore*) + basic_machine=`echo $basic_machine | sed 's/commodore.*/cbm/'` + ;; + *) + ;; +esac + +# Decode manufacturer-specific aliases for certain operating systems. + +if [ x"$os" != x"" ] +then +case $os in + # First match some system type aliases + # that might get confused with valid system types. + # -solaris* is a basic system type, with this one exception. + -auroraux) + os=-auroraux + ;; + -solaris1 | -solaris1.*) + os=`echo $os | sed -e 's|solaris1|sunos4|'` + ;; + -solaris) + os=-solaris2 + ;; + -svr4*) + os=-sysv4 + ;; + -unixware*) + os=-sysv4.2uw + ;; + -gnu/linux*) + os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'` + ;; + # First accept the basic system types. + # The portable systems comes first. + # Each alternative MUST END IN A *, to match a version number. + # -sysv* is not here because it comes later, after sysvr4. + -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \ + | -*vms* | -sco* | -esix* | -isc* | -aix* | -cnk* | -sunos | -sunos[34]*\ + | -hpux* | -unos* | -osf* | -luna* | -dgux* | -auroraux* | -solaris* \ + | -sym* | -kopensolaris* | -plan9* \ + | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \ + | -aos* | -aros* | -cloudabi* | -sortix* \ + | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \ + | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \ + | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* \ + | -bitrig* | -openbsd* | -solidbsd* \ + | -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \ + | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \ + | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \ + | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \ + | -chorusos* | -chorusrdb* | -cegcc* \ + | -cygwin* | -msys* | -pe* | -psos* | -moss* | -proelf* | -rtems* \ + | -mingw32* | -mingw64* | -linux-gnu* | -linux-android* \ + | -linux-newlib* | -linux-musl* | -linux-uclibc* \ + | -uxpv* | -beos* | -mpeix* | -udk* | -moxiebox* \ + | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \ + | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \ + | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \ + | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \ + | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \ + | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \ + | -skyos* | -haiku* | -rdos* | -toppers* | -drops* | -es* | -tirtos*) + # Remember, each alternative MUST END IN *, to match a version number. + ;; + -qnx*) + case $basic_machine in + x86-* | i*86-*) + ;; + *) + os=-nto$os + ;; + esac + ;; + -nto-qnx*) + ;; + -nto*) + os=`echo $os | sed -e 's|nto|nto-qnx|'` + ;; + -sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \ + | -windows* | -osx | -abug | -netware* | -os9* | -beos* | -haiku* \ + | -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*) + ;; + -mac*) + os=`echo $os | sed -e 's|mac|macos|'` + ;; + -linux-dietlibc) + os=-linux-dietlibc + ;; + -linux*) + os=`echo $os | sed -e 's|linux|linux-gnu|'` + ;; + -sunos5*) + os=`echo $os | sed -e 's|sunos5|solaris2|'` + ;; + -sunos6*) + os=`echo $os | sed -e 's|sunos6|solaris3|'` + ;; + -opened*) + os=-openedition + ;; + -os400*) + os=-os400 + ;; + -wince*) + os=-wince + ;; + -osfrose*) + os=-osfrose + ;; + -osf*) + os=-osf + ;; + -utek*) + os=-bsd + ;; + -dynix*) + os=-bsd + ;; + -acis*) + os=-aos + ;; + -atheos*) + os=-atheos + ;; + -syllable*) + os=-syllable + ;; + -386bsd) + os=-bsd + ;; + -ctix* | -uts*) + os=-sysv + ;; + -nova*) + os=-rtmk-nova + ;; + -ns2 ) + os=-nextstep2 + ;; + -nsk*) + os=-nsk + ;; + # Preserve the version number of sinix5. + -sinix5.*) + os=`echo $os | sed -e 's|sinix|sysv|'` + ;; + -sinix*) + os=-sysv4 + ;; + -tpf*) + os=-tpf + ;; + -triton*) + os=-sysv3 + ;; + -oss*) + os=-sysv3 + ;; + -svr4) + os=-sysv4 + ;; + -svr3) + os=-sysv3 + ;; + -sysvr4) + os=-sysv4 + ;; + # This must come after -sysvr4. + -sysv*) + ;; + -ose*) + os=-ose + ;; + -es1800*) + os=-ose + ;; + -xenix) + os=-xenix + ;; + -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) + os=-mint + ;; + -aros*) + os=-aros + ;; + -zvmoe) + os=-zvmoe + ;; + -dicos*) + os=-dicos + ;; + -nacl*) + ;; + -none) + ;; + *) + # Get rid of the `-' at the beginning of $os. + os=`echo $os | sed 's/[^-]*-//'` + echo Invalid configuration \`$1\': system \`$os\' not recognized 1>&2 + exit 1 + ;; +esac +else + +# Here we handle the default operating systems that come with various machines. +# The value should be what the vendor currently ships out the door with their +# machine or put another way, the most popular os provided with the machine. + +# Note that if you're going to try to match "-MANUFACTURER" here (say, +# "-sun"), then you have to tell the case statement up towards the top +# that MANUFACTURER isn't an operating system. Otherwise, code above +# will signal an error saying that MANUFACTURER isn't an operating +# system, and we'll never get to this point. + +case $basic_machine in + score-*) + os=-elf + ;; + spu-*) + os=-elf + ;; + *-acorn) + os=-riscix1.2 + ;; + arm*-rebel) + os=-linux + ;; + arm*-semi) + os=-aout + ;; + c4x-* | tic4x-*) + os=-coff + ;; + c8051-*) + os=-elf + ;; + hexagon-*) + os=-elf + ;; + tic54x-*) + os=-coff + ;; + tic55x-*) + os=-coff + ;; + tic6x-*) + os=-coff + ;; + # This must come before the *-dec entry. + pdp10-*) + os=-tops20 + ;; + pdp11-*) + os=-none + ;; + *-dec | vax-*) + os=-ultrix4.2 + ;; + m68*-apollo) + os=-domain + ;; + i386-sun) + os=-sunos4.0.2 + ;; + m68000-sun) + os=-sunos3 + ;; + m68*-cisco) + os=-aout + ;; + mep-*) + os=-elf + ;; + mips*-cisco) + os=-elf + ;; + mips*-*) + os=-elf + ;; + or32-*) + os=-coff + ;; + *-tti) # must be before sparc entry or we get the wrong os. + os=-sysv3 + ;; + sparc-* | *-sun) + os=-sunos4.1.1 + ;; + *-be) + os=-beos + ;; + *-haiku) + os=-haiku + ;; + *-ibm) + os=-aix + ;; + *-knuth) + os=-mmixware + ;; + *-wec) + os=-proelf + ;; + *-winbond) + os=-proelf + ;; + *-oki) + os=-proelf + ;; + *-hp) + os=-hpux + ;; + *-hitachi) + os=-hiux + ;; + i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent) + os=-sysv + ;; + *-cbm) + os=-amigaos + ;; + *-dg) + os=-dgux + ;; + *-dolphin) + os=-sysv3 + ;; + m68k-ccur) + os=-rtu + ;; + m88k-omron*) + os=-luna + ;; + *-next ) + os=-nextstep + ;; + *-sequent) + os=-ptx + ;; + *-crds) + os=-unos + ;; + *-ns) + os=-genix + ;; + i370-*) + os=-mvs + ;; + *-next) + os=-nextstep3 + ;; + *-gould) + os=-sysv + ;; + *-highlevel) + os=-bsd + ;; + *-encore) + os=-bsd + ;; + *-sgi) + os=-irix + ;; + *-siemens) + os=-sysv4 + ;; + *-masscomp) + os=-rtu + ;; + f30[01]-fujitsu | f700-fujitsu) + os=-uxpv + ;; + *-rom68k) + os=-coff + ;; + *-*bug) + os=-coff + ;; + *-apple) + os=-macos + ;; + *-atari*) + os=-mint + ;; + *) + os=-none + ;; +esac +fi + +# Here we handle the case where we know the os, and the CPU type, but not the +# manufacturer. We pick the logical manufacturer. +vendor=unknown +case $basic_machine in + *-unknown) + case $os in + -riscix*) + vendor=acorn + ;; + -sunos*) + vendor=sun + ;; + -cnk*|-aix*) + vendor=ibm + ;; + -beos*) + vendor=be + ;; + -hpux*) + vendor=hp + ;; + -mpeix*) + vendor=hp + ;; + -hiux*) + vendor=hitachi + ;; + -unos*) + vendor=crds + ;; + -dgux*) + vendor=dg + ;; + -luna*) + vendor=omron + ;; + -genix*) + vendor=ns + ;; + -mvs* | -opened*) + vendor=ibm + ;; + -os400*) + vendor=ibm + ;; + -ptx*) + vendor=sequent + ;; + -tpf*) + vendor=ibm + ;; + -vxsim* | -vxworks* | -windiss*) + vendor=wrs + ;; + -aux*) + vendor=apple + ;; + -hms*) + vendor=hitachi + ;; + -mpw* | -macos*) + vendor=apple + ;; + -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) + vendor=atari + ;; + -vos*) + vendor=stratus + ;; + esac + basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"` + ;; +esac + +echo $basic_machine$os +exit + +# Local variables: +# eval: (add-hook 'write-file-hooks 'time-stamp) +# time-stamp-start: "timestamp='" +# time-stamp-format: "%:y-%02m-%02d" +# time-stamp-end: "'" +# End: diff --git a/libs/shapelib/configure b/libs/shapelib/configure new file mode 100755 index 0000000..0ceb379 --- /dev/null +++ b/libs/shapelib/configure @@ -0,0 +1,19184 @@ +#! /bin/sh +# Guess values for system-dependent variables and create Makefiles. +# Generated by GNU Autoconf 2.69 for shapelib 1.4.1. +# +# +# Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc. +# +# +# This configure script is free software; the Free Software Foundation +# gives unlimited permission to copy, distribute and modify it. +## -------------------- ## +## M4sh Initialization. ## +## -------------------- ## + +# Be more Bourne compatible +DUALCASE=1; export DUALCASE # for MKS sh +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : + emulate sh + NULLCMD=: + # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in #( + *posix*) : + set -o posix ;; #( + *) : + ;; +esac +fi + + +as_nl=' +' +export as_nl +# Printing a long string crashes Solaris 7 /usr/bin/printf. +as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' +as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo +as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo +# Prefer a ksh shell builtin over an external printf program on Solaris, +# but without wasting forks for bash or zsh. +if test -z "$BASH_VERSION$ZSH_VERSION" \ + && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then + as_echo='print -r --' + as_echo_n='print -rn --' +elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then + as_echo='printf %s\n' + as_echo_n='printf %s' +else + if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then + as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' + as_echo_n='/usr/ucb/echo -n' + else + as_echo_body='eval expr "X$1" : "X\\(.*\\)"' + as_echo_n_body='eval + arg=$1; + case $arg in #( + *"$as_nl"*) + expr "X$arg" : "X\\(.*\\)$as_nl"; + arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; + esac; + expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" + ' + export as_echo_n_body + as_echo_n='sh -c $as_echo_n_body as_echo' + fi + export as_echo_body + as_echo='sh -c $as_echo_body as_echo' +fi + +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + PATH_SEPARATOR=: + (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { + (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || + PATH_SEPARATOR=';' + } +fi + + +# IFS +# We need space, tab and new line, in precisely that order. Quoting is +# there to prevent editors from complaining about space-tab. +# (If _AS_PATH_WALK were called with IFS unset, it would disable word +# splitting by setting IFS to empty value.) +IFS=" "" $as_nl" + +# Find who we are. Look in the path if we contain no directory separator. +as_myself= +case $0 in #(( + *[\\/]* ) as_myself=$0 ;; + *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break + done +IFS=$as_save_IFS + + ;; +esac +# We did not find ourselves, most probably we were run as `sh COMMAND' +# in which case we are not to be found in the path. +if test "x$as_myself" = x; then + as_myself=$0 +fi +if test ! -f "$as_myself"; then + $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 + exit 1 +fi + +# Unset variables that we do not need and which cause bugs (e.g. in +# pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" +# suppresses any "Segmentation fault" message there. '((' could +# trigger a bug in pdksh 5.2.14. +for as_var in BASH_ENV ENV MAIL MAILPATH +do eval test x\${$as_var+set} = xset \ + && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : +done +PS1='$ ' +PS2='> ' +PS4='+ ' + +# NLS nuisances. +LC_ALL=C +export LC_ALL +LANGUAGE=C +export LANGUAGE + +# CDPATH. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + +# Use a proper internal environment variable to ensure we don't fall + # into an infinite loop, continuously re-executing ourselves. + if test x"${_as_can_reexec}" != xno && test "x$CONFIG_SHELL" != x; then + _as_can_reexec=no; export _as_can_reexec; + # We cannot yet assume a decent shell, so we have to provide a +# neutralization value for shells without unset; and this also +# works around shells that cannot unset nonexistent variables. +# Preserve -v and -x to the replacement shell. +BASH_ENV=/dev/null +ENV=/dev/null +(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV +case $- in # (((( + *v*x* | *x*v* ) as_opts=-vx ;; + *v* ) as_opts=-v ;; + *x* ) as_opts=-x ;; + * ) as_opts= ;; +esac +exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} +# Admittedly, this is quite paranoid, since all the known shells bail +# out after a failed `exec'. +$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2 +as_fn_exit 255 + fi + # We don't want this to propagate to other subprocesses. + { _as_can_reexec=; unset _as_can_reexec;} +if test "x$CONFIG_SHELL" = x; then + as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then : + emulate sh + NULLCMD=: + # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which + # is contrary to our usage. Disable this feature. + alias -g '\${1+\"\$@\"}'='\"\$@\"' + setopt NO_GLOB_SUBST +else + case \`(set -o) 2>/dev/null\` in #( + *posix*) : + set -o posix ;; #( + *) : + ;; +esac +fi +" + as_required="as_fn_return () { (exit \$1); } +as_fn_success () { as_fn_return 0; } +as_fn_failure () { as_fn_return 1; } +as_fn_ret_success () { return 0; } +as_fn_ret_failure () { return 1; } + +exitcode=0 +as_fn_success || { exitcode=1; echo as_fn_success failed.; } +as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; } +as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; } +as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; } +if ( set x; as_fn_ret_success y && test x = \"\$1\" ); then : + +else + exitcode=1; echo positional parameters were not saved. +fi +test x\$exitcode = x0 || exit 1 +test -x / || exit 1" + as_suggested=" as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO + as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO + eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" && + test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1 + + test -n \"\${ZSH_VERSION+set}\${BASH_VERSION+set}\" || ( + ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' + ECHO=\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO + ECHO=\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO + PATH=/empty FPATH=/empty; export PATH FPATH + test \"X\`printf %s \$ECHO\`\" = \"X\$ECHO\" \\ + || test \"X\`print -r -- \$ECHO\`\" = \"X\$ECHO\" ) || exit 1 +test \$(( 1 + 1 )) = 2 || exit 1" + if (eval "$as_required") 2>/dev/null; then : + as_have_required=yes +else + as_have_required=no +fi + if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null; then : + +else + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +as_found=false +for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + as_found=: + case $as_dir in #( + /*) + for as_base in sh bash ksh sh5; do + # Try only shells that exist, to save several forks. + as_shell=$as_dir/$as_base + if { test -f "$as_shell" || test -f "$as_shell.exe"; } && + { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$as_shell"; } 2>/dev/null; then : + CONFIG_SHELL=$as_shell as_have_required=yes + if { $as_echo "$as_bourne_compatible""$as_suggested" | as_run=a "$as_shell"; } 2>/dev/null; then : + break 2 +fi +fi + done;; + esac + as_found=false +done +$as_found || { if { test -f "$SHELL" || test -f "$SHELL.exe"; } && + { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$SHELL"; } 2>/dev/null; then : + CONFIG_SHELL=$SHELL as_have_required=yes +fi; } +IFS=$as_save_IFS + + + if test "x$CONFIG_SHELL" != x; then : + export CONFIG_SHELL + # We cannot yet assume a decent shell, so we have to provide a +# neutralization value for shells without unset; and this also +# works around shells that cannot unset nonexistent variables. +# Preserve -v and -x to the replacement shell. +BASH_ENV=/dev/null +ENV=/dev/null +(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV +case $- in # (((( + *v*x* | *x*v* ) as_opts=-vx ;; + *v* ) as_opts=-v ;; + *x* ) as_opts=-x ;; + * ) as_opts= ;; +esac +exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} +# Admittedly, this is quite paranoid, since all the known shells bail +# out after a failed `exec'. +$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2 +exit 255 +fi + + if test x$as_have_required = xno; then : + $as_echo "$0: This script requires a shell more modern than all" + $as_echo "$0: the shells that I found on your system." + if test x${ZSH_VERSION+set} = xset ; then + $as_echo "$0: In particular, zsh $ZSH_VERSION has bugs and should" + $as_echo "$0: be upgraded to zsh 4.3.4 or later." + else + $as_echo "$0: Please tell bug-autoconf@gnu.org about your system, +$0: including any error possibly output before this +$0: message. Then install a modern shell, or manually run +$0: the script under such a shell if you do have one." + fi + exit 1 +fi +fi +fi +SHELL=${CONFIG_SHELL-/bin/sh} +export SHELL +# Unset more variables known to interfere with behavior of common tools. +CLICOLOR_FORCE= GREP_OPTIONS= +unset CLICOLOR_FORCE GREP_OPTIONS + +## --------------------- ## +## M4sh Shell Functions. ## +## --------------------- ## +# as_fn_unset VAR +# --------------- +# Portably unset VAR. +as_fn_unset () +{ + { eval $1=; unset $1;} +} +as_unset=as_fn_unset + +# as_fn_set_status STATUS +# ----------------------- +# Set $? to STATUS, without forking. +as_fn_set_status () +{ + return $1 +} # as_fn_set_status + +# as_fn_exit STATUS +# ----------------- +# Exit the shell with STATUS, even in a "trap 0" or "set -e" context. +as_fn_exit () +{ + set +e + as_fn_set_status $1 + exit $1 +} # as_fn_exit + +# as_fn_mkdir_p +# ------------- +# Create "$as_dir" as a directory, including parents if necessary. +as_fn_mkdir_p () +{ + + case $as_dir in #( + -*) as_dir=./$as_dir;; + esac + test -d "$as_dir" || eval $as_mkdir_p || { + as_dirs= + while :; do + case $as_dir in #( + *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( + *) as_qdir=$as_dir;; + esac + as_dirs="'$as_qdir' $as_dirs" + as_dir=`$as_dirname -- "$as_dir" || +$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_dir" : 'X\(//\)[^/]' \| \ + X"$as_dir" : 'X\(//\)$' \| \ + X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$as_dir" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + test -d "$as_dir" && break + done + test -z "$as_dirs" || eval "mkdir $as_dirs" + } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" + + +} # as_fn_mkdir_p + +# as_fn_executable_p FILE +# ----------------------- +# Test if FILE is an executable regular file. +as_fn_executable_p () +{ + test -f "$1" && test -x "$1" +} # as_fn_executable_p +# as_fn_append VAR VALUE +# ---------------------- +# Append the text in VALUE to the end of the definition contained in VAR. Take +# advantage of any shell optimizations that allow amortized linear growth over +# repeated appends, instead of the typical quadratic growth present in naive +# implementations. +if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : + eval 'as_fn_append () + { + eval $1+=\$2 + }' +else + as_fn_append () + { + eval $1=\$$1\$2 + } +fi # as_fn_append + +# as_fn_arith ARG... +# ------------------ +# Perform arithmetic evaluation on the ARGs, and store the result in the +# global $as_val. Take advantage of shells that can avoid forks. The arguments +# must be portable across $(()) and expr. +if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : + eval 'as_fn_arith () + { + as_val=$(( $* )) + }' +else + as_fn_arith () + { + as_val=`expr "$@" || test $? -eq 1` + } +fi # as_fn_arith + + +# as_fn_error STATUS ERROR [LINENO LOG_FD] +# ---------------------------------------- +# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are +# provided, also output the error to LOG_FD, referencing LINENO. Then exit the +# script with STATUS, using 1 if that was 0. +as_fn_error () +{ + as_status=$1; test $as_status -eq 0 && as_status=1 + if test "$4"; then + as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 + fi + $as_echo "$as_me: error: $2" >&2 + as_fn_exit $as_status +} # as_fn_error + +if expr a : '\(a\)' >/dev/null 2>&1 && + test "X`expr 00001 : '.*\(...\)'`" = X001; then + as_expr=expr +else + as_expr=false +fi + +if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then + as_basename=basename +else + as_basename=false +fi + +if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then + as_dirname=dirname +else + as_dirname=false +fi + +as_me=`$as_basename -- "$0" || +$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ + X"$0" : 'X\(//\)$' \| \ + X"$0" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X/"$0" | + sed '/^.*\/\([^/][^/]*\)\/*$/{ + s//\1/ + q + } + /^X\/\(\/\/\)$/{ + s//\1/ + q + } + /^X\/\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + +# Avoid depending upon Character Ranges. +as_cr_letters='abcdefghijklmnopqrstuvwxyz' +as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' +as_cr_Letters=$as_cr_letters$as_cr_LETTERS +as_cr_digits='0123456789' +as_cr_alnum=$as_cr_Letters$as_cr_digits + + + as_lineno_1=$LINENO as_lineno_1a=$LINENO + as_lineno_2=$LINENO as_lineno_2a=$LINENO + eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" && + test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || { + # Blame Lee E. McMahon (1931-1989) for sed's syntax. :-) + sed -n ' + p + /[$]LINENO/= + ' <$as_myself | + sed ' + s/[$]LINENO.*/&-/ + t lineno + b + :lineno + N + :loop + s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ + t loop + s/-\n.*// + ' >$as_me.lineno && + chmod +x "$as_me.lineno" || + { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; } + + # If we had to re-execute with $CONFIG_SHELL, we're ensured to have + # already done that, so ensure we don't try to do so again and fall + # in an infinite loop. This has already happened in practice. + _as_can_reexec=no; export _as_can_reexec + # Don't try to exec as it changes $[0], causing all sort of problems + # (the dirname of $[0] is not the place where we might find the + # original and so on. Autoconf is especially sensitive to this). + . "./$as_me.lineno" + # Exit status is that of the last command. + exit +} + +ECHO_C= ECHO_N= ECHO_T= +case `echo -n x` in #((((( +-n*) + case `echo 'xy\c'` in + *c*) ECHO_T=' ';; # ECHO_T is single tab character. + xy) ECHO_C='\c';; + *) echo `echo ksh88 bug on AIX 6.1` > /dev/null + ECHO_T=' ';; + esac;; +*) + ECHO_N='-n';; +esac + +rm -f conf$$ conf$$.exe conf$$.file +if test -d conf$$.dir; then + rm -f conf$$.dir/conf$$.file +else + rm -f conf$$.dir + mkdir conf$$.dir 2>/dev/null +fi +if (echo >conf$$.file) 2>/dev/null; then + if ln -s conf$$.file conf$$ 2>/dev/null; then + as_ln_s='ln -s' + # ... but there are two gotchas: + # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. + # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. + # In both cases, we have to default to `cp -pR'. + ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || + as_ln_s='cp -pR' + elif ln conf$$.file conf$$ 2>/dev/null; then + as_ln_s=ln + else + as_ln_s='cp -pR' + fi +else + as_ln_s='cp -pR' +fi +rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file +rmdir conf$$.dir 2>/dev/null + +if mkdir -p . 2>/dev/null; then + as_mkdir_p='mkdir -p "$as_dir"' +else + test -d ./-p && rmdir ./-p + as_mkdir_p=false +fi + +as_test_x='test -x' +as_executable_p=as_fn_executable_p + +# Sed expression to map a string onto a valid CPP name. +as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" + +# Sed expression to map a string onto a valid variable name. +as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" + +SHELL=${CONFIG_SHELL-/bin/sh} + + +test -n "$DJDIR" || exec 7<&0 &1 + +# Name of the host. +# hostname on some systems (SVR3.2, old GNU/Linux) returns a bogus exit status, +# so uname gets run too. +ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` + +# +# Initializations. +# +ac_default_prefix=/usr/local +ac_clean_files= +ac_config_libobj_dir=. +LIBOBJS= +cross_compiling=no +subdirs= +MFLAGS= +MAKEFLAGS= + +# Identity of this package. +PACKAGE_NAME='shapelib' +PACKAGE_TARNAME='shapelib' +PACKAGE_VERSION='1.4.1' +PACKAGE_STRING='shapelib 1.4.1' +PACKAGE_BUGREPORT='' +PACKAGE_URL='' + +ac_unique_file="shapefil.h" +# Factoring default headers for most tests. +ac_includes_default="\ +#include +#ifdef HAVE_SYS_TYPES_H +# include +#endif +#ifdef HAVE_SYS_STAT_H +# include +#endif +#ifdef STDC_HEADERS +# include +# include +#else +# ifdef HAVE_STDLIB_H +# include +# endif +#endif +#ifdef HAVE_STRING_H +# if !defined STDC_HEADERS && defined HAVE_MEMORY_H +# include +# endif +# include +#endif +#ifdef HAVE_STRINGS_H +# include +#endif +#ifdef HAVE_INTTYPES_H +# include +#endif +#ifdef HAVE_STDINT_H +# include +#endif +#ifdef HAVE_UNISTD_H +# include +#endif" + +ac_subst_vars='am__EXEEXT_FALSE +am__EXEEXT_TRUE +LTLIBOBJS +LIBOBJS +PLATFORM_WIN32_FALSE +PLATFORM_WIN32_TRUE +LIBM +PROJ_LIBS +PROJ_CFLAGS +CXXCPP +CPP +LT_SYS_LIBRARY_PATH +OTOOL64 +OTOOL +LIPO +NMEDIT +DSYMUTIL +MANIFEST_TOOL +RANLIB +DLLTOOL +OBJDUMP +LN_S +NM +ac_ct_DUMPBIN +DUMPBIN +LD +FGREP +EGREP +GREP +SED +host_os +host_vendor +host_cpu +host +build_os +build_vendor +build_cpu +build +LIBTOOL +am__fastdepCXX_FALSE +am__fastdepCXX_TRUE +CXXDEPMODE +ac_ct_CXX +CXXFLAGS +CXX +SHAPELIB_SO_VERSION +am__fastdepCC_FALSE +am__fastdepCC_TRUE +CCDEPMODE +am__nodep +AMDEPBACKSLASH +AMDEP_FALSE +AMDEP_TRUE +am__quote +am__include +DEPDIR +OBJEXT +EXEEXT +ac_ct_CC +CPPFLAGS +LDFLAGS +CFLAGS +CC +ac_ct_AR +AR +AM_BACKSLASH +AM_DEFAULT_VERBOSITY +AM_DEFAULT_V +AM_V +am__untar +am__tar +AMTAR +am__leading_dot +SET_MAKE +AWK +mkdir_p +MKDIR_P +INSTALL_STRIP_PROGRAM +STRIP +install_sh +MAKEINFO +AUTOHEADER +AUTOMAKE +AUTOCONF +ACLOCAL +VERSION +PACKAGE +CYGPATH_W +am__isrc +INSTALL_DATA +INSTALL_SCRIPT +INSTALL_PROGRAM +target_alias +host_alias +build_alias +LIBS +ECHO_T +ECHO_N +ECHO_C +DEFS +mandir +localedir +libdir +psdir +pdfdir +dvidir +htmldir +infodir +docdir +oldincludedir +includedir +runstatedir +localstatedir +sharedstatedir +sysconfdir +datadir +datarootdir +libexecdir +sbindir +bindir +program_transform_name +prefix +exec_prefix +PACKAGE_URL +PACKAGE_BUGREPORT +PACKAGE_STRING +PACKAGE_VERSION +PACKAGE_TARNAME +PACKAGE_NAME +PATH_SEPARATOR +SHELL' +ac_subst_files='' +ac_user_opts=' +enable_option_checking +enable_silent_rules +enable_dependency_tracking +enable_shared +enable_static +with_pic +enable_fast_install +with_aix_soname +with_gnu_ld +with_sysroot +enable_libtool_lock +with_proj_cflags +with_proj_libs +' + ac_precious_vars='build_alias +host_alias +target_alias +CC +CFLAGS +LDFLAGS +LIBS +CPPFLAGS +CXX +CXXFLAGS +CCC +LT_SYS_LIBRARY_PATH +CPP +CXXCPP' + + +# Initialize some variables set by options. +ac_init_help= +ac_init_version=false +ac_unrecognized_opts= +ac_unrecognized_sep= +# The variables have the same names as the options, with +# dashes changed to underlines. +cache_file=/dev/null +exec_prefix=NONE +no_create= +no_recursion= +prefix=NONE +program_prefix=NONE +program_suffix=NONE +program_transform_name=s,x,x, +silent= +site= +srcdir= +verbose= +x_includes=NONE +x_libraries=NONE + +# Installation directory options. +# These are left unexpanded so users can "make install exec_prefix=/foo" +# and all the variables that are supposed to be based on exec_prefix +# by default will actually change. +# Use braces instead of parens because sh, perl, etc. also accept them. +# (The list follows the same order as the GNU Coding Standards.) +bindir='${exec_prefix}/bin' +sbindir='${exec_prefix}/sbin' +libexecdir='${exec_prefix}/libexec' +datarootdir='${prefix}/share' +datadir='${datarootdir}' +sysconfdir='${prefix}/etc' +sharedstatedir='${prefix}/com' +localstatedir='${prefix}/var' +runstatedir='${localstatedir}/run' +includedir='${prefix}/include' +oldincludedir='/usr/include' +docdir='${datarootdir}/doc/${PACKAGE_TARNAME}' +infodir='${datarootdir}/info' +htmldir='${docdir}' +dvidir='${docdir}' +pdfdir='${docdir}' +psdir='${docdir}' +libdir='${exec_prefix}/lib' +localedir='${datarootdir}/locale' +mandir='${datarootdir}/man' + +ac_prev= +ac_dashdash= +for ac_option +do + # If the previous option needs an argument, assign it. + if test -n "$ac_prev"; then + eval $ac_prev=\$ac_option + ac_prev= + continue + fi + + case $ac_option in + *=?*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;; + *=) ac_optarg= ;; + *) ac_optarg=yes ;; + esac + + # Accept the important Cygnus configure options, so we can diagnose typos. + + case $ac_dashdash$ac_option in + --) + ac_dashdash=yes ;; + + -bindir | --bindir | --bindi | --bind | --bin | --bi) + ac_prev=bindir ;; + -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) + bindir=$ac_optarg ;; + + -build | --build | --buil | --bui | --bu) + ac_prev=build_alias ;; + -build=* | --build=* | --buil=* | --bui=* | --bu=*) + build_alias=$ac_optarg ;; + + -cache-file | --cache-file | --cache-fil | --cache-fi \ + | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) + ac_prev=cache_file ;; + -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ + | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) + cache_file=$ac_optarg ;; + + --config-cache | -C) + cache_file=config.cache ;; + + -datadir | --datadir | --datadi | --datad) + ac_prev=datadir ;; + -datadir=* | --datadir=* | --datadi=* | --datad=*) + datadir=$ac_optarg ;; + + -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \ + | --dataroo | --dataro | --datar) + ac_prev=datarootdir ;; + -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \ + | --dataroot=* | --dataroo=* | --dataro=* | --datar=*) + datarootdir=$ac_optarg ;; + + -disable-* | --disable-*) + ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && + as_fn_error $? "invalid feature name: $ac_useropt" + ac_useropt_orig=$ac_useropt + ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in + *" +"enable_$ac_useropt" +"*) ;; + *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig" + ac_unrecognized_sep=', ';; + esac + eval enable_$ac_useropt=no ;; + + -docdir | --docdir | --docdi | --doc | --do) + ac_prev=docdir ;; + -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*) + docdir=$ac_optarg ;; + + -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv) + ac_prev=dvidir ;; + -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*) + dvidir=$ac_optarg ;; + + -enable-* | --enable-*) + ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && + as_fn_error $? "invalid feature name: $ac_useropt" + ac_useropt_orig=$ac_useropt + ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in + *" +"enable_$ac_useropt" +"*) ;; + *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig" + ac_unrecognized_sep=', ';; + esac + eval enable_$ac_useropt=\$ac_optarg ;; + + -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ + | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ + | --exec | --exe | --ex) + ac_prev=exec_prefix ;; + -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ + | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ + | --exec=* | --exe=* | --ex=*) + exec_prefix=$ac_optarg ;; + + -gas | --gas | --ga | --g) + # Obsolete; use --with-gas. + with_gas=yes ;; + + -help | --help | --hel | --he | -h) + ac_init_help=long ;; + -help=r* | --help=r* | --hel=r* | --he=r* | -hr*) + ac_init_help=recursive ;; + -help=s* | --help=s* | --hel=s* | --he=s* | -hs*) + ac_init_help=short ;; + + -host | --host | --hos | --ho) + ac_prev=host_alias ;; + -host=* | --host=* | --hos=* | --ho=*) + host_alias=$ac_optarg ;; + + -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht) + ac_prev=htmldir ;; + -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \ + | --ht=*) + htmldir=$ac_optarg ;; + + -includedir | --includedir | --includedi | --included | --include \ + | --includ | --inclu | --incl | --inc) + ac_prev=includedir ;; + -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ + | --includ=* | --inclu=* | --incl=* | --inc=*) + includedir=$ac_optarg ;; + + -infodir | --infodir | --infodi | --infod | --info | --inf) + ac_prev=infodir ;; + -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) + infodir=$ac_optarg ;; + + -libdir | --libdir | --libdi | --libd) + ac_prev=libdir ;; + -libdir=* | --libdir=* | --libdi=* | --libd=*) + libdir=$ac_optarg ;; + + -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ + | --libexe | --libex | --libe) + ac_prev=libexecdir ;; + -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ + | --libexe=* | --libex=* | --libe=*) + libexecdir=$ac_optarg ;; + + -localedir | --localedir | --localedi | --localed | --locale) + ac_prev=localedir ;; + -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*) + localedir=$ac_optarg ;; + + -localstatedir | --localstatedir | --localstatedi | --localstated \ + | --localstate | --localstat | --localsta | --localst | --locals) + ac_prev=localstatedir ;; + -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ + | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*) + localstatedir=$ac_optarg ;; + + -mandir | --mandir | --mandi | --mand | --man | --ma | --m) + ac_prev=mandir ;; + -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) + mandir=$ac_optarg ;; + + -nfp | --nfp | --nf) + # Obsolete; use --without-fp. + with_fp=no ;; + + -no-create | --no-create | --no-creat | --no-crea | --no-cre \ + | --no-cr | --no-c | -n) + no_create=yes ;; + + -no-recursion | --no-recursion | --no-recursio | --no-recursi \ + | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) + no_recursion=yes ;; + + -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ + | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ + | --oldin | --oldi | --old | --ol | --o) + ac_prev=oldincludedir ;; + -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ + | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ + | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) + oldincludedir=$ac_optarg ;; + + -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) + ac_prev=prefix ;; + -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) + prefix=$ac_optarg ;; + + -program-prefix | --program-prefix | --program-prefi | --program-pref \ + | --program-pre | --program-pr | --program-p) + ac_prev=program_prefix ;; + -program-prefix=* | --program-prefix=* | --program-prefi=* \ + | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) + program_prefix=$ac_optarg ;; + + -program-suffix | --program-suffix | --program-suffi | --program-suff \ + | --program-suf | --program-su | --program-s) + ac_prev=program_suffix ;; + -program-suffix=* | --program-suffix=* | --program-suffi=* \ + | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) + program_suffix=$ac_optarg ;; + + -program-transform-name | --program-transform-name \ + | --program-transform-nam | --program-transform-na \ + | --program-transform-n | --program-transform- \ + | --program-transform | --program-transfor \ + | --program-transfo | --program-transf \ + | --program-trans | --program-tran \ + | --progr-tra | --program-tr | --program-t) + ac_prev=program_transform_name ;; + -program-transform-name=* | --program-transform-name=* \ + | --program-transform-nam=* | --program-transform-na=* \ + | --program-transform-n=* | --program-transform-=* \ + | --program-transform=* | --program-transfor=* \ + | --program-transfo=* | --program-transf=* \ + | --program-trans=* | --program-tran=* \ + | --progr-tra=* | --program-tr=* | --program-t=*) + program_transform_name=$ac_optarg ;; + + -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd) + ac_prev=pdfdir ;; + -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*) + pdfdir=$ac_optarg ;; + + -psdir | --psdir | --psdi | --psd | --ps) + ac_prev=psdir ;; + -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*) + psdir=$ac_optarg ;; + + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil) + silent=yes ;; + + -runstatedir | --runstatedir | --runstatedi | --runstated \ + | --runstate | --runstat | --runsta | --runst | --runs \ + | --run | --ru | --r) + ac_prev=runstatedir ;; + -runstatedir=* | --runstatedir=* | --runstatedi=* | --runstated=* \ + | --runstate=* | --runstat=* | --runsta=* | --runst=* | --runs=* \ + | --run=* | --ru=* | --r=*) + runstatedir=$ac_optarg ;; + + -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) + ac_prev=sbindir ;; + -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ + | --sbi=* | --sb=*) + sbindir=$ac_optarg ;; + + -sharedstatedir | --sharedstatedir | --sharedstatedi \ + | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ + | --sharedst | --shareds | --shared | --share | --shar \ + | --sha | --sh) + ac_prev=sharedstatedir ;; + -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ + | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ + | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ + | --sha=* | --sh=*) + sharedstatedir=$ac_optarg ;; + + -site | --site | --sit) + ac_prev=site ;; + -site=* | --site=* | --sit=*) + site=$ac_optarg ;; + + -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) + ac_prev=srcdir ;; + -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) + srcdir=$ac_optarg ;; + + -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ + | --syscon | --sysco | --sysc | --sys | --sy) + ac_prev=sysconfdir ;; + -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ + | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) + sysconfdir=$ac_optarg ;; + + -target | --target | --targe | --targ | --tar | --ta | --t) + ac_prev=target_alias ;; + -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) + target_alias=$ac_optarg ;; + + -v | -verbose | --verbose | --verbos | --verbo | --verb) + verbose=yes ;; + + -version | --version | --versio | --versi | --vers | -V) + ac_init_version=: ;; + + -with-* | --with-*) + ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && + as_fn_error $? "invalid package name: $ac_useropt" + ac_useropt_orig=$ac_useropt + ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in + *" +"with_$ac_useropt" +"*) ;; + *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig" + ac_unrecognized_sep=', ';; + esac + eval with_$ac_useropt=\$ac_optarg ;; + + -without-* | --without-*) + ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && + as_fn_error $? "invalid package name: $ac_useropt" + ac_useropt_orig=$ac_useropt + ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in + *" +"with_$ac_useropt" +"*) ;; + *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig" + ac_unrecognized_sep=', ';; + esac + eval with_$ac_useropt=no ;; + + --x) + # Obsolete; use --with-x. + with_x=yes ;; + + -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ + | --x-incl | --x-inc | --x-in | --x-i) + ac_prev=x_includes ;; + -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ + | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) + x_includes=$ac_optarg ;; + + -x-libraries | --x-libraries | --x-librarie | --x-librari \ + | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) + ac_prev=x_libraries ;; + -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ + | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) + x_libraries=$ac_optarg ;; + + -*) as_fn_error $? "unrecognized option: \`$ac_option' +Try \`$0 --help' for more information" + ;; + + *=*) + ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` + # Reject names that are not valid shell variable names. + case $ac_envvar in #( + '' | [0-9]* | *[!_$as_cr_alnum]* ) + as_fn_error $? "invalid variable name: \`$ac_envvar'" ;; + esac + eval $ac_envvar=\$ac_optarg + export $ac_envvar ;; + + *) + # FIXME: should be removed in autoconf 3.0. + $as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2 + expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && + $as_echo "$as_me: WARNING: invalid host type: $ac_option" >&2 + : "${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}" + ;; + + esac +done + +if test -n "$ac_prev"; then + ac_option=--`echo $ac_prev | sed 's/_/-/g'` + as_fn_error $? "missing argument to $ac_option" +fi + +if test -n "$ac_unrecognized_opts"; then + case $enable_option_checking in + no) ;; + fatal) as_fn_error $? "unrecognized options: $ac_unrecognized_opts" ;; + *) $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;; + esac +fi + +# Check all directory arguments for consistency. +for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ + datadir sysconfdir sharedstatedir localstatedir includedir \ + oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ + libdir localedir mandir runstatedir +do + eval ac_val=\$$ac_var + # Remove trailing slashes. + case $ac_val in + */ ) + ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'` + eval $ac_var=\$ac_val;; + esac + # Be sure to have absolute directory names. + case $ac_val in + [\\/$]* | ?:[\\/]* ) continue;; + NONE | '' ) case $ac_var in *prefix ) continue;; esac;; + esac + as_fn_error $? "expected an absolute directory name for --$ac_var: $ac_val" +done + +# There might be people who depend on the old broken behavior: `$host' +# used to hold the argument of --host etc. +# FIXME: To remove some day. +build=$build_alias +host=$host_alias +target=$target_alias + +# FIXME: To remove some day. +if test "x$host_alias" != x; then + if test "x$build_alias" = x; then + cross_compiling=maybe + elif test "x$build_alias" != "x$host_alias"; then + cross_compiling=yes + fi +fi + +ac_tool_prefix= +test -n "$host_alias" && ac_tool_prefix=$host_alias- + +test "$silent" = yes && exec 6>/dev/null + + +ac_pwd=`pwd` && test -n "$ac_pwd" && +ac_ls_di=`ls -di .` && +ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` || + as_fn_error $? "working directory cannot be determined" +test "X$ac_ls_di" = "X$ac_pwd_ls_di" || + as_fn_error $? "pwd does not report name of working directory" + + +# Find the source files, if location was not specified. +if test -z "$srcdir"; then + ac_srcdir_defaulted=yes + # Try the directory containing this script, then the parent directory. + ac_confdir=`$as_dirname -- "$as_myself" || +$as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_myself" : 'X\(//\)[^/]' \| \ + X"$as_myself" : 'X\(//\)$' \| \ + X"$as_myself" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$as_myself" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + srcdir=$ac_confdir + if test ! -r "$srcdir/$ac_unique_file"; then + srcdir=.. + fi +else + ac_srcdir_defaulted=no +fi +if test ! -r "$srcdir/$ac_unique_file"; then + test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .." + as_fn_error $? "cannot find sources ($ac_unique_file) in $srcdir" +fi +ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work" +ac_abs_confdir=`( + cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error $? "$ac_msg" + pwd)` +# When building in place, set srcdir=. +if test "$ac_abs_confdir" = "$ac_pwd"; then + srcdir=. +fi +# Remove unnecessary trailing slashes from srcdir. +# Double slashes in file names in object file debugging info +# mess up M-x gdb in Emacs. +case $srcdir in +*/) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;; +esac +for ac_var in $ac_precious_vars; do + eval ac_env_${ac_var}_set=\${${ac_var}+set} + eval ac_env_${ac_var}_value=\$${ac_var} + eval ac_cv_env_${ac_var}_set=\${${ac_var}+set} + eval ac_cv_env_${ac_var}_value=\$${ac_var} +done + +# +# Report the --help message. +# +if test "$ac_init_help" = "long"; then + # Omit some internal or obsolete options to make the list less imposing. + # This message is too long to be a string in the A/UX 3.1 sh. + cat <<_ACEOF +\`configure' configures shapelib 1.4.1 to adapt to many kinds of systems. + +Usage: $0 [OPTION]... [VAR=VALUE]... + +To assign environment variables (e.g., CC, CFLAGS...), specify them as +VAR=VALUE. See below for descriptions of some of the useful variables. + +Defaults for the options are specified in brackets. + +Configuration: + -h, --help display this help and exit + --help=short display options specific to this package + --help=recursive display the short help of all the included packages + -V, --version display version information and exit + -q, --quiet, --silent do not print \`checking ...' messages + --cache-file=FILE cache test results in FILE [disabled] + -C, --config-cache alias for \`--cache-file=config.cache' + -n, --no-create do not create output files + --srcdir=DIR find the sources in DIR [configure dir or \`..'] + +Installation directories: + --prefix=PREFIX install architecture-independent files in PREFIX + [$ac_default_prefix] + --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX + [PREFIX] + +By default, \`make install' will install all the files in +\`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify +an installation prefix other than \`$ac_default_prefix' using \`--prefix', +for instance \`--prefix=\$HOME'. + +For better control, use the options below. + +Fine tuning of the installation directories: + --bindir=DIR user executables [EPREFIX/bin] + --sbindir=DIR system admin executables [EPREFIX/sbin] + --libexecdir=DIR program executables [EPREFIX/libexec] + --sysconfdir=DIR read-only single-machine data [PREFIX/etc] + --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] + --localstatedir=DIR modifiable single-machine data [PREFIX/var] + --runstatedir=DIR modifiable per-process data [LOCALSTATEDIR/run] + --libdir=DIR object code libraries [EPREFIX/lib] + --includedir=DIR C header files [PREFIX/include] + --oldincludedir=DIR C header files for non-gcc [/usr/include] + --datarootdir=DIR read-only arch.-independent data root [PREFIX/share] + --datadir=DIR read-only architecture-independent data [DATAROOTDIR] + --infodir=DIR info documentation [DATAROOTDIR/info] + --localedir=DIR locale-dependent data [DATAROOTDIR/locale] + --mandir=DIR man documentation [DATAROOTDIR/man] + --docdir=DIR documentation root [DATAROOTDIR/doc/shapelib] + --htmldir=DIR html documentation [DOCDIR] + --dvidir=DIR dvi documentation [DOCDIR] + --pdfdir=DIR pdf documentation [DOCDIR] + --psdir=DIR ps documentation [DOCDIR] +_ACEOF + + cat <<\_ACEOF + +Program names: + --program-prefix=PREFIX prepend PREFIX to installed program names + --program-suffix=SUFFIX append SUFFIX to installed program names + --program-transform-name=PROGRAM run sed PROGRAM on installed program names + +System types: + --build=BUILD configure for building on BUILD [guessed] + --host=HOST cross-compile to build programs to run on HOST [BUILD] +_ACEOF +fi + +if test -n "$ac_init_help"; then + case $ac_init_help in + short | recursive ) echo "Configuration of shapelib 1.4.1:";; + esac + cat <<\_ACEOF + +Optional Features: + --disable-option-checking ignore unrecognized --enable/--with options + --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) + --enable-FEATURE[=ARG] include FEATURE [ARG=yes] + --enable-silent-rules less verbose build output (undo: "make V=1") + --disable-silent-rules verbose build output (undo: "make V=0") + --enable-dependency-tracking + do not reject slow dependency extractors + --disable-dependency-tracking + speeds up one-time build + --enable-shared[=PKGS] build shared libraries [default=yes] + --enable-static[=PKGS] build static libraries [default=yes] + --enable-fast-install[=PKGS] + optimize for fast installation [default=yes] + --disable-libtool-lock avoid locking (might break parallel builds) + +Optional Packages: + --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] + --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) + --with-pic[=PKGS] try to use only PIC/non-PIC objects [default=use + both] + --with-aix-soname=aix|svr4|both + shared library versioning (aka "SONAME") variant to + provide on AIX, [default=aix]. + --with-gnu-ld assume the C compiler uses GNU ld [default=no] + --with-sysroot[=DIR] Search for dependent libraries within DIR (or the + compiler's sysroot if not specified). + --with-proj-cflags CFLAGS for the PROJ.4 headers + --with-proj-libs LIBS for the PROJ.4 libraries + +Some influential environment variables: + CC C compiler command + CFLAGS C compiler flags + LDFLAGS linker flags, e.g. -L if you have libraries in a + nonstandard directory + LIBS libraries to pass to the linker, e.g. -l + CPPFLAGS (Objective) C/C++ preprocessor flags, e.g. -I if + you have headers in a nonstandard directory + CXX C++ compiler command + CXXFLAGS C++ compiler flags + LT_SYS_LIBRARY_PATH + User-defined run-time library search path. + CPP C preprocessor + CXXCPP C++ preprocessor + +Use these variables to override the choices made by `configure' or to help +it to find libraries and programs with nonstandard names/locations. + +Report bugs to the package provider. +_ACEOF +ac_status=$? +fi + +if test "$ac_init_help" = "recursive"; then + # If there are subdirs, report their specific --help. + for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue + test -d "$ac_dir" || + { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } || + continue + ac_builddir=. + +case "$ac_dir" in +.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; +*) + ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` + # A ".." for each directory in $ac_dir_suffix. + ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` + case $ac_top_builddir_sub in + "") ac_top_builddir_sub=. ac_top_build_prefix= ;; + *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; + esac ;; +esac +ac_abs_top_builddir=$ac_pwd +ac_abs_builddir=$ac_pwd$ac_dir_suffix +# for backward compatibility: +ac_top_builddir=$ac_top_build_prefix + +case $srcdir in + .) # We are building in place. + ac_srcdir=. + ac_top_srcdir=$ac_top_builddir_sub + ac_abs_top_srcdir=$ac_pwd ;; + [\\/]* | ?:[\\/]* ) # Absolute name. + ac_srcdir=$srcdir$ac_dir_suffix; + ac_top_srcdir=$srcdir + ac_abs_top_srcdir=$srcdir ;; + *) # Relative name. + ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix + ac_top_srcdir=$ac_top_build_prefix$srcdir + ac_abs_top_srcdir=$ac_pwd/$srcdir ;; +esac +ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix + + cd "$ac_dir" || { ac_status=$?; continue; } + # Check for guested configure. + if test -f "$ac_srcdir/configure.gnu"; then + echo && + $SHELL "$ac_srcdir/configure.gnu" --help=recursive + elif test -f "$ac_srcdir/configure"; then + echo && + $SHELL "$ac_srcdir/configure" --help=recursive + else + $as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 + fi || ac_status=$? + cd "$ac_pwd" || { ac_status=$?; break; } + done +fi + +test -n "$ac_init_help" && exit $ac_status +if $ac_init_version; then + cat <<\_ACEOF +shapelib configure 1.4.1 +generated by GNU Autoconf 2.69 + +Copyright (C) 2012 Free Software Foundation, Inc. +This configure script is free software; the Free Software Foundation +gives unlimited permission to copy, distribute and modify it. +_ACEOF + exit +fi + +## ------------------------ ## +## Autoconf initialization. ## +## ------------------------ ## + +# ac_fn_c_try_compile LINENO +# -------------------------- +# Try to compile conftest.$ac_ext, and return whether this succeeded. +ac_fn_c_try_compile () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + rm -f conftest.$ac_objext + if { { ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_compile") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + grep -v '^ *+' conftest.err >conftest.er1 + cat conftest.er1 >&5 + mv -f conftest.er1 conftest.err + fi + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then : + ac_retval=0 +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=1 +fi + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval + +} # ac_fn_c_try_compile + +# ac_fn_cxx_try_compile LINENO +# ---------------------------- +# Try to compile conftest.$ac_ext, and return whether this succeeded. +ac_fn_cxx_try_compile () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + rm -f conftest.$ac_objext + if { { ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_compile") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + grep -v '^ *+' conftest.err >conftest.er1 + cat conftest.er1 >&5 + mv -f conftest.er1 conftest.err + fi + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && { + test -z "$ac_cxx_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then : + ac_retval=0 +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=1 +fi + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval + +} # ac_fn_cxx_try_compile + +# ac_fn_c_try_link LINENO +# ----------------------- +# Try to link conftest.$ac_ext, and return whether this succeeded. +ac_fn_c_try_link () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + rm -f conftest.$ac_objext conftest$ac_exeext + if { { ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_link") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + grep -v '^ *+' conftest.err >conftest.er1 + cat conftest.er1 >&5 + mv -f conftest.er1 conftest.err + fi + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && { + test "$cross_compiling" = yes || + test -x conftest$ac_exeext + }; then : + ac_retval=0 +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=1 +fi + # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information + # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would + # interfere with the next link command; also delete a directory that is + # left behind by Apple's compiler. We do this before executing the actions. + rm -rf conftest.dSYM conftest_ipa8_conftest.oo + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval + +} # ac_fn_c_try_link + +# ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES +# ------------------------------------------------------- +# Tests whether HEADER exists and can be compiled using the include files in +# INCLUDES, setting the cache variable VAR accordingly. +ac_fn_c_check_header_compile () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 +$as_echo_n "checking for $2... " >&6; } +if eval \${$3+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$4 +#include <$2> +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + eval "$3=yes" +else + eval "$3=no" +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +eval ac_res=\$$3 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + +} # ac_fn_c_check_header_compile + +# ac_fn_c_try_cpp LINENO +# ---------------------- +# Try to preprocess conftest.$ac_ext, and return whether this succeeded. +ac_fn_c_try_cpp () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + if { { ac_try="$ac_cpp conftest.$ac_ext" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + grep -v '^ *+' conftest.err >conftest.er1 + cat conftest.er1 >&5 + mv -f conftest.er1 conftest.err + fi + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } > conftest.i && { + test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || + test ! -s conftest.err + }; then : + ac_retval=0 +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=1 +fi + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval + +} # ac_fn_c_try_cpp + +# ac_fn_c_try_run LINENO +# ---------------------- +# Try to link conftest.$ac_ext, and return whether this succeeded. Assumes +# that executables *can* be run. +ac_fn_c_try_run () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + if { { ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_link") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && { ac_try='./conftest$ac_exeext' + { { case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + ac_retval=0 +else + $as_echo "$as_me: program exited with status $ac_status" >&5 + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=$ac_status +fi + rm -rf conftest.dSYM conftest_ipa8_conftest.oo + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval + +} # ac_fn_c_try_run + +# ac_fn_c_check_func LINENO FUNC VAR +# ---------------------------------- +# Tests whether FUNC exists, setting the cache variable VAR accordingly +ac_fn_c_check_func () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 +$as_echo_n "checking for $2... " >&6; } +if eval \${$3+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +/* Define $2 to an innocuous variant, in case declares $2. + For example, HP-UX 11i declares gettimeofday. */ +#define $2 innocuous_$2 + +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char $2 (); below. + Prefer to if __STDC__ is defined, since + exists even on freestanding compilers. */ + +#ifdef __STDC__ +# include +#else +# include +#endif + +#undef $2 + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char $2 (); +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined __stub_$2 || defined __stub___$2 +choke me +#endif + +int +main () +{ +return $2 (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + eval "$3=yes" +else + eval "$3=no" +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +eval ac_res=\$$3 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + +} # ac_fn_c_check_func + +# ac_fn_cxx_try_cpp LINENO +# ------------------------ +# Try to preprocess conftest.$ac_ext, and return whether this succeeded. +ac_fn_cxx_try_cpp () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + if { { ac_try="$ac_cpp conftest.$ac_ext" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + grep -v '^ *+' conftest.err >conftest.er1 + cat conftest.er1 >&5 + mv -f conftest.er1 conftest.err + fi + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } > conftest.i && { + test -z "$ac_cxx_preproc_warn_flag$ac_cxx_werror_flag" || + test ! -s conftest.err + }; then : + ac_retval=0 +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=1 +fi + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval + +} # ac_fn_cxx_try_cpp + +# ac_fn_cxx_try_link LINENO +# ------------------------- +# Try to link conftest.$ac_ext, and return whether this succeeded. +ac_fn_cxx_try_link () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + rm -f conftest.$ac_objext conftest$ac_exeext + if { { ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_link") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + grep -v '^ *+' conftest.err >conftest.er1 + cat conftest.er1 >&5 + mv -f conftest.er1 conftest.err + fi + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && { + test -z "$ac_cxx_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && { + test "$cross_compiling" = yes || + test -x conftest$ac_exeext + }; then : + ac_retval=0 +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=1 +fi + # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information + # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would + # interfere with the next link command; also delete a directory that is + # left behind by Apple's compiler. We do this before executing the actions. + rm -rf conftest.dSYM conftest_ipa8_conftest.oo + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval + +} # ac_fn_cxx_try_link +cat >config.log <<_ACEOF +This file contains any messages produced by compilers while +running configure, to aid debugging if configure makes a mistake. + +It was created by shapelib $as_me 1.4.1, which was +generated by GNU Autoconf 2.69. Invocation command line was + + $ $0 $@ + +_ACEOF +exec 5>>config.log +{ +cat <<_ASUNAME +## --------- ## +## Platform. ## +## --------- ## + +hostname = `(hostname || uname -n) 2>/dev/null | sed 1q` +uname -m = `(uname -m) 2>/dev/null || echo unknown` +uname -r = `(uname -r) 2>/dev/null || echo unknown` +uname -s = `(uname -s) 2>/dev/null || echo unknown` +uname -v = `(uname -v) 2>/dev/null || echo unknown` + +/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown` +/bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown` + +/bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` +/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` +/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` +/usr/bin/hostinfo = `(/usr/bin/hostinfo) 2>/dev/null || echo unknown` +/bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` +/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` +/bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` + +_ASUNAME + +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + $as_echo "PATH: $as_dir" + done +IFS=$as_save_IFS + +} >&5 + +cat >&5 <<_ACEOF + + +## ----------- ## +## Core tests. ## +## ----------- ## + +_ACEOF + + +# Keep a trace of the command line. +# Strip out --no-create and --no-recursion so they do not pile up. +# Strip out --silent because we don't want to record it for future runs. +# Also quote any args containing shell meta-characters. +# Make two passes to allow for proper duplicate-argument suppression. +ac_configure_args= +ac_configure_args0= +ac_configure_args1= +ac_must_keep_next=false +for ac_pass in 1 2 +do + for ac_arg + do + case $ac_arg in + -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;; + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil) + continue ;; + *\'*) + ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; + esac + case $ac_pass in + 1) as_fn_append ac_configure_args0 " '$ac_arg'" ;; + 2) + as_fn_append ac_configure_args1 " '$ac_arg'" + if test $ac_must_keep_next = true; then + ac_must_keep_next=false # Got value, back to normal. + else + case $ac_arg in + *=* | --config-cache | -C | -disable-* | --disable-* \ + | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \ + | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \ + | -with-* | --with-* | -without-* | --without-* | --x) + case "$ac_configure_args0 " in + "$ac_configure_args1"*" '$ac_arg' "* ) continue ;; + esac + ;; + -* ) ac_must_keep_next=true ;; + esac + fi + as_fn_append ac_configure_args " '$ac_arg'" + ;; + esac + done +done +{ ac_configure_args0=; unset ac_configure_args0;} +{ ac_configure_args1=; unset ac_configure_args1;} + +# When interrupted or exit'd, cleanup temporary files, and complete +# config.log. We remove comments because anyway the quotes in there +# would cause problems or look ugly. +# WARNING: Use '\'' to represent an apostrophe within the trap. +# WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug. +trap 'exit_status=$? + # Save into config.log some information that might help in debugging. + { + echo + + $as_echo "## ---------------- ## +## Cache variables. ## +## ---------------- ##" + echo + # The following way of writing the cache mishandles newlines in values, +( + for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do + eval ac_val=\$$ac_var + case $ac_val in #( + *${as_nl}*) + case $ac_var in #( + *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 +$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; + esac + case $ac_var in #( + _ | IFS | as_nl) ;; #( + BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( + *) { eval $ac_var=; unset $ac_var;} ;; + esac ;; + esac + done + (set) 2>&1 | + case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #( + *${as_nl}ac_space=\ *) + sed -n \ + "s/'\''/'\''\\\\'\'''\''/g; + s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p" + ;; #( + *) + sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" + ;; + esac | + sort +) + echo + + $as_echo "## ----------------- ## +## Output variables. ## +## ----------------- ##" + echo + for ac_var in $ac_subst_vars + do + eval ac_val=\$$ac_var + case $ac_val in + *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; + esac + $as_echo "$ac_var='\''$ac_val'\''" + done | sort + echo + + if test -n "$ac_subst_files"; then + $as_echo "## ------------------- ## +## File substitutions. ## +## ------------------- ##" + echo + for ac_var in $ac_subst_files + do + eval ac_val=\$$ac_var + case $ac_val in + *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; + esac + $as_echo "$ac_var='\''$ac_val'\''" + done | sort + echo + fi + + if test -s confdefs.h; then + $as_echo "## ----------- ## +## confdefs.h. ## +## ----------- ##" + echo + cat confdefs.h + echo + fi + test "$ac_signal" != 0 && + $as_echo "$as_me: caught signal $ac_signal" + $as_echo "$as_me: exit $exit_status" + } >&5 + rm -f core *.core core.conftest.* && + rm -f -r conftest* confdefs* conf$$* $ac_clean_files && + exit $exit_status +' 0 +for ac_signal in 1 2 13 15; do + trap 'ac_signal='$ac_signal'; as_fn_exit 1' $ac_signal +done +ac_signal=0 + +# confdefs.h avoids OS command line length limits that DEFS can exceed. +rm -f -r conftest* confdefs.h + +$as_echo "/* confdefs.h */" > confdefs.h + +# Predefined preprocessor variables. + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_NAME "$PACKAGE_NAME" +_ACEOF + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_TARNAME "$PACKAGE_TARNAME" +_ACEOF + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_VERSION "$PACKAGE_VERSION" +_ACEOF + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_STRING "$PACKAGE_STRING" +_ACEOF + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT" +_ACEOF + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_URL "$PACKAGE_URL" +_ACEOF + + +# Let the site file select an alternate cache file if it wants to. +# Prefer an explicitly selected file to automatically selected ones. +ac_site_file1=NONE +ac_site_file2=NONE +if test -n "$CONFIG_SITE"; then + # We do not want a PATH search for config.site. + case $CONFIG_SITE in #(( + -*) ac_site_file1=./$CONFIG_SITE;; + */*) ac_site_file1=$CONFIG_SITE;; + *) ac_site_file1=./$CONFIG_SITE;; + esac +elif test "x$prefix" != xNONE; then + ac_site_file1=$prefix/share/config.site + ac_site_file2=$prefix/etc/config.site +else + ac_site_file1=$ac_default_prefix/share/config.site + ac_site_file2=$ac_default_prefix/etc/config.site +fi +for ac_site_file in "$ac_site_file1" "$ac_site_file2" +do + test "x$ac_site_file" = xNONE && continue + if test /dev/null != "$ac_site_file" && test -r "$ac_site_file"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5 +$as_echo "$as_me: loading site script $ac_site_file" >&6;} + sed 's/^/| /' "$ac_site_file" >&5 + . "$ac_site_file" \ + || { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "failed to load site script $ac_site_file +See \`config.log' for more details" "$LINENO" 5; } + fi +done + +if test -r "$cache_file"; then + # Some versions of bash will fail to source /dev/null (special files + # actually), so we avoid doing that. DJGPP emulates it as a regular file. + if test /dev/null != "$cache_file" && test -f "$cache_file"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5 +$as_echo "$as_me: loading cache $cache_file" >&6;} + case $cache_file in + [\\/]* | ?:[\\/]* ) . "$cache_file";; + *) . "./$cache_file";; + esac + fi +else + { $as_echo "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5 +$as_echo "$as_me: creating cache $cache_file" >&6;} + >$cache_file +fi + +# Check that the precious variables saved in the cache have kept the same +# value. +ac_cache_corrupted=false +for ac_var in $ac_precious_vars; do + eval ac_old_set=\$ac_cv_env_${ac_var}_set + eval ac_new_set=\$ac_env_${ac_var}_set + eval ac_old_val=\$ac_cv_env_${ac_var}_value + eval ac_new_val=\$ac_env_${ac_var}_value + case $ac_old_set,$ac_new_set in + set,) + { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 +$as_echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} + ac_cache_corrupted=: ;; + ,set) + { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5 +$as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} + ac_cache_corrupted=: ;; + ,);; + *) + if test "x$ac_old_val" != "x$ac_new_val"; then + # differences in whitespace do not lead to failure. + ac_old_val_w=`echo x $ac_old_val` + ac_new_val_w=`echo x $ac_new_val` + if test "$ac_old_val_w" != "$ac_new_val_w"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5 +$as_echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} + ac_cache_corrupted=: + else + { $as_echo "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5 +$as_echo "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;} + eval $ac_var=\$ac_old_val + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: former value: \`$ac_old_val'" >&5 +$as_echo "$as_me: former value: \`$ac_old_val'" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: current value: \`$ac_new_val'" >&5 +$as_echo "$as_me: current value: \`$ac_new_val'" >&2;} + fi;; + esac + # Pass precious variables to config.status. + if test "$ac_new_set" = set; then + case $ac_new_val in + *\'*) ac_arg=$ac_var=`$as_echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; + *) ac_arg=$ac_var=$ac_new_val ;; + esac + case " $ac_configure_args " in + *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. + *) as_fn_append ac_configure_args " '$ac_arg'" ;; + esac + fi +done +if $ac_cache_corrupted; then + { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5 +$as_echo "$as_me: error: changes in the environment can compromise the build" >&2;} + as_fn_error $? "run \`make distclean' and/or \`rm $cache_file' and start over" "$LINENO" 5 +fi +## -------------------- ## +## Main body of script. ## +## -------------------- ## + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + + + + +am__api_version='1.15' + +ac_aux_dir= +for ac_dir in "$srcdir" "$srcdir/.." "$srcdir/../.."; do + if test -f "$ac_dir/install-sh"; then + ac_aux_dir=$ac_dir + ac_install_sh="$ac_aux_dir/install-sh -c" + break + elif test -f "$ac_dir/install.sh"; then + ac_aux_dir=$ac_dir + ac_install_sh="$ac_aux_dir/install.sh -c" + break + elif test -f "$ac_dir/shtool"; then + ac_aux_dir=$ac_dir + ac_install_sh="$ac_aux_dir/shtool install -c" + break + fi +done +if test -z "$ac_aux_dir"; then + as_fn_error $? "cannot find install-sh, install.sh, or shtool in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" "$LINENO" 5 +fi + +# These three variables are undocumented and unsupported, +# and are intended to be withdrawn in a future Autoconf release. +# They can cause serious problems if a builder's source tree is in a directory +# whose full name contains unusual characters. +ac_config_guess="$SHELL $ac_aux_dir/config.guess" # Please don't use this var. +ac_config_sub="$SHELL $ac_aux_dir/config.sub" # Please don't use this var. +ac_configure="$SHELL $ac_aux_dir/configure" # Please don't use this var. + + +# Find a good install program. We prefer a C program (faster), +# so one script is as good as another. But avoid the broken or +# incompatible versions: +# SysV /etc/install, /usr/sbin/install +# SunOS /usr/etc/install +# IRIX /sbin/install +# AIX /bin/install +# AmigaOS /C/install, which installs bootblocks on floppy discs +# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag +# AFS /usr/afsws/bin/install, which mishandles nonexistent args +# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" +# OS/2's system install, which has a completely different semantic +# ./install, which can be erroneously created by make from ./install.sh. +# Reject install programs that cannot install multiple files. +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5 +$as_echo_n "checking for a BSD-compatible install... " >&6; } +if test -z "$INSTALL"; then +if ${ac_cv_path_install+:} false; then : + $as_echo_n "(cached) " >&6 +else + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + # Account for people who put trailing slashes in PATH elements. +case $as_dir/ in #(( + ./ | .// | /[cC]/* | \ + /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ + ?:[\\/]os2[\\/]install[\\/]* | ?:[\\/]OS2[\\/]INSTALL[\\/]* | \ + /usr/ucb/* ) ;; + *) + # OSF1 and SCO ODT 3.0 have their own names for install. + # Don't use installbsd from OSF since it installs stuff as root + # by default. + for ac_prog in ginstall scoinst install; do + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then + if test $ac_prog = install && + grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then + # AIX install. It has an incompatible calling convention. + : + elif test $ac_prog = install && + grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then + # program-specific install script used by HP pwplus--don't use. + : + else + rm -rf conftest.one conftest.two conftest.dir + echo one > conftest.one + echo two > conftest.two + mkdir conftest.dir + if "$as_dir/$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir" && + test -s conftest.one && test -s conftest.two && + test -s conftest.dir/conftest.one && + test -s conftest.dir/conftest.two + then + ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c" + break 3 + fi + fi + fi + done + done + ;; +esac + + done +IFS=$as_save_IFS + +rm -rf conftest.one conftest.two conftest.dir + +fi + if test "${ac_cv_path_install+set}" = set; then + INSTALL=$ac_cv_path_install + else + # As a last resort, use the slow shell script. Don't cache a + # value for INSTALL within a source directory, because that will + # break other packages using the cache if that directory is + # removed, or if the value is a relative name. + INSTALL=$ac_install_sh + fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $INSTALL" >&5 +$as_echo "$INSTALL" >&6; } + +# Use test -z because SunOS4 sh mishandles braces in ${var-val}. +# It thinks the first close brace ends the variable substitution. +test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' + +test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' + +test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether build environment is sane" >&5 +$as_echo_n "checking whether build environment is sane... " >&6; } +# Reject unsafe characters in $srcdir or the absolute working directory +# name. Accept space and tab only in the latter. +am_lf=' +' +case `pwd` in + *[\\\"\#\$\&\'\`$am_lf]*) + as_fn_error $? "unsafe absolute working directory name" "$LINENO" 5;; +esac +case $srcdir in + *[\\\"\#\$\&\'\`$am_lf\ \ ]*) + as_fn_error $? "unsafe srcdir value: '$srcdir'" "$LINENO" 5;; +esac + +# Do 'set' in a subshell so we don't clobber the current shell's +# arguments. Must try -L first in case configure is actually a +# symlink; some systems play weird games with the mod time of symlinks +# (eg FreeBSD returns the mod time of the symlink's containing +# directory). +if ( + am_has_slept=no + for am_try in 1 2; do + echo "timestamp, slept: $am_has_slept" > conftest.file + set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null` + if test "$*" = "X"; then + # -L didn't work. + set X `ls -t "$srcdir/configure" conftest.file` + fi + if test "$*" != "X $srcdir/configure conftest.file" \ + && test "$*" != "X conftest.file $srcdir/configure"; then + + # If neither matched, then we have a broken ls. This can happen + # if, for instance, CONFIG_SHELL is bash and it inherits a + # broken ls alias from the environment. This has actually + # happened. Such a system could not be considered "sane". + as_fn_error $? "ls -t appears to fail. Make sure there is not a broken + alias in your environment" "$LINENO" 5 + fi + if test "$2" = conftest.file || test $am_try -eq 2; then + break + fi + # Just in case. + sleep 1 + am_has_slept=yes + done + test "$2" = conftest.file + ) +then + # Ok. + : +else + as_fn_error $? "newly created file is older than distributed files! +Check your system clock" "$LINENO" 5 +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } +# If we didn't sleep, we still need to ensure time stamps of config.status and +# generated files are strictly newer. +am_sleep_pid= +if grep 'slept: no' conftest.file >/dev/null 2>&1; then + ( sleep 1 ) & + am_sleep_pid=$! +fi + +rm -f conftest.file + +test "$program_prefix" != NONE && + program_transform_name="s&^&$program_prefix&;$program_transform_name" +# Use a double $ so make ignores it. +test "$program_suffix" != NONE && + program_transform_name="s&\$&$program_suffix&;$program_transform_name" +# Double any \ or $. +# By default was `s,x,x', remove it if useless. +ac_script='s/[\\$]/&&/g;s/;s,x,x,$//' +program_transform_name=`$as_echo "$program_transform_name" | sed "$ac_script"` + +# Expand $ac_aux_dir to an absolute path. +am_aux_dir=`cd "$ac_aux_dir" && pwd` + +if test x"${MISSING+set}" != xset; then + case $am_aux_dir in + *\ * | *\ *) + MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;; + *) + MISSING="\${SHELL} $am_aux_dir/missing" ;; + esac +fi +# Use eval to expand $SHELL +if eval "$MISSING --is-lightweight"; then + am_missing_run="$MISSING " +else + am_missing_run= + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: 'missing' script is too old or missing" >&5 +$as_echo "$as_me: WARNING: 'missing' script is too old or missing" >&2;} +fi + +if test x"${install_sh+set}" != xset; then + case $am_aux_dir in + *\ * | *\ *) + install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;; + *) + install_sh="\${SHELL} $am_aux_dir/install-sh" + esac +fi + +# Installed binaries are usually stripped using 'strip' when the user +# run "make install-strip". However 'strip' might not be the right +# tool to use in cross-compilation environments, therefore Automake +# will honor the 'STRIP' environment variable to overrule this program. +if test "$cross_compiling" != no; then + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. +set dummy ${ac_tool_prefix}strip; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_STRIP+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$STRIP"; then + ac_cv_prog_STRIP="$STRIP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_STRIP="${ac_tool_prefix}strip" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +STRIP=$ac_cv_prog_STRIP +if test -n "$STRIP"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5 +$as_echo "$STRIP" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_STRIP"; then + ac_ct_STRIP=$STRIP + # Extract the first word of "strip", so it can be a program name with args. +set dummy strip; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_STRIP+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_STRIP"; then + ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_STRIP="strip" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP +if test -n "$ac_ct_STRIP"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5 +$as_echo "$ac_ct_STRIP" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_STRIP" = x; then + STRIP=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + STRIP=$ac_ct_STRIP + fi +else + STRIP="$ac_cv_prog_STRIP" +fi + +fi +INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a thread-safe mkdir -p" >&5 +$as_echo_n "checking for a thread-safe mkdir -p... " >&6; } +if test -z "$MKDIR_P"; then + if ${ac_cv_path_mkdir+:} false; then : + $as_echo_n "(cached) " >&6 +else + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH$PATH_SEPARATOR/opt/sfw/bin +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_prog in mkdir gmkdir; do + for ac_exec_ext in '' $ac_executable_extensions; do + as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext" || continue + case `"$as_dir/$ac_prog$ac_exec_ext" --version 2>&1` in #( + 'mkdir (GNU coreutils) '* | \ + 'mkdir (coreutils) '* | \ + 'mkdir (fileutils) '4.1*) + ac_cv_path_mkdir=$as_dir/$ac_prog$ac_exec_ext + break 3;; + esac + done + done + done +IFS=$as_save_IFS + +fi + + test -d ./--version && rmdir ./--version + if test "${ac_cv_path_mkdir+set}" = set; then + MKDIR_P="$ac_cv_path_mkdir -p" + else + # As a last resort, use the slow shell script. Don't cache a + # value for MKDIR_P within a source directory, because that will + # break other packages using the cache if that directory is + # removed, or if the value is a relative name. + MKDIR_P="$ac_install_sh -d" + fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $MKDIR_P" >&5 +$as_echo "$MKDIR_P" >&6; } + +for ac_prog in gawk mawk nawk awk +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_AWK+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$AWK"; then + ac_cv_prog_AWK="$AWK" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_AWK="$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +AWK=$ac_cv_prog_AWK +if test -n "$AWK"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AWK" >&5 +$as_echo "$AWK" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$AWK" && break +done + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} sets \$(MAKE)" >&5 +$as_echo_n "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; } +set x ${MAKE-make} +ac_make=`$as_echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'` +if eval \${ac_cv_prog_make_${ac_make}_set+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat >conftest.make <<\_ACEOF +SHELL = /bin/sh +all: + @echo '@@@%%%=$(MAKE)=@@@%%%' +_ACEOF +# GNU make sometimes prints "make[1]: Entering ...", which would confuse us. +case `${MAKE-make} -f conftest.make 2>/dev/null` in + *@@@%%%=?*=@@@%%%*) + eval ac_cv_prog_make_${ac_make}_set=yes;; + *) + eval ac_cv_prog_make_${ac_make}_set=no;; +esac +rm -f conftest.make +fi +if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + SET_MAKE= +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + SET_MAKE="MAKE=${MAKE-make}" +fi + +rm -rf .tst 2>/dev/null +mkdir .tst 2>/dev/null +if test -d .tst; then + am__leading_dot=. +else + am__leading_dot=_ +fi +rmdir .tst 2>/dev/null + +# Check whether --enable-silent-rules was given. +if test "${enable_silent_rules+set}" = set; then : + enableval=$enable_silent_rules; +fi + +case $enable_silent_rules in # ((( + yes) AM_DEFAULT_VERBOSITY=0;; + no) AM_DEFAULT_VERBOSITY=1;; + *) AM_DEFAULT_VERBOSITY=1;; +esac +am_make=${MAKE-make} +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $am_make supports nested variables" >&5 +$as_echo_n "checking whether $am_make supports nested variables... " >&6; } +if ${am_cv_make_support_nested_variables+:} false; then : + $as_echo_n "(cached) " >&6 +else + if $as_echo 'TRUE=$(BAR$(V)) +BAR0=false +BAR1=true +V=1 +am__doit: + @$(TRUE) +.PHONY: am__doit' | $am_make -f - >/dev/null 2>&1; then + am_cv_make_support_nested_variables=yes +else + am_cv_make_support_nested_variables=no +fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_make_support_nested_variables" >&5 +$as_echo "$am_cv_make_support_nested_variables" >&6; } +if test $am_cv_make_support_nested_variables = yes; then + AM_V='$(V)' + AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)' +else + AM_V=$AM_DEFAULT_VERBOSITY + AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY +fi +AM_BACKSLASH='\' + +if test "`cd $srcdir && pwd`" != "`pwd`"; then + # Use -I$(srcdir) only when $(srcdir) != ., so that make's output + # is not polluted with repeated "-I." + am__isrc=' -I$(srcdir)' + # test to see if srcdir already configured + if test -f $srcdir/config.status; then + as_fn_error $? "source directory already configured; run \"make distclean\" there first" "$LINENO" 5 + fi +fi + +# test whether we have cygpath +if test -z "$CYGPATH_W"; then + if (cygpath --version) >/dev/null 2>/dev/null; then + CYGPATH_W='cygpath -w' + else + CYGPATH_W=echo + fi +fi + + +# Define the identity of the package. + PACKAGE='shapelib' + VERSION='1.4.1' + + +cat >>confdefs.h <<_ACEOF +#define PACKAGE "$PACKAGE" +_ACEOF + + +cat >>confdefs.h <<_ACEOF +#define VERSION "$VERSION" +_ACEOF + +# Some tools Automake needs. + +ACLOCAL=${ACLOCAL-"${am_missing_run}aclocal-${am__api_version}"} + + +AUTOCONF=${AUTOCONF-"${am_missing_run}autoconf"} + + +AUTOMAKE=${AUTOMAKE-"${am_missing_run}automake-${am__api_version}"} + + +AUTOHEADER=${AUTOHEADER-"${am_missing_run}autoheader"} + + +MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"} + +# For better backward compatibility. To be removed once Automake 1.9.x +# dies out for good. For more background, see: +# +# +mkdir_p='$(MKDIR_P)' + +# We need awk for the "check" target (and possibly the TAP driver). The +# system "awk" is bad on some platforms. +# Always define AMTAR for backward compatibility. Yes, it's still used +# in the wild :-( We should find a proper way to deprecate it ... +AMTAR='$${TAR-tar}' + + +# We'll loop over all known methods to create a tar archive until one works. +_am_tools='gnutar pax cpio none' + +am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -' + + + + + + +# POSIX will say in a future version that running "rm -f" with no argument +# is OK; and we want to be able to make that assumption in our Makefile +# recipes. So use an aggressive probe to check that the usage we want is +# actually supported "in the wild" to an acceptable degree. +# See automake bug#10828. +# To make any issue more visible, cause the running configure to be aborted +# by default if the 'rm' program in use doesn't match our expectations; the +# user can still override this though. +if rm -f && rm -fr && rm -rf; then : OK; else + cat >&2 <<'END' +Oops! + +Your 'rm' program seems unable to run without file operands specified +on the command line, even when the '-f' option is present. This is contrary +to the behaviour of most rm programs out there, and not conforming with +the upcoming POSIX standard: + +Please tell bug-automake@gnu.org about your system, including the value +of your $PATH and any error possibly output before this message. This +can help us improve future automake versions. + +END + if test x"$ACCEPT_INFERIOR_RM_PROGRAM" = x"yes"; then + echo 'Configuration will proceed anyway, since you have set the' >&2 + echo 'ACCEPT_INFERIOR_RM_PROGRAM variable to "yes"' >&2 + echo >&2 + else + cat >&2 <<'END' +Aborting the configuration process, to ensure you take notice of the issue. + +You can download and install GNU coreutils to get an 'rm' implementation +that behaves properly: . + +If you want to complete the configuration process using your problematic +'rm' anyway, export the environment variable ACCEPT_INFERIOR_RM_PROGRAM +to "yes", and re-run configure. + +END + as_fn_error $? "Your 'rm' program is bad, sorry." "$LINENO" 5 + fi +fi + + +# Check whether --enable-silent-rules was given. +if test "${enable_silent_rules+set}" = set; then : + enableval=$enable_silent_rules; +fi + +case $enable_silent_rules in # ((( + yes) AM_DEFAULT_VERBOSITY=0;; + no) AM_DEFAULT_VERBOSITY=1;; + *) AM_DEFAULT_VERBOSITY=0;; +esac +am_make=${MAKE-make} +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $am_make supports nested variables" >&5 +$as_echo_n "checking whether $am_make supports nested variables... " >&6; } +if ${am_cv_make_support_nested_variables+:} false; then : + $as_echo_n "(cached) " >&6 +else + if $as_echo 'TRUE=$(BAR$(V)) +BAR0=false +BAR1=true +V=1 +am__doit: + @$(TRUE) +.PHONY: am__doit' | $am_make -f - >/dev/null 2>&1; then + am_cv_make_support_nested_variables=yes +else + am_cv_make_support_nested_variables=no +fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_make_support_nested_variables" >&5 +$as_echo "$am_cv_make_support_nested_variables" >&6; } +if test $am_cv_make_support_nested_variables = yes; then + AM_V='$(V)' + AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)' +else + AM_V=$AM_DEFAULT_VERBOSITY + AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY +fi +AM_BACKSLASH='\' + + +DEPDIR="${am__leading_dot}deps" + +ac_config_commands="$ac_config_commands depfiles" + + +am_make=${MAKE-make} +cat > confinc << 'END' +am__doit: + @echo this is the am__doit target +.PHONY: am__doit +END +# If we don't find an include directive, just comment out the code. +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for style of include used by $am_make" >&5 +$as_echo_n "checking for style of include used by $am_make... " >&6; } +am__include="#" +am__quote= +_am_result=none +# First try GNU make style include. +echo "include confinc" > confmf +# Ignore all kinds of additional output from 'make'. +case `$am_make -s -f confmf 2> /dev/null` in #( +*the\ am__doit\ target*) + am__include=include + am__quote= + _am_result=GNU + ;; +esac +# Now try BSD make style include. +if test "$am__include" = "#"; then + echo '.include "confinc"' > confmf + case `$am_make -s -f confmf 2> /dev/null` in #( + *the\ am__doit\ target*) + am__include=.include + am__quote="\"" + _am_result=BSD + ;; + esac +fi + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $_am_result" >&5 +$as_echo "$_am_result" >&6; } +rm -f confinc confmf + +# Check whether --enable-dependency-tracking was given. +if test "${enable_dependency_tracking+set}" = set; then : + enableval=$enable_dependency_tracking; +fi + +if test "x$enable_dependency_tracking" != xno; then + am_depcomp="$ac_aux_dir/depcomp" + AMDEPBACKSLASH='\' + am__nodep='_no' +fi + if test "x$enable_dependency_tracking" != xno; then + AMDEP_TRUE= + AMDEP_FALSE='#' +else + AMDEP_TRUE='#' + AMDEP_FALSE= +fi + + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. +set dummy ${ac_tool_prefix}gcc; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_CC+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="${ac_tool_prefix}gcc" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +$as_echo "$CC" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_CC"; then + ac_ct_CC=$CC + # Extract the first word of "gcc", so it can be a program name with args. +set dummy gcc; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_CC+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CC="gcc" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 +$as_echo "$ac_ct_CC" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_CC" = x; then + CC="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + CC=$ac_ct_CC + fi +else + CC="$ac_cv_prog_CC" +fi + +if test -z "$CC"; then + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. +set dummy ${ac_tool_prefix}cc; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_CC+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="${ac_tool_prefix}cc" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +$as_echo "$CC" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + fi +fi +if test -z "$CC"; then + # Extract the first word of "cc", so it can be a program name with args. +set dummy cc; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_CC+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else + ac_prog_rejected=no +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then + ac_prog_rejected=yes + continue + fi + ac_cv_prog_CC="cc" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +if test $ac_prog_rejected = yes; then + # We found a bogon in the path, so make sure we never use it. + set dummy $ac_cv_prog_CC + shift + if test $# != 0; then + # We chose a different compiler from the bogus one. + # However, it has the same basename, so the bogon will be chosen + # first if we set CC to just the basename; use the full file name. + shift + ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@" + fi +fi +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +$as_echo "$CC" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$CC"; then + if test -n "$ac_tool_prefix"; then + for ac_prog in cl.exe + do + # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. +set dummy $ac_tool_prefix$ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_CC+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="$ac_tool_prefix$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +$as_echo "$CC" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$CC" && break + done +fi +if test -z "$CC"; then + ac_ct_CC=$CC + for ac_prog in cl.exe +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_CC+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CC="$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 +$as_echo "$ac_ct_CC" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$ac_ct_CC" && break +done + + if test "x$ac_ct_CC" = x; then + CC="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + CC=$ac_ct_CC + fi +fi + +fi + + +test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "no acceptable C compiler found in \$PATH +See \`config.log' for more details" "$LINENO" 5; } + +# Provide some information about the compiler. +$as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5 +set X $ac_compile +ac_compiler=$2 +for ac_option in --version -v -V -qversion; do + { { ac_try="$ac_compiler $ac_option >&5" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_compiler $ac_option >&5") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + sed '10a\ +... rest of stderr output deleted ... + 10q' conftest.err >conftest.er1 + cat conftest.er1 >&5 + fi + rm -f conftest.er1 conftest.err + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } +done + +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +ac_clean_files_save=$ac_clean_files +ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out" +# Try to create an executable without -o first, disregard a.out. +# It will help us diagnose broken compilers, and finding out an intuition +# of exeext. +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler works" >&5 +$as_echo_n "checking whether the C compiler works... " >&6; } +ac_link_default=`$as_echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` + +# The possible output files: +ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*" + +ac_rmfiles= +for ac_file in $ac_files +do + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; + * ) ac_rmfiles="$ac_rmfiles $ac_file";; + esac +done +rm -f $ac_rmfiles + +if { { ac_try="$ac_link_default" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_link_default") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then : + # Autoconf-2.13 could set the ac_cv_exeext variable to `no'. +# So ignore a value of `no', otherwise this would lead to `EXEEXT = no' +# in a Makefile. We should not override ac_cv_exeext if it was cached, +# so that the user can short-circuit this test for compilers unknown to +# Autoconf. +for ac_file in $ac_files '' +do + test -f "$ac_file" || continue + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) + ;; + [ab].out ) + # We found the default executable, but exeext='' is most + # certainly right. + break;; + *.* ) + if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no; + then :; else + ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` + fi + # We set ac_cv_exeext here because the later test for it is not + # safe: cross compilers may not add the suffix if given an `-o' + # argument, so we may need to know it at that point already. + # Even if this section looks crufty: it has the advantage of + # actually working. + break;; + * ) + break;; + esac +done +test "$ac_cv_exeext" = no && ac_cv_exeext= + +else + ac_file='' +fi +if test -z "$ac_file"; then : + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +$as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error 77 "C compiler cannot create executables +See \`config.log' for more details" "$LINENO" 5; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler default output file name" >&5 +$as_echo_n "checking for C compiler default output file name... " >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5 +$as_echo "$ac_file" >&6; } +ac_exeext=$ac_cv_exeext + +rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out +ac_clean_files=$ac_clean_files_save +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5 +$as_echo_n "checking for suffix of executables... " >&6; } +if { { ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_link") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then : + # If both `conftest.exe' and `conftest' are `present' (well, observable) +# catch `conftest.exe'. For instance with Cygwin, `ls conftest' will +# work properly (i.e., refer to `conftest.exe'), while it won't with +# `rm'. +for ac_file in conftest.exe conftest conftest.*; do + test -f "$ac_file" || continue + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; + *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` + break;; + * ) break;; + esac +done +else + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "cannot compute suffix of executables: cannot compile and link +See \`config.log' for more details" "$LINENO" 5; } +fi +rm -f conftest conftest$ac_cv_exeext +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5 +$as_echo "$ac_cv_exeext" >&6; } + +rm -f conftest.$ac_ext +EXEEXT=$ac_cv_exeext +ac_exeext=$EXEEXT +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +int +main () +{ +FILE *f = fopen ("conftest.out", "w"); + return ferror (f) || fclose (f) != 0; + + ; + return 0; +} +_ACEOF +ac_clean_files="$ac_clean_files conftest.out" +# Check that the compiler produces executables we can run. If not, either +# the compiler is broken, or we cross compile. +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5 +$as_echo_n "checking whether we are cross compiling... " >&6; } +if test "$cross_compiling" != yes; then + { { ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_link") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } + if { ac_try='./conftest$ac_cv_exeext' + { { case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then + cross_compiling=no + else + if test "$cross_compiling" = maybe; then + cross_compiling=yes + else + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "cannot run C compiled programs. +If you meant to cross compile, use \`--host'. +See \`config.log' for more details" "$LINENO" 5; } + fi + fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5 +$as_echo "$cross_compiling" >&6; } + +rm -f conftest.$ac_ext conftest$ac_cv_exeext conftest.out +ac_clean_files=$ac_clean_files_save +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5 +$as_echo_n "checking for suffix of object files... " >&6; } +if ${ac_cv_objext+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.o conftest.obj +if { { ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_compile") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then : + for ac_file in conftest.o conftest.obj conftest.*; do + test -f "$ac_file" || continue; + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;; + *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` + break;; + esac +done +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "cannot compute suffix of object files: cannot compile +See \`config.log' for more details" "$LINENO" 5; } +fi +rm -f conftest.$ac_cv_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5 +$as_echo "$ac_cv_objext" >&6; } +OBJEXT=$ac_cv_objext +ac_objext=$OBJEXT +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5 +$as_echo_n "checking whether we are using the GNU C compiler... " >&6; } +if ${ac_cv_c_compiler_gnu+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ +#ifndef __GNUC__ + choke me +#endif + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_compiler_gnu=yes +else + ac_compiler_gnu=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +ac_cv_c_compiler_gnu=$ac_compiler_gnu + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5 +$as_echo "$ac_cv_c_compiler_gnu" >&6; } +if test $ac_compiler_gnu = yes; then + GCC=yes +else + GCC= +fi +ac_test_CFLAGS=${CFLAGS+set} +ac_save_CFLAGS=$CFLAGS +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5 +$as_echo_n "checking whether $CC accepts -g... " >&6; } +if ${ac_cv_prog_cc_g+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_save_c_werror_flag=$ac_c_werror_flag + ac_c_werror_flag=yes + ac_cv_prog_cc_g=no + CFLAGS="-g" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_prog_cc_g=yes +else + CFLAGS="" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + +else + ac_c_werror_flag=$ac_save_c_werror_flag + CFLAGS="-g" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_prog_cc_g=yes +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + ac_c_werror_flag=$ac_save_c_werror_flag +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5 +$as_echo "$ac_cv_prog_cc_g" >&6; } +if test "$ac_test_CFLAGS" = set; then + CFLAGS=$ac_save_CFLAGS +elif test $ac_cv_prog_cc_g = yes; then + if test "$GCC" = yes; then + CFLAGS="-g -O2" + else + CFLAGS="-g" + fi +else + if test "$GCC" = yes; then + CFLAGS="-O2" + else + CFLAGS= + fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5 +$as_echo_n "checking for $CC option to accept ISO C89... " >&6; } +if ${ac_cv_prog_cc_c89+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_cv_prog_cc_c89=no +ac_save_CC=$CC +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#include +struct stat; +/* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ +struct buf { int x; }; +FILE * (*rcsopen) (struct buf *, struct stat *, int); +static char *e (p, i) + char **p; + int i; +{ + return p[i]; +} +static char *f (char * (*g) (char **, int), char **p, ...) +{ + char *s; + va_list v; + va_start (v,p); + s = g (p, va_arg (v,int)); + va_end (v); + return s; +} + +/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has + function prototypes and stuff, but not '\xHH' hex character constants. + These don't provoke an error unfortunately, instead are silently treated + as 'x'. The following induces an error, until -std is added to get + proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an + array size at least. It's necessary to write '\x00'==0 to get something + that's true only with -std. */ +int osf4_cc_array ['\x00' == 0 ? 1 : -1]; + +/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters + inside strings and character constants. */ +#define FOO(x) 'x' +int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1]; + +int test (int i, double x); +struct s1 {int (*f) (int a);}; +struct s2 {int (*f) (double a);}; +int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); +int argc; +char **argv; +int +main () +{ +return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; + ; + return 0; +} +_ACEOF +for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \ + -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" +do + CC="$ac_save_CC $ac_arg" + if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_prog_cc_c89=$ac_arg +fi +rm -f core conftest.err conftest.$ac_objext + test "x$ac_cv_prog_cc_c89" != "xno" && break +done +rm -f conftest.$ac_ext +CC=$ac_save_CC + +fi +# AC_CACHE_VAL +case "x$ac_cv_prog_cc_c89" in + x) + { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 +$as_echo "none needed" >&6; } ;; + xno) + { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 +$as_echo "unsupported" >&6; } ;; + *) + CC="$CC $ac_cv_prog_cc_c89" + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5 +$as_echo "$ac_cv_prog_cc_c89" >&6; } ;; +esac +if test "x$ac_cv_prog_cc_c89" != xno; then : + +fi + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC understands -c and -o together" >&5 +$as_echo_n "checking whether $CC understands -c and -o together... " >&6; } +if ${am_cv_prog_cc_c_o+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF + # Make sure it works both with $CC and with simple cc. + # Following AC_PROG_CC_C_O, we do the test twice because some + # compilers refuse to overwrite an existing .o file with -o, + # though they will create one. + am_cv_prog_cc_c_o=yes + for am_i in 1 2; do + if { echo "$as_me:$LINENO: $CC -c conftest.$ac_ext -o conftest2.$ac_objext" >&5 + ($CC -c conftest.$ac_ext -o conftest2.$ac_objext) >&5 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } \ + && test -f conftest2.$ac_objext; then + : OK + else + am_cv_prog_cc_c_o=no + break + fi + done + rm -f core conftest* + unset am_i +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_prog_cc_c_o" >&5 +$as_echo "$am_cv_prog_cc_c_o" >&6; } +if test "$am_cv_prog_cc_c_o" != yes; then + # Losing compiler, so override with the script. + # FIXME: It is wrong to rewrite CC. + # But if we don't then we get into trouble of one sort or another. + # A longer-term fix would be to have automake use am__CC in this case, + # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)" + CC="$am_aux_dir/compile $CC" +fi +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + +depcc="$CC" am_compiler_list= + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5 +$as_echo_n "checking dependency style of $depcc... " >&6; } +if ${am_cv_CC_dependencies_compiler_type+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then + # We make a subdir and do the tests there. Otherwise we can end up + # making bogus files that we don't know about and never remove. For + # instance it was reported that on HP-UX the gcc test will end up + # making a dummy file named 'D' -- because '-MD' means "put the output + # in D". + rm -rf conftest.dir + mkdir conftest.dir + # Copy depcomp to subdir because otherwise we won't find it if we're + # using a relative directory. + cp "$am_depcomp" conftest.dir + cd conftest.dir + # We will build objects and dependencies in a subdirectory because + # it helps to detect inapplicable dependency modes. For instance + # both Tru64's cc and ICC support -MD to output dependencies as a + # side effect of compilation, but ICC will put the dependencies in + # the current directory while Tru64 will put them in the object + # directory. + mkdir sub + + am_cv_CC_dependencies_compiler_type=none + if test "$am_compiler_list" = ""; then + am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` + fi + am__universal=false + case " $depcc " in #( + *\ -arch\ *\ -arch\ *) am__universal=true ;; + esac + + for depmode in $am_compiler_list; do + # Setup a source with many dependencies, because some compilers + # like to wrap large dependency lists on column 80 (with \), and + # we should not choose a depcomp mode which is confused by this. + # + # We need to recreate these files for each test, as the compiler may + # overwrite some of them when testing with obscure command lines. + # This happens at least with the AIX C compiler. + : > sub/conftest.c + for i in 1 2 3 4 5 6; do + echo '#include "conftst'$i'.h"' >> sub/conftest.c + # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with + # Solaris 10 /bin/sh. + echo '/* dummy */' > sub/conftst$i.h + done + echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf + + # We check with '-c' and '-o' for the sake of the "dashmstdout" + # mode. It turns out that the SunPro C++ compiler does not properly + # handle '-M -o', and we need to detect this. Also, some Intel + # versions had trouble with output in subdirs. + am__obj=sub/conftest.${OBJEXT-o} + am__minus_obj="-o $am__obj" + case $depmode in + gcc) + # This depmode causes a compiler race in universal mode. + test "$am__universal" = false || continue + ;; + nosideeffect) + # After this tag, mechanisms are not by side-effect, so they'll + # only be used when explicitly requested. + if test "x$enable_dependency_tracking" = xyes; then + continue + else + break + fi + ;; + msvc7 | msvc7msys | msvisualcpp | msvcmsys) + # This compiler won't grok '-c -o', but also, the minuso test has + # not run yet. These depmodes are late enough in the game, and + # so weak that their functioning should not be impacted. + am__obj=conftest.${OBJEXT-o} + am__minus_obj= + ;; + none) break ;; + esac + if depmode=$depmode \ + source=sub/conftest.c object=$am__obj \ + depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ + $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ + >/dev/null 2>conftest.err && + grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && + grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && + grep $am__obj sub/conftest.Po > /dev/null 2>&1 && + ${MAKE-make} -s -f confmf > /dev/null 2>&1; then + # icc doesn't choke on unknown options, it will just issue warnings + # or remarks (even with -Werror). So we grep stderr for any message + # that says an option was ignored or not supported. + # When given -MP, icc 7.0 and 7.1 complain thusly: + # icc: Command line warning: ignoring option '-M'; no argument required + # The diagnosis changed in icc 8.0: + # icc: Command line remark: option '-MP' not supported + if (grep 'ignoring option' conftest.err || + grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else + am_cv_CC_dependencies_compiler_type=$depmode + break + fi + fi + done + + cd .. + rm -rf conftest.dir +else + am_cv_CC_dependencies_compiler_type=none +fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CC_dependencies_compiler_type" >&5 +$as_echo "$am_cv_CC_dependencies_compiler_type" >&6; } +CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type + + if + test "x$enable_dependency_tracking" != xno \ + && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then + am__fastdepCC_TRUE= + am__fastdepCC_FALSE='#' +else + am__fastdepCC_TRUE='#' + am__fastdepCC_FALSE= +fi + + + +if test -n "$ac_tool_prefix"; then + for ac_prog in ar lib "link -lib" + do + # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. +set dummy $ac_tool_prefix$ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_AR+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$AR"; then + ac_cv_prog_AR="$AR" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_AR="$ac_tool_prefix$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +AR=$ac_cv_prog_AR +if test -n "$AR"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AR" >&5 +$as_echo "$AR" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$AR" && break + done +fi +if test -z "$AR"; then + ac_ct_AR=$AR + for ac_prog in ar lib "link -lib" +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_AR+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_AR"; then + ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_AR="$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_AR=$ac_cv_prog_ac_ct_AR +if test -n "$ac_ct_AR"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AR" >&5 +$as_echo "$ac_ct_AR" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$ac_ct_AR" && break +done + + if test "x$ac_ct_AR" = x; then + AR="false" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + AR=$ac_ct_AR + fi +fi + +: ${AR=ar} + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking the archiver ($AR) interface" >&5 +$as_echo_n "checking the archiver ($AR) interface... " >&6; } +if ${am_cv_ar_interface+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + am_cv_ar_interface=ar + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int some_variable = 0; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + am_ar_try='$AR cru libconftest.a conftest.$ac_objext >&5' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$am_ar_try\""; } >&5 + (eval $am_ar_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } + if test "$ac_status" -eq 0; then + am_cv_ar_interface=ar + else + am_ar_try='$AR -NOLOGO -OUT:conftest.lib conftest.$ac_objext >&5' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$am_ar_try\""; } >&5 + (eval $am_ar_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } + if test "$ac_status" -eq 0; then + am_cv_ar_interface=lib + else + am_cv_ar_interface=unknown + fi + fi + rm -f conftest.lib libconftest.a + +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_ar_interface" >&5 +$as_echo "$am_cv_ar_interface" >&6; } + +case $am_cv_ar_interface in +ar) + ;; +lib) + # Microsoft lib, so override with the ar-lib wrapper script. + # FIXME: It is wrong to rewrite AR. + # But if we don't then we get into trouble of one sort or another. + # A longer-term fix would be to have automake use am__AR in this case, + # and then we could set am__AR="$am_aux_dir/ar-lib \$(AR)" or something + # similar. + AR="$am_aux_dir/ar-lib $AR" + ;; +unknown) + as_fn_error $? "could not determine $AR interface" "$LINENO" 5 + ;; +esac + + +SHAPELIB_SO_VERSION=2:2:0 + + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. +set dummy ${ac_tool_prefix}gcc; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_CC+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="${ac_tool_prefix}gcc" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +$as_echo "$CC" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_CC"; then + ac_ct_CC=$CC + # Extract the first word of "gcc", so it can be a program name with args. +set dummy gcc; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_CC+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CC="gcc" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 +$as_echo "$ac_ct_CC" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_CC" = x; then + CC="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + CC=$ac_ct_CC + fi +else + CC="$ac_cv_prog_CC" +fi + +if test -z "$CC"; then + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. +set dummy ${ac_tool_prefix}cc; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_CC+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="${ac_tool_prefix}cc" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +$as_echo "$CC" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + fi +fi +if test -z "$CC"; then + # Extract the first word of "cc", so it can be a program name with args. +set dummy cc; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_CC+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else + ac_prog_rejected=no +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then + ac_prog_rejected=yes + continue + fi + ac_cv_prog_CC="cc" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +if test $ac_prog_rejected = yes; then + # We found a bogon in the path, so make sure we never use it. + set dummy $ac_cv_prog_CC + shift + if test $# != 0; then + # We chose a different compiler from the bogus one. + # However, it has the same basename, so the bogon will be chosen + # first if we set CC to just the basename; use the full file name. + shift + ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@" + fi +fi +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +$as_echo "$CC" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$CC"; then + if test -n "$ac_tool_prefix"; then + for ac_prog in cl.exe + do + # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. +set dummy $ac_tool_prefix$ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_CC+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="$ac_tool_prefix$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +$as_echo "$CC" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$CC" && break + done +fi +if test -z "$CC"; then + ac_ct_CC=$CC + for ac_prog in cl.exe +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_CC+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CC="$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 +$as_echo "$ac_ct_CC" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$ac_ct_CC" && break +done + + if test "x$ac_ct_CC" = x; then + CC="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + CC=$ac_ct_CC + fi +fi + +fi + + +test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "no acceptable C compiler found in \$PATH +See \`config.log' for more details" "$LINENO" 5; } + +# Provide some information about the compiler. +$as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5 +set X $ac_compile +ac_compiler=$2 +for ac_option in --version -v -V -qversion; do + { { ac_try="$ac_compiler $ac_option >&5" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_compiler $ac_option >&5") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + sed '10a\ +... rest of stderr output deleted ... + 10q' conftest.err >conftest.er1 + cat conftest.er1 >&5 + fi + rm -f conftest.er1 conftest.err + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } +done + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5 +$as_echo_n "checking whether we are using the GNU C compiler... " >&6; } +if ${ac_cv_c_compiler_gnu+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ +#ifndef __GNUC__ + choke me +#endif + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_compiler_gnu=yes +else + ac_compiler_gnu=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +ac_cv_c_compiler_gnu=$ac_compiler_gnu + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5 +$as_echo "$ac_cv_c_compiler_gnu" >&6; } +if test $ac_compiler_gnu = yes; then + GCC=yes +else + GCC= +fi +ac_test_CFLAGS=${CFLAGS+set} +ac_save_CFLAGS=$CFLAGS +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5 +$as_echo_n "checking whether $CC accepts -g... " >&6; } +if ${ac_cv_prog_cc_g+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_save_c_werror_flag=$ac_c_werror_flag + ac_c_werror_flag=yes + ac_cv_prog_cc_g=no + CFLAGS="-g" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_prog_cc_g=yes +else + CFLAGS="" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + +else + ac_c_werror_flag=$ac_save_c_werror_flag + CFLAGS="-g" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_prog_cc_g=yes +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + ac_c_werror_flag=$ac_save_c_werror_flag +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5 +$as_echo "$ac_cv_prog_cc_g" >&6; } +if test "$ac_test_CFLAGS" = set; then + CFLAGS=$ac_save_CFLAGS +elif test $ac_cv_prog_cc_g = yes; then + if test "$GCC" = yes; then + CFLAGS="-g -O2" + else + CFLAGS="-g" + fi +else + if test "$GCC" = yes; then + CFLAGS="-O2" + else + CFLAGS= + fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5 +$as_echo_n "checking for $CC option to accept ISO C89... " >&6; } +if ${ac_cv_prog_cc_c89+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_cv_prog_cc_c89=no +ac_save_CC=$CC +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#include +struct stat; +/* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ +struct buf { int x; }; +FILE * (*rcsopen) (struct buf *, struct stat *, int); +static char *e (p, i) + char **p; + int i; +{ + return p[i]; +} +static char *f (char * (*g) (char **, int), char **p, ...) +{ + char *s; + va_list v; + va_start (v,p); + s = g (p, va_arg (v,int)); + va_end (v); + return s; +} + +/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has + function prototypes and stuff, but not '\xHH' hex character constants. + These don't provoke an error unfortunately, instead are silently treated + as 'x'. The following induces an error, until -std is added to get + proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an + array size at least. It's necessary to write '\x00'==0 to get something + that's true only with -std. */ +int osf4_cc_array ['\x00' == 0 ? 1 : -1]; + +/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters + inside strings and character constants. */ +#define FOO(x) 'x' +int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1]; + +int test (int i, double x); +struct s1 {int (*f) (int a);}; +struct s2 {int (*f) (double a);}; +int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); +int argc; +char **argv; +int +main () +{ +return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; + ; + return 0; +} +_ACEOF +for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \ + -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" +do + CC="$ac_save_CC $ac_arg" + if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_prog_cc_c89=$ac_arg +fi +rm -f core conftest.err conftest.$ac_objext + test "x$ac_cv_prog_cc_c89" != "xno" && break +done +rm -f conftest.$ac_ext +CC=$ac_save_CC + +fi +# AC_CACHE_VAL +case "x$ac_cv_prog_cc_c89" in + x) + { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 +$as_echo "none needed" >&6; } ;; + xno) + { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 +$as_echo "unsupported" >&6; } ;; + *) + CC="$CC $ac_cv_prog_cc_c89" + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5 +$as_echo "$ac_cv_prog_cc_c89" >&6; } ;; +esac +if test "x$ac_cv_prog_cc_c89" != xno; then : + +fi + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC understands -c and -o together" >&5 +$as_echo_n "checking whether $CC understands -c and -o together... " >&6; } +if ${am_cv_prog_cc_c_o+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF + # Make sure it works both with $CC and with simple cc. + # Following AC_PROG_CC_C_O, we do the test twice because some + # compilers refuse to overwrite an existing .o file with -o, + # though they will create one. + am_cv_prog_cc_c_o=yes + for am_i in 1 2; do + if { echo "$as_me:$LINENO: $CC -c conftest.$ac_ext -o conftest2.$ac_objext" >&5 + ($CC -c conftest.$ac_ext -o conftest2.$ac_objext) >&5 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } \ + && test -f conftest2.$ac_objext; then + : OK + else + am_cv_prog_cc_c_o=no + break + fi + done + rm -f core conftest* + unset am_i +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_prog_cc_c_o" >&5 +$as_echo "$am_cv_prog_cc_c_o" >&6; } +if test "$am_cv_prog_cc_c_o" != yes; then + # Losing compiler, so override with the script. + # FIXME: It is wrong to rewrite CC. + # But if we don't then we get into trouble of one sort or another. + # A longer-term fix would be to have automake use am__CC in this case, + # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)" + CC="$am_aux_dir/compile $CC" +fi +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + +depcc="$CC" am_compiler_list= + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5 +$as_echo_n "checking dependency style of $depcc... " >&6; } +if ${am_cv_CC_dependencies_compiler_type+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then + # We make a subdir and do the tests there. Otherwise we can end up + # making bogus files that we don't know about and never remove. For + # instance it was reported that on HP-UX the gcc test will end up + # making a dummy file named 'D' -- because '-MD' means "put the output + # in D". + rm -rf conftest.dir + mkdir conftest.dir + # Copy depcomp to subdir because otherwise we won't find it if we're + # using a relative directory. + cp "$am_depcomp" conftest.dir + cd conftest.dir + # We will build objects and dependencies in a subdirectory because + # it helps to detect inapplicable dependency modes. For instance + # both Tru64's cc and ICC support -MD to output dependencies as a + # side effect of compilation, but ICC will put the dependencies in + # the current directory while Tru64 will put them in the object + # directory. + mkdir sub + + am_cv_CC_dependencies_compiler_type=none + if test "$am_compiler_list" = ""; then + am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` + fi + am__universal=false + case " $depcc " in #( + *\ -arch\ *\ -arch\ *) am__universal=true ;; + esac + + for depmode in $am_compiler_list; do + # Setup a source with many dependencies, because some compilers + # like to wrap large dependency lists on column 80 (with \), and + # we should not choose a depcomp mode which is confused by this. + # + # We need to recreate these files for each test, as the compiler may + # overwrite some of them when testing with obscure command lines. + # This happens at least with the AIX C compiler. + : > sub/conftest.c + for i in 1 2 3 4 5 6; do + echo '#include "conftst'$i'.h"' >> sub/conftest.c + # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with + # Solaris 10 /bin/sh. + echo '/* dummy */' > sub/conftst$i.h + done + echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf + + # We check with '-c' and '-o' for the sake of the "dashmstdout" + # mode. It turns out that the SunPro C++ compiler does not properly + # handle '-M -o', and we need to detect this. Also, some Intel + # versions had trouble with output in subdirs. + am__obj=sub/conftest.${OBJEXT-o} + am__minus_obj="-o $am__obj" + case $depmode in + gcc) + # This depmode causes a compiler race in universal mode. + test "$am__universal" = false || continue + ;; + nosideeffect) + # After this tag, mechanisms are not by side-effect, so they'll + # only be used when explicitly requested. + if test "x$enable_dependency_tracking" = xyes; then + continue + else + break + fi + ;; + msvc7 | msvc7msys | msvisualcpp | msvcmsys) + # This compiler won't grok '-c -o', but also, the minuso test has + # not run yet. These depmodes are late enough in the game, and + # so weak that their functioning should not be impacted. + am__obj=conftest.${OBJEXT-o} + am__minus_obj= + ;; + none) break ;; + esac + if depmode=$depmode \ + source=sub/conftest.c object=$am__obj \ + depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ + $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ + >/dev/null 2>conftest.err && + grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && + grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && + grep $am__obj sub/conftest.Po > /dev/null 2>&1 && + ${MAKE-make} -s -f confmf > /dev/null 2>&1; then + # icc doesn't choke on unknown options, it will just issue warnings + # or remarks (even with -Werror). So we grep stderr for any message + # that says an option was ignored or not supported. + # When given -MP, icc 7.0 and 7.1 complain thusly: + # icc: Command line warning: ignoring option '-M'; no argument required + # The diagnosis changed in icc 8.0: + # icc: Command line remark: option '-MP' not supported + if (grep 'ignoring option' conftest.err || + grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else + am_cv_CC_dependencies_compiler_type=$depmode + break + fi + fi + done + + cd .. + rm -rf conftest.dir +else + am_cv_CC_dependencies_compiler_type=none +fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CC_dependencies_compiler_type" >&5 +$as_echo "$am_cv_CC_dependencies_compiler_type" >&6; } +CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type + + if + test "x$enable_dependency_tracking" != xno \ + && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then + am__fastdepCC_TRUE= + am__fastdepCC_FALSE='#' +else + am__fastdepCC_TRUE='#' + am__fastdepCC_FALSE= +fi + + +ac_ext=cpp +ac_cpp='$CXXCPP $CPPFLAGS' +ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_cxx_compiler_gnu +if test -z "$CXX"; then + if test -n "$CCC"; then + CXX=$CCC + else + if test -n "$ac_tool_prefix"; then + for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC + do + # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. +set dummy $ac_tool_prefix$ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_CXX+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$CXX"; then + ac_cv_prog_CXX="$CXX" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_CXX="$ac_tool_prefix$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +CXX=$ac_cv_prog_CXX +if test -n "$CXX"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CXX" >&5 +$as_echo "$CXX" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$CXX" && break + done +fi +if test -z "$CXX"; then + ac_ct_CXX=$CXX + for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_CXX+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_CXX"; then + ac_cv_prog_ac_ct_CXX="$ac_ct_CXX" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CXX="$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_CXX=$ac_cv_prog_ac_ct_CXX +if test -n "$ac_ct_CXX"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CXX" >&5 +$as_echo "$ac_ct_CXX" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$ac_ct_CXX" && break +done + + if test "x$ac_ct_CXX" = x; then + CXX="g++" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + CXX=$ac_ct_CXX + fi +fi + + fi +fi +# Provide some information about the compiler. +$as_echo "$as_me:${as_lineno-$LINENO}: checking for C++ compiler version" >&5 +set X $ac_compile +ac_compiler=$2 +for ac_option in --version -v -V -qversion; do + { { ac_try="$ac_compiler $ac_option >&5" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_compiler $ac_option >&5") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + sed '10a\ +... rest of stderr output deleted ... + 10q' conftest.err >conftest.er1 + cat conftest.er1 >&5 + fi + rm -f conftest.er1 conftest.err + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } +done + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C++ compiler" >&5 +$as_echo_n "checking whether we are using the GNU C++ compiler... " >&6; } +if ${ac_cv_cxx_compiler_gnu+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ +#ifndef __GNUC__ + choke me +#endif + + ; + return 0; +} +_ACEOF +if ac_fn_cxx_try_compile "$LINENO"; then : + ac_compiler_gnu=yes +else + ac_compiler_gnu=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +ac_cv_cxx_compiler_gnu=$ac_compiler_gnu + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_cxx_compiler_gnu" >&5 +$as_echo "$ac_cv_cxx_compiler_gnu" >&6; } +if test $ac_compiler_gnu = yes; then + GXX=yes +else + GXX= +fi +ac_test_CXXFLAGS=${CXXFLAGS+set} +ac_save_CXXFLAGS=$CXXFLAGS +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CXX accepts -g" >&5 +$as_echo_n "checking whether $CXX accepts -g... " >&6; } +if ${ac_cv_prog_cxx_g+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_save_cxx_werror_flag=$ac_cxx_werror_flag + ac_cxx_werror_flag=yes + ac_cv_prog_cxx_g=no + CXXFLAGS="-g" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_cxx_try_compile "$LINENO"; then : + ac_cv_prog_cxx_g=yes +else + CXXFLAGS="" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_cxx_try_compile "$LINENO"; then : + +else + ac_cxx_werror_flag=$ac_save_cxx_werror_flag + CXXFLAGS="-g" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_cxx_try_compile "$LINENO"; then : + ac_cv_prog_cxx_g=yes +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + ac_cxx_werror_flag=$ac_save_cxx_werror_flag +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cxx_g" >&5 +$as_echo "$ac_cv_prog_cxx_g" >&6; } +if test "$ac_test_CXXFLAGS" = set; then + CXXFLAGS=$ac_save_CXXFLAGS +elif test $ac_cv_prog_cxx_g = yes; then + if test "$GXX" = yes; then + CXXFLAGS="-g -O2" + else + CXXFLAGS="-g" + fi +else + if test "$GXX" = yes; then + CXXFLAGS="-O2" + else + CXXFLAGS= + fi +fi +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + +depcc="$CXX" am_compiler_list= + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5 +$as_echo_n "checking dependency style of $depcc... " >&6; } +if ${am_cv_CXX_dependencies_compiler_type+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then + # We make a subdir and do the tests there. Otherwise we can end up + # making bogus files that we don't know about and never remove. For + # instance it was reported that on HP-UX the gcc test will end up + # making a dummy file named 'D' -- because '-MD' means "put the output + # in D". + rm -rf conftest.dir + mkdir conftest.dir + # Copy depcomp to subdir because otherwise we won't find it if we're + # using a relative directory. + cp "$am_depcomp" conftest.dir + cd conftest.dir + # We will build objects and dependencies in a subdirectory because + # it helps to detect inapplicable dependency modes. For instance + # both Tru64's cc and ICC support -MD to output dependencies as a + # side effect of compilation, but ICC will put the dependencies in + # the current directory while Tru64 will put them in the object + # directory. + mkdir sub + + am_cv_CXX_dependencies_compiler_type=none + if test "$am_compiler_list" = ""; then + am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` + fi + am__universal=false + case " $depcc " in #( + *\ -arch\ *\ -arch\ *) am__universal=true ;; + esac + + for depmode in $am_compiler_list; do + # Setup a source with many dependencies, because some compilers + # like to wrap large dependency lists on column 80 (with \), and + # we should not choose a depcomp mode which is confused by this. + # + # We need to recreate these files for each test, as the compiler may + # overwrite some of them when testing with obscure command lines. + # This happens at least with the AIX C compiler. + : > sub/conftest.c + for i in 1 2 3 4 5 6; do + echo '#include "conftst'$i'.h"' >> sub/conftest.c + # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with + # Solaris 10 /bin/sh. + echo '/* dummy */' > sub/conftst$i.h + done + echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf + + # We check with '-c' and '-o' for the sake of the "dashmstdout" + # mode. It turns out that the SunPro C++ compiler does not properly + # handle '-M -o', and we need to detect this. Also, some Intel + # versions had trouble with output in subdirs. + am__obj=sub/conftest.${OBJEXT-o} + am__minus_obj="-o $am__obj" + case $depmode in + gcc) + # This depmode causes a compiler race in universal mode. + test "$am__universal" = false || continue + ;; + nosideeffect) + # After this tag, mechanisms are not by side-effect, so they'll + # only be used when explicitly requested. + if test "x$enable_dependency_tracking" = xyes; then + continue + else + break + fi + ;; + msvc7 | msvc7msys | msvisualcpp | msvcmsys) + # This compiler won't grok '-c -o', but also, the minuso test has + # not run yet. These depmodes are late enough in the game, and + # so weak that their functioning should not be impacted. + am__obj=conftest.${OBJEXT-o} + am__minus_obj= + ;; + none) break ;; + esac + if depmode=$depmode \ + source=sub/conftest.c object=$am__obj \ + depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ + $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ + >/dev/null 2>conftest.err && + grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && + grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && + grep $am__obj sub/conftest.Po > /dev/null 2>&1 && + ${MAKE-make} -s -f confmf > /dev/null 2>&1; then + # icc doesn't choke on unknown options, it will just issue warnings + # or remarks (even with -Werror). So we grep stderr for any message + # that says an option was ignored or not supported. + # When given -MP, icc 7.0 and 7.1 complain thusly: + # icc: Command line warning: ignoring option '-M'; no argument required + # The diagnosis changed in icc 8.0: + # icc: Command line remark: option '-MP' not supported + if (grep 'ignoring option' conftest.err || + grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else + am_cv_CXX_dependencies_compiler_type=$depmode + break + fi + fi + done + + cd .. + rm -rf conftest.dir +else + am_cv_CXX_dependencies_compiler_type=none +fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CXX_dependencies_compiler_type" >&5 +$as_echo "$am_cv_CXX_dependencies_compiler_type" >&6; } +CXXDEPMODE=depmode=$am_cv_CXX_dependencies_compiler_type + + if + test "x$enable_dependency_tracking" != xno \ + && test "$am_cv_CXX_dependencies_compiler_type" = gcc3; then + am__fastdepCXX_TRUE= + am__fastdepCXX_FALSE='#' +else + am__fastdepCXX_TRUE='#' + am__fastdepCXX_FALSE= +fi + + + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + +ac_ext=cpp +ac_cpp='$CXXCPP $CPPFLAGS' +ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_cxx_compiler_gnu + + +case `pwd` in + *\ * | *\ *) + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&5 +$as_echo "$as_me: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&2;} ;; +esac + + + +macro_version='2.4.6' +macro_revision='2.4.6' + + + + + + + + + + + + + +ltmain=$ac_aux_dir/ltmain.sh + +# Make sure we can run config.sub. +$SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 || + as_fn_error $? "cannot run $SHELL $ac_aux_dir/config.sub" "$LINENO" 5 + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking build system type" >&5 +$as_echo_n "checking build system type... " >&6; } +if ${ac_cv_build+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_build_alias=$build_alias +test "x$ac_build_alias" = x && + ac_build_alias=`$SHELL "$ac_aux_dir/config.guess"` +test "x$ac_build_alias" = x && + as_fn_error $? "cannot guess build type; you must specify one" "$LINENO" 5 +ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` || + as_fn_error $? "$SHELL $ac_aux_dir/config.sub $ac_build_alias failed" "$LINENO" 5 + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build" >&5 +$as_echo "$ac_cv_build" >&6; } +case $ac_cv_build in +*-*-*) ;; +*) as_fn_error $? "invalid value of canonical build" "$LINENO" 5;; +esac +build=$ac_cv_build +ac_save_IFS=$IFS; IFS='-' +set x $ac_cv_build +shift +build_cpu=$1 +build_vendor=$2 +shift; shift +# Remember, the first character of IFS is used to create $*, +# except with old shells: +build_os=$* +IFS=$ac_save_IFS +case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking host system type" >&5 +$as_echo_n "checking host system type... " >&6; } +if ${ac_cv_host+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test "x$host_alias" = x; then + ac_cv_host=$ac_cv_build +else + ac_cv_host=`$SHELL "$ac_aux_dir/config.sub" $host_alias` || + as_fn_error $? "$SHELL $ac_aux_dir/config.sub $host_alias failed" "$LINENO" 5 +fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_host" >&5 +$as_echo "$ac_cv_host" >&6; } +case $ac_cv_host in +*-*-*) ;; +*) as_fn_error $? "invalid value of canonical host" "$LINENO" 5;; +esac +host=$ac_cv_host +ac_save_IFS=$IFS; IFS='-' +set x $ac_cv_host +shift +host_cpu=$1 +host_vendor=$2 +shift; shift +# Remember, the first character of IFS is used to create $*, +# except with old shells: +host_os=$* +IFS=$ac_save_IFS +case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac + + +# Backslashify metacharacters that are still active within +# double-quoted strings. +sed_quote_subst='s/\(["`$\\]\)/\\\1/g' + +# Same as above, but do not quote variable references. +double_quote_subst='s/\(["`\\]\)/\\\1/g' + +# Sed substitution to delay expansion of an escaped shell variable in a +# double_quote_subst'ed string. +delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g' + +# Sed substitution to delay expansion of an escaped single quote. +delay_single_quote_subst='s/'\''/'\'\\\\\\\'\''/g' + +# Sed substitution to avoid accidental globbing in evaled expressions +no_glob_subst='s/\*/\\\*/g' + +ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' +ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO +ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to print strings" >&5 +$as_echo_n "checking how to print strings... " >&6; } +# Test print first, because it will be a builtin if present. +if test "X`( print -r -- -n ) 2>/dev/null`" = X-n && \ + test "X`print -r -- $ECHO 2>/dev/null`" = "X$ECHO"; then + ECHO='print -r --' +elif test "X`printf %s $ECHO 2>/dev/null`" = "X$ECHO"; then + ECHO='printf %s\n' +else + # Use this function as a fallback that always works. + func_fallback_echo () + { + eval 'cat <<_LTECHO_EOF +$1 +_LTECHO_EOF' + } + ECHO='func_fallback_echo' +fi + +# func_echo_all arg... +# Invoke $ECHO with all args, space-separated. +func_echo_all () +{ + $ECHO "" +} + +case $ECHO in + printf*) { $as_echo "$as_me:${as_lineno-$LINENO}: result: printf" >&5 +$as_echo "printf" >&6; } ;; + print*) { $as_echo "$as_me:${as_lineno-$LINENO}: result: print -r" >&5 +$as_echo "print -r" >&6; } ;; + *) { $as_echo "$as_me:${as_lineno-$LINENO}: result: cat" >&5 +$as_echo "cat" >&6; } ;; +esac + + + + + + + + + + + + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a sed that does not truncate output" >&5 +$as_echo_n "checking for a sed that does not truncate output... " >&6; } +if ${ac_cv_path_SED+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_script=s/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/ + for ac_i in 1 2 3 4 5 6 7; do + ac_script="$ac_script$as_nl$ac_script" + done + echo "$ac_script" 2>/dev/null | sed 99q >conftest.sed + { ac_script=; unset ac_script;} + if test -z "$SED"; then + ac_path_SED_found=false + # Loop through the user's path and test for each of PROGNAME-LIST + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_prog in sed gsed; do + for ac_exec_ext in '' $ac_executable_extensions; do + ac_path_SED="$as_dir/$ac_prog$ac_exec_ext" + as_fn_executable_p "$ac_path_SED" || continue +# Check for GNU ac_path_SED and select it if it is found. + # Check for GNU $ac_path_SED +case `"$ac_path_SED" --version 2>&1` in +*GNU*) + ac_cv_path_SED="$ac_path_SED" ac_path_SED_found=:;; +*) + ac_count=0 + $as_echo_n 0123456789 >"conftest.in" + while : + do + cat "conftest.in" "conftest.in" >"conftest.tmp" + mv "conftest.tmp" "conftest.in" + cp "conftest.in" "conftest.nl" + $as_echo '' >> "conftest.nl" + "$ac_path_SED" -f conftest.sed < "conftest.nl" >"conftest.out" 2>/dev/null || break + diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break + as_fn_arith $ac_count + 1 && ac_count=$as_val + if test $ac_count -gt ${ac_path_SED_max-0}; then + # Best one so far, save it but keep looking for a better one + ac_cv_path_SED="$ac_path_SED" + ac_path_SED_max=$ac_count + fi + # 10*(2^10) chars as input seems more than enough + test $ac_count -gt 10 && break + done + rm -f conftest.in conftest.tmp conftest.nl conftest.out;; +esac + + $ac_path_SED_found && break 3 + done + done + done +IFS=$as_save_IFS + if test -z "$ac_cv_path_SED"; then + as_fn_error $? "no acceptable sed could be found in \$PATH" "$LINENO" 5 + fi +else + ac_cv_path_SED=$SED +fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_SED" >&5 +$as_echo "$ac_cv_path_SED" >&6; } + SED="$ac_cv_path_SED" + rm -f conftest.sed + +test -z "$SED" && SED=sed +Xsed="$SED -e 1s/^X//" + + + + + + + + + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5 +$as_echo_n "checking for grep that handles long lines and -e... " >&6; } +if ${ac_cv_path_GREP+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -z "$GREP"; then + ac_path_GREP_found=false + # Loop through the user's path and test for each of PROGNAME-LIST + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_prog in grep ggrep; do + for ac_exec_ext in '' $ac_executable_extensions; do + ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext" + as_fn_executable_p "$ac_path_GREP" || continue +# Check for GNU ac_path_GREP and select it if it is found. + # Check for GNU $ac_path_GREP +case `"$ac_path_GREP" --version 2>&1` in +*GNU*) + ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;; +*) + ac_count=0 + $as_echo_n 0123456789 >"conftest.in" + while : + do + cat "conftest.in" "conftest.in" >"conftest.tmp" + mv "conftest.tmp" "conftest.in" + cp "conftest.in" "conftest.nl" + $as_echo 'GREP' >> "conftest.nl" + "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break + diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break + as_fn_arith $ac_count + 1 && ac_count=$as_val + if test $ac_count -gt ${ac_path_GREP_max-0}; then + # Best one so far, save it but keep looking for a better one + ac_cv_path_GREP="$ac_path_GREP" + ac_path_GREP_max=$ac_count + fi + # 10*(2^10) chars as input seems more than enough + test $ac_count -gt 10 && break + done + rm -f conftest.in conftest.tmp conftest.nl conftest.out;; +esac + + $ac_path_GREP_found && break 3 + done + done + done +IFS=$as_save_IFS + if test -z "$ac_cv_path_GREP"; then + as_fn_error $? "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 + fi +else + ac_cv_path_GREP=$GREP +fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5 +$as_echo "$ac_cv_path_GREP" >&6; } + GREP="$ac_cv_path_GREP" + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5 +$as_echo_n "checking for egrep... " >&6; } +if ${ac_cv_path_EGREP+:} false; then : + $as_echo_n "(cached) " >&6 +else + if echo a | $GREP -E '(a|b)' >/dev/null 2>&1 + then ac_cv_path_EGREP="$GREP -E" + else + if test -z "$EGREP"; then + ac_path_EGREP_found=false + # Loop through the user's path and test for each of PROGNAME-LIST + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_prog in egrep; do + for ac_exec_ext in '' $ac_executable_extensions; do + ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext" + as_fn_executable_p "$ac_path_EGREP" || continue +# Check for GNU ac_path_EGREP and select it if it is found. + # Check for GNU $ac_path_EGREP +case `"$ac_path_EGREP" --version 2>&1` in +*GNU*) + ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;; +*) + ac_count=0 + $as_echo_n 0123456789 >"conftest.in" + while : + do + cat "conftest.in" "conftest.in" >"conftest.tmp" + mv "conftest.tmp" "conftest.in" + cp "conftest.in" "conftest.nl" + $as_echo 'EGREP' >> "conftest.nl" + "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break + diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break + as_fn_arith $ac_count + 1 && ac_count=$as_val + if test $ac_count -gt ${ac_path_EGREP_max-0}; then + # Best one so far, save it but keep looking for a better one + ac_cv_path_EGREP="$ac_path_EGREP" + ac_path_EGREP_max=$ac_count + fi + # 10*(2^10) chars as input seems more than enough + test $ac_count -gt 10 && break + done + rm -f conftest.in conftest.tmp conftest.nl conftest.out;; +esac + + $ac_path_EGREP_found && break 3 + done + done + done +IFS=$as_save_IFS + if test -z "$ac_cv_path_EGREP"; then + as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 + fi +else + ac_cv_path_EGREP=$EGREP +fi + + fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5 +$as_echo "$ac_cv_path_EGREP" >&6; } + EGREP="$ac_cv_path_EGREP" + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for fgrep" >&5 +$as_echo_n "checking for fgrep... " >&6; } +if ${ac_cv_path_FGREP+:} false; then : + $as_echo_n "(cached) " >&6 +else + if echo 'ab*c' | $GREP -F 'ab*c' >/dev/null 2>&1 + then ac_cv_path_FGREP="$GREP -F" + else + if test -z "$FGREP"; then + ac_path_FGREP_found=false + # Loop through the user's path and test for each of PROGNAME-LIST + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_prog in fgrep; do + for ac_exec_ext in '' $ac_executable_extensions; do + ac_path_FGREP="$as_dir/$ac_prog$ac_exec_ext" + as_fn_executable_p "$ac_path_FGREP" || continue +# Check for GNU ac_path_FGREP and select it if it is found. + # Check for GNU $ac_path_FGREP +case `"$ac_path_FGREP" --version 2>&1` in +*GNU*) + ac_cv_path_FGREP="$ac_path_FGREP" ac_path_FGREP_found=:;; +*) + ac_count=0 + $as_echo_n 0123456789 >"conftest.in" + while : + do + cat "conftest.in" "conftest.in" >"conftest.tmp" + mv "conftest.tmp" "conftest.in" + cp "conftest.in" "conftest.nl" + $as_echo 'FGREP' >> "conftest.nl" + "$ac_path_FGREP" FGREP < "conftest.nl" >"conftest.out" 2>/dev/null || break + diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break + as_fn_arith $ac_count + 1 && ac_count=$as_val + if test $ac_count -gt ${ac_path_FGREP_max-0}; then + # Best one so far, save it but keep looking for a better one + ac_cv_path_FGREP="$ac_path_FGREP" + ac_path_FGREP_max=$ac_count + fi + # 10*(2^10) chars as input seems more than enough + test $ac_count -gt 10 && break + done + rm -f conftest.in conftest.tmp conftest.nl conftest.out;; +esac + + $ac_path_FGREP_found && break 3 + done + done + done +IFS=$as_save_IFS + if test -z "$ac_cv_path_FGREP"; then + as_fn_error $? "no acceptable fgrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 + fi +else + ac_cv_path_FGREP=$FGREP +fi + + fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_FGREP" >&5 +$as_echo "$ac_cv_path_FGREP" >&6; } + FGREP="$ac_cv_path_FGREP" + + +test -z "$GREP" && GREP=grep + + + + + + + + + + + + + + + + + + + +# Check whether --with-gnu-ld was given. +if test "${with_gnu_ld+set}" = set; then : + withval=$with_gnu_ld; test no = "$withval" || with_gnu_ld=yes +else + with_gnu_ld=no +fi + +ac_prog=ld +if test yes = "$GCC"; then + # Check if gcc -print-prog-name=ld gives a path. + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld used by $CC" >&5 +$as_echo_n "checking for ld used by $CC... " >&6; } + case $host in + *-*-mingw*) + # gcc leaves a trailing carriage return, which upsets mingw + ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; + *) + ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; + esac + case $ac_prog in + # Accept absolute paths. + [\\/]* | ?:[\\/]*) + re_direlt='/[^/][^/]*/\.\./' + # Canonicalize the pathname of ld + ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'` + while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do + ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"` + done + test -z "$LD" && LD=$ac_prog + ;; + "") + # If it fails, then pretend we aren't using GCC. + ac_prog=ld + ;; + *) + # If it is relative, then search for the first ld in PATH. + with_gnu_ld=unknown + ;; + esac +elif test yes = "$with_gnu_ld"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5 +$as_echo_n "checking for GNU ld... " >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5 +$as_echo_n "checking for non-GNU ld... " >&6; } +fi +if ${lt_cv_path_LD+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -z "$LD"; then + lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR + for ac_dir in $PATH; do + IFS=$lt_save_ifs + test -z "$ac_dir" && ac_dir=. + if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then + lt_cv_path_LD=$ac_dir/$ac_prog + # Check to see if the program is GNU ld. I'd rather use --version, + # but apparently some variants of GNU ld only accept -v. + # Break only if it was the GNU/non-GNU ld that we prefer. + case `"$lt_cv_path_LD" -v 2>&1 &5 +$as_echo "$LD" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi +test -z "$LD" && as_fn_error $? "no acceptable ld found in \$PATH" "$LINENO" 5 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5 +$as_echo_n "checking if the linker ($LD) is GNU ld... " >&6; } +if ${lt_cv_prog_gnu_ld+:} false; then : + $as_echo_n "(cached) " >&6 +else + # I'd rather use --version here, but apparently some GNU lds only accept -v. +case `$LD -v 2>&1 &5 +$as_echo "$lt_cv_prog_gnu_ld" >&6; } +with_gnu_ld=$lt_cv_prog_gnu_ld + + + + + + + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for BSD- or MS-compatible name lister (nm)" >&5 +$as_echo_n "checking for BSD- or MS-compatible name lister (nm)... " >&6; } +if ${lt_cv_path_NM+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$NM"; then + # Let the user override the test. + lt_cv_path_NM=$NM +else + lt_nm_to_check=${ac_tool_prefix}nm + if test -n "$ac_tool_prefix" && test "$build" = "$host"; then + lt_nm_to_check="$lt_nm_to_check nm" + fi + for lt_tmp_nm in $lt_nm_to_check; do + lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR + for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do + IFS=$lt_save_ifs + test -z "$ac_dir" && ac_dir=. + tmp_nm=$ac_dir/$lt_tmp_nm + if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext"; then + # Check to see if the nm accepts a BSD-compat flag. + # Adding the 'sed 1q' prevents false positives on HP-UX, which says: + # nm: unknown option "B" ignored + # Tru64's nm complains that /dev/null is an invalid object file + # MSYS converts /dev/null to NUL, MinGW nm treats NUL as empty + case $build_os in + mingw*) lt_bad_file=conftest.nm/nofile ;; + *) lt_bad_file=/dev/null ;; + esac + case `"$tmp_nm" -B $lt_bad_file 2>&1 | sed '1q'` in + *$lt_bad_file* | *'Invalid file or object type'*) + lt_cv_path_NM="$tmp_nm -B" + break 2 + ;; + *) + case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in + */dev/null*) + lt_cv_path_NM="$tmp_nm -p" + break 2 + ;; + *) + lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but + continue # so that we can try to find one that supports BSD flags + ;; + esac + ;; + esac + fi + done + IFS=$lt_save_ifs + done + : ${lt_cv_path_NM=no} +fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_NM" >&5 +$as_echo "$lt_cv_path_NM" >&6; } +if test no != "$lt_cv_path_NM"; then + NM=$lt_cv_path_NM +else + # Didn't find any BSD compatible name lister, look for dumpbin. + if test -n "$DUMPBIN"; then : + # Let the user override the test. + else + if test -n "$ac_tool_prefix"; then + for ac_prog in dumpbin "link -dump" + do + # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. +set dummy $ac_tool_prefix$ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_DUMPBIN+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$DUMPBIN"; then + ac_cv_prog_DUMPBIN="$DUMPBIN" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_DUMPBIN="$ac_tool_prefix$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +DUMPBIN=$ac_cv_prog_DUMPBIN +if test -n "$DUMPBIN"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DUMPBIN" >&5 +$as_echo "$DUMPBIN" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$DUMPBIN" && break + done +fi +if test -z "$DUMPBIN"; then + ac_ct_DUMPBIN=$DUMPBIN + for ac_prog in dumpbin "link -dump" +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_DUMPBIN+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_DUMPBIN"; then + ac_cv_prog_ac_ct_DUMPBIN="$ac_ct_DUMPBIN" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_DUMPBIN="$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_DUMPBIN=$ac_cv_prog_ac_ct_DUMPBIN +if test -n "$ac_ct_DUMPBIN"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DUMPBIN" >&5 +$as_echo "$ac_ct_DUMPBIN" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$ac_ct_DUMPBIN" && break +done + + if test "x$ac_ct_DUMPBIN" = x; then + DUMPBIN=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + DUMPBIN=$ac_ct_DUMPBIN + fi +fi + + case `$DUMPBIN -symbols -headers /dev/null 2>&1 | sed '1q'` in + *COFF*) + DUMPBIN="$DUMPBIN -symbols -headers" + ;; + *) + DUMPBIN=: + ;; + esac + fi + + if test : != "$DUMPBIN"; then + NM=$DUMPBIN + fi +fi +test -z "$NM" && NM=nm + + + + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking the name lister ($NM) interface" >&5 +$as_echo_n "checking the name lister ($NM) interface... " >&6; } +if ${lt_cv_nm_interface+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_nm_interface="BSD nm" + echo "int some_variable = 0;" > conftest.$ac_ext + (eval echo "\"\$as_me:$LINENO: $ac_compile\"" >&5) + (eval "$ac_compile" 2>conftest.err) + cat conftest.err >&5 + (eval echo "\"\$as_me:$LINENO: $NM \\\"conftest.$ac_objext\\\"\"" >&5) + (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out) + cat conftest.err >&5 + (eval echo "\"\$as_me:$LINENO: output\"" >&5) + cat conftest.out >&5 + if $GREP 'External.*some_variable' conftest.out > /dev/null; then + lt_cv_nm_interface="MS dumpbin" + fi + rm -f conftest* +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_nm_interface" >&5 +$as_echo "$lt_cv_nm_interface" >&6; } + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ln -s works" >&5 +$as_echo_n "checking whether ln -s works... " >&6; } +LN_S=$as_ln_s +if test "$LN_S" = "ln -s"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no, using $LN_S" >&5 +$as_echo "no, using $LN_S" >&6; } +fi + +# find the maximum length of command line arguments +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking the maximum length of command line arguments" >&5 +$as_echo_n "checking the maximum length of command line arguments... " >&6; } +if ${lt_cv_sys_max_cmd_len+:} false; then : + $as_echo_n "(cached) " >&6 +else + i=0 + teststring=ABCD + + case $build_os in + msdosdjgpp*) + # On DJGPP, this test can blow up pretty badly due to problems in libc + # (any single argument exceeding 2000 bytes causes a buffer overrun + # during glob expansion). Even if it were fixed, the result of this + # check would be larger than it should be. + lt_cv_sys_max_cmd_len=12288; # 12K is about right + ;; + + gnu*) + # Under GNU Hurd, this test is not required because there is + # no limit to the length of command line arguments. + # Libtool will interpret -1 as no limit whatsoever + lt_cv_sys_max_cmd_len=-1; + ;; + + cygwin* | mingw* | cegcc*) + # On Win9x/ME, this test blows up -- it succeeds, but takes + # about 5 minutes as the teststring grows exponentially. + # Worse, since 9x/ME are not pre-emptively multitasking, + # you end up with a "frozen" computer, even though with patience + # the test eventually succeeds (with a max line length of 256k). + # Instead, let's just punt: use the minimum linelength reported by + # all of the supported platforms: 8192 (on NT/2K/XP). + lt_cv_sys_max_cmd_len=8192; + ;; + + mint*) + # On MiNT this can take a long time and run out of memory. + lt_cv_sys_max_cmd_len=8192; + ;; + + amigaos*) + # On AmigaOS with pdksh, this test takes hours, literally. + # So we just punt and use a minimum line length of 8192. + lt_cv_sys_max_cmd_len=8192; + ;; + + bitrig* | darwin* | dragonfly* | freebsd* | netbsd* | openbsd*) + # This has been around since 386BSD, at least. Likely further. + if test -x /sbin/sysctl; then + lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax` + elif test -x /usr/sbin/sysctl; then + lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax` + else + lt_cv_sys_max_cmd_len=65536 # usable default for all BSDs + fi + # And add a safety zone + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` + ;; + + interix*) + # We know the value 262144 and hardcode it with a safety zone (like BSD) + lt_cv_sys_max_cmd_len=196608 + ;; + + os2*) + # The test takes a long time on OS/2. + lt_cv_sys_max_cmd_len=8192 + ;; + + osf*) + # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure + # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not + # nice to cause kernel panics so lets avoid the loop below. + # First set a reasonable default. + lt_cv_sys_max_cmd_len=16384 + # + if test -x /sbin/sysconfig; then + case `/sbin/sysconfig -q proc exec_disable_arg_limit` in + *1*) lt_cv_sys_max_cmd_len=-1 ;; + esac + fi + ;; + sco3.2v5*) + lt_cv_sys_max_cmd_len=102400 + ;; + sysv5* | sco5v6* | sysv4.2uw2*) + kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null` + if test -n "$kargmax"; then + lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[ ]//'` + else + lt_cv_sys_max_cmd_len=32768 + fi + ;; + *) + lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null` + if test -n "$lt_cv_sys_max_cmd_len" && \ + test undefined != "$lt_cv_sys_max_cmd_len"; then + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` + else + # Make teststring a little bigger before we do anything with it. + # a 1K string should be a reasonable start. + for i in 1 2 3 4 5 6 7 8; do + teststring=$teststring$teststring + done + SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}} + # If test is not a shell built-in, we'll probably end up computing a + # maximum length that is only half of the actual maximum length, but + # we can't tell. + while { test X`env echo "$teststring$teststring" 2>/dev/null` \ + = "X$teststring$teststring"; } >/dev/null 2>&1 && + test 17 != "$i" # 1/2 MB should be enough + do + i=`expr $i + 1` + teststring=$teststring$teststring + done + # Only check the string length outside the loop. + lt_cv_sys_max_cmd_len=`expr "X$teststring" : ".*" 2>&1` + teststring= + # Add a significant safety factor because C++ compilers can tack on + # massive amounts of additional arguments before passing them to the + # linker. It appears as though 1/2 is a usable value. + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2` + fi + ;; + esac + +fi + +if test -n "$lt_cv_sys_max_cmd_len"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sys_max_cmd_len" >&5 +$as_echo "$lt_cv_sys_max_cmd_len" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: none" >&5 +$as_echo "none" >&6; } +fi +max_cmd_len=$lt_cv_sys_max_cmd_len + + + + + + +: ${CP="cp -f"} +: ${MV="mv -f"} +: ${RM="rm -f"} + +if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then + lt_unset=unset +else + lt_unset=false +fi + + + + + +# test EBCDIC or ASCII +case `echo X|tr X '\101'` in + A) # ASCII based system + # \n is not interpreted correctly by Solaris 8 /usr/ucb/tr + lt_SP2NL='tr \040 \012' + lt_NL2SP='tr \015\012 \040\040' + ;; + *) # EBCDIC based system + lt_SP2NL='tr \100 \n' + lt_NL2SP='tr \r\n \100\100' + ;; +esac + + + + + + + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to $host format" >&5 +$as_echo_n "checking how to convert $build file names to $host format... " >&6; } +if ${lt_cv_to_host_file_cmd+:} false; then : + $as_echo_n "(cached) " >&6 +else + case $host in + *-*-mingw* ) + case $build in + *-*-mingw* ) # actually msys + lt_cv_to_host_file_cmd=func_convert_file_msys_to_w32 + ;; + *-*-cygwin* ) + lt_cv_to_host_file_cmd=func_convert_file_cygwin_to_w32 + ;; + * ) # otherwise, assume *nix + lt_cv_to_host_file_cmd=func_convert_file_nix_to_w32 + ;; + esac + ;; + *-*-cygwin* ) + case $build in + *-*-mingw* ) # actually msys + lt_cv_to_host_file_cmd=func_convert_file_msys_to_cygwin + ;; + *-*-cygwin* ) + lt_cv_to_host_file_cmd=func_convert_file_noop + ;; + * ) # otherwise, assume *nix + lt_cv_to_host_file_cmd=func_convert_file_nix_to_cygwin + ;; + esac + ;; + * ) # unhandled hosts (and "normal" native builds) + lt_cv_to_host_file_cmd=func_convert_file_noop + ;; +esac + +fi + +to_host_file_cmd=$lt_cv_to_host_file_cmd +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_host_file_cmd" >&5 +$as_echo "$lt_cv_to_host_file_cmd" >&6; } + + + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to toolchain format" >&5 +$as_echo_n "checking how to convert $build file names to toolchain format... " >&6; } +if ${lt_cv_to_tool_file_cmd+:} false; then : + $as_echo_n "(cached) " >&6 +else + #assume ordinary cross tools, or native build. +lt_cv_to_tool_file_cmd=func_convert_file_noop +case $host in + *-*-mingw* ) + case $build in + *-*-mingw* ) # actually msys + lt_cv_to_tool_file_cmd=func_convert_file_msys_to_w32 + ;; + esac + ;; +esac + +fi + +to_tool_file_cmd=$lt_cv_to_tool_file_cmd +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_tool_file_cmd" >&5 +$as_echo "$lt_cv_to_tool_file_cmd" >&6; } + + + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $LD option to reload object files" >&5 +$as_echo_n "checking for $LD option to reload object files... " >&6; } +if ${lt_cv_ld_reload_flag+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_ld_reload_flag='-r' +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_reload_flag" >&5 +$as_echo "$lt_cv_ld_reload_flag" >&6; } +reload_flag=$lt_cv_ld_reload_flag +case $reload_flag in +"" | " "*) ;; +*) reload_flag=" $reload_flag" ;; +esac +reload_cmds='$LD$reload_flag -o $output$reload_objs' +case $host_os in + cygwin* | mingw* | pw32* | cegcc*) + if test yes != "$GCC"; then + reload_cmds=false + fi + ;; + darwin*) + if test yes = "$GCC"; then + reload_cmds='$LTCC $LTCFLAGS -nostdlib $wl-r -o $output$reload_objs' + else + reload_cmds='$LD$reload_flag -o $output$reload_objs' + fi + ;; +esac + + + + + + + + + +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}objdump", so it can be a program name with args. +set dummy ${ac_tool_prefix}objdump; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_OBJDUMP+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$OBJDUMP"; then + ac_cv_prog_OBJDUMP="$OBJDUMP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_OBJDUMP="${ac_tool_prefix}objdump" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +OBJDUMP=$ac_cv_prog_OBJDUMP +if test -n "$OBJDUMP"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OBJDUMP" >&5 +$as_echo "$OBJDUMP" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_OBJDUMP"; then + ac_ct_OBJDUMP=$OBJDUMP + # Extract the first word of "objdump", so it can be a program name with args. +set dummy objdump; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_OBJDUMP+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_OBJDUMP"; then + ac_cv_prog_ac_ct_OBJDUMP="$ac_ct_OBJDUMP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_OBJDUMP="objdump" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_OBJDUMP=$ac_cv_prog_ac_ct_OBJDUMP +if test -n "$ac_ct_OBJDUMP"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OBJDUMP" >&5 +$as_echo "$ac_ct_OBJDUMP" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_OBJDUMP" = x; then + OBJDUMP="false" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + OBJDUMP=$ac_ct_OBJDUMP + fi +else + OBJDUMP="$ac_cv_prog_OBJDUMP" +fi + +test -z "$OBJDUMP" && OBJDUMP=objdump + + + + + + + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to recognize dependent libraries" >&5 +$as_echo_n "checking how to recognize dependent libraries... " >&6; } +if ${lt_cv_deplibs_check_method+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_file_magic_cmd='$MAGIC_CMD' +lt_cv_file_magic_test_file= +lt_cv_deplibs_check_method='unknown' +# Need to set the preceding variable on all platforms that support +# interlibrary dependencies. +# 'none' -- dependencies not supported. +# 'unknown' -- same as none, but documents that we really don't know. +# 'pass_all' -- all dependencies passed with no checks. +# 'test_compile' -- check by making test program. +# 'file_magic [[regex]]' -- check by looking for files in library path +# that responds to the $file_magic_cmd with a given extended regex. +# If you have 'file' or equivalent on your system and you're not sure +# whether 'pass_all' will *always* work, you probably want this one. + +case $host_os in +aix[4-9]*) + lt_cv_deplibs_check_method=pass_all + ;; + +beos*) + lt_cv_deplibs_check_method=pass_all + ;; + +bsdi[45]*) + lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib)' + lt_cv_file_magic_cmd='/usr/bin/file -L' + lt_cv_file_magic_test_file=/shlib/libc.so + ;; + +cygwin*) + # func_win32_libid is a shell function defined in ltmain.sh + lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' + lt_cv_file_magic_cmd='func_win32_libid' + ;; + +mingw* | pw32*) + # Base MSYS/MinGW do not provide the 'file' command needed by + # func_win32_libid shell function, so use a weaker test based on 'objdump', + # unless we find 'file', for example because we are cross-compiling. + if ( file / ) >/dev/null 2>&1; then + lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' + lt_cv_file_magic_cmd='func_win32_libid' + else + # Keep this pattern in sync with the one in func_win32_libid. + lt_cv_deplibs_check_method='file_magic file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)' + lt_cv_file_magic_cmd='$OBJDUMP -f' + fi + ;; + +cegcc*) + # use the weaker test based on 'objdump'. See mingw*. + lt_cv_deplibs_check_method='file_magic file format pe-arm-.*little(.*architecture: arm)?' + lt_cv_file_magic_cmd='$OBJDUMP -f' + ;; + +darwin* | rhapsody*) + lt_cv_deplibs_check_method=pass_all + ;; + +freebsd* | dragonfly*) + if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then + case $host_cpu in + i*86 ) + # Not sure whether the presence of OpenBSD here was a mistake. + # Let's accept both of them until this is cleared up. + lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[3-9]86 (compact )?demand paged shared library' + lt_cv_file_magic_cmd=/usr/bin/file + lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` + ;; + esac + else + lt_cv_deplibs_check_method=pass_all + fi + ;; + +haiku*) + lt_cv_deplibs_check_method=pass_all + ;; + +hpux10.20* | hpux11*) + lt_cv_file_magic_cmd=/usr/bin/file + case $host_cpu in + ia64*) + lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - IA64' + lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so + ;; + hppa*64*) + lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF[ -][0-9][0-9])(-bit)?( [LM]SB)? shared object( file)?[, -]* PA-RISC [0-9]\.[0-9]' + lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl + ;; + *) + lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|PA-RISC[0-9]\.[0-9]) shared library' + lt_cv_file_magic_test_file=/usr/lib/libc.sl + ;; + esac + ;; + +interix[3-9]*) + # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here + lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|\.a)$' + ;; + +irix5* | irix6* | nonstopux*) + case $LD in + *-32|*"-32 ") libmagic=32-bit;; + *-n32|*"-n32 ") libmagic=N32;; + *-64|*"-64 ") libmagic=64-bit;; + *) libmagic=never-match;; + esac + lt_cv_deplibs_check_method=pass_all + ;; + +# This must be glibc/ELF. +linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) + lt_cv_deplibs_check_method=pass_all + ;; + +netbsd* | netbsdelf*-gnu) + if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then + lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$' + else + lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|_pic\.a)$' + fi + ;; + +newos6*) + lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (executable|dynamic lib)' + lt_cv_file_magic_cmd=/usr/bin/file + lt_cv_file_magic_test_file=/usr/lib/libnls.so + ;; + +*nto* | *qnx*) + lt_cv_deplibs_check_method=pass_all + ;; + +openbsd* | bitrig*) + if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then + lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|\.so|_pic\.a)$' + else + lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$' + fi + ;; + +osf3* | osf4* | osf5*) + lt_cv_deplibs_check_method=pass_all + ;; + +rdos*) + lt_cv_deplibs_check_method=pass_all + ;; + +solaris*) + lt_cv_deplibs_check_method=pass_all + ;; + +sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) + lt_cv_deplibs_check_method=pass_all + ;; + +sysv4 | sysv4.3*) + case $host_vendor in + motorola) + lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib) M[0-9][0-9]* Version [0-9]' + lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*` + ;; + ncr) + lt_cv_deplibs_check_method=pass_all + ;; + sequent) + lt_cv_file_magic_cmd='/bin/file' + lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB (shared object|dynamic lib )' + ;; + sni) + lt_cv_file_magic_cmd='/bin/file' + lt_cv_deplibs_check_method="file_magic ELF [0-9][0-9]*-bit [LM]SB dynamic lib" + lt_cv_file_magic_test_file=/lib/libc.so + ;; + siemens) + lt_cv_deplibs_check_method=pass_all + ;; + pc) + lt_cv_deplibs_check_method=pass_all + ;; + esac + ;; + +tpf*) + lt_cv_deplibs_check_method=pass_all + ;; +os2*) + lt_cv_deplibs_check_method=pass_all + ;; +esac + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_deplibs_check_method" >&5 +$as_echo "$lt_cv_deplibs_check_method" >&6; } + +file_magic_glob= +want_nocaseglob=no +if test "$build" = "$host"; then + case $host_os in + mingw* | pw32*) + if ( shopt | grep nocaseglob ) >/dev/null 2>&1; then + want_nocaseglob=yes + else + file_magic_glob=`echo aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ | $SED -e "s/\(..\)/s\/[\1]\/[\1]\/g;/g"` + fi + ;; + esac +fi + +file_magic_cmd=$lt_cv_file_magic_cmd +deplibs_check_method=$lt_cv_deplibs_check_method +test -z "$deplibs_check_method" && deplibs_check_method=unknown + + + + + + + + + + + + + + + + + + + + + + +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}dlltool", so it can be a program name with args. +set dummy ${ac_tool_prefix}dlltool; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_DLLTOOL+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$DLLTOOL"; then + ac_cv_prog_DLLTOOL="$DLLTOOL" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_DLLTOOL="${ac_tool_prefix}dlltool" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +DLLTOOL=$ac_cv_prog_DLLTOOL +if test -n "$DLLTOOL"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DLLTOOL" >&5 +$as_echo "$DLLTOOL" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_DLLTOOL"; then + ac_ct_DLLTOOL=$DLLTOOL + # Extract the first word of "dlltool", so it can be a program name with args. +set dummy dlltool; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_DLLTOOL+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_DLLTOOL"; then + ac_cv_prog_ac_ct_DLLTOOL="$ac_ct_DLLTOOL" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_DLLTOOL="dlltool" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_DLLTOOL=$ac_cv_prog_ac_ct_DLLTOOL +if test -n "$ac_ct_DLLTOOL"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DLLTOOL" >&5 +$as_echo "$ac_ct_DLLTOOL" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_DLLTOOL" = x; then + DLLTOOL="false" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + DLLTOOL=$ac_ct_DLLTOOL + fi +else + DLLTOOL="$ac_cv_prog_DLLTOOL" +fi + +test -z "$DLLTOOL" && DLLTOOL=dlltool + + + + + + + + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to associate runtime and link libraries" >&5 +$as_echo_n "checking how to associate runtime and link libraries... " >&6; } +if ${lt_cv_sharedlib_from_linklib_cmd+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_sharedlib_from_linklib_cmd='unknown' + +case $host_os in +cygwin* | mingw* | pw32* | cegcc*) + # two different shell functions defined in ltmain.sh; + # decide which one to use based on capabilities of $DLLTOOL + case `$DLLTOOL --help 2>&1` in + *--identify-strict*) + lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib + ;; + *) + lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib_fallback + ;; + esac + ;; +*) + # fallback: assume linklib IS sharedlib + lt_cv_sharedlib_from_linklib_cmd=$ECHO + ;; +esac + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sharedlib_from_linklib_cmd" >&5 +$as_echo "$lt_cv_sharedlib_from_linklib_cmd" >&6; } +sharedlib_from_linklib_cmd=$lt_cv_sharedlib_from_linklib_cmd +test -z "$sharedlib_from_linklib_cmd" && sharedlib_from_linklib_cmd=$ECHO + + + + + + + + +if test -n "$ac_tool_prefix"; then + for ac_prog in ar + do + # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. +set dummy $ac_tool_prefix$ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_AR+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$AR"; then + ac_cv_prog_AR="$AR" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_AR="$ac_tool_prefix$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +AR=$ac_cv_prog_AR +if test -n "$AR"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AR" >&5 +$as_echo "$AR" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$AR" && break + done +fi +if test -z "$AR"; then + ac_ct_AR=$AR + for ac_prog in ar +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_AR+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_AR"; then + ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_AR="$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_AR=$ac_cv_prog_ac_ct_AR +if test -n "$ac_ct_AR"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AR" >&5 +$as_echo "$ac_ct_AR" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$ac_ct_AR" && break +done + + if test "x$ac_ct_AR" = x; then + AR="false" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + AR=$ac_ct_AR + fi +fi + +: ${AR=ar} +: ${AR_FLAGS=cru} + + + + + + + + + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for archiver @FILE support" >&5 +$as_echo_n "checking for archiver @FILE support... " >&6; } +if ${lt_cv_ar_at_file+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_ar_at_file=no + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_cxx_try_compile "$LINENO"; then : + echo conftest.$ac_objext > conftest.lst + lt_ar_try='$AR $AR_FLAGS libconftest.a @conftest.lst >&5' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$lt_ar_try\""; } >&5 + (eval $lt_ar_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } + if test 0 -eq "$ac_status"; then + # Ensure the archiver fails upon bogus file names. + rm -f conftest.$ac_objext libconftest.a + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$lt_ar_try\""; } >&5 + (eval $lt_ar_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } + if test 0 -ne "$ac_status"; then + lt_cv_ar_at_file=@ + fi + fi + rm -f conftest.* libconftest.a + +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ar_at_file" >&5 +$as_echo "$lt_cv_ar_at_file" >&6; } + +if test no = "$lt_cv_ar_at_file"; then + archiver_list_spec= +else + archiver_list_spec=$lt_cv_ar_at_file +fi + + + + + + + +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. +set dummy ${ac_tool_prefix}strip; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_STRIP+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$STRIP"; then + ac_cv_prog_STRIP="$STRIP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_STRIP="${ac_tool_prefix}strip" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +STRIP=$ac_cv_prog_STRIP +if test -n "$STRIP"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5 +$as_echo "$STRIP" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_STRIP"; then + ac_ct_STRIP=$STRIP + # Extract the first word of "strip", so it can be a program name with args. +set dummy strip; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_STRIP+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_STRIP"; then + ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_STRIP="strip" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP +if test -n "$ac_ct_STRIP"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5 +$as_echo "$ac_ct_STRIP" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_STRIP" = x; then + STRIP=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + STRIP=$ac_ct_STRIP + fi +else + STRIP="$ac_cv_prog_STRIP" +fi + +test -z "$STRIP" && STRIP=: + + + + + + +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. +set dummy ${ac_tool_prefix}ranlib; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_RANLIB+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$RANLIB"; then + ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +RANLIB=$ac_cv_prog_RANLIB +if test -n "$RANLIB"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $RANLIB" >&5 +$as_echo "$RANLIB" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_RANLIB"; then + ac_ct_RANLIB=$RANLIB + # Extract the first word of "ranlib", so it can be a program name with args. +set dummy ranlib; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_RANLIB+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_RANLIB"; then + ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_RANLIB="ranlib" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB +if test -n "$ac_ct_RANLIB"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_RANLIB" >&5 +$as_echo "$ac_ct_RANLIB" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_RANLIB" = x; then + RANLIB=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + RANLIB=$ac_ct_RANLIB + fi +else + RANLIB="$ac_cv_prog_RANLIB" +fi + +test -z "$RANLIB" && RANLIB=: + + + + + + +# Determine commands to create old-style static archives. +old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs' +old_postinstall_cmds='chmod 644 $oldlib' +old_postuninstall_cmds= + +if test -n "$RANLIB"; then + case $host_os in + bitrig* | openbsd*) + old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$tool_oldlib" + ;; + *) + old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$tool_oldlib" + ;; + esac + old_archive_cmds="$old_archive_cmds~\$RANLIB \$tool_oldlib" +fi + +case $host_os in + darwin*) + lock_old_archive_extraction=yes ;; + *) + lock_old_archive_extraction=no ;; +esac + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +# If no C compiler was specified, use CC. +LTCC=${LTCC-"$CC"} + +# If no C compiler flags were specified, use CFLAGS. +LTCFLAGS=${LTCFLAGS-"$CFLAGS"} + +# Allow CC to be a program name with arguments. +compiler=$CC + + +# Check for command to grab the raw symbol name followed by C symbol from nm. +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking command to parse $NM output from $compiler object" >&5 +$as_echo_n "checking command to parse $NM output from $compiler object... " >&6; } +if ${lt_cv_sys_global_symbol_pipe+:} false; then : + $as_echo_n "(cached) " >&6 +else + +# These are sane defaults that work on at least a few old systems. +# [They come from Ultrix. What could be older than Ultrix?!! ;)] + +# Character class describing NM global symbol codes. +symcode='[BCDEGRST]' + +# Regexp to match symbols that can be accessed directly from C. +sympat='\([_A-Za-z][_A-Za-z0-9]*\)' + +# Define system-specific variables. +case $host_os in +aix*) + symcode='[BCDT]' + ;; +cygwin* | mingw* | pw32* | cegcc*) + symcode='[ABCDGISTW]' + ;; +hpux*) + if test ia64 = "$host_cpu"; then + symcode='[ABCDEGRST]' + fi + ;; +irix* | nonstopux*) + symcode='[BCDEGRST]' + ;; +osf*) + symcode='[BCDEGQRST]' + ;; +solaris*) + symcode='[BDRT]' + ;; +sco3.2v5*) + symcode='[DT]' + ;; +sysv4.2uw2*) + symcode='[DT]' + ;; +sysv5* | sco5v6* | unixware* | OpenUNIX*) + symcode='[ABDT]' + ;; +sysv4) + symcode='[DFNSTU]' + ;; +esac + +# If we're using GNU nm, then use its standard symbol codes. +case `$NM -V 2>&1` in +*GNU* | *'with BFD'*) + symcode='[ABCDGIRSTW]' ;; +esac + +if test "$lt_cv_nm_interface" = "MS dumpbin"; then + # Gets list of data symbols to import. + lt_cv_sys_global_symbol_to_import="sed -n -e 's/^I .* \(.*\)$/\1/p'" + # Adjust the below global symbol transforms to fixup imported variables. + lt_cdecl_hook=" -e 's/^I .* \(.*\)$/extern __declspec(dllimport) char \1;/p'" + lt_c_name_hook=" -e 's/^I .* \(.*\)$/ {\"\1\", (void *) 0},/p'" + lt_c_name_lib_hook="\ + -e 's/^I .* \(lib.*\)$/ {\"\1\", (void *) 0},/p'\ + -e 's/^I .* \(.*\)$/ {\"lib\1\", (void *) 0},/p'" +else + # Disable hooks by default. + lt_cv_sys_global_symbol_to_import= + lt_cdecl_hook= + lt_c_name_hook= + lt_c_name_lib_hook= +fi + +# Transform an extracted symbol line into a proper C declaration. +# Some systems (esp. on ia64) link data and code symbols differently, +# so use this general approach. +lt_cv_sys_global_symbol_to_cdecl="sed -n"\ +$lt_cdecl_hook\ +" -e 's/^T .* \(.*\)$/extern int \1();/p'"\ +" -e 's/^$symcode$symcode* .* \(.*\)$/extern char \1;/p'" + +# Transform an extracted symbol line into symbol name and symbol address +lt_cv_sys_global_symbol_to_c_name_address="sed -n"\ +$lt_c_name_hook\ +" -e 's/^: \(.*\) .*$/ {\"\1\", (void *) 0},/p'"\ +" -e 's/^$symcode$symcode* .* \(.*\)$/ {\"\1\", (void *) \&\1},/p'" + +# Transform an extracted symbol line into symbol name with lib prefix and +# symbol address. +lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n"\ +$lt_c_name_lib_hook\ +" -e 's/^: \(.*\) .*$/ {\"\1\", (void *) 0},/p'"\ +" -e 's/^$symcode$symcode* .* \(lib.*\)$/ {\"\1\", (void *) \&\1},/p'"\ +" -e 's/^$symcode$symcode* .* \(.*\)$/ {\"lib\1\", (void *) \&\1},/p'" + +# Handle CRLF in mingw tool chain +opt_cr= +case $build_os in +mingw*) + opt_cr=`$ECHO 'x\{0,1\}' | tr x '\015'` # option cr in regexp + ;; +esac + +# Try without a prefix underscore, then with it. +for ac_symprfx in "" "_"; do + + # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol. + symxfrm="\\1 $ac_symprfx\\2 \\2" + + # Write the raw and C identifiers. + if test "$lt_cv_nm_interface" = "MS dumpbin"; then + # Fake it for dumpbin and say T for any non-static function, + # D for any global variable and I for any imported variable. + # Also find C++ and __fastcall symbols from MSVC++, + # which start with @ or ?. + lt_cv_sys_global_symbol_pipe="$AWK '"\ +" {last_section=section; section=\$ 3};"\ +" /^COFF SYMBOL TABLE/{for(i in hide) delete hide[i]};"\ +" /Section length .*#relocs.*(pick any)/{hide[last_section]=1};"\ +" /^ *Symbol name *: /{split(\$ 0,sn,\":\"); si=substr(sn[2],2)};"\ +" /^ *Type *: code/{print \"T\",si,substr(si,length(prfx))};"\ +" /^ *Type *: data/{print \"I\",si,substr(si,length(prfx))};"\ +" \$ 0!~/External *\|/{next};"\ +" / 0+ UNDEF /{next}; / UNDEF \([^|]\)*()/{next};"\ +" {if(hide[section]) next};"\ +" {f=\"D\"}; \$ 0~/\(\).*\|/{f=\"T\"};"\ +" {split(\$ 0,a,/\||\r/); split(a[2],s)};"\ +" s[1]~/^[@?]/{print f,s[1],s[1]; next};"\ +" s[1]~prfx {split(s[1],t,\"@\"); print f,t[1],substr(t[1],length(prfx))}"\ +" ' prfx=^$ac_symprfx" + else + lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[ ]\($symcode$symcode*\)[ ][ ]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'" + fi + lt_cv_sys_global_symbol_pipe="$lt_cv_sys_global_symbol_pipe | sed '/ __gnu_lto/d'" + + # Check to see that the pipe works correctly. + pipe_works=no + + rm -f conftest* + cat > conftest.$ac_ext <<_LT_EOF +#ifdef __cplusplus +extern "C" { +#endif +char nm_test_var; +void nm_test_func(void); +void nm_test_func(void){} +#ifdef __cplusplus +} +#endif +int main(){nm_test_var='a';nm_test_func();return(0);} +_LT_EOF + + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + # Now try to grab the symbols. + nlist=conftest.nm + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist\""; } >&5 + (eval $NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && test -s "$nlist"; then + # Try sorting and uniquifying the output. + if sort "$nlist" | uniq > "$nlist"T; then + mv -f "$nlist"T "$nlist" + else + rm -f "$nlist"T + fi + + # Make sure that we snagged all the symbols we need. + if $GREP ' nm_test_var$' "$nlist" >/dev/null; then + if $GREP ' nm_test_func$' "$nlist" >/dev/null; then + cat <<_LT_EOF > conftest.$ac_ext +/* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests. */ +#if defined _WIN32 || defined __CYGWIN__ || defined _WIN32_WCE +/* DATA imports from DLLs on WIN32 can't be const, because runtime + relocations are performed -- see ld's documentation on pseudo-relocs. */ +# define LT_DLSYM_CONST +#elif defined __osf__ +/* This system does not cope well with relocations in const data. */ +# define LT_DLSYM_CONST +#else +# define LT_DLSYM_CONST const +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +_LT_EOF + # Now generate the symbol file. + eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | $GREP -v main >> conftest.$ac_ext' + + cat <<_LT_EOF >> conftest.$ac_ext + +/* The mapping between symbol names and symbols. */ +LT_DLSYM_CONST struct { + const char *name; + void *address; +} +lt__PROGRAM__LTX_preloaded_symbols[] = +{ + { "@PROGRAM@", (void *) 0 }, +_LT_EOF + $SED "s/^$symcode$symcode* .* \(.*\)$/ {\"\1\", (void *) \&\1},/" < "$nlist" | $GREP -v main >> conftest.$ac_ext + cat <<\_LT_EOF >> conftest.$ac_ext + {0, (void *) 0} +}; + +/* This works around a problem in FreeBSD linker */ +#ifdef FREEBSD_WORKAROUND +static const void *lt_preloaded_setup() { + return lt__PROGRAM__LTX_preloaded_symbols; +} +#endif + +#ifdef __cplusplus +} +#endif +_LT_EOF + # Now try linking the two files. + mv conftest.$ac_objext conftstm.$ac_objext + lt_globsym_save_LIBS=$LIBS + lt_globsym_save_CFLAGS=$CFLAGS + LIBS=conftstm.$ac_objext + CFLAGS="$CFLAGS$lt_prog_compiler_no_builtin_flag" + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 + (eval $ac_link) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && test -s conftest$ac_exeext; then + pipe_works=yes + fi + LIBS=$lt_globsym_save_LIBS + CFLAGS=$lt_globsym_save_CFLAGS + else + echo "cannot find nm_test_func in $nlist" >&5 + fi + else + echo "cannot find nm_test_var in $nlist" >&5 + fi + else + echo "cannot run $lt_cv_sys_global_symbol_pipe" >&5 + fi + else + echo "$progname: failed program was:" >&5 + cat conftest.$ac_ext >&5 + fi + rm -rf conftest* conftst* + + # Do not use the global_symbol_pipe unless it works. + if test yes = "$pipe_works"; then + break + else + lt_cv_sys_global_symbol_pipe= + fi +done + +fi + +if test -z "$lt_cv_sys_global_symbol_pipe"; then + lt_cv_sys_global_symbol_to_cdecl= +fi +if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: failed" >&5 +$as_echo "failed" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: ok" >&5 +$as_echo "ok" >&6; } +fi + +# Response file support. +if test "$lt_cv_nm_interface" = "MS dumpbin"; then + nm_file_list_spec='@' +elif $NM --help 2>/dev/null | grep '[@]FILE' >/dev/null; then + nm_file_list_spec='@' +fi + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for sysroot" >&5 +$as_echo_n "checking for sysroot... " >&6; } + +# Check whether --with-sysroot was given. +if test "${with_sysroot+set}" = set; then : + withval=$with_sysroot; +else + with_sysroot=no +fi + + +lt_sysroot= +case $with_sysroot in #( + yes) + if test yes = "$GCC"; then + lt_sysroot=`$CC --print-sysroot 2>/dev/null` + fi + ;; #( + /*) + lt_sysroot=`echo "$with_sysroot" | sed -e "$sed_quote_subst"` + ;; #( + no|'') + ;; #( + *) + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $with_sysroot" >&5 +$as_echo "$with_sysroot" >&6; } + as_fn_error $? "The sysroot must be an absolute path." "$LINENO" 5 + ;; +esac + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${lt_sysroot:-no}" >&5 +$as_echo "${lt_sysroot:-no}" >&6; } + + + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a working dd" >&5 +$as_echo_n "checking for a working dd... " >&6; } +if ${ac_cv_path_lt_DD+:} false; then : + $as_echo_n "(cached) " >&6 +else + printf 0123456789abcdef0123456789abcdef >conftest.i +cat conftest.i conftest.i >conftest2.i +: ${lt_DD:=$DD} +if test -z "$lt_DD"; then + ac_path_lt_DD_found=false + # Loop through the user's path and test for each of PROGNAME-LIST + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_prog in dd; do + for ac_exec_ext in '' $ac_executable_extensions; do + ac_path_lt_DD="$as_dir/$ac_prog$ac_exec_ext" + as_fn_executable_p "$ac_path_lt_DD" || continue +if "$ac_path_lt_DD" bs=32 count=1 conftest.out 2>/dev/null; then + cmp -s conftest.i conftest.out \ + && ac_cv_path_lt_DD="$ac_path_lt_DD" ac_path_lt_DD_found=: +fi + $ac_path_lt_DD_found && break 3 + done + done + done +IFS=$as_save_IFS + if test -z "$ac_cv_path_lt_DD"; then + : + fi +else + ac_cv_path_lt_DD=$lt_DD +fi + +rm -f conftest.i conftest2.i conftest.out +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_lt_DD" >&5 +$as_echo "$ac_cv_path_lt_DD" >&6; } + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to truncate binary pipes" >&5 +$as_echo_n "checking how to truncate binary pipes... " >&6; } +if ${lt_cv_truncate_bin+:} false; then : + $as_echo_n "(cached) " >&6 +else + printf 0123456789abcdef0123456789abcdef >conftest.i +cat conftest.i conftest.i >conftest2.i +lt_cv_truncate_bin= +if "$ac_cv_path_lt_DD" bs=32 count=1 conftest.out 2>/dev/null; then + cmp -s conftest.i conftest.out \ + && lt_cv_truncate_bin="$ac_cv_path_lt_DD bs=4096 count=1" +fi +rm -f conftest.i conftest2.i conftest.out +test -z "$lt_cv_truncate_bin" && lt_cv_truncate_bin="$SED -e 4q" +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_truncate_bin" >&5 +$as_echo "$lt_cv_truncate_bin" >&6; } + + + + + + + +# Calculate cc_basename. Skip known compiler wrappers and cross-prefix. +func_cc_basename () +{ + for cc_temp in $*""; do + case $cc_temp in + compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; + distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; + \-*) ;; + *) break;; + esac + done + func_cc_basename_result=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"` +} + +# Check whether --enable-libtool-lock was given. +if test "${enable_libtool_lock+set}" = set; then : + enableval=$enable_libtool_lock; +fi + +test no = "$enable_libtool_lock" || enable_libtool_lock=yes + +# Some flags need to be propagated to the compiler or linker for good +# libtool support. +case $host in +ia64-*-hpux*) + # Find out what ABI is being produced by ac_compile, and set mode + # options accordingly. + echo 'int i;' > conftest.$ac_ext + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + case `/usr/bin/file conftest.$ac_objext` in + *ELF-32*) + HPUX_IA64_MODE=32 + ;; + *ELF-64*) + HPUX_IA64_MODE=64 + ;; + esac + fi + rm -rf conftest* + ;; +*-*-irix6*) + # Find out what ABI is being produced by ac_compile, and set linker + # options accordingly. + echo '#line '$LINENO' "configure"' > conftest.$ac_ext + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + if test yes = "$lt_cv_prog_gnu_ld"; then + case `/usr/bin/file conftest.$ac_objext` in + *32-bit*) + LD="${LD-ld} -melf32bsmip" + ;; + *N32*) + LD="${LD-ld} -melf32bmipn32" + ;; + *64-bit*) + LD="${LD-ld} -melf64bmip" + ;; + esac + else + case `/usr/bin/file conftest.$ac_objext` in + *32-bit*) + LD="${LD-ld} -32" + ;; + *N32*) + LD="${LD-ld} -n32" + ;; + *64-bit*) + LD="${LD-ld} -64" + ;; + esac + fi + fi + rm -rf conftest* + ;; + +mips64*-*linux*) + # Find out what ABI is being produced by ac_compile, and set linker + # options accordingly. + echo '#line '$LINENO' "configure"' > conftest.$ac_ext + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + emul=elf + case `/usr/bin/file conftest.$ac_objext` in + *32-bit*) + emul="${emul}32" + ;; + *64-bit*) + emul="${emul}64" + ;; + esac + case `/usr/bin/file conftest.$ac_objext` in + *MSB*) + emul="${emul}btsmip" + ;; + *LSB*) + emul="${emul}ltsmip" + ;; + esac + case `/usr/bin/file conftest.$ac_objext` in + *N32*) + emul="${emul}n32" + ;; + esac + LD="${LD-ld} -m $emul" + fi + rm -rf conftest* + ;; + +x86_64-*kfreebsd*-gnu|x86_64-*linux*|powerpc*-*linux*| \ +s390*-*linux*|s390*-*tpf*|sparc*-*linux*) + # Find out what ABI is being produced by ac_compile, and set linker + # options accordingly. Note that the listed cases only cover the + # situations where additional linker options are needed (such as when + # doing 32-bit compilation for a host where ld defaults to 64-bit, or + # vice versa); the common cases where no linker options are needed do + # not appear in the list. + echo 'int i;' > conftest.$ac_ext + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + case `/usr/bin/file conftest.o` in + *32-bit*) + case $host in + x86_64-*kfreebsd*-gnu) + LD="${LD-ld} -m elf_i386_fbsd" + ;; + x86_64-*linux*) + case `/usr/bin/file conftest.o` in + *x86-64*) + LD="${LD-ld} -m elf32_x86_64" + ;; + *) + LD="${LD-ld} -m elf_i386" + ;; + esac + ;; + powerpc64le-*linux*) + LD="${LD-ld} -m elf32lppclinux" + ;; + powerpc64-*linux*) + LD="${LD-ld} -m elf32ppclinux" + ;; + s390x-*linux*) + LD="${LD-ld} -m elf_s390" + ;; + sparc64-*linux*) + LD="${LD-ld} -m elf32_sparc" + ;; + esac + ;; + *64-bit*) + case $host in + x86_64-*kfreebsd*-gnu) + LD="${LD-ld} -m elf_x86_64_fbsd" + ;; + x86_64-*linux*) + LD="${LD-ld} -m elf_x86_64" + ;; + powerpcle-*linux*) + LD="${LD-ld} -m elf64lppc" + ;; + powerpc-*linux*) + LD="${LD-ld} -m elf64ppc" + ;; + s390*-*linux*|s390*-*tpf*) + LD="${LD-ld} -m elf64_s390" + ;; + sparc*-*linux*) + LD="${LD-ld} -m elf64_sparc" + ;; + esac + ;; + esac + fi + rm -rf conftest* + ;; + +*-*-sco3.2v5*) + # On SCO OpenServer 5, we need -belf to get full-featured binaries. + SAVE_CFLAGS=$CFLAGS + CFLAGS="$CFLAGS -belf" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler needs -belf" >&5 +$as_echo_n "checking whether the C compiler needs -belf... " >&6; } +if ${lt_cv_cc_needs_belf+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + lt_cv_cc_needs_belf=yes +else + lt_cv_cc_needs_belf=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_cc_needs_belf" >&5 +$as_echo "$lt_cv_cc_needs_belf" >&6; } + if test yes != "$lt_cv_cc_needs_belf"; then + # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf + CFLAGS=$SAVE_CFLAGS + fi + ;; +*-*solaris*) + # Find out what ABI is being produced by ac_compile, and set linker + # options accordingly. + echo 'int i;' > conftest.$ac_ext + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + case `/usr/bin/file conftest.o` in + *64-bit*) + case $lt_cv_prog_gnu_ld in + yes*) + case $host in + i?86-*-solaris*|x86_64-*-solaris*) + LD="${LD-ld} -m elf_x86_64" + ;; + sparc*-*-solaris*) + LD="${LD-ld} -m elf64_sparc" + ;; + esac + # GNU ld 2.21 introduced _sol2 emulations. Use them if available. + if ${LD-ld} -V | grep _sol2 >/dev/null 2>&1; then + LD=${LD-ld}_sol2 + fi + ;; + *) + if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then + LD="${LD-ld} -64" + fi + ;; + esac + ;; + esac + fi + rm -rf conftest* + ;; +esac + +need_locks=$enable_libtool_lock + +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}mt", so it can be a program name with args. +set dummy ${ac_tool_prefix}mt; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_MANIFEST_TOOL+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$MANIFEST_TOOL"; then + ac_cv_prog_MANIFEST_TOOL="$MANIFEST_TOOL" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_MANIFEST_TOOL="${ac_tool_prefix}mt" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +MANIFEST_TOOL=$ac_cv_prog_MANIFEST_TOOL +if test -n "$MANIFEST_TOOL"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MANIFEST_TOOL" >&5 +$as_echo "$MANIFEST_TOOL" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_MANIFEST_TOOL"; then + ac_ct_MANIFEST_TOOL=$MANIFEST_TOOL + # Extract the first word of "mt", so it can be a program name with args. +set dummy mt; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_MANIFEST_TOOL+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_MANIFEST_TOOL"; then + ac_cv_prog_ac_ct_MANIFEST_TOOL="$ac_ct_MANIFEST_TOOL" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_MANIFEST_TOOL="mt" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_MANIFEST_TOOL=$ac_cv_prog_ac_ct_MANIFEST_TOOL +if test -n "$ac_ct_MANIFEST_TOOL"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_MANIFEST_TOOL" >&5 +$as_echo "$ac_ct_MANIFEST_TOOL" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_MANIFEST_TOOL" = x; then + MANIFEST_TOOL=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + MANIFEST_TOOL=$ac_ct_MANIFEST_TOOL + fi +else + MANIFEST_TOOL="$ac_cv_prog_MANIFEST_TOOL" +fi + +test -z "$MANIFEST_TOOL" && MANIFEST_TOOL=mt +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $MANIFEST_TOOL is a manifest tool" >&5 +$as_echo_n "checking if $MANIFEST_TOOL is a manifest tool... " >&6; } +if ${lt_cv_path_mainfest_tool+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_path_mainfest_tool=no + echo "$as_me:$LINENO: $MANIFEST_TOOL '-?'" >&5 + $MANIFEST_TOOL '-?' 2>conftest.err > conftest.out + cat conftest.err >&5 + if $GREP 'Manifest Tool' conftest.out > /dev/null; then + lt_cv_path_mainfest_tool=yes + fi + rm -f conftest* +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_mainfest_tool" >&5 +$as_echo "$lt_cv_path_mainfest_tool" >&6; } +if test yes != "$lt_cv_path_mainfest_tool"; then + MANIFEST_TOOL=: +fi + + + + + + + case $host_os in + rhapsody* | darwin*) + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}dsymutil", so it can be a program name with args. +set dummy ${ac_tool_prefix}dsymutil; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_DSYMUTIL+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$DSYMUTIL"; then + ac_cv_prog_DSYMUTIL="$DSYMUTIL" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_DSYMUTIL="${ac_tool_prefix}dsymutil" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +DSYMUTIL=$ac_cv_prog_DSYMUTIL +if test -n "$DSYMUTIL"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DSYMUTIL" >&5 +$as_echo "$DSYMUTIL" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_DSYMUTIL"; then + ac_ct_DSYMUTIL=$DSYMUTIL + # Extract the first word of "dsymutil", so it can be a program name with args. +set dummy dsymutil; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_DSYMUTIL+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_DSYMUTIL"; then + ac_cv_prog_ac_ct_DSYMUTIL="$ac_ct_DSYMUTIL" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_DSYMUTIL="dsymutil" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_DSYMUTIL=$ac_cv_prog_ac_ct_DSYMUTIL +if test -n "$ac_ct_DSYMUTIL"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DSYMUTIL" >&5 +$as_echo "$ac_ct_DSYMUTIL" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_DSYMUTIL" = x; then + DSYMUTIL=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + DSYMUTIL=$ac_ct_DSYMUTIL + fi +else + DSYMUTIL="$ac_cv_prog_DSYMUTIL" +fi + + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}nmedit", so it can be a program name with args. +set dummy ${ac_tool_prefix}nmedit; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_NMEDIT+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$NMEDIT"; then + ac_cv_prog_NMEDIT="$NMEDIT" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_NMEDIT="${ac_tool_prefix}nmedit" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +NMEDIT=$ac_cv_prog_NMEDIT +if test -n "$NMEDIT"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $NMEDIT" >&5 +$as_echo "$NMEDIT" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_NMEDIT"; then + ac_ct_NMEDIT=$NMEDIT + # Extract the first word of "nmedit", so it can be a program name with args. +set dummy nmedit; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_NMEDIT+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_NMEDIT"; then + ac_cv_prog_ac_ct_NMEDIT="$ac_ct_NMEDIT" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_NMEDIT="nmedit" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_NMEDIT=$ac_cv_prog_ac_ct_NMEDIT +if test -n "$ac_ct_NMEDIT"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_NMEDIT" >&5 +$as_echo "$ac_ct_NMEDIT" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_NMEDIT" = x; then + NMEDIT=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + NMEDIT=$ac_ct_NMEDIT + fi +else + NMEDIT="$ac_cv_prog_NMEDIT" +fi + + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}lipo", so it can be a program name with args. +set dummy ${ac_tool_prefix}lipo; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_LIPO+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$LIPO"; then + ac_cv_prog_LIPO="$LIPO" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_LIPO="${ac_tool_prefix}lipo" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +LIPO=$ac_cv_prog_LIPO +if test -n "$LIPO"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LIPO" >&5 +$as_echo "$LIPO" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_LIPO"; then + ac_ct_LIPO=$LIPO + # Extract the first word of "lipo", so it can be a program name with args. +set dummy lipo; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_LIPO+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_LIPO"; then + ac_cv_prog_ac_ct_LIPO="$ac_ct_LIPO" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_LIPO="lipo" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_LIPO=$ac_cv_prog_ac_ct_LIPO +if test -n "$ac_ct_LIPO"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_LIPO" >&5 +$as_echo "$ac_ct_LIPO" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_LIPO" = x; then + LIPO=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + LIPO=$ac_ct_LIPO + fi +else + LIPO="$ac_cv_prog_LIPO" +fi + + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}otool", so it can be a program name with args. +set dummy ${ac_tool_prefix}otool; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_OTOOL+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$OTOOL"; then + ac_cv_prog_OTOOL="$OTOOL" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_OTOOL="${ac_tool_prefix}otool" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +OTOOL=$ac_cv_prog_OTOOL +if test -n "$OTOOL"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OTOOL" >&5 +$as_echo "$OTOOL" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_OTOOL"; then + ac_ct_OTOOL=$OTOOL + # Extract the first word of "otool", so it can be a program name with args. +set dummy otool; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_OTOOL+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_OTOOL"; then + ac_cv_prog_ac_ct_OTOOL="$ac_ct_OTOOL" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_OTOOL="otool" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_OTOOL=$ac_cv_prog_ac_ct_OTOOL +if test -n "$ac_ct_OTOOL"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OTOOL" >&5 +$as_echo "$ac_ct_OTOOL" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_OTOOL" = x; then + OTOOL=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + OTOOL=$ac_ct_OTOOL + fi +else + OTOOL="$ac_cv_prog_OTOOL" +fi + + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}otool64", so it can be a program name with args. +set dummy ${ac_tool_prefix}otool64; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_OTOOL64+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$OTOOL64"; then + ac_cv_prog_OTOOL64="$OTOOL64" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_OTOOL64="${ac_tool_prefix}otool64" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +OTOOL64=$ac_cv_prog_OTOOL64 +if test -n "$OTOOL64"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OTOOL64" >&5 +$as_echo "$OTOOL64" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_OTOOL64"; then + ac_ct_OTOOL64=$OTOOL64 + # Extract the first word of "otool64", so it can be a program name with args. +set dummy otool64; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_OTOOL64+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_OTOOL64"; then + ac_cv_prog_ac_ct_OTOOL64="$ac_ct_OTOOL64" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_OTOOL64="otool64" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_OTOOL64=$ac_cv_prog_ac_ct_OTOOL64 +if test -n "$ac_ct_OTOOL64"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OTOOL64" >&5 +$as_echo "$ac_ct_OTOOL64" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_OTOOL64" = x; then + OTOOL64=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + OTOOL64=$ac_ct_OTOOL64 + fi +else + OTOOL64="$ac_cv_prog_OTOOL64" +fi + + + + + + + + + + + + + + + + + + + + + + + + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -single_module linker flag" >&5 +$as_echo_n "checking for -single_module linker flag... " >&6; } +if ${lt_cv_apple_cc_single_mod+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_apple_cc_single_mod=no + if test -z "$LT_MULTI_MODULE"; then + # By default we will add the -single_module flag. You can override + # by either setting the environment variable LT_MULTI_MODULE + # non-empty at configure time, or by adding -multi_module to the + # link flags. + rm -rf libconftest.dylib* + echo "int foo(void){return 1;}" > conftest.c + echo "$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ +-dynamiclib -Wl,-single_module conftest.c" >&5 + $LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ + -dynamiclib -Wl,-single_module conftest.c 2>conftest.err + _lt_result=$? + # If there is a non-empty error log, and "single_module" + # appears in it, assume the flag caused a linker warning + if test -s conftest.err && $GREP single_module conftest.err; then + cat conftest.err >&5 + # Otherwise, if the output was created with a 0 exit code from + # the compiler, it worked. + elif test -f libconftest.dylib && test 0 = "$_lt_result"; then + lt_cv_apple_cc_single_mod=yes + else + cat conftest.err >&5 + fi + rm -rf libconftest.dylib* + rm -f conftest.* + fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_apple_cc_single_mod" >&5 +$as_echo "$lt_cv_apple_cc_single_mod" >&6; } + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -exported_symbols_list linker flag" >&5 +$as_echo_n "checking for -exported_symbols_list linker flag... " >&6; } +if ${lt_cv_ld_exported_symbols_list+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_ld_exported_symbols_list=no + save_LDFLAGS=$LDFLAGS + echo "_main" > conftest.sym + LDFLAGS="$LDFLAGS -Wl,-exported_symbols_list,conftest.sym" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + lt_cv_ld_exported_symbols_list=yes +else + lt_cv_ld_exported_symbols_list=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + LDFLAGS=$save_LDFLAGS + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_exported_symbols_list" >&5 +$as_echo "$lt_cv_ld_exported_symbols_list" >&6; } + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -force_load linker flag" >&5 +$as_echo_n "checking for -force_load linker flag... " >&6; } +if ${lt_cv_ld_force_load+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_ld_force_load=no + cat > conftest.c << _LT_EOF +int forced_loaded() { return 2;} +_LT_EOF + echo "$LTCC $LTCFLAGS -c -o conftest.o conftest.c" >&5 + $LTCC $LTCFLAGS -c -o conftest.o conftest.c 2>&5 + echo "$AR cru libconftest.a conftest.o" >&5 + $AR cru libconftest.a conftest.o 2>&5 + echo "$RANLIB libconftest.a" >&5 + $RANLIB libconftest.a 2>&5 + cat > conftest.c << _LT_EOF +int main() { return 0;} +_LT_EOF + echo "$LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a" >&5 + $LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a 2>conftest.err + _lt_result=$? + if test -s conftest.err && $GREP force_load conftest.err; then + cat conftest.err >&5 + elif test -f conftest && test 0 = "$_lt_result" && $GREP forced_load conftest >/dev/null 2>&1; then + lt_cv_ld_force_load=yes + else + cat conftest.err >&5 + fi + rm -f conftest.err libconftest.a conftest conftest.c + rm -rf conftest.dSYM + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_force_load" >&5 +$as_echo "$lt_cv_ld_force_load" >&6; } + case $host_os in + rhapsody* | darwin1.[012]) + _lt_dar_allow_undefined='$wl-undefined ${wl}suppress' ;; + darwin1.*) + _lt_dar_allow_undefined='$wl-flat_namespace $wl-undefined ${wl}suppress' ;; + darwin*) # darwin 5.x on + # if running on 10.5 or later, the deployment target defaults + # to the OS version, if on x86, and 10.4, the deployment + # target defaults to 10.4. Don't you love it? + case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in + 10.0,*86*-darwin8*|10.0,*-darwin[91]*) + _lt_dar_allow_undefined='$wl-undefined ${wl}dynamic_lookup' ;; + 10.[012][,.]*) + _lt_dar_allow_undefined='$wl-flat_namespace $wl-undefined ${wl}suppress' ;; + 10.*) + _lt_dar_allow_undefined='$wl-undefined ${wl}dynamic_lookup' ;; + esac + ;; + esac + if test yes = "$lt_cv_apple_cc_single_mod"; then + _lt_dar_single_mod='$single_module' + fi + if test yes = "$lt_cv_ld_exported_symbols_list"; then + _lt_dar_export_syms=' $wl-exported_symbols_list,$output_objdir/$libname-symbols.expsym' + else + _lt_dar_export_syms='~$NMEDIT -s $output_objdir/$libname-symbols.expsym $lib' + fi + if test : != "$DSYMUTIL" && test no = "$lt_cv_ld_force_load"; then + _lt_dsymutil='~$DSYMUTIL $lib || :' + else + _lt_dsymutil= + fi + ;; + esac + +# func_munge_path_list VARIABLE PATH +# ----------------------------------- +# VARIABLE is name of variable containing _space_ separated list of +# directories to be munged by the contents of PATH, which is string +# having a format: +# "DIR[:DIR]:" +# string "DIR[ DIR]" will be prepended to VARIABLE +# ":DIR[:DIR]" +# string "DIR[ DIR]" will be appended to VARIABLE +# "DIRP[:DIRP]::[DIRA:]DIRA" +# string "DIRP[ DIRP]" will be prepended to VARIABLE and string +# "DIRA[ DIRA]" will be appended to VARIABLE +# "DIR[:DIR]" +# VARIABLE will be replaced by "DIR[ DIR]" +func_munge_path_list () +{ + case x$2 in + x) + ;; + *:) + eval $1=\"`$ECHO $2 | $SED 's/:/ /g'` \$$1\" + ;; + x:*) + eval $1=\"\$$1 `$ECHO $2 | $SED 's/:/ /g'`\" + ;; + *::*) + eval $1=\"\$$1\ `$ECHO $2 | $SED -e 's/.*:://' -e 's/:/ /g'`\" + eval $1=\"`$ECHO $2 | $SED -e 's/::.*//' -e 's/:/ /g'`\ \$$1\" + ;; + *) + eval $1=\"`$ECHO $2 | $SED 's/:/ /g'`\" + ;; + esac +} + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5 +$as_echo_n "checking how to run the C preprocessor... " >&6; } +# On Suns, sometimes $CPP names a directory. +if test -n "$CPP" && test -d "$CPP"; then + CPP= +fi +if test -z "$CPP"; then + if ${ac_cv_prog_CPP+:} false; then : + $as_echo_n "(cached) " >&6 +else + # Double quotes because CPP needs to be expanded + for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp" + do + ac_preproc_ok=false +for ac_c_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # Prefer to if __STDC__ is defined, since + # exists even on freestanding compilers. + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. "Syntax error" is here to catch this case. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#ifdef __STDC__ +# include +#else +# include +#endif + Syntax error +_ACEOF +if ac_fn_c_try_cpp "$LINENO"; then : + +else + # Broken: fails on valid input. +continue +fi +rm -f conftest.err conftest.i conftest.$ac_ext + + # OK, works on sane cases. Now check whether nonexistent headers + # can be detected and how. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +_ACEOF +if ac_fn_c_try_cpp "$LINENO"; then : + # Broken: success on invalid input. +continue +else + # Passes both tests. +ac_preproc_ok=: +break +fi +rm -f conftest.err conftest.i conftest.$ac_ext + +done +# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. +rm -f conftest.i conftest.err conftest.$ac_ext +if $ac_preproc_ok; then : + break +fi + + done + ac_cv_prog_CPP=$CPP + +fi + CPP=$ac_cv_prog_CPP +else + ac_cv_prog_CPP=$CPP +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5 +$as_echo "$CPP" >&6; } +ac_preproc_ok=false +for ac_c_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # Prefer to if __STDC__ is defined, since + # exists even on freestanding compilers. + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. "Syntax error" is here to catch this case. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#ifdef __STDC__ +# include +#else +# include +#endif + Syntax error +_ACEOF +if ac_fn_c_try_cpp "$LINENO"; then : + +else + # Broken: fails on valid input. +continue +fi +rm -f conftest.err conftest.i conftest.$ac_ext + + # OK, works on sane cases. Now check whether nonexistent headers + # can be detected and how. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +_ACEOF +if ac_fn_c_try_cpp "$LINENO"; then : + # Broken: success on invalid input. +continue +else + # Passes both tests. +ac_preproc_ok=: +break +fi +rm -f conftest.err conftest.i conftest.$ac_ext + +done +# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. +rm -f conftest.i conftest.err conftest.$ac_ext +if $ac_preproc_ok; then : + +else + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "C preprocessor \"$CPP\" fails sanity check +See \`config.log' for more details" "$LINENO" 5; } +fi + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5 +$as_echo_n "checking for ANSI C header files... " >&6; } +if ${ac_cv_header_stdc+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#include +#include +#include + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_header_stdc=yes +else + ac_cv_header_stdc=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + +if test $ac_cv_header_stdc = yes; then + # SunOS 4.x string.h does not declare mem*, contrary to ANSI. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "memchr" >/dev/null 2>&1; then : + +else + ac_cv_header_stdc=no +fi +rm -f conftest* + +fi + +if test $ac_cv_header_stdc = yes; then + # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "free" >/dev/null 2>&1; then : + +else + ac_cv_header_stdc=no +fi +rm -f conftest* + +fi + +if test $ac_cv_header_stdc = yes; then + # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. + if test "$cross_compiling" = yes; then : + : +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#include +#if ((' ' & 0x0FF) == 0x020) +# define ISLOWER(c) ('a' <= (c) && (c) <= 'z') +# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) +#else +# define ISLOWER(c) \ + (('a' <= (c) && (c) <= 'i') \ + || ('j' <= (c) && (c) <= 'r') \ + || ('s' <= (c) && (c) <= 'z')) +# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) +#endif + +#define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) +int +main () +{ + int i; + for (i = 0; i < 256; i++) + if (XOR (islower (i), ISLOWER (i)) + || toupper (i) != TOUPPER (i)) + return 2; + return 0; +} +_ACEOF +if ac_fn_c_try_run "$LINENO"; then : + +else + ac_cv_header_stdc=no +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext +fi + +fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5 +$as_echo "$ac_cv_header_stdc" >&6; } +if test $ac_cv_header_stdc = yes; then + +$as_echo "#define STDC_HEADERS 1" >>confdefs.h + +fi + +# On IRIX 5.3, sys/types and inttypes.h are conflicting. +for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \ + inttypes.h stdint.h unistd.h +do : + as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` +ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default +" +if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : + cat >>confdefs.h <<_ACEOF +#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + +fi + +done + + +for ac_header in dlfcn.h +do : + ac_fn_c_check_header_compile "$LINENO" "dlfcn.h" "ac_cv_header_dlfcn_h" "$ac_includes_default +" +if test "x$ac_cv_header_dlfcn_h" = xyes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_DLFCN_H 1 +_ACEOF + +fi + +done + + + +func_stripname_cnf () +{ + case $2 in + .*) func_stripname_result=`$ECHO "$3" | $SED "s%^$1%%; s%\\\\$2\$%%"`;; + *) func_stripname_result=`$ECHO "$3" | $SED "s%^$1%%; s%$2\$%%"`;; + esac +} # func_stripname_cnf + + + + + +# Set options + + + + enable_dlopen=no + + + enable_win32_dll=no + + + # Check whether --enable-shared was given. +if test "${enable_shared+set}" = set; then : + enableval=$enable_shared; p=${PACKAGE-default} + case $enableval in + yes) enable_shared=yes ;; + no) enable_shared=no ;; + *) + enable_shared=no + # Look at the argument we got. We use all the common list separators. + lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, + for pkg in $enableval; do + IFS=$lt_save_ifs + if test "X$pkg" = "X$p"; then + enable_shared=yes + fi + done + IFS=$lt_save_ifs + ;; + esac +else + enable_shared=yes +fi + + + + + + + + + + # Check whether --enable-static was given. +if test "${enable_static+set}" = set; then : + enableval=$enable_static; p=${PACKAGE-default} + case $enableval in + yes) enable_static=yes ;; + no) enable_static=no ;; + *) + enable_static=no + # Look at the argument we got. We use all the common list separators. + lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, + for pkg in $enableval; do + IFS=$lt_save_ifs + if test "X$pkg" = "X$p"; then + enable_static=yes + fi + done + IFS=$lt_save_ifs + ;; + esac +else + enable_static=yes +fi + + + + + + + + + + +# Check whether --with-pic was given. +if test "${with_pic+set}" = set; then : + withval=$with_pic; lt_p=${PACKAGE-default} + case $withval in + yes|no) pic_mode=$withval ;; + *) + pic_mode=default + # Look at the argument we got. We use all the common list separators. + lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, + for lt_pkg in $withval; do + IFS=$lt_save_ifs + if test "X$lt_pkg" = "X$lt_p"; then + pic_mode=yes + fi + done + IFS=$lt_save_ifs + ;; + esac +else + pic_mode=default +fi + + + + + + + + + # Check whether --enable-fast-install was given. +if test "${enable_fast_install+set}" = set; then : + enableval=$enable_fast_install; p=${PACKAGE-default} + case $enableval in + yes) enable_fast_install=yes ;; + no) enable_fast_install=no ;; + *) + enable_fast_install=no + # Look at the argument we got. We use all the common list separators. + lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, + for pkg in $enableval; do + IFS=$lt_save_ifs + if test "X$pkg" = "X$p"; then + enable_fast_install=yes + fi + done + IFS=$lt_save_ifs + ;; + esac +else + enable_fast_install=yes +fi + + + + + + + + + shared_archive_member_spec= +case $host,$enable_shared in +power*-*-aix[5-9]*,yes) + { $as_echo "$as_me:${as_lineno-$LINENO}: checking which variant of shared library versioning to provide" >&5 +$as_echo_n "checking which variant of shared library versioning to provide... " >&6; } + +# Check whether --with-aix-soname was given. +if test "${with_aix_soname+set}" = set; then : + withval=$with_aix_soname; case $withval in + aix|svr4|both) + ;; + *) + as_fn_error $? "Unknown argument to --with-aix-soname" "$LINENO" 5 + ;; + esac + lt_cv_with_aix_soname=$with_aix_soname +else + if ${lt_cv_with_aix_soname+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_with_aix_soname=aix +fi + + with_aix_soname=$lt_cv_with_aix_soname +fi + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $with_aix_soname" >&5 +$as_echo "$with_aix_soname" >&6; } + if test aix != "$with_aix_soname"; then + # For the AIX way of multilib, we name the shared archive member + # based on the bitwidth used, traditionally 'shr.o' or 'shr_64.o', + # and 'shr.imp' or 'shr_64.imp', respectively, for the Import File. + # Even when GNU compilers ignore OBJECT_MODE but need '-maix64' flag, + # the AIX toolchain works better with OBJECT_MODE set (default 32). + if test 64 = "${OBJECT_MODE-32}"; then + shared_archive_member_spec=shr_64 + else + shared_archive_member_spec=shr + fi + fi + ;; +*) + with_aix_soname=aix + ;; +esac + + + + + + + + + + +# This can be used to rebuild libtool when needed +LIBTOOL_DEPS=$ltmain + +# Always use our own libtool. +LIBTOOL='$(SHELL) $(top_builddir)/libtool' + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +test -z "$LN_S" && LN_S="ln -s" + + + + + + + + + + + + + + +if test -n "${ZSH_VERSION+set}"; then + setopt NO_GLOB_SUBST +fi + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for objdir" >&5 +$as_echo_n "checking for objdir... " >&6; } +if ${lt_cv_objdir+:} false; then : + $as_echo_n "(cached) " >&6 +else + rm -f .libs 2>/dev/null +mkdir .libs 2>/dev/null +if test -d .libs; then + lt_cv_objdir=.libs +else + # MS-DOS does not allow filenames that begin with a dot. + lt_cv_objdir=_libs +fi +rmdir .libs 2>/dev/null +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_objdir" >&5 +$as_echo "$lt_cv_objdir" >&6; } +objdir=$lt_cv_objdir + + + + + +cat >>confdefs.h <<_ACEOF +#define LT_OBJDIR "$lt_cv_objdir/" +_ACEOF + + + + +case $host_os in +aix3*) + # AIX sometimes has problems with the GCC collect2 program. For some + # reason, if we set the COLLECT_NAMES environment variable, the problems + # vanish in a puff of smoke. + if test set != "${COLLECT_NAMES+set}"; then + COLLECT_NAMES= + export COLLECT_NAMES + fi + ;; +esac + +# Global variables: +ofile=libtool +can_build_shared=yes + +# All known linkers require a '.a' archive for static linking (except MSVC, +# which needs '.lib'). +libext=a + +with_gnu_ld=$lt_cv_prog_gnu_ld + +old_CC=$CC +old_CFLAGS=$CFLAGS + +# Set sane defaults for various variables +test -z "$CC" && CC=cc +test -z "$LTCC" && LTCC=$CC +test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS +test -z "$LD" && LD=ld +test -z "$ac_objext" && ac_objext=o + +func_cc_basename $compiler +cc_basename=$func_cc_basename_result + + +# Only perform the check for file, if the check method requires it +test -z "$MAGIC_CMD" && MAGIC_CMD=file +case $deplibs_check_method in +file_magic*) + if test "$file_magic_cmd" = '$MAGIC_CMD'; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ${ac_tool_prefix}file" >&5 +$as_echo_n "checking for ${ac_tool_prefix}file... " >&6; } +if ${lt_cv_path_MAGIC_CMD+:} false; then : + $as_echo_n "(cached) " >&6 +else + case $MAGIC_CMD in +[\\/*] | ?:[\\/]*) + lt_cv_path_MAGIC_CMD=$MAGIC_CMD # Let the user override the test with a path. + ;; +*) + lt_save_MAGIC_CMD=$MAGIC_CMD + lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR + ac_dummy="/usr/bin$PATH_SEPARATOR$PATH" + for ac_dir in $ac_dummy; do + IFS=$lt_save_ifs + test -z "$ac_dir" && ac_dir=. + if test -f "$ac_dir/${ac_tool_prefix}file"; then + lt_cv_path_MAGIC_CMD=$ac_dir/"${ac_tool_prefix}file" + if test -n "$file_magic_test_file"; then + case $deplibs_check_method in + "file_magic "*) + file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` + MAGIC_CMD=$lt_cv_path_MAGIC_CMD + if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | + $EGREP "$file_magic_regex" > /dev/null; then + : + else + cat <<_LT_EOF 1>&2 + +*** Warning: the command libtool uses to detect shared libraries, +*** $file_magic_cmd, produces output that libtool cannot recognize. +*** The result is that libtool may fail to recognize shared libraries +*** as such. This will affect the creation of libtool libraries that +*** depend on shared libraries, but programs linked with such libtool +*** libraries will work regardless of this problem. Nevertheless, you +*** may want to report the problem to your system manager and/or to +*** bug-libtool@gnu.org + +_LT_EOF + fi ;; + esac + fi + break + fi + done + IFS=$lt_save_ifs + MAGIC_CMD=$lt_save_MAGIC_CMD + ;; +esac +fi + +MAGIC_CMD=$lt_cv_path_MAGIC_CMD +if test -n "$MAGIC_CMD"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5 +$as_echo "$MAGIC_CMD" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + + + +if test -z "$lt_cv_path_MAGIC_CMD"; then + if test -n "$ac_tool_prefix"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for file" >&5 +$as_echo_n "checking for file... " >&6; } +if ${lt_cv_path_MAGIC_CMD+:} false; then : + $as_echo_n "(cached) " >&6 +else + case $MAGIC_CMD in +[\\/*] | ?:[\\/]*) + lt_cv_path_MAGIC_CMD=$MAGIC_CMD # Let the user override the test with a path. + ;; +*) + lt_save_MAGIC_CMD=$MAGIC_CMD + lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR + ac_dummy="/usr/bin$PATH_SEPARATOR$PATH" + for ac_dir in $ac_dummy; do + IFS=$lt_save_ifs + test -z "$ac_dir" && ac_dir=. + if test -f "$ac_dir/file"; then + lt_cv_path_MAGIC_CMD=$ac_dir/"file" + if test -n "$file_magic_test_file"; then + case $deplibs_check_method in + "file_magic "*) + file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` + MAGIC_CMD=$lt_cv_path_MAGIC_CMD + if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | + $EGREP "$file_magic_regex" > /dev/null; then + : + else + cat <<_LT_EOF 1>&2 + +*** Warning: the command libtool uses to detect shared libraries, +*** $file_magic_cmd, produces output that libtool cannot recognize. +*** The result is that libtool may fail to recognize shared libraries +*** as such. This will affect the creation of libtool libraries that +*** depend on shared libraries, but programs linked with such libtool +*** libraries will work regardless of this problem. Nevertheless, you +*** may want to report the problem to your system manager and/or to +*** bug-libtool@gnu.org + +_LT_EOF + fi ;; + esac + fi + break + fi + done + IFS=$lt_save_ifs + MAGIC_CMD=$lt_save_MAGIC_CMD + ;; +esac +fi + +MAGIC_CMD=$lt_cv_path_MAGIC_CMD +if test -n "$MAGIC_CMD"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5 +$as_echo "$MAGIC_CMD" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + else + MAGIC_CMD=: + fi +fi + + fi + ;; +esac + +# Use C for the default configuration in the libtool script + +lt_save_CC=$CC +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + +# Source file extension for C test sources. +ac_ext=c + +# Object file extension for compiled C test sources. +objext=o +objext=$objext + +# Code to be used in simple compile tests +lt_simple_compile_test_code="int some_variable = 0;" + +# Code to be used in simple link tests +lt_simple_link_test_code='int main(){return(0);}' + + + + + + + +# If no C compiler was specified, use CC. +LTCC=${LTCC-"$CC"} + +# If no C compiler flags were specified, use CFLAGS. +LTCFLAGS=${LTCFLAGS-"$CFLAGS"} + +# Allow CC to be a program name with arguments. +compiler=$CC + +# Save the default compiler, since it gets overwritten when the other +# tags are being tested, and _LT_TAGVAR(compiler, []) is a NOP. +compiler_DEFAULT=$CC + +# save warnings/boilerplate of simple test code +ac_outfile=conftest.$ac_objext +echo "$lt_simple_compile_test_code" >conftest.$ac_ext +eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err +_lt_compiler_boilerplate=`cat conftest.err` +$RM conftest* + +ac_outfile=conftest.$ac_objext +echo "$lt_simple_link_test_code" >conftest.$ac_ext +eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err +_lt_linker_boilerplate=`cat conftest.err` +$RM -r conftest* + + +## CAVEAT EMPTOR: +## There is no encapsulation within the following macros, do not change +## the running order or otherwise move them around unless you know exactly +## what you are doing... +if test -n "$compiler"; then + +lt_prog_compiler_no_builtin_flag= + +if test yes = "$GCC"; then + case $cc_basename in + nvcc*) + lt_prog_compiler_no_builtin_flag=' -Xcompiler -fno-builtin' ;; + *) + lt_prog_compiler_no_builtin_flag=' -fno-builtin' ;; + esac + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -fno-rtti -fno-exceptions" >&5 +$as_echo_n "checking if $compiler supports -fno-rtti -fno-exceptions... " >&6; } +if ${lt_cv_prog_compiler_rtti_exceptions+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_prog_compiler_rtti_exceptions=no + ac_outfile=conftest.$ac_objext + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + lt_compiler_flag="-fno-rtti -fno-exceptions" ## exclude from sc_useless_quotes_in_assignment + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + # The option is referenced via a variable to avoid confusing sed. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) + (eval "$lt_compile" 2>conftest.err) + ac_status=$? + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s "$ac_outfile"; then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings other than the usual output. + $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then + lt_cv_prog_compiler_rtti_exceptions=yes + fi + fi + $RM conftest* + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_rtti_exceptions" >&5 +$as_echo "$lt_cv_prog_compiler_rtti_exceptions" >&6; } + +if test yes = "$lt_cv_prog_compiler_rtti_exceptions"; then + lt_prog_compiler_no_builtin_flag="$lt_prog_compiler_no_builtin_flag -fno-rtti -fno-exceptions" +else + : +fi + +fi + + + + + + + lt_prog_compiler_wl= +lt_prog_compiler_pic= +lt_prog_compiler_static= + + + if test yes = "$GCC"; then + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_static='-static' + + case $host_os in + aix*) + # All AIX code is PIC. + if test ia64 = "$host_cpu"; then + # AIX 5 now supports IA64 processor + lt_prog_compiler_static='-Bstatic' + fi + lt_prog_compiler_pic='-fPIC' + ;; + + amigaos*) + case $host_cpu in + powerpc) + # see comment about AmigaOS4 .so support + lt_prog_compiler_pic='-fPIC' + ;; + m68k) + # FIXME: we need at least 68020 code to build shared libraries, but + # adding the '-m68020' flag to GCC prevents building anything better, + # like '-m68040'. + lt_prog_compiler_pic='-m68020 -resident32 -malways-restore-a4' + ;; + esac + ;; + + beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) + # PIC is the default for these OSes. + ;; + + mingw* | cygwin* | pw32* | os2* | cegcc*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + # Although the cygwin gcc ignores -fPIC, still need this for old-style + # (--disable-auto-import) libraries + lt_prog_compiler_pic='-DDLL_EXPORT' + case $host_os in + os2*) + lt_prog_compiler_static='$wl-static' + ;; + esac + ;; + + darwin* | rhapsody*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + lt_prog_compiler_pic='-fno-common' + ;; + + haiku*) + # PIC is the default for Haiku. + # The "-static" flag exists, but is broken. + lt_prog_compiler_static= + ;; + + hpux*) + # PIC is the default for 64-bit PA HP-UX, but not for 32-bit + # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag + # sets the default TLS model and affects inlining. + case $host_cpu in + hppa*64*) + # +Z the default + ;; + *) + lt_prog_compiler_pic='-fPIC' + ;; + esac + ;; + + interix[3-9]*) + # Interix 3.x gcc -fpic/-fPIC options generate broken code. + # Instead, we relocate shared libraries at runtime. + ;; + + msdosdjgpp*) + # Just because we use GCC doesn't mean we suddenly get shared libraries + # on systems that don't support them. + lt_prog_compiler_can_build_shared=no + enable_shared=no + ;; + + *nto* | *qnx*) + # QNX uses GNU C++, but need to define -shared option too, otherwise + # it will coredump. + lt_prog_compiler_pic='-fPIC -shared' + ;; + + sysv4*MP*) + if test -d /usr/nec; then + lt_prog_compiler_pic=-Kconform_pic + fi + ;; + + *) + lt_prog_compiler_pic='-fPIC' + ;; + esac + + case $cc_basename in + nvcc*) # Cuda Compiler Driver 2.2 + lt_prog_compiler_wl='-Xlinker ' + if test -n "$lt_prog_compiler_pic"; then + lt_prog_compiler_pic="-Xcompiler $lt_prog_compiler_pic" + fi + ;; + esac + else + # PORTME Check for flag to pass linker flags through the system compiler. + case $host_os in + aix*) + lt_prog_compiler_wl='-Wl,' + if test ia64 = "$host_cpu"; then + # AIX 5 now supports IA64 processor + lt_prog_compiler_static='-Bstatic' + else + lt_prog_compiler_static='-bnso -bI:/lib/syscalls.exp' + fi + ;; + + darwin* | rhapsody*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + lt_prog_compiler_pic='-fno-common' + case $cc_basename in + nagfor*) + # NAG Fortran compiler + lt_prog_compiler_wl='-Wl,-Wl,,' + lt_prog_compiler_pic='-PIC' + lt_prog_compiler_static='-Bstatic' + ;; + esac + ;; + + mingw* | cygwin* | pw32* | os2* | cegcc*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + lt_prog_compiler_pic='-DDLL_EXPORT' + case $host_os in + os2*) + lt_prog_compiler_static='$wl-static' + ;; + esac + ;; + + hpux9* | hpux10* | hpux11*) + lt_prog_compiler_wl='-Wl,' + # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but + # not for PA HP-UX. + case $host_cpu in + hppa*64*|ia64*) + # +Z the default + ;; + *) + lt_prog_compiler_pic='+Z' + ;; + esac + # Is there a better lt_prog_compiler_static that works with the bundled CC? + lt_prog_compiler_static='$wl-a ${wl}archive' + ;; + + irix5* | irix6* | nonstopux*) + lt_prog_compiler_wl='-Wl,' + # PIC (with -KPIC) is the default. + lt_prog_compiler_static='-non_shared' + ;; + + linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) + case $cc_basename in + # old Intel for x86_64, which still supported -KPIC. + ecc*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-static' + ;; + # icc used to be incompatible with GCC. + # ICC 10 doesn't accept -KPIC any more. + icc* | ifort*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-fPIC' + lt_prog_compiler_static='-static' + ;; + # Lahey Fortran 8.1. + lf95*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='--shared' + lt_prog_compiler_static='--static' + ;; + nagfor*) + # NAG Fortran compiler + lt_prog_compiler_wl='-Wl,-Wl,,' + lt_prog_compiler_pic='-PIC' + lt_prog_compiler_static='-Bstatic' + ;; + tcc*) + # Fabrice Bellard et al's Tiny C Compiler + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-fPIC' + lt_prog_compiler_static='-static' + ;; + pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*) + # Portland Group compilers (*not* the Pentium gcc compiler, + # which looks to be a dead project) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-fpic' + lt_prog_compiler_static='-Bstatic' + ;; + ccc*) + lt_prog_compiler_wl='-Wl,' + # All Alpha code is PIC. + lt_prog_compiler_static='-non_shared' + ;; + xl* | bgxl* | bgf* | mpixl*) + # IBM XL C 8.0/Fortran 10.1, 11.1 on PPC and BlueGene + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-qpic' + lt_prog_compiler_static='-qstaticlink' + ;; + *) + case `$CC -V 2>&1 | sed 5q` in + *Sun\ Ceres\ Fortran* | *Sun*Fortran*\ [1-7].* | *Sun*Fortran*\ 8.[0-3]*) + # Sun Fortran 8.3 passes all unrecognized flags to the linker + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-Bstatic' + lt_prog_compiler_wl='' + ;; + *Sun\ F* | *Sun*Fortran*) + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-Bstatic' + lt_prog_compiler_wl='-Qoption ld ' + ;; + *Sun\ C*) + # Sun C 5.9 + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-Bstatic' + lt_prog_compiler_wl='-Wl,' + ;; + *Intel*\ [CF]*Compiler*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-fPIC' + lt_prog_compiler_static='-static' + ;; + *Portland\ Group*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-fpic' + lt_prog_compiler_static='-Bstatic' + ;; + esac + ;; + esac + ;; + + newsos6) + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-Bstatic' + ;; + + *nto* | *qnx*) + # QNX uses GNU C++, but need to define -shared option too, otherwise + # it will coredump. + lt_prog_compiler_pic='-fPIC -shared' + ;; + + osf3* | osf4* | osf5*) + lt_prog_compiler_wl='-Wl,' + # All OSF/1 code is PIC. + lt_prog_compiler_static='-non_shared' + ;; + + rdos*) + lt_prog_compiler_static='-non_shared' + ;; + + solaris*) + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-Bstatic' + case $cc_basename in + f77* | f90* | f95* | sunf77* | sunf90* | sunf95*) + lt_prog_compiler_wl='-Qoption ld ';; + *) + lt_prog_compiler_wl='-Wl,';; + esac + ;; + + sunos4*) + lt_prog_compiler_wl='-Qoption ld ' + lt_prog_compiler_pic='-PIC' + lt_prog_compiler_static='-Bstatic' + ;; + + sysv4 | sysv4.2uw2* | sysv4.3*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-Bstatic' + ;; + + sysv4*MP*) + if test -d /usr/nec; then + lt_prog_compiler_pic='-Kconform_pic' + lt_prog_compiler_static='-Bstatic' + fi + ;; + + sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-Bstatic' + ;; + + unicos*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_can_build_shared=no + ;; + + uts4*) + lt_prog_compiler_pic='-pic' + lt_prog_compiler_static='-Bstatic' + ;; + + *) + lt_prog_compiler_can_build_shared=no + ;; + esac + fi + +case $host_os in + # For platforms that do not support PIC, -DPIC is meaningless: + *djgpp*) + lt_prog_compiler_pic= + ;; + *) + lt_prog_compiler_pic="$lt_prog_compiler_pic -DPIC" + ;; +esac + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5 +$as_echo_n "checking for $compiler option to produce PIC... " >&6; } +if ${lt_cv_prog_compiler_pic+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_prog_compiler_pic=$lt_prog_compiler_pic +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic" >&5 +$as_echo "$lt_cv_prog_compiler_pic" >&6; } +lt_prog_compiler_pic=$lt_cv_prog_compiler_pic + +# +# Check to make sure the PIC flag actually works. +# +if test -n "$lt_prog_compiler_pic"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler PIC flag $lt_prog_compiler_pic works" >&5 +$as_echo_n "checking if $compiler PIC flag $lt_prog_compiler_pic works... " >&6; } +if ${lt_cv_prog_compiler_pic_works+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_prog_compiler_pic_works=no + ac_outfile=conftest.$ac_objext + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + lt_compiler_flag="$lt_prog_compiler_pic -DPIC" ## exclude from sc_useless_quotes_in_assignment + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + # The option is referenced via a variable to avoid confusing sed. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) + (eval "$lt_compile" 2>conftest.err) + ac_status=$? + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s "$ac_outfile"; then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings other than the usual output. + $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then + lt_cv_prog_compiler_pic_works=yes + fi + fi + $RM conftest* + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_works" >&5 +$as_echo "$lt_cv_prog_compiler_pic_works" >&6; } + +if test yes = "$lt_cv_prog_compiler_pic_works"; then + case $lt_prog_compiler_pic in + "" | " "*) ;; + *) lt_prog_compiler_pic=" $lt_prog_compiler_pic" ;; + esac +else + lt_prog_compiler_pic= + lt_prog_compiler_can_build_shared=no +fi + +fi + + + + + + + + + + + +# +# Check to make sure the static flag actually works. +# +wl=$lt_prog_compiler_wl eval lt_tmp_static_flag=\"$lt_prog_compiler_static\" +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler static flag $lt_tmp_static_flag works" >&5 +$as_echo_n "checking if $compiler static flag $lt_tmp_static_flag works... " >&6; } +if ${lt_cv_prog_compiler_static_works+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_prog_compiler_static_works=no + save_LDFLAGS=$LDFLAGS + LDFLAGS="$LDFLAGS $lt_tmp_static_flag" + echo "$lt_simple_link_test_code" > conftest.$ac_ext + if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then + # The linker can only warn and ignore the option if not recognized + # So say no if there are warnings + if test -s conftest.err; then + # Append any errors to the config.log. + cat conftest.err 1>&5 + $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if diff conftest.exp conftest.er2 >/dev/null; then + lt_cv_prog_compiler_static_works=yes + fi + else + lt_cv_prog_compiler_static_works=yes + fi + fi + $RM -r conftest* + LDFLAGS=$save_LDFLAGS + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_static_works" >&5 +$as_echo "$lt_cv_prog_compiler_static_works" >&6; } + +if test yes = "$lt_cv_prog_compiler_static_works"; then + : +else + lt_prog_compiler_static= +fi + + + + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 +$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } +if ${lt_cv_prog_compiler_c_o+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_prog_compiler_c_o=no + $RM -r conftest 2>/dev/null + mkdir conftest + cd conftest + mkdir out + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + + lt_compiler_flag="-o out/conftest2.$ac_objext" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) + (eval "$lt_compile" 2>out/conftest.err) + ac_status=$? + cat out/conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s out/conftest2.$ac_objext + then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings + $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp + $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 + if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then + lt_cv_prog_compiler_c_o=yes + fi + fi + chmod u+w . 2>&5 + $RM conftest* + # SGI C++ compiler will create directory out/ii_files/ for + # template instantiation + test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files + $RM out/* && rmdir out + cd .. + $RM -r conftest + $RM conftest* + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5 +$as_echo "$lt_cv_prog_compiler_c_o" >&6; } + + + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 +$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } +if ${lt_cv_prog_compiler_c_o+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_prog_compiler_c_o=no + $RM -r conftest 2>/dev/null + mkdir conftest + cd conftest + mkdir out + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + + lt_compiler_flag="-o out/conftest2.$ac_objext" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) + (eval "$lt_compile" 2>out/conftest.err) + ac_status=$? + cat out/conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s out/conftest2.$ac_objext + then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings + $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp + $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 + if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then + lt_cv_prog_compiler_c_o=yes + fi + fi + chmod u+w . 2>&5 + $RM conftest* + # SGI C++ compiler will create directory out/ii_files/ for + # template instantiation + test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files + $RM out/* && rmdir out + cd .. + $RM -r conftest + $RM conftest* + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5 +$as_echo "$lt_cv_prog_compiler_c_o" >&6; } + + + + +hard_links=nottested +if test no = "$lt_cv_prog_compiler_c_o" && test no != "$need_locks"; then + # do not overwrite the value of need_locks provided by the user + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if we can lock with hard links" >&5 +$as_echo_n "checking if we can lock with hard links... " >&6; } + hard_links=yes + $RM conftest* + ln conftest.a conftest.b 2>/dev/null && hard_links=no + touch conftest.a + ln conftest.a conftest.b 2>&5 || hard_links=no + ln conftest.a conftest.b 2>/dev/null && hard_links=no + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $hard_links" >&5 +$as_echo "$hard_links" >&6; } + if test no = "$hard_links"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: '$CC' does not support '-c -o', so 'make -j' may be unsafe" >&5 +$as_echo "$as_me: WARNING: '$CC' does not support '-c -o', so 'make -j' may be unsafe" >&2;} + need_locks=warn + fi +else + need_locks=no +fi + + + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5 +$as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; } + + runpath_var= + allow_undefined_flag= + always_export_symbols=no + archive_cmds= + archive_expsym_cmds= + compiler_needs_object=no + enable_shared_with_static_runtimes=no + export_dynamic_flag_spec= + export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' + hardcode_automatic=no + hardcode_direct=no + hardcode_direct_absolute=no + hardcode_libdir_flag_spec= + hardcode_libdir_separator= + hardcode_minus_L=no + hardcode_shlibpath_var=unsupported + inherit_rpath=no + link_all_deplibs=unknown + module_cmds= + module_expsym_cmds= + old_archive_from_new_cmds= + old_archive_from_expsyms_cmds= + thread_safe_flag_spec= + whole_archive_flag_spec= + # include_expsyms should be a list of space-separated symbols to be *always* + # included in the symbol list + include_expsyms= + # exclude_expsyms can be an extended regexp of symbols to exclude + # it will be wrapped by ' (' and ')$', so one must not match beginning or + # end of line. Example: 'a|bc|.*d.*' will exclude the symbols 'a' and 'bc', + # as well as any symbol that contains 'd'. + exclude_expsyms='_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*' + # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out + # platforms (ab)use it in PIC code, but their linkers get confused if + # the symbol is explicitly referenced. Since portable code cannot + # rely on this symbol name, it's probably fine to never include it in + # preloaded symbol tables. + # Exclude shared library initialization/finalization symbols. + extract_expsyms_cmds= + + case $host_os in + cygwin* | mingw* | pw32* | cegcc*) + # FIXME: the MSVC++ port hasn't been tested in a loooong time + # When not using gcc, we currently assume that we are using + # Microsoft Visual C++. + if test yes != "$GCC"; then + with_gnu_ld=no + fi + ;; + interix*) + # we just hope/assume this is gcc and not c89 (= MSVC++) + with_gnu_ld=yes + ;; + openbsd* | bitrig*) + with_gnu_ld=no + ;; + linux* | k*bsd*-gnu | gnu*) + link_all_deplibs=no + ;; + esac + + ld_shlibs=yes + + # On some targets, GNU ld is compatible enough with the native linker + # that we're better off using the native interface for both. + lt_use_gnu_ld_interface=no + if test yes = "$with_gnu_ld"; then + case $host_os in + aix*) + # The AIX port of GNU ld has always aspired to compatibility + # with the native linker. However, as the warning in the GNU ld + # block says, versions before 2.19.5* couldn't really create working + # shared libraries, regardless of the interface used. + case `$LD -v 2>&1` in + *\ \(GNU\ Binutils\)\ 2.19.5*) ;; + *\ \(GNU\ Binutils\)\ 2.[2-9]*) ;; + *\ \(GNU\ Binutils\)\ [3-9]*) ;; + *) + lt_use_gnu_ld_interface=yes + ;; + esac + ;; + *) + lt_use_gnu_ld_interface=yes + ;; + esac + fi + + if test yes = "$lt_use_gnu_ld_interface"; then + # If archive_cmds runs LD, not CC, wlarc should be empty + wlarc='$wl' + + # Set some defaults for GNU ld with shared library support. These + # are reset later if shared libraries are not supported. Putting them + # here allows them to be overridden if necessary. + runpath_var=LD_RUN_PATH + hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' + export_dynamic_flag_spec='$wl--export-dynamic' + # ancient GNU ld didn't support --whole-archive et. al. + if $LD --help 2>&1 | $GREP 'no-whole-archive' > /dev/null; then + whole_archive_flag_spec=$wlarc'--whole-archive$convenience '$wlarc'--no-whole-archive' + else + whole_archive_flag_spec= + fi + supports_anon_versioning=no + case `$LD -v | $SED -e 's/(^)\+)\s\+//' 2>&1` in + *GNU\ gold*) supports_anon_versioning=yes ;; + *\ [01].* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11 + *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... + *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... + *\ 2.11.*) ;; # other 2.11 versions + *) supports_anon_versioning=yes ;; + esac + + # See if GNU ld supports shared libraries. + case $host_os in + aix[3-9]*) + # On AIX/PPC, the GNU linker is very broken + if test ia64 != "$host_cpu"; then + ld_shlibs=no + cat <<_LT_EOF 1>&2 + +*** Warning: the GNU linker, at least up to release 2.19, is reported +*** to be unable to reliably create shared libraries on AIX. +*** Therefore, libtool is disabling shared libraries support. If you +*** really care for shared libraries, you may want to install binutils +*** 2.20 or above, or modify your PATH so that a non-GNU linker is found. +*** You will then need to restart the configuration process. + +_LT_EOF + fi + ;; + + amigaos*) + case $host_cpu in + powerpc) + # see comment about AmigaOS4 .so support + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + archive_expsym_cmds='' + ;; + m68k) + archive_cmds='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' + hardcode_libdir_flag_spec='-L$libdir' + hardcode_minus_L=yes + ;; + esac + ;; + + beos*) + if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then + allow_undefined_flag=unsupported + # Joseph Beckenbach says some releases of gcc + # support --undefined. This deserves some investigation. FIXME + archive_cmds='$CC -nostart $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + else + ld_shlibs=no + fi + ;; + + cygwin* | mingw* | pw32* | cegcc*) + # _LT_TAGVAR(hardcode_libdir_flag_spec, ) is actually meaningless, + # as there is no search path for DLLs. + hardcode_libdir_flag_spec='-L$libdir' + export_dynamic_flag_spec='$wl--export-all-symbols' + allow_undefined_flag=unsupported + always_export_symbols=no + enable_shared_with_static_runtimes=yes + export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/;s/^.*[ ]__nm__\([^ ]*\)[ ][^ ]*/\1 DATA/;/^I[ ]/d;/^[AITW][ ]/s/.* //'\'' | sort | uniq > $export_symbols' + exclude_expsyms='[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname' + + if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + # If the export-symbols file already is a .def file, use it as + # is; otherwise, prepend EXPORTS... + archive_expsym_cmds='if test DEF = "`$SED -n -e '\''s/^[ ]*//'\'' -e '\''/^\(;.*\)*$/d'\'' -e '\''s/^\(EXPORTS\|LIBRARY\)\([ ].*\)*$/DEF/p'\'' -e q $export_symbols`" ; then + cp $export_symbols $output_objdir/$soname.def; + else + echo EXPORTS > $output_objdir/$soname.def; + cat $export_symbols >> $output_objdir/$soname.def; + fi~ + $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + else + ld_shlibs=no + fi + ;; + + haiku*) + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + link_all_deplibs=yes + ;; + + os2*) + hardcode_libdir_flag_spec='-L$libdir' + hardcode_minus_L=yes + allow_undefined_flag=unsupported + shrext_cmds=.dll + archive_cmds='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ + $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ + $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ + $ECHO EXPORTS >> $output_objdir/$libname.def~ + emxexp $libobjs | $SED /"_DLL_InitTerm"/d >> $output_objdir/$libname.def~ + $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ + emximp -o $lib $output_objdir/$libname.def' + archive_expsym_cmds='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ + $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ + $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ + $ECHO EXPORTS >> $output_objdir/$libname.def~ + prefix_cmds="$SED"~ + if test EXPORTS = "`$SED 1q $export_symbols`"; then + prefix_cmds="$prefix_cmds -e 1d"; + fi~ + prefix_cmds="$prefix_cmds -e \"s/^\(.*\)$/_\1/g\""~ + cat $export_symbols | $prefix_cmds >> $output_objdir/$libname.def~ + $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ + emximp -o $lib $output_objdir/$libname.def' + old_archive_From_new_cmds='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def' + enable_shared_with_static_runtimes=yes + ;; + + interix[3-9]*) + hardcode_direct=no + hardcode_shlibpath_var=no + hardcode_libdir_flag_spec='$wl-rpath,$libdir' + export_dynamic_flag_spec='$wl-E' + # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. + # Instead, shared libraries are loaded at an image base (0x10000000 by + # default) and relocated if they conflict, which is a slow very memory + # consuming and fragmenting process. To avoid this, we pick a random, + # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link + # time. Moving up from 0x10000000 also allows more sbrk(2) space. + archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + archive_expsym_cmds='sed "s|^|_|" $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--retain-symbols-file,$output_objdir/$soname.expsym $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + ;; + + gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu) + tmp_diet=no + if test linux-dietlibc = "$host_os"; then + case $cc_basename in + diet\ *) tmp_diet=yes;; # linux-dietlibc with static linking (!diet-dyn) + esac + fi + if $LD --help 2>&1 | $EGREP ': supported targets:.* elf' > /dev/null \ + && test no = "$tmp_diet" + then + tmp_addflag=' $pic_flag' + tmp_sharedflag='-shared' + case $cc_basename,$host_cpu in + pgcc*) # Portland Group C compiler + whole_archive_flag_spec='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' + tmp_addflag=' $pic_flag' + ;; + pgf77* | pgf90* | pgf95* | pgfortran*) + # Portland Group f77 and f90 compilers + whole_archive_flag_spec='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' + tmp_addflag=' $pic_flag -Mnomain' ;; + ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64 + tmp_addflag=' -i_dynamic' ;; + efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64 + tmp_addflag=' -i_dynamic -nofor_main' ;; + ifc* | ifort*) # Intel Fortran compiler + tmp_addflag=' -nofor_main' ;; + lf95*) # Lahey Fortran 8.1 + whole_archive_flag_spec= + tmp_sharedflag='--shared' ;; + nagfor*) # NAGFOR 5.3 + tmp_sharedflag='-Wl,-shared' ;; + xl[cC]* | bgxl[cC]* | mpixl[cC]*) # IBM XL C 8.0 on PPC (deal with xlf below) + tmp_sharedflag='-qmkshrobj' + tmp_addflag= ;; + nvcc*) # Cuda Compiler Driver 2.2 + whole_archive_flag_spec='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' + compiler_needs_object=yes + ;; + esac + case `$CC -V 2>&1 | sed 5q` in + *Sun\ C*) # Sun C 5.9 + whole_archive_flag_spec='$wl--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' + compiler_needs_object=yes + tmp_sharedflag='-G' ;; + *Sun\ F*) # Sun Fortran 8.3 + tmp_sharedflag='-G' ;; + esac + archive_cmds='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + + if test yes = "$supports_anon_versioning"; then + archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~ + cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ + echo "local: *; };" >> $output_objdir/$libname.ver~ + $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-version-script $wl$output_objdir/$libname.ver -o $lib' + fi + + case $cc_basename in + tcc*) + export_dynamic_flag_spec='-rdynamic' + ;; + xlf* | bgf* | bgxlf* | mpixlf*) + # IBM XL Fortran 10.1 on PPC cannot create shared libs itself + whole_archive_flag_spec='--whole-archive$convenience --no-whole-archive' + hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' + archive_cmds='$LD -shared $libobjs $deplibs $linker_flags -soname $soname -o $lib' + if test yes = "$supports_anon_versioning"; then + archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~ + cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ + echo "local: *; };" >> $output_objdir/$libname.ver~ + $LD -shared $libobjs $deplibs $linker_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib' + fi + ;; + esac + else + ld_shlibs=no + fi + ;; + + netbsd* | netbsdelf*-gnu) + if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then + archive_cmds='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' + wlarc= + else + archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' + fi + ;; + + solaris*) + if $LD -v 2>&1 | $GREP 'BFD 2\.8' > /dev/null; then + ld_shlibs=no + cat <<_LT_EOF 1>&2 + +*** Warning: The releases 2.8.* of the GNU linker cannot reliably +*** create shared libraries on Solaris systems. Therefore, libtool +*** is disabling shared libraries support. We urge you to upgrade GNU +*** binutils to release 2.9.1 or newer. Another option is to modify +*** your PATH or compiler configuration so that the native linker is +*** used, and then restart. + +_LT_EOF + elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then + archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' + else + ld_shlibs=no + fi + ;; + + sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*) + case `$LD -v 2>&1` in + *\ [01].* | *\ 2.[0-9].* | *\ 2.1[0-5].*) + ld_shlibs=no + cat <<_LT_EOF 1>&2 + +*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 cannot +*** reliably create shared libraries on SCO systems. Therefore, libtool +*** is disabling shared libraries support. We urge you to upgrade GNU +*** binutils to release 2.16.91.0.3 or newer. Another option is to modify +*** your PATH or compiler configuration so that the native linker is +*** used, and then restart. + +_LT_EOF + ;; + *) + # For security reasons, it is highly recommended that you always + # use absolute paths for naming shared libraries, and exclude the + # DT_RUNPATH tag from executables and libraries. But doing so + # requires that you compile everything twice, which is a pain. + if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then + hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' + else + ld_shlibs=no + fi + ;; + esac + ;; + + sunos4*) + archive_cmds='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' + wlarc= + hardcode_direct=yes + hardcode_shlibpath_var=no + ;; + + *) + if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then + archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' + else + ld_shlibs=no + fi + ;; + esac + + if test no = "$ld_shlibs"; then + runpath_var= + hardcode_libdir_flag_spec= + export_dynamic_flag_spec= + whole_archive_flag_spec= + fi + else + # PORTME fill in a description of your system's linker (not GNU ld) + case $host_os in + aix3*) + allow_undefined_flag=unsupported + always_export_symbols=yes + archive_expsym_cmds='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' + # Note: this linker hardcodes the directories in LIBPATH if there + # are no directories specified by -L. + hardcode_minus_L=yes + if test yes = "$GCC" && test -z "$lt_prog_compiler_static"; then + # Neither direct hardcoding nor static linking is supported with a + # broken collect2. + hardcode_direct=unsupported + fi + ;; + + aix[4-9]*) + if test ia64 = "$host_cpu"; then + # On IA64, the linker does run time linking by default, so we don't + # have to do anything special. + aix_use_runtimelinking=no + exp_sym_flag='-Bexport' + no_entry_flag= + else + # If we're using GNU nm, then we don't want the "-C" option. + # -C means demangle to GNU nm, but means don't demangle to AIX nm. + # Without the "-l" option, or with the "-B" option, AIX nm treats + # weak defined symbols like other global defined symbols, whereas + # GNU nm marks them as "W". + # While the 'weak' keyword is ignored in the Export File, we need + # it in the Import File for the 'aix-soname' feature, so we have + # to replace the "-B" option with "-P" for AIX nm. + if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then + export_symbols_cmds='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && (substr(\$ 3,1,1) != ".")) { if (\$ 2 == "W") { print \$ 3 " weak" } else { print \$ 3 } } }'\'' | sort -u > $export_symbols' + else + export_symbols_cmds='`func_echo_all $NM | $SED -e '\''s/B\([^B]*\)$/P\1/'\''` -PCpgl $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) && (substr(\$ 1,1,1) != ".")) { if ((\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) { print \$ 1 " weak" } else { print \$ 1 } } }'\'' | sort -u > $export_symbols' + fi + aix_use_runtimelinking=no + + # Test if we are trying to use run time linking or normal + # AIX style linking. If -brtl is somewhere in LDFLAGS, we + # have runtime linking enabled, and use it for executables. + # For shared libraries, we enable/disable runtime linking + # depending on the kind of the shared library created - + # when "with_aix_soname,aix_use_runtimelinking" is: + # "aix,no" lib.a(lib.so.V) shared, rtl:no, for executables + # "aix,yes" lib.so shared, rtl:yes, for executables + # lib.a static archive + # "both,no" lib.so.V(shr.o) shared, rtl:yes + # lib.a(lib.so.V) shared, rtl:no, for executables + # "both,yes" lib.so.V(shr.o) shared, rtl:yes, for executables + # lib.a(lib.so.V) shared, rtl:no + # "svr4,*" lib.so.V(shr.o) shared, rtl:yes, for executables + # lib.a static archive + case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*) + for ld_flag in $LDFLAGS; do + if (test x-brtl = "x$ld_flag" || test x-Wl,-brtl = "x$ld_flag"); then + aix_use_runtimelinking=yes + break + fi + done + if test svr4,no = "$with_aix_soname,$aix_use_runtimelinking"; then + # With aix-soname=svr4, we create the lib.so.V shared archives only, + # so we don't have lib.a shared libs to link our executables. + # We have to force runtime linking in this case. + aix_use_runtimelinking=yes + LDFLAGS="$LDFLAGS -Wl,-brtl" + fi + ;; + esac + + exp_sym_flag='-bexport' + no_entry_flag='-bnoentry' + fi + + # When large executables or shared objects are built, AIX ld can + # have problems creating the table of contents. If linking a library + # or program results in "error TOC overflow" add -mminimal-toc to + # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not + # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. + + archive_cmds='' + hardcode_direct=yes + hardcode_direct_absolute=yes + hardcode_libdir_separator=':' + link_all_deplibs=yes + file_list_spec='$wl-f,' + case $with_aix_soname,$aix_use_runtimelinking in + aix,*) ;; # traditional, no import file + svr4,* | *,yes) # use import file + # The Import File defines what to hardcode. + hardcode_direct=no + hardcode_direct_absolute=no + ;; + esac + + if test yes = "$GCC"; then + case $host_os in aix4.[012]|aix4.[012].*) + # We only want to do this on AIX 4.2 and lower, the check + # below for broken collect2 doesn't work under 4.3+ + collect2name=`$CC -print-prog-name=collect2` + if test -f "$collect2name" && + strings "$collect2name" | $GREP resolve_lib_name >/dev/null + then + # We have reworked collect2 + : + else + # We have old collect2 + hardcode_direct=unsupported + # It fails to find uninstalled libraries when the uninstalled + # path is not listed in the libpath. Setting hardcode_minus_L + # to unsupported forces relinking + hardcode_minus_L=yes + hardcode_libdir_flag_spec='-L$libdir' + hardcode_libdir_separator= + fi + ;; + esac + shared_flag='-shared' + if test yes = "$aix_use_runtimelinking"; then + shared_flag="$shared_flag "'$wl-G' + fi + # Need to ensure runtime linking is disabled for the traditional + # shared library, or the linker may eventually find shared libraries + # /with/ Import File - we do not want to mix them. + shared_flag_aix='-shared' + shared_flag_svr4='-shared $wl-G' + else + # not using gcc + if test ia64 = "$host_cpu"; then + # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release + # chokes on -Wl,-G. The following line is correct: + shared_flag='-G' + else + if test yes = "$aix_use_runtimelinking"; then + shared_flag='$wl-G' + else + shared_flag='$wl-bM:SRE' + fi + shared_flag_aix='$wl-bM:SRE' + shared_flag_svr4='$wl-G' + fi + fi + + export_dynamic_flag_spec='$wl-bexpall' + # It seems that -bexpall does not export symbols beginning with + # underscore (_), so it is better to generate a list of symbols to export. + always_export_symbols=yes + if test aix,yes = "$with_aix_soname,$aix_use_runtimelinking"; then + # Warning - without using the other runtime loading flags (-brtl), + # -berok will link without error, but may produce a broken library. + allow_undefined_flag='-berok' + # Determine the default libpath from the value encoded in an + # empty executable. + if test set = "${lt_cv_aix_libpath+set}"; then + aix_libpath=$lt_cv_aix_libpath +else + if ${lt_cv_aix_libpath_+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + + lt_aix_libpath_sed=' + /Import File Strings/,/^$/ { + /^0/ { + s/^0 *\([^ ]*\) *$/\1/ + p + } + }' + lt_cv_aix_libpath_=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` + # Check for a 64-bit object if we didn't find anything. + if test -z "$lt_cv_aix_libpath_"; then + lt_cv_aix_libpath_=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` + fi +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + if test -z "$lt_cv_aix_libpath_"; then + lt_cv_aix_libpath_=/usr/lib:/lib + fi + +fi + + aix_libpath=$lt_cv_aix_libpath_ +fi + + hardcode_libdir_flag_spec='$wl-blibpath:$libdir:'"$aix_libpath" + archive_expsym_cmds='$CC -o $output_objdir/$soname $libobjs $deplibs $wl'$no_entry_flag' $compiler_flags `if test -n "$allow_undefined_flag"; then func_echo_all "$wl$allow_undefined_flag"; else :; fi` $wl'$exp_sym_flag:\$export_symbols' '$shared_flag + else + if test ia64 = "$host_cpu"; then + hardcode_libdir_flag_spec='$wl-R $libdir:/usr/lib:/lib' + allow_undefined_flag="-z nodefs" + archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\$wl$no_entry_flag"' $compiler_flags $wl$allow_undefined_flag '"\$wl$exp_sym_flag:\$export_symbols" + else + # Determine the default libpath from the value encoded in an + # empty executable. + if test set = "${lt_cv_aix_libpath+set}"; then + aix_libpath=$lt_cv_aix_libpath +else + if ${lt_cv_aix_libpath_+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + + lt_aix_libpath_sed=' + /Import File Strings/,/^$/ { + /^0/ { + s/^0 *\([^ ]*\) *$/\1/ + p + } + }' + lt_cv_aix_libpath_=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` + # Check for a 64-bit object if we didn't find anything. + if test -z "$lt_cv_aix_libpath_"; then + lt_cv_aix_libpath_=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` + fi +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + if test -z "$lt_cv_aix_libpath_"; then + lt_cv_aix_libpath_=/usr/lib:/lib + fi + +fi + + aix_libpath=$lt_cv_aix_libpath_ +fi + + hardcode_libdir_flag_spec='$wl-blibpath:$libdir:'"$aix_libpath" + # Warning - without using the other run time loading flags, + # -berok will link without error, but may produce a broken library. + no_undefined_flag=' $wl-bernotok' + allow_undefined_flag=' $wl-berok' + if test yes = "$with_gnu_ld"; then + # We only use this code for GNU lds that support --whole-archive. + whole_archive_flag_spec='$wl--whole-archive$convenience $wl--no-whole-archive' + else + # Exported symbols can be pulled into shared objects from archives + whole_archive_flag_spec='$convenience' + fi + archive_cmds_need_lc=yes + archive_expsym_cmds='$RM -r $output_objdir/$realname.d~$MKDIR $output_objdir/$realname.d' + # -brtl affects multiple linker settings, -berok does not and is overridden later + compiler_flags_filtered='`func_echo_all "$compiler_flags " | $SED -e "s%-brtl\\([, ]\\)%-berok\\1%g"`' + if test svr4 != "$with_aix_soname"; then + # This is similar to how AIX traditionally builds its shared libraries. + archive_expsym_cmds="$archive_expsym_cmds"'~$CC '$shared_flag_aix' -o $output_objdir/$realname.d/$soname $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$realname.d/$soname' + fi + if test aix != "$with_aix_soname"; then + archive_expsym_cmds="$archive_expsym_cmds"'~$CC '$shared_flag_svr4' -o $output_objdir/$realname.d/$shared_archive_member_spec.o $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$STRIP -e $output_objdir/$realname.d/$shared_archive_member_spec.o~( func_echo_all "#! $soname($shared_archive_member_spec.o)"; if test shr_64 = "$shared_archive_member_spec"; then func_echo_all "# 64"; else func_echo_all "# 32"; fi; cat $export_symbols ) > $output_objdir/$realname.d/$shared_archive_member_spec.imp~$AR $AR_FLAGS $output_objdir/$soname $output_objdir/$realname.d/$shared_archive_member_spec.o $output_objdir/$realname.d/$shared_archive_member_spec.imp' + else + # used by -dlpreopen to get the symbols + archive_expsym_cmds="$archive_expsym_cmds"'~$MV $output_objdir/$realname.d/$soname $output_objdir' + fi + archive_expsym_cmds="$archive_expsym_cmds"'~$RM -r $output_objdir/$realname.d' + fi + fi + ;; + + amigaos*) + case $host_cpu in + powerpc) + # see comment about AmigaOS4 .so support + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + archive_expsym_cmds='' + ;; + m68k) + archive_cmds='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' + hardcode_libdir_flag_spec='-L$libdir' + hardcode_minus_L=yes + ;; + esac + ;; + + bsdi[45]*) + export_dynamic_flag_spec=-rdynamic + ;; + + cygwin* | mingw* | pw32* | cegcc*) + # When not using gcc, we currently assume that we are using + # Microsoft Visual C++. + # hardcode_libdir_flag_spec is actually meaningless, as there is + # no search path for DLLs. + case $cc_basename in + cl*) + # Native MSVC + hardcode_libdir_flag_spec=' ' + allow_undefined_flag=unsupported + always_export_symbols=yes + file_list_spec='@' + # Tell ltmain to make .lib files, not .a files. + libext=lib + # Tell ltmain to make .dll files, not .so files. + shrext_cmds=.dll + # FIXME: Setting linknames here is a bad hack. + archive_cmds='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~linknames=' + archive_expsym_cmds='if test DEF = "`$SED -n -e '\''s/^[ ]*//'\'' -e '\''/^\(;.*\)*$/d'\'' -e '\''s/^\(EXPORTS\|LIBRARY\)\([ ].*\)*$/DEF/p'\'' -e q $export_symbols`" ; then + cp "$export_symbols" "$output_objdir/$soname.def"; + echo "$tool_output_objdir$soname.def" > "$output_objdir/$soname.exp"; + else + $SED -e '\''s/^/-link -EXPORT:/'\'' < $export_symbols > $output_objdir/$soname.exp; + fi~ + $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~ + linknames=' + # The linker will not automatically build a static lib if we build a DLL. + # _LT_TAGVAR(old_archive_from_new_cmds, )='true' + enable_shared_with_static_runtimes=yes + exclude_expsyms='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*' + export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1,DATA/'\'' | $SED -e '\''/^[AITW][ ]/s/.*[ ]//'\'' | sort | uniq > $export_symbols' + # Don't use ranlib + old_postinstall_cmds='chmod 644 $oldlib' + postlink_cmds='lt_outputfile="@OUTPUT@"~ + lt_tool_outputfile="@TOOL_OUTPUT@"~ + case $lt_outputfile in + *.exe|*.EXE) ;; + *) + lt_outputfile=$lt_outputfile.exe + lt_tool_outputfile=$lt_tool_outputfile.exe + ;; + esac~ + if test : != "$MANIFEST_TOOL" && test -f "$lt_outputfile.manifest"; then + $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1; + $RM "$lt_outputfile.manifest"; + fi' + ;; + *) + # Assume MSVC wrapper + hardcode_libdir_flag_spec=' ' + allow_undefined_flag=unsupported + # Tell ltmain to make .lib files, not .a files. + libext=lib + # Tell ltmain to make .dll files, not .so files. + shrext_cmds=.dll + # FIXME: Setting linknames here is a bad hack. + archive_cmds='$CC -o $lib $libobjs $compiler_flags `func_echo_all "$deplibs" | $SED '\''s/ -lc$//'\''` -link -dll~linknames=' + # The linker will automatically build a .lib file if we build a DLL. + old_archive_from_new_cmds='true' + # FIXME: Should let the user specify the lib program. + old_archive_cmds='lib -OUT:$oldlib$oldobjs$old_deplibs' + enable_shared_with_static_runtimes=yes + ;; + esac + ;; + + darwin* | rhapsody*) + + + archive_cmds_need_lc=no + hardcode_direct=no + hardcode_automatic=yes + hardcode_shlibpath_var=unsupported + if test yes = "$lt_cv_ld_force_load"; then + whole_archive_flag_spec='`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience $wl-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`' + + else + whole_archive_flag_spec='' + fi + link_all_deplibs=yes + allow_undefined_flag=$_lt_dar_allow_undefined + case $cc_basename in + ifort*|nagfor*) _lt_dar_can_shared=yes ;; + *) _lt_dar_can_shared=$GCC ;; + esac + if test yes = "$_lt_dar_can_shared"; then + output_verbose_link_cmd=func_echo_all + archive_cmds="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod$_lt_dsymutil" + module_cmds="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags$_lt_dsymutil" + archive_expsym_cmds="sed 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod$_lt_dar_export_syms$_lt_dsymutil" + module_expsym_cmds="sed -e 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags$_lt_dar_export_syms$_lt_dsymutil" + + else + ld_shlibs=no + fi + + ;; + + dgux*) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_libdir_flag_spec='-L$libdir' + hardcode_shlibpath_var=no + ;; + + # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor + # support. Future versions do this automatically, but an explicit c++rt0.o + # does not break anything, and helps significantly (at the cost of a little + # extra space). + freebsd2.2*) + archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' + hardcode_libdir_flag_spec='-R$libdir' + hardcode_direct=yes + hardcode_shlibpath_var=no + ;; + + # Unfortunately, older versions of FreeBSD 2 do not have this feature. + freebsd2.*) + archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct=yes + hardcode_minus_L=yes + hardcode_shlibpath_var=no + ;; + + # FreeBSD 3 and greater uses gcc -shared to do shared libraries. + freebsd* | dragonfly*) + archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + hardcode_libdir_flag_spec='-R$libdir' + hardcode_direct=yes + hardcode_shlibpath_var=no + ;; + + hpux9*) + if test yes = "$GCC"; then + archive_cmds='$RM $output_objdir/$soname~$CC -shared $pic_flag $wl+b $wl$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib' + else + archive_cmds='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib' + fi + hardcode_libdir_flag_spec='$wl+b $wl$libdir' + hardcode_libdir_separator=: + hardcode_direct=yes + + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + hardcode_minus_L=yes + export_dynamic_flag_spec='$wl-E' + ;; + + hpux10*) + if test yes,no = "$GCC,$with_gnu_ld"; then + archive_cmds='$CC -shared $pic_flag $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags' + else + archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' + fi + if test no = "$with_gnu_ld"; then + hardcode_libdir_flag_spec='$wl+b $wl$libdir' + hardcode_libdir_separator=: + hardcode_direct=yes + hardcode_direct_absolute=yes + export_dynamic_flag_spec='$wl-E' + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + hardcode_minus_L=yes + fi + ;; + + hpux11*) + if test yes,no = "$GCC,$with_gnu_ld"; then + case $host_cpu in + hppa*64*) + archive_cmds='$CC -shared $wl+h $wl$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + ia64*) + archive_cmds='$CC -shared $pic_flag $wl+h $wl$soname $wl+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' + ;; + *) + archive_cmds='$CC -shared $pic_flag $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + else + case $host_cpu in + hppa*64*) + archive_cmds='$CC -b $wl+h $wl$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + ia64*) + archive_cmds='$CC -b $wl+h $wl$soname $wl+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' + ;; + *) + + # Older versions of the 11.00 compiler do not understand -b yet + # (HP92453-01 A.11.01.20 doesn't, HP92453-01 B.11.X.35175-35176.GP does) + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC understands -b" >&5 +$as_echo_n "checking if $CC understands -b... " >&6; } +if ${lt_cv_prog_compiler__b+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_prog_compiler__b=no + save_LDFLAGS=$LDFLAGS + LDFLAGS="$LDFLAGS -b" + echo "$lt_simple_link_test_code" > conftest.$ac_ext + if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then + # The linker can only warn and ignore the option if not recognized + # So say no if there are warnings + if test -s conftest.err; then + # Append any errors to the config.log. + cat conftest.err 1>&5 + $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if diff conftest.exp conftest.er2 >/dev/null; then + lt_cv_prog_compiler__b=yes + fi + else + lt_cv_prog_compiler__b=yes + fi + fi + $RM -r conftest* + LDFLAGS=$save_LDFLAGS + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler__b" >&5 +$as_echo "$lt_cv_prog_compiler__b" >&6; } + +if test yes = "$lt_cv_prog_compiler__b"; then + archive_cmds='$CC -b $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags' +else + archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' +fi + + ;; + esac + fi + if test no = "$with_gnu_ld"; then + hardcode_libdir_flag_spec='$wl+b $wl$libdir' + hardcode_libdir_separator=: + + case $host_cpu in + hppa*64*|ia64*) + hardcode_direct=no + hardcode_shlibpath_var=no + ;; + *) + hardcode_direct=yes + hardcode_direct_absolute=yes + export_dynamic_flag_spec='$wl-E' + + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + hardcode_minus_L=yes + ;; + esac + fi + ;; + + irix5* | irix6* | nonstopux*) + if test yes = "$GCC"; then + archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' + # Try to use the -exported_symbol ld option, if it does not + # work, assume that -exports_file does not work either and + # implicitly export all symbols. + # This should be the same for all languages, so no per-tag cache variable. + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $host_os linker accepts -exported_symbol" >&5 +$as_echo_n "checking whether the $host_os linker accepts -exported_symbol... " >&6; } +if ${lt_cv_irix_exported_symbol+:} false; then : + $as_echo_n "(cached) " >&6 +else + save_LDFLAGS=$LDFLAGS + LDFLAGS="$LDFLAGS -shared $wl-exported_symbol ${wl}foo $wl-update_registry $wl/dev/null" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int foo (void) { return 0; } +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + lt_cv_irix_exported_symbol=yes +else + lt_cv_irix_exported_symbol=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + LDFLAGS=$save_LDFLAGS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_irix_exported_symbol" >&5 +$as_echo "$lt_cv_irix_exported_symbol" >&6; } + if test yes = "$lt_cv_irix_exported_symbol"; then + archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations $wl-exports_file $wl$export_symbols -o $lib' + fi + link_all_deplibs=no + else + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' + archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -exports_file $export_symbols -o $lib' + fi + archive_cmds_need_lc='no' + hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' + hardcode_libdir_separator=: + inherit_rpath=yes + link_all_deplibs=yes + ;; + + linux*) + case $cc_basename in + tcc*) + # Fabrice Bellard et al's Tiny C Compiler + ld_shlibs=yes + archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + ;; + + netbsd* | netbsdelf*-gnu) + if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then + archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out + else + archive_cmds='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF + fi + hardcode_libdir_flag_spec='-R$libdir' + hardcode_direct=yes + hardcode_shlibpath_var=no + ;; + + newsos6) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct=yes + hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' + hardcode_libdir_separator=: + hardcode_shlibpath_var=no + ;; + + *nto* | *qnx*) + ;; + + openbsd* | bitrig*) + if test -f /usr/libexec/ld.so; then + hardcode_direct=yes + hardcode_shlibpath_var=no + hardcode_direct_absolute=yes + if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then + archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags $wl-retain-symbols-file,$export_symbols' + hardcode_libdir_flag_spec='$wl-rpath,$libdir' + export_dynamic_flag_spec='$wl-E' + else + archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + hardcode_libdir_flag_spec='$wl-rpath,$libdir' + fi + else + ld_shlibs=no + fi + ;; + + os2*) + hardcode_libdir_flag_spec='-L$libdir' + hardcode_minus_L=yes + allow_undefined_flag=unsupported + shrext_cmds=.dll + archive_cmds='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ + $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ + $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ + $ECHO EXPORTS >> $output_objdir/$libname.def~ + emxexp $libobjs | $SED /"_DLL_InitTerm"/d >> $output_objdir/$libname.def~ + $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ + emximp -o $lib $output_objdir/$libname.def' + archive_expsym_cmds='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ + $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ + $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ + $ECHO EXPORTS >> $output_objdir/$libname.def~ + prefix_cmds="$SED"~ + if test EXPORTS = "`$SED 1q $export_symbols`"; then + prefix_cmds="$prefix_cmds -e 1d"; + fi~ + prefix_cmds="$prefix_cmds -e \"s/^\(.*\)$/_\1/g\""~ + cat $export_symbols | $prefix_cmds >> $output_objdir/$libname.def~ + $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ + emximp -o $lib $output_objdir/$libname.def' + old_archive_From_new_cmds='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def' + enable_shared_with_static_runtimes=yes + ;; + + osf3*) + if test yes = "$GCC"; then + allow_undefined_flag=' $wl-expect_unresolved $wl\*' + archive_cmds='$CC -shared$allow_undefined_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' + else + allow_undefined_flag=' -expect_unresolved \*' + archive_cmds='$CC -shared$allow_undefined_flag $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' + fi + archive_cmds_need_lc='no' + hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' + hardcode_libdir_separator=: + ;; + + osf4* | osf5*) # as osf3* with the addition of -msym flag + if test yes = "$GCC"; then + allow_undefined_flag=' $wl-expect_unresolved $wl\*' + archive_cmds='$CC -shared$allow_undefined_flag $pic_flag $libobjs $deplibs $compiler_flags $wl-msym $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' + hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' + else + allow_undefined_flag=' -expect_unresolved \*' + archive_cmds='$CC -shared$allow_undefined_flag $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' + archive_expsym_cmds='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; printf "%s\\n" "-hidden">> $lib.exp~ + $CC -shared$allow_undefined_flag $wl-input $wl$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib~$RM $lib.exp' + + # Both c and cxx compiler support -rpath directly + hardcode_libdir_flag_spec='-rpath $libdir' + fi + archive_cmds_need_lc='no' + hardcode_libdir_separator=: + ;; + + solaris*) + no_undefined_flag=' -z defs' + if test yes = "$GCC"; then + wlarc='$wl' + archive_cmds='$CC -shared $pic_flag $wl-z ${wl}text $wl-h $wl$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ + $CC -shared $pic_flag $wl-z ${wl}text $wl-M $wl$lib.exp $wl-h $wl$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' + else + case `$CC -V 2>&1` in + *"Compilers 5.0"*) + wlarc='' + archive_cmds='$LD -G$allow_undefined_flag -h $soname -o $lib $libobjs $deplibs $linker_flags' + archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ + $LD -G$allow_undefined_flag -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$RM $lib.exp' + ;; + *) + wlarc='$wl' + archive_cmds='$CC -G$allow_undefined_flag -h $soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ + $CC -G$allow_undefined_flag -M $lib.exp -h $soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' + ;; + esac + fi + hardcode_libdir_flag_spec='-R$libdir' + hardcode_shlibpath_var=no + case $host_os in + solaris2.[0-5] | solaris2.[0-5].*) ;; + *) + # The compiler driver will combine and reorder linker options, + # but understands '-z linker_flag'. GCC discards it without '$wl', + # but is careful enough not to reorder. + # Supported since Solaris 2.6 (maybe 2.5.1?) + if test yes = "$GCC"; then + whole_archive_flag_spec='$wl-z ${wl}allextract$convenience $wl-z ${wl}defaultextract' + else + whole_archive_flag_spec='-z allextract$convenience -z defaultextract' + fi + ;; + esac + link_all_deplibs=yes + ;; + + sunos4*) + if test sequent = "$host_vendor"; then + # Use $CC to link under sequent, because it throws in some extra .o + # files that make .init and .fini sections work. + archive_cmds='$CC -G $wl-h $soname -o $lib $libobjs $deplibs $compiler_flags' + else + archive_cmds='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' + fi + hardcode_libdir_flag_spec='-L$libdir' + hardcode_direct=yes + hardcode_minus_L=yes + hardcode_shlibpath_var=no + ;; + + sysv4) + case $host_vendor in + sni) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct=yes # is this really true??? + ;; + siemens) + ## LD is ld it makes a PLAMLIB + ## CC just makes a GrossModule. + archive_cmds='$LD -G -o $lib $libobjs $deplibs $linker_flags' + reload_cmds='$CC -r -o $output$reload_objs' + hardcode_direct=no + ;; + motorola) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct=no #Motorola manual says yes, but my tests say they lie + ;; + esac + runpath_var='LD_RUN_PATH' + hardcode_shlibpath_var=no + ;; + + sysv4.3*) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_shlibpath_var=no + export_dynamic_flag_spec='-Bexport' + ;; + + sysv4*MP*) + if test -d /usr/nec; then + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_shlibpath_var=no + runpath_var=LD_RUN_PATH + hardcode_runpath_var=yes + ld_shlibs=yes + fi + ;; + + sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*) + no_undefined_flag='$wl-z,text' + archive_cmds_need_lc=no + hardcode_shlibpath_var=no + runpath_var='LD_RUN_PATH' + + if test yes = "$GCC"; then + archive_cmds='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + else + archive_cmds='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + fi + ;; + + sysv5* | sco3.2v5* | sco5v6*) + # Note: We CANNOT use -z defs as we might desire, because we do not + # link with -lc, and that would cause any symbols used from libc to + # always be unresolved, which means just about no library would + # ever link correctly. If we're not using GNU ld we use -z text + # though, which does catch some bad symbols but isn't as heavy-handed + # as -z defs. + no_undefined_flag='$wl-z,text' + allow_undefined_flag='$wl-z,nodefs' + archive_cmds_need_lc=no + hardcode_shlibpath_var=no + hardcode_libdir_flag_spec='$wl-R,$libdir' + hardcode_libdir_separator=':' + link_all_deplibs=yes + export_dynamic_flag_spec='$wl-Bexport' + runpath_var='LD_RUN_PATH' + + if test yes = "$GCC"; then + archive_cmds='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + else + archive_cmds='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + fi + ;; + + uts4*) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_libdir_flag_spec='-L$libdir' + hardcode_shlibpath_var=no + ;; + + *) + ld_shlibs=no + ;; + esac + + if test sni = "$host_vendor"; then + case $host in + sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) + export_dynamic_flag_spec='$wl-Blargedynsym' + ;; + esac + fi + fi + +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs" >&5 +$as_echo "$ld_shlibs" >&6; } +test no = "$ld_shlibs" && can_build_shared=no + +with_gnu_ld=$with_gnu_ld + + + + + + + + + + + + + + + +# +# Do we need to explicitly link libc? +# +case "x$archive_cmds_need_lc" in +x|xyes) + # Assume -lc should be added + archive_cmds_need_lc=yes + + if test yes,yes = "$GCC,$enable_shared"; then + case $archive_cmds in + *'~'*) + # FIXME: we may have to deal with multi-command sequences. + ;; + '$CC '*) + # Test whether the compiler implicitly links with -lc since on some + # systems, -lgcc has to come before -lc. If gcc already passes -lc + # to ld, don't add -lc before -lgcc. + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether -lc should be explicitly linked in" >&5 +$as_echo_n "checking whether -lc should be explicitly linked in... " >&6; } +if ${lt_cv_archive_cmds_need_lc+:} false; then : + $as_echo_n "(cached) " >&6 +else + $RM conftest* + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } 2>conftest.err; then + soname=conftest + lib=conftest + libobjs=conftest.$ac_objext + deplibs= + wl=$lt_prog_compiler_wl + pic_flag=$lt_prog_compiler_pic + compiler_flags=-v + linker_flags=-v + verstring= + output_objdir=. + libname=conftest + lt_save_allow_undefined_flag=$allow_undefined_flag + allow_undefined_flag= + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1\""; } >&5 + (eval $archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } + then + lt_cv_archive_cmds_need_lc=no + else + lt_cv_archive_cmds_need_lc=yes + fi + allow_undefined_flag=$lt_save_allow_undefined_flag + else + cat conftest.err 1>&5 + fi + $RM conftest* + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_archive_cmds_need_lc" >&5 +$as_echo "$lt_cv_archive_cmds_need_lc" >&6; } + archive_cmds_need_lc=$lt_cv_archive_cmds_need_lc + ;; + esac + fi + ;; +esac + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking dynamic linker characteristics" >&5 +$as_echo_n "checking dynamic linker characteristics... " >&6; } + +if test yes = "$GCC"; then + case $host_os in + darwin*) lt_awk_arg='/^libraries:/,/LR/' ;; + *) lt_awk_arg='/^libraries:/' ;; + esac + case $host_os in + mingw* | cegcc*) lt_sed_strip_eq='s|=\([A-Za-z]:\)|\1|g' ;; + *) lt_sed_strip_eq='s|=/|/|g' ;; + esac + lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e $lt_sed_strip_eq` + case $lt_search_path_spec in + *\;*) + # if the path contains ";" then we assume it to be the separator + # otherwise default to the standard path separator (i.e. ":") - it is + # assumed that no part of a normal pathname contains ";" but that should + # okay in the real world where ";" in dirpaths is itself problematic. + lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED 's/;/ /g'` + ;; + *) + lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED "s/$PATH_SEPARATOR/ /g"` + ;; + esac + # Ok, now we have the path, separated by spaces, we can step through it + # and add multilib dir if necessary... + lt_tmp_lt_search_path_spec= + lt_multi_os_dir=/`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null` + # ...but if some path component already ends with the multilib dir we assume + # that all is fine and trust -print-search-dirs as is (GCC 4.2? or newer). + case "$lt_multi_os_dir; $lt_search_path_spec " in + "/; "* | "/.; "* | "/./; "* | *"$lt_multi_os_dir "* | *"$lt_multi_os_dir/ "*) + lt_multi_os_dir= + ;; + esac + for lt_sys_path in $lt_search_path_spec; do + if test -d "$lt_sys_path$lt_multi_os_dir"; then + lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path$lt_multi_os_dir" + elif test -n "$lt_multi_os_dir"; then + test -d "$lt_sys_path" && \ + lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path" + fi + done + lt_search_path_spec=`$ECHO "$lt_tmp_lt_search_path_spec" | awk ' +BEGIN {RS = " "; FS = "/|\n";} { + lt_foo = ""; + lt_count = 0; + for (lt_i = NF; lt_i > 0; lt_i--) { + if ($lt_i != "" && $lt_i != ".") { + if ($lt_i == "..") { + lt_count++; + } else { + if (lt_count == 0) { + lt_foo = "/" $lt_i lt_foo; + } else { + lt_count--; + } + } + } + } + if (lt_foo != "") { lt_freq[lt_foo]++; } + if (lt_freq[lt_foo] == 1) { print lt_foo; } +}'` + # AWK program above erroneously prepends '/' to C:/dos/paths + # for these hosts. + case $host_os in + mingw* | cegcc*) lt_search_path_spec=`$ECHO "$lt_search_path_spec" |\ + $SED 's|/\([A-Za-z]:\)|\1|g'` ;; + esac + sys_lib_search_path_spec=`$ECHO "$lt_search_path_spec" | $lt_NL2SP` +else + sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" +fi +library_names_spec= +libname_spec='lib$name' +soname_spec= +shrext_cmds=.so +postinstall_cmds= +postuninstall_cmds= +finish_cmds= +finish_eval= +shlibpath_var= +shlibpath_overrides_runpath=unknown +version_type=none +dynamic_linker="$host_os ld.so" +sys_lib_dlsearch_path_spec="/lib /usr/lib" +need_lib_prefix=unknown +hardcode_into_libs=no + +# when you set need_version to no, make sure it does not cause -set_version +# flags to be left without arguments +need_version=unknown + + + +case $host_os in +aix3*) + version_type=linux # correct to gnu/linux during the next big refactor + library_names_spec='$libname$release$shared_ext$versuffix $libname.a' + shlibpath_var=LIBPATH + + # AIX 3 has no versioning support, so we append a major version to the name. + soname_spec='$libname$release$shared_ext$major' + ;; + +aix[4-9]*) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + hardcode_into_libs=yes + if test ia64 = "$host_cpu"; then + # AIX 5 supports IA64 + library_names_spec='$libname$release$shared_ext$major $libname$release$shared_ext$versuffix $libname$shared_ext' + shlibpath_var=LD_LIBRARY_PATH + else + # With GCC up to 2.95.x, collect2 would create an import file + # for dependence libraries. The import file would start with + # the line '#! .'. This would cause the generated library to + # depend on '.', always an invalid library. This was fixed in + # development snapshots of GCC prior to 3.0. + case $host_os in + aix4 | aix4.[01] | aix4.[01].*) + if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' + echo ' yes ' + echo '#endif'; } | $CC -E - | $GREP yes > /dev/null; then + : + else + can_build_shared=no + fi + ;; + esac + # Using Import Files as archive members, it is possible to support + # filename-based versioning of shared library archives on AIX. While + # this would work for both with and without runtime linking, it will + # prevent static linking of such archives. So we do filename-based + # shared library versioning with .so extension only, which is used + # when both runtime linking and shared linking is enabled. + # Unfortunately, runtime linking may impact performance, so we do + # not want this to be the default eventually. Also, we use the + # versioned .so libs for executables only if there is the -brtl + # linker flag in LDFLAGS as well, or --with-aix-soname=svr4 only. + # To allow for filename-based versioning support, we need to create + # libNAME.so.V as an archive file, containing: + # *) an Import File, referring to the versioned filename of the + # archive as well as the shared archive member, telling the + # bitwidth (32 or 64) of that shared object, and providing the + # list of exported symbols of that shared object, eventually + # decorated with the 'weak' keyword + # *) the shared object with the F_LOADONLY flag set, to really avoid + # it being seen by the linker. + # At run time we better use the real file rather than another symlink, + # but for link time we create the symlink libNAME.so -> libNAME.so.V + + case $with_aix_soname,$aix_use_runtimelinking in + # AIX (on Power*) has no versioning support, so currently we cannot hardcode correct + # soname into executable. Probably we can add versioning support to + # collect2, so additional links can be useful in future. + aix,yes) # traditional libtool + dynamic_linker='AIX unversionable lib.so' + # If using run time linking (on AIX 4.2 or later) use lib.so + # instead of lib.a to let people know that these are not + # typical AIX shared libraries. + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + ;; + aix,no) # traditional AIX only + dynamic_linker='AIX lib.a(lib.so.V)' + # We preserve .a as extension for shared libraries through AIX4.2 + # and later when we are not doing run time linking. + library_names_spec='$libname$release.a $libname.a' + soname_spec='$libname$release$shared_ext$major' + ;; + svr4,*) # full svr4 only + dynamic_linker="AIX lib.so.V($shared_archive_member_spec.o)" + library_names_spec='$libname$release$shared_ext$major $libname$shared_ext' + # We do not specify a path in Import Files, so LIBPATH fires. + shlibpath_overrides_runpath=yes + ;; + *,yes) # both, prefer svr4 + dynamic_linker="AIX lib.so.V($shared_archive_member_spec.o), lib.a(lib.so.V)" + library_names_spec='$libname$release$shared_ext$major $libname$shared_ext' + # unpreferred sharedlib libNAME.a needs extra handling + postinstall_cmds='test -n "$linkname" || linkname="$realname"~func_stripname "" ".so" "$linkname"~$install_shared_prog "$dir/$func_stripname_result.$libext" "$destdir/$func_stripname_result.$libext"~test -z "$tstripme" || test -z "$striplib" || $striplib "$destdir/$func_stripname_result.$libext"' + postuninstall_cmds='for n in $library_names $old_library; do :; done~func_stripname "" ".so" "$n"~test "$func_stripname_result" = "$n" || func_append rmfiles " $odir/$func_stripname_result.$libext"' + # We do not specify a path in Import Files, so LIBPATH fires. + shlibpath_overrides_runpath=yes + ;; + *,no) # both, prefer aix + dynamic_linker="AIX lib.a(lib.so.V), lib.so.V($shared_archive_member_spec.o)" + library_names_spec='$libname$release.a $libname.a' + soname_spec='$libname$release$shared_ext$major' + # unpreferred sharedlib libNAME.so.V and symlink libNAME.so need extra handling + postinstall_cmds='test -z "$dlname" || $install_shared_prog $dir/$dlname $destdir/$dlname~test -z "$tstripme" || test -z "$striplib" || $striplib $destdir/$dlname~test -n "$linkname" || linkname=$realname~func_stripname "" ".a" "$linkname"~(cd "$destdir" && $LN_S -f $dlname $func_stripname_result.so)' + postuninstall_cmds='test -z "$dlname" || func_append rmfiles " $odir/$dlname"~for n in $old_library $library_names; do :; done~func_stripname "" ".a" "$n"~func_append rmfiles " $odir/$func_stripname_result.so"' + ;; + esac + shlibpath_var=LIBPATH + fi + ;; + +amigaos*) + case $host_cpu in + powerpc) + # Since July 2007 AmigaOS4 officially supports .so libraries. + # When compiling the executable, add -use-dynld -Lsobjs: to the compileline. + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + ;; + m68k) + library_names_spec='$libname.ixlibrary $libname.a' + # Create ${libname}_ixlibrary.a entries in /sys/libs. + finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' + ;; + esac + ;; + +beos*) + library_names_spec='$libname$shared_ext' + dynamic_linker="$host_os ld.so" + shlibpath_var=LIBRARY_PATH + ;; + +bsdi[45]*) + version_type=linux # correct to gnu/linux during the next big refactor + need_version=no + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" + sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" + # the default ld.so.conf also contains /usr/contrib/lib and + # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow + # libtool to hard-code these into programs + ;; + +cygwin* | mingw* | pw32* | cegcc*) + version_type=windows + shrext_cmds=.dll + need_version=no + need_lib_prefix=no + + case $GCC,$cc_basename in + yes,*) + # gcc + library_names_spec='$libname.dll.a' + # DLL is installed to $(libdir)/../bin by postinstall_cmds + postinstall_cmds='base_file=`basename \$file`~ + dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; echo \$dlname'\''`~ + dldir=$destdir/`dirname \$dlpath`~ + test -d \$dldir || mkdir -p \$dldir~ + $install_prog $dir/$dlname \$dldir/$dlname~ + chmod a+x \$dldir/$dlname~ + if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then + eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; + fi' + postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ + dlpath=$dir/\$dldll~ + $RM \$dlpath' + shlibpath_overrides_runpath=yes + + case $host_os in + cygwin*) + # Cygwin DLLs use 'cyg' prefix rather than 'lib' + soname_spec='`echo $libname | sed -e 's/^lib/cyg/'``echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' + + sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/lib/w32api" + ;; + mingw* | cegcc*) + # MinGW DLLs use traditional 'lib' prefix + soname_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' + ;; + pw32*) + # pw32 DLLs use 'pw' prefix rather than 'lib' + library_names_spec='`echo $libname | sed -e 's/^lib/pw/'``echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' + ;; + esac + dynamic_linker='Win32 ld.exe' + ;; + + *,cl*) + # Native MSVC + libname_spec='$name' + soname_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' + library_names_spec='$libname.dll.lib' + + case $build_os in + mingw*) + sys_lib_search_path_spec= + lt_save_ifs=$IFS + IFS=';' + for lt_path in $LIB + do + IFS=$lt_save_ifs + # Let DOS variable expansion print the short 8.3 style file name. + lt_path=`cd "$lt_path" 2>/dev/null && cmd //C "for %i in (".") do @echo %~si"` + sys_lib_search_path_spec="$sys_lib_search_path_spec $lt_path" + done + IFS=$lt_save_ifs + # Convert to MSYS style. + sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | sed -e 's|\\\\|/|g' -e 's| \\([a-zA-Z]\\):| /\\1|g' -e 's|^ ||'` + ;; + cygwin*) + # Convert to unix form, then to dos form, then back to unix form + # but this time dos style (no spaces!) so that the unix form looks + # like /cygdrive/c/PROGRA~1:/cygdr... + sys_lib_search_path_spec=`cygpath --path --unix "$LIB"` + sys_lib_search_path_spec=`cygpath --path --dos "$sys_lib_search_path_spec" 2>/dev/null` + sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` + ;; + *) + sys_lib_search_path_spec=$LIB + if $ECHO "$sys_lib_search_path_spec" | $GREP ';[c-zC-Z]:/' >/dev/null; then + # It is most probably a Windows format PATH. + sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` + else + sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` + fi + # FIXME: find the short name or the path components, as spaces are + # common. (e.g. "Program Files" -> "PROGRA~1") + ;; + esac + + # DLL is installed to $(libdir)/../bin by postinstall_cmds + postinstall_cmds='base_file=`basename \$file`~ + dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; echo \$dlname'\''`~ + dldir=$destdir/`dirname \$dlpath`~ + test -d \$dldir || mkdir -p \$dldir~ + $install_prog $dir/$dlname \$dldir/$dlname' + postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ + dlpath=$dir/\$dldll~ + $RM \$dlpath' + shlibpath_overrides_runpath=yes + dynamic_linker='Win32 link.exe' + ;; + + *) + # Assume MSVC wrapper + library_names_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext $libname.lib' + dynamic_linker='Win32 ld.exe' + ;; + esac + # FIXME: first we should search . and the directory the executable is in + shlibpath_var=PATH + ;; + +darwin* | rhapsody*) + dynamic_linker="$host_os dyld" + version_type=darwin + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$major$shared_ext $libname$shared_ext' + soname_spec='$libname$release$major$shared_ext' + shlibpath_overrides_runpath=yes + shlibpath_var=DYLD_LIBRARY_PATH + shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' + + sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/local/lib" + sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' + ;; + +dgux*) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + shlibpath_var=LD_LIBRARY_PATH + ;; + +freebsd* | dragonfly*) + # DragonFly does not have aout. When/if they implement a new + # versioning mechanism, adjust this. + if test -x /usr/bin/objformat; then + objformat=`/usr/bin/objformat` + else + case $host_os in + freebsd[23].*) objformat=aout ;; + *) objformat=elf ;; + esac + fi + version_type=freebsd-$objformat + case $version_type in + freebsd-elf*) + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + need_version=no + need_lib_prefix=no + ;; + freebsd-*) + library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' + need_version=yes + ;; + esac + shlibpath_var=LD_LIBRARY_PATH + case $host_os in + freebsd2.*) + shlibpath_overrides_runpath=yes + ;; + freebsd3.[01]* | freebsdelf3.[01]*) + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + freebsd3.[2-9]* | freebsdelf3.[2-9]* | \ + freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1) + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + *) # from 4.6 on, and DragonFly + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + esac + ;; + +haiku*) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + dynamic_linker="$host_os runtime_loader" + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + shlibpath_var=LIBRARY_PATH + shlibpath_overrides_runpath=no + sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib' + hardcode_into_libs=yes + ;; + +hpux9* | hpux10* | hpux11*) + # Give a soname corresponding to the major version so that dld.sl refuses to + # link against other versions. + version_type=sunos + need_lib_prefix=no + need_version=no + case $host_cpu in + ia64*) + shrext_cmds='.so' + hardcode_into_libs=yes + dynamic_linker="$host_os dld.so" + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + if test 32 = "$HPUX_IA64_MODE"; then + sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" + sys_lib_dlsearch_path_spec=/usr/lib/hpux32 + else + sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" + sys_lib_dlsearch_path_spec=/usr/lib/hpux64 + fi + ;; + hppa*64*) + shrext_cmds='.sl' + hardcode_into_libs=yes + dynamic_linker="$host_os dld.sl" + shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH + shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + ;; + *) + shrext_cmds='.sl' + dynamic_linker="$host_os dld.sl" + shlibpath_var=SHLIB_PATH + shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + ;; + esac + # HP-UX runs *really* slowly unless shared libraries are mode 555, ... + postinstall_cmds='chmod 555 $lib' + # or fails outright, so override atomically: + install_override_mode=555 + ;; + +interix[3-9]*) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + +irix5* | irix6* | nonstopux*) + case $host_os in + nonstopux*) version_type=nonstopux ;; + *) + if test yes = "$lt_cv_prog_gnu_ld"; then + version_type=linux # correct to gnu/linux during the next big refactor + else + version_type=irix + fi ;; + esac + need_lib_prefix=no + need_version=no + soname_spec='$libname$release$shared_ext$major' + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$release$shared_ext $libname$shared_ext' + case $host_os in + irix5* | nonstopux*) + libsuff= shlibsuff= + ;; + *) + case $LD in # libtool.m4 will add one of these switches to LD + *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") + libsuff= shlibsuff= libmagic=32-bit;; + *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") + libsuff=32 shlibsuff=N32 libmagic=N32;; + *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") + libsuff=64 shlibsuff=64 libmagic=64-bit;; + *) libsuff= shlibsuff= libmagic=never-match;; + esac + ;; + esac + shlibpath_var=LD_LIBRARY${shlibsuff}_PATH + shlibpath_overrides_runpath=no + sys_lib_search_path_spec="/usr/lib$libsuff /lib$libsuff /usr/local/lib$libsuff" + sys_lib_dlsearch_path_spec="/usr/lib$libsuff /lib$libsuff" + hardcode_into_libs=yes + ;; + +# No shared lib support for Linux oldld, aout, or coff. +linux*oldld* | linux*aout* | linux*coff*) + dynamic_linker=no + ;; + +linux*android*) + version_type=none # Android doesn't support versioned libraries. + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$shared_ext' + soname_spec='$libname$release$shared_ext' + finish_cmds= + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + + # This implies no fast_install, which is unacceptable. + # Some rework will be needed to allow for fast_install + # before this can be enabled. + hardcode_into_libs=yes + + dynamic_linker='Android linker' + # Don't embed -rpath directories since the linker doesn't support them. + hardcode_libdir_flag_spec='-L$libdir' + ;; + +# This must be glibc/ELF. +linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + + # Some binutils ld are patched to set DT_RUNPATH + if ${lt_cv_shlibpath_overrides_runpath+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_shlibpath_overrides_runpath=no + save_LDFLAGS=$LDFLAGS + save_libdir=$libdir + eval "libdir=/foo; wl=\"$lt_prog_compiler_wl\"; \ + LDFLAGS=\"\$LDFLAGS $hardcode_libdir_flag_spec\"" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + if ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null; then : + lt_cv_shlibpath_overrides_runpath=yes +fi +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + LDFLAGS=$save_LDFLAGS + libdir=$save_libdir + +fi + + shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath + + # This implies no fast_install, which is unacceptable. + # Some rework will be needed to allow for fast_install + # before this can be enabled. + hardcode_into_libs=yes + + # Ideally, we could use ldconfig to report *all* directores which are + # searched for libraries, however this is still not possible. Aside from not + # being certain /sbin/ldconfig is available, command + # 'ldconfig -N -X -v | grep ^/' on 64bit Fedora does not report /usr/lib64, + # even though it is searched at run-time. Try to do the best guess by + # appending ld.so.conf contents (and includes) to the search path. + if test -f /etc/ld.so.conf; then + lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '` + sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" + fi + + # We used to test for /lib/ld.so.1 and disable shared libraries on + # powerpc, because MkLinux only supported shared libraries with the + # GNU dynamic linker. Since this was broken with cross compilers, + # most powerpc-linux boxes support dynamic linking these days and + # people can always --disable-shared, the test was removed, and we + # assume the GNU/Linux dynamic linker is in use. + dynamic_linker='GNU/Linux ld.so' + ;; + +netbsdelf*-gnu) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + dynamic_linker='NetBSD ld.elf_so' + ;; + +netbsd*) + version_type=sunos + need_lib_prefix=no + need_version=no + if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then + library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + dynamic_linker='NetBSD (a.out) ld.so' + else + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + dynamic_linker='NetBSD ld.elf_so' + fi + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + +newsos6) + version_type=linux # correct to gnu/linux during the next big refactor + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + ;; + +*nto* | *qnx*) + version_type=qnx + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + dynamic_linker='ldqnx.so' + ;; + +openbsd* | bitrig*) + version_type=sunos + sys_lib_dlsearch_path_spec=/usr/lib + need_lib_prefix=no + if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then + need_version=no + else + need_version=yes + fi + library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + ;; + +os2*) + libname_spec='$name' + version_type=windows + shrext_cmds=.dll + need_version=no + need_lib_prefix=no + # OS/2 can only load a DLL with a base name of 8 characters or less. + soname_spec='`test -n "$os2dllname" && libname="$os2dllname"; + v=$($ECHO $release$versuffix | tr -d .-); + n=$($ECHO $libname | cut -b -$((8 - ${#v})) | tr . _); + $ECHO $n$v`$shared_ext' + library_names_spec='${libname}_dll.$libext' + dynamic_linker='OS/2 ld.exe' + shlibpath_var=BEGINLIBPATH + sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + postinstall_cmds='base_file=`basename \$file`~ + dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; $ECHO \$dlname'\''`~ + dldir=$destdir/`dirname \$dlpath`~ + test -d \$dldir || mkdir -p \$dldir~ + $install_prog $dir/$dlname \$dldir/$dlname~ + chmod a+x \$dldir/$dlname~ + if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then + eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; + fi' + postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; $ECHO \$dlname'\''`~ + dlpath=$dir/\$dldll~ + $RM \$dlpath' + ;; + +osf3* | osf4* | osf5*) + version_type=osf + need_lib_prefix=no + need_version=no + soname_spec='$libname$release$shared_ext$major' + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + shlibpath_var=LD_LIBRARY_PATH + sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + ;; + +rdos*) + dynamic_linker=no + ;; + +solaris*) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + # ldd complains unless libraries are executable + postinstall_cmds='chmod +x $lib' + ;; + +sunos4*) + version_type=sunos + library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' + finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + if test yes = "$with_gnu_ld"; then + need_lib_prefix=no + fi + need_version=yes + ;; + +sysv4 | sysv4.3*) + version_type=linux # correct to gnu/linux during the next big refactor + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + shlibpath_var=LD_LIBRARY_PATH + case $host_vendor in + sni) + shlibpath_overrides_runpath=no + need_lib_prefix=no + runpath_var=LD_RUN_PATH + ;; + siemens) + need_lib_prefix=no + ;; + motorola) + need_lib_prefix=no + need_version=no + shlibpath_overrides_runpath=no + sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' + ;; + esac + ;; + +sysv4*MP*) + if test -d /usr/nec; then + version_type=linux # correct to gnu/linux during the next big refactor + library_names_spec='$libname$shared_ext.$versuffix $libname$shared_ext.$major $libname$shared_ext' + soname_spec='$libname$shared_ext.$major' + shlibpath_var=LD_LIBRARY_PATH + fi + ;; + +sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) + version_type=sco + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + if test yes = "$with_gnu_ld"; then + sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' + else + sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' + case $host_os in + sco3.2v5*) + sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" + ;; + esac + fi + sys_lib_dlsearch_path_spec='/usr/lib' + ;; + +tpf*) + # TPF is a cross-target only. Preferred cross-host = GNU/Linux. + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + +uts4*) + version_type=linux # correct to gnu/linux during the next big refactor + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + shlibpath_var=LD_LIBRARY_PATH + ;; + +*) + dynamic_linker=no + ;; +esac +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $dynamic_linker" >&5 +$as_echo "$dynamic_linker" >&6; } +test no = "$dynamic_linker" && can_build_shared=no + +variables_saved_for_relink="PATH $shlibpath_var $runpath_var" +if test yes = "$GCC"; then + variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" +fi + +if test set = "${lt_cv_sys_lib_search_path_spec+set}"; then + sys_lib_search_path_spec=$lt_cv_sys_lib_search_path_spec +fi + +if test set = "${lt_cv_sys_lib_dlsearch_path_spec+set}"; then + sys_lib_dlsearch_path_spec=$lt_cv_sys_lib_dlsearch_path_spec +fi + +# remember unaugmented sys_lib_dlsearch_path content for libtool script decls... +configure_time_dlsearch_path=$sys_lib_dlsearch_path_spec + +# ... but it needs LT_SYS_LIBRARY_PATH munging for other configure-time code +func_munge_path_list sys_lib_dlsearch_path_spec "$LT_SYS_LIBRARY_PATH" + +# to be used as default LT_SYS_LIBRARY_PATH value in generated libtool +configure_time_lt_sys_library_path=$LT_SYS_LIBRARY_PATH + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to hardcode library paths into programs" >&5 +$as_echo_n "checking how to hardcode library paths into programs... " >&6; } +hardcode_action= +if test -n "$hardcode_libdir_flag_spec" || + test -n "$runpath_var" || + test yes = "$hardcode_automatic"; then + + # We can hardcode non-existent directories. + if test no != "$hardcode_direct" && + # If the only mechanism to avoid hardcoding is shlibpath_var, we + # have to relink, otherwise we might link with an installed library + # when we should be linking with a yet-to-be-installed one + ## test no != "$_LT_TAGVAR(hardcode_shlibpath_var, )" && + test no != "$hardcode_minus_L"; then + # Linking always hardcodes the temporary library directory. + hardcode_action=relink + else + # We can link without hardcoding, and we can hardcode nonexisting dirs. + hardcode_action=immediate + fi +else + # We cannot hardcode anything, or else we can only hardcode existing + # directories. + hardcode_action=unsupported +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $hardcode_action" >&5 +$as_echo "$hardcode_action" >&6; } + +if test relink = "$hardcode_action" || + test yes = "$inherit_rpath"; then + # Fast installation is not supported + enable_fast_install=no +elif test yes = "$shlibpath_overrides_runpath" || + test no = "$enable_shared"; then + # Fast installation is not necessary + enable_fast_install=needless +fi + + + + + + + if test yes != "$enable_dlopen"; then + enable_dlopen=unknown + enable_dlopen_self=unknown + enable_dlopen_self_static=unknown +else + lt_cv_dlopen=no + lt_cv_dlopen_libs= + + case $host_os in + beos*) + lt_cv_dlopen=load_add_on + lt_cv_dlopen_libs= + lt_cv_dlopen_self=yes + ;; + + mingw* | pw32* | cegcc*) + lt_cv_dlopen=LoadLibrary + lt_cv_dlopen_libs= + ;; + + cygwin*) + lt_cv_dlopen=dlopen + lt_cv_dlopen_libs= + ;; + + darwin*) + # if libdl is installed we need to link against it + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5 +$as_echo_n "checking for dlopen in -ldl... " >&6; } +if ${ac_cv_lib_dl_dlopen+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-ldl $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char dlopen (); +int +main () +{ +return dlopen (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_dl_dlopen=yes +else + ac_cv_lib_dl_dlopen=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5 +$as_echo "$ac_cv_lib_dl_dlopen" >&6; } +if test "x$ac_cv_lib_dl_dlopen" = xyes; then : + lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-ldl +else + + lt_cv_dlopen=dyld + lt_cv_dlopen_libs= + lt_cv_dlopen_self=yes + +fi + + ;; + + tpf*) + # Don't try to run any link tests for TPF. We know it's impossible + # because TPF is a cross-compiler, and we know how we open DSOs. + lt_cv_dlopen=dlopen + lt_cv_dlopen_libs= + lt_cv_dlopen_self=no + ;; + + *) + ac_fn_c_check_func "$LINENO" "shl_load" "ac_cv_func_shl_load" +if test "x$ac_cv_func_shl_load" = xyes; then : + lt_cv_dlopen=shl_load +else + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for shl_load in -ldld" >&5 +$as_echo_n "checking for shl_load in -ldld... " >&6; } +if ${ac_cv_lib_dld_shl_load+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-ldld $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char shl_load (); +int +main () +{ +return shl_load (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_dld_shl_load=yes +else + ac_cv_lib_dld_shl_load=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_shl_load" >&5 +$as_echo "$ac_cv_lib_dld_shl_load" >&6; } +if test "x$ac_cv_lib_dld_shl_load" = xyes; then : + lt_cv_dlopen=shl_load lt_cv_dlopen_libs=-ldld +else + ac_fn_c_check_func "$LINENO" "dlopen" "ac_cv_func_dlopen" +if test "x$ac_cv_func_dlopen" = xyes; then : + lt_cv_dlopen=dlopen +else + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5 +$as_echo_n "checking for dlopen in -ldl... " >&6; } +if ${ac_cv_lib_dl_dlopen+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-ldl $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char dlopen (); +int +main () +{ +return dlopen (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_dl_dlopen=yes +else + ac_cv_lib_dl_dlopen=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5 +$as_echo "$ac_cv_lib_dl_dlopen" >&6; } +if test "x$ac_cv_lib_dl_dlopen" = xyes; then : + lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-ldl +else + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -lsvld" >&5 +$as_echo_n "checking for dlopen in -lsvld... " >&6; } +if ${ac_cv_lib_svld_dlopen+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lsvld $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char dlopen (); +int +main () +{ +return dlopen (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_svld_dlopen=yes +else + ac_cv_lib_svld_dlopen=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_svld_dlopen" >&5 +$as_echo "$ac_cv_lib_svld_dlopen" >&6; } +if test "x$ac_cv_lib_svld_dlopen" = xyes; then : + lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-lsvld +else + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dld_link in -ldld" >&5 +$as_echo_n "checking for dld_link in -ldld... " >&6; } +if ${ac_cv_lib_dld_dld_link+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-ldld $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char dld_link (); +int +main () +{ +return dld_link (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_dld_dld_link=yes +else + ac_cv_lib_dld_dld_link=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_dld_link" >&5 +$as_echo "$ac_cv_lib_dld_dld_link" >&6; } +if test "x$ac_cv_lib_dld_dld_link" = xyes; then : + lt_cv_dlopen=dld_link lt_cv_dlopen_libs=-ldld +fi + + +fi + + +fi + + +fi + + +fi + + +fi + + ;; + esac + + if test no = "$lt_cv_dlopen"; then + enable_dlopen=no + else + enable_dlopen=yes + fi + + case $lt_cv_dlopen in + dlopen) + save_CPPFLAGS=$CPPFLAGS + test yes = "$ac_cv_header_dlfcn_h" && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" + + save_LDFLAGS=$LDFLAGS + wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" + + save_LIBS=$LIBS + LIBS="$lt_cv_dlopen_libs $LIBS" + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a program can dlopen itself" >&5 +$as_echo_n "checking whether a program can dlopen itself... " >&6; } +if ${lt_cv_dlopen_self+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test yes = "$cross_compiling"; then : + lt_cv_dlopen_self=cross +else + lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 + lt_status=$lt_dlunknown + cat > conftest.$ac_ext <<_LT_EOF +#line $LINENO "configure" +#include "confdefs.h" + +#if HAVE_DLFCN_H +#include +#endif + +#include + +#ifdef RTLD_GLOBAL +# define LT_DLGLOBAL RTLD_GLOBAL +#else +# ifdef DL_GLOBAL +# define LT_DLGLOBAL DL_GLOBAL +# else +# define LT_DLGLOBAL 0 +# endif +#endif + +/* We may have to define LT_DLLAZY_OR_NOW in the command line if we + find out it does not work in some platform. */ +#ifndef LT_DLLAZY_OR_NOW +# ifdef RTLD_LAZY +# define LT_DLLAZY_OR_NOW RTLD_LAZY +# else +# ifdef DL_LAZY +# define LT_DLLAZY_OR_NOW DL_LAZY +# else +# ifdef RTLD_NOW +# define LT_DLLAZY_OR_NOW RTLD_NOW +# else +# ifdef DL_NOW +# define LT_DLLAZY_OR_NOW DL_NOW +# else +# define LT_DLLAZY_OR_NOW 0 +# endif +# endif +# endif +# endif +#endif + +/* When -fvisibility=hidden is used, assume the code has been annotated + correspondingly for the symbols needed. */ +#if defined __GNUC__ && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3)) +int fnord () __attribute__((visibility("default"))); +#endif + +int fnord () { return 42; } +int main () +{ + void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); + int status = $lt_dlunknown; + + if (self) + { + if (dlsym (self,"fnord")) status = $lt_dlno_uscore; + else + { + if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; + else puts (dlerror ()); + } + /* dlclose (self); */ + } + else + puts (dlerror ()); + + return status; +} +_LT_EOF + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 + (eval $ac_link) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && test -s "conftest$ac_exeext" 2>/dev/null; then + (./conftest; exit; ) >&5 2>/dev/null + lt_status=$? + case x$lt_status in + x$lt_dlno_uscore) lt_cv_dlopen_self=yes ;; + x$lt_dlneed_uscore) lt_cv_dlopen_self=yes ;; + x$lt_dlunknown|x*) lt_cv_dlopen_self=no ;; + esac + else : + # compilation failed + lt_cv_dlopen_self=no + fi +fi +rm -fr conftest* + + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self" >&5 +$as_echo "$lt_cv_dlopen_self" >&6; } + + if test yes = "$lt_cv_dlopen_self"; then + wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a statically linked program can dlopen itself" >&5 +$as_echo_n "checking whether a statically linked program can dlopen itself... " >&6; } +if ${lt_cv_dlopen_self_static+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test yes = "$cross_compiling"; then : + lt_cv_dlopen_self_static=cross +else + lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 + lt_status=$lt_dlunknown + cat > conftest.$ac_ext <<_LT_EOF +#line $LINENO "configure" +#include "confdefs.h" + +#if HAVE_DLFCN_H +#include +#endif + +#include + +#ifdef RTLD_GLOBAL +# define LT_DLGLOBAL RTLD_GLOBAL +#else +# ifdef DL_GLOBAL +# define LT_DLGLOBAL DL_GLOBAL +# else +# define LT_DLGLOBAL 0 +# endif +#endif + +/* We may have to define LT_DLLAZY_OR_NOW in the command line if we + find out it does not work in some platform. */ +#ifndef LT_DLLAZY_OR_NOW +# ifdef RTLD_LAZY +# define LT_DLLAZY_OR_NOW RTLD_LAZY +# else +# ifdef DL_LAZY +# define LT_DLLAZY_OR_NOW DL_LAZY +# else +# ifdef RTLD_NOW +# define LT_DLLAZY_OR_NOW RTLD_NOW +# else +# ifdef DL_NOW +# define LT_DLLAZY_OR_NOW DL_NOW +# else +# define LT_DLLAZY_OR_NOW 0 +# endif +# endif +# endif +# endif +#endif + +/* When -fvisibility=hidden is used, assume the code has been annotated + correspondingly for the symbols needed. */ +#if defined __GNUC__ && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3)) +int fnord () __attribute__((visibility("default"))); +#endif + +int fnord () { return 42; } +int main () +{ + void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); + int status = $lt_dlunknown; + + if (self) + { + if (dlsym (self,"fnord")) status = $lt_dlno_uscore; + else + { + if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; + else puts (dlerror ()); + } + /* dlclose (self); */ + } + else + puts (dlerror ()); + + return status; +} +_LT_EOF + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 + (eval $ac_link) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && test -s "conftest$ac_exeext" 2>/dev/null; then + (./conftest; exit; ) >&5 2>/dev/null + lt_status=$? + case x$lt_status in + x$lt_dlno_uscore) lt_cv_dlopen_self_static=yes ;; + x$lt_dlneed_uscore) lt_cv_dlopen_self_static=yes ;; + x$lt_dlunknown|x*) lt_cv_dlopen_self_static=no ;; + esac + else : + # compilation failed + lt_cv_dlopen_self_static=no + fi +fi +rm -fr conftest* + + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self_static" >&5 +$as_echo "$lt_cv_dlopen_self_static" >&6; } + fi + + CPPFLAGS=$save_CPPFLAGS + LDFLAGS=$save_LDFLAGS + LIBS=$save_LIBS + ;; + esac + + case $lt_cv_dlopen_self in + yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;; + *) enable_dlopen_self=unknown ;; + esac + + case $lt_cv_dlopen_self_static in + yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;; + *) enable_dlopen_self_static=unknown ;; + esac +fi + + + + + + + + + + + + + + + + + +striplib= +old_striplib= +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether stripping libraries is possible" >&5 +$as_echo_n "checking whether stripping libraries is possible... " >&6; } +if test -n "$STRIP" && $STRIP -V 2>&1 | $GREP "GNU strip" >/dev/null; then + test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" + test -z "$striplib" && striplib="$STRIP --strip-unneeded" + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } +else +# FIXME - insert some real tests, host_os isn't really good enough + case $host_os in + darwin*) + if test -n "$STRIP"; then + striplib="$STRIP -x" + old_striplib="$STRIP -S" + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + fi + ;; + *) + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + ;; + esac +fi + + + + + + + + + + + + + # Report what library types will actually be built + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if libtool supports shared libraries" >&5 +$as_echo_n "checking if libtool supports shared libraries... " >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $can_build_shared" >&5 +$as_echo "$can_build_shared" >&6; } + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build shared libraries" >&5 +$as_echo_n "checking whether to build shared libraries... " >&6; } + test no = "$can_build_shared" && enable_shared=no + + # On AIX, shared libraries and static libraries use the same namespace, and + # are all built from PIC. + case $host_os in + aix3*) + test yes = "$enable_shared" && enable_static=no + if test -n "$RANLIB"; then + archive_cmds="$archive_cmds~\$RANLIB \$lib" + postinstall_cmds='$RANLIB $lib' + fi + ;; + + aix[4-9]*) + if test ia64 != "$host_cpu"; then + case $enable_shared,$with_aix_soname,$aix_use_runtimelinking in + yes,aix,yes) ;; # shared object as lib.so file only + yes,svr4,*) ;; # shared object as lib.so archive member only + yes,*) enable_static=no ;; # shared object in lib.a archive as well + esac + fi + ;; + esac + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_shared" >&5 +$as_echo "$enable_shared" >&6; } + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build static libraries" >&5 +$as_echo_n "checking whether to build static libraries... " >&6; } + # Make sure either enable_shared or enable_static is yes. + test yes = "$enable_shared" || enable_static=yes + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_static" >&5 +$as_echo "$enable_static" >&6; } + + + + +fi +ac_ext=cpp +ac_cpp='$CXXCPP $CPPFLAGS' +ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_cxx_compiler_gnu + +CC=$lt_save_CC + + if test -n "$CXX" && ( test no != "$CXX" && + ( (test g++ = "$CXX" && `g++ -v >/dev/null 2>&1` ) || + (test g++ != "$CXX"))); then + ac_ext=cpp +ac_cpp='$CXXCPP $CPPFLAGS' +ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_cxx_compiler_gnu +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C++ preprocessor" >&5 +$as_echo_n "checking how to run the C++ preprocessor... " >&6; } +if test -z "$CXXCPP"; then + if ${ac_cv_prog_CXXCPP+:} false; then : + $as_echo_n "(cached) " >&6 +else + # Double quotes because CXXCPP needs to be expanded + for CXXCPP in "$CXX -E" "/lib/cpp" + do + ac_preproc_ok=false +for ac_cxx_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # Prefer to if __STDC__ is defined, since + # exists even on freestanding compilers. + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. "Syntax error" is here to catch this case. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#ifdef __STDC__ +# include +#else +# include +#endif + Syntax error +_ACEOF +if ac_fn_cxx_try_cpp "$LINENO"; then : + +else + # Broken: fails on valid input. +continue +fi +rm -f conftest.err conftest.i conftest.$ac_ext + + # OK, works on sane cases. Now check whether nonexistent headers + # can be detected and how. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +_ACEOF +if ac_fn_cxx_try_cpp "$LINENO"; then : + # Broken: success on invalid input. +continue +else + # Passes both tests. +ac_preproc_ok=: +break +fi +rm -f conftest.err conftest.i conftest.$ac_ext + +done +# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. +rm -f conftest.i conftest.err conftest.$ac_ext +if $ac_preproc_ok; then : + break +fi + + done + ac_cv_prog_CXXCPP=$CXXCPP + +fi + CXXCPP=$ac_cv_prog_CXXCPP +else + ac_cv_prog_CXXCPP=$CXXCPP +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $CXXCPP" >&5 +$as_echo "$CXXCPP" >&6; } +ac_preproc_ok=false +for ac_cxx_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # Prefer to if __STDC__ is defined, since + # exists even on freestanding compilers. + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. "Syntax error" is here to catch this case. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#ifdef __STDC__ +# include +#else +# include +#endif + Syntax error +_ACEOF +if ac_fn_cxx_try_cpp "$LINENO"; then : + +else + # Broken: fails on valid input. +continue +fi +rm -f conftest.err conftest.i conftest.$ac_ext + + # OK, works on sane cases. Now check whether nonexistent headers + # can be detected and how. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +_ACEOF +if ac_fn_cxx_try_cpp "$LINENO"; then : + # Broken: success on invalid input. +continue +else + # Passes both tests. +ac_preproc_ok=: +break +fi +rm -f conftest.err conftest.i conftest.$ac_ext + +done +# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. +rm -f conftest.i conftest.err conftest.$ac_ext +if $ac_preproc_ok; then : + +else + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "C++ preprocessor \"$CXXCPP\" fails sanity check +See \`config.log' for more details" "$LINENO" 5; } +fi + +ac_ext=cpp +ac_cpp='$CXXCPP $CPPFLAGS' +ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_cxx_compiler_gnu + +else + _lt_caught_CXX_error=yes +fi + +ac_ext=cpp +ac_cpp='$CXXCPP $CPPFLAGS' +ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_cxx_compiler_gnu + +archive_cmds_need_lc_CXX=no +allow_undefined_flag_CXX= +always_export_symbols_CXX=no +archive_expsym_cmds_CXX= +compiler_needs_object_CXX=no +export_dynamic_flag_spec_CXX= +hardcode_direct_CXX=no +hardcode_direct_absolute_CXX=no +hardcode_libdir_flag_spec_CXX= +hardcode_libdir_separator_CXX= +hardcode_minus_L_CXX=no +hardcode_shlibpath_var_CXX=unsupported +hardcode_automatic_CXX=no +inherit_rpath_CXX=no +module_cmds_CXX= +module_expsym_cmds_CXX= +link_all_deplibs_CXX=unknown +old_archive_cmds_CXX=$old_archive_cmds +reload_flag_CXX=$reload_flag +reload_cmds_CXX=$reload_cmds +no_undefined_flag_CXX= +whole_archive_flag_spec_CXX= +enable_shared_with_static_runtimes_CXX=no + +# Source file extension for C++ test sources. +ac_ext=cpp + +# Object file extension for compiled C++ test sources. +objext=o +objext_CXX=$objext + +# No sense in running all these tests if we already determined that +# the CXX compiler isn't working. Some variables (like enable_shared) +# are currently assumed to apply to all compilers on this platform, +# and will be corrupted by setting them based on a non-working compiler. +if test yes != "$_lt_caught_CXX_error"; then + # Code to be used in simple compile tests + lt_simple_compile_test_code="int some_variable = 0;" + + # Code to be used in simple link tests + lt_simple_link_test_code='int main(int, char *[]) { return(0); }' + + # ltmain only uses $CC for tagged configurations so make sure $CC is set. + + + + + + +# If no C compiler was specified, use CC. +LTCC=${LTCC-"$CC"} + +# If no C compiler flags were specified, use CFLAGS. +LTCFLAGS=${LTCFLAGS-"$CFLAGS"} + +# Allow CC to be a program name with arguments. +compiler=$CC + + + # save warnings/boilerplate of simple test code + ac_outfile=conftest.$ac_objext +echo "$lt_simple_compile_test_code" >conftest.$ac_ext +eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err +_lt_compiler_boilerplate=`cat conftest.err` +$RM conftest* + + ac_outfile=conftest.$ac_objext +echo "$lt_simple_link_test_code" >conftest.$ac_ext +eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err +_lt_linker_boilerplate=`cat conftest.err` +$RM -r conftest* + + + # Allow CC to be a program name with arguments. + lt_save_CC=$CC + lt_save_CFLAGS=$CFLAGS + lt_save_LD=$LD + lt_save_GCC=$GCC + GCC=$GXX + lt_save_with_gnu_ld=$with_gnu_ld + lt_save_path_LD=$lt_cv_path_LD + if test -n "${lt_cv_prog_gnu_ldcxx+set}"; then + lt_cv_prog_gnu_ld=$lt_cv_prog_gnu_ldcxx + else + $as_unset lt_cv_prog_gnu_ld + fi + if test -n "${lt_cv_path_LDCXX+set}"; then + lt_cv_path_LD=$lt_cv_path_LDCXX + else + $as_unset lt_cv_path_LD + fi + test -z "${LDCXX+set}" || LD=$LDCXX + CC=${CXX-"c++"} + CFLAGS=$CXXFLAGS + compiler=$CC + compiler_CXX=$CC + func_cc_basename $compiler +cc_basename=$func_cc_basename_result + + + if test -n "$compiler"; then + # We don't want -fno-exception when compiling C++ code, so set the + # no_builtin_flag separately + if test yes = "$GXX"; then + lt_prog_compiler_no_builtin_flag_CXX=' -fno-builtin' + else + lt_prog_compiler_no_builtin_flag_CXX= + fi + + if test yes = "$GXX"; then + # Set up default GNU C++ configuration + + + +# Check whether --with-gnu-ld was given. +if test "${with_gnu_ld+set}" = set; then : + withval=$with_gnu_ld; test no = "$withval" || with_gnu_ld=yes +else + with_gnu_ld=no +fi + +ac_prog=ld +if test yes = "$GCC"; then + # Check if gcc -print-prog-name=ld gives a path. + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld used by $CC" >&5 +$as_echo_n "checking for ld used by $CC... " >&6; } + case $host in + *-*-mingw*) + # gcc leaves a trailing carriage return, which upsets mingw + ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; + *) + ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; + esac + case $ac_prog in + # Accept absolute paths. + [\\/]* | ?:[\\/]*) + re_direlt='/[^/][^/]*/\.\./' + # Canonicalize the pathname of ld + ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'` + while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do + ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"` + done + test -z "$LD" && LD=$ac_prog + ;; + "") + # If it fails, then pretend we aren't using GCC. + ac_prog=ld + ;; + *) + # If it is relative, then search for the first ld in PATH. + with_gnu_ld=unknown + ;; + esac +elif test yes = "$with_gnu_ld"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5 +$as_echo_n "checking for GNU ld... " >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5 +$as_echo_n "checking for non-GNU ld... " >&6; } +fi +if ${lt_cv_path_LD+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -z "$LD"; then + lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR + for ac_dir in $PATH; do + IFS=$lt_save_ifs + test -z "$ac_dir" && ac_dir=. + if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then + lt_cv_path_LD=$ac_dir/$ac_prog + # Check to see if the program is GNU ld. I'd rather use --version, + # but apparently some variants of GNU ld only accept -v. + # Break only if it was the GNU/non-GNU ld that we prefer. + case `"$lt_cv_path_LD" -v 2>&1 &5 +$as_echo "$LD" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi +test -z "$LD" && as_fn_error $? "no acceptable ld found in \$PATH" "$LINENO" 5 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5 +$as_echo_n "checking if the linker ($LD) is GNU ld... " >&6; } +if ${lt_cv_prog_gnu_ld+:} false; then : + $as_echo_n "(cached) " >&6 +else + # I'd rather use --version here, but apparently some GNU lds only accept -v. +case `$LD -v 2>&1 &5 +$as_echo "$lt_cv_prog_gnu_ld" >&6; } +with_gnu_ld=$lt_cv_prog_gnu_ld + + + + + + + + # Check if GNU C++ uses GNU ld as the underlying linker, since the + # archiving commands below assume that GNU ld is being used. + if test yes = "$with_gnu_ld"; then + archive_cmds_CXX='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib' + archive_expsym_cmds_CXX='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' + + hardcode_libdir_flag_spec_CXX='$wl-rpath $wl$libdir' + export_dynamic_flag_spec_CXX='$wl--export-dynamic' + + # If archive_cmds runs LD, not CC, wlarc should be empty + # XXX I think wlarc can be eliminated in ltcf-cxx, but I need to + # investigate it a little bit more. (MM) + wlarc='$wl' + + # ancient GNU ld didn't support --whole-archive et. al. + if eval "`$CC -print-prog-name=ld` --help 2>&1" | + $GREP 'no-whole-archive' > /dev/null; then + whole_archive_flag_spec_CXX=$wlarc'--whole-archive$convenience '$wlarc'--no-whole-archive' + else + whole_archive_flag_spec_CXX= + fi + else + with_gnu_ld=no + wlarc= + + # A generic and very simple default shared library creation + # command for GNU C++ for the case where it uses the native + # linker, instead of GNU ld. If possible, this setting should + # overridden to take advantage of the native linker features on + # the platform it is being used on. + archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' + fi + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' + + else + GXX=no + with_gnu_ld=no + wlarc= + fi + + # PORTME: fill in a description of your system's C++ link characteristics + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5 +$as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; } + ld_shlibs_CXX=yes + case $host_os in + aix3*) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + aix[4-9]*) + if test ia64 = "$host_cpu"; then + # On IA64, the linker does run time linking by default, so we don't + # have to do anything special. + aix_use_runtimelinking=no + exp_sym_flag='-Bexport' + no_entry_flag= + else + aix_use_runtimelinking=no + + # Test if we are trying to use run time linking or normal + # AIX style linking. If -brtl is somewhere in LDFLAGS, we + # have runtime linking enabled, and use it for executables. + # For shared libraries, we enable/disable runtime linking + # depending on the kind of the shared library created - + # when "with_aix_soname,aix_use_runtimelinking" is: + # "aix,no" lib.a(lib.so.V) shared, rtl:no, for executables + # "aix,yes" lib.so shared, rtl:yes, for executables + # lib.a static archive + # "both,no" lib.so.V(shr.o) shared, rtl:yes + # lib.a(lib.so.V) shared, rtl:no, for executables + # "both,yes" lib.so.V(shr.o) shared, rtl:yes, for executables + # lib.a(lib.so.V) shared, rtl:no + # "svr4,*" lib.so.V(shr.o) shared, rtl:yes, for executables + # lib.a static archive + case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*) + for ld_flag in $LDFLAGS; do + case $ld_flag in + *-brtl*) + aix_use_runtimelinking=yes + break + ;; + esac + done + if test svr4,no = "$with_aix_soname,$aix_use_runtimelinking"; then + # With aix-soname=svr4, we create the lib.so.V shared archives only, + # so we don't have lib.a shared libs to link our executables. + # We have to force runtime linking in this case. + aix_use_runtimelinking=yes + LDFLAGS="$LDFLAGS -Wl,-brtl" + fi + ;; + esac + + exp_sym_flag='-bexport' + no_entry_flag='-bnoentry' + fi + + # When large executables or shared objects are built, AIX ld can + # have problems creating the table of contents. If linking a library + # or program results in "error TOC overflow" add -mminimal-toc to + # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not + # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. + + archive_cmds_CXX='' + hardcode_direct_CXX=yes + hardcode_direct_absolute_CXX=yes + hardcode_libdir_separator_CXX=':' + link_all_deplibs_CXX=yes + file_list_spec_CXX='$wl-f,' + case $with_aix_soname,$aix_use_runtimelinking in + aix,*) ;; # no import file + svr4,* | *,yes) # use import file + # The Import File defines what to hardcode. + hardcode_direct_CXX=no + hardcode_direct_absolute_CXX=no + ;; + esac + + if test yes = "$GXX"; then + case $host_os in aix4.[012]|aix4.[012].*) + # We only want to do this on AIX 4.2 and lower, the check + # below for broken collect2 doesn't work under 4.3+ + collect2name=`$CC -print-prog-name=collect2` + if test -f "$collect2name" && + strings "$collect2name" | $GREP resolve_lib_name >/dev/null + then + # We have reworked collect2 + : + else + # We have old collect2 + hardcode_direct_CXX=unsupported + # It fails to find uninstalled libraries when the uninstalled + # path is not listed in the libpath. Setting hardcode_minus_L + # to unsupported forces relinking + hardcode_minus_L_CXX=yes + hardcode_libdir_flag_spec_CXX='-L$libdir' + hardcode_libdir_separator_CXX= + fi + esac + shared_flag='-shared' + if test yes = "$aix_use_runtimelinking"; then + shared_flag=$shared_flag' $wl-G' + fi + # Need to ensure runtime linking is disabled for the traditional + # shared library, or the linker may eventually find shared libraries + # /with/ Import File - we do not want to mix them. + shared_flag_aix='-shared' + shared_flag_svr4='-shared $wl-G' + else + # not using gcc + if test ia64 = "$host_cpu"; then + # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release + # chokes on -Wl,-G. The following line is correct: + shared_flag='-G' + else + if test yes = "$aix_use_runtimelinking"; then + shared_flag='$wl-G' + else + shared_flag='$wl-bM:SRE' + fi + shared_flag_aix='$wl-bM:SRE' + shared_flag_svr4='$wl-G' + fi + fi + + export_dynamic_flag_spec_CXX='$wl-bexpall' + # It seems that -bexpall does not export symbols beginning with + # underscore (_), so it is better to generate a list of symbols to + # export. + always_export_symbols_CXX=yes + if test aix,yes = "$with_aix_soname,$aix_use_runtimelinking"; then + # Warning - without using the other runtime loading flags (-brtl), + # -berok will link without error, but may produce a broken library. + # The "-G" linker flag allows undefined symbols. + no_undefined_flag_CXX='-bernotok' + # Determine the default libpath from the value encoded in an empty + # executable. + if test set = "${lt_cv_aix_libpath+set}"; then + aix_libpath=$lt_cv_aix_libpath +else + if ${lt_cv_aix_libpath__CXX+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_cxx_try_link "$LINENO"; then : + + lt_aix_libpath_sed=' + /Import File Strings/,/^$/ { + /^0/ { + s/^0 *\([^ ]*\) *$/\1/ + p + } + }' + lt_cv_aix_libpath__CXX=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` + # Check for a 64-bit object if we didn't find anything. + if test -z "$lt_cv_aix_libpath__CXX"; then + lt_cv_aix_libpath__CXX=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` + fi +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + if test -z "$lt_cv_aix_libpath__CXX"; then + lt_cv_aix_libpath__CXX=/usr/lib:/lib + fi + +fi + + aix_libpath=$lt_cv_aix_libpath__CXX +fi + + hardcode_libdir_flag_spec_CXX='$wl-blibpath:$libdir:'"$aix_libpath" + + archive_expsym_cmds_CXX='$CC -o $output_objdir/$soname $libobjs $deplibs $wl'$no_entry_flag' $compiler_flags `if test -n "$allow_undefined_flag"; then func_echo_all "$wl$allow_undefined_flag"; else :; fi` $wl'$exp_sym_flag:\$export_symbols' '$shared_flag + else + if test ia64 = "$host_cpu"; then + hardcode_libdir_flag_spec_CXX='$wl-R $libdir:/usr/lib:/lib' + allow_undefined_flag_CXX="-z nodefs" + archive_expsym_cmds_CXX="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\$wl$no_entry_flag"' $compiler_flags $wl$allow_undefined_flag '"\$wl$exp_sym_flag:\$export_symbols" + else + # Determine the default libpath from the value encoded in an + # empty executable. + if test set = "${lt_cv_aix_libpath+set}"; then + aix_libpath=$lt_cv_aix_libpath +else + if ${lt_cv_aix_libpath__CXX+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_cxx_try_link "$LINENO"; then : + + lt_aix_libpath_sed=' + /Import File Strings/,/^$/ { + /^0/ { + s/^0 *\([^ ]*\) *$/\1/ + p + } + }' + lt_cv_aix_libpath__CXX=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` + # Check for a 64-bit object if we didn't find anything. + if test -z "$lt_cv_aix_libpath__CXX"; then + lt_cv_aix_libpath__CXX=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` + fi +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + if test -z "$lt_cv_aix_libpath__CXX"; then + lt_cv_aix_libpath__CXX=/usr/lib:/lib + fi + +fi + + aix_libpath=$lt_cv_aix_libpath__CXX +fi + + hardcode_libdir_flag_spec_CXX='$wl-blibpath:$libdir:'"$aix_libpath" + # Warning - without using the other run time loading flags, + # -berok will link without error, but may produce a broken library. + no_undefined_flag_CXX=' $wl-bernotok' + allow_undefined_flag_CXX=' $wl-berok' + if test yes = "$with_gnu_ld"; then + # We only use this code for GNU lds that support --whole-archive. + whole_archive_flag_spec_CXX='$wl--whole-archive$convenience $wl--no-whole-archive' + else + # Exported symbols can be pulled into shared objects from archives + whole_archive_flag_spec_CXX='$convenience' + fi + archive_cmds_need_lc_CXX=yes + archive_expsym_cmds_CXX='$RM -r $output_objdir/$realname.d~$MKDIR $output_objdir/$realname.d' + # -brtl affects multiple linker settings, -berok does not and is overridden later + compiler_flags_filtered='`func_echo_all "$compiler_flags " | $SED -e "s%-brtl\\([, ]\\)%-berok\\1%g"`' + if test svr4 != "$with_aix_soname"; then + # This is similar to how AIX traditionally builds its shared + # libraries. Need -bnortl late, we may have -brtl in LDFLAGS. + archive_expsym_cmds_CXX="$archive_expsym_cmds_CXX"'~$CC '$shared_flag_aix' -o $output_objdir/$realname.d/$soname $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$realname.d/$soname' + fi + if test aix != "$with_aix_soname"; then + archive_expsym_cmds_CXX="$archive_expsym_cmds_CXX"'~$CC '$shared_flag_svr4' -o $output_objdir/$realname.d/$shared_archive_member_spec.o $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$STRIP -e $output_objdir/$realname.d/$shared_archive_member_spec.o~( func_echo_all "#! $soname($shared_archive_member_spec.o)"; if test shr_64 = "$shared_archive_member_spec"; then func_echo_all "# 64"; else func_echo_all "# 32"; fi; cat $export_symbols ) > $output_objdir/$realname.d/$shared_archive_member_spec.imp~$AR $AR_FLAGS $output_objdir/$soname $output_objdir/$realname.d/$shared_archive_member_spec.o $output_objdir/$realname.d/$shared_archive_member_spec.imp' + else + # used by -dlpreopen to get the symbols + archive_expsym_cmds_CXX="$archive_expsym_cmds_CXX"'~$MV $output_objdir/$realname.d/$soname $output_objdir' + fi + archive_expsym_cmds_CXX="$archive_expsym_cmds_CXX"'~$RM -r $output_objdir/$realname.d' + fi + fi + ;; + + beos*) + if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then + allow_undefined_flag_CXX=unsupported + # Joseph Beckenbach says some releases of gcc + # support --undefined. This deserves some investigation. FIXME + archive_cmds_CXX='$CC -nostart $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + else + ld_shlibs_CXX=no + fi + ;; + + chorus*) + case $cc_basename in + *) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + esac + ;; + + cygwin* | mingw* | pw32* | cegcc*) + case $GXX,$cc_basename in + ,cl* | no,cl*) + # Native MSVC + # hardcode_libdir_flag_spec is actually meaningless, as there is + # no search path for DLLs. + hardcode_libdir_flag_spec_CXX=' ' + allow_undefined_flag_CXX=unsupported + always_export_symbols_CXX=yes + file_list_spec_CXX='@' + # Tell ltmain to make .lib files, not .a files. + libext=lib + # Tell ltmain to make .dll files, not .so files. + shrext_cmds=.dll + # FIXME: Setting linknames here is a bad hack. + archive_cmds_CXX='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~linknames=' + archive_expsym_cmds_CXX='if test DEF = "`$SED -n -e '\''s/^[ ]*//'\'' -e '\''/^\(;.*\)*$/d'\'' -e '\''s/^\(EXPORTS\|LIBRARY\)\([ ].*\)*$/DEF/p'\'' -e q $export_symbols`" ; then + cp "$export_symbols" "$output_objdir/$soname.def"; + echo "$tool_output_objdir$soname.def" > "$output_objdir/$soname.exp"; + else + $SED -e '\''s/^/-link -EXPORT:/'\'' < $export_symbols > $output_objdir/$soname.exp; + fi~ + $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~ + linknames=' + # The linker will not automatically build a static lib if we build a DLL. + # _LT_TAGVAR(old_archive_from_new_cmds, CXX)='true' + enable_shared_with_static_runtimes_CXX=yes + # Don't use ranlib + old_postinstall_cmds_CXX='chmod 644 $oldlib' + postlink_cmds_CXX='lt_outputfile="@OUTPUT@"~ + lt_tool_outputfile="@TOOL_OUTPUT@"~ + case $lt_outputfile in + *.exe|*.EXE) ;; + *) + lt_outputfile=$lt_outputfile.exe + lt_tool_outputfile=$lt_tool_outputfile.exe + ;; + esac~ + func_to_tool_file "$lt_outputfile"~ + if test : != "$MANIFEST_TOOL" && test -f "$lt_outputfile.manifest"; then + $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1; + $RM "$lt_outputfile.manifest"; + fi' + ;; + *) + # g++ + # _LT_TAGVAR(hardcode_libdir_flag_spec, CXX) is actually meaningless, + # as there is no search path for DLLs. + hardcode_libdir_flag_spec_CXX='-L$libdir' + export_dynamic_flag_spec_CXX='$wl--export-all-symbols' + allow_undefined_flag_CXX=unsupported + always_export_symbols_CXX=no + enable_shared_with_static_runtimes_CXX=yes + + if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then + archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + # If the export-symbols file already is a .def file, use it as + # is; otherwise, prepend EXPORTS... + archive_expsym_cmds_CXX='if test DEF = "`$SED -n -e '\''s/^[ ]*//'\'' -e '\''/^\(;.*\)*$/d'\'' -e '\''s/^\(EXPORTS\|LIBRARY\)\([ ].*\)*$/DEF/p'\'' -e q $export_symbols`" ; then + cp $export_symbols $output_objdir/$soname.def; + else + echo EXPORTS > $output_objdir/$soname.def; + cat $export_symbols >> $output_objdir/$soname.def; + fi~ + $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + else + ld_shlibs_CXX=no + fi + ;; + esac + ;; + darwin* | rhapsody*) + + + archive_cmds_need_lc_CXX=no + hardcode_direct_CXX=no + hardcode_automatic_CXX=yes + hardcode_shlibpath_var_CXX=unsupported + if test yes = "$lt_cv_ld_force_load"; then + whole_archive_flag_spec_CXX='`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience $wl-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`' + + else + whole_archive_flag_spec_CXX='' + fi + link_all_deplibs_CXX=yes + allow_undefined_flag_CXX=$_lt_dar_allow_undefined + case $cc_basename in + ifort*|nagfor*) _lt_dar_can_shared=yes ;; + *) _lt_dar_can_shared=$GCC ;; + esac + if test yes = "$_lt_dar_can_shared"; then + output_verbose_link_cmd=func_echo_all + archive_cmds_CXX="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod$_lt_dsymutil" + module_cmds_CXX="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags$_lt_dsymutil" + archive_expsym_cmds_CXX="sed 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod$_lt_dar_export_syms$_lt_dsymutil" + module_expsym_cmds_CXX="sed -e 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags$_lt_dar_export_syms$_lt_dsymutil" + if test yes != "$lt_cv_apple_cc_single_mod"; then + archive_cmds_CXX="\$CC -r -keep_private_externs -nostdlib -o \$lib-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$lib-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring$_lt_dsymutil" + archive_expsym_cmds_CXX="sed 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC -r -keep_private_externs -nostdlib -o \$lib-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$lib-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring$_lt_dar_export_syms$_lt_dsymutil" + fi + + else + ld_shlibs_CXX=no + fi + + ;; + + os2*) + hardcode_libdir_flag_spec_CXX='-L$libdir' + hardcode_minus_L_CXX=yes + allow_undefined_flag_CXX=unsupported + shrext_cmds=.dll + archive_cmds_CXX='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ + $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ + $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ + $ECHO EXPORTS >> $output_objdir/$libname.def~ + emxexp $libobjs | $SED /"_DLL_InitTerm"/d >> $output_objdir/$libname.def~ + $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ + emximp -o $lib $output_objdir/$libname.def' + archive_expsym_cmds_CXX='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ + $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ + $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ + $ECHO EXPORTS >> $output_objdir/$libname.def~ + prefix_cmds="$SED"~ + if test EXPORTS = "`$SED 1q $export_symbols`"; then + prefix_cmds="$prefix_cmds -e 1d"; + fi~ + prefix_cmds="$prefix_cmds -e \"s/^\(.*\)$/_\1/g\""~ + cat $export_symbols | $prefix_cmds >> $output_objdir/$libname.def~ + $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ + emximp -o $lib $output_objdir/$libname.def' + old_archive_From_new_cmds_CXX='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def' + enable_shared_with_static_runtimes_CXX=yes + ;; + + dgux*) + case $cc_basename in + ec++*) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + ghcx*) + # Green Hills C++ Compiler + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + *) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + esac + ;; + + freebsd2.*) + # C++ shared libraries reported to be fairly broken before + # switch to ELF + ld_shlibs_CXX=no + ;; + + freebsd-elf*) + archive_cmds_need_lc_CXX=no + ;; + + freebsd* | dragonfly*) + # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF + # conventions + ld_shlibs_CXX=yes + ;; + + haiku*) + archive_cmds_CXX='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + link_all_deplibs_CXX=yes + ;; + + hpux9*) + hardcode_libdir_flag_spec_CXX='$wl+b $wl$libdir' + hardcode_libdir_separator_CXX=: + export_dynamic_flag_spec_CXX='$wl-E' + hardcode_direct_CXX=yes + hardcode_minus_L_CXX=yes # Not in the search PATH, + # but as the default + # location of the library. + + case $cc_basename in + CC*) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + aCC*) + archive_cmds_CXX='$RM $output_objdir/$soname~$CC -b $wl+b $wl$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib' + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $EGREP "\-L"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' + ;; + *) + if test yes = "$GXX"; then + archive_cmds_CXX='$RM $output_objdir/$soname~$CC -shared -nostdlib $pic_flag $wl+b $wl$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib' + else + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + fi + ;; + esac + ;; + + hpux10*|hpux11*) + if test no = "$with_gnu_ld"; then + hardcode_libdir_flag_spec_CXX='$wl+b $wl$libdir' + hardcode_libdir_separator_CXX=: + + case $host_cpu in + hppa*64*|ia64*) + ;; + *) + export_dynamic_flag_spec_CXX='$wl-E' + ;; + esac + fi + case $host_cpu in + hppa*64*|ia64*) + hardcode_direct_CXX=no + hardcode_shlibpath_var_CXX=no + ;; + *) + hardcode_direct_CXX=yes + hardcode_direct_absolute_CXX=yes + hardcode_minus_L_CXX=yes # Not in the search PATH, + # but as the default + # location of the library. + ;; + esac + + case $cc_basename in + CC*) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + aCC*) + case $host_cpu in + hppa*64*) + archive_cmds_CXX='$CC -b $wl+h $wl$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + ia64*) + archive_cmds_CXX='$CC -b $wl+h $wl$soname $wl+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + *) + archive_cmds_CXX='$CC -b $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + esac + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $GREP "\-L"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' + ;; + *) + if test yes = "$GXX"; then + if test no = "$with_gnu_ld"; then + case $host_cpu in + hppa*64*) + archive_cmds_CXX='$CC -shared -nostdlib -fPIC $wl+h $wl$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + ia64*) + archive_cmds_CXX='$CC -shared -nostdlib $pic_flag $wl+h $wl$soname $wl+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + *) + archive_cmds_CXX='$CC -shared -nostdlib $pic_flag $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + esac + fi + else + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + fi + ;; + esac + ;; + + interix[3-9]*) + hardcode_direct_CXX=no + hardcode_shlibpath_var_CXX=no + hardcode_libdir_flag_spec_CXX='$wl-rpath,$libdir' + export_dynamic_flag_spec_CXX='$wl-E' + # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. + # Instead, shared libraries are loaded at an image base (0x10000000 by + # default) and relocated if they conflict, which is a slow very memory + # consuming and fragmenting process. To avoid this, we pick a random, + # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link + # time. Moving up from 0x10000000 also allows more sbrk(2) space. + archive_cmds_CXX='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + archive_expsym_cmds_CXX='sed "s|^|_|" $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--retain-symbols-file,$output_objdir/$soname.expsym $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + ;; + irix5* | irix6*) + case $cc_basename in + CC*) + # SGI C++ + archive_cmds_CXX='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' + + # Archives containing C++ object files must be created using + # "CC -ar", where "CC" is the IRIX C++ compiler. This is + # necessary to make sure instantiated templates are included + # in the archive. + old_archive_cmds_CXX='$CC -ar -WR,-u -o $oldlib $oldobjs' + ;; + *) + if test yes = "$GXX"; then + if test no = "$with_gnu_ld"; then + archive_cmds_CXX='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' + else + archive_cmds_CXX='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` -o $lib' + fi + fi + link_all_deplibs_CXX=yes + ;; + esac + hardcode_libdir_flag_spec_CXX='$wl-rpath $wl$libdir' + hardcode_libdir_separator_CXX=: + inherit_rpath_CXX=yes + ;; + + linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) + case $cc_basename in + KCC*) + # Kuck and Associates, Inc. (KAI) C++ Compiler + + # KCC will only create a shared library if the output file + # ends with ".so" (or ".sl" for HP-UX), so rename the library + # to its proper name (with version) after linking. + archive_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\$tempext\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' + archive_expsym_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\$tempext\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib $wl-retain-symbols-file,$export_symbols; mv \$templib $lib' + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | $GREP "ld"`; rm -f libconftest$shared_ext; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' + + hardcode_libdir_flag_spec_CXX='$wl-rpath,$libdir' + export_dynamic_flag_spec_CXX='$wl--export-dynamic' + + # Archives containing C++ object files must be created using + # "CC -Bstatic", where "CC" is the KAI C++ compiler. + old_archive_cmds_CXX='$CC -Bstatic -o $oldlib $oldobjs' + ;; + icpc* | ecpc* ) + # Intel C++ + with_gnu_ld=yes + # version 8.0 and above of icpc choke on multiply defined symbols + # if we add $predep_objects and $postdep_objects, however 7.1 and + # earlier do not add the objects themselves. + case `$CC -V 2>&1` in + *"Version 7."*) + archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib' + archive_expsym_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' + ;; + *) # Version 8.0 or newer + tmp_idyn= + case $host_cpu in + ia64*) tmp_idyn=' -i_dynamic';; + esac + archive_cmds_CXX='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + archive_expsym_cmds_CXX='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' + ;; + esac + archive_cmds_need_lc_CXX=no + hardcode_libdir_flag_spec_CXX='$wl-rpath,$libdir' + export_dynamic_flag_spec_CXX='$wl--export-dynamic' + whole_archive_flag_spec_CXX='$wl--whole-archive$convenience $wl--no-whole-archive' + ;; + pgCC* | pgcpp*) + # Portland Group C++ compiler + case `$CC -V` in + *pgCC\ [1-5].* | *pgcpp\ [1-5].*) + prelink_cmds_CXX='tpldir=Template.dir~ + rm -rf $tpldir~ + $CC --prelink_objects --instantiation_dir $tpldir $objs $libobjs $compile_deplibs~ + compile_command="$compile_command `find $tpldir -name \*.o | sort | $NL2SP`"' + old_archive_cmds_CXX='tpldir=Template.dir~ + rm -rf $tpldir~ + $CC --prelink_objects --instantiation_dir $tpldir $oldobjs$old_deplibs~ + $AR $AR_FLAGS $oldlib$oldobjs$old_deplibs `find $tpldir -name \*.o | sort | $NL2SP`~ + $RANLIB $oldlib' + archive_cmds_CXX='tpldir=Template.dir~ + rm -rf $tpldir~ + $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~ + $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib' + archive_expsym_cmds_CXX='tpldir=Template.dir~ + rm -rf $tpldir~ + $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~ + $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' + ;; + *) # Version 6 and above use weak symbols + archive_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib' + archive_expsym_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' + ;; + esac + + hardcode_libdir_flag_spec_CXX='$wl--rpath $wl$libdir' + export_dynamic_flag_spec_CXX='$wl--export-dynamic' + whole_archive_flag_spec_CXX='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' + ;; + cxx*) + # Compaq C++ + archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib' + archive_expsym_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib $wl-retain-symbols-file $wl$export_symbols' + + runpath_var=LD_RUN_PATH + hardcode_libdir_flag_spec_CXX='-rpath $libdir' + hardcode_libdir_separator_CXX=: + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "X$list" | $Xsed' + ;; + xl* | mpixl* | bgxl*) + # IBM XL 8.0 on PPC, with GNU ld + hardcode_libdir_flag_spec_CXX='$wl-rpath $wl$libdir' + export_dynamic_flag_spec_CXX='$wl--export-dynamic' + archive_cmds_CXX='$CC -qmkshrobj $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + if test yes = "$supports_anon_versioning"; then + archive_expsym_cmds_CXX='echo "{ global:" > $output_objdir/$libname.ver~ + cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ + echo "local: *; };" >> $output_objdir/$libname.ver~ + $CC -qmkshrobj $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-version-script $wl$output_objdir/$libname.ver -o $lib' + fi + ;; + *) + case `$CC -V 2>&1 | sed 5q` in + *Sun\ C*) + # Sun C++ 5.9 + no_undefined_flag_CXX=' -zdefs' + archive_cmds_CXX='$CC -G$allow_undefined_flag -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + archive_expsym_cmds_CXX='$CC -G$allow_undefined_flag -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-retain-symbols-file $wl$export_symbols' + hardcode_libdir_flag_spec_CXX='-R$libdir' + whole_archive_flag_spec_CXX='$wl--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' + compiler_needs_object_CXX=yes + + # Not sure whether something based on + # $CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 + # would be better. + output_verbose_link_cmd='func_echo_all' + + # Archives containing C++ object files must be created using + # "CC -xar", where "CC" is the Sun C++ compiler. This is + # necessary to make sure instantiated templates are included + # in the archive. + old_archive_cmds_CXX='$CC -xar -o $oldlib $oldobjs' + ;; + esac + ;; + esac + ;; + + lynxos*) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + + m88k*) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + + mvs*) + case $cc_basename in + cxx*) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + *) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + esac + ;; + + netbsd*) + if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then + archive_cmds_CXX='$LD -Bshareable -o $lib $predep_objects $libobjs $deplibs $postdep_objects $linker_flags' + wlarc= + hardcode_libdir_flag_spec_CXX='-R$libdir' + hardcode_direct_CXX=yes + hardcode_shlibpath_var_CXX=no + fi + # Workaround some broken pre-1.5 toolchains + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP conftest.$objext | $SED -e "s:-lgcc -lc -lgcc::"' + ;; + + *nto* | *qnx*) + ld_shlibs_CXX=yes + ;; + + openbsd* | bitrig*) + if test -f /usr/libexec/ld.so; then + hardcode_direct_CXX=yes + hardcode_shlibpath_var_CXX=no + hardcode_direct_absolute_CXX=yes + archive_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' + hardcode_libdir_flag_spec_CXX='$wl-rpath,$libdir' + if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`"; then + archive_expsym_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-retain-symbols-file,$export_symbols -o $lib' + export_dynamic_flag_spec_CXX='$wl-E' + whole_archive_flag_spec_CXX=$wlarc'--whole-archive$convenience '$wlarc'--no-whole-archive' + fi + output_verbose_link_cmd=func_echo_all + else + ld_shlibs_CXX=no + fi + ;; + + osf3* | osf4* | osf5*) + case $cc_basename in + KCC*) + # Kuck and Associates, Inc. (KAI) C++ Compiler + + # KCC will only create a shared library if the output file + # ends with ".so" (or ".sl" for HP-UX), so rename the library + # to its proper name (with version) after linking. + archive_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo "$lib" | $SED -e "s/\$tempext\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' + + hardcode_libdir_flag_spec_CXX='$wl-rpath,$libdir' + hardcode_libdir_separator_CXX=: + + # Archives containing C++ object files must be created using + # the KAI C++ compiler. + case $host in + osf3*) old_archive_cmds_CXX='$CC -Bstatic -o $oldlib $oldobjs' ;; + *) old_archive_cmds_CXX='$CC -o $oldlib $oldobjs' ;; + esac + ;; + RCC*) + # Rational C++ 2.4.1 + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + cxx*) + case $host in + osf3*) + allow_undefined_flag_CXX=' $wl-expect_unresolved $wl\*' + archive_cmds_CXX='$CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $soname `test -n "$verstring" && func_echo_all "$wl-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' + hardcode_libdir_flag_spec_CXX='$wl-rpath $wl$libdir' + ;; + *) + allow_undefined_flag_CXX=' -expect_unresolved \*' + archive_cmds_CXX='$CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' + archive_expsym_cmds_CXX='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done~ + echo "-hidden">> $lib.exp~ + $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname $wl-input $wl$lib.exp `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib~ + $RM $lib.exp' + hardcode_libdir_flag_spec_CXX='-rpath $libdir' + ;; + esac + + hardcode_libdir_separator_CXX=: + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld" | $GREP -v "ld:"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' + ;; + *) + if test yes,no = "$GXX,$with_gnu_ld"; then + allow_undefined_flag_CXX=' $wl-expect_unresolved $wl\*' + case $host in + osf3*) + archive_cmds_CXX='$CC -shared -nostdlib $allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' + ;; + *) + archive_cmds_CXX='$CC -shared $pic_flag -nostdlib $allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-msym $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' + ;; + esac + + hardcode_libdir_flag_spec_CXX='$wl-rpath $wl$libdir' + hardcode_libdir_separator_CXX=: + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' + + else + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + fi + ;; + esac + ;; + + psos*) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + + sunos4*) + case $cc_basename in + CC*) + # Sun C++ 4.x + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + lcc*) + # Lucid + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + *) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + esac + ;; + + solaris*) + case $cc_basename in + CC* | sunCC*) + # Sun C++ 4.2, 5.x and Centerline C++ + archive_cmds_need_lc_CXX=yes + no_undefined_flag_CXX=' -zdefs' + archive_cmds_CXX='$CC -G$allow_undefined_flag -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + archive_expsym_cmds_CXX='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ + $CC -G$allow_undefined_flag $wl-M $wl$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' + + hardcode_libdir_flag_spec_CXX='-R$libdir' + hardcode_shlibpath_var_CXX=no + case $host_os in + solaris2.[0-5] | solaris2.[0-5].*) ;; + *) + # The compiler driver will combine and reorder linker options, + # but understands '-z linker_flag'. + # Supported since Solaris 2.6 (maybe 2.5.1?) + whole_archive_flag_spec_CXX='-z allextract$convenience -z defaultextract' + ;; + esac + link_all_deplibs_CXX=yes + + output_verbose_link_cmd='func_echo_all' + + # Archives containing C++ object files must be created using + # "CC -xar", where "CC" is the Sun C++ compiler. This is + # necessary to make sure instantiated templates are included + # in the archive. + old_archive_cmds_CXX='$CC -xar -o $oldlib $oldobjs' + ;; + gcx*) + # Green Hills C++ Compiler + archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-h $wl$soname -o $lib' + + # The C++ compiler must be used to create the archive. + old_archive_cmds_CXX='$CC $LDFLAGS -archive -o $oldlib $oldobjs' + ;; + *) + # GNU C++ compiler with Solaris linker + if test yes,no = "$GXX,$with_gnu_ld"; then + no_undefined_flag_CXX=' $wl-z ${wl}defs' + if $CC --version | $GREP -v '^2\.7' > /dev/null; then + archive_cmds_CXX='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-h $wl$soname -o $lib' + archive_expsym_cmds_CXX='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ + $CC -shared $pic_flag -nostdlib $wl-M $wl$lib.exp $wl-h $wl$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' + else + # g++ 2.7 appears to require '-G' NOT '-shared' on this + # platform. + archive_cmds_CXX='$CC -G -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-h $wl$soname -o $lib' + archive_expsym_cmds_CXX='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ + $CC -G -nostdlib $wl-M $wl$lib.exp $wl-h $wl$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + output_verbose_link_cmd='$CC -G $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' + fi + + hardcode_libdir_flag_spec_CXX='$wl-R $wl$libdir' + case $host_os in + solaris2.[0-5] | solaris2.[0-5].*) ;; + *) + whole_archive_flag_spec_CXX='$wl-z ${wl}allextract$convenience $wl-z ${wl}defaultextract' + ;; + esac + fi + ;; + esac + ;; + + sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*) + no_undefined_flag_CXX='$wl-z,text' + archive_cmds_need_lc_CXX=no + hardcode_shlibpath_var_CXX=no + runpath_var='LD_RUN_PATH' + + case $cc_basename in + CC*) + archive_cmds_CXX='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds_CXX='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + *) + archive_cmds_CXX='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds_CXX='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + ;; + + sysv5* | sco3.2v5* | sco5v6*) + # Note: We CANNOT use -z defs as we might desire, because we do not + # link with -lc, and that would cause any symbols used from libc to + # always be unresolved, which means just about no library would + # ever link correctly. If we're not using GNU ld we use -z text + # though, which does catch some bad symbols but isn't as heavy-handed + # as -z defs. + no_undefined_flag_CXX='$wl-z,text' + allow_undefined_flag_CXX='$wl-z,nodefs' + archive_cmds_need_lc_CXX=no + hardcode_shlibpath_var_CXX=no + hardcode_libdir_flag_spec_CXX='$wl-R,$libdir' + hardcode_libdir_separator_CXX=':' + link_all_deplibs_CXX=yes + export_dynamic_flag_spec_CXX='$wl-Bexport' + runpath_var='LD_RUN_PATH' + + case $cc_basename in + CC*) + archive_cmds_CXX='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds_CXX='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + old_archive_cmds_CXX='$CC -Tprelink_objects $oldobjs~ + '"$old_archive_cmds_CXX" + reload_cmds_CXX='$CC -Tprelink_objects $reload_objs~ + '"$reload_cmds_CXX" + ;; + *) + archive_cmds_CXX='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds_CXX='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + ;; + + tandem*) + case $cc_basename in + NCC*) + # NonStop-UX NCC 3.20 + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + *) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + esac + ;; + + vxworks*) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + + *) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + esac + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs_CXX" >&5 +$as_echo "$ld_shlibs_CXX" >&6; } + test no = "$ld_shlibs_CXX" && can_build_shared=no + + GCC_CXX=$GXX + LD_CXX=$LD + + ## CAVEAT EMPTOR: + ## There is no encapsulation within the following macros, do not change + ## the running order or otherwise move them around unless you know exactly + ## what you are doing... + # Dependencies to place before and after the object being linked: +predep_objects_CXX= +postdep_objects_CXX= +predeps_CXX= +postdeps_CXX= +compiler_lib_search_path_CXX= + +cat > conftest.$ac_ext <<_LT_EOF +class Foo +{ +public: + Foo (void) { a = 0; } +private: + int a; +}; +_LT_EOF + + +_lt_libdeps_save_CFLAGS=$CFLAGS +case "$CC $CFLAGS " in #( +*\ -flto*\ *) CFLAGS="$CFLAGS -fno-lto" ;; +*\ -fwhopr*\ *) CFLAGS="$CFLAGS -fno-whopr" ;; +*\ -fuse-linker-plugin*\ *) CFLAGS="$CFLAGS -fno-use-linker-plugin" ;; +esac + +if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + # Parse the compiler output and extract the necessary + # objects, libraries and library flags. + + # Sentinel used to keep track of whether or not we are before + # the conftest object file. + pre_test_object_deps_done=no + + for p in `eval "$output_verbose_link_cmd"`; do + case $prev$p in + + -L* | -R* | -l*) + # Some compilers place space between "-{L,R}" and the path. + # Remove the space. + if test x-L = "$p" || + test x-R = "$p"; then + prev=$p + continue + fi + + # Expand the sysroot to ease extracting the directories later. + if test -z "$prev"; then + case $p in + -L*) func_stripname_cnf '-L' '' "$p"; prev=-L; p=$func_stripname_result ;; + -R*) func_stripname_cnf '-R' '' "$p"; prev=-R; p=$func_stripname_result ;; + -l*) func_stripname_cnf '-l' '' "$p"; prev=-l; p=$func_stripname_result ;; + esac + fi + case $p in + =*) func_stripname_cnf '=' '' "$p"; p=$lt_sysroot$func_stripname_result ;; + esac + if test no = "$pre_test_object_deps_done"; then + case $prev in + -L | -R) + # Internal compiler library paths should come after those + # provided the user. The postdeps already come after the + # user supplied libs so there is no need to process them. + if test -z "$compiler_lib_search_path_CXX"; then + compiler_lib_search_path_CXX=$prev$p + else + compiler_lib_search_path_CXX="${compiler_lib_search_path_CXX} $prev$p" + fi + ;; + # The "-l" case would never come before the object being + # linked, so don't bother handling this case. + esac + else + if test -z "$postdeps_CXX"; then + postdeps_CXX=$prev$p + else + postdeps_CXX="${postdeps_CXX} $prev$p" + fi + fi + prev= + ;; + + *.lto.$objext) ;; # Ignore GCC LTO objects + *.$objext) + # This assumes that the test object file only shows up + # once in the compiler output. + if test "$p" = "conftest.$objext"; then + pre_test_object_deps_done=yes + continue + fi + + if test no = "$pre_test_object_deps_done"; then + if test -z "$predep_objects_CXX"; then + predep_objects_CXX=$p + else + predep_objects_CXX="$predep_objects_CXX $p" + fi + else + if test -z "$postdep_objects_CXX"; then + postdep_objects_CXX=$p + else + postdep_objects_CXX="$postdep_objects_CXX $p" + fi + fi + ;; + + *) ;; # Ignore the rest. + + esac + done + + # Clean up. + rm -f a.out a.exe +else + echo "libtool.m4: error: problem compiling CXX test program" +fi + +$RM -f confest.$objext +CFLAGS=$_lt_libdeps_save_CFLAGS + +# PORTME: override above test on systems where it is broken +case $host_os in +interix[3-9]*) + # Interix 3.5 installs completely hosed .la files for C++, so rather than + # hack all around it, let's just trust "g++" to DTRT. + predep_objects_CXX= + postdep_objects_CXX= + postdeps_CXX= + ;; +esac + + +case " $postdeps_CXX " in +*" -lc "*) archive_cmds_need_lc_CXX=no ;; +esac + compiler_lib_search_dirs_CXX= +if test -n "${compiler_lib_search_path_CXX}"; then + compiler_lib_search_dirs_CXX=`echo " ${compiler_lib_search_path_CXX}" | $SED -e 's! -L! !g' -e 's!^ !!'` +fi + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + lt_prog_compiler_wl_CXX= +lt_prog_compiler_pic_CXX= +lt_prog_compiler_static_CXX= + + + # C++ specific cases for pic, static, wl, etc. + if test yes = "$GXX"; then + lt_prog_compiler_wl_CXX='-Wl,' + lt_prog_compiler_static_CXX='-static' + + case $host_os in + aix*) + # All AIX code is PIC. + if test ia64 = "$host_cpu"; then + # AIX 5 now supports IA64 processor + lt_prog_compiler_static_CXX='-Bstatic' + fi + lt_prog_compiler_pic_CXX='-fPIC' + ;; + + amigaos*) + case $host_cpu in + powerpc) + # see comment about AmigaOS4 .so support + lt_prog_compiler_pic_CXX='-fPIC' + ;; + m68k) + # FIXME: we need at least 68020 code to build shared libraries, but + # adding the '-m68020' flag to GCC prevents building anything better, + # like '-m68040'. + lt_prog_compiler_pic_CXX='-m68020 -resident32 -malways-restore-a4' + ;; + esac + ;; + + beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) + # PIC is the default for these OSes. + ;; + mingw* | cygwin* | os2* | pw32* | cegcc*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + # Although the cygwin gcc ignores -fPIC, still need this for old-style + # (--disable-auto-import) libraries + lt_prog_compiler_pic_CXX='-DDLL_EXPORT' + case $host_os in + os2*) + lt_prog_compiler_static_CXX='$wl-static' + ;; + esac + ;; + darwin* | rhapsody*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + lt_prog_compiler_pic_CXX='-fno-common' + ;; + *djgpp*) + # DJGPP does not support shared libraries at all + lt_prog_compiler_pic_CXX= + ;; + haiku*) + # PIC is the default for Haiku. + # The "-static" flag exists, but is broken. + lt_prog_compiler_static_CXX= + ;; + interix[3-9]*) + # Interix 3.x gcc -fpic/-fPIC options generate broken code. + # Instead, we relocate shared libraries at runtime. + ;; + sysv4*MP*) + if test -d /usr/nec; then + lt_prog_compiler_pic_CXX=-Kconform_pic + fi + ;; + hpux*) + # PIC is the default for 64-bit PA HP-UX, but not for 32-bit + # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag + # sets the default TLS model and affects inlining. + case $host_cpu in + hppa*64*) + ;; + *) + lt_prog_compiler_pic_CXX='-fPIC' + ;; + esac + ;; + *qnx* | *nto*) + # QNX uses GNU C++, but need to define -shared option too, otherwise + # it will coredump. + lt_prog_compiler_pic_CXX='-fPIC -shared' + ;; + *) + lt_prog_compiler_pic_CXX='-fPIC' + ;; + esac + else + case $host_os in + aix[4-9]*) + # All AIX code is PIC. + if test ia64 = "$host_cpu"; then + # AIX 5 now supports IA64 processor + lt_prog_compiler_static_CXX='-Bstatic' + else + lt_prog_compiler_static_CXX='-bnso -bI:/lib/syscalls.exp' + fi + ;; + chorus*) + case $cc_basename in + cxch68*) + # Green Hills C++ Compiler + # _LT_TAGVAR(lt_prog_compiler_static, CXX)="--no_auto_instantiation -u __main -u __premain -u _abort -r $COOL_DIR/lib/libOrb.a $MVME_DIR/lib/CC/libC.a $MVME_DIR/lib/classix/libcx.s.a" + ;; + esac + ;; + mingw* | cygwin* | os2* | pw32* | cegcc*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + lt_prog_compiler_pic_CXX='-DDLL_EXPORT' + ;; + dgux*) + case $cc_basename in + ec++*) + lt_prog_compiler_pic_CXX='-KPIC' + ;; + ghcx*) + # Green Hills C++ Compiler + lt_prog_compiler_pic_CXX='-pic' + ;; + *) + ;; + esac + ;; + freebsd* | dragonfly*) + # FreeBSD uses GNU C++ + ;; + hpux9* | hpux10* | hpux11*) + case $cc_basename in + CC*) + lt_prog_compiler_wl_CXX='-Wl,' + lt_prog_compiler_static_CXX='$wl-a ${wl}archive' + if test ia64 != "$host_cpu"; then + lt_prog_compiler_pic_CXX='+Z' + fi + ;; + aCC*) + lt_prog_compiler_wl_CXX='-Wl,' + lt_prog_compiler_static_CXX='$wl-a ${wl}archive' + case $host_cpu in + hppa*64*|ia64*) + # +Z the default + ;; + *) + lt_prog_compiler_pic_CXX='+Z' + ;; + esac + ;; + *) + ;; + esac + ;; + interix*) + # This is c89, which is MS Visual C++ (no shared libs) + # Anyone wants to do a port? + ;; + irix5* | irix6* | nonstopux*) + case $cc_basename in + CC*) + lt_prog_compiler_wl_CXX='-Wl,' + lt_prog_compiler_static_CXX='-non_shared' + # CC pic flag -KPIC is the default. + ;; + *) + ;; + esac + ;; + linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) + case $cc_basename in + KCC*) + # KAI C++ Compiler + lt_prog_compiler_wl_CXX='--backend -Wl,' + lt_prog_compiler_pic_CXX='-fPIC' + ;; + ecpc* ) + # old Intel C++ for x86_64, which still supported -KPIC. + lt_prog_compiler_wl_CXX='-Wl,' + lt_prog_compiler_pic_CXX='-KPIC' + lt_prog_compiler_static_CXX='-static' + ;; + icpc* ) + # Intel C++, used to be incompatible with GCC. + # ICC 10 doesn't accept -KPIC any more. + lt_prog_compiler_wl_CXX='-Wl,' + lt_prog_compiler_pic_CXX='-fPIC' + lt_prog_compiler_static_CXX='-static' + ;; + pgCC* | pgcpp*) + # Portland Group C++ compiler + lt_prog_compiler_wl_CXX='-Wl,' + lt_prog_compiler_pic_CXX='-fpic' + lt_prog_compiler_static_CXX='-Bstatic' + ;; + cxx*) + # Compaq C++ + # Make sure the PIC flag is empty. It appears that all Alpha + # Linux and Compaq Tru64 Unix objects are PIC. + lt_prog_compiler_pic_CXX= + lt_prog_compiler_static_CXX='-non_shared' + ;; + xlc* | xlC* | bgxl[cC]* | mpixl[cC]*) + # IBM XL 8.0, 9.0 on PPC and BlueGene + lt_prog_compiler_wl_CXX='-Wl,' + lt_prog_compiler_pic_CXX='-qpic' + lt_prog_compiler_static_CXX='-qstaticlink' + ;; + *) + case `$CC -V 2>&1 | sed 5q` in + *Sun\ C*) + # Sun C++ 5.9 + lt_prog_compiler_pic_CXX='-KPIC' + lt_prog_compiler_static_CXX='-Bstatic' + lt_prog_compiler_wl_CXX='-Qoption ld ' + ;; + esac + ;; + esac + ;; + lynxos*) + ;; + m88k*) + ;; + mvs*) + case $cc_basename in + cxx*) + lt_prog_compiler_pic_CXX='-W c,exportall' + ;; + *) + ;; + esac + ;; + netbsd* | netbsdelf*-gnu) + ;; + *qnx* | *nto*) + # QNX uses GNU C++, but need to define -shared option too, otherwise + # it will coredump. + lt_prog_compiler_pic_CXX='-fPIC -shared' + ;; + osf3* | osf4* | osf5*) + case $cc_basename in + KCC*) + lt_prog_compiler_wl_CXX='--backend -Wl,' + ;; + RCC*) + # Rational C++ 2.4.1 + lt_prog_compiler_pic_CXX='-pic' + ;; + cxx*) + # Digital/Compaq C++ + lt_prog_compiler_wl_CXX='-Wl,' + # Make sure the PIC flag is empty. It appears that all Alpha + # Linux and Compaq Tru64 Unix objects are PIC. + lt_prog_compiler_pic_CXX= + lt_prog_compiler_static_CXX='-non_shared' + ;; + *) + ;; + esac + ;; + psos*) + ;; + solaris*) + case $cc_basename in + CC* | sunCC*) + # Sun C++ 4.2, 5.x and Centerline C++ + lt_prog_compiler_pic_CXX='-KPIC' + lt_prog_compiler_static_CXX='-Bstatic' + lt_prog_compiler_wl_CXX='-Qoption ld ' + ;; + gcx*) + # Green Hills C++ Compiler + lt_prog_compiler_pic_CXX='-PIC' + ;; + *) + ;; + esac + ;; + sunos4*) + case $cc_basename in + CC*) + # Sun C++ 4.x + lt_prog_compiler_pic_CXX='-pic' + lt_prog_compiler_static_CXX='-Bstatic' + ;; + lcc*) + # Lucid + lt_prog_compiler_pic_CXX='-pic' + ;; + *) + ;; + esac + ;; + sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) + case $cc_basename in + CC*) + lt_prog_compiler_wl_CXX='-Wl,' + lt_prog_compiler_pic_CXX='-KPIC' + lt_prog_compiler_static_CXX='-Bstatic' + ;; + esac + ;; + tandem*) + case $cc_basename in + NCC*) + # NonStop-UX NCC 3.20 + lt_prog_compiler_pic_CXX='-KPIC' + ;; + *) + ;; + esac + ;; + vxworks*) + ;; + *) + lt_prog_compiler_can_build_shared_CXX=no + ;; + esac + fi + +case $host_os in + # For platforms that do not support PIC, -DPIC is meaningless: + *djgpp*) + lt_prog_compiler_pic_CXX= + ;; + *) + lt_prog_compiler_pic_CXX="$lt_prog_compiler_pic_CXX -DPIC" + ;; +esac + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5 +$as_echo_n "checking for $compiler option to produce PIC... " >&6; } +if ${lt_cv_prog_compiler_pic_CXX+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_prog_compiler_pic_CXX=$lt_prog_compiler_pic_CXX +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_CXX" >&5 +$as_echo "$lt_cv_prog_compiler_pic_CXX" >&6; } +lt_prog_compiler_pic_CXX=$lt_cv_prog_compiler_pic_CXX + +# +# Check to make sure the PIC flag actually works. +# +if test -n "$lt_prog_compiler_pic_CXX"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler PIC flag $lt_prog_compiler_pic_CXX works" >&5 +$as_echo_n "checking if $compiler PIC flag $lt_prog_compiler_pic_CXX works... " >&6; } +if ${lt_cv_prog_compiler_pic_works_CXX+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_prog_compiler_pic_works_CXX=no + ac_outfile=conftest.$ac_objext + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + lt_compiler_flag="$lt_prog_compiler_pic_CXX -DPIC" ## exclude from sc_useless_quotes_in_assignment + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + # The option is referenced via a variable to avoid confusing sed. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) + (eval "$lt_compile" 2>conftest.err) + ac_status=$? + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s "$ac_outfile"; then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings other than the usual output. + $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then + lt_cv_prog_compiler_pic_works_CXX=yes + fi + fi + $RM conftest* + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_works_CXX" >&5 +$as_echo "$lt_cv_prog_compiler_pic_works_CXX" >&6; } + +if test yes = "$lt_cv_prog_compiler_pic_works_CXX"; then + case $lt_prog_compiler_pic_CXX in + "" | " "*) ;; + *) lt_prog_compiler_pic_CXX=" $lt_prog_compiler_pic_CXX" ;; + esac +else + lt_prog_compiler_pic_CXX= + lt_prog_compiler_can_build_shared_CXX=no +fi + +fi + + + + + +# +# Check to make sure the static flag actually works. +# +wl=$lt_prog_compiler_wl_CXX eval lt_tmp_static_flag=\"$lt_prog_compiler_static_CXX\" +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler static flag $lt_tmp_static_flag works" >&5 +$as_echo_n "checking if $compiler static flag $lt_tmp_static_flag works... " >&6; } +if ${lt_cv_prog_compiler_static_works_CXX+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_prog_compiler_static_works_CXX=no + save_LDFLAGS=$LDFLAGS + LDFLAGS="$LDFLAGS $lt_tmp_static_flag" + echo "$lt_simple_link_test_code" > conftest.$ac_ext + if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then + # The linker can only warn and ignore the option if not recognized + # So say no if there are warnings + if test -s conftest.err; then + # Append any errors to the config.log. + cat conftest.err 1>&5 + $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if diff conftest.exp conftest.er2 >/dev/null; then + lt_cv_prog_compiler_static_works_CXX=yes + fi + else + lt_cv_prog_compiler_static_works_CXX=yes + fi + fi + $RM -r conftest* + LDFLAGS=$save_LDFLAGS + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_static_works_CXX" >&5 +$as_echo "$lt_cv_prog_compiler_static_works_CXX" >&6; } + +if test yes = "$lt_cv_prog_compiler_static_works_CXX"; then + : +else + lt_prog_compiler_static_CXX= +fi + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 +$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } +if ${lt_cv_prog_compiler_c_o_CXX+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_prog_compiler_c_o_CXX=no + $RM -r conftest 2>/dev/null + mkdir conftest + cd conftest + mkdir out + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + + lt_compiler_flag="-o out/conftest2.$ac_objext" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) + (eval "$lt_compile" 2>out/conftest.err) + ac_status=$? + cat out/conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s out/conftest2.$ac_objext + then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings + $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp + $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 + if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then + lt_cv_prog_compiler_c_o_CXX=yes + fi + fi + chmod u+w . 2>&5 + $RM conftest* + # SGI C++ compiler will create directory out/ii_files/ for + # template instantiation + test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files + $RM out/* && rmdir out + cd .. + $RM -r conftest + $RM conftest* + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o_CXX" >&5 +$as_echo "$lt_cv_prog_compiler_c_o_CXX" >&6; } + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 +$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } +if ${lt_cv_prog_compiler_c_o_CXX+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_prog_compiler_c_o_CXX=no + $RM -r conftest 2>/dev/null + mkdir conftest + cd conftest + mkdir out + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + + lt_compiler_flag="-o out/conftest2.$ac_objext" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) + (eval "$lt_compile" 2>out/conftest.err) + ac_status=$? + cat out/conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s out/conftest2.$ac_objext + then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings + $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp + $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 + if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then + lt_cv_prog_compiler_c_o_CXX=yes + fi + fi + chmod u+w . 2>&5 + $RM conftest* + # SGI C++ compiler will create directory out/ii_files/ for + # template instantiation + test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files + $RM out/* && rmdir out + cd .. + $RM -r conftest + $RM conftest* + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o_CXX" >&5 +$as_echo "$lt_cv_prog_compiler_c_o_CXX" >&6; } + + + + +hard_links=nottested +if test no = "$lt_cv_prog_compiler_c_o_CXX" && test no != "$need_locks"; then + # do not overwrite the value of need_locks provided by the user + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if we can lock with hard links" >&5 +$as_echo_n "checking if we can lock with hard links... " >&6; } + hard_links=yes + $RM conftest* + ln conftest.a conftest.b 2>/dev/null && hard_links=no + touch conftest.a + ln conftest.a conftest.b 2>&5 || hard_links=no + ln conftest.a conftest.b 2>/dev/null && hard_links=no + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $hard_links" >&5 +$as_echo "$hard_links" >&6; } + if test no = "$hard_links"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: '$CC' does not support '-c -o', so 'make -j' may be unsafe" >&5 +$as_echo "$as_me: WARNING: '$CC' does not support '-c -o', so 'make -j' may be unsafe" >&2;} + need_locks=warn + fi +else + need_locks=no +fi + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5 +$as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; } + + export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' + exclude_expsyms_CXX='_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*' + case $host_os in + aix[4-9]*) + # If we're using GNU nm, then we don't want the "-C" option. + # -C means demangle to GNU nm, but means don't demangle to AIX nm. + # Without the "-l" option, or with the "-B" option, AIX nm treats + # weak defined symbols like other global defined symbols, whereas + # GNU nm marks them as "W". + # While the 'weak' keyword is ignored in the Export File, we need + # it in the Import File for the 'aix-soname' feature, so we have + # to replace the "-B" option with "-P" for AIX nm. + if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then + export_symbols_cmds_CXX='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && (substr(\$ 3,1,1) != ".")) { if (\$ 2 == "W") { print \$ 3 " weak" } else { print \$ 3 } } }'\'' | sort -u > $export_symbols' + else + export_symbols_cmds_CXX='`func_echo_all $NM | $SED -e '\''s/B\([^B]*\)$/P\1/'\''` -PCpgl $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) && (substr(\$ 1,1,1) != ".")) { if ((\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) { print \$ 1 " weak" } else { print \$ 1 } } }'\'' | sort -u > $export_symbols' + fi + ;; + pw32*) + export_symbols_cmds_CXX=$ltdll_cmds + ;; + cygwin* | mingw* | cegcc*) + case $cc_basename in + cl*) + exclude_expsyms_CXX='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*' + ;; + *) + export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/;s/^.*[ ]__nm__\([^ ]*\)[ ][^ ]*/\1 DATA/;/^I[ ]/d;/^[AITW][ ]/s/.* //'\'' | sort | uniq > $export_symbols' + exclude_expsyms_CXX='[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname' + ;; + esac + ;; + linux* | k*bsd*-gnu | gnu*) + link_all_deplibs_CXX=no + ;; + *) + export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' + ;; + esac + +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs_CXX" >&5 +$as_echo "$ld_shlibs_CXX" >&6; } +test no = "$ld_shlibs_CXX" && can_build_shared=no + +with_gnu_ld_CXX=$with_gnu_ld + + + + + + +# +# Do we need to explicitly link libc? +# +case "x$archive_cmds_need_lc_CXX" in +x|xyes) + # Assume -lc should be added + archive_cmds_need_lc_CXX=yes + + if test yes,yes = "$GCC,$enable_shared"; then + case $archive_cmds_CXX in + *'~'*) + # FIXME: we may have to deal with multi-command sequences. + ;; + '$CC '*) + # Test whether the compiler implicitly links with -lc since on some + # systems, -lgcc has to come before -lc. If gcc already passes -lc + # to ld, don't add -lc before -lgcc. + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether -lc should be explicitly linked in" >&5 +$as_echo_n "checking whether -lc should be explicitly linked in... " >&6; } +if ${lt_cv_archive_cmds_need_lc_CXX+:} false; then : + $as_echo_n "(cached) " >&6 +else + $RM conftest* + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } 2>conftest.err; then + soname=conftest + lib=conftest + libobjs=conftest.$ac_objext + deplibs= + wl=$lt_prog_compiler_wl_CXX + pic_flag=$lt_prog_compiler_pic_CXX + compiler_flags=-v + linker_flags=-v + verstring= + output_objdir=. + libname=conftest + lt_save_allow_undefined_flag=$allow_undefined_flag_CXX + allow_undefined_flag_CXX= + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$archive_cmds_CXX 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1\""; } >&5 + (eval $archive_cmds_CXX 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } + then + lt_cv_archive_cmds_need_lc_CXX=no + else + lt_cv_archive_cmds_need_lc_CXX=yes + fi + allow_undefined_flag_CXX=$lt_save_allow_undefined_flag + else + cat conftest.err 1>&5 + fi + $RM conftest* + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_archive_cmds_need_lc_CXX" >&5 +$as_echo "$lt_cv_archive_cmds_need_lc_CXX" >&6; } + archive_cmds_need_lc_CXX=$lt_cv_archive_cmds_need_lc_CXX + ;; + esac + fi + ;; +esac + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking dynamic linker characteristics" >&5 +$as_echo_n "checking dynamic linker characteristics... " >&6; } + +library_names_spec= +libname_spec='lib$name' +soname_spec= +shrext_cmds=.so +postinstall_cmds= +postuninstall_cmds= +finish_cmds= +finish_eval= +shlibpath_var= +shlibpath_overrides_runpath=unknown +version_type=none +dynamic_linker="$host_os ld.so" +sys_lib_dlsearch_path_spec="/lib /usr/lib" +need_lib_prefix=unknown +hardcode_into_libs=no + +# when you set need_version to no, make sure it does not cause -set_version +# flags to be left without arguments +need_version=unknown + + + +case $host_os in +aix3*) + version_type=linux # correct to gnu/linux during the next big refactor + library_names_spec='$libname$release$shared_ext$versuffix $libname.a' + shlibpath_var=LIBPATH + + # AIX 3 has no versioning support, so we append a major version to the name. + soname_spec='$libname$release$shared_ext$major' + ;; + +aix[4-9]*) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + hardcode_into_libs=yes + if test ia64 = "$host_cpu"; then + # AIX 5 supports IA64 + library_names_spec='$libname$release$shared_ext$major $libname$release$shared_ext$versuffix $libname$shared_ext' + shlibpath_var=LD_LIBRARY_PATH + else + # With GCC up to 2.95.x, collect2 would create an import file + # for dependence libraries. The import file would start with + # the line '#! .'. This would cause the generated library to + # depend on '.', always an invalid library. This was fixed in + # development snapshots of GCC prior to 3.0. + case $host_os in + aix4 | aix4.[01] | aix4.[01].*) + if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' + echo ' yes ' + echo '#endif'; } | $CC -E - | $GREP yes > /dev/null; then + : + else + can_build_shared=no + fi + ;; + esac + # Using Import Files as archive members, it is possible to support + # filename-based versioning of shared library archives on AIX. While + # this would work for both with and without runtime linking, it will + # prevent static linking of such archives. So we do filename-based + # shared library versioning with .so extension only, which is used + # when both runtime linking and shared linking is enabled. + # Unfortunately, runtime linking may impact performance, so we do + # not want this to be the default eventually. Also, we use the + # versioned .so libs for executables only if there is the -brtl + # linker flag in LDFLAGS as well, or --with-aix-soname=svr4 only. + # To allow for filename-based versioning support, we need to create + # libNAME.so.V as an archive file, containing: + # *) an Import File, referring to the versioned filename of the + # archive as well as the shared archive member, telling the + # bitwidth (32 or 64) of that shared object, and providing the + # list of exported symbols of that shared object, eventually + # decorated with the 'weak' keyword + # *) the shared object with the F_LOADONLY flag set, to really avoid + # it being seen by the linker. + # At run time we better use the real file rather than another symlink, + # but for link time we create the symlink libNAME.so -> libNAME.so.V + + case $with_aix_soname,$aix_use_runtimelinking in + # AIX (on Power*) has no versioning support, so currently we cannot hardcode correct + # soname into executable. Probably we can add versioning support to + # collect2, so additional links can be useful in future. + aix,yes) # traditional libtool + dynamic_linker='AIX unversionable lib.so' + # If using run time linking (on AIX 4.2 or later) use lib.so + # instead of lib.a to let people know that these are not + # typical AIX shared libraries. + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + ;; + aix,no) # traditional AIX only + dynamic_linker='AIX lib.a(lib.so.V)' + # We preserve .a as extension for shared libraries through AIX4.2 + # and later when we are not doing run time linking. + library_names_spec='$libname$release.a $libname.a' + soname_spec='$libname$release$shared_ext$major' + ;; + svr4,*) # full svr4 only + dynamic_linker="AIX lib.so.V($shared_archive_member_spec.o)" + library_names_spec='$libname$release$shared_ext$major $libname$shared_ext' + # We do not specify a path in Import Files, so LIBPATH fires. + shlibpath_overrides_runpath=yes + ;; + *,yes) # both, prefer svr4 + dynamic_linker="AIX lib.so.V($shared_archive_member_spec.o), lib.a(lib.so.V)" + library_names_spec='$libname$release$shared_ext$major $libname$shared_ext' + # unpreferred sharedlib libNAME.a needs extra handling + postinstall_cmds='test -n "$linkname" || linkname="$realname"~func_stripname "" ".so" "$linkname"~$install_shared_prog "$dir/$func_stripname_result.$libext" "$destdir/$func_stripname_result.$libext"~test -z "$tstripme" || test -z "$striplib" || $striplib "$destdir/$func_stripname_result.$libext"' + postuninstall_cmds='for n in $library_names $old_library; do :; done~func_stripname "" ".so" "$n"~test "$func_stripname_result" = "$n" || func_append rmfiles " $odir/$func_stripname_result.$libext"' + # We do not specify a path in Import Files, so LIBPATH fires. + shlibpath_overrides_runpath=yes + ;; + *,no) # both, prefer aix + dynamic_linker="AIX lib.a(lib.so.V), lib.so.V($shared_archive_member_spec.o)" + library_names_spec='$libname$release.a $libname.a' + soname_spec='$libname$release$shared_ext$major' + # unpreferred sharedlib libNAME.so.V and symlink libNAME.so need extra handling + postinstall_cmds='test -z "$dlname" || $install_shared_prog $dir/$dlname $destdir/$dlname~test -z "$tstripme" || test -z "$striplib" || $striplib $destdir/$dlname~test -n "$linkname" || linkname=$realname~func_stripname "" ".a" "$linkname"~(cd "$destdir" && $LN_S -f $dlname $func_stripname_result.so)' + postuninstall_cmds='test -z "$dlname" || func_append rmfiles " $odir/$dlname"~for n in $old_library $library_names; do :; done~func_stripname "" ".a" "$n"~func_append rmfiles " $odir/$func_stripname_result.so"' + ;; + esac + shlibpath_var=LIBPATH + fi + ;; + +amigaos*) + case $host_cpu in + powerpc) + # Since July 2007 AmigaOS4 officially supports .so libraries. + # When compiling the executable, add -use-dynld -Lsobjs: to the compileline. + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + ;; + m68k) + library_names_spec='$libname.ixlibrary $libname.a' + # Create ${libname}_ixlibrary.a entries in /sys/libs. + finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' + ;; + esac + ;; + +beos*) + library_names_spec='$libname$shared_ext' + dynamic_linker="$host_os ld.so" + shlibpath_var=LIBRARY_PATH + ;; + +bsdi[45]*) + version_type=linux # correct to gnu/linux during the next big refactor + need_version=no + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" + sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" + # the default ld.so.conf also contains /usr/contrib/lib and + # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow + # libtool to hard-code these into programs + ;; + +cygwin* | mingw* | pw32* | cegcc*) + version_type=windows + shrext_cmds=.dll + need_version=no + need_lib_prefix=no + + case $GCC,$cc_basename in + yes,*) + # gcc + library_names_spec='$libname.dll.a' + # DLL is installed to $(libdir)/../bin by postinstall_cmds + postinstall_cmds='base_file=`basename \$file`~ + dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; echo \$dlname'\''`~ + dldir=$destdir/`dirname \$dlpath`~ + test -d \$dldir || mkdir -p \$dldir~ + $install_prog $dir/$dlname \$dldir/$dlname~ + chmod a+x \$dldir/$dlname~ + if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then + eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; + fi' + postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ + dlpath=$dir/\$dldll~ + $RM \$dlpath' + shlibpath_overrides_runpath=yes + + case $host_os in + cygwin*) + # Cygwin DLLs use 'cyg' prefix rather than 'lib' + soname_spec='`echo $libname | sed -e 's/^lib/cyg/'``echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' + + ;; + mingw* | cegcc*) + # MinGW DLLs use traditional 'lib' prefix + soname_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' + ;; + pw32*) + # pw32 DLLs use 'pw' prefix rather than 'lib' + library_names_spec='`echo $libname | sed -e 's/^lib/pw/'``echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' + ;; + esac + dynamic_linker='Win32 ld.exe' + ;; + + *,cl*) + # Native MSVC + libname_spec='$name' + soname_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' + library_names_spec='$libname.dll.lib' + + case $build_os in + mingw*) + sys_lib_search_path_spec= + lt_save_ifs=$IFS + IFS=';' + for lt_path in $LIB + do + IFS=$lt_save_ifs + # Let DOS variable expansion print the short 8.3 style file name. + lt_path=`cd "$lt_path" 2>/dev/null && cmd //C "for %i in (".") do @echo %~si"` + sys_lib_search_path_spec="$sys_lib_search_path_spec $lt_path" + done + IFS=$lt_save_ifs + # Convert to MSYS style. + sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | sed -e 's|\\\\|/|g' -e 's| \\([a-zA-Z]\\):| /\\1|g' -e 's|^ ||'` + ;; + cygwin*) + # Convert to unix form, then to dos form, then back to unix form + # but this time dos style (no spaces!) so that the unix form looks + # like /cygdrive/c/PROGRA~1:/cygdr... + sys_lib_search_path_spec=`cygpath --path --unix "$LIB"` + sys_lib_search_path_spec=`cygpath --path --dos "$sys_lib_search_path_spec" 2>/dev/null` + sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` + ;; + *) + sys_lib_search_path_spec=$LIB + if $ECHO "$sys_lib_search_path_spec" | $GREP ';[c-zC-Z]:/' >/dev/null; then + # It is most probably a Windows format PATH. + sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` + else + sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` + fi + # FIXME: find the short name or the path components, as spaces are + # common. (e.g. "Program Files" -> "PROGRA~1") + ;; + esac + + # DLL is installed to $(libdir)/../bin by postinstall_cmds + postinstall_cmds='base_file=`basename \$file`~ + dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; echo \$dlname'\''`~ + dldir=$destdir/`dirname \$dlpath`~ + test -d \$dldir || mkdir -p \$dldir~ + $install_prog $dir/$dlname \$dldir/$dlname' + postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ + dlpath=$dir/\$dldll~ + $RM \$dlpath' + shlibpath_overrides_runpath=yes + dynamic_linker='Win32 link.exe' + ;; + + *) + # Assume MSVC wrapper + library_names_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext $libname.lib' + dynamic_linker='Win32 ld.exe' + ;; + esac + # FIXME: first we should search . and the directory the executable is in + shlibpath_var=PATH + ;; + +darwin* | rhapsody*) + dynamic_linker="$host_os dyld" + version_type=darwin + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$major$shared_ext $libname$shared_ext' + soname_spec='$libname$release$major$shared_ext' + shlibpath_overrides_runpath=yes + shlibpath_var=DYLD_LIBRARY_PATH + shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' + + sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' + ;; + +dgux*) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + shlibpath_var=LD_LIBRARY_PATH + ;; + +freebsd* | dragonfly*) + # DragonFly does not have aout. When/if they implement a new + # versioning mechanism, adjust this. + if test -x /usr/bin/objformat; then + objformat=`/usr/bin/objformat` + else + case $host_os in + freebsd[23].*) objformat=aout ;; + *) objformat=elf ;; + esac + fi + version_type=freebsd-$objformat + case $version_type in + freebsd-elf*) + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + need_version=no + need_lib_prefix=no + ;; + freebsd-*) + library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' + need_version=yes + ;; + esac + shlibpath_var=LD_LIBRARY_PATH + case $host_os in + freebsd2.*) + shlibpath_overrides_runpath=yes + ;; + freebsd3.[01]* | freebsdelf3.[01]*) + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + freebsd3.[2-9]* | freebsdelf3.[2-9]* | \ + freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1) + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + *) # from 4.6 on, and DragonFly + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + esac + ;; + +haiku*) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + dynamic_linker="$host_os runtime_loader" + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + shlibpath_var=LIBRARY_PATH + shlibpath_overrides_runpath=no + sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib' + hardcode_into_libs=yes + ;; + +hpux9* | hpux10* | hpux11*) + # Give a soname corresponding to the major version so that dld.sl refuses to + # link against other versions. + version_type=sunos + need_lib_prefix=no + need_version=no + case $host_cpu in + ia64*) + shrext_cmds='.so' + hardcode_into_libs=yes + dynamic_linker="$host_os dld.so" + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + if test 32 = "$HPUX_IA64_MODE"; then + sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" + sys_lib_dlsearch_path_spec=/usr/lib/hpux32 + else + sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" + sys_lib_dlsearch_path_spec=/usr/lib/hpux64 + fi + ;; + hppa*64*) + shrext_cmds='.sl' + hardcode_into_libs=yes + dynamic_linker="$host_os dld.sl" + shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH + shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + ;; + *) + shrext_cmds='.sl' + dynamic_linker="$host_os dld.sl" + shlibpath_var=SHLIB_PATH + shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + ;; + esac + # HP-UX runs *really* slowly unless shared libraries are mode 555, ... + postinstall_cmds='chmod 555 $lib' + # or fails outright, so override atomically: + install_override_mode=555 + ;; + +interix[3-9]*) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + +irix5* | irix6* | nonstopux*) + case $host_os in + nonstopux*) version_type=nonstopux ;; + *) + if test yes = "$lt_cv_prog_gnu_ld"; then + version_type=linux # correct to gnu/linux during the next big refactor + else + version_type=irix + fi ;; + esac + need_lib_prefix=no + need_version=no + soname_spec='$libname$release$shared_ext$major' + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$release$shared_ext $libname$shared_ext' + case $host_os in + irix5* | nonstopux*) + libsuff= shlibsuff= + ;; + *) + case $LD in # libtool.m4 will add one of these switches to LD + *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") + libsuff= shlibsuff= libmagic=32-bit;; + *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") + libsuff=32 shlibsuff=N32 libmagic=N32;; + *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") + libsuff=64 shlibsuff=64 libmagic=64-bit;; + *) libsuff= shlibsuff= libmagic=never-match;; + esac + ;; + esac + shlibpath_var=LD_LIBRARY${shlibsuff}_PATH + shlibpath_overrides_runpath=no + sys_lib_search_path_spec="/usr/lib$libsuff /lib$libsuff /usr/local/lib$libsuff" + sys_lib_dlsearch_path_spec="/usr/lib$libsuff /lib$libsuff" + hardcode_into_libs=yes + ;; + +# No shared lib support for Linux oldld, aout, or coff. +linux*oldld* | linux*aout* | linux*coff*) + dynamic_linker=no + ;; + +linux*android*) + version_type=none # Android doesn't support versioned libraries. + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$shared_ext' + soname_spec='$libname$release$shared_ext' + finish_cmds= + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + + # This implies no fast_install, which is unacceptable. + # Some rework will be needed to allow for fast_install + # before this can be enabled. + hardcode_into_libs=yes + + dynamic_linker='Android linker' + # Don't embed -rpath directories since the linker doesn't support them. + hardcode_libdir_flag_spec_CXX='-L$libdir' + ;; + +# This must be glibc/ELF. +linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + + # Some binutils ld are patched to set DT_RUNPATH + if ${lt_cv_shlibpath_overrides_runpath+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_shlibpath_overrides_runpath=no + save_LDFLAGS=$LDFLAGS + save_libdir=$libdir + eval "libdir=/foo; wl=\"$lt_prog_compiler_wl_CXX\"; \ + LDFLAGS=\"\$LDFLAGS $hardcode_libdir_flag_spec_CXX\"" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_cxx_try_link "$LINENO"; then : + if ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null; then : + lt_cv_shlibpath_overrides_runpath=yes +fi +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + LDFLAGS=$save_LDFLAGS + libdir=$save_libdir + +fi + + shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath + + # This implies no fast_install, which is unacceptable. + # Some rework will be needed to allow for fast_install + # before this can be enabled. + hardcode_into_libs=yes + + # Ideally, we could use ldconfig to report *all* directores which are + # searched for libraries, however this is still not possible. Aside from not + # being certain /sbin/ldconfig is available, command + # 'ldconfig -N -X -v | grep ^/' on 64bit Fedora does not report /usr/lib64, + # even though it is searched at run-time. Try to do the best guess by + # appending ld.so.conf contents (and includes) to the search path. + if test -f /etc/ld.so.conf; then + lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '` + sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" + fi + + # We used to test for /lib/ld.so.1 and disable shared libraries on + # powerpc, because MkLinux only supported shared libraries with the + # GNU dynamic linker. Since this was broken with cross compilers, + # most powerpc-linux boxes support dynamic linking these days and + # people can always --disable-shared, the test was removed, and we + # assume the GNU/Linux dynamic linker is in use. + dynamic_linker='GNU/Linux ld.so' + ;; + +netbsdelf*-gnu) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + dynamic_linker='NetBSD ld.elf_so' + ;; + +netbsd*) + version_type=sunos + need_lib_prefix=no + need_version=no + if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then + library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + dynamic_linker='NetBSD (a.out) ld.so' + else + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + dynamic_linker='NetBSD ld.elf_so' + fi + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + +newsos6) + version_type=linux # correct to gnu/linux during the next big refactor + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + ;; + +*nto* | *qnx*) + version_type=qnx + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + dynamic_linker='ldqnx.so' + ;; + +openbsd* | bitrig*) + version_type=sunos + sys_lib_dlsearch_path_spec=/usr/lib + need_lib_prefix=no + if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then + need_version=no + else + need_version=yes + fi + library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + ;; + +os2*) + libname_spec='$name' + version_type=windows + shrext_cmds=.dll + need_version=no + need_lib_prefix=no + # OS/2 can only load a DLL with a base name of 8 characters or less. + soname_spec='`test -n "$os2dllname" && libname="$os2dllname"; + v=$($ECHO $release$versuffix | tr -d .-); + n=$($ECHO $libname | cut -b -$((8 - ${#v})) | tr . _); + $ECHO $n$v`$shared_ext' + library_names_spec='${libname}_dll.$libext' + dynamic_linker='OS/2 ld.exe' + shlibpath_var=BEGINLIBPATH + sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + postinstall_cmds='base_file=`basename \$file`~ + dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; $ECHO \$dlname'\''`~ + dldir=$destdir/`dirname \$dlpath`~ + test -d \$dldir || mkdir -p \$dldir~ + $install_prog $dir/$dlname \$dldir/$dlname~ + chmod a+x \$dldir/$dlname~ + if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then + eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; + fi' + postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; $ECHO \$dlname'\''`~ + dlpath=$dir/\$dldll~ + $RM \$dlpath' + ;; + +osf3* | osf4* | osf5*) + version_type=osf + need_lib_prefix=no + need_version=no + soname_spec='$libname$release$shared_ext$major' + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + shlibpath_var=LD_LIBRARY_PATH + sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + ;; + +rdos*) + dynamic_linker=no + ;; + +solaris*) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + # ldd complains unless libraries are executable + postinstall_cmds='chmod +x $lib' + ;; + +sunos4*) + version_type=sunos + library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' + finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + if test yes = "$with_gnu_ld"; then + need_lib_prefix=no + fi + need_version=yes + ;; + +sysv4 | sysv4.3*) + version_type=linux # correct to gnu/linux during the next big refactor + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + shlibpath_var=LD_LIBRARY_PATH + case $host_vendor in + sni) + shlibpath_overrides_runpath=no + need_lib_prefix=no + runpath_var=LD_RUN_PATH + ;; + siemens) + need_lib_prefix=no + ;; + motorola) + need_lib_prefix=no + need_version=no + shlibpath_overrides_runpath=no + sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' + ;; + esac + ;; + +sysv4*MP*) + if test -d /usr/nec; then + version_type=linux # correct to gnu/linux during the next big refactor + library_names_spec='$libname$shared_ext.$versuffix $libname$shared_ext.$major $libname$shared_ext' + soname_spec='$libname$shared_ext.$major' + shlibpath_var=LD_LIBRARY_PATH + fi + ;; + +sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) + version_type=sco + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + if test yes = "$with_gnu_ld"; then + sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' + else + sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' + case $host_os in + sco3.2v5*) + sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" + ;; + esac + fi + sys_lib_dlsearch_path_spec='/usr/lib' + ;; + +tpf*) + # TPF is a cross-target only. Preferred cross-host = GNU/Linux. + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + +uts4*) + version_type=linux # correct to gnu/linux during the next big refactor + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + shlibpath_var=LD_LIBRARY_PATH + ;; + +*) + dynamic_linker=no + ;; +esac +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $dynamic_linker" >&5 +$as_echo "$dynamic_linker" >&6; } +test no = "$dynamic_linker" && can_build_shared=no + +variables_saved_for_relink="PATH $shlibpath_var $runpath_var" +if test yes = "$GCC"; then + variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" +fi + +if test set = "${lt_cv_sys_lib_search_path_spec+set}"; then + sys_lib_search_path_spec=$lt_cv_sys_lib_search_path_spec +fi + +if test set = "${lt_cv_sys_lib_dlsearch_path_spec+set}"; then + sys_lib_dlsearch_path_spec=$lt_cv_sys_lib_dlsearch_path_spec +fi + +# remember unaugmented sys_lib_dlsearch_path content for libtool script decls... +configure_time_dlsearch_path=$sys_lib_dlsearch_path_spec + +# ... but it needs LT_SYS_LIBRARY_PATH munging for other configure-time code +func_munge_path_list sys_lib_dlsearch_path_spec "$LT_SYS_LIBRARY_PATH" + +# to be used as default LT_SYS_LIBRARY_PATH value in generated libtool +configure_time_lt_sys_library_path=$LT_SYS_LIBRARY_PATH + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to hardcode library paths into programs" >&5 +$as_echo_n "checking how to hardcode library paths into programs... " >&6; } +hardcode_action_CXX= +if test -n "$hardcode_libdir_flag_spec_CXX" || + test -n "$runpath_var_CXX" || + test yes = "$hardcode_automatic_CXX"; then + + # We can hardcode non-existent directories. + if test no != "$hardcode_direct_CXX" && + # If the only mechanism to avoid hardcoding is shlibpath_var, we + # have to relink, otherwise we might link with an installed library + # when we should be linking with a yet-to-be-installed one + ## test no != "$_LT_TAGVAR(hardcode_shlibpath_var, CXX)" && + test no != "$hardcode_minus_L_CXX"; then + # Linking always hardcodes the temporary library directory. + hardcode_action_CXX=relink + else + # We can link without hardcoding, and we can hardcode nonexisting dirs. + hardcode_action_CXX=immediate + fi +else + # We cannot hardcode anything, or else we can only hardcode existing + # directories. + hardcode_action_CXX=unsupported +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $hardcode_action_CXX" >&5 +$as_echo "$hardcode_action_CXX" >&6; } + +if test relink = "$hardcode_action_CXX" || + test yes = "$inherit_rpath_CXX"; then + # Fast installation is not supported + enable_fast_install=no +elif test yes = "$shlibpath_overrides_runpath" || + test no = "$enable_shared"; then + # Fast installation is not necessary + enable_fast_install=needless +fi + + + + + + + + fi # test -n "$compiler" + + CC=$lt_save_CC + CFLAGS=$lt_save_CFLAGS + LDCXX=$LD + LD=$lt_save_LD + GCC=$lt_save_GCC + with_gnu_ld=$lt_save_with_gnu_ld + lt_cv_path_LDCXX=$lt_cv_path_LD + lt_cv_path_LD=$lt_save_path_LD + lt_cv_prog_gnu_ldcxx=$lt_cv_prog_gnu_ld + lt_cv_prog_gnu_ld=$lt_save_with_gnu_ld +fi # test yes != "$_lt_caught_CXX_error" + +ac_ext=cpp +ac_cpp='$CXXCPP $CPPFLAGS' +ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_cxx_compiler_gnu + + + + + + + + + + + + + + + + ac_config_commands="$ac_config_commands libtool" + + + + +# Only expand once: + + + + +# Check whether --with-proj-cflags was given. +if test "${with_proj_cflags+set}" = set; then : + withval=$with_proj_cflags; if test "$withval" != ""; then PROJ_CFLAGS="$withval"; else PROJ_CFLAGS=""; fi +else + PROJ_CFLAGS='-DPROJ4' +fi + + + + +# Check whether --with-proj-libs was given. +if test "${with_proj_libs+set}" = set; then : + withval=$with_proj_libs; PROJ_LIBS="$withval" +else + PROJ_LIBS='-lproj' +fi + + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for floor in -lm" >&5 +$as_echo_n "checking for floor in -lm... " >&6; } +if ${ac_cv_lib_m_floor+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lm $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char floor (); +int +main () +{ +return floor (); + ; + return 0; +} +_ACEOF +if ac_fn_cxx_try_link "$LINENO"; then : + ac_cv_lib_m_floor=yes +else + ac_cv_lib_m_floor=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_m_floor" >&5 +$as_echo "$ac_cv_lib_m_floor" >&6; } +if test "x$ac_cv_lib_m_floor" = xyes; then : + LIBM=-lm +fi + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for some Win32 platform" >&5 +$as_echo_n "checking for some Win32 platform... " >&6; } +case "$host" in + *-*-mingw*|*-*-cygwin*) + platform_win32=yes + ;; + *) + platform_win32=no + ;; +esac +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $platform_win32" >&5 +$as_echo "$platform_win32" >&6; } + if test "$platform_win32" = "yes"; then + PLATFORM_WIN32_TRUE= + PLATFORM_WIN32_FALSE='#' +else + PLATFORM_WIN32_TRUE='#' + PLATFORM_WIN32_FALSE= +fi + + +echo +echo "Configuration summary for $PACKAGE $VERSION:" +echo " - Host: ${host}" +echo " - PROJ flags: $PROJ_CFLAGS $PROJ_LIBS" +echo + +ac_config_files="$ac_config_files Makefile contrib/Makefile shapelib.pc" + + +cat >confcache <<\_ACEOF +# This file is a shell script that caches the results of configure +# tests run on this system so they can be shared between configure +# scripts and configure runs, see configure's option --config-cache. +# It is not useful on other systems. If it contains results you don't +# want to keep, you may remove or edit it. +# +# config.status only pays attention to the cache file if you give it +# the --recheck option to rerun configure. +# +# `ac_cv_env_foo' variables (set or unset) will be overridden when +# loading this file, other *unset* `ac_cv_foo' will be assigned the +# following values. + +_ACEOF + +# The following way of writing the cache mishandles newlines in values, +# but we know of no workaround that is simple, portable, and efficient. +# So, we kill variables containing newlines. +# Ultrix sh set writes to stderr and can't be redirected directly, +# and sets the high bit in the cache file unless we assign to the vars. +( + for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do + eval ac_val=\$$ac_var + case $ac_val in #( + *${as_nl}*) + case $ac_var in #( + *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 +$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; + esac + case $ac_var in #( + _ | IFS | as_nl) ;; #( + BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( + *) { eval $ac_var=; unset $ac_var;} ;; + esac ;; + esac + done + + (set) 2>&1 | + case $as_nl`(ac_space=' '; set) 2>&1` in #( + *${as_nl}ac_space=\ *) + # `set' does not quote correctly, so add quotes: double-quote + # substitution turns \\\\ into \\, and sed turns \\ into \. + sed -n \ + "s/'/'\\\\''/g; + s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" + ;; #( + *) + # `set' quotes correctly as required by POSIX, so do not add quotes. + sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" + ;; + esac | + sort +) | + sed ' + /^ac_cv_env_/b end + t clear + :clear + s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ + t end + s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ + :end' >>confcache +if diff "$cache_file" confcache >/dev/null 2>&1; then :; else + if test -w "$cache_file"; then + if test "x$cache_file" != "x/dev/null"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5 +$as_echo "$as_me: updating cache $cache_file" >&6;} + if test ! -f "$cache_file" || test -h "$cache_file"; then + cat confcache >"$cache_file" + else + case $cache_file in #( + */* | ?:*) + mv -f confcache "$cache_file"$$ && + mv -f "$cache_file"$$ "$cache_file" ;; #( + *) + mv -f confcache "$cache_file" ;; + esac + fi + fi + else + { $as_echo "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5 +$as_echo "$as_me: not updating unwritable cache $cache_file" >&6;} + fi +fi +rm -f confcache + +test "x$prefix" = xNONE && prefix=$ac_default_prefix +# Let make expand exec_prefix. +test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' + +# Transform confdefs.h into DEFS. +# Protect against shell expansion while executing Makefile rules. +# Protect against Makefile macro expansion. +# +# If the first sed substitution is executed (which looks for macros that +# take arguments), then branch to the quote section. Otherwise, +# look for a macro that doesn't take arguments. +ac_script=' +:mline +/\\$/{ + N + s,\\\n,, + b mline +} +t clear +:clear +s/^[ ]*#[ ]*define[ ][ ]*\([^ (][^ (]*([^)]*)\)[ ]*\(.*\)/-D\1=\2/g +t quote +s/^[ ]*#[ ]*define[ ][ ]*\([^ ][^ ]*\)[ ]*\(.*\)/-D\1=\2/g +t quote +b any +:quote +s/[ `~#$^&*(){}\\|;'\''"<>?]/\\&/g +s/\[/\\&/g +s/\]/\\&/g +s/\$/$$/g +H +:any +${ + g + s/^\n// + s/\n/ /g + p +} +' +DEFS=`sed -n "$ac_script" confdefs.h` + + +ac_libobjs= +ac_ltlibobjs= +U= +for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue + # 1. Remove the extension, and $U if already installed. + ac_script='s/\$U\././;s/\.o$//;s/\.obj$//' + ac_i=`$as_echo "$ac_i" | sed "$ac_script"` + # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR + # will be set to the directory where LIBOBJS objects are built. + as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext" + as_fn_append ac_ltlibobjs " \${LIBOBJDIR}$ac_i"'$U.lo' +done +LIBOBJS=$ac_libobjs + +LTLIBOBJS=$ac_ltlibobjs + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking that generated files are newer than configure" >&5 +$as_echo_n "checking that generated files are newer than configure... " >&6; } + if test -n "$am_sleep_pid"; then + # Hide warnings about reused PIDs. + wait $am_sleep_pid 2>/dev/null + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: result: done" >&5 +$as_echo "done" >&6; } + if test -n "$EXEEXT"; then + am__EXEEXT_TRUE= + am__EXEEXT_FALSE='#' +else + am__EXEEXT_TRUE='#' + am__EXEEXT_FALSE= +fi + +if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then + as_fn_error $? "conditional \"AMDEP\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then + as_fn_error $? "conditional \"am__fastdepCC\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then + as_fn_error $? "conditional \"am__fastdepCC\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${am__fastdepCXX_TRUE}" && test -z "${am__fastdepCXX_FALSE}"; then + as_fn_error $? "conditional \"am__fastdepCXX\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${PLATFORM_WIN32_TRUE}" && test -z "${PLATFORM_WIN32_FALSE}"; then + as_fn_error $? "conditional \"PLATFORM_WIN32\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi + +: "${CONFIG_STATUS=./config.status}" +ac_write_fail=0 +ac_clean_files_save=$ac_clean_files +ac_clean_files="$ac_clean_files $CONFIG_STATUS" +{ $as_echo "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5 +$as_echo "$as_me: creating $CONFIG_STATUS" >&6;} +as_write_fail=0 +cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1 +#! $SHELL +# Generated by $as_me. +# Run this file to recreate the current configuration. +# Compiler output produced by configure, useful for debugging +# configure, is in config.log if it exists. + +debug=false +ac_cs_recheck=false +ac_cs_silent=false + +SHELL=\${CONFIG_SHELL-$SHELL} +export SHELL +_ASEOF +cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1 +## -------------------- ## +## M4sh Initialization. ## +## -------------------- ## + +# Be more Bourne compatible +DUALCASE=1; export DUALCASE # for MKS sh +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : + emulate sh + NULLCMD=: + # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in #( + *posix*) : + set -o posix ;; #( + *) : + ;; +esac +fi + + +as_nl=' +' +export as_nl +# Printing a long string crashes Solaris 7 /usr/bin/printf. +as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' +as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo +as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo +# Prefer a ksh shell builtin over an external printf program on Solaris, +# but without wasting forks for bash or zsh. +if test -z "$BASH_VERSION$ZSH_VERSION" \ + && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then + as_echo='print -r --' + as_echo_n='print -rn --' +elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then + as_echo='printf %s\n' + as_echo_n='printf %s' +else + if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then + as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' + as_echo_n='/usr/ucb/echo -n' + else + as_echo_body='eval expr "X$1" : "X\\(.*\\)"' + as_echo_n_body='eval + arg=$1; + case $arg in #( + *"$as_nl"*) + expr "X$arg" : "X\\(.*\\)$as_nl"; + arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; + esac; + expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" + ' + export as_echo_n_body + as_echo_n='sh -c $as_echo_n_body as_echo' + fi + export as_echo_body + as_echo='sh -c $as_echo_body as_echo' +fi + +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + PATH_SEPARATOR=: + (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { + (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || + PATH_SEPARATOR=';' + } +fi + + +# IFS +# We need space, tab and new line, in precisely that order. Quoting is +# there to prevent editors from complaining about space-tab. +# (If _AS_PATH_WALK were called with IFS unset, it would disable word +# splitting by setting IFS to empty value.) +IFS=" "" $as_nl" + +# Find who we are. Look in the path if we contain no directory separator. +as_myself= +case $0 in #(( + *[\\/]* ) as_myself=$0 ;; + *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break + done +IFS=$as_save_IFS + + ;; +esac +# We did not find ourselves, most probably we were run as `sh COMMAND' +# in which case we are not to be found in the path. +if test "x$as_myself" = x; then + as_myself=$0 +fi +if test ! -f "$as_myself"; then + $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 + exit 1 +fi + +# Unset variables that we do not need and which cause bugs (e.g. in +# pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" +# suppresses any "Segmentation fault" message there. '((' could +# trigger a bug in pdksh 5.2.14. +for as_var in BASH_ENV ENV MAIL MAILPATH +do eval test x\${$as_var+set} = xset \ + && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : +done +PS1='$ ' +PS2='> ' +PS4='+ ' + +# NLS nuisances. +LC_ALL=C +export LC_ALL +LANGUAGE=C +export LANGUAGE + +# CDPATH. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + + +# as_fn_error STATUS ERROR [LINENO LOG_FD] +# ---------------------------------------- +# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are +# provided, also output the error to LOG_FD, referencing LINENO. Then exit the +# script with STATUS, using 1 if that was 0. +as_fn_error () +{ + as_status=$1; test $as_status -eq 0 && as_status=1 + if test "$4"; then + as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 + fi + $as_echo "$as_me: error: $2" >&2 + as_fn_exit $as_status +} # as_fn_error + + +# as_fn_set_status STATUS +# ----------------------- +# Set $? to STATUS, without forking. +as_fn_set_status () +{ + return $1 +} # as_fn_set_status + +# as_fn_exit STATUS +# ----------------- +# Exit the shell with STATUS, even in a "trap 0" or "set -e" context. +as_fn_exit () +{ + set +e + as_fn_set_status $1 + exit $1 +} # as_fn_exit + +# as_fn_unset VAR +# --------------- +# Portably unset VAR. +as_fn_unset () +{ + { eval $1=; unset $1;} +} +as_unset=as_fn_unset +# as_fn_append VAR VALUE +# ---------------------- +# Append the text in VALUE to the end of the definition contained in VAR. Take +# advantage of any shell optimizations that allow amortized linear growth over +# repeated appends, instead of the typical quadratic growth present in naive +# implementations. +if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : + eval 'as_fn_append () + { + eval $1+=\$2 + }' +else + as_fn_append () + { + eval $1=\$$1\$2 + } +fi # as_fn_append + +# as_fn_arith ARG... +# ------------------ +# Perform arithmetic evaluation on the ARGs, and store the result in the +# global $as_val. Take advantage of shells that can avoid forks. The arguments +# must be portable across $(()) and expr. +if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : + eval 'as_fn_arith () + { + as_val=$(( $* )) + }' +else + as_fn_arith () + { + as_val=`expr "$@" || test $? -eq 1` + } +fi # as_fn_arith + + +if expr a : '\(a\)' >/dev/null 2>&1 && + test "X`expr 00001 : '.*\(...\)'`" = X001; then + as_expr=expr +else + as_expr=false +fi + +if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then + as_basename=basename +else + as_basename=false +fi + +if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then + as_dirname=dirname +else + as_dirname=false +fi + +as_me=`$as_basename -- "$0" || +$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ + X"$0" : 'X\(//\)$' \| \ + X"$0" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X/"$0" | + sed '/^.*\/\([^/][^/]*\)\/*$/{ + s//\1/ + q + } + /^X\/\(\/\/\)$/{ + s//\1/ + q + } + /^X\/\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + +# Avoid depending upon Character Ranges. +as_cr_letters='abcdefghijklmnopqrstuvwxyz' +as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' +as_cr_Letters=$as_cr_letters$as_cr_LETTERS +as_cr_digits='0123456789' +as_cr_alnum=$as_cr_Letters$as_cr_digits + +ECHO_C= ECHO_N= ECHO_T= +case `echo -n x` in #((((( +-n*) + case `echo 'xy\c'` in + *c*) ECHO_T=' ';; # ECHO_T is single tab character. + xy) ECHO_C='\c';; + *) echo `echo ksh88 bug on AIX 6.1` > /dev/null + ECHO_T=' ';; + esac;; +*) + ECHO_N='-n';; +esac + +rm -f conf$$ conf$$.exe conf$$.file +if test -d conf$$.dir; then + rm -f conf$$.dir/conf$$.file +else + rm -f conf$$.dir + mkdir conf$$.dir 2>/dev/null +fi +if (echo >conf$$.file) 2>/dev/null; then + if ln -s conf$$.file conf$$ 2>/dev/null; then + as_ln_s='ln -s' + # ... but there are two gotchas: + # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. + # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. + # In both cases, we have to default to `cp -pR'. + ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || + as_ln_s='cp -pR' + elif ln conf$$.file conf$$ 2>/dev/null; then + as_ln_s=ln + else + as_ln_s='cp -pR' + fi +else + as_ln_s='cp -pR' +fi +rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file +rmdir conf$$.dir 2>/dev/null + + +# as_fn_mkdir_p +# ------------- +# Create "$as_dir" as a directory, including parents if necessary. +as_fn_mkdir_p () +{ + + case $as_dir in #( + -*) as_dir=./$as_dir;; + esac + test -d "$as_dir" || eval $as_mkdir_p || { + as_dirs= + while :; do + case $as_dir in #( + *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( + *) as_qdir=$as_dir;; + esac + as_dirs="'$as_qdir' $as_dirs" + as_dir=`$as_dirname -- "$as_dir" || +$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_dir" : 'X\(//\)[^/]' \| \ + X"$as_dir" : 'X\(//\)$' \| \ + X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$as_dir" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + test -d "$as_dir" && break + done + test -z "$as_dirs" || eval "mkdir $as_dirs" + } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" + + +} # as_fn_mkdir_p +if mkdir -p . 2>/dev/null; then + as_mkdir_p='mkdir -p "$as_dir"' +else + test -d ./-p && rmdir ./-p + as_mkdir_p=false +fi + + +# as_fn_executable_p FILE +# ----------------------- +# Test if FILE is an executable regular file. +as_fn_executable_p () +{ + test -f "$1" && test -x "$1" +} # as_fn_executable_p +as_test_x='test -x' +as_executable_p=as_fn_executable_p + +# Sed expression to map a string onto a valid CPP name. +as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" + +# Sed expression to map a string onto a valid variable name. +as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" + + +exec 6>&1 +## ----------------------------------- ## +## Main body of $CONFIG_STATUS script. ## +## ----------------------------------- ## +_ASEOF +test $as_write_fail = 0 && chmod +x $CONFIG_STATUS || ac_write_fail=1 + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +# Save the log message, to keep $0 and so on meaningful, and to +# report actual input values of CONFIG_FILES etc. instead of their +# values after options handling. +ac_log=" +This file was extended by shapelib $as_me 1.4.1, which was +generated by GNU Autoconf 2.69. Invocation command line was + + CONFIG_FILES = $CONFIG_FILES + CONFIG_HEADERS = $CONFIG_HEADERS + CONFIG_LINKS = $CONFIG_LINKS + CONFIG_COMMANDS = $CONFIG_COMMANDS + $ $0 $@ + +on `(hostname || uname -n) 2>/dev/null | sed 1q` +" + +_ACEOF + +case $ac_config_files in *" +"*) set x $ac_config_files; shift; ac_config_files=$*;; +esac + + + +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +# Files that config.status was made for. +config_files="$ac_config_files" +config_commands="$ac_config_commands" + +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +ac_cs_usage="\ +\`$as_me' instantiates files and other configuration actions +from templates according to the current configuration. Unless the files +and actions are specified as TAGs, all are instantiated by default. + +Usage: $0 [OPTION]... [TAG]... + + -h, --help print this help, then exit + -V, --version print version number and configuration settings, then exit + --config print configuration, then exit + -q, --quiet, --silent + do not print progress messages + -d, --debug don't remove temporary files + --recheck update $as_me by reconfiguring in the same conditions + --file=FILE[:TEMPLATE] + instantiate the configuration file FILE + +Configuration files: +$config_files + +Configuration commands: +$config_commands + +Report bugs to the package provider." + +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" +ac_cs_version="\\ +shapelib config.status 1.4.1 +configured by $0, generated by GNU Autoconf 2.69, + with options \\"\$ac_cs_config\\" + +Copyright (C) 2012 Free Software Foundation, Inc. +This config.status script is free software; the Free Software Foundation +gives unlimited permission to copy, distribute and modify it." + +ac_pwd='$ac_pwd' +srcdir='$srcdir' +INSTALL='$INSTALL' +MKDIR_P='$MKDIR_P' +AWK='$AWK' +test -n "\$AWK" || AWK=awk +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +# The default lists apply if the user does not specify any file. +ac_need_defaults=: +while test $# != 0 +do + case $1 in + --*=?*) + ac_option=`expr "X$1" : 'X\([^=]*\)='` + ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'` + ac_shift=: + ;; + --*=) + ac_option=`expr "X$1" : 'X\([^=]*\)='` + ac_optarg= + ac_shift=: + ;; + *) + ac_option=$1 + ac_optarg=$2 + ac_shift=shift + ;; + esac + + case $ac_option in + # Handling of the options. + -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) + ac_cs_recheck=: ;; + --version | --versio | --versi | --vers | --ver | --ve | --v | -V ) + $as_echo "$ac_cs_version"; exit ;; + --config | --confi | --conf | --con | --co | --c ) + $as_echo "$ac_cs_config"; exit ;; + --debug | --debu | --deb | --de | --d | -d ) + debug=: ;; + --file | --fil | --fi | --f ) + $ac_shift + case $ac_optarg in + *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; + '') as_fn_error $? "missing file argument" ;; + esac + as_fn_append CONFIG_FILES " '$ac_optarg'" + ac_need_defaults=false;; + --he | --h | --help | --hel | -h ) + $as_echo "$ac_cs_usage"; exit ;; + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil | --si | --s) + ac_cs_silent=: ;; + + # This is an error. + -*) as_fn_error $? "unrecognized option: \`$1' +Try \`$0 --help' for more information." ;; + + *) as_fn_append ac_config_targets " $1" + ac_need_defaults=false ;; + + esac + shift +done + +ac_configure_extra_args= + +if $ac_cs_silent; then + exec 6>/dev/null + ac_configure_extra_args="$ac_configure_extra_args --silent" +fi + +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +if \$ac_cs_recheck; then + set X $SHELL '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion + shift + \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6 + CONFIG_SHELL='$SHELL' + export CONFIG_SHELL + exec "\$@" +fi + +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +exec 5>>config.log +{ + echo + sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX +## Running $as_me. ## +_ASBOX + $as_echo "$ac_log" +} >&5 + +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +# +# INIT-COMMANDS +# +AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir" + + +# The HP-UX ksh and POSIX shell print the target directory to stdout +# if CDPATH is set. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + +sed_quote_subst='$sed_quote_subst' +double_quote_subst='$double_quote_subst' +delay_variable_subst='$delay_variable_subst' +macro_version='`$ECHO "$macro_version" | $SED "$delay_single_quote_subst"`' +macro_revision='`$ECHO "$macro_revision" | $SED "$delay_single_quote_subst"`' +enable_shared='`$ECHO "$enable_shared" | $SED "$delay_single_quote_subst"`' +enable_static='`$ECHO "$enable_static" | $SED "$delay_single_quote_subst"`' +pic_mode='`$ECHO "$pic_mode" | $SED "$delay_single_quote_subst"`' +enable_fast_install='`$ECHO "$enable_fast_install" | $SED "$delay_single_quote_subst"`' +shared_archive_member_spec='`$ECHO "$shared_archive_member_spec" | $SED "$delay_single_quote_subst"`' +SHELL='`$ECHO "$SHELL" | $SED "$delay_single_quote_subst"`' +ECHO='`$ECHO "$ECHO" | $SED "$delay_single_quote_subst"`' +PATH_SEPARATOR='`$ECHO "$PATH_SEPARATOR" | $SED "$delay_single_quote_subst"`' +host_alias='`$ECHO "$host_alias" | $SED "$delay_single_quote_subst"`' +host='`$ECHO "$host" | $SED "$delay_single_quote_subst"`' +host_os='`$ECHO "$host_os" | $SED "$delay_single_quote_subst"`' +build_alias='`$ECHO "$build_alias" | $SED "$delay_single_quote_subst"`' +build='`$ECHO "$build" | $SED "$delay_single_quote_subst"`' +build_os='`$ECHO "$build_os" | $SED "$delay_single_quote_subst"`' +SED='`$ECHO "$SED" | $SED "$delay_single_quote_subst"`' +Xsed='`$ECHO "$Xsed" | $SED "$delay_single_quote_subst"`' +GREP='`$ECHO "$GREP" | $SED "$delay_single_quote_subst"`' +EGREP='`$ECHO "$EGREP" | $SED "$delay_single_quote_subst"`' +FGREP='`$ECHO "$FGREP" | $SED "$delay_single_quote_subst"`' +LD='`$ECHO "$LD" | $SED "$delay_single_quote_subst"`' +NM='`$ECHO "$NM" | $SED "$delay_single_quote_subst"`' +LN_S='`$ECHO "$LN_S" | $SED "$delay_single_quote_subst"`' +max_cmd_len='`$ECHO "$max_cmd_len" | $SED "$delay_single_quote_subst"`' +ac_objext='`$ECHO "$ac_objext" | $SED "$delay_single_quote_subst"`' +exeext='`$ECHO "$exeext" | $SED "$delay_single_quote_subst"`' +lt_unset='`$ECHO "$lt_unset" | $SED "$delay_single_quote_subst"`' +lt_SP2NL='`$ECHO "$lt_SP2NL" | $SED "$delay_single_quote_subst"`' +lt_NL2SP='`$ECHO "$lt_NL2SP" | $SED "$delay_single_quote_subst"`' +lt_cv_to_host_file_cmd='`$ECHO "$lt_cv_to_host_file_cmd" | $SED "$delay_single_quote_subst"`' +lt_cv_to_tool_file_cmd='`$ECHO "$lt_cv_to_tool_file_cmd" | $SED "$delay_single_quote_subst"`' +reload_flag='`$ECHO "$reload_flag" | $SED "$delay_single_quote_subst"`' +reload_cmds='`$ECHO "$reload_cmds" | $SED "$delay_single_quote_subst"`' +OBJDUMP='`$ECHO "$OBJDUMP" | $SED "$delay_single_quote_subst"`' +deplibs_check_method='`$ECHO "$deplibs_check_method" | $SED "$delay_single_quote_subst"`' +file_magic_cmd='`$ECHO "$file_magic_cmd" | $SED "$delay_single_quote_subst"`' +file_magic_glob='`$ECHO "$file_magic_glob" | $SED "$delay_single_quote_subst"`' +want_nocaseglob='`$ECHO "$want_nocaseglob" | $SED "$delay_single_quote_subst"`' +DLLTOOL='`$ECHO "$DLLTOOL" | $SED "$delay_single_quote_subst"`' +sharedlib_from_linklib_cmd='`$ECHO "$sharedlib_from_linklib_cmd" | $SED "$delay_single_quote_subst"`' +AR='`$ECHO "$AR" | $SED "$delay_single_quote_subst"`' +AR_FLAGS='`$ECHO "$AR_FLAGS" | $SED "$delay_single_quote_subst"`' +archiver_list_spec='`$ECHO "$archiver_list_spec" | $SED "$delay_single_quote_subst"`' +STRIP='`$ECHO "$STRIP" | $SED "$delay_single_quote_subst"`' +RANLIB='`$ECHO "$RANLIB" | $SED "$delay_single_quote_subst"`' +old_postinstall_cmds='`$ECHO "$old_postinstall_cmds" | $SED "$delay_single_quote_subst"`' +old_postuninstall_cmds='`$ECHO "$old_postuninstall_cmds" | $SED "$delay_single_quote_subst"`' +old_archive_cmds='`$ECHO "$old_archive_cmds" | $SED "$delay_single_quote_subst"`' +lock_old_archive_extraction='`$ECHO "$lock_old_archive_extraction" | $SED "$delay_single_quote_subst"`' +CC='`$ECHO "$CC" | $SED "$delay_single_quote_subst"`' +CFLAGS='`$ECHO "$CFLAGS" | $SED "$delay_single_quote_subst"`' +compiler='`$ECHO "$compiler" | $SED "$delay_single_quote_subst"`' +GCC='`$ECHO "$GCC" | $SED "$delay_single_quote_subst"`' +lt_cv_sys_global_symbol_pipe='`$ECHO "$lt_cv_sys_global_symbol_pipe" | $SED "$delay_single_quote_subst"`' +lt_cv_sys_global_symbol_to_cdecl='`$ECHO "$lt_cv_sys_global_symbol_to_cdecl" | $SED "$delay_single_quote_subst"`' +lt_cv_sys_global_symbol_to_import='`$ECHO "$lt_cv_sys_global_symbol_to_import" | $SED "$delay_single_quote_subst"`' +lt_cv_sys_global_symbol_to_c_name_address='`$ECHO "$lt_cv_sys_global_symbol_to_c_name_address" | $SED "$delay_single_quote_subst"`' +lt_cv_sys_global_symbol_to_c_name_address_lib_prefix='`$ECHO "$lt_cv_sys_global_symbol_to_c_name_address_lib_prefix" | $SED "$delay_single_quote_subst"`' +lt_cv_nm_interface='`$ECHO "$lt_cv_nm_interface" | $SED "$delay_single_quote_subst"`' +nm_file_list_spec='`$ECHO "$nm_file_list_spec" | $SED "$delay_single_quote_subst"`' +lt_sysroot='`$ECHO "$lt_sysroot" | $SED "$delay_single_quote_subst"`' +lt_cv_truncate_bin='`$ECHO "$lt_cv_truncate_bin" | $SED "$delay_single_quote_subst"`' +objdir='`$ECHO "$objdir" | $SED "$delay_single_quote_subst"`' +MAGIC_CMD='`$ECHO "$MAGIC_CMD" | $SED "$delay_single_quote_subst"`' +lt_prog_compiler_no_builtin_flag='`$ECHO "$lt_prog_compiler_no_builtin_flag" | $SED "$delay_single_quote_subst"`' +lt_prog_compiler_pic='`$ECHO "$lt_prog_compiler_pic" | $SED "$delay_single_quote_subst"`' +lt_prog_compiler_wl='`$ECHO "$lt_prog_compiler_wl" | $SED "$delay_single_quote_subst"`' +lt_prog_compiler_static='`$ECHO "$lt_prog_compiler_static" | $SED "$delay_single_quote_subst"`' +lt_cv_prog_compiler_c_o='`$ECHO "$lt_cv_prog_compiler_c_o" | $SED "$delay_single_quote_subst"`' +need_locks='`$ECHO "$need_locks" | $SED "$delay_single_quote_subst"`' +MANIFEST_TOOL='`$ECHO "$MANIFEST_TOOL" | $SED "$delay_single_quote_subst"`' +DSYMUTIL='`$ECHO "$DSYMUTIL" | $SED "$delay_single_quote_subst"`' +NMEDIT='`$ECHO "$NMEDIT" | $SED "$delay_single_quote_subst"`' +LIPO='`$ECHO "$LIPO" | $SED "$delay_single_quote_subst"`' +OTOOL='`$ECHO "$OTOOL" | $SED "$delay_single_quote_subst"`' +OTOOL64='`$ECHO "$OTOOL64" | $SED "$delay_single_quote_subst"`' +libext='`$ECHO "$libext" | $SED "$delay_single_quote_subst"`' +shrext_cmds='`$ECHO "$shrext_cmds" | $SED "$delay_single_quote_subst"`' +extract_expsyms_cmds='`$ECHO "$extract_expsyms_cmds" | $SED "$delay_single_quote_subst"`' +archive_cmds_need_lc='`$ECHO "$archive_cmds_need_lc" | $SED "$delay_single_quote_subst"`' +enable_shared_with_static_runtimes='`$ECHO "$enable_shared_with_static_runtimes" | $SED "$delay_single_quote_subst"`' +export_dynamic_flag_spec='`$ECHO "$export_dynamic_flag_spec" | $SED "$delay_single_quote_subst"`' +whole_archive_flag_spec='`$ECHO "$whole_archive_flag_spec" | $SED "$delay_single_quote_subst"`' +compiler_needs_object='`$ECHO "$compiler_needs_object" | $SED "$delay_single_quote_subst"`' +old_archive_from_new_cmds='`$ECHO "$old_archive_from_new_cmds" | $SED "$delay_single_quote_subst"`' +old_archive_from_expsyms_cmds='`$ECHO "$old_archive_from_expsyms_cmds" | $SED "$delay_single_quote_subst"`' +archive_cmds='`$ECHO "$archive_cmds" | $SED "$delay_single_quote_subst"`' +archive_expsym_cmds='`$ECHO "$archive_expsym_cmds" | $SED "$delay_single_quote_subst"`' +module_cmds='`$ECHO "$module_cmds" | $SED "$delay_single_quote_subst"`' +module_expsym_cmds='`$ECHO "$module_expsym_cmds" | $SED "$delay_single_quote_subst"`' +with_gnu_ld='`$ECHO "$with_gnu_ld" | $SED "$delay_single_quote_subst"`' +allow_undefined_flag='`$ECHO "$allow_undefined_flag" | $SED "$delay_single_quote_subst"`' +no_undefined_flag='`$ECHO "$no_undefined_flag" | $SED "$delay_single_quote_subst"`' +hardcode_libdir_flag_spec='`$ECHO "$hardcode_libdir_flag_spec" | $SED "$delay_single_quote_subst"`' +hardcode_libdir_separator='`$ECHO "$hardcode_libdir_separator" | $SED "$delay_single_quote_subst"`' +hardcode_direct='`$ECHO "$hardcode_direct" | $SED "$delay_single_quote_subst"`' +hardcode_direct_absolute='`$ECHO "$hardcode_direct_absolute" | $SED "$delay_single_quote_subst"`' +hardcode_minus_L='`$ECHO "$hardcode_minus_L" | $SED "$delay_single_quote_subst"`' +hardcode_shlibpath_var='`$ECHO "$hardcode_shlibpath_var" | $SED "$delay_single_quote_subst"`' +hardcode_automatic='`$ECHO "$hardcode_automatic" | $SED "$delay_single_quote_subst"`' +inherit_rpath='`$ECHO "$inherit_rpath" | $SED "$delay_single_quote_subst"`' +link_all_deplibs='`$ECHO "$link_all_deplibs" | $SED "$delay_single_quote_subst"`' +always_export_symbols='`$ECHO "$always_export_symbols" | $SED "$delay_single_quote_subst"`' +export_symbols_cmds='`$ECHO "$export_symbols_cmds" | $SED "$delay_single_quote_subst"`' +exclude_expsyms='`$ECHO "$exclude_expsyms" | $SED "$delay_single_quote_subst"`' +include_expsyms='`$ECHO "$include_expsyms" | $SED "$delay_single_quote_subst"`' +prelink_cmds='`$ECHO "$prelink_cmds" | $SED "$delay_single_quote_subst"`' +postlink_cmds='`$ECHO "$postlink_cmds" | $SED "$delay_single_quote_subst"`' +file_list_spec='`$ECHO "$file_list_spec" | $SED "$delay_single_quote_subst"`' +variables_saved_for_relink='`$ECHO "$variables_saved_for_relink" | $SED "$delay_single_quote_subst"`' +need_lib_prefix='`$ECHO "$need_lib_prefix" | $SED "$delay_single_quote_subst"`' +need_version='`$ECHO "$need_version" | $SED "$delay_single_quote_subst"`' +version_type='`$ECHO "$version_type" | $SED "$delay_single_quote_subst"`' +runpath_var='`$ECHO "$runpath_var" | $SED "$delay_single_quote_subst"`' +shlibpath_var='`$ECHO "$shlibpath_var" | $SED "$delay_single_quote_subst"`' +shlibpath_overrides_runpath='`$ECHO "$shlibpath_overrides_runpath" | $SED "$delay_single_quote_subst"`' +libname_spec='`$ECHO "$libname_spec" | $SED "$delay_single_quote_subst"`' +library_names_spec='`$ECHO "$library_names_spec" | $SED "$delay_single_quote_subst"`' +soname_spec='`$ECHO "$soname_spec" | $SED "$delay_single_quote_subst"`' +install_override_mode='`$ECHO "$install_override_mode" | $SED "$delay_single_quote_subst"`' +postinstall_cmds='`$ECHO "$postinstall_cmds" | $SED "$delay_single_quote_subst"`' +postuninstall_cmds='`$ECHO "$postuninstall_cmds" | $SED "$delay_single_quote_subst"`' +finish_cmds='`$ECHO "$finish_cmds" | $SED "$delay_single_quote_subst"`' +finish_eval='`$ECHO "$finish_eval" | $SED "$delay_single_quote_subst"`' +hardcode_into_libs='`$ECHO "$hardcode_into_libs" | $SED "$delay_single_quote_subst"`' +sys_lib_search_path_spec='`$ECHO "$sys_lib_search_path_spec" | $SED "$delay_single_quote_subst"`' +configure_time_dlsearch_path='`$ECHO "$configure_time_dlsearch_path" | $SED "$delay_single_quote_subst"`' +configure_time_lt_sys_library_path='`$ECHO "$configure_time_lt_sys_library_path" | $SED "$delay_single_quote_subst"`' +hardcode_action='`$ECHO "$hardcode_action" | $SED "$delay_single_quote_subst"`' +enable_dlopen='`$ECHO "$enable_dlopen" | $SED "$delay_single_quote_subst"`' +enable_dlopen_self='`$ECHO "$enable_dlopen_self" | $SED "$delay_single_quote_subst"`' +enable_dlopen_self_static='`$ECHO "$enable_dlopen_self_static" | $SED "$delay_single_quote_subst"`' +old_striplib='`$ECHO "$old_striplib" | $SED "$delay_single_quote_subst"`' +striplib='`$ECHO "$striplib" | $SED "$delay_single_quote_subst"`' +compiler_lib_search_dirs='`$ECHO "$compiler_lib_search_dirs" | $SED "$delay_single_quote_subst"`' +predep_objects='`$ECHO "$predep_objects" | $SED "$delay_single_quote_subst"`' +postdep_objects='`$ECHO "$postdep_objects" | $SED "$delay_single_quote_subst"`' +predeps='`$ECHO "$predeps" | $SED "$delay_single_quote_subst"`' +postdeps='`$ECHO "$postdeps" | $SED "$delay_single_quote_subst"`' +compiler_lib_search_path='`$ECHO "$compiler_lib_search_path" | $SED "$delay_single_quote_subst"`' +LD_CXX='`$ECHO "$LD_CXX" | $SED "$delay_single_quote_subst"`' +reload_flag_CXX='`$ECHO "$reload_flag_CXX" | $SED "$delay_single_quote_subst"`' +reload_cmds_CXX='`$ECHO "$reload_cmds_CXX" | $SED "$delay_single_quote_subst"`' +old_archive_cmds_CXX='`$ECHO "$old_archive_cmds_CXX" | $SED "$delay_single_quote_subst"`' +compiler_CXX='`$ECHO "$compiler_CXX" | $SED "$delay_single_quote_subst"`' +GCC_CXX='`$ECHO "$GCC_CXX" | $SED "$delay_single_quote_subst"`' +lt_prog_compiler_no_builtin_flag_CXX='`$ECHO "$lt_prog_compiler_no_builtin_flag_CXX" | $SED "$delay_single_quote_subst"`' +lt_prog_compiler_pic_CXX='`$ECHO "$lt_prog_compiler_pic_CXX" | $SED "$delay_single_quote_subst"`' +lt_prog_compiler_wl_CXX='`$ECHO "$lt_prog_compiler_wl_CXX" | $SED "$delay_single_quote_subst"`' +lt_prog_compiler_static_CXX='`$ECHO "$lt_prog_compiler_static_CXX" | $SED "$delay_single_quote_subst"`' +lt_cv_prog_compiler_c_o_CXX='`$ECHO "$lt_cv_prog_compiler_c_o_CXX" | $SED "$delay_single_quote_subst"`' +archive_cmds_need_lc_CXX='`$ECHO "$archive_cmds_need_lc_CXX" | $SED "$delay_single_quote_subst"`' +enable_shared_with_static_runtimes_CXX='`$ECHO "$enable_shared_with_static_runtimes_CXX" | $SED "$delay_single_quote_subst"`' +export_dynamic_flag_spec_CXX='`$ECHO "$export_dynamic_flag_spec_CXX" | $SED "$delay_single_quote_subst"`' +whole_archive_flag_spec_CXX='`$ECHO "$whole_archive_flag_spec_CXX" | $SED "$delay_single_quote_subst"`' +compiler_needs_object_CXX='`$ECHO "$compiler_needs_object_CXX" | $SED "$delay_single_quote_subst"`' +old_archive_from_new_cmds_CXX='`$ECHO "$old_archive_from_new_cmds_CXX" | $SED "$delay_single_quote_subst"`' +old_archive_from_expsyms_cmds_CXX='`$ECHO "$old_archive_from_expsyms_cmds_CXX" | $SED "$delay_single_quote_subst"`' +archive_cmds_CXX='`$ECHO "$archive_cmds_CXX" | $SED "$delay_single_quote_subst"`' +archive_expsym_cmds_CXX='`$ECHO "$archive_expsym_cmds_CXX" | $SED "$delay_single_quote_subst"`' +module_cmds_CXX='`$ECHO "$module_cmds_CXX" | $SED "$delay_single_quote_subst"`' +module_expsym_cmds_CXX='`$ECHO "$module_expsym_cmds_CXX" | $SED "$delay_single_quote_subst"`' +with_gnu_ld_CXX='`$ECHO "$with_gnu_ld_CXX" | $SED "$delay_single_quote_subst"`' +allow_undefined_flag_CXX='`$ECHO "$allow_undefined_flag_CXX" | $SED "$delay_single_quote_subst"`' +no_undefined_flag_CXX='`$ECHO "$no_undefined_flag_CXX" | $SED "$delay_single_quote_subst"`' +hardcode_libdir_flag_spec_CXX='`$ECHO "$hardcode_libdir_flag_spec_CXX" | $SED "$delay_single_quote_subst"`' +hardcode_libdir_separator_CXX='`$ECHO "$hardcode_libdir_separator_CXX" | $SED "$delay_single_quote_subst"`' +hardcode_direct_CXX='`$ECHO "$hardcode_direct_CXX" | $SED "$delay_single_quote_subst"`' +hardcode_direct_absolute_CXX='`$ECHO "$hardcode_direct_absolute_CXX" | $SED "$delay_single_quote_subst"`' +hardcode_minus_L_CXX='`$ECHO "$hardcode_minus_L_CXX" | $SED "$delay_single_quote_subst"`' +hardcode_shlibpath_var_CXX='`$ECHO "$hardcode_shlibpath_var_CXX" | $SED "$delay_single_quote_subst"`' +hardcode_automatic_CXX='`$ECHO "$hardcode_automatic_CXX" | $SED "$delay_single_quote_subst"`' +inherit_rpath_CXX='`$ECHO "$inherit_rpath_CXX" | $SED "$delay_single_quote_subst"`' +link_all_deplibs_CXX='`$ECHO "$link_all_deplibs_CXX" | $SED "$delay_single_quote_subst"`' +always_export_symbols_CXX='`$ECHO "$always_export_symbols_CXX" | $SED "$delay_single_quote_subst"`' +export_symbols_cmds_CXX='`$ECHO "$export_symbols_cmds_CXX" | $SED "$delay_single_quote_subst"`' +exclude_expsyms_CXX='`$ECHO "$exclude_expsyms_CXX" | $SED "$delay_single_quote_subst"`' +include_expsyms_CXX='`$ECHO "$include_expsyms_CXX" | $SED "$delay_single_quote_subst"`' +prelink_cmds_CXX='`$ECHO "$prelink_cmds_CXX" | $SED "$delay_single_quote_subst"`' +postlink_cmds_CXX='`$ECHO "$postlink_cmds_CXX" | $SED "$delay_single_quote_subst"`' +file_list_spec_CXX='`$ECHO "$file_list_spec_CXX" | $SED "$delay_single_quote_subst"`' +hardcode_action_CXX='`$ECHO "$hardcode_action_CXX" | $SED "$delay_single_quote_subst"`' +compiler_lib_search_dirs_CXX='`$ECHO "$compiler_lib_search_dirs_CXX" | $SED "$delay_single_quote_subst"`' +predep_objects_CXX='`$ECHO "$predep_objects_CXX" | $SED "$delay_single_quote_subst"`' +postdep_objects_CXX='`$ECHO "$postdep_objects_CXX" | $SED "$delay_single_quote_subst"`' +predeps_CXX='`$ECHO "$predeps_CXX" | $SED "$delay_single_quote_subst"`' +postdeps_CXX='`$ECHO "$postdeps_CXX" | $SED "$delay_single_quote_subst"`' +compiler_lib_search_path_CXX='`$ECHO "$compiler_lib_search_path_CXX" | $SED "$delay_single_quote_subst"`' + +LTCC='$LTCC' +LTCFLAGS='$LTCFLAGS' +compiler='$compiler_DEFAULT' + +# A function that is used when there is no print builtin or printf. +func_fallback_echo () +{ + eval 'cat <<_LTECHO_EOF +\$1 +_LTECHO_EOF' +} + +# Quote evaled strings. +for var in SHELL \ +ECHO \ +PATH_SEPARATOR \ +SED \ +GREP \ +EGREP \ +FGREP \ +LD \ +NM \ +LN_S \ +lt_SP2NL \ +lt_NL2SP \ +reload_flag \ +OBJDUMP \ +deplibs_check_method \ +file_magic_cmd \ +file_magic_glob \ +want_nocaseglob \ +DLLTOOL \ +sharedlib_from_linklib_cmd \ +AR \ +AR_FLAGS \ +archiver_list_spec \ +STRIP \ +RANLIB \ +CC \ +CFLAGS \ +compiler \ +lt_cv_sys_global_symbol_pipe \ +lt_cv_sys_global_symbol_to_cdecl \ +lt_cv_sys_global_symbol_to_import \ +lt_cv_sys_global_symbol_to_c_name_address \ +lt_cv_sys_global_symbol_to_c_name_address_lib_prefix \ +lt_cv_nm_interface \ +nm_file_list_spec \ +lt_cv_truncate_bin \ +lt_prog_compiler_no_builtin_flag \ +lt_prog_compiler_pic \ +lt_prog_compiler_wl \ +lt_prog_compiler_static \ +lt_cv_prog_compiler_c_o \ +need_locks \ +MANIFEST_TOOL \ +DSYMUTIL \ +NMEDIT \ +LIPO \ +OTOOL \ +OTOOL64 \ +shrext_cmds \ +export_dynamic_flag_spec \ +whole_archive_flag_spec \ +compiler_needs_object \ +with_gnu_ld \ +allow_undefined_flag \ +no_undefined_flag \ +hardcode_libdir_flag_spec \ +hardcode_libdir_separator \ +exclude_expsyms \ +include_expsyms \ +file_list_spec \ +variables_saved_for_relink \ +libname_spec \ +library_names_spec \ +soname_spec \ +install_override_mode \ +finish_eval \ +old_striplib \ +striplib \ +compiler_lib_search_dirs \ +predep_objects \ +postdep_objects \ +predeps \ +postdeps \ +compiler_lib_search_path \ +LD_CXX \ +reload_flag_CXX \ +compiler_CXX \ +lt_prog_compiler_no_builtin_flag_CXX \ +lt_prog_compiler_pic_CXX \ +lt_prog_compiler_wl_CXX \ +lt_prog_compiler_static_CXX \ +lt_cv_prog_compiler_c_o_CXX \ +export_dynamic_flag_spec_CXX \ +whole_archive_flag_spec_CXX \ +compiler_needs_object_CXX \ +with_gnu_ld_CXX \ +allow_undefined_flag_CXX \ +no_undefined_flag_CXX \ +hardcode_libdir_flag_spec_CXX \ +hardcode_libdir_separator_CXX \ +exclude_expsyms_CXX \ +include_expsyms_CXX \ +file_list_spec_CXX \ +compiler_lib_search_dirs_CXX \ +predep_objects_CXX \ +postdep_objects_CXX \ +predeps_CXX \ +postdeps_CXX \ +compiler_lib_search_path_CXX; do + case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in + *[\\\\\\\`\\"\\\$]*) + eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED \\"\\\$sed_quote_subst\\"\\\`\\\\\\"" ## exclude from sc_prohibit_nested_quotes + ;; + *) + eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" + ;; + esac +done + +# Double-quote double-evaled strings. +for var in reload_cmds \ +old_postinstall_cmds \ +old_postuninstall_cmds \ +old_archive_cmds \ +extract_expsyms_cmds \ +old_archive_from_new_cmds \ +old_archive_from_expsyms_cmds \ +archive_cmds \ +archive_expsym_cmds \ +module_cmds \ +module_expsym_cmds \ +export_symbols_cmds \ +prelink_cmds \ +postlink_cmds \ +postinstall_cmds \ +postuninstall_cmds \ +finish_cmds \ +sys_lib_search_path_spec \ +configure_time_dlsearch_path \ +configure_time_lt_sys_library_path \ +reload_cmds_CXX \ +old_archive_cmds_CXX \ +old_archive_from_new_cmds_CXX \ +old_archive_from_expsyms_cmds_CXX \ +archive_cmds_CXX \ +archive_expsym_cmds_CXX \ +module_cmds_CXX \ +module_expsym_cmds_CXX \ +export_symbols_cmds_CXX \ +prelink_cmds_CXX \ +postlink_cmds_CXX; do + case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in + *[\\\\\\\`\\"\\\$]*) + eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\"" ## exclude from sc_prohibit_nested_quotes + ;; + *) + eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" + ;; + esac +done + +ac_aux_dir='$ac_aux_dir' + +# See if we are running on zsh, and set the options that allow our +# commands through without removal of \ escapes INIT. +if test -n "\${ZSH_VERSION+set}"; then + setopt NO_GLOB_SUBST +fi + + + PACKAGE='$PACKAGE' + VERSION='$VERSION' + RM='$RM' + ofile='$ofile' + + + + + + +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 + +# Handling of arguments. +for ac_config_target in $ac_config_targets +do + case $ac_config_target in + "depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;; + "libtool") CONFIG_COMMANDS="$CONFIG_COMMANDS libtool" ;; + "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; + "contrib/Makefile") CONFIG_FILES="$CONFIG_FILES contrib/Makefile" ;; + "shapelib.pc") CONFIG_FILES="$CONFIG_FILES shapelib.pc" ;; + + *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;; + esac +done + + +# If the user did not use the arguments to specify the items to instantiate, +# then the envvar interface is used. Set only those that are not. +# We use the long form for the default assignment because of an extremely +# bizarre bug on SunOS 4.1.3. +if $ac_need_defaults; then + test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files + test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands +fi + +# Have a temporary directory for convenience. Make it in the build tree +# simply because there is no reason against having it here, and in addition, +# creating and moving files from /tmp can sometimes cause problems. +# Hook for its removal unless debugging. +# Note that there is a small window in which the directory will not be cleaned: +# after its creation but before its name has been assigned to `$tmp'. +$debug || +{ + tmp= ac_tmp= + trap 'exit_status=$? + : "${ac_tmp:=$tmp}" + { test ! -d "$ac_tmp" || rm -fr "$ac_tmp"; } && exit $exit_status +' 0 + trap 'as_fn_exit 1' 1 2 13 15 +} +# Create a (secure) tmp directory for tmp files. + +{ + tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` && + test -d "$tmp" +} || +{ + tmp=./conf$$-$RANDOM + (umask 077 && mkdir "$tmp") +} || as_fn_error $? "cannot create a temporary directory in ." "$LINENO" 5 +ac_tmp=$tmp + +# Set up the scripts for CONFIG_FILES section. +# No need to generate them if there are no CONFIG_FILES. +# This happens for instance with `./config.status config.h'. +if test -n "$CONFIG_FILES"; then + + +ac_cr=`echo X | tr X '\015'` +# On cygwin, bash can eat \r inside `` if the user requested igncr. +# But we know of no other shell where ac_cr would be empty at this +# point, so we can use a bashism as a fallback. +if test "x$ac_cr" = x; then + eval ac_cr=\$\'\\r\' +fi +ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' /dev/null` +if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then + ac_cs_awk_cr='\\r' +else + ac_cs_awk_cr=$ac_cr +fi + +echo 'BEGIN {' >"$ac_tmp/subs1.awk" && +_ACEOF + + +{ + echo "cat >conf$$subs.awk <<_ACEOF" && + echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' && + echo "_ACEOF" +} >conf$$subs.sh || + as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 +ac_delim_num=`echo "$ac_subst_vars" | grep -c '^'` +ac_delim='%!_!# ' +for ac_last_try in false false false false false :; do + . ./conf$$subs.sh || + as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 + + ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X` + if test $ac_delim_n = $ac_delim_num; then + break + elif $ac_last_try; then + as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 + else + ac_delim="$ac_delim!$ac_delim _$ac_delim!! " + fi +done +rm -f conf$$subs.sh + +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +cat >>"\$ac_tmp/subs1.awk" <<\\_ACAWK && +_ACEOF +sed -n ' +h +s/^/S["/; s/!.*/"]=/ +p +g +s/^[^!]*!// +:repl +t repl +s/'"$ac_delim"'$// +t delim +:nl +h +s/\(.\{148\}\)..*/\1/ +t more1 +s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/ +p +n +b repl +:more1 +s/["\\]/\\&/g; s/^/"/; s/$/"\\/ +p +g +s/.\{148\}// +t nl +:delim +h +s/\(.\{148\}\)..*/\1/ +t more2 +s/["\\]/\\&/g; s/^/"/; s/$/"/ +p +b +:more2 +s/["\\]/\\&/g; s/^/"/; s/$/"\\/ +p +g +s/.\{148\}// +t delim +' >$CONFIG_STATUS || ac_write_fail=1 +rm -f conf$$subs.awk +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +_ACAWK +cat >>"\$ac_tmp/subs1.awk" <<_ACAWK && + for (key in S) S_is_set[key] = 1 + FS = "" + +} +{ + line = $ 0 + nfields = split(line, field, "@") + substed = 0 + len = length(field[1]) + for (i = 2; i < nfields; i++) { + key = field[i] + keylen = length(key) + if (S_is_set[key]) { + value = S[key] + line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3) + len += length(value) + length(field[++i]) + substed = 1 + } else + len += 1 + keylen + } + + print line +} + +_ACAWK +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then + sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g" +else + cat +fi < "$ac_tmp/subs1.awk" > "$ac_tmp/subs.awk" \ + || as_fn_error $? "could not setup config files machinery" "$LINENO" 5 +_ACEOF + +# VPATH may cause trouble with some makes, so we remove sole $(srcdir), +# ${srcdir} and @srcdir@ entries from VPATH if srcdir is ".", strip leading and +# trailing colons and then remove the whole line if VPATH becomes empty +# (actually we leave an empty line to preserve line numbers). +if test "x$srcdir" = x.; then + ac_vpsub='/^[ ]*VPATH[ ]*=[ ]*/{ +h +s/// +s/^/:/ +s/[ ]*$/:/ +s/:\$(srcdir):/:/g +s/:\${srcdir}:/:/g +s/:@srcdir@:/:/g +s/^:*// +s/:*$// +x +s/\(=[ ]*\).*/\1/ +G +s/\n// +s/^[^=]*=[ ]*$// +}' +fi + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +fi # test -n "$CONFIG_FILES" + + +eval set X " :F $CONFIG_FILES :C $CONFIG_COMMANDS" +shift +for ac_tag +do + case $ac_tag in + :[FHLC]) ac_mode=$ac_tag; continue;; + esac + case $ac_mode$ac_tag in + :[FHL]*:*);; + :L* | :C*:*) as_fn_error $? "invalid tag \`$ac_tag'" "$LINENO" 5;; + :[FH]-) ac_tag=-:-;; + :[FH]*) ac_tag=$ac_tag:$ac_tag.in;; + esac + ac_save_IFS=$IFS + IFS=: + set x $ac_tag + IFS=$ac_save_IFS + shift + ac_file=$1 + shift + + case $ac_mode in + :L) ac_source=$1;; + :[FH]) + ac_file_inputs= + for ac_f + do + case $ac_f in + -) ac_f="$ac_tmp/stdin";; + *) # Look for the file first in the build tree, then in the source tree + # (if the path is not absolute). The absolute path cannot be DOS-style, + # because $ac_f cannot contain `:'. + test -f "$ac_f" || + case $ac_f in + [\\/$]*) false;; + *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";; + esac || + as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5;; + esac + case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac + as_fn_append ac_file_inputs " '$ac_f'" + done + + # Let's still pretend it is `configure' which instantiates (i.e., don't + # use $as_me), people would be surprised to read: + # /* config.h. Generated by config.status. */ + configure_input='Generated from '` + $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g' + `' by configure.' + if test x"$ac_file" != x-; then + configure_input="$ac_file. $configure_input" + { $as_echo "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5 +$as_echo "$as_me: creating $ac_file" >&6;} + fi + # Neutralize special characters interpreted by sed in replacement strings. + case $configure_input in #( + *\&* | *\|* | *\\* ) + ac_sed_conf_input=`$as_echo "$configure_input" | + sed 's/[\\\\&|]/\\\\&/g'`;; #( + *) ac_sed_conf_input=$configure_input;; + esac + + case $ac_tag in + *:-:* | *:-) cat >"$ac_tmp/stdin" \ + || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; + esac + ;; + esac + + ac_dir=`$as_dirname -- "$ac_file" || +$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$ac_file" : 'X\(//\)[^/]' \| \ + X"$ac_file" : 'X\(//\)$' \| \ + X"$ac_file" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$ac_file" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + as_dir="$ac_dir"; as_fn_mkdir_p + ac_builddir=. + +case "$ac_dir" in +.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; +*) + ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` + # A ".." for each directory in $ac_dir_suffix. + ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` + case $ac_top_builddir_sub in + "") ac_top_builddir_sub=. ac_top_build_prefix= ;; + *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; + esac ;; +esac +ac_abs_top_builddir=$ac_pwd +ac_abs_builddir=$ac_pwd$ac_dir_suffix +# for backward compatibility: +ac_top_builddir=$ac_top_build_prefix + +case $srcdir in + .) # We are building in place. + ac_srcdir=. + ac_top_srcdir=$ac_top_builddir_sub + ac_abs_top_srcdir=$ac_pwd ;; + [\\/]* | ?:[\\/]* ) # Absolute name. + ac_srcdir=$srcdir$ac_dir_suffix; + ac_top_srcdir=$srcdir + ac_abs_top_srcdir=$srcdir ;; + *) # Relative name. + ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix + ac_top_srcdir=$ac_top_build_prefix$srcdir + ac_abs_top_srcdir=$ac_pwd/$srcdir ;; +esac +ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix + + + case $ac_mode in + :F) + # + # CONFIG_FILE + # + + case $INSTALL in + [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; + *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;; + esac + ac_MKDIR_P=$MKDIR_P + case $MKDIR_P in + [\\/$]* | ?:[\\/]* ) ;; + */*) ac_MKDIR_P=$ac_top_build_prefix$MKDIR_P ;; + esac +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +# If the template does not know about datarootdir, expand it. +# FIXME: This hack should be removed a few years after 2.60. +ac_datarootdir_hack=; ac_datarootdir_seen= +ac_sed_dataroot=' +/datarootdir/ { + p + q +} +/@datadir@/p +/@docdir@/p +/@infodir@/p +/@localedir@/p +/@mandir@/p' +case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in +*datarootdir*) ac_datarootdir_seen=yes;; +*@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*) + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 +$as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 + ac_datarootdir_hack=' + s&@datadir@&$datadir&g + s&@docdir@&$docdir&g + s&@infodir@&$infodir&g + s&@localedir@&$localedir&g + s&@mandir@&$mandir&g + s&\\\${datarootdir}&$datarootdir&g' ;; +esac +_ACEOF + +# Neutralize VPATH when `$srcdir' = `.'. +# Shell code in configure.ac might set extrasub. +# FIXME: do we really want to maintain this feature? +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +ac_sed_extra="$ac_vpsub +$extrasub +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +:t +/@[a-zA-Z_][a-zA-Z_0-9]*@/!b +s|@configure_input@|$ac_sed_conf_input|;t t +s&@top_builddir@&$ac_top_builddir_sub&;t t +s&@top_build_prefix@&$ac_top_build_prefix&;t t +s&@srcdir@&$ac_srcdir&;t t +s&@abs_srcdir@&$ac_abs_srcdir&;t t +s&@top_srcdir@&$ac_top_srcdir&;t t +s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t +s&@builddir@&$ac_builddir&;t t +s&@abs_builddir@&$ac_abs_builddir&;t t +s&@abs_top_builddir@&$ac_abs_top_builddir&;t t +s&@INSTALL@&$ac_INSTALL&;t t +s&@MKDIR_P@&$ac_MKDIR_P&;t t +$ac_datarootdir_hack +" +eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$ac_tmp/subs.awk" \ + >$ac_tmp/out || as_fn_error $? "could not create $ac_file" "$LINENO" 5 + +test -z "$ac_datarootdir_hack$ac_datarootdir_seen" && + { ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } && + { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' \ + "$ac_tmp/out"`; test -z "$ac_out"; } && + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir' +which seems to be undefined. Please make sure it is defined" >&5 +$as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir' +which seems to be undefined. Please make sure it is defined" >&2;} + + rm -f "$ac_tmp/stdin" + case $ac_file in + -) cat "$ac_tmp/out" && rm -f "$ac_tmp/out";; + *) rm -f "$ac_file" && mv "$ac_tmp/out" "$ac_file";; + esac \ + || as_fn_error $? "could not create $ac_file" "$LINENO" 5 + ;; + + + :C) { $as_echo "$as_me:${as_lineno-$LINENO}: executing $ac_file commands" >&5 +$as_echo "$as_me: executing $ac_file commands" >&6;} + ;; + esac + + + case $ac_file$ac_mode in + "depfiles":C) test x"$AMDEP_TRUE" != x"" || { + # Older Autoconf quotes --file arguments for eval, but not when files + # are listed without --file. Let's play safe and only enable the eval + # if we detect the quoting. + case $CONFIG_FILES in + *\'*) eval set x "$CONFIG_FILES" ;; + *) set x $CONFIG_FILES ;; + esac + shift + for mf + do + # Strip MF so we end up with the name of the file. + mf=`echo "$mf" | sed -e 's/:.*$//'` + # Check whether this is an Automake generated Makefile or not. + # We used to match only the files named 'Makefile.in', but + # some people rename them; so instead we look at the file content. + # Grep'ing the first line is not enough: some people post-process + # each Makefile.in and add a new line on top of each file to say so. + # Grep'ing the whole file is not good either: AIX grep has a line + # limit of 2048, but all sed's we know have understand at least 4000. + if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then + dirpart=`$as_dirname -- "$mf" || +$as_expr X"$mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$mf" : 'X\(//\)[^/]' \| \ + X"$mf" : 'X\(//\)$' \| \ + X"$mf" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$mf" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + else + continue + fi + # Extract the definition of DEPDIR, am__include, and am__quote + # from the Makefile without running 'make'. + DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` + test -z "$DEPDIR" && continue + am__include=`sed -n 's/^am__include = //p' < "$mf"` + test -z "$am__include" && continue + am__quote=`sed -n 's/^am__quote = //p' < "$mf"` + # Find all dependency output files, they are included files with + # $(DEPDIR) in their names. We invoke sed twice because it is the + # simplest approach to changing $(DEPDIR) to its actual value in the + # expansion. + for file in `sed -n " + s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ + sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g'`; do + # Make sure the directory exists. + test -f "$dirpart/$file" && continue + fdir=`$as_dirname -- "$file" || +$as_expr X"$file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$file" : 'X\(//\)[^/]' \| \ + X"$file" : 'X\(//\)$' \| \ + X"$file" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$file" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + as_dir=$dirpart/$fdir; as_fn_mkdir_p + # echo "creating $dirpart/$file" + echo '# dummy' > "$dirpart/$file" + done + done +} + ;; + "libtool":C) + + # See if we are running on zsh, and set the options that allow our + # commands through without removal of \ escapes. + if test -n "${ZSH_VERSION+set}"; then + setopt NO_GLOB_SUBST + fi + + cfgfile=${ofile}T + trap "$RM \"$cfgfile\"; exit 1" 1 2 15 + $RM "$cfgfile" + + cat <<_LT_EOF >> "$cfgfile" +#! $SHELL +# Generated automatically by $as_me ($PACKAGE) $VERSION +# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: +# NOTE: Changes made to this file will be lost: look at ltmain.sh. + +# Provide generalized library-building support services. +# Written by Gordon Matzigkeit, 1996 + +# Copyright (C) 2014 Free Software Foundation, Inc. +# This is free software; see the source for copying conditions. There is NO +# warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + +# GNU Libtool is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of of the License, or +# (at your option) any later version. +# +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program or library that is built +# using GNU Libtool, you may include this file under the same +# distribution terms that you use for the rest of that program. +# +# GNU Libtool is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + + +# The names of the tagged configurations supported by this script. +available_tags='CXX ' + +# Configured defaults for sys_lib_dlsearch_path munging. +: \${LT_SYS_LIBRARY_PATH="$configure_time_lt_sys_library_path"} + +# ### BEGIN LIBTOOL CONFIG + +# Which release of libtool.m4 was used? +macro_version=$macro_version +macro_revision=$macro_revision + +# Whether or not to build shared libraries. +build_libtool_libs=$enable_shared + +# Whether or not to build static libraries. +build_old_libs=$enable_static + +# What type of objects to build. +pic_mode=$pic_mode + +# Whether or not to optimize for fast installation. +fast_install=$enable_fast_install + +# Shared archive member basename,for filename based shared library versioning on AIX. +shared_archive_member_spec=$shared_archive_member_spec + +# Shell to use when invoking shell scripts. +SHELL=$lt_SHELL + +# An echo program that protects backslashes. +ECHO=$lt_ECHO + +# The PATH separator for the build system. +PATH_SEPARATOR=$lt_PATH_SEPARATOR + +# The host system. +host_alias=$host_alias +host=$host +host_os=$host_os + +# The build system. +build_alias=$build_alias +build=$build +build_os=$build_os + +# A sed program that does not truncate output. +SED=$lt_SED + +# Sed that helps us avoid accidentally triggering echo(1) options like -n. +Xsed="\$SED -e 1s/^X//" + +# A grep program that handles long lines. +GREP=$lt_GREP + +# An ERE matcher. +EGREP=$lt_EGREP + +# A literal string matcher. +FGREP=$lt_FGREP + +# A BSD- or MS-compatible name lister. +NM=$lt_NM + +# Whether we need soft or hard links. +LN_S=$lt_LN_S + +# What is the maximum length of a command? +max_cmd_len=$max_cmd_len + +# Object file suffix (normally "o"). +objext=$ac_objext + +# Executable file suffix (normally ""). +exeext=$exeext + +# whether the shell understands "unset". +lt_unset=$lt_unset + +# turn spaces into newlines. +SP2NL=$lt_lt_SP2NL + +# turn newlines into spaces. +NL2SP=$lt_lt_NL2SP + +# convert \$build file names to \$host format. +to_host_file_cmd=$lt_cv_to_host_file_cmd + +# convert \$build files to toolchain format. +to_tool_file_cmd=$lt_cv_to_tool_file_cmd + +# An object symbol dumper. +OBJDUMP=$lt_OBJDUMP + +# Method to check whether dependent libraries are shared objects. +deplibs_check_method=$lt_deplibs_check_method + +# Command to use when deplibs_check_method = "file_magic". +file_magic_cmd=$lt_file_magic_cmd + +# How to find potential files when deplibs_check_method = "file_magic". +file_magic_glob=$lt_file_magic_glob + +# Find potential files using nocaseglob when deplibs_check_method = "file_magic". +want_nocaseglob=$lt_want_nocaseglob + +# DLL creation program. +DLLTOOL=$lt_DLLTOOL + +# Command to associate shared and link libraries. +sharedlib_from_linklib_cmd=$lt_sharedlib_from_linklib_cmd + +# The archiver. +AR=$lt_AR + +# Flags to create an archive. +AR_FLAGS=$lt_AR_FLAGS + +# How to feed a file listing to the archiver. +archiver_list_spec=$lt_archiver_list_spec + +# A symbol stripping program. +STRIP=$lt_STRIP + +# Commands used to install an old-style archive. +RANLIB=$lt_RANLIB +old_postinstall_cmds=$lt_old_postinstall_cmds +old_postuninstall_cmds=$lt_old_postuninstall_cmds + +# Whether to use a lock for old archive extraction. +lock_old_archive_extraction=$lock_old_archive_extraction + +# A C compiler. +LTCC=$lt_CC + +# LTCC compiler flags. +LTCFLAGS=$lt_CFLAGS + +# Take the output of nm and produce a listing of raw symbols and C names. +global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe + +# Transform the output of nm in a proper C declaration. +global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl + +# Transform the output of nm into a list of symbols to manually relocate. +global_symbol_to_import=$lt_lt_cv_sys_global_symbol_to_import + +# Transform the output of nm in a C name address pair. +global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address + +# Transform the output of nm in a C name address pair when lib prefix is needed. +global_symbol_to_c_name_address_lib_prefix=$lt_lt_cv_sys_global_symbol_to_c_name_address_lib_prefix + +# The name lister interface. +nm_interface=$lt_lt_cv_nm_interface + +# Specify filename containing input files for \$NM. +nm_file_list_spec=$lt_nm_file_list_spec + +# The root where to search for dependent libraries,and where our libraries should be installed. +lt_sysroot=$lt_sysroot + +# Command to truncate a binary pipe. +lt_truncate_bin=$lt_lt_cv_truncate_bin + +# The name of the directory that contains temporary libtool files. +objdir=$objdir + +# Used to examine libraries when file_magic_cmd begins with "file". +MAGIC_CMD=$MAGIC_CMD + +# Must we lock files when doing compilation? +need_locks=$lt_need_locks + +# Manifest tool. +MANIFEST_TOOL=$lt_MANIFEST_TOOL + +# Tool to manipulate archived DWARF debug symbol files on Mac OS X. +DSYMUTIL=$lt_DSYMUTIL + +# Tool to change global to local symbols on Mac OS X. +NMEDIT=$lt_NMEDIT + +# Tool to manipulate fat objects and archives on Mac OS X. +LIPO=$lt_LIPO + +# ldd/readelf like tool for Mach-O binaries on Mac OS X. +OTOOL=$lt_OTOOL + +# ldd/readelf like tool for 64 bit Mach-O binaries on Mac OS X 10.4. +OTOOL64=$lt_OTOOL64 + +# Old archive suffix (normally "a"). +libext=$libext + +# Shared library suffix (normally ".so"). +shrext_cmds=$lt_shrext_cmds + +# The commands to extract the exported symbol list from a shared archive. +extract_expsyms_cmds=$lt_extract_expsyms_cmds + +# Variables whose values should be saved in libtool wrapper scripts and +# restored at link time. +variables_saved_for_relink=$lt_variables_saved_for_relink + +# Do we need the "lib" prefix for modules? +need_lib_prefix=$need_lib_prefix + +# Do we need a version for libraries? +need_version=$need_version + +# Library versioning type. +version_type=$version_type + +# Shared library runtime path variable. +runpath_var=$runpath_var + +# Shared library path variable. +shlibpath_var=$shlibpath_var + +# Is shlibpath searched before the hard-coded library search path? +shlibpath_overrides_runpath=$shlibpath_overrides_runpath + +# Format of library name prefix. +libname_spec=$lt_libname_spec + +# List of archive names. First name is the real one, the rest are links. +# The last name is the one that the linker finds with -lNAME +library_names_spec=$lt_library_names_spec + +# The coded name of the library, if different from the real name. +soname_spec=$lt_soname_spec + +# Permission mode override for installation of shared libraries. +install_override_mode=$lt_install_override_mode + +# Command to use after installation of a shared archive. +postinstall_cmds=$lt_postinstall_cmds + +# Command to use after uninstallation of a shared archive. +postuninstall_cmds=$lt_postuninstall_cmds + +# Commands used to finish a libtool library installation in a directory. +finish_cmds=$lt_finish_cmds + +# As "finish_cmds", except a single script fragment to be evaled but +# not shown. +finish_eval=$lt_finish_eval + +# Whether we should hardcode library paths into libraries. +hardcode_into_libs=$hardcode_into_libs + +# Compile-time system search path for libraries. +sys_lib_search_path_spec=$lt_sys_lib_search_path_spec + +# Detected run-time system search path for libraries. +sys_lib_dlsearch_path_spec=$lt_configure_time_dlsearch_path + +# Explicit LT_SYS_LIBRARY_PATH set during ./configure time. +configure_time_lt_sys_library_path=$lt_configure_time_lt_sys_library_path + +# Whether dlopen is supported. +dlopen_support=$enable_dlopen + +# Whether dlopen of programs is supported. +dlopen_self=$enable_dlopen_self + +# Whether dlopen of statically linked programs is supported. +dlopen_self_static=$enable_dlopen_self_static + +# Commands to strip libraries. +old_striplib=$lt_old_striplib +striplib=$lt_striplib + + +# The linker used to build libraries. +LD=$lt_LD + +# How to create reloadable object files. +reload_flag=$lt_reload_flag +reload_cmds=$lt_reload_cmds + +# Commands used to build an old-style archive. +old_archive_cmds=$lt_old_archive_cmds + +# A language specific compiler. +CC=$lt_compiler + +# Is the compiler the GNU compiler? +with_gcc=$GCC + +# Compiler flag to turn off builtin functions. +no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag + +# Additional compiler flags for building library objects. +pic_flag=$lt_lt_prog_compiler_pic + +# How to pass a linker flag through the compiler. +wl=$lt_lt_prog_compiler_wl + +# Compiler flag to prevent dynamic linking. +link_static_flag=$lt_lt_prog_compiler_static + +# Does compiler simultaneously support -c and -o options? +compiler_c_o=$lt_lt_cv_prog_compiler_c_o + +# Whether or not to add -lc for building shared libraries. +build_libtool_need_lc=$archive_cmds_need_lc + +# Whether or not to disallow shared libs when runtime libs are static. +allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes + +# Compiler flag to allow reflexive dlopens. +export_dynamic_flag_spec=$lt_export_dynamic_flag_spec + +# Compiler flag to generate shared objects directly from archives. +whole_archive_flag_spec=$lt_whole_archive_flag_spec + +# Whether the compiler copes with passing no objects directly. +compiler_needs_object=$lt_compiler_needs_object + +# Create an old-style archive from a shared archive. +old_archive_from_new_cmds=$lt_old_archive_from_new_cmds + +# Create a temporary old-style archive to link instead of a shared archive. +old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds + +# Commands used to build a shared archive. +archive_cmds=$lt_archive_cmds +archive_expsym_cmds=$lt_archive_expsym_cmds + +# Commands used to build a loadable module if different from building +# a shared archive. +module_cmds=$lt_module_cmds +module_expsym_cmds=$lt_module_expsym_cmds + +# Whether we are building with GNU ld or not. +with_gnu_ld=$lt_with_gnu_ld + +# Flag that allows shared libraries with undefined symbols to be built. +allow_undefined_flag=$lt_allow_undefined_flag + +# Flag that enforces no undefined symbols. +no_undefined_flag=$lt_no_undefined_flag + +# Flag to hardcode \$libdir into a binary during linking. +# This must work even if \$libdir does not exist +hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec + +# Whether we need a single "-rpath" flag with a separated argument. +hardcode_libdir_separator=$lt_hardcode_libdir_separator + +# Set to "yes" if using DIR/libNAME\$shared_ext during linking hardcodes +# DIR into the resulting binary. +hardcode_direct=$hardcode_direct + +# Set to "yes" if using DIR/libNAME\$shared_ext during linking hardcodes +# DIR into the resulting binary and the resulting library dependency is +# "absolute",i.e impossible to change by setting \$shlibpath_var if the +# library is relocated. +hardcode_direct_absolute=$hardcode_direct_absolute + +# Set to "yes" if using the -LDIR flag during linking hardcodes DIR +# into the resulting binary. +hardcode_minus_L=$hardcode_minus_L + +# Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR +# into the resulting binary. +hardcode_shlibpath_var=$hardcode_shlibpath_var + +# Set to "yes" if building a shared library automatically hardcodes DIR +# into the library and all subsequent libraries and executables linked +# against it. +hardcode_automatic=$hardcode_automatic + +# Set to yes if linker adds runtime paths of dependent libraries +# to runtime path list. +inherit_rpath=$inherit_rpath + +# Whether libtool must link a program against all its dependency libraries. +link_all_deplibs=$link_all_deplibs + +# Set to "yes" if exported symbols are required. +always_export_symbols=$always_export_symbols + +# The commands to list exported symbols. +export_symbols_cmds=$lt_export_symbols_cmds + +# Symbols that should not be listed in the preloaded symbols. +exclude_expsyms=$lt_exclude_expsyms + +# Symbols that must always be exported. +include_expsyms=$lt_include_expsyms + +# Commands necessary for linking programs (against libraries) with templates. +prelink_cmds=$lt_prelink_cmds + +# Commands necessary for finishing linking programs. +postlink_cmds=$lt_postlink_cmds + +# Specify filename containing input files. +file_list_spec=$lt_file_list_spec + +# How to hardcode a shared library path into an executable. +hardcode_action=$hardcode_action + +# The directories searched by this compiler when creating a shared library. +compiler_lib_search_dirs=$lt_compiler_lib_search_dirs + +# Dependencies to place before and after the objects being linked to +# create a shared library. +predep_objects=$lt_predep_objects +postdep_objects=$lt_postdep_objects +predeps=$lt_predeps +postdeps=$lt_postdeps + +# The library search path used internally by the compiler when linking +# a shared library. +compiler_lib_search_path=$lt_compiler_lib_search_path + +# ### END LIBTOOL CONFIG + +_LT_EOF + + cat <<'_LT_EOF' >> "$cfgfile" + +# ### BEGIN FUNCTIONS SHARED WITH CONFIGURE + +# func_munge_path_list VARIABLE PATH +# ----------------------------------- +# VARIABLE is name of variable containing _space_ separated list of +# directories to be munged by the contents of PATH, which is string +# having a format: +# "DIR[:DIR]:" +# string "DIR[ DIR]" will be prepended to VARIABLE +# ":DIR[:DIR]" +# string "DIR[ DIR]" will be appended to VARIABLE +# "DIRP[:DIRP]::[DIRA:]DIRA" +# string "DIRP[ DIRP]" will be prepended to VARIABLE and string +# "DIRA[ DIRA]" will be appended to VARIABLE +# "DIR[:DIR]" +# VARIABLE will be replaced by "DIR[ DIR]" +func_munge_path_list () +{ + case x$2 in + x) + ;; + *:) + eval $1=\"`$ECHO $2 | $SED 's/:/ /g'` \$$1\" + ;; + x:*) + eval $1=\"\$$1 `$ECHO $2 | $SED 's/:/ /g'`\" + ;; + *::*) + eval $1=\"\$$1\ `$ECHO $2 | $SED -e 's/.*:://' -e 's/:/ /g'`\" + eval $1=\"`$ECHO $2 | $SED -e 's/::.*//' -e 's/:/ /g'`\ \$$1\" + ;; + *) + eval $1=\"`$ECHO $2 | $SED 's/:/ /g'`\" + ;; + esac +} + + +# Calculate cc_basename. Skip known compiler wrappers and cross-prefix. +func_cc_basename () +{ + for cc_temp in $*""; do + case $cc_temp in + compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; + distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; + \-*) ;; + *) break;; + esac + done + func_cc_basename_result=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"` +} + + +# ### END FUNCTIONS SHARED WITH CONFIGURE + +_LT_EOF + + case $host_os in + aix3*) + cat <<\_LT_EOF >> "$cfgfile" +# AIX sometimes has problems with the GCC collect2 program. For some +# reason, if we set the COLLECT_NAMES environment variable, the problems +# vanish in a puff of smoke. +if test set != "${COLLECT_NAMES+set}"; then + COLLECT_NAMES= + export COLLECT_NAMES +fi +_LT_EOF + ;; + esac + + +ltmain=$ac_aux_dir/ltmain.sh + + + # We use sed instead of cat because bash on DJGPP gets confused if + # if finds mixed CR/LF and LF-only lines. Since sed operates in + # text mode, it properly converts lines to CR/LF. This bash problem + # is reportedly fixed, but why not run on old versions too? + sed '$q' "$ltmain" >> "$cfgfile" \ + || (rm -f "$cfgfile"; exit 1) + + mv -f "$cfgfile" "$ofile" || + (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile") + chmod +x "$ofile" + + + cat <<_LT_EOF >> "$ofile" + +# ### BEGIN LIBTOOL TAG CONFIG: CXX + +# The linker used to build libraries. +LD=$lt_LD_CXX + +# How to create reloadable object files. +reload_flag=$lt_reload_flag_CXX +reload_cmds=$lt_reload_cmds_CXX + +# Commands used to build an old-style archive. +old_archive_cmds=$lt_old_archive_cmds_CXX + +# A language specific compiler. +CC=$lt_compiler_CXX + +# Is the compiler the GNU compiler? +with_gcc=$GCC_CXX + +# Compiler flag to turn off builtin functions. +no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_CXX + +# Additional compiler flags for building library objects. +pic_flag=$lt_lt_prog_compiler_pic_CXX + +# How to pass a linker flag through the compiler. +wl=$lt_lt_prog_compiler_wl_CXX + +# Compiler flag to prevent dynamic linking. +link_static_flag=$lt_lt_prog_compiler_static_CXX + +# Does compiler simultaneously support -c and -o options? +compiler_c_o=$lt_lt_cv_prog_compiler_c_o_CXX + +# Whether or not to add -lc for building shared libraries. +build_libtool_need_lc=$archive_cmds_need_lc_CXX + +# Whether or not to disallow shared libs when runtime libs are static. +allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes_CXX + +# Compiler flag to allow reflexive dlopens. +export_dynamic_flag_spec=$lt_export_dynamic_flag_spec_CXX + +# Compiler flag to generate shared objects directly from archives. +whole_archive_flag_spec=$lt_whole_archive_flag_spec_CXX + +# Whether the compiler copes with passing no objects directly. +compiler_needs_object=$lt_compiler_needs_object_CXX + +# Create an old-style archive from a shared archive. +old_archive_from_new_cmds=$lt_old_archive_from_new_cmds_CXX + +# Create a temporary old-style archive to link instead of a shared archive. +old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds_CXX + +# Commands used to build a shared archive. +archive_cmds=$lt_archive_cmds_CXX +archive_expsym_cmds=$lt_archive_expsym_cmds_CXX + +# Commands used to build a loadable module if different from building +# a shared archive. +module_cmds=$lt_module_cmds_CXX +module_expsym_cmds=$lt_module_expsym_cmds_CXX + +# Whether we are building with GNU ld or not. +with_gnu_ld=$lt_with_gnu_ld_CXX + +# Flag that allows shared libraries with undefined symbols to be built. +allow_undefined_flag=$lt_allow_undefined_flag_CXX + +# Flag that enforces no undefined symbols. +no_undefined_flag=$lt_no_undefined_flag_CXX + +# Flag to hardcode \$libdir into a binary during linking. +# This must work even if \$libdir does not exist +hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec_CXX + +# Whether we need a single "-rpath" flag with a separated argument. +hardcode_libdir_separator=$lt_hardcode_libdir_separator_CXX + +# Set to "yes" if using DIR/libNAME\$shared_ext during linking hardcodes +# DIR into the resulting binary. +hardcode_direct=$hardcode_direct_CXX + +# Set to "yes" if using DIR/libNAME\$shared_ext during linking hardcodes +# DIR into the resulting binary and the resulting library dependency is +# "absolute",i.e impossible to change by setting \$shlibpath_var if the +# library is relocated. +hardcode_direct_absolute=$hardcode_direct_absolute_CXX + +# Set to "yes" if using the -LDIR flag during linking hardcodes DIR +# into the resulting binary. +hardcode_minus_L=$hardcode_minus_L_CXX + +# Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR +# into the resulting binary. +hardcode_shlibpath_var=$hardcode_shlibpath_var_CXX + +# Set to "yes" if building a shared library automatically hardcodes DIR +# into the library and all subsequent libraries and executables linked +# against it. +hardcode_automatic=$hardcode_automatic_CXX + +# Set to yes if linker adds runtime paths of dependent libraries +# to runtime path list. +inherit_rpath=$inherit_rpath_CXX + +# Whether libtool must link a program against all its dependency libraries. +link_all_deplibs=$link_all_deplibs_CXX + +# Set to "yes" if exported symbols are required. +always_export_symbols=$always_export_symbols_CXX + +# The commands to list exported symbols. +export_symbols_cmds=$lt_export_symbols_cmds_CXX + +# Symbols that should not be listed in the preloaded symbols. +exclude_expsyms=$lt_exclude_expsyms_CXX + +# Symbols that must always be exported. +include_expsyms=$lt_include_expsyms_CXX + +# Commands necessary for linking programs (against libraries) with templates. +prelink_cmds=$lt_prelink_cmds_CXX + +# Commands necessary for finishing linking programs. +postlink_cmds=$lt_postlink_cmds_CXX + +# Specify filename containing input files. +file_list_spec=$lt_file_list_spec_CXX + +# How to hardcode a shared library path into an executable. +hardcode_action=$hardcode_action_CXX + +# The directories searched by this compiler when creating a shared library. +compiler_lib_search_dirs=$lt_compiler_lib_search_dirs_CXX + +# Dependencies to place before and after the objects being linked to +# create a shared library. +predep_objects=$lt_predep_objects_CXX +postdep_objects=$lt_postdep_objects_CXX +predeps=$lt_predeps_CXX +postdeps=$lt_postdeps_CXX + +# The library search path used internally by the compiler when linking +# a shared library. +compiler_lib_search_path=$lt_compiler_lib_search_path_CXX + +# ### END LIBTOOL TAG CONFIG: CXX +_LT_EOF + + ;; + + esac +done # for ac_tag + + +as_fn_exit 0 +_ACEOF +ac_clean_files=$ac_clean_files_save + +test $ac_write_fail = 0 || + as_fn_error $? "write failure creating $CONFIG_STATUS" "$LINENO" 5 + + +# configure is writing to config.log, and then calls config.status. +# config.status does its own redirection, appending to config.log. +# Unfortunately, on DOS this fails, as config.log is still kept open +# by configure, so config.status won't be able to write to it; its +# output is simply discarded. So we exec the FD to /dev/null, +# effectively closing config.log, so it can be properly (re)opened and +# appended to by config.status. When coming back to configure, we +# need to make the FD available again. +if test "$no_create" != yes; then + ac_cs_success=: + ac_config_status_args= + test "$silent" = yes && + ac_config_status_args="$ac_config_status_args --quiet" + exec 5>/dev/null + $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false + exec 5>>config.log + # Use ||, not &&, to avoid exiting from the if with $? = 1, which + # would make configure fail if this is the last instruction. + $ac_cs_success || as_fn_exit 1 +fi +if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5 +$as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;} +fi + diff --git a/libs/shapelib/configure.ac b/libs/shapelib/configure.ac new file mode 100644 index 0000000..7ec86d5 --- /dev/null +++ b/libs/shapelib/configure.ac @@ -0,0 +1,70 @@ +dnl Process this file with autoconf to produce a configure script. + +m4_define(shapelib_version_major, 1) +m4_define(shapelib_version_minor, 4) +m4_define(shapelib_version_micro, 1) + +AC_PREREQ(2.62) +AC_INIT(shapelib, shapelib_version_major.shapelib_version_minor.shapelib_version_micro) +AC_CONFIG_MACRO_DIR(m4) +AC_CONFIG_SRCDIR(shapefil.h) + +AM_INIT_AUTOMAKE([-Wall]) + +AM_SILENT_RULES([yes]) + +m4_ifdef([AM_PROG_AR], [AM_PROG_AR]) + +dnl See http://www.gnu.org/software/libtool/manual/html_node/Updating-version-info.html +AC_SUBST([SHAPELIB_SO_VERSION], [2:2:0]) + +AC_PROG_CC +AC_PROG_CXX +AM_PROG_CC_C_O +AC_LANG([C]) +AC_LANG([C++]) + +dnl ************************** Libtool initialization ************************* +LT_INIT + +dnl ********************************* Modules ********************************* +AC_ARG_WITH([proj-cflags], + [AS_HELP_STRING([--with-proj-cflags], [CFLAGS for the PROJ.4 headers])], + [if test "$withval" != ""; then PROJ_CFLAGS="$withval"; else PROJ_CFLAGS=""; fi], + [PROJ_CFLAGS='-DPROJ4']) +AC_SUBST([PROJ_CFLAGS]) + +AC_ARG_WITH([proj-libs], + [AS_HELP_STRING([--with-proj-libs], [LIBS for the PROJ.4 libraries])], + [PROJ_LIBS="$withval"], + [PROJ_LIBS='-lproj']) +AC_SUBST([PROJ_LIBS]) + +dnl ****************************** Detect libm ******************************* + +AC_CHECK_LIB(m,floor,LIBM=-lm) +AC_SUBST([LIBM]) + +dnl ****************************** Detect Win32 ******************************* +AC_MSG_CHECKING([for some Win32 platform]) +case "$host" in + *-*-mingw*|*-*-cygwin*) + platform_win32=yes + ;; + *) + platform_win32=no + ;; +esac +AC_MSG_RESULT([$platform_win32]) +AM_CONDITIONAL(PLATFORM_WIN32, test "$platform_win32" = "yes") + +dnl ********************************* Summary ********************************* +echo +echo "Configuration summary for $PACKAGE $VERSION:" +echo " - Host: ${host}" +echo " - PROJ flags: $PROJ_CFLAGS $PROJ_LIBS" +echo + +AC_CONFIG_FILES([Makefile contrib/Makefile shapelib.pc]) + +AC_OUTPUT diff --git a/libs/shapelib/contrib/Makefile.am b/libs/shapelib/contrib/Makefile.am new file mode 100644 index 0000000..d9fc8c3 --- /dev/null +++ b/libs/shapelib/contrib/Makefile.am @@ -0,0 +1,59 @@ +CONTRIB_CFLAGS = -I$(top_srcdir) -DDEBUG -DDEBUG2 + +# Extra files to distribute in the source tarball +EXTRA_DIST = makefile.vc tests/shpproj.sh doc/Shape_PointInPoly_README.txt doc/shpproj.txt doc/shpsort.txt ShapeFileII.pas + +# Installed executables +bin_PROGRAMS = dbfcat dbfinfo shpcat shpdxf shpfix shpsort Shape_PointInPoly shpcentrd shpdata shpinfo shpproj shpwkb + +dbfcat_SOURCES = dbfcat.c +dbfcat_CPPFLAGS = $(CONTRIB_CFLAGS) +dbfcat_LDADD = $(top_builddir)/libshp.la + +dbfinfo_SOURCES = dbfinfo.c +dbfinfo_CPPFLAGS = $(CONTRIB_CFLAGS) +dbfinfo_LDADD = $(top_builddir)/libshp.la + +shpcat_SOURCES = shpcat.c +shpcat_CPPFLAGS = $(CONTRIB_CFLAGS) +shpcat_LDADD = $(top_builddir)/libshp.la + +shpdxf_SOURCES = shpdxf.c +shpdxf_CPPFLAGS = $(CONTRIB_CFLAGS) +shpdxf_LDADD = $(top_builddir)/libshp.la + +shpfix_SOURCES = shpfix.c +shpfix_CPPFLAGS = $(CONTRIB_CFLAGS) +shpfix_LDADD = $(top_builddir)/libshp.la + +shpsort_SOURCES = shpsort.c +shpsort_CPPFLAGS = $(CONTRIB_CFLAGS) +shpsort_LDADD = $(top_builddir)/libshp.la -lm + +Shape_PointInPoly_SOURCES = Shape_PointInPoly.cpp +Shape_PointInPoly_CPPFLAGS = $(CONTRIB_CFLAGS) +Shape_PointInPoly_LDADD = $(top_builddir)/libshp.la + +shpcentrd_SOURCES = shpcentrd.c shpgeo.c shpgeo.h +shpcentrd_CPPFLAGS = $(CONTRIB_CFLAGS) $(PROJ_CFLAGS) +shpcentrd_LDADD = $(top_builddir)/libshp.la $(PROJ_LIBS) -lm + +shpdata_SOURCES = shpdata.c shpgeo.c shpgeo.h +shpdata_CPPFLAGS = $(CONTRIB_CFLAGS) $(PROJ_CFLAGS) +shpdata_LDADD = $(top_builddir)/libshp.la $(PROJ_LIBS) -lm + +shpinfo_SOURCES = shpinfo.c shpgeo.c shpgeo.h +shpinfo_CPPFLAGS = $(CONTRIB_CFLAGS) $(PROJ_CFLAGS) +shpinfo_LDADD = $(top_builddir)/libshp.la $(PROJ_LIBS) -lm + +shpproj_SOURCES = shpproj.c shpgeo.c shpgeo.h +shpproj_CPPFLAGS = $(CONTRIB_CFLAGS) $(PROJ_CFLAGS) +shpproj_LDADD = $(top_builddir)/libshp.la $(PROJ_LIBS) -lm + +shpwkb_SOURCES = shpwkb.c shpgeo.c shpgeo.h +shpwkb_CPPFLAGS = $(CONTRIB_CFLAGS) $(PROJ_CFLAGS) +shpwkb_LDADD = $(top_builddir)/libshp.la $(PROJ_LIBS) -lm + +# Tests +TESTS_ENVIRONMENT = top_builddir=$(abs_top_builddir) +TESTS = tests/shpproj.sh diff --git a/libs/shapelib/contrib/Makefile.in b/libs/shapelib/contrib/Makefile.in new file mode 100644 index 0000000..a037d40 --- /dev/null +++ b/libs/shapelib/contrib/Makefile.in @@ -0,0 +1,1437 @@ +# Makefile.in generated by automake 1.15 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994-2014 Free Software Foundation, Inc. + +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +VPATH = @srcdir@ +am__is_gnu_make = { \ + if test -z '$(MAKELEVEL)'; then \ + false; \ + elif test -n '$(MAKE_HOST)'; then \ + true; \ + elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ + true; \ + else \ + false; \ + fi; \ +} +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +bin_PROGRAMS = dbfcat$(EXEEXT) dbfinfo$(EXEEXT) shpcat$(EXEEXT) \ + shpdxf$(EXEEXT) shpfix$(EXEEXT) shpsort$(EXEEXT) \ + Shape_PointInPoly$(EXEEXT) shpcentrd$(EXEEXT) shpdata$(EXEEXT) \ + shpinfo$(EXEEXT) shpproj$(EXEEXT) shpwkb$(EXEEXT) +subdir = contrib +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \ + $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ + $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ + $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) +mkinstalldirs = $(install_sh) -d +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +am__installdirs = "$(DESTDIR)$(bindir)" +PROGRAMS = $(bin_PROGRAMS) +am_Shape_PointInPoly_OBJECTS = \ + Shape_PointInPoly-Shape_PointInPoly.$(OBJEXT) +Shape_PointInPoly_OBJECTS = $(am_Shape_PointInPoly_OBJECTS) +Shape_PointInPoly_DEPENDENCIES = $(top_builddir)/libshp.la +AM_V_lt = $(am__v_lt_@AM_V@) +am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) +am__v_lt_0 = --silent +am__v_lt_1 = +am_dbfcat_OBJECTS = dbfcat-dbfcat.$(OBJEXT) +dbfcat_OBJECTS = $(am_dbfcat_OBJECTS) +dbfcat_DEPENDENCIES = $(top_builddir)/libshp.la +am_dbfinfo_OBJECTS = dbfinfo-dbfinfo.$(OBJEXT) +dbfinfo_OBJECTS = $(am_dbfinfo_OBJECTS) +dbfinfo_DEPENDENCIES = $(top_builddir)/libshp.la +am_shpcat_OBJECTS = shpcat-shpcat.$(OBJEXT) +shpcat_OBJECTS = $(am_shpcat_OBJECTS) +shpcat_DEPENDENCIES = $(top_builddir)/libshp.la +am_shpcentrd_OBJECTS = shpcentrd-shpcentrd.$(OBJEXT) \ + shpcentrd-shpgeo.$(OBJEXT) +shpcentrd_OBJECTS = $(am_shpcentrd_OBJECTS) +am__DEPENDENCIES_1 = +shpcentrd_DEPENDENCIES = $(top_builddir)/libshp.la \ + $(am__DEPENDENCIES_1) +am_shpdata_OBJECTS = shpdata-shpdata.$(OBJEXT) \ + shpdata-shpgeo.$(OBJEXT) +shpdata_OBJECTS = $(am_shpdata_OBJECTS) +shpdata_DEPENDENCIES = $(top_builddir)/libshp.la $(am__DEPENDENCIES_1) +am_shpdxf_OBJECTS = shpdxf-shpdxf.$(OBJEXT) +shpdxf_OBJECTS = $(am_shpdxf_OBJECTS) +shpdxf_DEPENDENCIES = $(top_builddir)/libshp.la +am_shpfix_OBJECTS = shpfix-shpfix.$(OBJEXT) +shpfix_OBJECTS = $(am_shpfix_OBJECTS) +shpfix_DEPENDENCIES = $(top_builddir)/libshp.la +am_shpinfo_OBJECTS = shpinfo-shpinfo.$(OBJEXT) \ + shpinfo-shpgeo.$(OBJEXT) +shpinfo_OBJECTS = $(am_shpinfo_OBJECTS) +shpinfo_DEPENDENCIES = $(top_builddir)/libshp.la $(am__DEPENDENCIES_1) +am_shpproj_OBJECTS = shpproj-shpproj.$(OBJEXT) \ + shpproj-shpgeo.$(OBJEXT) +shpproj_OBJECTS = $(am_shpproj_OBJECTS) +shpproj_DEPENDENCIES = $(top_builddir)/libshp.la $(am__DEPENDENCIES_1) +am_shpsort_OBJECTS = shpsort-shpsort.$(OBJEXT) +shpsort_OBJECTS = $(am_shpsort_OBJECTS) +shpsort_DEPENDENCIES = $(top_builddir)/libshp.la +am_shpwkb_OBJECTS = shpwkb-shpwkb.$(OBJEXT) shpwkb-shpgeo.$(OBJEXT) +shpwkb_OBJECTS = $(am_shpwkb_OBJECTS) +shpwkb_DEPENDENCIES = $(top_builddir)/libshp.la $(am__DEPENDENCIES_1) +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = +DEFAULT_INCLUDES = -I.@am__isrc@ +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__depfiles_maybe = depfiles +am__mv = mv -f +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ + $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ + $(AM_CFLAGS) $(CFLAGS) +AM_V_CC = $(am__v_CC_@AM_V@) +am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) +am__v_CC_0 = @echo " CC " $@; +am__v_CC_1 = +CCLD = $(CC) +LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(AM_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_CCLD = $(am__v_CCLD_@AM_V@) +am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) +am__v_CCLD_0 = @echo " CCLD " $@; +am__v_CCLD_1 = +CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ + $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) +LTCXXCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) \ + $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ + $(AM_CXXFLAGS) $(CXXFLAGS) +AM_V_CXX = $(am__v_CXX_@AM_V@) +am__v_CXX_ = $(am__v_CXX_@AM_DEFAULT_V@) +am__v_CXX_0 = @echo " CXX " $@; +am__v_CXX_1 = +CXXLD = $(CXX) +CXXLINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \ + $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_CXXLD = $(am__v_CXXLD_@AM_V@) +am__v_CXXLD_ = $(am__v_CXXLD_@AM_DEFAULT_V@) +am__v_CXXLD_0 = @echo " CXXLD " $@; +am__v_CXXLD_1 = +SOURCES = $(Shape_PointInPoly_SOURCES) $(dbfcat_SOURCES) \ + $(dbfinfo_SOURCES) $(shpcat_SOURCES) $(shpcentrd_SOURCES) \ + $(shpdata_SOURCES) $(shpdxf_SOURCES) $(shpfix_SOURCES) \ + $(shpinfo_SOURCES) $(shpproj_SOURCES) $(shpsort_SOURCES) \ + $(shpwkb_SOURCES) +DIST_SOURCES = $(Shape_PointInPoly_SOURCES) $(dbfcat_SOURCES) \ + $(dbfinfo_SOURCES) $(shpcat_SOURCES) $(shpcentrd_SOURCES) \ + $(shpdata_SOURCES) $(shpdxf_SOURCES) $(shpfix_SOURCES) \ + $(shpinfo_SOURCES) $(shpproj_SOURCES) $(shpsort_SOURCES) \ + $(shpwkb_SOURCES) +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` +ETAGS = etags +CTAGS = ctags +am__tty_colors_dummy = \ + mgn= red= grn= lgn= blu= brg= std=; \ + am__color_tests=no +am__tty_colors = { \ + $(am__tty_colors_dummy); \ + if test "X$(AM_COLOR_TESTS)" = Xno; then \ + am__color_tests=no; \ + elif test "X$(AM_COLOR_TESTS)" = Xalways; then \ + am__color_tests=yes; \ + elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \ + am__color_tests=yes; \ + fi; \ + if test $$am__color_tests = yes; then \ + red=''; \ + grn=''; \ + lgn=''; \ + blu=''; \ + mgn=''; \ + brg=''; \ + std=''; \ + fi; \ +} +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; +am__install_max = 40 +am__nobase_strip_setup = \ + srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` +am__nobase_strip = \ + for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" +am__nobase_list = $(am__nobase_strip_setup); \ + for p in $$list; do echo "$$p $$p"; done | \ + sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ + $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ + if (++n[$$2] == $(am__install_max)) \ + { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ + END { for (dir in files) print dir, files[dir] }' +am__base_list = \ + sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ + sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' +am__uninstall_files_from_dir = { \ + test -z "$$files" \ + || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ + || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ + $(am__cd) "$$dir" && rm -f $$files; }; \ + } +am__recheck_rx = ^[ ]*:recheck:[ ]* +am__global_test_result_rx = ^[ ]*:global-test-result:[ ]* +am__copy_in_global_log_rx = ^[ ]*:copy-in-global-log:[ ]* +# A command that, given a newline-separated list of test names on the +# standard input, print the name of the tests that are to be re-run +# upon "make recheck". +am__list_recheck_tests = $(AWK) '{ \ + recheck = 1; \ + while ((rc = (getline line < ($$0 ".trs"))) != 0) \ + { \ + if (rc < 0) \ + { \ + if ((getline line2 < ($$0 ".log")) < 0) \ + recheck = 0; \ + break; \ + } \ + else if (line ~ /$(am__recheck_rx)[nN][Oo]/) \ + { \ + recheck = 0; \ + break; \ + } \ + else if (line ~ /$(am__recheck_rx)[yY][eE][sS]/) \ + { \ + break; \ + } \ + }; \ + if (recheck) \ + print $$0; \ + close ($$0 ".trs"); \ + close ($$0 ".log"); \ +}' +# A command that, given a newline-separated list of test names on the +# standard input, create the global log from their .trs and .log files. +am__create_global_log = $(AWK) ' \ +function fatal(msg) \ +{ \ + print "fatal: making $@: " msg | "cat >&2"; \ + exit 1; \ +} \ +function rst_section(header) \ +{ \ + print header; \ + len = length(header); \ + for (i = 1; i <= len; i = i + 1) \ + printf "="; \ + printf "\n\n"; \ +} \ +{ \ + copy_in_global_log = 1; \ + global_test_result = "RUN"; \ + while ((rc = (getline line < ($$0 ".trs"))) != 0) \ + { \ + if (rc < 0) \ + fatal("failed to read from " $$0 ".trs"); \ + if (line ~ /$(am__global_test_result_rx)/) \ + { \ + sub("$(am__global_test_result_rx)", "", line); \ + sub("[ ]*$$", "", line); \ + global_test_result = line; \ + } \ + else if (line ~ /$(am__copy_in_global_log_rx)[nN][oO]/) \ + copy_in_global_log = 0; \ + }; \ + if (copy_in_global_log) \ + { \ + rst_section(global_test_result ": " $$0); \ + while ((rc = (getline line < ($$0 ".log"))) != 0) \ + { \ + if (rc < 0) \ + fatal("failed to read from " $$0 ".log"); \ + print line; \ + }; \ + printf "\n"; \ + }; \ + close ($$0 ".trs"); \ + close ($$0 ".log"); \ +}' +# Restructured Text title. +am__rst_title = { sed 's/.*/ & /;h;s/./=/g;p;x;s/ *$$//;p;g' && echo; } +# Solaris 10 'make', and several other traditional 'make' implementations, +# pass "-e" to $(SHELL), and POSIX 2008 even requires this. Work around it +# by disabling -e (using the XSI extension "set +e") if it's set. +am__sh_e_setup = case $$- in *e*) set +e;; esac +# Default flags passed to test drivers. +am__common_driver_flags = \ + --color-tests "$$am__color_tests" \ + --enable-hard-errors "$$am__enable_hard_errors" \ + --expect-failure "$$am__expect_failure" +# To be inserted before the command running the test. Creates the +# directory for the log if needed. Stores in $dir the directory +# containing $f, in $tst the test, in $log the log. Executes the +# developer- defined test setup AM_TESTS_ENVIRONMENT (if any), and +# passes TESTS_ENVIRONMENT. Set up options for the wrapper that +# will run the test scripts (or their associated LOG_COMPILER, if +# thy have one). +am__check_pre = \ +$(am__sh_e_setup); \ +$(am__vpath_adj_setup) $(am__vpath_adj) \ +$(am__tty_colors); \ +srcdir=$(srcdir); export srcdir; \ +case "$@" in \ + */*) am__odir=`echo "./$@" | sed 's|/[^/]*$$||'`;; \ + *) am__odir=.;; \ +esac; \ +test "x$$am__odir" = x"." || test -d "$$am__odir" \ + || $(MKDIR_P) "$$am__odir" || exit $$?; \ +if test -f "./$$f"; then dir=./; \ +elif test -f "$$f"; then dir=; \ +else dir="$(srcdir)/"; fi; \ +tst=$$dir$$f; log='$@'; \ +if test -n '$(DISABLE_HARD_ERRORS)'; then \ + am__enable_hard_errors=no; \ +else \ + am__enable_hard_errors=yes; \ +fi; \ +case " $(XFAIL_TESTS) " in \ + *[\ \ ]$$f[\ \ ]* | *[\ \ ]$$dir$$f[\ \ ]*) \ + am__expect_failure=yes;; \ + *) \ + am__expect_failure=no;; \ +esac; \ +$(AM_TESTS_ENVIRONMENT) $(TESTS_ENVIRONMENT) +# A shell command to get the names of the tests scripts with any registered +# extension removed (i.e., equivalently, the names of the test logs, with +# the '.log' extension removed). The result is saved in the shell variable +# '$bases'. This honors runtime overriding of TESTS and TEST_LOGS. Sadly, +# we cannot use something simpler, involving e.g., "$(TEST_LOGS:.log=)", +# since that might cause problem with VPATH rewrites for suffix-less tests. +# See also 'test-harness-vpath-rewrite.sh' and 'test-trs-basic.sh'. +am__set_TESTS_bases = \ + bases='$(TEST_LOGS)'; \ + bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \ + bases=`echo $$bases` +RECHECK_LOGS = $(TEST_LOGS) +AM_RECURSIVE_TARGETS = check recheck +TEST_SUITE_LOG = test-suite.log +TEST_EXTENSIONS = @EXEEXT@ .test +LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver +LOG_COMPILE = $(LOG_COMPILER) $(AM_LOG_FLAGS) $(LOG_FLAGS) +am__set_b = \ + case '$@' in \ + */*) \ + case '$*' in \ + */*) b='$*';; \ + *) b=`echo '$@' | sed 's/\.log$$//'`; \ + esac;; \ + *) \ + b='$*';; \ + esac +am__test_logs1 = $(TESTS:=.log) +am__test_logs2 = $(am__test_logs1:@EXEEXT@.log=.log) +TEST_LOGS = $(am__test_logs2:.test.log=.log) +TEST_LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver +TEST_LOG_COMPILE = $(TEST_LOG_COMPILER) $(AM_TEST_LOG_FLAGS) \ + $(TEST_LOG_FLAGS) +am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/depcomp \ + $(top_srcdir)/test-driver +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AR = @AR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DLLTOOL = @DLLTOOL@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +FGREP = @FGREP@ +GREP = @GREP@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBM = @LIBM@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ +MAKEINFO = @MAKEINFO@ +MANIFEST_TOOL = @MANIFEST_TOOL@ +MKDIR_P = @MKDIR_P@ +NM = @NM@ +NMEDIT = @NMEDIT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +PROJ_CFLAGS = @PROJ_CFLAGS@ +PROJ_LIBS = @PROJ_LIBS@ +RANLIB = @RANLIB@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHAPELIB_SO_VERSION = @SHAPELIB_SO_VERSION@ +SHELL = @SHELL@ +STRIP = @STRIP@ +VERSION = @VERSION@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +runstatedir = @runstatedir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +CONTRIB_CFLAGS = -I$(top_srcdir) -DDEBUG -DDEBUG2 + +# Extra files to distribute in the source tarball +EXTRA_DIST = makefile.vc tests/shpproj.sh doc/Shape_PointInPoly_README.txt doc/shpproj.txt doc/shpsort.txt ShapeFileII.pas +dbfcat_SOURCES = dbfcat.c +dbfcat_CPPFLAGS = $(CONTRIB_CFLAGS) +dbfcat_LDADD = $(top_builddir)/libshp.la +dbfinfo_SOURCES = dbfinfo.c +dbfinfo_CPPFLAGS = $(CONTRIB_CFLAGS) +dbfinfo_LDADD = $(top_builddir)/libshp.la +shpcat_SOURCES = shpcat.c +shpcat_CPPFLAGS = $(CONTRIB_CFLAGS) +shpcat_LDADD = $(top_builddir)/libshp.la +shpdxf_SOURCES = shpdxf.c +shpdxf_CPPFLAGS = $(CONTRIB_CFLAGS) +shpdxf_LDADD = $(top_builddir)/libshp.la +shpfix_SOURCES = shpfix.c +shpfix_CPPFLAGS = $(CONTRIB_CFLAGS) +shpfix_LDADD = $(top_builddir)/libshp.la +shpsort_SOURCES = shpsort.c +shpsort_CPPFLAGS = $(CONTRIB_CFLAGS) +shpsort_LDADD = $(top_builddir)/libshp.la -lm +Shape_PointInPoly_SOURCES = Shape_PointInPoly.cpp +Shape_PointInPoly_CPPFLAGS = $(CONTRIB_CFLAGS) +Shape_PointInPoly_LDADD = $(top_builddir)/libshp.la +shpcentrd_SOURCES = shpcentrd.c shpgeo.c shpgeo.h +shpcentrd_CPPFLAGS = $(CONTRIB_CFLAGS) $(PROJ_CFLAGS) +shpcentrd_LDADD = $(top_builddir)/libshp.la $(PROJ_LIBS) -lm +shpdata_SOURCES = shpdata.c shpgeo.c shpgeo.h +shpdata_CPPFLAGS = $(CONTRIB_CFLAGS) $(PROJ_CFLAGS) +shpdata_LDADD = $(top_builddir)/libshp.la $(PROJ_LIBS) -lm +shpinfo_SOURCES = shpinfo.c shpgeo.c shpgeo.h +shpinfo_CPPFLAGS = $(CONTRIB_CFLAGS) $(PROJ_CFLAGS) +shpinfo_LDADD = $(top_builddir)/libshp.la $(PROJ_LIBS) -lm +shpproj_SOURCES = shpproj.c shpgeo.c shpgeo.h +shpproj_CPPFLAGS = $(CONTRIB_CFLAGS) $(PROJ_CFLAGS) +shpproj_LDADD = $(top_builddir)/libshp.la $(PROJ_LIBS) -lm +shpwkb_SOURCES = shpwkb.c shpgeo.c shpgeo.h +shpwkb_CPPFLAGS = $(CONTRIB_CFLAGS) $(PROJ_CFLAGS) +shpwkb_LDADD = $(top_builddir)/libshp.la $(PROJ_LIBS) -lm + +# Tests +TESTS_ENVIRONMENT = top_builddir=$(abs_top_builddir) +TESTS = tests/shpproj.sh +all: all-am + +.SUFFIXES: +.SUFFIXES: .c .cpp .lo .log .o .obj .test .test$(EXEEXT) .trs +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu contrib/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu contrib/Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): +install-binPROGRAMS: $(bin_PROGRAMS) + @$(NORMAL_INSTALL) + @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(bindir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(bindir)" || exit 1; \ + fi; \ + for p in $$list; do echo "$$p $$p"; done | \ + sed 's/$(EXEEXT)$$//' | \ + while read p p1; do if test -f $$p \ + || test -f $$p1 \ + ; then echo "$$p"; echo "$$p"; else :; fi; \ + done | \ + sed -e 'p;s,.*/,,;n;h' \ + -e 's|.*|.|' \ + -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \ + sed 'N;N;N;s,\n, ,g' | \ + $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \ + { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ + if ($$2 == $$4) files[d] = files[d] " " $$1; \ + else { print "f", $$3 "/" $$4, $$1; } } \ + END { for (d in files) print "f", d, files[d] }' | \ + while read type dir files; do \ + if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ + test -z "$$files" || { \ + echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(bindir)$$dir'"; \ + $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(bindir)$$dir" || exit $$?; \ + } \ + ; done + +uninstall-binPROGRAMS: + @$(NORMAL_UNINSTALL) + @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \ + files=`for p in $$list; do echo "$$p"; done | \ + sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \ + -e 's/$$/$(EXEEXT)/' \ + `; \ + test -n "$$list" || exit 0; \ + echo " ( cd '$(DESTDIR)$(bindir)' && rm -f" $$files ")"; \ + cd "$(DESTDIR)$(bindir)" && rm -f $$files + +clean-binPROGRAMS: + @list='$(bin_PROGRAMS)'; test -n "$$list" || exit 0; \ + echo " rm -f" $$list; \ + rm -f $$list || exit $$?; \ + test -n "$(EXEEXT)" || exit 0; \ + list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ + echo " rm -f" $$list; \ + rm -f $$list + +Shape_PointInPoly$(EXEEXT): $(Shape_PointInPoly_OBJECTS) $(Shape_PointInPoly_DEPENDENCIES) $(EXTRA_Shape_PointInPoly_DEPENDENCIES) + @rm -f Shape_PointInPoly$(EXEEXT) + $(AM_V_CXXLD)$(CXXLINK) $(Shape_PointInPoly_OBJECTS) $(Shape_PointInPoly_LDADD) $(LIBS) + +dbfcat$(EXEEXT): $(dbfcat_OBJECTS) $(dbfcat_DEPENDENCIES) $(EXTRA_dbfcat_DEPENDENCIES) + @rm -f dbfcat$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(dbfcat_OBJECTS) $(dbfcat_LDADD) $(LIBS) + +dbfinfo$(EXEEXT): $(dbfinfo_OBJECTS) $(dbfinfo_DEPENDENCIES) $(EXTRA_dbfinfo_DEPENDENCIES) + @rm -f dbfinfo$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(dbfinfo_OBJECTS) $(dbfinfo_LDADD) $(LIBS) + +shpcat$(EXEEXT): $(shpcat_OBJECTS) $(shpcat_DEPENDENCIES) $(EXTRA_shpcat_DEPENDENCIES) + @rm -f shpcat$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(shpcat_OBJECTS) $(shpcat_LDADD) $(LIBS) + +shpcentrd$(EXEEXT): $(shpcentrd_OBJECTS) $(shpcentrd_DEPENDENCIES) $(EXTRA_shpcentrd_DEPENDENCIES) + @rm -f shpcentrd$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(shpcentrd_OBJECTS) $(shpcentrd_LDADD) $(LIBS) + +shpdata$(EXEEXT): $(shpdata_OBJECTS) $(shpdata_DEPENDENCIES) $(EXTRA_shpdata_DEPENDENCIES) + @rm -f shpdata$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(shpdata_OBJECTS) $(shpdata_LDADD) $(LIBS) + +shpdxf$(EXEEXT): $(shpdxf_OBJECTS) $(shpdxf_DEPENDENCIES) $(EXTRA_shpdxf_DEPENDENCIES) + @rm -f shpdxf$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(shpdxf_OBJECTS) $(shpdxf_LDADD) $(LIBS) + +shpfix$(EXEEXT): $(shpfix_OBJECTS) $(shpfix_DEPENDENCIES) $(EXTRA_shpfix_DEPENDENCIES) + @rm -f shpfix$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(shpfix_OBJECTS) $(shpfix_LDADD) $(LIBS) + +shpinfo$(EXEEXT): $(shpinfo_OBJECTS) $(shpinfo_DEPENDENCIES) $(EXTRA_shpinfo_DEPENDENCIES) + @rm -f shpinfo$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(shpinfo_OBJECTS) $(shpinfo_LDADD) $(LIBS) + +shpproj$(EXEEXT): $(shpproj_OBJECTS) $(shpproj_DEPENDENCIES) $(EXTRA_shpproj_DEPENDENCIES) + @rm -f shpproj$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(shpproj_OBJECTS) $(shpproj_LDADD) $(LIBS) + +shpsort$(EXEEXT): $(shpsort_OBJECTS) $(shpsort_DEPENDENCIES) $(EXTRA_shpsort_DEPENDENCIES) + @rm -f shpsort$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(shpsort_OBJECTS) $(shpsort_LDADD) $(LIBS) + +shpwkb$(EXEEXT): $(shpwkb_OBJECTS) $(shpwkb_DEPENDENCIES) $(EXTRA_shpwkb_DEPENDENCIES) + @rm -f shpwkb$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(shpwkb_OBJECTS) $(shpwkb_LDADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Shape_PointInPoly-Shape_PointInPoly.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dbfcat-dbfcat.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dbfinfo-dbfinfo.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/shpcat-shpcat.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/shpcentrd-shpcentrd.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/shpcentrd-shpgeo.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/shpdata-shpdata.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/shpdata-shpgeo.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/shpdxf-shpdxf.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/shpfix-shpfix.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/shpinfo-shpgeo.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/shpinfo-shpinfo.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/shpproj-shpgeo.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/shpproj-shpproj.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/shpsort-shpsort.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/shpwkb-shpgeo.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/shpwkb-shpwkb.Po@am__quote@ + +.c.o: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< + +.c.obj: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` + +.c.lo: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< + +dbfcat-dbfcat.o: dbfcat.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(dbfcat_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT dbfcat-dbfcat.o -MD -MP -MF $(DEPDIR)/dbfcat-dbfcat.Tpo -c -o dbfcat-dbfcat.o `test -f 'dbfcat.c' || echo '$(srcdir)/'`dbfcat.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/dbfcat-dbfcat.Tpo $(DEPDIR)/dbfcat-dbfcat.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='dbfcat.c' object='dbfcat-dbfcat.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(dbfcat_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o dbfcat-dbfcat.o `test -f 'dbfcat.c' || echo '$(srcdir)/'`dbfcat.c + +dbfcat-dbfcat.obj: dbfcat.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(dbfcat_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT dbfcat-dbfcat.obj -MD -MP -MF $(DEPDIR)/dbfcat-dbfcat.Tpo -c -o dbfcat-dbfcat.obj `if test -f 'dbfcat.c'; then $(CYGPATH_W) 'dbfcat.c'; else $(CYGPATH_W) '$(srcdir)/dbfcat.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/dbfcat-dbfcat.Tpo $(DEPDIR)/dbfcat-dbfcat.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='dbfcat.c' object='dbfcat-dbfcat.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(dbfcat_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o dbfcat-dbfcat.obj `if test -f 'dbfcat.c'; then $(CYGPATH_W) 'dbfcat.c'; else $(CYGPATH_W) '$(srcdir)/dbfcat.c'; fi` + +dbfinfo-dbfinfo.o: dbfinfo.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(dbfinfo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT dbfinfo-dbfinfo.o -MD -MP -MF $(DEPDIR)/dbfinfo-dbfinfo.Tpo -c -o dbfinfo-dbfinfo.o `test -f 'dbfinfo.c' || echo '$(srcdir)/'`dbfinfo.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/dbfinfo-dbfinfo.Tpo $(DEPDIR)/dbfinfo-dbfinfo.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='dbfinfo.c' object='dbfinfo-dbfinfo.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(dbfinfo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o dbfinfo-dbfinfo.o `test -f 'dbfinfo.c' || echo '$(srcdir)/'`dbfinfo.c + +dbfinfo-dbfinfo.obj: dbfinfo.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(dbfinfo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT dbfinfo-dbfinfo.obj -MD -MP -MF $(DEPDIR)/dbfinfo-dbfinfo.Tpo -c -o dbfinfo-dbfinfo.obj `if test -f 'dbfinfo.c'; then $(CYGPATH_W) 'dbfinfo.c'; else $(CYGPATH_W) '$(srcdir)/dbfinfo.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/dbfinfo-dbfinfo.Tpo $(DEPDIR)/dbfinfo-dbfinfo.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='dbfinfo.c' object='dbfinfo-dbfinfo.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(dbfinfo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o dbfinfo-dbfinfo.obj `if test -f 'dbfinfo.c'; then $(CYGPATH_W) 'dbfinfo.c'; else $(CYGPATH_W) '$(srcdir)/dbfinfo.c'; fi` + +shpcat-shpcat.o: shpcat.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(shpcat_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT shpcat-shpcat.o -MD -MP -MF $(DEPDIR)/shpcat-shpcat.Tpo -c -o shpcat-shpcat.o `test -f 'shpcat.c' || echo '$(srcdir)/'`shpcat.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/shpcat-shpcat.Tpo $(DEPDIR)/shpcat-shpcat.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='shpcat.c' object='shpcat-shpcat.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(shpcat_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o shpcat-shpcat.o `test -f 'shpcat.c' || echo '$(srcdir)/'`shpcat.c + +shpcat-shpcat.obj: shpcat.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(shpcat_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT shpcat-shpcat.obj -MD -MP -MF $(DEPDIR)/shpcat-shpcat.Tpo -c -o shpcat-shpcat.obj `if test -f 'shpcat.c'; then $(CYGPATH_W) 'shpcat.c'; else $(CYGPATH_W) '$(srcdir)/shpcat.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/shpcat-shpcat.Tpo $(DEPDIR)/shpcat-shpcat.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='shpcat.c' object='shpcat-shpcat.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(shpcat_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o shpcat-shpcat.obj `if test -f 'shpcat.c'; then $(CYGPATH_W) 'shpcat.c'; else $(CYGPATH_W) '$(srcdir)/shpcat.c'; fi` + +shpcentrd-shpcentrd.o: shpcentrd.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(shpcentrd_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT shpcentrd-shpcentrd.o -MD -MP -MF $(DEPDIR)/shpcentrd-shpcentrd.Tpo -c -o shpcentrd-shpcentrd.o `test -f 'shpcentrd.c' || echo '$(srcdir)/'`shpcentrd.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/shpcentrd-shpcentrd.Tpo $(DEPDIR)/shpcentrd-shpcentrd.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='shpcentrd.c' object='shpcentrd-shpcentrd.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(shpcentrd_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o shpcentrd-shpcentrd.o `test -f 'shpcentrd.c' || echo '$(srcdir)/'`shpcentrd.c + +shpcentrd-shpcentrd.obj: shpcentrd.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(shpcentrd_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT shpcentrd-shpcentrd.obj -MD -MP -MF $(DEPDIR)/shpcentrd-shpcentrd.Tpo -c -o shpcentrd-shpcentrd.obj `if test -f 'shpcentrd.c'; then $(CYGPATH_W) 'shpcentrd.c'; else $(CYGPATH_W) '$(srcdir)/shpcentrd.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/shpcentrd-shpcentrd.Tpo $(DEPDIR)/shpcentrd-shpcentrd.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='shpcentrd.c' object='shpcentrd-shpcentrd.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(shpcentrd_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o shpcentrd-shpcentrd.obj `if test -f 'shpcentrd.c'; then $(CYGPATH_W) 'shpcentrd.c'; else $(CYGPATH_W) '$(srcdir)/shpcentrd.c'; fi` + +shpcentrd-shpgeo.o: shpgeo.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(shpcentrd_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT shpcentrd-shpgeo.o -MD -MP -MF $(DEPDIR)/shpcentrd-shpgeo.Tpo -c -o shpcentrd-shpgeo.o `test -f 'shpgeo.c' || echo '$(srcdir)/'`shpgeo.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/shpcentrd-shpgeo.Tpo $(DEPDIR)/shpcentrd-shpgeo.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='shpgeo.c' object='shpcentrd-shpgeo.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(shpcentrd_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o shpcentrd-shpgeo.o `test -f 'shpgeo.c' || echo '$(srcdir)/'`shpgeo.c + +shpcentrd-shpgeo.obj: shpgeo.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(shpcentrd_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT shpcentrd-shpgeo.obj -MD -MP -MF $(DEPDIR)/shpcentrd-shpgeo.Tpo -c -o shpcentrd-shpgeo.obj `if test -f 'shpgeo.c'; then $(CYGPATH_W) 'shpgeo.c'; else $(CYGPATH_W) '$(srcdir)/shpgeo.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/shpcentrd-shpgeo.Tpo $(DEPDIR)/shpcentrd-shpgeo.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='shpgeo.c' object='shpcentrd-shpgeo.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(shpcentrd_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o shpcentrd-shpgeo.obj `if test -f 'shpgeo.c'; then $(CYGPATH_W) 'shpgeo.c'; else $(CYGPATH_W) '$(srcdir)/shpgeo.c'; fi` + +shpdata-shpdata.o: shpdata.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(shpdata_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT shpdata-shpdata.o -MD -MP -MF $(DEPDIR)/shpdata-shpdata.Tpo -c -o shpdata-shpdata.o `test -f 'shpdata.c' || echo '$(srcdir)/'`shpdata.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/shpdata-shpdata.Tpo $(DEPDIR)/shpdata-shpdata.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='shpdata.c' object='shpdata-shpdata.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(shpdata_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o shpdata-shpdata.o `test -f 'shpdata.c' || echo '$(srcdir)/'`shpdata.c + +shpdata-shpdata.obj: shpdata.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(shpdata_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT shpdata-shpdata.obj -MD -MP -MF $(DEPDIR)/shpdata-shpdata.Tpo -c -o shpdata-shpdata.obj `if test -f 'shpdata.c'; then $(CYGPATH_W) 'shpdata.c'; else $(CYGPATH_W) '$(srcdir)/shpdata.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/shpdata-shpdata.Tpo $(DEPDIR)/shpdata-shpdata.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='shpdata.c' object='shpdata-shpdata.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(shpdata_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o shpdata-shpdata.obj `if test -f 'shpdata.c'; then $(CYGPATH_W) 'shpdata.c'; else $(CYGPATH_W) '$(srcdir)/shpdata.c'; fi` + +shpdata-shpgeo.o: shpgeo.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(shpdata_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT shpdata-shpgeo.o -MD -MP -MF $(DEPDIR)/shpdata-shpgeo.Tpo -c -o shpdata-shpgeo.o `test -f 'shpgeo.c' || echo '$(srcdir)/'`shpgeo.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/shpdata-shpgeo.Tpo $(DEPDIR)/shpdata-shpgeo.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='shpgeo.c' object='shpdata-shpgeo.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(shpdata_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o shpdata-shpgeo.o `test -f 'shpgeo.c' || echo '$(srcdir)/'`shpgeo.c + +shpdata-shpgeo.obj: shpgeo.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(shpdata_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT shpdata-shpgeo.obj -MD -MP -MF $(DEPDIR)/shpdata-shpgeo.Tpo -c -o shpdata-shpgeo.obj `if test -f 'shpgeo.c'; then $(CYGPATH_W) 'shpgeo.c'; else $(CYGPATH_W) '$(srcdir)/shpgeo.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/shpdata-shpgeo.Tpo $(DEPDIR)/shpdata-shpgeo.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='shpgeo.c' object='shpdata-shpgeo.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(shpdata_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o shpdata-shpgeo.obj `if test -f 'shpgeo.c'; then $(CYGPATH_W) 'shpgeo.c'; else $(CYGPATH_W) '$(srcdir)/shpgeo.c'; fi` + +shpdxf-shpdxf.o: shpdxf.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(shpdxf_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT shpdxf-shpdxf.o -MD -MP -MF $(DEPDIR)/shpdxf-shpdxf.Tpo -c -o shpdxf-shpdxf.o `test -f 'shpdxf.c' || echo '$(srcdir)/'`shpdxf.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/shpdxf-shpdxf.Tpo $(DEPDIR)/shpdxf-shpdxf.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='shpdxf.c' object='shpdxf-shpdxf.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(shpdxf_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o shpdxf-shpdxf.o `test -f 'shpdxf.c' || echo '$(srcdir)/'`shpdxf.c + +shpdxf-shpdxf.obj: shpdxf.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(shpdxf_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT shpdxf-shpdxf.obj -MD -MP -MF $(DEPDIR)/shpdxf-shpdxf.Tpo -c -o shpdxf-shpdxf.obj `if test -f 'shpdxf.c'; then $(CYGPATH_W) 'shpdxf.c'; else $(CYGPATH_W) '$(srcdir)/shpdxf.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/shpdxf-shpdxf.Tpo $(DEPDIR)/shpdxf-shpdxf.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='shpdxf.c' object='shpdxf-shpdxf.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(shpdxf_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o shpdxf-shpdxf.obj `if test -f 'shpdxf.c'; then $(CYGPATH_W) 'shpdxf.c'; else $(CYGPATH_W) '$(srcdir)/shpdxf.c'; fi` + +shpfix-shpfix.o: shpfix.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(shpfix_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT shpfix-shpfix.o -MD -MP -MF $(DEPDIR)/shpfix-shpfix.Tpo -c -o shpfix-shpfix.o `test -f 'shpfix.c' || echo '$(srcdir)/'`shpfix.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/shpfix-shpfix.Tpo $(DEPDIR)/shpfix-shpfix.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='shpfix.c' object='shpfix-shpfix.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(shpfix_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o shpfix-shpfix.o `test -f 'shpfix.c' || echo '$(srcdir)/'`shpfix.c + +shpfix-shpfix.obj: shpfix.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(shpfix_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT shpfix-shpfix.obj -MD -MP -MF $(DEPDIR)/shpfix-shpfix.Tpo -c -o shpfix-shpfix.obj `if test -f 'shpfix.c'; then $(CYGPATH_W) 'shpfix.c'; else $(CYGPATH_W) '$(srcdir)/shpfix.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/shpfix-shpfix.Tpo $(DEPDIR)/shpfix-shpfix.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='shpfix.c' object='shpfix-shpfix.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(shpfix_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o shpfix-shpfix.obj `if test -f 'shpfix.c'; then $(CYGPATH_W) 'shpfix.c'; else $(CYGPATH_W) '$(srcdir)/shpfix.c'; fi` + +shpinfo-shpinfo.o: shpinfo.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(shpinfo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT shpinfo-shpinfo.o -MD -MP -MF $(DEPDIR)/shpinfo-shpinfo.Tpo -c -o shpinfo-shpinfo.o `test -f 'shpinfo.c' || echo '$(srcdir)/'`shpinfo.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/shpinfo-shpinfo.Tpo $(DEPDIR)/shpinfo-shpinfo.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='shpinfo.c' object='shpinfo-shpinfo.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(shpinfo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o shpinfo-shpinfo.o `test -f 'shpinfo.c' || echo '$(srcdir)/'`shpinfo.c + +shpinfo-shpinfo.obj: shpinfo.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(shpinfo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT shpinfo-shpinfo.obj -MD -MP -MF $(DEPDIR)/shpinfo-shpinfo.Tpo -c -o shpinfo-shpinfo.obj `if test -f 'shpinfo.c'; then $(CYGPATH_W) 'shpinfo.c'; else $(CYGPATH_W) '$(srcdir)/shpinfo.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/shpinfo-shpinfo.Tpo $(DEPDIR)/shpinfo-shpinfo.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='shpinfo.c' object='shpinfo-shpinfo.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(shpinfo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o shpinfo-shpinfo.obj `if test -f 'shpinfo.c'; then $(CYGPATH_W) 'shpinfo.c'; else $(CYGPATH_W) '$(srcdir)/shpinfo.c'; fi` + +shpinfo-shpgeo.o: shpgeo.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(shpinfo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT shpinfo-shpgeo.o -MD -MP -MF $(DEPDIR)/shpinfo-shpgeo.Tpo -c -o shpinfo-shpgeo.o `test -f 'shpgeo.c' || echo '$(srcdir)/'`shpgeo.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/shpinfo-shpgeo.Tpo $(DEPDIR)/shpinfo-shpgeo.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='shpgeo.c' object='shpinfo-shpgeo.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(shpinfo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o shpinfo-shpgeo.o `test -f 'shpgeo.c' || echo '$(srcdir)/'`shpgeo.c + +shpinfo-shpgeo.obj: shpgeo.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(shpinfo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT shpinfo-shpgeo.obj -MD -MP -MF $(DEPDIR)/shpinfo-shpgeo.Tpo -c -o shpinfo-shpgeo.obj `if test -f 'shpgeo.c'; then $(CYGPATH_W) 'shpgeo.c'; else $(CYGPATH_W) '$(srcdir)/shpgeo.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/shpinfo-shpgeo.Tpo $(DEPDIR)/shpinfo-shpgeo.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='shpgeo.c' object='shpinfo-shpgeo.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(shpinfo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o shpinfo-shpgeo.obj `if test -f 'shpgeo.c'; then $(CYGPATH_W) 'shpgeo.c'; else $(CYGPATH_W) '$(srcdir)/shpgeo.c'; fi` + +shpproj-shpproj.o: shpproj.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(shpproj_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT shpproj-shpproj.o -MD -MP -MF $(DEPDIR)/shpproj-shpproj.Tpo -c -o shpproj-shpproj.o `test -f 'shpproj.c' || echo '$(srcdir)/'`shpproj.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/shpproj-shpproj.Tpo $(DEPDIR)/shpproj-shpproj.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='shpproj.c' object='shpproj-shpproj.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(shpproj_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o shpproj-shpproj.o `test -f 'shpproj.c' || echo '$(srcdir)/'`shpproj.c + +shpproj-shpproj.obj: shpproj.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(shpproj_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT shpproj-shpproj.obj -MD -MP -MF $(DEPDIR)/shpproj-shpproj.Tpo -c -o shpproj-shpproj.obj `if test -f 'shpproj.c'; then $(CYGPATH_W) 'shpproj.c'; else $(CYGPATH_W) '$(srcdir)/shpproj.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/shpproj-shpproj.Tpo $(DEPDIR)/shpproj-shpproj.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='shpproj.c' object='shpproj-shpproj.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(shpproj_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o shpproj-shpproj.obj `if test -f 'shpproj.c'; then $(CYGPATH_W) 'shpproj.c'; else $(CYGPATH_W) '$(srcdir)/shpproj.c'; fi` + +shpproj-shpgeo.o: shpgeo.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(shpproj_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT shpproj-shpgeo.o -MD -MP -MF $(DEPDIR)/shpproj-shpgeo.Tpo -c -o shpproj-shpgeo.o `test -f 'shpgeo.c' || echo '$(srcdir)/'`shpgeo.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/shpproj-shpgeo.Tpo $(DEPDIR)/shpproj-shpgeo.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='shpgeo.c' object='shpproj-shpgeo.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(shpproj_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o shpproj-shpgeo.o `test -f 'shpgeo.c' || echo '$(srcdir)/'`shpgeo.c + +shpproj-shpgeo.obj: shpgeo.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(shpproj_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT shpproj-shpgeo.obj -MD -MP -MF $(DEPDIR)/shpproj-shpgeo.Tpo -c -o shpproj-shpgeo.obj `if test -f 'shpgeo.c'; then $(CYGPATH_W) 'shpgeo.c'; else $(CYGPATH_W) '$(srcdir)/shpgeo.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/shpproj-shpgeo.Tpo $(DEPDIR)/shpproj-shpgeo.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='shpgeo.c' object='shpproj-shpgeo.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(shpproj_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o shpproj-shpgeo.obj `if test -f 'shpgeo.c'; then $(CYGPATH_W) 'shpgeo.c'; else $(CYGPATH_W) '$(srcdir)/shpgeo.c'; fi` + +shpsort-shpsort.o: shpsort.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(shpsort_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT shpsort-shpsort.o -MD -MP -MF $(DEPDIR)/shpsort-shpsort.Tpo -c -o shpsort-shpsort.o `test -f 'shpsort.c' || echo '$(srcdir)/'`shpsort.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/shpsort-shpsort.Tpo $(DEPDIR)/shpsort-shpsort.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='shpsort.c' object='shpsort-shpsort.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(shpsort_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o shpsort-shpsort.o `test -f 'shpsort.c' || echo '$(srcdir)/'`shpsort.c + +shpsort-shpsort.obj: shpsort.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(shpsort_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT shpsort-shpsort.obj -MD -MP -MF $(DEPDIR)/shpsort-shpsort.Tpo -c -o shpsort-shpsort.obj `if test -f 'shpsort.c'; then $(CYGPATH_W) 'shpsort.c'; else $(CYGPATH_W) '$(srcdir)/shpsort.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/shpsort-shpsort.Tpo $(DEPDIR)/shpsort-shpsort.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='shpsort.c' object='shpsort-shpsort.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(shpsort_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o shpsort-shpsort.obj `if test -f 'shpsort.c'; then $(CYGPATH_W) 'shpsort.c'; else $(CYGPATH_W) '$(srcdir)/shpsort.c'; fi` + +shpwkb-shpwkb.o: shpwkb.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(shpwkb_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT shpwkb-shpwkb.o -MD -MP -MF $(DEPDIR)/shpwkb-shpwkb.Tpo -c -o shpwkb-shpwkb.o `test -f 'shpwkb.c' || echo '$(srcdir)/'`shpwkb.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/shpwkb-shpwkb.Tpo $(DEPDIR)/shpwkb-shpwkb.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='shpwkb.c' object='shpwkb-shpwkb.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(shpwkb_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o shpwkb-shpwkb.o `test -f 'shpwkb.c' || echo '$(srcdir)/'`shpwkb.c + +shpwkb-shpwkb.obj: shpwkb.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(shpwkb_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT shpwkb-shpwkb.obj -MD -MP -MF $(DEPDIR)/shpwkb-shpwkb.Tpo -c -o shpwkb-shpwkb.obj `if test -f 'shpwkb.c'; then $(CYGPATH_W) 'shpwkb.c'; else $(CYGPATH_W) '$(srcdir)/shpwkb.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/shpwkb-shpwkb.Tpo $(DEPDIR)/shpwkb-shpwkb.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='shpwkb.c' object='shpwkb-shpwkb.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(shpwkb_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o shpwkb-shpwkb.obj `if test -f 'shpwkb.c'; then $(CYGPATH_W) 'shpwkb.c'; else $(CYGPATH_W) '$(srcdir)/shpwkb.c'; fi` + +shpwkb-shpgeo.o: shpgeo.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(shpwkb_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT shpwkb-shpgeo.o -MD -MP -MF $(DEPDIR)/shpwkb-shpgeo.Tpo -c -o shpwkb-shpgeo.o `test -f 'shpgeo.c' || echo '$(srcdir)/'`shpgeo.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/shpwkb-shpgeo.Tpo $(DEPDIR)/shpwkb-shpgeo.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='shpgeo.c' object='shpwkb-shpgeo.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(shpwkb_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o shpwkb-shpgeo.o `test -f 'shpgeo.c' || echo '$(srcdir)/'`shpgeo.c + +shpwkb-shpgeo.obj: shpgeo.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(shpwkb_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT shpwkb-shpgeo.obj -MD -MP -MF $(DEPDIR)/shpwkb-shpgeo.Tpo -c -o shpwkb-shpgeo.obj `if test -f 'shpgeo.c'; then $(CYGPATH_W) 'shpgeo.c'; else $(CYGPATH_W) '$(srcdir)/shpgeo.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/shpwkb-shpgeo.Tpo $(DEPDIR)/shpwkb-shpgeo.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='shpgeo.c' object='shpwkb-shpgeo.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(shpwkb_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o shpwkb-shpgeo.obj `if test -f 'shpgeo.c'; then $(CYGPATH_W) 'shpgeo.c'; else $(CYGPATH_W) '$(srcdir)/shpgeo.c'; fi` + +.cpp.o: +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ $< + +.cpp.obj: +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'` + +.cpp.lo: +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LTCXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LTCXXCOMPILE) -c -o $@ $< + +Shape_PointInPoly-Shape_PointInPoly.o: Shape_PointInPoly.cpp +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(Shape_PointInPoly_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT Shape_PointInPoly-Shape_PointInPoly.o -MD -MP -MF $(DEPDIR)/Shape_PointInPoly-Shape_PointInPoly.Tpo -c -o Shape_PointInPoly-Shape_PointInPoly.o `test -f 'Shape_PointInPoly.cpp' || echo '$(srcdir)/'`Shape_PointInPoly.cpp +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/Shape_PointInPoly-Shape_PointInPoly.Tpo $(DEPDIR)/Shape_PointInPoly-Shape_PointInPoly.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='Shape_PointInPoly.cpp' object='Shape_PointInPoly-Shape_PointInPoly.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(Shape_PointInPoly_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o Shape_PointInPoly-Shape_PointInPoly.o `test -f 'Shape_PointInPoly.cpp' || echo '$(srcdir)/'`Shape_PointInPoly.cpp + +Shape_PointInPoly-Shape_PointInPoly.obj: Shape_PointInPoly.cpp +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(Shape_PointInPoly_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT Shape_PointInPoly-Shape_PointInPoly.obj -MD -MP -MF $(DEPDIR)/Shape_PointInPoly-Shape_PointInPoly.Tpo -c -o Shape_PointInPoly-Shape_PointInPoly.obj `if test -f 'Shape_PointInPoly.cpp'; then $(CYGPATH_W) 'Shape_PointInPoly.cpp'; else $(CYGPATH_W) '$(srcdir)/Shape_PointInPoly.cpp'; fi` +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/Shape_PointInPoly-Shape_PointInPoly.Tpo $(DEPDIR)/Shape_PointInPoly-Shape_PointInPoly.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='Shape_PointInPoly.cpp' object='Shape_PointInPoly-Shape_PointInPoly.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(Shape_PointInPoly_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o Shape_PointInPoly-Shape_PointInPoly.obj `if test -f 'Shape_PointInPoly.cpp'; then $(CYGPATH_W) 'Shape_PointInPoly.cpp'; else $(CYGPATH_W) '$(srcdir)/Shape_PointInPoly.cpp'; fi` + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-am +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + set x; \ + here=`pwd`; \ + $(am__define_uniq_tagged_files); \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: ctags-am + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-am + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +# Recover from deleted '.trs' file; this should ensure that +# "rm -f foo.log; make foo.trs" re-run 'foo.test', and re-create +# both 'foo.log' and 'foo.trs'. Break the recipe in two subshells +# to avoid problems with "make -n". +.log.trs: + rm -f $< $@ + $(MAKE) $(AM_MAKEFLAGS) $< + +# Leading 'am--fnord' is there to ensure the list of targets does not +# expand to empty, as could happen e.g. with make check TESTS=''. +am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck) +am--force-recheck: + @: + +$(TEST_SUITE_LOG): $(TEST_LOGS) + @$(am__set_TESTS_bases); \ + am__f_ok () { test -f "$$1" && test -r "$$1"; }; \ + redo_bases=`for i in $$bases; do \ + am__f_ok $$i.trs && am__f_ok $$i.log || echo $$i; \ + done`; \ + if test -n "$$redo_bases"; then \ + redo_logs=`for i in $$redo_bases; do echo $$i.log; done`; \ + redo_results=`for i in $$redo_bases; do echo $$i.trs; done`; \ + if $(am__make_dryrun); then :; else \ + rm -f $$redo_logs && rm -f $$redo_results || exit 1; \ + fi; \ + fi; \ + if test -n "$$am__remaking_logs"; then \ + echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \ + "recursion detected" >&2; \ + elif test -n "$$redo_logs"; then \ + am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \ + fi; \ + if $(am__make_dryrun); then :; else \ + st=0; \ + errmsg="fatal: making $(TEST_SUITE_LOG): failed to create"; \ + for i in $$redo_bases; do \ + test -f $$i.trs && test -r $$i.trs \ + || { echo "$$errmsg $$i.trs" >&2; st=1; }; \ + test -f $$i.log && test -r $$i.log \ + || { echo "$$errmsg $$i.log" >&2; st=1; }; \ + done; \ + test $$st -eq 0 || exit 1; \ + fi + @$(am__sh_e_setup); $(am__tty_colors); $(am__set_TESTS_bases); \ + ws='[ ]'; \ + results=`for b in $$bases; do echo $$b.trs; done`; \ + test -n "$$results" || results=/dev/null; \ + all=` grep "^$$ws*:test-result:" $$results | wc -l`; \ + pass=` grep "^$$ws*:test-result:$$ws*PASS" $$results | wc -l`; \ + fail=` grep "^$$ws*:test-result:$$ws*FAIL" $$results | wc -l`; \ + skip=` grep "^$$ws*:test-result:$$ws*SKIP" $$results | wc -l`; \ + xfail=`grep "^$$ws*:test-result:$$ws*XFAIL" $$results | wc -l`; \ + xpass=`grep "^$$ws*:test-result:$$ws*XPASS" $$results | wc -l`; \ + error=`grep "^$$ws*:test-result:$$ws*ERROR" $$results | wc -l`; \ + if test `expr $$fail + $$xpass + $$error` -eq 0; then \ + success=true; \ + else \ + success=false; \ + fi; \ + br='==================='; br=$$br$$br$$br$$br; \ + result_count () \ + { \ + if test x"$$1" = x"--maybe-color"; then \ + maybe_colorize=yes; \ + elif test x"$$1" = x"--no-color"; then \ + maybe_colorize=no; \ + else \ + echo "$@: invalid 'result_count' usage" >&2; exit 4; \ + fi; \ + shift; \ + desc=$$1 count=$$2; \ + if test $$maybe_colorize = yes && test $$count -gt 0; then \ + color_start=$$3 color_end=$$std; \ + else \ + color_start= color_end=; \ + fi; \ + echo "$${color_start}# $$desc $$count$${color_end}"; \ + }; \ + create_testsuite_report () \ + { \ + result_count $$1 "TOTAL:" $$all "$$brg"; \ + result_count $$1 "PASS: " $$pass "$$grn"; \ + result_count $$1 "SKIP: " $$skip "$$blu"; \ + result_count $$1 "XFAIL:" $$xfail "$$lgn"; \ + result_count $$1 "FAIL: " $$fail "$$red"; \ + result_count $$1 "XPASS:" $$xpass "$$red"; \ + result_count $$1 "ERROR:" $$error "$$mgn"; \ + }; \ + { \ + echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" | \ + $(am__rst_title); \ + create_testsuite_report --no-color; \ + echo; \ + echo ".. contents:: :depth: 2"; \ + echo; \ + for b in $$bases; do echo $$b; done \ + | $(am__create_global_log); \ + } >$(TEST_SUITE_LOG).tmp || exit 1; \ + mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG); \ + if $$success; then \ + col="$$grn"; \ + else \ + col="$$red"; \ + test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG); \ + fi; \ + echo "$${col}$$br$${std}"; \ + echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}"; \ + echo "$${col}$$br$${std}"; \ + create_testsuite_report --maybe-color; \ + echo "$$col$$br$$std"; \ + if $$success; then :; else \ + echo "$${col}See $(subdir)/$(TEST_SUITE_LOG)$${std}"; \ + if test -n "$(PACKAGE_BUGREPORT)"; then \ + echo "$${col}Please report to $(PACKAGE_BUGREPORT)$${std}"; \ + fi; \ + echo "$$col$$br$$std"; \ + fi; \ + $$success || exit 1 + +check-TESTS: + @list='$(RECHECK_LOGS)'; test -z "$$list" || rm -f $$list + @list='$(RECHECK_LOGS:.log=.trs)'; test -z "$$list" || rm -f $$list + @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + @set +e; $(am__set_TESTS_bases); \ + log_list=`for i in $$bases; do echo $$i.log; done`; \ + trs_list=`for i in $$bases; do echo $$i.trs; done`; \ + log_list=`echo $$log_list`; trs_list=`echo $$trs_list`; \ + $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) TEST_LOGS="$$log_list"; \ + exit $$?; +recheck: all + @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + @set +e; $(am__set_TESTS_bases); \ + bases=`for i in $$bases; do echo $$i; done \ + | $(am__list_recheck_tests)` || exit 1; \ + log_list=`for i in $$bases; do echo $$i.log; done`; \ + log_list=`echo $$log_list`; \ + $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) \ + am__force_recheck=am--force-recheck \ + TEST_LOGS="$$log_list"; \ + exit $$? +tests/shpproj.sh.log: tests/shpproj.sh + @p='tests/shpproj.sh'; \ + b='tests/shpproj.sh'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +.test.log: + @p='$<'; \ + $(am__set_b); \ + $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +@am__EXEEXT_TRUE@.test$(EXEEXT).log: +@am__EXEEXT_TRUE@ @p='$<'; \ +@am__EXEEXT_TRUE@ $(am__set_b); \ +@am__EXEEXT_TRUE@ $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ +@am__EXEEXT_TRUE@ --log-file $$b.log --trs-file $$b.trs \ +@am__EXEEXT_TRUE@ $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ +@am__EXEEXT_TRUE@ "$$tst" $(AM_TESTS_FD_REDIRECT) + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done +check-am: all-am + $(MAKE) $(AM_MAKEFLAGS) check-TESTS +check: check-am +all-am: Makefile $(PROGRAMS) +installdirs: + for dir in "$(DESTDIR)$(bindir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + -test -z "$(TEST_LOGS)" || rm -f $(TEST_LOGS) + -test -z "$(TEST_LOGS:.log=.trs)" || rm -f $(TEST_LOGS:.log=.trs) + -test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-binPROGRAMS clean-generic clean-libtool mostlyclean-am + +distclean: distclean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: install-binPROGRAMS + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-binPROGRAMS + +.MAKE: check-am install-am install-strip + +.PHONY: CTAGS GTAGS TAGS all all-am check check-TESTS check-am clean \ + clean-binPROGRAMS clean-generic clean-libtool cscopelist-am \ + ctags ctags-am distclean distclean-compile distclean-generic \ + distclean-libtool distclean-tags distdir dvi dvi-am html \ + html-am info info-am install install-am install-binPROGRAMS \ + install-data install-data-am install-dvi install-dvi-am \ + install-exec install-exec-am install-html install-html-am \ + install-info install-info-am install-man install-pdf \ + install-pdf-am install-ps install-ps-am install-strip \ + installcheck installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-compile \ + mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ + recheck tags tags-am uninstall uninstall-am \ + uninstall-binPROGRAMS + +.PRECIOUS: Makefile + + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/libs/shapelib/contrib/ShapeFileII.pas b/libs/shapelib/contrib/ShapeFileII.pas new file mode 100644 index 0000000..b7d0b7f --- /dev/null +++ b/libs/shapelib/contrib/ShapeFileII.pas @@ -0,0 +1,239 @@ +{ +/****************************************************************************** + * $Id: ShapeFileII.pas,v 1.4 2016-12-05 12:44:07 erouault Exp $ + * + * Project: Shapelib + * Purpose: Delphi Pascal interface to Shapelib. + * Author: Kevin Meyer (Kevin@CyberTracker.co.za) + * + ****************************************************************************** + * Copyright (c) 2002, Keven Meyer (Kevin@CyberTracker.co.za) + * + * This software is available under the following "MIT Style" license, + * or at the option of the licensee under the LGPL (see COPYING). This + * option is discussed in more detail in shapelib.html. + * + * -- + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included + * in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS + * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. + ****************************************************************************** + * + * $Log: ShapeFileII.pas,v $ + * Revision 1.4 2016-12-05 12:44:07 erouault + * * Major overhaul of Makefile build system to use autoconf/automake. + * + * * Warning fixes in contrib/ + * + * Revision 1.3 2003-05-14 20:04:51 warmerda + * Changed fpSHP and fpSHX to integer at suggestion of Ivan Lucena. + * + * Revision 1.2 2002/01/21 14:09:26 warmerda + * Fixed name. + * + * Revision 1.1 2002/01/17 14:30:37 warmerda + * New + * + */ +} +unit ShapeFileII; + +interface +//uses { uses clause } +// ; +{ Set compiler to pack on byte boundaries only } +{$ALIGN OFF} +{$OVERFLOWCHECKS OFF} +{$J-} +const + SHPT_NULL = 0; + SHPT_POINT = 1; + SHPT_ARC = 3; + SHPT_POLYGON = 5; + SHPT_MULTIPOINT = 8; + SHPT_POINTZ = 11; + SHPT_ARCZ = 13; + SHPT_POLYGONZ = 15; + SHPT_MULTIPOINTZ = 18; + SHPT_POINTM = 21; + SHPT_ARCM = 23; + SHPT_POLYGONM = 25; + SHPT_MULTIPOINTM = 28; + SHPT_MULTIPATCH = 31; + XBASE_FLDHDR_SZ = 32; + szAccessBRW = 'rb+'; + +// *********************** SHP support ************************ + +type +SHPObject = record + nSHPType, + nShapeId, + nParts : LongWord; + panPartStart, + panPartType : array of LongWord; + nVertices : LongWord; + padfX, padfY, padfZ, padfM : array of double; + dfXMin, dfYMin, dfZMin, dfMMin : double; + dfXMax, dfYMax, dfZMax, dfMMax : double; +end; +SHPObjectHandle = ^SHPObject; + +SHPBoundsArr = double; + +SHPInfo = record + fpSHP, + fpSHX : integer; + + nShapeType, + nFileSize, + nRecords, + nMaxRecords : LongWord; + panRecOffset, + panRecSize : array of LongWord; + adBoundsMin, adBoundsMax : SHPBoundsArr; + bUpdated : LongWord; +end; +SHPHandle = ^SHPInfo; + +// *********************** DBF support ************************ + +DBFInfo = record + fp : FILE; + nRecords, + nRecordLength, + nHeaderLength, + nFields : LongWord; + + panFieldOffset, + panFieldSize, + panFieldDecimals : array of LongWord; + + pachFieldType : LongWord; + pszHeader : PChar; + nCurrentRecord, + bCurrentRecordModified : LongWord; + pszCurrentRecord : PChar; + + bNoHeader, + bUpdated : LongWord; +end; +DBFHandle = ^DBFInfo; + +DBFFieldType = (DBFTString, DBFTInteger, DBFTDouble, DBFTInvalid) ; + +// *********************** SHP func declarations ************************ + +{$ALIGN ON} + +function SHPOpen(pszShapeFile, pszAccess : PChar) : SHPHandle;cdecl; +procedure SHPGetInfo(hSHP : SHPHandle; var pnEntities, pnShapeType : LongWord; var padfMinBoud, padfMaxBound : SHPBoundsArr);cdecl; +procedure SHPClose(hSHP : SHPHandle);cdecl; +function SHPReadObject(hSHP : SHPHandle; iShape : LongWord): SHPObjectHandle;cdecl; +function SHPCreate(pszShapeFile : PChar; nShapeType : LongWord):SHPHandle;cdecl; +function SHPWriteObject(hSHP : SHPHandle; iShape : LongWord; psObject : SHPObjectHandle): LongWord;cdecl; +function SHPCreateSimpleObject(nSHPType, nVertices : LongWord; var padfX, padfY, padfZ : double):SHPObjectHandle;cdecl; +procedure SHPDestroy(psObject : SHPObjectHandle);cdecl; + +procedure SHPComputeExtents(psObject : SHPObjectHandle);cdecl; +function SHPCreateObject(nSHPType, iShape, nParts : LongWord; var panPartStart, panPartType : LongWord; nVertices : LongWord; var padfX, padfY, padfZ, padfM : SHPBoundsArr): SHPObjectHandle;cdecl; + +function SHPTypeStr(pnShapeType : LongWord): string; + +// *********************** DBF func declarations ************************ + +function DBFOpen(pszDBFFile, pszAccess : PChar): DBFHandle;cdecl; +function DBFCreate(pszDBFFile : PChar): DBFHandle ;cdecl; +function DBFGetFieldCount(hDBF : DBFHandle) : LongWord ;cdecl; +function DBFGetRecordCount(hDBF : DBFHandle) : LongWord;cdecl; +function DBFGetFieldIndex(hDBF: DBFHandle; pszFieldName : PChar): LongWord;cdecl; +function DBFGetFieldInfo(hDBF : DBFHandle; iField : LongWord; pszFieldName : PChar; + var pnWidth, pnDecimals : LongWord): DBFFieldType;cdecl; +function DBFAddField(hDBF : DBFHandle; pszFieldName : PChar; + eType : DBFFieldType; nWidth, nDecimals : LongWord): LongWord;cdecl; + +function DBFReadIntegerAttribute(hDBF : DBFHandle;iShape, iField : LongWord ): LongWord;cdecl; +function DBFReadDoubleAttribute(hDBF : DBFHandle; iShape, iField : LongWord ):double;cdecl; +function DBFReadStringAttribute(hDBF : DBFHandle; iShape, iField : LongWord ) : pchar;cdecl; +function DBFIsAttributeNULL(hDBF : DBFHandle; iShape, iField : LongWord ): LongWord;cdecl; +function DBFWriteIntegerAttribute(hDBF : DBFHandle;iShape, iField, nFieldValue : LongWord): LongWord;cdecl; +function DBFWriteDoubleAttribute(hDBF : DBFHandle;iShape, iField : LongWord; + dFieldValue : double): LongWord ;cdecl; +function DBFWriteStringAttribute(hDBF : DBFHandle;iShape, iField : LongWord; + pszFieldValue : PChar): LongWord ;cdecl; +function DBFWriteNULLAttribute(hDBF : DBFHandle; iShape, iField : LongWord ) : LongWord;cdecl; +procedure DBFClose(hDBF : DBFHandle);cdecl; +function DBFGetNativeFieldType(hDBF : DBFHandle; iField : LongWord) : Char;cdecl; + +// *********************** SHP implementation ************************ +implementation +// ***************************************************************************** +function SHPCreateSimpleObject(nSHPType, nVertices : LongWord; var padfX, padfY, padfZ : double):SHPObjectHandle;external 'shapelib.dll' name 'SHPCreateSimpleObject'; +function SHPOpen(pszShapeFile, pszAccess : PChar) : SHPHandle; external 'shapelib.dll' name 'SHPOpen'; +procedure SHPGetInfo(hSHP : SHPHandle; var pnEntities, pnShapeType : LongWord; var padfMinBoud, padfMaxBound : SHPBoundsArr);external 'shapelib.dll' name 'SHPGetInfo'; +procedure SHPClose(hSHP : SHPHandle);external 'shapelib.dll' name 'SHPClose'; +function SHPReadObject(hSHP : SHPHandle; iShape : LongWord) : SHPObjectHandle;external 'shapelib.dll' name 'SHPReadObject'; +function SHPCreate(pszShapeFile : PChar; nShapeType : LongWord):SHPHandle;external 'shapelib.dll' name 'SHPCreate'; +function SHPWriteObject(hSHP : SHPHandle; iShape : LongWord; psObject : SHPObjectHandle): LongWord;cdecl;external 'shapelib.dll' name 'SHPWriteObject'; +procedure SHPDestroy(psObject : SHPObjectHandle);external 'shapelib.dll' name 'SHPDestroyObject'; +procedure SHPComputeExtents(psObject : SHPObjectHandle);external 'shapelib.dll' name 'SHPComputeExtents'; +function SHPCreateObject(nSHPType, iShape, nParts : LongWord; var panPartStart, panPartType : LongWord; nVertices : LongWord; var padfX, padfY, padfZ, padfM : SHPBoundsArr): SHPObjectHandle;external 'shapelib.dll' name 'SHPCreateObject'; +// ***************************************************************************** +function SHPTypeStr(pnShapeType : LongWord): string; +begin + case pnShapeType of + SHPT_NULL : result := 'NULL'; + SHPT_POINT : result := 'POINT'; + SHPT_ARC : result := 'ARC'; + SHPT_POLYGON : result := 'POLYGON'; + SHPT_MULTIPOINT : result := 'MULTIPOINT'; + SHPT_POINTZ : result := 'POINTZ'; + SHPT_ARCZ : result := 'ARCZ'; + SHPT_POLYGONZ : result := 'POLYGONZ'; + SHPT_MULTIPOINTZ : result := 'MULTIPOINTZ'; + SHPT_POINTM : result := 'POINTM'; + SHPT_ARCM : result := 'ARCM'; + SHPT_POLYGONM : result := 'POLYGONM'; + SHPT_MULTIPOINTM : result := 'MULTIPOINTM'; + SHPT_MULTIPATCH : result := 'MULTIPATCH'; + else + result := '--unknown--'; + end; +end; +// ***************************************************************************** +// ***************************************************************************** +function DBFOpen(pszDBFFile, pszAccess : PChar): DBFHandle;external 'shapelib.dll'; +function DBFCreate(pszDBFFile : PChar): DBFHandle ;external 'shapelib.dll'; +function DBFGetFieldCount(hDBF : DBFHandle) : LongWord ;external 'shapelib.dll'; +function DBFGetRecordCount(hDBF : DBFHandle) : LongWord;external 'shapelib.dll'; +function DBFGetFieldIndex(hDBF: DBFHandle; pszFieldName : PChar): LongWord;external 'shapelib.dll'; +function DBFGetFieldInfo(hDBF : DBFHandle; iField : LongWord; pszFieldName : PChar; var pnWidth, pnDecimals : LongWord): DBFFieldType;external 'shapelib.dll'; +function DBFAddField(hDBF : DBFHandle; pszFieldName : PChar; eType : DBFFieldType; nWidth, nDecimals : LongWord): LongWord;external 'shapelib.dll'; +function DBFReadIntegerAttribute(hDBF : DBFHandle;iShape, iField : LongWord ): LongWord;external 'shapelib.dll'; +function DBFReadDoubleAttribute(hDBF : DBFHandle; iShape, iField : LongWord ):double;external 'shapelib.dll'; +function DBFReadStringAttribute(hDBF : DBFHandle; iShape, iField : LongWord ) : pchar;external 'shapelib.dll'; +function DBFIsAttributeNULL(hDBF : DBFHandle; iShape, iField : LongWord ): LongWord;external 'shapelib.dll'; +function DBFWriteIntegerAttribute(hDBF : DBFHandle;iShape, iField, nFieldValue : LongWord): LongWord;external 'shapelib.dll'; +function DBFWriteDoubleAttribute(hDBF : DBFHandle;iShape, iField : LongWord; dFieldValue : double): LongWord ;external 'shapelib.dll'; +function DBFWriteStringAttribute(hDBF : DBFHandle;iShape, iField : LongWord; pszFieldValue : PChar): LongWord ;external 'shapelib.dll'; +function DBFWriteNULLAttribute(hDBF : DBFHandle; iShape, iField : LongWord ) : LongWord;external 'shapelib.dll'; +procedure DBFClose(hDBF : DBFHandle);external 'shapelib.dll'; +function DBFGetNativeFieldType(hDBF : DBFHandle; iField : LongWord) : Char;external 'shapelib.dll'; +// ***************************************************************************** + +end. diff --git a/libs/shapelib/contrib/Shape_PointInPoly.cpp b/libs/shapelib/contrib/Shape_PointInPoly.cpp new file mode 100644 index 0000000..010fa26 --- /dev/null +++ b/libs/shapelib/contrib/Shape_PointInPoly.cpp @@ -0,0 +1,243 @@ +/****************************************************************************** + * $Id: Shape_PointInPoly.cpp,v 1.2 2016-12-05 12:44:07 erouault Exp $ + * + * Project: Shapelib + * Purpose: Commandline program to generate points-in-polygons from a + * shapefile as a shapefile. + * Author: Marko Podgorsek, d-mon@siol.net + * + ****************************************************************************** + * Copyright (c) 2004, Marko Podgorsek, d-mon@siol.net + * + * This software is available under the following "MIT Style" license, + * or at the option of the licensee under the LGPL (see COPYING). This + * option is discussed in more detail in shapelib.html. + * + * -- + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included + * in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS + * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. + ****************************************************************************** + * + * $Log: Shape_PointInPoly.cpp,v $ + * Revision 1.2 2016-12-05 12:44:07 erouault + * * Major overhaul of Makefile build system to use autoconf/automake. + * + * * Warning fixes in contrib/ + * + * Revision 1.1 2004-01-09 16:47:57 fwarmerdam + * New + * + */ + +static char rcsid[] = + "$Id: Shape_PointInPoly.cpp,v 1.2 2016-12-05 12:44:07 erouault Exp $"; + +#include +#include +#include +#include + +#define MAXINTERSECTIONPOINTS 255 + +enum loopDir { + kExterior, + kInterior, + kError +}; + +struct DPoint2d +{ + DPoint2d() + { + x = y = 0.0; + }; + DPoint2d(double x, double y) + { + this->x = x; + this->y = y; + }; + double x,y; +}; + +struct IntersectPoint +{ + IntersectPoint(void) + { + x = y = 0.0; + boundry_nmb = 0; + loopdirection = kError; + }; + double x,y; + int boundry_nmb; + loopDir loopdirection; +}; + +loopDir LoopDirection(DPoint2d *vertices, int vertsize) +{ + int i; + double sum = 0.0; + for(i=0;i0) + return kInterior; + else + return kExterior; +} + +DPoint2d CreatePointInPoly(SHPObject *psShape, int quality) +{ + int i, j, k, end, vert, pointpos; + double part, dx, xmin, xmax, ymin, ymax, y, x3, x4, y3, y4, len, maxlen = 0; + DPoint2d *vertices; + loopDir direction; + IntersectPoint mp1, mp2, point1, point2, points[MAXINTERSECTIONPOINTS]; + + xmin = psShape->dfXMin; + ymin = psShape->dfYMin; + xmax = psShape->dfXMax; + ymax = psShape->dfYMax; + part = (ymax-ymin)/(quality+1); + dx = xmax-xmin; + for(i=0;inParts;j++) + { + if(j==psShape->nParts-1) + end = psShape->nVertices; + else + end = psShape->panPartStart[j+1]; + vertices = new DPoint2d [end-psShape->panPartStart[j]]; + for(k=psShape->panPartStart[j],vert=0;kpadfX[k]; + vertices[vert++].y = psShape->padfY[k]; + } + direction = LoopDirection(vertices, vert); + for(k=0;k= y && y4 < y) || (y3 <= y && y4 > y)) //I check >= only once, because if it's not checked now (y3) it will be in the next iteration (which is y4 now) + { + point1.boundry_nmb = j; + point1.loopdirection = direction; + x3 = vertices[k].x; + x4 = vertices[k+1].x; + if(y3==y) + { + point1.y = y3; + point1.x = x3; + if(direction == kInterior) //add point 2 times if the direction is interior, so that the final count of points is even + { + points[pointpos++]=point1; + } + } + else + { + point1.x = xmin+(((((x4-x3)*(y-y3))-((y4-y3)*(xmin-x3)))/((y4-y3)*dx))*dx); //striped down calculation of intersection of 2 lines + point1.y = y; + } + points[pointpos++]=point1; + } + } + delete [] vertices; + } + + for(j=1;j0;k--) + { + if(points[k].x < points[k-1].x) + { + point1 = points[k]; + points[k] = points[k-1]; + points[k-1] = point1; + } + else + { + break; + } + } + } + + for(j=0;j= maxlen) + { + maxlen = len; + mp1 = point1; + mp2 = point2; + } + } + } + } + + return DPoint2d((mp1.x+mp2.x)*0.5, (mp1.y+mp2.y)*0.5); +} + +int main(int argc, char* argv[]) +{ + if(argc != 3) + { + printf("Usage: %s shpfile_path quality\n", argv[0]); + return 1; + } + + int i, nEntities, quality; + SHPHandle hSHP; + SHPObject *psShape; + DPoint2d pt; + quality = atoi(argv[2]); + hSHP = SHPOpen(argv[1], "rb"); + SHPGetInfo(hSHP, &nEntities, NULL, NULL, NULL); + + printf("PointInPoly v1.0, by Marko Podgorsek\n----------------\n"); + for( i = 0; i < nEntities; i++ ) + { + psShape = SHPReadObject( hSHP, i ); + if(psShape->nSHPType == SHPT_POLYGON) + { + pt = CreatePointInPoly(psShape, quality); + printf("%d: x=%f y=%f\n",i, pt.x,pt.y); + } + SHPDestroyObject( psShape ); + } + + SHPClose(hSHP); + + return 0; +} + diff --git a/libs/shapelib/contrib/dbfcat.c b/libs/shapelib/contrib/dbfcat.c new file mode 100644 index 0000000..2c4eb9f --- /dev/null +++ b/libs/shapelib/contrib/dbfcat.c @@ -0,0 +1,166 @@ +/* + * Copyright (c) 1995 Frank Warmerdam + * + * This code is in the public domain. + * + * $Log: dbfcat.c,v $ + * Revision 1.2 2011-07-24 03:17:46 fwarmerdam + * include string.h and stdlib.h where needed in contrib (#2146) + * + * Revision 1.1 1999-05-26 02:56:31 candrsn + * updates to shpdxf, dbfinfo, port from Shapelib 1.1.5 of dbfcat and shpinfo + * + * Revision 1.3 1995/10/21 03:15:01 warmerda + * Changed to use binary file access. + * + * Revision 1.2 1995/08/04 03:16:22 warmerda + * Added header. + * + */ + +static char rcsid[] = + "$Id: dbfcat.c,v 1.2 2011-07-24 03:17:46 fwarmerdam Exp $"; + +#include +#include +#include "shapefil.h" + +int main( int argc, char ** argv ) + +{ + DBFHandle hDBF; + int *panWidth, i, iRecord; + char szFormat[32], szField[1024]; + char cTitle[32], nTitle[32]; + int nWidth, nDecimals; + int cnWidth, cnDecimals; + DBFHandle cDBF; + DBFFieldType hType,cType; + int ci, ciRecord; + char tfile[160]; + int hflds, j, cflds; + int verbose = 0; + int force = 0; + int mismatch = 0; + int matches = 0; + char fld_m[256]; + int shift = 0; + char type_names[4][15] = {"integer", "string", "double", "double"}; + + if( argc < 3 ) + { + printf( "dbfcat [-v] [-f] from_DBFfile to_DBFfile\n" ); + exit( 1 ); + } + + + if ( strcmp ("-v", argv[1] ) == 0 ) { shift = 1; verbose = 1; } + if ( strcmp ("-f", argv[1 + shift] ) == 0 ) { shift ++; force = 1; } + if ( strcmp ("-v", argv[1 + shift] ) == 0 ) { shift ++; verbose = 1; } + strcpy (tfile, argv[1 + shift]); + strcat (tfile, ".dbf"); + hDBF = DBFOpen( tfile, "rb" ); + if( hDBF == NULL ) + { + printf( "DBFOpen(%s.dbf,\"r\") failed for From_DBF.\n", tfile ); + exit( 2 ); + } + + strcpy (tfile, argv[2 + shift]); + strcat (tfile, ".dbf"); + + cDBF = DBFOpen( tfile, "rb+" ); + if( cDBF == NULL ) + { + printf( "DBFOpen(%s.dbf,\"rb+\") failed for To_DBF.\n", tfile ); + exit( 2 ); + } + + + if( DBFGetFieldCount(hDBF) == 0 ) + { + printf( "There are no fields in this table!\n" ); + exit( 3 ); + } + + hflds = DBFGetFieldCount(hDBF); + cflds = DBFGetFieldCount(cDBF); + + matches = 0; + for( i = 0; i < hflds; i++ ) + { + char szTitle[18]; + char cname[18]; + int j; + hType = DBFGetFieldInfo( hDBF, i, szTitle, &nWidth, &nDecimals ); + fld_m[i] = -1; + for ( j = 0; j < cflds; j ++ ) + { + cType = DBFGetFieldInfo( cDBF, j, cname, &cnWidth, &cnDecimals ); + if ( strcmp (cname, szTitle) == 0 ) + { + if ( hType != cType ) + { printf ("Incompatible fields %s(%s) != %s(%s),\n", + type_names[hType],nTitle,type_names[cType],cTitle); + mismatch = 1; + } + fld_m[i] = j; + if ( verbose ) + { printf("%s %s(%d,%d) <- %s %s(%d,%d)\n", cname, type_names[cType], + cnWidth, cnDecimals, + szTitle, type_names[hType], nWidth, nDecimals); } + j = cflds; + matches = 1; + } + } + } + + if ( (matches == 0 ) && !force ) { + printf ("ERROR: No field names match for tables, cannot proceed\n use -f to force processing using blank records\n"); + exit(-1); } + if ( mismatch && !force ) { + printf ("ERROR: field type mismatch cannot proceed\n use -f to force processing using attempted conversions\n"); + exit(-1); } + + for( iRecord = 0; iRecord < DBFGetRecordCount(hDBF); iRecord++ ) + { + ciRecord = DBFGetRecordCount( cDBF ); + for ( i = 0; i < hflds;i ++ ) + { + double cf; + ci = fld_m[i]; + if ( ci != -1 ) + { + cType = DBFGetFieldInfo( cDBF, ci, cTitle, &cnWidth, &cnDecimals ); + hType = DBFGetFieldInfo( hDBF, i, nTitle, &nWidth, &nDecimals ); + + switch( cType ) + { + case FTString: + DBFWriteStringAttribute(cDBF, ciRecord, ci, + (char *) DBFReadStringAttribute( hDBF, iRecord, i ) ); + break; + + case FTInteger: + DBFWriteIntegerAttribute(cDBF, ciRecord, ci, + (int) DBFReadIntegerAttribute( hDBF, iRecord, i ) ); + break; + + case FTDouble: +/* cf = DBFReadDoubleAttribute( hDBF, iRecord, i ); + printf ("%s <- %s (%f)\n", cTitle, nTitle, cf); +*/ + DBFWriteDoubleAttribute(cDBF, ciRecord, ci, + (double) DBFReadDoubleAttribute( hDBF, iRecord, i ) ); + break; + } + } + } /* fields names match */ + } + + if ( verbose ) { printf (" %d records appended \n\n", iRecord); } + DBFClose( hDBF ); + DBFClose( cDBF ); + + return( 0 ); +} diff --git a/libs/shapelib/contrib/dbfinfo.c b/libs/shapelib/contrib/dbfinfo.c new file mode 100644 index 0000000..6916dd5 --- /dev/null +++ b/libs/shapelib/contrib/dbfinfo.c @@ -0,0 +1,111 @@ +/* + * Copyright (c) 1999 Carl Anderson + * + * This code is in the public domain. + * + * This code is based in part on the earlier work of Frank Warmerdam + * + * requires shapelib 1.2 + * gcc dbfinfo dbfopen.o dbfinfo + * + * + * $Log: dbfinfo.c,v $ + * Revision 1.4 2016-12-05 12:44:07 erouault + * * Major overhaul of Makefile build system to use autoconf/automake. + * + * * Warning fixes in contrib/ + * + * Revision 1.3 2011-07-24 03:17:46 fwarmerdam + * include string.h and stdlib.h where needed in contrib (#2146) + * + * Revision 1.2 1999-05-26 02:56:31 candrsn + * updates to shpdxf, dbfinfo, port from Shapelib 1.1.5 of dbfcat and shpinfo + * + * + */ + +#include +#include +#include "shapefil.h" + +int main( int argc, char ** argv ) + +{ + DBFHandle hDBF; + int *panWidth, i, iRecord; + char szFormat[32], szField[1024]; + char ftype[32], cTitle[32], nTitle[32]; + int nWidth, nDecimals; + int cnWidth, cnDecimals; + DBFHandle cDBF; + DBFFieldType hType,cType; + int ci, ciRecord; + +/* -------------------------------------------------------------------- */ +/* Display a usage message. */ +/* -------------------------------------------------------------------- */ + if( argc != 2 ) + { + printf( "dbfinfo xbase_file\n" ); + exit( 1 ); + } + +/* -------------------------------------------------------------------- */ +/* Open the file. */ +/* -------------------------------------------------------------------- */ + hDBF = DBFOpen( argv[1], "rb" ); + if( hDBF == NULL ) + { + printf( "DBFOpen(%s,\"r\") failed.\n", argv[1] ); + exit( 2 ); + } + + printf ("Info for %s\n",argv[1]); + +/* -------------------------------------------------------------------- */ +/* If there is no data in this file let the user know. */ +/* -------------------------------------------------------------------- */ + i = DBFGetFieldCount(hDBF); + printf ("%d Columns, %d Records in file\n",i,DBFGetRecordCount(hDBF)); + +/* -------------------------------------------------------------------- */ +/* Compute offsets to use when printing each of the field */ +/* values. We make each field as wide as the field title+1, or */ +/* the field value + 1. */ +/* -------------------------------------------------------------------- */ + panWidth = (int *) malloc( DBFGetFieldCount( hDBF ) * sizeof(int) ); + + for( i = 0; i < DBFGetFieldCount(hDBF); i++ ) + { + char szTitle[12]; + DBFFieldType eType; + + switch ( DBFGetFieldInfo( hDBF, i, szTitle, &nWidth, &nDecimals )) { + case FTString: + strcpy (ftype, "string");; + break; + + case FTInteger: + strcpy (ftype, "integer"); + break; + + case FTDouble: + strcpy (ftype, "float"); + break; + + case FTInvalid: + strcpy (ftype, "invalid/unsupported"); + break; + + default: + strcpy (ftype, "unknown"); + break; + } + printf ("%15.15s\t%15s (%d,%d)\n",szTitle, ftype, nWidth, nDecimals); + + } + + DBFClose( hDBF ); + + return( 0 ); +} diff --git a/libs/shapelib/contrib/doc/Shape_PointInPoly_README.txt b/libs/shapelib/contrib/doc/Shape_PointInPoly_README.txt new file mode 100644 index 0000000..ed4ff8e --- /dev/null +++ b/libs/shapelib/contrib/doc/Shape_PointInPoly_README.txt @@ -0,0 +1,59 @@ +=============================================================================== +Project: Shape_PoinInPoly +Purpose: Sample and the function for calculatin a point in a polygon + (complex,compound - it doesn't matter). Can be used for labeling. +Author: Copyright (c) 2004, Marko Podgorsek, d-mon@siol.net +=============================================================================== +Requires: shapelib 1.2 (http://shapelib.maptools.org/) +Tested and created on platform: + Windows 2000 Professional + Visual Studio .NET 7.0 + P4 2.4 GHz + 1GB RAM + +I just found out about the ShapeLib, GDAL and OGR and I must say that they're +all great projects. +I belive I'll use some of those libraries in the future. Right now I'm using +only shapelib. +The thing that led me to the http://wwww.maptools.org was the need of finding +the point in poly...but as I found out that even OGR didn't support it. So +there I was. I was forced to make my own function. Well, it was fun. I learned +a lot. +I wrote this function for the Autodesk Autocad 2004 MPolygon, because there was +no function to do this in the Object Arx SDK (the Acad programming SDK). Well, +it will be in the 2005 release...but, still. There is a function in the +Autodesk Map 2004 version...in the menu. +Not useful when you need the coordinates, not the point on the screen... +So when the Acad version was done I was thinking of doing it on the Shape files, +too. A little bit of changing the structures and variable +types (so they're not using Object Arx) and I was done. +And here it is....Contribution from me to the ShapeLib world :)...and maybe even +OGR (a little bit of changing there). + +Some statistics: +For about 69000 polygons in Autocad picture (.dwg files) +Autodesk Map 2004 was creating centroids (the menu command) about 45s (1 scan +line) +My function, with 3 scan lines took about 5s. And I was drawing the dots on the +picture... + +------------------------------------------------------------------------------- +DPoint2d CreatePointInPoly(SHPObject *psShape, int quality) + +The second parameter quality tell the function just how many rays shall it use +to get the point. +quality = 3 works very well, but anything below 5 is good. +This doesn't mean that the execution will slow down, but it just finds a good +point. That's all. + +The qality shows on the compound objects (multiple poligons with more than one +exterior loop) - if not enough rays, then there may be no centroid. +Or the U shaped thin polygon, only the bootom (below the y center line) is fat. +Autodesk Map with one scan line will create the centroid on one of the thin +parts, because it only uses the y center line. If you have more rays, one will +surely pass the fat area and centroid will be created there. + +------------------------------------------------------------------------------- +Anyone using this function: +Just send me an e-mail, so I'll see if I did anything good for the public. +And you can send me e-mail with questions also. diff --git a/libs/shapelib/contrib/doc/shpproj.txt b/libs/shapelib/contrib/doc/shpproj.txt new file mode 100644 index 0000000..d289562 --- /dev/null +++ b/libs/shapelib/contrib/doc/shpproj.txt @@ -0,0 +1,71 @@ + + +shpproj + + + +using the projection tools proj and invproj +we have implemented a shapefile projection utility + +shpproj shp_file new_shp ( -i=in_proj_file | -i="in_params" | -i=geographic ) ( -o=out_info_file | -o="out_params" | -o=geographic ) + +INPUT + Input can come from one of three sources. A projection parameter file, + directly through parameters or geographic. If the shapefile has an associated + prj file, name the same as the shapefile but ending in ".prj" it will be used + by default ignoring all other parameters. If input is omitted it defaults to + geographic, unless the default prj file exists.. + +OUTPUT + Output can come from one of three sources. A projection parameter file, + directly through parameters or geographic. If output is omitted it defaults + to geographic. + +PROJECTION PARAMETER FILE + This file MUST end with the extension ".prj". It has the form of one + projection parameter per line. Parameters can be in any order. + +PROJECTION PARAMETERS + Are the same as used by proj and invproj. + use proj -lP to see available projections + proj -lu to see available units + proj -le to see available ellipsoid + + +USAGE + +the following example projects file rowtest to row3, moving data from Stateplane NAD83 zone 1002 to utm zone 16 in meters + +shpproj rowtest row -i="init=nad83:1002 units=us-ft" -o="proj=utm zone=16 units=m" + +shpproj rowtest row3 -o="proj=utm zone=18 units=m" -i="zone=16 proj=utm units=us-ft" + +shpproj rowtest row3 -o="proj=utm zone=18 units=m" + +shpproj rowtest row3 -i=myfile.prj -o=geographic +shpproj rowtest row3 -is=myfile.prj + + +Datums +Stateplane data can be accessed by the init function + init=nad83:1003 +which is of the form + datum:FIPSzone + +To move from NAD27 to NAD83 or otherwise the shpproj utility moves to +geographic coordinates and the back to the desired datum. proj can handle +direct datum to datum conversions but it is umimplemented here. + +for a complete listing of FIPSZones by datum read nad/nad.lst in the PROJ4 +library + + +CAUTION + +It is possible to get very poor results for projection values when using +coordinates VERY far away from the intended scope of the projection. + +An example of a poor projection choice would be to move from nad83:1002 +(Georgia West) for data in California into utm. The resulting data will be +much less accurate than if it had started as geographic. + diff --git a/libs/shapelib/contrib/doc/shpsort.txt b/libs/shapelib/contrib/doc/shpsort.txt new file mode 100644 index 0000000..7e40348 --- /dev/null +++ b/libs/shapelib/contrib/doc/shpsort.txt @@ -0,0 +1,44 @@ +============================= ABOUT =========================================== + +The program "shpsort" is a standalone program for sorting shapefiles +on one or more fields (including the pseudofield "SHAPE") and outputing +the results. People may find it useful for forcing drawing order. + +============================= AUTHOR ========================================== + +Eric G. Miller +California Department of Fish and Game +2004-06-30 + +============================= USAGE =========================================== + +shpsort {SORT_ORDER;SORT_ORDER...} + +============================= DETAILS ========================================= + +INFILE The input shapefile + +OUTFILE The output shapefile + +SORT_FIELD Any attribute field of the shapefile, including "SHAPE" + +SORT_ORDER Specify "ASCENDING" or "DESCENDING" for each SORT_FIELD. + This field is optional, and is assumed to be ASCENDING + unless the exact word "DESCENDING" is specified (case + matters). + + When sorting on the "SHAPE" the records are sorted as follows: + + * Null shapes are treated as any other null field and will + sort to the top in ASCENDING mode. A warning is issued + for each null shape encountered. + * POINT, POINTM, POINTZ, MULTIPOINT, MULTIPOINTM, MULTIPOINTZ + and MULTIPATCH are all sorted by the maximum "Y" value of + their envelopes (not particularly useful). + * POLYLINE, POLYLINEZ and POLYLINEM are sorted by total 2d + shape length. + * POLYGON, POLYGONZ and POLYGONM are sorted by the 2d shape + area. Shapes are assumed to be in canonical ordering, so that + the area of interior rings (if any) is subtracted from the + area of exterior rings. + diff --git a/libs/shapelib/contrib/makefile.vc b/libs/shapelib/contrib/makefile.vc new file mode 100644 index 0000000..f376f64 --- /dev/null +++ b/libs/shapelib/contrib/makefile.vc @@ -0,0 +1,34 @@ + +CFLAGS = /Ox /MD /nologo /I.. /IC:\OSGeo4W\include \ + /D_LITTLE_ENDIAN -DPROJ4 + +LINKARGS = ..\shapelib_i.lib C:\OSGeo4W\lib\proj_i.lib + +default: all + +all: shpcat.exe shpcentrd.exe shpdxf.exe shpinfo.exe shpproj.exe + +shpcat.exe: shpcat.obj shpgeo.obj + $(CC) $(CFLAGS) shpcat.obj $(LINKARGS) + if exist $@.manifest mt -manifest $@.manifest -outputresource:$@;1 + +shpcentrd.exe: shpcentrd.obj shpgeo.obj + $(CC) $(CFLAGS) shpcentrd.obj shpgeo.obj $(LINKARGS) + if exist $@.manifest mt -manifest $@.manifest -outputresource:$@;1 + +shpproj.exe: shpproj.obj shpgeo.obj + $(CC) $(CFLAGS) shpproj.obj shpgeo.obj $(LINKARGS) + if exist $@.manifest mt -manifest $@.manifest -outputresource:$@;1 + +shpdxf.exe: shpdxf.obj shpgeo.obj + $(CC) $(CFLAGS) shpdxf.obj $(LINKARGS) + if exist $@.manifest mt -manifest $@.manifest -outputresource:$@;1 + +shpinfo.exe: shpinfo.obj shpgeo.obj + $(CC) $(CFLAGS) shpinfo.obj $(LINKARGS) + if exist $@.manifest mt -manifest $@.manifest -outputresource:$@;1 + +clean: + -del *.obj + -del *.exe + -del *.manifest diff --git a/libs/shapelib/contrib/shpcat.c b/libs/shapelib/contrib/shpcat.c new file mode 100644 index 0000000..d4c32df --- /dev/null +++ b/libs/shapelib/contrib/shpcat.c @@ -0,0 +1,100 @@ +/****************************************************************************** + * Copyright (c) 1999, Carl Anderson + * + * This code is based in part on the earlier work of Frank Warmerdam + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included + * in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS + * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. + ****************************************************************************** + * + * shpcat + * + * gcc shpcat.c ../shpopen.o -o shpcat + * + * Utility program to concatenate two shapefiles + * Must be used in concert with dbfcat + * + */ + +#include +#include +#include "shapefil.h" + +int dbfcat_main( int argc, char ** argv ); + +int main( int argc, char ** argv ) + +{ + SHPHandle hSHP, cSHP; + int nShapeType, i, nEntities, nShpInFile; + SHPObject *shape; + +/* -------------------------------------------------------------------- */ +/* Display a usage message. */ +/* -------------------------------------------------------------------- */ + if( argc != 3 ) + { + printf( "shpcat from_shpfile to_shpfile\n" ); + exit( 1 ); + } + +/* -------------------------------------------------------------------- */ +/* Open the passed shapefile. */ +/* -------------------------------------------------------------------- */ + hSHP = SHPOpen( argv[1], "rb" ); + + if( hSHP == NULL ) + { + printf( "Unable to open:%s\n", argv[1] ); + exit( 1 ); + } + + SHPGetInfo( hSHP, &nEntities, &nShapeType, NULL, NULL ); + fprintf(stderr,"Opened From File %s, with %d shapes\n",argv[1],nEntities); + +/* -------------------------------------------------------------------- */ +/* Open the passed shapefile. */ +/* -------------------------------------------------------------------- */ + cSHP = SHPOpen( argv[2], "rb+" ); + + if( cSHP == NULL ) + { + printf( "Unable to open:%s\n", argv[2] ); + exit( 1 ); + } + + SHPGetInfo( cSHP, &nShpInFile, NULL, NULL, NULL ); + fprintf(stderr,"Opened to file %s with %d shapes, ready to add %d\n", + argv[2],nShpInFile,nEntities); + +/* -------------------------------------------------------------------- */ +/* Skim over the list of shapes, printing all the vertices. */ +/* -------------------------------------------------------------------- */ + for( i = 0; i < nEntities; i++ ) + { + shape = SHPReadObject( hSHP, i ); + SHPWriteObject( cSHP, -1, shape ); + SHPDestroyObject ( shape ); + + } + + SHPClose( hSHP ); + SHPClose( cSHP ); + + exit( 0 ); +} diff --git a/libs/shapelib/contrib/shpcentrd.c b/libs/shapelib/contrib/shpcentrd.c new file mode 100644 index 0000000..8156b9e --- /dev/null +++ b/libs/shapelib/contrib/shpcentrd.c @@ -0,0 +1,159 @@ +/****************************************************************************** + * Copyright (c) 1999, Carl Anderson + * + * this code is based in part on the earlier work of Frank Warmerdam + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included + * in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS + * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. + ****************************************************************************** + * + * shpcentrd.c - compute XY centroid for complex shapes + * and create a new SHPT_PT file of then + * specifically undo compound objects but not complex ones + * + * + * $Log: shpcentrd.c,v $ + * Revision 1.3 2011-07-24 03:17:46 fwarmerdam + * include string.h and stdlib.h where needed in contrib (#2146) + * + * Revision 1.2 1999-05-26 02:56:31 candrsn + * updates to shpdxf, dbfinfo, port from Shapelib 1.1.5 of dbfcat and shpinfo + * + * + * + */ + + +/* the centroid is defined as + * + * Cx = sum (x dArea ) / Total Area + * and + * Cy = sum (y dArea ) / Total Area + */ + +#include +#include +#include "shapefil.h" +#include "shpgeo.h" + +int main( int argc, char ** argv ) + +{ + SHPHandle old_SHP, new_SHP; + DBFHandle old_DBF, new_DBF; + int nShapeType, nEntities, nVertices, nParts, *panParts, i, iPart; + double *padVertices, adBounds[4]; + const char *pszPlus; + DBFFieldType idfld_type; + int idfld, nflds; + char kv[257] = ""; + char idfldName[120] = ""; + char fldName[120] = ""; + char shpFileName[120] = ""; + char dbfFileName[120] = ""; + double apeture[4]; + char *DBFRow = NULL; + int Cpan[2] = { 0,0 }; + int byRing = 1; + PT Centrd; + SHPObject *psCShape, *cent_pt; + + + if( argc < 3 ) + { + printf( "shpcentrd shp_file new_shp_file\n" ); + exit( 1 ); + } + + old_SHP = SHPOpen (argv[1], "rb" ); + old_DBF = DBFOpen (argv[1], "rb"); + if( old_SHP == NULL || old_DBF == NULL ) + { + printf( "Unable to open old files:%s\n", argv[1] ); + exit( 1 ); + } + + SHPGetInfo( old_SHP, &nEntities, &nShapeType, NULL, NULL ); + new_SHP = SHPCreate ( argv[2], SHPT_POINT ); + + new_DBF = DBFCloneEmpty (old_DBF, argv[2]); + if( new_SHP == NULL || new_DBF == NULL ) + { + printf( "Unable to create new files:%s\n", argv[2] ); + exit( 1 ); + } + + DBFRow = (char *) malloc ( (old_DBF->nRecordLength) + 15 ); + + +#ifdef DEBUG + printf ("ShpCentrd using shpgeo \n"); +#endif + + for( i = 0; i < nEntities; i++ ) + { + int res ; + + psCShape = SHPReadObject( old_SHP, i ); + + if ( byRing == 1 ) { + int ring; + for ( ring = 0; ring < psCShape->nParts; ring ++ ) { + SHPObject *psO; + psO = SHPClone ( psCShape, ring, ring + 1 ); + + Centrd = SHPCentrd_2d ( psO ); + + cent_pt = SHPCreateSimpleObject ( SHPT_POINT, 1, + (double*) &(Centrd.x), (double*) &(Centrd.y), NULL ); + + SHPWriteObject ( new_SHP, -1, cent_pt ); + + memcpy ( DBFRow, DBFReadTuple ( old_DBF, i ), + old_DBF->nRecordLength ); + DBFWriteTuple ( new_DBF, new_DBF->nRecords, DBFRow ); + + SHPDestroyObject ( cent_pt ); + + SHPDestroyObject ( psO ); + } + + } + else { + + Centrd = SHPCentrd_2d ( psCShape ); + + cent_pt = SHPCreateSimpleObject ( SHPT_POINT, 1, + (double*) &(Centrd.x), (double*) &(Centrd.y), NULL ); + + SHPWriteObject ( new_SHP, -1, cent_pt ); + + memcpy ( DBFRow, DBFReadTuple ( old_DBF, i ), + old_DBF->nRecordLength ); + DBFWriteTuple ( new_DBF, new_DBF->nRecords, DBFRow ); + + SHPDestroyObject ( cent_pt ); + } + } + + SHPClose( old_SHP ); + SHPClose( new_SHP ); + DBFClose( old_DBF ); + DBFClose( new_DBF ); + printf ("\n"); +} diff --git a/libs/shapelib/contrib/shpdata.c b/libs/shapelib/contrib/shpdata.c new file mode 100644 index 0000000..6ab6013 --- /dev/null +++ b/libs/shapelib/contrib/shpdata.c @@ -0,0 +1,134 @@ +/****************************************************************************** + * Copyright (c) 1999, Carl Anderson + * + * this code is based in part on the earlier work of Frank Warmerdam + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included + * in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS + * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. + ****************************************************************************** + * + * shpdata.c - utility program for testing elements of the libraries + * + * + * $Log: shpdata.c,v $ + * Revision 1.3 2016-12-05 12:44:07 erouault + * * Major overhaul of Makefile build system to use autoconf/automake. + * + * * Warning fixes in contrib/ + * + * Revision 1.2 1999-05-26 02:56:31 candrsn + * updates to shpdxf, dbfinfo, port from Shapelib 1.1.5 of dbfcat and shpinfo + * + * + * + */ + +#include +#include "shapefil.h" +#include "shpgeo.h" + +int main( int argc, char ** argv ) + +{ + SHPHandle old_SHP, new_SHP; + DBFHandle old_DBF, new_DBF; + int nShapeType, nEntities, nVertices, nParts, *panParts, i, iPart; + double *padVertices, adBounds[4]; + const char *pszPlus; + DBFFieldType idfld_type; + int idfld, nflds; + char kv[257] = ""; + char idfldName[120] = ""; + char fldName[120] = ""; + char shpFileName[120] = ""; + char dbfFileName[120] = ""; + char *DBFRow = NULL; + int Cpan[2] = { 0,0 }; + int byRing = 1; + PT oCentrd, ringCentrd; + SHPObject *psCShape, *cent_pt; + double oArea = 0.0, oLen = 0.0; + + if( argc < 2 ) + { + printf( "shpdata shp_file \n" ); + exit( 1 ); + } + + old_SHP = SHPOpen (argv[1], "rb" ); + old_DBF = DBFOpen (argv[1], "rb"); + if( old_SHP == NULL || old_DBF == NULL ) + { + printf( "Unable to open old files:%s\n", argv[1] ); + exit( 1 ); + } + + SHPGetInfo( old_SHP, &nEntities, &nShapeType, NULL, NULL ); + for( i = 0; i < nEntities; i++ ) + { + int res ; + + psCShape = SHPReadObject( old_SHP, i ); + + if ( byRing == 1 ) { + int ring, prevStart, ringDir; + double ringArea; + + prevStart = psCShape->nVertices; + for ( ring = (psCShape->nParts - 1); ring >= 0; ring-- ) { + SHPObject *psO; + int j, numVtx, rStart; + + rStart = psCShape->panPartStart[ring]; + if ( ring == (psCShape->nParts -1) ) + { numVtx = psCShape->nVertices - rStart; } + else + { numVtx = psCShape->panPartStart[ring+1] - rStart; } + + printf ("(shpdata) Ring(%d) (%d for %d) \n", ring, rStart, numVtx); + psO = SHPClone ( psCShape, ring, ring + 1 ); + + ringDir = SHPRingDir_2d ( psO, 0 ); + ringArea = RingArea_2d (psO->nVertices,(double*) psO->padfX, + (double*) psO->padfY); + RingCentroid_2d ( psO->nVertices, (double*) psO->padfX, + (double*) psO->padfY, &ringCentrd, &ringArea); + + + printf ("(shpdata) Ring %d, %f Area %d dir \n", + ring, ringArea, ringDir ); + + SHPDestroyObject ( psO ); + printf ("(shpdata) End Ring \n"); + } /* (ring) [0,nParts */ + + } /* by ring */ + + oArea = SHPArea_2d ( psCShape ); + oLen = SHPLength_2d ( psCShape ); + oCentrd = SHPCentrd_2d ( psCShape ); + printf ("(shpdata) Part (%d) %f Area %f length, C (%f,%f)\n", + i, oArea, oLen, oCentrd.x, oCentrd.y ); + } + + SHPClose( old_SHP ); + + DBFClose( old_DBF ); + + printf ("\n"); +} diff --git a/libs/shapelib/contrib/shpdxf.c b/libs/shapelib/contrib/shpdxf.c new file mode 100644 index 0000000..c4e7cf2 --- /dev/null +++ b/libs/shapelib/contrib/shpdxf.c @@ -0,0 +1,340 @@ +/****************************************************************************** + * Copyright (c) 1999, Carl Anderson + * + * This code is based in part on the earlier work of Frank Warmerdam + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included + * in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS + * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. + ****************************************************************************** + * + * shp2dxf.c + * + * derived from a ESRI Avenue Script + * and DXF specification from AutoCad 3 (yes 1984) + * + * modifications Carl Andrson 11/96 + * modifications Carl Andrson 3/97 + * + * converted to C code 12/98 + * + * requires shapelib 1.2 + * gcc shpdxf.c shpopen.o dbfopen.o -o shpdxf + * + */ + +#include +#include +#include "shapefil.h" + +#define FLOAT_PREC "%16.5f\r\n" + +void dxf_hdr (x1,y1,x2,y2,df) +double x1,y1,x2,y2; +FILE *df; +{ +/* Create HEADER section */ + + fprintf( df, " 0\r\n"); + fprintf( df, "SECTION\r\n"); + fprintf( df, " 2\r\n" ); + fprintf( df, "HEADER\r\n" ); + fprintf( df, " 9\r\n" ); + fprintf( df, "$EXTMAX\r\n" ); + fprintf( df, " 10\r\n" ); + fprintf( df, FLOAT_PREC, x2 ); + fprintf( df, " 20\r\n" ); + fprintf( df, FLOAT_PREC, y2 ); + fprintf( df, " 9\r\n" ); + fprintf( df, "$EXTMIN\r\n" ); + fprintf( df, " 10\r\n" ); + fprintf( df, FLOAT_PREC, x1 ); + fprintf( df, " 20\r\n" ); + fprintf( df, FLOAT_PREC, y1 ); + fprintf( df, " 9\r\n" ); + fprintf( df, "$LUPREC\r\n" ); + fprintf( df, " 70\r\n" ); + fprintf( df, " 14\r\n" ); + fprintf( df, " 0\r\n" ); + fprintf( df, "ENDSEC\r\n" ); + +/* ' Create TABLES section */ + + fprintf( df, " 0\r\n" ); + fprintf( df, "SECTION\r\n" ); + fprintf( df, " 2\r\n" ); + fprintf( df, "TABLES\r\n" ); +/* ' Table 1 - set up line type */ + fprintf( df, " 0\r\n" ); + fprintf( df, "TABLE\r\n" ); + fprintf( df, " 2\r\n" ); + fprintf( df, "LTYPE\r\n" ); + fprintf( df, " 70\r\n" ); + fprintf( df, "2\r\n" ); +/* ' Entry 1 of Table 1 */ + fprintf( df, " 0\r\n" ); + fprintf( df, "LTYPE\r\n" ); + fprintf( df, " 2\r\n" ); + fprintf( df, "CONTINUOUS\r\n" ); + fprintf( df, " 70\r\n" ); + fprintf( df, "64\r\n" ); + fprintf( df, " 3\r\n" ); + fprintf( df, "Solid line\r\n" ); + fprintf( df, " 72\r\n" ); + fprintf( df, "65\r\n" ); + fprintf( df, " 73\r\n" ); + fprintf( df, "0\r\n" ); + fprintf( df, " 40\r\n" ); + fprintf( df, "0.0\r\n" ); + fprintf( df, " 0\r\n" ); + fprintf( df, "ENDTAB\r\n" ); + /* End of TABLES section */ + fprintf( df, " 0\r\n" ); + fprintf( df, "ENDSEC\r\n" ); + + /* Create BLOCKS section */ + + fprintf( df, " 0\r\n" ); + fprintf( df, "SECTION\r\n" ); + fprintf( df, " 2\r\n" ); + fprintf( df, "BLOCKS\r\n" ); + fprintf( df, " 0\r\n" ); + fprintf( df, "ENDSEC\r\n" ); + fprintf( df, " 0\r\n" ); + fprintf( df, "SECTION\r\n" ); + fprintf( df, " 2\r\n" ); + fprintf( df, "ENTITIES\r\n" ); + +} + + +void +dxf_ent_preamble (dxf_type, id, df) +int dxf_type; +char *id; +FILE *df; +{ + + fprintf( df, " 0\r\n" ); + + switch (dxf_type) { + case SHPT_POLYGON: + case SHPT_ARC: fprintf (df, "POLYLINE\r\n"); + break; + default: fprintf(df, "POINT\r\n"); + } + + fprintf( df, " 8\r\n"); + fprintf( df, "%s\r\n", id ); + switch ( dxf_type ) { + case SHPT_ARC: + fprintf( df, " 6\r\n" ); + fprintf( df, "CONTINUOUS\r\n" ); + fprintf( df, " 66\r\n" ); + fprintf( df, "1\r\n" ); + break; + case SHPT_POLYGON: + fprintf( df, " 6\r\n" ); + fprintf( df, "CONTINUOUS\r\n" ); + fprintf( df, " 66\r\n" ); + fprintf( df, "1\r\n" ); + fprintf( df, " 70\r\n"); + fprintf (df, "1\r\n"); + default: break; + } + +} + +void +dxf_ent (id, x, y, z, dxf_type, df) +char *id; +double x,y,z; +int dxf_type; +FILE *df; +{ + if ((dxf_type == SHPT_ARC) || ( dxf_type == SHPT_POLYGON)) { + fprintf( df, " 0\r\n"); + fprintf( df, "VERTEX\r\n"); + fprintf( df, " 8\r\n"); + fprintf( df, "%s\r\n", id); + } + fprintf( df, " 10\r\n" ); + fprintf( df, FLOAT_PREC, x ); + fprintf( df, " 20\r\n" ); + fprintf( df, FLOAT_PREC, y ); + fprintf( df, " 30\r\n" ); + if ( z != 0 ) + fprintf( df, FLOAT_PREC, z ); + else + fprintf( df, "0.0\r\n" ); +} + + +void +dxf_ent_postamble (dxf_type, df) +int dxf_type; +FILE *df; +{ + if ((dxf_type == SHPT_ARC) || ( dxf_type == SHPT_POLYGON)) + fprintf( df, " 0\r\nSEQEND\r\n 8\r\n0\r\n"); +} + + +int +main (int argc, char **argv) + +{ + char shpFileName[80] = "", dbfFileName[80] = ""; + char dxfFileName[80] = ""; + char idfldName[15]; + char zfldName[6] = "ELEV"; + char fldName[15]; + char id[255]; + double elev; + int parts, *panParts, nParts, nVertices; + FILE *dxf; + SHPHandle shp; + DBFHandle dbf; + DBFFieldType idfld_type; + double adfBoundsMin[4], adfBoundsMax[4]; + int vrtx, shp_type, shp_numrec, zfld, idfld, nflds, recNum, part; + unsigned int MaxElem = -1; + + if ( argc < 2 ) { + printf ("usage: shpdxf shapefile {idfield}\r\n"); + exit (-1); + } + + strcpy (shpFileName,argv[1]); + strncpy (dbfFileName, shpFileName, strlen(shpFileName)-3); + strcat (dbfFileName,"dbf"); + + strncpy (dxfFileName, shpFileName,strlen(shpFileName)-3); + strcat( dxfFileName, "dxf"); + + shp = SHPOpen (shpFileName, "rb"); + dbf = DBFOpen (dbfFileName, "rb"); + dxf = fopen( dxfFileName, "w"); + + printf("Starting conversion %s(%s) -> %s\r\n", + shpFileName,dbfFileName,dxfFileName); + + SHPGetInfo (shp, &shp_numrec, &shp_type, adfBoundsMin, adfBoundsMax ); + printf ("file has %d objects\r\n", shp_numrec); + dxf_hdr(adfBoundsMin[0], adfBoundsMin[1], adfBoundsMax[0], adfBoundsMax[1], + dxf); + +/* Before proceeding, allow the user to specify the ID field to use or default to the record number.... */ + + if ( argc > 3 ) MaxElem = atoi(argv[3]); + + nflds = DBFGetFieldCount(dbf); + if ( argc > 2 ) { + strcpy (idfldName, argv[2]); + for ( idfld=0; idfld < nflds; idfld++ ) { + idfld_type = DBFGetFieldInfo( dbf, idfld, fldName, NULL, NULL); + if (!strcmp (idfldName, fldName )) + break; + } + if ( idfld >= nflds ) { + printf ("Id field %s not found, using default\r\n",idfldName); + idfld = -1; + } else + printf ("proceeding with field %s for LayerNames\r\n",fldName); + } + else + idfld = -1; + + for ( zfld=0; zfld < nflds; zfld++ ) { + DBFGetFieldInfo( dbf, zfld, fldName, NULL, NULL); + if (!strcmp (zfldName, fldName )) + break; + } + if ( zfld >= nflds ) + zfld = -1; +// printf ("proceeding with id = %d, elevation = %d\r\n",idfld, zfld); + +/* Proceed to process data..... */ + + for ( recNum = 0; (recNum < shp_numrec) && (recNum < MaxElem); recNum++) { + + SHPObject *shape; + + if ( idfld >= 0 ) + switch (idfld_type) { + case FTString: sprintf (id, "lvl_%s",DBFReadStringAttribute ( dbf, recNum, idfld )); + break; + default: sprintf(id, "%-20.0lf", DBFReadDoubleAttribute (dbf, recNum, idfld)); + } + else + sprintf (id,"lvl_%-20d",(recNum +1 )); + + + if ( zfld >= 0 ) + elev = 0; + else + elev = DBFReadDoubleAttribute ( dbf, recNum, zfld ); + +#ifdef DEBUG + printf("\r\nworking on obj %d", recNum); +#endif + + shape = SHPReadObject( shp, recNum ); + + nVertices = shape->nVertices; + nParts = shape->nParts; + panParts = shape->panPartStart; + part = 0; + for (vrtx=0; vrtx < nVertices; vrtx ++ ) { +#ifdef DEBUG + printf("\rworking on part %d, vertex %d", part,vrtx); +#endif + if ( panParts[part] == vrtx ) { +#ifdef DEBUG + printf ("object preamble\r\n"); +#endif + dxf_ent_preamble (shp_type, id, dxf); + } + + dxf_ent (id, shape->padfX[vrtx], shape->padfY[vrtx], + elev, shp_type, dxf); + + if ((panParts[part] == (vrtx + 1))|| (vrtx == (nVertices -1)) ) { + dxf_ent_postamble (shp_type, dxf); + part ++; + } + } + SHPDestroyObject( shape ); + } + +/* close out DXF file */ + fprintf( dxf, "0\r\n" ); + fprintf( dxf, "ENDSEC\r\n" ); + fprintf( dxf, "0\r\n" ); + fprintf( dxf, "EOF\r\n" ); + + + SHPClose (shp); + DBFClose (dbf); + fclose (dxf); +} + + + + + + diff --git a/libs/shapelib/contrib/shpfix.c b/libs/shapelib/contrib/shpfix.c new file mode 100644 index 0000000..1ed73a3 --- /dev/null +++ b/libs/shapelib/contrib/shpfix.c @@ -0,0 +1,110 @@ +/****************************************************************************** + * Copyright (c) 1999, Carl Anderson + * + * This code is based in part on the earlier work of Frank Warmerdam + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included + * in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS + * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. + ****************************************************************************** + * shpfix + * + * + * gcc -c shpfix.c shpopen.c -o shpfix + * + * Utility program to fix nulls and inconsistencies in Shapefiles + * as happens from time to time + * + * Simply load and rewrite each record, parameter fixrex allow user to null + * a particularly nasty record if needed + * + */ + +#include +#include +#include "shapefil.h" + +int main( int argc, char ** argv ) + +{ + SHPHandle hSHP, cSHP; + int nShapeType, cShapeType, nEntities, i; + double adBounds[4]; + SHPObject *shape; + int fix_rec; + +/* -------------------------------------------------------------------- */ +/* Display a usage message. */ +/* -------------------------------------------------------------------- */ + if( argc <= 3 ) + { + printf( "shpfix shpfile new_file \n" ); + exit( 1 ); + } + + fix_rec = atoi (argv[3]); + fix_rec --; + +/* -------------------------------------------------------------------- */ +/* Open the passed shapefile. */ +/* -------------------------------------------------------------------- */ + hSHP = SHPOpen( argv[1], "rb+" ); + + if( hSHP == NULL ) + { + printf( "Unable to open:%s\n", argv[1] ); + exit( 1 ); + } + + SHPGetInfo( hSHP, &nEntities, &nShapeType, NULL, NULL ); + + +/* -------------------------------------------------------------------- */ +/* Open the passed shapefile. */ +/* -------------------------------------------------------------------- */ + cSHP = SHPCreate( argv[2], nShapeType ); + + if( cSHP == NULL ) + { + printf( "Unable to open:%s\n", argv[2] ); + exit( 1 ); + } + + SHPGetInfo( cSHP, NULL, &cShapeType, &(adBounds[0]), &(adBounds[2]) ); + + +/* -------------------------------------------------------------------- */ +/* Skim over the list of shapes, printing all the vertices. */ +/* -------------------------------------------------------------------- */ + + for( i = 0; i < nEntities; i++ ) + { + + shape = SHPReadObject( hSHP, i ); + if ( i == fix_rec ) + { shape->nParts = 0; + shape->nVertices = 0; + } + SHPWriteObject( cSHP, -1, shape ); + SHPDestroyObject ( shape ); + + } + + + SHPClose ( hSHP ); + SHPClose ( cSHP ); +} diff --git a/libs/shapelib/contrib/shpgeo.c b/libs/shapelib/contrib/shpgeo.c new file mode 100644 index 0000000..3b04b3a --- /dev/null +++ b/libs/shapelib/contrib/shpgeo.c @@ -0,0 +1,1631 @@ +/****************************************************************************** + * Copyright (c) 1999, Carl Anderson + * + * This code is based in part on the earlier work of Frank Warmerdam + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included + * in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS + * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. + ****************************************************************************** + * + * requires shapelib 1.2 + * gcc shpproj shpopen.o dbfopen.o -lm -lproj -o shpproj + * + * this may require linking with the PROJ4 projection library available from + * + * http://www.remotesensing.org/proj + * + * use -DPROJ4 to compile in Projection support + * + * $Log: shpgeo.c,v $ + * Revision 1.16 2017-07-10 18:01:35 erouault + * * contrib/shpgeo.c: fix compilation on _MSC_VER < 1800 regarding lack + * of NAN macro. + * + * Revision 1.15 2016-12-06 21:13:33 erouault + * * configure.ac: change soname to 2:1:0 to be in sync with Debian soname. + * http://bugzilla.maptools.org/show_bug.cgi?id=2628 + * Patch by Bas Couwenberg + * + * * contrib/doc/Shape_PointInPoly_README.txt, contrib/shpgeo.c: typo fixes. + * http://bugzilla.maptools.org/show_bug.cgi?id=2629 + * Patch by Bas Couwenberg + * + * * web/*: use a local .css file to avoid a privacy breach issue reported + * by the lintian QA tool. + * http://bugzilla.maptools.org/show_bug.cgi?id=2630 + * Patch by Bas Couwenberg + * + * + * Contributed by Sandro Mani: https://github.com/manisandro/shapelib/tree/autotools + * + * Revision 1.14 2016-12-05 12:44:07 erouault + * * Major overhaul of Makefile build system to use autoconf/automake. + * + * * Warning fixes in contrib/ + * + * Revision 1.13 2011-07-24 03:17:46 fwarmerdam + * include string.h and stdlib.h where needed in contrib (#2146) + * + * Revision 1.12 2007-09-03 23:17:46 fwarmerdam + * fix SHPDimension() function + * + * Revision 1.11 2006/11/06 20:45:58 fwarmerdam + * Fixed SHPProject. + * + * Revision 1.10 2006/11/06 20:44:58 fwarmerdam + * SHPProject() uses pj_transform now + * + * Revision 1.9 2006/01/25 15:33:50 fwarmerdam + * fixed ppsC assignment maptools bug 1263 + * + * Revision 1.8 2002/01/15 14:36:56 warmerda + * upgrade to use proj_api.h + * + * Revision 1.7 2002/01/11 15:22:04 warmerda + * fix many warnings. Lots of this code is cruft. + * + * Revision 1.6 2001/08/30 13:42:31 warmerda + * avoid use of auto initialization of PT for VC++ + * + * Revision 1.5 2000/04/26 13:24:06 warmerda + * made projUV handling safer + * + * Revision 1.4 2000/04/26 13:17:15 warmerda + * check if projUV or UV + * + * Revision 1.3 2000/03/17 14:15:16 warmerda + * Don't try to use system nan.h ... doesn't always exist. + * + * Revision 1.2 1999/05/26 02:56:31 candrsn + * updates to shpdxf, dbfinfo, port from Shapelib 1.1.5 of dbfcat and shpinfo + * + */ + +#include +#include +#include +#include "shapefil.h" + +#include "shpgeo.h" + +#if defined(_MSC_VER) && _MSC_VER < 1800 +#include +#define INFINITY (DBL_MAX + DBL_MAX) +#define NAN (INFINITY - INFINITY) +#endif + + + /* I'm using some shorthand throughout this file + * R+ is a Clockwise Ring and is the positive portion of an object + * R- is a CounterClockwise Ring and is a hole in a R+ + * A complex object is one having at least one R- + * A compound object is one having more than one R+ + * A simple object has one and only one element (R+ or R-) + * + * The closed ring constraint is for polygons and assumed here + * Arcs or LineStrings I am calling Rings (generically open or closed) + * Point types are vertices or lists of vertices but not Rings + * + * SHPT_POLYGON, SHPT_POLYGONZ, SHPT_POLYGONM and SHPT_MULTIPATCH + * can have SHPObjects that are compound as well as complex + * + * SHP_POINT and its Z and M derivatives are strictly simple + * MULTI_POINT, SHPT_ARC and their derivatives may be simple or compound + * + */ + + +/* ************************************************************************** + * asFileName + * + * utility function, toss part of filename after last dot + * + * **************************************************************************/ +char * asFileName ( const char *fil, char *ext ) { + char pszBasename[120]; + static char pszFullname[120]; + int i; +/* -------------------------------------------------------------------- */ +/* Compute the base (layer) name. If there is any extension */ +/* on the passed in filename we will strip it off. */ +/* -------------------------------------------------------------------- */ +// pszFullname = (char*) malloc(( strlen(fil)+5 )); +// pszBasename = (char *) malloc(strlen(fil)+5); + strcpy( pszBasename, fil ); + for( i = strlen(pszBasename)-1; + i > 0 && pszBasename[i] != '.' && pszBasename[i] != '/' + && pszBasename[i] != '\\'; + i-- ) {} + + if( pszBasename[i] == '.' ) + pszBasename[i] = '\0'; + +/* -------------------------------------------------------------------- */ +/* Note that files pulled from */ +/* a PC to Unix with upper case filenames won't work! */ +/* -------------------------------------------------------------------- */ +// pszFullname = (char *) malloc(strlen(pszBasename) + 5); + sprintf( pszFullname, "%s.%s", pszBasename, ext ); + + return ( pszFullname ); +} + + +/************************************************************************/ +/* SfRealloc() */ +/* */ +/* A realloc cover function that will access a NULL pointer as */ +/* a valid input. */ +/************************************************************************/ +/* copied directly from shpopen.c -- maybe expose this in shapefil.h */ +static void * SfRealloc( void * pMem, int nNewSize ) + +{ + if( pMem == NULL ) + return( (void *) malloc(nNewSize) ); + else + return( (void *) realloc(pMem,nNewSize) ); +} + + +/* ************************************************************************** + * SHPPRoject + * + * Project points using projection handles, for use with PROJ4.3 + * + * act as a wrapper to protect against library changes in PROJ + * + * **************************************************************************/ +int SHPProject ( SHPObject *psCShape, projPJ inproj, projPJ outproj ) { +#ifdef PROJ4 + + int j; + + if ( pj_is_latlong(inproj) ) { + for(j=0; j < psCShape->nVertices; j++) { + psCShape->padfX[j] *= DEG_TO_RAD; + psCShape->padfY[j] *= DEG_TO_RAD; + } + } + + pj_transform(inproj, outproj, psCShape->nVertices, 0, psCShape->padfX, + psCShape->padfY, NULL); + + if ( pj_is_latlong(outproj) ) { + for(j=0; j < psCShape->nVertices; j++) { + psCShape->padfX[j] *= RAD_TO_DEG; + psCShape->padfY[j] *= RAD_TO_DEG; + } + } + + /* Recompute new Extents of projected Object */ + SHPComputeExtents ( psCShape ); +#endif + + return ( 1 ); +} + + +/* ************************************************************************** + * SHPSetProjection + * + * establish a projection handle for use with PROJ4.3 + * + * act as a wrapper to protect against library changes in PROJ + * + * **************************************************************************/ +projPJ SHPSetProjection ( int param_cnt, char **params ) { +#ifdef PROJ4 + projPJ *p = NULL; + + if ( param_cnt > 0 && params[0] ) + { + p = pj_init ( param_cnt, params ); + } + else + { + char* params_local[] = { "+proj=longlat", NULL }; + p = pj_init ( 1, params_local ); + } + + return ( p ); +#else + return ( NULL ); +#endif +} + + +/* ************************************************************************** + * SHPFreeProjection + * + * release a projection handle for use with PROJ4.3 + * + * act as a wrapper to protect against library changes in PROJ + * + * **************************************************************************/ +int SHPFreeProjection ( projPJ p) { +#ifdef PROJ4 + if ( p ) + pj_free ( p ); +#endif + return ( 1 ); +} + + +/* ************************************************************************** + * SHPOGisType + * + * Convert Both ways from and to OGIS Geometry Types + * + * **************************************************************************/ +int SHPOGisType ( int GeomType, int toOGis) { + + if ( toOGis == 0 ) /* connect OGis -> SHP types */ + switch (GeomType) { + case (OGIST_POINT): return ( SHPT_POINT ); break; + case (OGIST_LINESTRING): return ( SHPT_ARC ); break; + case (OGIST_POLYGON): return ( SHPT_POLYGON ); break; + case (OGIST_MULTIPOINT): return ( SHPT_MULTIPOINT ); break; + case (OGIST_MULTILINE): return ( SHPT_ARC ); break; + case (OGIST_MULTIPOLYGON): return ( SHPT_POLYGON ); break; + } + else /* ok so its SHP->OGis types */ + switch (GeomType) { + case (SHPT_POINT): return ( OGIST_POINT ); break; + case (SHPT_POINTM): return ( OGIST_POINT ); break; + case (SHPT_POINTZ): return ( OGIST_POINT ); break; + case (SHPT_ARC): return ( OGIST_LINESTRING );break; + case (SHPT_ARCZ): return ( OGIST_LINESTRING );break; + case (SHPT_ARCM): return ( OGIST_LINESTRING );break; + case (SHPT_POLYGON): return ( OGIST_MULTIPOLYGON );break; + case (SHPT_POLYGONZ): return ( OGIST_MULTIPOLYGON );break; + case (SHPT_POLYGONM): return ( OGIST_MULTIPOLYGON );break; + case (SHPT_MULTIPOINT): return ( OGIST_MULTIPOINT );break; + case (SHPT_MULTIPOINTZ): return ( OGIST_MULTIPOINT );break; + case (SHPT_MULTIPOINTM): return ( OGIST_MULTIPOINT );break; + case (SHPT_MULTIPATCH): return ( OGIST_GEOMCOLL ); break; + } + + return 0; +} + + +/* ************************************************************************** + * SHPReadSHPStream + * + * Encapsulate entire SHPObject for use with Postgresql + * + * **************************************************************************/ +int SHPReadSHPStream ( SHPObject *psCShape, char *stream_obj) { + +int obj_storage; +int my_order, need_swap =0, GeoType ; +int use_Z = 0; +int use_M = 0; + + need_swap = stream_obj[0]; + my_order = 1; + my_order = ((char*) (&my_order))[0]; + need_swap = need_swap & my_order; + + if ( need_swap ) + swapW (stream_obj, (void*) &GeoType, sizeof (GeoType) ); + else + memcpy (stream_obj, &GeoType, sizeof (GeoType) ); + + + if ( need_swap ) { + + } else { + memcpy (stream_obj, &(psCShape->nSHPType), sizeof (psCShape->nSHPType) ); + memcpy (stream_obj, &(psCShape->nShapeId), sizeof (psCShape->nShapeId) ); + memcpy (stream_obj, &(psCShape->nVertices), sizeof (psCShape->nVertices) ); + memcpy (stream_obj, &(psCShape->nParts), sizeof (psCShape->nParts) ); + memcpy (stream_obj, &(psCShape->dfXMin), sizeof (psCShape->dfXMin) ); + memcpy (stream_obj, &(psCShape->dfYMin), sizeof (psCShape->dfYMin) ); + memcpy (stream_obj, &(psCShape->dfXMax), sizeof (psCShape->dfXMax) ); + memcpy (stream_obj, &(psCShape->dfYMax), sizeof (psCShape->dfYMax) ); + if ( use_Z ) { + memcpy (stream_obj, &(psCShape->dfZMin), sizeof (psCShape->dfZMin) ); + memcpy (stream_obj, &(psCShape->dfZMax), sizeof (psCShape->dfZMax) ); + } + + memcpy (stream_obj, psCShape->panPartStart, psCShape->nParts * sizeof (int) ); + memcpy (stream_obj, psCShape->panPartType, psCShape->nParts * sizeof (int) ); + +/* get X and Y coordinate arrarys */ + memcpy (stream_obj, psCShape->padfX, psCShape->nVertices * 2 * sizeof (double) ); + +/* get Z coordinate array if used */ + if ( use_Z ) + memcpy (stream_obj, psCShape->padfZ, psCShape->nVertices * 2 * sizeof (double) ); +/* get Measure coordinate array if used */ + if ( use_M ) + memcpy (stream_obj, psCShape->padfM, psCShape->nVertices * 2 * sizeof (double) ); + } /* end put data without swap */ + + return (0); +} + + +/* ************************************************************************** + * SHPWriteSHPStream + * + * Encapsulate entire SHPObject for use with Postgresql + * + * **************************************************************************/ +int SHPWriteSHPStream ( WKBStreamObj *stream_obj, SHPObject *psCShape ) { + +/*int obj_storage = 0;*/ +int need_swap = 0, my_order, GeoType; +int use_Z = 0; +int use_M = 0; + + need_swap = 1; + need_swap = ((char*) (&need_swap))[0]; + + /*realloc (stream_obj, obj_storage );*/ + + if ( need_swap ) { + + } else { + memcpy (stream_obj, psCShape, 4 * sizeof (int) ); + memcpy (stream_obj, psCShape, 4 * sizeof (double) ); + if ( use_Z ) + memcpy (stream_obj, psCShape, 2 * sizeof (double) ); + if ( use_M ) + memcpy (stream_obj, psCShape, 2 * sizeof (double) ); + + memcpy (stream_obj, psCShape, psCShape->nParts * 2 * sizeof (int) ); + memcpy (stream_obj, psCShape, psCShape->nVertices * 2 * sizeof (double) ); + if ( use_Z ) + memcpy (stream_obj, psCShape, psCShape->nVertices * 2 * sizeof (double) ); + if ( use_M ) + memcpy (stream_obj, psCShape, psCShape->nVertices * 2 * sizeof (double) ); + } + + return (0); +} + + +/* ************************************************************************** + * WKBStreamWrite + * + * Encapsulate entire SHPObject for use with Postgresql + * + * **************************************************************************/ +int WKBStreamWrite ( WKBStreamObj* wso, void* this, int tcount, int tsize ) { + + if ( wso->NeedSwap ) + SwapG ( &(wso->wStream[wso->StreamPos]), this, tcount, tsize ); + else + memcpy ( &(wso->wStream[wso->StreamPos]), this, tsize * tcount ); + + wso->StreamPos += tsize; + + return 0; +} + + + +/* ************************************************************************** + * WKBStreamRead + * + * Encapsulate entire SHPObject for use with Postgresql + * + * **************************************************************************/ +int WKBStreamRead ( WKBStreamObj* wso, void* this, int tcount, int tsize ) { + + if ( wso->NeedSwap ) + SwapG ( this, &(wso->wStream[wso->StreamPos]), tcount, tsize ); + else + memcpy ( this, &(wso->wStream[wso->StreamPos]), tsize * tcount ); + + wso->StreamPos += tsize; + + return 0; +} + + + +/* ************************************************************************** + * SHPReadOGisWKB + * + * Encapsulate entire SHPObject for use with Postgresql + * + * **************************************************************************/ +SHPObject* SHPReadOGisWKB ( WKBStreamObj *stream_obj) { + SHPObject *psCShape; + char WKB_order; + int need_swap = 0, my_order, GeoType = 0; + int use_Z = 0, use_M = 0; + int nSHPType, thisDim; + + WKBStreamRead ( stream_obj, &WKB_order, 1, sizeof(char)); + my_order = 1; + my_order = ((char*) (&my_order))[0]; + stream_obj->NeedSwap = !(WKB_order & my_order); + + /* convert OGis Types to SHP types */ + nSHPType = SHPOGisType ( GeoType, 0 ); + + WKBStreamRead ( stream_obj, &GeoType, 1, sizeof(int)); + + thisDim = SHPDimension ( nSHPType ); + + if ( thisDim && SHPD_AREA ) + { psCShape = SHPReadOGisPolygon ( stream_obj ); } + else { + if ( thisDim && SHPD_LINE ) + { psCShape = SHPReadOGisLine ( stream_obj ); } + else { + if ( thisDim && SHPD_POINT ) + { psCShape = SHPReadOGisPoint ( stream_obj ); } + } + } + + + return (0); +} + + + +/* ************************************************************************** + * SHPWriteOGisWKB + * + * Encapsulate entire SHPObject for use with Postgresql + * + * **************************************************************************/ +int SHPWriteOGisWKB ( WKBStreamObj* stream_obj, SHPObject *psCShape ) { + + int need_swap = 0, my_order, GeoType, thisDim; + int use_Z = 0, use_M = 0; + char LSB = 1; + /* indicate that this WKB is in LSB Order */ + + /* OGis WKB can handle either byte order, but if I get to choose I'd + /* rather have it predicatable system-to-system */ + + if ( stream_obj ) { + if ( stream_obj->wStream ) + free ( stream_obj->wStream ); + } else + { stream_obj = calloc ( 3, sizeof (int ) ); } + + /* object size needs to be 9 bytes for the wrapper, and for each polygon */ + /* another 9 bytes all plus twice the total number of vertices */ + /* times the sizeof (double) and just pad with 10 more chars for fun */ + stream_obj->wStream = calloc (1, (9 * (psCShape->nParts + 1)) + + ( sizeof(double) * 2 * psCShape->nVertices ) + 10 ); + + #ifdef DEBUG2 + printf (" I just allocated %d bytes to wkbObj \n", + (int)(sizeof (int) + sizeof (int) + sizeof(int) + + ( sizeof(int) * psCShape->nParts + 1 ) + + ( sizeof(double) * 2 * psCShape->nVertices ) + 10) ); + #endif + + my_order = 1; + my_order = ((char*) (&my_order))[0]; + /* Need to swap if this system is not LSB (Intel Order) */ + stream_obj->NeedSwap = ( my_order != LSB ); + + stream_obj->StreamPos = 0; + + + #ifdef DEBUG2 + printf ("this system is (%d) LSB recorded as needSwap %d\n",my_order, stream_obj->NeedSwap); + #endif + + WKBStreamWrite ( stream_obj, & LSB, 1, sizeof(char) ); + + #ifdef DEBUG2 + printf ("this system in LSB \n"); + #endif + + + /* convert SHP Types to OGis types */ + GeoType = SHPOGisType ( psCShape->nSHPType, 1 ); + WKBStreamWrite ( stream_obj, &GeoType, 1, sizeof(int) ); + + thisDim = SHPDimension ( psCShape->nSHPType ); + + if ( thisDim && SHPD_AREA ) + { SHPWriteOGisPolygon ( stream_obj, psCShape ); } + else { + if ( thisDim && SHPD_LINE ) + { SHPWriteOGisLine ( stream_obj, psCShape ); } + else { + if ( thisDim && SHPD_POINT ) + { SHPWriteOGisPoint ( stream_obj, psCShape ); } + } + } + +#ifdef DEBUG2 + printf("(SHPWriteOGisWKB) outta here when stream pos is %d \n", stream_obj->StreamPos); +#endif + return (0); +} + + +/* ************************************************************************** + * SHPWriteOGisPolygon + * + * for this pass code to more generic OGis MultiPolygon Type + * later add support for OGis Polygon Type + * + * Encapsulate entire SHPObject for use with Postgresql + * + * **************************************************************************/ +int SHPWriteOGisPolygon ( WKBStreamObj *stream_obj, SHPObject *psCShape ) { + SHPObject **ppsC; + SHPObject *psC; + int rPart, ring, rVertices, cpart, cParts, nextring, i, j; + char Flag = 1; + int GeoType = OGIST_POLYGON; + + /* cant have more than nParts complex objects in this object */ + ppsC = calloc ( psCShape->nParts, sizeof(int) ); + + + nextring = 0; + cParts=0; + while ( nextring >= 0 ) { + ppsC[cParts] = SHPUnCompound ( psCShape, &nextring ); + cParts++; + } + +#ifdef DEBUG2 + printf ("(SHPWriteOGisPolygon) Uncompounded into %d parts \n", cParts); +#endif + + WKBStreamWrite ( stream_obj, &cParts, 1, sizeof(int) ); + + for ( cpart = 0; cpart < cParts; cpart++) { + + WKBStreamWrite ( stream_obj, & Flag, 1, sizeof(char) ); + WKBStreamWrite ( stream_obj, & GeoType, 1, sizeof(int) ); + + psC = (SHPObject*) ppsC[cpart]; + WKBStreamWrite ( stream_obj, &(psC->nParts), 1, sizeof(int) ); + + for ( ring = 0; (ring < (psC->nParts)) && (psC->nParts > 0); ring ++) { + if ( ring < (psC->nParts-2) ) + { rVertices = psC->panPartStart[ring+1] - psC->panPartStart[ring]; } + else + { rVertices = psC->nVertices - psC->panPartStart[ring]; } +#ifdef DEBUG2 + printf ("(SHPWriteOGisPolygon) scanning part %d, ring %d %d vtxs \n", + cpart, ring, rVertices); +#endif + rPart = psC->panPartStart[ring]; + WKBStreamWrite ( stream_obj, &rVertices, 1, sizeof(int) ); + for ( j=rPart; j < (rPart + rVertices); j++ ) { + WKBStreamWrite ( stream_obj, &(psC->padfX[j]), 1, sizeof(double) ); + WKBStreamWrite ( stream_obj, &(psC->padfY[j]), 1, sizeof(double) ); + } /* for each vertex */ + } /* for each ring */ + } /* for each complex part */ + +#ifdef DEBUG2 + printf ("(SHPWriteOGisPolygon) outta here \n"); +#endif + return (1); +} + + +/* ************************************************************************** + * SHPWriteOGisLine + * + * for this pass code to more generic OGis MultiXXXXXXX Type + * later add support for OGis LineString Type + * + * Encapsulate entire SHPObject for use with Postgresql + * + * **************************************************************************/ +int SHPWriteOGisLine ( WKBStreamObj *stream_obj, SHPObject *psCShape ) { + + return ( SHPWriteOGisPolygon( stream_obj, psCShape )); +} + + +/* ************************************************************************** + * SHPWriteOGisPoint + * + * for this pass code to more generic OGis MultiPoint Type + * later add support for OGis Point Type + * + * Encapsulate entire SHPObject for use with Postgresql + * + * **************************************************************************/ +int SHPWriteOGisPoint ( WKBStreamObj *stream_obj, SHPObject *psCShape ) { + int j; + + WKBStreamWrite ( stream_obj, &(psCShape->nVertices), 1, sizeof(int) ); + + for ( j=0; j < psCShape->nVertices; j++ ) { + WKBStreamWrite ( stream_obj, &(psCShape->padfX[j]), 1, sizeof(double) ); + WKBStreamWrite ( stream_obj, &(psCShape->padfY[j]), 1, sizeof(double) ); + } /* for each vertex */ + + return (1); +} + + + +/* ************************************************************************** + * SHPReadOGisPolygon + * + * for this pass code to more generic OGis MultiPolygon Type + * later add support for OGis Polygon Type + * + * Encapsulate entire SHPObject for use with Postgresql + * + * **************************************************************************/ +SHPObject* SHPReadOGisPolygon ( WKBStreamObj *stream_obj ) { + SHPObject **ppsC; + SHPObject *psC; + int rPart, ring, rVertices, cpart, cParts, nextring, i, j; + int totParts, totVertices, pRings, nParts; + + psC = SHPCreateObject ( SHPT_POLYGON, -1, 0, NULL, NULL, 0, + NULL, NULL, NULL, NULL ); + /* initialize a blank SHPObject */ + + WKBStreamRead ( stream_obj, &cParts, 1, sizeof(char) ); + + totParts = cParts; + totVertices = 0; + + SfRealloc ( psC->panPartStart, cParts * sizeof(int)); + SfRealloc ( psC->panPartType, cParts * sizeof(int)); + + for ( cpart = 0; cpart < cParts; cpart++) { + WKBStreamRead ( stream_obj, &nParts, 1, sizeof(int) ); + pRings = nParts; + /* pRings is the number of rings prior to the Ring loop below */ + + if ( nParts > 1 ) { + totParts += nParts - 1; + SfRealloc ( psC->panPartStart, totParts * sizeof(int)); + SfRealloc ( psC->panPartType, totParts * sizeof(int)); + } + + rPart = 0; + for ( ring = 0; ring < (nParts - 1); ring ++) { + WKBStreamRead ( stream_obj, &rVertices, 1, sizeof(int) ); + totVertices += rVertices; + + psC->panPartStart[ring+pRings] = rPart; + if ( ring == 0 ) + { psC->panPartType[ring + pRings] = SHPP_OUTERRING; } + else + { psC->panPartType[ring + pRings] = SHPP_INNERRING; } + + SfRealloc ( psC->padfX, totVertices * sizeof (double)); + SfRealloc ( psC->padfY, totVertices * sizeof (double)); + + for ( j=rPart; j < (rPart + rVertices); j++ ) { + WKBStreamRead ( stream_obj, &(psC->padfX[j]), 1, sizeof(double) ); + WKBStreamRead ( stream_obj, &(psC->padfY[j]), 1, sizeof(double) ); + } /* for each vertex */ + rPart += rVertices; + + } /* for each ring */ + + } /* for each complex part */ + + return ( psC ); + +} + + +/* ************************************************************************** + * SHPReadOGisLine + * + * for this pass code to more generic OGis MultiLineString Type + * later add support for OGis LineString Type + * + * Encapsulate entire SHPObject for use with Postgresql + * + * **************************************************************************/ +SHPObject* SHPReadOGisLine ( WKBStreamObj *stream_obj ) { + SHPObject **ppsC; + SHPObject *psC; + int rPart, ring, rVertices, cpart, cParts, nextring, i, j; + int totParts, totVertices, pRings, nParts; + + psC = SHPCreateObject ( SHPT_ARC, -1, 0, NULL, NULL, 0, + NULL, NULL, NULL, NULL ); + /* initialize a blank SHPObject */ + + WKBStreamRead ( stream_obj, &cParts, 1, sizeof(int) ); + + totParts = cParts; + totVertices = 0; + + SfRealloc ( psC->panPartStart, cParts * sizeof(int)); + SfRealloc ( psC->panPartType, cParts * sizeof(int)); + + for ( cpart = 0; cpart < cParts; cpart++) { + WKBStreamRead ( stream_obj, &nParts, 1, sizeof(int) ); + pRings = totParts; + /* pRings is the number of rings prior to the Ring loop below */ + + if ( nParts > 1 ) { + totParts += nParts - 1; + SfRealloc ( psC->panPartStart, totParts * sizeof(int)); + SfRealloc ( psC->panPartType, totParts * sizeof(int)); + } + + rPart = 0; + for ( ring = 0; ring < (nParts - 1); ring ++) { + WKBStreamRead ( stream_obj, &rVertices, 1, sizeof(int) ); + totVertices += rVertices; + + psC->panPartStart[ring+pRings] = rPart; + if ( ring == 0 ) + { psC->panPartType[ring + pRings] = SHPP_OUTERRING; } + else + { psC->panPartType[ring + pRings] = SHPP_INNERRING; } + + SfRealloc ( psC->padfX, totVertices * sizeof (double)); + SfRealloc ( psC->padfY, totVertices * sizeof (double)); + + for ( j=rPart; j < (rPart + rVertices); j++ ) { + WKBStreamRead ( stream_obj, &(psC->padfX[j]), 1, sizeof(double) ); + WKBStreamRead ( stream_obj, &(psC->padfY[j]), 1, sizeof(double) ); + } /* for each vertex */ + rPart += rVertices; + + } /* for each ring */ + + } /* for each complex part */ + + return ( psC ); +} + + +/* ************************************************************************** + * SHPReadOGisPoint + * + * Encapsulate entire SHPObject for use with Postgresql + * + * **************************************************************************/ +SHPObject* SHPReadOGisPoint ( WKBStreamObj *stream_obj ) { + SHPObject *psC; + int nVertices, j; + + psC = SHPCreateObject ( SHPT_MULTIPOINT, -1, 0, NULL, NULL, 0, + NULL, NULL, NULL, NULL ); + /* initialize a blank SHPObject */ + + WKBStreamRead ( stream_obj, &nVertices, 1, sizeof(int) ); + + SfRealloc ( psC->padfX, nVertices * sizeof (double)); + SfRealloc ( psC->padfY, nVertices * sizeof (double)); + + for ( j=0; j < nVertices; j++ ) { + WKBStreamRead ( stream_obj, &(psC->padfX[j]), 1, sizeof(double) ); + WKBStreamRead ( stream_obj, &(psC->padfY[j]), 1, sizeof(double) ); + } /* for each vertex */ + + return ( psC ); +} + + + + +/* ************************************************************************** + * RingReadOGisWKB + * + * this accepts OGisLineStrings which are basic building blocks + * + * Encapsulate entire SHPObject for use with Postgresql + * + * **************************************************************************/ +int RingReadOgisWKB ( SHPObject *psCShape, char *stream_obj) { + return 0; +} + + +/* ************************************************************************** + * RingWriteOGisWKB + * + * this emits OGisLineStrings which are basic building blocks + * + * Encapsulate entire SHPObject for use with Postgresql + * + * **************************************************************************/ +int RingWriteOgisWKB ( SHPObject *psCShape, char *stream_obj) { + + return 0; +} + + +/* ************************************************************************** + * SHPDimension + * + * Return the Dimensionality of the SHPObject + * a handy utility function + * + * **************************************************************************/ +int SHPDimension ( int SHPType ) { + int dimension; + + dimension = 0; + + switch ( SHPType ) { + case SHPT_POINT : dimension = SHPD_POINT; break; + case SHPT_ARC : dimension = SHPD_LINE; break; + case SHPT_POLYGON : dimension = SHPD_AREA; break; + case SHPT_MULTIPOINT : dimension = SHPD_POINT; break; + case SHPT_POINTZ : dimension = SHPD_POINT | SHPD_Z; break; + case SHPT_ARCZ : dimension = SHPD_LINE | SHPD_Z; break; + case SHPT_POLYGONZ : dimension = SHPD_AREA | SHPD_Z; break; + case SHPT_MULTIPOINTZ : dimension = SHPD_POINT | SHPD_Z; break; + case SHPT_POINTM : dimension = SHPD_POINT | SHPD_MEASURE; break; + case SHPT_ARCM : dimension = SHPD_LINE | SHPD_MEASURE; break; + case SHPT_POLYGONM : dimension = SHPD_AREA | SHPD_MEASURE; break; + case SHPT_MULTIPOINTM : dimension = SHPD_POINT | SHPD_MEASURE; break; + case SHPT_MULTIPATCH : dimension = SHPD_AREA; break; + } + + return ( dimension ); +} + + +/* ************************************************************************** + * SHPPointinPoly_2d + * + * Return a Point inside an R+ of a potentially + * complex/compound SHPObject suitable for labelling + * return only one point even if if is a compound object + * + * reject non area SHP Types + * + * **************************************************************************/ +PT SHPPointinPoly_2d ( SHPObject *psCShape ) { + PT *sPT, rPT; + + if ( !(SHPDimension (psCShape->nSHPType) & SHPD_AREA) ) + { + rPT.x = NAN; + rPT.y = NAN; + return rPT; + } + + sPT = SHPPointsinPoly_2d ( psCShape ); + + if ( sPT ) { + rPT.x = sPT[0].x; + rPT.y = sPT[0].y; + } else { + rPT.x = NAN; + rPT.y = NAN; + } + return ( rPT ); +} + + +/* ************************************************************************** + * SHPPointsinPoly_2d + * + * Return a Point inside each R+ of a potentially + * complex/compound SHPObject suitable for labelling + * return one point for each R+ even if it is a compound object + * + * reject non area SHP Types + * + * **************************************************************************/ +PT* SHPPointsinPoly_2d ( SHPObject *psCShape ) { + PT *PIP = NULL; + int cRing; + SHPObject *psO, *psInt, *CLine; + double *CLx, *CLy; + int *CLstt, *CLst, nPIP, ring, rMpart, ring_vtx, ring_nVertices; + double rLen, rLenMax; + + if ( !(SHPDimension (psCShape->nSHPType) & SHPD_AREA) ) + return ( NULL ); + + while ( psO = SHPUnCompound (psCShape, &cRing)) { + CLx = calloc ( 4, sizeof(double)); + CLy = calloc ( 4, sizeof(double)); + CLst = calloc ( 2, sizeof(int)); + CLstt = calloc ( 2, sizeof(int)); + + /* a horizontal & vertical compound line though the middle of the */ + /* extents */ + CLx [0] = psO->dfXMin; + CLy [0] = (psO->dfYMin + psO->dfYMax ) * 0.5; + CLx [1] = psO->dfXMax; + CLy [1] = (psO->dfYMin + psO->dfYMax ) * 0.5; + + CLx [2] = (psO->dfXMin + psO->dfXMax ) * 0.5; + CLy [2] = psO->dfYMin; + CLx [3] = (psO->dfXMin + psO->dfXMax ) * 0.5; + CLy [3] = psO->dfYMax; + + CLst[0] = 0; CLst[1] = 2; + CLstt[0] = SHPP_RING; CLstt[1] = SHPP_RING; + + CLine = SHPCreateObject ( SHPT_POINT, -1, 2, CLst, CLstt, 4, + CLx, CLy, NULL, NULL ); + + /* with the H & V centrline compound object, intersect it with the OBJ */ + psInt = SHPIntersect_2d ( CLine, psO ); + /* return SHP type is lowest common dimensionality of the input types */ + + + /* find the longest linestring returned by the intersection */ + ring_vtx = psInt->nVertices ; + for ( ring = (psInt->nParts - 1); ring >= 0; ring-- ) { + ring_nVertices = ring_vtx - psInt->panPartStart[ring]; + + rLen += RingLength_2d ( ring_nVertices, + (double*) &(psInt->padfX [psInt->panPartStart[ring]]), + (double*) &(psInt->padfY [psInt->panPartStart[ring]]) ); + + if ( rLen > rLenMax ) + { rLenMax = rLen; + rMpart = psInt->panPartStart[ring]; + } + ring_vtx = psInt->panPartStart[ring]; + } + + /* add the centerpoint of the longest ARC of the intersection to the */ + /* PIP list */ + nPIP ++; + SfRealloc ( PIP, sizeof(double) * 2 * nPIP); + PIP[nPIP].x = (psInt ->padfX [rMpart] + psInt ->padfX [rMpart]) * 0.5; + PIP[nPIP].y = (psInt ->padfY [rMpart] + psInt ->padfY [rMpart]) * 0.5; + + SHPDestroyObject ( psO ); + SHPDestroyObject ( CLine ); + + /* does SHPCreateobject use preallocated memory or does it copy the */ + /* contents. To be safe conditionally release CLx, CLy, CLst, CLstt */ + if ( CLx ) free ( CLx ); + if ( CLy ) free ( CLy ); + if ( CLst ) free ( CLst ); + if ( CLstt ) free ( CLstt ); + } + + return ( PIP ); +} + + +/* ************************************************************************** + * SHPCentrd_2d + * + * Return the single mathematical / geometric centroid of a potentially + * complex/compound SHPObject + * + * reject non area SHP Types + * + * **************************************************************************/ +PT SHPCentrd_2d ( SHPObject *psCShape ) { + int ring, ringPrev, ring_nVertices, rStart; + double Area, ringArea; + PT ringCentrd, C; + + + if ( !(SHPDimension (psCShape->nSHPType) & SHPD_AREA) ) + { + C.x = NAN; + C.y = NAN; + return C; + } + +#ifdef DEBUG + printf ("for Object with %d vtx, %d parts [ %d, %d] \n", + psCShape->nVertices, psCShape->nParts, + psCShape->panPartStart[0],psCShape->panPartStart[1]); +#endif + + Area = 0; + C.x = 0.0; + C.y = 0.0; + + /* for each ring in compound / complex object calc the ring cntrd */ + + ringPrev = psCShape->nVertices; + for ( ring = (psCShape->nParts - 1); ring >= 0; ring-- ) { + rStart = psCShape->panPartStart[ring]; + ring_nVertices = ringPrev - rStart; + + RingCentroid_2d ( ring_nVertices, (double*) &(psCShape->padfX [rStart]), + (double*) &(psCShape->padfY [rStart]), &ringCentrd, &ringArea); + +#ifdef DEBUG + printf ("(SHPCentrd_2d) Ring %d, vtxs %d, area: %f, ring centrd %f, %f \n", + ring, ring_nVertices, ringArea, ringCentrd.x, ringCentrd.y); +#endif + + /* use Superposition of these rings to build a composite Centroid */ + /* sum the ring centrds * ringAreas, at the end divide by total area */ + C.x += ringCentrd.x * ringArea; + C.y += ringCentrd.y * ringArea; + Area += ringArea; + ringPrev = rStart; + } + + /* hold on the division by AREA until were at the end */ + C.x = C.x / Area; + C.y = C.y / Area; +#ifdef DEBUG + printf ("SHPCentrd_2d) Overall Area: %f, Centrd %f, %f \n", + Area, C.x, C.y); +#endif + return ( C ); +} + + +/* ************************************************************************** + * RingCentroid_2d + * + * Return the mathematical / geometric centroid of a single closed ring + * + * **************************************************************************/ +int RingCentroid_2d ( int nVertices, double *a, double *b, PT *C, double *Area ) { + int iv,jv; + int sign_x, sign_y; + double dy_Area, dx_Area, Cx_accum, Cy_accum, ppx, ppy; + double x_base, y_base, x, y; + +/* the centroid of a closed Ring is defined as + * + * Cx = sum (cx * dArea ) / Total Area + * and + * Cy = sum (cy * dArea ) / Total Area + */ + + x_base = a[0]; + y_base = b[0]; + + Cy_accum = 0.0; + Cx_accum = 0.0; + + ppx = a[1] - x_base; + ppy = b[1] - y_base; + *Area = 0; + +/* Skip the closing vector */ + for ( iv = 2; iv <= nVertices - 2; iv++ ) { + x = a[iv] - x_base; + y = b[iv] - y_base; + + /* calc the area and centroid of triangle built out of an arbitrary */ + /* base_point on the ring and each successive pair on the ring */ + + /* Area of a triangle is the cross product of its defining vectors */ + /* Centroid of a triangle is the average of its vertices */ + + dx_Area = ((x * ppy) - (y * ppx)) * 0.5; + *Area += dx_Area; + + Cx_accum += ( ppx + x ) * dx_Area; + Cy_accum += ( ppy + y ) * dx_Area; +#ifdef DEBUG2 + printf("(ringcentrd_2d) Pp( %f, %f), P(%f, %f)\n", ppx, ppy, x, y); + printf("(ringcentrd_2d) dA: %f, sA: %f, Cx: %f, Cy: %f \n", + dx_Area, *Area, Cx_accum, Cy_accum); +#endif + ppx = x; + ppy = y; + } + +#ifdef DEBUG2 + printf("(ringcentrd_2d) Cx: %f, Cy: %f \n", + ( Cx_accum / ( *Area * 3) ), ( Cy_accum / (*Area * 3) )); +#endif + + /* adjust back to world coords */ + C->x = ( Cx_accum / ( *Area * 3)) + x_base; + C->y = ( Cy_accum / ( *Area * 3)) + y_base; + + return ( 1 ); +} + + + + +/* ************************************************************************** + * SHPRingDir_2d + * + * Test Polygon for CW / CCW ( R+ / R- ) + * + * return 1 for R+ + * return -1 for R- + * return 0 for error + * **************************************************************************/ +int SHPRingDir_2d ( SHPObject *psCShape, int Ring ) { + int i, ti, last_vtx; + double tX; + double *a, *b; + double dx0, dx1, dy0, dy1, v1, v2 ,v3; + + tX = 0.0; + a = psCShape->padfX; + b = psCShape->padfY; + + if ( Ring >= psCShape->nParts ) return ( 0 ); + + if ( Ring >= psCShape->nParts -1 ) + { last_vtx = psCShape->nVertices; } + else + { last_vtx = psCShape->panPartStart[Ring + 1]; } + + /* All vertices at the corners of the extrema (rightmost lowest, leftmost lowest, */ + /* topmost rightest, ...) must be less than pi wide. If they werent they couldnt be */ + /* extrema. */ + /* of course the following will fail if the Extents are even a little wrong */ + + for ( i = psCShape->panPartStart[Ring]; i < last_vtx; i++ ) { + if ( b[i] == psCShape->dfYMax && a[i] > tX ) + { ti = i; } + } + +#ifdef DEBUG2 + printf ("(shpgeo:SHPRingDir) highest Rightmost Pt is vtx %d (%f, %f)\n", ti, a[ti], b[ti]); +#endif + + /* cross product */ + /* the sign of the cross product of two vectors indicates the right or left half-plane */ + /* which we can use to indicate Ring Dir */ + if ( ti > psCShape->panPartStart[Ring] & ti < last_vtx ) + { dx0 = a[ti-1] - a[ti]; + dx1 = a[ti+1] - a[ti]; + dy0 = b[ti-1] - b[ti]; + dy1 = b[ti+1] - b[ti]; + } + else + /* if the tested vertex is at the origin then continue from 0 */ + { dx1 = a[1] - a[0]; + dx0 = a[last_vtx] - a[0]; + dy1 = b[1] - b[0]; + dy0 = b[last_vtx] - b[0]; + } + +// v1 = ( (dy0 * 0) - (0 * dy1) ); +// v2 = ( (0 * dx1) - (dx0 * 0) ); +/* these above are always zero so why do the math */ + v3 = ( (dx0 * dy1) - (dx1 * dy0) ); + +#ifdef DEBUG2 + printf ("(shpgeo:SHPRingDir) cross product for vtx %d was %f \n", ti, v3); +#endif + + if ( v3 > 0 ) + { return (1); } + else + { return (-1); } +} + + + +/* ************************************************************************** + * SHPArea_2d + * + * Calculate the XY Area of Polygon ( can be compound / complex ) + * + * **************************************************************************/ +double SHPArea_2d ( SHPObject *psCShape ) { + double cArea; + int ring, ring_vtx, ringDir, ring_nVertices; + + cArea = 0; + if ( !(SHPDimension (psCShape->nSHPType) & SHPD_AREA) ) + return ( -1 ); + + + /* Walk each ring adding its signed Area, R- will return a negative */ + /* area, so we don't have to test for them */ + + /* I just start at the last ring and work down to the first */ + ring_vtx = psCShape->nVertices ; + for ( ring = (psCShape->nParts - 1); ring >= 0; ring-- ) { + ring_nVertices = ring_vtx - psCShape->panPartStart[ring]; + +#ifdef DEBUG2 + printf("(shpgeo:SHPArea_2d) part %d, vtx %d \n", ring, ring_nVertices); +#endif + cArea += RingArea_2d ( ring_nVertices, + (double*) &(psCShape->padfX [psCShape->panPartStart[ring]]), + (double*) &(psCShape->padfY [psCShape->panPartStart[ring]]) ); + + ring_vtx = psCShape->panPartStart[ring]; + } + +#ifdef DEBUG2 + printf ("(shpgeo:SHPArea_2d) Area = %f \n", cArea); +#endif + + /* Area is signed, negative Areas are R- */ + return ( cArea ); + +} + + +/* ************************************************************************** + * SHPLength_2d + * + * Calculate the Planar ( XY ) Length of Polygon ( can be compound / complex ) + * or Polyline ( can be compound ). Length on Polygon is its Perimeter + * + * **************************************************************************/ +double SHPLength_2d ( SHPObject *psCShape ) { + double Length; + int i, j; + double dx, dy; + + if ( !(SHPDimension (psCShape->nSHPType) & (SHPD_AREA || SHPD_LINE)) ) + return ( (double) -1 ); + + Length = 0; + j = 1; + for ( i = 1; i < psCShape->nVertices; i++ ) { + if ( psCShape->panPartStart[j] == i ) + { j ++; } + /* skip the moves with "pen up" from ring to ring */ + else + { + dx = psCShape->padfX[i] - psCShape->padfX[i-1]; + dy = psCShape->padfY[i] - psCShape->padfY[i-1]; + Length += sqrt ( ( dx * dx ) + ( dy * dy ) ); + } + /* simplify this equation */ + } + + return ( Length ); +} + + +/* ************************************************************************** + * RingLength_2d + * + * Calculate the Planar ( XY ) Length of Polygon ( can be compound / complex ) + * or Polyline ( can be compound ). Length of Polygon is its Perimeter + * + * **************************************************************************/ +double RingLength_2d ( int nVertices, double *a, double *b ) { + double Length; + int i, j; + double dx, dy; + + Length = 0; + j = 1; + for ( i = 1; i < nVertices; i++ ) { + dx = a[i] - b[i-1]; + dy = b[i] - b[i-1]; + Length += sqrt ( ( dx * dx ) + ( dy * dy ) ); + /* simplify this equation */ + } + + return ( Length ); +} + + +/* ************************************************************************** + * RingArea_2d + * + * Calculate the Planar Area of a single closed ring + * + * **************************************************************************/ +double RingArea_2d ( int nVertices, double *a, double *b ) { + int iv,jv; + double ppx, ppy; + static double Area; + double dx_Area; + double x_base, y_base, x, y; + + x_base = a[0]; + y_base = b[0]; + + ppx = a[1] - x_base; + ppy = b[1] - y_base; + Area = 0.0; +#ifdef DEBUG2 + printf("(shpgeo:RingArea) %d vertices \n", nVertices); +#endif + for ( iv = 2; iv <= ( nVertices - 1 ); iv++ ) { + x = a[iv] - x_base; + y = b[iv] - y_base; + + /* Area of a triangle is the cross product of its defining vectors */ + + dx_Area = ((x * ppy) - (y * ppx)) * 0.5; + + Area += dx_Area; +#ifdef DEBUG2 + printf ("(shpgeo:RingArea) dxArea %f sArea %f for pt(%f, %f)\n", + dx_Area, Area, x, y); +#endif + + ppx = x; + ppy = y; + } + +#ifdef DEBUG2 + printf ("(shpgeo:RingArea) total RingArea %f \n", Area); +#endif + return ( Area ); + +} + + + +/* ************************************************************************** + * SHPUnCompound + * + * ESRI calls this function explode + * Return a non compound ( possibly complex ) object + * + * ring_number is R+ number corresponding to object + * + * + * ignore complexity in Z dimension for now + * + * **************************************************************************/ +SHPObject* SHPUnCompound ( SHPObject *psCShape, int * ringNumber ) { + int ringDir, ring, lRing; + + if ( (*ringNumber >= psCShape->nParts) || *ringNumber == -1 ) { + *ringNumber = -1; + return (NULL); + } + + + if ( *ringNumber == (psCShape->nParts - 1) ) { + *ringNumber = -1; + return ( SHPClone(psCShape, (psCShape->nParts - 1), -1) ); + } + + lRing = *ringNumber; + ringDir = -1; + for ( ring = (lRing + 1); (ring < psCShape->nParts) && ( ringDir < 0 ); ring ++) + ringDir = SHPRingDir_2d ( psCShape, ring); + + if ( ring == psCShape->nParts ) + *ringNumber = -1; + else + *ringNumber = ring; +/* I am strictly assuming that all R- parts of a complex object + * directly follow their R+, so when we hit a new R+ its a + * new part of a compound object + * a SHPClean may be needed to enforce this as it is not part + * of ESRI's definition of a SHPfile + */ + +#ifdef DEBUG2 + printf ("(SHPUnCompound) asked for ring %d, lastring is %d \n", lRing, ring); +#endif + return ( SHPClone(psCShape, lRing, ring ) ); + +} + + +/* ************************************************************************** + * SHPIntersect_2d + * + * + * prototype only for now + * + * return object with lowest common dimensionality of objects + * + * **************************************************************************/ +SHPObject* SHPIntersect_2d ( SHPObject* a, SHPObject* b ) { + SHPObject *C; + + if ( (SHPDimension(a->nSHPType) && SHPD_POINT) || ( SHPDimension(b->nSHPType) && SHPD_POINT ) ) + return ( NULL ); + /* there is no intersect function like this for points */ + + C = SHPClone ( a, 0 , -1 ); + + return ( C); + +} + + + +/* ************************************************************************** + * SHPClean + * + * Test and fix normalization problems in shapes + * Different tests need to be implemented for different SHPTypes + * SHPT_POLYGON check ring directions CW / CCW ( R+ / R- ) + * put all R- after the R+ they are members of + * i.e. each complex object is completed before the + * next object is started + * check for closed rings + * ring must not intersect itself, even on edge + * + * no other types implemented yet + * + * not sure why but return object in place + * use for object casting and object verification + * **************************************************************************/ +int SHPClean ( SHPObject *psCShape ) { + + + return (0); +} + + +/* ************************************************************************** + * SHPClone + * + * Clone a SHPObject, replicating all data + * + * **************************************************************************/ +SHPObject* SHPClone ( SHPObject *psCShape, int lowPart, int highPart ) { + SHPObject *psObject; + int newParts, newVertices; +#ifdef DEBUG + int i; +#endif + + if ( highPart >= psCShape->nParts || highPart == -1 ) + highPart = psCShape->nParts ; + +#ifdef DEBUG + printf (" cloning SHP (%d parts) from ring %d to ring %d \n", + psCShape->nParts, lowPart, highPart); +#endif + + newParts = highPart - lowPart; + if ( newParts == 0 ) { return ( NULL ); } + + psObject = (SHPObject *) calloc(1,sizeof(SHPObject)); + psObject->nSHPType = psCShape->nSHPType; + psObject->nShapeId = psCShape->nShapeId; + + psObject->nParts = newParts; + if ( psCShape->padfX ) { + psObject->panPartStart = (int*) calloc (newParts, sizeof (int)); + memcpy ( psObject->panPartStart, psCShape->panPartStart, + newParts * sizeof (int) ); + } + if ( psCShape->padfX ) { + psObject->panPartType = (int*) calloc (newParts, sizeof (int)); + memcpy ( psObject->panPartType, + (int *) &(psCShape->panPartType[lowPart]), + newParts * sizeof (int) ); + } + + if ( highPart != psCShape->nParts ) { + newVertices = psCShape->panPartStart[highPart] - + psCShape->panPartStart[lowPart]; + } + else + { newVertices = psCShape->nVertices - psCShape->panPartStart[lowPart]; } + + +#ifdef DEBUG + if ( highPart = psCShape->nParts ) + i = psCShape->nVertices; + else + i = psCShape->panPartStart[highPart]; + printf (" from part %d (%d) to %d (%d) is %d vertices \n", + lowPart, psCShape->panPartStart[lowPart], highPart, + i, newVertices); +#endif + psObject->nVertices = newVertices; + if ( psCShape->padfX ) { + psObject->padfX = (double*) calloc (newVertices, sizeof (double)); + memcpy ( psObject->padfX, + (double *) &(psCShape->padfX[psCShape->panPartStart[lowPart]]), + newVertices * sizeof (double) ); + } + if ( psCShape->padfY ) { + psObject->padfY = (double*) calloc (newVertices, sizeof (double)); + memcpy ( psObject->padfY, + (double *) &(psCShape->padfY[psCShape->panPartStart[lowPart]]), + newVertices * sizeof (double) ); + } + if ( psCShape->padfZ ) { + psObject->padfZ = (double*) calloc (newVertices, sizeof (double)); + memcpy ( psObject->padfZ, + (double *) &(psCShape->padfZ[psCShape->panPartStart[lowPart]]), + newVertices * sizeof (double) ); + } + if ( psCShape->padfM ) { + psObject->padfM = (double*) calloc (newVertices, sizeof (double)); + memcpy ( psObject->padfM, + (double *) &(psCShape->padfM[psCShape->panPartStart[lowPart]]), + newVertices * sizeof (double) ); + } + + psObject->dfXMin = psCShape->dfXMin; + psObject->dfYMin = psCShape->dfYMin; + psObject->dfZMin = psCShape->dfZMin; + psObject->dfMMin = psCShape->dfMMin; + + psObject->dfXMax = psCShape->dfXMax; + psObject->dfYMax = psCShape->dfYMax; + psObject->dfZMax = psCShape->dfZMax; + psObject->dfMMax = psCShape->dfMMax; + + SHPComputeExtents ( psObject ); + return ( psObject ); +} + + + +/************************************************************************/ +/* SwapG */ +/* */ +/* Swap a 2, 4 or 8 byte word. */ +/************************************************************************/ +void SwapG( void *so, void *in, int this_cnt, int this_size ) { + int i, j; + unsigned char temp; + +/* return to a new pointer otherwise it would invalidate existing data */ +/* as prevent further use of it */ + + for( j=0; j < this_cnt; j++ ) + { + for( i=0; i < this_size/2; i++ ) + { + ((unsigned char *) so)[i] = ((unsigned char *) in)[this_size-i-1]; + ((unsigned char *) so)[this_size-i-1] = ((unsigned char *) in)[i]; + } + } +} + + +/* ************************************************************************** + * SwapW + * + * change byte order on an array of 16 bit words + * need to change this over to shapelib, Frank Warmerdam's functions + * + * **************************************************************************/ +void swapW (void *so, unsigned char *in, long bytes) { + int i, j; + unsigned char map[4] = {3,2,1,0}; + unsigned char *out; + + out = so; + for (i=0; i <= (bytes/4); i++) + for (j=0; j < 4; j++) + out[(i*4)+map[j]] = in[(i*4)+j]; +} + + +/* ************************************************************************** + * SwapD + * + * change byte order on an array of (double) 32 bit words + * need to change this over to shapelib, Frank Warmerdam's functons + * + * **************************************************************************/ +void swapD (void *so, unsigned char *in, long bytes) { + int i, j; + unsigned char map[8] = {7,6,5,4,3,2,1,0}; + unsigned char *out; + + out = so; + for (i=0; i <= (bytes/8); i++) + for (j=0; j < 8; j++) + out[(i*8)+map[j]] = in[(i*8)+j]; +} + diff --git a/libs/shapelib/contrib/shpgeo.h b/libs/shapelib/contrib/shpgeo.h new file mode 100644 index 0000000..930df6e --- /dev/null +++ b/libs/shapelib/contrib/shpgeo.h @@ -0,0 +1,162 @@ +/****************************************************************************** + * Copyright (c) 1999, Carl Anderson + * + * This code is based in part on the earlier work of Frank Warmerdam + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included + * in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS + * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. + ****************************************************************************** + * shpgeo.h + * + * support for geometric and other additions to shapelib + * + * + * $Log: shpgeo.h,v $ + * Revision 1.4 2016-12-05 12:44:07 erouault + * * Major overhaul of Makefile build system to use autoconf/automake. + * + * * Warning fixes in contrib/ + * + * Revision 1.3 2002-01-15 14:36:56 warmerda + * upgrade to use proj_api.h + * + * Revision 1.2 1999/05/26 02:56:31 candrsn + * updates to shpdxf, dbfinfo, port from Shapelib 1.1.5 of dbfcat and shpinfo + * + * + */ + + + + /* I'm using some shorthand throughout this file + * R+ is a Clockwise Ring and is the positive portion of an object + * R- is a CounterClockwise Ring and is a hole in a R+ + * A complex object is one having at least one R- + * A compound object is one having more than one R+ + * A simple object has one and only one element (R+ or R-) + * + * The closed ring constraint is for polygons and assumed here + * Arcs or LineStrings I am calling Rings (generically open or closed) + * Point types are vertices or lists of vertices but not Rings + * + * SHPT_POLYGON, SHPT_POLYGONZ, SHPT_POLYGONM and SHPT_MULTIPATCH + * can have SHPObjects that are compound as well as complex + * + * SHP_POINT and its Z and M derivatives are strictly simple + * MULTI_POINT, SHPT_ARC and their derivatives may be simple or compound + * + */ + + +#ifndef SHPGEO_H + +#define SHPGEO_H + + +#ifdef __cplusplus +extern "C" { +#endif + +#ifdef PROJ4 +#include "proj_api.h" +#else +typedef void* projPJ; +#endif + +#define SHPD_POINT 1 +#define SHPD_LINE 2 +#define SHPD_AREA 4 +#define SHPD_Z 8 +#define SHPD_MEASURE 16 + + +/* move these into a ogis header file ogis.h */ +#define OGIST_UNKNOWN 0 +#define OGIST_POINT 1 +#define OGIST_LINESTRING 2 +#define OGIST_POLYGON 3 +#define OGIST_MULTIPOINT 4 +#define OGIST_MULTILINE 5 +#define OGIST_MULTIPOLYGON 6 +#define OGIST_GEOMCOLL 7 + +typedef struct { int StreamPos; + int NeedSwap; + char *wStream; + } WKBStreamObj; + +typedef struct { double x; double y; } PT; + + +typedef struct { int cParts; + SHPObject *SHPObj; + } SHPObjectList; + + +#define LSB_ORDER (int) 1 + + +extern char * asFileName ( const char *fil, char *ext ); +extern int SHPProject ( SHPObject *psCShape, + projPJ inproj, projPJ outproj ); +extern projPJ SHPSetProjection ( int param_cnt, char **params ); +extern int SHPFreeProjection ( projPJ p); + +extern int SHPDimension ( int SHPType ); + +extern double SHPArea_2d ( SHPObject *psCShape ); +extern int SHPRingDir_2d ( SHPObject *psCShape, int Ring ); +extern double SHPLength_2d ( SHPObject *psCShape ); +extern PT SHPCentrd_2d ( SHPObject *psCShape ); +extern PT SHPPointinPoly_2d ( SHPObject *psCShape ); +extern PT* SHPPointsinPoly_2d ( SHPObject *psCShape ); + +extern int RingCentroid_2d ( int nVertices, double *a, double *b, PT *C, + double *Area ); +extern double RingLength_2d ( int nVertices, double *a, double *b ); +extern int RingDir_2d ( int nVertices, double *a, double *b ); +extern double RingArea_2d ( int nVertices, double *a, double *b ); + +extern SHPObject* SHPClone ( SHPObject *psCShape, int lowPart, int highPart ); +extern SHPObject* SHPUnCompound ( SHPObject *psCShape, int * ringNumber ); +extern SHPObject* SHPIntersect_2d ( SHPObject* a, SHPObject* b ); + +extern int SHPWriteOGisWKB ( WKBStreamObj *stream_obj, SHPObject *psCShape ); +extern SHPObject* SHPReadOGisWKB ( WKBStreamObj *stream_obj ); + +int SHPWriteOGisPolygon ( WKBStreamObj *stream_obj, SHPObject *psCShape ); +int SHPWriteOGisLine ( WKBStreamObj *stream_obj, SHPObject *psCShape ); +int SHPWriteOGisPoint ( WKBStreamObj *stream_obj, SHPObject *psCShape ); + +SHPObject* SHPReadOGisPolygon ( WKBStreamObj *stream_obj ); +SHPObject* SHPReadOGisLine ( WKBStreamObj *stream_obj ); +SHPObject* SHPReadOGisPoint ( WKBStreamObj *stream_obj ); + +extern int SHPClean ( SHPObject *psCShape ); +extern int SHPOGisType ( int GeomType, int toOGis); + +void swapD (void *so, unsigned char *in, long bytes); +void swapW (void *so, unsigned char *in, long bytes); +void SwapG( void *so, void *in, int this_cnt, int this_size ); + + +#ifdef __cplusplus +} +#endif + +#endif /* ndef SHPGEO_H */ diff --git a/libs/shapelib/contrib/shpinfo.c b/libs/shapelib/contrib/shpinfo.c new file mode 100644 index 0000000..9fb4099 --- /dev/null +++ b/libs/shapelib/contrib/shpinfo.c @@ -0,0 +1,118 @@ +/****************************************************************************** + * Copyright (c) 1999, Carl Anderson + * + * This code is based in part on the earlier work of Frank Warmerdam + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included + * in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS + * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. + ****************************************************************************** + * + * requires shapelib 1.2 + * gcc shpinfoj shpopen.o -o shpinfo + * + * + * $Log: shpinfo.c,v $ + * Revision 1.5 2016-12-05 12:44:07 erouault + * * Major overhaul of Makefile build system to use autoconf/automake. + * + * * Warning fixes in contrib/ + * + * Revision 1.4 2011-07-24 03:17:46 fwarmerdam + * include string.h and stdlib.h where needed in contrib (#2146) + * + * Revision 1.3 2002-04-15 21:33:03 warmerda + * Avoid dereference arrays. + * + * Revision 1.2 2002/04/15 18:40:31 warmerda + * Fixed size of adfBnds{Min,Max} as per bug from David Fowler. + * + * Revision 1.1 1999/05/26 02:56:31 candrsn + * updates to shpdxf, dbfinfo, port from Shapelib 1.1.5 of dbfcat and shpinfo + * + * + */ + +#include +#include +#include "shapefil.h" + +int main( int argc, char ** argv ) + +{ + SHPHandle hSHP, cSHP; + int nShapeType, nEntities, nVertices, nParts, *panParts, i, iPart; + double *padVertices, adfBndsMin[4], adfBndsMax[4]; + const char *pszPlus; + int cShapeType, cEntities, cVertices, cParts, *cpanParts, ci, cPart; + double *cpadVertices, cadBounds[4]; + const char *cpszPlus; + char sType [15]= ""; +/* -------------------------------------------------------------------- */ +/* Display a usage message. */ +/* -------------------------------------------------------------------- */ + if( argc != 2 ) + { + printf( "shpinfo shp_file\n" ); + exit( 1 ); + } + +/* -------------------------------------------------------------------- */ +/* Open the passed shapefile. */ +/* -------------------------------------------------------------------- */ + hSHP = SHPOpen( argv[1], "rb" ); + + if( hSHP == NULL ) + { + printf( "Unable to open:%s\n", argv[1] ); + exit( 1 ); + } + + SHPGetInfo( hSHP, &nEntities, &nShapeType, adfBndsMin, adfBndsMax ); + + switch ( nShapeType ) { + case SHPT_POINT: + strcpy(sType,"Point"); + break; + + case SHPT_ARC: + strcpy(sType,"Polyline"); + break; + + case SHPT_POLYGON: + strcpy(sType,"Polygon"); + break; + + case SHPT_MULTIPOINT: + strcpy(sType,"MultiPoint"); + break; + } + +/* -------------------------------------------------------------------- */ + printf ("Info for %s\n",argv[1]); + printf ("%s(%d), %d Records in file\n",sType,nShapeType,nEntities); + +/* -------------------------------------------------------------------- */ +/* Print out the file bounds. */ +/* -------------------------------------------------------------------- */ + printf( "File Bounds: (%15.10lg,%15.10lg)\n\t(%15.10lg,%15.10lg)\n", + adfBndsMin[0], adfBndsMin[1], adfBndsMax[0], adfBndsMax[1] ); + + + + SHPClose( hSHP ); +} diff --git a/libs/shapelib/contrib/shpproj.c b/libs/shapelib/contrib/shpproj.c new file mode 100644 index 0000000..231c7f7 --- /dev/null +++ b/libs/shapelib/contrib/shpproj.c @@ -0,0 +1,260 @@ +/****************************************************************************** + * Copyright (c) 1999, Carl Anderson + * + * This code is based in part on the earlier work of Frank Warmerdam + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included + * in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS + * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. + ****************************************************************************** + * + * requires shapelib 1.2 + * gcc shpproj ../shpopen.o ../dbfopen.o shpgeo.o -lm -lproj -o shpproj + * + * this requires linking with the PROJ4.3 projection library available from + * + * ftp://kai.er.usgs.gov/ftp/PROJ.4 + * + * + * SHPGeo must be compiled with -DPROJ4 support + * + * $Log: shpproj.c,v $ + * Revision 1.10 2011-07-24 03:17:46 fwarmerdam + * include string.h and stdlib.h where needed in contrib (#2146) + * + * Revision 1.9 2002-01-15 14:37:08 warmerda + * upgrade to use proj_api.h + * + * Revision 1.8 2002/01/11 15:47:26 warmerda + * several fixes + * + * Revision 1.7 2002/01/11 15:23:28 warmerda + * use text mode reading and writing .prj files + * + * Revision 1.6 1999/05/26 02:56:31 candrsn + * updates to shpdxf, dbfinfo, port from Shapelib 1.1.5 of dbfcat and shpinfo + * + * Revision 1.2 1999/05/13 19:30:52 warmerda + * Removed libgen.h, added url for PROJ.4, and corrected unsafe return of + * local variable in asFileName(). + * + */ + + +#include +#include +#include +#include "shapefil.h" +#include "shpgeo.h" + +int main( int argc, char ** argv ) +{ + SHPHandle old_SHP, new_SHP; + DBFHandle old_DBF, new_DBF; + int nShapeType, nEntities, nVertices, nParts, *panParts, i, iPart, j; + double *padVertices, adBounds[4]; + const char *pszPlus; + DBFFieldType idfld_type; + SHPObject *psCShape; + FILE *ifp = NULL; + int idfld, nflds; + char kv[257] = ""; + char idfldName[120] = ""; + char fldName[120] = ""; + char shpFileName[120] = ""; + char dbfFileName[120] = ""; + char prjFileName[120] = ""; + char parg[80]; + double apeture[4]; + int inarg, outarg; + char *DBFRow = NULL; + +/* for testing only + char *in_args[] = { "init=nad83:1002", "units=us-ft" }; + char *out_args[] = { "proj=utm", "zone=16", "units=m" }; +*/ + + char *in_args[16]; + char *out_args[16]; + int in_argc = 0 , out_argc = 0, outf_arg; + char *arglst; + projPJ orig_prj, new_prj; + va_list myargs, moargs; + + if( argc < 4) + { + printf( "shpproj shp_file new_shp ( -i=in_proj_file | -i=\"in_params\" | -i=geographic ) ( -o=out_info_file | -o=\"out_params\" | -o=geographic ) \n" ); + exit( 1 ); + } + + old_SHP = SHPOpen( argv[1], "rb" ); + old_DBF = DBFOpen( argv[1], "rb" ); + if( old_SHP == NULL || old_DBF == NULL ) + { + printf( "Unable to open old files:%s\n", argv[1] ); + exit( 1 ); + } + + outf_arg = 2; + inarg = 0; + outarg = 0; + for ( i = 3; i < argc; i++ ) { + if ( !strncmp ("-i=", argv[i], 3 )) inarg = i; + if ( !strncmp ("-o=", argv[i], 3 )) outarg = i; + } + + +/* if shapefile has a prj component then use that + else try for a file then read args as list */ + + if( inarg == 0 ) + { + strcpy( prjFileName, argv[1] ); + ifp = fopen( asFileName ( prjFileName, "prj" ),"rt"); + } + else + { + ifp = fopen( asFileName ( argv[inarg] + 3, "prj" ),"rt"); + } + + i = 0; + if ( ifp ) { + if( inarg == 0 ) + printf ("using default file proj params from <- %s\n", + asFileName ( prjFileName, "prj" ) ); + else + printf ("using file proj params from <- %s\n", + asFileName ( argv[inarg] + 3, "prj" ) ); + + while( fscanf( ifp, "%s", parg) != EOF ) { + in_args[i] = malloc ( strlen(parg)+1 ); + strcpy ( in_args[i], parg); + i++; + } + + in_argc = i; + fclose (ifp); + } + else { + if ( inarg > 0 ) { + arglst = argv[inarg] + 3; + j = 0; + i = 0; + while ( j < strlen (arglst) ) { + in_argc += sscanf ( arglst + j, "%s", parg); + + in_args[i] = malloc( strlen (parg)+1); + strcpy (in_args[i], parg); + i++; + j += strlen (parg) +1; + if ( arglst[j] + 1 == 0 ) j = strlen (argv[inarg]); + } + } + } + + i = 0; + if ( outarg > 0 ) ifp = fopen( asFileName ( argv[outarg] + 3, "prj" ),"rt"); + if ( ifp ) { + while( fscanf( ifp, "%s", parg) != EOF ) { + out_args[i] = malloc ( strlen(parg)); + strcpy ( out_args[i], parg); + i++; + } + out_argc = i; + fclose (ifp); + } + else { + if ( outarg > 0 ) { + arglst = argv[outarg] + 3; + j = 0; + i = 0; + while ( j < strlen (arglst) ) { + out_argc += sscanf ( arglst + j, "%s", parg); + + out_args[i] = malloc( strlen (parg)+1); + strcpy (out_args[i], parg); + i++; + j += strlen (parg) +1; + if ( arglst[j] + 1 == 0 ) j = strlen (argv[outarg]); + } + } + } + + if ( !strcmp( argv[inarg], "-i=geographic" )) in_argc = 0; + if ( !strcmp( argv[outarg], "-o=geographic" )) out_argc = 0; + + orig_prj = SHPSetProjection ( in_argc, in_args ); + new_prj = SHPSetProjection ( out_argc, out_args ); + + if ( !(( (!in_argc) || orig_prj) && ( (!out_argc) || new_prj) )) { + fprintf (stderr, "unable to process projection, exiting...\n"); + exit(1); + } + + + SHPGetInfo( old_SHP, &nEntities, &nShapeType, NULL, NULL); + new_SHP = SHPCreate ( argv[outf_arg], nShapeType ); + + new_DBF = DBFCloneEmpty (old_DBF, argv[outf_arg]); + if( new_SHP == NULL || new_DBF == NULL ) + { + printf( "Unable to create new files:%s\n", argv[outf_arg] ); + exit( 1 ); + } + + DBFRow = (char *) malloc ( (old_DBF->nRecordLength) + 15 ); + + for( i = 0; i < nEntities; i++ ) + { + int j; + + psCShape = SHPReadObject ( old_SHP, i ); + + SHPProject (psCShape, orig_prj, new_prj ); + + SHPWriteObject ( new_SHP, -1, psCShape ); + SHPDestroyObject ( psCShape ); + + memcpy ( DBFRow, DBFReadTuple ( old_DBF, i ), old_DBF->nRecordLength ); + DBFWriteTuple ( new_DBF, new_DBF->nRecords, DBFRow ); + + } + + SHPFreeProjection ( orig_prj ); + SHPFreeProjection ( new_prj ); + + /* store projection params into prj file */ + ifp = fopen( asFileName ( argv[outf_arg], "prj" ),"wt"); + if ( ifp ) { + + if ( out_argc == 0 ) + { fprintf( ifp, "proj=geographic\n" ); } + else + { for ( i = 0; i < out_argc; i++ ) + fprintf( ifp, "%s\n", out_args[i]); + } + fclose (ifp); + } + + SHPClose( old_SHP ); + SHPClose( new_SHP ); + DBFClose( old_DBF ); + DBFClose( new_DBF ); + printf ("\n"); +} + + diff --git a/libs/shapelib/contrib/shpsort.c b/libs/shapelib/contrib/shpsort.c new file mode 100644 index 0000000..ae0bf6f --- /dev/null +++ b/libs/shapelib/contrib/shpsort.c @@ -0,0 +1,605 @@ +/****************************************************************************** + * Copyright (c) 2004, Eric G. Miller + * + * This code is based in part on the earlier work of Frank Warmerdam + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included + * in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS + * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. + ****************************************************************************** + * shpsort + * + * Rewrite a shapefile sorted by a field or by the geometry. For polygons, + * sort by area, for lines sort by length and do nothing for all others. + * + * $Log: shpsort.c,v $ + * Revision 1.3 2004-07-06 21:23:17 fwarmerdam + * minor const warning fix + * + * Revision 1.2 2004/07/06 21:20:49 fwarmerdam + * major upgrade .. sort on multiple fields + * + * Revision 1.4 2004/06/30 18:19:53 emiller + * handle POINTZ, POINTM + * + * Revision 1.3 2004/06/30 17:40:32 emiller + * major rewrite allows sorting on multiple fields. + * + * Revision 1.2 2004/06/23 23:19:58 emiller + * use tuple copy, misc changes + * + * Revision 1.1 2004/06/23 21:38:17 emiller + * Initial revision + * + * + */ + +#include +#include +#include +#include +#include +#include "shapefil.h" + +enum FieldOrderEnum {DESCENDING, ASCENDING}; +enum FieldTypeEnum { + FIDType = -2, + SHPType = -1, + StringType = FTString, + LogicalType = FTLogical, + IntegerType = FTInteger, + DoubleType = FTDouble +}; + +struct DataUnion { + int null; + union { + int i; + double d; + char *s; + } u; +}; + +struct DataStruct { + int record; + struct DataUnion *value; +}; + +/* + globals used in sorting, each element could have a pointer to + a single data struct, but that's still nShapes pointers more + memory. Alternatively, write a custom sort rather than using + library qsort. +*/ +int nFields; +int *fldIdx; +int *fldOrder; +int *fldType; +int shpType; +int nShapes; + +static struct DataStruct * build_index (SHPHandle shp, DBFHandle dbf); +static char * dupstr (const char *); +static void copy_related (const char *inName, const char *outName, + const char *old_ext, const char *new_ext); +static char ** split(const char *arg, const char *delim); +static int compare(const void *, const void *); +static double area2d_polygon (int n, double *x, double *y); +static double shp_area (SHPObject *feat); +static double length2d_polyline (int n, double *x, double *y); +static double shp_length (SHPObject *feat); + +int main (int argc, char *argv[]) { + + SHPHandle inSHP, outSHP; + DBFHandle inDBF, outDBF; + int len; + int i; + char **fieldNames; + char **strOrder = 0; + struct DataStruct *index; + int width; + int decimals; + SHPObject *feat; + void *tuple; + + if (argc < 4) { + printf("USAGE: shpsort [<(ASCENDING|DESCENDING)[;...]>]\n"); + exit(EXIT_FAILURE); + } + + inSHP = SHPOpen (argv[1], "rb"); + if (!inSHP) { + fputs("Couldn't open shapefile for reading!\n", stderr); + exit(EXIT_FAILURE); + } + SHPGetInfo(inSHP, &nShapes, &shpType, NULL, NULL); + + /* If we can open the inSHP, open its DBF */ + inDBF = DBFOpen (argv[1], "rb"); + if (!inDBF) { + fputs("Couldn't open dbf file for reading!\n", stderr); + exit(EXIT_FAILURE); + } + + /* Parse fields and validate existence */ + fieldNames = split(argv[3], ";"); + if (!fieldNames) { + fputs("ERROR: parsing field names!\n", stderr); + exit(EXIT_FAILURE); + } + for (nFields = 0; fieldNames[nFields] ; nFields++) { + continue; + } + + fldIdx = malloc(sizeof *fldIdx * nFields); + if (!fldIdx) { + fputs("malloc failed!\n", stderr); + exit(EXIT_FAILURE); + } + for (i = 0; i < nFields; i++) { + len = (int)strlen(fieldNames[i]); + while(len > 0) { + --len; + fieldNames[i][len] = (char)toupper((unsigned char)fieldNames[i][len]); + } + fldIdx[i] = DBFGetFieldIndex(inDBF, fieldNames[i]); + if (fldIdx[i] < 0) { + /* try "SHAPE" */ + if (strcmp(fieldNames[i], "SHAPE") == 0) { + fldIdx[i] = -1; + } + else if (strcmp(fieldNames[i], "FID") == 0) { + fldIdx[i] = -2; + } + else { + fprintf(stderr, "ERROR: field '%s' not found!\n", fieldNames[i]); + exit(EXIT_FAILURE); + } + } + } + + + /* set up field type array */ + fldType = malloc(sizeof *fldType * nFields); + if (!fldType) { + fputs("malloc failed!\n", stderr); + exit(EXIT_FAILURE); + } + for (i = 0; i < nFields; i++) { + if (fldIdx[i] < 0) { + fldType[i] = fldIdx[i]; + } + else { + fldType[i] = DBFGetFieldInfo(inDBF, fldIdx[i], NULL, &width, &decimals); + if (fldType[i] == FTInvalid) { + fputs("Unrecognized field type in dBASE file!\n", stderr); + exit(EXIT_FAILURE); + } + } + } + + + /* set up field order array */ + fldOrder = malloc(sizeof *fldOrder * nFields); + if (!fldOrder) { + fputs("malloc failed!\n", stderr); + exit(EXIT_FAILURE); + } + for (i = 0; i < nFields; i++) { + /* default to ascending order */ + fldOrder[i] = ASCENDING; + } + if (argc > 4) { + strOrder = split(argv[4], ";"); + if (!strOrder) { + fputs("ERROR: parsing fields ordering!\n", stderr); + exit(EXIT_FAILURE); + } + for (i = 0; i < nFields && strOrder[i]; i++) { + if (strcmp(strOrder[i], "DESCENDING") == 0) { + fldOrder[i] = DESCENDING; + } + } + } + + /* build the index */ + index = build_index (inSHP, inDBF); + + /* Create output shapefile */ + outSHP = SHPCreate(argv[2], shpType); + if (!outSHP) { + fprintf(stderr, "%s:%d: couldn't create output shapefile!\n", + __FILE__, __LINE__); + exit(EXIT_FAILURE); + } + + /* Create output dbf */ + outDBF = DBFCloneEmpty(inDBF, argv[2]); + if (!outDBF) { + fprintf(stderr, "%s:%d: couldn't create output dBASE file!\n", + __FILE__, __LINE__); + exit(EXIT_FAILURE); + } + + /* Copy projection file, if any */ + copy_related(argv[1], argv[2], ".shp", ".prj"); + + /* Copy metadata file, if any */ + copy_related(argv[1], argv[2], ".shp", ".shp.xml"); + + /* Write out sorted results */ + for (i = 0; i < nShapes; i++) { + feat = SHPReadObject(inSHP, index[i].record); + if (SHPWriteObject(outSHP, -1, feat) < 0) { + fprintf(stderr, "%s:%d: error writing shapefile!\n", __FILE__, __LINE__); + exit(EXIT_FAILURE); + } + tuple = (void *) DBFReadTuple(inDBF, index[i].record); + if (DBFWriteTuple(outDBF, i, tuple) < 0) { + fprintf(stderr, "%s:%d: error writing dBASE file!\n", __FILE__, __LINE__); + exit(EXIT_FAILURE); + } + } + SHPClose(inSHP); + SHPClose(outSHP); + DBFClose(inDBF); + DBFClose(outDBF); + + return EXIT_SUCCESS; + +} + +static char ** split(const char *arg, const char *delim) +{ + char *copy = dupstr(arg); + char *cptr = copy; + char **result = NULL; + char **tmp; + int i = 0; + + for (cptr = strtok(copy, delim); cptr; cptr = strtok(NULL, delim)) { + tmp = realloc (result, sizeof *result * (i + 1)); + if (!tmp && result) { + while (i > 0) { + free(result[--i]); + } + free(result); + free(copy); + return NULL; + } + result = tmp; + result[i++] = dupstr(cptr); + } + + free(copy); + + if (i) { + tmp = realloc(result, sizeof *result * (i + 1)); + if (!tmp) { + while (i > 0) { + free(result[--i]); + } + free(result); + free(copy); + return NULL; + } + result = tmp; + result[i++] = NULL; + } + + return result; +} + + +static void copy_related (const char *inName, const char *outName, + const char *old_ext, const char *new_ext) +{ + char *in; + char *out; + FILE *inFile; + FILE *outFile; + int c; + size_t name_len = strlen(inName); + size_t old_len = strlen(old_ext); + size_t new_len = strlen(new_ext); + + in = malloc(name_len - old_len + new_len + 1); + strncpy(in, inName, (name_len - old_len)); + strcpy(&in[(name_len - old_len)], new_ext); + inFile = fopen(in, "rb"); + if (!inFile) { + free(in); + return; + } + name_len = strlen(outName); + out = malloc(name_len - old_len + new_len + 1); + strncpy(out, outName, (name_len - old_len)); + strcpy(&out[(name_len - old_len)], new_ext); + outFile = fopen(out, "wb"); + if (!out) { + fprintf(stderr, "%s:%d: couldn't copy related file!\n", + __FILE__, __LINE__); + free(in); + free(out); + return; + } + while ((c = fgetc(inFile)) != EOF) { + fputc(c, outFile); + } + fclose(inFile); + fclose(outFile); + free(in); + free(out); +} + +static char * dupstr (const char *src) +{ + char *dst = malloc(strlen(src) + 1); + char *cptr; + if (!dst) { + fprintf(stderr, "%s:%d: malloc failed!\n", __FILE__, __LINE__); + exit(EXIT_FAILURE); + } + cptr = dst; + while ((*cptr++ = *src++)) + ; + return dst; +} + +#ifdef DEBUG +static void PrintDataStruct (struct DataStruct *data) { + int i, j; + for (i = 0; i < nShapes; i++) { + printf("data[%d] {\n", i); + printf("\t.record = %d\n", data[i].record); + for (j = 0; j < nFields; j++) { + printf("\t.value[%d].null = %d\n", j, data[i].value[j].null); + if (!data[i].value[j].null) { + switch(fldType[j]) { + case FIDType: + case IntegerType: + case LogicalType: + printf("\t.value[%d].u.i = %d\n", j, data[i].value[j].u.i); + break; + case DoubleType: + case SHPType: + printf("\t.value[%d].u.d = %f\n", j, data[i].value[j].u.d); + break; + case StringType: + printf("\t.value[%d].u.s = %s\n", j, data[i].value[j].u.s); + break; + } + } + } + puts("}"); + } +} +#endif + +static struct DataStruct * build_index (SHPHandle shp, DBFHandle dbf) { + struct DataStruct *data; + SHPObject *feat; + int i; + int j; + + /* make array */ + data = malloc (sizeof *data * nShapes); + if (!data) { + fputs("malloc failed!\n", stderr); + exit(EXIT_FAILURE); + } + + /* populate array */ + for (i = 0; i < nShapes; i++) { + data[i].value = malloc(sizeof data[0].value[0] * nFields); + if (0 == data[i].value) { + fputs("malloc failed!\n", stderr); + exit(EXIT_FAILURE); + } + data[i].record = i; + for (j = 0; j < nFields; j++) { + data[i].value[j].null = 0; + switch (fldType[j]) { + case FIDType: + data[i].value[j].u.i = i; + break; + case SHPType: + feat = SHPReadObject(shp, i); + switch (feat->nSHPType) { + case SHPT_NULL: + fprintf(stderr, "Shape %d is a null feature!\n", i); + data[i].value[j].null = 1; + break; + case SHPT_POINT: + case SHPT_POINTZ: + case SHPT_POINTM: + case SHPT_MULTIPOINT: + case SHPT_MULTIPOINTZ: + case SHPT_MULTIPOINTM: + case SHPT_MULTIPATCH: + /* Y-sort bounds */ + data[i].value[j].u.d = feat->dfYMax; + break; + case SHPT_ARC: + case SHPT_ARCZ: + case SHPT_ARCM: + data[i].value[j].u.d = shp_length(feat); + break; + case SHPT_POLYGON: + case SHPT_POLYGONZ: + case SHPT_POLYGONM: + data[i].value[j].u.d = shp_area(feat); + break; + default: + fputs("Can't sort on Shapefile feature type!\n", stderr); + exit(EXIT_FAILURE); + } + SHPDestroyObject(feat); + break; + case FTString: + data[i].value[j].null = DBFIsAttributeNULL(dbf, i, fldIdx[j]); + if (!data[i].value[j].null) { + data[i].value[j].u.s = dupstr(DBFReadStringAttribute(dbf, i, fldIdx[j])); + } + break; + case FTInteger: + case FTLogical: + data[i].value[j].null = DBFIsAttributeNULL(dbf, i, fldIdx[j]); + if (!data[i].value[j].null) { + data[i].value[j].u.i = DBFReadIntegerAttribute(dbf, i, fldIdx[j]); + } + break; + case FTDouble: + data[i].value[j].null = DBFIsAttributeNULL(dbf, i, fldIdx[j]); + if (!data[i].value[j].null) { + data[i].value[j].u.d = DBFReadDoubleAttribute(dbf, i, fldIdx[j]); + } + break; + } + } + } + +#ifdef DEBUG + PrintDataStruct(data); + fputs("build_index: sorting array\n", stdout); +#endif + + qsort (data, nShapes, sizeof data[0], compare); + +#ifdef DEBUG + PrintDataStruct(data); + fputs("build_index: returning array\n", stdout); +#endif + + return data; +} + +static int compare(const void *A, const void *B) { + const struct DataStruct *a = A; + const struct DataStruct *b = B; + int i; + int result = 0; + + for (i = 0; i < nFields; i++) { + if (a->value[i].null && b->value[i].null) { + continue; + } + if (a->value[i].null && !b->value[i].null) { + return (fldOrder[i]) ? 1 : -1; + } + if (!a->value[i].null && b->value[i].null) { + return (fldOrder[i]) ? -1 : 1; + } + switch (fldType[i]) { + case FIDType: + case IntegerType: + case LogicalType: + if (a->value[i].u.i < b->value[i].u.i) { + return (fldOrder[i]) ? -1 : 1; + } + if (a->value[i].u.i > b->value[i].u.i) { + return (fldOrder[i]) ? 1 : -1; + } + break; + case DoubleType: + case SHPType: + if (a->value[i].u.d < b->value[i].u.d) { + return (fldOrder[i]) ? -1 : 1; + } + if (a->value[i].u.d > b->value[i].u.d) { + return (fldOrder[i]) ? 1 : -1; + } + break; + case StringType: + result = strcmp(a->value[i].u.s, b->value[i].u.s); + if (result) { + return (fldOrder[i]) ? result : -result; + } + break; + default: + fprintf(stderr, "compare: Program Error! Unhandled field type! fldType[%d] = %d\n", i, fldType[i]); + break; + } + } + return 0; +} + +static double area2d_polygon (int n, double *x, double *y) { + double area = 0; + int i; + for (i = 1; i < n; i++) { + area += (x[i-1] + x[i]) * (y[i] - y[i-1]); + } + return area / 2.0; +} + +static double shp_area (SHPObject *feat) { + double area = 0.0; + if (feat->nParts == 0) { + area = area2d_polygon (feat->nVertices, feat->padfX, feat->padfY); + } + else { + int part, n; + for (part = 0; part < feat->nParts; part++) { + if (part < feat->nParts - 1) { + n = feat->panPartStart[part+1] - feat->panPartStart[part]; + } + else { + n = feat->nVertices - feat->panPartStart[part]; + } + area += area2d_polygon (n, &(feat->padfX[feat->panPartStart[part]]), + &(feat->padfY[feat->panPartStart[part]])); + } + } + /* our area function computes in opposite direction */ + return -area; +} + +static double length2d_polyline (int n, double *x, double *y) { + double length = 0.0; + int i; + for (i = 1; i < n; i++) { + length += sqrt((x[i] - x[i-1])*(x[i] - x[i-1]) + + + (y[i] - y[i-1])*(y[i] - y[i-1])); + } + return length; +} + +static double shp_length (SHPObject *feat) { + double length = 0.0; + if (feat->nParts == 0) { + length = length2d_polyline(feat->nVertices, feat->padfX, feat->padfY); + } + else { + int part, n; + for (part = 0; part < feat->nParts; part++) { + if (part < feat->nParts - 1) { + n = feat->panPartStart[part+1] - feat->panPartStart[part]; + } + else { + n = feat->nVertices - feat->panPartStart[part]; + } + length += length2d_polyline (n, + &(feat->padfX[feat->panPartStart[part]]), + &(feat->padfY[feat->panPartStart[part]])); + } + } + return length; +} + diff --git a/libs/shapelib/contrib/shpwkb.c b/libs/shapelib/contrib/shpwkb.c new file mode 100644 index 0000000..f27114e --- /dev/null +++ b/libs/shapelib/contrib/shpwkb.c @@ -0,0 +1,129 @@ +/****************************************************************************** + * Copyright (c) 1999, Carl Anderson + * + * this code is based in part on the earlier work of Frank Warmerdam + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included + * in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS + * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. + ****************************************************************************** + * + * shpwkb.c - test WKB binary Input / Output + * + * + * $Log: shpwkb.c,v $ + * Revision 1.2 2016-12-05 12:44:07 erouault + * * Major overhaul of Makefile build system to use autoconf/automake. + * + * * Warning fixes in contrib/ + * + * Revision 1.1 1999-05-26 02:29:36 candrsn + * OGis Well Known Binary test program (output only) + * + * + * + */ + +#include +#include "shapefil.h" +#include "shpgeo.h" + +int main( int argc, char ** argv ) +{ + SHPHandle old_SHP, new_SHP; + DBFHandle old_DBF, new_DBF; + int nShapeType, nEntities, nVertices, nParts, *panParts, i, iPart; + double *padVertices, adBounds[4]; + const char *pszPlus; + DBFFieldType idfld_type; + int idfld, nflds; + char kv[257] = ""; + char idfldName[120] = ""; + char fldName[120] = ""; + char shpFileName[120] = ""; + char dbfFileName[120] = ""; + char *DBFRow = NULL; + int Cpan[2] = { 0,0 }; + int byRing = 0; + PT oCentrd, ringCentrd; + SHPObject *psCShape, *cent_pt; + double oArea = 0.0, oLen = 0.0; + WKBStreamObj *wkbObj = NULL; + FILE *wkb_file = NULL; + + if( argc < 3 ) + { + printf( "shpwkb shp_file wkb_file\n" ); + exit( 1 ); + } + + old_SHP = SHPOpen (argv[1], "rb" ); + old_DBF = DBFOpen (argv[1], "rb"); + if( old_SHP == NULL || old_DBF == NULL ) + { + printf( "Unable to open old files:%s\n", argv[1] ); + exit( 1 ); + } + + wkb_file = fopen ( argv[2], "wb"); + wkbObj = calloc ( 3, sizeof (int) ); + + SHPGetInfo( old_SHP, &nEntities, &nShapeType, NULL, NULL ); + for( i = 0; i < nEntities; i++ ) + { + int res ; + + psCShape = SHPReadObject( old_SHP, i ); + + if ( byRing == 1 ) { + int ring, prevStart, ringDir; + double ringArea; + + prevStart = psCShape->nVertices; + for ( ring = (psCShape->nParts - 1); ring >= 0; ring-- ) { + SHPObject *psO; + int j, numVtx, rStart; + + rStart = psCShape->panPartStart[ring]; + if ( ring == (psCShape->nParts -1) ) + { numVtx = psCShape->nVertices - rStart; } + else + { numVtx = psCShape->panPartStart[ring+1] - rStart; } + + printf ("(shpdata) Ring(%d) (%d for %d) \n", ring, rStart, numVtx); + psO = SHPClone ( psCShape, ring, ring + 1 ); + + SHPDestroyObject ( psO ); + printf ("(shpdata) End Ring \n"); + } /* (ring) [0,nParts */ + + } /* by ring */ + + printf ("gonna build a wkb \n"); + res = SHPWriteOGisWKB ( wkbObj, psCShape ); + printf ("gonna write a wkb that is %d bytes long \n", wkbObj->StreamPos ); + fwrite ( (void*) wkbObj->wStream, 1, wkbObj->StreamPos, wkb_file ); + } + + + free ( wkbObj ); + SHPClose( old_SHP ); + DBFClose( old_DBF ); + if ( wkb_file ) fclose ( wkb_file ); + + printf ("\n"); +} diff --git a/libs/shapelib/contrib/tests/shpproj.sh b/libs/shapelib/contrib/tests/shpproj.sh new file mode 100755 index 0000000..4f1ceb5 --- /dev/null +++ b/libs/shapelib/contrib/tests/shpproj.sh @@ -0,0 +1,39 @@ +#!/bin/bash + +testdir="$(dirname "$(readlink -f $0)")" + +rm -f "$testdir/test*" +$top_builddir/shpcreate "$testdir/test" point + +$top_builddir/shpadd "$testdir/test" -83.54949956 34.992401 +$top_builddir/shpadd "$testdir/test" -83.52162155 34.99276748 +$top_builddir/shpadd "$testdir/test" -84.01681518 34.67275985 +$top_builddir/shpadd "$testdir/test" -84.15596023 34.64862437 +$top_builddir/shpadd "$testdir/test" -83.61951463 34.54927047 + +$top_builddir/dbfcreate "$testdir/test" -s fd 30 +$top_builddir/dbfadd "$testdir/test" "1" +$top_builddir/dbfadd "$testdir/test" "2" +$top_builddir/dbfadd "$testdir/test" "3" +$top_builddir/dbfadd "$testdir/test" "4" +$top_builddir/dbfadd "$testdir/test" "5" + +$top_builddir/contrib/shpproj "$testdir/test" "$testdir/test_1" -i=geographic -o="init=nad83:1002 units=us-ft" +$top_builddir/contrib/shpproj "$testdir/test_1" "$testdir/test_2" -o="proj=utm zone=16 units=m" +$top_builddir/contrib/shpproj "$testdir/test_2" "$testdir/test_3" -o=geographic + +$top_builddir/shpdump -precision 8 "$testdir/test" > "$testdir/test.out" +$top_builddir/shpdump -precision 8 "$testdir/test_3" > "$testdir/test_3.out" + + +result="$(diff "$testdir/test.out" "$testdir/test_3.out")" +if [ "$result" == "" ]; then + echo "******* Test Succeeded *********" + rm -f "$testdir/test*" + exit 0 +else + echo "******* Test Failed *********" + echo "$result" + rm -f "$testdir/test*" + exit 1 +fi diff --git a/libs/shapelib/dbfadd.c b/libs/shapelib/dbfadd.c new file mode 100644 index 0000000..0c57ef8 --- /dev/null +++ b/libs/shapelib/dbfadd.c @@ -0,0 +1,133 @@ +/****************************************************************************** + * $Id: dbfadd.c,v 1.10 2016-12-05 12:44:05 erouault Exp $ + * + * Project: Shapelib + * Purpose: Sample application for adding a record to an existing .dbf file. + * Author: Frank Warmerdam, warmerdam@pobox.com + * + ****************************************************************************** + * Copyright (c) 1999, Frank Warmerdam + * + * This software is available under the following "MIT Style" license, + * or at the option of the licensee under the LGPL (see COPYING). This + * option is discussed in more detail in shapelib.html. + * + * -- + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included + * in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS + * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. + ****************************************************************************** + * + * $Log: dbfadd.c,v $ + * Revision 1.10 2016-12-05 12:44:05 erouault + * * Major overhaul of Makefile build system to use autoconf/automake. + * + * * Warning fixes in contrib/ + * + * Revision 1.9 2004-09-26 20:09:35 fwarmerdam + * avoid rcsid warnings + * + * Revision 1.8 2004/01/09 16:39:49 fwarmerdam + * include standard include files + * + * Revision 1.7 2002/01/15 14:36:07 warmerda + * updated email address + * + * Revision 1.6 2001/05/31 18:15:40 warmerda + * Added support for NULL fields in DBF files + * + * Revision 1.5 1999/11/05 14:12:04 warmerda + * updated license terms + * + * Revision 1.4 1998/12/03 16:36:06 warmerda + * Added stdlib.h and math.h to get atof() prototype. + * + * Revision 1.3 1995/10/21 03:13:23 warmerda + * Use binary mode.. + * + * Revision 1.2 1995/08/04 03:15:59 warmerda + * Added header. + * + */ + +#include +#include +#include + +#include "shapefil.h" + +SHP_CVSID("$Id: dbfadd.c,v 1.10 2016-12-05 12:44:05 erouault Exp $") + +int main( int argc, char ** argv ) + +{ + DBFHandle hDBF; + int i, iRecord; + +/* -------------------------------------------------------------------- */ +/* Display a usage message. */ +/* -------------------------------------------------------------------- */ + if( argc < 3 ) + { + printf( "dbfadd xbase_file field_values\n" ); + + exit( 1 ); + } + +/* -------------------------------------------------------------------- */ +/* Create the database. */ +/* -------------------------------------------------------------------- */ + hDBF = DBFOpen( argv[1], "r+b" ); + if( hDBF == NULL ) + { + printf( "DBFOpen(%s,\"rb+\") failed.\n", argv[1] ); + exit( 2 ); + } + +/* -------------------------------------------------------------------- */ +/* Do we have the correct number of arguments? */ +/* -------------------------------------------------------------------- */ + if( DBFGetFieldCount( hDBF ) != argc - 2 ) + { + printf( "Got %d fields, but require %d\n", + argc - 2, DBFGetFieldCount( hDBF ) ); + exit( 3 ); + } + + iRecord = DBFGetRecordCount( hDBF ); + +/* -------------------------------------------------------------------- */ +/* Loop assigning the new field values. */ +/* -------------------------------------------------------------------- */ + for( i = 0; i < DBFGetFieldCount(hDBF); i++ ) + { + if( strcmp( argv[i+2], "" ) == 0 ) + DBFWriteNULLAttribute(hDBF, iRecord, i ); + else if( DBFGetFieldInfo( hDBF, i, NULL, NULL, NULL ) == FTString ) + DBFWriteStringAttribute(hDBF, iRecord, i, argv[i+2] ); + else + DBFWriteDoubleAttribute(hDBF, iRecord, i, atof(argv[i+2]) ); + } + +/* -------------------------------------------------------------------- */ +/* Close and cleanup. */ +/* -------------------------------------------------------------------- */ + DBFClose( hDBF ); + + return( 0 ); +} diff --git a/libs/shapelib/dbfcreate.c b/libs/shapelib/dbfcreate.c new file mode 100644 index 0000000..13238b3 --- /dev/null +++ b/libs/shapelib/dbfcreate.c @@ -0,0 +1,131 @@ +/****************************************************************************** + * $Id: dbfcreate.c,v 1.8 2016-12-05 12:44:05 erouault Exp $ + * + * Project: Shapelib + * Purpose: Sample application for creating a new .dbf file. + * Author: Frank Warmerdam, warmerdam@pobox.com + * + ****************************************************************************** + * Copyright (c) 1999, Frank Warmerdam + * + * This software is available under the following "MIT Style" license, + * or at the option of the licensee under the LGPL (see COPYING). This + * option is discussed in more detail in shapelib.html. + * + * -- + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included + * in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS + * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. + ****************************************************************************** + * + * $Log: dbfcreate.c,v $ + * Revision 1.8 2016-12-05 12:44:05 erouault + * * Major overhaul of Makefile build system to use autoconf/automake. + * + * * Warning fixes in contrib/ + * + * Revision 1.7 2004-09-26 20:09:35 fwarmerdam + * avoid rcsid warnings + * + * Revision 1.6 2002/01/15 14:36:07 warmerda + * updated email address + * + * Revision 1.5 2000/07/07 13:39:45 warmerda + * removed unused variables, and added system include files + * + * Revision 1.4 1999/11/05 14:12:04 warmerda + * updated license terms + * + * Revision 1.3 1999/04/01 18:47:44 warmerda + * Fixed DBFAddField() call convention. + * + * Revision 1.2 1995/08/04 03:17:11 warmerda + * Added header. + * + */ + +#include +#include +#include "shapefil.h" + +SHP_CVSID("$Id: dbfcreate.c,v 1.8 2016-12-05 12:44:05 erouault Exp $") + +int main( int argc, char ** argv ) + +{ + DBFHandle hDBF; + int i; + +/* -------------------------------------------------------------------- */ +/* Display a usage message. */ +/* -------------------------------------------------------------------- */ + if( argc < 2 ) + { + printf( "dbfcreate xbase_file [[-s field_name width],[-n field_name width decimals]]...\n" ); + + exit( 1 ); + } + +/* -------------------------------------------------------------------- */ +/* Create the database. */ +/* -------------------------------------------------------------------- */ + hDBF = DBFCreate( argv[1] ); + if( hDBF == NULL ) + { + printf( "DBFCreate(%s) failed.\n", argv[1] ); + exit( 2 ); + } + +/* -------------------------------------------------------------------- */ +/* Loop over the field definitions adding new fields. */ +/* -------------------------------------------------------------------- */ + for( i = 2; i < argc; i++ ) + { + if( strcmp(argv[i],"-s") == 0 && i < argc-2 ) + { + if( DBFAddField( hDBF, argv[i+1], FTString, atoi(argv[i+2]), 0 ) + == -1 ) + { + printf( "DBFAddField(%s,FTString,%d,0) failed.\n", + argv[i+1], atoi(argv[i+2]) ); + exit( 4 ); + } + i = i + 2; + } + else if( strcmp(argv[i],"-n") == 0 && i < argc-3 ) + { + if( DBFAddField( hDBF, argv[i+1], FTDouble, atoi(argv[i+2]), + atoi(argv[i+3]) ) == -1 ) + { + printf( "DBFAddField(%s,FTDouble,%d,%d) failed.\n", + argv[i+1], atoi(argv[i+2]), atoi(argv[i+3]) ); + exit( 4 ); + } + i = i + 3; + } + else + { + printf( "Argument incomplete, or unrecognised:%s\n", argv[i] ); + exit( 3 ); + } + } + + DBFClose( hDBF ); + + return( 0 ); +} diff --git a/libs/shapelib/dbfdump.c b/libs/shapelib/dbfdump.c new file mode 100644 index 0000000..bb3afdf --- /dev/null +++ b/libs/shapelib/dbfdump.c @@ -0,0 +1,295 @@ +/****************************************************************************** + * $Id: dbfdump.c,v 1.14 2016-12-05 12:44:05 erouault Exp $ + * + * Project: Shapelib + * Purpose: Sample application for dumping .dbf files to the terminal. + * Author: Frank Warmerdam, warmerdam@pobox.com + * + ****************************************************************************** + * Copyright (c) 1999, Frank Warmerdam + * + * This software is available under the following "MIT Style" license, + * or at the option of the licensee under the LGPL (see COPYING). This + * option is discussed in more detail in shapelib.html. + * + * -- + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included + * in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS + * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. + ****************************************************************************** + * + * $Log: dbfdump.c,v $ + * Revision 1.14 2016-12-05 12:44:05 erouault + * * Major overhaul of Makefile build system to use autoconf/automake. + * + * * Warning fixes in contrib/ + * + * Revision 1.13 2013-11-26 21:52:33 fwarmerdam + * report deleted rows in dbfdump + * + * Revision 1.12 2006-06-17 00:15:08 fwarmerdam + * Free panWidth for better memory testing. + * + * Revision 1.11 2006/02/15 01:11:27 fwarmerdam + * added reporting of native type + * + * Revision 1.10 2004/09/26 20:09:35 fwarmerdam + * avoid rcsid warnings + * + * Revision 1.9 2002/01/15 14:36:07 warmerda + * updated email address + * + * Revision 1.8 2001/05/31 18:15:40 warmerda + * Added support for NULL fields in DBF files + * + * Revision 1.7 2000/09/20 13:13:55 warmerda + * added break after default: + * + * Revision 1.6 2000/07/07 13:39:45 warmerda + * removed unused variables, and added system include files + * + * Revision 1.5 1999/11/05 14:12:04 warmerda + * updated license terms + * + * Revision 1.4 1998/12/31 15:30:13 warmerda + * Added -m, -r, and -h commandline options. + * + * Revision 1.3 1995/10/21 03:15:01 warmerda + * Changed to use binary file access. + * + * Revision 1.2 1995/08/04 03:16:22 warmerda + * Added header. + * + */ + +#include +#include +#include "shapefil.h" + +SHP_CVSID("$Id: dbfdump.c,v 1.14 2016-12-05 12:44:05 erouault Exp $") + +int main( int argc, char ** argv ) + +{ + DBFHandle hDBF; + int *panWidth, i, iRecord; + char szFormat[32], *pszFilename = NULL; + int nWidth, nDecimals; + int bHeader = 0; + int bRaw = 0; + int bMultiLine = 0; + char szTitle[12]; + +/* -------------------------------------------------------------------- */ +/* Handle arguments. */ +/* -------------------------------------------------------------------- */ + for( i = 1; i < argc; i++ ) + { + if( strcmp(argv[i],"-h") == 0 ) + bHeader = 1; + else if( strcmp(argv[i],"-r") == 0 ) + bRaw = 1; + else if( strcmp(argv[i],"-m") == 0 ) + bMultiLine = 1; + else + pszFilename = argv[i]; + } + +/* -------------------------------------------------------------------- */ +/* Display a usage message. */ +/* -------------------------------------------------------------------- */ + if( pszFilename == NULL ) + { + printf( "dbfdump [-h] [-r] [-m] xbase_file\n" ); + printf( " -h: Write header info (field descriptions)\n" ); + printf( " -r: Write raw field info, numeric values not reformatted\n" ); + printf( " -m: Multiline, one line per field.\n" ); + exit( 1 ); + } + +/* -------------------------------------------------------------------- */ +/* Open the file. */ +/* -------------------------------------------------------------------- */ + hDBF = DBFOpen( pszFilename, "rb" ); + if( hDBF == NULL ) + { + printf( "DBFOpen(%s,\"r\") failed.\n", argv[1] ); + exit( 2 ); + } + +/* -------------------------------------------------------------------- */ +/* If there is no data in this file let the user know. */ +/* -------------------------------------------------------------------- */ + if( DBFGetFieldCount(hDBF) == 0 ) + { + printf( "There are no fields in this table!\n" ); + exit( 3 ); + } + +/* -------------------------------------------------------------------- */ +/* Dump header definitions. */ +/* -------------------------------------------------------------------- */ + if( bHeader ) + { + for( i = 0; i < DBFGetFieldCount(hDBF); i++ ) + { + DBFFieldType eType; + const char *pszTypeName; + char chNativeType; + + chNativeType = DBFGetNativeFieldType( hDBF, i ); + + eType = DBFGetFieldInfo( hDBF, i, szTitle, &nWidth, &nDecimals ); + if( eType == FTString ) + pszTypeName = "String"; + else if( eType == FTInteger ) + pszTypeName = "Integer"; + else if( eType == FTDouble ) + pszTypeName = "Double"; + else if( eType == FTInvalid ) + pszTypeName = "Invalid"; + + printf( "Field %d: Type=%c/%s, Title=`%s', Width=%d, Decimals=%d\n", + i, chNativeType, pszTypeName, szTitle, nWidth, nDecimals ); + } + } + +/* -------------------------------------------------------------------- */ +/* Compute offsets to use when printing each of the field */ +/* values. We make each field as wide as the field title+1, or */ +/* the field value + 1. */ +/* -------------------------------------------------------------------- */ + panWidth = (int *) malloc( DBFGetFieldCount( hDBF ) * sizeof(int) ); + + for( i = 0; i < DBFGetFieldCount(hDBF) && !bMultiLine; i++ ) + { + DBFFieldType eType; + + eType = DBFGetFieldInfo( hDBF, i, szTitle, &nWidth, &nDecimals ); + if( (int) strlen(szTitle) > nWidth ) + panWidth[i] = strlen(szTitle); + else + panWidth[i] = nWidth; + + if( eType == FTString ) + sprintf( szFormat, "%%-%ds ", panWidth[i] ); + else + sprintf( szFormat, "%%%ds ", panWidth[i] ); + printf( szFormat, szTitle ); + } + printf( "\n" ); + +/* -------------------------------------------------------------------- */ +/* Read all the records */ +/* -------------------------------------------------------------------- */ + for( iRecord = 0; iRecord < DBFGetRecordCount(hDBF); iRecord++ ) + { + if( bMultiLine ) + printf( "Record: %d\n", iRecord ); + + for( i = 0; i < DBFGetFieldCount(hDBF); i++ ) + { + DBFFieldType eType; + + eType = DBFGetFieldInfo( hDBF, i, szTitle, &nWidth, &nDecimals ); + + if( bMultiLine ) + { + printf( "%s: ", szTitle ); + } + +/* -------------------------------------------------------------------- */ +/* Print the record according to the type and formatting */ +/* information implicit in the DBF field description. */ +/* -------------------------------------------------------------------- */ + if( !bRaw ) + { + if( DBFIsAttributeNULL( hDBF, iRecord, i ) ) + { + if( eType == FTString ) + sprintf( szFormat, "%%-%ds", nWidth ); + else + sprintf( szFormat, "%%%ds", nWidth ); + + printf( szFormat, "(NULL)" ); + } + else + { + switch( eType ) + { + case FTString: + sprintf( szFormat, "%%-%ds", nWidth ); + printf( szFormat, + DBFReadStringAttribute( hDBF, iRecord, i ) ); + break; + + case FTInteger: + sprintf( szFormat, "%%%dd", nWidth ); + printf( szFormat, + DBFReadIntegerAttribute( hDBF, iRecord, i ) ); + break; + + case FTDouble: + sprintf( szFormat, "%%%d.%dlf", nWidth, nDecimals ); + printf( szFormat, + DBFReadDoubleAttribute( hDBF, iRecord, i ) ); + break; + + default: + break; + } + } + } + +/* -------------------------------------------------------------------- */ +/* Just dump in raw form (as formatted in the file). */ +/* -------------------------------------------------------------------- */ + else + { + sprintf( szFormat, "%%-%ds", nWidth ); + printf( szFormat, + DBFReadStringAttribute( hDBF, iRecord, i ) ); + } + +/* -------------------------------------------------------------------- */ +/* Write out any extra spaces required to pad out the field */ +/* width. */ +/* -------------------------------------------------------------------- */ + if( !bMultiLine ) + { + sprintf( szFormat, "%%%ds", panWidth[i] - nWidth + 1 ); + printf( szFormat, "" ); + } + + if( bMultiLine ) + printf( "\n" ); + + fflush( stdout ); + } + + if( DBFIsRecordDeleted(hDBF, iRecord) ) + printf( "(DELETED)" ); + + printf( "\n" ); + } + + DBFClose( hDBF ); + free( panWidth ); + + return( 0 ); +} diff --git a/libs/shapelib/dbfopen.c b/libs/shapelib/dbfopen.c new file mode 100644 index 0000000..148e593 --- /dev/null +++ b/libs/shapelib/dbfopen.c @@ -0,0 +1,2405 @@ +/****************************************************************************** + * $Id: dbfopen.c,v 1.92 2016-12-05 18:44:08 erouault Exp $ + * + * Project: Shapelib + * Purpose: Implementation of .dbf access API documented in dbf_api.html. + * Author: Frank Warmerdam, warmerdam@pobox.com + * + ****************************************************************************** + * Copyright (c) 1999, Frank Warmerdam + * Copyright (c) 2012-2013, Even Rouault + * + * This software is available under the following "MIT Style" license, + * or at the option of the licensee under the LGPL (see COPYING). This + * option is discussed in more detail in shapelib.html. + * + * -- + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included + * in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS + * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. + ****************************************************************************** + * + * $Log: dbfopen.c,v $ + * Revision 1.92 2016-12-05 18:44:08 erouault + * * dbfopen.c, shapefil.h: write DBF end-of-file character 0x1A by default. + * This behaviour can be controlled with the DBFSetWriteEndOfFileChar() + * function. + * + * Revision 1.91 2016-12-05 12:44:05 erouault + * * Major overhaul of Makefile build system to use autoconf/automake. + * + * * Warning fixes in contrib/ + * + * Revision 1.90 2016-12-04 15:30:15 erouault + * * shpopen.c, dbfopen.c, shptree.c, shapefil.h: resync with + * GDAL Shapefile driver. Mostly cleanups. SHPObject and DBFInfo + * structures extended with new members. New functions: + * DBFSetLastModifiedDate, SHPOpenLLEx, SHPRestoreSHX, + * SHPSetFastModeReadObject + * + * * sbnsearch.c: new file to implement original ESRI .sbn spatial + * index reading. (no write support). New functions: + * SBNOpenDiskTree, SBNCloseDiskTree, SBNSearchDiskTree, + * SBNSearchDiskTreeInteger, SBNSearchFreeIds + * + * * Makefile, makefile.vc, CMakeLists.txt, shapelib.def: updates + * with new file and symbols. + * + * * commit: helper script to cvs commit + * + * Revision 1.89 2011-07-24 05:59:25 fwarmerdam + * minimize use of CPLError in favor of SAHooks.Error() + * + * Revision 1.88 2011-05-13 17:35:17 fwarmerdam + * added DBFReorderFields() and DBFAlterFields() functions (from Even) + * + * Revision 1.87 2011-05-07 22:41:02 fwarmerdam + * ensure pending record is flushed when adding a native field (GDAL #4073) + * + * Revision 1.86 2011-04-17 15:15:29 fwarmerdam + * Removed unused variable. + * + * Revision 1.85 2010-12-06 16:09:34 fwarmerdam + * fix buffer read overrun fetching code page (bug 2276) + * + * Revision 1.84 2009-10-29 19:59:48 fwarmerdam + * avoid crash on truncated header (gdal #3093) + * + * Revision 1.83 2008/11/12 14:28:15 fwarmerdam + * DBFCreateField() now works on files with records + * + * Revision 1.82 2008/11/11 17:47:09 fwarmerdam + * added DBFDeleteField() function + * + * Revision 1.81 2008/01/03 17:48:13 bram + * in DBFCreate, use default code page LDID/87 (= 0x57, ANSI) + * instead of LDID/3. This seems to be the same as what ESRI + * would be doing by default. + * + * Revision 1.80 2007/12/30 14:36:39 fwarmerdam + * avoid syntax issue with last comment. + * + * Revision 1.79 2007/12/30 14:35:48 fwarmerdam + * Avoid char* / unsigned char* warnings. + * + * Revision 1.78 2007/12/18 18:28:07 bram + * - create hook for client specific atof (bugzilla ticket 1615) + * - check for NULL handle before closing cpCPG file, and close after reading. + * + * Revision 1.77 2007/12/15 20:25:21 bram + * dbfopen.c now reads the Code Page information from the DBF file, and exports + * this information as a string through the DBFGetCodePage function. This is + * either the number from the LDID header field ("LDID/") or as the + * content of an accompanying .CPG file. When creating a DBF file, the code can + * be set using DBFCreateEx. + * + * Revision 1.76 2007/12/12 22:21:32 bram + * DBFClose: check for NULL psDBF handle before trying to close it. + * + * Revision 1.75 2007/12/06 13:58:19 fwarmerdam + * make sure file offset calculations are done in as SAOffset + * + * Revision 1.74 2007/12/06 07:00:25 fwarmerdam + * dbfopen now using SAHooks for fileio + * + * Revision 1.73 2007/09/03 19:48:11 fwarmerdam + * move DBFReadAttribute() static dDoubleField into dbfinfo + * + * Revision 1.72 2007/09/03 19:34:06 fwarmerdam + * Avoid use of static tuple buffer in DBFReadTuple() + * + * Revision 1.71 2006/06/22 14:37:18 fwarmerdam + * avoid memory leak if dbfopen fread fails + * + * Revision 1.70 2006/06/17 17:47:05 fwarmerdam + * use calloc() for dbfinfo in DBFCreate + * + * Revision 1.69 2006/06/17 15:34:32 fwarmerdam + * disallow creating fields wider than 255 + * + * Revision 1.68 2006/06/17 15:12:40 fwarmerdam + * Fixed C++ style comments. + * + * Revision 1.67 2006/06/17 00:24:53 fwarmerdam + * Don't treat non-zero decimals values as high order byte for length + * for strings. It causes serious corruption for some files. + * http://bugzilla.remotesensing.org/show_bug.cgi?id=1202 + * + * Revision 1.66 2006/03/29 18:26:20 fwarmerdam + * fixed bug with size of pachfieldtype in dbfcloneempty + * + * Revision 1.65 2006/02/15 01:14:30 fwarmerdam + * added DBFAddNativeFieldType + * + * Revision 1.64 2006/02/09 00:29:04 fwarmerdam + * Changed to put spaces into string fields that are NULL as + * per http://bugzilla.maptools.org/show_bug.cgi?id=316. + * + * Revision 1.63 2006/01/25 15:35:43 fwarmerdam + * check success on DBFFlushRecord + * + * Revision 1.62 2006/01/10 16:28:03 fwarmerdam + * Fixed typo in CPLError. + * + * Revision 1.61 2006/01/10 16:26:29 fwarmerdam + * Push loading record buffer into DBFLoadRecord. + * Implement CPL error reporting if USE_CPL defined. + * + * Revision 1.60 2006/01/05 01:27:27 fwarmerdam + * added dbf deletion mark/fetch + * + * Revision 1.59 2005/03/14 15:20:28 fwarmerdam + * Fixed last change. + * + * Revision 1.58 2005/03/14 15:18:54 fwarmerdam + * Treat very wide fields with no decimals as double. This is + * more than 32bit integer fields. + * + * Revision 1.57 2005/02/10 20:16:54 fwarmerdam + * Make the pszStringField buffer for DBFReadAttribute() static char [256] + * as per bug 306. + * + * Revision 1.56 2005/02/10 20:07:56 fwarmerdam + * Fixed bug 305 in DBFCloneEmpty() - header length problem. + * + * Revision 1.55 2004/09/26 20:23:46 fwarmerdam + * avoid warnings with rcsid and signed/unsigned stuff + * + * Revision 1.54 2004/09/15 16:26:10 fwarmerdam + * Treat all blank numeric fields as null too. + */ + +#include "shapefil.h" + +#include +#include +#include +#include + +#ifdef USE_CPL +#include "cpl_string.h" +#else + +#if defined(_MSC_VER) +# if _MSC_VER < 1900 +# define snprintf _snprintf +# endif +#elif defined(WIN32) || defined(_WIN32) +# ifndef snprintf +# define snprintf _snprintf +# endif +#endif + +#define CPLsprintf sprintf +#define CPLsnprintf snprintf +#endif + +SHP_CVSID("$Id: dbfopen.c,v 1.92 2016-12-05 18:44:08 erouault Exp $") + +#ifndef FALSE +# define FALSE 0 +# define TRUE 1 +#endif + +/* File header size */ +#define XBASE_FILEHDR_SZ 32 + +#define HEADER_RECORD_TERMINATOR 0x0D + +/* See http://www.manmrk.net/tutorials/database/xbase/dbf.html */ +#define END_OF_FILE_CHARACTER 0x1A + +#ifdef USE_CPL +CPL_INLINE static void CPL_IGNORE_RET_VAL_INT(CPL_UNUSED int unused) {} +#else +#define CPL_IGNORE_RET_VAL_INT(x) x +#endif + +/************************************************************************/ +/* SfRealloc() */ +/* */ +/* A realloc cover function that will access a NULL pointer as */ +/* a valid input. */ +/************************************************************************/ + +static void * SfRealloc( void * pMem, int nNewSize ) + +{ + if( pMem == NULL ) + return( (void *) malloc(nNewSize) ); + else + return( (void *) realloc(pMem,nNewSize) ); +} + +/************************************************************************/ +/* DBFWriteHeader() */ +/* */ +/* This is called to write out the file header, and field */ +/* descriptions before writing any actual data records. This */ +/* also computes all the DBFDataSet field offset/size/decimals */ +/* and so forth values. */ +/************************************************************************/ + +static void DBFWriteHeader(DBFHandle psDBF) + +{ + unsigned char abyHeader[XBASE_FILEHDR_SZ] = { 0 }; + + if( !psDBF->bNoHeader ) + return; + + psDBF->bNoHeader = FALSE; + +/* -------------------------------------------------------------------- */ +/* Initialize the file header information. */ +/* -------------------------------------------------------------------- */ + abyHeader[0] = 0x03; /* memo field? - just copying */ + + /* write out update date */ + abyHeader[1] = (unsigned char) psDBF->nUpdateYearSince1900; + abyHeader[2] = (unsigned char) psDBF->nUpdateMonth; + abyHeader[3] = (unsigned char) psDBF->nUpdateDay; + + /* record count preset at zero */ + + abyHeader[8] = (unsigned char) (psDBF->nHeaderLength % 256); + abyHeader[9] = (unsigned char) (psDBF->nHeaderLength / 256); + + abyHeader[10] = (unsigned char) (psDBF->nRecordLength % 256); + abyHeader[11] = (unsigned char) (psDBF->nRecordLength / 256); + + abyHeader[29] = (unsigned char) (psDBF->iLanguageDriver); + +/* -------------------------------------------------------------------- */ +/* Write the initial 32 byte file header, and all the field */ +/* descriptions. */ +/* -------------------------------------------------------------------- */ + psDBF->sHooks.FSeek( psDBF->fp, 0, 0 ); + psDBF->sHooks.FWrite( abyHeader, XBASE_FILEHDR_SZ, 1, psDBF->fp ); + psDBF->sHooks.FWrite( psDBF->pszHeader, XBASE_FLDHDR_SZ, psDBF->nFields, + psDBF->fp ); + +/* -------------------------------------------------------------------- */ +/* Write out the newline character if there is room for it. */ +/* -------------------------------------------------------------------- */ + if( psDBF->nHeaderLength > XBASE_FLDHDR_SZ*psDBF->nFields + + XBASE_FLDHDR_SZ ) + { + char cNewline; + + cNewline = HEADER_RECORD_TERMINATOR; + psDBF->sHooks.FWrite( &cNewline, 1, 1, psDBF->fp ); + } + +/* -------------------------------------------------------------------- */ +/* If the file is new, add a EOF character. */ +/* -------------------------------------------------------------------- */ + if( psDBF->nRecords == 0 && psDBF->bWriteEndOfFileChar ) + { + char ch = END_OF_FILE_CHARACTER; + + psDBF->sHooks.FWrite( &ch, 1, 1, psDBF->fp ); + } +} + +/************************************************************************/ +/* DBFFlushRecord() */ +/* */ +/* Write out the current record if there is one. */ +/************************************************************************/ + +static int DBFFlushRecord( DBFHandle psDBF ) + +{ + SAOffset nRecordOffset; + + if( psDBF->bCurrentRecordModified && psDBF->nCurrentRecord > -1 ) + { + psDBF->bCurrentRecordModified = FALSE; + + nRecordOffset = + psDBF->nRecordLength * (SAOffset) psDBF->nCurrentRecord + + psDBF->nHeaderLength; + + if( psDBF->sHooks.FSeek( psDBF->fp, nRecordOffset, 0 ) != 0 + || psDBF->sHooks.FWrite( psDBF->pszCurrentRecord, + psDBF->nRecordLength, + 1, psDBF->fp ) != 1 ) + { + char szMessage[128]; + snprintf( szMessage, sizeof(szMessage), "Failure writing DBF record %d.", + psDBF->nCurrentRecord ); + psDBF->sHooks.Error( szMessage ); + return FALSE; + } + + if( psDBF->nCurrentRecord == psDBF->nRecords - 1 ) + { + if( psDBF->bWriteEndOfFileChar ) + { + char ch = END_OF_FILE_CHARACTER; + psDBF->sHooks.FWrite( &ch, 1, 1, psDBF->fp ); + } + } + } + + return TRUE; +} + +/************************************************************************/ +/* DBFLoadRecord() */ +/************************************************************************/ + +static int DBFLoadRecord( DBFHandle psDBF, int iRecord ) + +{ + if( psDBF->nCurrentRecord != iRecord ) + { + SAOffset nRecordOffset; + + if( !DBFFlushRecord( psDBF ) ) + return FALSE; + + nRecordOffset = + psDBF->nRecordLength * (SAOffset) iRecord + psDBF->nHeaderLength; + + if( psDBF->sHooks.FSeek( psDBF->fp, nRecordOffset, SEEK_SET ) != 0 ) + { + char szMessage[128]; + snprintf( szMessage, sizeof(szMessage), "fseek(%ld) failed on DBF file.", + (long) nRecordOffset ); + psDBF->sHooks.Error( szMessage ); + return FALSE; + } + + if( psDBF->sHooks.FRead( psDBF->pszCurrentRecord, + psDBF->nRecordLength, 1, psDBF->fp ) != 1 ) + { + char szMessage[128]; + snprintf( szMessage, sizeof(szMessage), "fread(%d) failed on DBF file.", + psDBF->nRecordLength ); + psDBF->sHooks.Error( szMessage ); + return FALSE; + } + + psDBF->nCurrentRecord = iRecord; + } + + return TRUE; +} + +/************************************************************************/ +/* DBFUpdateHeader() */ +/************************************************************************/ + +void SHPAPI_CALL +DBFUpdateHeader( DBFHandle psDBF ) + +{ + unsigned char abyFileHeader[XBASE_FILEHDR_SZ]; + + if( psDBF->bNoHeader ) + DBFWriteHeader( psDBF ); + + if( !DBFFlushRecord( psDBF ) ) + return; + + psDBF->sHooks.FSeek( psDBF->fp, 0, 0 ); + psDBF->sHooks.FRead( abyFileHeader, sizeof(abyFileHeader), 1, psDBF->fp ); + + abyFileHeader[1] = (unsigned char) psDBF->nUpdateYearSince1900; + abyFileHeader[2] = (unsigned char) psDBF->nUpdateMonth; + abyFileHeader[3] = (unsigned char) psDBF->nUpdateDay; + abyFileHeader[4] = (unsigned char) (psDBF->nRecords % 256); + abyFileHeader[5] = (unsigned char) ((psDBF->nRecords/256) % 256); + abyFileHeader[6] = (unsigned char) ((psDBF->nRecords/(256*256)) % 256); + abyFileHeader[7] = (unsigned char) ((psDBF->nRecords/(256*256*256)) % 256); + + psDBF->sHooks.FSeek( psDBF->fp, 0, 0 ); + psDBF->sHooks.FWrite( abyFileHeader, sizeof(abyFileHeader), 1, psDBF->fp ); + + psDBF->sHooks.FFlush( psDBF->fp ); +} + +/************************************************************************/ +/* DBFSetLastModifiedDate() */ +/************************************************************************/ + +void SHPAPI_CALL +DBFSetLastModifiedDate( DBFHandle psDBF, int nYYSince1900, int nMM, int nDD ) +{ + psDBF->nUpdateYearSince1900 = nYYSince1900; + psDBF->nUpdateMonth = nMM; + psDBF->nUpdateDay = nDD; +} + +/************************************************************************/ +/* DBFOpen() */ +/* */ +/* Open a .dbf file. */ +/************************************************************************/ + +DBFHandle SHPAPI_CALL +DBFOpen( const char * pszFilename, const char * pszAccess ) + +{ + SAHooks sHooks; + + SASetupDefaultHooks( &sHooks ); + + return DBFOpenLL( pszFilename, pszAccess, &sHooks ); +} + +/************************************************************************/ +/* DBFOpen() */ +/* */ +/* Open a .dbf file. */ +/************************************************************************/ + +DBFHandle SHPAPI_CALL +DBFOpenLL( const char * pszFilename, const char * pszAccess, SAHooks *psHooks ) + +{ + DBFHandle psDBF; + SAFile pfCPG; + unsigned char *pabyBuf; + int nFields, nHeadLen, iField, i; + char *pszBasename, *pszFullname; + int nBufSize = 500; + size_t nFullnameLen; + +/* -------------------------------------------------------------------- */ +/* We only allow the access strings "rb" and "r+". */ +/* -------------------------------------------------------------------- */ + if( strcmp(pszAccess,"r") != 0 && strcmp(pszAccess,"r+") != 0 + && strcmp(pszAccess,"rb") != 0 && strcmp(pszAccess,"rb+") != 0 + && strcmp(pszAccess,"r+b") != 0 ) + return( NULL ); + + if( strcmp(pszAccess,"r") == 0 ) + pszAccess = "rb"; + + if( strcmp(pszAccess,"r+") == 0 ) + pszAccess = "rb+"; + +/* -------------------------------------------------------------------- */ +/* Compute the base (layer) name. If there is any extension */ +/* on the passed in filename we will strip it off. */ +/* -------------------------------------------------------------------- */ + pszBasename = (char *) malloc(strlen(pszFilename)+5); + strcpy( pszBasename, pszFilename ); + for( i = (int)strlen(pszBasename)-1; + i > 0 && pszBasename[i] != '.' && pszBasename[i] != '/' + && pszBasename[i] != '\\'; + i-- ) {} + + if( pszBasename[i] == '.' ) + pszBasename[i] = '\0'; + + nFullnameLen = strlen(pszBasename) + 5; + pszFullname = (char *) malloc(nFullnameLen); + snprintf( pszFullname, nFullnameLen, "%s.dbf", pszBasename ); + + psDBF = (DBFHandle) calloc( 1, sizeof(DBFInfo) ); + psDBF->fp = psHooks->FOpen( pszFullname, pszAccess ); + memcpy( &(psDBF->sHooks), psHooks, sizeof(SAHooks) ); + + if( psDBF->fp == NULL ) + { + snprintf( pszFullname, nFullnameLen, "%s.DBF", pszBasename ); + psDBF->fp = psDBF->sHooks.FOpen(pszFullname, pszAccess ); + } + + snprintf( pszFullname, nFullnameLen, "%s.cpg", pszBasename ); + pfCPG = psHooks->FOpen( pszFullname, "r" ); + if( pfCPG == NULL ) + { + snprintf( pszFullname, nFullnameLen, "%s.CPG", pszBasename ); + pfCPG = psHooks->FOpen( pszFullname, "r" ); + } + + free( pszBasename ); + free( pszFullname ); + + if( psDBF->fp == NULL ) + { + free( psDBF ); + if( pfCPG ) psHooks->FClose( pfCPG ); + return( NULL ); + } + + psDBF->bNoHeader = FALSE; + psDBF->nCurrentRecord = -1; + psDBF->bCurrentRecordModified = FALSE; + +/* -------------------------------------------------------------------- */ +/* Read Table Header info */ +/* -------------------------------------------------------------------- */ + pabyBuf = (unsigned char *) malloc(nBufSize); + if( psDBF->sHooks.FRead( pabyBuf, XBASE_FILEHDR_SZ, 1, psDBF->fp ) != 1 ) + { + psDBF->sHooks.FClose( psDBF->fp ); + if( pfCPG ) psDBF->sHooks.FClose( pfCPG ); + free( pabyBuf ); + free( psDBF ); + return NULL; + } + + DBFSetLastModifiedDate(psDBF, pabyBuf[1], pabyBuf[2], pabyBuf[3]); + + psDBF->nRecords = + pabyBuf[4] + pabyBuf[5]*256 + pabyBuf[6]*256*256 + (pabyBuf[7] & 0x7f) *256*256*256; + + psDBF->nHeaderLength = nHeadLen = pabyBuf[8] + pabyBuf[9]*256; + psDBF->nRecordLength = pabyBuf[10] + pabyBuf[11]*256; + psDBF->iLanguageDriver = pabyBuf[29]; + + if (psDBF->nRecordLength == 0 || nHeadLen < XBASE_FILEHDR_SZ) + { + psDBF->sHooks.FClose( psDBF->fp ); + if( pfCPG ) psDBF->sHooks.FClose( pfCPG ); + free( pabyBuf ); + free( psDBF ); + return NULL; + } + + psDBF->nFields = nFields = (nHeadLen - XBASE_FILEHDR_SZ) / XBASE_FLDHDR_SZ; + + psDBF->pszCurrentRecord = (char *) malloc(psDBF->nRecordLength); + +/* -------------------------------------------------------------------- */ +/* Figure out the code page from the LDID and CPG */ +/* -------------------------------------------------------------------- */ + + psDBF->pszCodePage = NULL; + if( pfCPG ) + { + size_t n; + memset( pabyBuf, 0, nBufSize); + psDBF->sHooks.FRead( pabyBuf, nBufSize - 1, 1, pfCPG ); + n = strcspn( (char *) pabyBuf, "\n\r" ); + if( n > 0 ) + { + pabyBuf[n] = '\0'; + psDBF->pszCodePage = (char *) malloc(n + 1); + memcpy( psDBF->pszCodePage, pabyBuf, n + 1 ); + } + psDBF->sHooks.FClose( pfCPG ); + } + if( psDBF->pszCodePage == NULL && pabyBuf[29] != 0 ) + { + snprintf( (char *) pabyBuf, nBufSize, "LDID/%d", psDBF->iLanguageDriver ); + psDBF->pszCodePage = (char *) malloc(strlen((char*)pabyBuf) + 1); + strcpy( psDBF->pszCodePage, (char *) pabyBuf ); + } + +/* -------------------------------------------------------------------- */ +/* Read in Field Definitions */ +/* -------------------------------------------------------------------- */ + + pabyBuf = (unsigned char *) SfRealloc(pabyBuf,nHeadLen); + psDBF->pszHeader = (char *) pabyBuf; + + psDBF->sHooks.FSeek( psDBF->fp, XBASE_FILEHDR_SZ, 0 ); + if( psDBF->sHooks.FRead( pabyBuf, nHeadLen-XBASE_FILEHDR_SZ, 1, + psDBF->fp ) != 1 ) + { + psDBF->sHooks.FClose( psDBF->fp ); + free( pabyBuf ); + free( psDBF->pszCurrentRecord ); + free( psDBF ); + return NULL; + } + + psDBF->panFieldOffset = (int *) malloc(sizeof(int) * nFields); + psDBF->panFieldSize = (int *) malloc(sizeof(int) * nFields); + psDBF->panFieldDecimals = (int *) malloc(sizeof(int) * nFields); + psDBF->pachFieldType = (char *) malloc(sizeof(char) * nFields); + + for( iField = 0; iField < nFields; iField++ ) + { + unsigned char *pabyFInfo; + + pabyFInfo = pabyBuf+iField*XBASE_FLDHDR_SZ; + + if( pabyFInfo[11] == 'N' || pabyFInfo[11] == 'F' ) + { + psDBF->panFieldSize[iField] = pabyFInfo[16]; + psDBF->panFieldDecimals[iField] = pabyFInfo[17]; + } + else + { + psDBF->panFieldSize[iField] = pabyFInfo[16]; + psDBF->panFieldDecimals[iField] = 0; + +/* +** The following seemed to be used sometimes to handle files with long +** string fields, but in other cases (such as bug 1202) the decimals field +** just seems to indicate some sort of preferred formatting, not very +** wide fields. So I have disabled this code. FrankW. + psDBF->panFieldSize[iField] = pabyFInfo[16] + pabyFInfo[17]*256; + psDBF->panFieldDecimals[iField] = 0; +*/ + } + + psDBF->pachFieldType[iField] = (char) pabyFInfo[11]; + if( iField == 0 ) + psDBF->panFieldOffset[iField] = 1; + else + psDBF->panFieldOffset[iField] = + psDBF->panFieldOffset[iField-1] + psDBF->panFieldSize[iField-1]; + } + + DBFSetWriteEndOfFileChar( psDBF, TRUE ); + + return( psDBF ); +} + +/************************************************************************/ +/* DBFClose() */ +/************************************************************************/ + +void SHPAPI_CALL +DBFClose(DBFHandle psDBF) +{ + if( psDBF == NULL ) + return; + +/* -------------------------------------------------------------------- */ +/* Write out header if not already written. */ +/* -------------------------------------------------------------------- */ + if( psDBF->bNoHeader ) + DBFWriteHeader( psDBF ); + + CPL_IGNORE_RET_VAL_INT(DBFFlushRecord( psDBF )); + +/* -------------------------------------------------------------------- */ +/* Update last access date, and number of records if we have */ +/* write access. */ +/* -------------------------------------------------------------------- */ + if( psDBF->bUpdated ) + DBFUpdateHeader( psDBF ); + +/* -------------------------------------------------------------------- */ +/* Close, and free resources. */ +/* -------------------------------------------------------------------- */ + psDBF->sHooks.FClose( psDBF->fp ); + + if( psDBF->panFieldOffset != NULL ) + { + free( psDBF->panFieldOffset ); + free( psDBF->panFieldSize ); + free( psDBF->panFieldDecimals ); + free( psDBF->pachFieldType ); + } + + if( psDBF->pszWorkField != NULL ) + free( psDBF->pszWorkField ); + + free( psDBF->pszHeader ); + free( psDBF->pszCurrentRecord ); + free( psDBF->pszCodePage ); + + free( psDBF ); +} + +/************************************************************************/ +/* DBFCreate() */ +/* */ +/* Create a new .dbf file with default code page LDID/87 (0x57) */ +/************************************************************************/ + +DBFHandle SHPAPI_CALL +DBFCreate( const char * pszFilename ) + +{ + return DBFCreateEx( pszFilename, "LDID/87" ); // 0x57 +} + +/************************************************************************/ +/* DBFCreateEx() */ +/* */ +/* Create a new .dbf file. */ +/************************************************************************/ + +DBFHandle SHPAPI_CALL +DBFCreateEx( const char * pszFilename, const char* pszCodePage ) + +{ + SAHooks sHooks; + + SASetupDefaultHooks( &sHooks ); + + return DBFCreateLL( pszFilename, pszCodePage , &sHooks ); +} + +/************************************************************************/ +/* DBFCreate() */ +/* */ +/* Create a new .dbf file. */ +/************************************************************************/ + +DBFHandle SHPAPI_CALL +DBFCreateLL( const char * pszFilename, const char * pszCodePage, SAHooks *psHooks ) + +{ + DBFHandle psDBF; + SAFile fp; + char *pszFullname, *pszBasename; + int i, ldid = -1; + char chZero = '\0'; + size_t nFullnameLen; + +/* -------------------------------------------------------------------- */ +/* Compute the base (layer) name. If there is any extension */ +/* on the passed in filename we will strip it off. */ +/* -------------------------------------------------------------------- */ + pszBasename = (char *) malloc(strlen(pszFilename)+5); + strcpy( pszBasename, pszFilename ); + for( i = (int)strlen(pszBasename)-1; + i > 0 && pszBasename[i] != '.' && pszBasename[i] != '/' + && pszBasename[i] != '\\'; + i-- ) {} + + if( pszBasename[i] == '.' ) + pszBasename[i] = '\0'; + + nFullnameLen = strlen(pszBasename) + 5; + pszFullname = (char *) malloc(nFullnameLen); + snprintf( pszFullname, nFullnameLen, "%s.dbf", pszBasename ); + +/* -------------------------------------------------------------------- */ +/* Create the file. */ +/* -------------------------------------------------------------------- */ + fp = psHooks->FOpen( pszFullname, "wb" ); + if( fp == NULL ) + { + free( pszBasename ); + free( pszFullname ); + return( NULL ); + } + + psHooks->FWrite( &chZero, 1, 1, fp ); + psHooks->FClose( fp ); + + fp = psHooks->FOpen( pszFullname, "rb+" ); + if( fp == NULL ) + { + free( pszBasename ); + free( pszFullname ); + return( NULL ); + } + + snprintf( pszFullname, nFullnameLen, "%s.cpg", pszBasename ); + if( pszCodePage != NULL ) + { + if( strncmp( pszCodePage, "LDID/", 5 ) == 0 ) + { + ldid = atoi( pszCodePage + 5 ); + if( ldid > 255 ) + ldid = -1; // don't use 0 to indicate out of range as LDID/0 is a valid one + } + if( ldid < 0 ) + { + SAFile fpCPG = psHooks->FOpen( pszFullname, "w" ); + psHooks->FWrite( (char*) pszCodePage, strlen(pszCodePage), 1, fpCPG ); + psHooks->FClose( fpCPG ); + } + } + if( pszCodePage == NULL || ldid >= 0 ) + { + psHooks->Remove( pszFullname ); + } + + free( pszBasename ); + free( pszFullname ); + +/* -------------------------------------------------------------------- */ +/* Create the info structure. */ +/* -------------------------------------------------------------------- */ + psDBF = (DBFHandle) calloc(1,sizeof(DBFInfo)); + + memcpy( &(psDBF->sHooks), psHooks, sizeof(SAHooks) ); + psDBF->fp = fp; + psDBF->nRecords = 0; + psDBF->nFields = 0; + psDBF->nRecordLength = 1; + psDBF->nHeaderLength = XBASE_FILEHDR_SZ + 1; /* + 1 for HEADER_RECORD_TERMINATOR */ + + psDBF->panFieldOffset = NULL; + psDBF->panFieldSize = NULL; + psDBF->panFieldDecimals = NULL; + psDBF->pachFieldType = NULL; + psDBF->pszHeader = NULL; + + psDBF->nCurrentRecord = -1; + psDBF->bCurrentRecordModified = FALSE; + psDBF->pszCurrentRecord = NULL; + + psDBF->bNoHeader = TRUE; + + psDBF->iLanguageDriver = ldid > 0 ? ldid : 0; + psDBF->pszCodePage = NULL; + if( pszCodePage ) + { + psDBF->pszCodePage = (char * ) malloc( strlen(pszCodePage) + 1 ); + strcpy( psDBF->pszCodePage, pszCodePage ); + } + DBFSetLastModifiedDate(psDBF, 95, 7, 26); /* dummy date */ + + DBFSetWriteEndOfFileChar(psDBF, TRUE); + + return( psDBF ); +} + +/************************************************************************/ +/* DBFAddField() */ +/* */ +/* Add a field to a newly created .dbf or to an existing one */ +/************************************************************************/ + +int SHPAPI_CALL +DBFAddField(DBFHandle psDBF, const char * pszFieldName, + DBFFieldType eType, int nWidth, int nDecimals ) + +{ + char chNativeType = 'C'; + + if( eType == FTLogical ) + chNativeType = 'L'; + else if( eType == FTString ) + chNativeType = 'C'; + else + chNativeType = 'N'; + + return DBFAddNativeFieldType( psDBF, pszFieldName, chNativeType, + nWidth, nDecimals ); +} + +/************************************************************************/ +/* DBFGetNullCharacter() */ +/************************************************************************/ + +static char DBFGetNullCharacter(char chType) +{ + switch (chType) + { + case 'N': + case 'F': + return '*'; + case 'D': + return '0'; + case 'L': + return '?'; + default: + return ' '; + } +} + +/************************************************************************/ +/* DBFAddField() */ +/* */ +/* Add a field to a newly created .dbf file before any records */ +/* are written. */ +/************************************************************************/ + +int SHPAPI_CALL +DBFAddNativeFieldType(DBFHandle psDBF, const char * pszFieldName, + char chType, int nWidth, int nDecimals ) + +{ + char *pszFInfo; + int i; + int nOldRecordLength, nOldHeaderLength; + char *pszRecord; + char chFieldFill; + SAOffset nRecordOffset; + + /* make sure that everything is written in .dbf */ + if( !DBFFlushRecord( psDBF ) ) + return -1; + + if( psDBF->nHeaderLength + XBASE_FLDHDR_SZ > 65535 ) + { + char szMessage[128]; + snprintf( szMessage, sizeof(szMessage), + "Cannot add field %s. Header length limit reached " + "(max 65535 bytes, 2046 fields).", + pszFieldName ); + psDBF->sHooks.Error( szMessage ); + return -1; + } + +/* -------------------------------------------------------------------- */ +/* Do some checking to ensure we can add records to this file. */ +/* -------------------------------------------------------------------- */ + if( nWidth < 1 ) + return -1; + + if( nWidth > XBASE_FLD_MAX_WIDTH ) + nWidth = XBASE_FLD_MAX_WIDTH; + + if( psDBF->nRecordLength + nWidth > 65535 ) + { + char szMessage[128]; + snprintf( szMessage, sizeof(szMessage), + "Cannot add field %s. Record length limit reached " + "(max 65535 bytes).", + pszFieldName ); + psDBF->sHooks.Error( szMessage ); + return -1; + } + + nOldRecordLength = psDBF->nRecordLength; + nOldHeaderLength = psDBF->nHeaderLength; + +/* -------------------------------------------------------------------- */ +/* SfRealloc all the arrays larger to hold the additional field */ +/* information. */ +/* -------------------------------------------------------------------- */ + psDBF->nFields++; + + psDBF->panFieldOffset = (int *) + SfRealloc( psDBF->panFieldOffset, sizeof(int) * psDBF->nFields ); + + psDBF->panFieldSize = (int *) + SfRealloc( psDBF->panFieldSize, sizeof(int) * psDBF->nFields ); + + psDBF->panFieldDecimals = (int *) + SfRealloc( psDBF->panFieldDecimals, sizeof(int) * psDBF->nFields ); + + psDBF->pachFieldType = (char *) + SfRealloc( psDBF->pachFieldType, sizeof(char) * psDBF->nFields ); + +/* -------------------------------------------------------------------- */ +/* Assign the new field information fields. */ +/* -------------------------------------------------------------------- */ + psDBF->panFieldOffset[psDBF->nFields-1] = psDBF->nRecordLength; + psDBF->nRecordLength += nWidth; + psDBF->panFieldSize[psDBF->nFields-1] = nWidth; + psDBF->panFieldDecimals[psDBF->nFields-1] = nDecimals; + psDBF->pachFieldType[psDBF->nFields-1] = chType; + +/* -------------------------------------------------------------------- */ +/* Extend the required header information. */ +/* -------------------------------------------------------------------- */ + psDBF->nHeaderLength += XBASE_FLDHDR_SZ; + psDBF->bUpdated = FALSE; + + psDBF->pszHeader = (char *) SfRealloc(psDBF->pszHeader, + psDBF->nFields*XBASE_FLDHDR_SZ); + + pszFInfo = psDBF->pszHeader + XBASE_FLDHDR_SZ * (psDBF->nFields-1); + + for( i = 0; i < XBASE_FLDHDR_SZ; i++ ) + pszFInfo[i] = '\0'; + + strncpy( pszFInfo, pszFieldName, XBASE_FLDNAME_LEN_WRITE ); + + pszFInfo[11] = psDBF->pachFieldType[psDBF->nFields-1]; + + if( chType == 'C' ) + { + pszFInfo[16] = (unsigned char) (nWidth % 256); + pszFInfo[17] = (unsigned char) (nWidth / 256); + } + else + { + pszFInfo[16] = (unsigned char) nWidth; + pszFInfo[17] = (unsigned char) nDecimals; + } + +/* -------------------------------------------------------------------- */ +/* Make the current record buffer appropriately larger. */ +/* -------------------------------------------------------------------- */ + psDBF->pszCurrentRecord = (char *) SfRealloc(psDBF->pszCurrentRecord, + psDBF->nRecordLength); + + /* we're done if dealing with new .dbf */ + if( psDBF->bNoHeader ) + return( psDBF->nFields - 1 ); + +/* -------------------------------------------------------------------- */ +/* For existing .dbf file, shift records */ +/* -------------------------------------------------------------------- */ + + /* alloc record */ + pszRecord = (char *) malloc(sizeof(char) * psDBF->nRecordLength); + + chFieldFill = DBFGetNullCharacter(chType); + + for (i = psDBF->nRecords-1; i >= 0; --i) + { + nRecordOffset = nOldRecordLength * (SAOffset) i + nOldHeaderLength; + + /* load record */ + psDBF->sHooks.FSeek( psDBF->fp, nRecordOffset, 0 ); + psDBF->sHooks.FRead( pszRecord, nOldRecordLength, 1, psDBF->fp ); + + /* set new field's value to NULL */ + memset(pszRecord + nOldRecordLength, chFieldFill, nWidth); + + nRecordOffset = psDBF->nRecordLength * (SAOffset) i + psDBF->nHeaderLength; + + /* move record to the new place*/ + psDBF->sHooks.FSeek( psDBF->fp, nRecordOffset, 0 ); + psDBF->sHooks.FWrite( pszRecord, psDBF->nRecordLength, 1, psDBF->fp ); + } + + if( psDBF->bWriteEndOfFileChar ) + { + char ch = END_OF_FILE_CHARACTER; + + nRecordOffset = + psDBF->nRecordLength * (SAOffset) psDBF->nRecords + psDBF->nHeaderLength; + + psDBF->sHooks.FSeek( psDBF->fp, nRecordOffset, 0 ); + psDBF->sHooks.FWrite( &ch, 1, 1, psDBF->fp ); + } + + /* free record */ + free(pszRecord); + + /* force update of header with new header, record length and new field */ + psDBF->bNoHeader = TRUE; + DBFUpdateHeader( psDBF ); + + psDBF->nCurrentRecord = -1; + psDBF->bCurrentRecordModified = FALSE; + psDBF->bUpdated = TRUE; + + return( psDBF->nFields-1 ); +} + +/************************************************************************/ +/* DBFReadAttribute() */ +/* */ +/* Read one of the attribute fields of a record. */ +/************************************************************************/ + +static void *DBFReadAttribute(DBFHandle psDBF, int hEntity, int iField, + char chReqType ) + +{ + unsigned char *pabyRec; + void *pReturnField = NULL; + +/* -------------------------------------------------------------------- */ +/* Verify selection. */ +/* -------------------------------------------------------------------- */ + if( hEntity < 0 || hEntity >= psDBF->nRecords ) + return( NULL ); + + if( iField < 0 || iField >= psDBF->nFields ) + return( NULL ); + +/* -------------------------------------------------------------------- */ +/* Have we read the record? */ +/* -------------------------------------------------------------------- */ + if( !DBFLoadRecord( psDBF, hEntity ) ) + return NULL; + + pabyRec = (unsigned char *) psDBF->pszCurrentRecord; + +/* -------------------------------------------------------------------- */ +/* Ensure we have room to extract the target field. */ +/* -------------------------------------------------------------------- */ + if( psDBF->panFieldSize[iField] >= psDBF->nWorkFieldLength ) + { + psDBF->nWorkFieldLength = psDBF->panFieldSize[iField] + 100; + if( psDBF->pszWorkField == NULL ) + psDBF->pszWorkField = (char *) malloc(psDBF->nWorkFieldLength); + else + psDBF->pszWorkField = (char *) realloc(psDBF->pszWorkField, + psDBF->nWorkFieldLength); + } + +/* -------------------------------------------------------------------- */ +/* Extract the requested field. */ +/* -------------------------------------------------------------------- */ + memcpy( psDBF->pszWorkField, + ((const char *) pabyRec) + psDBF->panFieldOffset[iField], + psDBF->panFieldSize[iField] ); + psDBF->pszWorkField[psDBF->panFieldSize[iField]] = '\0'; + + pReturnField = psDBF->pszWorkField; + +/* -------------------------------------------------------------------- */ +/* Decode the field. */ +/* -------------------------------------------------------------------- */ + if( chReqType == 'I' ) + { + psDBF->fieldValue.nIntField = atoi(psDBF->pszWorkField); + + pReturnField = &(psDBF->fieldValue.nIntField); + } + else if( chReqType == 'N' ) + { + psDBF->fieldValue.dfDoubleField = psDBF->sHooks.Atof(psDBF->pszWorkField); + + pReturnField = &(psDBF->fieldValue.dfDoubleField); + } + +/* -------------------------------------------------------------------- */ +/* Should we trim white space off the string attribute value? */ +/* -------------------------------------------------------------------- */ +#ifdef TRIM_DBF_WHITESPACE + else + { + char *pchSrc, *pchDst; + + pchDst = pchSrc = psDBF->pszWorkField; + while( *pchSrc == ' ' ) + pchSrc++; + + while( *pchSrc != '\0' ) + *(pchDst++) = *(pchSrc++); + *pchDst = '\0'; + + while( pchDst != psDBF->pszWorkField && *(--pchDst) == ' ' ) + *pchDst = '\0'; + } +#endif + + return( pReturnField ); +} + +/************************************************************************/ +/* DBFReadIntAttribute() */ +/* */ +/* Read an integer attribute. */ +/************************************************************************/ + +int SHPAPI_CALL +DBFReadIntegerAttribute( DBFHandle psDBF, int iRecord, int iField ) + +{ + int *pnValue; + + pnValue = (int *) DBFReadAttribute( psDBF, iRecord, iField, 'I' ); + + if( pnValue == NULL ) + return 0; + else + return( *pnValue ); +} + +/************************************************************************/ +/* DBFReadDoubleAttribute() */ +/* */ +/* Read a double attribute. */ +/************************************************************************/ + +double SHPAPI_CALL +DBFReadDoubleAttribute( DBFHandle psDBF, int iRecord, int iField ) + +{ + double *pdValue; + + pdValue = (double *) DBFReadAttribute( psDBF, iRecord, iField, 'N' ); + + if( pdValue == NULL ) + return 0.0; + else + return( *pdValue ); +} + +/************************************************************************/ +/* DBFReadStringAttribute() */ +/* */ +/* Read a string attribute. */ +/************************************************************************/ + +const char SHPAPI_CALL1(*) +DBFReadStringAttribute( DBFHandle psDBF, int iRecord, int iField ) + +{ + return( (const char *) DBFReadAttribute( psDBF, iRecord, iField, 'C' ) ); +} + +/************************************************************************/ +/* DBFReadLogicalAttribute() */ +/* */ +/* Read a logical attribute. */ +/************************************************************************/ + +const char SHPAPI_CALL1(*) +DBFReadLogicalAttribute( DBFHandle psDBF, int iRecord, int iField ) + +{ + return( (const char *) DBFReadAttribute( psDBF, iRecord, iField, 'L' ) ); +} + + +/************************************************************************/ +/* DBFIsValueNULL() */ +/* */ +/* Return TRUE if the passed string is NULL. */ +/************************************************************************/ + +static int DBFIsValueNULL( char chType, const char* pszValue ) +{ + int i; + + if( pszValue == NULL ) + return TRUE; + + switch(chType) + { + case 'N': + case 'F': + /* + ** We accept all asterisks or all blanks as NULL + ** though according to the spec I think it should be all + ** asterisks. + */ + if( pszValue[0] == '*' ) + return TRUE; + + for( i = 0; pszValue[i] != '\0'; i++ ) + { + if( pszValue[i] != ' ' ) + return FALSE; + } + return TRUE; + + case 'D': + /* NULL date fields have value "00000000" */ + return strncmp(pszValue,"00000000",8) == 0; + + case 'L': + /* NULL boolean fields have value "?" */ + return pszValue[0] == '?'; + + default: + /* empty string fields are considered NULL */ + return strlen(pszValue) == 0; + } +} + +/************************************************************************/ +/* DBFIsAttributeNULL() */ +/* */ +/* Return TRUE if value for field is NULL. */ +/* */ +/* Contributed by Jim Matthews. */ +/************************************************************************/ + +int SHPAPI_CALL +DBFIsAttributeNULL( DBFHandle psDBF, int iRecord, int iField ) + +{ + const char *pszValue; + + pszValue = DBFReadStringAttribute( psDBF, iRecord, iField ); + + if( pszValue == NULL ) + return TRUE; + + return DBFIsValueNULL( psDBF->pachFieldType[iField], pszValue ); +} + +/************************************************************************/ +/* DBFGetFieldCount() */ +/* */ +/* Return the number of fields in this table. */ +/************************************************************************/ + +int SHPAPI_CALL +DBFGetFieldCount( DBFHandle psDBF ) + +{ + return( psDBF->nFields ); +} + +/************************************************************************/ +/* DBFGetRecordCount() */ +/* */ +/* Return the number of records in this table. */ +/************************************************************************/ + +int SHPAPI_CALL +DBFGetRecordCount( DBFHandle psDBF ) + +{ + return( psDBF->nRecords ); +} + +/************************************************************************/ +/* DBFGetFieldInfo() */ +/* */ +/* Return any requested information about the field. */ +/* pszFieldName must be at least XBASE_FLDNAME_LEN_READ+1 (=12) */ +/* bytes long. */ +/************************************************************************/ + +DBFFieldType SHPAPI_CALL +DBFGetFieldInfo( DBFHandle psDBF, int iField, char * pszFieldName, + int * pnWidth, int * pnDecimals ) + +{ + if( iField < 0 || iField >= psDBF->nFields ) + return( FTInvalid ); + + if( pnWidth != NULL ) + *pnWidth = psDBF->panFieldSize[iField]; + + if( pnDecimals != NULL ) + *pnDecimals = psDBF->panFieldDecimals[iField]; + + if( pszFieldName != NULL ) + { + int i; + + strncpy( pszFieldName, (char *) psDBF->pszHeader+iField*XBASE_FLDHDR_SZ, + XBASE_FLDNAME_LEN_READ ); + pszFieldName[XBASE_FLDNAME_LEN_READ] = '\0'; + for( i = XBASE_FLDNAME_LEN_READ - 1; i > 0 && pszFieldName[i] == ' '; i-- ) + pszFieldName[i] = '\0'; + } + + if ( psDBF->pachFieldType[iField] == 'L' ) + return( FTLogical); + + else if( psDBF->pachFieldType[iField] == 'N' + || psDBF->pachFieldType[iField] == 'F' ) + { + if( psDBF->panFieldDecimals[iField] > 0 + || psDBF->panFieldSize[iField] >= 10 ) + return( FTDouble ); + else + return( FTInteger ); + } + else + { + return( FTString ); + } +} + +/************************************************************************/ +/* DBFWriteAttribute() */ +/* */ +/* Write an attribute record to the file. */ +/************************************************************************/ + +static int DBFWriteAttribute(DBFHandle psDBF, int hEntity, int iField, + void * pValue ) + +{ + int i, j, nRetResult = TRUE; + unsigned char *pabyRec; + char szSField[XBASE_FLD_MAX_WIDTH+1], szFormat[20]; + +/* -------------------------------------------------------------------- */ +/* Is this a valid record? */ +/* -------------------------------------------------------------------- */ + if( hEntity < 0 || hEntity > psDBF->nRecords ) + return( FALSE ); + + if( psDBF->bNoHeader ) + DBFWriteHeader(psDBF); + +/* -------------------------------------------------------------------- */ +/* Is this a brand new record? */ +/* -------------------------------------------------------------------- */ + if( hEntity == psDBF->nRecords ) + { + if( !DBFFlushRecord( psDBF ) ) + return FALSE; + + psDBF->nRecords++; + for( i = 0; i < psDBF->nRecordLength; i++ ) + psDBF->pszCurrentRecord[i] = ' '; + + psDBF->nCurrentRecord = hEntity; + } + +/* -------------------------------------------------------------------- */ +/* Is this an existing record, but different than the last one */ +/* we accessed? */ +/* -------------------------------------------------------------------- */ + if( !DBFLoadRecord( psDBF, hEntity ) ) + return FALSE; + + pabyRec = (unsigned char *) psDBF->pszCurrentRecord; + + psDBF->bCurrentRecordModified = TRUE; + psDBF->bUpdated = TRUE; + +/* -------------------------------------------------------------------- */ +/* Translate NULL value to valid DBF file representation. */ +/* */ +/* Contributed by Jim Matthews. */ +/* -------------------------------------------------------------------- */ + if( pValue == NULL ) + { + memset( (char *) (pabyRec+psDBF->panFieldOffset[iField]), + DBFGetNullCharacter(psDBF->pachFieldType[iField]), + psDBF->panFieldSize[iField] ); + return TRUE; + } + +/* -------------------------------------------------------------------- */ +/* Assign all the record fields. */ +/* -------------------------------------------------------------------- */ + switch( psDBF->pachFieldType[iField] ) + { + case 'D': + case 'N': + case 'F': + { + int nWidth = psDBF->panFieldSize[iField]; + + if( (int) sizeof(szSField)-2 < nWidth ) + nWidth = sizeof(szSField)-2; + + snprintf( szFormat, sizeof(szFormat), "%%%d.%df", + nWidth, psDBF->panFieldDecimals[iField] ); + CPLsnprintf(szSField, sizeof(szSField), szFormat, *((double *) pValue) ); + if( (int) strlen(szSField) > psDBF->panFieldSize[iField] ) + { + szSField[psDBF->panFieldSize[iField]] = '\0'; + nRetResult = FALSE; + } + strncpy((char *) (pabyRec+psDBF->panFieldOffset[iField]), + szSField, strlen(szSField) ); + break; + } + + case 'L': + if (psDBF->panFieldSize[iField] >= 1 && + (*(char*)pValue == 'F' || *(char*)pValue == 'T')) + *(pabyRec+psDBF->panFieldOffset[iField]) = *(char*)pValue; + break; + + default: + if( (int) strlen((char *) pValue) > psDBF->panFieldSize[iField] ) + { + j = psDBF->panFieldSize[iField]; + nRetResult = FALSE; + } + else + { + memset( pabyRec+psDBF->panFieldOffset[iField], ' ', + psDBF->panFieldSize[iField] ); + j = (int)strlen((char *) pValue); + } + + strncpy((char *) (pabyRec+psDBF->panFieldOffset[iField]), + (char *) pValue, j ); + break; + } + + return( nRetResult ); +} + +/************************************************************************/ +/* DBFWriteAttributeDirectly() */ +/* */ +/* Write an attribute record to the file, but without any */ +/* reformatting based on type. The provided buffer is written */ +/* as is to the field position in the record. */ +/************************************************************************/ + +int SHPAPI_CALL +DBFWriteAttributeDirectly(DBFHandle psDBF, int hEntity, int iField, + void * pValue ) + +{ + int i, j; + unsigned char *pabyRec; + +/* -------------------------------------------------------------------- */ +/* Is this a valid record? */ +/* -------------------------------------------------------------------- */ + if( hEntity < 0 || hEntity > psDBF->nRecords ) + return( FALSE ); + + if( psDBF->bNoHeader ) + DBFWriteHeader(psDBF); + +/* -------------------------------------------------------------------- */ +/* Is this a brand new record? */ +/* -------------------------------------------------------------------- */ + if( hEntity == psDBF->nRecords ) + { + if( !DBFFlushRecord( psDBF ) ) + return FALSE; + + psDBF->nRecords++; + for( i = 0; i < psDBF->nRecordLength; i++ ) + psDBF->pszCurrentRecord[i] = ' '; + + psDBF->nCurrentRecord = hEntity; + } + +/* -------------------------------------------------------------------- */ +/* Is this an existing record, but different than the last one */ +/* we accessed? */ +/* -------------------------------------------------------------------- */ + if( !DBFLoadRecord( psDBF, hEntity ) ) + return FALSE; + + pabyRec = (unsigned char *) psDBF->pszCurrentRecord; + +/* -------------------------------------------------------------------- */ +/* Assign all the record fields. */ +/* -------------------------------------------------------------------- */ + if( (int)strlen((char *) pValue) > psDBF->panFieldSize[iField] ) + j = psDBF->panFieldSize[iField]; + else + { + memset( pabyRec+psDBF->panFieldOffset[iField], ' ', + psDBF->panFieldSize[iField] ); + j = (int)strlen((char *) pValue); + } + + strncpy((char *) (pabyRec+psDBF->panFieldOffset[iField]), + (char *) pValue, j ); + + psDBF->bCurrentRecordModified = TRUE; + psDBF->bUpdated = TRUE; + + return( TRUE ); +} + +/************************************************************************/ +/* DBFWriteDoubleAttribute() */ +/* */ +/* Write a double attribute. */ +/************************************************************************/ + +int SHPAPI_CALL +DBFWriteDoubleAttribute( DBFHandle psDBF, int iRecord, int iField, + double dValue ) + +{ + return( DBFWriteAttribute( psDBF, iRecord, iField, (void *) &dValue ) ); +} + +/************************************************************************/ +/* DBFWriteIntegerAttribute() */ +/* */ +/* Write a integer attribute. */ +/************************************************************************/ + +int SHPAPI_CALL +DBFWriteIntegerAttribute( DBFHandle psDBF, int iRecord, int iField, + int nValue ) + +{ + double dValue = nValue; + + return( DBFWriteAttribute( psDBF, iRecord, iField, (void *) &dValue ) ); +} + +/************************************************************************/ +/* DBFWriteStringAttribute() */ +/* */ +/* Write a string attribute. */ +/************************************************************************/ + +int SHPAPI_CALL +DBFWriteStringAttribute( DBFHandle psDBF, int iRecord, int iField, + const char * pszValue ) + +{ + return( DBFWriteAttribute( psDBF, iRecord, iField, (void *) pszValue ) ); +} + +/************************************************************************/ +/* DBFWriteNULLAttribute() */ +/* */ +/* Write a string attribute. */ +/************************************************************************/ + +int SHPAPI_CALL +DBFWriteNULLAttribute( DBFHandle psDBF, int iRecord, int iField ) + +{ + return( DBFWriteAttribute( psDBF, iRecord, iField, NULL ) ); +} + +/************************************************************************/ +/* DBFWriteLogicalAttribute() */ +/* */ +/* Write a logical attribute. */ +/************************************************************************/ + +int SHPAPI_CALL +DBFWriteLogicalAttribute( DBFHandle psDBF, int iRecord, int iField, + const char lValue) + +{ + return( DBFWriteAttribute( psDBF, iRecord, iField, (void *) (&lValue) ) ); +} + +/************************************************************************/ +/* DBFWriteTuple() */ +/* */ +/* Write an attribute record to the file. */ +/************************************************************************/ + +int SHPAPI_CALL +DBFWriteTuple(DBFHandle psDBF, int hEntity, void * pRawTuple ) + +{ + int i; + unsigned char *pabyRec; + +/* -------------------------------------------------------------------- */ +/* Is this a valid record? */ +/* -------------------------------------------------------------------- */ + if( hEntity < 0 || hEntity > psDBF->nRecords ) + return( FALSE ); + + if( psDBF->bNoHeader ) + DBFWriteHeader(psDBF); + +/* -------------------------------------------------------------------- */ +/* Is this a brand new record? */ +/* -------------------------------------------------------------------- */ + if( hEntity == psDBF->nRecords ) + { + if( !DBFFlushRecord( psDBF ) ) + return FALSE; + + psDBF->nRecords++; + for( i = 0; i < psDBF->nRecordLength; i++ ) + psDBF->pszCurrentRecord[i] = ' '; + + psDBF->nCurrentRecord = hEntity; + } + +/* -------------------------------------------------------------------- */ +/* Is this an existing record, but different than the last one */ +/* we accessed? */ +/* -------------------------------------------------------------------- */ + if( !DBFLoadRecord( psDBF, hEntity ) ) + return FALSE; + + pabyRec = (unsigned char *) psDBF->pszCurrentRecord; + + memcpy ( pabyRec, pRawTuple, psDBF->nRecordLength ); + + psDBF->bCurrentRecordModified = TRUE; + psDBF->bUpdated = TRUE; + + return( TRUE ); +} + +/************************************************************************/ +/* DBFReadTuple() */ +/* */ +/* Read a complete record. Note that the result is only valid */ +/* till the next record read for any reason. */ +/************************************************************************/ + +const char SHPAPI_CALL1(*) +DBFReadTuple(DBFHandle psDBF, int hEntity ) + +{ + if( hEntity < 0 || hEntity >= psDBF->nRecords ) + return( NULL ); + + if( !DBFLoadRecord( psDBF, hEntity ) ) + return NULL; + + return (const char *) psDBF->pszCurrentRecord; +} + +/************************************************************************/ +/* DBFCloneEmpty() */ +/* */ +/* Read one of the attribute fields of a record. */ +/************************************************************************/ + +DBFHandle SHPAPI_CALL +DBFCloneEmpty(DBFHandle psDBF, const char * pszFilename ) +{ + DBFHandle newDBF; + + newDBF = DBFCreateEx ( pszFilename, psDBF->pszCodePage ); + if ( newDBF == NULL ) return ( NULL ); + + newDBF->nFields = psDBF->nFields; + newDBF->nRecordLength = psDBF->nRecordLength; + newDBF->nHeaderLength = psDBF->nHeaderLength; + + if( psDBF->pszHeader ) + { + newDBF->pszHeader = (char *) malloc ( XBASE_FLDHDR_SZ * psDBF->nFields ); + memcpy ( newDBF->pszHeader, psDBF->pszHeader, XBASE_FLDHDR_SZ * psDBF->nFields ); + } + + newDBF->panFieldOffset = (int *) malloc ( sizeof(int) * psDBF->nFields ); + memcpy ( newDBF->panFieldOffset, psDBF->panFieldOffset, sizeof(int) * psDBF->nFields ); + newDBF->panFieldSize = (int *) malloc ( sizeof(int) * psDBF->nFields ); + memcpy ( newDBF->panFieldSize, psDBF->panFieldSize, sizeof(int) * psDBF->nFields ); + newDBF->panFieldDecimals = (int *) malloc ( sizeof(int) * psDBF->nFields ); + memcpy ( newDBF->panFieldDecimals, psDBF->panFieldDecimals, sizeof(int) * psDBF->nFields ); + newDBF->pachFieldType = (char *) malloc ( sizeof(char) * psDBF->nFields ); + memcpy ( newDBF->pachFieldType, psDBF->pachFieldType, sizeof(char)*psDBF->nFields ); + + newDBF->bNoHeader = TRUE; + newDBF->bUpdated = TRUE; + newDBF->bWriteEndOfFileChar = psDBF->bWriteEndOfFileChar; + + DBFWriteHeader ( newDBF ); + DBFClose ( newDBF ); + + newDBF = DBFOpen ( pszFilename, "rb+" ); + newDBF->bWriteEndOfFileChar = psDBF->bWriteEndOfFileChar; + + return ( newDBF ); +} + +/************************************************************************/ +/* DBFGetNativeFieldType() */ +/* */ +/* Return the DBase field type for the specified field. */ +/* */ +/* Value can be one of: 'C' (String), 'D' (Date), 'F' (Float), */ +/* 'N' (Numeric, with or without decimal), */ +/* 'L' (Logical), */ +/* 'M' (Memo: 10 digits .DBT block ptr) */ +/************************************************************************/ + +char SHPAPI_CALL +DBFGetNativeFieldType( DBFHandle psDBF, int iField ) + +{ + if( iField >=0 && iField < psDBF->nFields ) + return psDBF->pachFieldType[iField]; + + return ' '; +} + +/************************************************************************/ +/* str_to_upper() */ +/************************************************************************/ + +static void str_to_upper (char *string) +{ + int len; + int i = -1; + + len = (int)strlen (string); + + while (++i < len) + if (isalpha(string[i]) && islower(string[i])) + string[i] = (char) toupper ((int)string[i]); +} + +/************************************************************************/ +/* DBFGetFieldIndex() */ +/* */ +/* Get the index number for a field in a .dbf file. */ +/* */ +/* Contributed by Jim Matthews. */ +/************************************************************************/ + +int SHPAPI_CALL +DBFGetFieldIndex(DBFHandle psDBF, const char *pszFieldName) + +{ + char name[XBASE_FLDNAME_LEN_READ+1], + name1[XBASE_FLDNAME_LEN_READ+1], + name2[XBASE_FLDNAME_LEN_READ+1]; + int i; + + strncpy(name1, pszFieldName,XBASE_FLDNAME_LEN_READ); + name1[XBASE_FLDNAME_LEN_READ] = '\0'; + str_to_upper(name1); + + for( i = 0; i < DBFGetFieldCount(psDBF); i++ ) + { + DBFGetFieldInfo( psDBF, i, name, NULL, NULL ); + strncpy(name2,name,XBASE_FLDNAME_LEN_READ); + name2[XBASE_FLDNAME_LEN_READ] = '\0'; + str_to_upper(name2); + + if(!strcmp(name1,name2)) + return(i); + } + return(-1); +} + +/************************************************************************/ +/* DBFIsRecordDeleted() */ +/* */ +/* Returns TRUE if the indicated record is deleted, otherwise */ +/* it returns FALSE. */ +/************************************************************************/ + +int SHPAPI_CALL DBFIsRecordDeleted( DBFHandle psDBF, int iShape ) + +{ +/* -------------------------------------------------------------------- */ +/* Verify selection. */ +/* -------------------------------------------------------------------- */ + if( iShape < 0 || iShape >= psDBF->nRecords ) + return TRUE; + +/* -------------------------------------------------------------------- */ +/* Have we read the record? */ +/* -------------------------------------------------------------------- */ + if( !DBFLoadRecord( psDBF, iShape ) ) + return FALSE; + +/* -------------------------------------------------------------------- */ +/* '*' means deleted. */ +/* -------------------------------------------------------------------- */ + return psDBF->pszCurrentRecord[0] == '*'; +} + +/************************************************************************/ +/* DBFMarkRecordDeleted() */ +/************************************************************************/ + +int SHPAPI_CALL DBFMarkRecordDeleted( DBFHandle psDBF, int iShape, + int bIsDeleted ) + +{ + char chNewFlag; + +/* -------------------------------------------------------------------- */ +/* Verify selection. */ +/* -------------------------------------------------------------------- */ + if( iShape < 0 || iShape >= psDBF->nRecords ) + return FALSE; + +/* -------------------------------------------------------------------- */ +/* Is this an existing record, but different than the last one */ +/* we accessed? */ +/* -------------------------------------------------------------------- */ + if( !DBFLoadRecord( psDBF, iShape ) ) + return FALSE; + +/* -------------------------------------------------------------------- */ +/* Assign value, marking record as dirty if it changes. */ +/* -------------------------------------------------------------------- */ + if( bIsDeleted ) + chNewFlag = '*'; + else + chNewFlag = ' '; + + if( psDBF->pszCurrentRecord[0] != chNewFlag ) + { + psDBF->bCurrentRecordModified = TRUE; + psDBF->bUpdated = TRUE; + psDBF->pszCurrentRecord[0] = chNewFlag; + } + + return TRUE; +} + +/************************************************************************/ +/* DBFGetCodePage */ +/************************************************************************/ + +const char SHPAPI_CALL1(*) +DBFGetCodePage(DBFHandle psDBF ) +{ + if( psDBF == NULL ) + return NULL; + return psDBF->pszCodePage; +} + +/************************************************************************/ +/* DBFDeleteField() */ +/* */ +/* Remove a field from a .dbf file */ +/************************************************************************/ + +int SHPAPI_CALL +DBFDeleteField(DBFHandle psDBF, int iField) +{ + int nOldRecordLength, nOldHeaderLength; + int nDeletedFieldOffset, nDeletedFieldSize; + SAOffset nRecordOffset; + char* pszRecord; + int i, iRecord; + + if (iField < 0 || iField >= psDBF->nFields) + return FALSE; + + /* make sure that everything is written in .dbf */ + if( !DBFFlushRecord( psDBF ) ) + return FALSE; + + /* get information about field to be deleted */ + nOldRecordLength = psDBF->nRecordLength; + nOldHeaderLength = psDBF->nHeaderLength; + nDeletedFieldOffset = psDBF->panFieldOffset[iField]; + nDeletedFieldSize = psDBF->panFieldSize[iField]; + + /* update fields info */ + for (i = iField + 1; i < psDBF->nFields; i++) + { + psDBF->panFieldOffset[i-1] = psDBF->panFieldOffset[i] - nDeletedFieldSize; + psDBF->panFieldSize[i-1] = psDBF->panFieldSize[i]; + psDBF->panFieldDecimals[i-1] = psDBF->panFieldDecimals[i]; + psDBF->pachFieldType[i-1] = psDBF->pachFieldType[i]; + } + + /* resize fields arrays */ + psDBF->nFields--; + + psDBF->panFieldOffset = (int *) + SfRealloc( psDBF->panFieldOffset, sizeof(int) * psDBF->nFields ); + + psDBF->panFieldSize = (int *) + SfRealloc( psDBF->panFieldSize, sizeof(int) * psDBF->nFields ); + + psDBF->panFieldDecimals = (int *) + SfRealloc( psDBF->panFieldDecimals, sizeof(int) * psDBF->nFields ); + + psDBF->pachFieldType = (char *) + SfRealloc( psDBF->pachFieldType, sizeof(char) * psDBF->nFields ); + + /* update header information */ + psDBF->nHeaderLength -= XBASE_FLDHDR_SZ; + psDBF->nRecordLength -= nDeletedFieldSize; + + /* overwrite field information in header */ + memmove(psDBF->pszHeader + iField*XBASE_FLDHDR_SZ, + psDBF->pszHeader + (iField+1)*XBASE_FLDHDR_SZ, + sizeof(char) * (psDBF->nFields - iField)*XBASE_FLDHDR_SZ); + + psDBF->pszHeader = (char *) SfRealloc(psDBF->pszHeader, + psDBF->nFields*XBASE_FLDHDR_SZ); + + /* update size of current record appropriately */ + psDBF->pszCurrentRecord = (char *) SfRealloc(psDBF->pszCurrentRecord, + psDBF->nRecordLength); + + /* we're done if we're dealing with not yet created .dbf */ + if ( psDBF->bNoHeader && psDBF->nRecords == 0 ) + return TRUE; + + /* force update of header with new header and record length */ + psDBF->bNoHeader = TRUE; + DBFUpdateHeader( psDBF ); + + /* alloc record */ + pszRecord = (char *) malloc(sizeof(char) * nOldRecordLength); + + /* shift records to their new positions */ + for (iRecord = 0; iRecord < psDBF->nRecords; iRecord++) + { + nRecordOffset = + nOldRecordLength * (SAOffset) iRecord + nOldHeaderLength; + + /* load record */ + psDBF->sHooks.FSeek( psDBF->fp, nRecordOffset, 0 ); + psDBF->sHooks.FRead( pszRecord, nOldRecordLength, 1, psDBF->fp ); + + nRecordOffset = + psDBF->nRecordLength * (SAOffset) iRecord + psDBF->nHeaderLength; + + /* move record in two steps */ + psDBF->sHooks.FSeek( psDBF->fp, nRecordOffset, 0 ); + psDBF->sHooks.FWrite( pszRecord, nDeletedFieldOffset, 1, psDBF->fp ); + psDBF->sHooks.FWrite( pszRecord + nDeletedFieldOffset + nDeletedFieldSize, + nOldRecordLength - nDeletedFieldOffset - nDeletedFieldSize, + 1, psDBF->fp ); + + } + + if( psDBF->bWriteEndOfFileChar ) + { + char ch = END_OF_FILE_CHARACTER; + psDBF->sHooks.FWrite( &ch, 1, 1, psDBF->fp ); + } + + /* TODO: truncate file */ + + /* free record */ + free(pszRecord); + + psDBF->nCurrentRecord = -1; + psDBF->bCurrentRecordModified = FALSE; + psDBF->bUpdated = TRUE; + + return TRUE; +} + +/************************************************************************/ +/* DBFReorderFields() */ +/* */ +/* Reorder the fields of a .dbf file */ +/* */ +/* panMap must be exactly psDBF->nFields long and be a permutation */ +/* of [0, psDBF->nFields-1]. This assumption will not be asserted in the*/ +/* code of DBFReorderFields. */ +/************************************************************************/ + +int SHPAPI_CALL +DBFReorderFields( DBFHandle psDBF, int* panMap ) +{ + SAOffset nRecordOffset; + int i, iRecord; + int *panFieldOffsetNew; + int *panFieldSizeNew; + int *panFieldDecimalsNew; + char *pachFieldTypeNew; + char *pszHeaderNew; + char *pszRecord; + char *pszRecordNew; + + if ( psDBF->nFields == 0 ) + return TRUE; + + /* make sure that everything is written in .dbf */ + if( !DBFFlushRecord( psDBF ) ) + return FALSE; + + /* a simple malloc() would be enough, but calloc() helps clang static analyzer */ + panFieldOffsetNew = (int *) calloc(sizeof(int), psDBF->nFields); + panFieldSizeNew = (int *) calloc(sizeof(int), psDBF->nFields); + panFieldDecimalsNew = (int *) calloc(sizeof(int), psDBF->nFields); + pachFieldTypeNew = (char *) calloc(sizeof(char), psDBF->nFields); + pszHeaderNew = (char*) malloc(sizeof(char) * XBASE_FLDHDR_SZ * + psDBF->nFields); + + /* shuffle fields definitions */ + for(i=0; i < psDBF->nFields; i++) + { + panFieldSizeNew[i] = psDBF->panFieldSize[panMap[i]]; + panFieldDecimalsNew[i] = psDBF->panFieldDecimals[panMap[i]]; + pachFieldTypeNew[i] = psDBF->pachFieldType[panMap[i]]; + memcpy(pszHeaderNew + i * XBASE_FLDHDR_SZ, + psDBF->pszHeader + panMap[i] * XBASE_FLDHDR_SZ, XBASE_FLDHDR_SZ); + } + panFieldOffsetNew[0] = 1; + for(i=1; i < psDBF->nFields; i++) + { + panFieldOffsetNew[i] = panFieldOffsetNew[i - 1] + panFieldSizeNew[i - 1]; + } + + free(psDBF->pszHeader); + psDBF->pszHeader = pszHeaderNew; + + /* we're done if we're dealing with not yet created .dbf */ + if ( !(psDBF->bNoHeader && psDBF->nRecords == 0) ) + { + /* force update of header with new header and record length */ + psDBF->bNoHeader = TRUE; + DBFUpdateHeader( psDBF ); + + /* alloc record */ + pszRecord = (char *) malloc(sizeof(char) * psDBF->nRecordLength); + pszRecordNew = (char *) malloc(sizeof(char) * psDBF->nRecordLength); + + /* shuffle fields in records */ + for (iRecord = 0; iRecord < psDBF->nRecords; iRecord++) + { + nRecordOffset = + psDBF->nRecordLength * (SAOffset) iRecord + psDBF->nHeaderLength; + + /* load record */ + psDBF->sHooks.FSeek( psDBF->fp, nRecordOffset, 0 ); + psDBF->sHooks.FRead( pszRecord, psDBF->nRecordLength, 1, psDBF->fp ); + + pszRecordNew[0] = pszRecord[0]; + + for(i=0; i < psDBF->nFields; i++) + { + memcpy(pszRecordNew + panFieldOffsetNew[i], + pszRecord + psDBF->panFieldOffset[panMap[i]], + psDBF->panFieldSize[panMap[i]]); + } + + /* write record */ + psDBF->sHooks.FSeek( psDBF->fp, nRecordOffset, 0 ); + psDBF->sHooks.FWrite( pszRecordNew, psDBF->nRecordLength, 1, psDBF->fp ); + } + + /* free record */ + free(pszRecord); + free(pszRecordNew); + } + + free(psDBF->panFieldOffset); + free(psDBF->panFieldSize); + free(psDBF->panFieldDecimals); + free(psDBF->pachFieldType); + + psDBF->panFieldOffset = panFieldOffsetNew; + psDBF->panFieldSize = panFieldSizeNew; + psDBF->panFieldDecimals =panFieldDecimalsNew; + psDBF->pachFieldType = pachFieldTypeNew; + + psDBF->nCurrentRecord = -1; + psDBF->bCurrentRecordModified = FALSE; + psDBF->bUpdated = TRUE; + + return TRUE; +} + + +/************************************************************************/ +/* DBFAlterFieldDefn() */ +/* */ +/* Alter a field definition in a .dbf file */ +/************************************************************************/ + +int SHPAPI_CALL +DBFAlterFieldDefn( DBFHandle psDBF, int iField, const char * pszFieldName, + char chType, int nWidth, int nDecimals ) +{ + int i; + int iRecord; + int nOffset; + int nOldWidth; + int nOldRecordLength; + SAOffset nRecordOffset; + char* pszFInfo; + char chOldType; + int bIsNULL; + char chFieldFill; + + if (iField < 0 || iField >= psDBF->nFields) + return FALSE; + + /* make sure that everything is written in .dbf */ + if( !DBFFlushRecord( psDBF ) ) + return FALSE; + + chFieldFill = DBFGetNullCharacter(chType); + + chOldType = psDBF->pachFieldType[iField]; + nOffset = psDBF->panFieldOffset[iField]; + nOldWidth = psDBF->panFieldSize[iField]; + nOldRecordLength = psDBF->nRecordLength; + +/* -------------------------------------------------------------------- */ +/* Do some checking to ensure we can add records to this file. */ +/* -------------------------------------------------------------------- */ + if( nWidth < 1 ) + return -1; + + if( nWidth > XBASE_FLD_MAX_WIDTH ) + nWidth = XBASE_FLD_MAX_WIDTH; + +/* -------------------------------------------------------------------- */ +/* Assign the new field information fields. */ +/* -------------------------------------------------------------------- */ + psDBF->panFieldSize[iField] = nWidth; + psDBF->panFieldDecimals[iField] = nDecimals; + psDBF->pachFieldType[iField] = chType; + +/* -------------------------------------------------------------------- */ +/* Update the header information. */ +/* -------------------------------------------------------------------- */ + pszFInfo = psDBF->pszHeader + XBASE_FLDHDR_SZ * iField; + + for( i = 0; i < XBASE_FLDHDR_SZ; i++ ) + pszFInfo[i] = '\0'; + + strncpy( pszFInfo, pszFieldName, XBASE_FLDNAME_LEN_WRITE ); + + pszFInfo[11] = psDBF->pachFieldType[iField]; + + if( chType == 'C' ) + { + pszFInfo[16] = (unsigned char) (nWidth % 256); + pszFInfo[17] = (unsigned char) (nWidth / 256); + } + else + { + pszFInfo[16] = (unsigned char) nWidth; + pszFInfo[17] = (unsigned char) nDecimals; + } + +/* -------------------------------------------------------------------- */ +/* Update offsets */ +/* -------------------------------------------------------------------- */ + if (nWidth != nOldWidth) + { + for (i = iField + 1; i < psDBF->nFields; i++) + psDBF->panFieldOffset[i] += nWidth - nOldWidth; + psDBF->nRecordLength += nWidth - nOldWidth; + + psDBF->pszCurrentRecord = (char *) SfRealloc(psDBF->pszCurrentRecord, + psDBF->nRecordLength); + } + + /* we're done if we're dealing with not yet created .dbf */ + if ( psDBF->bNoHeader && psDBF->nRecords == 0 ) + return TRUE; + + /* force update of header with new header and record length */ + psDBF->bNoHeader = TRUE; + DBFUpdateHeader( psDBF ); + + if (nWidth < nOldWidth || (nWidth == nOldWidth && chType != chOldType)) + { + char* pszRecord = (char *) malloc(sizeof(char) * nOldRecordLength); + char* pszOldField = (char *) malloc(sizeof(char) * (nOldWidth + 1)); + + /* cppcheck-suppress uninitdata */ + pszOldField[nOldWidth] = 0; + + /* move records to their new positions */ + for (iRecord = 0; iRecord < psDBF->nRecords; iRecord++) + { + nRecordOffset = + nOldRecordLength * (SAOffset) iRecord + psDBF->nHeaderLength; + + /* load record */ + psDBF->sHooks.FSeek( psDBF->fp, nRecordOffset, 0 ); + psDBF->sHooks.FRead( pszRecord, nOldRecordLength, 1, psDBF->fp ); + + memcpy(pszOldField, pszRecord + nOffset, nOldWidth); + bIsNULL = DBFIsValueNULL( chOldType, pszOldField ); + + if (nWidth != nOldWidth) + { + if ((chOldType == 'N' || chOldType == 'F') && pszOldField[0] == ' ') + { + /* Strip leading spaces when truncating a numeric field */ + memmove( pszRecord + nOffset, + pszRecord + nOffset + nOldWidth - nWidth, + nWidth ); + } + if (nOffset + nOldWidth < nOldRecordLength) + { + memmove( pszRecord + nOffset + nWidth, + pszRecord + nOffset + nOldWidth, + nOldRecordLength - (nOffset + nOldWidth)); + } + } + + /* Convert null value to the appropriate value of the new type */ + if (bIsNULL) + { + memset( pszRecord + nOffset, chFieldFill, nWidth); + } + + nRecordOffset = + psDBF->nRecordLength * (SAOffset) iRecord + psDBF->nHeaderLength; + + /* write record */ + psDBF->sHooks.FSeek( psDBF->fp, nRecordOffset, 0 ); + psDBF->sHooks.FWrite( pszRecord, psDBF->nRecordLength, 1, psDBF->fp ); + } + + if( psDBF->bWriteEndOfFileChar ) + { + char ch = END_OF_FILE_CHARACTER; + + nRecordOffset = + psDBF->nRecordLength * (SAOffset) psDBF->nRecords + psDBF->nHeaderLength; + + psDBF->sHooks.FSeek( psDBF->fp, nRecordOffset, 0 ); + psDBF->sHooks.FWrite( &ch, 1, 1, psDBF->fp ); + } + /* TODO: truncate file */ + + free(pszRecord); + free(pszOldField); + } + else if (nWidth > nOldWidth) + { + char* pszRecord = (char *) malloc(sizeof(char) * psDBF->nRecordLength); + char* pszOldField = (char *) malloc(sizeof(char) * (nOldWidth + 1)); + + /* cppcheck-suppress uninitdata */ + pszOldField[nOldWidth] = 0; + + /* move records to their new positions */ + for (iRecord = psDBF->nRecords - 1; iRecord >= 0; iRecord--) + { + nRecordOffset = + nOldRecordLength * (SAOffset) iRecord + psDBF->nHeaderLength; + + /* load record */ + psDBF->sHooks.FSeek( psDBF->fp, nRecordOffset, 0 ); + psDBF->sHooks.FRead( pszRecord, nOldRecordLength, 1, psDBF->fp ); + + memcpy(pszOldField, pszRecord + nOffset, nOldWidth); + bIsNULL = DBFIsValueNULL( chOldType, pszOldField ); + + if (nOffset + nOldWidth < nOldRecordLength) + { + memmove( pszRecord + nOffset + nWidth, + pszRecord + nOffset + nOldWidth, + nOldRecordLength - (nOffset + nOldWidth)); + } + + /* Convert null value to the appropriate value of the new type */ + if (bIsNULL) + { + memset( pszRecord + nOffset, chFieldFill, nWidth); + } + else + { + if ((chOldType == 'N' || chOldType == 'F')) + { + /* Add leading spaces when expanding a numeric field */ + memmove( pszRecord + nOffset + nWidth - nOldWidth, + pszRecord + nOffset, nOldWidth ); + memset( pszRecord + nOffset, ' ', nWidth - nOldWidth ); + } + else + { + /* Add trailing spaces */ + memset(pszRecord + nOffset + nOldWidth, ' ', nWidth - nOldWidth); + } + } + + nRecordOffset = + psDBF->nRecordLength * (SAOffset) iRecord + psDBF->nHeaderLength; + + /* write record */ + psDBF->sHooks.FSeek( psDBF->fp, nRecordOffset, 0 ); + psDBF->sHooks.FWrite( pszRecord, psDBF->nRecordLength, 1, psDBF->fp ); + } + + if( psDBF->bWriteEndOfFileChar ) + { + char ch = END_OF_FILE_CHARACTER; + + nRecordOffset = + psDBF->nRecordLength * (SAOffset) psDBF->nRecords + psDBF->nHeaderLength; + + psDBF->sHooks.FSeek( psDBF->fp, nRecordOffset, 0 ); + psDBF->sHooks.FWrite( &ch, 1, 1, psDBF->fp ); + } + + free(pszRecord); + free(pszOldField); + } + + psDBF->nCurrentRecord = -1; + psDBF->bCurrentRecordModified = FALSE; + psDBF->bUpdated = TRUE; + + return TRUE; +} + +/************************************************************************/ +/* DBFSetWriteEndOfFileChar() */ +/************************************************************************/ + +void SHPAPI_CALL DBFSetWriteEndOfFileChar( DBFHandle psDBF, int bWriteFlag ) +{ + psDBF->bWriteEndOfFileChar = bWriteFlag; +} diff --git a/libs/shapelib/depcomp b/libs/shapelib/depcomp new file mode 100755 index 0000000..fc98710 --- /dev/null +++ b/libs/shapelib/depcomp @@ -0,0 +1,791 @@ +#! /bin/sh +# depcomp - compile a program generating dependencies as side-effects + +scriptversion=2013-05-30.07; # UTC + +# Copyright (C) 1999-2014 Free Software Foundation, Inc. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2, or (at your option) +# any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + +# Originally written by Alexandre Oliva . + +case $1 in + '') + echo "$0: No command. Try '$0 --help' for more information." 1>&2 + exit 1; + ;; + -h | --h*) + cat <<\EOF +Usage: depcomp [--help] [--version] PROGRAM [ARGS] + +Run PROGRAMS ARGS to compile a file, generating dependencies +as side-effects. + +Environment variables: + depmode Dependency tracking mode. + source Source file read by 'PROGRAMS ARGS'. + object Object file output by 'PROGRAMS ARGS'. + DEPDIR directory where to store dependencies. + depfile Dependency file to output. + tmpdepfile Temporary file to use when outputting dependencies. + libtool Whether libtool is used (yes/no). + +Report bugs to . +EOF + exit $? + ;; + -v | --v*) + echo "depcomp $scriptversion" + exit $? + ;; +esac + +# Get the directory component of the given path, and save it in the +# global variables '$dir'. Note that this directory component will +# be either empty or ending with a '/' character. This is deliberate. +set_dir_from () +{ + case $1 in + */*) dir=`echo "$1" | sed -e 's|/[^/]*$|/|'`;; + *) dir=;; + esac +} + +# Get the suffix-stripped basename of the given path, and save it the +# global variable '$base'. +set_base_from () +{ + base=`echo "$1" | sed -e 's|^.*/||' -e 's/\.[^.]*$//'` +} + +# If no dependency file was actually created by the compiler invocation, +# we still have to create a dummy depfile, to avoid errors with the +# Makefile "include basename.Plo" scheme. +make_dummy_depfile () +{ + echo "#dummy" > "$depfile" +} + +# Factor out some common post-processing of the generated depfile. +# Requires the auxiliary global variable '$tmpdepfile' to be set. +aix_post_process_depfile () +{ + # If the compiler actually managed to produce a dependency file, + # post-process it. + if test -f "$tmpdepfile"; then + # Each line is of the form 'foo.o: dependency.h'. + # Do two passes, one to just change these to + # $object: dependency.h + # and one to simply output + # dependency.h: + # which is needed to avoid the deleted-header problem. + { sed -e "s,^.*\.[$lower]*:,$object:," < "$tmpdepfile" + sed -e "s,^.*\.[$lower]*:[$tab ]*,," -e 's,$,:,' < "$tmpdepfile" + } > "$depfile" + rm -f "$tmpdepfile" + else + make_dummy_depfile + fi +} + +# A tabulation character. +tab=' ' +# A newline character. +nl=' +' +# Character ranges might be problematic outside the C locale. +# These definitions help. +upper=ABCDEFGHIJKLMNOPQRSTUVWXYZ +lower=abcdefghijklmnopqrstuvwxyz +digits=0123456789 +alpha=${upper}${lower} + +if test -z "$depmode" || test -z "$source" || test -z "$object"; then + echo "depcomp: Variables source, object and depmode must be set" 1>&2 + exit 1 +fi + +# Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po. +depfile=${depfile-`echo "$object" | + sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`} +tmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`} + +rm -f "$tmpdepfile" + +# Avoid interferences from the environment. +gccflag= dashmflag= + +# Some modes work just like other modes, but use different flags. We +# parameterize here, but still list the modes in the big case below, +# to make depend.m4 easier to write. Note that we *cannot* use a case +# here, because this file can only contain one case statement. +if test "$depmode" = hp; then + # HP compiler uses -M and no extra arg. + gccflag=-M + depmode=gcc +fi + +if test "$depmode" = dashXmstdout; then + # This is just like dashmstdout with a different argument. + dashmflag=-xM + depmode=dashmstdout +fi + +cygpath_u="cygpath -u -f -" +if test "$depmode" = msvcmsys; then + # This is just like msvisualcpp but w/o cygpath translation. + # Just convert the backslash-escaped backslashes to single forward + # slashes to satisfy depend.m4 + cygpath_u='sed s,\\\\,/,g' + depmode=msvisualcpp +fi + +if test "$depmode" = msvc7msys; then + # This is just like msvc7 but w/o cygpath translation. + # Just convert the backslash-escaped backslashes to single forward + # slashes to satisfy depend.m4 + cygpath_u='sed s,\\\\,/,g' + depmode=msvc7 +fi + +if test "$depmode" = xlc; then + # IBM C/C++ Compilers xlc/xlC can output gcc-like dependency information. + gccflag=-qmakedep=gcc,-MF + depmode=gcc +fi + +case "$depmode" in +gcc3) +## gcc 3 implements dependency tracking that does exactly what +## we want. Yay! Note: for some reason libtool 1.4 doesn't like +## it if -MD -MP comes after the -MF stuff. Hmm. +## Unfortunately, FreeBSD c89 acceptance of flags depends upon +## the command line argument order; so add the flags where they +## appear in depend2.am. Note that the slowdown incurred here +## affects only configure: in makefiles, %FASTDEP% shortcuts this. + for arg + do + case $arg in + -c) set fnord "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" "$arg" ;; + *) set fnord "$@" "$arg" ;; + esac + shift # fnord + shift # $arg + done + "$@" + stat=$? + if test $stat -ne 0; then + rm -f "$tmpdepfile" + exit $stat + fi + mv "$tmpdepfile" "$depfile" + ;; + +gcc) +## Note that this doesn't just cater to obsosete pre-3.x GCC compilers. +## but also to in-use compilers like IMB xlc/xlC and the HP C compiler. +## (see the conditional assignment to $gccflag above). +## There are various ways to get dependency output from gcc. Here's +## why we pick this rather obscure method: +## - Don't want to use -MD because we'd like the dependencies to end +## up in a subdir. Having to rename by hand is ugly. +## (We might end up doing this anyway to support other compilers.) +## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like +## -MM, not -M (despite what the docs say). Also, it might not be +## supported by the other compilers which use the 'gcc' depmode. +## - Using -M directly means running the compiler twice (even worse +## than renaming). + if test -z "$gccflag"; then + gccflag=-MD, + fi + "$@" -Wp,"$gccflag$tmpdepfile" + stat=$? + if test $stat -ne 0; then + rm -f "$tmpdepfile" + exit $stat + fi + rm -f "$depfile" + echo "$object : \\" > "$depfile" + # The second -e expression handles DOS-style file names with drive + # letters. + sed -e 's/^[^:]*: / /' \ + -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile" +## This next piece of magic avoids the "deleted header file" problem. +## The problem is that when a header file which appears in a .P file +## is deleted, the dependency causes make to die (because there is +## typically no way to rebuild the header). We avoid this by adding +## dummy dependencies for each header file. Too bad gcc doesn't do +## this for us directly. +## Some versions of gcc put a space before the ':'. On the theory +## that the space means something, we add a space to the output as +## well. hp depmode also adds that space, but also prefixes the VPATH +## to the object. Take care to not repeat it in the output. +## Some versions of the HPUX 10.20 sed can't process this invocation +## correctly. Breaking it into two sed invocations is a workaround. + tr ' ' "$nl" < "$tmpdepfile" \ + | sed -e 's/^\\$//' -e '/^$/d' -e "s|.*$object$||" -e '/:$/d' \ + | sed -e 's/$/ :/' >> "$depfile" + rm -f "$tmpdepfile" + ;; + +hp) + # This case exists only to let depend.m4 do its work. It works by + # looking at the text of this script. This case will never be run, + # since it is checked for above. + exit 1 + ;; + +sgi) + if test "$libtool" = yes; then + "$@" "-Wp,-MDupdate,$tmpdepfile" + else + "$@" -MDupdate "$tmpdepfile" + fi + stat=$? + if test $stat -ne 0; then + rm -f "$tmpdepfile" + exit $stat + fi + rm -f "$depfile" + + if test -f "$tmpdepfile"; then # yes, the sourcefile depend on other files + echo "$object : \\" > "$depfile" + # Clip off the initial element (the dependent). Don't try to be + # clever and replace this with sed code, as IRIX sed won't handle + # lines with more than a fixed number of characters (4096 in + # IRIX 6.2 sed, 8192 in IRIX 6.5). We also remove comment lines; + # the IRIX cc adds comments like '#:fec' to the end of the + # dependency line. + tr ' ' "$nl" < "$tmpdepfile" \ + | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' \ + | tr "$nl" ' ' >> "$depfile" + echo >> "$depfile" + # The second pass generates a dummy entry for each header file. + tr ' ' "$nl" < "$tmpdepfile" \ + | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \ + >> "$depfile" + else + make_dummy_depfile + fi + rm -f "$tmpdepfile" + ;; + +xlc) + # This case exists only to let depend.m4 do its work. It works by + # looking at the text of this script. This case will never be run, + # since it is checked for above. + exit 1 + ;; + +aix) + # The C for AIX Compiler uses -M and outputs the dependencies + # in a .u file. In older versions, this file always lives in the + # current directory. Also, the AIX compiler puts '$object:' at the + # start of each line; $object doesn't have directory information. + # Version 6 uses the directory in both cases. + set_dir_from "$object" + set_base_from "$object" + if test "$libtool" = yes; then + tmpdepfile1=$dir$base.u + tmpdepfile2=$base.u + tmpdepfile3=$dir.libs/$base.u + "$@" -Wc,-M + else + tmpdepfile1=$dir$base.u + tmpdepfile2=$dir$base.u + tmpdepfile3=$dir$base.u + "$@" -M + fi + stat=$? + if test $stat -ne 0; then + rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" + exit $stat + fi + + for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" + do + test -f "$tmpdepfile" && break + done + aix_post_process_depfile + ;; + +tcc) + # tcc (Tiny C Compiler) understand '-MD -MF file' since version 0.9.26 + # FIXME: That version still under development at the moment of writing. + # Make that this statement remains true also for stable, released + # versions. + # It will wrap lines (doesn't matter whether long or short) with a + # trailing '\', as in: + # + # foo.o : \ + # foo.c \ + # foo.h \ + # + # It will put a trailing '\' even on the last line, and will use leading + # spaces rather than leading tabs (at least since its commit 0394caf7 + # "Emit spaces for -MD"). + "$@" -MD -MF "$tmpdepfile" + stat=$? + if test $stat -ne 0; then + rm -f "$tmpdepfile" + exit $stat + fi + rm -f "$depfile" + # Each non-empty line is of the form 'foo.o : \' or ' dep.h \'. + # We have to change lines of the first kind to '$object: \'. + sed -e "s|.*:|$object :|" < "$tmpdepfile" > "$depfile" + # And for each line of the second kind, we have to emit a 'dep.h:' + # dummy dependency, to avoid the deleted-header problem. + sed -n -e 's|^ *\(.*\) *\\$|\1:|p' < "$tmpdepfile" >> "$depfile" + rm -f "$tmpdepfile" + ;; + +## The order of this option in the case statement is important, since the +## shell code in configure will try each of these formats in the order +## listed in this file. A plain '-MD' option would be understood by many +## compilers, so we must ensure this comes after the gcc and icc options. +pgcc) + # Portland's C compiler understands '-MD'. + # Will always output deps to 'file.d' where file is the root name of the + # source file under compilation, even if file resides in a subdirectory. + # The object file name does not affect the name of the '.d' file. + # pgcc 10.2 will output + # foo.o: sub/foo.c sub/foo.h + # and will wrap long lines using '\' : + # foo.o: sub/foo.c ... \ + # sub/foo.h ... \ + # ... + set_dir_from "$object" + # Use the source, not the object, to determine the base name, since + # that's sadly what pgcc will do too. + set_base_from "$source" + tmpdepfile=$base.d + + # For projects that build the same source file twice into different object + # files, the pgcc approach of using the *source* file root name can cause + # problems in parallel builds. Use a locking strategy to avoid stomping on + # the same $tmpdepfile. + lockdir=$base.d-lock + trap " + echo '$0: caught signal, cleaning up...' >&2 + rmdir '$lockdir' + exit 1 + " 1 2 13 15 + numtries=100 + i=$numtries + while test $i -gt 0; do + # mkdir is a portable test-and-set. + if mkdir "$lockdir" 2>/dev/null; then + # This process acquired the lock. + "$@" -MD + stat=$? + # Release the lock. + rmdir "$lockdir" + break + else + # If the lock is being held by a different process, wait + # until the winning process is done or we timeout. + while test -d "$lockdir" && test $i -gt 0; do + sleep 1 + i=`expr $i - 1` + done + fi + i=`expr $i - 1` + done + trap - 1 2 13 15 + if test $i -le 0; then + echo "$0: failed to acquire lock after $numtries attempts" >&2 + echo "$0: check lockdir '$lockdir'" >&2 + exit 1 + fi + + if test $stat -ne 0; then + rm -f "$tmpdepfile" + exit $stat + fi + rm -f "$depfile" + # Each line is of the form `foo.o: dependent.h', + # or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'. + # Do two passes, one to just change these to + # `$object: dependent.h' and one to simply `dependent.h:'. + sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile" + # Some versions of the HPUX 10.20 sed can't process this invocation + # correctly. Breaking it into two sed invocations is a workaround. + sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" \ + | sed -e 's/$/ :/' >> "$depfile" + rm -f "$tmpdepfile" + ;; + +hp2) + # The "hp" stanza above does not work with aCC (C++) and HP's ia64 + # compilers, which have integrated preprocessors. The correct option + # to use with these is +Maked; it writes dependencies to a file named + # 'foo.d', which lands next to the object file, wherever that + # happens to be. + # Much of this is similar to the tru64 case; see comments there. + set_dir_from "$object" + set_base_from "$object" + if test "$libtool" = yes; then + tmpdepfile1=$dir$base.d + tmpdepfile2=$dir.libs/$base.d + "$@" -Wc,+Maked + else + tmpdepfile1=$dir$base.d + tmpdepfile2=$dir$base.d + "$@" +Maked + fi + stat=$? + if test $stat -ne 0; then + rm -f "$tmpdepfile1" "$tmpdepfile2" + exit $stat + fi + + for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" + do + test -f "$tmpdepfile" && break + done + if test -f "$tmpdepfile"; then + sed -e "s,^.*\.[$lower]*:,$object:," "$tmpdepfile" > "$depfile" + # Add 'dependent.h:' lines. + sed -ne '2,${ + s/^ *// + s/ \\*$// + s/$/:/ + p + }' "$tmpdepfile" >> "$depfile" + else + make_dummy_depfile + fi + rm -f "$tmpdepfile" "$tmpdepfile2" + ;; + +tru64) + # The Tru64 compiler uses -MD to generate dependencies as a side + # effect. 'cc -MD -o foo.o ...' puts the dependencies into 'foo.o.d'. + # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put + # dependencies in 'foo.d' instead, so we check for that too. + # Subdirectories are respected. + set_dir_from "$object" + set_base_from "$object" + + if test "$libtool" = yes; then + # Libtool generates 2 separate objects for the 2 libraries. These + # two compilations output dependencies in $dir.libs/$base.o.d and + # in $dir$base.o.d. We have to check for both files, because + # one of the two compilations can be disabled. We should prefer + # $dir$base.o.d over $dir.libs/$base.o.d because the latter is + # automatically cleaned when .libs/ is deleted, while ignoring + # the former would cause a distcleancheck panic. + tmpdepfile1=$dir$base.o.d # libtool 1.5 + tmpdepfile2=$dir.libs/$base.o.d # Likewise. + tmpdepfile3=$dir.libs/$base.d # Compaq CCC V6.2-504 + "$@" -Wc,-MD + else + tmpdepfile1=$dir$base.d + tmpdepfile2=$dir$base.d + tmpdepfile3=$dir$base.d + "$@" -MD + fi + + stat=$? + if test $stat -ne 0; then + rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" + exit $stat + fi + + for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" + do + test -f "$tmpdepfile" && break + done + # Same post-processing that is required for AIX mode. + aix_post_process_depfile + ;; + +msvc7) + if test "$libtool" = yes; then + showIncludes=-Wc,-showIncludes + else + showIncludes=-showIncludes + fi + "$@" $showIncludes > "$tmpdepfile" + stat=$? + grep -v '^Note: including file: ' "$tmpdepfile" + if test $stat -ne 0; then + rm -f "$tmpdepfile" + exit $stat + fi + rm -f "$depfile" + echo "$object : \\" > "$depfile" + # The first sed program below extracts the file names and escapes + # backslashes for cygpath. The second sed program outputs the file + # name when reading, but also accumulates all include files in the + # hold buffer in order to output them again at the end. This only + # works with sed implementations that can handle large buffers. + sed < "$tmpdepfile" -n ' +/^Note: including file: *\(.*\)/ { + s//\1/ + s/\\/\\\\/g + p +}' | $cygpath_u | sort -u | sed -n ' +s/ /\\ /g +s/\(.*\)/'"$tab"'\1 \\/p +s/.\(.*\) \\/\1:/ +H +$ { + s/.*/'"$tab"'/ + G + p +}' >> "$depfile" + echo >> "$depfile" # make sure the fragment doesn't end with a backslash + rm -f "$tmpdepfile" + ;; + +msvc7msys) + # This case exists only to let depend.m4 do its work. It works by + # looking at the text of this script. This case will never be run, + # since it is checked for above. + exit 1 + ;; + +#nosideeffect) + # This comment above is used by automake to tell side-effect + # dependency tracking mechanisms from slower ones. + +dashmstdout) + # Important note: in order to support this mode, a compiler *must* + # always write the preprocessed file to stdout, regardless of -o. + "$@" || exit $? + + # Remove the call to Libtool. + if test "$libtool" = yes; then + while test "X$1" != 'X--mode=compile'; do + shift + done + shift + fi + + # Remove '-o $object'. + IFS=" " + for arg + do + case $arg in + -o) + shift + ;; + $object) + shift + ;; + *) + set fnord "$@" "$arg" + shift # fnord + shift # $arg + ;; + esac + done + + test -z "$dashmflag" && dashmflag=-M + # Require at least two characters before searching for ':' + # in the target name. This is to cope with DOS-style filenames: + # a dependency such as 'c:/foo/bar' could be seen as target 'c' otherwise. + "$@" $dashmflag | + sed "s|^[$tab ]*[^:$tab ][^:][^:]*:[$tab ]*|$object: |" > "$tmpdepfile" + rm -f "$depfile" + cat < "$tmpdepfile" > "$depfile" + # Some versions of the HPUX 10.20 sed can't process this sed invocation + # correctly. Breaking it into two sed invocations is a workaround. + tr ' ' "$nl" < "$tmpdepfile" \ + | sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' \ + | sed -e 's/$/ :/' >> "$depfile" + rm -f "$tmpdepfile" + ;; + +dashXmstdout) + # This case only exists to satisfy depend.m4. It is never actually + # run, as this mode is specially recognized in the preamble. + exit 1 + ;; + +makedepend) + "$@" || exit $? + # Remove any Libtool call + if test "$libtool" = yes; then + while test "X$1" != 'X--mode=compile'; do + shift + done + shift + fi + # X makedepend + shift + cleared=no eat=no + for arg + do + case $cleared in + no) + set ""; shift + cleared=yes ;; + esac + if test $eat = yes; then + eat=no + continue + fi + case "$arg" in + -D*|-I*) + set fnord "$@" "$arg"; shift ;; + # Strip any option that makedepend may not understand. Remove + # the object too, otherwise makedepend will parse it as a source file. + -arch) + eat=yes ;; + -*|$object) + ;; + *) + set fnord "$@" "$arg"; shift ;; + esac + done + obj_suffix=`echo "$object" | sed 's/^.*\././'` + touch "$tmpdepfile" + ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@" + rm -f "$depfile" + # makedepend may prepend the VPATH from the source file name to the object. + # No need to regex-escape $object, excess matching of '.' is harmless. + sed "s|^.*\($object *:\)|\1|" "$tmpdepfile" > "$depfile" + # Some versions of the HPUX 10.20 sed can't process the last invocation + # correctly. Breaking it into two sed invocations is a workaround. + sed '1,2d' "$tmpdepfile" \ + | tr ' ' "$nl" \ + | sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' \ + | sed -e 's/$/ :/' >> "$depfile" + rm -f "$tmpdepfile" "$tmpdepfile".bak + ;; + +cpp) + # Important note: in order to support this mode, a compiler *must* + # always write the preprocessed file to stdout. + "$@" || exit $? + + # Remove the call to Libtool. + if test "$libtool" = yes; then + while test "X$1" != 'X--mode=compile'; do + shift + done + shift + fi + + # Remove '-o $object'. + IFS=" " + for arg + do + case $arg in + -o) + shift + ;; + $object) + shift + ;; + *) + set fnord "$@" "$arg" + shift # fnord + shift # $arg + ;; + esac + done + + "$@" -E \ + | sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \ + -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \ + | sed '$ s: \\$::' > "$tmpdepfile" + rm -f "$depfile" + echo "$object : \\" > "$depfile" + cat < "$tmpdepfile" >> "$depfile" + sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile" + rm -f "$tmpdepfile" + ;; + +msvisualcpp) + # Important note: in order to support this mode, a compiler *must* + # always write the preprocessed file to stdout. + "$@" || exit $? + + # Remove the call to Libtool. + if test "$libtool" = yes; then + while test "X$1" != 'X--mode=compile'; do + shift + done + shift + fi + + IFS=" " + for arg + do + case "$arg" in + -o) + shift + ;; + $object) + shift + ;; + "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI") + set fnord "$@" + shift + shift + ;; + *) + set fnord "$@" "$arg" + shift + shift + ;; + esac + done + "$@" -E 2>/dev/null | + sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::\1:p' | $cygpath_u | sort -u > "$tmpdepfile" + rm -f "$depfile" + echo "$object : \\" > "$depfile" + sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::'"$tab"'\1 \\:p' >> "$depfile" + echo "$tab" >> "$depfile" + sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::\1\::p' >> "$depfile" + rm -f "$tmpdepfile" + ;; + +msvcmsys) + # This case exists only to let depend.m4 do its work. It works by + # looking at the text of this script. This case will never be run, + # since it is checked for above. + exit 1 + ;; + +none) + exec "$@" + ;; + +*) + echo "Unknown depmode $depmode" 1>&2 + exit 1 + ;; +esac + +exit 0 + +# Local Variables: +# mode: shell-script +# sh-indentation: 2 +# eval: (add-hook 'write-file-hooks 'time-stamp) +# time-stamp-start: "scriptversion=" +# time-stamp-format: "%:y-%02m-%02d.%02H" +# time-stamp-time-zone: "UTC" +# time-stamp-end: "; # UTC" +# End: diff --git a/libs/shapelib/install-sh b/libs/shapelib/install-sh new file mode 100755 index 0000000..59990a1 --- /dev/null +++ b/libs/shapelib/install-sh @@ -0,0 +1,508 @@ +#!/bin/sh +# install - install a program, script, or datafile + +scriptversion=2014-09-12.12; # UTC + +# This originates from X11R5 (mit/util/scripts/install.sh), which was +# later released in X11R6 (xc/config/util/install.sh) with the +# following copyright and license. +# +# Copyright (C) 1994 X Consortium +# +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to +# deal in the Software without restriction, including without limitation the +# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or +# sell copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in +# all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN +# AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNEC- +# TION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +# +# Except as contained in this notice, the name of the X Consortium shall not +# be used in advertising or otherwise to promote the sale, use or other deal- +# ings in this Software without prior written authorization from the X Consor- +# tium. +# +# +# FSF changes to this file are in the public domain. +# +# Calling this script install-sh is preferred over install.sh, to prevent +# 'make' implicit rules from creating a file called install from it +# when there is no Makefile. +# +# This script is compatible with the BSD install script, but was written +# from scratch. + +tab=' ' +nl=' +' +IFS=" $tab$nl" + +# Set DOITPROG to "echo" to test this script. + +doit=${DOITPROG-} +doit_exec=${doit:-exec} + +# Put in absolute file names if you don't have them in your path; +# or use environment vars. + +chgrpprog=${CHGRPPROG-chgrp} +chmodprog=${CHMODPROG-chmod} +chownprog=${CHOWNPROG-chown} +cmpprog=${CMPPROG-cmp} +cpprog=${CPPROG-cp} +mkdirprog=${MKDIRPROG-mkdir} +mvprog=${MVPROG-mv} +rmprog=${RMPROG-rm} +stripprog=${STRIPPROG-strip} + +posix_mkdir= + +# Desired mode of installed file. +mode=0755 + +chgrpcmd= +chmodcmd=$chmodprog +chowncmd= +mvcmd=$mvprog +rmcmd="$rmprog -f" +stripcmd= + +src= +dst= +dir_arg= +dst_arg= + +copy_on_change=false +is_target_a_directory=possibly + +usage="\ +Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE + or: $0 [OPTION]... SRCFILES... DIRECTORY + or: $0 [OPTION]... -t DIRECTORY SRCFILES... + or: $0 [OPTION]... -d DIRECTORIES... + +In the 1st form, copy SRCFILE to DSTFILE. +In the 2nd and 3rd, copy all SRCFILES to DIRECTORY. +In the 4th, create DIRECTORIES. + +Options: + --help display this help and exit. + --version display version info and exit. + + -c (ignored) + -C install only if different (preserve the last data modification time) + -d create directories instead of installing files. + -g GROUP $chgrpprog installed files to GROUP. + -m MODE $chmodprog installed files to MODE. + -o USER $chownprog installed files to USER. + -s $stripprog installed files. + -t DIRECTORY install into DIRECTORY. + -T report an error if DSTFILE is a directory. + +Environment variables override the default commands: + CHGRPPROG CHMODPROG CHOWNPROG CMPPROG CPPROG MKDIRPROG MVPROG + RMPROG STRIPPROG +" + +while test $# -ne 0; do + case $1 in + -c) ;; + + -C) copy_on_change=true;; + + -d) dir_arg=true;; + + -g) chgrpcmd="$chgrpprog $2" + shift;; + + --help) echo "$usage"; exit $?;; + + -m) mode=$2 + case $mode in + *' '* | *"$tab"* | *"$nl"* | *'*'* | *'?'* | *'['*) + echo "$0: invalid mode: $mode" >&2 + exit 1;; + esac + shift;; + + -o) chowncmd="$chownprog $2" + shift;; + + -s) stripcmd=$stripprog;; + + -t) + is_target_a_directory=always + dst_arg=$2 + # Protect names problematic for 'test' and other utilities. + case $dst_arg in + -* | [=\(\)!]) dst_arg=./$dst_arg;; + esac + shift;; + + -T) is_target_a_directory=never;; + + --version) echo "$0 $scriptversion"; exit $?;; + + --) shift + break;; + + -*) echo "$0: invalid option: $1" >&2 + exit 1;; + + *) break;; + esac + shift +done + +# We allow the use of options -d and -T together, by making -d +# take the precedence; this is for compatibility with GNU install. + +if test -n "$dir_arg"; then + if test -n "$dst_arg"; then + echo "$0: target directory not allowed when installing a directory." >&2 + exit 1 + fi +fi + +if test $# -ne 0 && test -z "$dir_arg$dst_arg"; then + # When -d is used, all remaining arguments are directories to create. + # When -t is used, the destination is already specified. + # Otherwise, the last argument is the destination. Remove it from $@. + for arg + do + if test -n "$dst_arg"; then + # $@ is not empty: it contains at least $arg. + set fnord "$@" "$dst_arg" + shift # fnord + fi + shift # arg + dst_arg=$arg + # Protect names problematic for 'test' and other utilities. + case $dst_arg in + -* | [=\(\)!]) dst_arg=./$dst_arg;; + esac + done +fi + +if test $# -eq 0; then + if test -z "$dir_arg"; then + echo "$0: no input file specified." >&2 + exit 1 + fi + # It's OK to call 'install-sh -d' without argument. + # This can happen when creating conditional directories. + exit 0 +fi + +if test -z "$dir_arg"; then + if test $# -gt 1 || test "$is_target_a_directory" = always; then + if test ! -d "$dst_arg"; then + echo "$0: $dst_arg: Is not a directory." >&2 + exit 1 + fi + fi +fi + +if test -z "$dir_arg"; then + do_exit='(exit $ret); exit $ret' + trap "ret=129; $do_exit" 1 + trap "ret=130; $do_exit" 2 + trap "ret=141; $do_exit" 13 + trap "ret=143; $do_exit" 15 + + # Set umask so as not to create temps with too-generous modes. + # However, 'strip' requires both read and write access to temps. + case $mode in + # Optimize common cases. + *644) cp_umask=133;; + *755) cp_umask=22;; + + *[0-7]) + if test -z "$stripcmd"; then + u_plus_rw= + else + u_plus_rw='% 200' + fi + cp_umask=`expr '(' 777 - $mode % 1000 ')' $u_plus_rw`;; + *) + if test -z "$stripcmd"; then + u_plus_rw= + else + u_plus_rw=,u+rw + fi + cp_umask=$mode$u_plus_rw;; + esac +fi + +for src +do + # Protect names problematic for 'test' and other utilities. + case $src in + -* | [=\(\)!]) src=./$src;; + esac + + if test -n "$dir_arg"; then + dst=$src + dstdir=$dst + test -d "$dstdir" + dstdir_status=$? + else + + # Waiting for this to be detected by the "$cpprog $src $dsttmp" command + # might cause directories to be created, which would be especially bad + # if $src (and thus $dsttmp) contains '*'. + if test ! -f "$src" && test ! -d "$src"; then + echo "$0: $src does not exist." >&2 + exit 1 + fi + + if test -z "$dst_arg"; then + echo "$0: no destination specified." >&2 + exit 1 + fi + dst=$dst_arg + + # If destination is a directory, append the input filename; won't work + # if double slashes aren't ignored. + if test -d "$dst"; then + if test "$is_target_a_directory" = never; then + echo "$0: $dst_arg: Is a directory" >&2 + exit 1 + fi + dstdir=$dst + dst=$dstdir/`basename "$src"` + dstdir_status=0 + else + dstdir=`dirname "$dst"` + test -d "$dstdir" + dstdir_status=$? + fi + fi + + obsolete_mkdir_used=false + + if test $dstdir_status != 0; then + case $posix_mkdir in + '') + # Create intermediate dirs using mode 755 as modified by the umask. + # This is like FreeBSD 'install' as of 1997-10-28. + umask=`umask` + case $stripcmd.$umask in + # Optimize common cases. + *[2367][2367]) mkdir_umask=$umask;; + .*0[02][02] | .[02][02] | .[02]) mkdir_umask=22;; + + *[0-7]) + mkdir_umask=`expr $umask + 22 \ + - $umask % 100 % 40 + $umask % 20 \ + - $umask % 10 % 4 + $umask % 2 + `;; + *) mkdir_umask=$umask,go-w;; + esac + + # With -d, create the new directory with the user-specified mode. + # Otherwise, rely on $mkdir_umask. + if test -n "$dir_arg"; then + mkdir_mode=-m$mode + else + mkdir_mode= + fi + + posix_mkdir=false + case $umask in + *[123567][0-7][0-7]) + # POSIX mkdir -p sets u+wx bits regardless of umask, which + # is incompatible with FreeBSD 'install' when (umask & 300) != 0. + ;; + *) + # $RANDOM is not portable (e.g. dash); use it when possible to + # lower collision chance + tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$ + trap 'ret=$?; rmdir "$tmpdir/a/b" "$tmpdir/a" "$tmpdir" 2>/dev/null; exit $ret' 0 + + # As "mkdir -p" follows symlinks and we work in /tmp possibly; so + # create the $tmpdir first (and fail if unsuccessful) to make sure + # that nobody tries to guess the $tmpdir name. + if (umask $mkdir_umask && + $mkdirprog $mkdir_mode "$tmpdir" && + exec $mkdirprog $mkdir_mode -p -- "$tmpdir/a/b") >/dev/null 2>&1 + then + if test -z "$dir_arg" || { + # Check for POSIX incompatibilities with -m. + # HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or + # other-writable bit of parent directory when it shouldn't. + # FreeBSD 6.1 mkdir -m -p sets mode of existing directory. + test_tmpdir="$tmpdir/a" + ls_ld_tmpdir=`ls -ld "$test_tmpdir"` + case $ls_ld_tmpdir in + d????-?r-*) different_mode=700;; + d????-?--*) different_mode=755;; + *) false;; + esac && + $mkdirprog -m$different_mode -p -- "$test_tmpdir" && { + ls_ld_tmpdir_1=`ls -ld "$test_tmpdir"` + test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1" + } + } + then posix_mkdir=: + fi + rmdir "$tmpdir/a/b" "$tmpdir/a" "$tmpdir" + else + # Remove any dirs left behind by ancient mkdir implementations. + rmdir ./$mkdir_mode ./-p ./-- "$tmpdir" 2>/dev/null + fi + trap '' 0;; + esac;; + esac + + if + $posix_mkdir && ( + umask $mkdir_umask && + $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir" + ) + then : + else + + # The umask is ridiculous, or mkdir does not conform to POSIX, + # or it failed possibly due to a race condition. Create the + # directory the slow way, step by step, checking for races as we go. + + case $dstdir in + /*) prefix='/';; + [-=\(\)!]*) prefix='./';; + *) prefix='';; + esac + + oIFS=$IFS + IFS=/ + set -f + set fnord $dstdir + shift + set +f + IFS=$oIFS + + prefixes= + + for d + do + test X"$d" = X && continue + + prefix=$prefix$d + if test -d "$prefix"; then + prefixes= + else + if $posix_mkdir; then + (umask=$mkdir_umask && + $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir") && break + # Don't fail if two instances are running concurrently. + test -d "$prefix" || exit 1 + else + case $prefix in + *\'*) qprefix=`echo "$prefix" | sed "s/'/'\\\\\\\\''/g"`;; + *) qprefix=$prefix;; + esac + prefixes="$prefixes '$qprefix'" + fi + fi + prefix=$prefix/ + done + + if test -n "$prefixes"; then + # Don't fail if two instances are running concurrently. + (umask $mkdir_umask && + eval "\$doit_exec \$mkdirprog $prefixes") || + test -d "$dstdir" || exit 1 + obsolete_mkdir_used=true + fi + fi + fi + + if test -n "$dir_arg"; then + { test -z "$chowncmd" || $doit $chowncmd "$dst"; } && + { test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } && + { test "$obsolete_mkdir_used$chowncmd$chgrpcmd" = false || + test -z "$chmodcmd" || $doit $chmodcmd $mode "$dst"; } || exit 1 + else + + # Make a couple of temp file names in the proper directory. + dsttmp=$dstdir/_inst.$$_ + rmtmp=$dstdir/_rm.$$_ + + # Trap to clean up those temp files at exit. + trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0 + + # Copy the file name to the temp name. + (umask $cp_umask && $doit_exec $cpprog "$src" "$dsttmp") && + + # and set any options; do chmod last to preserve setuid bits. + # + # If any of these fail, we abort the whole thing. If we want to + # ignore errors from any of these, just make sure not to ignore + # errors from the above "$doit $cpprog $src $dsttmp" command. + # + { test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } && + { test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } && + { test -z "$stripcmd" || $doit $stripcmd "$dsttmp"; } && + { test -z "$chmodcmd" || $doit $chmodcmd $mode "$dsttmp"; } && + + # If -C, don't bother to copy if it wouldn't change the file. + if $copy_on_change && + old=`LC_ALL=C ls -dlL "$dst" 2>/dev/null` && + new=`LC_ALL=C ls -dlL "$dsttmp" 2>/dev/null` && + set -f && + set X $old && old=:$2:$4:$5:$6 && + set X $new && new=:$2:$4:$5:$6 && + set +f && + test "$old" = "$new" && + $cmpprog "$dst" "$dsttmp" >/dev/null 2>&1 + then + rm -f "$dsttmp" + else + # Rename the file to the real destination. + $doit $mvcmd -f "$dsttmp" "$dst" 2>/dev/null || + + # The rename failed, perhaps because mv can't rename something else + # to itself, or perhaps because mv is so ancient that it does not + # support -f. + { + # Now remove or move aside any old file at destination location. + # We try this two ways since rm can't unlink itself on some + # systems and the destination file might be busy for other + # reasons. In this case, the final cleanup might fail but the new + # file should still install successfully. + { + test ! -f "$dst" || + $doit $rmcmd -f "$dst" 2>/dev/null || + { $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null && + { $doit $rmcmd -f "$rmtmp" 2>/dev/null; :; } + } || + { echo "$0: cannot unlink or rename $dst" >&2 + (exit 1); exit 1 + } + } && + + # Now rename the file to the real destination. + $doit $mvcmd "$dsttmp" "$dst" + } + fi || exit 1 + + trap '' 0 + fi +done + +# Local variables: +# eval: (add-hook 'write-file-hooks 'time-stamp) +# time-stamp-start: "scriptversion=" +# time-stamp-format: "%:y-%02m-%02d.%02H" +# time-stamp-time-zone: "UTC" +# time-stamp-end: "; # UTC" +# End: diff --git a/libs/shapelib/ltmain.sh b/libs/shapelib/ltmain.sh new file mode 100644 index 0000000..147d758 --- /dev/null +++ b/libs/shapelib/ltmain.sh @@ -0,0 +1,11156 @@ +#! /bin/sh +## DO NOT EDIT - This file generated from ./build-aux/ltmain.in +## by inline-source v2014-01-03.01 + +# libtool (GNU libtool) 2.4.6 +# Provide generalized library-building support services. +# Written by Gordon Matzigkeit , 1996 + +# Copyright (C) 1996-2015 Free Software Foundation, Inc. +# This is free software; see the source for copying conditions. There is NO +# warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + +# GNU Libtool is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# As a special exception to the GNU General Public License, +# if you distribute this file as part of a program or library that +# is built using GNU Libtool, you may include this file under the +# same distribution terms that you use for the rest of that program. +# +# GNU Libtool is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + + +PROGRAM=libtool +PACKAGE=libtool +VERSION="2.4.6 Debian-2.4.6-0.1" +package_revision=2.4.6 + + +## ------ ## +## Usage. ## +## ------ ## + +# Run './libtool --help' for help with using this script from the +# command line. + + +## ------------------------------- ## +## User overridable command paths. ## +## ------------------------------- ## + +# After configure completes, it has a better idea of some of the +# shell tools we need than the defaults used by the functions shared +# with bootstrap, so set those here where they can still be over- +# ridden by the user, but otherwise take precedence. + +: ${AUTOCONF="autoconf"} +: ${AUTOMAKE="automake"} + + +## -------------------------- ## +## Source external libraries. ## +## -------------------------- ## + +# Much of our low-level functionality needs to be sourced from external +# libraries, which are installed to $pkgauxdir. + +# Set a version string for this script. +scriptversion=2015-01-20.17; # UTC + +# General shell script boiler plate, and helper functions. +# Written by Gary V. Vaughan, 2004 + +# Copyright (C) 2004-2015 Free Software Foundation, Inc. +# This is free software; see the source for copying conditions. There is NO +# warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3 of the License, or +# (at your option) any later version. + +# As a special exception to the GNU General Public License, if you distribute +# this file as part of a program or library that is built using GNU Libtool, +# you may include this file under the same distribution terms that you use +# for the rest of that program. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNES FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +# Please report bugs or propose patches to gary@gnu.org. + + +## ------ ## +## Usage. ## +## ------ ## + +# Evaluate this file near the top of your script to gain access to +# the functions and variables defined here: +# +# . `echo "$0" | ${SED-sed} 's|[^/]*$||'`/build-aux/funclib.sh +# +# If you need to override any of the default environment variable +# settings, do that before evaluating this file. + + +## -------------------- ## +## Shell normalisation. ## +## -------------------- ## + +# Some shells need a little help to be as Bourne compatible as possible. +# Before doing anything else, make sure all that help has been provided! + +DUALCASE=1; export DUALCASE # for MKS sh +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : + emulate sh + NULLCMD=: + # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in *posix*) set -o posix ;; esac +fi + +# NLS nuisances: We save the old values in case they are required later. +_G_user_locale= +_G_safe_locale= +for _G_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES +do + eval "if test set = \"\${$_G_var+set}\"; then + save_$_G_var=\$$_G_var + $_G_var=C + export $_G_var + _G_user_locale=\"$_G_var=\\\$save_\$_G_var; \$_G_user_locale\" + _G_safe_locale=\"$_G_var=C; \$_G_safe_locale\" + fi" +done + +# CDPATH. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + +# Make sure IFS has a sensible default +sp=' ' +nl=' +' +IFS="$sp $nl" + +# There are apparently some retarded systems that use ';' as a PATH separator! +if test "${PATH_SEPARATOR+set}" != set; then + PATH_SEPARATOR=: + (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { + (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || + PATH_SEPARATOR=';' + } +fi + + + +## ------------------------- ## +## Locate command utilities. ## +## ------------------------- ## + + +# func_executable_p FILE +# ---------------------- +# Check that FILE is an executable regular file. +func_executable_p () +{ + test -f "$1" && test -x "$1" +} + + +# func_path_progs PROGS_LIST CHECK_FUNC [PATH] +# -------------------------------------------- +# Search for either a program that responds to --version with output +# containing "GNU", or else returned by CHECK_FUNC otherwise, by +# trying all the directories in PATH with each of the elements of +# PROGS_LIST. +# +# CHECK_FUNC should accept the path to a candidate program, and +# set $func_check_prog_result if it truncates its output less than +# $_G_path_prog_max characters. +func_path_progs () +{ + _G_progs_list=$1 + _G_check_func=$2 + _G_PATH=${3-"$PATH"} + + _G_path_prog_max=0 + _G_path_prog_found=false + _G_save_IFS=$IFS; IFS=${PATH_SEPARATOR-:} + for _G_dir in $_G_PATH; do + IFS=$_G_save_IFS + test -z "$_G_dir" && _G_dir=. + for _G_prog_name in $_G_progs_list; do + for _exeext in '' .EXE; do + _G_path_prog=$_G_dir/$_G_prog_name$_exeext + func_executable_p "$_G_path_prog" || continue + case `"$_G_path_prog" --version 2>&1` in + *GNU*) func_path_progs_result=$_G_path_prog _G_path_prog_found=: ;; + *) $_G_check_func $_G_path_prog + func_path_progs_result=$func_check_prog_result + ;; + esac + $_G_path_prog_found && break 3 + done + done + done + IFS=$_G_save_IFS + test -z "$func_path_progs_result" && { + echo "no acceptable sed could be found in \$PATH" >&2 + exit 1 + } +} + + +# We want to be able to use the functions in this file before configure +# has figured out where the best binaries are kept, which means we have +# to search for them ourselves - except when the results are already set +# where we skip the searches. + +# Unless the user overrides by setting SED, search the path for either GNU +# sed, or the sed that truncates its output the least. +test -z "$SED" && { + _G_sed_script=s/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/ + for _G_i in 1 2 3 4 5 6 7; do + _G_sed_script=$_G_sed_script$nl$_G_sed_script + done + echo "$_G_sed_script" 2>/dev/null | sed 99q >conftest.sed + _G_sed_script= + + func_check_prog_sed () + { + _G_path_prog=$1 + + _G_count=0 + printf 0123456789 >conftest.in + while : + do + cat conftest.in conftest.in >conftest.tmp + mv conftest.tmp conftest.in + cp conftest.in conftest.nl + echo '' >> conftest.nl + "$_G_path_prog" -f conftest.sed conftest.out 2>/dev/null || break + diff conftest.out conftest.nl >/dev/null 2>&1 || break + _G_count=`expr $_G_count + 1` + if test "$_G_count" -gt "$_G_path_prog_max"; then + # Best one so far, save it but keep looking for a better one + func_check_prog_result=$_G_path_prog + _G_path_prog_max=$_G_count + fi + # 10*(2^10) chars as input seems more than enough + test 10 -lt "$_G_count" && break + done + rm -f conftest.in conftest.tmp conftest.nl conftest.out + } + + func_path_progs "sed gsed" func_check_prog_sed $PATH:/usr/xpg4/bin + rm -f conftest.sed + SED=$func_path_progs_result +} + + +# Unless the user overrides by setting GREP, search the path for either GNU +# grep, or the grep that truncates its output the least. +test -z "$GREP" && { + func_check_prog_grep () + { + _G_path_prog=$1 + + _G_count=0 + _G_path_prog_max=0 + printf 0123456789 >conftest.in + while : + do + cat conftest.in conftest.in >conftest.tmp + mv conftest.tmp conftest.in + cp conftest.in conftest.nl + echo 'GREP' >> conftest.nl + "$_G_path_prog" -e 'GREP$' -e '-(cannot match)-' conftest.out 2>/dev/null || break + diff conftest.out conftest.nl >/dev/null 2>&1 || break + _G_count=`expr $_G_count + 1` + if test "$_G_count" -gt "$_G_path_prog_max"; then + # Best one so far, save it but keep looking for a better one + func_check_prog_result=$_G_path_prog + _G_path_prog_max=$_G_count + fi + # 10*(2^10) chars as input seems more than enough + test 10 -lt "$_G_count" && break + done + rm -f conftest.in conftest.tmp conftest.nl conftest.out + } + + func_path_progs "grep ggrep" func_check_prog_grep $PATH:/usr/xpg4/bin + GREP=$func_path_progs_result +} + + +## ------------------------------- ## +## User overridable command paths. ## +## ------------------------------- ## + +# All uppercase variable names are used for environment variables. These +# variables can be overridden by the user before calling a script that +# uses them if a suitable command of that name is not already available +# in the command search PATH. + +: ${CP="cp -f"} +: ${ECHO="printf %s\n"} +: ${EGREP="$GREP -E"} +: ${FGREP="$GREP -F"} +: ${LN_S="ln -s"} +: ${MAKE="make"} +: ${MKDIR="mkdir"} +: ${MV="mv -f"} +: ${RM="rm -f"} +: ${SHELL="${CONFIG_SHELL-/bin/sh}"} + + +## -------------------- ## +## Useful sed snippets. ## +## -------------------- ## + +sed_dirname='s|/[^/]*$||' +sed_basename='s|^.*/||' + +# Sed substitution that helps us do robust quoting. It backslashifies +# metacharacters that are still active within double-quoted strings. +sed_quote_subst='s|\([`"$\\]\)|\\\1|g' + +# Same as above, but do not quote variable references. +sed_double_quote_subst='s/\(["`\\]\)/\\\1/g' + +# Sed substitution that turns a string into a regex matching for the +# string literally. +sed_make_literal_regex='s|[].[^$\\*\/]|\\&|g' + +# Sed substitution that converts a w32 file name or path +# that contains forward slashes, into one that contains +# (escaped) backslashes. A very naive implementation. +sed_naive_backslashify='s|\\\\*|\\|g;s|/|\\|g;s|\\|\\\\|g' + +# Re-'\' parameter expansions in output of sed_double_quote_subst that +# were '\'-ed in input to the same. If an odd number of '\' preceded a +# '$' in input to sed_double_quote_subst, that '$' was protected from +# expansion. Since each input '\' is now two '\'s, look for any number +# of runs of four '\'s followed by two '\'s and then a '$'. '\' that '$'. +_G_bs='\\' +_G_bs2='\\\\' +_G_bs4='\\\\\\\\' +_G_dollar='\$' +sed_double_backslash="\ + s/$_G_bs4/&\\ +/g + s/^$_G_bs2$_G_dollar/$_G_bs&/ + s/\\([^$_G_bs]\\)$_G_bs2$_G_dollar/\\1$_G_bs2$_G_bs$_G_dollar/g + s/\n//g" + + +## ----------------- ## +## Global variables. ## +## ----------------- ## + +# Except for the global variables explicitly listed below, the following +# functions in the '^func_' namespace, and the '^require_' namespace +# variables initialised in the 'Resource management' section, sourcing +# this file will not pollute your global namespace with anything +# else. There's no portable way to scope variables in Bourne shell +# though, so actually running these functions will sometimes place +# results into a variable named after the function, and often use +# temporary variables in the '^_G_' namespace. If you are careful to +# avoid using those namespaces casually in your sourcing script, things +# should continue to work as you expect. And, of course, you can freely +# overwrite any of the functions or variables defined here before +# calling anything to customize them. + +EXIT_SUCCESS=0 +EXIT_FAILURE=1 +EXIT_MISMATCH=63 # $? = 63 is used to indicate version mismatch to missing. +EXIT_SKIP=77 # $? = 77 is used to indicate a skipped test to automake. + +# Allow overriding, eg assuming that you follow the convention of +# putting '$debug_cmd' at the start of all your functions, you can get +# bash to show function call trace with: +# +# debug_cmd='eval echo "${FUNCNAME[0]} $*" >&2' bash your-script-name +debug_cmd=${debug_cmd-":"} +exit_cmd=: + +# By convention, finish your script with: +# +# exit $exit_status +# +# so that you can set exit_status to non-zero if you want to indicate +# something went wrong during execution without actually bailing out at +# the point of failure. +exit_status=$EXIT_SUCCESS + +# Work around backward compatibility issue on IRIX 6.5. On IRIX 6.4+, sh +# is ksh but when the shell is invoked as "sh" and the current value of +# the _XPG environment variable is not equal to 1 (one), the special +# positional parameter $0, within a function call, is the name of the +# function. +progpath=$0 + +# The name of this program. +progname=`$ECHO "$progpath" |$SED "$sed_basename"` + +# Make sure we have an absolute progpath for reexecution: +case $progpath in + [\\/]*|[A-Za-z]:\\*) ;; + *[\\/]*) + progdir=`$ECHO "$progpath" |$SED "$sed_dirname"` + progdir=`cd "$progdir" && pwd` + progpath=$progdir/$progname + ;; + *) + _G_IFS=$IFS + IFS=${PATH_SEPARATOR-:} + for progdir in $PATH; do + IFS=$_G_IFS + test -x "$progdir/$progname" && break + done + IFS=$_G_IFS + test -n "$progdir" || progdir=`pwd` + progpath=$progdir/$progname + ;; +esac + + +## ----------------- ## +## Standard options. ## +## ----------------- ## + +# The following options affect the operation of the functions defined +# below, and should be set appropriately depending on run-time para- +# meters passed on the command line. + +opt_dry_run=false +opt_quiet=false +opt_verbose=false + +# Categories 'all' and 'none' are always available. Append any others +# you will pass as the first argument to func_warning from your own +# code. +warning_categories= + +# By default, display warnings according to 'opt_warning_types'. Set +# 'warning_func' to ':' to elide all warnings, or func_fatal_error to +# treat the next displayed warning as a fatal error. +warning_func=func_warn_and_continue + +# Set to 'all' to display all warnings, 'none' to suppress all +# warnings, or a space delimited list of some subset of +# 'warning_categories' to display only the listed warnings. +opt_warning_types=all + + +## -------------------- ## +## Resource management. ## +## -------------------- ## + +# This section contains definitions for functions that each ensure a +# particular resource (a file, or a non-empty configuration variable for +# example) is available, and if appropriate to extract default values +# from pertinent package files. Call them using their associated +# 'require_*' variable to ensure that they are executed, at most, once. +# +# It's entirely deliberate that calling these functions can set +# variables that don't obey the namespace limitations obeyed by the rest +# of this file, in order that that they be as useful as possible to +# callers. + + +# require_term_colors +# ------------------- +# Allow display of bold text on terminals that support it. +require_term_colors=func_require_term_colors +func_require_term_colors () +{ + $debug_cmd + + test -t 1 && { + # COLORTERM and USE_ANSI_COLORS environment variables take + # precedence, because most terminfo databases neglect to describe + # whether color sequences are supported. + test -n "${COLORTERM+set}" && : ${USE_ANSI_COLORS="1"} + + if test 1 = "$USE_ANSI_COLORS"; then + # Standard ANSI escape sequences + tc_reset='' + tc_bold=''; tc_standout='' + tc_red=''; tc_green='' + tc_blue=''; tc_cyan='' + else + # Otherwise trust the terminfo database after all. + test -n "`tput sgr0 2>/dev/null`" && { + tc_reset=`tput sgr0` + test -n "`tput bold 2>/dev/null`" && tc_bold=`tput bold` + tc_standout=$tc_bold + test -n "`tput smso 2>/dev/null`" && tc_standout=`tput smso` + test -n "`tput setaf 1 2>/dev/null`" && tc_red=`tput setaf 1` + test -n "`tput setaf 2 2>/dev/null`" && tc_green=`tput setaf 2` + test -n "`tput setaf 4 2>/dev/null`" && tc_blue=`tput setaf 4` + test -n "`tput setaf 5 2>/dev/null`" && tc_cyan=`tput setaf 5` + } + fi + } + + require_term_colors=: +} + + +## ----------------- ## +## Function library. ## +## ----------------- ## + +# This section contains a variety of useful functions to call in your +# scripts. Take note of the portable wrappers for features provided by +# some modern shells, which will fall back to slower equivalents on +# less featureful shells. + + +# func_append VAR VALUE +# --------------------- +# Append VALUE onto the existing contents of VAR. + + # We should try to minimise forks, especially on Windows where they are + # unreasonably slow, so skip the feature probes when bash or zsh are + # being used: + if test set = "${BASH_VERSION+set}${ZSH_VERSION+set}"; then + : ${_G_HAVE_ARITH_OP="yes"} + : ${_G_HAVE_XSI_OPS="yes"} + # The += operator was introduced in bash 3.1 + case $BASH_VERSION in + [12].* | 3.0 | 3.0*) ;; + *) + : ${_G_HAVE_PLUSEQ_OP="yes"} + ;; + esac + fi + + # _G_HAVE_PLUSEQ_OP + # Can be empty, in which case the shell is probed, "yes" if += is + # useable or anything else if it does not work. + test -z "$_G_HAVE_PLUSEQ_OP" \ + && (eval 'x=a; x+=" b"; test "a b" = "$x"') 2>/dev/null \ + && _G_HAVE_PLUSEQ_OP=yes + +if test yes = "$_G_HAVE_PLUSEQ_OP" +then + # This is an XSI compatible shell, allowing a faster implementation... + eval 'func_append () + { + $debug_cmd + + eval "$1+=\$2" + }' +else + # ...otherwise fall back to using expr, which is often a shell builtin. + func_append () + { + $debug_cmd + + eval "$1=\$$1\$2" + } +fi + + +# func_append_quoted VAR VALUE +# ---------------------------- +# Quote VALUE and append to the end of shell variable VAR, separated +# by a space. +if test yes = "$_G_HAVE_PLUSEQ_OP"; then + eval 'func_append_quoted () + { + $debug_cmd + + func_quote_for_eval "$2" + eval "$1+=\\ \$func_quote_for_eval_result" + }' +else + func_append_quoted () + { + $debug_cmd + + func_quote_for_eval "$2" + eval "$1=\$$1\\ \$func_quote_for_eval_result" + } +fi + + +# func_append_uniq VAR VALUE +# -------------------------- +# Append unique VALUE onto the existing contents of VAR, assuming +# entries are delimited by the first character of VALUE. For example: +# +# func_append_uniq options " --another-option option-argument" +# +# will only append to $options if " --another-option option-argument " +# is not already present somewhere in $options already (note spaces at +# each end implied by leading space in second argument). +func_append_uniq () +{ + $debug_cmd + + eval _G_current_value='`$ECHO $'$1'`' + _G_delim=`expr "$2" : '\(.\)'` + + case $_G_delim$_G_current_value$_G_delim in + *"$2$_G_delim"*) ;; + *) func_append "$@" ;; + esac +} + + +# func_arith TERM... +# ------------------ +# Set func_arith_result to the result of evaluating TERMs. + test -z "$_G_HAVE_ARITH_OP" \ + && (eval 'test 2 = $(( 1 + 1 ))') 2>/dev/null \ + && _G_HAVE_ARITH_OP=yes + +if test yes = "$_G_HAVE_ARITH_OP"; then + eval 'func_arith () + { + $debug_cmd + + func_arith_result=$(( $* )) + }' +else + func_arith () + { + $debug_cmd + + func_arith_result=`expr "$@"` + } +fi + + +# func_basename FILE +# ------------------ +# Set func_basename_result to FILE with everything up to and including +# the last / stripped. +if test yes = "$_G_HAVE_XSI_OPS"; then + # If this shell supports suffix pattern removal, then use it to avoid + # forking. Hide the definitions single quotes in case the shell chokes + # on unsupported syntax... + _b='func_basename_result=${1##*/}' + _d='case $1 in + */*) func_dirname_result=${1%/*}$2 ;; + * ) func_dirname_result=$3 ;; + esac' + +else + # ...otherwise fall back to using sed. + _b='func_basename_result=`$ECHO "$1" |$SED "$sed_basename"`' + _d='func_dirname_result=`$ECHO "$1" |$SED "$sed_dirname"` + if test "X$func_dirname_result" = "X$1"; then + func_dirname_result=$3 + else + func_append func_dirname_result "$2" + fi' +fi + +eval 'func_basename () +{ + $debug_cmd + + '"$_b"' +}' + + +# func_dirname FILE APPEND NONDIR_REPLACEMENT +# ------------------------------------------- +# Compute the dirname of FILE. If nonempty, add APPEND to the result, +# otherwise set result to NONDIR_REPLACEMENT. +eval 'func_dirname () +{ + $debug_cmd + + '"$_d"' +}' + + +# func_dirname_and_basename FILE APPEND NONDIR_REPLACEMENT +# -------------------------------------------------------- +# Perform func_basename and func_dirname in a single function +# call: +# dirname: Compute the dirname of FILE. If nonempty, +# add APPEND to the result, otherwise set result +# to NONDIR_REPLACEMENT. +# value returned in "$func_dirname_result" +# basename: Compute filename of FILE. +# value retuned in "$func_basename_result" +# For efficiency, we do not delegate to the functions above but instead +# duplicate the functionality here. +eval 'func_dirname_and_basename () +{ + $debug_cmd + + '"$_b"' + '"$_d"' +}' + + +# func_echo ARG... +# ---------------- +# Echo program name prefixed message. +func_echo () +{ + $debug_cmd + + _G_message=$* + + func_echo_IFS=$IFS + IFS=$nl + for _G_line in $_G_message; do + IFS=$func_echo_IFS + $ECHO "$progname: $_G_line" + done + IFS=$func_echo_IFS +} + + +# func_echo_all ARG... +# -------------------- +# Invoke $ECHO with all args, space-separated. +func_echo_all () +{ + $ECHO "$*" +} + + +# func_echo_infix_1 INFIX ARG... +# ------------------------------ +# Echo program name, followed by INFIX on the first line, with any +# additional lines not showing INFIX. +func_echo_infix_1 () +{ + $debug_cmd + + $require_term_colors + + _G_infix=$1; shift + _G_indent=$_G_infix + _G_prefix="$progname: $_G_infix: " + _G_message=$* + + # Strip color escape sequences before counting printable length + for _G_tc in "$tc_reset" "$tc_bold" "$tc_standout" "$tc_red" "$tc_green" "$tc_blue" "$tc_cyan" + do + test -n "$_G_tc" && { + _G_esc_tc=`$ECHO "$_G_tc" | $SED "$sed_make_literal_regex"` + _G_indent=`$ECHO "$_G_indent" | $SED "s|$_G_esc_tc||g"` + } + done + _G_indent="$progname: "`echo "$_G_indent" | $SED 's|.| |g'`" " ## exclude from sc_prohibit_nested_quotes + + func_echo_infix_1_IFS=$IFS + IFS=$nl + for _G_line in $_G_message; do + IFS=$func_echo_infix_1_IFS + $ECHO "$_G_prefix$tc_bold$_G_line$tc_reset" >&2 + _G_prefix=$_G_indent + done + IFS=$func_echo_infix_1_IFS +} + + +# func_error ARG... +# ----------------- +# Echo program name prefixed message to standard error. +func_error () +{ + $debug_cmd + + $require_term_colors + + func_echo_infix_1 " $tc_standout${tc_red}error$tc_reset" "$*" >&2 +} + + +# func_fatal_error ARG... +# ----------------------- +# Echo program name prefixed message to standard error, and exit. +func_fatal_error () +{ + $debug_cmd + + func_error "$*" + exit $EXIT_FAILURE +} + + +# func_grep EXPRESSION FILENAME +# ----------------------------- +# Check whether EXPRESSION matches any line of FILENAME, without output. +func_grep () +{ + $debug_cmd + + $GREP "$1" "$2" >/dev/null 2>&1 +} + + +# func_len STRING +# --------------- +# Set func_len_result to the length of STRING. STRING may not +# start with a hyphen. + test -z "$_G_HAVE_XSI_OPS" \ + && (eval 'x=a/b/c; + test 5aa/bb/cc = "${#x}${x%%/*}${x%/*}${x#*/}${x##*/}"') 2>/dev/null \ + && _G_HAVE_XSI_OPS=yes + +if test yes = "$_G_HAVE_XSI_OPS"; then + eval 'func_len () + { + $debug_cmd + + func_len_result=${#1} + }' +else + func_len () + { + $debug_cmd + + func_len_result=`expr "$1" : ".*" 2>/dev/null || echo $max_cmd_len` + } +fi + + +# func_mkdir_p DIRECTORY-PATH +# --------------------------- +# Make sure the entire path to DIRECTORY-PATH is available. +func_mkdir_p () +{ + $debug_cmd + + _G_directory_path=$1 + _G_dir_list= + + if test -n "$_G_directory_path" && test : != "$opt_dry_run"; then + + # Protect directory names starting with '-' + case $_G_directory_path in + -*) _G_directory_path=./$_G_directory_path ;; + esac + + # While some portion of DIR does not yet exist... + while test ! -d "$_G_directory_path"; do + # ...make a list in topmost first order. Use a colon delimited + # list incase some portion of path contains whitespace. + _G_dir_list=$_G_directory_path:$_G_dir_list + + # If the last portion added has no slash in it, the list is done + case $_G_directory_path in */*) ;; *) break ;; esac + + # ...otherwise throw away the child directory and loop + _G_directory_path=`$ECHO "$_G_directory_path" | $SED -e "$sed_dirname"` + done + _G_dir_list=`$ECHO "$_G_dir_list" | $SED 's|:*$||'` + + func_mkdir_p_IFS=$IFS; IFS=: + for _G_dir in $_G_dir_list; do + IFS=$func_mkdir_p_IFS + # mkdir can fail with a 'File exist' error if two processes + # try to create one of the directories concurrently. Don't + # stop in that case! + $MKDIR "$_G_dir" 2>/dev/null || : + done + IFS=$func_mkdir_p_IFS + + # Bail out if we (or some other process) failed to create a directory. + test -d "$_G_directory_path" || \ + func_fatal_error "Failed to create '$1'" + fi +} + + +# func_mktempdir [BASENAME] +# ------------------------- +# Make a temporary directory that won't clash with other running +# libtool processes, and avoids race conditions if possible. If +# given, BASENAME is the basename for that directory. +func_mktempdir () +{ + $debug_cmd + + _G_template=${TMPDIR-/tmp}/${1-$progname} + + if test : = "$opt_dry_run"; then + # Return a directory name, but don't create it in dry-run mode + _G_tmpdir=$_G_template-$$ + else + + # If mktemp works, use that first and foremost + _G_tmpdir=`mktemp -d "$_G_template-XXXXXXXX" 2>/dev/null` + + if test ! -d "$_G_tmpdir"; then + # Failing that, at least try and use $RANDOM to avoid a race + _G_tmpdir=$_G_template-${RANDOM-0}$$ + + func_mktempdir_umask=`umask` + umask 0077 + $MKDIR "$_G_tmpdir" + umask $func_mktempdir_umask + fi + + # If we're not in dry-run mode, bomb out on failure + test -d "$_G_tmpdir" || \ + func_fatal_error "cannot create temporary directory '$_G_tmpdir'" + fi + + $ECHO "$_G_tmpdir" +} + + +# func_normal_abspath PATH +# ------------------------ +# Remove doubled-up and trailing slashes, "." path components, +# and cancel out any ".." path components in PATH after making +# it an absolute path. +func_normal_abspath () +{ + $debug_cmd + + # These SED scripts presuppose an absolute path with a trailing slash. + _G_pathcar='s|^/\([^/]*\).*$|\1|' + _G_pathcdr='s|^/[^/]*||' + _G_removedotparts=':dotsl + s|/\./|/|g + t dotsl + s|/\.$|/|' + _G_collapseslashes='s|/\{1,\}|/|g' + _G_finalslash='s|/*$|/|' + + # Start from root dir and reassemble the path. + func_normal_abspath_result= + func_normal_abspath_tpath=$1 + func_normal_abspath_altnamespace= + case $func_normal_abspath_tpath in + "") + # Empty path, that just means $cwd. + func_stripname '' '/' "`pwd`" + func_normal_abspath_result=$func_stripname_result + return + ;; + # The next three entries are used to spot a run of precisely + # two leading slashes without using negated character classes; + # we take advantage of case's first-match behaviour. + ///*) + # Unusual form of absolute path, do nothing. + ;; + //*) + # Not necessarily an ordinary path; POSIX reserves leading '//' + # and for example Cygwin uses it to access remote file shares + # over CIFS/SMB, so we conserve a leading double slash if found. + func_normal_abspath_altnamespace=/ + ;; + /*) + # Absolute path, do nothing. + ;; + *) + # Relative path, prepend $cwd. + func_normal_abspath_tpath=`pwd`/$func_normal_abspath_tpath + ;; + esac + + # Cancel out all the simple stuff to save iterations. We also want + # the path to end with a slash for ease of parsing, so make sure + # there is one (and only one) here. + func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \ + -e "$_G_removedotparts" -e "$_G_collapseslashes" -e "$_G_finalslash"` + while :; do + # Processed it all yet? + if test / = "$func_normal_abspath_tpath"; then + # If we ascended to the root using ".." the result may be empty now. + if test -z "$func_normal_abspath_result"; then + func_normal_abspath_result=/ + fi + break + fi + func_normal_abspath_tcomponent=`$ECHO "$func_normal_abspath_tpath" | $SED \ + -e "$_G_pathcar"` + func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \ + -e "$_G_pathcdr"` + # Figure out what to do with it + case $func_normal_abspath_tcomponent in + "") + # Trailing empty path component, ignore it. + ;; + ..) + # Parent dir; strip last assembled component from result. + func_dirname "$func_normal_abspath_result" + func_normal_abspath_result=$func_dirname_result + ;; + *) + # Actual path component, append it. + func_append func_normal_abspath_result "/$func_normal_abspath_tcomponent" + ;; + esac + done + # Restore leading double-slash if one was found on entry. + func_normal_abspath_result=$func_normal_abspath_altnamespace$func_normal_abspath_result +} + + +# func_notquiet ARG... +# -------------------- +# Echo program name prefixed message only when not in quiet mode. +func_notquiet () +{ + $debug_cmd + + $opt_quiet || func_echo ${1+"$@"} + + # A bug in bash halts the script if the last line of a function + # fails when set -e is in force, so we need another command to + # work around that: + : +} + + +# func_relative_path SRCDIR DSTDIR +# -------------------------------- +# Set func_relative_path_result to the relative path from SRCDIR to DSTDIR. +func_relative_path () +{ + $debug_cmd + + func_relative_path_result= + func_normal_abspath "$1" + func_relative_path_tlibdir=$func_normal_abspath_result + func_normal_abspath "$2" + func_relative_path_tbindir=$func_normal_abspath_result + + # Ascend the tree starting from libdir + while :; do + # check if we have found a prefix of bindir + case $func_relative_path_tbindir in + $func_relative_path_tlibdir) + # found an exact match + func_relative_path_tcancelled= + break + ;; + $func_relative_path_tlibdir*) + # found a matching prefix + func_stripname "$func_relative_path_tlibdir" '' "$func_relative_path_tbindir" + func_relative_path_tcancelled=$func_stripname_result + if test -z "$func_relative_path_result"; then + func_relative_path_result=. + fi + break + ;; + *) + func_dirname $func_relative_path_tlibdir + func_relative_path_tlibdir=$func_dirname_result + if test -z "$func_relative_path_tlibdir"; then + # Have to descend all the way to the root! + func_relative_path_result=../$func_relative_path_result + func_relative_path_tcancelled=$func_relative_path_tbindir + break + fi + func_relative_path_result=../$func_relative_path_result + ;; + esac + done + + # Now calculate path; take care to avoid doubling-up slashes. + func_stripname '' '/' "$func_relative_path_result" + func_relative_path_result=$func_stripname_result + func_stripname '/' '/' "$func_relative_path_tcancelled" + if test -n "$func_stripname_result"; then + func_append func_relative_path_result "/$func_stripname_result" + fi + + # Normalisation. If bindir is libdir, return '.' else relative path. + if test -n "$func_relative_path_result"; then + func_stripname './' '' "$func_relative_path_result" + func_relative_path_result=$func_stripname_result + fi + + test -n "$func_relative_path_result" || func_relative_path_result=. + + : +} + + +# func_quote_for_eval ARG... +# -------------------------- +# Aesthetically quote ARGs to be evaled later. +# This function returns two values: +# i) func_quote_for_eval_result +# double-quoted, suitable for a subsequent eval +# ii) func_quote_for_eval_unquoted_result +# has all characters that are still active within double +# quotes backslashified. +func_quote_for_eval () +{ + $debug_cmd + + func_quote_for_eval_unquoted_result= + func_quote_for_eval_result= + while test 0 -lt $#; do + case $1 in + *[\\\`\"\$]*) + _G_unquoted_arg=`printf '%s\n' "$1" |$SED "$sed_quote_subst"` ;; + *) + _G_unquoted_arg=$1 ;; + esac + if test -n "$func_quote_for_eval_unquoted_result"; then + func_append func_quote_for_eval_unquoted_result " $_G_unquoted_arg" + else + func_append func_quote_for_eval_unquoted_result "$_G_unquoted_arg" + fi + + case $_G_unquoted_arg in + # Double-quote args containing shell metacharacters to delay + # word splitting, command substitution and variable expansion + # for a subsequent eval. + # Many Bourne shells cannot handle close brackets correctly + # in scan sets, so we specify it separately. + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") + _G_quoted_arg=\"$_G_unquoted_arg\" + ;; + *) + _G_quoted_arg=$_G_unquoted_arg + ;; + esac + + if test -n "$func_quote_for_eval_result"; then + func_append func_quote_for_eval_result " $_G_quoted_arg" + else + func_append func_quote_for_eval_result "$_G_quoted_arg" + fi + shift + done +} + + +# func_quote_for_expand ARG +# ------------------------- +# Aesthetically quote ARG to be evaled later; same as above, +# but do not quote variable references. +func_quote_for_expand () +{ + $debug_cmd + + case $1 in + *[\\\`\"]*) + _G_arg=`$ECHO "$1" | $SED \ + -e "$sed_double_quote_subst" -e "$sed_double_backslash"` ;; + *) + _G_arg=$1 ;; + esac + + case $_G_arg in + # Double-quote args containing shell metacharacters to delay + # word splitting and command substitution for a subsequent eval. + # Many Bourne shells cannot handle close brackets correctly + # in scan sets, so we specify it separately. + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") + _G_arg=\"$_G_arg\" + ;; + esac + + func_quote_for_expand_result=$_G_arg +} + + +# func_stripname PREFIX SUFFIX NAME +# --------------------------------- +# strip PREFIX and SUFFIX from NAME, and store in func_stripname_result. +# PREFIX and SUFFIX must not contain globbing or regex special +# characters, hashes, percent signs, but SUFFIX may contain a leading +# dot (in which case that matches only a dot). +if test yes = "$_G_HAVE_XSI_OPS"; then + eval 'func_stripname () + { + $debug_cmd + + # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are + # positional parameters, so assign one to ordinary variable first. + func_stripname_result=$3 + func_stripname_result=${func_stripname_result#"$1"} + func_stripname_result=${func_stripname_result%"$2"} + }' +else + func_stripname () + { + $debug_cmd + + case $2 in + .*) func_stripname_result=`$ECHO "$3" | $SED -e "s%^$1%%" -e "s%\\\\$2\$%%"`;; + *) func_stripname_result=`$ECHO "$3" | $SED -e "s%^$1%%" -e "s%$2\$%%"`;; + esac + } +fi + + +# func_show_eval CMD [FAIL_EXP] +# ----------------------------- +# Unless opt_quiet is true, then output CMD. Then, if opt_dryrun is +# not true, evaluate CMD. If the evaluation of CMD fails, and FAIL_EXP +# is given, then evaluate it. +func_show_eval () +{ + $debug_cmd + + _G_cmd=$1 + _G_fail_exp=${2-':'} + + func_quote_for_expand "$_G_cmd" + eval "func_notquiet $func_quote_for_expand_result" + + $opt_dry_run || { + eval "$_G_cmd" + _G_status=$? + if test 0 -ne "$_G_status"; then + eval "(exit $_G_status); $_G_fail_exp" + fi + } +} + + +# func_show_eval_locale CMD [FAIL_EXP] +# ------------------------------------ +# Unless opt_quiet is true, then output CMD. Then, if opt_dryrun is +# not true, evaluate CMD. If the evaluation of CMD fails, and FAIL_EXP +# is given, then evaluate it. Use the saved locale for evaluation. +func_show_eval_locale () +{ + $debug_cmd + + _G_cmd=$1 + _G_fail_exp=${2-':'} + + $opt_quiet || { + func_quote_for_expand "$_G_cmd" + eval "func_echo $func_quote_for_expand_result" + } + + $opt_dry_run || { + eval "$_G_user_locale + $_G_cmd" + _G_status=$? + eval "$_G_safe_locale" + if test 0 -ne "$_G_status"; then + eval "(exit $_G_status); $_G_fail_exp" + fi + } +} + + +# func_tr_sh +# ---------- +# Turn $1 into a string suitable for a shell variable name. +# Result is stored in $func_tr_sh_result. All characters +# not in the set a-zA-Z0-9_ are replaced with '_'. Further, +# if $1 begins with a digit, a '_' is prepended as well. +func_tr_sh () +{ + $debug_cmd + + case $1 in + [0-9]* | *[!a-zA-Z0-9_]*) + func_tr_sh_result=`$ECHO "$1" | $SED -e 's/^\([0-9]\)/_\1/' -e 's/[^a-zA-Z0-9_]/_/g'` + ;; + * ) + func_tr_sh_result=$1 + ;; + esac +} + + +# func_verbose ARG... +# ------------------- +# Echo program name prefixed message in verbose mode only. +func_verbose () +{ + $debug_cmd + + $opt_verbose && func_echo "$*" + + : +} + + +# func_warn_and_continue ARG... +# ----------------------------- +# Echo program name prefixed warning message to standard error. +func_warn_and_continue () +{ + $debug_cmd + + $require_term_colors + + func_echo_infix_1 "${tc_red}warning$tc_reset" "$*" >&2 +} + + +# func_warning CATEGORY ARG... +# ---------------------------- +# Echo program name prefixed warning message to standard error. Warning +# messages can be filtered according to CATEGORY, where this function +# elides messages where CATEGORY is not listed in the global variable +# 'opt_warning_types'. +func_warning () +{ + $debug_cmd + + # CATEGORY must be in the warning_categories list! + case " $warning_categories " in + *" $1 "*) ;; + *) func_internal_error "invalid warning category '$1'" ;; + esac + + _G_category=$1 + shift + + case " $opt_warning_types " in + *" $_G_category "*) $warning_func ${1+"$@"} ;; + esac +} + + +# func_sort_ver VER1 VER2 +# ----------------------- +# 'sort -V' is not generally available. +# Note this deviates from the version comparison in automake +# in that it treats 1.5 < 1.5.0, and treats 1.4.4a < 1.4-p3a +# but this should suffice as we won't be specifying old +# version formats or redundant trailing .0 in bootstrap.conf. +# If we did want full compatibility then we should probably +# use m4_version_compare from autoconf. +func_sort_ver () +{ + $debug_cmd + + printf '%s\n%s\n' "$1" "$2" \ + | sort -t. -k 1,1n -k 2,2n -k 3,3n -k 4,4n -k 5,5n -k 6,6n -k 7,7n -k 8,8n -k 9,9n +} + +# func_lt_ver PREV CURR +# --------------------- +# Return true if PREV and CURR are in the correct order according to +# func_sort_ver, otherwise false. Use it like this: +# +# func_lt_ver "$prev_ver" "$proposed_ver" || func_fatal_error "..." +func_lt_ver () +{ + $debug_cmd + + test "x$1" = x`func_sort_ver "$1" "$2" | $SED 1q` +} + + +# Local variables: +# mode: shell-script +# sh-indentation: 2 +# eval: (add-hook 'before-save-hook 'time-stamp) +# time-stamp-pattern: "10/scriptversion=%:y-%02m-%02d.%02H; # UTC" +# time-stamp-time-zone: "UTC" +# End: +#! /bin/sh + +# Set a version string for this script. +scriptversion=2014-01-07.03; # UTC + +# A portable, pluggable option parser for Bourne shell. +# Written by Gary V. Vaughan, 2010 + +# Copyright (C) 2010-2015 Free Software Foundation, Inc. +# This is free software; see the source for copying conditions. There is NO +# warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +# Please report bugs or propose patches to gary@gnu.org. + + +## ------ ## +## Usage. ## +## ------ ## + +# This file is a library for parsing options in your shell scripts along +# with assorted other useful supporting features that you can make use +# of too. +# +# For the simplest scripts you might need only: +# +# #!/bin/sh +# . relative/path/to/funclib.sh +# . relative/path/to/options-parser +# scriptversion=1.0 +# func_options ${1+"$@"} +# eval set dummy "$func_options_result"; shift +# ...rest of your script... +# +# In order for the '--version' option to work, you will need to have a +# suitably formatted comment like the one at the top of this file +# starting with '# Written by ' and ending with '# warranty; '. +# +# For '-h' and '--help' to work, you will also need a one line +# description of your script's purpose in a comment directly above the +# '# Written by ' line, like the one at the top of this file. +# +# The default options also support '--debug', which will turn on shell +# execution tracing (see the comment above debug_cmd below for another +# use), and '--verbose' and the func_verbose function to allow your script +# to display verbose messages only when your user has specified +# '--verbose'. +# +# After sourcing this file, you can plug processing for additional +# options by amending the variables from the 'Configuration' section +# below, and following the instructions in the 'Option parsing' +# section further down. + +## -------------- ## +## Configuration. ## +## -------------- ## + +# You should override these variables in your script after sourcing this +# file so that they reflect the customisations you have added to the +# option parser. + +# The usage line for option parsing errors and the start of '-h' and +# '--help' output messages. You can embed shell variables for delayed +# expansion at the time the message is displayed, but you will need to +# quote other shell meta-characters carefully to prevent them being +# expanded when the contents are evaled. +usage='$progpath [OPTION]...' + +# Short help message in response to '-h' and '--help'. Add to this or +# override it after sourcing this library to reflect the full set of +# options your script accepts. +usage_message="\ + --debug enable verbose shell tracing + -W, --warnings=CATEGORY + report the warnings falling in CATEGORY [all] + -v, --verbose verbosely report processing + --version print version information and exit + -h, --help print short or long help message and exit +" + +# Additional text appended to 'usage_message' in response to '--help'. +long_help_message=" +Warning categories include: + 'all' show all warnings + 'none' turn off all the warnings + 'error' warnings are treated as fatal errors" + +# Help message printed before fatal option parsing errors. +fatal_help="Try '\$progname --help' for more information." + + + +## ------------------------- ## +## Hook function management. ## +## ------------------------- ## + +# This section contains functions for adding, removing, and running hooks +# to the main code. A hook is just a named list of of function, that can +# be run in order later on. + +# func_hookable FUNC_NAME +# ----------------------- +# Declare that FUNC_NAME will run hooks added with +# 'func_add_hook FUNC_NAME ...'. +func_hookable () +{ + $debug_cmd + + func_append hookable_fns " $1" +} + + +# func_add_hook FUNC_NAME HOOK_FUNC +# --------------------------------- +# Request that FUNC_NAME call HOOK_FUNC before it returns. FUNC_NAME must +# first have been declared "hookable" by a call to 'func_hookable'. +func_add_hook () +{ + $debug_cmd + + case " $hookable_fns " in + *" $1 "*) ;; + *) func_fatal_error "'$1' does not accept hook functions." ;; + esac + + eval func_append ${1}_hooks '" $2"' +} + + +# func_remove_hook FUNC_NAME HOOK_FUNC +# ------------------------------------ +# Remove HOOK_FUNC from the list of functions called by FUNC_NAME. +func_remove_hook () +{ + $debug_cmd + + eval ${1}_hooks='`$ECHO "\$'$1'_hooks" |$SED "s| '$2'||"`' +} + + +# func_run_hooks FUNC_NAME [ARG]... +# --------------------------------- +# Run all hook functions registered to FUNC_NAME. +# It is assumed that the list of hook functions contains nothing more +# than a whitespace-delimited list of legal shell function names, and +# no effort is wasted trying to catch shell meta-characters or preserve +# whitespace. +func_run_hooks () +{ + $debug_cmd + + case " $hookable_fns " in + *" $1 "*) ;; + *) func_fatal_error "'$1' does not support hook funcions.n" ;; + esac + + eval _G_hook_fns=\$$1_hooks; shift + + for _G_hook in $_G_hook_fns; do + eval $_G_hook '"$@"' + + # store returned options list back into positional + # parameters for next 'cmd' execution. + eval _G_hook_result=\$${_G_hook}_result + eval set dummy "$_G_hook_result"; shift + done + + func_quote_for_eval ${1+"$@"} + func_run_hooks_result=$func_quote_for_eval_result +} + + + +## --------------- ## +## Option parsing. ## +## --------------- ## + +# In order to add your own option parsing hooks, you must accept the +# full positional parameter list in your hook function, remove any +# options that you action, and then pass back the remaining unprocessed +# options in '_result', escaped suitably for +# 'eval'. Like this: +# +# my_options_prep () +# { +# $debug_cmd +# +# # Extend the existing usage message. +# usage_message=$usage_message' +# -s, --silent don'\''t print informational messages +# ' +# +# func_quote_for_eval ${1+"$@"} +# my_options_prep_result=$func_quote_for_eval_result +# } +# func_add_hook func_options_prep my_options_prep +# +# +# my_silent_option () +# { +# $debug_cmd +# +# # Note that for efficiency, we parse as many options as we can +# # recognise in a loop before passing the remainder back to the +# # caller on the first unrecognised argument we encounter. +# while test $# -gt 0; do +# opt=$1; shift +# case $opt in +# --silent|-s) opt_silent=: ;; +# # Separate non-argument short options: +# -s*) func_split_short_opt "$_G_opt" +# set dummy "$func_split_short_opt_name" \ +# "-$func_split_short_opt_arg" ${1+"$@"} +# shift +# ;; +# *) set dummy "$_G_opt" "$*"; shift; break ;; +# esac +# done +# +# func_quote_for_eval ${1+"$@"} +# my_silent_option_result=$func_quote_for_eval_result +# } +# func_add_hook func_parse_options my_silent_option +# +# +# my_option_validation () +# { +# $debug_cmd +# +# $opt_silent && $opt_verbose && func_fatal_help "\ +# '--silent' and '--verbose' options are mutually exclusive." +# +# func_quote_for_eval ${1+"$@"} +# my_option_validation_result=$func_quote_for_eval_result +# } +# func_add_hook func_validate_options my_option_validation +# +# You'll alse need to manually amend $usage_message to reflect the extra +# options you parse. It's preferable to append if you can, so that +# multiple option parsing hooks can be added safely. + + +# func_options [ARG]... +# --------------------- +# All the functions called inside func_options are hookable. See the +# individual implementations for details. +func_hookable func_options +func_options () +{ + $debug_cmd + + func_options_prep ${1+"$@"} + eval func_parse_options \ + ${func_options_prep_result+"$func_options_prep_result"} + eval func_validate_options \ + ${func_parse_options_result+"$func_parse_options_result"} + + eval func_run_hooks func_options \ + ${func_validate_options_result+"$func_validate_options_result"} + + # save modified positional parameters for caller + func_options_result=$func_run_hooks_result +} + + +# func_options_prep [ARG]... +# -------------------------- +# All initialisations required before starting the option parse loop. +# Note that when calling hook functions, we pass through the list of +# positional parameters. If a hook function modifies that list, and +# needs to propogate that back to rest of this script, then the complete +# modified list must be put in 'func_run_hooks_result' before +# returning. +func_hookable func_options_prep +func_options_prep () +{ + $debug_cmd + + # Option defaults: + opt_verbose=false + opt_warning_types= + + func_run_hooks func_options_prep ${1+"$@"} + + # save modified positional parameters for caller + func_options_prep_result=$func_run_hooks_result +} + + +# func_parse_options [ARG]... +# --------------------------- +# The main option parsing loop. +func_hookable func_parse_options +func_parse_options () +{ + $debug_cmd + + func_parse_options_result= + + # this just eases exit handling + while test $# -gt 0; do + # Defer to hook functions for initial option parsing, so they + # get priority in the event of reusing an option name. + func_run_hooks func_parse_options ${1+"$@"} + + # Adjust func_parse_options positional parameters to match + eval set dummy "$func_run_hooks_result"; shift + + # Break out of the loop if we already parsed every option. + test $# -gt 0 || break + + _G_opt=$1 + shift + case $_G_opt in + --debug|-x) debug_cmd='set -x' + func_echo "enabling shell trace mode" + $debug_cmd + ;; + + --no-warnings|--no-warning|--no-warn) + set dummy --warnings none ${1+"$@"} + shift + ;; + + --warnings|--warning|-W) + test $# = 0 && func_missing_arg $_G_opt && break + case " $warning_categories $1" in + *" $1 "*) + # trailing space prevents matching last $1 above + func_append_uniq opt_warning_types " $1" + ;; + *all) + opt_warning_types=$warning_categories + ;; + *none) + opt_warning_types=none + warning_func=: + ;; + *error) + opt_warning_types=$warning_categories + warning_func=func_fatal_error + ;; + *) + func_fatal_error \ + "unsupported warning category: '$1'" + ;; + esac + shift + ;; + + --verbose|-v) opt_verbose=: ;; + --version) func_version ;; + -\?|-h) func_usage ;; + --help) func_help ;; + + # Separate optargs to long options (plugins may need this): + --*=*) func_split_equals "$_G_opt" + set dummy "$func_split_equals_lhs" \ + "$func_split_equals_rhs" ${1+"$@"} + shift + ;; + + # Separate optargs to short options: + -W*) + func_split_short_opt "$_G_opt" + set dummy "$func_split_short_opt_name" \ + "$func_split_short_opt_arg" ${1+"$@"} + shift + ;; + + # Separate non-argument short options: + -\?*|-h*|-v*|-x*) + func_split_short_opt "$_G_opt" + set dummy "$func_split_short_opt_name" \ + "-$func_split_short_opt_arg" ${1+"$@"} + shift + ;; + + --) break ;; + -*) func_fatal_help "unrecognised option: '$_G_opt'" ;; + *) set dummy "$_G_opt" ${1+"$@"}; shift; break ;; + esac + done + + # save modified positional parameters for caller + func_quote_for_eval ${1+"$@"} + func_parse_options_result=$func_quote_for_eval_result +} + + +# func_validate_options [ARG]... +# ------------------------------ +# Perform any sanity checks on option settings and/or unconsumed +# arguments. +func_hookable func_validate_options +func_validate_options () +{ + $debug_cmd + + # Display all warnings if -W was not given. + test -n "$opt_warning_types" || opt_warning_types=" $warning_categories" + + func_run_hooks func_validate_options ${1+"$@"} + + # Bail if the options were screwed! + $exit_cmd $EXIT_FAILURE + + # save modified positional parameters for caller + func_validate_options_result=$func_run_hooks_result +} + + + +## ----------------- ## +## Helper functions. ## +## ----------------- ## + +# This section contains the helper functions used by the rest of the +# hookable option parser framework in ascii-betical order. + + +# func_fatal_help ARG... +# ---------------------- +# Echo program name prefixed message to standard error, followed by +# a help hint, and exit. +func_fatal_help () +{ + $debug_cmd + + eval \$ECHO \""Usage: $usage"\" + eval \$ECHO \""$fatal_help"\" + func_error ${1+"$@"} + exit $EXIT_FAILURE +} + + +# func_help +# --------- +# Echo long help message to standard output and exit. +func_help () +{ + $debug_cmd + + func_usage_message + $ECHO "$long_help_message" + exit 0 +} + + +# func_missing_arg ARGNAME +# ------------------------ +# Echo program name prefixed message to standard error and set global +# exit_cmd. +func_missing_arg () +{ + $debug_cmd + + func_error "Missing argument for '$1'." + exit_cmd=exit +} + + +# func_split_equals STRING +# ------------------------ +# Set func_split_equals_lhs and func_split_equals_rhs shell variables after +# splitting STRING at the '=' sign. +test -z "$_G_HAVE_XSI_OPS" \ + && (eval 'x=a/b/c; + test 5aa/bb/cc = "${#x}${x%%/*}${x%/*}${x#*/}${x##*/}"') 2>/dev/null \ + && _G_HAVE_XSI_OPS=yes + +if test yes = "$_G_HAVE_XSI_OPS" +then + # This is an XSI compatible shell, allowing a faster implementation... + eval 'func_split_equals () + { + $debug_cmd + + func_split_equals_lhs=${1%%=*} + func_split_equals_rhs=${1#*=} + test "x$func_split_equals_lhs" = "x$1" \ + && func_split_equals_rhs= + }' +else + # ...otherwise fall back to using expr, which is often a shell builtin. + func_split_equals () + { + $debug_cmd + + func_split_equals_lhs=`expr "x$1" : 'x\([^=]*\)'` + func_split_equals_rhs= + test "x$func_split_equals_lhs" = "x$1" \ + || func_split_equals_rhs=`expr "x$1" : 'x[^=]*=\(.*\)$'` + } +fi #func_split_equals + + +# func_split_short_opt SHORTOPT +# ----------------------------- +# Set func_split_short_opt_name and func_split_short_opt_arg shell +# variables after splitting SHORTOPT after the 2nd character. +if test yes = "$_G_HAVE_XSI_OPS" +then + # This is an XSI compatible shell, allowing a faster implementation... + eval 'func_split_short_opt () + { + $debug_cmd + + func_split_short_opt_arg=${1#??} + func_split_short_opt_name=${1%"$func_split_short_opt_arg"} + }' +else + # ...otherwise fall back to using expr, which is often a shell builtin. + func_split_short_opt () + { + $debug_cmd + + func_split_short_opt_name=`expr "x$1" : 'x-\(.\)'` + func_split_short_opt_arg=`expr "x$1" : 'x-.\(.*\)$'` + } +fi #func_split_short_opt + + +# func_usage +# ---------- +# Echo short help message to standard output and exit. +func_usage () +{ + $debug_cmd + + func_usage_message + $ECHO "Run '$progname --help |${PAGER-more}' for full usage" + exit 0 +} + + +# func_usage_message +# ------------------ +# Echo short help message to standard output. +func_usage_message () +{ + $debug_cmd + + eval \$ECHO \""Usage: $usage"\" + echo + $SED -n 's|^# || + /^Written by/{ + x;p;x + } + h + /^Written by/q' < "$progpath" + echo + eval \$ECHO \""$usage_message"\" +} + + +# func_version +# ------------ +# Echo version message to standard output and exit. +func_version () +{ + $debug_cmd + + printf '%s\n' "$progname $scriptversion" + $SED -n ' + /(C)/!b go + :more + /\./!{ + N + s|\n# | | + b more + } + :go + /^# Written by /,/# warranty; / { + s|^# || + s|^# *$|| + s|\((C)\)[ 0-9,-]*[ ,-]\([1-9][0-9]* \)|\1 \2| + p + } + /^# Written by / { + s|^# || + p + } + /^warranty; /q' < "$progpath" + + exit $? +} + + +# Local variables: +# mode: shell-script +# sh-indentation: 2 +# eval: (add-hook 'before-save-hook 'time-stamp) +# time-stamp-pattern: "10/scriptversion=%:y-%02m-%02d.%02H; # UTC" +# time-stamp-time-zone: "UTC" +# End: + +# Set a version string. +scriptversion='(GNU libtool) 2.4.6' + + +# func_echo ARG... +# ---------------- +# Libtool also displays the current mode in messages, so override +# funclib.sh func_echo with this custom definition. +func_echo () +{ + $debug_cmd + + _G_message=$* + + func_echo_IFS=$IFS + IFS=$nl + for _G_line in $_G_message; do + IFS=$func_echo_IFS + $ECHO "$progname${opt_mode+: $opt_mode}: $_G_line" + done + IFS=$func_echo_IFS +} + + +# func_warning ARG... +# ------------------- +# Libtool warnings are not categorized, so override funclib.sh +# func_warning with this simpler definition. +func_warning () +{ + $debug_cmd + + $warning_func ${1+"$@"} +} + + +## ---------------- ## +## Options parsing. ## +## ---------------- ## + +# Hook in the functions to make sure our own options are parsed during +# the option parsing loop. + +usage='$progpath [OPTION]... [MODE-ARG]...' + +# Short help message in response to '-h'. +usage_message="Options: + --config show all configuration variables + --debug enable verbose shell tracing + -n, --dry-run display commands without modifying any files + --features display basic configuration information and exit + --mode=MODE use operation mode MODE + --no-warnings equivalent to '-Wnone' + --preserve-dup-deps don't remove duplicate dependency libraries + --quiet, --silent don't print informational messages + --tag=TAG use configuration variables from tag TAG + -v, --verbose print more informational messages than default + --version print version information + -W, --warnings=CATEGORY report the warnings falling in CATEGORY [all] + -h, --help, --help-all print short, long, or detailed help message +" + +# Additional text appended to 'usage_message' in response to '--help'. +func_help () +{ + $debug_cmd + + func_usage_message + $ECHO "$long_help_message + +MODE must be one of the following: + + clean remove files from the build directory + compile compile a source file into a libtool object + execute automatically set library path, then run a program + finish complete the installation of libtool libraries + install install libraries or executables + link create a library or an executable + uninstall remove libraries from an installed directory + +MODE-ARGS vary depending on the MODE. When passed as first option, +'--mode=MODE' may be abbreviated as 'MODE' or a unique abbreviation of that. +Try '$progname --help --mode=MODE' for a more detailed description of MODE. + +When reporting a bug, please describe a test case to reproduce it and +include the following information: + + host-triplet: $host + shell: $SHELL + compiler: $LTCC + compiler flags: $LTCFLAGS + linker: $LD (gnu? $with_gnu_ld) + version: $progname (GNU libtool) 2.4.6 + automake: `($AUTOMAKE --version) 2>/dev/null |$SED 1q` + autoconf: `($AUTOCONF --version) 2>/dev/null |$SED 1q` + +Report bugs to . +GNU libtool home page: . +General help using GNU software: ." + exit 0 +} + + +# func_lo2o OBJECT-NAME +# --------------------- +# Transform OBJECT-NAME from a '.lo' suffix to the platform specific +# object suffix. + +lo2o=s/\\.lo\$/.$objext/ +o2lo=s/\\.$objext\$/.lo/ + +if test yes = "$_G_HAVE_XSI_OPS"; then + eval 'func_lo2o () + { + case $1 in + *.lo) func_lo2o_result=${1%.lo}.$objext ;; + * ) func_lo2o_result=$1 ;; + esac + }' + + # func_xform LIBOBJ-OR-SOURCE + # --------------------------- + # Transform LIBOBJ-OR-SOURCE from a '.o' or '.c' (or otherwise) + # suffix to a '.lo' libtool-object suffix. + eval 'func_xform () + { + func_xform_result=${1%.*}.lo + }' +else + # ...otherwise fall back to using sed. + func_lo2o () + { + func_lo2o_result=`$ECHO "$1" | $SED "$lo2o"` + } + + func_xform () + { + func_xform_result=`$ECHO "$1" | $SED 's|\.[^.]*$|.lo|'` + } +fi + + +# func_fatal_configuration ARG... +# ------------------------------- +# Echo program name prefixed message to standard error, followed by +# a configuration failure hint, and exit. +func_fatal_configuration () +{ + func__fatal_error ${1+"$@"} \ + "See the $PACKAGE documentation for more information." \ + "Fatal configuration error." +} + + +# func_config +# ----------- +# Display the configuration for all the tags in this script. +func_config () +{ + re_begincf='^# ### BEGIN LIBTOOL' + re_endcf='^# ### END LIBTOOL' + + # Default configuration. + $SED "1,/$re_begincf CONFIG/d;/$re_endcf CONFIG/,\$d" < "$progpath" + + # Now print the configurations for the tags. + for tagname in $taglist; do + $SED -n "/$re_begincf TAG CONFIG: $tagname\$/,/$re_endcf TAG CONFIG: $tagname\$/p" < "$progpath" + done + + exit $? +} + + +# func_features +# ------------- +# Display the features supported by this script. +func_features () +{ + echo "host: $host" + if test yes = "$build_libtool_libs"; then + echo "enable shared libraries" + else + echo "disable shared libraries" + fi + if test yes = "$build_old_libs"; then + echo "enable static libraries" + else + echo "disable static libraries" + fi + + exit $? +} + + +# func_enable_tag TAGNAME +# ----------------------- +# Verify that TAGNAME is valid, and either flag an error and exit, or +# enable the TAGNAME tag. We also add TAGNAME to the global $taglist +# variable here. +func_enable_tag () +{ + # Global variable: + tagname=$1 + + re_begincf="^# ### BEGIN LIBTOOL TAG CONFIG: $tagname\$" + re_endcf="^# ### END LIBTOOL TAG CONFIG: $tagname\$" + sed_extractcf=/$re_begincf/,/$re_endcf/p + + # Validate tagname. + case $tagname in + *[!-_A-Za-z0-9,/]*) + func_fatal_error "invalid tag name: $tagname" + ;; + esac + + # Don't test for the "default" C tag, as we know it's + # there but not specially marked. + case $tagname in + CC) ;; + *) + if $GREP "$re_begincf" "$progpath" >/dev/null 2>&1; then + taglist="$taglist $tagname" + + # Evaluate the configuration. Be careful to quote the path + # and the sed script, to avoid splitting on whitespace, but + # also don't use non-portable quotes within backquotes within + # quotes we have to do it in 2 steps: + extractedcf=`$SED -n -e "$sed_extractcf" < "$progpath"` + eval "$extractedcf" + else + func_error "ignoring unknown tag $tagname" + fi + ;; + esac +} + + +# func_check_version_match +# ------------------------ +# Ensure that we are using m4 macros, and libtool script from the same +# release of libtool. +func_check_version_match () +{ + if test "$package_revision" != "$macro_revision"; then + if test "$VERSION" != "$macro_version"; then + if test -z "$macro_version"; then + cat >&2 <<_LT_EOF +$progname: Version mismatch error. This is $PACKAGE $VERSION, but the +$progname: definition of this LT_INIT comes from an older release. +$progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION +$progname: and run autoconf again. +_LT_EOF + else + cat >&2 <<_LT_EOF +$progname: Version mismatch error. This is $PACKAGE $VERSION, but the +$progname: definition of this LT_INIT comes from $PACKAGE $macro_version. +$progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION +$progname: and run autoconf again. +_LT_EOF + fi + else + cat >&2 <<_LT_EOF +$progname: Version mismatch error. This is $PACKAGE $VERSION, revision $package_revision, +$progname: but the definition of this LT_INIT comes from revision $macro_revision. +$progname: You should recreate aclocal.m4 with macros from revision $package_revision +$progname: of $PACKAGE $VERSION and run autoconf again. +_LT_EOF + fi + + exit $EXIT_MISMATCH + fi +} + + +# libtool_options_prep [ARG]... +# ----------------------------- +# Preparation for options parsed by libtool. +libtool_options_prep () +{ + $debug_mode + + # Option defaults: + opt_config=false + opt_dlopen= + opt_dry_run=false + opt_help=false + opt_mode= + opt_preserve_dup_deps=false + opt_quiet=false + + nonopt= + preserve_args= + + # Shorthand for --mode=foo, only valid as the first argument + case $1 in + clean|clea|cle|cl) + shift; set dummy --mode clean ${1+"$@"}; shift + ;; + compile|compil|compi|comp|com|co|c) + shift; set dummy --mode compile ${1+"$@"}; shift + ;; + execute|execut|execu|exec|exe|ex|e) + shift; set dummy --mode execute ${1+"$@"}; shift + ;; + finish|finis|fini|fin|fi|f) + shift; set dummy --mode finish ${1+"$@"}; shift + ;; + install|instal|insta|inst|ins|in|i) + shift; set dummy --mode install ${1+"$@"}; shift + ;; + link|lin|li|l) + shift; set dummy --mode link ${1+"$@"}; shift + ;; + uninstall|uninstal|uninsta|uninst|unins|unin|uni|un|u) + shift; set dummy --mode uninstall ${1+"$@"}; shift + ;; + esac + + # Pass back the list of options. + func_quote_for_eval ${1+"$@"} + libtool_options_prep_result=$func_quote_for_eval_result +} +func_add_hook func_options_prep libtool_options_prep + + +# libtool_parse_options [ARG]... +# --------------------------------- +# Provide handling for libtool specific options. +libtool_parse_options () +{ + $debug_cmd + + # Perform our own loop to consume as many options as possible in + # each iteration. + while test $# -gt 0; do + _G_opt=$1 + shift + case $_G_opt in + --dry-run|--dryrun|-n) + opt_dry_run=: + ;; + + --config) func_config ;; + + --dlopen|-dlopen) + opt_dlopen="${opt_dlopen+$opt_dlopen +}$1" + shift + ;; + + --preserve-dup-deps) + opt_preserve_dup_deps=: ;; + + --features) func_features ;; + + --finish) set dummy --mode finish ${1+"$@"}; shift ;; + + --help) opt_help=: ;; + + --help-all) opt_help=': help-all' ;; + + --mode) test $# = 0 && func_missing_arg $_G_opt && break + opt_mode=$1 + case $1 in + # Valid mode arguments: + clean|compile|execute|finish|install|link|relink|uninstall) ;; + + # Catch anything else as an error + *) func_error "invalid argument for $_G_opt" + exit_cmd=exit + break + ;; + esac + shift + ;; + + --no-silent|--no-quiet) + opt_quiet=false + func_append preserve_args " $_G_opt" + ;; + + --no-warnings|--no-warning|--no-warn) + opt_warning=false + func_append preserve_args " $_G_opt" + ;; + + --no-verbose) + opt_verbose=false + func_append preserve_args " $_G_opt" + ;; + + --silent|--quiet) + opt_quiet=: + opt_verbose=false + func_append preserve_args " $_G_opt" + ;; + + --tag) test $# = 0 && func_missing_arg $_G_opt && break + opt_tag=$1 + func_append preserve_args " $_G_opt $1" + func_enable_tag "$1" + shift + ;; + + --verbose|-v) opt_quiet=false + opt_verbose=: + func_append preserve_args " $_G_opt" + ;; + + # An option not handled by this hook function: + *) set dummy "$_G_opt" ${1+"$@"}; shift; break ;; + esac + done + + + # save modified positional parameters for caller + func_quote_for_eval ${1+"$@"} + libtool_parse_options_result=$func_quote_for_eval_result +} +func_add_hook func_parse_options libtool_parse_options + + + +# libtool_validate_options [ARG]... +# --------------------------------- +# Perform any sanity checks on option settings and/or unconsumed +# arguments. +libtool_validate_options () +{ + # save first non-option argument + if test 0 -lt $#; then + nonopt=$1 + shift + fi + + # preserve --debug + test : = "$debug_cmd" || func_append preserve_args " --debug" + + case $host in + # Solaris2 added to fix http://debbugs.gnu.org/cgi/bugreport.cgi?bug=16452 + # see also: http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59788 + *cygwin* | *mingw* | *pw32* | *cegcc* | *solaris2* | *os2*) + # don't eliminate duplications in $postdeps and $predeps + opt_duplicate_compiler_generated_deps=: + ;; + *) + opt_duplicate_compiler_generated_deps=$opt_preserve_dup_deps + ;; + esac + + $opt_help || { + # Sanity checks first: + func_check_version_match + + test yes != "$build_libtool_libs" \ + && test yes != "$build_old_libs" \ + && func_fatal_configuration "not configured to build any kind of library" + + # Darwin sucks + eval std_shrext=\"$shrext_cmds\" + + # Only execute mode is allowed to have -dlopen flags. + if test -n "$opt_dlopen" && test execute != "$opt_mode"; then + func_error "unrecognized option '-dlopen'" + $ECHO "$help" 1>&2 + exit $EXIT_FAILURE + fi + + # Change the help message to a mode-specific one. + generic_help=$help + help="Try '$progname --help --mode=$opt_mode' for more information." + } + + # Pass back the unparsed argument list + func_quote_for_eval ${1+"$@"} + libtool_validate_options_result=$func_quote_for_eval_result +} +func_add_hook func_validate_options libtool_validate_options + + +# Process options as early as possible so that --help and --version +# can return quickly. +func_options ${1+"$@"} +eval set dummy "$func_options_result"; shift + + + +## ----------- ## +## Main. ## +## ----------- ## + +magic='%%%MAGIC variable%%%' +magic_exe='%%%MAGIC EXE variable%%%' + +# Global variables. +extracted_archives= +extracted_serial=0 + +# If this variable is set in any of the actions, the command in it +# will be execed at the end. This prevents here-documents from being +# left over by shells. +exec_cmd= + + +# A function that is used when there is no print builtin or printf. +func_fallback_echo () +{ + eval 'cat <<_LTECHO_EOF +$1 +_LTECHO_EOF' +} + +# func_generated_by_libtool +# True iff stdin has been generated by Libtool. This function is only +# a basic sanity check; it will hardly flush out determined imposters. +func_generated_by_libtool_p () +{ + $GREP "^# Generated by .*$PACKAGE" > /dev/null 2>&1 +} + +# func_lalib_p file +# True iff FILE is a libtool '.la' library or '.lo' object file. +# This function is only a basic sanity check; it will hardly flush out +# determined imposters. +func_lalib_p () +{ + test -f "$1" && + $SED -e 4q "$1" 2>/dev/null | func_generated_by_libtool_p +} + +# func_lalib_unsafe_p file +# True iff FILE is a libtool '.la' library or '.lo' object file. +# This function implements the same check as func_lalib_p without +# resorting to external programs. To this end, it redirects stdin and +# closes it afterwards, without saving the original file descriptor. +# As a safety measure, use it only where a negative result would be +# fatal anyway. Works if 'file' does not exist. +func_lalib_unsafe_p () +{ + lalib_p=no + if test -f "$1" && test -r "$1" && exec 5<&0 <"$1"; then + for lalib_p_l in 1 2 3 4 + do + read lalib_p_line + case $lalib_p_line in + \#\ Generated\ by\ *$PACKAGE* ) lalib_p=yes; break;; + esac + done + exec 0<&5 5<&- + fi + test yes = "$lalib_p" +} + +# func_ltwrapper_script_p file +# True iff FILE is a libtool wrapper script +# This function is only a basic sanity check; it will hardly flush out +# determined imposters. +func_ltwrapper_script_p () +{ + test -f "$1" && + $lt_truncate_bin < "$1" 2>/dev/null | func_generated_by_libtool_p +} + +# func_ltwrapper_executable_p file +# True iff FILE is a libtool wrapper executable +# This function is only a basic sanity check; it will hardly flush out +# determined imposters. +func_ltwrapper_executable_p () +{ + func_ltwrapper_exec_suffix= + case $1 in + *.exe) ;; + *) func_ltwrapper_exec_suffix=.exe ;; + esac + $GREP "$magic_exe" "$1$func_ltwrapper_exec_suffix" >/dev/null 2>&1 +} + +# func_ltwrapper_scriptname file +# Assumes file is an ltwrapper_executable +# uses $file to determine the appropriate filename for a +# temporary ltwrapper_script. +func_ltwrapper_scriptname () +{ + func_dirname_and_basename "$1" "" "." + func_stripname '' '.exe' "$func_basename_result" + func_ltwrapper_scriptname_result=$func_dirname_result/$objdir/${func_stripname_result}_ltshwrapper +} + +# func_ltwrapper_p file +# True iff FILE is a libtool wrapper script or wrapper executable +# This function is only a basic sanity check; it will hardly flush out +# determined imposters. +func_ltwrapper_p () +{ + func_ltwrapper_script_p "$1" || func_ltwrapper_executable_p "$1" +} + + +# func_execute_cmds commands fail_cmd +# Execute tilde-delimited COMMANDS. +# If FAIL_CMD is given, eval that upon failure. +# FAIL_CMD may read-access the current command in variable CMD! +func_execute_cmds () +{ + $debug_cmd + + save_ifs=$IFS; IFS='~' + for cmd in $1; do + IFS=$sp$nl + eval cmd=\"$cmd\" + IFS=$save_ifs + func_show_eval "$cmd" "${2-:}" + done + IFS=$save_ifs +} + + +# func_source file +# Source FILE, adding directory component if necessary. +# Note that it is not necessary on cygwin/mingw to append a dot to +# FILE even if both FILE and FILE.exe exist: automatic-append-.exe +# behavior happens only for exec(3), not for open(2)! Also, sourcing +# 'FILE.' does not work on cygwin managed mounts. +func_source () +{ + $debug_cmd + + case $1 in + */* | *\\*) . "$1" ;; + *) . "./$1" ;; + esac +} + + +# func_resolve_sysroot PATH +# Replace a leading = in PATH with a sysroot. Store the result into +# func_resolve_sysroot_result +func_resolve_sysroot () +{ + func_resolve_sysroot_result=$1 + case $func_resolve_sysroot_result in + =*) + func_stripname '=' '' "$func_resolve_sysroot_result" + func_resolve_sysroot_result=$lt_sysroot$func_stripname_result + ;; + esac +} + +# func_replace_sysroot PATH +# If PATH begins with the sysroot, replace it with = and +# store the result into func_replace_sysroot_result. +func_replace_sysroot () +{ + case $lt_sysroot:$1 in + ?*:"$lt_sysroot"*) + func_stripname "$lt_sysroot" '' "$1" + func_replace_sysroot_result='='$func_stripname_result + ;; + *) + # Including no sysroot. + func_replace_sysroot_result=$1 + ;; + esac +} + +# func_infer_tag arg +# Infer tagged configuration to use if any are available and +# if one wasn't chosen via the "--tag" command line option. +# Only attempt this if the compiler in the base compile +# command doesn't match the default compiler. +# arg is usually of the form 'gcc ...' +func_infer_tag () +{ + $debug_cmd + + if test -n "$available_tags" && test -z "$tagname"; then + CC_quoted= + for arg in $CC; do + func_append_quoted CC_quoted "$arg" + done + CC_expanded=`func_echo_all $CC` + CC_quoted_expanded=`func_echo_all $CC_quoted` + case $@ in + # Blanks in the command may have been stripped by the calling shell, + # but not from the CC environment variable when configure was run. + " $CC "* | "$CC "* | " $CC_expanded "* | "$CC_expanded "* | \ + " $CC_quoted"* | "$CC_quoted "* | " $CC_quoted_expanded "* | "$CC_quoted_expanded "*) ;; + # Blanks at the start of $base_compile will cause this to fail + # if we don't check for them as well. + *) + for z in $available_tags; do + if $GREP "^# ### BEGIN LIBTOOL TAG CONFIG: $z$" < "$progpath" > /dev/null; then + # Evaluate the configuration. + eval "`$SED -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^# ### END LIBTOOL TAG CONFIG: '$z'$/p' < $progpath`" + CC_quoted= + for arg in $CC; do + # Double-quote args containing other shell metacharacters. + func_append_quoted CC_quoted "$arg" + done + CC_expanded=`func_echo_all $CC` + CC_quoted_expanded=`func_echo_all $CC_quoted` + case "$@ " in + " $CC "* | "$CC "* | " $CC_expanded "* | "$CC_expanded "* | \ + " $CC_quoted"* | "$CC_quoted "* | " $CC_quoted_expanded "* | "$CC_quoted_expanded "*) + # The compiler in the base compile command matches + # the one in the tagged configuration. + # Assume this is the tagged configuration we want. + tagname=$z + break + ;; + esac + fi + done + # If $tagname still isn't set, then no tagged configuration + # was found and let the user know that the "--tag" command + # line option must be used. + if test -z "$tagname"; then + func_echo "unable to infer tagged configuration" + func_fatal_error "specify a tag with '--tag'" +# else +# func_verbose "using $tagname tagged configuration" + fi + ;; + esac + fi +} + + + +# func_write_libtool_object output_name pic_name nonpic_name +# Create a libtool object file (analogous to a ".la" file), +# but don't create it if we're doing a dry run. +func_write_libtool_object () +{ + write_libobj=$1 + if test yes = "$build_libtool_libs"; then + write_lobj=\'$2\' + else + write_lobj=none + fi + + if test yes = "$build_old_libs"; then + write_oldobj=\'$3\' + else + write_oldobj=none + fi + + $opt_dry_run || { + cat >${write_libobj}T </dev/null` + if test "$?" -eq 0 && test -n "$func_convert_core_file_wine_to_w32_tmp"; then + func_convert_core_file_wine_to_w32_result=`$ECHO "$func_convert_core_file_wine_to_w32_tmp" | + $SED -e "$sed_naive_backslashify"` + else + func_convert_core_file_wine_to_w32_result= + fi + fi +} +# end: func_convert_core_file_wine_to_w32 + + +# func_convert_core_path_wine_to_w32 ARG +# Helper function used by path conversion functions when $build is *nix, and +# $host is mingw, cygwin, or some other w32 environment. Relies on a correctly +# configured wine environment available, with the winepath program in $build's +# $PATH. Assumes ARG has no leading or trailing path separator characters. +# +# ARG is path to be converted from $build format to win32. +# Result is available in $func_convert_core_path_wine_to_w32_result. +# Unconvertible file (directory) names in ARG are skipped; if no directory names +# are convertible, then the result may be empty. +func_convert_core_path_wine_to_w32 () +{ + $debug_cmd + + # unfortunately, winepath doesn't convert paths, only file names + func_convert_core_path_wine_to_w32_result= + if test -n "$1"; then + oldIFS=$IFS + IFS=: + for func_convert_core_path_wine_to_w32_f in $1; do + IFS=$oldIFS + func_convert_core_file_wine_to_w32 "$func_convert_core_path_wine_to_w32_f" + if test -n "$func_convert_core_file_wine_to_w32_result"; then + if test -z "$func_convert_core_path_wine_to_w32_result"; then + func_convert_core_path_wine_to_w32_result=$func_convert_core_file_wine_to_w32_result + else + func_append func_convert_core_path_wine_to_w32_result ";$func_convert_core_file_wine_to_w32_result" + fi + fi + done + IFS=$oldIFS + fi +} +# end: func_convert_core_path_wine_to_w32 + + +# func_cygpath ARGS... +# Wrapper around calling the cygpath program via LT_CYGPATH. This is used when +# when (1) $build is *nix and Cygwin is hosted via a wine environment; or (2) +# $build is MSYS and $host is Cygwin, or (3) $build is Cygwin. In case (1) or +# (2), returns the Cygwin file name or path in func_cygpath_result (input +# file name or path is assumed to be in w32 format, as previously converted +# from $build's *nix or MSYS format). In case (3), returns the w32 file name +# or path in func_cygpath_result (input file name or path is assumed to be in +# Cygwin format). Returns an empty string on error. +# +# ARGS are passed to cygpath, with the last one being the file name or path to +# be converted. +# +# Specify the absolute *nix (or w32) name to cygpath in the LT_CYGPATH +# environment variable; do not put it in $PATH. +func_cygpath () +{ + $debug_cmd + + if test -n "$LT_CYGPATH" && test -f "$LT_CYGPATH"; then + func_cygpath_result=`$LT_CYGPATH "$@" 2>/dev/null` + if test "$?" -ne 0; then + # on failure, ensure result is empty + func_cygpath_result= + fi + else + func_cygpath_result= + func_error "LT_CYGPATH is empty or specifies non-existent file: '$LT_CYGPATH'" + fi +} +#end: func_cygpath + + +# func_convert_core_msys_to_w32 ARG +# Convert file name or path ARG from MSYS format to w32 format. Return +# result in func_convert_core_msys_to_w32_result. +func_convert_core_msys_to_w32 () +{ + $debug_cmd + + # awkward: cmd appends spaces to result + func_convert_core_msys_to_w32_result=`( cmd //c echo "$1" ) 2>/dev/null | + $SED -e 's/[ ]*$//' -e "$sed_naive_backslashify"` +} +#end: func_convert_core_msys_to_w32 + + +# func_convert_file_check ARG1 ARG2 +# Verify that ARG1 (a file name in $build format) was converted to $host +# format in ARG2. Otherwise, emit an error message, but continue (resetting +# func_to_host_file_result to ARG1). +func_convert_file_check () +{ + $debug_cmd + + if test -z "$2" && test -n "$1"; then + func_error "Could not determine host file name corresponding to" + func_error " '$1'" + func_error "Continuing, but uninstalled executables may not work." + # Fallback: + func_to_host_file_result=$1 + fi +} +# end func_convert_file_check + + +# func_convert_path_check FROM_PATHSEP TO_PATHSEP FROM_PATH TO_PATH +# Verify that FROM_PATH (a path in $build format) was converted to $host +# format in TO_PATH. Otherwise, emit an error message, but continue, resetting +# func_to_host_file_result to a simplistic fallback value (see below). +func_convert_path_check () +{ + $debug_cmd + + if test -z "$4" && test -n "$3"; then + func_error "Could not determine the host path corresponding to" + func_error " '$3'" + func_error "Continuing, but uninstalled executables may not work." + # Fallback. This is a deliberately simplistic "conversion" and + # should not be "improved". See libtool.info. + if test "x$1" != "x$2"; then + lt_replace_pathsep_chars="s|$1|$2|g" + func_to_host_path_result=`echo "$3" | + $SED -e "$lt_replace_pathsep_chars"` + else + func_to_host_path_result=$3 + fi + fi +} +# end func_convert_path_check + + +# func_convert_path_front_back_pathsep FRONTPAT BACKPAT REPL ORIG +# Modifies func_to_host_path_result by prepending REPL if ORIG matches FRONTPAT +# and appending REPL if ORIG matches BACKPAT. +func_convert_path_front_back_pathsep () +{ + $debug_cmd + + case $4 in + $1 ) func_to_host_path_result=$3$func_to_host_path_result + ;; + esac + case $4 in + $2 ) func_append func_to_host_path_result "$3" + ;; + esac +} +# end func_convert_path_front_back_pathsep + + +################################################## +# $build to $host FILE NAME CONVERSION FUNCTIONS # +################################################## +# invoked via '$to_host_file_cmd ARG' +# +# In each case, ARG is the path to be converted from $build to $host format. +# Result will be available in $func_to_host_file_result. + + +# func_to_host_file ARG +# Converts the file name ARG from $build format to $host format. Return result +# in func_to_host_file_result. +func_to_host_file () +{ + $debug_cmd + + $to_host_file_cmd "$1" +} +# end func_to_host_file + + +# func_to_tool_file ARG LAZY +# converts the file name ARG from $build format to toolchain format. Return +# result in func_to_tool_file_result. If the conversion in use is listed +# in (the comma separated) LAZY, no conversion takes place. +func_to_tool_file () +{ + $debug_cmd + + case ,$2, in + *,"$to_tool_file_cmd",*) + func_to_tool_file_result=$1 + ;; + *) + $to_tool_file_cmd "$1" + func_to_tool_file_result=$func_to_host_file_result + ;; + esac +} +# end func_to_tool_file + + +# func_convert_file_noop ARG +# Copy ARG to func_to_host_file_result. +func_convert_file_noop () +{ + func_to_host_file_result=$1 +} +# end func_convert_file_noop + + +# func_convert_file_msys_to_w32 ARG +# Convert file name ARG from (mingw) MSYS to (mingw) w32 format; automatic +# conversion to w32 is not available inside the cwrapper. Returns result in +# func_to_host_file_result. +func_convert_file_msys_to_w32 () +{ + $debug_cmd + + func_to_host_file_result=$1 + if test -n "$1"; then + func_convert_core_msys_to_w32 "$1" + func_to_host_file_result=$func_convert_core_msys_to_w32_result + fi + func_convert_file_check "$1" "$func_to_host_file_result" +} +# end func_convert_file_msys_to_w32 + + +# func_convert_file_cygwin_to_w32 ARG +# Convert file name ARG from Cygwin to w32 format. Returns result in +# func_to_host_file_result. +func_convert_file_cygwin_to_w32 () +{ + $debug_cmd + + func_to_host_file_result=$1 + if test -n "$1"; then + # because $build is cygwin, we call "the" cygpath in $PATH; no need to use + # LT_CYGPATH in this case. + func_to_host_file_result=`cygpath -m "$1"` + fi + func_convert_file_check "$1" "$func_to_host_file_result" +} +# end func_convert_file_cygwin_to_w32 + + +# func_convert_file_nix_to_w32 ARG +# Convert file name ARG from *nix to w32 format. Requires a wine environment +# and a working winepath. Returns result in func_to_host_file_result. +func_convert_file_nix_to_w32 () +{ + $debug_cmd + + func_to_host_file_result=$1 + if test -n "$1"; then + func_convert_core_file_wine_to_w32 "$1" + func_to_host_file_result=$func_convert_core_file_wine_to_w32_result + fi + func_convert_file_check "$1" "$func_to_host_file_result" +} +# end func_convert_file_nix_to_w32 + + +# func_convert_file_msys_to_cygwin ARG +# Convert file name ARG from MSYS to Cygwin format. Requires LT_CYGPATH set. +# Returns result in func_to_host_file_result. +func_convert_file_msys_to_cygwin () +{ + $debug_cmd + + func_to_host_file_result=$1 + if test -n "$1"; then + func_convert_core_msys_to_w32 "$1" + func_cygpath -u "$func_convert_core_msys_to_w32_result" + func_to_host_file_result=$func_cygpath_result + fi + func_convert_file_check "$1" "$func_to_host_file_result" +} +# end func_convert_file_msys_to_cygwin + + +# func_convert_file_nix_to_cygwin ARG +# Convert file name ARG from *nix to Cygwin format. Requires Cygwin installed +# in a wine environment, working winepath, and LT_CYGPATH set. Returns result +# in func_to_host_file_result. +func_convert_file_nix_to_cygwin () +{ + $debug_cmd + + func_to_host_file_result=$1 + if test -n "$1"; then + # convert from *nix to w32, then use cygpath to convert from w32 to cygwin. + func_convert_core_file_wine_to_w32 "$1" + func_cygpath -u "$func_convert_core_file_wine_to_w32_result" + func_to_host_file_result=$func_cygpath_result + fi + func_convert_file_check "$1" "$func_to_host_file_result" +} +# end func_convert_file_nix_to_cygwin + + +############################################# +# $build to $host PATH CONVERSION FUNCTIONS # +############################################# +# invoked via '$to_host_path_cmd ARG' +# +# In each case, ARG is the path to be converted from $build to $host format. +# The result will be available in $func_to_host_path_result. +# +# Path separators are also converted from $build format to $host format. If +# ARG begins or ends with a path separator character, it is preserved (but +# converted to $host format) on output. +# +# All path conversion functions are named using the following convention: +# file name conversion function : func_convert_file_X_to_Y () +# path conversion function : func_convert_path_X_to_Y () +# where, for any given $build/$host combination the 'X_to_Y' value is the +# same. If conversion functions are added for new $build/$host combinations, +# the two new functions must follow this pattern, or func_init_to_host_path_cmd +# will break. + + +# func_init_to_host_path_cmd +# Ensures that function "pointer" variable $to_host_path_cmd is set to the +# appropriate value, based on the value of $to_host_file_cmd. +to_host_path_cmd= +func_init_to_host_path_cmd () +{ + $debug_cmd + + if test -z "$to_host_path_cmd"; then + func_stripname 'func_convert_file_' '' "$to_host_file_cmd" + to_host_path_cmd=func_convert_path_$func_stripname_result + fi +} + + +# func_to_host_path ARG +# Converts the path ARG from $build format to $host format. Return result +# in func_to_host_path_result. +func_to_host_path () +{ + $debug_cmd + + func_init_to_host_path_cmd + $to_host_path_cmd "$1" +} +# end func_to_host_path + + +# func_convert_path_noop ARG +# Copy ARG to func_to_host_path_result. +func_convert_path_noop () +{ + func_to_host_path_result=$1 +} +# end func_convert_path_noop + + +# func_convert_path_msys_to_w32 ARG +# Convert path ARG from (mingw) MSYS to (mingw) w32 format; automatic +# conversion to w32 is not available inside the cwrapper. Returns result in +# func_to_host_path_result. +func_convert_path_msys_to_w32 () +{ + $debug_cmd + + func_to_host_path_result=$1 + if test -n "$1"; then + # Remove leading and trailing path separator characters from ARG. MSYS + # behavior is inconsistent here; cygpath turns them into '.;' and ';.'; + # and winepath ignores them completely. + func_stripname : : "$1" + func_to_host_path_tmp1=$func_stripname_result + func_convert_core_msys_to_w32 "$func_to_host_path_tmp1" + func_to_host_path_result=$func_convert_core_msys_to_w32_result + func_convert_path_check : ";" \ + "$func_to_host_path_tmp1" "$func_to_host_path_result" + func_convert_path_front_back_pathsep ":*" "*:" ";" "$1" + fi +} +# end func_convert_path_msys_to_w32 + + +# func_convert_path_cygwin_to_w32 ARG +# Convert path ARG from Cygwin to w32 format. Returns result in +# func_to_host_file_result. +func_convert_path_cygwin_to_w32 () +{ + $debug_cmd + + func_to_host_path_result=$1 + if test -n "$1"; then + # See func_convert_path_msys_to_w32: + func_stripname : : "$1" + func_to_host_path_tmp1=$func_stripname_result + func_to_host_path_result=`cygpath -m -p "$func_to_host_path_tmp1"` + func_convert_path_check : ";" \ + "$func_to_host_path_tmp1" "$func_to_host_path_result" + func_convert_path_front_back_pathsep ":*" "*:" ";" "$1" + fi +} +# end func_convert_path_cygwin_to_w32 + + +# func_convert_path_nix_to_w32 ARG +# Convert path ARG from *nix to w32 format. Requires a wine environment and +# a working winepath. Returns result in func_to_host_file_result. +func_convert_path_nix_to_w32 () +{ + $debug_cmd + + func_to_host_path_result=$1 + if test -n "$1"; then + # See func_convert_path_msys_to_w32: + func_stripname : : "$1" + func_to_host_path_tmp1=$func_stripname_result + func_convert_core_path_wine_to_w32 "$func_to_host_path_tmp1" + func_to_host_path_result=$func_convert_core_path_wine_to_w32_result + func_convert_path_check : ";" \ + "$func_to_host_path_tmp1" "$func_to_host_path_result" + func_convert_path_front_back_pathsep ":*" "*:" ";" "$1" + fi +} +# end func_convert_path_nix_to_w32 + + +# func_convert_path_msys_to_cygwin ARG +# Convert path ARG from MSYS to Cygwin format. Requires LT_CYGPATH set. +# Returns result in func_to_host_file_result. +func_convert_path_msys_to_cygwin () +{ + $debug_cmd + + func_to_host_path_result=$1 + if test -n "$1"; then + # See func_convert_path_msys_to_w32: + func_stripname : : "$1" + func_to_host_path_tmp1=$func_stripname_result + func_convert_core_msys_to_w32 "$func_to_host_path_tmp1" + func_cygpath -u -p "$func_convert_core_msys_to_w32_result" + func_to_host_path_result=$func_cygpath_result + func_convert_path_check : : \ + "$func_to_host_path_tmp1" "$func_to_host_path_result" + func_convert_path_front_back_pathsep ":*" "*:" : "$1" + fi +} +# end func_convert_path_msys_to_cygwin + + +# func_convert_path_nix_to_cygwin ARG +# Convert path ARG from *nix to Cygwin format. Requires Cygwin installed in a +# a wine environment, working winepath, and LT_CYGPATH set. Returns result in +# func_to_host_file_result. +func_convert_path_nix_to_cygwin () +{ + $debug_cmd + + func_to_host_path_result=$1 + if test -n "$1"; then + # Remove leading and trailing path separator characters from + # ARG. msys behavior is inconsistent here, cygpath turns them + # into '.;' and ';.', and winepath ignores them completely. + func_stripname : : "$1" + func_to_host_path_tmp1=$func_stripname_result + func_convert_core_path_wine_to_w32 "$func_to_host_path_tmp1" + func_cygpath -u -p "$func_convert_core_path_wine_to_w32_result" + func_to_host_path_result=$func_cygpath_result + func_convert_path_check : : \ + "$func_to_host_path_tmp1" "$func_to_host_path_result" + func_convert_path_front_back_pathsep ":*" "*:" : "$1" + fi +} +# end func_convert_path_nix_to_cygwin + + +# func_dll_def_p FILE +# True iff FILE is a Windows DLL '.def' file. +# Keep in sync with _LT_DLL_DEF_P in libtool.m4 +func_dll_def_p () +{ + $debug_cmd + + func_dll_def_p_tmp=`$SED -n \ + -e 's/^[ ]*//' \ + -e '/^\(;.*\)*$/d' \ + -e 's/^\(EXPORTS\|LIBRARY\)\([ ].*\)*$/DEF/p' \ + -e q \ + "$1"` + test DEF = "$func_dll_def_p_tmp" +} + + +# func_mode_compile arg... +func_mode_compile () +{ + $debug_cmd + + # Get the compilation command and the source file. + base_compile= + srcfile=$nonopt # always keep a non-empty value in "srcfile" + suppress_opt=yes + suppress_output= + arg_mode=normal + libobj= + later= + pie_flag= + + for arg + do + case $arg_mode in + arg ) + # do not "continue". Instead, add this to base_compile + lastarg=$arg + arg_mode=normal + ;; + + target ) + libobj=$arg + arg_mode=normal + continue + ;; + + normal ) + # Accept any command-line options. + case $arg in + -o) + test -n "$libobj" && \ + func_fatal_error "you cannot specify '-o' more than once" + arg_mode=target + continue + ;; + + -pie | -fpie | -fPIE) + func_append pie_flag " $arg" + continue + ;; + + -shared | -static | -prefer-pic | -prefer-non-pic) + func_append later " $arg" + continue + ;; + + -no-suppress) + suppress_opt=no + continue + ;; + + -Xcompiler) + arg_mode=arg # the next one goes into the "base_compile" arg list + continue # The current "srcfile" will either be retained or + ;; # replaced later. I would guess that would be a bug. + + -Wc,*) + func_stripname '-Wc,' '' "$arg" + args=$func_stripname_result + lastarg= + save_ifs=$IFS; IFS=, + for arg in $args; do + IFS=$save_ifs + func_append_quoted lastarg "$arg" + done + IFS=$save_ifs + func_stripname ' ' '' "$lastarg" + lastarg=$func_stripname_result + + # Add the arguments to base_compile. + func_append base_compile " $lastarg" + continue + ;; + + *) + # Accept the current argument as the source file. + # The previous "srcfile" becomes the current argument. + # + lastarg=$srcfile + srcfile=$arg + ;; + esac # case $arg + ;; + esac # case $arg_mode + + # Aesthetically quote the previous argument. + func_append_quoted base_compile "$lastarg" + done # for arg + + case $arg_mode in + arg) + func_fatal_error "you must specify an argument for -Xcompile" + ;; + target) + func_fatal_error "you must specify a target with '-o'" + ;; + *) + # Get the name of the library object. + test -z "$libobj" && { + func_basename "$srcfile" + libobj=$func_basename_result + } + ;; + esac + + # Recognize several different file suffixes. + # If the user specifies -o file.o, it is replaced with file.lo + case $libobj in + *.[cCFSifmso] | \ + *.ada | *.adb | *.ads | *.asm | \ + *.c++ | *.cc | *.ii | *.class | *.cpp | *.cxx | \ + *.[fF][09]? | *.for | *.java | *.go | *.obj | *.sx | *.cu | *.cup) + func_xform "$libobj" + libobj=$func_xform_result + ;; + esac + + case $libobj in + *.lo) func_lo2o "$libobj"; obj=$func_lo2o_result ;; + *) + func_fatal_error "cannot determine name of library object from '$libobj'" + ;; + esac + + func_infer_tag $base_compile + + for arg in $later; do + case $arg in + -shared) + test yes = "$build_libtool_libs" \ + || func_fatal_configuration "cannot build a shared library" + build_old_libs=no + continue + ;; + + -static) + build_libtool_libs=no + build_old_libs=yes + continue + ;; + + -prefer-pic) + pic_mode=yes + continue + ;; + + -prefer-non-pic) + pic_mode=no + continue + ;; + esac + done + + func_quote_for_eval "$libobj" + test "X$libobj" != "X$func_quote_for_eval_result" \ + && $ECHO "X$libobj" | $GREP '[]~#^*{};<>?"'"'"' &()|`$[]' \ + && func_warning "libobj name '$libobj' may not contain shell special characters." + func_dirname_and_basename "$obj" "/" "" + objname=$func_basename_result + xdir=$func_dirname_result + lobj=$xdir$objdir/$objname + + test -z "$base_compile" && \ + func_fatal_help "you must specify a compilation command" + + # Delete any leftover library objects. + if test yes = "$build_old_libs"; then + removelist="$obj $lobj $libobj ${libobj}T" + else + removelist="$lobj $libobj ${libobj}T" + fi + + # On Cygwin there's no "real" PIC flag so we must build both object types + case $host_os in + cygwin* | mingw* | pw32* | os2* | cegcc*) + pic_mode=default + ;; + esac + if test no = "$pic_mode" && test pass_all != "$deplibs_check_method"; then + # non-PIC code in shared libraries is not supported + pic_mode=default + fi + + # Calculate the filename of the output object if compiler does + # not support -o with -c + if test no = "$compiler_c_o"; then + output_obj=`$ECHO "$srcfile" | $SED 's%^.*/%%; s%\.[^.]*$%%'`.$objext + lockfile=$output_obj.lock + else + output_obj= + need_locks=no + lockfile= + fi + + # Lock this critical section if it is needed + # We use this script file to make the link, it avoids creating a new file + if test yes = "$need_locks"; then + until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do + func_echo "Waiting for $lockfile to be removed" + sleep 2 + done + elif test warn = "$need_locks"; then + if test -f "$lockfile"; then + $ECHO "\ +*** ERROR, $lockfile exists and contains: +`cat $lockfile 2>/dev/null` + +This indicates that another process is trying to use the same +temporary object file, and libtool could not work around it because +your compiler does not support '-c' and '-o' together. If you +repeat this compilation, it may succeed, by chance, but you had better +avoid parallel builds (make -j) in this platform, or get a better +compiler." + + $opt_dry_run || $RM $removelist + exit $EXIT_FAILURE + fi + func_append removelist " $output_obj" + $ECHO "$srcfile" > "$lockfile" + fi + + $opt_dry_run || $RM $removelist + func_append removelist " $lockfile" + trap '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' 1 2 15 + + func_to_tool_file "$srcfile" func_convert_file_msys_to_w32 + srcfile=$func_to_tool_file_result + func_quote_for_eval "$srcfile" + qsrcfile=$func_quote_for_eval_result + + # Only build a PIC object if we are building libtool libraries. + if test yes = "$build_libtool_libs"; then + # Without this assignment, base_compile gets emptied. + fbsd_hideous_sh_bug=$base_compile + + if test no != "$pic_mode"; then + command="$base_compile $qsrcfile $pic_flag" + else + # Don't build PIC code + command="$base_compile $qsrcfile" + fi + + func_mkdir_p "$xdir$objdir" + + if test -z "$output_obj"; then + # Place PIC objects in $objdir + func_append command " -o $lobj" + fi + + func_show_eval_locale "$command" \ + 'test -n "$output_obj" && $RM $removelist; exit $EXIT_FAILURE' + + if test warn = "$need_locks" && + test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then + $ECHO "\ +*** ERROR, $lockfile contains: +`cat $lockfile 2>/dev/null` + +but it should contain: +$srcfile + +This indicates that another process is trying to use the same +temporary object file, and libtool could not work around it because +your compiler does not support '-c' and '-o' together. If you +repeat this compilation, it may succeed, by chance, but you had better +avoid parallel builds (make -j) in this platform, or get a better +compiler." + + $opt_dry_run || $RM $removelist + exit $EXIT_FAILURE + fi + + # Just move the object if needed, then go on to compile the next one + if test -n "$output_obj" && test "X$output_obj" != "X$lobj"; then + func_show_eval '$MV "$output_obj" "$lobj"' \ + 'error=$?; $opt_dry_run || $RM $removelist; exit $error' + fi + + # Allow error messages only from the first compilation. + if test yes = "$suppress_opt"; then + suppress_output=' >/dev/null 2>&1' + fi + fi + + # Only build a position-dependent object if we build old libraries. + if test yes = "$build_old_libs"; then + if test yes != "$pic_mode"; then + # Don't build PIC code + command="$base_compile $qsrcfile$pie_flag" + else + command="$base_compile $qsrcfile $pic_flag" + fi + if test yes = "$compiler_c_o"; then + func_append command " -o $obj" + fi + + # Suppress compiler output if we already did a PIC compilation. + func_append command "$suppress_output" + func_show_eval_locale "$command" \ + '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' + + if test warn = "$need_locks" && + test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then + $ECHO "\ +*** ERROR, $lockfile contains: +`cat $lockfile 2>/dev/null` + +but it should contain: +$srcfile + +This indicates that another process is trying to use the same +temporary object file, and libtool could not work around it because +your compiler does not support '-c' and '-o' together. If you +repeat this compilation, it may succeed, by chance, but you had better +avoid parallel builds (make -j) in this platform, or get a better +compiler." + + $opt_dry_run || $RM $removelist + exit $EXIT_FAILURE + fi + + # Just move the object if needed + if test -n "$output_obj" && test "X$output_obj" != "X$obj"; then + func_show_eval '$MV "$output_obj" "$obj"' \ + 'error=$?; $opt_dry_run || $RM $removelist; exit $error' + fi + fi + + $opt_dry_run || { + func_write_libtool_object "$libobj" "$objdir/$objname" "$objname" + + # Unlock the critical section if it was locked + if test no != "$need_locks"; then + removelist=$lockfile + $RM "$lockfile" + fi + } + + exit $EXIT_SUCCESS +} + +$opt_help || { + test compile = "$opt_mode" && func_mode_compile ${1+"$@"} +} + +func_mode_help () +{ + # We need to display help for each of the modes. + case $opt_mode in + "") + # Generic help is extracted from the usage comments + # at the start of this file. + func_help + ;; + + clean) + $ECHO \ +"Usage: $progname [OPTION]... --mode=clean RM [RM-OPTION]... FILE... + +Remove files from the build directory. + +RM is the name of the program to use to delete files associated with each FILE +(typically '/bin/rm'). RM-OPTIONS are options (such as '-f') to be passed +to RM. + +If FILE is a libtool library, object or program, all the files associated +with it are deleted. Otherwise, only FILE itself is deleted using RM." + ;; + + compile) + $ECHO \ +"Usage: $progname [OPTION]... --mode=compile COMPILE-COMMAND... SOURCEFILE + +Compile a source file into a libtool library object. + +This mode accepts the following additional options: + + -o OUTPUT-FILE set the output file name to OUTPUT-FILE + -no-suppress do not suppress compiler output for multiple passes + -prefer-pic try to build PIC objects only + -prefer-non-pic try to build non-PIC objects only + -shared do not build a '.o' file suitable for static linking + -static only build a '.o' file suitable for static linking + -Wc,FLAG pass FLAG directly to the compiler + +COMPILE-COMMAND is a command to be used in creating a 'standard' object file +from the given SOURCEFILE. + +The output file name is determined by removing the directory component from +SOURCEFILE, then substituting the C source code suffix '.c' with the +library object suffix, '.lo'." + ;; + + execute) + $ECHO \ +"Usage: $progname [OPTION]... --mode=execute COMMAND [ARGS]... + +Automatically set library path, then run a program. + +This mode accepts the following additional options: + + -dlopen FILE add the directory containing FILE to the library path + +This mode sets the library path environment variable according to '-dlopen' +flags. + +If any of the ARGS are libtool executable wrappers, then they are translated +into their corresponding uninstalled binary, and any of their required library +directories are added to the library path. + +Then, COMMAND is executed, with ARGS as arguments." + ;; + + finish) + $ECHO \ +"Usage: $progname [OPTION]... --mode=finish [LIBDIR]... + +Complete the installation of libtool libraries. + +Each LIBDIR is a directory that contains libtool libraries. + +The commands that this mode executes may require superuser privileges. Use +the '--dry-run' option if you just want to see what would be executed." + ;; + + install) + $ECHO \ +"Usage: $progname [OPTION]... --mode=install INSTALL-COMMAND... + +Install executables or libraries. + +INSTALL-COMMAND is the installation command. The first component should be +either the 'install' or 'cp' program. + +The following components of INSTALL-COMMAND are treated specially: + + -inst-prefix-dir PREFIX-DIR Use PREFIX-DIR as a staging area for installation + +The rest of the components are interpreted as arguments to that command (only +BSD-compatible install options are recognized)." + ;; + + link) + $ECHO \ +"Usage: $progname [OPTION]... --mode=link LINK-COMMAND... + +Link object files or libraries together to form another library, or to +create an executable program. + +LINK-COMMAND is a command using the C compiler that you would use to create +a program from several object files. + +The following components of LINK-COMMAND are treated specially: + + -all-static do not do any dynamic linking at all + -avoid-version do not add a version suffix if possible + -bindir BINDIR specify path to binaries directory (for systems where + libraries must be found in the PATH setting at runtime) + -dlopen FILE '-dlpreopen' FILE if it cannot be dlopened at runtime + -dlpreopen FILE link in FILE and add its symbols to lt_preloaded_symbols + -export-dynamic allow symbols from OUTPUT-FILE to be resolved with dlsym(3) + -export-symbols SYMFILE + try to export only the symbols listed in SYMFILE + -export-symbols-regex REGEX + try to export only the symbols matching REGEX + -LLIBDIR search LIBDIR for required installed libraries + -lNAME OUTPUT-FILE requires the installed library libNAME + -module build a library that can dlopened + -no-fast-install disable the fast-install mode + -no-install link a not-installable executable + -no-undefined declare that a library does not refer to external symbols + -o OUTPUT-FILE create OUTPUT-FILE from the specified objects + -objectlist FILE use a list of object files found in FILE to specify objects + -os2dllname NAME force a short DLL name on OS/2 (no effect on other OSes) + -precious-files-regex REGEX + don't remove output files matching REGEX + -release RELEASE specify package release information + -rpath LIBDIR the created library will eventually be installed in LIBDIR + -R[ ]LIBDIR add LIBDIR to the runtime path of programs and libraries + -shared only do dynamic linking of libtool libraries + -shrext SUFFIX override the standard shared library file extension + -static do not do any dynamic linking of uninstalled libtool libraries + -static-libtool-libs + do not do any dynamic linking of libtool libraries + -version-info CURRENT[:REVISION[:AGE]] + specify library version info [each variable defaults to 0] + -weak LIBNAME declare that the target provides the LIBNAME interface + -Wc,FLAG + -Xcompiler FLAG pass linker-specific FLAG directly to the compiler + -Wl,FLAG + -Xlinker FLAG pass linker-specific FLAG directly to the linker + -XCClinker FLAG pass link-specific FLAG to the compiler driver (CC) + +All other options (arguments beginning with '-') are ignored. + +Every other argument is treated as a filename. Files ending in '.la' are +treated as uninstalled libtool libraries, other files are standard or library +object files. + +If the OUTPUT-FILE ends in '.la', then a libtool library is created, +only library objects ('.lo' files) may be specified, and '-rpath' is +required, except when creating a convenience library. + +If OUTPUT-FILE ends in '.a' or '.lib', then a standard library is created +using 'ar' and 'ranlib', or on Windows using 'lib'. + +If OUTPUT-FILE ends in '.lo' or '.$objext', then a reloadable object file +is created, otherwise an executable program is created." + ;; + + uninstall) + $ECHO \ +"Usage: $progname [OPTION]... --mode=uninstall RM [RM-OPTION]... FILE... + +Remove libraries from an installation directory. + +RM is the name of the program to use to delete files associated with each FILE +(typically '/bin/rm'). RM-OPTIONS are options (such as '-f') to be passed +to RM. + +If FILE is a libtool library, all the files associated with it are deleted. +Otherwise, only FILE itself is deleted using RM." + ;; + + *) + func_fatal_help "invalid operation mode '$opt_mode'" + ;; + esac + + echo + $ECHO "Try '$progname --help' for more information about other modes." +} + +# Now that we've collected a possible --mode arg, show help if necessary +if $opt_help; then + if test : = "$opt_help"; then + func_mode_help + else + { + func_help noexit + for opt_mode in compile link execute install finish uninstall clean; do + func_mode_help + done + } | $SED -n '1p; 2,$s/^Usage:/ or: /p' + { + func_help noexit + for opt_mode in compile link execute install finish uninstall clean; do + echo + func_mode_help + done + } | + $SED '1d + /^When reporting/,/^Report/{ + H + d + } + $x + /information about other modes/d + /more detailed .*MODE/d + s/^Usage:.*--mode=\([^ ]*\) .*/Description of \1 mode:/' + fi + exit $? +fi + + +# func_mode_execute arg... +func_mode_execute () +{ + $debug_cmd + + # The first argument is the command name. + cmd=$nonopt + test -z "$cmd" && \ + func_fatal_help "you must specify a COMMAND" + + # Handle -dlopen flags immediately. + for file in $opt_dlopen; do + test -f "$file" \ + || func_fatal_help "'$file' is not a file" + + dir= + case $file in + *.la) + func_resolve_sysroot "$file" + file=$func_resolve_sysroot_result + + # Check to see that this really is a libtool archive. + func_lalib_unsafe_p "$file" \ + || func_fatal_help "'$lib' is not a valid libtool archive" + + # Read the libtool library. + dlname= + library_names= + func_source "$file" + + # Skip this library if it cannot be dlopened. + if test -z "$dlname"; then + # Warn if it was a shared library. + test -n "$library_names" && \ + func_warning "'$file' was not linked with '-export-dynamic'" + continue + fi + + func_dirname "$file" "" "." + dir=$func_dirname_result + + if test -f "$dir/$objdir/$dlname"; then + func_append dir "/$objdir" + else + if test ! -f "$dir/$dlname"; then + func_fatal_error "cannot find '$dlname' in '$dir' or '$dir/$objdir'" + fi + fi + ;; + + *.lo) + # Just add the directory containing the .lo file. + func_dirname "$file" "" "." + dir=$func_dirname_result + ;; + + *) + func_warning "'-dlopen' is ignored for non-libtool libraries and objects" + continue + ;; + esac + + # Get the absolute pathname. + absdir=`cd "$dir" && pwd` + test -n "$absdir" && dir=$absdir + + # Now add the directory to shlibpath_var. + if eval "test -z \"\$$shlibpath_var\""; then + eval "$shlibpath_var=\"\$dir\"" + else + eval "$shlibpath_var=\"\$dir:\$$shlibpath_var\"" + fi + done + + # This variable tells wrapper scripts just to set shlibpath_var + # rather than running their programs. + libtool_execute_magic=$magic + + # Check if any of the arguments is a wrapper script. + args= + for file + do + case $file in + -* | *.la | *.lo ) ;; + *) + # Do a test to see if this is really a libtool program. + if func_ltwrapper_script_p "$file"; then + func_source "$file" + # Transform arg to wrapped name. + file=$progdir/$program + elif func_ltwrapper_executable_p "$file"; then + func_ltwrapper_scriptname "$file" + func_source "$func_ltwrapper_scriptname_result" + # Transform arg to wrapped name. + file=$progdir/$program + fi + ;; + esac + # Quote arguments (to preserve shell metacharacters). + func_append_quoted args "$file" + done + + if $opt_dry_run; then + # Display what would be done. + if test -n "$shlibpath_var"; then + eval "\$ECHO \"\$shlibpath_var=\$$shlibpath_var\"" + echo "export $shlibpath_var" + fi + $ECHO "$cmd$args" + exit $EXIT_SUCCESS + else + if test -n "$shlibpath_var"; then + # Export the shlibpath_var. + eval "export $shlibpath_var" + fi + + # Restore saved environment variables + for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES + do + eval "if test \"\${save_$lt_var+set}\" = set; then + $lt_var=\$save_$lt_var; export $lt_var + else + $lt_unset $lt_var + fi" + done + + # Now prepare to actually exec the command. + exec_cmd=\$cmd$args + fi +} + +test execute = "$opt_mode" && func_mode_execute ${1+"$@"} + + +# func_mode_finish arg... +func_mode_finish () +{ + $debug_cmd + + libs= + libdirs= + admincmds= + + for opt in "$nonopt" ${1+"$@"} + do + if test -d "$opt"; then + func_append libdirs " $opt" + + elif test -f "$opt"; then + if func_lalib_unsafe_p "$opt"; then + func_append libs " $opt" + else + func_warning "'$opt' is not a valid libtool archive" + fi + + else + func_fatal_error "invalid argument '$opt'" + fi + done + + if test -n "$libs"; then + if test -n "$lt_sysroot"; then + sysroot_regex=`$ECHO "$lt_sysroot" | $SED "$sed_make_literal_regex"` + sysroot_cmd="s/\([ ']\)$sysroot_regex/\1/g;" + else + sysroot_cmd= + fi + + # Remove sysroot references + if $opt_dry_run; then + for lib in $libs; do + echo "removing references to $lt_sysroot and '=' prefixes from $lib" + done + else + tmpdir=`func_mktempdir` + for lib in $libs; do + $SED -e "$sysroot_cmd s/\([ ']-[LR]\)=/\1/g; s/\([ ']\)=/\1/g" $lib \ + > $tmpdir/tmp-la + mv -f $tmpdir/tmp-la $lib + done + ${RM}r "$tmpdir" + fi + fi + + if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then + for libdir in $libdirs; do + if test -n "$finish_cmds"; then + # Do each command in the finish commands. + func_execute_cmds "$finish_cmds" 'admincmds="$admincmds +'"$cmd"'"' + fi + if test -n "$finish_eval"; then + # Do the single finish_eval. + eval cmds=\"$finish_eval\" + $opt_dry_run || eval "$cmds" || func_append admincmds " + $cmds" + fi + done + fi + + # Exit here if they wanted silent mode. + $opt_quiet && exit $EXIT_SUCCESS + + if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then + echo "----------------------------------------------------------------------" + echo "Libraries have been installed in:" + for libdir in $libdirs; do + $ECHO " $libdir" + done + echo + echo "If you ever happen to want to link against installed libraries" + echo "in a given directory, LIBDIR, you must either use libtool, and" + echo "specify the full pathname of the library, or use the '-LLIBDIR'" + echo "flag during linking and do at least one of the following:" + if test -n "$shlibpath_var"; then + echo " - add LIBDIR to the '$shlibpath_var' environment variable" + echo " during execution" + fi + if test -n "$runpath_var"; then + echo " - add LIBDIR to the '$runpath_var' environment variable" + echo " during linking" + fi + if test -n "$hardcode_libdir_flag_spec"; then + libdir=LIBDIR + eval flag=\"$hardcode_libdir_flag_spec\" + + $ECHO " - use the '$flag' linker flag" + fi + if test -n "$admincmds"; then + $ECHO " - have your system administrator run these commands:$admincmds" + fi + if test -f /etc/ld.so.conf; then + echo " - have your system administrator add LIBDIR to '/etc/ld.so.conf'" + fi + echo + + echo "See any operating system documentation about shared libraries for" + case $host in + solaris2.[6789]|solaris2.1[0-9]) + echo "more information, such as the ld(1), crle(1) and ld.so(8) manual" + echo "pages." + ;; + *) + echo "more information, such as the ld(1) and ld.so(8) manual pages." + ;; + esac + echo "----------------------------------------------------------------------" + fi + exit $EXIT_SUCCESS +} + +test finish = "$opt_mode" && func_mode_finish ${1+"$@"} + + +# func_mode_install arg... +func_mode_install () +{ + $debug_cmd + + # There may be an optional sh(1) argument at the beginning of + # install_prog (especially on Windows NT). + if test "$SHELL" = "$nonopt" || test /bin/sh = "$nonopt" || + # Allow the use of GNU shtool's install command. + case $nonopt in *shtool*) :;; *) false;; esac + then + # Aesthetically quote it. + func_quote_for_eval "$nonopt" + install_prog="$func_quote_for_eval_result " + arg=$1 + shift + else + install_prog= + arg=$nonopt + fi + + # The real first argument should be the name of the installation program. + # Aesthetically quote it. + func_quote_for_eval "$arg" + func_append install_prog "$func_quote_for_eval_result" + install_shared_prog=$install_prog + case " $install_prog " in + *[\\\ /]cp\ *) install_cp=: ;; + *) install_cp=false ;; + esac + + # We need to accept at least all the BSD install flags. + dest= + files= + opts= + prev= + install_type= + isdir=false + stripme= + no_mode=: + for arg + do + arg2= + if test -n "$dest"; then + func_append files " $dest" + dest=$arg + continue + fi + + case $arg in + -d) isdir=: ;; + -f) + if $install_cp; then :; else + prev=$arg + fi + ;; + -g | -m | -o) + prev=$arg + ;; + -s) + stripme=" -s" + continue + ;; + -*) + ;; + *) + # If the previous option needed an argument, then skip it. + if test -n "$prev"; then + if test X-m = "X$prev" && test -n "$install_override_mode"; then + arg2=$install_override_mode + no_mode=false + fi + prev= + else + dest=$arg + continue + fi + ;; + esac + + # Aesthetically quote the argument. + func_quote_for_eval "$arg" + func_append install_prog " $func_quote_for_eval_result" + if test -n "$arg2"; then + func_quote_for_eval "$arg2" + fi + func_append install_shared_prog " $func_quote_for_eval_result" + done + + test -z "$install_prog" && \ + func_fatal_help "you must specify an install program" + + test -n "$prev" && \ + func_fatal_help "the '$prev' option requires an argument" + + if test -n "$install_override_mode" && $no_mode; then + if $install_cp; then :; else + func_quote_for_eval "$install_override_mode" + func_append install_shared_prog " -m $func_quote_for_eval_result" + fi + fi + + if test -z "$files"; then + if test -z "$dest"; then + func_fatal_help "no file or destination specified" + else + func_fatal_help "you must specify a destination" + fi + fi + + # Strip any trailing slash from the destination. + func_stripname '' '/' "$dest" + dest=$func_stripname_result + + # Check to see that the destination is a directory. + test -d "$dest" && isdir=: + if $isdir; then + destdir=$dest + destname= + else + func_dirname_and_basename "$dest" "" "." + destdir=$func_dirname_result + destname=$func_basename_result + + # Not a directory, so check to see that there is only one file specified. + set dummy $files; shift + test "$#" -gt 1 && \ + func_fatal_help "'$dest' is not a directory" + fi + case $destdir in + [\\/]* | [A-Za-z]:[\\/]*) ;; + *) + for file in $files; do + case $file in + *.lo) ;; + *) + func_fatal_help "'$destdir' must be an absolute directory name" + ;; + esac + done + ;; + esac + + # This variable tells wrapper scripts just to set variables rather + # than running their programs. + libtool_install_magic=$magic + + staticlibs= + future_libdirs= + current_libdirs= + for file in $files; do + + # Do each installation. + case $file in + *.$libext) + # Do the static libraries later. + func_append staticlibs " $file" + ;; + + *.la) + func_resolve_sysroot "$file" + file=$func_resolve_sysroot_result + + # Check to see that this really is a libtool archive. + func_lalib_unsafe_p "$file" \ + || func_fatal_help "'$file' is not a valid libtool archive" + + library_names= + old_library= + relink_command= + func_source "$file" + + # Add the libdir to current_libdirs if it is the destination. + if test "X$destdir" = "X$libdir"; then + case "$current_libdirs " in + *" $libdir "*) ;; + *) func_append current_libdirs " $libdir" ;; + esac + else + # Note the libdir as a future libdir. + case "$future_libdirs " in + *" $libdir "*) ;; + *) func_append future_libdirs " $libdir" ;; + esac + fi + + func_dirname "$file" "/" "" + dir=$func_dirname_result + func_append dir "$objdir" + + if test -n "$relink_command"; then + # Determine the prefix the user has applied to our future dir. + inst_prefix_dir=`$ECHO "$destdir" | $SED -e "s%$libdir\$%%"` + + # Don't allow the user to place us outside of our expected + # location b/c this prevents finding dependent libraries that + # are installed to the same prefix. + # At present, this check doesn't affect windows .dll's that + # are installed into $libdir/../bin (currently, that works fine) + # but it's something to keep an eye on. + test "$inst_prefix_dir" = "$destdir" && \ + func_fatal_error "error: cannot install '$file' to a directory not ending in $libdir" + + if test -n "$inst_prefix_dir"; then + # Stick the inst_prefix_dir data into the link command. + relink_command=`$ECHO "$relink_command" | $SED "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%"` + else + relink_command=`$ECHO "$relink_command" | $SED "s%@inst_prefix_dir@%%"` + fi + + func_warning "relinking '$file'" + func_show_eval "$relink_command" \ + 'func_fatal_error "error: relink '\''$file'\'' with the above command before installing it"' + fi + + # See the names of the shared library. + set dummy $library_names; shift + if test -n "$1"; then + realname=$1 + shift + + srcname=$realname + test -n "$relink_command" && srcname=${realname}T + + # Install the shared library and build the symlinks. + func_show_eval "$install_shared_prog $dir/$srcname $destdir/$realname" \ + 'exit $?' + tstripme=$stripme + case $host_os in + cygwin* | mingw* | pw32* | cegcc*) + case $realname in + *.dll.a) + tstripme= + ;; + esac + ;; + os2*) + case $realname in + *_dll.a) + tstripme= + ;; + esac + ;; + esac + if test -n "$tstripme" && test -n "$striplib"; then + func_show_eval "$striplib $destdir/$realname" 'exit $?' + fi + + if test "$#" -gt 0; then + # Delete the old symlinks, and create new ones. + # Try 'ln -sf' first, because the 'ln' binary might depend on + # the symlink we replace! Solaris /bin/ln does not understand -f, + # so we also need to try rm && ln -s. + for linkname + do + test "$linkname" != "$realname" \ + && func_show_eval "(cd $destdir && { $LN_S -f $realname $linkname || { $RM $linkname && $LN_S $realname $linkname; }; })" + done + fi + + # Do each command in the postinstall commands. + lib=$destdir/$realname + func_execute_cmds "$postinstall_cmds" 'exit $?' + fi + + # Install the pseudo-library for information purposes. + func_basename "$file" + name=$func_basename_result + instname=$dir/${name}i + func_show_eval "$install_prog $instname $destdir/$name" 'exit $?' + + # Maybe install the static library, too. + test -n "$old_library" && func_append staticlibs " $dir/$old_library" + ;; + + *.lo) + # Install (i.e. copy) a libtool object. + + # Figure out destination file name, if it wasn't already specified. + if test -n "$destname"; then + destfile=$destdir/$destname + else + func_basename "$file" + destfile=$func_basename_result + destfile=$destdir/$destfile + fi + + # Deduce the name of the destination old-style object file. + case $destfile in + *.lo) + func_lo2o "$destfile" + staticdest=$func_lo2o_result + ;; + *.$objext) + staticdest=$destfile + destfile= + ;; + *) + func_fatal_help "cannot copy a libtool object to '$destfile'" + ;; + esac + + # Install the libtool object if requested. + test -n "$destfile" && \ + func_show_eval "$install_prog $file $destfile" 'exit $?' + + # Install the old object if enabled. + if test yes = "$build_old_libs"; then + # Deduce the name of the old-style object file. + func_lo2o "$file" + staticobj=$func_lo2o_result + func_show_eval "$install_prog \$staticobj \$staticdest" 'exit $?' + fi + exit $EXIT_SUCCESS + ;; + + *) + # Figure out destination file name, if it wasn't already specified. + if test -n "$destname"; then + destfile=$destdir/$destname + else + func_basename "$file" + destfile=$func_basename_result + destfile=$destdir/$destfile + fi + + # If the file is missing, and there is a .exe on the end, strip it + # because it is most likely a libtool script we actually want to + # install + stripped_ext= + case $file in + *.exe) + if test ! -f "$file"; then + func_stripname '' '.exe' "$file" + file=$func_stripname_result + stripped_ext=.exe + fi + ;; + esac + + # Do a test to see if this is really a libtool program. + case $host in + *cygwin* | *mingw*) + if func_ltwrapper_executable_p "$file"; then + func_ltwrapper_scriptname "$file" + wrapper=$func_ltwrapper_scriptname_result + else + func_stripname '' '.exe' "$file" + wrapper=$func_stripname_result + fi + ;; + *) + wrapper=$file + ;; + esac + if func_ltwrapper_script_p "$wrapper"; then + notinst_deplibs= + relink_command= + + func_source "$wrapper" + + # Check the variables that should have been set. + test -z "$generated_by_libtool_version" && \ + func_fatal_error "invalid libtool wrapper script '$wrapper'" + + finalize=: + for lib in $notinst_deplibs; do + # Check to see that each library is installed. + libdir= + if test -f "$lib"; then + func_source "$lib" + fi + libfile=$libdir/`$ECHO "$lib" | $SED 's%^.*/%%g'` + if test -n "$libdir" && test ! -f "$libfile"; then + func_warning "'$lib' has not been installed in '$libdir'" + finalize=false + fi + done + + relink_command= + func_source "$wrapper" + + outputname= + if test no = "$fast_install" && test -n "$relink_command"; then + $opt_dry_run || { + if $finalize; then + tmpdir=`func_mktempdir` + func_basename "$file$stripped_ext" + file=$func_basename_result + outputname=$tmpdir/$file + # Replace the output file specification. + relink_command=`$ECHO "$relink_command" | $SED 's%@OUTPUT@%'"$outputname"'%g'` + + $opt_quiet || { + func_quote_for_expand "$relink_command" + eval "func_echo $func_quote_for_expand_result" + } + if eval "$relink_command"; then : + else + func_error "error: relink '$file' with the above command before installing it" + $opt_dry_run || ${RM}r "$tmpdir" + continue + fi + file=$outputname + else + func_warning "cannot relink '$file'" + fi + } + else + # Install the binary that we compiled earlier. + file=`$ECHO "$file$stripped_ext" | $SED "s%\([^/]*\)$%$objdir/\1%"` + fi + fi + + # remove .exe since cygwin /usr/bin/install will append another + # one anyway + case $install_prog,$host in + */usr/bin/install*,*cygwin*) + case $file:$destfile in + *.exe:*.exe) + # this is ok + ;; + *.exe:*) + destfile=$destfile.exe + ;; + *:*.exe) + func_stripname '' '.exe' "$destfile" + destfile=$func_stripname_result + ;; + esac + ;; + esac + func_show_eval "$install_prog\$stripme \$file \$destfile" 'exit $?' + $opt_dry_run || if test -n "$outputname"; then + ${RM}r "$tmpdir" + fi + ;; + esac + done + + for file in $staticlibs; do + func_basename "$file" + name=$func_basename_result + + # Set up the ranlib parameters. + oldlib=$destdir/$name + func_to_tool_file "$oldlib" func_convert_file_msys_to_w32 + tool_oldlib=$func_to_tool_file_result + + func_show_eval "$install_prog \$file \$oldlib" 'exit $?' + + if test -n "$stripme" && test -n "$old_striplib"; then + func_show_eval "$old_striplib $tool_oldlib" 'exit $?' + fi + + # Do each command in the postinstall commands. + func_execute_cmds "$old_postinstall_cmds" 'exit $?' + done + + test -n "$future_libdirs" && \ + func_warning "remember to run '$progname --finish$future_libdirs'" + + if test -n "$current_libdirs"; then + # Maybe just do a dry run. + $opt_dry_run && current_libdirs=" -n$current_libdirs" + exec_cmd='$SHELL "$progpath" $preserve_args --finish$current_libdirs' + else + exit $EXIT_SUCCESS + fi +} + +test install = "$opt_mode" && func_mode_install ${1+"$@"} + + +# func_generate_dlsyms outputname originator pic_p +# Extract symbols from dlprefiles and create ${outputname}S.o with +# a dlpreopen symbol table. +func_generate_dlsyms () +{ + $debug_cmd + + my_outputname=$1 + my_originator=$2 + my_pic_p=${3-false} + my_prefix=`$ECHO "$my_originator" | $SED 's%[^a-zA-Z0-9]%_%g'` + my_dlsyms= + + if test -n "$dlfiles$dlprefiles" || test no != "$dlself"; then + if test -n "$NM" && test -n "$global_symbol_pipe"; then + my_dlsyms=${my_outputname}S.c + else + func_error "not configured to extract global symbols from dlpreopened files" + fi + fi + + if test -n "$my_dlsyms"; then + case $my_dlsyms in + "") ;; + *.c) + # Discover the nlist of each of the dlfiles. + nlist=$output_objdir/$my_outputname.nm + + func_show_eval "$RM $nlist ${nlist}S ${nlist}T" + + # Parse the name list into a source file. + func_verbose "creating $output_objdir/$my_dlsyms" + + $opt_dry_run || $ECHO > "$output_objdir/$my_dlsyms" "\ +/* $my_dlsyms - symbol resolution table for '$my_outputname' dlsym emulation. */ +/* Generated by $PROGRAM (GNU $PACKAGE) $VERSION */ + +#ifdef __cplusplus +extern \"C\" { +#endif + +#if defined __GNUC__ && (((__GNUC__ == 4) && (__GNUC_MINOR__ >= 4)) || (__GNUC__ > 4)) +#pragma GCC diagnostic ignored \"-Wstrict-prototypes\" +#endif + +/* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests. */ +#if defined _WIN32 || defined __CYGWIN__ || defined _WIN32_WCE +/* DATA imports from DLLs on WIN32 can't be const, because runtime + relocations are performed -- see ld's documentation on pseudo-relocs. */ +# define LT_DLSYM_CONST +#elif defined __osf__ +/* This system does not cope well with relocations in const data. */ +# define LT_DLSYM_CONST +#else +# define LT_DLSYM_CONST const +#endif + +#define STREQ(s1, s2) (strcmp ((s1), (s2)) == 0) + +/* External symbol declarations for the compiler. */\ +" + + if test yes = "$dlself"; then + func_verbose "generating symbol list for '$output'" + + $opt_dry_run || echo ': @PROGRAM@ ' > "$nlist" + + # Add our own program objects to the symbol list. + progfiles=`$ECHO "$objs$old_deplibs" | $SP2NL | $SED "$lo2o" | $NL2SP` + for progfile in $progfiles; do + func_to_tool_file "$progfile" func_convert_file_msys_to_w32 + func_verbose "extracting global C symbols from '$func_to_tool_file_result'" + $opt_dry_run || eval "$NM $func_to_tool_file_result | $global_symbol_pipe >> '$nlist'" + done + + if test -n "$exclude_expsyms"; then + $opt_dry_run || { + eval '$EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T' + eval '$MV "$nlist"T "$nlist"' + } + fi + + if test -n "$export_symbols_regex"; then + $opt_dry_run || { + eval '$EGREP -e "$export_symbols_regex" "$nlist" > "$nlist"T' + eval '$MV "$nlist"T "$nlist"' + } + fi + + # Prepare the list of exported symbols + if test -z "$export_symbols"; then + export_symbols=$output_objdir/$outputname.exp + $opt_dry_run || { + $RM $export_symbols + eval "$SED -n -e '/^: @PROGRAM@ $/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"' + case $host in + *cygwin* | *mingw* | *cegcc* ) + eval "echo EXPORTS "'> "$output_objdir/$outputname.def"' + eval 'cat "$export_symbols" >> "$output_objdir/$outputname.def"' + ;; + esac + } + else + $opt_dry_run || { + eval "$SED -e 's/\([].[*^$]\)/\\\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$outputname.exp"' + eval '$GREP -f "$output_objdir/$outputname.exp" < "$nlist" > "$nlist"T' + eval '$MV "$nlist"T "$nlist"' + case $host in + *cygwin* | *mingw* | *cegcc* ) + eval "echo EXPORTS "'> "$output_objdir/$outputname.def"' + eval 'cat "$nlist" >> "$output_objdir/$outputname.def"' + ;; + esac + } + fi + fi + + for dlprefile in $dlprefiles; do + func_verbose "extracting global C symbols from '$dlprefile'" + func_basename "$dlprefile" + name=$func_basename_result + case $host in + *cygwin* | *mingw* | *cegcc* ) + # if an import library, we need to obtain dlname + if func_win32_import_lib_p "$dlprefile"; then + func_tr_sh "$dlprefile" + eval "curr_lafile=\$libfile_$func_tr_sh_result" + dlprefile_dlbasename= + if test -n "$curr_lafile" && func_lalib_p "$curr_lafile"; then + # Use subshell, to avoid clobbering current variable values + dlprefile_dlname=`source "$curr_lafile" && echo "$dlname"` + if test -n "$dlprefile_dlname"; then + func_basename "$dlprefile_dlname" + dlprefile_dlbasename=$func_basename_result + else + # no lafile. user explicitly requested -dlpreopen . + $sharedlib_from_linklib_cmd "$dlprefile" + dlprefile_dlbasename=$sharedlib_from_linklib_result + fi + fi + $opt_dry_run || { + if test -n "$dlprefile_dlbasename"; then + eval '$ECHO ": $dlprefile_dlbasename" >> "$nlist"' + else + func_warning "Could not compute DLL name from $name" + eval '$ECHO ": $name " >> "$nlist"' + fi + func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32 + eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe | + $SED -e '/I __imp/d' -e 's/I __nm_/D /;s/_nm__//' >> '$nlist'" + } + else # not an import lib + $opt_dry_run || { + eval '$ECHO ": $name " >> "$nlist"' + func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32 + eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe >> '$nlist'" + } + fi + ;; + *) + $opt_dry_run || { + eval '$ECHO ": $name " >> "$nlist"' + func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32 + eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe >> '$nlist'" + } + ;; + esac + done + + $opt_dry_run || { + # Make sure we have at least an empty file. + test -f "$nlist" || : > "$nlist" + + if test -n "$exclude_expsyms"; then + $EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T + $MV "$nlist"T "$nlist" + fi + + # Try sorting and uniquifying the output. + if $GREP -v "^: " < "$nlist" | + if sort -k 3 /dev/null 2>&1; then + sort -k 3 + else + sort +2 + fi | + uniq > "$nlist"S; then + : + else + $GREP -v "^: " < "$nlist" > "$nlist"S + fi + + if test -f "$nlist"S; then + eval "$global_symbol_to_cdecl"' < "$nlist"S >> "$output_objdir/$my_dlsyms"' + else + echo '/* NONE */' >> "$output_objdir/$my_dlsyms" + fi + + func_show_eval '$RM "${nlist}I"' + if test -n "$global_symbol_to_import"; then + eval "$global_symbol_to_import"' < "$nlist"S > "$nlist"I' + fi + + echo >> "$output_objdir/$my_dlsyms" "\ + +/* The mapping between symbol names and symbols. */ +typedef struct { + const char *name; + void *address; +} lt_dlsymlist; +extern LT_DLSYM_CONST lt_dlsymlist +lt_${my_prefix}_LTX_preloaded_symbols[];\ +" + + if test -s "$nlist"I; then + echo >> "$output_objdir/$my_dlsyms" "\ +static void lt_syminit(void) +{ + LT_DLSYM_CONST lt_dlsymlist *symbol = lt_${my_prefix}_LTX_preloaded_symbols; + for (; symbol->name; ++symbol) + {" + $SED 's/.*/ if (STREQ (symbol->name, \"&\")) symbol->address = (void *) \&&;/' < "$nlist"I >> "$output_objdir/$my_dlsyms" + echo >> "$output_objdir/$my_dlsyms" "\ + } +}" + fi + echo >> "$output_objdir/$my_dlsyms" "\ +LT_DLSYM_CONST lt_dlsymlist +lt_${my_prefix}_LTX_preloaded_symbols[] = +{ {\"$my_originator\", (void *) 0}," + + if test -s "$nlist"I; then + echo >> "$output_objdir/$my_dlsyms" "\ + {\"@INIT@\", (void *) <_syminit}," + fi + + case $need_lib_prefix in + no) + eval "$global_symbol_to_c_name_address" < "$nlist" >> "$output_objdir/$my_dlsyms" + ;; + *) + eval "$global_symbol_to_c_name_address_lib_prefix" < "$nlist" >> "$output_objdir/$my_dlsyms" + ;; + esac + echo >> "$output_objdir/$my_dlsyms" "\ + {0, (void *) 0} +}; + +/* This works around a problem in FreeBSD linker */ +#ifdef FREEBSD_WORKAROUND +static const void *lt_preloaded_setup() { + return lt_${my_prefix}_LTX_preloaded_symbols; +} +#endif + +#ifdef __cplusplus +} +#endif\ +" + } # !$opt_dry_run + + pic_flag_for_symtable= + case "$compile_command " in + *" -static "*) ;; + *) + case $host in + # compiling the symbol table file with pic_flag works around + # a FreeBSD bug that causes programs to crash when -lm is + # linked before any other PIC object. But we must not use + # pic_flag when linking with -static. The problem exists in + # FreeBSD 2.2.6 and is fixed in FreeBSD 3.1. + *-*-freebsd2.*|*-*-freebsd3.0*|*-*-freebsdelf3.0*) + pic_flag_for_symtable=" $pic_flag -DFREEBSD_WORKAROUND" ;; + *-*-hpux*) + pic_flag_for_symtable=" $pic_flag" ;; + *) + $my_pic_p && pic_flag_for_symtable=" $pic_flag" + ;; + esac + ;; + esac + symtab_cflags= + for arg in $LTCFLAGS; do + case $arg in + -pie | -fpie | -fPIE) ;; + *) func_append symtab_cflags " $arg" ;; + esac + done + + # Now compile the dynamic symbol file. + func_show_eval '(cd $output_objdir && $LTCC$symtab_cflags -c$no_builtin_flag$pic_flag_for_symtable "$my_dlsyms")' 'exit $?' + + # Clean up the generated files. + func_show_eval '$RM "$output_objdir/$my_dlsyms" "$nlist" "${nlist}S" "${nlist}T" "${nlist}I"' + + # Transform the symbol file into the correct name. + symfileobj=$output_objdir/${my_outputname}S.$objext + case $host in + *cygwin* | *mingw* | *cegcc* ) + if test -f "$output_objdir/$my_outputname.def"; then + compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"` + finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"` + else + compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$symfileobj%"` + finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$symfileobj%"` + fi + ;; + *) + compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$symfileobj%"` + finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$symfileobj%"` + ;; + esac + ;; + *) + func_fatal_error "unknown suffix for '$my_dlsyms'" + ;; + esac + else + # We keep going just in case the user didn't refer to + # lt_preloaded_symbols. The linker will fail if global_symbol_pipe + # really was required. + + # Nullify the symbol file. + compile_command=`$ECHO "$compile_command" | $SED "s% @SYMFILE@%%"` + finalize_command=`$ECHO "$finalize_command" | $SED "s% @SYMFILE@%%"` + fi +} + +# func_cygming_gnu_implib_p ARG +# This predicate returns with zero status (TRUE) if +# ARG is a GNU/binutils-style import library. Returns +# with nonzero status (FALSE) otherwise. +func_cygming_gnu_implib_p () +{ + $debug_cmd + + func_to_tool_file "$1" func_convert_file_msys_to_w32 + func_cygming_gnu_implib_tmp=`$NM "$func_to_tool_file_result" | eval "$global_symbol_pipe" | $EGREP ' (_head_[A-Za-z0-9_]+_[ad]l*|[A-Za-z0-9_]+_[ad]l*_iname)$'` + test -n "$func_cygming_gnu_implib_tmp" +} + +# func_cygming_ms_implib_p ARG +# This predicate returns with zero status (TRUE) if +# ARG is an MS-style import library. Returns +# with nonzero status (FALSE) otherwise. +func_cygming_ms_implib_p () +{ + $debug_cmd + + func_to_tool_file "$1" func_convert_file_msys_to_w32 + func_cygming_ms_implib_tmp=`$NM "$func_to_tool_file_result" | eval "$global_symbol_pipe" | $GREP '_NULL_IMPORT_DESCRIPTOR'` + test -n "$func_cygming_ms_implib_tmp" +} + +# func_win32_libid arg +# return the library type of file 'arg' +# +# Need a lot of goo to handle *both* DLLs and import libs +# Has to be a shell function in order to 'eat' the argument +# that is supplied when $file_magic_command is called. +# Despite the name, also deal with 64 bit binaries. +func_win32_libid () +{ + $debug_cmd + + win32_libid_type=unknown + win32_fileres=`file -L $1 2>/dev/null` + case $win32_fileres in + *ar\ archive\ import\ library*) # definitely import + win32_libid_type="x86 archive import" + ;; + *ar\ archive*) # could be an import, or static + # Keep the egrep pattern in sync with the one in _LT_CHECK_MAGIC_METHOD. + if eval $OBJDUMP -f $1 | $SED -e '10q' 2>/dev/null | + $EGREP 'file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)' >/dev/null; then + case $nm_interface in + "MS dumpbin") + if func_cygming_ms_implib_p "$1" || + func_cygming_gnu_implib_p "$1" + then + win32_nmres=import + else + win32_nmres= + fi + ;; + *) + func_to_tool_file "$1" func_convert_file_msys_to_w32 + win32_nmres=`eval $NM -f posix -A \"$func_to_tool_file_result\" | + $SED -n -e ' + 1,100{ + / I /{ + s|.*|import| + p + q + } + }'` + ;; + esac + case $win32_nmres in + import*) win32_libid_type="x86 archive import";; + *) win32_libid_type="x86 archive static";; + esac + fi + ;; + *DLL*) + win32_libid_type="x86 DLL" + ;; + *executable*) # but shell scripts are "executable" too... + case $win32_fileres in + *MS\ Windows\ PE\ Intel*) + win32_libid_type="x86 DLL" + ;; + esac + ;; + esac + $ECHO "$win32_libid_type" +} + +# func_cygming_dll_for_implib ARG +# +# Platform-specific function to extract the +# name of the DLL associated with the specified +# import library ARG. +# Invoked by eval'ing the libtool variable +# $sharedlib_from_linklib_cmd +# Result is available in the variable +# $sharedlib_from_linklib_result +func_cygming_dll_for_implib () +{ + $debug_cmd + + sharedlib_from_linklib_result=`$DLLTOOL --identify-strict --identify "$1"` +} + +# func_cygming_dll_for_implib_fallback_core SECTION_NAME LIBNAMEs +# +# The is the core of a fallback implementation of a +# platform-specific function to extract the name of the +# DLL associated with the specified import library LIBNAME. +# +# SECTION_NAME is either .idata$6 or .idata$7, depending +# on the platform and compiler that created the implib. +# +# Echos the name of the DLL associated with the +# specified import library. +func_cygming_dll_for_implib_fallback_core () +{ + $debug_cmd + + match_literal=`$ECHO "$1" | $SED "$sed_make_literal_regex"` + $OBJDUMP -s --section "$1" "$2" 2>/dev/null | + $SED '/^Contents of section '"$match_literal"':/{ + # Place marker at beginning of archive member dllname section + s/.*/====MARK====/ + p + d + } + # These lines can sometimes be longer than 43 characters, but + # are always uninteresting + /:[ ]*file format pe[i]\{,1\}-/d + /^In archive [^:]*:/d + # Ensure marker is printed + /^====MARK====/p + # Remove all lines with less than 43 characters + /^.\{43\}/!d + # From remaining lines, remove first 43 characters + s/^.\{43\}//' | + $SED -n ' + # Join marker and all lines until next marker into a single line + /^====MARK====/ b para + H + $ b para + b + :para + x + s/\n//g + # Remove the marker + s/^====MARK====// + # Remove trailing dots and whitespace + s/[\. \t]*$// + # Print + /./p' | + # we now have a list, one entry per line, of the stringified + # contents of the appropriate section of all members of the + # archive that possess that section. Heuristic: eliminate + # all those that have a first or second character that is + # a '.' (that is, objdump's representation of an unprintable + # character.) This should work for all archives with less than + # 0x302f exports -- but will fail for DLLs whose name actually + # begins with a literal '.' or a single character followed by + # a '.'. + # + # Of those that remain, print the first one. + $SED -e '/^\./d;/^.\./d;q' +} + +# func_cygming_dll_for_implib_fallback ARG +# Platform-specific function to extract the +# name of the DLL associated with the specified +# import library ARG. +# +# This fallback implementation is for use when $DLLTOOL +# does not support the --identify-strict option. +# Invoked by eval'ing the libtool variable +# $sharedlib_from_linklib_cmd +# Result is available in the variable +# $sharedlib_from_linklib_result +func_cygming_dll_for_implib_fallback () +{ + $debug_cmd + + if func_cygming_gnu_implib_p "$1"; then + # binutils import library + sharedlib_from_linklib_result=`func_cygming_dll_for_implib_fallback_core '.idata$7' "$1"` + elif func_cygming_ms_implib_p "$1"; then + # ms-generated import library + sharedlib_from_linklib_result=`func_cygming_dll_for_implib_fallback_core '.idata$6' "$1"` + else + # unknown + sharedlib_from_linklib_result= + fi +} + + +# func_extract_an_archive dir oldlib +func_extract_an_archive () +{ + $debug_cmd + + f_ex_an_ar_dir=$1; shift + f_ex_an_ar_oldlib=$1 + if test yes = "$lock_old_archive_extraction"; then + lockfile=$f_ex_an_ar_oldlib.lock + until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do + func_echo "Waiting for $lockfile to be removed" + sleep 2 + done + fi + func_show_eval "(cd \$f_ex_an_ar_dir && $AR x \"\$f_ex_an_ar_oldlib\")" \ + 'stat=$?; rm -f "$lockfile"; exit $stat' + if test yes = "$lock_old_archive_extraction"; then + $opt_dry_run || rm -f "$lockfile" + fi + if ($AR t "$f_ex_an_ar_oldlib" | sort | sort -uc >/dev/null 2>&1); then + : + else + func_fatal_error "object name conflicts in archive: $f_ex_an_ar_dir/$f_ex_an_ar_oldlib" + fi +} + + +# func_extract_archives gentop oldlib ... +func_extract_archives () +{ + $debug_cmd + + my_gentop=$1; shift + my_oldlibs=${1+"$@"} + my_oldobjs= + my_xlib= + my_xabs= + my_xdir= + + for my_xlib in $my_oldlibs; do + # Extract the objects. + case $my_xlib in + [\\/]* | [A-Za-z]:[\\/]*) my_xabs=$my_xlib ;; + *) my_xabs=`pwd`"/$my_xlib" ;; + esac + func_basename "$my_xlib" + my_xlib=$func_basename_result + my_xlib_u=$my_xlib + while :; do + case " $extracted_archives " in + *" $my_xlib_u "*) + func_arith $extracted_serial + 1 + extracted_serial=$func_arith_result + my_xlib_u=lt$extracted_serial-$my_xlib ;; + *) break ;; + esac + done + extracted_archives="$extracted_archives $my_xlib_u" + my_xdir=$my_gentop/$my_xlib_u + + func_mkdir_p "$my_xdir" + + case $host in + *-darwin*) + func_verbose "Extracting $my_xabs" + # Do not bother doing anything if just a dry run + $opt_dry_run || { + darwin_orig_dir=`pwd` + cd $my_xdir || exit $? + darwin_archive=$my_xabs + darwin_curdir=`pwd` + func_basename "$darwin_archive" + darwin_base_archive=$func_basename_result + darwin_arches=`$LIPO -info "$darwin_archive" 2>/dev/null | $GREP Architectures 2>/dev/null || true` + if test -n "$darwin_arches"; then + darwin_arches=`$ECHO "$darwin_arches" | $SED -e 's/.*are://'` + darwin_arch= + func_verbose "$darwin_base_archive has multiple architectures $darwin_arches" + for darwin_arch in $darwin_arches; do + func_mkdir_p "unfat-$$/$darwin_base_archive-$darwin_arch" + $LIPO -thin $darwin_arch -output "unfat-$$/$darwin_base_archive-$darwin_arch/$darwin_base_archive" "$darwin_archive" + cd "unfat-$$/$darwin_base_archive-$darwin_arch" + func_extract_an_archive "`pwd`" "$darwin_base_archive" + cd "$darwin_curdir" + $RM "unfat-$$/$darwin_base_archive-$darwin_arch/$darwin_base_archive" + done # $darwin_arches + ## Okay now we've a bunch of thin objects, gotta fatten them up :) + darwin_filelist=`find unfat-$$ -type f -name \*.o -print -o -name \*.lo -print | $SED -e "$sed_basename" | sort -u` + darwin_file= + darwin_files= + for darwin_file in $darwin_filelist; do + darwin_files=`find unfat-$$ -name $darwin_file -print | sort | $NL2SP` + $LIPO -create -output "$darwin_file" $darwin_files + done # $darwin_filelist + $RM -rf unfat-$$ + cd "$darwin_orig_dir" + else + cd $darwin_orig_dir + func_extract_an_archive "$my_xdir" "$my_xabs" + fi # $darwin_arches + } # !$opt_dry_run + ;; + *) + func_extract_an_archive "$my_xdir" "$my_xabs" + ;; + esac + my_oldobjs="$my_oldobjs "`find $my_xdir -name \*.$objext -print -o -name \*.lo -print | sort | $NL2SP` + done + + func_extract_archives_result=$my_oldobjs +} + + +# func_emit_wrapper [arg=no] +# +# Emit a libtool wrapper script on stdout. +# Don't directly open a file because we may want to +# incorporate the script contents within a cygwin/mingw +# wrapper executable. Must ONLY be called from within +# func_mode_link because it depends on a number of variables +# set therein. +# +# ARG is the value that the WRAPPER_SCRIPT_BELONGS_IN_OBJDIR +# variable will take. If 'yes', then the emitted script +# will assume that the directory where it is stored is +# the $objdir directory. This is a cygwin/mingw-specific +# behavior. +func_emit_wrapper () +{ + func_emit_wrapper_arg1=${1-no} + + $ECHO "\ +#! $SHELL + +# $output - temporary wrapper script for $objdir/$outputname +# Generated by $PROGRAM (GNU $PACKAGE) $VERSION +# +# The $output program cannot be directly executed until all the libtool +# libraries that it depends on are installed. +# +# This wrapper script should never be moved out of the build directory. +# If it is, it will not operate correctly. + +# Sed substitution that helps us do robust quoting. It backslashifies +# metacharacters that are still active within double-quoted strings. +sed_quote_subst='$sed_quote_subst' + +# Be Bourne compatible +if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then + emulate sh + NULLCMD=: + # Zsh 3.x and 4.x performs word splitting on \${1+\"\$@\"}, which + # is contrary to our usage. Disable this feature. + alias -g '\${1+\"\$@\"}'='\"\$@\"' + setopt NO_GLOB_SUBST +else + case \`(set -o) 2>/dev/null\` in *posix*) set -o posix;; esac +fi +BIN_SH=xpg4; export BIN_SH # for Tru64 +DUALCASE=1; export DUALCASE # for MKS sh + +# The HP-UX ksh and POSIX shell print the target directory to stdout +# if CDPATH is set. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + +relink_command=\"$relink_command\" + +# This environment variable determines our operation mode. +if test \"\$libtool_install_magic\" = \"$magic\"; then + # install mode needs the following variables: + generated_by_libtool_version='$macro_version' + notinst_deplibs='$notinst_deplibs' +else + # When we are sourced in execute mode, \$file and \$ECHO are already set. + if test \"\$libtool_execute_magic\" != \"$magic\"; then + file=\"\$0\"" + + qECHO=`$ECHO "$ECHO" | $SED "$sed_quote_subst"` + $ECHO "\ + +# A function that is used when there is no print builtin or printf. +func_fallback_echo () +{ + eval 'cat <<_LTECHO_EOF +\$1 +_LTECHO_EOF' +} + ECHO=\"$qECHO\" + fi + +# Very basic option parsing. These options are (a) specific to +# the libtool wrapper, (b) are identical between the wrapper +# /script/ and the wrapper /executable/ that is used only on +# windows platforms, and (c) all begin with the string "--lt-" +# (application programs are unlikely to have options that match +# this pattern). +# +# There are only two supported options: --lt-debug and +# --lt-dump-script. There is, deliberately, no --lt-help. +# +# The first argument to this parsing function should be the +# script's $0 value, followed by "$@". +lt_option_debug= +func_parse_lt_options () +{ + lt_script_arg0=\$0 + shift + for lt_opt + do + case \"\$lt_opt\" in + --lt-debug) lt_option_debug=1 ;; + --lt-dump-script) + lt_dump_D=\`\$ECHO \"X\$lt_script_arg0\" | $SED -e 's/^X//' -e 's%/[^/]*$%%'\` + test \"X\$lt_dump_D\" = \"X\$lt_script_arg0\" && lt_dump_D=. + lt_dump_F=\`\$ECHO \"X\$lt_script_arg0\" | $SED -e 's/^X//' -e 's%^.*/%%'\` + cat \"\$lt_dump_D/\$lt_dump_F\" + exit 0 + ;; + --lt-*) + \$ECHO \"Unrecognized --lt- option: '\$lt_opt'\" 1>&2 + exit 1 + ;; + esac + done + + # Print the debug banner immediately: + if test -n \"\$lt_option_debug\"; then + echo \"$outputname:$output:\$LINENO: libtool wrapper (GNU $PACKAGE) $VERSION\" 1>&2 + fi +} + +# Used when --lt-debug. Prints its arguments to stdout +# (redirection is the responsibility of the caller) +func_lt_dump_args () +{ + lt_dump_args_N=1; + for lt_arg + do + \$ECHO \"$outputname:$output:\$LINENO: newargv[\$lt_dump_args_N]: \$lt_arg\" + lt_dump_args_N=\`expr \$lt_dump_args_N + 1\` + done +} + +# Core function for launching the target application +func_exec_program_core () +{ +" + case $host in + # Backslashes separate directories on plain windows + *-*-mingw | *-*-os2* | *-cegcc*) + $ECHO "\ + if test -n \"\$lt_option_debug\"; then + \$ECHO \"$outputname:$output:\$LINENO: newargv[0]: \$progdir\\\\\$program\" 1>&2 + func_lt_dump_args \${1+\"\$@\"} 1>&2 + fi + exec \"\$progdir\\\\\$program\" \${1+\"\$@\"} +" + ;; + + *) + $ECHO "\ + if test -n \"\$lt_option_debug\"; then + \$ECHO \"$outputname:$output:\$LINENO: newargv[0]: \$progdir/\$program\" 1>&2 + func_lt_dump_args \${1+\"\$@\"} 1>&2 + fi + exec \"\$progdir/\$program\" \${1+\"\$@\"} +" + ;; + esac + $ECHO "\ + \$ECHO \"\$0: cannot exec \$program \$*\" 1>&2 + exit 1 +} + +# A function to encapsulate launching the target application +# Strips options in the --lt-* namespace from \$@ and +# launches target application with the remaining arguments. +func_exec_program () +{ + case \" \$* \" in + *\\ --lt-*) + for lt_wr_arg + do + case \$lt_wr_arg in + --lt-*) ;; + *) set x \"\$@\" \"\$lt_wr_arg\"; shift;; + esac + shift + done ;; + esac + func_exec_program_core \${1+\"\$@\"} +} + + # Parse options + func_parse_lt_options \"\$0\" \${1+\"\$@\"} + + # Find the directory that this script lives in. + thisdir=\`\$ECHO \"\$file\" | $SED 's%/[^/]*$%%'\` + test \"x\$thisdir\" = \"x\$file\" && thisdir=. + + # Follow symbolic links until we get to the real thisdir. + file=\`ls -ld \"\$file\" | $SED -n 's/.*-> //p'\` + while test -n \"\$file\"; do + destdir=\`\$ECHO \"\$file\" | $SED 's%/[^/]*\$%%'\` + + # If there was a directory component, then change thisdir. + if test \"x\$destdir\" != \"x\$file\"; then + case \"\$destdir\" in + [\\\\/]* | [A-Za-z]:[\\\\/]*) thisdir=\"\$destdir\" ;; + *) thisdir=\"\$thisdir/\$destdir\" ;; + esac + fi + + file=\`\$ECHO \"\$file\" | $SED 's%^.*/%%'\` + file=\`ls -ld \"\$thisdir/\$file\" | $SED -n 's/.*-> //p'\` + done + + # Usually 'no', except on cygwin/mingw when embedded into + # the cwrapper. + WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=$func_emit_wrapper_arg1 + if test \"\$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR\" = \"yes\"; then + # special case for '.' + if test \"\$thisdir\" = \".\"; then + thisdir=\`pwd\` + fi + # remove .libs from thisdir + case \"\$thisdir\" in + *[\\\\/]$objdir ) thisdir=\`\$ECHO \"\$thisdir\" | $SED 's%[\\\\/][^\\\\/]*$%%'\` ;; + $objdir ) thisdir=. ;; + esac + fi + + # Try to get the absolute directory name. + absdir=\`cd \"\$thisdir\" && pwd\` + test -n \"\$absdir\" && thisdir=\"\$absdir\" +" + + if test yes = "$fast_install"; then + $ECHO "\ + program=lt-'$outputname'$exeext + progdir=\"\$thisdir/$objdir\" + + if test ! -f \"\$progdir/\$program\" || + { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | $SED 1q\`; \\ + test \"X\$file\" != \"X\$progdir/\$program\"; }; then + + file=\"\$\$-\$program\" + + if test ! -d \"\$progdir\"; then + $MKDIR \"\$progdir\" + else + $RM \"\$progdir/\$file\" + fi" + + $ECHO "\ + + # relink executable if necessary + if test -n \"\$relink_command\"; then + if relink_command_output=\`eval \$relink_command 2>&1\`; then : + else + \$ECHO \"\$relink_command_output\" >&2 + $RM \"\$progdir/\$file\" + exit 1 + fi + fi + + $MV \"\$progdir/\$file\" \"\$progdir/\$program\" 2>/dev/null || + { $RM \"\$progdir/\$program\"; + $MV \"\$progdir/\$file\" \"\$progdir/\$program\"; } + $RM \"\$progdir/\$file\" + fi" + else + $ECHO "\ + program='$outputname' + progdir=\"\$thisdir/$objdir\" +" + fi + + $ECHO "\ + + if test -f \"\$progdir/\$program\"; then" + + # fixup the dll searchpath if we need to. + # + # Fix the DLL searchpath if we need to. Do this before prepending + # to shlibpath, because on Windows, both are PATH and uninstalled + # libraries must come first. + if test -n "$dllsearchpath"; then + $ECHO "\ + # Add the dll search path components to the executable PATH + PATH=$dllsearchpath:\$PATH +" + fi + + # Export our shlibpath_var if we have one. + if test yes = "$shlibpath_overrides_runpath" && test -n "$shlibpath_var" && test -n "$temp_rpath"; then + $ECHO "\ + # Add our own library path to $shlibpath_var + $shlibpath_var=\"$temp_rpath\$$shlibpath_var\" + + # Some systems cannot cope with colon-terminated $shlibpath_var + # The second colon is a workaround for a bug in BeOS R4 sed + $shlibpath_var=\`\$ECHO \"\$$shlibpath_var\" | $SED 's/::*\$//'\` + + export $shlibpath_var +" + fi + + $ECHO "\ + if test \"\$libtool_execute_magic\" != \"$magic\"; then + # Run the actual program with our arguments. + func_exec_program \${1+\"\$@\"} + fi + else + # The program doesn't exist. + \$ECHO \"\$0: error: '\$progdir/\$program' does not exist\" 1>&2 + \$ECHO \"This script is just a wrapper for \$program.\" 1>&2 + \$ECHO \"See the $PACKAGE documentation for more information.\" 1>&2 + exit 1 + fi +fi\ +" +} + + +# func_emit_cwrapperexe_src +# emit the source code for a wrapper executable on stdout +# Must ONLY be called from within func_mode_link because +# it depends on a number of variable set therein. +func_emit_cwrapperexe_src () +{ + cat < +#include +#ifdef _MSC_VER +# include +# include +# include +#else +# include +# include +# ifdef __CYGWIN__ +# include +# endif +#endif +#include +#include +#include +#include +#include +#include +#include +#include + +#define STREQ(s1, s2) (strcmp ((s1), (s2)) == 0) + +/* declarations of non-ANSI functions */ +#if defined __MINGW32__ +# ifdef __STRICT_ANSI__ +int _putenv (const char *); +# endif +#elif defined __CYGWIN__ +# ifdef __STRICT_ANSI__ +char *realpath (const char *, char *); +int putenv (char *); +int setenv (const char *, const char *, int); +# endif +/* #elif defined other_platform || defined ... */ +#endif + +/* portability defines, excluding path handling macros */ +#if defined _MSC_VER +# define setmode _setmode +# define stat _stat +# define chmod _chmod +# define getcwd _getcwd +# define putenv _putenv +# define S_IXUSR _S_IEXEC +#elif defined __MINGW32__ +# define setmode _setmode +# define stat _stat +# define chmod _chmod +# define getcwd _getcwd +# define putenv _putenv +#elif defined __CYGWIN__ +# define HAVE_SETENV +# define FOPEN_WB "wb" +/* #elif defined other platforms ... */ +#endif + +#if defined PATH_MAX +# define LT_PATHMAX PATH_MAX +#elif defined MAXPATHLEN +# define LT_PATHMAX MAXPATHLEN +#else +# define LT_PATHMAX 1024 +#endif + +#ifndef S_IXOTH +# define S_IXOTH 0 +#endif +#ifndef S_IXGRP +# define S_IXGRP 0 +#endif + +/* path handling portability macros */ +#ifndef DIR_SEPARATOR +# define DIR_SEPARATOR '/' +# define PATH_SEPARATOR ':' +#endif + +#if defined _WIN32 || defined __MSDOS__ || defined __DJGPP__ || \ + defined __OS2__ +# define HAVE_DOS_BASED_FILE_SYSTEM +# define FOPEN_WB "wb" +# ifndef DIR_SEPARATOR_2 +# define DIR_SEPARATOR_2 '\\' +# endif +# ifndef PATH_SEPARATOR_2 +# define PATH_SEPARATOR_2 ';' +# endif +#endif + +#ifndef DIR_SEPARATOR_2 +# define IS_DIR_SEPARATOR(ch) ((ch) == DIR_SEPARATOR) +#else /* DIR_SEPARATOR_2 */ +# define IS_DIR_SEPARATOR(ch) \ + (((ch) == DIR_SEPARATOR) || ((ch) == DIR_SEPARATOR_2)) +#endif /* DIR_SEPARATOR_2 */ + +#ifndef PATH_SEPARATOR_2 +# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR) +#else /* PATH_SEPARATOR_2 */ +# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR_2) +#endif /* PATH_SEPARATOR_2 */ + +#ifndef FOPEN_WB +# define FOPEN_WB "w" +#endif +#ifndef _O_BINARY +# define _O_BINARY 0 +#endif + +#define XMALLOC(type, num) ((type *) xmalloc ((num) * sizeof(type))) +#define XFREE(stale) do { \ + if (stale) { free (stale); stale = 0; } \ +} while (0) + +#if defined LT_DEBUGWRAPPER +static int lt_debug = 1; +#else +static int lt_debug = 0; +#endif + +const char *program_name = "libtool-wrapper"; /* in case xstrdup fails */ + +void *xmalloc (size_t num); +char *xstrdup (const char *string); +const char *base_name (const char *name); +char *find_executable (const char *wrapper); +char *chase_symlinks (const char *pathspec); +int make_executable (const char *path); +int check_executable (const char *path); +char *strendzap (char *str, const char *pat); +void lt_debugprintf (const char *file, int line, const char *fmt, ...); +void lt_fatal (const char *file, int line, const char *message, ...); +static const char *nonnull (const char *s); +static const char *nonempty (const char *s); +void lt_setenv (const char *name, const char *value); +char *lt_extend_str (const char *orig_value, const char *add, int to_end); +void lt_update_exe_path (const char *name, const char *value); +void lt_update_lib_path (const char *name, const char *value); +char **prepare_spawn (char **argv); +void lt_dump_script (FILE *f); +EOF + + cat <= 0) + && (st.st_mode & (S_IXUSR | S_IXGRP | S_IXOTH))) + return 1; + else + return 0; +} + +int +make_executable (const char *path) +{ + int rval = 0; + struct stat st; + + lt_debugprintf (__FILE__, __LINE__, "(make_executable): %s\n", + nonempty (path)); + if ((!path) || (!*path)) + return 0; + + if (stat (path, &st) >= 0) + { + rval = chmod (path, st.st_mode | S_IXOTH | S_IXGRP | S_IXUSR); + } + return rval; +} + +/* Searches for the full path of the wrapper. Returns + newly allocated full path name if found, NULL otherwise + Does not chase symlinks, even on platforms that support them. +*/ +char * +find_executable (const char *wrapper) +{ + int has_slash = 0; + const char *p; + const char *p_next; + /* static buffer for getcwd */ + char tmp[LT_PATHMAX + 1]; + size_t tmp_len; + char *concat_name; + + lt_debugprintf (__FILE__, __LINE__, "(find_executable): %s\n", + nonempty (wrapper)); + + if ((wrapper == NULL) || (*wrapper == '\0')) + return NULL; + + /* Absolute path? */ +#if defined HAVE_DOS_BASED_FILE_SYSTEM + if (isalpha ((unsigned char) wrapper[0]) && wrapper[1] == ':') + { + concat_name = xstrdup (wrapper); + if (check_executable (concat_name)) + return concat_name; + XFREE (concat_name); + } + else + { +#endif + if (IS_DIR_SEPARATOR (wrapper[0])) + { + concat_name = xstrdup (wrapper); + if (check_executable (concat_name)) + return concat_name; + XFREE (concat_name); + } +#if defined HAVE_DOS_BASED_FILE_SYSTEM + } +#endif + + for (p = wrapper; *p; p++) + if (*p == '/') + { + has_slash = 1; + break; + } + if (!has_slash) + { + /* no slashes; search PATH */ + const char *path = getenv ("PATH"); + if (path != NULL) + { + for (p = path; *p; p = p_next) + { + const char *q; + size_t p_len; + for (q = p; *q; q++) + if (IS_PATH_SEPARATOR (*q)) + break; + p_len = (size_t) (q - p); + p_next = (*q == '\0' ? q : q + 1); + if (p_len == 0) + { + /* empty path: current directory */ + if (getcwd (tmp, LT_PATHMAX) == NULL) + lt_fatal (__FILE__, __LINE__, "getcwd failed: %s", + nonnull (strerror (errno))); + tmp_len = strlen (tmp); + concat_name = + XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1); + memcpy (concat_name, tmp, tmp_len); + concat_name[tmp_len] = '/'; + strcpy (concat_name + tmp_len + 1, wrapper); + } + else + { + concat_name = + XMALLOC (char, p_len + 1 + strlen (wrapper) + 1); + memcpy (concat_name, p, p_len); + concat_name[p_len] = '/'; + strcpy (concat_name + p_len + 1, wrapper); + } + if (check_executable (concat_name)) + return concat_name; + XFREE (concat_name); + } + } + /* not found in PATH; assume curdir */ + } + /* Relative path | not found in path: prepend cwd */ + if (getcwd (tmp, LT_PATHMAX) == NULL) + lt_fatal (__FILE__, __LINE__, "getcwd failed: %s", + nonnull (strerror (errno))); + tmp_len = strlen (tmp); + concat_name = XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1); + memcpy (concat_name, tmp, tmp_len); + concat_name[tmp_len] = '/'; + strcpy (concat_name + tmp_len + 1, wrapper); + + if (check_executable (concat_name)) + return concat_name; + XFREE (concat_name); + return NULL; +} + +char * +chase_symlinks (const char *pathspec) +{ +#ifndef S_ISLNK + return xstrdup (pathspec); +#else + char buf[LT_PATHMAX]; + struct stat s; + char *tmp_pathspec = xstrdup (pathspec); + char *p; + int has_symlinks = 0; + while (strlen (tmp_pathspec) && !has_symlinks) + { + lt_debugprintf (__FILE__, __LINE__, + "checking path component for symlinks: %s\n", + tmp_pathspec); + if (lstat (tmp_pathspec, &s) == 0) + { + if (S_ISLNK (s.st_mode) != 0) + { + has_symlinks = 1; + break; + } + + /* search backwards for last DIR_SEPARATOR */ + p = tmp_pathspec + strlen (tmp_pathspec) - 1; + while ((p > tmp_pathspec) && (!IS_DIR_SEPARATOR (*p))) + p--; + if ((p == tmp_pathspec) && (!IS_DIR_SEPARATOR (*p))) + { + /* no more DIR_SEPARATORS left */ + break; + } + *p = '\0'; + } + else + { + lt_fatal (__FILE__, __LINE__, + "error accessing file \"%s\": %s", + tmp_pathspec, nonnull (strerror (errno))); + } + } + XFREE (tmp_pathspec); + + if (!has_symlinks) + { + return xstrdup (pathspec); + } + + tmp_pathspec = realpath (pathspec, buf); + if (tmp_pathspec == 0) + { + lt_fatal (__FILE__, __LINE__, + "could not follow symlinks for %s", pathspec); + } + return xstrdup (tmp_pathspec); +#endif +} + +char * +strendzap (char *str, const char *pat) +{ + size_t len, patlen; + + assert (str != NULL); + assert (pat != NULL); + + len = strlen (str); + patlen = strlen (pat); + + if (patlen <= len) + { + str += len - patlen; + if (STREQ (str, pat)) + *str = '\0'; + } + return str; +} + +void +lt_debugprintf (const char *file, int line, const char *fmt, ...) +{ + va_list args; + if (lt_debug) + { + (void) fprintf (stderr, "%s:%s:%d: ", program_name, file, line); + va_start (args, fmt); + (void) vfprintf (stderr, fmt, args); + va_end (args); + } +} + +static void +lt_error_core (int exit_status, const char *file, + int line, const char *mode, + const char *message, va_list ap) +{ + fprintf (stderr, "%s:%s:%d: %s: ", program_name, file, line, mode); + vfprintf (stderr, message, ap); + fprintf (stderr, ".\n"); + + if (exit_status >= 0) + exit (exit_status); +} + +void +lt_fatal (const char *file, int line, const char *message, ...) +{ + va_list ap; + va_start (ap, message); + lt_error_core (EXIT_FAILURE, file, line, "FATAL", message, ap); + va_end (ap); +} + +static const char * +nonnull (const char *s) +{ + return s ? s : "(null)"; +} + +static const char * +nonempty (const char *s) +{ + return (s && !*s) ? "(empty)" : nonnull (s); +} + +void +lt_setenv (const char *name, const char *value) +{ + lt_debugprintf (__FILE__, __LINE__, + "(lt_setenv) setting '%s' to '%s'\n", + nonnull (name), nonnull (value)); + { +#ifdef HAVE_SETENV + /* always make a copy, for consistency with !HAVE_SETENV */ + char *str = xstrdup (value); + setenv (name, str, 1); +#else + size_t len = strlen (name) + 1 + strlen (value) + 1; + char *str = XMALLOC (char, len); + sprintf (str, "%s=%s", name, value); + if (putenv (str) != EXIT_SUCCESS) + { + XFREE (str); + } +#endif + } +} + +char * +lt_extend_str (const char *orig_value, const char *add, int to_end) +{ + char *new_value; + if (orig_value && *orig_value) + { + size_t orig_value_len = strlen (orig_value); + size_t add_len = strlen (add); + new_value = XMALLOC (char, add_len + orig_value_len + 1); + if (to_end) + { + strcpy (new_value, orig_value); + strcpy (new_value + orig_value_len, add); + } + else + { + strcpy (new_value, add); + strcpy (new_value + add_len, orig_value); + } + } + else + { + new_value = xstrdup (add); + } + return new_value; +} + +void +lt_update_exe_path (const char *name, const char *value) +{ + lt_debugprintf (__FILE__, __LINE__, + "(lt_update_exe_path) modifying '%s' by prepending '%s'\n", + nonnull (name), nonnull (value)); + + if (name && *name && value && *value) + { + char *new_value = lt_extend_str (getenv (name), value, 0); + /* some systems can't cope with a ':'-terminated path #' */ + size_t len = strlen (new_value); + while ((len > 0) && IS_PATH_SEPARATOR (new_value[len-1])) + { + new_value[--len] = '\0'; + } + lt_setenv (name, new_value); + XFREE (new_value); + } +} + +void +lt_update_lib_path (const char *name, const char *value) +{ + lt_debugprintf (__FILE__, __LINE__, + "(lt_update_lib_path) modifying '%s' by prepending '%s'\n", + nonnull (name), nonnull (value)); + + if (name && *name && value && *value) + { + char *new_value = lt_extend_str (getenv (name), value, 0); + lt_setenv (name, new_value); + XFREE (new_value); + } +} + +EOF + case $host_os in + mingw*) + cat <<"EOF" + +/* Prepares an argument vector before calling spawn(). + Note that spawn() does not by itself call the command interpreter + (getenv ("COMSPEC") != NULL ? getenv ("COMSPEC") : + ({ OSVERSIONINFO v; v.dwOSVersionInfoSize = sizeof(OSVERSIONINFO); + GetVersionEx(&v); + v.dwPlatformId == VER_PLATFORM_WIN32_NT; + }) ? "cmd.exe" : "command.com"). + Instead it simply concatenates the arguments, separated by ' ', and calls + CreateProcess(). We must quote the arguments since Win32 CreateProcess() + interprets characters like ' ', '\t', '\\', '"' (but not '<' and '>') in a + special way: + - Space and tab are interpreted as delimiters. They are not treated as + delimiters if they are surrounded by double quotes: "...". + - Unescaped double quotes are removed from the input. Their only effect is + that within double quotes, space and tab are treated like normal + characters. + - Backslashes not followed by double quotes are not special. + - But 2*n+1 backslashes followed by a double quote become + n backslashes followed by a double quote (n >= 0): + \" -> " + \\\" -> \" + \\\\\" -> \\" + */ +#define SHELL_SPECIAL_CHARS "\"\\ \001\002\003\004\005\006\007\010\011\012\013\014\015\016\017\020\021\022\023\024\025\026\027\030\031\032\033\034\035\036\037" +#define SHELL_SPACE_CHARS " \001\002\003\004\005\006\007\010\011\012\013\014\015\016\017\020\021\022\023\024\025\026\027\030\031\032\033\034\035\036\037" +char ** +prepare_spawn (char **argv) +{ + size_t argc; + char **new_argv; + size_t i; + + /* Count number of arguments. */ + for (argc = 0; argv[argc] != NULL; argc++) + ; + + /* Allocate new argument vector. */ + new_argv = XMALLOC (char *, argc + 1); + + /* Put quoted arguments into the new argument vector. */ + for (i = 0; i < argc; i++) + { + const char *string = argv[i]; + + if (string[0] == '\0') + new_argv[i] = xstrdup ("\"\""); + else if (strpbrk (string, SHELL_SPECIAL_CHARS) != NULL) + { + int quote_around = (strpbrk (string, SHELL_SPACE_CHARS) != NULL); + size_t length; + unsigned int backslashes; + const char *s; + char *quoted_string; + char *p; + + length = 0; + backslashes = 0; + if (quote_around) + length++; + for (s = string; *s != '\0'; s++) + { + char c = *s; + if (c == '"') + length += backslashes + 1; + length++; + if (c == '\\') + backslashes++; + else + backslashes = 0; + } + if (quote_around) + length += backslashes + 1; + + quoted_string = XMALLOC (char, length + 1); + + p = quoted_string; + backslashes = 0; + if (quote_around) + *p++ = '"'; + for (s = string; *s != '\0'; s++) + { + char c = *s; + if (c == '"') + { + unsigned int j; + for (j = backslashes + 1; j > 0; j--) + *p++ = '\\'; + } + *p++ = c; + if (c == '\\') + backslashes++; + else + backslashes = 0; + } + if (quote_around) + { + unsigned int j; + for (j = backslashes; j > 0; j--) + *p++ = '\\'; + *p++ = '"'; + } + *p = '\0'; + + new_argv[i] = quoted_string; + } + else + new_argv[i] = (char *) string; + } + new_argv[argc] = NULL; + + return new_argv; +} +EOF + ;; + esac + + cat <<"EOF" +void lt_dump_script (FILE* f) +{ +EOF + func_emit_wrapper yes | + $SED -n -e ' +s/^\(.\{79\}\)\(..*\)/\1\ +\2/ +h +s/\([\\"]\)/\\\1/g +s/$/\\n/ +s/\([^\n]*\).*/ fputs ("\1", f);/p +g +D' + cat <<"EOF" +} +EOF +} +# end: func_emit_cwrapperexe_src + +# func_win32_import_lib_p ARG +# True if ARG is an import lib, as indicated by $file_magic_cmd +func_win32_import_lib_p () +{ + $debug_cmd + + case `eval $file_magic_cmd \"\$1\" 2>/dev/null | $SED -e 10q` in + *import*) : ;; + *) false ;; + esac +} + +# func_suncc_cstd_abi +# !!ONLY CALL THIS FOR SUN CC AFTER $compile_command IS FULLY EXPANDED!! +# Several compiler flags select an ABI that is incompatible with the +# Cstd library. Avoid specifying it if any are in CXXFLAGS. +func_suncc_cstd_abi () +{ + $debug_cmd + + case " $compile_command " in + *" -compat=g "*|*\ -std=c++[0-9][0-9]\ *|*" -library=stdcxx4 "*|*" -library=stlport4 "*) + suncc_use_cstd_abi=no + ;; + *) + suncc_use_cstd_abi=yes + ;; + esac +} + +# func_mode_link arg... +func_mode_link () +{ + $debug_cmd + + case $host in + *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) + # It is impossible to link a dll without this setting, and + # we shouldn't force the makefile maintainer to figure out + # what system we are compiling for in order to pass an extra + # flag for every libtool invocation. + # allow_undefined=no + + # FIXME: Unfortunately, there are problems with the above when trying + # to make a dll that has undefined symbols, in which case not + # even a static library is built. For now, we need to specify + # -no-undefined on the libtool link line when we can be certain + # that all symbols are satisfied, otherwise we get a static library. + allow_undefined=yes + ;; + *) + allow_undefined=yes + ;; + esac + libtool_args=$nonopt + base_compile="$nonopt $@" + compile_command=$nonopt + finalize_command=$nonopt + + compile_rpath= + finalize_rpath= + compile_shlibpath= + finalize_shlibpath= + convenience= + old_convenience= + deplibs= + old_deplibs= + compiler_flags= + linker_flags= + dllsearchpath= + lib_search_path=`pwd` + inst_prefix_dir= + new_inherited_linker_flags= + + avoid_version=no + bindir= + dlfiles= + dlprefiles= + dlself=no + export_dynamic=no + export_symbols= + export_symbols_regex= + generated= + libobjs= + ltlibs= + module=no + no_install=no + objs= + os2dllname= + non_pic_objects= + precious_files_regex= + prefer_static_libs=no + preload=false + prev= + prevarg= + release= + rpath= + xrpath= + perm_rpath= + temp_rpath= + thread_safe=no + vinfo= + vinfo_number=no + weak_libs= + single_module=$wl-single_module + func_infer_tag $base_compile + + # We need to know -static, to get the right output filenames. + for arg + do + case $arg in + -shared) + test yes != "$build_libtool_libs" \ + && func_fatal_configuration "cannot build a shared library" + build_old_libs=no + break + ;; + -all-static | -static | -static-libtool-libs) + case $arg in + -all-static) + if test yes = "$build_libtool_libs" && test -z "$link_static_flag"; then + func_warning "complete static linking is impossible in this configuration" + fi + if test -n "$link_static_flag"; then + dlopen_self=$dlopen_self_static + fi + prefer_static_libs=yes + ;; + -static) + if test -z "$pic_flag" && test -n "$link_static_flag"; then + dlopen_self=$dlopen_self_static + fi + prefer_static_libs=built + ;; + -static-libtool-libs) + if test -z "$pic_flag" && test -n "$link_static_flag"; then + dlopen_self=$dlopen_self_static + fi + prefer_static_libs=yes + ;; + esac + build_libtool_libs=no + build_old_libs=yes + break + ;; + esac + done + + # See if our shared archives depend on static archives. + test -n "$old_archive_from_new_cmds" && build_old_libs=yes + + # Go through the arguments, transforming them on the way. + while test "$#" -gt 0; do + arg=$1 + shift + func_quote_for_eval "$arg" + qarg=$func_quote_for_eval_unquoted_result + func_append libtool_args " $func_quote_for_eval_result" + + # If the previous option needs an argument, assign it. + if test -n "$prev"; then + case $prev in + output) + func_append compile_command " @OUTPUT@" + func_append finalize_command " @OUTPUT@" + ;; + esac + + case $prev in + bindir) + bindir=$arg + prev= + continue + ;; + dlfiles|dlprefiles) + $preload || { + # Add the symbol object into the linking commands. + func_append compile_command " @SYMFILE@" + func_append finalize_command " @SYMFILE@" + preload=: + } + case $arg in + *.la | *.lo) ;; # We handle these cases below. + force) + if test no = "$dlself"; then + dlself=needless + export_dynamic=yes + fi + prev= + continue + ;; + self) + if test dlprefiles = "$prev"; then + dlself=yes + elif test dlfiles = "$prev" && test yes != "$dlopen_self"; then + dlself=yes + else + dlself=needless + export_dynamic=yes + fi + prev= + continue + ;; + *) + if test dlfiles = "$prev"; then + func_append dlfiles " $arg" + else + func_append dlprefiles " $arg" + fi + prev= + continue + ;; + esac + ;; + expsyms) + export_symbols=$arg + test -f "$arg" \ + || func_fatal_error "symbol file '$arg' does not exist" + prev= + continue + ;; + expsyms_regex) + export_symbols_regex=$arg + prev= + continue + ;; + framework) + case $host in + *-*-darwin*) + case "$deplibs " in + *" $qarg.ltframework "*) ;; + *) func_append deplibs " $qarg.ltframework" # this is fixed later + ;; + esac + ;; + esac + prev= + continue + ;; + inst_prefix) + inst_prefix_dir=$arg + prev= + continue + ;; + mllvm) + # Clang does not use LLVM to link, so we can simply discard any + # '-mllvm $arg' options when doing the link step. + prev= + continue + ;; + objectlist) + if test -f "$arg"; then + save_arg=$arg + moreargs= + for fil in `cat "$save_arg"` + do +# func_append moreargs " $fil" + arg=$fil + # A libtool-controlled object. + + # Check to see that this really is a libtool object. + if func_lalib_unsafe_p "$arg"; then + pic_object= + non_pic_object= + + # Read the .lo file + func_source "$arg" + + if test -z "$pic_object" || + test -z "$non_pic_object" || + test none = "$pic_object" && + test none = "$non_pic_object"; then + func_fatal_error "cannot find name of object for '$arg'" + fi + + # Extract subdirectory from the argument. + func_dirname "$arg" "/" "" + xdir=$func_dirname_result + + if test none != "$pic_object"; then + # Prepend the subdirectory the object is found in. + pic_object=$xdir$pic_object + + if test dlfiles = "$prev"; then + if test yes = "$build_libtool_libs" && test yes = "$dlopen_support"; then + func_append dlfiles " $pic_object" + prev= + continue + else + # If libtool objects are unsupported, then we need to preload. + prev=dlprefiles + fi + fi + + # CHECK ME: I think I busted this. -Ossama + if test dlprefiles = "$prev"; then + # Preload the old-style object. + func_append dlprefiles " $pic_object" + prev= + fi + + # A PIC object. + func_append libobjs " $pic_object" + arg=$pic_object + fi + + # Non-PIC object. + if test none != "$non_pic_object"; then + # Prepend the subdirectory the object is found in. + non_pic_object=$xdir$non_pic_object + + # A standard non-PIC object + func_append non_pic_objects " $non_pic_object" + if test -z "$pic_object" || test none = "$pic_object"; then + arg=$non_pic_object + fi + else + # If the PIC object exists, use it instead. + # $xdir was prepended to $pic_object above. + non_pic_object=$pic_object + func_append non_pic_objects " $non_pic_object" + fi + else + # Only an error if not doing a dry-run. + if $opt_dry_run; then + # Extract subdirectory from the argument. + func_dirname "$arg" "/" "" + xdir=$func_dirname_result + + func_lo2o "$arg" + pic_object=$xdir$objdir/$func_lo2o_result + non_pic_object=$xdir$func_lo2o_result + func_append libobjs " $pic_object" + func_append non_pic_objects " $non_pic_object" + else + func_fatal_error "'$arg' is not a valid libtool object" + fi + fi + done + else + func_fatal_error "link input file '$arg' does not exist" + fi + arg=$save_arg + prev= + continue + ;; + os2dllname) + os2dllname=$arg + prev= + continue + ;; + precious_regex) + precious_files_regex=$arg + prev= + continue + ;; + release) + release=-$arg + prev= + continue + ;; + rpath | xrpath) + # We need an absolute path. + case $arg in + [\\/]* | [A-Za-z]:[\\/]*) ;; + *) + func_fatal_error "only absolute run-paths are allowed" + ;; + esac + if test rpath = "$prev"; then + case "$rpath " in + *" $arg "*) ;; + *) func_append rpath " $arg" ;; + esac + else + case "$xrpath " in + *" $arg "*) ;; + *) func_append xrpath " $arg" ;; + esac + fi + prev= + continue + ;; + shrext) + shrext_cmds=$arg + prev= + continue + ;; + weak) + func_append weak_libs " $arg" + prev= + continue + ;; + xcclinker) + func_append linker_flags " $qarg" + func_append compiler_flags " $qarg" + prev= + func_append compile_command " $qarg" + func_append finalize_command " $qarg" + continue + ;; + xcompiler) + func_append compiler_flags " $qarg" + prev= + func_append compile_command " $qarg" + func_append finalize_command " $qarg" + continue + ;; + xlinker) + func_append linker_flags " $qarg" + func_append compiler_flags " $wl$qarg" + prev= + func_append compile_command " $wl$qarg" + func_append finalize_command " $wl$qarg" + continue + ;; + *) + eval "$prev=\"\$arg\"" + prev= + continue + ;; + esac + fi # test -n "$prev" + + prevarg=$arg + + case $arg in + -all-static) + if test -n "$link_static_flag"; then + # See comment for -static flag below, for more details. + func_append compile_command " $link_static_flag" + func_append finalize_command " $link_static_flag" + fi + continue + ;; + + -allow-undefined) + # FIXME: remove this flag sometime in the future. + func_fatal_error "'-allow-undefined' must not be used because it is the default" + ;; + + -avoid-version) + avoid_version=yes + continue + ;; + + -bindir) + prev=bindir + continue + ;; + + -dlopen) + prev=dlfiles + continue + ;; + + -dlpreopen) + prev=dlprefiles + continue + ;; + + -export-dynamic) + export_dynamic=yes + continue + ;; + + -export-symbols | -export-symbols-regex) + if test -n "$export_symbols" || test -n "$export_symbols_regex"; then + func_fatal_error "more than one -exported-symbols argument is not allowed" + fi + if test X-export-symbols = "X$arg"; then + prev=expsyms + else + prev=expsyms_regex + fi + continue + ;; + + -framework) + prev=framework + continue + ;; + + -inst-prefix-dir) + prev=inst_prefix + continue + ;; + + # The native IRIX linker understands -LANG:*, -LIST:* and -LNO:* + # so, if we see these flags be careful not to treat them like -L + -L[A-Z][A-Z]*:*) + case $with_gcc/$host in + no/*-*-irix* | /*-*-irix*) + func_append compile_command " $arg" + func_append finalize_command " $arg" + ;; + esac + continue + ;; + + -L*) + func_stripname "-L" '' "$arg" + if test -z "$func_stripname_result"; then + if test "$#" -gt 0; then + func_fatal_error "require no space between '-L' and '$1'" + else + func_fatal_error "need path for '-L' option" + fi + fi + func_resolve_sysroot "$func_stripname_result" + dir=$func_resolve_sysroot_result + # We need an absolute path. + case $dir in + [\\/]* | [A-Za-z]:[\\/]*) ;; + *) + absdir=`cd "$dir" && pwd` + test -z "$absdir" && \ + func_fatal_error "cannot determine absolute directory name of '$dir'" + dir=$absdir + ;; + esac + case "$deplibs " in + *" -L$dir "* | *" $arg "*) + # Will only happen for absolute or sysroot arguments + ;; + *) + # Preserve sysroot, but never include relative directories + case $dir in + [\\/]* | [A-Za-z]:[\\/]* | =*) func_append deplibs " $arg" ;; + *) func_append deplibs " -L$dir" ;; + esac + func_append lib_search_path " $dir" + ;; + esac + case $host in + *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) + testbindir=`$ECHO "$dir" | $SED 's*/lib$*/bin*'` + case :$dllsearchpath: in + *":$dir:"*) ;; + ::) dllsearchpath=$dir;; + *) func_append dllsearchpath ":$dir";; + esac + case :$dllsearchpath: in + *":$testbindir:"*) ;; + ::) dllsearchpath=$testbindir;; + *) func_append dllsearchpath ":$testbindir";; + esac + ;; + esac + continue + ;; + + -l*) + if test X-lc = "X$arg" || test X-lm = "X$arg"; then + case $host in + *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-beos* | *-cegcc* | *-*-haiku*) + # These systems don't actually have a C or math library (as such) + continue + ;; + *-*-os2*) + # These systems don't actually have a C library (as such) + test X-lc = "X$arg" && continue + ;; + *-*-openbsd* | *-*-freebsd* | *-*-dragonfly* | *-*-bitrig*) + # Do not include libc due to us having libc/libc_r. + test X-lc = "X$arg" && continue + ;; + *-*-rhapsody* | *-*-darwin1.[012]) + # Rhapsody C and math libraries are in the System framework + func_append deplibs " System.ltframework" + continue + ;; + *-*-sco3.2v5* | *-*-sco5v6*) + # Causes problems with __ctype + test X-lc = "X$arg" && continue + ;; + *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*) + # Compiler inserts libc in the correct place for threads to work + test X-lc = "X$arg" && continue + ;; + esac + elif test X-lc_r = "X$arg"; then + case $host in + *-*-openbsd* | *-*-freebsd* | *-*-dragonfly* | *-*-bitrig*) + # Do not include libc_r directly, use -pthread flag. + continue + ;; + esac + fi + func_append deplibs " $arg" + continue + ;; + + -mllvm) + prev=mllvm + continue + ;; + + -module) + module=yes + continue + ;; + + # Tru64 UNIX uses -model [arg] to determine the layout of C++ + # classes, name mangling, and exception handling. + # Darwin uses the -arch flag to determine output architecture. + -model|-arch|-isysroot|--sysroot) + func_append compiler_flags " $arg" + func_append compile_command " $arg" + func_append finalize_command " $arg" + prev=xcompiler + continue + ;; + + -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe \ + |-threads|-fopenmp|-openmp|-mp|-xopenmp|-omp|-qsmp=*) + func_append compiler_flags " $arg" + func_append compile_command " $arg" + func_append finalize_command " $arg" + case "$new_inherited_linker_flags " in + *" $arg "*) ;; + * ) func_append new_inherited_linker_flags " $arg" ;; + esac + continue + ;; + + -multi_module) + single_module=$wl-multi_module + continue + ;; + + -no-fast-install) + fast_install=no + continue + ;; + + -no-install) + case $host in + *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-darwin* | *-cegcc*) + # The PATH hackery in wrapper scripts is required on Windows + # and Darwin in order for the loader to find any dlls it needs. + func_warning "'-no-install' is ignored for $host" + func_warning "assuming '-no-fast-install' instead" + fast_install=no + ;; + *) no_install=yes ;; + esac + continue + ;; + + -no-undefined) + allow_undefined=no + continue + ;; + + -objectlist) + prev=objectlist + continue + ;; + + -os2dllname) + prev=os2dllname + continue + ;; + + -o) prev=output ;; + + -precious-files-regex) + prev=precious_regex + continue + ;; + + -release) + prev=release + continue + ;; + + -rpath) + prev=rpath + continue + ;; + + -R) + prev=xrpath + continue + ;; + + -R*) + func_stripname '-R' '' "$arg" + dir=$func_stripname_result + # We need an absolute path. + case $dir in + [\\/]* | [A-Za-z]:[\\/]*) ;; + =*) + func_stripname '=' '' "$dir" + dir=$lt_sysroot$func_stripname_result + ;; + *) + func_fatal_error "only absolute run-paths are allowed" + ;; + esac + case "$xrpath " in + *" $dir "*) ;; + *) func_append xrpath " $dir" ;; + esac + continue + ;; + + -shared) + # The effects of -shared are defined in a previous loop. + continue + ;; + + -shrext) + prev=shrext + continue + ;; + + -static | -static-libtool-libs) + # The effects of -static are defined in a previous loop. + # We used to do the same as -all-static on platforms that + # didn't have a PIC flag, but the assumption that the effects + # would be equivalent was wrong. It would break on at least + # Digital Unix and AIX. + continue + ;; + + -thread-safe) + thread_safe=yes + continue + ;; + + -version-info) + prev=vinfo + continue + ;; + + -version-number) + prev=vinfo + vinfo_number=yes + continue + ;; + + -weak) + prev=weak + continue + ;; + + -Wc,*) + func_stripname '-Wc,' '' "$arg" + args=$func_stripname_result + arg= + save_ifs=$IFS; IFS=, + for flag in $args; do + IFS=$save_ifs + func_quote_for_eval "$flag" + func_append arg " $func_quote_for_eval_result" + func_append compiler_flags " $func_quote_for_eval_result" + done + IFS=$save_ifs + func_stripname ' ' '' "$arg" + arg=$func_stripname_result + ;; + + -Wl,*) + func_stripname '-Wl,' '' "$arg" + args=$func_stripname_result + arg= + save_ifs=$IFS; IFS=, + for flag in $args; do + IFS=$save_ifs + func_quote_for_eval "$flag" + func_append arg " $wl$func_quote_for_eval_result" + func_append compiler_flags " $wl$func_quote_for_eval_result" + func_append linker_flags " $func_quote_for_eval_result" + done + IFS=$save_ifs + func_stripname ' ' '' "$arg" + arg=$func_stripname_result + ;; + + -Xcompiler) + prev=xcompiler + continue + ;; + + -Xlinker) + prev=xlinker + continue + ;; + + -XCClinker) + prev=xcclinker + continue + ;; + + # -msg_* for osf cc + -msg_*) + func_quote_for_eval "$arg" + arg=$func_quote_for_eval_result + ;; + + # Flags to be passed through unchanged, with rationale: + # -64, -mips[0-9] enable 64-bit mode for the SGI compiler + # -r[0-9][0-9]* specify processor for the SGI compiler + # -xarch=*, -xtarget=* enable 64-bit mode for the Sun compiler + # +DA*, +DD* enable 64-bit mode for the HP compiler + # -q* compiler args for the IBM compiler + # -m*, -t[45]*, -txscale* architecture-specific flags for GCC + # -F/path path to uninstalled frameworks, gcc on darwin + # -p, -pg, --coverage, -fprofile-* profiling flags for GCC + # -fstack-protector* stack protector flags for GCC + # @file GCC response files + # -tp=* Portland pgcc target processor selection + # --sysroot=* for sysroot support + # -O*, -g*, -flto*, -fwhopr*, -fuse-linker-plugin GCC link-time optimization + # -specs=* GCC specs files + # -stdlib=* select c++ std lib with clang + # -fsanitize=* Clang/GCC memory and address sanitizer + -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*| \ + -t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*|-tp=*|--sysroot=*| \ + -O*|-g*|-flto*|-fwhopr*|-fuse-linker-plugin|-fstack-protector*|-stdlib=*| \ + -specs=*|-fsanitize=*) + func_quote_for_eval "$arg" + arg=$func_quote_for_eval_result + func_append compile_command " $arg" + func_append finalize_command " $arg" + func_append compiler_flags " $arg" + continue + ;; + + -Z*) + if test os2 = "`expr $host : '.*\(os2\)'`"; then + # OS/2 uses -Zxxx to specify OS/2-specific options + compiler_flags="$compiler_flags $arg" + func_append compile_command " $arg" + func_append finalize_command " $arg" + case $arg in + -Zlinker | -Zstack) + prev=xcompiler + ;; + esac + continue + else + # Otherwise treat like 'Some other compiler flag' below + func_quote_for_eval "$arg" + arg=$func_quote_for_eval_result + fi + ;; + + # Some other compiler flag. + -* | +*) + func_quote_for_eval "$arg" + arg=$func_quote_for_eval_result + ;; + + *.$objext) + # A standard object. + func_append objs " $arg" + ;; + + *.lo) + # A libtool-controlled object. + + # Check to see that this really is a libtool object. + if func_lalib_unsafe_p "$arg"; then + pic_object= + non_pic_object= + + # Read the .lo file + func_source "$arg" + + if test -z "$pic_object" || + test -z "$non_pic_object" || + test none = "$pic_object" && + test none = "$non_pic_object"; then + func_fatal_error "cannot find name of object for '$arg'" + fi + + # Extract subdirectory from the argument. + func_dirname "$arg" "/" "" + xdir=$func_dirname_result + + test none = "$pic_object" || { + # Prepend the subdirectory the object is found in. + pic_object=$xdir$pic_object + + if test dlfiles = "$prev"; then + if test yes = "$build_libtool_libs" && test yes = "$dlopen_support"; then + func_append dlfiles " $pic_object" + prev= + continue + else + # If libtool objects are unsupported, then we need to preload. + prev=dlprefiles + fi + fi + + # CHECK ME: I think I busted this. -Ossama + if test dlprefiles = "$prev"; then + # Preload the old-style object. + func_append dlprefiles " $pic_object" + prev= + fi + + # A PIC object. + func_append libobjs " $pic_object" + arg=$pic_object + } + + # Non-PIC object. + if test none != "$non_pic_object"; then + # Prepend the subdirectory the object is found in. + non_pic_object=$xdir$non_pic_object + + # A standard non-PIC object + func_append non_pic_objects " $non_pic_object" + if test -z "$pic_object" || test none = "$pic_object"; then + arg=$non_pic_object + fi + else + # If the PIC object exists, use it instead. + # $xdir was prepended to $pic_object above. + non_pic_object=$pic_object + func_append non_pic_objects " $non_pic_object" + fi + else + # Only an error if not doing a dry-run. + if $opt_dry_run; then + # Extract subdirectory from the argument. + func_dirname "$arg" "/" "" + xdir=$func_dirname_result + + func_lo2o "$arg" + pic_object=$xdir$objdir/$func_lo2o_result + non_pic_object=$xdir$func_lo2o_result + func_append libobjs " $pic_object" + func_append non_pic_objects " $non_pic_object" + else + func_fatal_error "'$arg' is not a valid libtool object" + fi + fi + ;; + + *.$libext) + # An archive. + func_append deplibs " $arg" + func_append old_deplibs " $arg" + continue + ;; + + *.la) + # A libtool-controlled library. + + func_resolve_sysroot "$arg" + if test dlfiles = "$prev"; then + # This library was specified with -dlopen. + func_append dlfiles " $func_resolve_sysroot_result" + prev= + elif test dlprefiles = "$prev"; then + # The library was specified with -dlpreopen. + func_append dlprefiles " $func_resolve_sysroot_result" + prev= + else + func_append deplibs " $func_resolve_sysroot_result" + fi + continue + ;; + + # Some other compiler argument. + *) + # Unknown arguments in both finalize_command and compile_command need + # to be aesthetically quoted because they are evaled later. + func_quote_for_eval "$arg" + arg=$func_quote_for_eval_result + ;; + esac # arg + + # Now actually substitute the argument into the commands. + if test -n "$arg"; then + func_append compile_command " $arg" + func_append finalize_command " $arg" + fi + done # argument parsing loop + + test -n "$prev" && \ + func_fatal_help "the '$prevarg' option requires an argument" + + if test yes = "$export_dynamic" && test -n "$export_dynamic_flag_spec"; then + eval arg=\"$export_dynamic_flag_spec\" + func_append compile_command " $arg" + func_append finalize_command " $arg" + fi + + oldlibs= + # calculate the name of the file, without its directory + func_basename "$output" + outputname=$func_basename_result + libobjs_save=$libobjs + + if test -n "$shlibpath_var"; then + # get the directories listed in $shlibpath_var + eval shlib_search_path=\`\$ECHO \"\$$shlibpath_var\" \| \$SED \'s/:/ /g\'\` + else + shlib_search_path= + fi + eval sys_lib_search_path=\"$sys_lib_search_path_spec\" + eval sys_lib_dlsearch_path=\"$sys_lib_dlsearch_path_spec\" + + # Definition is injected by LT_CONFIG during libtool generation. + func_munge_path_list sys_lib_dlsearch_path "$LT_SYS_LIBRARY_PATH" + + func_dirname "$output" "/" "" + output_objdir=$func_dirname_result$objdir + func_to_tool_file "$output_objdir/" + tool_output_objdir=$func_to_tool_file_result + # Create the object directory. + func_mkdir_p "$output_objdir" + + # Determine the type of output + case $output in + "") + func_fatal_help "you must specify an output file" + ;; + *.$libext) linkmode=oldlib ;; + *.lo | *.$objext) linkmode=obj ;; + *.la) linkmode=lib ;; + *) linkmode=prog ;; # Anything else should be a program. + esac + + specialdeplibs= + + libs= + # Find all interdependent deplibs by searching for libraries + # that are linked more than once (e.g. -la -lb -la) + for deplib in $deplibs; do + if $opt_preserve_dup_deps; then + case "$libs " in + *" $deplib "*) func_append specialdeplibs " $deplib" ;; + esac + fi + func_append libs " $deplib" + done + + if test lib = "$linkmode"; then + libs="$predeps $libs $compiler_lib_search_path $postdeps" + + # Compute libraries that are listed more than once in $predeps + # $postdeps and mark them as special (i.e., whose duplicates are + # not to be eliminated). + pre_post_deps= + if $opt_duplicate_compiler_generated_deps; then + for pre_post_dep in $predeps $postdeps; do + case "$pre_post_deps " in + *" $pre_post_dep "*) func_append specialdeplibs " $pre_post_deps" ;; + esac + func_append pre_post_deps " $pre_post_dep" + done + fi + pre_post_deps= + fi + + deplibs= + newdependency_libs= + newlib_search_path= + need_relink=no # whether we're linking any uninstalled libtool libraries + notinst_deplibs= # not-installed libtool libraries + notinst_path= # paths that contain not-installed libtool libraries + + case $linkmode in + lib) + passes="conv dlpreopen link" + for file in $dlfiles $dlprefiles; do + case $file in + *.la) ;; + *) + func_fatal_help "libraries can '-dlopen' only libtool libraries: $file" + ;; + esac + done + ;; + prog) + compile_deplibs= + finalize_deplibs= + alldeplibs=false + newdlfiles= + newdlprefiles= + passes="conv scan dlopen dlpreopen link" + ;; + *) passes="conv" + ;; + esac + + for pass in $passes; do + # The preopen pass in lib mode reverses $deplibs; put it back here + # so that -L comes before libs that need it for instance... + if test lib,link = "$linkmode,$pass"; then + ## FIXME: Find the place where the list is rebuilt in the wrong + ## order, and fix it there properly + tmp_deplibs= + for deplib in $deplibs; do + tmp_deplibs="$deplib $tmp_deplibs" + done + deplibs=$tmp_deplibs + fi + + if test lib,link = "$linkmode,$pass" || + test prog,scan = "$linkmode,$pass"; then + libs=$deplibs + deplibs= + fi + if test prog = "$linkmode"; then + case $pass in + dlopen) libs=$dlfiles ;; + dlpreopen) libs=$dlprefiles ;; + link) + libs="$deplibs %DEPLIBS%" + test "X$link_all_deplibs" != Xno && libs="$libs $dependency_libs" + ;; + esac + fi + if test lib,dlpreopen = "$linkmode,$pass"; then + # Collect and forward deplibs of preopened libtool libs + for lib in $dlprefiles; do + # Ignore non-libtool-libs + dependency_libs= + func_resolve_sysroot "$lib" + case $lib in + *.la) func_source "$func_resolve_sysroot_result" ;; + esac + + # Collect preopened libtool deplibs, except any this library + # has declared as weak libs + for deplib in $dependency_libs; do + func_basename "$deplib" + deplib_base=$func_basename_result + case " $weak_libs " in + *" $deplib_base "*) ;; + *) func_append deplibs " $deplib" ;; + esac + done + done + libs=$dlprefiles + fi + if test dlopen = "$pass"; then + # Collect dlpreopened libraries + save_deplibs=$deplibs + deplibs= + fi + + for deplib in $libs; do + lib= + found=false + case $deplib in + -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe \ + |-threads|-fopenmp|-openmp|-mp|-xopenmp|-omp|-qsmp=*) + if test prog,link = "$linkmode,$pass"; then + compile_deplibs="$deplib $compile_deplibs" + finalize_deplibs="$deplib $finalize_deplibs" + else + func_append compiler_flags " $deplib" + if test lib = "$linkmode"; then + case "$new_inherited_linker_flags " in + *" $deplib "*) ;; + * ) func_append new_inherited_linker_flags " $deplib" ;; + esac + fi + fi + continue + ;; + -l*) + if test lib != "$linkmode" && test prog != "$linkmode"; then + func_warning "'-l' is ignored for archives/objects" + continue + fi + func_stripname '-l' '' "$deplib" + name=$func_stripname_result + if test lib = "$linkmode"; then + searchdirs="$newlib_search_path $lib_search_path $compiler_lib_search_dirs $sys_lib_search_path $shlib_search_path" + else + searchdirs="$newlib_search_path $lib_search_path $sys_lib_search_path $shlib_search_path" + fi + for searchdir in $searchdirs; do + for search_ext in .la $std_shrext .so .a; do + # Search the libtool library + lib=$searchdir/lib$name$search_ext + if test -f "$lib"; then + if test .la = "$search_ext"; then + found=: + else + found=false + fi + break 2 + fi + done + done + if $found; then + # deplib is a libtool library + # If $allow_libtool_libs_with_static_runtimes && $deplib is a stdlib, + # We need to do some special things here, and not later. + if test yes = "$allow_libtool_libs_with_static_runtimes"; then + case " $predeps $postdeps " in + *" $deplib "*) + if func_lalib_p "$lib"; then + library_names= + old_library= + func_source "$lib" + for l in $old_library $library_names; do + ll=$l + done + if test "X$ll" = "X$old_library"; then # only static version available + found=false + func_dirname "$lib" "" "." + ladir=$func_dirname_result + lib=$ladir/$old_library + if test prog,link = "$linkmode,$pass"; then + compile_deplibs="$deplib $compile_deplibs" + finalize_deplibs="$deplib $finalize_deplibs" + else + deplibs="$deplib $deplibs" + test lib = "$linkmode" && newdependency_libs="$deplib $newdependency_libs" + fi + continue + fi + fi + ;; + *) ;; + esac + fi + else + # deplib doesn't seem to be a libtool library + if test prog,link = "$linkmode,$pass"; then + compile_deplibs="$deplib $compile_deplibs" + finalize_deplibs="$deplib $finalize_deplibs" + else + deplibs="$deplib $deplibs" + test lib = "$linkmode" && newdependency_libs="$deplib $newdependency_libs" + fi + continue + fi + ;; # -l + *.ltframework) + if test prog,link = "$linkmode,$pass"; then + compile_deplibs="$deplib $compile_deplibs" + finalize_deplibs="$deplib $finalize_deplibs" + else + deplibs="$deplib $deplibs" + if test lib = "$linkmode"; then + case "$new_inherited_linker_flags " in + *" $deplib "*) ;; + * ) func_append new_inherited_linker_flags " $deplib" ;; + esac + fi + fi + continue + ;; + -L*) + case $linkmode in + lib) + deplibs="$deplib $deplibs" + test conv = "$pass" && continue + newdependency_libs="$deplib $newdependency_libs" + func_stripname '-L' '' "$deplib" + func_resolve_sysroot "$func_stripname_result" + func_append newlib_search_path " $func_resolve_sysroot_result" + ;; + prog) + if test conv = "$pass"; then + deplibs="$deplib $deplibs" + continue + fi + if test scan = "$pass"; then + deplibs="$deplib $deplibs" + else + compile_deplibs="$deplib $compile_deplibs" + finalize_deplibs="$deplib $finalize_deplibs" + fi + func_stripname '-L' '' "$deplib" + func_resolve_sysroot "$func_stripname_result" + func_append newlib_search_path " $func_resolve_sysroot_result" + ;; + *) + func_warning "'-L' is ignored for archives/objects" + ;; + esac # linkmode + continue + ;; # -L + -R*) + if test link = "$pass"; then + func_stripname '-R' '' "$deplib" + func_resolve_sysroot "$func_stripname_result" + dir=$func_resolve_sysroot_result + # Make sure the xrpath contains only unique directories. + case "$xrpath " in + *" $dir "*) ;; + *) func_append xrpath " $dir" ;; + esac + fi + deplibs="$deplib $deplibs" + continue + ;; + *.la) + func_resolve_sysroot "$deplib" + lib=$func_resolve_sysroot_result + ;; + *.$libext) + if test conv = "$pass"; then + deplibs="$deplib $deplibs" + continue + fi + case $linkmode in + lib) + # Linking convenience modules into shared libraries is allowed, + # but linking other static libraries is non-portable. + case " $dlpreconveniencelibs " in + *" $deplib "*) ;; + *) + valid_a_lib=false + case $deplibs_check_method in + match_pattern*) + set dummy $deplibs_check_method; shift + match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"` + if eval "\$ECHO \"$deplib\"" 2>/dev/null | $SED 10q \ + | $EGREP "$match_pattern_regex" > /dev/null; then + valid_a_lib=: + fi + ;; + pass_all) + valid_a_lib=: + ;; + esac + if $valid_a_lib; then + echo + $ECHO "*** Warning: Linking the shared library $output against the" + $ECHO "*** static library $deplib is not portable!" + deplibs="$deplib $deplibs" + else + echo + $ECHO "*** Warning: Trying to link with static lib archive $deplib." + echo "*** I have the capability to make that library automatically link in when" + echo "*** you link to this library. But I can only do this if you have a" + echo "*** shared version of the library, which you do not appear to have" + echo "*** because the file extensions .$libext of this argument makes me believe" + echo "*** that it is just a static archive that I should not use here." + fi + ;; + esac + continue + ;; + prog) + if test link != "$pass"; then + deplibs="$deplib $deplibs" + else + compile_deplibs="$deplib $compile_deplibs" + finalize_deplibs="$deplib $finalize_deplibs" + fi + continue + ;; + esac # linkmode + ;; # *.$libext + *.lo | *.$objext) + if test conv = "$pass"; then + deplibs="$deplib $deplibs" + elif test prog = "$linkmode"; then + if test dlpreopen = "$pass" || test yes != "$dlopen_support" || test no = "$build_libtool_libs"; then + # If there is no dlopen support or we're linking statically, + # we need to preload. + func_append newdlprefiles " $deplib" + compile_deplibs="$deplib $compile_deplibs" + finalize_deplibs="$deplib $finalize_deplibs" + else + func_append newdlfiles " $deplib" + fi + fi + continue + ;; + %DEPLIBS%) + alldeplibs=: + continue + ;; + esac # case $deplib + + $found || test -f "$lib" \ + || func_fatal_error "cannot find the library '$lib' or unhandled argument '$deplib'" + + # Check to see that this really is a libtool archive. + func_lalib_unsafe_p "$lib" \ + || func_fatal_error "'$lib' is not a valid libtool archive" + + func_dirname "$lib" "" "." + ladir=$func_dirname_result + + dlname= + dlopen= + dlpreopen= + libdir= + library_names= + old_library= + inherited_linker_flags= + # If the library was installed with an old release of libtool, + # it will not redefine variables installed, or shouldnotlink + installed=yes + shouldnotlink=no + avoidtemprpath= + + + # Read the .la file + func_source "$lib" + + # Convert "-framework foo" to "foo.ltframework" + if test -n "$inherited_linker_flags"; then + tmp_inherited_linker_flags=`$ECHO "$inherited_linker_flags" | $SED 's/-framework \([^ $]*\)/\1.ltframework/g'` + for tmp_inherited_linker_flag in $tmp_inherited_linker_flags; do + case " $new_inherited_linker_flags " in + *" $tmp_inherited_linker_flag "*) ;; + *) func_append new_inherited_linker_flags " $tmp_inherited_linker_flag";; + esac + done + fi + dependency_libs=`$ECHO " $dependency_libs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` + if test lib,link = "$linkmode,$pass" || + test prog,scan = "$linkmode,$pass" || + { test prog != "$linkmode" && test lib != "$linkmode"; }; then + test -n "$dlopen" && func_append dlfiles " $dlopen" + test -n "$dlpreopen" && func_append dlprefiles " $dlpreopen" + fi + + if test conv = "$pass"; then + # Only check for convenience libraries + deplibs="$lib $deplibs" + if test -z "$libdir"; then + if test -z "$old_library"; then + func_fatal_error "cannot find name of link library for '$lib'" + fi + # It is a libtool convenience library, so add in its objects. + func_append convenience " $ladir/$objdir/$old_library" + func_append old_convenience " $ladir/$objdir/$old_library" + tmp_libs= + for deplib in $dependency_libs; do + deplibs="$deplib $deplibs" + if $opt_preserve_dup_deps; then + case "$tmp_libs " in + *" $deplib "*) func_append specialdeplibs " $deplib" ;; + esac + fi + func_append tmp_libs " $deplib" + done + elif test prog != "$linkmode" && test lib != "$linkmode"; then + func_fatal_error "'$lib' is not a convenience library" + fi + continue + fi # $pass = conv + + + # Get the name of the library we link against. + linklib= + if test -n "$old_library" && + { test yes = "$prefer_static_libs" || + test built,no = "$prefer_static_libs,$installed"; }; then + linklib=$old_library + else + for l in $old_library $library_names; do + linklib=$l + done + fi + if test -z "$linklib"; then + func_fatal_error "cannot find name of link library for '$lib'" + fi + + # This library was specified with -dlopen. + if test dlopen = "$pass"; then + test -z "$libdir" \ + && func_fatal_error "cannot -dlopen a convenience library: '$lib'" + if test -z "$dlname" || + test yes != "$dlopen_support" || + test no = "$build_libtool_libs" + then + # If there is no dlname, no dlopen support or we're linking + # statically, we need to preload. We also need to preload any + # dependent libraries so libltdl's deplib preloader doesn't + # bomb out in the load deplibs phase. + func_append dlprefiles " $lib $dependency_libs" + else + func_append newdlfiles " $lib" + fi + continue + fi # $pass = dlopen + + # We need an absolute path. + case $ladir in + [\\/]* | [A-Za-z]:[\\/]*) abs_ladir=$ladir ;; + *) + abs_ladir=`cd "$ladir" && pwd` + if test -z "$abs_ladir"; then + func_warning "cannot determine absolute directory name of '$ladir'" + func_warning "passing it literally to the linker, although it might fail" + abs_ladir=$ladir + fi + ;; + esac + func_basename "$lib" + laname=$func_basename_result + + # Find the relevant object directory and library name. + if test yes = "$installed"; then + if test ! -f "$lt_sysroot$libdir/$linklib" && test -f "$abs_ladir/$linklib"; then + func_warning "library '$lib' was moved." + dir=$ladir + absdir=$abs_ladir + libdir=$abs_ladir + else + dir=$lt_sysroot$libdir + absdir=$lt_sysroot$libdir + fi + test yes = "$hardcode_automatic" && avoidtemprpath=yes + else + if test ! -f "$ladir/$objdir/$linklib" && test -f "$abs_ladir/$linklib"; then + dir=$ladir + absdir=$abs_ladir + # Remove this search path later + func_append notinst_path " $abs_ladir" + else + dir=$ladir/$objdir + absdir=$abs_ladir/$objdir + # Remove this search path later + func_append notinst_path " $abs_ladir" + fi + fi # $installed = yes + func_stripname 'lib' '.la' "$laname" + name=$func_stripname_result + + # This library was specified with -dlpreopen. + if test dlpreopen = "$pass"; then + if test -z "$libdir" && test prog = "$linkmode"; then + func_fatal_error "only libraries may -dlpreopen a convenience library: '$lib'" + fi + case $host in + # special handling for platforms with PE-DLLs. + *cygwin* | *mingw* | *cegcc* ) + # Linker will automatically link against shared library if both + # static and shared are present. Therefore, ensure we extract + # symbols from the import library if a shared library is present + # (otherwise, the dlopen module name will be incorrect). We do + # this by putting the import library name into $newdlprefiles. + # We recover the dlopen module name by 'saving' the la file + # name in a special purpose variable, and (later) extracting the + # dlname from the la file. + if test -n "$dlname"; then + func_tr_sh "$dir/$linklib" + eval "libfile_$func_tr_sh_result=\$abs_ladir/\$laname" + func_append newdlprefiles " $dir/$linklib" + else + func_append newdlprefiles " $dir/$old_library" + # Keep a list of preopened convenience libraries to check + # that they are being used correctly in the link pass. + test -z "$libdir" && \ + func_append dlpreconveniencelibs " $dir/$old_library" + fi + ;; + * ) + # Prefer using a static library (so that no silly _DYNAMIC symbols + # are required to link). + if test -n "$old_library"; then + func_append newdlprefiles " $dir/$old_library" + # Keep a list of preopened convenience libraries to check + # that they are being used correctly in the link pass. + test -z "$libdir" && \ + func_append dlpreconveniencelibs " $dir/$old_library" + # Otherwise, use the dlname, so that lt_dlopen finds it. + elif test -n "$dlname"; then + func_append newdlprefiles " $dir/$dlname" + else + func_append newdlprefiles " $dir/$linklib" + fi + ;; + esac + fi # $pass = dlpreopen + + if test -z "$libdir"; then + # Link the convenience library + if test lib = "$linkmode"; then + deplibs="$dir/$old_library $deplibs" + elif test prog,link = "$linkmode,$pass"; then + compile_deplibs="$dir/$old_library $compile_deplibs" + finalize_deplibs="$dir/$old_library $finalize_deplibs" + else + deplibs="$lib $deplibs" # used for prog,scan pass + fi + continue + fi + + + if test prog = "$linkmode" && test link != "$pass"; then + func_append newlib_search_path " $ladir" + deplibs="$lib $deplibs" + + linkalldeplibs=false + if test no != "$link_all_deplibs" || test -z "$library_names" || + test no = "$build_libtool_libs"; then + linkalldeplibs=: + fi + + tmp_libs= + for deplib in $dependency_libs; do + case $deplib in + -L*) func_stripname '-L' '' "$deplib" + func_resolve_sysroot "$func_stripname_result" + func_append newlib_search_path " $func_resolve_sysroot_result" + ;; + esac + # Need to link against all dependency_libs? + if $linkalldeplibs; then + deplibs="$deplib $deplibs" + else + # Need to hardcode shared library paths + # or/and link against static libraries + newdependency_libs="$deplib $newdependency_libs" + fi + if $opt_preserve_dup_deps; then + case "$tmp_libs " in + *" $deplib "*) func_append specialdeplibs " $deplib" ;; + esac + fi + func_append tmp_libs " $deplib" + done # for deplib + continue + fi # $linkmode = prog... + + if test prog,link = "$linkmode,$pass"; then + if test -n "$library_names" && + { { test no = "$prefer_static_libs" || + test built,yes = "$prefer_static_libs,$installed"; } || + test -z "$old_library"; }; then + # We need to hardcode the library path + if test -n "$shlibpath_var" && test -z "$avoidtemprpath"; then + # Make sure the rpath contains only unique directories. + case $temp_rpath: in + *"$absdir:"*) ;; + *) func_append temp_rpath "$absdir:" ;; + esac + fi + + # Hardcode the library path. + # Skip directories that are in the system default run-time + # search path. + case " $sys_lib_dlsearch_path " in + *" $absdir "*) ;; + *) + case "$compile_rpath " in + *" $absdir "*) ;; + *) func_append compile_rpath " $absdir" ;; + esac + ;; + esac + case " $sys_lib_dlsearch_path " in + *" $libdir "*) ;; + *) + case "$finalize_rpath " in + *" $libdir "*) ;; + *) func_append finalize_rpath " $libdir" ;; + esac + ;; + esac + fi # $linkmode,$pass = prog,link... + + if $alldeplibs && + { test pass_all = "$deplibs_check_method" || + { test yes = "$build_libtool_libs" && + test -n "$library_names"; }; }; then + # We only need to search for static libraries + continue + fi + fi + + link_static=no # Whether the deplib will be linked statically + use_static_libs=$prefer_static_libs + if test built = "$use_static_libs" && test yes = "$installed"; then + use_static_libs=no + fi + if test -n "$library_names" && + { test no = "$use_static_libs" || test -z "$old_library"; }; then + case $host in + *cygwin* | *mingw* | *cegcc* | *os2*) + # No point in relinking DLLs because paths are not encoded + func_append notinst_deplibs " $lib" + need_relink=no + ;; + *) + if test no = "$installed"; then + func_append notinst_deplibs " $lib" + need_relink=yes + fi + ;; + esac + # This is a shared library + + # Warn about portability, can't link against -module's on some + # systems (darwin). Don't bleat about dlopened modules though! + dlopenmodule= + for dlpremoduletest in $dlprefiles; do + if test "X$dlpremoduletest" = "X$lib"; then + dlopenmodule=$dlpremoduletest + break + fi + done + if test -z "$dlopenmodule" && test yes = "$shouldnotlink" && test link = "$pass"; then + echo + if test prog = "$linkmode"; then + $ECHO "*** Warning: Linking the executable $output against the loadable module" + else + $ECHO "*** Warning: Linking the shared library $output against the loadable module" + fi + $ECHO "*** $linklib is not portable!" + fi + if test lib = "$linkmode" && + test yes = "$hardcode_into_libs"; then + # Hardcode the library path. + # Skip directories that are in the system default run-time + # search path. + case " $sys_lib_dlsearch_path " in + *" $absdir "*) ;; + *) + case "$compile_rpath " in + *" $absdir "*) ;; + *) func_append compile_rpath " $absdir" ;; + esac + ;; + esac + case " $sys_lib_dlsearch_path " in + *" $libdir "*) ;; + *) + case "$finalize_rpath " in + *" $libdir "*) ;; + *) func_append finalize_rpath " $libdir" ;; + esac + ;; + esac + fi + + if test -n "$old_archive_from_expsyms_cmds"; then + # figure out the soname + set dummy $library_names + shift + realname=$1 + shift + libname=`eval "\\$ECHO \"$libname_spec\""` + # use dlname if we got it. it's perfectly good, no? + if test -n "$dlname"; then + soname=$dlname + elif test -n "$soname_spec"; then + # bleh windows + case $host in + *cygwin* | mingw* | *cegcc* | *os2*) + func_arith $current - $age + major=$func_arith_result + versuffix=-$major + ;; + esac + eval soname=\"$soname_spec\" + else + soname=$realname + fi + + # Make a new name for the extract_expsyms_cmds to use + soroot=$soname + func_basename "$soroot" + soname=$func_basename_result + func_stripname 'lib' '.dll' "$soname" + newlib=libimp-$func_stripname_result.a + + # If the library has no export list, then create one now + if test -f "$output_objdir/$soname-def"; then : + else + func_verbose "extracting exported symbol list from '$soname'" + func_execute_cmds "$extract_expsyms_cmds" 'exit $?' + fi + + # Create $newlib + if test -f "$output_objdir/$newlib"; then :; else + func_verbose "generating import library for '$soname'" + func_execute_cmds "$old_archive_from_expsyms_cmds" 'exit $?' + fi + # make sure the library variables are pointing to the new library + dir=$output_objdir + linklib=$newlib + fi # test -n "$old_archive_from_expsyms_cmds" + + if test prog = "$linkmode" || test relink != "$opt_mode"; then + add_shlibpath= + add_dir= + add= + lib_linked=yes + case $hardcode_action in + immediate | unsupported) + if test no = "$hardcode_direct"; then + add=$dir/$linklib + case $host in + *-*-sco3.2v5.0.[024]*) add_dir=-L$dir ;; + *-*-sysv4*uw2*) add_dir=-L$dir ;; + *-*-sysv5OpenUNIX* | *-*-sysv5UnixWare7.[01].[10]* | \ + *-*-unixware7*) add_dir=-L$dir ;; + *-*-darwin* ) + # if the lib is a (non-dlopened) module then we cannot + # link against it, someone is ignoring the earlier warnings + if /usr/bin/file -L $add 2> /dev/null | + $GREP ": [^:]* bundle" >/dev/null; then + if test "X$dlopenmodule" != "X$lib"; then + $ECHO "*** Warning: lib $linklib is a module, not a shared library" + if test -z "$old_library"; then + echo + echo "*** And there doesn't seem to be a static archive available" + echo "*** The link will probably fail, sorry" + else + add=$dir/$old_library + fi + elif test -n "$old_library"; then + add=$dir/$old_library + fi + fi + esac + elif test no = "$hardcode_minus_L"; then + case $host in + *-*-sunos*) add_shlibpath=$dir ;; + esac + add_dir=-L$dir + add=-l$name + elif test no = "$hardcode_shlibpath_var"; then + add_shlibpath=$dir + add=-l$name + else + lib_linked=no + fi + ;; + relink) + if test yes = "$hardcode_direct" && + test no = "$hardcode_direct_absolute"; then + add=$dir/$linklib + elif test yes = "$hardcode_minus_L"; then + add_dir=-L$absdir + # Try looking first in the location we're being installed to. + if test -n "$inst_prefix_dir"; then + case $libdir in + [\\/]*) + func_append add_dir " -L$inst_prefix_dir$libdir" + ;; + esac + fi + add=-l$name + elif test yes = "$hardcode_shlibpath_var"; then + add_shlibpath=$dir + add=-l$name + else + lib_linked=no + fi + ;; + *) lib_linked=no ;; + esac + + if test yes != "$lib_linked"; then + func_fatal_configuration "unsupported hardcode properties" + fi + + if test -n "$add_shlibpath"; then + case :$compile_shlibpath: in + *":$add_shlibpath:"*) ;; + *) func_append compile_shlibpath "$add_shlibpath:" ;; + esac + fi + if test prog = "$linkmode"; then + test -n "$add_dir" && compile_deplibs="$add_dir $compile_deplibs" + test -n "$add" && compile_deplibs="$add $compile_deplibs" + else + test -n "$add_dir" && deplibs="$add_dir $deplibs" + test -n "$add" && deplibs="$add $deplibs" + if test yes != "$hardcode_direct" && + test yes != "$hardcode_minus_L" && + test yes = "$hardcode_shlibpath_var"; then + case :$finalize_shlibpath: in + *":$libdir:"*) ;; + *) func_append finalize_shlibpath "$libdir:" ;; + esac + fi + fi + fi + + if test prog = "$linkmode" || test relink = "$opt_mode"; then + add_shlibpath= + add_dir= + add= + # Finalize command for both is simple: just hardcode it. + if test yes = "$hardcode_direct" && + test no = "$hardcode_direct_absolute"; then + add=$libdir/$linklib + elif test yes = "$hardcode_minus_L"; then + add_dir=-L$libdir + add=-l$name + elif test yes = "$hardcode_shlibpath_var"; then + case :$finalize_shlibpath: in + *":$libdir:"*) ;; + *) func_append finalize_shlibpath "$libdir:" ;; + esac + add=-l$name + elif test yes = "$hardcode_automatic"; then + if test -n "$inst_prefix_dir" && + test -f "$inst_prefix_dir$libdir/$linklib"; then + add=$inst_prefix_dir$libdir/$linklib + else + add=$libdir/$linklib + fi + else + # We cannot seem to hardcode it, guess we'll fake it. + add_dir=-L$libdir + # Try looking first in the location we're being installed to. + if test -n "$inst_prefix_dir"; then + case $libdir in + [\\/]*) + func_append add_dir " -L$inst_prefix_dir$libdir" + ;; + esac + fi + add=-l$name + fi + + if test prog = "$linkmode"; then + test -n "$add_dir" && finalize_deplibs="$add_dir $finalize_deplibs" + test -n "$add" && finalize_deplibs="$add $finalize_deplibs" + else + test -n "$add_dir" && deplibs="$add_dir $deplibs" + test -n "$add" && deplibs="$add $deplibs" + fi + fi + elif test prog = "$linkmode"; then + # Here we assume that one of hardcode_direct or hardcode_minus_L + # is not unsupported. This is valid on all known static and + # shared platforms. + if test unsupported != "$hardcode_direct"; then + test -n "$old_library" && linklib=$old_library + compile_deplibs="$dir/$linklib $compile_deplibs" + finalize_deplibs="$dir/$linklib $finalize_deplibs" + else + compile_deplibs="-l$name -L$dir $compile_deplibs" + finalize_deplibs="-l$name -L$dir $finalize_deplibs" + fi + elif test yes = "$build_libtool_libs"; then + # Not a shared library + if test pass_all != "$deplibs_check_method"; then + # We're trying link a shared library against a static one + # but the system doesn't support it. + + # Just print a warning and add the library to dependency_libs so + # that the program can be linked against the static library. + echo + $ECHO "*** Warning: This system cannot link to static lib archive $lib." + echo "*** I have the capability to make that library automatically link in when" + echo "*** you link to this library. But I can only do this if you have a" + echo "*** shared version of the library, which you do not appear to have." + if test yes = "$module"; then + echo "*** But as you try to build a module library, libtool will still create " + echo "*** a static module, that should work as long as the dlopening application" + echo "*** is linked with the -dlopen flag to resolve symbols at runtime." + if test -z "$global_symbol_pipe"; then + echo + echo "*** However, this would only work if libtool was able to extract symbol" + echo "*** lists from a program, using 'nm' or equivalent, but libtool could" + echo "*** not find such a program. So, this module is probably useless." + echo "*** 'nm' from GNU binutils and a full rebuild may help." + fi + if test no = "$build_old_libs"; then + build_libtool_libs=module + build_old_libs=yes + else + build_libtool_libs=no + fi + fi + else + deplibs="$dir/$old_library $deplibs" + link_static=yes + fi + fi # link shared/static library? + + if test lib = "$linkmode"; then + if test -n "$dependency_libs" && + { test yes != "$hardcode_into_libs" || + test yes = "$build_old_libs" || + test yes = "$link_static"; }; then + # Extract -R from dependency_libs + temp_deplibs= + for libdir in $dependency_libs; do + case $libdir in + -R*) func_stripname '-R' '' "$libdir" + temp_xrpath=$func_stripname_result + case " $xrpath " in + *" $temp_xrpath "*) ;; + *) func_append xrpath " $temp_xrpath";; + esac;; + *) func_append temp_deplibs " $libdir";; + esac + done + dependency_libs=$temp_deplibs + fi + + func_append newlib_search_path " $absdir" + # Link against this library + test no = "$link_static" && newdependency_libs="$abs_ladir/$laname $newdependency_libs" + # ... and its dependency_libs + tmp_libs= + for deplib in $dependency_libs; do + newdependency_libs="$deplib $newdependency_libs" + case $deplib in + -L*) func_stripname '-L' '' "$deplib" + func_resolve_sysroot "$func_stripname_result";; + *) func_resolve_sysroot "$deplib" ;; + esac + if $opt_preserve_dup_deps; then + case "$tmp_libs " in + *" $func_resolve_sysroot_result "*) + func_append specialdeplibs " $func_resolve_sysroot_result" ;; + esac + fi + func_append tmp_libs " $func_resolve_sysroot_result" + done + + if test no != "$link_all_deplibs"; then + # Add the search paths of all dependency libraries + for deplib in $dependency_libs; do + path= + case $deplib in + -L*) path=$deplib ;; + *.la) + func_resolve_sysroot "$deplib" + deplib=$func_resolve_sysroot_result + func_dirname "$deplib" "" "." + dir=$func_dirname_result + # We need an absolute path. + case $dir in + [\\/]* | [A-Za-z]:[\\/]*) absdir=$dir ;; + *) + absdir=`cd "$dir" && pwd` + if test -z "$absdir"; then + func_warning "cannot determine absolute directory name of '$dir'" + absdir=$dir + fi + ;; + esac + if $GREP "^installed=no" $deplib > /dev/null; then + case $host in + *-*-darwin*) + depdepl= + eval deplibrary_names=`$SED -n -e 's/^library_names=\(.*\)$/\1/p' $deplib` + if test -n "$deplibrary_names"; then + for tmp in $deplibrary_names; do + depdepl=$tmp + done + if test -f "$absdir/$objdir/$depdepl"; then + depdepl=$absdir/$objdir/$depdepl + darwin_install_name=`$OTOOL -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'` + if test -z "$darwin_install_name"; then + darwin_install_name=`$OTOOL64 -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'` + fi + func_append compiler_flags " $wl-dylib_file $wl$darwin_install_name:$depdepl" + func_append linker_flags " -dylib_file $darwin_install_name:$depdepl" + path= + fi + fi + ;; + *) + path=-L$absdir/$objdir + ;; + esac + else + eval libdir=`$SED -n -e 's/^libdir=\(.*\)$/\1/p' $deplib` + test -z "$libdir" && \ + func_fatal_error "'$deplib' is not a valid libtool archive" + test "$absdir" != "$libdir" && \ + func_warning "'$deplib' seems to be moved" + + path=-L$absdir + fi + ;; + esac + case " $deplibs " in + *" $path "*) ;; + *) deplibs="$path $deplibs" ;; + esac + done + fi # link_all_deplibs != no + fi # linkmode = lib + done # for deplib in $libs + if test link = "$pass"; then + if test prog = "$linkmode"; then + compile_deplibs="$new_inherited_linker_flags $compile_deplibs" + finalize_deplibs="$new_inherited_linker_flags $finalize_deplibs" + else + compiler_flags="$compiler_flags "`$ECHO " $new_inherited_linker_flags" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` + fi + fi + dependency_libs=$newdependency_libs + if test dlpreopen = "$pass"; then + # Link the dlpreopened libraries before other libraries + for deplib in $save_deplibs; do + deplibs="$deplib $deplibs" + done + fi + if test dlopen != "$pass"; then + test conv = "$pass" || { + # Make sure lib_search_path contains only unique directories. + lib_search_path= + for dir in $newlib_search_path; do + case "$lib_search_path " in + *" $dir "*) ;; + *) func_append lib_search_path " $dir" ;; + esac + done + newlib_search_path= + } + + if test prog,link = "$linkmode,$pass"; then + vars="compile_deplibs finalize_deplibs" + else + vars=deplibs + fi + for var in $vars dependency_libs; do + # Add libraries to $var in reverse order + eval tmp_libs=\"\$$var\" + new_libs= + for deplib in $tmp_libs; do + # FIXME: Pedantically, this is the right thing to do, so + # that some nasty dependency loop isn't accidentally + # broken: + #new_libs="$deplib $new_libs" + # Pragmatically, this seems to cause very few problems in + # practice: + case $deplib in + -L*) new_libs="$deplib $new_libs" ;; + -R*) ;; + *) + # And here is the reason: when a library appears more + # than once as an explicit dependence of a library, or + # is implicitly linked in more than once by the + # compiler, it is considered special, and multiple + # occurrences thereof are not removed. Compare this + # with having the same library being listed as a + # dependency of multiple other libraries: in this case, + # we know (pedantically, we assume) the library does not + # need to be listed more than once, so we keep only the + # last copy. This is not always right, but it is rare + # enough that we require users that really mean to play + # such unportable linking tricks to link the library + # using -Wl,-lname, so that libtool does not consider it + # for duplicate removal. + case " $specialdeplibs " in + *" $deplib "*) new_libs="$deplib $new_libs" ;; + *) + case " $new_libs " in + *" $deplib "*) ;; + *) new_libs="$deplib $new_libs" ;; + esac + ;; + esac + ;; + esac + done + tmp_libs= + for deplib in $new_libs; do + case $deplib in + -L*) + case " $tmp_libs " in + *" $deplib "*) ;; + *) func_append tmp_libs " $deplib" ;; + esac + ;; + *) func_append tmp_libs " $deplib" ;; + esac + done + eval $var=\"$tmp_libs\" + done # for var + fi + + # Add Sun CC postdeps if required: + test CXX = "$tagname" && { + case $host_os in + linux*) + case `$CC -V 2>&1 | sed 5q` in + *Sun\ C*) # Sun C++ 5.9 + func_suncc_cstd_abi + + if test no != "$suncc_use_cstd_abi"; then + func_append postdeps ' -library=Cstd -library=Crun' + fi + ;; + esac + ;; + + solaris*) + func_cc_basename "$CC" + case $func_cc_basename_result in + CC* | sunCC*) + func_suncc_cstd_abi + + if test no != "$suncc_use_cstd_abi"; then + func_append postdeps ' -library=Cstd -library=Crun' + fi + ;; + esac + ;; + esac + } + + # Last step: remove runtime libs from dependency_libs + # (they stay in deplibs) + tmp_libs= + for i in $dependency_libs; do + case " $predeps $postdeps $compiler_lib_search_path " in + *" $i "*) + i= + ;; + esac + if test -n "$i"; then + func_append tmp_libs " $i" + fi + done + dependency_libs=$tmp_libs + done # for pass + if test prog = "$linkmode"; then + dlfiles=$newdlfiles + fi + if test prog = "$linkmode" || test lib = "$linkmode"; then + dlprefiles=$newdlprefiles + fi + + case $linkmode in + oldlib) + if test -n "$dlfiles$dlprefiles" || test no != "$dlself"; then + func_warning "'-dlopen' is ignored for archives" + fi + + case " $deplibs" in + *\ -l* | *\ -L*) + func_warning "'-l' and '-L' are ignored for archives" ;; + esac + + test -n "$rpath" && \ + func_warning "'-rpath' is ignored for archives" + + test -n "$xrpath" && \ + func_warning "'-R' is ignored for archives" + + test -n "$vinfo" && \ + func_warning "'-version-info/-version-number' is ignored for archives" + + test -n "$release" && \ + func_warning "'-release' is ignored for archives" + + test -n "$export_symbols$export_symbols_regex" && \ + func_warning "'-export-symbols' is ignored for archives" + + # Now set the variables for building old libraries. + build_libtool_libs=no + oldlibs=$output + func_append objs "$old_deplibs" + ;; + + lib) + # Make sure we only generate libraries of the form 'libNAME.la'. + case $outputname in + lib*) + func_stripname 'lib' '.la' "$outputname" + name=$func_stripname_result + eval shared_ext=\"$shrext_cmds\" + eval libname=\"$libname_spec\" + ;; + *) + test no = "$module" \ + && func_fatal_help "libtool library '$output' must begin with 'lib'" + + if test no != "$need_lib_prefix"; then + # Add the "lib" prefix for modules if required + func_stripname '' '.la' "$outputname" + name=$func_stripname_result + eval shared_ext=\"$shrext_cmds\" + eval libname=\"$libname_spec\" + else + func_stripname '' '.la' "$outputname" + libname=$func_stripname_result + fi + ;; + esac + + if test -n "$objs"; then + if test pass_all != "$deplibs_check_method"; then + func_fatal_error "cannot build libtool library '$output' from non-libtool objects on this host:$objs" + else + echo + $ECHO "*** Warning: Linking the shared library $output against the non-libtool" + $ECHO "*** objects $objs is not portable!" + func_append libobjs " $objs" + fi + fi + + test no = "$dlself" \ + || func_warning "'-dlopen self' is ignored for libtool libraries" + + set dummy $rpath + shift + test 1 -lt "$#" \ + && func_warning "ignoring multiple '-rpath's for a libtool library" + + install_libdir=$1 + + oldlibs= + if test -z "$rpath"; then + if test yes = "$build_libtool_libs"; then + # Building a libtool convenience library. + # Some compilers have problems with a '.al' extension so + # convenience libraries should have the same extension an + # archive normally would. + oldlibs="$output_objdir/$libname.$libext $oldlibs" + build_libtool_libs=convenience + build_old_libs=yes + fi + + test -n "$vinfo" && \ + func_warning "'-version-info/-version-number' is ignored for convenience libraries" + + test -n "$release" && \ + func_warning "'-release' is ignored for convenience libraries" + else + + # Parse the version information argument. + save_ifs=$IFS; IFS=: + set dummy $vinfo 0 0 0 + shift + IFS=$save_ifs + + test -n "$7" && \ + func_fatal_help "too many parameters to '-version-info'" + + # convert absolute version numbers to libtool ages + # this retains compatibility with .la files and attempts + # to make the code below a bit more comprehensible + + case $vinfo_number in + yes) + number_major=$1 + number_minor=$2 + number_revision=$3 + # + # There are really only two kinds -- those that + # use the current revision as the major version + # and those that subtract age and use age as + # a minor version. But, then there is irix + # that has an extra 1 added just for fun + # + case $version_type in + # correct linux to gnu/linux during the next big refactor + darwin|freebsd-elf|linux|osf|windows|none) + func_arith $number_major + $number_minor + current=$func_arith_result + age=$number_minor + revision=$number_revision + ;; + freebsd-aout|qnx|sunos) + current=$number_major + revision=$number_minor + age=0 + ;; + irix|nonstopux) + func_arith $number_major + $number_minor + current=$func_arith_result + age=$number_minor + revision=$number_minor + lt_irix_increment=no + ;; + *) + func_fatal_configuration "$modename: unknown library version type '$version_type'" + ;; + esac + ;; + no) + current=$1 + revision=$2 + age=$3 + ;; + esac + + # Check that each of the things are valid numbers. + case $current in + 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; + *) + func_error "CURRENT '$current' must be a nonnegative integer" + func_fatal_error "'$vinfo' is not valid version information" + ;; + esac + + case $revision in + 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; + *) + func_error "REVISION '$revision' must be a nonnegative integer" + func_fatal_error "'$vinfo' is not valid version information" + ;; + esac + + case $age in + 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; + *) + func_error "AGE '$age' must be a nonnegative integer" + func_fatal_error "'$vinfo' is not valid version information" + ;; + esac + + if test "$age" -gt "$current"; then + func_error "AGE '$age' is greater than the current interface number '$current'" + func_fatal_error "'$vinfo' is not valid version information" + fi + + # Calculate the version variables. + major= + versuffix= + verstring= + case $version_type in + none) ;; + + darwin) + # Like Linux, but with the current version available in + # verstring for coding it into the library header + func_arith $current - $age + major=.$func_arith_result + versuffix=$major.$age.$revision + # Darwin ld doesn't like 0 for these options... + func_arith $current + 1 + minor_current=$func_arith_result + xlcverstring="$wl-compatibility_version $wl$minor_current $wl-current_version $wl$minor_current.$revision" + verstring="-compatibility_version $minor_current -current_version $minor_current.$revision" + # On Darwin other compilers + case $CC in + nagfor*) + verstring="$wl-compatibility_version $wl$minor_current $wl-current_version $wl$minor_current.$revision" + ;; + *) + verstring="-compatibility_version $minor_current -current_version $minor_current.$revision" + ;; + esac + ;; + + freebsd-aout) + major=.$current + versuffix=.$current.$revision + ;; + + freebsd-elf) + func_arith $current - $age + major=.$func_arith_result + versuffix=$major.$age.$revision + ;; + + irix | nonstopux) + if test no = "$lt_irix_increment"; then + func_arith $current - $age + else + func_arith $current - $age + 1 + fi + major=$func_arith_result + + case $version_type in + nonstopux) verstring_prefix=nonstopux ;; + *) verstring_prefix=sgi ;; + esac + verstring=$verstring_prefix$major.$revision + + # Add in all the interfaces that we are compatible with. + loop=$revision + while test 0 -ne "$loop"; do + func_arith $revision - $loop + iface=$func_arith_result + func_arith $loop - 1 + loop=$func_arith_result + verstring=$verstring_prefix$major.$iface:$verstring + done + + # Before this point, $major must not contain '.'. + major=.$major + versuffix=$major.$revision + ;; + + linux) # correct to gnu/linux during the next big refactor + func_arith $current - $age + major=.$func_arith_result + versuffix=$major.$age.$revision + ;; + + osf) + func_arith $current - $age + major=.$func_arith_result + versuffix=.$current.$age.$revision + verstring=$current.$age.$revision + + # Add in all the interfaces that we are compatible with. + loop=$age + while test 0 -ne "$loop"; do + func_arith $current - $loop + iface=$func_arith_result + func_arith $loop - 1 + loop=$func_arith_result + verstring=$verstring:$iface.0 + done + + # Make executables depend on our current version. + func_append verstring ":$current.0" + ;; + + qnx) + major=.$current + versuffix=.$current + ;; + + sco) + major=.$current + versuffix=.$current + ;; + + sunos) + major=.$current + versuffix=.$current.$revision + ;; + + windows) + # Use '-' rather than '.', since we only want one + # extension on DOS 8.3 file systems. + func_arith $current - $age + major=$func_arith_result + versuffix=-$major + ;; + + *) + func_fatal_configuration "unknown library version type '$version_type'" + ;; + esac + + # Clear the version info if we defaulted, and they specified a release. + if test -z "$vinfo" && test -n "$release"; then + major= + case $version_type in + darwin) + # we can't check for "0.0" in archive_cmds due to quoting + # problems, so we reset it completely + verstring= + ;; + *) + verstring=0.0 + ;; + esac + if test no = "$need_version"; then + versuffix= + else + versuffix=.0.0 + fi + fi + + # Remove version info from name if versioning should be avoided + if test yes,no = "$avoid_version,$need_version"; then + major= + versuffix= + verstring= + fi + + # Check to see if the archive will have undefined symbols. + if test yes = "$allow_undefined"; then + if test unsupported = "$allow_undefined_flag"; then + if test yes = "$build_old_libs"; then + func_warning "undefined symbols not allowed in $host shared libraries; building static only" + build_libtool_libs=no + else + func_fatal_error "can't build $host shared library unless -no-undefined is specified" + fi + fi + else + # Don't allow undefined symbols. + allow_undefined_flag=$no_undefined_flag + fi + + fi + + func_generate_dlsyms "$libname" "$libname" : + func_append libobjs " $symfileobj" + test " " = "$libobjs" && libobjs= + + if test relink != "$opt_mode"; then + # Remove our outputs, but don't remove object files since they + # may have been created when compiling PIC objects. + removelist= + tempremovelist=`$ECHO "$output_objdir/*"` + for p in $tempremovelist; do + case $p in + *.$objext | *.gcno) + ;; + $output_objdir/$outputname | $output_objdir/$libname.* | $output_objdir/$libname$release.*) + if test -n "$precious_files_regex"; then + if $ECHO "$p" | $EGREP -e "$precious_files_regex" >/dev/null 2>&1 + then + continue + fi + fi + func_append removelist " $p" + ;; + *) ;; + esac + done + test -n "$removelist" && \ + func_show_eval "${RM}r \$removelist" + fi + + # Now set the variables for building old libraries. + if test yes = "$build_old_libs" && test convenience != "$build_libtool_libs"; then + func_append oldlibs " $output_objdir/$libname.$libext" + + # Transform .lo files to .o files. + oldobjs="$objs "`$ECHO "$libobjs" | $SP2NL | $SED "/\.$libext$/d; $lo2o" | $NL2SP` + fi + + # Eliminate all temporary directories. + #for path in $notinst_path; do + # lib_search_path=`$ECHO "$lib_search_path " | $SED "s% $path % %g"` + # deplibs=`$ECHO "$deplibs " | $SED "s% -L$path % %g"` + # dependency_libs=`$ECHO "$dependency_libs " | $SED "s% -L$path % %g"` + #done + + if test -n "$xrpath"; then + # If the user specified any rpath flags, then add them. + temp_xrpath= + for libdir in $xrpath; do + func_replace_sysroot "$libdir" + func_append temp_xrpath " -R$func_replace_sysroot_result" + case "$finalize_rpath " in + *" $libdir "*) ;; + *) func_append finalize_rpath " $libdir" ;; + esac + done + if test yes != "$hardcode_into_libs" || test yes = "$build_old_libs"; then + dependency_libs="$temp_xrpath $dependency_libs" + fi + fi + + # Make sure dlfiles contains only unique files that won't be dlpreopened + old_dlfiles=$dlfiles + dlfiles= + for lib in $old_dlfiles; do + case " $dlprefiles $dlfiles " in + *" $lib "*) ;; + *) func_append dlfiles " $lib" ;; + esac + done + + # Make sure dlprefiles contains only unique files + old_dlprefiles=$dlprefiles + dlprefiles= + for lib in $old_dlprefiles; do + case "$dlprefiles " in + *" $lib "*) ;; + *) func_append dlprefiles " $lib" ;; + esac + done + + if test yes = "$build_libtool_libs"; then + if test -n "$rpath"; then + case $host in + *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos* | *-cegcc* | *-*-haiku*) + # these systems don't actually have a c library (as such)! + ;; + *-*-rhapsody* | *-*-darwin1.[012]) + # Rhapsody C library is in the System framework + func_append deplibs " System.ltframework" + ;; + *-*-netbsd*) + # Don't link with libc until the a.out ld.so is fixed. + ;; + *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) + # Do not include libc due to us having libc/libc_r. + ;; + *-*-sco3.2v5* | *-*-sco5v6*) + # Causes problems with __ctype + ;; + *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*) + # Compiler inserts libc in the correct place for threads to work + ;; + *) + # Add libc to deplibs on all other systems if necessary. + if test yes = "$build_libtool_need_lc"; then + func_append deplibs " -lc" + fi + ;; + esac + fi + + # Transform deplibs into only deplibs that can be linked in shared. + name_save=$name + libname_save=$libname + release_save=$release + versuffix_save=$versuffix + major_save=$major + # I'm not sure if I'm treating the release correctly. I think + # release should show up in the -l (ie -lgmp5) so we don't want to + # add it in twice. Is that correct? + release= + versuffix= + major= + newdeplibs= + droppeddeps=no + case $deplibs_check_method in + pass_all) + # Don't check for shared/static. Everything works. + # This might be a little naive. We might want to check + # whether the library exists or not. But this is on + # osf3 & osf4 and I'm not really sure... Just + # implementing what was already the behavior. + newdeplibs=$deplibs + ;; + test_compile) + # This code stresses the "libraries are programs" paradigm to its + # limits. Maybe even breaks it. We compile a program, linking it + # against the deplibs as a proxy for the library. Then we can check + # whether they linked in statically or dynamically with ldd. + $opt_dry_run || $RM conftest.c + cat > conftest.c </dev/null` + $nocaseglob + else + potential_libs=`ls $i/$libnameglob[.-]* 2>/dev/null` + fi + for potent_lib in $potential_libs; do + # Follow soft links. + if ls -lLd "$potent_lib" 2>/dev/null | + $GREP " -> " >/dev/null; then + continue + fi + # The statement above tries to avoid entering an + # endless loop below, in case of cyclic links. + # We might still enter an endless loop, since a link + # loop can be closed while we follow links, + # but so what? + potlib=$potent_lib + while test -h "$potlib" 2>/dev/null; do + potliblink=`ls -ld $potlib | $SED 's/.* -> //'` + case $potliblink in + [\\/]* | [A-Za-z]:[\\/]*) potlib=$potliblink;; + *) potlib=`$ECHO "$potlib" | $SED 's|[^/]*$||'`"$potliblink";; + esac + done + if eval $file_magic_cmd \"\$potlib\" 2>/dev/null | + $SED -e 10q | + $EGREP "$file_magic_regex" > /dev/null; then + func_append newdeplibs " $a_deplib" + a_deplib= + break 2 + fi + done + done + fi + if test -n "$a_deplib"; then + droppeddeps=yes + echo + $ECHO "*** Warning: linker path does not have real file for library $a_deplib." + echo "*** I have the capability to make that library automatically link in when" + echo "*** you link to this library. But I can only do this if you have a" + echo "*** shared version of the library, which you do not appear to have" + echo "*** because I did check the linker path looking for a file starting" + if test -z "$potlib"; then + $ECHO "*** with $libname but no candidates were found. (...for file magic test)" + else + $ECHO "*** with $libname and none of the candidates passed a file format test" + $ECHO "*** using a file magic. Last file checked: $potlib" + fi + fi + ;; + *) + # Add a -L argument. + func_append newdeplibs " $a_deplib" + ;; + esac + done # Gone through all deplibs. + ;; + match_pattern*) + set dummy $deplibs_check_method; shift + match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"` + for a_deplib in $deplibs; do + case $a_deplib in + -l*) + func_stripname -l '' "$a_deplib" + name=$func_stripname_result + if test yes = "$allow_libtool_libs_with_static_runtimes"; then + case " $predeps $postdeps " in + *" $a_deplib "*) + func_append newdeplibs " $a_deplib" + a_deplib= + ;; + esac + fi + if test -n "$a_deplib"; then + libname=`eval "\\$ECHO \"$libname_spec\""` + for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do + potential_libs=`ls $i/$libname[.-]* 2>/dev/null` + for potent_lib in $potential_libs; do + potlib=$potent_lib # see symlink-check above in file_magic test + if eval "\$ECHO \"$potent_lib\"" 2>/dev/null | $SED 10q | \ + $EGREP "$match_pattern_regex" > /dev/null; then + func_append newdeplibs " $a_deplib" + a_deplib= + break 2 + fi + done + done + fi + if test -n "$a_deplib"; then + droppeddeps=yes + echo + $ECHO "*** Warning: linker path does not have real file for library $a_deplib." + echo "*** I have the capability to make that library automatically link in when" + echo "*** you link to this library. But I can only do this if you have a" + echo "*** shared version of the library, which you do not appear to have" + echo "*** because I did check the linker path looking for a file starting" + if test -z "$potlib"; then + $ECHO "*** with $libname but no candidates were found. (...for regex pattern test)" + else + $ECHO "*** with $libname and none of the candidates passed a file format test" + $ECHO "*** using a regex pattern. Last file checked: $potlib" + fi + fi + ;; + *) + # Add a -L argument. + func_append newdeplibs " $a_deplib" + ;; + esac + done # Gone through all deplibs. + ;; + none | unknown | *) + newdeplibs= + tmp_deplibs=`$ECHO " $deplibs" | $SED 's/ -lc$//; s/ -[LR][^ ]*//g'` + if test yes = "$allow_libtool_libs_with_static_runtimes"; then + for i in $predeps $postdeps; do + # can't use Xsed below, because $i might contain '/' + tmp_deplibs=`$ECHO " $tmp_deplibs" | $SED "s|$i||"` + done + fi + case $tmp_deplibs in + *[!\ \ ]*) + echo + if test none = "$deplibs_check_method"; then + echo "*** Warning: inter-library dependencies are not supported in this platform." + else + echo "*** Warning: inter-library dependencies are not known to be supported." + fi + echo "*** All declared inter-library dependencies are being dropped." + droppeddeps=yes + ;; + esac + ;; + esac + versuffix=$versuffix_save + major=$major_save + release=$release_save + libname=$libname_save + name=$name_save + + case $host in + *-*-rhapsody* | *-*-darwin1.[012]) + # On Rhapsody replace the C library with the System framework + newdeplibs=`$ECHO " $newdeplibs" | $SED 's/ -lc / System.ltframework /'` + ;; + esac + + if test yes = "$droppeddeps"; then + if test yes = "$module"; then + echo + echo "*** Warning: libtool could not satisfy all declared inter-library" + $ECHO "*** dependencies of module $libname. Therefore, libtool will create" + echo "*** a static module, that should work as long as the dlopening" + echo "*** application is linked with the -dlopen flag." + if test -z "$global_symbol_pipe"; then + echo + echo "*** However, this would only work if libtool was able to extract symbol" + echo "*** lists from a program, using 'nm' or equivalent, but libtool could" + echo "*** not find such a program. So, this module is probably useless." + echo "*** 'nm' from GNU binutils and a full rebuild may help." + fi + if test no = "$build_old_libs"; then + oldlibs=$output_objdir/$libname.$libext + build_libtool_libs=module + build_old_libs=yes + else + build_libtool_libs=no + fi + else + echo "*** The inter-library dependencies that have been dropped here will be" + echo "*** automatically added whenever a program is linked with this library" + echo "*** or is declared to -dlopen it." + + if test no = "$allow_undefined"; then + echo + echo "*** Since this library must not contain undefined symbols," + echo "*** because either the platform does not support them or" + echo "*** it was explicitly requested with -no-undefined," + echo "*** libtool will only create a static version of it." + if test no = "$build_old_libs"; then + oldlibs=$output_objdir/$libname.$libext + build_libtool_libs=module + build_old_libs=yes + else + build_libtool_libs=no + fi + fi + fi + fi + # Done checking deplibs! + deplibs=$newdeplibs + fi + # Time to change all our "foo.ltframework" stuff back to "-framework foo" + case $host in + *-*-darwin*) + newdeplibs=`$ECHO " $newdeplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` + new_inherited_linker_flags=`$ECHO " $new_inherited_linker_flags" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` + deplibs=`$ECHO " $deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` + ;; + esac + + # move library search paths that coincide with paths to not yet + # installed libraries to the beginning of the library search list + new_libs= + for path in $notinst_path; do + case " $new_libs " in + *" -L$path/$objdir "*) ;; + *) + case " $deplibs " in + *" -L$path/$objdir "*) + func_append new_libs " -L$path/$objdir" ;; + esac + ;; + esac + done + for deplib in $deplibs; do + case $deplib in + -L*) + case " $new_libs " in + *" $deplib "*) ;; + *) func_append new_libs " $deplib" ;; + esac + ;; + *) func_append new_libs " $deplib" ;; + esac + done + deplibs=$new_libs + + # All the library-specific variables (install_libdir is set above). + library_names= + old_library= + dlname= + + # Test again, we may have decided not to build it any more + if test yes = "$build_libtool_libs"; then + # Remove $wl instances when linking with ld. + # FIXME: should test the right _cmds variable. + case $archive_cmds in + *\$LD\ *) wl= ;; + esac + if test yes = "$hardcode_into_libs"; then + # Hardcode the library paths + hardcode_libdirs= + dep_rpath= + rpath=$finalize_rpath + test relink = "$opt_mode" || rpath=$compile_rpath$rpath + for libdir in $rpath; do + if test -n "$hardcode_libdir_flag_spec"; then + if test -n "$hardcode_libdir_separator"; then + func_replace_sysroot "$libdir" + libdir=$func_replace_sysroot_result + if test -z "$hardcode_libdirs"; then + hardcode_libdirs=$libdir + else + # Just accumulate the unique libdirs. + case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in + *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) + ;; + *) + func_append hardcode_libdirs "$hardcode_libdir_separator$libdir" + ;; + esac + fi + else + eval flag=\"$hardcode_libdir_flag_spec\" + func_append dep_rpath " $flag" + fi + elif test -n "$runpath_var"; then + case "$perm_rpath " in + *" $libdir "*) ;; + *) func_append perm_rpath " $libdir" ;; + esac + fi + done + # Substitute the hardcoded libdirs into the rpath. + if test -n "$hardcode_libdir_separator" && + test -n "$hardcode_libdirs"; then + libdir=$hardcode_libdirs + eval "dep_rpath=\"$hardcode_libdir_flag_spec\"" + fi + if test -n "$runpath_var" && test -n "$perm_rpath"; then + # We should set the runpath_var. + rpath= + for dir in $perm_rpath; do + func_append rpath "$dir:" + done + eval "$runpath_var='$rpath\$$runpath_var'; export $runpath_var" + fi + test -n "$dep_rpath" && deplibs="$dep_rpath $deplibs" + fi + + shlibpath=$finalize_shlibpath + test relink = "$opt_mode" || shlibpath=$compile_shlibpath$shlibpath + if test -n "$shlibpath"; then + eval "$shlibpath_var='$shlibpath\$$shlibpath_var'; export $shlibpath_var" + fi + + # Get the real and link names of the library. + eval shared_ext=\"$shrext_cmds\" + eval library_names=\"$library_names_spec\" + set dummy $library_names + shift + realname=$1 + shift + + if test -n "$soname_spec"; then + eval soname=\"$soname_spec\" + else + soname=$realname + fi + if test -z "$dlname"; then + dlname=$soname + fi + + lib=$output_objdir/$realname + linknames= + for link + do + func_append linknames " $link" + done + + # Use standard objects if they are pic + test -z "$pic_flag" && libobjs=`$ECHO "$libobjs" | $SP2NL | $SED "$lo2o" | $NL2SP` + test "X$libobjs" = "X " && libobjs= + + delfiles= + if test -n "$export_symbols" && test -n "$include_expsyms"; then + $opt_dry_run || cp "$export_symbols" "$output_objdir/$libname.uexp" + export_symbols=$output_objdir/$libname.uexp + func_append delfiles " $export_symbols" + fi + + orig_export_symbols= + case $host_os in + cygwin* | mingw* | cegcc*) + if test -n "$export_symbols" && test -z "$export_symbols_regex"; then + # exporting using user supplied symfile + func_dll_def_p "$export_symbols" || { + # and it's NOT already a .def file. Must figure out + # which of the given symbols are data symbols and tag + # them as such. So, trigger use of export_symbols_cmds. + # export_symbols gets reassigned inside the "prepare + # the list of exported symbols" if statement, so the + # include_expsyms logic still works. + orig_export_symbols=$export_symbols + export_symbols= + always_export_symbols=yes + } + fi + ;; + esac + + # Prepare the list of exported symbols + if test -z "$export_symbols"; then + if test yes = "$always_export_symbols" || test -n "$export_symbols_regex"; then + func_verbose "generating symbol list for '$libname.la'" + export_symbols=$output_objdir/$libname.exp + $opt_dry_run || $RM $export_symbols + cmds=$export_symbols_cmds + save_ifs=$IFS; IFS='~' + for cmd1 in $cmds; do + IFS=$save_ifs + # Take the normal branch if the nm_file_list_spec branch + # doesn't work or if tool conversion is not needed. + case $nm_file_list_spec~$to_tool_file_cmd in + *~func_convert_file_noop | *~func_convert_file_msys_to_w32 | ~*) + try_normal_branch=yes + eval cmd=\"$cmd1\" + func_len " $cmd" + len=$func_len_result + ;; + *) + try_normal_branch=no + ;; + esac + if test yes = "$try_normal_branch" \ + && { test "$len" -lt "$max_cmd_len" \ + || test "$max_cmd_len" -le -1; } + then + func_show_eval "$cmd" 'exit $?' + skipped_export=false + elif test -n "$nm_file_list_spec"; then + func_basename "$output" + output_la=$func_basename_result + save_libobjs=$libobjs + save_output=$output + output=$output_objdir/$output_la.nm + func_to_tool_file "$output" + libobjs=$nm_file_list_spec$func_to_tool_file_result + func_append delfiles " $output" + func_verbose "creating $NM input file list: $output" + for obj in $save_libobjs; do + func_to_tool_file "$obj" + $ECHO "$func_to_tool_file_result" + done > "$output" + eval cmd=\"$cmd1\" + func_show_eval "$cmd" 'exit $?' + output=$save_output + libobjs=$save_libobjs + skipped_export=false + else + # The command line is too long to execute in one step. + func_verbose "using reloadable object file for export list..." + skipped_export=: + # Break out early, otherwise skipped_export may be + # set to false by a later but shorter cmd. + break + fi + done + IFS=$save_ifs + if test -n "$export_symbols_regex" && test : != "$skipped_export"; then + func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"' + func_show_eval '$MV "${export_symbols}T" "$export_symbols"' + fi + fi + fi + + if test -n "$export_symbols" && test -n "$include_expsyms"; then + tmp_export_symbols=$export_symbols + test -n "$orig_export_symbols" && tmp_export_symbols=$orig_export_symbols + $opt_dry_run || eval '$ECHO "$include_expsyms" | $SP2NL >> "$tmp_export_symbols"' + fi + + if test : != "$skipped_export" && test -n "$orig_export_symbols"; then + # The given exports_symbols file has to be filtered, so filter it. + func_verbose "filter symbol list for '$libname.la' to tag DATA exports" + # FIXME: $output_objdir/$libname.filter potentially contains lots of + # 's' commands, which not all seds can handle. GNU sed should be fine + # though. Also, the filter scales superlinearly with the number of + # global variables. join(1) would be nice here, but unfortunately + # isn't a blessed tool. + $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter + func_append delfiles " $export_symbols $output_objdir/$libname.filter" + export_symbols=$output_objdir/$libname.def + $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols + fi + + tmp_deplibs= + for test_deplib in $deplibs; do + case " $convenience " in + *" $test_deplib "*) ;; + *) + func_append tmp_deplibs " $test_deplib" + ;; + esac + done + deplibs=$tmp_deplibs + + if test -n "$convenience"; then + if test -n "$whole_archive_flag_spec" && + test yes = "$compiler_needs_object" && + test -z "$libobjs"; then + # extract the archives, so we have objects to list. + # TODO: could optimize this to just extract one archive. + whole_archive_flag_spec= + fi + if test -n "$whole_archive_flag_spec"; then + save_libobjs=$libobjs + eval libobjs=\"\$libobjs $whole_archive_flag_spec\" + test "X$libobjs" = "X " && libobjs= + else + gentop=$output_objdir/${outputname}x + func_append generated " $gentop" + + func_extract_archives $gentop $convenience + func_append libobjs " $func_extract_archives_result" + test "X$libobjs" = "X " && libobjs= + fi + fi + + if test yes = "$thread_safe" && test -n "$thread_safe_flag_spec"; then + eval flag=\"$thread_safe_flag_spec\" + func_append linker_flags " $flag" + fi + + # Make a backup of the uninstalled library when relinking + if test relink = "$opt_mode"; then + $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}U && $MV $realname ${realname}U)' || exit $? + fi + + # Do each of the archive commands. + if test yes = "$module" && test -n "$module_cmds"; then + if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then + eval test_cmds=\"$module_expsym_cmds\" + cmds=$module_expsym_cmds + else + eval test_cmds=\"$module_cmds\" + cmds=$module_cmds + fi + else + if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then + eval test_cmds=\"$archive_expsym_cmds\" + cmds=$archive_expsym_cmds + else + eval test_cmds=\"$archive_cmds\" + cmds=$archive_cmds + fi + fi + + if test : != "$skipped_export" && + func_len " $test_cmds" && + len=$func_len_result && + test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then + : + else + # The command line is too long to link in one step, link piecewise + # or, if using GNU ld and skipped_export is not :, use a linker + # script. + + # Save the value of $output and $libobjs because we want to + # use them later. If we have whole_archive_flag_spec, we + # want to use save_libobjs as it was before + # whole_archive_flag_spec was expanded, because we can't + # assume the linker understands whole_archive_flag_spec. + # This may have to be revisited, in case too many + # convenience libraries get linked in and end up exceeding + # the spec. + if test -z "$convenience" || test -z "$whole_archive_flag_spec"; then + save_libobjs=$libobjs + fi + save_output=$output + func_basename "$output" + output_la=$func_basename_result + + # Clear the reloadable object creation command queue and + # initialize k to one. + test_cmds= + concat_cmds= + objlist= + last_robj= + k=1 + + if test -n "$save_libobjs" && test : != "$skipped_export" && test yes = "$with_gnu_ld"; then + output=$output_objdir/$output_la.lnkscript + func_verbose "creating GNU ld script: $output" + echo 'INPUT (' > $output + for obj in $save_libobjs + do + func_to_tool_file "$obj" + $ECHO "$func_to_tool_file_result" >> $output + done + echo ')' >> $output + func_append delfiles " $output" + func_to_tool_file "$output" + output=$func_to_tool_file_result + elif test -n "$save_libobjs" && test : != "$skipped_export" && test -n "$file_list_spec"; then + output=$output_objdir/$output_la.lnk + func_verbose "creating linker input file list: $output" + : > $output + set x $save_libobjs + shift + firstobj= + if test yes = "$compiler_needs_object"; then + firstobj="$1 " + shift + fi + for obj + do + func_to_tool_file "$obj" + $ECHO "$func_to_tool_file_result" >> $output + done + func_append delfiles " $output" + func_to_tool_file "$output" + output=$firstobj\"$file_list_spec$func_to_tool_file_result\" + else + if test -n "$save_libobjs"; then + func_verbose "creating reloadable object files..." + output=$output_objdir/$output_la-$k.$objext + eval test_cmds=\"$reload_cmds\" + func_len " $test_cmds" + len0=$func_len_result + len=$len0 + + # Loop over the list of objects to be linked. + for obj in $save_libobjs + do + func_len " $obj" + func_arith $len + $func_len_result + len=$func_arith_result + if test -z "$objlist" || + test "$len" -lt "$max_cmd_len"; then + func_append objlist " $obj" + else + # The command $test_cmds is almost too long, add a + # command to the queue. + if test 1 -eq "$k"; then + # The first file doesn't have a previous command to add. + reload_objs=$objlist + eval concat_cmds=\"$reload_cmds\" + else + # All subsequent reloadable object files will link in + # the last one created. + reload_objs="$objlist $last_robj" + eval concat_cmds=\"\$concat_cmds~$reload_cmds~\$RM $last_robj\" + fi + last_robj=$output_objdir/$output_la-$k.$objext + func_arith $k + 1 + k=$func_arith_result + output=$output_objdir/$output_la-$k.$objext + objlist=" $obj" + func_len " $last_robj" + func_arith $len0 + $func_len_result + len=$func_arith_result + fi + done + # Handle the remaining objects by creating one last + # reloadable object file. All subsequent reloadable object + # files will link in the last one created. + test -z "$concat_cmds" || concat_cmds=$concat_cmds~ + reload_objs="$objlist $last_robj" + eval concat_cmds=\"\$concat_cmds$reload_cmds\" + if test -n "$last_robj"; then + eval concat_cmds=\"\$concat_cmds~\$RM $last_robj\" + fi + func_append delfiles " $output" + + else + output= + fi + + ${skipped_export-false} && { + func_verbose "generating symbol list for '$libname.la'" + export_symbols=$output_objdir/$libname.exp + $opt_dry_run || $RM $export_symbols + libobjs=$output + # Append the command to create the export file. + test -z "$concat_cmds" || concat_cmds=$concat_cmds~ + eval concat_cmds=\"\$concat_cmds$export_symbols_cmds\" + if test -n "$last_robj"; then + eval concat_cmds=\"\$concat_cmds~\$RM $last_robj\" + fi + } + + test -n "$save_libobjs" && + func_verbose "creating a temporary reloadable object file: $output" + + # Loop through the commands generated above and execute them. + save_ifs=$IFS; IFS='~' + for cmd in $concat_cmds; do + IFS=$save_ifs + $opt_quiet || { + func_quote_for_expand "$cmd" + eval "func_echo $func_quote_for_expand_result" + } + $opt_dry_run || eval "$cmd" || { + lt_exit=$? + + # Restore the uninstalled library and exit + if test relink = "$opt_mode"; then + ( cd "$output_objdir" && \ + $RM "${realname}T" && \ + $MV "${realname}U" "$realname" ) + fi + + exit $lt_exit + } + done + IFS=$save_ifs + + if test -n "$export_symbols_regex" && ${skipped_export-false}; then + func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"' + func_show_eval '$MV "${export_symbols}T" "$export_symbols"' + fi + fi + + ${skipped_export-false} && { + if test -n "$export_symbols" && test -n "$include_expsyms"; then + tmp_export_symbols=$export_symbols + test -n "$orig_export_symbols" && tmp_export_symbols=$orig_export_symbols + $opt_dry_run || eval '$ECHO "$include_expsyms" | $SP2NL >> "$tmp_export_symbols"' + fi + + if test -n "$orig_export_symbols"; then + # The given exports_symbols file has to be filtered, so filter it. + func_verbose "filter symbol list for '$libname.la' to tag DATA exports" + # FIXME: $output_objdir/$libname.filter potentially contains lots of + # 's' commands, which not all seds can handle. GNU sed should be fine + # though. Also, the filter scales superlinearly with the number of + # global variables. join(1) would be nice here, but unfortunately + # isn't a blessed tool. + $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter + func_append delfiles " $export_symbols $output_objdir/$libname.filter" + export_symbols=$output_objdir/$libname.def + $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols + fi + } + + libobjs=$output + # Restore the value of output. + output=$save_output + + if test -n "$convenience" && test -n "$whole_archive_flag_spec"; then + eval libobjs=\"\$libobjs $whole_archive_flag_spec\" + test "X$libobjs" = "X " && libobjs= + fi + # Expand the library linking commands again to reset the + # value of $libobjs for piecewise linking. + + # Do each of the archive commands. + if test yes = "$module" && test -n "$module_cmds"; then + if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then + cmds=$module_expsym_cmds + else + cmds=$module_cmds + fi + else + if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then + cmds=$archive_expsym_cmds + else + cmds=$archive_cmds + fi + fi + fi + + if test -n "$delfiles"; then + # Append the command to remove temporary files to $cmds. + eval cmds=\"\$cmds~\$RM $delfiles\" + fi + + # Add any objects from preloaded convenience libraries + if test -n "$dlprefiles"; then + gentop=$output_objdir/${outputname}x + func_append generated " $gentop" + + func_extract_archives $gentop $dlprefiles + func_append libobjs " $func_extract_archives_result" + test "X$libobjs" = "X " && libobjs= + fi + + save_ifs=$IFS; IFS='~' + for cmd in $cmds; do + IFS=$sp$nl + eval cmd=\"$cmd\" + IFS=$save_ifs + $opt_quiet || { + func_quote_for_expand "$cmd" + eval "func_echo $func_quote_for_expand_result" + } + $opt_dry_run || eval "$cmd" || { + lt_exit=$? + + # Restore the uninstalled library and exit + if test relink = "$opt_mode"; then + ( cd "$output_objdir" && \ + $RM "${realname}T" && \ + $MV "${realname}U" "$realname" ) + fi + + exit $lt_exit + } + done + IFS=$save_ifs + + # Restore the uninstalled library and exit + if test relink = "$opt_mode"; then + $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}T && $MV $realname ${realname}T && $MV ${realname}U $realname)' || exit $? + + if test -n "$convenience"; then + if test -z "$whole_archive_flag_spec"; then + func_show_eval '${RM}r "$gentop"' + fi + fi + + exit $EXIT_SUCCESS + fi + + # Create links to the real library. + for linkname in $linknames; do + if test "$realname" != "$linkname"; then + func_show_eval '(cd "$output_objdir" && $RM "$linkname" && $LN_S "$realname" "$linkname")' 'exit $?' + fi + done + + # If -module or -export-dynamic was specified, set the dlname. + if test yes = "$module" || test yes = "$export_dynamic"; then + # On all known operating systems, these are identical. + dlname=$soname + fi + fi + ;; + + obj) + if test -n "$dlfiles$dlprefiles" || test no != "$dlself"; then + func_warning "'-dlopen' is ignored for objects" + fi + + case " $deplibs" in + *\ -l* | *\ -L*) + func_warning "'-l' and '-L' are ignored for objects" ;; + esac + + test -n "$rpath" && \ + func_warning "'-rpath' is ignored for objects" + + test -n "$xrpath" && \ + func_warning "'-R' is ignored for objects" + + test -n "$vinfo" && \ + func_warning "'-version-info' is ignored for objects" + + test -n "$release" && \ + func_warning "'-release' is ignored for objects" + + case $output in + *.lo) + test -n "$objs$old_deplibs" && \ + func_fatal_error "cannot build library object '$output' from non-libtool objects" + + libobj=$output + func_lo2o "$libobj" + obj=$func_lo2o_result + ;; + *) + libobj= + obj=$output + ;; + esac + + # Delete the old objects. + $opt_dry_run || $RM $obj $libobj + + # Objects from convenience libraries. This assumes + # single-version convenience libraries. Whenever we create + # different ones for PIC/non-PIC, this we'll have to duplicate + # the extraction. + reload_conv_objs= + gentop= + # if reload_cmds runs $LD directly, get rid of -Wl from + # whole_archive_flag_spec and hope we can get by with turning comma + # into space. + case $reload_cmds in + *\$LD[\ \$]*) wl= ;; + esac + if test -n "$convenience"; then + if test -n "$whole_archive_flag_spec"; then + eval tmp_whole_archive_flags=\"$whole_archive_flag_spec\" + test -n "$wl" || tmp_whole_archive_flags=`$ECHO "$tmp_whole_archive_flags" | $SED 's|,| |g'` + reload_conv_objs=$reload_objs\ $tmp_whole_archive_flags + else + gentop=$output_objdir/${obj}x + func_append generated " $gentop" + + func_extract_archives $gentop $convenience + reload_conv_objs="$reload_objs $func_extract_archives_result" + fi + fi + + # If we're not building shared, we need to use non_pic_objs + test yes = "$build_libtool_libs" || libobjs=$non_pic_objects + + # Create the old-style object. + reload_objs=$objs$old_deplibs' '`$ECHO "$libobjs" | $SP2NL | $SED "/\.$libext$/d; /\.lib$/d; $lo2o" | $NL2SP`' '$reload_conv_objs + + output=$obj + func_execute_cmds "$reload_cmds" 'exit $?' + + # Exit if we aren't doing a library object file. + if test -z "$libobj"; then + if test -n "$gentop"; then + func_show_eval '${RM}r "$gentop"' + fi + + exit $EXIT_SUCCESS + fi + + test yes = "$build_libtool_libs" || { + if test -n "$gentop"; then + func_show_eval '${RM}r "$gentop"' + fi + + # Create an invalid libtool object if no PIC, so that we don't + # accidentally link it into a program. + # $show "echo timestamp > $libobj" + # $opt_dry_run || eval "echo timestamp > $libobj" || exit $? + exit $EXIT_SUCCESS + } + + if test -n "$pic_flag" || test default != "$pic_mode"; then + # Only do commands if we really have different PIC objects. + reload_objs="$libobjs $reload_conv_objs" + output=$libobj + func_execute_cmds "$reload_cmds" 'exit $?' + fi + + if test -n "$gentop"; then + func_show_eval '${RM}r "$gentop"' + fi + + exit $EXIT_SUCCESS + ;; + + prog) + case $host in + *cygwin*) func_stripname '' '.exe' "$output" + output=$func_stripname_result.exe;; + esac + test -n "$vinfo" && \ + func_warning "'-version-info' is ignored for programs" + + test -n "$release" && \ + func_warning "'-release' is ignored for programs" + + $preload \ + && test unknown,unknown,unknown = "$dlopen_support,$dlopen_self,$dlopen_self_static" \ + && func_warning "'LT_INIT([dlopen])' not used. Assuming no dlopen support." + + case $host in + *-*-rhapsody* | *-*-darwin1.[012]) + # On Rhapsody replace the C library is the System framework + compile_deplibs=`$ECHO " $compile_deplibs" | $SED 's/ -lc / System.ltframework /'` + finalize_deplibs=`$ECHO " $finalize_deplibs" | $SED 's/ -lc / System.ltframework /'` + ;; + esac + + case $host in + *-*-darwin*) + # Don't allow lazy linking, it breaks C++ global constructors + # But is supposedly fixed on 10.4 or later (yay!). + if test CXX = "$tagname"; then + case ${MACOSX_DEPLOYMENT_TARGET-10.0} in + 10.[0123]) + func_append compile_command " $wl-bind_at_load" + func_append finalize_command " $wl-bind_at_load" + ;; + esac + fi + # Time to change all our "foo.ltframework" stuff back to "-framework foo" + compile_deplibs=`$ECHO " $compile_deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` + finalize_deplibs=`$ECHO " $finalize_deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` + ;; + esac + + + # move library search paths that coincide with paths to not yet + # installed libraries to the beginning of the library search list + new_libs= + for path in $notinst_path; do + case " $new_libs " in + *" -L$path/$objdir "*) ;; + *) + case " $compile_deplibs " in + *" -L$path/$objdir "*) + func_append new_libs " -L$path/$objdir" ;; + esac + ;; + esac + done + for deplib in $compile_deplibs; do + case $deplib in + -L*) + case " $new_libs " in + *" $deplib "*) ;; + *) func_append new_libs " $deplib" ;; + esac + ;; + *) func_append new_libs " $deplib" ;; + esac + done + compile_deplibs=$new_libs + + + func_append compile_command " $compile_deplibs" + func_append finalize_command " $finalize_deplibs" + + if test -n "$rpath$xrpath"; then + # If the user specified any rpath flags, then add them. + for libdir in $rpath $xrpath; do + # This is the magic to use -rpath. + case "$finalize_rpath " in + *" $libdir "*) ;; + *) func_append finalize_rpath " $libdir" ;; + esac + done + fi + + # Now hardcode the library paths + rpath= + hardcode_libdirs= + for libdir in $compile_rpath $finalize_rpath; do + if test -n "$hardcode_libdir_flag_spec"; then + if test -n "$hardcode_libdir_separator"; then + if test -z "$hardcode_libdirs"; then + hardcode_libdirs=$libdir + else + # Just accumulate the unique libdirs. + case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in + *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) + ;; + *) + func_append hardcode_libdirs "$hardcode_libdir_separator$libdir" + ;; + esac + fi + else + eval flag=\"$hardcode_libdir_flag_spec\" + func_append rpath " $flag" + fi + elif test -n "$runpath_var"; then + case "$perm_rpath " in + *" $libdir "*) ;; + *) func_append perm_rpath " $libdir" ;; + esac + fi + case $host in + *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) + testbindir=`$ECHO "$libdir" | $SED -e 's*/lib$*/bin*'` + case :$dllsearchpath: in + *":$libdir:"*) ;; + ::) dllsearchpath=$libdir;; + *) func_append dllsearchpath ":$libdir";; + esac + case :$dllsearchpath: in + *":$testbindir:"*) ;; + ::) dllsearchpath=$testbindir;; + *) func_append dllsearchpath ":$testbindir";; + esac + ;; + esac + done + # Substitute the hardcoded libdirs into the rpath. + if test -n "$hardcode_libdir_separator" && + test -n "$hardcode_libdirs"; then + libdir=$hardcode_libdirs + eval rpath=\" $hardcode_libdir_flag_spec\" + fi + compile_rpath=$rpath + + rpath= + hardcode_libdirs= + for libdir in $finalize_rpath; do + if test -n "$hardcode_libdir_flag_spec"; then + if test -n "$hardcode_libdir_separator"; then + if test -z "$hardcode_libdirs"; then + hardcode_libdirs=$libdir + else + # Just accumulate the unique libdirs. + case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in + *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) + ;; + *) + func_append hardcode_libdirs "$hardcode_libdir_separator$libdir" + ;; + esac + fi + else + eval flag=\"$hardcode_libdir_flag_spec\" + func_append rpath " $flag" + fi + elif test -n "$runpath_var"; then + case "$finalize_perm_rpath " in + *" $libdir "*) ;; + *) func_append finalize_perm_rpath " $libdir" ;; + esac + fi + done + # Substitute the hardcoded libdirs into the rpath. + if test -n "$hardcode_libdir_separator" && + test -n "$hardcode_libdirs"; then + libdir=$hardcode_libdirs + eval rpath=\" $hardcode_libdir_flag_spec\" + fi + finalize_rpath=$rpath + + if test -n "$libobjs" && test yes = "$build_old_libs"; then + # Transform all the library objects into standard objects. + compile_command=`$ECHO "$compile_command" | $SP2NL | $SED "$lo2o" | $NL2SP` + finalize_command=`$ECHO "$finalize_command" | $SP2NL | $SED "$lo2o" | $NL2SP` + fi + + func_generate_dlsyms "$outputname" "@PROGRAM@" false + + # template prelinking step + if test -n "$prelink_cmds"; then + func_execute_cmds "$prelink_cmds" 'exit $?' + fi + + wrappers_required=: + case $host in + *cegcc* | *mingw32ce*) + # Disable wrappers for cegcc and mingw32ce hosts, we are cross compiling anyway. + wrappers_required=false + ;; + *cygwin* | *mingw* ) + test yes = "$build_libtool_libs" || wrappers_required=false + ;; + *) + if test no = "$need_relink" || test yes != "$build_libtool_libs"; then + wrappers_required=false + fi + ;; + esac + $wrappers_required || { + # Replace the output file specification. + compile_command=`$ECHO "$compile_command" | $SED 's%@OUTPUT@%'"$output"'%g'` + link_command=$compile_command$compile_rpath + + # We have no uninstalled library dependencies, so finalize right now. + exit_status=0 + func_show_eval "$link_command" 'exit_status=$?' + + if test -n "$postlink_cmds"; then + func_to_tool_file "$output" + postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'` + func_execute_cmds "$postlink_cmds" 'exit $?' + fi + + # Delete the generated files. + if test -f "$output_objdir/${outputname}S.$objext"; then + func_show_eval '$RM "$output_objdir/${outputname}S.$objext"' + fi + + exit $exit_status + } + + if test -n "$compile_shlibpath$finalize_shlibpath"; then + compile_command="$shlibpath_var=\"$compile_shlibpath$finalize_shlibpath\$$shlibpath_var\" $compile_command" + fi + if test -n "$finalize_shlibpath"; then + finalize_command="$shlibpath_var=\"$finalize_shlibpath\$$shlibpath_var\" $finalize_command" + fi + + compile_var= + finalize_var= + if test -n "$runpath_var"; then + if test -n "$perm_rpath"; then + # We should set the runpath_var. + rpath= + for dir in $perm_rpath; do + func_append rpath "$dir:" + done + compile_var="$runpath_var=\"$rpath\$$runpath_var\" " + fi + if test -n "$finalize_perm_rpath"; then + # We should set the runpath_var. + rpath= + for dir in $finalize_perm_rpath; do + func_append rpath "$dir:" + done + finalize_var="$runpath_var=\"$rpath\$$runpath_var\" " + fi + fi + + if test yes = "$no_install"; then + # We don't need to create a wrapper script. + link_command=$compile_var$compile_command$compile_rpath + # Replace the output file specification. + link_command=`$ECHO "$link_command" | $SED 's%@OUTPUT@%'"$output"'%g'` + # Delete the old output file. + $opt_dry_run || $RM $output + # Link the executable and exit + func_show_eval "$link_command" 'exit $?' + + if test -n "$postlink_cmds"; then + func_to_tool_file "$output" + postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'` + func_execute_cmds "$postlink_cmds" 'exit $?' + fi + + exit $EXIT_SUCCESS + fi + + case $hardcode_action,$fast_install in + relink,*) + # Fast installation is not supported + link_command=$compile_var$compile_command$compile_rpath + relink_command=$finalize_var$finalize_command$finalize_rpath + + func_warning "this platform does not like uninstalled shared libraries" + func_warning "'$output' will be relinked during installation" + ;; + *,yes) + link_command=$finalize_var$compile_command$finalize_rpath + relink_command=`$ECHO "$compile_var$compile_command$compile_rpath" | $SED 's%@OUTPUT@%\$progdir/\$file%g'` + ;; + *,no) + link_command=$compile_var$compile_command$compile_rpath + relink_command=$finalize_var$finalize_command$finalize_rpath + ;; + *,needless) + link_command=$finalize_var$compile_command$finalize_rpath + relink_command= + ;; + esac + + # Replace the output file specification. + link_command=`$ECHO "$link_command" | $SED 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'` + + # Delete the old output files. + $opt_dry_run || $RM $output $output_objdir/$outputname $output_objdir/lt-$outputname + + func_show_eval "$link_command" 'exit $?' + + if test -n "$postlink_cmds"; then + func_to_tool_file "$output_objdir/$outputname" + postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output_objdir/$outputname"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'` + func_execute_cmds "$postlink_cmds" 'exit $?' + fi + + # Now create the wrapper script. + func_verbose "creating $output" + + # Quote the relink command for shipping. + if test -n "$relink_command"; then + # Preserve any variables that may affect compiler behavior + for var in $variables_saved_for_relink; do + if eval test -z \"\${$var+set}\"; then + relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command" + elif eval var_value=\$$var; test -z "$var_value"; then + relink_command="$var=; export $var; $relink_command" + else + func_quote_for_eval "$var_value" + relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command" + fi + done + relink_command="(cd `pwd`; $relink_command)" + relink_command=`$ECHO "$relink_command" | $SED "$sed_quote_subst"` + fi + + # Only actually do things if not in dry run mode. + $opt_dry_run || { + # win32 will think the script is a binary if it has + # a .exe suffix, so we strip it off here. + case $output in + *.exe) func_stripname '' '.exe' "$output" + output=$func_stripname_result ;; + esac + # test for cygwin because mv fails w/o .exe extensions + case $host in + *cygwin*) + exeext=.exe + func_stripname '' '.exe' "$outputname" + outputname=$func_stripname_result ;; + *) exeext= ;; + esac + case $host in + *cygwin* | *mingw* ) + func_dirname_and_basename "$output" "" "." + output_name=$func_basename_result + output_path=$func_dirname_result + cwrappersource=$output_path/$objdir/lt-$output_name.c + cwrapper=$output_path/$output_name.exe + $RM $cwrappersource $cwrapper + trap "$RM $cwrappersource $cwrapper; exit $EXIT_FAILURE" 1 2 15 + + func_emit_cwrapperexe_src > $cwrappersource + + # The wrapper executable is built using the $host compiler, + # because it contains $host paths and files. If cross- + # compiling, it, like the target executable, must be + # executed on the $host or under an emulation environment. + $opt_dry_run || { + $LTCC $LTCFLAGS -o $cwrapper $cwrappersource + $STRIP $cwrapper + } + + # Now, create the wrapper script for func_source use: + func_ltwrapper_scriptname $cwrapper + $RM $func_ltwrapper_scriptname_result + trap "$RM $func_ltwrapper_scriptname_result; exit $EXIT_FAILURE" 1 2 15 + $opt_dry_run || { + # note: this script will not be executed, so do not chmod. + if test "x$build" = "x$host"; then + $cwrapper --lt-dump-script > $func_ltwrapper_scriptname_result + else + func_emit_wrapper no > $func_ltwrapper_scriptname_result + fi + } + ;; + * ) + $RM $output + trap "$RM $output; exit $EXIT_FAILURE" 1 2 15 + + func_emit_wrapper no > $output + chmod +x $output + ;; + esac + } + exit $EXIT_SUCCESS + ;; + esac + + # See if we need to build an old-fashioned archive. + for oldlib in $oldlibs; do + + case $build_libtool_libs in + convenience) + oldobjs="$libobjs_save $symfileobj" + addlibs=$convenience + build_libtool_libs=no + ;; + module) + oldobjs=$libobjs_save + addlibs=$old_convenience + build_libtool_libs=no + ;; + *) + oldobjs="$old_deplibs $non_pic_objects" + $preload && test -f "$symfileobj" \ + && func_append oldobjs " $symfileobj" + addlibs=$old_convenience + ;; + esac + + if test -n "$addlibs"; then + gentop=$output_objdir/${outputname}x + func_append generated " $gentop" + + func_extract_archives $gentop $addlibs + func_append oldobjs " $func_extract_archives_result" + fi + + # Do each command in the archive commands. + if test -n "$old_archive_from_new_cmds" && test yes = "$build_libtool_libs"; then + cmds=$old_archive_from_new_cmds + else + + # Add any objects from preloaded convenience libraries + if test -n "$dlprefiles"; then + gentop=$output_objdir/${outputname}x + func_append generated " $gentop" + + func_extract_archives $gentop $dlprefiles + func_append oldobjs " $func_extract_archives_result" + fi + + # POSIX demands no paths to be encoded in archives. We have + # to avoid creating archives with duplicate basenames if we + # might have to extract them afterwards, e.g., when creating a + # static archive out of a convenience library, or when linking + # the entirety of a libtool archive into another (currently + # not supported by libtool). + if (for obj in $oldobjs + do + func_basename "$obj" + $ECHO "$func_basename_result" + done | sort | sort -uc >/dev/null 2>&1); then + : + else + echo "copying selected object files to avoid basename conflicts..." + gentop=$output_objdir/${outputname}x + func_append generated " $gentop" + func_mkdir_p "$gentop" + save_oldobjs=$oldobjs + oldobjs= + counter=1 + for obj in $save_oldobjs + do + func_basename "$obj" + objbase=$func_basename_result + case " $oldobjs " in + " ") oldobjs=$obj ;; + *[\ /]"$objbase "*) + while :; do + # Make sure we don't pick an alternate name that also + # overlaps. + newobj=lt$counter-$objbase + func_arith $counter + 1 + counter=$func_arith_result + case " $oldobjs " in + *[\ /]"$newobj "*) ;; + *) if test ! -f "$gentop/$newobj"; then break; fi ;; + esac + done + func_show_eval "ln $obj $gentop/$newobj || cp $obj $gentop/$newobj" + func_append oldobjs " $gentop/$newobj" + ;; + *) func_append oldobjs " $obj" ;; + esac + done + fi + func_to_tool_file "$oldlib" func_convert_file_msys_to_w32 + tool_oldlib=$func_to_tool_file_result + eval cmds=\"$old_archive_cmds\" + + func_len " $cmds" + len=$func_len_result + if test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then + cmds=$old_archive_cmds + elif test -n "$archiver_list_spec"; then + func_verbose "using command file archive linking..." + for obj in $oldobjs + do + func_to_tool_file "$obj" + $ECHO "$func_to_tool_file_result" + done > $output_objdir/$libname.libcmd + func_to_tool_file "$output_objdir/$libname.libcmd" + oldobjs=" $archiver_list_spec$func_to_tool_file_result" + cmds=$old_archive_cmds + else + # the command line is too long to link in one step, link in parts + func_verbose "using piecewise archive linking..." + save_RANLIB=$RANLIB + RANLIB=: + objlist= + concat_cmds= + save_oldobjs=$oldobjs + oldobjs= + # Is there a better way of finding the last object in the list? + for obj in $save_oldobjs + do + last_oldobj=$obj + done + eval test_cmds=\"$old_archive_cmds\" + func_len " $test_cmds" + len0=$func_len_result + len=$len0 + for obj in $save_oldobjs + do + func_len " $obj" + func_arith $len + $func_len_result + len=$func_arith_result + func_append objlist " $obj" + if test "$len" -lt "$max_cmd_len"; then + : + else + # the above command should be used before it gets too long + oldobjs=$objlist + if test "$obj" = "$last_oldobj"; then + RANLIB=$save_RANLIB + fi + test -z "$concat_cmds" || concat_cmds=$concat_cmds~ + eval concat_cmds=\"\$concat_cmds$old_archive_cmds\" + objlist= + len=$len0 + fi + done + RANLIB=$save_RANLIB + oldobjs=$objlist + if test -z "$oldobjs"; then + eval cmds=\"\$concat_cmds\" + else + eval cmds=\"\$concat_cmds~\$old_archive_cmds\" + fi + fi + fi + func_execute_cmds "$cmds" 'exit $?' + done + + test -n "$generated" && \ + func_show_eval "${RM}r$generated" + + # Now create the libtool archive. + case $output in + *.la) + old_library= + test yes = "$build_old_libs" && old_library=$libname.$libext + func_verbose "creating $output" + + # Preserve any variables that may affect compiler behavior + for var in $variables_saved_for_relink; do + if eval test -z \"\${$var+set}\"; then + relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command" + elif eval var_value=\$$var; test -z "$var_value"; then + relink_command="$var=; export $var; $relink_command" + else + func_quote_for_eval "$var_value" + relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command" + fi + done + # Quote the link command for shipping. + relink_command="(cd `pwd`; $SHELL \"$progpath\" $preserve_args --mode=relink $libtool_args @inst_prefix_dir@)" + relink_command=`$ECHO "$relink_command" | $SED "$sed_quote_subst"` + if test yes = "$hardcode_automatic"; then + relink_command= + fi + + # Only create the output if not a dry run. + $opt_dry_run || { + for installed in no yes; do + if test yes = "$installed"; then + if test -z "$install_libdir"; then + break + fi + output=$output_objdir/${outputname}i + # Replace all uninstalled libtool libraries with the installed ones + newdependency_libs= + for deplib in $dependency_libs; do + case $deplib in + *.la) + func_basename "$deplib" + name=$func_basename_result + func_resolve_sysroot "$deplib" + eval libdir=`$SED -n -e 's/^libdir=\(.*\)$/\1/p' $func_resolve_sysroot_result` + test -z "$libdir" && \ + func_fatal_error "'$deplib' is not a valid libtool archive" + func_append newdependency_libs " ${lt_sysroot:+=}$libdir/$name" + ;; + -L*) + func_stripname -L '' "$deplib" + func_replace_sysroot "$func_stripname_result" + func_append newdependency_libs " -L$func_replace_sysroot_result" + ;; + -R*) + func_stripname -R '' "$deplib" + func_replace_sysroot "$func_stripname_result" + func_append newdependency_libs " -R$func_replace_sysroot_result" + ;; + *) func_append newdependency_libs " $deplib" ;; + esac + done + dependency_libs=$newdependency_libs + newdlfiles= + + for lib in $dlfiles; do + case $lib in + *.la) + func_basename "$lib" + name=$func_basename_result + eval libdir=`$SED -n -e 's/^libdir=\(.*\)$/\1/p' $lib` + test -z "$libdir" && \ + func_fatal_error "'$lib' is not a valid libtool archive" + func_append newdlfiles " ${lt_sysroot:+=}$libdir/$name" + ;; + *) func_append newdlfiles " $lib" ;; + esac + done + dlfiles=$newdlfiles + newdlprefiles= + for lib in $dlprefiles; do + case $lib in + *.la) + # Only pass preopened files to the pseudo-archive (for + # eventual linking with the app. that links it) if we + # didn't already link the preopened objects directly into + # the library: + func_basename "$lib" + name=$func_basename_result + eval libdir=`$SED -n -e 's/^libdir=\(.*\)$/\1/p' $lib` + test -z "$libdir" && \ + func_fatal_error "'$lib' is not a valid libtool archive" + func_append newdlprefiles " ${lt_sysroot:+=}$libdir/$name" + ;; + esac + done + dlprefiles=$newdlprefiles + else + newdlfiles= + for lib in $dlfiles; do + case $lib in + [\\/]* | [A-Za-z]:[\\/]*) abs=$lib ;; + *) abs=`pwd`"/$lib" ;; + esac + func_append newdlfiles " $abs" + done + dlfiles=$newdlfiles + newdlprefiles= + for lib in $dlprefiles; do + case $lib in + [\\/]* | [A-Za-z]:[\\/]*) abs=$lib ;; + *) abs=`pwd`"/$lib" ;; + esac + func_append newdlprefiles " $abs" + done + dlprefiles=$newdlprefiles + fi + $RM $output + # place dlname in correct position for cygwin + # In fact, it would be nice if we could use this code for all target + # systems that can't hard-code library paths into their executables + # and that have no shared library path variable independent of PATH, + # but it turns out we can't easily determine that from inspecting + # libtool variables, so we have to hard-code the OSs to which it + # applies here; at the moment, that means platforms that use the PE + # object format with DLL files. See the long comment at the top of + # tests/bindir.at for full details. + tdlname=$dlname + case $host,$output,$installed,$module,$dlname in + *cygwin*,*lai,yes,no,*.dll | *mingw*,*lai,yes,no,*.dll | *cegcc*,*lai,yes,no,*.dll) + # If a -bindir argument was supplied, place the dll there. + if test -n "$bindir"; then + func_relative_path "$install_libdir" "$bindir" + tdlname=$func_relative_path_result/$dlname + else + # Otherwise fall back on heuristic. + tdlname=../bin/$dlname + fi + ;; + esac + $ECHO > $output "\ +# $outputname - a libtool library file +# Generated by $PROGRAM (GNU $PACKAGE) $VERSION +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# The name that we can dlopen(3). +dlname='$tdlname' + +# Names of this library. +library_names='$library_names' + +# The name of the static archive. +old_library='$old_library' + +# Linker flags that cannot go in dependency_libs. +inherited_linker_flags='$new_inherited_linker_flags' + +# Libraries that this one depends upon. +dependency_libs='$dependency_libs' + +# Names of additional weak libraries provided by this library +weak_library_names='$weak_libs' + +# Version information for $libname. +current=$current +age=$age +revision=$revision + +# Is this an already installed library? +installed=$installed + +# Should we warn about portability when linking against -modules? +shouldnotlink=$module + +# Files to dlopen/dlpreopen +dlopen='$dlfiles' +dlpreopen='$dlprefiles' + +# Directory that this library needs to be installed in: +libdir='$install_libdir'" + if test no,yes = "$installed,$need_relink"; then + $ECHO >> $output "\ +relink_command=\"$relink_command\"" + fi + done + } + + # Do a symbolic link so that the libtool archive can be found in + # LD_LIBRARY_PATH before the program is installed. + func_show_eval '( cd "$output_objdir" && $RM "$outputname" && $LN_S "../$outputname" "$outputname" )' 'exit $?' + ;; + esac + exit $EXIT_SUCCESS +} + +if test link = "$opt_mode" || test relink = "$opt_mode"; then + func_mode_link ${1+"$@"} +fi + + +# func_mode_uninstall arg... +func_mode_uninstall () +{ + $debug_cmd + + RM=$nonopt + files= + rmforce=false + exit_status=0 + + # This variable tells wrapper scripts just to set variables rather + # than running their programs. + libtool_install_magic=$magic + + for arg + do + case $arg in + -f) func_append RM " $arg"; rmforce=: ;; + -*) func_append RM " $arg" ;; + *) func_append files " $arg" ;; + esac + done + + test -z "$RM" && \ + func_fatal_help "you must specify an RM program" + + rmdirs= + + for file in $files; do + func_dirname "$file" "" "." + dir=$func_dirname_result + if test . = "$dir"; then + odir=$objdir + else + odir=$dir/$objdir + fi + func_basename "$file" + name=$func_basename_result + test uninstall = "$opt_mode" && odir=$dir + + # Remember odir for removal later, being careful to avoid duplicates + if test clean = "$opt_mode"; then + case " $rmdirs " in + *" $odir "*) ;; + *) func_append rmdirs " $odir" ;; + esac + fi + + # Don't error if the file doesn't exist and rm -f was used. + if { test -L "$file"; } >/dev/null 2>&1 || + { test -h "$file"; } >/dev/null 2>&1 || + test -f "$file"; then + : + elif test -d "$file"; then + exit_status=1 + continue + elif $rmforce; then + continue + fi + + rmfiles=$file + + case $name in + *.la) + # Possibly a libtool archive, so verify it. + if func_lalib_p "$file"; then + func_source $dir/$name + + # Delete the libtool libraries and symlinks. + for n in $library_names; do + func_append rmfiles " $odir/$n" + done + test -n "$old_library" && func_append rmfiles " $odir/$old_library" + + case $opt_mode in + clean) + case " $library_names " in + *" $dlname "*) ;; + *) test -n "$dlname" && func_append rmfiles " $odir/$dlname" ;; + esac + test -n "$libdir" && func_append rmfiles " $odir/$name $odir/${name}i" + ;; + uninstall) + if test -n "$library_names"; then + # Do each command in the postuninstall commands. + func_execute_cmds "$postuninstall_cmds" '$rmforce || exit_status=1' + fi + + if test -n "$old_library"; then + # Do each command in the old_postuninstall commands. + func_execute_cmds "$old_postuninstall_cmds" '$rmforce || exit_status=1' + fi + # FIXME: should reinstall the best remaining shared library. + ;; + esac + fi + ;; + + *.lo) + # Possibly a libtool object, so verify it. + if func_lalib_p "$file"; then + + # Read the .lo file + func_source $dir/$name + + # Add PIC object to the list of files to remove. + if test -n "$pic_object" && test none != "$pic_object"; then + func_append rmfiles " $dir/$pic_object" + fi + + # Add non-PIC object to the list of files to remove. + if test -n "$non_pic_object" && test none != "$non_pic_object"; then + func_append rmfiles " $dir/$non_pic_object" + fi + fi + ;; + + *) + if test clean = "$opt_mode"; then + noexename=$name + case $file in + *.exe) + func_stripname '' '.exe' "$file" + file=$func_stripname_result + func_stripname '' '.exe' "$name" + noexename=$func_stripname_result + # $file with .exe has already been added to rmfiles, + # add $file without .exe + func_append rmfiles " $file" + ;; + esac + # Do a test to see if this is a libtool program. + if func_ltwrapper_p "$file"; then + if func_ltwrapper_executable_p "$file"; then + func_ltwrapper_scriptname "$file" + relink_command= + func_source $func_ltwrapper_scriptname_result + func_append rmfiles " $func_ltwrapper_scriptname_result" + else + relink_command= + func_source $dir/$noexename + fi + + # note $name still contains .exe if it was in $file originally + # as does the version of $file that was added into $rmfiles + func_append rmfiles " $odir/$name $odir/${name}S.$objext" + if test yes = "$fast_install" && test -n "$relink_command"; then + func_append rmfiles " $odir/lt-$name" + fi + if test "X$noexename" != "X$name"; then + func_append rmfiles " $odir/lt-$noexename.c" + fi + fi + fi + ;; + esac + func_show_eval "$RM $rmfiles" 'exit_status=1' + done + + # Try to remove the $objdir's in the directories where we deleted files + for dir in $rmdirs; do + if test -d "$dir"; then + func_show_eval "rmdir $dir >/dev/null 2>&1" + fi + done + + exit $exit_status +} + +if test uninstall = "$opt_mode" || test clean = "$opt_mode"; then + func_mode_uninstall ${1+"$@"} +fi + +test -z "$opt_mode" && { + help=$generic_help + func_fatal_help "you must specify a MODE" +} + +test -z "$exec_cmd" && \ + func_fatal_help "invalid operation mode '$opt_mode'" + +if test -n "$exec_cmd"; then + eval exec "$exec_cmd" + exit $EXIT_FAILURE +fi + +exit $exit_status + + +# The TAGs below are defined such that we never get into a situation +# where we disable both kinds of libraries. Given conflicting +# choices, we go for a static library, that is the most portable, +# since we can't tell whether shared libraries were disabled because +# the user asked for that or because the platform doesn't support +# them. This is particularly important on AIX, because we don't +# support having both static and shared libraries enabled at the same +# time on that platform, so we default to a shared-only configuration. +# If a disable-shared tag is given, we'll fallback to a static-only +# configuration. But we'll never go from static-only to shared-only. + +# ### BEGIN LIBTOOL TAG CONFIG: disable-shared +build_libtool_libs=no +build_old_libs=yes +# ### END LIBTOOL TAG CONFIG: disable-shared + +# ### BEGIN LIBTOOL TAG CONFIG: disable-static +build_old_libs=`case $build_libtool_libs in yes) echo no;; *) echo yes;; esac` +# ### END LIBTOOL TAG CONFIG: disable-static + +# Local Variables: +# mode:shell-script +# sh-indentation:2 +# End: diff --git a/libs/shapelib/m4/libtool.m4 b/libs/shapelib/m4/libtool.m4 new file mode 100644 index 0000000..10ab284 --- /dev/null +++ b/libs/shapelib/m4/libtool.m4 @@ -0,0 +1,8388 @@ +# libtool.m4 - Configure libtool for the host system. -*-Autoconf-*- +# +# Copyright (C) 1996-2001, 2003-2015 Free Software Foundation, Inc. +# Written by Gordon Matzigkeit, 1996 +# +# This file is free software; the Free Software Foundation gives +# unlimited permission to copy and/or distribute it, with or without +# modifications, as long as this notice is preserved. + +m4_define([_LT_COPYING], [dnl +# Copyright (C) 2014 Free Software Foundation, Inc. +# This is free software; see the source for copying conditions. There is NO +# warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + +# GNU Libtool is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of of the License, or +# (at your option) any later version. +# +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program or library that is built +# using GNU Libtool, you may include this file under the same +# distribution terms that you use for the rest of that program. +# +# GNU Libtool is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . +]) + +# serial 58 LT_INIT + + +# LT_PREREQ(VERSION) +# ------------------ +# Complain and exit if this libtool version is less that VERSION. +m4_defun([LT_PREREQ], +[m4_if(m4_version_compare(m4_defn([LT_PACKAGE_VERSION]), [$1]), -1, + [m4_default([$3], + [m4_fatal([Libtool version $1 or higher is required], + 63)])], + [$2])]) + + +# _LT_CHECK_BUILDDIR +# ------------------ +# Complain if the absolute build directory name contains unusual characters +m4_defun([_LT_CHECK_BUILDDIR], +[case `pwd` in + *\ * | *\ *) + AC_MSG_WARN([Libtool does not cope well with whitespace in `pwd`]) ;; +esac +]) + + +# LT_INIT([OPTIONS]) +# ------------------ +AC_DEFUN([LT_INIT], +[AC_PREREQ([2.62])dnl We use AC_PATH_PROGS_FEATURE_CHECK +AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT])dnl +AC_BEFORE([$0], [LT_LANG])dnl +AC_BEFORE([$0], [LT_OUTPUT])dnl +AC_BEFORE([$0], [LTDL_INIT])dnl +m4_require([_LT_CHECK_BUILDDIR])dnl + +dnl Autoconf doesn't catch unexpanded LT_ macros by default: +m4_pattern_forbid([^_?LT_[A-Z_]+$])dnl +m4_pattern_allow([^(_LT_EOF|LT_DLGLOBAL|LT_DLLAZY_OR_NOW|LT_MULTI_MODULE)$])dnl +dnl aclocal doesn't pull ltoptions.m4, ltsugar.m4, or ltversion.m4 +dnl unless we require an AC_DEFUNed macro: +AC_REQUIRE([LTOPTIONS_VERSION])dnl +AC_REQUIRE([LTSUGAR_VERSION])dnl +AC_REQUIRE([LTVERSION_VERSION])dnl +AC_REQUIRE([LTOBSOLETE_VERSION])dnl +m4_require([_LT_PROG_LTMAIN])dnl + +_LT_SHELL_INIT([SHELL=${CONFIG_SHELL-/bin/sh}]) + +dnl Parse OPTIONS +_LT_SET_OPTIONS([$0], [$1]) + +# This can be used to rebuild libtool when needed +LIBTOOL_DEPS=$ltmain + +# Always use our own libtool. +LIBTOOL='$(SHELL) $(top_builddir)/libtool' +AC_SUBST(LIBTOOL)dnl + +_LT_SETUP + +# Only expand once: +m4_define([LT_INIT]) +])# LT_INIT + +# Old names: +AU_ALIAS([AC_PROG_LIBTOOL], [LT_INIT]) +AU_ALIAS([AM_PROG_LIBTOOL], [LT_INIT]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_PROG_LIBTOOL], []) +dnl AC_DEFUN([AM_PROG_LIBTOOL], []) + + +# _LT_PREPARE_CC_BASENAME +# ----------------------- +m4_defun([_LT_PREPARE_CC_BASENAME], [ +# Calculate cc_basename. Skip known compiler wrappers and cross-prefix. +func_cc_basename () +{ + for cc_temp in @S|@*""; do + case $cc_temp in + compile | *[[\\/]]compile | ccache | *[[\\/]]ccache ) ;; + distcc | *[[\\/]]distcc | purify | *[[\\/]]purify ) ;; + \-*) ;; + *) break;; + esac + done + func_cc_basename_result=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"` +} +])# _LT_PREPARE_CC_BASENAME + + +# _LT_CC_BASENAME(CC) +# ------------------- +# It would be clearer to call AC_REQUIREs from _LT_PREPARE_CC_BASENAME, +# but that macro is also expanded into generated libtool script, which +# arranges for $SED and $ECHO to be set by different means. +m4_defun([_LT_CC_BASENAME], +[m4_require([_LT_PREPARE_CC_BASENAME])dnl +AC_REQUIRE([_LT_DECL_SED])dnl +AC_REQUIRE([_LT_PROG_ECHO_BACKSLASH])dnl +func_cc_basename $1 +cc_basename=$func_cc_basename_result +]) + + +# _LT_FILEUTILS_DEFAULTS +# ---------------------- +# It is okay to use these file commands and assume they have been set +# sensibly after 'm4_require([_LT_FILEUTILS_DEFAULTS])'. +m4_defun([_LT_FILEUTILS_DEFAULTS], +[: ${CP="cp -f"} +: ${MV="mv -f"} +: ${RM="rm -f"} +])# _LT_FILEUTILS_DEFAULTS + + +# _LT_SETUP +# --------- +m4_defun([_LT_SETUP], +[AC_REQUIRE([AC_CANONICAL_HOST])dnl +AC_REQUIRE([AC_CANONICAL_BUILD])dnl +AC_REQUIRE([_LT_PREPARE_SED_QUOTE_VARS])dnl +AC_REQUIRE([_LT_PROG_ECHO_BACKSLASH])dnl + +_LT_DECL([], [PATH_SEPARATOR], [1], [The PATH separator for the build system])dnl +dnl +_LT_DECL([], [host_alias], [0], [The host system])dnl +_LT_DECL([], [host], [0])dnl +_LT_DECL([], [host_os], [0])dnl +dnl +_LT_DECL([], [build_alias], [0], [The build system])dnl +_LT_DECL([], [build], [0])dnl +_LT_DECL([], [build_os], [0])dnl +dnl +AC_REQUIRE([AC_PROG_CC])dnl +AC_REQUIRE([LT_PATH_LD])dnl +AC_REQUIRE([LT_PATH_NM])dnl +dnl +AC_REQUIRE([AC_PROG_LN_S])dnl +test -z "$LN_S" && LN_S="ln -s" +_LT_DECL([], [LN_S], [1], [Whether we need soft or hard links])dnl +dnl +AC_REQUIRE([LT_CMD_MAX_LEN])dnl +_LT_DECL([objext], [ac_objext], [0], [Object file suffix (normally "o")])dnl +_LT_DECL([], [exeext], [0], [Executable file suffix (normally "")])dnl +dnl +m4_require([_LT_FILEUTILS_DEFAULTS])dnl +m4_require([_LT_CHECK_SHELL_FEATURES])dnl +m4_require([_LT_PATH_CONVERSION_FUNCTIONS])dnl +m4_require([_LT_CMD_RELOAD])dnl +m4_require([_LT_CHECK_MAGIC_METHOD])dnl +m4_require([_LT_CHECK_SHAREDLIB_FROM_LINKLIB])dnl +m4_require([_LT_CMD_OLD_ARCHIVE])dnl +m4_require([_LT_CMD_GLOBAL_SYMBOLS])dnl +m4_require([_LT_WITH_SYSROOT])dnl +m4_require([_LT_CMD_TRUNCATE])dnl + +_LT_CONFIG_LIBTOOL_INIT([ +# See if we are running on zsh, and set the options that allow our +# commands through without removal of \ escapes INIT. +if test -n "\${ZSH_VERSION+set}"; then + setopt NO_GLOB_SUBST +fi +]) +if test -n "${ZSH_VERSION+set}"; then + setopt NO_GLOB_SUBST +fi + +_LT_CHECK_OBJDIR + +m4_require([_LT_TAG_COMPILER])dnl + +case $host_os in +aix3*) + # AIX sometimes has problems with the GCC collect2 program. For some + # reason, if we set the COLLECT_NAMES environment variable, the problems + # vanish in a puff of smoke. + if test set != "${COLLECT_NAMES+set}"; then + COLLECT_NAMES= + export COLLECT_NAMES + fi + ;; +esac + +# Global variables: +ofile=libtool +can_build_shared=yes + +# All known linkers require a '.a' archive for static linking (except MSVC, +# which needs '.lib'). +libext=a + +with_gnu_ld=$lt_cv_prog_gnu_ld + +old_CC=$CC +old_CFLAGS=$CFLAGS + +# Set sane defaults for various variables +test -z "$CC" && CC=cc +test -z "$LTCC" && LTCC=$CC +test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS +test -z "$LD" && LD=ld +test -z "$ac_objext" && ac_objext=o + +_LT_CC_BASENAME([$compiler]) + +# Only perform the check for file, if the check method requires it +test -z "$MAGIC_CMD" && MAGIC_CMD=file +case $deplibs_check_method in +file_magic*) + if test "$file_magic_cmd" = '$MAGIC_CMD'; then + _LT_PATH_MAGIC + fi + ;; +esac + +# Use C for the default configuration in the libtool script +LT_SUPPORTED_TAG([CC]) +_LT_LANG_C_CONFIG +_LT_LANG_DEFAULT_CONFIG +_LT_CONFIG_COMMANDS +])# _LT_SETUP + + +# _LT_PREPARE_SED_QUOTE_VARS +# -------------------------- +# Define a few sed substitution that help us do robust quoting. +m4_defun([_LT_PREPARE_SED_QUOTE_VARS], +[# Backslashify metacharacters that are still active within +# double-quoted strings. +sed_quote_subst='s/\([["`$\\]]\)/\\\1/g' + +# Same as above, but do not quote variable references. +double_quote_subst='s/\([["`\\]]\)/\\\1/g' + +# Sed substitution to delay expansion of an escaped shell variable in a +# double_quote_subst'ed string. +delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g' + +# Sed substitution to delay expansion of an escaped single quote. +delay_single_quote_subst='s/'\''/'\'\\\\\\\'\''/g' + +# Sed substitution to avoid accidental globbing in evaled expressions +no_glob_subst='s/\*/\\\*/g' +]) + +# _LT_PROG_LTMAIN +# --------------- +# Note that this code is called both from 'configure', and 'config.status' +# now that we use AC_CONFIG_COMMANDS to generate libtool. Notably, +# 'config.status' has no value for ac_aux_dir unless we are using Automake, +# so we pass a copy along to make sure it has a sensible value anyway. +m4_defun([_LT_PROG_LTMAIN], +[m4_ifdef([AC_REQUIRE_AUX_FILE], [AC_REQUIRE_AUX_FILE([ltmain.sh])])dnl +_LT_CONFIG_LIBTOOL_INIT([ac_aux_dir='$ac_aux_dir']) +ltmain=$ac_aux_dir/ltmain.sh +])# _LT_PROG_LTMAIN + + +## ------------------------------------- ## +## Accumulate code for creating libtool. ## +## ------------------------------------- ## + +# So that we can recreate a full libtool script including additional +# tags, we accumulate the chunks of code to send to AC_CONFIG_COMMANDS +# in macros and then make a single call at the end using the 'libtool' +# label. + + +# _LT_CONFIG_LIBTOOL_INIT([INIT-COMMANDS]) +# ---------------------------------------- +# Register INIT-COMMANDS to be passed to AC_CONFIG_COMMANDS later. +m4_define([_LT_CONFIG_LIBTOOL_INIT], +[m4_ifval([$1], + [m4_append([_LT_OUTPUT_LIBTOOL_INIT], + [$1 +])])]) + +# Initialize. +m4_define([_LT_OUTPUT_LIBTOOL_INIT]) + + +# _LT_CONFIG_LIBTOOL([COMMANDS]) +# ------------------------------ +# Register COMMANDS to be passed to AC_CONFIG_COMMANDS later. +m4_define([_LT_CONFIG_LIBTOOL], +[m4_ifval([$1], + [m4_append([_LT_OUTPUT_LIBTOOL_COMMANDS], + [$1 +])])]) + +# Initialize. +m4_define([_LT_OUTPUT_LIBTOOL_COMMANDS]) + + +# _LT_CONFIG_SAVE_COMMANDS([COMMANDS], [INIT_COMMANDS]) +# ----------------------------------------------------- +m4_defun([_LT_CONFIG_SAVE_COMMANDS], +[_LT_CONFIG_LIBTOOL([$1]) +_LT_CONFIG_LIBTOOL_INIT([$2]) +]) + + +# _LT_FORMAT_COMMENT([COMMENT]) +# ----------------------------- +# Add leading comment marks to the start of each line, and a trailing +# full-stop to the whole comment if one is not present already. +m4_define([_LT_FORMAT_COMMENT], +[m4_ifval([$1], [ +m4_bpatsubst([m4_bpatsubst([$1], [^ *], [# ])], + [['`$\]], [\\\&])]m4_bmatch([$1], [[!?.]$], [], [.]) +)]) + + + +## ------------------------ ## +## FIXME: Eliminate VARNAME ## +## ------------------------ ## + + +# _LT_DECL([CONFIGNAME], VARNAME, VALUE, [DESCRIPTION], [IS-TAGGED?]) +# ------------------------------------------------------------------- +# CONFIGNAME is the name given to the value in the libtool script. +# VARNAME is the (base) name used in the configure script. +# VALUE may be 0, 1 or 2 for a computed quote escaped value based on +# VARNAME. Any other value will be used directly. +m4_define([_LT_DECL], +[lt_if_append_uniq([lt_decl_varnames], [$2], [, ], + [lt_dict_add_subkey([lt_decl_dict], [$2], [libtool_name], + [m4_ifval([$1], [$1], [$2])]) + lt_dict_add_subkey([lt_decl_dict], [$2], [value], [$3]) + m4_ifval([$4], + [lt_dict_add_subkey([lt_decl_dict], [$2], [description], [$4])]) + lt_dict_add_subkey([lt_decl_dict], [$2], + [tagged?], [m4_ifval([$5], [yes], [no])])]) +]) + + +# _LT_TAGDECL([CONFIGNAME], VARNAME, VALUE, [DESCRIPTION]) +# -------------------------------------------------------- +m4_define([_LT_TAGDECL], [_LT_DECL([$1], [$2], [$3], [$4], [yes])]) + + +# lt_decl_tag_varnames([SEPARATOR], [VARNAME1...]) +# ------------------------------------------------ +m4_define([lt_decl_tag_varnames], +[_lt_decl_filter([tagged?], [yes], $@)]) + + +# _lt_decl_filter(SUBKEY, VALUE, [SEPARATOR], [VARNAME1..]) +# --------------------------------------------------------- +m4_define([_lt_decl_filter], +[m4_case([$#], + [0], [m4_fatal([$0: too few arguments: $#])], + [1], [m4_fatal([$0: too few arguments: $#: $1])], + [2], [lt_dict_filter([lt_decl_dict], [$1], [$2], [], lt_decl_varnames)], + [3], [lt_dict_filter([lt_decl_dict], [$1], [$2], [$3], lt_decl_varnames)], + [lt_dict_filter([lt_decl_dict], $@)])[]dnl +]) + + +# lt_decl_quote_varnames([SEPARATOR], [VARNAME1...]) +# -------------------------------------------------- +m4_define([lt_decl_quote_varnames], +[_lt_decl_filter([value], [1], $@)]) + + +# lt_decl_dquote_varnames([SEPARATOR], [VARNAME1...]) +# --------------------------------------------------- +m4_define([lt_decl_dquote_varnames], +[_lt_decl_filter([value], [2], $@)]) + + +# lt_decl_varnames_tagged([SEPARATOR], [VARNAME1...]) +# --------------------------------------------------- +m4_define([lt_decl_varnames_tagged], +[m4_assert([$# <= 2])dnl +_$0(m4_quote(m4_default([$1], [[, ]])), + m4_ifval([$2], [[$2]], [m4_dquote(lt_decl_tag_varnames)]), + m4_split(m4_normalize(m4_quote(_LT_TAGS)), [ ]))]) +m4_define([_lt_decl_varnames_tagged], +[m4_ifval([$3], [lt_combine([$1], [$2], [_], $3)])]) + + +# lt_decl_all_varnames([SEPARATOR], [VARNAME1...]) +# ------------------------------------------------ +m4_define([lt_decl_all_varnames], +[_$0(m4_quote(m4_default([$1], [[, ]])), + m4_if([$2], [], + m4_quote(lt_decl_varnames), + m4_quote(m4_shift($@))))[]dnl +]) +m4_define([_lt_decl_all_varnames], +[lt_join($@, lt_decl_varnames_tagged([$1], + lt_decl_tag_varnames([[, ]], m4_shift($@))))dnl +]) + + +# _LT_CONFIG_STATUS_DECLARE([VARNAME]) +# ------------------------------------ +# Quote a variable value, and forward it to 'config.status' so that its +# declaration there will have the same value as in 'configure'. VARNAME +# must have a single quote delimited value for this to work. +m4_define([_LT_CONFIG_STATUS_DECLARE], +[$1='`$ECHO "$][$1" | $SED "$delay_single_quote_subst"`']) + + +# _LT_CONFIG_STATUS_DECLARATIONS +# ------------------------------ +# We delimit libtool config variables with single quotes, so when +# we write them to config.status, we have to be sure to quote all +# embedded single quotes properly. In configure, this macro expands +# each variable declared with _LT_DECL (and _LT_TAGDECL) into: +# +# ='`$ECHO "$" | $SED "$delay_single_quote_subst"`' +m4_defun([_LT_CONFIG_STATUS_DECLARATIONS], +[m4_foreach([_lt_var], m4_quote(lt_decl_all_varnames), + [m4_n([_LT_CONFIG_STATUS_DECLARE(_lt_var)])])]) + + +# _LT_LIBTOOL_TAGS +# ---------------- +# Output comment and list of tags supported by the script +m4_defun([_LT_LIBTOOL_TAGS], +[_LT_FORMAT_COMMENT([The names of the tagged configurations supported by this script])dnl +available_tags='_LT_TAGS'dnl +]) + + +# _LT_LIBTOOL_DECLARE(VARNAME, [TAG]) +# ----------------------------------- +# Extract the dictionary values for VARNAME (optionally with TAG) and +# expand to a commented shell variable setting: +# +# # Some comment about what VAR is for. +# visible_name=$lt_internal_name +m4_define([_LT_LIBTOOL_DECLARE], +[_LT_FORMAT_COMMENT(m4_quote(lt_dict_fetch([lt_decl_dict], [$1], + [description])))[]dnl +m4_pushdef([_libtool_name], + m4_quote(lt_dict_fetch([lt_decl_dict], [$1], [libtool_name])))[]dnl +m4_case(m4_quote(lt_dict_fetch([lt_decl_dict], [$1], [value])), + [0], [_libtool_name=[$]$1], + [1], [_libtool_name=$lt_[]$1], + [2], [_libtool_name=$lt_[]$1], + [_libtool_name=lt_dict_fetch([lt_decl_dict], [$1], [value])])[]dnl +m4_ifval([$2], [_$2])[]m4_popdef([_libtool_name])[]dnl +]) + + +# _LT_LIBTOOL_CONFIG_VARS +# ----------------------- +# Produce commented declarations of non-tagged libtool config variables +# suitable for insertion in the LIBTOOL CONFIG section of the 'libtool' +# script. Tagged libtool config variables (even for the LIBTOOL CONFIG +# section) are produced by _LT_LIBTOOL_TAG_VARS. +m4_defun([_LT_LIBTOOL_CONFIG_VARS], +[m4_foreach([_lt_var], + m4_quote(_lt_decl_filter([tagged?], [no], [], lt_decl_varnames)), + [m4_n([_LT_LIBTOOL_DECLARE(_lt_var)])])]) + + +# _LT_LIBTOOL_TAG_VARS(TAG) +# ------------------------- +m4_define([_LT_LIBTOOL_TAG_VARS], +[m4_foreach([_lt_var], m4_quote(lt_decl_tag_varnames), + [m4_n([_LT_LIBTOOL_DECLARE(_lt_var, [$1])])])]) + + +# _LT_TAGVAR(VARNAME, [TAGNAME]) +# ------------------------------ +m4_define([_LT_TAGVAR], [m4_ifval([$2], [$1_$2], [$1])]) + + +# _LT_CONFIG_COMMANDS +# ------------------- +# Send accumulated output to $CONFIG_STATUS. Thanks to the lists of +# variables for single and double quote escaping we saved from calls +# to _LT_DECL, we can put quote escaped variables declarations +# into 'config.status', and then the shell code to quote escape them in +# for loops in 'config.status'. Finally, any additional code accumulated +# from calls to _LT_CONFIG_LIBTOOL_INIT is expanded. +m4_defun([_LT_CONFIG_COMMANDS], +[AC_PROVIDE_IFELSE([LT_OUTPUT], + dnl If the libtool generation code has been placed in $CONFIG_LT, + dnl instead of duplicating it all over again into config.status, + dnl then we will have config.status run $CONFIG_LT later, so it + dnl needs to know what name is stored there: + [AC_CONFIG_COMMANDS([libtool], + [$SHELL $CONFIG_LT || AS_EXIT(1)], [CONFIG_LT='$CONFIG_LT'])], + dnl If the libtool generation code is destined for config.status, + dnl expand the accumulated commands and init code now: + [AC_CONFIG_COMMANDS([libtool], + [_LT_OUTPUT_LIBTOOL_COMMANDS], [_LT_OUTPUT_LIBTOOL_COMMANDS_INIT])]) +])#_LT_CONFIG_COMMANDS + + +# Initialize. +m4_define([_LT_OUTPUT_LIBTOOL_COMMANDS_INIT], +[ + +# The HP-UX ksh and POSIX shell print the target directory to stdout +# if CDPATH is set. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + +sed_quote_subst='$sed_quote_subst' +double_quote_subst='$double_quote_subst' +delay_variable_subst='$delay_variable_subst' +_LT_CONFIG_STATUS_DECLARATIONS +LTCC='$LTCC' +LTCFLAGS='$LTCFLAGS' +compiler='$compiler_DEFAULT' + +# A function that is used when there is no print builtin or printf. +func_fallback_echo () +{ + eval 'cat <<_LTECHO_EOF +\$[]1 +_LTECHO_EOF' +} + +# Quote evaled strings. +for var in lt_decl_all_varnames([[ \ +]], lt_decl_quote_varnames); do + case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in + *[[\\\\\\\`\\"\\\$]]*) + eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED \\"\\\$sed_quote_subst\\"\\\`\\\\\\"" ## exclude from sc_prohibit_nested_quotes + ;; + *) + eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" + ;; + esac +done + +# Double-quote double-evaled strings. +for var in lt_decl_all_varnames([[ \ +]], lt_decl_dquote_varnames); do + case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in + *[[\\\\\\\`\\"\\\$]]*) + eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\"" ## exclude from sc_prohibit_nested_quotes + ;; + *) + eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" + ;; + esac +done + +_LT_OUTPUT_LIBTOOL_INIT +]) + +# _LT_GENERATED_FILE_INIT(FILE, [COMMENT]) +# ------------------------------------ +# Generate a child script FILE with all initialization necessary to +# reuse the environment learned by the parent script, and make the +# file executable. If COMMENT is supplied, it is inserted after the +# '#!' sequence but before initialization text begins. After this +# macro, additional text can be appended to FILE to form the body of +# the child script. The macro ends with non-zero status if the +# file could not be fully written (such as if the disk is full). +m4_ifdef([AS_INIT_GENERATED], +[m4_defun([_LT_GENERATED_FILE_INIT],[AS_INIT_GENERATED($@)])], +[m4_defun([_LT_GENERATED_FILE_INIT], +[m4_require([AS_PREPARE])]dnl +[m4_pushdef([AS_MESSAGE_LOG_FD])]dnl +[lt_write_fail=0 +cat >$1 <<_ASEOF || lt_write_fail=1 +#! $SHELL +# Generated by $as_me. +$2 +SHELL=\${CONFIG_SHELL-$SHELL} +export SHELL +_ASEOF +cat >>$1 <<\_ASEOF || lt_write_fail=1 +AS_SHELL_SANITIZE +_AS_PREPARE +exec AS_MESSAGE_FD>&1 +_ASEOF +test 0 = "$lt_write_fail" && chmod +x $1[]dnl +m4_popdef([AS_MESSAGE_LOG_FD])])])# _LT_GENERATED_FILE_INIT + +# LT_OUTPUT +# --------- +# This macro allows early generation of the libtool script (before +# AC_OUTPUT is called), incase it is used in configure for compilation +# tests. +AC_DEFUN([LT_OUTPUT], +[: ${CONFIG_LT=./config.lt} +AC_MSG_NOTICE([creating $CONFIG_LT]) +_LT_GENERATED_FILE_INIT(["$CONFIG_LT"], +[# Run this file to recreate a libtool stub with the current configuration.]) + +cat >>"$CONFIG_LT" <<\_LTEOF +lt_cl_silent=false +exec AS_MESSAGE_LOG_FD>>config.log +{ + echo + AS_BOX([Running $as_me.]) +} >&AS_MESSAGE_LOG_FD + +lt_cl_help="\ +'$as_me' creates a local libtool stub from the current configuration, +for use in further configure time tests before the real libtool is +generated. + +Usage: $[0] [[OPTIONS]] + + -h, --help print this help, then exit + -V, --version print version number, then exit + -q, --quiet do not print progress messages + -d, --debug don't remove temporary files + +Report bugs to ." + +lt_cl_version="\ +m4_ifset([AC_PACKAGE_NAME], [AC_PACKAGE_NAME ])config.lt[]dnl +m4_ifset([AC_PACKAGE_VERSION], [ AC_PACKAGE_VERSION]) +configured by $[0], generated by m4_PACKAGE_STRING. + +Copyright (C) 2011 Free Software Foundation, Inc. +This config.lt script is free software; the Free Software Foundation +gives unlimited permision to copy, distribute and modify it." + +while test 0 != $[#] +do + case $[1] in + --version | --v* | -V ) + echo "$lt_cl_version"; exit 0 ;; + --help | --h* | -h ) + echo "$lt_cl_help"; exit 0 ;; + --debug | --d* | -d ) + debug=: ;; + --quiet | --q* | --silent | --s* | -q ) + lt_cl_silent=: ;; + + -*) AC_MSG_ERROR([unrecognized option: $[1] +Try '$[0] --help' for more information.]) ;; + + *) AC_MSG_ERROR([unrecognized argument: $[1] +Try '$[0] --help' for more information.]) ;; + esac + shift +done + +if $lt_cl_silent; then + exec AS_MESSAGE_FD>/dev/null +fi +_LTEOF + +cat >>"$CONFIG_LT" <<_LTEOF +_LT_OUTPUT_LIBTOOL_COMMANDS_INIT +_LTEOF + +cat >>"$CONFIG_LT" <<\_LTEOF +AC_MSG_NOTICE([creating $ofile]) +_LT_OUTPUT_LIBTOOL_COMMANDS +AS_EXIT(0) +_LTEOF +chmod +x "$CONFIG_LT" + +# configure is writing to config.log, but config.lt does its own redirection, +# appending to config.log, which fails on DOS, as config.log is still kept +# open by configure. Here we exec the FD to /dev/null, effectively closing +# config.log, so it can be properly (re)opened and appended to by config.lt. +lt_cl_success=: +test yes = "$silent" && + lt_config_lt_args="$lt_config_lt_args --quiet" +exec AS_MESSAGE_LOG_FD>/dev/null +$SHELL "$CONFIG_LT" $lt_config_lt_args || lt_cl_success=false +exec AS_MESSAGE_LOG_FD>>config.log +$lt_cl_success || AS_EXIT(1) +])# LT_OUTPUT + + +# _LT_CONFIG(TAG) +# --------------- +# If TAG is the built-in tag, create an initial libtool script with a +# default configuration from the untagged config vars. Otherwise add code +# to config.status for appending the configuration named by TAG from the +# matching tagged config vars. +m4_defun([_LT_CONFIG], +[m4_require([_LT_FILEUTILS_DEFAULTS])dnl +_LT_CONFIG_SAVE_COMMANDS([ + m4_define([_LT_TAG], m4_if([$1], [], [C], [$1]))dnl + m4_if(_LT_TAG, [C], [ + # See if we are running on zsh, and set the options that allow our + # commands through without removal of \ escapes. + if test -n "${ZSH_VERSION+set}"; then + setopt NO_GLOB_SUBST + fi + + cfgfile=${ofile}T + trap "$RM \"$cfgfile\"; exit 1" 1 2 15 + $RM "$cfgfile" + + cat <<_LT_EOF >> "$cfgfile" +#! $SHELL +# Generated automatically by $as_me ($PACKAGE) $VERSION +# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: +# NOTE: Changes made to this file will be lost: look at ltmain.sh. + +# Provide generalized library-building support services. +# Written by Gordon Matzigkeit, 1996 + +_LT_COPYING +_LT_LIBTOOL_TAGS + +# Configured defaults for sys_lib_dlsearch_path munging. +: \${LT_SYS_LIBRARY_PATH="$configure_time_lt_sys_library_path"} + +# ### BEGIN LIBTOOL CONFIG +_LT_LIBTOOL_CONFIG_VARS +_LT_LIBTOOL_TAG_VARS +# ### END LIBTOOL CONFIG + +_LT_EOF + + cat <<'_LT_EOF' >> "$cfgfile" + +# ### BEGIN FUNCTIONS SHARED WITH CONFIGURE + +_LT_PREPARE_MUNGE_PATH_LIST +_LT_PREPARE_CC_BASENAME + +# ### END FUNCTIONS SHARED WITH CONFIGURE + +_LT_EOF + + case $host_os in + aix3*) + cat <<\_LT_EOF >> "$cfgfile" +# AIX sometimes has problems with the GCC collect2 program. For some +# reason, if we set the COLLECT_NAMES environment variable, the problems +# vanish in a puff of smoke. +if test set != "${COLLECT_NAMES+set}"; then + COLLECT_NAMES= + export COLLECT_NAMES +fi +_LT_EOF + ;; + esac + + _LT_PROG_LTMAIN + + # We use sed instead of cat because bash on DJGPP gets confused if + # if finds mixed CR/LF and LF-only lines. Since sed operates in + # text mode, it properly converts lines to CR/LF. This bash problem + # is reportedly fixed, but why not run on old versions too? + sed '$q' "$ltmain" >> "$cfgfile" \ + || (rm -f "$cfgfile"; exit 1) + + mv -f "$cfgfile" "$ofile" || + (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile") + chmod +x "$ofile" +], +[cat <<_LT_EOF >> "$ofile" + +dnl Unfortunately we have to use $1 here, since _LT_TAG is not expanded +dnl in a comment (ie after a #). +# ### BEGIN LIBTOOL TAG CONFIG: $1 +_LT_LIBTOOL_TAG_VARS(_LT_TAG) +# ### END LIBTOOL TAG CONFIG: $1 +_LT_EOF +])dnl /m4_if +], +[m4_if([$1], [], [ + PACKAGE='$PACKAGE' + VERSION='$VERSION' + RM='$RM' + ofile='$ofile'], []) +])dnl /_LT_CONFIG_SAVE_COMMANDS +])# _LT_CONFIG + + +# LT_SUPPORTED_TAG(TAG) +# --------------------- +# Trace this macro to discover what tags are supported by the libtool +# --tag option, using: +# autoconf --trace 'LT_SUPPORTED_TAG:$1' +AC_DEFUN([LT_SUPPORTED_TAG], []) + + +# C support is built-in for now +m4_define([_LT_LANG_C_enabled], []) +m4_define([_LT_TAGS], []) + + +# LT_LANG(LANG) +# ------------- +# Enable libtool support for the given language if not already enabled. +AC_DEFUN([LT_LANG], +[AC_BEFORE([$0], [LT_OUTPUT])dnl +m4_case([$1], + [C], [_LT_LANG(C)], + [C++], [_LT_LANG(CXX)], + [Go], [_LT_LANG(GO)], + [Java], [_LT_LANG(GCJ)], + [Fortran 77], [_LT_LANG(F77)], + [Fortran], [_LT_LANG(FC)], + [Windows Resource], [_LT_LANG(RC)], + [m4_ifdef([_LT_LANG_]$1[_CONFIG], + [_LT_LANG($1)], + [m4_fatal([$0: unsupported language: "$1"])])])dnl +])# LT_LANG + + +# _LT_LANG(LANGNAME) +# ------------------ +m4_defun([_LT_LANG], +[m4_ifdef([_LT_LANG_]$1[_enabled], [], + [LT_SUPPORTED_TAG([$1])dnl + m4_append([_LT_TAGS], [$1 ])dnl + m4_define([_LT_LANG_]$1[_enabled], [])dnl + _LT_LANG_$1_CONFIG($1)])dnl +])# _LT_LANG + + +m4_ifndef([AC_PROG_GO], [ +############################################################ +# NOTE: This macro has been submitted for inclusion into # +# GNU Autoconf as AC_PROG_GO. When it is available in # +# a released version of Autoconf we should remove this # +# macro and use it instead. # +############################################################ +m4_defun([AC_PROG_GO], +[AC_LANG_PUSH(Go)dnl +AC_ARG_VAR([GOC], [Go compiler command])dnl +AC_ARG_VAR([GOFLAGS], [Go compiler flags])dnl +_AC_ARG_VAR_LDFLAGS()dnl +AC_CHECK_TOOL(GOC, gccgo) +if test -z "$GOC"; then + if test -n "$ac_tool_prefix"; then + AC_CHECK_PROG(GOC, [${ac_tool_prefix}gccgo], [${ac_tool_prefix}gccgo]) + fi +fi +if test -z "$GOC"; then + AC_CHECK_PROG(GOC, gccgo, gccgo, false) +fi +])#m4_defun +])#m4_ifndef + + +# _LT_LANG_DEFAULT_CONFIG +# ----------------------- +m4_defun([_LT_LANG_DEFAULT_CONFIG], +[AC_PROVIDE_IFELSE([AC_PROG_CXX], + [LT_LANG(CXX)], + [m4_define([AC_PROG_CXX], defn([AC_PROG_CXX])[LT_LANG(CXX)])]) + +AC_PROVIDE_IFELSE([AC_PROG_F77], + [LT_LANG(F77)], + [m4_define([AC_PROG_F77], defn([AC_PROG_F77])[LT_LANG(F77)])]) + +AC_PROVIDE_IFELSE([AC_PROG_FC], + [LT_LANG(FC)], + [m4_define([AC_PROG_FC], defn([AC_PROG_FC])[LT_LANG(FC)])]) + +dnl The call to [A][M_PROG_GCJ] is quoted like that to stop aclocal +dnl pulling things in needlessly. +AC_PROVIDE_IFELSE([AC_PROG_GCJ], + [LT_LANG(GCJ)], + [AC_PROVIDE_IFELSE([A][M_PROG_GCJ], + [LT_LANG(GCJ)], + [AC_PROVIDE_IFELSE([LT_PROG_GCJ], + [LT_LANG(GCJ)], + [m4_ifdef([AC_PROG_GCJ], + [m4_define([AC_PROG_GCJ], defn([AC_PROG_GCJ])[LT_LANG(GCJ)])]) + m4_ifdef([A][M_PROG_GCJ], + [m4_define([A][M_PROG_GCJ], defn([A][M_PROG_GCJ])[LT_LANG(GCJ)])]) + m4_ifdef([LT_PROG_GCJ], + [m4_define([LT_PROG_GCJ], defn([LT_PROG_GCJ])[LT_LANG(GCJ)])])])])]) + +AC_PROVIDE_IFELSE([AC_PROG_GO], + [LT_LANG(GO)], + [m4_define([AC_PROG_GO], defn([AC_PROG_GO])[LT_LANG(GO)])]) + +AC_PROVIDE_IFELSE([LT_PROG_RC], + [LT_LANG(RC)], + [m4_define([LT_PROG_RC], defn([LT_PROG_RC])[LT_LANG(RC)])]) +])# _LT_LANG_DEFAULT_CONFIG + +# Obsolete macros: +AU_DEFUN([AC_LIBTOOL_CXX], [LT_LANG(C++)]) +AU_DEFUN([AC_LIBTOOL_F77], [LT_LANG(Fortran 77)]) +AU_DEFUN([AC_LIBTOOL_FC], [LT_LANG(Fortran)]) +AU_DEFUN([AC_LIBTOOL_GCJ], [LT_LANG(Java)]) +AU_DEFUN([AC_LIBTOOL_RC], [LT_LANG(Windows Resource)]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_LIBTOOL_CXX], []) +dnl AC_DEFUN([AC_LIBTOOL_F77], []) +dnl AC_DEFUN([AC_LIBTOOL_FC], []) +dnl AC_DEFUN([AC_LIBTOOL_GCJ], []) +dnl AC_DEFUN([AC_LIBTOOL_RC], []) + + +# _LT_TAG_COMPILER +# ---------------- +m4_defun([_LT_TAG_COMPILER], +[AC_REQUIRE([AC_PROG_CC])dnl + +_LT_DECL([LTCC], [CC], [1], [A C compiler])dnl +_LT_DECL([LTCFLAGS], [CFLAGS], [1], [LTCC compiler flags])dnl +_LT_TAGDECL([CC], [compiler], [1], [A language specific compiler])dnl +_LT_TAGDECL([with_gcc], [GCC], [0], [Is the compiler the GNU compiler?])dnl + +# If no C compiler was specified, use CC. +LTCC=${LTCC-"$CC"} + +# If no C compiler flags were specified, use CFLAGS. +LTCFLAGS=${LTCFLAGS-"$CFLAGS"} + +# Allow CC to be a program name with arguments. +compiler=$CC +])# _LT_TAG_COMPILER + + +# _LT_COMPILER_BOILERPLATE +# ------------------------ +# Check for compiler boilerplate output or warnings with +# the simple compiler test code. +m4_defun([_LT_COMPILER_BOILERPLATE], +[m4_require([_LT_DECL_SED])dnl +ac_outfile=conftest.$ac_objext +echo "$lt_simple_compile_test_code" >conftest.$ac_ext +eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err +_lt_compiler_boilerplate=`cat conftest.err` +$RM conftest* +])# _LT_COMPILER_BOILERPLATE + + +# _LT_LINKER_BOILERPLATE +# ---------------------- +# Check for linker boilerplate output or warnings with +# the simple link test code. +m4_defun([_LT_LINKER_BOILERPLATE], +[m4_require([_LT_DECL_SED])dnl +ac_outfile=conftest.$ac_objext +echo "$lt_simple_link_test_code" >conftest.$ac_ext +eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err +_lt_linker_boilerplate=`cat conftest.err` +$RM -r conftest* +])# _LT_LINKER_BOILERPLATE + +# _LT_REQUIRED_DARWIN_CHECKS +# ------------------------- +m4_defun_once([_LT_REQUIRED_DARWIN_CHECKS],[ + case $host_os in + rhapsody* | darwin*) + AC_CHECK_TOOL([DSYMUTIL], [dsymutil], [:]) + AC_CHECK_TOOL([NMEDIT], [nmedit], [:]) + AC_CHECK_TOOL([LIPO], [lipo], [:]) + AC_CHECK_TOOL([OTOOL], [otool], [:]) + AC_CHECK_TOOL([OTOOL64], [otool64], [:]) + _LT_DECL([], [DSYMUTIL], [1], + [Tool to manipulate archived DWARF debug symbol files on Mac OS X]) + _LT_DECL([], [NMEDIT], [1], + [Tool to change global to local symbols on Mac OS X]) + _LT_DECL([], [LIPO], [1], + [Tool to manipulate fat objects and archives on Mac OS X]) + _LT_DECL([], [OTOOL], [1], + [ldd/readelf like tool for Mach-O binaries on Mac OS X]) + _LT_DECL([], [OTOOL64], [1], + [ldd/readelf like tool for 64 bit Mach-O binaries on Mac OS X 10.4]) + + AC_CACHE_CHECK([for -single_module linker flag],[lt_cv_apple_cc_single_mod], + [lt_cv_apple_cc_single_mod=no + if test -z "$LT_MULTI_MODULE"; then + # By default we will add the -single_module flag. You can override + # by either setting the environment variable LT_MULTI_MODULE + # non-empty at configure time, or by adding -multi_module to the + # link flags. + rm -rf libconftest.dylib* + echo "int foo(void){return 1;}" > conftest.c + echo "$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ +-dynamiclib -Wl,-single_module conftest.c" >&AS_MESSAGE_LOG_FD + $LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ + -dynamiclib -Wl,-single_module conftest.c 2>conftest.err + _lt_result=$? + # If there is a non-empty error log, and "single_module" + # appears in it, assume the flag caused a linker warning + if test -s conftest.err && $GREP single_module conftest.err; then + cat conftest.err >&AS_MESSAGE_LOG_FD + # Otherwise, if the output was created with a 0 exit code from + # the compiler, it worked. + elif test -f libconftest.dylib && test 0 = "$_lt_result"; then + lt_cv_apple_cc_single_mod=yes + else + cat conftest.err >&AS_MESSAGE_LOG_FD + fi + rm -rf libconftest.dylib* + rm -f conftest.* + fi]) + + AC_CACHE_CHECK([for -exported_symbols_list linker flag], + [lt_cv_ld_exported_symbols_list], + [lt_cv_ld_exported_symbols_list=no + save_LDFLAGS=$LDFLAGS + echo "_main" > conftest.sym + LDFLAGS="$LDFLAGS -Wl,-exported_symbols_list,conftest.sym" + AC_LINK_IFELSE([AC_LANG_PROGRAM([],[])], + [lt_cv_ld_exported_symbols_list=yes], + [lt_cv_ld_exported_symbols_list=no]) + LDFLAGS=$save_LDFLAGS + ]) + + AC_CACHE_CHECK([for -force_load linker flag],[lt_cv_ld_force_load], + [lt_cv_ld_force_load=no + cat > conftest.c << _LT_EOF +int forced_loaded() { return 2;} +_LT_EOF + echo "$LTCC $LTCFLAGS -c -o conftest.o conftest.c" >&AS_MESSAGE_LOG_FD + $LTCC $LTCFLAGS -c -o conftest.o conftest.c 2>&AS_MESSAGE_LOG_FD + echo "$AR cru libconftest.a conftest.o" >&AS_MESSAGE_LOG_FD + $AR cru libconftest.a conftest.o 2>&AS_MESSAGE_LOG_FD + echo "$RANLIB libconftest.a" >&AS_MESSAGE_LOG_FD + $RANLIB libconftest.a 2>&AS_MESSAGE_LOG_FD + cat > conftest.c << _LT_EOF +int main() { return 0;} +_LT_EOF + echo "$LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a" >&AS_MESSAGE_LOG_FD + $LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a 2>conftest.err + _lt_result=$? + if test -s conftest.err && $GREP force_load conftest.err; then + cat conftest.err >&AS_MESSAGE_LOG_FD + elif test -f conftest && test 0 = "$_lt_result" && $GREP forced_load conftest >/dev/null 2>&1; then + lt_cv_ld_force_load=yes + else + cat conftest.err >&AS_MESSAGE_LOG_FD + fi + rm -f conftest.err libconftest.a conftest conftest.c + rm -rf conftest.dSYM + ]) + case $host_os in + rhapsody* | darwin1.[[012]]) + _lt_dar_allow_undefined='$wl-undefined ${wl}suppress' ;; + darwin1.*) + _lt_dar_allow_undefined='$wl-flat_namespace $wl-undefined ${wl}suppress' ;; + darwin*) # darwin 5.x on + # if running on 10.5 or later, the deployment target defaults + # to the OS version, if on x86, and 10.4, the deployment + # target defaults to 10.4. Don't you love it? + case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in + 10.0,*86*-darwin8*|10.0,*-darwin[[91]]*) + _lt_dar_allow_undefined='$wl-undefined ${wl}dynamic_lookup' ;; + 10.[[012]][[,.]]*) + _lt_dar_allow_undefined='$wl-flat_namespace $wl-undefined ${wl}suppress' ;; + 10.*) + _lt_dar_allow_undefined='$wl-undefined ${wl}dynamic_lookup' ;; + esac + ;; + esac + if test yes = "$lt_cv_apple_cc_single_mod"; then + _lt_dar_single_mod='$single_module' + fi + if test yes = "$lt_cv_ld_exported_symbols_list"; then + _lt_dar_export_syms=' $wl-exported_symbols_list,$output_objdir/$libname-symbols.expsym' + else + _lt_dar_export_syms='~$NMEDIT -s $output_objdir/$libname-symbols.expsym $lib' + fi + if test : != "$DSYMUTIL" && test no = "$lt_cv_ld_force_load"; then + _lt_dsymutil='~$DSYMUTIL $lib || :' + else + _lt_dsymutil= + fi + ;; + esac +]) + + +# _LT_DARWIN_LINKER_FEATURES([TAG]) +# --------------------------------- +# Checks for linker and compiler features on darwin +m4_defun([_LT_DARWIN_LINKER_FEATURES], +[ + m4_require([_LT_REQUIRED_DARWIN_CHECKS]) + _LT_TAGVAR(archive_cmds_need_lc, $1)=no + _LT_TAGVAR(hardcode_direct, $1)=no + _LT_TAGVAR(hardcode_automatic, $1)=yes + _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported + if test yes = "$lt_cv_ld_force_load"; then + _LT_TAGVAR(whole_archive_flag_spec, $1)='`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience $wl-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`' + m4_case([$1], [F77], [_LT_TAGVAR(compiler_needs_object, $1)=yes], + [FC], [_LT_TAGVAR(compiler_needs_object, $1)=yes]) + else + _LT_TAGVAR(whole_archive_flag_spec, $1)='' + fi + _LT_TAGVAR(link_all_deplibs, $1)=yes + _LT_TAGVAR(allow_undefined_flag, $1)=$_lt_dar_allow_undefined + case $cc_basename in + ifort*|nagfor*) _lt_dar_can_shared=yes ;; + *) _lt_dar_can_shared=$GCC ;; + esac + if test yes = "$_lt_dar_can_shared"; then + output_verbose_link_cmd=func_echo_all + _LT_TAGVAR(archive_cmds, $1)="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod$_lt_dsymutil" + _LT_TAGVAR(module_cmds, $1)="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags$_lt_dsymutil" + _LT_TAGVAR(archive_expsym_cmds, $1)="sed 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod$_lt_dar_export_syms$_lt_dsymutil" + _LT_TAGVAR(module_expsym_cmds, $1)="sed -e 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags$_lt_dar_export_syms$_lt_dsymutil" + m4_if([$1], [CXX], +[ if test yes != "$lt_cv_apple_cc_single_mod"; then + _LT_TAGVAR(archive_cmds, $1)="\$CC -r -keep_private_externs -nostdlib -o \$lib-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$lib-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring$_lt_dsymutil" + _LT_TAGVAR(archive_expsym_cmds, $1)="sed 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC -r -keep_private_externs -nostdlib -o \$lib-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$lib-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring$_lt_dar_export_syms$_lt_dsymutil" + fi +],[]) + else + _LT_TAGVAR(ld_shlibs, $1)=no + fi +]) + +# _LT_SYS_MODULE_PATH_AIX([TAGNAME]) +# ---------------------------------- +# Links a minimal program and checks the executable +# for the system default hardcoded library path. In most cases, +# this is /usr/lib:/lib, but when the MPI compilers are used +# the location of the communication and MPI libs are included too. +# If we don't find anything, use the default library path according +# to the aix ld manual. +# Store the results from the different compilers for each TAGNAME. +# Allow to override them for all tags through lt_cv_aix_libpath. +m4_defun([_LT_SYS_MODULE_PATH_AIX], +[m4_require([_LT_DECL_SED])dnl +if test set = "${lt_cv_aix_libpath+set}"; then + aix_libpath=$lt_cv_aix_libpath +else + AC_CACHE_VAL([_LT_TAGVAR([lt_cv_aix_libpath_], [$1])], + [AC_LINK_IFELSE([AC_LANG_PROGRAM],[ + lt_aix_libpath_sed='[ + /Import File Strings/,/^$/ { + /^0/ { + s/^0 *\([^ ]*\) *$/\1/ + p + } + }]' + _LT_TAGVAR([lt_cv_aix_libpath_], [$1])=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` + # Check for a 64-bit object if we didn't find anything. + if test -z "$_LT_TAGVAR([lt_cv_aix_libpath_], [$1])"; then + _LT_TAGVAR([lt_cv_aix_libpath_], [$1])=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` + fi],[]) + if test -z "$_LT_TAGVAR([lt_cv_aix_libpath_], [$1])"; then + _LT_TAGVAR([lt_cv_aix_libpath_], [$1])=/usr/lib:/lib + fi + ]) + aix_libpath=$_LT_TAGVAR([lt_cv_aix_libpath_], [$1]) +fi +])# _LT_SYS_MODULE_PATH_AIX + + +# _LT_SHELL_INIT(ARG) +# ------------------- +m4_define([_LT_SHELL_INIT], +[m4_divert_text([M4SH-INIT], [$1 +])])# _LT_SHELL_INIT + + + +# _LT_PROG_ECHO_BACKSLASH +# ----------------------- +# Find how we can fake an echo command that does not interpret backslash. +# In particular, with Autoconf 2.60 or later we add some code to the start +# of the generated configure script that will find a shell with a builtin +# printf (that we can use as an echo command). +m4_defun([_LT_PROG_ECHO_BACKSLASH], +[ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' +ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO +ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO + +AC_MSG_CHECKING([how to print strings]) +# Test print first, because it will be a builtin if present. +if test "X`( print -r -- -n ) 2>/dev/null`" = X-n && \ + test "X`print -r -- $ECHO 2>/dev/null`" = "X$ECHO"; then + ECHO='print -r --' +elif test "X`printf %s $ECHO 2>/dev/null`" = "X$ECHO"; then + ECHO='printf %s\n' +else + # Use this function as a fallback that always works. + func_fallback_echo () + { + eval 'cat <<_LTECHO_EOF +$[]1 +_LTECHO_EOF' + } + ECHO='func_fallback_echo' +fi + +# func_echo_all arg... +# Invoke $ECHO with all args, space-separated. +func_echo_all () +{ + $ECHO "$*" +} + +case $ECHO in + printf*) AC_MSG_RESULT([printf]) ;; + print*) AC_MSG_RESULT([print -r]) ;; + *) AC_MSG_RESULT([cat]) ;; +esac + +m4_ifdef([_AS_DETECT_SUGGESTED], +[_AS_DETECT_SUGGESTED([ + test -n "${ZSH_VERSION+set}${BASH_VERSION+set}" || ( + ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' + ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO + ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO + PATH=/empty FPATH=/empty; export PATH FPATH + test "X`printf %s $ECHO`" = "X$ECHO" \ + || test "X`print -r -- $ECHO`" = "X$ECHO" )])]) + +_LT_DECL([], [SHELL], [1], [Shell to use when invoking shell scripts]) +_LT_DECL([], [ECHO], [1], [An echo program that protects backslashes]) +])# _LT_PROG_ECHO_BACKSLASH + + +# _LT_WITH_SYSROOT +# ---------------- +AC_DEFUN([_LT_WITH_SYSROOT], +[AC_MSG_CHECKING([for sysroot]) +AC_ARG_WITH([sysroot], +[AS_HELP_STRING([--with-sysroot@<:@=DIR@:>@], + [Search for dependent libraries within DIR (or the compiler's sysroot + if not specified).])], +[], [with_sysroot=no]) + +dnl lt_sysroot will always be passed unquoted. We quote it here +dnl in case the user passed a directory name. +lt_sysroot= +case $with_sysroot in #( + yes) + if test yes = "$GCC"; then + lt_sysroot=`$CC --print-sysroot 2>/dev/null` + fi + ;; #( + /*) + lt_sysroot=`echo "$with_sysroot" | sed -e "$sed_quote_subst"` + ;; #( + no|'') + ;; #( + *) + AC_MSG_RESULT([$with_sysroot]) + AC_MSG_ERROR([The sysroot must be an absolute path.]) + ;; +esac + + AC_MSG_RESULT([${lt_sysroot:-no}]) +_LT_DECL([], [lt_sysroot], [0], [The root where to search for ]dnl +[dependent libraries, and where our libraries should be installed.])]) + +# _LT_ENABLE_LOCK +# --------------- +m4_defun([_LT_ENABLE_LOCK], +[AC_ARG_ENABLE([libtool-lock], + [AS_HELP_STRING([--disable-libtool-lock], + [avoid locking (might break parallel builds)])]) +test no = "$enable_libtool_lock" || enable_libtool_lock=yes + +# Some flags need to be propagated to the compiler or linker for good +# libtool support. +case $host in +ia64-*-hpux*) + # Find out what ABI is being produced by ac_compile, and set mode + # options accordingly. + echo 'int i;' > conftest.$ac_ext + if AC_TRY_EVAL(ac_compile); then + case `/usr/bin/file conftest.$ac_objext` in + *ELF-32*) + HPUX_IA64_MODE=32 + ;; + *ELF-64*) + HPUX_IA64_MODE=64 + ;; + esac + fi + rm -rf conftest* + ;; +*-*-irix6*) + # Find out what ABI is being produced by ac_compile, and set linker + # options accordingly. + echo '[#]line '$LINENO' "configure"' > conftest.$ac_ext + if AC_TRY_EVAL(ac_compile); then + if test yes = "$lt_cv_prog_gnu_ld"; then + case `/usr/bin/file conftest.$ac_objext` in + *32-bit*) + LD="${LD-ld} -melf32bsmip" + ;; + *N32*) + LD="${LD-ld} -melf32bmipn32" + ;; + *64-bit*) + LD="${LD-ld} -melf64bmip" + ;; + esac + else + case `/usr/bin/file conftest.$ac_objext` in + *32-bit*) + LD="${LD-ld} -32" + ;; + *N32*) + LD="${LD-ld} -n32" + ;; + *64-bit*) + LD="${LD-ld} -64" + ;; + esac + fi + fi + rm -rf conftest* + ;; + +mips64*-*linux*) + # Find out what ABI is being produced by ac_compile, and set linker + # options accordingly. + echo '[#]line '$LINENO' "configure"' > conftest.$ac_ext + if AC_TRY_EVAL(ac_compile); then + emul=elf + case `/usr/bin/file conftest.$ac_objext` in + *32-bit*) + emul="${emul}32" + ;; + *64-bit*) + emul="${emul}64" + ;; + esac + case `/usr/bin/file conftest.$ac_objext` in + *MSB*) + emul="${emul}btsmip" + ;; + *LSB*) + emul="${emul}ltsmip" + ;; + esac + case `/usr/bin/file conftest.$ac_objext` in + *N32*) + emul="${emul}n32" + ;; + esac + LD="${LD-ld} -m $emul" + fi + rm -rf conftest* + ;; + +x86_64-*kfreebsd*-gnu|x86_64-*linux*|powerpc*-*linux*| \ +s390*-*linux*|s390*-*tpf*|sparc*-*linux*) + # Find out what ABI is being produced by ac_compile, and set linker + # options accordingly. Note that the listed cases only cover the + # situations where additional linker options are needed (such as when + # doing 32-bit compilation for a host where ld defaults to 64-bit, or + # vice versa); the common cases where no linker options are needed do + # not appear in the list. + echo 'int i;' > conftest.$ac_ext + if AC_TRY_EVAL(ac_compile); then + case `/usr/bin/file conftest.o` in + *32-bit*) + case $host in + x86_64-*kfreebsd*-gnu) + LD="${LD-ld} -m elf_i386_fbsd" + ;; + x86_64-*linux*) + case `/usr/bin/file conftest.o` in + *x86-64*) + LD="${LD-ld} -m elf32_x86_64" + ;; + *) + LD="${LD-ld} -m elf_i386" + ;; + esac + ;; + powerpc64le-*linux*) + LD="${LD-ld} -m elf32lppclinux" + ;; + powerpc64-*linux*) + LD="${LD-ld} -m elf32ppclinux" + ;; + s390x-*linux*) + LD="${LD-ld} -m elf_s390" + ;; + sparc64-*linux*) + LD="${LD-ld} -m elf32_sparc" + ;; + esac + ;; + *64-bit*) + case $host in + x86_64-*kfreebsd*-gnu) + LD="${LD-ld} -m elf_x86_64_fbsd" + ;; + x86_64-*linux*) + LD="${LD-ld} -m elf_x86_64" + ;; + powerpcle-*linux*) + LD="${LD-ld} -m elf64lppc" + ;; + powerpc-*linux*) + LD="${LD-ld} -m elf64ppc" + ;; + s390*-*linux*|s390*-*tpf*) + LD="${LD-ld} -m elf64_s390" + ;; + sparc*-*linux*) + LD="${LD-ld} -m elf64_sparc" + ;; + esac + ;; + esac + fi + rm -rf conftest* + ;; + +*-*-sco3.2v5*) + # On SCO OpenServer 5, we need -belf to get full-featured binaries. + SAVE_CFLAGS=$CFLAGS + CFLAGS="$CFLAGS -belf" + AC_CACHE_CHECK([whether the C compiler needs -belf], lt_cv_cc_needs_belf, + [AC_LANG_PUSH(C) + AC_LINK_IFELSE([AC_LANG_PROGRAM([[]],[[]])],[lt_cv_cc_needs_belf=yes],[lt_cv_cc_needs_belf=no]) + AC_LANG_POP]) + if test yes != "$lt_cv_cc_needs_belf"; then + # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf + CFLAGS=$SAVE_CFLAGS + fi + ;; +*-*solaris*) + # Find out what ABI is being produced by ac_compile, and set linker + # options accordingly. + echo 'int i;' > conftest.$ac_ext + if AC_TRY_EVAL(ac_compile); then + case `/usr/bin/file conftest.o` in + *64-bit*) + case $lt_cv_prog_gnu_ld in + yes*) + case $host in + i?86-*-solaris*|x86_64-*-solaris*) + LD="${LD-ld} -m elf_x86_64" + ;; + sparc*-*-solaris*) + LD="${LD-ld} -m elf64_sparc" + ;; + esac + # GNU ld 2.21 introduced _sol2 emulations. Use them if available. + if ${LD-ld} -V | grep _sol2 >/dev/null 2>&1; then + LD=${LD-ld}_sol2 + fi + ;; + *) + if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then + LD="${LD-ld} -64" + fi + ;; + esac + ;; + esac + fi + rm -rf conftest* + ;; +esac + +need_locks=$enable_libtool_lock +])# _LT_ENABLE_LOCK + + +# _LT_PROG_AR +# ----------- +m4_defun([_LT_PROG_AR], +[AC_CHECK_TOOLS(AR, [ar], false) +: ${AR=ar} +: ${AR_FLAGS=cru} +_LT_DECL([], [AR], [1], [The archiver]) +_LT_DECL([], [AR_FLAGS], [1], [Flags to create an archive]) + +AC_CACHE_CHECK([for archiver @FILE support], [lt_cv_ar_at_file], + [lt_cv_ar_at_file=no + AC_COMPILE_IFELSE([AC_LANG_PROGRAM], + [echo conftest.$ac_objext > conftest.lst + lt_ar_try='$AR $AR_FLAGS libconftest.a @conftest.lst >&AS_MESSAGE_LOG_FD' + AC_TRY_EVAL([lt_ar_try]) + if test 0 -eq "$ac_status"; then + # Ensure the archiver fails upon bogus file names. + rm -f conftest.$ac_objext libconftest.a + AC_TRY_EVAL([lt_ar_try]) + if test 0 -ne "$ac_status"; then + lt_cv_ar_at_file=@ + fi + fi + rm -f conftest.* libconftest.a + ]) + ]) + +if test no = "$lt_cv_ar_at_file"; then + archiver_list_spec= +else + archiver_list_spec=$lt_cv_ar_at_file +fi +_LT_DECL([], [archiver_list_spec], [1], + [How to feed a file listing to the archiver]) +])# _LT_PROG_AR + + +# _LT_CMD_OLD_ARCHIVE +# ------------------- +m4_defun([_LT_CMD_OLD_ARCHIVE], +[_LT_PROG_AR + +AC_CHECK_TOOL(STRIP, strip, :) +test -z "$STRIP" && STRIP=: +_LT_DECL([], [STRIP], [1], [A symbol stripping program]) + +AC_CHECK_TOOL(RANLIB, ranlib, :) +test -z "$RANLIB" && RANLIB=: +_LT_DECL([], [RANLIB], [1], + [Commands used to install an old-style archive]) + +# Determine commands to create old-style static archives. +old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs' +old_postinstall_cmds='chmod 644 $oldlib' +old_postuninstall_cmds= + +if test -n "$RANLIB"; then + case $host_os in + bitrig* | openbsd*) + old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$tool_oldlib" + ;; + *) + old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$tool_oldlib" + ;; + esac + old_archive_cmds="$old_archive_cmds~\$RANLIB \$tool_oldlib" +fi + +case $host_os in + darwin*) + lock_old_archive_extraction=yes ;; + *) + lock_old_archive_extraction=no ;; +esac +_LT_DECL([], [old_postinstall_cmds], [2]) +_LT_DECL([], [old_postuninstall_cmds], [2]) +_LT_TAGDECL([], [old_archive_cmds], [2], + [Commands used to build an old-style archive]) +_LT_DECL([], [lock_old_archive_extraction], [0], + [Whether to use a lock for old archive extraction]) +])# _LT_CMD_OLD_ARCHIVE + + +# _LT_COMPILER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS, +# [OUTPUT-FILE], [ACTION-SUCCESS], [ACTION-FAILURE]) +# ---------------------------------------------------------------- +# Check whether the given compiler option works +AC_DEFUN([_LT_COMPILER_OPTION], +[m4_require([_LT_FILEUTILS_DEFAULTS])dnl +m4_require([_LT_DECL_SED])dnl +AC_CACHE_CHECK([$1], [$2], + [$2=no + m4_if([$4], , [ac_outfile=conftest.$ac_objext], [ac_outfile=$4]) + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + lt_compiler_flag="$3" ## exclude from sc_useless_quotes_in_assignment + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + # The option is referenced via a variable to avoid confusing sed. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&AS_MESSAGE_LOG_FD) + (eval "$lt_compile" 2>conftest.err) + ac_status=$? + cat conftest.err >&AS_MESSAGE_LOG_FD + echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD + if (exit $ac_status) && test -s "$ac_outfile"; then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings other than the usual output. + $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then + $2=yes + fi + fi + $RM conftest* +]) + +if test yes = "[$]$2"; then + m4_if([$5], , :, [$5]) +else + m4_if([$6], , :, [$6]) +fi +])# _LT_COMPILER_OPTION + +# Old name: +AU_ALIAS([AC_LIBTOOL_COMPILER_OPTION], [_LT_COMPILER_OPTION]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_LIBTOOL_COMPILER_OPTION], []) + + +# _LT_LINKER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS, +# [ACTION-SUCCESS], [ACTION-FAILURE]) +# ---------------------------------------------------- +# Check whether the given linker option works +AC_DEFUN([_LT_LINKER_OPTION], +[m4_require([_LT_FILEUTILS_DEFAULTS])dnl +m4_require([_LT_DECL_SED])dnl +AC_CACHE_CHECK([$1], [$2], + [$2=no + save_LDFLAGS=$LDFLAGS + LDFLAGS="$LDFLAGS $3" + echo "$lt_simple_link_test_code" > conftest.$ac_ext + if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then + # The linker can only warn and ignore the option if not recognized + # So say no if there are warnings + if test -s conftest.err; then + # Append any errors to the config.log. + cat conftest.err 1>&AS_MESSAGE_LOG_FD + $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if diff conftest.exp conftest.er2 >/dev/null; then + $2=yes + fi + else + $2=yes + fi + fi + $RM -r conftest* + LDFLAGS=$save_LDFLAGS +]) + +if test yes = "[$]$2"; then + m4_if([$4], , :, [$4]) +else + m4_if([$5], , :, [$5]) +fi +])# _LT_LINKER_OPTION + +# Old name: +AU_ALIAS([AC_LIBTOOL_LINKER_OPTION], [_LT_LINKER_OPTION]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_LIBTOOL_LINKER_OPTION], []) + + +# LT_CMD_MAX_LEN +#--------------- +AC_DEFUN([LT_CMD_MAX_LEN], +[AC_REQUIRE([AC_CANONICAL_HOST])dnl +# find the maximum length of command line arguments +AC_MSG_CHECKING([the maximum length of command line arguments]) +AC_CACHE_VAL([lt_cv_sys_max_cmd_len], [dnl + i=0 + teststring=ABCD + + case $build_os in + msdosdjgpp*) + # On DJGPP, this test can blow up pretty badly due to problems in libc + # (any single argument exceeding 2000 bytes causes a buffer overrun + # during glob expansion). Even if it were fixed, the result of this + # check would be larger than it should be. + lt_cv_sys_max_cmd_len=12288; # 12K is about right + ;; + + gnu*) + # Under GNU Hurd, this test is not required because there is + # no limit to the length of command line arguments. + # Libtool will interpret -1 as no limit whatsoever + lt_cv_sys_max_cmd_len=-1; + ;; + + cygwin* | mingw* | cegcc*) + # On Win9x/ME, this test blows up -- it succeeds, but takes + # about 5 minutes as the teststring grows exponentially. + # Worse, since 9x/ME are not pre-emptively multitasking, + # you end up with a "frozen" computer, even though with patience + # the test eventually succeeds (with a max line length of 256k). + # Instead, let's just punt: use the minimum linelength reported by + # all of the supported platforms: 8192 (on NT/2K/XP). + lt_cv_sys_max_cmd_len=8192; + ;; + + mint*) + # On MiNT this can take a long time and run out of memory. + lt_cv_sys_max_cmd_len=8192; + ;; + + amigaos*) + # On AmigaOS with pdksh, this test takes hours, literally. + # So we just punt and use a minimum line length of 8192. + lt_cv_sys_max_cmd_len=8192; + ;; + + bitrig* | darwin* | dragonfly* | freebsd* | netbsd* | openbsd*) + # This has been around since 386BSD, at least. Likely further. + if test -x /sbin/sysctl; then + lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax` + elif test -x /usr/sbin/sysctl; then + lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax` + else + lt_cv_sys_max_cmd_len=65536 # usable default for all BSDs + fi + # And add a safety zone + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` + ;; + + interix*) + # We know the value 262144 and hardcode it with a safety zone (like BSD) + lt_cv_sys_max_cmd_len=196608 + ;; + + os2*) + # The test takes a long time on OS/2. + lt_cv_sys_max_cmd_len=8192 + ;; + + osf*) + # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure + # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not + # nice to cause kernel panics so lets avoid the loop below. + # First set a reasonable default. + lt_cv_sys_max_cmd_len=16384 + # + if test -x /sbin/sysconfig; then + case `/sbin/sysconfig -q proc exec_disable_arg_limit` in + *1*) lt_cv_sys_max_cmd_len=-1 ;; + esac + fi + ;; + sco3.2v5*) + lt_cv_sys_max_cmd_len=102400 + ;; + sysv5* | sco5v6* | sysv4.2uw2*) + kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null` + if test -n "$kargmax"; then + lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[[ ]]//'` + else + lt_cv_sys_max_cmd_len=32768 + fi + ;; + *) + lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null` + if test -n "$lt_cv_sys_max_cmd_len" && \ + test undefined != "$lt_cv_sys_max_cmd_len"; then + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` + else + # Make teststring a little bigger before we do anything with it. + # a 1K string should be a reasonable start. + for i in 1 2 3 4 5 6 7 8; do + teststring=$teststring$teststring + done + SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}} + # If test is not a shell built-in, we'll probably end up computing a + # maximum length that is only half of the actual maximum length, but + # we can't tell. + while { test X`env echo "$teststring$teststring" 2>/dev/null` \ + = "X$teststring$teststring"; } >/dev/null 2>&1 && + test 17 != "$i" # 1/2 MB should be enough + do + i=`expr $i + 1` + teststring=$teststring$teststring + done + # Only check the string length outside the loop. + lt_cv_sys_max_cmd_len=`expr "X$teststring" : ".*" 2>&1` + teststring= + # Add a significant safety factor because C++ compilers can tack on + # massive amounts of additional arguments before passing them to the + # linker. It appears as though 1/2 is a usable value. + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2` + fi + ;; + esac +]) +if test -n "$lt_cv_sys_max_cmd_len"; then + AC_MSG_RESULT($lt_cv_sys_max_cmd_len) +else + AC_MSG_RESULT(none) +fi +max_cmd_len=$lt_cv_sys_max_cmd_len +_LT_DECL([], [max_cmd_len], [0], + [What is the maximum length of a command?]) +])# LT_CMD_MAX_LEN + +# Old name: +AU_ALIAS([AC_LIBTOOL_SYS_MAX_CMD_LEN], [LT_CMD_MAX_LEN]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_LIBTOOL_SYS_MAX_CMD_LEN], []) + + +# _LT_HEADER_DLFCN +# ---------------- +m4_defun([_LT_HEADER_DLFCN], +[AC_CHECK_HEADERS([dlfcn.h], [], [], [AC_INCLUDES_DEFAULT])dnl +])# _LT_HEADER_DLFCN + + +# _LT_TRY_DLOPEN_SELF (ACTION-IF-TRUE, ACTION-IF-TRUE-W-USCORE, +# ACTION-IF-FALSE, ACTION-IF-CROSS-COMPILING) +# ---------------------------------------------------------------- +m4_defun([_LT_TRY_DLOPEN_SELF], +[m4_require([_LT_HEADER_DLFCN])dnl +if test yes = "$cross_compiling"; then : + [$4] +else + lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 + lt_status=$lt_dlunknown + cat > conftest.$ac_ext <<_LT_EOF +[#line $LINENO "configure" +#include "confdefs.h" + +#if HAVE_DLFCN_H +#include +#endif + +#include + +#ifdef RTLD_GLOBAL +# define LT_DLGLOBAL RTLD_GLOBAL +#else +# ifdef DL_GLOBAL +# define LT_DLGLOBAL DL_GLOBAL +# else +# define LT_DLGLOBAL 0 +# endif +#endif + +/* We may have to define LT_DLLAZY_OR_NOW in the command line if we + find out it does not work in some platform. */ +#ifndef LT_DLLAZY_OR_NOW +# ifdef RTLD_LAZY +# define LT_DLLAZY_OR_NOW RTLD_LAZY +# else +# ifdef DL_LAZY +# define LT_DLLAZY_OR_NOW DL_LAZY +# else +# ifdef RTLD_NOW +# define LT_DLLAZY_OR_NOW RTLD_NOW +# else +# ifdef DL_NOW +# define LT_DLLAZY_OR_NOW DL_NOW +# else +# define LT_DLLAZY_OR_NOW 0 +# endif +# endif +# endif +# endif +#endif + +/* When -fvisibility=hidden is used, assume the code has been annotated + correspondingly for the symbols needed. */ +#if defined __GNUC__ && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3)) +int fnord () __attribute__((visibility("default"))); +#endif + +int fnord () { return 42; } +int main () +{ + void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); + int status = $lt_dlunknown; + + if (self) + { + if (dlsym (self,"fnord")) status = $lt_dlno_uscore; + else + { + if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; + else puts (dlerror ()); + } + /* dlclose (self); */ + } + else + puts (dlerror ()); + + return status; +}] +_LT_EOF + if AC_TRY_EVAL(ac_link) && test -s "conftest$ac_exeext" 2>/dev/null; then + (./conftest; exit; ) >&AS_MESSAGE_LOG_FD 2>/dev/null + lt_status=$? + case x$lt_status in + x$lt_dlno_uscore) $1 ;; + x$lt_dlneed_uscore) $2 ;; + x$lt_dlunknown|x*) $3 ;; + esac + else : + # compilation failed + $3 + fi +fi +rm -fr conftest* +])# _LT_TRY_DLOPEN_SELF + + +# LT_SYS_DLOPEN_SELF +# ------------------ +AC_DEFUN([LT_SYS_DLOPEN_SELF], +[m4_require([_LT_HEADER_DLFCN])dnl +if test yes != "$enable_dlopen"; then + enable_dlopen=unknown + enable_dlopen_self=unknown + enable_dlopen_self_static=unknown +else + lt_cv_dlopen=no + lt_cv_dlopen_libs= + + case $host_os in + beos*) + lt_cv_dlopen=load_add_on + lt_cv_dlopen_libs= + lt_cv_dlopen_self=yes + ;; + + mingw* | pw32* | cegcc*) + lt_cv_dlopen=LoadLibrary + lt_cv_dlopen_libs= + ;; + + cygwin*) + lt_cv_dlopen=dlopen + lt_cv_dlopen_libs= + ;; + + darwin*) + # if libdl is installed we need to link against it + AC_CHECK_LIB([dl], [dlopen], + [lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-ldl],[ + lt_cv_dlopen=dyld + lt_cv_dlopen_libs= + lt_cv_dlopen_self=yes + ]) + ;; + + tpf*) + # Don't try to run any link tests for TPF. We know it's impossible + # because TPF is a cross-compiler, and we know how we open DSOs. + lt_cv_dlopen=dlopen + lt_cv_dlopen_libs= + lt_cv_dlopen_self=no + ;; + + *) + AC_CHECK_FUNC([shl_load], + [lt_cv_dlopen=shl_load], + [AC_CHECK_LIB([dld], [shl_load], + [lt_cv_dlopen=shl_load lt_cv_dlopen_libs=-ldld], + [AC_CHECK_FUNC([dlopen], + [lt_cv_dlopen=dlopen], + [AC_CHECK_LIB([dl], [dlopen], + [lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-ldl], + [AC_CHECK_LIB([svld], [dlopen], + [lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-lsvld], + [AC_CHECK_LIB([dld], [dld_link], + [lt_cv_dlopen=dld_link lt_cv_dlopen_libs=-ldld]) + ]) + ]) + ]) + ]) + ]) + ;; + esac + + if test no = "$lt_cv_dlopen"; then + enable_dlopen=no + else + enable_dlopen=yes + fi + + case $lt_cv_dlopen in + dlopen) + save_CPPFLAGS=$CPPFLAGS + test yes = "$ac_cv_header_dlfcn_h" && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" + + save_LDFLAGS=$LDFLAGS + wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" + + save_LIBS=$LIBS + LIBS="$lt_cv_dlopen_libs $LIBS" + + AC_CACHE_CHECK([whether a program can dlopen itself], + lt_cv_dlopen_self, [dnl + _LT_TRY_DLOPEN_SELF( + lt_cv_dlopen_self=yes, lt_cv_dlopen_self=yes, + lt_cv_dlopen_self=no, lt_cv_dlopen_self=cross) + ]) + + if test yes = "$lt_cv_dlopen_self"; then + wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\" + AC_CACHE_CHECK([whether a statically linked program can dlopen itself], + lt_cv_dlopen_self_static, [dnl + _LT_TRY_DLOPEN_SELF( + lt_cv_dlopen_self_static=yes, lt_cv_dlopen_self_static=yes, + lt_cv_dlopen_self_static=no, lt_cv_dlopen_self_static=cross) + ]) + fi + + CPPFLAGS=$save_CPPFLAGS + LDFLAGS=$save_LDFLAGS + LIBS=$save_LIBS + ;; + esac + + case $lt_cv_dlopen_self in + yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;; + *) enable_dlopen_self=unknown ;; + esac + + case $lt_cv_dlopen_self_static in + yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;; + *) enable_dlopen_self_static=unknown ;; + esac +fi +_LT_DECL([dlopen_support], [enable_dlopen], [0], + [Whether dlopen is supported]) +_LT_DECL([dlopen_self], [enable_dlopen_self], [0], + [Whether dlopen of programs is supported]) +_LT_DECL([dlopen_self_static], [enable_dlopen_self_static], [0], + [Whether dlopen of statically linked programs is supported]) +])# LT_SYS_DLOPEN_SELF + +# Old name: +AU_ALIAS([AC_LIBTOOL_DLOPEN_SELF], [LT_SYS_DLOPEN_SELF]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_LIBTOOL_DLOPEN_SELF], []) + + +# _LT_COMPILER_C_O([TAGNAME]) +# --------------------------- +# Check to see if options -c and -o are simultaneously supported by compiler. +# This macro does not hard code the compiler like AC_PROG_CC_C_O. +m4_defun([_LT_COMPILER_C_O], +[m4_require([_LT_DECL_SED])dnl +m4_require([_LT_FILEUTILS_DEFAULTS])dnl +m4_require([_LT_TAG_COMPILER])dnl +AC_CACHE_CHECK([if $compiler supports -c -o file.$ac_objext], + [_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)], + [_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=no + $RM -r conftest 2>/dev/null + mkdir conftest + cd conftest + mkdir out + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + + lt_compiler_flag="-o out/conftest2.$ac_objext" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&AS_MESSAGE_LOG_FD) + (eval "$lt_compile" 2>out/conftest.err) + ac_status=$? + cat out/conftest.err >&AS_MESSAGE_LOG_FD + echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD + if (exit $ac_status) && test -s out/conftest2.$ac_objext + then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings + $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp + $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 + if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then + _LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes + fi + fi + chmod u+w . 2>&AS_MESSAGE_LOG_FD + $RM conftest* + # SGI C++ compiler will create directory out/ii_files/ for + # template instantiation + test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files + $RM out/* && rmdir out + cd .. + $RM -r conftest + $RM conftest* +]) +_LT_TAGDECL([compiler_c_o], [lt_cv_prog_compiler_c_o], [1], + [Does compiler simultaneously support -c and -o options?]) +])# _LT_COMPILER_C_O + + +# _LT_COMPILER_FILE_LOCKS([TAGNAME]) +# ---------------------------------- +# Check to see if we can do hard links to lock some files if needed +m4_defun([_LT_COMPILER_FILE_LOCKS], +[m4_require([_LT_ENABLE_LOCK])dnl +m4_require([_LT_FILEUTILS_DEFAULTS])dnl +_LT_COMPILER_C_O([$1]) + +hard_links=nottested +if test no = "$_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)" && test no != "$need_locks"; then + # do not overwrite the value of need_locks provided by the user + AC_MSG_CHECKING([if we can lock with hard links]) + hard_links=yes + $RM conftest* + ln conftest.a conftest.b 2>/dev/null && hard_links=no + touch conftest.a + ln conftest.a conftest.b 2>&5 || hard_links=no + ln conftest.a conftest.b 2>/dev/null && hard_links=no + AC_MSG_RESULT([$hard_links]) + if test no = "$hard_links"; then + AC_MSG_WARN(['$CC' does not support '-c -o', so 'make -j' may be unsafe]) + need_locks=warn + fi +else + need_locks=no +fi +_LT_DECL([], [need_locks], [1], [Must we lock files when doing compilation?]) +])# _LT_COMPILER_FILE_LOCKS + + +# _LT_CHECK_OBJDIR +# ---------------- +m4_defun([_LT_CHECK_OBJDIR], +[AC_CACHE_CHECK([for objdir], [lt_cv_objdir], +[rm -f .libs 2>/dev/null +mkdir .libs 2>/dev/null +if test -d .libs; then + lt_cv_objdir=.libs +else + # MS-DOS does not allow filenames that begin with a dot. + lt_cv_objdir=_libs +fi +rmdir .libs 2>/dev/null]) +objdir=$lt_cv_objdir +_LT_DECL([], [objdir], [0], + [The name of the directory that contains temporary libtool files])dnl +m4_pattern_allow([LT_OBJDIR])dnl +AC_DEFINE_UNQUOTED([LT_OBJDIR], "$lt_cv_objdir/", + [Define to the sub-directory where libtool stores uninstalled libraries.]) +])# _LT_CHECK_OBJDIR + + +# _LT_LINKER_HARDCODE_LIBPATH([TAGNAME]) +# -------------------------------------- +# Check hardcoding attributes. +m4_defun([_LT_LINKER_HARDCODE_LIBPATH], +[AC_MSG_CHECKING([how to hardcode library paths into programs]) +_LT_TAGVAR(hardcode_action, $1)= +if test -n "$_LT_TAGVAR(hardcode_libdir_flag_spec, $1)" || + test -n "$_LT_TAGVAR(runpath_var, $1)" || + test yes = "$_LT_TAGVAR(hardcode_automatic, $1)"; then + + # We can hardcode non-existent directories. + if test no != "$_LT_TAGVAR(hardcode_direct, $1)" && + # If the only mechanism to avoid hardcoding is shlibpath_var, we + # have to relink, otherwise we might link with an installed library + # when we should be linking with a yet-to-be-installed one + ## test no != "$_LT_TAGVAR(hardcode_shlibpath_var, $1)" && + test no != "$_LT_TAGVAR(hardcode_minus_L, $1)"; then + # Linking always hardcodes the temporary library directory. + _LT_TAGVAR(hardcode_action, $1)=relink + else + # We can link without hardcoding, and we can hardcode nonexisting dirs. + _LT_TAGVAR(hardcode_action, $1)=immediate + fi +else + # We cannot hardcode anything, or else we can only hardcode existing + # directories. + _LT_TAGVAR(hardcode_action, $1)=unsupported +fi +AC_MSG_RESULT([$_LT_TAGVAR(hardcode_action, $1)]) + +if test relink = "$_LT_TAGVAR(hardcode_action, $1)" || + test yes = "$_LT_TAGVAR(inherit_rpath, $1)"; then + # Fast installation is not supported + enable_fast_install=no +elif test yes = "$shlibpath_overrides_runpath" || + test no = "$enable_shared"; then + # Fast installation is not necessary + enable_fast_install=needless +fi +_LT_TAGDECL([], [hardcode_action], [0], + [How to hardcode a shared library path into an executable]) +])# _LT_LINKER_HARDCODE_LIBPATH + + +# _LT_CMD_STRIPLIB +# ---------------- +m4_defun([_LT_CMD_STRIPLIB], +[m4_require([_LT_DECL_EGREP]) +striplib= +old_striplib= +AC_MSG_CHECKING([whether stripping libraries is possible]) +if test -n "$STRIP" && $STRIP -V 2>&1 | $GREP "GNU strip" >/dev/null; then + test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" + test -z "$striplib" && striplib="$STRIP --strip-unneeded" + AC_MSG_RESULT([yes]) +else +# FIXME - insert some real tests, host_os isn't really good enough + case $host_os in + darwin*) + if test -n "$STRIP"; then + striplib="$STRIP -x" + old_striplib="$STRIP -S" + AC_MSG_RESULT([yes]) + else + AC_MSG_RESULT([no]) + fi + ;; + *) + AC_MSG_RESULT([no]) + ;; + esac +fi +_LT_DECL([], [old_striplib], [1], [Commands to strip libraries]) +_LT_DECL([], [striplib], [1]) +])# _LT_CMD_STRIPLIB + + +# _LT_PREPARE_MUNGE_PATH_LIST +# --------------------------- +# Make sure func_munge_path_list() is defined correctly. +m4_defun([_LT_PREPARE_MUNGE_PATH_LIST], +[[# func_munge_path_list VARIABLE PATH +# ----------------------------------- +# VARIABLE is name of variable containing _space_ separated list of +# directories to be munged by the contents of PATH, which is string +# having a format: +# "DIR[:DIR]:" +# string "DIR[ DIR]" will be prepended to VARIABLE +# ":DIR[:DIR]" +# string "DIR[ DIR]" will be appended to VARIABLE +# "DIRP[:DIRP]::[DIRA:]DIRA" +# string "DIRP[ DIRP]" will be prepended to VARIABLE and string +# "DIRA[ DIRA]" will be appended to VARIABLE +# "DIR[:DIR]" +# VARIABLE will be replaced by "DIR[ DIR]" +func_munge_path_list () +{ + case x@S|@2 in + x) + ;; + *:) + eval @S|@1=\"`$ECHO @S|@2 | $SED 's/:/ /g'` \@S|@@S|@1\" + ;; + x:*) + eval @S|@1=\"\@S|@@S|@1 `$ECHO @S|@2 | $SED 's/:/ /g'`\" + ;; + *::*) + eval @S|@1=\"\@S|@@S|@1\ `$ECHO @S|@2 | $SED -e 's/.*:://' -e 's/:/ /g'`\" + eval @S|@1=\"`$ECHO @S|@2 | $SED -e 's/::.*//' -e 's/:/ /g'`\ \@S|@@S|@1\" + ;; + *) + eval @S|@1=\"`$ECHO @S|@2 | $SED 's/:/ /g'`\" + ;; + esac +} +]])# _LT_PREPARE_PATH_LIST + + +# _LT_SYS_DYNAMIC_LINKER([TAG]) +# ----------------------------- +# PORTME Fill in your ld.so characteristics +m4_defun([_LT_SYS_DYNAMIC_LINKER], +[AC_REQUIRE([AC_CANONICAL_HOST])dnl +m4_require([_LT_DECL_EGREP])dnl +m4_require([_LT_FILEUTILS_DEFAULTS])dnl +m4_require([_LT_DECL_OBJDUMP])dnl +m4_require([_LT_DECL_SED])dnl +m4_require([_LT_CHECK_SHELL_FEATURES])dnl +m4_require([_LT_PREPARE_MUNGE_PATH_LIST])dnl +AC_MSG_CHECKING([dynamic linker characteristics]) +m4_if([$1], + [], [ +if test yes = "$GCC"; then + case $host_os in + darwin*) lt_awk_arg='/^libraries:/,/LR/' ;; + *) lt_awk_arg='/^libraries:/' ;; + esac + case $host_os in + mingw* | cegcc*) lt_sed_strip_eq='s|=\([[A-Za-z]]:\)|\1|g' ;; + *) lt_sed_strip_eq='s|=/|/|g' ;; + esac + lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e $lt_sed_strip_eq` + case $lt_search_path_spec in + *\;*) + # if the path contains ";" then we assume it to be the separator + # otherwise default to the standard path separator (i.e. ":") - it is + # assumed that no part of a normal pathname contains ";" but that should + # okay in the real world where ";" in dirpaths is itself problematic. + lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED 's/;/ /g'` + ;; + *) + lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED "s/$PATH_SEPARATOR/ /g"` + ;; + esac + # Ok, now we have the path, separated by spaces, we can step through it + # and add multilib dir if necessary... + lt_tmp_lt_search_path_spec= + lt_multi_os_dir=/`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null` + # ...but if some path component already ends with the multilib dir we assume + # that all is fine and trust -print-search-dirs as is (GCC 4.2? or newer). + case "$lt_multi_os_dir; $lt_search_path_spec " in + "/; "* | "/.; "* | "/./; "* | *"$lt_multi_os_dir "* | *"$lt_multi_os_dir/ "*) + lt_multi_os_dir= + ;; + esac + for lt_sys_path in $lt_search_path_spec; do + if test -d "$lt_sys_path$lt_multi_os_dir"; then + lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path$lt_multi_os_dir" + elif test -n "$lt_multi_os_dir"; then + test -d "$lt_sys_path" && \ + lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path" + fi + done + lt_search_path_spec=`$ECHO "$lt_tmp_lt_search_path_spec" | awk ' +BEGIN {RS = " "; FS = "/|\n";} { + lt_foo = ""; + lt_count = 0; + for (lt_i = NF; lt_i > 0; lt_i--) { + if ($lt_i != "" && $lt_i != ".") { + if ($lt_i == "..") { + lt_count++; + } else { + if (lt_count == 0) { + lt_foo = "/" $lt_i lt_foo; + } else { + lt_count--; + } + } + } + } + if (lt_foo != "") { lt_freq[[lt_foo]]++; } + if (lt_freq[[lt_foo]] == 1) { print lt_foo; } +}'` + # AWK program above erroneously prepends '/' to C:/dos/paths + # for these hosts. + case $host_os in + mingw* | cegcc*) lt_search_path_spec=`$ECHO "$lt_search_path_spec" |\ + $SED 's|/\([[A-Za-z]]:\)|\1|g'` ;; + esac + sys_lib_search_path_spec=`$ECHO "$lt_search_path_spec" | $lt_NL2SP` +else + sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" +fi]) +library_names_spec= +libname_spec='lib$name' +soname_spec= +shrext_cmds=.so +postinstall_cmds= +postuninstall_cmds= +finish_cmds= +finish_eval= +shlibpath_var= +shlibpath_overrides_runpath=unknown +version_type=none +dynamic_linker="$host_os ld.so" +sys_lib_dlsearch_path_spec="/lib /usr/lib" +need_lib_prefix=unknown +hardcode_into_libs=no + +# when you set need_version to no, make sure it does not cause -set_version +# flags to be left without arguments +need_version=unknown + +AC_ARG_VAR([LT_SYS_LIBRARY_PATH], +[User-defined run-time library search path.]) + +case $host_os in +aix3*) + version_type=linux # correct to gnu/linux during the next big refactor + library_names_spec='$libname$release$shared_ext$versuffix $libname.a' + shlibpath_var=LIBPATH + + # AIX 3 has no versioning support, so we append a major version to the name. + soname_spec='$libname$release$shared_ext$major' + ;; + +aix[[4-9]]*) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + hardcode_into_libs=yes + if test ia64 = "$host_cpu"; then + # AIX 5 supports IA64 + library_names_spec='$libname$release$shared_ext$major $libname$release$shared_ext$versuffix $libname$shared_ext' + shlibpath_var=LD_LIBRARY_PATH + else + # With GCC up to 2.95.x, collect2 would create an import file + # for dependence libraries. The import file would start with + # the line '#! .'. This would cause the generated library to + # depend on '.', always an invalid library. This was fixed in + # development snapshots of GCC prior to 3.0. + case $host_os in + aix4 | aix4.[[01]] | aix4.[[01]].*) + if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' + echo ' yes ' + echo '#endif'; } | $CC -E - | $GREP yes > /dev/null; then + : + else + can_build_shared=no + fi + ;; + esac + # Using Import Files as archive members, it is possible to support + # filename-based versioning of shared library archives on AIX. While + # this would work for both with and without runtime linking, it will + # prevent static linking of such archives. So we do filename-based + # shared library versioning with .so extension only, which is used + # when both runtime linking and shared linking is enabled. + # Unfortunately, runtime linking may impact performance, so we do + # not want this to be the default eventually. Also, we use the + # versioned .so libs for executables only if there is the -brtl + # linker flag in LDFLAGS as well, or --with-aix-soname=svr4 only. + # To allow for filename-based versioning support, we need to create + # libNAME.so.V as an archive file, containing: + # *) an Import File, referring to the versioned filename of the + # archive as well as the shared archive member, telling the + # bitwidth (32 or 64) of that shared object, and providing the + # list of exported symbols of that shared object, eventually + # decorated with the 'weak' keyword + # *) the shared object with the F_LOADONLY flag set, to really avoid + # it being seen by the linker. + # At run time we better use the real file rather than another symlink, + # but for link time we create the symlink libNAME.so -> libNAME.so.V + + case $with_aix_soname,$aix_use_runtimelinking in + # AIX (on Power*) has no versioning support, so currently we cannot hardcode correct + # soname into executable. Probably we can add versioning support to + # collect2, so additional links can be useful in future. + aix,yes) # traditional libtool + dynamic_linker='AIX unversionable lib.so' + # If using run time linking (on AIX 4.2 or later) use lib.so + # instead of lib.a to let people know that these are not + # typical AIX shared libraries. + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + ;; + aix,no) # traditional AIX only + dynamic_linker='AIX lib.a[(]lib.so.V[)]' + # We preserve .a as extension for shared libraries through AIX4.2 + # and later when we are not doing run time linking. + library_names_spec='$libname$release.a $libname.a' + soname_spec='$libname$release$shared_ext$major' + ;; + svr4,*) # full svr4 only + dynamic_linker="AIX lib.so.V[(]$shared_archive_member_spec.o[)]" + library_names_spec='$libname$release$shared_ext$major $libname$shared_ext' + # We do not specify a path in Import Files, so LIBPATH fires. + shlibpath_overrides_runpath=yes + ;; + *,yes) # both, prefer svr4 + dynamic_linker="AIX lib.so.V[(]$shared_archive_member_spec.o[)], lib.a[(]lib.so.V[)]" + library_names_spec='$libname$release$shared_ext$major $libname$shared_ext' + # unpreferred sharedlib libNAME.a needs extra handling + postinstall_cmds='test -n "$linkname" || linkname="$realname"~func_stripname "" ".so" "$linkname"~$install_shared_prog "$dir/$func_stripname_result.$libext" "$destdir/$func_stripname_result.$libext"~test -z "$tstripme" || test -z "$striplib" || $striplib "$destdir/$func_stripname_result.$libext"' + postuninstall_cmds='for n in $library_names $old_library; do :; done~func_stripname "" ".so" "$n"~test "$func_stripname_result" = "$n" || func_append rmfiles " $odir/$func_stripname_result.$libext"' + # We do not specify a path in Import Files, so LIBPATH fires. + shlibpath_overrides_runpath=yes + ;; + *,no) # both, prefer aix + dynamic_linker="AIX lib.a[(]lib.so.V[)], lib.so.V[(]$shared_archive_member_spec.o[)]" + library_names_spec='$libname$release.a $libname.a' + soname_spec='$libname$release$shared_ext$major' + # unpreferred sharedlib libNAME.so.V and symlink libNAME.so need extra handling + postinstall_cmds='test -z "$dlname" || $install_shared_prog $dir/$dlname $destdir/$dlname~test -z "$tstripme" || test -z "$striplib" || $striplib $destdir/$dlname~test -n "$linkname" || linkname=$realname~func_stripname "" ".a" "$linkname"~(cd "$destdir" && $LN_S -f $dlname $func_stripname_result.so)' + postuninstall_cmds='test -z "$dlname" || func_append rmfiles " $odir/$dlname"~for n in $old_library $library_names; do :; done~func_stripname "" ".a" "$n"~func_append rmfiles " $odir/$func_stripname_result.so"' + ;; + esac + shlibpath_var=LIBPATH + fi + ;; + +amigaos*) + case $host_cpu in + powerpc) + # Since July 2007 AmigaOS4 officially supports .so libraries. + # When compiling the executable, add -use-dynld -Lsobjs: to the compileline. + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + ;; + m68k) + library_names_spec='$libname.ixlibrary $libname.a' + # Create ${libname}_ixlibrary.a entries in /sys/libs. + finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([[^/]]*\)\.ixlibrary$%\1%'\''`; $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' + ;; + esac + ;; + +beos*) + library_names_spec='$libname$shared_ext' + dynamic_linker="$host_os ld.so" + shlibpath_var=LIBRARY_PATH + ;; + +bsdi[[45]]*) + version_type=linux # correct to gnu/linux during the next big refactor + need_version=no + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" + sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" + # the default ld.so.conf also contains /usr/contrib/lib and + # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow + # libtool to hard-code these into programs + ;; + +cygwin* | mingw* | pw32* | cegcc*) + version_type=windows + shrext_cmds=.dll + need_version=no + need_lib_prefix=no + + case $GCC,$cc_basename in + yes,*) + # gcc + library_names_spec='$libname.dll.a' + # DLL is installed to $(libdir)/../bin by postinstall_cmds + postinstall_cmds='base_file=`basename \$file`~ + dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; echo \$dlname'\''`~ + dldir=$destdir/`dirname \$dlpath`~ + test -d \$dldir || mkdir -p \$dldir~ + $install_prog $dir/$dlname \$dldir/$dlname~ + chmod a+x \$dldir/$dlname~ + if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then + eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; + fi' + postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ + dlpath=$dir/\$dldll~ + $RM \$dlpath' + shlibpath_overrides_runpath=yes + + case $host_os in + cygwin*) + # Cygwin DLLs use 'cyg' prefix rather than 'lib' + soname_spec='`echo $libname | sed -e 's/^lib/cyg/'``echo $release | $SED -e 's/[[.]]/-/g'`$versuffix$shared_ext' +m4_if([$1], [],[ + sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/lib/w32api"]) + ;; + mingw* | cegcc*) + # MinGW DLLs use traditional 'lib' prefix + soname_spec='$libname`echo $release | $SED -e 's/[[.]]/-/g'`$versuffix$shared_ext' + ;; + pw32*) + # pw32 DLLs use 'pw' prefix rather than 'lib' + library_names_spec='`echo $libname | sed -e 's/^lib/pw/'``echo $release | $SED -e 's/[[.]]/-/g'`$versuffix$shared_ext' + ;; + esac + dynamic_linker='Win32 ld.exe' + ;; + + *,cl*) + # Native MSVC + libname_spec='$name' + soname_spec='$libname`echo $release | $SED -e 's/[[.]]/-/g'`$versuffix$shared_ext' + library_names_spec='$libname.dll.lib' + + case $build_os in + mingw*) + sys_lib_search_path_spec= + lt_save_ifs=$IFS + IFS=';' + for lt_path in $LIB + do + IFS=$lt_save_ifs + # Let DOS variable expansion print the short 8.3 style file name. + lt_path=`cd "$lt_path" 2>/dev/null && cmd //C "for %i in (".") do @echo %~si"` + sys_lib_search_path_spec="$sys_lib_search_path_spec $lt_path" + done + IFS=$lt_save_ifs + # Convert to MSYS style. + sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | sed -e 's|\\\\|/|g' -e 's| \\([[a-zA-Z]]\\):| /\\1|g' -e 's|^ ||'` + ;; + cygwin*) + # Convert to unix form, then to dos form, then back to unix form + # but this time dos style (no spaces!) so that the unix form looks + # like /cygdrive/c/PROGRA~1:/cygdr... + sys_lib_search_path_spec=`cygpath --path --unix "$LIB"` + sys_lib_search_path_spec=`cygpath --path --dos "$sys_lib_search_path_spec" 2>/dev/null` + sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` + ;; + *) + sys_lib_search_path_spec=$LIB + if $ECHO "$sys_lib_search_path_spec" | [$GREP ';[c-zC-Z]:/' >/dev/null]; then + # It is most probably a Windows format PATH. + sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` + else + sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` + fi + # FIXME: find the short name or the path components, as spaces are + # common. (e.g. "Program Files" -> "PROGRA~1") + ;; + esac + + # DLL is installed to $(libdir)/../bin by postinstall_cmds + postinstall_cmds='base_file=`basename \$file`~ + dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; echo \$dlname'\''`~ + dldir=$destdir/`dirname \$dlpath`~ + test -d \$dldir || mkdir -p \$dldir~ + $install_prog $dir/$dlname \$dldir/$dlname' + postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ + dlpath=$dir/\$dldll~ + $RM \$dlpath' + shlibpath_overrides_runpath=yes + dynamic_linker='Win32 link.exe' + ;; + + *) + # Assume MSVC wrapper + library_names_spec='$libname`echo $release | $SED -e 's/[[.]]/-/g'`$versuffix$shared_ext $libname.lib' + dynamic_linker='Win32 ld.exe' + ;; + esac + # FIXME: first we should search . and the directory the executable is in + shlibpath_var=PATH + ;; + +darwin* | rhapsody*) + dynamic_linker="$host_os dyld" + version_type=darwin + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$major$shared_ext $libname$shared_ext' + soname_spec='$libname$release$major$shared_ext' + shlibpath_overrides_runpath=yes + shlibpath_var=DYLD_LIBRARY_PATH + shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' +m4_if([$1], [],[ + sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/local/lib"]) + sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' + ;; + +dgux*) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + shlibpath_var=LD_LIBRARY_PATH + ;; + +freebsd* | dragonfly*) + # DragonFly does not have aout. When/if they implement a new + # versioning mechanism, adjust this. + if test -x /usr/bin/objformat; then + objformat=`/usr/bin/objformat` + else + case $host_os in + freebsd[[23]].*) objformat=aout ;; + *) objformat=elf ;; + esac + fi + version_type=freebsd-$objformat + case $version_type in + freebsd-elf*) + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + need_version=no + need_lib_prefix=no + ;; + freebsd-*) + library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' + need_version=yes + ;; + esac + shlibpath_var=LD_LIBRARY_PATH + case $host_os in + freebsd2.*) + shlibpath_overrides_runpath=yes + ;; + freebsd3.[[01]]* | freebsdelf3.[[01]]*) + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + freebsd3.[[2-9]]* | freebsdelf3.[[2-9]]* | \ + freebsd4.[[0-5]] | freebsdelf4.[[0-5]] | freebsd4.1.1 | freebsdelf4.1.1) + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + *) # from 4.6 on, and DragonFly + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + esac + ;; + +haiku*) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + dynamic_linker="$host_os runtime_loader" + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + shlibpath_var=LIBRARY_PATH + shlibpath_overrides_runpath=no + sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib' + hardcode_into_libs=yes + ;; + +hpux9* | hpux10* | hpux11*) + # Give a soname corresponding to the major version so that dld.sl refuses to + # link against other versions. + version_type=sunos + need_lib_prefix=no + need_version=no + case $host_cpu in + ia64*) + shrext_cmds='.so' + hardcode_into_libs=yes + dynamic_linker="$host_os dld.so" + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + if test 32 = "$HPUX_IA64_MODE"; then + sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" + sys_lib_dlsearch_path_spec=/usr/lib/hpux32 + else + sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" + sys_lib_dlsearch_path_spec=/usr/lib/hpux64 + fi + ;; + hppa*64*) + shrext_cmds='.sl' + hardcode_into_libs=yes + dynamic_linker="$host_os dld.sl" + shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH + shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + ;; + *) + shrext_cmds='.sl' + dynamic_linker="$host_os dld.sl" + shlibpath_var=SHLIB_PATH + shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + ;; + esac + # HP-UX runs *really* slowly unless shared libraries are mode 555, ... + postinstall_cmds='chmod 555 $lib' + # or fails outright, so override atomically: + install_override_mode=555 + ;; + +interix[[3-9]]*) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + +irix5* | irix6* | nonstopux*) + case $host_os in + nonstopux*) version_type=nonstopux ;; + *) + if test yes = "$lt_cv_prog_gnu_ld"; then + version_type=linux # correct to gnu/linux during the next big refactor + else + version_type=irix + fi ;; + esac + need_lib_prefix=no + need_version=no + soname_spec='$libname$release$shared_ext$major' + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$release$shared_ext $libname$shared_ext' + case $host_os in + irix5* | nonstopux*) + libsuff= shlibsuff= + ;; + *) + case $LD in # libtool.m4 will add one of these switches to LD + *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") + libsuff= shlibsuff= libmagic=32-bit;; + *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") + libsuff=32 shlibsuff=N32 libmagic=N32;; + *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") + libsuff=64 shlibsuff=64 libmagic=64-bit;; + *) libsuff= shlibsuff= libmagic=never-match;; + esac + ;; + esac + shlibpath_var=LD_LIBRARY${shlibsuff}_PATH + shlibpath_overrides_runpath=no + sys_lib_search_path_spec="/usr/lib$libsuff /lib$libsuff /usr/local/lib$libsuff" + sys_lib_dlsearch_path_spec="/usr/lib$libsuff /lib$libsuff" + hardcode_into_libs=yes + ;; + +# No shared lib support for Linux oldld, aout, or coff. +linux*oldld* | linux*aout* | linux*coff*) + dynamic_linker=no + ;; + +linux*android*) + version_type=none # Android doesn't support versioned libraries. + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$shared_ext' + soname_spec='$libname$release$shared_ext' + finish_cmds= + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + + # This implies no fast_install, which is unacceptable. + # Some rework will be needed to allow for fast_install + # before this can be enabled. + hardcode_into_libs=yes + + dynamic_linker='Android linker' + # Don't embed -rpath directories since the linker doesn't support them. + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + ;; + +# This must be glibc/ELF. +linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + + # Some binutils ld are patched to set DT_RUNPATH + AC_CACHE_VAL([lt_cv_shlibpath_overrides_runpath], + [lt_cv_shlibpath_overrides_runpath=no + save_LDFLAGS=$LDFLAGS + save_libdir=$libdir + eval "libdir=/foo; wl=\"$_LT_TAGVAR(lt_prog_compiler_wl, $1)\"; \ + LDFLAGS=\"\$LDFLAGS $_LT_TAGVAR(hardcode_libdir_flag_spec, $1)\"" + AC_LINK_IFELSE([AC_LANG_PROGRAM([],[])], + [AS_IF([ ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null], + [lt_cv_shlibpath_overrides_runpath=yes])]) + LDFLAGS=$save_LDFLAGS + libdir=$save_libdir + ]) + shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath + + # This implies no fast_install, which is unacceptable. + # Some rework will be needed to allow for fast_install + # before this can be enabled. + hardcode_into_libs=yes + + # Ideally, we could use ldconfig to report *all* directores which are + # searched for libraries, however this is still not possible. Aside from not + # being certain /sbin/ldconfig is available, command + # 'ldconfig -N -X -v | grep ^/' on 64bit Fedora does not report /usr/lib64, + # even though it is searched at run-time. Try to do the best guess by + # appending ld.so.conf contents (and includes) to the search path. + if test -f /etc/ld.so.conf; then + lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \[$]2)); skip = 1; } { if (!skip) print \[$]0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '` + sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" + fi + + # We used to test for /lib/ld.so.1 and disable shared libraries on + # powerpc, because MkLinux only supported shared libraries with the + # GNU dynamic linker. Since this was broken with cross compilers, + # most powerpc-linux boxes support dynamic linking these days and + # people can always --disable-shared, the test was removed, and we + # assume the GNU/Linux dynamic linker is in use. + dynamic_linker='GNU/Linux ld.so' + ;; + +netbsdelf*-gnu) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + dynamic_linker='NetBSD ld.elf_so' + ;; + +netbsd*) + version_type=sunos + need_lib_prefix=no + need_version=no + if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then + library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + dynamic_linker='NetBSD (a.out) ld.so' + else + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + dynamic_linker='NetBSD ld.elf_so' + fi + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + +newsos6) + version_type=linux # correct to gnu/linux during the next big refactor + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + ;; + +*nto* | *qnx*) + version_type=qnx + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + dynamic_linker='ldqnx.so' + ;; + +openbsd* | bitrig*) + version_type=sunos + sys_lib_dlsearch_path_spec=/usr/lib + need_lib_prefix=no + if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then + need_version=no + else + need_version=yes + fi + library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + ;; + +os2*) + libname_spec='$name' + version_type=windows + shrext_cmds=.dll + need_version=no + need_lib_prefix=no + # OS/2 can only load a DLL with a base name of 8 characters or less. + soname_spec='`test -n "$os2dllname" && libname="$os2dllname"; + v=$($ECHO $release$versuffix | tr -d .-); + n=$($ECHO $libname | cut -b -$((8 - ${#v})) | tr . _); + $ECHO $n$v`$shared_ext' + library_names_spec='${libname}_dll.$libext' + dynamic_linker='OS/2 ld.exe' + shlibpath_var=BEGINLIBPATH + sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + postinstall_cmds='base_file=`basename \$file`~ + dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; $ECHO \$dlname'\''`~ + dldir=$destdir/`dirname \$dlpath`~ + test -d \$dldir || mkdir -p \$dldir~ + $install_prog $dir/$dlname \$dldir/$dlname~ + chmod a+x \$dldir/$dlname~ + if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then + eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; + fi' + postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; $ECHO \$dlname'\''`~ + dlpath=$dir/\$dldll~ + $RM \$dlpath' + ;; + +osf3* | osf4* | osf5*) + version_type=osf + need_lib_prefix=no + need_version=no + soname_spec='$libname$release$shared_ext$major' + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + shlibpath_var=LD_LIBRARY_PATH + sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + ;; + +rdos*) + dynamic_linker=no + ;; + +solaris*) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + # ldd complains unless libraries are executable + postinstall_cmds='chmod +x $lib' + ;; + +sunos4*) + version_type=sunos + library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' + finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + if test yes = "$with_gnu_ld"; then + need_lib_prefix=no + fi + need_version=yes + ;; + +sysv4 | sysv4.3*) + version_type=linux # correct to gnu/linux during the next big refactor + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + shlibpath_var=LD_LIBRARY_PATH + case $host_vendor in + sni) + shlibpath_overrides_runpath=no + need_lib_prefix=no + runpath_var=LD_RUN_PATH + ;; + siemens) + need_lib_prefix=no + ;; + motorola) + need_lib_prefix=no + need_version=no + shlibpath_overrides_runpath=no + sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' + ;; + esac + ;; + +sysv4*MP*) + if test -d /usr/nec; then + version_type=linux # correct to gnu/linux during the next big refactor + library_names_spec='$libname$shared_ext.$versuffix $libname$shared_ext.$major $libname$shared_ext' + soname_spec='$libname$shared_ext.$major' + shlibpath_var=LD_LIBRARY_PATH + fi + ;; + +sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) + version_type=sco + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + if test yes = "$with_gnu_ld"; then + sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' + else + sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' + case $host_os in + sco3.2v5*) + sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" + ;; + esac + fi + sys_lib_dlsearch_path_spec='/usr/lib' + ;; + +tpf*) + # TPF is a cross-target only. Preferred cross-host = GNU/Linux. + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + +uts4*) + version_type=linux # correct to gnu/linux during the next big refactor + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + shlibpath_var=LD_LIBRARY_PATH + ;; + +*) + dynamic_linker=no + ;; +esac +AC_MSG_RESULT([$dynamic_linker]) +test no = "$dynamic_linker" && can_build_shared=no + +variables_saved_for_relink="PATH $shlibpath_var $runpath_var" +if test yes = "$GCC"; then + variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" +fi + +if test set = "${lt_cv_sys_lib_search_path_spec+set}"; then + sys_lib_search_path_spec=$lt_cv_sys_lib_search_path_spec +fi + +if test set = "${lt_cv_sys_lib_dlsearch_path_spec+set}"; then + sys_lib_dlsearch_path_spec=$lt_cv_sys_lib_dlsearch_path_spec +fi + +# remember unaugmented sys_lib_dlsearch_path content for libtool script decls... +configure_time_dlsearch_path=$sys_lib_dlsearch_path_spec + +# ... but it needs LT_SYS_LIBRARY_PATH munging for other configure-time code +func_munge_path_list sys_lib_dlsearch_path_spec "$LT_SYS_LIBRARY_PATH" + +# to be used as default LT_SYS_LIBRARY_PATH value in generated libtool +configure_time_lt_sys_library_path=$LT_SYS_LIBRARY_PATH + +_LT_DECL([], [variables_saved_for_relink], [1], + [Variables whose values should be saved in libtool wrapper scripts and + restored at link time]) +_LT_DECL([], [need_lib_prefix], [0], + [Do we need the "lib" prefix for modules?]) +_LT_DECL([], [need_version], [0], [Do we need a version for libraries?]) +_LT_DECL([], [version_type], [0], [Library versioning type]) +_LT_DECL([], [runpath_var], [0], [Shared library runtime path variable]) +_LT_DECL([], [shlibpath_var], [0],[Shared library path variable]) +_LT_DECL([], [shlibpath_overrides_runpath], [0], + [Is shlibpath searched before the hard-coded library search path?]) +_LT_DECL([], [libname_spec], [1], [Format of library name prefix]) +_LT_DECL([], [library_names_spec], [1], + [[List of archive names. First name is the real one, the rest are links. + The last name is the one that the linker finds with -lNAME]]) +_LT_DECL([], [soname_spec], [1], + [[The coded name of the library, if different from the real name]]) +_LT_DECL([], [install_override_mode], [1], + [Permission mode override for installation of shared libraries]) +_LT_DECL([], [postinstall_cmds], [2], + [Command to use after installation of a shared archive]) +_LT_DECL([], [postuninstall_cmds], [2], + [Command to use after uninstallation of a shared archive]) +_LT_DECL([], [finish_cmds], [2], + [Commands used to finish a libtool library installation in a directory]) +_LT_DECL([], [finish_eval], [1], + [[As "finish_cmds", except a single script fragment to be evaled but + not shown]]) +_LT_DECL([], [hardcode_into_libs], [0], + [Whether we should hardcode library paths into libraries]) +_LT_DECL([], [sys_lib_search_path_spec], [2], + [Compile-time system search path for libraries]) +_LT_DECL([sys_lib_dlsearch_path_spec], [configure_time_dlsearch_path], [2], + [Detected run-time system search path for libraries]) +_LT_DECL([], [configure_time_lt_sys_library_path], [2], + [Explicit LT_SYS_LIBRARY_PATH set during ./configure time]) +])# _LT_SYS_DYNAMIC_LINKER + + +# _LT_PATH_TOOL_PREFIX(TOOL) +# -------------------------- +# find a file program that can recognize shared library +AC_DEFUN([_LT_PATH_TOOL_PREFIX], +[m4_require([_LT_DECL_EGREP])dnl +AC_MSG_CHECKING([for $1]) +AC_CACHE_VAL(lt_cv_path_MAGIC_CMD, +[case $MAGIC_CMD in +[[\\/*] | ?:[\\/]*]) + lt_cv_path_MAGIC_CMD=$MAGIC_CMD # Let the user override the test with a path. + ;; +*) + lt_save_MAGIC_CMD=$MAGIC_CMD + lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR +dnl $ac_dummy forces splitting on constant user-supplied paths. +dnl POSIX.2 word splitting is done only on the output of word expansions, +dnl not every word. This closes a longstanding sh security hole. + ac_dummy="m4_if([$2], , $PATH, [$2])" + for ac_dir in $ac_dummy; do + IFS=$lt_save_ifs + test -z "$ac_dir" && ac_dir=. + if test -f "$ac_dir/$1"; then + lt_cv_path_MAGIC_CMD=$ac_dir/"$1" + if test -n "$file_magic_test_file"; then + case $deplibs_check_method in + "file_magic "*) + file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` + MAGIC_CMD=$lt_cv_path_MAGIC_CMD + if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | + $EGREP "$file_magic_regex" > /dev/null; then + : + else + cat <<_LT_EOF 1>&2 + +*** Warning: the command libtool uses to detect shared libraries, +*** $file_magic_cmd, produces output that libtool cannot recognize. +*** The result is that libtool may fail to recognize shared libraries +*** as such. This will affect the creation of libtool libraries that +*** depend on shared libraries, but programs linked with such libtool +*** libraries will work regardless of this problem. Nevertheless, you +*** may want to report the problem to your system manager and/or to +*** bug-libtool@gnu.org + +_LT_EOF + fi ;; + esac + fi + break + fi + done + IFS=$lt_save_ifs + MAGIC_CMD=$lt_save_MAGIC_CMD + ;; +esac]) +MAGIC_CMD=$lt_cv_path_MAGIC_CMD +if test -n "$MAGIC_CMD"; then + AC_MSG_RESULT($MAGIC_CMD) +else + AC_MSG_RESULT(no) +fi +_LT_DECL([], [MAGIC_CMD], [0], + [Used to examine libraries when file_magic_cmd begins with "file"])dnl +])# _LT_PATH_TOOL_PREFIX + +# Old name: +AU_ALIAS([AC_PATH_TOOL_PREFIX], [_LT_PATH_TOOL_PREFIX]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_PATH_TOOL_PREFIX], []) + + +# _LT_PATH_MAGIC +# -------------- +# find a file program that can recognize a shared library +m4_defun([_LT_PATH_MAGIC], +[_LT_PATH_TOOL_PREFIX(${ac_tool_prefix}file, /usr/bin$PATH_SEPARATOR$PATH) +if test -z "$lt_cv_path_MAGIC_CMD"; then + if test -n "$ac_tool_prefix"; then + _LT_PATH_TOOL_PREFIX(file, /usr/bin$PATH_SEPARATOR$PATH) + else + MAGIC_CMD=: + fi +fi +])# _LT_PATH_MAGIC + + +# LT_PATH_LD +# ---------- +# find the pathname to the GNU or non-GNU linker +AC_DEFUN([LT_PATH_LD], +[AC_REQUIRE([AC_PROG_CC])dnl +AC_REQUIRE([AC_CANONICAL_HOST])dnl +AC_REQUIRE([AC_CANONICAL_BUILD])dnl +m4_require([_LT_DECL_SED])dnl +m4_require([_LT_DECL_EGREP])dnl +m4_require([_LT_PROG_ECHO_BACKSLASH])dnl + +AC_ARG_WITH([gnu-ld], + [AS_HELP_STRING([--with-gnu-ld], + [assume the C compiler uses GNU ld @<:@default=no@:>@])], + [test no = "$withval" || with_gnu_ld=yes], + [with_gnu_ld=no])dnl + +ac_prog=ld +if test yes = "$GCC"; then + # Check if gcc -print-prog-name=ld gives a path. + AC_MSG_CHECKING([for ld used by $CC]) + case $host in + *-*-mingw*) + # gcc leaves a trailing carriage return, which upsets mingw + ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; + *) + ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; + esac + case $ac_prog in + # Accept absolute paths. + [[\\/]]* | ?:[[\\/]]*) + re_direlt='/[[^/]][[^/]]*/\.\./' + # Canonicalize the pathname of ld + ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'` + while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do + ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"` + done + test -z "$LD" && LD=$ac_prog + ;; + "") + # If it fails, then pretend we aren't using GCC. + ac_prog=ld + ;; + *) + # If it is relative, then search for the first ld in PATH. + with_gnu_ld=unknown + ;; + esac +elif test yes = "$with_gnu_ld"; then + AC_MSG_CHECKING([for GNU ld]) +else + AC_MSG_CHECKING([for non-GNU ld]) +fi +AC_CACHE_VAL(lt_cv_path_LD, +[if test -z "$LD"; then + lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR + for ac_dir in $PATH; do + IFS=$lt_save_ifs + test -z "$ac_dir" && ac_dir=. + if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then + lt_cv_path_LD=$ac_dir/$ac_prog + # Check to see if the program is GNU ld. I'd rather use --version, + # but apparently some variants of GNU ld only accept -v. + # Break only if it was the GNU/non-GNU ld that we prefer. + case `"$lt_cv_path_LD" -v 2>&1 &1 conftest.i +cat conftest.i conftest.i >conftest2.i +: ${lt_DD:=$DD} +AC_PATH_PROGS_FEATURE_CHECK([lt_DD], [dd], +[if "$ac_path_lt_DD" bs=32 count=1 conftest.out 2>/dev/null; then + cmp -s conftest.i conftest.out \ + && ac_cv_path_lt_DD="$ac_path_lt_DD" ac_path_lt_DD_found=: +fi]) +rm -f conftest.i conftest2.i conftest.out]) +])# _LT_PATH_DD + + +# _LT_CMD_TRUNCATE +# ---------------- +# find command to truncate a binary pipe +m4_defun([_LT_CMD_TRUNCATE], +[m4_require([_LT_PATH_DD]) +AC_CACHE_CHECK([how to truncate binary pipes], [lt_cv_truncate_bin], +[printf 0123456789abcdef0123456789abcdef >conftest.i +cat conftest.i conftest.i >conftest2.i +lt_cv_truncate_bin= +if "$ac_cv_path_lt_DD" bs=32 count=1 conftest.out 2>/dev/null; then + cmp -s conftest.i conftest.out \ + && lt_cv_truncate_bin="$ac_cv_path_lt_DD bs=4096 count=1" +fi +rm -f conftest.i conftest2.i conftest.out +test -z "$lt_cv_truncate_bin" && lt_cv_truncate_bin="$SED -e 4q"]) +_LT_DECL([lt_truncate_bin], [lt_cv_truncate_bin], [1], + [Command to truncate a binary pipe]) +])# _LT_CMD_TRUNCATE + + +# _LT_CHECK_MAGIC_METHOD +# ---------------------- +# how to check for library dependencies +# -- PORTME fill in with the dynamic library characteristics +m4_defun([_LT_CHECK_MAGIC_METHOD], +[m4_require([_LT_DECL_EGREP]) +m4_require([_LT_DECL_OBJDUMP]) +AC_CACHE_CHECK([how to recognize dependent libraries], +lt_cv_deplibs_check_method, +[lt_cv_file_magic_cmd='$MAGIC_CMD' +lt_cv_file_magic_test_file= +lt_cv_deplibs_check_method='unknown' +# Need to set the preceding variable on all platforms that support +# interlibrary dependencies. +# 'none' -- dependencies not supported. +# 'unknown' -- same as none, but documents that we really don't know. +# 'pass_all' -- all dependencies passed with no checks. +# 'test_compile' -- check by making test program. +# 'file_magic [[regex]]' -- check by looking for files in library path +# that responds to the $file_magic_cmd with a given extended regex. +# If you have 'file' or equivalent on your system and you're not sure +# whether 'pass_all' will *always* work, you probably want this one. + +case $host_os in +aix[[4-9]]*) + lt_cv_deplibs_check_method=pass_all + ;; + +beos*) + lt_cv_deplibs_check_method=pass_all + ;; + +bsdi[[45]]*) + lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (shared object|dynamic lib)' + lt_cv_file_magic_cmd='/usr/bin/file -L' + lt_cv_file_magic_test_file=/shlib/libc.so + ;; + +cygwin*) + # func_win32_libid is a shell function defined in ltmain.sh + lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' + lt_cv_file_magic_cmd='func_win32_libid' + ;; + +mingw* | pw32*) + # Base MSYS/MinGW do not provide the 'file' command needed by + # func_win32_libid shell function, so use a weaker test based on 'objdump', + # unless we find 'file', for example because we are cross-compiling. + if ( file / ) >/dev/null 2>&1; then + lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' + lt_cv_file_magic_cmd='func_win32_libid' + else + # Keep this pattern in sync with the one in func_win32_libid. + lt_cv_deplibs_check_method='file_magic file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)' + lt_cv_file_magic_cmd='$OBJDUMP -f' + fi + ;; + +cegcc*) + # use the weaker test based on 'objdump'. See mingw*. + lt_cv_deplibs_check_method='file_magic file format pe-arm-.*little(.*architecture: arm)?' + lt_cv_file_magic_cmd='$OBJDUMP -f' + ;; + +darwin* | rhapsody*) + lt_cv_deplibs_check_method=pass_all + ;; + +freebsd* | dragonfly*) + if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then + case $host_cpu in + i*86 ) + # Not sure whether the presence of OpenBSD here was a mistake. + # Let's accept both of them until this is cleared up. + lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[[3-9]]86 (compact )?demand paged shared library' + lt_cv_file_magic_cmd=/usr/bin/file + lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` + ;; + esac + else + lt_cv_deplibs_check_method=pass_all + fi + ;; + +haiku*) + lt_cv_deplibs_check_method=pass_all + ;; + +hpux10.20* | hpux11*) + lt_cv_file_magic_cmd=/usr/bin/file + case $host_cpu in + ia64*) + lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|ELF-[[0-9]][[0-9]]) shared object file - IA64' + lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so + ;; + hppa*64*) + [lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF[ -][0-9][0-9])(-bit)?( [LM]SB)? shared object( file)?[, -]* PA-RISC [0-9]\.[0-9]'] + lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl + ;; + *) + lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|PA-RISC[[0-9]]\.[[0-9]]) shared library' + lt_cv_file_magic_test_file=/usr/lib/libc.sl + ;; + esac + ;; + +interix[[3-9]]*) + # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here + lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|\.a)$' + ;; + +irix5* | irix6* | nonstopux*) + case $LD in + *-32|*"-32 ") libmagic=32-bit;; + *-n32|*"-n32 ") libmagic=N32;; + *-64|*"-64 ") libmagic=64-bit;; + *) libmagic=never-match;; + esac + lt_cv_deplibs_check_method=pass_all + ;; + +# This must be glibc/ELF. +linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) + lt_cv_deplibs_check_method=pass_all + ;; + +netbsd* | netbsdelf*-gnu) + if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then + lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$' + else + lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|_pic\.a)$' + fi + ;; + +newos6*) + lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (executable|dynamic lib)' + lt_cv_file_magic_cmd=/usr/bin/file + lt_cv_file_magic_test_file=/usr/lib/libnls.so + ;; + +*nto* | *qnx*) + lt_cv_deplibs_check_method=pass_all + ;; + +openbsd* | bitrig*) + if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then + lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|\.so|_pic\.a)$' + else + lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$' + fi + ;; + +osf3* | osf4* | osf5*) + lt_cv_deplibs_check_method=pass_all + ;; + +rdos*) + lt_cv_deplibs_check_method=pass_all + ;; + +solaris*) + lt_cv_deplibs_check_method=pass_all + ;; + +sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) + lt_cv_deplibs_check_method=pass_all + ;; + +sysv4 | sysv4.3*) + case $host_vendor in + motorola) + lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (shared object|dynamic lib) M[[0-9]][[0-9]]* Version [[0-9]]' + lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*` + ;; + ncr) + lt_cv_deplibs_check_method=pass_all + ;; + sequent) + lt_cv_file_magic_cmd='/bin/file' + lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB (shared object|dynamic lib )' + ;; + sni) + lt_cv_file_magic_cmd='/bin/file' + lt_cv_deplibs_check_method="file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB dynamic lib" + lt_cv_file_magic_test_file=/lib/libc.so + ;; + siemens) + lt_cv_deplibs_check_method=pass_all + ;; + pc) + lt_cv_deplibs_check_method=pass_all + ;; + esac + ;; + +tpf*) + lt_cv_deplibs_check_method=pass_all + ;; +os2*) + lt_cv_deplibs_check_method=pass_all + ;; +esac +]) + +file_magic_glob= +want_nocaseglob=no +if test "$build" = "$host"; then + case $host_os in + mingw* | pw32*) + if ( shopt | grep nocaseglob ) >/dev/null 2>&1; then + want_nocaseglob=yes + else + file_magic_glob=`echo aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ | $SED -e "s/\(..\)/s\/[[\1]]\/[[\1]]\/g;/g"` + fi + ;; + esac +fi + +file_magic_cmd=$lt_cv_file_magic_cmd +deplibs_check_method=$lt_cv_deplibs_check_method +test -z "$deplibs_check_method" && deplibs_check_method=unknown + +_LT_DECL([], [deplibs_check_method], [1], + [Method to check whether dependent libraries are shared objects]) +_LT_DECL([], [file_magic_cmd], [1], + [Command to use when deplibs_check_method = "file_magic"]) +_LT_DECL([], [file_magic_glob], [1], + [How to find potential files when deplibs_check_method = "file_magic"]) +_LT_DECL([], [want_nocaseglob], [1], + [Find potential files using nocaseglob when deplibs_check_method = "file_magic"]) +])# _LT_CHECK_MAGIC_METHOD + + +# LT_PATH_NM +# ---------- +# find the pathname to a BSD- or MS-compatible name lister +AC_DEFUN([LT_PATH_NM], +[AC_REQUIRE([AC_PROG_CC])dnl +AC_CACHE_CHECK([for BSD- or MS-compatible name lister (nm)], lt_cv_path_NM, +[if test -n "$NM"; then + # Let the user override the test. + lt_cv_path_NM=$NM +else + lt_nm_to_check=${ac_tool_prefix}nm + if test -n "$ac_tool_prefix" && test "$build" = "$host"; then + lt_nm_to_check="$lt_nm_to_check nm" + fi + for lt_tmp_nm in $lt_nm_to_check; do + lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR + for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do + IFS=$lt_save_ifs + test -z "$ac_dir" && ac_dir=. + tmp_nm=$ac_dir/$lt_tmp_nm + if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext"; then + # Check to see if the nm accepts a BSD-compat flag. + # Adding the 'sed 1q' prevents false positives on HP-UX, which says: + # nm: unknown option "B" ignored + # Tru64's nm complains that /dev/null is an invalid object file + # MSYS converts /dev/null to NUL, MinGW nm treats NUL as empty + case $build_os in + mingw*) lt_bad_file=conftest.nm/nofile ;; + *) lt_bad_file=/dev/null ;; + esac + case `"$tmp_nm" -B $lt_bad_file 2>&1 | sed '1q'` in + *$lt_bad_file* | *'Invalid file or object type'*) + lt_cv_path_NM="$tmp_nm -B" + break 2 + ;; + *) + case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in + */dev/null*) + lt_cv_path_NM="$tmp_nm -p" + break 2 + ;; + *) + lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but + continue # so that we can try to find one that supports BSD flags + ;; + esac + ;; + esac + fi + done + IFS=$lt_save_ifs + done + : ${lt_cv_path_NM=no} +fi]) +if test no != "$lt_cv_path_NM"; then + NM=$lt_cv_path_NM +else + # Didn't find any BSD compatible name lister, look for dumpbin. + if test -n "$DUMPBIN"; then : + # Let the user override the test. + else + AC_CHECK_TOOLS(DUMPBIN, [dumpbin "link -dump"], :) + case `$DUMPBIN -symbols -headers /dev/null 2>&1 | sed '1q'` in + *COFF*) + DUMPBIN="$DUMPBIN -symbols -headers" + ;; + *) + DUMPBIN=: + ;; + esac + fi + AC_SUBST([DUMPBIN]) + if test : != "$DUMPBIN"; then + NM=$DUMPBIN + fi +fi +test -z "$NM" && NM=nm +AC_SUBST([NM]) +_LT_DECL([], [NM], [1], [A BSD- or MS-compatible name lister])dnl + +AC_CACHE_CHECK([the name lister ($NM) interface], [lt_cv_nm_interface], + [lt_cv_nm_interface="BSD nm" + echo "int some_variable = 0;" > conftest.$ac_ext + (eval echo "\"\$as_me:$LINENO: $ac_compile\"" >&AS_MESSAGE_LOG_FD) + (eval "$ac_compile" 2>conftest.err) + cat conftest.err >&AS_MESSAGE_LOG_FD + (eval echo "\"\$as_me:$LINENO: $NM \\\"conftest.$ac_objext\\\"\"" >&AS_MESSAGE_LOG_FD) + (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out) + cat conftest.err >&AS_MESSAGE_LOG_FD + (eval echo "\"\$as_me:$LINENO: output\"" >&AS_MESSAGE_LOG_FD) + cat conftest.out >&AS_MESSAGE_LOG_FD + if $GREP 'External.*some_variable' conftest.out > /dev/null; then + lt_cv_nm_interface="MS dumpbin" + fi + rm -f conftest*]) +])# LT_PATH_NM + +# Old names: +AU_ALIAS([AM_PROG_NM], [LT_PATH_NM]) +AU_ALIAS([AC_PROG_NM], [LT_PATH_NM]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AM_PROG_NM], []) +dnl AC_DEFUN([AC_PROG_NM], []) + +# _LT_CHECK_SHAREDLIB_FROM_LINKLIB +# -------------------------------- +# how to determine the name of the shared library +# associated with a specific link library. +# -- PORTME fill in with the dynamic library characteristics +m4_defun([_LT_CHECK_SHAREDLIB_FROM_LINKLIB], +[m4_require([_LT_DECL_EGREP]) +m4_require([_LT_DECL_OBJDUMP]) +m4_require([_LT_DECL_DLLTOOL]) +AC_CACHE_CHECK([how to associate runtime and link libraries], +lt_cv_sharedlib_from_linklib_cmd, +[lt_cv_sharedlib_from_linklib_cmd='unknown' + +case $host_os in +cygwin* | mingw* | pw32* | cegcc*) + # two different shell functions defined in ltmain.sh; + # decide which one to use based on capabilities of $DLLTOOL + case `$DLLTOOL --help 2>&1` in + *--identify-strict*) + lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib + ;; + *) + lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib_fallback + ;; + esac + ;; +*) + # fallback: assume linklib IS sharedlib + lt_cv_sharedlib_from_linklib_cmd=$ECHO + ;; +esac +]) +sharedlib_from_linklib_cmd=$lt_cv_sharedlib_from_linklib_cmd +test -z "$sharedlib_from_linklib_cmd" && sharedlib_from_linklib_cmd=$ECHO + +_LT_DECL([], [sharedlib_from_linklib_cmd], [1], + [Command to associate shared and link libraries]) +])# _LT_CHECK_SHAREDLIB_FROM_LINKLIB + + +# _LT_PATH_MANIFEST_TOOL +# ---------------------- +# locate the manifest tool +m4_defun([_LT_PATH_MANIFEST_TOOL], +[AC_CHECK_TOOL(MANIFEST_TOOL, mt, :) +test -z "$MANIFEST_TOOL" && MANIFEST_TOOL=mt +AC_CACHE_CHECK([if $MANIFEST_TOOL is a manifest tool], [lt_cv_path_mainfest_tool], + [lt_cv_path_mainfest_tool=no + echo "$as_me:$LINENO: $MANIFEST_TOOL '-?'" >&AS_MESSAGE_LOG_FD + $MANIFEST_TOOL '-?' 2>conftest.err > conftest.out + cat conftest.err >&AS_MESSAGE_LOG_FD + if $GREP 'Manifest Tool' conftest.out > /dev/null; then + lt_cv_path_mainfest_tool=yes + fi + rm -f conftest*]) +if test yes != "$lt_cv_path_mainfest_tool"; then + MANIFEST_TOOL=: +fi +_LT_DECL([], [MANIFEST_TOOL], [1], [Manifest tool])dnl +])# _LT_PATH_MANIFEST_TOOL + + +# _LT_DLL_DEF_P([FILE]) +# --------------------- +# True iff FILE is a Windows DLL '.def' file. +# Keep in sync with func_dll_def_p in the libtool script +AC_DEFUN([_LT_DLL_DEF_P], +[dnl + test DEF = "`$SED -n dnl + -e '\''s/^[[ ]]*//'\'' dnl Strip leading whitespace + -e '\''/^\(;.*\)*$/d'\'' dnl Delete empty lines and comments + -e '\''s/^\(EXPORTS\|LIBRARY\)\([[ ]].*\)*$/DEF/p'\'' dnl + -e q dnl Only consider the first "real" line + $1`" dnl +])# _LT_DLL_DEF_P + + +# LT_LIB_M +# -------- +# check for math library +AC_DEFUN([LT_LIB_M], +[AC_REQUIRE([AC_CANONICAL_HOST])dnl +LIBM= +case $host in +*-*-beos* | *-*-cegcc* | *-*-cygwin* | *-*-haiku* | *-*-pw32* | *-*-darwin*) + # These system don't have libm, or don't need it + ;; +*-ncr-sysv4.3*) + AC_CHECK_LIB(mw, _mwvalidcheckl, LIBM=-lmw) + AC_CHECK_LIB(m, cos, LIBM="$LIBM -lm") + ;; +*) + AC_CHECK_LIB(m, cos, LIBM=-lm) + ;; +esac +AC_SUBST([LIBM]) +])# LT_LIB_M + +# Old name: +AU_ALIAS([AC_CHECK_LIBM], [LT_LIB_M]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_CHECK_LIBM], []) + + +# _LT_COMPILER_NO_RTTI([TAGNAME]) +# ------------------------------- +m4_defun([_LT_COMPILER_NO_RTTI], +[m4_require([_LT_TAG_COMPILER])dnl + +_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)= + +if test yes = "$GCC"; then + case $cc_basename in + nvcc*) + _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -Xcompiler -fno-builtin' ;; + *) + _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin' ;; + esac + + _LT_COMPILER_OPTION([if $compiler supports -fno-rtti -fno-exceptions], + lt_cv_prog_compiler_rtti_exceptions, + [-fno-rtti -fno-exceptions], [], + [_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)="$_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1) -fno-rtti -fno-exceptions"]) +fi +_LT_TAGDECL([no_builtin_flag], [lt_prog_compiler_no_builtin_flag], [1], + [Compiler flag to turn off builtin functions]) +])# _LT_COMPILER_NO_RTTI + + +# _LT_CMD_GLOBAL_SYMBOLS +# ---------------------- +m4_defun([_LT_CMD_GLOBAL_SYMBOLS], +[AC_REQUIRE([AC_CANONICAL_HOST])dnl +AC_REQUIRE([AC_PROG_CC])dnl +AC_REQUIRE([AC_PROG_AWK])dnl +AC_REQUIRE([LT_PATH_NM])dnl +AC_REQUIRE([LT_PATH_LD])dnl +m4_require([_LT_DECL_SED])dnl +m4_require([_LT_DECL_EGREP])dnl +m4_require([_LT_TAG_COMPILER])dnl + +# Check for command to grab the raw symbol name followed by C symbol from nm. +AC_MSG_CHECKING([command to parse $NM output from $compiler object]) +AC_CACHE_VAL([lt_cv_sys_global_symbol_pipe], +[ +# These are sane defaults that work on at least a few old systems. +# [They come from Ultrix. What could be older than Ultrix?!! ;)] + +# Character class describing NM global symbol codes. +symcode='[[BCDEGRST]]' + +# Regexp to match symbols that can be accessed directly from C. +sympat='\([[_A-Za-z]][[_A-Za-z0-9]]*\)' + +# Define system-specific variables. +case $host_os in +aix*) + symcode='[[BCDT]]' + ;; +cygwin* | mingw* | pw32* | cegcc*) + symcode='[[ABCDGISTW]]' + ;; +hpux*) + if test ia64 = "$host_cpu"; then + symcode='[[ABCDEGRST]]' + fi + ;; +irix* | nonstopux*) + symcode='[[BCDEGRST]]' + ;; +osf*) + symcode='[[BCDEGQRST]]' + ;; +solaris*) + symcode='[[BDRT]]' + ;; +sco3.2v5*) + symcode='[[DT]]' + ;; +sysv4.2uw2*) + symcode='[[DT]]' + ;; +sysv5* | sco5v6* | unixware* | OpenUNIX*) + symcode='[[ABDT]]' + ;; +sysv4) + symcode='[[DFNSTU]]' + ;; +esac + +# If we're using GNU nm, then use its standard symbol codes. +case `$NM -V 2>&1` in +*GNU* | *'with BFD'*) + symcode='[[ABCDGIRSTW]]' ;; +esac + +if test "$lt_cv_nm_interface" = "MS dumpbin"; then + # Gets list of data symbols to import. + lt_cv_sys_global_symbol_to_import="sed -n -e 's/^I .* \(.*\)$/\1/p'" + # Adjust the below global symbol transforms to fixup imported variables. + lt_cdecl_hook=" -e 's/^I .* \(.*\)$/extern __declspec(dllimport) char \1;/p'" + lt_c_name_hook=" -e 's/^I .* \(.*\)$/ {\"\1\", (void *) 0},/p'" + lt_c_name_lib_hook="\ + -e 's/^I .* \(lib.*\)$/ {\"\1\", (void *) 0},/p'\ + -e 's/^I .* \(.*\)$/ {\"lib\1\", (void *) 0},/p'" +else + # Disable hooks by default. + lt_cv_sys_global_symbol_to_import= + lt_cdecl_hook= + lt_c_name_hook= + lt_c_name_lib_hook= +fi + +# Transform an extracted symbol line into a proper C declaration. +# Some systems (esp. on ia64) link data and code symbols differently, +# so use this general approach. +lt_cv_sys_global_symbol_to_cdecl="sed -n"\ +$lt_cdecl_hook\ +" -e 's/^T .* \(.*\)$/extern int \1();/p'"\ +" -e 's/^$symcode$symcode* .* \(.*\)$/extern char \1;/p'" + +# Transform an extracted symbol line into symbol name and symbol address +lt_cv_sys_global_symbol_to_c_name_address="sed -n"\ +$lt_c_name_hook\ +" -e 's/^: \(.*\) .*$/ {\"\1\", (void *) 0},/p'"\ +" -e 's/^$symcode$symcode* .* \(.*\)$/ {\"\1\", (void *) \&\1},/p'" + +# Transform an extracted symbol line into symbol name with lib prefix and +# symbol address. +lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n"\ +$lt_c_name_lib_hook\ +" -e 's/^: \(.*\) .*$/ {\"\1\", (void *) 0},/p'"\ +" -e 's/^$symcode$symcode* .* \(lib.*\)$/ {\"\1\", (void *) \&\1},/p'"\ +" -e 's/^$symcode$symcode* .* \(.*\)$/ {\"lib\1\", (void *) \&\1},/p'" + +# Handle CRLF in mingw tool chain +opt_cr= +case $build_os in +mingw*) + opt_cr=`$ECHO 'x\{0,1\}' | tr x '\015'` # option cr in regexp + ;; +esac + +# Try without a prefix underscore, then with it. +for ac_symprfx in "" "_"; do + + # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol. + symxfrm="\\1 $ac_symprfx\\2 \\2" + + # Write the raw and C identifiers. + if test "$lt_cv_nm_interface" = "MS dumpbin"; then + # Fake it for dumpbin and say T for any non-static function, + # D for any global variable and I for any imported variable. + # Also find C++ and __fastcall symbols from MSVC++, + # which start with @ or ?. + lt_cv_sys_global_symbol_pipe="$AWK ['"\ +" {last_section=section; section=\$ 3};"\ +" /^COFF SYMBOL TABLE/{for(i in hide) delete hide[i]};"\ +" /Section length .*#relocs.*(pick any)/{hide[last_section]=1};"\ +" /^ *Symbol name *: /{split(\$ 0,sn,\":\"); si=substr(sn[2],2)};"\ +" /^ *Type *: code/{print \"T\",si,substr(si,length(prfx))};"\ +" /^ *Type *: data/{print \"I\",si,substr(si,length(prfx))};"\ +" \$ 0!~/External *\|/{next};"\ +" / 0+ UNDEF /{next}; / UNDEF \([^|]\)*()/{next};"\ +" {if(hide[section]) next};"\ +" {f=\"D\"}; \$ 0~/\(\).*\|/{f=\"T\"};"\ +" {split(\$ 0,a,/\||\r/); split(a[2],s)};"\ +" s[1]~/^[@?]/{print f,s[1],s[1]; next};"\ +" s[1]~prfx {split(s[1],t,\"@\"); print f,t[1],substr(t[1],length(prfx))}"\ +" ' prfx=^$ac_symprfx]" + else + lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[[ ]]\($symcode$symcode*\)[[ ]][[ ]]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'" + fi + lt_cv_sys_global_symbol_pipe="$lt_cv_sys_global_symbol_pipe | sed '/ __gnu_lto/d'" + + # Check to see that the pipe works correctly. + pipe_works=no + + rm -f conftest* + cat > conftest.$ac_ext <<_LT_EOF +#ifdef __cplusplus +extern "C" { +#endif +char nm_test_var; +void nm_test_func(void); +void nm_test_func(void){} +#ifdef __cplusplus +} +#endif +int main(){nm_test_var='a';nm_test_func();return(0);} +_LT_EOF + + if AC_TRY_EVAL(ac_compile); then + # Now try to grab the symbols. + nlist=conftest.nm + if AC_TRY_EVAL(NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist) && test -s "$nlist"; then + # Try sorting and uniquifying the output. + if sort "$nlist" | uniq > "$nlist"T; then + mv -f "$nlist"T "$nlist" + else + rm -f "$nlist"T + fi + + # Make sure that we snagged all the symbols we need. + if $GREP ' nm_test_var$' "$nlist" >/dev/null; then + if $GREP ' nm_test_func$' "$nlist" >/dev/null; then + cat <<_LT_EOF > conftest.$ac_ext +/* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests. */ +#if defined _WIN32 || defined __CYGWIN__ || defined _WIN32_WCE +/* DATA imports from DLLs on WIN32 can't be const, because runtime + relocations are performed -- see ld's documentation on pseudo-relocs. */ +# define LT@&t@_DLSYM_CONST +#elif defined __osf__ +/* This system does not cope well with relocations in const data. */ +# define LT@&t@_DLSYM_CONST +#else +# define LT@&t@_DLSYM_CONST const +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +_LT_EOF + # Now generate the symbol file. + eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | $GREP -v main >> conftest.$ac_ext' + + cat <<_LT_EOF >> conftest.$ac_ext + +/* The mapping between symbol names and symbols. */ +LT@&t@_DLSYM_CONST struct { + const char *name; + void *address; +} +lt__PROGRAM__LTX_preloaded_symbols[[]] = +{ + { "@PROGRAM@", (void *) 0 }, +_LT_EOF + $SED "s/^$symcode$symcode* .* \(.*\)$/ {\"\1\", (void *) \&\1},/" < "$nlist" | $GREP -v main >> conftest.$ac_ext + cat <<\_LT_EOF >> conftest.$ac_ext + {0, (void *) 0} +}; + +/* This works around a problem in FreeBSD linker */ +#ifdef FREEBSD_WORKAROUND +static const void *lt_preloaded_setup() { + return lt__PROGRAM__LTX_preloaded_symbols; +} +#endif + +#ifdef __cplusplus +} +#endif +_LT_EOF + # Now try linking the two files. + mv conftest.$ac_objext conftstm.$ac_objext + lt_globsym_save_LIBS=$LIBS + lt_globsym_save_CFLAGS=$CFLAGS + LIBS=conftstm.$ac_objext + CFLAGS="$CFLAGS$_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)" + if AC_TRY_EVAL(ac_link) && test -s conftest$ac_exeext; then + pipe_works=yes + fi + LIBS=$lt_globsym_save_LIBS + CFLAGS=$lt_globsym_save_CFLAGS + else + echo "cannot find nm_test_func in $nlist" >&AS_MESSAGE_LOG_FD + fi + else + echo "cannot find nm_test_var in $nlist" >&AS_MESSAGE_LOG_FD + fi + else + echo "cannot run $lt_cv_sys_global_symbol_pipe" >&AS_MESSAGE_LOG_FD + fi + else + echo "$progname: failed program was:" >&AS_MESSAGE_LOG_FD + cat conftest.$ac_ext >&5 + fi + rm -rf conftest* conftst* + + # Do not use the global_symbol_pipe unless it works. + if test yes = "$pipe_works"; then + break + else + lt_cv_sys_global_symbol_pipe= + fi +done +]) +if test -z "$lt_cv_sys_global_symbol_pipe"; then + lt_cv_sys_global_symbol_to_cdecl= +fi +if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then + AC_MSG_RESULT(failed) +else + AC_MSG_RESULT(ok) +fi + +# Response file support. +if test "$lt_cv_nm_interface" = "MS dumpbin"; then + nm_file_list_spec='@' +elif $NM --help 2>/dev/null | grep '[[@]]FILE' >/dev/null; then + nm_file_list_spec='@' +fi + +_LT_DECL([global_symbol_pipe], [lt_cv_sys_global_symbol_pipe], [1], + [Take the output of nm and produce a listing of raw symbols and C names]) +_LT_DECL([global_symbol_to_cdecl], [lt_cv_sys_global_symbol_to_cdecl], [1], + [Transform the output of nm in a proper C declaration]) +_LT_DECL([global_symbol_to_import], [lt_cv_sys_global_symbol_to_import], [1], + [Transform the output of nm into a list of symbols to manually relocate]) +_LT_DECL([global_symbol_to_c_name_address], + [lt_cv_sys_global_symbol_to_c_name_address], [1], + [Transform the output of nm in a C name address pair]) +_LT_DECL([global_symbol_to_c_name_address_lib_prefix], + [lt_cv_sys_global_symbol_to_c_name_address_lib_prefix], [1], + [Transform the output of nm in a C name address pair when lib prefix is needed]) +_LT_DECL([nm_interface], [lt_cv_nm_interface], [1], + [The name lister interface]) +_LT_DECL([], [nm_file_list_spec], [1], + [Specify filename containing input files for $NM]) +]) # _LT_CMD_GLOBAL_SYMBOLS + + +# _LT_COMPILER_PIC([TAGNAME]) +# --------------------------- +m4_defun([_LT_COMPILER_PIC], +[m4_require([_LT_TAG_COMPILER])dnl +_LT_TAGVAR(lt_prog_compiler_wl, $1)= +_LT_TAGVAR(lt_prog_compiler_pic, $1)= +_LT_TAGVAR(lt_prog_compiler_static, $1)= + +m4_if([$1], [CXX], [ + # C++ specific cases for pic, static, wl, etc. + if test yes = "$GXX"; then + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' + + case $host_os in + aix*) + # All AIX code is PIC. + if test ia64 = "$host_cpu"; then + # AIX 5 now supports IA64 processor + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + fi + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + ;; + + amigaos*) + case $host_cpu in + powerpc) + # see comment about AmigaOS4 .so support + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + ;; + m68k) + # FIXME: we need at least 68020 code to build shared libraries, but + # adding the '-m68020' flag to GCC prevents building anything better, + # like '-m68040'. + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4' + ;; + esac + ;; + + beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) + # PIC is the default for these OSes. + ;; + mingw* | cygwin* | os2* | pw32* | cegcc*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + # Although the cygwin gcc ignores -fPIC, still need this for old-style + # (--disable-auto-import) libraries + m4_if([$1], [GCJ], [], + [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) + case $host_os in + os2*) + _LT_TAGVAR(lt_prog_compiler_static, $1)='$wl-static' + ;; + esac + ;; + darwin* | rhapsody*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common' + ;; + *djgpp*) + # DJGPP does not support shared libraries at all + _LT_TAGVAR(lt_prog_compiler_pic, $1)= + ;; + haiku*) + # PIC is the default for Haiku. + # The "-static" flag exists, but is broken. + _LT_TAGVAR(lt_prog_compiler_static, $1)= + ;; + interix[[3-9]]*) + # Interix 3.x gcc -fpic/-fPIC options generate broken code. + # Instead, we relocate shared libraries at runtime. + ;; + sysv4*MP*) + if test -d /usr/nec; then + _LT_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic + fi + ;; + hpux*) + # PIC is the default for 64-bit PA HP-UX, but not for 32-bit + # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag + # sets the default TLS model and affects inlining. + case $host_cpu in + hppa*64*) + ;; + *) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + ;; + esac + ;; + *qnx* | *nto*) + # QNX uses GNU C++, but need to define -shared option too, otherwise + # it will coredump. + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' + ;; + *) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + ;; + esac + else + case $host_os in + aix[[4-9]]*) + # All AIX code is PIC. + if test ia64 = "$host_cpu"; then + # AIX 5 now supports IA64 processor + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + else + _LT_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp' + fi + ;; + chorus*) + case $cc_basename in + cxch68*) + # Green Hills C++ Compiler + # _LT_TAGVAR(lt_prog_compiler_static, $1)="--no_auto_instantiation -u __main -u __premain -u _abort -r $COOL_DIR/lib/libOrb.a $MVME_DIR/lib/CC/libC.a $MVME_DIR/lib/classix/libcx.s.a" + ;; + esac + ;; + mingw* | cygwin* | os2* | pw32* | cegcc*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + m4_if([$1], [GCJ], [], + [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) + ;; + dgux*) + case $cc_basename in + ec++*) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + ;; + ghcx*) + # Green Hills C++ Compiler + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' + ;; + *) + ;; + esac + ;; + freebsd* | dragonfly*) + # FreeBSD uses GNU C++ + ;; + hpux9* | hpux10* | hpux11*) + case $cc_basename in + CC*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_static, $1)='$wl-a ${wl}archive' + if test ia64 != "$host_cpu"; then + _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z' + fi + ;; + aCC*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_static, $1)='$wl-a ${wl}archive' + case $host_cpu in + hppa*64*|ia64*) + # +Z the default + ;; + *) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z' + ;; + esac + ;; + *) + ;; + esac + ;; + interix*) + # This is c89, which is MS Visual C++ (no shared libs) + # Anyone wants to do a port? + ;; + irix5* | irix6* | nonstopux*) + case $cc_basename in + CC*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' + # CC pic flag -KPIC is the default. + ;; + *) + ;; + esac + ;; + linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) + case $cc_basename in + KCC*) + # KAI C++ Compiler + _LT_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + ;; + ecpc* ) + # old Intel C++ for x86_64, which still supported -KPIC. + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' + ;; + icpc* ) + # Intel C++, used to be incompatible with GCC. + # ICC 10 doesn't accept -KPIC any more. + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' + ;; + pgCC* | pgcpp*) + # Portland Group C++ compiler + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + cxx*) + # Compaq C++ + # Make sure the PIC flag is empty. It appears that all Alpha + # Linux and Compaq Tru64 Unix objects are PIC. + _LT_TAGVAR(lt_prog_compiler_pic, $1)= + _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' + ;; + xlc* | xlC* | bgxl[[cC]]* | mpixl[[cC]]*) + # IBM XL 8.0, 9.0 on PPC and BlueGene + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-qpic' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-qstaticlink' + ;; + *) + case `$CC -V 2>&1 | sed 5q` in + *Sun\ C*) + # Sun C++ 5.9 + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' + ;; + esac + ;; + esac + ;; + lynxos*) + ;; + m88k*) + ;; + mvs*) + case $cc_basename in + cxx*) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-W c,exportall' + ;; + *) + ;; + esac + ;; + netbsd* | netbsdelf*-gnu) + ;; + *qnx* | *nto*) + # QNX uses GNU C++, but need to define -shared option too, otherwise + # it will coredump. + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' + ;; + osf3* | osf4* | osf5*) + case $cc_basename in + KCC*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,' + ;; + RCC*) + # Rational C++ 2.4.1 + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' + ;; + cxx*) + # Digital/Compaq C++ + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + # Make sure the PIC flag is empty. It appears that all Alpha + # Linux and Compaq Tru64 Unix objects are PIC. + _LT_TAGVAR(lt_prog_compiler_pic, $1)= + _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' + ;; + *) + ;; + esac + ;; + psos*) + ;; + solaris*) + case $cc_basename in + CC* | sunCC*) + # Sun C++ 4.2, 5.x and Centerline C++ + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' + ;; + gcx*) + # Green Hills C++ Compiler + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' + ;; + *) + ;; + esac + ;; + sunos4*) + case $cc_basename in + CC*) + # Sun C++ 4.x + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + lcc*) + # Lucid + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' + ;; + *) + ;; + esac + ;; + sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) + case $cc_basename in + CC*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + esac + ;; + tandem*) + case $cc_basename in + NCC*) + # NonStop-UX NCC 3.20 + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + ;; + *) + ;; + esac + ;; + vxworks*) + ;; + *) + _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no + ;; + esac + fi +], +[ + if test yes = "$GCC"; then + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' + + case $host_os in + aix*) + # All AIX code is PIC. + if test ia64 = "$host_cpu"; then + # AIX 5 now supports IA64 processor + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + fi + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + ;; + + amigaos*) + case $host_cpu in + powerpc) + # see comment about AmigaOS4 .so support + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + ;; + m68k) + # FIXME: we need at least 68020 code to build shared libraries, but + # adding the '-m68020' flag to GCC prevents building anything better, + # like '-m68040'. + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4' + ;; + esac + ;; + + beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) + # PIC is the default for these OSes. + ;; + + mingw* | cygwin* | pw32* | os2* | cegcc*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + # Although the cygwin gcc ignores -fPIC, still need this for old-style + # (--disable-auto-import) libraries + m4_if([$1], [GCJ], [], + [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) + case $host_os in + os2*) + _LT_TAGVAR(lt_prog_compiler_static, $1)='$wl-static' + ;; + esac + ;; + + darwin* | rhapsody*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common' + ;; + + haiku*) + # PIC is the default for Haiku. + # The "-static" flag exists, but is broken. + _LT_TAGVAR(lt_prog_compiler_static, $1)= + ;; + + hpux*) + # PIC is the default for 64-bit PA HP-UX, but not for 32-bit + # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag + # sets the default TLS model and affects inlining. + case $host_cpu in + hppa*64*) + # +Z the default + ;; + *) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + ;; + esac + ;; + + interix[[3-9]]*) + # Interix 3.x gcc -fpic/-fPIC options generate broken code. + # Instead, we relocate shared libraries at runtime. + ;; + + msdosdjgpp*) + # Just because we use GCC doesn't mean we suddenly get shared libraries + # on systems that don't support them. + _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no + enable_shared=no + ;; + + *nto* | *qnx*) + # QNX uses GNU C++, but need to define -shared option too, otherwise + # it will coredump. + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' + ;; + + sysv4*MP*) + if test -d /usr/nec; then + _LT_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic + fi + ;; + + *) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + ;; + esac + + case $cc_basename in + nvcc*) # Cuda Compiler Driver 2.2 + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Xlinker ' + if test -n "$_LT_TAGVAR(lt_prog_compiler_pic, $1)"; then + _LT_TAGVAR(lt_prog_compiler_pic, $1)="-Xcompiler $_LT_TAGVAR(lt_prog_compiler_pic, $1)" + fi + ;; + esac + else + # PORTME Check for flag to pass linker flags through the system compiler. + case $host_os in + aix*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + if test ia64 = "$host_cpu"; then + # AIX 5 now supports IA64 processor + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + else + _LT_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp' + fi + ;; + + darwin* | rhapsody*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common' + case $cc_basename in + nagfor*) + # NAG Fortran compiler + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,-Wl,,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + esac + ;; + + mingw* | cygwin* | pw32* | os2* | cegcc*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + m4_if([$1], [GCJ], [], + [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) + case $host_os in + os2*) + _LT_TAGVAR(lt_prog_compiler_static, $1)='$wl-static' + ;; + esac + ;; + + hpux9* | hpux10* | hpux11*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but + # not for PA HP-UX. + case $host_cpu in + hppa*64*|ia64*) + # +Z the default + ;; + *) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z' + ;; + esac + # Is there a better lt_prog_compiler_static that works with the bundled CC? + _LT_TAGVAR(lt_prog_compiler_static, $1)='$wl-a ${wl}archive' + ;; + + irix5* | irix6* | nonstopux*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + # PIC (with -KPIC) is the default. + _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' + ;; + + linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) + case $cc_basename in + # old Intel for x86_64, which still supported -KPIC. + ecc*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' + ;; + # icc used to be incompatible with GCC. + # ICC 10 doesn't accept -KPIC any more. + icc* | ifort*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' + ;; + # Lahey Fortran 8.1. + lf95*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='--shared' + _LT_TAGVAR(lt_prog_compiler_static, $1)='--static' + ;; + nagfor*) + # NAG Fortran compiler + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,-Wl,,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + tcc*) + # Fabrice Bellard et al's Tiny C Compiler + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' + ;; + pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*) + # Portland Group compilers (*not* the Pentium gcc compiler, + # which looks to be a dead project) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + ccc*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + # All Alpha code is PIC. + _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' + ;; + xl* | bgxl* | bgf* | mpixl*) + # IBM XL C 8.0/Fortran 10.1, 11.1 on PPC and BlueGene + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-qpic' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-qstaticlink' + ;; + *) + case `$CC -V 2>&1 | sed 5q` in + *Sun\ Ceres\ Fortran* | *Sun*Fortran*\ [[1-7]].* | *Sun*Fortran*\ 8.[[0-3]]*) + # Sun Fortran 8.3 passes all unrecognized flags to the linker + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + _LT_TAGVAR(lt_prog_compiler_wl, $1)='' + ;; + *Sun\ F* | *Sun*Fortran*) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' + ;; + *Sun\ C*) + # Sun C 5.9 + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + ;; + *Intel*\ [[CF]]*Compiler*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' + ;; + *Portland\ Group*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + esac + ;; + esac + ;; + + newsos6) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + + *nto* | *qnx*) + # QNX uses GNU C++, but need to define -shared option too, otherwise + # it will coredump. + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' + ;; + + osf3* | osf4* | osf5*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + # All OSF/1 code is PIC. + _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' + ;; + + rdos*) + _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' + ;; + + solaris*) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + case $cc_basename in + f77* | f90* | f95* | sunf77* | sunf90* | sunf95*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ';; + *) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,';; + esac + ;; + + sunos4*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + + sysv4 | sysv4.2uw2* | sysv4.3*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + + sysv4*MP*) + if test -d /usr/nec; then + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-Kconform_pic' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + fi + ;; + + sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + + unicos*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no + ;; + + uts4*) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + + *) + _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no + ;; + esac + fi +]) +case $host_os in + # For platforms that do not support PIC, -DPIC is meaningless: + *djgpp*) + _LT_TAGVAR(lt_prog_compiler_pic, $1)= + ;; + *) + _LT_TAGVAR(lt_prog_compiler_pic, $1)="$_LT_TAGVAR(lt_prog_compiler_pic, $1)@&t@m4_if([$1],[],[ -DPIC],[m4_if([$1],[CXX],[ -DPIC],[])])" + ;; +esac + +AC_CACHE_CHECK([for $compiler option to produce PIC], + [_LT_TAGVAR(lt_cv_prog_compiler_pic, $1)], + [_LT_TAGVAR(lt_cv_prog_compiler_pic, $1)=$_LT_TAGVAR(lt_prog_compiler_pic, $1)]) +_LT_TAGVAR(lt_prog_compiler_pic, $1)=$_LT_TAGVAR(lt_cv_prog_compiler_pic, $1) + +# +# Check to make sure the PIC flag actually works. +# +if test -n "$_LT_TAGVAR(lt_prog_compiler_pic, $1)"; then + _LT_COMPILER_OPTION([if $compiler PIC flag $_LT_TAGVAR(lt_prog_compiler_pic, $1) works], + [_LT_TAGVAR(lt_cv_prog_compiler_pic_works, $1)], + [$_LT_TAGVAR(lt_prog_compiler_pic, $1)@&t@m4_if([$1],[],[ -DPIC],[m4_if([$1],[CXX],[ -DPIC],[])])], [], + [case $_LT_TAGVAR(lt_prog_compiler_pic, $1) in + "" | " "*) ;; + *) _LT_TAGVAR(lt_prog_compiler_pic, $1)=" $_LT_TAGVAR(lt_prog_compiler_pic, $1)" ;; + esac], + [_LT_TAGVAR(lt_prog_compiler_pic, $1)= + _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no]) +fi +_LT_TAGDECL([pic_flag], [lt_prog_compiler_pic], [1], + [Additional compiler flags for building library objects]) + +_LT_TAGDECL([wl], [lt_prog_compiler_wl], [1], + [How to pass a linker flag through the compiler]) +# +# Check to make sure the static flag actually works. +# +wl=$_LT_TAGVAR(lt_prog_compiler_wl, $1) eval lt_tmp_static_flag=\"$_LT_TAGVAR(lt_prog_compiler_static, $1)\" +_LT_LINKER_OPTION([if $compiler static flag $lt_tmp_static_flag works], + _LT_TAGVAR(lt_cv_prog_compiler_static_works, $1), + $lt_tmp_static_flag, + [], + [_LT_TAGVAR(lt_prog_compiler_static, $1)=]) +_LT_TAGDECL([link_static_flag], [lt_prog_compiler_static], [1], + [Compiler flag to prevent dynamic linking]) +])# _LT_COMPILER_PIC + + +# _LT_LINKER_SHLIBS([TAGNAME]) +# ---------------------------- +# See if the linker supports building shared libraries. +m4_defun([_LT_LINKER_SHLIBS], +[AC_REQUIRE([LT_PATH_LD])dnl +AC_REQUIRE([LT_PATH_NM])dnl +m4_require([_LT_PATH_MANIFEST_TOOL])dnl +m4_require([_LT_FILEUTILS_DEFAULTS])dnl +m4_require([_LT_DECL_EGREP])dnl +m4_require([_LT_DECL_SED])dnl +m4_require([_LT_CMD_GLOBAL_SYMBOLS])dnl +m4_require([_LT_TAG_COMPILER])dnl +AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries]) +m4_if([$1], [CXX], [ + _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' + _LT_TAGVAR(exclude_expsyms, $1)=['_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*'] + case $host_os in + aix[[4-9]]*) + # If we're using GNU nm, then we don't want the "-C" option. + # -C means demangle to GNU nm, but means don't demangle to AIX nm. + # Without the "-l" option, or with the "-B" option, AIX nm treats + # weak defined symbols like other global defined symbols, whereas + # GNU nm marks them as "W". + # While the 'weak' keyword is ignored in the Export File, we need + # it in the Import File for the 'aix-soname' feature, so we have + # to replace the "-B" option with "-P" for AIX nm. + if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then + _LT_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && ([substr](\$ 3,1,1) != ".")) { if (\$ 2 == "W") { print \$ 3 " weak" } else { print \$ 3 } } }'\'' | sort -u > $export_symbols' + else + _LT_TAGVAR(export_symbols_cmds, $1)='`func_echo_all $NM | $SED -e '\''s/B\([[^B]]*\)$/P\1/'\''` -PCpgl $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) && ([substr](\$ 1,1,1) != ".")) { if ((\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) { print \$ 1 " weak" } else { print \$ 1 } } }'\'' | sort -u > $export_symbols' + fi + ;; + pw32*) + _LT_TAGVAR(export_symbols_cmds, $1)=$ltdll_cmds + ;; + cygwin* | mingw* | cegcc*) + case $cc_basename in + cl*) + _LT_TAGVAR(exclude_expsyms, $1)='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*' + ;; + *) + _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/;s/^.*[[ ]]__nm__\([[^ ]]*\)[[ ]][[^ ]]*/\1 DATA/;/^I[[ ]]/d;/^[[AITW]][[ ]]/s/.* //'\'' | sort | uniq > $export_symbols' + _LT_TAGVAR(exclude_expsyms, $1)=['[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname'] + ;; + esac + ;; + linux* | k*bsd*-gnu | gnu*) + _LT_TAGVAR(link_all_deplibs, $1)=no + ;; + *) + _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' + ;; + esac +], [ + runpath_var= + _LT_TAGVAR(allow_undefined_flag, $1)= + _LT_TAGVAR(always_export_symbols, $1)=no + _LT_TAGVAR(archive_cmds, $1)= + _LT_TAGVAR(archive_expsym_cmds, $1)= + _LT_TAGVAR(compiler_needs_object, $1)=no + _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no + _LT_TAGVAR(export_dynamic_flag_spec, $1)= + _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' + _LT_TAGVAR(hardcode_automatic, $1)=no + _LT_TAGVAR(hardcode_direct, $1)=no + _LT_TAGVAR(hardcode_direct_absolute, $1)=no + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= + _LT_TAGVAR(hardcode_libdir_separator, $1)= + _LT_TAGVAR(hardcode_minus_L, $1)=no + _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported + _LT_TAGVAR(inherit_rpath, $1)=no + _LT_TAGVAR(link_all_deplibs, $1)=unknown + _LT_TAGVAR(module_cmds, $1)= + _LT_TAGVAR(module_expsym_cmds, $1)= + _LT_TAGVAR(old_archive_from_new_cmds, $1)= + _LT_TAGVAR(old_archive_from_expsyms_cmds, $1)= + _LT_TAGVAR(thread_safe_flag_spec, $1)= + _LT_TAGVAR(whole_archive_flag_spec, $1)= + # include_expsyms should be a list of space-separated symbols to be *always* + # included in the symbol list + _LT_TAGVAR(include_expsyms, $1)= + # exclude_expsyms can be an extended regexp of symbols to exclude + # it will be wrapped by ' (' and ')$', so one must not match beginning or + # end of line. Example: 'a|bc|.*d.*' will exclude the symbols 'a' and 'bc', + # as well as any symbol that contains 'd'. + _LT_TAGVAR(exclude_expsyms, $1)=['_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*'] + # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out + # platforms (ab)use it in PIC code, but their linkers get confused if + # the symbol is explicitly referenced. Since portable code cannot + # rely on this symbol name, it's probably fine to never include it in + # preloaded symbol tables. + # Exclude shared library initialization/finalization symbols. +dnl Note also adjust exclude_expsyms for C++ above. + extract_expsyms_cmds= + + case $host_os in + cygwin* | mingw* | pw32* | cegcc*) + # FIXME: the MSVC++ port hasn't been tested in a loooong time + # When not using gcc, we currently assume that we are using + # Microsoft Visual C++. + if test yes != "$GCC"; then + with_gnu_ld=no + fi + ;; + interix*) + # we just hope/assume this is gcc and not c89 (= MSVC++) + with_gnu_ld=yes + ;; + openbsd* | bitrig*) + with_gnu_ld=no + ;; + linux* | k*bsd*-gnu | gnu*) + _LT_TAGVAR(link_all_deplibs, $1)=no + ;; + esac + + _LT_TAGVAR(ld_shlibs, $1)=yes + + # On some targets, GNU ld is compatible enough with the native linker + # that we're better off using the native interface for both. + lt_use_gnu_ld_interface=no + if test yes = "$with_gnu_ld"; then + case $host_os in + aix*) + # The AIX port of GNU ld has always aspired to compatibility + # with the native linker. However, as the warning in the GNU ld + # block says, versions before 2.19.5* couldn't really create working + # shared libraries, regardless of the interface used. + case `$LD -v 2>&1` in + *\ \(GNU\ Binutils\)\ 2.19.5*) ;; + *\ \(GNU\ Binutils\)\ 2.[[2-9]]*) ;; + *\ \(GNU\ Binutils\)\ [[3-9]]*) ;; + *) + lt_use_gnu_ld_interface=yes + ;; + esac + ;; + *) + lt_use_gnu_ld_interface=yes + ;; + esac + fi + + if test yes = "$lt_use_gnu_ld_interface"; then + # If archive_cmds runs LD, not CC, wlarc should be empty + wlarc='$wl' + + # Set some defaults for GNU ld with shared library support. These + # are reset later if shared libraries are not supported. Putting them + # here allows them to be overridden if necessary. + runpath_var=LD_RUN_PATH + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-dynamic' + # ancient GNU ld didn't support --whole-archive et. al. + if $LD --help 2>&1 | $GREP 'no-whole-archive' > /dev/null; then + _LT_TAGVAR(whole_archive_flag_spec, $1)=$wlarc'--whole-archive$convenience '$wlarc'--no-whole-archive' + else + _LT_TAGVAR(whole_archive_flag_spec, $1)= + fi + supports_anon_versioning=no + case `$LD -v | $SED -e 's/([^)]\+)\s\+//' 2>&1` in + *GNU\ gold*) supports_anon_versioning=yes ;; + *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.10.*) ;; # catch versions < 2.11 + *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... + *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... + *\ 2.11.*) ;; # other 2.11 versions + *) supports_anon_versioning=yes ;; + esac + + # See if GNU ld supports shared libraries. + case $host_os in + aix[[3-9]]*) + # On AIX/PPC, the GNU linker is very broken + if test ia64 != "$host_cpu"; then + _LT_TAGVAR(ld_shlibs, $1)=no + cat <<_LT_EOF 1>&2 + +*** Warning: the GNU linker, at least up to release 2.19, is reported +*** to be unable to reliably create shared libraries on AIX. +*** Therefore, libtool is disabling shared libraries support. If you +*** really care for shared libraries, you may want to install binutils +*** 2.20 or above, or modify your PATH so that a non-GNU linker is found. +*** You will then need to restart the configuration process. + +_LT_EOF + fi + ;; + + amigaos*) + case $host_cpu in + powerpc) + # see comment about AmigaOS4 .so support + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='' + ;; + m68k) + _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_TAGVAR(hardcode_minus_L, $1)=yes + ;; + esac + ;; + + beos*) + if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then + _LT_TAGVAR(allow_undefined_flag, $1)=unsupported + # Joseph Beckenbach says some releases of gcc + # support --undefined. This deserves some investigation. FIXME + _LT_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + else + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + + cygwin* | mingw* | pw32* | cegcc*) + # _LT_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless, + # as there is no search path for DLLs. + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-all-symbols' + _LT_TAGVAR(allow_undefined_flag, $1)=unsupported + _LT_TAGVAR(always_export_symbols, $1)=no + _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes + _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/;s/^.*[[ ]]__nm__\([[^ ]]*\)[[ ]][[^ ]]*/\1 DATA/;/^I[[ ]]/d;/^[[AITW]][[ ]]/s/.* //'\'' | sort | uniq > $export_symbols' + _LT_TAGVAR(exclude_expsyms, $1)=['[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname'] + + if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + # If the export-symbols file already is a .def file, use it as + # is; otherwise, prepend EXPORTS... + _LT_TAGVAR(archive_expsym_cmds, $1)='if _LT_DLL_DEF_P([$export_symbols]); then + cp $export_symbols $output_objdir/$soname.def; + else + echo EXPORTS > $output_objdir/$soname.def; + cat $export_symbols >> $output_objdir/$soname.def; + fi~ + $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + else + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + + haiku*) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + _LT_TAGVAR(link_all_deplibs, $1)=yes + ;; + + os2*) + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_TAGVAR(hardcode_minus_L, $1)=yes + _LT_TAGVAR(allow_undefined_flag, $1)=unsupported + shrext_cmds=.dll + _LT_TAGVAR(archive_cmds, $1)='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ + $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ + $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ + $ECHO EXPORTS >> $output_objdir/$libname.def~ + emxexp $libobjs | $SED /"_DLL_InitTerm"/d >> $output_objdir/$libname.def~ + $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ + emximp -o $lib $output_objdir/$libname.def' + _LT_TAGVAR(archive_expsym_cmds, $1)='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ + $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ + $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ + $ECHO EXPORTS >> $output_objdir/$libname.def~ + prefix_cmds="$SED"~ + if test EXPORTS = "`$SED 1q $export_symbols`"; then + prefix_cmds="$prefix_cmds -e 1d"; + fi~ + prefix_cmds="$prefix_cmds -e \"s/^\(.*\)$/_\1/g\""~ + cat $export_symbols | $prefix_cmds >> $output_objdir/$libname.def~ + $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ + emximp -o $lib $output_objdir/$libname.def' + _LT_TAGVAR(old_archive_From_new_cmds, $1)='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def' + _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes + ;; + + interix[[3-9]]*) + _LT_TAGVAR(hardcode_direct, $1)=no + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E' + # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. + # Instead, shared libraries are loaded at an image base (0x10000000 by + # default) and relocated if they conflict, which is a slow very memory + # consuming and fragmenting process. To avoid this, we pick a random, + # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link + # time. Moving up from 0x10000000 also allows more sbrk(2) space. + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='sed "s|^|_|" $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--retain-symbols-file,$output_objdir/$soname.expsym $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + ;; + + gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu) + tmp_diet=no + if test linux-dietlibc = "$host_os"; then + case $cc_basename in + diet\ *) tmp_diet=yes;; # linux-dietlibc with static linking (!diet-dyn) + esac + fi + if $LD --help 2>&1 | $EGREP ': supported targets:.* elf' > /dev/null \ + && test no = "$tmp_diet" + then + tmp_addflag=' $pic_flag' + tmp_sharedflag='-shared' + case $cc_basename,$host_cpu in + pgcc*) # Portland Group C compiler + _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' + tmp_addflag=' $pic_flag' + ;; + pgf77* | pgf90* | pgf95* | pgfortran*) + # Portland Group f77 and f90 compilers + _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' + tmp_addflag=' $pic_flag -Mnomain' ;; + ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64 + tmp_addflag=' -i_dynamic' ;; + efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64 + tmp_addflag=' -i_dynamic -nofor_main' ;; + ifc* | ifort*) # Intel Fortran compiler + tmp_addflag=' -nofor_main' ;; + lf95*) # Lahey Fortran 8.1 + _LT_TAGVAR(whole_archive_flag_spec, $1)= + tmp_sharedflag='--shared' ;; + nagfor*) # NAGFOR 5.3 + tmp_sharedflag='-Wl,-shared' ;; + xl[[cC]]* | bgxl[[cC]]* | mpixl[[cC]]*) # IBM XL C 8.0 on PPC (deal with xlf below) + tmp_sharedflag='-qmkshrobj' + tmp_addflag= ;; + nvcc*) # Cuda Compiler Driver 2.2 + _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' + _LT_TAGVAR(compiler_needs_object, $1)=yes + ;; + esac + case `$CC -V 2>&1 | sed 5q` in + *Sun\ C*) # Sun C 5.9 + _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' + _LT_TAGVAR(compiler_needs_object, $1)=yes + tmp_sharedflag='-G' ;; + *Sun\ F*) # Sun Fortran 8.3 + tmp_sharedflag='-G' ;; + esac + _LT_TAGVAR(archive_cmds, $1)='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + + if test yes = "$supports_anon_versioning"; then + _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~ + cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ + echo "local: *; };" >> $output_objdir/$libname.ver~ + $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-version-script $wl$output_objdir/$libname.ver -o $lib' + fi + + case $cc_basename in + tcc*) + _LT_TAGVAR(export_dynamic_flag_spec, $1)='-rdynamic' + ;; + xlf* | bgf* | bgxlf* | mpixlf*) + # IBM XL Fortran 10.1 on PPC cannot create shared libs itself + _LT_TAGVAR(whole_archive_flag_spec, $1)='--whole-archive$convenience --no-whole-archive' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' + _LT_TAGVAR(archive_cmds, $1)='$LD -shared $libobjs $deplibs $linker_flags -soname $soname -o $lib' + if test yes = "$supports_anon_versioning"; then + _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~ + cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ + echo "local: *; };" >> $output_objdir/$libname.ver~ + $LD -shared $libobjs $deplibs $linker_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib' + fi + ;; + esac + else + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + + netbsd* | netbsdelf*-gnu) + if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then + _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' + wlarc= + else + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' + fi + ;; + + solaris*) + if $LD -v 2>&1 | $GREP 'BFD 2\.8' > /dev/null; then + _LT_TAGVAR(ld_shlibs, $1)=no + cat <<_LT_EOF 1>&2 + +*** Warning: The releases 2.8.* of the GNU linker cannot reliably +*** create shared libraries on Solaris systems. Therefore, libtool +*** is disabling shared libraries support. We urge you to upgrade GNU +*** binutils to release 2.9.1 or newer. Another option is to modify +*** your PATH or compiler configuration so that the native linker is +*** used, and then restart. + +_LT_EOF + elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' + else + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + + sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*) + case `$LD -v 2>&1` in + *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.1[[0-5]].*) + _LT_TAGVAR(ld_shlibs, $1)=no + cat <<_LT_EOF 1>&2 + +*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 cannot +*** reliably create shared libraries on SCO systems. Therefore, libtool +*** is disabling shared libraries support. We urge you to upgrade GNU +*** binutils to release 2.16.91.0.3 or newer. Another option is to modify +*** your PATH or compiler configuration so that the native linker is +*** used, and then restart. + +_LT_EOF + ;; + *) + # For security reasons, it is highly recommended that you always + # use absolute paths for naming shared libraries, and exclude the + # DT_RUNPATH tag from executables and libraries. But doing so + # requires that you compile everything twice, which is a pain. + if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' + else + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + esac + ;; + + sunos4*) + _LT_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' + wlarc= + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + *) + if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' + else + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + esac + + if test no = "$_LT_TAGVAR(ld_shlibs, $1)"; then + runpath_var= + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= + _LT_TAGVAR(export_dynamic_flag_spec, $1)= + _LT_TAGVAR(whole_archive_flag_spec, $1)= + fi + else + # PORTME fill in a description of your system's linker (not GNU ld) + case $host_os in + aix3*) + _LT_TAGVAR(allow_undefined_flag, $1)=unsupported + _LT_TAGVAR(always_export_symbols, $1)=yes + _LT_TAGVAR(archive_expsym_cmds, $1)='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' + # Note: this linker hardcodes the directories in LIBPATH if there + # are no directories specified by -L. + _LT_TAGVAR(hardcode_minus_L, $1)=yes + if test yes = "$GCC" && test -z "$lt_prog_compiler_static"; then + # Neither direct hardcoding nor static linking is supported with a + # broken collect2. + _LT_TAGVAR(hardcode_direct, $1)=unsupported + fi + ;; + + aix[[4-9]]*) + if test ia64 = "$host_cpu"; then + # On IA64, the linker does run time linking by default, so we don't + # have to do anything special. + aix_use_runtimelinking=no + exp_sym_flag='-Bexport' + no_entry_flag= + else + # If we're using GNU nm, then we don't want the "-C" option. + # -C means demangle to GNU nm, but means don't demangle to AIX nm. + # Without the "-l" option, or with the "-B" option, AIX nm treats + # weak defined symbols like other global defined symbols, whereas + # GNU nm marks them as "W". + # While the 'weak' keyword is ignored in the Export File, we need + # it in the Import File for the 'aix-soname' feature, so we have + # to replace the "-B" option with "-P" for AIX nm. + if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then + _LT_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && ([substr](\$ 3,1,1) != ".")) { if (\$ 2 == "W") { print \$ 3 " weak" } else { print \$ 3 } } }'\'' | sort -u > $export_symbols' + else + _LT_TAGVAR(export_symbols_cmds, $1)='`func_echo_all $NM | $SED -e '\''s/B\([[^B]]*\)$/P\1/'\''` -PCpgl $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) && ([substr](\$ 1,1,1) != ".")) { if ((\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) { print \$ 1 " weak" } else { print \$ 1 } } }'\'' | sort -u > $export_symbols' + fi + aix_use_runtimelinking=no + + # Test if we are trying to use run time linking or normal + # AIX style linking. If -brtl is somewhere in LDFLAGS, we + # have runtime linking enabled, and use it for executables. + # For shared libraries, we enable/disable runtime linking + # depending on the kind of the shared library created - + # when "with_aix_soname,aix_use_runtimelinking" is: + # "aix,no" lib.a(lib.so.V) shared, rtl:no, for executables + # "aix,yes" lib.so shared, rtl:yes, for executables + # lib.a static archive + # "both,no" lib.so.V(shr.o) shared, rtl:yes + # lib.a(lib.so.V) shared, rtl:no, for executables + # "both,yes" lib.so.V(shr.o) shared, rtl:yes, for executables + # lib.a(lib.so.V) shared, rtl:no + # "svr4,*" lib.so.V(shr.o) shared, rtl:yes, for executables + # lib.a static archive + case $host_os in aix4.[[23]]|aix4.[[23]].*|aix[[5-9]]*) + for ld_flag in $LDFLAGS; do + if (test x-brtl = "x$ld_flag" || test x-Wl,-brtl = "x$ld_flag"); then + aix_use_runtimelinking=yes + break + fi + done + if test svr4,no = "$with_aix_soname,$aix_use_runtimelinking"; then + # With aix-soname=svr4, we create the lib.so.V shared archives only, + # so we don't have lib.a shared libs to link our executables. + # We have to force runtime linking in this case. + aix_use_runtimelinking=yes + LDFLAGS="$LDFLAGS -Wl,-brtl" + fi + ;; + esac + + exp_sym_flag='-bexport' + no_entry_flag='-bnoentry' + fi + + # When large executables or shared objects are built, AIX ld can + # have problems creating the table of contents. If linking a library + # or program results in "error TOC overflow" add -mminimal-toc to + # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not + # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. + + _LT_TAGVAR(archive_cmds, $1)='' + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_direct_absolute, $1)=yes + _LT_TAGVAR(hardcode_libdir_separator, $1)=':' + _LT_TAGVAR(link_all_deplibs, $1)=yes + _LT_TAGVAR(file_list_spec, $1)='$wl-f,' + case $with_aix_soname,$aix_use_runtimelinking in + aix,*) ;; # traditional, no import file + svr4,* | *,yes) # use import file + # The Import File defines what to hardcode. + _LT_TAGVAR(hardcode_direct, $1)=no + _LT_TAGVAR(hardcode_direct_absolute, $1)=no + ;; + esac + + if test yes = "$GCC"; then + case $host_os in aix4.[[012]]|aix4.[[012]].*) + # We only want to do this on AIX 4.2 and lower, the check + # below for broken collect2 doesn't work under 4.3+ + collect2name=`$CC -print-prog-name=collect2` + if test -f "$collect2name" && + strings "$collect2name" | $GREP resolve_lib_name >/dev/null + then + # We have reworked collect2 + : + else + # We have old collect2 + _LT_TAGVAR(hardcode_direct, $1)=unsupported + # It fails to find uninstalled libraries when the uninstalled + # path is not listed in the libpath. Setting hardcode_minus_L + # to unsupported forces relinking + _LT_TAGVAR(hardcode_minus_L, $1)=yes + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)= + fi + ;; + esac + shared_flag='-shared' + if test yes = "$aix_use_runtimelinking"; then + shared_flag="$shared_flag "'$wl-G' + fi + # Need to ensure runtime linking is disabled for the traditional + # shared library, or the linker may eventually find shared libraries + # /with/ Import File - we do not want to mix them. + shared_flag_aix='-shared' + shared_flag_svr4='-shared $wl-G' + else + # not using gcc + if test ia64 = "$host_cpu"; then + # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release + # chokes on -Wl,-G. The following line is correct: + shared_flag='-G' + else + if test yes = "$aix_use_runtimelinking"; then + shared_flag='$wl-G' + else + shared_flag='$wl-bM:SRE' + fi + shared_flag_aix='$wl-bM:SRE' + shared_flag_svr4='$wl-G' + fi + fi + + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-bexpall' + # It seems that -bexpall does not export symbols beginning with + # underscore (_), so it is better to generate a list of symbols to export. + _LT_TAGVAR(always_export_symbols, $1)=yes + if test aix,yes = "$with_aix_soname,$aix_use_runtimelinking"; then + # Warning - without using the other runtime loading flags (-brtl), + # -berok will link without error, but may produce a broken library. + _LT_TAGVAR(allow_undefined_flag, $1)='-berok' + # Determine the default libpath from the value encoded in an + # empty executable. + _LT_SYS_MODULE_PATH_AIX([$1]) + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-blibpath:$libdir:'"$aix_libpath" + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $deplibs $wl'$no_entry_flag' $compiler_flags `if test -n "$allow_undefined_flag"; then func_echo_all "$wl$allow_undefined_flag"; else :; fi` $wl'$exp_sym_flag:\$export_symbols' '$shared_flag + else + if test ia64 = "$host_cpu"; then + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-R $libdir:/usr/lib:/lib' + _LT_TAGVAR(allow_undefined_flag, $1)="-z nodefs" + _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\$wl$no_entry_flag"' $compiler_flags $wl$allow_undefined_flag '"\$wl$exp_sym_flag:\$export_symbols" + else + # Determine the default libpath from the value encoded in an + # empty executable. + _LT_SYS_MODULE_PATH_AIX([$1]) + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-blibpath:$libdir:'"$aix_libpath" + # Warning - without using the other run time loading flags, + # -berok will link without error, but may produce a broken library. + _LT_TAGVAR(no_undefined_flag, $1)=' $wl-bernotok' + _LT_TAGVAR(allow_undefined_flag, $1)=' $wl-berok' + if test yes = "$with_gnu_ld"; then + # We only use this code for GNU lds that support --whole-archive. + _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive$convenience $wl--no-whole-archive' + else + # Exported symbols can be pulled into shared objects from archives + _LT_TAGVAR(whole_archive_flag_spec, $1)='$convenience' + fi + _LT_TAGVAR(archive_cmds_need_lc, $1)=yes + _LT_TAGVAR(archive_expsym_cmds, $1)='$RM -r $output_objdir/$realname.d~$MKDIR $output_objdir/$realname.d' + # -brtl affects multiple linker settings, -berok does not and is overridden later + compiler_flags_filtered='`func_echo_all "$compiler_flags " | $SED -e "s%-brtl\\([[, ]]\\)%-berok\\1%g"`' + if test svr4 != "$with_aix_soname"; then + # This is similar to how AIX traditionally builds its shared libraries. + _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$CC '$shared_flag_aix' -o $output_objdir/$realname.d/$soname $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$realname.d/$soname' + fi + if test aix != "$with_aix_soname"; then + _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$CC '$shared_flag_svr4' -o $output_objdir/$realname.d/$shared_archive_member_spec.o $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$STRIP -e $output_objdir/$realname.d/$shared_archive_member_spec.o~( func_echo_all "#! $soname($shared_archive_member_spec.o)"; if test shr_64 = "$shared_archive_member_spec"; then func_echo_all "# 64"; else func_echo_all "# 32"; fi; cat $export_symbols ) > $output_objdir/$realname.d/$shared_archive_member_spec.imp~$AR $AR_FLAGS $output_objdir/$soname $output_objdir/$realname.d/$shared_archive_member_spec.o $output_objdir/$realname.d/$shared_archive_member_spec.imp' + else + # used by -dlpreopen to get the symbols + _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$MV $output_objdir/$realname.d/$soname $output_objdir' + fi + _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$RM -r $output_objdir/$realname.d' + fi + fi + ;; + + amigaos*) + case $host_cpu in + powerpc) + # see comment about AmigaOS4 .so support + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='' + ;; + m68k) + _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_TAGVAR(hardcode_minus_L, $1)=yes + ;; + esac + ;; + + bsdi[[45]]*) + _LT_TAGVAR(export_dynamic_flag_spec, $1)=-rdynamic + ;; + + cygwin* | mingw* | pw32* | cegcc*) + # When not using gcc, we currently assume that we are using + # Microsoft Visual C++. + # hardcode_libdir_flag_spec is actually meaningless, as there is + # no search path for DLLs. + case $cc_basename in + cl*) + # Native MSVC + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' ' + _LT_TAGVAR(allow_undefined_flag, $1)=unsupported + _LT_TAGVAR(always_export_symbols, $1)=yes + _LT_TAGVAR(file_list_spec, $1)='@' + # Tell ltmain to make .lib files, not .a files. + libext=lib + # Tell ltmain to make .dll files, not .so files. + shrext_cmds=.dll + # FIXME: Setting linknames here is a bad hack. + _LT_TAGVAR(archive_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~linknames=' + _LT_TAGVAR(archive_expsym_cmds, $1)='if _LT_DLL_DEF_P([$export_symbols]); then + cp "$export_symbols" "$output_objdir/$soname.def"; + echo "$tool_output_objdir$soname.def" > "$output_objdir/$soname.exp"; + else + $SED -e '\''s/^/-link -EXPORT:/'\'' < $export_symbols > $output_objdir/$soname.exp; + fi~ + $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~ + linknames=' + # The linker will not automatically build a static lib if we build a DLL. + # _LT_TAGVAR(old_archive_from_new_cmds, $1)='true' + _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes + _LT_TAGVAR(exclude_expsyms, $1)='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*' + _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1,DATA/'\'' | $SED -e '\''/^[[AITW]][[ ]]/s/.*[[ ]]//'\'' | sort | uniq > $export_symbols' + # Don't use ranlib + _LT_TAGVAR(old_postinstall_cmds, $1)='chmod 644 $oldlib' + _LT_TAGVAR(postlink_cmds, $1)='lt_outputfile="@OUTPUT@"~ + lt_tool_outputfile="@TOOL_OUTPUT@"~ + case $lt_outputfile in + *.exe|*.EXE) ;; + *) + lt_outputfile=$lt_outputfile.exe + lt_tool_outputfile=$lt_tool_outputfile.exe + ;; + esac~ + if test : != "$MANIFEST_TOOL" && test -f "$lt_outputfile.manifest"; then + $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1; + $RM "$lt_outputfile.manifest"; + fi' + ;; + *) + # Assume MSVC wrapper + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' ' + _LT_TAGVAR(allow_undefined_flag, $1)=unsupported + # Tell ltmain to make .lib files, not .a files. + libext=lib + # Tell ltmain to make .dll files, not .so files. + shrext_cmds=.dll + # FIXME: Setting linknames here is a bad hack. + _LT_TAGVAR(archive_cmds, $1)='$CC -o $lib $libobjs $compiler_flags `func_echo_all "$deplibs" | $SED '\''s/ -lc$//'\''` -link -dll~linknames=' + # The linker will automatically build a .lib file if we build a DLL. + _LT_TAGVAR(old_archive_from_new_cmds, $1)='true' + # FIXME: Should let the user specify the lib program. + _LT_TAGVAR(old_archive_cmds, $1)='lib -OUT:$oldlib$oldobjs$old_deplibs' + _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes + ;; + esac + ;; + + darwin* | rhapsody*) + _LT_DARWIN_LINKER_FEATURES($1) + ;; + + dgux*) + _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor + # support. Future versions do this automatically, but an explicit c++rt0.o + # does not break anything, and helps significantly (at the cost of a little + # extra space). + freebsd2.2*) + _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + # Unfortunately, older versions of FreeBSD 2 do not have this feature. + freebsd2.*) + _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_minus_L, $1)=yes + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + # FreeBSD 3 and greater uses gcc -shared to do shared libraries. + freebsd* | dragonfly*) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + hpux9*) + if test yes = "$GCC"; then + _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -shared $pic_flag $wl+b $wl$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib' + else + _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib' + fi + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl+b $wl$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + _LT_TAGVAR(hardcode_direct, $1)=yes + + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + _LT_TAGVAR(hardcode_minus_L, $1)=yes + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E' + ;; + + hpux10*) + if test yes,no = "$GCC,$with_gnu_ld"; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags' + else + _LT_TAGVAR(archive_cmds, $1)='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' + fi + if test no = "$with_gnu_ld"; then + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl+b $wl$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_direct_absolute, $1)=yes + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E' + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + _LT_TAGVAR(hardcode_minus_L, $1)=yes + fi + ;; + + hpux11*) + if test yes,no = "$GCC,$with_gnu_ld"; then + case $host_cpu in + hppa*64*) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $wl+h $wl$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + ia64*) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $wl+h $wl$soname $wl+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' + ;; + *) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + else + case $host_cpu in + hppa*64*) + _LT_TAGVAR(archive_cmds, $1)='$CC -b $wl+h $wl$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + ia64*) + _LT_TAGVAR(archive_cmds, $1)='$CC -b $wl+h $wl$soname $wl+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' + ;; + *) + m4_if($1, [], [ + # Older versions of the 11.00 compiler do not understand -b yet + # (HP92453-01 A.11.01.20 doesn't, HP92453-01 B.11.X.35175-35176.GP does) + _LT_LINKER_OPTION([if $CC understands -b], + _LT_TAGVAR(lt_cv_prog_compiler__b, $1), [-b], + [_LT_TAGVAR(archive_cmds, $1)='$CC -b $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags'], + [_LT_TAGVAR(archive_cmds, $1)='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'])], + [_LT_TAGVAR(archive_cmds, $1)='$CC -b $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags']) + ;; + esac + fi + if test no = "$with_gnu_ld"; then + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl+b $wl$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + + case $host_cpu in + hppa*64*|ia64*) + _LT_TAGVAR(hardcode_direct, $1)=no + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + *) + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_direct_absolute, $1)=yes + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E' + + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + _LT_TAGVAR(hardcode_minus_L, $1)=yes + ;; + esac + fi + ;; + + irix5* | irix6* | nonstopux*) + if test yes = "$GCC"; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' + # Try to use the -exported_symbol ld option, if it does not + # work, assume that -exports_file does not work either and + # implicitly export all symbols. + # This should be the same for all languages, so no per-tag cache variable. + AC_CACHE_CHECK([whether the $host_os linker accepts -exported_symbol], + [lt_cv_irix_exported_symbol], + [save_LDFLAGS=$LDFLAGS + LDFLAGS="$LDFLAGS -shared $wl-exported_symbol ${wl}foo $wl-update_registry $wl/dev/null" + AC_LINK_IFELSE( + [AC_LANG_SOURCE( + [AC_LANG_CASE([C], [[int foo (void) { return 0; }]], + [C++], [[int foo (void) { return 0; }]], + [Fortran 77], [[ + subroutine foo + end]], + [Fortran], [[ + subroutine foo + end]])])], + [lt_cv_irix_exported_symbol=yes], + [lt_cv_irix_exported_symbol=no]) + LDFLAGS=$save_LDFLAGS]) + if test yes = "$lt_cv_irix_exported_symbol"; then + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations $wl-exports_file $wl$export_symbols -o $lib' + fi + _LT_TAGVAR(link_all_deplibs, $1)=no + else + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -exports_file $export_symbols -o $lib' + fi + _LT_TAGVAR(archive_cmds_need_lc, $1)='no' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + _LT_TAGVAR(inherit_rpath, $1)=yes + _LT_TAGVAR(link_all_deplibs, $1)=yes + ;; + + linux*) + case $cc_basename in + tcc*) + # Fabrice Bellard et al's Tiny C Compiler + _LT_TAGVAR(ld_shlibs, $1)=yes + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + ;; + + netbsd* | netbsdelf*-gnu) + if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then + _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out + else + _LT_TAGVAR(archive_cmds, $1)='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF + fi + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + newsos6) + _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + *nto* | *qnx*) + ;; + + openbsd* | bitrig*) + if test -f /usr/libexec/ld.so; then + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + _LT_TAGVAR(hardcode_direct_absolute, $1)=yes + if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags $wl-retain-symbols-file,$export_symbols' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E' + else + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir' + fi + else + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + + os2*) + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_TAGVAR(hardcode_minus_L, $1)=yes + _LT_TAGVAR(allow_undefined_flag, $1)=unsupported + shrext_cmds=.dll + _LT_TAGVAR(archive_cmds, $1)='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ + $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ + $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ + $ECHO EXPORTS >> $output_objdir/$libname.def~ + emxexp $libobjs | $SED /"_DLL_InitTerm"/d >> $output_objdir/$libname.def~ + $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ + emximp -o $lib $output_objdir/$libname.def' + _LT_TAGVAR(archive_expsym_cmds, $1)='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ + $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ + $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ + $ECHO EXPORTS >> $output_objdir/$libname.def~ + prefix_cmds="$SED"~ + if test EXPORTS = "`$SED 1q $export_symbols`"; then + prefix_cmds="$prefix_cmds -e 1d"; + fi~ + prefix_cmds="$prefix_cmds -e \"s/^\(.*\)$/_\1/g\""~ + cat $export_symbols | $prefix_cmds >> $output_objdir/$libname.def~ + $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ + emximp -o $lib $output_objdir/$libname.def' + _LT_TAGVAR(old_archive_From_new_cmds, $1)='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def' + _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes + ;; + + osf3*) + if test yes = "$GCC"; then + _LT_TAGVAR(allow_undefined_flag, $1)=' $wl-expect_unresolved $wl\*' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared$allow_undefined_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' + else + _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared$allow_undefined_flag $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' + fi + _LT_TAGVAR(archive_cmds_need_lc, $1)='no' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + ;; + + osf4* | osf5*) # as osf3* with the addition of -msym flag + if test yes = "$GCC"; then + _LT_TAGVAR(allow_undefined_flag, $1)=' $wl-expect_unresolved $wl\*' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared$allow_undefined_flag $pic_flag $libobjs $deplibs $compiler_flags $wl-msym $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' + else + _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared$allow_undefined_flag $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; printf "%s\\n" "-hidden">> $lib.exp~ + $CC -shared$allow_undefined_flag $wl-input $wl$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib~$RM $lib.exp' + + # Both c and cxx compiler support -rpath directly + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' + fi + _LT_TAGVAR(archive_cmds_need_lc, $1)='no' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + ;; + + solaris*) + _LT_TAGVAR(no_undefined_flag, $1)=' -z defs' + if test yes = "$GCC"; then + wlarc='$wl' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $wl-z ${wl}text $wl-h $wl$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ + $CC -shared $pic_flag $wl-z ${wl}text $wl-M $wl$lib.exp $wl-h $wl$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' + else + case `$CC -V 2>&1` in + *"Compilers 5.0"*) + wlarc='' + _LT_TAGVAR(archive_cmds, $1)='$LD -G$allow_undefined_flag -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ + $LD -G$allow_undefined_flag -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$RM $lib.exp' + ;; + *) + wlarc='$wl' + _LT_TAGVAR(archive_cmds, $1)='$CC -G$allow_undefined_flag -h $soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ + $CC -G$allow_undefined_flag -M $lib.exp -h $soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' + ;; + esac + fi + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + case $host_os in + solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; + *) + # The compiler driver will combine and reorder linker options, + # but understands '-z linker_flag'. GCC discards it without '$wl', + # but is careful enough not to reorder. + # Supported since Solaris 2.6 (maybe 2.5.1?) + if test yes = "$GCC"; then + _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl-z ${wl}allextract$convenience $wl-z ${wl}defaultextract' + else + _LT_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract' + fi + ;; + esac + _LT_TAGVAR(link_all_deplibs, $1)=yes + ;; + + sunos4*) + if test sequent = "$host_vendor"; then + # Use $CC to link under sequent, because it throws in some extra .o + # files that make .init and .fini sections work. + _LT_TAGVAR(archive_cmds, $1)='$CC -G $wl-h $soname -o $lib $libobjs $deplibs $compiler_flags' + else + _LT_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' + fi + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_minus_L, $1)=yes + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + sysv4) + case $host_vendor in + sni) + _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_TAGVAR(hardcode_direct, $1)=yes # is this really true??? + ;; + siemens) + ## LD is ld it makes a PLAMLIB + ## CC just makes a GrossModule. + _LT_TAGVAR(archive_cmds, $1)='$LD -G -o $lib $libobjs $deplibs $linker_flags' + _LT_TAGVAR(reload_cmds, $1)='$CC -r -o $output$reload_objs' + _LT_TAGVAR(hardcode_direct, $1)=no + ;; + motorola) + _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_TAGVAR(hardcode_direct, $1)=no #Motorola manual says yes, but my tests say they lie + ;; + esac + runpath_var='LD_RUN_PATH' + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + sysv4.3*) + _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + _LT_TAGVAR(export_dynamic_flag_spec, $1)='-Bexport' + ;; + + sysv4*MP*) + if test -d /usr/nec; then + _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + runpath_var=LD_RUN_PATH + hardcode_runpath_var=yes + _LT_TAGVAR(ld_shlibs, $1)=yes + fi + ;; + + sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7* | sco3.2v5.0.[[024]]*) + _LT_TAGVAR(no_undefined_flag, $1)='$wl-z,text' + _LT_TAGVAR(archive_cmds_need_lc, $1)=no + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + runpath_var='LD_RUN_PATH' + + if test yes = "$GCC"; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + else + _LT_TAGVAR(archive_cmds, $1)='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + fi + ;; + + sysv5* | sco3.2v5* | sco5v6*) + # Note: We CANNOT use -z defs as we might desire, because we do not + # link with -lc, and that would cause any symbols used from libc to + # always be unresolved, which means just about no library would + # ever link correctly. If we're not using GNU ld we use -z text + # though, which does catch some bad symbols but isn't as heavy-handed + # as -z defs. + _LT_TAGVAR(no_undefined_flag, $1)='$wl-z,text' + _LT_TAGVAR(allow_undefined_flag, $1)='$wl-z,nodefs' + _LT_TAGVAR(archive_cmds_need_lc, $1)=no + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-R,$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=':' + _LT_TAGVAR(link_all_deplibs, $1)=yes + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-Bexport' + runpath_var='LD_RUN_PATH' + + if test yes = "$GCC"; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + else + _LT_TAGVAR(archive_cmds, $1)='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + fi + ;; + + uts4*) + _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + *) + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + esac + + if test sni = "$host_vendor"; then + case $host in + sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-Blargedynsym' + ;; + esac + fi + fi +]) +AC_MSG_RESULT([$_LT_TAGVAR(ld_shlibs, $1)]) +test no = "$_LT_TAGVAR(ld_shlibs, $1)" && can_build_shared=no + +_LT_TAGVAR(with_gnu_ld, $1)=$with_gnu_ld + +_LT_DECL([], [libext], [0], [Old archive suffix (normally "a")])dnl +_LT_DECL([], [shrext_cmds], [1], [Shared library suffix (normally ".so")])dnl +_LT_DECL([], [extract_expsyms_cmds], [2], + [The commands to extract the exported symbol list from a shared archive]) + +# +# Do we need to explicitly link libc? +# +case "x$_LT_TAGVAR(archive_cmds_need_lc, $1)" in +x|xyes) + # Assume -lc should be added + _LT_TAGVAR(archive_cmds_need_lc, $1)=yes + + if test yes,yes = "$GCC,$enable_shared"; then + case $_LT_TAGVAR(archive_cmds, $1) in + *'~'*) + # FIXME: we may have to deal with multi-command sequences. + ;; + '$CC '*) + # Test whether the compiler implicitly links with -lc since on some + # systems, -lgcc has to come before -lc. If gcc already passes -lc + # to ld, don't add -lc before -lgcc. + AC_CACHE_CHECK([whether -lc should be explicitly linked in], + [lt_cv_]_LT_TAGVAR(archive_cmds_need_lc, $1), + [$RM conftest* + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + + if AC_TRY_EVAL(ac_compile) 2>conftest.err; then + soname=conftest + lib=conftest + libobjs=conftest.$ac_objext + deplibs= + wl=$_LT_TAGVAR(lt_prog_compiler_wl, $1) + pic_flag=$_LT_TAGVAR(lt_prog_compiler_pic, $1) + compiler_flags=-v + linker_flags=-v + verstring= + output_objdir=. + libname=conftest + lt_save_allow_undefined_flag=$_LT_TAGVAR(allow_undefined_flag, $1) + _LT_TAGVAR(allow_undefined_flag, $1)= + if AC_TRY_EVAL(_LT_TAGVAR(archive_cmds, $1) 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) + then + lt_cv_[]_LT_TAGVAR(archive_cmds_need_lc, $1)=no + else + lt_cv_[]_LT_TAGVAR(archive_cmds_need_lc, $1)=yes + fi + _LT_TAGVAR(allow_undefined_flag, $1)=$lt_save_allow_undefined_flag + else + cat conftest.err 1>&5 + fi + $RM conftest* + ]) + _LT_TAGVAR(archive_cmds_need_lc, $1)=$lt_cv_[]_LT_TAGVAR(archive_cmds_need_lc, $1) + ;; + esac + fi + ;; +esac + +_LT_TAGDECL([build_libtool_need_lc], [archive_cmds_need_lc], [0], + [Whether or not to add -lc for building shared libraries]) +_LT_TAGDECL([allow_libtool_libs_with_static_runtimes], + [enable_shared_with_static_runtimes], [0], + [Whether or not to disallow shared libs when runtime libs are static]) +_LT_TAGDECL([], [export_dynamic_flag_spec], [1], + [Compiler flag to allow reflexive dlopens]) +_LT_TAGDECL([], [whole_archive_flag_spec], [1], + [Compiler flag to generate shared objects directly from archives]) +_LT_TAGDECL([], [compiler_needs_object], [1], + [Whether the compiler copes with passing no objects directly]) +_LT_TAGDECL([], [old_archive_from_new_cmds], [2], + [Create an old-style archive from a shared archive]) +_LT_TAGDECL([], [old_archive_from_expsyms_cmds], [2], + [Create a temporary old-style archive to link instead of a shared archive]) +_LT_TAGDECL([], [archive_cmds], [2], [Commands used to build a shared archive]) +_LT_TAGDECL([], [archive_expsym_cmds], [2]) +_LT_TAGDECL([], [module_cmds], [2], + [Commands used to build a loadable module if different from building + a shared archive.]) +_LT_TAGDECL([], [module_expsym_cmds], [2]) +_LT_TAGDECL([], [with_gnu_ld], [1], + [Whether we are building with GNU ld or not]) +_LT_TAGDECL([], [allow_undefined_flag], [1], + [Flag that allows shared libraries with undefined symbols to be built]) +_LT_TAGDECL([], [no_undefined_flag], [1], + [Flag that enforces no undefined symbols]) +_LT_TAGDECL([], [hardcode_libdir_flag_spec], [1], + [Flag to hardcode $libdir into a binary during linking. + This must work even if $libdir does not exist]) +_LT_TAGDECL([], [hardcode_libdir_separator], [1], + [Whether we need a single "-rpath" flag with a separated argument]) +_LT_TAGDECL([], [hardcode_direct], [0], + [Set to "yes" if using DIR/libNAME$shared_ext during linking hardcodes + DIR into the resulting binary]) +_LT_TAGDECL([], [hardcode_direct_absolute], [0], + [Set to "yes" if using DIR/libNAME$shared_ext during linking hardcodes + DIR into the resulting binary and the resulting library dependency is + "absolute", i.e impossible to change by setting $shlibpath_var if the + library is relocated]) +_LT_TAGDECL([], [hardcode_minus_L], [0], + [Set to "yes" if using the -LDIR flag during linking hardcodes DIR + into the resulting binary]) +_LT_TAGDECL([], [hardcode_shlibpath_var], [0], + [Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR + into the resulting binary]) +_LT_TAGDECL([], [hardcode_automatic], [0], + [Set to "yes" if building a shared library automatically hardcodes DIR + into the library and all subsequent libraries and executables linked + against it]) +_LT_TAGDECL([], [inherit_rpath], [0], + [Set to yes if linker adds runtime paths of dependent libraries + to runtime path list]) +_LT_TAGDECL([], [link_all_deplibs], [0], + [Whether libtool must link a program against all its dependency libraries]) +_LT_TAGDECL([], [always_export_symbols], [0], + [Set to "yes" if exported symbols are required]) +_LT_TAGDECL([], [export_symbols_cmds], [2], + [The commands to list exported symbols]) +_LT_TAGDECL([], [exclude_expsyms], [1], + [Symbols that should not be listed in the preloaded symbols]) +_LT_TAGDECL([], [include_expsyms], [1], + [Symbols that must always be exported]) +_LT_TAGDECL([], [prelink_cmds], [2], + [Commands necessary for linking programs (against libraries) with templates]) +_LT_TAGDECL([], [postlink_cmds], [2], + [Commands necessary for finishing linking programs]) +_LT_TAGDECL([], [file_list_spec], [1], + [Specify filename containing input files]) +dnl FIXME: Not yet implemented +dnl _LT_TAGDECL([], [thread_safe_flag_spec], [1], +dnl [Compiler flag to generate thread safe objects]) +])# _LT_LINKER_SHLIBS + + +# _LT_LANG_C_CONFIG([TAG]) +# ------------------------ +# Ensure that the configuration variables for a C compiler are suitably +# defined. These variables are subsequently used by _LT_CONFIG to write +# the compiler configuration to 'libtool'. +m4_defun([_LT_LANG_C_CONFIG], +[m4_require([_LT_DECL_EGREP])dnl +lt_save_CC=$CC +AC_LANG_PUSH(C) + +# Source file extension for C test sources. +ac_ext=c + +# Object file extension for compiled C test sources. +objext=o +_LT_TAGVAR(objext, $1)=$objext + +# Code to be used in simple compile tests +lt_simple_compile_test_code="int some_variable = 0;" + +# Code to be used in simple link tests +lt_simple_link_test_code='int main(){return(0);}' + +_LT_TAG_COMPILER +# Save the default compiler, since it gets overwritten when the other +# tags are being tested, and _LT_TAGVAR(compiler, []) is a NOP. +compiler_DEFAULT=$CC + +# save warnings/boilerplate of simple test code +_LT_COMPILER_BOILERPLATE +_LT_LINKER_BOILERPLATE + +## CAVEAT EMPTOR: +## There is no encapsulation within the following macros, do not change +## the running order or otherwise move them around unless you know exactly +## what you are doing... +if test -n "$compiler"; then + _LT_COMPILER_NO_RTTI($1) + _LT_COMPILER_PIC($1) + _LT_COMPILER_C_O($1) + _LT_COMPILER_FILE_LOCKS($1) + _LT_LINKER_SHLIBS($1) + _LT_SYS_DYNAMIC_LINKER($1) + _LT_LINKER_HARDCODE_LIBPATH($1) + LT_SYS_DLOPEN_SELF + _LT_CMD_STRIPLIB + + # Report what library types will actually be built + AC_MSG_CHECKING([if libtool supports shared libraries]) + AC_MSG_RESULT([$can_build_shared]) + + AC_MSG_CHECKING([whether to build shared libraries]) + test no = "$can_build_shared" && enable_shared=no + + # On AIX, shared libraries and static libraries use the same namespace, and + # are all built from PIC. + case $host_os in + aix3*) + test yes = "$enable_shared" && enable_static=no + if test -n "$RANLIB"; then + archive_cmds="$archive_cmds~\$RANLIB \$lib" + postinstall_cmds='$RANLIB $lib' + fi + ;; + + aix[[4-9]]*) + if test ia64 != "$host_cpu"; then + case $enable_shared,$with_aix_soname,$aix_use_runtimelinking in + yes,aix,yes) ;; # shared object as lib.so file only + yes,svr4,*) ;; # shared object as lib.so archive member only + yes,*) enable_static=no ;; # shared object in lib.a archive as well + esac + fi + ;; + esac + AC_MSG_RESULT([$enable_shared]) + + AC_MSG_CHECKING([whether to build static libraries]) + # Make sure either enable_shared or enable_static is yes. + test yes = "$enable_shared" || enable_static=yes + AC_MSG_RESULT([$enable_static]) + + _LT_CONFIG($1) +fi +AC_LANG_POP +CC=$lt_save_CC +])# _LT_LANG_C_CONFIG + + +# _LT_LANG_CXX_CONFIG([TAG]) +# -------------------------- +# Ensure that the configuration variables for a C++ compiler are suitably +# defined. These variables are subsequently used by _LT_CONFIG to write +# the compiler configuration to 'libtool'. +m4_defun([_LT_LANG_CXX_CONFIG], +[m4_require([_LT_FILEUTILS_DEFAULTS])dnl +m4_require([_LT_DECL_EGREP])dnl +m4_require([_LT_PATH_MANIFEST_TOOL])dnl +if test -n "$CXX" && ( test no != "$CXX" && + ( (test g++ = "$CXX" && `g++ -v >/dev/null 2>&1` ) || + (test g++ != "$CXX"))); then + AC_PROG_CXXCPP +else + _lt_caught_CXX_error=yes +fi + +AC_LANG_PUSH(C++) +_LT_TAGVAR(archive_cmds_need_lc, $1)=no +_LT_TAGVAR(allow_undefined_flag, $1)= +_LT_TAGVAR(always_export_symbols, $1)=no +_LT_TAGVAR(archive_expsym_cmds, $1)= +_LT_TAGVAR(compiler_needs_object, $1)=no +_LT_TAGVAR(export_dynamic_flag_spec, $1)= +_LT_TAGVAR(hardcode_direct, $1)=no +_LT_TAGVAR(hardcode_direct_absolute, $1)=no +_LT_TAGVAR(hardcode_libdir_flag_spec, $1)= +_LT_TAGVAR(hardcode_libdir_separator, $1)= +_LT_TAGVAR(hardcode_minus_L, $1)=no +_LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported +_LT_TAGVAR(hardcode_automatic, $1)=no +_LT_TAGVAR(inherit_rpath, $1)=no +_LT_TAGVAR(module_cmds, $1)= +_LT_TAGVAR(module_expsym_cmds, $1)= +_LT_TAGVAR(link_all_deplibs, $1)=unknown +_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds +_LT_TAGVAR(reload_flag, $1)=$reload_flag +_LT_TAGVAR(reload_cmds, $1)=$reload_cmds +_LT_TAGVAR(no_undefined_flag, $1)= +_LT_TAGVAR(whole_archive_flag_spec, $1)= +_LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no + +# Source file extension for C++ test sources. +ac_ext=cpp + +# Object file extension for compiled C++ test sources. +objext=o +_LT_TAGVAR(objext, $1)=$objext + +# No sense in running all these tests if we already determined that +# the CXX compiler isn't working. Some variables (like enable_shared) +# are currently assumed to apply to all compilers on this platform, +# and will be corrupted by setting them based on a non-working compiler. +if test yes != "$_lt_caught_CXX_error"; then + # Code to be used in simple compile tests + lt_simple_compile_test_code="int some_variable = 0;" + + # Code to be used in simple link tests + lt_simple_link_test_code='int main(int, char *[[]]) { return(0); }' + + # ltmain only uses $CC for tagged configurations so make sure $CC is set. + _LT_TAG_COMPILER + + # save warnings/boilerplate of simple test code + _LT_COMPILER_BOILERPLATE + _LT_LINKER_BOILERPLATE + + # Allow CC to be a program name with arguments. + lt_save_CC=$CC + lt_save_CFLAGS=$CFLAGS + lt_save_LD=$LD + lt_save_GCC=$GCC + GCC=$GXX + lt_save_with_gnu_ld=$with_gnu_ld + lt_save_path_LD=$lt_cv_path_LD + if test -n "${lt_cv_prog_gnu_ldcxx+set}"; then + lt_cv_prog_gnu_ld=$lt_cv_prog_gnu_ldcxx + else + $as_unset lt_cv_prog_gnu_ld + fi + if test -n "${lt_cv_path_LDCXX+set}"; then + lt_cv_path_LD=$lt_cv_path_LDCXX + else + $as_unset lt_cv_path_LD + fi + test -z "${LDCXX+set}" || LD=$LDCXX + CC=${CXX-"c++"} + CFLAGS=$CXXFLAGS + compiler=$CC + _LT_TAGVAR(compiler, $1)=$CC + _LT_CC_BASENAME([$compiler]) + + if test -n "$compiler"; then + # We don't want -fno-exception when compiling C++ code, so set the + # no_builtin_flag separately + if test yes = "$GXX"; then + _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin' + else + _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)= + fi + + if test yes = "$GXX"; then + # Set up default GNU C++ configuration + + LT_PATH_LD + + # Check if GNU C++ uses GNU ld as the underlying linker, since the + # archiving commands below assume that GNU ld is being used. + if test yes = "$with_gnu_ld"; then + _LT_TAGVAR(archive_cmds, $1)='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' + + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-dynamic' + + # If archive_cmds runs LD, not CC, wlarc should be empty + # XXX I think wlarc can be eliminated in ltcf-cxx, but I need to + # investigate it a little bit more. (MM) + wlarc='$wl' + + # ancient GNU ld didn't support --whole-archive et. al. + if eval "`$CC -print-prog-name=ld` --help 2>&1" | + $GREP 'no-whole-archive' > /dev/null; then + _LT_TAGVAR(whole_archive_flag_spec, $1)=$wlarc'--whole-archive$convenience '$wlarc'--no-whole-archive' + else + _LT_TAGVAR(whole_archive_flag_spec, $1)= + fi + else + with_gnu_ld=no + wlarc= + + # A generic and very simple default shared library creation + # command for GNU C++ for the case where it uses the native + # linker, instead of GNU ld. If possible, this setting should + # overridden to take advantage of the native linker features on + # the platform it is being used on. + _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' + fi + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' + + else + GXX=no + with_gnu_ld=no + wlarc= + fi + + # PORTME: fill in a description of your system's C++ link characteristics + AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries]) + _LT_TAGVAR(ld_shlibs, $1)=yes + case $host_os in + aix3*) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + aix[[4-9]]*) + if test ia64 = "$host_cpu"; then + # On IA64, the linker does run time linking by default, so we don't + # have to do anything special. + aix_use_runtimelinking=no + exp_sym_flag='-Bexport' + no_entry_flag= + else + aix_use_runtimelinking=no + + # Test if we are trying to use run time linking or normal + # AIX style linking. If -brtl is somewhere in LDFLAGS, we + # have runtime linking enabled, and use it for executables. + # For shared libraries, we enable/disable runtime linking + # depending on the kind of the shared library created - + # when "with_aix_soname,aix_use_runtimelinking" is: + # "aix,no" lib.a(lib.so.V) shared, rtl:no, for executables + # "aix,yes" lib.so shared, rtl:yes, for executables + # lib.a static archive + # "both,no" lib.so.V(shr.o) shared, rtl:yes + # lib.a(lib.so.V) shared, rtl:no, for executables + # "both,yes" lib.so.V(shr.o) shared, rtl:yes, for executables + # lib.a(lib.so.V) shared, rtl:no + # "svr4,*" lib.so.V(shr.o) shared, rtl:yes, for executables + # lib.a static archive + case $host_os in aix4.[[23]]|aix4.[[23]].*|aix[[5-9]]*) + for ld_flag in $LDFLAGS; do + case $ld_flag in + *-brtl*) + aix_use_runtimelinking=yes + break + ;; + esac + done + if test svr4,no = "$with_aix_soname,$aix_use_runtimelinking"; then + # With aix-soname=svr4, we create the lib.so.V shared archives only, + # so we don't have lib.a shared libs to link our executables. + # We have to force runtime linking in this case. + aix_use_runtimelinking=yes + LDFLAGS="$LDFLAGS -Wl,-brtl" + fi + ;; + esac + + exp_sym_flag='-bexport' + no_entry_flag='-bnoentry' + fi + + # When large executables or shared objects are built, AIX ld can + # have problems creating the table of contents. If linking a library + # or program results in "error TOC overflow" add -mminimal-toc to + # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not + # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. + + _LT_TAGVAR(archive_cmds, $1)='' + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_direct_absolute, $1)=yes + _LT_TAGVAR(hardcode_libdir_separator, $1)=':' + _LT_TAGVAR(link_all_deplibs, $1)=yes + _LT_TAGVAR(file_list_spec, $1)='$wl-f,' + case $with_aix_soname,$aix_use_runtimelinking in + aix,*) ;; # no import file + svr4,* | *,yes) # use import file + # The Import File defines what to hardcode. + _LT_TAGVAR(hardcode_direct, $1)=no + _LT_TAGVAR(hardcode_direct_absolute, $1)=no + ;; + esac + + if test yes = "$GXX"; then + case $host_os in aix4.[[012]]|aix4.[[012]].*) + # We only want to do this on AIX 4.2 and lower, the check + # below for broken collect2 doesn't work under 4.3+ + collect2name=`$CC -print-prog-name=collect2` + if test -f "$collect2name" && + strings "$collect2name" | $GREP resolve_lib_name >/dev/null + then + # We have reworked collect2 + : + else + # We have old collect2 + _LT_TAGVAR(hardcode_direct, $1)=unsupported + # It fails to find uninstalled libraries when the uninstalled + # path is not listed in the libpath. Setting hardcode_minus_L + # to unsupported forces relinking + _LT_TAGVAR(hardcode_minus_L, $1)=yes + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)= + fi + esac + shared_flag='-shared' + if test yes = "$aix_use_runtimelinking"; then + shared_flag=$shared_flag' $wl-G' + fi + # Need to ensure runtime linking is disabled for the traditional + # shared library, or the linker may eventually find shared libraries + # /with/ Import File - we do not want to mix them. + shared_flag_aix='-shared' + shared_flag_svr4='-shared $wl-G' + else + # not using gcc + if test ia64 = "$host_cpu"; then + # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release + # chokes on -Wl,-G. The following line is correct: + shared_flag='-G' + else + if test yes = "$aix_use_runtimelinking"; then + shared_flag='$wl-G' + else + shared_flag='$wl-bM:SRE' + fi + shared_flag_aix='$wl-bM:SRE' + shared_flag_svr4='$wl-G' + fi + fi + + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-bexpall' + # It seems that -bexpall does not export symbols beginning with + # underscore (_), so it is better to generate a list of symbols to + # export. + _LT_TAGVAR(always_export_symbols, $1)=yes + if test aix,yes = "$with_aix_soname,$aix_use_runtimelinking"; then + # Warning - without using the other runtime loading flags (-brtl), + # -berok will link without error, but may produce a broken library. + # The "-G" linker flag allows undefined symbols. + _LT_TAGVAR(no_undefined_flag, $1)='-bernotok' + # Determine the default libpath from the value encoded in an empty + # executable. + _LT_SYS_MODULE_PATH_AIX([$1]) + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-blibpath:$libdir:'"$aix_libpath" + + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $deplibs $wl'$no_entry_flag' $compiler_flags `if test -n "$allow_undefined_flag"; then func_echo_all "$wl$allow_undefined_flag"; else :; fi` $wl'$exp_sym_flag:\$export_symbols' '$shared_flag + else + if test ia64 = "$host_cpu"; then + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-R $libdir:/usr/lib:/lib' + _LT_TAGVAR(allow_undefined_flag, $1)="-z nodefs" + _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\$wl$no_entry_flag"' $compiler_flags $wl$allow_undefined_flag '"\$wl$exp_sym_flag:\$export_symbols" + else + # Determine the default libpath from the value encoded in an + # empty executable. + _LT_SYS_MODULE_PATH_AIX([$1]) + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-blibpath:$libdir:'"$aix_libpath" + # Warning - without using the other run time loading flags, + # -berok will link without error, but may produce a broken library. + _LT_TAGVAR(no_undefined_flag, $1)=' $wl-bernotok' + _LT_TAGVAR(allow_undefined_flag, $1)=' $wl-berok' + if test yes = "$with_gnu_ld"; then + # We only use this code for GNU lds that support --whole-archive. + _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive$convenience $wl--no-whole-archive' + else + # Exported symbols can be pulled into shared objects from archives + _LT_TAGVAR(whole_archive_flag_spec, $1)='$convenience' + fi + _LT_TAGVAR(archive_cmds_need_lc, $1)=yes + _LT_TAGVAR(archive_expsym_cmds, $1)='$RM -r $output_objdir/$realname.d~$MKDIR $output_objdir/$realname.d' + # -brtl affects multiple linker settings, -berok does not and is overridden later + compiler_flags_filtered='`func_echo_all "$compiler_flags " | $SED -e "s%-brtl\\([[, ]]\\)%-berok\\1%g"`' + if test svr4 != "$with_aix_soname"; then + # This is similar to how AIX traditionally builds its shared + # libraries. Need -bnortl late, we may have -brtl in LDFLAGS. + _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$CC '$shared_flag_aix' -o $output_objdir/$realname.d/$soname $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$realname.d/$soname' + fi + if test aix != "$with_aix_soname"; then + _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$CC '$shared_flag_svr4' -o $output_objdir/$realname.d/$shared_archive_member_spec.o $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$STRIP -e $output_objdir/$realname.d/$shared_archive_member_spec.o~( func_echo_all "#! $soname($shared_archive_member_spec.o)"; if test shr_64 = "$shared_archive_member_spec"; then func_echo_all "# 64"; else func_echo_all "# 32"; fi; cat $export_symbols ) > $output_objdir/$realname.d/$shared_archive_member_spec.imp~$AR $AR_FLAGS $output_objdir/$soname $output_objdir/$realname.d/$shared_archive_member_spec.o $output_objdir/$realname.d/$shared_archive_member_spec.imp' + else + # used by -dlpreopen to get the symbols + _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$MV $output_objdir/$realname.d/$soname $output_objdir' + fi + _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$RM -r $output_objdir/$realname.d' + fi + fi + ;; + + beos*) + if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then + _LT_TAGVAR(allow_undefined_flag, $1)=unsupported + # Joseph Beckenbach says some releases of gcc + # support --undefined. This deserves some investigation. FIXME + _LT_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + else + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + + chorus*) + case $cc_basename in + *) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + esac + ;; + + cygwin* | mingw* | pw32* | cegcc*) + case $GXX,$cc_basename in + ,cl* | no,cl*) + # Native MSVC + # hardcode_libdir_flag_spec is actually meaningless, as there is + # no search path for DLLs. + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' ' + _LT_TAGVAR(allow_undefined_flag, $1)=unsupported + _LT_TAGVAR(always_export_symbols, $1)=yes + _LT_TAGVAR(file_list_spec, $1)='@' + # Tell ltmain to make .lib files, not .a files. + libext=lib + # Tell ltmain to make .dll files, not .so files. + shrext_cmds=.dll + # FIXME: Setting linknames here is a bad hack. + _LT_TAGVAR(archive_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~linknames=' + _LT_TAGVAR(archive_expsym_cmds, $1)='if _LT_DLL_DEF_P([$export_symbols]); then + cp "$export_symbols" "$output_objdir/$soname.def"; + echo "$tool_output_objdir$soname.def" > "$output_objdir/$soname.exp"; + else + $SED -e '\''s/^/-link -EXPORT:/'\'' < $export_symbols > $output_objdir/$soname.exp; + fi~ + $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~ + linknames=' + # The linker will not automatically build a static lib if we build a DLL. + # _LT_TAGVAR(old_archive_from_new_cmds, $1)='true' + _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes + # Don't use ranlib + _LT_TAGVAR(old_postinstall_cmds, $1)='chmod 644 $oldlib' + _LT_TAGVAR(postlink_cmds, $1)='lt_outputfile="@OUTPUT@"~ + lt_tool_outputfile="@TOOL_OUTPUT@"~ + case $lt_outputfile in + *.exe|*.EXE) ;; + *) + lt_outputfile=$lt_outputfile.exe + lt_tool_outputfile=$lt_tool_outputfile.exe + ;; + esac~ + func_to_tool_file "$lt_outputfile"~ + if test : != "$MANIFEST_TOOL" && test -f "$lt_outputfile.manifest"; then + $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1; + $RM "$lt_outputfile.manifest"; + fi' + ;; + *) + # g++ + # _LT_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless, + # as there is no search path for DLLs. + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-all-symbols' + _LT_TAGVAR(allow_undefined_flag, $1)=unsupported + _LT_TAGVAR(always_export_symbols, $1)=no + _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes + + if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + # If the export-symbols file already is a .def file, use it as + # is; otherwise, prepend EXPORTS... + _LT_TAGVAR(archive_expsym_cmds, $1)='if _LT_DLL_DEF_P([$export_symbols]); then + cp $export_symbols $output_objdir/$soname.def; + else + echo EXPORTS > $output_objdir/$soname.def; + cat $export_symbols >> $output_objdir/$soname.def; + fi~ + $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + else + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + esac + ;; + darwin* | rhapsody*) + _LT_DARWIN_LINKER_FEATURES($1) + ;; + + os2*) + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_TAGVAR(hardcode_minus_L, $1)=yes + _LT_TAGVAR(allow_undefined_flag, $1)=unsupported + shrext_cmds=.dll + _LT_TAGVAR(archive_cmds, $1)='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ + $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ + $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ + $ECHO EXPORTS >> $output_objdir/$libname.def~ + emxexp $libobjs | $SED /"_DLL_InitTerm"/d >> $output_objdir/$libname.def~ + $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ + emximp -o $lib $output_objdir/$libname.def' + _LT_TAGVAR(archive_expsym_cmds, $1)='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ + $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ + $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ + $ECHO EXPORTS >> $output_objdir/$libname.def~ + prefix_cmds="$SED"~ + if test EXPORTS = "`$SED 1q $export_symbols`"; then + prefix_cmds="$prefix_cmds -e 1d"; + fi~ + prefix_cmds="$prefix_cmds -e \"s/^\(.*\)$/_\1/g\""~ + cat $export_symbols | $prefix_cmds >> $output_objdir/$libname.def~ + $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ + emximp -o $lib $output_objdir/$libname.def' + _LT_TAGVAR(old_archive_From_new_cmds, $1)='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def' + _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes + ;; + + dgux*) + case $cc_basename in + ec++*) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + ghcx*) + # Green Hills C++ Compiler + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + *) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + esac + ;; + + freebsd2.*) + # C++ shared libraries reported to be fairly broken before + # switch to ELF + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + + freebsd-elf*) + _LT_TAGVAR(archive_cmds_need_lc, $1)=no + ;; + + freebsd* | dragonfly*) + # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF + # conventions + _LT_TAGVAR(ld_shlibs, $1)=yes + ;; + + haiku*) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + _LT_TAGVAR(link_all_deplibs, $1)=yes + ;; + + hpux9*) + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl+b $wl$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E' + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH, + # but as the default + # location of the library. + + case $cc_basename in + CC*) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + aCC*) + _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -b $wl+b $wl$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib' + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $EGREP "\-L"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' + ;; + *) + if test yes = "$GXX"; then + _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -shared -nostdlib $pic_flag $wl+b $wl$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib' + else + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + esac + ;; + + hpux10*|hpux11*) + if test no = "$with_gnu_ld"; then + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl+b $wl$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + + case $host_cpu in + hppa*64*|ia64*) + ;; + *) + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E' + ;; + esac + fi + case $host_cpu in + hppa*64*|ia64*) + _LT_TAGVAR(hardcode_direct, $1)=no + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + *) + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_direct_absolute, $1)=yes + _LT_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH, + # but as the default + # location of the library. + ;; + esac + + case $cc_basename in + CC*) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + aCC*) + case $host_cpu in + hppa*64*) + _LT_TAGVAR(archive_cmds, $1)='$CC -b $wl+h $wl$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + ia64*) + _LT_TAGVAR(archive_cmds, $1)='$CC -b $wl+h $wl$soname $wl+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + *) + _LT_TAGVAR(archive_cmds, $1)='$CC -b $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + esac + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $GREP "\-L"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' + ;; + *) + if test yes = "$GXX"; then + if test no = "$with_gnu_ld"; then + case $host_cpu in + hppa*64*) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC $wl+h $wl$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + ia64*) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $pic_flag $wl+h $wl$soname $wl+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + *) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $pic_flag $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + esac + fi + else + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + esac + ;; + + interix[[3-9]]*) + _LT_TAGVAR(hardcode_direct, $1)=no + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E' + # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. + # Instead, shared libraries are loaded at an image base (0x10000000 by + # default) and relocated if they conflict, which is a slow very memory + # consuming and fragmenting process. To avoid this, we pick a random, + # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link + # time. Moving up from 0x10000000 also allows more sbrk(2) space. + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='sed "s|^|_|" $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--retain-symbols-file,$output_objdir/$soname.expsym $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + ;; + irix5* | irix6*) + case $cc_basename in + CC*) + # SGI C++ + _LT_TAGVAR(archive_cmds, $1)='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' + + # Archives containing C++ object files must be created using + # "CC -ar", where "CC" is the IRIX C++ compiler. This is + # necessary to make sure instantiated templates are included + # in the archive. + _LT_TAGVAR(old_archive_cmds, $1)='$CC -ar -WR,-u -o $oldlib $oldobjs' + ;; + *) + if test yes = "$GXX"; then + if test no = "$with_gnu_ld"; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' + else + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` -o $lib' + fi + fi + _LT_TAGVAR(link_all_deplibs, $1)=yes + ;; + esac + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + _LT_TAGVAR(inherit_rpath, $1)=yes + ;; + + linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) + case $cc_basename in + KCC*) + # Kuck and Associates, Inc. (KAI) C++ Compiler + + # KCC will only create a shared library if the output file + # ends with ".so" (or ".sl" for HP-UX), so rename the library + # to its proper name (with version) after linking. + _LT_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\$tempext\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\$tempext\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib $wl-retain-symbols-file,$export_symbols; mv \$templib $lib' + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | $GREP "ld"`; rm -f libconftest$shared_ext; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' + + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-dynamic' + + # Archives containing C++ object files must be created using + # "CC -Bstatic", where "CC" is the KAI C++ compiler. + _LT_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs' + ;; + icpc* | ecpc* ) + # Intel C++ + with_gnu_ld=yes + # version 8.0 and above of icpc choke on multiply defined symbols + # if we add $predep_objects and $postdep_objects, however 7.1 and + # earlier do not add the objects themselves. + case `$CC -V 2>&1` in + *"Version 7."*) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' + ;; + *) # Version 8.0 or newer + tmp_idyn= + case $host_cpu in + ia64*) tmp_idyn=' -i_dynamic';; + esac + _LT_TAGVAR(archive_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' + ;; + esac + _LT_TAGVAR(archive_cmds_need_lc, $1)=no + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-dynamic' + _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive$convenience $wl--no-whole-archive' + ;; + pgCC* | pgcpp*) + # Portland Group C++ compiler + case `$CC -V` in + *pgCC\ [[1-5]].* | *pgcpp\ [[1-5]].*) + _LT_TAGVAR(prelink_cmds, $1)='tpldir=Template.dir~ + rm -rf $tpldir~ + $CC --prelink_objects --instantiation_dir $tpldir $objs $libobjs $compile_deplibs~ + compile_command="$compile_command `find $tpldir -name \*.o | sort | $NL2SP`"' + _LT_TAGVAR(old_archive_cmds, $1)='tpldir=Template.dir~ + rm -rf $tpldir~ + $CC --prelink_objects --instantiation_dir $tpldir $oldobjs$old_deplibs~ + $AR $AR_FLAGS $oldlib$oldobjs$old_deplibs `find $tpldir -name \*.o | sort | $NL2SP`~ + $RANLIB $oldlib' + _LT_TAGVAR(archive_cmds, $1)='tpldir=Template.dir~ + rm -rf $tpldir~ + $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~ + $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='tpldir=Template.dir~ + rm -rf $tpldir~ + $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~ + $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' + ;; + *) # Version 6 and above use weak symbols + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' + ;; + esac + + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl--rpath $wl$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-dynamic' + _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' + ;; + cxx*) + # Compaq C++ + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib $wl-retain-symbols-file $wl$export_symbols' + + runpath_var=LD_RUN_PATH + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "X$list" | $Xsed' + ;; + xl* | mpixl* | bgxl*) + # IBM XL 8.0 on PPC, with GNU ld + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-dynamic' + _LT_TAGVAR(archive_cmds, $1)='$CC -qmkshrobj $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + if test yes = "$supports_anon_versioning"; then + _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~ + cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ + echo "local: *; };" >> $output_objdir/$libname.ver~ + $CC -qmkshrobj $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-version-script $wl$output_objdir/$libname.ver -o $lib' + fi + ;; + *) + case `$CC -V 2>&1 | sed 5q` in + *Sun\ C*) + # Sun C++ 5.9 + _LT_TAGVAR(no_undefined_flag, $1)=' -zdefs' + _LT_TAGVAR(archive_cmds, $1)='$CC -G$allow_undefined_flag -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G$allow_undefined_flag -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-retain-symbols-file $wl$export_symbols' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' + _LT_TAGVAR(compiler_needs_object, $1)=yes + + # Not sure whether something based on + # $CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 + # would be better. + output_verbose_link_cmd='func_echo_all' + + # Archives containing C++ object files must be created using + # "CC -xar", where "CC" is the Sun C++ compiler. This is + # necessary to make sure instantiated templates are included + # in the archive. + _LT_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs' + ;; + esac + ;; + esac + ;; + + lynxos*) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + + m88k*) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + + mvs*) + case $cc_basename in + cxx*) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + *) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + esac + ;; + + netbsd*) + if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then + _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $predep_objects $libobjs $deplibs $postdep_objects $linker_flags' + wlarc= + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + fi + # Workaround some broken pre-1.5 toolchains + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP conftest.$objext | $SED -e "s:-lgcc -lc -lgcc::"' + ;; + + *nto* | *qnx*) + _LT_TAGVAR(ld_shlibs, $1)=yes + ;; + + openbsd* | bitrig*) + if test -f /usr/libexec/ld.so; then + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + _LT_TAGVAR(hardcode_direct_absolute, $1)=yes + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir' + if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`"; then + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-retain-symbols-file,$export_symbols -o $lib' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E' + _LT_TAGVAR(whole_archive_flag_spec, $1)=$wlarc'--whole-archive$convenience '$wlarc'--no-whole-archive' + fi + output_verbose_link_cmd=func_echo_all + else + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + + osf3* | osf4* | osf5*) + case $cc_basename in + KCC*) + # Kuck and Associates, Inc. (KAI) C++ Compiler + + # KCC will only create a shared library if the output file + # ends with ".so" (or ".sl" for HP-UX), so rename the library + # to its proper name (with version) after linking. + _LT_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo "$lib" | $SED -e "s/\$tempext\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' + + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + + # Archives containing C++ object files must be created using + # the KAI C++ compiler. + case $host in + osf3*) _LT_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs' ;; + *) _LT_TAGVAR(old_archive_cmds, $1)='$CC -o $oldlib $oldobjs' ;; + esac + ;; + RCC*) + # Rational C++ 2.4.1 + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + cxx*) + case $host in + osf3*) + _LT_TAGVAR(allow_undefined_flag, $1)=' $wl-expect_unresolved $wl\*' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $soname `test -n "$verstring" && func_echo_all "$wl-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' + ;; + *) + _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done~ + echo "-hidden">> $lib.exp~ + $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname $wl-input $wl$lib.exp `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib~ + $RM $lib.exp' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' + ;; + esac + + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld" | $GREP -v "ld:"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' + ;; + *) + if test yes,no = "$GXX,$with_gnu_ld"; then + _LT_TAGVAR(allow_undefined_flag, $1)=' $wl-expect_unresolved $wl\*' + case $host in + osf3*) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' + ;; + *) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-msym $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' + ;; + esac + + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' + + else + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + esac + ;; + + psos*) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + + sunos4*) + case $cc_basename in + CC*) + # Sun C++ 4.x + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + lcc*) + # Lucid + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + *) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + esac + ;; + + solaris*) + case $cc_basename in + CC* | sunCC*) + # Sun C++ 4.2, 5.x and Centerline C++ + _LT_TAGVAR(archive_cmds_need_lc,$1)=yes + _LT_TAGVAR(no_undefined_flag, $1)=' -zdefs' + _LT_TAGVAR(archive_cmds, $1)='$CC -G$allow_undefined_flag -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ + $CC -G$allow_undefined_flag $wl-M $wl$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' + + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + case $host_os in + solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; + *) + # The compiler driver will combine and reorder linker options, + # but understands '-z linker_flag'. + # Supported since Solaris 2.6 (maybe 2.5.1?) + _LT_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract' + ;; + esac + _LT_TAGVAR(link_all_deplibs, $1)=yes + + output_verbose_link_cmd='func_echo_all' + + # Archives containing C++ object files must be created using + # "CC -xar", where "CC" is the Sun C++ compiler. This is + # necessary to make sure instantiated templates are included + # in the archive. + _LT_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs' + ;; + gcx*) + # Green Hills C++ Compiler + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-h $wl$soname -o $lib' + + # The C++ compiler must be used to create the archive. + _LT_TAGVAR(old_archive_cmds, $1)='$CC $LDFLAGS -archive -o $oldlib $oldobjs' + ;; + *) + # GNU C++ compiler with Solaris linker + if test yes,no = "$GXX,$with_gnu_ld"; then + _LT_TAGVAR(no_undefined_flag, $1)=' $wl-z ${wl}defs' + if $CC --version | $GREP -v '^2\.7' > /dev/null; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-h $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ + $CC -shared $pic_flag -nostdlib $wl-M $wl$lib.exp $wl-h $wl$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' + else + # g++ 2.7 appears to require '-G' NOT '-shared' on this + # platform. + _LT_TAGVAR(archive_cmds, $1)='$CC -G -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-h $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ + $CC -G -nostdlib $wl-M $wl$lib.exp $wl-h $wl$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + output_verbose_link_cmd='$CC -G $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' + fi + + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-R $wl$libdir' + case $host_os in + solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; + *) + _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl-z ${wl}allextract$convenience $wl-z ${wl}defaultextract' + ;; + esac + fi + ;; + esac + ;; + + sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7* | sco3.2v5.0.[[024]]*) + _LT_TAGVAR(no_undefined_flag, $1)='$wl-z,text' + _LT_TAGVAR(archive_cmds_need_lc, $1)=no + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + runpath_var='LD_RUN_PATH' + + case $cc_basename in + CC*) + _LT_TAGVAR(archive_cmds, $1)='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + *) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + ;; + + sysv5* | sco3.2v5* | sco5v6*) + # Note: We CANNOT use -z defs as we might desire, because we do not + # link with -lc, and that would cause any symbols used from libc to + # always be unresolved, which means just about no library would + # ever link correctly. If we're not using GNU ld we use -z text + # though, which does catch some bad symbols but isn't as heavy-handed + # as -z defs. + _LT_TAGVAR(no_undefined_flag, $1)='$wl-z,text' + _LT_TAGVAR(allow_undefined_flag, $1)='$wl-z,nodefs' + _LT_TAGVAR(archive_cmds_need_lc, $1)=no + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-R,$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=':' + _LT_TAGVAR(link_all_deplibs, $1)=yes + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-Bexport' + runpath_var='LD_RUN_PATH' + + case $cc_basename in + CC*) + _LT_TAGVAR(archive_cmds, $1)='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(old_archive_cmds, $1)='$CC -Tprelink_objects $oldobjs~ + '"$_LT_TAGVAR(old_archive_cmds, $1)" + _LT_TAGVAR(reload_cmds, $1)='$CC -Tprelink_objects $reload_objs~ + '"$_LT_TAGVAR(reload_cmds, $1)" + ;; + *) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + ;; + + tandem*) + case $cc_basename in + NCC*) + # NonStop-UX NCC 3.20 + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + *) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + esac + ;; + + vxworks*) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + + *) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + esac + + AC_MSG_RESULT([$_LT_TAGVAR(ld_shlibs, $1)]) + test no = "$_LT_TAGVAR(ld_shlibs, $1)" && can_build_shared=no + + _LT_TAGVAR(GCC, $1)=$GXX + _LT_TAGVAR(LD, $1)=$LD + + ## CAVEAT EMPTOR: + ## There is no encapsulation within the following macros, do not change + ## the running order or otherwise move them around unless you know exactly + ## what you are doing... + _LT_SYS_HIDDEN_LIBDEPS($1) + _LT_COMPILER_PIC($1) + _LT_COMPILER_C_O($1) + _LT_COMPILER_FILE_LOCKS($1) + _LT_LINKER_SHLIBS($1) + _LT_SYS_DYNAMIC_LINKER($1) + _LT_LINKER_HARDCODE_LIBPATH($1) + + _LT_CONFIG($1) + fi # test -n "$compiler" + + CC=$lt_save_CC + CFLAGS=$lt_save_CFLAGS + LDCXX=$LD + LD=$lt_save_LD + GCC=$lt_save_GCC + with_gnu_ld=$lt_save_with_gnu_ld + lt_cv_path_LDCXX=$lt_cv_path_LD + lt_cv_path_LD=$lt_save_path_LD + lt_cv_prog_gnu_ldcxx=$lt_cv_prog_gnu_ld + lt_cv_prog_gnu_ld=$lt_save_with_gnu_ld +fi # test yes != "$_lt_caught_CXX_error" + +AC_LANG_POP +])# _LT_LANG_CXX_CONFIG + + +# _LT_FUNC_STRIPNAME_CNF +# ---------------------- +# func_stripname_cnf prefix suffix name +# strip PREFIX and SUFFIX off of NAME. +# PREFIX and SUFFIX must not contain globbing or regex special +# characters, hashes, percent signs, but SUFFIX may contain a leading +# dot (in which case that matches only a dot). +# +# This function is identical to the (non-XSI) version of func_stripname, +# except this one can be used by m4 code that may be executed by configure, +# rather than the libtool script. +m4_defun([_LT_FUNC_STRIPNAME_CNF],[dnl +AC_REQUIRE([_LT_DECL_SED]) +AC_REQUIRE([_LT_PROG_ECHO_BACKSLASH]) +func_stripname_cnf () +{ + case @S|@2 in + .*) func_stripname_result=`$ECHO "@S|@3" | $SED "s%^@S|@1%%; s%\\\\@S|@2\$%%"`;; + *) func_stripname_result=`$ECHO "@S|@3" | $SED "s%^@S|@1%%; s%@S|@2\$%%"`;; + esac +} # func_stripname_cnf +])# _LT_FUNC_STRIPNAME_CNF + + +# _LT_SYS_HIDDEN_LIBDEPS([TAGNAME]) +# --------------------------------- +# Figure out "hidden" library dependencies from verbose +# compiler output when linking a shared library. +# Parse the compiler output and extract the necessary +# objects, libraries and library flags. +m4_defun([_LT_SYS_HIDDEN_LIBDEPS], +[m4_require([_LT_FILEUTILS_DEFAULTS])dnl +AC_REQUIRE([_LT_FUNC_STRIPNAME_CNF])dnl +# Dependencies to place before and after the object being linked: +_LT_TAGVAR(predep_objects, $1)= +_LT_TAGVAR(postdep_objects, $1)= +_LT_TAGVAR(predeps, $1)= +_LT_TAGVAR(postdeps, $1)= +_LT_TAGVAR(compiler_lib_search_path, $1)= + +dnl we can't use the lt_simple_compile_test_code here, +dnl because it contains code intended for an executable, +dnl not a library. It's possible we should let each +dnl tag define a new lt_????_link_test_code variable, +dnl but it's only used here... +m4_if([$1], [], [cat > conftest.$ac_ext <<_LT_EOF +int a; +void foo (void) { a = 0; } +_LT_EOF +], [$1], [CXX], [cat > conftest.$ac_ext <<_LT_EOF +class Foo +{ +public: + Foo (void) { a = 0; } +private: + int a; +}; +_LT_EOF +], [$1], [F77], [cat > conftest.$ac_ext <<_LT_EOF + subroutine foo + implicit none + integer*4 a + a=0 + return + end +_LT_EOF +], [$1], [FC], [cat > conftest.$ac_ext <<_LT_EOF + subroutine foo + implicit none + integer a + a=0 + return + end +_LT_EOF +], [$1], [GCJ], [cat > conftest.$ac_ext <<_LT_EOF +public class foo { + private int a; + public void bar (void) { + a = 0; + } +}; +_LT_EOF +], [$1], [GO], [cat > conftest.$ac_ext <<_LT_EOF +package foo +func foo() { +} +_LT_EOF +]) + +_lt_libdeps_save_CFLAGS=$CFLAGS +case "$CC $CFLAGS " in #( +*\ -flto*\ *) CFLAGS="$CFLAGS -fno-lto" ;; +*\ -fwhopr*\ *) CFLAGS="$CFLAGS -fno-whopr" ;; +*\ -fuse-linker-plugin*\ *) CFLAGS="$CFLAGS -fno-use-linker-plugin" ;; +esac + +dnl Parse the compiler output and extract the necessary +dnl objects, libraries and library flags. +if AC_TRY_EVAL(ac_compile); then + # Parse the compiler output and extract the necessary + # objects, libraries and library flags. + + # Sentinel used to keep track of whether or not we are before + # the conftest object file. + pre_test_object_deps_done=no + + for p in `eval "$output_verbose_link_cmd"`; do + case $prev$p in + + -L* | -R* | -l*) + # Some compilers place space between "-{L,R}" and the path. + # Remove the space. + if test x-L = "$p" || + test x-R = "$p"; then + prev=$p + continue + fi + + # Expand the sysroot to ease extracting the directories later. + if test -z "$prev"; then + case $p in + -L*) func_stripname_cnf '-L' '' "$p"; prev=-L; p=$func_stripname_result ;; + -R*) func_stripname_cnf '-R' '' "$p"; prev=-R; p=$func_stripname_result ;; + -l*) func_stripname_cnf '-l' '' "$p"; prev=-l; p=$func_stripname_result ;; + esac + fi + case $p in + =*) func_stripname_cnf '=' '' "$p"; p=$lt_sysroot$func_stripname_result ;; + esac + if test no = "$pre_test_object_deps_done"; then + case $prev in + -L | -R) + # Internal compiler library paths should come after those + # provided the user. The postdeps already come after the + # user supplied libs so there is no need to process them. + if test -z "$_LT_TAGVAR(compiler_lib_search_path, $1)"; then + _LT_TAGVAR(compiler_lib_search_path, $1)=$prev$p + else + _LT_TAGVAR(compiler_lib_search_path, $1)="${_LT_TAGVAR(compiler_lib_search_path, $1)} $prev$p" + fi + ;; + # The "-l" case would never come before the object being + # linked, so don't bother handling this case. + esac + else + if test -z "$_LT_TAGVAR(postdeps, $1)"; then + _LT_TAGVAR(postdeps, $1)=$prev$p + else + _LT_TAGVAR(postdeps, $1)="${_LT_TAGVAR(postdeps, $1)} $prev$p" + fi + fi + prev= + ;; + + *.lto.$objext) ;; # Ignore GCC LTO objects + *.$objext) + # This assumes that the test object file only shows up + # once in the compiler output. + if test "$p" = "conftest.$objext"; then + pre_test_object_deps_done=yes + continue + fi + + if test no = "$pre_test_object_deps_done"; then + if test -z "$_LT_TAGVAR(predep_objects, $1)"; then + _LT_TAGVAR(predep_objects, $1)=$p + else + _LT_TAGVAR(predep_objects, $1)="$_LT_TAGVAR(predep_objects, $1) $p" + fi + else + if test -z "$_LT_TAGVAR(postdep_objects, $1)"; then + _LT_TAGVAR(postdep_objects, $1)=$p + else + _LT_TAGVAR(postdep_objects, $1)="$_LT_TAGVAR(postdep_objects, $1) $p" + fi + fi + ;; + + *) ;; # Ignore the rest. + + esac + done + + # Clean up. + rm -f a.out a.exe +else + echo "libtool.m4: error: problem compiling $1 test program" +fi + +$RM -f confest.$objext +CFLAGS=$_lt_libdeps_save_CFLAGS + +# PORTME: override above test on systems where it is broken +m4_if([$1], [CXX], +[case $host_os in +interix[[3-9]]*) + # Interix 3.5 installs completely hosed .la files for C++, so rather than + # hack all around it, let's just trust "g++" to DTRT. + _LT_TAGVAR(predep_objects,$1)= + _LT_TAGVAR(postdep_objects,$1)= + _LT_TAGVAR(postdeps,$1)= + ;; +esac +]) + +case " $_LT_TAGVAR(postdeps, $1) " in +*" -lc "*) _LT_TAGVAR(archive_cmds_need_lc, $1)=no ;; +esac + _LT_TAGVAR(compiler_lib_search_dirs, $1)= +if test -n "${_LT_TAGVAR(compiler_lib_search_path, $1)}"; then + _LT_TAGVAR(compiler_lib_search_dirs, $1)=`echo " ${_LT_TAGVAR(compiler_lib_search_path, $1)}" | $SED -e 's! -L! !g' -e 's!^ !!'` +fi +_LT_TAGDECL([], [compiler_lib_search_dirs], [1], + [The directories searched by this compiler when creating a shared library]) +_LT_TAGDECL([], [predep_objects], [1], + [Dependencies to place before and after the objects being linked to + create a shared library]) +_LT_TAGDECL([], [postdep_objects], [1]) +_LT_TAGDECL([], [predeps], [1]) +_LT_TAGDECL([], [postdeps], [1]) +_LT_TAGDECL([], [compiler_lib_search_path], [1], + [The library search path used internally by the compiler when linking + a shared library]) +])# _LT_SYS_HIDDEN_LIBDEPS + + +# _LT_LANG_F77_CONFIG([TAG]) +# -------------------------- +# Ensure that the configuration variables for a Fortran 77 compiler are +# suitably defined. These variables are subsequently used by _LT_CONFIG +# to write the compiler configuration to 'libtool'. +m4_defun([_LT_LANG_F77_CONFIG], +[AC_LANG_PUSH(Fortran 77) +if test -z "$F77" || test no = "$F77"; then + _lt_disable_F77=yes +fi + +_LT_TAGVAR(archive_cmds_need_lc, $1)=no +_LT_TAGVAR(allow_undefined_flag, $1)= +_LT_TAGVAR(always_export_symbols, $1)=no +_LT_TAGVAR(archive_expsym_cmds, $1)= +_LT_TAGVAR(export_dynamic_flag_spec, $1)= +_LT_TAGVAR(hardcode_direct, $1)=no +_LT_TAGVAR(hardcode_direct_absolute, $1)=no +_LT_TAGVAR(hardcode_libdir_flag_spec, $1)= +_LT_TAGVAR(hardcode_libdir_separator, $1)= +_LT_TAGVAR(hardcode_minus_L, $1)=no +_LT_TAGVAR(hardcode_automatic, $1)=no +_LT_TAGVAR(inherit_rpath, $1)=no +_LT_TAGVAR(module_cmds, $1)= +_LT_TAGVAR(module_expsym_cmds, $1)= +_LT_TAGVAR(link_all_deplibs, $1)=unknown +_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds +_LT_TAGVAR(reload_flag, $1)=$reload_flag +_LT_TAGVAR(reload_cmds, $1)=$reload_cmds +_LT_TAGVAR(no_undefined_flag, $1)= +_LT_TAGVAR(whole_archive_flag_spec, $1)= +_LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no + +# Source file extension for f77 test sources. +ac_ext=f + +# Object file extension for compiled f77 test sources. +objext=o +_LT_TAGVAR(objext, $1)=$objext + +# No sense in running all these tests if we already determined that +# the F77 compiler isn't working. Some variables (like enable_shared) +# are currently assumed to apply to all compilers on this platform, +# and will be corrupted by setting them based on a non-working compiler. +if test yes != "$_lt_disable_F77"; then + # Code to be used in simple compile tests + lt_simple_compile_test_code="\ + subroutine t + return + end +" + + # Code to be used in simple link tests + lt_simple_link_test_code="\ + program t + end +" + + # ltmain only uses $CC for tagged configurations so make sure $CC is set. + _LT_TAG_COMPILER + + # save warnings/boilerplate of simple test code + _LT_COMPILER_BOILERPLATE + _LT_LINKER_BOILERPLATE + + # Allow CC to be a program name with arguments. + lt_save_CC=$CC + lt_save_GCC=$GCC + lt_save_CFLAGS=$CFLAGS + CC=${F77-"f77"} + CFLAGS=$FFLAGS + compiler=$CC + _LT_TAGVAR(compiler, $1)=$CC + _LT_CC_BASENAME([$compiler]) + GCC=$G77 + if test -n "$compiler"; then + AC_MSG_CHECKING([if libtool supports shared libraries]) + AC_MSG_RESULT([$can_build_shared]) + + AC_MSG_CHECKING([whether to build shared libraries]) + test no = "$can_build_shared" && enable_shared=no + + # On AIX, shared libraries and static libraries use the same namespace, and + # are all built from PIC. + case $host_os in + aix3*) + test yes = "$enable_shared" && enable_static=no + if test -n "$RANLIB"; then + archive_cmds="$archive_cmds~\$RANLIB \$lib" + postinstall_cmds='$RANLIB $lib' + fi + ;; + aix[[4-9]]*) + if test ia64 != "$host_cpu"; then + case $enable_shared,$with_aix_soname,$aix_use_runtimelinking in + yes,aix,yes) ;; # shared object as lib.so file only + yes,svr4,*) ;; # shared object as lib.so archive member only + yes,*) enable_static=no ;; # shared object in lib.a archive as well + esac + fi + ;; + esac + AC_MSG_RESULT([$enable_shared]) + + AC_MSG_CHECKING([whether to build static libraries]) + # Make sure either enable_shared or enable_static is yes. + test yes = "$enable_shared" || enable_static=yes + AC_MSG_RESULT([$enable_static]) + + _LT_TAGVAR(GCC, $1)=$G77 + _LT_TAGVAR(LD, $1)=$LD + + ## CAVEAT EMPTOR: + ## There is no encapsulation within the following macros, do not change + ## the running order or otherwise move them around unless you know exactly + ## what you are doing... + _LT_COMPILER_PIC($1) + _LT_COMPILER_C_O($1) + _LT_COMPILER_FILE_LOCKS($1) + _LT_LINKER_SHLIBS($1) + _LT_SYS_DYNAMIC_LINKER($1) + _LT_LINKER_HARDCODE_LIBPATH($1) + + _LT_CONFIG($1) + fi # test -n "$compiler" + + GCC=$lt_save_GCC + CC=$lt_save_CC + CFLAGS=$lt_save_CFLAGS +fi # test yes != "$_lt_disable_F77" + +AC_LANG_POP +])# _LT_LANG_F77_CONFIG + + +# _LT_LANG_FC_CONFIG([TAG]) +# ------------------------- +# Ensure that the configuration variables for a Fortran compiler are +# suitably defined. These variables are subsequently used by _LT_CONFIG +# to write the compiler configuration to 'libtool'. +m4_defun([_LT_LANG_FC_CONFIG], +[AC_LANG_PUSH(Fortran) + +if test -z "$FC" || test no = "$FC"; then + _lt_disable_FC=yes +fi + +_LT_TAGVAR(archive_cmds_need_lc, $1)=no +_LT_TAGVAR(allow_undefined_flag, $1)= +_LT_TAGVAR(always_export_symbols, $1)=no +_LT_TAGVAR(archive_expsym_cmds, $1)= +_LT_TAGVAR(export_dynamic_flag_spec, $1)= +_LT_TAGVAR(hardcode_direct, $1)=no +_LT_TAGVAR(hardcode_direct_absolute, $1)=no +_LT_TAGVAR(hardcode_libdir_flag_spec, $1)= +_LT_TAGVAR(hardcode_libdir_separator, $1)= +_LT_TAGVAR(hardcode_minus_L, $1)=no +_LT_TAGVAR(hardcode_automatic, $1)=no +_LT_TAGVAR(inherit_rpath, $1)=no +_LT_TAGVAR(module_cmds, $1)= +_LT_TAGVAR(module_expsym_cmds, $1)= +_LT_TAGVAR(link_all_deplibs, $1)=unknown +_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds +_LT_TAGVAR(reload_flag, $1)=$reload_flag +_LT_TAGVAR(reload_cmds, $1)=$reload_cmds +_LT_TAGVAR(no_undefined_flag, $1)= +_LT_TAGVAR(whole_archive_flag_spec, $1)= +_LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no + +# Source file extension for fc test sources. +ac_ext=${ac_fc_srcext-f} + +# Object file extension for compiled fc test sources. +objext=o +_LT_TAGVAR(objext, $1)=$objext + +# No sense in running all these tests if we already determined that +# the FC compiler isn't working. Some variables (like enable_shared) +# are currently assumed to apply to all compilers on this platform, +# and will be corrupted by setting them based on a non-working compiler. +if test yes != "$_lt_disable_FC"; then + # Code to be used in simple compile tests + lt_simple_compile_test_code="\ + subroutine t + return + end +" + + # Code to be used in simple link tests + lt_simple_link_test_code="\ + program t + end +" + + # ltmain only uses $CC for tagged configurations so make sure $CC is set. + _LT_TAG_COMPILER + + # save warnings/boilerplate of simple test code + _LT_COMPILER_BOILERPLATE + _LT_LINKER_BOILERPLATE + + # Allow CC to be a program name with arguments. + lt_save_CC=$CC + lt_save_GCC=$GCC + lt_save_CFLAGS=$CFLAGS + CC=${FC-"f95"} + CFLAGS=$FCFLAGS + compiler=$CC + GCC=$ac_cv_fc_compiler_gnu + + _LT_TAGVAR(compiler, $1)=$CC + _LT_CC_BASENAME([$compiler]) + + if test -n "$compiler"; then + AC_MSG_CHECKING([if libtool supports shared libraries]) + AC_MSG_RESULT([$can_build_shared]) + + AC_MSG_CHECKING([whether to build shared libraries]) + test no = "$can_build_shared" && enable_shared=no + + # On AIX, shared libraries and static libraries use the same namespace, and + # are all built from PIC. + case $host_os in + aix3*) + test yes = "$enable_shared" && enable_static=no + if test -n "$RANLIB"; then + archive_cmds="$archive_cmds~\$RANLIB \$lib" + postinstall_cmds='$RANLIB $lib' + fi + ;; + aix[[4-9]]*) + if test ia64 != "$host_cpu"; then + case $enable_shared,$with_aix_soname,$aix_use_runtimelinking in + yes,aix,yes) ;; # shared object as lib.so file only + yes,svr4,*) ;; # shared object as lib.so archive member only + yes,*) enable_static=no ;; # shared object in lib.a archive as well + esac + fi + ;; + esac + AC_MSG_RESULT([$enable_shared]) + + AC_MSG_CHECKING([whether to build static libraries]) + # Make sure either enable_shared or enable_static is yes. + test yes = "$enable_shared" || enable_static=yes + AC_MSG_RESULT([$enable_static]) + + _LT_TAGVAR(GCC, $1)=$ac_cv_fc_compiler_gnu + _LT_TAGVAR(LD, $1)=$LD + + ## CAVEAT EMPTOR: + ## There is no encapsulation within the following macros, do not change + ## the running order or otherwise move them around unless you know exactly + ## what you are doing... + _LT_SYS_HIDDEN_LIBDEPS($1) + _LT_COMPILER_PIC($1) + _LT_COMPILER_C_O($1) + _LT_COMPILER_FILE_LOCKS($1) + _LT_LINKER_SHLIBS($1) + _LT_SYS_DYNAMIC_LINKER($1) + _LT_LINKER_HARDCODE_LIBPATH($1) + + _LT_CONFIG($1) + fi # test -n "$compiler" + + GCC=$lt_save_GCC + CC=$lt_save_CC + CFLAGS=$lt_save_CFLAGS +fi # test yes != "$_lt_disable_FC" + +AC_LANG_POP +])# _LT_LANG_FC_CONFIG + + +# _LT_LANG_GCJ_CONFIG([TAG]) +# -------------------------- +# Ensure that the configuration variables for the GNU Java Compiler compiler +# are suitably defined. These variables are subsequently used by _LT_CONFIG +# to write the compiler configuration to 'libtool'. +m4_defun([_LT_LANG_GCJ_CONFIG], +[AC_REQUIRE([LT_PROG_GCJ])dnl +AC_LANG_SAVE + +# Source file extension for Java test sources. +ac_ext=java + +# Object file extension for compiled Java test sources. +objext=o +_LT_TAGVAR(objext, $1)=$objext + +# Code to be used in simple compile tests +lt_simple_compile_test_code="class foo {}" + +# Code to be used in simple link tests +lt_simple_link_test_code='public class conftest { public static void main(String[[]] argv) {}; }' + +# ltmain only uses $CC for tagged configurations so make sure $CC is set. +_LT_TAG_COMPILER + +# save warnings/boilerplate of simple test code +_LT_COMPILER_BOILERPLATE +_LT_LINKER_BOILERPLATE + +# Allow CC to be a program name with arguments. +lt_save_CC=$CC +lt_save_CFLAGS=$CFLAGS +lt_save_GCC=$GCC +GCC=yes +CC=${GCJ-"gcj"} +CFLAGS=$GCJFLAGS +compiler=$CC +_LT_TAGVAR(compiler, $1)=$CC +_LT_TAGVAR(LD, $1)=$LD +_LT_CC_BASENAME([$compiler]) + +# GCJ did not exist at the time GCC didn't implicitly link libc in. +_LT_TAGVAR(archive_cmds_need_lc, $1)=no + +_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds +_LT_TAGVAR(reload_flag, $1)=$reload_flag +_LT_TAGVAR(reload_cmds, $1)=$reload_cmds + +## CAVEAT EMPTOR: +## There is no encapsulation within the following macros, do not change +## the running order or otherwise move them around unless you know exactly +## what you are doing... +if test -n "$compiler"; then + _LT_COMPILER_NO_RTTI($1) + _LT_COMPILER_PIC($1) + _LT_COMPILER_C_O($1) + _LT_COMPILER_FILE_LOCKS($1) + _LT_LINKER_SHLIBS($1) + _LT_LINKER_HARDCODE_LIBPATH($1) + + _LT_CONFIG($1) +fi + +AC_LANG_RESTORE + +GCC=$lt_save_GCC +CC=$lt_save_CC +CFLAGS=$lt_save_CFLAGS +])# _LT_LANG_GCJ_CONFIG + + +# _LT_LANG_GO_CONFIG([TAG]) +# -------------------------- +# Ensure that the configuration variables for the GNU Go compiler +# are suitably defined. These variables are subsequently used by _LT_CONFIG +# to write the compiler configuration to 'libtool'. +m4_defun([_LT_LANG_GO_CONFIG], +[AC_REQUIRE([LT_PROG_GO])dnl +AC_LANG_SAVE + +# Source file extension for Go test sources. +ac_ext=go + +# Object file extension for compiled Go test sources. +objext=o +_LT_TAGVAR(objext, $1)=$objext + +# Code to be used in simple compile tests +lt_simple_compile_test_code="package main; func main() { }" + +# Code to be used in simple link tests +lt_simple_link_test_code='package main; func main() { }' + +# ltmain only uses $CC for tagged configurations so make sure $CC is set. +_LT_TAG_COMPILER + +# save warnings/boilerplate of simple test code +_LT_COMPILER_BOILERPLATE +_LT_LINKER_BOILERPLATE + +# Allow CC to be a program name with arguments. +lt_save_CC=$CC +lt_save_CFLAGS=$CFLAGS +lt_save_GCC=$GCC +GCC=yes +CC=${GOC-"gccgo"} +CFLAGS=$GOFLAGS +compiler=$CC +_LT_TAGVAR(compiler, $1)=$CC +_LT_TAGVAR(LD, $1)=$LD +_LT_CC_BASENAME([$compiler]) + +# Go did not exist at the time GCC didn't implicitly link libc in. +_LT_TAGVAR(archive_cmds_need_lc, $1)=no + +_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds +_LT_TAGVAR(reload_flag, $1)=$reload_flag +_LT_TAGVAR(reload_cmds, $1)=$reload_cmds + +## CAVEAT EMPTOR: +## There is no encapsulation within the following macros, do not change +## the running order or otherwise move them around unless you know exactly +## what you are doing... +if test -n "$compiler"; then + _LT_COMPILER_NO_RTTI($1) + _LT_COMPILER_PIC($1) + _LT_COMPILER_C_O($1) + _LT_COMPILER_FILE_LOCKS($1) + _LT_LINKER_SHLIBS($1) + _LT_LINKER_HARDCODE_LIBPATH($1) + + _LT_CONFIG($1) +fi + +AC_LANG_RESTORE + +GCC=$lt_save_GCC +CC=$lt_save_CC +CFLAGS=$lt_save_CFLAGS +])# _LT_LANG_GO_CONFIG + + +# _LT_LANG_RC_CONFIG([TAG]) +# ------------------------- +# Ensure that the configuration variables for the Windows resource compiler +# are suitably defined. These variables are subsequently used by _LT_CONFIG +# to write the compiler configuration to 'libtool'. +m4_defun([_LT_LANG_RC_CONFIG], +[AC_REQUIRE([LT_PROG_RC])dnl +AC_LANG_SAVE + +# Source file extension for RC test sources. +ac_ext=rc + +# Object file extension for compiled RC test sources. +objext=o +_LT_TAGVAR(objext, $1)=$objext + +# Code to be used in simple compile tests +lt_simple_compile_test_code='sample MENU { MENUITEM "&Soup", 100, CHECKED }' + +# Code to be used in simple link tests +lt_simple_link_test_code=$lt_simple_compile_test_code + +# ltmain only uses $CC for tagged configurations so make sure $CC is set. +_LT_TAG_COMPILER + +# save warnings/boilerplate of simple test code +_LT_COMPILER_BOILERPLATE +_LT_LINKER_BOILERPLATE + +# Allow CC to be a program name with arguments. +lt_save_CC=$CC +lt_save_CFLAGS=$CFLAGS +lt_save_GCC=$GCC +GCC= +CC=${RC-"windres"} +CFLAGS= +compiler=$CC +_LT_TAGVAR(compiler, $1)=$CC +_LT_CC_BASENAME([$compiler]) +_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes + +if test -n "$compiler"; then + : + _LT_CONFIG($1) +fi + +GCC=$lt_save_GCC +AC_LANG_RESTORE +CC=$lt_save_CC +CFLAGS=$lt_save_CFLAGS +])# _LT_LANG_RC_CONFIG + + +# LT_PROG_GCJ +# ----------- +AC_DEFUN([LT_PROG_GCJ], +[m4_ifdef([AC_PROG_GCJ], [AC_PROG_GCJ], + [m4_ifdef([A][M_PROG_GCJ], [A][M_PROG_GCJ], + [AC_CHECK_TOOL(GCJ, gcj,) + test set = "${GCJFLAGS+set}" || GCJFLAGS="-g -O2" + AC_SUBST(GCJFLAGS)])])[]dnl +]) + +# Old name: +AU_ALIAS([LT_AC_PROG_GCJ], [LT_PROG_GCJ]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([LT_AC_PROG_GCJ], []) + + +# LT_PROG_GO +# ---------- +AC_DEFUN([LT_PROG_GO], +[AC_CHECK_TOOL(GOC, gccgo,) +]) + + +# LT_PROG_RC +# ---------- +AC_DEFUN([LT_PROG_RC], +[AC_CHECK_TOOL(RC, windres,) +]) + +# Old name: +AU_ALIAS([LT_AC_PROG_RC], [LT_PROG_RC]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([LT_AC_PROG_RC], []) + + +# _LT_DECL_EGREP +# -------------- +# If we don't have a new enough Autoconf to choose the best grep +# available, choose the one first in the user's PATH. +m4_defun([_LT_DECL_EGREP], +[AC_REQUIRE([AC_PROG_EGREP])dnl +AC_REQUIRE([AC_PROG_FGREP])dnl +test -z "$GREP" && GREP=grep +_LT_DECL([], [GREP], [1], [A grep program that handles long lines]) +_LT_DECL([], [EGREP], [1], [An ERE matcher]) +_LT_DECL([], [FGREP], [1], [A literal string matcher]) +dnl Non-bleeding-edge autoconf doesn't subst GREP, so do it here too +AC_SUBST([GREP]) +]) + + +# _LT_DECL_OBJDUMP +# -------------- +# If we don't have a new enough Autoconf to choose the best objdump +# available, choose the one first in the user's PATH. +m4_defun([_LT_DECL_OBJDUMP], +[AC_CHECK_TOOL(OBJDUMP, objdump, false) +test -z "$OBJDUMP" && OBJDUMP=objdump +_LT_DECL([], [OBJDUMP], [1], [An object symbol dumper]) +AC_SUBST([OBJDUMP]) +]) + +# _LT_DECL_DLLTOOL +# ---------------- +# Ensure DLLTOOL variable is set. +m4_defun([_LT_DECL_DLLTOOL], +[AC_CHECK_TOOL(DLLTOOL, dlltool, false) +test -z "$DLLTOOL" && DLLTOOL=dlltool +_LT_DECL([], [DLLTOOL], [1], [DLL creation program]) +AC_SUBST([DLLTOOL]) +]) + +# _LT_DECL_SED +# ------------ +# Check for a fully-functional sed program, that truncates +# as few characters as possible. Prefer GNU sed if found. +m4_defun([_LT_DECL_SED], +[AC_PROG_SED +test -z "$SED" && SED=sed +Xsed="$SED -e 1s/^X//" +_LT_DECL([], [SED], [1], [A sed program that does not truncate output]) +_LT_DECL([], [Xsed], ["\$SED -e 1s/^X//"], + [Sed that helps us avoid accidentally triggering echo(1) options like -n]) +])# _LT_DECL_SED + +m4_ifndef([AC_PROG_SED], [ +############################################################ +# NOTE: This macro has been submitted for inclusion into # +# GNU Autoconf as AC_PROG_SED. When it is available in # +# a released version of Autoconf we should remove this # +# macro and use it instead. # +############################################################ + +m4_defun([AC_PROG_SED], +[AC_MSG_CHECKING([for a sed that does not truncate output]) +AC_CACHE_VAL(lt_cv_path_SED, +[# Loop through the user's path and test for sed and gsed. +# Then use that list of sed's as ones to test for truncation. +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for lt_ac_prog in sed gsed; do + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$lt_ac_prog$ac_exec_ext"; then + lt_ac_sed_list="$lt_ac_sed_list $as_dir/$lt_ac_prog$ac_exec_ext" + fi + done + done +done +IFS=$as_save_IFS +lt_ac_max=0 +lt_ac_count=0 +# Add /usr/xpg4/bin/sed as it is typically found on Solaris +# along with /bin/sed that truncates output. +for lt_ac_sed in $lt_ac_sed_list /usr/xpg4/bin/sed; do + test ! -f "$lt_ac_sed" && continue + cat /dev/null > conftest.in + lt_ac_count=0 + echo $ECHO_N "0123456789$ECHO_C" >conftest.in + # Check for GNU sed and select it if it is found. + if "$lt_ac_sed" --version 2>&1 < /dev/null | grep 'GNU' > /dev/null; then + lt_cv_path_SED=$lt_ac_sed + break + fi + while true; do + cat conftest.in conftest.in >conftest.tmp + mv conftest.tmp conftest.in + cp conftest.in conftest.nl + echo >>conftest.nl + $lt_ac_sed -e 's/a$//' < conftest.nl >conftest.out || break + cmp -s conftest.out conftest.nl || break + # 10000 chars as input seems more than enough + test 10 -lt "$lt_ac_count" && break + lt_ac_count=`expr $lt_ac_count + 1` + if test "$lt_ac_count" -gt "$lt_ac_max"; then + lt_ac_max=$lt_ac_count + lt_cv_path_SED=$lt_ac_sed + fi + done +done +]) +SED=$lt_cv_path_SED +AC_SUBST([SED]) +AC_MSG_RESULT([$SED]) +])#AC_PROG_SED +])#m4_ifndef + +# Old name: +AU_ALIAS([LT_AC_PROG_SED], [AC_PROG_SED]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([LT_AC_PROG_SED], []) + + +# _LT_CHECK_SHELL_FEATURES +# ------------------------ +# Find out whether the shell is Bourne or XSI compatible, +# or has some other useful features. +m4_defun([_LT_CHECK_SHELL_FEATURES], +[if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then + lt_unset=unset +else + lt_unset=false +fi +_LT_DECL([], [lt_unset], [0], [whether the shell understands "unset"])dnl + +# test EBCDIC or ASCII +case `echo X|tr X '\101'` in + A) # ASCII based system + # \n is not interpreted correctly by Solaris 8 /usr/ucb/tr + lt_SP2NL='tr \040 \012' + lt_NL2SP='tr \015\012 \040\040' + ;; + *) # EBCDIC based system + lt_SP2NL='tr \100 \n' + lt_NL2SP='tr \r\n \100\100' + ;; +esac +_LT_DECL([SP2NL], [lt_SP2NL], [1], [turn spaces into newlines])dnl +_LT_DECL([NL2SP], [lt_NL2SP], [1], [turn newlines into spaces])dnl +])# _LT_CHECK_SHELL_FEATURES + + +# _LT_PATH_CONVERSION_FUNCTIONS +# ----------------------------- +# Determine what file name conversion functions should be used by +# func_to_host_file (and, implicitly, by func_to_host_path). These are needed +# for certain cross-compile configurations and native mingw. +m4_defun([_LT_PATH_CONVERSION_FUNCTIONS], +[AC_REQUIRE([AC_CANONICAL_HOST])dnl +AC_REQUIRE([AC_CANONICAL_BUILD])dnl +AC_MSG_CHECKING([how to convert $build file names to $host format]) +AC_CACHE_VAL(lt_cv_to_host_file_cmd, +[case $host in + *-*-mingw* ) + case $build in + *-*-mingw* ) # actually msys + lt_cv_to_host_file_cmd=func_convert_file_msys_to_w32 + ;; + *-*-cygwin* ) + lt_cv_to_host_file_cmd=func_convert_file_cygwin_to_w32 + ;; + * ) # otherwise, assume *nix + lt_cv_to_host_file_cmd=func_convert_file_nix_to_w32 + ;; + esac + ;; + *-*-cygwin* ) + case $build in + *-*-mingw* ) # actually msys + lt_cv_to_host_file_cmd=func_convert_file_msys_to_cygwin + ;; + *-*-cygwin* ) + lt_cv_to_host_file_cmd=func_convert_file_noop + ;; + * ) # otherwise, assume *nix + lt_cv_to_host_file_cmd=func_convert_file_nix_to_cygwin + ;; + esac + ;; + * ) # unhandled hosts (and "normal" native builds) + lt_cv_to_host_file_cmd=func_convert_file_noop + ;; +esac +]) +to_host_file_cmd=$lt_cv_to_host_file_cmd +AC_MSG_RESULT([$lt_cv_to_host_file_cmd]) +_LT_DECL([to_host_file_cmd], [lt_cv_to_host_file_cmd], + [0], [convert $build file names to $host format])dnl + +AC_MSG_CHECKING([how to convert $build file names to toolchain format]) +AC_CACHE_VAL(lt_cv_to_tool_file_cmd, +[#assume ordinary cross tools, or native build. +lt_cv_to_tool_file_cmd=func_convert_file_noop +case $host in + *-*-mingw* ) + case $build in + *-*-mingw* ) # actually msys + lt_cv_to_tool_file_cmd=func_convert_file_msys_to_w32 + ;; + esac + ;; +esac +]) +to_tool_file_cmd=$lt_cv_to_tool_file_cmd +AC_MSG_RESULT([$lt_cv_to_tool_file_cmd]) +_LT_DECL([to_tool_file_cmd], [lt_cv_to_tool_file_cmd], + [0], [convert $build files to toolchain format])dnl +])# _LT_PATH_CONVERSION_FUNCTIONS diff --git a/libs/shapelib/m4/ltoptions.m4 b/libs/shapelib/m4/ltoptions.m4 new file mode 100644 index 0000000..94b0829 --- /dev/null +++ b/libs/shapelib/m4/ltoptions.m4 @@ -0,0 +1,437 @@ +# Helper functions for option handling. -*- Autoconf -*- +# +# Copyright (C) 2004-2005, 2007-2009, 2011-2015 Free Software +# Foundation, Inc. +# Written by Gary V. Vaughan, 2004 +# +# This file is free software; the Free Software Foundation gives +# unlimited permission to copy and/or distribute it, with or without +# modifications, as long as this notice is preserved. + +# serial 8 ltoptions.m4 + +# This is to help aclocal find these macros, as it can't see m4_define. +AC_DEFUN([LTOPTIONS_VERSION], [m4_if([1])]) + + +# _LT_MANGLE_OPTION(MACRO-NAME, OPTION-NAME) +# ------------------------------------------ +m4_define([_LT_MANGLE_OPTION], +[[_LT_OPTION_]m4_bpatsubst($1__$2, [[^a-zA-Z0-9_]], [_])]) + + +# _LT_SET_OPTION(MACRO-NAME, OPTION-NAME) +# --------------------------------------- +# Set option OPTION-NAME for macro MACRO-NAME, and if there is a +# matching handler defined, dispatch to it. Other OPTION-NAMEs are +# saved as a flag. +m4_define([_LT_SET_OPTION], +[m4_define(_LT_MANGLE_OPTION([$1], [$2]))dnl +m4_ifdef(_LT_MANGLE_DEFUN([$1], [$2]), + _LT_MANGLE_DEFUN([$1], [$2]), + [m4_warning([Unknown $1 option '$2'])])[]dnl +]) + + +# _LT_IF_OPTION(MACRO-NAME, OPTION-NAME, IF-SET, [IF-NOT-SET]) +# ------------------------------------------------------------ +# Execute IF-SET if OPTION is set, IF-NOT-SET otherwise. +m4_define([_LT_IF_OPTION], +[m4_ifdef(_LT_MANGLE_OPTION([$1], [$2]), [$3], [$4])]) + + +# _LT_UNLESS_OPTIONS(MACRO-NAME, OPTION-LIST, IF-NOT-SET) +# ------------------------------------------------------- +# Execute IF-NOT-SET unless all options in OPTION-LIST for MACRO-NAME +# are set. +m4_define([_LT_UNLESS_OPTIONS], +[m4_foreach([_LT_Option], m4_split(m4_normalize([$2])), + [m4_ifdef(_LT_MANGLE_OPTION([$1], _LT_Option), + [m4_define([$0_found])])])[]dnl +m4_ifdef([$0_found], [m4_undefine([$0_found])], [$3 +])[]dnl +]) + + +# _LT_SET_OPTIONS(MACRO-NAME, OPTION-LIST) +# ---------------------------------------- +# OPTION-LIST is a space-separated list of Libtool options associated +# with MACRO-NAME. If any OPTION has a matching handler declared with +# LT_OPTION_DEFINE, dispatch to that macro; otherwise complain about +# the unknown option and exit. +m4_defun([_LT_SET_OPTIONS], +[# Set options +m4_foreach([_LT_Option], m4_split(m4_normalize([$2])), + [_LT_SET_OPTION([$1], _LT_Option)]) + +m4_if([$1],[LT_INIT],[ + dnl + dnl Simply set some default values (i.e off) if boolean options were not + dnl specified: + _LT_UNLESS_OPTIONS([LT_INIT], [dlopen], [enable_dlopen=no + ]) + _LT_UNLESS_OPTIONS([LT_INIT], [win32-dll], [enable_win32_dll=no + ]) + dnl + dnl If no reference was made to various pairs of opposing options, then + dnl we run the default mode handler for the pair. For example, if neither + dnl 'shared' nor 'disable-shared' was passed, we enable building of shared + dnl archives by default: + _LT_UNLESS_OPTIONS([LT_INIT], [shared disable-shared], [_LT_ENABLE_SHARED]) + _LT_UNLESS_OPTIONS([LT_INIT], [static disable-static], [_LT_ENABLE_STATIC]) + _LT_UNLESS_OPTIONS([LT_INIT], [pic-only no-pic], [_LT_WITH_PIC]) + _LT_UNLESS_OPTIONS([LT_INIT], [fast-install disable-fast-install], + [_LT_ENABLE_FAST_INSTALL]) + _LT_UNLESS_OPTIONS([LT_INIT], [aix-soname=aix aix-soname=both aix-soname=svr4], + [_LT_WITH_AIX_SONAME([aix])]) + ]) +])# _LT_SET_OPTIONS + + +## --------------------------------- ## +## Macros to handle LT_INIT options. ## +## --------------------------------- ## + +# _LT_MANGLE_DEFUN(MACRO-NAME, OPTION-NAME) +# ----------------------------------------- +m4_define([_LT_MANGLE_DEFUN], +[[_LT_OPTION_DEFUN_]m4_bpatsubst(m4_toupper([$1__$2]), [[^A-Z0-9_]], [_])]) + + +# LT_OPTION_DEFINE(MACRO-NAME, OPTION-NAME, CODE) +# ----------------------------------------------- +m4_define([LT_OPTION_DEFINE], +[m4_define(_LT_MANGLE_DEFUN([$1], [$2]), [$3])[]dnl +])# LT_OPTION_DEFINE + + +# dlopen +# ------ +LT_OPTION_DEFINE([LT_INIT], [dlopen], [enable_dlopen=yes +]) + +AU_DEFUN([AC_LIBTOOL_DLOPEN], +[_LT_SET_OPTION([LT_INIT], [dlopen]) +AC_DIAGNOSE([obsolete], +[$0: Remove this warning and the call to _LT_SET_OPTION when you +put the 'dlopen' option into LT_INIT's first parameter.]) +]) + +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_LIBTOOL_DLOPEN], []) + + +# win32-dll +# --------- +# Declare package support for building win32 dll's. +LT_OPTION_DEFINE([LT_INIT], [win32-dll], +[enable_win32_dll=yes + +case $host in +*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-cegcc*) + AC_CHECK_TOOL(AS, as, false) + AC_CHECK_TOOL(DLLTOOL, dlltool, false) + AC_CHECK_TOOL(OBJDUMP, objdump, false) + ;; +esac + +test -z "$AS" && AS=as +_LT_DECL([], [AS], [1], [Assembler program])dnl + +test -z "$DLLTOOL" && DLLTOOL=dlltool +_LT_DECL([], [DLLTOOL], [1], [DLL creation program])dnl + +test -z "$OBJDUMP" && OBJDUMP=objdump +_LT_DECL([], [OBJDUMP], [1], [Object dumper program])dnl +])# win32-dll + +AU_DEFUN([AC_LIBTOOL_WIN32_DLL], +[AC_REQUIRE([AC_CANONICAL_HOST])dnl +_LT_SET_OPTION([LT_INIT], [win32-dll]) +AC_DIAGNOSE([obsolete], +[$0: Remove this warning and the call to _LT_SET_OPTION when you +put the 'win32-dll' option into LT_INIT's first parameter.]) +]) + +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_LIBTOOL_WIN32_DLL], []) + + +# _LT_ENABLE_SHARED([DEFAULT]) +# ---------------------------- +# implement the --enable-shared flag, and supports the 'shared' and +# 'disable-shared' LT_INIT options. +# DEFAULT is either 'yes' or 'no'. If omitted, it defaults to 'yes'. +m4_define([_LT_ENABLE_SHARED], +[m4_define([_LT_ENABLE_SHARED_DEFAULT], [m4_if($1, no, no, yes)])dnl +AC_ARG_ENABLE([shared], + [AS_HELP_STRING([--enable-shared@<:@=PKGS@:>@], + [build shared libraries @<:@default=]_LT_ENABLE_SHARED_DEFAULT[@:>@])], + [p=${PACKAGE-default} + case $enableval in + yes) enable_shared=yes ;; + no) enable_shared=no ;; + *) + enable_shared=no + # Look at the argument we got. We use all the common list separators. + lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, + for pkg in $enableval; do + IFS=$lt_save_ifs + if test "X$pkg" = "X$p"; then + enable_shared=yes + fi + done + IFS=$lt_save_ifs + ;; + esac], + [enable_shared=]_LT_ENABLE_SHARED_DEFAULT) + + _LT_DECL([build_libtool_libs], [enable_shared], [0], + [Whether or not to build shared libraries]) +])# _LT_ENABLE_SHARED + +LT_OPTION_DEFINE([LT_INIT], [shared], [_LT_ENABLE_SHARED([yes])]) +LT_OPTION_DEFINE([LT_INIT], [disable-shared], [_LT_ENABLE_SHARED([no])]) + +# Old names: +AC_DEFUN([AC_ENABLE_SHARED], +[_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[shared]) +]) + +AC_DEFUN([AC_DISABLE_SHARED], +[_LT_SET_OPTION([LT_INIT], [disable-shared]) +]) + +AU_DEFUN([AM_ENABLE_SHARED], [AC_ENABLE_SHARED($@)]) +AU_DEFUN([AM_DISABLE_SHARED], [AC_DISABLE_SHARED($@)]) + +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AM_ENABLE_SHARED], []) +dnl AC_DEFUN([AM_DISABLE_SHARED], []) + + + +# _LT_ENABLE_STATIC([DEFAULT]) +# ---------------------------- +# implement the --enable-static flag, and support the 'static' and +# 'disable-static' LT_INIT options. +# DEFAULT is either 'yes' or 'no'. If omitted, it defaults to 'yes'. +m4_define([_LT_ENABLE_STATIC], +[m4_define([_LT_ENABLE_STATIC_DEFAULT], [m4_if($1, no, no, yes)])dnl +AC_ARG_ENABLE([static], + [AS_HELP_STRING([--enable-static@<:@=PKGS@:>@], + [build static libraries @<:@default=]_LT_ENABLE_STATIC_DEFAULT[@:>@])], + [p=${PACKAGE-default} + case $enableval in + yes) enable_static=yes ;; + no) enable_static=no ;; + *) + enable_static=no + # Look at the argument we got. We use all the common list separators. + lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, + for pkg in $enableval; do + IFS=$lt_save_ifs + if test "X$pkg" = "X$p"; then + enable_static=yes + fi + done + IFS=$lt_save_ifs + ;; + esac], + [enable_static=]_LT_ENABLE_STATIC_DEFAULT) + + _LT_DECL([build_old_libs], [enable_static], [0], + [Whether or not to build static libraries]) +])# _LT_ENABLE_STATIC + +LT_OPTION_DEFINE([LT_INIT], [static], [_LT_ENABLE_STATIC([yes])]) +LT_OPTION_DEFINE([LT_INIT], [disable-static], [_LT_ENABLE_STATIC([no])]) + +# Old names: +AC_DEFUN([AC_ENABLE_STATIC], +[_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[static]) +]) + +AC_DEFUN([AC_DISABLE_STATIC], +[_LT_SET_OPTION([LT_INIT], [disable-static]) +]) + +AU_DEFUN([AM_ENABLE_STATIC], [AC_ENABLE_STATIC($@)]) +AU_DEFUN([AM_DISABLE_STATIC], [AC_DISABLE_STATIC($@)]) + +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AM_ENABLE_STATIC], []) +dnl AC_DEFUN([AM_DISABLE_STATIC], []) + + + +# _LT_ENABLE_FAST_INSTALL([DEFAULT]) +# ---------------------------------- +# implement the --enable-fast-install flag, and support the 'fast-install' +# and 'disable-fast-install' LT_INIT options. +# DEFAULT is either 'yes' or 'no'. If omitted, it defaults to 'yes'. +m4_define([_LT_ENABLE_FAST_INSTALL], +[m4_define([_LT_ENABLE_FAST_INSTALL_DEFAULT], [m4_if($1, no, no, yes)])dnl +AC_ARG_ENABLE([fast-install], + [AS_HELP_STRING([--enable-fast-install@<:@=PKGS@:>@], + [optimize for fast installation @<:@default=]_LT_ENABLE_FAST_INSTALL_DEFAULT[@:>@])], + [p=${PACKAGE-default} + case $enableval in + yes) enable_fast_install=yes ;; + no) enable_fast_install=no ;; + *) + enable_fast_install=no + # Look at the argument we got. We use all the common list separators. + lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, + for pkg in $enableval; do + IFS=$lt_save_ifs + if test "X$pkg" = "X$p"; then + enable_fast_install=yes + fi + done + IFS=$lt_save_ifs + ;; + esac], + [enable_fast_install=]_LT_ENABLE_FAST_INSTALL_DEFAULT) + +_LT_DECL([fast_install], [enable_fast_install], [0], + [Whether or not to optimize for fast installation])dnl +])# _LT_ENABLE_FAST_INSTALL + +LT_OPTION_DEFINE([LT_INIT], [fast-install], [_LT_ENABLE_FAST_INSTALL([yes])]) +LT_OPTION_DEFINE([LT_INIT], [disable-fast-install], [_LT_ENABLE_FAST_INSTALL([no])]) + +# Old names: +AU_DEFUN([AC_ENABLE_FAST_INSTALL], +[_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[fast-install]) +AC_DIAGNOSE([obsolete], +[$0: Remove this warning and the call to _LT_SET_OPTION when you put +the 'fast-install' option into LT_INIT's first parameter.]) +]) + +AU_DEFUN([AC_DISABLE_FAST_INSTALL], +[_LT_SET_OPTION([LT_INIT], [disable-fast-install]) +AC_DIAGNOSE([obsolete], +[$0: Remove this warning and the call to _LT_SET_OPTION when you put +the 'disable-fast-install' option into LT_INIT's first parameter.]) +]) + +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_ENABLE_FAST_INSTALL], []) +dnl AC_DEFUN([AM_DISABLE_FAST_INSTALL], []) + + +# _LT_WITH_AIX_SONAME([DEFAULT]) +# ---------------------------------- +# implement the --with-aix-soname flag, and support the `aix-soname=aix' +# and `aix-soname=both' and `aix-soname=svr4' LT_INIT options. DEFAULT +# is either `aix', `both' or `svr4'. If omitted, it defaults to `aix'. +m4_define([_LT_WITH_AIX_SONAME], +[m4_define([_LT_WITH_AIX_SONAME_DEFAULT], [m4_if($1, svr4, svr4, m4_if($1, both, both, aix))])dnl +shared_archive_member_spec= +case $host,$enable_shared in +power*-*-aix[[5-9]]*,yes) + AC_MSG_CHECKING([which variant of shared library versioning to provide]) + AC_ARG_WITH([aix-soname], + [AS_HELP_STRING([--with-aix-soname=aix|svr4|both], + [shared library versioning (aka "SONAME") variant to provide on AIX, @<:@default=]_LT_WITH_AIX_SONAME_DEFAULT[@:>@.])], + [case $withval in + aix|svr4|both) + ;; + *) + AC_MSG_ERROR([Unknown argument to --with-aix-soname]) + ;; + esac + lt_cv_with_aix_soname=$with_aix_soname], + [AC_CACHE_VAL([lt_cv_with_aix_soname], + [lt_cv_with_aix_soname=]_LT_WITH_AIX_SONAME_DEFAULT) + with_aix_soname=$lt_cv_with_aix_soname]) + AC_MSG_RESULT([$with_aix_soname]) + if test aix != "$with_aix_soname"; then + # For the AIX way of multilib, we name the shared archive member + # based on the bitwidth used, traditionally 'shr.o' or 'shr_64.o', + # and 'shr.imp' or 'shr_64.imp', respectively, for the Import File. + # Even when GNU compilers ignore OBJECT_MODE but need '-maix64' flag, + # the AIX toolchain works better with OBJECT_MODE set (default 32). + if test 64 = "${OBJECT_MODE-32}"; then + shared_archive_member_spec=shr_64 + else + shared_archive_member_spec=shr + fi + fi + ;; +*) + with_aix_soname=aix + ;; +esac + +_LT_DECL([], [shared_archive_member_spec], [0], + [Shared archive member basename, for filename based shared library versioning on AIX])dnl +])# _LT_WITH_AIX_SONAME + +LT_OPTION_DEFINE([LT_INIT], [aix-soname=aix], [_LT_WITH_AIX_SONAME([aix])]) +LT_OPTION_DEFINE([LT_INIT], [aix-soname=both], [_LT_WITH_AIX_SONAME([both])]) +LT_OPTION_DEFINE([LT_INIT], [aix-soname=svr4], [_LT_WITH_AIX_SONAME([svr4])]) + + +# _LT_WITH_PIC([MODE]) +# -------------------- +# implement the --with-pic flag, and support the 'pic-only' and 'no-pic' +# LT_INIT options. +# MODE is either 'yes' or 'no'. If omitted, it defaults to 'both'. +m4_define([_LT_WITH_PIC], +[AC_ARG_WITH([pic], + [AS_HELP_STRING([--with-pic@<:@=PKGS@:>@], + [try to use only PIC/non-PIC objects @<:@default=use both@:>@])], + [lt_p=${PACKAGE-default} + case $withval in + yes|no) pic_mode=$withval ;; + *) + pic_mode=default + # Look at the argument we got. We use all the common list separators. + lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, + for lt_pkg in $withval; do + IFS=$lt_save_ifs + if test "X$lt_pkg" = "X$lt_p"; then + pic_mode=yes + fi + done + IFS=$lt_save_ifs + ;; + esac], + [pic_mode=m4_default([$1], [default])]) + +_LT_DECL([], [pic_mode], [0], [What type of objects to build])dnl +])# _LT_WITH_PIC + +LT_OPTION_DEFINE([LT_INIT], [pic-only], [_LT_WITH_PIC([yes])]) +LT_OPTION_DEFINE([LT_INIT], [no-pic], [_LT_WITH_PIC([no])]) + +# Old name: +AU_DEFUN([AC_LIBTOOL_PICMODE], +[_LT_SET_OPTION([LT_INIT], [pic-only]) +AC_DIAGNOSE([obsolete], +[$0: Remove this warning and the call to _LT_SET_OPTION when you +put the 'pic-only' option into LT_INIT's first parameter.]) +]) + +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_LIBTOOL_PICMODE], []) + +## ----------------- ## +## LTDL_INIT Options ## +## ----------------- ## + +m4_define([_LTDL_MODE], []) +LT_OPTION_DEFINE([LTDL_INIT], [nonrecursive], + [m4_define([_LTDL_MODE], [nonrecursive])]) +LT_OPTION_DEFINE([LTDL_INIT], [recursive], + [m4_define([_LTDL_MODE], [recursive])]) +LT_OPTION_DEFINE([LTDL_INIT], [subproject], + [m4_define([_LTDL_MODE], [subproject])]) + +m4_define([_LTDL_TYPE], []) +LT_OPTION_DEFINE([LTDL_INIT], [installable], + [m4_define([_LTDL_TYPE], [installable])]) +LT_OPTION_DEFINE([LTDL_INIT], [convenience], + [m4_define([_LTDL_TYPE], [convenience])]) diff --git a/libs/shapelib/m4/ltsugar.m4 b/libs/shapelib/m4/ltsugar.m4 new file mode 100644 index 0000000..48bc934 --- /dev/null +++ b/libs/shapelib/m4/ltsugar.m4 @@ -0,0 +1,124 @@ +# ltsugar.m4 -- libtool m4 base layer. -*-Autoconf-*- +# +# Copyright (C) 2004-2005, 2007-2008, 2011-2015 Free Software +# Foundation, Inc. +# Written by Gary V. Vaughan, 2004 +# +# This file is free software; the Free Software Foundation gives +# unlimited permission to copy and/or distribute it, with or without +# modifications, as long as this notice is preserved. + +# serial 6 ltsugar.m4 + +# This is to help aclocal find these macros, as it can't see m4_define. +AC_DEFUN([LTSUGAR_VERSION], [m4_if([0.1])]) + + +# lt_join(SEP, ARG1, [ARG2...]) +# ----------------------------- +# Produce ARG1SEPARG2...SEPARGn, omitting [] arguments and their +# associated separator. +# Needed until we can rely on m4_join from Autoconf 2.62, since all earlier +# versions in m4sugar had bugs. +m4_define([lt_join], +[m4_if([$#], [1], [], + [$#], [2], [[$2]], + [m4_if([$2], [], [], [[$2]_])$0([$1], m4_shift(m4_shift($@)))])]) +m4_define([_lt_join], +[m4_if([$#$2], [2], [], + [m4_if([$2], [], [], [[$1$2]])$0([$1], m4_shift(m4_shift($@)))])]) + + +# lt_car(LIST) +# lt_cdr(LIST) +# ------------ +# Manipulate m4 lists. +# These macros are necessary as long as will still need to support +# Autoconf-2.59, which quotes differently. +m4_define([lt_car], [[$1]]) +m4_define([lt_cdr], +[m4_if([$#], 0, [m4_fatal([$0: cannot be called without arguments])], + [$#], 1, [], + [m4_dquote(m4_shift($@))])]) +m4_define([lt_unquote], $1) + + +# lt_append(MACRO-NAME, STRING, [SEPARATOR]) +# ------------------------------------------ +# Redefine MACRO-NAME to hold its former content plus 'SEPARATOR''STRING'. +# Note that neither SEPARATOR nor STRING are expanded; they are appended +# to MACRO-NAME as is (leaving the expansion for when MACRO-NAME is invoked). +# No SEPARATOR is output if MACRO-NAME was previously undefined (different +# than defined and empty). +# +# This macro is needed until we can rely on Autoconf 2.62, since earlier +# versions of m4sugar mistakenly expanded SEPARATOR but not STRING. +m4_define([lt_append], +[m4_define([$1], + m4_ifdef([$1], [m4_defn([$1])[$3]])[$2])]) + + + +# lt_combine(SEP, PREFIX-LIST, INFIX, SUFFIX1, [SUFFIX2...]) +# ---------------------------------------------------------- +# Produce a SEP delimited list of all paired combinations of elements of +# PREFIX-LIST with SUFFIX1 through SUFFIXn. Each element of the list +# has the form PREFIXmINFIXSUFFIXn. +# Needed until we can rely on m4_combine added in Autoconf 2.62. +m4_define([lt_combine], +[m4_if(m4_eval([$# > 3]), [1], + [m4_pushdef([_Lt_sep], [m4_define([_Lt_sep], m4_defn([lt_car]))])]]dnl +[[m4_foreach([_Lt_prefix], [$2], + [m4_foreach([_Lt_suffix], + ]m4_dquote(m4_dquote(m4_shift(m4_shift(m4_shift($@)))))[, + [_Lt_sep([$1])[]m4_defn([_Lt_prefix])[$3]m4_defn([_Lt_suffix])])])])]) + + +# lt_if_append_uniq(MACRO-NAME, VARNAME, [SEPARATOR], [UNIQ], [NOT-UNIQ]) +# ----------------------------------------------------------------------- +# Iff MACRO-NAME does not yet contain VARNAME, then append it (delimited +# by SEPARATOR if supplied) and expand UNIQ, else NOT-UNIQ. +m4_define([lt_if_append_uniq], +[m4_ifdef([$1], + [m4_if(m4_index([$3]m4_defn([$1])[$3], [$3$2$3]), [-1], + [lt_append([$1], [$2], [$3])$4], + [$5])], + [lt_append([$1], [$2], [$3])$4])]) + + +# lt_dict_add(DICT, KEY, VALUE) +# ----------------------------- +m4_define([lt_dict_add], +[m4_define([$1($2)], [$3])]) + + +# lt_dict_add_subkey(DICT, KEY, SUBKEY, VALUE) +# -------------------------------------------- +m4_define([lt_dict_add_subkey], +[m4_define([$1($2:$3)], [$4])]) + + +# lt_dict_fetch(DICT, KEY, [SUBKEY]) +# ---------------------------------- +m4_define([lt_dict_fetch], +[m4_ifval([$3], + m4_ifdef([$1($2:$3)], [m4_defn([$1($2:$3)])]), + m4_ifdef([$1($2)], [m4_defn([$1($2)])]))]) + + +# lt_if_dict_fetch(DICT, KEY, [SUBKEY], VALUE, IF-TRUE, [IF-FALSE]) +# ----------------------------------------------------------------- +m4_define([lt_if_dict_fetch], +[m4_if(lt_dict_fetch([$1], [$2], [$3]), [$4], + [$5], + [$6])]) + + +# lt_dict_filter(DICT, [SUBKEY], VALUE, [SEPARATOR], KEY, [...]) +# -------------------------------------------------------------- +m4_define([lt_dict_filter], +[m4_if([$5], [], [], + [lt_join(m4_quote(m4_default([$4], [[, ]])), + lt_unquote(m4_split(m4_normalize(m4_foreach(_Lt_key, lt_car([m4_shiftn(4, $@)]), + [lt_if_dict_fetch([$1], _Lt_key, [$2], [$3], [_Lt_key ])])))))])[]dnl +]) diff --git a/libs/shapelib/m4/ltversion.m4 b/libs/shapelib/m4/ltversion.m4 new file mode 100644 index 0000000..fa04b52 --- /dev/null +++ b/libs/shapelib/m4/ltversion.m4 @@ -0,0 +1,23 @@ +# ltversion.m4 -- version numbers -*- Autoconf -*- +# +# Copyright (C) 2004, 2011-2015 Free Software Foundation, Inc. +# Written by Scott James Remnant, 2004 +# +# This file is free software; the Free Software Foundation gives +# unlimited permission to copy and/or distribute it, with or without +# modifications, as long as this notice is preserved. + +# @configure_input@ + +# serial 4179 ltversion.m4 +# This file is part of GNU Libtool + +m4_define([LT_PACKAGE_VERSION], [2.4.6]) +m4_define([LT_PACKAGE_REVISION], [2.4.6]) + +AC_DEFUN([LTVERSION_VERSION], +[macro_version='2.4.6' +macro_revision='2.4.6' +_LT_DECL(, macro_version, 0, [Which release of libtool.m4 was used?]) +_LT_DECL(, macro_revision, 0) +]) diff --git a/libs/shapelib/m4/lt~obsolete.m4 b/libs/shapelib/m4/lt~obsolete.m4 new file mode 100644 index 0000000..c6b26f8 --- /dev/null +++ b/libs/shapelib/m4/lt~obsolete.m4 @@ -0,0 +1,99 @@ +# lt~obsolete.m4 -- aclocal satisfying obsolete definitions. -*-Autoconf-*- +# +# Copyright (C) 2004-2005, 2007, 2009, 2011-2015 Free Software +# Foundation, Inc. +# Written by Scott James Remnant, 2004. +# +# This file is free software; the Free Software Foundation gives +# unlimited permission to copy and/or distribute it, with or without +# modifications, as long as this notice is preserved. + +# serial 5 lt~obsolete.m4 + +# These exist entirely to fool aclocal when bootstrapping libtool. +# +# In the past libtool.m4 has provided macros via AC_DEFUN (or AU_DEFUN), +# which have later been changed to m4_define as they aren't part of the +# exported API, or moved to Autoconf or Automake where they belong. +# +# The trouble is, aclocal is a bit thick. It'll see the old AC_DEFUN +# in /usr/share/aclocal/libtool.m4 and remember it, then when it sees us +# using a macro with the same name in our local m4/libtool.m4 it'll +# pull the old libtool.m4 in (it doesn't see our shiny new m4_define +# and doesn't know about Autoconf macros at all.) +# +# So we provide this file, which has a silly filename so it's always +# included after everything else. This provides aclocal with the +# AC_DEFUNs it wants, but when m4 processes it, it doesn't do anything +# because those macros already exist, or will be overwritten later. +# We use AC_DEFUN over AU_DEFUN for compatibility with aclocal-1.6. +# +# Anytime we withdraw an AC_DEFUN or AU_DEFUN, remember to add it here. +# Yes, that means every name once taken will need to remain here until +# we give up compatibility with versions before 1.7, at which point +# we need to keep only those names which we still refer to. + +# This is to help aclocal find these macros, as it can't see m4_define. +AC_DEFUN([LTOBSOLETE_VERSION], [m4_if([1])]) + +m4_ifndef([AC_LIBTOOL_LINKER_OPTION], [AC_DEFUN([AC_LIBTOOL_LINKER_OPTION])]) +m4_ifndef([AC_PROG_EGREP], [AC_DEFUN([AC_PROG_EGREP])]) +m4_ifndef([_LT_AC_PROG_ECHO_BACKSLASH], [AC_DEFUN([_LT_AC_PROG_ECHO_BACKSLASH])]) +m4_ifndef([_LT_AC_SHELL_INIT], [AC_DEFUN([_LT_AC_SHELL_INIT])]) +m4_ifndef([_LT_AC_SYS_LIBPATH_AIX], [AC_DEFUN([_LT_AC_SYS_LIBPATH_AIX])]) +m4_ifndef([_LT_PROG_LTMAIN], [AC_DEFUN([_LT_PROG_LTMAIN])]) +m4_ifndef([_LT_AC_TAGVAR], [AC_DEFUN([_LT_AC_TAGVAR])]) +m4_ifndef([AC_LTDL_ENABLE_INSTALL], [AC_DEFUN([AC_LTDL_ENABLE_INSTALL])]) +m4_ifndef([AC_LTDL_PREOPEN], [AC_DEFUN([AC_LTDL_PREOPEN])]) +m4_ifndef([_LT_AC_SYS_COMPILER], [AC_DEFUN([_LT_AC_SYS_COMPILER])]) +m4_ifndef([_LT_AC_LOCK], [AC_DEFUN([_LT_AC_LOCK])]) +m4_ifndef([AC_LIBTOOL_SYS_OLD_ARCHIVE], [AC_DEFUN([AC_LIBTOOL_SYS_OLD_ARCHIVE])]) +m4_ifndef([_LT_AC_TRY_DLOPEN_SELF], [AC_DEFUN([_LT_AC_TRY_DLOPEN_SELF])]) +m4_ifndef([AC_LIBTOOL_PROG_CC_C_O], [AC_DEFUN([AC_LIBTOOL_PROG_CC_C_O])]) +m4_ifndef([AC_LIBTOOL_SYS_HARD_LINK_LOCKS], [AC_DEFUN([AC_LIBTOOL_SYS_HARD_LINK_LOCKS])]) +m4_ifndef([AC_LIBTOOL_OBJDIR], [AC_DEFUN([AC_LIBTOOL_OBJDIR])]) +m4_ifndef([AC_LTDL_OBJDIR], [AC_DEFUN([AC_LTDL_OBJDIR])]) +m4_ifndef([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH], [AC_DEFUN([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH])]) +m4_ifndef([AC_LIBTOOL_SYS_LIB_STRIP], [AC_DEFUN([AC_LIBTOOL_SYS_LIB_STRIP])]) +m4_ifndef([AC_PATH_MAGIC], [AC_DEFUN([AC_PATH_MAGIC])]) +m4_ifndef([AC_PROG_LD_GNU], [AC_DEFUN([AC_PROG_LD_GNU])]) +m4_ifndef([AC_PROG_LD_RELOAD_FLAG], [AC_DEFUN([AC_PROG_LD_RELOAD_FLAG])]) +m4_ifndef([AC_DEPLIBS_CHECK_METHOD], [AC_DEFUN([AC_DEPLIBS_CHECK_METHOD])]) +m4_ifndef([AC_LIBTOOL_PROG_COMPILER_NO_RTTI], [AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_NO_RTTI])]) +m4_ifndef([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE], [AC_DEFUN([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE])]) +m4_ifndef([AC_LIBTOOL_PROG_COMPILER_PIC], [AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_PIC])]) +m4_ifndef([AC_LIBTOOL_PROG_LD_SHLIBS], [AC_DEFUN([AC_LIBTOOL_PROG_LD_SHLIBS])]) +m4_ifndef([AC_LIBTOOL_POSTDEP_PREDEP], [AC_DEFUN([AC_LIBTOOL_POSTDEP_PREDEP])]) +m4_ifndef([LT_AC_PROG_EGREP], [AC_DEFUN([LT_AC_PROG_EGREP])]) +m4_ifndef([LT_AC_PROG_SED], [AC_DEFUN([LT_AC_PROG_SED])]) +m4_ifndef([_LT_CC_BASENAME], [AC_DEFUN([_LT_CC_BASENAME])]) +m4_ifndef([_LT_COMPILER_BOILERPLATE], [AC_DEFUN([_LT_COMPILER_BOILERPLATE])]) +m4_ifndef([_LT_LINKER_BOILERPLATE], [AC_DEFUN([_LT_LINKER_BOILERPLATE])]) +m4_ifndef([_AC_PROG_LIBTOOL], [AC_DEFUN([_AC_PROG_LIBTOOL])]) +m4_ifndef([AC_LIBTOOL_SETUP], [AC_DEFUN([AC_LIBTOOL_SETUP])]) +m4_ifndef([_LT_AC_CHECK_DLFCN], [AC_DEFUN([_LT_AC_CHECK_DLFCN])]) +m4_ifndef([AC_LIBTOOL_SYS_DYNAMIC_LINKER], [AC_DEFUN([AC_LIBTOOL_SYS_DYNAMIC_LINKER])]) +m4_ifndef([_LT_AC_TAGCONFIG], [AC_DEFUN([_LT_AC_TAGCONFIG])]) +m4_ifndef([AC_DISABLE_FAST_INSTALL], [AC_DEFUN([AC_DISABLE_FAST_INSTALL])]) +m4_ifndef([_LT_AC_LANG_CXX], [AC_DEFUN([_LT_AC_LANG_CXX])]) +m4_ifndef([_LT_AC_LANG_F77], [AC_DEFUN([_LT_AC_LANG_F77])]) +m4_ifndef([_LT_AC_LANG_GCJ], [AC_DEFUN([_LT_AC_LANG_GCJ])]) +m4_ifndef([AC_LIBTOOL_LANG_C_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_C_CONFIG])]) +m4_ifndef([_LT_AC_LANG_C_CONFIG], [AC_DEFUN([_LT_AC_LANG_C_CONFIG])]) +m4_ifndef([AC_LIBTOOL_LANG_CXX_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_CXX_CONFIG])]) +m4_ifndef([_LT_AC_LANG_CXX_CONFIG], [AC_DEFUN([_LT_AC_LANG_CXX_CONFIG])]) +m4_ifndef([AC_LIBTOOL_LANG_F77_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_F77_CONFIG])]) +m4_ifndef([_LT_AC_LANG_F77_CONFIG], [AC_DEFUN([_LT_AC_LANG_F77_CONFIG])]) +m4_ifndef([AC_LIBTOOL_LANG_GCJ_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_GCJ_CONFIG])]) +m4_ifndef([_LT_AC_LANG_GCJ_CONFIG], [AC_DEFUN([_LT_AC_LANG_GCJ_CONFIG])]) +m4_ifndef([AC_LIBTOOL_LANG_RC_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_RC_CONFIG])]) +m4_ifndef([_LT_AC_LANG_RC_CONFIG], [AC_DEFUN([_LT_AC_LANG_RC_CONFIG])]) +m4_ifndef([AC_LIBTOOL_CONFIG], [AC_DEFUN([AC_LIBTOOL_CONFIG])]) +m4_ifndef([_LT_AC_FILE_LTDLL_C], [AC_DEFUN([_LT_AC_FILE_LTDLL_C])]) +m4_ifndef([_LT_REQUIRED_DARWIN_CHECKS], [AC_DEFUN([_LT_REQUIRED_DARWIN_CHECKS])]) +m4_ifndef([_LT_AC_PROG_CXXCPP], [AC_DEFUN([_LT_AC_PROG_CXXCPP])]) +m4_ifndef([_LT_PREPARE_SED_QUOTE_VARS], [AC_DEFUN([_LT_PREPARE_SED_QUOTE_VARS])]) +m4_ifndef([_LT_PROG_ECHO_BACKSLASH], [AC_DEFUN([_LT_PROG_ECHO_BACKSLASH])]) +m4_ifndef([_LT_PROG_F77], [AC_DEFUN([_LT_PROG_F77])]) +m4_ifndef([_LT_PROG_FC], [AC_DEFUN([_LT_PROG_FC])]) +m4_ifndef([_LT_PROG_CXX], [AC_DEFUN([_LT_PROG_CXX])]) diff --git a/libs/shapelib/makefile.vc b/libs/shapelib/makefile.vc new file mode 100644 index 0000000..33e90ba --- /dev/null +++ b/libs/shapelib/makefile.vc @@ -0,0 +1,90 @@ + +#CFLAGS = /DSHPAPI_CALL=__stdcall +# 4100: 'identifier' : unreferenced formal parameter +CFLAGS = /nologo /Ox /MD /W4 /wd4100 /D_CRT_SECURE_NO_DEPRECATE /DSHAPELIB_DLLEXPORT + +IMPORT_LIB = shapelib_i.lib +STATIC_LIB = shapelib.lib +DLLNAME = shapelib.dll +LINK_LIB = $(IMPORT_LIB) + +OBJ = shpopen.obj dbfopen.obj shptree.obj safileio.obj sbnsearch.obj + +all: $(STATIC_LIB) $(DLLNAME) \ + shpcreate.exe shpadd.exe shpdump.exe shprewind.exe dbfcreate.exe \ + dbfadd.exe dbfdump.exe shptest.exe shptreedump.exe + +shpopen.obj: shpopen.c shapefil.h + $(CC) $(CFLAGS) -c shpopen.c + +shptree.obj: shptree.c shapefil.h + $(CC) $(CFLAGS) -c shptree.c + +dbfopen.obj: dbfopen.c shapefil.h + $(CC) $(CFLAGS) -c dbfopen.c + +safileio.obj: safileio.c shapefil.h + $(CC) $(CFLAGS) -c safileio.c + +sbnsearch.obj: sbnsearch.c shapefil.h + $(CC) $(CFLAGS) -c sbnsearch.c + +shpcreate.exe: shpcreate.c $(LINK_LIB) + $(CC) $(CFLAGS) shpcreate.c $(LINK_LIB) $(LINKOPT) + if exist $@.manifest mt -manifest $@.manifest -outputresource:$@;1 + +shpadd.exe: shpadd.c $(LINK_LIB) + $(CC) $(CFLAGS) shpadd.c $(LINK_LIB) $(LINKOPT) + if exist $@.manifest mt -manifest $@.manifest -outputresource:$@;1 + +shpdump.exe: shpdump.c $(LINK_LIB) + $(CC) $(CFLAGS) shpdump.c $(LINK_LIB) $(LINKOPT) + if exist $@.manifest mt -manifest $@.manifest -outputresource:$@;1 + +shprewind.exe: shprewind.c $(LINK_LIB) + $(CC) $(CFLAGS) shprewind.c $(LINK_LIB) $(LINKOPT) + if exist $@.manifest mt -manifest $@.manifest -outputresource:$@;1 + +dbfcreate.exe: dbfcreate.c $(LINK_LIB) + $(CC) $(CFLAGS) dbfcreate.c $(LINK_LIB) $(LINKOPT) + if exist $@.manifest mt -manifest $@.manifest -outputresource:$@;1 + +dbfadd.exe: dbfadd.c $(LINK_LIB) + $(CC) $(CFLAGS) dbfadd.c $(LINK_LIB) $(LINKOPT) + if exist $@.manifest mt -manifest $@.manifest -outputresource:$@;1 + +dbfdump.exe: dbfdump.c $(LINK_LIB) + $(CC) $(CFLAGS) dbfdump.c $(LINK_LIB) $(LINKOPT) + if exist $@.manifest mt -manifest $@.manifest -outputresource:$@;1 + +shptest.exe: shptest.c $(LINK_LIB) + $(CC) $(CFLAGS) shptest.c $(LINK_LIB) $(LINKOPT) + if exist $@.manifest mt -manifest $@.manifest -outputresource:$@;1 + +shputils.exe: shputils.c $(LINK_LIB) + $(CC) $(CFLAGS) shputils.c $(LINK_LIB) $(LINKOPT) + if exist $@.manifest mt -manifest $@.manifest -outputresource:$@;1 + +shptreedump.exe: shptreedump.c $(LINK_LIB) + $(CC) $(CFLAGS) shptreedump.c $(LINK_LIB) $(LINKOPT) + if exist $@.manifest mt -manifest $@.manifest -outputresource:$@;1 + +shpdiff.exe: shpdiff.c $(LINK_LIB) + $(CC) $(CFLAGS) shpdiff.c $(LINK_LIB) $(LINKOPT) + if exist $@.manifest mt -manifest $@.manifest -outputresource:$@;1 + +clean: + -del *.obj + -del *.exe + -del *.lib + -del *.dll + -del *.manifest + +$(STATIC_LIB): $(OBJ) + lib /nologo /out:$(STATIC_LIB) $(OBJ) + +$(IMPORT_LIB): $(DLLNAME) + +$(DLLNAME): $(OBJ) + link /nologo /dll /out:$(DLLNAME) /implib:$(IMPORT_LIB) $(OBJ) + if exist $(DLLNAME).manifest mt /nologo -manifest $(DLLNAME).manifest -outputresource:$(DLLNAME);2 diff --git a/libs/shapelib/missing b/libs/shapelib/missing new file mode 100755 index 0000000..f62bbae --- /dev/null +++ b/libs/shapelib/missing @@ -0,0 +1,215 @@ +#! /bin/sh +# Common wrapper for a few potentially missing GNU programs. + +scriptversion=2013-10-28.13; # UTC + +# Copyright (C) 1996-2014 Free Software Foundation, Inc. +# Originally written by Fran,cois Pinard , 1996. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2, or (at your option) +# any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + +if test $# -eq 0; then + echo 1>&2 "Try '$0 --help' for more information" + exit 1 +fi + +case $1 in + + --is-lightweight) + # Used by our autoconf macros to check whether the available missing + # script is modern enough. + exit 0 + ;; + + --run) + # Back-compat with the calling convention used by older automake. + shift + ;; + + -h|--h|--he|--hel|--help) + echo "\ +$0 [OPTION]... PROGRAM [ARGUMENT]... + +Run 'PROGRAM [ARGUMENT]...', returning a proper advice when this fails due +to PROGRAM being missing or too old. + +Options: + -h, --help display this help and exit + -v, --version output version information and exit + +Supported PROGRAM values: + aclocal autoconf autoheader autom4te automake makeinfo + bison yacc flex lex help2man + +Version suffixes to PROGRAM as well as the prefixes 'gnu-', 'gnu', and +'g' are ignored when checking the name. + +Send bug reports to ." + exit $? + ;; + + -v|--v|--ve|--ver|--vers|--versi|--versio|--version) + echo "missing $scriptversion (GNU Automake)" + exit $? + ;; + + -*) + echo 1>&2 "$0: unknown '$1' option" + echo 1>&2 "Try '$0 --help' for more information" + exit 1 + ;; + +esac + +# Run the given program, remember its exit status. +"$@"; st=$? + +# If it succeeded, we are done. +test $st -eq 0 && exit 0 + +# Also exit now if we it failed (or wasn't found), and '--version' was +# passed; such an option is passed most likely to detect whether the +# program is present and works. +case $2 in --version|--help) exit $st;; esac + +# Exit code 63 means version mismatch. This often happens when the user +# tries to use an ancient version of a tool on a file that requires a +# minimum version. +if test $st -eq 63; then + msg="probably too old" +elif test $st -eq 127; then + # Program was missing. + msg="missing on your system" +else + # Program was found and executed, but failed. Give up. + exit $st +fi + +perl_URL=http://www.perl.org/ +flex_URL=http://flex.sourceforge.net/ +gnu_software_URL=http://www.gnu.org/software + +program_details () +{ + case $1 in + aclocal|automake) + echo "The '$1' program is part of the GNU Automake package:" + echo "<$gnu_software_URL/automake>" + echo "It also requires GNU Autoconf, GNU m4 and Perl in order to run:" + echo "<$gnu_software_URL/autoconf>" + echo "<$gnu_software_URL/m4/>" + echo "<$perl_URL>" + ;; + autoconf|autom4te|autoheader) + echo "The '$1' program is part of the GNU Autoconf package:" + echo "<$gnu_software_URL/autoconf/>" + echo "It also requires GNU m4 and Perl in order to run:" + echo "<$gnu_software_URL/m4/>" + echo "<$perl_URL>" + ;; + esac +} + +give_advice () +{ + # Normalize program name to check for. + normalized_program=`echo "$1" | sed ' + s/^gnu-//; t + s/^gnu//; t + s/^g//; t'` + + printf '%s\n' "'$1' is $msg." + + configure_deps="'configure.ac' or m4 files included by 'configure.ac'" + case $normalized_program in + autoconf*) + echo "You should only need it if you modified 'configure.ac'," + echo "or m4 files included by it." + program_details 'autoconf' + ;; + autoheader*) + echo "You should only need it if you modified 'acconfig.h' or" + echo "$configure_deps." + program_details 'autoheader' + ;; + automake*) + echo "You should only need it if you modified 'Makefile.am' or" + echo "$configure_deps." + program_details 'automake' + ;; + aclocal*) + echo "You should only need it if you modified 'acinclude.m4' or" + echo "$configure_deps." + program_details 'aclocal' + ;; + autom4te*) + echo "You might have modified some maintainer files that require" + echo "the 'autom4te' program to be rebuilt." + program_details 'autom4te' + ;; + bison*|yacc*) + echo "You should only need it if you modified a '.y' file." + echo "You may want to install the GNU Bison package:" + echo "<$gnu_software_URL/bison/>" + ;; + lex*|flex*) + echo "You should only need it if you modified a '.l' file." + echo "You may want to install the Fast Lexical Analyzer package:" + echo "<$flex_URL>" + ;; + help2man*) + echo "You should only need it if you modified a dependency" \ + "of a man page." + echo "You may want to install the GNU Help2man package:" + echo "<$gnu_software_URL/help2man/>" + ;; + makeinfo*) + echo "You should only need it if you modified a '.texi' file, or" + echo "any other file indirectly affecting the aspect of the manual." + echo "You might want to install the Texinfo package:" + echo "<$gnu_software_URL/texinfo/>" + echo "The spurious makeinfo call might also be the consequence of" + echo "using a buggy 'make' (AIX, DU, IRIX), in which case you might" + echo "want to install GNU make:" + echo "<$gnu_software_URL/make/>" + ;; + *) + echo "You might have modified some files without having the proper" + echo "tools for further handling them. Check the 'README' file, it" + echo "often tells you about the needed prerequisites for installing" + echo "this package. You may also peek at any GNU archive site, in" + echo "case some other package contains this missing '$1' program." + ;; + esac +} + +give_advice "$1" | sed -e '1s/^/WARNING: /' \ + -e '2,$s/^/ /' >&2 + +# Propagate the correct exit status (expected to be 127 for a program +# not found, 63 for a program that failed due to version mismatch). +exit $st + +# Local variables: +# eval: (add-hook 'write-file-hooks 'time-stamp) +# time-stamp-start: "scriptversion=" +# time-stamp-format: "%:y-%02m-%02d.%02H" +# time-stamp-time-zone: "UTC" +# time-stamp-end: "; # UTC" +# End: diff --git a/libs/shapelib/safileio.c b/libs/shapelib/safileio.c new file mode 100644 index 0000000..533e7ad --- /dev/null +++ b/libs/shapelib/safileio.c @@ -0,0 +1,291 @@ +/****************************************************************************** + * $Id: safileio.c,v 1.5 2016-12-05 12:44:05 erouault Exp $ + * + * Project: Shapelib + * Purpose: Default implementation of file io based on stdio. + * Author: Frank Warmerdam, warmerdam@pobox.com + * + ****************************************************************************** + * Copyright (c) 2007, Frank Warmerdam + * + * This software is available under the following "MIT Style" license, + * or at the option of the licensee under the LGPL (see COPYING). This + * option is discussed in more detail in shapelib.html. + * + * -- + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included + * in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS + * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. + ****************************************************************************** + * + * $Log: safileio.c,v $ + * Revision 1.5 2016-12-05 12:44:05 erouault + * * Major overhaul of Makefile build system to use autoconf/automake. + * + * * Warning fixes in contrib/ + * + * Revision 1.4 2008-01-16 20:05:14 bram + * Add file hooks that accept UTF-8 encoded filenames on some platforms. Use SASetupUtf8Hooks + * tosetup the hooks and check SHPAPI_UTF8_HOOKS for its availability. Currently, this + * is only available on the Windows platform that decodes the UTF-8 filenames to wide + * character strings and feeds them to _wfopen and _wremove. + * + * Revision 1.3 2007/12/18 18:28:11 bram + * - create hook for client specific atof (bugzilla ticket 1615) + * - check for NULL handle before closing cpCPG file, and close after reading. + * + * Revision 1.2 2007/12/15 20:25:30 bram + * dbfopen.c now reads the Code Page information from the DBF file, and exports + * this information as a string through the DBFGetCodePage function. This is + * either the number from the LDID header field ("LDID/") or as the + * content of an accompanying .CPG file. When creating a DBF file, the code can + * be set using DBFCreateEx. + * + * Revision 1.1 2007/12/06 06:56:41 fwarmerdam + * new + * + */ + +#include "shapefil.h" + +#include +#include +#include +#include +#include +#include + +SHP_CVSID("$Id: safileio.c,v 1.5 2016-12-05 12:44:05 erouault Exp $"); + +#ifdef SHPAPI_UTF8_HOOKS +# ifdef SHPAPI_WINDOWS +# define WIN32_LEAN_AND_MEAN +# define NOMINMAX +# include +# pragma comment(lib, "kernel32.lib") +# endif +#endif + +/************************************************************************/ +/* SADFOpen() */ +/************************************************************************/ + +SAFile SADFOpen( const char *pszFilename, const char *pszAccess ) + +{ + return (SAFile) fopen( pszFilename, pszAccess ); +} + +/************************************************************************/ +/* SADFRead() */ +/************************************************************************/ + +SAOffset SADFRead( void *p, SAOffset size, SAOffset nmemb, SAFile file ) + +{ + return (SAOffset) fread( p, (size_t) size, (size_t) nmemb, + (FILE *) file ); +} + +/************************************************************************/ +/* SADFWrite() */ +/************************************************************************/ + +SAOffset SADFWrite( void *p, SAOffset size, SAOffset nmemb, SAFile file ) + +{ + return (SAOffset) fwrite( p, (size_t) size, (size_t) nmemb, + (FILE *) file ); +} + +/************************************************************************/ +/* SADFSeek() */ +/************************************************************************/ + +SAOffset SADFSeek( SAFile file, SAOffset offset, int whence ) + +{ + return (SAOffset) fseek( (FILE *) file, (long) offset, whence ); +} + +/************************************************************************/ +/* SADFTell() */ +/************************************************************************/ + +SAOffset SADFTell( SAFile file ) + +{ + return (SAOffset) ftell( (FILE *) file ); +} + +/************************************************************************/ +/* SADFFlush() */ +/************************************************************************/ + +int SADFFlush( SAFile file ) + +{ + return fflush( (FILE *) file ); +} + +/************************************************************************/ +/* SADFClose() */ +/************************************************************************/ + +int SADFClose( SAFile file ) + +{ + return fclose( (FILE *) file ); +} + +/************************************************************************/ +/* SADFClose() */ +/************************************************************************/ + +int SADRemove( const char *filename ) + +{ + return remove( filename ); +} + +/************************************************************************/ +/* SADError() */ +/************************************************************************/ + +void SADError( const char *message ) + +{ + fprintf( stderr, "%s\n", message ); +} + +/************************************************************************/ +/* SASetupDefaultHooks() */ +/************************************************************************/ + +void SASetupDefaultHooks( SAHooks *psHooks ) + +{ + psHooks->FOpen = SADFOpen; + psHooks->FRead = SADFRead; + psHooks->FWrite = SADFWrite; + psHooks->FSeek = SADFSeek; + psHooks->FTell = SADFTell; + psHooks->FFlush = SADFFlush; + psHooks->FClose = SADFClose; + psHooks->Remove = SADRemove; + + psHooks->Error = SADError; + psHooks->Atof = atof; +} + + + + +#ifdef SHPAPI_WINDOWS + +/************************************************************************/ +/* Utf8ToWideChar */ +/************************************************************************/ + +const wchar_t* Utf8ToWideChar( const char *pszFilename ) +{ + int nMulti, nWide; + wchar_t *pwszFileName; + + nMulti = strlen(pszFilename) + 1; + nWide = MultiByteToWideChar( CP_UTF8, 0, pszFilename, nMulti, 0, 0); + if( nWide == 0 ) + { + return NULL; + } + pwszFileName = (wchar_t*) malloc(nWide * sizeof(wchar_t)); + if ( pwszFileName == NULL ) + { + return NULL; + } + if( MultiByteToWideChar( CP_UTF8, 0, pszFilename, nMulti, pwszFileName, nWide ) == 0 ) + { + free( pwszFileName ); + return NULL; + } + return pwszFileName; +} + +/************************************************************************/ +/* SAUtf8WFOpen */ +/************************************************************************/ + +SAFile SAUtf8WFOpen( const char *pszFilename, const char *pszAccess ) +{ + SAFile file = NULL; + const wchar_t *pwszFileName, *pwszAccess; + pwszFileName = Utf8ToWideChar( pszFilename ); + pwszAccess = Utf8ToWideChar( pszAccess ); + if( pwszFileName != NULL && pwszFileName != NULL) + { + file = (SAFile) _wfopen( pwszFileName, pwszAccess ); + } + free ((wchar_t*) pwszFileName); + free ((wchar_t*) pwszAccess); + return file; +} + +/************************************************************************/ +/* SAUtf8WRemove() */ +/************************************************************************/ + +int SAUtf8WRemove( const char *pszFilename ) +{ + const wchar_t *pwszFileName = Utf8ToWideChar( pszFilename ); + int rc = -1; + if( pwszFileName != NULL ) + { + rc = _wremove( pwszFileName ); + } + free ((wchar_t*) pwszFileName); + return rc; +} + +#endif + +#ifdef SHPAPI_UTF8_HOOKS + +/************************************************************************/ +/* SASetupUtf8Hooks() */ +/************************************************************************/ + +void SASetupUtf8Hooks( SAHooks *psHooks ) +{ +#ifdef SHPAPI_WINDOWS + psHooks->FOpen = SAUtf8WFOpen; + psHooks->Remove = SAUtf8WRemove; +#else +# error "no implementations of UTF-8 hooks available for this platform" +#endif + psHooks->FRead = SADFRead; + psHooks->FWrite = SADFWrite; + psHooks->FSeek = SADFSeek; + psHooks->FTell = SADFTell; + psHooks->FFlush = SADFFlush; + psHooks->FClose = SADFClose; + + psHooks->Error = SADError; + psHooks->Atof = atof; +} + +#endif diff --git a/libs/shapelib/sbnsearch.c b/libs/shapelib/sbnsearch.c new file mode 100644 index 0000000..acc975b --- /dev/null +++ b/libs/shapelib/sbnsearch.c @@ -0,0 +1,985 @@ +/****************************************************************************** + * $Id: sbnsearch.c,v 1.2 2016-12-05 12:44:05 erouault Exp $ + * + * Project: Shapelib + * Purpose: Implementation of search in ESRI SBN spatial index. + * Author: Even Rouault, even dot rouault at mines dash paris dot org + * + ****************************************************************************** + * Copyright (c) 2012-2014, Even Rouault + * + * This software is available under the following "MIT Style" license, + * or at the option of the licensee under the LGPL (see COPYING). This + * option is discussed in more detail in shapelib.html. + * + * -- + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included + * in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS + * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. + ******************************************************************************/ + +#include "shapefil.h" + +#include +#include +#include +#include + +SHP_CVSID("$Id: sbnsearch.c,v 1.2 2016-12-05 12:44:05 erouault Exp $") + +#ifndef TRUE +# define TRUE 1 +# define FALSE 0 +#endif + +#ifndef USE_CPL +#if defined(_MSC_VER) +# if _MSC_VER < 1900 +# define snprintf _snprintf +# endif +#elif defined(WIN32) || defined(_WIN32) +# ifndef snprintf +# define snprintf _snprintf +# endif +#endif +#endif + +#define READ_MSB_INT(ptr) \ + (((ptr)[0] << 24) | ((ptr)[1] << 16) | ((ptr)[2] << 8) | (ptr)[3]) + +#define CACHED_DEPTH_LIMIT 8 + +typedef unsigned char uchar; + +typedef int coord; +/*typedef uchar coord;*/ + +typedef struct +{ + uchar *pabyShapeDesc; /* Cache of (nShapeCount * 8) bytes of the bins. May be NULL. */ + int nBinStart; /* Index of first bin for this node. */ + int nShapeCount; /* Number of shapes attached to this node. */ + int nBinCount; /* Number of bins for this node. May be 0 if node is empty. */ + int nBinOffset; /* Offset in file of the start of the first bin. May be 0 if node is empty. */ + + int bBBoxInit; /* TRUE if the following bounding box has been computed. */ + coord bMinX; /* Bounding box of the shapes directly attached to this node. */ + coord bMinY; /* This is *not* the theoretical footprint of the node. */ + coord bMaxX; + coord bMaxY; +} SBNNodeDescriptor; + +struct SBNSearchInfo +{ + SAHooks sHooks; + SAFile fpSBN; + SBNNodeDescriptor *pasNodeDescriptor; + int nShapeCount; /* Total number of shapes */ + int nMaxDepth; /* Tree depth */ + double dfMinX; /* Bounding box of all shapes */ + double dfMaxX; + double dfMinY; + double dfMaxY; + +#ifdef DEBUG_IO + int nTotalBytesRead; +#endif +}; + +typedef struct +{ + SBNSearchHandle hSBN; + + coord bMinX; /* Search bounding box */ + coord bMinY; + coord bMaxX; + coord bMaxY; + + int nShapeCount; + int nShapeAlloc; + int *panShapeId; /* 0 based */ + + uchar abyBinShape[8 * 100]; + +#ifdef DEBUG_IO + int nBytesRead; +#endif +} SearchStruct; + +/************************************************************************/ +/* SwapWord() */ +/* */ +/* Swap a 2, 4 or 8 byte word. */ +/************************************************************************/ + +static void SwapWord( int length, void * wordP ) + +{ + int i; + uchar temp; + + for( i=0; i < length/2; i++ ) + { + temp = ((uchar *) wordP)[i]; + ((uchar *)wordP)[i] = ((uchar *) wordP)[length-i-1]; + ((uchar *) wordP)[length-i-1] = temp; + } +} + +/************************************************************************/ +/* SBNOpenDiskTree() */ +/************************************************************************/ + +SBNSearchHandle SBNOpenDiskTree( const char* pszSBNFilename, + SAHooks *psHooks ) +{ + int i; + SBNSearchHandle hSBN; + uchar abyHeader[108]; + int nShapeCount; + int nMaxDepth; + int nMaxNodes; + int nNodeDescSize; + int nNodeDescCount; + uchar* pabyData = NULL; + SBNNodeDescriptor* pasNodeDescriptor = NULL; + uchar abyBinHeader[8]; + int nCurNode; + int nNextNonEmptyNode; + int nExpectedBinId; + int bBigEndian; + +/* -------------------------------------------------------------------- */ +/* Establish the byte order on this machine. */ +/* -------------------------------------------------------------------- */ + i = 1; + if( *((unsigned char *) &i) == 1 ) + bBigEndian = FALSE; + else + bBigEndian = TRUE; + +/* -------------------------------------------------------------------- */ +/* Initialize the handle structure. */ +/* -------------------------------------------------------------------- */ + hSBN = (SBNSearchHandle) + calloc(sizeof(struct SBNSearchInfo),1); + + if (psHooks == NULL) + SASetupDefaultHooks( &(hSBN->sHooks) ); + else + memcpy( &(hSBN->sHooks), psHooks, sizeof(SAHooks) ); + + hSBN->fpSBN = hSBN->sHooks.FOpen(pszSBNFilename, "rb"); + if (hSBN->fpSBN == NULL) + { + free(hSBN); + return NULL; + } + +/* -------------------------------------------------------------------- */ +/* Check file header signature. */ +/* -------------------------------------------------------------------- */ + if (hSBN->sHooks.FRead(abyHeader, 108, 1, hSBN->fpSBN) != 1 || + abyHeader[0] != 0 || + abyHeader[1] != 0 || + abyHeader[2] != 0x27 || + (abyHeader[3] != 0x0A && abyHeader[3] != 0x0D) || + abyHeader[4] != 0xFF || + abyHeader[5] != 0xFF || + abyHeader[6] != 0xFE || + abyHeader[7] != 0x70) + { + hSBN->sHooks.Error( ".sbn file is unreadable, or corrupt." ); + SBNCloseDiskTree(hSBN); + return NULL; + } + +/* -------------------------------------------------------------------- */ +/* Read shapes bounding box. */ +/* -------------------------------------------------------------------- */ + + memcpy(&hSBN->dfMinX, abyHeader + 32, 8); + memcpy(&hSBN->dfMinY, abyHeader + 40, 8); + memcpy(&hSBN->dfMaxX, abyHeader + 48, 8); + memcpy(&hSBN->dfMaxY, abyHeader + 56, 8); + + if( !bBigEndian ) + { + SwapWord(8, &hSBN->dfMinX); + SwapWord(8, &hSBN->dfMinY); + SwapWord(8, &hSBN->dfMaxX); + SwapWord(8, &hSBN->dfMaxY); + } + + if( hSBN->dfMinX > hSBN->dfMaxX || + hSBN->dfMinY > hSBN->dfMaxY ) + { + hSBN->sHooks.Error( "Invalid extent in .sbn file." ); + SBNCloseDiskTree(hSBN); + return NULL; + } + +/* -------------------------------------------------------------------- */ +/* Read and check number of shapes. */ +/* -------------------------------------------------------------------- */ + nShapeCount = READ_MSB_INT(abyHeader + 28); + hSBN->nShapeCount = nShapeCount; + if (nShapeCount < 0 || nShapeCount > 256000000 ) + { + char szErrorMsg[64]; + snprintf(szErrorMsg, sizeof(szErrorMsg), + "Invalid shape count in .sbn : %d", nShapeCount ); + hSBN->sHooks.Error( szErrorMsg ); + SBNCloseDiskTree(hSBN); + return NULL; + } + + /* Empty spatial index */ + if( nShapeCount == 0 ) + { + return hSBN; + } + +/* -------------------------------------------------------------------- */ +/* Compute tree depth. */ +/* It is computed such as in average there are not more than 8 */ +/* shapes per node. With a minimum depth of 2, and a maximum of 24 */ +/* -------------------------------------------------------------------- */ + nMaxDepth = 2; + while( nMaxDepth < 24 && nShapeCount > ((1 << nMaxDepth) - 1) * 8 ) + nMaxDepth ++; + hSBN->nMaxDepth = nMaxDepth; + nMaxNodes = (1 << nMaxDepth) - 1; + +/* -------------------------------------------------------------------- */ +/* Check that the first bin id is 1. */ +/* -------------------------------------------------------------------- */ + + if( READ_MSB_INT(abyHeader + 100) != 1 ) + { + hSBN->sHooks.Error( "Unexpected bin id" ); + SBNCloseDiskTree(hSBN); + return NULL; + } + +/* -------------------------------------------------------------------- */ +/* Read and check number of node descriptors to be read. */ +/* There are at most (2^nMaxDepth) - 1, but all are not necessary */ +/* described. Non described nodes are empty. */ +/* -------------------------------------------------------------------- */ + nNodeDescSize = READ_MSB_INT(abyHeader + 104); + nNodeDescSize *= 2; /* 16-bit words */ + + /* each bin descriptor is made of 2 ints */ + nNodeDescCount = nNodeDescSize / 8; + + if ((nNodeDescSize % 8) != 0 || + nNodeDescCount < 0 || nNodeDescCount > nMaxNodes ) + { + char szErrorMsg[64]; + snprintf(szErrorMsg, sizeof(szErrorMsg), + "Invalid node descriptor size in .sbn : %d", nNodeDescSize ); + hSBN->sHooks.Error( szErrorMsg ); + SBNCloseDiskTree(hSBN); + return NULL; + } + + /* coverity[tainted_data] */ + pabyData = (uchar*) malloc( nNodeDescSize ); + pasNodeDescriptor = (SBNNodeDescriptor*) + calloc ( nMaxNodes, sizeof(SBNNodeDescriptor) ); + if (pabyData == NULL || pasNodeDescriptor == NULL) + { + free(pabyData); + free(pasNodeDescriptor); + hSBN->sHooks.Error( "Out of memory error" ); + SBNCloseDiskTree(hSBN); + return NULL; + } + +/* -------------------------------------------------------------------- */ +/* Read node descriptors. */ +/* -------------------------------------------------------------------- */ + if (hSBN->sHooks.FRead(pabyData, nNodeDescSize, 1, + hSBN->fpSBN) != 1) + { + free(pabyData); + free(pasNodeDescriptor); + hSBN->sHooks.Error( "Cannot read node descriptors" ); + SBNCloseDiskTree(hSBN); + return NULL; + } + + hSBN->pasNodeDescriptor = pasNodeDescriptor; + + for(i = 0; i < nNodeDescCount; i++) + { +/* -------------------------------------------------------------------- */ +/* Each node descriptor contains the index of the first bin that */ +/* described it, and the number of shapes in this first bin and */ +/* the following bins (in the relevant case). */ +/* -------------------------------------------------------------------- */ + int nBinStart = READ_MSB_INT(pabyData + 8 * i); + int nNodeShapeCount = READ_MSB_INT(pabyData + 8 * i + 4); + pasNodeDescriptor[i].nBinStart = nBinStart > 0 ? nBinStart : 0; + pasNodeDescriptor[i].nShapeCount = nNodeShapeCount; + + if ((nBinStart > 0 && nNodeShapeCount == 0) || + nNodeShapeCount < 0 || nNodeShapeCount > nShapeCount) + { + hSBN->sHooks.Error( "Inconsistent shape count in bin" ); + SBNCloseDiskTree(hSBN); + return NULL; + } + } + + free(pabyData); + pabyData = NULL; + + /* Locate first non-empty node */ + nCurNode = 0; + while(nCurNode < nMaxNodes && pasNodeDescriptor[nCurNode].nBinStart <= 0) + nCurNode ++; + + if( nCurNode >= nMaxNodes) + { + hSBN->sHooks.Error( "All nodes are empty" ); + SBNCloseDiskTree(hSBN); + return NULL; + } + + pasNodeDescriptor[nCurNode].nBinOffset = + (int) hSBN->sHooks.FTell(hSBN->fpSBN); + + /* Compute the index of the next non empty node. */ + nNextNonEmptyNode = nCurNode + 1; + while(nNextNonEmptyNode < nMaxNodes && + pasNodeDescriptor[nNextNonEmptyNode].nBinStart <= 0) + nNextNonEmptyNode ++; + + nExpectedBinId = 1; + +/* -------------------------------------------------------------------- */ +/* Traverse bins to compute the offset of the first bin of each */ +/* node. */ +/* Note: we could use the .sbx file to compute the offsets instead.*/ +/* -------------------------------------------------------------------- */ + while( hSBN->sHooks.FRead(abyBinHeader, 8, 1, + hSBN->fpSBN) == 1 ) + { + int nBinId; + int nBinSize; + + nExpectedBinId ++; + + nBinId = READ_MSB_INT(abyBinHeader); + nBinSize = READ_MSB_INT(abyBinHeader + 4); + nBinSize *= 2; /* 16-bit words */ + + if( nBinId != nExpectedBinId ) + { + hSBN->sHooks.Error( "Unexpected bin id" ); + SBNCloseDiskTree(hSBN); + return NULL; + } + + /* Bins are always limited to 100 features */ + /* If there are more, then they are located in continuous bins */ + if( (nBinSize % 8) != 0 || nBinSize <= 0 || nBinSize > 100 * 8) + { + hSBN->sHooks.Error( "Unexpected bin size" ); + SBNCloseDiskTree(hSBN); + return NULL; + } + + if( nNextNonEmptyNode < nMaxNodes && + nBinId == pasNodeDescriptor[nNextNonEmptyNode].nBinStart ) + { + nCurNode = nNextNonEmptyNode; + pasNodeDescriptor[nCurNode].nBinOffset = + (int) hSBN->sHooks.FTell(hSBN->fpSBN) - 8; + + /* Compute the index of the next non empty node. */ + nNextNonEmptyNode = nCurNode + 1; + while(nNextNonEmptyNode < nMaxNodes && + pasNodeDescriptor[nNextNonEmptyNode].nBinStart <= 0) + nNextNonEmptyNode ++; + } + + pasNodeDescriptor[nCurNode].nBinCount ++; + + /* Skip shape description */ + hSBN->sHooks.FSeek(hSBN->fpSBN, nBinSize, SEEK_CUR); + } + + return hSBN; +} + +/***********************************************************************/ +/* SBNCloseDiskTree() */ +/************************************************************************/ + +void SBNCloseDiskTree( SBNSearchHandle hSBN ) +{ + int i; + int nMaxNodes; + + if (hSBN == NULL) + return; + + if( hSBN->pasNodeDescriptor != NULL ) + { + nMaxNodes = (1 << hSBN->nMaxDepth) - 1; + for(i = 0; i < nMaxNodes; i++) + { + if( hSBN->pasNodeDescriptor[i].pabyShapeDesc != NULL ) + free(hSBN->pasNodeDescriptor[i].pabyShapeDesc); + } + } + + /* printf("hSBN->nTotalBytesRead = %d\n", hSBN->nTotalBytesRead); */ + + hSBN->sHooks.FClose(hSBN->fpSBN); + free(hSBN->pasNodeDescriptor); + free(hSBN); +} + + +/************************************************************************/ +/* SfRealloc() */ +/* */ +/* A realloc cover function that will access a NULL pointer as */ +/* a valid input. */ +/************************************************************************/ + +static void * SfRealloc( void * pMem, int nNewSize ) + +{ + if( pMem == NULL ) + return( (void *) malloc(nNewSize) ); + else + return( (void *) realloc(pMem,nNewSize) ); +} + +/************************************************************************/ +/* SBNAddShapeId() */ +/************************************************************************/ + +static int SBNAddShapeId( SearchStruct* psSearch, + int nShapeId ) +{ + if (psSearch->nShapeCount == psSearch->nShapeAlloc) + { + int* pNewPtr; + + psSearch->nShapeAlloc = + (int) (((psSearch->nShapeCount + 100) * 5) / 4); + pNewPtr = + (int *) SfRealloc( psSearch->panShapeId, + psSearch->nShapeAlloc * sizeof(int) ); + if( pNewPtr == NULL ) + { + psSearch->hSBN->sHooks.Error( "Out of memory error" ); + return FALSE; + } + psSearch->panShapeId = pNewPtr; + } + + psSearch->panShapeId[psSearch->nShapeCount] = nShapeId; + psSearch->nShapeCount ++; + return TRUE; +} + +/************************************************************************/ +/* SBNSearchDiskInternal() */ +/************************************************************************/ + +/* Due to the way integer coordinates are rounded, */ +/* we can use a strict intersection test, except when the node */ +/* bounding box or the search bounding box is degenerated. */ +#define SEARCH_BB_INTERSECTS(_bMinX, _bMinY, _bMaxX, _bMaxY) \ + (((bSearchMinX < _bMaxX && bSearchMaxX > _bMinX) || \ + ((_bMinX == _bMaxX || bSearchMinX == bSearchMaxX) && \ + bSearchMinX <= _bMaxX && bSearchMaxX >= _bMinX)) && \ + ((bSearchMinY < _bMaxY && bSearchMaxY > _bMinY) || \ + ((_bMinY == _bMaxY || bSearchMinY == bSearchMaxY ) && \ + bSearchMinY <= _bMaxY && bSearchMaxY >= _bMinY))) + + +static int SBNSearchDiskInternal( SearchStruct* psSearch, + int nDepth, + int nNodeId, + coord bNodeMinX, + coord bNodeMinY, + coord bNodeMaxX, + coord bNodeMaxY ) +{ + SBNSearchHandle hSBN; + SBNNodeDescriptor* psNode; + coord bSearchMinX = psSearch->bMinX; + coord bSearchMinY = psSearch->bMinY; + coord bSearchMaxX = psSearch->bMaxX; + coord bSearchMaxY = psSearch->bMaxY; + + hSBN = psSearch->hSBN; + + psNode = &(hSBN->pasNodeDescriptor[nNodeId]); + +/* -------------------------------------------------------------------- */ +/* Check if this node contains shapes that intersect the search */ +/* bounding box. */ +/* -------------------------------------------------------------------- */ + if ( psNode->bBBoxInit && + !(SEARCH_BB_INTERSECTS(psNode->bMinX, psNode->bMinY, + psNode->bMaxX, psNode->bMaxY)) ) + + { + /* No intersection, then don't try to read the shapes attached */ + /* to this node */ + } + +/* -------------------------------------------------------------------- */ +/* If this node contains shapes that are cached, then read them. */ +/* -------------------------------------------------------------------- */ + else if (psNode->pabyShapeDesc != NULL) + { + int j; + uchar* pabyShapeDesc = psNode->pabyShapeDesc; + + /* printf("nNodeId = %d, nDepth = %d\n", nNodeId, nDepth); */ + + for(j = 0; j < psNode->nShapeCount; j++) + { + coord bMinX = pabyShapeDesc[0]; + coord bMinY = pabyShapeDesc[1]; + coord bMaxX = pabyShapeDesc[2]; + coord bMaxY = pabyShapeDesc[3]; + + if( SEARCH_BB_INTERSECTS(bMinX, bMinY, bMaxX, bMaxY) ) + { + int nShapeId; + + nShapeId = READ_MSB_INT(pabyShapeDesc + 4); + + /* Caution : we count shape id starting from 0, and not 1 */ + nShapeId --; + + /*printf("shape=%d, minx=%d, miny=%d, maxx=%d, maxy=%d\n", + nShapeId, bMinX, bMinY, bMaxX, bMaxY);*/ + + if( !SBNAddShapeId( psSearch, nShapeId ) ) + return FALSE; + } + + pabyShapeDesc += 8; + } + } + +/* -------------------------------------------------------------------- */ +/* If the node has attached shapes (that are not (yet) cached), */ +/* then retrieve them from disk. */ +/* -------------------------------------------------------------------- */ + + else if (psNode->nBinCount > 0) + { + uchar abyBinHeader[8]; + int nBinSize, nShapes; + int nShapeCountAcc = 0; + int i, j; + + /* printf("nNodeId = %d, nDepth = %d\n", nNodeId, nDepth); */ + + hSBN->sHooks.FSeek(hSBN->fpSBN, psNode->nBinOffset, SEEK_SET); + + if (nDepth < CACHED_DEPTH_LIMIT) + psNode->pabyShapeDesc = (uchar*) malloc(psNode->nShapeCount * 8); + + for(i = 0; i < psNode->nBinCount; i++) + { + uchar* pabyBinShape; + +#ifdef DEBUG_IO + psSearch->nBytesRead += 8; +#endif + if( hSBN->sHooks.FRead(abyBinHeader, 8, 1, + hSBN->fpSBN) != 1) + { + hSBN->sHooks.Error( "I/O error" ); + free(psNode->pabyShapeDesc); + psNode->pabyShapeDesc = NULL; + return FALSE; + } + + if ( READ_MSB_INT(abyBinHeader + 0) != psNode->nBinStart + i ) + { + hSBN->sHooks.Error( "Unexpected bin id" ); + free(psNode->pabyShapeDesc); + psNode->pabyShapeDesc = NULL; + return FALSE; + } + + nBinSize = READ_MSB_INT(abyBinHeader + 4); + nBinSize *= 2; /* 16-bit words */ + + nShapes = nBinSize / 8; + + /* Bins are always limited to 100 features */ + if( (nBinSize % 8) != 0 || nShapes <= 0 || nShapes > 100) + { + hSBN->sHooks.Error( "Unexpected bin size" ); + free(psNode->pabyShapeDesc); + psNode->pabyShapeDesc = NULL; + return FALSE; + } + + if( nShapeCountAcc + nShapes > psNode->nShapeCount) + { + free(psNode->pabyShapeDesc); + psNode->pabyShapeDesc = NULL; + hSBN->sHooks.Error( "Inconsistent shape count for bin" ); + return FALSE; + } + + if (nDepth < CACHED_DEPTH_LIMIT && psNode->pabyShapeDesc != NULL) + { + pabyBinShape = psNode->pabyShapeDesc + nShapeCountAcc * 8; + } + else + { + pabyBinShape = psSearch->abyBinShape; + } + +#ifdef DEBUG_IO + psSearch->nBytesRead += nBinSize; +#endif + if (hSBN->sHooks.FRead(pabyBinShape, nBinSize, 1, + hSBN->fpSBN) != 1) + { + hSBN->sHooks.Error( "I/O error" ); + free(psNode->pabyShapeDesc); + psNode->pabyShapeDesc = NULL; + return FALSE; + } + + nShapeCountAcc += nShapes; + + if (i == 0 && !psNode->bBBoxInit) + { + psNode->bMinX = pabyBinShape[0]; + psNode->bMinY = pabyBinShape[1]; + psNode->bMaxX = pabyBinShape[2]; + psNode->bMaxY = pabyBinShape[3]; + } + + for(j = 0; j < nShapes; j++) + { + coord bMinX = pabyBinShape[0]; + coord bMinY = pabyBinShape[1]; + coord bMaxX = pabyBinShape[2]; + coord bMaxY = pabyBinShape[3]; + + if( !psNode->bBBoxInit ) + { +#ifdef sanity_checks +/* -------------------------------------------------------------------- */ +/* Those tests only check that the shape bounding box in the bin */ +/* are consistent (self-consistent and consistent with the node */ +/* they are attached to). They are optional however (as far as */ +/* the safety of runtime is concerned at least). */ +/* -------------------------------------------------------------------- */ + + if( !(((bMinX < bMaxX || + (bMinX == 0 && bMaxX == 0) || + (bMinX == 255 && bMaxX == 255))) && + ((bMinY < bMaxY || + (bMinY == 0 && bMaxY == 0) || + (bMinY == 255 && bMaxY == 255)))) || + bMaxX < bNodeMinX || bMaxY < bNodeMinY || + bMinX > bNodeMaxX || bMinY > bNodeMaxY ) + { + /*printf("shape %d %d %d %d\n", bMinX, bMinY, bMaxX, bMaxY); + printf("node %d %d %d %d\n", bNodeMinX, bNodeMinY, bNodeMaxX, bNodeMaxY);*/ + hSBN->sHooks.Error( + "Invalid shape bounding box in bin" ); + free(psNode->pabyShapeDesc); + psNode->pabyShapeDesc = NULL; + return FALSE; + } +#endif + if (bMinX < psNode->bMinX) psNode->bMinX = bMinX; + if (bMinY < psNode->bMinY) psNode->bMinY = bMinY; + if (bMaxX > psNode->bMaxX) psNode->bMaxX = bMaxX; + if (bMaxY > psNode->bMaxY) psNode->bMaxY = bMaxY; + } + + if( SEARCH_BB_INTERSECTS(bMinX, bMinY, bMaxX, bMaxY) ) + { + int nShapeId; + + nShapeId = READ_MSB_INT(pabyBinShape + 4); + + /* Caution : we count shape id starting from 0, and not 1 */ + nShapeId --; + + /*printf("shape=%d, minx=%d, miny=%d, maxx=%d, maxy=%d\n", + nShapeId, bMinX, bMinY, bMaxX, bMaxY);*/ + + if( !SBNAddShapeId( psSearch, nShapeId ) ) + return FALSE; + } + + pabyBinShape += 8; + } + } + + if( nShapeCountAcc != psNode->nShapeCount) + { + free(psNode->pabyShapeDesc); + psNode->pabyShapeDesc = NULL; + hSBN->sHooks.Error( "Inconsistent shape count for bin" ); + return FALSE; + } + + psNode->bBBoxInit = TRUE; + } + +/* -------------------------------------------------------------------- */ +/* Look up in child nodes. */ +/* -------------------------------------------------------------------- */ + if( nDepth + 1 < hSBN->nMaxDepth ) + { + nNodeId = nNodeId * 2 + 1; + + if( (nDepth % 2) == 0 ) /* x split */ + { + coord bMid = (coord) (1 + ((int)bNodeMinX + bNodeMaxX) / 2); + if( bSearchMinX <= bMid - 1 && + !SBNSearchDiskInternal( psSearch, nDepth + 1, nNodeId + 1, + bNodeMinX, bNodeMinY, + bMid - 1, bNodeMaxY ) ) + { + return FALSE; + } + if( bSearchMaxX >= bMid && + !SBNSearchDiskInternal( psSearch, nDepth + 1, nNodeId, + bMid, bNodeMinY, + bNodeMaxX, bNodeMaxY ) ) + { + return FALSE; + } + } + else /* y split */ + { + coord bMid = (coord) (1 + ((int)bNodeMinY + bNodeMaxY) / 2); + if( bSearchMinY <= bMid - 1 && + !SBNSearchDiskInternal( psSearch, nDepth + 1, nNodeId + 1, + bNodeMinX, bNodeMinY, + bNodeMaxX, bMid - 1 ) ) + { + return FALSE; + } + if( bSearchMaxY >= bMid && + !SBNSearchDiskInternal( psSearch, nDepth + 1, nNodeId, + bNodeMinX, bMid, + bNodeMaxX, bNodeMaxY ) ) + { + return FALSE; + } + } + } + + return TRUE; +} + +/************************************************************************/ +/* compare_ints() */ +/************************************************************************/ + +/* helper for qsort */ +static int +compare_ints( const void * a, const void * b) +{ + return (*(int*)a) - (*(int*)b); +} + +/************************************************************************/ +/* SBNSearchDiskTree() */ +/************************************************************************/ + +int* SBNSearchDiskTree( SBNSearchHandle hSBN, + double *padfBoundsMin, double *padfBoundsMax, + int *pnShapeCount ) +{ + double dfMinX, dfMinY, dfMaxX, dfMaxY; + double dfDiskXExtent, dfDiskYExtent; + int bMinX, bMinY, bMaxX, bMaxY; + + *pnShapeCount = 0; + + dfMinX = padfBoundsMin[0]; + dfMinY = padfBoundsMin[1]; + dfMaxX = padfBoundsMax[0]; + dfMaxY = padfBoundsMax[1]; + + if( dfMinX > dfMaxX || dfMinY > dfMaxY ) + return NULL; + + if( dfMaxX < hSBN->dfMinX || dfMaxY < hSBN->dfMinY || + dfMinX > hSBN->dfMaxX || dfMinY > hSBN->dfMaxY ) + return NULL; + +/* -------------------------------------------------------------------- */ +/* Compute the search coordinates in [0,255]x[0,255] coord. space */ +/* -------------------------------------------------------------------- */ + dfDiskXExtent = hSBN->dfMaxX - hSBN->dfMinX; + dfDiskYExtent = hSBN->dfMaxY - hSBN->dfMinY; + + if ( dfDiskXExtent == 0.0 ) + { + bMinX = 0; + bMaxX = 255; + } + else + { + if( dfMinX < hSBN->dfMinX ) + bMinX = 0; + else + { + double dfMinX_255 = (dfMinX - hSBN->dfMinX) + / dfDiskXExtent * 255.0; + bMinX = (int)floor(dfMinX_255 - 0.005); + if( bMinX < 0 ) bMinX = 0; + } + + if( dfMaxX > hSBN->dfMaxX ) + bMaxX = 255; + else + { + double dfMaxX_255 = (dfMaxX - hSBN->dfMinX) + / dfDiskXExtent * 255.0; + bMaxX = (int)ceil(dfMaxX_255 + 0.005); + if( bMaxX > 255 ) bMaxX = 255; + } + } + + if ( dfDiskYExtent == 0.0 ) + { + bMinY = 0; + bMaxY = 255; + } + else + { + if( dfMinY < hSBN->dfMinY ) + bMinY = 0; + else + { + double dfMinY_255 = (dfMinY - hSBN->dfMinY) + / dfDiskYExtent * 255.0; + bMinY = (int)floor(dfMinY_255 - 0.005); + if( bMinY < 0 ) bMinY = 0; + } + + if( dfMaxY > hSBN->dfMaxY ) + bMaxY = 255; + else + { + double dfMaxY_255 = (dfMaxY - hSBN->dfMinY) + / dfDiskYExtent * 255.0; + bMaxY = (int)ceil(dfMaxY_255 + 0.005); + if( bMaxY > 255 ) bMaxY = 255; + } + } + +/* -------------------------------------------------------------------- */ +/* Run the search. */ +/* -------------------------------------------------------------------- */ + + return SBNSearchDiskTreeInteger(hSBN, + bMinX, bMinY, bMaxX, bMaxY, + pnShapeCount); +} + +/************************************************************************/ +/* SBNSearchDiskTreeInteger() */ +/************************************************************************/ + +int* SBNSearchDiskTreeInteger( SBNSearchHandle hSBN, + int bMinX, int bMinY, int bMaxX, int bMaxY, + int *pnShapeCount ) +{ + SearchStruct sSearch; + int bRet; + + *pnShapeCount = 0; + + if( bMinX > bMaxX || bMinY > bMaxY ) + return NULL; + + if( bMaxX < 0 || bMaxY < 0 || bMinX > 255 || bMinY > 255 ) + return NULL; + + if( hSBN->nShapeCount == 0 ) + return NULL; +/* -------------------------------------------------------------------- */ +/* Run the search. */ +/* -------------------------------------------------------------------- */ + memset( &sSearch, 0, sizeof(sSearch) ); + sSearch.hSBN = hSBN; + sSearch.bMinX = (coord) (bMinX >= 0 ? bMinX : 0); + sSearch.bMinY = (coord) (bMinY >= 0 ? bMinY : 0); + sSearch.bMaxX = (coord) (bMaxX <= 255 ? bMaxX : 255); + sSearch.bMaxY = (coord) (bMaxY <= 255 ? bMaxY : 255); + sSearch.nShapeCount = 0; + sSearch.nShapeAlloc = 0; + sSearch.panShapeId = (int*) calloc(1, sizeof(int)); +#ifdef DEBUG_IO + sSearch.nBytesRead = 0; +#endif + + bRet = SBNSearchDiskInternal(&sSearch, 0, 0, 0, 0, 255, 255); + +#ifdef DEBUG_IO + hSBN->nTotalBytesRead += sSearch.nBytesRead; + /* printf("nBytesRead = %d\n", sSearch.nBytesRead); */ +#endif + + if( !bRet ) + { + free( sSearch.panShapeId ); + *pnShapeCount = 0; + return NULL; + } + + *pnShapeCount = sSearch.nShapeCount; + +/* -------------------------------------------------------------------- */ +/* Sort the id array */ +/* -------------------------------------------------------------------- */ + qsort(sSearch.panShapeId, *pnShapeCount, sizeof(int), compare_ints); + + return sSearch.panShapeId; +} + +/************************************************************************/ +/* SBNSearchFreeIds() */ +/************************************************************************/ + +void SBNSearchFreeIds( int* panShapeId ) +{ + free( panShapeId ); +} diff --git a/libs/shapelib/shapefil.h b/libs/shapelib/shapefil.h new file mode 100644 index 0000000..08c6459 --- /dev/null +++ b/libs/shapelib/shapefil.h @@ -0,0 +1,747 @@ +#ifndef SHAPEFILE_H_INCLUDED +#define SHAPEFILE_H_INCLUDED + +/****************************************************************************** + * $Id: shapefil.h,v 1.55 2016-12-05 18:44:08 erouault Exp $ + * + * Project: Shapelib + * Purpose: Primary include file for Shapelib. + * Author: Frank Warmerdam, warmerdam@pobox.com + * + ****************************************************************************** + * Copyright (c) 1999, Frank Warmerdam + * Copyright (c) 2012-2016, Even Rouault + * + * This software is available under the following "MIT Style" license, + * or at the option of the licensee under the LGPL (see COPYING). This + * option is discussed in more detail in shapelib.html. + * + * -- + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included + * in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS + * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. + ****************************************************************************** + * + * $Log: shapefil.h,v $ + * Revision 1.55 2016-12-05 18:44:08 erouault + * * dbfopen.c, shapefil.h: write DBF end-of-file character 0x1A by default. + * This behaviour can be controlled with the DBFSetWriteEndOfFileChar() + * function. + * + * Revision 1.54 2016-12-05 12:44:05 erouault + * * Major overhaul of Makefile build system to use autoconf/automake. + * + * * Warning fixes in contrib/ + * + * Revision 1.53 2016-12-04 15:30:15 erouault + * * shpopen.c, dbfopen.c, shptree.c, shapefil.h: resync with + * GDAL Shapefile driver. Mostly cleanups. SHPObject and DBFInfo + * structures extended with new members. New functions: + * DBFSetLastModifiedDate, SHPOpenLLEx, SHPRestoreSHX, + * SHPSetFastModeReadObject + * + * * sbnsearch.c: new file to implement original ESRI .sbn spatial + * index reading. (no write support). New functions: + * SBNOpenDiskTree, SBNCloseDiskTree, SBNSearchDiskTree, + * SBNSearchDiskTreeInteger, SBNSearchFreeIds + * + * * Makefile, makefile.vc, CMakeLists.txt, shapelib.def: updates + * with new file and symbols. + * + * * commit: helper script to cvs commit + * + * Revision 1.52 2011-12-11 22:26:46 fwarmerdam + * upgrade .qix access code to use SAHooks (gdal #3365) + * + * Revision 1.51 2011-07-24 05:59:25 fwarmerdam + * minimize use of CPLError in favor of SAHooks.Error() + * + * Revision 1.50 2011-05-13 17:35:17 fwarmerdam + * added DBFReorderFields() and DBFAlterFields() functions (from Even) + * + * Revision 1.49 2011-04-16 14:38:21 fwarmerdam + * avoid warnings with gcc on SHP_CVSID + * + * Revision 1.48 2010-08-27 23:42:52 fwarmerdam + * add SHPAPI_CALL attribute in code + * + * Revision 1.47 2010-01-28 11:34:34 fwarmerdam + * handle the shape file length limits more gracefully (#3236) + * + * Revision 1.46 2008-11-12 14:28:15 fwarmerdam + * DBFCreateField() now works on files with records + * + * Revision 1.45 2008/11/11 17:47:10 fwarmerdam + * added DBFDeleteField() function + * + * Revision 1.44 2008/01/16 20:05:19 bram + * Add file hooks that accept UTF-8 encoded filenames on some platforms. Use SASetupUtf8Hooks + * tosetup the hooks and check SHPAPI_UTF8_HOOKS for its availability. Currently, this + * is only available on the Windows platform that decodes the UTF-8 filenames to wide + * character strings and feeds them to _wfopen and _wremove. + * + * Revision 1.43 2008/01/10 16:35:30 fwarmerdam + * avoid _ prefix on #defined symbols (bug 1840) + * + * Revision 1.42 2007/12/18 18:28:14 bram + * - create hook for client specific atof (bugzilla ticket 1615) + * - check for NULL handle before closing cpCPG file, and close after reading. + * + * Revision 1.41 2007/12/15 20:25:32 bram + * dbfopen.c now reads the Code Page information from the DBF file, and exports + * this information as a string through the DBFGetCodePage function. This is + * either the number from the LDID header field ("LDID/") or as the + * content of an accompanying .CPG file. When creating a DBF file, the code can + * be set using DBFCreateEx. + * + * Revision 1.40 2007/12/06 07:00:25 fwarmerdam + * dbfopen now using SAHooks for fileio + * + * Revision 1.39 2007/12/04 20:37:56 fwarmerdam + * preliminary implementation of hooks api for io and errors + * + * Revision 1.38 2007/11/21 22:39:56 fwarmerdam + * close shx file in readonly mode (GDAL #1956) + * + * Revision 1.37 2007/10/27 03:31:14 fwarmerdam + * limit default depth of tree to 12 levels (gdal ticket #1594) + * + * Revision 1.36 2007/09/10 23:33:15 fwarmerdam + * Upstreamed support for visibility flag in SHPAPI_CALL for the needs + * of GDAL (gdal ticket #1810). + * + * Revision 1.35 2007/09/03 19:48:10 fwarmerdam + * move DBFReadAttribute() static dDoubleField into dbfinfo + * + * Revision 1.34 2006/06/17 15:33:32 fwarmerdam + * added pszWorkField - bug 1202 (rso) + * + * Revision 1.33 2006/02/15 01:14:30 fwarmerdam + * added DBFAddNativeFieldType + * + * Revision 1.32 2006/01/26 15:07:32 fwarmerdam + * add bMeasureIsUsed flag from Craig Bruce: Bug 1249 + * + * Revision 1.31 2006/01/05 01:27:27 fwarmerdam + * added dbf deletion mark/fetch + * + * Revision 1.30 2005/01/03 22:30:13 fwarmerdam + * added support for saved quadtrees + * + * Revision 1.29 2004/09/26 20:09:35 fwarmerdam + * avoid rcsid warnings + * + * Revision 1.28 2003/12/29 06:02:18 fwarmerdam + * added cpl_error.h option + * + * Revision 1.27 2003/04/21 18:30:37 warmerda + * added header write/update public methods + * + * Revision 1.26 2002/09/29 00:00:08 warmerda + * added FTLogical and logical attribute read/write calls + * + * Revision 1.25 2002/05/07 13:46:30 warmerda + * added DBFWriteAttributeDirectly(). + * + * Revision 1.24 2002/04/10 16:59:54 warmerda + * added SHPRewindObject + * + * Revision 1.23 2002/01/15 14:36:07 warmerda + * updated email address + * + * Revision 1.22 2002/01/15 14:32:00 warmerda + * try to improve SHPAPI_CALL docs + */ + +#include + +#ifdef USE_DBMALLOC +#include +#endif + +#ifdef USE_CPL +#include "cpl_conv.h" +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +/************************************************************************/ +/* Configuration options. */ +/************************************************************************/ + +/* -------------------------------------------------------------------- */ +/* Should the DBFReadStringAttribute() strip leading and */ +/* trailing white space? */ +/* -------------------------------------------------------------------- */ +#define TRIM_DBF_WHITESPACE + +/* -------------------------------------------------------------------- */ +/* Should we write measure values to the Multipatch object? */ +/* Reportedly ArcView crashes if we do write it, so for now it */ +/* is disabled. */ +/* -------------------------------------------------------------------- */ +#define DISABLE_MULTIPATCH_MEASURE + +/* -------------------------------------------------------------------- */ +/* SHPAPI_CALL */ +/* */ +/* The following two macros are present to allow forcing */ +/* various calling conventions on the Shapelib API. */ +/* */ +/* To force __stdcall conventions (needed to call Shapelib */ +/* from Visual Basic and/or Dephi I believe) the makefile could */ +/* be modified to define: */ +/* */ +/* /DSHPAPI_CALL=__stdcall */ +/* */ +/* If it is desired to force export of the Shapelib API without */ +/* using the shapelib.def file, use the following definition. */ +/* */ +/* /DSHAPELIB_DLLEXPORT */ +/* */ +/* To get both at once it will be necessary to hack this */ +/* include file to define: */ +/* */ +/* #define SHPAPI_CALL __declspec(dllexport) __stdcall */ +/* #define SHPAPI_CALL1 __declspec(dllexport) * __stdcall */ +/* */ +/* The complexity of the situation is partly caused by the */ +/* peculiar requirement of Visual C++ that __stdcall appear */ +/* after any "*"'s in the return value of a function while the */ +/* __declspec(dllexport) must appear before them. */ +/* -------------------------------------------------------------------- */ + +#ifdef SHAPELIB_DLLEXPORT +# define SHPAPI_CALL __declspec(dllexport) +# define SHPAPI_CALL1(x) __declspec(dllexport) x +#endif + +#ifndef SHPAPI_CALL +# if defined(USE_GCC_VISIBILITY_FLAG) +# define SHPAPI_CALL __attribute__ ((visibility("default"))) +# define SHPAPI_CALL1(x) __attribute__ ((visibility("default"))) x +# else +# define SHPAPI_CALL +# endif +#endif + +#ifndef SHPAPI_CALL1 +# define SHPAPI_CALL1(x) x SHPAPI_CALL +#endif + +/* -------------------------------------------------------------------- */ +/* Macros for controlling CVSID and ensuring they don't appear */ +/* as unreferenced variables resulting in lots of warnings. */ +/* -------------------------------------------------------------------- */ +#ifndef DISABLE_CVSID +# if defined(__GNUC__) && __GNUC__ >= 4 +# define SHP_CVSID(string) static const char cpl_cvsid[] __attribute__((used)) = string; +# else +# define SHP_CVSID(string) static const char cpl_cvsid[] = string; \ +static const char *cvsid_aw() { return( cvsid_aw() ? NULL : cpl_cvsid ); } +# endif +#else +# define SHP_CVSID(string) +#endif + +/* -------------------------------------------------------------------- */ +/* On some platforms, additional file IO hooks are defined that */ +/* UTF-8 encoded filenames Unicode filenames */ +/* -------------------------------------------------------------------- */ +#if defined(_WIN32) || defined(__WIN32__) || defined(WIN32) +# define SHPAPI_WINDOWS +# define SHPAPI_UTF8_HOOKS +#endif + +/* -------------------------------------------------------------------- */ +/* IO/Error hook functions. */ +/* -------------------------------------------------------------------- */ +typedef int *SAFile; + +#ifndef SAOffset +typedef unsigned long SAOffset; +#endif + +typedef struct { + SAFile (*FOpen) ( const char *filename, const char *access); + SAOffset (*FRead) ( void *p, SAOffset size, SAOffset nmemb, SAFile file); + SAOffset (*FWrite)( void *p, SAOffset size, SAOffset nmemb, SAFile file); + SAOffset (*FSeek) ( SAFile file, SAOffset offset, int whence ); + SAOffset (*FTell) ( SAFile file ); + int (*FFlush)( SAFile file ); + int (*FClose)( SAFile file ); + int (*Remove) ( const char *filename ); + + void (*Error) ( const char *message ); + double (*Atof) ( const char *str ); +} SAHooks; + +void SHPAPI_CALL SASetupDefaultHooks( SAHooks *psHooks ); +#ifdef SHPAPI_UTF8_HOOKS +void SHPAPI_CALL SASetupUtf8Hooks( SAHooks *psHooks ); +#endif + +/************************************************************************/ +/* SHP Support. */ +/************************************************************************/ +typedef struct tagSHPObject SHPObject; + +typedef struct +{ + SAHooks sHooks; + + SAFile fpSHP; + SAFile fpSHX; + + int nShapeType; /* SHPT_* */ + + unsigned int nFileSize; /* SHP file */ + + int nRecords; + int nMaxRecords; + unsigned int*panRecOffset; + unsigned int *panRecSize; + + double adBoundsMin[4]; + double adBoundsMax[4]; + + int bUpdated; + + unsigned char *pabyRec; + int nBufSize; + + int bFastModeReadObject; + unsigned char *pabyObjectBuf; + int nObjectBufSize; + SHPObject* psCachedObject; +} SHPInfo; + +typedef SHPInfo * SHPHandle; + +/* -------------------------------------------------------------------- */ +/* Shape types (nSHPType) */ +/* -------------------------------------------------------------------- */ +#define SHPT_NULL 0 +#define SHPT_POINT 1 +#define SHPT_ARC 3 +#define SHPT_POLYGON 5 +#define SHPT_MULTIPOINT 8 +#define SHPT_POINTZ 11 +#define SHPT_ARCZ 13 +#define SHPT_POLYGONZ 15 +#define SHPT_MULTIPOINTZ 18 +#define SHPT_POINTM 21 +#define SHPT_ARCM 23 +#define SHPT_POLYGONM 25 +#define SHPT_MULTIPOINTM 28 +#define SHPT_MULTIPATCH 31 + +/* -------------------------------------------------------------------- */ +/* Part types - everything but SHPT_MULTIPATCH just uses */ +/* SHPP_RING. */ +/* -------------------------------------------------------------------- */ + +#define SHPP_TRISTRIP 0 +#define SHPP_TRIFAN 1 +#define SHPP_OUTERRING 2 +#define SHPP_INNERRING 3 +#define SHPP_FIRSTRING 4 +#define SHPP_RING 5 + +/* -------------------------------------------------------------------- */ +/* SHPObject - represents on shape (without attributes) read */ +/* from the .shp file. */ +/* -------------------------------------------------------------------- */ +struct tagSHPObject +{ + int nSHPType; + + int nShapeId; /* -1 is unknown/unassigned */ + + int nParts; + int *panPartStart; + int *panPartType; + + int nVertices; + double *padfX; + double *padfY; + double *padfZ; + double *padfM; + + double dfXMin; + double dfYMin; + double dfZMin; + double dfMMin; + + double dfXMax; + double dfYMax; + double dfZMax; + double dfMMax; + + int bMeasureIsUsed; + int bFastModeReadObject; +}; + +/* -------------------------------------------------------------------- */ +/* SHP API Prototypes */ +/* -------------------------------------------------------------------- */ + +/* If pszAccess is read-only, the fpSHX field of the returned structure */ +/* will be NULL as it is not necessary to keep the SHX file open */ +SHPHandle SHPAPI_CALL + SHPOpen( const char * pszShapeFile, const char * pszAccess ); +SHPHandle SHPAPI_CALL + SHPOpenLL( const char *pszShapeFile, const char *pszAccess, + SAHooks *psHooks ); +SHPHandle SHPAPI_CALL + SHPOpenLLEx( const char *pszShapeFile, const char *pszAccess, + SAHooks *psHooks, int bRestoreSHX ); + +int SHPAPI_CALL + SHPRestoreSHX( const char *pszShapeFile, const char *pszAccess, + SAHooks *psHooks ); + +/* If setting bFastMode = TRUE, the content of SHPReadObject() is owned by the SHPHandle. */ +/* So you cannot have 2 valid instances of SHPReadObject() simultaneously. */ +/* The SHPObject padfZ and padfM members may be NULL depending on the geometry */ +/* type. It is illegal to free at hand any of the pointer members of the SHPObject structure */ +void SHPAPI_CALL SHPSetFastModeReadObject( SHPHandle hSHP, int bFastMode ); + +SHPHandle SHPAPI_CALL + SHPCreate( const char * pszShapeFile, int nShapeType ); +SHPHandle SHPAPI_CALL + SHPCreateLL( const char * pszShapeFile, int nShapeType, + SAHooks *psHooks ); +void SHPAPI_CALL + SHPGetInfo( SHPHandle hSHP, int * pnEntities, int * pnShapeType, + double * padfMinBound, double * padfMaxBound ); + +SHPObject SHPAPI_CALL1(*) + SHPReadObject( SHPHandle hSHP, int iShape ); +int SHPAPI_CALL + SHPWriteObject( SHPHandle hSHP, int iShape, SHPObject * psObject ); + +void SHPAPI_CALL + SHPDestroyObject( SHPObject * psObject ); +void SHPAPI_CALL + SHPComputeExtents( SHPObject * psObject ); +SHPObject SHPAPI_CALL1(*) + SHPCreateObject( int nSHPType, int nShapeId, int nParts, + const int * panPartStart, const int * panPartType, + int nVertices, + const double * padfX, const double * padfY, + const double * padfZ, const double * padfM ); +SHPObject SHPAPI_CALL1(*) + SHPCreateSimpleObject( int nSHPType, int nVertices, + const double * padfX, + const double * padfY, + const double * padfZ ); + +int SHPAPI_CALL + SHPRewindObject( SHPHandle hSHP, SHPObject * psObject ); + +void SHPAPI_CALL SHPClose( SHPHandle hSHP ); +void SHPAPI_CALL SHPWriteHeader( SHPHandle hSHP ); + +const char SHPAPI_CALL1(*) + SHPTypeName( int nSHPType ); +const char SHPAPI_CALL1(*) + SHPPartTypeName( int nPartType ); + +/* -------------------------------------------------------------------- */ +/* Shape quadtree indexing API. */ +/* -------------------------------------------------------------------- */ + +/* this can be two or four for binary or quad tree */ +#define MAX_SUBNODE 4 + +/* upper limit of tree levels for automatic estimation */ +#define MAX_DEFAULT_TREE_DEPTH 12 + +typedef struct shape_tree_node +{ + /* region covered by this node */ + double adfBoundsMin[4]; + double adfBoundsMax[4]; + + /* list of shapes stored at this node. The papsShapeObj pointers + or the whole list can be NULL */ + int nShapeCount; + int *panShapeIds; + SHPObject **papsShapeObj; + + int nSubNodes; + struct shape_tree_node *apsSubNode[MAX_SUBNODE]; + +} SHPTreeNode; + +typedef struct +{ + SHPHandle hSHP; + + int nMaxDepth; + int nDimension; + int nTotalCount; + + SHPTreeNode *psRoot; +} SHPTree; + +SHPTree SHPAPI_CALL1(*) + SHPCreateTree( SHPHandle hSHP, int nDimension, int nMaxDepth, + double *padfBoundsMin, double *padfBoundsMax ); +void SHPAPI_CALL + SHPDestroyTree( SHPTree * hTree ); + +int SHPAPI_CALL + SHPWriteTree( SHPTree *hTree, const char * pszFilename ); + +int SHPAPI_CALL + SHPTreeAddShapeId( SHPTree * hTree, SHPObject * psObject ); +int SHPAPI_CALL + SHPTreeRemoveShapeId( SHPTree * hTree, int nShapeId ); + +void SHPAPI_CALL + SHPTreeTrimExtraNodes( SHPTree * hTree ); + +int SHPAPI_CALL1(*) + SHPTreeFindLikelyShapes( SHPTree * hTree, + double * padfBoundsMin, + double * padfBoundsMax, + int * ); +int SHPAPI_CALL + SHPCheckBoundsOverlap( double *, double *, double *, double *, int ); + +int SHPAPI_CALL1(*) +SHPSearchDiskTree( FILE *fp, + double *padfBoundsMin, double *padfBoundsMax, + int *pnShapeCount ); + +typedef struct SHPDiskTreeInfo* SHPTreeDiskHandle; + +SHPTreeDiskHandle SHPAPI_CALL + SHPOpenDiskTree( const char* pszQIXFilename, + SAHooks *psHooks ); + +void SHPAPI_CALL + SHPCloseDiskTree( SHPTreeDiskHandle hDiskTree ); + +int SHPAPI_CALL1(*) +SHPSearchDiskTreeEx( SHPTreeDiskHandle hDiskTree, + double *padfBoundsMin, double *padfBoundsMax, + int *pnShapeCount ); + +int SHPAPI_CALL + SHPWriteTreeLL(SHPTree *hTree, const char *pszFilename, SAHooks *psHooks ); + +/* -------------------------------------------------------------------- */ +/* SBN Search API */ +/* -------------------------------------------------------------------- */ + +typedef struct SBNSearchInfo* SBNSearchHandle; + +SBNSearchHandle SHPAPI_CALL + SBNOpenDiskTree( const char* pszSBNFilename, + SAHooks *psHooks ); + +void SHPAPI_CALL + SBNCloseDiskTree( SBNSearchHandle hSBN ); + +int SHPAPI_CALL1(*) +SBNSearchDiskTree( SBNSearchHandle hSBN, + double *padfBoundsMin, double *padfBoundsMax, + int *pnShapeCount ); + +int SHPAPI_CALL1(*) +SBNSearchDiskTreeInteger( SBNSearchHandle hSBN, + int bMinX, int bMinY, int bMaxX, int bMaxY, + int *pnShapeCount ); + +void SHPAPI_CALL SBNSearchFreeIds( int* panShapeId ); + +/************************************************************************/ +/* DBF Support. */ +/************************************************************************/ +typedef struct +{ + SAHooks sHooks; + + SAFile fp; + + int nRecords; + + int nRecordLength; /* Must fit on uint16 */ + int nHeaderLength; /* File header length (32) + field + descriptor length + spare space. + Must fit on uint16 */ + int nFields; + int *panFieldOffset; + int *panFieldSize; + int *panFieldDecimals; + char *pachFieldType; + + char *pszHeader; /* Field descriptors */ + + int nCurrentRecord; + int bCurrentRecordModified; + char *pszCurrentRecord; + + int nWorkFieldLength; + char *pszWorkField; + + int bNoHeader; + int bUpdated; + + union + { + double dfDoubleField; + int nIntField; + } fieldValue; + + int iLanguageDriver; + char *pszCodePage; + + int nUpdateYearSince1900; /* 0-255 */ + int nUpdateMonth; /* 1-12 */ + int nUpdateDay; /* 1-31 */ + + int bWriteEndOfFileChar; /* defaults to TRUE */ +} DBFInfo; + +typedef DBFInfo * DBFHandle; + +typedef enum { + FTString, + FTInteger, + FTDouble, + FTLogical, + FTInvalid +} DBFFieldType; + +/* Field descriptor/header size */ +#define XBASE_FLDHDR_SZ 32 +/* Shapelib read up to 11 characters, even if only 10 should normally be used */ +#define XBASE_FLDNAME_LEN_READ 11 +/* On writing, we limit to 10 characters */ +#define XBASE_FLDNAME_LEN_WRITE 10 +/* Normally only 254 characters should be used. We tolerate 255 historically */ +#define XBASE_FLD_MAX_WIDTH 255 + +DBFHandle SHPAPI_CALL + DBFOpen( const char * pszDBFFile, const char * pszAccess ); +DBFHandle SHPAPI_CALL + DBFOpenLL( const char * pszDBFFile, const char * pszAccess, + SAHooks *psHooks ); +DBFHandle SHPAPI_CALL + DBFCreate( const char * pszDBFFile ); +DBFHandle SHPAPI_CALL + DBFCreateEx( const char * pszDBFFile, const char * pszCodePage ); +DBFHandle SHPAPI_CALL + DBFCreateLL( const char * pszDBFFile, const char * pszCodePage, SAHooks *psHooks ); + +int SHPAPI_CALL + DBFGetFieldCount( DBFHandle psDBF ); +int SHPAPI_CALL + DBFGetRecordCount( DBFHandle psDBF ); +int SHPAPI_CALL + DBFAddField( DBFHandle hDBF, const char * pszFieldName, + DBFFieldType eType, int nWidth, int nDecimals ); + +int SHPAPI_CALL + DBFAddNativeFieldType( DBFHandle hDBF, const char * pszFieldName, + char chType, int nWidth, int nDecimals ); + +int SHPAPI_CALL + DBFDeleteField( DBFHandle hDBF, int iField ); + +int SHPAPI_CALL + DBFReorderFields( DBFHandle psDBF, int* panMap ); + +int SHPAPI_CALL + DBFAlterFieldDefn( DBFHandle psDBF, int iField, const char * pszFieldName, + char chType, int nWidth, int nDecimals ); + +DBFFieldType SHPAPI_CALL + DBFGetFieldInfo( DBFHandle psDBF, int iField, + char * pszFieldName, int * pnWidth, int * pnDecimals ); + +int SHPAPI_CALL + DBFGetFieldIndex(DBFHandle psDBF, const char *pszFieldName); + +int SHPAPI_CALL + DBFReadIntegerAttribute( DBFHandle hDBF, int iShape, int iField ); +double SHPAPI_CALL + DBFReadDoubleAttribute( DBFHandle hDBF, int iShape, int iField ); +const char SHPAPI_CALL1(*) + DBFReadStringAttribute( DBFHandle hDBF, int iShape, int iField ); +const char SHPAPI_CALL1(*) + DBFReadLogicalAttribute( DBFHandle hDBF, int iShape, int iField ); +int SHPAPI_CALL + DBFIsAttributeNULL( DBFHandle hDBF, int iShape, int iField ); + +int SHPAPI_CALL + DBFWriteIntegerAttribute( DBFHandle hDBF, int iShape, int iField, + int nFieldValue ); +int SHPAPI_CALL + DBFWriteDoubleAttribute( DBFHandle hDBF, int iShape, int iField, + double dFieldValue ); +int SHPAPI_CALL + DBFWriteStringAttribute( DBFHandle hDBF, int iShape, int iField, + const char * pszFieldValue ); +int SHPAPI_CALL + DBFWriteNULLAttribute( DBFHandle hDBF, int iShape, int iField ); + +int SHPAPI_CALL + DBFWriteLogicalAttribute( DBFHandle hDBF, int iShape, int iField, + const char lFieldValue); +int SHPAPI_CALL + DBFWriteAttributeDirectly(DBFHandle psDBF, int hEntity, int iField, + void * pValue ); +const char SHPAPI_CALL1(*) + DBFReadTuple(DBFHandle psDBF, int hEntity ); +int SHPAPI_CALL + DBFWriteTuple(DBFHandle psDBF, int hEntity, void * pRawTuple ); + +int SHPAPI_CALL DBFIsRecordDeleted( DBFHandle psDBF, int iShape ); +int SHPAPI_CALL DBFMarkRecordDeleted( DBFHandle psDBF, int iShape, + int bIsDeleted ); + +DBFHandle SHPAPI_CALL + DBFCloneEmpty(DBFHandle psDBF, const char * pszFilename ); + +void SHPAPI_CALL + DBFClose( DBFHandle hDBF ); +void SHPAPI_CALL + DBFUpdateHeader( DBFHandle hDBF ); +char SHPAPI_CALL + DBFGetNativeFieldType( DBFHandle hDBF, int iField ); + +const char SHPAPI_CALL1(*) + DBFGetCodePage(DBFHandle psDBF ); + +void SHPAPI_CALL + DBFSetLastModifiedDate( DBFHandle psDBF, int nYYSince1900, int nMM, int nDD ); + +void SHPAPI_CALL DBFSetWriteEndOfFileChar( DBFHandle psDBF, int bWriteFlag ); + +#ifdef __cplusplus +} +#endif + +#endif /* ndef SHAPEFILE_H_INCLUDED */ diff --git a/libs/shapelib/shapelib.pc.in b/libs/shapelib/shapelib.pc.in new file mode 100644 index 0000000..99f0034 --- /dev/null +++ b/libs/shapelib/shapelib.pc.in @@ -0,0 +1,14 @@ +prefix=@prefix@ +exec_prefix=@exec_prefix@ +libdir=@libdir@ +datarootdir=@datarootdir@ +datadir=@datadir@ +includedir=@includedir@ + +Name: shapelib +Description: C API for processing ESRI Shapefiles +Version: @VERSION@ +Libs.private: @PROJ_LIBS@ +Cflags.private: @PROJ_CFLAGS@ +Libs: -L${libdir} -lshp +Cflags: -I${includedir} diff --git a/libs/shapelib/shpadd.c b/libs/shapelib/shpadd.c new file mode 100644 index 0000000..d18957c --- /dev/null +++ b/libs/shapelib/shpadd.c @@ -0,0 +1,241 @@ +/****************************************************************************** + * $Id: shpadd.c,v 1.18 2016-12-05 12:44:05 erouault Exp $ + * + * Project: Shapelib + * Purpose: Sample application for adding a shape to a shapefile. + * Author: Frank Warmerdam, warmerdam@pobox.com + * + ****************************************************************************** + * Copyright (c) 1999, Frank Warmerdam + * + * This software is available under the following "MIT Style" license, + * or at the option of the licensee under the LGPL (see COPYING). This + * option is discussed in more detail in shapelib.html. + * + * -- + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included + * in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS + * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. + ****************************************************************************** + * + * $Log: shpadd.c,v $ + * Revision 1.18 2016-12-05 12:44:05 erouault + * * Major overhaul of Makefile build system to use autoconf/automake. + * + * * Warning fixes in contrib/ + * + * Revision 1.17 2016-12-04 15:30:15 erouault + * * shpopen.c, dbfopen.c, shptree.c, shapefil.h: resync with + * GDAL Shapefile driver. Mostly cleanups. SHPObject and DBFInfo + * structures extended with new members. New functions: + * DBFSetLastModifiedDate, SHPOpenLLEx, SHPRestoreSHX, + * SHPSetFastModeReadObject + * + * * sbnsearch.c: new file to implement original ESRI .sbn spatial + * index reading. (no write support). New functions: + * SBNOpenDiskTree, SBNCloseDiskTree, SBNSearchDiskTree, + * SBNSearchDiskTreeInteger, SBNSearchFreeIds + * + * * Makefile, makefile.vc, CMakeLists.txt, shapelib.def: updates + * with new file and symbols. + * + * * commit: helper script to cvs commit + * + * Revision 1.16 2010-06-21 20:41:52 fwarmerdam + * reformat white space + * + * Revision 1.15 2007-12-30 16:57:32 fwarmerdam + * add support for z and m + * + * Revision 1.14 2004/09/26 20:09:35 fwarmerdam + * avoid rcsid warnings + * + * Revision 1.13 2002/01/15 14:36:07 warmerda + * updated email address + * + * Revision 1.12 2001/05/31 19:35:29 warmerda + * added support for writing null shapes + * + * Revision 1.11 2000/07/07 13:39:45 warmerda + * removed unused variables, and added system include files + * + * Revision 1.10 2000/05/24 15:09:22 warmerda + * Added logic to graw vertex lists of needed. + * + * Revision 1.9 1999/11/05 14:12:04 warmerda + * updated license terms + * + * Revision 1.8 1998/12/03 16:36:26 warmerda + * Use r+b rather than rb+ for binary access. + * + * Revision 1.7 1998/11/09 20:57:04 warmerda + * Fixed SHPGetInfo() call. + * + * Revision 1.6 1998/11/09 20:19:16 warmerda + * Changed to use SHPObject based API. + * + * Revision 1.5 1997/03/06 14:05:02 warmerda + * fixed typo. + * + * Revision 1.4 1997/03/06 14:01:16 warmerda + * added memory allocation checking, and free()s. + * + * Revision 1.3 1995/10/21 03:14:37 warmerda + * Changed to use binary file access + * + * Revision 1.2 1995/08/04 03:18:01 warmerda + * Added header. + * + */ + +#include +#include +#include "shapefil.h" + +SHP_CVSID("$Id: shpadd.c,v 1.18 2016-12-05 12:44:05 erouault Exp $") + +int main( int argc, char ** argv ) + +{ + SHPHandle hSHP; + int nShapeType, nVertices, nParts, *panParts, i, nVMax; + double *padfX, *padfY, *padfZ = NULL, *padfM = NULL; + SHPObject *psObject; + const char *tuple = ""; + const char *filename; + +/* -------------------------------------------------------------------- */ +/* Display a usage message. */ +/* -------------------------------------------------------------------- */ + if( argc < 2 ) + { + printf( "shpadd shp_file [[x y] [+]]*\n" ); + printf( " or\n" ); + printf( "shpadd shp_file -m [[x y m] [+]]*\n" ); + printf( " or\n" ); + printf( "shpadd shp_file -z [[x y z] [+]]*\n" ); + printf( " or\n" ); + printf( "shpadd shp_file -zm [[x y z m] [+]]*\n" ); + exit( 1 ); + } + + filename = argv[1]; + argv++; + argc--; + +/* -------------------------------------------------------------------- */ +/* Check for tuple description options. */ +/* -------------------------------------------------------------------- */ + if( argc > 1 + && (strcmp(argv[1],"-z") == 0 + || strcmp(argv[1],"-m") == 0 + || strcmp(argv[1],"-zm") == 0) ) + { + tuple = argv[1] + 1; + argv++; + argc--; + } + +/* -------------------------------------------------------------------- */ +/* Open the passed shapefile. */ +/* -------------------------------------------------------------------- */ + hSHP = SHPOpen( filename, "r+b" ); + + if( hSHP == NULL ) + { + printf( "Unable to open:%s\n", filename ); + exit( 1 ); + } + + SHPGetInfo( hSHP, NULL, &nShapeType, NULL, NULL ); + + if( argc == 1 ) + nShapeType = SHPT_NULL; + +/* -------------------------------------------------------------------- */ +/* Build a vertex/part list from the command line arguments. */ +/* -------------------------------------------------------------------- */ + nVMax = 1000; + padfX = (double *) malloc(sizeof(double) * nVMax); + padfY = (double *) malloc(sizeof(double) * nVMax); + + if( strchr(tuple,'z') ) + padfZ = (double *) malloc(sizeof(double) * nVMax); + if( strchr(tuple,'m') ) + padfM = (double *) malloc(sizeof(double) * nVMax); + + nVertices = 0; + + if( (panParts = (int *) malloc(sizeof(int) * 1000 )) == NULL ) + { + printf( "Out of memory\n" ); + exit( 1 ); + } + + nParts = 1; + panParts[0] = 0; + + for( i = 1; i < argc; ) + { + if( argv[i][0] == '+' ) + { + panParts[nParts++] = nVertices; + i++; + } + else if( i < argc-1-(int)strlen(tuple) ) + { + if( nVertices == nVMax ) + { + nVMax = nVMax * 2; + padfX = (double *) realloc(padfX,sizeof(double)*nVMax); + padfY = (double *) realloc(padfY,sizeof(double)*nVMax); + if( padfZ ) + padfZ = (double *) realloc(padfZ,sizeof(double)*nVMax); + if( padfM ) + padfM = (double *) realloc(padfM,sizeof(double)*nVMax); + } + + sscanf( argv[i++], "%lg", padfX+nVertices ); + sscanf( argv[i++], "%lg", padfY+nVertices ); + if( padfZ ) + sscanf( argv[i++], "%lg", padfZ+nVertices ); + if( padfM ) + sscanf( argv[i++], "%lg", padfM+nVertices ); + + nVertices += 1; + } + } + +/* -------------------------------------------------------------------- */ +/* Write the new entity to the shape file. */ +/* -------------------------------------------------------------------- */ + psObject = SHPCreateObject( nShapeType, -1, nParts, panParts, NULL, + nVertices, padfX, padfY, padfZ, padfM ); + SHPWriteObject( hSHP, -1, psObject ); + SHPDestroyObject( psObject ); + + SHPClose( hSHP ); + + free( panParts ); + free( padfX ); + free( padfY ); + free( padfZ ); + free( padfM ); + + return 0; +} diff --git a/libs/shapelib/shpcreate.c b/libs/shapelib/shpcreate.c new file mode 100644 index 0000000..69ec267 --- /dev/null +++ b/libs/shapelib/shpcreate.c @@ -0,0 +1,135 @@ +/****************************************************************************** + * $Id: shpcreate.c,v 1.9 2016-12-05 12:44:05 erouault Exp $ + * + * Project: Shapelib + * Purpose: Sample application for creating a new shapefile. + * Author: Frank Warmerdam, warmerdm@pobox.com + * + ****************************************************************************** + * Copyright (c) 1999, Frank Warmerdam + * + * This software is available under the following "MIT Style" license, + * or at the option of the licensee under the LGPL (see COPYING). This + * option is discussed in more detail in shapelib.html. + * + * -- + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included + * in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS + * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. + ****************************************************************************** + * + * $Log: shpcreate.c,v $ + * Revision 1.9 2016-12-05 12:44:05 erouault + * * Major overhaul of Makefile build system to use autoconf/automake. + * + * * Warning fixes in contrib/ + * + * Revision 1.8 2007-12-30 16:57:33 fwarmerdam + * add support for z and m + * + * Revision 1.7 2004/09/26 20:09:35 fwarmerdam + * avoid rcsid warnings + * + * Revision 1.6 2004/01/09 16:39:49 fwarmerdam + * include standard include files + * + * Revision 1.5 2002/01/15 14:36:07 warmerda + * updated email address + * + * Revision 1.4 2000/07/07 13:39:45 warmerda + * removed unused variables, and added system include files + * + * Revision 1.3 1999/11/05 14:12:04 warmerda + * updated license terms + * + * Revision 1.2 1995/08/04 03:16:43 warmerda + * Added header. + * + */ + +#include +#include +#include "shapefil.h" + +SHP_CVSID("$Id: shpcreate.c,v 1.9 2016-12-05 12:44:05 erouault Exp $") + +int main( int argc, char ** argv ) + +{ + SHPHandle hSHP; + int nShapeType; + +/* -------------------------------------------------------------------- */ +/* Display a usage message. */ +/* -------------------------------------------------------------------- */ + if( argc != 3 ) + { + printf( "shpcreate shp_file [point/arc/polygon/multipoint][/m/z]\n" ); + exit( 1 ); + } + +/* -------------------------------------------------------------------- */ +/* Figure out the shape type. */ +/* -------------------------------------------------------------------- */ + if( strcmp(argv[2],"POINT") == 0 || strcmp(argv[2],"point") == 0 ) + nShapeType = SHPT_POINT; + else if( strcmp(argv[2],"ARC") == 0 || strcmp(argv[2],"arc") == 0 ) + nShapeType = SHPT_ARC; + else if( strcmp(argv[2],"POLYGON") == 0 || strcmp(argv[2],"polygon") == 0 ) + nShapeType = SHPT_POLYGON; + else if( strcmp(argv[2],"MULTIPOINT")==0 ||strcmp(argv[2],"multipoint")==0) + nShapeType = SHPT_MULTIPOINT; + else if( strcmp(argv[2],"POINTZ") == 0 || strcmp(argv[2],"pointz") == 0 ) + nShapeType = SHPT_POINTZ; + else if( strcmp(argv[2],"ARCZ") == 0 || strcmp(argv[2],"arcz") == 0 ) + nShapeType = SHPT_ARCZ; + else if( strcmp(argv[2],"POLYGONZ") == 0 || strcmp(argv[2],"polygonz") == 0) + nShapeType = SHPT_POLYGONZ; + else if( strcmp(argv[2],"MULTIPOINTZ") == 0 + || strcmp(argv[2],"multipointz") == 0) + nShapeType = SHPT_MULTIPOINTZ; + else if( strcmp(argv[2],"POINTM") == 0 || strcmp(argv[2],"pointm") == 0 ) + nShapeType = SHPT_POINTM; + else if( strcmp(argv[2],"ARCM") == 0 || strcmp(argv[2],"arcm") == 0 ) + nShapeType = SHPT_ARCM; + else if( strcmp(argv[2],"POLYGONM") == 0 || strcmp(argv[2],"polygonm") == 0) + nShapeType = SHPT_POLYGONM; + else if( strcmp(argv[2],"MULTIPOINTM") == 0 + || strcmp(argv[2],"multipointm") == 0 ) + nShapeType = SHPT_MULTIPOINTM; + else + { + printf( "Shape Type `%s' not recognised.\n", argv[2] ); + exit( 2 ); + } + +/* -------------------------------------------------------------------- */ +/* Create the requested layer. */ +/* -------------------------------------------------------------------- */ + hSHP = SHPCreate( argv[1], nShapeType ); + + if( hSHP == NULL ) + { + printf( "Unable to create:%s\n", argv[1] ); + exit( 3 ); + } + + SHPClose( hSHP ); + + return 0; +} diff --git a/libs/shapelib/shpdump.c b/libs/shapelib/shpdump.c new file mode 100644 index 0000000..d0f2ec5 --- /dev/null +++ b/libs/shapelib/shpdump.c @@ -0,0 +1,284 @@ +/****************************************************************************** + * $Id: shpdump.c,v 1.19 2016-12-05 12:44:05 erouault Exp $ + * + * Project: Shapelib + * Purpose: Sample application for dumping contents of a shapefile to + * the terminal in human readable form. + * Author: Frank Warmerdam, warmerdam@pobox.com + * + ****************************************************************************** + * Copyright (c) 1999, Frank Warmerdam + * + * This software is available under the following "MIT Style" license, + * or at the option of the licensee under the LGPL (see COPYING). This + * option is discussed in more detail in shapelib.html. + * + * -- + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included + * in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS + * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. + ****************************************************************************** + * + * $Log: shpdump.c,v $ + * Revision 1.19 2016-12-05 12:44:05 erouault + * * Major overhaul of Makefile build system to use autoconf/automake. + * + * * Warning fixes in contrib/ + * + * Revision 1.18 2011-07-24 03:05:14 fwarmerdam + * use %.15g for formatting coordiantes in shpdump + * + * Revision 1.17 2010-07-01 07:33:04 fwarmerdam + * do not crash in shpdump if null object returned + * + * Revision 1.16 2010-07-01 07:27:13 fwarmerdam + * white space formatting adjustments + * + * Revision 1.15 2006-01-26 15:07:32 fwarmerdam + * add bMeasureIsUsed flag from Craig Bruce: Bug 1249 + * + * Revision 1.14 2005/02/11 17:17:46 fwarmerdam + * added panPartStart[0] validation + * + * Revision 1.13 2004/09/26 20:09:35 fwarmerdam + * avoid rcsid warnings + * + * Revision 1.12 2004/01/27 18:05:35 fwarmerdam + * Added the -ho (header only) switch. + * + * Revision 1.11 2004/01/09 16:39:49 fwarmerdam + * include standard include files + * + * Revision 1.10 2002/04/10 16:59:29 warmerda + * added -validate switch + * + * Revision 1.9 2002/01/15 14:36:07 warmerda + * updated email address + * + * Revision 1.8 2000/07/07 13:39:45 warmerda + * removed unused variables, and added system include files + * + * Revision 1.7 1999/11/05 14:12:04 warmerda + * updated license terms + * + * Revision 1.6 1998/12/03 15:48:48 warmerda + * Added report of shapefile type, and total number of shapes. + * + * Revision 1.5 1998/11/09 20:57:36 warmerda + * use SHPObject. + * + * Revision 1.4 1995/10/21 03:14:49 warmerda + * Changed to use binary file access. + * + * Revision 1.3 1995/08/23 02:25:25 warmerda + * Added support for bounds. + * + * Revision 1.2 1995/08/04 03:18:11 warmerda + * Added header. + * + */ + +#include +#include +#include "shapefil.h" + +SHP_CVSID("$Id: shpdump.c,v 1.19 2016-12-05 12:44:05 erouault Exp $") + +int main( int argc, char ** argv ) + +{ + SHPHandle hSHP; + int nShapeType, nEntities, i, iPart, bValidate = 0,nInvalidCount=0; + int bHeaderOnly = 0; + const char *pszPlus; + double adfMinBound[4], adfMaxBound[4]; + int nPrecision = 15; + + if( argc > 1 && strcmp(argv[1],"-validate") == 0 ) + { + bValidate = 1; + argv++; + argc--; + } + + if( argc > 1 && strcmp(argv[1],"-ho") == 0 ) + { + bHeaderOnly = 1; + argv++; + argc--; + } + + if( argc > 2 && strcmp(argv[1],"-precision") == 0 ) + { + nPrecision = atoi(argv[2]); + argv+=2; + argc-=2; + } + +/* -------------------------------------------------------------------- */ +/* Display a usage message. */ +/* -------------------------------------------------------------------- */ + if( argc != 2 ) + { + printf( "shpdump [-validate] [-ho] [-precision number] shp_file\n" ); + exit( 1 ); + } + +/* -------------------------------------------------------------------- */ +/* Open the passed shapefile. */ +/* -------------------------------------------------------------------- */ + hSHP = SHPOpen( argv[1], "rb" ); + + if( hSHP == NULL ) + { + printf( "Unable to open:%s\n", argv[1] ); + exit( 1 ); + } + +/* -------------------------------------------------------------------- */ +/* Print out the file bounds. */ +/* -------------------------------------------------------------------- */ + SHPGetInfo( hSHP, &nEntities, &nShapeType, adfMinBound, adfMaxBound ); + + printf( "Shapefile Type: %s # of Shapes: %d\n\n", + SHPTypeName( nShapeType ), nEntities ); + + printf( "File Bounds: (%.*g,%.*g,%.*g,%.*g)\n" + " to (%.*g,%.*g,%.*g,%.*g)\n", + nPrecision, adfMinBound[0], + nPrecision, adfMinBound[1], + nPrecision, adfMinBound[2], + nPrecision, adfMinBound[3], + nPrecision, adfMaxBound[0], + nPrecision, adfMaxBound[1], + nPrecision, adfMaxBound[2], + nPrecision, adfMaxBound[3] ); + +/* -------------------------------------------------------------------- */ +/* Skim over the list of shapes, printing all the vertices. */ +/* -------------------------------------------------------------------- */ + for( i = 0; i < nEntities && !bHeaderOnly; i++ ) + { + int j; + SHPObject *psShape; + + psShape = SHPReadObject( hSHP, i ); + + if( psShape == NULL ) + { + fprintf( stderr, + "Unable to read shape %d, terminating object reading.\n", + i ); + break; + } + + if( psShape->bMeasureIsUsed ) + printf( "\nShape:%d (%s) nVertices=%d, nParts=%d\n" + " Bounds:(%.*g,%.*g, %.*g, %.*g)\n" + " to (%.*g,%.*g, %.*g, %.*g)\n", + i, SHPTypeName(psShape->nSHPType), + psShape->nVertices, psShape->nParts, + nPrecision, psShape->dfXMin, + nPrecision, psShape->dfYMin, + nPrecision, psShape->dfZMin, + nPrecision, psShape->dfMMin, + nPrecision, psShape->dfXMax, + nPrecision, psShape->dfYMax, + nPrecision, psShape->dfZMax, + nPrecision, psShape->dfMMax ); + else + printf( "\nShape:%d (%s) nVertices=%d, nParts=%d\n" + " Bounds:(%.*g,%.*g, %.*g)\n" + " to (%.*g,%.*g, %.*g)\n", + i, SHPTypeName(psShape->nSHPType), + psShape->nVertices, psShape->nParts, + nPrecision, psShape->dfXMin, + nPrecision, psShape->dfYMin, + nPrecision, psShape->dfZMin, + nPrecision, psShape->dfXMax, + nPrecision, psShape->dfYMax, + nPrecision, psShape->dfZMax ); + + if( psShape->nParts > 0 && psShape->panPartStart[0] != 0 ) + { + fprintf( stderr, "panPartStart[0] = %d, not zero as expected.\n", + psShape->panPartStart[0] ); + } + + for( j = 0, iPart = 1; j < psShape->nVertices; j++ ) + { + const char *pszPartType = ""; + + if( j == 0 && psShape->nParts > 0 ) + pszPartType = SHPPartTypeName( psShape->panPartType[0] ); + + if( iPart < psShape->nParts + && psShape->panPartStart[iPart] == j ) + { + pszPartType = SHPPartTypeName( psShape->panPartType[iPart] ); + iPart++; + pszPlus = "+"; + } + else + pszPlus = " "; + + if( psShape->bMeasureIsUsed ) + printf(" %s (%.*g,%.*g, %.*g, %.*g) %s \n", + pszPlus, + nPrecision, psShape->padfX[j], + nPrecision, psShape->padfY[j], + nPrecision, psShape->padfZ[j], + nPrecision, psShape->padfM[j], + pszPartType ); + else + printf(" %s (%.*g,%.*g, %.*g) %s \n", + pszPlus, + nPrecision, psShape->padfX[j], + nPrecision, psShape->padfY[j], + nPrecision, psShape->padfZ[j], + pszPartType ); + } + + if( bValidate ) + { + int nAltered = SHPRewindObject( hSHP, psShape ); + + if( nAltered > 0 ) + { + printf( " %d rings wound in the wrong direction.\n", + nAltered ); + nInvalidCount++; + } + } + + SHPDestroyObject( psShape ); + } + + SHPClose( hSHP ); + + if( bValidate ) + { + printf( "%d object has invalid ring orderings.\n", nInvalidCount ); + } + +#ifdef USE_DBMALLOC + malloc_dump(2); +#endif + + exit( 0 ); +} diff --git a/libs/shapelib/shpopen.c b/libs/shapelib/shpopen.c new file mode 100644 index 0000000..f9d28c2 --- /dev/null +++ b/libs/shapelib/shpopen.c @@ -0,0 +1,3086 @@ +/****************************************************************************** + * $Id: shpopen.c,v 1.76 2017-09-10 10:11:36 erouault Exp $ + * + * Project: Shapelib + * Purpose: Implementation of core Shapefile read/write functions. + * Author: Frank Warmerdam, warmerdam@pobox.com + * + ****************************************************************************** + * Copyright (c) 1999, 2001, Frank Warmerdam + * Copyright (c) 2011-2013, Even Rouault + * + * This software is available under the following "MIT Style" license, + * or at the option of the licensee under the LGPL (see COPYING). This + * option is discussed in more detail in shapelib.html. + * + * -- + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included + * in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS + * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. + ****************************************************************************** + * + * $Log: shpopen.c,v $ + * Revision 1.76 2017-09-10 10:11:36 erouault + * * shpopen.c: resync with GDAL copy. Make sure to zero terminate all + * error messages. And fix regression regarding re-writing the last shape + * of a file (https://trac.osgeo.org/gdal/ticket/7031) + * + * Revision 1.75 2016-12-05 12:44:05 erouault + * * Major overhaul of Makefile build system to use autoconf/automake. + * + * * Warning fixes in contrib/ + * + * Revision 1.74 2016-12-04 15:30:15 erouault + * * shpopen.c, dbfopen.c, shptree.c, shapefil.h: resync with + * GDAL Shapefile driver. Mostly cleanups. SHPObject and DBFInfo + * structures extended with new members. New functions: + * DBFSetLastModifiedDate, SHPOpenLLEx, SHPRestoreSHX, + * SHPSetFastModeReadObject + * + * * sbnsearch.c: new file to implement original ESRI .sbn spatial + * index reading. (no write support). New functions: + * SBNOpenDiskTree, SBNCloseDiskTree, SBNSearchDiskTree, + * SBNSearchDiskTreeInteger, SBNSearchFreeIds + * + * * Makefile, makefile.vc, CMakeLists.txt, shapelib.def: updates + * with new file and symbols. + * + * * commit: helper script to cvs commit + * + * Revision 1.73 2012-01-24 22:33:01 fwarmerdam + * fix memory leak on failure to open .shp (gdal #4410) + * + * Revision 1.72 2011-12-11 22:45:28 fwarmerdam + * fix failure return from SHPOpenLL. + * + * Revision 1.71 2011-09-15 03:33:58 fwarmerdam + * fix missing cast (#2344) + * + * Revision 1.70 2011-07-24 05:59:25 fwarmerdam + * minimize use of CPLError in favor of SAHooks.Error() + * + * Revision 1.69 2011-07-24 03:24:22 fwarmerdam + * fix memory leaks in error cases creating shapefiles (#2061) + * + * Revision 1.68 2010-08-27 23:42:52 fwarmerdam + * add SHPAPI_CALL attribute in code + * + * Revision 1.67 2010-07-01 08:15:48 fwarmerdam + * do not error out on an object with zero vertices + * + * Revision 1.66 2010-07-01 07:58:57 fwarmerdam + * minor cleanup of error handling + * + * Revision 1.65 2010-07-01 07:27:13 fwarmerdam + * white space formatting adjustments + * + * Revision 1.64 2010-01-28 11:34:34 fwarmerdam + * handle the shape file length limits more gracefully (#3236) + * + * Revision 1.63 2010-01-28 04:04:40 fwarmerdam + * improve numerical accuracy of SHPRewind() algs (gdal #3363) + * + * Revision 1.62 2010-01-17 05:34:13 fwarmerdam + * Remove asserts on x/y being null (#2148). + * + * Revision 1.61 2010-01-16 05:07:42 fwarmerdam + * allow 0/nulls in shpcreateobject (#2148) + * + * Revision 1.60 2009-09-17 20:50:02 bram + * on Win32, define snprintf as alias to _snprintf + * + * Revision 1.59 2008-03-14 05:25:31 fwarmerdam + * Correct crash on buggy geometries (gdal #2218) + * + * Revision 1.58 2008/01/08 23:28:26 bram + * on line 2095, use a float instead of a double to avoid a compiler warning + * + * Revision 1.57 2007/12/06 07:00:25 fwarmerdam + * dbfopen now using SAHooks for fileio + * + * Revision 1.56 2007/12/04 20:37:56 fwarmerdam + * preliminary implementation of hooks api for io and errors + * + * Revision 1.55 2007/11/21 22:39:56 fwarmerdam + * close shx file in readonly mode (GDAL #1956) + * + * Revision 1.54 2007/11/15 00:12:47 mloskot + * Backported recent changes from GDAL (Ticket #1415) to Shapelib. + * + * Revision 1.53 2007/11/14 22:31:08 fwarmerdam + * checks after mallocs to detect for corrupted/voluntary broken shapefiles. + * http://trac.osgeo.org/gdal/ticket/1991 + * + * Revision 1.52 2007/06/21 15:58:33 fwarmerdam + * fix for SHPRewindObject when rings touch at one vertex (gdal #976) + * + * Revision 1.51 2006/09/04 15:24:01 fwarmerdam + * Fixed up log message for 1.49. + * + * Revision 1.50 2006/09/04 15:21:39 fwarmerdam + * fix of last fix + * + * Revision 1.49 2006/09/04 15:21:00 fwarmerdam + * MLoskot: Added stronger test of Shapefile reading failures, e.g. truncated + * files. The problem was discovered by Tim Sutton and reported here + * https://svn.qgis.org/trac/ticket/200 + * + * Revision 1.48 2006/01/26 15:07:32 fwarmerdam + * add bMeasureIsUsed flag from Craig Bruce: Bug 1249 + * + * Revision 1.47 2006/01/04 20:07:23 fwarmerdam + * In SHPWriteObject() make sure that the record length is updated + * when rewriting an existing record. + * + * Revision 1.46 2005/02/11 17:17:46 fwarmerdam + * added panPartStart[0] validation + * + * Revision 1.45 2004/09/26 20:09:48 fwarmerdam + * const correctness changes + * + * Revision 1.44 2003/12/29 00:18:39 fwarmerdam + * added error checking for failed IO and optional CPL error reporting + * + * Revision 1.43 2003/12/01 16:20:08 warmerda + * be careful of zero vertex shapes + * + * Revision 1.42 2003/12/01 14:58:27 warmerda + * added degenerate object check in SHPRewindObject() + * + * Revision 1.41 2003/07/08 15:22:43 warmerda + * avoid warning + * + * Revision 1.40 2003/04/21 18:30:37 warmerda + * added header write/update public methods + * + * Revision 1.39 2002/08/26 06:46:56 warmerda + * avoid c++ comments + * + * Revision 1.38 2002/05/07 16:43:39 warmerda + * Removed debugging printf() + * + * Revision 1.37 2002/04/10 17:35:22 warmerda + * fixed bug in ring reversal code + * + * Revision 1.36 2002/04/10 16:59:54 warmerda + * added SHPRewindObject + * + * Revision 1.35 2001/12/07 15:10:44 warmerda + * fix if .shx fails to open + * + * Revision 1.34 2001/11/01 16:29:55 warmerda + * move pabyRec into SHPInfo for thread safety + * + * Revision 1.33 2001/07/03 12:18:15 warmerda + * Improved cleanup if SHX not found, provided by Riccardo Cohen. + * + * Revision 1.32 2001/06/22 01:58:07 warmerda + * be more careful about establishing initial bounds in face of NULL shapes + * + * Revision 1.31 2001/05/31 19:35:29 warmerda + * added support for writing null shapes + * + * Revision 1.30 2001/05/28 12:46:29 warmerda + * Add some checking on reasonableness of record count when opening. + * + * Revision 1.29 2001/05/23 13:36:52 warmerda + * added use of SHPAPI_CALL + * + * Revision 1.28 2001/02/06 22:25:06 warmerda + * fixed memory leaks when SHPOpen() fails + * + * Revision 1.27 2000/07/18 15:21:33 warmerda + * added better enforcement of -1 for append in SHPWriteObject + * + * Revision 1.26 2000/02/16 16:03:51 warmerda + * added null shape support + * + * Revision 1.25 1999/12/15 13:47:07 warmerda + * Fixed record size settings in .shp file (was 4 words too long) + * Added stdlib.h. + * + * Revision 1.24 1999/11/05 14:12:04 warmerda + * updated license terms + * + * Revision 1.23 1999/07/27 00:53:46 warmerda + * added support for rewriting shapes + * + * Revision 1.22 1999/06/11 19:19:11 warmerda + * Cleanup pabyRec static buffer on SHPClose(). + * + * Revision 1.21 1999/06/02 14:57:56 kshih + * Remove unused variables + * + * Revision 1.20 1999/04/19 21:04:17 warmerda + * Fixed syntax error. + * + * Revision 1.19 1999/04/19 21:01:57 warmerda + * Force access string to binary in SHPOpen(). + * + * Revision 1.18 1999/04/01 18:48:07 warmerda + * Try upper case extensions if lower case doesn't work. + * + * Revision 1.17 1998/12/31 15:29:39 warmerda + * Disable writing measure values to multipatch objects if + * DISABLE_MULTIPATCH_MEASURE is defined. + * + * Revision 1.16 1998/12/16 05:14:33 warmerda + * Added support to write MULTIPATCH. Fixed reading Z coordinate of + * MULTIPATCH. Fixed record size written for all feature types. + * + * Revision 1.15 1998/12/03 16:35:29 warmerda + * r+b is proper binary access string, not rb+. + * + * Revision 1.14 1998/12/03 15:47:56 warmerda + * Fixed setting of nVertices in SHPCreateObject(). + * + * Revision 1.13 1998/12/03 15:33:54 warmerda + * Made SHPCalculateExtents() separately callable. + * + * Revision 1.12 1998/11/11 20:01:50 warmerda + * Fixed bug writing ArcM/Z, and PolygonM/Z for big endian machines. + * + * Revision 1.11 1998/11/09 20:56:44 warmerda + * Fixed up handling of file wide bounds. + * + * Revision 1.10 1998/11/09 20:18:51 warmerda + * Converted to support 3D shapefiles, and use of SHPObject. + * + * Revision 1.9 1998/02/24 15:09:05 warmerda + * Fixed memory leak. + * + * Revision 1.8 1997/12/04 15:40:29 warmerda + * Fixed byte swapping of record number, and record length fields in the + * .shp file. + * + * Revision 1.7 1995/10/21 03:15:58 warmerda + * Added support for binary file access, the magic cookie 9997 + * and tried to improve the int32 selection logic for 16bit systems. + * + * Revision 1.6 1995/09/04 04:19:41 warmerda + * Added fix for file bounds. + * + * Revision 1.5 1995/08/25 15:16:44 warmerda + * Fixed a couple of problems with big endian systems ... one with bounds + * and the other with multipart polygons. + * + * Revision 1.4 1995/08/24 18:10:17 warmerda + * Switch to use SfRealloc() to avoid problems with pre-ANSI realloc() + * functions (such as on the Sun). + * + * Revision 1.3 1995/08/23 02:23:15 warmerda + * Added support for reading bounds, and fixed up problems in setting the + * file wide bounds. + * + * Revision 1.2 1995/08/04 03:16:57 warmerda + * Added header. + * + */ + +#include "shapefil.h" + +#include +#include +#include +#include +#include +#include +#include + +SHP_CVSID("$Id: shpopen.c,v 1.76 2017-09-10 10:11:36 erouault Exp $") + +typedef unsigned char uchar; + +#if UINT_MAX == 65535 +typedef unsigned long int32; +#else +typedef unsigned int int32; +#endif + +#ifndef FALSE +# define FALSE 0 +# define TRUE 1 +#endif + +#define ByteCopy( a, b, c ) memcpy( b, a, c ) +#ifndef MAX +# define MIN(a,b) ((ab) ? a : b) +#endif + +#ifndef USE_CPL +#if defined(_MSC_VER) +# if _MSC_VER < 1900 +# define snprintf _snprintf +# endif +#elif defined(WIN32) || defined(_WIN32) +# ifndef snprintf +# define snprintf _snprintf +# endif +#endif +#endif + +#ifndef CPL_UNUSED +#if defined(__GNUC__) && __GNUC__ >= 4 +# define CPL_UNUSED __attribute((__unused__)) +#else +# define CPL_UNUSED +#endif +#endif + +#if defined(CPL_LSB) +#define bBigEndian FALSE +#elif defined(CPL_MSB) +#define bBigEndian TRUE +#else +static int bBigEndian; +#endif + +/************************************************************************/ +/* SwapWord() */ +/* */ +/* Swap a 2, 4 or 8 byte word. */ +/************************************************************************/ + +static void SwapWord( int length, void * wordP ) + +{ + int i; + uchar temp; + + for( i=0; i < length/2; i++ ) + { + temp = ((uchar *) wordP)[i]; + ((uchar *)wordP)[i] = ((uchar *) wordP)[length-i-1]; + ((uchar *) wordP)[length-i-1] = temp; + } +} + +/************************************************************************/ +/* SfRealloc() */ +/* */ +/* A realloc cover function that will access a NULL pointer as */ +/* a valid input. */ +/************************************************************************/ + +static void * SfRealloc( void * pMem, int nNewSize ) + +{ + if( pMem == NULL ) + return( (void *) malloc(nNewSize) ); + else + return( (void *) realloc(pMem,nNewSize) ); +} + +/************************************************************************/ +/* SHPWriteHeader() */ +/* */ +/* Write out a header for the .shp and .shx files as well as the */ +/* contents of the index (.shx) file. */ +/************************************************************************/ + +void SHPAPI_CALL SHPWriteHeader( SHPHandle psSHP ) + +{ + uchar abyHeader[100] = { 0 }; + int i; + int32 i32; + double dValue; + int32 *panSHX; + + if (psSHP->fpSHX == NULL) + { + psSHP->sHooks.Error( "SHPWriteHeader failed : SHX file is closed"); + return; + } + +/* -------------------------------------------------------------------- */ +/* Prepare header block for .shp file. */ +/* -------------------------------------------------------------------- */ + + abyHeader[2] = 0x27; /* magic cookie */ + abyHeader[3] = 0x0a; + + i32 = psSHP->nFileSize/2; /* file size */ + ByteCopy( &i32, abyHeader+24, 4 ); + if( !bBigEndian ) SwapWord( 4, abyHeader+24 ); + + i32 = 1000; /* version */ + ByteCopy( &i32, abyHeader+28, 4 ); + if( bBigEndian ) SwapWord( 4, abyHeader+28 ); + + i32 = psSHP->nShapeType; /* shape type */ + ByteCopy( &i32, abyHeader+32, 4 ); + if( bBigEndian ) SwapWord( 4, abyHeader+32 ); + + dValue = psSHP->adBoundsMin[0]; /* set bounds */ + ByteCopy( &dValue, abyHeader+36, 8 ); + if( bBigEndian ) SwapWord( 8, abyHeader+36 ); + + dValue = psSHP->adBoundsMin[1]; + ByteCopy( &dValue, abyHeader+44, 8 ); + if( bBigEndian ) SwapWord( 8, abyHeader+44 ); + + dValue = psSHP->adBoundsMax[0]; + ByteCopy( &dValue, abyHeader+52, 8 ); + if( bBigEndian ) SwapWord( 8, abyHeader+52 ); + + dValue = psSHP->adBoundsMax[1]; + ByteCopy( &dValue, abyHeader+60, 8 ); + if( bBigEndian ) SwapWord( 8, abyHeader+60 ); + + dValue = psSHP->adBoundsMin[2]; /* z */ + ByteCopy( &dValue, abyHeader+68, 8 ); + if( bBigEndian ) SwapWord( 8, abyHeader+68 ); + + dValue = psSHP->adBoundsMax[2]; + ByteCopy( &dValue, abyHeader+76, 8 ); + if( bBigEndian ) SwapWord( 8, abyHeader+76 ); + + dValue = psSHP->adBoundsMin[3]; /* m */ + ByteCopy( &dValue, abyHeader+84, 8 ); + if( bBigEndian ) SwapWord( 8, abyHeader+84 ); + + dValue = psSHP->adBoundsMax[3]; + ByteCopy( &dValue, abyHeader+92, 8 ); + if( bBigEndian ) SwapWord( 8, abyHeader+92 ); + +/* -------------------------------------------------------------------- */ +/* Write .shp file header. */ +/* -------------------------------------------------------------------- */ + if( psSHP->sHooks.FSeek( psSHP->fpSHP, 0, 0 ) != 0 + || psSHP->sHooks.FWrite( abyHeader, 100, 1, psSHP->fpSHP ) != 1 ) + { + char szErrorMsg[200]; + + snprintf( szErrorMsg, sizeof(szErrorMsg), + "Failure writing .shp header: %s", strerror(errno) ); + szErrorMsg[sizeof(szErrorMsg)-1] = '\0'; + psSHP->sHooks.Error( szErrorMsg ); + return; + } + +/* -------------------------------------------------------------------- */ +/* Prepare, and write .shx file header. */ +/* -------------------------------------------------------------------- */ + i32 = (psSHP->nRecords * 2 * sizeof(int32) + 100)/2; /* file size */ + ByteCopy( &i32, abyHeader+24, 4 ); + if( !bBigEndian ) SwapWord( 4, abyHeader+24 ); + + if( psSHP->sHooks.FSeek( psSHP->fpSHX, 0, 0 ) != 0 + || psSHP->sHooks.FWrite( abyHeader, 100, 1, psSHP->fpSHX ) != 1 ) + { + char szErrorMsg[200]; + + snprintf( szErrorMsg, sizeof(szErrorMsg), + "Failure writing .shx header: %s", strerror(errno) ); + szErrorMsg[sizeof(szErrorMsg)-1] = '\0'; + psSHP->sHooks.Error( szErrorMsg ); + + return; + } + +/* -------------------------------------------------------------------- */ +/* Write out the .shx contents. */ +/* -------------------------------------------------------------------- */ + panSHX = (int32 *) malloc(sizeof(int32) * 2 * psSHP->nRecords); + if( panSHX == NULL ) + { + psSHP->sHooks.Error( "Failure allocatin panSHX" ); + return; + } + + for( i = 0; i < psSHP->nRecords; i++ ) + { + panSHX[i*2 ] = psSHP->panRecOffset[i]/2; + panSHX[i*2+1] = psSHP->panRecSize[i]/2; + if( !bBigEndian ) SwapWord( 4, panSHX+i*2 ); + if( !bBigEndian ) SwapWord( 4, panSHX+i*2+1 ); + } + + if( (int)psSHP->sHooks.FWrite( panSHX, sizeof(int32)*2, psSHP->nRecords, psSHP->fpSHX ) + != psSHP->nRecords ) + { + char szErrorMsg[200]; + + snprintf( szErrorMsg, sizeof(szErrorMsg), + "Failure writing .shx contents: %s", strerror(errno) ); + szErrorMsg[sizeof(szErrorMsg)-1] = '\0'; + psSHP->sHooks.Error( szErrorMsg ); + } + + free( panSHX ); + +/* -------------------------------------------------------------------- */ +/* Flush to disk. */ +/* -------------------------------------------------------------------- */ + psSHP->sHooks.FFlush( psSHP->fpSHP ); + psSHP->sHooks.FFlush( psSHP->fpSHX ); +} + +/************************************************************************/ +/* SHPOpen() */ +/************************************************************************/ + +SHPHandle SHPAPI_CALL +SHPOpen( const char * pszLayer, const char * pszAccess ) + +{ + SAHooks sHooks; + + SASetupDefaultHooks( &sHooks ); + + return SHPOpenLL( pszLayer, pszAccess, &sHooks ); +} + +/************************************************************************/ +/* SHPOpen() */ +/* */ +/* Open the .shp and .shx files based on the basename of the */ +/* files or either file name. */ +/************************************************************************/ + +SHPHandle SHPAPI_CALL +SHPOpenLL( const char * pszLayer, const char * pszAccess, SAHooks *psHooks ) + +{ + char *pszFullname, *pszBasename; + SHPHandle psSHP; + + uchar *pabyBuf; + int i; + double dValue; + int bLazySHXLoading = FALSE; + size_t nFullnameLen; + +/* -------------------------------------------------------------------- */ +/* Ensure the access string is one of the legal ones. We */ +/* ensure the result string indicates binary to avoid common */ +/* problems on Windows. */ +/* -------------------------------------------------------------------- */ + if( strcmp(pszAccess,"rb+") == 0 || strcmp(pszAccess,"r+b") == 0 + || strcmp(pszAccess,"r+") == 0 ) + pszAccess = "r+b"; + else + { + bLazySHXLoading = strchr(pszAccess, 'l') != NULL; + pszAccess = "rb"; + } + +/* -------------------------------------------------------------------- */ +/* Establish the byte order on this machine. */ +/* -------------------------------------------------------------------- */ +#if !defined(bBigEndian) + i = 1; + if( *((uchar *) &i) == 1 ) + bBigEndian = FALSE; + else + bBigEndian = TRUE; +#endif + +/* -------------------------------------------------------------------- */ +/* Initialize the info structure. */ +/* -------------------------------------------------------------------- */ + psSHP = (SHPHandle) calloc(sizeof(SHPInfo),1); + + psSHP->bUpdated = FALSE; + memcpy( &(psSHP->sHooks), psHooks, sizeof(SAHooks) ); + +/* -------------------------------------------------------------------- */ +/* Compute the base (layer) name. If there is any extension */ +/* on the passed in filename we will strip it off. */ +/* -------------------------------------------------------------------- */ + pszBasename = (char *) malloc(strlen(pszLayer)+5); + strcpy( pszBasename, pszLayer ); + for( i = (int)strlen(pszBasename)-1; + i > 0 && pszBasename[i] != '.' && pszBasename[i] != '/' + && pszBasename[i] != '\\'; + i-- ) {} + + if( pszBasename[i] == '.' ) + pszBasename[i] = '\0'; + +/* -------------------------------------------------------------------- */ +/* Open the .shp and .shx files. Note that files pulled from */ +/* a PC to Unix with upper case filenames won't work! */ +/* -------------------------------------------------------------------- */ + nFullnameLen = strlen(pszBasename) + 5; + pszFullname = (char *) malloc(nFullnameLen); + snprintf( pszFullname, nFullnameLen, "%s.shp", pszBasename ) ; + psSHP->fpSHP = psSHP->sHooks.FOpen(pszFullname, pszAccess ); + if( psSHP->fpSHP == NULL ) + { + snprintf( pszFullname, nFullnameLen, "%s.SHP", pszBasename ); + psSHP->fpSHP = psSHP->sHooks.FOpen(pszFullname, pszAccess ); + } + + if( psSHP->fpSHP == NULL ) + { + size_t nMessageLen = strlen(pszBasename)*2+256; + char *pszMessage = (char *) malloc(nMessageLen); + snprintf( pszMessage, nMessageLen, "Unable to open %s.shp or %s.SHP.", + pszBasename, pszBasename ); + psHooks->Error( pszMessage ); + free( pszMessage ); + + free( psSHP ); + free( pszBasename ); + free( pszFullname ); + + return NULL; + } + + snprintf( pszFullname, nFullnameLen, "%s.shx", pszBasename ); + psSHP->fpSHX = psSHP->sHooks.FOpen(pszFullname, pszAccess ); + if( psSHP->fpSHX == NULL ) + { + snprintf( pszFullname, nFullnameLen, "%s.SHX", pszBasename ); + psSHP->fpSHX = psSHP->sHooks.FOpen(pszFullname, pszAccess ); + } + + if( psSHP->fpSHX == NULL ) + { + size_t nMessageLen = strlen(pszBasename)*2+256; + char *pszMessage = (char *) malloc(nMessageLen); + snprintf( pszMessage, nMessageLen, "Unable to open %s.shx or %s.SHX." + "Try --config SHAPE_RESTORE_SHX true to restore or create it", + pszBasename, pszBasename ); + psHooks->Error( pszMessage ); + free( pszMessage ); + + psSHP->sHooks.FClose( psSHP->fpSHP ); + free( psSHP ); + free( pszBasename ); + free( pszFullname ); + return( NULL ); + } + + free( pszFullname ); + free( pszBasename ); + +/* -------------------------------------------------------------------- */ +/* Read the file size from the SHP file. */ +/* -------------------------------------------------------------------- */ + pabyBuf = (uchar *) malloc(100); + psSHP->sHooks.FRead( pabyBuf, 100, 1, psSHP->fpSHP ); + + psSHP->nFileSize = ((unsigned int)pabyBuf[24]<<24)|(pabyBuf[25]<<16)| + (pabyBuf[26]<<8)|pabyBuf[27]; + if( psSHP->nFileSize < UINT_MAX / 2 ) + psSHP->nFileSize *= 2; + else + psSHP->nFileSize = (UINT_MAX / 2) * 2; + +/* -------------------------------------------------------------------- */ +/* Read SHX file Header info */ +/* -------------------------------------------------------------------- */ + if( psSHP->sHooks.FRead( pabyBuf, 100, 1, psSHP->fpSHX ) != 1 + || pabyBuf[0] != 0 + || pabyBuf[1] != 0 + || pabyBuf[2] != 0x27 + || (pabyBuf[3] != 0x0a && pabyBuf[3] != 0x0d) ) + { + psSHP->sHooks.Error( ".shx file is unreadable, or corrupt." ); + psSHP->sHooks.FClose( psSHP->fpSHP ); + psSHP->sHooks.FClose( psSHP->fpSHX ); + free( pabyBuf ); + free( psSHP ); + + return( NULL ); + } + + psSHP->nRecords = pabyBuf[27]|(pabyBuf[26]<<8)|(pabyBuf[25]<<16)| + ((pabyBuf[24] & 0x7F)<<24); + psSHP->nRecords = (psSHP->nRecords - 50) / 4; + + psSHP->nShapeType = pabyBuf[32]; + + if( psSHP->nRecords < 0 || psSHP->nRecords > 256000000 ) + { + char szErrorMsg[200]; + + snprintf( szErrorMsg, sizeof(szErrorMsg), + "Record count in .shp header is %d, which seems\n" + "unreasonable. Assuming header is corrupt.", + psSHP->nRecords ); + szErrorMsg[sizeof(szErrorMsg)-1] = '\0'; + psSHP->sHooks.Error( szErrorMsg ); + psSHP->sHooks.FClose( psSHP->fpSHP ); + psSHP->sHooks.FClose( psSHP->fpSHX ); + free( psSHP ); + free(pabyBuf); + + return( NULL ); + } + + /* If a lot of records are advertized, check that the file is big enough */ + /* to hold them */ + if( psSHP->nRecords >= 1024 * 1024 ) + { + SAOffset nFileSize; + psSHP->sHooks.FSeek( psSHP->fpSHX, 0, 2 ); + nFileSize = psSHP->sHooks.FTell( psSHP->fpSHX ); + if( nFileSize > 100 && + nFileSize/2 < (SAOffset)(psSHP->nRecords * 4 + 50) ) + { + psSHP->nRecords = (int)((nFileSize - 100) / 8); + } + psSHP->sHooks.FSeek( psSHP->fpSHX, 100, 0 ); + } + +/* -------------------------------------------------------------------- */ +/* Read the bounds. */ +/* -------------------------------------------------------------------- */ + if( bBigEndian ) SwapWord( 8, pabyBuf+36 ); + memcpy( &dValue, pabyBuf+36, 8 ); + psSHP->adBoundsMin[0] = dValue; + + if( bBigEndian ) SwapWord( 8, pabyBuf+44 ); + memcpy( &dValue, pabyBuf+44, 8 ); + psSHP->adBoundsMin[1] = dValue; + + if( bBigEndian ) SwapWord( 8, pabyBuf+52 ); + memcpy( &dValue, pabyBuf+52, 8 ); + psSHP->adBoundsMax[0] = dValue; + + if( bBigEndian ) SwapWord( 8, pabyBuf+60 ); + memcpy( &dValue, pabyBuf+60, 8 ); + psSHP->adBoundsMax[1] = dValue; + + if( bBigEndian ) SwapWord( 8, pabyBuf+68 ); /* z */ + memcpy( &dValue, pabyBuf+68, 8 ); + psSHP->adBoundsMin[2] = dValue; + + if( bBigEndian ) SwapWord( 8, pabyBuf+76 ); + memcpy( &dValue, pabyBuf+76, 8 ); + psSHP->adBoundsMax[2] = dValue; + + if( bBigEndian ) SwapWord( 8, pabyBuf+84 ); /* z */ + memcpy( &dValue, pabyBuf+84, 8 ); + psSHP->adBoundsMin[3] = dValue; + + if( bBigEndian ) SwapWord( 8, pabyBuf+92 ); + memcpy( &dValue, pabyBuf+92, 8 ); + psSHP->adBoundsMax[3] = dValue; + + free( pabyBuf ); + +/* -------------------------------------------------------------------- */ +/* Read the .shx file to get the offsets to each record in */ +/* the .shp file. */ +/* -------------------------------------------------------------------- */ + psSHP->nMaxRecords = psSHP->nRecords; + + psSHP->panRecOffset = (unsigned int *) + malloc(sizeof(unsigned int) * MAX(1,psSHP->nMaxRecords) ); + psSHP->panRecSize = (unsigned int *) + malloc(sizeof(unsigned int) * MAX(1,psSHP->nMaxRecords) ); + if( bLazySHXLoading ) + pabyBuf = NULL; + else + pabyBuf = (uchar *) malloc(8 * MAX(1,psSHP->nRecords) ); + + if (psSHP->panRecOffset == NULL || + psSHP->panRecSize == NULL || + (!bLazySHXLoading && pabyBuf == NULL)) + { + char szErrorMsg[200]; + + snprintf( szErrorMsg, sizeof(szErrorMsg), + "Not enough memory to allocate requested memory (nRecords=%d).\n" + "Probably broken SHP file", + psSHP->nRecords ); + szErrorMsg[sizeof(szErrorMsg)-1] = '\0'; + psSHP->sHooks.Error( szErrorMsg ); + psSHP->sHooks.FClose( psSHP->fpSHP ); + psSHP->sHooks.FClose( psSHP->fpSHX ); + if (psSHP->panRecOffset) free( psSHP->panRecOffset ); + if (psSHP->panRecSize) free( psSHP->panRecSize ); + if (pabyBuf) free( pabyBuf ); + free( psSHP ); + return( NULL ); + } + + if( bLazySHXLoading ) + { + memset(psSHP->panRecOffset, 0, sizeof(unsigned int) * MAX(1,psSHP->nMaxRecords) ); + memset(psSHP->panRecSize, 0, sizeof(unsigned int) * MAX(1,psSHP->nMaxRecords) ); + return( psSHP ); + } + + if( (int) psSHP->sHooks.FRead( pabyBuf, 8, psSHP->nRecords, psSHP->fpSHX ) + != psSHP->nRecords ) + { + char szErrorMsg[200]; + + snprintf( szErrorMsg, sizeof(szErrorMsg), + "Failed to read all values for %d records in .shx file: %s.", + psSHP->nRecords, strerror(errno) ); + szErrorMsg[sizeof(szErrorMsg)-1] = '\0'; + psSHP->sHooks.Error( szErrorMsg ); + + /* SHX is short or unreadable for some reason. */ + psSHP->sHooks.FClose( psSHP->fpSHP ); + psSHP->sHooks.FClose( psSHP->fpSHX ); + free( psSHP->panRecOffset ); + free( psSHP->panRecSize ); + free( pabyBuf ); + free( psSHP ); + + return( NULL ); + } + + /* In read-only mode, we can close the SHX now */ + if (strcmp(pszAccess, "rb") == 0) + { + psSHP->sHooks.FClose( psSHP->fpSHX ); + psSHP->fpSHX = NULL; + } + + for( i = 0; i < psSHP->nRecords; i++ ) + { + unsigned int nOffset, nLength; + + memcpy( &nOffset, pabyBuf + i * 8, 4 ); + if( !bBigEndian ) SwapWord( 4, &nOffset ); + + memcpy( &nLength, pabyBuf + i * 8 + 4, 4 ); + if( !bBigEndian ) SwapWord( 4, &nLength ); + + if( nOffset > (unsigned int)INT_MAX ) + { + char str[128]; + snprintf( str, sizeof(str), + "Invalid offset for entity %d", i); + str[sizeof(str)-1] = '\0'; + + psSHP->sHooks.Error( str ); + SHPClose(psSHP); + free( pabyBuf ); + return NULL; + } + if( nLength > (unsigned int)(INT_MAX / 2 - 4) ) + { + char str[128]; + snprintf( str, sizeof(str), + "Invalid length for entity %d", i); + str[sizeof(str)-1] = '\0'; + + psSHP->sHooks.Error( str ); + SHPClose(psSHP); + free( pabyBuf ); + return NULL; + } + psSHP->panRecOffset[i] = nOffset*2; + psSHP->panRecSize[i] = nLength*2; + } + free( pabyBuf ); + + return( psSHP ); +} + +/************************************************************************/ +/* SHPOpenLLEx() */ +/* */ +/* Open the .shp and .shx files based on the basename of the */ +/* files or either file name. It generally invokes SHPRestoreSHX() */ +/* in case when bRestoreSHX equals true. */ +/************************************************************************/ + +SHPHandle SHPAPI_CALL +SHPOpenLLEx( const char * pszLayer, const char * pszAccess, SAHooks *psHooks, + int bRestoreSHX ) + +{ + if ( !bRestoreSHX ) return SHPOpenLL ( pszLayer, pszAccess, psHooks ); + else + { + if ( SHPRestoreSHX ( pszLayer, pszAccess, psHooks ) ) + { + return SHPOpenLL ( pszLayer, pszAccess, psHooks ); + } + } + + return( NULL ); +} + +/************************************************************************/ +/* SHPRestoreSHX() */ +/* */ +/* Restore .SHX file using associated .SHP file. */ +/* */ +/************************************************************************/ + +int SHPAPI_CALL +SHPRestoreSHX ( const char * pszLayer, const char * pszAccess, SAHooks *psHooks ) + +{ + char *pszFullname, *pszBasename; + SAFile fpSHP, fpSHX; + + + uchar *pabyBuf; + int i; + size_t nFullnameLen; + unsigned int nSHPFilesize; + + size_t nMessageLen; + char *pszMessage; + + unsigned int nCurrentRecordOffset = 0; + unsigned int nCurrentSHPOffset = 100; + size_t nRealSHXContentSize = 100; + + const char pszSHXAccess[] = "w+b"; + char *pabySHXHeader; + char abyReadedRecord[8]; + unsigned int niRecord = 0; + unsigned int nRecordLength = 0; + unsigned int nRecordOffset = 50; + +/* -------------------------------------------------------------------- */ +/* Ensure the access string is one of the legal ones. We */ +/* ensure the result string indicates binary to avoid common */ +/* problems on Windows. */ +/* -------------------------------------------------------------------- */ + if( strcmp(pszAccess,"rb+") == 0 || strcmp(pszAccess,"r+b") == 0 + || strcmp(pszAccess,"r+") == 0 ) + pszAccess = "r+b"; + else + { + pszAccess = "rb"; + } + +/* -------------------------------------------------------------------- */ +/* Establish the byte order on this machine. */ +/* -------------------------------------------------------------------- */ +#if !defined(bBigEndian) + i = 1; + if( *((uchar *) &i) == 1 ) + bBigEndian = FALSE; + else + bBigEndian = TRUE; +#endif + +/* -------------------------------------------------------------------- */ +/* Compute the base (layer) name. If there is any extension */ +/* on the passed in filename we will strip it off. */ +/* -------------------------------------------------------------------- */ + pszBasename = (char *) malloc(strlen(pszLayer)+5); + strcpy( pszBasename, pszLayer ); + for( i = (int)strlen(pszBasename)-1; + i > 0 && pszBasename[i] != '.' && pszBasename[i] != '/' + && pszBasename[i] != '\\'; + i-- ) {} + + if( pszBasename[i] == '.' ) + pszBasename[i] = '\0'; + +/* -------------------------------------------------------------------- */ +/* Open the .shp file. Note that files pulled from */ +/* a PC to Unix with upper case filenames won't work! */ +/* -------------------------------------------------------------------- */ + nFullnameLen = strlen(pszBasename) + 5; + pszFullname = (char *) malloc(nFullnameLen); + snprintf( pszFullname, nFullnameLen, "%s.shp", pszBasename ) ; + fpSHP = psHooks->FOpen(pszFullname, pszAccess ); + if( fpSHP == NULL ) + { + snprintf( pszFullname, nFullnameLen, "%s.SHP", pszBasename ); + fpSHP = psHooks->FOpen(pszFullname, pszAccess ); + } + + if( fpSHP == NULL ) + { + nMessageLen = strlen(pszBasename)*2+256; + pszMessage = (char *) malloc(nMessageLen); + snprintf( pszMessage, nMessageLen, "Unable to open %s.shp or %s.SHP.", + pszBasename, pszBasename ); + psHooks->Error( pszMessage ); + free( pszMessage ); + + free( pszBasename ); + free( pszFullname ); + + return( 0 ); + } + +/* -------------------------------------------------------------------- */ +/* Read the file size from the SHP file. */ +/* -------------------------------------------------------------------- */ + pabyBuf = (uchar *) malloc(100); + psHooks->FRead( pabyBuf, 100, 1, fpSHP ); + + nSHPFilesize = ((unsigned int)pabyBuf[24]<<24)|(pabyBuf[25]<<16)| + (pabyBuf[26]<<8)|pabyBuf[27]; + if( nSHPFilesize < UINT_MAX / 2 ) + nSHPFilesize *= 2; + else + nSHPFilesize = (UINT_MAX / 2) * 2; + + snprintf( pszFullname, nFullnameLen, "%s.shx", pszBasename ); + fpSHX = psHooks->FOpen( pszFullname, pszSHXAccess ); + + if( fpSHX == NULL ) + { + nMessageLen = strlen( pszBasename ) * 2 + 256; + pszMessage = (char *) malloc( nMessageLen ); + snprintf( pszMessage, nMessageLen, "Error opening file %s.shx for writing", + pszBasename ); + psHooks->Error( pszMessage ); + free( pszMessage ); + + psHooks->FClose( fpSHX ); + + free( pabyBuf ); + free( pszBasename ); + free( pszFullname ); + + return( 0 ); + } + +/* -------------------------------------------------------------------- */ +/* Open SHX and create it using SHP file content. */ +/* -------------------------------------------------------------------- */ + psHooks->FSeek( fpSHP, 100, 0 ); + pabySHXHeader = (char *) malloc ( 100 ); + memcpy( pabySHXHeader, pabyBuf, 100 ); + psHooks->FWrite( pabySHXHeader, 100, 1, fpSHX ); + + while( nCurrentSHPOffset < nSHPFilesize ) + { + if( psHooks->FRead( &niRecord, 4, 1, fpSHP ) == 1 && + psHooks->FRead( &nRecordLength, 4, 1, fpSHP ) == 1) + { + if( !bBigEndian ) SwapWord( 4, &nRecordOffset ); + memcpy( abyReadedRecord, &nRecordOffset, 4 ); + memcpy( abyReadedRecord + 4, &nRecordLength, 4 ); + + psHooks->FWrite( abyReadedRecord, 8, 1, fpSHX ); + + if ( !bBigEndian ) SwapWord( 4, &nRecordOffset ); + if ( !bBigEndian ) SwapWord( 4, &nRecordLength ); + nRecordOffset += nRecordLength + 4; + nCurrentRecordOffset += 8; + nCurrentSHPOffset += 8 + nRecordLength * 2; + + psHooks->FSeek( fpSHP, nCurrentSHPOffset, 0 ); + nRealSHXContentSize += 8; + } + else + { + psHooks->Error( "Error parsing .shp to restore .shx" ); + + psHooks->FClose( fpSHX ); + psHooks->FClose( fpSHP ); + + free( pabySHXHeader ); + free( pszBasename ); + free( pszFullname ); + + return( 0 ); + } + } + + nRealSHXContentSize /= 2; // Bytes counted -> WORDs + if( !bBigEndian ) SwapWord( 4, &nRealSHXContentSize ); + psHooks->FSeek( fpSHX, 24, 0 ); + psHooks->FWrite( &nRealSHXContentSize, 4, 1, fpSHX ); + + psHooks->FClose( fpSHP ); + psHooks->FClose( fpSHX ); + + free ( pabyBuf ); + free ( pszFullname ); + free ( pszBasename ); + free ( pabySHXHeader ); + + return( 1 ); +} + +/************************************************************************/ +/* SHPClose() */ +/* */ +/* Close the .shp and .shx files. */ +/************************************************************************/ + +void SHPAPI_CALL +SHPClose(SHPHandle psSHP ) + +{ + if( psSHP == NULL ) + return; + +/* -------------------------------------------------------------------- */ +/* Update the header if we have modified anything. */ +/* -------------------------------------------------------------------- */ + if( psSHP->bUpdated ) + SHPWriteHeader( psSHP ); + +/* -------------------------------------------------------------------- */ +/* Free all resources, and close files. */ +/* -------------------------------------------------------------------- */ + free( psSHP->panRecOffset ); + free( psSHP->panRecSize ); + + if ( psSHP->fpSHX != NULL) + psSHP->sHooks.FClose( psSHP->fpSHX ); + psSHP->sHooks.FClose( psSHP->fpSHP ); + + if( psSHP->pabyRec != NULL ) + { + free( psSHP->pabyRec ); + } + + if( psSHP->pabyObjectBuf != NULL ) + { + free( psSHP->pabyObjectBuf ); + } + if( psSHP->psCachedObject != NULL ) + { + free( psSHP->psCachedObject ); + } + + free( psSHP ); +} + +/************************************************************************/ +/* SHPSetFastModeReadObject() */ +/************************************************************************/ + +/* If setting bFastMode = TRUE, the content of SHPReadObject() is owned by the SHPHandle. */ +/* So you cannot have 2 valid instances of SHPReadObject() simultaneously. */ +/* The SHPObject padfZ and padfM members may be NULL depending on the geometry */ +/* type. It is illegal to free at hand any of the pointer members of the SHPObject structure */ +void SHPAPI_CALL SHPSetFastModeReadObject( SHPHandle hSHP, int bFastMode ) +{ + if( bFastMode ) + { + if( hSHP->psCachedObject == NULL ) + { + hSHP->psCachedObject = (SHPObject*) calloc(1, sizeof(SHPObject)); + assert( hSHP->psCachedObject != NULL ); + } + } + + hSHP->bFastModeReadObject = bFastMode; +} + +/************************************************************************/ +/* SHPGetInfo() */ +/* */ +/* Fetch general information about the shape file. */ +/************************************************************************/ + +void SHPAPI_CALL +SHPGetInfo(SHPHandle psSHP, int * pnEntities, int * pnShapeType, + double * padfMinBound, double * padfMaxBound ) + +{ + int i; + + if( psSHP == NULL ) + return; + + if( pnEntities != NULL ) + *pnEntities = psSHP->nRecords; + + if( pnShapeType != NULL ) + *pnShapeType = psSHP->nShapeType; + + for( i = 0; i < 4; i++ ) + { + if( padfMinBound != NULL ) + padfMinBound[i] = psSHP->adBoundsMin[i]; + if( padfMaxBound != NULL ) + padfMaxBound[i] = psSHP->adBoundsMax[i]; + } +} + +/************************************************************************/ +/* SHPCreate() */ +/* */ +/* Create a new shape file and return a handle to the open */ +/* shape file with read/write access. */ +/************************************************************************/ + +SHPHandle SHPAPI_CALL +SHPCreate( const char * pszLayer, int nShapeType ) + +{ + SAHooks sHooks; + + SASetupDefaultHooks( &sHooks ); + + return SHPCreateLL( pszLayer, nShapeType, &sHooks ); +} + +/************************************************************************/ +/* SHPCreate() */ +/* */ +/* Create a new shape file and return a handle to the open */ +/* shape file with read/write access. */ +/************************************************************************/ + +SHPHandle SHPAPI_CALL +SHPCreateLL( const char * pszLayer, int nShapeType, SAHooks *psHooks ) + +{ + char *pszBasename = NULL, *pszFullname = NULL; + int i; + SAFile fpSHP = NULL, fpSHX = NULL; + uchar abyHeader[100]; + int32 i32; + double dValue; + size_t nFullnameLen; + +/* -------------------------------------------------------------------- */ +/* Establish the byte order on this system. */ +/* -------------------------------------------------------------------- */ +#if !defined(bBigEndian) + i = 1; + if( *((uchar *) &i) == 1 ) + bBigEndian = FALSE; + else + bBigEndian = TRUE; +#endif + +/* -------------------------------------------------------------------- */ +/* Compute the base (layer) name. If there is any extension */ +/* on the passed in filename we will strip it off. */ +/* -------------------------------------------------------------------- */ + pszBasename = (char *) malloc(strlen(pszLayer)+5); + strcpy( pszBasename, pszLayer ); + for( i = (int)strlen(pszBasename)-1; + i > 0 && pszBasename[i] != '.' && pszBasename[i] != '/' + && pszBasename[i] != '\\'; + i-- ) {} + + if( pszBasename[i] == '.' ) + pszBasename[i] = '\0'; + +/* -------------------------------------------------------------------- */ +/* Open the two files so we can write their headers. */ +/* -------------------------------------------------------------------- */ + nFullnameLen = strlen(pszBasename) + 5; + pszFullname = (char *) malloc(nFullnameLen); + snprintf( pszFullname, nFullnameLen, "%s.shp", pszBasename ); + fpSHP = psHooks->FOpen(pszFullname, "wb" ); + if( fpSHP == NULL ) + { + char szErrorMsg[200]; + snprintf( szErrorMsg, sizeof(szErrorMsg), + "Failed to create file %s: %s", + pszFullname, strerror(errno) ); + psHooks->Error( szErrorMsg ); + + goto error; + } + + snprintf( pszFullname, nFullnameLen, "%s.shx", pszBasename ); + fpSHX = psHooks->FOpen(pszFullname, "wb" ); + if( fpSHX == NULL ) + { + char szErrorMsg[200]; + snprintf( szErrorMsg, sizeof(szErrorMsg), + "Failed to create file %s: %s", + pszFullname, strerror(errno) ); + psHooks->Error( szErrorMsg ); + goto error; + } + + free( pszFullname ); pszFullname = NULL; + free( pszBasename ); pszBasename = NULL; + +/* -------------------------------------------------------------------- */ +/* Prepare header block for .shp file. */ +/* -------------------------------------------------------------------- */ + memset( abyHeader, 0, sizeof(abyHeader) ); + + abyHeader[2] = 0x27; /* magic cookie */ + abyHeader[3] = 0x0a; + + i32 = 50; /* file size */ + ByteCopy( &i32, abyHeader+24, 4 ); + if( !bBigEndian ) SwapWord( 4, abyHeader+24 ); + + i32 = 1000; /* version */ + ByteCopy( &i32, abyHeader+28, 4 ); + if( bBigEndian ) SwapWord( 4, abyHeader+28 ); + + i32 = nShapeType; /* shape type */ + ByteCopy( &i32, abyHeader+32, 4 ); + if( bBigEndian ) SwapWord( 4, abyHeader+32 ); + + dValue = 0.0; /* set bounds */ + ByteCopy( &dValue, abyHeader+36, 8 ); + ByteCopy( &dValue, abyHeader+44, 8 ); + ByteCopy( &dValue, abyHeader+52, 8 ); + ByteCopy( &dValue, abyHeader+60, 8 ); + +/* -------------------------------------------------------------------- */ +/* Write .shp file header. */ +/* -------------------------------------------------------------------- */ + if( psHooks->FWrite( abyHeader, 100, 1, fpSHP ) != 1 ) + { + char szErrorMsg[200]; + + snprintf( szErrorMsg, sizeof(szErrorMsg), + "Failed to write .shp header: %s", strerror(errno) ); + szErrorMsg[sizeof(szErrorMsg)-1] = '\0'; + psHooks->Error( szErrorMsg ); + + goto error; + } + +/* -------------------------------------------------------------------- */ +/* Prepare, and write .shx file header. */ +/* -------------------------------------------------------------------- */ + i32 = 50; /* file size */ + ByteCopy( &i32, abyHeader+24, 4 ); + if( !bBigEndian ) SwapWord( 4, abyHeader+24 ); + + if( psHooks->FWrite( abyHeader, 100, 1, fpSHX ) != 1 ) + { + char szErrorMsg[200]; + + snprintf( szErrorMsg, sizeof(szErrorMsg), + "Failure writing .shx header: %s", strerror(errno) ); + szErrorMsg[sizeof(szErrorMsg)-1] = '\0'; + psHooks->Error( szErrorMsg ); + + goto error; + } + +/* -------------------------------------------------------------------- */ +/* Close the files, and then open them as regular existing files. */ +/* -------------------------------------------------------------------- */ + psHooks->FClose( fpSHP ); + psHooks->FClose( fpSHX ); + + return( SHPOpenLL( pszLayer, "r+b", psHooks ) ); + +error: + if (pszFullname) free(pszFullname); + if (pszBasename) free(pszBasename); + if (fpSHP) psHooks->FClose( fpSHP ); + if (fpSHX) psHooks->FClose( fpSHX ); + return NULL; +} + +/************************************************************************/ +/* _SHPSetBounds() */ +/* */ +/* Compute a bounds rectangle for a shape, and set it into the */ +/* indicated location in the record. */ +/************************************************************************/ + +static void _SHPSetBounds( uchar * pabyRec, SHPObject * psShape ) + +{ + ByteCopy( &(psShape->dfXMin), pabyRec + 0, 8 ); + ByteCopy( &(psShape->dfYMin), pabyRec + 8, 8 ); + ByteCopy( &(psShape->dfXMax), pabyRec + 16, 8 ); + ByteCopy( &(psShape->dfYMax), pabyRec + 24, 8 ); + + if( bBigEndian ) + { + SwapWord( 8, pabyRec + 0 ); + SwapWord( 8, pabyRec + 8 ); + SwapWord( 8, pabyRec + 16 ); + SwapWord( 8, pabyRec + 24 ); + } +} + +/************************************************************************/ +/* SHPComputeExtents() */ +/* */ +/* Recompute the extents of a shape. Automatically done by */ +/* SHPCreateObject(). */ +/************************************************************************/ + +void SHPAPI_CALL +SHPComputeExtents( SHPObject * psObject ) + +{ + int i; + +/* -------------------------------------------------------------------- */ +/* Build extents for this object. */ +/* -------------------------------------------------------------------- */ + if( psObject->nVertices > 0 ) + { + psObject->dfXMin = psObject->dfXMax = psObject->padfX[0]; + psObject->dfYMin = psObject->dfYMax = psObject->padfY[0]; + psObject->dfZMin = psObject->dfZMax = psObject->padfZ[0]; + psObject->dfMMin = psObject->dfMMax = psObject->padfM[0]; + } + + for( i = 0; i < psObject->nVertices; i++ ) + { + psObject->dfXMin = MIN(psObject->dfXMin, psObject->padfX[i]); + psObject->dfYMin = MIN(psObject->dfYMin, psObject->padfY[i]); + psObject->dfZMin = MIN(psObject->dfZMin, psObject->padfZ[i]); + psObject->dfMMin = MIN(psObject->dfMMin, psObject->padfM[i]); + + psObject->dfXMax = MAX(psObject->dfXMax, psObject->padfX[i]); + psObject->dfYMax = MAX(psObject->dfYMax, psObject->padfY[i]); + psObject->dfZMax = MAX(psObject->dfZMax, psObject->padfZ[i]); + psObject->dfMMax = MAX(psObject->dfMMax, psObject->padfM[i]); + } +} + +/************************************************************************/ +/* SHPCreateObject() */ +/* */ +/* Create a shape object. It should be freed with */ +/* SHPDestroyObject(). */ +/************************************************************************/ + +SHPObject SHPAPI_CALL1(*) +SHPCreateObject( int nSHPType, int nShapeId, int nParts, + const int * panPartStart, const int * panPartType, + int nVertices, const double *padfX, const double *padfY, + const double * padfZ, const double * padfM ) + +{ + SHPObject *psObject; + int i, bHasM, bHasZ; + + psObject = (SHPObject *) calloc(1,sizeof(SHPObject)); + psObject->nSHPType = nSHPType; + psObject->nShapeId = nShapeId; + psObject->bMeasureIsUsed = FALSE; + +/* -------------------------------------------------------------------- */ +/* Establish whether this shape type has M, and Z values. */ +/* -------------------------------------------------------------------- */ + if( nSHPType == SHPT_ARCM + || nSHPType == SHPT_POINTM + || nSHPType == SHPT_POLYGONM + || nSHPType == SHPT_MULTIPOINTM ) + { + bHasM = TRUE; + bHasZ = FALSE; + } + else if( nSHPType == SHPT_ARCZ + || nSHPType == SHPT_POINTZ + || nSHPType == SHPT_POLYGONZ + || nSHPType == SHPT_MULTIPOINTZ + || nSHPType == SHPT_MULTIPATCH ) + { + bHasM = TRUE; + bHasZ = TRUE; + } + else + { + bHasM = FALSE; + bHasZ = FALSE; + } + +/* -------------------------------------------------------------------- */ +/* Capture parts. Note that part type is optional, and */ +/* defaults to ring. */ +/* -------------------------------------------------------------------- */ + if( nSHPType == SHPT_ARC || nSHPType == SHPT_POLYGON + || nSHPType == SHPT_ARCM || nSHPType == SHPT_POLYGONM + || nSHPType == SHPT_ARCZ || nSHPType == SHPT_POLYGONZ + || nSHPType == SHPT_MULTIPATCH ) + { + psObject->nParts = MAX(1,nParts); + + psObject->panPartStart = (int *) + calloc(sizeof(int), psObject->nParts); + psObject->panPartType = (int *) + malloc(sizeof(int) * psObject->nParts); + + psObject->panPartStart[0] = 0; + psObject->panPartType[0] = SHPP_RING; + + for( i = 0; i < nParts; i++ ) + { + if( panPartStart != NULL ) + psObject->panPartStart[i] = panPartStart[i]; + + if( panPartType != NULL ) + psObject->panPartType[i] = panPartType[i]; + else + psObject->panPartType[i] = SHPP_RING; + } + + if( psObject->panPartStart[0] != 0 ) + psObject->panPartStart[0] = 0; + } + +/* -------------------------------------------------------------------- */ +/* Capture vertices. Note that X, Y, Z and M are optional. */ +/* -------------------------------------------------------------------- */ + if( nVertices > 0 ) + { + size_t nSize = sizeof(double) * nVertices; + psObject->padfX = (double *) padfX ? malloc(nSize) : + calloc(sizeof(double),nVertices); + psObject->padfY = (double *) padfY ? malloc(nSize) : + calloc(sizeof(double),nVertices); + psObject->padfZ = (double *) padfZ && bHasZ ? malloc(nSize) : + calloc(sizeof(double),nVertices); + psObject->padfM = (double *) padfM && bHasM ? malloc(nSize) : + calloc(sizeof(double),nVertices); + if( padfX != NULL ) + memcpy(psObject->padfX, padfX, nSize); + if( padfY != NULL ) + memcpy(psObject->padfY, padfY, nSize); + if( padfZ != NULL && bHasZ ) + memcpy(psObject->padfZ, padfZ, nSize); + if( padfM != NULL && bHasM ) + { + memcpy(psObject->padfM, padfM, nSize); + psObject->bMeasureIsUsed = TRUE; + } + } + +/* -------------------------------------------------------------------- */ +/* Compute the extents. */ +/* -------------------------------------------------------------------- */ + psObject->nVertices = nVertices; + SHPComputeExtents( psObject ); + + return( psObject ); +} + +/************************************************************************/ +/* SHPCreateSimpleObject() */ +/* */ +/* Create a simple (common) shape object. Destroy with */ +/* SHPDestroyObject(). */ +/************************************************************************/ + +SHPObject SHPAPI_CALL1(*) +SHPCreateSimpleObject( int nSHPType, int nVertices, + const double * padfX, const double * padfY, + const double * padfZ ) + +{ + return( SHPCreateObject( nSHPType, -1, 0, NULL, NULL, + nVertices, padfX, padfY, padfZ, NULL ) ); +} + +/************************************************************************/ +/* SHPWriteObject() */ +/* */ +/* Write out the vertices of a new structure. Note that it is */ +/* only possible to write vertices at the end of the file. */ +/************************************************************************/ + +int SHPAPI_CALL +SHPWriteObject(SHPHandle psSHP, int nShapeId, SHPObject * psObject ) + +{ + unsigned int nRecordOffset, nRecordSize=0; + int i; + uchar *pabyRec; + int32 i32; + int bAppendToLastRecord = FALSE; + int bAppendToFile = FALSE; + + psSHP->bUpdated = TRUE; + +/* -------------------------------------------------------------------- */ +/* Ensure that shape object matches the type of the file it is */ +/* being written to. */ +/* -------------------------------------------------------------------- */ + assert( psObject->nSHPType == psSHP->nShapeType + || psObject->nSHPType == SHPT_NULL ); + +/* -------------------------------------------------------------------- */ +/* Ensure that -1 is used for appends. Either blow an */ +/* assertion, or if they are disabled, set the shapeid to -1 */ +/* for appends. */ +/* -------------------------------------------------------------------- */ + assert( nShapeId == -1 + || (nShapeId >= 0 && nShapeId < psSHP->nRecords) ); + + if( nShapeId != -1 && nShapeId >= psSHP->nRecords ) + nShapeId = -1; + +/* -------------------------------------------------------------------- */ +/* Add the new entity to the in memory index. */ +/* -------------------------------------------------------------------- */ + if( nShapeId == -1 && psSHP->nRecords+1 > psSHP->nMaxRecords ) + { + int nNewMaxRecords = psSHP->nMaxRecords + psSHP->nMaxRecords / 3 + 100; + unsigned int* panRecOffsetNew; + unsigned int* panRecSizeNew; + + panRecOffsetNew = (unsigned int *) + SfRealloc(psSHP->panRecOffset,sizeof(unsigned int) * nNewMaxRecords ); + if( panRecOffsetNew == NULL ) + return -1; + psSHP->panRecOffset = panRecOffsetNew; + + panRecSizeNew = (unsigned int *) + SfRealloc(psSHP->panRecSize,sizeof(unsigned int) * nNewMaxRecords ); + if( panRecSizeNew == NULL ) + return -1; + psSHP->panRecSize = panRecSizeNew; + + psSHP->nMaxRecords = nNewMaxRecords; + } + +/* -------------------------------------------------------------------- */ +/* Initialize record. */ +/* -------------------------------------------------------------------- */ + pabyRec = (uchar *) malloc(psObject->nVertices * 4 * sizeof(double) + + psObject->nParts * 8 + 128); + if( pabyRec == NULL ) + return -1; + +/* -------------------------------------------------------------------- */ +/* Extract vertices for a Polygon or Arc. */ +/* -------------------------------------------------------------------- */ + if( psObject->nSHPType == SHPT_POLYGON + || psObject->nSHPType == SHPT_POLYGONZ + || psObject->nSHPType == SHPT_POLYGONM + || psObject->nSHPType == SHPT_ARC + || psObject->nSHPType == SHPT_ARCZ + || psObject->nSHPType == SHPT_ARCM + || psObject->nSHPType == SHPT_MULTIPATCH ) + { + int32 nPoints, nParts; + + nPoints = psObject->nVertices; + nParts = psObject->nParts; + + _SHPSetBounds( pabyRec + 12, psObject ); + + if( bBigEndian ) SwapWord( 4, &nPoints ); + if( bBigEndian ) SwapWord( 4, &nParts ); + + ByteCopy( &nPoints, pabyRec + 40 + 8, 4 ); + ByteCopy( &nParts, pabyRec + 36 + 8, 4 ); + + nRecordSize = 52; + + /* + * Write part start positions. + */ + ByteCopy( psObject->panPartStart, pabyRec + 44 + 8, + 4 * psObject->nParts ); + for( i = 0; i < psObject->nParts; i++ ) + { + if( bBigEndian ) SwapWord( 4, pabyRec + 44 + 8 + 4*i ); + nRecordSize += 4; + } + + /* + * Write multipatch part types if needed. + */ + if( psObject->nSHPType == SHPT_MULTIPATCH ) + { + memcpy( pabyRec + nRecordSize, psObject->panPartType, + 4*psObject->nParts ); + for( i = 0; i < psObject->nParts; i++ ) + { + if( bBigEndian ) SwapWord( 4, pabyRec + nRecordSize ); + nRecordSize += 4; + } + } + + /* + * Write the (x,y) vertex values. + */ + for( i = 0; i < psObject->nVertices; i++ ) + { + ByteCopy( psObject->padfX + i, pabyRec + nRecordSize, 8 ); + ByteCopy( psObject->padfY + i, pabyRec + nRecordSize + 8, 8 ); + + if( bBigEndian ) + SwapWord( 8, pabyRec + nRecordSize ); + + if( bBigEndian ) + SwapWord( 8, pabyRec + nRecordSize + 8 ); + + nRecordSize += 2 * 8; + } + + /* + * Write the Z coordinates (if any). + */ + if( psObject->nSHPType == SHPT_POLYGONZ + || psObject->nSHPType == SHPT_ARCZ + || psObject->nSHPType == SHPT_MULTIPATCH ) + { + ByteCopy( &(psObject->dfZMin), pabyRec + nRecordSize, 8 ); + if( bBigEndian ) SwapWord( 8, pabyRec + nRecordSize ); + nRecordSize += 8; + + ByteCopy( &(psObject->dfZMax), pabyRec + nRecordSize, 8 ); + if( bBigEndian ) SwapWord( 8, pabyRec + nRecordSize ); + nRecordSize += 8; + + for( i = 0; i < psObject->nVertices; i++ ) + { + ByteCopy( psObject->padfZ + i, pabyRec + nRecordSize, 8 ); + if( bBigEndian ) SwapWord( 8, pabyRec + nRecordSize ); + nRecordSize += 8; + } + } + + /* + * Write the M values, if any. + */ + if( psObject->bMeasureIsUsed + && (psObject->nSHPType == SHPT_POLYGONM + || psObject->nSHPType == SHPT_ARCM +#ifndef DISABLE_MULTIPATCH_MEASURE + || psObject->nSHPType == SHPT_MULTIPATCH +#endif + || psObject->nSHPType == SHPT_POLYGONZ + || psObject->nSHPType == SHPT_ARCZ) ) + { + ByteCopy( &(psObject->dfMMin), pabyRec + nRecordSize, 8 ); + if( bBigEndian ) SwapWord( 8, pabyRec + nRecordSize ); + nRecordSize += 8; + + ByteCopy( &(psObject->dfMMax), pabyRec + nRecordSize, 8 ); + if( bBigEndian ) SwapWord( 8, pabyRec + nRecordSize ); + nRecordSize += 8; + + for( i = 0; i < psObject->nVertices; i++ ) + { + ByteCopy( psObject->padfM + i, pabyRec + nRecordSize, 8 ); + if( bBigEndian ) SwapWord( 8, pabyRec + nRecordSize ); + nRecordSize += 8; + } + } + } + +/* -------------------------------------------------------------------- */ +/* Extract vertices for a MultiPoint. */ +/* -------------------------------------------------------------------- */ + else if( psObject->nSHPType == SHPT_MULTIPOINT + || psObject->nSHPType == SHPT_MULTIPOINTZ + || psObject->nSHPType == SHPT_MULTIPOINTM ) + { + int32 nPoints; + + nPoints = psObject->nVertices; + + _SHPSetBounds( pabyRec + 12, psObject ); + + if( bBigEndian ) SwapWord( 4, &nPoints ); + ByteCopy( &nPoints, pabyRec + 44, 4 ); + + for( i = 0; i < psObject->nVertices; i++ ) + { + ByteCopy( psObject->padfX + i, pabyRec + 48 + i*16, 8 ); + ByteCopy( psObject->padfY + i, pabyRec + 48 + i*16 + 8, 8 ); + + if( bBigEndian ) SwapWord( 8, pabyRec + 48 + i*16 ); + if( bBigEndian ) SwapWord( 8, pabyRec + 48 + i*16 + 8 ); + } + + nRecordSize = 48 + 16 * psObject->nVertices; + + if( psObject->nSHPType == SHPT_MULTIPOINTZ ) + { + ByteCopy( &(psObject->dfZMin), pabyRec + nRecordSize, 8 ); + if( bBigEndian ) SwapWord( 8, pabyRec + nRecordSize ); + nRecordSize += 8; + + ByteCopy( &(psObject->dfZMax), pabyRec + nRecordSize, 8 ); + if( bBigEndian ) SwapWord( 8, pabyRec + nRecordSize ); + nRecordSize += 8; + + for( i = 0; i < psObject->nVertices; i++ ) + { + ByteCopy( psObject->padfZ + i, pabyRec + nRecordSize, 8 ); + if( bBigEndian ) SwapWord( 8, pabyRec + nRecordSize ); + nRecordSize += 8; + } + } + + if( psObject->bMeasureIsUsed + && (psObject->nSHPType == SHPT_MULTIPOINTZ + || psObject->nSHPType == SHPT_MULTIPOINTM) ) + { + ByteCopy( &(psObject->dfMMin), pabyRec + nRecordSize, 8 ); + if( bBigEndian ) SwapWord( 8, pabyRec + nRecordSize ); + nRecordSize += 8; + + ByteCopy( &(psObject->dfMMax), pabyRec + nRecordSize, 8 ); + if( bBigEndian ) SwapWord( 8, pabyRec + nRecordSize ); + nRecordSize += 8; + + for( i = 0; i < psObject->nVertices; i++ ) + { + ByteCopy( psObject->padfM + i, pabyRec + nRecordSize, 8 ); + if( bBigEndian ) SwapWord( 8, pabyRec + nRecordSize ); + nRecordSize += 8; + } + } + } + +/* -------------------------------------------------------------------- */ +/* Write point. */ +/* -------------------------------------------------------------------- */ + else if( psObject->nSHPType == SHPT_POINT + || psObject->nSHPType == SHPT_POINTZ + || psObject->nSHPType == SHPT_POINTM ) + { + ByteCopy( psObject->padfX, pabyRec + 12, 8 ); + ByteCopy( psObject->padfY, pabyRec + 20, 8 ); + + if( bBigEndian ) SwapWord( 8, pabyRec + 12 ); + if( bBigEndian ) SwapWord( 8, pabyRec + 20 ); + + nRecordSize = 28; + + if( psObject->nSHPType == SHPT_POINTZ ) + { + ByteCopy( psObject->padfZ, pabyRec + nRecordSize, 8 ); + if( bBigEndian ) SwapWord( 8, pabyRec + nRecordSize ); + nRecordSize += 8; + } + + if( psObject->bMeasureIsUsed + && (psObject->nSHPType == SHPT_POINTZ + || psObject->nSHPType == SHPT_POINTM) ) + { + ByteCopy( psObject->padfM, pabyRec + nRecordSize, 8 ); + if( bBigEndian ) SwapWord( 8, pabyRec + nRecordSize ); + nRecordSize += 8; + } + } + +/* -------------------------------------------------------------------- */ +/* Not much to do for null geometries. */ +/* -------------------------------------------------------------------- */ + else if( psObject->nSHPType == SHPT_NULL ) + { + nRecordSize = 12; + } + + else + { + /* unknown type */ + assert( FALSE ); + } + +/* -------------------------------------------------------------------- */ +/* Establish where we are going to put this record. If we are */ +/* rewriting the last record of the file, then we can update it in */ +/* place. Otherwise if rewriting an existing record, and it will */ +/* fit, then put it back where the original came from. Otherwise */ +/* write at the end. */ +/* -------------------------------------------------------------------- */ + if( nShapeId != -1 && psSHP->panRecOffset[nShapeId] + + psSHP->panRecSize[nShapeId] + 8 == psSHP->nFileSize ) + { + nRecordOffset = psSHP->panRecOffset[nShapeId]; + bAppendToLastRecord = TRUE; + } + else if( nShapeId == -1 || psSHP->panRecSize[nShapeId] < nRecordSize-8 ) + { + if( psSHP->nFileSize > UINT_MAX - nRecordSize) + { + char str[128]; + snprintf( str, sizeof(str), "Failed to write shape object. " + "File size cannot reach %u + %u.", + psSHP->nFileSize, nRecordSize ); + str[sizeof(str)-1] = '\0'; + psSHP->sHooks.Error( str ); + free( pabyRec ); + return -1; + } + + bAppendToFile = TRUE; + nRecordOffset = psSHP->nFileSize; + } + else + { + nRecordOffset = psSHP->panRecOffset[nShapeId]; + } + +/* -------------------------------------------------------------------- */ +/* Set the shape type, record number, and record size. */ +/* -------------------------------------------------------------------- */ + i32 = (nShapeId < 0) ? psSHP->nRecords+1 : nShapeId+1; /* record # */ + if( !bBigEndian ) SwapWord( 4, &i32 ); + ByteCopy( &i32, pabyRec, 4 ); + + i32 = (nRecordSize-8)/2; /* record size */ + if( !bBigEndian ) SwapWord( 4, &i32 ); + ByteCopy( &i32, pabyRec + 4, 4 ); + + i32 = psObject->nSHPType; /* shape type */ + if( bBigEndian ) SwapWord( 4, &i32 ); + ByteCopy( &i32, pabyRec + 8, 4 ); + +/* -------------------------------------------------------------------- */ +/* Write out record. */ +/* -------------------------------------------------------------------- */ + if( psSHP->sHooks.FSeek( psSHP->fpSHP, nRecordOffset, 0 ) != 0 ) + { + char szErrorMsg[200]; + + snprintf( szErrorMsg, sizeof(szErrorMsg), + "Error in psSHP->sHooks.FSeek() while writing object to .shp file: %s", + strerror(errno) ); + szErrorMsg[sizeof(szErrorMsg)-1] = '\0'; + psSHP->sHooks.Error( szErrorMsg ); + + free( pabyRec ); + return -1; + } + if( psSHP->sHooks.FWrite( pabyRec, nRecordSize, 1, psSHP->fpSHP ) < 1 ) + { + char szErrorMsg[200]; + + snprintf( szErrorMsg, sizeof(szErrorMsg), + "Error in psSHP->sHooks.FWrite() while writing object of %u bytes to .shp file: %s", + nRecordSize, strerror(errno) ); + szErrorMsg[sizeof(szErrorMsg)-1] = '\0'; + psSHP->sHooks.Error( szErrorMsg ); + + free( pabyRec ); + return -1; + } + + free( pabyRec ); + + if( bAppendToLastRecord ) + { + psSHP->nFileSize = psSHP->panRecOffset[nShapeId] + nRecordSize; + } + else if( bAppendToFile ) + { + if( nShapeId == -1 ) + nShapeId = psSHP->nRecords++; + + psSHP->panRecOffset[nShapeId] = psSHP->nFileSize; + psSHP->nFileSize += nRecordSize; + } + psSHP->panRecSize[nShapeId] = nRecordSize-8; + +/* -------------------------------------------------------------------- */ +/* Expand file wide bounds based on this shape. */ +/* -------------------------------------------------------------------- */ + if( psSHP->adBoundsMin[0] == 0.0 + && psSHP->adBoundsMax[0] == 0.0 + && psSHP->adBoundsMin[1] == 0.0 + && psSHP->adBoundsMax[1] == 0.0 ) + { + if( psObject->nSHPType == SHPT_NULL || psObject->nVertices == 0 ) + { + psSHP->adBoundsMin[0] = psSHP->adBoundsMax[0] = 0.0; + psSHP->adBoundsMin[1] = psSHP->adBoundsMax[1] = 0.0; + psSHP->adBoundsMin[2] = psSHP->adBoundsMax[2] = 0.0; + psSHP->adBoundsMin[3] = psSHP->adBoundsMax[3] = 0.0; + } + else + { + psSHP->adBoundsMin[0] = psSHP->adBoundsMax[0] = psObject->padfX[0]; + psSHP->adBoundsMin[1] = psSHP->adBoundsMax[1] = psObject->padfY[0]; + psSHP->adBoundsMin[2] = psSHP->adBoundsMax[2] = psObject->padfZ ? psObject->padfZ[0] : 0.0; + psSHP->adBoundsMin[3] = psSHP->adBoundsMax[3] = psObject->padfM ? psObject->padfM[0] : 0.0; + } + } + + for( i = 0; i < psObject->nVertices; i++ ) + { + psSHP->adBoundsMin[0] = MIN(psSHP->adBoundsMin[0],psObject->padfX[i]); + psSHP->adBoundsMin[1] = MIN(psSHP->adBoundsMin[1],psObject->padfY[i]); + psSHP->adBoundsMax[0] = MAX(psSHP->adBoundsMax[0],psObject->padfX[i]); + psSHP->adBoundsMax[1] = MAX(psSHP->adBoundsMax[1],psObject->padfY[i]); + if( psObject->padfZ ) + { + psSHP->adBoundsMin[2] = MIN(psSHP->adBoundsMin[2],psObject->padfZ[i]); + psSHP->adBoundsMax[2] = MAX(psSHP->adBoundsMax[2],psObject->padfZ[i]); + } + if( psObject->padfM ) + { + psSHP->adBoundsMin[3] = MIN(psSHP->adBoundsMin[3],psObject->padfM[i]); + psSHP->adBoundsMax[3] = MAX(psSHP->adBoundsMax[3],psObject->padfM[i]); + } + } + + return( nShapeId ); +} + +/************************************************************************/ +/* SHPAllocBuffer() */ +/************************************************************************/ + +static void* SHPAllocBuffer(unsigned char** pBuffer, int nSize) +{ + unsigned char* pRet; + + if( pBuffer == NULL ) + return calloc(1, nSize); + + pRet = *pBuffer; + if( pRet == NULL ) + return NULL; + + (*pBuffer) += nSize; + return pRet; +} + +/************************************************************************/ +/* SHPReallocObjectBufIfNecessary() */ +/************************************************************************/ + +static unsigned char* SHPReallocObjectBufIfNecessary ( SHPHandle psSHP, + int nObjectBufSize ) +{ + unsigned char* pBuffer; + if( nObjectBufSize == 0 ) + { + nObjectBufSize = 4 * sizeof(double); + } + if( nObjectBufSize > psSHP->nObjectBufSize ) + { + pBuffer = (unsigned char*) realloc( psSHP->pabyObjectBuf, nObjectBufSize ); + if( pBuffer != NULL ) + { + psSHP->pabyObjectBuf = pBuffer; + psSHP->nObjectBufSize = nObjectBufSize; + } + } + else + pBuffer = psSHP->pabyObjectBuf; + return pBuffer; +} + +/************************************************************************/ +/* SHPReadObject() */ +/* */ +/* Read the vertices, parts, and other non-attribute information */ +/* for one shape. */ +/************************************************************************/ + +SHPObject SHPAPI_CALL1(*) +SHPReadObject( SHPHandle psSHP, int hEntity ) + +{ + int nEntitySize, nRequiredSize; + SHPObject *psShape; + char szErrorMsg[128]; + int nSHPType; + int nBytesRead; + +/* -------------------------------------------------------------------- */ +/* Validate the record/entity number. */ +/* -------------------------------------------------------------------- */ + if( hEntity < 0 || hEntity >= psSHP->nRecords ) + return( NULL ); + +/* -------------------------------------------------------------------- */ +/* Read offset/length from SHX loading if necessary. */ +/* -------------------------------------------------------------------- */ + if( psSHP->panRecOffset[hEntity] == 0 && psSHP->fpSHX != NULL ) + { + unsigned int nOffset, nLength; + + if( psSHP->sHooks.FSeek( psSHP->fpSHX, 100 + 8 * hEntity, 0 ) != 0 || + psSHP->sHooks.FRead( &nOffset, 1, 4, psSHP->fpSHX ) != 4 || + psSHP->sHooks.FRead( &nLength, 1, 4, psSHP->fpSHX ) != 4 ) + { + char str[128]; + snprintf( str, sizeof(str), + "Error in fseek()/fread() reading object from .shx file at offset %d", + 100 + 8 * hEntity); + str[sizeof(str)-1] = '\0'; + + psSHP->sHooks.Error( str ); + return NULL; + } + if( !bBigEndian ) SwapWord( 4, &nOffset ); + if( !bBigEndian ) SwapWord( 4, &nLength ); + + if( nOffset > (unsigned int)INT_MAX ) + { + char str[128]; + snprintf( str, sizeof(str), + "Invalid offset for entity %d", hEntity); + str[sizeof(str)-1] = '\0'; + + psSHP->sHooks.Error( str ); + return NULL; + } + if( nLength > (unsigned int)(INT_MAX / 2 - 4) ) + { + char str[128]; + snprintf( str, sizeof(str), + "Invalid length for entity %d", hEntity); + str[sizeof(str)-1] = '\0'; + + psSHP->sHooks.Error( str ); + return NULL; + } + + psSHP->panRecOffset[hEntity] = nOffset*2; + psSHP->panRecSize[hEntity] = nLength*2; + } + +/* -------------------------------------------------------------------- */ +/* Ensure our record buffer is large enough. */ +/* -------------------------------------------------------------------- */ + nEntitySize = psSHP->panRecSize[hEntity]+8; + if( nEntitySize > psSHP->nBufSize ) + { + uchar* pabyRecNew; + int nNewBufSize = nEntitySize; + if( nNewBufSize < INT_MAX - nNewBufSize / 3 ) + nNewBufSize += nNewBufSize / 3; + else + nNewBufSize = INT_MAX; + + /* Before allocating too much memory, check that the file is big enough */ + /* and do not trust the file size in the header the first time we */ + /* need to allocate more than 10 MB */ + if( nNewBufSize >= 10 * 1024 * 1024 && + psSHP->nBufSize < 10 * 1024 * 1024 ) + { + SAOffset nFileSize; + psSHP->sHooks.FSeek( psSHP->fpSHP, 0, 2 ); + nFileSize = psSHP->sHooks.FTell(psSHP->fpSHP); + if( nFileSize >= UINT_MAX ) + psSHP->nFileSize = UINT_MAX; + else + psSHP->nFileSize = (unsigned int)nFileSize; + } + + if( psSHP->panRecOffset[hEntity] >= psSHP->nFileSize || + /* We should normally use nEntitySize instead of*/ + /* psSHP->panRecSize[hEntity] in the below test, but because of */ + /* the case of non conformant .shx files detailed a bit below, */ + /* let be more tolerant */ + psSHP->panRecSize[hEntity] > psSHP->nFileSize - psSHP->panRecOffset[hEntity] ) + { + char str[128]; + snprintf( str, sizeof(str), + "Error in fread() reading object of size %d at offset %u from .shp file", + nEntitySize, psSHP->panRecOffset[hEntity] ); + str[sizeof(str)-1] = '\0'; + + psSHP->sHooks.Error( str ); + return NULL; + } + + pabyRecNew = (uchar *) SfRealloc(psSHP->pabyRec,nNewBufSize); + if (pabyRecNew == NULL) + { + snprintf( szErrorMsg, sizeof(szErrorMsg), + "Not enough memory to allocate requested memory (nNewBufSize=%d). " + "Probably broken SHP file", nNewBufSize); + szErrorMsg[sizeof(szErrorMsg)-1] = '\0'; + psSHP->sHooks.Error( szErrorMsg ); + return NULL; + } + + /* Only set new buffer size after successful alloc */ + psSHP->pabyRec = pabyRecNew; + psSHP->nBufSize = nNewBufSize; + } + + /* In case we were not able to reallocate the buffer on a previous step */ + if (psSHP->pabyRec == NULL) + { + return NULL; + } + +/* -------------------------------------------------------------------- */ +/* Read the record. */ +/* -------------------------------------------------------------------- */ + if( psSHP->sHooks.FSeek( psSHP->fpSHP, psSHP->panRecOffset[hEntity], 0 ) != 0 ) + { + /* + * TODO - mloskot: Consider detailed diagnostics of shape file, + * for example to detect if file is truncated. + */ + char str[128]; + snprintf( str, sizeof(str), + "Error in fseek() reading object from .shp file at offset %u", + psSHP->panRecOffset[hEntity]); + str[sizeof(str)-1] = '\0'; + + psSHP->sHooks.Error( str ); + return NULL; + } + + nBytesRead = (int)psSHP->sHooks.FRead( psSHP->pabyRec, 1, nEntitySize, psSHP->fpSHP ); + + /* Special case for a shapefile whose .shx content length field is not equal */ + /* to the content length field of the .shp, which is a violation of "The */ + /* content length stored in the index record is the same as the value stored in the main */ + /* file record header." (http://www.esri.com/library/whitepapers/pdfs/shapefile.pdf, page 24) */ + /* Actually in that case the .shx content length is equal to the .shp content length + */ + /* 4 (16 bit words), representing the 8 bytes of the record header... */ + if( nBytesRead >= 8 && nBytesRead == nEntitySize - 8 ) + { + /* Do a sanity check */ + int nSHPContentLength; + memcpy( &nSHPContentLength, psSHP->pabyRec + 4, 4 ); + if( !bBigEndian ) SwapWord( 4, &(nSHPContentLength) ); + if( nSHPContentLength < 0 || + nSHPContentLength > INT_MAX / 2 - 4 || + 2 * nSHPContentLength + 8 != nBytesRead ) + { + char str[128]; + snprintf( str, sizeof(str), + "Sanity check failed when trying to recover from inconsistent .shx/.shp with shape %d", + hEntity ); + str[sizeof(str)-1] = '\0'; + + psSHP->sHooks.Error( str ); + return NULL; + } + } + else if( nBytesRead != nEntitySize ) + { + /* + * TODO - mloskot: Consider detailed diagnostics of shape file, + * for example to detect if file is truncated. + */ + char str[128]; + snprintf( str, sizeof(str), + "Error in fread() reading object of size %d at offset %u from .shp file", + nEntitySize, psSHP->panRecOffset[hEntity] ); + str[sizeof(str)-1] = '\0'; + + psSHP->sHooks.Error( str ); + return NULL; + } + + if ( 8 + 4 > nEntitySize ) + { + snprintf(szErrorMsg, sizeof(szErrorMsg), + "Corrupted .shp file : shape %d : nEntitySize = %d", + hEntity, nEntitySize); + szErrorMsg[sizeof(szErrorMsg)-1] = '\0'; + psSHP->sHooks.Error( szErrorMsg ); + return NULL; + } + memcpy( &nSHPType, psSHP->pabyRec + 8, 4 ); + + if( bBigEndian ) SwapWord( 4, &(nSHPType) ); + +/* -------------------------------------------------------------------- */ +/* Allocate and minimally initialize the object. */ +/* -------------------------------------------------------------------- */ + if( psSHP->bFastModeReadObject ) + { + if( psSHP->psCachedObject->bFastModeReadObject ) + { + psSHP->sHooks.Error( "Invalid read pattern in fast read mode. " + "SHPDestroyObject() should be called." ); + return NULL; + } + + psShape = psSHP->psCachedObject; + memset(psShape, 0, sizeof(SHPObject)); + } + else + psShape = (SHPObject *) calloc(1,sizeof(SHPObject)); + psShape->nShapeId = hEntity; + psShape->nSHPType = nSHPType; + psShape->bMeasureIsUsed = FALSE; + psShape->bFastModeReadObject = psSHP->bFastModeReadObject; + +/* ==================================================================== */ +/* Extract vertices for a Polygon or Arc. */ +/* ==================================================================== */ + if( psShape->nSHPType == SHPT_POLYGON || psShape->nSHPType == SHPT_ARC + || psShape->nSHPType == SHPT_POLYGONZ + || psShape->nSHPType == SHPT_POLYGONM + || psShape->nSHPType == SHPT_ARCZ + || psShape->nSHPType == SHPT_ARCM + || psShape->nSHPType == SHPT_MULTIPATCH ) + { + int32 nPoints, nParts; + int i, nOffset; + unsigned char* pBuffer = NULL; + unsigned char** ppBuffer = NULL; + + if ( 40 + 8 + 4 > nEntitySize ) + { + snprintf(szErrorMsg, sizeof(szErrorMsg), + "Corrupted .shp file : shape %d : nEntitySize = %d", + hEntity, nEntitySize); + szErrorMsg[sizeof(szErrorMsg)-1] = '\0'; + psSHP->sHooks.Error( szErrorMsg ); + SHPDestroyObject(psShape); + return NULL; + } +/* -------------------------------------------------------------------- */ +/* Get the X/Y bounds. */ +/* -------------------------------------------------------------------- */ + memcpy( &(psShape->dfXMin), psSHP->pabyRec + 8 + 4, 8 ); + memcpy( &(psShape->dfYMin), psSHP->pabyRec + 8 + 12, 8 ); + memcpy( &(psShape->dfXMax), psSHP->pabyRec + 8 + 20, 8 ); + memcpy( &(psShape->dfYMax), psSHP->pabyRec + 8 + 28, 8 ); + + if( bBigEndian ) SwapWord( 8, &(psShape->dfXMin) ); + if( bBigEndian ) SwapWord( 8, &(psShape->dfYMin) ); + if( bBigEndian ) SwapWord( 8, &(psShape->dfXMax) ); + if( bBigEndian ) SwapWord( 8, &(psShape->dfYMax) ); + +/* -------------------------------------------------------------------- */ +/* Extract part/point count, and build vertex and part arrays */ +/* to proper size. */ +/* -------------------------------------------------------------------- */ + memcpy( &nPoints, psSHP->pabyRec + 40 + 8, 4 ); + memcpy( &nParts, psSHP->pabyRec + 36 + 8, 4 ); + + if( bBigEndian ) SwapWord( 4, &nPoints ); + if( bBigEndian ) SwapWord( 4, &nParts ); + + /* nPoints and nParts are unsigned */ + if (/* nPoints < 0 || nParts < 0 || */ + nPoints > 50 * 1000 * 1000 || nParts > 10 * 1000 * 1000) + { + snprintf(szErrorMsg, sizeof(szErrorMsg), + "Corrupted .shp file : shape %d, nPoints=%u, nParts=%u.", + hEntity, nPoints, nParts); + szErrorMsg[sizeof(szErrorMsg)-1] = '\0'; + psSHP->sHooks.Error( szErrorMsg ); + SHPDestroyObject(psShape); + return NULL; + } + + /* With the previous checks on nPoints and nParts, */ + /* we should not overflow here and after */ + /* since 50 M * (16 + 8 + 8) = 1 600 MB */ + nRequiredSize = 44 + 8 + 4 * nParts + 16 * nPoints; + if ( psShape->nSHPType == SHPT_POLYGONZ + || psShape->nSHPType == SHPT_ARCZ + || psShape->nSHPType == SHPT_MULTIPATCH ) + { + nRequiredSize += 16 + 8 * nPoints; + } + if( psShape->nSHPType == SHPT_MULTIPATCH ) + { + nRequiredSize += 4 * nParts; + } + if (nRequiredSize > nEntitySize) + { + snprintf(szErrorMsg, sizeof(szErrorMsg), + "Corrupted .shp file : shape %d, nPoints=%u, nParts=%u, nEntitySize=%d.", + hEntity, nPoints, nParts, nEntitySize); + szErrorMsg[sizeof(szErrorMsg)-1] = '\0'; + psSHP->sHooks.Error( szErrorMsg ); + SHPDestroyObject(psShape); + return NULL; + } + + if( psShape->bFastModeReadObject ) + { + int nObjectBufSize = 4 * sizeof(double) * nPoints + 2 * sizeof(int) * nParts; + pBuffer = SHPReallocObjectBufIfNecessary(psSHP, nObjectBufSize); + ppBuffer = &pBuffer; + } + + psShape->nVertices = nPoints; + psShape->padfX = (double *) SHPAllocBuffer(ppBuffer, sizeof(double) * nPoints); + psShape->padfY = (double *) SHPAllocBuffer(ppBuffer, sizeof(double) * nPoints); + psShape->padfZ = (double *) SHPAllocBuffer(ppBuffer, sizeof(double) * nPoints); + psShape->padfM = (double *) SHPAllocBuffer(ppBuffer, sizeof(double) * nPoints); + + psShape->nParts = nParts; + psShape->panPartStart = (int *) SHPAllocBuffer(ppBuffer, nParts * sizeof(int)); + psShape->panPartType = (int *) SHPAllocBuffer(ppBuffer, nParts * sizeof(int)); + + if (psShape->padfX == NULL || + psShape->padfY == NULL || + psShape->padfZ == NULL || + psShape->padfM == NULL || + psShape->panPartStart == NULL || + psShape->panPartType == NULL) + { + snprintf(szErrorMsg, sizeof(szErrorMsg), + "Not enough memory to allocate requested memory (nPoints=%u, nParts=%u) for shape %d. " + "Probably broken SHP file", nPoints, nParts, hEntity ); + szErrorMsg[sizeof(szErrorMsg)-1] = '\0'; + psSHP->sHooks.Error( szErrorMsg ); + SHPDestroyObject(psShape); + return NULL; + } + + for( i = 0; (int32)i < nParts; i++ ) + psShape->panPartType[i] = SHPP_RING; + +/* -------------------------------------------------------------------- */ +/* Copy out the part array from the record. */ +/* -------------------------------------------------------------------- */ + memcpy( psShape->panPartStart, psSHP->pabyRec + 44 + 8, 4 * nParts ); + for( i = 0; (int32)i < nParts; i++ ) + { + if( bBigEndian ) SwapWord( 4, psShape->panPartStart+i ); + + /* We check that the offset is inside the vertex array */ + if (psShape->panPartStart[i] < 0 + || (psShape->panPartStart[i] >= psShape->nVertices + && psShape->nVertices > 0) + || (psShape->panPartStart[i] > 0 && psShape->nVertices == 0) ) + { + snprintf(szErrorMsg, sizeof(szErrorMsg), + "Corrupted .shp file : shape %d : panPartStart[%d] = %d, nVertices = %d", + hEntity, i, psShape->panPartStart[i], psShape->nVertices); + szErrorMsg[sizeof(szErrorMsg)-1] = '\0'; + psSHP->sHooks.Error( szErrorMsg ); + SHPDestroyObject(psShape); + return NULL; + } + if (i > 0 && psShape->panPartStart[i] <= psShape->panPartStart[i-1]) + { + snprintf(szErrorMsg, sizeof(szErrorMsg), + "Corrupted .shp file : shape %d : panPartStart[%d] = %d, panPartStart[%d] = %d", + hEntity, i, psShape->panPartStart[i], i - 1, psShape->panPartStart[i - 1]); + szErrorMsg[sizeof(szErrorMsg)-1] = '\0'; + psSHP->sHooks.Error( szErrorMsg ); + SHPDestroyObject(psShape); + return NULL; + } + } + + nOffset = 44 + 8 + 4*nParts; + +/* -------------------------------------------------------------------- */ +/* If this is a multipatch, we will also have parts types. */ +/* -------------------------------------------------------------------- */ + if( psShape->nSHPType == SHPT_MULTIPATCH ) + { + memcpy( psShape->panPartType, psSHP->pabyRec + nOffset, 4*nParts ); + for( i = 0; (int32)i < nParts; i++ ) + { + if( bBigEndian ) SwapWord( 4, psShape->panPartType+i ); + } + + nOffset += 4*nParts; + } + +/* -------------------------------------------------------------------- */ +/* Copy out the vertices from the record. */ +/* -------------------------------------------------------------------- */ + for( i = 0; (int32)i < nPoints; i++ ) + { + memcpy(psShape->padfX + i, + psSHP->pabyRec + nOffset + i * 16, + 8 ); + + memcpy(psShape->padfY + i, + psSHP->pabyRec + nOffset + i * 16 + 8, + 8 ); + + if( bBigEndian ) SwapWord( 8, psShape->padfX + i ); + if( bBigEndian ) SwapWord( 8, psShape->padfY + i ); + } + + nOffset += 16*nPoints; + +/* -------------------------------------------------------------------- */ +/* If we have a Z coordinate, collect that now. */ +/* -------------------------------------------------------------------- */ + if( psShape->nSHPType == SHPT_POLYGONZ + || psShape->nSHPType == SHPT_ARCZ + || psShape->nSHPType == SHPT_MULTIPATCH ) + { + memcpy( &(psShape->dfZMin), psSHP->pabyRec + nOffset, 8 ); + memcpy( &(psShape->dfZMax), psSHP->pabyRec + nOffset + 8, 8 ); + + if( bBigEndian ) SwapWord( 8, &(psShape->dfZMin) ); + if( bBigEndian ) SwapWord( 8, &(psShape->dfZMax) ); + + for( i = 0; (int32)i < nPoints; i++ ) + { + memcpy( psShape->padfZ + i, + psSHP->pabyRec + nOffset + 16 + i*8, 8 ); + if( bBigEndian ) SwapWord( 8, psShape->padfZ + i ); + } + + nOffset += 16 + 8*nPoints; + } + else if( psShape->bFastModeReadObject ) + { + psShape->padfZ = NULL; + } + +/* -------------------------------------------------------------------- */ +/* If we have a M measure value, then read it now. We assume */ +/* that the measure can be present for any shape if the size is */ +/* big enough, but really it will only occur for the Z shapes */ +/* (options), and the M shapes. */ +/* -------------------------------------------------------------------- */ + if( nEntitySize >= (int)(nOffset + 16 + 8*nPoints) ) + { + memcpy( &(psShape->dfMMin), psSHP->pabyRec + nOffset, 8 ); + memcpy( &(psShape->dfMMax), psSHP->pabyRec + nOffset + 8, 8 ); + + if( bBigEndian ) SwapWord( 8, &(psShape->dfMMin) ); + if( bBigEndian ) SwapWord( 8, &(psShape->dfMMax) ); + + for( i = 0; (int32)i < nPoints; i++ ) + { + memcpy( psShape->padfM + i, + psSHP->pabyRec + nOffset + 16 + i*8, 8 ); + if( bBigEndian ) SwapWord( 8, psShape->padfM + i ); + } + psShape->bMeasureIsUsed = TRUE; + } + else if( psShape->bFastModeReadObject ) + { + psShape->padfM = NULL; + } + } + +/* ==================================================================== */ +/* Extract vertices for a MultiPoint. */ +/* ==================================================================== */ + else if( psShape->nSHPType == SHPT_MULTIPOINT + || psShape->nSHPType == SHPT_MULTIPOINTM + || psShape->nSHPType == SHPT_MULTIPOINTZ ) + { + int32 nPoints; + int i, nOffset; + unsigned char* pBuffer = NULL; + unsigned char** ppBuffer = NULL; + + if ( 44 + 4 > nEntitySize ) + { + snprintf(szErrorMsg, sizeof(szErrorMsg), + "Corrupted .shp file : shape %d : nEntitySize = %d", + hEntity, nEntitySize); + szErrorMsg[sizeof(szErrorMsg)-1] = '\0'; + psSHP->sHooks.Error( szErrorMsg ); + SHPDestroyObject(psShape); + return NULL; + } + memcpy( &nPoints, psSHP->pabyRec + 44, 4 ); + + if( bBigEndian ) SwapWord( 4, &nPoints ); + + /* nPoints is unsigned */ + if (/* nPoints < 0 || */ nPoints > 50 * 1000 * 1000) + { + snprintf(szErrorMsg, sizeof(szErrorMsg), + "Corrupted .shp file : shape %d : nPoints = %u", + hEntity, nPoints); + szErrorMsg[sizeof(szErrorMsg)-1] = '\0'; + psSHP->sHooks.Error( szErrorMsg ); + SHPDestroyObject(psShape); + return NULL; + } + + nRequiredSize = 48 + nPoints * 16; + if( psShape->nSHPType == SHPT_MULTIPOINTZ ) + { + nRequiredSize += 16 + nPoints * 8; + } + if (nRequiredSize > nEntitySize) + { + snprintf(szErrorMsg, sizeof(szErrorMsg), + "Corrupted .shp file : shape %d : nPoints = %u, nEntitySize = %d", + hEntity, nPoints, nEntitySize); + szErrorMsg[sizeof(szErrorMsg)-1] = '\0'; + psSHP->sHooks.Error( szErrorMsg ); + SHPDestroyObject(psShape); + return NULL; + } + + if( psShape->bFastModeReadObject ) + { + int nObjectBufSize = 4 * sizeof(double) * nPoints; + pBuffer = SHPReallocObjectBufIfNecessary(psSHP, nObjectBufSize); + ppBuffer = &pBuffer; + } + + psShape->nVertices = nPoints; + + psShape->padfX = (double *) SHPAllocBuffer(ppBuffer, sizeof(double) * nPoints); + psShape->padfY = (double *) SHPAllocBuffer(ppBuffer, sizeof(double) * nPoints); + psShape->padfZ = (double *) SHPAllocBuffer(ppBuffer, sizeof(double) * nPoints); + psShape->padfM = (double *) SHPAllocBuffer(ppBuffer, sizeof(double) * nPoints); + + if (psShape->padfX == NULL || + psShape->padfY == NULL || + psShape->padfZ == NULL || + psShape->padfM == NULL) + { + snprintf(szErrorMsg, sizeof(szErrorMsg), + "Not enough memory to allocate requested memory (nPoints=%u) for shape %d. " + "Probably broken SHP file", nPoints, hEntity ); + szErrorMsg[sizeof(szErrorMsg)-1] = '\0'; + psSHP->sHooks.Error( szErrorMsg ); + SHPDestroyObject(psShape); + return NULL; + } + + for( i = 0; (int32)i < nPoints; i++ ) + { + memcpy(psShape->padfX+i, psSHP->pabyRec + 48 + 16 * i, 8 ); + memcpy(psShape->padfY+i, psSHP->pabyRec + 48 + 16 * i + 8, 8 ); + + if( bBigEndian ) SwapWord( 8, psShape->padfX + i ); + if( bBigEndian ) SwapWord( 8, psShape->padfY + i ); + } + + nOffset = 48 + 16*nPoints; + +/* -------------------------------------------------------------------- */ +/* Get the X/Y bounds. */ +/* -------------------------------------------------------------------- */ + memcpy( &(psShape->dfXMin), psSHP->pabyRec + 8 + 4, 8 ); + memcpy( &(psShape->dfYMin), psSHP->pabyRec + 8 + 12, 8 ); + memcpy( &(psShape->dfXMax), psSHP->pabyRec + 8 + 20, 8 ); + memcpy( &(psShape->dfYMax), psSHP->pabyRec + 8 + 28, 8 ); + + if( bBigEndian ) SwapWord( 8, &(psShape->dfXMin) ); + if( bBigEndian ) SwapWord( 8, &(psShape->dfYMin) ); + if( bBigEndian ) SwapWord( 8, &(psShape->dfXMax) ); + if( bBigEndian ) SwapWord( 8, &(psShape->dfYMax) ); + +/* -------------------------------------------------------------------- */ +/* If we have a Z coordinate, collect that now. */ +/* -------------------------------------------------------------------- */ + if( psShape->nSHPType == SHPT_MULTIPOINTZ ) + { + memcpy( &(psShape->dfZMin), psSHP->pabyRec + nOffset, 8 ); + memcpy( &(psShape->dfZMax), psSHP->pabyRec + nOffset + 8, 8 ); + + if( bBigEndian ) SwapWord( 8, &(psShape->dfZMin) ); + if( bBigEndian ) SwapWord( 8, &(psShape->dfZMax) ); + + for( i = 0; (int32)i < nPoints; i++ ) + { + memcpy( psShape->padfZ + i, + psSHP->pabyRec + nOffset + 16 + i*8, 8 ); + if( bBigEndian ) SwapWord( 8, psShape->padfZ + i ); + } + + nOffset += 16 + 8*nPoints; + } + else if( psShape->bFastModeReadObject ) + psShape->padfZ = NULL; + +/* -------------------------------------------------------------------- */ +/* If we have a M measure value, then read it now. We assume */ +/* that the measure can be present for any shape if the size is */ +/* big enough, but really it will only occur for the Z shapes */ +/* (options), and the M shapes. */ +/* -------------------------------------------------------------------- */ + if( nEntitySize >= (int)(nOffset + 16 + 8*nPoints) ) + { + memcpy( &(psShape->dfMMin), psSHP->pabyRec + nOffset, 8 ); + memcpy( &(psShape->dfMMax), psSHP->pabyRec + nOffset + 8, 8 ); + + if( bBigEndian ) SwapWord( 8, &(psShape->dfMMin) ); + if( bBigEndian ) SwapWord( 8, &(psShape->dfMMax) ); + + for( i = 0; (int32)i < nPoints; i++ ) + { + memcpy( psShape->padfM + i, + psSHP->pabyRec + nOffset + 16 + i*8, 8 ); + if( bBigEndian ) SwapWord( 8, psShape->padfM + i ); + } + psShape->bMeasureIsUsed = TRUE; + } + else if( psShape->bFastModeReadObject ) + psShape->padfM = NULL; + } + +/* ==================================================================== */ +/* Extract vertices for a point. */ +/* ==================================================================== */ + else if( psShape->nSHPType == SHPT_POINT + || psShape->nSHPType == SHPT_POINTM + || psShape->nSHPType == SHPT_POINTZ ) + { + int nOffset; + + psShape->nVertices = 1; + if( psShape->bFastModeReadObject ) + { + psShape->padfX = &(psShape->dfXMin); + psShape->padfY = &(psShape->dfYMin); + psShape->padfZ = &(psShape->dfZMin); + psShape->padfM = &(psShape->dfMMin); + psShape->padfZ[0] = 0.0; + psShape->padfM[0] = 0.0; + } + else + { + psShape->padfX = (double *) calloc(1,sizeof(double)); + psShape->padfY = (double *) calloc(1,sizeof(double)); + psShape->padfZ = (double *) calloc(1,sizeof(double)); + psShape->padfM = (double *) calloc(1,sizeof(double)); + } + + if (20 + 8 + (( psShape->nSHPType == SHPT_POINTZ ) ? 8 : 0)> nEntitySize) + { + snprintf(szErrorMsg, sizeof(szErrorMsg), + "Corrupted .shp file : shape %d : nEntitySize = %d", + hEntity, nEntitySize); + szErrorMsg[sizeof(szErrorMsg)-1] = '\0'; + psSHP->sHooks.Error( szErrorMsg ); + SHPDestroyObject(psShape); + return NULL; + } + memcpy( psShape->padfX, psSHP->pabyRec + 12, 8 ); + memcpy( psShape->padfY, psSHP->pabyRec + 20, 8 ); + + if( bBigEndian ) SwapWord( 8, psShape->padfX ); + if( bBigEndian ) SwapWord( 8, psShape->padfY ); + + nOffset = 20 + 8; + +/* -------------------------------------------------------------------- */ +/* If we have a Z coordinate, collect that now. */ +/* -------------------------------------------------------------------- */ + if( psShape->nSHPType == SHPT_POINTZ ) + { + memcpy( psShape->padfZ, psSHP->pabyRec + nOffset, 8 ); + + if( bBigEndian ) SwapWord( 8, psShape->padfZ ); + + nOffset += 8; + } + +/* -------------------------------------------------------------------- */ +/* If we have a M measure value, then read it now. We assume */ +/* that the measure can be present for any shape if the size is */ +/* big enough, but really it will only occur for the Z shapes */ +/* (options), and the M shapes. */ +/* -------------------------------------------------------------------- */ + if( nEntitySize >= nOffset + 8 ) + { + memcpy( psShape->padfM, psSHP->pabyRec + nOffset, 8 ); + + if( bBigEndian ) SwapWord( 8, psShape->padfM ); + psShape->bMeasureIsUsed = TRUE; + } + +/* -------------------------------------------------------------------- */ +/* Since no extents are supplied in the record, we will apply */ +/* them from the single vertex. */ +/* -------------------------------------------------------------------- */ + psShape->dfXMin = psShape->dfXMax = psShape->padfX[0]; + psShape->dfYMin = psShape->dfYMax = psShape->padfY[0]; + psShape->dfZMin = psShape->dfZMax = psShape->padfZ[0]; + psShape->dfMMin = psShape->dfMMax = psShape->padfM[0]; + } + + return( psShape ); +} + +/************************************************************************/ +/* SHPTypeName() */ +/************************************************************************/ + +const char SHPAPI_CALL1(*) +SHPTypeName( int nSHPType ) + +{ + switch( nSHPType ) + { + case SHPT_NULL: + return "NullShape"; + + case SHPT_POINT: + return "Point"; + + case SHPT_ARC: + return "Arc"; + + case SHPT_POLYGON: + return "Polygon"; + + case SHPT_MULTIPOINT: + return "MultiPoint"; + + case SHPT_POINTZ: + return "PointZ"; + + case SHPT_ARCZ: + return "ArcZ"; + + case SHPT_POLYGONZ: + return "PolygonZ"; + + case SHPT_MULTIPOINTZ: + return "MultiPointZ"; + + case SHPT_POINTM: + return "PointM"; + + case SHPT_ARCM: + return "ArcM"; + + case SHPT_POLYGONM: + return "PolygonM"; + + case SHPT_MULTIPOINTM: + return "MultiPointM"; + + case SHPT_MULTIPATCH: + return "MultiPatch"; + + default: + return "UnknownShapeType"; + } +} + +/************************************************************************/ +/* SHPPartTypeName() */ +/************************************************************************/ + +const char SHPAPI_CALL1(*) +SHPPartTypeName( int nPartType ) + +{ + switch( nPartType ) + { + case SHPP_TRISTRIP: + return "TriangleStrip"; + + case SHPP_TRIFAN: + return "TriangleFan"; + + case SHPP_OUTERRING: + return "OuterRing"; + + case SHPP_INNERRING: + return "InnerRing"; + + case SHPP_FIRSTRING: + return "FirstRing"; + + case SHPP_RING: + return "Ring"; + + default: + return "UnknownPartType"; + } +} + +/************************************************************************/ +/* SHPDestroyObject() */ +/************************************************************************/ + +void SHPAPI_CALL +SHPDestroyObject( SHPObject * psShape ) + +{ + if( psShape == NULL ) + return; + + if( psShape->bFastModeReadObject ) + { + psShape->bFastModeReadObject = FALSE; + return; + } + + if( psShape->padfX != NULL ) + free( psShape->padfX ); + if( psShape->padfY != NULL ) + free( psShape->padfY ); + if( psShape->padfZ != NULL ) + free( psShape->padfZ ); + if( psShape->padfM != NULL ) + free( psShape->padfM ); + + if( psShape->panPartStart != NULL ) + free( psShape->panPartStart ); + if( psShape->panPartType != NULL ) + free( psShape->panPartType ); + + free( psShape ); +} + +/************************************************************************/ +/* SHPRewindObject() */ +/* */ +/* Reset the winding of polygon objects to adhere to the */ +/* specification. */ +/************************************************************************/ + +int SHPAPI_CALL +SHPRewindObject( CPL_UNUSED SHPHandle hSHP, + SHPObject * psObject ) +{ + int iOpRing, bAltered = 0; + +/* -------------------------------------------------------------------- */ +/* Do nothing if this is not a polygon object. */ +/* -------------------------------------------------------------------- */ + if( psObject->nSHPType != SHPT_POLYGON + && psObject->nSHPType != SHPT_POLYGONZ + && psObject->nSHPType != SHPT_POLYGONM ) + return 0; + + if( psObject->nVertices == 0 || psObject->nParts == 0 ) + return 0; + +/* -------------------------------------------------------------------- */ +/* Process each of the rings. */ +/* -------------------------------------------------------------------- */ + for( iOpRing = 0; iOpRing < psObject->nParts; iOpRing++ ) + { + int bInner, iVert, nVertCount, nVertStart, iCheckRing; + double dfSum, dfTestX, dfTestY; + +/* -------------------------------------------------------------------- */ +/* Determine if this ring is an inner ring or an outer ring */ +/* relative to all the other rings. For now we assume the */ +/* first ring is outer and all others are inner, but eventually */ +/* we need to fix this to handle multiple island polygons and */ +/* unordered sets of rings. */ +/* */ +/* -------------------------------------------------------------------- */ + + /* Use point in the middle of segment to avoid testing + * common points of rings. + */ + dfTestX = ( psObject->padfX[psObject->panPartStart[iOpRing]] + + psObject->padfX[psObject->panPartStart[iOpRing] + 1] ) / 2; + dfTestY = ( psObject->padfY[psObject->panPartStart[iOpRing]] + + psObject->padfY[psObject->panPartStart[iOpRing] + 1] ) / 2; + + bInner = FALSE; + for( iCheckRing = 0; iCheckRing < psObject->nParts; iCheckRing++ ) + { + int iEdge; + + if( iCheckRing == iOpRing ) + continue; + + nVertStart = psObject->panPartStart[iCheckRing]; + + if( iCheckRing == psObject->nParts-1 ) + nVertCount = psObject->nVertices + - psObject->panPartStart[iCheckRing]; + else + nVertCount = psObject->panPartStart[iCheckRing+1] + - psObject->panPartStart[iCheckRing]; + + for( iEdge = 0; iEdge < nVertCount; iEdge++ ) + { + int iNext; + + if( iEdge < nVertCount-1 ) + iNext = iEdge+1; + else + iNext = 0; + + /* Rule #1: + * Test whether the edge 'straddles' the horizontal ray from the test point (dfTestY,dfTestY) + * The rule #1 also excludes edges colinear with the ray. + */ + if ( ( psObject->padfY[iEdge+nVertStart] < dfTestY + && dfTestY <= psObject->padfY[iNext+nVertStart] ) + || ( psObject->padfY[iNext+nVertStart] < dfTestY + && dfTestY <= psObject->padfY[iEdge+nVertStart] ) ) + { + /* Rule #2: + * Test if edge-ray intersection is on the right from the test point (dfTestY,dfTestY) + */ + double const intersect = + ( psObject->padfX[iEdge+nVertStart] + + ( dfTestY - psObject->padfY[iEdge+nVertStart] ) + / ( psObject->padfY[iNext+nVertStart] - psObject->padfY[iEdge+nVertStart] ) + * ( psObject->padfX[iNext+nVertStart] - psObject->padfX[iEdge+nVertStart] ) ); + + if (intersect < dfTestX) + { + bInner = !bInner; + } + } + } + } /* for iCheckRing */ + +/* -------------------------------------------------------------------- */ +/* Determine the current order of this ring so we will know if */ +/* it has to be reversed. */ +/* -------------------------------------------------------------------- */ + nVertStart = psObject->panPartStart[iOpRing]; + + if( iOpRing == psObject->nParts-1 ) + nVertCount = psObject->nVertices - psObject->panPartStart[iOpRing]; + else + nVertCount = psObject->panPartStart[iOpRing+1] + - psObject->panPartStart[iOpRing]; + + if (nVertCount < 2) + continue; + + dfSum = psObject->padfX[nVertStart] * (psObject->padfY[nVertStart+1] - psObject->padfY[nVertStart+nVertCount-1]); + for( iVert = nVertStart + 1; iVert < nVertStart+nVertCount-1; iVert++ ) + { + dfSum += psObject->padfX[iVert] * (psObject->padfY[iVert+1] - psObject->padfY[iVert-1]); + } + + dfSum += psObject->padfX[iVert] * (psObject->padfY[nVertStart] - psObject->padfY[iVert-1]); + +/* -------------------------------------------------------------------- */ +/* Reverse if necessary. */ +/* -------------------------------------------------------------------- */ + if( (dfSum < 0.0 && bInner) || (dfSum > 0.0 && !bInner) ) + { + int i; + + bAltered++; + for( i = 0; i < nVertCount/2; i++ ) + { + double dfSaved; + + /* Swap X */ + dfSaved = psObject->padfX[nVertStart+i]; + psObject->padfX[nVertStart+i] = + psObject->padfX[nVertStart+nVertCount-i-1]; + psObject->padfX[nVertStart+nVertCount-i-1] = dfSaved; + + /* Swap Y */ + dfSaved = psObject->padfY[nVertStart+i]; + psObject->padfY[nVertStart+i] = + psObject->padfY[nVertStart+nVertCount-i-1]; + psObject->padfY[nVertStart+nVertCount-i-1] = dfSaved; + + /* Swap Z */ + if( psObject->padfZ ) + { + dfSaved = psObject->padfZ[nVertStart+i]; + psObject->padfZ[nVertStart+i] = + psObject->padfZ[nVertStart+nVertCount-i-1]; + psObject->padfZ[nVertStart+nVertCount-i-1] = dfSaved; + } + + /* Swap M */ + if( psObject->padfM ) + { + dfSaved = psObject->padfM[nVertStart+i]; + psObject->padfM[nVertStart+i] = + psObject->padfM[nVertStart+nVertCount-i-1]; + psObject->padfM[nVertStart+nVertCount-i-1] = dfSaved; + } + } + } + } + + return bAltered; +} diff --git a/libs/shapelib/shprewind.c b/libs/shapelib/shprewind.c new file mode 100644 index 0000000..20acc01 --- /dev/null +++ b/libs/shapelib/shprewind.c @@ -0,0 +1,121 @@ +/****************************************************************************** + * $Id: shprewind.c,v 1.5 2016-12-05 12:44:05 erouault Exp $ + * + * Project: Shapelib + * Purpose: Utility to validate and reset the winding order of rings in + * polygon geometries to match the ordering required by spec. + * Author: Frank Warmerdam, warmerdam@pobox.com + * + ****************************************************************************** + * Copyright (c) 2002, Frank Warmerdam + * + * This software is available under the following "MIT Style" license, + * or at the option of the licensee under the LGPL (see COPYING). This + * option is discussed in more detail in shapelib.html. + * + * -- + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included + * in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS + * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. + ****************************************************************************** + * + * $Log: shprewind.c,v $ + * Revision 1.5 2016-12-05 12:44:05 erouault + * * Major overhaul of Makefile build system to use autoconf/automake. + * + * * Warning fixes in contrib/ + * + * Revision 1.4 2004-09-26 20:09:35 fwarmerdam + * avoid rcsid warnings + * + * Revision 1.3 2004/01/09 16:39:49 fwarmerdam + * include standard include files + * + * Revision 1.2 2002/04/10 17:23:11 warmerda + * copy from source to destination now + * + * Revision 1.1 2002/04/10 16:56:36 warmerda + * New + * + */ + +#include +#include +#include "shapefil.h" + +int main( int argc, char ** argv ) + +{ + SHPHandle hSHP, hSHPOut; + int nShapeType, nEntities, i, nInvalidCount=0; + double adfMinBound[4], adfMaxBound[4]; + +/* -------------------------------------------------------------------- */ +/* Display a usage message. */ +/* -------------------------------------------------------------------- */ + if( argc != 3 ) + { + printf( "shprewind in_shp_file out_shp_file\n" ); + exit( 1 ); + } + +/* -------------------------------------------------------------------- */ +/* Open the passed shapefile. */ +/* -------------------------------------------------------------------- */ + hSHP = SHPOpen( argv[1], "rb" ); + + if( hSHP == NULL ) + { + printf( "Unable to open:%s\n", argv[1] ); + exit( 1 ); + } + + SHPGetInfo( hSHP, &nEntities, &nShapeType, adfMinBound, adfMaxBound ); + +/* -------------------------------------------------------------------- */ +/* Create output shapefile. */ +/* -------------------------------------------------------------------- */ + hSHPOut = SHPCreate( argv[2], nShapeType ); + + if( hSHPOut == NULL ) + { + printf( "Unable to create:%s\n", argv[2] ); + exit( 1 ); + } + +/* -------------------------------------------------------------------- */ +/* Skim over the list of shapes, printing all the vertices. */ +/* -------------------------------------------------------------------- */ + for( i = 0; i < nEntities; i++ ) + { + SHPObject *psShape; + + psShape = SHPReadObject( hSHP, i ); + if( SHPRewindObject( hSHP, psShape ) ) + nInvalidCount++; + SHPWriteObject( hSHPOut, -1, psShape ); + SHPDestroyObject( psShape ); + } + + SHPClose( hSHP ); + SHPClose( hSHPOut ); + + printf( "%d objects rewound.\n", nInvalidCount ); + + exit( 0 ); +} diff --git a/libs/shapelib/shptest.c b/libs/shapelib/shptest.c new file mode 100644 index 0000000..f600867 --- /dev/null +++ b/libs/shapelib/shptest.c @@ -0,0 +1,314 @@ +/****************************************************************************** + * $Id: shptest.c,v 1.8 2016-12-05 12:44:06 erouault Exp $ + * + * Project: Shapelib + * Purpose: Application for generating sample Shapefiles of various types. + * Used by the stream2.sh test script. + * Author: Frank Warmerdam, warmerdam@pobox.com + * + ****************************************************************************** + * Copyright (c) 1999, Frank Warmerdam + * + * This software is available under the following "MIT Style" license, + * or at the option of the licensee under the LGPL (see COPYING). This + * option is discussed in more detail in shapelib.html. + * + * -- + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included + * in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS + * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. + ****************************************************************************** + * + * $Log: shptest.c,v $ + * Revision 1.8 2016-12-05 12:44:06 erouault + * * Major overhaul of Makefile build system to use autoconf/automake. + * + * * Warning fixes in contrib/ + * + * Revision 1.7 2004-09-26 20:09:35 fwarmerdam + * avoid rcsid warnings + * + * Revision 1.6 2002/01/15 14:36:07 warmerda + * updated email address + * + * Revision 1.5 2001/06/22 02:18:20 warmerda + * Added null shape support + * + * Revision 1.4 2000/07/07 13:39:45 warmerda + * removed unused variables, and added system include files + * + * Revision 1.3 1999/11/05 14:12:05 warmerda + * updated license terms + * + * Revision 1.2 1998/12/16 05:15:20 warmerda + * Added support for writing multipatch. + * + * Revision 1.1 1998/11/09 20:18:42 warmerda + * Initial revision + * + */ + +#include +#include +#include "shapefil.h" + +SHP_CVSID("$Id: shptest.c,v 1.8 2016-12-05 12:44:06 erouault Exp $") + +/************************************************************************/ +/* Test_WritePoints() */ +/* */ +/* Write a small point file. */ +/************************************************************************/ + +static void Test_WritePoints( int nSHPType, const char *pszFilename ) + +{ + SHPHandle hSHPHandle; + SHPObject *psShape; + double x, y, z, m; + + hSHPHandle = SHPCreate( pszFilename, nSHPType ); + + x = 1.0; + y = 2.0; + z = 3.0; + m = 4.0; + psShape = SHPCreateObject( nSHPType, -1, 0, NULL, NULL, + 1, &x, &y, &z, &m ); + SHPWriteObject( hSHPHandle, -1, psShape ); + SHPDestroyObject( psShape ); + + x = 10.0; + y = 20.0; + z = 30.0; + m = 40.0; + psShape = SHPCreateObject( nSHPType, -1, 0, NULL, NULL, + 1, &x, &y, &z, &m ); + SHPWriteObject( hSHPHandle, -1, psShape ); + SHPDestroyObject( psShape ); + + SHPClose( hSHPHandle ); +} + +/************************************************************************/ +/* Test_WriteMultiPoints() */ +/* */ +/* Write a small multipoint file. */ +/************************************************************************/ + +static void Test_WriteMultiPoints( int nSHPType, const char *pszFilename ) + +{ + SHPHandle hSHPHandle; + SHPObject *psShape; + double x[4], y[4], z[4], m[4]; + int i, iShape; + + hSHPHandle = SHPCreate( pszFilename, nSHPType ); + + for( iShape = 0; iShape < 3; iShape++ ) + { + for( i = 0; i < 4; i++ ) + { + x[i] = iShape * 10 + i + 1.15; + y[i] = iShape * 10 + i + 2.25; + z[i] = iShape * 10 + i + 3.35; + m[i] = iShape * 10 + i + 4.45; + } + + psShape = SHPCreateObject( nSHPType, -1, 0, NULL, NULL, + 4, x, y, z, m ); + SHPWriteObject( hSHPHandle, -1, psShape ); + SHPDestroyObject( psShape ); + } + + SHPClose( hSHPHandle ); +} + +/************************************************************************/ +/* Test_WriteArcPoly() */ +/* */ +/* Write a small arc or polygon file. */ +/************************************************************************/ + +static void Test_WriteArcPoly( int nSHPType, const char *pszFilename ) + +{ + SHPHandle hSHPHandle; + SHPObject *psShape; + double x[100], y[100], z[100], m[100]; + int anPartStart[100]; + int anPartType[100], *panPartType; + int i, iShape; + + hSHPHandle = SHPCreate( pszFilename, nSHPType ); + + if( nSHPType == SHPT_MULTIPATCH ) + panPartType = anPartType; + else + panPartType = NULL; + + for( iShape = 0; iShape < 3; iShape++ ) + { + x[0] = 1.0; + y[0] = 1.0+iShape*3; + x[1] = 2.0; + y[1] = 1.0+iShape*3; + x[2] = 2.0; + y[2] = 2.0+iShape*3; + x[3] = 1.0; + y[3] = 2.0+iShape*3; + x[4] = 1.0; + y[4] = 1.0+iShape*3; + + for( i = 0; i < 5; i++ ) + { + z[i] = iShape * 10 + i + 3.35; + m[i] = iShape * 10 + i + 4.45; + } + + psShape = SHPCreateObject( nSHPType, -1, 0, NULL, NULL, + 5, x, y, z, m ); + SHPWriteObject( hSHPHandle, -1, psShape ); + SHPDestroyObject( psShape ); + } + +/* -------------------------------------------------------------------- */ +/* Do a multi part polygon (shape). We close it, and have two */ +/* inner rings. */ +/* -------------------------------------------------------------------- */ + x[0] = 0.0; + y[0] = 0.0; + x[1] = 0; + y[1] = 100; + x[2] = 100; + y[2] = 100; + x[3] = 100; + y[3] = 0; + x[4] = 0; + y[4] = 0; + + x[5] = 10; + y[5] = 20; + x[6] = 30; + y[6] = 20; + x[7] = 30; + y[7] = 40; + x[8] = 10; + y[8] = 40; + x[9] = 10; + y[9] = 20; + + x[10] = 60; + y[10] = 20; + x[11] = 90; + y[11] = 20; + x[12] = 90; + y[12] = 40; + x[13] = 60; + y[13] = 40; + x[14] = 60; + y[14] = 20; + + for( i = 0; i < 15; i++ ) + { + z[i] = i; + m[i] = i*2; + } + + anPartStart[0] = 0; + anPartStart[1] = 5; + anPartStart[2] = 10; + + anPartType[0] = SHPP_RING; + anPartType[1] = SHPP_INNERRING; + anPartType[2] = SHPP_INNERRING; + + psShape = SHPCreateObject( nSHPType, -1, 3, anPartStart, panPartType, + 15, x, y, z, m ); + SHPWriteObject( hSHPHandle, -1, psShape ); + SHPDestroyObject( psShape ); + + + SHPClose( hSHPHandle ); +} + +/************************************************************************/ +/* main() */ +/************************************************************************/ +int main( int argc, char ** argv ) + +{ +/* -------------------------------------------------------------------- */ +/* Display a usage message. */ +/* -------------------------------------------------------------------- */ + if( argc != 2 ) + { + printf( "shptest test_number\n" ); + exit( 1 ); + } + +/* -------------------------------------------------------------------- */ +/* Figure out which test to run. */ +/* -------------------------------------------------------------------- */ + + if( atoi(argv[1]) == 0 ) + Test_WritePoints( SHPT_NULL, "test0.shp" ); + + else if( atoi(argv[1]) == 1 ) + Test_WritePoints( SHPT_POINT, "test1.shp" ); + else if( atoi(argv[1]) == 2 ) + Test_WritePoints( SHPT_POINTZ, "test2.shp" ); + else if( atoi(argv[1]) == 3 ) + Test_WritePoints( SHPT_POINTM, "test3.shp" ); + + else if( atoi(argv[1]) == 4 ) + Test_WriteMultiPoints( SHPT_MULTIPOINT, "test4.shp" ); + else if( atoi(argv[1]) == 5 ) + Test_WriteMultiPoints( SHPT_MULTIPOINTZ, "test5.shp" ); + else if( atoi(argv[1]) == 6 ) + Test_WriteMultiPoints( SHPT_MULTIPOINTM, "test6.shp" ); + + else if( atoi(argv[1]) == 7 ) + Test_WriteArcPoly( SHPT_ARC, "test7.shp" ); + else if( atoi(argv[1]) == 8 ) + Test_WriteArcPoly( SHPT_ARCZ, "test8.shp" ); + else if( atoi(argv[1]) == 9 ) + Test_WriteArcPoly( SHPT_ARCM, "test9.shp" ); + + else if( atoi(argv[1]) == 10 ) + Test_WriteArcPoly( SHPT_POLYGON, "test10.shp" ); + else if( atoi(argv[1]) == 11 ) + Test_WriteArcPoly( SHPT_POLYGONZ, "test11.shp" ); + else if( atoi(argv[1]) == 12 ) + Test_WriteArcPoly( SHPT_POLYGONM, "test12.shp" ); + + else if( atoi(argv[1]) == 13 ) + Test_WriteArcPoly( SHPT_MULTIPATCH, "test13.shp" ); + else + { + printf( "Test `%s' not recognised.\n", argv[1] ); + exit( 10 ); + } + +#ifdef USE_DBMALLOC + malloc_dump(2); +#endif + + exit( 0 ); +} diff --git a/libs/shapelib/shptree.c b/libs/shapelib/shptree.c new file mode 100644 index 0000000..d81533c --- /dev/null +++ b/libs/shapelib/shptree.c @@ -0,0 +1,1266 @@ +/****************************************************************************** + * $Id: shptree.c,v 1.19 2016-12-05 12:44:06 erouault Exp $ + * + * Project: Shapelib + * Purpose: Implementation of quadtree building and searching functions. + * Author: Frank Warmerdam, warmerdam@pobox.com + * + ****************************************************************************** + * Copyright (c) 1999, Frank Warmerdam + * Copyright (c) 2012, Even Rouault + * + * This software is available under the following "MIT Style" license, + * or at the option of the licensee under the LGPL (see COPYING). This + * option is discussed in more detail in shapelib.html. + * + * -- + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included + * in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS + * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. + ****************************************************************************** + * + * $Log: shptree.c,v $ + * Revision 1.19 2016-12-05 12:44:06 erouault + * * Major overhaul of Makefile build system to use autoconf/automake. + * + * * Warning fixes in contrib/ + * + * Revision 1.18 2016-12-04 15:30:15 erouault + * * shpopen.c, dbfopen.c, shptree.c, shapefil.h: resync with + * GDAL Shapefile driver. Mostly cleanups. SHPObject and DBFInfo + * structures extended with new members. New functions: + * DBFSetLastModifiedDate, SHPOpenLLEx, SHPRestoreSHX, + * SHPSetFastModeReadObject + * + * * sbnsearch.c: new file to implement original ESRI .sbn spatial + * index reading. (no write support). New functions: + * SBNOpenDiskTree, SBNCloseDiskTree, SBNSearchDiskTree, + * SBNSearchDiskTreeInteger, SBNSearchFreeIds + * + * * Makefile, makefile.vc, CMakeLists.txt, shapelib.def: updates + * with new file and symbols. + * + * * commit: helper script to cvs commit + * + * Revision 1.17 2012-01-27 21:09:26 fwarmerdam + * optimize .qix output (gdal #4472) + * + * Revision 1.16 2011-12-11 22:26:46 fwarmerdam + * upgrade .qix access code to use SAHooks (gdal #3365) + * + * Revision 1.15 2011-07-24 05:59:25 fwarmerdam + * minimize use of CPLError in favor of SAHooks.Error() + * + * Revision 1.14 2010-08-27 23:43:27 fwarmerdam + * add SHPAPI_CALL attribute in code + * + * Revision 1.13 2010-06-29 05:50:15 fwarmerdam + * fix sign of Z/M comparisons in SHPCheckObjectContained (#2223) + * + * Revision 1.12 2008-11-12 15:39:50 fwarmerdam + * improve safety in face of buggy .shp file. + * + * Revision 1.11 2007/10/27 03:31:14 fwarmerdam + * limit default depth of tree to 12 levels (gdal ticket #1594) + * + * Revision 1.10 2005/01/03 22:30:13 fwarmerdam + * added support for saved quadtrees + * + * Revision 1.9 2003/01/28 15:53:41 warmerda + * Avoid build warnings. + * + * Revision 1.8 2002/05/07 13:07:45 warmerda + * use qsort() - patch from Bernhard Herzog + * + * Revision 1.7 2002/01/15 14:36:07 warmerda + * updated email address + * + * Revision 1.6 2001/05/23 13:36:52 warmerda + * added use of SHPAPI_CALL + * + * Revision 1.5 1999/11/05 14:12:05 warmerda + * updated license terms + * + * Revision 1.4 1999/06/02 18:24:21 warmerda + * added trimming code + * + * Revision 1.3 1999/06/02 17:56:12 warmerda + * added quad'' subnode support for trees + * + * Revision 1.2 1999/05/18 19:11:11 warmerda + * Added example searching capability + * + * Revision 1.1 1999/05/18 17:49:20 warmerda + * New + * + */ + +#include "shapefil.h" + +#include +#include +#include +#include +#include + +#ifdef USE_CPL +#include "cpl_error.h" +#endif + +SHP_CVSID("$Id: shptree.c,v 1.19 2016-12-05 12:44:06 erouault Exp $") + +#ifndef TRUE +# define TRUE 1 +# define FALSE 0 +#endif + +static int bBigEndian = 0; + + +/* -------------------------------------------------------------------- */ +/* If the following is 0.5, nodes will be split in half. If it */ +/* is 0.6 then each subnode will contain 60% of the parent */ +/* node, with 20% representing overlap. This can be help to */ +/* prevent small objects on a boundary from shifting too high */ +/* up the tree. */ +/* -------------------------------------------------------------------- */ + +#define SHP_SPLIT_RATIO 0.55 + +/************************************************************************/ +/* SfRealloc() */ +/* */ +/* A realloc cover function that will access a NULL pointer as */ +/* a valid input. */ +/************************************************************************/ + +static void * SfRealloc( void * pMem, int nNewSize ) + +{ + if( pMem == NULL ) + return( (void *) malloc(nNewSize) ); + else + return( (void *) realloc(pMem,nNewSize) ); +} + +/************************************************************************/ +/* SHPTreeNodeInit() */ +/* */ +/* Initialize a tree node. */ +/************************************************************************/ + +static SHPTreeNode *SHPTreeNodeCreate( double * padfBoundsMin, + double * padfBoundsMax ) + +{ + SHPTreeNode *psTreeNode; + + psTreeNode = (SHPTreeNode *) malloc(sizeof(SHPTreeNode)); + if( NULL == psTreeNode ) + return NULL; + + psTreeNode->nShapeCount = 0; + psTreeNode->panShapeIds = NULL; + psTreeNode->papsShapeObj = NULL; + + psTreeNode->nSubNodes = 0; + + if( padfBoundsMin != NULL ) + memcpy( psTreeNode->adfBoundsMin, padfBoundsMin, sizeof(double) * 4 ); + + if( padfBoundsMax != NULL ) + memcpy( psTreeNode->adfBoundsMax, padfBoundsMax, sizeof(double) * 4 ); + + return psTreeNode; +} + + +/************************************************************************/ +/* SHPCreateTree() */ +/************************************************************************/ + +SHPTree SHPAPI_CALL1(*) + SHPCreateTree( SHPHandle hSHP, int nDimension, int nMaxDepth, + double *padfBoundsMin, double *padfBoundsMax ) + +{ + SHPTree *psTree; + + if( padfBoundsMin == NULL && hSHP == NULL ) + return NULL; + +/* -------------------------------------------------------------------- */ +/* Allocate the tree object */ +/* -------------------------------------------------------------------- */ + psTree = (SHPTree *) malloc(sizeof(SHPTree)); + if( NULL == psTree ) + { + return NULL; + } + + psTree->hSHP = hSHP; + psTree->nMaxDepth = nMaxDepth; + psTree->nDimension = nDimension; + psTree->nTotalCount = 0; + +/* -------------------------------------------------------------------- */ +/* If no max depth was defined, try to select a reasonable one */ +/* that implies approximately 8 shapes per node. */ +/* -------------------------------------------------------------------- */ + if( psTree->nMaxDepth == 0 && hSHP != NULL ) + { + int nMaxNodeCount = 1; + int nShapeCount; + + SHPGetInfo( hSHP, &nShapeCount, NULL, NULL, NULL ); + while( nMaxNodeCount*4 < nShapeCount ) + { + psTree->nMaxDepth += 1; + nMaxNodeCount = nMaxNodeCount * 2; + } + +#ifdef USE_CPL + CPLDebug( "Shape", + "Estimated spatial index tree depth: %d", + psTree->nMaxDepth ); +#endif + + /* NOTE: Due to problems with memory allocation for deep trees, + * automatically estimated depth is limited up to 12 levels. + * See Ticket #1594 for detailed discussion. + */ + if( psTree->nMaxDepth > MAX_DEFAULT_TREE_DEPTH ) + { + psTree->nMaxDepth = MAX_DEFAULT_TREE_DEPTH; + +#ifdef USE_CPL + CPLDebug( "Shape", + "Falling back to max number of allowed index tree levels (%d).", + MAX_DEFAULT_TREE_DEPTH ); +#endif + } + } + +/* -------------------------------------------------------------------- */ +/* Allocate the root node. */ +/* -------------------------------------------------------------------- */ + psTree->psRoot = SHPTreeNodeCreate( padfBoundsMin, padfBoundsMax ); + if( NULL == psTree->psRoot ) + { + free( psTree ); + return NULL; + } + +/* -------------------------------------------------------------------- */ +/* Assign the bounds to the root node. If none are passed in, */ +/* use the bounds of the provided file otherwise the create */ +/* function will have already set the bounds. */ +/* -------------------------------------------------------------------- */ + if( padfBoundsMin == NULL ) + { + SHPGetInfo( hSHP, NULL, NULL, + psTree->psRoot->adfBoundsMin, + psTree->psRoot->adfBoundsMax ); + } + +/* -------------------------------------------------------------------- */ +/* If we have a file, insert all it's shapes into the tree. */ +/* -------------------------------------------------------------------- */ + if( hSHP != NULL ) + { + int iShape, nShapeCount; + + SHPGetInfo( hSHP, &nShapeCount, NULL, NULL, NULL ); + + for( iShape = 0; iShape < nShapeCount; iShape++ ) + { + SHPObject *psShape; + + psShape = SHPReadObject( hSHP, iShape ); + if( psShape != NULL ) + { + SHPTreeAddShapeId( psTree, psShape ); + SHPDestroyObject( psShape ); + } + } + } + + return psTree; +} + +/************************************************************************/ +/* SHPDestroyTreeNode() */ +/************************************************************************/ + +static void SHPDestroyTreeNode( SHPTreeNode * psTreeNode ) + +{ + int i; + + assert( NULL != psTreeNode ); + + for( i = 0; i < psTreeNode->nSubNodes; i++ ) + { + if( psTreeNode->apsSubNode[i] != NULL ) + SHPDestroyTreeNode( psTreeNode->apsSubNode[i] ); + } + + if( psTreeNode->panShapeIds != NULL ) + free( psTreeNode->panShapeIds ); + + if( psTreeNode->papsShapeObj != NULL ) + { + for( i = 0; i < psTreeNode->nShapeCount; i++ ) + { + if( psTreeNode->papsShapeObj[i] != NULL ) + SHPDestroyObject( psTreeNode->papsShapeObj[i] ); + } + + free( psTreeNode->papsShapeObj ); + } + + free( psTreeNode ); +} + +/************************************************************************/ +/* SHPDestroyTree() */ +/************************************************************************/ + +void SHPAPI_CALL +SHPDestroyTree( SHPTree * psTree ) + +{ + SHPDestroyTreeNode( psTree->psRoot ); + free( psTree ); +} + +/************************************************************************/ +/* SHPCheckBoundsOverlap() */ +/* */ +/* Do the given boxes overlap at all? */ +/************************************************************************/ + +int SHPAPI_CALL +SHPCheckBoundsOverlap( double * padfBox1Min, double * padfBox1Max, + double * padfBox2Min, double * padfBox2Max, + int nDimension ) + +{ + int iDim; + + for( iDim = 0; iDim < nDimension; iDim++ ) + { + if( padfBox2Max[iDim] < padfBox1Min[iDim] ) + return FALSE; + + if( padfBox1Max[iDim] < padfBox2Min[iDim] ) + return FALSE; + } + + return TRUE; +} + +/************************************************************************/ +/* SHPCheckObjectContained() */ +/* */ +/* Does the given shape fit within the indicated extents? */ +/************************************************************************/ + +static int SHPCheckObjectContained( SHPObject * psObject, int nDimension, + double * padfBoundsMin, double * padfBoundsMax ) + +{ + if( psObject->dfXMin < padfBoundsMin[0] + || psObject->dfXMax > padfBoundsMax[0] ) + return FALSE; + + if( psObject->dfYMin < padfBoundsMin[1] + || psObject->dfYMax > padfBoundsMax[1] ) + return FALSE; + + if( nDimension == 2 ) + return TRUE; + + if( psObject->dfZMin < padfBoundsMin[2] + || psObject->dfZMax > padfBoundsMax[2] ) + return FALSE; + + if( nDimension == 3 ) + return TRUE; + + if( psObject->dfMMin < padfBoundsMin[3] + || psObject->dfMMax > padfBoundsMax[3] ) + return FALSE; + + return TRUE; +} + +/************************************************************************/ +/* SHPTreeSplitBounds() */ +/* */ +/* Split a region into two subregion evenly, cutting along the */ +/* longest dimension. */ +/************************************************************************/ + +static void +SHPTreeSplitBounds( double *padfBoundsMinIn, double *padfBoundsMaxIn, + double *padfBoundsMin1, double * padfBoundsMax1, + double *padfBoundsMin2, double * padfBoundsMax2 ) + +{ +/* -------------------------------------------------------------------- */ +/* The output bounds will be very similar to the input bounds, */ +/* so just copy over to start. */ +/* -------------------------------------------------------------------- */ + memcpy( padfBoundsMin1, padfBoundsMinIn, sizeof(double) * 4 ); + memcpy( padfBoundsMax1, padfBoundsMaxIn, sizeof(double) * 4 ); + memcpy( padfBoundsMin2, padfBoundsMinIn, sizeof(double) * 4 ); + memcpy( padfBoundsMax2, padfBoundsMaxIn, sizeof(double) * 4 ); + +/* -------------------------------------------------------------------- */ +/* Split in X direction. */ +/* -------------------------------------------------------------------- */ + if( (padfBoundsMaxIn[0] - padfBoundsMinIn[0]) + > (padfBoundsMaxIn[1] - padfBoundsMinIn[1]) ) + { + double dfRange = padfBoundsMaxIn[0] - padfBoundsMinIn[0]; + + padfBoundsMax1[0] = padfBoundsMinIn[0] + dfRange * SHP_SPLIT_RATIO; + padfBoundsMin2[0] = padfBoundsMaxIn[0] - dfRange * SHP_SPLIT_RATIO; + } + +/* -------------------------------------------------------------------- */ +/* Otherwise split in Y direction. */ +/* -------------------------------------------------------------------- */ + else + { + double dfRange = padfBoundsMaxIn[1] - padfBoundsMinIn[1]; + + padfBoundsMax1[1] = padfBoundsMinIn[1] + dfRange * SHP_SPLIT_RATIO; + padfBoundsMin2[1] = padfBoundsMaxIn[1] - dfRange * SHP_SPLIT_RATIO; + } +} + +/************************************************************************/ +/* SHPTreeNodeAddShapeId() */ +/************************************************************************/ + +static int +SHPTreeNodeAddShapeId( SHPTreeNode * psTreeNode, SHPObject * psObject, + int nMaxDepth, int nDimension ) + +{ + int i; + +/* -------------------------------------------------------------------- */ +/* If there are subnodes, then consider whether this object */ +/* will fit in them. */ +/* -------------------------------------------------------------------- */ + if( nMaxDepth > 1 && psTreeNode->nSubNodes > 0 ) + { + for( i = 0; i < psTreeNode->nSubNodes; i++ ) + { + if( SHPCheckObjectContained(psObject, nDimension, + psTreeNode->apsSubNode[i]->adfBoundsMin, + psTreeNode->apsSubNode[i]->adfBoundsMax)) + { + return SHPTreeNodeAddShapeId( psTreeNode->apsSubNode[i], + psObject, nMaxDepth-1, + nDimension ); + } + } + } + +/* -------------------------------------------------------------------- */ +/* Otherwise, consider creating four subnodes if could fit into */ +/* them, and adding to the appropriate subnode. */ +/* -------------------------------------------------------------------- */ +#if MAX_SUBNODE == 4 + else if( nMaxDepth > 1 && psTreeNode->nSubNodes == 0 ) + { + double adfBoundsMinH1[4], adfBoundsMaxH1[4]; + double adfBoundsMinH2[4], adfBoundsMaxH2[4]; + double adfBoundsMin1[4], adfBoundsMax1[4]; + double adfBoundsMin2[4], adfBoundsMax2[4]; + double adfBoundsMin3[4], adfBoundsMax3[4]; + double adfBoundsMin4[4], adfBoundsMax4[4]; + + SHPTreeSplitBounds( psTreeNode->adfBoundsMin, + psTreeNode->adfBoundsMax, + adfBoundsMinH1, adfBoundsMaxH1, + adfBoundsMinH2, adfBoundsMaxH2 ); + + SHPTreeSplitBounds( adfBoundsMinH1, adfBoundsMaxH1, + adfBoundsMin1, adfBoundsMax1, + adfBoundsMin2, adfBoundsMax2 ); + + SHPTreeSplitBounds( adfBoundsMinH2, adfBoundsMaxH2, + adfBoundsMin3, adfBoundsMax3, + adfBoundsMin4, adfBoundsMax4 ); + + if( SHPCheckObjectContained(psObject, nDimension, + adfBoundsMin1, adfBoundsMax1) + || SHPCheckObjectContained(psObject, nDimension, + adfBoundsMin2, adfBoundsMax2) + || SHPCheckObjectContained(psObject, nDimension, + adfBoundsMin3, adfBoundsMax3) + || SHPCheckObjectContained(psObject, nDimension, + adfBoundsMin4, adfBoundsMax4) ) + { + psTreeNode->nSubNodes = 4; + psTreeNode->apsSubNode[0] = SHPTreeNodeCreate( adfBoundsMin1, + adfBoundsMax1 ); + psTreeNode->apsSubNode[1] = SHPTreeNodeCreate( adfBoundsMin2, + adfBoundsMax2 ); + psTreeNode->apsSubNode[2] = SHPTreeNodeCreate( adfBoundsMin3, + adfBoundsMax3 ); + psTreeNode->apsSubNode[3] = SHPTreeNodeCreate( adfBoundsMin4, + adfBoundsMax4 ); + + /* recurse back on this node now that it has subnodes */ + return( SHPTreeNodeAddShapeId( psTreeNode, psObject, + nMaxDepth, nDimension ) ); + } + } +#endif /* MAX_SUBNODE == 4 */ + +/* -------------------------------------------------------------------- */ +/* Otherwise, consider creating two subnodes if could fit into */ +/* them, and adding to the appropriate subnode. */ +/* -------------------------------------------------------------------- */ +#if MAX_SUBNODE == 2 + else if( nMaxDepth > 1 && psTreeNode->nSubNodes == 0 ) + { + double adfBoundsMin1[4], adfBoundsMax1[4]; + double adfBoundsMin2[4], adfBoundsMax2[4]; + + SHPTreeSplitBounds( psTreeNode->adfBoundsMin, psTreeNode->adfBoundsMax, + adfBoundsMin1, adfBoundsMax1, + adfBoundsMin2, adfBoundsMax2 ); + + if( SHPCheckObjectContained(psObject, nDimension, + adfBoundsMin1, adfBoundsMax1)) + { + psTreeNode->nSubNodes = 2; + psTreeNode->apsSubNode[0] = SHPTreeNodeCreate( adfBoundsMin1, + adfBoundsMax1 ); + psTreeNode->apsSubNode[1] = SHPTreeNodeCreate( adfBoundsMin2, + adfBoundsMax2 ); + + return( SHPTreeNodeAddShapeId( psTreeNode->apsSubNode[0], psObject, + nMaxDepth - 1, nDimension ) ); + } + else if( SHPCheckObjectContained(psObject, nDimension, + adfBoundsMin2, adfBoundsMax2) ) + { + psTreeNode->nSubNodes = 2; + psTreeNode->apsSubNode[0] = SHPTreeNodeCreate( adfBoundsMin1, + adfBoundsMax1 ); + psTreeNode->apsSubNode[1] = SHPTreeNodeCreate( adfBoundsMin2, + adfBoundsMax2 ); + + return( SHPTreeNodeAddShapeId( psTreeNode->apsSubNode[1], psObject, + nMaxDepth - 1, nDimension ) ); + } + } +#endif /* MAX_SUBNODE == 2 */ + +/* -------------------------------------------------------------------- */ +/* If none of that worked, just add it to this nodes list. */ +/* -------------------------------------------------------------------- */ + psTreeNode->nShapeCount++; + + psTreeNode->panShapeIds = (int *) + SfRealloc( psTreeNode->panShapeIds, + sizeof(int) * psTreeNode->nShapeCount ); + psTreeNode->panShapeIds[psTreeNode->nShapeCount-1] = psObject->nShapeId; + + if( psTreeNode->papsShapeObj != NULL ) + { + psTreeNode->papsShapeObj = (SHPObject **) + SfRealloc( psTreeNode->papsShapeObj, + sizeof(void *) * psTreeNode->nShapeCount ); + psTreeNode->papsShapeObj[psTreeNode->nShapeCount-1] = NULL; + } + + return TRUE; +} + +/************************************************************************/ +/* SHPTreeAddShapeId() */ +/* */ +/* Add a shape to the tree, but don't keep a pointer to the */ +/* object data, just keep the shapeid. */ +/************************************************************************/ + +int SHPAPI_CALL +SHPTreeAddShapeId( SHPTree * psTree, SHPObject * psObject ) + +{ + psTree->nTotalCount++; + + return( SHPTreeNodeAddShapeId( psTree->psRoot, psObject, + psTree->nMaxDepth, psTree->nDimension ) ); +} + +/************************************************************************/ +/* SHPTreeCollectShapesIds() */ +/* */ +/* Work function implementing SHPTreeFindLikelyShapes() on a */ +/* tree node by tree node basis. */ +/************************************************************************/ + +static void +SHPTreeCollectShapeIds( SHPTree *hTree, SHPTreeNode * psTreeNode, + double * padfBoundsMin, double * padfBoundsMax, + int * pnShapeCount, int * pnMaxShapes, + int ** ppanShapeList ) + +{ + int i; + +/* -------------------------------------------------------------------- */ +/* Does this node overlap the area of interest at all? If not, */ +/* return without adding to the list at all. */ +/* -------------------------------------------------------------------- */ + if( !SHPCheckBoundsOverlap( psTreeNode->adfBoundsMin, + psTreeNode->adfBoundsMax, + padfBoundsMin, + padfBoundsMax, + hTree->nDimension ) ) + return; + +/* -------------------------------------------------------------------- */ +/* Grow the list to hold the shapes on this node. */ +/* -------------------------------------------------------------------- */ + if( *pnShapeCount + psTreeNode->nShapeCount > *pnMaxShapes ) + { + *pnMaxShapes = (*pnShapeCount + psTreeNode->nShapeCount) * 2 + 20; + *ppanShapeList = (int *) + SfRealloc(*ppanShapeList,sizeof(int) * *pnMaxShapes); + } + +/* -------------------------------------------------------------------- */ +/* Add the local nodes shapeids to the list. */ +/* -------------------------------------------------------------------- */ + for( i = 0; i < psTreeNode->nShapeCount; i++ ) + { + (*ppanShapeList)[(*pnShapeCount)++] = psTreeNode->panShapeIds[i]; + } + +/* -------------------------------------------------------------------- */ +/* Recurse to subnodes if they exist. */ +/* -------------------------------------------------------------------- */ + for( i = 0; i < psTreeNode->nSubNodes; i++ ) + { + if( psTreeNode->apsSubNode[i] != NULL ) + SHPTreeCollectShapeIds( hTree, psTreeNode->apsSubNode[i], + padfBoundsMin, padfBoundsMax, + pnShapeCount, pnMaxShapes, + ppanShapeList ); + } +} + +/************************************************************************/ +/* SHPTreeFindLikelyShapes() */ +/* */ +/* Find all shapes within tree nodes for which the tree node */ +/* bounding box overlaps the search box. The return value is */ +/* an array of shapeids terminated by a -1. The shapeids will */ +/* be in order, as hopefully this will result in faster (more */ +/* sequential) reading from the file. */ +/************************************************************************/ + +/* helper for qsort */ +static int +compare_ints( const void * a, const void * b) +{ + return (*(int*)a) - (*(int*)b); +} + +int SHPAPI_CALL1(*) +SHPTreeFindLikelyShapes( SHPTree * hTree, + double * padfBoundsMin, double * padfBoundsMax, + int * pnShapeCount ) + +{ + int *panShapeList=NULL, nMaxShapes = 0; + +/* -------------------------------------------------------------------- */ +/* Perform the search by recursive descent. */ +/* -------------------------------------------------------------------- */ + *pnShapeCount = 0; + + SHPTreeCollectShapeIds( hTree, hTree->psRoot, + padfBoundsMin, padfBoundsMax, + pnShapeCount, &nMaxShapes, + &panShapeList ); + +/* -------------------------------------------------------------------- */ +/* Sort the id array */ +/* -------------------------------------------------------------------- */ + + if( panShapeList != NULL ) + qsort(panShapeList, *pnShapeCount, sizeof(int), compare_ints); + + return panShapeList; +} + +/************************************************************************/ +/* SHPTreeNodeTrim() */ +/* */ +/* This is the recursive version of SHPTreeTrimExtraNodes() that */ +/* walks the tree cleaning it up. */ +/************************************************************************/ + +static int SHPTreeNodeTrim( SHPTreeNode * psTreeNode ) + +{ + int i; + +/* -------------------------------------------------------------------- */ +/* Trim subtrees, and free subnodes that come back empty. */ +/* -------------------------------------------------------------------- */ + for( i = 0; i < psTreeNode->nSubNodes; i++ ) + { + if( SHPTreeNodeTrim( psTreeNode->apsSubNode[i] ) ) + { + SHPDestroyTreeNode( psTreeNode->apsSubNode[i] ); + + psTreeNode->apsSubNode[i] = + psTreeNode->apsSubNode[psTreeNode->nSubNodes-1]; + + psTreeNode->nSubNodes--; + + i--; /* process the new occupant of this subnode entry */ + } + } + +/* -------------------------------------------------------------------- */ +/* If the current node has 1 subnode and no shapes, promote that */ +/* subnode to the current node position. */ +/* -------------------------------------------------------------------- */ + if( psTreeNode->nSubNodes == 1 && psTreeNode->nShapeCount == 0) + { + SHPTreeNode* psSubNode = psTreeNode->apsSubNode[0]; + + memcpy(psTreeNode->adfBoundsMin, psSubNode->adfBoundsMin, + sizeof(psSubNode->adfBoundsMin)); + memcpy(psTreeNode->adfBoundsMax, psSubNode->adfBoundsMax, + sizeof(psSubNode->adfBoundsMax)); + psTreeNode->nShapeCount = psSubNode->nShapeCount; + assert(psTreeNode->panShapeIds == NULL); + psTreeNode->panShapeIds = psSubNode->panShapeIds; + assert(psTreeNode->papsShapeObj == NULL); + psTreeNode->papsShapeObj = psSubNode->papsShapeObj; + psTreeNode->nSubNodes = psSubNode->nSubNodes; + for( i = 0; i < psSubNode->nSubNodes; i++ ) + psTreeNode->apsSubNode[i] = psSubNode->apsSubNode[i]; + free(psSubNode); + } + +/* -------------------------------------------------------------------- */ +/* We should be trimmed if we have no subnodes, and no shapes. */ +/* -------------------------------------------------------------------- */ + return( psTreeNode->nSubNodes == 0 && psTreeNode->nShapeCount == 0 ); +} + +/************************************************************************/ +/* SHPTreeTrimExtraNodes() */ +/* */ +/* Trim empty nodes from the tree. Note that we never trim an */ +/* empty root node. */ +/************************************************************************/ + +void SHPAPI_CALL +SHPTreeTrimExtraNodes( SHPTree * hTree ) + +{ + SHPTreeNodeTrim( hTree->psRoot ); +} + +/************************************************************************/ +/* SwapWord() */ +/* */ +/* Swap a 2, 4 or 8 byte word. */ +/************************************************************************/ + +static void SwapWord( int length, void * wordP ) + +{ + int i; + unsigned char temp; + + for( i=0; i < length/2; i++ ) + { + temp = ((unsigned char *) wordP)[i]; + ((unsigned char *)wordP)[i] = ((unsigned char *) wordP)[length-i-1]; + ((unsigned char *) wordP)[length-i-1] = temp; + } +} + + +struct SHPDiskTreeInfo +{ + SAHooks sHooks; + SAFile fpQIX; +}; + +/************************************************************************/ +/* SHPOpenDiskTree() */ +/************************************************************************/ + +SHPTreeDiskHandle SHPOpenDiskTree( const char* pszQIXFilename, + SAHooks *psHooks ) +{ + SHPTreeDiskHandle hDiskTree; + + hDiskTree = (SHPTreeDiskHandle) calloc(sizeof(struct SHPDiskTreeInfo),1); + + if (psHooks == NULL) + SASetupDefaultHooks( &(hDiskTree->sHooks) ); + else + memcpy( &(hDiskTree->sHooks), psHooks, sizeof(SAHooks) ); + + hDiskTree->fpQIX = hDiskTree->sHooks.FOpen(pszQIXFilename, "rb"); + if (hDiskTree->fpQIX == NULL) + { + free(hDiskTree); + return NULL; + } + + return hDiskTree; +} + +/***********************************************************************/ +/* SHPCloseDiskTree() */ +/************************************************************************/ + +void SHPCloseDiskTree( SHPTreeDiskHandle hDiskTree ) +{ + if (hDiskTree == NULL) + return; + + hDiskTree->sHooks.FClose(hDiskTree->fpQIX); + free(hDiskTree); +} + +/************************************************************************/ +/* SHPSearchDiskTreeNode() */ +/************************************************************************/ + +static int +SHPSearchDiskTreeNode( SHPTreeDiskHandle hDiskTree, double *padfBoundsMin, double *padfBoundsMax, + int **ppanResultBuffer, int *pnBufferMax, + int *pnResultCount, int bNeedSwap, int nRecLevel ) + +{ + unsigned int i; + unsigned int offset; + unsigned int numshapes, numsubnodes; + double adfNodeBoundsMin[2], adfNodeBoundsMax[2]; + int nFReadAcc; + +/* -------------------------------------------------------------------- */ +/* Read and unswap first part of node info. */ +/* -------------------------------------------------------------------- */ + nFReadAcc = (int)hDiskTree->sHooks.FRead( &offset, 4, 1, hDiskTree->fpQIX ); + if ( bNeedSwap ) SwapWord ( 4, &offset ); + + nFReadAcc += (int)hDiskTree->sHooks.FRead( adfNodeBoundsMin, sizeof(double), 2, hDiskTree->fpQIX ); + nFReadAcc += (int)hDiskTree->sHooks.FRead( adfNodeBoundsMax, sizeof(double), 2, hDiskTree->fpQIX ); + if ( bNeedSwap ) + { + SwapWord( 8, adfNodeBoundsMin + 0 ); + SwapWord( 8, adfNodeBoundsMin + 1 ); + SwapWord( 8, adfNodeBoundsMax + 0 ); + SwapWord( 8, adfNodeBoundsMax + 1 ); + } + + nFReadAcc += (int)hDiskTree->sHooks.FRead( &numshapes, 4, 1, hDiskTree->fpQIX ); + if ( bNeedSwap ) SwapWord ( 4, &numshapes ); + + /* Check that we could read all previous values */ + if( nFReadAcc != 1 + 2 + 2 + 1 ) + { + hDiskTree->sHooks.Error("I/O error"); + return FALSE; + } + + /* Sanity checks to avoid int overflows in later computation */ + if( offset > INT_MAX - sizeof(int) ) + { + hDiskTree->sHooks.Error("Invalid value for offset"); + return FALSE; + } + + if( numshapes > (INT_MAX - offset - sizeof(int)) / sizeof(int) || + numshapes > INT_MAX / sizeof(int) - *pnResultCount ) + { + hDiskTree->sHooks.Error("Invalid value for numshapes"); + return FALSE; + } + +/* -------------------------------------------------------------------- */ +/* If we don't overlap this node at all, we can just fseek() */ +/* pass this node info and all subnodes. */ +/* -------------------------------------------------------------------- */ + if( !SHPCheckBoundsOverlap( adfNodeBoundsMin, adfNodeBoundsMax, + padfBoundsMin, padfBoundsMax, 2 ) ) + { + offset += numshapes*sizeof(int) + sizeof(int); + hDiskTree->sHooks.FSeek(hDiskTree->fpQIX, offset, SEEK_CUR); + return TRUE; + } + +/* -------------------------------------------------------------------- */ +/* Add all the shapeids at this node to our list. */ +/* -------------------------------------------------------------------- */ + if(numshapes > 0) + { + if( *pnResultCount + numshapes > (unsigned int)*pnBufferMax ) + { + int* pNewBuffer; + + *pnBufferMax = (*pnResultCount + numshapes + 100) * 5 / 4; + + if( (size_t)*pnBufferMax > INT_MAX / sizeof(int) ) + *pnBufferMax = *pnResultCount + numshapes; + + pNewBuffer = (int *) + SfRealloc( *ppanResultBuffer, *pnBufferMax * sizeof(int) ); + + if( pNewBuffer == NULL ) + { + hDiskTree->sHooks.Error("Out of memory error"); + return FALSE; + } + + *ppanResultBuffer = pNewBuffer; + } + + if( hDiskTree->sHooks.FRead( *ppanResultBuffer + *pnResultCount, + sizeof(int), numshapes, hDiskTree->fpQIX ) != numshapes ) + { + hDiskTree->sHooks.Error("I/O error"); + return FALSE; + } + + if (bNeedSwap ) + { + for( i=0; isHooks.FRead( &numsubnodes, 4, 1, hDiskTree->fpQIX ) != 1 ) + { + hDiskTree->sHooks.Error("I/O error"); + return FALSE; + } + if ( bNeedSwap ) SwapWord ( 4, &numsubnodes ); + if( numsubnodes > 0 && nRecLevel == 32 ) + { + hDiskTree->sHooks.Error("Shape tree is too deep"); + return FALSE; + } + + for(i=0; isHooks.FSeek( hDiskTree->fpQIX, 0, SEEK_SET ); + hDiskTree->sHooks.FRead( abyBuf, 16, 1, hDiskTree->fpQIX ); + + if( memcmp( abyBuf, "SQT", 3 ) != 0 ) + return NULL; + + if( (abyBuf[3] == 2 && bBigEndian) + || (abyBuf[3] == 1 && !bBigEndian) ) + bNeedSwap = FALSE; + else + bNeedSwap = TRUE; + +/* -------------------------------------------------------------------- */ +/* Search through root node and it's descendants. */ +/* -------------------------------------------------------------------- */ + if( !SHPSearchDiskTreeNode( hDiskTree, padfBoundsMin, padfBoundsMax, + &panResultBuffer, &nBufferMax, + pnShapeCount, bNeedSwap, 0 ) ) + { + if( panResultBuffer != NULL ) + free( panResultBuffer ); + *pnShapeCount = 0; + return NULL; + } +/* -------------------------------------------------------------------- */ +/* Sort the id array */ +/* -------------------------------------------------------------------- */ + + /* To distinguish between empty intersection from error case */ + if( panResultBuffer == NULL ) + panResultBuffer = (int*) calloc(1, sizeof(int)); + else + qsort(panResultBuffer, *pnShapeCount, sizeof(int), compare_ints); + + + return panResultBuffer; +} + +/************************************************************************/ +/* SHPGetSubNodeOffset() */ +/* */ +/* Determine how big all the subnodes of this node (and their */ +/* children) will be. This will allow disk based searchers to */ +/* seek past them all efficiently. */ +/************************************************************************/ + +static int SHPGetSubNodeOffset( SHPTreeNode *node) +{ + int i; + int offset=0; + + for(i=0; inSubNodes; i++ ) + { + if(node->apsSubNode[i]) + { + offset += 4*sizeof(double) + + (node->apsSubNode[i]->nShapeCount+3)*sizeof(int); + offset += SHPGetSubNodeOffset(node->apsSubNode[i]); + } + } + + return(offset); +} + +/************************************************************************/ +/* SHPWriteTreeNode() */ +/************************************************************************/ + +static void SHPWriteTreeNode( SAFile fp, SHPTreeNode *node, SAHooks* psHooks) +{ + int i,j; + int offset; + unsigned char *pabyRec = NULL; + assert( NULL != node ); + + offset = SHPGetSubNodeOffset(node); + + pabyRec = (unsigned char *) + malloc(sizeof(double) * 4 + + (3 * sizeof(int)) + (node->nShapeCount * sizeof(int)) ); + if( NULL == pabyRec ) + { +#ifdef USE_CPL + CPLError( CE_Fatal, CPLE_OutOfMemory, "Memory allocation failure"); +#endif + assert( 0 ); + return; + } + + memcpy( pabyRec, &offset, 4); + + /* minx, miny, maxx, maxy */ + memcpy( pabyRec+ 4, node->adfBoundsMin+0, sizeof(double) ); + memcpy( pabyRec+12, node->adfBoundsMin+1, sizeof(double) ); + memcpy( pabyRec+20, node->adfBoundsMax+0, sizeof(double) ); + memcpy( pabyRec+28, node->adfBoundsMax+1, sizeof(double) ); + + memcpy( pabyRec+36, &node->nShapeCount, 4); + j = node->nShapeCount * sizeof(int); + if( j ) + memcpy( pabyRec+40, node->panShapeIds, j); + memcpy( pabyRec+j+40, &node->nSubNodes, 4); + + psHooks->FWrite( pabyRec, 44+j, 1, fp ); + free (pabyRec); + + for(i=0; inSubNodes; i++ ) + { + if(node->apsSubNode[i]) + SHPWriteTreeNode( fp, node->apsSubNode[i], psHooks); + } +} + +/************************************************************************/ +/* SHPWriteTree() */ +/************************************************************************/ + +int SHPAPI_CALL SHPWriteTree(SHPTree *tree, const char *filename ) +{ + SAHooks sHooks; + + SASetupDefaultHooks( &sHooks ); + + return SHPWriteTreeLL(tree, filename, &sHooks); +} + +/************************************************************************/ +/* SHPWriteTreeLL() */ +/************************************************************************/ + +int SHPWriteTreeLL(SHPTree *tree, const char *filename, SAHooks* psHooks ) +{ + char signature[4] = "SQT"; + int i; + char abyBuf[32]; + SAFile fp; + + SAHooks sHooks; + if (psHooks == NULL) + { + SASetupDefaultHooks( &sHooks ); + psHooks = &sHooks; + } + +/* -------------------------------------------------------------------- */ +/* Open the output file. */ +/* -------------------------------------------------------------------- */ + fp = psHooks->FOpen(filename, "wb"); + if( fp == NULL ) + { + return FALSE; + } + +/* -------------------------------------------------------------------- */ +/* Establish the byte order on this machine. */ +/* -------------------------------------------------------------------- */ + i = 1; + if( *((unsigned char *) &i) == 1 ) + bBigEndian = FALSE; + else + bBigEndian = TRUE; + +/* -------------------------------------------------------------------- */ +/* Write the header. */ +/* -------------------------------------------------------------------- */ + memcpy( abyBuf+0, signature, 3 ); + + if( bBigEndian ) + abyBuf[3] = 2; /* New MSB */ + else + abyBuf[3] = 1; /* New LSB */ + + abyBuf[4] = 1; /* version */ + abyBuf[5] = 0; /* next 3 reserved */ + abyBuf[6] = 0; + abyBuf[7] = 0; + + psHooks->FWrite( abyBuf, 8, 1, fp ); + + psHooks->FWrite( &(tree->nTotalCount), 4, 1, fp ); + + /* write maxdepth */ + + psHooks->FWrite( &(tree->nMaxDepth), 4, 1, fp ); + +/* -------------------------------------------------------------------- */ +/* Write all the nodes "in order". */ +/* -------------------------------------------------------------------- */ + + SHPWriteTreeNode( fp, tree->psRoot, psHooks ); + + psHooks->FClose( fp ); + + return TRUE; +} diff --git a/libs/shapelib/shptreedump.c b/libs/shapelib/shptreedump.c new file mode 100644 index 0000000..bc72569 --- /dev/null +++ b/libs/shapelib/shptreedump.c @@ -0,0 +1,466 @@ +/****************************************************************************** + * $Id: shptreedump.c,v 1.9 2016-12-05 12:44:06 erouault Exp $ + * + * Project: Shapelib + * Purpose: Mainline for creating and dumping an ASCII representation of + * a quadtree. + * Author: Frank Warmerdam, warmerdam@pobox.com + * + ****************************************************************************** + * Copyright (c) 1999, Frank Warmerdam + * + * This software is available under the following "MIT Style" license, + * or at the option of the licensee under the LGPL (see COPYING). This + * option is discussed in more detail in shapelib.html. + * + * -- + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included + * in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS + * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. + ****************************************************************************** + * + * $Log: shptreedump.c,v $ + * Revision 1.9 2016-12-05 12:44:06 erouault + * * Major overhaul of Makefile build system to use autoconf/automake. + * + * * Warning fixes in contrib/ + * + * Revision 1.8 2005-01-03 22:30:13 fwarmerdam + * added support for saved quadtrees + * + * Revision 1.7 2002/04/10 16:59:12 warmerda + * fixed email + * + * Revision 1.6 1999/11/05 14:12:05 warmerda + * updated license terms + * + * Revision 1.5 1999/06/02 18:24:21 warmerda + * added trimming code + * + * Revision 1.4 1999/06/02 17:56:12 warmerda + * added quad'' subnode support for trees + * + * Revision 1.3 1999/05/18 19:13:13 warmerda + * Use fabs() instead of abs(). + * + * Revision 1.2 1999/05/18 19:11:11 warmerda + * Added example searching capability + * + * Revision 1.1 1999/05/18 17:49:20 warmerda + * New + * + */ + +#include "shapefil.h" + +#include +#include +#include +#include + +SHP_CVSID("$Id: shptreedump.c,v 1.9 2016-12-05 12:44:06 erouault Exp $") + +static void SHPTreeNodeDump( SHPTree *, SHPTreeNode *, const char *, int ); +static void SHPTreeNodeSearchAndDump( SHPTree *, double *, double * ); + +/************************************************************************/ +/* Usage() */ +/************************************************************************/ + +static void Usage() + +{ + printf( "shptreedump [-maxdepth n] [-search xmin ymin xmax ymax]\n" + " [-v] [-o indexfilename] [-i indexfilename]\n" + " shp_file\n" ); + exit( 1 ); +} + + + +/************************************************************************/ +/* main() */ +/************************************************************************/ +int main( int argc, char ** argv ) + +{ + SHPHandle hSHP; + SHPTree *psTree; + int nExpandShapes = 0; + int nMaxDepth = 0; + int bDoSearch = 0; + double adfSearchMin[4], adfSearchMax[4]; + const char *pszOutputIndexFilename = NULL; + const char *pszInputIndexFilename = NULL; + const char *pszTargetFile = NULL; + +/* -------------------------------------------------------------------- */ +/* Consume flags. */ +/* -------------------------------------------------------------------- */ + while( argc > 1 ) + { + if( strcmp(argv[1],"-v") == 0 ) + { + nExpandShapes = 1; + argv++; + argc--; + } + else if( strcmp(argv[1],"-maxdepth") == 0 && argc > 2 ) + { + nMaxDepth = atoi(argv[2]); + argv += 2; + argc -= 2; + } + else if( strcmp(argv[1],"-o") == 0 && argc > 2 ) + { + pszOutputIndexFilename = argv[2]; + argv += 2; + argc -= 2; + } + else if( strcmp(argv[1],"-i") == 0 && argc > 2 ) + { + pszInputIndexFilename = argv[2]; + argv += 2; + argc -= 2; + } + else if( strcmp(argv[1],"-search") == 0 && argc > 5 ) + { + bDoSearch = 1; + + adfSearchMin[0] = atof(argv[2]); + adfSearchMin[1] = atof(argv[3]); + adfSearchMax[0] = atof(argv[4]); + adfSearchMax[1] = atof(argv[5]); + + adfSearchMin[2] = adfSearchMax[2] = 0.0; + adfSearchMin[3] = adfSearchMax[3] = 0.0; + + if( adfSearchMin[0] > adfSearchMax[0] + || adfSearchMin[1] > adfSearchMax[1] ) + { + printf( "Min greater than max in search criteria.\n" ); + Usage(); + } + + argv += 5; + argc -= 5; + } + else if( pszTargetFile == NULL ) + { + pszTargetFile = argv[1]; + argv++; + argc--; + } + else + { + printf( "Unrecognised argument: %s\n", argv[1] ); + Usage(); + } + } + +/* -------------------------------------------------------------------- */ +/* Do a search with an existing index file? */ +/* -------------------------------------------------------------------- */ + if( bDoSearch && pszInputIndexFilename != NULL ) + { + FILE *fp = fopen( pszInputIndexFilename, "rb" ); + int *panResult, nResultCount = 0, iResult; + + if( fp == NULL ) + { + perror( pszInputIndexFilename ); + exit( 1 ); + } + + panResult = SHPSearchDiskTree( fp, adfSearchMin, adfSearchMax, + &nResultCount ); + + printf( "Result: " ); + for( iResult = 0; iResult < nResultCount; iResult++ ) + printf( "%d ", panResult[iResult] ); + printf( "\n" ); + free( panResult ); + + fclose( fp ); + + exit( 0 ); + } + +/* -------------------------------------------------------------------- */ +/* Display a usage message. */ +/* -------------------------------------------------------------------- */ + if( pszTargetFile == NULL ) + { + Usage(); + } + +/* -------------------------------------------------------------------- */ +/* Open the passed shapefile. */ +/* -------------------------------------------------------------------- */ + hSHP = SHPOpen( pszTargetFile, "rb" ); + + if( hSHP == NULL ) + { + printf( "Unable to open:%s\n", pszTargetFile ); + exit( 1 ); + } + +/* -------------------------------------------------------------------- */ +/* Build a quadtree structure for this file. */ +/* -------------------------------------------------------------------- */ + psTree = SHPCreateTree( hSHP, 2, nMaxDepth, NULL, NULL ); + +/* -------------------------------------------------------------------- */ +/* Trim unused nodes from the tree. */ +/* -------------------------------------------------------------------- */ + SHPTreeTrimExtraNodes( psTree ); + +/* -------------------------------------------------------------------- */ +/* Dump tree to .qix file. */ +/* -------------------------------------------------------------------- */ + if( pszOutputIndexFilename != NULL ) + { + SHPWriteTree( psTree, pszOutputIndexFilename ); + } + +/* -------------------------------------------------------------------- */ +/* Dump tree by recursive descent. */ +/* -------------------------------------------------------------------- */ + else if( !bDoSearch ) + SHPTreeNodeDump( psTree, psTree->psRoot, "", nExpandShapes ); + +/* -------------------------------------------------------------------- */ +/* or do a search instead. */ +/* -------------------------------------------------------------------- */ + else + SHPTreeNodeSearchAndDump( psTree, adfSearchMin, adfSearchMax ); + +/* -------------------------------------------------------------------- */ +/* cleanup */ +/* -------------------------------------------------------------------- */ + SHPDestroyTree( psTree ); + + SHPClose( hSHP ); + +#ifdef USE_DBMALLOC + malloc_dump(2); +#endif + + exit( 0 ); +} + +/************************************************************************/ +/* EmitCoordinate() */ +/************************************************************************/ + +static void EmitCoordinate( double * padfCoord, int nDimension ) + +{ + const char *pszFormat; + + if( fabs(padfCoord[0]) < 180 && fabs(padfCoord[1]) < 180 ) + pszFormat = "%.9f"; + else + pszFormat = "%.2f"; + + printf( pszFormat, padfCoord[0] ); + printf( "," ); + printf( pszFormat, padfCoord[1] ); + + if( nDimension > 2 ) + { + printf( "," ); + printf( pszFormat, padfCoord[2] ); + } + if( nDimension > 3 ) + { + printf( "," ); + printf( pszFormat, padfCoord[3] ); + } +} + +/************************************************************************/ +/* EmitShape() */ +/************************************************************************/ + +static void EmitShape( SHPObject * psObject, const char * pszPrefix, + int nDimension ) + +{ + int i; + + printf( "%s( Shape\n", pszPrefix ); + printf( "%s ShapeId = %d\n", pszPrefix, psObject->nShapeId ); + + printf( "%s Min = (", pszPrefix ); + EmitCoordinate( &(psObject->dfXMin), nDimension ); + printf( ")\n" ); + + printf( "%s Max = (", pszPrefix ); + EmitCoordinate( &(psObject->dfXMax), nDimension ); + printf( ")\n" ); + + for( i = 0; i < psObject->nVertices; i++ ) + { + double adfVertex[4]; + + printf( "%s Vertex[%d] = (", pszPrefix, i ); + + adfVertex[0] = psObject->padfX[i]; + adfVertex[1] = psObject->padfY[i]; + adfVertex[2] = psObject->padfZ[i]; + adfVertex[3] = psObject->padfM[i]; + + EmitCoordinate( adfVertex, nDimension ); + printf( ")\n" ); + } + printf( "%s)\n", pszPrefix ); +} + +/************************************************************************/ +/* SHPTreeNodeDump() */ +/* */ +/* Dump a tree node in a readable form. */ +/************************************************************************/ + +static void SHPTreeNodeDump( SHPTree * psTree, + SHPTreeNode * psTreeNode, + const char * pszPrefix, + int nExpandShapes ) + +{ + char szNextPrefix[150]; + int i; + + strcpy( szNextPrefix, pszPrefix ); + if( strlen(pszPrefix) < sizeof(szNextPrefix) - 3 ) + strcat( szNextPrefix, " " ); + + printf( "%s( SHPTreeNode\n", pszPrefix ); + +/* -------------------------------------------------------------------- */ +/* Emit the bounds. */ +/* -------------------------------------------------------------------- */ + printf( "%s Min = (", pszPrefix ); + EmitCoordinate( psTreeNode->adfBoundsMin, psTree->nDimension ); + printf( ")\n" ); + + printf( "%s Max = (", pszPrefix ); + EmitCoordinate( psTreeNode->adfBoundsMax, psTree->nDimension ); + printf( ")\n" ); + +/* -------------------------------------------------------------------- */ +/* Emit the list of shapes on this node. */ +/* -------------------------------------------------------------------- */ + if( nExpandShapes ) + { + printf( "%s Shapes(%d):\n", pszPrefix, psTreeNode->nShapeCount ); + for( i = 0; i < psTreeNode->nShapeCount; i++ ) + { + SHPObject *psObject; + + psObject = SHPReadObject( psTree->hSHP, + psTreeNode->panShapeIds[i] ); + assert( psObject != NULL ); + if( psObject != NULL ) + { + EmitShape( psObject, szNextPrefix, psTree->nDimension ); + } + + SHPDestroyObject( psObject ); + } + } + else + { + printf( "%s Shapes(%d): ", pszPrefix, psTreeNode->nShapeCount ); + for( i = 0; i < psTreeNode->nShapeCount; i++ ) + { + printf( "%d ", psTreeNode->panShapeIds[i] ); + } + printf( "\n" ); + } + +/* -------------------------------------------------------------------- */ +/* Emit subnodes. */ +/* -------------------------------------------------------------------- */ + for( i = 0; i < psTreeNode->nSubNodes; i++ ) + { + if( psTreeNode->apsSubNode[i] != NULL ) + SHPTreeNodeDump( psTree, psTreeNode->apsSubNode[i], + szNextPrefix, nExpandShapes ); + } + + printf( "%s)\n", pszPrefix ); + + return; +} + +/************************************************************************/ +/* SHPTreeNodeSearchAndDump() */ +/************************************************************************/ + +static void SHPTreeNodeSearchAndDump( SHPTree * hTree, + double *padfBoundsMin, + double *padfBoundsMax ) + +{ + int *panHits, nShapeCount, i; + +/* -------------------------------------------------------------------- */ +/* Perform the search for likely candidates. These are shapes */ +/* that fall into a tree node whose bounding box intersects our */ +/* area of interest. */ +/* -------------------------------------------------------------------- */ + panHits = SHPTreeFindLikelyShapes( hTree, padfBoundsMin, padfBoundsMax, + &nShapeCount ); + +/* -------------------------------------------------------------------- */ +/* Read all of these shapes, and establish whether the shape's */ +/* bounding box actually intersects the area of interest. Note */ +/* that the bounding box could intersect the area of interest, */ +/* and the shape itself still not cross it but we don't try to */ +/* address that here. */ +/* -------------------------------------------------------------------- */ + for( i = 0; i < nShapeCount; i++ ) + { + SHPObject *psObject; + + psObject = SHPReadObject( hTree->hSHP, panHits[i] ); + if( psObject == NULL ) + continue; + + if( !SHPCheckBoundsOverlap( padfBoundsMin, padfBoundsMax, + &(psObject->dfXMin), + &(psObject->dfXMax), + hTree->nDimension ) ) + { + printf( "Shape %d: not in area of interest, but fetched.\n", + panHits[i] ); + } + else + { + printf( "Shape %d: appears to be in area of interest.\n", + panHits[i] ); + } + + SHPDestroyObject( psObject ); + } + + if( nShapeCount == 0 ) + printf( "No shapes found in search.\n" ); +} diff --git a/libs/shapelib/shputils.c b/libs/shapelib/shputils.c new file mode 100644 index 0000000..248a2f1 --- /dev/null +++ b/libs/shapelib/shputils.c @@ -0,0 +1,1077 @@ +/****************************************************************************** + * $Id: shputils.c,v 1.11 2016-12-05 12:44:06 erouault Exp $ + * + * Project: Shapelib + * Purpose: + * Altered "shpdump" and "dbfdump" to allow two files to be appended. + * Other Functions: + * Selecting from the DBF before the write occurs. + * Change the UNITS between Feet and Meters and Shift X,Y. + * Clip and Erase boundary. The program only passes thru the + * data once. + * + * Bill Miller North Carolina - Department of Transporation + * Feb. 1997 -- bmiller@dot.state.nc.us + * There was not a lot of time to debug hidden problems; + * And the code is not very well organized or documented. + * The clip/erase function was not well tested. + * Oct. 2000 -- bmiller@dot.state.nc.us + * Fixed the problem when select is using numbers + * larger than short integer. It now reads long integer. + * NOTE: DBF files created using windows NT will read as a string with + * a length of 381 characters. This is a bug in "dbfopen". + * + * + * Author: Bill Miller (bmiller@dot.state.nc.us) + * + ****************************************************************************** + * Copyright (c) 1999, Frank Warmerdam + * + * This software is available under the following "MIT Style" license, + * or at the option of the licensee under the LGPL (see COPYING). This + * option is discussed in more detail in shapelib.html. + * + * -- + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included + * in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS + * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. + ****************************************************************************** + * + * $Log: shputils.c,v $ + * Revision 1.11 2016-12-05 12:44:06 erouault + * * Major overhaul of Makefile build system to use autoconf/automake. + * + * * Warning fixes in contrib/ + * + * Revision 1.10 2007-12-13 19:59:23 fwarmerdam + * reindent code, avoid some warnings. + * + * Revision 1.9 2004/01/14 14:56:00 fwarmerdam + * Some cleanlyness improvements. + * + * Revision 1.8 2004/01/14 14:40:22 fwarmerdam + * Fixed exit() call to include code. + * + * Revision 1.7 2003/02/25 17:20:22 warmerda + * Set psCShape to NULL after SHPDestroyObject() to avoid multi-frees of + * the same memory ... as submitted by Fred Fox. + * + * Revision 1.6 2001/08/28 13:57:14 warmerda + * fixed DBFAddField return value check + * + * Revision 1.5 2000/11/02 13:52:48 warmerda + * major upgrade from Bill Miller + * + * Revision 1.4 1999/11/05 14:12:05 warmerda + * updated license terms + * + * Revision 1.3 1998/12/03 15:47:39 warmerda + * Did a bunch of rewriting to make it work with the V1.2 API. + * + * Revision 1.2 1998/06/18 01:19:49 warmerda + * Made C++ compilable. + * + * Revision 1.1 1997/05/27 20:40:27 warmerda + * Initial revision + */ + +#include "shapefil.h" +#include "string.h" +#include + +SHP_CVSID("$Id: shputils.c,v 1.11 2016-12-05 12:44:06 erouault Exp $") + +#ifndef FALSE +# define FALSE 0 +# define TRUE 1 +#endif + +char infile[80], outfile[80], temp[400]; + +/* Variables for shape files */ +SHPHandle hSHP; +SHPHandle hSHPappend; +int nShapeType, nEntities, iPart; +int nShapeTypeAppend, nEntitiesAppend; +SHPObject *psCShape; +double adfBoundsMin[4], adfBoundsMax[4]; + + +/* Variables for DBF files */ +DBFHandle hDBF; +DBFHandle hDBFappend; + +DBFFieldType iType; +DBFFieldType jType; + +char iszTitle[12]; +char jszTitle[12]; + +int *pt; +char iszFormat[32], iszField[1024]; +char jszFormat[32], jszField[1024]; +int i, ti, iWidth, iDecimals, iRecord; +int j, tj, jWidth, jDecimals, jRecord; + + +int clip_boundary(); +double findunit(char *unit); +void openfiles(void); +void setext(char *pt, char *ext); +int strncasecmp2(char *s1, char *s2, int n); +void mergefields(void); +void findselect(void); +void showitems(void); +int selectrec(); +void check_theme_bnd(); +int clip_boundary(); +void error(); + + +/* -------------------------------------------------------------------- */ +/* Variables for the DESCRIBE function */ +/* -------------------------------------------------------------------- */ + int ilist = FALSE, iall = FALSE; +/* -------------------------------------------------------------------- */ +/* Variables for the SELECT function */ +/* -------------------------------------------------------------------- */ + int found = FALSE, newdbf = FALSE; + char selectitem[40], *cpt; + long int selectvalues[150], selcount=0; + int iselect = FALSE, iselectitem = -1; + int iunselect = FALSE; + +/* -------------------------------------------------------------------- */ +/* Variables for the CLIP and ERASE functions */ +/* -------------------------------------------------------------------- */ + double cxmin, cymin, cxmax, cymax; + int iclip = FALSE, ierase = FALSE; + int itouch = FALSE, iinside = FALSE, icut = FALSE; + int ibound = FALSE, ipoly = FALSE; + char clipfile[80]; + +/* -------------------------------------------------------------------- */ +/* Variables for the FACTOR function */ +/* -------------------------------------------------------------------- */ + double infactor,outfactor,factor = 0; /* NO FACTOR */ + int iunit = FALSE; + int ifactor = FALSE; + + +/* -------------------------------------------------------------------- */ +/* Variables for the SHIFT function */ +/* -------------------------------------------------------------------- */ + double xshift = 0, yshift = 0; /* NO SHIFT */ + +int main( int argc, char ** argv ) +{ + +/* -------------------------------------------------------------------- */ +/* Check command line usage. */ +/* -------------------------------------------------------------------- */ + if( argc < 2 ) error(); + strcpy(infile, argv[1]); + if (argc > 2) { + strcpy(outfile,argv[2]); + if (strncasecmp2(outfile, "LIST",0) == 0) { ilist = TRUE; } + if (strncasecmp2(outfile, "ALL",0) == 0) { iall = TRUE; } + } + if (ilist || iall || argc == 2 ) { + setext(infile, "shp"); + printf("DESCRIBE: %s\n",infile); + strcpy(outfile,""); + } +/* -------------------------------------------------------------------- */ +/* Look for other functions on the command line. (SELECT, UNIT) */ +/* -------------------------------------------------------------------- */ + for (i = 3; i < argc; i++) + { + if ((strncasecmp2(argv[i], "SEL",3) == 0) || + (strncasecmp2(argv[i], "UNSEL",5) == 0)) + { + if (strncasecmp2(argv[i], "UNSEL",5) == 0) iunselect=TRUE; + i++; + if (i >= argc) error(); + strcpy(selectitem,argv[i]); + i++; + if (i >= argc) error(); + selcount=0; + strcpy(temp,argv[i]); + cpt=temp; + tj = atoi(cpt); + ti = 0; + while (tj>0) { + selectvalues[selcount] = tj; + while( *cpt >= '0' && *cpt <= '9') + cpt++; + while( *cpt > '\0' && (*cpt < '0' || *cpt > '9') ) + cpt++; + tj=atoi(cpt); + selcount++; + } + iselect=TRUE; + } /*** End SEL & UNSEL ***/ + else + if ((strncasecmp2(argv[i], "CLIP",4) == 0) || + (strncasecmp2(argv[i], "ERASE",5) == 0)) + { + if (strncasecmp2(argv[i], "ERASE",5) == 0) ierase=TRUE; + i++; + if (i >= argc) error(); + strcpy(clipfile,argv[i]); + sscanf(argv[i],"%lf",&cxmin); + i++; + if (i >= argc) error(); + if (strncasecmp2(argv[i], "BOUND",5) == 0) { + setext(clipfile, "shp"); + hSHP = SHPOpen( clipfile, "rb" ); + if( hSHP == NULL ) + { + printf( "ERROR: Unable to open the clip shape file:%s\n", clipfile ); + exit( 1 ); + } + SHPGetInfo( hSHPappend, NULL, NULL, + adfBoundsMin, adfBoundsMax ); + cxmin = adfBoundsMin[0]; + cymin = adfBoundsMin[1]; + cxmax = adfBoundsMax[0]; + cymax = adfBoundsMax[1]; + printf("Theme Clip Boundary: (%lf,%lf) - (%lf,%lf)\n", + cxmin, cymin, cxmax, cymax); + ibound=TRUE; + } else { /*** xmin,ymin,xmax,ymax ***/ + sscanf(argv[i],"%lf",&cymin); + i++; + if (i >= argc) error(); + sscanf(argv[i],"%lf",&cxmax); + i++; + if (i >= argc) error(); + sscanf(argv[i],"%lf",&cymax); + printf("Clip Box: (%lf,%lf) - (%lf,%lf)\n",cxmin, cymin, cxmax, cymax); + } + i++; + if (i >= argc) error(); + if (strncasecmp2(argv[i], "CUT",3) == 0) icut=TRUE; + else if (strncasecmp2(argv[i], "TOUCH",5) == 0) itouch=TRUE; + else if (strncasecmp2(argv[i], "INSIDE",6) == 0) iinside=TRUE; + else error(); + iclip=TRUE; + } /*** End CLIP & ERASE ***/ + else if (strncasecmp2(argv[i], "FACTOR",0) == 0) + { + i++; + if (i >= argc) error(); + infactor=findunit(argv[i]); + if (infactor == 0) error(); + iunit=TRUE; + i++; + if (i >= argc) error(); + outfactor=findunit(argv[i]); + if (outfactor == 0) + { + sscanf(argv[i],"%lf",&factor); + if (factor == 0) error(); + } + if (factor == 0) + { + if (infactor ==0) + { puts("ERROR: Input unit must be defined before output unit"); exit(1); } + factor=infactor/outfactor; + } + printf("Output file coordinate values will be factored by %lg\n",factor); + ifactor=(factor != 1); /* True if a valid factor */ + } /*** End FACTOR ***/ + else if (strncasecmp2(argv[i],"SHIFT",5) == 0) + { + i++; + if (i >= argc) error(); + sscanf(argv[i],"%lf",&xshift); + i++; + if (i >= argc) error(); + sscanf(argv[i],"%lf",&yshift); + iunit=TRUE; + printf("X Shift: %lg Y Shift: %lg\n",xshift,yshift); + } /*** End SHIFT ***/ + else { + printf("ERROR: Unknown function %s\n",argv[i]); error(); + } + } +/* -------------------------------------------------------------------- */ +/* If there is no data in this file let the user know. */ +/* -------------------------------------------------------------------- */ + openfiles(); /* Open the infile and the outfile for shape and dbf. */ + if( DBFGetFieldCount(hDBF) == 0 ) + { + puts( "There are no fields in this table!" ); + exit( 1 ); + } +/* -------------------------------------------------------------------- */ +/* Print out the file bounds. */ +/* -------------------------------------------------------------------- */ + iRecord = DBFGetRecordCount( hDBF ); + SHPGetInfo( hSHP, NULL, NULL, adfBoundsMin, adfBoundsMax ); + + printf( "Input Bounds: (%lg,%lg) - (%lg,%lg) Entities: %d DBF: %d\n", + adfBoundsMin[0], adfBoundsMin[1], + adfBoundsMax[0], adfBoundsMax[1], + nEntities, iRecord ); + + if (strcmp(outfile,"") == 0) /* Describe the shapefile; No other functions */ + { + ti = DBFGetFieldCount( hDBF ); + showitems(); + exit(0); + } + + if (iclip) check_theme_bnd(); + + jRecord = DBFGetRecordCount( hDBFappend ); + SHPGetInfo( hSHPappend, NULL, NULL, adfBoundsMin, adfBoundsMax ); + if (nEntitiesAppend == 0) + puts("New Output File\n"); + else + printf( "Append Bounds: (%lg,%lg)-(%lg,%lg) Entities: %d DBF: %d\n", + adfBoundsMin[0], adfBoundsMin[1], + adfBoundsMax[0], adfBoundsMax[1], + nEntitiesAppend, jRecord ); + +/* -------------------------------------------------------------------- */ +/* Find matching fields in the append file or add new items. */ +/* -------------------------------------------------------------------- */ + mergefields(); +/* -------------------------------------------------------------------- */ +/* Find selection field if needed. */ +/* -------------------------------------------------------------------- */ + if (iselect) findselect(); + +/* -------------------------------------------------------------------- */ +/* Read all the records */ +/* -------------------------------------------------------------------- */ + jRecord = DBFGetRecordCount( hDBFappend ); + for( iRecord = 0; iRecord < nEntities; iRecord++) /** DBFGetRecordCount(hDBF) **/ + { +/* -------------------------------------------------------------------- */ +/* SELECT for values if needed. (Can the record be skipped.) */ +/* -------------------------------------------------------------------- */ + if (iselect) + if (selectrec() == 0) goto SKIP_RECORD; /** SKIP RECORD **/ + +/* -------------------------------------------------------------------- */ +/* Read a Shape record */ +/* -------------------------------------------------------------------- */ + psCShape = SHPReadObject( hSHP, iRecord ); + +/* -------------------------------------------------------------------- */ +/* Clip coordinates of shapes if needed. */ +/* -------------------------------------------------------------------- */ + if (iclip) + if (clip_boundary() == 0) goto SKIP_RECORD; /** SKIP RECORD **/ + +/* -------------------------------------------------------------------- */ +/* Read a DBF record and copy each field. */ +/* -------------------------------------------------------------------- */ + for( i = 0; i < DBFGetFieldCount(hDBF); i++ ) + { +/* -------------------------------------------------------------------- */ +/* Store the record according to the type and formatting */ +/* information implicit in the DBF field description. */ +/* -------------------------------------------------------------------- */ + if (pt[i] > -1) /* if the current field exists in output file */ + { + switch( DBFGetFieldInfo( hDBF, i, NULL, &iWidth, &iDecimals ) ) + { + case FTString: + case FTLogical: + DBFWriteStringAttribute(hDBFappend, jRecord, pt[i], + (DBFReadStringAttribute( hDBF, iRecord, i )) ); + break; + + case FTInteger: + DBFWriteIntegerAttribute(hDBFappend, jRecord, pt[i], + (DBFReadIntegerAttribute( hDBF, iRecord, i )) ); + break; + + case FTDouble: + DBFWriteDoubleAttribute(hDBFappend, jRecord, pt[i], + (DBFReadDoubleAttribute( hDBF, iRecord, i )) ); + break; + + case FTInvalid: + break; + } + } + } + jRecord++; +/* -------------------------------------------------------------------- */ +/* Change FACTOR and SHIFT coordinates of shapes if needed. */ +/* -------------------------------------------------------------------- */ + if (iunit) + { + for( j = 0; j < psCShape->nVertices; j++ ) + { + psCShape->padfX[j] = psCShape->padfX[j] * factor + xshift; + psCShape->padfY[j] = psCShape->padfY[j] * factor + yshift; + } + } + +/* -------------------------------------------------------------------- */ +/* Write the Shape record after recomputing current extents. */ +/* -------------------------------------------------------------------- */ + SHPComputeExtents( psCShape ); + SHPWriteObject( hSHPappend, -1, psCShape ); + + SKIP_RECORD: + SHPDestroyObject( psCShape ); + psCShape = NULL; + j=0; + } + +/* -------------------------------------------------------------------- */ +/* Print out the # of Entities and the file bounds. */ +/* -------------------------------------------------------------------- */ + jRecord = DBFGetRecordCount( hDBFappend ); + SHPGetInfo( hSHPappend, &nEntitiesAppend, &nShapeTypeAppend, + adfBoundsMin, adfBoundsMax ); + + printf( "Output Bounds: (%lg,%lg) - (%lg,%lg) Entities: %d DBF: %d\n\n", + adfBoundsMin[0], adfBoundsMin[1], + adfBoundsMax[0], adfBoundsMax[1], + nEntitiesAppend, jRecord ); + +/* -------------------------------------------------------------------- */ +/* Close the both shapefiles. */ +/* -------------------------------------------------------------------- */ + SHPClose( hSHP ); + SHPClose( hSHPappend ); + DBFClose( hDBF ); + DBFClose( hDBFappend ); + if (nEntitiesAppend == 0) { + puts("Remove the output files."); + setext(outfile, "dbf"); + remove(outfile); + setext(outfile, "shp"); + remove(outfile); + setext(outfile, "shx"); + remove(outfile); + } + return( 0 ); +} + + +/************************************************************************/ +/* openfiles() */ +/************************************************************************/ + +void openfiles() { +/* -------------------------------------------------------------------- */ +/* Open the DBF file. */ +/* -------------------------------------------------------------------- */ + setext(infile, "dbf"); + hDBF = DBFOpen( infile, "rb" ); + if( hDBF == NULL ) + { + printf( "ERROR: Unable to open the input DBF:%s\n", infile ); + exit( 1 ); + } +/* -------------------------------------------------------------------- */ +/* Open the append DBF file. */ +/* -------------------------------------------------------------------- */ + if (strcmp(outfile,"")) { + setext(outfile, "dbf"); + hDBFappend = DBFOpen( outfile, "rb+" ); + newdbf=0; + if( hDBFappend == NULL ) + { + newdbf=1; + hDBFappend = DBFCreate( outfile ); + if( hDBFappend == NULL ) + { + printf( "ERROR: Unable to open the append DBF:%s\n", outfile ); + exit( 1 ); + } + } + } +/* -------------------------------------------------------------------- */ +/* Open the passed shapefile. */ +/* -------------------------------------------------------------------- */ + setext(infile, "shp"); + hSHP = SHPOpen( infile, "rb" ); + + if( hSHP == NULL ) + { + printf( "ERROR: Unable to open the input shape file:%s\n", infile ); + exit( 1 ); + } + + SHPGetInfo( hSHP, &nEntities, &nShapeType, NULL, NULL ); + +/* -------------------------------------------------------------------- */ +/* Open the passed append shapefile. */ +/* -------------------------------------------------------------------- */ + if (strcmp(outfile,"")) { + setext(outfile, "shp"); + hSHPappend = SHPOpen( outfile, "rb+" ); + + if( hSHPappend == NULL ) + { + hSHPappend = SHPCreate( outfile, nShapeType ); + if( hSHPappend == NULL ) + { + printf( "ERROR: Unable to open the append shape file:%s\n", + outfile ); + exit( 1 ); + } + } + SHPGetInfo( hSHPappend, &nEntitiesAppend, &nShapeTypeAppend, + NULL, NULL ); + + if (nShapeType != nShapeTypeAppend) + { + puts( "ERROR: Input and Append shape files are of different types."); + exit( 1 ); + } + } +} + +/* -------------------------------------------------------------------- */ +/* Change the extension. If there is any extension on the */ +/* filename, strip it off and add the new extension */ +/* -------------------------------------------------------------------- */ +void setext(char *pt, char *ext) +{ +int i; + for( i = strlen(pt)-1; + i > 0 && pt[i] != '.' && pt[i] != '/' && pt[i] != '\\'; + i-- ) {} + + if( pt[i] == '.' ) + pt[i] = '\0'; + + strcat(pt,"."); + strcat(pt,ext); +} + + + +/* -------------------------------------------------------------------- */ +/* Find matching fields in the append file. */ +/* Output file must have zero records to add any new fields. */ +/* -------------------------------------------------------------------- */ +void mergefields() +{ + int i,j; + ti = DBFGetFieldCount( hDBF ); + tj = DBFGetFieldCount( hDBFappend ); + /* Create a pointer array for the max # of fields in the output file */ + pt = (int *) malloc( (ti+tj+1) * sizeof(int) ); + + for( i = 0; i < ti; i++ ) + { + pt[i]= -1; /* Initial pt values to -1 */ + } + /* DBF must be empty before adding items */ + jRecord = DBFGetRecordCount( hDBFappend ); + for( i = 0; i < ti; i++ ) + { + iType = DBFGetFieldInfo( hDBF, i, iszTitle, &iWidth, &iDecimals ); + found=FALSE; + { + for( j = 0; j < tj; j++ ) /* Search all field names for a match */ + { + jType = DBFGetFieldInfo( hDBFappend, j, jszTitle, &jWidth, &jDecimals ); + if (iType == jType && (strcmp(iszTitle, jszTitle) == 0) ) + { + if (found || newdbf) + { + if (i == j) pt[i]=j; + printf("Warning: Duplicate field name found (%s)\n",iszTitle); + /* Duplicate field name + (Try to guess the correct field by position) */ + } + else + { + pt[i]=j; found=TRUE; + } + } + } + } + + if (pt[i] == -1 && (! found) ) /* Try to force into an existing field */ + { /* Ignore the field name, width, and decimal places */ + jType = DBFGetFieldInfo( hDBFappend, j, jszTitle, &jWidth, &jDecimals ); + if (iType == jType) + { + pt[i]=i; found=1; + } + } + if ( (! found) && jRecord == 0) /* Add missing field to the append table */ + { /* The output DBF must be is empty */ + pt[i]=tj; + tj++; + if( DBFAddField( hDBFappend, iszTitle, iType, iWidth, iDecimals ) + == -1 ) + { + printf( "Warning: DBFAddField(%s, TYPE:%d, WIDTH:%d DEC:%d, ITEM#:%d of %d) failed.\n", + iszTitle, iType, iWidth, iDecimals, (i+1), (ti+1) ); + pt[i]=-1; + } + } + } +} + + +void findselect() +{ + /* Find the select field name */ + iselectitem = -1; + for( i = 0; i < ti && iselectitem < 0; i++ ) + { + iType = DBFGetFieldInfo( hDBF, i, iszTitle, &iWidth, &iDecimals ); + if (strncasecmp2(iszTitle, selectitem, 0) == 0) iselectitem = i; + } + if (iselectitem == -1) + { + printf("Warning: Item not found for selection (%s)\n",selectitem); + iselect = FALSE; + iall = FALSE; + showitems(); + printf("Continued... (Selecting entire file)\n"); + } + /* Extract all of the select values (by field type) */ + +} + +void showitems() +{ + char stmp[40],slow[40],shigh[40]; + double dtmp,dlow,dhigh,dsum,mean; + long int itmp,ilow,ihigh,isum; + long int maxrec; + char *pt; + + printf("Available Items: (%d)",ti); + maxrec = DBFGetRecordCount(hDBF); + if (maxrec > 5000 && ! iall) + { maxrec=5000; printf(" ** ESTIMATED RANGES (MEAN) For more records use \"All\""); } + else { printf(" RANGES (MEAN)"); } + + for( i = 0; i < ti; i++ ) + { + switch( DBFGetFieldInfo( hDBF, i, iszTitle, &iWidth, &iDecimals ) ) + { + case FTString: + case FTLogical: + strcpy(slow, "~"); + strcpy(shigh,"\0"); + printf("\n String %3d %-16s",iWidth,iszTitle); + for( iRecord = 0; iRecord < maxrec; iRecord++ ) { + strncpy(stmp,DBFReadStringAttribute( hDBF, iRecord, i ),39); + if (strcmp(stmp,"!!") > 0) { + if (strncasecmp2(stmp,slow,0) < 0) strncpy(slow, stmp,39); + if (strncasecmp2(stmp,shigh,0) > 0) strncpy(shigh,stmp,39); + } + } + pt=slow+strlen(slow)-1; + while(*pt == ' ') { *pt='\0'; pt--; } + pt=shigh+strlen(shigh)-1; + while(*pt == ' ') { *pt='\0'; pt--; } + if (strncasecmp2(slow,shigh,0) < 0) printf("%s to %s",slow,shigh); + else if (strncasecmp2(slow,shigh,0) == 0) printf("= %s",slow); + else printf("No Values"); + break; + case FTInteger: + printf("\n Integer %3d %-16s",iWidth,iszTitle); + ilow = 1999999999; + ihigh= -1999999999; + isum = 0; + for( iRecord = 0; iRecord < maxrec; iRecord++ ) { + itmp = DBFReadIntegerAttribute( hDBF, iRecord, i ); + if (ilow > itmp) ilow = itmp; + if (ihigh < itmp) ihigh = itmp; + isum = isum + itmp; + } + mean=isum/maxrec; + if (ilow < ihigh) printf("%ld to %ld \t(%.1f)",ilow,ihigh,mean); + else if (ilow == ihigh) printf("= %ld",ilow); + else printf("No Values"); + break; + + case FTDouble: + printf("\n Real %3d,%d %-16s",iWidth,iDecimals,iszTitle); + dlow = 999999999999999.0; + dhigh= -999999999999999.0; + dsum = 0; + for( iRecord = 0; iRecord < maxrec; iRecord++ ) { + dtmp = DBFReadDoubleAttribute( hDBF, iRecord, i ); + if (dlow > dtmp) dlow = dtmp; + if (dhigh < dtmp) dhigh = dtmp; + dsum = dsum + dtmp; + } + mean=dsum/maxrec; + sprintf(stmp,"%%.%df to %%.%df \t(%%.%df)",iDecimals,iDecimals,iDecimals); + if (dlow < dhigh) printf(stmp,dlow,dhigh,mean); + else if (dlow == dhigh) { + sprintf(stmp,"= %%.%df",iDecimals); + printf(stmp,dlow); + } + else printf("No Values"); + break; + + case FTInvalid: + break; + + } + + } + printf("\n"); +} + +int selectrec() +{ + long int value, ty; + + ty = DBFGetFieldInfo( hDBF, iselectitem, NULL, &iWidth, &iDecimals); + switch(ty) + { + case FTString: + puts("Invalid Item"); + iselect=FALSE; + break; + case FTInteger: + value = DBFReadIntegerAttribute( hDBF, iRecord, iselectitem ); + for (j = 0; j= cxmin) && (adfBoundsMax[0] <= cxmax) && + (adfBoundsMin[1] >= cymin) && (adfBoundsMax[1] <= cymax) ) + { /** Theme is totally inside clip area **/ + if (ierase) nEntities=0; /** SKIP THEME **/ + else iclip=FALSE; /** WRITE THEME (Clip not needed) **/ + } + + if ( ( (adfBoundsMin[0] < cxmin) && (adfBoundsMax[0] < cxmin) ) || + ( (adfBoundsMin[1] < cymin) && (adfBoundsMax[1] < cymin) ) || + ( (adfBoundsMin[0] > cxmax) && (adfBoundsMax[0] > cxmax) ) || + ( (adfBoundsMin[1] > cymax) && (adfBoundsMax[1] > cymax) ) ) + { /** Theme is totally outside clip area **/ + if (ierase) iclip=FALSE; /** WRITE THEME (Clip not needed) **/ + else nEntities=0; /** SKIP THEME **/ + } + + if (nEntities == 0) + puts("WARNING: Theme is outside the clip area."); /** SKIP THEME **/ +} + +int clip_boundary() +{ + int inside; + int prev_outside; + int i2; + int j2; + + /*** FIRST check the boundary of the feature ***/ + if ( ( (psCShape->dfXMin < cxmin) && (psCShape->dfXMax < cxmin) ) || + ( (psCShape->dfYMin < cymin) && (psCShape->dfYMax < cymin) ) || + ( (psCShape->dfXMin > cxmax) && (psCShape->dfXMax > cxmax) ) || + ( (psCShape->dfYMin > cymax) && (psCShape->dfYMax > cymax) ) ) + { /** Feature is totally outside clip area **/ + if (ierase) return(1); /** WRITE RECORD **/ + else return(0); /** SKIP RECORD **/ + } + + if ( (psCShape->dfXMin >= cxmin) && (psCShape->dfXMax <= cxmax) && + (psCShape->dfYMin >= cymin) && (psCShape->dfYMax <= cymax) ) + { /** Feature is totally inside clip area **/ + if (ierase) return(0); /** SKIP RECORD **/ + else return(1); /** WRITE RECORD **/ + } + + if (iinside) + { /** INSIDE * Feature might touch the boundary or could be outside **/ + if (ierase) return(1); /** WRITE RECORD **/ + else return(0); /** SKIP RECORD **/ + } + + if (itouch) + { /** TOUCH **/ + if ( ( (psCShape->dfXMin <= cxmin) || (psCShape->dfXMax >= cxmax) ) && + (psCShape->dfYMin >= cymin) && (psCShape->dfYMax <= cymax) ) + { /** Feature intersects the clip boundary only on the X axis **/ + if (ierase) return(0); /** SKIP RECORD **/ + else return(1); /** WRITE RECORD **/ + } + + if ( (psCShape->dfXMin >= cxmin) && (psCShape->dfXMax <= cxmax) && + ( (psCShape->dfYMin <= cymin) || (psCShape->dfYMax >= cymax) ) ) + { /** Feature intersects the clip boundary only on the Y axis **/ + if (ierase) return(0); /** SKIP RECORD **/ + else return(1); /** WRITE RECORD **/ + } + + for( j2 = 0; j2 < psCShape->nVertices; j2++ ) + { /** At least one vertex must be inside the clip boundary **/ + if ( (psCShape->padfX[j2] >= cxmin && psCShape->padfX[j2] <= cxmax) || + (psCShape->padfY[j2] >= cymin && psCShape->padfY[j2] <= cymax) ) + { + if (ierase) return(0); /** SKIP RECORD **/ + else return(1); /** WRITE RECORD **/ + } + } + + /** All vertices are outside the clip boundary **/ + if (ierase) return(1); /** WRITE RECORD **/ + else return(0); /** SKIP RECORD **/ + } /** End TOUCH **/ + + if (icut) + { /** CUT **/ + /*** Check each vertex in the feature with the Boundary and "CUT" ***/ + /*** THIS CODE WAS NOT COMPLETED! READ NOTE AT THE BOTTOM ***/ + i2=0; + prev_outside=FALSE; + for( j2 = 0; j2 < psCShape->nVertices; j2++ ) + { + inside = psCShape->padfX[j2] >= cxmin && psCShape->padfX[j2] <= cxmax && + psCShape->padfY[j2] >= cymin && psCShape->padfY[j2] <= cymax ; + + if (ierase) inside=(! inside); + if (inside) + { + if (i2 != j2) + { + if (prev_outside) + { + /*** AddIntersection(i2); ***/ /*** Add intersection ***/ + prev_outside=FALSE; + } + psCShape->padfX[i2]=psCShape->padfX[j2]; /** move vertex **/ + psCShape->padfY[i2]=psCShape->padfY[j2]; + } + i2++; + } else { + if ( (! prev_outside) && (j2 > 0) ) + { + /*** AddIntersection(i2); ***//*** Add intersection (Watch out for j2==i2-1) ***/ + /*** Also a polygon may overlap twice and will split into a several parts ***/ + prev_outside=TRUE; + } + } + } + + printf("Vertices:%d OUT:%d Number of Parts:%d\n", + psCShape->nVertices,i2, psCShape->nParts ); + + psCShape->nVertices = i2; + + if (i2 < 2) return(0); /** SKIP RECORD **/ + /*** (WE ARE NOT CREATING INTERESECTIONS and some lines could be reduced to one point) **/ + + if (i2 == 0) return(0); /** SKIP RECORD **/ + else return(1); /** WRITE RECORD **/ + } /** End CUT **/ +} + + +/************************************************************************/ +/* strncasecmp2() */ +/* */ +/* Compare two strings up to n characters */ +/* If n=0 then s1 and s2 must be an exact match */ +/************************************************************************/ + +int strncasecmp2(char *s1, char *s2, int n) + +{ +int j,i; + if (n<1) n=strlen(s1)+1; + for (i=0; i= 'a' && *s1 <= 'z') { + j=*s1-32; + if (j != *s2) return(*s1-*s2); + } else { + if (*s1 >= 'A' && *s1 <= 'Z') { j=*s1+32; } + else { j=*s1; } + if (j != *s2) return(*s1-*s2); + } + } + s1++; + s2++; + } + return(0); +} + + +#define NKEYS (sizeof(unitkeytab) / sizeof(struct unitkey)) +double findunit(char *unit) + { + struct unitkey { + char *name; + double value; + } unitkeytab[] = { + "CM", 39.37, + "CENTIMETER", 39.37, + "CENTIMETERS", 39.37, /** # of inches * 100 in unit **/ + "METER", 3937, + "METERS", 3937, + "KM", 3937000, + "KILOMETER", 3937000, + "KILOMETERS", 3937000, + "INCH", 100, + "INCHES", 100, + "FEET", 1200, + "FOOT", 1200, + "YARD", 3600, + "YARDS", 3600, + "MILE", 6336000, + "MILES", 6336000 + }; + + double unitfactor=0; + for (j = 0; j < NKEYS; j++) { + if (strncasecmp2(unit, unitkeytab[j].name, 0) == 0) unitfactor=unitkeytab[j].value; + } + return(unitfactor); +} + +/* -------------------------------------------------------------------- */ +/* Display a usage message. */ +/* -------------------------------------------------------------------- */ +void error() +{ + puts( "The program will append to an existing shape file or it will" ); + puts( "create a new file if needed." ); + puts( "Only the items in the first output file will be preserved." ); + puts( "When an item does not match with the append theme then the item"); + puts( "might be placed to an existing item at the same position and type." ); + puts( " OTHER FUNCTIONS:" ); + puts( " - Describe all items in the dbase file (Use ALL for more than 5000 recs.)"); + puts( " - Select a group of shapes from a comma separated selection list."); + puts( " - UnSelect a group of shapes from a comma separated selection list."); + puts( " - Clip boundary extent or by theme boundary." ); + puts( " Touch writes all the shapes that touch the boundary."); + puts( " Inside writes all the shapes that are completely within the boundary."); + puts( " Boundary clips are only the min and max of a theme boundary." ); + puts( " - Erase boundary extent or by theme boundary." ); + puts( " Erase is the direct opposite of the Clip function." ); + puts( " - Change coordinate value units between meters and feet."); + puts( " There is no way to determine the input unit of a shape file."); + puts( " Skip this function if the shape file is already in the correct unit."); + puts( " Clip and Erase will be done before the unit is changed."); + puts( " A shift will be done after the unit is changed."); + puts( " - Shift X and Y coordinates.\n" ); + puts( "Finally, There can only be one select or unselect in the command line."); + puts( " There can only be one clip or erase in the command line."); + puts( " There can only be one unit and only one shift in the command line.\n"); + puts( "Ex: shputils in.shp out.shp SELECT countycode 3,5,9,13,17,27"); + puts( " shputils in.shp out.shp CLIP 10 10 90 90 Touch FACTOR Meter Feet"); + puts( " shputils in.shp out.shp FACTOR Meter 3.0"); + puts( " shputils in.shp out.shp CLIP clip.shp Boundary Touch SHIFT 40 40"); + puts( " shputils in.shp out.shp SELECT co 112 CLIP clip.shp Boundary Touch\n"); + puts( "USAGE: shputils {ALL}"); + puts( "USAGE: shputils " ); + puts( " { }" ); + puts( " { }" ); + puts( " { }" ); + puts( " { }" ); + puts( " { }" ); + puts( " Note: CUT is not complete and does not create intersections."); + puts( " For more information read programmer comment."); + + /**** Clip functions for Polygon and Cut is not supported + There are several web pages that describe methods of doing this function. + It seem easy to impliment until you start writting code. I don't have the + time to add these functions but a did leave a simple cut routine in the + program that can be called by using CUT instead of TOUCH in the + CLIP or ERASE functions. It does not add the intersection of the line and + the clip box, so polygons could look incomplete and lines will come up short. + + Information about clipping lines with a box: + http://www.csclub.uwaterloo.ca/u/mpslager/articles/sutherland/wr.html + Information about finding the intersection of two lines: + http://www.whisqu.se/per/docs/math28.htm + + THE CODE LOOKS LIKE THIS: + ******************************************************** + void Intersect_Lines(float x0,float y0,float x1,float y1, + float x2,float y2,float x3,float y3, + float *xi,float *yi) + { +// this function computes the intersection of the sent lines +// and returns the intersection point, note that the function assumes +// the lines intersect. the function can handle vertical as well +// as horizontal lines. note the function isn't very clever, it simply +// applies the math, but we don't need speed since this is a +// pre-processing step +// The Intersect_lines program came from (http://www.whisqu.se/per/docs/math28.htm) + +float a1,b1,c1, // constants of linear equations +a2,b2,c2, +det_inv, // the inverse of the determinant of the coefficientmatrix +m1,m2; // the slopes of each line + +// compute slopes, note the cludge for infinity, however, this will +// be close enough +if ((x1-x0)!=0) +m1 = (y1-y0)/(x1-x0); +else +m1 = (float)1e+10; // close enough to infinity + + +if ((x3-x2)!=0) +m2 = (y3-y2)/(x3-x2); +else +m2 = (float)1e+10; // close enough to infinity + +// compute constants +a1 = m1; +a2 = m2; +b1 = -1; +b2 = -1; +c1 = (y0-m1*x0); +c2 = (y2-m2*x2); +// compute the inverse of the determinate +det_inv = 1/(a1*b2 - a2*b1); +// use Kramers rule to compute xi and yi +*xi=((b1*c2 - b2*c1)*det_inv); +*yi=((a2*c1 - a1*c2)*det_inv); +} // end Intersect_Lines + **********************************************************/ + + exit( 1 ); +} diff --git a/libs/shapelib/test-driver b/libs/shapelib/test-driver new file mode 100755 index 0000000..8e575b0 --- /dev/null +++ b/libs/shapelib/test-driver @@ -0,0 +1,148 @@ +#! /bin/sh +# test-driver - basic testsuite driver script. + +scriptversion=2013-07-13.22; # UTC + +# Copyright (C) 2011-2014 Free Software Foundation, Inc. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2, or (at your option) +# any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + +# This file is maintained in Automake, please report +# bugs to or send patches to +# . + +# Make unconditional expansion of undefined variables an error. This +# helps a lot in preventing typo-related bugs. +set -u + +usage_error () +{ + echo "$0: $*" >&2 + print_usage >&2 + exit 2 +} + +print_usage () +{ + cat <$log_file 2>&1 +estatus=$? + +if test $enable_hard_errors = no && test $estatus -eq 99; then + tweaked_estatus=1 +else + tweaked_estatus=$estatus +fi + +case $tweaked_estatus:$expect_failure in + 0:yes) col=$red res=XPASS recheck=yes gcopy=yes;; + 0:*) col=$grn res=PASS recheck=no gcopy=no;; + 77:*) col=$blu res=SKIP recheck=no gcopy=yes;; + 99:*) col=$mgn res=ERROR recheck=yes gcopy=yes;; + *:yes) col=$lgn res=XFAIL recheck=no gcopy=yes;; + *:*) col=$red res=FAIL recheck=yes gcopy=yes;; +esac + +# Report the test outcome and exit status in the logs, so that one can +# know whether the test passed or failed simply by looking at the '.log' +# file, without the need of also peaking into the corresponding '.trs' +# file (automake bug#11814). +echo "$res $test_name (exit status: $estatus)" >>$log_file + +# Report outcome to console. +echo "${col}${res}${std}: $test_name" + +# Register the test result, and other relevant metadata. +echo ":test-result: $res" > $trs_file +echo ":global-test-result: $res" >> $trs_file +echo ":recheck: $recheck" >> $trs_file +echo ":copy-in-global-log: $gcopy" >> $trs_file + +# Local Variables: +# mode: shell-script +# sh-indentation: 2 +# eval: (add-hook 'write-file-hooks 'time-stamp) +# time-stamp-start: "scriptversion=" +# time-stamp-format: "%:y-%02m-%02d.%02H" +# time-stamp-time-zone: "UTC" +# time-stamp-end: "; # UTC" +# End: diff --git a/libs/shapelib/tests/stream1.out b/libs/shapelib/tests/stream1.out new file mode 100644 index 0000000..de59c44 --- /dev/null +++ b/libs/shapelib/tests/stream1.out @@ -0,0 +1,1465 @@ +------------------------------------------------------------------------- +Test 1: dump anno.shp +------------------------------------------------------------------------- +Shapefile Type: Polygon # of Shapes: 201 + +File Bounds: ( 471276.281, 4751595.500,0,0) + to ( 492683.536, 4765390.413,0,0) + +Shape:0 (Polygon) nVertices=5, nParts=1 + Bounds:( 486019.130, 4764549.500, 0, 0) + to ( 486356.183, 4765212.744, 0, 0) + ( 486089.531, 4764549.500, 0, 0) Ring + ( 486019.130, 4764579.128, 0, 0) + ( 486285.782, 4765212.744, 0, 0) + ( 486356.183, 4765183.116, 0, 0) + ( 486089.531, 4764549.500, 0, 0) + +Shape:1 (Polygon) nVertices=5, nParts=1 + Bounds:( 484948.275, 4763866.500, 0, 0) + to ( 485333.012, 4764070.376, 0, 0) + ( 484974.719, 4763866.500, 0, 0) Ring + ( 484948.275, 4763938.159, 0, 0) + ( 485306.569, 4764070.376, 0, 0) + ( 485333.012, 4763998.717, 0, 0) + ( 484974.719, 4763866.500, 0, 0) + +Shape:2 (Polygon) nVertices=5, nParts=1 + Bounds:( 485577.021, 4764106.500, 0, 0) + to ( 485818.355, 4764259.305, 0, 0) + ( 485604.156, 4764106.500, 0, 0) Ring + ( 485577.021, 4764177.900, 0, 0) + ( 485791.220, 4764259.305, 0, 0) + ( 485818.355, 4764187.906, 0, 0) + ( 485604.156, 4764106.500, 0, 0) + +Shape:3 (Polygon) nVertices=5, nParts=1 + Bounds:( 484861.500, 4762570.513, 0, 0) + to ( 485092.062, 4763026.856, 0, 0) + ( 485092.062, 4762597.000, 0, 0) Ring + ( 485020.420, 4762570.513, 0, 0) + ( 484861.500, 4763000.370, 0, 0) + ( 484933.143, 4763026.856, 0, 0) + ( 485092.062, 4762597.000, 0, 0) + +Shape:4 (Polygon) nVertices=5, nParts=1 + Bounds:( 484452.624, 4763792.614, 0, 0) + to ( 484628.031, 4764105.947, 0, 0) + ( 484628.031, 4763818.500, 0, 0) Ring + ( 484556.169, 4763792.614, 0, 0) + ( 484452.624, 4764080.061, 0, 0) + ( 484524.486, 4764105.947, 0, 0) + ( 484628.031, 4763818.500, 0, 0) + +Shape:5 (Polygon) nVertices=5, nParts=1 + Bounds:( 484355.352, 4764139.435, 0, 0) + to ( 484505.344, 4764380.892, 0, 0) + ( 484505.344, 4764165.500, 0, 0) Ring + ( 484433.546, 4764139.435, 0, 0) + ( 484355.352, 4764354.827, 0, 0) + ( 484427.150, 4764380.892, 0, 0) + ( 484505.344, 4764165.500, 0, 0) + +Shape:6 (Polygon) nVertices=9, nParts=1 + Bounds:( 484548.866, 4763118.531, 0, 0) + to ( 484772.062, 4763742.258, 0, 0) + ( 484772.062, 4763152.000, 0, 0) Ring + ( 484703.404, 4763118.531, 0, 0) + ( 484605.763, 4763318.832, 0, 0) + ( 484548.866, 4763471.149, 0, 0) + ( 484603.088, 4763742.258, 0, 0) + ( 484677.987, 4763727.278, 0, 0) + ( 484628.031, 4763477.500, 0, 0) + ( 484676.031, 4763349.000, 0, 0) + ( 484772.062, 4763152.000, 0, 0) + +Shape:7 (Polygon) nVertices=5, nParts=1 + Bounds:( 484671.739, 4763562.500, 0, 0) + to ( 484911.415, 4763682.338, 0, 0) + ( 484686.719, 4763562.500, 0, 0) Ring + ( 484671.739, 4763637.399, 0, 0) + ( 484896.435, 4763682.338, 0, 0) + ( 484911.415, 4763607.439, 0, 0) + ( 484686.719, 4763562.500, 0, 0) + +Shape:8 (Polygon) nVertices=5, nParts=1 + Bounds:( 484930.172, 4763125.500, 0, 0) + to ( 485596.342, 4763453.269, 0, 0) + ( 484958.719, 4763125.500, 0, 0) Ring + ( 484930.172, 4763196.347, 0, 0) + ( 485567.795, 4763453.269, 0, 0) + ( 485596.342, 4763382.423, 0, 0) + ( 484958.719, 4763125.500, 0, 0) + +Shape:9 (Polygon) nVertices=5, nParts=1 + Bounds:( 485102.757, 4763082.500, 0, 0) + to ( 485344.154, 4763234.029, 0, 0) + ( 485129.406, 4763082.500, 0, 0) Ring + ( 485102.757, 4763154.083, 0, 0) + ( 485317.505, 4763234.029, 0, 0) + ( 485344.154, 4763162.446, 0, 0) + ( 485129.406, 4763082.500, 0, 0) + +Shape:10 (Polygon) nVertices=5, nParts=1 + Bounds:( 485368.786, 4762538.500, 0, 0) + to ( 485824.016, 4762774.029, 0, 0) + ( 485396.156, 4762538.500, 0, 0) Ring + ( 485368.786, 4762609.810, 0, 0) + ( 485796.646, 4762774.029, 0, 0) + ( 485824.016, 4762702.719, 0, 0) + ( 485396.156, 4762538.500, 0, 0) + +Shape:11 (Polygon) nVertices=5, nParts=1 + Bounds:( 487002.484, 4763184.000, 0, 0) + to ( 487243.960, 4763333.368, 0, 0) + ( 487028.312, 4763184.000, 0, 0) Ring + ( 487002.484, 4763255.883, 0, 0) + ( 487218.132, 4763333.368, 0, 0) + ( 487243.960, 4763261.486, 0, 0) + ( 487028.312, 4763184.000, 0, 0) + +Shape:12 (Polygon) nVertices=5, nParts=1 + Bounds:( 486733.537, 4762455.413, 0, 0) + to ( 487076.312, 4763275.483, 0, 0) + ( 487076.312, 4762480.000, 0, 0) Ring + ( 487003.996, 4762455.413, 0, 0) + ( 486733.537, 4763250.896, 0, 0) + ( 486805.854, 4763275.483, 0, 0) + ( 487076.312, 4762480.000, 0, 0) + +Shape:13 (Polygon) nVertices=5, nParts=1 + Bounds:( 486440.735, 4762331.029, 0, 0) + to ( 486772.281, 4763075.311, 0, 0) + ( 486772.281, 4762357.000, 0, 0) Ring + ( 486700.450, 4762331.029, 0, 0) + ( 486440.735, 4763049.339, 0, 0) + ( 486512.566, 4763075.311, 0, 0) + ( 486772.281, 4762357.000, 0, 0) + +Shape:14 (Polygon) nVertices=5, nParts=1 + Bounds:( 486383.882, 4762986.530, 0, 0) + to ( 486521.594, 4763227.908, 0, 0) + ( 486521.594, 4763008.000, 0, 0) Ring + ( 486448.291, 4762986.530, 0, 0) + ( 486383.882, 4763206.438, 0, 0) + ( 486457.184, 4763227.908, 0, 0) + ( 486521.594, 4763008.000, 0, 0) + +Shape:15 (Polygon) nVertices=9, nParts=1 + Bounds:( 486360.416, 4762774.310, 0, 0) + to ( 486800.882, 4763656.208, 0, 0) + ( 486489.594, 4763600.000, 0, 0) Ring + ( 486541.313, 4763656.208, 0, 0) + ( 486762.057, 4763453.094, 0, 0) + ( 486800.882, 4763266.659, 0, 0) + ( 486420.883, 4762774.310, 0, 0) + ( 486360.416, 4762820.979, 0, 0) + ( 486718.938, 4763285.500, 0, 0) + ( 486692.281, 4763413.500, 0, 0) + ( 486489.594, 4763600.000, 0, 0) + +Shape:16 (Polygon) nVertices=5, nParts=1 + Bounds:( 486682.872, 4762181.000, 0, 0) + to ( 487292.496, 4762415.463, 0, 0) + ( 486702.969, 4762181.000, 0, 0) Ring + ( 486682.872, 4762254.691, 0, 0) + ( 487272.400, 4762415.463, 0, 0) + ( 487292.496, 4762341.772, 0, 0) + ( 486702.969, 4762181.000, 0, 0) + +Shape:17 (Polygon) nVertices=5, nParts=1 + Bounds:( 487480.713, 4762283.320, 0, 0) + to ( 487732.406, 4762812.552, 0, 0) + ( 487732.406, 4762309.000, 0, 0) Ring + ( 487660.470, 4762283.320, 0, 0) + ( 487480.713, 4762786.872, 0, 0) + ( 487552.649, 4762812.552, 0, 0) + ( 487732.406, 4762309.000, 0, 0) + +Shape:18 (Polygon) nVertices=5, nParts=1 + Bounds:( 487069.757, 4763685.709, 0, 0) + to ( 487220.344, 4763927.145, 0, 0) + ( 487220.344, 4763712.000, 0, 0) Ring + ( 487148.629, 4763685.709, 0, 0) + ( 487069.757, 4763900.854, 0, 0) + ( 487141.471, 4763927.145, 0, 0) + ( 487220.344, 4763712.000, 0, 0) + +Shape:19 (Polygon) nVertices=9, nParts=1 + Bounds:( 487854.719, 4758279.000, 0, 0) + to ( 488518.085, 4758475.003, 0, 0) + ( 487854.719, 4758404.000, 0, 0) Ring + ( 487882.875, 4758475.003, 0, 0) + ( 488183.362, 4758355.845, 0, 0) + ( 488341.273, 4758360.840, 0, 0) + ( 488515.420, 4758366.919, 0, 0) + ( 488518.085, 4758290.583, 0, 0) + ( 488343.812, 4758284.500, 0, 0) + ( 488169.938, 4758279.000, 0, 0) + ( 487854.719, 4758404.000, 0, 0) + +Shape:20 (Polygon) nVertices=5, nParts=1 + Bounds:( 486300.557, 4758366.000, 0, 0) + to ( 486613.245, 4758546.262, 0, 0) + ( 486327.781, 4758366.000, 0, 0) Ring + ( 486300.557, 4758437.366, 0, 0) + ( 486586.021, 4758546.262, 0, 0) + ( 486613.245, 4758474.896, 0, 0) + ( 486327.781, 4758366.000, 0, 0) + +Shape:21 (Polygon) nVertices=5, nParts=1 + Bounds:( 486709.618, 4758518.000, 0, 0) + to ( 486949.999, 4758681.145, 0, 0) + ( 486740.750, 4758518.000, 0, 0) Ring + ( 486709.618, 4758587.750, 0, 0) + ( 486918.867, 4758681.145, 0, 0) + ( 486949.999, 4758611.396, 0, 0) + ( 486740.750, 4758518.000, 0, 0) + +Shape:22 (Polygon) nVertices=5, nParts=1 + Bounds:( 487325.398, 4757807.034, 0, 0) + to ( 487555.844, 4758263.402, 0, 0) + ( 487555.844, 4757833.500, 0, 0) Ring + ( 487484.193, 4757807.034, 0, 0) + ( 487325.398, 4758236.937, 0, 0) + ( 487397.049, 4758263.402, 0, 0) + ( 487555.844, 4757833.500, 0, 0) + +Shape:23 (Polygon) nVertices=5, nParts=1 + Bounds:( 487255.256, 4758215.573, 0, 0) + to ( 487387.406, 4758456.611, 0, 0) + ( 487387.406, 4758235.000, 0, 0) Ring + ( 487313.536, 4758215.573, 0, 0) + ( 487255.256, 4758437.184, 0, 0) + ( 487329.126, 4758456.611, 0, 0) + ( 487387.406, 4758235.000, 0, 0) + +Shape:24 (Polygon) nVertices=5, nParts=1 + Bounds:( 487248.714, 4758360.500, 0, 0) + to ( 487559.687, 4758550.761, 0, 0) + ( 487278.719, 4758360.500, 0, 0) Ring + ( 487248.714, 4758430.742, 0, 0) + ( 487529.682, 4758550.761, 0, 0) + ( 487559.687, 4758480.519, 0, 0) + ( 487278.719, 4758360.500, 0, 0) + +Shape:25 (Polygon) nVertices=5, nParts=1 + Bounds:( 487573.994, 4758496.500, 0, 0) + to ( 487815.502, 4758644.603, 0, 0) + ( 487599.344, 4758496.500, 0, 0) Ring + ( 487573.994, 4758568.553, 0, 0) + ( 487790.152, 4758644.603, 0, 0) + ( 487815.502, 4758572.550, 0, 0) + ( 487599.344, 4758496.500, 0, 0) +------------------------------------------------------------------------- +Test 2: dump brklinz.shp +------------------------------------------------------------------------- +Shapefile Type: ArcZ # of Shapes: 122 + +File Bounds: ( 6294338.260, 1978444.010,0,0) + to ( 6296321.860, 1979694.450,0,0) + +Shape:0 (ArcZ) nVertices=92, nParts=1 + Bounds:( 6294700.210, 1978579.390, 818.64, 0) + to ( 6295395.930, 1979050.330, 917.86, 0) + ( 6295372.750, 1978755.830, 823.06, 0) Ring + ( 6295366.170, 1978739.190, 826.58, 0) + ( 6295360.400, 1978718.540, 829.2, 0) + ( 6295352.620, 1978697.000, 832.22, 0) + ( 6295345.960, 1978677.040, 834.64, 0) + ( 6295339.690, 1978656.810, 838.51, 0) + ( 6295335.040, 1978637.600, 840.94, 0) + ( 6295331.080, 1978621.450, 844.48, 0) + ( 6295324.350, 1978607.940, 847.04, 0) + ( 6295313.370, 1978598.450, 850.38, 0) + ( 6295296.780, 1978594.950, 853.27, 0) + ( 6295273.800, 1978594.990, 858.06, 0) + ( 6295251.750, 1978595.380, 861.53, 0) + ( 6295232.340, 1978598.400, 864.22, 0) + ( 6295206.740, 1978606.390, 866.38, 0) + ( 6295180.610, 1978616.970, 868.15, 0) + ( 6295156.350, 1978630.540, 870.65, 0) + ( 6295132.270, 1978645.210, 872.02, 0) + ( 6295111.070, 1978659.740, 875.17, 0) + ( 6295090.030, 1978674.920, 878.84, 0) + ( 6295071.060, 1978689.340, 882.06, 0) + ( 6295051.900, 1978705.080, 886.98, 0) + ( 6295036.460, 1978719.260, 889.66, 0) + ( 6295023.620, 1978732.910, 893.53, 0) + ( 6295010.450, 1978750.380, 895.24, 0) + ( 6294999.910, 1978767.850, 897.47, 0) + ( 6294989.810, 1978783.860, 900.29, 0) + ( 6294975.040, 1978795.570, 902.45, 0) + ( 6294956.300, 1978806.830, 906.32, 0) + ( 6294937.260, 1978814.620, 909.21, 0) + ( 6294919.240, 1978821.960, 912.88, 0) + ( 6294897.040, 1978832.210, 915.04, 0) + ( 6294878.070, 1978844.070, 916.49, 0) + ( 6294865.010, 1978855.820, 917.34, 0) + ( 6294859.560, 1978870.150, 916.81, 0) + ( 6294861.520, 1978882.920, 916.62, 0) + ( 6294874.640, 1978906.220, 917.86, 0) + ( 6294886.980, 1978926.880, 917.6, 0) + ( 6294889.630, 1978953.270, 917.54, 0) + ( 6294888.520, 1978978.280, 916.88, 0) + ( 6294880.350, 1978998.390, 915.96, 0) + ( 6294866.540, 1979018.920, 915.57, 0) + ( 6294843.270, 1979039.140, 915.57, 0) + ( 6294812.250, 1979049.040, 915.96, 0) + ( 6294777.640, 1979050.330, 916.75, 0) + ( 6294752.060, 1979040.520, 916.68, 0) + ( 6294730.990, 1979028.850, 916.62, 0) + ( 6294716.690, 1979008.420, 916.62, 0) + ( 6294706.050, 1978987.490, 916.95, 0) + ( 6294700.210, 1978965.390, 916.95, 0) + ( 6294700.520, 1978937.670, 917.01, 0) + ( 6294712.060, 1978911.340, 916.95, 0) + ( 6294724.820, 1978893.560, 916.62, 0) + ( 6294741.630, 1978878.010, 916.36, 0) + ( 6294759.360, 1978865.090, 916.36, 0) + ( 6294777.650, 1978855.370, 916.22, 0) + ( 6294807.570, 1978846.970, 916.36, 0) + ( 6294837.640, 1978836.590, 916.55, 0) + ( 6294858.650, 1978831.390, 916.29, 0) + ( 6294878.860, 1978825.840, 915.37, 0) + ( 6294897.630, 1978817.860, 913.67, 0) + ( 6294914.550, 1978809.520, 910.78, 0) + ( 6294932.380, 1978798.580, 907.17, 0) + ( 6294947.360, 1978788.370, 904.42, 0) + ( 6294960.500, 1978778.120, 901.86, 0) + ( 6294974.780, 1978761.900, 898.78, 0) + ( 6294988.510, 1978747.610, 895.7, 0) + ( 6295005.230, 1978730.220, 892.81, 0) + ( 6295023.560, 1978713.470, 889.34, 0) + ( 6295043.310, 1978696.320, 885.07, 0) + ( 6295061.830, 1978680.810, 881.47, 0) + ( 6295080.970, 1978664.550, 877.79, 0) + ( 6295104.570, 1978648.190, 874.58, 0) + ( 6295126.310, 1978633.890, 872.09, 0) + ( 6295149.840, 1978618.720, 869.6, 0) + ( 6295173.840, 1978605.030, 867.37, 0) + ( 6295198.110, 1978594.150, 866.12, 0) + ( 6295222.830, 1978586.990, 865.2, 0) + ( 6295243.030, 1978583.810, 863.5, 0) + ( 6295268.110, 1978581.290, 860.35, 0) + ( 6295291.530, 1978579.390, 856.48, 0) + ( 6295313.200, 1978582.040, 852.42, 0) + ( 6295329.170, 1978591.410, 848.81, 0) + ( 6295339.780, 1978603.880, 845.07, 0) + ( 6295345.640, 1978621.110, 842.12, 0) + ( 6295351.070, 1978642.970, 838.32, 0) + ( 6295357.250, 1978666.560, 834.77, 0) + ( 6295367.290, 1978691.000, 831.89, 0) + ( 6295376.030, 1978718.470, 828.09, 0) + ( 6295383.930, 1978744.860, 824.35, 0) + ( 6295389.990, 1978768.720, 821.33, 0) + ( 6295395.930, 1978790.090, 818.64, 0) + +Shape:1 (ArcZ) nVertices=9, nParts=1 + Bounds:( 6295218.470, 1978444.010, 864.55, 0) + to ( 6295330.760, 1978581.880, 882.45, 0) + ( 6295330.760, 1978444.010, 882.45, 0) Ring + ( 6295306.050, 1978461.190, 880.94, 0) + ( 6295280.210, 1978482.710, 878.52, 0) + ( 6295258.180, 1978504.050, 875.89, 0) + ( 6295239.910, 1978524.670, 871.89, 0) + ( 6295225.650, 1978546.540, 869.53, 0) + ( 6295218.470, 1978565.550, 866.97, 0) + ( 6295223.960, 1978575.510, 865.27, 0) + ( 6295230.580, 1978581.880, 864.55, 0) + +Shape:2 (ArcZ) nVertices=10, nParts=1 + Bounds:( 6295199.220, 1978444.010, 866.32, 0) + to ( 6295309.040, 1978588.800, 882.08, 0) + ( 6295200.070, 1978588.800, 866.32, 0) Ring + ( 6295199.220, 1978571.840, 867.24, 0) + ( 6295200.770, 1978555.740, 868.88, 0) + ( 6295207.890, 1978538.040, 869.86, 0) + ( 6295223.020, 1978520.530, 870.84, 0) + ( 6295239.450, 1978502.440, 874.06, 0) + ( 6295258.050, 1978483.440, 876.48, 0) + ( 6295268.990, 1978473.760, 879.17, 0) + ( 6295285.710, 1978461.560, 880.55, 0) + ( 6295309.040, 1978444.010, 882.08, 0) + +Shape:3 (ArcZ) nVertices=5, nParts=1 + Bounds:( 6294340.890, 1979449.280, 1031.78, 0) + to ( 6294394.080, 1979522.030, 1039.78, 0) + ( 6294394.080, 1979449.280, 1039.78, 0) Ring + ( 6294378.800, 1979469.230, 1038.73, 0) + ( 6294364.980, 1979486.740, 1037.28, 0) + ( 6294350.800, 1979504.980, 1035.12, 0) + ( 6294340.890, 1979522.030, 1031.78, 0) + +Shape:4 (ArcZ) nVertices=6, nParts=1 + Bounds:( 6294344.380, 1979583.450, 1008.04, 0) + to ( 6294354.670, 1979678.070, 1023.45, 0) + ( 6294344.380, 1979583.450, 1023.45, 0) Ring + ( 6294348.050, 1979601.580, 1019.18, 0) + ( 6294349.570, 1979621.200, 1016.5, 0) + ( 6294351.990, 1979637.890, 1012.95, 0) + ( 6294353.090, 1979657.140, 1011.51, 0) + ( 6294354.670, 1979678.070, 1008.04, 0) + +Shape:5 (ArcZ) nVertices=3, nParts=1 + Bounds:( 6294338.260, 1979628.600, 1008.63, 0) + to ( 6294341.080, 1979674.100, 1015.71, 0) + ( 6294341.080, 1979674.100, 1008.63, 0) Ring + ( 6294339.460, 1979649.880, 1011.71, 0) + ( 6294338.260, 1979628.600, 1015.71, 0) + +Shape:6 (ArcZ) nVertices=3, nParts=1 + Bounds:( 6294350.160, 1979437.980, 1038.6, 0) + to ( 6294379.980, 1979476.720, 1040.1, 0) + ( 6294350.160, 1979476.720, 1038.6, 0) Ring + ( 6294368.100, 1979454.860, 1040.1, 0) + ( 6294379.980, 1979437.980, 1039.32, 0) + +Shape:7 (ArcZ) nVertices=39, nParts=1 + Bounds:( 6295371.530, 1978758.160, 754.11, 0) + to ( 6295534.560, 1979677.750, 823.3, 0) + ( 6295534.560, 1979677.750, 779.95, 0) Ring + ( 6295534.380, 1979648.150, 778.57, 0) + ( 6295534.480, 1979605.990, 775.16, 0) + ( 6295533.970, 1979577.580, 772.21, 0) + ( 6295532.310, 1979547.260, 768.41, 0) + ( 6295532.970, 1979521.290, 763.82, 0) + ( 6295532.390, 1979496.890, 759.1, 0) + ( 6295532.940, 1979474.010, 755.49, 0) + ( 6295533.680, 1979452.180, 754.11, 0) + ( 6295533.850, 1979434.640, 754.11, 0) + ( 6295532.170, 1979409.180, 755.75, 0) + ( 6295531.580, 1979384.450, 758.7, 0) + ( 6295531.590, 1979356.090, 760.28, 0) + ( 6295530.190, 1979325.690, 761.13, 0) + ( 6295530.020, 1979291.090, 761.66, 0) + ( 6295529.210, 1979259.420, 762.7, 0) + ( 6295526.250, 1979221.610, 762.77, 0) + ( 6295524.260, 1979187.500, 763.75, 0) + ( 6295522.640, 1979155.350, 764.61, 0) + ( 6295521.540, 1979123.230, 765.33, 0) + ( 6295518.460, 1979096.000, 765.92, 0) + ( 6295511.670, 1979081.110, 767.16, 0) + ( 6295500.700, 1979064.060, 768.41, 0) + ( 6295489.330, 1979049.600, 770.11, 0) + ( 6295475.500, 1979033.100, 773.07, 0) + ( 6295462.530, 1979018.190, 775.16, 0) + ( 6295447.760, 1979001.400, 779.49, 0) + ( 6295433.380, 1978984.530, 782.9, 0) + ( 6295419.040, 1978965.820, 785.92, 0) + ( 6295409.020, 1978946.820, 790.58, 0) + ( 6295399.860, 1978923.910, 795.1, 0) + ( 6295391.010, 1978894.410, 800.94, 0) + ( 6295387.440, 1978875.550, 805.53, 0) + ( 6295382.030, 1978849.030, 809.79, 0) + ( 6295382.190, 1978828.930, 813.33, 0) + ( 6295383.570, 1978809.290, 817.4, 0) + ( 6295380.880, 1978789.860, 819.69, 0) + ( 6295375.630, 1978771.810, 822.58, 0) + ( 6295371.530, 1978758.160, 823.3, 0) + +Shape:8 (ArcZ) nVertices=35, nParts=1 + Bounds:( 6295396.480, 1978794.780, 753.98, 0) + to ( 6295549.010, 1979670.060, 818.58, 0) + ( 6295396.620, 1978794.780, 818.58, 0) Ring + ( 6295397.330, 1978816.670, 815.76, 0) + ( 6295396.480, 1978836.150, 812.22, 0) + ( 6295397.670, 1978857.110, 807.95, 0) + ( 6295401.180, 1978874.720, 804.61, 0) + ( 6295406.260, 1978897.320, 799.95, 0) + ( 6295413.580, 1978919.930, 794.77, 0) + ( 6295421.330, 1978938.190, 790.31, 0) + ( 6295431.450, 1978956.590, 786.51, 0) + ( 6295444.950, 1978974.360, 782.38, 0) + ( 6295461.420, 1978993.620, 777.66, 0) + ( 6295479.760, 1979013.510, 773.26, 0) + ( 6295494.630, 1979032.330, 771.1, 0) + ( 6295510.990, 1979052.120, 767.69, 0) + ( 6295524.170, 1979071.090, 766.84, 0) + ( 6295532.180, 1979091.890, 765.33, 0) + ( 6295536.530, 1979120.830, 764.8, 0) + ( 6295537.480, 1979150.200, 764.08, 0) + ( 6295539.470, 1979189.490, 763.43, 0) + ( 6295541.670, 1979230.490, 762.64, 0) + ( 6295541.760, 1979271.330, 761.79, 0) + ( 6295543.650, 1979306.300, 761.46, 0) + ( 6295544.470, 1979335.540, 760.47, 0) + ( 6295544.960, 1979363.490, 759.23, 0) + ( 6295545.620, 1979392.020, 757.13, 0) + ( 6295546.340, 1979419.430, 754.9, 0) + ( 6295547.120, 1979439.940, 753.98, 0) + ( 6295546.510, 1979459.150, 754.38, 0) + ( 6295545.460, 1979482.710, 757.66, 0) + ( 6295545.530, 1979507.330, 761.13, 0) + ( 6295545.610, 1979532.470, 765.59, 0) + ( 6295546.490, 1979565.520, 770.44, 0) + ( 6295547.960, 1979597.100, 775.03, 0) + ( 6295548.990, 1979628.040, 777.26, 0) + ( 6295549.010, 1979670.060, 780.15, 0) + +Shape:9 (ArcZ) nVertices=45, nParts=1 + Bounds:( 6295694.040, 1978444.010, 696.95, 0) + to ( 6296208.790, 1979687.080, 787.43, 0) + ( 6295698.400, 1979687.080, 787.43, 0) Ring + ( 6295694.040, 1979670.950, 786.31, 0) + ( 6295696.410, 1979650.280, 785.13, 0) + ( 6295700.080, 1979634.530, 784.8, 0) + ( 6295704.080, 1979620.010, 784.15, 0) + ( 6295708.420, 1979601.930, 782.44, 0) + ( 6295711.230, 1979584.790, 781.99, 0) + ( 6295712.060, 1979564.780, 780.8, 0) + ( 6295710.550, 1979537.480, 779.69, 0) + ( 6295711.290, 1979508.020, 777.59, 0) + ( 6295710.010, 1979477.420, 776.08, 0) + ( 6295709.300, 1979442.530, 773.59, 0) + ( 6295709.160, 1979413.640, 772.21, 0) + ( 6295707.090, 1979372.570, 769.46, 0) + ( 6295708.140, 1979336.210, 767.49, 0) + ( 6295709.710, 1979297.130, 764.67, 0) + ( 6295710.960, 1979272.310, 763.29, 0) + ( 6295714.640, 1979241.200, 761.2, 0) + ( 6295719.050, 1979211.560, 759.82, 0) + ( 6295724.280, 1979179.840, 758.31, 0) + ( 6295729.460, 1979152.460, 756.74, 0) + ( 6295735.770, 1979126.530, 754.44, 0) + ( 6295744.970, 1979095.400, 752.87, 0) + ( 6295755.820, 1979063.140, 750.31, 0) + ( 6295767.590, 1979028.330, 747.62, 0) + ( 6295782.240, 1978993.450, 744.21, 0) + ( 6295801.580, 1978952.420, 741.26, 0) + ( 6295825.730, 1978905.370, 736.87, 0) + ( 6295842.330, 1978877.810, 734.7, 0) + ( 6295859.110, 1978851.150, 731.55, 0) + ( 6295875.620, 1978827.010, 729.52, 0) + ( 6295899.080, 1978794.830, 727.42, 0) + ( 6295923.640, 1978763.720, 724.34, 0) + ( 6295949.340, 1978734.180, 721.39, 0) + ( 6295975.020, 1978704.320, 718.57, 0) + ( 6296000.320, 1978677.440, 716.01, 0) + ( 6296026.940, 1978648.120, 713.45, 0) + ( 6296053.500, 1978617.500, 709.78, 0) + ( 6296078.620, 1978589.630, 706.9, 0) + ( 6296098.880, 1978566.880, 704.47, 0) + ( 6296126.050, 1978537.930, 702.37, 0) + ( 6296150.670, 1978507.990, 700.14, 0) + ( 6296179.280, 1978476.280, 698.7, 0) + ( 6296208.030, 1978444.880, 696.99, 0) + ( 6296208.790, 1978444.010, 696.95, 0) + +Shape:10 (ArcZ) nVertices=10, nParts=1 + Bounds:( 6296270.060, 1979014.970, 712.54, 0) + to ( 6296315.990, 1979152.310, 725.13, 0) + ( 6296306.110, 1979152.310, 725.13, 0) Ring + ( 6296288.270, 1979139.690, 723.42, 0) + ( 6296276.630, 1979122.410, 721.98, 0) + ( 6296270.060, 1979101.470, 719.95, 0) + ( 6296270.390, 1979084.580, 719.36, 0) + ( 6296275.110, 1979068.970, 717.26, 0) + ( 6296284.280, 1979052.820, 716.41, 0) + ( 6296294.680, 1979040.410, 715.49, 0) + ( 6296305.720, 1979027.370, 713.59, 0) + ( 6296315.990, 1979014.970, 712.54, 0) + +Shape:11 (ArcZ) nVertices=18, nParts=1 + Bounds:( 6296044.930, 1978451.120, 690.11, 0) + to ( 6296312.920, 1978679.190, 713.72, 0) + ( 6296312.920, 1978493.560, 690.11, 0) Ring + ( 6296301.160, 1978479.050, 690.9, 0) + ( 6296287.840, 1978464.950, 692.4, 0) + ( 6296276.430, 1978454.890, 693.58, 0) + ( 6296262.580, 1978451.120, 694.44, 0) + ( 6296249.650, 1978452.500, 694.9, 0) + ( 6296237.110, 1978461.670, 696.08, 0) + ( 6296223.600, 1978477.650, 697.78, 0) + ( 6296209.320, 1978493.930, 698.7, 0) + ( 6296193.640, 1978511.140, 699.16, 0) + ( 6296176.980, 1978529.710, 700.6, 0) + ( 6296157.700, 1978550.970, 701.98, 0) + ( 6296136.720, 1978574.950, 703.49, 0) + ( 6296121.400, 1978591.550, 705.39, 0) + ( 6296102.290, 1978613.590, 707.36, 0) + ( 6296084.440, 1978634.580, 709.13, 0) + ( 6296065.890, 1978654.760, 711.29, 0) + ( 6296044.930, 1978679.190, 713.72, 0) + +Shape:12 (ArcZ) nVertices=71, nParts=1 + Bounds:( 6295741.070, 1978679.190, 713.72, 0) + to ( 6296321.860, 1979680.370, 813.79, 0) + ( 6296044.930, 1978679.190, 713.72, 0) Ring + ( 6296025.660, 1978700.780, 716.6, 0) + ( 6296006.480, 1978721.510, 718.37, 0) + ( 6295987.070, 1978742.720, 721, 0) + ( 6295970.410, 1978761.420, 722.44, 0) + ( 6295953.490, 1978780.070, 724.28, 0) + ( 6295932.470, 1978805.820, 726.44, 0) + ( 6295913.490, 1978830.550, 728.67, 0) + ( 6295896.490, 1978855.310, 731.16, 0) + ( 6295881.220, 1978878.070, 733.39, 0) + ( 6295867.710, 1978899.180, 734.7, 0) + ( 6295853.950, 1978923.310, 737, 0) + ( 6295839.810, 1978950.030, 739.56, 0) + ( 6295825.270, 1978979.390, 742.11, 0) + ( 6295809.100, 1979015.600, 745.46, 0) + ( 6295796.940, 1979045.170, 748.02, 0) + ( 6295785.770, 1979078.900, 750.97, 0) + ( 6295777.080, 1979104.550, 752.54, 0) + ( 6295768.950, 1979133.460, 754.84, 0) + ( 6295762.170, 1979163.090, 756.87, 0) + ( 6295755.640, 1979194.930, 758.9, 0) + ( 6295750.610, 1979225.390, 760.48, 0) + ( 6295746.300, 1979259.750, 762.64, 0) + ( 6295743.320, 1979291.750, 764.54, 0) + ( 6295741.650, 1979321.060, 766.64, 0) + ( 6295741.070, 1979353.790, 768.54, 0) + ( 6295741.170, 1979384.450, 770.71, 0) + ( 6295742.010, 1979419.210, 772.48, 0) + ( 6295743.010, 1979454.740, 774.44, 0) + ( 6295743.910, 1979493.310, 776.94, 0) + ( 6295744.990, 1979530.290, 778.97, 0) + ( 6295745.900, 1979569.120, 781.46, 0) + ( 6295745.940, 1979603.910, 783.3, 0) + ( 6295747.600, 1979636.660, 785.85, 0) + ( 6295751.850, 1979653.260, 787.49, 0) + ( 6295760.490, 1979665.820, 788.87, 0) + ( 6295773.510, 1979673.830, 790.18, 0) + ( 6295788.460, 1979676.100, 791.95, 0) + ( 6295823.990, 1979674.960, 793.46, 0) + ( 6295871.620, 1979674.070, 796.94, 0) + ( 6295918.980, 1979673.120, 798.97, 0) + ( 6295971.200, 1979672.130, 802.25, 0) + ( 6296019.370, 1979671.600, 803.95, 0) + ( 6296054.350, 1979670.030, 805.92, 0) + ( 6296074.580, 1979662.250, 806.58, 0) + ( 6296085.660, 1979647.700, 806.97, 0) + ( 6296089.370, 1979635.300, 807.69, 0) + ( 6296086.380, 1979620.160, 808.61, 0) + ( 6296080.060, 1979601.690, 810.32, 0) + ( 6296074.440, 1979583.990, 811.17, 0) + ( 6296070.250, 1979568.770, 812.22, 0) + ( 6296072.470, 1979552.830, 812.94, 0) + ( 6296083.220, 1979536.790, 813.46, 0) + ( 6296102.650, 1979531.410, 813.79, 0) + ( 6296121.290, 1979536.450, 813.73, 0) + ( 6296133.190, 1979548.520, 813.2, 0) + ( 6296138.010, 1979563.380, 812.61, 0) + ( 6296135.460, 1979580.580, 811.37, 0) + ( 6296129.950, 1979598.850, 810.18, 0) + ( 6296124.490, 1979618.170, 809.46, 0) + ( 6296122.100, 1979635.880, 808.35, 0) + ( 6296126.820, 1979651.410, 807.36, 0) + ( 6296136.390, 1979661.360, 806.51, 0) + ( 6296149.630, 1979666.080, 806.05, 0) + ( 6296163.380, 1979667.880, 805.73, 0) + ( 6296186.080, 1979667.460, 805.14, 0) + ( 6296215.190, 1979666.580, 805, 0) + ( 6296247.690, 1979667.830, 803.5, 0) + ( 6296273.580, 1979670.850, 802.32, 0) + ( 6296295.410, 1979674.090, 800.68, 0) + ( 6296321.860, 1979680.370, 799.23, 0) + +Shape:13 (ArcZ) nVertices=6, nParts=1 + Bounds:( 6295372.650, 1979608.700, 773.19, 0) + to ( 6295470.330, 1979679.550, 780.15, 0) + ( 6295372.650, 1979679.550, 780.15, 0) Ring + ( 6295387.140, 1979664.770, 777.85, 0) + ( 6295406.650, 1979645.400, 776.21, 0) + ( 6295422.760, 1979631.580, 775.29, 0) + ( 6295442.800, 1979612.190, 773.65, 0) + ( 6295470.330, 1979608.700, 773.19, 0) + +Shape:14 (ArcZ) nVertices=7, nParts=1 + Bounds:( 6295415.710, 1979491.540, 772.08, 0) + to ( 6295453.550, 1979590.190, 773.85, 0) + ( 6295453.550, 1979590.110, 772.09, 0) Ring + ( 6295453.110, 1979590.190, 772.08, 0) + ( 6295439.430, 1979579.260, 772.74, 0) + ( 6295430.870, 1979552.770, 772.93, 0) + ( 6295420.940, 1979527.860, 773.19, 0) + ( 6295415.710, 1979510.070, 773.79, 0) + ( 6295421.080, 1979491.540, 773.85, 0) + +Shape:15 (ArcZ) nVertices=9, nParts=1 + Bounds:( 6295351.240, 1979521.410, 773, 0) + to ( 6295430.330, 1979692.520, 782.11, 0) + ( 6295395.270, 1979521.410, 774.51, 0) Ring + ( 6295415.880, 1979549.790, 773.85, 0) + ( 6295426.030, 1979579.220, 773, 0) + ( 6295430.330, 1979604.610, 773.06, 0) + ( 6295418.610, 1979622.140, 774.31, 0) + ( 6295398.970, 1979639.020, 776.34, 0) + ( 6295382.220, 1979655.690, 778.31, 0) + ( 6295365.040, 1979674.420, 780.15, 0) + ( 6295351.240, 1979692.520, 782.11, 0) + +Shape:16 (ArcZ) nVertices=28, nParts=1 + Bounds:( 6294520.270, 1979256.990, 932.36, 0) + to ( 6294743.290, 1979675.030, 1016.69, 0) + ( 6294531.940, 1979675.030, 932.36, 0) Ring + ( 6294523.870, 1979650.550, 933.54, 0) + ( 6294520.270, 1979620.920, 936.75, 0) + ( 6294525.030, 1979592.840, 940.29, 0) + ( 6294533.880, 1979567.770, 942.98, 0) + ( 6294546.040, 1979543.320, 949.28, 0) + ( 6294564.140, 1979524.750, 951.64, 0) + ( 6294585.590, 1979515.130, 956.36, 0) + ( 6294611.810, 1979503.890, 959.38, 0) + ( 6294635.130, 1979494.900, 966.2, 0) + ( 6294662.590, 1979487.470, 969.41, 0) + ( 6294687.540, 1979482.070, 971.77, 0) + ( 6294710.180, 1979470.160, 976.75, 0) + ( 6294732.150, 1979450.140, 978.53, 0) + ( 6294743.290, 1979431.460, 981.94, 0) + ( 6294738.700, 1979402.930, 984.69, 0) + ( 6294731.290, 1979380.980, 986.79, 0) + ( 6294717.670, 1979358.290, 988.3, 0) + ( 6294706.340, 1979342.050, 991.38, 0) + ( 6294697.140, 1979315.920, 996.76, 0) + ( 6294696.360, 1979292.580, 1000.17, 0) + ( 6294691.930, 1979275.010, 1002.4, 0) + ( 6294681.970, 1979259.950, 1004.76, 0) + ( 6294665.150, 1979256.990, 1006.53, 0) + ( 6294638.580, 1979258.930, 1010.33, 0) + ( 6294617.350, 1979259.730, 1012.76, 0) + ( 6294592.000, 1979262.260, 1015.32, 0) + ( 6294572.550, 1979262.000, 1016.69, 0) + +Shape:17 (ArcZ) nVertices=43, nParts=1 + Bounds:( 6294466.100, 1979253.610, 930.98, 0) + to ( 6294720.520, 1979678.410, 1018.46, 0) + ( 6294572.550, 1979262.000, 1016.69, 0) Ring + ( 6294549.640, 1979260.720, 1017.48, 0) + ( 6294522.440, 1979260.520, 1017.48, 0) + ( 6294472.060, 1979253.610, 1016.63, 0) + ( 6294469.530, 1979302.330, 1017.15, 0) + ( 6294466.100, 1979341.240, 1016.63, 0) + ( 6294469.480, 1979374.290, 1016.5, 0) + ( 6294506.640, 1979382.010, 1016.96, 0) + ( 6294538.320, 1979377.390, 1016.89, 0) + ( 6294581.400, 1979377.510, 1017.74, 0) + ( 6294603.050, 1979366.770, 1017.74, 0) + ( 6294597.820, 1979338.470, 1018, 0) + ( 6294587.060, 1979307.490, 1018.46, 0) + ( 6294579.280, 1979283.460, 1017.87, 0) + ( 6294593.320, 1979278.020, 1016.36, 0) + ( 6294613.160, 1979275.640, 1013.15, 0) + ( 6294634.390, 1979274.630, 1009.54, 0) + ( 6294650.590, 1979272.960, 1006.4, 0) + ( 6294666.970, 1979274.830, 1003.77, 0) + ( 6294675.710, 1979289.290, 1001.81, 0) + ( 6294681.310, 1979309.230, 998.13, 0) + ( 6294686.190, 1979327.900, 995.64, 0) + ( 6294692.280, 1979346.960, 991.64, 0) + ( 6294699.730, 1979367.200, 989.08, 0) + ( 6294709.530, 1979384.310, 985.74, 0) + ( 6294716.160, 1979401.370, 983.25, 0) + ( 6294720.520, 1979414.810, 980.1, 0) + ( 6294718.980, 1979441.480, 978, 0) +------------------------------------------------------------------------- +Test 3: dump polygon.shp +------------------------------------------------------------------------- +Shapefile Type: Polygon # of Shapes: 474 + +File Bounds: ( 471127.188, 4751545.000,0,0) + to ( 489292.312, 4765610.500,0,0) + +Shape:0 (Polygon) nVertices=20, nParts=1 + Bounds:( 479647.000, 4764856.500, 0, 0) + to ( 480389.688, 4765610.500, 0, 0) + ( 479819.844, 4765180.500, 0, 0) Ring + ( 479690.188, 4765259.500, 0, 0) + ( 479647.000, 4765369.500, 0, 0) + ( 479730.375, 4765400.500, 0, 0) + ( 480039.031, 4765539.500, 0, 0) + ( 480035.344, 4765558.500, 0, 0) + ( 480159.781, 4765610.500, 0, 0) + ( 480202.281, 4765482.000, 0, 0) + ( 480365.000, 4765015.500, 0, 0) + ( 480389.688, 4764950.000, 0, 0) + ( 480133.969, 4764856.500, 0, 0) + ( 480080.281, 4764979.500, 0, 0) + ( 480082.969, 4765049.500, 0, 0) + ( 480088.812, 4765139.500, 0, 0) + ( 480059.906, 4765239.500, 0, 0) + ( 480019.719, 4765319.500, 0, 0) + ( 479980.219, 4765409.500, 0, 0) + ( 479909.875, 4765370.000, 0, 0) + ( 479859.875, 4765270.000, 0, 0) + ( 479819.844, 4765180.500, 0, 0) + +Shape:1 (Polygon) nVertices=20, nParts=1 + Bounds:( 479014.938, 4764879.000, 0, 0) + to ( 480039.031, 4765558.500, 0, 0) + ( 480035.344, 4765558.500, 0, 0) Ring + ( 480039.031, 4765539.500, 0, 0) + ( 479730.375, 4765400.500, 0, 0) + ( 479647.000, 4765369.500, 0, 0) + ( 479690.188, 4765259.500, 0, 0) + ( 479819.844, 4765180.500, 0, 0) + ( 479779.844, 4765109.500, 0, 0) + ( 479681.781, 4764940.000, 0, 0) + ( 479468.000, 4764942.500, 0, 0) + ( 479411.438, 4764940.500, 0, 0) + ( 479353.000, 4764939.500, 0, 0) + ( 479208.656, 4764882.500, 0, 0) + ( 479196.812, 4764879.000, 0, 0) + ( 479123.281, 4765015.000, 0, 0) + ( 479046.531, 4765117.000, 0, 0) + ( 479029.719, 4765110.500, 0, 0) + ( 479014.938, 4765147.500, 0, 0) + ( 479149.938, 4765200.500, 0, 0) + ( 479639.625, 4765399.500, 0, 0) + ( 480035.344, 4765558.500, 0, 0) + +Shape:2 (Polygon) nVertices=54, nParts=1 + Bounds:( 480882.688, 4763472.500, 0, 0) + to ( 484519.969, 4765410.000, 0, 0) + ( 481575.000, 4764999.500, 0, 0) Ring + ( 481542.312, 4765097.500, 0, 0) + ( 481443.688, 4765387.500, 0, 0) + ( 481499.656, 4765410.000, 0, 0) + ( 481631.000, 4765031.000, 0, 0) + ( 481693.312, 4764853.000, 0, 0) + ( 481759.281, 4764889.500, 0, 0) + ( 481860.031, 4764920.000, 0, 0) + ( 482002.969, 4764910.000, 0, 0) + ( 482180.094, 4764909.500, 0, 0) + ( 482359.812, 4764960.000, 0, 0) + ( 482510.500, 4765065.000, 0, 0) + ( 482619.906, 4765080.500, 0, 0) + ( 482809.500, 4765090.000, 0, 0) + ( 483189.812, 4765084.500, 0, 0) + ( 483330.312, 4765105.500, 0, 0) + ( 483591.094, 4765260.000, 0, 0) + ( 483700.500, 4765280.000, 0, 0) + ( 483799.938, 4765270.000, 0, 0) + ( 484039.844, 4765280.500, 0, 0) + ( 484115.688, 4765300.000, 0, 0) + ( 484120.625, 4765280.000, 0, 0) + ( 484131.125, 4765260.000, 0, 0) + ( 484167.844, 4765271.000, 0, 0) + ( 484277.875, 4765015.500, 0, 0) + ( 484455.062, 4764500.000, 0, 0) + ( 484519.969, 4764345.000, 0, 0) + ( 484482.031, 4764332.000, 0, 0) + ( 483904.719, 4764113.500, 0, 0) + ( 483334.844, 4763905.000, 0, 0) + ( 482941.031, 4763760.500, 0, 0) + ( 482590.719, 4763624.500, 0, 0) + ( 482185.656, 4763472.500, 0, 0) + ( 482009.844, 4763980.500, 0, 0) + ( 481960.438, 4764099.500, 0, 0) + ( 481767.500, 4764014.500, 0, 0) + ( 480955.500, 4763700.000, 0, 0) + ( 480882.688, 4763670.000, 0, 0) + ( 481039.938, 4763889.500, 0, 0) + ( 481130.312, 4763979.500, 0, 0) + ( 481143.438, 4764010.500, 0, 0) + ( 481199.844, 4764180.000, 0, 0) + ( 481141.625, 4764480.500, 0, 0) + ( 481140.469, 4764510.500, 0, 0) + ( 481159.938, 4764580.000, 0, 0) + ( 481185.500, 4764607.000, 0, 0) + ( 481199.219, 4764623.500, 0, 0) + ( 481209.812, 4764633.500, 0, 0) + ( 481235.312, 4764650.000, 0, 0) + ( 481635.969, 4764795.500, 0, 0) + ( 481645.312, 4764797.500, 0, 0) + ( 481629.844, 4764829.500, 0, 0) + ( 481602.125, 4764915.500, 0, 0) + ( 481575.000, 4764999.500, 0, 0) + +Shape:3 (Polygon) nVertices=29, nParts=1 + Bounds:( 479117.812, 4764505.000, 0, 0) + to ( 480088.812, 4765409.500, 0, 0) + ( 479819.844, 4765180.500, 0, 0) Ring + ( 479859.875, 4765270.000, 0, 0) + ( 479909.875, 4765370.000, 0, 0) + ( 479980.219, 4765409.500, 0, 0) + ( 480019.719, 4765319.500, 0, 0) + ( 480059.906, 4765239.500, 0, 0) + ( 480088.812, 4765139.500, 0, 0) + ( 480082.969, 4765049.500, 0, 0) + ( 480000.281, 4765043.000, 0, 0) + ( 479934.969, 4765020.000, 0, 0) + ( 479895.125, 4765000.000, 0, 0) + ( 479734.375, 4764865.000, 0, 0) + ( 479680.281, 4764852.000, 0, 0) + ( 479644.781, 4764827.500, 0, 0) + ( 479637.875, 4764803.000, 0, 0) + ( 479617.219, 4764760.000, 0, 0) + ( 479587.281, 4764718.000, 0, 0) + ( 479548.031, 4764693.500, 0, 0) + ( 479504.906, 4764609.500, 0, 0) + ( 479239.812, 4764505.000, 0, 0) + ( 479117.812, 4764847.000, 0, 0) + ( 479196.812, 4764879.000, 0, 0) + ( 479208.656, 4764882.500, 0, 0) + ( 479353.000, 4764939.500, 0, 0) + ( 479411.438, 4764940.500, 0, 0) + ( 479468.000, 4764942.500, 0, 0) + ( 479681.781, 4764940.000, 0, 0) + ( 479779.844, 4765109.500, 0, 0) + ( 479819.844, 4765180.500, 0, 0) + +Shape:4 (Polygon) nVertices=22, nParts=1 + Bounds:( 480537.156, 4764738.000, 0, 0) + to ( 481575.000, 4765387.500, 0, 0) + ( 480537.156, 4765014.000, 0, 0) Ring + ( 481090.281, 4765242.000, 0, 0) + ( 481443.688, 4765387.500, 0, 0) + ( 481542.312, 4765097.500, 0, 0) + ( 481575.000, 4764999.500, 0, 0) + ( 481538.906, 4764982.500, 0, 0) + ( 481509.656, 4764967.000, 0, 0) + ( 481457.375, 4764937.000, 0, 0) + ( 481465.906, 4764872.500, 0, 0) + ( 481291.094, 4764810.000, 0, 0) + ( 481281.312, 4764876.500, 0, 0) + ( 481136.844, 4764994.500, 0, 0) + ( 481088.188, 4764936.000, 0, 0) + ( 480984.250, 4764875.000, 0, 0) + ( 480930.719, 4764852.000, 0, 0) + ( 480922.031, 4764850.500, 0, 0) + ( 480824.969, 4764820.000, 0, 0) + ( 480761.469, 4764778.000, 0, 0) + ( 480701.062, 4764738.000, 0, 0) + ( 480605.000, 4764835.000, 0, 0) + ( 480567.969, 4764918.000, 0, 0) + ( 480537.156, 4765014.000, 0, 0) + +Shape:5 (Polygon) nVertices=60, nParts=1 + Bounds:( 484482.031, 4760649.500, 0, 0) + to ( 488408.281, 4765179.000, 0, 0) + ( 484482.031, 4764332.000, 0, 0) Ring + ( 484519.969, 4764345.000, 0, 0) + ( 484817.938, 4764465.500, 0, 0) + ( 485615.406, 4764770.000, 0, 0) + ( 486269.688, 4765010.000, 0, 0) + ( 486320.062, 4765024.000, 0, 0) + ( 486340.594, 4765040.000, 0, 0) + ( 486369.844, 4765050.000, 0, 0) + ( 486719.969, 4765170.000, 0, 0) + ( 486738.625, 4765179.000, 0, 0) + ( 486987.781, 4764497.500, 0, 0) + ( 487019.875, 4764384.500, 0, 0) + ( 487077.375, 4764226.500, 0, 0) + ( 487120.031, 4764100.000, 0, 0) + ( 487160.250, 4763998.000, 0, 0) + ( 487186.812, 4763922.500, 0, 0) + ( 487408.250, 4763315.500, 0, 0) + ( 487608.062, 4762780.000, 0, 0) + ( 487659.406, 4762650.000, 0, 0) + ( 487719.406, 4762480.000, 0, 0) + ( 487741.062, 4762419.500, 0, 0) + ( 487747.875, 4762395.500, 0, 0) + ( 487880.875, 4762032.000, 0, 0) + ( 487899.438, 4761975.500, 0, 0) + ( 488082.000, 4761480.000, 0, 0) + ( 488408.281, 4760649.500, 0, 0) + ( 488050.375, 4760824.500, 0, 0) + ( 487690.906, 4760802.000, 0, 0) + ( 487640.062, 4760879.500, 0, 0) + ( 487594.938, 4761023.000, 0, 0) + ( 487341.375, 4761776.500, 0, 0) + ( 487037.125, 4761672.500, 0, 0) + ( 487005.375, 4761662.500, 0, 0) + ( 486788.219, 4761579.500, 0, 0) + ( 486822.250, 4761492.000, 0, 0) + ( 486838.312, 4761437.500, 0, 0) + ( 486841.312, 4761381.000, 0, 0) + ( 486850.562, 4761340.000, 0, 0) + ( 486810.750, 4761335.500, 0, 0) + ( 486775.438, 4761400.000, 0, 0) + ( 486710.094, 4761368.000, 0, 0) + ( 486606.188, 4761330.000, 0, 0) + ( 486548.656, 4761488.000, 0, 0) + ( 486380.656, 4761428.500, 0, 0) + ( 486152.906, 4761348.000, 0, 0) + ( 485900.250, 4761250.500, 0, 0) + ( 485666.875, 4761156.500, 0, 0) + ( 485585.875, 4761374.500, 0, 0) + ( 485564.875, 4761444.500, 0, 0) + ( 485496.219, 4761614.500, 0, 0) + ( 485438.688, 4761760.500, 0, 0) + ( 485264.969, 4762222.500, 0, 0) + ( 485192.688, 4762439.000, 0, 0) + ( 485175.406, 4762493.500, 0, 0) + ( 484947.344, 4763100.500, 0, 0) + ( 484888.000, 4763260.500, 0, 0) + ( 484785.469, 4763560.500, 0, 0) + ( 484760.219, 4763659.500, 0, 0) + ( 484696.969, 4763734.000, 0, 0) + ( 484482.031, 4764332.000, 0, 0) + +Shape:6 (Polygon) nVertices=26, nParts=1 + Bounds:( 478315.531, 4764174.000, 0, 0) + to ( 479305.875, 4765147.500, 0, 0) + ( 479014.938, 4765147.500, 0, 0) Ring + ( 479029.719, 4765110.500, 0, 0) + ( 479117.812, 4764847.000, 0, 0) + ( 479239.812, 4764505.000, 0, 0) + ( 479305.875, 4764361.000, 0, 0) + ( 479256.031, 4764314.500, 0, 0) + ( 479220.906, 4764212.500, 0, 0) + ( 479114.500, 4764174.000, 0, 0) + ( 479018.281, 4764418.500, 0, 0) + ( 478896.938, 4764371.000, 0, 0) + ( 478748.812, 4764308.500, 0, 0) + ( 478503.031, 4764218.000, 0, 0) + ( 478461.750, 4764337.500, 0, 0) + ( 478443.938, 4764400.500, 0, 0) + ( 478447.812, 4764454.000, 0, 0) + ( 478448.688, 4764531.500, 0, 0) + ( 478502.188, 4764541.500, 0, 0) + ( 478683.000, 4764730.500, 0, 0) + ( 478621.031, 4764788.500, 0, 0) + ( 478597.344, 4764766.500, 0, 0) + ( 478532.500, 4764695.500, 0, 0) + ( 478460.125, 4764615.000, 0, 0) + ( 478408.062, 4764654.000, 0, 0) + ( 478315.531, 4764876.000, 0, 0) + ( 478889.250, 4765100.000, 0, 0) + ( 479014.938, 4765147.500, 0, 0) + +Shape:7 (Polygon) nVertices=6, nParts=1 + Bounds:( 479029.719, 4764847.000, 0, 0) + to ( 479196.812, 4765117.000, 0, 0) + ( 479029.719, 4765110.500, 0, 0) Ring + ( 479046.531, 4765117.000, 0, 0) + ( 479123.281, 4765015.000, 0, 0) + ( 479196.812, 4764879.000, 0, 0) + ( 479117.812, 4764847.000, 0, 0) + ( 479029.719, 4765110.500, 0, 0) + +Shape:8 (Polygon) nVertices=20, nParts=1 + Bounds:( 479504.906, 4764609.500, 0, 0) + to ( 480133.969, 4765049.500, 0, 0) + ( 480082.969, 4765049.500, 0, 0) Ring + ( 480080.281, 4764979.500, 0, 0) + ( 480133.969, 4764856.500, 0, 0) + ( 479968.469, 4764788.000, 0, 0) + ( 479750.688, 4764702.000, 0, 0) + ( 479735.906, 4764752.000, 0, 0) + ( 479640.094, 4764721.000, 0, 0) + ( 479658.594, 4764670.000, 0, 0) + ( 479504.906, 4764609.500, 0, 0) + ( 479548.031, 4764693.500, 0, 0) + ( 479587.281, 4764718.000, 0, 0) + ( 479617.219, 4764760.000, 0, 0) + ( 479637.875, 4764803.000, 0, 0) + ( 479644.781, 4764827.500, 0, 0) + ( 479680.281, 4764852.000, 0, 0) + ( 479734.375, 4764865.000, 0, 0) + ( 479895.125, 4765000.000, 0, 0) + ( 479934.969, 4765020.000, 0, 0) + ( 480000.281, 4765043.000, 0, 0) + ( 480082.969, 4765049.500, 0, 0) + +Shape:9 (Polygon) nVertices=31, nParts=1 + Bounds:( 479968.469, 4764183.000, 0, 0) + to ( 480731.656, 4765014.000, 0, 0) + ( 480389.688, 4764950.000, 0, 0) Ring + ( 480537.156, 4765014.000, 0, 0) + ( 480567.969, 4764918.000, 0, 0) + ( 480605.000, 4764835.000, 0, 0) + ( 480701.062, 4764738.000, 0, 0) + ( 480710.250, 4764690.500, 0, 0) + ( 480588.594, 4764740.500, 0, 0) + ( 480540.719, 4764741.000, 0, 0) + ( 480515.125, 4764695.000, 0, 0) + ( 480731.656, 4764561.500, 0, 0) + ( 480692.188, 4764453.500, 0, 0) + ( 480677.844, 4764439.000, 0, 0) + ( 480655.344, 4764397.500, 0, 0) + ( 480584.375, 4764353.000, 0, 0) + ( 480500.406, 4764326.500, 0, 0) + ( 480358.531, 4764277.000, 0, 0) + ( 480192.312, 4764183.000, 0, 0) + ( 480157.125, 4764266.500, 0, 0) + ( 480234.312, 4764304.000, 0, 0) + ( 480289.125, 4764348.500, 0, 0) + ( 480316.000, 4764395.000, 0, 0) + ( 480343.562, 4764477.000, 0, 0) + ( 480343.719, 4764532.500, 0, 0) + ( 480258.031, 4764767.000, 0, 0) + ( 480177.156, 4764742.000, 0, 0) + ( 480093.750, 4764703.000, 0, 0) + ( 480011.000, 4764674.500, 0, 0) + ( 479985.062, 4764732.000, 0, 0) + ( 479968.469, 4764788.000, 0, 0) + ( 480133.969, 4764856.500, 0, 0) + ( 480389.688, 4764950.000, 0, 0) + +Shape:10 (Polygon) nVertices=61, nParts=1 + Bounds:( 479492.688, 4762880.500, 0, 0) + to ( 481645.312, 4764999.500, 0, 0) + ( 480701.062, 4764738.000, 0, 0) Ring + ( 480761.469, 4764778.000, 0, 0) + ( 480824.969, 4764820.000, 0, 0) + ( 480922.031, 4764850.500, 0, 0) + ( 480930.719, 4764852.000, 0, 0) + ( 480984.250, 4764875.000, 0, 0) + ( 481088.188, 4764936.000, 0, 0) + ( 481136.844, 4764994.500, 0, 0) + ( 481281.312, 4764876.500, 0, 0) + ( 481291.094, 4764810.000, 0, 0) + ( 481465.906, 4764872.500, 0, 0) + ( 481457.375, 4764937.000, 0, 0) + ( 481509.656, 4764967.000, 0, 0) + ( 481538.906, 4764982.500, 0, 0) + ( 481575.000, 4764999.500, 0, 0) + ( 481602.125, 4764915.500, 0, 0) + ( 481629.844, 4764829.500, 0, 0) + ( 481645.312, 4764797.500, 0, 0) + ( 481635.969, 4764795.500, 0, 0) + ( 481235.312, 4764650.000, 0, 0) + ( 481209.812, 4764633.500, 0, 0) + ( 481199.219, 4764623.500, 0, 0) + ( 481185.500, 4764607.000, 0, 0) + ( 481159.938, 4764580.000, 0, 0) + ( 481140.469, 4764510.500, 0, 0) + ( 481141.625, 4764480.500, 0, 0) + ( 481199.844, 4764180.000, 0, 0) + ( 481143.438, 4764010.500, 0, 0) + ( 481130.312, 4763979.500, 0, 0) + ( 481039.938, 4763889.500, 0, 0) + ( 480882.688, 4763670.000, 0, 0) + ( 480826.062, 4763650.500, 0, 0) + ( 480745.188, 4763628.500, 0, 0) + ( 480654.438, 4763627.500, 0, 0) + ( 480599.812, 4763660.000, 0, 0) + ( 480281.938, 4763576.500, 0, 0) + ( 480221.500, 4763533.500, 0, 0) + ( 480199.688, 4763509.000, 0, 0) + ( 480195.094, 4763430.000, 0, 0) + ( 480273.688, 4763305.500, 0, 0) + ( 480309.688, 4763063.500, 0, 0) + ( 480201.844, 4762962.500, 0, 0) + ( 479855.312, 4762880.500, 0, 0) + ( 479848.531, 4762897.000, 0, 0) + ( 479728.875, 4763217.500, 0, 0) + ( 479492.688, 4763850.000, 0, 0) + ( 479550.062, 4763919.500, 0, 0) + ( 480120.219, 4764188.500, 0, 0) + ( 480192.312, 4764183.000, 0, 0) + ( 480358.531, 4764277.000, 0, 0) + ( 480500.406, 4764326.500, 0, 0) + ( 480584.375, 4764353.000, 0, 0) + ( 480655.344, 4764397.500, 0, 0) + ( 480677.844, 4764439.000, 0, 0) + ( 480692.188, 4764453.500, 0, 0) + ( 480731.656, 4764561.500, 0, 0) + ( 480515.125, 4764695.000, 0, 0) + ( 480540.719, 4764741.000, 0, 0) + ( 480588.594, 4764740.500, 0, 0) + ( 480710.250, 4764690.500, 0, 0) + ( 480701.062, 4764738.000, 0, 0) + +Shape:11 (Polygon) nVertices=21, nParts=1 + Bounds:( 476732.906, 4763624.500, 0, 0) + to ( 478408.062, 4764876.000, 0, 0) + ( 478315.531, 4764876.000, 0, 0) Ring + ( 478408.062, 4764654.000, 0, 0) + ( 478325.250, 4764606.500, 0, 0) + ( 478220.094, 4764574.500, 0, 0) + ( 478140.344, 4764511.000, 0, 0) + ( 478065.062, 4764487.500, 0, 0) + ( 478080.938, 4764401.500, 0, 0) + ( 478110.500, 4764308.500, 0, 0) + ( 478149.969, 4764212.500, 0, 0) + ( 478180.219, 4764150.000, 0, 0) + ( 478192.500, 4764099.500, 0, 0) + ( 477893.125, 4763984.500, 0, 0) + ( 477417.031, 4763800.500, 0, 0) + ( 477005.594, 4763640.000, 0, 0) + ( 476958.312, 4763624.500, 0, 0) + ( 476947.250, 4763664.500, 0, 0) + ( 476732.906, 4764243.000, 0, 0) + ( 477322.375, 4764502.000, 0, 0) + ( 477599.906, 4764600.000, 0, 0) + ( 477949.656, 4764745.000, 0, 0) + ( 478315.531, 4764876.000, 0, 0) + +Shape:12 (Polygon) nVertices=22, nParts=1 + Bounds:( 478065.062, 4764099.500, 0, 0) + to ( 478683.000, 4764788.500, 0, 0) + ( 478408.062, 4764654.000, 0, 0) Ring + ( 478460.125, 4764615.000, 0, 0) + ( 478532.500, 4764695.500, 0, 0) + ( 478597.344, 4764766.500, 0, 0) + ( 478621.031, 4764788.500, 0, 0) + ( 478683.000, 4764730.500, 0, 0) + ( 478502.188, 4764541.500, 0, 0) + ( 478448.688, 4764531.500, 0, 0) + ( 478447.812, 4764454.000, 0, 0) + ( 478443.938, 4764400.500, 0, 0) + ( 478461.750, 4764337.500, 0, 0) + ( 478503.031, 4764218.000, 0, 0) + ( 478192.500, 4764099.500, 0, 0) + ( 478180.219, 4764150.000, 0, 0) + ( 478149.969, 4764212.500, 0, 0) + ( 478110.500, 4764308.500, 0, 0) + ( 478080.938, 4764401.500, 0, 0) + ( 478065.062, 4764487.500, 0, 0) + ( 478140.344, 4764511.000, 0, 0) + ( 478220.094, 4764574.500, 0, 0) + ( 478325.250, 4764606.500, 0, 0) + ( 478408.062, 4764654.000, 0, 0) + +Shape:13 (Polygon) nVertices=27, nParts=1 + Bounds:( 479239.812, 4763850.000, 0, 0) + to ( 480343.719, 4764788.000, 0, 0) + ( 479750.688, 4764702.000, 0, 0) Ring + ( 479968.469, 4764788.000, 0, 0) + ( 479985.062, 4764732.000, 0, 0) + ( 480011.000, 4764674.500, 0, 0) + ( 480093.750, 4764703.000, 0, 0) + ( 480177.156, 4764742.000, 0, 0) + ( 480258.031, 4764767.000, 0, 0) + ( 480343.719, 4764532.500, 0, 0) + ( 480343.562, 4764477.000, 0, 0) + ( 480316.000, 4764395.000, 0, 0) + ( 480289.125, 4764348.500, 0, 0) + ( 480234.312, 4764304.000, 0, 0) + ( 480157.125, 4764266.500, 0, 0) + ( 480192.312, 4764183.000, 0, 0) + ( 480120.219, 4764188.500, 0, 0) + ( 479550.062, 4763919.500, 0, 0) + ( 479492.688, 4763850.000, 0, 0) + ( 479487.750, 4763864.500, 0, 0) + ( 479442.750, 4763990.000, 0, 0) + ( 479436.000, 4764023.000, 0, 0) + ( 479398.938, 4764100.000, 0, 0) + ( 479349.625, 4764230.000, 0, 0) + ( 479305.875, 4764361.000, 0, 0) + ( 479239.812, 4764505.000, 0, 0) + ( 479504.906, 4764609.500, 0, 0) + ( 479658.594, 4764670.000, 0, 0) + ( 479750.688, 4764702.000, 0, 0) + +Shape:14 (Polygon) nVertices=5, nParts=1 + Bounds:( 479640.094, 4764670.000, 0, 0) + to ( 479750.688, 4764752.000, 0, 0) + ( 479750.688, 4764702.000, 0, 0) Ring + ( 479658.594, 4764670.000, 0, 0) + ( 479640.094, 4764721.000, 0, 0) + ( 479735.906, 4764752.000, 0, 0) + ( 479750.688, 4764702.000, 0, 0) + +Shape:15 (Polygon) nVertices=28, nParts=1 + Bounds:( 478503.031, 4763357.500, 0, 0) + to ( 479349.625, 4764418.500, 0, 0) + ( 479305.875, 4764361.000, 0, 0) Ring + ( 479349.625, 4764230.000, 0, 0) + ( 479218.156, 4764126.000, 0, 0) + ( 479128.344, 4764030.500, 0, 0) + ( 479103.406, 4764000.000, 0, 0) + ( 479099.594, 4763977.500, 0, 0) + ( 479080.812, 4763930.000, 0, 0) + ( 478999.812, 4763864.500, 0, 0) +------------------------------------------------------------------------- +Test 4: dump pline.dbf - uses new F field type +------------------------------------------------------------------------- +Field 0: Type=Integer, Title=`FNODE_', Width=11, Decimals=0 +Field 1: Type=Integer, Title=`TNODE_', Width=11, Decimals=0 +Field 2: Type=Integer, Title=`LPOLY_', Width=11, Decimals=0 +Field 3: Type=Integer, Title=`RPOLY_', Width=11, Decimals=0 +Field 4: Type=Double, Title=`LENGTH', Width=13, Decimals=3 +Field 5: Type=Integer, Title=`PLINE_', Width=11, Decimals=0 +Field 6: Type=Integer, Title=`PLINE_ID', Width=11, Decimals=0 +Field 7: Type=Integer, Title=`UID', Width=11, Decimals=0 +Field 8: Type=Integer, Title=`GISO_TYPE_', Width=11, Decimals=0 +Field 9: Type=Integer, Title=`SYMBOL', Width=6, Decimals=0 +Field 10: Type=Integer, Title=`LOCK__ID', Width=11, Decimals=0 +Field 11: Type=Integer, Title=`PHASE__ID', Width=6, Decimals=0 +Field 12: Type=Integer, Title=`OBJECT__ID', Width=11, Decimals=0 +Field 13: Type=String, Title=`TYPE', Width=50, Decimals=0 +Field 14: Type=Integer, Title=`SYM_NBR', Width=6, Decimals=0 +Field 15: Type=String, Title=`PHASE', Width=4, Decimals=0 +Field 16: Type=String, Title=`CKT_NM', Width=30, Decimals=0 +Field 17: Type=String, Title=`VOLTAGE', Width=30, Decimals=0 +Field 18: Type=String, Title=`CMPN', Width=30, Decimals=0 + +Record: 0 +FNODE_: 351 +TNODE_: 352 +LPOLY_: 0 +RPOLY_: 0 +LENGTH: 139.451 +PLINE_: 1 +PLINE_ID: 8588 +UID: 544484 +GISO_TYPE_: 13 +SYMBOL: 101 +LOCK__ID: 0 +PHASE__ID: 0 +OBJECT__ID: 131978 +TYPE: Overhead Primary +SYM_NBR: 101 +PHASE: ABC +CKT_NM: MED36 +VOLTAGE: (NULL) +CMPN: (NULL) + +Record: 1 +FNODE_: 352 +TNODE_: 362 +LPOLY_: 0 +RPOLY_: 0 +LENGTH: 158.033 +PLINE_: 2 +PLINE_ID: 8695 +UID: 544591 +------------------------------------------------------------------------- +Test 5: NULL Shapes. +------------------------------------------------------------------------- +Shapefile Type: Arc # of Shapes: 124 + +File Bounds: ( 257104.880, 5176098.606,0,0) + to ( 335497.500, 5226768.100,0,0) + +Shape:0 (Arc) nVertices=21, nParts=1 + Bounds:( 317138.450, 5176398.916, 0, 0) + to ( 317325.590, 5186063.780, 0, 0) + ( 317255.906, 5176398.916, 0, 0) Ring + ( 317188.010, 5176506.460, 0, 0) + ( 317176.920, 5176524.510, 0, 0) + ( 317165.340, 5176546.850, 0, 0) + ( 317157.950, 5176566.020, 0, 0) + ( 317150.020, 5176587.650, 0, 0) + ( 317140.130, 5176623.380, 0, 0) + ( 317138.700, 5176637.220, 0, 0) + ( 317138.450, 5176652.790, 0, 0) + ( 317194.710, 5177654.350, 0, 0) + ( 317208.900, 5178001.150, 0, 0) + ( 317257.240, 5178791.400, 0, 0) + ( 317233.330, 5179171.730, 0, 0) + ( 317178.860, 5179593.910, 0, 0) + ( 317177.430, 5180161.330, 0, 0) + ( 317179.910, 5181231.060, 0, 0) + ( 317191.120, 5182009.000, 0, 0) + ( 317217.150, 5182812.160, 0, 0) + ( 317251.760, 5184426.350, 0, 0) + ( 317285.550, 5185242.720, 0, 0) + ( 317325.590, 5186063.780, 0, 0) + +Shape:1 (Arc) nVertices=14, nParts=1 + Bounds:( 327417.340, 5176119.960, 0, 0) + to ( 327575.150, 5179522.550, 0, 0) + ( 327417.340, 5176119.960, 0, 0) Ring + ( 327472.250, 5177756.610, 0, 0) + ( 327475.670, 5178507.280, 0, 0) + ( 327487.420, 5179001.910, 0, 0) + ( 327488.760, 5179080.090, 0, 0) + ( 327485.310, 5179309.310, 0, 0) + ( 327487.010, 5179328.210, 0, 0) + ( 327491.800, 5179348.860, 0, 0) + ( 327499.800, 5179374.940, 0, 0) + ( 327512.980, 5179413.100, 0, 0) + ( 327527.290, 5179446.960, 0, 0) + ( 327538.870, 5179469.890, 0, 0) + ( 327552.260, 5179491.550, 0, 0) + ( 327575.150, 5179522.550, 0, 0) + +Shape:2 (Arc) nVertices=40, nParts=1 + Bounds:( 326935.880, 5180924.980, 0, 0) + to ( 327723.190, 5198803.660, 0, 0) + ( 327370.950, 5180924.980, 0, 0) Ring + ( 327410.070, 5181060.540, 0, 0) + ( 327512.850, 5181435.450, 0, 0) + ( 327518.640, 5181464.010, 0, 0) + ( 327523.700, 5181488.920, 0, 0) + ( 327524.500, 5181514.570, 0, 0) + ( 327468.010, 5182633.640, 0, 0) + ( 327500.040, 5183199.840, 0, 0) + ( 327499.600, 5183224.920, 0, 0) + ( 327484.700, 5183355.010, 0, 0) + ( 327483.690, 5183400.900, 0, 0) + ( 327483.840, 5183464.480, 0, 0) + ( 327486.010, 5183494.980, 0, 0) + ( 327571.280, 5184207.820, 0, 0) + ( 327617.210, 5184599.430, 0, 0) + ( 327620.420, 5184623.780, 0, 0) + ( 327625.530, 5184650.530, 0, 0) + ( 327698.430, 5184927.070, 0, 0) + ( 327702.100, 5184946.520, 0, 0) + ( 327717.940, 5185394.820, 0, 0) + ( 327723.190, 5185719.320, 0, 0) + ( 327719.460, 5185737.170, 0, 0) + ( 327712.090, 5185755.740, 0, 0) + ( 327699.840, 5185775.080, 0, 0) + ( 327683.830, 5185791.480, 0, 0) + ( 327665.380, 5185807.950, 0, 0) + ( 327641.970, 5185822.740, 0, 0) + ( 327622.280, 5185829.070, 0, 0) + ( 327604.950, 5185832.940, 0, 0) + ( 326937.500, 5185829.310, 0, 0) + ( 326935.880, 5187515.510, 0, 0) + ( 326983.050, 5189115.230, 0, 0) + ( 326998.860, 5189920.820, 0, 0) + ( 327060.240, 5190715.870, 0, 0) + ( 327123.230, 5192332.220, 0, 0) + ( 327179.920, 5193766.290, 0, 0) + ( 327185.490, 5193921.940, 0, 0) + ( 327204.120, 5195553.580, 0, 0) + ( 327218.270, 5197179.250, 0, 0) + ( 327251.330, 5198803.660, 0, 0) + +Shape:3 (NullShape) nVertices=0, nParts=0 + Bounds:( 0.000, 0.000, 0, 0) + to ( 0.000, 0.000, 0, 0) + +Shape:4 (NullShape) nVertices=0, nParts=0 + Bounds:( 0.000, 0.000, 0, 0) + to ( 0.000, 0.000, 0, 0) + +Shape:5 (NullShape) nVertices=0, nParts=0 + Bounds:( 0.000, 0.000, 0, 0) + to ( 0.000, 0.000, 0, 0) + +Shape:6 (Arc) nVertices=2, nParts=1 + Bounds:( 327123.230, 5192296.600, 0, 0) + to ( 328480.850, 5192332.220, 0, 0) + ( 327123.230, 5192332.220, 0, 0) Ring + ( 328480.850, 5192296.600, 0, 0) + +Shape:7 (Arc) nVertices=5, nParts=1 + Bounds:( 329222.060, 5217943.490, 0, 0) + to ( 335290.680, 5218084.780, 0, 0) + ( 329222.060, 5218084.780, 0, 0) Ring + ( 330442.520, 5218057.650, 0, 0) + ( 332059.960, 5218033.810, 0, 0) + ( 333685.820, 5218004.860, 0, 0) + ( 335290.680, 5217943.490, 0, 0) + +Shape:8 (Arc) nVertices=65, nParts=1 + Bounds:( 280048.100, 5177687.643, 0, 0) + to ( 280439.410, 5182567.120, 0, 0) + ( 280316.840, 5177687.643, 0, 0) Ring + ( 280325.310, 5177968.830, 0, 0) + ( 280324.630, 5178037.940, 0, 0) + ( 280324.150, 5178059.350, 0, 0) + ( 280320.130, 5178084.560, 0, 0) + ( 280299.860, 5178170.250, 0, 0) + ( 280288.710, 5178218.940, 0, 0) + ( 280274.280, 5178283.640, 0, 0) + ( 280268.000, 5178330.870, 0, 0) + ( 280267.910, 5178346.760, 0, 0) + ( 280270.510, 5178364.580, 0, 0) + ( 280274.820, 5178382.360, 0, 0) + ( 280278.440, 5178397.210, 0, 0) + ( 280351.400, 5178743.800, 0, 0) + ( 280369.860, 5178800.630, 0, 0) + ( 280378.670, 5178826.010, 0, 0) + ( 280400.350, 5178869.890, 0, 0) + ( 280414.870, 5178901.180, 0, 0) + ( 280427.030, 5178934.990, 0, 0) + ( 280436.250, 5178971.970, 0, 0) + ( 280439.410, 5178992.650, 0, 0) + ( 280439.170, 5179001.630, 0, 0) + ( 280437.010, 5179011.690, 0, 0) + ( 280434.930, 5179016.970, 0, 0) + ( 280431.870, 5179022.260, 0, 0) + ( 280413.610, 5179041.850, 0, 0) + ( 280410.040, 5179046.780, 0, 0) + ( 280406.640, 5179052.480, 0, 0) diff --git a/libs/shapelib/tests/test1.sh b/libs/shapelib/tests/test1.sh new file mode 100755 index 0000000..86ce986 --- /dev/null +++ b/libs/shapelib/tests/test1.sh @@ -0,0 +1,45 @@ +#!/bin/sh + +EG_DATA=/u/www/projects/shapelib/eg_data + +testdir="$(dirname "$(readlink -f $0)")" + +( +cd "$top_builddir" +echo ------------------------------------------------------------------------- +echo Test 1: dump anno.shp +echo ------------------------------------------------------------------------- +./shpdump $EG_DATA/anno.shp | head -250 + +echo ------------------------------------------------------------------------- +echo Test 2: dump brklinz.shp +echo ------------------------------------------------------------------------- +./shpdump $EG_DATA/brklinz.shp | head -500 + +echo ------------------------------------------------------------------------- +echo Test 3: dump polygon.shp +echo ------------------------------------------------------------------------- +./shpdump $EG_DATA/polygon.shp | head -500 + +echo ------------------------------------------------------------------------- +echo Test 4: dump pline.dbf - uses new F field type +echo ------------------------------------------------------------------------- +./dbfdump -m -h $EG_DATA/pline.dbf | head -50 + +echo ------------------------------------------------------------------------- +echo Test 5: NULL Shapes. +echo ------------------------------------------------------------------------- +./shpdump $EG_DATA/csah.dbf | head -150 +) > "$testdir/s1.out" + +result="$(diff "$testdir/s1.out" "$testdir/stream1.out")" +if [ "$result" == "" ]; then + echo "******* Stream 1 Succeeded *********" + rm "$testdir/s1.out" + exit 0 +else + echo "******* Stream 1 Failed *********" + echo "$result" + rm "$testdir/s1.out" + exit 1 +fi diff --git a/libs/shapelib/tests/test2.sh b/libs/shapelib/tests/test2.sh new file mode 100755 index 0000000..266fe54 --- /dev/null +++ b/libs/shapelib/tests/test2.sh @@ -0,0 +1,27 @@ +#!/bin/bash + +testdir="$(dirname "$(readlink -f $0)")" + +( +cd "$top_builddir" +for i in 0 1 2 3 4 5 6 7 8 9 10 11 12 13; do + echo ----------------------------------------------------------------------- + echo Test 2/$i + echo ----------------------------------------------------------------------- + + ./shptest $i + ./shpdump test${i}.shp +done +) > "$testdir/s2.out" + +result="$(diff "$testdir/s2.out" "$testdir/stream2.out")" +if [ "$result" == "" ]; then + echo "******* Stream 2 Succeeded *********" + rm "$testdir/s2.out" + exit 0 +else + echo "******* Stream 2 Failed *********" + echo "$result" + rm "$testdir/s2.out" + exit 1 +fi diff --git a/libs/shapelib/tests/test3.sh b/libs/shapelib/tests/test3.sh new file mode 100755 index 0000000..900e218 --- /dev/null +++ b/libs/shapelib/tests/test3.sh @@ -0,0 +1,38 @@ +#!/bin/bash + +# +# Use example programs to create a very simple dataset that +# should display in ARCView II. +# + +testdir="$(dirname "$(readlink -f $0)")" + +( +cd "$top_builddir" +./shpcreate test polygon +./dbfcreate test.dbf -s Description 30 -n TestInt 6 0 -n TestDouble 16 5 + +./shpadd test 0 0 100 0 100 100 0 100 0 0 + 20 20 20 30 30 30 20 20 +./dbfadd test.dbf "Square with triangle missing" 1.4 2.5 + +./shpadd test 150 150 160 150 180 170 150 150 +./dbfadd test.dbf "Smaller triangle" 100 1000.25 + +./shpadd test 150 150 160 150 180 170 150 150 +./dbfadd test.dbf "" "" "" + +./shpdump test.shp +./dbfdump test.dbf +) > "$testdir/s3.out" + +result=$(diff "$testdir/s3.out" "$testdir/stream3.out") +if [ "$result" == "" ]; then + echo "******* Stream 3 Succeeded *********" + rm "$testdir/s3.out" + exit 0 +else + echo "******* Stream 3 Failed *********" + echo "$result" + rm "$testdir/s3.out" + exit 1 +fi diff --git a/libs/shapelib/web/codepage.html b/libs/shapelib/web/codepage.html new file mode 100644 index 0000000..23a9cfb --- /dev/null +++ b/libs/shapelib/web/codepage.html @@ -0,0 +1,403 @@ + +This table is derived from:

    + +http://www.autopark.ru/ASBProgrammerGuide/DBFSTRUC.HTM

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    IDCodepageDescription
    10x01437US MS-DOS
    20x02850International MS-DOS
    30x031252Windows ANSI Latin I
    40x0410000Standard Macintosh
    80x08865Danish OEM
    90x09437Dutch OEM
    100x0A850Dutch OEM*
    110x0B437Finnish OEM
    130x0D437French OEM
    140x0E850French OEM*
    150x0F437German OEM
    160x10850German OEM*
    170x11437Italian OEM
    180x12850Italian OEM*
    190x13932Japanese Shift-JIS
    200x14850Spanish OEM*
    210x15437Swedish OEM
    220x16850Swedish OEM*
    230x17865Norwegian OEM
    240x18437Spanish OEM
    250x19437English OEM (Great Britain)
    260x1A850English OEM (Great Britain)*
    270x1B437English OEM (US)
    280x1C863French OEM (Canada)
    290x1D850French OEM*
    310x1F852Czech OEM
    340x22852Hungarian OEM
    350x23852Polish OEM
    360x24860Portuguese OEM
    370x25850Portuguese OEM*
    380x26866Russian OEM
    550x37850English OEM (US)*
    640x40852Romanian OEM
    770x4D936Chinese GBK (PRC)
    780x4E949Korean (ANSI/OEM)
    790x4F950Chinese Big5 (Taiwan)
    800x50874Thai (ANSI/OEM)
    870x57Current ANSI CPANSI
    880x581252Western European ANSI
    890x591252Spanish ANSI
    1000x64852Eastern European MS-DOS
    1010x65866Russian MS-DOS
    1020x66865Nordic MS-DOS
    1030x67861Icelandic MS-DOS
    1040x68895Kamenicky (Czech) MS-DOS
    1050x69620Mazovia (Polish) MS-DOS
    1060x6A737Greek MS-DOS (437G)
    1070x6B857Turkish MS-DOS
    1080x6C863French-Canadian MS-DOS
    1200x78950Taiwan Big 5
    1210x79949Hangul (Wansung)
    1220x7A936PRC GBK
    1230x7B932Japanese Shift-JIS
    1240x7C874Thai Windows/MSDOS
    1340x86737Greek OEM
    1350x87852Slovenian OEM
    1360x88857Turkish OEM
    1500x9610007Russian Macintosh
    1510x9710029Eastern European Macintosh
    1520x9810006Greek Macintosh
    2000xC81250Eastern European Windows
    2010xC91251Russian Windows
    2020xCA1254Turkish Windows
    2030xCB1253Greek Windows
    2040xCC1257Baltic Windows
    diff --git a/libs/shapelib/web/dbf_api.html b/libs/shapelib/web/dbf_api.html new file mode 100644 index 0000000..0bd0da1 --- /dev/null +++ b/libs/shapelib/web/dbf_api.html @@ -0,0 +1,434 @@ + + +Attribute (.DBF) API + + +

    Attribute (.DBF) API

    + +The Attribute (DBF) API uses DBFHandle to represent a handle for access +to one .dbf file. The contents of the DBFHandle are visible (see shapefil.h) +but should be ignored by the application. It is intended that all information +be accessed by API functions. Note that there should be exactly one record +in the .dbf file for each shape in the .shp/.shx files. This constraint +must be maintained by the application.

    + + + +

    DBFOpen()

    + +
    +DBFHandle DBFOpen( const char * pszDBFFile, const char * pszAccess );
    +
    +  pszDBFFile:		The name of the xBase (.dbf) file to access.
    +
    +  pszAccess:		The fopen() style access string.  At this time only
    +			"rb" (read-only binary) and "rb+" (read/write binary) 
    +		        should be used.
    +
    + + The DBFOpen() function should be used to establish access to an existing + xBase format table file. The returned DBFHandle is passed to other + access functions, and DBFClose() should be invoked to recover resources, and + flush changes to disk when complete. The DBFCreate() function should + called to create new xBase files. As a convenience, DBFOpen() can be + called with the name of a .shp or .shx file, and it will figure out the + name of the related .dbf file.

    + + + +

    DBFCreate()

    + +
    +DBFHandle DBFCreate( const char * pszDBFFile );
    +
    +  pszDBFFile:		The name of the xBase (.dbf) file to create.
    +
    + + The DBFCreate() function creates a new xBase format file with the given + name, and returns an access handle that can be used with other DBF functions. + The newly created file will have no fields, and no records. Fields should + be added with DBFAddField() before any records add written. + + + +

    DBFGetFieldCount()

    + +
    +int DBFGetFieldCount( DBFHandle hDBF );
    +
    +  hDBF:		The access handle for the file to be queried, as returned
    +                by DBFOpen(), or DBFCreate().
    +
    + + The DBFGetFieldCount() function returns the number of fields currently + defined for the indicated xBase file. + + + +

    DBFGetRecordCount()

    + +
    +int DBFGetRecordCount( DBFHandle hDBF );
    +
    +  hDBF:		The access handle for the file to be queried, as returned by
    +		DBFOpen(), or DBFCreate().
    +
    + + The DBFGetRecordCount() function returns the number of records that + exist on the xBase file currently. Note that with shape files one xBase + record exists for each shape in the .shp/.shx files.

    + + + +

    DBFGetFieldIndex()

    + +
    +int DBFGetFieldIndex( DBFHandle hDBF, const char *pszFieldName );
    +
    +  hDBF:		The access handle for the file to be queried, as returned by
    +		DBFOpen(), or DBFCreate().
    +
    +  pszFieldName: Name of the field to search for.
    +
    + + Returns the index of the field matching this name, or -1 on failure. The + comparison is case insensitive. However, lengths must match exactly.

    + + + +

    DBFGetFieldInfo()

    + +
    +DBFFieldType DBFGetFieldInfo( DBFHandle hDBF, int iField, char * pszFieldName,
    +                              int * pnWidth, int * pnDecimals );
    +
    +  hDBF:		The access handle for the file to be queried, as returned by
    +		DBFOpen(), or DBFCreate().
    +
    +  iField:	The field to be queried.  This should be a number between 
    +                0 and n-1, where n is the number fields on the file, as
    +                returned by DBFGetFieldCount().
    +
    +  pszFieldName:	If this pointer is not NULL the name of the requested field
    +		will be written to this location.  The pszFieldName buffer 
    +                should be at least 12 character is size in order to hold
    +		the longest possible field name of 11 characters plus a 
    +                terminating zero character.
    +
    +  pnWidth:	If this pointer is not NULL, the width of the requested field
    +		will be returned in the int pointed to by pnWidth.  This is
    +                the width in characters.  
    +
    +  pnDecimals:	If this pointer is not NULL, the number of decimal places
    +                precision defined for the field will be returned.  This is
    +                zero for integer fields, or non-numeric fields.
    +
    + + The DBFGetFieldInfo() returns the type of the requested field, which is + one of the DBFFieldType enumerated values. As well, the field name, and + field width information can optionally be returned. The field type returned + does not correspond one to one with the xBase field types. For instance + the xBase field type for Date will just be returned as being FTInteger.

    + +

    +    typedef enum {
    +      FTString,			/* fixed length string field 		*/
    +      FTInteger,		/* numeric field with no decimals 	*/
    +      FTDouble,			/* numeric field with decimals 		*/
    +      FTLogical,		/* logical field.                       */
    +      FTInvalid                 /* not a recognised field type 		*/
    +    } DBFFieldType;
    +
    + + + +

    DBFAddField()

    + +
    +int DBFAddField( DBFHandle hDBF, const char * pszFieldName, 
    +                 DBFFieldType eType, int nWidth, int nDecimals );
    +
    +  hDBF:		The access handle for the file to be updated, as returned by
    +		DBFOpen(), or DBFCreate().
    +
    +  pszFieldName:	The name of the new field.  At most 11 character will be used.
    +                In order to use the xBase file in some packages it may be
    +                necessary to avoid some special characters in the field names
    +                such as spaces, or arithmetic operators.
    +
    +  eType:	One of FTString, FTInteger or FTDouble in order to establish
    +                the type of the new field.  Note that some valid xBase field
    +                types cannot be created such as date fields.
    +
    +  nWidth:	The width of the field to be created.  For FTString fields this
    +                establishes the maximum length of string that can be stored.
    +                For FTInteger this establishes the number of digits of the
    +                largest number that can
    +                be represented.  For FTDouble fields this in combination
    +                with the nDecimals value establish the size, and precision
    +                of the created field.
    +
    +  nDecimals:    The number of decimal places to reserve for FTDouble fields.
    +                For all other field types this should be zero.  For instance
    +                with nWidth=7, and nDecimals=3 numbers would be formatted
    +                similarly to `123.456'.
    +
    + + The DBFAddField() function is used to add new fields to an existing xBase + file opened with DBFOpen(), or created with DBFCreate().

    + + The DBFAddField() return value is the field number of the new field, or + -1 if the addition of the field failed.

    + + + +

    DBFReadIntegerAttribute()

    + +
    +int DBFReadIntegerAttribute( DBFHandle hDBF, int iShape, int iField );
    +  
    +  hDBF:		The access handle for the file to be queried, as returned by
    +		DBFOpen(), or DBFCreate().
    +
    +  iShape:	The record number (shape number) from which the field value
    +                should be read.
    +
    +  iField:	The field within the selected record that should be read.
    +
    + + The DBFReadIntegerAttribute() will read the value of one field and return + it as an integer. This can be used even with FTString fields, though the + returned value will be zero if not interpretable as a number.

    + + + +

    DBFReadDoubleAttribute()

    + +
    +double DBFReadDoubleAttribute( DBFHandle hDBF, int iShape, int iField );
    +  
    +  hDBF:		The access handle for the file to be queried, as returned by
    +		DBFOpen(), or DBFCreate().
    +
    +  iShape:	The record number (shape number) from which the field value
    +                should be read.
    +
    +  iField:	The field within the selected record that should be read.
    +
    + + The DBFReadDoubleAttribute() will read the value of one field and return + it as a double. This can be used even with FTString fields, though the + returned value will be zero if not interpretable as a number.

    + + + +

    DBFReadStringAttribute()

    + +
    +const char *DBFReadStringAttribute( DBFHandle hDBF, int iShape, int iField );
    +  
    +  hDBF:		The access handle for the file to be queried, as returned by
    +		DBFOpen(), or DBFCreate().
    +
    +  iShape:	The record number (shape number) from which the field value
    +                should be read.
    +
    +  iField:	The field within the selected record that should be read.
    +
    + + The DBFReadStringAttribute() will read the value of one field and return + it as a string. This function may be used on any field type (including + FTInteger and FTDouble) and will return the string representation stored + in the .dbf file. The returned pointer is to an internal buffer + which is only valid untill the next DBF function call. It's contents may + be copied with normal string functions such as strcpy(), or strdup(). If + the TRIM_DBF_WHITESPACE macro is defined in shapefil.h (it is by default) + then all leading and trailing space (ASCII 32) characters will be stripped + before the string is returned.

    + + + +

    DBFIsAttributeNULL()

    + +
    +int DBFIsAttributeNULL( DBFHandle hDBF, int iShape, int iField );
    +  
    +  hDBF:		The access handle for the file to be queried, as returned by
    +		DBFOpen(), or DBFCreate().
    +
    +  iShape:	The record number (shape number) from which the field value
    +                should be read.
    +
    +  iField:	The field within the selected record that should be read.
    +
    + + This function will return TRUE if the indicated field is NULL valued + otherwise FALSE. Note that NULL fields are represented in the .dbf file + as having all spaces in the field. Reading NULL fields will result in + a value of 0.0 or an empty string with the other DBFRead*Attribute() + functions.

    + + + +

    DBFWriteIntegerAttribute

    + +
    +int DBFWriteIntegerAttribute( DBFHandle hDBF, int iShape, int iField,
    +                              int nFieldValue );
    +
    +  hDBF:		The access handle for the file to be written, as returned by
    +		DBFOpen(), or DBFCreate().
    +
    +  iShape:	The record number (shape number) to which the field value
    +                should be written.
    +
    +  iField:	The field within the selected record that should be written.
    +
    +  nFieldValue:	The integer value that should be written.
    +
    + +The DBFWriteIntegerAttribute() function is used to write a value to a numeric +field (FTInteger, or FTDouble). If the write succeeds the value TRUE will +be returned, otherwise FALSE will be returned. If the value is too large to +fit in the field, it will be truncated and FALSE returned.

    + + + +

    DBFWriteDoubleAttribute()

    + +
    +int DBFWriteDoubleAttribute( DBFHandle hDBF, int iShape, int iField,
    +                             double dFieldValue );
    +
    +  hDBF:		The access handle for the file to be written, as returned by
    +		DBFOpen(), or DBFCreate().
    +
    +  iShape:	The record number (shape number) to which the field value
    +                should be written.
    +
    +  iField:	The field within the selected record that should be written.
    +
    +  dFieldValue:	The floating point value that should be written.
    +
    + +The DBFWriteDoubleAttribute() function is used to write a value to a numeric +field (FTInteger, or FTDouble). If the write succeeds the value TRUE will +be returned, otherwise FALSE will be returned. If the value is too large to +fit in the field, it will be truncated and FALSE returned.

    + + + +

    DBFWriteStringAttribute()

    + +
    +int DBFWriteStringAttribute( DBFHandle hDBF, int iShape, int iField,
    +                             const char * pszFieldValue );
    +
    +  hDBF:		The access handle for the file to be written, as returned by
    +		DBFOpen(), or DBFCreate().
    +
    +  iShape:	The record number (shape number) to which the field value
    +                should be written.
    +
    +  iField:	The field within the selected record that should be written.
    +
    +  pszFieldValue: The string to be written to the field.
    +
    + +The DBFWriteStringAttribute() function is used to write a value to a string +field (FString). If the write succeeds the value TRUE willbe returned, +otherwise FALSE will be returned. If the value is too large to +fit in the field, it will be truncated and FALSE returned.

    + + + +

    DBFWriteNULLAttribute()

    + +
    +int DBFWriteNULLAttribute( DBFHandle hDBF, int iShape, int iField );
    +
    +  hDBF:		The access handle for the file to be written, as returned by
    +		DBFOpen(), or DBFCreate().
    +
    +  iShape:	The record number (shape number) to which the field value
    +                should be written.
    +
    +  iField:	The field within the selected record that should be written.
    +
    + +The DBFWriteNULLAttribute() function is used to clear the indicated field +to a NULL value. In the .dbf file this is represented by setting the entire +field to spaces. If the write succeeds the value TRUE willbe returned, +otherwise FALSE will be returned.

    + + + +

    DBFClose()

    + +
    +void DBFClose( DBFHandle hDBF );
    +
    +  hDBF:		The access handle for the file to be closed.
    +
    + + The DBFClose() function will close the indicated xBase file (opened with + DBFOpen(), or DBFCreate()), flushing out all information to the file on + disk, and recovering any resources associated with having the file open. + The file handle (hDBF) should not be used again with the DBF API after + calling DBFClose().

    + + + +

    DBFIsRecordDeleted()

    + +
    +int DBFIsRecordDeleted( DBFHandle hDBF, int iShape );
    +
    +  hDBF:		The access handle for the file to be checked.
    +  iShape:       The record index to check.
    +
    + + Returns TRUE (non-zero) if the record is marked for deletion, otherwise + it returns FALSE.

    + + + +

    DBFMarkRecordDeleted()

    + +
    +int DBFMarkRecordDeleted( DBFHandle hDBF, int iShape, int bIsDeleted );
    +
    +  hDBF:		The access handle for the file.
    +  iShape:       The record index to update.
    +  bIsDeleted:   TRUE to mark record deleted, or FALSE to undelete it.
    +
    + + Returns TRUE on success, or FALSE on error.

    + + + +

    DBFGetNativeFieldType()

    + +
    +char DBFGetNativeFieldType( DBFHandle hDBF, int iField );
    +
    +  hDBF:		The access handle for the file.
    +  iField:       The field index to query.
    +  
    +
    + + This function returns the DBF type code of the indicated field. It will + be one of:

    + +

      +
    • 'C' (String) +
    • 'D' (Date) +
    • 'F' (Float) +
    • 'N' (Numeric, with or without decimal) +
    • 'L' (Logical) +
    • 'M' (Memo: 10 digits .DBT block ptr) +
    • ' ' (field out of range) +
    + + + diff --git a/libs/shapelib/web/index.html b/libs/shapelib/web/index.html new file mode 100644 index 0000000..19a4336 --- /dev/null +++ b/libs/shapelib/web/index.html @@ -0,0 +1,232 @@ + + +Shapefile C Library + + + + +

    Shapefile C Library

    + +

    Purpose

    + +The Shapefile C Library provides the ability to write simple C programs +for reading, writing and updating (to a limited extent) ESRI Shapefiles, +and the associated attribute file (.dbf).

    + +

    Supporting Information

    + + + +

    What is a Shapefile?

    + +If you don't know, you probably don't need this library. The Shapefile +format is a working and interchange format promulagated by +ESRI for simple vector data with attributes. +

    + +An excellent white paper on the shapefile format +is available from ESRI, +but it is .pdf format, so you will need Adobe Acrobat to browse it.

    + +The file format actually consists of three files.

    + +

    +XXX.shp - holds the actual vertices.
    +XXX.shx - hold index data pointing to the structures in the .shp file.
    +XXX.dbf - holds the attributes in xBase (dBase) format.  
    +
    + +

    Download

    + +Source code, and some other odds and ends can be downloaded from +http://download.osgeo.org/shapelib.

    + +Shapelib is available for anonymous CVS access: + +

    +  cvs -d :pserver:cvsanon@cvs.maptools.org:/cvs/maptools/cvsroot login
    +  Password: (hit enter)
    +  cvs -d :pserver:cvsanon@cvs.maptools.org:/cvs/maptools/cvsroot co shapelib
    +
    + +

    Bugs, Maintainance and Support

    + +This library is maintained by Frank +Warmerdam. Please send me bug reports, patches and suggestions for the +library via the maptools.org Bugzilla. Shapelib bugs can also be +queried. +

    + +Shapelib is hosted at +shapelib.maptools.org. A mailing +list for discussion of how to use shapelib, and announcing new releases +is +available. To only find out about new releases of Shapelib select the +"Subscribe to new releases" option from the link at +Freshmeat.

    + +

    Credits

    + +I didn't start this section anywhere near soon enough, so alot of earlier +contributors to Shapelib are lost in pre-history. + +
      +
    • Bill Miller (NY-DOT) for shputils.c +
    • Carl Anderson for the contents of the contrib directory, and +the "tuple" additions to dbfopen.c. +
    • Andrea Giacomelli for patches for dbfopen.c. +
    • Doug Matthews for portability improvements. +
    • Jan-Oliver Wagner for convincing me to make it available under LGPL, +shared library support, and various other patches. +
    • Dennis Christopher (of Avenza) for testing and bug fixes. +
    • Miko Syrj (of 3D-system Oy) for a record size bug fix. +
    • Steven Lime and Curtis Hill for help with NULL shapes. +
    • Jim Matthews for support of NULL attributes in dbf files. +
    • PCI Geomatics who let me +release a modified version of their shapefile code in the beginning and +who hosted shapelib for years. +
    + +

    In Memorium

    + +I would like to dedicate Shapelib to the memory of Sol Katz. While I never +met him in person, his generous contributions to the GIS community took +many forms, including free distribution of a variety of GIS translators +with source. The fact that he used this Shapelib in some of his utilities, +and thanked me was a great encouragement to me. I hope I can do his memory +honour by trying to contribute in a similar fashion.

    + +

    Portability

    + +The Shapefile C Library should port easily to 32bit systems with ANSI C +compilers. It should work on 64 bit architectures (such as the DEC AXP).

    + +Care should also be taken to pass the binary access flag into SHPOpen() +and DBFOpen() when operating on systems with special text file translation +such as MSDOS.

    + +The shputils.c module is contributed, and may not take the same approach +to portability as the rest of the package.

    + +On Linux, and most unix systems it should be possible to build and +install shapefile support as a shared library using the "lib" and "lib_install" +targets of the Makefile. Note that this Makefile doesn't use autoconf +mechanisms and will generally require some hand tailoring for your environment. + +

    Limitations

    + +
      + +
    • You can't modify the vertices of existing structures (though you + can update the attributes of existing structures, and create new + structures).

      + +

    • Not written in such a way as to be particularly fast. This is +particularly true of the 1.2 API. For applications more concerned with +speed it may be worth using the V1.1 API.

      + +

    • Doesn't set the last access time properly in the .dbf files.

      + +

    • There is no way to synchronize information to the file except to close it. +

      + +

    • Poor error checking and reporting.

      + +

    • Not professionally supported (well it can be, if you want to pay).

      + +

    • Some aspects of xBase files not supported, though I believe they are +not used by ESRI.

      + +

    • The application must keep the .dbf file in sync with the .shp/.shx +files through appropriate use of the DBF and SHP APIs.

      + +

    • No support for the undocumented .sbn/.sbx spatial index files.

      + +

    + +

    Other Shapefile Resources

    + +
      +
    • Shapefile Format Specifications (pdf)

      + +

    • Xbase (.dbf) File Format Description.

      + +

    • Language ID / Code Page mappings

      + +

    • Shapelib is used within the multiformat +OGR library. If you are looking for a +high level C++ library with support for many geospatial vector formats you +might want to check it out.

      + +

    • Ari Jolma has produced an initial perl binding on top of shapelib, +which can be found at CPAN as Geo::ShapeFile under the +Geo module. +

      + +

    • Bernhard Herzog has produced python bindings for Shapelib with +SWIG, available at http://ftp.intevation.de/users/bh/pyshapelib. A new version not using swig is +available as part of Thuban.

      + +

    • Delphi +bindings for Shapelib courtesy of Alexander Weidauer.

      + +

    • Miguel Filgueiras has implemented +Tcl bindings for Shapelib +as part of GPSMan.

      + +

    • David Gancarz has implemented a Microsoft +.NET wrapper for +Shapelib. An example of using shapelib with VB6 is also icluded in the .NET wrapper project file.

      + +

    • Andrey Hristov (php at hristov dot com) has developed a PHP extension +based on Shapelib. It can be found in CVS at http://cvs.php.net/pecl/shp.

      + +

    • Toyoda Eizi has developed Ruby bindings found at +http://sourceforge.net/projects/ruby-shapelib.

      + +

    • Davide Cesari has developed FORTRAN bindings that can be found at + +http://www.webalice.it/o.drofa/davide/shapelib-fortran. + +
    • Jan-Oliver Wagner has implemented a commandline program +(gen2shp) for producing shapefiles from Arc/Info Generate format ASCII +files. He maintains a web page for his work.

      + +

    • Tom Russo has implemented a shpcs2cs program, which reprojects shapefiles +using arguments similar to the PROJ.4 cs2cs program including datum conversion. +Use as an alternate to the contrib/shpproj which doesn't do datums. It is +available at the bottom of Tom's Xastir Shapefile Resources page.

      + +

    • +Andrew Williamson's +Useful +Scripts and Stuff page for ArcView, which includes ShapeChecker.

      + +

    • The University of Bonn +sf4java project apparently includes Java classes for reading Shapefiles.

      + +

    • The ShapeIO2 Visual Basic libraries may be of interest to those wanting +VB access to Shapefiles. Also available locally.

      + +

    • The ShapeFile Read/Write OCX is another option for Visual Basic programmers.

      + +

    • Isovist Analyst is a sort-of-free isovist generating extension for +ArcView using shapelib.

      + +

    • shpdiff utility +by Bryce Nesbitt.

      + +

    • Aequometer: a program for +MS Excel to calculate the area of polygons and export as shapefiles.

      + +

    + + + diff --git a/libs/shapelib/web/license.html b/libs/shapelib/web/license.html new file mode 100644 index 0000000..8f82616 --- /dev/null +++ b/libs/shapelib/web/license.html @@ -0,0 +1,78 @@ + + +Shapelib License + + + + +

    License

    + +The source for the Shapefile C Library is (c) 1998 Frank Warmerdam, +and released under the following conditions. The intent is that anyone +can do anything with the code, but that I do not assume any liability, nor +express any warranty for this code.

    + +As of Shapelib 1.2.6 the core portions of the library are made available +under two possible licenses. The licensee can choose to use the code +under either the Library GNU Public License (LGPL) described in +COPYING or under the following MIT style license. Any files in +the Shapelib distribution without explicit copyright license terms +(such as this documentation, the Makefile and so forth) should be +considered to have the following licensing terms. Some auxilary portions +of Shapelib, notably some of the components in the contrib directory +come under slightly different license restrictions. Check the source +files that you are actually using for conditions.

    + +

    Default License Terms

    + + +Copyright (c) 1999, Frank Warmerdam

    + +This software is available under the following "MIT Style" license, +or at the option of the licensee under the LGPL (see COPYING). This +option is discussed in more detail in shapelib.html.

    + +Permission is hereby granted, free of charge, to any person obtaining a +copy of this software and associated documentation files (the "Software"), +to deal in the Software without restriction, including without limitation +the rights to use, copy, modify, merge, publish, distribute, sublicense, +and/or sell copies of the Software, and to permit persons to whom the +Software is furnished to do so, subject to the following conditions:

    + +The above copyright notice and this permission notice shall be included +in all copies or substantial portions of the Software.

    + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL +THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +DEALINGS IN THE SOFTWARE.

    + + +

    Shapelib Modifications

    + +I am pleased to receive bug fixes, and improvements for Shapelib. Unless +the submissions indicate otherwise I will assume that changes submitted to +me remain under the the above "dual license" terms. If changes are made +to the library with the intention that those changes should be protected by +the LGPL then I should be informed upon submission. Note that I will not +generally incorporate changes into the core of Shapelib that are protected +under the LGPL as this would effectively limit the whole file and +distribution to LGPL terms.

    + +

    Opting for LGPL

    + +For licensee's opting to use Shapelib under LGPL as opposed to the MIT +Style license above, and wishing to redistribute the software based on +Shapelib, I would ask that all "dual license" modules be updated to +indicate that only the LGPL (and not the MIT Style license) applies. This +action represents opting for the LGPL, and thereafter LGPL terms apply to +any redistribution and modification of the affected modules.

    + + + + + + diff --git a/libs/shapelib/web/manifest.html b/libs/shapelib/web/manifest.html new file mode 100644 index 0000000..c512112 --- /dev/null +++ b/libs/shapelib/web/manifest.html @@ -0,0 +1,87 @@ + + +Shapefile C Library V1.2 + + + + +

    Shapelib Manifest

    + +
      +
    • web/index.html: This file - general documentation on the +Shapefile C Library.

      + +

    • web/shp_api.html: Documentation +for the API for accessing the .shp/.shx files.

      + +

    • web/dbf_api.html: Documentation +for the API for accessing the .dbf attribute files.

      + +

    • shpopen.c: C code for access to .shp/.shx vertex files.

      + +

    • dbfopen.c: C code for access to .dbf attribute file.

      + +

    • shapefil.h: Include file defining all the services of dbfopen.c +and shpopen.c.

      + +

    • contrib/: A directory of "in progress" contributed programs +from Carl Anderson.

      + +

    • dbfcreate.c: Simple example program for creating a new .dbf file. +

      + +

    • dbfadd.c: + Simple example program for adding a record to a .dbf file.

      + +

    • dbfdump.c: Simple example program for displaying the contents of + a .dbf file.

      + +

    • shpcreate.c: Simple example program for creating a new .shp and +.shx file.

      + +

    • shpadd.c: Simple example program for adding a shape to an existing + shape file.

      + +

    • shpdump.c: Simple program for dumping all the vertices in a + shapefile with an indicating of the parts.

      + +

    • shputils.c: Complex contributed program capable of clipping and + appending + shapefiles as well as a few other things. Type shputils + after building to get a full usage message.

      + +

    • Makefile: A simple makefile to compile the library and example + programs.

      + +

    • makeshape.sh: A simple script for running some of the example +programs.

      + +

    • shptest.c: A simple test harnass to generate each of the supported + types of shapefiles.

      + + +

    • shptree.c: Implements a simple quadtree algorithm for fast +spatial searches of shapefiles.

      + +

    • shptreedump.c: A simple mainly showing information on quad +trees build using the quad tree api.

      + +

    • stream1.sh - A test script, which should produce stream1.out. +Note this will only work if you have the example data downloaded.

      + +

    • stream1.out: Expected output of stream1.sh test script.

      + +

    • stream2.sh: A test script, which should produce stream2.out.

      + +

    • stream2.out: Expected output of stream2.sh test script.

      + +

    • pyshapelib-0.1: Prototype contributed Python bindings.

      + +

    + + + + + + + diff --git a/libs/shapelib/web/maptools.css b/libs/shapelib/web/maptools.css new file mode 100644 index 0000000..0ff995d --- /dev/null +++ b/libs/shapelib/web/maptools.css @@ -0,0 +1,357 @@ +/* Redefined Tags */ + +body { + font-family: Arial, Helvetica, sans-serif; + font-size: 12px; +} +h1 { + font-family: Arial, Helvetica, sans-serif; + font-size: 24px; + line-height: 32px; + color: #006699; + border-bottom-width: 2px; + border-bottom-style: solid; + border-bottom-color: #80B3CC; +} +h2 { + font-family: Arial, Helvetica, sans-serif; + font-size: 20px; + line-height: 26px; + color: #006699; + border-bottom-width: 1px; + border-bottom-style: solid; + border-bottom-color: #80B3CC; +} +h3 { + font-family: Arial, Helvetica, sans-serif; + font-size: 16px; + line-height: 20px; + font-weight: bold; + color: #006699; + border-bottom-width: 1px; + border-bottom-style: solid; + border-bottom-color: #80B3CC; +} +h4 { + font-family: Arial, Helvetica, sans-serif; + font-size: 14px; + line-height: 18px; + font-weight: bold; + color: #006699; +} +h5 { + font-family: Arial, Helvetica, sans-serif; + font-size: 13px; + font-weight: bold; + color: #006699; +} +h6 { + font-family: Arial, Helvetica, sans-serif; + font-size: 12px; + font-weight: bold; +} + +p { + font-family: Arial, Helvetica, sans-serif; + font-size: 12px; + line-height: 16px; +} +span { + font-family: Arial, Helvetica, sans-serif; +} +div { + font-family: Arial, Helvetica, sans-serif; +} +blockquote { + font-family: Arial, Helvetica, sans-serif; + font-size: 12px; +} +pre { + font-family: "Courier New", Courier, mono; + font-size: 12px; +} +ol { + font-family: Arial, Helvetica, sans-serif; + font-size: 12px; + line-height: 16px; +} +ul { + font-family: Arial, Helvetica, sans-serif; + font-size: 12px; + line-height: 16px; + list-style-type: square; + list-style-image: url(images/bullets/squarebullet.gif); +} +ul.download { + font-family: Arial, Helvetica, sans-serif; + font-size: 12px; + line-height: 16px; + list-style-type: square; + list-style-image: url(images/bullets/dlbullet.gif); +} +ul.document { + font-family: Arial, Helvetica, sans-serif; + font-size: 12px; + line-height: 16px; + list-style-type: square; + list-style-image: url(images/bullets/pagebullet.gif); +} +li { + font-family: Arial, Helvetica, sans-serif; + font-size: 12px; + line-height: 16px; + margin-top: 4px; +} +dl { + font-family: Arial, Helvetica, sans-serif; + font-size: 12px; +} +dd { + font-family: Arial, Helvetica, sans-serif; + font-size: 12px; +} +dt { + margin-top: 8px; + font-family: Arial, Helvetica, sans-serif; + font-size: 12px; +} +td { + font-family: Arial, Helvetica, sans-serif; + font-size: 12px; +} +font { + font-family: Arial, Helvetica, sans-serif; + font-size: 12px; +} + + +a[href] { + font-family: Arial, Helvetica, sans-serif; + color: #006699; + text-decoration: underline; +} +a[href]:link { + font-family: Arial, Helvetica, sans-serif; + color: #006699; + text-decoration: underline; +} +a[href]:hover { + font-family: Arial, Helvetica, sans-serif; + color: #003366; + text-decoration: underline; +} +a[href]:visited { + font-family: Arial, Helvetica, sans-serif; + color: #003366; + text-decoration: underline; +} +a[href]:active { + font-family: Arial, Helvetica, sans-serif; + color: #199DBF; + text-decoration: underline; +} + + +/* Defined Classes */ + +.copyright { + font-family: Arial, Helvetica, sans-serif; + font-size: 10px; + line-height: 12px; + color: #FFFFFF; + text-decoration: none; +} +a.copyright { + font-family: Arial, Helvetica, sans-serif; + font-size: 10px; + line-height: 12px; + color: #FFFFFF; + text-decoration: none; +} +a.copyright:link { + font-family: Arial, Helvetica, sans-serif; + font-size: 10px; + line-height: 12px; + color: #FFFFFF; + text-decoration: none; +} +a.copyright:hover { + font-family: Arial, Helvetica, sans-serif; + font-size: 10px; + line-height: 12px; + color: #FFFFFF; + text-decoration: underline; +} +a.copyright:visited { + font-family: Arial, Helvetica, sans-serif; + font-size: 10px; + line-height: 12px; + color: #FFFFFF; + text-decoration: none; +} +a.copyright:active { + font-family: Arial, Helvetica, sans-serif; + font-size: 10px; + line-height: 12px; + color: #FFFFFF; + text-decoration: underline; +} + + +.TechNewsHead { + font-family: Arial, Helvetica, sans-serif; + font-size: 12px; + color: #003366; + line-height: 16px; + margin:0px; + padding: 3px; + padding-top: 14px; + padding-left: 20px; + padding-right: 20px; +} +.TechNewsBody { + font-family: Arial, Helvetica, sans-serif; + font-size: 11px; + line-height: 13px; + color: #000000; + margin:0px; + padding: 3px; + padding-left: 20px; + padding-right: 20px; +} + + +.Intro { + font-family: Arial, Helvetica, sans-serif; + font-size: 12px; + line-height: normal; + color: #003366; + background-color: #EFF3F7; + border: 1px dashed #DCE4ED; + padding: 6px; +} + +.shopbox { + font-family: Arial, Helvetica, sans-serif; + font-size: 12px; + line-height: normal; + color: #003366; + border: 1px dashed #E7E4DA; + background-color: #F7F7EF; + padding: 6px; + padding-bottom: 18px; + padding-top: 18px; +} + +.shopboxTitle { + font-family: Arial, Helvetica, sans-serif; + font-size: 16px; + line-height: 20px; + font-weight: bold; + margin-bottom: 2px; + color: #006699; + text-align: left; +} + +.welcomeTitle { + font-family: Arial, Helvetica, sans-serif; + font-size: 16px; + line-height: 18px; + font-weight: bold; + color: #006699; + text-align: left; +} + +.license { + padding: 5px; + border: 1px solid #003366; +} +table.BlueBox { + font-family: Arial, Helvetica, sans-serif; + font-size: 12px; + background-color: #003366; + border-spacing: 1px; +} +td.BlueBox { + background-color: #EFF3F7; + font-size: 12px; + color: #003366; + margin:0px; + padding: 4px; +} + +.BlueCopyLt { + color: #006699; +} +.BlueCopyDk { + color: #003366; +} + + +.SideTitle { + font-size: 12px; + font-weight: bold; + line-height: 16px; + color: #003366; + margin:0px; + padding: 4px; + padding-left: 7px; +} +.SideMenuItem { + font-size: 11px; + line-height: 14px; + color: #003366; + margin:0px; + padding:4px; + padding-left: 7px; +} +.SideText { + font-size: 11px; + line-height: 14px; + margin:0px; + padding: 4px; + padding-left: 7px; +} +.TopMenu { + font-size: 11px; + color: #FFFFFF; + margin:0px; + padding: 4px; + padding-left: 7px; +} + +TopMenuItem { + font-size: 11px; + color: #FFFFFF; +} + +a.TopMenuItem { + font-size: 11px; + color: #FFFFFF; + text-decoration: underline; +} + +a.TopMenuItem:link { + font-size: 11px; + color: #FFFFFF; + text-decoration: underline; +} + +a.TopMenuItem:hover { + font-size: 11px; + color: #AFBFCF; + text-decoration: underline; +} + +a.TopMenuItem:visited { + font-size: 11px; + color: #FFFFFF; + text-decoration: underline; +} + +a.TopMenuItem:active { + font-size: 11px; + color: #A0CFFF; + text-decoration: underline; +} + diff --git a/libs/shapelib/web/release.html b/libs/shapelib/web/release.html new file mode 100644 index 0000000..ad2349d --- /dev/null +++ b/libs/shapelib/web/release.html @@ -0,0 +1,103 @@ + + +Shapelib Release Notes + + + + +

    Shapelib Release Notes

    + +To get notification of new releases of Shapelib subscribe to +the project at www.freshmeat.net. This is currently the only reliable +way of finding out about new releases since there is no shapelib specific +mailing list.

    + +Release 1.4.1: +

      +
    • Fix a regression regarding re-writing the last shape + of a file (GDAL #7031) +
    + +Release 1.4.0: +
      +
    • Old Makefile build replaced by autoconf/automake (by Sandro Mani) +
    • CMake build system added (by Alan W. Irwin) +
    • Added read support for ESRI .sbn spatial index +
    • Resynchronization with GDAL's Shapefile driver. Mostly cleanups. + SHPObject and DBFInfo structures extended with new members +
    • Add DBFSetLastModifiedDate() to modify the update date in the .dbf +
    • Add SHPSetFastModeReadObject() to read faster (but shapes got that way + share state in the handle, so only one shape at a time can be used) +
    • Add SHPRestoreSHX() to recreate a missing .shx from the .shp and + SHPOpenLLEx(). +
    • Write DBF end-of-file character 0x1A by default. + This behaviour can be controlled with the DBFSetWriteEndOfFileChar() + function. +
    + +Release 1.3.0: +
      +
    • Major rework to us application provided hooks for file io, and error reporting (SAHooks). +
    • Added contrib/Shape_PointInPoly.cpp from Marko Podgorsek. +
    • Added shapelib tools documentation from Eduardo Patto Kanegae. +
    • Added dbf deletion support. +
    • Added DBFAddNativeFieldType(). +
    • Added DBFDeleteField(), DBFReorderFields() and DBFAlterFields() to +rework DBF schema. +
    • likely a variety of other changes - it has been eight years since 1.2.10! +
    + +Release 1.2.10: Added SHPRewindObject() function, and shprewind utility +program. Added FTLogical, DBFReadLogicalAttribute() and +DBFWriteLogicalAttribute() (thanks to Olek Neyman).

    + +Release 1.2.9: Good support for reading and writing NULL fields +in .dbf files, good support for NULL shapes and addition of the +DBFGetFieldIndex() functions (all contributed by Jim Matthews).

    + +An upgraded shputils.c has been contributed by Bill Miller. Daniel +Morissette contributed DBFGetNativeFieldType(). Better error checking +for disk errors in dbfopen.c. Various other bug fixes and safety improvements. +

    + +Release 1.2.8: Added hacked libtool support (supplied by Jan) +and "rpm ready" install logic.

    + +Release 1.2.7: Fix record size (was 4 bytes too long). Modify +SHPReadObject() to handle null shapes properly. Use atof() instead of +sscanf(). Support .DBF as well as .dbf.

    + +Release 1.2.6: Now available under old MIT style license, or at the +users option, LGPL. Added the contrib directory of stuff from Carl Anderson +and the shptree.c API for quadtree based spatial searches.

    + +Release 1.2.5: SHPOpen() now forcably uses "rb" or "r+b" access string +to avoid common mistakes on Windows. Also fixed a serious bug with .dbf +files with a 'F' field type.

    + +Release 1.2.4: DBFOpen() will now automatically translate a .shp +extension to .dbf for convenience. SHPOpen() will try datasets with lower +and uppercase extension. DBFAddField() now returns the field number, +not TRUE/FALSE.

    + +Release 1.2.3: Disable writing measures to multi-patches as ArcView +seems to puke on them (as reported by Monika Sester). Add white space +trimming, and string/numeric attribute interchangability in DBF API +as suggested by Steve Lime. Dbfdump was updated to include several +reporting options.

    + +Release 1.2.2: Added proper support for multipatch (reading and +writing) - this release just for testing purposes.

    + +Release 1.2 is mostly a rewrite of the .shp/.shx access API to account +for ArcView 3.x 3D shapes, and to encapsulate the shapes in a structure. +Existing code using the shapefile library will require substantial changes +to use release 1.2.

    + +Release V1.1 has been built on a number of platforms, and used by a +number of people successfully. V1.1 is the first release with the xBase API +documentation.

    + + + + diff --git a/libs/shapelib/web/shapelib-tools.html b/libs/shapelib/web/shapelib-tools.html new file mode 100644 index 0000000..6ff8ea3 --- /dev/null +++ b/libs/shapelib/web/shapelib-tools.html @@ -0,0 +1,352 @@ + + +ShapeLib Tools - User Guide + + + + +

    ShapeLib Tools - User Guide

    +ShapeLib is maintained by Frank Warmerdam
    +This guide was created by Eduardo Patto Kanegae < eduardo~at~consultoria~dot~eti~dot~br > + + +

    dbfcreate

    +Purpose: creates a new and empty .dbf file. +
    +Usage: dbfcreate xbase_file [[-s field_name width],[-n field_name width decimals]]... +
    +
      +
    • xbase_file: the name of xBase file to be created. Doesn't need the extension.
    • +
    • -s field_name width: creates a string field with name field_name and size width.
    • +
    • -n field_name width decimals: creates a numeric field with name field_name, width of width and with decimals places sized by decimals.
    • +
    +Example +
    +$ dbfcreate testbase -s NAME 20, -n AREA 9 3, -n VALUE 9 2 +
    # this will create a file named testbase.dbf with 3 fields: NAME ( string (20)), +AREA ( float (9,3)) and VALUE ( float (9,2)) +
    +
    + +

    dbfadd

    +Purpose: adds a record into an existing .dbf file. +
    +Usage: dbfadd xbase_file field_values +
    +
      +
    • xbase_file: the name of an existing xBase file.
    • +
    • field_values: list of values to be inserted into the xBase file. + You must specify a number of values equal to the number of fields the xBase file has. + The order of values must also reflect the order of fields inside xBase file.
    • +
    +Example +
    +$ dbfadd testbase.dbf REGION1 25.656 150.22 +
    # assuming that testbase.dbf has 3 fields( NAME, AREA and VALUE), this command line +will insert a new record into testbase.dbf with the value "REGION1" for NAME, +'25.656' for AREA and '150.22' for VALUE field. +
    +
    + +

    dbfdump

    +Purpose: dumps the content of a xBase file to the terminal. +
    +Usage: dbfdump [-h] [-r] [-m] xbase_file +
    +
      +
    • -h: output header info( field descriptions).
    • +
    • -r: output raw field info, numeric values not reformatted.
    • +
    • -m: output one line per field.
    • +
    • xbase_file: the name of an existing xBase file.
    • +
    +Example +
    +$ dbfdump -h testbase.dbf +
    # assuming that testbase.dbf has 1 record( inserted by previous example using 'dbfadd'), +this command line will produce the following output:
    + +Field 0: Type=String, Title=`NAME', Width=20, Decimals=0
    +Field 1: Type=Double, Title=`AREA', Width=9, Decimals=3
    +Field 2: Type=Double, Title=`VALUE', Width=9, Decimals=2
    +NAME AREA VALUE
    +REGION1 25.656 150.22 +
    +
    +
    + +

    shpcreate

    +Purpose: creates a new and empty shapefile. +
    +Usage: shpcreate shp_file [point|arc|polygon|multipoint] +
    +
      +
    • shp_file: the name of shapefile to be created. Doesn't need the extension.
    • +
    • point/arc/polygon/multipoint: the type of shapefile that you wish to create. You must specify a valid option.
    • +
    +Example +
    +$ shpcreate testpolygon polygon +
    # this will create a point shapefile named testpolygon( in fact testpolygon.shp and testpolygon.shx will be created). +
    +
    + +

    shpadd

    +Purpose: adds a shape into an existing shapefile. +
    +Usage: shpadd shp_file [[x y] [+]]* +
    +
      +
    • shp_file: the name of an existing shapefile.
    • +
    • x1 y1 x2 y2 ... xn yn: the set of x,y coordinates that describes the shape that you wish to add. Note that you must specify the correct number of parameters for a given type of shapefile. e.g.: for point shapefiles you have to pass 1 pair of XY coordinates and for a polygon shapefile you should pass at least 4 pairs of XY coordinates( where the first and the last point must have the same coordinates).
    • +
    +Example +
    +$ shpadd testpolygon 100000 7000000 250000 6500000 200000 6000000 100000 7000000 +
    # assuming that testpolygon is a polygon shapefile, this command line will insert a new shape( a triangle) into testpolygon with the following XY coordinates:
    +vertice 0: 100000 7000000 ( this will also be the vertice where the shape starts and ends)
    +vertice 1: 250000 6500000
    +vertice 2: 200000 6000000
    +vertice 3: 100000 7000000
    +
    + +

    shpdump

    +Purpose: dumps content of shapefile showing information like shape type, file extents, total of objects and vertices coordinates. +
    +Usage: shpdump [-validate] shp_file +
    +
      +
    • -validate: count the number of objects that has invalid ring orderings.
    • +
    • shp_file: the name of an existing shapefile.
    • +
    +Example +
    +$ shpdump testpolygon +
    # assuming that testpolygon is an existing shapefile previously created, this command line will output the following result: +
    Shapefile Type: Polygon   # of Shapes: 1
    +
    +File Bounds: (  100000.000, 6000000.000,0,0)
    +         to  (  250000.000, 7000000.000,0,0)
    +
    +Shape:0 (Polygon)  nVertices=4, nParts=1
    +  Bounds:(  100000.000, 6000000.000, 0, 0)
    +      to (  250000.000, 7000000.000, 0, 0)
    +     (  100000.000, 7000000.000, 0, 0) Ring
    +     (  250000.000, 6500000.000, 0, 0)
    +     (  200000.000, 6000000.000, 0, 0)
    +     (  100000.000, 7000000.000, 0, 0)
    +
    + +

    shprewind

    +Purpose: validates and resets the winding order of rings in polygon geometries to match the ordering required by shapefile specification. This is useful for shapefiles having troubles when checked with a 'shpdump -validate'. +
    +Usage: shprewind in_shp_file out_shp_file +
    +
      +
    • in_shp_file: the name of an existing shapefile.
    • +
    • out_shp_file: the name of the new fixed shapefile that will be created.
    • +
    +Example +
    +$ shprewind badshapefile newshapefile +
    +
    + +

    dbfinfo

    +Purpose: displays basic information for a given xBase file, like number of columns, number of records and type of each column. +
    +Usage: dbfinfo xbase_file +
    +
      +
    • xbase_file: the name of an existing xBase file.
    • +
    +Example +
    +$ dbfinfo testbase +
    +
    Info for testbase.dbf
    +3 Columns,  1 Records in file
    +           NAME          string  (20,0)
    +           AREA           float  (9,3)
    +          VALUE           float  (9,2)
    +
    +
    +
    + +

    dbfcat

    +Purpose: appends the records of a source xBase file into a destiny xBase file. Both files must have the same number of fields. +
    +Usage: dbfcat [-v] [-f] from_DBFfile to_DBFfile +
    +
      +
    • -v: verbose mode.
    • +
    • -f: forces data conversion if data field types is not the same at both files or if is there any null value into from_DBFfile.
    • +
    • from_DBFfile: source xBase file.
    • +
    • to_DBFfile: destiny xBase file.
    • +
    +Example +
    +$ dbfcat -v testbase1 testbase2 +
    +
    + +

    shpinfo

    +Purpose: displays basic information for a given shapefile, like shapefile type, number of objects and its extents. +
    +Usage: shpinfo shp_file +
    +
      +
    • shp_file: the name of an existing shapefile.
    • +
    +Example +
    +$ shpinfo testpolygon +
    +
    Info for testpolygon
    +Polygon(5), 1 Records in file
    +File Bounds: (         100000,        6000000)
    +        (         250000,        7000000)
    +
    + +

    shpcat

    +Purpose: appends the content of a source shapefile into a destiny shapefile. Both files must be the same shapefile type. +
    +Usage: shpcat from_shpfile to_shpfile +
    +
      +
    • from_shpfile: source shapefile
    • +
    • to_shpfile: destiny shapefile
    • +
    +Example +
    +$ shpcat shapefile1 shapefile2 +
    +
    + +

    shpcentrd

    +Purpose: computes XY centroid for polygon shapefiles. +
    +Usage: shpcentrd shp_file new_shp_file +
    +
      +
    • shp_file: the name of an existing polygon shapefile.
    • +
    • new_shp_file: the name of the point shapefile that will created.
    • +
    +Example +
    +$ shpcentrd apolygonfile pointcentrd +
    +
    + +

    shpdxf

    +Purpose: creates a DXF file from an existing shapefile. +
    +Usage: shpdxf shapefile {idfield} +
    +
      +
    • shapefile: the name of an existing shapefile.
    • +
    • idfield: explain
    • +
    +Example +
    +$ shpdxf testshapefile IDFIELD +
    # explain the command +
    +
    + +

    shpfix

    +Purpose: Utility program to fix nulls and inconsistencies in Shapefiles +as happens from time to time. +
    +Usage: shpfix shpfile new_file <Record# to Blank> +
    +
      +
    • shpfile: input file
    • +
    • new_file: output file
    • +
    +Example +
    +$ shpfix broken fixed +
    +
    + +

    shpproj

    +Purpose: Reproject Shapefiles using PROJ.4 +
    +Usage: shpproj shp_file new_shp ( -i=in_proj_file | -i="in_params" | -i=geographic ) ( -o=out_info_file | -o="out_params" | -o=geographic ) +
    +
      +
    • param1: explain
    • +
    • param2: explain
    • +
    +

    + +INPUT
    + Input can come from one of three sources. A projection parameter file, + directly through parameters or geographic. If the shapefile has an associated + prj file, name the same as the shapefile but ending in ".prj" it will be used + by default ignoring all other parameters. If input is omitted it defaults to + geographic, unless the default prj file exists.

    + +OUTPUT
    + Output can come from one of three sources. A projection parameter file, + directly through parameters or geographic. If output is omitted it defaults + to geographic.

    + +PROJECTION PARAMETER FILE
    + This file MUST end with the extension ".prj". It has the form of one + projection parameter per line. Parameters can be in any order. The + projection parameters are those used to define a PROJ.4 projection.

    + +PROJECTION PARAMETERS
    + Are the same as used by proj and invproj.

    +

    +  use      proj -lP   to see available projections
    +	   proj -lu   to see available units
    +	   proj -le   to see available ellipsoid
    +
    + +Or visit the PROJ.4 web page at http://www.remotesensing.org/proj for more details.

    + +

    + +Example
    + +the following example projects file rowtest to row3, moving data from Stateplane NAD83 zone 1002 to utm zone 16 in meters

    + +

    + 
    +shpproj rowtest row -i="init=nad83:1002 units=us-ft" -o="proj=utm zone=16 units=m"
    +
    +shpproj rowtest row3 -o="proj=utm zone=18 units=m" -i="zone=16 proj=utm units=us-ft"
    +
    +shpproj rowtest row3 -o="proj=utm zone=18 units=m" 
    +
    +shpproj rowtest row3 -i=myfile.prj -o=geographic
    +shpproj rowtest row3 -is=myfile.prj
    +
    + +
    + + + diff --git a/libs/shapelib/web/shp_api.html b/libs/shapelib/web/shp_api.html new file mode 100644 index 0000000..d773e3e --- /dev/null +++ b/libs/shapelib/web/shp_api.html @@ -0,0 +1,376 @@ + + +.SHP File API + + + +

    .SHP File API

    + +The .SHP API uses a SHPHandle to represent an open .shp/.shx file pair. +The contents of the SHPHandle are visible (see shapefile.h) but should +be ignored by the application. It is intended that all information be +accessed by the API functions.

    + + + +

    Shape Types

    + +Shapes have types associated with them. The following is a list of the +different shapetypes supported by Shapefiles. At this time all shapes in +a Shapefile must be of the same type (with the exception of NULL shapes).

    + +

    +  #define SHPT_NULL             0
    +
    +  2D Shape Types (pre ArcView 3.x):
    +
    +  #define SHPT_POINT		1	Points
    +  #define SHPT_ARC		3	Arcs (Polylines, possible in parts)
    +  #define SHPT_POLYGON		5	Polygons (possible in parts)
    +  #define SHPT_MULTIPOINT	8	MultiPoint (related points)
    +
    +  3D Shape Types (may include "measure" values for vertices):
    +
    +  #define SHPT_POINTZ		11	
    +  #define SHPT_ARCZ		13
    +  #define SHPT_POLYGONZ		15
    +  #define SHPT_MULTIPOINTZ 	18
    +
    +  2D + Measure Types:
    +
    +  #define SHPT_POINTM		21
    +  #define SHPT_ARCM		23
    +  #define SHPT_POLYGONM		25
    +  #define SHPT_MULTIPOINTM 	28
    +
    +  Complex (TIN-like) with Z, and Measure:
    +
    +  #define SHPT_MULTIPATCH 	31
    +
    + + + +

    SHPObject

    + +An individual shape is represented by the SHPObject structure. SHPObject's +created with SHPCreateObject(), SHPCreateSimpleObject(), or SHPReadObject() +should be disposed of with SHPDestroyObject().

    + +

    +  typedef struct
    +  {
    +    int		nSHPType;	Shape Type (SHPT_* - see list above)
    +
    +    int		nShapeId; 	Shape Number (-1 is unknown/unassigned)
    +
    +    int		nParts;		# of Parts (0 implies single part with no info)
    +    int		*panPartStart;  Start Vertex of part
    +    int		*panPartType;	Part Type (SHPP_RING if not SHPT_MULTIPATCH)
    +    
    +    int		nVertices;	Vertex list 
    +    double	*padfX;		
    +    double	*padfY;
    +    double	*padfZ;		(all zero if not provided)
    +    double	*padfM;		(all zero if not provided)
    +
    +    double	dfXMin;		Bounds in X, Y, Z and M dimensions
    +    double	dfYMin;
    +    double	dfZMin;
    +    double	dfMMin;
    +
    +    double	dfXMax;
    +    double	dfYMax;
    +    double	dfZMax;
    +    double	dfMMax;
    +  } SHPObject;
    +
    + + + +

    SHPOpen()

    + +
    +SHPHandle SHPOpen( const char * pszShapeFile, const char * pszAccess );
    +
    +  pszShapeFile:		The name of the layer to access.  This can be the
    +			name of either the .shp or the .shx file or can
    +			just be the path plus the basename of the pair.
    +
    +  pszAccess:		The fopen() style access string.  At this time only
    +			"rb" (read-only binary) and "rb+" (read/write binary) 
    +		        should be used.
    +
    + + The SHPOpen() function should be used to establish access to the two files + for accessing vertices (.shp and .shx). Note that both files have to + be in the indicated directory, and must have the expected extensions in + lower case. The returned SHPHandle is passed to other access functions, + and SHPClose() should be invoked to recover resources, and flush changes + to disk when complete.

    + + + +

    SHPGetInfo()

    + +
    +void SHPGetInfo( SHPHandle hSHP, int * pnEntities, int * pnShapeType,
    +                 double * padfMinBound, double * padfMaxBound );
    +
    +  hSHP:			The handle previously returned by SHPOpen() 
    +			or SHPCreate().
    +
    +  pnEntities:		A pointer to an integer into which the number of
    +			entities/structures should be placed.  May be NULL.
    +
    +  pnShapetype:		A pointer to an integer into which the shapetype
    +			of this file should be placed.  Shapefiles may contain
    +			either SHPT_POINT, SHPT_ARC, SHPT_POLYGON or 
    +			SHPT_MULTIPOINT entities.  This may be NULL.
    +
    +  padfMinBound:		The X, Y, Z and M minimum values will be placed into
    +                        this four entry array.  This may be NULL.
    +			
    +  padfMaxBound:		The X, Y, Z and M maximum values will be placed into
    +                        this four entry array.  This may be NULL.
    +
    + + The SHPGetInfo() function retrieves various information about shapefile + as a whole. The bounds are read from the file header, and may be + inaccurate if the file was improperly generated.

    + + + +

    SHPReadObject()

    + +
    +SHPObject *SHPReadObject( SHPHandle hSHP, int iShape );
    +
    +  hSHP:			The handle previously returned by SHPOpen() 
    +			or SHPCreate().
    +
    +  iShape:		The entity number of the shape to read.  Entity 
    +			numbers are between 0 and nEntities-1 (as returned
    +			by SHPGetInfo()).
    +
    + + The SHPReadObject() call is used to read a single structure, or entity + from the shapefile. See the definition of the SHPObject structure for + detailed information on fields of a SHPObject. SHPObject's returned from + SHPReadObject() should be deallocated with SHPDestroyShape(). + SHPReadObject() will return NULL if an illegal iShape value is requested.

    + + Note that the bounds placed into the SHPObject are those read from the + file, and may not be correct. For points the bounds are generated from + the single point since bounds aren't normally provided for point types.

    + + Generally the shapes returned will be of the type of the file as a whole. + However, any file may also contain type SHPT_NULL shapes which will have + no geometry. Generally speaking applications should skip rather than + preserve them, as they usually represented interactively deleted shapes.

    + + + +

    SHPClose()

    + +
    +void	SHPClose( SHPHandle hSHP );
    +
    +  hSHP:			The handle previously returned by SHPOpen() 
    +			or SHPCreate().
    +
    + + The SHPClose() function will close the .shp and .shx files, and flush + all outstanding header information to the files. It will also recover + resources associated with the handle. After this call the hSHP handle + cannot be used again.

    + + + +

    SHPCreate()

    + +
    +SHPHandle SHPCreate( const char * pszShapeFile, int nShapeType );
    +
    +  pszShapeFile:		The name of the layer to access.  This can be the
    +			name of either the .shp or the .shx file or can
    +			just be the path plus the basename of the pair.
    +
    +  nShapeType:		The type of shapes to be stored in the newly created
    +			file.  It may be either SHPT_POINT, SHPT_ARC, 
    +		        SHPT_POLYGON or SHPT_MULTIPOINT.
    +
    + + The SHPCreate() function will create a new .shp and .shx file of the + desired type.

    + + + +

    SHPCreateSimpleObject()

    + +
    +SHPObject * 
    +     SHPCreateSimpleObject( int nSHPType, int nVertices, 
    +			    double *padfX, double * padfY, double *padfZ, );
    +
    +  nSHPType:		The SHPT_ type of the object to be created, such
    +                        as SHPT_POINT, or SHPT_POLYGON.
    +  
    +  nVertices:		The number of vertices being passed in padfX,    
    +                        padfY, and padfZ. 
    +
    +  padfX:		An array of nVertices X coordinates of the vertices
    +                        for this object.
    +
    +  padfY:		An array of nVertices Y coordinates of the vertices
    +                        for this object.
    +
    +  padfZ:		An array of nVertices Z coordinates of the vertices
    +                        for this object.  This may be NULL in which case
    +		        they are all assumed to be zero.
    +
    + + The SHPCreateSimpleObject() allows for the convenient creation of + simple objects. This is normally used so that the SHPObject can be + passed to SHPWriteObject() to write it to the file. The simple object + creation API assumes an M (measure) value of zero for each vertex. For + complex objects (such as polygons) it is assumed that there is only one + part, and that it is of the default type (SHPP_RING).

    + + Use the SHPCreateObject() function for more sophisticated objects. The + SHPDestroyObject() function should be used to free resources associated with + an object allocated with SHPCreateSimpleObject().

    + + This function computes a bounding box for the SHPObject from the given + vertices.

    + + + +

    SHPCreateObject()

    + +
    +SHPObject * 
    +     SHPCreateObject( int nSHPType, int iShape,
    +                      int nParts, int * panPartStart, int * panPartType,
    +                      int nVertices, double *padfX, double * padfY, 
    +                      double *padfZ, double *padfM );
    +
    +  nSHPType:		The SHPT_ type of the object to be created, such
    +                        as SHPT_POINT, or SHPT_POLYGON.
    +
    +  iShape:		The shapeid to be recorded with this shape.
    +
    +  nParts:		The number of parts for this object.  If this is
    +                        zero for ARC, or POLYGON type objects, a single 
    +                        zero valued part will be created internally.
    +  
    +  panPartStart:		The list of zero based start vertices for the rings
    +                        (parts) in this object.  The first should always be
    +                        zero.  This may be NULL if nParts is 0.
    +  
    +  panPartType:		The type of each of the parts.  This is only meaningful
    +                        for MULTIPATCH files.  For all other cases this may
    +                        be NULL, and will be assumed to be SHPP_RING.
    +  
    +  nVertices:		The number of vertices being passed in padfX,    
    +                        padfY, and padfZ. 
    +
    +  padfX:		An array of nVertices X coordinates of the vertices
    +                        for this object.
    +
    +  padfY:		An array of nVertices Y coordinates of the vertices
    +                        for this object.
    +
    +  padfZ:		An array of nVertices Z coordinates of the vertices
    +                        for this object.  This may be NULL in which case
    +		        they are all assumed to be zero.
    +
    +  padfM:		An array of nVertices M (measure values) of the 
    +			vertices for this object.  This may be NULL in which 
    +			case they are all assumed to be zero.
    +
    + + The SHPCreateSimpleObject() allows for the creation of objects (shapes). + This is normally used so that the SHPObject can be passed to + SHPWriteObject() to write it to the file.

    + + The SHPDestroyObject() function should be used to free resources associated + with an object allocated with SHPCreateObject().

    + + This function computes a bounding box for the SHPObject from the given + vertices.

    + + + +

    SHPComputeExtents()

    + +
    +void SHPComputeExtents( SHPObject * psObject );
    +
    +  psObject:		An existing shape object to be updated in place.
    +
    + + This function will recompute the extents of this shape, replacing the + existing values of the dfXMin, dfYMin, dfZMin, dfMMin, dfXMax, dfYMax, + dfZMax, and dfMMax values based on the current set of vertices for the + shape. This function is automatically called by SHPCreateObject() but + if the vertices of an existing object are altered it should be called again + to fix up the extents.

    + + + +

    SHPWriteObject()

    + +
    +int SHPWriteObject( SHPHandle hSHP, int iShape, SHPObject *psObject );
    +
    +  hSHP:			The handle previously returned by SHPOpen("r+") 
    +			or SHPCreate().
    +
    +  iShape:		The entity number of the shape to write.  A value of
    +		        -1 should be used for new shapes.  
    +
    +  psObject:		The shape to write to the file. This should have
    +                        been created with SHPCreateObject(), or 
    +                        SHPCreateSimpleObject().
    +
    + + The SHPWriteObject() call is used to write a single structure, or entity + to the shapefile. See the definition of the SHPObject structure for + detailed information on fields of a SHPObject. The return value is the + entity number of the written shape.

    + + + +

    SHPDestroyObject()

    + +
    +void SHPDestroyObject( SHPObject *psObject );
    +
    +  psObject:		The object to deallocate.
    +
    + + This function should be used to deallocate the resources associated with + a SHPObject when it is no longer needed, including those created with + SHPCreateSimpleObject(), SHPCreateObject() and returned from SHPReadObject(). +

    + + + +

    SHPRewindObject()

    + +
    +int SHPRewindObject( SHPHandle hSHP, SHPObject *psObject );
    +
    +  hSHP:                 The shapefile (not used at this time).
    +  psObject:		The object to deallocate.
    +
    + + This function will reverse any rings necessary in order to enforce the + shapefile restrictions on the required order of inner and outer rings in + the Shapefile specification. It returns TRUE if a change is made and FALSE + if no change is made. Only polygon objects will be affected though any + object may be passed. +

    + + + diff --git a/qgcimages.qrc b/qgcimages.qrc index 7ae70c7..8a42f26 100644 --- a/qgcimages.qrc +++ b/qgcimages.qrc @@ -149,14 +149,6 @@ src/FirmwarePlugin/PX4/PX4BrandImage.png src/ui/toolbar/Images/Quad.svg src/AutoPilotPlugins/Common/Images/RadioComponentIcon.png - src/ui/toolbar/Images/RidEmergencyBackgroundHighlight.svg - src/ui/toolbar/Images/RidEmergencyBackground.svg - src/ui/toolbar/Images/RidFlagBackgroundGreen.svg - src/ui/toolbar/Images/RidFlagBackgroundRed.svg - src/ui/toolbar/Images/RidIconGreen.svg - src/ui/toolbar/Images/RidIconGrey.svg - src/ui/toolbar/Images/RidIconRed.svg - src/ui/toolbar/Images/RidIconYellow.svg src/ui/toolbar/Images/RC.svg src/AutoPilotPlugins/PX4/Images/RCLoss.svg src/AutoPilotPlugins/PX4/Images/RCLossLight.svg @@ -180,8 +172,6 @@ src/ui/toolbar/Images/Signal80.svg src/AutoPilotPlugins/Common/Images/StationMode.svg src/AutoPilotPlugins/APM/Images/SubFrameComponentIcon.png - src/AutoPilotPlugins/APM/Images/ForwardingSupportIcon.svg - src/AutoPilotPlugins/APM/Images/ForwardingSupportIconGreen.svg resources/CogWheels.png src/FlightMap/Images/sub.png src/ui/toolbar/Images/TelemRSSI.svg diff --git a/qgcresources.qrc b/qgcresources.qrc index be6ac2c..c35e1ce 100644 --- a/qgcresources.qrc +++ b/qgcresources.qrc @@ -31,7 +31,6 @@ resources/LockClosed.svg resources/LockOpen.svg resources/notile.png - resources/NoVideoBackground.jpg resources/Pause.svg resources/pause-mission.svg resources/pencil.svg @@ -55,9 +54,6 @@ resources/XDelete.svg resources/XDeleteBlack.svg resources/waypoint.svg - resources/Gripper.svg - resources/GripperRelease.svg - resources/GripperGrab.svg resources/icons/qgroundcontrol.ico diff --git a/qgroundcontrol.pro b/qgroundcontrol.pro index dc55248..21dd80e 100644 --- a/qgroundcontrol.pro +++ b/qgroundcontrol.pro @@ -45,10 +45,7 @@ MacBuild { } LinuxBuild { - CONFIG += qesp_linux_udev - system("$$QMAKE_LINK -fuse-ld=gold -Wl,--version &>/dev/null") { - CONFIG += use_gold_linker - } + CONFIG += qesp_linux_udev } WindowsBuild { @@ -182,12 +179,13 @@ contains (CONFIG, QGC_DISABLE_PX4_PLUGIN_FACTORY) { # Bluetooth contains (DEFINES, QGC_DISABLE_BLUETOOTH) { - message("Bluetooth support disabled (manual override from command line)") + message("Skipping support for Bluetooth (manual override from command line)") DEFINES -= QGC_ENABLE_BLUETOOTH } else:exists(user_config.pri):infile(user_config.pri, DEFINES, QGC_DISABLE_BLUETOOTH) { - message("Bluetooth support disabled (manual override from user_config.pri)") + message("Skipping support for Bluetooth (manual override from user_config.pri)") DEFINES -= QGC_ENABLE_BLUETOOTH } else:exists(user_config.pri):infile(user_config.pri, DEFINES, QGC_ENABLE_BLUETOOTH) { + message("Including support for Bluetooth (manual override from user_config.pri)") DEFINES += QGC_ENABLE_BLUETOOTH } @@ -356,9 +354,9 @@ CustomBuild { RESOURCES += $$PWD/resources/InstrumentValueIcons/InstrumentValueIcons.qrc } } else { - DEFINES += QGC_APPLICATION_NAME=\"\\\"QGroundControl\\\"\" - DEFINES += QGC_ORG_NAME=\"\\\"QGroundControl.org\\\"\" - DEFINES += QGC_ORG_DOMAIN=\"\\\"org.qgroundcontrol\\\"\" + DEFINES += QGC_APPLICATION_NAME=\"\\\"Spiri\\\"\" + DEFINES += QGC_ORG_NAME=\"\\\"Spiri.org\\\"\" + DEFINES += QGC_ORG_DOMAIN=\"\\\"org.spiri\\\"\" RESOURCES += \ $$PWD/qgroundcontrol.qrc \ $$PWD/qgcresources.qrc \ @@ -430,8 +428,6 @@ contains (DEFINES, QGC_ENABLE_PAIRING) { # HEADERS += \ - src/QmlControls/CustomAction.h \ - src/QmlControls/CustomActionManager.h \ src/QmlControls/QmlUnitsConversion.h \ src/Vehicle/VehicleEscStatusFactGroup.h \ src/api/QGCCorePlugin.h \ @@ -446,7 +442,6 @@ contains (DEFINES, QGC_ENABLE_PAIRING) { } SOURCES += \ - src/QmlControls/CustomActionManager.cc \ src/Vehicle/VehicleEscStatusFactGroup.cc \ src/api/QGCCorePlugin.cc \ src/api/QGCOptions.cc \ @@ -498,7 +493,6 @@ DebugBuild { PX4FirmwarePlugin { PX4FirmwarePluginFactory { APMFirmwarePlugin { src/MissionManager/TransectStyleComplexItemTestBase.h \ src/MissionManager/VisualMissionItemTest.h \ src/qgcunittest/ComponentInformationCacheTest.h \ - src/qgcunittest/ComponentInformationTranslationTest.h \ src/qgcunittest/GeoTest.h \ src/qgcunittest/MavlinkLogTest.h \ src/qgcunittest/MultiSignalSpy.h \ @@ -547,7 +541,6 @@ DebugBuild { PX4FirmwarePlugin { PX4FirmwarePluginFactory { APMFirmwarePlugin { src/MissionManager/TransectStyleComplexItemTestBase.cc \ src/MissionManager/VisualMissionItemTest.cc \ src/qgcunittest/ComponentInformationCacheTest.cc \ - src/qgcunittest/ComponentInformationTranslationTest.cc \ src/qgcunittest/GeoTest.cc \ src/qgcunittest/MavlinkLogTest.cc \ src/qgcunittest/MultiSignalSpy.cc \ @@ -649,7 +642,6 @@ HEADERS += \ src/Geo/PolarStereographic.hpp \ src/QGC.h \ src/QGCApplication.h \ - src/QGCCachedFileDownload.h \ src/QGCComboBox.h \ src/QGCConfig.h \ src/QGCFileDownload.h \ @@ -682,7 +674,6 @@ HEADERS += \ src/Settings/AppSettings.h \ src/Settings/AutoConnectSettings.h \ src/Settings/BrandImageSettings.h \ - src/Settings/RemoteIDSettings.h \ src/Settings/FirmwareUpgradeSettings.h \ src/Settings/FlightMapSettings.h \ src/Settings/FlyViewSettings.h \ @@ -712,19 +703,16 @@ HEADERS += \ src/Vehicle/CompInfoGeneral.h \ src/Vehicle/ComponentInformationCache.h \ src/Vehicle/ComponentInformationManager.h \ - src/Vehicle/ComponentInformationTranslation.h \ src/Vehicle/EventHandler.h \ src/Vehicle/FTPManager.h \ src/Vehicle/GPSRTKFactGroup.h \ - src/Vehicle/HealthAndArmingCheckReport.h \ + src/Vehicle/HealthAndArmingChecks.h \ src/Vehicle/ImageProtocolManager.h \ src/Vehicle/InitialConnectStateMachine.h \ src/Vehicle/MAVLinkLogManager.h \ src/Vehicle/MAVLinkStreamConfig.h \ src/Vehicle/MultiVehicleManager.h \ - src/Vehicle/RemoteIDManager.h \ src/Vehicle/StateMachine.h \ - src/Vehicle/StandardModes.h \ src/Vehicle/SysStatusSensorInfo.h \ src/Vehicle/TerrainFactGroup.h \ src/Vehicle/TerrainProtocolHandler.h \ @@ -745,8 +733,6 @@ HEADERS += \ src/Vehicle/VehicleVibrationFactGroup.h \ src/Vehicle/VehicleWindFactGroup.h \ src/Vehicle/VehicleHygrometerFactGroup.h \ - src/Vehicle/VehicleGeneratorFactGroup.h \ - src/Vehicle/VehicleEFIFactGroup.h \ src/VehicleSetup/JoystickConfigController.h \ src/comm/LinkConfiguration.h \ src/comm/LinkInterface.h \ @@ -799,7 +785,7 @@ contains (DEFINES, QGC_ENABLE_PAIRING) { } } -!contains(DEFINES, NO_SERIAL_LINK) { +!NoSerialBuild { HEADERS += \ src/comm/QGCSerialPortInfo.h \ src/comm/SerialLink.h \ @@ -908,7 +894,6 @@ SOURCES += \ src/Geo/PolarStereographic.cpp \ src/QGC.cc \ src/QGCApplication.cc \ - src/QGCCachedFileDownload.cc \ src/QGCComboBox.cc \ src/QGCFileDownload.cc \ src/QGCLoggingCategory.cc \ @@ -940,7 +925,6 @@ SOURCES += \ src/Settings/AppSettings.cc \ src/Settings/AutoConnectSettings.cc \ src/Settings/BrandImageSettings.cc \ - src/Settings/RemoteIDSettings.cc \ src/Settings/FirmwareUpgradeSettings.cc \ src/Settings/FlightMapSettings.cc \ src/Settings/FlyViewSettings.cc \ @@ -970,19 +954,16 @@ SOURCES += \ src/Vehicle/CompInfoGeneral.cc \ src/Vehicle/ComponentInformationCache.cc \ src/Vehicle/ComponentInformationManager.cc \ - src/Vehicle/ComponentInformationTranslation.cc \ src/Vehicle/EventHandler.cc \ src/Vehicle/FTPManager.cc \ src/Vehicle/GPSRTKFactGroup.cc \ - src/Vehicle/HealthAndArmingCheckReport.cc \ + src/Vehicle/HealthAndArmingChecks.cc \ src/Vehicle/ImageProtocolManager.cc \ src/Vehicle/InitialConnectStateMachine.cc \ src/Vehicle/MAVLinkLogManager.cc \ src/Vehicle/MAVLinkStreamConfig.cc \ src/Vehicle/MultiVehicleManager.cc \ - src/Vehicle/RemoteIDManager.cc \ src/Vehicle/StateMachine.cc \ - src/Vehicle/StandardModes.cc \ src/Vehicle/SysStatusSensorInfo.cc \ src/Vehicle/TerrainFactGroup.cc \ src/Vehicle/TerrainProtocolHandler.cc \ @@ -1002,8 +983,6 @@ SOURCES += \ src/Vehicle/VehicleTemperatureFactGroup.cc \ src/Vehicle/VehicleVibrationFactGroup.cc \ src/Vehicle/VehicleHygrometerFactGroup.cc \ - src/Vehicle/VehicleGeneratorFactGroup.cc \ - src/Vehicle/VehicleEFIFactGroup.cc \ src/Vehicle/VehicleWindFactGroup.cc \ src/VehicleSetup/JoystickConfigController.cc \ src/comm/LinkConfiguration.cc \ @@ -1033,7 +1012,7 @@ SOURCES += \ src/comm/MockLinkMissionItemHandler.cc \ } -!contains(DEFINES, NO_SERIAL_LINK) { +!NoSerialBuild { SOURCES += \ src/comm/QGCSerialPortInfo.cc \ src/comm/SerialLink.cc \ @@ -1088,7 +1067,7 @@ HEADERS+= \ src/FirmwarePlugin/FirmwarePluginManager.h \ src/VehicleSetup/VehicleComponent.h \ -!MobileBuild { !contains(DEFINES, NO_SERIAL_LINK) { +!MobileBuild { !NoSerialBuild { HEADERS += \ src/VehicleSetup/Bootloader.h \ src/VehicleSetup/FirmwareImage.h \ @@ -1110,7 +1089,7 @@ SOURCES += \ src/FirmwarePlugin/FirmwarePluginManager.cc \ src/VehicleSetup/VehicleComponent.cc \ -!MobileBuild { !contains(DEFINES, NO_SERIAL_LINK) { +!MobileBuild { !NoSerialBuild { SOURCES += \ src/VehicleSetup/Bootloader.cc \ src/VehicleSetup/FirmwareImage.cc \ @@ -1142,6 +1121,7 @@ APMFirmwarePlugin { src/AutoPilotPlugins/APM/APMAirframeComponentController.h \ src/AutoPilotPlugins/APM/APMAutoPilotPlugin.h \ src/AutoPilotPlugins/APM/APMCameraComponent.h \ + src/AutoPilotPlugins/APM/APMCompassCal.h \ src/AutoPilotPlugins/APM/APMFlightModesComponent.h \ src/AutoPilotPlugins/APM/APMFlightModesComponentController.h \ src/AutoPilotPlugins/APM/APMFollowComponent.h \ @@ -1157,7 +1137,6 @@ APMFirmwarePlugin { src/AutoPilotPlugins/APM/APMSensorsComponentController.h \ src/AutoPilotPlugins/APM/APMSubMotorComponentController.h \ src/AutoPilotPlugins/APM/APMTuningComponent.h \ - src/AutoPilotPlugins/APM/APMRemoteSupportComponent.h \ src/FirmwarePlugin/APM/APMFirmwarePlugin.h \ src/FirmwarePlugin/APM/APMParameterMetaData.h \ src/FirmwarePlugin/APM/ArduCopterFirmwarePlugin.h \ @@ -1170,6 +1149,7 @@ APMFirmwarePlugin { src/AutoPilotPlugins/APM/APMAirframeComponentController.cc \ src/AutoPilotPlugins/APM/APMAutoPilotPlugin.cc \ src/AutoPilotPlugins/APM/APMCameraComponent.cc \ + src/AutoPilotPlugins/APM/APMCompassCal.cc \ src/AutoPilotPlugins/APM/APMFlightModesComponent.cc \ src/AutoPilotPlugins/APM/APMFlightModesComponentController.cc \ src/AutoPilotPlugins/APM/APMFollowComponent.cc \ @@ -1185,7 +1165,6 @@ APMFirmwarePlugin { src/AutoPilotPlugins/APM/APMSensorsComponentController.cc \ src/AutoPilotPlugins/APM/APMSubMotorComponentController.cc \ src/AutoPilotPlugins/APM/APMTuningComponent.cc \ - src/AutoPilotPlugins/APM/APMRemoteSupportComponent.cc \ src/FirmwarePlugin/APM/APMFirmwarePlugin.cc \ src/FirmwarePlugin/APM/APMParameterMetaData.cc \ src/FirmwarePlugin/APM/ArduCopterFirmwarePlugin.cc \ @@ -1215,6 +1194,7 @@ PX4FirmwarePlugin { src/AutoPilotPlugins/PX4/AirframeComponentController.h \ src/AutoPilotPlugins/PX4/CameraComponent.h \ src/AutoPilotPlugins/PX4/FlightModesComponent.h \ + src/AutoPilotPlugins/PX4/PX4AdvancedFlightModesController.h \ src/AutoPilotPlugins/PX4/PX4AirframeLoader.h \ src/AutoPilotPlugins/PX4/PX4AutoPilotPlugin.h \ src/AutoPilotPlugins/PX4/PX4FlightBehavior.h \ @@ -1236,6 +1216,7 @@ PX4FirmwarePlugin { 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/PX4FlightBehavior.cc \ @@ -1350,6 +1331,123 @@ contains (DEFINES, QGC_GST_MICROHARD_DISABLED) { src/Microhard/MicrohardSettings.cc \ } } +#------------------------------------------------------------------------------------- +# AirMap + +contains (DEFINES, QGC_AIRMAP_ENABLED) { + + #-- These should be always enabled but not yet + INCLUDEPATH += \ + src/AirspaceManagement + + HEADERS += \ + src/AirspaceManagement/AirspaceAdvisoryProvider.h \ + src/AirspaceManagement/AirspaceFlightPlanProvider.h \ + src/AirspaceManagement/AirspaceManager.h \ + src/AirspaceManagement/AirspaceRestriction.h \ + src/AirspaceManagement/AirspaceRestrictionProvider.h \ + src/AirspaceManagement/AirspaceRulesetsProvider.h \ + src/AirspaceManagement/AirspaceVehicleManager.h \ + src/AirspaceManagement/AirspaceWeatherInfoProvider.h \ + + SOURCES += \ + src/AirspaceManagement/AirspaceAdvisoryProvider.cc \ + src/AirspaceManagement/AirspaceFlightPlanProvider.cc \ + src/AirspaceManagement/AirspaceManager.cc \ + src/AirspaceManagement/AirspaceRestriction.cc \ + src/AirspaceManagement/AirspaceRestrictionProvider.cc \ + src/AirspaceManagement/AirspaceRulesetsProvider.cc \ + src/AirspaceManagement/AirspaceVehicleManager.cc \ + src/AirspaceManagement/AirspaceWeatherInfoProvider.cc \ + + #-- This is the AirMap implementation of the above + RESOURCES += \ + src/Airmap/airmap.qrc + + INCLUDEPATH += \ + src/Airmap \ + src/Airmap/services + + HEADERS += \ + src/Airmap/AirMapAdvisoryManager.h \ + src/Airmap/AirMapFlightManager.h \ + src/Airmap/AirMapFlightPlanManager.h \ + src/Airmap/AirMapManager.h \ + src/Airmap/AirMapRestrictionManager.h \ + src/Airmap/AirMapRulesetsManager.h \ + src/Airmap/AirMapSettings.h \ + src/Airmap/AirMapSharedState.h \ + src/Airmap/AirMapTelemetry.h \ + src/Airmap/AirMapTrafficMonitor.h \ + src/Airmap/AirMapVehicleManager.h \ + src/Airmap/AirMapWeatherInfoManager.h \ + src/Airmap/LifetimeChecker.h \ + src/Airmap/services/advisory.h \ + src/Airmap/services/aircrafts.h \ + src/Airmap/services/airspaces.h \ + src/Airmap/services/authenticator.h \ + src/Airmap/services/client.h \ + src/Airmap/services/dispatcher.h \ + src/Airmap/services/flight_plans.h \ + src/Airmap/services/flights.h \ + src/Airmap/services/logger.h \ + src/Airmap/services/pilots.h \ + src/Airmap/services/rulesets.h \ + src/Airmap/services/status.h \ + src/Airmap/services/telemetry.h \ + src/Airmap/services/traffic.h \ + src/Airmap/services/types.h \ + + SOURCES += \ + src/Airmap/AirMapAdvisoryManager.cc \ + src/Airmap/AirMapFlightManager.cc \ + src/Airmap/AirMapFlightPlanManager.cc \ + src/Airmap/AirMapManager.cc \ + src/Airmap/AirMapRestrictionManager.cc \ + src/Airmap/AirMapRulesetsManager.cc \ + src/Airmap/AirMapSettings.cc \ + src/Airmap/AirMapSharedState.cc \ + src/Airmap/AirMapTelemetry.cc \ + src/Airmap/AirMapTrafficMonitor.cc \ + src/Airmap/AirMapVehicleManager.cc \ + src/Airmap/AirMapWeatherInfoManager.cc \ + src/Airmap/services/advisory.cpp \ + src/Airmap/services/aircrafts.cpp \ + src/Airmap/services/airspaces.cpp \ + src/Airmap/services/authenticator.cpp \ + src/Airmap/services/client.cpp \ + src/Airmap/services/dispatcher.cpp \ + src/Airmap/services/flight_plans.cpp \ + src/Airmap/services/flights.cpp \ + src/Airmap/services/logger.cpp \ + src/Airmap/services/pilots.cpp \ + src/Airmap/services/rulesets.cpp \ + src/Airmap/services/status.cpp \ + src/Airmap/services/telemetry.cpp \ + src/Airmap/services/traffic.cpp \ + src/Airmap/services/types.cpp \ + + #-- Do we have an API key? + exists(src/Airmap/Airmap_api_key.h) { + message("Using compile time Airmap API key") + HEADERS += \ + src/Airmap/Airmap_api_key.h + DEFINES += QGC_AIRMAP_KEY_AVAILABLE + } + + include(src/Airmap/QJsonWebToken/src/qjsonwebtoken.pri) + +} else { + #-- Dummies + INCLUDEPATH += \ + src/Airmap/dummy + RESOURCES += \ + src/Airmap/dummy/airmap_dummy.qrc + HEADERS += \ + src/Airmap/dummy/AirspaceManager.h + SOURCES += \ + src/Airmap/dummy/AirspaceManager.cc +} #------------------------------------------------------------------------------------- # Video Streaming diff --git a/qgroundcontrol.qrc b/qgroundcontrol.qrc index 99940a5..6eeef4f 100644 --- a/qgroundcontrol.qrc +++ b/qgroundcontrol.qrc @@ -14,11 +14,9 @@ src/ui/toolbar/ModeIndicator.qml src/ui/toolbar/MultiVehicleSelector.qml src/ui/toolbar/RCRSSIIndicator.qml - src/ui/toolbar/RemoteIDIndicator.qml src/ui/toolbar/ROIIndicator.qml src/ui/toolbar/TelemetryRSSIIndicator.qml src/ui/toolbar/VTOLModeIndicator.qml - src/ui/toolbar/APMSupportForwardingIndicator.qml src/FlightDisplay/DefaultChecklist.qml @@ -40,7 +38,6 @@ src/ui/preferences/BluetoothSettings.qml src/PlanView/CorridorScanEditor.qml src/ui/preferences/DebugWindow.qml - src/ui/preferences/RemoteIDSettings.qml src/AutoPilotPlugins/Common/ESP8266Component.qml src/AutoPilotPlugins/Common/ESP8266ComponentSummary.qml src/ui/ExitWithErrorWindow.qml @@ -111,7 +108,6 @@ src/QmlControls/KMLOrSHPFileDialog.qml src/QmlControls/LogReplayStatusBar.qml src/ui/toolbar/MainStatusIndicator.qml - src/ui/toolbar/FlightModeMenuIndicator.qml src/ui/toolbar/MainToolBar.qml src/QmlControls/MainWindowSavedState.qml src/QmlControls/MAVLinkChart.qml @@ -133,7 +129,6 @@ src/QmlControls/PreFlightCheckGroup.qml src/QmlControls/PreFlightCheckModel.qml src/QmlControls/QGCButton.qml - src/QmlControls/QGCColumnButton.qml src/QmlControls/AutotuneUI.qml src/QmlControls/QGCCheckBox.qml src/QmlControls/QGCColoredImage.qml @@ -156,10 +151,10 @@ src/QmlControls/QGCMouseArea.qml src/QmlControls/QGCMovableItem.qml src/QmlControls/QGCPopupDialog.qml + src/QmlControls/QGCPopupDialogContainer.qml src/QmlControls/QGCPipOverlay.qml src/QmlControls/QGCPipState.qml src/QmlControls/QGCRadioButton.qml - src/QmlControls/QGCSimpleMessageDialog.qml src/QmlControls/QGCSlider.qml src/QmlControls/QGCSwitch.qml src/QmlControls/QGCTabBar.qml @@ -167,6 +162,9 @@ src/QmlControls/QGCTextField.qml src/QmlControls/QGCToolBarButton.qml src/QmlControls/QGCToolInsets.qml + src/QmlControls/QGCViewDialog.qml + src/QmlControls/QGCViewDialogContainer.qml + src/QmlControls/QGCViewMessage.qml src/QmlControls/QGroundControl/Controls/qmldir src/PlanView/RallyPointEditorHeader.qml src/PlanView/RallyPointItemEditor.qml @@ -185,7 +183,7 @@ src/PlanView/TerrainStatus.qml src/PlanView/TakeoffItemMapVisual.qml src/QmlControls/ToolStrip.qml - src/QmlControls/ToolStripHoverButton.qml + src/QmlControls/ToolStripHoverButton.qml src/PlanView/TransectStyleComplexItemEditor.qml src/PlanView/TransectStyleComplexItemStats.qml src/PlanView/TransectStyleComplexItemTabBar.qml @@ -206,6 +204,7 @@ src/QmlControls/QGroundControl/FactControls/qmldir src/FlightDisplay/FlightDisplayViewVideo.qml src/FlightDisplay/FlightDisplayViewWidgets.qml + src/FlightDisplay/FlyViewAirspaceIndicator.qml src/FlightDisplay/FlyView.qml src/FlightDisplay/FlyViewCustomLayer.qml src/FlightDisplay/FlyViewInstrumentPanel.qml @@ -222,11 +221,9 @@ src/FlightDisplay/GuidedActionLand.qml src/FlightDisplay/GuidedActionList.qml src/FlightDisplay/GuidedActionTakeoff.qml - src/FlightDisplay/GuidedActionGripper.qml - src/FlightDisplay/GripperMenu.qml src/FlightDisplay/GuidedActionPause.qml src/FlightDisplay/GuidedActionRTL.qml - src/FlightDisplay/GuidedValueSlider.qml + src/FlightDisplay/GuidedAltitudeSlider.qml src/FlightDisplay/GuidedToolStripAction.qml src/FlightDisplay/MultiVehicleList.qml src/FlightDisplay/PreFlightBatteryCheck.qml @@ -287,8 +284,6 @@ src/AnalyzeView/VibrationPage.qml src/FlightDisplay/VirtualJoystick.qml src/PlanView/VTOLLandingPatternEditor.qml - src/comm/MockLinkOptionsDlg.qml - src/FlightDisplay/FlyViewInsetViewer.qml src/FirstRunPromptDialogs/UnitsFirstRunPrompt.qml @@ -305,7 +300,6 @@ src/MissionManager/CameraSection.FactMetaData.json src/MissionManager/CameraSpec.FactMetaData.json src/MissionManager/CorridorScan.SettingsGroup.json - src/Settings/RemoteID.SettingsGroup.json src/QmlControls/EditPositionDialog.FactMetaData.json src/Settings/FirmwareUpgrade.SettingsGroup.json src/Settings/FlightMap.SettingsGroup.json @@ -347,8 +341,6 @@ src/Vehicle/VibrationFact.json src/Vehicle/WindFact.json src/Vehicle/HygrometerFact.json - src/Vehicle/GeneratorFact.json - src/Vehicle/EFIFact.json src/Settings/Video.SettingsGroup.json src/MissionManager/VTOLLandingPattern.FactMetaData.json @@ -359,6 +351,5 @@ src/comm/MockLink.General.MetaData.json.xz src/comm/MockLink.Parameter.MetaData.json.xz src/comm/MockLink.Parameter.MetaData.json - src/comm/Mocklink.Arduplane.params.ftp.bin diff --git a/resources/Gripper.svg b/resources/Gripper.svg deleted file mode 100644 index fd4d69e..0000000 --- a/resources/Gripper.svg +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/resources/GripperGrab.svg b/resources/GripperGrab.svg deleted file mode 100644 index d375fb0..0000000 --- a/resources/GripperGrab.svg +++ /dev/null @@ -1,27 +0,0 @@ - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/resources/GripperRelease.svg b/resources/GripperRelease.svg deleted file mode 100644 index d0b4797..0000000 --- a/resources/GripperRelease.svg +++ /dev/null @@ -1,27 +0,0 @@ - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/resources/NoVideoBackground.jpg b/resources/NoVideoBackground.jpg deleted file mode 100644 index 678aa146099bf44b550ec55a9174118889dbcea6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 333633 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 z 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

  1. ?MgXmP&yE&jFTnyR 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

    w1uc|BCy8dHfSc{}}bF*Mb-j5i4%J@M1` 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 z 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�(jk)8HO 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
    iUh;l1nAAg$m$rVfeF;&yIMjXztg_cy9GlsW2$2 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

    %+p@H1<(y>71xj9#?PU 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 diff --git a/resources/SDL_GameControllerDB/gamecontrollerdb.txt b/resources/SDL_GameControllerDB/gamecontrollerdb.txt index 43a462e..a3285fd 100755 --- a/resources/SDL_GameControllerDB/gamecontrollerdb.txt +++ b/resources/SDL_GameControllerDB/gamecontrollerdb.txt @@ -1,176 +1,1937 @@ -# Windows - DINPUT -8f0e1200000000000000504944564944,Acme,platform:Windows,x:b2,a:b0,b:b1,y:b3,back:b8,start:b9,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,dpup:h0.1,leftshoulder:b4,lefttrigger:b5,rightshoulder:b6,righttrigger:b7,leftstick:b10,rightstick:b11,leftx:a0,lefty:a1,rightx:a3,righty:a2, -341a3608000000000000504944564944,Afterglow PS3 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, -ffff0000000000000000504944564944,GameStop Gamepad,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Windows, -6d0416c2000000000000504944564944,Generic DirectInput Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, -0d0f6e00000000000000504944564944,HORIPAD 4,a:b1,b:b2,y:b3,x:b0,start:b9,guide:b12,back:b8,leftstick:b10,rightstick:b11,leftshoulder:b4,rightshoulder:b5,dpup:h0.1,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,leftx:a0,lefty:a1,rightx:a2,righty:a3,lefttrigger:b6,righttrigger:b7,platform:Windows, -6d0419c2000000000000504944564944,Logitech F710 Gamepad,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, -88880803000000000000504944564944,PS3 Controller,a:b2,b:b1,back:b8,dpdown:h0.8,dpleft:h0.4,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b9,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:b7,rightx:a3,righty:a4,start:b11,x:b0,y:b3,platform:Windows, -4c056802000000000000504944564944,PS3 Controller,a:b14,b:b13,back:b0,dpdown:b6,dpleft:b7,dpright:b5,dpup:b4,guide:b16,leftshoulder:b10,leftstick:b1,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b11,rightstick:b2,righttrigger:b9,rightx:a2,righty:a3,start:b3,x:b15,y:b12,platform:Windows, -25090500000000000000504944564944,PS3 DualShock,a:b2,b:b1,back:b9,dpdown:h0.8,dpleft:h0.4,dpright:h0.2,dpup:h0.1,guide:,leftshoulder:b6,leftstick:b10,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b11,righttrigger:b5,rightx:a2,righty:a3,start:b8,x:b0,y:b3,platform:Windows, -4c05c405000000000000504944564944,Sony DualShock 4,a:b1,b:b2,y:b3,x:b0,start:b9,guide:b12,back:b13,leftstick:b10,rightstick:b11,leftshoulder:b4,rightshoulder:b5,dpup:h0.1,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,leftx:a0,lefty:a1,rightx:a2,righty:a5,lefttrigger:a3,righttrigger:a4,platform:Windows, -4c05cc09000000000000504944564944,Sony DualShock 4,a:b1,b:b2,y:b3,x:b0,start:b9,guide:b12,back:b13,leftstick:b10,rightstick:b11,leftshoulder:b4,rightshoulder:b5,dpup:h0.1,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,leftx:a0,lefty:a1,rightx:a2,righty:a5,lefttrigger:a3,righttrigger:a4,platform:Windows, -4c05a00b000000000000504944564944,Sony DualShock 4 Wireless Adaptor,a:b1,b:b2,y:b3,x:b0,start:b9,guide:b12,back:b13,leftstick:b10,rightstick:b11,leftshoulder:b4,rightshoulder:b5,dpup:h0.1,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,leftx:a0,lefty:a1,rightx:a2,righty:a5,lefttrigger:a3,righttrigger:a4,platform:Windows, -6d0418c2000000000000504944564944,Logitech RumblePad 2 USB,platform:Windows,x:b0,a:b1,b:b2,y:b3,back:b8,start:b9,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,dpup:h0.1,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,leftstick:b10,rightstick:b11,leftx:a0,lefty:a1,rightx:a2,righty:a3, -36280100000000000000504944564944,OUYA Controller,platform:Windows,a:b0,b:b3,y:b2,x:b1,start:b14,guide:b15,leftstick:b6,rightstick:b7,leftshoulder:b4,rightshoulder:b5,dpup:b8,dpleft:b10,dpdown:b9,dpright:b11,leftx:a0,lefty:a1,rightx:a3,righty:a4,lefttrigger:b12,righttrigger:b13, -4f0400b3000000000000504944564944,Thrustmaster Firestorm Dual Power,a:b0,b:b2,y:b3,x:b1,start:b10,guide:b8,back:b9,leftstick:b11,rightstick:b12,leftshoulder:b4,rightshoulder:b6,dpup:h0.1,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,leftx:a0,lefty:a1,rightx:a2,righty:a3,lefttrigger:b5,righttrigger:b7,platform:Windows, -00f00300000000000000504944564944,RetroUSB.com RetroPad,a:b1,b:b5,x:b0,y:b4,back:b2,start:b3,leftshoulder:b6,rightshoulder:b7,leftx:a0,lefty:a1,platform:Windows, -00f0f100000000000000504944564944,RetroUSB.com Super RetroPort,a:b1,b:b5,x:b0,y:b4,back:b2,start:b3,leftshoulder:b6,rightshoulder:b7,leftx:a0,lefty:a1,platform:Windows, -28040140000000000000504944564944,GamePad Pro USB,platform:Windows,a:b1,b:b2,x:b0,y:b3,back:b8,start:b9,leftshoulder:b4,rightshoulder:b5,leftx:a0,lefty:a1,lefttrigger:b6,righttrigger:b7, -ff113133000000000000504944564944,SVEN X-PAD,platform:Windows,a:b2,b:b3,y:b1,x:b0,start:b5,back:b4,leftshoulder:b6,rightshoulder:b7,dpup:h0.1,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,leftx:a0,lefty:a1,rightx:a2,righty:a4,lefttrigger:b8,righttrigger:b9, -8f0e0300000000000000504944564944,Piranha xtreme,platform:Windows,x:b3,a:b2,b:b1,y:b0,back:b8,start:b9,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,dpup:h0.1,leftshoulder:b6,lefttrigger:b4,rightshoulder:b7,righttrigger:b5,leftstick:b10,rightstick:b11,leftx:a0,lefty:a1,rightx:a3,righty:a2, -8f0e0d31000000000000504944564944,Multilaser JS071 USB,platform:Windows,a:b1,b:b2,y:b3,x:b0,start:b9,back:b8,leftstick:b10,rightstick:b11,leftshoulder:b4,rightshoulder:b5,dpup:h0.1,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,leftx:a0,lefty:a1,rightx:a2,righty:a3,lefttrigger:b6,righttrigger:b7, -10080300000000000000504944564944,PS2 USB,platform:Windows,a:b2,b:b1,y:b0,x:b3,start:b9,back:b8,leftstick:b10,rightstick:b11,leftshoulder:b6,rightshoulder:b7,dpup:h0.1,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,leftx:a0,lefty:a1,rightx:a4,righty:a2,lefttrigger:b4,righttrigger:b5, -79000600000000000000504944564944,G-Shark GS-GP702,a:b2,b:b1,x:b3,y:b0,back:b8,start:b9,leftstick:b10,rightstick:b11,leftshoulder:b4,rightshoulder:b5,dpup:h0.1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,leftx:a0,lefty:a1,rightx:a2,righty:a4,lefttrigger:b6,righttrigger:b7,platform:Windows, -4b12014d000000000000504944564944,NYKO AIRFLO,a:b0,b:b1,x:b2,y:b3,back:b8,guide:b10,start:b9,leftstick:a0,rightstick:a2,leftshoulder:a3,rightshoulder:b5,dpup:h0.1,dpdown:h0.0,dpleft:h0.8,dpright:h0.2,leftx:h0.6,lefty:h0.12,rightx:h0.9,righty:h0.4,lefttrigger:b6,righttrigger:b7,platform:Windows, -d6206dca000000000000504944564944,PowerA Pro Ex,a:b1,b:b2,x:b0,y:b3,back:b8,guide:b12,start:b9,leftstick:b10,rightstick:b11,leftshoulder:b4,rightshoulder:b5,dpup:h0.1,dpdown:h0.0,dpleft:h0.8,dpright:h0.2,leftx:a0,lefty:a1,rightx:a2,righty:a3,lefttrigger:b6,righttrigger:b7,platform:Windows, -a3060cff000000000000504944564944,Saitek P2500,a:b2,b:b3,y:b1,x:b0,start:b4,guide:b10,back:b5,leftstick:b8,rightstick:b9,leftshoulder:b6,rightshoulder:b7,dpup:h0.1,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,leftx:a0,lefty:a1,rightx:a2,righty:a3,platform:Windows, -4f0415b3000000000000504944564944,Thrustmaster Dual Analog 3.2,platform:Windows,x:b1,a:b0,b:b2,y:b3,back:b8,start:b9,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,dpup:h0.1,leftshoulder:b4,lefttrigger:b5,rightshoulder:b6,righttrigger:b7,leftstick:b10,rightstick:b11,leftx:a0,lefty:a1,rightx:a2,righty:a3, -6f0e1e01000000000000504944564944,Rock Candy Gamepad for PS3,platform:Windows,a:b1,b:b2,x:b0,y:b3,back:b8,start:b9,guide:b12,leftshoulder:b4,rightshoulder:b5,leftstick:b10,rightstick:b11,leftx:a0,lefty:a1,rightx:a2,righty:a3,lefttrigger:b6,righttrigger:b7,dpup:h0.1,dpleft:h0.8,dpdown:h0.4,dpright:h0.2, -83056020000000000000504944564944,iBuffalo USB 2-axis 8-button Gamepad,a:b1,b:b0,y:b2,x:b3,start:b7,back:b6,leftshoulder:b4,rightshoulder:b5,leftx:a0,lefty:a1,platform:Windows, -10080100000000000000504944564944,PS1 USB,platform:Windows,a:b2,b:b1,x:b3,y:b0,back:b8,start:b9,leftshoulder:b6,rightshoulder:b7,leftstick:b10,rightstick:b11,leftx:a0,lefty:a1,rightx:a3,righty:a2,lefttrigger:b4,righttrigger:b5,dpup:h0.1,dpleft:h0.8,dpdown:h0.4,dpright:h0.2, -49190204000000000000504944564944,Ipega PG-9023,a:b0,b:b1,x:b3,y:b4,back:b10,start:b11,leftstick:b13,rightstick:b14,leftshoulder:b6,rightshoulder:b7,dpup:h0.1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,leftx:a0,lefty:a1,rightx:a3,righty:a4,lefttrigger:b8,righttrigger:b9,platform:Windows, -4f0423b3000000000000504944564944,Dual Trigger 3-in-1,a:b1,b:b2,x:b0,y:b3,back:b8,start:b9,leftstick:b10,rightstick:b11,leftshoulder:b4,rightshoulder:b5,dpup:h0.1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,leftx:a0,lefty:a1,rightx:a2,righty:a5,lefttrigger:b6,righttrigger:b7,platform:Windows, -0d0f4900000000000000504944564944,Hatsune Miku Sho Controller,a:b1,b:b2,x:b0,y:b3,back:b8,guide:b12,start:b9,leftstick:b10,rightstick:b11,leftshoulder:b4,rightshoulder:b5,dpup:h0.1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,leftx:a0,lefty:a1,rightx:a2,righty:a3,lefttrigger:b6,righttrigger:b7,platform:Windows, -79004318000000000000504944564944,Mayflash GameCube Controller Adapter,platform:Windows,a:b1,b:b2,x:b0,y:b3,back:b0,start:b9,guide:b0,leftshoulder:b4,rightshoulder:b7,leftstick:b0,rightstick:b0,leftx:a0,lefty:a1,rightx:a5,righty:a2,lefttrigger:a3,righttrigger:a4,dpup:h0.1,dpleft:h0.8,dpdown:h0.4,dpright:h0.2, -79000018000000000000504944564944,Mayflash WiiU Pro Game Controller Adapter (DInput),a:b1,b:b2,x:b0,y:b3,back:b8,start:b9,leftstick:b10,rightstick:b11,leftshoulder:b4,rightshoulder:b5,dpup:h0.1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,leftx:a0,lefty:a1,rightx:a2,righty:a3,lefttrigger:b6,righttrigger:b7,platform:Windows, -2509e803000000000000504944564944,Mayflash Wii Classic Controller,a:b1,b:b0,x:b3,y:b2,back:b8,guide:b10,start:b9,leftshoulder:b4,rightshoulder:b5,dpup:h0.1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:b11,dpdown:b13,dpleft:b12,dpright:b14,leftx:a0,lefty:a1,rightx:a2,righty:a3,lefttrigger:b6,righttrigger:b7,platform:Windows, -300f1001000000000000504944564944,Saitek P480 Rumble Pad,a:b2,b:b3,x:b0,y:b1,back:b8,start:b9,leftstick:b10,rightstick:b11,leftshoulder:b4,rightshoulder:b6,dpup:h0.1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,leftx:a0,lefty:a1,rightx:a3,righty:a2,lefttrigger:b5,righttrigger:b7,platform:Windows, -10280900000000000000504944564944,8Bitdo SFC30 GamePad,a:b1,b:b0,y:b3,x:b4,start:b11,back:b10,leftshoulder:b6,leftx:a0,lefty:a1,rightshoulder:b7,platform:Windows, -63252305000000000000504944564944,USB Vibration Joystick (BM),platform:Windows,x:b3,a:b2,b:b1,y:b0,back:b8,start:b9,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,dpup:h0.1,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,leftstick:b10,rightstick:b11,leftx:a0,lefty:a1,rightx:a2,righty:a3, -20380900000000000000504944564944,8Bitdo NES30 PRO Wireless,platform:Windows,a:b0,b:b1,x:b3,y:b4,leftshoulder:b6,rightshoulder:b7,lefttrigger:b8,righttrigger:b9,back:b10,start:b11,leftstick:b13,rightstick:b14,leftx:a0,lefty:a1,rightx:a3,righty:a4,dpup:h0.1,dpright:h0.2,dpdown:h0.4,dpleft:h0.8, -02200090000000000000504944564944,8Bitdo NES30 PRO USB,platform:Windows,a:b0,b:b1,x:b3,y:b4,leftshoulder:b6,rightshoulder:b7,lefttrigger:b8,righttrigger:b9,back:b10,start:b11,leftstick:b13,rightstick:b14,leftx:a0,lefty:a1,rightx:a3,righty:a4,dpup:h0.1,dpright:h0.2,dpdown:h0.4,dpleft:h0.8, -ff113133000000000000504944564944,Gembird JPD-DualForce,platform:Windows,a:b2,b:b3,x:b0,y:b1,start:b9,back:b8,leftshoulder:b4,rightshoulder:b5,dpup:h0.1,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,leftx:a0,lefty:a1,rightx:a2,righty:a4,lefttrigger:b6,righttrigger:b7,leftstick:b10,rightstick:b11, -341a0108000000000000504944564944,EXEQ RF USB Gamepad 8206,a:b0,b:b1,x:b2,y:b3,leftshoulder:b4,rightshoulder:b5,leftstick:b8,rightstick:b7,back:b8,start:b9,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftx:a0,lefty:a1,rightx:a2,righty:a3,platform:Windows, -c0111352000000000000504944564944,Battalife Joystick,platform:Windows,x:b4,a:b6,b:b7,y:b5,back:b2,start:b3,leftshoulder:b0,rightshoulder:b1,leftx:a0,lefty:a1, -100801e5000000000000504944564944,NEXT Classic USB Game Controller,a:b0,b:b1,back:b8,start:b9,rightx:a2,righty:a3,leftx:a0,lefty:a1,platform:Windows, -79000600000000000000504944564944,NGS Phantom,a:b2,b:b3,y:b1,x:b0,start:b9,back:b8,leftstick:b10,rightstick:b11,leftshoulder:b4,rightshoulder:b5,dpup:h0.1,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,leftx:a0,lefty:a1,rightx:a2,righty:a4,lefttrigger:b6,righttrigger:b7,platform:Windows, +# Game Controller DB for SDL in 2.0.16 format +# Source: https://github.com/gabomdq/SDL_GameControllerDB -# OS X -0500000047532047616d657061640000,GameStop Gamepad,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Mac OS X, -6d0400000000000016c2000000000000,Logitech F310 Gamepad (DInput),a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Mac OS X, -6d0400000000000018c2000000000000,Logitech F510 Gamepad (DInput),a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Mac OS X, -6d040000000000001fc2000000000000,Logitech F710 Gamepad (XInput),a:b0,b:b1,back:b9,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b10,leftshoulder:b4,leftstick:b6,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,righttrigger:a5,rightx:a3,righty:a4,start:b8,x:b2,y:b3,platform:Mac OS X, -6d0400000000000019c2000000000000,Logitech Wireless Gamepad (DInput),a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Mac OS X, -4c050000000000006802000000000000,PS3 Controller,a:b14,b:b13,back:b0,dpdown:b6,dpleft:b7,dpright:b5,dpup:b4,guide:b16,leftshoulder:b10,leftstick:b1,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b11,rightstick:b2,righttrigger:b9,rightx:a2,righty:a3,start:b3,x:b15,y:b12,platform:Mac OS X, -4c05000000000000c405000000000000,Sony DualShock 4,a:b1,b:b2,y:b3,x:b0,start:b9,guide:b12,back:b13,leftstick:b10,rightstick:b11,leftshoulder:b4,rightshoulder:b5,dpup:h0.1,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,leftx:a0,lefty:a1,rightx:a2,righty:a5,lefttrigger:a3,righttrigger:a4,platform:Mac OS X, -4c05000000000000cc09000000000000,Sony DualShock 4 V2,a:b1,b:b2,y:b3,x:b0,start:b9,guide:b12,back:b13,leftstick:b10,rightstick:b11,leftshoulder:b4,rightshoulder:b5,dpup:h0.1,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,leftx:a0,lefty:a1,rightx:a2,righty:a5,lefttrigger:a3,righttrigger:a4,platform:Mac OS X, -5e040000000000008e02000000000000,X360 Controller,a:b0,b:b1,back:b9,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b10,leftshoulder:b4,leftstick:b6,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,righttrigger:a5,rightx:a3,righty:a4,start:b8,x:b2,y:b3,platform:Mac OS X, -891600000000000000fd000000000000,Razer Onza Tournament,a:b0,b:b1,y:b3,x:b2,start:b8,guide:b10,back:b9,leftstick:b6,rightstick:b7,leftshoulder:b4,rightshoulder:b5,dpup:b11,dpleft:b13,dpdown:b12,dpright:b14,leftx:a0,lefty:a1,rightx:a3,righty:a4,lefttrigger:a2,righttrigger:a5,platform:Mac OS X, -4f0400000000000000b3000000000000,Thrustmaster Firestorm Dual Power,a:b0,b:b2,y:b3,x:b1,start:b10,guide:b8,back:b9,leftstick:b11,rightstick:,leftshoulder:b4,rightshoulder:b6,dpup:h0.1,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,leftx:a0,lefty:a1,rightx:a2,righty:a3,lefttrigger:b5,righttrigger:b7,platform:Mac OS X, -8f0e0000000000000300000000000000,Piranha xtreme,platform:Mac OS X,x:b3,a:b2,b:b1,y:b0,back:b8,start:b9,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,dpup:h0.1,leftshoulder:b6,lefttrigger:b4,rightshoulder:b7,righttrigger:b5,leftstick:b10,rightstick:b11,leftx:a0,lefty:a1,rightx:a3,righty:a2, -0d0f0000000000004d00000000000000,HORI Gem Pad 3,platform:Mac OS X,a:b1,b:b2,y:b3,x:b0,start:b9,guide:b12,back:b8,leftstick:b10,rightstick:b11,leftshoulder:b4,rightshoulder:b5,dpup:h0.1,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,leftx:a0,lefty:a1,rightx:a2,righty:a3,lefttrigger:b6,righttrigger:b7, -79000000000000000600000000000000,G-Shark GP-702,a:b2,b:b1,x:b3,y:b0,back:b8,start:b9,leftstick:b10,rightstick:b11,leftshoulder:b4,rightshoulder:b5,dpup:h0.1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,leftx:a0,lefty:a1,rightx:a3,righty:a4,lefttrigger:b6,righttrigger:b7,platform:Mac OS X, -4f0400000000000015b3000000000000,Thrustmaster Dual Analog 3.2,platform:Mac OS X,x:b1,a:b0,b:b2,y:b3,back:b8,start:b9,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,dpup:h0.1,leftshoulder:b4,lefttrigger:b5,rightshoulder:b6,righttrigger:b7,leftstick:b10,rightstick:b11,leftx:a0,lefty:a1,rightx:a2,righty:a3, -AD1B00000000000001F9000000000000,Gamestop BB-070 X360 Controller,a:b0,b:b1,back:b9,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b10,leftshoulder:b4,leftstick:b6,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,righttrigger:a5,rightx:a3,righty:a4,start:b8,x:b2,y:b3,platform:Mac OS X, -050000005769696d6f74652028303000,Wii Remote,a:b4,b:b5,y:b9,x:b10,start:b6,guide:b8,back:b7,dpup:b2,dpleft:b0,dpdown:b3,dpright:b1,leftx:a0,lefty:a1,lefttrigger:b12,righttrigger:,leftshoulder:b11,platform:Mac OS X, -83050000000000006020000000000000,iBuffalo USB 2-axis 8-button Gamepad,a:b1,b:b0,x:b3,y:b2,back:b6,start:b7,leftshoulder:b4,rightshoulder:b5,leftx:a0,lefty:a1,platform:Mac OS X, -bd1200000000000015d0000000000000,Tomee SNES USB Controller,x:b3,a:b2,b:b1,y:b0,back:b8,start:b9,leftshoulder:b4,rightshoulder:b5,leftx:a0,lefty:a1,platform:Mac OS X, -79000000000000001100000000000000,Retrolink Classic Controller,x:b3,a:b2,b:b1,y:b0,back:b8,start:b9,leftshoulder:b4,rightshoulder:b5,leftx:a3,lefty:a4,platform:Mac OS X, -5e04000000000000dd02000000000000,Xbox One Wired Controller,platform:Mac OS X,x:b2,a:b0,b:b1,y:b3,back:b9,guide:b10,start:b8,dpleft:b13,dpdown:b12,dpright:b14,dpup:b11,leftshoulder:b4,lefttrigger:a2,rightshoulder:b5,righttrigger:a5,leftstick:b6,rightstick:b7,leftx:a0,lefty:a1,rightx:a3,righty:a4, -5e04000000000000ea02000000000000,Xbox Wireless Controller,platform:Mac OS X,x:b2,a:b0,b:b1,y:b3,back:b9,guide:b10,start:b8,dpleft:b13,dpdown:b12,dpright:b14,dpup:b11,leftshoulder:b4,lefttrigger:a2,rightshoulder:b5,righttrigger:a5,leftstick:b6,rightstick:b7,leftx:a0,lefty:a1,rightx:a3,righty:a4, -5e04000000000000e002000000000000,Xbox Wireless Controller,platform:Mac OS X,x:b2,a:b0,b:b1,y:b3,back:b6,guide:b10,start:b7,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,dpup:h0.1,leftshoulder:b4,lefttrigger:a2,rightshoulder:b5,righttrigger:a5,leftstick:b8,rightstick:b9,leftx:a0,lefty:a1,rightx:a3,righty:a4, -050000005769696d6f74652028313800,Wii U Pro Controller,a:b16,b:b15,x:b18,y:b17,back:b7,guide:b8,start:b6,leftstick:b23,rightstick:b24,leftshoulder:b19,rightshoulder:b20,dpup:b11,dpdown:b12,dpleft:b13,dpright:b14,leftx:a0,lefty:a1,rightx:a2,righty:a3,lefttrigger:b21,righttrigger:b22,platform:Mac OS X, -79000000000000000018000000000000,Mayflash WiiU Pro Game Controller Adapter (DInput),a:b4,b:b8,x:b0,y:b12,back:b32,start:b36,leftstick:b40,rightstick:b44,leftshoulder:b16,rightshoulder:b20,dpup:h0.1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,leftx:a0,lefty:a4,rightx:a8,righty:a12,lefttrigger:b24,righttrigger:b28,platform:Mac OS X, -2509000000000000e803000000000000,Mayflash Wii Classic Controller,a:b1,b:b0,x:b3,y:b2,back:b8,guide:b10,start:b9,leftshoulder:b4,rightshoulder:b5,dpup:h0.1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:b11,dpdown:b13,dpleft:b12,dpright:b14,leftx:a0,lefty:a1,rightx:a2,righty:a3,lefttrigger:b6,righttrigger:b7,platform:Mac OS X, -351200000000000021ab000000000000,SFC30 Joystick,a:b1,b:b0,x:b4,y:b3,back:b10,start:b11,leftshoulder:b6,rightshoulder:b7,leftx:a0,lefty:a1,platform:Mac OS X, -b4040000000000000a01000000000000,Sega Saturn USB Gamepad,a:b0,b:b1,x:b3,y:b4,back:b5,guide:b2,start:b8,leftshoulder:b6,rightshoulder:b7,leftx:a0,lefty:a1,platform:Mac OS X, -81170000000000007e05000000000000,Sega Saturn,x:b0,a:b2,b:b4,y:b6,start:b13,dpleft:b15,dpdown:b16,dpright:b14,dpup:b17,leftshoulder:b8,lefttrigger:a5,lefttrigger:b10,rightshoulder:b9,righttrigger:a4,righttrigger:b11,leftx:a0,lefty:a2,platform:Mac OS X, -10280000000000000900000000000000,8Bitdo SFC30 GamePad,a:b1,b:b0,x:b4,y:b3,back:b10,start:b11,leftshoulder:b6,rightshoulder:b7,leftx:a0,lefty:a1,platform:Mac OS X, -d814000000000000cecf000000000000,MC Cthulhu,platform:Mac OS X,leftx:,lefty:,rightx:,righty:,lefttrigger:b6,a:b1,b:b2,y:b3,x:b0,start:b9,back:b8,leftshoulder:b4,rightshoulder:b5,dpup:h0.1,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,righttrigger:b7, -0d0f0000000000006600000000000000,HORIPAD FPS PLUS 4,platform:Mac OS X,a:b1,b:b2,y:b3,x:b0,start:b9,guide:b12,back:b8,leftstick:b10,rightstick:b11,leftshoulder:b4,rightshoulder:b5,dpup:h0.1,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,leftx:a0,lefty:a1,rightx:a2,righty:a5,lefttrigger:b6,righttrigger:a4, +# Windows +03000000300f00000a01000000000000,3 In 1 Conversion Box,a:b2,b:b1,back:b9,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b10,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b11,righttrigger:b5,rightx:a3,righty:a2,start:b8,x:b3,y:b0,platform:Windows, +03000000fa2d00000100000000000000,3dRudder Foot Motion Controller,leftx:a0,lefty:a1,rightx:a5,righty:a2,platform:Windows, +03000000d0160000040d000000000000,4Play Adapter,a:b1,b:b3,back:b4,dpdown:b11,dpleft:b12,dpright:b13,dpup:b10,leftshoulder:b6,leftstick:b14,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b15,righttrigger:b9,rightx:a3,righty:a4,start:b5,x:b0,y:b2,platform:Windows, +03000000d0160000050d000000000000,4Play Adapter,a:b1,b:b3,back:b4,dpdown:b11,dpleft:b12,dpright:b13,dpup:b10,leftshoulder:b6,leftstick:b14,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b15,righttrigger:b9,rightx:a3,righty:a4,start:b5,x:b0,y:b2,platform:Windows, +03000000d0160000060d000000000000,4Play Adapter,a:b1,b:b3,back:b4,dpdown:b11,dpleft:b12,dpright:b13,dpup:b10,leftshoulder:b6,leftstick:b14,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b15,righttrigger:b9,rightx:a3,righty:a4,start:b5,x:b0,y:b2,platform:Windows, +03000000d0160000070d000000000000,4Play Adapter,a:b1,b:b3,back:b4,dpdown:b11,dpleft:b12,dpright:b13,dpup:b10,leftshoulder:b6,leftstick:b14,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b15,righttrigger:b9,rightx:a3,righty:a4,start:b5,x:b0,y:b2,platform:Windows, +03000000d0160000600a000000000000,4Play Adapter,a:b1,b:b3,back:b4,dpdown:b11,dpleft:b12,dpright:b13,dpup:b10,leftshoulder:b6,leftstick:b14,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b15,righttrigger:b9,rightx:a3,righty:a4,start:b5,x:b0,y:b2,platform:Windows, +03000000c82d00000031000000000000,8BitDo Adapter,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b2,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b3,y:b4,platform:Windows, +03000000c82d00000531000000000000,8BitDo Adapter 2,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b2,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b3,y:b4,platform:Windows, +03000000c82d00000951000000000000,8BitDo Dogbone,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftx:a0,lefty:a2,rightx:a3,righty:a5,start:b11,platform:Windows, +03000000008000000210000000000000,8BitDo F30,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,righttrigger:b9,rightx:a2,righty:a5,start:b11,x:b3,y:b4,platform:Windows, +030000003512000011ab000000000000,8BitDo F30 Arcade Joystick,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows, +03000000c82d00001028000000000000,8BitDo F30 Arcade Joystick,a:b0,b:b1,back:b10,leftshoulder:b6,leftx:a0,lefty:a1,rightshoulder:b7,start:b11,x:b3,y:b4,platform:Windows, +03000000c82d000011ab000000000000,8BitDo F30 Arcade Joystick,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b2,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b4,y:b3,platform:Windows, +03000000801000000900000000000000,8BitDo F30 Arcade Stick,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,righttrigger:b9,rightx:a2,righty:a5,start:b11,x:b3,y:b4,platform:Windows, +03000000c82d00001038000000000000,8BitDo F30 Pro,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b2,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a5,start:b11,x:b4,y:b3,platform:Windows, +03000000c82d00000090000000000000,8BitDo FC30 Pro,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b2,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b4,y:b3,platform:Windows, +03000000c82d00001251000000000000,8BitDo Lite 2,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b4,y:b3,platform:Windows, +03000000c82d00001151000000000000,8BitDo Lite SE,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b4,y:b3,platform:Windows, +03000000c82d00000150000000000000,8BitDo M30,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftx:a0,lefty:a1,rightshoulder:b6,righttrigger:b7,rightx:a3,righty:a5,start:b11,x:b4,y:b3,platform:Windows, +03000000c82d00000151000000000000,8BitDo M30,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftx:a0,lefty:a2,rightshoulder:b6,righttrigger:b7,rightx:a3,righty:a5,start:b11,x:b3,y:b4,platform:Windows, +03000000c82d00000650000000000000,8BitDo M30,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b2,leftshoulder:b8,lefttrigger:b9,leftx:a0,lefty:a1,rightshoulder:b6,righttrigger:b7,start:b11,x:b3,y:b4,platform:Windows, +03000000c82d00005106000000000000,8BitDo M30,a:b0,b:b1,back:b10,dpdown:+a2,dpleft:-a0,dpright:+a0,dpup:-a2,guide:b2,leftshoulder:b8,lefttrigger:b9,rightshoulder:b6,righttrigger:b7,start:b11,x:b3,y:b4,platform:Windows, +03000000c82d00000310000000000000,8BitDo N30,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftx:a0,lefty:a1,rightshoulder:b7,start:b11,x:b3,y:b4,platform:Windows, +03000000c82d00000451000000000000,8BitDo N30,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftx:a0,lefty:a2,rightx:a3,righty:a5,start:b11,platform:Windows, +03000000c82d00002028000000000000,8BitDo N30,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b2,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a5,start:b11,x:b4,y:b3,platform:Windows, +03000000c82d00008010000000000000,8BitDo N30,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftx:a0,lefty:a1,rightshoulder:b7,start:b11,x:b3,y:b4,platform:Windows, +03000000c82d0000e002000000000000,8BitDo N30,a:b0,b:b1,back:b7,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftx:a0,lefty:a1,start:b6,platform:Windows, +03000000c82d00000190000000000000,8BitDo N30 Pro,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b2,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b4,y:b3,platform:Windows, +03000000c82d00001590000000000000,8BitDo N30 Pro 2,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b2,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a5,start:b11,x:b4,y:b3,platform:Windows, +03000000c82d00006528000000000000,8BitDo N30 Pro 2,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b2,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b4,y:b3,platform:Windows, +03000000c82d00000290000000000000,8BitDo N64,+rightx:b9,+righty:b3,-rightx:b4,-righty:b8,a:b0,b:b1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,lefttrigger:b10,leftx:a0,lefty:a1,rightshoulder:b7,start:b11,platform:Windows, +03000000c82d00003038000000000000,8BitDo N64,+rightx:b9,+righty:b3,-rightx:b4,-righty:b8,a:b0,b:b1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,lefttrigger:b10,leftx:a0,lefty:a1,rightshoulder:b7,start:b11,platform:Windows, +03000000c82d00006928000000000000,8BitDo N64,a:b0,b:b1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,righttrigger:b9,rightx:a3,righty:a4,start:b11,platform:Windows, +030000003512000012ab000000000000,8BitDo NES30,a:b2,b:b1,back:b6,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b4,rightshoulder:b5,start:b7,x:b3,y:b0,platform:Windows, +03000000c82d000012ab000000000000,8BitDo NES30,a:b1,b:b0,back:b10,leftshoulder:b6,leftx:a0,lefty:a1,rightshoulder:b7,start:b11,x:b4,y:b3,platform:Windows, +03000000022000000090000000000000,8BitDo NES30 Pro,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b4,y:b3,platform:Windows, +03000000203800000900000000000000,8BitDo NES30 Pro,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b4,y:b3,platform:Windows, +03000000c82d00002038000000000000,8BitDo NES30 Pro,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b2,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b4,y:b3,platform:Windows, +03000000c82d00000751000000000000,8BitDo P30,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,lefttrigger:b8,leftx:a0,lefty:a2,rightshoulder:b7,righttrigger:b9,rightx:a3,righty:a5,start:b11,x:b3,y:b4,platform:Windows, +03000000c82d00000851000000000000,8BitDo P30,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,lefttrigger:b8,leftx:a0,lefty:a2,rightshoulder:b7,righttrigger:b9,rightx:a3,righty:a5,start:b11,x:b3,y:b4,platform:Windows, +03000000c82d00000360000000000000,8BitDo Pro 2,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b4,y:b3,platform:Windows, +03000000c82d00000361000000000000,8BitDo Pro 2,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b4,y:b3,platform:Windows, +03000000c82d00000660000000000000,8BitDo Pro 2,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b4,y:b3,platform:Windows, +03000000c82d00000131000000000000,8BitDo Receiver,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b2,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b4,y:b3,platform:Windows, +03000000c82d00000231000000000000,8BitDo Receiver,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b2,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b4,y:b3,platform:Windows, +03000000c82d00000331000000000000,8BitDo Receiver,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b2,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b4,y:b3,platform:Windows, +03000000c82d00000431000000000000,8BitDo Receiver,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b2,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b4,y:b3,platform:Windows, +03000000c82d00002867000000000000,8BitDo S30,a:b0,b:b1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b8,lefttrigger:b9,leftx:a0,lefty:a2,rightshoulder:b6,righttrigger:b7,rightx:a3,righty:a5,start:b10,x:b3,y:b4,platform:Windows, +03000000c82d00000130000000000000,8BitDo SF30,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b2,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a5,start:b11,x:b4,y:b3,platform:Windows, +03000000c82d00000060000000000000,8BitDo SF30 Pro,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Windows, +03000000c82d00000061000000000000,8BitDo SF30 Pro,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b2,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Windows, +03000000102800000900000000000000,8BitDo SFC30,a:b1,b:b0,back:b10,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b6,rightshoulder:b7,start:b11,x:b4,y:b3,platform:Windows, +03000000c82d000021ab000000000000,8BitDo SFC30,a:b1,b:b0,back:b10,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b6,rightshoulder:b7,start:b11,x:b4,y:b3,platform:Windows, +03000000c82d00003028000000000000,8BitDo SFC30,a:b1,b:b0,back:b10,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b6,rightshoulder:b7,start:b11,x:b4,y:b3,platform:Windows, +030000003512000020ab000000000000,8BitDo SN30,a:b0,b:b1,back:b10,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,start:b11,x:b4,y:b3,platform:Windows, +03000000c82d00000030000000000000,8BitDo SN30,a:b1,b:b0,back:b10,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b6,rightshoulder:b7,start:b11,x:b4,y:b3,platform:Windows, +03000000c82d00000351000000000000,8BitDo SN30,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftx:a0,lefty:a2,rightshoulder:b7,rightx:a3,righty:a5,start:b11,x:b4,y:b3,platform:Windows, +03000000c82d00001290000000000000,8BitDo SN30,a:b1,b:b0,back:b10,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b6,rightshoulder:b7,start:b11,x:b4,y:b3,platform:Windows, +03000000c82d000020ab000000000000,8BitDo SN30,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b2,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a5,start:b11,x:b4,y:b3,platform:Windows, +03000000c82d00004028000000000000,8BitDo SN30,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b2,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a5,start:b11,x:b4,y:b3,platform:Windows, +03000000c82d00006228000000000000,8BitDo SN30,a:b1,b:b0,back:b10,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b6,rightshoulder:b7,start:b11,x:b4,y:b3,platform:Windows, +03000000c82d00000021000000000000,8BitDo SN30 Pro,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a5,start:b11,x:b3,y:b4,platform:Windows, +03000000c82d00000160000000000000,8BitDo SN30 Pro,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b2,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Windows, +03000000c82d00000161000000000000,8BitDo SN30 Pro,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b2,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Windows, +03000000c82d00000260000000000000,8BitDo SN30 Pro Plus,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b2,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Windows, +03000000c82d00000261000000000000,8BitDo SN30 Pro Plus,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b2,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Windows, +03000000c82d00001230000000000000,8BitDo Ultimate,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,paddle1:b2,paddle2:b5,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b3,y:b4,platform:Windows, +03000000c82d00001530000000000000,8BitDo Ultimate C,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b3,y:b4,platform:Windows, +03000000c82d00001630000000000000,8BitDo Ultimate C,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b3,y:b4,platform:Windows, +03000000c82d00001730000000000000,8BitDo Ultimate C,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b3,y:b4,platform:Windows, +03000000c82d00001130000000000000,8BitDo Ultimate Wired,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,misc1:b26,paddle1:b24,paddle2:b25,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b3,y:b4,platform:Windows, +03000000c82d00001330000000000000,8BitDo Ultimate Wireless,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,misc1:b26,paddle1:b23,paddle2:b19,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Windows, +03000000c82d00000121000000000000,8BitDo Xbox One SN30 Pro,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b3,y:b4,platform:Windows, +03000000a00500003232000000000000,8BitDo Zero,a:b0,b:b1,back:b10,dpdown:+a2,dpleft:-a0,dpright:+a0,dpup:-a2,leftshoulder:b6,rightshoulder:b7,start:b11,x:b3,y:b4,platform:Windows, +03000000c82d00001890000000000000,8BitDo Zero 2,a:b1,b:b0,back:b10,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b6,rightshoulder:b7,start:b11,x:b4,y:b3,platform:Windows, +03000000c82d00003032000000000000,8BitDo Zero 2,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftx:a0,lefty:a1,rightshoulder:b7,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Windows, +030000008f0e00001200000000000000,Acme GA02,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b5,leftx:a0,lefty:a1,rightshoulder:b6,rightstick:b11,righttrigger:b7,rightx:a3,righty:a2,start:b9,x:b2,y:b3,platform:Windows, +03000000c01100000355000000000000,Acrux,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, +03000000fa190000f0ff000000000000,Acteck AGJ 3200,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Windows, +03000000d1180000402c000000000000,ADT1,a:b0,b:b1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a3,rightx:a2,righty:a5,x:b3,y:b4,platform:Windows, +03000000341a00003608000000000000,Afterglow PS3 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, +030000006f0e00000263000000000000,Afterglow PS3 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, +030000006f0e00001101000000000000,Afterglow PS3 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, +030000006f0e00001401000000000000,Afterglow PS3 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, +030000006f0e00001402000000000000,Afterglow PS3 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, +030000006f0e00001901000000000000,Afterglow PS3 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, +030000006f0e00001a01000000000000,Afterglow PS3 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, +030000006f0e00001301000000000000,Afterglow Xbox Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows, +030000006f0e00001302000000000000,Afterglow Xbox Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows, +030000006f0e00001304000000000000,Afterglow Xbox Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows, +030000006f0e00001413000000000000,Afterglow Xbox Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, +030000006f0e00003901000000000000,Afterglow Xbox Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows, +03000000ab1200000103000000000000,Afterglow Xbox Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:a2,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows, +03000000ad1b000000f9000000000000,Afterglow Xbox Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:b10,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:b11,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows, +03000000100000008200000000000000,Akishop Customs PS360,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,start:b9,x:b0,y:b3,platform:Windows, +030000007c1800000006000000000000,Alienware Dual Compatible PlayStation Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a3,righty:a2,start:b9,x:b0,y:b3,platform:Windows, +03000000491900001904000000000000,Amazon Luna Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,misc1:b9,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b7,x:b2,y:b3,platform:Windows, +03000000710100001904000000000000,Amazon Luna Controller,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b11,leftshoulder:b5,leftstick:b8,leftx:a0,lefty:a1,misc1:b9,rightshoulder:b4,rightstick:b7,rightx:a3,righty:a4,start:b6,x:b3,y:b2,platform:Windows, +03000000830500000160000000000000,Arcade,a:b0,b:b1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,lefttrigger:b7,leftx:a0,lefty:a1,rightshoulder:b2,righttrigger:b3,x:b4,y:b4,platform:Windows, +03000000120c0000100e000000000000,Armor 3,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows, +03000000490b00004406000000000000,ASCII Seamic Controller,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,lefttrigger:b7,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b2,start:b9,x:b3,y:b4,platform:Windows, +03000000869800002500000000000000,Astro C40 TR PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows, +03000000a30c00002700000000000000,Astro City Mini,a:b2,b:b1,back:b8,dpdown:+a4,dpleft:-a3,dpright:+a3,dpup:-a4,rightshoulder:b4,righttrigger:b5,start:b9,x:b3,y:b0,platform:Windows, +03000000a30c00002800000000000000,Astro City Mini,a:b2,b:b1,back:b8,leftx:a3,lefty:a4,rightshoulder:b4,righttrigger:b5,start:b9,x:b3,y:b0,platform:Windows, +03000000050b00000579000000000000,ASUS ROG Kunai 3,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b3,y:b4,platform:Windows, +03000000050b00000679000000000000,ASUS ROG Kunai 3,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,misc1:b15,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b3,y:b4,platform:Windows, +03000000503200000110000000000000,Atari VCS Classic Controller,a:b0,b:b1,back:b4,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b2,start:b3,platform:Windows, +03000000503200000210000000000000,Atari VCS Modern Controller,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,rightx:a3,righty:a4,start:b9,x:b2,y:b3,platform:Windows, +03000000e4150000103f000000000000,Batarang,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:b10,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:b11,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows, +03000000d6200000e557000000000000,Batarang PlayStation Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, +03000000c01100001352000000000000,Battalife Joystick,a:b6,b:b7,back:b2,leftshoulder:b0,leftx:a0,lefty:a1,rightshoulder:b1,start:b3,x:b4,y:b5,platform:Windows, +030000006f0e00003201000000000000,Battlefield 4 PS3 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, +03000000ad1b000001f9000000000000,BB 070,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows, +03000000d62000002a79000000000000,BDA PS4 Fightpad,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows, +03000000bc2000005250000000000000,Beitong G3,a:b0,b:b1,back:b2,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b11,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b5,righttrigger:b9,rightx:a3,righty:a4,start:b15,x:b3,y:b4,platform:Windows, +030000000d0500000208000000000000,Belkin Nostromo N40,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,lefttrigger:b5,leftx:a0,lefty:a1,rightshoulder:b6,righttrigger:b7,rightx:a5,righty:a2,start:b9,x:b2,y:b3,platform:Windows, +03000000bc2000006012000000000000,Betop 2126F,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Windows, +03000000bc2000000055000000000000,Betop BFM,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b3,y:b4,platform:Windows, +03000000bc2000006312000000000000,Betop Controller,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Windows, +03000000bc2000006321000000000000,Betop Controller,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Windows, +03000000bc2000006412000000000000,Betop Controller,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Windows, +03000000c01100000555000000000000,Betop Controller,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Windows, +03000000c01100000655000000000000,Betop Controller,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Windows, +03000000790000000700000000000000,Betop Gamepad,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a4,start:b9,x:b3,y:b0,platform:Windows, +03000000808300000300000000000000,Betop Gamepad,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a4,start:b9,x:b3,y:b0,platform:Windows, +030000006f0e00006401000000000000,BF One,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,rightx:a2,righty:a5,start:b7,x:b2,y:b3,platform:Windows, +03000000300f00000202000000000000,Bigben,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:a5,rightx:a5,righty:a2,start:b7,x:b2,y:b3,platform:Windows, +030000006b1400000209000000000000,Bigben,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, +030000006b1400000055000000000000,Bigben PS3 Controller,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Windows, +030000006b1400000103000000000000,Bigben PS3 Controller,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b2,platform:Windows, +03000000120c0000200e000000000000,Brook Mars PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, +03000000120c0000210e000000000000,Brook Mars PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, +03000000120c0000f10e000000000000,Brook PS2 Adapter,a:b1,b:b2,back:b13,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows, +03000000120c0000310c000000000000,Brook Super Converter,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,righttrigger:b5,start:b9,x:b3,y:b0,platform:Windows, +03000000d81d00000b00000000000000,Buffalo BSGP1601 Series,a:b5,b:b3,back:b12,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b8,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b9,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b13,x:b4,y:b2,platform:Windows, +030000005b1c00002400000000000000,Capcom Home Arcade Controller,a:b3,b:b4,back:b7,leftshoulder:b2,leftx:a0,lefty:a1,rightshoulder:b5,start:b6,x:b0,y:b1,platform:Windows, +030000005b1c00002500000000000000,Capcom Home Arcade Controller,a:b3,b:b4,back:b7,leftshoulder:b2,leftx:a0,lefty:a1,rightshoulder:b5,start:b6,x:b0,y:b1,platform:Windows, +030000006d04000042c2000000000000,ChillStream,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows, +03000000e82000006058000000000000,Cideko AK08b,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Windows, +03000000457500000401000000000000,Cobra,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows, +030000000b0400003365000000000000,Competition Pro,a:b0,b:b1,back:b2,leftx:a0,lefty:a1,start:b3,platform:Windows, +030000004c050000c505000000000000,CronusMax Adapter,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows, +03000000d814000007cd000000000000,Cthulhu,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows, +03000000d8140000cefa000000000000,Cthulhu,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows, +03000000260900008888000000000000,Cyber Gadget GameCube Controller,a:b0,b:b1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b6,righttrigger:a4,rightx:a2,righty:a3~,start:b7,x:b2,y:b3,platform:Windows, +030000003807000002cb000000000000,Cyborg,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a2,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows, +03000000a306000022f6000000000000,Cyborg V.3 Rumble,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:+a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:-a3,rightx:a2,righty:a4,start:b9,x:b0,y:b3,platform:Windows, +03000000f806000000a3000000000000,DA Leader,a:b7,b:b6,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b0,leftstick:b8,lefttrigger:b1,leftx:a0,lefty:a1,rightshoulder:b2,rightstick:b9,righttrigger:b3,rightx:a2,righty:a3,start:b12,x:b4,y:b5,platform:Windows, +030000001a1c00000001000000000000,Datel Arcade Joystick,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b7,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows, +03000000451300000830000000000000,Defender Game Racer X7,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Windows, +03000000791d00000103000000000000,Dual Box Wii,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b10,leftshoulder:b6,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,righttrigger:b5,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Windows, +03000000c0160000e105000000000000,Dual Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a3,righty:a4,start:b9,x:b0,y:b3,platform:Windows, +030000004f040000070f000000000000,Dual Power,a:b8,b:b9,back:b4,dpdown:b1,dpleft:b2,dpright:b3,dpup:b0,leftshoulder:b13,leftstick:b6,lefttrigger:b14,leftx:a0,lefty:a1,rightshoulder:b12,rightstick:b7,righttrigger:b15,start:b5,x:b10,y:b11,platform:Windows, +030000004f04000012b3000000000000,Dual Power 3,a:b0,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b5,leftx:a0,lefty:a1,rightshoulder:b6,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b1,y:b3,platform:Windows, +030000004f04000020b3000000000000,Dual Trigger,a:b0,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b5,leftx:a0,lefty:a1,rightshoulder:b6,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b1,y:b3,platform:Windows, +03000000bd12000002e0000000000000,Dual Vibration Joystick,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b9,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b10,righttrigger:b5,rightx:a3,righty:a2,start:b11,x:b3,y:b0,platform:Windows, +03000000ff1100003133000000000000,DualForce,a:b2,b:b3,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a4,start:b9,x:b0,y:b1,platform:Windows, +030000008f0e00000910000000000000,DualShock 2,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b9,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b10,righttrigger:b5,rightx:a3,righty:a2,start:b11,x:b3,y:b0,platform:Windows, +03000000317300000100000000000000,DualShock 3,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a5,start:b11,x:b3,y:b4,platform:Windows, +030000006f0e00003001000000000000,EA Sports PS3 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, +03000000fc0400000250000000000000,Easy Grip,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,lefttrigger:b7,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b2,start:b9,x:b3,y:b4,platform:Windows, +030000006e0500000a20000000000000,Elecom DUX60 MMO,a:b2,b:b3,back:b17,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b8,leftstick:b14,lefttrigger:b12,leftx:a0,lefty:a1,rightshoulder:b11,rightstick:b15,righttrigger:b13,rightx:a3,righty:a4,start:b20,x:b0,y:b1,platform:Windows, +03000000b80500000410000000000000,Elecom Gamepad,a:b2,b:b3,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b1,platform:Windows, +03000000b80500000610000000000000,Elecom Gamepad,a:b2,b:b3,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b1,platform:Windows, +030000006e0500000520000000000000,Elecom P301U PlayStation Controller Adapter,a:b2,b:b3,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:b7,rightx:a2,righty:a3,start:b11,x:b0,y:b1,platform:Windows, +03000000411200004450000000000000,Elecom U1012,a:b2,b:b3,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:b7,rightx:a2,righty:a3,start:b11,x:b0,y:b1,platform:Windows, +030000006e0500000320000000000000,Elecom U3613M,a:b2,b:b3,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b8,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:b7,rightx:a2,righty:a3,start:b11,x:b0,y:b1,platform:Windows, +030000006e0500000e20000000000000,Elecom U3912T,a:b2,b:b3,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:b7,rightx:a2,righty:a3,start:b11,x:b0,y:b1,platform:Windows, +030000006e0500000f20000000000000,Elecom U4013S,a:b2,b:b3,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:b7,rightx:a2,righty:a3,start:b11,x:b0,y:b1,platform:Windows, +030000006e0500001320000000000000,Elecom U4113,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, +030000006e0500001020000000000000,Elecom U4113S,a:b2,b:b3,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:b7,rightx:a3,righty:a2,start:b11,x:b0,y:b1,platform:Windows, +030000006e0500000720000000000000,Elecom W01U,a:b2,b:b3,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b1,platform:Windows, +030000007d0400000640000000000000,Eliminator AfterShock,a:b1,b:b2,back:b9,dpdown:+a3,dpleft:-a5,dpright:+a5,dpup:-a3,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b7,rightx:a4,righty:a2,start:b8,x:b0,y:b3,platform:Windows, +03000000120c0000f61c000000000000,Elite,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows, +03000000430b00000300000000000000,EMS Production PS2 Adapter,a:b2,b:b1,back:b8,dpdown:b14,dpleft:b15,dpright:b13,dpup:b12,leftshoulder:b6,leftstick:b10,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b11,righttrigger:b5,rightx:a3,righty:a2,start:b9,x:b3,y:b0,platform:Windows, +03000000242f000000b7000000000000,ESM 9110,a:b0,b:b1,back:b7,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:b5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Windows, +03000000101c0000181c000000000000,Essential,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b4,leftx:a1,lefty:a0,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a3,righty:a2,start:b9,x:b3,y:b0,platform:Windows, +030000008f0e00000f31000000000000,EXEQ,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b2,platform:Windows, +03000000341a00000108000000000000,EXEQ RF Gamepad,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Windows, +030000006f0e00008401000000000000,Faceoff Deluxe Nintendo Switch Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, +030000006f0e00008001000000000000,Faceoff Pro Nintendo Switch Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, +03000000021000000090000000000000,FC30 Pro,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b8,leftstick:b13,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b9,rightstick:b14,righttrigger:b7,rightx:a3,righty:a4,start:b11,x:b4,y:b3,platform:Windows, +0300000011040000c600000000000000,FC801,a:b0,b:b1,back:b6,leftshoulder:b4,leftx:a0,lefty:a1,rightshoulder:b5,start:b7,x:b2,y:b3,platform:Windows, +03000000852100000201000000000000,FF GP1,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, +03000000ad1b000028f0000000000000,Fightpad,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,lefttrigger:b10,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b11,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows, +03000000ad1b00002ef0000000000000,Fightpad,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:b7,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows, +03000000ad1b000038f0000000000000,Fightpad TE,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,lefttrigger:b8,rightshoulder:b5,righttrigger:b9,start:b7,x:b2,y:b3,platform:Windows, +03005036852100000000000000000000,Final Fantasy XIV Online Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, +03000000f806000001a3000000000000,Firestorm,a:b9,b:b7,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b0,leftstick:b10,lefttrigger:b1,leftx:a0,lefty:a1,rightshoulder:b2,rightstick:b11,righttrigger:b3,start:b12,x:b8,y:b4,platform:Windows, +03000000b50700000399000000000000,Firestorm 2,a:b2,b:b4,back:b10,leftshoulder:b6,lefttrigger:b7,leftx:a0,lefty:a1,rightshoulder:b8,righttrigger:b9,start:b11,x:b3,y:b5,platform:Windows, +03000000b50700001302000000000000,Firestorm D3,a:b0,b:b2,leftshoulder:b4,lefttrigger:b5,leftx:a0,lefty:a1,rightshoulder:b6,righttrigger:b7,x:b1,y:b3,platform:Windows, +03000000b40400001024000000000000,Flydigi Apex,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a5,start:b11,x:b3,y:b4,platform:Windows, +03000000151900004000000000000000,Flydigi Vader 2,a:b27,b:b26,back:b19,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b6,leftshoulder:b23,leftstick:b17,lefttrigger:b21,leftx:a0,lefty:a1,misc1:b15,paddle1:b11,paddle2:b10,paddle3:b13,paddle4:b12,rightshoulder:b22,rightstick:b16,righttrigger:b20,rightx:a3,righty:a4,start:b18,x:b25,y:b24,platform:Windows, +03000000b40400001124000000000000,Flydigi Vader 2,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b12,lefttrigger:b8,leftx:a0,lefty:a1,misc1:b14,paddle1:b4,paddle2:b5,paddle3:b16,paddle4:b17,rightshoulder:b7,rightstick:b13,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b2,y:b3,platform:Windows, +03000000b40400001224000000000000,Flydigi Vader 2,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b12,lefttrigger:b8,leftx:a0,lefty:a1,misc1:b2,paddle1:b16,paddle2:b17,paddle3:b14,paddle4:b15,rightshoulder:b7,rightstick:b13,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b3,y:b4,platform:Windows, +030000008305000000a0000000000000,G08XU,a:b0,b:b1,back:b4,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b6,rightshoulder:b7,start:b5,x:b2,y:b3,platform:Windows, +0300000066f700000100000000000000,Game VIB Joystick,a:b2,b:b3,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:b7,rightx:a3,righty:a2,start:b11,x:b0,y:b1,platform:Windows, +03000000260900002625000000000000,GameCube Controller,a:b0,b:b1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b6,lefttrigger:a4,leftx:a0,lefty:a1,righttrigger:a5,rightx:a2,righty:a3,start:b7,x:b2,y:b3,platform:Windows, +03000000341a000005f7000000000000,GameCube Controller,a:b2,b:b3,dpdown:b14,dpleft:b15,dpright:b13,dpup:b12,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b7,righttrigger:a4,rightx:a5,righty:a2,start:b9,x:b1,y:b0,platform:Windows, +03000000430b00000500000000000000,GameCube Controller,a:b0,b:b2,dpdown:b10,dpleft:b8,dpright:b9,dpup:b11,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b6,righttrigger:a3,rightx:a5,righty:a2,start:b7,x:b1,y:b3,platform:Windows, +03000000790000004718000000000000,GameCube Controller,a:b1,b:b0,dpdown:b14,dpleft:b15,dpright:b13,dpup:b12,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b7,righttrigger:a4,rightx:a5,righty:a2,start:b9,x:b2,y:b3,platform:Windows, +03000000790000004618000000000000,GameCube Controller Adapter,a:b1,b:b0,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b7,righttrigger:a4,rightx:a5,righty:a2,start:b9,x:b2,y:b3,platform:Windows, +030000008f0e00000d31000000000000,Gamepad 3 Turbo,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, +03000000ac0500003d03000000000000,GameSir G3,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b3,y:b4,platform:Windows, +03000000ac0500005b05000000000000,GameSir G3w,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Windows, +03000000ac0500002d02000000000000,GameSir G4,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a5,start:b11,x:b3,y:b4,platform:Windows, +03000000ac0500004d04000000000000,GameSir G4,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b3,y:b4,platform:Windows, +03000000ac0500001a06000000000000,GameSir-T3 2.02,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b15,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b3,y:b4,platform:Windows, +030000004c0e00001035000000000000,Gamester,a:b0,b:b1,back:b7,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:b10,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:b11,rightx:a3,righty:a4,start:b6,x:b2,y:b3,platform:Windows, +030000000d0f00001110000000000000,GameStick Controller,a:b0,b:b1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,rightx:a2,righty:a5,start:b11,x:b3,y:b4,platform:Windows, +0300000047530000616d000000000000,GameStop,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Windows, +03000000c01100000140000000000000,GameStop PS4 Fun Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows, +03000000b62500000100000000000000,Gametel GT004 01,a:b3,b:b0,dpdown:b10,dpleft:b9,dpright:b8,dpup:b11,leftshoulder:b4,rightshoulder:b5,start:b7,x:b1,y:b2,platform:Windows, +030000008f0e00001411000000000000,Gamo2 Divaller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, +03000000120c0000a857000000000000,Gator Claw,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows, +03000000c9110000f055000000000000,GC100XF,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Windows, +030000008305000009a0000000000000,Genius,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Windows, +030000008305000031b0000000000000,Genius Maxfire Blaze 3,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Windows, +03000000451300000010000000000000,Genius Maxfire Grandias 12,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Windows, +030000005c1a00003330000000000000,Genius MaxFire Grandias 12V,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b10,lefttrigger:b7,leftx:a0,lefty:a1,rightshoulder:b4,rightstick:b11,righttrigger:b5,rightx:a3,righty:a2,start:b9,x:b2,y:b3,platform:Windows, +03000000300f00000b01000000000000,GGE909 Recoil,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a3,righty:a2,start:b9,x:b3,y:b0,platform:Windows, +03000000f0250000c283000000000000,Gioteck PlayStation Controller,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Windows, +03000000f025000021c1000000000000,Gioteck PS3 Controller,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Windows, +03000000f025000031c1000000000000,Gioteck PS3 Controller,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Windows, +03000000f0250000c383000000000000,Gioteck VX2 PlayStation Controller,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Windows, +03000000f0250000c483000000000000,Gioteck VX2 PlayStation Controller,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Windows, +030000004f04000026b3000000000000,GP XID,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows, +0300000079000000d418000000000000,GPD Win,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows, +03000000c6240000025b000000000000,GPX,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows, +030000007d0400000840000000000000,Gravis Destroyer Tilt,+leftx:h0.2,+lefty:h0.4,-leftx:h0.8,-lefty:h0.1,a:b1,b:b2,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b4,rightshoulder:b5,x:b0,y:b3,platform:Windows, +030000007d0400000540000000000000,Gravis Eliminator Pro,a:b1,b:b2,back:b8,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,start:b9,x:b0,y:b3,platform:Windows, +03000000280400000140000000000000,Gravis GamePad Pro,a:b1,b:b2,back:b8,dpdown:+a1,dpleft:-a0,dpright:+a3,dpup:-a4,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,start:b9,x:b0,y:b3,platform:Windows, +030000008f0e00000610000000000000,GreenAsia,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b9,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b10,righttrigger:b5,rightx:a5,righty:a2,start:b11,x:b3,y:b0,platform:Windows, +03000000ac0500006b05000000000000,GT2a,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a5,start:b11,x:b3,y:b4,platform:Windows, +03000000341a00000302000000000000,Hama Scorpad,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, +030000000d0f00004900000000000000,Hatsune Miku Sho PS3 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, +030000001008000001e1000000000000,Havit HV G60,a:b2,b:b1,back:b8,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,start:b9,x:b3,y:b0,platform:Windows, +030000000d0f00000c00000000000000,HEXT,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:b10,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:b11,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows, +03000000d81400000862000000000000,HitBox Edition Cthulhu,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b5,lefttrigger:b4,rightshoulder:b7,righttrigger:b6,start:b9,x:b0,y:b3,platform:Windows, +03000000632500002605000000000000,HJD X,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b3,y:b4,platform:Windows, +030000000d0f00000a00000000000000,Hori DOA,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b9,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows, +030000000d0f00008500000000000000,Hori Fighting Commander 2016 PS3,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, +030000000d0f00002500000000000000,Hori Fighting Commander 3,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,start:b9,x:b0,y:b3,platform:Windows, +030000000d0f00002d00000000000000,Hori Fighting Commander 3 Pro,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, +030000000d0f00005f00000000000000,Hori Fighting Commander 4 PS3,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, +030000000d0f00005e00000000000000,Hori Fighting Commander 4 PS4,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows, +030000000d0f00008400000000000000,Hori Fighting Commander 5,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows, +030000000d0f00005100000000000000,Hori Fighting Commander PS3,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows, +030000000d0f00008600000000000000,Hori Fighting Commander Xbox 360,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows, +030000000d0f0000ba00000000000000,Hori Fighting Commander Xbox 360,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows, +030000000d0f00008800000000000000,Hori Fighting Stick mini 4 (PS3),a:b1,b:b2,back:b9,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,start:b8,x:b0,y:b3,platform:Windows, +030000000d0f00008700000000000000,Hori Fighting Stick mini 4 (PS4),a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,start:b9,x:b0,y:b3,platform:Windows, +030000000d0f00001000000000000000,Hori Fightstick,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows, +030000000d0f00003200000000000000,Hori Fightstick 3W,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows, +030000000d0f0000c000000000000000,Hori Fightstick 4,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows, +030000000d0f00000d00000000000000,Hori Fightstick EX2,a:b0,b:b1,back:b7,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:b10,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:b11,rightx:a3,righty:a4,start:b6,x:b2,y:b3,platform:Windows, +030000000d0f00003701000000000000,Hori Fightstick Mini,a:b1,b:b0,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,rightx:a3,righty:a4,start:b7,x:b3,y:b2,platform:Windows, +030000000d0f00004000000000000000,Hori Fightstick Mini 3,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b5,lefttrigger:b4,rightshoulder:b7,righttrigger:b6,start:b9,x:b0,y:b3,platform:Windows, +030000000d0f00002100000000000000,Hori Fightstick V3,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows, +030000000d0f00002700000000000000,Hori Fightstick V3,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,start:b9,x:b0,y:b3,platform:Windows, +030000000d0f0000a000000000000000,Hori Grip TAC4,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b13,x:b0,y:b3,platform:Windows, +030000000d0f0000a500000000000000,Hori Miku Project Diva X HD PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows, +030000000d0f0000a600000000000000,Hori Miku Project Diva X HD PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, +030000000d0f00000101000000000000,Hori Mini Hatsune Miku FT,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, +030000000d0f00005400000000000000,Hori Pad 3,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, +030000000d0f00000900000000000000,Hori Pad 3 Turbo,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, +030000000d0f00004d00000000000000,Hori Pad A,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, +030000000d0f00003801000000000000,Hori PC Engine Mini Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,start:b9,platform:Windows, +030000000d0f00009200000000000000,Hori Pokken Tournament DX Pro,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,start:b9,x:b0,y:b3,platform:Windows, +030000000d0f00002301000000000000,Hori PS4 Controller Light,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a5,start:b11,x:b3,y:b4,platform:Windows, +030000000d0f00001100000000000000,Hori Real Arcade Pro 3,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,rightshoulder:b5,rightstick:b11,righttrigger:b7,start:b9,x:b0,y:b3,platform:Windows, +030000000d0f00002600000000000000,Hori Real Arcade Pro 3P,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows, +030000000d0f00004b00000000000000,Hori Real Arcade Pro 3W,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows, +030000000d0f00006a00000000000000,Hori Real Arcade Pro 4,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows, +030000000d0f00006b00000000000000,Hori Real Arcade Pro 4,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, +030000000d0f00008a00000000000000,Hori Real Arcade Pro 4,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows, +030000000d0f00008b00000000000000,Hori Real Arcade Pro 4,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, +030000000d0f00006f00000000000000,Hori Real Arcade Pro 4 VLX,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, +030000000d0f00007000000000000000,Hori Real Arcade Pro 4 VLX,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,rightshoulder:b5,rightstick:b11,righttrigger:b7,start:b9,x:b0,y:b3,platform:Windows, +030000000d0f00003d00000000000000,Hori Real Arcade Pro N3,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b10,leftstick:b4,lefttrigger:b11,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b6,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, +030000000d0f0000ae00000000000000,Hori Real Arcade Pro N4,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows, +030000000d0f00008c00000000000000,Hori Real Arcade Pro P4,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows, +030000000d0f0000aa00000000000000,Hori Real Arcade Pro S,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows, +030000000d0f0000d800000000000000,Hori Real Arcade Pro S,a:b0,b:b1,back:b4,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Windows, +030000000d0f00002200000000000000,Hori Real Arcade Pro V3,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, +030000000d0f00005b00000000000000,Hori Real Arcade Pro V4,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows, +030000000d0f00005c00000000000000,Hori Real Arcade Pro V4,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, +030000000d0f0000af00000000000000,Hori Real Arcade Pro VHS,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a5,rightx:a3,righty:a4,start:b9,x:b0,y:b3,platform:Windows, +030000000d0f00001b00000000000000,Hori Real Arcade Pro VX,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b9,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows, +03000000ad1b000002f5000000000000,Hori Real Arcade Pro VX,a:b0,b:b1,back:b7,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,lefttrigger:b10,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b11,rightx:a2,righty:a5,start:b6,x:b2,y:b3,platform:Windows, +030000000d0f00009c00000000000000,Hori TAC Pro,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows, +030000000d0f0000c900000000000000,Hori Taiko Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, +030000000d0f0000c100000000000000,Horipad,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, +030000000d0f00006400000000000000,Horipad 3TP,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows, +030000000d0f00001300000000000000,Horipad 3W,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows, +030000000d0f00005500000000000000,Horipad 4 FPS,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows, +030000000d0f00006e00000000000000,Horipad 4 PS3,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, +030000000d0f00006600000000000000,Horipad 4 PS4,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows, +030000000d0f00004200000000000000,Horipad A,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows, +03000000ad1b000001f5000000000000,Horipad EXT2,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:b10,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:b11,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows, +030000000d0f0000ee00000000000000,Horipad Mini 4,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows, +030000000d0f00006700000000000000,Horipad One,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows, +030000000d0f0000dc00000000000000,Horipad Switch,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows, +03000000242e00000b20000000000000,Hyperkin Admiral N64 Controller,+rightx:b11,+righty:b13,-rightx:b8,-righty:b12,a:b1,b:b0,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,lefttrigger:b14,leftx:a0,lefty:a1,rightshoulder:b5,start:b9,platform:Windows, +03000000242e0000ff0b000000000000,Hyperkin N64 Adapter,a:b1,b:b2,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightx:a2,righty:a3,start:b9,platform:Windows, +03000000790000004e95000000000000,Hyperkin N64 Controller Adapter,a:b1,b:b2,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b7,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b5,rightx:a5,righty:a2,start:b9,platform:Windows, +03000000242e00006a38000000000000,Hyperkin Trooper 2,a:b0,b:b1,back:b4,leftshoulder:b2,leftx:a0,lefty:a1,rightshoulder:b3,start:b5,platform:Windows, +03000000d81d00000e00000000000000,iBuffalo AC02 Arcade Joystick,a:b0,b:b1,back:b9,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b10,lefttrigger:b7,leftx:a0,lefty:a1,rightshoulder:b2,rightstick:b11,righttrigger:b3,rightx:a2,righty:a5,start:b8,x:b4,y:b5,platform:Windows, +03000000d81d00000f00000000000000,iBuffalo BSGP1204 Series,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b10,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b11,righttrigger:b5,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Windows, +03000000d81d00001000000000000000,iBuffalo BSGP1204P Series,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b10,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b11,righttrigger:b5,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Windows, +030000005c0a00000285000000000000,iDroidCon,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,righttrigger:b9,rightx:a2,righty:a5,start:b11,x:b4,y:b6,platform:Windows, +03000000696400006964000000000000,iDroidCon Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, +03000000b50700001403000000000000,Impact Black,a:b2,b:b3,back:b8,leftshoulder:b4,leftstick:b10,lefttrigger:b5,leftx:a0,lefty:a1,rightshoulder:b6,rightstick:b11,righttrigger:b7,rightx:a3,righty:a2,start:b9,x:b0,y:b1,platform:Windows, +030000006f0e00002401000000000000,Injustice Fightstick PS3 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,start:b9,x:b0,y:b3,platform:Windows, +03000000830500005130000000000000,InterAct ActionPad,a:b0,b:b1,back:b8,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b6,lefttrigger:b7,rightshoulder:b5,righttrigger:b2,start:b9,x:b3,y:b4,platform:Windows, +03000000ef0500000300000000000000,InterAct AxisPad,a:b2,b:b3,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:b7,rightx:a3,righty:a2,start:b11,x:b0,y:b1,platform:Windows, +03000000fd0500000230000000000000,InterAct AxisPad,a:b2,b:b3,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:b7,rightx:a2,righty:a5,start:b11,x:b0,y:b1,platform:Windows, +03000000fd0500000030000000000000,Interact GoPad,a:b3,b:b4,leftshoulder:b6,lefttrigger:b7,leftx:a0,lefty:a1,rightshoulder:b2,righttrigger:b5,x:b0,y:b1,platform:Windows, +03000000fd0500003902000000000000,InterAct Hammerhead,a:b3,b:b4,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b2,lefttrigger:b8,rightshoulder:b7,rightstick:b5,righttrigger:b9,start:b10,x:b0,y:b1,platform:Windows, +03000000fd0500002a26000000000000,InterAct Hammerhead FX,a:b3,b:b4,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,righttrigger:b9,rightx:a2,righty:a5,start:b11,x:b0,y:b1,platform:Windows, +03000000fd0500002f26000000000000,InterAct Hammerhead FX,a:b4,b:b5,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,righttrigger:b9,rightx:a2,righty:a5,start:b11,x:b1,y:b2,platform:Windows, +03000000fd0500005302000000000000,InterAct ProPad,a:b3,b:b4,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,lefttrigger:b7,leftx:a0,lefty:a1,rightshoulder:b2,righttrigger:b5,x:b0,y:b1,platform:Windows, +03000000ac0500002c02000000000000,Ipega Controller,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b8,leftstick:b13,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b9,rightstick:b14,righttrigger:b7,rightx:a3,righty:a4,start:b11,x:b3,y:b4,platform:Windows, +03000000491900000204000000000000,Ipega PG9023,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b3,y:b4,platform:Windows, +03000000491900000304000000000000,Ipega PG9087,+righty:+a5,-righty:-a4,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,start:b11,x:b3,y:b4,platform:Windows, +030000007e0500000620000000000000,Joy-Con (L),+leftx:h0.2,+lefty:h0.4,-leftx:h0.8,-lefty:h0.1,a:b0,b:b1,back:b13,leftshoulder:b4,leftstick:b10,rightshoulder:b5,start:b8,x:b2,y:b3,platform:Windows, +030000007e0500000720000000000000,Joy-Con (R),+leftx:h0.2,+lefty:h0.4,-leftx:h0.8,-lefty:h0.1,a:b0,b:b1,back:b12,leftshoulder:b4,leftstick:b11,rightshoulder:b5,start:b9,x:b2,y:b3,platform:Windows, +03000000250900000017000000000000,Joypad Adapter,a:b2,b:b1,back:b9,leftshoulder:b5,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,righttrigger:b6,start:b8,x:b3,y:b0,platform:Windows, +03000000bd12000003c0000000000000,Joypad Alpha Shock,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, +03000000ff1100004033000000000000,JPD FFB,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a2,start:b15,x:b3,y:b0,platform:Windows, +03000000242f00002d00000000000000,JYS Adapter,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Windows, +03000000242f00008a00000000000000,JYS Adapter,a:b1,b:b4,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:b8,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b0,y:b3,platform:Windows, +03000000c4100000c082000000000000,KADE,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows, +03000000828200000180000000000000,Keio,a:b4,b:b5,back:b8,leftshoulder:b2,lefttrigger:b3,leftx:a0,lefty:a1,rightshoulder:b6,righttrigger:b7,start:b9,x:b0,y:b1,platform:Windows, +03000000790000000200000000000000,King PS3 Controller,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a4,start:b9,x:b3,y:b0,platform:Windows, +03000000bd12000001e0000000000000,Leadership,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b10,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b11,righttrigger:b5,rightx:a3,righty:a2,start:b9,x:b3,y:b0,platform:Windows, +030000006f0e00000103000000000000,Logic3,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows, +030000006f0e00000104000000000000,Logic3,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows, +030000008f0e00001300000000000000,Logic3,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Windows, +030000006d040000d1ca000000000000,Logitech ChillStream,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, +030000006d040000d2ca000000000000,Logitech Cordless Precision,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, +030000006d04000011c2000000000000,Logitech Cordless Wingman,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b9,leftstick:b5,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b2,righttrigger:b7,rightx:a3,righty:a4,x:b4,platform:Windows, +030000006d04000016c2000000000000,Logitech Dual Action,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, +030000006d0400001dc2000000000000,Logitech F310,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows, +030000006d04000018c2000000000000,Logitech F510,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, +030000006d0400001ec2000000000000,Logitech F510,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows, +030000006d04000019c2000000000000,Logitech F710,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, +030000006d0400001fc2000000000000,Logitech F710,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows, +030000006d0400001ac2000000000000,Logitech Precision,a:b1,b:b2,back:b8,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,start:b9,x:b0,y:b3,platform:Windows, +030000006d04000009c2000000000000,Logitech WingMan,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,lefttrigger:b7,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b2,start:b8,x:b3,y:b4,platform:Windows, +030000006d0400000bc2000000000000,Logitech WingMan Action Pad,a:b0,b:b1,back:b2,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b8,lefttrigger:a5~,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b5,righttrigger:a2~,start:b8,x:b3,y:b4,platform:Windows, +030000006d0400000ac2000000000000,Logitech WingMan RumblePad,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,lefttrigger:b7,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b2,rightx:a3,righty:a4,x:b3,y:b4,platform:Windows, +03000000380700005645000000000000,Lynx,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows, +03000000222200006000000000000000,Macally,a:b1,b:b2,back:b7,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b33,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, +03000000380700003888000000000000,Mad Catz Arcade Fightstick TE S Plus PS3,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, +03000000380700008532000000000000,Mad Catz Arcade Fightstick TE S PS3,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, +03000000380700006352000000000000,Mad Catz CTRLR,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows, +03000000380700006652000000000000,Mad Catz CTRLR,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a3,righty:a4,start:b9,x:b0,y:b3,platform:Windows, +03000000380700005032000000000000,Mad Catz Fightpad Pro PS3,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, +03000000380700005082000000000000,Mad Catz Fightpad Pro PS4,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows, +03000000380700008031000000000000,Mad Catz FightStick Alpha PS3 ,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows, +030000003807000038b7000000000000,Mad Catz Fightstick TE,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,lefttrigger:b8,rightshoulder:b5,righttrigger:b9,start:b7,x:b2,y:b3,platform:Windows, +03000000380700008433000000000000,Mad Catz Fightstick TE S PS3,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, +03000000380700008483000000000000,Mad Catz Fightstick TE S PS4,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows, +03000000380700008134000000000000,Mad Catz Fightstick TE2 PS3,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b7,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b4,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, +03000000380700008184000000000000,Mad Catz Fightstick TE2 PS4,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b5,leftstick:b10,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b4,rightstick:b11,righttrigger:b7,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows, +03000000380700006252000000000000,Mad Catz Micro CTRLR,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a3,righty:a4,start:b9,x:b0,y:b3,platform:Windows, +03000000380700008232000000000000,Mad Catz PlayStation Brawlpad,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, +03000000380700008731000000000000,Mad Catz PlayStation Fightstick,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, +030000003807000056a8000000000000,Mad Catz PS3 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, +03000000380700001888000000000000,Mad Catz SFIV Fightstick PS3,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b5,lefttrigger:b7,leftx:a0,lefty:a1,rightshoulder:b4,righttrigger:b6,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Windows, +03000000380700008081000000000000,Mad Catz SFV Arcade Fightstick Alpha PS4,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b7,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows, +03000000380700001847000000000000,Mad Catz Street Fighter 4 Xbox 360 FightStick,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,lefttrigger:b8,rightshoulder:b5,righttrigger:b9,start:b7,x:b2,y:b3,platform:Windows, +03000000380700008034000000000000,Mad Catz TE2 PS3 Fightstick,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, +03000000380700008084000000000000,Mad Catz TE2 PS4 Fightstick,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows, +030000002a0600001024000000000000,Matricom,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a3,righty:a4,start:b9,x:b2,y:b3,platform:Windows, +030000009f000000adbb000000000000,MaxJoypad Virtual Controller,a:b1,b:b2,back:b9,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b7,rightx:a2,righty:a3,start:b8,x:b3,y:b0,platform:Windows, +03000000250900000128000000000000,Mayflash Arcade Stick,a:b1,b:b2,back:b8,leftshoulder:b0,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b3,righttrigger:b7,start:b9,x:b5,y:b6,platform:Windows, +030000008f0e00001330000000000000,Mayflash Controller Adapter,a:b1,b:b2,back:b8,dpdown:h0.8,dpleft:h0.2,dpright:h0.1,dpup:h0.4,leftshoulder:b6,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightx:a3~,righty:a2,start:b9,x:b0,y:b3,platform:Windows, +03000000242f00003700000000000000,Mayflash F101,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,start:b9,x:b0,y:b3,platform:Windows, +03000000790000003018000000000000,Mayflash F300 Arcade Joystick,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b7,start:b9,x:b0,y:b3,platform:Windows, +03000000242f00003900000000000000,Mayflash F300 Elite Arcade Joystick,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows, +03000000790000004418000000000000,Mayflash GameCube Controller,a:b1,b:b2,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b7,righttrigger:a4,rightx:a5,righty:a2,start:b9,x:b0,y:b3,platform:Windows, +03000000790000004318000000000000,Mayflash GameCube Controller Adapter,a:b1,b:b2,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b7,righttrigger:a4,rightx:a5,righty:a2,start:b9,x:b0,y:b3,platform:Windows, +03000000242f00007300000000000000,Mayflash Magic NS,a:b1,b:b4,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:b8,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b0,y:b3,platform:Windows, +0300000079000000d218000000000000,Mayflash Magic NS,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Windows, +03000000d620000010a7000000000000,Mayflash Magic NS,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, +03000000242f0000f400000000000000,Mayflash N64 Controller Adapter,a:b1,b:b2,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightx:a2,righty:a5,start:b9,platform:Windows, +03000000790000007918000000000000,Mayflash N64 Controller Adapter,a:b1,b:b2,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,lefttrigger:b9,leftx:a0,lefty:a1,righttrigger:b7,rightx:a3,righty:a2,start:b8,platform:Windows, +030000008f0e00001030000000000000,Mayflash Saturn Adapter,a:b0,b:b1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b5,lefttrigger:b7,rightshoulder:b6,righttrigger:b2,start:b9,x:b3,y:b4,platform:Windows, +0300000025090000e803000000000000,Mayflash Wii Classic Adapter,a:b1,b:b0,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b10,leftshoulder:a4,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:a5,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b2,platform:Windows, +03000000790000000318000000000000,Mayflash Wii DolphinBar,a:b2,b:b3,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b11,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b1,platform:Windows, +03000000790000000018000000000000,Mayflash Wii U Pro Adapter,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, +03000000790000002418000000000000,Mega Drive Controller,a:b0,b:b1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,rightshoulder:b2,start:b9,x:b3,y:b4,platform:Windows, +0300000079000000ae18000000000000,Mega Drive Controller,a:b0,b:b1,back:b7,dpdown:b14,dpleft:b15,dpright:b13,dpup:b2,rightshoulder:b6,righttrigger:b2,start:b9,x:b3,y:b4,platform:Windows, +03000000c0160000990a000000000000,Mega Drive Controller,a:b0,b:b1,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,righttrigger:b2,start:b3,platform:Windows, +030000005e0400002800000000000000,Microsoft Dual Strike,a:b3,b:b2,back:b4,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,lefttrigger:b8,rightshoulder:b7,rightx:a0,righty:a1~,start:b5,x:b1,y:b0,platform:Windows, +030000005e0400000300000000000000,Microsoft SideWinder,a:b0,b:b1,back:b9,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,lefttrigger:b7,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b2,start:b8,x:b3,y:b4,platform:Windows, +030000005e0400000700000000000000,Microsoft SideWinder,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,lefttrigger:b7,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b2,start:b9,x:b3,y:b4,platform:Windows, +030000005e0400000e00000000000000,Microsoft SideWinder Freestyle Pro,a:b0,b:b1,back:b9,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,lefttrigger:b7,leftx:a0,lefty:a1,rightshoulder:b2,righttrigger:b5,start:b8,x:b3,y:b4,platform:Windows, +030000005e0400002700000000000000,Microsoft SideWinder Plug and Play,a:b0,b:b1,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,lefttrigger:b4,righttrigger:b5,x:b2,y:b3,platform:Windows, +03000000280d00000202000000000000,Miller Lite Cantroller,a:b0,b:b1,back:b4,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftx:a0,lefty:a1,start:b5,x:b2,y:b3,platform:Windows, +03000000ad1b000023f0000000000000,MLG,a:b0,b:b1,back:b7,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:a6,rightx:a3,righty:a4,start:b6,x:b2,y:b3,platform:Windows, +03000000ad1b00003ef0000000000000,MLG Fightstick TE,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,lefttrigger:b8,rightshoulder:b5,righttrigger:b9,start:b7,x:b2,y:b3,platform:Windows, +03000000380700006382000000000000,MLG PS3 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, +03000000ffff00000000000000000000,Mocute M053,a:b3,b:b2,back:b9,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b11,leftstick:b7,lefttrigger:b5,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b6,righttrigger:b4,rightx:a3,righty:a4,start:b8,x:b1,y:b0,platform:Windows, +03000000d6200000e589000000000000,Moga 2,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,rightx:a2,righty:a5,start:b7,x:b2,y:b3,platform:Windows, +03000000d62000007162000000000000,Moga Pro,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,rightx:a2,righty:a5,start:b7,x:b2,y:b3,platform:Windows, +03000000d6200000ad0d000000000000,Moga Pro,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows, +03000000c62400002a89000000000000,Moga XP5A Plus,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b15,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b3,y:b4,platform:Windows, +03000000c62400002b89000000000000,Moga XP5A Plus,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b3,y:b4,platform:Windows, +03000000c62400001a89000000000000,Moga XP5X Plus,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b3,y:b4,platform:Windows, +03000000c62400001b89000000000000,Moga XP5X Plus,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b3,y:b4,platform:Windows, +03000000250900006688000000000000,MP-8866 Super Dual Box,a:b2,b:b1,back:b9,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b10,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b11,righttrigger:b5,rightx:a2,righty:a3,start:b8,x:b3,y:b0,platform:Windows, +03000000091200004488000000000000,MUSIA PlayStation 2 Input Display,a:b0,b:b2,back:b4,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b8,leftstick:b6,lefttrigger:b10,leftx:a0,lefty:a1,rightshoulder:b9,rightstick:b7,righttrigger:b11,rightx:a2,righty:a3,start:b5,x:b1,y:b3,platform:Windows, +03000000f70600000100000000000000,N64 Adaptoid,+rightx:b2,+righty:b1,-rightx:b4,-righty:b5,a:b0,b:b3,dpdown:b11,dpleft:b12,dpright:b13,dpup:b10,leftshoulder:b6,lefttrigger:b9,leftx:a0,lefty:a1,rightshoulder:b7,start:b8,platform:Windows, +030000006b140000010c000000000000,Nacon GC 400ES,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Windows, +030000006b1400001106000000000000,Nacon Revolution 3 PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows, +030000006b140000100d000000000000,Nacon Revolution Infinity PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, +030000006b140000080d000000000000,Nacon Revolution Unlimited Pro Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, +03000000bd12000001c0000000000000,Nebular,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a5,righty:a2,start:b9,x:b3,y:b0,platform:Windows, +03000000eb0300000000000000000000,NeGcon Adapter,a:a2,b:b13,dpdown:b6,dpleft:b7,dpright:b5,dpup:b4,lefttrigger:a4,leftx:a1,righttrigger:b11,start:b3,x:a3,y:b12,platform:Windows, +0300000038070000efbe000000000000,NEO SE,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:a2,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows, +0300000092120000474e000000000000,NeoGeo X Arcade Stick,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,start:b9,x:b3,y:b2,platform:Windows, +03000000921200004b46000000000000,NES 2 port Adapter,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,start:b11,platform:Windows, +03000000000f00000100000000000000,NES Controller,a:b1,b:b0,back:b2,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,start:b3,platform:Windows, +03000000921200004346000000000000,NES Controller,a:b0,b:b1,back:b2,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,start:b3,platform:Windows, +03000000790000004518000000000000,NEXILUX GameCube Controller Adapter,a:b1,b:b0,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b7,righttrigger:a4,rightx:a5,righty:a2,start:b9,x:b2,y:b3,platform:Windows, +030000001008000001e5000000000000,NEXT SNES Controller,a:b2,b:b1,back:b8,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b4,rightshoulder:b5,righttrigger:b6,start:b9,x:b3,y:b0,platform:Windows, +03000000050b00000045000000000000,Nexus,a:b0,b:b1,back:b9,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b7,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b8,righttrigger:a4,rightx:a2,righty:a3,start:b10,x:b2,y:b3,platform:Windows, +03000000152000000182000000000000,NGDS,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a3,righty:a4,start:b9,x:b3,y:b0,platform:Windows, +030000007e0500000920000000000000,Nintendo Switch Pro Controller,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,misc1:b13,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Windows, +030000000d0500000308000000000000,Nostromo N45,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b9,leftshoulder:b4,leftstick:b12,lefttrigger:b5,leftx:a0,lefty:a1,rightshoulder:b6,rightstick:b11,righttrigger:b7,rightx:a3,righty:a2,start:b10,x:b2,y:b3,platform:Windows, +030000007e0500001920000000000000,NSO N64 Controller,+rightx:b8,+righty:b2,-rightx:b3,-righty:b7,a:b1,b:b0,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1,misc1:b13,rightshoulder:b5,righttrigger:b10,start:b9,platform:Windows, +030000007e0500001720000000000000,NSO SNES Controller,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b15,start:b9,x:b2,y:b3,platform:Windows, +03000000550900001472000000000000,NVIDIA Controller,a:b11,b:b10,back:b13,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b7,leftstick:b5,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b6,rightstick:b4,righttrigger:a5,rightx:a3,righty:a6,start:b3,x:b9,y:b8,platform:Windows, +03000000550900001072000000000000,NVIDIA Shield,a:b9,b:b8,back:b11,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b5,leftstick:b3,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b4,rightstick:b2,righttrigger:a4,rightx:a2,righty:a5,start:b0,x:b7,y:b6,platform:Windows, +030000005509000000b4000000000000,NVIDIA Virtual,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:+a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:-a2,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows, +03000000120c00000288000000000000,Nyko Air Flo Xbox Controller,a:b0,b:b1,back:b7,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:b10,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:b11,rightx:a3,righty:a4,start:b6,x:b2,y:b3,platform:Windows, +030000004b120000014d000000000000,Nyko Airflo,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b10,leftshoulder:a3,leftstick:a0,lefttrigger:b6,rightshoulder:b5,rightstick:a2,righttrigger:b7,start:b9,x:b2,y:b3,platform:Windows, +03000000d62000001d57000000000000,Nyko Airflo PS3 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, +03000000791d00000900000000000000,Nyko Playpad,a:b0,b:b1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,rightx:a2,righty:a5,start:b11,x:b3,y:b4,platform:Windows, +03000000782300000a10000000000000,Onlive Controller,a:b15,b:b14,back:b7,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b5,leftshoulder:b11,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a3,righty:a4,start:b6,x:b13,y:b12,platform:Windows, +030000000d0f00000401000000000000,Onyx,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows, +030000008916000001fd000000000000,Onza CE,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:a3,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows, +030000008916000000fd000000000000,Onza TE,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows, +03000000d62000006d57000000000000,OPP PS3 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, +030000006b14000001a1000000000000,Orange Controller,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b10,leftshoulder:b4,leftstick:b6,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,righttrigger:a4,rightx:a5,righty:a2,start:b9,x:b2,y:b3,platform:Windows, +03000000362800000100000000000000,OUYA Controller,a:b0,b:b3,dpdown:b9,dpleft:b10,dpright:b11,dpup:b8,guide:b14,leftshoulder:b4,leftstick:b6,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,righttrigger:b13,rightx:a3,righty:a4,x:b1,y:b2,platform:Windows, +03000000120c0000f60e000000000000,P4 Gamepad,a:b1,b:b2,back:b12,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b5,lefttrigger:b7,rightshoulder:b4,righttrigger:b6,start:b9,x:b0,y:b3,platform:Windows, +03000000790000002201000000000000,PC Controller,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Windows, +030000006f0e00008501000000000000,PDP Fightpad Pro,a:b2,b:b3,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b1,y:b0,platform:Windows, +030000006f0e00000901000000000000,PDP PS3 Versus Fighting,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,start:b9,x:b0,y:b3,platform:Windows, +030000008f0e00004100000000000000,PlaySega,a:b1,b:b0,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b6,lefttrigger:b7,rightshoulder:b5,righttrigger:b2,start:b8,x:b4,y:b3,platform:Windows, +03000000666600006706000000000000,PlayStation Adapter,a:b2,b:b1,back:b8,dpdown:b14,dpleft:b15,dpright:b13,dpup:b12,leftshoulder:b6,leftstick:b9,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b10,righttrigger:b5,rightx:a2,righty:a3,start:b11,x:b3,y:b0,platform:Windows, +03000000e30500009605000000000000,PlayStation Adapter,a:b2,b:b1,back:b9,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b10,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b11,righttrigger:b5,rightx:a2,righty:a3,start:b8,x:b3,y:b0,platform:Windows, +030000004c050000da0c000000000000,PlayStation Classic Controller,a:b2,b:b1,back:b8,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b6,lefttrigger:b4,rightshoulder:b7,righttrigger:b5,start:b9,x:b3,y:b0,platform:Windows, +03000000632500002306000000000000,PlayStation Controller,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Windows, +03000000f0250000c183000000000000,PlayStation Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, +03000000d9040000160f000000000000,PlayStation Controller Adapter,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b10,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b11,righttrigger:b5,rightx:a3,righty:a2,start:b9,x:b3,y:b0,platform:Windows, +030000004c0500003713000000000000,PlayStation Vita,a:b1,b:b2,back:b8,dpdown:b13,dpleft:b15,dpright:b14,dpup:b12,leftshoulder:b4,leftx:a0,lefty:a1,rightshoulder:b5,rightx:a3,righty:a4,start:b9,x:b0,y:b3,platform:Windows, +03000000d62000006dca000000000000,PowerA Pro Ex,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, +0300000062060000d570000000000000,PowerA PS3 Controller,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, +03000000d620000013a7000000000000,PowerA Switch Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, +030000006d04000084ca000000000000,Precision,a:b0,b:b1,back:b7,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b5,leftstick:b8,lefttrigger:b10,leftx:a0,lefty:a1,rightshoulder:b4,rightstick:b9,righttrigger:b11,rightx:a3,righty:a4,start:b6,x:b2,y:b3,platform:Windows, +03000000d62000009557000000000000,Pro Elite PS3 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, +03000000c62400001a53000000000000,Pro Ex Mini,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:b10,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:b11,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows, +03000000d62000009f31000000000000,Pro Ex mini PS3 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, +03000000d6200000c757000000000000,Pro Ex mini PS3 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, +03000000120c0000110e000000000000,Pro5,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows, +03000000100800000100000000000000,PS1 Controller,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b10,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b11,righttrigger:b5,rightx:a3,righty:a2,start:b9,x:b3,y:b0,platform:Windows, +030000008f0e00007530000000000000,PS1 Controller,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b1,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, +03000000100800000300000000000000,PS2 Controller,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b10,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b11,righttrigger:b5,rightx:a4,righty:a2,start:b9,x:b3,y:b0,platform:Windows, +03000000250900000088000000000000,PS2 Controller,a:b2,b:b1,back:b9,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b10,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b11,righttrigger:b5,rightx:a2,righty:a3,start:b8,x:b3,y:b0,platform:Windows, +03000000250900006888000000000000,PS2 Controller,a:b2,b:b1,back:b9,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b5,leftstick:b10,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b11,righttrigger:b6,rightx:a2,righty:a3,start:b8,x:b3,y:b0,platform:Windows, +03000000250900008888000000000000,PS2 Controller,a:b2,b:b1,back:b9,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b10,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b11,righttrigger:b5,rightx:a2,righty:a3,start:b8,x:b3,y:b0,platform:Windows, +030000006b1400000303000000000000,PS2 Controller,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Windows, +030000009d0d00001330000000000000,PS2 Controller,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b5,leftx:a0,lefty:a1,rightshoulder:b6,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Windows, +03000000151a00006222000000000000,PS2 Dual Plus Adapter,a:b2,b:b1,back:b9,dpdown:b14,dpleft:b15,dpright:b13,dpup:b12,leftshoulder:b6,leftstick:b10,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b11,righttrigger:b5,rightx:a2,righty:a3,start:b8,x:b3,y:b0,platform:Windows, +03000000120a00000100000000000000,PS3 Controller,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a5,start:b11,x:b3,y:b4,platform:Windows, +03000000120c00001307000000000000,PS3 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows, +03000000120c00001cf1000000000000,PS3 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows, +03000000120c0000f90e000000000000,PS3 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows, +03000000250900000118000000000000,PS3 Controller,a:b2,b:b1,back:b9,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b10,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b11,righttrigger:b5,rightx:a2,righty:a3,start:b8,x:b3,y:b0,platform:Windows, +03000000250900000218000000000000,PS3 Controller,a:b2,b:b1,back:b9,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b10,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b11,righttrigger:b5,rightx:a2,righty:a3,start:b8,x:b3,y:b0,platform:Windows, +03000000250900000500000000000000,PS3 Controller,a:b2,b:b1,back:b9,dpdown:h0.8,dpleft:h0.4,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b10,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b11,righttrigger:b5,rightx:a2,righty:a3,start:b8,x:b0,y:b3,platform:Windows, +030000004c0500006802000000000000,PS3 Controller,a:b2,b:b1,back:b9,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b10,lefttrigger:a3~,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b11,righttrigger:a4~,rightx:a2,righty:a5,start:b8,x:b3,y:b0,platform:Windows, +030000004f1f00000800000000000000,PS3 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b7,start:b9,x:b0,y:b3,platform:Windows, +03000000632500007505000000000000,PS3 Controller,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Windows, +03000000888800000803000000000000,PS3 Controller,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b9,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:b7,rightx:a3,righty:a4,start:b11,x:b3,y:b0,platform:Windows, +03000000888800000804000000000000,PS3 Controller,a:b14,b:b13,back:b0,dpdown:b6,dpleft:b7,dpright:b5,dpup:b4,guide:b16,leftshoulder:b10,leftstick:b1,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b11,rightstick:b2,righttrigger:b9,rightx:a2,righty:a3,start:b3,x:b15,y:b12,platform:Windows, +030000008f0e00000300000000000000,PS3 Controller,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a5,start:b9,x:b3,y:b0,platform:Windows, +030000008f0e00001431000000000000,PS3 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, +03000000ba2200002010000000000000,PS3 Controller,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a5,righty:a2,start:b9,x:b3,y:b2,platform:Windows, +03000000120c00000807000000000000,PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows, +03000000120c0000111e000000000000,PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows, +03000000120c0000121e000000000000,PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows, +03000000120c0000130e000000000000,PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows, +03000000120c0000150e000000000000,PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows, +03000000120c0000180e000000000000,PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows, +03000000120c0000181e000000000000,PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows, +03000000120c0000191e000000000000,PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows, +03000000120c00001e0e000000000000,PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows, +03000000120c0000a957000000000000,PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows, +03000000120c0000aa57000000000000,PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows, +03000000120c0000f21c000000000000,PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows, +03000000120c0000f31c000000000000,PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows, +03000000120c0000f41c000000000000,PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows, +03000000120c0000f51c000000000000,PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows, +03000000120c0000f70e000000000000,PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows, +03000000120e0000120c000000000000,PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows, +03000000160e0000120c000000000000,PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows, +030000001a1e0000120c000000000000,PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows, +030000004c050000a00b000000000000,PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows, +030000004c050000c405000000000000,PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,touchpad:b13,x:b0,y:b3,platform:Windows, +030000004c050000cc09000000000000,PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows, +030000004c050000e60c000000000000,PS5 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,misc1:b14,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,touchpad:b13,x:b0,y:b3,platform:Windows, +030000004c050000f20d000000000000,PS5 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,misc1:b14,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,touchpad:b13,x:b0,y:b3,platform:Windows, +03000000830500005020000000000000,PSX,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:b7,rightx:a2,righty:a3,start:b11,x:b2,y:b3,platform:Windows, +03000000300f00000111000000000000,Qanba 2,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows, +03000000300f00000211000000000000,Qanba 2P,a:b1,b:b0,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Windows, +03000000300f00000011000000000000,Qanba Arcade Stick 1008,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b7,start:b10,x:b0,y:b3,platform:Windows, +03000000300f00001611000000000000,Qanba Arcade Stick 4018,a:b1,b:b2,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b9,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,start:b8,x:b0,y:b3,platform:Windows, +03000000222c00000025000000000000,Qanba Dragon Arcade Joystick,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows, +03000000222c00000020000000000000,Qanba Drone Arcade Stick,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:a3,rightshoulder:b5,righttrigger:a4,start:b9,x:b0,y:b3,platform:Windows, +03000000300f00001211000000000000,Qanba Joystick,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows, +03000000300f00001210000000000000,Qanba Joystick Plus,a:b0,b:b1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,rightshoulder:b5,start:b9,x:b2,y:b3,platform:Windows, +03000000341a00000104000000000000,Qanba Joystick Q4RAF,a:b5,b:b6,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b10,leftshoulder:b0,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b3,righttrigger:b7,start:b9,x:b1,y:b2,platform:Windows, +03000000222c00000223000000000000,Qanba Obsidian Arcade Stick PS3,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, +03000000222c00000023000000000000,Qanba Obsidian Arcade Stick PS4,a:b1,b:b2,back:b13,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows, +030000008a2400006682000000000000,R1 Mobile Controller,a:b3,b:b1,back:b7,leftx:a0,lefty:a1,start:b6,x:b4,y:b0,platform:Windows, +03000000086700006626000000000000,RadioShack,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a5,start:b9,x:b3,y:b0,platform:Windows, +03000000ff1100004733000000000000,Ramox FPS Controller,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b7,start:b9,x:b3,y:b0,platform:Windows, +030000009b2800002300000000000000,Raphnet 3DO Adapter,a:b0,b:b1,back:b4,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,lefttrigger:b5,leftx:a0,lefty:a1,rightshoulder:b2,start:b3,platform:Windows, +030000009b2800006900000000000000,Raphnet 3DO Adapter,a:b0,b:b1,back:b4,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,lefttrigger:b5,leftx:a0,lefty:a1,rightshoulder:b2,start:b3,platform:Windows, +030000009b2800000800000000000000,Raphnet Dreamcast Adapter,a:b2,b:b1,dpdown:b5,dpleft:b6,dpright:b7,dpup:b4,lefttrigger:a2,leftx:a0,righttrigger:a3,righty:a1,start:b3,x:b10,y:b9,platform:Windows, +030000009b2800006200000000000000,Raphnet GameCube Adapter,a:b0,b:b7,dpdown:b11,dpleft:b12,dpright:b13,dpup:b10,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b2,righttrigger:b5,rightx:a3,righty:a4,start:b3,x:b1,y:b8,platform:Windows, +030000009b2800003200000000000000,Raphnet GC and N64 Adapter,a:b0,b:b7,dpdown:b11,dpleft:b12,dpright:b13,dpup:b10,lefttrigger:+a5,leftx:a0,lefty:a1,rightshoulder:b2,righttrigger:+a2,rightx:a3,righty:a4,start:b3,x:b1,y:b8,platform:Windows, +030000009b2800006000000000000000,Raphnet GC and N64 Adapter,a:b0,b:b7,dpdown:b11,dpleft:b12,dpright:b13,dpup:b10,lefttrigger:+a5,leftx:a0,lefty:a1,rightshoulder:b2,righttrigger:+a2,rightx:a3,righty:a4,start:b3,x:b1,y:b8,platform:Windows, +030000009b2800001800000000000000,Raphnet Jaguar Adapter,a:b2,b:b1,back:b4,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b0,righttrigger:b10,start:b3,x:b11,y:b12,platform:Windows, +030000009b2800006300000000000000,Raphnet N64 Adapter,+rightx:b9,+righty:b7,-rightx:b8,-righty:b6,a:b0,b:b1,dpdown:b11,dpleft:b12,dpright:b13,dpup:b10,leftshoulder:b4,lefttrigger:b2,leftx:a0,lefty:a1,rightshoulder:b5,start:b3,platform:Windows, +030000009b2800000200000000000000,Raphnet NES Adapter,a:b7,b:b6,back:b5,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftx:a0,lefty:a1,start:b4,platform:Windows, +030000009b2800004400000000000000,Raphnet PS1 and PS2 Adapter,a:b1,b:b2,back:b5,dpdown:b13,dpleft:b14,dpright:b15,dpup:b12,leftshoulder:b6,leftstick:b10,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b11,righttrigger:b9,rightx:a3,righty:a4,start:b4,x:b0,y:b3,platform:Windows, +030000009b2800004300000000000000,Raphnet Saturn,a:b0,b:b1,dpdown:b13,dpleft:b14,dpright:b15,dpup:b12,leftshoulder:b6,lefttrigger:b7,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b2,start:b8,x:b3,y:b4,platform:Windows, +030000009b2800000500000000000000,Raphnet Saturn Adapter 2.0,a:b1,b:b2,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b6,lefttrigger:b4,rightshoulder:b7,righttrigger:b5,start:b9,x:b0,y:b3,platform:Windows, +030000009b2800000300000000000000,Raphnet SNES Adapter,a:b0,b:b4,back:b2,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftx:a0,lefty:a1,rightshoulder:b7,start:b3,x:b1,y:b5,platform:Windows, +030000009b2800005600000000000000,Raphnet SNES Adapter,a:b1,b:b4,back:b2,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b6,rightshoulder:b7,start:b3,x:b0,y:b5,platform:Windows, +030000009b2800005700000000000000,Raphnet SNES Adapter,a:b1,b:b4,back:b2,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b6,rightshoulder:b7,start:b3,x:b0,y:b5,platform:Windows, +030000009b2800001e00000000000000,Raphnet Vectrex Adapter,a:b0,b:b1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftx:a1,lefty:a2,x:b2,y:b3,platform:Windows, +030000009b2800002b00000000000000,Raphnet Wii Classic Adapter,a:b1,b:b4,back:b2,dpdown:b13,dpleft:b14,dpright:b15,dpup:b12,guide:b10,leftshoulder:b6,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,righttrigger:b9,rightx:a3,righty:a4,start:b3,x:b0,y:b5,platform:Windows, +030000009b2800002c00000000000000,Raphnet Wii Classic Adapter,a:b1,b:b4,back:b2,dpdown:b13,dpleft:b14,dpright:b15,dpup:b12,guide:b10,leftshoulder:b6,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,righttrigger:b9,rightx:a3,righty:a4,start:b3,x:b0,y:b5,platform:Windows, +030000009b2800008000000000000000,Raphnet Wii Classic Adapter,a:b1,b:b4,back:b2,dpdown:b13,dpleft:b14,dpright:b15,dpup:b12,guide:b10,leftshoulder:b6,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,righttrigger:b9,rightx:a3,righty:a4,start:b3,x:b0,y:b5,platform:Windows, +03000000321500000003000000000000,Razer Hydra,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:a2,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows, +03000000f8270000bf0b000000000000,Razer Kishi,a:b6,b:b7,back:b16,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b18,leftshoulder:b12,leftstick:b19,lefttrigger:b14,leftx:a0,lefty:a1,rightshoulder:b13,rightstick:b20,righttrigger:b15,rightx:a2,righty:a5,start:b17,x:b9,y:b10,platform:Windows, +03000000321500000204000000000000,Razer Panthera PS3 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, +03000000321500000104000000000000,Razer Panthera PS4,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows, +03000000321500000010000000000000,Razer Raiju,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows, +03000000321500000507000000000000,Razer Raiju Mobile,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b3,y:b4,platform:Windows, +03000000321500000707000000000000,Razer Raiju Mobile,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b3,y:b4,platform:Windows, +03000000321500000710000000000000,Razer Raiju TE,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows, +03000000321500000a10000000000000,Razer Raiju TE,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, +03000000321500000410000000000000,Razer Raiju UE,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows, +03000000321500000910000000000000,Razer Raiju UE,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows, +03000000321500000011000000000000,Razer Raion PS4 Fightpad,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows, +03000000321500000009000000000000,Razer Serval,+lefty:+a2,-lefty:-a1,a:b0,b:b1,back:b12,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b10,leftshoulder:b4,leftstick:b8,leftx:a0,rightshoulder:b5,rightstick:b9,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows, +03000000921200004547000000000000,Retro Bit Sega Genesis Controller Adapter,a:b0,b:b1,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,lefttrigger:b7,rightshoulder:b5,righttrigger:b2,start:b6,x:b3,y:b4,platform:Windows, +03000000790000001100000000000000,Retro Controller,a:b1,b:b2,back:b8,dpdown:+a4,dpleft:-a3,dpright:+a3,dpup:-a4,leftshoulder:b6,lefttrigger:b7,rightshoulder:b4,righttrigger:b5,start:b9,x:b0,y:b3,platform:Windows, +03000000830500006020000000000000,Retro Controller,a:b0,b:b1,back:b6,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b4,lefttrigger:b5,rightshoulder:b8,righttrigger:b9,start:b7,x:b2,y:b3,platform:Windows, +03000000bd12000013d0000000000000,Retrolink Sega Saturn Classic Controller,a:b0,b:b1,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b5,lefttrigger:b6,rightshoulder:b2,righttrigger:b7,start:b8,x:b3,y:b4,platform:Windows, +03000000bd12000015d0000000000000,Retrolink SNES Controller,a:b2,b:b1,back:b8,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b4,rightshoulder:b5,start:b9,x:b3,y:b0,platform:Windows, +03000000341200000400000000000000,RetroUSB N64 RetroPort,+rightx:b8,+righty:b10,-rightx:b9,-righty:b11,a:b7,b:b6,dpdown:b2,dpleft:b1,dpright:b0,dpup:b3,leftshoulder:b13,lefttrigger:b5,leftx:a0,lefty:a1,rightshoulder:b12,start:b4,platform:Windows, +0300000000f000000300000000000000,RetroUSB RetroPad,a:b1,b:b5,back:b2,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b6,rightshoulder:b7,start:b3,x:b0,y:b4,platform:Windows, +0300000000f00000f100000000000000,RetroUSB Super RetroPort,a:b1,b:b5,back:b2,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b6,rightshoulder:b7,start:b3,x:b0,y:b4,platform:Windows, +03000000830500000960000000000000,Revenger,a:b0,b:b1,leftshoulder:b6,lefttrigger:b7,leftx:a0,lefty:a1,rightshoulder:b2,righttrigger:b3,x:b4,y:b5,platform:Windows, +030000006b140000010d000000000000,Revolution Pro Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows, +030000006b140000020d000000000000,Revolution Pro Controller 2,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows, +030000006b140000130d000000000000,Revolution Pro Controller 3,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows, +030000006f0e00001f01000000000000,Rock Candy,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:a2,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows, +030000006f0e00004601000000000000,Rock Candy,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows, +03000000c6240000fefa000000000000,Rock Candy Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows, +030000006f0e00001e01000000000000,Rock Candy PS3 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, +030000006f0e00002801000000000000,Rock Candy PS3 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, +030000006f0e00002f01000000000000,Rock Candy PS3 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, +030000006f0e00008701000000000000,Rock Candy Switch Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b13,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b12,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, +03000000050b0000e318000000000000,ROG Chakram,a:b1,b:b0,leftx:a0,lefty:a1,x:b2,y:b3,platform:Windows, +03000000050b0000e518000000000000,ROG Chakram,a:b1,b:b0,leftx:a0,lefty:a1,x:b2,y:b3,platform:Windows, +03000000050b00005819000000000000,ROG Chakram Core,a:b1,b:b0,leftx:a0,lefty:a1,x:b2,y:b3,platform:Windows, +03000000050b0000181a000000000000,ROG Chakram X,a:b1,b:b0,leftx:a0,lefty:a1,x:b2,y:b3,platform:Windows, +03000000050b00001a1a000000000000,ROG Chakram X,a:b1,b:b0,leftx:a0,lefty:a1,x:b2,y:b3,platform:Windows, +03000000050b00001c1a000000000000,ROG Chakram X,a:b1,b:b0,leftx:a0,lefty:a1,x:b2,y:b3,platform:Windows, +030000004f04000001d0000000000000,Rumble Force,a:b0,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b5,leftx:a0,lefty:a1,rightshoulder:b6,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b1,y:b3,platform:Windows, +030000008916000000fe000000000000,Sabertooth,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows, +03000000c6240000045d000000000000,Sabertooth,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows, +03000000a30600001af5000000000000,Saitek Cyborg,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a3,righty:a4,start:b9,x:b0,y:b3,platform:Windows, +03000000a306000023f6000000000000,Saitek Cyborg V.1 Game,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a4,start:b9,x:b0,y:b3,platform:Windows, +03000000300f00001201000000000000,Saitek Dual Analog,a:b2,b:b3,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b5,leftx:a0,lefty:a1,rightshoulder:b6,rightstick:b11,righttrigger:b7,rightx:a3,righty:a2,start:b9,x:b0,y:b1,platform:Windows, +03000000a30600000701000000000000,Saitek P220,a:b2,b:b3,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b6,lefttrigger:b7,rightshoulder:b4,righttrigger:b5,x:b0,y:b1,platform:Windows, +03000000a30600000cff000000000000,Saitek P2500 Force Rumble,a:b2,b:b3,back:b11,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:b7,rightx:a2,righty:a3,start:b10,x:b0,y:b1,platform:Windows, +03000000a30600000d5f000000000000,Saitek P2600,a:b1,b:b2,back:b9,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b7,rightx:a3,righty:a2,start:b8,x:b0,y:b3,platform:Windows, +03000000a30600000dff000000000000,Saitek P2600,a:b1,b:b2,back:b9,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a5,righty:a2,start:b8,x:b0,y:b3,platform:Windows, +03000000a30600000c04000000000000,Saitek P2900,a:b1,b:b2,back:b12,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a3,righty:a2,start:b9,x:b0,y:b3,platform:Windows, +03000000a306000018f5000000000000,Saitek P3200,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a3,righty:a4,start:b9,x:b0,y:b3,platform:Windows, +03000000300f00001001000000000000,Saitek P480 Rumble,a:b2,b:b3,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b5,leftx:a0,lefty:a1,rightshoulder:b6,rightstick:b11,righttrigger:b7,rightx:a3,righty:a2,start:b9,x:b0,y:b1,platform:Windows, +03000000a30600000901000000000000,Saitek P880,a:b2,b:b3,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b8,lefttrigger:b7,leftx:a0,lefty:a1,rightshoulder:b4,rightstick:b9,righttrigger:b5,rightx:a3,righty:a2,x:b0,y:b1,platform:Windows, +03000000a30600000b04000000000000,Saitek P990,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a3,righty:a2,start:b9,x:b0,y:b3,platform:Windows, +03000000a30600002106000000000000,Saitek PS1000 PlayStation Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a4,start:b9,x:b0,y:b3,platform:Windows, +03000000a306000020f6000000000000,Saitek PS2700 PlayStation Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a4,start:b9,x:b0,y:b3,platform:Windows, +03000000300f00001101000000000000,Saitek Rumble,a:b2,b:b3,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b10,lefttrigger:b5,leftx:a0,lefty:a1,rightshoulder:b6,rightstick:b11,righttrigger:b7,rightx:a3,righty:a2,start:b9,x:b0,y:b1,platform:Windows, +03000000e804000000a0000000000000,Samsung EIGP20,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftx:a0,lefty:a1,rightshoulder:b7,rightx:a3,righty:a4,start:b11,x:b3,y:b4,platform:Windows, +03000000c01100000252000000000000,Sanwa Easy Grip,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,lefttrigger:b7,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b2,start:b9,x:b3,y:b4,platform:Windows, +03000000c01100004350000000000000,Sanwa Micro Grip P3,a:b1,b:b0,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b5,leftx:a0,lefty:a1,rightshoulder:b6,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,x:b3,y:b2,platform:Windows, +03000000411200004550000000000000,Sanwa Micro Grip Pro,a:b0,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b5,leftx:a0,lefty:a1,rightshoulder:b6,rightstick:b11,righttrigger:b7,rightx:a1,righty:a2,start:b9,x:b1,y:b3,platform:Windows, +03000000c01100004150000000000000,Sanwa Micro Grip Pro,a:b0,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b5,leftx:a0,lefty:a1,rightshoulder:b6,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b1,y:b3,platform:Windows, +03000000c01100004450000000000000,Sanwa Online Grip,a:b0,b:b1,back:b12,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b10,lefttrigger:b7,leftx:a0,lefty:a1,rightshoulder:b8,rightstick:b11,righttrigger:b9,rightx:a3,righty:a2,start:b14,x:b3,y:b4,platform:Windows, +03000000730700000401000000000000,Sanwa PlayOnline Mobile,a:b0,b:b1,back:b2,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,start:b3,platform:Windows, +03000000830500006120000000000000,Sanwa Smart Grip II,a:b0,b:b2,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b7,x:b1,y:b3,platform:Windows, +03000000c01100000051000000000000,Satechi Controller,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a5,start:b11,x:b3,y:b4,platform:Windows, +030000004f04000028b3000000000000,Score A,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows, +03000000952e00002577000000000000,Scuf PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows, +03000000a30c00002500000000000000,Sega Genesis Mini 3B Controller,a:b2,b:b1,dpdown:+a4,dpleft:-a3,dpright:+a3,dpup:-a4,righttrigger:b5,start:b9,platform:Windows, +03000000a30c00002400000000000000,Sega Mega Drive Mini 6B Controller,a:b2,b:b1,dpdown:+a4,dpleft:-a3,dpright:+a3,dpup:-a4,rightshoulder:b4,righttrigger:b5,start:b9,x:b3,y:b0,platform:Windows, +0300000000050000289b000000000000,Sega Saturn Adapter,a:b1,b:b2,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b6,lefttrigger:b4,rightshoulder:b7,righttrigger:b5,start:b9,x:b0,y:b3,platform:Windows, +0300000000f000000800000000000000,Sega Saturn Controller,a:b1,b:b2,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,rightshoulder:b7,righttrigger:b3,start:b0,x:b5,y:b6,platform:Windows, +03000000730700000601000000000000,Sega Saturn Controller,a:b0,b:b1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,lefttrigger:b7,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b2,start:b9,x:b3,y:b4,platform:Windows, +03000000b40400000a01000000000000,Sega Saturn Controller,a:b0,b:b1,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b6,lefttrigger:b7,rightshoulder:b5,righttrigger:b2,start:b8,x:b3,y:b4,platform:Windows, +030000003b07000004a1000000000000,SFX,a:b0,b:b2,back:b7,leftshoulder:b6,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b9,righttrigger:b5,start:b8,x:b1,y:b3,platform:Windows, +03000000f82100001900000000000000,Shogun Bros Chameleon X1,a:b2,b:b1,back:b9,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,righttrigger:b5,rightx:a2,righty:a3,start:b8,x:b3,y:b0,platform:Windows, +03000000120c00001c1e000000000000,SnakeByte 4S PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows, +0300000003040000c197000000000000,SNES Controller,a:b0,b:b4,back:b2,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b6,rightshoulder:b7,start:b3,x:b1,y:b5,platform:Windows, +0300000081170000960a000000000000,SNES Controller,a:b4,b:b0,back:b2,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b6,rightshoulder:b7,start:b3,x:b5,y:b1,platform:Windows, +03000000811700009d0a000000000000,SNES Controller,a:b0,b:b4,back:b2,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftx:a0,lefty:a1,rightshoulder:b7,start:b3,x:b1,y:b5,platform:Windows, +030000008b2800000300000000000000,SNES Controller,a:b0,b:b4,back:b2,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftx:a0,lefty:a1,rightshoulder:b7,start:b3,x:b1,y:b5,platform:Windows, +03000000921200004653000000000000,SNES Controller,a:b0,b:b4,back:b2,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b6,rightshoulder:b7,start:b3,x:b1,y:b5,platform:Windows, +03000000ff000000cb01000000000000,Sony PlayStation Portable,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftx:a0,lefty:a1,rightshoulder:b5,start:b7,x:b2,y:b3,platform:Windows, +03000000341a00000208000000000000,Speedlink 6555,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:-a4,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:a4,rightx:a3,righty:a2,start:b7,x:b2,y:b3,platform:Windows, +03000000341a00000908000000000000,Speedlink 6566,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Windows, +03000000380700001722000000000000,Speedlink Competition Pro,a:b0,b:b1,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,x:b2,y:b3,platform:Windows, +030000008f0e00000800000000000000,Speedlink Strike FX,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Windows, +03000000c01100000591000000000000,Speedlink Torid,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Windows, +03000000d11800000094000000000000,Stadia Controller,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b10,leftshoulder:b4,leftstick:b6,lefttrigger:b12,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,righttrigger:b11,rightx:a3,righty:a4,start:b9,x:b2,y:b3,platform:Windows, +03000000de280000fc11000000000000,Steam Virtual Gamepad,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows, +03000000de280000ff11000000000000,Steam Virtual Gamepad,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:+a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:-a2,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows, +03000000120c0000160e000000000000,Steel Play Metaltech PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows, +03000000110100001914000000000000,SteelSeries,a:b0,b:b1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftstick:b13,lefttrigger:b6,leftx:a0,lefty:a1,rightstick:b14,righttrigger:b7,rightx:a3,righty:a4,start:b11,x:b3,y:b4,platform:Windows, +03000000381000001214000000000000,SteelSeries Free,a:b0,b:b1,back:b12,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftx:a0,lefty:a1,rightshoulder:b7,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Windows, +03000000110100003114000000000000,SteelSeries Stratus Duo,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b3,y:b4,platform:Windows, +03000000381000003014000000000000,SteelSeries Stratus Duo,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b10,leftshoulder:b4,leftstick:b8,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows, +03000000381000003114000000000000,SteelSeries Stratus Duo,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b10,leftshoulder:b4,leftstick:b8,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows, +03000000381000001814000000000000,SteelSeries Stratus XL,a:b0,b:b1,back:b18,dpdown:b13,dpleft:b14,dpright:b15,dpup:b12,guide:b19,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b2,y:b3,platform:Windows, +03000000790000001c18000000000000,STK 7024X,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b3,y:b4,platform:Windows, +03000000380700003847000000000000,Street Fighter Fightstick TE,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,lefttrigger:b10,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b11,start:b7,x:b2,y:b3,platform:Windows, +030000001f08000001e4000000000000,Super Famicom Controller,a:b2,b:b1,back:b8,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b4,rightshoulder:b5,start:b9,x:b3,y:b0,platform:Windows, +03000000790000000418000000000000,Super Famicom Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b33,rightshoulder:b5,start:b7,x:b2,y:b3,platform:Windows, +03000000341200001300000000000000,Super Racer,a:b2,b:b3,back:b8,leftshoulder:b5,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b4,righttrigger:b7,x:b0,y:b1,platform:Windows, +03000000d620000011a7000000000000,Switch Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, +030000000d0f0000f600000000000000,Switch Hori Pad,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Windows, +03000000457500002211000000000000,Szmy Power PC Gamepad,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, +030000004f0400000ab1000000000000,T16000M,a:b0,b:b1,back:b12,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b11,leftshoulder:b4,lefttrigger:b9,leftx:a0,lefty:a1,rightshoulder:b6,righttrigger:b7,start:b10,x:b2,y:b3,platform:Windows, +030000000d0f00007b00000000000000,TAC GEAR,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows, +03000000e40a00000207000000000000,Taito Egret II Mini Controller,a:b4,b:b2,back:b6,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,guide:b9,rightshoulder:b0,righttrigger:b1,start:b7,x:b8,y:b3,platform:Windows, +03000000d814000001a0000000000000,TE Kitty,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, +03000000fa1900000706000000000000,Team 5,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Windows, +03000000b50700001203000000000000,Techmobility X6-38V,a:b2,b:b3,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b5,leftx:a0,lefty:a1,rightshoulder:b6,rightstick:b11,righttrigger:b7,rightx:a3,righty:a2,start:b9,x:b0,y:b1,platform:Windows, +03000000ba2200000701000000000000,Technology Innovation PS2 Adapter,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a3,righty:a2,start:b9,x:b3,y:b2,platform:Windows, +03000000c61100001000000000000000,Tencent Xianyou Gamepad,a:b0,b:b1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,x:b3,y:b4,platform:Windows, +03000000790000002601000000000000,TGZ,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a5,start:b9,x:b3,y:b0,platform:Windows, +03000000591c00002400000000000000,THEC64 Joystick,a:b0,b:b1,back:b6,leftshoulder:b4,leftx:a0,lefty:a4,rightshoulder:b5,start:b7,x:b2,y:b3,platform:Windows, +03000000591c00002600000000000000,THEGamepad,a:b2,b:b1,back:b6,leftx:a0,lefty:a1,start:b7,x:b3,y:b0,platform:Windows, +030000004f04000015b3000000000000,Thrustmaster Dual Analog 4,a:b0,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b5,leftx:a0,lefty:a1,rightshoulder:b6,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b1,y:b3,platform:Windows, +030000004f04000023b3000000000000,Thrustmaster Dual Trigger PlayStation Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows, +030000004f0400000ed0000000000000,ThrustMaster eSwap Pro Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows, +030000004f04000008d0000000000000,ThrustMaster Ferrari 150 PlayStation Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows, +030000004f04000000b3000000000000,Thrustmaster Firestorm Dual Power,a:b0,b:b2,back:b9,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b11,lefttrigger:b5,leftx:a0,lefty:a1,rightshoulder:b6,rightstick:b12,righttrigger:b7,rightx:a2,righty:a3,start:b10,x:b1,y:b3,platform:Windows, +030000004f04000004b3000000000000,Thrustmaster Firestorm Dual Power,a:b0,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b5,leftx:a0,lefty:a1,rightshoulder:b6,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b1,y:b3,platform:Windows, +030000004f04000003d0000000000000,ThrustMaster Run N Drive PlayStation Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b7,leftshoulder:a3,leftstick:b10,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:a4,rightstick:b11,righttrigger:b5,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows, +030000004f04000009d0000000000000,ThrustMaster Run N Drive PlayStation Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, +030000006d04000088ca000000000000,Thunderpad,a:b0,b:b1,back:b7,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b5,leftstick:b8,lefttrigger:b10,leftx:a0,lefty:a1,rightshoulder:b4,rightstick:b9,righttrigger:b11,rightx:a3,righty:a4,start:b6,x:b2,y:b3,platform:Windows, +03000000666600000288000000000000,TigerGame PlayStation Adapter,a:b2,b:b1,back:b9,dpdown:b14,dpleft:b15,dpright:b13,dpup:b12,leftshoulder:b6,leftstick:b10,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b11,righttrigger:b5,rightx:a2,righty:a3,start:b8,x:b3,y:b0,platform:Windows, +03000000666600000488000000000000,TigerGame PlayStation Adapter,a:b2,b:b1,back:b9,dpdown:b14,dpleft:b15,dpright:b13,dpup:b12,leftshoulder:b6,leftstick:b10,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b11,righttrigger:b5,rightx:a2,righty:a3,start:b8,x:b3,y:b0,platform:Windows, +030000004f04000007d0000000000000,TMini,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, +03000000571d00002100000000000000,Tomee NES Controller Adapter,a:b1,b:b0,back:b2,dpdown:+a4,dpleft:-a0,dpright:+a0,dpup:-a4,start:b3,platform:Windows, +03000000571d00002000000000000000,Tomee SNES Controller Adapter,a:b0,b:b1,back:b6,dpdown:+a4,dpleft:-a0,dpright:+a0,dpup:-a4,leftshoulder:b4,rightshoulder:b5,start:b7,x:b2,y:b3,platform:Windows, +03000000d62000006000000000000000,Tournament PS3 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, +03000000c01100000055000000000000,Tronsmart,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Windows, +030000005f140000c501000000000000,Trust Gamepad,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Windows, +03000000b80500000210000000000000,Trust Gamepad,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Windows, +030000004f04000087b6000000000000,TWCS Throttle,dpdown:b8,dpleft:b9,dpright:b7,dpup:b6,leftstick:b5,lefttrigger:-a5,leftx:a0,lefty:a1,righttrigger:+a5,platform:Windows, +03000000411200000450000000000000,Twin Shock,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b9,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b10,righttrigger:b5,rightx:a3,righty:a4,start:b11,x:b3,y:b0,platform:Windows, +03000000d90400000200000000000000,TwinShock PS2 Controller,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b10,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b11,righttrigger:b5,rightx:a3,righty:a2,start:b9,x:b3,y:b0,platform:Windows, +03000000151900005678000000000000,Uniplay U6,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b3,y:b4,platform:Windows, +03000000101c0000171c000000000000,uRage Gamepad,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Windows, +030000000b0400003065000000000000,USB Controller,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a5,start:b9,x:b3,y:b0,platform:Windows, +03000000242f00006e00000000000000,USB Controller,a:b1,b:b4,back:b10,leftshoulder:b8,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b9,righttrigger:b7,rightx:a2,righty:a5,start:b11,x:b0,y:b3,platform:Windows, +03000000300f00000701000000000000,USB Controller,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a3,righty:a2,start:b9,x:b3,y:b0,platform:Windows, +03000000341a00002308000000000000,USB Controller,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Windows, +03000000666600000188000000000000,USB Controller,a:b2,b:b1,back:b9,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b10,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b11,righttrigger:b5,rightx:a2,righty:a3,start:b8,x:b3,y:b0,platform:Windows, +030000006b1400000203000000000000,USB Controller,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Windows, +03000000790000000a00000000000000,USB Controller,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a4,start:b9,x:b3,y:b0,platform:Windows, +03000000b404000081c6000000000000,USB Controller,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a5,start:b9,x:b3,y:b0,platform:Windows, +03000000b50700001503000000000000,USB Controller,a:b2,b:b3,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b5,leftx:a0,lefty:a1,rightshoulder:b6,rightstick:b11,righttrigger:b7,rightx:a5,righty:a2,start:b9,x:b0,y:b1,platform:Windows, +03000000bd12000012d0000000000000,USB Controller,a:b0,b:b1,back:b6,leftshoulder:b4,leftx:a0,lefty:a1,rightshoulder:b5,start:b7,x:b2,y:b3,platform:Windows, +03000000ff1100004133000000000000,USB Controller,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b10,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b11,righttrigger:b5,rightx:a4,righty:a2,start:b9,x:b3,y:b0,platform:Windows, +03000000632500002305000000000000,USB Vibration Joystick,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Windows, +03000000790000001a18000000000000,Venom,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, +03000000790000001b18000000000000,Venom Arcade Joystick,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,start:b9,x:b0,y:b3,platform:Windows, +030000006f0e00000302000000000000,Victrix PS4 Pro Fightstick,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,start:b9,x:b0,y:b3,platform:Windows, +030000006f0e00000702000000000000,Victrix PS4 Pro Fightstick,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,start:b9,x:b0,y:b3,platform:Windows, +0300000034120000adbe000000000000,vJoy Device,a:b0,b:b1,back:b15,dpdown:b6,dpleft:b7,dpright:b8,dpup:b5,guide:b16,leftshoulder:b9,leftstick:b13,lefttrigger:b11,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b14,righttrigger:b12,rightx:a3,righty:a4,start:b4,x:b2,y:b3,platform:Windows, +03000000120c0000ab57000000000000,Warrior Joypad JS083,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows, +030000007e0500003003000000000000,Wii U Pro,a:b0,b:b1,back:b8,dpdown:b14,dpleft:b15,dpright:b16,dpup:b13,leftshoulder:b6,leftstick:b11,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b12,righttrigger:b5,rightx:a2,righty:a3,start:b9,x:b3,y:b2,platform:Windows, +0300000032150000030a000000000000,Wildcat,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows, +0300000032150000140a000000000000,Wolverine,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows, +030000002e160000efbe000000000000,Xbox 360 Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,lefttrigger:b10,rightshoulder:b5,righttrigger:b11,start:b7,x:b2,y:b3,platform:Windows, +03000000380700001647000000000000,Xbox 360 Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows, +03000000380700002045000000000000,Xbox 360 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows, +03000000380700002644000000000000,Xbox 360 Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b7,lefttrigger:b10,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:b11,rightx:a2,righty:a5,start:b8,x:b2,y:b3,platform:Windows, +03000000380700002647000000000000,Xbox 360 Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:b10,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:b11,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows, +030000003807000026b7000000000000,Xbox 360 Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows, +03000000380700003647000000000000,Xbox 360 Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:b10,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:b11,rightx:a7,righty:a5,start:b7,x:b2,y:b3,platform:Windows, +030000005e0400001907000000000000,Xbox 360 Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows, +030000005e0400008e02000000000000,Xbox 360 Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:+a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:-a2,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows, +030000005e0400009102000000000000,Xbox 360 Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows, +03000000ad1b000000fd000000000000,Xbox 360 Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:b10,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:b11,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows, +03000000ad1b000001fd000000000000,Xbox 360 Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:a2,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows, +03000000ad1b000016f0000000000000,Xbox 360 Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows, +03000000ad1b00008e02000000000000,Xbox 360 Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:a2,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows, +03000000c62400000053000000000000,Xbox 360 Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:b10,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:b11,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows, +03000000c6240000fdfa000000000000,Xbox 360 Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows, +03000000380700002847000000000000,Xbox 360 Fightpad,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,lefttrigger:b10,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b11,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows, +030000005e040000a102000000000000,Xbox 360 Wireless Receiver,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:+a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:-a2,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows, +030000005e0400000a0b000000000000,Xbox Adaptive Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:+a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:-a2,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows, +03000000120c00000a88000000000000,Xbox Controller,a:b0,b:b1,back:b7,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:b10,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:b11,rightx:a2,righty:a4,start:b6,x:b2,y:b3,platform:Windows, +03000000120c00001088000000000000,Xbox Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:a2~,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:a5~,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows, +030000002a0600002000000000000000,Xbox Controller,a:b0,b:b1,back:b13,dpdown:b9,dpleft:b10,dpright:b11,dpup:b8,leftshoulder:b5,leftstick:b14,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b4,rightstick:b15,righttrigger:b7,rightx:a2,righty:a5,start:b12,x:b2,y:b3,platform:Windows, +03000000300f00008888000000000000,Xbox Controller,a:b0,b:b1,back:b7,dpdown:b13,dpleft:b10,dpright:b11,dpup:b12,leftshoulder:b5,leftstick:b8,lefttrigger:b10,leftx:a0,lefty:a1,rightshoulder:b4,rightstick:b9,righttrigger:b11,rightx:a3,righty:a4,start:b6,x:b2,y:b3,platform:Windows, +03000000380700001645000000000000,Xbox Controller,a:b0,b:b1,back:b7,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b5,leftstick:b8,lefttrigger:b10,leftx:a0,lefty:a1,rightshoulder:b4,rightstick:b9,righttrigger:b11,rightx:a3,righty:a4,start:b6,x:b2,y:b3,platform:Windows, +03000000380700002645000000000000,Xbox Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:b10,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:b11,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows, +03000000380700003645000000000000,Xbox Controller,a:b0,b:b1,back:b7,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b5,leftstick:b8,lefttrigger:b10,leftx:a0,lefty:a1,rightshoulder:b4,rightstick:b9,righttrigger:b11,rightx:a3,righty:a4,start:b6,x:b2,y:b3,platform:Windows, +03000000380700008645000000000000,Xbox Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows, +030000005e0400000202000000000000,Xbox Controller,a:b0,b:b1,back:b7,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b5,leftstick:b8,lefttrigger:b10,leftx:a0,lefty:a1,rightshoulder:b4,rightstick:b9,righttrigger:b11,rightx:a3,righty:a4,start:b6,x:b2,y:b3,platform:Windows, +030000005e0400008502000000000000,Xbox Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows, +030000005e0400008702000000000000,Xbox Controller,a:b0,b:b1,back:b7,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b5,leftstick:b8,lefttrigger:b10,leftx:a0,lefty:a1,rightshoulder:b4,rightstick:b9,righttrigger:b7,rightx:a3,righty:a4,start:b6,x:b2,y:b3,platform:Windows, +030000005e0400008902000000000000,Xbox Controller,a:b0,b:b1,back:b7,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b10,leftstick:b8,lefttrigger:b5,leftx:a0,lefty:a1,rightshoulder:b11,rightstick:b9,righttrigger:b4,rightx:a3,righty:a4,start:b6,x:b2,y:b3,platform:Windows, +030000000d0f00006300000000000000,Xbox One Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:b9,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows, +030000005e0400000c0b000000000000,Xbox One Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows, +030000005e040000d102000000000000,Xbox One Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows, +030000005e040000dd02000000000000,Xbox One Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows, +030000005e040000e002000000000000,Xbox One Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows, +030000005e040000e302000000000000,Xbox One Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows, +030000005e040000ea02000000000000,Xbox One Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:+a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:-a2,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows, +030000005e040000fd02000000000000,Xbox One Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows, +030000005e040000ff02000000000000,Xbox One Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:+a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:-a2,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows, +030000006f0e0000a802000000000000,Xbox One Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows, +030000006f0e0000c802000000000000,Xbox One Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows, +03000000c62400003a54000000000000,Xbox One Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows, +030000005e040000130b000000000000,Xbox Series Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b10,leftshoulder:b4,leftstick:b8,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows, +03000000341a00000608000000000000,Xeox,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Windows, +03000000450c00002043000000000000,Xeox SL6556BK,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Windows, +030000006f0e00000300000000000000,XGear,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b10,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b11,righttrigger:b5,rightx:a5,righty:a2,start:b9,x:b3,y:b0,platform:Windows, +03000000172700004431000000000000,Xiaomi Controller,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b20,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a7,rightx:a2,righty:a5,start:b11,x:b3,y:b4,platform:Windows, +03000000172700003350000000000000,Xiaomi XMGP01YM,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,rightx:a3,righty:a4,start:b11,x:b3,y:b4,platform:Windows, +03000000bc2000005060000000000000,Xiaomi XMGP01YM,+lefty:+a2,+righty:+a5,-lefty:-a1,-righty:-a4,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,start:b11,x:b3,y:b4,platform:Windows, +xinput,XInput Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b10,leftshoulder:b4,leftstick:b8,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows, +030000007d0400000340000000000000,Xterminator Digital Gamepad,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:-a4,lefttrigger:+a4,leftx:a0,lefty:a1,paddle1:b7,paddle2:b6,rightshoulder:b5,rightstick:b9,righttrigger:b2,rightx:a3,righty:a5,start:b8,x:b3,y:b4,platform:Windows, +03000000790000004f18000000000000,ZDT Android Controller,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b3,y:b4,platform:Windows, +03000000120c00000500000000000000,Zeroplus Adapter,a:b2,b:b1,back:b11,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b9,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b0,righttrigger:b5,rightx:a3,righty:a2,start:b8,x:b3,y:b0,platform:Windows, +03000000120c0000101e000000000000,Zeroplus P4 Gamepad,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows, + +# Mac OS X +030000008f0e00000300000009010000,2 In 1 Joystick,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Mac OS X, +03000000c82d00000031000001000000,8BitDo Adapter,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Mac OS X, +03000000c82d00000531000000020000,8BitDo Adapter 2,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b2,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Mac OS X, +03000000c82d00000951000000010000,8BitDo Dogbone,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftx:a0,lefty:a1,rightx:a2,righty:a3,start:b11,platform:Mac OS X, +03000000c82d00000090000001000000,8BitDo FC30 Pro,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a5,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Mac OS X, +03000000c82d00001038000000010000,8BitDo FC30 Pro,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Mac OS X, +03000000c82d00001251000000010000,8BitDo Lite 2,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Mac OS X, +03000000c82d00001251000000020000,8BitDo Lite 2,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Mac OS X, +03000000c82d00001151000000010000,8BitDo Lite SE,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Mac OS X, +03000000c82d00001151000000020000,8BitDo Lite SE,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Mac OS X, +03000000a30c00002400000006020000,8BitDo M30,a:b2,b:b1,dpdown:+a4,dpleft:-a3,dpright:+a3,dpup:-a4,guide:b9,leftshoulder:b6,lefttrigger:b5,rightshoulder:b4,righttrigger:b7,start:b8,x:b3,y:b0,platform:Mac OS X, +03000000c82d00000151000000010000,8BitDo M30,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftx:a0,lefty:a1,rightshoulder:b6,righttrigger:b7,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Mac OS X, +03000000c82d00000650000001000000,8BitDo M30,a:b0,b:b1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b8,lefttrigger:b9,leftx:a0,lefty:a1,rightshoulder:b6,righttrigger:b7,start:b11,x:b3,y:b4,platform:Mac OS X, +03000000c82d00005106000000010000,8BitDo M30,a:b1,b:b0,back:b10,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,guide:b2,leftshoulder:b6,lefttrigger:a5,rightshoulder:b7,righttrigger:a4,start:b11,x:b4,y:b3,platform:Mac OS X, +03000000c82d00000451000000010000,8BitDo N30,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftx:a0,lefty:a1,rightx:a2,righty:a3,start:b11,platform:Mac OS X, +03000000c82d00001590000001000000,8BitDo N30 Pro 2,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b2,leftshoulder:b6,leftstick:b13,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a5,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Mac OS X, +03000000c82d00006528000000010000,8BitDo N30 Pro 2,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b2,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Mac OS X, +03000000c82d00006928000000010000,8BitDo N64,a:b0,b:b1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,righttrigger:b9,rightx:a2,righty:a3,start:b11,platform:Mac OS X, +030000003512000012ab000001000000,8BitDo NES30,a:b1,b:b0,back:b10,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b6,rightshoulder:b7,start:b11,x:b4,y:b3,platform:Mac OS X, +03000000c82d000012ab000001000000,8BitDo NES30,a:b0,b:b1,back:b10,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b6,rightshoulder:b7,start:b11,x:b3,y:b4,platform:Mac OS X, +03000000c82d00002028000000010000,8BitDo NES30,a:b0,b:b1,back:b10,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b6,rightshoulder:b7,start:b11,x:b3,y:b4,platform:Mac OS X, +03000000022000000090000001000000,8BitDo NES30 Pro,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Mac OS X, +03000000203800000900000000010000,8BitDo NES30 Pro,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Mac OS X, +03000000c82d00000190000001000000,8BitDo NES30 Pro,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Mac OS X, +03000000c82d00000751000000010000,8BitDo P30,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Mac OS X, +03000000c82d00000851000000010000,8BitDo P30,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Mac OS X, +03000000c82d00000660000000010000,8BitDo Pro 2,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Mac OS X, +03000000c82d00000660000000020000,8BitDo Pro 2,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Mac OS X, +03000000c82d00000131000001000000,8BitDo Receiver,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b2,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Mac OS X, +03000000c82d00000231000001000000,8BitDo Receiver,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b2,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Mac OS X, +03000000c82d00000331000001000000,8BitDo Receiver,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b2,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Mac OS X, +03000000c82d00000431000001000000,8BitDo Receiver,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b2,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Mac OS X, +03000000c82d00002867000000010000,8BitDo S30,a:b0,b:b1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b8,lefttrigger:b9,leftx:a0,lefty:a1,rightshoulder:b6,righttrigger:b7,rightx:a2,righty:a3,start:b10,x:b3,y:b4,platform:Mac OS X, +03000000102800000900000000000000,8BitDo SFC30 Joystick,a:b1,b:b0,back:b10,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b6,rightshoulder:b7,start:b11,x:b4,y:b3,platform:Mac OS X, +03000000c82d00000351000000010000,8BitDo SN30,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftx:a0,lefty:a1,rightshoulder:b7,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Mac OS X, +03000000c82d00001290000001000000,8BitDo SN30,a:b1,b:b0,back:b10,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b6,rightshoulder:b7,start:b11,x:b4,y:b3,platform:Mac OS X, +03000000c82d00004028000000010000,8BitDo SN30,a:b1,b:b0,back:b10,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b6,rightshoulder:b7,start:b11,x:b4,y:b3,platform:Mac OS X, +03000000c82d00000160000001000000,8BitDo SN30 Pro,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a5,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Mac OS X, +03000000c82d00000161000000010000,8BitDo SN30 Pro,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b2,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a5,start:b11,x:b4,y:b3,platform:Mac OS X, +03000000c82d00000260000001000000,8BitDo SN30 Pro Plus,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b2,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Mac OS X, +03000000c82d00000261000000010000,8BitDo SN30 Pro Plus,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b2,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Mac OS X, +03000000c82d00001230000000010000,8BitDo Ultimate,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,paddle1:b2,paddle2:b5,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Mac OS X, +03000000c82d00001530000001000000,8BitDo Ultimate C,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Mac OS X, +03000000c82d00001630000001000000,8BitDo Ultimate C,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Mac OS X, +03000000c82d00001730000001000000,8BitDo Ultimate C,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Mac OS X, +03000000c82d00001130000000020000,8BitDo Ultimate Wired,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,misc1:b26,paddle1:b24,paddle2:b25,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Mac OS X, +03000000c82d00001330000001000000,8BitDo Ultimate Wireless,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,misc1:b26,paddle1:b23,paddle2:b19,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Mac OS X, +03000000c82d00001330000000020000,8BitDo Ultimate Wireless Controller,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,misc1:b26,paddle1:b23,paddle2:b19,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Mac OS X, +03000000a00500003232000008010000,8BitDo Zero,a:b0,b:b1,back:b10,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b6,rightshoulder:b7,start:b11,x:b3,y:b4,platform:Mac OS X, +03000000a00500003232000009010000,8BitDo Zero,a:b0,b:b1,back:b10,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b6,rightshoulder:b7,start:b11,x:b3,y:b4,platform:Mac OS X, +03000000c82d00001890000001000000,8BitDo Zero 2,a:b1,b:b0,back:b10,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b6,rightshoulder:b7,start:b11,x:b4,y:b3,platform:Mac OS X, +03000000c82d00003032000000010000,8BitDo Zero 2,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftx:a0,lefty:a1,rightshoulder:b7,rightx:a2,righty:a31,start:b11,x:b4,y:b3,platform:Mac OS X, +03000000491900001904000001010000,Amazon Luna Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,misc1:b9,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b7,x:b2,y:b3,platform:Mac OS X, +03000000710100001904000000010000,Amazon Luna Controller,a:b0,b:b1,back:b11,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b10,leftshoulder:b4,leftstick:b7,lefttrigger:a5,leftx:a0,lefty:a1,misc1:b9,rightshoulder:b5,rightstick:b8,righttrigger:a4,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Mac OS X, +03000000a30c00002700000003030000,Astro City Mini,a:b2,b:b1,back:b8,dpdown:+a4,dpleft:-a3,dpright:+a3,dpup:-a4,rightshoulder:b4,righttrigger:b5,start:b9,x:b3,y:b0,platform:Mac OS X, +03000000a30c00002800000003030000,Astro City Mini,a:b2,b:b1,back:b8,leftx:a3,lefty:a4,rightshoulder:b4,righttrigger:b5,start:b9,x:b3,y:b0,platform:Mac OS X, +03000000050b00000045000031000000,ASUS Gamepad,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b7,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b8,righttrigger:a4,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Mac OS X, +03000000050b00000579000000010000,ASUS ROG Kunai 3,a:b0,b:b1,back:b12,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b14,leftshoulder:b6,leftstick:b15,lefttrigger:a5,leftx:a0,lefty:a1,misc1:b42,paddle1:b9,paddle2:b11,rightshoulder:b7,rightstick:b16,righttrigger:a4,rightx:a2,righty:a3,start:b13,x:b3,y:b4,platform:Mac OS X, +03000000050b00000679000000010000,ASUS ROG Kunai 3,a:b0,b:b1,back:b12,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b14,leftshoulder:b6,leftstick:b15,lefttrigger:a5,leftx:a0,lefty:a1,misc1:b23,rightshoulder:b7,rightstick:b16,righttrigger:a4,rightx:a2,righty:a3,start:b13,x:b3,y:b4,platform:Mac OS X, +03000000503200000110000047010000,Atari VCS Classic Controller,a:b0,b:b1,back:b4,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b3,start:b2,platform:Mac OS X, +03000000503200000210000047010000,Atari VCS Modern Controller,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b9,leftshoulder:b4,leftstick:b6,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,righttrigger:a4,rightx:a2,righty:a3,start:b8,x:b2,y:b3,platform:Mac OS X, +03000000c62400001a89000000010000,BDA MOGA XP5-X Plus,a:b0,b:b1,back:b12,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b14,leftshoulder:b6,leftstick:b15,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b16,righttrigger:a4,rightx:a2,righty:a3,start:b13,x:b3,y:b4,platform:Mac OS X, +03000000c62400001b89000000010000,BDA MOGA XP5-X Plus,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Mac OS X, +03000000d62000002a79000000010000,BDA PS4 Fightpad,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Mac OS X, +03000000120c0000200e000000010000,Brook Mars PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Mac OS X, +03000000120c0000210e000000010000,Brook Mars PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Mac OS X, +030000008305000031b0000000000000,Cideko AK08b,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Mac OS X, +03000000d8140000cecf000000000000,Cthulhu,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,start:b9,x:b0,y:b3,platform:Mac OS X, +03000000260900008888000088020000,Cyber Gadget GameCube Controller,a:b0,b:b1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b6,righttrigger:a5,rightx:a2,righty:a3~,start:b7,x:b2,y:b3,platform:Mac OS X, +03000000a306000022f6000001030000,Cyborg V3 Rumble Pad PlayStation Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:+a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:-a3,rightx:a2,righty:a4,start:b9,x:b0,y:b3,platform:Mac OS X, +03000000791d00000103000009010000,Dual Box Wii Classic Adapter,a:b2,b:b1,back:b8,dpdown:b14,dpleft:b15,dpright:b13,dpup:b12,guide:b10,leftshoulder:b6,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,righttrigger:b5,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Mac OS X, +030000006e0500000720000010020000,Elecom JC-W01U,a:b2,b:b3,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b1,platform:Mac OS X, +030000006f0e00008401000003010000,Faceoff Premiere Wired Pro Controller for Nintendo Switch,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b13,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Mac OS X, +03000000151900004000000001000000,Flydigi Vader 2,a:b14,b:b15,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b21,leftshoulder:b6,leftstick:b12,lefttrigger:a5,leftx:a0,lefty:a1,paddle1:b2,paddle2:b5,paddle3:b16,paddle4:b17,rightshoulder:b7,rightstick:b13,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b0,y:b1,platform:Mac OS X, +03000000b40400001124000001040000,Flydigi Vader 2,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b12,lefttrigger:a5,leftx:a0,lefty:a1,misc1:b14,paddle1:b2,paddle2:b5,paddle3:b16,paddle4:b17,rightshoulder:b7,rightstick:b13,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Mac OS X, +03000000b40400001224000003030000,Flydigi Vader 2,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b12,lefttrigger:a5,leftx:a0,lefty:a1,misc1:b2,paddle1:b16,paddle2:b17,paddle3:b14,paddle4:b15,rightshoulder:b7,rightstick:b13,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Mac OS X, +03000000790000004618000000010000,GameCube Controller Adapter,a:b4,b:b0,dpdown:b56,dpleft:b60,dpright:b52,dpup:b48,lefttrigger:a12,leftx:a0,lefty:a4,rightshoulder:b28,righttrigger:a16,rightx:a20,righty:a8,start:b36,x:b8,y:b12,platform:Mac OS X, +03000000ac0500001a06000002020000,GameSir-T3 2.02,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b15,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Mac OS X, +03000000ad1b000001f9000000000000,Gamestop BB070 X360 Controller,a:b0,b:b1,back:b9,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b10,leftshoulder:b4,leftstick:b6,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,righttrigger:a5,rightx:a3,righty:a4,start:b8,x:b2,y:b3,platform:Mac OS X, +0500000047532047616d657061640000,GameStop Gamepad,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Mac OS X, +03000000c01100000140000000010000,GameStop PS4 Fun Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Mac OS X, +030000006f0e00000102000000000000,GameStop Xbox 360 Controller,a:b0,b:b1,back:b9,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b10,leftshoulder:b4,leftstick:b6,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,righttrigger:a5,rightx:a3,righty:a4,start:b8,x:b2,y:b3,platform:Mac OS X, +03000000ff1100003133000007010000,GameWare PC Control Pad,a:b2,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:b7,rightx:a3,righty:a4,start:b11,x:b3,y:b0,platform:Mac OS X, +030000007d0400000540000001010000,Gravis Eliminator Pro,a:b1,b:b2,back:b8,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,start:b9,x:b0,y:b3,platform:Mac OS X, +03000000280400000140000000020000,Gravis GamePad Pro,a:b1,b:b2,back:b8,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,start:b9,x:b0,y:b3,platform:Mac OS X, +030000008f0e00000300000007010000,GreenAsia Joystick,a:b2,b:b3,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,lefttrigger:b5,leftx:a0,lefty:a1,rightshoulder:b6,righttrigger:b7,rightx:a3,righty:a2,start:b9,x:b0,y:b1,platform:Mac OS X, +030000000d0f00002d00000000100000,Hori Fighting Commander 3 Pro,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Mac OS X, +030000000d0f00005f00000000000000,Hori Fighting Commander 4 PS3,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Mac OS X, +030000000d0f00005f00000000010000,Hori Fighting Commander 4 PS3,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Mac OS X, +030000000d0f00005e00000000000000,Hori Fighting Commander 4 PS4,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Mac OS X, +030000000d0f00005e00000000010000,Hori Fighting Commander 4 PS4,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Mac OS X, +030000000d0f00008400000000010000,Hori Fighting Commander PS3,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Mac OS X, +030000000d0f00008500000000010000,Hori Fighting Commander PS3,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Mac OS X, +03000000341a00000302000014010000,Hori Fighting Stick Mini,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,start:b9,x:b0,y:b3,platform:Mac OS X, +030000000d0f00008800000000010000,Hori Fighting Stick mini 4 (PS3),a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,rightshoulder:b5,rightstick:b11,righttrigger:b7,start:b9,x:b0,y:b3,platform:Mac OS X, +030000000d0f00008700000000010000,Hori Fighting Stick mini 4 (PS4),a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,rightshoulder:b5,rightstick:b11,righttrigger:b7,start:b9,x:b0,y:b3,platform:Mac OS X, +030000000d0f00004d00000000000000,Hori Gem Pad 3,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Mac OS X, +030000000d0f00003801000008010000,Hori PC Engine Mini Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,start:b9,platform:Mac OS X, +030000000d0f00009200000000010000,Hori Pokken Tournament DX Pro,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,start:b9,x:b0,y:b3,platform:Mac OS X, +030000000d0f0000aa00000072050000,Hori Real Arcade Pro,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Mac OS X, +030000000d0f00000002000015010000,Hori Switch Split Pad Pro,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,misc1:b13,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Mac OS X, +030000000d0f00006e00000000010000,Horipad 4 PS3,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Mac OS X, +030000000d0f00006600000000010000,Horipad 4 PS4,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Mac OS X, +030000000d0f00006600000000000000,Horipad FPS Plus 4,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Mac OS X, +030000000d0f0000ee00000000010000,Horipad Mini 4,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Mac OS X, +03000000242e0000ff0b000000010000,Hyperkin N64 Adapter,a:b1,b:b2,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightx:a2,righty:a3,start:b9,platform:Mac OS X, +03000000790000004e95000000010000,Hyperkin N64 Controller Adapter,a:b1,b:b2,dpdown:b14,dpleft:b15,dpright:b13,dpup:b12,leftshoulder:b7,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightx:a5,righty:a2,start:b9,platform:Mac OS X, +03000000830500006020000000000000,iBuffalo Super Famicom Controller,a:b1,b:b0,back:b6,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b4,rightshoulder:b5,start:b7,x:b3,y:b2,platform:Mac OS X, +03000000ef0500000300000000020000,InterAct AxisPad,a:b2,b:b3,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:b7,rightx:a3,righty:a2,start:b11,x:b0,y:b1,platform:Mac OS X, +03000000fd0500000030000010010000,Interact GoPad,a:b3,b:b4,leftshoulder:b6,lefttrigger:b7,leftx:a0,lefty:a1,rightshoulder:b2,righttrigger:b5,x:b0,y:b1,platform:Mac OS X, +030000007e0500000620000001000000,Joy-Con (L),+leftx:h0.2,+lefty:h0.4,-leftx:h0.8,-lefty:h0.1,a:b0,b:b1,back:b13,leftshoulder:b4,leftstick:b10,rightshoulder:b5,start:b8,x:b2,y:b3,platform:Mac OS X, +030000007e0500000720000001000000,Joy-Con (R),+leftx:h0.2,+lefty:h0.4,-leftx:h0.8,-lefty:h0.1,a:b0,b:b1,back:b12,leftshoulder:b4,leftstick:b11,rightshoulder:b5,start:b9,x:b2,y:b3,platform:Mac OS X, +03000000242f00002d00000007010000,JYS Adapter,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Mac OS X, +030000006d04000019c2000000000000,Logitech Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Mac OS X, +030000006d04000016c2000000020000,Logitech Dual Action,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Mac OS X, +030000006d04000016c2000000030000,Logitech Dual Action,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Mac OS X, +030000006d04000016c2000014040000,Logitech Dual Action,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Mac OS X, +030000006d04000016c2000000000000,Logitech F310,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Mac OS X, +030000006d04000018c2000000000000,Logitech F510,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Mac OS X, +030000006d04000019c2000005030000,Logitech F710,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Mac OS X, +030000006d0400001fc2000000000000,Logitech F710,a:b0,b:b1,back:b9,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b10,leftshoulder:b4,leftstick:b6,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,righttrigger:a5,rightx:a3,righty:a4,start:b8,x:b2,y:b3,platform:Mac OS X, +030000006d04000018c2000000010000,Logitech RumblePad 2,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1~,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3~,start:b9,x:b0,y:b3,platform:Mac OS X, +03000000380700005032000000010000,Mad Catz PS3 Fightpad Pro,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Mac OS X, +03000000380700008433000000010000,Mad Catz PS3 Fightstick TE S Plus,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Mac OS X, +03000000380700005082000000010000,Mad Catz PS4 Fightpad Pro,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Mac OS X, +03000000380700008483000000010000,Mad Catz PS4 Fightstick TE S Plus,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Mac OS X, +03000000790000000600000007010000,Marvo GT-004,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Mac OS X, +030000008f0e00001330000011010000,Mayflash Controller Adapter,a:b2,b:b4,back:b16,dpdown:h0.8,dpleft:h0.2,dpright:h0.1,dpup:h0.4,leftshoulder:b12,lefttrigger:b16,leftx:a0,lefty:a2,rightshoulder:b14,rightx:a6~,righty:a4,start:b18,x:b0,y:b6,platform:Mac OS X, +03000000790000004318000000010000,Mayflash GameCube Adapter,a:b4,b:b0,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,lefttrigger:a12,leftx:a0,lefty:a4,rightshoulder:b28,righttrigger:a16,rightx:a20,righty:a8,start:b36,x:b8,y:b12,platform:Mac OS X, +03000000790000004418000000010000,Mayflash GameCube Controller,a:b1,b:b2,dpdown:b14,dpleft:b15,dpright:b13,dpup:b12,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b7,righttrigger:a4,rightx:a5,righty:a2,start:b9,x:b0,y:b3,platform:Mac OS X, +03000000242f00007300000000020000,Mayflash Magic NS,a:b1,b:b4,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:b8,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b0,y:b3,platform:Mac OS X, +0300000079000000d218000026010000,Mayflash Magic NS,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Mac OS X, +03000000d620000010a7000003010000,Mayflash Magic NS,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Mac OS X, +030000008f0e00001030000011010000,Mayflash Saturn Adapter,a:b0,b:b2,dpdown:b28,dpleft:b30,dpright:b26,dpup:b24,leftshoulder:b10,lefttrigger:b14,rightshoulder:b12,righttrigger:b4,start:b18,x:b6,y:b8,platform:Mac OS X, +0300000025090000e803000000000000,Mayflash Wii Classic Adapter,a:b1,b:b0,back:b8,dpdown:b13,dpleft:b12,dpright:b14,dpup:b11,guide:b10,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b2,platform:Mac OS X, +03000000790000000318000000010000,Mayflash Wii DolphinBar,a:b8,b:b12,back:b32,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b44,leftshoulder:b16,lefttrigger:b24,leftx:a0,lefty:a4,rightshoulder:b20,righttrigger:b28,rightx:a8,righty:a12,start:b36,x:b0,y:b4,platform:Mac OS X, +03000000790000000018000000000000,Mayflash Wii U Pro Adapter,a:b4,b:b8,back:b32,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b16,leftstick:b40,lefttrigger:b24,leftx:a0,lefty:a4,rightshoulder:b20,rightstick:b44,righttrigger:b28,rightx:a8,righty:a12,start:b36,x:b0,y:b12,platform:Mac OS X, +03000000790000000018000000010000,Mayflash Wii U Pro Adapter,a:b4,b:b8,back:b32,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b16,leftstick:b40,lefttrigger:b24,leftx:a0,lefty:a4,rightshoulder:b20,rightstick:b44,righttrigger:b28,rightx:a8,righty:a12,start:b36,x:b0,y:b12,platform:Mac OS X, +030000005e0400002800000002010000,Microsoft Dual Strike,a:b3,b:b2,back:b4,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,lefttrigger:b8,rightshoulder:b7,rightx:a0,righty:a1~,start:b5,x:b1,y:b0,platform:Mac OS X, +030000005e0400000300000006010000,Microsoft SideWinder,a:b0,b:b1,back:b9,leftshoulder:b6,lefttrigger:b7,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b2,start:b8,x:b3,y:b4,platform:Mac OS X, +030000005e0400000700000006010000,Microsoft SideWinder,a:b0,b:b1,back:b8,leftshoulder:b6,lefttrigger:b7,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b2,start:b9,x:b3,y:b4,platform:Mac OS X, +030000005e0400002700000001010000,Microsoft SideWinder Plug and Play,a:b0,b:b1,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,lefttrigger:b4,righttrigger:b5,x:b2,y:b3,platform:Mac OS X, +03000000d62000007162000001000000,Moga Pro 2,a:b0,b:b1,back:b9,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b7,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b8,righttrigger:a4,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Mac OS X, +03000000c62400002a89000000010000,MOGA XP5A Plus,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b21,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Mac OS X, +03000000c62400002b89000000010000,MOGA XP5A Plus,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Mac OS X, +03000000632500007505000000020000,NeoGeo mini PAD Controller,a:b1,b:b0,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,start:b9,x:b2,y:b3,platform:Mac OS X, +03000000921200004b46000003020000,NES 2-port Adapter,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,start:b11,platform:Mac OS X, +030000001008000001e5000006010000,NEXT SNES Controller,a:b2,b:b1,back:b8,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b4,rightshoulder:b5,righttrigger:b6,start:b9,x:b3,y:b0,platform:Mac OS X, +03000000d620000011a7000000020000,Nintendo Switch Core Plus Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Mac OS X, +03000000d620000011a7000010050000,Nintendo Switch PowerA Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Mac OS X, +030000007e0500000920000000000000,Nintendo Switch Pro Controller,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Mac OS X, +030000007e0500000920000001000000,Nintendo Switch Pro Controller,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Mac OS X, +050000007e05000009200000ff070000,Nintendo Switch Pro Controller,a:b1,b:b0,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b9,leftshoulder:b4,leftstick:b6,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,righttrigger:a5,rightx:a3,righty:a4,start:b10,x:b3,y:b2,platform:Mac OS X, +030000007e0500001920000001000000,NSO N64 Controller,+rightx:b8,+righty:b7,-rightx:b3,-righty:b2,a:b1,b:b0,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1,misc1:b13,rightshoulder:b5,righttrigger:b10,start:b9,platform:Mac OS X, +030000007e0500001720000001000000,NSO SNES Controller,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b15,start:b9,x:b2,y:b3,platform:Mac OS X, +03000000550900001472000025050000,NVIDIA Controller,a:b0,b:b1,back:b17,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b15,leftshoulder:b4,leftstick:b7,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b8,righttrigger:a4,rightx:a2,righty:a5,start:b6,x:b2,y:b3,platform:Mac OS X, +030000004b120000014d000000010000,Nyko Airflo EX,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b10,leftshoulder:b4,leftstick:b11,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b12,righttrigger:b7,rightx:a3,righty:a2,start:b9,x:b2,y:b3,platform:Mac OS X, +030000006f0e00000901000002010000,PDP PS3 Versus Fighting,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,start:b9,x:b0,y:b3,platform:Mac OS X, +030000008f0e00000300000000000000,Piranha Xtreme PS3 Controller,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b10,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b11,righttrigger:b5,rightx:a3,righty:a2,start:b9,x:b3,y:b0,platform:Mac OS X, +03000000666600006706000088020000,PlayStation Adapter,a:b2,b:b1,back:b8,dpdown:b14,dpleft:b15,dpright:b13,dpup:b12,leftshoulder:b6,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,righttrigger:b5,rightx:a2,righty:a3,start:b11,x:b3,y:b0,platform:Mac OS X, +030000004c050000da0c000000010000,PlayStation Classic Controller,a:b2,b:b1,back:b8,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b6,lefttrigger:b4,rightshoulder:b7,righttrigger:b5,start:b9,x:b3,y:b0,platform:Mac OS X, +030000004c0500003713000000010000,PlayStation Vita,a:b1,b:b2,back:b8,dpdown:b13,dpleft:b15,dpright:b14,dpup:b12,leftshoulder:b4,leftx:a0,lefty:a1,rightshoulder:b5,rightx:a3,righty:a4,start:b9,x:b0,y:b3,platform:Mac OS X, +03000000d62000006dca000000010000,PowerA Pro Ex,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Mac OS X, +03000000100800000300000006010000,PS2 Adapter,a:b2,b:b1,back:b8,leftshoulder:b6,leftstick:b10,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b11,righttrigger:b5,rightx:a4,righty:a3,start:b9,x:b3,y:b0,platform:Mac OS X, +030000004c0500006802000000000000,PS3 Controller,a:b14,b:b13,back:b0,dpdown:b6,dpleft:b7,dpright:b5,dpup:b4,guide:b16,leftshoulder:b10,leftstick:b1,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b11,rightstick:b2,righttrigger:b9,rightx:a2,righty:a3,start:b3,x:b15,y:b12,platform:Mac OS X, +030000004c0500006802000000010000,PS3 Controller,a:b14,b:b13,back:b0,dpdown:b6,dpleft:b7,dpright:b5,dpup:b4,guide:b16,leftshoulder:b10,leftstick:b1,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b11,rightstick:b2,righttrigger:b9,rightx:a2,righty:a3,start:b3,x:b15,y:b12,platform:Mac OS X, +030000004c0500006802000072050000,PS3 Controller,a:b14,b:b13,back:b0,dpdown:b6,dpleft:b7,dpright:b5,dpup:b4,guide:b16,leftshoulder:b10,leftstick:b1,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b11,rightstick:b2,righttrigger:b9,rightx:a2,righty:a3,start:b3,x:b15,y:b12,platform:Mac OS X, +030000004c050000a00b000000010000,PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Mac OS X, +030000004c050000c405000000000000,PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Mac OS X, +030000004c050000c405000000010000,PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Mac OS X, +030000004c050000cc09000000010000,PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Mac OS X, +030000004c050000e60c000000010000,PS5 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,misc1:b14,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,touchpad:b13,x:b0,y:b3,platform:Mac OS X, +030000004c050000f20d000000010000,PS5 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,misc1:b14,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,touchpad:b13,x:b0,y:b3,platform:Mac OS X, +050000004c050000e60c000000010000,PS5 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,touchpad:b13,x:b0,y:b3,platform:Mac OS X, +050000004c050000f20d000000010000,PS5 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,touchpad:b13,x:b0,y:b3,platform:Mac OS X, +030000005e040000e002000001000000,PXN P30 Pro Mobile,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Mac OS X, +03000000222c00000225000000010000,Qanba Dragon Arcade Joystick (PS3),a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Mac OS X, +03000000222c00000020000000010000,Qanba Drone Arcade Stick,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Mac OS X, +030000008916000000fd000000000000,Razer Onza TE,a:b0,b:b1,back:b9,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b10,leftshoulder:b4,leftstick:b6,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,righttrigger:a5,rightx:a3,righty:a4,start:b8,x:b2,y:b3,platform:Mac OS X, +03000000321500000204000000010000,Razer Panthera PS3 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Mac OS X, +03000000321500000104000000010000,Razer Panthera PS4,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Mac OS X, +03000000321500000010000000010000,Razer Raiju,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Mac OS X, +03000000321500000507000001010000,Razer Raiju Mobile,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b21,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Mac OS X, +03000000321500000011000000010000,Razer Raion PS4 Fightpad,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Mac OS X, +03000000321500000009000000020000,Razer Serval,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a4,rightx:a2,righty:a3,start:b7,x:b2,y:b3,platform:Mac OS X, +030000003215000000090000163a0000,Razer Serval,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a4,rightx:a2,righty:a3,start:b7,x:b2,y:b3,platform:Mac OS X, +0300000032150000030a000000000000,Razer Wildcat,a:b0,b:b1,back:b9,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b10,leftshoulder:b4,leftstick:b6,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,righttrigger:a5,rightx:a3,righty:a4,start:b8,x:b2,y:b3,platform:Mac OS X, +03000000632500008005000000010000,Redgear,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Mac OS X, +030000000d0f0000c100000072050000,Retro Bit Sega Genesis 6B Controller,a:b2,b:b1,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,lefttrigger:b8,rightshoulder:b6,righttrigger:b7,start:b9,x:b3,y:b0,platform:Mac OS X, +03000000921200004547000000020000,Retro Bit Sega Genesis Controller Adapter,a:b0,b:b2,dpdown:+a2,dpleft:-a0,dpright:+a0,dpup:-a2,lefttrigger:b14,rightshoulder:b10,righttrigger:b4,start:b12,x:b6,y:b8,platform:Mac OS X, +03000000790000001100000000000000,Retro Controller,a:b1,b:b2,back:b8,dpdown:+a4,dpleft:-a3,dpright:+a3,dpup:-a4,leftshoulder:b6,lefttrigger:b7,rightshoulder:b4,righttrigger:b5,start:b9,x:b0,y:b3,platform:Mac OS X, +03000000790000001100000005010000,Retro Controller,a:b1,b:b2,back:b8,dpdown:+a4,dpleft:-a3,dpright:+a3,dpup:-a4,leftshoulder:b6,lefttrigger:b7,rightshoulder:b5,righttrigger:b4,start:b9,x:b0,y:b3,platform:Mac OS X, +03000000830500006020000000010000,Retro Controller,a:b0,b:b1,back:b6,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b4,lefttrigger:b5,rightshoulder:b8,righttrigger:b9,start:b7,x:b2,y:b3,platform:Mac OS X, +03000000790000001100000006010000,Retrolink SNES Controller,a:b2,b:b1,back:b8,dpdown:+a4,dpleft:-a3,dpright:+a3,dpup:-a4,leftshoulder:b4,rightshoulder:b5,start:b9,x:b3,y:b0,platform:Mac OS X, +03000000341200000400000000000000,RetroUSB N64 RetroPort,+rightx:b8,+righty:b10,-rightx:b9,-righty:b11,a:b7,b:b6,dpdown:b2,dpleft:b1,dpright:b0,dpup:b3,leftshoulder:b13,lefttrigger:b5,leftx:a0,lefty:a1,rightshoulder:b12,start:b4,platform:Mac OS X, +030000006b140000010d000000010000,Revolution Pro Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Mac OS X, +030000006b140000130d000000010000,Revolution Pro Controller 3,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Mac OS X, +030000004c0500006802000002100000,Rii RK707,a:b14,b:b13,back:b0,dpdown:b6,dpleft:b7,dpright:b5,dpup:b4,guide:b16,leftshoulder:b10,leftstick:b2,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b11,rightstick:b3,righttrigger:b9,rightx:a2,righty:a3,start:b1,x:b15,y:b12,platform:Mac OS X, +03000000c6240000fefa000000000000,Rock Candy PS3,a:b0,b:b1,back:b9,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b10,leftshoulder:b4,leftstick:b6,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,righttrigger:a5,rightx:a3,righty:a4,start:b8,x:b2,y:b3,platform:Mac OS X, +030000006f0e00008701000005010000,Rock Candy Switch Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Mac OS X, +03000000e804000000a000001b010000,Samsung EIGP20,a:b1,b:b3,back:b15,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b20,leftshoulder:b11,leftx:a1,lefty:a3,rightshoulder:b12,rightx:a4,righty:a5,start:b16,x:b7,y:b9,platform:Mac OS X, +03000000730700000401000000010000,Sanwa PlayOnline Mobile,a:b0,b:b1,back:b2,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,start:b3,platform:Mac OS X, +03000000a30c00002500000006020000,Sega Genesis Mini 3B Controller,a:b2,b:b1,dpdown:+a4,dpleft:-a3,dpright:+a3,dpup:-a4,righttrigger:b5,start:b9,platform:Mac OS X, +03000000811700007e05000000000000,Sega Saturn,a:b2,b:b4,dpdown:b16,dpleft:b15,dpright:b14,dpup:b17,leftshoulder:b8,lefttrigger:a5,leftx:a0,lefty:a2,rightshoulder:b9,righttrigger:a4,start:b13,x:b0,y:b6,platform:Mac OS X, +03000000b40400000a01000000000000,Sega Saturn,a:b0,b:b1,back:b5,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,guide:b2,leftshoulder:b6,rightshoulder:b7,start:b8,x:b3,y:b4,platform:Mac OS X, +030000003512000021ab000000000000,SFC30 Joystick,a:b1,b:b0,back:b10,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b6,rightshoulder:b7,start:b11,x:b4,y:b3,platform:Mac OS X, +0300000000f00000f100000000000000,SNES RetroPort,a:b2,b:b3,back:b4,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b5,rightshoulder:b7,start:b6,x:b0,y:b1,platform:Mac OS X, +030000004c050000a00b000000000000,Sony DualShock 4 Adapter,a:b1,b:b2,back:b13,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Mac OS X, +030000004c050000cc09000000000000,Sony DualShock 4 V2,a:b1,b:b2,back:b13,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Mac OS X, +03000000d11800000094000000010000,Stadia Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a4,rightx:a2,righty:a3,start:b7,x:b2,y:b3,platform:Mac OS X, +030000005e0400008e02000001000000,Steam Virtual Gamepad,a:b0,b:b1,back:b9,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b4,leftstick:b6,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,righttrigger:a5,rightx:a3,righty:a4,start:b8,x:b2,y:b3,platform:Mac OS X, +03000000110100002014000000000000,SteelSeries Nimbus,a:b0,b:b1,dpdown:b9,dpleft:b11,dpright:b10,dpup:b8,guide:b12,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1~,rightshoulder:b5,righttrigger:b7,rightx:a2,righty:a3~,x:b2,y:b3,platform:Mac OS X, +03000000110100002014000001000000,SteelSeries Nimbus,a:b0,b:b1,dpdown:b9,dpleft:b11,dpright:b10,dpup:b8,guide:b12,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1~,rightshoulder:b5,righttrigger:b7,rightx:a2,righty:a3~,x:b2,y:b3,platform:Mac OS X, +03000000381000002014000001000000,SteelSeries Nimbus,a:b0,b:b1,dpdown:b9,dpleft:b11,dpright:b10,dpup:b8,guide:b12,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1~,rightshoulder:b5,righttrigger:b7,rightx:a2,righty:a3~,x:b2,y:b3,platform:Mac OS X, +05000000484944204465766963650000,SteelSeries Nimbus Plus,a:b0,b:b1,back:b15,dpdown:b11,dpleft:b13,dpright:b12,dpup:b10,guide:b16,leftshoulder:b4,leftstick:b8,lefttrigger:b6,leftx:a0,lefty:a1~,rightshoulder:b5,rightstick:b9,righttrigger:b7,rightx:a2,righty:a3~,start:b14,x:b2,y:b3,platform:Mac OS X, +050000004e696d6275732b0000000000,SteelSeries Nimbus Plus,a:b0,b:b1,back:b15,dpdown:b11,dpleft:b13,dpright:b12,dpup:b10,guide:b16,leftshoulder:b4,leftstick:b8,lefttrigger:b6,leftx:a0,lefty:a1~,rightshoulder:b5,rightstick:b9,righttrigger:b7,rightx:a2,righty:a3~,start:b14,x:b2,y:b3,platform:Mac OS X, +03000000381000003014000000000000,SteelSeries Stratus Duo,a:b0,b:b1,back:b9,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b10,leftshoulder:b4,leftstick:b6,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,righttrigger:a5,rightx:a3,righty:a4,start:b8,x:b2,y:b3,platform:Mac OS X, +03000000381000003114000000000000,SteelSeries Stratus Duo,a:b0,b:b1,back:b9,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b10,leftshoulder:b4,leftstick:b6,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,righttrigger:a5,rightx:a3,righty:a4,start:b8,x:b2,y:b3,platform:Mac OS X, +03000000110100001714000000000000,SteelSeries Stratus XL,a:b0,b:b1,dpdown:b9,dpleft:b11,dpright:b10,dpup:b8,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1~,rightshoulder:b5,righttrigger:b7,rightx:a2,righty:a3~,start:b12,x:b2,y:b3,platform:Mac OS X, +03000000110100001714000020010000,SteelSeries Stratus XL,a:b0,b:b1,dpdown:b9,dpleft:b11,dpright:b10,dpup:b8,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1~,rightshoulder:b5,righttrigger:b7,rightx:a2,righty:a3~,start:b12,x:b2,y:b3,platform:Mac OS X, +030000000d0f0000f600000000010000,Switch Hori Pad,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Mac OS X, +03000000457500002211000000010000,SZMY Power PC Gamepad,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Mac OS X, +03000000790000001c18000003100000,TGZ Controller,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Mac OS X, +03000000591c00002400000021000000,THEC64 Joystick,a:b0,b:b1,back:b6,leftshoulder:b4,leftx:a0,lefty:a4,rightshoulder:b5,start:b7,x:b2,y:b3,platform:Mac OS X, +03000000591c00002600000021000000,THEGamepad,a:b2,b:b1,back:b6,dpdown:+a4,dpleft:-a0,dpright:+a0,dpup:-a4,leftshoulder:b4,rightshoulder:b5,start:b7,x:b3,y:b0,platform:Mac OS X, +030000004f04000015b3000000000000,Thrustmaster Dual Analog 3.2,a:b0,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b5,leftx:a0,lefty:a1,rightshoulder:b6,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b1,y:b3,platform:Mac OS X, +030000004f0400000ed0000000020000,ThrustMaster eSwap Pro Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Mac OS X, +030000004f04000000b3000000000000,Thrustmaster Firestorm Dual Power,a:b0,b:b2,back:b9,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b11,lefttrigger:b5,leftx:a0,lefty:a1,rightshoulder:b6,righttrigger:b7,rightx:a2,righty:a3,start:b10,x:b1,y:b3,platform:Mac OS X, +03000000571d00002100000021000000,Tomee NES Controller Adapter,a:b1,b:b0,back:b2,dpdown:+a4,dpleft:-a0,dpright:+a0,dpup:-a4,start:b3,platform:Mac OS X, +03000000bd12000015d0000000010000,Tomee Retro Controller,a:b2,b:b1,back:b8,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b4,rightshoulder:b5,start:b9,x:b3,y:b0,platform:Mac OS X, +03000000bd12000015d0000000000000,Tomee SNES Controller,a:b2,b:b1,back:b8,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b4,rightshoulder:b5,start:b9,x:b3,y:b0,platform:Mac OS X, +03000000571d00002000000021000000,Tomee SNES Controller Adapter,a:b0,b:b1,back:b6,dpdown:+a4,dpleft:-a0,dpright:+a0,dpup:-a4,leftshoulder:b4,rightshoulder:b5,start:b7,x:b2,y:b3,platform:Mac OS X, +030000005f140000c501000000020000,Trust Gamepad,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Mac OS X, +03000000100800000100000000000000,Twin USB Joystick,a:b4,b:b2,back:b16,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b12,leftstick:b20,lefttrigger:b8,leftx:a0,lefty:a2,rightshoulder:b14,rightstick:b22,righttrigger:b10,rightx:a6,righty:a4,start:b18,x:b6,y:b0,platform:Mac OS X, +03000000632500002605000000010000,Uberwith Controller,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Mac OS X, +03000000151900005678000010010000,Uniplay U6,a:b3,b:b6,back:b25,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b17,leftstick:b31,lefttrigger:b21,leftx:a1,lefty:a3,rightshoulder:b19,rightstick:b33,righttrigger:b23,rightx:a4,righty:a5,start:b27,x:b11,y:b13,platform:Mac OS X, +030000006f0e00000302000025040000,Victrix PS4 Pro Fightstick,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,start:b9,x:b0,y:b3,platform:Mac OS X, +030000006f0e00000702000003060000,Victrix PS4 Pro Fightstick,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,start:b9,x:b0,y:b3,platform:Mac OS X, +050000005769696d6f74652028303000,Wii Remote,a:b4,b:b5,back:b7,dpdown:b3,dpleft:b0,dpright:b1,dpup:b2,guide:b8,leftshoulder:b11,lefttrigger:b12,leftx:a0,lefty:a1,start:b6,x:b10,y:b9,platform:Mac OS X, +050000005769696d6f74652028313800,Wii U Pro Controller,a:b16,b:b15,back:b7,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b8,leftshoulder:b19,leftstick:b23,lefttrigger:b21,leftx:a0,lefty:a1,rightshoulder:b20,rightstick:b24,righttrigger:b22,rightx:a2,righty:a3,start:b6,x:b18,y:b17,platform:Mac OS X, +030000005e0400008e02000000000000,Xbox 360 Controller,a:b0,b:b1,back:b9,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b10,leftshoulder:b4,leftstick:b6,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,righttrigger:a5,rightx:a3,righty:a4,start:b8,x:b2,y:b3,platform:Mac OS X, +030000006f0e00000104000000000000,Xbox 360 Controller,a:b0,b:b1,back:b9,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b10,leftshoulder:b4,leftstick:b6,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,righttrigger:a5,rightx:a3,righty:a4,start:b8,x:b2,y:b3,platform:Mac OS X, +03000000c6240000045d000000000000,Xbox 360 Controller,a:b0,b:b1,back:b9,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b10,leftshoulder:b4,leftstick:b6,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,righttrigger:a5,rightx:a3,righty:a4,start:b8,x:b2,y:b3,platform:Mac OS X, +030000005e0400000a0b000000000000,Xbox Adaptive Controller,a:b0,b:b1,back:b9,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b10,leftshoulder:b4,leftstick:b6,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,righttrigger:a5,rightx:a3,righty:a4,start:b8,x:b2,y:b3,platform:Mac OS X, +030000005e040000050b000003090000,Xbox Elite Controller Series 2,a:b0,b:b1,back:b31,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b53,leftshoulder:b6,leftstick:b13,lefttrigger:a6,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a5,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Mac OS X, +030000005e040000130b000011050000,Xbox One Controller,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Mac OS X, +030000005e040000200b000011050000,Xbox One Controller,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Mac OS X, +030000005e040000200b000013050000,Xbox One Controller,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Mac OS X, +030000005e040000200b000015050000,Xbox One Controller,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Mac OS X, +030000005e040000d102000000000000,Xbox One Controller,a:b0,b:b1,back:b9,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b10,leftshoulder:b4,leftstick:b6,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,righttrigger:a5,rightx:a3,righty:a4,start:b8,x:b2,y:b3,platform:Mac OS X, +030000005e040000dd02000000000000,Xbox One Controller,a:b0,b:b1,back:b9,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b10,leftshoulder:b4,leftstick:b6,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,righttrigger:a5,rightx:a3,righty:a4,start:b8,x:b2,y:b3,platform:Mac OS X, +030000005e040000e002000000000000,Xbox One Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b10,leftshoulder:b4,leftstick:b8,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Mac OS X, +030000005e040000e002000003090000,Xbox One Controller,a:b0,b:b1,back:b16,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b15,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Mac OS X, +030000005e040000e302000000000000,Xbox One Controller,a:b0,b:b1,back:b9,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b10,leftshoulder:b4,leftstick:b6,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,righttrigger:a5,rightx:a3,righty:a4,start:b8,x:b2,y:b3,platform:Mac OS X, +030000005e040000ea02000000000000,Xbox One Controller,a:b0,b:b1,back:b9,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b10,leftshoulder:b4,leftstick:b6,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,righttrigger:a5,rightx:a3,righty:a4,start:b8,x:b2,y:b3,platform:Mac OS X, +030000005e040000fd02000003090000,Xbox One Controller,a:b0,b:b1,back:b16,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b15,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Mac OS X, +03000000c62400003a54000000000000,Xbox One PowerA Controller,a:b0,b:b1,back:b9,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b10,leftshoulder:b4,leftstick:b6,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,righttrigger:a5,rightx:a3,righty:a4,start:b8,x:b2,y:b3,platform:Mac OS X, +030000005e040000130b000001050000,Xbox Series Controller,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Mac OS X, +030000005e040000130b000005050000,Xbox Series Controller,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Mac OS X, +030000005e040000130b000009050000,Xbox Series Controller,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,misc1:b15,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Mac OS X, +030000005e040000130b000013050000,Xbox Series Controller,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Mac OS X, +030000005e040000130b000015050000,Xbox Series Controller,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Mac OS X, +03000000172700004431000029010000,XiaoMi Controller,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b15,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a6,rightx:a2,righty:a5,start:b11,x:b3,y:b4,platform:Mac OS X, +03000000120c0000100e000000010000,Zeroplus P4,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Mac OS X, +03000000120c0000101e000000010000,Zeroplus P4,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Mac OS X, # Linux -0500000047532047616d657061640000,GameStop Gamepad,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Linux, -03000000ba2200002010000001010000,Jess Technology USB Game Controller,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b7,rightx:a3,righty:a2,start:b9,x:b3,y:b0,platform:Linux, -030000006d04000019c2000010010000,Logitech Cordless RumblePad 2,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux, -030000006d0400001dc2000014400000,Logitech F310 Gamepad (XInput),a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, -030000006d04000016c2000011010000,Logitech F310 Gamepad (DInput),x:b0,a:b1,b:b2,y:b3,back:b8,start:b9,dpleft:h0.8,dpdown:h0.0,dpdown:h0.4,dpright:h0.0,dpright:h0.2,dpup:h0.0,dpup:h0.1,leftshoulder:h0.0,dpup:h0.1,leftshoulder:h0.0,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,leftstick:b10,rightstick:b11,leftx:a0,lefty:a1,rightx:a2,righty:a3,platform:Linux, -030000006d0400001ec2000020200000,Logitech F510 Gamepad (XInput),a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, -030000006d04000019c2000011010000,Logitech F710 Gamepad (DInput),a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux, -030000006d0400001fc2000005030000,Logitech F710 Gamepad (XInput),a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +030000005e0400008e02000020010000,8BitDo Adapter,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +03000000c82d00000031000011010000,8BitDo Adapter,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b2,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux, +03000000c82d00000951000000010000,8BitDo Dogbone,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftx:a0,lefty:a1,rightx:a2,righty:a3,start:b11,platform:Linux, +03000000021000000090000011010000,8BitDo FC30 Pro,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Linux, +03000000c82d00000090000011010000,8BitDo FC30 Pro,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a5,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Linux, +05000000c82d00001038000000010000,8BitDo FC30 Pro,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Linux, +03000000c82d00001251000011010000,8BitDo Lite 2,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a5,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Linux, +05000000c82d00001251000000010000,8BitDo Lite 2,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Linux, +03000000c82d00001151000011010000,8BitDo Lite SE,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Linux, +05000000c82d00001151000000010000,8BitDo Lite SE,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Linux, +03000000c82d00000151000000010000,8BitDo M30,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftx:a0,lefty:a1,rightshoulder:b6,righttrigger:b7,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux, +03000000c82d00000650000011010000,8BitDo M30,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b2,leftshoulder:b6,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,righttrigger:b9,start:b11,x:b3,y:b4,platform:Linux, +05000000c82d00005106000000010000,8BitDo M30,a:b0,b:b1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b8,lefttrigger:b9,leftx:a0,lefty:a1,rightshoulder:b6,righttrigger:b7,start:b11,x:b3,y:b4,platform:Linux, +03000000c82d00000451000000010000,8BitDo N30,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftx:a0,lefty:a1,rightx:a2,righty:a3,start:b11,platform:Linux, +03000000c82d00001590000011010000,8BitDo N30 Pro 2,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Linux, +05000000c82d00006528000000010000,8BitDo N30 Pro 2,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Linux, +05000000c82d00006928000000010000,8BitDo N64,a:b0,b:b1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,righttrigger:b9,rightx:a2,righty:a3,start:b11,platform:Linux, +03000000008000000210000011010000,8BitDo NES30,a:b1,b:b2,back:b8,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,start:b9,x:b0,y:b3,platform:Linux, +03000000c82d00000310000011010000,8BitDo NES30,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b7,lefttrigger:b6,rightshoulder:b9,righttrigger:b8,start:b11,x:b3,y:b4,platform:Linux, +05000000c82d00008010000000010000,8BitDo NES30,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b7,lefttrigger:b6,rightshoulder:b9,righttrigger:b8,start:b11,x:b3,y:b4,platform:Linux, +03000000022000000090000011010000,8BitDo NES30 Pro,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Linux, +03000000c82d00000190000011010000,8BitDo NES30 Pro,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a5,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Linux, +05000000203800000900000000010000,8BitDo NES30 Pro,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Linux, +05000000c82d00002038000000010000,8BitDo NES30 Pro,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b2,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Linux, +03000000c82d00000751000000010000,8BitDo P30,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,lefttrigger:a8,leftx:a0,lefty:a1,rightshoulder:b7,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux, +05000000c82d00000851000000010000,8BitDo P30,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,lefttrigger:a8,leftx:a0,lefty:a1,rightshoulder:b7,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux, +03000000c82d00000660000011010000,8BitDo Pro 2,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Linux, +05000000c82d00000660000000010000,8BitDo Pro 2,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Linux, +03000000c82d00000631000014010000,8BitDo Pro 2 Wired Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +03000000c82d00001030000011010000,8BitDo Pro 2 Wired Controller,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Linux, +03000000c82d00000020000000000000,8BitDo Pro 2 Wired Controller for Xbox,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +06000000c82d00000020000006010000,8BitDo Pro 2 Wired Controller for Xbox,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +03000000c82d00000131000011010000,8BitDo Receiver,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b2,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Linux, +03000000c82d00000231000011010000,8BitDo Receiver,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b2,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Linux, +03000000c82d00000331000011010000,8BitDo Receiver,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b2,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Linux, +03000000c82d00000431000011010000,8BitDo Receiver,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b2,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Linux, +03000000c82d00002867000000010000,8BitDo S30,a:b0,b:b1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b8,lefttrigger:b9,leftx:a0,lefty:a1,rightshoulder:b6,righttrigger:b7,rightx:a2,righty:a3,start:b10,x:b3,y:b4,platform:Linux, +05000000c82d00000060000000010000,8BitDo SF30 Pro,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Linux, +05000000c82d00000061000000010000,8BitDo SF30 Pro,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b2,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Linux, +030000003512000012ab000010010000,8BitDo SFC30,a:b2,b:b1,back:b6,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b4,rightshoulder:b5,start:b7,x:b3,y:b0,platform:Linux, +030000003512000021ab000010010000,8BitDo SFC30,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftx:a0,lefty:a1,rightshoulder:b7,start:b11,x:b4,y:b3,platform:Linux, +03000000c82d000021ab000010010000,8BitDo SFC30,a:b1,b:b0,back:b10,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b6,rightshoulder:b7,start:b11,x:b4,y:b3,platform:Linux, +05000000102800000900000000010000,8BitDo SFC30,a:b1,b:b0,back:b10,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b6,rightshoulder:b7,start:b11,x:b4,y:b3,platform:Linux, +05000000c82d00003028000000010000,8BitDo SFC30,a:b1,b:b0,back:b10,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b6,rightshoulder:b7,start:b11,x:b4,y:b3,platform:Linux, +05000000c82d00000351000000010000,8BitDo SN30,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftx:a0,lefty:a1,rightshoulder:b7,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Linux, +03000000c82d00000160000000000000,8BitDo SN30 Pro,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b4,y:b3,platform:Linux, +03000000c82d00000160000011010000,8BitDo SN30 Pro,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Linux, +03000000c82d00000161000000000000,8BitDo SN30 Pro,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b4,y:b3,platform:Linux, +03000000c82d00001290000011010000,8BitDo SN30 Pro,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b4,y:b3,platform:Linux, +05000000c82d00000161000000010000,8BitDo SN30 Pro,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b2,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Linux, +05000000c82d00006228000000010000,8BitDo SN30 Pro,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Linux, +03000000c82d00000260000011010000,8BitDo SN30 Pro Plus,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Linux, +05000000c82d00000261000000010000,8BitDo SN30 Pro Plus,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Linux, +05000000202800000900000000010000,8BitDo SNES30,a:b1,b:b0,back:b10,dpdown:b122,dpleft:b119,dpright:b120,dpup:b117,leftshoulder:b6,rightshoulder:b7,start:b11,x:b4,y:b3,platform:Linux, +05000000c82d00001230000000010000,8BitDo Ultimate,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux, +03000000c82d00001730000011010000,8BitDo Ultimate a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux, +03000000c82d00001530000011010000,8BitDo Ultimate C,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux, +03000000c82d00001630000011010000,8BitDo Ultimate C,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux, +03000000c82d00001130000011010000,8BitDo Ultimate Wired,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,misc1:b26,paddle1:b24,paddle2:b25,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux, +03000000c82d00000760000011010000,8BitDo Ultimate Wireless,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Linux, +03000000c82d00001230000011010000,8BitDo Ultimate Wireless,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux, +03000000c82d00001330000011010000,8BitDo Ultimate Wireless,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,misc1:b26,paddle1:b23,paddle2:b19,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux, +03000000c82d00000121000011010000,8BitDo Xbox One SN30 Pro,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux, +05000000c82d00000121000000010000,8BitDo Xbox One SN30 Pro,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux, +05000000a00500003232000001000000,8BitDo Zero,a:b0,b:b1,back:b10,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b6,rightshoulder:b7,start:b11,x:b3,y:b4,platform:Linux, +05000000a00500003232000008010000,8BitDo Zero,a:b0,b:b1,back:b10,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b6,rightshoulder:b7,start:b11,x:b3,y:b4,platform:Linux, +03000000c82d00001890000011010000,8BitDo Zero 2,a:b1,b:b0,back:b10,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b6,rightshoulder:b7,start:b11,x:b4,y:b3,platform:Linux, +050000005e040000e002000030110000,8BitDo Zero 2,a:b0,b:b1,back:b6,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b4,rightshoulder:b5,start:b7,x:b2,y:b3,platform:Linux, +05000000c82d00003032000000010000,8BitDo Zero 2,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftx:a0,lefty:a1,rightshoulder:b7,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Linux, +03000000c01100000355000011010000,Acrux Gamepad,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux, +030000006f0e00003901000000430000,Afterglow Prismatic Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +030000006f0e00003901000013020000,Afterglow Prismatic Controller 048-007-NA,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +030000006f0e00001302000000010000,Afterglow Xbox 360 Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +030000006f0e00003901000020060000,Afterglow Xbox One Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +03000000100000008200000011010000,Akishop Customs PS360,a:b1,b:b2,back:b12,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,start:b9,x:b0,y:b3,platform:Linux, +030000007c1800000006000010010000,Alienware Dual Compatible Game PlayStation Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a3,righty:a2,start:b9,x:b0,y:b3,platform:Linux, +05000000491900000204000021000000,Amazon Fire Controller,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b17,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,misc1:b12,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux, +03000000491900001904000011010000,Amazon Luna Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,misc1:b9,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b7,x:b2,y:b3,platform:Linux, +05000000710100001904000000010000,Amazon Luna Controller,a:b0,b:b1,back:b9,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b10,leftshoulder:b4,leftstick:b7,lefttrigger:a5,leftx:a0,lefty:a1,misc1:b11,rightshoulder:b5,rightstick:b8,righttrigger:a4,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Linux, +03000000790000003018000011010000,Arcade Fightstick F300,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b7,start:b9,x:b0,y:b3,platform:Linux, +03000000a30c00002700000011010000,Astro City Mini,a:b2,b:b1,back:b8,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,rightshoulder:b4,righttrigger:b5,start:b9,x:b3,y:b0,platform:Linux, +03000000a30c00002800000011010000,Astro City Mini,a:b2,b:b1,back:b8,leftx:a0,lefty:a1,rightshoulder:b4,righttrigger:b5,start:b9,x:b3,y:b0,platform:Linux, +05000000050b00000045000031000000,ASUS Gamepad,a:b0,b:b1,back:b9,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b6,leftshoulder:b4,leftstick:b7,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b8,righttrigger:a4,rightx:a2,righty:a3,start:b10,x:b2,y:b3,platform:Linux, +05000000050b00000045000040000000,ASUS Gamepad,a:b0,b:b1,back:b9,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b6,leftshoulder:b4,leftstick:b7,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b8,righttrigger:a4,rightx:a2,righty:a3,start:b10,x:b2,y:b3,platform:Linux, +03000000050b00000579000011010000,ASUS ROG Kunai 3,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,misc1:b36,paddle1:b52,paddle2:b53,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux, +05000000050b00000679000000010000,ASUS ROG Kunai 3,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,misc1:b21,paddle1:b22,paddle2:b23,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux, +03000000503200000110000000000000,Atari Classic Controller,a:b0,b:b1,back:b2,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b4,start:b3,platform:Linux, +03000000503200000110000011010000,Atari Classic Controller,a:b0,b:b1,back:b2,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b4,start:b3,platform:Linux, +05000000503200000110000000000000,Atari Classic Controller,a:b0,b:b1,back:b2,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b4,start:b3,platform:Linux, +05000000503200000110000044010000,Atari Classic Controller,a:b0,b:b1,back:b2,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b4,start:b3,platform:Linux, +05000000503200000110000046010000,Atari Classic Controller,a:b0,b:b1,back:b2,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b4,start:b3,platform:Linux, +03000000503200000210000000000000,Atari Controller,a:b0,b:b1,back:b9,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b10,leftshoulder:b4,leftstick:b6,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,righttrigger:a4,rightx:a2,righty:a3,start:b8,x:b2,y:b3,platform:Linux, +03000000503200000210000011010000,Atari Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b3,y:b2,platform:Linux, +05000000503200000210000000000000,Atari Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b3,y:b2,platform:Linux, +05000000503200000210000045010000,Atari Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b3,y:b2,platform:Linux, +05000000503200000210000046010000,Atari Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b3,y:b2,platform:Linux, +05000000503200000210000047010000,Atari VCS Modern Controller,a:b0,b:b1,back:b9,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b10,leftshoulder:b4,leftstick:b6,lefttrigger:+a5,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,righttrigger:-a4,rightx:a2,righty:a3,start:b8,x:b2,y:b3,platform:Linux, +03000000c62400001b89000011010000,BDA MOGA XP5X Plus,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux, +03000000d62000002a79000011010000,BDA PS4 Fightpad,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Linux, +03000000c21100000791000011010000,Be1 GC101 Controller 1.03,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Linux, +03000000c31100000791000011010000,Be1 GC101 Controller 1.03,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux, +030000005e0400008e02000003030000,Be1 GC101 Xbox 360,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +03000000bc2000004d50000011010000,BEITONG A1T2 BFM,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux, +05000000bc2000000055000001000000,BETOP AX1 BFM,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux, +03000000bc2000006412000011010000,Betop Controller,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b30,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Linux, +030000006b1400000209000011010000,Bigben,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux, +03000000120c0000200e000011010000,Brook Mars PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Linux, +03000000120c0000210e000011010000,Brook Mars PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux, +03000000120c0000f70e000011010000,Brook Universal Fighting Board,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,rightshoulder:b5,rightstick:b11,righttrigger:b7,start:b9,x:b0,y:b3,platform:Linux, +03000000e82000006058000001010000,Cideko AK08b,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Linux, +030000000b0400003365000000010000,Competition Pro,a:b0,b:b1,back:b2,leftx:a0,lefty:a1,start:b3,platform:Linux, +03000000260900008888000000010000,Cyber Gadget GameCube Controller,a:b0,b:b1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b6,righttrigger:a5,rightx:a2,righty:a3~,start:b7,x:b2,y:b3,platform:Linux, +03000000a306000022f6000011010000,Cyborg V3 Rumble,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:+a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:-a3,rightx:a2,righty:a4,start:b9,x:b0,y:b3,platform:Linux, +03000000791d00000103000010010000,Dual Box Wii Classic Adapter,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b10,leftshoulder:b6,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,righttrigger:b5,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Linux, +030000006f0e00003001000001010000,EA Sports PS3 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux, +03000000c11100000191000011010000,EasySMX,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Linux, +03000000242f00009100000000010000,EasySMX ESM-9101,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +030000006e0500000320000010010000,Elecom U3613M,a:b2,b:b3,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b8,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:b7,rightx:a2,righty:a3,start:b11,x:b0,y:b1,platform:Linux, +030000006e0500000720000010010000,Elecom W01U,a:b2,b:b3,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b1,platform:Linux, +030000007d0400000640000010010000,Eliminator AfterShock,a:b1,b:b2,back:b9,dpdown:+a3,dpleft:-a5,dpright:+a5,dpup:-a3,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b7,rightx:a4,righty:a2,start:b8,x:b0,y:b3,platform:Linux, +03000000430b00000300000000010000,EMS Production PS2 Adapter,a:b2,b:b1,back:b8,dpdown:b14,dpleft:b15,dpright:b13,dpup:b12,leftshoulder:b6,leftstick:b10,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b11,righttrigger:b5,rightx:a5,righty:a2,start:b9,x:b3,y:b0,platform:Linux, +03005036852100000201000010010000,Final Fantasy XIV Online Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux, +03000000b40400001124000011010000,Flydigi Vader 2,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b12,lefttrigger:a5,leftx:a0,lefty:a1,misc1:b14,paddle1:b2,paddle2:b5,paddle3:b16,paddle4:b17,rightshoulder:b7,rightstick:b13,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux, +03000000b40400001224000011010000,Flydigi Vader 2,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b12,lefttrigger:a5,leftx:a0,lefty:a1,misc1:b2,paddle1:b16,paddle2:b17,paddle3:b14,paddle4:b15,rightshoulder:b7,rightstick:b13,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux, +05000000151900004000000001000000,Flydigi Vader 2,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b21,leftshoulder:b6,leftstick:b12,lefttrigger:a5,leftx:a0,lefty:a1,misc1:b14,paddle1:b2,paddle2:b5,paddle3:b16,paddle4:b17,rightshoulder:b7,rightstick:b13,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux, +030000007e0500003703000000000000,GameCube Adapter,a:b0,b:b1,dpdown:b9,dpleft:b10,dpright:b11,dpup:b8,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b6,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b3,y:b2,platform:Linux, +19000000030000000300000002030000,GameForce Controller,a:b1,b:b0,back:b8,dpdown:b11,dpleft:b12,dpright:b13,dpup:b10,guide:b16,leftshoulder:b4,leftstick:b14,lefttrigger:b6,leftx:a1,lefty:a0,rightshoulder:b5,rightstick:b15,righttrigger:b7,rightx:a3,righty:a2,start:b9,x:b2,y:b3,platform:Linux, +03000000ac0500005b05000010010000,GameSir G3w,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Linux, +03000000bc2000000055000011010000,GameSir G3w,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux, +03000000558500001b06000010010000,GameSir G4 Pro,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux, +05000000ac0500002d0200001b010000,GameSir G4s,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b33,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux, +03000000ac0500007a05000011010000,GameSir G5,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b16,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux, +03000000bc2000005656000011010000,GameSir T4w,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux, +03000000ac0500001a06000011010000,GameSir-T3 2.02,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b15,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux, +0500000047532047616d657061640000,GameStop Gamepad,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Linux, +030000006f0e00000104000000010000,Gamestop Logic3 Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +030000008f0e00000800000010010000,Gasia PlayStation Gamepad,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Linux, +03000000451300000010000010010000,Genius Maxfire Grandias 12,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Linux, +190000004b4800000010000000010000,GO-Advance Controller,a:b1,b:b0,back:b10,dpdown:b7,dpleft:b8,dpright:b9,dpup:b6,leftshoulder:b4,lefttrigger:b12,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b13,start:b15,x:b2,y:b3,platform:Linux, +190000004b4800000010000001010000,GO-Advance Controller,a:b1,b:b0,back:b12,dpdown:b9,dpleft:b10,dpright:b11,dpup:b8,leftshoulder:b4,leftstick:b13,lefttrigger:b14,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b16,righttrigger:b15,start:b17,x:b2,y:b3,platform:Linux, +190000004b4800000011000000010000,GO-Super Controller,a:b1,b:b0,back:b12,dpdown:b9,dpleft:b10,dpright:b11,dpup:b8,guide:b16,leftshoulder:b4,leftstick:b14,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b15,righttrigger:b7,rightx:a2,righty:a3,start:b13,x:b2,y:b3,platform:Linux, +03000000f0250000c183000010010000,Goodbetterbest Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux, +0300000079000000d418000000010000,GPD Win 2 Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +030000007d0400000540000000010000,Gravis Eliminator Pro,a:b1,b:b2,back:b8,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,start:b9,x:b0,y:b3,platform:Linux, +03000000280400000140000000010000,Gravis GamePad Pro,a:b1,b:b2,back:b8,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,start:b9,x:b0,y:b3,platform:Linux, +030000008f0e00000610000000010000,GreenAsia Electronics Controller,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b9,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b10,righttrigger:b5,rightx:a3,righty:a2,start:b11,x:b3,y:b0,platform:Linux, +030000008f0e00001200000010010000,GreenAsia Joystick,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b5,leftx:a0,lefty:a1,rightshoulder:b6,rightstick:b11,righttrigger:b7,rightx:a3,righty:a2,start:b9,x:b2,y:b3,platform:Linux, +0500000047532067616d657061640000,GS gamepad,a:b0,b:b1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Linux, +03000000f0250000c383000010010000,GT VX2,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Linux, +06000000adde0000efbe000002010000,Hidromancer Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +03000000d81400000862000011010000,HitBox PS3 PC Analog Mode,a:b1,b:b2,back:b8,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,guide:b9,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,start:b12,x:b0,y:b3,platform:Linux, +03000000c9110000f055000011010000,HJC Gamepad,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Linux, +03000000632500002605000010010000,HJDX,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a5,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux, +030000000d0f00000d00000000010000,Hori,a:b0,b:b6,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b10,leftshoulder:b3,rightshoulder:b7,start:b9,x:b1,y:b2,platform:Linux, +030000000d0f00006d00000020010000,Hori EDGE 301,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:+a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:+a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +030000000d0f00008400000011010000,Hori Fighting Commander,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Linux, +030000000d0f00005f00000011010000,Hori Fighting Commander 4 PS3,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux, +030000000d0f00005e00000011010000,Hori Fighting Commander 4 PS4,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Linux, +030000000d0f00005001000009040000,Hori Fighting Commander OCTA Xbox One,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +030000000d0f00008500000010010000,Hori Fighting Commander PS3,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux, +030000000d0f00008600000002010000,Hori Fighting Commander Xbox 360,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b10,leftshoulder:b4,leftstick:b11,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b12,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Linux, +030000000d0f00003701000013010000,Hori Fighting Stick Mini,a:b1,b:b0,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,lefttrigger:a2,rightshoulder:b5,righttrigger:a5,start:b7,x:b3,y:b2,platform:Linux, +030000000d0f00008800000011010000,Hori Fighting Stick mini 4 (PS3),a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,rightshoulder:b5,rightstick:b11,righttrigger:b7,start:b9,x:b0,y:b3,platform:Linux, +030000000d0f00008700000011010000,Hori Fighting Stick mini 4 (PS4),a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,rightshoulder:b5,rightstick:b11,righttrigger:a4,start:b9,x:b0,y:b3,platform:Linux, +030000000d0f00001000000011010000,Hori Fightstick 3,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,start:b9,x:b0,y:b3,platform:Linux, +03000000ad1b000003f5000033050000,Hori Fightstick VX,+leftx:h0.2,+lefty:h0.4,-leftx:h0.8,-lefty:h0.1,a:b0,b:b1,back:b8,guide:b10,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,start:b9,x:b2,y:b3,platform:Linux, +030000000d0f00004d00000011010000,Hori Gem Pad 3,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux, +03000000ad1b000001f5000033050000,Hori Pad EX Turbo 2,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +030000000d0f00003801000011010000,Hori PC Engine Mini Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,start:b9,platform:Linux, +030000000d0f00009200000011010000,Hori Pokken Tournament DX Pro,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,start:b9,x:b0,y:b3,platform:Linux, +030000000d0f0000aa00000011010000,Hori Real Arcade Pro,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Linux, +030000000d0f00001100000011010000,Hori Real Arcade Pro 3,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux, +030000000d0f00002200000011010000,Hori Real Arcade Pro 3,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,start:b9,x:b0,y:b3,platform:Linux, +030000000d0f00006a00000011010000,Hori Real Arcade Pro 4,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Linux, +030000000d0f00006b00000011010000,Hori Real Arcade Pro 4,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux, +030000000d0f00001600000000010000,Hori Real Arcade Pro EXSE,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b10,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,start:b9,x:b2,y:b3,platform:Linux, +030000000d0f00008501000015010000,Hori Switch Split Pad Pro,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +030000000d0f00006e00000011010000,Horipad 4 PS3,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux, +030000000d0f00006600000011010000,Horipad 4 PS4,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Linux, +030000000d0f0000ee00000011010000,Horipad Mini 4,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Linux, +030000000d0f00006700000001010000,Horipad One,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +030000000d0f0000c100000011010000,Horipad S,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b13,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux, +050000000d0f0000f600000001000000,Horipad Switch Pro Controller,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Linux, +03000000341a000005f7000010010000,HuiJia GameCube Controller Adapter,a:b1,b:b2,dpdown:b14,dpleft:b15,dpright:b13,dpup:b12,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b7,righttrigger:a4,rightx:a5,righty:a2,start:b9,x:b0,y:b3,platform:Linux, +05000000242e00000b20000001000000,Hyperkin Admiral N64 Controller,+rightx:b11,+righty:b13,-rightx:b8,-righty:b12,a:b1,b:b0,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,lefttrigger:b14,leftx:a0,lefty:a1,rightshoulder:b5,start:b9,platform:Linux, +03000000242e0000ff0b000011010000,Hyperkin N64 Adapter,a:b1,b:b2,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightx:a2,righty:a3,start:b9,platform:Linux, +03000000242e00006a38000010010000,Hyperkin Trooper 2,a:b0,b:b1,back:b4,leftshoulder:b2,leftx:a0,lefty:a1,rightshoulder:b3,start:b5,platform:Linux, +03000000242e00008816000001010000,Hyperkin X91,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +03000000f00300008d03000011010000,HyperX Clutch,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux, +03000000830500006020000010010000,iBuffalo Super Famicom Controller,a:b1,b:b0,back:b6,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b4,rightshoulder:b5,start:b7,x:b3,y:b2,platform:Linux, +050000006964726f69643a636f6e0000,idroidcon Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux, +03000000b50700001503000010010000,Impact,a:b2,b:b3,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b5,leftx:a0,lefty:a1,rightshoulder:b6,rightstick:b11,righttrigger:b7,rightx:a3,righty:a2,start:b9,x:b0,y:b1,platform:Linux, +03000000d80400008200000003000000,IMS PCU0,a:b1,b:b0,back:b4,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,start:b5,x:b3,y:b2,platform:Linux, +03000000120c00000500000010010000,InterAct AxisPad,a:b2,b:b3,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:b7,rightx:a3,righty:a2,start:b11,x:b0,y:b1,platform:Linux, +03000000ef0500000300000000010000,InterAct AxisPad,a:b2,b:b3,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:b7,rightx:a3,righty:a2,start:b11,x:b0,y:b1,platform:Linux, +03000000fd0500000030000000010000,InterAct GoPad,a:b3,b:b4,leftshoulder:b6,lefttrigger:b7,leftx:a0,lefty:a1,rightshoulder:b2,righttrigger:b5,x:b0,y:b1,platform:Linux, +03000000fd0500002a26000000010000,InterAct HammerHead FX,a:b3,b:b4,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b2,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b5,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b0,y:b1,platform:Linux, +0500000049190000020400001b010000,Ipega PG 9069,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b161,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux, +03000000632500007505000011010000,Ipega PG 9099,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Linux, +0500000049190000030400001b010000,Ipega PG9099,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux, +05000000491900000204000000000000,Ipega PG9118,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux, +03000000300f00001001000010010000,Jess Tech Dual Analog Rumble,a:b2,b:b3,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b5,leftx:a0,lefty:a1,rightshoulder:b6,rightstick:b11,righttrigger:b7,rightx:a3,righty:a2,start:b9,x:b0,y:b1,platform:Linux, +03000000300f00000b01000010010000,Jess Tech GGE909 PC Recoil,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a3,righty:a2,start:b9,x:b3,y:b0,platform:Linux, +03000000ba2200002010000001010000,Jess Technology Controller,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b7,rightx:a3,righty:a2,start:b9,x:b3,y:b0,platform:Linux, +030000007e0500000620000001000000,Joy-Con (L),+leftx:h0.2,+lefty:h0.4,-leftx:h0.8,-lefty:h0.1,a:b0,b:b1,back:b13,leftshoulder:b4,leftstick:b10,rightshoulder:b5,start:b8,x:b2,y:b3,platform:Linux, +050000007e0500000620000001000000,Joy-Con (L),+leftx:h0.2,+lefty:h0.4,-leftx:h0.8,-lefty:h0.1,a:b0,b:b1,back:b13,leftshoulder:b4,leftstick:b10,rightshoulder:b5,start:b8,x:b2,y:b3,platform:Linux, +030000007e0500000720000001000000,Joy-Con (R),+leftx:h0.2,+lefty:h0.4,-leftx:h0.8,-lefty:h0.1,a:b0,b:b1,back:b12,leftshoulder:b4,leftstick:b11,rightshoulder:b5,start:b9,x:b2,y:b3,platform:Linux, +050000007e0500000720000001000000,Joy-Con (R),+leftx:h0.2,+lefty:h0.4,-leftx:h0.8,-lefty:h0.1,a:b0,b:b1,back:b12,leftshoulder:b4,leftstick:b11,rightshoulder:b5,start:b9,x:b2,y:b3,platform:Linux, +03000000bd12000003c0000010010000,Joypad Alpha Shock,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux, +03000000242f00002d00000011010000,JYS Adapter,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Linux, +03000000242f00008a00000011010000,JYS Adapter,a:b1,b:b4,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:b8,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b0,y:b3,platform:Linux, +030000006f0e00000103000000020000,Logic3 Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +030000006d040000d1ca000000000000,Logitech Chillstream,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux, +030000006d040000d1ca000011010000,Logitech Chillstream,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux, +030000006d04000019c2000010010000,Logitech Cordless RumblePad 2,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux, +030000006d04000016c2000010010000,Logitech Dual Action,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux, +030000006d04000016c2000011010000,Logitech Dual Action,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux, +030000006d0400001dc2000014400000,Logitech F310,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +030000006d0400001ec2000019200000,Logitech F510,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +030000006d0400001ec2000020200000,Logitech F510,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +030000006d04000019c2000011010000,Logitech F710,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux, +030000006d0400001fc2000005030000,Logitech F710,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +030000006d04000018c2000010010000,Logitech RumblePad 2,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux, +030000006d04000011c2000010010000,Logitech WingMan Cordless RumblePad,a:b0,b:b1,back:b2,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b5,leftshoulder:b6,lefttrigger:b9,leftx:a0,lefty:a1,rightshoulder:b7,righttrigger:b10,rightx:a3,righty:a4,start:b8,x:b3,y:b4,platform:Linux, +030000006d0400000ac2000010010000,Logitech WingMan RumblePad,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,lefttrigger:b7,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b2,rightx:a3,righty:a4,x:b3,y:b4,platform:Linux, +05000000380700006652000025010000,Mad Catz CTRLR,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux, +03000000380700008532000010010000,Mad Catz Fightpad,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:b5,rightshoulder:b6,righttrigger:b7,start:b9,x:b0,y:b3,platform:Linux, +03000000380700005032000011010000,Mad Catz Fightpad Pro PS3,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux, +03000000380700005082000011010000,Mad Catz Fightpad Pro PS4,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Linux, +03000000ad1b00002ef0000090040000,Mad Catz Fightpad SFxT,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,lefttrigger:a2,rightshoulder:b5,righttrigger:a5,start:b7,x:b2,y:b3,platform:Linux, +03000000380700008034000011010000,Mad Catz Fightstick PS3,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux, +03000000380700008084000011010000,Mad Catz Fightstick PS4,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Linux, +03000000380700008433000011010000,Mad Catz Fightstick TE S PS3,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux, +03000000380700008483000011010000,Mad Catz Fightstick TE S PS4,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Linux, +03000000380700001888000010010000,Mad Catz Joystick,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux, +03000000380700003888000010010000,Mad Catz Joystick,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:a0,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux, +03000000380700001647000010040000,Mad Catz Xbox 360 Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +03000000380700003847000090040000,Mad Catz Xbox 360 Controller,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b10,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Linux, +03000000ad1b000016f0000090040000,Mad Catz Xbox 360 Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +03000000120c00000500000000010000,Manta Dualshock 2,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a3,righty:a2,start:b9,x:b2,y:b3,platform:Linux, +030000008f0e00001330000010010000,Mayflash Controller Adapter,a:b1,b:b2,back:b8,dpdown:h0.8,dpleft:h0.2,dpright:h0.1,dpup:h0.4,leftshoulder:b6,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightx:a3~,righty:a2,start:b9,x:b0,y:b3,platform:Linux, +03000000790000004318000010010000,Mayflash GameCube Adapter,a:b1,b:b0,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b7,righttrigger:a4,rightx:a5,righty:a2,start:b9,x:b2,y:b3,platform:Linux, +03000000790000004418000010010000,Mayflash GameCube Controller,a:b1,b:b0,dpdown:b14,dpleft:b15,dpright:b13,dpup:b12,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b7,righttrigger:a4,rightx:a5,righty:a2,start:b9,x:b2,y:b3,platform:Linux, +03000000242f00007300000011010000,Mayflash Magic NS,a:b1,b:b4,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:b8,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b0,y:b3,platform:Linux, +0300000079000000d218000011010000,Mayflash Magic NS,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux, +03000000d620000010a7000011010000,Mayflash Magic NS,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux, +03000000242f0000f700000001010000,Mayflash Magic S Pro,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +030000008f0e00001030000010010000,Mayflash Saturn Adapter,a:b0,b:b1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b5,lefttrigger:b7,rightshoulder:b6,righttrigger:b2,start:b9,x:b3,y:b4,platform:Linux, +0300000025090000e803000001010000,Mayflash Wii Classic Adapter,a:b1,b:b0,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b10,leftshoulder:a4,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:a5,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b2,platform:Linux, +03000000790000000318000011010000,Mayflash Wii DolphinBar,a:b2,b:b3,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b11,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b1,platform:Linux, +03000000790000000018000011010000,Mayflash Wii U Pro Adapter,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux, +03000000b50700001203000010010000,Mega World Logic 3 Controller,a:b2,b:b3,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b5,leftx:a0,lefty:a1,rightshoulder:b6,rightstick:b11,righttrigger:b7,rightx:a3,righty:a2,start:b9,x:b0,y:b1,platform:Linux, +03000000b50700004f00000000010000,Mega World Logic 3 Controller,a:b2,b:b3,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b5,leftx:a0,lefty:a1,rightshoulder:b6,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b1,platform:Linux, +03000000780000000600000010010000,Microntek Joystick,a:b2,b:b1,back:b8,leftshoulder:b6,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,righttrigger:b5,start:b9,x:b3,y:b0,platform:Linux, +030000005e0400002800000000010000,Microsoft Dual Strike,a:b3,b:b2,back:b4,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,lefttrigger:b8,rightshoulder:b7,rightx:a0,righty:a1~,start:b5,x:b1,y:b0,platform:Linux, +030000005e0400000300000000010000,Microsoft SideWinder,a:b0,b:b1,back:b9,leftshoulder:b6,lefttrigger:b7,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b2,start:b8,x:b3,y:b4,platform:Linux, +030000005e0400000700000000010000,Microsoft SideWinder,a:b0,b:b1,back:b8,leftshoulder:b6,lefttrigger:b7,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b2,start:b9,x:b3,y:b4,platform:Linux, +030000005e0400000e00000000010000,Microsoft SideWinder Freestyle Pro,a:b0,b:b1,back:b9,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,rightshoulder:b7,start:b8,x:b3,y:b4,platform:Linux, +030000005e0400002700000000010000,Microsoft SideWinder Plug and Play,a:b0,b:b1,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,lefttrigger:b4,righttrigger:b5,x:b2,y:b3,platform:Linux, +030000005e0400008502000000010000,Microsoft Xbox,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b5,leftstick:b8,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b2,rightstick:b9,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b3,y:b4,platform:Linux, +030000005e0400008902000021010000,Microsoft Xbox,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b5,leftstick:b8,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b2,rightstick:b9,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b3,y:b4,platform:Linux, +030000005e0400008e02000001000000,Microsoft Xbox 360,a:b0,b:b1,back:b6,dpdown:h0.1,dpleft:h0.2,dpright:h0.8,dpup:h0.4,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +030000005e0400008e02000004010000,Microsoft Xbox 360,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +030000005e0400008e02000056210000,Microsoft Xbox 360,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +030000005e0400008e02000062230000,Microsoft Xbox 360,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +030000005e040000d102000001010000,Microsoft Xbox One,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +030000005e040000d102000003020000,Microsoft Xbox One,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +030000005e040000dd02000003020000,Microsoft Xbox One,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +030000005e040000ea02000008040000,Microsoft Xbox One,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +060000005e040000120b000009050000,Microsoft Xbox One,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,misc1:b11,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +030000005e040000e302000003020000,Microsoft Xbox One Elite,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +030000005e040000000b000007040000,Microsoft Xbox One Elite 2,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,paddle1:b12,paddle2:b14,paddle3:b13,paddle4:b15,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +030000005e040000000b000008040000,Microsoft Xbox One Elite 2,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,paddle1:b12,paddle2:b14,paddle3:b13,paddle4:b15,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +050000005e040000050b000003090000,Microsoft Xbox One Elite 2,a:b0,b:b1,back:b17,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a6,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a5,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux, +030000005e040000120b00000b050000,Microsoft Xbox Series Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +03000000030000000300000002000000,Miroof,a:b1,b:b0,back:b6,leftshoulder:b4,leftx:a0,lefty:a1,rightshoulder:b5,start:b7,x:b3,y:b2,platform:Linux, +050000004d4f435554452d3035335800,Mocute 053X,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Linux, +05000000e80400006e0400001b010000,Mocute 053X M59,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux, +050000004d4f435554452d3035305800,Mocute 054X,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux, +05000000d6200000e589000001000000,Moga 2,a:b0,b:b1,back:b9,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b7,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b8,righttrigger:a4,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Linux, +05000000d6200000ad0d000001000000,Moga Pro,a:b0,b:b1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b7,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b8,righttrigger:a4,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Linux, +05000000d62000007162000001000000,Moga Pro 2,a:b0,b:b1,back:b9,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b7,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b8,righttrigger:a4,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Linux, +03000000c62400002b89000011010000,MOGA XP5A Plus,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux, +05000000c62400002a89000000010000,MOGA XP5A Plus,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b22,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux, +05000000c62400001a89000000010000,MOGA XP5X Plus,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux, +03000000250900006688000000010000,MP8866 Super Dual Box,a:b2,b:b1,back:b9,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b10,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b11,righttrigger:b5,rightx:a2,righty:a3,start:b8,x:b3,y:b0,platform:Linux, +030000005e0400008e02000010020000,MSI GC20 V2,a:b0,b:b1,back:b6,dpdown:b13,dpleft:b14,dpright:b15,dpup:b12,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +030000006b1400000906000014010000,Nacon Asymmetric Wireless PS4 Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +030000006b140000010c000010010000,Nacon GC 400ES,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Linux, +03000000853200000706000012010000,Nacon GC-100,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +030000000d0f00000900000010010000,Natec Genesis P44,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux, +030000004f1f00000800000011010000,NeoGeo PS3,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b7,start:b9,x:b0,y:b3,platform:Linux, +0300000092120000474e000000010000,NeoGeo X Arcade Stick,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,start:b9,x:b3,y:b2,platform:Linux, +03000000790000004518000010010000,Nexilux GameCube Controller Adapter,a:b1,b:b0,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b7,righttrigger:a4,rightx:a5,righty:a2,start:b9,x:b2,y:b3,platform:Linux, +030000001008000001e5000010010000,NEXT SNES Controller,a:b2,b:b1,back:b8,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b4,rightshoulder:b5,righttrigger:b6,start:b9,x:b3,y:b0,platform:Linux, +060000007e0500003713000000000000,Nintendo 3DS,a:b0,b:b1,back:b8,dpdown:b11,dpleft:b12,dpright:b13,dpup:b10,leftshoulder:b4,leftx:a0,lefty:a1,rightshoulder:b5,rightx:a2,righty:a3,start:b9,x:b3,y:b2,platform:Linux, +030000009b2800008000000020020000,Nintendo Classic Controller,a:b1,b:b4,back:b2,dpdown:b13,dpleft:b14,dpright:b15,dpup:b12,leftshoulder:b6,rightshoulder:b7,start:b3,x:b0,y:b5,platform:Linux, +030000007e0500003703000000016800,Nintendo GameCube Controller,a:b0,b:b2,dpdown:b6,dpleft:b4,dpright:b5,dpup:b7,lefttrigger:a4,leftx:a0,lefty:a1~,rightshoulder:b9,righttrigger:a5,rightx:a2,righty:a3~,start:b8,x:b1,y:b3,platform:Linux, +03000000790000004618000010010000,Nintendo GameCube Controller Adapter,a:b1,b:b0,dpdown:b14,dpleft:b15,dpright:b13,dpup:b12,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,righttrigger:b5,rightx:a5~,righty:a2~,start:b9,x:b2,y:b3,platform:Linux, +060000004e696e74656e646f20537700,Nintendo Switch Combined Joy-Cons,a:b0,b:b1,back:b9,dpdown:b15,dpleft:b16,dpright:b17,dpup:b14,guide:b11,leftshoulder:b5,leftstick:b12,lefttrigger:b7,leftx:a0,lefty:a1,misc1:b4,rightshoulder:b6,rightstick:b13,righttrigger:b8,rightx:a2,righty:a3,start:b10,x:b3,y:b2,platform:Linux, +060000007e0500000620000000000000,Nintendo Switch Combined Joy-Cons,a:b0,b:b1,back:b9,dpdown:b15,dpleft:b16,dpright:b17,dpup:b14,guide:b11,leftshoulder:b5,leftstick:b12,lefttrigger:b7,leftx:a0,lefty:a1,misc1:b4,rightshoulder:b6,rightstick:b13,righttrigger:b8,rightx:a2,righty:a3,start:b10,x:b3,y:b2,platform:Linux, +060000007e0500000820000000000000,Nintendo Switch Combined Joy-Cons,a:b0,b:b1,back:b9,dpdown:b15,dpleft:b16,dpright:b17,dpup:b14,guide:b11,leftshoulder:b5,leftstick:b12,lefttrigger:b7,leftx:a0,lefty:a1,misc1:b4,rightshoulder:b6,rightstick:b13,righttrigger:b8,rightx:a2,righty:a3,start:b10,x:b3,y:b2,platform:Linux, +050000004c69632050726f20436f6e00,Nintendo Switch Controller,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,misc1:b13,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Linux, +050000007e0500000620000001800000,Nintendo Switch Left Joy-Con,a:b16,b:b15,back:b4,leftshoulder:b6,leftstick:b12,leftx:a1,lefty:a0~,rightshoulder:b8,start:b9,x:b14,y:b17,platform:Linux, +03000000d620000013a7000011010000,Nintendo Switch PowerA Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux, +03000000d620000011a7000011010000,Nintendo Switch PowerA Core Plus Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux, +030000007e0500000920000000026803,Nintendo Switch Pro Controller,a:b1,b:b0,back:b4,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b5,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b3,y:b2,platform:Linux, +030000007e0500000920000011810000,Nintendo Switch Pro Controller,a:b0,b:b1,back:b9,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b11,leftshoulder:b5,leftstick:b12,lefttrigger:b7,leftx:a0,lefty:a1,misc1:b4,rightshoulder:b6,rightstick:b13,righttrigger:b8,rightx:a2,righty:a3,start:b10,x:b3,y:b2,platform:Linux, +050000007e0500000920000001000000,Nintendo Switch Pro Controller,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,misc1:b13,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Linux, +050000007e0500000920000001800000,Nintendo Switch Pro Controller,a:b0,b:b1,back:b9,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b11,leftshoulder:b5,leftstick:b12,lefttrigger:b7,leftx:a0,lefty:a1,misc1:b4,rightshoulder:b6,rightstick:b13,righttrigger:b8,rightx:a2,righty:a3,start:b10,x:b3,y:b2,platform:Linux, +050000007e0500000720000001800000,Nintendo Switch Right Joy-Con,a:b1,b:b2,back:b9,leftshoulder:b4,leftstick:b10,leftx:a1~,lefty:a0,rightshoulder:b6,start:b8,x:b0,y:b3,platform:Linux, +05000000010000000100000003000000,Nintendo Wii Remote,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b10,leftshoulder:b4,leftstick:b11,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b12,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Linux, +050000007e0500003003000001000000,Nintendo Wii U Pro Controller,a:b0,b:b1,back:b8,dpdown:b14,dpleft:b15,dpright:b16,dpup:b13,guide:b10,leftshoulder:b4,leftstick:b11,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b12,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b2,platform:Linux, +030000000d0500000308000010010000,Nostromo n45 Dual Analog,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b9,leftshoulder:b4,leftstick:b12,lefttrigger:b5,leftx:a0,lefty:a1,rightshoulder:b6,rightstick:b11,righttrigger:b7,rightx:a3,righty:a2,start:b10,x:b2,y:b3,platform:Linux, +030000007e0500001920000011810000,NSO N64 Controller,+rightx:b10,+righty:b8,-rightx:b9,-righty:b7,a:b0,b:b1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b11,leftshoulder:b3,lefttrigger:b2,leftx:a0,lefty:a1,misc1:b12,rightshoulder:b4,righttrigger:b5,start:b6,platform:Linux, +050000007e0500001920000001000000,NSO N64 Controller,+rightx:b8,+righty:b7,-rightx:b3,-righty:b2,a:b1,b:b0,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1,misc1:b13,rightshoulder:b5,righttrigger:b10,start:b9,platform:Linux, +050000007e0500001920000001800000,NSO N64 Controller,+rightx:b10,+righty:b8,-rightx:b9,-righty:b7,a:b0,b:b1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b11,leftshoulder:b3,lefttrigger:b2,leftx:a0,lefty:a1,misc1:b12,rightshoulder:b4,righttrigger:b5,start:b6,platform:Linux, +030000007e0500001720000011810000,NSO SNES Controller,a:b1,b:b0,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,start:b9,x:b3,y:b2,platform:Linux, +050000007e0500001720000001000000,NSO SNES Controller,a:b0,b:b1,back:b9,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b5,lefttrigger:b7,rightshoulder:b6,righttrigger:b8,start:b10,x:b3,y:b2,platform:Linux, +050000007e0500001720000001800000,NSO SNES Controller,a:b1,b:b0,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,start:b9,x:b3,y:b2,platform:Linux, +03000000550900001072000011010000,NVIDIA Controller,a:b0,b:b1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b13,leftshoulder:b4,leftstick:b8,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:a4,rightx:a2,righty:a3,start:b7,x:b2,y:b3,platform:Linux, +03000000550900001472000011010000,NVIDIA Controller v01.04,a:b0,b:b1,back:b14,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b16,leftshoulder:b4,leftstick:b7,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b8,righttrigger:a4,rightx:a2,righty:a5,start:b6,x:b2,y:b3,platform:Linux, +05000000550900001472000001000000,NVIDIA Controller v01.04,a:b0,b:b1,back:b14,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b16,leftshoulder:b4,leftstick:b7,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b8,righttrigger:a4,rightx:a2,righty:a5,start:b6,x:b2,y:b3,platform:Linux, +03000000451300000830000010010000,NYKO CORE,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Linux, +19000000010000000100000001010000,ODROID Go 2,a:b1,b:b0,dpdown:b7,dpleft:b8,dpright:b9,dpup:b6,guide:b10,leftshoulder:b4,leftstick:b12,lefttrigger:b11,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b13,righttrigger:b14,start:b15,x:b2,y:b3,platform:Linux, +19000000010000000200000011000000,ODROID Go 2,a:b1,b:b0,dpdown:b9,dpleft:b10,dpright:b11,dpup:b8,guide:b12,leftshoulder:b4,leftstick:b14,lefttrigger:b13,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b15,righttrigger:b16,start:b17,x:b2,y:b3,platform:Linux, +03000000c0160000dc27000001010000,OnyxSoft Dual JoyDivision,a:b0,b:b1,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b4,rightshoulder:b5,start:b6,x:b2,y:b3,platform:Linux, +05000000362800000100000002010000,OUYA Controller,a:b0,b:b3,dpdown:b9,dpleft:b10,dpright:b11,dpup:b8,guide:b14,leftshoulder:b4,leftstick:b6,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,righttrigger:a5,rightx:a3,righty:a4,x:b1,y:b2,platform:Linux, +05000000362800000100000003010000,OUYA Controller,a:b0,b:b3,dpdown:b9,dpleft:b10,dpright:b11,dpup:b8,guide:b14,leftshoulder:b4,leftstick:b6,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,righttrigger:a5,rightx:a3,righty:a4,x:b1,y:b2,platform:Linux, +05000000362800000100000004010000,OUYA Controller,a:b0,b:b3,back:b14,dpdown:b9,dpleft:b10,dpright:b11,dpup:b8,leftshoulder:b4,leftstick:b6,lefttrigger:b12,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,righttrigger:b13,rightx:a3,righty:a4,start:b16,x:b1,y:b2,platform:Linux, +03000000830500005020000010010000,Padix Rockfire PlayStation Bridge,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:b7,rightx:a2,righty:a3,start:b11,x:b2,y:b3,platform:Linux, +03000000ff1100003133000010010000,PC Controller,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Linux, +030000006f0e0000b802000001010000,PDP Afterglow Xbox One Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +030000006f0e0000b802000013020000,PDP Afterglow Xbox One Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +030000006f0e00006401000001010000,PDP Battlefield One,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +030000006f0e0000d702000006640000,PDP Black Camo Wired Xbox Series X Controller,a:b0,b:b1,back:b6,dpdown:b13,dpleft:b14,dpright:b13,dpup:b14,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +030000006f0e00003101000000010000,PDP EA Sports Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +030000006f0e00008001000011010000,PDP Faceoff Nintendo Switch Pro Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux, +030000006f0e0000c802000012010000,PDP Kingdom Hearts Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +030000006f0e00008501000011010000,PDP Nintendo Switch Fightpad Pro,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Linux, +030000006f0e00002801000011010000,PDP PS3 Rock Candy Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux, +030000006f0e00000901000011010000,PDP PS3 Versus Fighting,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,start:b9,x:b0,y:b3,platform:Linux, +03000000ad1b000004f9000000010000,PDP Xbox 360 Versus Fighting,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,lefttrigger:a2,rightshoulder:b5,righttrigger:a5,start:b7,x:b2,y:b3,platform:Linux, +030000006f0e0000a802000023020000,PDP Xbox One Controller,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b10,leftshoulder:b4,leftstick:b11,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b12,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Linux, +030000006f0e0000a702000023020000,PDP Xbox One Raven Black,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +030000006f0e0000d802000006640000,PDP Xbox Series Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +030000006f0e0000ef02000007640000,PDP Xbox Series Kinetic Wired Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +03000000666600006706000000010000,PlayStation Adapter,a:b2,b:b1,back:b8,dpdown:b14,dpleft:b15,dpright:b13,dpup:b12,leftshoulder:b6,leftstick:b9,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b10,righttrigger:b5,rightx:a2,righty:a3,start:b11,x:b3,y:b0,platform:Linux, +030000004c050000da0c000011010000,PlayStation Controller,a:b2,b:b1,back:b8,leftshoulder:b6,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,righttrigger:b5,start:b9,x:b3,y:b0,platform:Linux, +03000000d9040000160f000000010000,PlayStation Controller Adapter,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b10,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b11,righttrigger:b5,rightx:a3,righty:a2,start:b9,x:b3,y:b0,platform:Linux, +030000004c0500003713000011010000,PlayStation Vita,a:b1,b:b2,back:b8,dpdown:b13,dpleft:b15,dpright:b14,dpup:b12,leftshoulder:b4,leftx:a0,lefty:a1,rightshoulder:b5,rightx:a3,righty:a4,start:b9,x:b0,y:b3,platform:Linux, +03000000c62400000053000000010000,PowerA,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +03000000c62400003a54000001010000,PowerA 1428124-01,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +03000000d62000000140000001010000,PowerA Fusion Pro 2 Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +03000000c62400001a53000000010000,PowerA Mini Pro Ex,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +03000000d62000006dca000011010000,PowerA Pro Ex,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux, +03000000c62400001a58000001010000,PowerA Xbox One,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +03000000d62000000220000001010000,PowerA Xbox One Controller,a:b0,b:b1,back:b7,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b6,x:b2,y:b3,platform:Linux, +03000000d62000000228000001010000,PowerA Xbox One Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +03000000c62400001a54000001010000,PowerA Xbox One Mini Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +03000000d62000000240000001010000,PowerA Xbox One Spectra Infinity,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +03000000d62000000f20000001010000,PowerA Xbox Series Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b7,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +030000006d040000d2ca000011010000,Precision Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux, +03000000ff1100004133000010010000,PS2 Controller,a:b2,b:b1,back:b8,leftshoulder:b6,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,righttrigger:b5,start:b9,x:b3,y:b0,platform:Linux, +03000000341a00003608000011010000,PS3 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux, +030000004c0500006802000010010000,PS3 Controller,a:b14,b:b13,back:b0,dpdown:b6,dpleft:b7,dpright:b5,dpup:b4,guide:b16,leftshoulder:b10,leftstick:b1,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b11,rightstick:b2,righttrigger:b9,rightx:a2,righty:a3,start:b3,x:b15,y:b12,platform:Linux, +030000004c0500006802000010810000,PS3 Controller,a:b0,b:b1,back:b8,dpdown:b14,dpleft:b15,dpright:b16,dpup:b13,guide:b10,leftshoulder:b4,leftstick:b11,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b12,righttrigger:a5,rightx:a3,righty:a4,start:b9,x:b3,y:b2,platform:Linux, 030000004c0500006802000011010000,PS3 Controller,a:b14,b:b13,back:b0,dpdown:b6,dpleft:b7,dpright:b5,dpup:b4,guide:b16,leftshoulder:b10,leftstick:b1,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b11,rightstick:b2,righttrigger:b9,rightx:a2,righty:a3,start:b3,x:b15,y:b12,platform:Linux, -030000004c050000c405000011010000,Sony DualShock 4,a:b1,b:b2,y:b3,x:b0,start:b9,guide:b12,back:b13,leftstick:b10,rightstick:b11,leftshoulder:b4,rightshoulder:b5,dpup:h0.1,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,leftx:a0,lefty:a1,rightx:a2,righty:a5,lefttrigger:a3,righttrigger:a4,platform:Linux, -050000004c050000c405000000010000,Sony DualShock 4 BT,a:b1,b:b2,back:b13,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Linux, -030000004c050000cc09000011010000,Sony DualShock 4 V2,a:b1,b:b2,y:b3,x:b0,start:b9,guide:b12,back:b13,leftstick:b10,rightstick:b11,leftshoulder:b4,rightshoulder:b5,dpup:h0.1,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,leftx:a0,lefty:a1,rightx:a2,righty:a5,lefttrigger:a3,righttrigger:a4,platform:Linux, -050000004c050000cc09000000010000,Sony DualShock 4 V2 BT,a:b1,b:b2,y:b3,x:b0,start:b9,guide:b12,back:b13,leftstick:b10,rightstick:b11,leftshoulder:b4,rightshoulder:b5,dpup:h0.1,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,leftx:a0,lefty:a1,rightx:a2,righty:a5,lefttrigger:a3,righttrigger:a4,platform:Linux, -030000004c050000a00b000011010000,Sony DualShock 4 Wireless Adaptor,a:b1,b:b2,y:b3,x:b0,start:b9,guide:b12,back:b13,leftstick:b10,rightstick:b11,leftshoulder:b4,rightshoulder:b5,dpup:h0.1,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,leftx:a0,lefty:a1,rightx:a2,righty:a5,lefttrigger:a3,righttrigger:a4,platform:Linux, -030000006f0e00003001000001010000,EA Sports PS3 Controller,platform:Linux,a:b1,b:b2,y:b3,x:b0,start:b9,guide:b12,back:b8,leftstick:b10,rightstick:b11,leftshoulder:b4,rightshoulder:b5,dpup:h0.1,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,leftx:a0,lefty:a1,rightx:a2,righty:a3,lefttrigger:b6,righttrigger:b7, -03000000de280000ff11000001000000,Valve Streaming Gamepad,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, -030000005e0400008e02000014010000,X360 Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, -030000005e0400008e02000010010000,X360 Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, -030000005e0400001907000000010000,X360 Wireless Controller,a:b0,b:b1,back:b6,dpdown:b14,dpleft:b11,dpright:b12,dpup:b13,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, -03000000100800000100000010010000,Twin USB PS2 Adapter,a:b2,b:b1,y:b0,x:b3,start:b9,guide:,back:b8,leftstick:b10,rightstick:b11,leftshoulder:b6,rightshoulder:b7,dpup:h0.1,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,leftx:a0,lefty:a1,rightx:a3,righty:a2,lefttrigger:b4,righttrigger:b5,platform:Linux, -03000000a306000023f6000011010000,Saitek Cyborg V.1 Game Pad,a:b1,b:b2,y:b3,x:b0,start:b9,guide:b12,back:b8,leftstick:b10,rightstick:b11,leftshoulder:b4,rightshoulder:b5,dpup:h0.1,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,leftx:a0,lefty:a1,rightx:a2,righty:a4,lefttrigger:b6,righttrigger:b7,platform:Linux, -030000004f04000020b3000010010000,Thrustmaster 2 in 1 DT,a:b0,b:b2,y:b3,x:b1,start:b9,guide:,back:b8,leftstick:b10,rightstick:b11,leftshoulder:b4,rightshoulder:b6,dpup:h0.1,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,leftx:a0,lefty:a1,rightx:a2,righty:a3,lefttrigger:b5,righttrigger:b7,platform:Linux, -030000004f04000023b3000000010000,Thrustmaster Dual Trigger 3-in-1,platform:Linux,x:b0,a:b1,b:b2,y:b3,back:b8,start:b9,dpleft:h0.8,dpdown:h0.0,dpdown:h0.4,dpright:h0.0,dpright:h0.2,dpup:h0.0,dpup:h0.1,leftshoulder:h0.0,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,leftstick:b10,rightstick:b11,leftx:a0,lefty:a1,rightx:a2,righty:a5, -030000008f0e00000300000010010000,GreenAsia Inc. USB Joystick ,platform:Linux,x:b3,a:b2,b:b1,y:b0,back:b8,start:b9,dpleft:h0.8,dpdown:h0.0,dpdown:h0.4,dpright:h0.0,dpright:h0.2,dpup:h0.0,dpup:h0.1,leftshoulder:h0.0,leftshoulder:b6,lefttrigger:b4,rightshoulder:b7,righttrigger:b5,leftstick:b10,rightstick:b11,leftx:a0,lefty:a1,rightx:a3,righty:a2, -030000008f0e00001200000010010000,GreenAsia Inc. USB Joystick ,platform:Linux,x:b2,a:b0,b:b1,y:b3,back:b8,start:b9,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,dpup:h0.1,leftshoulder:b4,lefttrigger:b5,rightshoulder:b6,righttrigger:b7,leftstick:b10,rightstick:b11,leftx:a0,lefty:a1,rightx:a3,righty:a2, -030000005e0400009102000007010000,X360 Wireless Controller,a:b0,b:b1,y:b3,x:b2,start:b7,guide:b8,back:b6,leftstick:b9,rightstick:b10,leftshoulder:b4,rightshoulder:b5,dpup:b13,dpleft:b11,dpdown:b14,dpright:b12,leftx:a0,lefty:a1,rightx:a3,righty:a4,lefttrigger:a2,righttrigger:a5,platform:Linux, -030000006d04000016c2000010010000,Logitech Logitech Dual Action,platform:Linux,x:b0,a:b1,b:b2,y:b3,back:b8,start:b9,dpleft:h0.8,dpdown:h0.0,dpdown:h0.4,dpright:h0.0,dpright:h0.2,dpup:h0.0,dpup:h0.1,leftshoulder:h0.0,dpup:h0.1,leftshoulder:h0.0,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,leftstick:b10,rightstick:b11,leftx:a0,lefty:a1,rightx:a2,righty:a3, -03000000260900008888000000010000,GameCube {WiseGroup USB box},a:b0,b:b2,y:b3,x:b1,start:b7,leftshoulder:,rightshoulder:b6,dpup:h0.1,dpleft:h0.8,rightstick:,dpdown:h0.4,dpright:h0.2,leftx:a0,lefty:a1,rightx:a2,righty:a3,lefttrigger:a4,righttrigger:a5,platform:Linux, -030000006d04000011c2000010010000,Logitech WingMan Cordless RumblePad,a:b0,b:b1,y:b4,x:b3,start:b8,guide:b5,back:b2,leftshoulder:b6,rightshoulder:b7,dpup:h0.1,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,leftx:a0,lefty:a1,rightx:a3,righty:a4,lefttrigger:b9,righttrigger:b10,platform:Linux, -030000006d04000018c2000010010000,Logitech Logitech RumblePad 2 USB,platform:Linux,x:b0,a:b1,b:b2,y:b3,back:b8,start:b9,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,dpup:h0.1,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,leftstick:b10,rightstick:b11,leftx:a0,lefty:a1,rightx:a2,righty:a3, -05000000d6200000ad0d000001000000,Moga Pro,platform:Linux,a:b0,b:b1,y:b3,x:b2,start:b6,leftstick:b7,rightstick:b8,leftshoulder:b4,rightshoulder:b5,dpup:h0.1,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,leftx:a0,lefty:a1,rightx:a2,righty:a3,lefttrigger:a5,righttrigger:a4, -030000004f04000009d0000000010000,Thrustmaster Run N Drive Wireless PS3,platform:Linux,a:b1,b:b2,x:b0,y:b3,start:b9,guide:b12,back:b8,leftstick:b10,rightstick:b11,leftshoulder:b4,rightshoulder:b5,dpup:h0.1,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,leftx:a0,lefty:a1,rightx:a2,righty:a3,lefttrigger:b6,righttrigger:b7, -030000004f04000008d0000000010000,Thrustmaster Run N Drive Wireless,platform:Linux,a:b1,b:b2,x:b0,y:b3,start:b9,back:b8,leftstick:b10,rightstick:b11,leftshoulder:b4,rightshoulder:b5,dpup:h0.1,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,leftx:a0,lefty:a1,rightx:a2,righty:a5,lefttrigger:b6,righttrigger:b7, -0300000000f000000300000000010000,RetroUSB.com RetroPad,a:b1,b:b5,x:b0,y:b4,back:b2,start:b3,leftshoulder:b6,rightshoulder:b7,leftx:a0,lefty:a1,platform:Linux, -0300000000f00000f100000000010000,RetroUSB.com Super RetroPort,a:b1,b:b5,x:b0,y:b4,back:b2,start:b3,leftshoulder:b6,rightshoulder:b7,leftx:a0,lefty:a1,platform:Linux, -030000006f0e00001f01000000010000,Generic X-Box pad,platform:Linux,x:b2,a:b0,b:b1,y:b3,back:b6,guide:b8,start:b7,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,dpup:h0.1,leftshoulder:b4,lefttrigger:a2,rightshoulder:b5,righttrigger:a5,leftstick:b9,rightstick:b10,leftx:a0,lefty:a1,rightx:a3,righty:a4, -03000000280400000140000000010000,Gravis GamePad Pro USB ,platform:Linux,x:b0,a:b1,b:b2,y:b3,back:b8,start:b9,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,leftx:a0,lefty:a1, -030000005e0400008902000021010000,Microsoft X-Box pad v2 (US),platform:Linux,x:b3,a:b0,b:b1,y:b4,back:b6,start:b7,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,dpup:h0.1,leftshoulder:b5,lefttrigger:a2,rightshoulder:b2,righttrigger:a5,leftstick:b8,rightstick:b9,leftx:a0,lefty:a1,rightx:a3,righty:a4, -030000005e0400008502000000010000,Microsoft X-Box pad (Japan),platform:Linux,x:b3,a:b0,b:b1,y:b4,back:b6,start:b7,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,dpup:h0.1,leftshoulder:b5,lefttrigger:a2,rightshoulder:b2,righttrigger:a5,leftstick:b8,rightstick:b9,leftx:a0,lefty:a1,rightx:a3,righty:a4, -030000006f0e00001e01000011010000,Rock Candy Gamepad for PS3,platform:Linux,a:b1,b:b2,x:b0,y:b3,back:b8,start:b9,guide:b12,leftshoulder:b4,rightshoulder:b5,leftstick:b10,rightstick:b11,leftx:a0,lefty:a1,rightx:a2,righty:a3,lefttrigger:b6,righttrigger:b7,dpup:h0.1,dpleft:h0.8,dpdown:h0.4,dpright:h0.2, -03000000250900000500000000010000,Sony PS2 pad with SmartJoy adapter,platform:Linux,a:b2,b:b1,y:b0,x:b3,start:b8,back:b9,leftstick:b10,rightstick:b11,leftshoulder:b6,rightshoulder:b7,dpup:h0.1,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,leftx:a0,lefty:a1,rightx:a2,righty:a3,lefttrigger:b4,righttrigger:b5, -030000008916000000fd000024010000,Razer Onza Tournament,a:b0,b:b1,y:b3,x:b2,start:b7,guide:b8,back:b6,leftstick:b9,rightstick:b10,leftshoulder:b4,rightshoulder:b5,dpup:b13,dpleft:b11,dpdown:b14,dpright:b12,leftx:a0,lefty:a1,rightx:a3,righty:a4,lefttrigger:a2,righttrigger:a5,platform:Linux, -030000004f04000000b3000010010000,Thrustmaster Firestorm Dual Power,a:b0,b:b2,y:b3,x:b1,start:b10,guide:b8,back:b9,leftstick:b11,rightstick:b12,leftshoulder:b4,rightshoulder:b6,dpup:h0.1,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,leftx:a0,lefty:a1,rightx:a2,righty:a3,lefttrigger:b5,righttrigger:b7,platform:Linux, -03000000ad1b000001f5000033050000,Hori Pad EX Turbo 2,a:b0,b:b1,y:b3,x:b2,start:b7,guide:b8,back:b6,leftstick:b9,rightstick:b10,leftshoulder:b4,rightshoulder:b5,dpup:h0.1,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,leftx:a0,lefty:a1,rightx:a3,righty:a4,lefttrigger:a2,righttrigger:a5,platform:Linux, -060000004c0500006802000000010000,PS3 Controller (Bluetooth),a:b14,b:b13,y:b12,x:b15,start:b3,guide:b16,back:b0,leftstick:b1,rightstick:b2,leftshoulder:b10,rightshoulder:b11,dpup:b4,dpleft:b7,dpdown:b6,dpright:b5,leftx:a0,lefty:a1,rightx:a2,righty:a3,lefttrigger:b8,righttrigger:b9,platform:Linux, -050000004c0500006802000000010000,PS3 Controller (Bluetooth),a:b14,b:b13,y:b12,x:b15,start:b3,guide:b16,back:b0,leftstick:b1,rightstick:b2,leftshoulder:b10,rightshoulder:b11,dpup:b4,dpleft:b7,dpdown:b6,dpright:b5,leftx:a0,lefty:a1,rightx:a2,righty:a3,lefttrigger:b8,righttrigger:b9,platform:Linux, -03000000790000000600000010010000,DragonRise Inc. Generic USB Joystick ,x:b3,a:b2,b:b1,y:b0,back:b8,start:b9,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,dpup:h0.1,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,leftstick:b10,rightstick:b11,leftx:a0,lefty:a3,rightx:a1,righty:a4, -03000000666600000488000000010000,Super Joy Box 5 Pro,platform:Linux,a:b2,b:b1,x:b3,y:b0,back:b9,start:b8,leftshoulder:b6,rightshoulder:b7,leftstick:b10,rightstick:b11,leftx:a0,lefty:a1,rightx:a2,righty:a3,lefttrigger:b4,righttrigger:b5,dpup:b12,dpleft:b15,dpdown:b14,dpright:b13, -05000000362800000100000002010000,OUYA Game Controller,a:b0,b:b3,dpdown:b9,dpleft:b10,dpright:b11,dpup:b8,guide:b14,leftshoulder:b4,leftstick:b6,lefttrigger:a2,leftx:a0,lefty:a1,platform:Linux,rightshoulder:b5,rightstick:b7,righttrigger:a5,rightx:a3,righty:a4,x:b1,y:b2, -05000000362800000100000003010000,OUYA Game Controller,a:b0,b:b3,dpdown:b9,dpleft:b10,dpright:b11,dpup:b8,guide:b14,leftshoulder:b4,leftstick:b6,lefttrigger:a2,leftx:a0,lefty:a1,platform:Linux,rightshoulder:b5,rightstick:b7,righttrigger:a5,rightx:a3,righty:a4,x:b1,y:b2, -030000008916000001fd000024010000,Razer Onza Classic Edition,platform:Linux,x:b2,a:b0,b:b1,y:b3,back:b6,guide:b8,start:b7,dpleft:b11,dpdown:b14,dpright:b12,dpup:b13,leftshoulder:b4,lefttrigger:a2,rightshoulder:b5,righttrigger:a5,leftstick:b9,rightstick:b10,leftx:a0,lefty:a1,rightx:a3,righty:a4, -030000005e040000d102000001010000,Microsoft X-Box One pad,platform:Linux,x:b2,a:b0,b:b1,y:b3,back:b6,guide:b8,start:b7,dpleft:h0.8,dpdown:h0.0,dpdown:h0.4,dpright:h0.0,dpright:h0.2,dpup:h0.0,dpup:h0.1,leftshoulder:h0.0,leftshoulder:b4,lefttrigger:a2,rightshoulder:b5,righttrigger:a5,leftstick:b9,rightstick:b10,leftx:a0,lefty:a1,rightx:a3,righty:a4, -030000005e040000dd02000003020000,Microsoft X-Box One pad v2,x:b2,a:b0,b:b1,y:b3,back:b6,guide:b8,start:b7,dpleft:h0.8,dpdown:h0.0,dpdown:h0.4,dpright:h0.0,dpright:h0.2,dpup:h0.0,dpup:h0.1,leftshoulder:h0.0,leftshoulder:b4,lefttrigger:a2,rightshoulder:b5,righttrigger:a5,leftstick:b9,rightstick:b10,leftx:a0,lefty:a1,rightx:a3,righty:a4,platform:Linux, -03000000790000001100000010010000,RetroLink Saturn Classic Controller,platform:Linux,x:b3,a:b0,b:b1,y:b4,back:b5,guide:b2,start:b8,leftshoulder:b6,rightshoulder:b7,leftx:a0,lefty:a1, -050000007e0500003003000001000000,Nintendo Wii U Pro Controller,platform:Linux,a:b0,b:b1,x:b3,y:b2,back:b8,start:b9,guide:b10,leftshoulder:b4,rightshoulder:b5,leftstick:b11,rightstick:b12,leftx:a0,lefty:a1,rightx:a2,righty:a3,lefttrigger:b6,righttrigger:b7,dpup:b13,dpleft:b15,dpdown:b14,dpright:b16, -030000005e0400008e02000004010000,Microsoft X-Box 360 pad,platform:Linux,a:b0,b:b1,x:b2,y:b3,back:b6,start:b7,guide:b8,leftshoulder:b4,rightshoulder:b5,leftstick:b9,rightstick:b10,leftx:a0,lefty:a1,rightx:a3,righty:a4,lefttrigger:a2,righttrigger:a5,dpup:h0.1,dpleft:h0.8,dpdown:h0.4,dpright:h0.2, -030000000d0f00002200000011010000,HORI CO. LTD. REAL ARCADE Pro.V3,platform:Linux,x:b0,a:b1,b:b2,y:b3,back:b8,guide:b12,start:b9,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,dpup:h0.1, -030000000d0f00001000000011010000,HORI CO. LTD. FIGHTING STICK 3,platform:Linux,x:b0,a:b1,b:b2,y:b3,back:b8,guide:b12,start:b9,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,dpup:h0.1,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7 -03000000f0250000c183000010010000,Goodbetterbest Ltd USB Controller,platform:Linux,x:b0,a:b1,b:b2,y:b3,back:b8,guide:b12,start:b9,dpleft:h0.8,dpdown:h0.0,dpdown:h0.4,dpright:h0.0,dpright:h0.2,dpup:h0.0,dpup:h0.1,leftshoulder:h0.0,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,leftstick:b10,rightstick:b11,leftx:a0,lefty:a1,rightx:a2,righty:a3, -0000000058626f782047616d65706100,Xbox Gamepad (userspace driver),platform:Linux,a:b0,b:b1,x:b2,y:b3,start:b7,back:b6,guide:b8,dpup:h0.1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,leftshoulder:b4,rightshoulder:b5,lefttrigger:a5,righttrigger:a4,leftstick:b9,rightstick:b10,leftx:a0,lefty:a1,rightx:a2,righty:a3, -03000000ff1100003133000010010000,PC Game Controller,a:b2,b:b1,y:b0,x:b3,start:b9,back:b8,leftstick:b10,rightstick:b11,leftshoulder:b4,rightshoulder:b5,dpup:h0.1,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,leftx:a0,lefty:a1,rightx:a2,righty:a3,lefttrigger:b6,righttrigger:b7,platform:Linux, -030000005e0400008e02000020200000,SpeedLink XEOX Pro Analog Gamepad pad,platform:Linux,x:b2,a:b0,b:b1,y:b3,back:b6,guide:b8,start:b7,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,dpup:h0.1,leftshoulder:b4,lefttrigger:a2,rightshoulder:b5,righttrigger:a5,leftstick:b9,rightstick:b10,leftx:a0,lefty:a1,rightx:a3,righty:a4, -030000006f0e00001304000000010000,Generic X-Box pad,platform:Linux,x:b2,a:b0,b:b1,y:b3,back:b6,guide:b8,start:b7,dpleft:h0.8,dpdown:h0.0,dpdown:h0.4,dpright:h0.0,dpright:h0.2,dpup:h0.0,dpup:h0.1,leftshoulder:h0.0,leftshoulder:b4,lefttrigger:a2,rightshoulder:b5,righttrigger:a5,leftstick:a0,rightstick:a3,leftstick:b9,rightstick:b10,leftx:a0,lefty:a1,rightx:a3,righty:a4, -03000000a306000018f5000010010000,Saitek PLC Saitek P3200 Rumble Pad,platform:Linux,x:b0,a:b1,b:b2,y:b3,back:b8,start:b9,dpleft:h0.8,dpdown:h0.0,dpdown:h0.4,dpright:h0.0,dpright:h0.2,dpup:h0.0,dpup:h0.1,leftshoulder:h0.0,leftshoulder:b4,lefttrigger:a2,rightshoulder:b6,rightshoulder:b5,righttrigger:b7,leftstick:b10,rightstick:b11,leftx:a0,lefty:a1,rightx:a3,righty:a4, -03000000830500006020000010010000,iBuffalo USB 2-axis 8-button Gamepad,a:b1,b:b0,x:b3,y:b2,back:b6,start:b7,leftshoulder:b4,rightshoulder:b5,leftx:a0,lefty:a1,platform:Linux, -03000000bd12000015d0000010010000,Tomee SNES USB Controller,x:b3,a:b2,b:b1,y:b0,back:b8,start:b9,leftshoulder:b4,rightshoulder:b5,leftx:a0,lefty:a1,platform:Linux, -03000000790000001100000010010000,Retrolink Classic Controller,x:b3,a:b2,b:b1,y:b0,back:b8,start:b9,leftshoulder:b4,rightshoulder:b5,leftx:a0,lefty:a1,platform:Linux, -03000000c9110000f055000011010000,HJC Game GAMEPAD,leftx:a0,lefty:a1,dpdown:h0.4,rightstick:b11,rightshoulder:b5,rightx:a2,start:b9,righty:a3,dpleft:h0.8,lefttrigger:b6,x:b2,dpup:h0.1,back:b8,leftstick:b10,leftshoulder:b4,y:b3,a:b0,dpright:h0.2,righttrigger:b7,b:b1,platform:Linux, -03000000a30600000c04000011010000,Saitek P2900 Wireless Pad,a:b1,b:b2,y:b3,x:b0,start:b12,guide:b9,back:b8,leftstick:b10,rightstick:b11,leftshoulder:b6,rightshoulder:b7,dpup:h0.1,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,leftx:a0,lefty:a1,rightx:a3,righty:a2,lefttrigger:b4,righttrigger:b5,platform:Linux, -03000000341a000005f7000010010000,GameCube {HuiJia USB box},a:b1,b:b2,y:b3,x:b0,start:b9,guide:,back:,leftstick:,rightstick:,leftshoulder:,dpleft:b15,dpdown:b14,dpright:b13,leftx:a0,lefty:a1,rightx:a5,righty:a2,lefttrigger:a3,righttrigger:a4,rightshoulder:b7,dpup:b12,platform:Linux, -030000006e0500000320000010010000,JC-U3613M - DirectInput Mode,platform:Linux,x:b0,a:b2,b:b3,y:b1,back:b10,guide:b12,start:b11,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,dpup:h0.1,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,leftstick:b8,rightstick:b9,leftx:a0,lefty:a1,rightx:a2,righty:a3, -030000006f0e00004601000001010000,Rock Candy Wired Controller for Xbox One,platform:Linux,a:b0,b:b1,x:b2,y:b3,leftshoulder:b4,rightshoulder:b5,back:b6,start:b7,guide:b8,leftstick:b9,rightstick:b10,lefttrigger:a2,righttrigger:a5,leftx:a0,lefty:a1,rightx:a3,righty:a4, -03000000380700001647000010040000,Mad Catz Wired Xbox 360 Controller,platform:Linux,x:b2,a:b0,b:b1,y:b3,back:b6,guide:b8,start:b7,dpleft:h0.8,dpdown:h0.0,dpdown:h0.4,dpright:h0.0,dpright:h0.2,dpup:h0.0,dpup:h0.1,leftshoulder:h0.0,leftshoulder:b4,lefttrigger:a2,rightshoulder:b5,righttrigger:a5,leftstick:b9,rightstick:b10,leftx:a0,lefty:a1,rightx:a3,righty:a4, -030000006f0e00003901000020060000,Afterglow Wired Controller for Xbox One,x:b2,a:b0,b:b1,y:b3,back:b6,guide:b8,start:b7,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,dpup:h0.1,leftshoulder:b4,lefttrigger:a2,rightshoulder:b5,righttrigger:a5,leftstick:b9,rightstick:b10,leftx:a0,lefty:a1,rightx:a3,righty:a4,platform:Linux, -030000004f04000015b3000010010000,Thrustmaster Dual Analog 4,platform:Linux,a:b0,b:b2,x:b1,y:b3,start:b9,back:b8,leftstick:b10,rightstick:b11,leftshoulder:b4,rightshoulder:b6,dpup:h0.1,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,leftx:a0,lefty:a1,rightx:a2,righty:a3,lefttrigger:b5,righttrigger:b7, -05000000102800000900000000010000,8Bitdo SFC30 GamePad,platform:Linux,x:b4,a:b1,b:b0,y:b3,back:b10,start:b11,leftshoulder:b6,rightshoulder:b7,leftx:a0,lefty:a1, -03000000d81400000862000011010000,HitBox (PS3/PC) Analog Mode,platform:Linux,a:b1,b:b2,y:b3,x:b0,start:b12,guide:b9,back:b8,leftshoulder:b4,rightshoulder:b5,lefttrigger:b6,righttrigger:b7,leftx:a0,lefty:a1, -030000000d0f00000d00000000010000,hori,platform:Linux,a:b0,b:b6,y:b2,x:b1,dpup:h0.1,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,start:b9,guide:b10,back:b8,leftshoulder:b3,rightshoulder:b7,leftx:b4,lefty:b5, -03000000ad1b000016f0000090040000,Mad Catz Xbox 360 Controller,platform:Linux,a:b0,b:b1,y:b3,x:b2,start:b7,guide:b8,back:b6,leftstick:b9,rightstick:b10,leftshoulder:b4,rightshoulder:b5,dpup:h0.1,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,leftx:a0,lefty:a1,rightx:a3,righty:a4,lefttrigger:a2,righttrigger:a5, -03000000d814000007cd000011010000,Toodles 2008 Chimp PC/PS3,platform:Linux,a:b0,b:b1,y:b2,x:b3,start:b9,back:b8,leftshoulder:b4,rightshoulder:b5,leftx:a0,lefty:a1,lefttrigger:b6,righttrigger:b7, -03000000fd0500000030000000010000,InterAct GoPad I-73000 (Fighting Game Layout),platform:Linux,a:b3,b:b4,y:b1,x:b0,start:b7,back:b6,leftx:a0,lefty:a1,rightshoulder:b2,righttrigger:b5, -05000000010000000100000003000000,Nintendo Wiimote,platform:Linux,a:b0,b:b1,y:b3,x:b2,start:b9,guide:b10,back:b8,leftstick:b11,rightstick:b12,leftshoulder:b4,rightshoulder:b5,dpup:h0.1,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,leftx:a0,lefty:a1,rightx:a2,righty:a3,lefttrigger:b6,righttrigger:b7, -030000005e0400008e02000062230000,Microsoft X-Box 360 pad,platform:Linux,x:b2,a:b0,b:b1,y:b3,back:b6,guide:b8,start:b7,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,dpup:h0.1,leftshoulder:b4,lefttrigger:a2,rightshoulder:b5,righttrigger:a5,leftstick:b9,rightstick:b10,leftx:a0,lefty:a1,rightx:a3,righty:a4, -03000000a30600000901000000010000,Saitek P880,a:b2,b:b3,y:b1,x:b0,leftstick:b8,rightstick:b9,leftshoulder:b4,rightshoulder:b5,dpup:h0.1,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,leftx:a0,lefty:a1,rightx:a3,righty:a2,lefttrigger:b6,righttrigger:b7,platform:Linux, -030000006f0e00000103000000020000,Logic3 Controller,platform:Linux,x:b2,a:b0,b:b1,y:b3,back:b6,guide:b8,start:b7,dpleft:h0.8,dpdown:h0.0,dpdown:h0.4,dpright:h0.0,dpright:h0.2,dpup:h0.0,dpup:h0.1,leftshoulder:h0.0,leftshoulder:b4,lefttrigger:a2,rightshoulder:b5,righttrigger:a5,leftstick:b9,rightstick:b10,leftx:a0,lefty:a1,rightx:a3,righty:a4, -05000000380700006652000025010000,Mad Catz C.T.R.L.R ,platform:Linux,x:b0,a:b1,b:b2,y:b3,back:b8,guide:b12,start:b9,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,dpup:h0.1,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,leftstick:b10,rightstick:b11,leftx:a0,lefty:a1,rightx:a2,righty:a3, -030000005e0400008e02000073050000,Speedlink TORID Wireless Gamepad,platform:Linux,x:b2,a:b0,b:b1,y:b3,back:b6,guide:b8,start:b7,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,dpup:h0.1,leftshoulder:b4,lefttrigger:a2,rightshoulder:b5,righttrigger:a5,leftstick:b9,rightstick:b10,leftx:a0,lefty:a1,rightx:a3,righty:a4, -03000000ad1b00002ef0000090040000,Mad Catz Fightpad SFxT,platform:Linux,a:b0,b:b1,y:b3,x:b2,start:b7,guide:b8,back:b6,leftshoulder:b4,rightshoulder:b5,dpup:h0.1,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,lefttrigger:a2,righttrigger:a5, -05000000a00500003232000001000000,8Bitdo Zero GamePad,platform:Linux,a:b0,b:b1,x:b3,y:b4,back:b10,start:b11,leftshoulder:b6,rightshoulder:b7,leftx:a0,lefty:a1, -030000001008000001e5000010010000,NEXT Classic USB Game Controller,a:b0,b:b1,back:b8,start:b9,rightx:a2,righty:a3,leftx:a0,lefty:a1,platform:Linux, -03000000100800000300000010010000,USB Gamepad,platform:Linux,a:b2,b:b1,x:b3,y:b0,start:b9,back:b8,leftstick:b10,rightstick:b11,leftshoulder:b6,rightshoulder:b7,dpup:h0.1,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,leftx:a0,lefty:a1,rightx:a3,righty:a2,lefttrigger:b4,righttrigger:b5, -05000000ac0500003232000001000000,VR-BOX,platform:Linux,a:b0,b:b1,x:b2,y:b3,start:b9,back:b8,leftstick:b10,rightstick:b11,leftshoulder:b6,rightshoulder:b7,dpup:h0.1,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,leftx:a0,lefty:a1,rightx:a3,righty:a2,lefttrigger:b4,righttrigger:b5, -03000000780000000600000010010000,Microntek USB Joystick,platform:Linux,x:b3,a:b2,b:b1,y:b0,back:b8,start:b9,leftshoulder:b6,lefttrigger:b4,rightshoulder:b7,righttrigger:b5,leftx:a0,lefty:a1, +030000004c0500006802000011810000,PS3 Controller,a:b0,b:b1,back:b8,dpdown:b14,dpleft:b15,dpright:b16,dpup:b13,guide:b10,leftshoulder:b4,leftstick:b11,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b12,righttrigger:a5,rightx:a3,righty:a4,start:b9,x:b3,y:b2,platform:Linux, +030000005f1400003102000010010000,PS3 Controller,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Linux, +030000006f0e00001402000011010000,PS3 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux, +030000008f0e00000300000010010000,PS3 Controller,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Linux, +050000004c0500006802000000000000,PS3 Controller,a:b14,b:b13,back:b0,dpdown:b6,dpleft:b7,dpright:b5,dpup:b4,guide:b16,leftshoulder:b10,leftstick:b1,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b11,rightstick:b2,righttrigger:b9,rightx:a2,righty:a3,start:b3,x:b15,y:b12,platform:Linux, +050000004c0500006802000000010000,PS3 Controller,a:b14,b:b13,back:b0,dpdown:b6,dpleft:b7,dpright:b5,dpup:b4,guide:b16,leftshoulder:b10,leftstick:b1,lefttrigger:a12,leftx:a0,lefty:a1,rightshoulder:b11,rightstick:b2,righttrigger:a13,rightx:a2,righty:a3,start:b3,x:b15,y:b12,platform:Linux, +050000004c0500006802000000800000,PS3 Controller,a:b0,b:b1,back:b8,dpdown:b14,dpleft:b15,dpright:b16,dpup:b13,guide:b10,leftshoulder:b4,leftstick:b11,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b12,righttrigger:a5,rightx:a3,righty:a4,start:b9,x:b3,y:b2,platform:Linux, +050000004c0500006802000000810000,PS3 Controller,a:b0,b:b1,back:b8,dpdown:b14,dpleft:b15,dpright:b16,dpup:b13,guide:b10,leftshoulder:b4,leftstick:b11,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b12,righttrigger:a5,rightx:a3,righty:a4,start:b9,x:b3,y:b2,platform:Linux, +05000000504c415953544154494f4e00,PS3 Controller,a:b14,b:b13,back:b0,dpdown:b6,dpleft:b7,dpright:b5,dpup:b4,guide:b16,leftshoulder:b10,leftstick:b1,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b11,rightstick:b2,righttrigger:b9,rightx:a2,righty:a3,start:b3,x:b15,y:b12,platform:Linux, +060000004c0500006802000000010000,PS3 Controller,a:b14,b:b13,back:b0,dpdown:b6,dpleft:b7,dpright:b5,dpup:b4,guide:b16,leftshoulder:b10,leftstick:b1,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b11,rightstick:b2,righttrigger:b9,rightx:a2,righty:a3,start:b3,x:b15,y:b12,platform:Linux, +030000004c050000a00b000011010000,PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Linux, +030000004c050000a00b000011810000,PS4 Controller,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b10,leftshoulder:b4,leftstick:b11,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b12,righttrigger:a5,rightx:a3,righty:a4,start:b9,x:b3,y:b2,platform:Linux, +030000004c050000c405000011010000,PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Linux, +030000004c050000c405000011810000,PS4 Controller,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b10,leftshoulder:b4,leftstick:b11,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b12,righttrigger:a5,rightx:a3,righty:a4,start:b9,x:b3,y:b2,platform:Linux, +030000004c050000cc09000000010000,PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Linux, +030000004c050000cc09000011010000,PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Linux, +030000004c050000cc09000011810000,PS4 Controller,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b10,leftshoulder:b4,leftstick:b11,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b12,righttrigger:a5,rightx:a3,righty:a4,start:b9,x:b3,y:b2,platform:Linux, +03000000c01100000140000011010000,PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Linux, +050000004c050000c405000000010000,PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Linux, +050000004c050000c405000000810000,PS4 Controller,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b10,leftshoulder:b4,leftstick:b11,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b12,righttrigger:a5,rightx:a3,righty:a4,start:b9,x:b3,y:b2,platform:Linux, +050000004c050000c405000001800000,PS4 Controller,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b10,leftshoulder:b4,leftstick:b11,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b12,righttrigger:a5,rightx:a3,righty:a4,start:b9,x:b3,y:b2,platform:Linux, +050000004c050000cc09000000010000,PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Linux, +050000004c050000cc09000000810000,PS4 Controller,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b10,leftshoulder:b4,leftstick:b11,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b12,righttrigger:a5,rightx:a3,righty:a4,start:b9,x:b3,y:b2,platform:Linux, +050000004c050000cc09000001800000,PS4 Controller,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b10,leftshoulder:b4,leftstick:b11,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b12,righttrigger:a5,rightx:a3,righty:a4,start:b9,x:b3,y:b2,platform:Linux, +030000004c050000e60c000011010000,PS5 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,misc1:b14,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,touchpad:b13,x:b0,y:b3,platform:Linux, +030000004c050000e60c000011810000,PS5 Controller,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b10,leftshoulder:b4,leftstick:b11,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b12,righttrigger:a5,rightx:a3,righty:a4,start:b9,x:b3,y:b2,platform:Linux, +030000004c050000f20d000011010000,PS5 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,misc1:b14,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,touchpad:b13,x:b0,y:b3,platform:Linux, +050000004c050000e60c000000010000,PS5 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,touchpad:b13,x:b0,y:b3,platform:Linux, +050000004c050000e60c000000810000,PS5 Controller,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b10,leftshoulder:b4,leftstick:b11,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b12,righttrigger:a5,rightx:a3,righty:a4,start:b9,x:b3,y:b2,platform:Linux, +050000004c050000f20d000000010000,PS5 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,touchpad:b13,x:b0,y:b3,platform:Linux, +03000000300f00001211000011010000,Qanba Arcade Joystick,a:b2,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b5,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,righttrigger:b6,start:b9,x:b1,y:b3,platform:Linux, +03000000222c00000225000011010000,Qanba Dragon Arcade Joystick (PS3),a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux, +03000000222c00000025000011010000,Qanba Dragon Arcade Joystick (PS4),a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Linux, +03000000222c00000020000011010000,Qanba Drone Arcade PS4 Joystick,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,rightshoulder:b5,righttrigger:a4,start:b9,x:b0,y:b3,platform:Linux, +03000000300f00001210000010010000,Qanba Joystick Plus,a:b0,b:b1,back:b8,leftshoulder:b5,lefttrigger:b7,leftx:a0,lefty:a1,rightshoulder:b4,righttrigger:b6,start:b9,x:b2,y:b3,platform:Linux, +03000000222c00000223000011010000,Qanba Obsidian Arcade Joystick (PS3),a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux, +03000000222c00000023000011010000,Qanba Obsidian Arcade Joystick (PS4),a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Linux, +030000009b2800000300000001010000,Raphnet 4nes4snes,a:b0,b:b4,back:b2,leftshoulder:b6,leftx:a0,lefty:a1,rightshoulder:b7,start:b3,x:b1,y:b5,platform:Linux, +030000009b2800004200000001010000,Raphnet Dual NES Adapter,a:b0,b:b1,back:b2,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,start:b3,platform:Linux, +030000009b2800003200000001010000,Raphnet GC and N64 Adapter,a:b0,b:b7,dpdown:b11,dpleft:b12,dpright:b13,dpup:b10,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b2,righttrigger:b5,rightx:a3,righty:a4,start:b3,x:b1,y:b8,platform:Linux, +030000009b2800006000000001010000,Raphnet GC and N64 Adapter,a:b0,b:b7,dpdown:b11,dpleft:b12,dpright:b13,dpup:b10,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b2,righttrigger:b5,rightx:a3,righty:a4,start:b3,x:b1,y:b8,platform:Linux, +030000008916000001fd000024010000,Razer Onza Classic Edition,a:b0,b:b1,back:b6,dpdown:b14,dpleft:b11,dpright:b12,dpup:b13,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +03000000321500000204000011010000,Razer Panthera PS3,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux, +03000000321500000104000011010000,Razer Panthera PS4,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Linux, +03000000321500000810000011010000,Razer Panthera PS4 Evo Arcade Stick,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b13,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Linux, +03000000321500000010000011010000,Razer Raiju,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Linux, +03000000321500000507000000010000,Razer Raiju Mobile,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b21,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux, +05000000321500000a10000001000000,Razer Raiju Tournament Edition,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b13,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Linux, +03000000321500000011000011010000,Razer Raion PS4 Fightpad,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Linux, +030000008916000000fe000024010000,Razer Sabertooth,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +03000000c6240000045d000024010000,Razer Sabertooth,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +03000000c6240000045d000025010000,Razer Sabertooth,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +03000000321500000009000011010000,Razer Serval,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a4,rightx:a2,righty:a3,start:b7,x:b2,y:b3,platform:Linux, +050000003215000000090000163a0000,Razer Serval,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a4,rightx:a2,righty:a3,start:b7,x:b2,y:b3,platform:Linux, +0300000032150000030a000001010000,Razer Wildcat,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +03000000790000001100000010010000,Retro Controller,a:b1,b:b2,back:b8,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b6,lefttrigger:b7,rightshoulder:b4,righttrigger:b5,start:b9,x:b0,y:b3,platform:Linux, +190000004b4800000111000000010000,RetroGame Joypad,a:b1,b:b0,back:b8,dpdown:b14,dpleft:b15,dpright:b16,dpup:b13,leftshoulder:b4,leftstick:b11,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b12,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Linux, +0300000081170000990a000001010000,Retronic Adapter,a:b0,leftx:a0,lefty:a1,platform:Linux, +0300000000f000000300000000010000,RetroPad,a:b1,b:b5,back:b2,leftshoulder:b6,leftx:a0,lefty:a1,rightshoulder:b7,start:b3,x:b0,y:b4,platform:Linux, +00000000526574726f53746f6e653200,RetroStone 2 Controller,a:b1,b:b0,back:b10,dpdown:b15,dpleft:b16,dpright:b17,dpup:b14,leftshoulder:b6,lefttrigger:b8,rightshoulder:b7,righttrigger:b9,start:b11,x:b4,y:b3,platform:Linux, +03000000341200000400000000010000,RetroUSB N64 RetroPort,+rightx:b8,+righty:b10,-rightx:b9,-righty:b11,a:b7,b:b6,dpdown:b2,dpleft:b1,dpright:b0,dpup:b3,leftshoulder:b13,lefttrigger:b5,leftx:a0,lefty:a1,rightshoulder:b12,start:b4,platform:Linux, +030000006b140000010d000011010000,Revolution Pro Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Linux, +030000006b140000130d000011010000,Revolution Pro Controller 3,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Linux, +030000006f0e00001f01000000010000,Rock Candy,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +030000006f0e00001e01000011010000,Rock Candy PS3 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux, +030000006f0e00008701000011010000,Rock Candy Switch Controller,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b13,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Linux, +03000000c6240000fefa000000010000,Rock Candy Xbox 360 Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +030000006f0e00004601000001010000,Rock Candy Xbox One Controller,a:b0,b:b1,back:b6,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +03000000a306000023f6000011010000,Saitek Cyborg V1 PlayStation Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a4,start:b9,x:b0,y:b3,platform:Linux, +03000000a30600001005000000010000,Saitek P150,a:b0,b:b1,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b7,lefttrigger:b6,rightshoulder:b2,righttrigger:b5,x:b3,y:b4,platform:Linux, +03000000a30600000701000000010000,Saitek P220,a:b2,b:b3,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b6,lefttrigger:b7,rightshoulder:b4,righttrigger:b5,x:b0,y:b1,platform:Linux, +03000000a30600000cff000010010000,Saitek P2500 Force Rumble,a:b2,b:b3,back:b11,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:b7,rightx:a3,righty:a2,start:b10,x:b0,y:b1,platform:Linux, +03000000a30600000c04000011010000,Saitek P2900,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b9,leftshoulder:b6,leftstick:b10,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b11,righttrigger:b5,rightx:a3,righty:a2,start:b12,x:b0,y:b3,platform:Linux, +03000000a306000018f5000010010000,Saitek P3200 Rumble,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a3,righty:a4,start:b9,x:b0,y:b3,platform:Linux, +03000000300f00001201000010010000,Saitek P380,a:b2,b:b3,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b5,leftx:a0,lefty:a1,rightshoulder:b6,rightstick:b11,righttrigger:b7,rightx:a3,righty:a2,start:b9,x:b0,y:b1,platform:Linux, +03000000a30600000901000000010000,Saitek P880,a:b2,b:b3,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:b7,rightx:a3,righty:a2,x:b0,y:b1,platform:Linux, +03000000a30600000b04000000010000,Saitek P990 Dual Analog,a:b1,b:b2,back:b9,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a3,righty:a2,start:b8,x:b0,y:b3,platform:Linux, +03000000a306000020f6000011010000,Saitek PS2700 Rumble,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a4,start:b9,x:b0,y:b3,platform:Linux, +05000000e804000000a000001b010000,Samsung EIGP20,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b15,leftshoulder:b6,leftx:a0,lefty:a1,rightshoulder:b7,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux, +03000000d81d00000e00000010010000,Savior,a:b0,b:b1,back:b8,leftshoulder:b6,leftstick:b10,lefttrigger:b7,leftx:a0,lefty:a1,rightshoulder:b2,rightstick:b11,righttrigger:b3,start:b9,x:b4,y:b5,platform:Linux, +03000000a30c00002500000011010000,Sega Genesis Mini 3B Controller,a:b2,b:b1,dpdown:+a4,dpleft:-a3,dpright:+a3,dpup:-a4,righttrigger:b5,start:b9,platform:Linux, +03000000790000001100000011010000,Sega Saturn,a:b1,b:b2,back:b8,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b6,lefttrigger:b7,rightshoulder:b5,righttrigger:b4,start:b9,x:b0,y:b3,platform:Linux, +03000000790000002201000011010000,Sega Saturn,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,lefttrigger:b5,rightshoulder:b6,righttrigger:b7,start:b9,x:b2,y:b3,platform:Linux, +03000000b40400000a01000000010000,Sega Saturn,a:b0,b:b1,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b6,lefttrigger:b7,rightshoulder:b5,righttrigger:b2,start:b8,x:b3,y:b4,platform:Linux, +030000001f08000001e4000010010000,SFC Controller,a:b2,b:b1,back:b8,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b4,rightshoulder:b5,start:b9,x:b3,y:b0,platform:Linux, +03000000632500002305000010010000,ShanWan Gamepad,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Linux, +03000000f025000021c1000010010000,Shanwan Gioteck PS3 Controller,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Linux, +03000000632500007505000010010000,Shanwan PS3 PC,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Linux, +03000000bc2000000055000010010000,Shanwan PS3 PC ,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux, +03000000341a00000908000010010000,SL6566,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Linux, +050000004c050000cc09000001000000,Sony DualShock 4,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Linux, +03000000ff000000cb01000010010000,Sony PlayStation Portable,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftx:a0,lefty:a1,rightshoulder:b5,start:b7,x:b2,y:b3,platform:Linux, +03000000250900000500000000010000,Sony PS2 pad with SmartJoy Adapter,a:b2,b:b1,back:b9,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b10,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b11,righttrigger:b5,rightx:a2,righty:a3,start:b8,x:b3,y:b0,platform:Linux, +030000005e0400008e02000073050000,Speedlink Torid,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +030000005e0400008e02000020200000,SpeedLink Xeox Pro Analog,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +03000000d11800000094000011010000,Stadia Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a4,rightx:a2,righty:a3,start:b7,x:b2,y:b3,platform:Linux, +05000000d11800000094000000010000,Stadia Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a4,rightx:a2,righty:a3,start:b7,x:b2,y:b3,platform:Linux, +03000000de2800000112000001000000,Steam Controller,a:b0,b:b1,back:b6,dpdown:b14,dpleft:b15,dpright:b13,dpup:b12,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,paddle1:b11,paddle2:b10,rightshoulder:b5,righttrigger:a3,start:b7,x:b2,y:b3,platform:Linux, +03000000de2800000112000011010000,Steam Controller,a:b2,b:b3,back:b10,dpdown:+a5,dpleft:-a4,dpright:+a4,dpup:-a5,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a7,leftx:a0,lefty:a1,paddle1:b15,paddle2:b16,rightshoulder:b7,rightstick:b14,righttrigger:a6,rightx:a2,righty:a3,start:b11,x:b4,y:b5,platform:Linux, +03000000de2800000211000001000000,Steam Controller,a:b0,b:b1,back:b6,dpdown:b14,dpleft:b15,dpright:b13,dpup:b12,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,paddle1:b11,paddle2:b10,rightshoulder:b5,righttrigger:a3,start:b7,x:b2,y:b3,platform:Linux, +03000000de2800000211000011010000,Steam Controller,a:b2,b:b3,back:b10,dpdown:b18,dpleft:b19,dpright:b20,dpup:b17,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,paddle1:b16,paddle2:b15,rightshoulder:b7,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b4,y:b5,platform:Linux, +03000000de2800004211000001000000,Steam Controller,a:b0,b:b1,back:b6,dpdown:b14,dpleft:b15,dpright:b13,dpup:b12,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,paddle1:b11,paddle2:b10,rightshoulder:b5,righttrigger:a3,start:b7,x:b2,y:b3,platform:Linux, +03000000de2800004211000011010000,Steam Controller,a:b2,b:b3,back:b10,dpdown:b18,dpleft:b19,dpright:b20,dpup:b17,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a7,leftx:a0,lefty:a1,paddle1:b16,paddle2:b15,rightshoulder:b7,righttrigger:a6,rightx:a2,righty:a3,start:b11,x:b4,y:b5,platform:Linux, +03000000de280000fc11000001000000,Steam Controller,a:b0,b:b1,back:b6,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +05000000de2800000212000001000000,Steam Controller,a:b0,b:b1,back:b6,dpdown:b14,dpleft:b15,dpright:b13,dpup:b12,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,paddle1:b11,paddle2:b10,rightshoulder:b5,righttrigger:a3,start:b7,x:b2,y:b3,platform:Linux, +05000000de2800000511000001000000,Steam Controller,a:b0,b:b1,back:b6,dpdown:b14,dpleft:b15,dpright:b13,dpup:b12,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,paddle1:b11,paddle2:b10,rightshoulder:b5,righttrigger:a3,start:b7,x:b2,y:b3,platform:Linux, +05000000de2800000611000001000000,Steam Controller,a:b0,b:b1,back:b6,dpdown:b14,dpleft:b15,dpright:b13,dpup:b12,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,paddle1:b11,paddle2:b10,rightshoulder:b5,righttrigger:a3,start:b7,x:b2,y:b3,platform:Linux, +03000000de2800000512000010010000,Steam Deck,a:b3,b:b4,back:b11,dpdown:b17,dpleft:b18,dpright:b19,dpup:b16,guide:b13,leftshoulder:b7,leftstick:b14,lefttrigger:a9,leftx:a0,lefty:a1,rightshoulder:b8,rightstick:b15,righttrigger:a8,rightx:a2,righty:a3,start:b12,x:b5,y:b6,platform:Linux, +03000000de280000ff11000001000000,Steam Virtual Gamepad,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +050000004e696d6275732b0000000000,SteelSeries Nimbus Plus,a:b0,b:b1,back:b10,guide:b11,leftshoulder:b4,leftstick:b8,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:b7,rightx:a2,righty:a3,start:b12,x:b2,y:b3,platform:Linux, +03000000381000003014000075010000,SteelSeries Stratus Duo,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +03000000381000003114000075010000,SteelSeries Stratus Duo,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +0500000011010000311400001b010000,SteelSeries Stratus Duo,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b32,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux, +05000000110100001914000009010000,SteelSeries Stratus XL,a:b0,b:b1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux, +03000000ad1b000038f0000090040000,Street Fighter IV Fightstick TE,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +030000003b07000004a1000000010000,Suncom SFX Plus,a:b0,b:b2,back:b7,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b6,lefttrigger:b4,rightshoulder:b9,righttrigger:b5,start:b8,x:b1,y:b3,platform:Linux, +03000000666600000488000000010000,Super Joy Box 5 Pro,a:b2,b:b1,back:b9,dpdown:b14,dpleft:b15,dpright:b13,dpup:b12,leftshoulder:b6,leftstick:b10,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b11,righttrigger:b5,rightx:a2,righty:a3,start:b8,x:b3,y:b0,platform:Linux, +0300000000f00000f100000000010000,Super RetroPort,a:b1,b:b5,back:b2,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b6,rightshoulder:b7,start:b3,x:b0,y:b4,platform:Linux, +030000008f0e00000d31000010010000,SZMY Power 3 Turbo,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux, +03000000457500000401000011010000,SZMY Power DS4 Wired Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,misc1:b13,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Linux, +03000000457500002211000010010000,SZMY Power Gamepad,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Linux, +030000008f0e00001431000010010000,SZMY Power PS3,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux, +03000000ba2200000701000001010000,Technology Innovation PS2 Adapter,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a5,righty:a2,start:b9,x:b3,y:b2,platform:Linux, +03000000790000001c18000011010000,TGZ Controller,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux, +03000000591c00002400000010010000,THEC64 Joystick,a:b0,b:b1,back:b6,leftshoulder:b4,leftx:a0,lefty:a1,rightshoulder:b5,start:b7,x:b2,y:b3,platform:Linux, +03000000591c00002600000010010000,THEGamepad,a:b2,b:b1,back:b6,leftshoulder:b4,leftx:a0,lefty:a1,rightshoulder:b5,start:b7,x:b3,y:b0,platform:Linux, +030000004f04000015b3000001010000,Thrustmaster Dual Analog 3.2,a:b0,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b5,leftx:a0,lefty:a1,rightshoulder:b6,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b1,y:b3,platform:Linux, +030000004f04000015b3000010010000,Thrustmaster Dual Analog 4,a:b0,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b5,leftx:a0,lefty:a1,rightshoulder:b6,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b1,y:b3,platform:Linux, +030000004f04000020b3000010010000,Thrustmaster Dual Trigger,a:b0,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b5,leftx:a0,lefty:a1,rightshoulder:b6,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b1,y:b3,platform:Linux, +030000004f04000023b3000000010000,Thrustmaster Dual Trigger PlayStation Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Linux, +030000004f0400000ed0000011010000,Thrustmaster eSwap Pro Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Linux, +03000000b50700000399000000010000,Thrustmaster Firestorm Digital 2,a:b2,b:b4,back:b11,leftshoulder:b6,leftstick:b10,lefttrigger:b7,leftx:a0,lefty:a1,rightshoulder:b8,rightstick:b0,righttrigger:b9,start:b1,x:b3,y:b5,platform:Linux, +030000004f04000003b3000010010000,Thrustmaster Firestorm Dual Analog 2,a:b0,b:b2,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b6,rightstick:b11,righttrigger:b9,rightx:a2,righty:a3,x:b1,y:b3,platform:Linux, +030000004f04000000b3000010010000,Thrustmaster Firestorm Dual Power,a:b0,b:b2,back:b9,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b11,lefttrigger:b5,leftx:a0,lefty:a1,rightshoulder:b6,rightstick:b12,righttrigger:b7,rightx:a2,righty:a3,start:b10,x:b1,y:b3,platform:Linux, +030000004f04000004b3000010010000,Thrustmaster Firestorm Dual Power,a:b0,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b5,leftx:a0,lefty:a1,rightshoulder:b6,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b1,y:b3,platform:Linux, +030000004f04000026b3000002040000,Thrustmaster GP XID,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +03000000c6240000025b000002020000,Thrustmaster GPX,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +030000004f04000008d0000000010000,Thrustmaster Run N Drive PlayStation Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Linux, +030000004f04000009d0000000010000,Thrustmaster Run N Drive PlayStation Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux, +030000004f04000007d0000000010000,Thrustmaster T Mini,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux, +030000004f04000012b3000010010000,Thrustmaster Vibrating Gamepad,a:b0,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b5,leftx:a0,lefty:a1,rightshoulder:b6,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b1,y:b3,platform:Linux, +03000000571d00002000000010010000,Tomee SNES Adapter,a:b0,b:b1,back:b6,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b4,rightshoulder:b5,start:b7,x:b2,y:b3,platform:Linux, +03000000bd12000015d0000010010000,Tomee SNES Controller,a:b2,b:b1,back:b8,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b4,rightshoulder:b5,start:b9,x:b3,y:b0,platform:Linux, +03000000d814000007cd000011010000,Toodles 2008 Chimp PC PS3,a:b0,b:b1,back:b8,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b7,start:b9,x:b3,y:b2,platform:Linux, +030000005e0400008e02000070050000,Torid,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +03000000c01100000591000011010000,Torid,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Linux, +03000000680a00000300000003000000,TRBot Virtual Joypad,a:b11,b:b12,back:b15,dpdown:b6,dpleft:b3,dpright:b4,dpup:b5,leftshoulder:b17,leftstick:b21,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b18,rightstick:b22,righttrigger:a2,rightx:a3,righty:a4,start:b16,x:b13,y:b14,platform:Linux, +03000000780300000300000003000000,TRBot Virtual Joypad,a:b11,b:b12,back:b15,dpdown:b6,dpleft:b3,dpright:b4,dpup:b5,leftshoulder:b17,leftstick:b21,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b18,rightstick:b22,righttrigger:a2,rightx:a3,righty:a4,start:b16,x:b13,y:b14,platform:Linux, +03000000e00d00000300000003000000,TRBot Virtual Joypad,a:b11,b:b12,back:b15,dpdown:b6,dpleft:b3,dpright:b4,dpup:b5,leftshoulder:b17,leftstick:b21,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b18,rightstick:b22,righttrigger:a2,rightx:a3,righty:a4,start:b16,x:b13,y:b14,platform:Linux, +03000000f00600000300000003000000,TRBot Virtual Joypad,a:b11,b:b12,back:b15,dpdown:b6,dpleft:b3,dpright:b4,dpup:b5,leftshoulder:b17,leftstick:b21,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b18,rightstick:b22,righttrigger:a2,rightx:a3,righty:a4,start:b16,x:b13,y:b14,platform:Linux, +030000005f140000c501000010010000,Trust Gamepad,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Linux, +06000000f51000000870000003010000,Turtle Beach Recon,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +03000000100800000100000010010000,Twin PS2 Adapter,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b10,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b11,righttrigger:b5,rightx:a3,righty:a2,start:b9,x:b3,y:b0,platform:Linux, +03000000151900005678000010010000,Uniplay U6,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux, +03000000100800000300000010010000,USB Gamepad,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b10,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b11,righttrigger:b5,rightx:a3,righty:a2,start:b9,x:b3,y:b0,platform:Linux, +03000000790000000600000007010000,USB gamepad,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a3,righty:a4,start:b9,x:b3,y:b0,platform:Linux, +03000000790000001100000000010000,USB Gamepad,a:b2,b:b1,back:b8,dpdown:a0,dpleft:a1,dpright:a2,dpup:a4,start:b9,platform:Linux, +030000006f0e00000302000011010000,Victrix Pro Fightstick PS4,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,start:b9,x:b0,y:b3,platform:Linux, +030000006f0e00000702000011010000,Victrix Pro Fightstick PS4,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,start:b9,x:b0,y:b3,platform:Linux, +05000000ac0500003232000001000000,VR Box Controller,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b10,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b11,righttrigger:b5,rightx:a3,righty:a2,start:b9,x:b2,y:b3,platform:Linux, +05000000434f4d4d414e440000000000,VX Gaming Command Series,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Linux, +0000000058626f782033363020576900,Xbox 360 Controller,a:b0,b:b1,back:b14,dpdown:b11,dpleft:b12,dpright:b13,dpup:b10,guide:b7,leftshoulder:b4,leftstick:b8,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:a5,rightx:a3,righty:a4,start:b6,x:b2,y:b3,platform:Linux, +030000005e0400001907000000010000,Xbox 360 Controller,a:b0,b:b1,back:b6,dpdown:b14,dpleft:b11,dpright:b12,dpup:b13,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +030000005e0400008e02000010010000,Xbox 360 Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +030000005e0400008e02000014010000,Xbox 360 Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +030000005e0400009102000007010000,Xbox 360 Controller,a:b0,b:b1,back:b6,dpdown:b14,dpleft:b11,dpright:b12,dpup:b13,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +030000005e040000a102000000010000,Xbox 360 Controller,a:b0,b:b1,back:b6,dpdown:b14,dpleft:b11,dpright:b12,dpup:b13,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +030000005e040000a102000007010000,Xbox 360 Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +030000005e0400008e02000000010000,Xbox 360 EasySMX,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +030000005e040000a102000014010000,Xbox 360 Receiver,a:b0,b:b1,back:b6,dpdown:b14,dpleft:b11,dpright:b12,dpup:b13,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +030000005e0400000202000000010000,Xbox Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b5,leftstick:b8,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b2,rightstick:b9,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b3,y:b4,platform:Linux, +030000006f0e00001304000000010000,Xbox Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +03000000ffff0000ffff000000010000,Xbox Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b5,leftstick:b8,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b2,rightstick:b9,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b3,y:b4,platform:Linux, +0000000058626f782047616d65706100,Xbox Gamepad,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a4,rightx:a2,righty:a3,start:b7,x:b2,y:b3,platform:Linux, +030000005e0400000a0b000005040000,Xbox One Controller,a:b1,b:b0,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b11,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b12,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b2,platform:Linux, +030000005e040000d102000002010000,Xbox One Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +030000005e040000ea02000000000000,Xbox One Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +030000005e040000ea02000001030000,Xbox One Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +050000005e040000e002000003090000,Xbox One Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b10,leftshoulder:b4,leftstick:b8,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +050000005e040000fd02000003090000,Xbox One Controller,a:b0,b:b1,back:b15,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b16,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux, +050000005e040000fd02000030110000,Xbox One Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +050000005e040000e302000002090000,Xbox One Elite,a:b0,b:b1,back:b136,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:a6,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a5,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux, +050000005e040000220b000013050000,Xbox One Elite 2 Controller,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux, +050000005e040000050b000002090000,Xbox One Elite Series 2,a:b0,b:b1,back:b136,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:a6,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a5,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux, +060000005e040000ea0200000b050000,Xbox One S Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +060000005e040000ea0200000d050000,Xbox One S Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +030000005e040000120b000001050000,Xbox Series Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +030000005e040000120b000005050000,Xbox Series Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +030000005e040000120b000007050000,Xbox Series Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,misc1:b11,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +030000005e040000120b000009050000,Xbox Series Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +030000005e040000120b00000d050000,Xbox Series Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,misc1:b11,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +030000005e040000120b00000f050000,Xbox Series Controller,a:b0,b:b1,back:b6,dpdown:b13,dpleft:b14,dpright:b15,dpup:b12,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +030000005e040000130b000005050000,Xbox Series Controller,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux, +050000005e040000130b000001050000,Xbox Series Controller,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux, +050000005e040000130b000005050000,Xbox Series Controller,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux, +050000005e040000130b000007050000,Xbox Series Controller,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,misc1:b15,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux, +050000005e040000130b000009050000,Xbox Series Controller,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,misc1:b15,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux, +050000005e040000130b000011050000,Xbox Series Controller,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,misc1:b15,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux, +050000005e040000130b000013050000,Xbox Series Controller,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,misc1:b15,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux, +050000005e040000130b000015050000,Xbox Series Controller,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,misc1:b15,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux, +060000005e040000120b000007050000,Xbox Series Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +060000005e040000120b00000b050000,Xbox Series Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +060000005e040000120b00000f050000,Xbox Series Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,misc1:b11,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +050000005e040000200b000013050000,Xbox Wireless Controller,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux, +03000000450c00002043000010010000,XEOX SL6556 BK,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Linux, +05000000172700004431000029010000,XiaoMi Controller,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b20,leftshoulder:b6,leftstick:b13,lefttrigger:a7,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a6,rightx:a2,righty:a5,start:b11,x:b3,y:b4,platform:Linux, +03000000c0160000e105000001010000,XinMo Dual Arcade,a:b4,b:b3,back:b6,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b9,leftshoulder:b2,leftx:a0,lefty:a1,rightshoulder:b5,start:b7,x:b1,y:b0,platform:Linux, +xinput,XInput Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +03000000120c0000100e000011010000,Zeroplus P4,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Linux, +03000000120c0000101e000011010000,Zeroplus P4,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Linux, + +# Android +38653964633230666463343334313533,8BitDo Adapter,a:b0,b:b1,back:b15,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b9,leftstick:b7,lefttrigger:b17,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:b18,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +36666264316630653965636634386234,8BitDo Adapter 2,a:b0,b:b1,back:b15,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b19,leftshoulder:b9,leftstick:b7,lefttrigger:b17,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:b18,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +38426974446f20417263616465205374,8BitDo Arcade Stick,a:b0,b:b1,back:b15,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,guide:b5,leftshoulder:b9,lefttrigger:a4,rightshoulder:b10,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +61393962646434393836356631636132,8BitDo Arcade Stick,a:b0,b:b1,back:b9,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b3,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b20,righttrigger:a5,rightx:a3,righty:a4,start:b10,x:b19,y:b2,platform:Android, +64323139346131306233636562663738,8BitDo Arcade Stick,a:b0,b:b1,back:b17,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b5,leftshoulder:b3,lefttrigger:b9,leftx:a0,lefty:a1,rightshoulder:b20,righttrigger:b10,rightx:a2,righty:a3,start:b18,x:b19,y:b2,platform:Android, +64643565386136613265663236636564,8BitDo Arcade Stick,a:b0,b:b1,back:b9,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b3,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b20,righttrigger:a5,rightx:a3,righty:a4,start:b10,x:b19,y:b2,platform:Android, +33313433353539306634656436353432,8BitDo Dogbone,a:b1,b:b0,back:b15,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftx:a0,lefty:a1,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +38426974446f20446f67626f6e65204d,8BitDo Dogbone,a:b1,b:b0,back:b15,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftx:a0,lefty:a1,rightx:a2,righty:a3,start:b6,platform:Android, +34343439373236623466343934376233,8BitDo FC30 Pro,a:b0,b:b1,back:b4,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b3,leftstick:b28,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b4,rightstick:b29,righttrigger:b7,start:b5,x:b30,y:b2,platform:Android, +38426974446f2038426974446f204c69,8BitDo Lite,a:b1,b:b0,back:b15,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b5,leftshoulder:b9,leftstick:b7,lefttrigger:b17,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:b18,rightx:a2,righty:a3,start:b6,x:b3,y:b2,platform:Android, +30643332373663313263316637356631,8BitDo Lite 2,a:b1,b:b0,back:b15,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b5,leftshoulder:b9,leftstick:b7,lefttrigger:b17,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:b18,rightx:a2,righty:a3,start:b6,x:b3,y:b2,platform:Android, +38426974446f204c6974652032000000,8BitDo Lite 2,a:b1,b:b0,back:b15,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b5,leftshoulder:b9,leftstick:b7,lefttrigger:b17,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:b18,rightx:a2,righty:a3,start:b6,x:b3,y:b2,platform:Android, +62656331626461363634633735353032,8BitDo Lite 2,a:b1,b:b0,back:b15,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b5,leftshoulder:b9,leftstick:b7,lefttrigger:b17,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:b18,rightx:a2,righty:a3,start:b6,x:b3,y:b2,platform:Android, +38393936616436383062666232653338,8BitDo Lite SE,a:b1,b:b0,back:b15,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b9,leftstick:b7,lefttrigger:b17,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:b18,rightx:a2,righty:a3,start:b6,x:b3,y:b2,platform:Android, +38426974446f204c6974652053450000,8BitDo Lite SE,a:b1,b:b0,back:b15,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b5,leftshoulder:b9,leftstick:b7,lefttrigger:b17,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:b18,rightx:a2,righty:a3,start:b6,x:b3,y:b2,platform:Android, +39356430616562366466646636643435,8BitDo Lite SE,a:b1,b:b0,back:b15,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b9,leftstick:b7,lefttrigger:b17,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:b18,rightx:a2,righty:a3,start:b6,x:b3,y:b2,platform:Android, +05000000c82d000006500000ffff3f00,8BitDo M30,a:b1,b:b0,back:b4,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,guide:b17,leftshoulder:b9,lefttrigger:a5,rightshoulder:b10,righttrigger:a4,start:b6,x:b3,y:b2,platform:Android, +05000000c82d000051060000ffff3f00,8BitDo M30,a:b1,b:b0,back:b4,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,guide:b17,leftshoulder:b9,lefttrigger:a4,rightshoulder:b10,righttrigger:a5,start:b6,x:b3,y:b2,platform:Android, +32323161363037623637326438643634,8BitDo M30,a:b0,b:b1,back:b15,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftx:a0,lefty:a1,rightshoulder:b9,righttrigger:b10,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +33656266353630643966653238646264,8BitDo M30,a:b0,b:b1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b3,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b20,righttrigger:a5,start:b10,x:b19,y:b2,platform:Android, +38426974446f204d3330204d6f646b69,8BitDo M30,a:b0,b:b1,back:b15,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftx:a0,lefty:a1,rightshoulder:b9,righttrigger:b10,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +39366630663062373237616566353437,8BitDo M30,a:b0,b:b1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b9,lefttrigger:b17,leftx:a0,lefty:a1,rightshoulder:b10,righttrigger:b18,start:b6,x:b2,y:b3,platform:Android, +64653533313537373934323436343563,8BitDo M30,a:b0,b:b1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:a4,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b9,righttrigger:b10,start:b6,x:b2,y:b3,platform:Android, +66356438346136366337386437653934,8BitDo M30,a:b0,b:b1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b3,lefttrigger:b9,leftx:a0,lefty:a1,rightshoulder:b20,righttrigger:b10,start:b18,x:b19,y:b2,platform:Android, +66393064393162303732356665666366,8BitDo M30,a:b0,b:b1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b9,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,righttrigger:a5,start:b6,x:b2,y:b3,platform:Android, +33663431326134333366393233616633,8BitDo N30,a:b1,b:b0,back:b15,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftx:a0,lefty:a1,rightx:a2,righty:a3,start:b6,platform:Android, +38426974446f204e3330204d6f646b69,8BitDo N30,a:b1,b:b0,back:b15,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftx:a0,lefty:a1,rightx:a2,righty:a3,start:b6,platform:Android, +05000000c82d000015900000ffff3f00,8BitDo N30 Pro 2,a:b1,b:b0,back:b4,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b9,leftstick:b7,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a4,rightx:a2,righty:a3,start:b6,x:b3,y:b2,platform:Android, +05000000c82d000065280000ffff3f00,8BitDo N30 Pro 2,a:b1,b:b0,back:b4,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b17,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b3,y:b2,platform:Android, +38323035343766666239373834336637,8BitDo N64,a:b0,b:b1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b5,leftshoulder:b9,lefttrigger:b17,leftx:a0,lefty:a1,rightshoulder:b10,righttrigger:b18,rightx:a2,righty:a3,start:b6,platform:Android, +38426974446f204e3634204d6f646b69,8BitDo N64,a:b0,b:b1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b5,leftshoulder:b9,lefttrigger:b17,leftx:a0,lefty:a1,rightshoulder:b10,righttrigger:b18,rightx:a2,righty:a3,start:b6,platform:Android, +050000000220000000900000ffff3f00,8BitDo NES30 Pro,a:b1,b:b0,back:b4,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b3,y:b2,platform:Android, +050000002038000009000000ffff3f00,8BitDo NES30 Pro,a:b1,b:b0,back:b4,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b3,y:b2,platform:Android, +38313433643131656262306631373166,8BitDo P30,a:b0,b:b1,back:b15,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b9,lefttrigger:b17,leftx:a0,lefty:a1,rightshoulder:b10,righttrigger:b18,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +38326536643339353865323063616339,8BitDo P30,a:b0,b:b1,back:b15,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b9,lefttrigger:b17,leftx:a0,lefty:a1,rightshoulder:b10,righttrigger:b18,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +38426974446f2050333020636c617373,8BitDo P30,a:b0,b:b1,back:b15,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b9,lefttrigger:b17,leftx:a0,lefty:a1,rightshoulder:b10,righttrigger:b18,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +35376664343164386333616535333434,8BitDo Pro 2,a:b0,b:b1,back:b9,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b3,leftstick:b17,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b20,rightstick:b18,righttrigger:a5,rightx:a3,start:b10,x:b19,y:b2,platform:Android, +38426974446f2038426974446f205072,8BitDo Pro 2,a:b1,b:b0,back:b15,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b5,leftshoulder:b9,leftstick:b7,lefttrigger:b17,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:b18,rightx:a2,righty:a3,start:b6,x:b3,y:b2,platform:Android, +38426974446f2050726f203200000000,8BitDo Pro 2,a:b1,b:b0,back:b15,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b5,leftshoulder:b9,leftstick:b7,lefttrigger:b17,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:b18,rightx:a2,righty:a3,start:b6,x:b3,y:b2,platform:Android, +62373739366537363166326238653463,8BitDo Pro 2,a:b1,b:b0,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,x:b3,y:b2,platform:Android, +38386464613034326435626130396565,8BitDo Receiver,a:b1,b:b0,back:b15,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b19,leftshoulder:b9,leftstick:b7,lefttrigger:b17,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:b18,rightx:a2,righty:a3,start:b6,x:b3,y:b2,platform:Android, +38426974446f2038426974446f205265,8BitDo Receiver,a:b1,b:b0,back:b15,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b19,leftshoulder:b9,leftstick:b7,lefttrigger:b17,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:b18,rightx:a2,righty:a3,start:b6,x:b3,y:b2,platform:Android, +66303230343038613365623964393766,8BitDo Receiver,a:b1,b:b0,back:b15,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b19,leftshoulder:b9,leftstick:b7,lefttrigger:b17,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:b18,rightx:a2,righty:a3,start:b6,x:b3,y:b2,platform:Android, +38426974446f20533330204d6f646b69,8BitDo S30,a:b0,b:b1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:a4,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b9,righttrigger:b10,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +66316462353561376330346462316137,8BitDo S30,a:b0,b:b1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:a4,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b9,righttrigger:b10,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +05000000c82d000000600000ffff3f00,8BitDo SF30 Pro,a:b1,b:b0,back:b4,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b9,leftstick:b7,lefttrigger:b15,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:b16,rightx:a2,righty:a3,start:b6,x:b3,y:b2,platform:Android, +05000000c82d000000610000ffff3f00,8BitDo SF30 Pro,a:b1,b:b0,back:b4,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b3,y:b2,platform:Android, +38426974646f20534633302050726f00,8BitDo SF30 Pro,a:b1,b:b0,back:b9,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b3,leftstick:b15,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b18,rightstick:b16,righttrigger:a5,rightx:a3,righty:a4,start:b10,x:b2,y:b17,platform:Android, +61623334636338643233383735326439,8BitDo SFC30,a:b0,b:b1,back:b4,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b3,rightshoulder:b31,start:b5,x:b30,y:b2,platform:Android, +05000000c82d000012900000ffff3f00,8BitDo SN30,a:b1,b:b0,back:b4,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b9,rightshoulder:b10,start:b6,x:b3,y:b2,platform:Android, +05000000c82d000062280000ffff3f00,8BitDo SN30,a:b1,b:b0,back:b4,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b9,rightshoulder:b10,start:b6,x:b3,y:b2,platform:Android, +38316230613931613964356666353839,8BitDo SN30,a:b1,b:b0,back:b15,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b9,leftx:a0,lefty:a1,rightshoulder:b10,rightx:a2,righty:a3,start:b6,x:b3,y:b2,platform:Android, +38426974446f20534e3330204d6f646b,8BitDo SN30,a:b1,b:b0,back:b15,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b9,leftx:a0,lefty:a1,rightshoulder:b10,rightx:a2,righty:a3,start:b6,x:b3,y:b2,platform:Android, +65323563303231646531383162646335,8BitDo SN30,a:b1,b:b0,back:b15,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b9,leftx:a0,lefty:a1,rightshoulder:b10,rightx:a2,righty:a3,start:b6,x:b3,y:b2,platform:Android, +35383531346263653330306238353131,8BitDo SN30 PP,a:b0,b:b1,back:b15,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +05000000c82d000001600000ffff3f00,8BitDo SN30 Pro,a:b1,b:b0,back:b4,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b9,leftstick:b7,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a4,rightx:a2,righty:a3,start:b6,x:b3,y:b2,platform:Android, +05000000c82d000002600000ffff0f00,8BitDo SN30 Pro Plus,a:b1,b:b0,back:b4,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b17,leftshoulder:b9,leftstick:b7,lefttrigger:b15,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:b16,rightx:a2,righty:a3,start:b6,x:b3,y:b2,platform:Android, +36653638656632326235346264663661,8BitDo SN30 Pro Plus,a:b0,b:b1,back:b17,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b3,leftstick:b15,lefttrigger:b9,leftx:a0,lefty:a1,rightshoulder:b20,rightstick:b6,righttrigger:b10,rightx:a2,righty:a3,start:b18,x:b19,y:b2,platform:Android, +38303232393133383836366330346462,8BitDo SN30 Pro Plus,a:b0,b:b1,back:b9,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b3,leftstick:b17,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b20,rightstick:b18,righttrigger:a5,rightx:a3,righty:a4,start:b10,x:b19,y:b2,platform:Android, +38346630346135363335366265656666,8BitDo SN30 Pro Plus,a:b1,b:b0,back:b15,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b9,leftstick:b7,lefttrigger:b17,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:b18,rightx:a2,righty:a3,start:b6,x:b3,y:b2,platform:Android, +38426974446f20534e33302050726f2b,8BitDo SN30 Pro Plus,a:b1,b:b0,back:b15,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b19,leftshoulder:b9,leftstick:b7,lefttrigger:b17,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:b18,rightx:a2,righty:a3,start:b6,x:b3,y:b2,platform:Android, +536f6e7920436f6d707574657220456e,8BitDo SN30 Pro Plus,a:b0,b:b1,back:b15,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b5,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +66306331643531333230306437353936,8BitDo SN30 Pro Plus,a:b1,b:b0,back:b15,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b9,leftstick:b7,lefttrigger:b17,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:b18,rightx:a2,righty:a3,start:b6,x:b3,y:b2,platform:Android, +050000002028000009000000ffff3f00,8BitDo SNES30,a:b1,b:b0,back:b4,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b3,y:b2,platform:Android, +050000003512000020ab000000780f00,8BitDo SNES30,a:b21,b:b20,back:b30,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b26,rightshoulder:b27,start:b31,x:b24,y:b23,platform:Android, +33666663316164653937326237613331,8BitDo Zero,a:b0,b:b1,back:b15,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b9,rightshoulder:b10,start:b6,x:b2,y:b3,platform:Android, +38426974646f205a65726f2047616d65,8BitDo Zero,a:b0,b:b1,back:b15,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b9,rightshoulder:b10,start:b6,x:b2,y:b3,platform:Android, +05000000c82d000018900000ffff0f00,8BitDo Zero 2,a:b1,b:b0,back:b4,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b9,rightshoulder:b10,start:b6,x:b3,y:b2,platform:Android, +05000000c82d000030320000ffff0f00,8BitDo Zero 2,a:b1,b:b0,back:b4,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b9,rightshoulder:b10,start:b6,x:b3,y:b2,platform:Android, +33663434393362303033616630346337,8BitDo Zero 2,a:b0,b:b1,back:b17,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b3,leftx:a0,lefty:a1,rightshoulder:b20,start:b18,x:b19,y:b2,platform:Android, +34656330626361666438323266633963,8BitDo Zero 2,a:b0,b:b1,back:b9,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftx:a0,lefty:a1,rightshoulder:b20,start:b10,x:b19,y:b2,platform:Android, +63396666386564393334393236386630,8BitDo Zero 2,a:b1,b:b0,back:b15,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b9,leftx:a0,lefty:a1,rightshoulder:b10,start:b6,x:b3,y:b2,platform:Android, +63633435623263373466343461646430,8BitDo Zero 2,a:b1,b:b0,back:b15,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b9,leftx:a0,lefty:a1,rightshoulder:b10,start:b6,x:b2,y:b3,platform:Android, +32333634613735616163326165323731,Amazon Luna Controller,a:b0,b:b1,back:b4,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,x:b2,y:b3,platform:Android, +417374726f2063697479206d696e6920,Astro City Mini,a:b23,b:b22,back:b29,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,rightshoulder:b25,righttrigger:b26,start:b30,x:b24,y:b21,platform:Android, +35643263313264386134376362363435,Atari VCS Classic Controller,a:b0,b:b1,back:b4,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b5,start:b6,platform:Android, +32353831643566306563643065356239,Atari VCS Modern Controller,a:b0,b:b1,back:b4,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b5,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +32303165626138343962363666346165,Brook Mars PS4 Controller,a:b1,b:b19,back:b17,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b3,leftstick:b15,lefttrigger:b9,leftx:a0,lefty:a1,rightshoulder:b20,rightstick:b6,righttrigger:b10,rightx:a2,righty:a3,start:b18,x:b0,y:b2,platform:Android, +38383337343564366131323064613561,Brook Mars PS4 Controller,a:b1,b:b19,back:b17,leftshoulder:b3,leftstick:b15,lefttrigger:b9,leftx:a0,lefty:a1,rightshoulder:b20,rightstick:b6,righttrigger:b10,rightx:a2,righty:a3,start:b18,x:b0,y:b2,platform:Android, +34313430343161653665353737323365,Elecom JC-W01U,a:b23,b:b24,back:b29,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b25,lefttrigger:b27,leftx:a0,lefty:a1,rightshoulder:b26,righttrigger:b28,rightx:a2,righty:a3,start:b30,x:b21,y:b22,platform:Android, +4875694a6961204a432d573031550000,Elecom JC-W01U,a:b23,b:b24,back:b29,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b25,lefttrigger:b27,leftx:a0,lefty:a1,rightshoulder:b26,righttrigger:b28,rightx:a2,righty:a3,start:b30,x:b21,y:b22,platform:Android, +30363230653635633863366338623265,Evo VR,a:b0,b:b1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftx:a0,lefty:a1,x:b2,y:b3,platform:Android, +05000000b404000011240000dfff3f00,Flydigi Vader 2,a:b0,b:b1,back:b4,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,paddle1:b17,paddle2:b18,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +05000000bc20000000550000ffff3f00,GameSir G3w,a:b0,b:b1,back:b4,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b9,leftstick:b7,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a4,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +34323662653333636330306631326233,Google Nexus,a:b0,b:b1,back:b4,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +35383633353935396534393230616564,Google Stadia Controller,a:b0,b:b1,back:b15,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +05000000d6020000e5890000dfff3f00,GPD XD Plus,a:b0,b:b1,back:b4,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b9,leftstick:b7,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a4,rightx:a2,righty:a5,start:b6,x:b2,y:b3,platform:Android, +05000000d6020000e5890000dfff3f80,GPD XD Plus,a:b0,b:b1,back:b4,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b9,leftstick:b7,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a3,rightx:a4,righty:a5,start:b6,x:b2,y:b3,platform:Android, +66633030656131663837396562323935,Hori Battle,a:b0,b:b1,back:b15,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b9,leftstick:b7,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a3,righty:a4,start:b6,x:b2,y:b3,platform:Android, +35623466343433653739346434636330,Hori Fighting Commander 3 Pro,a:b1,b:b19,back:b17,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b3,lefttrigger:b9,leftx:a0,lefty:a1,rightshoulder:b20,righttrigger:b10,rightx:a2,righty:a3,start:b18,x:b0,y:b2,platform:Android, +484f524920434f2e2c4c54442e203130,Hori Fighting Commander 3 Pro,a:b1,b:b19,back:b17,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b5,leftshoulder:b20,lefttrigger:b10,leftx:a0,lefty:a1,rightshoulder:b3,righttrigger:b9,rightx:a2,righty:a3,start:b18,x:b0,y:b2,platform:Android, +484f524920434f2e2c4c544420205041,Hori Gem Pad 3,a:b1,b:b17,back:b15,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b3,leftstick:b4,lefttrigger:b9,leftx:a0,lefty:a1,rightshoulder:b18,rightstick:b6,righttrigger:b10,rightx:a2,righty:a3,start:b16,x:b0,y:b2,platform:Android, +65656436646661313232656661616130,Hori PC Engine Mini Controller,a:b1,b:b19,back:b17,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,start:b18,platform:Android, +31303433326562636431653534636633,Hori Real Arcade Pro 3,a:b1,b:b19,back:b17,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b3,lefttrigger:b9,leftx:a0,lefty:a1,rightshoulder:b20,righttrigger:b10,rightx:a2,righty:a3,start:b18,x:b0,y:b2,platform:Android, +32656664353964393561366362333636,Hori Switch Split Pad Pro,a:b0,b:b1,back:b15,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b5,leftshoulder:b9,leftstick:b7,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a3,righty:a4,start:b6,x:b2,y:b3,platform:Android, +30306539356238653637313730656134,HORIPAD Switch Pro Controller,a:b0,b:b1,back:b17,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b5,leftshoulder:b3,leftstick:b15,lefttrigger:b9,leftx:a0,lefty:a1,rightshoulder:b20,rightstick:b6,righttrigger:b10,rightx:a2,righty:a3,start:b18,x:b19,y:b2,platform:Android, +48797065726b696e2050616400000000,Hyperkin Admiral N64 Controller,+rightx:b6,+righty:b7,-rightx:b17,-righty:b5,a:b1,b:b0,leftshoulder:b3,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b20,start:b18,platform:Android, +62333331353131353034386136626636,Hyperkin Admiral N64 Controller,+rightx:b6,+righty:b7,-rightx:b17,-righty:b5,a:b1,b:b0,leftshoulder:b3,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b20,start:b18,platform:Android, +31306635363562663834633739396333,Hyperkin N64 Adapter,a:b1,b:b19,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b3,lefttrigger:b9,leftx:a0,lefty:a1,rightshoulder:b20,rightx:a2,righty:a3,start:b18,platform:Android, +5368616e57616e202020202048797065,Hyperkin N64 Adapter,a:b1,b:b19,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b3,lefttrigger:b9,leftx:a0,lefty:a1,rightshoulder:b20,rightx:a2,righty:a3,start:b18,platform:Android, +0500000083050000602000000ffe0000,iBuffalo SNES Controller,a:b0,b:b1,back:b9,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b15,rightshoulder:b16,start:b10,x:b2,y:b3,platform:Android, +5553422c322d6178697320382d627574,iBuffalo Super Famicom Controller,a:b1,b:b0,back:b9,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b17,rightshoulder:b18,start:b10,x:b3,y:b2,platform:Android, +64306137363261396266353433303531,InterAct GoPad,a:b24,b:b25,leftshoulder:b23,lefttrigger:b27,leftx:a0,lefty:a1,rightshoulder:b26,righttrigger:b28,x:b21,y:b22,platform:Android, +532e542e442e20496e74657261637420,InterAct HammerHead FX,a:b23,b:b24,back:b30,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b26,leftstick:b22,lefttrigger:b28,leftx:a0,lefty:a1,rightshoulder:b27,rightstick:b25,righttrigger:b29,rightx:a2,righty:a3,start:b31,x:b20,y:b21,platform:Android, +65346535636333663931613264643164,Joy-Con,a:b21,b:b22,back:b29,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b25,lefttrigger:b27,leftx:a0,lefty:a1,rightshoulder:b26,righttrigger:b28,rightx:a2,righty:a3,start:b30,x:b23,y:b24,platform:Android, +33346566643039343630376565326335,Joy-Con (L),a:b0,b:b1,back:b7,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b3,leftstick:b15,rightshoulder:b20,start:b17,x:b19,y:b2,platform:Android, +35313531613435623366313835326238,Joy-Con (L),a:b0,b:b1,back:b7,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b3,leftstick:b15,rightshoulder:b20,start:b17,x:b19,y:b2,platform:Android, +4a6f792d436f6e20284c290000000000,Joy-Con (L),a:b0,b:b1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b3,rightshoulder:b20,start:b17,x:b19,y:b2,platform:Android, +38383665633039363066383334653465,Joy-Con (R),a:b0,b:b1,back:b5,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b3,leftstick:b15,rightshoulder:b20,start:b18,x:b19,y:b2,platform:Android, +39363561613936303237333537383931,Joy-Con (R),a:b0,b:b1,back:b5,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b3,leftstick:b15,rightshoulder:b20,start:b18,x:b19,y:b2,platform:Android, +4a6f792d436f6e202852290000000000,Joy-Con (R),a:b0,b:b1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b3,rightshoulder:b20,start:b18,x:b19,y:b2,platform:Android, +39656136363638323036303865326464,JYS Aapter,a:b1,b:b19,back:b17,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b3,leftstick:b15,lefttrigger:b9,leftx:a0,lefty:a1,rightshoulder:b20,rightstick:b6,righttrigger:b10,rightx:a2,righty:a3,start:b18,x:b0,y:b2,platform:Android, +63316564383539663166353034616434,JYS Adapter,a:b1,b:b3,back:b15,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b9,leftstick:b7,lefttrigger:b17,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:b18,rightx:a2,righty:a3,start:b6,x:b0,y:b2,platform:Android, +64623163333561643339623235373232,Logitech F310,a:b0,b:b1,back:b4,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +35623364393661626231343866613337,Logitech F710,a:b0,b:b1,back:b4,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b9,leftstick:b7,lefttrigger:b17,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:b18,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +4c6f6769746563682047616d65706164,Logitech F710,a:b0,b:b1,back:b4,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +64396331333230326333313330336533,Logitech F710,a:b0,b:b1,back:b4,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +39653365373864633935383236363438,Logitech G Cloud,a:b0,b:b1,back:b15,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b5,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +416d617a6f6e2047616d6520436f6e74,Luna Controller,a:b0,b:b1,back:b15,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b5,leftshoulder:b9,leftstick:b7,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a3,righty:a4,start:b6,x:b2,y:b3,platform:Android, +4c756e612047616d6570616400000000,Luna Controller,a:b0,b:b1,back:b4,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +30363066623539323534363639323363,Magic NS,a:b1,b:b19,back:b17,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b3,leftstick:b15,lefttrigger:b9,leftx:a0,lefty:a1,rightshoulder:b20,rightstick:b6,righttrigger:b10,rightx:a2,righty:a3,start:b18,x:b0,y:b2,platform:Android, +31353762393935386662336365626334,Magic NS,a:b1,b:b19,back:b17,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b3,leftstick:b15,lefttrigger:b9,leftx:a0,lefty:a1,rightshoulder:b20,rightstick:b6,righttrigger:b10,rightx:a2,righty:a3,start:b18,x:b0,y:b2,platform:Android, +39623565346366623931666633323530,Magic NS,a:b1,b:b3,back:b15,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b9,leftstick:b7,lefttrigger:b17,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:b18,rightx:a2,righty:a3,start:b6,x:b0,y:b2,platform:Android, +6d6179666c617368206c696d69746564,Mayflash GameCube Adapter,a:b22,b:b21,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,lefttrigger:b25,leftx:a0,lefty:a1,rightshoulder:b28,righttrigger:b26,rightx:a5,righty:a2,start:b30,x:b23,y:b24,platform:Android, +436f6e74726f6c6c6572000000000000,Mayflash N64 Adapter,a:b1,b:b19,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b5,leftshoulder:b3,lefttrigger:b9,leftx:a0,lefty:a1,rightshoulder:b20,rightx:a2,righty:a3,start:b18,platform:Android, +65666330633838383061313633326461,Mayflash N64 Adapter,a:b1,b:b19,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b5,leftshoulder:b3,lefttrigger:b9,leftx:a0,lefty:a1,rightshoulder:b20,rightx:a2,righty:a3,start:b18,platform:Android, +37316565396364386635383230353365,Mayflash Saturn Adapter,a:b21,b:b22,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b26,lefttrigger:b28,rightshoulder:b27,righttrigger:b23,start:b30,x:b24,y:b25,platform:Android, +4875694a696120205553422047616d65,Mayflash Saturn Adapter,a:b21,b:b22,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b26,lefttrigger:b28,rightshoulder:b27,righttrigger:b23,start:b30,x:b24,y:b25,platform:Android, +535a4d792d706f776572204c54442043,Mayflash Wii Classic Adapter,a:b23,b:b22,back:b29,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b31,leftshoulder:b27,lefttrigger:b25,leftx:a0,lefty:a1,rightshoulder:b28,righttrigger:b26,rightx:a2,righty:a3,start:b30,x:b24,y:b21,platform:Android, +30653962643666303631376438373532,Mayflash Wii DolphinBar,a:b23,b:b24,back:b29,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b0,leftshoulder:b25,lefttrigger:b27,leftx:a0,lefty:a1,rightshoulder:b26,righttrigger:b28,rightx:a2,righty:a3,start:b30,x:b21,y:b22,platform:Android, +39346131396233376535393665363161,Mayflash Wii U Pro Adapter,a:b22,b:b23,back:b29,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b25,leftstick:b31,lefttrigger:b27,rightshoulder:b26,rightstick:b0,righttrigger:b28,rightx:a0,righty:a1,start:b30,x:b21,y:b24,platform:Android, +31323564663862633234646330373138,Mega Drive,a:b23,b:b22,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,rightshoulder:b25,righttrigger:b26,start:b30,x:b24,y:b21,platform:Android, +37333564393261653735306132613061,Mega Drive,a:b21,b:b22,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b26,lefttrigger:b28,rightshoulder:b27,righttrigger:b23,start:b30,x:b24,y:b25,platform:Android, +64363363336633363736393038313464,Mega Drive,a:b1,b:b0,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,start:b9,x:b2,y:b3,platform:Android, +33323763323132376537376266393366,Microsoft Dual Strike,a:b24,b:b23,back:b25,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b27,lefttrigger:b29,rightshoulder:b78,rightx:a0,righty:a1~,start:b26,x:b22,y:b21,platform:Android, +30306461613834333439303734316539,Microsoft SideWinder Pro,a:b0,b:b1,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b20,lefttrigger:b9,rightshoulder:b19,righttrigger:b10,start:b17,x:b2,y:b3,platform:Android, +32386235353630393033393135613831,Microsoft Xbox Series Controller,a:b0,b:b1,back:b4,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b5,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +4d4f435554452d303533582d4d35312d,Mocute 053X,a:b0,b:b1,back:b15,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b5,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +33343361376163623438613466616531,Mocute M053,a:b0,b:b1,back:b15,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b9,leftstick:b7,lefttrigger:b17,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:b18,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +39306635663061636563316166303966,Mocute M053,a:b0,b:b1,back:b15,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b9,leftstick:b7,lefttrigger:b17,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:b18,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +7573622067616d657061642020202020,NEXT SNES Controller,a:b2,b:b1,back:b8,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b4,rightshoulder:b5,righttrigger:b6,start:b9,x:b3,y:b0,platform:Android, +050000007e05000009200000ffff0f00,Nintendo Switch Pro Controller,a:b0,b:b1,back:b15,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b5,leftshoulder:b3,leftstick:b4,lefttrigger:b9,leftx:a0,lefty:a1,rightshoulder:b18,rightstick:b6,righttrigger:b10,rightx:a2,righty:a3,start:b16,x:b17,y:b2,platform:Android, +34323437396534643531326161633738,Nintendo Switch Pro Controller,a:b0,b:b1,back:b15,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b9,leftstick:b7,lefttrigger:b17,misc1:b5,rightshoulder:b10,rightstick:b8,righttrigger:b18,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +50726f20436f6e74726f6c6c65720000,Nintendo Switch Pro Controller,a:b0,b:b1,back:b17,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b2,lefttrigger:b9,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b10,rightx:a2,righty:a3,start:b18,y:b3,platform:Android, +36326533353166323965623661303933,NSO N64 Controller,+rightx:b17,+righty:b10,-rightx:b2,-righty:b19,a:b1,b:b0,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b5,leftshoulder:b3,lefttrigger:b9,leftx:a0,lefty:a1,misc1:b7,rightshoulder:b20,righttrigger:b15,start:b18,platform:Android, +4e363420436f6e74726f6c6c65720000,NSO N64 Controller,+rightx:b17,+righty:b10,-rightx:b2,-righty:b19,a:b1,b:b0,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b5,leftshoulder:b3,lefttrigger:b9,leftx:a0,lefty:a1,misc1:b7,rightshoulder:b20,righttrigger:b15,start:b18,platform:Android, +534e455320436f6e74726f6c6c657200,NSO SNES Controller,a:b0,b:b1,back:b17,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b3,rightshoulder:b20,start:b18,x:b19,y:b2,platform:Android, +64623863346133633561626136366634,NSO SNES Controller,a:b0,b:b1,back:b17,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b3,rightshoulder:b20,start:b18,x:b19,y:b2,platform:Android, +050000005509000003720000cf7f3f00,NVIDIA Controller,a:b0,b:b1,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +050000005509000010720000ffff3f00,NVIDIA Controller,a:b0,b:b1,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +050000005509000014720000df7f3f00,NVIDIA Controller,a:b0,b:b1,back:b4,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b9,leftstick:b7,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a4,rightx:a2,righty:a5,start:b6,x:b2,y:b3,platform:Android, +050000005509000014720000df7f3f80,NVIDIA Controller,a:b0,b:b1,back:b4,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b9,leftstick:b7,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a3,rightx:a4,righty:a5,start:b6,x:b2,y:b3,platform:Android, +37336435666338653565313731303834,NVIDIA Controller,a:b0,b:b1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +4e564944494120436f72706f72617469,NVIDIA Controller,a:b0,b:b1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +61363931656135336130663561616264,NVIDIA Controller,a:b0,b:b1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +39383335313438623439373538343266,OUYA Controller,a:b0,b:b2,dpdown:b18,dpleft:b15,dpright:b16,dpup:b17,leftshoulder:b3,leftstick:b9,lefttrigger:b5,leftx:a0,lefty:a1,rightshoulder:b20,rightstick:b10,righttrigger:b7,rightx:a3,righty:a4,x:b1,y:b19,platform:Android, +4f5559412047616d6520436f6e74726f,OUYA Controller,a:b0,b:b2,dpdown:b18,dpleft:b15,dpright:b6,dpup:b17,leftshoulder:b3,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b20,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,x:b1,y:b19,platform:Android, +506572666f726d616e63652044657369,PDP PS3 Rock Candy Controller,a:b1,b:b17,back:h0.2,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b3,leftstick:b4,lefttrigger:b9,leftx:a0,lefty:a1,rightshoulder:b18,rightstick:b6,righttrigger:b10,rightx:a2,righty:a3,start:b16,x:b0,y:b2,platform:Android, +62653335326261303663356263626339,PlayStation Classic Controller,a:b19,b:b1,back:b17,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b9,lefttrigger:b3,rightshoulder:b10,righttrigger:b20,start:b18,x:b2,y:b0,platform:Android, +536f6e7920496e746572616374697665,PlayStation Controller,a:b0,b:b1,back:b15,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b5,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,misc1:b8,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +576972656c65737320436f6e74726f6c,PlayStation Controller,a:b0,b:b1,back:b15,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b5,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +61653962353232366130326530363061,Pokken,a:b1,b:b19,back:b17,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b3,lefttrigger:b9,rightshoulder:b20,righttrigger:b10,start:b18,x:b0,y:b2,platform:Android, +32666633663735353234363064386132,PS2,a:b23,b:b22,back:b29,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b27,lefttrigger:b25,leftx:a0,lefty:a1,rightshoulder:b28,righttrigger:b26,rightx:a3,righty:a2,start:b30,x:b24,y:b21,platform:Android, +050000004c05000068020000dfff3f00,PS3 Controller,a:b0,b:b1,back:b4,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +536f6e7920504c415953544154494f4e,PS3 Controller,a:b0,b:b1,back:b15,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b5,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +61363034663839376638653463633865,PS3 Controller,a:b0,b:b1,back:b15,dpdown:a14,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b9,leftstick:b7,lefttrigger:b17,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:b18,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +66366539656564653432353139356536,PS3 Controller,a:b0,b:b1,back:b4,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +66383132326164626636313737373037,PS3 Controller,a:b0,b:b1,back:b4,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +050000004c050000c405000000783f00,PS4 Controller,a:b0,b:b1,back:b4,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b5,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +050000004c050000c4050000fffe3f00,PS4 Controller,a:b1,b:b17,back:b15,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b5,leftshoulder:b3,leftstick:b4,lefttrigger:+a3,leftx:a0,lefty:a1,rightshoulder:b18,rightstick:b6,righttrigger:+a4,rightx:a2,righty:a5,start:b16,x:b0,y:b2,platform:Android, +050000004c050000c4050000fffe3f80,PS4 Controller,a:b1,b:b17,back:b15,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b5,leftshoulder:b3,leftstick:b4,lefttrigger:+a2,leftx:a0,lefty:a1,rightshoulder:b18,rightstick:b6,righttrigger:+a3,rightx:a4,righty:a5,start:b16,x:b0,y:b2,platform:Android, +050000004c050000c4050000ffff3f00,PS4 Controller,a:b0,b:b1,back:b4,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b5,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +050000004c050000cc090000fffe3f00,PS4 Controller,a:b0,b:b1,back:b4,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b5,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +050000004c050000cc090000ffff3f00,PS4 Controller,a:b0,b:b1,back:b4,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b5,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +30303839663330346632363232623138,PS4 Controller,a:b1,b:b17,back:b15,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b3,leftstick:b4,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b18,rightstick:b6,righttrigger:a4,rightx:a2,righty:a5,start:b16,x:b0,y:b2,platform:Android, +31326235383662333266633463653332,PS4 Controller,a:b1,b:b16,back:b15,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b3,leftstick:b4,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b18,rightstick:b6,righttrigger:a4,rightx:a2,righty:a5,start:b17,x:b0,y:b2,platform:Android, +31373231336561636235613666323035,PS4 Controller,a:b0,b:b1,back:b15,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b5,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +31663838336334393132303338353963,PS4 Controller,a:b0,b:b1,back:b4,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b9,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +34613139376634626133336530386430,PS4 Controller,a:b0,b:b1,back:b15,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +35643031303033326130316330353564,PS4 Controller,a:b1,b:b17,back:b15,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b5,leftshoulder:b3,leftstick:b4,lefttrigger:+a3,leftx:a0,lefty:a1,rightshoulder:b18,rightstick:b6,righttrigger:+a4,rightx:a2,righty:a5,start:b16,x:b0,y:b2,platform:Android, +37626233336235343937333961353732,PS4 Controller,a:b0,b:b1,back:b15,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +37626464343430636562316661643863,PS4 Controller,a:b0,b:b1,back:b15,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +38393161636261653636653532386639,PS4 Controller,a:b0,b:b1,back:b15,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +63313733393535663339656564343962,PS4 Controller,a:b0,b:b1,back:b15,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +63393662363836383439353064663939,PS4 Controller,a:b0,b:b1,back:b4,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +65366465656364636137653363376531,PS4 Controller,a:b1,b:b19,back:b17,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b3,leftstick:b15,lefttrigger:b9,leftx:a0,lefty:a1,rightshoulder:b20,rightstick:b6,righttrigger:b10,rightx:a2,righty:a3,start:b18,x:b0,y:b2,platform:Android, +66613532303965383534396638613230,PS4 Controller,a:b1,b:b19,back:b17,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b3,leftstick:b15,lefttrigger:b9,leftx:a0,lefty:a1,rightshoulder:b20,rightstick:b6,righttrigger:b10,rightx:a2,righty:a5,start:b18,x:b0,y:b2,platform:Android, +050000004c050000e60c0000fffe3f00,PS5 Controller,a:b1,b:b17,back:b15,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b5,leftshoulder:b3,leftstick:b4,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b18,rightstick:b6,righttrigger:a4,rightx:a2,righty:a5,start:b16,x:b0,y:b2,platform:Android, +050000004c050000e60c0000fffe3f80,PS5 Controller,a:b1,b:b17,back:b15,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b5,leftshoulder:b3,leftstick:b4,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b18,rightstick:b6,righttrigger:a3,rightx:a4,righty:a5,start:b16,x:b0,y:b2,platform:Android, +050000004c050000e60c0000ffff3f00,PS5 Controller,a:b0,b:b1,back:b4,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b5,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +32346465346533616263386539323932,PS5 Controller,a:b0,b:b1,back:b15,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b5,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +32633532643734376632656664383733,PS5 Controller,a:b1,b:b19,back:b17,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b3,leftstick:b15,lefttrigger:b9,leftx:a0,lefty:a1,rightshoulder:b20,rightstick:b6,righttrigger:b10,rightx:a2,righty:a5,start:b18,x:b0,y:b2,platform:Android, +37363764353731323963323639666565,PS5 Controller,a:b1,b:b19,back:b17,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b3,leftstick:b15,lefttrigger:b9,leftx:a0,lefty:a1,rightshoulder:b20,rightstick:b6,righttrigger:b10,rightx:a2,righty:a5,start:b18,x:b0,y:b2,platform:Android, +61303162353165316365336436343139,PS5 Controller,a:b1,b:b19,back:b17,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b3,leftstick:b15,lefttrigger:b9,leftx:a0,lefty:a1,misc1:b8,rightshoulder:b20,rightstick:b6,righttrigger:b10,rightx:a2,righty:a5,start:b18,x:b0,y:b2,platform:Android, +64336263393933626535303339616332,Qanba 4RAF,a:b0,b:b1,back:b17,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b20,lefttrigger:b10,leftx:a0,lefty:a1,rightshoulder:b3,righttrigger:b9,rightx:a2,righty:a3,start:b18,x:b19,y:b2,platform:Android, +36626666353861663864336130363137,Razer Junglecat,a:b0,b:b1,back:b4,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +05000000f8270000bf0b0000ffff3f00,Razer Kishi,a:b0,b:b1,back:b4,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b5,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +62653861643333663663383332396665,Razer Kishi,a:b0,b:b1,back:b4,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b5,leftshoulder:b9,leftstick:b7,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a4,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +050000003215000005070000ffff3f00,Razer Raiju Mobile,a:b0,b:b1,back:b4,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +050000003215000007070000ffff3f00,Razer Raiju Mobile,a:b0,b:b1,back:b4,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +050000003215000000090000bf7f3f00,Razer Serval,a:b0,b:b1,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b5,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,x:b2,y:b3,platform:Android, +5a6869587520526574726f2042697420,Retro Bit Saturn Controller,a:b21,b:b22,back:b29,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b25,lefttrigger:b26,rightshoulder:b27,righttrigger:b28,start:b30,x:b23,y:b24,platform:Android, +32417865732031314b6579732047616d,Retro Bit SNES Controller,a:b0,b:b1,back:b15,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b9,rightshoulder:b10,start:b6,x:b2,y:b3,platform:Android, +36313938306539326233393732613361,Retro Bit SNES Controller,a:b0,b:b1,back:b15,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b9,rightshoulder:b10,start:b6,x:b2,y:b3,platform:Android, +526574726f466c616720576972656420,Retro Controller,a:b0,b:b1,back:b9,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b17,rightshoulder:b18,start:b10,x:b2,y:b3,platform:Android, +61343739353764363165343237303336,Retro Controller,a:b0,b:b1,back:b9,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b17,lefttrigger:b18,leftx:a0,lefty:a1,start:b10,x:b2,y:b3,platform:Android, +38653130373365613538333235303036,Retroid Pocket 2,a:b0,b:b1,back:b15,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b9,lefttrigger:b17,leftx:a0,lefty:a1,rightshoulder:b10,righttrigger:b18,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +526574726f696420506f636b65742043,Retroid Pocket Flip,a:b1,b:b0,back:b4,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b9,leftstick:b7,lefttrigger:a5,leftx:a0,lefty:a1,paddle1:b17,paddle2:b18,rightshoulder:b10,rightstick:b8,righttrigger:a4,rightx:a2,righty:a3,start:b6,x:b3,y:b2,platform:Android, +582d426f7820436f6e74726f6c6c6572,Retroid Pocket Flip,a:b0,b:b1,back:b4,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b9,leftstick:b7,lefttrigger:a5,leftx:a0,lefty:a1,paddle1:b17,paddle2:b18,rightshoulder:b10,rightstick:b8,righttrigger:a4,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +64363363336633363736393038313463,Retrolink,a:b1,b:b0,back:b15,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,start:b6,platform:Android, +37393234373533633333323633646531,RetroUSB N64 RetroPort,+rightx:b17,+righty:b15,-rightx:b18,-righty:b6,a:b10,b:b9,dpdown:b19,dpleft:b1,dpright:b0,dpup:b2,leftshoulder:b7,lefttrigger:b20,leftx:a0,lefty:a1,rightshoulder:b5,start:b3,platform:Android, +5365616c6965436f6d707574696e6720,RetroUSB N64 RetroPort,+rightx:b17,+righty:b15,-rightx:b18,-righty:b6,a:b10,b:b9,dpdown:b19,dpleft:b1,dpright:b0,dpup:b2,leftshoulder:b7,lefttrigger:b20,leftx:a0,lefty:a1,rightshoulder:b5,start:b3,platform:Android, +526574726f5553422e636f6d20534e45,RetroUSB SNES RetroPort,a:b1,b:b20,back:b19,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b9,rightshoulder:b10,start:b2,x:b0,y:b3,platform:Android, +64643037633038386238303966376137,RetroUSB SNES RetroPort,a:b1,b:b20,back:b19,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b9,rightshoulder:b10,start:b2,x:b0,y:b3,platform:Android, +37656564346533643138636436356230,Rock Candy Switch Controller,a:b1,b:b19,back:b17,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b5,leftshoulder:b3,leftstick:b15,lefttrigger:b9,leftx:a0,lefty:a1,misc1:b7,rightshoulder:b20,rightstick:b6,righttrigger:b10,rightx:a2,righty:a3,start:b18,x:b0,y:b2,platform:Android, +33373336396634316434323337666361,RumblePad 2,a:b22,b:b23,back:b29,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b25,lefttrigger:b27,leftx:a0,lefty:a1,rightshoulder:b26,righttrigger:b28,rightx:a2,righty:a3,start:b30,x:b21,y:b24,platform:Android, +36363537303435333566386638366333,Samsung EIGP20,a:b0,b:b1,back:b15,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b5,leftshoulder:b9,leftstick:b7,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +53616d73756e672047616d6520506164,Samsung EIGP20,a:b0,b:b1,back:b15,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b5,leftshoulder:b9,leftstick:b7,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +66386565396238363534313863353065,Sanwa PlayOnline Mobile,a:b21,b:b22,back:b23,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,start:b24,platform:Android, +32383165316333383766336338373261,Saturn,a:b0,b:b1,back:b4,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b9,lefttrigger:b10,leftx:a0,lefty:a1,rightshoulder:a4,righttrigger:a5,x:b2,y:b3,platform:Android, +38613865396530353338373763623431,Saturn,a:b0,b:b1,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b9,lefttrigger:b10,rightshoulder:b20,righttrigger:b19,start:b17,x:b2,y:b3,platform:Android, +61316232336262373631343137633631,Saturn,a:b0,b:b1,back:b4,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b9,lefttrigger:b10,leftx:a0,lefty:a1,rightshoulder:a4,righttrigger:a5,x:b2,y:b3,platform:Android, +30353835333338613130373363646337,SG H510,a:b0,b:b1,back:b9,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b3,leftstick:b17,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b20,rightstick:b18,righttrigger:a5,rightx:a3,righty:a4,start:b10,x:b19,y:b2,platform:Android, +66386262366536653765333235343634,SG H510,a:b0,b:b1,back:b4,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,x:b2,y:b3,platform:Android, +66633132393363353531373465633064,SG H510,a:b0,b:b1,back:b9,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b3,leftstick:b17,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b20,rightstick:b18,righttrigger:a5,rightx:a3,righty:a4,start:b10,x:b19,y:b2,platform:Android, +62653761636366393366613135366338,SN30 PP,a:b1,b:b0,back:b15,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b9,leftstick:b7,lefttrigger:b17,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:b18,rightx:a2,righty:a3,start:b6,x:b3,y:b2,platform:Android, +38376662666661636265313264613039,SNES,a:b0,b:b1,back:b9,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b3,rightshoulder:b20,start:b10,x:b19,y:b2,platform:Android, +5346432f555342205061640000000000,SNES Adapter,a:b0,b:b1,back:b9,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b3,rightshoulder:b20,start:b10,x:b19,y:b2,platform:Android, +5553422047616d657061642000000000,SNES Controller,a:b1,b:b0,back:b15,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b9,rightshoulder:b10,start:b6,x:b3,y:b2,platform:Android, +63303964303462366136616266653561,Sony PSP,a:b21,b:b22,back:b27,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b25,leftx:a0,lefty:a1,rightshoulder:b26,start:b28,x:b23,y:b24,platform:Android, +63376637643462343766333462383235,Sony Vita,a:b1,b:b19,back:b17,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b3,leftx:a0,lefty:a1,rightshoulder:b20,rightx:a3,righty:a4,start:b18,x:b0,y:b2,platform:Android, +476f6f676c65204c4c43205374616469,Stadia Controller,a:b0,b:b1,back:b15,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b5,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +5374616469614e3848532d6532633400,Stadia Controller,a:b0,b:b1,back:b15,guide:b5,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +05000000de2800000511000001000000,Steam Controller,a:b0,b:b1,back:b6,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:a3,start:b7,x:b2,y:b3,platform:Android, +05000000de2800000611000001000000,Steam Controller,a:b0,b:b1,back:b6,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:a3,start:b7,x:b2,y:b3,platform:Android, +0500000011010000201400000f7e0f00,SteelSeries Nimbus,a:b0,b:b1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b3,lefttrigger:b9,leftx:a0,lefty:a1,rightshoulder:b20,righttrigger:b10,rightx:a2,righty:a3,x:b19,y:b2,platform:Android, +35306436396437373135383665646464,SteelSeries Nimbus Plus,a:b0,b:b1,leftshoulder:b3,leftstick:b17,lefttrigger:b9,leftx:a0,rightshoulder:b20,rightstick:b18,righttrigger:b10,rightx:a2,x:b19,y:b2,platform:Android, +54475a20436f6e74726f6c6c65720000,TGZ Controller,a:b0,b:b1,back:b15,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b9,leftstick:b7,lefttrigger:b17,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:b18,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +62363434353532386238336663643836,TGZ Controller,a:b0,b:b1,back:b15,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b9,leftstick:b7,lefttrigger:b17,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:b18,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +37323236633763666465316365313236,THEC64 Joystick,a:b21,b:b22,back:b27,leftshoulder:b25,leftx:a0,lefty:a1,rightshoulder:b26,start:b27,x:b23,y:b24,platform:Android, +38346162326232346533316164363336,THEGamepad,a:b23,b:b22,back:b27,leftshoulder:b25,leftx:a0,lefty:a1,rightshoulder:b26,start:b28,x:b24,y:b21,platform:Android, +050000004f0400000ed00000fffe3f00,ThrustMaster eSwap Pro Controller,a:b0,b:b1,back:b4,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +5477696e20555342204a6f7973746963,Twin Joystick,a:b22,b:b21,back:b28,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b26,leftstick:b30,lefttrigger:b24,leftx:a0,lefty:a1,rightshoulder:b27,rightstick:b31,righttrigger:b25,rightx:a3,righty:a2,start:b29,x:b23,y:b20,platform:Android, +30623739343039643830333266346439,Valve Steam Controller,a:b0,b:b1,back:b15,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b5,leftshoulder:b9,leftstick:b7,leftx:a0,lefty:a1,paddle1:b24,paddle2:b23,rightshoulder:b10,rightstick:b8,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +31643365666432386133346639383937,Valve Steam Controller,a:b0,b:b1,back:b15,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b5,leftshoulder:b9,leftstick:b7,leftx:a0,lefty:a1,paddle1:b24,paddle2:b23,rightshoulder:b10,rightstick:b8,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +30386438313564306161393537333663,Wii Classic Adapter,a:b23,b:b22,back:b29,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b27,lefttrigger:b25,leftx:a0,lefty:a1,rightshoulder:b28,righttrigger:b26,rightx:a2,righty:a3,start:b30,x:b24,y:b21,platform:Android, +33333034646336346339646538643633,Wii Classic Adapter,a:b23,b:b22,back:b29,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b27,lefttrigger:b25,leftx:a0,lefty:a1,rightshoulder:b28,righttrigger:b26,rightx:a2,righty:a3,start:b30,x:b24,y:b21,platform:Android, +050000005e0400008e02000000783f00,Xbox 360 Controller,a:b0,b:b1,back:b4,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b5,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +30396232393162346330326334636566,Xbox 360 Controller,a:b0,b:b1,back:b4,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +38313038323730383864666463383533,Xbox 360 Controller,a:b0,b:b1,back:b4,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +58626f782033363020576972656c6573,Xbox 360 Controller,a:b0,b:b1,back:b15,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b5,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +65353331386662343338643939643636,Xbox 360 Controller,a:b0,b:b1,back:b4,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +65613532386633373963616462363038,Xbox 360 Controller,a:b0,b:b1,back:b4,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +47656e6572696320582d426f78207061,Xbox Controller,a:b0,b:b1,back:b15,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b5,leftshoulder:b9,leftstick:b7,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a4,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +4d6963726f736f667420582d426f7820,Xbox Controller,a:b0,b:b1,back:b15,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b5,leftshoulder:b9,leftstick:b7,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a4,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +64633436313965656664373634323364,Xbox Controller,a:b0,b:b1,back:b4,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b19,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +050000005e04000091020000ff073f00,Xbox One Controller,a:b0,b:b1,back:b4,guide:b5,leftshoulder:b9,leftstick:b7,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a3,righty:a4,start:b6,x:b2,y:b3,platform:Android, +050000005e04000091020000ff073f80,Xbox One Controller,a:b0,b:b1,back:b4,guide:b5,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +050000005e040000e00200000ffe3f00,Xbox One Controller,a:b0,b:b1,back:b9,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b3,leftstick:b15,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b18,rightstick:b16,righttrigger:a5,rightx:a3,righty:a4,start:b10,x:b17,y:b2,platform:Android, +050000005e040000e00200000ffe3f80,Xbox One Controller,a:b0,b:b1,back:b9,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b3,leftstick:b15,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b18,rightstick:b16,righttrigger:a5,rightx:a2,righty:a3,start:b10,x:b17,y:b2,platform:Android, +050000005e040000e0020000ffff3f00,Xbox One Controller,a:b0,b:b1,back:b9,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b4,leftshoulder:b3,leftstick:b8,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b18,rightstick:b7,righttrigger:a5,rightx:a3,righty:a4,start:b10,x:b17,y:b2,platform:Android, +050000005e040000e0020000ffff3f80,Xbox One Controller,a:b0,b:b1,back:b9,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b4,leftshoulder:b3,leftstick:b8,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b18,rightstick:b7,righttrigger:a5,rightx:a2,righty:a3,start:b10,x:b17,y:b2,platform:Android, +050000005e040000fd020000ffff3f00,Xbox One Controller,a:b0,b:b1,back:b4,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +33356661323266333733373865656366,Xbox One Controller,a:b0,b:b1,back:b4,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +34356136633366613530316338376136,Xbox One Controller,a:b0,b:b1,back:b9,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b10,leftshoulder:b3,leftstick:b15,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b18,rightstick:b16,righttrigger:a5,rightx:a3,righty:a4,x:b17,y:b2,platform:Android, +35623965373264386238353433656138,Xbox One Controller,a:b0,b:b1,back:b4,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +36616131643361333337396261666433,Xbox One Controller,a:b0,b:b1,back:b15,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +58626f7820576972656c65737320436f,Xbox One Controller,a:b0,b:b1,back:b15,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b5,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +050000005e040000000b000000783f00,Xbox One Elite 2 Controller,a:b0,b:b1,back:b4,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b5,leftshoulder:b9,leftstick:b7,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a3,righty:a4,start:b6,x:b2,y:b3,platform:Android, +050000005e040000000b000000783f80,Xbox One Elite 2 Controller,a:b0,b:b1,back:b4,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b5,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +050000005e040000050b0000ffff3f00,Xbox One Elite 2 Controller,a:b0,b:b1,back:b4,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b9,leftstick:b7,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a6,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +050000005e040000e002000000783f00,Xbox One S Controller,a:b0,b:b1,back:b4,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b5,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +050000005e040000ea02000000783f00,Xbox One S Controller,a:b0,b:b1,back:b4,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b5,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +050000005e040000fd020000ff7f3f00,Xbox One S Controller,a:b0,b:b1,back:b4,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b5,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +050000005e040000120b000000783f00,Xbox Series Controller,a:b0,b:b1,back:b4,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b5,leftshoulder:b9,leftstick:b7,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a3,righty:a4,start:b6,x:b2,y:b3,platform:Android, +050000005e040000120b000000783f80,Xbox Series Controller,a:b0,b:b1,back:b4,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b5,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +050000005e040000130b0000ffff3f00,Xbox Series Controller,a:b0,b:b1,back:b15,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +65633038363832353634653836396239,Xbox Series Controller,a:b0,b:b1,back:b15,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b5,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +050000001727000044310000ffff3f00,XiaoMi Controller,a:b0,b:b1,back:b4,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b9,leftstick:b7,lefttrigger:a7,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a6,rightx:a2,righty:a5,start:b6,x:b2,y:b3,platform:Android, + +# iOS +05000000ac0500000100000000006d01,*,a:b0,b:b1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b6,leftshoulder:b4,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:a5,rightx:a3,righty:a4,x:b2,y:b3,platform:iOS, +05000000ac050000010000004f066d01,*,a:b0,b:b1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b6,leftshoulder:b4,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:a5,rightx:a3,righty:a4,x:b2,y:b3,platform:iOS, +05000000ac05000001000000cf076d01,*,a:b0,b:b1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b6,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,righttrigger:a5,rightx:a3,righty:a4,x:b2,y:b3,platform:iOS, +05000000ac05000001000000df076d01,*,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b6,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,righttrigger:a5,rightx:a3,righty:a4,start:b9,x:b2,y:b3,platform:iOS, +05000000ac05000001000000ff076d01,*,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b9,leftshoulder:b4,leftstick:b6,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,righttrigger:a5,rightx:a3,righty:a4,start:b10,x:b2,y:b3,platform:iOS, +05000000ac0500000200000000006d02,*,a:b0,b:b1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b6,leftshoulder:b4,rightshoulder:b5,x:b2,y:b3,platform:iOS, +05000000ac050000020000004f066d02,*,a:b0,b:b1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b6,leftshoulder:b4,rightshoulder:b5,x:b2,y:b3,platform:iOS, +050000008a35000003010000ff070000,Backbone One,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b6,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,righttrigger:a5,rightx:a3,righty:a4,start:b10,x:b2,y:b3,platform:iOS, +050000008a35000004010000ff070000,Backbone One,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b6,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,righttrigger:a5,rightx:a3,righty:a4,start:b10,x:b2,y:b3,platform:iOS, +4d466947616d65706164010000000000,MFi Extended Gamepad,a:b0,b:b1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:a5,rightx:a3,righty:a4,start:b6,x:b2,y:b3,platform:iOS, +4d466947616d65706164020000000000,MFi Gamepad,a:b0,b:b1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,rightshoulder:b5,start:b6,x:b2,y:b3,platform:iOS, +050000007e050000062000000f060000,Nintendo Switch Joy-Con (L),+leftx:h0.2,+lefty:h0.4,-leftx:h0.8,-lefty:h0.1,a:b0,b:b2,leftshoulder:b4,rightshoulder:b5,x:b1,y:b3,platform:iOS, +050000007e050000062000004f060000,Nintendo Switch Joy-Con (L),+leftx:h0.1,+lefty:h0.2,-leftx:h0.4,-lefty:h0.8,dpdown:b2,dpleft:b0,dpright:b3,dpup:b1,leftshoulder:b4,misc1:b6,rightshoulder:b5,platform:iOS, +050000007e05000008200000df070000,Nintendo Switch Joy-Con (L/R),a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b6,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,righttrigger:a5,rightx:a3,righty:a4,start:b9,x:b2,y:b3,platform:iOS, +050000007e0500000e200000df070000,Nintendo Switch Joy-Con (L/R),a:b1,b:b0,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b6,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,righttrigger:a5,rightx:a3,righty:a4,start:b9,x:b3,y:b2,platform:iOS, +050000007e050000072000004f060000,Nintendo Switch Joy-Con (R),+rightx:h0.4,+righty:h0.8,-rightx:h0.1,-righty:h0.2,a:b1,b:b0,guide:b6,leftshoulder:b4,rightshoulder:b5,x:b3,y:b2,platform:iOS, +050000007e05000009200000df870000,Nintendo Switch Pro Controller,a:b1,b:b0,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b6,lefttrigger:a2,leftx:a0,lefty:a1,misc1:b10,rightshoulder:b5,rightstick:b7,righttrigger:a5,rightx:a3,righty:a4,start:b9,x:b3,y:b2,platform:iOS, +050000007e05000009200000ff870000,Nintendo Switch Pro Controller,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b9,leftshoulder:b4,leftstick:b6,lefttrigger:a2,leftx:a0,lefty:a1,misc1:b11,rightshoulder:b5,rightstick:b7,righttrigger:a5,rightx:a3,righty:a4,start:b10,x:b2,y:b3,platform:iOS, +050000004c050000cc090000df070000,PS4 Controller,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b6,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,righttrigger:a5,rightx:a3,righty:a4,start:b9,x:b2,y:b3,platform:iOS, +050000004c050000cc090000df870001,PS4 Controller,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b6,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,righttrigger:a5,rightx:a3,righty:a4,start:b9,x:b2,y:b3,platform:iOS, +050000004c050000cc090000ff070000,PS4 Controller,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b9,leftshoulder:b4,leftstick:b6,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,righttrigger:a5,rightx:a3,righty:a4,start:b10,x:b2,y:b3,platform:iOS, +050000004c050000cc090000ff870001,PS4 Controller,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b9,leftshoulder:b4,leftstick:b6,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,righttrigger:a5,rightx:a3,righty:a4,start:b10,touchpad:b11,x:b2,y:b3,platform:iOS, +050000004c050000cc090000ff876d01,PS4 Controller,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b9,leftshoulder:b4,leftstick:b6,lefttrigger:a2,leftx:a0,lefty:a1,misc1:b11,rightshoulder:b5,rightstick:b7,righttrigger:a5,rightx:a3,righty:a4,start:b10,x:b2,y:b3,platform:iOS, +050000004c050000e60c0000df870000,PS5 Controller,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b6,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,righttrigger:a5,rightx:a3,righty:a4,start:b9,touchpad:b10,x:b2,y:b3,platform:iOS, +050000004c050000e60c0000ff870000,PS5 Controller,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b9,leftshoulder:b4,leftstick:b6,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,righttrigger:a5,rightx:a3,righty:a4,start:b10,touchpad:b11,x:b2,y:b3,platform:iOS, +05000000ac0500000300000000006d03,Remote,a:b0,b:b2,leftx:a0,lefty:a1,platform:iOS, +05000000ac0500000300000043006d03,Remote,a:b0,b:b2,leftx:a0,lefty:a1,platform:iOS, +05000000de2800000511000001000000,Steam Controller,a:b0,b:b1,back:b6,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:a3,start:b7,x:b2,y:b3,platform:iOS, +05000000de2800000611000001000000,Steam Controller,a:b0,b:b1,back:b6,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:a3,start:b7,x:b2,y:b3,platform:iOS, +050000005e040000050b0000df070001,Xbox Elite Controller,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b6,lefttrigger:a2,leftx:a0,lefty:a1,paddle1:b10,paddle2:b12,paddle3:b11,paddle4:b13,rightshoulder:b5,rightstick:b7,righttrigger:a5,rightx:a3,righty:a4,start:b9,x:b2,y:b3,platform:iOS, +050000005e040000050b0000ff070001,Xbox Elite Controller,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b9,leftshoulder:b4,leftstick:b6,lefttrigger:a2,leftx:a0,lefty:a1,paddle1:b11,paddle2:b13,paddle3:b12,paddle4:b14,rightshoulder:b5,rightstick:b7,righttrigger:a5,rightx:a3,righty:a4,start:b10,x:b2,y:b3,platform:iOS, +050000005e040000e0020000df070000,Xbox One Controller,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b6,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,righttrigger:a5,rightx:a3,righty:a4,start:b9,x:b2,y:b3,platform:iOS, +050000005e040000e0020000ff070000,Xbox One Controller,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b9,leftshoulder:b4,leftstick:b6,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,righttrigger:a5,rightx:a3,righty:a4,start:b10,x:b2,y:b3,platform:iOS, +050000005e040000130b0000df870001,Xbox Series X Controller,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b6,lefttrigger:a2,leftx:a0,lefty:a1,misc1:b10,rightshoulder:b5,rightstick:b7,righttrigger:a5,rightx:a3,righty:a4,start:b9,x:b2,y:b3,platform:iOS, +050000005e040000130b0000ff870001,Xbox Series X Controller,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b9,leftshoulder:b4,leftstick:b6,lefttrigger:a2,leftx:a0,lefty:a1,misc1:b11,rightshoulder:b5,rightstick:b7,righttrigger:a5,rightx:a3,righty:a4,start:b10,x:b2,y:b3,platform:iOS, \ No newline at end of file diff --git a/snap/snapcraft.yaml b/snap/snapcraft.yaml new file mode 100644 index 0000000..99dc042 --- /dev/null +++ b/snap/snapcraft.yaml @@ -0,0 +1,15 @@ + +name: qgroundcontrol +version: '3.2+git' +summary: Cross-platform ground control station for drones +description: | + QGroundControl provides full flight control and configuration for ArduPilot or PX4 Pro powered vehicles. The goal for QGroundControl is improved ease of use for new users as well as high end feature support for experienced users. + + +grade: devel # must be 'stable' to release into candidate/stable channels +confinement: devmode # use 'strict' once you have the right plugs and slots + +parts: + my-part: + # See 'snapcraft plugins' + plugin: nil diff --git a/src/ADSB/ADSBVehicle.cc b/src/ADSB/ADSBVehicle.cc index 505c82b..2e2a67d 100644 --- a/src/ADSB/ADSBVehicle.cc +++ b/src/ADSB/ADSBVehicle.cc @@ -14,10 +14,9 @@ #include #include -ADSBVehicle::ADSBVehicle(const ADSBVehicleInfo_t & vehicleInfo, QObject* parent) +ADSBVehicle::ADSBVehicle(const VehicleInfo_t& vehicleInfo, QObject* parent) : QObject (parent) , _icaoAddress (vehicleInfo.icaoAddress) - , _coordinate (QGeoCoordinate(qQNaN(),qQNaN())) , _altitude (qQNaN()) , _heading (qQNaN()) , _alert (false) @@ -25,14 +24,12 @@ ADSBVehicle::ADSBVehicle(const ADSBVehicleInfo_t & vehicleInfo, QObject* parent) update(vehicleInfo); } -void ADSBVehicle::update(const ADSBVehicleInfo_t & vehicleInfo) +void ADSBVehicle::update(const VehicleInfo_t& vehicleInfo) { if (_icaoAddress != vehicleInfo.icaoAddress) { qCWarning(ADSBVehicleManagerLog) << "ICAO address mismatch expected:actual" << _icaoAddress << vehicleInfo.icaoAddress; return; } - qCDebug(ADSBVehicleManagerLog) << "Updating" << QStringLiteral("%1 Flags: %2").arg(vehicleInfo.icaoAddress, 0, 16).arg(vehicleInfo.availableFlags, 0, 2); - if (vehicleInfo.availableFlags & CallsignAvailable) { if (vehicleInfo.callsign != _callsign) { _callsign = vehicleInfo.callsign; diff --git a/src/ADSB/ADSBVehicle.h b/src/ADSB/ADSBVehicle.h index f443545..c84c4fa 100644 --- a/src/ADSB/ADSBVehicle.h +++ b/src/ADSB/ADSBVehicle.h @@ -36,9 +36,9 @@ public: double heading; bool alert; uint32_t availableFlags; - } ADSBVehicleInfo_t; + } VehicleInfo_t; - ADSBVehicle(const ADSBVehicleInfo_t & vehicleInfo, QObject* parent); + ADSBVehicle(const VehicleInfo_t& vehicleInfo, QObject* parent); Q_PROPERTY(int icaoAddress READ icaoAddress CONSTANT) Q_PROPERTY(QString callsign READ callsign NOTIFY callsignChanged) @@ -54,7 +54,7 @@ public: double heading (void) const { return _heading; } bool alert (void) const { return _alert; } - void update(const ADSBVehicleInfo_t & vehicleInfo); + void update(const VehicleInfo_t& vehicleInfo); /// check if the vehicle is expired and should be removed bool expired(); @@ -77,7 +77,8 @@ private: QElapsedTimer _lastUpdateTimer; static constexpr qint64 expirationTimeoutMs = 120000; ///< timeout with no update in ms after which the vehicle is removed. + ///< AirMap sends updates for each vehicle every second. }; -Q_DECLARE_METATYPE(ADSBVehicle::ADSBVehicleInfo_t) +Q_DECLARE_METATYPE(ADSBVehicle::VehicleInfo_t) diff --git a/src/ADSB/ADSBVehicleManager.cc b/src/ADSB/ADSBVehicleManager.cc index ef4ebf7..3d03f8f 100644 --- a/src/ADSB/ADSBVehicleManager.cc +++ b/src/ADSB/ADSBVehicleManager.cc @@ -23,6 +23,7 @@ ADSBVehicleManager::ADSBVehicleManager(QGCApplication* app, QGCToolbox* toolbox) void ADSBVehicleManager::setToolbox(QGCToolbox* toolbox) { QGCTool::setToolbox(toolbox); + connect(&_adsbVehicleCleanupTimer, &QTimer::timeout, this, &ADSBVehicleManager::_cleanupStaleVehicles); _adsbVehicleCleanupTimer.setSingleShot(false); _adsbVehicleCleanupTimer.start(1000); @@ -41,7 +42,7 @@ void ADSBVehicleManager::_cleanupStaleVehicles() for (int i=_adsbVehicles.count()-1; i>=0; i--) { ADSBVehicle* adsbVehicle = _adsbVehicles.value(i); if (adsbVehicle->expired()) { - qCDebug(ADSBVehicleManagerLog) << "Expired " << QStringLiteral("%1").arg(adsbVehicle->icaoAddress(), 0, 16); + qCDebug(ADSBVehicleManagerLog) << "Expired" << QStringLiteral("%1").arg(adsbVehicle->icaoAddress(), 0, 16); _adsbVehicles.removeAt(i); _adsbICAOMap.remove(adsbVehicle->icaoAddress()); adsbVehicle->deleteLater(); @@ -49,7 +50,7 @@ void ADSBVehicleManager::_cleanupStaleVehicles() } } -void ADSBVehicleManager::adsbVehicleUpdate(const ADSBVehicle::ADSBVehicleInfo_t vehicleInfo) +void ADSBVehicleManager::adsbVehicleUpdate(const ADSBVehicle::VehicleInfo_t vehicleInfo) { uint32_t icaoAddress = vehicleInfo.icaoAddress; @@ -60,7 +61,6 @@ void ADSBVehicleManager::adsbVehicleUpdate(const ADSBVehicle::ADSBVehicleInfo_t ADSBVehicle* adsbVehicle = new ADSBVehicle(vehicleInfo, this); _adsbICAOMap[icaoAddress] = adsbVehicle; _adsbVehicles.append(adsbVehicle); - qCDebug(ADSBVehicleManagerLog) << "Added " << QStringLiteral("%1").arg(adsbVehicle->icaoAddress(), 0, 16); } } } @@ -101,7 +101,9 @@ void ADSBTCPLink::run(void) void ADSBTCPLink::_hardwareConnect() { _socket = new QTcpSocket(); + QObject::connect(_socket, &QTcpSocket::readyRead, this, &ADSBTCPLink::_readBytes); + _socket->connectToHost(_hostAddress, static_cast(_port)); // Give the socket a second to connect to the other side otherwise error out @@ -119,110 +121,72 @@ void ADSBTCPLink::_hardwareConnect() void ADSBTCPLink::_readBytes(void) { if (_socket) { - while(_socket->canReadLine()) { - QByteArray bytes = _socket->readLine(); - _parseLine(QString::fromLocal8Bit(bytes)); - } + QByteArray bytes = _socket->readLine(); + _parseLine(QString::fromLocal8Bit(bytes)); } } -void ADSBTCPLink::_parseLine(const QString &line) +void ADSBTCPLink::_parseLine(const QString& line) { if (line.startsWith(QStringLiteral("MSG"))) { - bool icaoOk; - int msgType = line.at(4).digitValue(); - if (msgType == -1) { - qCDebug(ADSBVehicleManagerLog) << "ADSB Invalid message type " << line.at(4); - return; - } - // Skip unsupported mesg types to avoid parsing - if (msgType == 2 || msgType > 6) { - return; - } - qCDebug(ADSBVehicleManagerLog) << " ADSB SBS-1 " << line; - QStringList values = line.split(QChar(',')); - uint32_t icaoAddress = values[4].toUInt(&icaoOk, 16); + qCDebug(ADSBVehicleManagerLog) << "ADSB SBS-1" << line; - if (!icaoOk) { - return; - } + QStringList values = line.split(QStringLiteral(",")); - ADSBVehicle::ADSBVehicleInfo_t adsbInfo; - adsbInfo.icaoAddress = icaoAddress; + if (values[1] == QStringLiteral("3")) { + bool icaoOk, altOk, latOk, lonOk; - switch (msgType) { - case 1: - case 5: - case 6: - _parseAndEmitCallsign(adsbInfo, values); - break; - case 3: - _parseAndEmitLocation(adsbInfo, values); - break; - case 4: - _parseAndEmitHeading(adsbInfo, values); - break; + uint32_t icaoAddress = values[4].toUInt(&icaoOk, 16); + int modeCAltitude = values[11].toInt(&altOk); + double lat = values[14].toDouble(&latOk); + double lon = values[15].toDouble(&lonOk); + QString callsign = values[10]; + + if (!icaoOk || !altOk || !latOk || !lonOk) { + return; + } + if (lat == 0 && lon == 0) { + return; + } + + double altitude = modeCAltitude / 3.048; + QGeoCoordinate location(lat, lon); + + ADSBVehicle::VehicleInfo_t adsbInfo; + adsbInfo.icaoAddress = icaoAddress; + adsbInfo.callsign = callsign; + adsbInfo.location = location; + adsbInfo.altitude = altitude; + adsbInfo.availableFlags = ADSBVehicle::CallsignAvailable | ADSBVehicle::LocationAvailable | ADSBVehicle::AltitudeAvailable; + emit adsbVehicleUpdate(adsbInfo); + } else if (values[1] == QStringLiteral("4")) { + bool icaoOk, headingOk; + + uint32_t icaoAddress = values[4].toUInt(&icaoOk, 16); + double heading = values[13].toDouble(&headingOk); + + if (!icaoOk || !headingOk) { + return; + } + + ADSBVehicle::VehicleInfo_t adsbInfo; + adsbInfo.icaoAddress = icaoAddress; + adsbInfo.heading = heading; + adsbInfo.availableFlags = ADSBVehicle::HeadingAvailable; + emit adsbVehicleUpdate(adsbInfo); + } else if (values[1] == QStringLiteral("1")) { + bool icaoOk; + + uint32_t icaoAddress = values[4].toUInt(&icaoOk, 16); + if (!icaoOk) { + return; + } + + ADSBVehicle::VehicleInfo_t adsbInfo; + adsbInfo.icaoAddress = icaoAddress; + adsbInfo.callsign = values[10]; + adsbInfo.availableFlags = ADSBVehicle::CallsignAvailable; + emit adsbVehicleUpdate(adsbInfo); } } } - -void ADSBTCPLink::_parseAndEmitCallsign(ADSBVehicle::ADSBVehicleInfo_t &adsbInfo, QStringList values) -{ - QString callsign = values[10].trimmed(); - if (callsign.isEmpty()) { - return; - } - - adsbInfo.callsign = callsign; - adsbInfo.availableFlags = ADSBVehicle::CallsignAvailable; - emit adsbVehicleUpdate(adsbInfo); -} - -void ADSBTCPLink::_parseAndEmitLocation(ADSBVehicle::ADSBVehicleInfo_t &adsbInfo, QStringList values) -{ - bool altOk, latOk, lonOk; - int modeCAltitude; - - QString altitudeStr = values[11]; - // Altitude is either Barometric - based on pressure, in ft - // or HAE - as reported by GPS - based on WGS84 Ellipsoid, in ft - // If altitude ends with H, we have HAE - // There's a slight difference between Barometric alt and HAE, but it would require - // knowledge about Geoid shape in particular Lat, Lon. It's not worth complicating the code - if (altitudeStr.endsWith('H')) { - altitudeStr.chop(1); - } - modeCAltitude = altitudeStr.toInt(&altOk); - - double lat = values[14].toDouble(&latOk); - double lon = values[15].toDouble(&lonOk); - int alert = values[19].toInt(); - - if (!altOk || !latOk || !lonOk) { - return; - } - if (lat == 0 && lon == 0) { - return; - } - - double altitude = modeCAltitude * 0.3048; - QGeoCoordinate location(lat, lon); - adsbInfo.location = location; - adsbInfo.altitude = altitude; - adsbInfo.alert = alert == 1; - adsbInfo.availableFlags = ADSBVehicle::LocationAvailable | ADSBVehicle::AltitudeAvailable | ADSBVehicle::AlertAvailable; - emit adsbVehicleUpdate(adsbInfo); -} - -void ADSBTCPLink::_parseAndEmitHeading(ADSBVehicle::ADSBVehicleInfo_t &adsbInfo, QStringList values) -{ - bool headingOk; - double heading = values[13].toDouble(&headingOk); - if (!headingOk) { - return; - } - - adsbInfo.heading = heading; - adsbInfo.availableFlags = ADSBVehicle::HeadingAvailable; - emit adsbVehicleUpdate(adsbInfo); -} \ No newline at end of file diff --git a/src/ADSB/ADSBVehicleManager.h b/src/ADSB/ADSBVehicleManager.h index ad9a922..2b45cc9 100644 --- a/src/ADSB/ADSBVehicleManager.h +++ b/src/ADSB/ADSBVehicleManager.h @@ -29,7 +29,7 @@ public: ~ADSBTCPLink(); signals: - void adsbVehicleUpdate(const ADSBVehicle::ADSBVehicleInfo_t vehicleInfo); + void adsbVehicleUpdate(const ADSBVehicle::VehicleInfo_t vehicleInfo); void error(const QString errorMsg); protected: @@ -45,9 +45,6 @@ private: QString _hostAddress; int _port; QTcpSocket* _socket = nullptr; - void _parseAndEmitCallsign(ADSBVehicle::ADSBVehicleInfo_t &adsbInfo, QStringList values); - void _parseAndEmitLocation(ADSBVehicle::ADSBVehicleInfo_t &adsbInfo, QStringList values); - void _parseAndEmitHeading(ADSBVehicle::ADSBVehicleInfo_t &adsbInfo, QStringList values); }; class ADSBVehicleManager : public QGCTool { @@ -64,7 +61,7 @@ public: void setToolbox(QGCToolbox* toolbox) final; public slots: - void adsbVehicleUpdate (const ADSBVehicle::ADSBVehicleInfo_t vehicleInfo); + void adsbVehicleUpdate (const ADSBVehicle::VehicleInfo_t vehicleInfo); void _tcpError (const QString errorMsg); private slots: diff --git a/src/Airmap/AirMap.SettingsGroup.json b/src/Airmap/AirMap.SettingsGroup.json new file mode 100644 index 0000000..d813ee0 --- /dev/null +++ b/src/Airmap/AirMap.SettingsGroup.json @@ -0,0 +1,55 @@ +{ + "version": 1, + "fileType": "FactMetaData", + "QGC.MetaData.Facts": +[ +{ + "name": "usePersonalApiKey", + "shortDesc": "Use Personal AirMap API Key", + "type": "bool", + "default": false +}, +{ + "name": "apiKey", + "shortDesc": "AirMap API Key", + "type": "string", + "default": "" +}, +{ + "name": "clientID", + "shortDesc": "AirMap Client ID", + "type": "string", + "default": "" +}, +{ + "name": "userName", + "shortDesc": "AirMap User Name", + "type": "string", + "default": "" +}, +{ + "name": "password", + "shortDesc": "AirMap Password", + "type": "string", + "default": "" +}, +{ + "name": "enableAirMap", + "shortDesc": "Enable AirMap", + "type": "bool", + "default": false +}, +{ + "name": "enableAirspace", + "shortDesc": "Show Airspace on Map (Experimental)", + "type": "bool", + "default": false +}, +{ + "name": "enableTelemetry", + "shortDesc": "Enable AirMap Telemetry", + "type": "bool", + "default": false +} +] +} diff --git a/src/Airmap/AirMapAdvisoryManager.cc b/src/Airmap/AirMapAdvisoryManager.cc new file mode 100644 index 0000000..8cf332c --- /dev/null +++ b/src/Airmap/AirMapAdvisoryManager.cc @@ -0,0 +1,145 @@ +/**************************************************************************** + * + * (c) 2009-2020 QGROUNDCONTROL PROJECT + * + * QGroundControl is licensed according to the terms in the file + * COPYING.md in the root of the source code directory. + * + ****************************************************************************/ + +#include "AirMapAdvisoryManager.h" +#include "AirspaceRestriction.h" +#include "AirMapRulesetsManager.h" +#include "AirMapManager.h" +#include "QGCApplication.h" + +#include +#include +#include + +#include "airmap/airspaces.h" +#include "airmap/advisory.h" + +#define ADVISORY_UPDATE_DISTANCE 500 //-- 500m threshold for updates + +using namespace airmap; + +//----------------------------------------------------------------------------- +AirMapAdvisory::AirMapAdvisory(QObject* parent) + : AirspaceAdvisory(parent) +{ +} + +//----------------------------------------------------------------------------- +AirMapAdvisoryManager::AirMapAdvisoryManager(AirMapSharedState& shared, QObject *parent) + : AirspaceAdvisoryProvider(parent) + , _valid(false) + , _shared(shared) +{ +} + +//----------------------------------------------------------------------------- +void +AirMapAdvisoryManager::setROI(const QGCGeoBoundingCube& roi, bool reset) +{ + //-- If first time or we've moved more than ADVISORY_UPDATE_DISTANCE, ask for updates. + if(reset || (!_lastROI.isValid() || _lastROI.pointNW.distanceTo(roi.pointNW) > ADVISORY_UPDATE_DISTANCE || _lastROI.pointSE.distanceTo(roi.pointSE) > ADVISORY_UPDATE_DISTANCE)) { + _lastROI = roi; + _requestAdvisories(); + } +} + +//----------------------------------------------------------------------------- +static bool +adv_sort(QObject* a, QObject* b) +{ + AirMapAdvisory* aa = qobject_cast(a); + AirMapAdvisory* bb = qobject_cast(b); + if(!aa || !bb) return false; + return static_cast(aa->color()) > static_cast(bb->color()); +} + +//----------------------------------------------------------------------------- +void +AirMapAdvisoryManager::_requestAdvisories() +{ + qCDebug(AirMapManagerLog) << "Advisories Request (ROI Changed)"; + if (!_shared.client()) { + qCDebug(AirMapManagerLog) << "No AirMap client instance. Not updating Advisories"; + _valid = false; + emit advisoryChanged(); + return; + } + _valid = false; + _advisories.clearAndDeleteContents(); + + Advisory::Search::Parameters params; + params.authorization = _shared.loginToken().toStdString(); + //-- Geometry + Geometry::Polygon polygon; + //-- Get ROI bounding box, clipping to max area of interest + for (const auto& qcoord : _lastROI.polygon2D(qgcApp()->toolbox()->airspaceManager()->maxAreaOfInterest())) { + Geometry::Coordinate coord; + coord.latitude = qcoord.latitude(); + coord.longitude = qcoord.longitude(); + polygon.outer_ring.coordinates.push_back(coord); + } + params.geometry = Geometry(polygon); + //-- Rulesets + auto* pRulesMgr = qobject_cast(qgcApp()->toolbox()->airspaceManager()->ruleSets()); + QString ruleIDs; + if(pRulesMgr) { + for(int rs = 0; rs < pRulesMgr->ruleSets()->count(); rs++) { + AirMapRuleSet* ruleSet = qobject_cast(pRulesMgr->ruleSets()->get(rs)); + //-- If this ruleset is selected + if(ruleSet && ruleSet->selected()) { + ruleIDs = ruleIDs + ruleSet->id(); + //-- Separate rules with commas + if(rs < pRulesMgr->ruleSets()->count() - 1) { + ruleIDs = ruleIDs + ","; + } + } + } + } + if(ruleIDs.isEmpty()) { + qCDebug(AirMapManagerLog) << "No rules defined. Not updating Advisories"; + _valid = false; + emit advisoryChanged(); + return; + } + params.rulesets = ruleIDs.toStdString(); + //-- Time + quint64 start = static_cast(QDateTime::currentDateTimeUtc().toMSecsSinceEpoch()); + quint64 end = start + 60 * 30 * 1000; + params.start = airmap::from_milliseconds_since_epoch(airmap::milliseconds(static_cast(start))); + params.end = airmap::from_milliseconds_since_epoch(airmap::milliseconds(static_cast(end))); + std::weak_ptr isAlive(_instance); + _shared.client()->advisory().search(params, [this, isAlive](const Advisory::Search::Result& result) { + if (!isAlive.lock()) return; + if (result) { + qCDebug(AirMapManagerLog) << "Successful advisory search. Items:" << result.value().size(); + _airspaceColor = AirspaceAdvisoryProvider::Green; + for (const auto& advisory : result.value()) { + AirMapAdvisory* pAdvisory = new AirMapAdvisory(this); + pAdvisory->_id = QString::fromStdString(advisory.advisory.airspace.id()); + pAdvisory->_name = QString::fromStdString(advisory.advisory.airspace.name()); + pAdvisory->_type = static_cast(advisory.advisory.airspace.type()); + pAdvisory->_color = static_cast(advisory.color); + if(pAdvisory->_color > _airspaceColor) { + _airspaceColor = pAdvisory->_color; + } + _advisories.append(pAdvisory); + qCDebug(AirMapManagerLog) << "Adding advisory" << pAdvisory->name(); + } + //-- Sort in order of color (priority) + _advisories.beginReset(); + std::sort(_advisories.objectList()->begin(), _advisories.objectList()->end(), adv_sort); + _advisories.endReset(); + _valid = true; + } else { + QString description = QString::fromStdString(result.error().description() ? result.error().description().get() : ""); + qCDebug(AirMapManagerLog) << "Advisories Request Failed" << QString::fromStdString(result.error().message()) << description; + } + emit advisoryChanged(); + }); +} diff --git a/src/Airmap/AirMapAdvisoryManager.h b/src/Airmap/AirMapAdvisoryManager.h new file mode 100644 index 0000000..a8be68b --- /dev/null +++ b/src/Airmap/AirMapAdvisoryManager.h @@ -0,0 +1,71 @@ +/**************************************************************************** + * + * (c) 2009-2020 QGROUNDCONTROL PROJECT + * + * QGroundControl is licensed according to the terms in the file + * COPYING.md in the root of the source code directory. + * + ****************************************************************************/ + +#pragma once + +#include "QmlObjectListModel.h" + +#include "LifetimeChecker.h" + +#include "AirspaceAdvisoryProvider.h" +#include "AirMapSharedState.h" + +#include "QGCGeoBoundingCube.h" + +#include "airmap/status.h" + +/** + * @file AirMapAdvisoryManager.h + * Advisory information provided by AirMap. + */ + +//----------------------------------------------------------------------------- +class AirMapAdvisory : public AirspaceAdvisory +{ + Q_OBJECT + friend class AirMapAdvisoryManager; + friend class AirMapFlightPlanManager; +public: + AirMapAdvisory (QObject* parent = nullptr); + QString id () override { return _id; } + QString name () override { return _name; } + AdvisoryType type () override { return _type; } + QGeoCoordinate coordinates () override { return _coordinates; } + qreal radius () override { return _radius; } + AirspaceAdvisoryProvider::AdvisoryColor color () override { return _color; } +private: + QString _id; + QString _name; + AdvisoryType _type; + QGeoCoordinate _coordinates; + qreal _radius; + AirspaceAdvisoryProvider::AdvisoryColor _color; +}; + +//----------------------------------------------------------------------------- +class AirMapAdvisoryManager : public AirspaceAdvisoryProvider, public LifetimeChecker +{ + Q_OBJECT +public: + AirMapAdvisoryManager (AirMapSharedState &shared, QObject *parent = nullptr); + bool valid () override { return _valid; } + AdvisoryColor airspaceColor () override { return _airspaceColor; } + QmlObjectListModel* advisories () override { return &_advisories; } + void setROI (const QGCGeoBoundingCube& roi, bool reset = false) override; +signals: + void error (const QString& what, const QString& airmapdMessage, const QString& airmapdDetails); +private: + void _requestAdvisories (); +private: + bool _valid; + AirMapSharedState& _shared; + QGCGeoBoundingCube _lastROI; + QmlObjectListModel _advisories; + AdvisoryColor _airspaceColor; +}; diff --git a/src/Airmap/AirMapFlightManager.cc b/src/Airmap/AirMapFlightManager.cc new file mode 100644 index 0000000..7f0482d --- /dev/null +++ b/src/Airmap/AirMapFlightManager.cc @@ -0,0 +1,112 @@ +/**************************************************************************** + * + * (c) 2009-2020 QGROUNDCONTROL PROJECT + * + * QGroundControl is licensed according to the terms in the file + * COPYING.md in the root of the source code directory. + * + ****************************************************************************/ + +#include "AirMapFlightManager.h" +#include "AirMapManager.h" +#include "AirMapRulesetsManager.h" +#include "QGCApplication.h" + +#include "QGCMAVLink.h" + +#include "airmap/pilots.h" +#include "airmap/flights.h" +#include "airmap/date_time.h" +#include "airmap/flight_plans.h" +#include "airmap/geometry.h" + +using namespace airmap; + +//----------------------------------------------------------------------------- +AirMapFlightManager::AirMapFlightManager(AirMapSharedState& shared) + : _shared(shared) +{ + +} + +//----------------------------------------------------------------------------- +void +AirMapFlightManager::findFlight(const QGCGeoBoundingCube& bc) +{ + _state = State::FetchFlights; + _searchArea = bc; + std::weak_ptr isAlive(_instance); + _shared.doRequestWithLogin([this, isAlive](const QString& login_token) { + if (!isAlive.lock()) return; + if (_state != State::FetchFlights) return; + QList coords = _searchArea.polygon2D(); + Geometry::LineString lineString; + for (const auto& qcoord : coords) { + Geometry::Coordinate coord; + coord.latitude = qcoord.latitude(); + coord.longitude = qcoord.longitude(); + lineString.coordinates.push_back(coord); + } + _flightID.clear(); + Flights::Search::Parameters params; + params.authorization = login_token.toStdString(); + params.geometry = Geometry(lineString); + _shared.client()->flights().search(params, [this, isAlive](const Flights::Search::Result& result) { + if (!isAlive.lock()) return; + if (_state != State::FetchFlights) return; + if (result && result.value().flights.size() > 0) { + const Flights::Search::Response& response = result.value(); + qCDebug(AirMapManagerLog) << "Find flights response"; + for (const auto& flight : response.flights) { + QString fid = QString::fromStdString(flight.id); + qCDebug(AirMapManagerLog) << "Checking flight:" << fid; + if(flight.geometry.type() == Geometry::Type::line_string) { + const Geometry::LineString& lineString = flight.geometry.details_for_line_string(); + QList rcoords; + for (const auto& vertex : lineString.coordinates) { + rcoords.append(QGeoCoordinate(vertex.latitude, vertex.longitude)); + } + if(_searchArea == rcoords) { + qCDebug(AirMapManagerLog) << "Found match:" << fid; + _flightID = fid; + _state = State::Idle; + emit flightIDChanged(); + return; + } + } + } + } + qCDebug(AirMapManagerLog) << "No flights found"; + emit flightIDChanged(); + }); + _state = State::Idle; + }); +} + +//----------------------------------------------------------------------------- +void +AirMapFlightManager::endFlight(const QString& flightID) +{ + if (_state != State::Idle) { + qCWarning(AirMapManagerLog) << "AirMapFlightManager::endFlight: State not idle"; + return; + } + qCDebug(AirMapManagerLog) << "Ending flight" << flightID; + _state = State::FlightEnd; + Flights::EndFlight::Parameters params; + params.authorization = _shared.loginToken().toStdString(); + params.id = flightID.toStdString(); + std::weak_ptr isAlive(_instance); + _shared.client()->flights().end_flight(params, [this, isAlive](const Flights::EndFlight::Result& result) { + if (!isAlive.lock()) return; + if (_state != State::FlightEnd) return; + _state = State::Idle; + if (!result) { + QString description = QString::fromStdString(result.error().description() ? result.error().description().get() : ""); + emit error("Failed to end Flight", + QString::fromStdString(result.error().message()), description); + } + }); +} + + diff --git a/src/Airmap/AirMapFlightManager.h b/src/Airmap/AirMapFlightManager.h new file mode 100644 index 0000000..b311bee --- /dev/null +++ b/src/Airmap/AirMapFlightManager.h @@ -0,0 +1,51 @@ +/**************************************************************************** + * + * (c) 2009-2020 QGROUNDCONTROL PROJECT + * + * QGroundControl is licensed according to the terms in the file + * COPYING.md in the root of the source code directory. + * + ****************************************************************************/ + +#pragma once + +#include "LifetimeChecker.h" +#include "AirMapSharedState.h" +#include "AirspaceFlightPlanProvider.h" + +#include +#include +#include +#include + +//----------------------------------------------------------------------------- +/// class to upload a flight +class AirMapFlightManager : public QObject, public LifetimeChecker +{ + Q_OBJECT +public: + AirMapFlightManager (AirMapSharedState& shared); + + void findFlight (const QGCGeoBoundingCube& bc); + void endFlight (const QString& id); + QString flightID () { return _flightID; } + +signals: + void error (const QString& what, const QString& airmapdMessage, const QString& airmapdDetails); + void flightIDChanged (); + +private: + + enum class State { + Idle, + GetPilotID, + FetchFlights, + FlightEnd, + }; + + State _state = State::Idle; + AirMapSharedState& _shared; + QString _flightID; + QGCGeoBoundingCube _searchArea; +}; + diff --git a/src/Airmap/AirMapFlightPlanManager.cc b/src/Airmap/AirMapFlightPlanManager.cc new file mode 100644 index 0000000..4847050 --- /dev/null +++ b/src/Airmap/AirMapFlightPlanManager.cc @@ -0,0 +1,926 @@ +/**************************************************************************** + * + * (c) 2009-2020 QGROUNDCONTROL PROJECT + * + * QGroundControl is licensed according to the terms in the file + * COPYING.md in the root of the source code directory. + * + ****************************************************************************/ + +#include "AirMapFlightPlanManager.h" +#include "AirMapManager.h" +#include "AirMapRulesetsManager.h" +#include "AirMapAdvisoryManager.h" +#include "QGCApplication.h" +#include "SettingsManager.h" + +#include "PlanMasterController.h" +#include "QGCMAVLink.h" + +#include "airmap/date_time.h" +#include "airmap/flight_plans.h" +#include "airmap/flights.h" +#include "airmap/geometry.h" +#include "airmap/pilots.h" + +using namespace airmap; + +//----------------------------------------------------------------------------- +AirMapFlightAuthorization::AirMapFlightAuthorization(const Evaluation::Authorization auth, QObject *parent) + : AirspaceFlightAuthorization(parent) + , _auth(auth) +{ +} + +//----------------------------------------------------------------------------- +AirspaceFlightAuthorization::AuthorizationStatus +AirMapFlightAuthorization::status() +{ + switch(_auth.status) { + case Evaluation::Authorization::Status::accepted: + return AirspaceFlightAuthorization::Accepted; + case Evaluation::Authorization::Status::rejected: + return AirspaceFlightAuthorization::Rejected; + case Evaluation::Authorization::Status::pending: + return AirspaceFlightAuthorization::Pending; + case Evaluation::Authorization::Status::accepted_upon_submission: + return AirspaceFlightAuthorization::AcceptedOnSubmission; + case Evaluation::Authorization::Status::rejected_upon_submission: + return AirspaceFlightAuthorization::RejectedOnSubmission; + } + return AirspaceFlightAuthorization::Unknown; +} + +//----------------------------------------------------------------------------- +AirMapFlightInfo::AirMapFlightInfo(const airmap::Flight& flight, QObject *parent) + : AirspaceFlightInfo(parent) + , _flight(flight) +{ + //-- Load bounding box geometry + const Geometry& geometry = flight.geometry; + if(geometry.type() == Geometry::Type::polygon) { + const Geometry::Polygon& polygon = geometry.details_for_polygon(); + for (const auto& vertex : polygon.outer_ring.coordinates) { + QGeoCoordinate coord; + if (vertex.altitude) { + coord = QGeoCoordinate(vertex.latitude, vertex.longitude, vertex.altitude.get()); + } else { + coord = QGeoCoordinate(vertex.latitude, vertex.longitude); + } + _boundingBox.append(QVariant::fromValue(coord)); + } + } +} + +//----------------------------------------------------------------------------- +QString +AirMapFlightInfo::createdTime() +{ + return QDateTime::fromMSecsSinceEpoch(static_cast(airmap::milliseconds_since_epoch(_flight.created_at))).toString("yyyy MM dd - hh:mm:ss"); +} + +//----------------------------------------------------------------------------- +QString +AirMapFlightInfo::startTime() +{ + return QDateTime::fromMSecsSinceEpoch(static_cast(airmap::milliseconds_since_epoch(_flight.start_time))).toString("yyyy MM dd - hh:mm:ss"); +} + +//----------------------------------------------------------------------------- +QDateTime +AirMapFlightInfo::qStartTime() +{ + return QDateTime::fromMSecsSinceEpoch(static_cast(airmap::milliseconds_since_epoch(_flight.start_time))); +} + +//----------------------------------------------------------------------------- +bool +AirMapFlightInfo::active() +{ + QDateTime end = QDateTime::fromMSecsSinceEpoch(static_cast(airmap::milliseconds_since_epoch(_flight.end_time))); + QDateTime now = QDateTime::currentDateTime(); + return end > now; +} + +//----------------------------------------------------------------------------- +void +AirMapFlightInfo::setEndFlight(DateTime end) +{ + _flight.end_time = end; + emit activeChanged(); +} + +//----------------------------------------------------------------------------- +QString +AirMapFlightInfo::endTime() +{ + return QDateTime::fromMSecsSinceEpoch(static_cast(airmap::milliseconds_since_epoch(_flight.end_time))).toString("yyyy MM dd - hh:mm:ss"); +} + +//----------------------------------------------------------------------------- +AirMapFlightPlanManager::AirMapFlightPlanManager(AirMapSharedState& shared, QObject *parent) + : AirspaceFlightPlanProvider(parent) + , _shared(shared) +{ + connect(&_pollTimer, &QTimer::timeout, this, &AirMapFlightPlanManager::_pollBriefing); + _flightStartTime = QDateTime::currentDateTime().addSecs(60); +} + +//----------------------------------------------------------------------------- +AirMapFlightPlanManager::~AirMapFlightPlanManager() +{ + _advisories.deleteListAndContents(); + _rulesets.deleteListAndContents(); +} + +//----------------------------------------------------------------------------- +void +AirMapFlightPlanManager::setFlightStartTime(QDateTime start) +{ + if(start < QDateTime::currentDateTime()) { + start = QDateTime::currentDateTime().addSecs(1); + setDirty(true); + } + if(_flightStartTime != start) { + _flightStartTime = start; + setDirty(true); + emit flightStartTimeChanged(); + } + qCDebug(AirMapManagerLog) << "Set time start time" << _flightStartTime; +} + +//----------------------------------------------------------------------------- +void +AirMapFlightPlanManager::setFlightStartsNow(bool now) +{ + _flightStartsNow = now; + setDirty(true); + emit flightStartsNowChanged(); +} + +//----------------------------------------------------------------------------- +void +AirMapFlightPlanManager::setFlightDuration(int seconds) +{ + if(_flightDuration != seconds || _flightDuration < 30) { + _flightDuration = seconds; + if(_flightDuration < 30) { + _flightDuration = 30; + } + setDirty(true); + emit flightDurationChanged(); + qCDebug(AirMapManagerLog) << "Set time duration" << _flightDuration; + } +} + +//----------------------------------------------------------------------------- +QDateTime +AirMapFlightPlanManager::flightStartTime() const +{ + return _flightStartTime; +} + +//----------------------------------------------------------------------------- +int +AirMapFlightPlanManager::flightDuration() const +{ + return _flightDuration; +} + +//----------------------------------------------------------------------------- +void +AirMapFlightPlanManager::startFlightPlanning(PlanMasterController *planController) +{ + if (!_shared.client()) { + qCDebug(AirMapManagerLog) << "No AirMap client instance. Will not create a flight"; + return; + } + + if (_state != State::Idle) { + qCWarning(AirMapManagerLog) << "AirMapFlightPlanManager::startFlightPlanning: State not idle"; + return; + } + + //-- TODO: Check if there is an ongoing flight plan and do something about it (Delete it?) + + /* + * if(!flightPlanID().isEmpty()) { + * do something; + * } + */ + + if(!_planController) { + _planController = planController; + //-- Get notified of mission changes + connect(planController->missionController(), &MissionController::missionBoundingCubeChanged, this, &AirMapFlightPlanManager::_missionChanged); + } + //-- Set initial flight start time + setFlightStartTime(QDateTime::currentDateTime().addSecs(5 * 60)); +} + +//----------------------------------------------------------------------------- +void +AirMapFlightPlanManager::submitFlightPlan() +{ + if(flightPlanID().isEmpty()) { + qCWarning(AirMapManagerLog) << "Submit flight with no flight plan."; + return; + } + _flightId.clear(); + emit flightIDChanged(_flightId); + _state = State::FlightSubmit; + FlightPlans::Submit::Parameters params; + params.authorization = _shared.loginToken().toStdString(); + params.id = flightPlanID().toStdString(); + std::weak_ptr isAlive(_instance); + _shared.client()->flight_plans().submit(params, [this, isAlive](const FlightPlans::Submit::Result& result) { + if (!isAlive.lock()) return; + if (_state != State::FlightSubmit) return; + if (result) { + _flightPlan = result.value(); + _flightId = QString::fromStdString(_flightPlan.flight_id.get()); + _state = State::Idle; + _pollBriefing(); + emit flightIDChanged(_flightId); + } else { + QString description = QString::fromStdString(result.error().description() ? result.error().description().get() : ""); + emit error("Failed to submit Flight Plan", + QString::fromStdString(result.error().message()), description); + _state = State::Idle; + _flightPermitStatus = AirspaceFlightPlanProvider::PermitRejected; + emit flightPermitStatusChanged(); + } + }); +} + +//----------------------------------------------------------------------------- +void +AirMapFlightPlanManager::updateFlightPlan() +{ + //-- Are we enabled? + if(!qgcApp()->toolbox()->settingsManager()->airMapSettings()->enableAirMap()->rawValue().toBool()) { + return; + } + //-- Do we have a license? + if(!_shared.hasAPIKey()) { + return; + } + _flightPermitStatus = AirspaceFlightPlanProvider::PermitPending; + emit flightPermitStatusChanged(); + setDirty(false); + _updateFlightPlan(true); +} + +//----------------------------------------------------------------------------- +void +AirMapFlightPlanManager::endFlight(QString flightID) +{ + qCDebug(AirMapManagerLog) << "End flight"; + _flightToEnd = flightID; + if (_shared.pilotID().isEmpty()) { + //-- Need to get the pilot id + qCDebug(AirMapManagerLog) << "Getting pilot ID"; + _state = State::GetPilotID; + std::weak_ptr isAlive(_instance); + _shared.doRequestWithLogin([this, isAlive](const QString& login_token) { + if (!isAlive.lock()) return; + Pilots::Authenticated::Parameters params; + params.authorization = login_token.toStdString(); + _shared.client()->pilots().authenticated(params, [this, isAlive](const Pilots::Authenticated::Result& result) { + if (!isAlive.lock()) return; + if (_state != State::GetPilotID) return; + if (result) { + QString pilotID = QString::fromStdString(result.value().id); + _shared.setPilotID(pilotID); + qCDebug(AirMapManagerLog) << "Got Pilot ID:" << pilotID; + _state = State::Idle; + _endFlight(); + } else { + _state = State::Idle; + QString description = QString::fromStdString(result.error().description() ? result.error().description().get() : ""); + emit error("Failed to get pilot ID", QString::fromStdString(result.error().message()), description); + return; + } + }); + }); + } else { + _endFlight(); + } +} + +//----------------------------------------------------------------------------- +void +AirMapFlightPlanManager::_endFlight() +{ + if(_flightToEnd.isEmpty()) { + qCDebug(AirMapManagerLog) << "End non existing flight"; + return; + } + qCDebug(AirMapManagerLog) << "End Flight. State:" << static_cast(_state); + if(_state != State::Idle) { + QTimer::singleShot(100, this, &AirMapFlightPlanManager::_endFlight); + return; + } + qCDebug(AirMapManagerLog) << "Ending flight:" << _flightToEnd; + _state = State::FlightEnd; + std::weak_ptr isAlive(_instance); + Flights::EndFlight::Parameters params; + params.authorization = _shared.loginToken().toStdString(); + params.id = _flightToEnd.toStdString(); + //-- End flight + _shared.client()->flights().end_flight(params, [this, isAlive](const Flights::EndFlight::Result& result) { + if (!isAlive.lock()) return; + if (_state != State::FlightEnd) return; + if (result) { + qCDebug(AirMapManagerLog) << "Flight Ended"; + int idx = _flightList.findFlightID(_flightToEnd); + if(idx >= 0) { + AirMapFlightInfo* pInfo = qobject_cast(_flightList.get(idx)); + if(pInfo) { + pInfo->setEndFlight(result.value().end_time); + } + } + } else { + QString description = QString::fromStdString(result.error().description() ? result.error().description().get() : ""); + emit error("End flight failed", QString::fromStdString(result.error().message()), description); + } + _flightToEnd.clear(); + _state = State::Idle; + }); +} + +//----------------------------------------------------------------------------- +bool +AirMapFlightPlanManager::_collectFlightData() +{ + if(!_planController || !_planController->missionController()) { + return false; + } + //-- Get flight bounding cube and prepare (box) polygon + QGCGeoBoundingCube bc = *_planController->missionController()->travelBoundingCube(); + if(!bc.isValid() || (fabs(bc.area()) < 0.0001)) { + //-- TODO: If single point, we need to set a point and a radius instead + qCDebug(AirMapManagerLog) << "Not enough points for a flight plan."; + return false; + } + // altitude reference for AirMap is takeoff altitude & all altitudes provided in the bounding cube are relative to takeoff already + _flight.takeoffCoord = _planController->missionController()->takeoffCoordinate(); + _flight.maxAltitudeAboveTakeoff = static_cast(fmax(bc.pointNW.altitude(), bc.pointSE.altitude())); + _flight.coords = bc.polygon2D(); + _flight.bc = bc; + emit missionAreaChanged(); + return true; +} + +//----------------------------------------------------------------------------- +void +AirMapFlightPlanManager::_createFlightPlan() +{ + _flight.reset(); + + //-- Get flight data + if(!_collectFlightData()) { + return; + } + + qCDebug(AirMapManagerLog) << "About to create flight plan"; + qCDebug(AirMapManagerLog) << "Takeoff: " << _flight.takeoffCoord; + qCDebug(AirMapManagerLog) << "Bounding box:" << _flight.bc.pointNW << _flight.bc.pointSE; + qCDebug(AirMapManagerLog) << "Flight Start:" << flightStartTime().toString(); + qCDebug(AirMapManagerLog) << "Flight Duration: " << flightDuration(); + + if (_shared.pilotID().isEmpty() && !_shared.settings().userName.isEmpty() && !_shared.settings().password.isEmpty()) { + //-- Need to get the pilot id before uploading the flight plan + qCDebug(AirMapManagerLog) << "Getting pilot ID"; + _state = State::GetPilotID; + std::weak_ptr isAlive(_instance); + _shared.doRequestWithLogin([this, isAlive](const QString& login_token) { + if (!isAlive.lock()) return; + Pilots::Authenticated::Parameters params; + params.authorization = login_token.toStdString(); + _shared.client()->pilots().authenticated(params, [this, isAlive](const Pilots::Authenticated::Result& result) { + if (!isAlive.lock()) return; + if (_state != State::GetPilotID) return; + if (result) { + QString pilotID = QString::fromStdString(result.value().id); + _shared.setPilotID(pilotID); + qCDebug(AirMapManagerLog) << "Got Pilot ID:" << pilotID; + _state = State::Idle; + _uploadFlightPlan(); + } else { + _flightPermitStatus = AirspaceFlightPlanProvider::PermitNone; + emit flightPermitStatusChanged(); + _state = State::Idle; + QString description = QString::fromStdString(result.error().description() ? result.error().description().get() : ""); + emit error("Failed to create Flight Plan", QString::fromStdString(result.error().message()), description); + return; + } + }); + }); + } else { + _uploadFlightPlan(); + } + + _flightPermitStatus = AirspaceFlightPlanProvider::PermitPending; + emit flightPermitStatusChanged(); +} + +//----------------------------------------------------------------------------- +void +AirMapFlightPlanManager::_updateRulesAndFeatures(std::vector& rulesets, std::unordered_map& features, bool updateFeatures) +{ + auto* pRulesMgr = qobject_cast(qgcApp()->toolbox()->airspaceManager()->ruleSets()); + if(pRulesMgr) { + for(int rs = 0; rs < pRulesMgr->ruleSets()->count(); rs++) { + AirMapRuleSet* ruleSet = qobject_cast(pRulesMgr->ruleSets()->get(rs)); + //-- If this ruleset is selected + if(ruleSet && ruleSet->selected()) { + rulesets.push_back(ruleSet->id().toStdString()); + //-- Features within each rule (only when updating) + if(updateFeatures) { + for(int r = 0; r < ruleSet->rules()->count(); r++) { + AirMapRule* rule = qobject_cast(ruleSet->rules()->get(r)); + if(rule) { + for(int f = 0; f < rule->features()->count(); f++) { + AirMapRuleFeature* feature = qobject_cast(rule->features()->get(f)); + if(features.find(feature->name().toStdString()) != features.end()) { + qCDebug(AirMapManagerLog) << "Removing duplicate:" << feature->name(); + continue; + } + if(feature && feature->value().isValid()) { + switch(feature->type()) { + case AirspaceRuleFeature::Boolean: + if(feature->value().toInt() == 0 || feature->value().toInt() == 1) { + features[feature->name().toStdString()] = RuleSet::Feature::Value(feature->value().toBool()); + } else { + //-- If not set, default to false + features[feature->name().toStdString()] = RuleSet::Feature::Value(false); + } + break; + case AirspaceRuleFeature::Float: + //-- Sanity check for floats + if(std::isfinite(feature->value().toFloat())) { + features[feature->name().toStdString()] = RuleSet::Feature::Value(feature->value().toDouble()); + } + break; + case AirspaceRuleFeature::String: + //-- Skip empty responses + if(!feature->value().toString().isEmpty()) { + features[feature->name().toStdString()] = RuleSet::Feature::Value(feature->value().toString().toStdString()); + } + break; + default: + qCWarning(AirMapManagerLog) << "Unknown type for feature" << feature->name(); + } + } + } + } + } + } + } + } + } +} + +//----------------------------------------------------------------------------- +void +AirMapFlightPlanManager::_updateFlightStartEndTime(DateTime& start_time, DateTime& end_time) +{ + if(_flightStartsNow || _flightStartTime < QDateTime::currentDateTime()) { + setFlightStartTime(QDateTime::currentDateTime().addSecs(1)); + } + quint64 startt = static_cast(_flightStartTime.toUTC().toMSecsSinceEpoch()); + start_time = airmap::from_milliseconds_since_epoch(airmap::milliseconds(static_cast(startt))); + quint64 endt = startt + (static_cast(_flightDuration) * 1000); + end_time = airmap::from_milliseconds_since_epoch(airmap::milliseconds(static_cast(endt))); +} + +//----------------------------------------------------------------------------- +void +AirMapFlightPlanManager::_uploadFlightPlan() +{ + qCDebug(AirMapManagerLog) << "Uploading flight plan. State:" << static_cast(_state); + if(_state != State::Idle) { + QTimer::singleShot(100, this, &AirMapFlightPlanManager::_uploadFlightPlan); + return; + } + //-- Reset "relevant" features + _importantFeatures.clear(); + _state = State::FlightUpload; + std::weak_ptr isAlive(_instance); + _shared.doRequestWithLogin([this, isAlive](const QString& login_token) { + if (!isAlive.lock()) return; + if (_state != State::FlightUpload) return; + FlightPlans::Create::Parameters params; + params.max_altitude = _flight.maxAltitudeAboveTakeoff; + params.min_altitude = 0.0; + params.buffer = 10.f; + params.latitude = static_cast(_flight.takeoffCoord.latitude()); + params.longitude = static_cast(_flight.takeoffCoord.longitude()); + params.pilot.id = _shared.pilotID().toStdString(); + //-- Handle flight start/end + _updateFlightStartEndTime(params.start_time, params.end_time); + //-- Rules & Features + _updateRulesAndFeatures(params.rulesets, params.features); + //-- Geometry: polygon + Geometry::Polygon polygon; + for (const auto& qcoord : _flight.coords) { + Geometry::Coordinate coord; + coord.latitude = qcoord.latitude(); + coord.longitude = qcoord.longitude(); + polygon.outer_ring.coordinates.push_back(coord); + } + params.geometry = Geometry(polygon); + params.authorization = login_token.toStdString(); + //-- Create flight plan + _shared.client()->flight_plans().create_by_polygon(params, [this, isAlive](const FlightPlans::Create::Result& result) { + if (!isAlive.lock()) return; + if (_state != State::FlightUpload) return; + _state = State::Idle; + if (result) { + _flightPlan = result.value(); + qCDebug(AirMapManagerLog) << "Flight plan created:" << flightPlanID(); + _pollBriefing(); + } else { + QString description = QString::fromStdString(result.error().description() ? result.error().description().get() : ""); + emit error("Flight Plan creation failed", QString::fromStdString(result.error().message()), description); + } + }); + }); +} + +//----------------------------------------------------------------------------- +void +AirMapFlightPlanManager::_updateFlightPlanOnTimer() +{ + _updateFlightPlan(false); +} + +//----------------------------------------------------------------------------- +void +AirMapFlightPlanManager::_updateFlightPlan(bool interactive) +{ + qCDebug(AirMapManagerLog) << "Updating flight plan. State:" << static_cast(_state); + + if(_state != State::Idle) { + QTimer::singleShot(250, this, &AirMapFlightPlanManager::_updateFlightPlanOnTimer); + return; + } + //-- Get flight data + if(!_collectFlightData()) { + return; + } + + //-- Update local instance of the flight plan + _flightPlan.altitude_agl.max = _flight.maxAltitudeAboveTakeoff; + _flightPlan.altitude_agl.min = 0.0f; + _flightPlan.buffer = 2.f; + _flightPlan.takeoff.latitude = static_cast(_flight.takeoffCoord.latitude()); + _flightPlan.takeoff.longitude = static_cast(_flight.takeoffCoord.longitude()); + //-- Rules & Features + _flightPlan.rulesets.clear(); + _flightPlan.features.clear(); + //-- If interactive, we collect features otherwise we don't + _updateRulesAndFeatures(_flightPlan.rulesets, _flightPlan.features, interactive); + //-- Handle flight start/end + _updateFlightStartEndTime(_flightPlan.start_time, _flightPlan.end_time); + //-- Geometry: polygon + Geometry::Polygon polygon; + for (const auto& qcoord : _flight.coords) { + Geometry::Coordinate coord; + coord.latitude = qcoord.latitude(); + coord.longitude = qcoord.longitude(); + polygon.outer_ring.coordinates.push_back(coord); + } + _flightPlan.geometry = Geometry(polygon); + + qCDebug(AirMapManagerLog) << "Takeoff: " << _flight.takeoffCoord; + qCDebug(AirMapManagerLog) << "Bounding box: " << _flight.bc.pointNW << _flight.bc.pointSE; + qCDebug(AirMapManagerLog) << "Flight Start: " << flightStartTime().toString(); + qCDebug(AirMapManagerLog) << "Flight Duration:" << flightDuration(); + + _state = State::FlightUpdate; + std::weak_ptr isAlive(_instance); + _shared.doRequestWithLogin([this, isAlive](const QString& login_token) { + if (!isAlive.lock()) return; + if (_state != State::FlightUpdate) return; + FlightPlans::Update::Parameters params = {}; + params.authorization = login_token.toStdString(); + params.flight_plan = _flightPlan; + //-- Update flight plan + _shared.client()->flight_plans().update(params, [this, isAlive](const FlightPlans::Update::Result& result) { + if (!isAlive.lock()) return; + if (_state != State::FlightUpdate) return; + _state = State::Idle; + if (result) { + qCDebug(AirMapManagerLog) << "Flight plan updated:" << flightPlanID(); + _pollBriefing(); + } else { + QString description = QString::fromStdString(result.error().description() ? result.error().description().get() : ""); + emit error("Flight Plan update failed", QString::fromStdString(result.error().message()), description); + } + }); + }); +} + +//----------------------------------------------------------------------------- +static bool +adv_sort(QObject* a, QObject* b) +{ + AirMapAdvisory* aa = qobject_cast(a); + AirMapAdvisory* bb = qobject_cast(b); + if(!aa || !bb) return false; + return static_cast(aa->color()) > static_cast(bb->color()); +} + +//----------------------------------------------------------------------------- +static bool +rules_sort(QObject* a, QObject* b) +{ + AirMapRule* aa = qobject_cast(a); + AirMapRule* bb = qobject_cast(b); + if(!aa || !bb) return false; + return static_cast(aa->status()) > static_cast(bb->status()); +} + +//----------------------------------------------------------------------------- +bool +AirMapFlightPlanManager::_findBriefFeature(const QString& name) +{ + for(int i = 0; i < _briefFeatures.count(); i++ ) { + AirMapRuleFeature* feature = qobject_cast(_briefFeatures.get(i)); + if (feature && feature->name() == name) { + return true; + } + } + return false; +} + +//----------------------------------------------------------------------------- +void +AirMapFlightPlanManager::_pollBriefing() +{ + qCDebug(AirMapManagerLog) << "Poll Briefing. State:" << static_cast(_state); + if(_state != State::Idle) { + QTimer::singleShot(100, this, &AirMapFlightPlanManager::_pollBriefing); + return; + } + _state = State::FlightPolling; + FlightPlans::RenderBriefing::Parameters params; + params.authorization = _shared.loginToken().toStdString(); + params.id = flightPlanID().toStdString(); + std::weak_ptr isAlive(_instance); + _shared.client()->flight_plans().render_briefing(params, [this, isAlive](const FlightPlans::RenderBriefing::Result& result) { + if (!isAlive.lock()) return; + if (_state != State::FlightPolling) return; + if (result) { + const FlightPlan::Briefing& briefing = result.value(); + qCDebug(AirMapManagerLog) << "Flight polling/briefing response"; + //-- Collect advisories + _valid = false; + _advisories.clearAndDeleteContents(); + const std::vector advisories = briefing.airspace.advisories; + _airspaceColor = static_cast(briefing.airspace.color); + for (const auto& advisory : advisories) { + AirMapAdvisory* pAdvisory = new AirMapAdvisory(this); + pAdvisory->_id = QString::fromStdString(advisory.airspace.id()); + pAdvisory->_name = QString::fromStdString(advisory.airspace.name()); + pAdvisory->_type = static_cast(advisory.airspace.type()); + pAdvisory->_color = static_cast(advisory.color); + _advisories.append(pAdvisory); + qCDebug(AirMapManagerLog) << "Adding briefing advisory" << pAdvisory->name(); + } + //-- Sort in order of color (priority) + _advisories.beginReset(); + std::sort(_advisories.objectList()->begin(), _advisories.objectList()->end(), adv_sort); + _advisories.endReset(); + _valid = true; + //-- Collect Rulesets + _authorizations.clearAndDeleteContents(); + _rulesViolation.clearAndDeleteContents(); + _rulesInfo.clearAndDeleteContents(); + _rulesReview.clearAndDeleteContents(); + _rulesFollowing.clearAndDeleteContents(); + _briefFeatures.clear(); + for(const auto& ruleset : briefing.evaluation.rulesets) { + AirMapRuleSet* pRuleSet = new AirMapRuleSet(this); + pRuleSet->_id = QString::fromStdString(ruleset.id); + //-- Iterate Rules + for (const auto& rule : ruleset.rules) { + AirMapRule* pRule = new AirMapRule(rule, this); + //-- Iterate Rule Features + for (const auto& feature : rule.features) { + AirMapRuleFeature* pFeature = new AirMapRuleFeature(feature, this); + pRule->_features.append(pFeature); + if(rule.status == RuleSet::Rule::Status::missing_info) { + if(!_findBriefFeature(pFeature->name())) { + _briefFeatures.append(pFeature); + _importantFeatures.append(pFeature); + qCDebug(AirMapManagerLog) << "Adding briefing feature" << pFeature->name() << pFeature->description() << pFeature->type(); + } else { + qCDebug(AirMapManagerLog) << "Skipping briefing feature duplicate" << pFeature->name() << pFeature->description() << pFeature->type(); + } + } + } + //-- When a flight is first created, we send no features. That means that all "missing_info" are "relevant" features. + // We keep a list of them so they will be always shown to the user even when they are no longer "missing_info" + for(const auto& feature : _importantFeatures) { + if(!_findBriefFeature(feature->name())) { + _briefFeatures.append(feature); + } + } + pRuleSet->_rules.append(pRule); + //-- Rules separated by status for presentation + switch(rule.status) { + case RuleSet::Rule::Status::conflicting: + _rulesViolation.append(new AirMapRule(rule, this)); + break; + case RuleSet::Rule::Status::not_conflicting: + _rulesFollowing.append(new AirMapRule(rule, this)); + break; + case RuleSet::Rule::Status::missing_info: + _rulesInfo.append(new AirMapRule(rule, this)); + break; + case RuleSet::Rule::Status::informational: + _rulesReview.append(new AirMapRule(rule, this)); + break; + default: + break; + } + } + //-- Sort rules by relevance order + pRuleSet->_rules.beginReset(); + std::sort(pRuleSet->_rules.objectList()->begin(), pRuleSet->_rules.objectList()->end(), rules_sort); + pRuleSet->_rules.endReset(); + _rulesets.append(pRuleSet); + qCDebug(AirMapManagerLog) << "Adding briefing ruleset" << pRuleSet->id(); + } + //-- Evaluate briefing status + if (briefing.evaluation.authorizations.size() == 0) { + _flightPermitStatus = AirspaceFlightPlanProvider::PermitNotRequired; + emit flightPermitStatusChanged(); + } else { + bool rejected = false; + bool accepted = false; + bool pending = false; + for (const auto& authorization : briefing.evaluation.authorizations) { + AirMapFlightAuthorization* pAuth = new AirMapFlightAuthorization(authorization, this); + _authorizations.append(pAuth); + qCDebug(AirMapManagerLog) << "Autorization:" << pAuth->name() << " (" << pAuth->message() << ")" << static_cast(pAuth->status()); + switch (authorization.status) { + case Evaluation::Authorization::Status::accepted: + case Evaluation::Authorization::Status::accepted_upon_submission: + accepted = true; + break; + case Evaluation::Authorization::Status::rejected: + case Evaluation::Authorization::Status::rejected_upon_submission: + rejected = true; + break; + case Evaluation::Authorization::Status::pending: + pending = true; + break; + } + } + qCDebug(AirMapManagerLog) << "Flight approval: accepted=" << accepted << "rejected" << rejected << "pending" << pending; + if ((rejected || accepted) && !pending) { + if (rejected) { // rejected has priority + _flightPermitStatus = AirspaceFlightPlanProvider::PermitRejected; + } else { + _flightPermitStatus = AirspaceFlightPlanProvider::PermitAccepted; + } + emit flightPermitStatusChanged(); + } else { + //-- Pending. Try again. + _pollTimer.setSingleShot(true); + _pollTimer.start(1000); + } + } + emit advisoryChanged(); + emit rulesChanged(); + _state = State::Idle; + } else { + _state = State::Idle; + QString description = QString::fromStdString(result.error().description() ? result.error().description().get() : ""); + emit error("Brief Request failed", + QString::fromStdString(result.error().message()), description); + } + }); +} + +//----------------------------------------------------------------------------- +void +AirMapFlightPlanManager::_missionChanged() +{ + //-- Are we enabled? + if(!qgcApp()->toolbox()->settingsManager()->airMapSettings()->enableAirMap()->rawValue().toBool()) { + return; + } + //-- Do we have a license? + if(!_shared.hasAPIKey()) { + return; + } + //-- Creating a new flight plan? + if(_state == State::Idle) { + if(flightPlanID().isEmpty()) { + _createFlightPlan(); + } else { + //-- Plan is being modified + _updateFlightPlan(); + } + } +} + +//----------------------------------------------------------------------------- +void +AirMapFlightPlanManager::loadFlightList(QDateTime startTime, QDateTime endTime) +{ + //-- TODO: This is not checking if the state is Idle. Again, these need to + // queued up and handled by a worker thread. + qCDebug(AirMapManagerLog) << "Preparing load flight list"; + _loadingFlightList = true; + emit loadingFlightListChanged(); + _rangeStart = startTime; + _rangeEnd = endTime; + qCDebug(AirMapManagerLog) << "List flights from:" << _rangeStart.toString("yyyy MM dd - hh:mm:ss") << "to" << _rangeEnd.toString("yyyy MM dd - hh:mm:ss"); + if (_shared.pilotID().isEmpty()) { + //-- Need to get the pilot id + qCDebug(AirMapManagerLog) << "Getting pilot ID"; + _state = State::GetPilotID; + std::weak_ptr isAlive(_instance); + _shared.doRequestWithLogin([this, isAlive](const QString& login_token) { + if (!isAlive.lock()) return; + Pilots::Authenticated::Parameters params; + params.authorization = login_token.toStdString(); + _shared.client()->pilots().authenticated(params, [this, isAlive](const Pilots::Authenticated::Result& result) { + if (!isAlive.lock()) return; + if (_state != State::GetPilotID) return; + if (result) { + QString pilotID = QString::fromStdString(result.value().id); + _shared.setPilotID(pilotID); + qCDebug(AirMapManagerLog) << "Got Pilot ID:" << pilotID; + _state = State::Idle; + _loadFlightList(); + } else { + _state = State::Idle; + QString description = QString::fromStdString(result.error().description() ? result.error().description().get() : ""); + emit error("Failed to get pilot ID", QString::fromStdString(result.error().message()), description); + _loadingFlightList = false; + emit loadingFlightListChanged(); + return; + } + }); + }); + } else { + _loadFlightList(); + } +} + +//----------------------------------------------------------------------------- +void +AirMapFlightPlanManager::_loadFlightList() +{ + qCDebug(AirMapManagerLog) << "Load flight list. State:" << static_cast(_state); + if(_state != State::Idle) { + QTimer::singleShot(100, this, &AirMapFlightPlanManager::_loadFlightList); + return; + } + _flightList.clear(); + emit flightListChanged(); + _state = State::LoadFlightList; + std::weak_ptr isAlive(_instance); + _shared.doRequestWithLogin([this, isAlive](const QString& login_token) { + if (!isAlive.lock()) return; + if (_state != State::LoadFlightList) return; + Flights::Search::Parameters params; + params.authorization = login_token.toStdString(); + quint64 start = static_cast(_rangeStart.toUTC().toMSecsSinceEpoch()); + quint64 end = static_cast(_rangeEnd.toUTC().toMSecsSinceEpoch()); + params.start_after = airmap::from_milliseconds_since_epoch(airmap::milliseconds(static_cast(start))); + params.start_before = airmap::from_milliseconds_since_epoch(airmap::milliseconds(static_cast(end))); + params.limit = 250; + params.pilot_id = _shared.pilotID().toStdString(); + _shared.client()->flights().search(params, [this, isAlive](const Flights::Search::Result& result) { + if (!isAlive.lock()) return; + if (_state != State::LoadFlightList) return; + if (result && result.value().flights.size() > 0) { + const Flights::Search::Response& response = result.value(); + for (const auto& flight : response.flights) { + AirMapFlightInfo* pFlight = new AirMapFlightInfo(flight, this); + _flightList.append(pFlight); + qCDebug(AirMapManagerLog) << "Found:" << pFlight->flightID() << pFlight->flightPlanID() << pFlight->endTime(); + } + _flightList.sortStartFlight(); + emit flightListChanged(); + } else { + if(!result) { + QString description = QString::fromStdString(result.error().description() ? result.error().description().get() : ""); + emit error("Flight search failed", QString::fromStdString(result.error().message()), description); + } + } + _state = State::Idle; + _loadingFlightList = false; + emit loadingFlightListChanged(); + }); + }); +} + diff --git a/src/Airmap/AirMapFlightPlanManager.h b/src/Airmap/AirMapFlightPlanManager.h new file mode 100644 index 0000000..339a772 --- /dev/null +++ b/src/Airmap/AirMapFlightPlanManager.h @@ -0,0 +1,181 @@ +/**************************************************************************** + * + * (c) 2009-2020 QGROUNDCONTROL PROJECT + * + * QGroundControl is licensed according to the terms in the file + * COPYING.md in the root of the source code directory. + * + ****************************************************************************/ + +#pragma once + +#include "LifetimeChecker.h" +#include "AirMapSharedState.h" +#include "AirspaceFlightPlanProvider.h" + +#include +#include +#include +#include + +#include "airmap/flight.h" +#include "airmap/flight_plan.h" +#include "airmap/ruleset.h" + +class AirMapRuleFeature; +class PlanMasterController; + +//----------------------------------------------------------------------------- +class AirMapFlightAuthorization : public AirspaceFlightAuthorization +{ + Q_OBJECT +public: + AirMapFlightAuthorization (const airmap::Evaluation::Authorization auth, QObject *parent = nullptr); + + AirspaceFlightAuthorization::AuthorizationStatus + status () override; + QString name () override { return QString::fromStdString(_auth.authority.name); } + QString id () override { return QString::fromStdString(_auth.authority.id); } + QString message () override { return QString::fromStdString(_auth.message); } +private: + airmap::Evaluation::Authorization _auth; +}; + +//----------------------------------------------------------------------------- +class AirMapFlightInfo : public AirspaceFlightInfo +{ + Q_OBJECT +public: + AirMapFlightInfo (const airmap::Flight& flight, QObject *parent = nullptr); + QString flightID () override { return QString::fromStdString(_flight.id); } + QString flightPlanID () override { return _flight.flight_plan_id ? QString::fromStdString(_flight.flight_plan_id.get()) : QString(); } + QString createdTime () override; + QString startTime () override; + QString endTime () override; + QDateTime qStartTime () override; + QGeoCoordinate takeOff () override { return QGeoCoordinate(static_cast(_flight.latitude), static_cast(_flight.longitude));} + QVariantList boundingBox () override { return _boundingBox; } + bool active () override; + void setEndFlight (airmap::DateTime end); +private: + airmap::Flight _flight; + QVariantList _boundingBox; +}; + +//----------------------------------------------------------------------------- +/// class to upload a flight +class AirMapFlightPlanManager : public AirspaceFlightPlanProvider, public LifetimeChecker +{ + Q_OBJECT +public: + AirMapFlightPlanManager (AirMapSharedState& shared, QObject *parent = nullptr); + ~AirMapFlightPlanManager () override; + + PermitStatus flightPermitStatus () const override { return _flightPermitStatus; } + QDateTime flightStartTime () const override; + int flightDuration () const override; + bool flightStartsNow () const override { return _flightStartsNow; } + bool valid () override { return _valid; } + QmlObjectListModel* advisories () override { return &_advisories; } + QmlObjectListModel* ruleSets () override { return &_rulesets; } + QGCGeoBoundingCube* missionArea () override { return &_flight.bc; } + + AirspaceAdvisoryProvider::AdvisoryColor + airspaceColor () override { return _airspaceColor; } + + QmlObjectListModel* rulesViolation () override { return &_rulesViolation; } + QmlObjectListModel* rulesInfo () override { return &_rulesInfo; } + QmlObjectListModel* rulesReview () override { return &_rulesReview; } + QmlObjectListModel* rulesFollowing () override { return &_rulesFollowing; } + QmlObjectListModel* briefFeatures () override { return &_briefFeatures; } + QmlObjectListModel* authorizations () override { return &_authorizations; } + AirspaceFlightModel*flightList () override { return &_flightList; } + bool loadingFlightList () override { return _loadingFlightList; } + QString flightPlanID () {return QString::fromStdString(_flightPlan.id); } + QString flightID () {return _flightId; } + + void updateFlightPlan () override; + void submitFlightPlan () override; + void startFlightPlanning (PlanMasterController* planController) override; + void setFlightStartTime (QDateTime start) override; + void setFlightDuration (int seconds) override; + void loadFlightList (QDateTime startTime, QDateTime endTime) override; + void setFlightStartsNow (bool now) override; + void endFlight (QString flightID) override; + +signals: + void error (const QString& what, const QString& airmapdMessage, const QString& airmapdDetails); + void flightIDChanged (QString flightID); + +private slots: + void _pollBriefing (); + void _missionChanged (); + void _endFlight (); + void _uploadFlightPlan (); + void _updateFlightPlanOnTimer (); + void _loadFlightList (); + +private: + void _createFlightPlan (); + bool _collectFlightData (); + void _updateFlightPlan (bool interactive = false); + bool _findBriefFeature (const QString& name); + void _updateFlightStartEndTime (airmap::DateTime& start_time, airmap::DateTime& end_time); + void _updateRulesAndFeatures (std::vector& rulesets, std::unordered_map& features, bool updateFeatures = false); + +private: + enum class State { + Idle, + GetPilotID, + FlightUpload, + FlightUpdate, + FlightEnd, + FlightSubmit, + FlightPolling, + LoadFlightList, + }; + + struct Flight { + QGCGeoBoundingCube bc; + QList coords; + QGeoCoordinate takeoffCoord; + float maxAltitudeAboveTakeoff = 0; + void reset() { + bc.reset(); + coords.clear(); + maxAltitudeAboveTakeoff = 0; + } + }; + + Flight _flight; ///< flight pending to be uploaded + State _state = State::Idle; + AirMapSharedState& _shared; + QTimer _pollTimer; ///< timer to poll for approval check + QString _flightId; ///< Current flight ID, not necessarily accepted yet + QString _flightToEnd; + PlanMasterController* _planController = nullptr; + bool _valid = false; + bool _loadingFlightList = false; + bool _flightStartsNow = false; + QmlObjectListModel _advisories; + QmlObjectListModel _rulesets; + QmlObjectListModel _rulesViolation; + QmlObjectListModel _rulesInfo; + QmlObjectListModel _rulesReview; + QmlObjectListModel _rulesFollowing; + QmlObjectListModel _briefFeatures; + QmlObjectListModel _authorizations; + AirspaceFlightModel _flightList; + QDateTime _rangeStart; + QDateTime _rangeEnd; + airmap::FlightPlan _flightPlan; + QDateTime _flightStartTime; + int _flightDuration = 15 * 60; + + QList _importantFeatures; + + AirspaceAdvisoryProvider::AdvisoryColor _airspaceColor; + AirspaceFlightPlanProvider::PermitStatus _flightPermitStatus = AirspaceFlightPlanProvider::PermitNone; + +}; + diff --git a/src/Airmap/AirMapManager.cc b/src/Airmap/AirMapManager.cc new file mode 100644 index 0000000..8fc5580 --- /dev/null +++ b/src/Airmap/AirMapManager.cc @@ -0,0 +1,257 @@ +/**************************************************************************** + * + * (c) 2009-2020 QGROUNDCONTROL PROJECT + * + * QGroundControl is licensed according to the terms in the file + * COPYING.md in the root of the source code directory. + * + ****************************************************************************/ + +#include "AirMapAdvisoryManager.h" +#include "AirMapFlightPlanManager.h" +#include "AirMapManager.h" +#include "AirMapRestrictionManager.h" +#include "AirMapRulesetsManager.h" +#include "AirMapSettings.h" +#include "AirMapTelemetry.h" +#include "AirMapTrafficMonitor.h" +#include "AirMapVehicleManager.h" +#include "AirMapWeatherInfoManager.h" + +#include "QmlObjectListModel.h" +#include "JsonHelper.h" +#include "SettingsManager.h" +#include "AppSettings.h" +#include "QGCQGeoCoordinate.h" +#include "QGCApplication.h" + +#include + +//-- Hardwired API key +#if defined(QGC_AIRMAP_KEY_AVAILABLE) +#include "Airmap_api_key.h" +#endif + +using namespace airmap; + +QGC_LOGGING_CATEGORY(AirMapManagerLog, "AirMapManagerLog") + +//----------------------------------------------------------------------------- +AirMapManager::AirMapManager(QGCApplication* app, QGCToolbox* toolbox) + : AirspaceManager(app, toolbox) + , _authStatus(Unknown) +{ + _logger = std::make_shared(); + services::register_types(); // TODO: still needed? + _logger->logging_category().setEnabled(QtDebugMsg, false); + _logger->logging_category().setEnabled(QtInfoMsg, false); + _logger->logging_category().setEnabled(QtWarningMsg, false); + _dispatchingLogger = std::make_shared(_logger); + connect(&_shared, &AirMapSharedState::error, this, &AirMapManager::_error); + connect(&_shared, &AirMapSharedState::authStatus, this, &AirMapManager::_authStatusChanged); +} + +//----------------------------------------------------------------------------- +AirMapManager::~AirMapManager() +{ + if (_shared.client()) { + delete _shared.client(); + } +} + +//----------------------------------------------------------------------------- +void +AirMapManager::setToolbox(QGCToolbox* toolbox) +{ + _settingsTimer.setSingleShot(true); + AirspaceManager::setToolbox(toolbox); + AirMapSettings* ap = toolbox->settingsManager()->airMapSettings(); + connect(ap->enableAirMap(), &Fact::rawValueChanged, this, &AirMapManager::_settingsChanged); + connect(ap->usePersonalApiKey(),&Fact::rawValueChanged, this, &AirMapManager::_settingsChanged); + connect(ap->apiKey(), &Fact::rawValueChanged, this, &AirMapManager::_settingsChanged); + connect(ap->clientID(), &Fact::rawValueChanged, this, &AirMapManager::_settingsChanged); + connect(ap->userName(), &Fact::rawValueChanged, this, &AirMapManager::_settingsChanged); + connect(ap->password(), &Fact::rawValueChanged, this, &AirMapManager::_settingsChanged); + connect(ap->enableAirspace(), &Fact::rawValueChanged, this, &AirMapManager::_airspaceEnabled); + connect(&_settingsTimer, &QTimer::timeout, this, &AirMapManager::_settingsTimeout); + _settingsTimeout(); +} + +//----------------------------------------------------------------------------- +bool +AirMapManager::connected() const +{ + return _shared.client() != nullptr; +} + +//----------------------------------------------------------------------------- +void +AirMapManager::_error(const QString& what, const QString& airmapdMessage, const QString& airmapdDetails) +{ + qCDebug(AirMapManagerLog) << "Error: "<showAppMessage(QString("Error: %1. %2").arg(what).arg(airmapdMessage)); +} + +//----------------------------------------------------------------------------- +void +AirMapManager::_authStatusChanged(AirspaceManager::AuthStatus status) +{ + _authStatus = status; + emit authStatusChanged(); +} + +//----------------------------------------------------------------------------- +void +AirMapManager::_settingsChanged() +{ + _settingsTimer.start(1000); +} + +//----------------------------------------------------------------------------- +void +AirMapManager::_airspaceEnabled() +{ + if(qgcApp()->toolbox()->settingsManager()->airMapSettings()->enableAirspace()->rawValue().toBool()) { + if(_airspaces) { + _airspaces->setROI(_roi, true); + } + } +} + +//----------------------------------------------------------------------------- +void +AirMapManager::_settingsTimeout() +{ + qCDebug(AirMapManagerLog) << "AirMap settings changed"; + _connectStatus.clear(); + emit connectStatusChanged(); + AirMapSettings* ap = _toolbox->settingsManager()->airMapSettings(); + //-- If we are disabled, there is nothing else to do. + if (!ap->enableAirMap()->rawValue().toBool()) { + _shared.logout(); + if(_shared.client()) { + delete _shared.client(); + _shared.setClient(nullptr); + emit connectedChanged(); + } + return; + } + AirMapSharedState::Settings settings; + if(ap->usePersonalApiKey()->rawValue().toBool()) { + settings.apiKey = ap->apiKey()->rawValueString(); + settings.clientID = ap->clientID()->rawValueString(); + } + //-- If we have a hardwired key (and no custom key is present), set it. +#if defined(QGC_AIRMAP_KEY_AVAILABLE) + if(!ap->usePersonalApiKey()->rawValue().toBool()) { + settings.apiKey = AirmapAPIKey(); + settings.clientID = AirmapClientID(); + } + bool authChanged = settings.apiKey != _shared.settings().apiKey || settings.apiKey.isEmpty(); +#else + bool authChanged = settings.apiKey != _shared.settings().apiKey; +#endif + settings.userName = ap->userName()->rawValueString(); + settings.password = ap->password()->rawValueString(); + if(settings.userName != _shared.settings().userName || settings.password != _shared.settings().password) { + authChanged = true; + } + _shared.setSettings(settings); + //-- Need to re-create the client if the API key or user name/password changed + if ((_shared.client() && authChanged) || !ap->enableAirMap()->rawValue().toBool()) { + delete _shared.client(); + _shared.setClient(nullptr); + emit connectedChanged(); + } + if (!_shared.client() && settings.apiKey != "") { + qCDebug(AirMapManagerLog) << "Creating AirMap client"; + auto credentials = Credentials{}; + credentials.api_key = _shared.settings().apiKey.toStdString(); + auto configuration = Client::default_production_configuration(credentials); + configuration.telemetry.host = _telemetryHost; + configuration.telemetry.port = _telemetryPort; + services::Client::create(configuration, _dispatchingLogger, this, [this](const services::Client::CreateResult& result) { + if (result) { + qCDebug(AirMapManagerLog) << "Successfully created airmap::services::Client instance"; + _shared.setClient(result.value()); + emit connectedChanged(); + _connectStatus = tr("AirMap Enabled"); + emit connectStatusChanged(); + //-- Now test authentication + _shared.login(); + } else { + qWarning("Failed to create airmap::services::Client instance"); + QString description = QString::fromStdString(result.error().description() ? result.error().description().get() : ""); + QString error = QString::fromStdString(result.error().message()); + _error(tr("Failed to create airmap::services::Client instance"), + error, description); + _connectStatus = error; + if(!description.isEmpty()) { + _connectStatus += "\n"; + _connectStatus += description; + } + emit connectStatusChanged(); + } + }); + } else { + if(settings.apiKey == "") { + _connectStatus = tr("No API key for AirMap"); + emit connectStatusChanged(); + qCDebug(AirMapManagerLog) << _connectStatus; + } + } +} + +//----------------------------------------------------------------------------- +AirspaceVehicleManager* +AirMapManager::instantiateVehicle(const Vehicle& vehicle) +{ + AirMapVehicleManager* manager = new AirMapVehicleManager(_shared, vehicle); + connect(manager, &AirMapVehicleManager::error, this, &AirMapManager::_error); + return manager; +} + +//----------------------------------------------------------------------------- +AirspaceRulesetsProvider* +AirMapManager::_instantiateRulesetsProvider() +{ + AirMapRulesetsManager* rulesetsManager = new AirMapRulesetsManager(_shared); + connect(rulesetsManager, &AirMapRulesetsManager::error, this, &AirMapManager::_error); + return rulesetsManager; +} + +//----------------------------------------------------------------------------- +AirspaceWeatherInfoProvider* +AirMapManager::_instatiateAirspaceWeatherInfoProvider() +{ + AirMapWeatherInfoManager* weatherInfo = new AirMapWeatherInfoManager(_shared); + connect(weatherInfo, &AirMapWeatherInfoManager::error, this, &AirMapManager::_error); + return weatherInfo; +} + +//----------------------------------------------------------------------------- +AirspaceAdvisoryProvider* +AirMapManager::_instatiateAirspaceAdvisoryProvider() +{ + AirMapAdvisoryManager* advisories = new AirMapAdvisoryManager(_shared); + connect(advisories, &AirMapAdvisoryManager::error, this, &AirMapManager::_error); + return advisories; +} + +//----------------------------------------------------------------------------- +AirspaceRestrictionProvider* +AirMapManager::_instantiateAirspaceRestrictionProvider() +{ + AirMapRestrictionManager* airspaces = new AirMapRestrictionManager(_shared); + connect(airspaces, &AirMapRestrictionManager::error, this, &AirMapManager::_error); + return airspaces; +} + +//----------------------------------------------------------------------------- +AirspaceFlightPlanProvider* +AirMapManager::_instantiateAirspaceFlightPlanProvider() +{ + AirMapFlightPlanManager* flightPlan = new AirMapFlightPlanManager(_shared); + connect(flightPlan, &AirMapFlightPlanManager::error, this, &AirMapManager::_error); + return flightPlan; +} diff --git a/src/Airmap/AirMapManager.h b/src/Airmap/AirMapManager.h new file mode 100644 index 0000000..80bd72c --- /dev/null +++ b/src/Airmap/AirMapManager.h @@ -0,0 +1,73 @@ +/**************************************************************************** + * + * (c) 2009-2020 QGROUNDCONTROL PROJECT + * + * QGroundControl is licensed according to the terms in the file + * COPYING.md in the root of the source code directory. + * + ****************************************************************************/ + +#pragma once + +#include "AirMapSharedState.h" +#include "AirspaceManager.h" +#include "QGCLoggingCategory.h" + +#include +#include + +#include + +#include + +class QGCToolbox; + +Q_DECLARE_LOGGING_CATEGORY(AirMapManagerLog) + +//----------------------------------------------------------------------------- +/** + * @class AirMapManager + * AirMap implementation of AirspaceManager + */ + +class AirMapManager : public AirspaceManager +{ + Q_OBJECT +public: + AirMapManager(QGCApplication* app, QGCToolbox* toolbox); + virtual ~AirMapManager() override; + + void setToolbox (QGCToolbox* toolbox) override; + + QString providerName () const override { return QString("AirMap"); } + AirspaceVehicleManager* instantiateVehicle (const Vehicle& vehicle) override; + bool connected () const override; + QString connectStatus () const override { return _connectStatus; } + AirspaceManager::AuthStatus authStatus () const override { return _authStatus; } + +protected: + AirspaceRulesetsProvider* _instantiateRulesetsProvider () override; + AirspaceWeatherInfoProvider* _instatiateAirspaceWeatherInfoProvider () override; + AirspaceAdvisoryProvider* _instatiateAirspaceAdvisoryProvider () override; + AirspaceRestrictionProvider* _instantiateAirspaceRestrictionProvider () override; + AirspaceFlightPlanProvider* _instantiateAirspaceFlightPlanProvider () override; + +private slots: + void _error (const QString& what, const QString& airmapdMessage, const QString& airmapdDetails); + void _settingsChanged (); + void _settingsTimeout (); + void _airspaceEnabled (); + void _authStatusChanged (AirspaceManager::AuthStatus status); + +private: + QString _connectStatus; + QTimer _settingsTimer; + AirMapSharedState _shared; + std::shared_ptr _logger; + std::shared_ptr _dispatchingLogger; + AirspaceManager::AuthStatus _authStatus; + const std::string _telemetryHost = "telemetry.airmap.com"; + const uint16_t _telemetryPort = 16060; +}; + + diff --git a/src/Airmap/AirMapRestrictionManager.cc b/src/Airmap/AirMapRestrictionManager.cc new file mode 100644 index 0000000..4d62914 --- /dev/null +++ b/src/Airmap/AirMapRestrictionManager.cc @@ -0,0 +1,234 @@ +/**************************************************************************** + * + * (c) 2009-2020 QGROUNDCONTROL PROJECT + * + * QGroundControl is licensed according to the terms in the file + * COPYING.md in the root of the source code directory. + * + ****************************************************************************/ + +#include "AirMapRestrictionManager.h" +#include "AirMapManager.h" +#include "AirspaceRestriction.h" + +#include "QGCApplication.h" +#include "SettingsManager.h" + +#define RESTRICTION_UPDATE_DISTANCE 500 //-- 500m threshold for updates + +using namespace airmap; + +//----------------------------------------------------------------------------- +AirMapRestrictionManager::AirMapRestrictionManager(AirMapSharedState& shared) + : _shared(shared) +{ +} + +//----------------------------------------------------------------------------- +void +AirMapRestrictionManager::setROI(const QGCGeoBoundingCube& roi, bool reset) +{ + if(qgcApp()->toolbox()->settingsManager()->airMapSettings()->enableAirspace()->rawValue().toBool()) { + //-- If first time or we've moved more than RESTRICTION_UPDATE_DISTANCE, ask for updates. + if(reset || + (!_lastROI.isValid() || _lastROI.pointNW.distanceTo(roi.pointNW) > RESTRICTION_UPDATE_DISTANCE || _lastROI.pointSE.distanceTo(roi.pointSE) > RESTRICTION_UPDATE_DISTANCE) || + (_polygons.count() == 0 && _circles.count() == 0)) { + //-- Limit area of interest + qCDebug(AirMapManagerLog) << "ROI Area:" << roi.area() << "km^2"; + if(roi.area() < qgcApp()->toolbox()->airspaceManager()->maxAreaOfInterest()) { + _lastROI = roi; + _requestRestrictions(roi); + } else { + _polygons.clear(); + _circles.clear(); + } + } + } +} + + +//----------------------------------------------------------------------------- +void +AirMapRestrictionManager::_getColor(const Airspace& airspace, QColor& color, QColor& lineColor, float& lineWidth) +{ + if(airspace.type() == Airspace::Type::airport) { + color = QColor(246,165,23,50); + lineColor = QColor(246,165,23,255); + lineWidth = 2.0f; + } else if(airspace.type() == Airspace::Type::controlled_airspace) { + QString classification = QString::fromStdString(airspace.details_for_controlled_airspace().airspace_classification).toUpper(); + if(classification == "B") { + color = QColor(31,160,211,25); + lineColor = QColor(31,160,211,255); + lineWidth = 1.5f; + } else if(classification == "C") { + color = QColor(155,108,157,25); + lineColor = QColor(155,108,157,255); + lineWidth = 1.5f; + } else if(classification == "D") { + color = QColor(26,116,179,25); + lineColor = QColor(26,116,179,255); + lineWidth = 1.0f; + } else if(classification == "E") { + color = QColor(155,108,157,25); + lineColor = QColor(155,108,157,255); + lineWidth = 1.0f; + } else { + //-- Don't know it + qCWarning(AirMapManagerLog) << "Unknown airspace classification:" << QString::fromStdString(airspace.details_for_controlled_airspace().airspace_classification); + color = QColor(255,230,0,25); + lineColor = QColor(255,230,0,255); + lineWidth = 0.5f; + } + } else if(airspace.type() == Airspace::Type::special_use_airspace) { + color = QColor(27,90,207,38); + lineColor = QColor(27,90,207,255); + lineWidth = 1.0f; + } else if(airspace.type() == Airspace::Type::tfr) { + color = QColor(244,67,54,38); + lineColor = QColor(244,67,54,255); + lineWidth = 2.0f; + } else if(airspace.type() == Airspace::Type::wildfire) { + color = QColor(244,67,54,50); + lineColor = QColor(244,67,54,255); + lineWidth = 1.0f; + } else if(airspace.type() == Airspace::Type::park) { + color = QColor(224,18,18,25); + lineColor = QColor(224,18,18,255); + lineWidth = 1.0f; + } else if(airspace.type() == Airspace::Type::power_plant) { + color = QColor(246,165,23,25); + lineColor = QColor(246,165,23,255); + lineWidth = 1.0f; + } else if(airspace.type() == Airspace::Type::heliport) { + color = QColor(246,165,23,20); + lineColor = QColor(246,165,23,100); + lineWidth = 1.0f; + } else if(airspace.type() == Airspace::Type::prison) { + color = QColor(246,165,23,38); + lineColor = QColor(246,165,23,255); + lineWidth = 1.0f; + } else if(airspace.type() == Airspace::Type::school) { + color = QColor(246,165,23,38); + lineColor = QColor(246,165,23,255); + lineWidth = 1.0f; + } else if(airspace.type() == Airspace::Type::hospital) { + color = QColor(246,165,23,38); + lineColor = QColor(246,165,23,255); + lineWidth = 1.0f; + } else if(airspace.type() == Airspace::Type::fire) { + color = QColor(244,67,54,50); + lineColor = QColor(244,67,54,255); + lineWidth = 1.0f; + } else if(airspace.type() == Airspace::Type::emergency) { + color = QColor(246,113,23,77); + lineColor = QColor(246,113,23,255); + lineWidth = 1.0f; + } else { + //-- Don't know it + qCWarning(AirMapManagerLog) << "Unknown airspace type:" << static_cast(airspace.type()); + color = QColor(255,0,230,25); + lineColor = QColor(255,0,230,255); + lineWidth = 0.5f; + } +} + +//----------------------------------------------------------------------------- +void +AirMapRestrictionManager::_requestRestrictions(const QGCGeoBoundingCube& roi) +{ + if (!_shared.client()) { + qCDebug(AirMapManagerLog) << "No AirMap client instance. Not updating Airspace"; + return; + } + if (_state != State::Idle) { + qCWarning(AirMapManagerLog) << "AirMapRestrictionManager::updateROI: state not idle"; + return; + } + qCDebug(AirMapManagerLog) << "Restrictions Request (ROI Changed)"; + _polygons.clear(); + _circles.clear(); + _state = State::RetrieveItems; + Airspaces::Search::Parameters params; + params.full = false; + params.date_time = Clock::universal_time(); + //-- Geometry: Polygon + Geometry::Polygon polygon; + for (const auto& qcoord : roi.polygon2D()) { + Geometry::Coordinate coord; + coord.latitude = qcoord.latitude(); + coord.longitude = qcoord.longitude(); + polygon.outer_ring.coordinates.push_back(coord); + } + params.geometry = Geometry(polygon); + std::weak_ptr isAlive(_instance); + _shared.client()->airspaces().search(params, + [this, isAlive](const Airspaces::Search::Result& result) { + if (!isAlive.lock()) return; + if (_state != State::RetrieveItems) return; + if (result) { + const std::vector& airspaces = result.value(); + qCDebug(AirMapManagerLog)<<"Successful search. Items:" << airspaces.size(); + for (const auto& airspace : airspaces) { + QColor color; + QColor lineColor; + float lineWidth; + _getColor(airspace, color, lineColor, lineWidth); + const Geometry& geometry = airspace.geometry(); + switch(geometry.type()) { + case Geometry::Type::polygon: { + const Geometry::Polygon& polygon = geometry.details_for_polygon(); + _addPolygonToList(polygon, QString::fromStdString(airspace.id()), color, lineColor, lineWidth); + } + break; + case Geometry::Type::multi_polygon: { + const Geometry::MultiPolygon& multiPolygon = geometry.details_for_multi_polygon(); + for (const auto& polygon : multiPolygon) { + _addPolygonToList(polygon, QString::fromStdString(airspace.id()), color, lineColor, lineWidth); + } + } + break; + case Geometry::Type::point: { + const Geometry::Point& point = geometry.details_for_point(); + _circles.append(new AirspaceCircularRestriction(QGeoCoordinate(point.latitude, point.longitude), 0., QString::fromStdString(airspace.id()), color, lineColor, lineWidth)); + // TODO: radius??? + } + break; + case Geometry::Type::invalid: { + qWarning() << "Invalid geometry type"; + } + break; + default: + qWarning() << "Unsupported geometry type: " << static_cast(geometry.type()); + break; + } + } + } else { + QString description = QString::fromStdString(result.error().description() ? result.error().description().get() : ""); + emit error("Failed to retrieve Geofences", + QString::fromStdString(result.error().message()), description); + } + _state = State::Idle; + }); +} + +//----------------------------------------------------------------------------- +void +AirMapRestrictionManager::_addPolygonToList(const airmap::Geometry::Polygon& polygon, const QString advisoryID, const QColor color, const QColor lineColor, float lineWidth) +{ + QVariantList polygonArray; + for (const auto& vertex : polygon.outer_ring.coordinates) { + QGeoCoordinate coord; + if (vertex.altitude) { + coord = QGeoCoordinate(vertex.latitude, vertex.longitude, vertex.altitude.get()); + } else { + coord = QGeoCoordinate(vertex.latitude, vertex.longitude); + } + polygonArray.append(QVariant::fromValue(coord)); + } + _polygons.append(new AirspacePolygonRestriction(polygonArray, advisoryID, color, lineColor, lineWidth)); + if (polygon.inner_rings.size() > 0) { + // no need to support those (they are rare, and in most cases, there's a more restrictive polygon filling the hole) + qCDebug(AirMapManagerLog) << "Polygon with holes. Size: "< + * + * QGroundControl is licensed according to the terms in the file + * COPYING.md in the root of the source code directory. + * + ****************************************************************************/ + +#pragma once + +#include "LifetimeChecker.h" +#include "AirspaceRestrictionProvider.h" +#include "AirMapSharedState.h" +#include "QGCGeoBoundingCube.h" + +#include +#include + +#include "airmap/geometry.h" +#include "airmap/airspaces.h" + +/** + * @file AirMapRestrictionManager.h + * Class to download polygons from AirMap + */ + +class AirMapRestrictionManager : public AirspaceRestrictionProvider, public LifetimeChecker +{ + Q_OBJECT +public: + AirMapRestrictionManager (AirMapSharedState& shared); + QmlObjectListModel* polygons () override { return &_polygons; } + QmlObjectListModel* circles () override { return &_circles; } + void setROI (const QGCGeoBoundingCube &roi, bool reset = false) override; + +signals: + void error (const QString& what, const QString& airmapdMessage, const QString& airmapdDetails); + +private: + void _requestRestrictions(const QGCGeoBoundingCube& roi); + void _addPolygonToList (const airmap::Geometry::Polygon& polygon, const QString advisoryID, const QColor color, const QColor lineColor, float lineWidth); + void _getColor (const airmap::Airspace& airspace, QColor &color, QColor &lineColor, float &lineWidth); + + enum class State { + Idle, + RetrieveItems, + }; + + AirMapSharedState& _shared; + QGCGeoBoundingCube _lastROI; + State _state = State::Idle; + QmlObjectListModel _polygons; + QmlObjectListModel _circles; +}; + diff --git a/src/Airmap/AirMapRulesetsManager.cc b/src/Airmap/AirMapRulesetsManager.cc new file mode 100644 index 0000000..3361337 --- /dev/null +++ b/src/Airmap/AirMapRulesetsManager.cc @@ -0,0 +1,388 @@ +/**************************************************************************** + * + * (c) 2009-2020 QGROUNDCONTROL PROJECT + * + * QGroundControl is licensed according to the terms in the file + * COPYING.md in the root of the source code directory. + * + ****************************************************************************/ + +#include "AirspaceFlightPlanProvider.h" +#include "AirMapRulesetsManager.h" +#include "AirMapManager.h" +#include "QGCApplication.h" +#include + +using namespace airmap; + +static const char* kAirMapFeatureGroup = "AirMapFeatureGroup"; + +//----------------------------------------------------------------------------- +AirMapRuleFeature::AirMapRuleFeature(QObject* parent) + : AirspaceRuleFeature(parent) +{ +} + +//----------------------------------------------------------------------------- +AirMapRuleFeature::AirMapRuleFeature(airmap::RuleSet::Feature feature, QObject* parent) + : AirspaceRuleFeature(parent) + , _feature(feature) +{ + //-- Restore persisted value (if it exists) + QSettings settings; + settings.beginGroup(kAirMapFeatureGroup); + switch(_feature.type) { + case RuleSet::Feature::Type::boolean: + //-- For boolean, we have 3 states: 0 - false, 1 - true and 2 - not set + _value = settings.value(name(), 2); + break;; + case RuleSet::Feature::Type::floating_point: + _value = settings.value(name(), NAN); + break;; + case RuleSet::Feature::Type::string: + _value = settings.value(name(), QString()); + break;; + default: + break; + } + settings.endGroup(); +} + +//----------------------------------------------------------------------------- +QVariant +AirMapRuleFeature::value() +{ + //qCDebug(AirMapManagerLog) << "Value of" << name() << "==>" << _value << type(); + return _value; +} + +//----------------------------------------------------------------------------- +AirspaceRuleFeature::Type +AirMapRuleFeature::type() +{ + switch(_feature.type) { + case RuleSet::Feature::Type::boolean: + return AirspaceRuleFeature::Boolean; + case RuleSet::Feature::Type::floating_point: + return AirspaceRuleFeature::Float; + case RuleSet::Feature::Type::string: + return AirspaceRuleFeature::String; + default: + break; + } + return AirspaceRuleFeature::Unknown; +} + +//----------------------------------------------------------------------------- +AirspaceRuleFeature::Unit +AirMapRuleFeature::unit() +{ + switch(_feature.unit) { + case RuleSet::Feature::Unit::kilograms: + return AirspaceRuleFeature::Kilogram; + case RuleSet::Feature::Unit::meters: + return AirspaceRuleFeature::Meters; + case RuleSet::Feature::Unit::meters_per_sec: + return AirspaceRuleFeature::MetersPerSecond; + default: + break; + } + return AirspaceRuleFeature::UnknownUnit; +} + +//----------------------------------------------------------------------------- +AirspaceRuleFeature::Measurement +AirMapRuleFeature::measurement() +{ + switch(_feature.measurement) { + case RuleSet::Feature::Measurement::speed: + return AirspaceRuleFeature::Speed; + case RuleSet::Feature::Measurement::weight: + return AirspaceRuleFeature::Weight; + case RuleSet::Feature::Measurement::distance: + return AirspaceRuleFeature::Distance; + default: + break; + } + return AirspaceRuleFeature::UnknownMeasurement; +} + +//----------------------------------------------------------------------------- +void +AirMapRuleFeature::setValue(const QVariant val) +{ + switch(_feature.type) { + case RuleSet::Feature::Type::boolean: + if(val.toInt() != 0 && val.toInt() != 1) { + return; + } + break; + case RuleSet::Feature::Type::floating_point: + if(!std::isfinite(val.toDouble())) { + return; + } + break;; + case RuleSet::Feature::Type::string: + if(val.toString().isEmpty()) { + return; + } + break;; + default: + return; + } + _value = val; + //-- Make value persistent + QSettings settings; + settings.beginGroup(kAirMapFeatureGroup); + settings.setValue(name(), _value); + settings.endGroup(); + emit valueChanged(); + qgcApp()->toolbox()->airspaceManager()->flightPlan()->setDirty(true); +} + +//----------------------------------------------------------------------------- +AirMapRule::AirMapRule(QObject* parent) + : AirspaceRule(parent) +{ +} + +//----------------------------------------------------------------------------- +AirMapRule::AirMapRule(const airmap::RuleSet::Rule& rule, QObject* parent) + : AirspaceRule(parent) + , _rule(rule) +{ +} + +//----------------------------------------------------------------------------- +AirMapRule::~AirMapRule() +{ + _features.deleteListAndContents(); +} + +//----------------------------------------------------------------------------- +AirspaceRule::Status +AirMapRule::status() +{ + switch(_rule.status) { + case RuleSet::Rule::Status::conflicting: + return AirspaceRule::Conflicting; + case RuleSet::Rule::Status::not_conflicting: + return AirspaceRule::NotConflicting; + case RuleSet::Rule::Status::missing_info: + return AirspaceRule::MissingInfo; + case RuleSet::Rule::Status::unknown: + default: + return AirspaceRule::Unknown; + } +} + +//----------------------------------------------------------------------------- +AirMapRuleSet::AirMapRuleSet(QObject* parent) + : AirspaceRuleSet(parent) + , _isDefault(false) + , _selected(false) + , _selectionType(AirspaceRuleSet::Optional) +{ +} + +//----------------------------------------------------------------------------- +AirMapRuleSet::~AirMapRuleSet() +{ + _rules.deleteListAndContents(); +} + +//----------------------------------------------------------------------------- +void +AirMapRuleSet::setSelected(bool sel) +{ + if(_selectionType != AirspaceRuleSet::Required) { + if(_selected != sel) { + _selected = sel; + emit selectedChanged(); + } + } else { + if(!_selected) { + _selected = true; + emit selectedChanged(); + } + } +} + +//----------------------------------------------------------------------------- +AirMapRulesetsManager::AirMapRulesetsManager(AirMapSharedState& shared) + : _shared(shared) +{ +} + +//----------------------------------------------------------------------------- +static bool +rules_sort(QObject* a, QObject* b) +{ + AirMapRule* aa = qobject_cast(a); + AirMapRule* bb = qobject_cast(b); + if(!aa || !bb) return false; + return static_cast(aa->order()) > static_cast(bb->order()); +} + +//----------------------------------------------------------------------------- +void AirMapRulesetsManager::setROI(const QGCGeoBoundingCube& roi, bool reset) +{ + Q_UNUSED(reset); + if (!_shared.client()) { + qCDebug(AirMapManagerLog) << "No AirMap client instance. Not updating Airspace"; + return; + } + if (_state != State::Idle) { + qCWarning(AirMapManagerLog) << "AirMapRulesetsManager::updateROI: state not idle"; + return; + } + qCDebug(AirMapManagerLog) << "Rulesets Request (ROI Changed)"; + _valid = false; + //-- Save current selection state + QMap selectionSet; + for(int rs = 0; rs < ruleSets()->count(); rs++) { + AirMapRuleSet* ruleSet = qobject_cast(ruleSets()->get(rs)); + selectionSet[ruleSet->id()] = ruleSet->selected(); + } + _ruleSets.clearAndDeleteContents(); + _state = State::RetrieveItems; + RuleSets::Search::Parameters params; + params.authorization = _shared.loginToken().toStdString(); + //-- Geometry: Polygon + Geometry::Polygon polygon; + //-- Get ROI bounding box, clipping to max area of interest + for (const auto& qcoord : roi.polygon2D(qgcApp()->toolbox()->airspaceManager()->maxAreaOfInterest())) { + Geometry::Coordinate coord; + coord.latitude = qcoord.latitude(); + coord.longitude = qcoord.longitude(); + polygon.outer_ring.coordinates.push_back(coord); + } + params.geometry = Geometry(polygon); + std::weak_ptr isAlive(_instance); + _shared.client()->rulesets().search(params, + [this, isAlive, selectionSet](const RuleSets::Search::Result& result) { + if (!isAlive.lock()) return; + if (_state != State::RetrieveItems) return; + if (result) { + const std::vector rulesets = result.value(); + qCDebug(AirMapManagerLog) << "Successful rulesets search. Items:" << rulesets.size(); + for (const auto& ruleset : rulesets) { + AirMapRuleSet* pRuleSet = new AirMapRuleSet(this); + connect(pRuleSet, &AirspaceRuleSet::selectedChanged, this, &AirMapRulesetsManager::_selectedChanged); + pRuleSet->_id = QString::fromStdString(ruleset.id); + pRuleSet->_name = QString::fromStdString(ruleset.name); + pRuleSet->_shortName = QString::fromStdString(ruleset.short_name); + pRuleSet->_description = QString::fromStdString(ruleset.description); + pRuleSet->_isDefault = ruleset.is_default; + //-- Restore selection set (if any) + if(selectionSet.contains(pRuleSet->id())) { + pRuleSet->_selected = selectionSet[pRuleSet->id()]; + } else { + if(pRuleSet->_isDefault) { + pRuleSet->_selected = true; + } + } + switch(ruleset.selection_type) { + case RuleSet::SelectionType::pickone: + pRuleSet->_selectionType = AirspaceRuleSet::Pickone; + break; + case RuleSet::SelectionType::required: + pRuleSet->_selectionType = AirspaceRuleSet::Required; + pRuleSet->_selected = true; + break; + case RuleSet::SelectionType::optional: + pRuleSet->_selectionType = AirspaceRuleSet::Optional; + break; + } + //-- Iterate Rules + for (const auto& rule : ruleset.rules) { + AirMapRule* pRule = new AirMapRule(rule, this); + //-- Iterate Rule Features + for (const auto& feature : rule.features) { + AirMapRuleFeature* pFeature = new AirMapRuleFeature(feature, this); + pRule->_features.append(pFeature); + } + pRuleSet->_rules.append(pRule); + } + //-- Sort rules by display order + std::sort(pRuleSet->_rules.objectList()->begin(), pRuleSet->_rules.objectList()->end(), rules_sort); + _ruleSets.append(pRuleSet); + qCDebug(AirMapManagerLog) << "Adding ruleset" << pRuleSet->name(); + /* + qDebug() << "------------------------------------------"; + qDebug() << "Jurisdiction:" << ruleset.jurisdiction.name.data() << (int)ruleset.jurisdiction.region; + qDebug() << "Name: " << ruleset.name.data(); + qDebug() << "Short Name: " << ruleset.short_name.data(); + qDebug() << "Description: " << ruleset.description.data(); + qDebug() << "Is default: " << ruleset.is_default; + qDebug() << "Applicable to these airspace types:"; + for (const auto& airspaceType : ruleset.airspace_types) { + qDebug() << " " << airspaceType.data(); + } + qDebug() << "Rules:"; + for (const auto& rule : ruleset.rules) { + qDebug() << " --------------------------------------"; + qDebug() << " short_text: " << rule.short_text.data(); + qDebug() << " description: " << rule.description.data(); + qDebug() << " display_order:" << rule.display_order; + qDebug() << " status: " << (int)rule.status; + qDebug() << " ------------------------------"; + qDebug() << " Features:"; + for (const auto& feature : rule.features) { + qDebug() << " name: " << feature.name.data(); + qDebug() << " description:" << feature.description.data(); + qDebug() << " status: " << (int)feature.status; + qDebug() << " type: " << (int)feature.type; + qDebug() << " measurement:" << (int)feature.measurement; + qDebug() << " unit: " << (int)feature.unit; + } + } + */ + } + _valid = true; + } else { + QString description = QString::fromStdString(result.error().description() ? result.error().description().get() : ""); + emit error("Failed to retrieve RuleSets", QString::fromStdString(result.error().message()), description); + } + _state = State::Idle; + emit ruleSetsChanged(); + emit selectedRuleSetsChanged(); + }); +} + +//----------------------------------------------------------------------------- +QString +AirMapRulesetsManager::selectedRuleSets() +{ + QString selection; + for(int i = 0; i < _ruleSets.count(); i++) { + AirMapRuleSet* rule = qobject_cast(_ruleSets.get(i)); + if(rule && rule->selected()) { + selection += rule->shortName() + ", "; + } + } + int idx = selection.lastIndexOf(", "); + if(idx >= 0) { + selection = selection.left(idx); + } + return selection; +} + +//----------------------------------------------------------------------------- +void +AirMapRulesetsManager::_selectedChanged() +{ + emit selectedRuleSetsChanged(); + //-- TODO: Do whatever it is you do to select a rule +} + +//----------------------------------------------------------------------------- +void +AirMapRulesetsManager::clearAllFeatures() +{ + QSettings settings; + settings.beginGroup(kAirMapFeatureGroup); + settings.remove(""); + settings.endGroup(); +} + diff --git a/src/Airmap/AirMapRulesetsManager.h b/src/Airmap/AirMapRulesetsManager.h new file mode 100644 index 0000000..eb1375e --- /dev/null +++ b/src/Airmap/AirMapRulesetsManager.h @@ -0,0 +1,132 @@ +/**************************************************************************** + * + * (c) 2009-2020 QGROUNDCONTROL PROJECT + * + * QGroundControl is licensed according to the terms in the file + * COPYING.md in the root of the source code directory. + * + ****************************************************************************/ + +#pragma once + +#include "LifetimeChecker.h" +#include "AirspaceRulesetsProvider.h" +#include "AirMapSharedState.h" +#include "QGCGeoBoundingCube.h" + +#include +#include + +#include + +/** + * @file AirMapRulesetsManager.h + * Class to download rulesets from AirMap + */ + +//----------------------------------------------------------------------------- +class AirMapRuleFeature : public AirspaceRuleFeature +{ + Q_OBJECT +public: + + AirMapRuleFeature(QObject* parent = nullptr); + AirMapRuleFeature(airmap::RuleSet::Feature feature, QObject* parent = nullptr); + + quint32 id () override { return static_cast(_feature.id); } + Type type () override; + Unit unit () override; + Measurement measurement () override; + QString name () override { return QString::fromStdString(_feature.name); } + QString description () override { return QString::fromStdString(_feature.description); } + QVariant value () override; + void setValue (const QVariant val) override; +private: + airmap::RuleSet::Feature _feature; + QVariant _value; +}; + +//----------------------------------------------------------------------------- +class AirMapRule : public AirspaceRule +{ + Q_OBJECT + friend class AirMapRulesetsManager; + friend class AirMapFlightPlanManager; +public: + + AirMapRule (QObject* parent = nullptr); + AirMapRule (const airmap::RuleSet::Rule& rule, QObject* parent = nullptr); + ~AirMapRule () override; + + int order () { return static_cast(_rule.display_order); } + Status status () override; + QString shortText () override { return QString::fromStdString(_rule.short_text); } + QString description () override { return QString::fromStdString(_rule.description); } + QmlObjectListModel* features () override { return &_features; } + +private: + airmap::RuleSet::Rule _rule; + QmlObjectListModel _features; +}; + +//----------------------------------------------------------------------------- +class AirMapRuleSet : public AirspaceRuleSet +{ + Q_OBJECT + friend class AirMapRulesetsManager; + friend class AirMapFlightPlanManager; +public: + AirMapRuleSet (QObject* parent = nullptr); + ~AirMapRuleSet () override; + QString id () override { return _id; } + QString description () override { return _description; } + bool isDefault () override { return _isDefault; } + QString name () override { return _name; } + QString shortName () override { return _shortName; } + SelectionType selectionType () override { return _selectionType; } + bool selected () override { return _selected; } + void setSelected (bool sel) override; + QmlObjectListModel* rules () override { return &_rules; } +private: + QString _id; + QString _description; + bool _isDefault; + bool _selected; + QString _name; + QString _shortName; + SelectionType _selectionType; + QmlObjectListModel _rules; +}; + +//----------------------------------------------------------------------------- +class AirMapRulesetsManager : public AirspaceRulesetsProvider, public LifetimeChecker +{ + Q_OBJECT +public: + AirMapRulesetsManager (AirMapSharedState& shared); + + bool valid () override { return _valid; } + QmlObjectListModel* ruleSets () override { return &_ruleSets; } + QString selectedRuleSets() override; + + void setROI (const QGCGeoBoundingCube& roi, bool reset = false) override; + void clearAllFeatures() override; + +signals: + void error (const QString& what, const QString& airmapdMessage, const QString& airmapdDetails); + +private slots: + void _selectedChanged (); + +private: + enum class State { + Idle, + RetrieveItems, + }; + bool _valid; + State _state = State::Idle; + AirMapSharedState& _shared; + QmlObjectListModel _ruleSets; //-- List of AirMapRuleSet elements +}; + + diff --git a/src/Airmap/AirMapSettings.cc b/src/Airmap/AirMapSettings.cc new file mode 100644 index 0000000..61f17b6 --- /dev/null +++ b/src/Airmap/AirMapSettings.cc @@ -0,0 +1,28 @@ +/**************************************************************************** + * + * (c) 2009-2020 QGROUNDCONTROL PROJECT + * + * QGroundControl is licensed according to the terms in the file + * COPYING.md in the root of the source code directory. + * + ****************************************************************************/ + +#include "AirMapSettings.h" +#include "QGCApplication.h" + +#include +#include + +DECLARE_SETTINGGROUP(AirMap, "AirMap") +{ + qmlRegisterUncreatableType("QGroundControl.SettingsManager", 1, 0, "AirMapSettings", "Reference only"); +} + +DECLARE_SETTINGSFACT(AirMapSettings, usePersonalApiKey) +DECLARE_SETTINGSFACT(AirMapSettings, apiKey) +DECLARE_SETTINGSFACT(AirMapSettings, clientID) +DECLARE_SETTINGSFACT(AirMapSettings, userName) +DECLARE_SETTINGSFACT(AirMapSettings, password) +DECLARE_SETTINGSFACT(AirMapSettings, enableAirMap) +DECLARE_SETTINGSFACT(AirMapSettings, enableAirspace) +DECLARE_SETTINGSFACT(AirMapSettings, enableTelemetry) diff --git a/src/Airmap/AirMapSettings.h b/src/Airmap/AirMapSettings.h new file mode 100644 index 0000000..2e5e3b8 --- /dev/null +++ b/src/Airmap/AirMapSettings.h @@ -0,0 +1,31 @@ +/**************************************************************************** + * + * (c) 2009-2020 QGROUNDCONTROL PROJECT + * + * QGroundControl is licensed according to the terms in the file + * COPYING.md in the root of the source code directory. + * + ****************************************************************************/ + +#pragma once + +#include "SettingsGroup.h" + +class AirMapSettings : public SettingsGroup +{ + Q_OBJECT +public: + AirMapSettings(QObject* parent = nullptr); + + DEFINE_SETTING_NAME_GROUP() + + DEFINE_SETTINGFACT(usePersonalApiKey) + DEFINE_SETTINGFACT(apiKey) + DEFINE_SETTINGFACT(clientID) + DEFINE_SETTINGFACT(userName) + DEFINE_SETTINGFACT(password) + DEFINE_SETTINGFACT(enableAirMap) + DEFINE_SETTINGFACT(enableAirspace) + DEFINE_SETTINGFACT(enableTelemetry) + +}; diff --git a/src/Airmap/AirMapSharedState.cc b/src/Airmap/AirMapSharedState.cc new file mode 100644 index 0000000..87033c2 --- /dev/null +++ b/src/Airmap/AirMapSharedState.cc @@ -0,0 +1,124 @@ +/**************************************************************************** + * + * (c) 2009-2020 QGROUNDCONTROL PROJECT + * + * QGroundControl is licensed according to the terms in the file + * COPYING.md in the root of the source code directory. + * + ****************************************************************************/ + +#include "AirMapSharedState.h" +#include "AirMapManager.h" + +#include "airmap/authenticator.h" +#include "qjsonwebtoken.h" + +using namespace airmap; + +void +AirMapSharedState::setSettings(const Settings& settings) +{ + logout(); + _settings = settings; +} + +void +AirMapSharedState::doRequestWithLogin(const Callback& callback) +{ + if (isLoggedIn()) { + callback(_loginToken); + } else { + login(); + _pendingRequests.enqueue(callback); + } +} + +//-- TODO: +// For now, only anonymous login collects the (anonymous) pilot ID within login() +// For autheticated logins, we need to collect it here as opposed to spread all over +// the place as it is the case now. + +void +AirMapSharedState::login() +{ + if (isLoggedIn() || _isLoginInProgress) { + return; + } + _isLoginInProgress = true; + if (_settings.userName == "") { //use anonymous login + qCDebug(AirMapManagerLog) << "Anonymous authentication"; + Authenticator::AuthenticateAnonymously::Params params; + params.id = "Anonymous"; + _client->authenticator().authenticate_anonymously(params, + [this](const Authenticator::AuthenticateAnonymously::Result& result) { + if (!_isLoginInProgress) { // was logout() called in the meanwhile? + return; + } + if (result) { + qCDebug(AirMapManagerLog) << "Successfully authenticated with AirMap: id="<< result.value().id.c_str(); + emit authStatus(AirspaceManager::AuthStatus::Anonymous); + _loginToken = QString::fromStdString(result.value().id); + QJsonWebToken token = QJsonWebToken::fromTokenAndSecret(_loginToken, QString()); + QJsonDocument doc = token.getPayloadJDoc(); + QJsonObject json = doc.object(); + _pilotID = json.value("sub").toString(); + qCDebug(AirMapManagerLog) << "Anonymous pilot id:" << _pilotID; + _processPendingRequests(); + } else { + _pendingRequests.clear(); + emit authStatus(AirspaceManager::AuthStatus::Error); + QString description = QString::fromStdString(result.error().description() ? result.error().description().get() : ""); + emit error("Failed to authenticate with AirMap", + QString::fromStdString(result.error().message()), description); + } + }); + } else { + Authenticator::AuthenticateWithPassword::Params params; + params.oauth.username = _settings.userName.toStdString(); + params.oauth.password = _settings.password.toStdString(); + params.oauth.client_id = _settings.clientID.toStdString(); + params.oauth.device_id = "QGroundControl"; + qCDebug(AirMapManagerLog) << "User authentication" << _settings.userName; + _client->authenticator().authenticate_with_password(params, + [this](const Authenticator::AuthenticateWithPassword::Result& result) { + if (!_isLoginInProgress) { // was logout() called in the meanwhile? + return; + } + if (result) { + qCDebug(AirMapManagerLog) << "Successfully authenticated with AirMap: id="<< result.value().id.c_str()<<", access=" + < + * + * QGroundControl is licensed according to the terms in the file + * COPYING.md in the root of the source code directory. + * + ****************************************************************************/ + +#pragma once + +#include +#include + +#include "AirspaceManager.h" + +#include + +/** + * @class AirMapSharedState + * Contains state & settings that need to be shared (such as login) + */ + +class AirMapSharedState : public QObject +{ + Q_OBJECT +public: + struct Settings { + QString apiKey; + // login credentials + QString clientID; + QString userName; ///< use anonymous login if empty + QString password; + }; + + void setSettings (const Settings& settings); + const Settings& settings () const { return _settings; } + void setClient (airmap::services::Client* client) { _client = client; } + + QString pilotID () { return _pilotID; } + void setPilotID (const QString& pilotID) { _pilotID = pilotID; } + + /** + * Get the current client instance. It can be NULL. If not NULL, it implies + * there's an API key set. + */ + airmap::services::Client* client () const { return _client; } + bool hasAPIKey () const { return _settings.apiKey != ""; } + bool isLoggedIn () const { return _loginToken != ""; } + + using Callback = std::function; + + /** + * Do a request that requires user login: if not yet logged in, the request is queued and + * processed after successful login, otherwise it's executed directly. + */ + void doRequestWithLogin (const Callback& callback); + void login (); + void logout (); + const QString& loginToken () const { return _loginToken; } + +signals: + void error (const QString& what, const QString& airmapdMessage, const QString& airmapdDetails); + void authStatus (AirspaceManager::AuthStatus status); + +private: + void _processPendingRequests (); + +private: + bool _isLoginInProgress = false; + QString _loginToken; ///< login token: empty when not logged in + QString _pilotID; + airmap::services::Client* _client = nullptr; + Settings _settings; + QQueue _pendingRequests; ///< pending requests that are processed after a successful login +}; + diff --git a/src/Airmap/AirMapTelemetry.cc b/src/Airmap/AirMapTelemetry.cc new file mode 100644 index 0000000..8e66781 --- /dev/null +++ b/src/Airmap/AirMapTelemetry.cc @@ -0,0 +1,156 @@ +/**************************************************************************** + * + * (c) 2009-2020 QGROUNDCONTROL PROJECT + * + * QGroundControl is licensed according to the terms in the file + * COPYING.md in the root of the source code directory. + * + ****************************************************************************/ + +#include "AirMapTelemetry.h" +#include "AirMapManager.h" + +#include "QGCMAVLink.h" + +#include "airmap/telemetry.h" +#include "airmap/flights.h" + +using namespace airmap; + +//----------------------------------------------------------------------------- +AirMapTelemetry::AirMapTelemetry(AirMapSharedState& shared) + : _shared(shared) +{ +} + +//----------------------------------------------------------------------------- +void +AirMapTelemetry::vehicleMessageReceived(const mavlink_message_t& message) +{ + switch (message.msgid) { + case MAVLINK_MSG_ID_GLOBAL_POSITION_INT: + _handleGlobalPositionInt(message); + break; + case MAVLINK_MSG_ID_GPS_RAW_INT: + _handleGPSRawInt(message); + break; + } +} + +//----------------------------------------------------------------------------- +bool +AirMapTelemetry::isTelemetryStreaming() +{ + return _state == State::Streaming; +} + +//----------------------------------------------------------------------------- +void +AirMapTelemetry::_handleGPSRawInt(const mavlink_message_t& message) +{ + if (!isTelemetryStreaming()) { + return; + } + mavlink_gps_raw_int_t gps_raw; + mavlink_msg_gps_raw_int_decode(&message, &gps_raw); + if (gps_raw.eph == UINT16_MAX) { + _lastHdop = 1.f; + } else { + _lastHdop = gps_raw.eph / 100.f; + } +} + +//----------------------------------------------------------------------------- +void +AirMapTelemetry::_handleGlobalPositionInt(const mavlink_message_t& message) +{ + if (!isTelemetryStreaming()) { + return; + } + // rate-limit updates to 5 Hz + if (!_timerLastSent.hasExpired(200)) { + return; + } + _timerLastSent.restart(); + + mavlink_global_position_int_t globalPosition; + mavlink_msg_global_position_int_decode(&message, &globalPosition); + Telemetry::Position position{ + milliseconds_since_epoch(Clock::universal_time()), + static_cast(globalPosition.lat / 1e7), + static_cast(globalPosition.lon / 1e7), + static_cast(globalPosition.alt) / 1000.0, + static_cast(globalPosition.relative_alt) / 1000.0, + static_cast(_lastHdop) + }; + Telemetry::Speed speed{ + milliseconds_since_epoch(Clock::universal_time()), + globalPosition.vx / 100.f, + globalPosition.vy / 100.f, + globalPosition.vz / 100.f + }; + + //qCDebug(AirMapManagerLog) << "Telemetry:" << globalPosition.lat / 1e7 << globalPosition.lon / 1e7; + Flight flight; + flight.id = _flightID.toStdString(); + _shared.client()->telemetry().submit_updates(flight, _key, + {Telemetry::Update{position}, Telemetry::Update{speed}}); +} + +//----------------------------------------------------------------------------- +void +AirMapTelemetry::startTelemetryStream(const QString& flightID) +{ + if (_state != State::Idle) { + qCWarning(AirMapManagerLog) << "Not starting telemetry: not in idle state:" << static_cast(_state); + return; + } + if(flightID.isEmpty()) { + qCWarning(AirMapManagerLog) << "Not starting telemetry: No flight ID."; + return; + } + qCInfo(AirMapManagerLog) << "Starting Telemetry stream with flightID" << flightID; + _state = State::StartCommunication; + _flightID = flightID; + Flights::StartFlightCommunications::Parameters params; + params.authorization = _shared.loginToken().toStdString(); + params.id = _flightID.toStdString(); + std::weak_ptr isAlive(_instance); + _shared.client()->flights().start_flight_communications(params, [this, isAlive](const Flights::StartFlightCommunications::Result& result) { + if (!isAlive.lock()) return; + if (_state != State::StartCommunication) return; + if (result) { + _key = result.value().key; + _state = State::Streaming; + } else { + _state = State::Idle; + QString description = QString::fromStdString(result.error().description() ? result.error().description().get() : ""); + emit error("Failed to start telemetry streaming", + QString::fromStdString(result.error().message()), description); + } + }); + _timerLastSent.start(); +} + +//----------------------------------------------------------------------------- +void +AirMapTelemetry::stopTelemetryStream() +{ + if (_state == State::Idle) { + return; + } + qCInfo(AirMapManagerLog) << "Stopping Telemetry stream with flightID" << _flightID; + _state = State::EndCommunication; + Flights::EndFlightCommunications::Parameters params; + params.authorization = _shared.loginToken().toStdString(); + params.id = _flightID.toStdString(); + std::weak_ptr isAlive(_instance); + _shared.client()->flights().end_flight_communications(params, [this, isAlive](const Flights::EndFlightCommunications::Result& result) { + Q_UNUSED(result); + if (!isAlive.lock()) return; + if (_state != State::EndCommunication) return; + _key = ""; + _state = State::Idle; + }); +} + diff --git a/src/Airmap/AirMapTelemetry.h b/src/Airmap/AirMapTelemetry.h new file mode 100644 index 0000000..2a1663f --- /dev/null +++ b/src/Airmap/AirMapTelemetry.h @@ -0,0 +1,57 @@ +/**************************************************************************** + * + * (c) 2009-2020 QGROUNDCONTROL PROJECT + * + * QGroundControl is licensed according to the terms in the file + * COPYING.md in the root of the source code directory. + * + ****************************************************************************/ + +#pragma once + +#include "LifetimeChecker.h" +#include "AirMapSharedState.h" + +#include + +#include +#include + +/// Class to send telemetry data to AirMap +class AirMapTelemetry : public QObject, public LifetimeChecker +{ + Q_OBJECT +public: + AirMapTelemetry (AirMapSharedState& shared); + virtual ~AirMapTelemetry () = default; + + void startTelemetryStream (const QString& flightID); + void stopTelemetryStream (); + bool isTelemetryStreaming (); + +signals: + void error (const QString& what, const QString& airmapdMessage, const QString& airmapdDetails); + +public slots: + void vehicleMessageReceived (const mavlink_message_t& message); + +private: + + void _handleGlobalPositionInt (const mavlink_message_t& message); + void _handleGPSRawInt (const mavlink_message_t& message); + + enum class State { + Idle, + StartCommunication, + EndCommunication, + Streaming, + }; + + State _state = State::Idle; + AirMapSharedState& _shared; + std::string _key; ///< key for AES encryption (16 bytes) + QString _flightID; + float _lastHdop = 1.f; + QElapsedTimer _timerLastSent; +}; + diff --git a/src/Airmap/AirMapTrafficMonitor.cc b/src/Airmap/AirMapTrafficMonitor.cc new file mode 100644 index 0000000..6c7ddfa --- /dev/null +++ b/src/Airmap/AirMapTrafficMonitor.cc @@ -0,0 +1,79 @@ +/**************************************************************************** + * + * (c) 2009-2020 QGROUNDCONTROL PROJECT + * + * QGroundControl is licensed according to the terms in the file + * COPYING.md in the root of the source code directory. + * + ****************************************************************************/ + +#include "AirMapTrafficMonitor.h" +#include "AirMapManager.h" + +using namespace airmap; + +//----------------------------------------------------------------------------- +AirMapTrafficMonitor::AirMapTrafficMonitor(AirMapSharedState& shared) + : _shared(shared) +{ +} + +//----------------------------------------------------------------------------- +AirMapTrafficMonitor::~AirMapTrafficMonitor() +{ + stop(); +} + +//----------------------------------------------------------------------------- +void +AirMapTrafficMonitor::startConnection(const QString& flightID) +{ + if(flightID.isEmpty() || _flightID == flightID) { + return; + } + _flightID = flightID; + qCDebug(AirMapManagerLog) << "Traffic update started for" << flightID; + std::weak_ptr isAlive(_instance); + auto handler = [this, isAlive](const Traffic::Monitor::Result& result) { + if (!isAlive.lock()) return; + if (result) { + _monitor = result.value(); + _subscriber = std::make_shared( + std::bind(&AirMapTrafficMonitor::_update, this, std::placeholders::_1, std::placeholders::_2)); + _monitor->subscribe(_subscriber); + } else { + QString description = QString::fromStdString(result.error().description() ? result.error().description().get() : ""); + emit error("Failed to start Traffic Monitoring", + QString::fromStdString(result.error().message()), description); + } + }; + Traffic::Monitor::Params params{flightID.toStdString(), _shared.loginToken().toStdString()}; + _shared.client()->traffic().monitor(params, handler); +} + +//----------------------------------------------------------------------------- +void +AirMapTrafficMonitor::_update(Traffic::Update::Type type, const std::vector& update) +{ + qCDebug(AirMapManagerLog) << "Traffic update with" << update.size() << "elements"; + if (type != Traffic::Update::Type::situational_awareness) + return; // currently we're only interested in situational awareness + for (const auto& traffic : update) { + QString traffic_id = QString::fromStdString(traffic.id); + QString vehicle_id = QString::fromStdString(traffic.aircraft_id); + emit trafficUpdate(type == Traffic::Update::Type::alert, traffic_id, vehicle_id, + QGeoCoordinate(traffic.latitude, traffic.longitude, traffic.altitude), static_cast(traffic.heading)); + } +} + +//----------------------------------------------------------------------------- +void +AirMapTrafficMonitor::stop() +{ + if (_monitor) { + _monitor->unsubscribe(_subscriber); + _subscriber.reset(); + _monitor.reset(); + } +} + diff --git a/src/Airmap/AirMapTrafficMonitor.h b/src/Airmap/AirMapTrafficMonitor.h new file mode 100644 index 0000000..1f78d64 --- /dev/null +++ b/src/Airmap/AirMapTrafficMonitor.h @@ -0,0 +1,52 @@ +/**************************************************************************** + * + * (c) 2009-2020 QGROUNDCONTROL PROJECT + * + * QGroundControl is licensed according to the terms in the file + * COPYING.md in the root of the source code directory. + * + ****************************************************************************/ + +#pragma once + +#include "LifetimeChecker.h" +#include "AirMapSharedState.h" + +#include +#include + +#include "airmap/traffic.h" + +#include + +/** + * @class AirMapTrafficMonitor + * + */ + +class AirMapTrafficMonitor : public QObject, public LifetimeChecker +{ + Q_OBJECT +public: + AirMapTrafficMonitor (AirMapSharedState& shared); + virtual ~AirMapTrafficMonitor (); + + void startConnection (const QString& flightID); + + void stop(); + +signals: + void error (const QString& what, const QString& airmapdMessage, const QString& airmapdDetails); + void trafficUpdate (bool alert, QString traffic_id, QString vehicle_id, QGeoCoordinate location, float heading); + +private: + void _update (airmap::Traffic::Update::Type type, const std::vector& update); + +private: + QString _flightID; + AirMapSharedState& _shared; + std::shared_ptr _monitor; + std::shared_ptr _subscriber; +}; + + diff --git a/src/Airmap/AirMapVehicleManager.cc b/src/Airmap/AirMapVehicleManager.cc new file mode 100644 index 0000000..b6d71a0 --- /dev/null +++ b/src/Airmap/AirMapVehicleManager.cc @@ -0,0 +1,100 @@ +/**************************************************************************** + * + * (c) 2009-2020 QGROUNDCONTROL PROJECT + * + * QGroundControl is licensed according to the terms in the file + * COPYING.md in the root of the source code directory. + * + ****************************************************************************/ + +#include "AirspaceFlightPlanProvider.h" +#include "AirMapFlightPlanManager.h" +#include "AirMapVehicleManager.h" +#include "AirMapManager.h" + +#include "QGCApplication.h" +#include "Vehicle.h" +#include "QGCApplication.h" +#include "SettingsManager.h" + +//----------------------------------------------------------------------------- +AirMapVehicleManager::AirMapVehicleManager(AirMapSharedState& shared, const Vehicle& vehicle) + : AirspaceVehicleManager(vehicle) + , _shared(shared) + , _flightManager(shared) + , _telemetry(shared) + , _trafficMonitor(shared) +{ + connect(&_flightManager, &AirMapFlightManager::error, this, &AirMapVehicleManager::error); + connect(&_telemetry, &AirMapTelemetry::error, this, &AirMapVehicleManager::error); + connect(&_trafficMonitor, &AirMapTrafficMonitor::error, this, &AirMapVehicleManager::error); + connect(&_trafficMonitor, &AirMapTrafficMonitor::trafficUpdate, this, &AirspaceVehicleManager::trafficUpdate); + AirMapFlightPlanManager* planMgr = qobject_cast(qgcApp()->toolbox()->airspaceManager()->flightPlan()); + if(planMgr) { + connect(planMgr, &AirMapFlightPlanManager::flightIDChanged, this, &AirMapVehicleManager::_flightIDChanged); + } +} + +//----------------------------------------------------------------------------- +void +AirMapVehicleManager::startTelemetryStream() +{ + AirMapFlightPlanManager* planMgr = qobject_cast(qgcApp()->toolbox()->airspaceManager()->flightPlan()); + if (!planMgr->flightID().isEmpty()) { + //-- Is telemetry enabled? + if(qgcApp()->toolbox()->settingsManager()->airMapSettings()->enableTelemetry()->rawValue().toBool()) { + //-- TODO: This will start telemetry using the current flight ID in memory (current flight in AirMapFlightPlanManager) + qCDebug(AirMapManagerLog) << "AirMap telemetry stream enabled"; + _telemetry.startTelemetryStream(planMgr->flightID()); + } + } else { + qCDebug(AirMapManagerLog) << "AirMap telemetry stream not possible (No Flight ID)"; + } +} + +//----------------------------------------------------------------------------- +void +AirMapVehicleManager::stopTelemetryStream() +{ + _telemetry.stopTelemetryStream(); +} + +//----------------------------------------------------------------------------- +bool +AirMapVehicleManager::isTelemetryStreaming() +{ + return _telemetry.isTelemetryStreaming(); +} + +//----------------------------------------------------------------------------- +void +AirMapVehicleManager::endFlight() +{ + AirMapFlightPlanManager* planMgr = qobject_cast(qgcApp()->toolbox()->airspaceManager()->flightPlan()); + if (!planMgr->flightID().isEmpty()) { + _flightManager.endFlight(planMgr->flightID()); + } + _trafficMonitor.stop(); +} + +//----------------------------------------------------------------------------- +void +AirMapVehicleManager::vehicleMavlinkMessageReceived(const mavlink_message_t& message) +{ + if (isTelemetryStreaming()) { + _telemetry.vehicleMessageReceived(message); + } +} + +//----------------------------------------------------------------------------- +void +AirMapVehicleManager::_flightIDChanged(QString flightID) +{ + qCDebug(AirMapManagerLog) << "Flight ID Changed:" << flightID; + //-- Handle traffic monitor + if(flightID.isEmpty()) { + _trafficMonitor.stop(); + } else { + _trafficMonitor.startConnection(flightID); + } +} diff --git a/src/Airmap/AirMapVehicleManager.h b/src/Airmap/AirMapVehicleManager.h new file mode 100644 index 0000000..a77b037 --- /dev/null +++ b/src/Airmap/AirMapVehicleManager.h @@ -0,0 +1,49 @@ +/**************************************************************************** + * + * (c) 2009-2020 QGROUNDCONTROL PROJECT + * + * QGroundControl is licensed according to the terms in the file + * COPYING.md in the root of the source code directory. + * + ****************************************************************************/ + +#pragma once + +#include "AirspaceManager.h" +#include "AirspaceVehicleManager.h" +#include "AirMapSharedState.h" +#include "AirMapFlightManager.h" +#include "AirMapTelemetry.h" +#include "AirMapTrafficMonitor.h" + +/// AirMap per vehicle management class. + +class AirMapVehicleManager : public AirspaceVehicleManager +{ + Q_OBJECT +public: + AirMapVehicleManager (AirMapSharedState& shared, const Vehicle& vehicle); + ~AirMapVehicleManager () override = default; + + void startTelemetryStream () override; + void stopTelemetryStream () override; + bool isTelemetryStreaming () override; + +signals: + void error (const QString& what, const QString& airmapdMessage, const QString& airmapdDetails); + +public slots: + void endFlight () override; + +protected slots: + void vehicleMavlinkMessageReceived(const mavlink_message_t& message) override; + +private slots: + void _flightIDChanged (QString flightID); + +private: + AirMapSharedState& _shared; + AirMapFlightManager _flightManager; + AirMapTelemetry _telemetry; + AirMapTrafficMonitor _trafficMonitor; +}; diff --git a/src/Airmap/AirMapWeatherInfoManager.cc b/src/Airmap/AirMapWeatherInfoManager.cc new file mode 100644 index 0000000..194d5a2 --- /dev/null +++ b/src/Airmap/AirMapWeatherInfoManager.cc @@ -0,0 +1,72 @@ +/**************************************************************************** + * + * (c) 2009-2020 QGROUNDCONTROL PROJECT + * + * QGroundControl is licensed according to the terms in the file + * COPYING.md in the root of the source code directory. + * + ****************************************************************************/ + +#include "AirMapWeatherInfoManager.h" +#include "AirMapManager.h" + +#define WEATHER_UPDATE_DISTANCE 50000 //-- 50km threshold for weather updates +#define WEATHER_UPDATE_TIME_MSECS 30 * 60 * 1000 //-- 30 minutes threshold for weather updates + +using namespace airmap; + +AirMapWeatherInfoManager::AirMapWeatherInfoManager(AirMapSharedState& shared, QObject *parent) + : AirspaceWeatherInfoProvider(parent) + , _valid(false) + , _shared(shared) +{ +} + +void +AirMapWeatherInfoManager::setROI(const QGCGeoBoundingCube& roi, bool reset) +{ + //-- If first time or we've moved more than WEATHER_UPDATE_DISTANCE, ask for weather updates. + if(reset || (!_lastRoiCenter.isValid() || _lastRoiCenter.distanceTo(roi.center()) > WEATHER_UPDATE_DISTANCE)) { + _lastRoiCenter = roi.center(); + _requestWeatherUpdate(_lastRoiCenter); + _weatherTimeElapsed.start(); + } else { + //-- Check weather once every WEATHER_UPDATE_TIME + if(_weatherTimeElapsed.elapsed() > WEATHER_UPDATE_TIME_MSECS) { + _requestWeatherUpdate(roi.center()); + _weatherTimeElapsed.start(); + } + } +} + +void +AirMapWeatherInfoManager::_requestWeatherUpdate(const QGeoCoordinate& coordinate) +{ + qCDebug(AirMapManagerLog) << "Weather Request (ROI Changed)"; + if (!_shared.client()) { + qCDebug(AirMapManagerLog) << "No AirMap client instance. Not updating Weather information"; + _valid = false; + emit weatherChanged(); + return; + } + Advisory::ReportWeather::Parameters params; + params.longitude= static_cast(coordinate.longitude()); + params.latitude = static_cast(coordinate.latitude()); + _shared.client()->advisory().report_weather(params, [this, coordinate](const Advisory::ReportWeather::Result& result) { + if (result) { + _weather = result.value(); + _valid = true; + if(_weather.icon.empty()) { + _icon = QStringLiteral("qrc:/airmapweather/unknown.svg"); + } else { + _icon = QStringLiteral("qrc:/airmapweather/") + QString::fromStdString(_weather.icon).replace("-", "_") + QStringLiteral(".svg"); + } + qCDebug(AirMapManagerLog) << "Weather Info: " << _valid << "Icon:" << QString::fromStdString(_weather.icon) << "Condition:" << QString::fromStdString(_weather.condition) << "Temp:" << _weather.temperature; + } else { + _valid = false; + QString description = QString::fromStdString(result.error().description() ? result.error().description().get() : ""); + qCDebug(AirMapManagerLog) << "Request Weather Failed" << QString::fromStdString(result.error().message()) << description; + } + emit weatherChanged(); + }); +} diff --git a/src/Airmap/AirMapWeatherInfoManager.h b/src/Airmap/AirMapWeatherInfoManager.h new file mode 100644 index 0000000..337bff1 --- /dev/null +++ b/src/Airmap/AirMapWeatherInfoManager.h @@ -0,0 +1,61 @@ +/**************************************************************************** + * + * (c) 2009-2020 QGROUNDCONTROL PROJECT + * + * QGroundControl is licensed according to the terms in the file + * COPYING.md in the root of the source code directory. + * + ****************************************************************************/ + +#pragma once + +#include "LifetimeChecker.h" + +#include "AirspaceWeatherInfoProvider.h" +#include "AirMapSharedState.h" +#include "QGCGeoBoundingCube.h" + +#include +#include + +#include "airmap/advisory.h" + +/** + * @file AirMapWeatherInfoManager.h + * Weather information provided by AirMap. + */ + +class AirMapWeatherInfoManager : public AirspaceWeatherInfoProvider, public LifetimeChecker +{ + Q_OBJECT +public: + AirMapWeatherInfoManager(AirMapSharedState &shared, QObject *parent = nullptr); + + bool valid () override { return _valid; } + QString condition () override { return QString::fromStdString(_weather.condition); } + QString icon () override { return _icon; } + quint32 windHeading () override { return _weather.wind.heading; } + float windSpeed () override { return _weather.wind.speed; } + quint32 windGusting () override { return _weather.wind.gusting; } + float temperature () override { return _weather.temperature; } + float humidity () override { return _weather.humidity; } + float visibility () override { return _weather.visibility; } + float precipitation () override { return _weather.precipitation; } + + void setROI (const QGCGeoBoundingCube& roi, bool reset = false) override; + +signals: + void error (const QString& what, const QString& airmapdMessage, const QString& airmapdDetails); + +private: + void _requestWeatherUpdate (const QGeoCoordinate& coordinate); + +private: + bool _valid; + QString _icon; + airmap::Advisory::Weather _weather; + //-- Don't check the weather every time the user moves the map + AirMapSharedState& _shared; + QGeoCoordinate _lastRoiCenter; + QElapsedTimer _weatherTimeElapsed; +}; diff --git a/src/Airmap/AirmapSettings.qml b/src/Airmap/AirmapSettings.qml new file mode 100644 index 0000000..8815f21 --- /dev/null +++ b/src/Airmap/AirmapSettings.qml @@ -0,0 +1,732 @@ +/**************************************************************************** + * + * (c) 2009-2020 QGROUNDCONTROL PROJECT + * + * QGroundControl is licensed according to the terms in the file + * COPYING.md in the root of the source code directory. + * + ****************************************************************************/ + + +import QtGraphicalEffects 1.0 +import QtMultimedia 5.5 +import QtQuick 2.3 +import QtQuick.Controls 1.2 +import QtQuick.Controls.Styles 1.4 +import QtQuick.Dialogs 1.2 +import QtQuick.Layouts 1.2 +import QtLocation 5.3 +import QtPositioning 5.3 + +import QGroundControl 1.0 +import QGroundControl.Airspace 1.0 +import QGroundControl.Controllers 1.0 +import QGroundControl.Controls 1.0 +import QGroundControl.FactControls 1.0 +import QGroundControl.FactSystem 1.0 +import QGroundControl.FlightMap 1.0 +import QGroundControl.MultiVehicleManager 1.0 +import QGroundControl.Palette 1.0 +import QGroundControl.ScreenTools 1.0 +import QGroundControl.SettingsManager 1.0 + +Item { + id: _root + anchors.fill: parent + anchors.margins: ScreenTools.defaultFontPixelWidth + + property real _labelWidth: ScreenTools.defaultFontPixelWidth * 20 + property real _editFieldWidth: ScreenTools.defaultFontPixelWidth * 20 + property real _buttonWidth: ScreenTools.defaultFontPixelWidth * 18 + property real _panelWidth: _root.width * _internalWidthRatio + property Fact _enableAirMapFact: QGroundControl.settingsManager.airMapSettings.enableAirMap + property bool _airMapEnabled: _enableAirMapFact.rawValue + property var _authStatus: QGroundControl.airspaceManager.authStatus + + readonly property real _internalWidthRatio: 0.8 + + QGCFlickable { + clip: true + anchors.fill: parent + contentHeight: settingsColumn.height + contentWidth: settingsColumn.width + Column { + id: settingsColumn + width: _root.width + spacing: ScreenTools.defaultFontPixelHeight * 0.5 + anchors.margins: ScreenTools.defaultFontPixelWidth + //----------------------------------------------------------------- + //-- General + Item { + width: _panelWidth + height: generalLabel.height + anchors.margins: ScreenTools.defaultFontPixelWidth + anchors.horizontalCenter: parent.horizontalCenter + QGCLabel { + id: generalLabel + text: qsTr("General") + font.family: ScreenTools.demiboldFontFamily + } + } + Rectangle { + height: generalRow.height + (ScreenTools.defaultFontPixelHeight * 2) + width: _panelWidth + color: qgcPal.windowShade + anchors.margins: ScreenTools.defaultFontPixelWidth + anchors.horizontalCenter: parent.horizontalCenter + Row { + id: generalRow + spacing: ScreenTools.defaultFontPixelWidth * 4 + anchors.centerIn: parent + Column { + spacing: ScreenTools.defaultFontPixelWidth + FactCheckBox { + text: qsTr("Enable AirMap Services") + fact: _enableAirMapFact + visible: _enableAirMapFact.visible + } + FactCheckBox { + text: qsTr("Enable Telemetry") + fact: _enableTelemetryFact + visible: _enableTelemetryFact.visible + enabled: _airMapEnabled + property Fact _enableTelemetryFact: QGroundControl.settingsManager.airMapSettings.enableTelemetry + } + FactCheckBox { + text: qsTr("Show Airspace on Map (Experimental)") + fact: _enableAirspaceFact + visible: _enableAirspaceFact.visible + enabled: _airMapEnabled + property Fact _enableAirspaceFact: QGroundControl.settingsManager.airMapSettings.enableAirspace + } + } + QGCButton { + text: qsTr("Clear Saved Answers") + enabled: _enableAirMapFact.rawValue + onClicked: clearDialog.open() + anchors.verticalCenter: parent.verticalCenter + MessageDialog { + id: clearDialog + visible: false + icon: StandardIcon.Warning + standardButtons: StandardButton.Yes | StandardButton.No + title: qsTr("Clear Saved Answers") + text: qsTr("All saved ruleset answers will be cleared. Is this really what you want?") + onYes: { + QGroundControl.airspaceManager.ruleSets.clearAllFeatures() + clearDialog.close() + } + onNo: { + clearDialog.close() + } + } + } + } + } + //----------------------------------------------------------------- + //-- Connection Status + Item { + width: _panelWidth + height: statusLabel.height + anchors.margins: ScreenTools.defaultFontPixelWidth + anchors.horizontalCenter: parent.horizontalCenter + visible: QGroundControl.settingsManager.appSettings.visible && _airMapEnabled + QGCLabel { + id: statusLabel + text: qsTr("Connection Status") + font.family: ScreenTools.demiboldFontFamily + } + } + Rectangle { + height: statusCol.height + (ScreenTools.defaultFontPixelHeight * 2) + width: _panelWidth + color: qgcPal.windowShade + visible: QGroundControl.settingsManager.appSettings.visible && _airMapEnabled + anchors.margins: ScreenTools.defaultFontPixelWidth + anchors.horizontalCenter: parent.horizontalCenter + Column { + id: statusCol + spacing: ScreenTools.defaultFontPixelHeight * 0.5 + width: parent.width + anchors.centerIn: parent + QGCLabel { + text: QGroundControl.airspaceManager.connected ? qsTr("Connected") : qsTr("Not Connected") + color: QGroundControl.airspaceManager.connected ? qgcPal.colorGreen : qgcPal.colorRed + anchors.horizontalCenter: parent.horizontalCenter + } + QGCLabel { + text: QGroundControl.airspaceManager.connectStatus + visible: QGroundControl.airspaceManager.connectStatus != "" + wrapMode: Text.WordWrap + horizontalAlignment: Text.AlignHCenter + width: parent.width * 0.8 + anchors.horizontalCenter: parent.horizontalCenter + } + } + } + //----------------------------------------------------------------- + //-- Login / Registration + Item { + width: _panelWidth + height: loginLabel.height + anchors.margins: ScreenTools.defaultFontPixelWidth + anchors.horizontalCenter: parent.horizontalCenter + QGCLabel { + id: loginLabel + text: qsTr("Login / Registration") + font.family: ScreenTools.demiboldFontFamily + } + } + Rectangle { + height: loginGrid.height + (ScreenTools.defaultFontPixelHeight * 2) + width: _panelWidth + color: qgcPal.windowShade + anchors.margins: ScreenTools.defaultFontPixelWidth + anchors.horizontalCenter: parent.horizontalCenter + GridLayout { + id: loginGrid + columns: 3 + columnSpacing: ScreenTools.defaultFontPixelWidth + rowSpacing: ScreenTools.defaultFontPixelHeight * 0.25 + anchors.centerIn: parent + QGCLabel { text: qsTr("User Name:") } + FactTextField { + fact: _usernameFact + width: _editFieldWidth + enabled: _airMapEnabled + visible: _usernameFact.visible + Layout.fillWidth: true + Layout.minimumWidth: _editFieldWidth + property Fact _usernameFact: QGroundControl.settingsManager.airMapSettings.userName + } + QGCLabel { + text: { + if(!QGroundControl.airspaceManager.connected) + return qsTr("Not Connected") + switch(_authStatus) { + case AirspaceManager.Unknown: + return "" + case AirspaceManager.Anonymous: + return qsTr("Anonymous") + case AirspaceManager.Authenticated: + return qsTr("Authenticated") + default: + return qsTr("Authentication Error") + } + } + Layout.rowSpan: 2 + Layout.alignment: Qt.AlignVCenter + } + QGCLabel { text: qsTr("Password:") } + FactTextField { + fact: _passwordFact + width: _editFieldWidth + enabled: _airMapEnabled + visible: _passwordFact.visible + echoMode: TextInput.Password + Layout.fillWidth: true + Layout.minimumWidth: _editFieldWidth + property Fact _passwordFact: QGroundControl.settingsManager.airMapSettings.password + } + Item { + width: 1 + height: 1 + } + Item { + width: 1 + height: 1 + Layout.columnSpan: 3 + } + QGCLabel { + text: qsTr("Forgot Your AirMap Password?") + Layout.alignment: Qt.AlignHCenter + Layout.columnSpan: 3 + } + Item { + width: 1 + height: 1 + Layout.columnSpan: 3 + } + QGCButton { + text: qsTr("Register for an AirMap Account") + Layout.alignment: Qt.AlignHCenter + Layout.columnSpan: 3 + enabled: _airMapEnabled + onClicked: { + Qt.openUrlExternally("https://www.airmap.com"); + } + } + } + } + //----------------------------------------------------------------- + //-- Pilot Profile + Item { + //-- Disabled for now + width: _panelWidth + height: profileLabel.height + anchors.margins: ScreenTools.defaultFontPixelWidth + anchors.horizontalCenter: parent.horizontalCenter + visible: false // QGroundControl.settingsManager.appSettings.visible + QGCLabel { + id: profileLabel + text: qsTr("Pilot Profile (WIP)") + font.family: ScreenTools.demiboldFontFamily + } + } + Rectangle { + //-- Disabled for now + height: profileGrid.height + (ScreenTools.defaultFontPixelHeight * 2) + width: _panelWidth + color: qgcPal.windowShade + visible: false // QGroundControl.settingsManager.appSettings.visible + anchors.margins: ScreenTools.defaultFontPixelWidth + anchors.horizontalCenter: parent.horizontalCenter + GridLayout { + id: profileGrid + columns: 2 + columnSpacing: ScreenTools.defaultFontPixelHeight * 2 + rowSpacing: ScreenTools.defaultFontPixelWidth * 0.25 + anchors.centerIn: parent + QGCLabel { text: qsTr("Name:") } + QGCLabel { text: qsTr("John Doe") } + QGCLabel { text: qsTr("User Name:") } + QGCLabel { text: qsTr("joe36") } + QGCLabel { text: qsTr("Email:") } + QGCLabel { text: qsTr("jonh@doe.com") } + QGCLabel { text: qsTr("Phone:") } + QGCLabel { text: qsTr("+1 212 555 1212") } + } + } + //----------------------------------------------------------------- + //-- License (Will this stay here?) + Item { + width: _panelWidth + height: licenseLabel.height + anchors.margins: ScreenTools.defaultFontPixelWidth + anchors.horizontalCenter: parent.horizontalCenter + visible: QGroundControl.settingsManager.airMapSettings.usePersonalApiKey.visible + QGCLabel { + id: licenseLabel + text: qsTr("License") + font.family: ScreenTools.demiboldFontFamily + } + } + Rectangle { + height: licenseGrid.height + (ScreenTools.defaultFontPixelHeight * 2) + width: _panelWidth + color: qgcPal.windowShade + anchors.margins: ScreenTools.defaultFontPixelWidth + anchors.horizontalCenter: parent.horizontalCenter + visible: QGroundControl.settingsManager.airMapSettings.usePersonalApiKey.visible + GridLayout { + id: licenseGrid + columns: 2 + columnSpacing: ScreenTools.defaultFontPixelHeight * 2 + rowSpacing: ScreenTools.defaultFontPixelWidth * 0.25 + anchors.centerIn: parent + FactCheckBox { + id: hasPrivateKey + text: qsTr("Personal API Key") + fact: QGroundControl.settingsManager.airMapSettings.usePersonalApiKey + Layout.columnSpan: 2 + } + Item { + width: 1 + height: 1 + visible: hasPrivateKey.checked + Layout.columnSpan: 2 + } + QGCLabel { text: qsTr("API Key:"); visible: hasPrivateKey.checked; } + FactTextField { fact: QGroundControl.settingsManager.airMapSettings.apiKey; width: _editFieldWidth * 2; visible: hasPrivateKey.checked; Layout.fillWidth: true; Layout.minimumWidth: _editFieldWidth * 2; } + QGCLabel { text: qsTr("Client ID:"); visible: hasPrivateKey.checked; } + FactTextField { fact: QGroundControl.settingsManager.airMapSettings.clientID; width: _editFieldWidth * 2; visible: hasPrivateKey.checked; Layout.fillWidth: true; Layout.minimumWidth: _editFieldWidth * 2; } + } + } + //----------------------------------------------------------------- + //-- Flight List + Item { + width: _panelWidth + height: flightListLabel.height + anchors.margins: ScreenTools.defaultFontPixelWidth + anchors.horizontalCenter: parent.horizontalCenter + visible: QGroundControl.settingsManager.appSettings.visible + QGCLabel { + id: flightListLabel + text: qsTr("Flight List Management") + font.family: ScreenTools.demiboldFontFamily + } + } + Rectangle { + height: flightListButton.height + (ScreenTools.defaultFontPixelHeight * 2) + width: _panelWidth + color: qgcPal.windowShade + anchors.margins: ScreenTools.defaultFontPixelWidth + anchors.horizontalCenter: parent.horizontalCenter + QGCButton { + id: flightListButton + text: qsTr("Show Flight List") + backRadius: 4 + heightFactor: 0.3333 + showBorder: true + width: ScreenTools.defaultFontPixelWidth * 16 + anchors.centerIn: parent + onClicked: { + panelLoader.sourceComponent = flightList + } + } + } + } + } + Loader { + id: panelLoader + anchors.centerIn: parent + } + //--------------------------------------------------------------- + //-- Flight List + Component { + id: flightList + Rectangle { + id: flightListRoot + width: _root.width + height: _root.height + color: qgcPal.window + property var _flightList: QGroundControl.airspaceManager.flightPlan.flightList + property real _mapWidth: ScreenTools.defaultFontPixelWidth * 40 + MouseArea { + anchors.fill: parent + hoverEnabled: true + onWheel: { wheel.accepted = true; } + onPressed: { mouse.accepted = true; } + onReleased: { mouse.accepted = true; } + } + //--------------------------------------------------------- + //-- Flight List + RowLayout { + anchors.fill: parent + TableView { + id: tableView + model: _flightList + selectionMode: SelectionMode.SingleSelection + Layout.alignment: Qt.AlignVCenter + Layout.fillWidth: true + Layout.fillHeight: true + onCurrentRowChanged: { + var o = _flightList.get(tableView.currentRow) + if(o) { + flightArea.path = o.boundingBox + map.fitViewportToMapItems() + } + } + TableViewColumn { + title: qsTr("No") + width: ScreenTools.defaultFontPixelWidth * 3 + horizontalAlignment: Text.AlignHCenter + delegate : Text { + horizontalAlignment: Text.AlignHCenter + text: (styleData.row + 1) + color: tableView.currentRow === styleData.row ? qgcPal.colorBlue : "black" + font.family: ScreenTools.fixedFontFamily + font.pixelSize: ScreenTools.smallFontPointSize + } + } + TableViewColumn { + title: qsTr("Created") + width: ScreenTools.defaultFontPixelWidth * 18 + horizontalAlignment: Text.AlignHCenter + delegate : Text { + horizontalAlignment: Text.AlignHCenter + text: { + var o = _flightList.get(styleData.row) + return o ? o.createdTime : "" + } + color: tableView.currentRow === styleData.row ? qgcPal.colorBlue : "black" + font.family: ScreenTools.fixedFontFamily + font.pixelSize: ScreenTools.smallFontPointSize + } + } + TableViewColumn { + title: qsTr("Flight Start") + width: ScreenTools.defaultFontPixelWidth * 18 + horizontalAlignment: Text.AlignHCenter + delegate : Text { + horizontalAlignment: Text.AlignHCenter + text: { + var o = _flightList.get(styleData.row) + return o ? o.startTime : "" + } + color: tableView.currentRow === styleData.row ? qgcPal.colorBlue : "black" + font.family: ScreenTools.fixedFontFamily + font.pixelSize: ScreenTools.smallFontPointSize + } + } + TableViewColumn { + title: qsTr("Flight End") + width: ScreenTools.defaultFontPixelWidth * 18 + horizontalAlignment: Text.AlignHCenter + delegate : Text { + horizontalAlignment: Text.AlignHCenter + text: { + var o = _flightList.get(styleData.row) + return o ? o.endTime : "" + } + color: tableView.currentRow === styleData.row ? qgcPal.colorBlue : "black" + font.family: ScreenTools.fixedFontFamily + font.pixelSize: ScreenTools.smallFontPointSize + } + } + TableViewColumn { + title: qsTr("State") + width: ScreenTools.defaultFontPixelWidth * 8 + horizontalAlignment: Text.AlignHCenter + delegate : Text { + horizontalAlignment: Text.AlignHCenter + text: { + var o = _flightList.get(styleData.row) + return o ? (o.active ? qsTr("Active") : qsTr("Completed")) : qsTr("Unknown") + } + color: tableView.currentRow === styleData.row ? qgcPal.colorBlue : "black" + font.family: ScreenTools.fixedFontFamily + font.pixelSize: ScreenTools.smallFontPointSize + } + } + } + Item { + width: flightListRoot._mapWidth + height: parent.height + Layout.alignment: Qt.AlignTop | Qt.AlignLeft + QGCLabel { + id: loadingLabel + text: qsTr("Loading Flight List") + visible: QGroundControl.airspaceManager.flightPlan.loadingFlightList + anchors.centerIn: parent + } + QGCColoredImage { + id: busyIndicator + height: ScreenTools.defaultFontPixelHeight * 2.5 + width: height + source: "/qmlimages/MapSync.svg" + sourceSize.height: height + fillMode: Image.PreserveAspectFit + mipmap: true + smooth: true + color: qgcPal.colorGreen + visible: loadingLabel.visible + anchors.top: loadingLabel.bottom + anchors.topMargin: ScreenTools.defaultFontPixelHeight + anchors.horizontalCenter: parent.horizontalCenter + RotationAnimation on rotation { + loops: Animation.Infinite + from: 360 + to: 0 + duration: 740 + running: busyIndicator.visible + } + } + Column { + spacing: ScreenTools.defaultFontPixelHeight * 0.75 + visible: !QGroundControl.airspaceManager.flightPlan.loadingFlightList + anchors.top: parent.top + anchors.horizontalCenter: parent.horizontalCenter + QGCLabel { + text: qsTr("Flight List") + anchors.horizontalCenter: parent.horizontalCenter + } + Rectangle { + color: qgcPal.window + border.color: qgcPal.globalTheme === QGCPalette.Dark ? Qt.rgba(1,1,1,0.25) : Qt.rgba(0,0,0,0.25) + border.width: 1 + radius: 4 + width: _mapWidth - (ScreenTools.defaultFontPixelWidth * 2) + height: rangeCol.height + (ScreenTools.defaultFontPixelHeight * 2) + Column { + id: rangeCol + anchors.centerIn: parent + spacing: ScreenTools.defaultFontPixelHeight * 0.5 + QGCLabel { + text: qsTr("Range") + anchors.horizontalCenter: parent.horizontalCenter + } + Row { + spacing: ScreenTools.defaultFontPixelWidth * 2 + anchors.horizontalCenter: parent.horizontalCenter + Column { + spacing: ScreenTools.defaultFontPixelHeight * 0.5 + QGCButton { + text: qsTr("From") + backRadius: 4 + heightFactor: 0.3333 + showBorder: true + width: _buttonWidth * 0.5 + onClicked: fromPicker.visible = true + anchors.horizontalCenter: parent.horizontalCenter + } + QGCLabel { + anchors.horizontalCenter: parent.horizontalCenter + text: fromPicker.selectedDate.toLocaleDateString(Qt.locale()) + } + } + Rectangle { + width: 1 + height: parent.height + color: qgcPal.globalTheme === QGCPalette.Dark ? Qt.rgba(1,1,1,0.25) : Qt.rgba(0,0,0,0.25) + } + Column { + spacing: ScreenTools.defaultFontPixelHeight * 0.5 + QGCButton { + text: qsTr("To") + backRadius: 4 + heightFactor: 0.3333 + showBorder: true + width: _buttonWidth * 0.5 + onClicked: toPicker.visible = true + anchors.horizontalCenter: parent.horizontalCenter + } + QGCLabel { + anchors.horizontalCenter: parent.horizontalCenter + text: toPicker.selectedDate.toLocaleDateString(Qt.locale()) + } + } + } + } + } + QGCButton { + text: qsTr("Refresh") + backRadius: 4 + heightFactor: 0.3333 + showBorder: true + width: _buttonWidth + enabled: true + anchors.horizontalCenter: parent.horizontalCenter + onClicked: { + var start = fromPicker.selectedDate + var end = toPicker.selectedDate + start.setHours(0,0,0,0) + end.setHours(23,59,59,0) + QGroundControl.airspaceManager.flightPlan.loadFlightList(start, end) + } + } + QGCButton { + text: qsTr("End Selected") + backRadius: 4 + heightFactor: 0.3333 + showBorder: true + width: _buttonWidth + enabled: { + var o = _flightList.get(tableView.currentRow) + return o && o.active + } + anchors.horizontalCenter: parent.horizontalCenter + onClicked: { + endFlightDialog.visible = true + } + MessageDialog { + id: endFlightDialog + visible: false + icon: StandardIcon.Warning + standardButtons: StandardButton.Yes | StandardButton.No + title: qsTr("End Flight") + text: qsTr("Confirm ending active flight?") + onYes: { + var o = _flightList.get(tableView.currentRow) + if(o) { + QGroundControl.airspaceManager.flightPlan.endFlight(o.flightID) + } + endFlightDialog.visible = false + } + onNo: { + endFlightDialog.visible = false + } + } + } + QGCButton { + text: qsTr("Close") + backRadius: 4 + heightFactor: 0.3333 + showBorder: true + width: _buttonWidth + anchors.horizontalCenter: parent.horizontalCenter + onClicked: { + panelLoader.sourceComponent = null + } + } + QGCLabel { + text: _flightList.count > 0 ? _flightList.count + qsTr(" Flights Loaded") : qsTr("No Flights Loaded") + anchors.horizontalCenter: parent.horizontalCenter + } + QGCLabel { + text: qsTr("A maximum of 250 flights were loaded") + color: qgcPal.colorOrange + font.pixelSize: ScreenTools.smallFontPointSize + visible: _flightList.count >= 250 + anchors.horizontalCenter: parent.horizontalCenter + } + } + QGCLabel { + text: qsTr("Flight Area ") + (tableView.currentRow + 1) + visible: !QGroundControl.airspaceManager.flightPlan.loadingFlightList && _flightList.count > 0 && tableView.currentRow >= 0 + anchors.bottom: map.top + anchors.bottomMargin: ScreenTools.defaultFontPixelHeight * 0.25 + anchors.horizontalCenter: parent.horizontalCenter + } + Map { + id: map + width: ScreenTools.defaultFontPixelWidth * 40 + height: width * 0.6666 + anchors.bottom: parent.bottom + anchors.horizontalCenter: parent.horizontalCenter + zoomLevel: QGroundControl.flightMapZoom + center: QGroundControl.flightMapPosition + gesture.acceptedGestures: MapGestureArea.PinchGesture + plugin: Plugin { name: "QGroundControl" } + visible: !QGroundControl.airspaceManager.flightPlan.loadingFlightList && _flightList.count > 0 && tableView.currentRow >= 0 + function updateActiveMapType() { + var settings = QGroundControl.settingsManager.flightMapSettings + var fullMapName = settings.mapProvider.value + " " + settings.mapType.value + for (var i = 0; i < map.supportedMapTypes.length; i++) { + if (fullMapName === map.supportedMapTypes[i].name) { + map.activeMapType = map.supportedMapTypes[i] + return + } + } + } + MapPolygon { + id: flightArea + color: Qt.rgba(1,0,0,0.2) + border.color: Qt.rgba(1,1,1,0.65) + } + Component.onCompleted: { + updateActiveMapType() + } + Connections { + target: QGroundControl.settingsManager.flightMapSettings.mapType + onRawValueChanged: updateActiveMapType() + } + + Connections { + target: QGroundControl.settingsManager.flightMapSettings.mapProvider + onRawValueChanged: updateActiveMapType() + } + + } + Calendar { + id: fromPicker + anchors.centerIn: parent + visible: false; + onClicked: { + visible = false; + } + } + Calendar { + id: toPicker + anchors.centerIn: parent + visible: false; + minimumDate: fromPicker.selectedDate + onClicked: { + visible = false; + } + } + } + } + } + } +} diff --git a/src/Airmap/AirspaceControl.qml b/src/Airmap/AirspaceControl.qml new file mode 100644 index 0000000..b43ce85 --- /dev/null +++ b/src/Airmap/AirspaceControl.qml @@ -0,0 +1,603 @@ +import QtQuick 2.11 +import QtQuick.Controls 2.4 +import QtQuick.Layouts 1.11 +import QtQuick.Dialogs 1.3 +import QtQuick.Controls.Styles 1.4 +import QtQml 2.2 +import QtGraphicalEffects 1.0 + +import QGroundControl 1.0 +import QGroundControl.Airmap 1.0 +import QGroundControl.Airspace 1.0 +import QGroundControl.Controls 1.0 +import QGroundControl.FactControls 1.0 +import QGroundControl.Palette 1.0 +import QGroundControl.ScreenTools 1.0 +import QGroundControl.Vehicle 1.0 + +Item { + id: _root + width: parent.width + height: _colapsed ? colapsedRect.height : expandedRect.height + + property bool showColapse: true + property bool planView: false + + property color _airspaceColor: _validAdvisories ? getAispaceColor(QGroundControl.airspaceManager.advisories.airspaceColor) : _colorGray + property bool _validRules: QGroundControl.airspaceManager.connected && QGroundControl.airspaceManager.ruleSets.valid + property bool _validAdvisories: QGroundControl.airspaceManager.connected && QGroundControl.airspaceManager.advisories.valid + property color _textColor: qgcPal.text + property bool _colapsed: !QGroundControl.airspaceManager.airspaceVisible || !QGroundControl.airspaceManager.connected + property int _flightPermit: QGroundControl.airspaceManager.flightPlan.flightPermitStatus + + readonly property real _radius: ScreenTools.defaultFontPixelWidth * 0.5 + readonly property color _colorOrange: "#d75e0d" + readonly property color _colorBrown: "#3c2b24" + readonly property color _colorLightBrown: "#5a4e49" + readonly property color _colorGray: "#615c61" + readonly property color _colorLightGray: "#a0a0a0" + readonly property color _colorMidBrown: "#3a322f" + readonly property color _colorYellow: "#d7c61d" + readonly property color _colorWhite: "#ffffff" + readonly property color _colorRed: "#aa1200" + readonly property color _colorGreen: "#125f00" + readonly property real _baseHeight: ScreenTools.defaultFontPixelHeight * 22 + readonly property real _baseWidth: ScreenTools.defaultFontPixelWidth * 40 + + QGCPalette { + id: qgcPal + colorGroupEnabled: enabled + } + + function getAispaceColor(color) { + if(color === AirspaceAdvisoryProvider.Green) return _colorGreen; + if(color === AirspaceAdvisoryProvider.Yellow) return _colorYellow; + if(color === AirspaceAdvisoryProvider.Orange) return _colorOrange; + if(color === AirspaceAdvisoryProvider.Red) return _colorRed; + return _colorGray; + } + + function hasBriefRules() { + if(QGroundControl.airspaceManager.flightPlan.rulesViolation.count > 0) + return true; + if(QGroundControl.airspaceManager.flightPlan.rulesInfo.count > 0) + return true; + if(QGroundControl.airspaceManager.flightPlan.rulesReview.count > 0) + return true; + if(QGroundControl.airspaceManager.flightPlan.rulesFollowing.count > 0) + return true; + return false; + } + + on_AirspaceColorChanged: { + if(_validAdvisories) { + if(QGroundControl.airspaceManager.advisories.airspaceColor === AirspaceAdvisoryProvider.Yellow) { + _textColor = "#000000" + return + } + } + _textColor = _colorWhite + } + + //--------------------------------------------------------------- + //-- Colapsed State + Rectangle { + id: colapsedRect + width: parent.width + height: _colapsed ? colapsedRow.height + ScreenTools.defaultFontPixelHeight : 0 + color: QGroundControl.airspaceManager.connected ? (_validAdvisories ? getAispaceColor(QGroundControl.airspaceManager.advisories.airspaceColor) : _colorGray) : _colorGray + radius: _radius + visible: _colapsed + Row { + id: colapsedRow + spacing: ScreenTools.defaultFontPixelWidth + anchors.left: parent.left + anchors.leftMargin: ScreenTools.defaultFontPixelWidth + anchors.verticalCenter: parent.verticalCenter + QGCColoredImage { + width: height + height: ScreenTools.defaultFontPixelWidth * 2.5 + sourceSize.height: height + source: "qrc:/airmap/advisory-icon.svg" + color: _textColor + anchors.verticalCenter: parent.verticalCenter + } + Column { + spacing: 0 + anchors.verticalCenter: parent.verticalCenter + QGCLabel { + text: qsTr("Airspace") + color: _textColor + } + QGCLabel { + text: _validAdvisories ? QGroundControl.airspaceManager.advisories.advisories.count + qsTr(" Advisories") : "" + color: _textColor + visible: _validAdvisories + font.pointSize: ScreenTools.smallFontPointSize + } + } + Item { + width: ScreenTools.defaultFontPixelWidth + height: 1 + } + AirspaceWeather { + iconHeight: ScreenTools.defaultFontPixelHeight * 2 + visible: QGroundControl.airspaceManager.weatherInfo.valid && QGroundControl.airspaceManager.connected + contentColor: _textColor + anchors.verticalCenter: parent.verticalCenter + } + QGCLabel { + text: qsTr("Not Connected") + color: qgcPal.text + visible: !QGroundControl.airspaceManager.connected + anchors.verticalCenter: parent.verticalCenter + } + } + QGCColoredImage { + width: height + height: ScreenTools.defaultFontPixelWidth * 2.5 + sourceSize.height: height + source: "qrc:/airmap/expand.svg" + color: _textColor + fillMode: Image.PreserveAspectFit + visible: QGroundControl.airspaceManager.connected + anchors.right: parent.right + anchors.rightMargin: ScreenTools.defaultFontPixelWidth + anchors.verticalCenter: parent.verticalCenter + } + MouseArea { + anchors.fill: parent + enabled: QGroundControl.airspaceManager.connected + onClicked: { + QGroundControl.airspaceManager.airspaceVisible = true + } + } + } + //--------------------------------------------------------------- + //-- Expanded State + Rectangle { + id: expandedRect + width: parent.width + height: !_colapsed ? expandedCol.height + ScreenTools.defaultFontPixelHeight : 0 + color: _validAdvisories ? getAispaceColor(QGroundControl.airspaceManager.advisories.airspaceColor) : _colorGray + radius: _radius + visible: !_colapsed + MouseArea { + anchors.fill: parent + onWheel: { wheel.accepted = true; } + onPressed: { mouse.accepted = true; } + onReleased: { mouse.accepted = true; } + } + Column { + id: expandedCol + spacing: ScreenTools.defaultFontPixelHeight * 0.5 + anchors.left: parent.left + anchors.right: parent.right + anchors.verticalCenter: parent.verticalCenter + //-- Header + Item { + height: expandedRow.height + anchors.left: parent.left + anchors.right: parent.right + Row { + id: expandedRow + spacing: ScreenTools.defaultFontPixelWidth + anchors.left: parent.left + anchors.leftMargin: ScreenTools.defaultFontPixelWidth + QGCColoredImage { + width: height + height: ScreenTools.defaultFontPixelWidth * 2.5 + sourceSize.height: height + source: "qrc:/airmap/advisory-icon.svg" + color: _textColor + fillMode: Image.PreserveAspectFit + anchors.verticalCenter: parent.verticalCenter + } + Column { + spacing: 0 + anchors.verticalCenter: parent.verticalCenter + QGCLabel { + text: qsTr("Airspace") + color: _textColor + } + QGCLabel { + text: _validAdvisories ? QGroundControl.airspaceManager.advisories.advisories.count + qsTr(" Advisories") : "" + color: _textColor + visible: _validAdvisories + font.pointSize: ScreenTools.smallFontPointSize + } + } + Item { + width: ScreenTools.defaultFontPixelWidth + height: 1 + } + AirspaceWeather { + visible: QGroundControl.airspaceManager.weatherInfo.valid && showColapse + contentColor: _textColor + anchors.verticalCenter: parent.verticalCenter + } + } + QGCColoredImage { + width: height + height: ScreenTools.defaultFontPixelWidth * 2.5 + sourceSize.height: height + source: "qrc:/airmap/colapse.svg" + color: _textColor + visible: showColapse + fillMode: Image.PreserveAspectFit + anchors.right: parent.right + anchors.rightMargin: ScreenTools.defaultFontPixelWidth + anchors.verticalCenter: parent.verticalCenter + MouseArea { + anchors.fill: parent + enabled: showColapse + onClicked: QGroundControl.airspaceManager.airspaceVisible = false + } + } + AirspaceWeather { + visible: QGroundControl.airspaceManager.weatherInfo.valid && !showColapse + contentColor: _textColor + anchors.right: parent.right + anchors.rightMargin: ScreenTools.defaultFontPixelWidth + anchors.verticalCenter: parent.verticalCenter + } + } + //-- Contents (Brown Box) + Rectangle { + color: _colorBrown + height: airspaceCol.height + ScreenTools.defaultFontPixelHeight + radius: _radius + anchors.left: parent.left + anchors.leftMargin: ScreenTools.defaultFontPixelWidth * 0.5 + anchors.right: parent.right + anchors.rightMargin: ScreenTools.defaultFontPixelWidth * 0.5 + Column { + id: airspaceCol + spacing: ScreenTools.defaultFontPixelHeight * 0.5 + anchors.left: parent.left + anchors.leftMargin: ScreenTools.defaultFontPixelWidth * 0.5 + anchors.right: parent.right + anchors.rightMargin: ScreenTools.defaultFontPixelWidth * 0.5 + anchors.verticalCenter: parent.verticalCenter + //-- Regulations + Rectangle { + color: _colorLightBrown + height: regCol.height + ScreenTools.defaultFontPixelHeight + radius: _radius + anchors.left: parent.left + anchors.leftMargin: ScreenTools.defaultFontPixelWidth * 0.5 + anchors.right: parent.right + anchors.rightMargin: ScreenTools.defaultFontPixelWidth * 0.5 + Column { + id: regCol + spacing: ScreenTools.defaultFontPixelHeight * 0.25 + anchors.left: parent.left + anchors.leftMargin: ScreenTools.defaultFontPixelWidth * 0.5 + anchors.right: parent.right + anchors.rightMargin: ScreenTools.defaultFontPixelWidth * 0.5 + anchors.verticalCenter: parent.verticalCenter + QGCLabel { + text: qsTr("Airspace Regulations") + color: _colorWhite + anchors.horizontalCenter: parent.horizontalCenter + } + QGCLabel { + text: qsTr("Advisories based on the selected rules.") + color: _colorWhite + anchors.horizontalCenter: parent.horizontalCenter + font.pointSize: ScreenTools.smallFontPointSize + } + Item { width: 1; height: ScreenTools.defaultFontPixelHeight * 0.125; } + GridLayout { + columns: 2 + anchors.left: parent.left + anchors.right: parent.right + Rectangle { + width: regButton.height + height: width + radius: 2 + color: _colorGray + Layout.alignment: Qt.AlignVCenter + QGCColoredImage { + id: pencilIcon + width: height + height: parent.height * 0.5 + sourceSize.height: height + source: "qrc:/airmap/pencil.svg" + color: _colorWhite + fillMode: Image.PreserveAspectFit + anchors.centerIn: parent + MouseArea { + anchors.fill: parent + onClicked: { + ruleSelector.open() + } + } + } + } + Rectangle { + id: regButton + height: ScreenTools.defaultFontPixelHeight * 1.5 + radius: 2 + color: _colorMidBrown + Layout.fillWidth: true + QGCLabel { + id: regLabel + text: _validRules ? QGroundControl.airspaceManager.ruleSets.selectedRuleSets : qsTr("None") + elide: Text.ElideRight + horizontalAlignment: Text.AlignHCenter + color: _colorWhite + anchors.left: parent.left + anchors.leftMargin: ScreenTools.defaultFontPixelWidth * 0.5 + anchors.right: parent.right + anchors.rightMargin: ScreenTools.defaultFontPixelWidth * 0.5 + anchors.verticalCenter: parent.verticalCenter + } + } + } + } + } + Flickable { + clip: true + height: ScreenTools.defaultFontPixelHeight * 8 + contentHeight: advisoryCol.height + flickableDirection: Flickable.VerticalFlick + anchors.left: parent.left + anchors.leftMargin: ScreenTools.defaultFontPixelWidth * 0.5 + anchors.right: parent.right + anchors.rightMargin:ScreenTools.defaultFontPixelWidth * 0.5 + Column { + id: advisoryCol + spacing: ScreenTools.defaultFontPixelHeight * 0.5 + anchors.right: parent.right + anchors.left: parent.left + Repeater { + model: _validAdvisories ? QGroundControl.airspaceManager.advisories.advisories : [] + delegate: AirspaceRegulation { + regTitle: object.typeStr + regText: object.name + regColor: getAispaceColor(object.color) + anchors.right: parent.right + anchors.rightMargin: ScreenTools.defaultFontPixelWidth + anchors.left: parent.left + anchors.leftMargin: ScreenTools.defaultFontPixelWidth + } + } + } + } + } + } + //-- Footer + QGCButton { + text: planView ? qsTr("File Flight Plan") : qsTr("Flight Brief") + backRadius: 4 + heightFactor: 0.3333 + showBorder: true + width: ScreenTools.defaultFontPixelWidth * 16 + visible: _flightPermit !== AirspaceFlightPlanProvider.PermitNone + anchors.horizontalCenter: parent.horizontalCenter + onClicked: { + planView ? flightDetails.open() : flightBrief.open() + } + } + QGCLabel { + text: qsTr("Powered by AIRMAP") + color: _textColor + font.pointSize: ScreenTools.smallFontPointSize + anchors.horizontalCenter: parent.horizontalCenter + } + } + } + //--------------------------------------------------------------- + //-- Rule Selector + Popup { + id: ruleSelector + width: rulesCol.width + ScreenTools.defaultFontPixelWidth + height: rulesCol.height + ScreenTools.defaultFontPixelHeight + modal: true + focus: true + parent: Overlay.overlay + closePolicy: Popup.CloseOnEscape | Popup.CloseOnPressOutside + + property var _popupTarget: null + property var _arrowTarget: null + + onVisibleChanged: { + if(visible) { + _popupTarget = mainWindow.contentItem.mapFromItem(_root, 0, 0) + _arrowTarget = mainWindow.contentItem.mapFromItem(pencilIcon, 0, 0) + } + } + + x: _popupTarget ? _popupTarget.x - width - (ScreenTools.defaultFontPixelWidth * 5) : 0 + y: _popupTarget ? _popupTarget.y + mainWindow.header.height : 0 + + background: Rectangle { + anchors.fill: parent + color: qgcPal.window + radius: ScreenTools.defaultFontPixelWidth + } + + Column { + id: rulesCol + spacing: ScreenTools.defaultFontPixelHeight * 0.5 + anchors.centerIn: parent + //-- Regulations + Rectangle { + color: qgcPal.windowShade + height: rulesTitle.height + ScreenTools.defaultFontPixelHeight + width: parent.width * 0.95 + radius: _radius + anchors.horizontalCenter: parent.horizontalCenter + QGCLabel { + id: rulesTitle + text: qsTr("Airspace Regulation Options") + anchors.centerIn: parent + } + } + Flickable { + clip: true + width: ScreenTools.defaultFontPixelWidth * 30 + height: ScreenTools.defaultFontPixelHeight * 14 + contentHeight: rulesetCol.height + flickableDirection: Flickable.VerticalFlick + Column { + id: rulesetCol + spacing: ScreenTools.defaultFontPixelHeight * 0.25 + anchors.right: parent.right + anchors.left: parent.left + anchors.rightMargin: ScreenTools.defaultFontPixelWidth * 2 + anchors.leftMargin: ScreenTools.defaultFontPixelWidth * 2 + Item { + width: 1 + height: 1 + } + QGCLabel { + text: qsTr("PICK ONE REGULATION") + font.pointSize: ScreenTools.smallFontPointSize + anchors.leftMargin: ScreenTools.defaultFontPixelWidth * 2 + } + Repeater { + model: _validRules ? QGroundControl.airspaceManager.ruleSets.ruleSets : [] + delegate: RuleSelector { + visible: object.selectionType === AirspaceRuleSet.Pickone + rule: object + autoExclusive: true + anchors.right: parent.right + anchors.rightMargin: ScreenTools.defaultFontPixelWidth + anchors.left: parent.left + anchors.leftMargin: ScreenTools.defaultFontPixelWidth + } + } + Item { + width: 1 + height: 1 + } + QGCLabel { + text: qsTr("OPTIONAL") + font.pointSize: ScreenTools.smallFontPointSize + anchors.leftMargin: ScreenTools.defaultFontPixelWidth * 2 + } + Repeater { + model: _validRules ? QGroundControl.airspaceManager.ruleSets.ruleSets : [] + delegate: RuleSelector { + visible: object.selectionType === AirspaceRuleSet.Optional + rule: object + anchors.right: parent.right + anchors.rightMargin: ScreenTools.defaultFontPixelWidth + anchors.left: parent.left + anchors.leftMargin: ScreenTools.defaultFontPixelWidth + } + } + Item { + width: 1 + height: 1 + } + QGCLabel { + text: qsTr("REQUIRED") + font.pointSize: ScreenTools.smallFontPointSize + anchors.leftMargin: ScreenTools.defaultFontPixelWidth * 2 + } + Repeater { + model: _validRules ? QGroundControl.airspaceManager.ruleSets.ruleSets : [] + delegate: RuleSelector { + visible: object.selectionType === AirspaceRuleSet.Required + rule: object + enabled: false + anchors.right: parent.right + anchors.rightMargin: ScreenTools.defaultFontPixelWidth + anchors.left: parent.left + anchors.leftMargin: ScreenTools.defaultFontPixelWidth + } + } + } + } + } + + //-- Arrow + QGCColoredImage { + id: arrowIcon + width: height + height: ScreenTools.defaultFontPixelHeight * 2 + sourceSize.height: height + source: "qrc:/airmap/right-arrow.svg" + color: qgcPal.window + anchors.left: parent.right + y: ruleSelector._arrowTarget ? (ruleSelector._arrowTarget.y - height) : 0 + } + } + + //--------------------------------------------------------------- + //-- Flight Details + Popup { + id: flightDetails + width: flDetailsRow.width + (ScreenTools.defaultFontPixelWidth * 4) + height: flDetailsRow.height + (ScreenTools.defaultFontPixelHeight * 2) + modal: true + focus: true + parent: Overlay.overlay + x: Math.round((mainWindow.width - width) * 0.5) + y: Math.round((mainWindow.height - height) * 0.5) + closePolicy: Popup.NoAutoClose + background: Rectangle { + anchors.fill: parent + color: qgcPal.window + radius: ScreenTools.defaultFontPixelWidth + } + Row { + id: flDetailsRow + spacing: ScreenTools.defaultFontPixelWidth + anchors.centerIn: parent + //--------------------------------------------------------- + //-- Flight Details + FlightDetails { + id: _flightDetails + baseHeight: _baseHeight + baseWidth: _baseWidth + } + //--------------------------------------------------------- + //-- Divider + Rectangle { + color: qgcPal.text + width: 1 + height: parent.height + opacity: 0.25 + anchors.verticalCenter: parent.verticalCenter + } + //--------------------------------------------------------- + //-- Flight Brief + FlightBrief { + baseHeight: _baseHeight + baseWidth: _baseWidth + onClosed: flightDetails.close() + } + } + } + //--------------------------------------------------------------- + //-- Flight Brief + Popup { + id: flightBrief + width: flightBriedItem.width + (ScreenTools.defaultFontPixelWidth * 4) + height: flightBriedItem.height + (ScreenTools.defaultFontPixelHeight * 2) + modal: true + focus: true + parent: Overlay.overlay + x: Math.round((mainWindow.width - width) * 0.5) + y: Math.round((mainWindow.height - height) * 0.5) + closePolicy: Popup.NoAutoClose + background: Rectangle { + anchors.fill: parent + color: qgcPal.window + radius: ScreenTools.defaultFontPixelWidth + } + //--------------------------------------------------------- + //-- Flight Brief + FlightBrief { + id: flightBriedItem + baseHeight: _baseHeight + baseWidth: _baseWidth + onClosed: flightBrief.close() + anchors.centerIn: parent + } + } +} diff --git a/src/Airmap/AirspaceRegulation.qml b/src/Airmap/AirspaceRegulation.qml new file mode 100644 index 0000000..91a0af1 --- /dev/null +++ b/src/Airmap/AirspaceRegulation.qml @@ -0,0 +1,58 @@ +import QtQuick 2.3 +import QtQuick.Controls 1.2 +import QtQuick.Controls.Styles 1.4 +import QtQuick.Dialogs 1.2 +import QtQml 2.2 + +import QGroundControl 1.0 +import QGroundControl.ScreenTools 1.0 +import QGroundControl.Controls 1.0 +import QGroundControl.Palette 1.0 +import QGroundControl.Airmap 1.0 + +Item { + id: _root + height: regCol.height + + property var textColor: "white" + property var regColor: "white" + property var regTitle: "" + property var regText: "" + + Column { + id: regCol + spacing: ScreenTools.defaultFontPixelHeight * 0.5 + anchors.left: parent.left + anchors.leftMargin: ScreenTools.defaultFontPixelWidth * 0.5 + anchors.right: parent.right + anchors.rightMargin: ScreenTools.defaultFontPixelWidth * 0.5 + Row { + spacing: ScreenTools.defaultFontPixelWidth + anchors.left: parent.left + anchors.leftMargin: ScreenTools.defaultFontPixelWidth * 0.5 + anchors.right: parent.right + anchors.rightMargin: ScreenTools.defaultFontPixelWidth * 0.5 + Rectangle { + width: height + height: ScreenTools.defaultFontPixelWidth * 1.5 + radius: height * 0.5 + color: regColor + anchors.verticalCenter: parent.verticalCenter + } + QGCLabel { + text: regTitle + color: textColor + } + } + QGCLabel { + text: regText + color: textColor + anchors.left: parent.left + anchors.leftMargin: ScreenTools.defaultFontPixelWidth * 0.5 + anchors.right: parent.right + anchors.rightMargin: ScreenTools.defaultFontPixelWidth * 0.5 + wrapMode: Text.WordWrap + font.pointSize: ScreenTools.smallFontPointSize + } + } +} diff --git a/src/Airmap/AirspaceWeather.qml b/src/Airmap/AirspaceWeather.qml new file mode 100644 index 0000000..265b212 --- /dev/null +++ b/src/Airmap/AirspaceWeather.qml @@ -0,0 +1,44 @@ +import QtQuick 2.3 +import QtQuick.Controls 1.2 +import QtQuick.Controls.Styles 1.4 +import QtQuick.Dialogs 1.2 +import QtQml 2.2 + +import QGroundControl 1.0 +import QGroundControl.Airmap 1.0 +import QGroundControl.Airspace 1.0 +import QGroundControl.Controls 1.0 +import QGroundControl.Palette 1.0 +import QGroundControl.ScreenTools 1.0 +import QGroundControl.SettingsManager 1.0 + +Item { + height: _valid ? weatherRow.height : 0 + width: _valid ? weatherRow.width : 0 + property color contentColor: "#ffffff" + property real iconHeight: ScreenTools.defaultFontPixelHeight * 2 + property bool _valid: QGroundControl.airspaceManager.weatherInfo.valid + property bool _celcius: QGroundControl.settingsManager.unitsSettings.temperatureUnits.rawValue === UnitsSettings.TemperatureUnitsCelsius + property int _tempC: _valid ? QGroundControl.airspaceManager.weatherInfo.temperature : 0 + property string _tempS: (_celcius ? _tempC : _tempC * 1.8 + 32).toFixed(0) + (_celcius ? "°C" : "°F") + Row { + id: weatherRow + spacing: ScreenTools.defaultFontPixelHeight * 0.5 + QGCColoredImage { + width: height + height: iconHeight + sourceSize.height: height + source: _valid ? QGroundControl.airspaceManager.weatherInfo.icon : "" + color: contentColor + visible: _valid + fillMode: Image.PreserveAspectFit + anchors.verticalCenter: parent.verticalCenter + } + QGCLabel { + text: _tempS + color: contentColor + visible: _valid + anchors.verticalCenter: parent.verticalCenter + } + } +} diff --git a/src/Airmap/CMakeLists.txt b/src/Airmap/CMakeLists.txt new file mode 100644 index 0000000..1f8a0cd --- /dev/null +++ b/src/Airmap/CMakeLists.txt @@ -0,0 +1,49 @@ + +if(QGC_AIRMAP) + + add_library(Airmap + AirMapAdvisoryManager.cc + AirMapFlightManager.cc + AirMapFlightPlanManager.cc + AirMapManager.cc + AirMapRestrictionManager.cc + AirMapRulesetsManager.cc + AirMapSettings.cc + AirMapSharedState.cc + AirMapTelemetry.cc + AirMapTrafficMonitor.cc + AirMapVehicleManager.cc + AirMapWeatherInfoManager.cc + + airmap.qrc + ) + add_custom_target(AirmapQml + SOURCES + AirmapSettings.qml + AirspaceRegulation.qml + ComplianceRules.qml + FlightDetails.qml + RuleSelector.qml + AirspaceControl.qml + AirspaceWeather.qml + FlightBrief.qml + FlightFeature.qml + ) +else() + add_library(Airmap + dummy/AirspaceManager.cc + airmap.qrc + ) + target_include_directories(Airmap PUBLIC dummy) +endif() + +target_link_libraries(Airmap + Qt5::Core + Qt5::Location + Qt5::Widgets + + qgc +) + +target_include_directories(Airmap INTERFACE ${CMAKE_CURRENT_SOURCE_DIR}) + diff --git a/src/Airmap/ComplianceRules.qml b/src/Airmap/ComplianceRules.qml new file mode 100644 index 0000000..fe8d4ae --- /dev/null +++ b/src/Airmap/ComplianceRules.qml @@ -0,0 +1,124 @@ +import QtQuick 2.3 +import QtQuick.Controls 1.2 +import QtQuick.Controls.Styles 1.4 +import QtQuick.Dialogs 1.2 +import QtQml 2.2 + +import QGroundControl 1.0 +import QGroundControl.ScreenTools 1.0 +import QGroundControl.Controls 1.0 +import QGroundControl.Palette 1.0 +import QGroundControl.Airmap 1.0 +import QGroundControl.SettingsManager 1.0 + +Item { + id: _root + height: checked ? (header.height + content.height) : header.height + property var rules: null + property color color: "white" + property alias text: title.text + property bool checked: false + property ExclusiveGroup exclusiveGroup: null + onExclusiveGroupChanged: { + if (exclusiveGroup) { + exclusiveGroup.bindCheckable(_root) + } + } + QGCPalette { + id: qgcPal + colorGroupEnabled: enabled + } + Rectangle { + id: header + height: ScreenTools.defaultFontPixelHeight * 2 + color: qgcPal.windowShade + anchors.top: parent.top + anchors.right: parent.right + anchors.left: parent.left + } + Row { + spacing: ScreenTools.defaultFontPixelWidth * 2 + anchors.fill: header + Rectangle { + height: parent.height + width: ScreenTools.defaultFontPixelWidth * 0.75 + color: _root.color + } + QGCLabel { + id: title + anchors.verticalCenter: parent.verticalCenter + } + } + QGCColoredImage { + source: checked ? "qrc:/airmap/colapse.svg" : "qrc:/airmap/expand.svg" + height: ScreenTools.defaultFontPixelHeight + width: height + color: qgcPal.text + fillMode: Image.PreserveAspectFit + sourceSize.height: height + anchors.right: header.right + anchors.rightMargin: ScreenTools.defaultFontPixelWidth + anchors.verticalCenter: header.verticalCenter + } + MouseArea { + anchors.fill: header + onClicked: { + _root.checked = !_root.checked + } + } + Rectangle { + id: content + color: qgcPal.window + visible: checked + height: ScreenTools.defaultFontPixelHeight * 10 + anchors.top: header.bottom + anchors.right: parent.right + anchors.left: parent.left + anchors.margins: ScreenTools.defaultFontPixelWidth + Flickable { + clip: true + anchors.fill: parent + contentHeight: rulesetCol.height + flickableDirection: Flickable.VerticalFlick + Column { + id: rulesetCol + spacing: ScreenTools.defaultFontPixelHeight * 0.25 + anchors.right: parent.right + anchors.left: parent.left + Repeater { + model: _root.rules ? _root.rules : [] + delegate: Item { + height: ruleCol.height + anchors.right: parent.right + anchors.left: parent.left + anchors.margins: ScreenTools.defaultFontPixelWidth + Column { + id: ruleCol + spacing: ScreenTools.defaultFontPixelHeight * 0.5 + anchors.right: parent.right + anchors.left: parent.left + Item { width: 1; height: ScreenTools.defaultFontPixelHeight * 0.25; } + QGCLabel { + text: object.shortText !== "" ? object.shortText : qsTr("Rule") + anchors.right: parent.right + anchors.left: parent.left + wrapMode: Text.WordWrap + } + QGCLabel { + text: object.description + visible: object.description !== "" + font.pointSize: ScreenTools.smallFontPointSize + anchors.right: parent.right + anchors.left: parent.left + wrapMode: Text.WordWrap + anchors.rightMargin: ScreenTools.defaultFontPixelWidth * 0.5 + anchors.leftMargin: ScreenTools.defaultFontPixelWidth * 0.5 + } + } + } + } + Item { width: 1; height: ScreenTools.defaultFontPixelHeight * 0.25; } + } + } + } +} diff --git a/src/Airmap/FlightBrief.qml b/src/Airmap/FlightBrief.qml new file mode 100644 index 0000000..061c2db --- /dev/null +++ b/src/Airmap/FlightBrief.qml @@ -0,0 +1,234 @@ +import QtQuick 2.3 +import QtQuick.Controls 1.2 +import QtQuick.Controls.Styles 1.4 +import QtQuick.Dialogs 1.2 +import QtQml 2.2 + +import QGroundControl 1.0 +import QGroundControl.Airmap 1.0 +import QGroundControl.Airspace 1.0 +import QGroundControl.Controls 1.0 +import QGroundControl.Palette 1.0 +import QGroundControl.ScreenTools 1.0 +import QGroundControl.SettingsManager 1.0 + +Item { + id: _root + implicitHeight: briefRootCol.height + implicitWidth: briefRootCol.width + property real baseHeight: ScreenTools.defaultFontPixelHeight * 22 + property real baseWidth: ScreenTools.defaultFontPixelWidth * 40 + signal closed() + Column { + id: briefRootCol + spacing: ScreenTools.defaultFontPixelHeight * 0.25 + Rectangle { + color: qgcPal.windowShade + anchors.right: parent.right + anchors.left: parent.left + height: briefLabel.height + ScreenTools.defaultFontPixelHeight + QGCLabel { + id: briefLabel + text: qsTr("Flight Brief") + font.pointSize: ScreenTools.mediumFontPointSize + font.family: ScreenTools.demiboldFontFamily + anchors.centerIn: parent + } + } + Item { width: 1; height: ScreenTools.defaultFontPixelHeight * 0.5; } + Flickable { + clip: true + width: baseWidth + height: baseHeight - buttonRow.height - ScreenTools.defaultFontPixelHeight + contentHeight: briefCol.height + flickableDirection: Flickable.VerticalFlick + Column { + id: briefCol + spacing: ScreenTools.defaultFontPixelHeight * 0.5 + anchors.right: parent.right + anchors.left: parent.left + QGCLabel { + text: qsTr("Authorizations") + } + Rectangle { + color: qgcPal.windowShade + anchors.right: parent.right + anchors.left: parent.left + height: authCol.height + ScreenTools.defaultFontPixelHeight + Column { + id: authCol + spacing: ScreenTools.defaultFontPixelHeight * 0.5 + anchors.margins: ScreenTools.defaultFontPixelWidth + anchors.right: parent.right + anchors.left: parent.left + anchors.verticalCenter: parent.verticalCenter + //-- Actual Authorization from some jurisdiction + Repeater { + visible: QGroundControl.airspaceManager.flightPlan.authorizations.count > 0 + model: QGroundControl.airspaceManager.flightPlan.authorizations + Column { + spacing: ScreenTools.defaultFontPixelHeight * 0.5 + anchors.right: parent.right + anchors.left: parent.left + QGCLabel { + text: object.name + font.family: ScreenTools.demiboldFontFamily + anchors.horizontalCenter: parent.horizontalCenter + } + Rectangle { + anchors.right: parent.right + anchors.left: parent.left + height: label.height + (ScreenTools.defaultFontPixelHeight * 0.5) + color: { + if(object.status === AirspaceFlightAuthorization.Pending) + return _colorOrange + if(object.status === AirspaceFlightAuthorization.Accepted || object.status === AirspaceFlightAuthorization.AcceptedOnSubmission) + return _colorGreen + if(object.status === AirspaceFlightAuthorization.Rejected || object.status === AirspaceFlightAuthorization.RejectedOnSubmission) + return _colorRed + return _colorGray + } + QGCLabel { + id: label + color: _colorWhite + text: { + if(object.status === AirspaceFlightAuthorization.Pending) + return qsTr("Authorization Pending") + if(object.status === AirspaceFlightAuthorization.Accepted || object.status === AirspaceFlightAuthorization.AcceptedOnSubmission) + return qsTr("Authorization Accepted") + if(object.status === AirspaceFlightAuthorization.Rejected || object.status === AirspaceFlightAuthorization.RejectedOnSubmission) + return qsTr("Authorization Rejected") + return qsTr("Authorization Unknown") + } + anchors.centerIn: parent + } + } + } + } + //-- Implied Authorization from no jurisdiction + Rectangle { + anchors.right: parent.right + anchors.left: parent.left + height: noAuthLabel.height + (ScreenTools.defaultFontPixelHeight * 0.5) + visible: QGroundControl.airspaceManager.flightPlan.authorizations.count < 1 + color: { + if(_flightPermit === AirspaceFlightPlanProvider.PermitPending) + return _colorOrange + if(_flightPermit === AirspaceFlightPlanProvider.PermitAccepted || _flightPermit === AirspaceFlightPlanProvider.PermitNotRequired) + return _colorGreen + if(_flightPermit === AirspaceFlightPlanProvider.PermitRejected) + return _colorRed + return _colorGray + } + QGCLabel { + id: noAuthLabel + color: _colorWhite + text: { + if(_flightPermit === AirspaceFlightPlanProvider.PermitPending) + return qsTr("Authorization Pending") + if(_flightPermit === AirspaceFlightPlanProvider.PermitAccepted) + return qsTr("Authorization Accepted") + if(_flightPermit === AirspaceFlightPlanProvider.PermitRejected) + return qsTr("Authorization Rejected") + if(_flightPermit === AirspaceFlightPlanProvider.PermitNotRequired) + return qsTr("Authorization Not Required") + return qsTr("Authorization Unknown") + } + anchors.centerIn: parent + } + } + } + } + Item { width: 1; height: ScreenTools.defaultFontPixelHeight * 0.25; } + QGCLabel { + text: qsTr("Rules & Compliance") + visible: hasBriefRules() + } + ExclusiveGroup { id: ruleGroup } + ComplianceRules { + text: qsTr("Rules you may be violating") + rules: violationRules + visible: violationRules && violationRules.count + color: _colorRed + exclusiveGroup: ruleGroup + anchors.right: parent.right + anchors.left: parent.left + property var violationRules: QGroundControl.airspaceManager.flightPlan.rulesViolation + } + ComplianceRules { + text: qsTr("Rules needing more information") + rules: infoRules + color: _colorOrange + visible: infoRules && infoRules.count + exclusiveGroup: ruleGroup + anchors.right: parent.right + anchors.left: parent.left + property var infoRules: QGroundControl.airspaceManager.flightPlan.rulesInfo + } + ComplianceRules { + text: qsTr("Rules you should review") + rules: reviewRules + color: _colorYellow + visible: reviewRules && reviewRules.count + exclusiveGroup: ruleGroup + anchors.right: parent.right + anchors.left: parent.left + property var reviewRules: QGroundControl.airspaceManager.flightPlan.rulesReview + } + ComplianceRules { + text: qsTr("Rules you are following") + rules: followRules + color: _colorGreen + visible: followRules && followRules.count + exclusiveGroup: ruleGroup + anchors.right: parent.right + anchors.left: parent.left + property var followRules: QGroundControl.airspaceManager.flightPlan.rulesFollowing + } + } + } + //------------------------------------------------------------- + //-- File Flight Plan or Close + Item { width: 1; height: ScreenTools.defaultFontPixelHeight; } + Row { + id: buttonRow + spacing: ScreenTools.defaultFontPixelWidth + anchors.horizontalCenter: parent.horizontalCenter + QGCButton { + text: qsTr("Update Plan") + backRadius: 4 + heightFactor: 0.3333 + showBorder: true + enabled: _flightPermit !== AirspaceFlightPlanProvider.PermitNone && QGroundControl.airspaceManager.flightPlan.dirty + visible: planView + width: ScreenTools.defaultFontPixelWidth * 12 + onClicked: { + QGroundControl.airspaceManager.flightPlan.updateFlightPlan() + } + } + QGCButton { + text: qsTr("Submit Plan") + backRadius: 4 + heightFactor: 0.3333 + showBorder: true + enabled: _flightPermit === AirspaceFlightPlanProvider.PermitAccepted || _flightPermit === AirspaceFlightPlanProvider.PermitNotRequired + width: ScreenTools.defaultFontPixelWidth * 12 + visible: planView + onClicked: { + QGroundControl.airspaceManager.flightPlan.submitFlightPlan() + _root.closed() + } + } + QGCButton { + text: qsTr("Close") + backRadius: 4 + heightFactor: 0.3333 + showBorder: true + width: ScreenTools.defaultFontPixelWidth * 12 + onClicked: { + _root.closed() + } + } + } + } +} diff --git a/src/Airmap/FlightDetails.qml b/src/Airmap/FlightDetails.qml new file mode 100644 index 0000000..61a9003 --- /dev/null +++ b/src/Airmap/FlightDetails.qml @@ -0,0 +1,212 @@ +import QtQuick 2.3 +import QtQuick.Controls 1.2 +import QtQuick.Controls.Styles 1.4 +import QtQuick.Dialogs 1.2 +import QtQuick.Layouts 1.2 +import QtQml 2.2 + +import QGroundControl 1.0 +import QGroundControl.Airmap 1.0 +import QGroundControl.Airspace 1.0 +import QGroundControl.Controls 1.0 +import QGroundControl.Palette 1.0 +import QGroundControl.ScreenTools 1.0 +import QGroundControl.SettingsManager 1.0 + +Item { + id: _root + implicitHeight: detailCol.height + implicitWidth: detailCol.width + property real baseHeight: ScreenTools.defaultFontPixelHeight * 22 + property real baseWidth: ScreenTools.defaultFontPixelWidth * 40 + Column { + id: detailCol + spacing: ScreenTools.defaultFontPixelHeight * 0.25 + Rectangle { + color: qgcPal.windowShade + anchors.right: parent.right + anchors.left: parent.left + height: detailsLabel.height + ScreenTools.defaultFontPixelHeight + QGCLabel { + id: detailsLabel + text: qsTr("Flight Details") + font.pointSize: ScreenTools.mediumFontPointSize + font.family: ScreenTools.demiboldFontFamily + anchors.centerIn: parent + } + } + Item { width: 1; height: ScreenTools.defaultFontPixelHeight * 0.5; } + Flickable { + clip: true + width: baseWidth + height: baseHeight + contentHeight: flContextCol.height + flickableDirection: Flickable.VerticalFlick + Column { + id: flContextCol + spacing: ScreenTools.defaultFontPixelHeight * 0.25 + anchors.right: parent.right + anchors.left: parent.left + QGCLabel { + text: qsTr("Flight Date & Time") + } + Rectangle { + id: dateRect + color: qgcPal.windowShade + anchors.right: parent.right + anchors.left: parent.left + height: datePickerCol.height + (ScreenTools.defaultFontPixelHeight * 2) + Column { + id: datePickerCol + spacing: ScreenTools.defaultFontPixelHeight * 0.5 + anchors.margins: ScreenTools.defaultFontPixelWidth + anchors.right: parent.right + anchors.left: parent.left + anchors.verticalCenter: parent.verticalCenter + RowLayout { + spacing: ScreenTools.defaultFontPixelWidth * 0.5 + anchors.right: parent.right + anchors.left: parent.left + QGCButton { + text: qsTr("Now") + checked: QGroundControl.airspaceManager.flightPlan.flightStartsNow + onClicked: { + QGroundControl.airspaceManager.flightPlan.flightStartsNow = !QGroundControl.airspaceManager.flightPlan.flightStartsNow + } + } + QGCButton { + text: { + var nowTime = new Date() + var setTime = QGroundControl.airspaceManager.flightPlan.flightStartTime + if(setTime.setHours(0,0,0,0) === nowTime.setHours(0,0,0,0)) { + return qsTr("Today") + } else { + return setTime.toLocaleDateString(Qt.locale()) + } + } + Layout.fillWidth: true + enabled: !QGroundControl.airspaceManager.flightPlan.flightStartsNow + iconSource: "qrc:/airmap/expand.svg" + onClicked: { + datePicker.visible = true + } + } + } + QGCLabel { + text: qsTr("Flight Start Time") + } + Item { + anchors.right: parent.right + anchors.left: parent.left + height: timeSlider.height + visible: !QGroundControl.airspaceManager.flightPlan.flightStartsNow + QGCSlider { + id: timeSlider + width: parent.width - timeLabel.width - ScreenTools.defaultFontPixelWidth + stepSize: 1 + enabled: !QGroundControl.airspaceManager.flightPlan.flightStartsNow + minimumValue: 0 + maximumValue: 95 // 96 blocks of 15 minutes in 24 hours + anchors.left: parent.left + anchors.verticalCenter: parent.verticalCenter + onValueChanged: { + var today = QGroundControl.airspaceManager.flightPlan.flightStartTime + today.setHours(Math.floor(timeSlider.value * 0.25)) + today.setMinutes((timeSlider.value * 15) % 60) + today.setSeconds(0) + today.setMilliseconds(0) + QGroundControl.airspaceManager.flightPlan.flightStartTime = today + } + Component.onCompleted: { + updateTime() + } + function updateTime() { + var today = QGroundControl.airspaceManager.flightPlan.flightStartTime + var val = (((today.getHours() * 60) + today.getMinutes()) * (96/1440)) + 1 + if(val > 95) val = 95 + timeSlider.value = Math.ceil(val) + } + } + QGCLabel { + id: timeLabel + text: ('00' + hour).slice(-2) + ":" + ('00' + minute).slice(-2) + width: ScreenTools.defaultFontPixelWidth * 5 + anchors.right: parent.right + anchors.verticalCenter: parent.verticalCenter + property int hour: Math.floor(timeSlider.value * 0.25) + property int minute: (timeSlider.value * 15) % 60 + } + } + QGCLabel { + text: qsTr("Now") + visible: QGroundControl.airspaceManager.flightPlan.flightStartsNow + anchors.horizontalCenter: parent.horizontalCenter + } + QGCLabel { + text: qsTr("Duration") + } + Item { + anchors.right: parent.right + anchors.left: parent.left + height: durationSlider.height + QGCSlider { + id: durationSlider + width: parent.width - durationLabel.width - ScreenTools.defaultFontPixelWidth + stepSize: 1 + minimumValue: 1 + maximumValue: 24 // 24 blocks of 15 minutes in 6 hours + anchors.left: parent.left + anchors.verticalCenter: parent.verticalCenter + onValueChanged: { + var hour = Math.floor(durationSlider.value * 0.25) + var minute = (durationSlider.value * 15) % 60 + var seconds = (hour * 60 * 60) + (minute * 60) + QGroundControl.airspaceManager.flightPlan.flightDuration = seconds + } + Component.onCompleted: { + var val = ((QGroundControl.airspaceManager.flightPlan.flightDuration / 60) * (96/1440)) + 1 + if(val > 24) val = 24 + durationSlider.value = Math.ceil(val) + } + } + QGCLabel { + id: durationLabel + text: ('00' + hour).slice(-2) + ":" + ('00' + minute).slice(-2) + width: ScreenTools.defaultFontPixelWidth * 5 + anchors.right: parent.right + anchors.verticalCenter: parent.verticalCenter + property int hour: Math.floor(durationSlider.value * 0.25) + property int minute: (durationSlider.value * 15) % 60 + } + } + } + } + Item { width: 1; height: ScreenTools.defaultFontPixelHeight * 0.25; } + QGCLabel { + text: qsTr("Flight Context") + visible: QGroundControl.airspaceManager.flightPlan.briefFeatures.count > 0 + } + Repeater { + model: QGroundControl.airspaceManager.flightPlan.briefFeatures + visible: QGroundControl.airspaceManager.flightPlan.briefFeatures.count > 0 + delegate: FlightFeature { + feature: object + visible: object && object.type !== AirspaceRuleFeature.Unknown && object.description !== "" && object.name !== "" + anchors.right: parent.right + anchors.left: parent.left + } + } + } + } + } + Calendar { + id: datePicker + anchors.centerIn: parent + visible: false; + minimumDate: QGroundControl.airspaceManager.flightPlan.flightStartTime + onClicked: { + QGroundControl.airspaceManager.flightPlan.flightStartTime = datePicker.selectedDate + visible = false; + } + } +} diff --git a/src/Airmap/FlightFeature.qml b/src/Airmap/FlightFeature.qml new file mode 100644 index 0000000..d96c53b --- /dev/null +++ b/src/Airmap/FlightFeature.qml @@ -0,0 +1,103 @@ +import QtQuick 2.3 +import QtQuick.Controls 1.2 +import QtQuick.Controls.Styles 1.4 +import QtQuick.Dialogs 1.2 +import QtQml 2.2 + +import QGroundControl 1.0 +import QGroundControl.Airmap 1.0 +import QGroundControl.Airspace 1.0 +import QGroundControl.Controls 1.0 +import QGroundControl.Palette 1.0 +import QGroundControl.ScreenTools 1.0 +import QGroundControl.SettingsManager 1.0 + +Rectangle { + id: _root + height: questionCol.height + (ScreenTools.defaultFontPixelHeight * 1.25) + color: qgcPal.windowShade + property var feature: null + QGCPalette { + id: qgcPal + colorGroupEnabled: enabled + } + Column { + id: questionCol + spacing: ScreenTools.defaultFontPixelHeight * 0.5 + anchors.margins: ScreenTools.defaultFontPixelWidth + anchors.right: parent.right + anchors.left: parent.left + anchors.verticalCenter: parent.verticalCenter + QGCLabel { + text: feature ? feature.description : "" + anchors.right: parent.right + anchors.left: parent.left + wrapMode: Text.WordWrap + visible: feature ? (feature.type !== AirspaceRuleFeature.Boolean) : false + } + QGCTextField { + text: feature ? (feature.value ? feature.value : "") : "" + visible: feature ? (feature.type !== AirspaceRuleFeature.Boolean) : false + showUnits: true + unitsLabel: { + if(feature) { + if(feature.unit == AirspaceRuleFeature.Kilogram) + return "kg"; + if(feature.unit == AirspaceRuleFeature.Meters) + return "m"; + if(feature.unit == AirspaceRuleFeature.MetersPerSecond) + return "m/s"; + } + return "" + } + anchors.right: parent.right + anchors.left: parent.left + inputMethodHints: feature ? (feature.type === AirspaceRuleFeature.Float ? Qt.ImhFormattedNumbersOnly : Qt.ImhNone) : Qt.ImhNone + onAccepted: { + if(feature) { + if (feature.type === AirspaceRuleFeature.Float) { + feature.value = parseFloat(text) + } + else if (feature.type === AirspaceRuleFeature.String) { + feature.value = text + } + } + } + onEditingFinished: { + if(feature) { + if (feature.type === AirspaceRuleFeature.Float) { + feature.value = parseFloat(text) + } + else if (feature.type === AirspaceRuleFeature.String) { + feature.value = text + } + } + } + } + Item { + height: Math.max(checkBox.height, label.height) + anchors.right: parent.right + anchors.left: parent.left + visible: feature ? (feature.type === AirspaceRuleFeature.Boolean) : false + QGCCheckBox { + id: checkBox + text: "" + onClicked: { if(feature) {feature.value = checked} } + anchors.left: parent.left + anchors.verticalCenter: parent.verticalCenter + Component.onCompleted: { + checked = feature ? (feature.value === 2 ? false : feature.value) : false + } + } + QGCLabel { + id: label + text: feature ? feature.description : "" + anchors.right: parent.right + anchors.left: checkBox.right + anchors.leftMargin: ScreenTools.defaultFontPixelWidth * 0.5 + wrapMode: Text.WordWrap + anchors.verticalCenter: parent.verticalCenter + } + } + } +} diff --git a/src/Airmap/LifetimeChecker.h b/src/Airmap/LifetimeChecker.h new file mode 100644 index 0000000..e0db6bd --- /dev/null +++ b/src/Airmap/LifetimeChecker.h @@ -0,0 +1,29 @@ +/**************************************************************************** + * + * (c) 2009-2020 QGROUNDCONTROL PROJECT + * + * QGroundControl is licensed according to the terms in the file + * COPYING.md in the root of the source code directory. + * + ****************************************************************************/ + +#pragma once + +#include + +//----------------------------------------------------------------------------- +/** + * @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 _instance; +}; diff --git a/src/Airmap/QJsonWebToken/README.md b/src/Airmap/QJsonWebToken/README.md new file mode 100644 index 0000000..8dd2a03 --- /dev/null +++ b/src/Airmap/QJsonWebToken/README.md @@ -0,0 +1,47 @@ +## Introduction + +QJsonWebToken : JWT (JSON Web Token) Implementation in Qt C++ + +This class implements a subset of the [JSON Web Token](https://en.wikipedia.org/wiki/JSON_Web_Token) +open standard [RFC 7519](https://tools.ietf.org/html/rfc7519). + +Currently this implementation **only supports** the following algorithms: + +Alg | Parameter Value Algorithm +----- | ------------------------------------ +HS256 | HMAC using SHA-256 hash algorithm +HS384 | HMAC using SHA-384 hash algorithm +HS512 | HMAC using SHA-512 hash algorithm + +### Include + +In order to include this class in your project, in the qt project **.pro** file add the lines: + +```cmake +HEADERS += ./src/qjsonwebtoken.h +SOURCES += ./src/qjsonwebtoken.cpp +``` + +### Usage + +The repository of this project includes examples that demonstrate the use of this class: + +* ```./examples/jwtcreator/``` : Example that shows how to create a JWT with your custom *payload*. + +* ```./examples/jwtverifier/``` : Example that shows how to validate a JWT with a given *secret*. + +### Limitations + +Currently, `QJsonWebToken` validator, can **only** validate tokens created by `QJsonWebToken` itself. This limitation is due to the usage of Qt's [QJsonDocument API](http://doc.qt.io/qt-5/qjsondocument.html), see [this issue for further explanation](https://github.com/juangburgos/QJsonWebToken/issues/3#issuecomment-333056575). + +### License + +MIT + +``` +The MIT License(MIT) +Copyright(c) <2016> +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files(the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and / or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions : +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +``` diff --git a/src/Airmap/QJsonWebToken/src/qjsonwebtoken.cpp b/src/Airmap/QJsonWebToken/src/qjsonwebtoken.cpp new file mode 100644 index 0000000..f207152 --- /dev/null +++ b/src/Airmap/QJsonWebToken/src/qjsonwebtoken.cpp @@ -0,0 +1,337 @@ +// The MIT License(MIT) +// Copyright(c) <2016> +// Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files(the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and / or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions : +// The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +#include "qjsonwebtoken.h" + +#include + +QJsonWebToken::QJsonWebToken() +{ + // create the header with default algorithm + setAlgorithmStr("HS256"); + m_jdocPayload = QJsonDocument::fromJson("{}"); + // default for random generation + m_intRandLength = 10; + m_strRandAlphanum = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"; +} + +QJsonWebToken::QJsonWebToken(const QJsonWebToken &other) +{ + this->m_jdocHeader = other.m_jdocHeader; + this->m_jdocPayload = other.m_jdocPayload; + this->m_byteSignature = other.m_byteSignature; + this->m_strSecret = other.m_strSecret; + this->m_strAlgorithm = other.m_strAlgorithm; +} + +QJsonDocument QJsonWebToken::getHeaderJDoc() +{ + return m_jdocHeader; +} + +QString QJsonWebToken::getHeaderQStr(QJsonDocument::JsonFormat format /*= QJsonDocument::JsonFormat::Indented*/) +{ + return m_jdocHeader.toJson(format); +} + +bool QJsonWebToken::setHeaderJDoc(QJsonDocument jdocHeader) +{ + if (jdocHeader.isEmpty() || jdocHeader.isNull() || !jdocHeader.isObject()) + { + return false; + } + + // check if supported algorithm + QString strAlgorithm = jdocHeader.object().value("alg").toString(); + if (!isAlgorithmSupported(strAlgorithm)) + { + return false; + } + + m_jdocHeader = jdocHeader; + + // set also new algorithm + m_strAlgorithm = strAlgorithm; + + return true; +} + +bool QJsonWebToken::setHeaderQStr(QString strHeader) +{ + QJsonParseError error; + QJsonDocument tmpHeader = QJsonDocument::fromJson(strHeader.toUtf8(), &error); + + // validate and set header + if (error.error != QJsonParseError::NoError || !setHeaderJDoc(tmpHeader)) + { + return false; + } + + return true; +} + +QJsonDocument QJsonWebToken::getPayloadJDoc() +{ + return m_jdocPayload; +} + +QString QJsonWebToken::getPayloadQStr(QJsonDocument::JsonFormat format /*= QJsonDocument::JsonFormat::Indented*/) +{ + return m_jdocPayload.toJson(format); +} + +bool QJsonWebToken::setPayloadJDoc(QJsonDocument jdocPayload) +{ + if (jdocPayload.isEmpty() || jdocPayload.isNull() || !jdocPayload.isObject()) + { + return false; + } + + m_jdocPayload = jdocPayload; + + return true; +} + +bool QJsonWebToken::setPayloadQStr(QString strPayload) +{ + QJsonParseError error; + QJsonDocument tmpPayload = QJsonDocument::fromJson(strPayload.toUtf8(), &error); + + // validate and set payload + if (error.error != QJsonParseError::NoError || !setPayloadJDoc(tmpPayload)) + { + return false; + } + + return true; +} + +QByteArray QJsonWebToken::getSignature() +{ + // recalculate + // get header in compact mode and base64 encoded + QByteArray byteHeaderBase64 = getHeaderQStr(QJsonDocument::JsonFormat::Compact).toUtf8().toBase64(); + // get payload in compact mode and base64 encoded + QByteArray bytePayloadBase64 = getPayloadQStr(QJsonDocument::JsonFormat::Compact).toUtf8().toBase64(); + // calculate signature based on chosen algorithm and secret + m_byteAllData = byteHeaderBase64 + "." + bytePayloadBase64; + if (m_strAlgorithm.compare("HS256", Qt::CaseInsensitive) == 0) // HMAC using SHA-256 hash algorithm + { + m_byteSignature = QMessageAuthenticationCode::hash(m_byteAllData, m_strSecret.toUtf8(), QCryptographicHash::Sha256); + } + else if (m_strAlgorithm.compare("HS384", Qt::CaseInsensitive) == 0) // HMAC using SHA-384 hash algorithm + { + m_byteSignature = QMessageAuthenticationCode::hash(m_byteAllData, m_strSecret.toUtf8(), QCryptographicHash::Sha384); + } + else if (m_strAlgorithm.compare("HS512", Qt::CaseInsensitive) == 0) // HMAC using SHA-512 hash algorithm + { + m_byteSignature = QMessageAuthenticationCode::hash(m_byteAllData, m_strSecret.toUtf8(), QCryptographicHash::Sha512); + } + // TODO : support other algorithms + else + { + m_byteSignature = QByteArray(); + } + // return recalculated + return m_byteSignature; +} + +QByteArray QJsonWebToken::getSignatureBase64() +{ + // note we return through getSignature() to force recalculation + return getSignature().toBase64(); +} + +QString QJsonWebToken::getSecret() +{ + return m_strSecret; +} + +bool QJsonWebToken::setSecret(QString strSecret) +{ + if (strSecret.isEmpty() || strSecret.isNull()) + { + return false; + } + + m_strSecret = strSecret; + + return true; +} + +void QJsonWebToken::setRandomSecret() +{ + m_strSecret.resize(m_intRandLength); + for (int i = 0; i < m_intRandLength; ++i) + { + m_strSecret[i] = m_strRandAlphanum.at(rand() % (m_strRandAlphanum.length() - 1)); + } +} + +QString QJsonWebToken::getAlgorithmStr() +{ + return m_strAlgorithm; +} + +bool QJsonWebToken::setAlgorithmStr(QString strAlgorithm) +{ + // check if supported algorithm + if (!isAlgorithmSupported(strAlgorithm)) + { + return false; + } + // set algorithm + m_strAlgorithm = strAlgorithm; + // modify header + m_jdocHeader = QJsonDocument::fromJson(QStringLiteral("{\"typ\": \"JWT\", \"alg\" : \"").toUtf8() + + m_strAlgorithm.toUtf8() + + QStringLiteral("\"}").toUtf8()); + + return true; +} + +QString QJsonWebToken::getToken() +{ + // important to execute first to update m_byteAllData which contains header + "." + payload in base64 + QByteArray byteSignatureBase64 = getSignatureBase64(); + // compose token and return it + return m_byteAllData + "." + byteSignatureBase64; +} + +bool QJsonWebToken::setToken(QString strToken) +{ + // assume base64 encoded at first, if not try decoding + bool isBase64Encoded = true; + QStringList listJwtParts = strToken.split("."); + // check correct size + if (listJwtParts.count() != 3) + { + return false; + } + // check all parts are valid using another instance, + // so we dont overwrite this instance in case of error + QJsonWebToken tempTokenObj; + if ( !tempTokenObj.setHeaderQStr(QByteArray::fromBase64(listJwtParts.at(0).toUtf8())) || + !tempTokenObj.setPayloadQStr(QByteArray::fromBase64(listJwtParts.at(1).toUtf8())) ) + { + // try unencoded + if (!tempTokenObj.setHeaderQStr(listJwtParts.at(0)) || + !tempTokenObj.setPayloadQStr(listJwtParts.at(1))) + { + return false; + } + else + { + isBase64Encoded = false; + } + } + // set parts on this instance + setHeaderQStr(tempTokenObj.getHeaderQStr()); + setPayloadQStr(tempTokenObj.getPayloadQStr()); + if (isBase64Encoded) + { // unencode + m_byteSignature = QByteArray::fromBase64(listJwtParts.at(2).toUtf8()); + } + else + { + m_byteSignature = listJwtParts.at(2).toUtf8(); + } + // allData not valid anymore + m_byteAllData.clear(); + // success + return true; +} + +QString QJsonWebToken::getRandAlphanum() +{ + return m_strRandAlphanum; +} + +void QJsonWebToken::setRandAlphanum(QString strRandAlphanum) +{ + if(strRandAlphanum.isNull()) + { + return; + } + m_strRandAlphanum = strRandAlphanum; +} + +int QJsonWebToken::getRandLength() +{ + return m_intRandLength; +} + +void QJsonWebToken::setRandLength(int intRandLength) +{ + if(intRandLength < 0 || intRandLength > 1e6) + { + return; + } + m_intRandLength = intRandLength; +} + +bool QJsonWebToken::isValid() +{ + // calculate token on other instance, + // so we dont overwrite this instance's signature + QJsonWebToken tempTokenObj = *this; + if (m_byteSignature != tempTokenObj.getSignature()) + { + return false; + } + return true; +} + +QJsonWebToken QJsonWebToken::fromTokenAndSecret(QString strToken, QString srtSecret) +{ + QJsonWebToken tempTokenObj; + // set Token + tempTokenObj.setToken(strToken); + // set Secret + tempTokenObj.setSecret(srtSecret); + // return + return tempTokenObj; +} + +void QJsonWebToken::appendClaim(QString strClaimType, QString strValue) +{ + // have to make a copy of the json object, modify the copy and then put it back, sigh + QJsonObject jObj = m_jdocPayload.object(); + jObj.insert(strClaimType, strValue); + m_jdocPayload = QJsonDocument(jObj); +} + +void QJsonWebToken::removeClaim(QString strClaimType) +{ + // have to make a copy of the json object, modify the copy and then put it back, sigh + QJsonObject jObj = m_jdocPayload.object(); + jObj.remove(strClaimType); + m_jdocPayload = QJsonDocument(jObj); +} + +bool QJsonWebToken::isAlgorithmSupported(QString strAlgorithm) +{ + // TODO : support other algorithms + if (strAlgorithm.compare("HS256", Qt::CaseInsensitive) != 0 && // HMAC using SHA-256 hash algorithm + strAlgorithm.compare("HS384", Qt::CaseInsensitive) != 0 && // HMAC using SHA-384 hash algorithm + strAlgorithm.compare("HS512", Qt::CaseInsensitive) != 0 /*&& // HMAC using SHA-512 hash algorithm + strAlgorithm.compare("RS256", Qt::CaseInsensitive) != 0 && // RSA using SHA-256 hash algorithm + strAlgorithm.compare("RS384", Qt::CaseInsensitive) != 0 && // RSA using SHA-384 hash algorithm + strAlgorithm.compare("RS512", Qt::CaseInsensitive) != 0 && // RSA using SHA-512 hash algorithm + strAlgorithm.compare("ES256", Qt::CaseInsensitive) != 0 && // ECDSA using P-256 curve and SHA-256 hash algorithm + strAlgorithm.compare("ES384", Qt::CaseInsensitive) != 0 && // ECDSA using P-384 curve and SHA-384 hash algorithm + strAlgorithm.compare("ES512", Qt::CaseInsensitive) != 0*/) // ECDSA using P-521 curve and SHA-512 hash algorithm + { + return false; + } + return true; +} + +QStringList QJsonWebToken::supportedAlgorithms() +{ + // TODO : support other algorithms + return QStringList() << "HS256" << "HS384" << "HS512"; +} diff --git a/src/Airmap/QJsonWebToken/src/qjsonwebtoken.h b/src/Airmap/QJsonWebToken/src/qjsonwebtoken.h new file mode 100644 index 0000000..63482c0 --- /dev/null +++ b/src/Airmap/QJsonWebToken/src/qjsonwebtoken.h @@ -0,0 +1,404 @@ +/** +\file +\version 1.0 +\date 22/06/2016 +\author JGB +\brief JWT (JSON Web Token) Implementation in Qt C++ +*/ + +// The MIT License(MIT) +// Copyright(c) <2016> +// Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files(the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and / or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions : +// The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +#ifndef QJSONWEBTOKEN_H +#define QJSONWEBTOKEN_H + +#include +#include +#include +#include + +/** + +\brief QJsonWebToken : JWT (JSON Web Token) Implementation in Qt C++ + +## Introduction + +This class implements a subset of the [JSON Web Token](https://en.wikipedia.org/wiki/JSON_Web_Token) +open standard [RFC 7519](https://tools.ietf.org/html/rfc7519). + +Currently this implementation only supports the following algorithms: + +Alg | Parameter Value Algorithm +----- | ------------------------------------ +HS256 | HMAC using SHA-256 hash algorithm +HS384 | HMAC using SHA-384 hash algorithm +HS512 | HMAC using SHA-512 hash algorithm + +### Include + +In order to include this class in your project, in the qt project **.pro** file add the lines: + +``` +HEADERS += ./src/qjsonwebtoken.h +SOURCES += ./src/qjsonwebtoken.cpp +``` + +### Usage + +The repository of this project includes examples that demonstrate the use of this class: + +* ./examples/jwtcreator/ : Example that shows how to create a JWT with your custom *payload*. + +* ./examples/jwtverifier/ : Example that shows how to validate a JWT with a given *secret*. + +*/ +class QJsonWebToken +{ + +public: + + /** + + \brief Constructor. + \return A new instance of QJsonWebToken. + + Creates a default QJsonWebToken instance with *HS256 algorithm*, empty *payload* + and empty *secret*. + + */ + QJsonWebToken(); // TODO : improve with params + + /** + + \brief Copy Construtor. + \param other Other QJsonWebToken to copy from. + \return A new instance of QJsonWebToken with same contents as the *other* instance. + + Copies to the new instance the JWT *header*, *payload*, *signature*, *secret* and *algorithm*. + + */ + QJsonWebToken(const QJsonWebToken &other); + + /** + + \brief Returns the JWT *header* as a QJsonDocument. + \return JWT *header* as a QJsonDocument. + + */ + QJsonDocument getHeaderJDoc(); + + /** + + \brief Returns the JWT *header* as a QString. + \param format Defines the format of the JSON returned. + \return JWT *header* as a QString. + + Format can be *QJsonDocument::JsonFormat::Indented* or *QJsonDocument::JsonFormat::Compact* + + */ + QString getHeaderQStr(QJsonDocument::JsonFormat format = QJsonDocument::JsonFormat::Indented); + + /** + + \brief Sets the JWT *header* from a QJsonDocument. + \param jdocHeader JWT *header* as a QJsonDocument. + \return true if the header was set, false if the header was not set. + + This method checks for a valid header format and returns false if the header is invalid. + + */ + bool setHeaderJDoc(QJsonDocument jdocHeader); + + /** + + \brief Sets the JWT *header* from a QString. + \param jdocHeader JWT *header* as a QString. + \return true if the header was set, false if the header was not set. + + This method checks for a valid header format and returns false if the header is invalid. + + */ + bool setHeaderQStr(QString strHeader); + + /** + + \brief Returns the JWT *payload* as a QJsonDocument. + \return JWT *payload* as a QJsonDocument. + + */ + QJsonDocument getPayloadJDoc(); + + /** + + \brief Returns the JWT *payload* as a QString. + \param format Defines the format of the JSON returned. + \return JWT *payload* as a QString. + + Format can be *QJsonDocument::JsonFormat::Indented* or *QJsonDocument::JsonFormat::Compact* + + */ + QString getPayloadQStr(QJsonDocument::JsonFormat format = QJsonDocument::JsonFormat::Indented); + + /** + + \brief Sets the JWT *payload* from a QJsonDocument. + \param jdocHeader JWT *payload* as a QJsonDocument. + \return true if the payload was set, false if the payload was not set. + + This method checks for a valid payload format and returns false if the payload is invalid. + + */ + bool setPayloadJDoc(QJsonDocument jdocPayload); + + /** + + \brief Sets the JWT *payload* from a QString. + \param jdocHeader JWT *payload* as a QString. + \return true if the payload was set, false if the payload was not set. + + This method checks for a valid payload format and returns false if the payload is invalid. + + */ + bool setPayloadQStr(QString strPayload); + + /** + + \brief Returns the JWT *signature* as a QByteArray. + \return JWT *signature* as a decoded QByteArray. + + Recalculates the JWT signature given the current *header*, *payload*, *algorithm* and + *secret*. + + \warning This method overwrites the old signature internally. This could be undesired when + the signature was obtained by copying from another QJsonWebToken using the copy constructor. + + */ + QByteArray getSignature(); // WARNING overwrites signature + + /** + + \brief Returns the JWT *signature* as a QByteArray. + \return JWT *signature* as a **base64 encoded** QByteArray. + + Recalculates the JWT signature given the current *header*, *payload*, *algorithm* and + *secret*. Then encodes the calculated signature using base64 encoding. + + \warning This method overwrites the old signature internally. This could be undesired when + the signature was obtained by copying from another QJsonWebToken using the copy constructor. + + */ + QByteArray getSignatureBase64(); // WARNING overwrites signature + + /** + + \brief Returns the JWT *secret* as a QString. + \return JWT *secret* as a QString. + + */ + QString getSecret(); + + /** + + \brief Sets the JWT *secret* from a QString. + \param strSecret JWT *secret* as a QString. + \return true if the secret was set, false if the secret was not set. + + This method checks for a valid secret format and returns false if the secret is invalid. + + */ + bool setSecret(QString strSecret); + + /** + + \brief Creates and sets a random secret. + + This method creates a random secret with the length defined by QJsonWebToken::getRandLength(), + and the characters defined by QJsonWebToken::getRandAlphanum(). + + \sa QJsonWebToken::getRandLength(). + \sa QJsonWebToken::getRandAlphanum(). + + */ + void setRandomSecret(); + + /** + + \brief Returns the JWT *algorithm* as a QString. + \return JWT *algorithm* as a QString. + + */ + QString getAlgorithmStr(); + + /** + + \brief Sets the JWT *algorithm* from a QString. + \param strAlgorithm JWT *algorithm* as a QString. + \return true if the algorithm was set, false if the algorithm was not set. + + This method checks for a valid supported algorithm. Valid values are: + + "HS256", "HS384" and "HS512". + + \sa QJsonWebToken::supportedAlgorithms(). + + */ + bool setAlgorithmStr(QString strAlgorithm); + + /** + + \brief Returns the complete JWT as a QString. + \return Complete JWT as a QString. + + The token has the form: + + ``` + xxxxx.yyyyy.zzzzz + ``` + + where: + + - *xxxxx* is the *header* enconded in base64. + - *yyyyy* is the *payload* enconded in base64. + - *zzzzz* is the *signature* enconded in base64. + + */ + QString getToken(); + + /** + + \brief Sets the complete JWT as a QString. + \param strToken Complete JWT as a QString. + \return true if the complete JWT was set, false if not set. + + This method checks for a valid JWT format. It overwrites the *header*, + *payload* , *signature* and *algorithm*. It does **not** overwrite the secret. + + \sa QJsonWebToken::getToken(). + + */ + bool setToken(QString strToken); + + /** + + \brief Returns the current set of characters used to create random secrets. + \return Set of characters as a QString. + + The default value is "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"; + + \sa QJsonWebToken::setRandomSecret() + \sa QJsonWebToken::setRandAlphanum() + + */ + QString getRandAlphanum(); + + /** + + \brief Sets the current set of characters used to create random secrets. + \param strRandAlphanum Set of characters as a QString. + + \sa QJsonWebToken::setRandomSecret() + \sa QJsonWebToken::getRandAlphanum() + + */ + void setRandAlphanum(QString strRandAlphanum); + + /** + + \brief Returns the current length used to create random secrets. + \return Length of random secret as a QString. + + The default value is 10; + + \sa QJsonWebToken::setRandomSecret() + \sa QJsonWebToken::setRandLength() + + */ + int getRandLength(); + + /** + + \brief Sets the current length used to create random secrets. + \param intRandLength Length of random secret. + + \sa QJsonWebToken::setRandomSecret() + \sa QJsonWebToken::getRandLength() + + */ + void setRandLength(int intRandLength); + + /** + + \brief Checks validity of current JWT with respect to secret. + \return true if the JWT is valid with respect to secret, else false. + + Uses the current *secret* to calculate a temporary *signature* and compares it to the + current signature to check if they are the same. If they are, true is returned, if not then + false is returned. + + */ + bool isValid(); + + /** + + \brief Creates a QJsonWebToken instance from the complete JWT and a secret. + \param strToken Complete JWT as a QString. + \param srtSecret Secret as a QString. + \return Instance of QJsonWebToken. + + The JWT provided must have a valid format, else a QJsonWebToken instance with default + values will be returned. + + */ + static QJsonWebToken fromTokenAndSecret(QString strToken, QString srtSecret); + + /** + + \brief Returns a list of the supported algorithms. + \return List of supported algorithms as a QStringList. + + */ + static QStringList supportedAlgorithms(); + + /** + + \brief Convenience method to append a claim to the *payload*. + \param strClaimType The claim type as a QString. + \param strValue The value type as a QString. + + Both parameters must be non-empty. If the claim type already exists, the current + claim value is updated. + + */ + void appendClaim(QString strClaimType, QString strValue); + + /** + + \brief Convenience method to remove a claim from the *payload*. + \param strClaimType The claim type as a QString. + + If the claim type does not exist in the *payload*, then this method does nothins. + + */ + void removeClaim(QString strClaimType); + +private: + // properties + QJsonDocument m_jdocHeader; // unencoded + QJsonDocument m_jdocPayload; // unencoded + QByteArray m_byteSignature; // unencoded + QString m_strSecret; + QString m_strAlgorithm; + + int m_intRandLength ; + QString m_strRandAlphanum; + + // helpers + QByteArray m_byteAllData; + + bool isAlgorithmSupported(QString strAlgorithm); +}; + +#endif // QJSONWEBTOKEN_H diff --git a/src/Airmap/QJsonWebToken/src/qjsonwebtoken.pri b/src/Airmap/QJsonWebToken/src/qjsonwebtoken.pri new file mode 100644 index 0000000..3efe5d6 --- /dev/null +++ b/src/Airmap/QJsonWebToken/src/qjsonwebtoken.pri @@ -0,0 +1,7 @@ +CONFIG -= flat + +INCLUDEPATH += $$PWD/ + +SOURCES += $$PWD/qjsonwebtoken.cpp + +HEADERS += $$PWD/qjsonwebtoken.h diff --git a/src/Airmap/README.md b/src/Airmap/README.md new file mode 100644 index 0000000..14e0027 --- /dev/null +++ b/src/Airmap/README.md @@ -0,0 +1,2 @@ +## Work in Progress + diff --git a/src/Airmap/RuleSelector.qml b/src/Airmap/RuleSelector.qml new file mode 100644 index 0000000..dd88b33 --- /dev/null +++ b/src/Airmap/RuleSelector.qml @@ -0,0 +1,55 @@ +import QtQuick 2.11 +import QtQuick.Controls 2.4 + +import QGroundControl 1.0 +import QGroundControl.ScreenTools 1.0 +import QGroundControl.Controls 1.0 +import QGroundControl.Palette 1.0 +import QGroundControl.Airmap 1.0 +import QGroundControl.SettingsManager 1.0 + +Button { + id: _root + autoExclusive: false + height: ScreenTools.defaultFontPixelHeight + background: Rectangle { + anchors.fill: parent + color: _selected ? qgcPal.windowShade : qgcPal.window + } + property var rule: null + property bool _selected: { + if (autoExclusive) { + return checked + } else { + return rule ? rule.selected : false + } + } + onCheckedChanged: { + rule.selected = checked + } + contentItem: Row { + id: ruleRow + spacing: ScreenTools.defaultFontPixelWidth + anchors.right: parent.right + anchors.left: parent.left + anchors.verticalCenter: parent.verticalCenter + Rectangle { + width: ScreenTools.defaultFontPixelWidth * 0.75 + height: ScreenTools.defaultFontPixelHeight + color: _selected ? qgcPal.colorGreen : qgcPal.window + anchors.verticalCenter: parent.verticalCenter + } + QGCLabel { + text: rule ? (rule.name === "" ? rule.shortName : rule.name) : "" + font.pointSize: ScreenTools.smallFontPointSize + anchors.verticalCenter: parent.verticalCenter + } + } + onClicked: { + if (autoExclusive) { + checked = true + } else { + rule.selected = !rule.selected + } + } +} diff --git a/src/Airmap/airmap.qrc b/src/Airmap/airmap.qrc new file mode 100644 index 0000000..07e71bf --- /dev/null +++ b/src/Airmap/airmap.qrc @@ -0,0 +1,59 @@ + + + AirmapSettings.qml + AirspaceControl.qml + AirspaceRegulation.qml + AirspaceWeather.qml + ComplianceRules.qml + FlightBrief.qml + FlightDetails.qml + FlightFeature.qml + ../QmlControls/QGroundControl/Airmap/qmldir + RuleSelector.qml + + + AirMap.SettingsGroup.json + + + images/advisory-icon.svg + images/colapse.svg + images/expand.svg + images/pencil.svg + images/right-arrow.svg + images/unavailable.svg + + + images/weather-icons/clear.svg + images/weather-icons/sunny.svg + images/weather-icons/cloudy.svg + images/weather-icons/cloudy_wind.svg + images/weather-icons/drizzle.svg + images/weather-icons/drizzle_day.svg + images/weather-icons/drizzle_night.svg + images/weather-icons/foggy.svg + images/weather-icons/frigid.svg + images/weather-icons/hail.svg + images/weather-icons/heavy_rain.svg + images/weather-icons/hurricane.svg + images/weather-icons/isolated_thunderstorms.svg + images/weather-icons/mostly_clear.svg + images/weather-icons/mostly_cloudy_day.svg + images/weather-icons/mostly_cloudy_night.svg + images/weather-icons/mostly_sunny.svg + images/weather-icons/partly_cloudy_day.svg + images/weather-icons/partly_cloudy_night.svg + images/weather-icons/rain.svg + images/weather-icons/rain_snow.svg + images/weather-icons/scattered_snow_showers_day.svg + images/weather-icons/scattered_snow_showers_night.svg + images/weather-icons/scattered_thunderstorms_day.svg + images/weather-icons/scattered_thunderstorms_night.svg + images/weather-icons/snow.svg + images/weather-icons/snow_storm.svg + images/weather-icons/sunny.svg + images/weather-icons/thunderstorm.svg + images/weather-icons/tornado.svg + images/weather-icons/unknown.svg + images/weather-icons/windy.svg + + diff --git a/src/Airmap/dummy/AirspaceControl.qml b/src/Airmap/dummy/AirspaceControl.qml new file mode 100644 index 0000000..ca9b339 --- /dev/null +++ b/src/Airmap/dummy/AirspaceControl.qml @@ -0,0 +1,6 @@ +import QtQuick 2.3 +Item { + property bool colapsed: true + property bool showColapse: false + property bool planView: false +} diff --git a/src/Airmap/dummy/AirspaceManager.cc b/src/Airmap/dummy/AirspaceManager.cc new file mode 100644 index 0000000..2f99417 --- /dev/null +++ b/src/Airmap/dummy/AirspaceManager.cc @@ -0,0 +1,35 @@ +/**************************************************************************** + * + * (c) 2009-2020 QGROUNDCONTROL PROJECT + * + * QGroundControl is licensed according to the terms in the file + * COPYING.md in the root of the source code directory. + * + ****************************************************************************/ + + +#include "AirspaceManager.h" +#include "QGCApplication.h" + +AirspaceManager::AirspaceManager(QGCApplication* app, QGCToolbox* toolbox) + : QGCTool(app, toolbox) +{ + qmlRegisterUncreatableType ("QGroundControl.Airspace", 1, 0, "AirspaceManager", "Reference only"); +} + +AirspaceManager::~AirspaceManager() +{ +} + +void AirspaceManager::setToolbox(QGCToolbox* toolbox) +{ + QGCTool::setToolbox(toolbox); +} + +void AirspaceManager::setROI(const QGeoCoordinate& pointNW, const QGeoCoordinate& pointSE, bool planView, bool reset) +{ + Q_UNUSED(pointNW); + Q_UNUSED(pointSE); + Q_UNUSED(planView); + Q_UNUSED(reset) +} diff --git a/src/Airmap/dummy/AirspaceManager.h b/src/Airmap/dummy/AirspaceManager.h new file mode 100644 index 0000000..546bef6 --- /dev/null +++ b/src/Airmap/dummy/AirspaceManager.h @@ -0,0 +1,58 @@ +/**************************************************************************** + * + * (c) 2009-2020 QGROUNDCONTROL PROJECT + * + * QGroundControl is licensed according to the terms in the file + * COPYING.md in the root of the source code directory. + * + ****************************************************************************/ + +#pragma once + +/** + * @file AirspaceManager.h + * Dummy file for when airspace management is disabled + */ + +#include "QGCToolbox.h" +#include + +//----------------------------------------------------------------------------- +/** + * @class AirspaceManager + * Base class for airspace management. There is one (global) instantiation of this + */ +class AirspaceManager : public QGCTool { + Q_OBJECT +public: + AirspaceManager(QGCApplication* app, QGCToolbox* toolbox); + virtual ~AirspaceManager() override; + + Q_PROPERTY(QString providerName READ providerName CONSTANT) + Q_PROPERTY(QObject* weatherInfo READ weatherInfo CONSTANT) + Q_PROPERTY(QObject* advisories READ advisories CONSTANT) + Q_PROPERTY(QObject* ruleSets READ ruleSets CONSTANT) + Q_PROPERTY(QObject* airspaces READ airspaces CONSTANT) + Q_PROPERTY(QObject* flightPlan READ flightPlan CONSTANT) + Q_PROPERTY(bool airspaceVisible READ airspaceVisible CONSTANT) + + Q_INVOKABLE void setROI (const QGeoCoordinate& pointNW, const QGeoCoordinate& pointSE, bool planView, bool reset = false); + + QObject* weatherInfo () { return &_dummy; } + QObject* advisories () { return &_dummy; } + QObject* ruleSets () { return &_dummy; } + QObject* airspaces () { return &_dummy; } + QObject* flightPlan () { return &_dummy; } + + void setToolbox(QGCToolbox* toolbox) override; + + virtual QString providerName () const { return QString("None"); } + + virtual bool airspaceVisible () { return false; } + +signals: + void airspaceVisibleChanged (); + +private: + QObject _dummy; +}; diff --git a/src/Airmap/dummy/AirspaceRegulation.qml b/src/Airmap/dummy/AirspaceRegulation.qml new file mode 100644 index 0000000..9009b3f --- /dev/null +++ b/src/Airmap/dummy/AirspaceRegulation.qml @@ -0,0 +1,3 @@ +import QtQuick 2.3 +Item { +} diff --git a/src/Airmap/dummy/AirspaceWeather.qml b/src/Airmap/dummy/AirspaceWeather.qml new file mode 100644 index 0000000..a48aacc --- /dev/null +++ b/src/Airmap/dummy/AirspaceWeather.qml @@ -0,0 +1,4 @@ +import QtQuick 2.3 +Item { + property var iconHeight: 0 +} diff --git a/src/Airmap/dummy/ComplianceRules.qml b/src/Airmap/dummy/ComplianceRules.qml new file mode 100644 index 0000000..5c0536c --- /dev/null +++ b/src/Airmap/dummy/ComplianceRules.qml @@ -0,0 +1,5 @@ +import QtQuick 2.3 + +Item { + +} diff --git a/src/Airmap/dummy/FlightBrief.qml b/src/Airmap/dummy/FlightBrief.qml new file mode 100644 index 0000000..5c0536c --- /dev/null +++ b/src/Airmap/dummy/FlightBrief.qml @@ -0,0 +1,5 @@ +import QtQuick 2.3 + +Item { + +} diff --git a/src/Airmap/dummy/FlightDetails.qml b/src/Airmap/dummy/FlightDetails.qml new file mode 100644 index 0000000..5c0536c --- /dev/null +++ b/src/Airmap/dummy/FlightDetails.qml @@ -0,0 +1,5 @@ +import QtQuick 2.3 + +Item { + +} diff --git a/src/Airmap/dummy/FlightFeature.qml b/src/Airmap/dummy/FlightFeature.qml new file mode 100644 index 0000000..5c0536c --- /dev/null +++ b/src/Airmap/dummy/FlightFeature.qml @@ -0,0 +1,5 @@ +import QtQuick 2.3 + +Item { + +} diff --git a/src/Airmap/dummy/QGroundControl.Airmap.qmldir b/src/Airmap/dummy/QGroundControl.Airmap.qmldir new file mode 100644 index 0000000..0196743 --- /dev/null +++ b/src/Airmap/dummy/QGroundControl.Airmap.qmldir @@ -0,0 +1,5 @@ +Module QGroundControl.Airmap + +AirspaceControl 1.0 AirspaceControl.qml +AirspaceRegulation 1.0 AirspaceRegulation.qml +AirspaceWeather 1.0 AirspaceWeather.qml diff --git a/src/Airmap/dummy/RuleSelector.qml b/src/Airmap/dummy/RuleSelector.qml new file mode 100644 index 0000000..5c0536c --- /dev/null +++ b/src/Airmap/dummy/RuleSelector.qml @@ -0,0 +1,5 @@ +import QtQuick 2.3 + +Item { + +} diff --git a/src/Airmap/dummy/airmap_dummy.qrc b/src/Airmap/dummy/airmap_dummy.qrc new file mode 100644 index 0000000..ea38277 --- /dev/null +++ b/src/Airmap/dummy/airmap_dummy.qrc @@ -0,0 +1,13 @@ + + + QGroundControl.Airmap.qmldir + AirspaceControl.qml + AirspaceRegulation.qml + AirspaceWeather.qml + ComplianceRules.qml + FlightBrief.qml + FlightDetails.qml + FlightFeature.qml + RuleSelector.qml + + diff --git a/src/Airmap/images/advisory-icon.svg b/src/Airmap/images/advisory-icon.svg new file mode 100644 index 0000000..9141d18 --- /dev/null +++ b/src/Airmap/images/advisory-icon.svg @@ -0,0 +1,21 @@ + + + + +Page 1 +Created with Sketch. + + + + + + diff --git a/src/Airmap/images/colapse.svg b/src/Airmap/images/colapse.svg new file mode 100644 index 0000000..bf33cf0 --- /dev/null +++ b/src/Airmap/images/colapse.svg @@ -0,0 +1,9 @@ + + + + + + diff --git a/src/Airmap/images/expand.svg b/src/Airmap/images/expand.svg new file mode 100644 index 0000000..196447d --- /dev/null +++ b/src/Airmap/images/expand.svg @@ -0,0 +1,9 @@ + + + + + + diff --git a/src/Airmap/images/pencil.svg b/src/Airmap/images/pencil.svg new file mode 100644 index 0000000..2b98ce6 --- /dev/null +++ b/src/Airmap/images/pencil.svg @@ -0,0 +1,17 @@ + + + + + + diff --git a/src/Airmap/images/right-arrow.svg b/src/Airmap/images/right-arrow.svg new file mode 100644 index 0000000..811093e --- /dev/null +++ b/src/Airmap/images/right-arrow.svg @@ -0,0 +1,9 @@ + + + + + + diff --git a/src/Airmap/images/unavailable.svg b/src/Airmap/images/unavailable.svg new file mode 100644 index 0000000..71a646b --- /dev/null +++ b/src/Airmap/images/unavailable.svg @@ -0,0 +1,8 @@ + + + + + diff --git a/src/Airmap/images/weather-icons/clear.svg b/src/Airmap/images/weather-icons/clear.svg new file mode 100755 index 0000000..5a34322 --- /dev/null +++ b/src/Airmap/images/weather-icons/clear.svg @@ -0,0 +1,12 @@ + + + + clear + Created with Sketch. + + + + + + + \ No newline at end of file diff --git a/src/Airmap/images/weather-icons/cloudy.svg b/src/Airmap/images/weather-icons/cloudy.svg new file mode 100755 index 0000000..33b8f68 --- /dev/null +++ b/src/Airmap/images/weather-icons/cloudy.svg @@ -0,0 +1,12 @@ + + + + cloudy + Created with Sketch. + + + + + + + \ No newline at end of file diff --git a/src/Airmap/images/weather-icons/cloudy_wind.svg b/src/Airmap/images/weather-icons/cloudy_wind.svg new file mode 100755 index 0000000..350f6bd --- /dev/null +++ b/src/Airmap/images/weather-icons/cloudy_wind.svg @@ -0,0 +1,12 @@ + + + + cloudy_wind + Created with Sketch. + + + + + + + \ No newline at end of file diff --git a/src/Airmap/images/weather-icons/drizzle.svg b/src/Airmap/images/weather-icons/drizzle.svg new file mode 100755 index 0000000..4e3b411 --- /dev/null +++ b/src/Airmap/images/weather-icons/drizzle.svg @@ -0,0 +1,12 @@ + + + + drizzle + Created with Sketch. + + + + + + + \ No newline at end of file diff --git a/src/Airmap/images/weather-icons/drizzle_day.svg b/src/Airmap/images/weather-icons/drizzle_day.svg new file mode 100755 index 0000000..62c8adc --- /dev/null +++ b/src/Airmap/images/weather-icons/drizzle_day.svg @@ -0,0 +1,12 @@ + + + + drizzle_day + Created with Sketch. + + + + + + + \ No newline at end of file diff --git a/src/Airmap/images/weather-icons/drizzle_night.svg b/src/Airmap/images/weather-icons/drizzle_night.svg new file mode 100755 index 0000000..7a95b95 --- /dev/null +++ b/src/Airmap/images/weather-icons/drizzle_night.svg @@ -0,0 +1,12 @@ + + + + drizzle_night + Created with Sketch. + + + + + + + \ No newline at end of file diff --git a/src/Airmap/images/weather-icons/foggy.svg b/src/Airmap/images/weather-icons/foggy.svg new file mode 100755 index 0000000..4c77893 --- /dev/null +++ b/src/Airmap/images/weather-icons/foggy.svg @@ -0,0 +1,18 @@ + + + + foggy + Created with Sketch. + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/Airmap/images/weather-icons/frigid.svg b/src/Airmap/images/weather-icons/frigid.svg new file mode 100755 index 0000000..3fbea9a --- /dev/null +++ b/src/Airmap/images/weather-icons/frigid.svg @@ -0,0 +1,13 @@ + + + + frigid + Created with Sketch. + + + + + + + + \ No newline at end of file diff --git a/src/Airmap/images/weather-icons/hail.svg b/src/Airmap/images/weather-icons/hail.svg new file mode 100755 index 0000000..58f3ede --- /dev/null +++ b/src/Airmap/images/weather-icons/hail.svg @@ -0,0 +1,12 @@ + + + + hail + Created with Sketch. + + + + + + + \ No newline at end of file diff --git a/src/Airmap/images/weather-icons/heavy_rain.svg b/src/Airmap/images/weather-icons/heavy_rain.svg new file mode 100755 index 0000000..c955fa1 --- /dev/null +++ b/src/Airmap/images/weather-icons/heavy_rain.svg @@ -0,0 +1,12 @@ + + + + heavy_rain + Created with Sketch. + + + + + + + \ No newline at end of file diff --git a/src/Airmap/images/weather-icons/hurricane.svg b/src/Airmap/images/weather-icons/hurricane.svg new file mode 100755 index 0000000..1a10107 --- /dev/null +++ b/src/Airmap/images/weather-icons/hurricane.svg @@ -0,0 +1,14 @@ + + + + hurricane + Created with Sketch. + + + + + + + + + \ No newline at end of file diff --git a/src/Airmap/images/weather-icons/isolated_thunderstorms.svg b/src/Airmap/images/weather-icons/isolated_thunderstorms.svg new file mode 100755 index 0000000..c486070 --- /dev/null +++ b/src/Airmap/images/weather-icons/isolated_thunderstorms.svg @@ -0,0 +1,12 @@ + + + + isolated_thunderstorms + Created with Sketch. + + + + + + + \ No newline at end of file diff --git a/src/Airmap/images/weather-icons/mostly_clear.svg b/src/Airmap/images/weather-icons/mostly_clear.svg new file mode 100755 index 0000000..9946586 --- /dev/null +++ b/src/Airmap/images/weather-icons/mostly_clear.svg @@ -0,0 +1,12 @@ + + + + mostly_clear + Created with Sketch. + + + + + + + \ No newline at end of file diff --git a/src/Airmap/images/weather-icons/mostly_cloudy_day.svg b/src/Airmap/images/weather-icons/mostly_cloudy_day.svg new file mode 100755 index 0000000..c820b41 --- /dev/null +++ b/src/Airmap/images/weather-icons/mostly_cloudy_day.svg @@ -0,0 +1,12 @@ + + + + mostly_cloudy_day + Created with Sketch. + + + + + + + \ No newline at end of file diff --git a/src/Airmap/images/weather-icons/mostly_cloudy_night.svg b/src/Airmap/images/weather-icons/mostly_cloudy_night.svg new file mode 100755 index 0000000..673b54c --- /dev/null +++ b/src/Airmap/images/weather-icons/mostly_cloudy_night.svg @@ -0,0 +1,12 @@ + + + + mostly_cloudy_night + Created with Sketch. + + + + + + + \ No newline at end of file diff --git a/src/Airmap/images/weather-icons/mostly_sunny.svg b/src/Airmap/images/weather-icons/mostly_sunny.svg new file mode 100755 index 0000000..047ccc4 --- /dev/null +++ b/src/Airmap/images/weather-icons/mostly_sunny.svg @@ -0,0 +1,12 @@ + + + + mostly_sunny + Created with Sketch. + + + + + + + \ No newline at end of file diff --git a/src/Airmap/images/weather-icons/partly_cloudy_day.svg b/src/Airmap/images/weather-icons/partly_cloudy_day.svg new file mode 100755 index 0000000..456db3b --- /dev/null +++ b/src/Airmap/images/weather-icons/partly_cloudy_day.svg @@ -0,0 +1,12 @@ + + + + partly_cloudy_day + Created with Sketch. + + + + + + + \ No newline at end of file diff --git a/src/Airmap/images/weather-icons/partly_cloudy_night.svg b/src/Airmap/images/weather-icons/partly_cloudy_night.svg new file mode 100755 index 0000000..79374a2 --- /dev/null +++ b/src/Airmap/images/weather-icons/partly_cloudy_night.svg @@ -0,0 +1,12 @@ + + + + partyly_cloudy_night + Created with Sketch. + + + + + + + \ No newline at end of file diff --git a/src/Airmap/images/weather-icons/rain.svg b/src/Airmap/images/weather-icons/rain.svg new file mode 100755 index 0000000..a7ee9ed --- /dev/null +++ b/src/Airmap/images/weather-icons/rain.svg @@ -0,0 +1,12 @@ + + + + rain + Created with Sketch. + + + + + + + \ No newline at end of file diff --git a/src/Airmap/images/weather-icons/rain_snow.svg b/src/Airmap/images/weather-icons/rain_snow.svg new file mode 100755 index 0000000..21c2f32 --- /dev/null +++ b/src/Airmap/images/weather-icons/rain_snow.svg @@ -0,0 +1,14 @@ + + + + rain_snow + Created with Sketch. + + + + + + + + + \ No newline at end of file diff --git a/src/Airmap/images/weather-icons/scattered_snow_showers_day.svg b/src/Airmap/images/weather-icons/scattered_snow_showers_day.svg new file mode 100755 index 0000000..ddaa563 --- /dev/null +++ b/src/Airmap/images/weather-icons/scattered_snow_showers_day.svg @@ -0,0 +1,14 @@ + + + + scattered_snow_showers_day + Created with Sketch. + + + + + + + + + \ No newline at end of file diff --git a/src/Airmap/images/weather-icons/scattered_snow_showers_night.svg b/src/Airmap/images/weather-icons/scattered_snow_showers_night.svg new file mode 100755 index 0000000..11cf9fc --- /dev/null +++ b/src/Airmap/images/weather-icons/scattered_snow_showers_night.svg @@ -0,0 +1,14 @@ + + + + scattered_snow_showers_night + Created with Sketch. + + + + + + + + + \ No newline at end of file diff --git a/src/Airmap/images/weather-icons/scattered_thunderstorms_day.svg b/src/Airmap/images/weather-icons/scattered_thunderstorms_day.svg new file mode 100755 index 0000000..22c68ef --- /dev/null +++ b/src/Airmap/images/weather-icons/scattered_thunderstorms_day.svg @@ -0,0 +1,13 @@ + + + + scattered_thunderstorms_day + Created with Sketch. + + + + + + + + \ No newline at end of file diff --git a/src/Airmap/images/weather-icons/scattered_thunderstorms_night.svg b/src/Airmap/images/weather-icons/scattered_thunderstorms_night.svg new file mode 100755 index 0000000..dd6c2e2 --- /dev/null +++ b/src/Airmap/images/weather-icons/scattered_thunderstorms_night.svg @@ -0,0 +1,12 @@ + + + + scattered_thunderstorms_night + Created with Sketch. + + + + + + + \ No newline at end of file diff --git a/src/Airmap/images/weather-icons/snow.svg b/src/Airmap/images/weather-icons/snow.svg new file mode 100755 index 0000000..26f3fcb --- /dev/null +++ b/src/Airmap/images/weather-icons/snow.svg @@ -0,0 +1,15 @@ + + + + snow + Created with Sketch. + + + + + + + + + + \ No newline at end of file diff --git a/src/Airmap/images/weather-icons/snow_storm.svg b/src/Airmap/images/weather-icons/snow_storm.svg new file mode 100755 index 0000000..1049f19 --- /dev/null +++ b/src/Airmap/images/weather-icons/snow_storm.svg @@ -0,0 +1,15 @@ + + + + snow_storm + Created with Sketch. + + + + + + + + + + \ No newline at end of file diff --git a/src/Airmap/images/weather-icons/sunny.svg b/src/Airmap/images/weather-icons/sunny.svg new file mode 100755 index 0000000..a5b2d49 --- /dev/null +++ b/src/Airmap/images/weather-icons/sunny.svg @@ -0,0 +1,12 @@ + + + + sunny + Created with Sketch. + + + + + + + \ No newline at end of file diff --git a/src/Airmap/images/weather-icons/thunderstorm.svg b/src/Airmap/images/weather-icons/thunderstorm.svg new file mode 100755 index 0000000..57973e8 --- /dev/null +++ b/src/Airmap/images/weather-icons/thunderstorm.svg @@ -0,0 +1,12 @@ + + + + thunderstorm + Created with Sketch. + + + + + + + \ No newline at end of file diff --git a/src/Airmap/images/weather-icons/tornado.svg b/src/Airmap/images/weather-icons/tornado.svg new file mode 100755 index 0000000..529b698 --- /dev/null +++ b/src/Airmap/images/weather-icons/tornado.svg @@ -0,0 +1,12 @@ + + + + tornado + Created with Sketch. + + + + + + + \ No newline at end of file diff --git a/src/Airmap/images/weather-icons/unknown.svg b/src/Airmap/images/weather-icons/unknown.svg new file mode 100644 index 0000000..4533afd --- /dev/null +++ b/src/Airmap/images/weather-icons/unknown.svg @@ -0,0 +1,14 @@ + + + +sunny +Created with Sketch. + + + + diff --git a/src/Airmap/images/weather-icons/windy.svg b/src/Airmap/images/weather-icons/windy.svg new file mode 100755 index 0000000..5b77480 --- /dev/null +++ b/src/Airmap/images/weather-icons/windy.svg @@ -0,0 +1,12 @@ + + + + windy + Created with Sketch. + + + + + + + \ No newline at end of file diff --git a/src/Airmap/services/advisory.cpp b/src/Airmap/services/advisory.cpp new file mode 100644 index 0000000..25724c2 --- /dev/null +++ b/src/Airmap/services/advisory.cpp @@ -0,0 +1,36 @@ +#include + +std::shared_ptr airmap::services::Advisory::create(const std::shared_ptr& dispatcher, + const std::shared_ptr& client) { + return std::shared_ptr{new Advisory{dispatcher, client}}; +} + +airmap::services::Advisory::Advisory(const std::shared_ptr& dispatcher, + const std::shared_ptr& client) + : dispatcher_{dispatcher}, client_{client} { +} + +void airmap::services::Advisory::for_id(const ForId::Parameters& parameters, const ForId::Callback& cb) { + dispatcher_->dispatch_to_airmap([this, sp = shared_from_this(), parameters, cb]() { + sp->client_->advisory().for_id(parameters, [this, sp, cb](const auto& result) { + sp->dispatcher_->dispatch_to_qt([sp, result, cb]() { cb(result); }); + }); + }); +} + +void airmap::services::Advisory::search(const Search::Parameters& parameters, const Search::Callback& cb) { + dispatcher_->dispatch_to_airmap([this, sp = shared_from_this(), parameters, cb]() { + sp->client_->advisory().search(parameters, [this, sp, cb](const auto& result) { + sp->dispatcher_->dispatch_to_qt([sp, result, cb]() { cb(result); }); + }); + }); +} + +void airmap::services::Advisory::report_weather(const ReportWeather::Parameters& parameters, + const ReportWeather::Callback& cb) { + dispatcher_->dispatch_to_airmap([this, sp = shared_from_this(), parameters, cb]() { + sp->client_->advisory().report_weather(parameters, [this, sp, cb](const auto& result) { + sp->dispatcher_->dispatch_to_qt([sp, result, cb]() { cb(result); }); + }); + }); +} diff --git a/src/Airmap/services/advisory.h b/src/Airmap/services/advisory.h new file mode 100644 index 0000000..5c58144 --- /dev/null +++ b/src/Airmap/services/advisory.h @@ -0,0 +1,29 @@ +#ifndef AIRMAP_QT_ADVISORY_H_ +#define AIRMAP_QT_ADVISORY_H_ + +#include +#include +#include "dispatcher.h" + +namespace airmap { +namespace services { + +class Advisory : public airmap::Advisory, public std::enable_shared_from_this { + public: + static std::shared_ptr create(const std::shared_ptr& dispatcher, + const std::shared_ptr& client); + + void for_id(const ForId::Parameters& parameters, const ForId::Callback& cb) override; + void search(const Search::Parameters& parameters, const Search::Callback& cb) override; + void report_weather(const ReportWeather::Parameters& parameters, const ReportWeather::Callback& cb) override; + + private: + explicit Advisory(const std::shared_ptr& dispatcher, const std::shared_ptr& client); + std::shared_ptr dispatcher_; + std::shared_ptr client_; +}; + +} // namespace qt +} // namespace airmap + +#endif // AIRMAP_QT_ADVISORY_H_ diff --git a/src/Airmap/services/aircrafts.cpp b/src/Airmap/services/aircrafts.cpp new file mode 100644 index 0000000..d086966 --- /dev/null +++ b/src/Airmap/services/aircrafts.cpp @@ -0,0 +1,36 @@ +#include + +std::shared_ptr airmap::services::Aircrafts::create(const std::shared_ptr& dispatcher, + const std::shared_ptr& client) { + return std::shared_ptr{new Aircrafts{dispatcher, client}}; +} + +airmap::services::Aircrafts::Aircrafts(const std::shared_ptr& dispatcher, + const std::shared_ptr& client) + : dispatcher_{dispatcher}, client_{client} { +} + +void airmap::services::Aircrafts::manufacturers(const Manufacturers::Parameters& parameters, + const Manufacturers::Callback& cb) { + dispatcher_->dispatch_to_airmap([this, sp = shared_from_this(), parameters, cb]() { + sp->client_->aircrafts().manufacturers(parameters, [this, sp, cb](const auto& result) { + sp->dispatcher_->dispatch_to_qt([sp, result, cb]() { cb(result); }); + }); + }); +} + +void airmap::services::Aircrafts::models(const Models::Parameters& parameters, const Models::Callback& cb) { + dispatcher_->dispatch_to_airmap([this, sp = shared_from_this(), parameters, cb]() { + sp->client_->aircrafts().models(parameters, [this, sp, cb](const auto& result) { + sp->dispatcher_->dispatch_to_qt([sp, result, cb]() { cb(result); }); + }); + }); +} + +void airmap::services::Aircrafts::model_for_id(const ModelForId::Parameters& parameters, const ModelForId::Callback& cb) { + dispatcher_->dispatch_to_airmap([this, sp = shared_from_this(), parameters, cb]() { + sp->client_->aircrafts().model_for_id(parameters, [this, sp, cb](const auto& result) { + sp->dispatcher_->dispatch_to_qt([sp, result, cb]() { cb(result); }); + }); + }); +} diff --git a/src/Airmap/services/aircrafts.h b/src/Airmap/services/aircrafts.h new file mode 100644 index 0000000..83be8aa --- /dev/null +++ b/src/Airmap/services/aircrafts.h @@ -0,0 +1,32 @@ +#ifndef AIRMAP_QT_AIRCRAFTS_H_ +#define AIRMAP_QT_AIRCRAFTS_H_ + +#include +#include +#include + +#include +#include + +namespace airmap { +namespace services { + +class Aircrafts : public airmap::Aircrafts, public std::enable_shared_from_this { + public: + static std::shared_ptr create(const std::shared_ptr& dispatcher, + const std::shared_ptr& client); + + void manufacturers(const Manufacturers::Parameters& parameters, const Manufacturers::Callback& cb) override; + void models(const Models::Parameters& parameters, const Models::Callback& cb) override; + void model_for_id(const ModelForId::Parameters& parameters, const ModelForId::Callback& cb) override; + + private: + explicit Aircrafts(const std::shared_ptr& dispatcher, const std::shared_ptr& client); + std::shared_ptr dispatcher_; + std::shared_ptr client_; +}; + +} // namespace qt +} // namespace airmap + +#endif // AIRMAP_QT_AIRCRAFTS_H_ diff --git a/src/Airmap/services/airspaces.cpp b/src/Airmap/services/airspaces.cpp new file mode 100644 index 0000000..556fa87 --- /dev/null +++ b/src/Airmap/services/airspaces.cpp @@ -0,0 +1,27 @@ +#include + +std::shared_ptr airmap::services::Airspaces::create(const std::shared_ptr& dispatcher, + const std::shared_ptr& client) { + return std::shared_ptr{new Airspaces{dispatcher, client}}; +} + +airmap::services::Airspaces::Airspaces(const std::shared_ptr& dispatcher, + const std::shared_ptr& client) + : dispatcher_{dispatcher}, client_{client} { +} + +void airmap::services::Airspaces::search(const Search::Parameters& parameters, const Search::Callback& cb) { + dispatcher_->dispatch_to_airmap([this, sp = shared_from_this(), parameters, cb]() { + sp->client_->airspaces().search(parameters, [this, sp, cb](const auto& result) { + sp->dispatcher_->dispatch_to_qt([sp, result, cb]() { cb(result); }); + }); + }); +} + +void airmap::services::Airspaces::for_ids(const ForIds::Parameters& parameters, const ForIds::Callback& cb) { + dispatcher_->dispatch_to_airmap([this, sp = shared_from_this(), parameters, cb]() { + sp->client_->airspaces().for_ids(parameters, [this, sp, cb](const auto& result) { + sp->dispatcher_->dispatch_to_qt([sp, result, cb]() { cb(result); }); + }); + }); +} diff --git a/src/Airmap/services/airspaces.h b/src/Airmap/services/airspaces.h new file mode 100644 index 0000000..920b7b3 --- /dev/null +++ b/src/Airmap/services/airspaces.h @@ -0,0 +1,31 @@ +#ifndef AIRMAP_QT_AIRSPACES_H_ +#define AIRMAP_QT_AIRSPACES_H_ + +#include +#include +#include + +#include + +namespace airmap { +namespace services { + +class Airspaces : public airmap::Airspaces, public std::enable_shared_from_this { + public: + static std::shared_ptr create(const std::shared_ptr& dispatcher, + const std::shared_ptr& client); + + void search(const Search::Parameters& parameters, const Search::Callback& cb) override; + void for_ids(const ForIds::Parameters& parameters, const ForIds::Callback& cb) override; + + private: + explicit Airspaces(const std::shared_ptr& dispatcher, const std::shared_ptr& client); + + std::shared_ptr dispatcher_; + std::shared_ptr client_; +}; + +} // namespace qt +} // namespace airmap + +#endif // AIRMAP_QT_AIRSPACES_H_ diff --git a/src/Airmap/services/authenticator.cpp b/src/Airmap/services/authenticator.cpp new file mode 100644 index 0000000..8371387 --- /dev/null +++ b/src/Airmap/services/authenticator.cpp @@ -0,0 +1,38 @@ +#include + +std::shared_ptr airmap::services::Authenticator::create( + const std::shared_ptr& dispatcher, const std::shared_ptr& client) { + return std::shared_ptr{new Authenticator{dispatcher, client}}; +} + +airmap::services::Authenticator::Authenticator(const std::shared_ptr& dispatcher, + const std::shared_ptr& client) + : dispatcher_{dispatcher}, client_{client} { +} + +void airmap::services::Authenticator::authenticate_with_password(const AuthenticateWithPassword::Params& parameters, + const AuthenticateWithPassword::Callback& cb) { + dispatcher_->dispatch_to_airmap([this, sp = shared_from_this(), parameters, cb]() { + sp->client_->authenticator().authenticate_with_password(parameters, [this, sp, cb](const auto& result) { + sp->dispatcher_->dispatch_to_qt([sp, result, cb]() { cb(result); }); + }); + }); +} + +void airmap::services::Authenticator::authenticate_anonymously(const AuthenticateAnonymously::Params& parameters, + const AuthenticateAnonymously::Callback& cb) { + dispatcher_->dispatch_to_airmap([this, sp = shared_from_this(), parameters, cb]() { + sp->client_->authenticator().authenticate_anonymously(parameters, [this, sp, cb](const auto& result) { + sp->dispatcher_->dispatch_to_qt([sp, result, cb]() { cb(result); }); + }); + }); +} + +void airmap::services::Authenticator::renew_authentication(const RenewAuthentication::Params& parameters, + const RenewAuthentication::Callback& cb) { + dispatcher_->dispatch_to_airmap([this, sp = shared_from_this(), parameters, cb]() { + sp->client_->authenticator().renew_authentication(parameters, [this, sp, cb](const auto& result) { + sp->dispatcher_->dispatch_to_qt([sp, result, cb]() { cb(result); }); + }); + }); +} diff --git a/src/Airmap/services/authenticator.h b/src/Airmap/services/authenticator.h new file mode 100644 index 0000000..00e96c4 --- /dev/null +++ b/src/Airmap/services/authenticator.h @@ -0,0 +1,37 @@ +#ifndef AIRMAP_QT_AUTHENTICATOR_H_ +#define AIRMAP_QT_AUTHENTICATOR_H_ + +#include +#include +#include + +#include + +namespace airmap { +namespace services { + +class Authenticator : public airmap::Authenticator, public std::enable_shared_from_this { + public: + static std::shared_ptr create(const std::shared_ptr& dispatcher, + const std::shared_ptr& client); + + void authenticate_with_password(const AuthenticateWithPassword::Params& params, + const AuthenticateWithPassword::Callback& cb) override; + + void authenticate_anonymously(const AuthenticateAnonymously::Params& params, + const AuthenticateAnonymously::Callback& cb) override; + + void renew_authentication(const RenewAuthentication::Params& params, + const RenewAuthentication::Callback& cb) override; + + private: + explicit Authenticator(const std::shared_ptr& dispatcher, const std::shared_ptr& client); + + std::shared_ptr dispatcher_; + std::shared_ptr client_; +}; + +} // namespace qt +} // namespace airmap + +#endif // AIRMAP_QT_AUTHENTICATOR_H_ diff --git a/src/Airmap/services/client.cpp b/src/Airmap/services/client.cpp new file mode 100644 index 0000000..aea558d --- /dev/null +++ b/src/Airmap/services/client.cpp @@ -0,0 +1,166 @@ +#include + +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include + +namespace { + +class ContextRunner { + public: + explicit ContextRunner(const std::shared_ptr& context) : context_{context} { + } + + void start() { + worker_ = std::thread{[this]() { context_->run(); }}; + } + + void stop() { + context_->stop(); + if (worker_.joinable()) + worker_.join(); + } + + const std::shared_ptr& context() const { + return context_; + } + + private: + std::shared_ptr context_; + std::thread worker_; +}; + +} // namespace + +struct airmap::services::Client::Private { + explicit Private(const Client::Configuration& configuration, const std::shared_ptr& context_runner, + const std::shared_ptr& dispatcher, const std::shared_ptr& client) + : configuration_{configuration}, + context_runner_{context_runner}, + dispatcher_{dispatcher}, + client_{client}, + advisory_{airmap::services::Advisory::create(dispatcher_, client_)}, + aircrafts_{airmap::services::Aircrafts::create(dispatcher_, client_)}, + airspaces_{airmap::services::Airspaces::create(dispatcher_, client_)}, + authenticator_{airmap::services::Authenticator::create(dispatcher_, client_)}, + flight_plans_{airmap::services::FlightPlans::create(dispatcher_, client_)}, + flights_{airmap::services::Flights::create(dispatcher_, client_)}, + pilots_{airmap::services::Pilots::create(dispatcher_, client_)}, + rulesets_{airmap::services::RuleSets::create(dispatcher_, client_)}, + status_{airmap::services::Status::create(dispatcher_, client_)}, + telemetry_{airmap::services::Telemetry::create(dispatcher_, client_)}, + traffic_{airmap::services::Traffic::create(dispatcher_, client_)} { + } + + ~Private() { + context_runner_->stop(); + } + + Client::Configuration configuration_; + std::shared_ptr context_runner_; + std::shared_ptr dispatcher_; + std::shared_ptr client_; + std::shared_ptr advisory_; + std::shared_ptr aircrafts_; + std::shared_ptr airspaces_; + std::shared_ptr authenticator_; + std::shared_ptr flight_plans_; + std::shared_ptr flights_; + std::shared_ptr pilots_; + std::shared_ptr rulesets_; + std::shared_ptr status_; + std::shared_ptr telemetry_; + std::shared_ptr traffic_; +}; + +void airmap::services::Client::create(const Client::Configuration& configuration, const std::shared_ptr& logger, + QObject* parent, const CreateCallback& cb) { + register_types(); + + auto result = Context::create(logger); + auto dispatcher = std::make_shared(result.value()); + + if (!result) { + dispatcher->dispatch_to_qt([result, cb]() { cb(CreateResult{result.error()}); }); + } else { + auto cr = std::make_shared(result.value()); + + cr->context()->create_client_with_configuration( + configuration, [dispatcher, configuration, parent, cr, cb](const auto& result) { + dispatcher->dispatch_to_qt([dispatcher, configuration, parent, cr, result, cb]() { + if (result) { + cb(CreateResult{new Client{ + std::unique_ptr{new Private{configuration, cr, dispatcher, result.value()}}, parent}}); + } else { + cb(CreateResult{result.error()}); + } + }); + }); + + cr->start(); + } +} + +airmap::services::Client::Client(std::unique_ptr&& d, QObject* parent) : QObject{parent}, d_{std::move(d)} { +} + +airmap::services::Client::~Client() = default; + +// From airmap::Client +airmap::Authenticator& airmap::services::Client::authenticator() { + return *d_->authenticator_; +} + +airmap::Advisory& airmap::services::Client::advisory() { + return *d_->advisory_; +} + +airmap::Aircrafts& airmap::services::Client::aircrafts() { + return *d_->aircrafts_; +} + +airmap::Airspaces& airmap::services::Client::airspaces() { + return *d_->airspaces_; +} + +airmap::FlightPlans& airmap::services::Client::flight_plans() { + return *d_->flight_plans_; +} + +airmap::Flights& airmap::services::Client::flights() { + return *d_->flights_; +} + +airmap::Pilots& airmap::services::Client::pilots() { + return *d_->pilots_; +} + +airmap::RuleSets& airmap::services::Client::rulesets() { + return *d_->rulesets_; +} + +airmap::Status& airmap::services::Client::status() { + return *d_->status_; +} + +airmap::Telemetry& airmap::services::Client::telemetry() { + return *d_->telemetry_; +} + +airmap::Traffic& airmap::services::Client::traffic() { + return *d_->traffic_; +} diff --git a/src/Airmap/services/client.h b/src/Airmap/services/client.h new file mode 100644 index 0000000..a06e38a --- /dev/null +++ b/src/Airmap/services/client.h @@ -0,0 +1,65 @@ +#ifndef AIRMAP_QT_CLIENT_H_ +#define AIRMAP_QT_CLIENT_H_ + +#include +#include +#include +#include +#include +#include + +#include + +namespace airmap { +/// @namespace namespace services bundles up types and functions that help with integrating AirMap functionality +/// into Qt-based applications and libraries. +namespace services { + +/// Client implements the airmap::Client interface, bridging over between +/// the Qt event loop and the native event loop of the airmap::Client. +/// +/// All callback invocations that might happen in the context of a Client instance +/// are dispatched to the Qt applications' main thread. +class AIRMAP_EXPORT Client : public QObject, public airmap::Client { + public: + using CreateResult = Outcome; + using CreateCallback = std::function; + + /// create creates a new Client instance with parent 'parent', logging to 'logger', using the config + /// 'configuration'. The result of the request is reported to 'cb', on the thread that issued the create request. + /// + /// Please note that this function must be called on Qt's main thread as event dispatching between different + /// event loops to the Qt world is set up here. + static void create(const Client::Configuration& configuration, const std::shared_ptr& logger, QObject* parent, + const CreateCallback& cb); + + ~Client() override; + + // From airmap::Client + Authenticator& authenticator() override; + Advisory& advisory() override; + Aircrafts& aircrafts() override; + Airspaces& airspaces() override; + FlightPlans& flight_plans() override; + Flights& flights() override; + Pilots& pilots() override; + RuleSets& rulesets() override; + Status& status() override; + Telemetry& telemetry() override; + Traffic& traffic() override; + + private: + /// @cond + struct Private; + Client(std::unique_ptr&& d, QObject* parent); + std::unique_ptr d_; + /// @endcond +}; + +} // namespace qt +} // namespace airmap + +/// @example qt/client.cpp +/// Illustrates how to use airmap::services::Client, airmap::services::DispatchingLogger and airmap::services::Logger. + +#endif // AIRMAP_QT_CLIENT_H_ diff --git a/src/Airmap/services/dispatcher.cpp b/src/Airmap/services/dispatcher.cpp new file mode 100644 index 0000000..f481a67 --- /dev/null +++ b/src/Airmap/services/dispatcher.cpp @@ -0,0 +1,62 @@ +#include + +#include +#include + +#include + +QEvent::Type airmap::services::Dispatcher::Event::registered_type() { + static const Type rt = static_cast(registerEventType()); + return rt; +} + +airmap::services::Dispatcher::Event::Event(const std::function& task) : QEvent{registered_type()}, task_{task} { +} + +void airmap::services::Dispatcher::Event::dispatch() { + task_(); +} + +std::shared_ptr airmap::services::Dispatcher::ToQt::create() { + return std::shared_ptr{new ToQt{}}; +} + +airmap::services::Dispatcher::ToQt::ToQt() { +} + +void airmap::services::Dispatcher::ToQt::dispatch(const Task& task) { + auto sp = shared_from_this(); + + QCoreApplication::postEvent(this, new Event{[sp, task]() { task(); }}); +} + +bool airmap::services::Dispatcher::ToQt::event(QEvent* event) { + assert(QCoreApplication::instance()); + assert(QThread::currentThread() == QCoreApplication::instance()->thread()); + + if (event->type() == Event::registered_type()) { + event->accept(); + + if (auto e = dynamic_cast(event)) { + e->dispatch(); + } + + return true; + } + + return false; +} + +airmap::services::Dispatcher::Dispatcher(const std::shared_ptr& context) + : to_qt_{ToQt::create()}, context_{context} { +} + +void airmap::services::Dispatcher::dispatch_to_qt(const std::function& task) { + to_qt_->dispatch(task); +} + +void airmap::services::Dispatcher::dispatch_to_airmap(const std::function& task) { + context_->schedule_in(task); +} + +// From QObject diff --git a/src/Airmap/services/dispatcher.h b/src/Airmap/services/dispatcher.h new file mode 100644 index 0000000..db9863d --- /dev/null +++ b/src/Airmap/services/dispatcher.h @@ -0,0 +1,53 @@ +#ifndef AIRMAP_QT_DISPATCHER_H_ +#define AIRMAP_QT_DISPATCHER_H_ + +#include + +#include +#include + +#include +#include +namespace airmap { +namespace services { + +class Dispatcher : public QObject { + public: + class Event : public QEvent { + public: + static Type registered_type(); + + explicit Event(const std::function& task); + void dispatch(); + + private: + std::function task_; + }; + + using Task = std::function; + + class ToQt : public QObject, public std::enable_shared_from_this { + public: + static std::shared_ptr create(); + void dispatch(const Task& task); + + private: + ToQt(); + // From QObject + bool event(QEvent* event) override; + }; + + explicit Dispatcher(const std::shared_ptr& context); + + void dispatch_to_qt(const Task& task); + void dispatch_to_airmap(const Task& task); + + private: + std::shared_ptr to_qt_; + std::shared_ptr context_; +}; + +} // namespace qt +} // namespace airmap + +#endif // AIRMAP_QT_DISPATCHER_H_ diff --git a/src/Airmap/services/flight_plans.cpp b/src/Airmap/services/flight_plans.cpp new file mode 100644 index 0000000..4e434ee --- /dev/null +++ b/src/Airmap/services/flight_plans.cpp @@ -0,0 +1,60 @@ +#include + +std::shared_ptr airmap::services::FlightPlans::create( + const std::shared_ptr& dispatcher, const std::shared_ptr& client) { + return std::shared_ptr{new FlightPlans{dispatcher, client}}; +} + +airmap::services::FlightPlans::FlightPlans(const std::shared_ptr& dispatcher, + const std::shared_ptr& client) + : dispatcher_{dispatcher}, client_{client} { +} + +void airmap::services::FlightPlans::for_id(const ForId::Parameters& parameters, const ForId::Callback& cb) { + dispatcher_->dispatch_to_airmap([this, sp = shared_from_this(), parameters, cb]() { + sp->client_->flight_plans().for_id(parameters, [this, sp, cb](const auto& result) { + sp->dispatcher_->dispatch_to_qt([sp, result, cb]() { cb(result); }); + }); + }); +} + +void airmap::services::FlightPlans::create_by_polygon(const Create::Parameters& parameters, const Create::Callback& cb) { + dispatcher_->dispatch_to_airmap([this, sp = shared_from_this(), parameters, cb]() { + sp->client_->flight_plans().create_by_polygon(parameters, [this, sp, cb](const auto& result) { + sp->dispatcher_->dispatch_to_qt([sp, result, cb]() { cb(result); }); + }); + }); +} + +void airmap::services::FlightPlans::update(const Update::Parameters& parameters, const Update::Callback& cb) { + dispatcher_->dispatch_to_airmap([this, sp = shared_from_this(), parameters, cb]() { + sp->client_->flight_plans().update(parameters, [this, sp, cb](const auto& result) { + sp->dispatcher_->dispatch_to_qt([sp, result, cb]() { cb(result); }); + }); + }); +} + +void airmap::services::FlightPlans::delete_(const Delete::Parameters& parameters, const Delete::Callback& cb) { + dispatcher_->dispatch_to_airmap([this, sp = shared_from_this(), parameters, cb]() { + sp->client_->flight_plans().delete_(parameters, [this, sp, cb](const auto& result) { + sp->dispatcher_->dispatch_to_qt([sp, result, cb]() { cb(result); }); + }); + }); +} + +void airmap::services::FlightPlans::render_briefing(const RenderBriefing::Parameters& parameters, + const RenderBriefing::Callback& cb) { + dispatcher_->dispatch_to_airmap([this, sp = shared_from_this(), parameters, cb]() { + sp->client_->flight_plans().render_briefing(parameters, [this, sp, cb](const auto& result) { + sp->dispatcher_->dispatch_to_qt([sp, result, cb]() { cb(result); }); + }); + }); +} + +void airmap::services::FlightPlans::submit(const Submit::Parameters& parameters, const Submit::Callback& cb) { + dispatcher_->dispatch_to_airmap([this, sp = shared_from_this(), parameters, cb]() { + sp->client_->flight_plans().submit(parameters, [this, sp, cb](const auto& result) { + sp->dispatcher_->dispatch_to_qt([sp, result, cb]() { cb(result); }); + }); + }); +} diff --git a/src/Airmap/services/flight_plans.h b/src/Airmap/services/flight_plans.h new file mode 100644 index 0000000..c4233ea --- /dev/null +++ b/src/Airmap/services/flight_plans.h @@ -0,0 +1,36 @@ +#ifndef AIRMAP_QT_FLIGHT_PLANS_H_ +#define AIRMAP_QT_FLIGHT_PLANS_H_ + +#include +#include +#include + +#include + +namespace airmap { +namespace services { + +/// FlightPlans provides functionality for managing flight plans. +class FlightPlans : public airmap::FlightPlans, public std::enable_shared_from_this { + public: + static std::shared_ptr create(const std::shared_ptr& dispatcher, + const std::shared_ptr& client); + + void for_id(const ForId::Parameters& parameters, const ForId::Callback& cb) override; + void create_by_polygon(const Create::Parameters& parameters, const Create::Callback& cb) override; + void update(const Update::Parameters& parameters, const Update::Callback& cb) override; + void delete_(const Delete::Parameters& parameters, const Delete::Callback& cb) override; + void render_briefing(const RenderBriefing::Parameters& parameters, const RenderBriefing::Callback& cb) override; + void submit(const Submit::Parameters& parameters, const Submit::Callback& cb) override; + + private: + explicit FlightPlans(const std::shared_ptr& dispatcher, const std::shared_ptr& client); + + std::shared_ptr dispatcher_; + std::shared_ptr client_; +}; + +} // namespace qt +} // namespace airmap + +#endif // AIRMAP_QT_FLIGHT_PLANS_H_ diff --git a/src/Airmap/services/flights.cpp b/src/Airmap/services/flights.cpp new file mode 100644 index 0000000..1bfa342 --- /dev/null +++ b/src/Airmap/services/flights.cpp @@ -0,0 +1,88 @@ +#include + +std::shared_ptr airmap::services::Flights::create(const std::shared_ptr& dispatcher, + const std::shared_ptr& client) { + return std::shared_ptr{new Flights{dispatcher, client}}; +} + +airmap::services::Flights::Flights(const std::shared_ptr& dispatcher, + const std::shared_ptr& client) + : dispatcher_{dispatcher}, client_{client} { +} + +void airmap::services::Flights::search(const Search::Parameters& parameters, const Search::Callback& cb) { + dispatcher_->dispatch_to_airmap([this, sp = shared_from_this(), parameters, cb]() { + sp->client_->flights().search(parameters, [this, sp, cb](const auto& result) { + sp->dispatcher_->dispatch_to_qt([sp, result, cb]() { cb(result); }); + }); + }); +} + +void airmap::services::Flights::for_id(const ForId::Parameters& parameters, const ForId::Callback& cb) { + dispatcher_->dispatch_to_airmap([this, sp = shared_from_this(), parameters, cb]() { + sp->client_->flights().for_id(parameters, [this, sp, cb](const auto& result) { + sp->dispatcher_->dispatch_to_qt([sp, result, cb]() { cb(result); }); + }); + }); +} + +void airmap::services::Flights::create_flight_by_point(const CreateFlight::Parameters& parameters, + const CreateFlight::Callback& cb) { + dispatcher_->dispatch_to_airmap([this, sp = shared_from_this(), parameters, cb]() { + sp->client_->flights().create_flight_by_point(parameters, [this, sp, cb](const auto& result) { + sp->dispatcher_->dispatch_to_qt([sp, result, cb]() { cb(result); }); + }); + }); +} + +void airmap::services::Flights::create_flight_by_path(const CreateFlight::Parameters& parameters, + const CreateFlight::Callback& cb) { + dispatcher_->dispatch_to_airmap([this, sp = shared_from_this(), parameters, cb]() { + sp->client_->flights().create_flight_by_path(parameters, [this, sp, cb](const auto& result) { + sp->dispatcher_->dispatch_to_qt([sp, result, cb]() { cb(result); }); + }); + }); +} + +void airmap::services::Flights::create_flight_by_polygon(const CreateFlight::Parameters& parameters, + const CreateFlight::Callback& cb) { + dispatcher_->dispatch_to_airmap([this, sp = shared_from_this(), parameters, cb]() { + sp->client_->flights().create_flight_by_polygon(parameters, [this, sp, cb](const auto& result) { + sp->dispatcher_->dispatch_to_qt([sp, result, cb]() { cb(result); }); + }); + }); +} + +void airmap::services::Flights::end_flight(const EndFlight::Parameters& parameters, const EndFlight::Callback& cb) { + dispatcher_->dispatch_to_airmap([this, sp = shared_from_this(), parameters, cb]() { + sp->client_->flights().end_flight(parameters, [this, sp, cb](const auto& result) { + sp->dispatcher_->dispatch_to_qt([sp, result, cb]() { cb(result); }); + }); + }); +} + +void airmap::services::Flights::delete_flight(const DeleteFlight::Parameters& parameters, const DeleteFlight::Callback& cb) { + dispatcher_->dispatch_to_airmap([this, sp = shared_from_this(), parameters, cb]() { + sp->client_->flights().delete_flight(parameters, [this, sp, cb](const auto& result) { + sp->dispatcher_->dispatch_to_qt([sp, result, cb]() { cb(result); }); + }); + }); +} + +void airmap::services::Flights::start_flight_communications(const StartFlightCommunications::Parameters& parameters, + const StartFlightCommunications::Callback& cb) { + dispatcher_->dispatch_to_airmap([this, sp = shared_from_this(), parameters, cb]() { + sp->client_->flights().start_flight_communications(parameters, [this, sp, cb](const auto& result) { + sp->dispatcher_->dispatch_to_qt([sp, result, cb]() { cb(result); }); + }); + }); +} + +void airmap::services::Flights::end_flight_communications(const EndFlightCommunications::Parameters& parameters, + const EndFlightCommunications::Callback& cb) { + dispatcher_->dispatch_to_airmap([this, sp = shared_from_this(), parameters, cb]() { + sp->client_->flights().end_flight_communications(parameters, [this, sp, cb](const auto& result) { + sp->dispatcher_->dispatch_to_qt([sp, result, cb]() { cb(result); }); + }); + }); +} diff --git a/src/Airmap/services/flights.h b/src/Airmap/services/flights.h new file mode 100644 index 0000000..4fb9d7f --- /dev/null +++ b/src/Airmap/services/flights.h @@ -0,0 +1,40 @@ +#ifndef AIRMAP_QT_FLIGHTS_H_ +#define AIRMAP_QT_FLIGHTS_H_ + +#include +#include +#include + +#include + +namespace airmap { +namespace services { + +class Flights : public airmap::Flights, public std::enable_shared_from_this { + public: + static std::shared_ptr create(const std::shared_ptr& dispatcher, + const std::shared_ptr& client); + + void search(const Search::Parameters& parameters, const Search::Callback& cb) override; + void for_id(const ForId::Parameters& parameters, const ForId::Callback& cb) override; + void create_flight_by_point(const CreateFlight::Parameters& parameters, const CreateFlight::Callback& cb) override; + void create_flight_by_path(const CreateFlight::Parameters& parameters, const CreateFlight::Callback& cb) override; + void create_flight_by_polygon(const CreateFlight::Parameters& parameters, const CreateFlight::Callback& cb) override; + void end_flight(const EndFlight::Parameters& parameters, const EndFlight::Callback& cb) override; + void delete_flight(const DeleteFlight::Parameters& parameters, const DeleteFlight::Callback& cb) override; + void start_flight_communications(const StartFlightCommunications::Parameters& parameters, + const StartFlightCommunications::Callback& cb) override; + void end_flight_communications(const EndFlightCommunications::Parameters& parameters, + const EndFlightCommunications::Callback& cb) override; + + private: + explicit Flights(const std::shared_ptr& dispatcher, const std::shared_ptr& client); + + std::shared_ptr dispatcher_; + std::shared_ptr client_; +}; + +} // namespace qt +} // namespace airmap + +#endif // AIRMAP_QT_FLIGHTS_H_ diff --git a/src/Airmap/services/logger.cpp b/src/Airmap/services/logger.cpp new file mode 100644 index 0000000..042e628 --- /dev/null +++ b/src/Airmap/services/logger.cpp @@ -0,0 +1,78 @@ +#include + +#include + +struct airmap::services::Logger::Private { + QLoggingCategory logging_category{"airmap"}; +}; + +struct airmap::services::DispatchingLogger::Private { + std::shared_ptr next; + std::shared_ptr dispatcher; +}; + +airmap::services::Logger::Logger() : d_{new Private{}} { +} +airmap::services::Logger::~Logger() { +} + +QLoggingCategory& airmap::services::Logger::logging_category() { + static QLoggingCategory lc{"airmap"}; + return lc; +} + +void airmap::services::Logger::log(Severity severity, const char* message, const char*) { + switch (severity) { + case Severity::debug: + qCDebug(logging_category(), "%s", message); + break; + case Severity::info: + qCInfo(logging_category(), "%s", message); + break; + case Severity::error: + qCWarning(logging_category(), "%s", message); + break; + default: + break; + } +} + +bool airmap::services::Logger::should_log(Severity severity, const char*, const char*) { + switch (severity) { + case Severity::debug: + return logging_category().isDebugEnabled(); + case Severity::info: + return logging_category().isInfoEnabled(); + case Severity::error: + return logging_category().isWarningEnabled(); + default: + break; + } + + return true; +} + +airmap::services::DispatchingLogger::DispatchingLogger(const std::shared_ptr& next) + : d_{new Private{next, Dispatcher::ToQt::create()}} { +} + +airmap::services::DispatchingLogger::~DispatchingLogger() { +} + +void airmap::services::DispatchingLogger::log(Severity severity, const char* message, const char* component) { + std::string cmessage{message}; + std::string ccomponent{component}; + auto cnext{d_->next}; + + d_->dispatcher->dispatch([severity, cmessage, ccomponent, cnext] { + if (cnext->should_log(severity, cmessage.c_str(), ccomponent.c_str())) + cnext->log(severity, cmessage.c_str(), ccomponent.c_str()); + }); +} + +bool airmap::services::DispatchingLogger::should_log(Severity, const char*, const char*) { + // We have to accept all incoming log messages and postpone + // the actual evaluation of should_log in the context of next until we + // run on the correct thread. + return true; +} diff --git a/src/Airmap/services/logger.h b/src/Airmap/services/logger.h new file mode 100644 index 0000000..8a27385 --- /dev/null +++ b/src/Airmap/services/logger.h @@ -0,0 +1,57 @@ +#ifndef AIRMAP_QT_LOGGER_H_ +#define AIRMAP_QT_LOGGER_H_ + +#include +#include + +#include + +#include + +namespace airmap { +namespace services { + +/// Logger is an airmap::Logger implementation that uses to +/// Qt's logging facilities. +class AIRMAP_EXPORT Logger : public airmap::Logger { + public: + /// logging_category returns a QLoggingCategory instance + /// that enables calling code to fine-tune logging behavior of a Logger instance. + QLoggingCategory& logging_category(); + + /// Logger initializes a new instance. + Logger(); + /// ~Logger cleans up all resources held by a Logger instance. + ~Logger(); + + // From airmap::Logger + void log(Severity severity, const char* message, const char* component) override; + bool should_log(Severity severity, const char* message, const char* component) override; + + private: + struct Private; + std::unique_ptr d_; +}; + +/// DispatchingLogger is an airmap::Logger implementation that dispatches to Qt's main +/// event loop for logger invocation +class AIRMAP_EXPORT DispatchingLogger : public airmap::Logger { + public: + /// DispatchingLogger initializes a new instance with 'next'. + DispatchingLogger(const std::shared_ptr& next); + /// ~DispatchingLogging cleans up all resources held a DispatchingLogger instance. + ~DispatchingLogger(); + + // From airmap::Logger + void log(Severity severity, const char* message, const char* component) override; + bool should_log(Severity severity, const char* message, const char* component) override; + + private: + struct Private; + std::unique_ptr d_; +}; + +} // namespace qt +} // namespace airmap + +#endif // AIRMAP_QT_LOGGER_H_ diff --git a/src/Airmap/services/pilots.cpp b/src/Airmap/services/pilots.cpp new file mode 100644 index 0000000..b11047b --- /dev/null +++ b/src/Airmap/services/pilots.cpp @@ -0,0 +1,86 @@ +#include + +std::shared_ptr airmap::services::Pilots::create(const std::shared_ptr& dispatcher, + const std::shared_ptr& client) { + return std::shared_ptr{new Pilots{dispatcher, client}}; +} + +airmap::services::Pilots::Pilots(const std::shared_ptr& dispatcher, const std::shared_ptr& client) + : dispatcher_{dispatcher}, client_{client} { +} + +void airmap::services::Pilots::authenticated(const Authenticated::Parameters& parameters, const Authenticated::Callback& cb) { + dispatcher_->dispatch_to_airmap([this, sp = shared_from_this(), parameters, cb]() { + sp->client_->pilots().authenticated(parameters, [this, sp, cb](const auto& result) { + sp->dispatcher_->dispatch_to_qt([sp, result, cb]() { cb(result); }); + }); + }); +} + +void airmap::services::Pilots::for_id(const ForId::Parameters& parameters, const ForId::Callback& cb) { + dispatcher_->dispatch_to_airmap([this, sp = shared_from_this(), parameters, cb]() { + sp->client_->pilots().for_id(parameters, [this, sp, cb](const auto& result) { + sp->dispatcher_->dispatch_to_qt([sp, result, cb]() { cb(result); }); + }); + }); +} + +void airmap::services::Pilots::update_for_id(const UpdateForId::Parameters& parameters, const UpdateForId::Callback& cb) { + dispatcher_->dispatch_to_airmap([this, sp = shared_from_this(), parameters, cb]() { + sp->client_->pilots().update_for_id(parameters, [this, sp, cb](const auto& result) { + sp->dispatcher_->dispatch_to_qt([sp, result, cb]() { cb(result); }); + }); + }); +} + +void airmap::services::Pilots::start_verify_pilot_phone_for_id(const StartVerifyPilotPhoneForId::Parameters& parameters, + const StartVerifyPilotPhoneForId::Callback& cb) { + dispatcher_->dispatch_to_airmap([this, sp = shared_from_this(), parameters, cb]() { + sp->client_->pilots().start_verify_pilot_phone_for_id(parameters, [this, sp, cb](const auto& result) { + sp->dispatcher_->dispatch_to_qt([sp, result, cb]() { cb(result); }); + }); + }); +} + +void airmap::services::Pilots::finish_verify_pilot_phone_for_id(const FinishVerifyPilotPhoneForId::Parameters& parameters, + const FinishVerifyPilotPhoneForId::Callback& cb) { + dispatcher_->dispatch_to_airmap([this, sp = shared_from_this(), parameters, cb]() { + sp->client_->pilots().finish_verify_pilot_phone_for_id(parameters, [this, sp, cb](const auto& result) { + sp->dispatcher_->dispatch_to_qt([sp, result, cb]() { cb(result); }); + }); + }); +} + +void airmap::services::Pilots::aircrafts(const Aircrafts::Parameters& parameters, const Aircrafts::Callback& cb) { + dispatcher_->dispatch_to_airmap([this, sp = shared_from_this(), parameters, cb]() { + sp->client_->pilots().aircrafts(parameters, [this, sp, cb](const auto& result) { + sp->dispatcher_->dispatch_to_qt([sp, result, cb]() { cb(result); }); + }); + }); +} + +void airmap::services::Pilots::add_aircraft(const AddAircraft::Parameters& parameters, const AddAircraft::Callback& cb) { + dispatcher_->dispatch_to_airmap([this, sp = shared_from_this(), parameters, cb]() { + sp->client_->pilots().add_aircraft(parameters, [this, sp, cb](const auto& result) { + sp->dispatcher_->dispatch_to_qt([sp, result, cb]() { cb(result); }); + }); + }); +} + +void airmap::services::Pilots::delete_aircraft(const DeleteAircraft::Parameters& parameters, + const DeleteAircraft::Callback& cb) { + dispatcher_->dispatch_to_airmap([this, sp = shared_from_this(), parameters, cb]() { + sp->client_->pilots().delete_aircraft(parameters, [this, sp, cb](const auto& result) { + sp->dispatcher_->dispatch_to_qt([sp, result, cb]() { cb(result); }); + }); + }); +} + +void airmap::services::Pilots::update_aircraft(const UpdateAircraft::Parameters& parameters, + const UpdateAircraft::Callback& cb) { + dispatcher_->dispatch_to_airmap([this, sp = shared_from_this(), parameters, cb]() { + sp->client_->pilots().update_aircraft(parameters, [this, sp, cb](const auto& result) { + sp->dispatcher_->dispatch_to_qt([sp, result, cb]() { cb(result); }); + }); + }); +} diff --git a/src/Airmap/services/pilots.h b/src/Airmap/services/pilots.h new file mode 100644 index 0000000..1380409 --- /dev/null +++ b/src/Airmap/services/pilots.h @@ -0,0 +1,41 @@ +#ifndef AIRMAP_QT_PILOTS_H_ +#define AIRMAP_QT_PILOTS_H_ + +#include + +#include +#include + +#include + +namespace airmap { +namespace services { + +class Pilots : public airmap::Pilots, public std::enable_shared_from_this { + public: + static std::shared_ptr create(const std::shared_ptr& dispatcher, + const std::shared_ptr& client); + + void authenticated(const Authenticated::Parameters& parameters, const Authenticated::Callback& cb) override; + void for_id(const ForId::Parameters& parameters, const ForId::Callback& cb) override; + void update_for_id(const UpdateForId::Parameters& parameters, const UpdateForId::Callback& cb) override; + void start_verify_pilot_phone_for_id(const StartVerifyPilotPhoneForId::Parameters& parameters, + const StartVerifyPilotPhoneForId::Callback& cb) override; + void finish_verify_pilot_phone_for_id(const FinishVerifyPilotPhoneForId::Parameters& parameters, + const FinishVerifyPilotPhoneForId::Callback& cb) override; + void aircrafts(const Aircrafts::Parameters& parameters, const Aircrafts::Callback& cb) override; + void add_aircraft(const AddAircraft::Parameters& parameters, const AddAircraft::Callback& cb) override; + void delete_aircraft(const DeleteAircraft::Parameters& parameters, const DeleteAircraft::Callback& cb) override; + void update_aircraft(const UpdateAircraft::Parameters& parameters, const UpdateAircraft::Callback& cb) override; + + private: + explicit Pilots(const std::shared_ptr& dispatcher, const std::shared_ptr& client); + + std::shared_ptr dispatcher_; + std::shared_ptr client_; +}; + +} // namespace qt +} // namespace airmap + +#endif // AIRMAP_QT_PILOTS_H_ diff --git a/src/Airmap/services/rulesets.cpp b/src/Airmap/services/rulesets.cpp new file mode 100644 index 0000000..77ea647 --- /dev/null +++ b/src/Airmap/services/rulesets.cpp @@ -0,0 +1,53 @@ +#include + +std::shared_ptr airmap::services::RuleSets::create(const std::shared_ptr& dispatcher, + const std::shared_ptr& client) { + return std::shared_ptr{new RuleSets{dispatcher, client}}; +} + +airmap::services::RuleSets::RuleSets(const std::shared_ptr& dispatcher, + const std::shared_ptr& client) + : dispatcher_{dispatcher}, client_{client} { +} + +void airmap::services::RuleSets::search(const Search::Parameters& parameters, const Search::Callback& cb) { + dispatcher_->dispatch_to_airmap([this, sp = shared_from_this(), parameters, cb]() { + sp->client_->rulesets().search(parameters, [this, sp, cb](const auto& result) { + sp->dispatcher_->dispatch_to_qt([sp, result, cb]() { cb(result); }); + }); + }); +} + +void airmap::services::RuleSets::for_id(const ForId::Parameters& parameters, const ForId::Callback& cb) { + dispatcher_->dispatch_to_airmap([this, sp = shared_from_this(), parameters, cb]() { + sp->client_->rulesets().for_id(parameters, [this, sp, cb](const auto& result) { + sp->dispatcher_->dispatch_to_qt([sp, result, cb]() { cb(result); }); + }); + }); +} + +void airmap::services::RuleSets::fetch_rules(const FetchRules::Parameters& parameters, const FetchRules::Callback& cb) { + dispatcher_->dispatch_to_airmap([this, sp = shared_from_this(), parameters, cb]() { + sp->client_->rulesets().fetch_rules(parameters, [this, sp, cb](const auto& result) { + sp->dispatcher_->dispatch_to_qt([sp, result, cb]() { cb(result); }); + }); + }); +} + +void airmap::services::RuleSets::evaluate_rulesets(const EvaluateRules::Parameters& parameters, + const EvaluateRules::Callback& cb) { + dispatcher_->dispatch_to_airmap([this, sp = shared_from_this(), parameters, cb]() { + sp->client_->rulesets().evaluate_rulesets(parameters, [this, sp, cb](const auto& result) { + sp->dispatcher_->dispatch_to_qt([sp, result, cb]() { cb(result); }); + }); + }); +} + +void airmap::services::RuleSets::evaluate_flight_plan(const EvaluateFlightPlan::Parameters& parameters, + const EvaluateFlightPlan::Callback& cb) { + dispatcher_->dispatch_to_airmap([this, sp = shared_from_this(), parameters, cb]() { + sp->client_->rulesets().evaluate_flight_plan(parameters, [this, sp, cb](const auto& result) { + sp->dispatcher_->dispatch_to_qt([sp, result, cb]() { cb(result); }); + }); + }); +} diff --git a/src/Airmap/services/rulesets.h b/src/Airmap/services/rulesets.h new file mode 100644 index 0000000..157d370 --- /dev/null +++ b/src/Airmap/services/rulesets.h @@ -0,0 +1,31 @@ +#ifndef AIRMAP_QT_RULESETS_H_ +#define AIRMAP_QT_RULESETS_H_ + +#include +#include +#include + +namespace airmap { +namespace services { + +class RuleSets : public airmap::RuleSets, public std::enable_shared_from_this { + public: + static std::shared_ptr create(const std::shared_ptr& dispatcher, + const std::shared_ptr& client); + + void search(const Search::Parameters& parameters, const Search::Callback& cb) override; + void for_id(const ForId::Parameters& parameters, const ForId::Callback& cb) override; + void fetch_rules(const FetchRules::Parameters& parameters, const FetchRules::Callback& cb) override; + void evaluate_rulesets(const EvaluateRules::Parameters& parameters, const EvaluateRules::Callback& cb) override; + void evaluate_flight_plan(const EvaluateFlightPlan::Parameters& parameters, const EvaluateFlightPlan::Callback& cb) override; + + private: + explicit RuleSets(const std::shared_ptr& dispatcher, const std::shared_ptr& client); + std::shared_ptr dispatcher_; + std::shared_ptr client_; +}; + +} // namespace qt +} // namespace airmap + +#endif // AIRMAP_QT_RULESETS_H_ diff --git a/src/Airmap/services/status.cpp b/src/Airmap/services/status.cpp new file mode 100644 index 0000000..8a89902 --- /dev/null +++ b/src/Airmap/services/status.cpp @@ -0,0 +1,34 @@ +#include + +std::shared_ptr airmap::services::Status::create(const std::shared_ptr& dispatcher, + const std::shared_ptr& client) { + return std::shared_ptr{new Status{dispatcher, client}}; +} + +airmap::services::Status::Status(const std::shared_ptr& dispatcher, const std::shared_ptr& client) + : dispatcher_{dispatcher}, client_{client} { +} + +void airmap::services::Status::get_status_by_point(const GetStatus::Parameters& parameters, const GetStatus::Callback& cb) { + dispatcher_->dispatch_to_airmap([this, sp = shared_from_this(), parameters, cb]() { + sp->client_->status().get_status_by_point(parameters, [this, sp, cb](const auto& result) { + sp->dispatcher_->dispatch_to_qt([sp, result, cb]() { cb(result); }); + }); + }); +} + +void airmap::services::Status::get_status_by_path(const GetStatus::Parameters& parameters, const GetStatus::Callback& cb) { + dispatcher_->dispatch_to_airmap([this, sp = shared_from_this(), parameters, cb]() { + sp->client_->status().get_status_by_path(parameters, [this, sp, cb](const auto& result) { + sp->dispatcher_->dispatch_to_qt([sp, result, cb]() { cb(result); }); + }); + }); +} + +void airmap::services::Status::get_status_by_polygon(const GetStatus::Parameters& parameters, const GetStatus::Callback& cb) { + dispatcher_->dispatch_to_airmap([this, sp = shared_from_this(), parameters, cb]() { + sp->client_->status().get_status_by_polygon(parameters, [this, sp, cb](const auto& result) { + sp->dispatcher_->dispatch_to_qt([sp, result, cb]() { cb(result); }); + }); + }); +} diff --git a/src/Airmap/services/status.h b/src/Airmap/services/status.h new file mode 100644 index 0000000..431c4c3 --- /dev/null +++ b/src/Airmap/services/status.h @@ -0,0 +1,32 @@ +#ifndef AIRMAP_QT_STATUS_H_ +#define AIRMAP_QT_STATUS_H_ + +#include +#include +#include + +#include + +namespace airmap { +namespace services { + +class Status : public airmap::Status, public std::enable_shared_from_this { + public: + static std::shared_ptr create(const std::shared_ptr& dispatcher, + const std::shared_ptr& client); + + void get_status_by_point(const GetStatus::Parameters& parameters, const GetStatus::Callback& cb) override; + void get_status_by_path(const GetStatus::Parameters& parameters, const GetStatus::Callback& cb) override; + void get_status_by_polygon(const GetStatus::Parameters& parameters, const GetStatus::Callback& cb) override; + + private: + explicit Status(const std::shared_ptr& dispatcher, const std::shared_ptr& client); + + std::shared_ptr dispatcher_; + std::shared_ptr client_; +}; + +} // namespace qt +} // namespace airmap + +#endif // AIRMAP_QT_STATUS_H_ diff --git a/src/Airmap/services/telemetry.cpp b/src/Airmap/services/telemetry.cpp new file mode 100644 index 0000000..aded0bb --- /dev/null +++ b/src/Airmap/services/telemetry.cpp @@ -0,0 +1,20 @@ +#include + +#include + +std::shared_ptr airmap::services::Telemetry::create(const std::shared_ptr& dispatcher, + const std::shared_ptr& client) { + return std::shared_ptr{new Telemetry{dispatcher, client}}; +} + +airmap::services::Telemetry::Telemetry(const std::shared_ptr& dispatcher, + const std::shared_ptr& client) + : dispatcher_{dispatcher}, client_{client} { +} + +void airmap::services::Telemetry::submit_updates(const Flight& flight, const std::string& key, + const std::initializer_list& updates) { + dispatcher_->dispatch_to_airmap([this, sp = shared_from_this(), flight, key, updates]() { + sp->client_->telemetry().submit_updates(flight, key, updates); + }); +} diff --git a/src/Airmap/services/telemetry.h b/src/Airmap/services/telemetry.h new file mode 100644 index 0000000..ddb4f10 --- /dev/null +++ b/src/Airmap/services/telemetry.h @@ -0,0 +1,31 @@ +#ifndef AIRMAP_QT_TELEMETRY_H_ +#define AIRMAP_QT_TELEMETRY_H_ + +#include +#include +#include + +#include + +namespace airmap { +namespace services { + +class Telemetry : public airmap::Telemetry, public std::enable_shared_from_this { + public: + static std::shared_ptr create(const std::shared_ptr& dispatcher, + const std::shared_ptr& client); + + void submit_updates(const Flight& flight, const std::string& key, + const std::initializer_list& updates) override; + + private: + explicit Telemetry(const std::shared_ptr& dispatcher, const std::shared_ptr& client); + + std::shared_ptr dispatcher_; + std::shared_ptr client_; +}; + +} // namespace qt +} // namespace airmap + +#endif // AIRMAP_QT_TELEMETRY_H_ diff --git a/src/Airmap/services/traffic.cpp b/src/Airmap/services/traffic.cpp new file mode 100644 index 0000000..d3d9a60 --- /dev/null +++ b/src/Airmap/services/traffic.cpp @@ -0,0 +1,52 @@ +#include + +std::shared_ptr airmap::services::Traffic::Monitor::create( + const std::shared_ptr& dispatcher, const std::shared_ptr& native) { + return std::shared_ptr{new Monitor{dispatcher, native}}; +} + +airmap::services::Traffic::Monitor::Monitor(const std::shared_ptr& dispatcher, + const std::shared_ptr& native) + : dispatcher_{dispatcher}, native_{native} { +} + +void airmap::services::Traffic::Monitor::subscribe(const std::shared_ptr& subscriber) { + dispatcher_->dispatch_to_qt([this, sp = shared_from_this(), subscriber] { sp->subscribers_.insert(subscriber); }); +} + +void airmap::services::Traffic::Monitor::unsubscribe( + const std::shared_ptr& subscriber) { + dispatcher_->dispatch_to_qt([this, sp = shared_from_this(), subscriber] { sp->subscribers_.erase(subscriber); }); +} + +void airmap::services::Traffic::Monitor::handle_update(Update::Type type, const std::vector& update) { + dispatcher_->dispatch_to_qt([this, sp = shared_from_this(), type, update]() { + for (const auto& subscriber : sp->subscribers_) + subscriber->handle_update(type, update); + }); +} + +std::shared_ptr airmap::services::Traffic::create(const std::shared_ptr& dispatcher, + const std::shared_ptr& client) { + return std::shared_ptr{new Traffic{dispatcher, client}}; +} + +airmap::services::Traffic::Traffic(const std::shared_ptr& dispatcher, + const std::shared_ptr& client) + : dispatcher_{dispatcher}, client_{client} { +} + +void airmap::services::Traffic::monitor(const Monitor::Params& parameters, const Monitor::Callback& cb) { + dispatcher_->dispatch_to_airmap([this, sp = shared_from_this(), parameters, cb]() { + sp->client_->traffic().monitor(parameters, [this, sp, parameters, cb](const auto& result) { + if (result) { + auto m = result.value(); + auto mm = Monitor::create(sp->dispatcher_, m); + m->subscribe(mm); + sp->dispatcher_->dispatch_to_qt([sp, mm, cb]() { cb(Monitor::Result{mm}); }); + } else { + sp->dispatcher_->dispatch_to_qt([sp, result, cb]() { cb(result); }); + } + }); + }); +} diff --git a/src/Airmap/services/traffic.h b/src/Airmap/services/traffic.h new file mode 100644 index 0000000..a3cd156 --- /dev/null +++ b/src/Airmap/services/traffic.h @@ -0,0 +1,54 @@ +#ifndef AIRMAP_QT_TRAFFIC_H_ +#define AIRMAP_QT_TRAFFIC_H_ + +#include + +#include + +#include +#include + +namespace airmap { +namespace services { + +class Traffic : public airmap::Traffic, public std::enable_shared_from_this { + public: + static std::shared_ptr create(const std::shared_ptr& dispatcher, + const std::shared_ptr& client); + + class Monitor : public airmap::Traffic::Monitor, + public airmap::Traffic::Monitor::Subscriber, + public std::enable_shared_from_this { + public: + static std::shared_ptr create(const std::shared_ptr& dispatcher, + const std::shared_ptr& native); + + // From airmap::Traffic::Monitor + void subscribe(const std::shared_ptr& subscriber) override; + void unsubscribe(const std::shared_ptr& subscriber) override; + // From airmap::Traffic::Monitor::Subscriber + void handle_update(Update::Type type, const std::vector& update) override; + + private: + explicit Monitor(const std::shared_ptr& dispatcher, + const std::shared_ptr& native); + + std::shared_ptr dispatcher_; + std::shared_ptr native_; + std::set> subscribers_; + }; + + // From airmap::Traffic + void monitor(const Monitor::Params& params, const Monitor::Callback& cb) override; + + private: + explicit Traffic(const std::shared_ptr& dispatcher, const std::shared_ptr& client); + + std::shared_ptr dispatcher_; + std::shared_ptr client_; +}; + +} // namespace qt +} // namespace airmap + +#endif // AIRMAP_QT_TRAFFIC_H_ diff --git a/src/Airmap/services/types.cpp b/src/Airmap/services/types.cpp new file mode 100644 index 0000000..102e75b --- /dev/null +++ b/src/Airmap/services/types.cpp @@ -0,0 +1,79 @@ +#include + +namespace { + +template +inline void register_type_once(const char* name) { + static const int id = qRegisterMetaType(name); + (void)id; +} + +template +inline void register_type_once() { + static const int id = qRegisterMetaType(); + (void)id; +} + +} // namespace + +void airmap::services::register_types() { + register_type_once("Aircraft"); + register_type_once("Airspace"); + register_type_once("Credentials"); + register_type_once("DateTime"); + register_type_once("Error"); + register_type_once("FlightPlan"); + register_type_once("Flight"); + register_type_once("Geometry"); + register_type_once("Pilot"); + register_type_once("Rule"); + register_type_once("RuleSet"); + register_type_once("RuleSet::Rule"); + register_type_once("Status::Advisory"); + register_type_once("Status::Wind"); + register_type_once("Status::Weather"); + register_type_once("Status::Report"); + register_type_once("Telemetry::Position"); + register_type_once("Telemetry::Speed"); + register_type_once("Telemetry::Attitude"); + register_type_once("Telemetry::Barometer"); + register_type_once>("Optional"); + register_type_once("Token::Type"); + register_type_once("Token::Anonymous"); + register_type_once("Token::OAuth"); + register_type_once("Token::Refreshed"); + register_type_once("Token"); + register_type_once("Traffic::Update::Type"); + register_type_once("Traffic::Update"); + register_type_once("Version"); + + register_type_once("airmap::Aircraft"); + register_type_once("airmap::Airspace"); + register_type_once("airmap::Credentials"); + register_type_once("airmap::DateTime"); + register_type_once("airmap::Error"); + register_type_once("airmap::FlightPlan"); + register_type_once("airmap::Flight"); + register_type_once("airmap::Geometry"); + register_type_once("airmap::Pilot"); + register_type_once("airmap::Rule"); + register_type_once("airmap::RuleSet"); + register_type_once("airmap::RuleSet::Rule"); + register_type_once("airmap::Advisory"); + register_type_once("airmap::Wind"); + register_type_once("airmap::Weather"); + register_type_once("airmap::Report"); + register_type_once("airmap::Telemetry::Position"); + register_type_once("airmap::Telemetry::Speed"); + register_type_once("airmap::Telemetry::Attitude"); + register_type_once("airmap::Telemetry::Barometer"); + register_type_once>("airmap::Optional"); + register_type_once("airmap::Token::Type"); + register_type_once("airmap::Token::Anonymous"); + register_type_once("airmap::Token::OAuth"); + register_type_once("airmap::Token::Refreshed"); + register_type_once("airmap::Token"); + register_type_once("airmap::Traffic::Update::Type"); + register_type_once("airmap::Traffic::Update"); + register_type_once("airmap::Version"); +} diff --git a/src/Airmap/services/types.h b/src/Airmap/services/types.h new file mode 100644 index 0000000..97e76c7 --- /dev/null +++ b/src/Airmap/services/types.h @@ -0,0 +1,67 @@ +#ifndef AIRMAP_QT_TYPES_H_ +#define AIRMAP_QT_TYPES_H_ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include + +Q_DECLARE_METATYPE(airmap::Aircraft) +Q_DECLARE_METATYPE(airmap::Airspace) +Q_DECLARE_METATYPE(airmap::Credentials) +Q_DECLARE_METATYPE(airmap::DateTime) +Q_DECLARE_METATYPE(airmap::Error) +Q_DECLARE_METATYPE(airmap::FlightPlan) +Q_DECLARE_METATYPE(airmap::Flight) +Q_DECLARE_METATYPE(airmap::Geometry) +Q_DECLARE_METATYPE(airmap::Pilot) +Q_DECLARE_METATYPE(airmap::Rule) +Q_DECLARE_METATYPE(airmap::RuleSet) +Q_DECLARE_METATYPE(airmap::RuleSet::Rule) +Q_DECLARE_METATYPE(airmap::Status::Advisory) +Q_DECLARE_METATYPE(airmap::Status::Wind) +Q_DECLARE_METATYPE(airmap::Status::Weather) +Q_DECLARE_METATYPE(airmap::Status::Report) +Q_DECLARE_METATYPE(airmap::Telemetry::Position) +Q_DECLARE_METATYPE(airmap::Telemetry::Speed) +Q_DECLARE_METATYPE(airmap::Telemetry::Attitude) +Q_DECLARE_METATYPE(airmap::Telemetry::Barometer) +Q_DECLARE_METATYPE(airmap::Optional) +Q_DECLARE_METATYPE(airmap::Token::Type) +Q_DECLARE_METATYPE(airmap::Token::Anonymous) +Q_DECLARE_METATYPE(airmap::Token::OAuth) +Q_DECLARE_METATYPE(airmap::Token::Refreshed) +Q_DECLARE_METATYPE(airmap::Token) +Q_DECLARE_METATYPE(airmap::Traffic::Update::Type) +Q_DECLARE_METATYPE(airmap::Traffic::Update) +Q_DECLARE_METATYPE(airmap::Version) + +namespace airmap { +namespace services { + +/// register_types makes airmap::* types known to the Qt type system. +/// +/// This function has to be called at least once to be able to use airmap::* +/// types in queued signal-slot connections. +AIRMAP_EXPORT void register_types(); + +} // namespace qt +} // namespace airmap + +#endif // AIRMAP_QT_TYPES_H_ diff --git a/src/AirspaceManagement/AirspaceAdvisoryProvider.cc b/src/AirspaceManagement/AirspaceAdvisoryProvider.cc new file mode 100644 index 0000000..9399885 --- /dev/null +++ b/src/AirspaceManagement/AirspaceAdvisoryProvider.cc @@ -0,0 +1,46 @@ +/**************************************************************************** + * + * (c) 2009-2020 QGROUNDCONTROL PROJECT + * + * QGroundControl is licensed according to the terms in the file + * COPYING.md in the root of the source code directory. + * + ****************************************************************************/ + +#include "AirspaceAdvisoryProvider.h" + +AirspaceAdvisory::AirspaceAdvisory(QObject* parent) + : QObject(parent) +{ +} + +AirspaceAdvisoryProvider::AirspaceAdvisoryProvider(QObject *parent) + : QObject(parent) +{ +} + +//-- TODO: This enum is a bitmask, which implies an airspace can be any +// combination of these types. However, I have not seen any that this +// was the case. + +QString +AirspaceAdvisory::typeStr() +{ + switch(type()) { + case Airport: return tr("Airport"); + case Controlled_airspace: return tr("Controlled Airspace"); + case Special_use_airspace: return tr("Special Use Airspace"); + case Tfr: return tr("TFR"); + case Wildfire: return tr("Wild Fire"); + case Park: return tr("Park"); + case Power_plant: return tr("Power Plant"); + case Heliport: return tr("Heliport"); + case Prison: return tr("Prison"); + case School: return tr("School"); + case Hospital: return tr("Hospital"); + case Fire: return tr("Fire"); + case Emergency: return tr("Emergency"); + case Invalid: return tr("Custom"); + default: return tr("Unknown"); + } +} diff --git a/src/AirspaceManagement/AirspaceAdvisoryProvider.h b/src/AirspaceManagement/AirspaceAdvisoryProvider.h new file mode 100644 index 0000000..075b898 --- /dev/null +++ b/src/AirspaceManagement/AirspaceAdvisoryProvider.h @@ -0,0 +1,104 @@ +/**************************************************************************** + * + * (c) 2009-2020 QGROUNDCONTROL PROJECT + * + * QGroundControl is licensed according to the terms in the file + * COPYING.md in the root of the source code directory. + * + ****************************************************************************/ + +#pragma once + +/** + * @file AirspaceAdvisoryProvider.h + * Weather information provided by the Airspace Managemement + */ + +#include "QmlObjectListModel.h" +#include "QGCGeoBoundingCube.h" + +#include +#include + +//----------------------------------------------------------------------------- +class AirspaceAdvisoryProvider : public QObject +{ + Q_OBJECT +public: + + enum AdvisoryColor { + Green, + Yellow, + Orange, + Red + }; + + Q_ENUM(AdvisoryColor) + + AirspaceAdvisoryProvider (QObject *parent = nullptr); + virtual ~AirspaceAdvisoryProvider () {} + + Q_PROPERTY(bool valid READ valid NOTIFY advisoryChanged) + Q_PROPERTY(AdvisoryColor airspaceColor READ airspaceColor NOTIFY advisoryChanged) + Q_PROPERTY(QmlObjectListModel* advisories READ advisories NOTIFY advisoryChanged) + + virtual bool valid () = 0; ///< Current data is valid + virtual AdvisoryColor airspaceColor () = 0; ///< Aispace overall color + virtual QmlObjectListModel* advisories () = 0; ///< List of AirspaceAdvisory + + /** + * Set region of interest that should be queried. When finished, the advisoryChanged() signal will be emmited. + * @param center Center coordinate for ROI + */ + virtual void setROI (const QGCGeoBoundingCube& roi, bool reset = false) = 0; + +signals: + void advisoryChanged (); +}; + +//----------------------------------------------------------------------------- +class AirspaceAdvisory : public QObject +{ + Q_OBJECT +public: + + enum AdvisoryType { + Invalid = 0, + Airport = 1 << 0, + Controlled_airspace = 1 << 1, + Special_use_airspace = 1 << 2, + Tfr = 1 << 3, + Wildfire = 1 << 4, + Park = 1 << 5, + Power_plant = 1 << 6, + Heliport = 1 << 7, + Prison = 1 << 8, + School = 1 << 9, + Hospital = 1 << 10, + Fire = 1 << 11, + Emergency = 1 << 12, + }; + + Q_ENUM(AdvisoryType) + + AirspaceAdvisory (QObject* parent = nullptr); + + Q_PROPERTY(QString id READ id CONSTANT) + Q_PROPERTY(QString name READ name CONSTANT) + Q_PROPERTY(AdvisoryType type READ type CONSTANT) + Q_PROPERTY(QString typeStr READ typeStr CONSTANT) + Q_PROPERTY(QGeoCoordinate coordinates READ coordinates CONSTANT) + Q_PROPERTY(qreal radius READ radius CONSTANT) + + Q_PROPERTY(AirspaceAdvisoryProvider::AdvisoryColor color READ color CONSTANT) + + virtual QString id () = 0; + virtual QString name () = 0; + virtual AdvisoryType type () = 0; + virtual QString typeStr (); + virtual QGeoCoordinate coordinates () = 0; + virtual qreal radius () = 0; + + virtual AirspaceAdvisoryProvider::AdvisoryColor color () = 0; +}; + diff --git a/src/AirspaceManagement/AirspaceFlightPlanProvider.cc b/src/AirspaceManagement/AirspaceFlightPlanProvider.cc new file mode 100644 index 0000000..53bfa4e --- /dev/null +++ b/src/AirspaceManagement/AirspaceFlightPlanProvider.cc @@ -0,0 +1,169 @@ +/**************************************************************************** + * + * (c) 2009-2020 QGROUNDCONTROL PROJECT + * + * QGroundControl is licensed according to the terms in the file + * COPYING.md in the root of the source code directory. + * + ****************************************************************************/ + +#include "AirspaceManager.h" +#include "AirspaceFlightPlanProvider.h" +#include + +//----------------------------------------------------------------------------- +AirspaceFlightAuthorization::AirspaceFlightAuthorization(QObject *parent) + : QObject(parent) +{ +} + +//----------------------------------------------------------------------------- +AirspaceFlightInfo::AirspaceFlightInfo(QObject *parent) + : QObject(parent) +{ +} + +//----------------------------------------------------------------------------- +AirspaceFlightPlanProvider::AirspaceFlightPlanProvider(QObject *parent) + : QObject(parent) +{ +} + +//----------------------------------------------------------------------------- +AirspaceFlightModel::AirspaceFlightModel(QObject *parent) + : QAbstractListModel(parent) +{ + +} + +//----------------------------------------------------------------------------- +AirspaceFlightInfo* +AirspaceFlightModel::get(int index) +{ + if (index < 0 || index >= _flightEntries.count()) { + return nullptr; + } + return _flightEntries[index]; +} + +//----------------------------------------------------------------------------- +int +AirspaceFlightModel::findFlightID(QString flightID) +{ + for(int i = 0; i < _flightEntries.count(); i++) { + if(_flightEntries[i]->flightID() == flightID) { + return i; + } + } + return -1; +} + +//----------------------------------------------------------------------------- +int +AirspaceFlightModel::count() const +{ + return _flightEntries.count(); +} + +//----------------------------------------------------------------------------- +void +AirspaceFlightModel::append(AirspaceFlightInfo* object) +{ + beginInsertRows(QModelIndex(), rowCount(), rowCount()); + QQmlEngine::setObjectOwnership(object, QQmlEngine::CppOwnership); + _flightEntries.append(object); + endInsertRows(); + emit countChanged(); +} + +//----------------------------------------------------------------------------- +void +AirspaceFlightModel::remove(const QString& flightID) +{ + remove(findFlightID(flightID)); +} + +//----------------------------------------------------------------------------- +void +AirspaceFlightModel::remove(int index) +{ + if (index >= 0 && index < _flightEntries.count()) { + beginRemoveRows(QModelIndex(), index, index); + AirspaceFlightInfo* entry = _flightEntries[index]; + if(entry) { + qCDebug(AirspaceManagementLog) << "Deleting flight plan" << entry->flightPlanID(); + entry->deleteLater(); + } + _flightEntries.removeAt(index); + endRemoveRows(); + emit countChanged(); + } +} + +//----------------------------------------------------------------------------- +void +AirspaceFlightModel::clear(void) +{ + if(!_flightEntries.isEmpty()) { + beginResetModel(); + while (_flightEntries.count()) { + AirspaceFlightInfo* entry = _flightEntries.last(); + if(entry) entry->deleteLater(); + _flightEntries.removeLast(); + } + endResetModel(); + emit countChanged(); + } +} + +//----------------------------------------------------------------------------- +static bool +flight_sort(QObject* a, QObject* b) +{ + AirspaceFlightInfo* aa = qobject_cast(a); + AirspaceFlightInfo* bb = qobject_cast(b); + if(!aa || !bb) return false; + return aa->qStartTime() > bb->qStartTime(); +} + +//----------------------------------------------------------------------------- +void +AirspaceFlightModel::sortStartFlight() +{ + beginResetModel(); + std::sort(_flightEntries.begin(), _flightEntries.end(), flight_sort); + endResetModel(); +} + + +//----------------------------------------------------------------------------- +AirspaceFlightInfo* +AirspaceFlightModel::operator[](int index) +{ + return get(index); +} + +//----------------------------------------------------------------------------- +int +AirspaceFlightModel::rowCount(const QModelIndex& /*parent*/) const +{ + return _flightEntries.count(); +} + +//----------------------------------------------------------------------------- +QVariant +AirspaceFlightModel::data(const QModelIndex & index, int role) const { + if (index.row() < 0 || index.row() >= _flightEntries.count()) + return QVariant(); + if (role == ObjectRole) + return QVariant::fromValue(_flightEntries[index.row()]); + return QVariant(); +} + +//----------------------------------------------------------------------------- +QHash +AirspaceFlightModel::roleNames() const { + QHash roles; + roles[ObjectRole] = "flightEntry"; + return roles; +} diff --git a/src/AirspaceManagement/AirspaceFlightPlanProvider.h b/src/AirspaceManagement/AirspaceFlightPlanProvider.h new file mode 100644 index 0000000..f92ddb5 --- /dev/null +++ b/src/AirspaceManagement/AirspaceFlightPlanProvider.h @@ -0,0 +1,216 @@ +/**************************************************************************** + * + * (c) 2009-2020 QGROUNDCONTROL PROJECT + * + * QGroundControl is licensed according to the terms in the file + * COPYING.md in the root of the source code directory. + * + ****************************************************************************/ + +#pragma once + +/** + * @file AirspaceFlightPlanProvider.h + * Create and maintain a flight plan + */ + +#include "AirspaceAdvisoryProvider.h" +#include "QmlObjectListModel.h" + +#include +#include +#include +#include + +class PlanMasterController; +class AirspaceFlightInfo; + +//----------------------------------------------------------------------------- +class AirspaceFlightAuthorization : public QObject +{ + Q_OBJECT +public: + AirspaceFlightAuthorization (QObject *parent = nullptr); + + enum AuthorizationStatus { + Accepted, + Rejected, + Pending, + AcceptedOnSubmission, + RejectedOnSubmission, + Unknown + }; + + Q_ENUM(AuthorizationStatus) + + Q_PROPERTY(QString name READ name CONSTANT) + Q_PROPERTY(QString id READ id CONSTANT) + Q_PROPERTY(AuthorizationStatus status READ status CONSTANT) + Q_PROPERTY(QString message READ message CONSTANT) + + virtual QString name () = 0; + virtual QString id () = 0; + virtual AuthorizationStatus status () = 0; + virtual QString message () = 0; + +}; + + +//----------------------------------------------------------------------------- +class AirspaceFlightInfo : public QObject +{ + Q_OBJECT +public: + AirspaceFlightInfo (QObject *parent = nullptr); + + Q_PROPERTY(QString flightID READ flightID CONSTANT) + Q_PROPERTY(QString flightPlanID READ flightPlanID CONSTANT) + Q_PROPERTY(QString createdTime READ createdTime CONSTANT) + Q_PROPERTY(QString startTime READ startTime CONSTANT) + Q_PROPERTY(QString endTime READ endTime CONSTANT) + Q_PROPERTY(QGeoCoordinate takeOff READ takeOff CONSTANT) + Q_PROPERTY(QVariantList boundingBox READ boundingBox CONSTANT) + Q_PROPERTY(bool active READ active NOTIFY activeChanged) + + virtual QString flightID () = 0; + virtual QString flightPlanID () = 0; + virtual QString createdTime () = 0; + virtual QString startTime () = 0; + virtual QDateTime qStartTime () = 0; + virtual QString endTime () = 0; + virtual QGeoCoordinate takeOff () = 0; + virtual QVariantList boundingBox () = 0; + virtual bool active () = 0; + +signals: + void activeChanged (); +}; + +//----------------------------------------------------------------------------- +class AirspaceFlightModel : public QAbstractListModel +{ + Q_OBJECT +public: + + enum QGCLogModelRoles { + ObjectRole = Qt::UserRole + 1 + }; + + AirspaceFlightModel (QObject *parent = 0); + + Q_PROPERTY(int count READ count NOTIFY countChanged) + + Q_INVOKABLE AirspaceFlightInfo* get (int index); + Q_INVOKABLE int findFlightID (QString flightID); + + int count () const; + void append (AirspaceFlightInfo *entry); + void remove (const QString& flightID); + void remove (int index); + void clear (); + void sortStartFlight (); + + AirspaceFlightInfo* + operator[] (int i); + + int rowCount (const QModelIndex & parent = QModelIndex()) const; + QVariant data (const QModelIndex & index, int role = Qt::DisplayRole) const; + +signals: + void countChanged (); + +protected: + QHash roleNames() const; +private: + QList _flightEntries; +}; + +//----------------------------------------------------------------------------- +class AirspaceFlightPlanProvider : public QObject +{ + Q_OBJECT +public: + + enum PermitStatus { + PermitNone = 0, //-- No flght plan + PermitPending, + PermitAccepted, + PermitRejected, + PermitNotRequired, + }; + + Q_ENUM(PermitStatus) + + AirspaceFlightPlanProvider (QObject *parent = nullptr); + + ///< Flight Planning and Filing + Q_PROPERTY(QDateTime flightStartTime READ flightStartTime WRITE setFlightStartTime NOTIFY flightStartTimeChanged) ///< Start of flight + Q_PROPERTY(int flightDuration READ flightDuration WRITE setFlightDuration NOTIFY flightDurationChanged) ///< Flight Duration + Q_PROPERTY(bool flightStartsNow READ flightStartsNow WRITE setFlightStartsNow NOTIFY flightStartsNowChanged) + + ///< Flight Briefing + Q_PROPERTY(PermitStatus flightPermitStatus READ flightPermitStatus NOTIFY flightPermitStatusChanged) ///< State of flight permission + Q_PROPERTY(bool valid READ valid NOTIFY advisoryChanged) + Q_PROPERTY(QmlObjectListModel* advisories READ advisories NOTIFY advisoryChanged) + Q_PROPERTY(QmlObjectListModel* ruleSets READ ruleSets NOTIFY advisoryChanged) + Q_PROPERTY(QGCGeoBoundingCube* missionArea READ missionArea NOTIFY missionAreaChanged) + Q_PROPERTY(AirspaceAdvisoryProvider::AdvisoryColor airspaceColor READ airspaceColor NOTIFY advisoryChanged) + Q_PROPERTY(QmlObjectListModel* rulesViolation READ rulesViolation NOTIFY rulesChanged) + Q_PROPERTY(QmlObjectListModel* rulesInfo READ rulesInfo NOTIFY rulesChanged) + Q_PROPERTY(QmlObjectListModel* rulesReview READ rulesReview NOTIFY rulesChanged) + Q_PROPERTY(QmlObjectListModel* rulesFollowing READ rulesFollowing NOTIFY rulesChanged) + Q_PROPERTY(QmlObjectListModel* briefFeatures READ briefFeatures NOTIFY rulesChanged) + Q_PROPERTY(QmlObjectListModel* authorizations READ authorizations NOTIFY rulesChanged) + + ///< Flight Management + Q_PROPERTY(AirspaceFlightModel* flightList READ flightList NOTIFY flightListChanged) + Q_PROPERTY(bool loadingFlightList READ loadingFlightList NOTIFY loadingFlightListChanged) + Q_PROPERTY(bool dirty READ dirty WRITE setDirty NOTIFY dirtyChanged) + + //-- TODO: This will submit the current flight plan in memory. + Q_INVOKABLE virtual void submitFlightPlan () = 0; + Q_INVOKABLE virtual void updateFlightPlan () = 0; + Q_INVOKABLE virtual void loadFlightList (QDateTime startTime, QDateTime endTime) = 0; + Q_INVOKABLE virtual void endFlight (QString flighID) = 0; + + virtual PermitStatus flightPermitStatus () const { return PermitNone; } + virtual QDateTime flightStartTime () const = 0; + virtual int flightDuration () const = 0; + virtual bool flightStartsNow () const = 0; + virtual QGCGeoBoundingCube* missionArea () = 0; + virtual bool valid () = 0; ///< Current advisory list is valid + virtual QmlObjectListModel* advisories () = 0; ///< List of AirspaceAdvisory + virtual QmlObjectListModel* ruleSets () = 0; ///< List of AirspaceRuleSet + virtual AirspaceAdvisoryProvider::AdvisoryColor airspaceColor () = 0; ///< Aispace overall color + + virtual QmlObjectListModel* rulesViolation () = 0; ///< List of AirspaceRule in violation + virtual QmlObjectListModel* rulesInfo () = 0; ///< List of AirspaceRule need more information + virtual QmlObjectListModel* rulesReview () = 0; ///< List of AirspaceRule should review + virtual QmlObjectListModel* rulesFollowing () = 0; ///< List of AirspaceRule following + virtual QmlObjectListModel* briefFeatures () = 0; ///< List of AirspaceRule in violation + virtual QmlObjectListModel* authorizations () = 0; ///< List of AirspaceFlightAuthorization + virtual AirspaceFlightModel*flightList () = 0; ///< List of AirspaceFlightInfo + virtual bool loadingFlightList () = 0; + virtual bool dirty () { return _dirty; } + + virtual void setFlightStartTime (QDateTime start) = 0; + virtual void setFlightDuration (int seconds) = 0; + virtual void setFlightStartsNow (bool now) = 0; + virtual void startFlightPlanning (PlanMasterController* planController) = 0; + virtual void setDirty (bool dirt) { if(_dirty != dirt) { _dirty = dirt; emit dirtyChanged(); }} + +signals: + void flightPermitStatusChanged (); + void flightStartTimeChanged (); + void flightStartsNowChanged (); + void flightDurationChanged (); + void advisoryChanged (); + void missionAreaChanged (); + void rulesChanged (); + void flightListChanged (); + void loadingFlightListChanged (); + void dirtyChanged (); + +protected: + bool _dirty = false; +}; diff --git a/src/AirspaceManagement/AirspaceManager.cc b/src/AirspaceManagement/AirspaceManager.cc new file mode 100644 index 0000000..e34d2b8 --- /dev/null +++ b/src/AirspaceManagement/AirspaceManager.cc @@ -0,0 +1,155 @@ +/**************************************************************************** + * + * (c) 2009-2020 QGROUNDCONTROL PROJECT + * + * QGroundControl is licensed according to the terms in the file + * COPYING.md in the root of the source code directory. + * + ****************************************************************************/ + + +#include "AirspaceAdvisoryProvider.h" +#include "AirspaceFlightPlanProvider.h" +#include "AirspaceManager.h" +#include "AirspaceRestriction.h" +#include "AirspaceRestrictionProvider.h" +#include "AirspaceRulesetsProvider.h" +#include "AirspaceVehicleManager.h" +#include "AirspaceWeatherInfoProvider.h" + +#include "Vehicle.h" +#include "QGCApplication.h" + +QGC_LOGGING_CATEGORY(AirspaceManagementLog, "AirspaceManagementLog") + +//----------------------------------------------------------------------------- +AirspaceManager::AirspaceManager(QGCApplication* app, QGCToolbox* toolbox) + : QGCTool(app, toolbox) +{ + _ruleUpdateTimer.setInterval(2000); + _ruleUpdateTimer.setSingleShot(true); + _updateTimer.setInterval(1000); + _updateTimer.setSingleShot(true); + connect(&_ruleUpdateTimer, &QTimer::timeout, this, &AirspaceManager::_updateRulesTimeout); + connect(&_updateTimer, &QTimer::timeout, this, &AirspaceManager::_updateTimeout); + qmlRegisterUncreatableType ("QGroundControl.Airspace", 1, 0, "AirspaceAdvisoryProvider", "Reference only"); + qmlRegisterUncreatableType ("QGroundControl.Airspace", 1, 0, "AirspaceFlightPlanProvider", "Reference only"); + qmlRegisterUncreatableType ("QGroundControl.Airspace", 1, 0, "AirspaceManager", "Reference only"); + qmlRegisterUncreatableType ("QGroundControl.Airspace", 1, 0, "AirspaceRestrictionProvider", "Reference only"); + qmlRegisterUncreatableType ("QGroundControl.Airspace", 1, 0, "AirspaceRule", "Reference only"); + qmlRegisterUncreatableType ("QGroundControl.Airspace", 1, 0, "AirspaceRuleFeature", "Reference only"); + qmlRegisterUncreatableType ("QGroundControl.Airspace", 1, 0, "AirspaceRuleSet", "Reference only"); + qmlRegisterUncreatableType ("QGroundControl.Airspace", 1, 0, "AirspaceRulesetsProvider", "Reference only"); + qmlRegisterUncreatableType ("QGroundControl.Airspace", 1, 0, "AirspaceWeatherInfoProvider", "Reference only"); + qmlRegisterUncreatableType ("QGroundControl.Airspace", 1, 0, "AirspaceFlightAuthorization", "Reference only"); + qmlRegisterUncreatableType ("QGroundControl.Airspace", 1, 0, "AirspaceFlightInfo", "Reference only"); +} + +//----------------------------------------------------------------------------- +AirspaceManager::~AirspaceManager() +{ + delete _advisories; + _advisories = nullptr; + delete _weatherProvider; + _weatherProvider = nullptr; + delete _ruleSetsProvider; + _ruleSetsProvider = nullptr; + delete _airspaces; + _airspaces = nullptr; + delete _flightPlan; + _flightPlan = nullptr; +} + +//----------------------------------------------------------------------------- +void +AirspaceManager::setToolbox(QGCToolbox* toolbox) +{ + QGCTool::setToolbox(toolbox); + // We should not call virtual methods in the constructor, so we instantiate the restriction provider here + _ruleSetsProvider = _instantiateRulesetsProvider(); + _weatherProvider = _instatiateAirspaceWeatherInfoProvider(); + _advisories = _instatiateAirspaceAdvisoryProvider(); + _airspaces = _instantiateAirspaceRestrictionProvider(); + _flightPlan = _instantiateAirspaceFlightPlanProvider(); + //-- Keep track of rule changes + if(_ruleSetsProvider) { + connect(_ruleSetsProvider, &AirspaceRulesetsProvider::selectedRuleSetsChanged, this, &AirspaceManager::_rulesChanged); + } +} + +//----------------------------------------------------------------------------- +void +AirspaceManager::setROI(const QGeoCoordinate& pointNW, const QGeoCoordinate& pointSE, bool planView, bool reset) +{ + if(planView) { + //-- Is there a mission? + if(_flightPlan->flightPermitStatus() != AirspaceFlightPlanProvider::PermitNone) { + //-- Is there a polygon to work with? + if(_flightPlan->missionArea()->isValid() && _flightPlan->missionArea()->area() > 0.0) { + if(reset) { + _roi = *_flightPlan->missionArea(); + _updateToROI(true); + } else { + _setROI(*_flightPlan->missionArea()); + } + return; + } + } + } + //-- Use screen coordinates (what you see is what you get) + if(reset) { + _roi = QGCGeoBoundingCube(pointNW, pointSE); + _updateToROI(true); + } else { + _setROI(QGCGeoBoundingCube(pointNW, pointSE)); + } +} + +//----------------------------------------------------------------------------- +void +AirspaceManager::_setROI(const QGCGeoBoundingCube& roi) +{ + if(_roi != roi) { + _roi = roi; + _updateTimer.start(); + } +} + +//----------------------------------------------------------------------------- +void +AirspaceManager::_updateToROI(bool reset) +{ + if(_airspaces) { + _airspaces->setROI(_roi, reset); + } + if(_ruleSetsProvider) { + _ruleSetsProvider->setROI(_roi, reset); + } + if(_weatherProvider) { + _weatherProvider->setROI(_roi, reset); + } +} + + +//----------------------------------------------------------------------------- +void +AirspaceManager::_updateTimeout() +{ + _updateToROI(false); +} + +//----------------------------------------------------------------------------- +void +AirspaceManager::_rulesChanged() +{ + _ruleUpdateTimer.start(); +} + +//----------------------------------------------------------------------------- +void +AirspaceManager::_updateRulesTimeout() +{ + if (_advisories) { + _advisories->setROI(_roi, true); + } +} diff --git a/src/AirspaceManagement/AirspaceManager.h b/src/AirspaceManagement/AirspaceManager.h new file mode 100644 index 0000000..9d438e8 --- /dev/null +++ b/src/AirspaceManagement/AirspaceManager.h @@ -0,0 +1,148 @@ +/**************************************************************************** + * + * (c) 2009-2020 QGROUNDCONTROL PROJECT + * + * QGroundControl is licensed according to the terms in the file + * COPYING.md in the root of the source code directory. + * + ****************************************************************************/ + +#pragma once + +/** + * @file AirspaceManager.h + * This file contains the interface definitions used by an airspace management implementation (AirMap). + * There are 3 base classes that must be subclassed: + * - AirspaceManager + * main manager that contains the restrictions for display. It acts as a factory to create instances of the other + * classes. + * - AirspaceVehicleManager + * this provides the multi-vehicle support - each vehicle has an instance + * - AirspaceAdvisoriesProvider + * Provides airspace advisories and restrictions. Currently only used by AirspaceManager, but + * each vehicle could have its own restrictions. + */ + +#include "QGCToolbox.h" +#include "QGCLoggingCategory.h" +#include "QmlObjectListModel.h" +#include "QGCGeoBoundingCube.h" + +#include +#include +#include +#include +#include + +class AirspaceAdvisoryProvider; +class AirspaceFlightPlanProvider; +class AirspaceRestrictionProvider; +class AirspaceRulesetsProvider; +class AirspaceVehicleManager; +class AirspaceWeatherInfoProvider; +class PlanMasterController; +class QGCApplication; +class Vehicle; + +Q_DECLARE_LOGGING_CATEGORY(AirspaceManagementLog) + +//----------------------------------------------------------------------------- +/** + * @class AirspaceManager + * Base class for airspace management. There is one (global) instantiation of this + */ +class AirspaceManager : public QGCTool { + Q_OBJECT +public: + AirspaceManager(QGCApplication* app, QGCToolbox* toolbox); + virtual ~AirspaceManager() override; + + enum AuthStatus { + Unknown, + Anonymous, + Authenticated, + Error + }; + + Q_ENUM(AuthStatus) + + Q_PROPERTY(QString providerName READ providerName CONSTANT) + Q_PROPERTY(AirspaceWeatherInfoProvider* weatherInfo READ weatherInfo CONSTANT) + Q_PROPERTY(AirspaceAdvisoryProvider* advisories READ advisories CONSTANT) + Q_PROPERTY(AirspaceRulesetsProvider* ruleSets READ ruleSets CONSTANT) + Q_PROPERTY(AirspaceRestrictionProvider* airspaces READ airspaces CONSTANT) + Q_PROPERTY(AirspaceFlightPlanProvider* flightPlan READ flightPlan CONSTANT) + Q_PROPERTY(bool connected READ connected NOTIFY connectedChanged) + Q_PROPERTY(QString connectStatus READ connectStatus NOTIFY connectStatusChanged) + Q_PROPERTY(AirspaceManager::AuthStatus authStatus READ authStatus NOTIFY authStatusChanged) + Q_PROPERTY(bool airspaceVisible READ airspaceVisible WRITE setAirspaceVisible NOTIFY airspaceVisibleChanged) + + Q_INVOKABLE void setROI (const QGeoCoordinate& pointNW, const QGeoCoordinate& pointSE, bool planView, bool reset = false); + + AirspaceWeatherInfoProvider* weatherInfo () { return _weatherProvider; } + AirspaceAdvisoryProvider* advisories () { return _advisories; } + AirspaceRulesetsProvider* ruleSets () { return _ruleSetsProvider; } + AirspaceRestrictionProvider* airspaces () { return _airspaces; } + AirspaceFlightPlanProvider* flightPlan () { return _flightPlan; } + + void setToolbox(QGCToolbox* toolbox) override; + + virtual QString providerName () const = 0; ///< Name of the airspace management provider (used in the UI) + + virtual bool airspaceVisible () { return _airspaceVisible; } + virtual void setAirspaceVisible (bool set) { _airspaceVisible = set; emit airspaceVisibleChanged(); } + virtual bool connected () const = 0; + virtual QString connectStatus () const { return QString(); } + virtual double maxAreaOfInterest() const { return _maxAreaOfInterest; } + + virtual AirspaceManager::AuthStatus authStatus () const { return Anonymous; } + + /** + * Factory method to create an AirspaceVehicleManager object + */ + virtual AirspaceVehicleManager* instantiateVehicle (const Vehicle& vehicle) = 0; + +signals: + void airspaceVisibleChanged (); + void connectedChanged (); + void connectStatusChanged (); + void authStatusChanged (); + +protected: + /** + * Set the ROI for airspace information (restrictions shown in UI) + * @param center Center coordinate for ROI + * @param radiusMeters Radius in meters around center which is of interest + */ + virtual void _setROI (const QGCGeoBoundingCube& roi); + + /** + * Factory methods + */ + virtual AirspaceRulesetsProvider* _instantiateRulesetsProvider () = 0; + virtual AirspaceWeatherInfoProvider* _instatiateAirspaceWeatherInfoProvider () = 0; + virtual AirspaceAdvisoryProvider* _instatiateAirspaceAdvisoryProvider () = 0; + virtual AirspaceRestrictionProvider* _instantiateAirspaceRestrictionProvider () = 0; + virtual AirspaceFlightPlanProvider* _instantiateAirspaceFlightPlanProvider () = 0; + +protected: + bool _airspaceVisible = false; + AirspaceRulesetsProvider* _ruleSetsProvider = nullptr; ///< Rulesets + AirspaceWeatherInfoProvider* _weatherProvider = nullptr; ///< Weather info + AirspaceAdvisoryProvider* _advisories = nullptr; ///< Advisory info + AirspaceRestrictionProvider* _airspaces = nullptr; ///< Airspace info + AirspaceFlightPlanProvider* _flightPlan = nullptr; ///< Flight plan management + double _maxAreaOfInterest = 500.0; ///< Ignore area larger than 500km^2 + QTimer _ruleUpdateTimer; + QTimer _updateTimer; + QGCGeoBoundingCube _roi; + +private slots: + void _updateRulesTimeout (); + void _updateTimeout (); + void _rulesChanged (); + +private: + void _updateToROI (bool reset = false); + +}; diff --git a/src/AirspaceManagement/AirspaceRestriction.cc b/src/AirspaceManagement/AirspaceRestriction.cc new file mode 100644 index 0000000..dc1e3ce --- /dev/null +++ b/src/AirspaceManagement/AirspaceRestriction.cc @@ -0,0 +1,35 @@ +/**************************************************************************** + * + * (c) 2009-2020 QGROUNDCONTROL PROJECT + * + * QGroundControl is licensed according to the terms in the file + * COPYING.md in the root of the source code directory. + * + ****************************************************************************/ + +#include "AirspaceRestriction.h" + +AirspaceRestriction::AirspaceRestriction(QString advisoryID, QColor color, QColor lineColor, float lineWidth, QObject* parent) + : QObject(parent) + , _advisoryID(advisoryID) + , _color(color) + , _lineColor(lineColor) + , _lineWidth(lineWidth) +{ +} + +AirspacePolygonRestriction::AirspacePolygonRestriction(const QVariantList& polygon, QString advisoryID, QColor color, QColor lineColor, float lineWidth, QObject* parent) + : AirspaceRestriction(advisoryID, color, lineColor, lineWidth, parent) + , _polygon(polygon) +{ + +} + +AirspaceCircularRestriction::AirspaceCircularRestriction(const QGeoCoordinate& center, double radius, QString advisoryID, QColor color, QColor lineColor, float lineWidth, QObject* parent) + : AirspaceRestriction(advisoryID, color, lineColor, lineWidth, parent) + , _center(center) + , _radius(radius) +{ + +} + diff --git a/src/AirspaceManagement/AirspaceRestriction.h b/src/AirspaceManagement/AirspaceRestriction.h new file mode 100644 index 0000000..7057e25 --- /dev/null +++ b/src/AirspaceManagement/AirspaceRestriction.h @@ -0,0 +1,76 @@ +/**************************************************************************** + * + * (c) 2009-2020 QGROUNDCONTROL PROJECT + * + * QGroundControl is licensed according to the terms in the file + * COPYING.md in the root of the source code directory. + * + ****************************************************************************/ + +#pragma once + +#include +#include +#include +#include + +/** + * @class AirspaceRestriction + * Base classe for an airspace restriction + */ + +class AirspaceRestriction : public QObject +{ + Q_OBJECT +public: + AirspaceRestriction(QString advisoryID, QColor color, QColor lineColor, float lineWidth, QObject* parent = nullptr); + Q_PROPERTY(QString advisoryID READ advisoryID CONSTANT) + Q_PROPERTY(QColor color READ color CONSTANT) + Q_PROPERTY(QColor lineColor READ lineColor CONSTANT) + Q_PROPERTY(float lineWidth READ lineWidth CONSTANT) + QString advisoryID () { return _advisoryID; } + QColor color () { return _color; } + QColor lineColor () { return _lineColor; } + float lineWidth () { return _lineWidth; } +protected: + QString _advisoryID; + QColor _color; + QColor _lineColor; + float _lineWidth; +}; + +/** + * @class AirspacePolygonRestriction + * Base classe for an airspace restriction defined by a polygon + */ + +class AirspacePolygonRestriction : public AirspaceRestriction +{ + Q_OBJECT +public: + AirspacePolygonRestriction(const QVariantList& polygon, QString advisoryID, QColor color, QColor lineColor, float lineWidth, QObject* parent = nullptr); + Q_PROPERTY(QVariantList polygon READ polygon CONSTANT) + QVariantList polygon() { return _polygon; } +private: + QVariantList _polygon; +}; + +/** + * @class AirspaceRestriction + * Base classe for an airspace restriction defined by a circle + */ + +class AirspaceCircularRestriction : public AirspaceRestriction +{ + Q_OBJECT +public: + AirspaceCircularRestriction(const QGeoCoordinate& center, double radius, QString advisoryID, QColor color, QColor lineColor, float lineWidth, QObject* parent = nullptr); + Q_PROPERTY(QGeoCoordinate center READ center CONSTANT) + Q_PROPERTY(double radius READ radius CONSTANT) + QGeoCoordinate center () { return _center; } + double radius () { return _radius; } +private: + QGeoCoordinate _center; + double _radius; +}; + diff --git a/android/src/AndroidInterface.h b/src/AirspaceManagement/AirspaceRestrictionProvider.cc similarity index 53% rename from android/src/AndroidInterface.h rename to src/AirspaceManagement/AirspaceRestrictionProvider.cc index a03370a..f3d7df9 100644 --- a/android/src/AndroidInterface.h +++ b/src/AirspaceManagement/AirspaceRestrictionProvider.cc @@ -1,21 +1,15 @@ /**************************************************************************** * - * Copyright (C) 2018 Pinecone Inc. All rights reserved. + * (c) 2009-2020 QGROUNDCONTROL PROJECT * * QGroundControl is licensed according to the terms in the file * COPYING.md in the root of the source code directory. * ****************************************************************************/ -#pragma once +#include "AirspaceRestrictionProvider.h" -#include -#include -#include -#include - -class AndroidInterface +AirspaceRestrictionProvider::AirspaceRestrictionProvider(QObject *parent) + : QObject(parent) { -public: - static QString getSDCardPath(); -}; +} diff --git a/src/AirspaceManagement/AirspaceRestrictionProvider.h b/src/AirspaceManagement/AirspaceRestrictionProvider.h new file mode 100644 index 0000000..6e1a0fc --- /dev/null +++ b/src/AirspaceManagement/AirspaceRestrictionProvider.h @@ -0,0 +1,45 @@ +/**************************************************************************** + * + * (c) 2009-2020 QGROUNDCONTROL PROJECT + * + * QGroundControl is licensed according to the terms in the file + * COPYING.md in the root of the source code directory. + * + ****************************************************************************/ + +#pragma once + +/** + * @class AirspaceRestrictionProvider + * Base class that queries for airspace restrictions + */ + +#include "QmlObjectListModel.h" +#include "QGCGeoBoundingCube.h" + +#include +#include +#include + +class AirspacePolygonRestriction; +class AirspaceCircularRestriction; + +class AirspaceRestrictionProvider : public QObject { + Q_OBJECT +public: + AirspaceRestrictionProvider (QObject* parent = nullptr); + ~AirspaceRestrictionProvider () = default; + + Q_PROPERTY(QmlObjectListModel* polygons READ polygons CONSTANT) + Q_PROPERTY(QmlObjectListModel* circles READ circles CONSTANT) + + /** + * Set region of interest that should be queried. When finished, the requestDone() signal will be emmited. + * @param center Center coordinate for ROI + * @param radiusMeters Radius in meters around center which is of interest + */ + virtual void setROI (const QGCGeoBoundingCube& roi, bool reset = false) = 0; + + virtual QmlObjectListModel* polygons () = 0; ///< List of AirspacePolygonRestriction objects + virtual QmlObjectListModel* circles () = 0; ///< List of AirspaceCircularRestriction objects +}; diff --git a/src/AirspaceManagement/AirspaceRulesetsProvider.cc b/src/AirspaceManagement/AirspaceRulesetsProvider.cc new file mode 100644 index 0000000..80ad754 --- /dev/null +++ b/src/AirspaceManagement/AirspaceRulesetsProvider.cc @@ -0,0 +1,30 @@ +/**************************************************************************** + * + * (c) 2009-2020 QGROUNDCONTROL PROJECT + * + * QGroundControl is licensed according to the terms in the file + * COPYING.md in the root of the source code directory. + * + ****************************************************************************/ + +#include "AirspaceRulesetsProvider.h" + +AirspaceRuleFeature::AirspaceRuleFeature(QObject* parent) + : QObject(parent) +{ +} + +AirspaceRule::AirspaceRule(QObject *parent) + : QObject(parent) +{ +} + +AirspaceRuleSet::AirspaceRuleSet(QObject* parent) + : QObject(parent) +{ +} + +AirspaceRulesetsProvider::AirspaceRulesetsProvider(QObject *parent) + : QObject(parent) +{ +} diff --git a/src/AirspaceManagement/AirspaceRulesetsProvider.h b/src/AirspaceManagement/AirspaceRulesetsProvider.h new file mode 100644 index 0000000..5168713 --- /dev/null +++ b/src/AirspaceManagement/AirspaceRulesetsProvider.h @@ -0,0 +1,173 @@ +/**************************************************************************** + * + * (c) 2009-2020 QGROUNDCONTROL PROJECT + * + * QGroundControl is licensed according to the terms in the file + * COPYING.md in the root of the source code directory. + * + ****************************************************************************/ + +#pragma once + +//----------------------------------------------------------------------------- +/** + * @class AirspaceRulesetsProvider + * Base class that queries for airspace rulesets + */ + +#include "QmlObjectListModel.h" +#include "QGCGeoBoundingCube.h" + +#include +#include + +//----------------------------------------------------------------------------- +class AirspaceRuleFeature : public QObject +{ + Q_OBJECT +public: + + enum Type { + Unknown, + Boolean, + Float, + String, + }; + + enum Measurement { + UnknownMeasurement, + Speed, + Weight, + Distance, + }; + + enum Unit { + UnknownUnit, + Kilogram, + Meters, + MetersPerSecond, + }; + + Q_ENUM(Type) + Q_ENUM(Measurement) + Q_ENUM(Unit) + + AirspaceRuleFeature(QObject* parent = nullptr); + + Q_PROPERTY(quint32 id READ id CONSTANT) + Q_PROPERTY(Type type READ type CONSTANT) + Q_PROPERTY(Unit unit READ unit CONSTANT) + Q_PROPERTY(Measurement measurement READ measurement CONSTANT) + Q_PROPERTY(QString name READ name CONSTANT) + Q_PROPERTY(QString description READ description CONSTANT) + Q_PROPERTY(QVariant value READ value WRITE setValue NOTIFY valueChanged) + + virtual quint32 id () = 0; + virtual Type type () = 0; + virtual Unit unit () = 0; + virtual Measurement measurement () = 0; + virtual QString name () = 0; + virtual QString description () = 0; + virtual QVariant value () = 0; + virtual void setValue (const QVariant val) = 0; + +signals: + void valueChanged (); +}; + +//----------------------------------------------------------------------------- +class AirspaceRule : public QObject +{ + Q_OBJECT +public: + + enum Status { + Conflicting, ///< The rule is conflicting. + MissingInfo, ///< The evaluation requires further information. + NotConflicting, ///< The rule is not conflicting, all good to go. + Informational, ///< The rule is of informational nature. + Unknown, ///< The status of the rule is unknown. + }; + + Q_ENUM(Status) + + AirspaceRule(QObject* parent = nullptr); + + Q_PROPERTY(Status status READ status CONSTANT) + Q_PROPERTY(QString shortText READ shortText CONSTANT) + Q_PROPERTY(QString description READ description CONSTANT) + Q_PROPERTY(QmlObjectListModel* features READ features CONSTANT) + + virtual Status status () = 0; + virtual QString shortText () = 0; + virtual QString description () = 0; + virtual QmlObjectListModel* features () = 0; ///< List of AirspaceRuleFeature +}; + +//----------------------------------------------------------------------------- +class AirspaceRuleSet : public QObject +{ + Q_OBJECT +public: + + enum SelectionType { + Pickone, ///< One rule from the overall set needs to be picked. + Required, ///< Satisfying the RuleSet is required. + Optional ///< Satisfying the RuleSet is not required. + }; + + Q_ENUM(SelectionType) + + AirspaceRuleSet(QObject* parent = nullptr); + + Q_PROPERTY(QString id READ id CONSTANT) + Q_PROPERTY(QString name READ name CONSTANT) + Q_PROPERTY(QString shortName READ shortName CONSTANT) + Q_PROPERTY(QString description READ description CONSTANT) + Q_PROPERTY(bool isDefault READ isDefault CONSTANT) + Q_PROPERTY(SelectionType selectionType READ selectionType CONSTANT) + Q_PROPERTY(bool selected READ selected WRITE setSelected NOTIFY selectedChanged) + Q_PROPERTY(QmlObjectListModel* rules READ rules CONSTANT) + + virtual QString id () = 0; + virtual QString description () = 0; + virtual bool isDefault () = 0; + virtual QString name () = 0; + virtual QString shortName () = 0; + virtual SelectionType selectionType () = 0; + virtual bool selected () = 0; + virtual void setSelected (bool sel) = 0; + virtual QmlObjectListModel* rules () = 0; ///< List of AirspaceRule + +signals: + void selectedChanged (); + +}; + +//----------------------------------------------------------------------------- +class AirspaceRulesetsProvider : public QObject { + Q_OBJECT +public: + AirspaceRulesetsProvider (QObject* parent = nullptr); + ~AirspaceRulesetsProvider () = default; + + Q_PROPERTY(bool valid READ valid NOTIFY ruleSetsChanged) + Q_PROPERTY(QString selectedRuleSets READ selectedRuleSets NOTIFY selectedRuleSetsChanged) + Q_PROPERTY(QmlObjectListModel* ruleSets READ ruleSets NOTIFY ruleSetsChanged) + + Q_INVOKABLE virtual void clearAllFeatures() {;} ///< Clear all saved (persistent) feature values + + virtual bool valid () = 0; ///< Current ruleset is valid + virtual QmlObjectListModel* ruleSets () = 0; ///< List of AirspaceRuleSet + virtual QString selectedRuleSets() = 0; ///< All selected rules concatenated into a string + /** + * Set region of interest that should be queried. When finished, the rulesChanged() signal will be emmited. + * @param center Center coordinate for ROI + */ + virtual void setROI (const QGCGeoBoundingCube& roi, bool reset = false) = 0; + +signals: + void ruleSetsChanged (); + void selectedRuleSetsChanged (); +}; + diff --git a/src/AirspaceManagement/AirspaceVehicleManager.cc b/src/AirspaceManagement/AirspaceVehicleManager.cc new file mode 100644 index 0000000..099a8cd --- /dev/null +++ b/src/AirspaceManagement/AirspaceVehicleManager.cc @@ -0,0 +1,40 @@ +/**************************************************************************** + * + * (c) 2009-2020 QGROUNDCONTROL PROJECT + * + * QGroundControl is licensed according to the terms in the file + * COPYING.md in the root of the source code directory. + * + ****************************************************************************/ + + +#include "AirspaceManager.h" +#include "AirspaceVehicleManager.h" +#include "Vehicle.h" +#include "MissionItem.h" + +AirspaceVehicleManager::AirspaceVehicleManager(const Vehicle& vehicle) + : _vehicle(vehicle) +{ + qCDebug(AirspaceManagementLog) << "Instatiating AirspaceVehicleManager"; + connect(&_vehicle, &Vehicle::armedChanged, this, &AirspaceVehicleManager::_vehicleArmedChanged); + connect(&_vehicle, &Vehicle::mavlinkMessageReceived, this, &AirspaceVehicleManager::vehicleMavlinkMessageReceived); +} + +void AirspaceVehicleManager::_vehicleArmedChanged(bool armed) +{ + if (armed) { + qCDebug(AirspaceManagementLog) << "Starting telemetry"; + startTelemetryStream(); + _vehicleWasInMissionMode = _vehicle.flightMode() == _vehicle.missionFlightMode(); + } else { + qCDebug(AirspaceManagementLog) << "Stopping telemetry"; + stopTelemetryStream(); + // end the flight if we were in mission mode during arming or disarming + // TODO: needs to be improved. for instance if we do RTL and then want to continue the mission... + if (_vehicleWasInMissionMode || _vehicle.flightMode() == _vehicle.missionFlightMode()) { + endFlight(); + } + } +} + diff --git a/src/AirspaceManagement/AirspaceVehicleManager.h b/src/AirspaceManagement/AirspaceVehicleManager.h new file mode 100644 index 0000000..8531478 --- /dev/null +++ b/src/AirspaceManagement/AirspaceVehicleManager.h @@ -0,0 +1,58 @@ +/**************************************************************************** + * + * (c) 2009-2020 QGROUNDCONTROL PROJECT + * + * QGroundControl is licensed according to the terms in the file + * COPYING.md in the root of the source code directory. + * + ****************************************************************************/ + +#pragma once + +#include "AirspaceFlightPlanProvider.h" +#include "QGCMAVLink.h" + +#include +#include +#include + +class Vehicle; + +//----------------------------------------------------------------------------- +/** + * @class AirspaceVehicleManager + * Base class for per-vehicle management (each vehicle has one (or zero) of these) + */ + +class AirspaceVehicleManager : public QObject { + Q_OBJECT +public: + AirspaceVehicleManager (const Vehicle& vehicle); + virtual ~AirspaceVehicleManager () = default; + + /** + * Setup the connection and start sending telemetry + */ + virtual void startTelemetryStream () = 0; + virtual void stopTelemetryStream () = 0; + virtual bool isTelemetryStreaming () = 0; + +public slots: + virtual void endFlight () = 0; + +signals: + void trafficUpdate (bool alert, QString traffic_id, QString vehicle_id, QGeoCoordinate location, float heading); + void flightPermitStatusChanged (); + +protected slots: + virtual void vehicleMavlinkMessageReceived(const mavlink_message_t& message) = 0; + +protected: + const Vehicle& _vehicle; + +private slots: + void _vehicleArmedChanged (bool armed); + +private: + bool _vehicleWasInMissionMode = false; ///< true if the vehicle was in mission mode when arming +}; diff --git a/src/AirspaceManagement/AirspaceWeatherInfoProvider.cc b/src/AirspaceManagement/AirspaceWeatherInfoProvider.cc new file mode 100644 index 0000000..74a0c7c --- /dev/null +++ b/src/AirspaceManagement/AirspaceWeatherInfoProvider.cc @@ -0,0 +1,15 @@ +/**************************************************************************** + * + * (c) 2009-2020 QGROUNDCONTROL PROJECT + * + * QGroundControl is licensed according to the terms in the file + * COPYING.md in the root of the source code directory. + * + ****************************************************************************/ + +#include "AirspaceWeatherInfoProvider.h" + +AirspaceWeatherInfoProvider::AirspaceWeatherInfoProvider(QObject *parent) + : QObject(parent) +{ +} diff --git a/src/AirspaceManagement/AirspaceWeatherInfoProvider.h b/src/AirspaceManagement/AirspaceWeatherInfoProvider.h new file mode 100644 index 0000000..9231b98 --- /dev/null +++ b/src/AirspaceManagement/AirspaceWeatherInfoProvider.h @@ -0,0 +1,58 @@ +/**************************************************************************** + * + * (c) 2009-2020 QGROUNDCONTROL PROJECT + * + * QGroundControl is licensed according to the terms in the file + * COPYING.md in the root of the source code directory. + * + ****************************************************************************/ + +#pragma once + +/** + * @file AirspaceWeatherInfoProvider.h + * Weather information provided by the Airspace Managemement + */ + +#include "QGCGeoBoundingCube.h" +#include +#include + +class AirspaceWeatherInfoProvider : public QObject +{ + Q_OBJECT +public: + AirspaceWeatherInfoProvider(QObject *parent = nullptr); + virtual ~AirspaceWeatherInfoProvider() {} + + Q_PROPERTY(bool valid READ valid NOTIFY weatherChanged) + Q_PROPERTY(QString condition READ condition NOTIFY weatherChanged) + Q_PROPERTY(QString icon READ icon NOTIFY weatherChanged) + Q_PROPERTY(quint32 windHeading READ windHeading NOTIFY weatherChanged) + Q_PROPERTY(float windSpeed READ windSpeed NOTIFY weatherChanged) + Q_PROPERTY(quint32 windGusting READ windGusting NOTIFY weatherChanged) + Q_PROPERTY(float temperature READ temperature NOTIFY weatherChanged) + Q_PROPERTY(float humidity READ humidity NOTIFY weatherChanged) + Q_PROPERTY(float visibility READ visibility NOTIFY weatherChanged) + Q_PROPERTY(float precipitation READ precipitation NOTIFY weatherChanged) + + virtual bool valid () = 0; ///< Current weather data is valid + virtual QString condition () = 0; ///< The overall weather condition. + virtual QString icon () = 0; ///< 2:1 Aspect ratio icon url ready to be used by an Image QML Item + virtual quint32 windHeading () = 0; ///< The heading in [°]. + virtual float windSpeed () = 0; ///< The speed in [°]. + virtual quint32 windGusting () = 0; + virtual float temperature () = 0; ///< The temperature in [°C]. + virtual float humidity () = 0; + virtual float visibility () = 0; ///< Visibility in [m]. + virtual float precipitation () = 0; ///< The probability of precipitation in [%]. + + /** + * Set region of interest that should be queried. When finished, the weatherChanged() signal will be emmited. + * @param center Center coordinate for ROI + */ + virtual void setROI (const QGCGeoBoundingCube& roi, bool reset = false) = 0; + +signals: + void weatherChanged (); +}; diff --git a/src/AirspaceManagement/CMakeLists.txt b/src/AirspaceManagement/CMakeLists.txt new file mode 100644 index 0000000..306abee --- /dev/null +++ b/src/AirspaceManagement/CMakeLists.txt @@ -0,0 +1,14 @@ + +if(QGC_AIRMAP) + add_library(AirspaceManagement + AirspaceManagement/AirspaceAdvisoryProvider.cc + AirspaceManagement/AirspaceFlightPlanProvider.cc + AirspaceManagement/AirspaceManager.cc + AirspaceManagement/AirspaceRestriction.cc + AirspaceManagement/AirspaceRestrictionProvider.cc + AirspaceManagement/AirspaceRulesetsProvider.cc + AirspaceManagement/AirspaceVehicleManager.cc + AirspaceManagement/AirspaceWeatherInfoProvider.cc + ) +endif() + diff --git a/src/AnalyzeView/AnalyzeView.qml b/src/AnalyzeView/AnalyzeView.qml index 798006c..16fb327 100644 --- a/src/AnalyzeView/AnalyzeView.qml +++ b/src/AnalyzeView/AnalyzeView.qml @@ -127,8 +127,43 @@ Rectangle { property string title Connections { - target: panelLoader.item - onPopout: mainWindow.createrWindowedAnalyzePage(panelLoader.title, panelLoader.source) + target: panelLoader.item + onPopout: { + var windowedPage = windowedAnalyzePage.createObject(mainWindow) + windowedPage.title = panelLoader.title + windowedPage.source = panelLoader.source + _root.popout() + } } + + } + + Component { + id: windowedAnalyzePage + + Window { + width: ScreenTools.defaultFontPixelWidth * 100 + height: ScreenTools.defaultFontPixelHeight * 40 + visible: true + + property alias source: loader.source + + Rectangle { + color: QGroundControl.globalPalette.window + anchors.fill: parent + + Loader { + id: loader + anchors.fill: parent + onLoaded: item.popped = true + } + } + + onClosing: { + visible = false + source = "" + } + } + } } diff --git a/src/AnalyzeView/LogDownloadController.cc b/src/AnalyzeView/LogDownloadController.cc index a5cd060..1f66f85 100644 --- a/src/AnalyzeView/LogDownloadController.cc +++ b/src/AnalyzeView/LogDownloadController.cc @@ -175,7 +175,7 @@ LogDownloadController::_logEntry(UASInterface* uas, uint32_t time_utc, uint32_t if(id < _logEntriesModel.count()) { QGCLogEntry* entry = _logEntriesModel[id]; entry->setSize(size); - entry->setTime(QDateTime::fromSecsSinceEpoch(time_utc)); + entry->setTime(QDateTime::fromTime_t(time_utc)); entry->setReceived(true); entry->setStatus(tr("Available")); } else { diff --git a/src/AnalyzeView/LogDownloadPage.qml b/src/AnalyzeView/LogDownloadPage.qml index 863274a..2ecb7d9 100644 --- a/src/AnalyzeView/LogDownloadPage.qml +++ b/src/AnalyzeView/LogDownloadPage.qml @@ -60,7 +60,6 @@ AnalyzePage { width: ScreenTools.defaultFontPixelWidth * 6 horizontalAlignment: Text.AlignHCenter delegate : Text { - color: styleData.textColor horizontalAlignment: Text.AlignHCenter text: { var o = logController.model.get(styleData.row) @@ -74,7 +73,6 @@ AnalyzePage { width: ScreenTools.defaultFontPixelWidth * 34 horizontalAlignment: Text.AlignHCenter delegate: Text { - color: styleData.textColor text: { var o = logController.model.get(styleData.row) if (o) { @@ -84,7 +82,7 @@ AnalyzePage { if(d.getUTCFullYear() < 2010) return qsTr("Date Unknown") else - return d.toLocaleString(undefined, "short") + return d.toLocaleString() } } return "" @@ -97,7 +95,6 @@ AnalyzePage { width: ScreenTools.defaultFontPixelWidth * 18 horizontalAlignment: Text.AlignHCenter delegate : Text { - color: styleData.textColor horizontalAlignment: Text.AlignRight text: { var o = logController.model.get(styleData.row) @@ -111,7 +108,6 @@ AnalyzePage { width: ScreenTools.defaultFontPixelWidth * 22 horizontalAlignment: Text.AlignHCenter delegate : Text { - color: styleData.textColor horizontalAlignment: Text.AlignHCenter text: { var o = logController.model.get(styleData.row) @@ -173,10 +169,21 @@ AnalyzePage { enabled: !logController.requestingList && !logController.downloadingLogs && logController.model.count > 0 text: qsTr("Erase All") width: _butttonWidth - onClicked: mainWindow.showMessageDialog(qsTr("Delete All Log Files"), - qsTr("All log files will be erased permanently. Is this really what you want?"), - StandardButton.Yes | StandardButton.No, - function() { logController.eraseAll() }) + onClicked: mainWindow.showComponentDialog( + eraseAllMessage, + qsTr("Delete All Log Files"), + mainWindow.showDialogDefaultWidth, + StandardButton.Yes | StandardButton.No) + Component { + id: eraseAllMessage + QGCViewMessage { + message: qsTr("All log files will be erased permanently. Is this really what you want?") + function accept() { + logController.eraseAll() + hideDialog() + } + } + } } QGCButton { text: qsTr("Cancel") diff --git a/src/AnalyzeView/VibrationPage.qml b/src/AnalyzeView/VibrationPage.qml index 3c6e432..345e2ec 100644 --- a/src/AnalyzeView/VibrationPage.qml +++ b/src/AnalyzeView/VibrationPage.qml @@ -21,7 +21,7 @@ import QGroundControl.ScreenTools 1.0 import QGroundControl.Controllers 1.0 AnalyzePage { - id: vibrationPage + id: geoTagPage pageComponent: pageComponent pageDescription: qsTr("Analyze vibration associated with your vehicle.") allowPopout: true @@ -29,7 +29,7 @@ AnalyzePage { property var _activeVehicle: QGroundControl.multiVehicleManager.activeVehicle ? QGroundControl.multiVehicleManager.activeVehicle : QGroundControl.multiVehicleManager.offlineEditingVehicle property bool _available: !isNaN(_activeVehicle.vibration.xAxis.rawValue) property real _margins: ScreenTools.defaultFontPixelWidth / 2 - property real _barWidth: ScreenTools.defaultFontPixelWidth * 7 + property real _barWidth: ScreenTools.defaultFontPixelWidth * 3 property real _barHeight: ScreenTools.defaultFontPixelHeight * 10 property real _xValue: _activeVehicle.vibration.xAxis.rawValue property real _yValue: _activeVehicle.vibration.yAxis.rawValue @@ -38,7 +38,6 @@ AnalyzePage { readonly property real _barMinimum: 0.0 readonly property real _barMaximum: 90.0 readonly property real _barBadValue: 60.0 - readonly property real _barMidValue: 30.0 QGCPalette { id:qgcPal; colorGroupEnabled: true } @@ -51,7 +50,7 @@ AnalyzePage { RowLayout { id: barRow - spacing: ScreenTools.defaultFontPixelWidth * 2 + spacing: ScreenTools.defaultFontPixelWidth * 4 ColumnLayout { Rectangle { @@ -59,7 +58,6 @@ AnalyzePage { height: _barHeight width: _barWidth Layout.alignment: Qt.AlignHCenter - color: "transparent" border.width: 1 border.color: qgcPal.text @@ -69,42 +67,19 @@ AnalyzePage { height: parent.height * (Math.min(_barMaximum, _xValue) / (_barMaximum - _barMinimum)) color: qgcPal.text } - - // Max vibe indication line at 60 - Rectangle { - anchors.topMargin: parent.height * (1.0 - ((_barBadValue - _barMinimum) / (_barMaximum - _barMinimum))) - anchors.top: parent.top - anchors.left: parent.left - anchors.right: parent.right - width: parent.width - height: 1 - color: "red" - } - - // Mid vibe indication line at 30 - Rectangle { - anchors.topMargin: parent.height * (1.0 - ((_barMidValue - _barMinimum) / (_barMaximum - _barMinimum))) - anchors.top: parent.top - anchors.left: parent.left - anchors.right: parent.right - width: parent.width - height: 1 - color: "red" - } } QGCLabel { Layout.alignment: Qt.AlignHCenter - text: qsTr("X (%1)").arg(_xValue.toFixed(0)) + text: qsTr("X") } } - ColumnLayout { + Column { Rectangle { height: _barHeight width: _barWidth Layout.alignment: Qt.AlignHCenter - color: "transparent" border.width: 1 border.color: qgcPal.text @@ -114,42 +89,19 @@ AnalyzePage { height: parent.height * (Math.min(_barMaximum, _yValue) / (_barMaximum - _barMinimum)) color: qgcPal.text } - - // Max vibe indication line at 60 - Rectangle { - anchors.topMargin: parent.height * (1.0 - ((_barBadValue - _barMinimum) / (_barMaximum - _barMinimum))) - anchors.top: parent.top - anchors.left: parent.left - anchors.right: parent.right - width: parent.width - height: 1 - color: "red" - } - - // Mid vibe indication line at 30 - Rectangle { - anchors.topMargin: parent.height * (1.0 - ((_barMidValue - _barMinimum) / (_barMaximum - _barMinimum))) - anchors.top: parent.top - anchors.left: parent.left - anchors.right: parent.right - width: parent.width - height: 1 - color: "red" - } } QGCLabel { Layout.alignment: Qt.AlignHCenter - text: qsTr("Y (%1)").arg(_yValue.toFixed(0)) + text: qsTr("Y") } } - ColumnLayout { + Column { Rectangle { height: _barHeight width: _barWidth Layout.alignment: Qt.AlignHCenter - color: "transparent" border.width: 1 border.color: qgcPal.text @@ -159,37 +111,26 @@ AnalyzePage { height: parent.height * (Math.min(_barMaximum, _zValue) / (_barMaximum - _barMinimum)) color: qgcPal.text } - - // Max vibe indication line at 60 - Rectangle { - anchors.topMargin: parent.height * (1.0 - ((_barBadValue - _barMinimum) / (_barMaximum - _barMinimum))) - anchors.top: parent.top - anchors.left: parent.left - anchors.right: parent.right - width: parent.width - height: 1 - color: "red" - } - - // Mid vibe indication line at 30 - Rectangle { - anchors.topMargin: parent.height * (1.0 - ((_barMidValue - _barMinimum) / (_barMaximum - _barMinimum))) - anchors.top: parent.top - anchors.left: parent.left - anchors.right: parent.right - width: parent.width - height: 1 - color: "red" - } } QGCLabel { Layout.alignment: Qt.AlignHCenter - text: qsTr("Z (%1)").arg(_zValue.toFixed(0)) + text: qsTr("Z") } } } + // Max vibe indication line at 60 + Rectangle { + anchors.topMargin: xBar.height * (1.0 - ((_barBadValue - _barMinimum) / (_barMaximum - _barMinimum))) + anchors.top: barRow.top + anchors.left: barRow.left + anchors.right: barRow.right + width: barRow.width + height: 1 + color: "red" + } + Column { anchors.margins: ScreenTools.defaultFontPixelWidth anchors.left: barRow.right @@ -199,15 +140,15 @@ AnalyzePage { } QGCLabel { - text: qsTr("Accel 1: %1").arg(_activeVehicle.vibration.clipCount1.rawValue) + text: qsTr("Accel 1: ") + (_activeVehicle.vibration.clipCount1.rawValueString) } QGCLabel { - text: qsTr("Accel 2: %1").arg(_activeVehicle.vibration.clipCount2.rawValue) + text: qsTr("Accel 2: ") + (_activeVehicle.vibration.clipCount2.rawValueString) } QGCLabel { - text: qsTr("Accel 3: %1").arg(_activeVehicle.vibration.clipCount3.rawValue) + text: qsTr("Accel 3: ") + (_activeVehicle.vibration.clipCount3.rawValueString) } } diff --git a/src/AutoPilotPlugins/APM/APMAutoPilotPlugin.cc b/src/AutoPilotPlugins/APM/APMAutoPilotPlugin.cc index a8c2091..4500c00 100644 --- a/src/AutoPilotPlugins/APM/APMAutoPilotPlugin.cc +++ b/src/AutoPilotPlugins/APM/APMAutoPilotPlugin.cc @@ -29,7 +29,6 @@ #include "APMFollowComponent.h" #include "ESP8266Component.h" #include "APMHeliComponent.h" -#include "APMRemoteSupportComponent.h" #include "QGCApplication.h" #include "ParameterManager.h" @@ -54,7 +53,6 @@ APMAutoPilotPlugin::APMAutoPilotPlugin(Vehicle* vehicle, QObject* parent) , _tuningComponent (nullptr) , _esp8266Component (nullptr) , _heliComponent (nullptr) - , _apmRemoteSupportComponent(nullptr) #if 0 // Follow me not ready for Stable , _followComponent (nullptr) @@ -154,10 +152,6 @@ const QVariantList& APMAutoPilotPlugin::vehicleComponents(void) _esp8266Component->setupTriggerSignals(); _components.append(QVariant::fromValue((VehicleComponent*)_esp8266Component)); } - - _apmRemoteSupportComponent = new APMRemoteSupportComponent(_vehicle, this); - _apmRemoteSupportComponent->setupTriggerSignals(); - _components.append(QVariant::fromValue((VehicleComponent*)_apmRemoteSupportComponent)); } else { qWarning() << "Call to vehicleCompenents prior to parametersReady"; } diff --git a/src/AutoPilotPlugins/APM/APMAutoPilotPlugin.h b/src/AutoPilotPlugins/APM/APMAutoPilotPlugin.h index 57c9b04..410fb8b 100644 --- a/src/AutoPilotPlugins/APM/APMAutoPilotPlugin.h +++ b/src/AutoPilotPlugins/APM/APMAutoPilotPlugin.h @@ -27,7 +27,6 @@ class APMLightsComponent; class APMSubFrameComponent; class ESP8266Component; class APMHeliComponent; -class APMRemoteSupportComponent; class APMFollowComponent; /// This is the APM specific implementation of the AutoPilot class. @@ -58,7 +57,6 @@ protected: APMTuningComponent* _tuningComponent; ESP8266Component* _esp8266Component; APMHeliComponent* _heliComponent; - APMRemoteSupportComponent* _apmRemoteSupportComponent; #if 0 // Follow me not ready for Stable APMFollowComponent* _followComponent; diff --git a/src/AutoPilotPlugins/APM/APMCameraSubComponent.qml b/src/AutoPilotPlugins/APM/APMCameraSubComponent.qml index d73b408..97cfa89 100644 --- a/src/AutoPilotPlugins/APM/APMCameraSubComponent.qml +++ b/src/AutoPilotPlugins/APM/APMCameraSubComponent.qml @@ -70,8 +70,6 @@ SetupPage { property Fact _rc12Function: controller.getParameterFact(-1, "r.SERVO12_FUNCTION") property Fact _rc13Function: controller.getParameterFact(-1, "r.SERVO13_FUNCTION") property Fact _rc14Function: controller.getParameterFact(-1, "r.SERVO14_FUNCTION") - property Fact _rc15Function: controller.getParameterFact(-1, "r.SERVO15_FUNCTION") - property Fact _rc16Function: controller.getParameterFact(-1, "r.SERVO16_FUNCTION") // These enable/disable the options for setting up each axis property bool _tiltEnabled: false @@ -89,7 +87,7 @@ SetupPage { readonly property int _rcFunctionMountTilt: 7 readonly property int _rcFunctionMountRoll: 8 readonly property int _firstGimbalOutChannel: 5 - readonly property int _lastGimbalOutChannel: 16 + readonly property int _lastGimbalOutChannel: 14 readonly property int _mountDefaultModeRCTargetting: 3 Component.onCompleted: { @@ -163,8 +161,6 @@ SetupPage { Connections { target: _rc12Function; onValueChanged: calcGimbalOutValues() } Connections { target: _rc13Function; onValueChanged: calcGimbalOutValues() } Connections { target: _rc14Function; onValueChanged: calcGimbalOutValues() } - Connections { target: _rc15Function; onValueChanged: calcGimbalOutValues() } - Connections { target: _rc16Function; onValueChanged: calcGimbalOutValues() } // Whenever an MNT_RC_IN_* setting is changed make sure to turn on RC targeting Connections { @@ -195,8 +191,6 @@ SetupPage { ListElement { text: qsTr("Channel 12"); value: 12 } ListElement { text: qsTr("Channel 13"); value: 13 } ListElement { text: qsTr("Channel 14"); value: 14 } - ListElement { text: qsTr("Channel 15"); value: 15 } - ListElement { text: qsTr("Channel 16"); value: 16 } } QGCCheckBox { diff --git a/src/AutoPilotPlugins/APM/APMCompassCal.cc b/src/AutoPilotPlugins/APM/APMCompassCal.cc new file mode 100644 index 0000000..23a4359 --- /dev/null +++ b/src/AutoPilotPlugins/APM/APMCompassCal.cc @@ -0,0 +1,690 @@ +/**************************************************************************** + * + * (c) 2009-2020 QGROUNDCONTROL PROJECT + * + * QGroundControl is licensed according to the terms in the file + * COPYING.md in the root of the source code directory. + * + ****************************************************************************/ + + +#include "APMCompassCal.h" +#include "AutoPilotPlugin.h" +#include "ParameterManager.h" + +QGC_LOGGING_CATEGORY(APMCompassCalLog, "APMCompassCalLog") + +const float CalWorkerThread::mag_sphere_radius = 0.2f; +const unsigned int CalWorkerThread::calibration_sides = 6; +const unsigned int CalWorkerThread::calibration_total_points = 240; +const unsigned int CalWorkerThread::calibraton_duration_seconds = CalWorkerThread::calibration_sides * 10; + +const char* CalWorkerThread::rgCompassParams[3][4] = { + { "COMPASS_OFS_X", "COMPASS_OFS_Y", "COMPASS_OFS_Z", "COMPASS_DEV_ID" }, + { "COMPASS_OFS2_X", "COMPASS_OFS2_Y", "COMPASS_OFS2_Z", "COMPASS_DEV_ID2" }, + { "COMPASS_OFS3_X", "COMPASS_OFS3_Y", "COMPASS_OFS3_Z", "COMPASS_DEV_ID3" }, +}; + +CalWorkerThread::CalWorkerThread(Vehicle* vehicle, QObject* parent) + : QThread(parent) + , _vehicle(vehicle) + , _cancel(false) +{ + +} + +void CalWorkerThread::run(void) +{ + if (calibrate() == calibrate_return_ok) { + _emitVehicleTextMessage(QStringLiteral("[cal] progress <100>")); + _emitVehicleTextMessage(QStringLiteral("[cal] calibration done: mag")); + } +} + +void CalWorkerThread::_emitVehicleTextMessage(const QString& message) +{ + emit vehicleTextMessage(_vehicle->id(), 0, MAV_SEVERITY_INFO, message); + qCDebug(APMCompassCalLog) << message; +} + +unsigned CalWorkerThread::progress_percentage(mag_worker_data_t* worker_data) +{ + return 100 * ((float)worker_data->done_count) / calibration_sides; +} + +CalWorkerThread::calibrate_return CalWorkerThread::calibrate(void) +{ + calibrate_return result = calibrate_return_ok; + + mag_worker_data_t worker_data; + + worker_data.done_count = 0; + worker_data.calibration_points_perside = calibration_total_points / calibration_sides; + worker_data.calibration_interval_perside_seconds = calibraton_duration_seconds / calibration_sides; + worker_data.calibration_interval_perside_useconds = worker_data.calibration_interval_perside_seconds * 1000 * 1000; + + // Collect data for all sides + worker_data.side_data_collected[DETECT_ORIENTATION_RIGHTSIDE_UP] = false; + worker_data.side_data_collected[DETECT_ORIENTATION_LEFT] = false; + worker_data.side_data_collected[DETECT_ORIENTATION_NOSE_DOWN] = false; + worker_data.side_data_collected[DETECT_ORIENTATION_TAIL_DOWN] = false; + worker_data.side_data_collected[DETECT_ORIENTATION_UPSIDE_DOWN] = false; + worker_data.side_data_collected[DETECT_ORIENTATION_RIGHT] = false; + + for (size_t cur_mag=0; cur_mag(malloc(sizeof(float) * calibration_points_maxcount)); + worker_data.y[cur_mag] = reinterpret_cast(malloc(sizeof(float) * calibration_points_maxcount)); + worker_data.z[cur_mag] = reinterpret_cast(malloc(sizeof(float) * calibration_points_maxcount)); + if (worker_data.x[cur_mag] == nullptr || worker_data.y[cur_mag] == nullptr || worker_data.z[cur_mag] == nullptr) { + _emitVehicleTextMessage(QStringLiteral("[cal] ERROR: out of memory")); + result = calibrate_return_error; + } + } + } + + if (result == calibrate_return_ok) { + result = calibrate_from_orientation( + worker_data.side_data_collected, // Sides to calibrate + &worker_data); // Opaque data for calibration worked + } + + // Calculate calibration values for each mag + + float sphere_x[max_mags]; + float sphere_y[max_mags]; + float sphere_z[max_mags]; + float sphere_radius[max_mags]; + + // Sphere fit the data to get calibration values + if (result == calibrate_return_ok) { + for (unsigned cur_mag=0; cur_magsendMavCommand(_vehicle->defaultComponentId(), + MAV_CMD_PREFLIGHT_SET_SENSOR_OFFSETS, + true, /* showErrors */ + sensorId, -sphere_x[cur_mag], -sphere_y[cur_mag], -sphere_z[cur_mag]); + } + } + } + } + + return result; +} + +CalWorkerThread::calibrate_return CalWorkerThread::mag_calibration_worker(detect_orientation_return orientation, void* data) +{ + calibrate_return result = calibrate_return_ok; + + unsigned int calibration_counter_side; + + mag_worker_data_t* worker_data = (mag_worker_data_t*)(data); + + _emitVehicleTextMessage(QStringLiteral("[cal] Rotate vehicle around the detected orientation")); + _emitVehicleTextMessage(QStringLiteral("[cal] Continue rotation for %1 seconds").arg(worker_data->calibration_interval_perside_seconds)); + + uint64_t calibration_deadline = QGC::groundTimeUsecs() + worker_data->calibration_interval_perside_useconds; + + unsigned int loop_interval_usecs = (worker_data->calibration_interval_perside_seconds * 1000000) / worker_data->calibration_points_perside; + + calibration_counter_side = 0; + + while (QGC::groundTimeUsecs() < calibration_deadline && calibration_counter_side < worker_data->calibration_points_perside) { + if (_cancel) { + result = calibrate_return_cancelled; + break; + } + + for (size_t cur_mag=0; cur_magx[cur_mag][worker_data->calibration_counter_total[cur_mag]] = copyLastScaledImu.xmag; + worker_data->y[cur_mag][worker_data->calibration_counter_total[cur_mag]] = copyLastScaledImu.ymag; + worker_data->z[cur_mag][worker_data->calibration_counter_total[cur_mag]] = copyLastScaledImu.zmag; + worker_data->calibration_counter_total[cur_mag]++; + } + + calibration_counter_side++; + + // Progress indicator for side + _emitVehicleTextMessage(QStringLiteral("[cal] %1 side calibration: progress <%2>").arg(detect_orientation_str(orientation)).arg(progress_percentage(worker_data) + + (unsigned)((100 / calibration_sides) * ((float)calibration_counter_side / (float)worker_data->calibration_points_perside)))); + + usleep(loop_interval_usecs); + } + + if (result == calibrate_return_ok) { + _emitVehicleTextMessage(QStringLiteral("[cal] %1 side done, rotate to a different side").arg(detect_orientation_str(orientation))); + + worker_data->done_count++; + _emitVehicleTextMessage(QStringLiteral("[cal] progress <%1>").arg(progress_percentage(worker_data))); + } + + return result; +} + +CalWorkerThread::calibrate_return CalWorkerThread::calibrate_from_orientation( + bool side_data_collected[detect_orientation_side_count], + void* worker_data) +{ + calibrate_return result = calibrate_return_ok; + + unsigned orientation_failures = 0; + + // Rotate through all requested orientations + while (true) { + if (_cancel) { + result = calibrate_return_cancelled; + break; + } + + unsigned int side_complete_count = 0; + + // Update the number of completed sides + for (unsigned i = 0; i < detect_orientation_side_count; i++) { + if (side_data_collected[i]) { + side_complete_count++; + } + } + + if (side_complete_count == detect_orientation_side_count) { + // We have completed all sides, move on + break; + } + + /* inform user which orientations are still needed */ + char pendingStr[256]; + pendingStr[0] = 0; + + for (unsigned int cur_orientation=0; cur_orientation 1000) { + break; + } + } else { + stillDetectTime = QGC::groundTimeMilliseconds(); + stillDetected = true; + } + } else { + stillDetected = false; + } + + if (_cancel) { + break; + } + + // FIXME: No timeout for never detect still + + usleep(1000); + } + + static const uint16_t rawImuOneG = 800; + static const uint16_t rawImuNoGThreshold = 200; + + if (lastX > rawImuOneG && abs(lastY) < rawImuNoGThreshold && abs(lastZ) < rawImuNoGThreshold) { + return DETECT_ORIENTATION_TAIL_DOWN; // [ g, 0, 0 ] + } + + if (lastX < -rawImuOneG && abs(lastY) < rawImuNoGThreshold && abs(lastZ) < rawImuNoGThreshold) { + return DETECT_ORIENTATION_NOSE_DOWN; // [ -g, 0, 0 ] + } + + if (lastY > rawImuOneG && abs(lastX) < rawImuNoGThreshold && abs(lastZ) < rawImuNoGThreshold) { + return DETECT_ORIENTATION_LEFT; // [ 0, g, 0 ] + } + + if (lastY < -rawImuOneG && abs(lastX) < rawImuNoGThreshold && abs(lastZ) < rawImuNoGThreshold) { + return DETECT_ORIENTATION_RIGHT; // [ 0, -g, 0 ] + } + + if (lastZ > rawImuOneG && abs(lastX) < rawImuNoGThreshold && abs(lastY) < rawImuNoGThreshold) { + return DETECT_ORIENTATION_UPSIDE_DOWN; // [ 0, 0, g ] + } + + if (lastZ < -rawImuOneG && abs(lastX) < rawImuNoGThreshold && abs(lastY) < rawImuNoGThreshold) { + return DETECT_ORIENTATION_RIGHTSIDE_UP; // [ 0, 0, -g ] + } + + _emitVehicleTextMessage(QStringLiteral("[cal] ERROR: invalid orientation")); + + return DETECT_ORIENTATION_ERROR; // Can't detect orientation +} + +const char* CalWorkerThread::detect_orientation_str(enum detect_orientation_return orientation) +{ + static const char* rgOrientationStrs[] = { + "back", // tail down + "front", // nose down + "left", + "right", + "up", // upside-down + "down", // right-side up + "error" + }; + + return rgOrientationStrs[orientation]; +} + +int CalWorkerThread::sphere_fit_least_squares(const float x[], const float y[], const float z[], + unsigned int size, unsigned int max_iterations, float delta, float *sphere_x, float *sphere_y, float *sphere_z, + float *sphere_radius) +{ + + float x_sumplain = 0.0f; + float x_sumsq = 0.0f; + float x_sumcube = 0.0f; + + float y_sumplain = 0.0f; + float y_sumsq = 0.0f; + float y_sumcube = 0.0f; + + float z_sumplain = 0.0f; + float z_sumsq = 0.0f; + float z_sumcube = 0.0f; + + float xy_sum = 0.0f; + float xz_sum = 0.0f; + float yz_sum = 0.0f; + + float x2y_sum = 0.0f; + float x2z_sum = 0.0f; + float y2x_sum = 0.0f; + float y2z_sum = 0.0f; + float z2x_sum = 0.0f; + float z2y_sum = 0.0f; + + for (unsigned int i = 0; i < size; i++) { + + float x2 = x[i] * x[i]; + float y2 = y[i] * y[i]; + float z2 = z[i] * z[i]; + + x_sumplain += x[i]; + x_sumsq += x2; + x_sumcube += x2 * x[i]; + + y_sumplain += y[i]; + y_sumsq += y2; + y_sumcube += y2 * y[i]; + + z_sumplain += z[i]; + z_sumsq += z2; + z_sumcube += z2 * z[i]; + + xy_sum += x[i] * y[i]; + xz_sum += x[i] * z[i]; + yz_sum += y[i] * z[i]; + + x2y_sum += x2 * y[i]; + x2z_sum += x2 * z[i]; + + y2x_sum += y2 * x[i]; + y2z_sum += y2 * z[i]; + + z2x_sum += z2 * x[i]; + z2y_sum += z2 * y[i]; + } + + // + //Least Squares Fit a sphere A,B,C with radius squared Rsq to 3D data + // + // P is a structure that has been computed with the data earlier. + // P.npoints is the number of elements; the length of X,Y,Z are identical. + // P's members are logically named. + // + // X[n] is the x component of point n + // Y[n] is the y component of point n + // Z[n] is the z component of point n + // + // A is the x coordiante of the sphere + // B is the y coordiante of the sphere + // C is the z coordiante of the sphere + // Rsq is the radius squared of the sphere. + // + //This method should converge; maybe 5-100 iterations or more. + // + float x_sum = x_sumplain / size; //sum( X[n] ) + float x_sum2 = x_sumsq / size; //sum( X[n]^2 ) + float x_sum3 = x_sumcube / size; //sum( X[n]^3 ) + float y_sum = y_sumplain / size; //sum( Y[n] ) + float y_sum2 = y_sumsq / size; //sum( Y[n]^2 ) + float y_sum3 = y_sumcube / size; //sum( Y[n]^3 ) + float z_sum = z_sumplain / size; //sum( Z[n] ) + float z_sum2 = z_sumsq / size; //sum( Z[n]^2 ) + float z_sum3 = z_sumcube / size; //sum( Z[n]^3 ) + + float XY = xy_sum / size; //sum( X[n] * Y[n] ) + float XZ = xz_sum / size; //sum( X[n] * Z[n] ) + float YZ = yz_sum / size; //sum( Y[n] * Z[n] ) + float X2Y = x2y_sum / size; //sum( X[n]^2 * Y[n] ) + float X2Z = x2z_sum / size; //sum( X[n]^2 * Z[n] ) + float Y2X = y2x_sum / size; //sum( Y[n]^2 * X[n] ) + float Y2Z = y2z_sum / size; //sum( Y[n]^2 * Z[n] ) + float Z2X = z2x_sum / size; //sum( Z[n]^2 * X[n] ) + float Z2Y = z2y_sum / size; //sum( Z[n]^2 * Y[n] ) + + //Reduction of multiplications + float F0 = x_sum2 + y_sum2 + z_sum2; + float F1 = 0.5f * F0; + float F2 = -8.0f * (x_sum3 + Y2X + Z2X); + float F3 = -8.0f * (X2Y + y_sum3 + Z2Y); + float F4 = -8.0f * (X2Z + Y2Z + z_sum3); + + //Set initial conditions: + float A = x_sum; + float B = y_sum; + float C = z_sum; + + //First iteration computation: + float A2 = A * A; + float B2 = B * B; + float C2 = C * C; + float QS = A2 + B2 + C2; + float QB = -2.0f * (A * x_sum + B * y_sum + C * z_sum); + + //Set initial conditions: + float Rsq = F0 + QB + QS; + + //First iteration computation: + float Q0 = 0.5f * (QS - Rsq); + float Q1 = F1 + Q0; + float Q2 = 8.0f * (QS - Rsq + QB + F0); + float aA, aB, aC, nA, nB, nC, dA, dB, dC; + + //Iterate N times, ignore stop condition. + unsigned int n = 0; + +#undef FLT_EPSILON +#define FLT_EPSILON 1.1920929e-07F /* 1E-5 */ + + while (n < max_iterations) { + n++; + + //Compute denominator: + aA = Q2 + 16.0f * (A2 - 2.0f * A * x_sum + x_sum2); + aB = Q2 + 16.0f * (B2 - 2.0f * B * y_sum + y_sum2); + aC = Q2 + 16.0f * (C2 - 2.0f * C * z_sum + z_sum2); + aA = (fabsf(aA) < FLT_EPSILON) ? 1.0f : aA; + aB = (fabsf(aB) < FLT_EPSILON) ? 1.0f : aB; + aC = (fabsf(aC) < FLT_EPSILON) ? 1.0f : aC; + + //Compute next iteration + nA = A - ((F2 + 16.0f * (B * XY + C * XZ + x_sum * (-A2 - Q0) + A * (x_sum2 + Q1 - C * z_sum - B * y_sum))) / aA); + nB = B - ((F3 + 16.0f * (A * XY + C * YZ + y_sum * (-B2 - Q0) + B * (y_sum2 + Q1 - A * x_sum - C * z_sum))) / aB); + nC = C - ((F4 + 16.0f * (A * XZ + B * YZ + z_sum * (-C2 - Q0) + C * (z_sum2 + Q1 - A * x_sum - B * y_sum))) / aC); + + //Check for stop condition + dA = (nA - A); + dB = (nB - B); + dC = (nC - C); + + if ((dA * dA + dB * dB + dC * dC) <= delta) { break; } + + //Compute next iteration's values + A = nA; + B = nB; + C = nC; + A2 = A * A; + B2 = B * B; + C2 = C * C; + QS = A2 + B2 + C2; + QB = -2.0f * (A * x_sum + B * y_sum + C * z_sum); + Rsq = F0 + QB + QS; + Q0 = 0.5f * (QS - Rsq); + Q1 = F1 + Q0; + Q2 = 8.0f * (QS - Rsq + QB + F0); + } + + *sphere_x = A; + *sphere_y = B; + *sphere_z = C; + *sphere_radius = sqrtf(Rsq); + + return 0; +} + +APMCompassCal::APMCompassCal(void) + : _vehicle(nullptr) + , _calWorkerThread(nullptr) +{ + +} + +APMCompassCal::~APMCompassCal() +{ + if (_calWorkerThread) { + _calWorkerThread->terminate(); + // deleteLater so it happens on correct thread + _calWorkerThread->deleteLater(); + } +} + +void APMCompassCal::setVehicle(Vehicle* vehicle) +{ + if (!vehicle) { + qWarning() << "vehicle == NULL"; + } + + _vehicle = vehicle; +} + +void APMCompassCal::startCalibration(void) +{ + _setSensorTransmissionSpeed(true /* fast */); + connect (_vehicle, &Vehicle::mavlinkRawImu, this, &APMCompassCal::_handleMavlinkRawImu); + connect (_vehicle, &Vehicle::mavlinkScaledImu2, this, &APMCompassCal::_handleMavlinkScaledImu2); + connect (_vehicle, &Vehicle::mavlinkScaledImu3, this, &APMCompassCal::_handleMavlinkScaledImu3); + + // Simulate a start message + _emitVehicleTextMessage(QStringLiteral("[cal] calibration started: mag")); + + _calWorkerThread = new CalWorkerThread(_vehicle); + connect(_calWorkerThread, &CalWorkerThread::vehicleTextMessage, this, &APMCompassCal::vehicleTextMessage); + + // Clear the offset parameters so we get raw data + for (int i=0; i<3; i++) { + _calWorkerThread->rgCompassAvailable[i] = true; + + const char* deviceIdParam = CalWorkerThread::rgCompassParams[i][3]; + if (_vehicle->parameterManager()->parameterExists(-1, deviceIdParam)) { + _calWorkerThread->rgCompassAvailable[i] = _vehicle->parameterManager()->getParameter(-1, deviceIdParam)->rawValue().toInt() > 0; + for (int j=0; j<3; j++) { + const char* offsetParam = CalWorkerThread::rgCompassParams[i][j]; + Fact* paramFact = _vehicle->parameterManager()->getParameter(-1, offsetParam); + + _rgSavedCompassOffsets[i][j] = paramFact->rawValue().toFloat(); + paramFact->setRawValue(0.0); + } + } else { + _calWorkerThread->rgCompassAvailable[i] = false; + } + qCDebug(APMCompassCalLog) << QStringLiteral("Compass %1 available: %2").arg(i).arg(_calWorkerThread->rgCompassAvailable[i]); + } + + _calWorkerThread->start(); +} + +void APMCompassCal::cancelCalibration(void) +{ + _stopCalibration(); + + // Put the original offsets back + for (int i=0; i<3; i++) { + for (int j=0; j<3; j++) { + const char* offsetParam = CalWorkerThread::rgCompassParams[i][j]; + if (_vehicle->parameterManager()->parameterExists(-1, offsetParam)) { + _vehicle->parameterManager()->getParameter(-1, offsetParam)-> setRawValue(_rgSavedCompassOffsets[i][j]); + } + } + } + + // Simulate a cancelled message + _emitVehicleTextMessage(QStringLiteral("[cal] calibration cancelled")); +} + +void APMCompassCal::_handleMavlinkRawImu(mavlink_message_t message) +{ + _calWorkerThread->lastScaledImuMutex.lock(); + mavlink_msg_raw_imu_decode(&message, &_calWorkerThread->lastRawImu); + _calWorkerThread->rgLastScaledImu[0].xacc = _calWorkerThread->lastRawImu.xacc; + _calWorkerThread->rgLastScaledImu[0].yacc = _calWorkerThread->lastRawImu.yacc; + _calWorkerThread->rgLastScaledImu[0].zacc = _calWorkerThread->lastRawImu.zacc; + _calWorkerThread->rgLastScaledImu[0].xgyro = _calWorkerThread->lastRawImu.xgyro; + _calWorkerThread->rgLastScaledImu[0].ygyro = _calWorkerThread->lastRawImu.ygyro; + _calWorkerThread->rgLastScaledImu[0].zgyro = _calWorkerThread->lastRawImu.zgyro; + _calWorkerThread->rgLastScaledImu[0].xmag = _calWorkerThread->lastRawImu.xmag; + _calWorkerThread->rgLastScaledImu[0].ymag = _calWorkerThread->lastRawImu.ymag; + _calWorkerThread->rgLastScaledImu[0].zmag = _calWorkerThread->lastRawImu.zmag; + _calWorkerThread->lastScaledImuMutex.unlock(); +} + +void APMCompassCal::_handleMavlinkScaledImu2(mavlink_message_t message) +{ + _calWorkerThread->lastScaledImuMutex.lock(); + mavlink_msg_scaled_imu2_decode(&message, (mavlink_scaled_imu2_t*)&_calWorkerThread->rgLastScaledImu[1]); + _calWorkerThread->lastScaledImuMutex.unlock(); +} + +void APMCompassCal::_handleMavlinkScaledImu3(mavlink_message_t message) +{ + _calWorkerThread->lastScaledImuMutex.lock(); + mavlink_msg_scaled_imu3_decode(&message, (mavlink_scaled_imu3_t*)&_calWorkerThread->rgLastScaledImu[2]); + _calWorkerThread->lastScaledImuMutex.unlock(); +} + +void APMCompassCal::_setSensorTransmissionSpeed(bool fast) +{ + _vehicle->requestDataStream(MAV_DATA_STREAM_RAW_SENSORS, fast ? 10 : 2); +} + +void APMCompassCal::_stopCalibration(void) +{ + _calWorkerThread->cancel(); + disconnect (_vehicle, &Vehicle::mavlinkRawImu, this, &APMCompassCal::_handleMavlinkRawImu); + disconnect (_vehicle, &Vehicle::mavlinkScaledImu2, this, &APMCompassCal::_handleMavlinkScaledImu2); + disconnect (_vehicle, &Vehicle::mavlinkScaledImu3, this, &APMCompassCal::_handleMavlinkScaledImu3); + _setSensorTransmissionSpeed(false /* fast */); +} + +void APMCompassCal::_emitVehicleTextMessage(const QString& message) +{ + qCDebug(APMCompassCalLog()) << message; + emit vehicleTextMessage(_vehicle->id(), 0, MAV_SEVERITY_INFO, message); +} diff --git a/src/AutoPilotPlugins/APM/APMCompassCal.h b/src/AutoPilotPlugins/APM/APMCompassCal.h new file mode 100644 index 0000000..890719f --- /dev/null +++ b/src/AutoPilotPlugins/APM/APMCompassCal.h @@ -0,0 +1,168 @@ +/**************************************************************************** + * + * (c) 2009-2020 QGROUNDCONTROL PROJECT + * + * QGroundControl is licensed according to the terms in the file + * COPYING.md in the root of the source code directory. + * + ****************************************************************************/ + + +#ifndef APMCompassCal_H +#define APMCompassCal_H + +#include +#include +#include + +#include "QGCLoggingCategory.h" +#include "QGCMAVLink.h" +#include "Vehicle.h" + +Q_DECLARE_LOGGING_CATEGORY(APMCompassCalLog) + +class CalWorkerThread : public QThread +{ + Q_OBJECT + +public: + CalWorkerThread(Vehicle* vehicle, QObject* parent = nullptr); + + // Cancel currently in progress calibration + void cancel(void) { _cancel = true; } + + // Overrides from QThread + void run(void) Q_DECL_FINAL; + + static const unsigned max_mags = 3; + + bool rgCompassAvailable[max_mags]; + QMutex lastScaledImuMutex; + mavlink_raw_imu_t lastRawImu; + mavlink_scaled_imu_t rgLastScaledImu[max_mags]; + + static const char* rgCompassParams[3][4]; + +signals: + void vehicleTextMessage(int vehicleId, int compId, int severity, QString text); + +private: + void _emitVehicleTextMessage(const QString& message); + + // The routines below are based on the PX4 flight stack compass cal routines. Hence + // the PX4 Flight Stack coding style to maintain some level of code movement. + + static const float mag_sphere_radius; + static const unsigned int calibration_sides; ///< The total number of sides + static const unsigned int calibration_total_points; ///< The total points per magnetometer + static const unsigned int calibraton_duration_seconds; ///< The total duration the routine is allowed to take + + // The order of these cannot change since the calibration calculations depend on them in this order + enum detect_orientation_return { + DETECT_ORIENTATION_TAIL_DOWN, + DETECT_ORIENTATION_NOSE_DOWN, + DETECT_ORIENTATION_LEFT, + DETECT_ORIENTATION_RIGHT, + DETECT_ORIENTATION_UPSIDE_DOWN, + DETECT_ORIENTATION_RIGHTSIDE_UP, + DETECT_ORIENTATION_ERROR + }; + static const unsigned detect_orientation_side_count = 6; + + // Data passed to calibration worker routine + typedef struct { + unsigned done_count; + unsigned int calibration_points_perside; + unsigned int calibration_interval_perside_seconds; + uint64_t calibration_interval_perside_useconds; + unsigned int calibration_counter_total[max_mags]; + bool side_data_collected[detect_orientation_side_count]; + float* x[max_mags]; + float* y[max_mags]; + float* z[max_mags]; + } mag_worker_data_t; + + enum calibrate_return { + calibrate_return_ok, + calibrate_return_error, + calibrate_return_cancelled + }; + + /** + * Least-squares fit of a sphere to a set of points. + * + * Fits a sphere to a set of points on the sphere surface. + * + * @param x point coordinates on the X axis + * @param y point coordinates on the Y axis + * @param z point coordinates on the Z axis + * @param size number of points + * @param max_iterations abort if maximum number of iterations have been reached. If unsure, set to 100. + * @param delta abort if error is below delta. If unsure, set to 0 to run max_iterations times. + * @param sphere_x coordinate of the sphere center on the X axis + * @param sphere_y coordinate of the sphere center on the Y axis + * @param sphere_z coordinate of the sphere center on the Z axis + * @param sphere_radius sphere radius + * + * @return 0 on success, 1 on failure + */ + int sphere_fit_least_squares(const float x[], const float y[], const float z[], + unsigned int size, unsigned int max_iterations, float delta, float *sphere_x, float *sphere_y, float *sphere_z, + float *sphere_radius); + + /// Wait for vehicle to become still and detect it's orientation + /// @return Returns detect_orientation_return according to orientation of still vehicle + enum detect_orientation_return detect_orientation(void); + + /// Returns the human readable string representation of the orientation + /// @param orientation Orientation to return string for, "error" if buffer is too small + const char* detect_orientation_str(enum detect_orientation_return orientation); + + /// Perform calibration sequence which require a rest orientation detection prior to calibration. + /// @return OK: Calibration succeeded, ERROR: Calibration failed + calibrate_return calibrate_from_orientation( + bool side_data_collected[detect_orientation_side_count], ///< Sides for which data still needs calibration + void* worker_data); ///< Opaque data passed to worker routine + + calibrate_return calibrate(void); + calibrate_return mag_calibration_worker(detect_orientation_return orientation, void* data); + unsigned progress_percentage(mag_worker_data_t* worker_data); + + Vehicle* _vehicle; + bool _cancel; +}; + +// Used to calibrate APM Stack compass by simulating PX4 Flight Stack firmware compass cal +// on the ground station side of things. +class APMCompassCal : public QObject +{ + Q_OBJECT + +public: + APMCompassCal(void); + ~APMCompassCal(); + + void setVehicle(Vehicle* vehicle); + void startCalibration(void); + void cancelCalibration(void); + +signals: + void vehicleTextMessage(int vehicleId, int compId, int severity, QString text); + +private slots: + void _handleMavlinkRawImu(mavlink_message_t message); + void _handleMavlinkScaledImu2(mavlink_message_t message); + void _handleMavlinkScaledImu3(mavlink_message_t message); + +private: + void _setSensorTransmissionSpeed(bool fast); + void _stopCalibration(void); + void _emitVehicleTextMessage(const QString& message); + + Vehicle* _vehicle; + CalWorkerThread* _calWorkerThread; + float _rgSavedCompassOffsets[3][3]; +}; + +#endif + diff --git a/src/AutoPilotPlugins/APM/APMHeliComponent.qml b/src/AutoPilotPlugins/APM/APMHeliComponent.qml index 510034b..9b68204 100644 --- a/src/AutoPilotPlugins/APM/APMHeliComponent.qml +++ b/src/AutoPilotPlugins/APM/APMHeliComponent.qml @@ -42,19 +42,15 @@ SetupPage { property Fact _hSwColDir: controller.getParameterFact(-1, "H_SW_COL_DIR") property Fact _hSwLinSvo: controller.getParameterFact(-1, "H_SW_LIN_SVO") property Fact _hFlybarMode: controller.getParameterFact(-1, "H_FLYBAR_MODE") - property Fact _hCycMax: controller.getParameterFact(-1, "H_CYC_MAX") property Fact _hColMax: controller.getParameterFact(-1, "H_COL_MAX") - property Fact _hColAngMax: controller.getParameterFact(-1, "H_COL_ANG_MAX") + property Fact _hColMid: controller.getParameterFact(-1, "H_COL_MID") property Fact _hColMin: controller.getParameterFact(-1, "H_COL_MIN") - property Fact _hColAngMin: controller.getParameterFact(-1, "H_COL_ANG_MIN") - property Fact _hColZeroThrst: controller.getParameterFact(-1, "H_COL_ZERO_THRST") - property Fact _hColLandMin: controller.getParameterFact(-1, "H_COL_LAND_MIN") + property Fact _hCycMax: controller.getParameterFact(-1, "H_CYC_MAX") property Fact _hRscMode: controller.getParameterFact(-1, "H_RSC_MODE") property Fact _hRscCritical: controller.getParameterFact(-1, "H_RSC_CRITICAL") property Fact _hRscRampTime: controller.getParameterFact(-1, "H_RSC_RAMP_TIME") property Fact _hRscRunupTime: controller.getParameterFact(-1, "H_RSC_RUNUP_TIME") - property Fact _hRscCldwnTime: controller.getParameterFact(-1, "H_RSC_CLDWN_TIME") property Fact _hRscSetpoint: controller.getParameterFact(-1, "H_RSC_SETPOINT") property Fact _hRscIdle: controller.getParameterFact(-1, "H_RSC_IDLE") property Fact _hRscThrcrv0: controller.getParameterFact(-1, "H_RSC_THRCRV_0") @@ -63,12 +59,11 @@ SetupPage { property Fact _hRscThrcrv75: controller.getParameterFact(-1, "H_RSC_THRCRV_75") property Fact _hRscThrcrv100: controller.getParameterFact(-1, "H_RSC_THRCRV_100") - property Fact _hRscGovComp: controller.getParameterFact(-1, "H_RSC_GOV_COMP") + property Fact _hRscGovSetpnt: controller.getParameterFact(-1, "H_RSC_GOV_SETPNT") + property Fact _hRscGovDisgag: controller.getParameterFact(-1, "H_RSC_GOV_DISGAG") property Fact _hRscGovDroop: controller.getParameterFact(-1, "H_RSC_GOV_DROOP") - property Fact _hRscGovFf: controller.getParameterFact(-1, "H_RSC_GOV_FF") + property Fact _hRscGovTcgain: controller.getParameterFact(-1, "H_RSC_GOV_TCGAIN") property Fact _hRscGovRange: controller.getParameterFact(-1, "H_RSC_GOV_RANGE") - property Fact _hRscGovRpm: controller.getParameterFact(-1, "H_RSC_GOV_RPM") - property Fact _hRscGovTorque: controller.getParameterFact(-1, "H_RSC_GOV_TORQUE") property Fact _imStbCol1: controller.getParameterFact(-1, "IM_STB_COL_1") property Fact _imStbCol2: controller.getParameterFact(-1, "IM_STB_COL_2") @@ -315,26 +310,17 @@ SetupPage { indexModel: false } - QGCLabel { text: _hCycMax.shortDescription } - FactTextField { fact: _hCycMax } - QGCLabel { text: _hColMax.shortDescription } FactTextField { fact: _hColMax } - QGCLabel { text: _hColAngMax.shortDescription } - FactTextField { fact: _hColAngMax } + QGCLabel { text: _hColMid.shortDescription } + FactTextField { fact: _hColMid } QGCLabel { text: _hColMin.shortDescription } FactTextField { fact: _hColMin } - QGCLabel { text: _hColAngMin.shortDescription } - FactTextField { fact: _hColAngMin } - - QGCLabel { text: _hColZeroThrst.shortDescription } - FactTextField { fact: _hColZeroThrst } - - QGCLabel { text: _hColLandMin.shortDescription } - FactTextField { fact: _hColLandMin } + QGCLabel { text: _hCycMax.shortDescription } + FactTextField { fact: _hCycMax } } } @@ -359,9 +345,6 @@ SetupPage { QGCLabel { text: _hRscRunupTime.shortDescription } FactTextField { fact: _hRscRunupTime } - QGCLabel { text: _hRscCldwnTime.shortDescription } - FactTextField { fact: _hRscCldwnTime } - QGCLabel { text: _hRscSetpoint.shortDescription } FactTextField { fact: _hRscSetpoint } @@ -391,23 +374,20 @@ SetupPage { GridLayout { columns: 2 - QGCLabel { text: _hRscGovComp.shortDescription } - FactTextField { fact: _hRscGovComp } + QGCLabel { text: _hRscGovSetpnt.shortDescription } + FactTextField { fact: _hRscGovSetpnt } + + QGCLabel { text: _hRscGovDisgag.shortDescription } + FactTextField { fact: _hRscGovDisgag } QGCLabel { text: _hRscGovDroop.shortDescription } FactTextField { fact: _hRscGovDroop } - QGCLabel { text: _hRscGovFf.shortDescription } - FactTextField { fact: _hRscGovFf } + QGCLabel { text: _hRscGovTcgain.shortDescription } + FactTextField { fact: _hRscGovTcgain } QGCLabel { text: _hRscGovRange.shortDescription } FactTextField { fact: _hRscGovRange } - - QGCLabel { text: _hRscGovRpm.shortDescription } - FactTextField { fact: _hRscGovRpm } - - QGCLabel { text: _hRscGovTorque.shortDescription } - FactTextField { fact: _hRscGovTorque } } } diff --git a/src/AutoPilotPlugins/APM/APMLightsComponent.qml b/src/AutoPilotPlugins/APM/APMLightsComponent.qml index 99590f6..ad2f278 100644 --- a/src/AutoPilotPlugins/APM/APMLightsComponent.qml +++ b/src/AutoPilotPlugins/APM/APMLightsComponent.qml @@ -43,8 +43,6 @@ SetupPage { property Fact _rc12Function: controller.getParameterFact(-1, "SERVO12_FUNCTION") property Fact _rc13Function: controller.getParameterFact(-1, "SERVO13_FUNCTION") property Fact _rc14Function: controller.getParameterFact(-1, "SERVO14_FUNCTION") - property Fact _rc15Function: controller.getParameterFact(-1, "SERVO15_FUNCTION") - property Fact _rc16Function: controller.getParameterFact(-1, "SERVO16_FUNCTION") property Fact _stepSize: _oldFW ? controller.getParameterFact(-1, "JS_LIGHTS_STEP") : null // v3.5.1 and prior property Fact _numSteps: _oldFW ? null : controller.getParameterFact(-1, "JS_LIGHTS_STEPS") // v3.5.2 and up @@ -53,7 +51,7 @@ SetupPage { readonly property int _rcFunctionRCIN9: 59 readonly property int _rcFunctionRCIN10: 60 readonly property int _firstLightsOutChannel: 5 - readonly property int _lastLightsOutChannel: 16 + readonly property int _lastLightsOutChannel: 14 Component.onCompleted: { calcLightOutValues() diff --git a/src/AutoPilotPlugins/APM/APMPowerComponent.qml b/src/AutoPilotPlugins/APM/APMPowerComponent.qml index 8baf435..792510f 100644 --- a/src/AutoPilotPlugins/APM/APMPowerComponent.qml +++ b/src/AutoPilotPlugins/APM/APMPowerComponent.qml @@ -131,9 +131,9 @@ SetupPage { property Fact battMonitor: controller.getParameterFact(-1, "BATT_MONITOR", false /* reportMissing */) property Fact battVoltMult: controller.getParameterFact(-1, "BATT_VOLT_MULT", false /* reportMissing */) property Fact battVoltPin: controller.getParameterFact(-1, "BATT_VOLT_PIN", false /* reportMissing */) - property FactGroup _batteryFactGroup: _batt1FullSettings.visible ? controller.vehicle.getFactGroup("battery0") : null - property Fact vehicleVoltage: _batteryFactGroup ? _batteryFactGroup.voltage : null - property Fact vehicleCurrent: _batteryFactGroup ? _batteryFactGroup.current : null + property FactGroup _batteryFactGroup: controller.vehicle.getFactGroup("battery0") + property Fact vehicleVoltage: _batteryFactGroup.voltage + property Fact vehicleCurrent: _batteryFactGroup.current } } } @@ -218,9 +218,9 @@ SetupPage { property Fact battMonitor: controller.getParameterFact(-1, "BATT2_MONITOR", false /* reportMissing */) property Fact battVoltMult: controller.getParameterFact(-1, "BATT2_VOLT_MULT", false /* reportMissing */) property Fact battVoltPin: controller.getParameterFact(-1, "BATT2_VOLT_PIN", false /* reportMissing */) - property FactGroup _batteryFactGroup: batt2FullSettings.visible ? controller.vehicle.getFactGroup("battery1") : null - property Fact vehicleVoltage: _batteryFactGroup ? _batteryFactGroup.voltage : null - property Fact vehicleCurrent: _batteryFactGroup ? _batteryFactGroup.current : null + property FactGroup _batteryFactGroup: controller.vehicle.getFactGroup("battery1") + property Fact vehicleVoltage: _batteryFactGroup.voltage + property Fact vehicleCurrent: _batteryFactGroup.current } } } @@ -296,8 +296,8 @@ SetupPage { function calcSensor() { for (var i=0; i 0) { - battVoltMultFact.value = newVoltageMultiplier + QGCTextField { id: measuredVoltage } + + QGCLabel { text: qsTr("Vehicle voltage:") } + FactLabel { fact: _calcVoltageDlgVehicleVoltage } + + QGCLabel { text: qsTr("Voltage multiplier:") } + FactLabel { fact: _calcVoltageDlgBattVoltMultParam } + } + + QGCButton { + text: qsTr("Calculate And Set") + + onClicked: { + var measuredVoltageValue = parseFloat(measuredVoltage.text) + if (measuredVoltageValue == 0 || isNaN(measuredVoltageValue)) { + return + } + var newVoltageMultiplier = (measuredVoltageValue * _calcVoltageDlgBattVoltMultParam.value) / _calcVoltageDlgVehicleVoltage.value + if (newVoltageMultiplier > 0) { + _calcVoltageDlgBattVoltMultParam.value = newVoltageMultiplier + } } } - } - } - } - } + } // Column + } // QGCFlickable + } // QGCViewDialog + } // Component - calcVoltageMultiplierDlgComponent + + // Must be set prior to use of calcAmpsPerVoltDlgComponent + property Fact _calcAmpsPerVoltDlgVehicleCurrent + property Fact _calcAmpsPerVoltDlgBattAmpPerVoltParam Component { id: calcAmpsPerVoltDlgComponent - QGCPopupDialog { - title: qsTr("Calculate Amps per Volt") - buttons: StandardButton.Close + QGCViewDialog { + id: calcAmpsPerVoltDlg - property Fact vehicleCurrentFact - property Fact battAmpPerVoltFact + QGCFlickable { + anchors.fill: parent + contentHeight: column.height + contentWidth: column.width - ColumnLayout { - spacing: ScreenTools.defaultFontPixelHeight - - QGCLabel { - Layout.preferredWidth: gridLayout.width - wrapMode: Text.WordWrap - text: qsTr("Measure current draw using an external current meter and enter the value below. Click Calculate to set the new amps per volt value.") - } - - GridLayout { - id: gridLayout - columns: 2 + Column { + id: column + width: calcAmpsPerVoltDlg.width + spacing: ScreenTools.defaultFontPixelHeight QGCLabel { - text: qsTr("Measured current:") + width: parent.width + wrapMode: Text.WordWrap + text: qsTr("Measure current draw using an external current meter and enter the value below. Click Calculate to set the new amps per volt value.") } - QGCTextField { id: measuredCurrent } - QGCLabel { text: qsTr("Vehicle current:") } - FactLabel { fact: vehicleCurrentFact } + Grid { + columns: 2 + spacing: ScreenTools.defaultFontPixelHeight / 2 + verticalItemAlignment: Grid.AlignVCenter - QGCLabel { text: qsTr("Amps per volt:") } - FactLabel { fact: battAmpPerVoltFact } - } - - QGCButton { - text: qsTr("Calculate And Set") - - onClicked: { - var measuredCurrentValue = parseFloat(measuredCurrent.text) - if (measuredCurrentValue === 0 || isNaN(measuredCurrentValue) || !vehicleCurrentFact || !battAmpPerVoltFact) { - return + QGCLabel { + text: qsTr("Measured current:") } - var newAmpsPerVolt = (vehicleCurrentFact.value !== 0) ? (measuredCurrentValue * battAmpPerVoltFact.value) / vehicleCurrentFact.value : 0 - if (newAmpsPerVolt !== 0) { - battAmpPerVoltFact.value = newAmpsPerVolt + QGCTextField { id: measuredCurrent } + + QGCLabel { text: qsTr("Vehicle current:") } + FactLabel { fact: _calcAmpsPerVoltDlgVehicleCurrent } + + QGCLabel { text: qsTr("Amps per volt:") } + FactLabel { fact: _calcAmpsPerVoltDlgBattAmpPerVoltParam } + } + + QGCButton { + text: qsTr("Calculate And Set") + + onClicked: { + var measuredCurrentValue = parseFloat(measuredCurrent.text) + if (measuredCurrentValue == 0) { + return + } + var newAmpsPerVolt = (measuredCurrentValue * _calcAmpsPerVoltDlgBattAmpPerVoltParam.value) / _calcAmpsPerVoltDlgVehicleCurrent.value + if (newAmpsPerVolt != 0) { + _calcAmpsPerVoltDlgBattAmpPerVoltParam.value = newAmpsPerVolt + } } } - } - } - } - } + } // Column + } // QGCFlickable + } // QGCViewDialog + } // Component - calcAmpsPerVoltDlgComponent } // SetupPage diff --git a/src/AutoPilotPlugins/APM/APMRemoteSupportComponent.cc b/src/AutoPilotPlugins/APM/APMRemoteSupportComponent.cc deleted file mode 100644 index ab68e60..0000000 --- a/src/AutoPilotPlugins/APM/APMRemoteSupportComponent.cc +++ /dev/null @@ -1,58 +0,0 @@ -/**************************************************************************** - * - * (c) 2009-2023 QGROUNDCONTROL PROJECT - * - * QGroundControl is licensed according to the terms in the file - * COPYING.md in the root of the source code directory. - * - ****************************************************************************/ - - -#include "APMRemoteSupportComponent.h" - -APMRemoteSupportComponent::APMRemoteSupportComponent(Vehicle* vehicle, AutoPilotPlugin* autopilot, QObject* parent) - : VehicleComponent(vehicle, autopilot, parent) - , _name(tr("Remote Support")) -{ -} - -QString APMRemoteSupportComponent::name(void) const -{ - return _name; -} - -QString APMRemoteSupportComponent::description(void) const -{ - return tr("On this menu you can forward mavlink telemetry to an ardupilot support engineer."); -} - -QString APMRemoteSupportComponent::iconResource(void) const -{ - return QStringLiteral("/qmlimages/ForwardingSupportIcon.svg"); -} - -bool APMRemoteSupportComponent::requiresSetup(void) const -{ - return false; -} - -bool APMRemoteSupportComponent::setupComplete(void) const -{ - return true; -} - -QStringList APMRemoteSupportComponent::setupCompleteChangedTriggerList(void) const -{ - return QStringList(); -} - -QUrl APMRemoteSupportComponent::setupSource(void) const -{ - return QUrl::fromUserInput(QStringLiteral("qrc:/qml/APMRemoteSupportComponent.qml")); - -} - -QUrl APMRemoteSupportComponent::summaryQmlSource(void) const -{ - return QUrl(); -} diff --git a/src/AutoPilotPlugins/APM/APMRemoteSupportComponent.h b/src/AutoPilotPlugins/APM/APMRemoteSupportComponent.h deleted file mode 100644 index 01890f3..0000000 --- a/src/AutoPilotPlugins/APM/APMRemoteSupportComponent.h +++ /dev/null @@ -1,35 +0,0 @@ -/**************************************************************************** - * - * (c) 2009-2023 QGROUNDCONTROL PROJECT - * - * QGroundControl is licensed according to the terms in the file - * COPYING.md in the root of the source code directory. - * - ****************************************************************************/ - -#pragma once - -#include "VehicleComponent.h" - -class APMRemoteSupportComponent : public VehicleComponent -{ - Q_OBJECT - -public: - APMRemoteSupportComponent(Vehicle* vehicle, AutoPilotPlugin* autopilot, QObject* parent = nullptr); - - // Virtuals from VehicleComponent - QStringList setupCompleteChangedTriggerList(void) const final; - - // Virtuals from VehicleComponent - QString name(void) const final; - QString description(void) const final; - QString iconResource(void) const final; - bool requiresSetup(void) const final; - bool setupComplete(void) const final; - QUrl setupSource(void) const final; - QUrl summaryQmlSource(void) const final; - -private: - const QString _name; -}; \ No newline at end of file diff --git a/src/AutoPilotPlugins/APM/APMRemoteSupportComponent.qml b/src/AutoPilotPlugins/APM/APMRemoteSupportComponent.qml deleted file mode 100644 index 15237b5..0000000 --- a/src/AutoPilotPlugins/APM/APMRemoteSupportComponent.qml +++ /dev/null @@ -1,68 +0,0 @@ -/**************************************************************************** - * - * (c) 2009-2023 QGROUNDCONTROL PROJECT - * - * QGroundControl is licensed according to the terms in the file - * COPYING.md in the root of the source code directory. - * - ****************************************************************************/ - -import QtQuick 2.3 -import QtQuick.Controls 1.2 -import QtQuick.Layouts 1.2 - -import QGroundControl 1.0 -import QGroundControl.Controls 1.0 -import QGroundControl.ScreenTools 1.0 -import QGroundControl.Palette 1.0 -import QGroundControl.FactControls 1.0 -import QGroundControl.FactSystem 1.0 - -SetupPage { - pageComponent: pageComponent - - Component { - id: pageComponent - - Rectangle { - id: backgroundRectangle - width: availableWidth - height: elementsRow.height * 1.5 - color: qgcPal.windowShade - - GridLayout { - id: elementsRow - columns: 2 - - anchors.left: parent.left - anchors.verticalCenter: parent.verticalCenter - anchors.margins: ScreenTools.defaultFontPixelWidth - - columnSpacing: ScreenTools.defaultFontPixelWidth - rowSpacing: ScreenTools.defaultFontPixelWidth - - QGCLabel { - visible: QGroundControl.settingsManager.appSettings.forwardMavlinkAPMSupportHostName.visible - text: qsTr("Host name:") - } - FactTextField { - id: mavlinkForwardingHostNameField - fact: QGroundControl.settingsManager.appSettings.forwardMavlinkAPMSupportHostName - Layout.preferredWidth: ScreenTools.defaultFontPixelWidth * 40 - } - QGCButton { - text: qsTr("Connect") - enabled: !QGroundControl.linkManager.mavlinkSupportForwardingEnabled - - onPressed: { - QGroundControl.linkManager.createMavlinkForwardingSupportLink() - } - } - QGCLabel { - visible: QGroundControl.linkManager.mavlinkSupportForwardingEnabled - text: qsTr("Forwarding traffic: Mavlink traffic will keep being forwarded until application restarts") - } - } - } - } -} diff --git a/src/AutoPilotPlugins/APM/APMSafetyComponent.qml b/src/AutoPilotPlugins/APM/APMSafetyComponent.qml index 8c75d70..d46f26f 100644 --- a/src/AutoPilotPlugins/APM/APMSafetyComponent.qml +++ b/src/AutoPilotPlugins/APM/APMSafetyComponent.qml @@ -409,117 +409,122 @@ SetupPage { property Fact _fenceRadius: controller.getParameterFact(-1, "FENCE_RADIUS") property Fact _fenceType: controller.getParameterFact(-1, "FENCE_TYPE") - readonly property int _maxAltitudeFenceBitMask: 1 - readonly property int _circleFenceBitMask: 2 - readonly property int _polygonFenceBitMask: 4 - QGCLabel { + id: geoFenceLabel text: qsTr("GeoFence") font.family: ScreenTools.demiboldFontFamily } Rectangle { - width: mainLayout.width + (_margins * 2) - height: mainLayout.height + (_margins * 2) + id: geoFenceSettings + width: fenceAltMaxField.x + fenceAltMaxField.width + _margins + height: fenceAltMaxField.y + fenceAltMaxField.height + _margins color: ggcPal.windowShade - ColumnLayout { - id: mainLayout - x: _margins - y: _margins - spacing: ScreenTools.defaultFontPixellHeight / 2 + QGCCheckBox { + id: circleGeo + anchors.margins: _margins + anchors.left: parent.left + anchors.top: parent.top + text: qsTr("Circle GeoFence enabled") + checked: _fenceEnable.value != 0 && _fenceType.value & 2 - FactCheckBox { - id: enabledCheckBox - text: qsTr("Enabled") - fact: _fenceEnable - } - - GridLayout { - columns: 2 - enabled: enabledCheckBox.checked - - QGCCheckBox { - text: qsTr("Maximum Altitude") - checked: _fenceType.rawValue & _maxAltitudeFenceBitMask - - onClicked: { - if (checked) { - _fenceType.rawValue |= _maxAltitudeFenceBitMask - } else { - _fenceType.value &= ~_maxAltitudeFenceBitMask - } + onClicked: { + if (checked) { + if (_fenceEnable.value == 1) { + _fenceType.value |= 2 + } else { + _fenceEnable.value = 1 + _fenceType.value = 2 } - } - - FactTextField { - fact: _fenceAltMax - } - - QGCCheckBox { - text: qsTr("Circle centered on Home") - checked: _fenceType.rawValue & _circleFenceBitMask - - onClicked: { - if (checked) { - _fenceType.rawValue |= _circleFenceBitMask - } else { - _fenceType.value &= ~_circleFenceBitMask - } - } - } - - FactTextField { - fact: _fenceRadius - showUnits: true - } - - QGCCheckBox { - text: qsTr("Inclusion/Exclusion Circles+Polygons") - checked: _fenceType.rawValue & _polygonFenceBitMask - - onClicked: { - if (checked) { - _fenceType.rawValue |= _polygonFenceBitMask - } else { - _fenceType.value &= ~_polygonFenceBitMask - } - } - } - - Item { - height: 1 - width: 1 - } - } // GridLayout - - Item { - height: 1 - width: 1 - } - - GridLayout { - columns: 2 - enabled: enabledCheckBox.checked - - QGCLabel { - text: qsTr("Breach action") - } - - FactComboBox { - sizeToContents: true - fact: _fenceAction - } - - QGCLabel { - text: qsTr("Fence margin") - } - - FactTextField { - fact: _fenceMargin + } else if (altitudeGeo.checked) { + _fenceType.value &= ~2 + } else { + _fenceEnable.value = 0 + _fenceType.value = 0 } } } + + QGCCheckBox { + id: altitudeGeo + anchors.topMargin: _margins / 2 + anchors.left: circleGeo.left + anchors.top: circleGeo.bottom + text: qsTr("Altitude GeoFence enabled") + checked: _fenceEnable.value != 0 && _fenceType.value & 1 + + onClicked: { + if (checked) { + if (_fenceEnable.value == 1) { + _fenceType.value |= 1 + } else { + _fenceEnable.value = 1 + _fenceType.value = 1 + } + } else if (circleGeo.checked) { + _fenceType.value &= ~1 + } else { + _fenceEnable.value = 0 + _fenceType.value = 0 + } + } + } + + QGCRadioButton { + id: geoReportRadio + anchors.margins: _margins + anchors.left: parent.left + anchors.top: altitudeGeo.bottom + text: qsTr("Report only") + checked: _fenceAction.value == 0 + + onClicked: _fenceAction.value = 0 + } + + QGCRadioButton { + id: geoRTLRadio + anchors.topMargin: _margins / 2 + anchors.left: circleGeo.left + anchors.top: geoReportRadio.bottom + text: qsTr("RTL or Land") + checked: _fenceAction.value == 1 + + onClicked: _fenceAction.value = 1 + } + + QGCLabel { + id: fenceRadiusLabel + anchors.left: circleGeo.left + anchors.baseline: fenceRadiusField.baseline + text: qsTr("Max radius:") + } + + FactTextField { + id: fenceRadiusField + anchors.topMargin: _margins + anchors.left: fenceAltMaxField.left + anchors.top: geoRTLRadio.bottom + fact: _fenceRadius + showUnits: true + } + + QGCLabel { + id: fenceAltMaxLabel + anchors.left: circleGeo.left + anchors.baseline: fenceAltMaxField.baseline + text: qsTr("Max altitude:") + } + + FactTextField { + id: fenceAltMaxField + anchors.topMargin: _margins / 2 + anchors.leftMargin: _margins + anchors.left: fenceAltMaxLabel.right + anchors.top: fenceRadiusField.bottom + fact: _fenceAltMax + showUnits: true + } } // Rectangle - GeoFence Settings } // Column - GeoFence Settings } diff --git a/src/AutoPilotPlugins/APM/APMSensorsComponent.qml b/src/AutoPilotPlugins/APM/APMSensorsComponent.qml index b032bca..37b49cd 100644 --- a/src/AutoPilotPlugins/APM/APMSensorsComponent.qml +++ b/src/AutoPilotPlugins/APM/APMSensorsComponent.qml @@ -89,7 +89,7 @@ SetupPage { function showOrientationsDialog(calType) { var dialogTitle - var dialogButtons = StandardButton.Ok + var buttons = StandardButton.Ok _showSimpleAccelCalOption = false _orientationDialogCalType = calType @@ -98,13 +98,13 @@ SetupPage { _orientationsDialogShowCompass = true _orientationDialogHelp = orientationHelpCal dialogTitle = qsTr("Calibrate Compass") - dialogButtons |= StandardButton.Cancel + buttons |= StandardButton.Cancel break case _calTypeAccel: _orientationsDialogShowCompass = false _orientationDialogHelp = orientationHelpCal dialogTitle = qsTr("Calibrate Accelerometer") - dialogButtons |= StandardButton.Cancel + buttons |= StandardButton.Cancel break case _calTypeSet: _orientationsDialogShowCompass = true @@ -113,7 +113,7 @@ SetupPage { break } - orientationsDialogComponent.createObject(mainWindow, { title: dialogTitle, buttons: dialogButtons }).open() + mainWindow.showComponentDialog(orientationsDialogComponent, dialogTitle, mainWindow.showDialogDefaultWidth, buttons) } function showSimpleAccelCalOption() { @@ -161,16 +161,21 @@ SetupPage { onWaitingForCancelChanged: { if (controller.waitingForCancel) { - waitForCancelDialogComponent.createObject(mainWindow).open() + mainWindow.showComponentDialog(waitForCancelDialogComponent, qsTr("Calibration Cancel"), mainWindow.showDialogDefaultWidth, 0) } } onCalibrationComplete: { switch (calType) { case APMSensorsComponentController.CalTypeAccel: + mainWindow.showComponentDialog(postCalibrationComponent, qsTr("Accelerometer calibration complete"), mainWindow.showDialogDefaultWidth, StandardButton.Ok) + break + case APMSensorsComponentController.CalTypeOffboardCompass: + mainWindow.showComponentDialog(postCalibrationComponent, qsTr("Compass calibration complete"), mainWindow.showDialogDefaultWidth, StandardButton.Ok) + break case APMSensorsComponentController.CalTypeOnboardCompass: _singleCompassSettingsComponentShowPriority = true - postOnboardCompassCalibrationComponent.createObject(mainWindow).open() + mainWindow.showComponentDialog(postOnboardCompassCalibrationComponent, qsTr("Calibration complete"), mainWindow.showDialogDefaultWidth, StandardButton.Ok) break } } @@ -185,17 +190,15 @@ SetupPage { Component { id: waitForCancelDialogComponent - QGCSimpleMessageDialog { - title: qsTr("Calibration Cancel") - text: qsTr("Waiting for Vehicle to response to Cancel. This may take a few seconds.") - buttons: 0 + QGCViewMessage { + message: qsTr("Waiting for Vehicle to response to Cancel. This may take a few seconds.") Connections { target: controller onWaitingForCancelChanged: { if (!controller.waitingForCancel) { - close() + hideDialog() } } } @@ -268,14 +271,12 @@ SetupPage { Component { id: postOnboardCompassCalibrationComponent - QGCPopupDialog { - id: postOnboardCompassCalibrationDialog - title: qsTr("Calibration complete") - buttons: StandardButton.Ok - + QGCViewDialog { Column { - width: 40 * ScreenTools.defaultFontPixelWidth - spacing: ScreenTools.defaultFontPixelHeight + anchors.margins: ScreenTools.defaultFontPixelWidth + anchors.left: parent.left + anchors.right: parent.right + spacing: ScreenTools.defaultFontPixelHeight Repeater { model: 3 @@ -297,7 +298,7 @@ SetupPage { text: qsTr("Reboot Vehicle") onClicked: { controller.vehicle.rebootVehicle() - postOnboardCompassCalibrationDialog.close() + hideDialog() } } } @@ -307,13 +308,12 @@ SetupPage { Component { id: postCalibrationComponent - QGCPopupDialog { - id: postCalibrationDialog - title: qsTr("Calibration complete") - + QGCViewDialog { Column { - width: 40 * ScreenTools.defaultFontPixelWidth - spacing: ScreenTools.defaultFontPixelHeight + anchors.margins: ScreenTools.defaultFontPixelWidth + anchors.left: parent.left + anchors.right: parent.right + spacing: ScreenTools.defaultFontPixelHeight QGCLabel { anchors.left: parent.left @@ -326,7 +326,7 @@ SetupPage { text: qsTr("Reboot Vehicle") onClicked: { controller.vehicle.rebootVehicle() - postCalibrationDialog.close() + hideDialog() } } } @@ -412,7 +412,9 @@ SetupPage { Component { id: orientationsDialogComponent - QGCPopupDialog { + QGCViewDialog { + id: orientationsDialog + function compassMask () { var mask = 0 mask |= (0 + (sensorParams.rgCompassPrio[0].rawValue !== 0)) << 0 @@ -421,228 +423,315 @@ SetupPage { return mask } - onAccepted: { + function accept() { if (_orientationDialogCalType == _calTypeAccel) { controller.calibrateAccel(_doSimpleAccelCal) } else if (_orientationDialogCalType == _calTypeCompass) { if (!northCalibrationCheckBox.checked) { controller.calibrateCompass() } else { - var lat = parseFloat(northCalLat.text) - var lon = parseFloat(northCalLon.text) - if (useMapPositionCheckbox.checked) { - lat = _mapPosition.latitude - lon = _mapPosition.longitude - } - if (useGcsPositionCheckbox.checked) { - lat = _gcsPosition.latitude - lon = _gcsPosition.longitude - } - if (isNaN(lat) || isNaN(lon)) { - return - } - controller.calibrateCompassNorth(lat, lon, compassMask()) + var lat = parseFloat(northCalLat.text) + var lon = parseFloat(northCalLon.text) + if (useMapPositionCheckbox.checked) { + lat = _mapPosition.latitude + lon = _mapPosition.longitude + } + if (useGcsPositionCheckbox.checked) { + lat = _gcsPosition.latitude + lon = _gcsPosition.longitude + } + if (isNaN(lat) || isNaN(lon)) { + return + } + controller.calibrateCompassNorth(lat, lon, compassMask()) } } + orientationsDialog.hideDialog() } - Column { - width: 40 * ScreenTools.defaultFontPixelWidth - spacing: ScreenTools.defaultFontPixelHeight - - QGCLabel { - width: parent.width - wrapMode: Text.WordWrap - text: _orientationDialogHelp - } + QGCFlickable { + anchors.fill: parent + contentHeight: columnLayout.height + clip: true Column { - QGCLabel { text: qsTr("Autopilot Rotation:") } - - FactComboBox { - width: rotationColumnWidth - indexModel: false - fact: boardRot - } - } - - Column { - - visible: _orientationDialogCalType == _calTypeAccel - spacing: ScreenTools.defaultFontPixelHeight - - QGCLabel { - width: parent.width - wrapMode: Text.WordWrap - text: qsTr("Simple accelerometer calibration is less precise but allows calibrating without rotating the vehicle. Check this if you have a large/heavy vehicle.") - } - - QGCCheckBox { - text: "Simple Accelerometer Calibration" - onClicked: _doSimpleAccelCal = this.checked - } - } - - Repeater { - model: _orientationsDialogShowCompass ? 3 : 0 - delegate: singleCompassSettingsComponent - } - - QGCLabel { - id: magneticDeclinationLabel - width: parent.width - visible: globals.activeVehicle.sub && _orientationsDialogShowCompass - text: qsTr("Magnetic Declination") - } - - Column { - visible: magneticDeclinationLabel.visible + id: columnLayout anchors.margins: ScreenTools.defaultFontPixelWidth anchors.left: parent.left anchors.right: parent.right + anchors.top: parent.top spacing: ScreenTools.defaultFontPixelHeight - QGCCheckBox { - id: manualMagneticDeclinationCheckBox - text: qsTr("Manual Magnetic Declination") - property Fact autoDecFact: controller.getParameterFact(-1, "COMPASS_AUTODEC") - property int manual: 0 - property int automatic: 1 - - checked: autoDecFact.rawValue === manual - onClicked: autoDecFact.value = (checked ? manual : automatic) - } - - FactTextField { - fact: sensorParams.declinationFact - enabled: manualMagneticDeclinationCheckBox.checked - } - } - - Item { height: ScreenTools.defaultFontPixelHeight; width: 10 } // spacer - - QGCLabel { - id: northCalibrationLabel - width: parent.width - visible: _orientationsDialogShowCompass - wrapMode: Text.WordWrap - text: qsTr("Fast compass calibration given vehicle position and yaw. This ") + - qsTr("results in zero diagonal and off-diagonal elements, so is only ") + - qsTr("suitable for vehicles where the field is close to spherical. It is ") + - qsTr("useful for large vehicles where moving the vehicle to calibrate it ") + - qsTr("is difficult. Point the vehicle North before using it.") - } - - Column { - visible: northCalibrationLabel.visible - anchors.margins: ScreenTools.defaultFontPixelWidth - anchors.left: parent.left - anchors.right: parent.right - spacing: ScreenTools.defaultFontPixelHeight - - QGCCheckBox { - id: northCalibrationCheckBox - visible: northCalibrationLabel.visible - text: qsTr("Fast Calibration") - } - - QGCLabel { - id: northCalibrationManualPosition - width: parent.width - visible: northCalibrationCheckBox.checked && !globals.activeVehicle.coordinate.isValid - wrapMode: Text.WordWrap - text: qsTr("Vehicle has no Valid positon, please provide it") - } - - QGCCheckBox { - visible: northCalibrationManualPosition.visible && _gcsPosition.isValid - id: useGcsPositionCheckbox - text: qsTr("Use GCS position instead") - checked: _gcsPosition.isValid - } - QGCCheckBox { - visible: northCalibrationManualPosition.visible && !_gcsPosition.isValid - id: useMapPositionCheckbox - text: qsTr("Use current map position instead") - } - QGCLabel { width: parent.width - visible: useMapPositionCheckbox.checked wrapMode: Text.WordWrap - text: qsTr(`Lat: ${_mapPosition.latitude.toFixed(4)} Lon: ${_mapPosition.longitude.toFixed(4)}`) + text: _orientationDialogHelp } - FactTextField { - id: northCalLat - visible: !useGcsPositionCheckbox.checked && !useMapPositionCheckbox.checked && northCalibrationCheckBox.checked - text: "0.00" - textColor: isNaN(parseFloat(text)) ? qgcPal.warningText: qgcPal.textFieldText - enabled: !useGcsPositionCheckbox.checked - } - FactTextField { - id: northCalLon - visible: !useGcsPositionCheckbox.checked && !useMapPositionCheckbox.checked && northCalibrationCheckBox.checked - text: "0.00" - textColor: isNaN(parseFloat(text)) ? qgcPal.warningText: qgcPal.textFieldText - enabled: !useGcsPositionCheckbox.checked + Column { + QGCLabel { text: qsTr("Autopilot Rotation:") } + + FactComboBox { + width: rotationColumnWidth + indexModel: false + fact: boardRot + } } - } - } - } - } + Column { + + visible: _orientationDialogCalType == _calTypeAccel + spacing: ScreenTools.defaultFontPixelHeight + + QGCLabel { + width: parent.width + wrapMode: Text.WordWrap + text: qsTr("Simple accelerometer calibration is less precise but allows calibrating without rotating the vehicle. Check this if you have a large/heavy vehicle.") + } + + QGCCheckBox { + text: "Simple Accelerometer Calibration" + onClicked: _doSimpleAccelCal = this.checked + } + } + + Repeater { + model: _orientationsDialogShowCompass ? 3 : 0 + delegate: singleCompassSettingsComponent + } + + QGCLabel { + id: magneticDeclinationLabel + width: parent.width + visible: globals.activeVehicle.sub && _orientationsDialogShowCompass + text: qsTr("Magnetic Declination") + } + + Column { + visible: magneticDeclinationLabel.visible + anchors.margins: ScreenTools.defaultFontPixelWidth + anchors.left: parent.left + anchors.right: parent.right + spacing: ScreenTools.defaultFontPixelHeight + + QGCCheckBox { + id: manualMagneticDeclinationCheckBox + text: qsTr("Manual Magnetic Declination") + property Fact autoDecFact: controller.getParameterFact(-1, "COMPASS_AUTODEC") + property int manual: 0 + property int automatic: 1 + + checked: autoDecFact.rawValue === manual + onClicked: autoDecFact.value = (checked ? manual : automatic) + } + + FactTextField { + fact: sensorParams.declinationFact + enabled: manualMagneticDeclinationCheckBox.checked + } + } + + Item { height: ScreenTools.defaultFontPixelHeight; width: 10 } // spacer + + QGCLabel { + id: northCalibrationLabel + width: parent.width + visible: _orientationsDialogShowCompass + wrapMode: Text.WordWrap + text: qsTr("Fast compass calibration given vehicle position and yaw. This ") + + qsTr("results in zero diagonal and off-diagonal elements, so is only ") + + qsTr("suitable for vehicles where the field is close to spherical. It is ") + + qsTr("useful for large vehicles where moving the vehicle to calibrate it ") + + qsTr("is difficult. Point the vehicle North before using it.") + } + + Column { + visible: northCalibrationLabel.visible + anchors.margins: ScreenTools.defaultFontPixelWidth + anchors.left: parent.left + anchors.right: parent.right + spacing: ScreenTools.defaultFontPixelHeight + + QGCCheckBox { + id: northCalibrationCheckBox + visible: northCalibrationLabel.visible + text: qsTr("Fast Calibration") + } + + QGCLabel { + id: northCalibrationManualPosition + width: parent.width + visible: northCalibrationCheckBox.checked && !globals.activeVehicle.coordinate.isValid + wrapMode: Text.WordWrap + text: qsTr("Vehicle has no Valid positon, please provide it") + } + + QGCCheckBox { + visible: northCalibrationManualPosition.visible && _gcsPosition.isValid + id: useGcsPositionCheckbox + text: qsTr("Use GCS position instead") + checked: _gcsPosition.isValid + } + QGCCheckBox { + visible: northCalibrationManualPosition.visible && !_gcsPosition.isValid + id: useMapPositionCheckbox + text: qsTr("Use current map position instead") + } + + QGCLabel { + width: parent.width + visible: useMapPositionCheckbox.checked + wrapMode: Text.WordWrap + text: qsTr(`Lat: ${_mapPosition.latitude.toFixed(4)} Lon: ${_mapPosition.longitude.toFixed(4)}`) + } + + FactTextField { + id: northCalLat + visible: !useGcsPositionCheckbox.checked && !useMapPositionCheckbox.checked && northCalibrationCheckBox.checked + text: "0.00" + textColor: isNaN(parseFloat(text)) ? qgcPal.warningText: qgcPal.textFieldText + enabled: !useGcsPositionCheckbox.checked + } + FactTextField { + id: northCalLon + visible: !useGcsPositionCheckbox.checked && !useMapPositionCheckbox.checked && northCalibrationCheckBox.checked + text: "0.00" + textColor: isNaN(parseFloat(text)) ? qgcPal.warningText: qgcPal.textFieldText + enabled: !useGcsPositionCheckbox.checked + } + + } + } // Column + } // QGCFlickable + } // QGCViewDialog + } // Component - orientationsDialogComponent Component { id: compassMotDialogComponent - QGCPopupDialog { - title: qsTr("Compass Motor Interference Calibration") - buttons: StandardButton.Cancel | StandardButton.Ok + QGCViewDialog { + id: compassMotDialog - onAccepted: controller.calibrateMotorInterference() + function accept() { + controller.calibrateMotorInterference() + compassMotDialog.hideDialog() + } - Column { - width: 40 * ScreenTools.defaultFontPixelWidth - spacing: ScreenTools.defaultFontPixelHeight + QGCFlickable { + anchors.fill: parent + contentHeight: columnLayout.height + clip: true - QGCLabel { - anchors.left: parent.left - anchors.right: parent.right - wrapMode: Text.WordWrap - text: qsTr("This is recommended for vehicles that have only an internal compass and on vehicles where there is significant interference on the compass from the motors, power wires, etc. ") + - qsTr("CompassMot only works well if you have a battery current monitor because the magnetic interference is linear with current drawn. ") + - qsTr("It is technically possible to set-up CompassMot using throttle but this is not recommended.") - } + Column { + id: columnLayout + anchors.margins: ScreenTools.defaultFontPixelWidth + anchors.left: parent.left + anchors.right: parent.right + anchors.top: parent.top + spacing: ScreenTools.defaultFontPixelHeight - QGCLabel { - anchors.left: parent.left - anchors.right: parent.right - wrapMode: Text.WordWrap - text: qsTr("Disconnect your props, flip them over and rotate them one position around the frame. ") + - qsTr("In this configuration they should push the copter down into the ground when the throttle is raised.") - } + QGCLabel { + anchors.left: parent.left + anchors.right: parent.right + wrapMode: Text.WordWrap + text: qsTr("This is recommended for vehicles that have only an internal compass and on vehicles where there is significant interference on the compass from the motors, power wires, etc. ") + + qsTr("CompassMot only works well if you have a battery current monitor because the magnetic interference is linear with current drawn. ") + + qsTr("It is technically possible to set-up CompassMot using throttle but this is not recommended.") + } - QGCLabel { - anchors.left: parent.left - anchors.right: parent.right - wrapMode: Text.WordWrap - text: qsTr("Secure the copter (perhaps with tape) so that it does not move.") - } + QGCLabel { + anchors.left: parent.left + anchors.right: parent.right + wrapMode: Text.WordWrap + text: qsTr("Disconnect your props, flip them over and rotate them one position around the frame. ") + + qsTr("In this configuration they should push the copter down into the ground when the throttle is raised.") + } - QGCLabel { - anchors.left: parent.left - anchors.right: parent.right - wrapMode: Text.WordWrap - text: qsTr("Turn on your transmitter and keep throttle at zero.") - } + QGCLabel { + anchors.left: parent.left + anchors.right: parent.right + wrapMode: Text.WordWrap + text: qsTr("Secure the copter (perhaps with tape) so that it does not move.") + } - QGCLabel { - anchors.left: parent.left - anchors.right: parent.right - wrapMode: Text.WordWrap - text: qsTr("Click Ok to start CompassMot calibration.") - } + QGCLabel { + anchors.left: parent.left + anchors.right: parent.right + wrapMode: Text.WordWrap + text: qsTr("Turn on your transmitter and keep throttle at zero.") + } + + QGCLabel { + anchors.left: parent.left + anchors.right: parent.right + wrapMode: Text.WordWrap + text: qsTr("Click Ok to start CompassMot calibration.") + } + } // Column + } // QGCFlickable + } // QGCViewDialog + } // Component - compassMotDialogComponent + + Component { + id: levelHorizonDialogComponent + + QGCViewDialog { + id: levelHorizonDialog + + function accept() { + controller.levelHorizon() + levelHorizonDialog.hideDialog() + } + + QGCLabel { + anchors.left: parent.left + anchors.right: parent.right + wrapMode: Text.WordWrap + text: qsTr("To level the horizon you need to place the vehicle in its level flight position and press Ok.") + } + } // QGCViewDialog + } // Component - levelHorizonDialogComponent + + Component { + id: calibratePressureDialogComponent + + QGCViewDialog { + id: calibratePressureDialog + + function accept() { + controller.calibratePressure() + calibratePressureDialog.hideDialog() + } + + QGCLabel { + anchors.left: parent.left + anchors.right: parent.right + wrapMode: Text.WordWrap + text: _helpText + + readonly property string _altText: globals.activeVehicle.sub ? qsTr("depth") : qsTr("altitude") + readonly property string _helpText: qsTr("Pressure calibration will set the %1 to zero at the current pressure reading. %2").arg(_altText).arg(_helpTextFW) + readonly property string _helpTextFW: globals.activeVehicle.fixedWing ? qsTr("To calibrate the airspeed sensor shield it from the wind. Do not touch the sensor or obstruct any holes during the calibration.") : "" + } + } // QGCViewDialog + } // Component - calibratePressureDialogComponent + + Component { + id: calibrateGyroDialogComponent + + QGCViewDialog { + id: calibrateGyroDialog + + function accept() { + controller.calibrateGyro() + calibrateGyroDialog.hideDialog() + } + + QGCLabel { + anchors.left: parent.left + anchors.right: parent.right + wrapMode: Text.WordWrap + text: qsTr("For Gyroscope calibration you will need to place your vehicle on a surface and leave it still.\n\nClick Ok to start calibration.") } } } @@ -697,10 +786,7 @@ SetupPage { if (controller.accelSetupNeeded) { mainWindow.showMessageDialog(_levelHorizonText, qsTr("Accelerometer must be calibrated prior to Level Horizon.")) } else { - mainWindow.showMessageDialog(_levelHorizonText, - qsTr("To level the horizon you need to place the vehicle in its level flight position and press Ok."), - StandardButton.Cancel | StandardButton.Ok, - function() { controller.levelHorizon() }) + mainWindow.showComponentDialog(levelHorizonDialogComponent, _levelHorizonText, mainWindow.showDialogDefaultWidth, StandardButton.Cancel | StandardButton.Ok) } } } @@ -709,30 +795,23 @@ SetupPage { width: _buttonWidth text: qsTr("Gyro") visible: globals.activeVehicle && (globals.activeVehicle.multiRotor | globals.activeVehicle.rover | globals.activeVehicle.sub) - onClicked: mainWindow.showMessageDialog(qsTr("Calibrate Gyro"), - qsTr("For Gyroscope calibration you will need to place your vehicle on a surface and leave it still.\n\nClick Ok to start calibration."), - StandardButton.Cancel | StandardButton.Ok, - function() { controller.calibrateGyro() }) + onClicked: mainWindow.showComponentDialog(calibrateGyroDialogComponent, qsTr("Calibrate Gyro"), mainWindow.showDialogDefaultWidth, StandardButton.Cancel | StandardButton.Ok) } QGCButton { width: _buttonWidth text: _calibratePressureText - onClicked: mainWindow.showMessageDialog(_calibratePressureText, - qsTr("Pressure calibration will set the %1 to zero at the current pressure reading. %2").arg(_altText).arg(_helpTextFW), - StandardButton.Cancel | StandardButton.Ok, - function() { controller.calibratePressure() }) + onClicked: mainWindow.showComponentDialog(calibratePressureDialogComponent, _calibratePressureText, mainWindow.showDialogDefaultWidth, StandardButton.Cancel | StandardButton.Ok) - readonly property string _altText: globals.activeVehicle.sub ? qsTr("depth") : qsTr("altitude") - readonly property string _helpTextFW: globals.activeVehicle.fixedWing ? qsTr("To calibrate the airspeed sensor shield it from the wind. Do not touch the sensor or obstruct any holes during the calibration.") : "" - readonly property string _calibratePressureText: globals.activeVehicle.fixedWing ? qsTr("Baro/Airspeed") : qsTr("Pressure") + readonly property string _calibratePressureText: globals.activeVehicle.fixedWing ? qsTr("Baro/Airspeed") : qsTr("Pressure") } QGCButton { width: _buttonWidth text: qsTr("CompassMot") visible: globals.activeVehicle ? globals.activeVehicle.supportsMotorInterference : false - onClicked: compassMotDialogComponent.createObject(mainWindow).open() + + onClicked: mainWindow.showComponentDialog(compassMotDialogComponent, qsTr("CompassMot - Compass Motor Interference Calibration"), mainWindow.showDialogFullWidth, StandardButton.Cancel | StandardButton.Ok) } QGCButton { diff --git a/src/AutoPilotPlugins/APM/APMSensorsComponentController.cc b/src/AutoPilotPlugins/APM/APMSensorsComponentController.cc index 944843a..91a5190 100644 --- a/src/AutoPilotPlugins/APM/APMSensorsComponentController.cc +++ b/src/AutoPilotPlugins/APM/APMSensorsComponentController.cc @@ -58,6 +58,9 @@ APMSensorsComponentController::APMSensorsComponentController(void) , _waitingForCancel(false) , _restoreCompassCalFitness(false) { + _compassCal.setVehicle(_vehicle); + connect(&_compassCal, &APMCompassCal::vehicleTextMessage, this, &APMSensorsComponentController::_handleUASTextMessage); + APMAutoPilotPlugin * apmPlugin = qobject_cast(_vehicle->autopilotPlugin()); // Find the sensors component @@ -271,6 +274,9 @@ void APMSensorsComponentController::_mavCommandResult(int vehicleId, int compone 0, // no delayed start 0); // no auto-reboot + } else { + // Onboard mag cal is not supported + _compassCal.startCalibration(); } } else if (command == MAV_CMD_DO_START_MAG_CAL && result != MAV_RESULT_ACCEPTED) { _restorePreviousCompassCalFitness(); @@ -446,7 +452,11 @@ void APMSensorsComponentController::cancelCalibration(void) { _cancelButton->setEnabled(false); - if (_calTypeInProgress == CalTypeOnboardCompass) { + if (_calTypeInProgress == CalTypeOffboardCompass) { + _waitingForCancel = true; + emit waitingForCancelChanged(); + _compassCal.cancelCalibration(); + } else if (_calTypeInProgress == CalTypeOnboardCompass) { _vehicle->sendMavCommand(_vehicle->defaultComponentId(), MAV_CMD_DO_CANCEL_MAG_CAL, true /* showError */); _stopCalibration(StopCalibrationCancelled); } else { @@ -514,9 +524,6 @@ void APMSensorsComponentController::_handleCommandAck(mavlink_message_t& message if (commandAck.command == MAV_CMD_PREFLIGHT_CALIBRATION) { switch (commandAck.result) { - case MAV_RESULT_IN_PROGRESS: - _appendStatusLog(tr("In progress")); - break; case MAV_RESULT_ACCEPTED: _appendStatusLog(tr("Successfully completed")); _stopCalibration(StopCalibrationSuccessShowLog); diff --git a/src/AutoPilotPlugins/APM/APMSensorsComponentController.h b/src/AutoPilotPlugins/APM/APMSensorsComponentController.h index bca5fc4..2fe31a9 100644 --- a/src/AutoPilotPlugins/APM/APMSensorsComponentController.h +++ b/src/AutoPilotPlugins/APM/APMSensorsComponentController.h @@ -15,6 +15,7 @@ #include "FactPanelController.h" #include "QGCLoggingCategory.h" #include "APMSensorsComponent.h" +#include "APMCompassCal.h" Q_DECLARE_LOGGING_CATEGORY(APMSensorsComponentControllerLog) Q_DECLARE_LOGGING_CATEGORY(APMSensorsComponentControllerVerboseLog) @@ -96,6 +97,7 @@ public: CalTypeAccel, CalTypeGyro, CalTypeOnboardCompass, + CalTypeOffboardCompass, CalTypeLevelHorizon, CalTypeCompassMot, CalTypePressure, @@ -159,6 +161,7 @@ private: void _updateAndEmitShowOrientationCalArea(bool show); + APMCompassCal _compassCal; APMSensorsComponent* _sensorsComponent; QQuickItem* _statusLog; diff --git a/src/AutoPilotPlugins/APM/APMSubFrameComponent.qml b/src/AutoPilotPlugins/APM/APMSubFrameComponent.qml index 30d061b..6cacc18 100644 --- a/src/AutoPilotPlugins/APM/APMSubFrameComponent.qml +++ b/src/AutoPilotPlugins/APM/APMSubFrameComponent.qml @@ -8,10 +8,9 @@ ****************************************************************************/ -import QtQuick 2.3 -import QtQuick.Controls 1.2 -import QtQuick.Dialogs 1.2 -import QtQuick.Layouts 1.2 +import QtQuick 2.3 +import QtQuick.Controls 1.2 +import QtQuick.Dialogs 1.2 import QGroundControl 1.0 import QGroundControl.FactSystem 1.0 @@ -184,7 +183,7 @@ SetupPage { setFrameConfig(frameModelSelected.paramValue) return } - confirmFrameComponent.createObject(mainWindow).open() + mainWindow.showComponentDialog(confirmFrameComponent, qsTr("Frame selection"), mainWindow.showDialogDefaultWidth, StandardButton.Close) } } } @@ -197,43 +196,61 @@ SetupPage { Component { id: confirmFrameComponent - QGCPopupDialog { - id: confirmFrameDialog - title: qsTr("Frame selection") - buttons: StandardButton.Close + QGCViewDialog { + QGCLabel { + id: applyParamsText + anchors.left: parent.left + anchors.margins: _margins + anchors.right: parent.right + anchors.top: parent.top + wrapMode: Text.WordWrap + text: { + if (frameModelSelected.paramFileName != undefined) { + return qsTr("Would you like to load the default parameters for the frame ?") + } - ColumnLayout { - QGCLabel { - id: applyParamsText - width: firstButton.width - wrapMode: Text.WordWrap - text: frameModelSelected.paramFileName != undefined ? - qsTr("Would you like to load the default parameters for the frame?") : - qsTr("Would you like to set the desired frame?") + return qsTr("Would you like to set the desired frame ?") } + } + + Flow { + anchors.bottom: parent.bottom + anchors.left: parent.left + anchors.margins: _margins + anchors.right: parent.right + anchors.top: applyParamsText.bottom + spacing: _margins + layoutDirection: Qt.Vertical QGCButton { - id: firstButton - Layout.fillWidth: true - text: qsTr("Yes, Load default parameter set for %1").arg(frameModelSelected.name) - visible: frameModelSelected.paramFileName != undefined + width: parent.width + text: qsTr("Yes, Load default parameter set for %1").arg(frameModelSelected.name) + wrapMode: Text.WordWrap + horizontalAlignment: Text.AlignHCenter + visible: frameModelSelected.paramFileName != undefined onClicked: { setFrameConfig(frameModelSelected.paramValue) loadFrameDefaultParameters(frameModelSelected.paramFileName) - confirmFrameDialog.close() + hideDialog() } } QGCButton { - Layout.fillWidth: true - text: frameModelSelected.paramFileName != undefined ? - qsTr("No, set frame only") : - qsTr("Confirm frame %1").arg(frameModelSelected.name) + width: parent.width + wrapMode: Text.WordWrap + horizontalAlignment: Text.AlignHCenter + text: { + if (frameModelSelected.paramFileName != undefined) { + return qsTr("No, set frame only") + } + + return qsTr("Confirm frame %1").arg(frameModelSelected.name) + } onClicked: { setFrameConfig(frameModelSelected.paramValue) - confirmFrameDialog.close() + hideDialog() } } } diff --git a/src/AutoPilotPlugins/APM/CMakeLists.txt b/src/AutoPilotPlugins/APM/CMakeLists.txt index 8cd4709..565e541 100644 --- a/src/AutoPilotPlugins/APM/CMakeLists.txt +++ b/src/AutoPilotPlugins/APM/CMakeLists.txt @@ -14,7 +14,6 @@ SOURCES APMPowerComponent.qml APMPowerComponentSummary.qml APMRadioComponentSummary.qml - APMRemoteSupportComponent.qml APMSafetyComponent.qml APMSafetyComponentCopter.qml APMSafetyComponentPlane.qml @@ -33,4 +32,4 @@ SOURCES APMTuningComponentCopter.qml APMTuningComponentSub.qml -) +) \ No newline at end of file diff --git a/src/AutoPilotPlugins/APM/Images/ForwardingSupportIcon.svg b/src/AutoPilotPlugins/APM/Images/ForwardingSupportIcon.svg deleted file mode 100644 index cb7d99e..0000000 --- a/src/AutoPilotPlugins/APM/Images/ForwardingSupportIcon.svg +++ /dev/null @@ -1,17 +0,0 @@ - - - - - - - - - - - - - \ No newline at end of file diff --git a/src/AutoPilotPlugins/APM/Images/ForwardingSupportIconGreen.svg b/src/AutoPilotPlugins/APM/Images/ForwardingSupportIconGreen.svg deleted file mode 100644 index cf2c52a..0000000 --- a/src/AutoPilotPlugins/APM/Images/ForwardingSupportIconGreen.svg +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/src/AutoPilotPlugins/CMakeLists.txt b/src/AutoPilotPlugins/CMakeLists.txt index ab812c2..ee84562 100644 --- a/src/AutoPilotPlugins/CMakeLists.txt +++ b/src/AutoPilotPlugins/CMakeLists.txt @@ -8,6 +8,7 @@ add_library(AutoPilotPlugins APM/APMAirframeComponentController.cc APM/APMAutoPilotPlugin.cc APM/APMCameraComponent.cc + APM/APMCompassCal.cc APM/APMFlightModesComponent.cc APM/APMFlightModesComponentController.cc APM/APMFollowComponent.cc @@ -17,7 +18,6 @@ add_library(AutoPilotPlugins APM/APMMotorComponent.cc APM/APMPowerComponent.cc APM/APMRadioComponent.cc - APM/APMRemoteSupportComponent.cc APM/APMSafetyComponent.cc APM/APMSensorsComponent.cc APM/APMSensorsComponentController.cc @@ -50,6 +50,8 @@ add_library(AutoPilotPlugins PX4/PowerComponentController.cc PX4/PowerComponentController.h PX4/PowerComponent.h + PX4/PX4AdvancedFlightModesController.cc + PX4/PX4AdvancedFlightModesController.h PX4/PX4AirframeLoader.cc PX4/PX4AirframeLoader.h PX4/PX4AutoPilotPlugin.cc diff --git a/src/AutoPilotPlugins/Common/RadioComponent.qml b/src/AutoPilotPlugins/Common/RadioComponent.qml index b429e81..4f1f39d 100644 --- a/src/AutoPilotPlugins/Common/RadioComponent.qml +++ b/src/AutoPilotPlugins/Common/RadioComponent.qml @@ -31,6 +31,8 @@ SetupPage { width: availableWidth height: Math.max(leftColumn.height, rightColumn.height) + readonly property string dialogTitle: qsTr("Radio") + function setupPageCompleted() { controller.start() updateChannelCount() @@ -53,28 +55,59 @@ SetupPage { onThrottleReversedCalFailure: mainWindow.showMessageDialog(qsTr("Throttle channel reversed"), qsTr("Calibration failed. The throttle channel on your transmitter is reversed. You must correct this on your transmitter in order to complete calibration.")) } + Component { + id: copyTrimsDialogComponent + QGCViewMessage { + message: qsTr("Center your sticks and move throttle all the way down, then press Ok to copy trims. After pressing Ok, reset the trims on your radio back to zero.") + function accept() { + hideDialog() + controller.copyTrims() + } + } + } + + Component { + id: zeroTrimsDialogComponent + QGCViewMessage { + message: qsTr("Before calibrating you should zero all your trims and subtrims. Click Ok to start Calibration.\n\n%1").arg( + (QGroundControl.multiVehicleManager.activeVehicle.px4Firmware ? "" : qsTr("Please ensure all motor power is disconnected AND all props are removed from the vehicle."))) + function accept() { + hideDialog() + controller.nextButtonClicked() + } + } + } + + Component { + id: channelCountDialogComponent + QGCViewMessage { + message: controller.channelCount == 0 ? qsTr("Please turn on transmitter.") : qsTr("%1 channels or more are needed to fly.").arg(controller.minChannelCount) + } + } + Component { id: spektrumBindDialogComponent + QGCViewDialog { - QGCPopupDialog { - title: qsTr("Spektrum Bind") - buttons: StandardButton.Ok | StandardButton.Cancel + function accept() { + controller.spektrumBindMode(radioGroup.checkedButton.bindMode) + hideDialog() + } - onAccepted: { controller.spektrumBindMode(radioGroup.checkedButton.bindMode) } + function reject() { + hideDialog() + } ButtonGroup { id: radioGroup } - ColumnLayout { - spacing: ScreenTools.defaultFontPixelHeight / 2 + Column { + anchors.fill: parent + spacing: 5 QGCLabel { + width: parent.width wrapMode: Text.WordWrap - text: qsTr("Click Ok to place your Spektrum receiver in the bind mode.") - } - - QGCLabel { - wrapMode: Text.WordWrap - text: qsTr("Select the specific receiver type below:") + text: qsTr("Click Ok to place your Spektrum receiver in the bind mode. Select the specific receiver type below:") } QGCRadioButton { @@ -97,7 +130,7 @@ SetupPage { } } } - } + } // Component - spektrumBindDialogComponent // Live channel monitor control component Component { @@ -313,19 +346,7 @@ SetupPage { onClicked: { if (text === qsTr("Calibrate")) { - if (controller.channelCount < controller.minChannelCount) { - mainWindow.showMessageDialog(qsTr("Radio Not Ready"), - controller.channelCount == 0 ? qsTr("Please turn on transmitter.") : - (controller.channelCount < controller.minChannelCount ? - qsTr("%1 channels or more are needed to fly.").arg(controller.minChannelCount) : - qsTr("Ready to calibrate."))) - } else { - mainWindow.showMessageDialog(qsTr("Zero Trims"), - qsTr("Before calibrating you should zero all your trims and subtrims. Click Ok to start Calibration.\n\n%1").arg( - (QGroundControl.multiVehicleManager.activeVehicle.px4Firmware ? "" : qsTr("Please ensure all motor power is disconnected AND all props are removed from the vehicle."))), - StandardButton.Ok, - function() { controller.nextButtonClicked() }) - } + mainWindow.showComponentDialog(zeroTrimsDialogComponent, dialogTitle, mainWindow.showDialogDefaultWidth, StandardButton.Ok | StandardButton.Cancel) } else { controller.nextButtonClicked() } @@ -359,8 +380,8 @@ SetupPage { Repeater { model: QGroundControl.multiVehicleManager.activeVehicle.px4Firmware ? (QGroundControl.multiVehicleManager.activeVehicle.multiRotor ? - [ "RC_MAP_AUX1", "RC_MAP_AUX2", "RC_MAP_PARAM1", "RC_MAP_PARAM2", "RC_MAP_PARAM3"] : - [ "RC_MAP_FLAPS", "RC_MAP_AUX1", "RC_MAP_AUX2", "RC_MAP_PARAM1", "RC_MAP_PARAM2", "RC_MAP_PARAM3"]) : + [ "RC_MAP_AUX1", "RC_MAP_AUX2", "RC_MAP_PARAM1", "RC_MAP_PARAM2", "RC_MAP_PARAM3"] : + [ "RC_MAP_FLAPS", "RC_MAP_AUX1", "RC_MAP_AUX2", "RC_MAP_PARAM1", "RC_MAP_PARAM2", "RC_MAP_PARAM3"]) : 0 RowLayout { @@ -385,15 +406,12 @@ SetupPage { QGCButton { id: bindButton text: qsTr("Spektrum Bind") - onClicked: spektrumBindDialogComponent.createObject(mainWindow).open() + onClicked: mainWindow.showComponentDialog(spektrumBindDialogComponent, dialogTitle, mainWindow.showDialogDefaultWidth, StandardButton.Ok | StandardButton.Cancel) } QGCButton { text: qsTr("Copy Trims") - onClicked: mainWindow.showMessageDialog(qsTr("Copy Trims"), - qsTr("Center your sticks and move throttle all the way down, then press Ok to copy trims. After pressing Ok, reset the trims on your radio back to zero."), - StandardButton.Ok | StandardButton.Cancel, - function() { controller.copyTrims() }) + onClicked: mainWindow.showComponentDialog(copyTrimsDialogComponent, dialogTitle, mainWindow.showDialogDefaultWidth, StandardButton.Ok | StandardButton.Cancel) } } } // Column - Left Column diff --git a/src/AutoPilotPlugins/PX4/ActuatorComponent.qml b/src/AutoPilotPlugins/PX4/ActuatorComponent.qml index 6bd85ef..68cc175 100644 --- a/src/AutoPilotPlugins/PX4/ActuatorComponent.qml +++ b/src/AutoPilotPlugins/PX4/ActuatorComponent.qml @@ -31,23 +31,10 @@ SetupPage { implicitWidth: _leftColumnWidth // mixer ui - RowLayout { - width: _leftColumnWidth - visible: actuators.mixer.groups.count > 0 - QGCLabel { - text: qsTr("Geometry") + (actuators.mixer.title ? ": " + actuators.mixer.title : "") - font.pointSize: ScreenTools.mediumFontPointSize - Layout.fillWidth: true - } - QGCLabel { - text: "?" - font.pointSize: ScreenTools.mediumFontPointSize - visible: actuators.mixer.helpUrl - textFormat: Text.RichText - onLinkActivated: { - Qt.openUrlExternally(link); - } - } + QGCLabel { + text: qsTr("Geometry") + font.pointSize: ScreenTools.mediumFontPointSize + visible: actuators.mixer.groups.count > 0 } Rectangle { @@ -299,7 +286,7 @@ SetupPage { model: actionGroup.actions QGCMenuItem { text: object.label - onTriggered: object.trigger() + onTriggered: object.trigger() } onObjectAdded: actionMenu.insertItem(index, object) onObjectRemoved: actionMenu.removeItem(object) @@ -367,7 +354,6 @@ SetupPage { QGCButton { text: qsTr("Identify & Assign Motors") visible: !actuators.motorAssignmentActive && selActuatorOutput.actuatorOutput.groupsVisible - enabled: actuators.motorAssignmentEnabled onClicked: { var success = actuators.initMotorAssignment() if (success) { diff --git a/src/AutoPilotPlugins/PX4/AirframeComponent.qml b/src/AutoPilotPlugins/PX4/AirframeComponent.qml index d325475..a99e1a3 100644 --- a/src/AutoPilotPlugins/PX4/AirframeComponent.qml +++ b/src/AutoPilotPlugins/PX4/AirframeComponent.qml @@ -97,6 +97,27 @@ SetupPage { } } + Component { + id: applyRestartDialogComponent + + QGCViewDialog { + id: applyRestartDialog + + function accept() { + controller.changeAutostart() + applyRestartDialog.hideDialog() + } + + QGCLabel { + anchors.fill: parent + wrapMode: Text.WordWrap + text: qsTr("Clicking 'Apply' will save the changes you have made to your airframe configuration.

    \ +All vehicle parameters other than Radio Calibration will be reset.

    \ +Your vehicle will also be restarted in order to complete the process.") + } + } + } + Item { id: helpApplyRow anchors.left: parent.left @@ -118,13 +139,8 @@ SetupPage { id: applyButton anchors.right: parent.right text: qsTr("Apply and Restart") - onClicked: mainWindow.showMessageDialog(qsTr("Apply and Restart"), - qsTr("Clicking 'Apply' will save the changes you have made to your airframe configuration.

    \ - All vehicle parameters other than Radio Calibration will be reset.

    \ - Your vehicle will also be restarted in order to complete the process."), - StandardButton.Apply | StandardButton.Cancel, - function() { controller.changeAutostart() }) + onClicked: mainWindow.showComponentDialog(applyRestartDialogComponent, qsTr("Apply and Restart"), mainWindow.showDialogDefaultWidth, StandardButton.Apply | StandardButton.Cancel) } } diff --git a/src/AutoPilotPlugins/PX4/AirframeFactMetaData.xml b/src/AutoPilotPlugins/PX4/AirframeFactMetaData.xml index b48dbc4..e890a4d 100644 --- a/src/AutoPilotPlugins/PX4/AirframeFactMetaData.xml +++ b/src/AutoPilotPlugins/PX4/AirframeFactMetaData.xml @@ -6,10 +6,10 @@ Airship Airship - starboard thruster - port thruster - tail thruster - thrust tilt + starboard thruster + port thruster + thrust tilt + tail thruster @@ -18,23 +18,25 @@ ThunderFly s.r.o., Roman Dvorak <dvorakroman@thunderfly.cz> Autogyro https://github.com/ThunderFly-aerospace/Auto-G2/ - throttle - rotor_head_L - rotor_head_R - elevator - rudder - rudder (second, optional) - wheel + rotor_head_L + rotor_head_R + elevator + rudder + rudder (second, optional) + throttle + wheel + feed-through of RC AUX1 channel for prerotator (optional) + feed-through of RC AUX2 channel for release device (optional) Autogyro ThunderFly s.r.o., Roman Dvorak <dvorakroman@thunderfly.cz> Autogyro https://github.com/ThunderFly-aerospace/TF-G2/ - throttle - rotor_head_L - rotor_head_R - rudder + rotor_head_L + rotor_head_R + rudder + throttle @@ -45,17 +47,46 @@ https://github.com/ThunderFly-aerospace/TF-B1/ + + + Copter + Emmanuel Roussel + Coaxial Helicopter + Left swashplate servomotor, pitch axis + Right swashplate servomotor, roll axis + Upper rotor (CCW) + Lower rotor (CW) + + Copter William Peale <develop707@gmail.com> Dodecarotor cox + motor 1 + motor 2 + motor 3 + motor 4 + motor 5 + motor 6 + motor 7 + motor 8 + motor 9 + motor 10 + motor 11 + motor 12 - + Copter + Bart Slinger <bartslinger@gmail.com> Helicopter + main motor + front swashplate servo + right swashplate servo + left swashplate servo + tail-rotor servo @@ -63,6 +94,15 @@ Copter Lorenz Meier <lorenz@px4.io> Hexarotor + + motor1 + motor2 + motor3 + motor4 + motor5 + motor6 + feed-through of RC AUX1 channel + feed-through of RC AUX2 channel + feed-through of RC AUX3 channel @@ -70,12 +110,15 @@ Copter Lorenz Meier <lorenz@px4.io> Hexarotor Coaxial - front right top, CW - front right bottom, CCW - back top, CW - back bottom, CCW - front left top, CW - front left bottom, CCW + front right top, CW + front right bottom, CCW + back top, CW + back bottom, CCW + front left top, CW + front left bottom, CCW + feed-through of RC AUX1 channel + feed-through of RC AUX2 channel + feed-through of RC AUX3 channel @@ -83,11 +126,48 @@ Copter Lorenz Meier <lorenz@px4.io> Hexarotor x + motor 1 + motor 2 + motor 3 + motor 4 + motor 5 + motor 6 + feed-through of RC AUX1 channel + feed-through of RC AUX2 channel + feed-through of RC AUX3 channel Copter Hyon Lim <lim@uvify.com> Hexarotor x + motor 1 + motor 2 + motor 3 + motor 4 + motor 5 + motor 6 + feed-through of RC AUX1 channel + feed-through of RC AUX2 channel + + + Copter + Silvan Fuhrer + Hexarotor x + + + + + Copter + Simon Wilks <simon@uaventure.com> + Octo Coax Wide + motor 1 + motor 2 + motor 3 + motor 4 + motor 5 + motor 6 + motor 7 + motor 8 @@ -95,6 +175,17 @@ Copter Lorenz Meier <lorenz@px4.io> Octorotor + + motor 1 + motor 2 + motor 3 + motor 4 + motor 5 + motor 6 + motor 7 + motor 8 + feed-through of RC AUX1 channel + feed-through of RC AUX2 channel + feed-through of RC AUX3 channel @@ -102,14 +193,14 @@ Copter Lorenz Meier <lorenz@px4.io> Octorotor Coaxial - motor 1 - motor 2 - motor 3 - motor 4 - motor 5 - motor 6 - motor 7 - motor 8 + motor 1 + motor 2 + motor 3 + motor 4 + motor 5 + motor 6 + motor 7 + motor 8 @@ -117,6 +208,17 @@ Copter Lorenz Meier <lorenz@px4.io> Octorotor x + motor 1 + motor 2 + motor 3 + motor 4 + motor 5 + motor 6 + motor 7 + motor 8 + feed-through of RC AUX1 channel + feed-through of RC AUX2 channel + feed-through of RC AUX3 channel @@ -124,6 +226,16 @@ Copter Lorenz Meier <lorenz@px4.io> Quadrotor + + motor 1 + motor 2 + motor 3 + motor 4 + feed-through of RC AUX1 channel + feed-through of RC AUX2 channel + feed-through of RC AUX1 channel + feed-through of RC AUX2 channel + feed-through of RC AUX3 channel + feed-through of RC FLAPS channel @@ -131,11 +243,95 @@ Copter Blankered Quadrotor H + motor 1 + motor 2 + motor 3 + motor 4 + feed-through of RC AUX1 channel + feed-through of RC AUX2 channel Copter Beat Kueng <beat-kueng@gmx.net> Quadrotor H + motor 1 + motor 2 + motor 3 + motor 4 + + + + + Copter + Lorenz Meier <lorenz@px4.io> + Quadrotor Wide + motor 1 + motor 2 + motor 3 + motor 4 + feed-through of RC AUX1 channel + feed-through of RC AUX2 channel + feed-through of RC AUX1 channel + feed-through of RC AUX2 channel + feed-through of RC AUX3 channel + feed-through of RC FLAPS channel + + + Copter + Lorenz Meier <lorenz@px4.io> + Quadrotor Wide + motor 1 + motor 2 + motor 3 + motor 4 + feed-through of RC AUX1 channel + feed-through of RC AUX2 channel + feed-through of RC AUX3 channel + feed-through of RC FLAPS channel + + + Copter + Lorenz Meier <lorenz@px4.io> + Quadrotor Wide + motor 1 + motor 2 + motor 3 + motor 4 + feed-through of RC AUX1 channel + feed-through of RC AUX2 channel + feed-through of RC AUX1 channel + feed-through of RC AUX2 channel + feed-through of RC AUX3 channel + feed-through of RC FLAPS channel + + + Copter + Simon Wilks <simon@uaventure.com> + Quadrotor Wide + motor 1 + motor 2 + motor 3 + motor 4 + feed-through of RC AUX1 channel + feed-through of RC AUX2 channel + feed-through of RC AUX1 channel + feed-through of RC AUX2 channel + feed-through of RC AUX3 channel + feed-through of RC FLAPS channel + + + + + Copter + Lorenz Meier <lorenz@px4.io> + Quadrotor asymmetric + https://docs.px4.io/master/en/frames_multicopter/spedix_s250_pixracer.html + motor1 (front right: CCW) + motor2 (back left: CCW) + motor3 (front left: CW) + motor4 (back right: CW) + feed-through of RC AUX1 channel + feed-through of RC AUX2 channel @@ -143,6 +339,36 @@ Copter Lorenz Meier <lorenz@px4.io> Quadrotor x + motor 1 + motor 2 + motor 3 + motor 4 + feed-through of RC AUX1 channel + feed-through of RC AUX2 channel + feed-through of RC AUX1 channel + feed-through of RC AUX2 channel + feed-through of RC AUX3 channel + feed-through of RC FLAPS channel + + + Copter + James Goppert <james.goppert@gmail.com> + Quadrotor x + + + Copter + Lorenz Meier <lorenz@px4.io> + Quadrotor x + + + Copter + Lorenz Meier <lorenz@px4.io> + Quadrotor x + + + Copter + Lorenz Meier <lorenz@px4.io> + Quadrotor x Copter @@ -154,22 +380,36 @@ Lorenz Meier <lorenz@px4.io> Quadrotor x - + Copter Quadrotor x + motor 1 + motor 2 + motor 3 + motor 4 Copter Iain Galloway <iain.galloway@nxp.com> Quadrotor x + motor 1 + motor 2 + motor 3 + motor 4 - + Copter - Farhang Naderi <farhang.nba@gmail.com> + Silvan Fuhrer Quadrotor x - + Copter + Andreas Antener <andreas@uaventure.com> + Quadrotor x + + + Copter + Lorenz Meier <lorenz@px4.io> Quadrotor x @@ -181,27 +421,63 @@ Copter Beat Kueng <beat-kueng@gmx.net> Quadrotor x - https://docs.px4.io/main/en/frames_multicopter/holybro_qav250_pixhawk4_mini.html + https://docs.px4.io/master/en/frames_multicopter/holybro_qav250_pixhawk4_mini.html Copter Beat Kueng <beat@px4.io> Quadrotor x + + Copter + James Goppert <james.goppert@gmail.com> + Quadrotor x + Copter Quadrotor x + motor 1 + motor 2 + motor 3 + motor 4 Copter Hyon Lim <lim@uvify.com> Quadrotor x + motor 1 + motor 2 + motor 3 + motor 4 + + + Copter + Hyon Lim <lim@uvify.com> + Quadrotor x + motor 1 + motor 2 + motor 3 + motor 4 Copter Hyon Lim <lim@uvify.com> Quadrotor x + motor 1 + motor 2 + motor 3 + motor 4 + + + Copter + Anton Matosov <anton.matosov@gmail.com> + Quadrotor x + + + Copter + Henry Zhang <zhanghui629@gmail.com> + Quadrotor x Copter @@ -219,7 +495,7 @@ Quadrotor x - + Copter Lorenz Meier <lorenz@px4.io> @@ -231,20 +507,158 @@ Simulation - - + + Copter + Ricardo Marques <marques.ricardo17@gmail.com> + Tilt-Quad + http://www.alivaero.com/the-project.html + motor 1 + motor 2 + motor 3 + motor 4 + Outer servo motor for rotor 2 arm + Outer servo motor for rotor 4 arm + Inner servo motor for rotor 2 arm + Inner servo motor for rotor 4 arm + + + + + Copter + Trent Lukaczyk <aerialhedgehog@gmail.com> Tricopter Y+ - motor 1 - motor 2 - motor 3 - yaw servo + motor 1 + motor 2 + motor 3 + yaw servo + + + + + Copter + Trent Lukaczyk <aerialhedgehog@gmail.com> + Tricopter Y- + motor 1 + motor 2 + motor 3 + yaw servo - + Plane + Flying Wing + left aileron + right aileron + throttle + feed-through of RC AUX1 channel + feed-through of RC AUX2 channel + feed-through of RC AUX3 channel + + + Plane + Simon Wilks <simon@uaventure.com> + Flying Wing + left aileron + right aileron + throttle + feed-through of RC AUX1 channel + feed-through of RC AUX2 channel + feed-through of RC AUX3 channel + + + Plane + Simon Wilks <simon@uaventure.com> + Flying Wing + https://docs.px4.io/master/en/frames_plane/wing_wing_z84.html + left aileron + right aileron + throttle + feed-through of RC AUX1 channel + feed-through of RC AUX2 channel + feed-through of RC AUX3 channel + + + Plane + Julian Oes <julian@px4.io> + Flying Wing + left aileron + right aileron + throttle + feed-through of RC AUX1 channel + feed-through of RC AUX2 channel + feed-through of RC AUX3 channel + + + Plane + Lorenz Meier <lorenz@px4.io> + Flying Wing + https://docs.px4.io/master/en/frames_plane/wing_wing_z84.html + left aileron + right aileron + throttle + feed-through of RC AUX1 channel + feed-through of RC AUX2 channel + feed-through of RC AUX3 channel + + + Plane + Simon Wilks <simon@uaventure.com> + Flying Wing + right aileron + left aileron + throttle + feed-through of RC AUX1 channel + feed-through of RC AUX2 channel + feed-through of RC AUX3 channel + + + Plane + Simon Wilks <simon@uaventure.com> + Flying Wing + left aileron + right aileron + throttle + feed-through of RC AUX1 channel + feed-through of RC AUX2 channel + feed-through of RC AUX3 channel + + + Plane + Simon Wilks <simon@uaventure.com> + Flying Wing + http://www.sparkletech.hk/ + left aileron + right aileron + throttle + feed-through of RC AUX1 channel + feed-through of RC AUX2 channel + feed-through of RC AUX3 channel + + + Plane + Jan Liphardt <JTLiphardt@gmail.com> + Flying Wing + + left aileron + right aileron + throttle + feed-through of RC AUX1 channel + feed-through of RC AUX2 channel + feed-through of RC AUX3 channel + + + Plane + Lorenz Meier <lorenz@px4.io> + Flying Wing + left aileron + right aileron + throttle + feed-through of RC AUX1 channel + feed-through of RC AUX2 channel + feed-through of RC AUX3 channel @@ -252,17 +666,49 @@ Plane Andreas Antener <andreas@uaventure.com> Plane A-Tail - throttle - aileron right - aileron left - v-tail right - v-tail left - wheel - flaps right - flaps left + aileron right + aileron left + v-tail right + v-tail left + throttle + wheel + flaps right + flaps left + feed-through of RC AUX1 channel + feed-through of RC AUX2 channel + feed-through of RC AUX3 channel - + + + Plane + Friedrich Beckmann <friedrich.beckmann@hs-augsburg.de> + Plane V-Tail + aileron right + aileron left + v-tail right + v-tail left + throttle + wheel + flaps right + flaps left + feed-through of RC AUX1 channel + feed-through of RC AUX2 channel + feed-through of RC AUX3 channel + + + + + Plane + Lorenz Meier <lorenz@px4.io> + Simulation + aileron + elevator + rudder + throttle + flaps + gear + Plane Romain Chiappinelli <romain.chiap@gmail.com> @@ -270,30 +716,59 @@ - + Plane + Lorenz Meier <lorenz@px4.io> Standard Plane + aileron + elevator + throttle + rudder + flaps + gear + feed-through of RC AUX1 channel + feed-through of RC AUX2 channel + feed-through of RC AUX3 channel + + + Plane + Andreas Antener <andreas@uaventure.com> + Standard Plane + aileron + aileron + elevator + rudder + throttle + wheel + flaps + feed-through of RC AUX1 channel + feed-through of RC AUX2 channel + feed-through of RC AUX3 channel - + Rover Rover - throttle - steering + steering + throttle - + Rover + Timothy Scott Rover https://www.aionrobotics.com/r1 + Speed of left wheels + Speed of right wheels Rover Katrin Moritz Rover - Speed of left wheels - Steering servo + Steering servo + Speed of left wheels + Speed of right wheels @@ -313,25 +788,14 @@ Underwater Robot Thies Lennart Alff <thies.lennart.alff@tuhh.de> Vectored 6 DOF UUV - motor 1 CCW, bow starboard horizontal, , propeller CCW - motor 2 CCW, bow port horizontal, propeller CCW - motor 3 CCW, stern starboard horizontal, propeller CW - motor 4 CCW, stern port horizontal, propeller CW - motor 5 CCW, bow starboard vertical, propeller CCW - motor 6 CCW, bow port vertical, propeller CW - motor 7 CCW, stern starboard vertical, propeller CW - motor 8 CCW, stern port vertical, propeller CCW - - - - - VTOL - Romain Chiappinelli <romain.chiap@gmail.com> - Simulation - motor right - motor left - elevon right - elevon left + motor 1 CCW, bow starboard horizontal, , propeller CCW + motor 2 CCW, bow port horizontal, propeller CCW + motor 3 CCW, stern starboard horizontal, propeller CW + motor 4 CCW, stern port horizontal, propeller CW + motor 5 CCW, bow starboard vertical, propeller CCW + motor 6 CCW, bow port vertical, propeller CW + motor 7 CCW, stern starboard vertical, propeller CW + motor 8 CCW, stern port vertical, propeller CCW @@ -340,52 +804,197 @@ Roman Bapst <roman@auterion.com> Standard VTOL - + VTOL + + Standard VTOL + motor 1 + motor 2 + motor 3 + motor 4 + Aileron 1 + Aileron 2 + Elevator + Rudder + Throttle + + + VTOL + Simon Wilks <simon@uaventure.com> + Standard VTOL + motor 1 + motor 2 + motor 3 + motor 4 + Aileron 1 + Aileron 2 + Elevator + Rudder + Throttle + + + VTOL + Simon Wilks <simon@uaventure.com> + Standard VTOL + motor 1 + motor 2 + motor 3 + motor 4 + Right elevon + Left elevon + Motor + + + VTOL + Sander Smeets <sander@droneslab.com> + Standard VTOL + + + VTOL + Sander Smeets <sander@droneslab.com> + Standard VTOL + + + VTOL + Andreas Antener <andreas@uaventure.com> Standard VTOL VTOL Sander Smeets <sander@droneslab.com> Standard VTOL - motor 1 - motor 2 - motor 3 - motor 4 - Right elevon - Left elevon - Pusher motor - Pusher reverse channel + motor 1 + motor 2 + motor 3 + motor 4 + Right elevon + Left elevon + Pusher motor + Pusher reverse channel VTOL Silvan Fuhrer <silvan@auterion.com> Standard VTOL - motor 1 - motor 2 - motor 3 - motor 4 - Pusher motor - Ailerons - A-tail left - A-tail right + Ailerons + A-tail left + Pusher motor + A-tail right + motor 1 + motor 2 + motor 3 + motor 4 - - + + VTOL - VTOL Tailsitter + Roman Bapst <roman@px4.io> + VTOL Duo Tailsitter + motor right + motor left + elevon right + elevon left + + + VTOL + Roman Bapst <roman@px4.io> + VTOL Duo Tailsitter + motor right + motor left + elevon right + elevon left + + + + + VTOL + VTOL Octoplane + motor 1 + motor 2 + motor 3 + motor 4 + motor 5 + motor 6 + motor 7 + motor 8 + Aileron 1 + Aileron 2 + Elevator + Rudder + Throttle + + + + + VTOL + Roman Bapst <roman@px4.io> + VTOL Quad Tailsitter + + + VTOL + Roman Bapst <roman@px4.io> + VTOL Quad Tailsitter + motor 1 + motor 2 + motor 4 + motor 5 + elevon left + elevon right + canard surface + rudder + + VTOL + Roman Bapst <roman@uaventure.com> + VTOL Tiltrotor + Front right motor bottom + Front right motor top + Back motor bottom + Back motor top + Front left motor bottom + Front left motor top + Tilt servo + Elevon 1 + Elevon 2 + Gear + + + VTOL + Samay Siga <samay_s@icloud.com> + VTOL Tiltrotor + + + VTOL + Andreas Antener <andreas@uaventure.com> + VTOL Tiltrotor + Motor right + Motor left + Motor back + empty + Tilt servo right + Tilt servo left + Elevon right + Elevon left + VTOL VTOL Tiltrotor - - - VTOL - VTOL Tiltrotor + motor 1 + motor 2 + motor 3 + motor 4 + Motor tilt front left + Motor tilt front right + Motor tilt rear left + Motor tilt rear right + Aileron left + Aileron right + Elevator + Rudder diff --git a/src/AutoPilotPlugins/PX4/CMakeLists.txt b/src/AutoPilotPlugins/PX4/CMakeLists.txt index c532b7b..9b012a5 100644 --- a/src/AutoPilotPlugins/PX4/CMakeLists.txt +++ b/src/AutoPilotPlugins/PX4/CMakeLists.txt @@ -8,6 +8,7 @@ add_custom_target(PX4AutoPilotPluginQml FlightModesComponentSummary.qml PowerComponent.qml PowerComponentSummary.qml + PX4AdvancedFlightModes.qml PX4FlightModes.qml PX4RadioComponentSummary.qml PX4SimpleFlightModes.qml diff --git a/src/AutoPilotPlugins/PX4/FlightModesComponent.cc b/src/AutoPilotPlugins/PX4/FlightModesComponent.cc index 5d226b0..5af70c6 100644 --- a/src/AutoPilotPlugins/PX4/FlightModesComponent.cc +++ b/src/AutoPilotPlugins/PX4/FlightModesComponent.cc @@ -51,7 +51,8 @@ bool FlightModesComponent::setupComplete(void) const return true; } - if (_vehicle->parameterManager()->parameterExists(FactSystem::defaultComponentId, "RC_MAP_FLTMODE") && _vehicle->parameterManager()->getParameter(FactSystem::defaultComponentId, "RC_MAP_FLTMODE")->rawValue().toInt() != 0) { + if (_vehicle->parameterManager()->getParameter(FactSystem::defaultComponentId, "RC_MAP_MODE_SW")->rawValue().toInt() != 0 || + (_vehicle->parameterManager()->parameterExists(FactSystem::defaultComponentId, "RC_MAP_FLTMODE") && _vehicle->parameterManager()->getParameter(FactSystem::defaultComponentId, "RC_MAP_FLTMODE")->rawValue().toInt() != 0)) { return true; } diff --git a/src/AutoPilotPlugins/PX4/FlightModesComponentSummary.qml b/src/AutoPilotPlugins/PX4/FlightModesComponentSummary.qml index 3a8be31..be4223a 100644 --- a/src/AutoPilotPlugins/PX4/FlightModesComponentSummary.qml +++ b/src/AutoPilotPlugins/PX4/FlightModesComponentSummary.qml @@ -14,19 +14,53 @@ Item { property Fact _nullFact property Fact _rcMapFltmode: controller.parameterExists(-1, "RC_MAP_FLTMODE") ? controller.getParameterFact(-1, "RC_MAP_FLTMODE") : _nullFact + property Fact _rcMapModeSw: controller.getParameterFact(-1, "RC_MAP_MODE_SW") + property bool _simpleMode: _rcMapFltmode.value > 0 || _rcMapModeSw.value === 0 - Column { - anchors.fill: parent - VehicleSummaryRow { - labelText: qsTr("Mode switch") - valueText: _rcMapFltmode.value === 0 ? qsTr("Setup required") : _rcMapFltmode.enumStringValue - } - Repeater { - model: 6 - VehicleSummaryRow { - labelText: qsTr("Flight Mode %1 ").arg(index + 1) - valueText: controller.getParameterFact(-1, "COM_FLTMODE" + (index + 1)).enumStringValue - } - } + Loader { + anchors.fill: parent + sourceComponent: _simpleMode ? simple : advanced + } + + Component { + id: simple + Column { + VehicleSummaryRow { + labelText: qsTr("Mode switch") + valueText: _rcMapFltmode.value === 0 ? qsTr("Setup required") : _rcMapFltmode.enumStringValue + } + Repeater { + model: 6 + VehicleSummaryRow { + labelText: qsTr("Flight Mode %1 ").arg(index + 1) + valueText: controller.getParameterFact(-1, "COM_FLTMODE" + (index + 1)).enumStringValue + } + } + } + } + + Component { + id: advanced + Column { + property Fact posCtlSwFact: controller.getParameterFact(-1, "RC_MAP_POSCTL_SW") + property Fact loiterSwFact: controller.getParameterFact(-1, "RC_MAP_LOITER_SW") + property Fact returnSwFact: controller.getParameterFact(-1, "RC_MAP_RETURN_SW") + VehicleSummaryRow { + labelText: qsTr("Mode switch") + valueText: _rcMapModeSw.value === 0 ? qsTr("Setup required") : _rcMapModeSw.valueString + } + VehicleSummaryRow { + labelText: qsTr("Position Ctl switch") + valueText: posCtlSwFact.value === 0 ? qsTr("Disabled") : posCtlSwFact.valueString + } + VehicleSummaryRow { + labelText: qsTr("Loiter switch") + valueText: loiterSwFact.value === 0 ? qsTr("Disabled") : loiterSwFact.valueString + } + VehicleSummaryRow { + labelText: qsTr("Return switch") + valueText: returnSwFact.value === 0 ? qsTr("Disabled") : returnSwFact.valueString + } + } } } diff --git a/src/AutoPilotPlugins/PX4/PX4AdvancedFlightModes.qml b/src/AutoPilotPlugins/PX4/PX4AdvancedFlightModes.qml new file mode 100644 index 0000000..38dd2b9 --- /dev/null +++ b/src/AutoPilotPlugins/PX4/PX4AdvancedFlightModes.qml @@ -0,0 +1,384 @@ +/**************************************************************************** + * + * (c) 2009-2020 QGROUNDCONTROL PROJECT + * + * QGroundControl is licensed according to the terms in the file + * COPYING.md in the root of the source code directory. + * + ****************************************************************************/ + + +import QtQuick 2.3 +import QtQuick.Controls 1.2 +import QtQuick.Controls.Styles 1.4 +import QtQuick.Dialogs 1.2 +import QtQuick.Layouts 1.2 + +import QGroundControl.FactSystem 1.0 +import QGroundControl.FactControls 1.0 +import QGroundControl.Palette 1.0 +import QGroundControl.Controls 1.0 +import QGroundControl.Controllers 1.0 +import QGroundControl.ScreenTools 1.0 + +/// PX4 Advanced Flight Mode configuration +Item { + id: root + + readonly property bool _shortText: ScreenTools.isTinyScreen + + // User visible strings + + readonly property string title: qsTr("FLIGHT MODES") + + property string topHelpText: ScreenTools.isTinyScreen ? + qsTr("Assign Flight Modes to radio control channels and adjust the thresholds for triggering them.") : + (qsTr("Assign Flight Modes to radio control channels and adjust the thresholds for triggering them. ") + + qsTr("You can assign multiple flight modes to a single channel. ") + + qsTr("Turn your radio control on to test switch settings. ") + + qsTr("The following channels: ") + controller.reservedChannels + + qsTr(" are not available for Flight Modes since they are already in use for other functions.")) + + readonly property string fwManualModeName: qsTr("Manual/Main") + readonly property string mrManualModeName: qsTr("Stabilized/Main") + readonly property string fwManualModeDescription: qsTr("The pilot has full control of the aircraft, no assistance is provided. ") + + qsTr("The Main mode switch must always be assigned to a channel in order to fly") + readonly property string mrManualModeDescription: qsTr("The pilot has full control of the aircraft, only attitude is stabilized. ") + + qsTr("The Main mode switch must always be assigned to a channel in order to fly") + + readonly property string assistModeName: qsTr("Assist") + readonly property string assistModeDescription: qsTr("If Position Control is placed on a separate channel from the Main mode channel, an additional 'Assist' mode is added to the Main switch. ") + + qsTr("In order for the Attitude Control/Position Control switch to be active, the Main switch must be in Assist mode.") + + readonly property string autoModeName: qsTr("Auto") + readonly property string autoModeDescription: qsTr("If Loiter is placed on a separate channel from the Main mode channel, an additional 'Auto' mode is added to the Main switch. ") + + qsTr("In order for the Mission/Loiter switch to be active, the Main switch must be in Auto mode.") + + readonly property string fwAcroModeName: qsTr("Stabilized") + readonly property string mrAcroModeName: qsTr("Acro") + readonly property string fwAcroModeDescription: qsTr("Roll/pitch angles and rudder deflection are controlled. ") + readonly property string mrAcroModeDescription: qsTr("The angular rates are controlled, but not the attitude. ") + + readonly property string altCtlModeName: qsTr("Altitude") + readonly property string fwAltCtlModeDescription: qsTr("Roll stick controls banking, pitch stick altitude ") + + qsTr("Throttle stick controls speed. ") + + qsTr("With no stick inputs the plane holds heading, but drifts off in wind. ") + readonly property string mrAltCtlModeDescription: qsTr("Same as Stablized mode except that Throttle controls climb/sink rate. Centered Throttle holds altitude steady. ") + + readonly property string posCtlModeName: qsTr("Position Control") + readonly property string fwPosCtlModeDescription: qsTr("Roll stick controls banking, pitch stick controls altitude. ") + + qsTr("Throttle stick controls speed.") + + qsTr("With no stick inputs the plane flies a straight line, even in wind. ") + readonly property string mrPosCtlModeDescription: qsTr("Roll and Pitch sticks control sideways and forward speed ") + + qsTr("Throttle stick controls climb / sink rade. ") + + readonly property string missionModeName: qsTr("Mission") + readonly property string missionModeDescription: qsTr("The aircraft obeys the programmed mission sent by QGroundControl. ") + + readonly property string loiterModeName: qsTr("Hold") + readonly property string fwLoiterModeDescription: qsTr("The aircraft flies in a circle around the current position at the current altitude. ") + readonly property string mrLoiterModeDescription: qsTr("The multirotor hovers at the current position and altitude. ") + + readonly property string returnModeName: qsTr("Return") + readonly property string returnModeDescription: qsTr("The vehicle returns to the launch position, loiters and then lands. ") + + readonly property string offboardModeName: qsTr("Offboard") + readonly property string offboardModeDescription: qsTr("All flight control aspects are controlled by an offboard system.") + + readonly property real modeSpacing: ScreenTools.defaultFontPixelHeight / 3 + + PX4AdvancedFlightModesController { + id: controller + onModeRowsChanged: recalcModePositions() + } + + Timer { + interval: 200 + running: true + + onTriggered: { + recalcModePositions() + } + } + + function recalcModePositions() { + var spacing = ScreenTools.defaultFontPixelHeight / 2 + var nextY = manualMode.y + manualMode.height + spacing + + for (var index = 0; index < 9; index++) { + if (controller.assistModeRow == index) { + if (controller.assistModeVisible) { + assistMode.y = nextY + assistMode.z = 9 - index + nextY += assistMode.height + spacing + } + } else if (controller.autoModeRow == index) { + if (controller.autoModeVisible) { + autoMode.y = nextY + autoMode.z = 9 - index + nextY += autoMode.height + spacing + } + } else if (controller.acroModeRow == index) { + acroMode.y = nextY + acroMode.z = 9 - index + nextY += acroMode.height + spacing + } else if (controller.altCtlModeRow == index) { + altCtlMode.y = nextY + altCtlMode.z = 9 - index + nextY += altCtlMode.height + spacing + } else if (controller.posCtlModeRow == index) { + posCtlMode.y = nextY + posCtlMode.z = 9 - index + nextY += posCtlMode.height + spacing + } else if (controller.loiterModeRow == index) { + loiterMode.y = nextY + loiterMode.z = 9 - index + nextY += loiterMode.height + spacing + } else if (controller.missionModeRow == index) { + missionMode.y = nextY + missionMode.z = 9 - index + nextY += missionMode.height + spacing + } else if (controller.returnModeRow == index) { + returnMode.y = nextY + returnMode.z = 9 - index + nextY += returnMode.height + spacing + } else if (controller.offboardModeRow == index) { + offboardMode.y = nextY + offboardMode.z = 9 - index + nextY += offboardMode.height + spacing + } + } + + scrollItem.height = nextY + } + + Component { + id: joystickEnabledDialogComponent + + QGCViewMessage { + message: qsTr("Flight Mode Config is disabled since you have a Joystick enabled.") + } + } + + ScrollView { + id: scroll + anchors.fill: parent + horizontalScrollBarPolicy: Qt.ScrollBarAlwaysOff + + Item { + id: scrollItem + width: scroll.viewport.width + + Item { + id: helpApplyRow + width: parent.width + height: Math.max(helpText.contentHeight, applyButton.y + applyButton.height) + + QGCLabel { + id: helpText + anchors.rightMargin: ScreenTools.defaultFontPixelWidth + anchors.left: parent.left + anchors.right: buttonColumn.left + text: topHelpText + font.pointSize: ScreenTools.defaultFontPointSize + wrapMode: Text.WordWrap + } + + Column { + id: buttonColumn + anchors.rightMargin: ScreenTools.defaultFontPixelWidth + anchors.right: parent.right + spacing: ScreenTools.defaultFontPixelHeight / 4 + + QGCButton { + text: qsTr("Use Single Channel Mode Selection") + visible: controller.parameterExists(-1, "RC_MAP_FLTMODE") + onClicked: { + controller.getParameterFact(-1, "RC_MAP_MODE_SW").value = 0 + controller.getParameterFact(-1, "RC_MAP_FLTMODE").value = 5 + } + } + + QGCButton { + id: applyButton + text: qsTr("Generate Thresholds") + onClicked: controller.generateThresholds() + } + } + } + + Item { + id: lastSpacer + anchors.top: helpApplyRow.bottom + height: ScreenTools.defaultFontPixelHeight + width: 10 + } + + ModeSwitchDisplay { + id: manualMode + anchors.top: lastSpacer.bottom + flightModeName: controller.fixedWing ? fwManualModeName : mrManualModeName + flightModeDescription: controller.fixedWing ? fwManualModeDescription : mrManualModeDescription + rcValue: controller.manualModeRcValue + modeChannelIndex: controller.manualModeChannelIndex + modeChannelEnabled: true + modeSelected: controller.manualModeSelected + thresholdValue: controller.manualModeThreshold + thresholdDragEnabled: false + + onModeChannelIndexSelected: controller.manualModeChannelIndex = index + } + + ModeSwitchDisplay { + id: assistMode + visible: controller.assistModeVisible + flightModeName: assistModeName + flightModeDescription: assistModeDescription + rcValue: controller.assistModeRcValue + modeChannelIndex: controller.assistModeChannelIndex + modeChannelEnabled: false + modeSelected: controller.assistModeSelected + thresholdValue: controller.assistModeThreshold + thresholdDragEnabled: true + + onThresholdValueChanged: controller.assistModeThreshold = thresholdValue + + Behavior on y { PropertyAnimation { easing.type: Easing.InOutQuad; duration: 1000 } } + } + + ModeSwitchDisplay { + id: autoMode + visible: controller.autoModeVisible + flightModeName: autoModeName + flightModeDescription: autoModeDescription + rcValue: controller.autoModeRcValue + modeChannelIndex: controller.autoModeChannelIndex + modeChannelEnabled: false + modeSelected: controller.autoModeSelected + thresholdValue: controller.autoModeThreshold + thresholdDragEnabled: true + + onThresholdValueChanged: controller.autoModeThreshold = thresholdValue + + Behavior on y { PropertyAnimation { easing.type: Easing.InOutQuad; duration: 1000 } } + } + + ModeSwitchDisplay { + id: acroMode + flightModeName: controller.fixedWing ? fwAcroModeName : mrAcroModeName + flightModeDescription: controller.fixedWing ? fwAcroModeDescription : mrAcroModeDescription + rcValue: controller.acroModeRcValue + modeChannelIndex: controller.acroModeChannelIndex + modeChannelEnabled: true + modeSelected: controller.acroModeSelected + thresholdValue: controller.acroModeThreshold + thresholdDragEnabled: true + + onModeChannelIndexSelected: controller.acroModeChannelIndex = index + onThresholdValueChanged: controller.acroModeThreshold = thresholdValue + + Behavior on y { PropertyAnimation { easing.type: Easing.InOutQuad; duration: 1000 } } + } + + ModeSwitchDisplay { + id: altCtlMode + flightModeName: altCtlModeName + flightModeDescription: controller.fixedWing ? fwAltCtlModeDescription : mrAltCtlModeDescription + rcValue: controller.altCtlModeRcValue + modeChannelIndex: controller.altCtlModeChannelIndex + modeChannelEnabled: false + modeSelected: controller.altCtlModeSelected + thresholdValue: controller.altCtlModeThreshold + thresholdDragEnabled: !controller.assistModeVisible + + onThresholdValueChanged: controller.altCtlModeThreshold = thresholdValue + + Behavior on y { PropertyAnimation { easing.type: Easing.InOutQuad; duration: 1000 } } + } + + ModeSwitchDisplay { + id: posCtlMode + flightModeName: posCtlModeName + flightModeDescription: controller.fixedWing ? fwPosCtlModeDescription : mrPosCtlModeDescription + rcValue: controller.posCtlModeRcValue + modeChannelIndex: controller.posCtlModeChannelIndex + modeChannelEnabled: true + modeSelected: controller.posCtlModeSelected + thresholdValue: controller.posCtlModeThreshold + thresholdDragEnabled: true + + onModeChannelIndexSelected: controller.posCtlModeChannelIndex = index + onThresholdValueChanged: controller.posCtlModeThreshold = thresholdValue + + Behavior on y { PropertyAnimation { easing.type: Easing.InOutQuad; duration: 1000 } } + } + + ModeSwitchDisplay { + id: missionMode + flightModeName: missionModeName + flightModeDescription: missionModeDescription + rcValue: controller.missionModeRcValue + modeChannelIndex: controller.missionModeChannelIndex + modeChannelEnabled: false + modeSelected: controller.missionModeSelected + thresholdValue: controller.missionModeThreshold + thresholdDragEnabled: !controller.autoModeVisible + + onThresholdValueChanged: controller.missionModeThreshold = thresholdValue + + Behavior on y { PropertyAnimation { easing.type: Easing.InOutQuad; duration: 1000 } } + } + + ModeSwitchDisplay { + id: loiterMode + flightModeName: loiterModeName + flightModeDescription: controller.fixedWing ? fwLoiterModeDescription : mrLoiterModeDescription + rcValue: controller.loiterModeRcValue + modeChannelIndex: controller.loiterModeChannelIndex + modeChannelEnabled: true + modeSelected: controller.loiterModeSelected + thresholdValue: controller.loiterModeThreshold + thresholdDragEnabled: true + + onModeChannelIndexSelected: controller.loiterModeChannelIndex = index + onThresholdValueChanged: controller.loiterModeThreshold = thresholdValue + + Behavior on y { PropertyAnimation { easing.type: Easing.InOutQuad; duration: 1000 } } + } + + ModeSwitchDisplay { + id: returnMode + flightModeName: returnModeName + flightModeDescription: returnModeDescription + rcValue: controller.returnModeRcValue + modeChannelIndex: controller.returnModeChannelIndex + modeChannelEnabled: true + modeSelected: controller.returnModeSelected + thresholdValue: controller.returnModeThreshold + thresholdDragEnabled: true + + onModeChannelIndexSelected: controller.returnModeChannelIndex = index + onThresholdValueChanged: controller.returnModeThreshold = thresholdValue + + Behavior on y { PropertyAnimation { easing.type: Easing.InOutQuad; duration: 1000 } } + } + + ModeSwitchDisplay { + id: offboardMode + flightModeName: offboardModeName + flightModeDescription: offboardModeDescription + rcValue: controller.offboardModeRcValue + modeChannelIndex: controller.offboardModeChannelIndex + modeChannelEnabled: true + modeSelected: controller.offboardModeSelected + thresholdValue: controller.offboardModeThreshold + thresholdDragEnabled: true + + onModeChannelIndexSelected: controller.offboardModeChannelIndex = index + onThresholdValueChanged: controller.offboardModeThreshold = thresholdValue + + Behavior on y { PropertyAnimation { easing.type: Easing.InOutQuad; duration: 1000 } } + } + } // Item + } // Scroll View +} // Item diff --git a/src/AutoPilotPlugins/PX4/PX4AdvancedFlightModesController.cc b/src/AutoPilotPlugins/PX4/PX4AdvancedFlightModesController.cc new file mode 100644 index 0000000..20c461c --- /dev/null +++ b/src/AutoPilotPlugins/PX4/PX4AdvancedFlightModesController.cc @@ -0,0 +1,800 @@ +/**************************************************************************** + * + * (c) 2009-2020 QGROUNDCONTROL PROJECT + * + * QGroundControl is licensed according to the terms in the file + * COPYING.md in the root of the source code directory. + * + ****************************************************************************/ + + +/// @file +/// @author Don Gagne + +#include "PX4AdvancedFlightModesController.h" +#include "QGCMAVLink.h" + +#include +#include + +PX4AdvancedFlightModesController::PX4AdvancedFlightModesController(void) : + _validConfiguration(false), + _channelCount(18), + _manualModeSelected(false), + _assistModeSelected(false), + _autoModeSelected(false), + _acroModeSelected(false), + _altCtlModeSelected(false), + _posCtlModeSelected(false), + _missionModeSelected(false), + _loiterModeSelected(false), + _returnModeSelected(false), + _offboardModeSelected(false) +{ + QStringList usedParams = QStringList({ + "RC_MAP_THROTTLE", "RC_MAP_YAW", "RC_MAP_PITCH", "RC_MAP_ROLL", "RC_MAP_FLAPS", "RC_MAP_AUX1", "RC_MAP_AUX2", + "RC_MAP_MODE_SW", "RC_MAP_RETURN_SW", "RC_MAP_LOITER_SW", "RC_MAP_POSCTL_SW", "RC_MAP_OFFB_SW", "RC_MAP_ACRO_SW"}); + + if (!_allParametersExists(FactSystem::defaultComponentId, usedParams)) { + return; + } + + _init(); + _validateConfiguration(); + + connect(_vehicle, &Vehicle::rcChannelsChanged, this, &PX4AdvancedFlightModesController::_rcChannelsChanged); +} + +void PX4AdvancedFlightModesController::_init(void) +{ + // FIXME: What about VTOL? That confuses the whole Flight Mode naming scheme + _fixedWing = _vehicle->fixedWing(); + + // We need to know min and max for channel in order to calculate percentage range + for (int channel=0; channel<_chanMax; channel++) { + QString rcMinParam, rcMaxParam, rcRevParam; + + rcMinParam = QString("RC%1_MIN").arg(channel+1); + rcMaxParam = QString("RC%1_MAX").arg(channel+1); + rcRevParam = QString("RC%1_REV").arg(channel+1); + + _rgRCMin[channel] = getParameterFact(FactSystem::defaultComponentId, rcMinParam)->rawValue().toInt(); + _rgRCMax[channel] = getParameterFact(FactSystem::defaultComponentId, rcMaxParam)->rawValue().toInt(); + + float floatReversed = getParameterFact(-1, rcRevParam)->rawValue().toFloat(); + _rgRCReversed[channel] = floatReversed == -1.0f; + + _rcValues[channel] = 0.0; + } + + // RC_CHAN_CNT parameter is set by Radio Cal to specify the number of radio channels. + if (parameterExists(FactSystem::defaultComponentId, "RC_CHAN_CNT")) { + _channelCount = getParameterFact(FactSystem::defaultComponentId, "RC_CHAN_CNT")->rawValue().toInt(); + } else { + _channelCount =_chanMax; + } + if (_channelCount <= 0 || _channelCount > _chanMax) { + // Parameter exists, but has not yet been set or is invalid. Use default + _channelCount = _chanMax; + } + + int modeChannel = getParameterFact(-1, "RC_MAP_MODE_SW")->rawValue().toInt(); + int posCtlChannel = getParameterFact(-1, "RC_MAP_POSCTL_SW")->rawValue().toInt(); + int loiterChannel = getParameterFact(-1, "RC_MAP_LOITER_SW")->rawValue().toInt(); + + if (posCtlChannel == 0) { + // PosCtl disabled so AltCtl must move back to main Mode switch + _assistModeVisible = false; + } else { + // Assist mode is visible if AltCtl/PosCtl are on separate channel from main Mode switch + _assistModeVisible = posCtlChannel != modeChannel; + } + + if (loiterChannel == 0) { + // Loiter disabled so Mission must move back to main Mode switch + _autoModeVisible = false; + } else { + // Auto mode is visible if Mission/Loiter are on separate channel from main Mode switch + _autoModeVisible = loiterChannel != modeChannel; + } + + // Setup the channel combobox model + QVector usedChannels; + + for (const char* const&attitudeParam : {"RC_MAP_THROTTLE", "RC_MAP_YAW", "RC_MAP_PITCH", "RC_MAP_ROLL", "RC_MAP_FLAPS", "RC_MAP_AUX1", "RC_MAP_AUX2"}) { + int channel = getParameterFact(-1, attitudeParam)->rawValue().toInt(); + if (channel != 0) { + usedChannels << channel; + } + } + + _channelListModel << "Disabled"; + _channelListModelChannel << 0; + for (int channel=1; channel<=_channelCount; channel++) { + if (!usedChannels.contains(channel)) { + _channelListModel << QString("Channel %1").arg(channel); + _channelListModelChannel << channel; + } + } + + // Setup reserved channels string for ui + + bool first = true; + foreach (int usedChannel, usedChannels) { + if (!first) { + _reservedChannels += ", "; + } + _reservedChannels += QString("%1").arg(usedChannel); + first = false; + } + + _recalcModeRows(); +} + +/// This will look for parameter settings which would cause the config to not run correctly. +/// It will set _validConfiguration and _configurationErrors as needed. +void PX4AdvancedFlightModesController::_validateConfiguration(void) +{ + _validConfiguration = true; + + // Make sure switches are valid and within channel range + + const QStringList switchParams = {"RC_MAP_MODE_SW", "RC_MAP_ACRO_SW", "RC_MAP_POSCTL_SW", "RC_MAP_LOITER_SW", "RC_MAP_RETURN_SW", "RC_MAP_OFFB_SW"}; + QList switchMappings; + + for(int i=0, end = switchParams.count(); i < end; i++) { + int map = getParameterFact(FactSystem::defaultComponentId, switchParams[i])->rawValue().toInt(); + switchMappings << map; + + if (map < 0 || map > _channelCount) { + _validConfiguration = false; + _configurationErrors += tr("%1 is set to %2. Mapping must between 0 and %3 (inclusive).\n").arg(switchParams[i]).arg(map).arg(_channelCount); + } + } + + // Make sure mode switches are not double-mapped + + const QStringList attitudeParams = {"RC_MAP_THROTTLE", "RC_MAP_YAW", "RC_MAP_PITCH", "RC_MAP_ROLL", "RC_MAP_FLAPS", "RC_MAP_AUX1", "RC_MAP_AUX2"}; + for (int i=0, end = attitudeParams.count(); i < end; i++) { + int map = getParameterFact(FactSystem::defaultComponentId, attitudeParams[i])->rawValue().toInt(); + if (map == 0) { + continue; + } + + for (int j=0; jrawValue().toFloat(); + if (threshold < 0.0f || threshold > 1.0f) { + _validConfiguration = false; + _configurationErrors += tr("%1 is set to %2. Threshold must between 0.0 and 1.0 (inclusive).\n").arg(thresholdParam).arg(threshold); + } + } +} + +/// Connected to Vehicle::rcChannelsChanged signal +void PX4AdvancedFlightModesController::_rcChannelsChanged(int channelCount, int pwmValues[Vehicle::cMaxRcChannels]) +{ + for (int channel=0; channel _rgRCMax[channel]) { + channelValue= _rgRCMax[channel]; + } + + float percentRange = (channelValue - _rgRCMin[channel]) / (float)(_rgRCMax[channel] - _rgRCMin[channel]); + if (_rgRCReversed[channel]) { + percentRange = 1.0 - percentRange; + } + + _rcValues[channel] = percentRange; + } + } + + _recalcModeSelections(); + + emit switchLiveRangeChanged(); +} + +double PX4AdvancedFlightModesController::_switchLiveRange(const QString& param) +{ + int channel = getParameterFact(-1, param)->rawValue().toInt(); + if (channel == 0) { + return 0.0; + } else { + return _rcValues[channel - 1]; + } +} + +double PX4AdvancedFlightModesController::manualModeRcValue(void) +{ + return _switchLiveRange("RC_MAP_MODE_SW"); +} + +double PX4AdvancedFlightModesController::assistModeRcValue(void) +{ + return manualModeRcValue(); +} + +double PX4AdvancedFlightModesController::autoModeRcValue(void) +{ + return manualModeRcValue(); +} + +double PX4AdvancedFlightModesController::acroModeRcValue(void) +{ + return _switchLiveRange("RC_MAP_ACRO_SW"); +} + +double PX4AdvancedFlightModesController::altCtlModeRcValue(void) +{ + int posCtlSwitchChannel = getParameterFact(-1, "RC_MAP_POSCTL_SW")->rawValue().toInt(); + + if (posCtlSwitchChannel == 0) { + return _switchLiveRange("RC_MAP_MODE_SW"); + } else { + return _switchLiveRange("RC_MAP_POSCTL_SW"); + } +} + +double PX4AdvancedFlightModesController::posCtlModeRcValue(void) +{ + return _switchLiveRange("RC_MAP_POSCTL_SW"); +} + +double PX4AdvancedFlightModesController::missionModeRcValue(void) +{ + int returnSwitchChannel = getParameterFact(-1, "RC_MAP_RETURN_SW")->rawValue().toInt(); + int loiterSwitchChannel = getParameterFact(-1, "RC_MAP_LOITER_SW")->rawValue().toInt(); + + const char* switchChannelParam = "RC_MAP_MODE_SW"; + + if (returnSwitchChannel == 0) { + if (loiterSwitchChannel != 0) { + switchChannelParam = "RC_MAP_LOITER_SW"; + } + } else { + if (loiterSwitchChannel == 0) { + switchChannelParam = "RC_MAP_RETURN_SW"; + } else { + switchChannelParam = "RC_MAP_LOITER_SW"; + } + } + + return _switchLiveRange(switchChannelParam); +} + +double PX4AdvancedFlightModesController::loiterModeRcValue(void) +{ + return _switchLiveRange("RC_MAP_LOITER_SW"); +} + +double PX4AdvancedFlightModesController::returnModeRcValue(void) +{ + return _switchLiveRange("RC_MAP_RETURN_SW"); +} + +double PX4AdvancedFlightModesController::offboardModeRcValue(void) +{ + return _switchLiveRange("RC_MAP_OFFB_SW"); +} + +void PX4AdvancedFlightModesController::_recalcModeSelections(void) +{ + _manualModeSelected = false; + _assistModeSelected = false; + _autoModeSelected = false; + _acroModeSelected = false; + _altCtlModeSelected = false; + _posCtlModeSelected = false; + _missionModeSelected = false; + _loiterModeSelected = false; + _returnModeSelected = false; + _offboardModeSelected = false; + + // Convert channels to 0-based, -1 signals not mapped + int modeSwitchChannel = getParameterFact(-1, "RC_MAP_MODE_SW")->rawValue().toInt() - 1; + int acroSwitchChannel = getParameterFact(-1, "RC_MAP_ACRO_SW")->rawValue().toInt() - 1; + int posCtlSwitchChannel = getParameterFact(-1, "RC_MAP_POSCTL_SW")->rawValue().toInt() - 1; + int loiterSwitchChannel = getParameterFact(-1, "RC_MAP_LOITER_SW")->rawValue().toInt() - 1; + int returnSwitchChannel = getParameterFact(-1, "RC_MAP_RETURN_SW")->rawValue().toInt() - 1; + int offboardSwitchChannel = getParameterFact(-1, "RC_MAP_OFFB_SW")->rawValue().toInt() - 1; + + double autoThreshold = getParameterFact(-1, "RC_AUTO_TH")->rawValue().toDouble(); + double assistThreshold = getParameterFact(-1, "RC_ASSIST_TH")->rawValue().toDouble(); + double acroThreshold = getParameterFact(-1, "RC_ACRO_TH")->rawValue().toDouble(); + double posCtlThreshold = getParameterFact(-1, "RC_POSCTL_TH")->rawValue().toDouble(); + double loiterThreshold = getParameterFact(-1, "RC_LOITER_TH")->rawValue().toDouble(); + double returnThreshold = getParameterFact(-1, "RC_RETURN_TH")->rawValue().toDouble(); + double offboardThreshold = getParameterFact(-1, "RC_OFFB_TH")->rawValue().toDouble(); + + if (modeSwitchChannel >= 0) { + if (offboardSwitchChannel >= 0 && _rcValues[offboardSwitchChannel] >= offboardThreshold) { + _offboardModeSelected = true; + } else if (returnSwitchChannel >= 0 && _rcValues[returnSwitchChannel] >= returnThreshold) { + _returnModeSelected = true; + } else { + if (_rcValues[modeSwitchChannel] >= autoThreshold) { + _autoModeSelected = true; + if (loiterSwitchChannel >= 0 && _rcValues[loiterSwitchChannel] >= loiterThreshold) { + _loiterModeSelected = true; + } else { + _missionModeSelected = true; + } + } else if (_rcValues[modeSwitchChannel] >= assistThreshold) { + _assistModeSelected = true; + if (posCtlSwitchChannel >= 0 && _rcValues[posCtlSwitchChannel] >= posCtlThreshold) { + _posCtlModeSelected = true; + } else { + _altCtlModeSelected = true; + } + } else if (acroSwitchChannel >= 0 && _rcValues[acroSwitchChannel] >= acroThreshold) { + _acroModeSelected = true; + } else { + _manualModeSelected = true; + } + } + } + + emit modesSelectedChanged(); +} + +void PX4AdvancedFlightModesController::_recalcModeRows(void) +{ + int modeSwitchChannel = getParameterFact(-1, "RC_MAP_MODE_SW")->rawValue().toInt(); + int acroSwitchChannel = getParameterFact(-1, "RC_MAP_ACRO_SW")->rawValue().toInt(); + int posCtlSwitchChannel = getParameterFact(-1, "RC_MAP_POSCTL_SW")->rawValue().toInt(); + int loiterSwitchChannel = getParameterFact(-1, "RC_MAP_LOITER_SW")->rawValue().toInt(); + int returnSwitchChannel = getParameterFact(-1, "RC_MAP_RETURN_SW")->rawValue().toInt(); + int offboardSwitchChannel = getParameterFact(-1, "RC_MAP_OFFB_SW")->rawValue().toInt(); + + if (modeSwitchChannel == 0) { + _acroModeRow = 0; + _assistModeRow = 1; + _autoModeRow = 2; + _altCtlModeRow = 3; + _posCtlModeRow = 4; + _loiterModeRow = 5; + _missionModeRow = 6; + _returnModeRow = 7; + _offboardModeRow = 8; + } else { + int row = 0; + + // First set is all switches on main mode channel + + if (acroSwitchChannel == modeSwitchChannel) { + _acroModeRow = row++; + } + _assistModeRow = row++; + if (posCtlSwitchChannel == modeSwitchChannel) { + _altCtlModeRow = row++; + _posCtlModeRow = row++; + } else if (posCtlSwitchChannel == 0) { + _altCtlModeRow = row++; + } + _autoModeRow = row++; + if (loiterSwitchChannel == modeSwitchChannel) { + _missionModeRow = row++; + _loiterModeRow = row++; + } else if (loiterSwitchChannel == 0) { + _missionModeRow = row++; + } + if (returnSwitchChannel == modeSwitchChannel) { + _returnModeRow = row++; + } + if (offboardSwitchChannel == modeSwitchChannel) { + _offboardModeRow = row++; + } + + // Now individual enabled switches not on main mode channel + + if (acroSwitchChannel != 0 && acroSwitchChannel != modeSwitchChannel) { + _acroModeRow = row++; + } + if (posCtlSwitchChannel != 0 && posCtlSwitchChannel != modeSwitchChannel) { + _altCtlModeRow = row++; + _posCtlModeRow = row++; + } + if (loiterSwitchChannel != 0 && loiterSwitchChannel != modeSwitchChannel) { + _missionModeRow = row++; + _loiterModeRow = row++; + } + if (returnSwitchChannel != 0 && returnSwitchChannel != modeSwitchChannel) { + _returnModeRow = row++; + } + if (offboardSwitchChannel != 0 && offboardSwitchChannel != modeSwitchChannel) { + _offboardModeRow = row++; + } + + // Now disabled switches + + if (acroSwitchChannel == 0) { + _acroModeRow = row++; + } + if (posCtlSwitchChannel == 0) { + _posCtlModeRow = row++; + } + if (loiterSwitchChannel == 0) { + _loiterModeRow = row++; + } + if (returnSwitchChannel == 0) { + _returnModeRow = row++; + } + if (offboardSwitchChannel == 0) { + _offboardModeRow = row++; + } + } + + emit modeRowsChanged(); +} + +double PX4AdvancedFlightModesController::manualModeThreshold(void) +{ + return 0.0; +} + +double PX4AdvancedFlightModesController::assistModeThreshold(void) +{ + return getParameterFact(-1, "RC_ASSIST_TH")->rawValue().toDouble(); +} + +double PX4AdvancedFlightModesController::autoModeThreshold(void) +{ + return getParameterFact(-1, "RC_AUTO_TH")->rawValue().toDouble(); +} + +double PX4AdvancedFlightModesController::acroModeThreshold(void) +{ + return getParameterFact(-1, "RC_ACRO_TH")->rawValue().toDouble(); +} + +double PX4AdvancedFlightModesController::altCtlModeThreshold(void) +{ + return _assistModeVisible ? 0.0 : getParameterFact(-1, "RC_ASSIST_TH")->rawValue().toDouble(); +} + +double PX4AdvancedFlightModesController::posCtlModeThreshold(void) +{ + return getParameterFact(-1, "RC_POSCTL_TH")->rawValue().toDouble(); +} + +double PX4AdvancedFlightModesController::missionModeThreshold(void) +{ + return _autoModeVisible ? 0.0 : getParameterFact(-1, "RC_AUTO_TH")->rawValue().toDouble(); +} + + +double PX4AdvancedFlightModesController::loiterModeThreshold(void) +{ + return getParameterFact(-1, "RC_LOITER_TH")->rawValue().toDouble(); +} + +double PX4AdvancedFlightModesController::returnModeThreshold(void) +{ + return getParameterFact(-1, "RC_RETURN_TH")->rawValue().toDouble(); +} + +double PX4AdvancedFlightModesController::offboardModeThreshold(void) +{ + return getParameterFact(-1, "RC_OFFB_TH")->rawValue().toDouble(); +} + +void PX4AdvancedFlightModesController::setAssistModeThreshold(double threshold) +{ + getParameterFact(-1, "RC_ASSIST_TH")->setRawValue(threshold); + _recalcModeSelections(); +} + +void PX4AdvancedFlightModesController::setAutoModeThreshold(double threshold) +{ + getParameterFact(-1, "RC_AUTO_TH")->setRawValue(threshold); + _recalcModeSelections(); +} + +void PX4AdvancedFlightModesController::setAcroModeThreshold(double threshold) +{ + getParameterFact(-1, "RC_ACRO_TH")->setRawValue(threshold); + _recalcModeSelections(); +} + +void PX4AdvancedFlightModesController::setAltCtlModeThreshold(double threshold) +{ + setAssistModeThreshold(threshold); +} + +void PX4AdvancedFlightModesController::setPosCtlModeThreshold(double threshold) +{ + getParameterFact(-1, "RC_POSCTL_TH")->setRawValue(threshold); + _recalcModeSelections(); +} + +void PX4AdvancedFlightModesController::setMissionModeThreshold(double threshold) +{ + setAutoModeThreshold(threshold); +} + +void PX4AdvancedFlightModesController::setLoiterModeThreshold(double threshold) +{ + getParameterFact(-1, "RC_LOITER_TH")->setRawValue(threshold); + _recalcModeSelections(); +} + +void PX4AdvancedFlightModesController::setReturnModeThreshold(double threshold) +{ + getParameterFact(-1, "RC_RETURN_TH")->setRawValue(threshold); + _recalcModeSelections(); +} + +void PX4AdvancedFlightModesController::setOffboardModeThreshold(double threshold) +{ + getParameterFact(-1, "RC_OFFB_TH")->setRawValue(threshold); + _recalcModeSelections(); +} + +int PX4AdvancedFlightModesController::_channelToChannelIndex(int channel) +{ + return _channelListModelChannel.lastIndexOf(channel); +} + +int PX4AdvancedFlightModesController::_channelToChannelIndex(const QString& channelParam) +{ + return _channelToChannelIndex(getParameterFact(-1, channelParam)->rawValue().toInt()); +} + +int PX4AdvancedFlightModesController::manualModeChannelIndex(void) +{ + return _channelToChannelIndex("RC_MAP_MODE_SW"); +} + +int PX4AdvancedFlightModesController::assistModeChannelIndex(void) +{ + return _channelToChannelIndex("RC_MAP_MODE_SW"); +} + +int PX4AdvancedFlightModesController::autoModeChannelIndex(void) +{ + return _channelToChannelIndex("RC_MAP_MODE_SW"); +} + +int PX4AdvancedFlightModesController::acroModeChannelIndex(void) +{ + return _channelToChannelIndex("RC_MAP_ACRO_SW"); +} + +int PX4AdvancedFlightModesController::altCtlModeChannelIndex(void) +{ + int posCtlSwitchChannel = getParameterFact(-1, "RC_MAP_POSCTL_SW")->rawValue().toInt(); + + if (posCtlSwitchChannel == 0) { + return _channelToChannelIndex("RC_MAP_MODE_SW"); + } else { + return _channelToChannelIndex(posCtlSwitchChannel); + } +} + +int PX4AdvancedFlightModesController::posCtlModeChannelIndex(void) +{ + return _channelToChannelIndex("RC_MAP_POSCTL_SW"); +} + +int PX4AdvancedFlightModesController::loiterModeChannelIndex(void) +{ + return _channelToChannelIndex("RC_MAP_LOITER_SW"); +} + +int PX4AdvancedFlightModesController::missionModeChannelIndex(void) +{ + int loiterSwitchChannel = getParameterFact(-1, "RC_MAP_LOITER_SW")->rawValue().toInt(); + + if (loiterSwitchChannel == 0) { + return _channelToChannelIndex("RC_MAP_MODE_SW"); + } else { + return _channelToChannelIndex(loiterSwitchChannel); + } +} + +int PX4AdvancedFlightModesController::returnModeChannelIndex(void) +{ + return _channelToChannelIndex("RC_MAP_RETURN_SW"); +} + +int PX4AdvancedFlightModesController::offboardModeChannelIndex(void) +{ + return _channelToChannelIndex("RC_MAP_OFFB_SW"); +} + +int PX4AdvancedFlightModesController::_channelIndexToChannel(int index) +{ + return _channelListModelChannel[index]; +} + +void PX4AdvancedFlightModesController::setManualModeChannelIndex(int index) +{ + getParameterFact(-1, "RC_MAP_MODE_SW")->setRawValue(_channelIndexToChannel(index)); + + _recalcModeSelections(); + _recalcModeRows(); + emit channelIndicesChanged(); + +} + +void PX4AdvancedFlightModesController::setAcroModeChannelIndex(int index) +{ + getParameterFact(-1, "RC_MAP_ACRO_SW")->setRawValue(_channelIndexToChannel(index)); + + _recalcModeSelections(); + _recalcModeRows(); +} + +void PX4AdvancedFlightModesController::setPosCtlModeChannelIndex(int index) +{ + int channel = _channelIndexToChannel(index); + + getParameterFact(-1, "RC_MAP_POSCTL_SW")->setRawValue(channel); + + if (channel == 0) { + // PosCtl disabled so AltCtl must move back to main Mode switch + _assistModeVisible = false; + } else { + // Assist mode is visible if AltCtl/PosCtl are on separate channel from main Mode switch + _assistModeVisible = channel != getParameterFact(-1, "RC_MAP_MODE_SW")->rawValue().toInt(); + } + + emit modesVisibleChanged(); + + _recalcModeSelections(); + _recalcModeRows(); + emit channelIndicesChanged(); + +} + +void PX4AdvancedFlightModesController::setLoiterModeChannelIndex(int index) +{ + int channel = _channelIndexToChannel(index); + + getParameterFact(-1, "RC_MAP_LOITER_SW")->setRawValue(channel); + + if (channel == 0) { + // Loiter disabled so Mission must move back to main Mode switch + _autoModeVisible = false; + } else { + // Auto mode is visible if Mission/Loiter are on separate channel from main Mode switch + _autoModeVisible = channel != getParameterFact(-1, "RC_MAP_MODE_SW")->rawValue().toInt(); + } + + emit modesVisibleChanged(); + + _recalcModeSelections(); + _recalcModeRows(); + emit channelIndicesChanged(); + +} + +void PX4AdvancedFlightModesController::setReturnModeChannelIndex(int index) +{ + getParameterFact(-1, "RC_MAP_RETURN_SW")->setRawValue(_channelIndexToChannel(index)); + _recalcModeSelections(); + _recalcModeRows(); + emit channelIndicesChanged(); + +} + +void PX4AdvancedFlightModesController::setOffboardModeChannelIndex(int index) +{ + getParameterFact(-1, "RC_MAP_OFFB_SW")->setRawValue(_channelIndexToChannel(index)); + _recalcModeSelections(); + _recalcModeRows(); + emit channelIndicesChanged(); + +} + +void PX4AdvancedFlightModesController::generateThresholds(void) +{ + // Reset all thresholds to 0.0 + + QStringList thresholdParams; + + thresholdParams << "RC_ASSIST_TH" << "RC_AUTO_TH" << "RC_ACRO_TH" << "RC_POSCTL_TH" << "RC_LOITER_TH" << "RC_RETURN_TH" << "RC_OFFB_TH"; + + foreach(const QString &thresholdParam, thresholdParams) { + getParameterFact(-1, thresholdParam)->setRawValue(0.0f); + } + + // Redistribute + + int modeChannel = getParameterFact(-1, "RC_MAP_MODE_SW")->rawValue().toInt(); + int acroChannel = getParameterFact(-1, "RC_MAP_ACRO_SW")->rawValue().toInt(); + int posCtlChannel = getParameterFact(-1, "RC_MAP_POSCTL_SW")->rawValue().toInt(); + int loiterChannel = getParameterFact(-1, "RC_MAP_LOITER_SW")->rawValue().toInt(); + int returnChannel = getParameterFact(-1, "RC_MAP_RETURN_SW")->rawValue().toInt(); + int offboardChannel = getParameterFact(-1, "RC_MAP_OFFB_SW")->rawValue().toInt(); + + if (modeChannel != 0) { + int positions = 3; // Manual/Assist/Auto always exist + + bool acroOnModeSwitch = modeChannel == acroChannel; + bool posCtlOnModeSwitch = modeChannel == posCtlChannel; + bool loiterOnModeSwitch = modeChannel == loiterChannel; + bool returnOnModeSwitch = modeChannel == returnChannel; + bool offboardOnModeSwitch = modeChannel == offboardChannel; + + positions += acroOnModeSwitch ? 1 : 0; + positions += posCtlOnModeSwitch ? 1 : 0; + positions += loiterOnModeSwitch ? 1 : 0; + positions += returnOnModeSwitch ? 1 : 0; + positions += offboardOnModeSwitch ? 1 : 0; + + float increment = 1.0f / positions; + float currentThreshold = 0.0f; + + if (acroOnModeSwitch) { + currentThreshold += increment; + getParameterFact(-1, "RC_ACRO_TH")->setRawValue(currentThreshold); + acroChannel = 0; + } + + currentThreshold += increment; + getParameterFact(-1, "RC_ASSIST_TH")->setRawValue(currentThreshold); + if (posCtlOnModeSwitch) { + currentThreshold += increment; + getParameterFact(-1, "RC_POSCTL_TH")->setRawValue(currentThreshold); + posCtlChannel = 0; + } + + currentThreshold += increment; + getParameterFact(-1, "RC_AUTO_TH")->setRawValue(currentThreshold); + if (loiterOnModeSwitch) { + currentThreshold += increment; + getParameterFact(-1, "RC_LOITER_TH")->setRawValue(currentThreshold); + loiterChannel = 0; + } + + if (returnOnModeSwitch) { + currentThreshold += increment; + getParameterFact(-1, "RC_RETURN_TH")->setRawValue(currentThreshold); + returnChannel = 0; + } + + if (offboardOnModeSwitch) { + currentThreshold += increment; + getParameterFact(-1, "RC_OFFB_TH")->setRawValue(currentThreshold); + offboardChannel = 0; + } + } + + if (acroChannel != 0) { + // If only two positions don't set threshold at midrange. Setting to 0.25 + // allows for this channel to work with either a two or three position switch + getParameterFact(-1, "RC_ACRO_TH")->setRawValue(0.25f); + } + + if (posCtlChannel != 0) { + getParameterFact(-1, "RC_POSCTL_TH")->setRawValue(0.25f); + } + + if (loiterChannel != 0) { + getParameterFact(-1, "RC_LOITER_TH")->setRawValue(0.25f); + } + + if (returnChannel != 0) { + getParameterFact(-1, "RC_RETURN_TH")->setRawValue(0.25f); + } + + if (offboardChannel != 0) { + getParameterFact(-1, "RC_OFFB_TH")->setRawValue(0.25f); + } + + emit thresholdsChanged(); +} diff --git a/src/AutoPilotPlugins/PX4/PX4AdvancedFlightModesController.h b/src/AutoPilotPlugins/PX4/PX4AdvancedFlightModesController.h new file mode 100644 index 0000000..2b89a3b --- /dev/null +++ b/src/AutoPilotPlugins/PX4/PX4AdvancedFlightModesController.h @@ -0,0 +1,226 @@ +/**************************************************************************** + * + * (c) 2009-2020 QGROUNDCONTROL PROJECT + * + * QGroundControl is licensed according to the terms in the file + * COPYING.md in the root of the source code directory. + * + ****************************************************************************/ + + +/// @file +/// @author Don Gagne + +#ifndef PX4AdvancedFlightModesController_H +#define PX4AdvancedFlightModesController_H + +#include +#include +#include +#include + +#include "UASInterface.h" +#include "AutoPilotPlugin.h" +#include "FactPanelController.h" + +/// MVC Controller for FlightModesComponent.qml. +class PX4AdvancedFlightModesController : public FactPanelController +{ + Q_OBJECT + +public: + PX4AdvancedFlightModesController(void); + + Q_PROPERTY(bool validConfiguration MEMBER _validConfiguration CONSTANT) + Q_PROPERTY(QString configurationErrors MEMBER _configurationErrors CONSTANT) + + Q_PROPERTY(int channelCount MEMBER _channelCount CONSTANT) + Q_PROPERTY(bool fixedWing MEMBER _fixedWing CONSTANT) + + Q_PROPERTY(QString reservedChannels MEMBER _reservedChannels CONSTANT) + + Q_PROPERTY(int assistModeRow MEMBER _assistModeRow NOTIFY modeRowsChanged) + Q_PROPERTY(int autoModeRow MEMBER _autoModeRow NOTIFY modeRowsChanged) + Q_PROPERTY(int acroModeRow MEMBER _acroModeRow NOTIFY modeRowsChanged) + Q_PROPERTY(int altCtlModeRow MEMBER _altCtlModeRow NOTIFY modeRowsChanged) + Q_PROPERTY(int posCtlModeRow MEMBER _posCtlModeRow NOTIFY modeRowsChanged) + Q_PROPERTY(int loiterModeRow MEMBER _loiterModeRow NOTIFY modeRowsChanged) + Q_PROPERTY(int missionModeRow MEMBER _missionModeRow NOTIFY modeRowsChanged) + Q_PROPERTY(int returnModeRow MEMBER _returnModeRow NOTIFY modeRowsChanged) + Q_PROPERTY(int offboardModeRow MEMBER _offboardModeRow NOTIFY modeRowsChanged) + + Q_PROPERTY(int manualModeChannelIndex READ manualModeChannelIndex WRITE setManualModeChannelIndex NOTIFY channelIndicesChanged) + Q_PROPERTY(int assistModeChannelIndex READ assistModeChannelIndex NOTIFY channelIndicesChanged) + Q_PROPERTY(int autoModeChannelIndex READ autoModeChannelIndex NOTIFY channelIndicesChanged) + Q_PROPERTY(int acroModeChannelIndex READ acroModeChannelIndex WRITE setAcroModeChannelIndex NOTIFY channelIndicesChanged) + Q_PROPERTY(int altCtlModeChannelIndex READ altCtlModeChannelIndex NOTIFY channelIndicesChanged) + Q_PROPERTY(int posCtlModeChannelIndex READ posCtlModeChannelIndex WRITE setPosCtlModeChannelIndex NOTIFY channelIndicesChanged) + Q_PROPERTY(int loiterModeChannelIndex READ loiterModeChannelIndex WRITE setLoiterModeChannelIndex NOTIFY channelIndicesChanged) + Q_PROPERTY(int missionModeChannelIndex READ missionModeChannelIndex NOTIFY channelIndicesChanged) + Q_PROPERTY(int returnModeChannelIndex READ returnModeChannelIndex WRITE setReturnModeChannelIndex NOTIFY channelIndicesChanged) + Q_PROPERTY(int offboardModeChannelIndex READ offboardModeChannelIndex WRITE setOffboardModeChannelIndex NOTIFY channelIndicesChanged) + + Q_PROPERTY(double manualModeRcValue READ manualModeRcValue NOTIFY switchLiveRangeChanged) + Q_PROPERTY(double assistModeRcValue READ assistModeRcValue NOTIFY switchLiveRangeChanged) + Q_PROPERTY(double autoModeRcValue READ autoModeRcValue NOTIFY switchLiveRangeChanged) + Q_PROPERTY(double acroModeRcValue READ acroModeRcValue NOTIFY switchLiveRangeChanged) + Q_PROPERTY(double altCtlModeRcValue READ altCtlModeRcValue NOTIFY switchLiveRangeChanged) + Q_PROPERTY(double posCtlModeRcValue READ posCtlModeRcValue NOTIFY switchLiveRangeChanged) + Q_PROPERTY(double loiterModeRcValue READ loiterModeRcValue NOTIFY switchLiveRangeChanged) + Q_PROPERTY(double missionModeRcValue READ missionModeRcValue NOTIFY switchLiveRangeChanged) + Q_PROPERTY(double returnModeRcValue READ returnModeRcValue NOTIFY switchLiveRangeChanged) + Q_PROPERTY(double offboardModeRcValue READ offboardModeRcValue NOTIFY switchLiveRangeChanged) + + Q_PROPERTY(double manualModeThreshold READ manualModeThreshold NOTIFY thresholdsChanged) + Q_PROPERTY(double assistModeThreshold READ assistModeThreshold WRITE setAssistModeThreshold NOTIFY thresholdsChanged) + Q_PROPERTY(double autoModeThreshold READ autoModeThreshold WRITE setAutoModeThreshold NOTIFY thresholdsChanged) + Q_PROPERTY(double acroModeThreshold READ acroModeThreshold WRITE setAcroModeThreshold NOTIFY thresholdsChanged) + Q_PROPERTY(double altCtlModeThreshold READ altCtlModeThreshold WRITE setAltCtlModeThreshold NOTIFY thresholdsChanged) + Q_PROPERTY(double posCtlModeThreshold READ posCtlModeThreshold WRITE setPosCtlModeThreshold NOTIFY thresholdsChanged) + Q_PROPERTY(double loiterModeThreshold READ loiterModeThreshold WRITE setLoiterModeThreshold NOTIFY thresholdsChanged) + Q_PROPERTY(double missionModeThreshold READ missionModeThreshold WRITE setMissionModeThreshold NOTIFY thresholdsChanged) + Q_PROPERTY(double returnModeThreshold READ returnModeThreshold WRITE setReturnModeThreshold NOTIFY thresholdsChanged) + Q_PROPERTY(double offboardModeThreshold READ offboardModeThreshold WRITE setOffboardModeThreshold NOTIFY thresholdsChanged) + + Q_PROPERTY(bool assistModeVisible MEMBER _assistModeVisible NOTIFY modesVisibleChanged) + Q_PROPERTY(bool autoModeVisible MEMBER _autoModeVisible NOTIFY modesVisibleChanged) + + Q_PROPERTY(bool manualModeSelected MEMBER _manualModeSelected NOTIFY modesSelectedChanged) + Q_PROPERTY(bool assistModeSelected MEMBER _assistModeSelected NOTIFY modesSelectedChanged) + Q_PROPERTY(bool autoModeSelected MEMBER _autoModeSelected NOTIFY modesSelectedChanged) + Q_PROPERTY(bool acroModeSelected MEMBER _acroModeSelected NOTIFY modesSelectedChanged) + Q_PROPERTY(bool altCtlModeSelected MEMBER _altCtlModeSelected NOTIFY modesSelectedChanged) + Q_PROPERTY(bool posCtlModeSelected MEMBER _posCtlModeSelected NOTIFY modesSelectedChanged) + Q_PROPERTY(bool missionModeSelected MEMBER _missionModeSelected NOTIFY modesSelectedChanged) + Q_PROPERTY(bool loiterModeSelected MEMBER _loiterModeSelected NOTIFY modesSelectedChanged) + Q_PROPERTY(bool returnModeSelected MEMBER _returnModeSelected NOTIFY modesSelectedChanged) + Q_PROPERTY(bool offboardModeSelected MEMBER _offboardModeSelected NOTIFY modesSelectedChanged) + + Q_PROPERTY(QStringList channelListModel MEMBER _channelListModel CONSTANT) + + Q_INVOKABLE void generateThresholds(void); + + int assistModeRow(void); + int autoModeRow(void); + int acroModeRow(void); + int altCtlModeRow(void); + int posCtlModeRow(void); + int loiterModeRow(void); + int missionModeRow(void); + int returnModeRow(void); + int offboardModeRow(void); + + int manualModeChannelIndex(void); + int assistModeChannelIndex(void); + int autoModeChannelIndex(void); + int acroModeChannelIndex(void); + int altCtlModeChannelIndex(void); + int posCtlModeChannelIndex(void); + int loiterModeChannelIndex(void); + int missionModeChannelIndex(void); + int returnModeChannelIndex(void); + int offboardModeChannelIndex(void); + + void setManualModeChannelIndex(int index); + void setAcroModeChannelIndex(int index); + void setPosCtlModeChannelIndex(int index); + void setLoiterModeChannelIndex(int index); + void setReturnModeChannelIndex(int index); + void setOffboardModeChannelIndex(int index); + + double manualModeRcValue(void); + double assistModeRcValue(void); + double autoModeRcValue(void); + double acroModeRcValue(void); + double altCtlModeRcValue(void); + double posCtlModeRcValue(void); + double missionModeRcValue(void); + double loiterModeRcValue(void); + double returnModeRcValue(void); + double offboardModeRcValue(void); + + double manualModeThreshold(void); + double assistModeThreshold(void); + double autoModeThreshold(void); + double acroModeThreshold(void); + double altCtlModeThreshold(void); + double posCtlModeThreshold(void); + double missionModeThreshold(void); + double loiterModeThreshold(void); + double returnModeThreshold(void); + double offboardModeThreshold(void); + + void setAssistModeThreshold(double threshold); + void setAutoModeThreshold(double threshold); + void setAcroModeThreshold(double threshold); + void setAltCtlModeThreshold(double threshold); + void setPosCtlModeThreshold(double threshold); + void setMissionModeThreshold(double threshold); + void setLoiterModeThreshold(double threshold); + void setReturnModeThreshold(double threshold); + void setOffboardModeThreshold(double threshold); + +signals: + void switchLiveRangeChanged(void); + void thresholdsChanged(void); + void modesSelectedChanged(void); + void modesVisibleChanged(void); + void channelIndicesChanged(void); + void modeRowsChanged(void); + +private slots: + void _rcChannelsChanged(int channelCount, int pwmValues[Vehicle::cMaxRcChannels]); + +private: + double _switchLiveRange(const QString& param); + void _init(void); + void _validateConfiguration(void); + void _recalcModeSelections(void); + void _recalcModeRows(void); + int _channelToChannelIndex(int channel); + int _channelToChannelIndex(const QString& channelParam); + int _channelIndexToChannel(int index); + + static const int _chanMax = 18; + + bool _fixedWing; + + double _rcValues[_chanMax]; + int _rgRCMin[_chanMax]; + int _rgRCMax[_chanMax]; + bool _rgRCReversed[_chanMax]; + + bool _validConfiguration; + QString _configurationErrors; + int _channelCount; + QString _reservedChannels; + + int _assistModeRow; + int _autoModeRow; + int _acroModeRow; + int _altCtlModeRow; + int _posCtlModeRow; + int _loiterModeRow; + int _missionModeRow; + int _returnModeRow; + int _offboardModeRow; + + bool _manualModeSelected; + bool _assistModeSelected; + bool _autoModeSelected; + bool _acroModeSelected; + bool _altCtlModeSelected; + bool _posCtlModeSelected; + bool _missionModeSelected; + bool _loiterModeSelected; + bool _returnModeSelected; + bool _offboardModeSelected; + + bool _assistModeVisible; + bool _autoModeVisible; + + QStringList _channelListModel; + QList _channelListModelChannel; +}; + +#endif diff --git a/src/AutoPilotPlugins/PX4/PX4AutoPilotPlugin.cc b/src/AutoPilotPlugins/PX4/PX4AutoPilotPlugin.cc index fd822b9..9ee27b8 100644 --- a/src/AutoPilotPlugins/PX4/PX4AutoPilotPlugin.cc +++ b/src/AutoPilotPlugins/PX4/PX4AutoPilotPlugin.cc @@ -10,6 +10,7 @@ #include "PX4AutoPilotPlugin.h" #include "PX4AirframeLoader.h" +#include "PX4AdvancedFlightModesController.h" #include "AirframeComponentController.h" #include "UAS.h" #include "FirmwarePlugin/PX4/PX4ParameterMetaData.h" // FIXME: Hack diff --git a/src/AutoPilotPlugins/PX4/PX4FlightBehavior.cc b/src/AutoPilotPlugins/PX4/PX4FlightBehavior.cc index 3cd44b3..50c6a19 100644 --- a/src/AutoPilotPlugins/PX4/PX4FlightBehavior.cc +++ b/src/AutoPilotPlugins/PX4/PX4FlightBehavior.cc @@ -64,12 +64,12 @@ QUrl PX4FlightBehavior::setupSource() const case MAV_TYPE_TRICOPTER: qmlFile = "qrc:/qml/PX4FlightBehaviorCopter.qml"; break; - case MAV_TYPE_VTOL_TAILSITTER_DUOROTOR: - case MAV_TYPE_VTOL_TAILSITTER_QUADROTOR: + case MAV_TYPE_VTOL_DUOROTOR: + case MAV_TYPE_VTOL_QUADROTOR: case MAV_TYPE_VTOL_TILTROTOR: - case MAV_TYPE_VTOL_FIXEDROTOR: - case MAV_TYPE_VTOL_TAILSITTER: - case MAV_TYPE_VTOL_TILTWING: + case MAV_TYPE_VTOL_RESERVED2: + case MAV_TYPE_VTOL_RESERVED3: + case MAV_TYPE_VTOL_RESERVED4: case MAV_TYPE_VTOL_RESERVED5: qmlFile = ""; break; diff --git a/src/AutoPilotPlugins/PX4/PX4FlightModes.qml b/src/AutoPilotPlugins/PX4/PX4FlightModes.qml index 854af1b..9b99247 100644 --- a/src/AutoPilotPlugins/PX4/PX4FlightModes.qml +++ b/src/AutoPilotPlugins/PX4/PX4FlightModes.qml @@ -30,11 +30,13 @@ SetupPage { Loader { width: availableWidth height: availableHeight - source: "qrc:/qml/PX4SimpleFlightModes.qml" + source: _simpleMode ? "qrc:/qml/PX4SimpleFlightModes.qml" : "qrc:/qml/PX4AdvancedFlightModes.qml" property Fact _nullFact property bool _rcMapFltmodeExists: controller.parameterExists(-1, "RC_MAP_FLTMODE") property Fact _rcMapFltmode: _rcMapFltmodeExists ? controller.getParameterFact(-1, "RC_MAP_FLTMODE") : _nullFact + property Fact _rcMapModeSw: controller.getParameterFact(-1, "RC_MAP_MODE_SW") + property bool _simpleMode: _rcMapFltmodeExists ? _rcMapFltmode.value > 0 || _rcMapModeSw.value === 0 : false FactPanelController { id: controller diff --git a/src/AutoPilotPlugins/PX4/PX4SimpleFlightModes.qml b/src/AutoPilotPlugins/PX4/PX4SimpleFlightModes.qml index 26e7901..99ce9e8 100644 --- a/src/AutoPilotPlugins/PX4/PX4SimpleFlightModes.qml +++ b/src/AutoPilotPlugins/PX4/PX4SimpleFlightModes.qml @@ -34,8 +34,8 @@ Item { _switchTHList.push("RC_TRANS_TH") } if (controller.vehicle.fixedWing) { - _switchNameList.push("RC_MAP_FLAPS") - _switchTHList.push("") + _switchFactList.push("RC_MAP_FLAPS") + _switchTHFactList.push("") } switchRepeater.model = _switchNameList } @@ -184,6 +184,14 @@ Item { } } // Column - Switch settings } // Row - Settings + + QGCButton { + text: qsTr("Use Multi Channel Mode Selection") + onClicked: { + controller.getParameterFact(-1, "RC_MAP_MODE_SW").value = 5 + controller.getParameterFact(-1, "RC_MAP_FLTMODE").value = 0 + } + } } } } diff --git a/src/AutoPilotPlugins/PX4/PX4TuningComponent.cc b/src/AutoPilotPlugins/PX4/PX4TuningComponent.cc index ec315d5..214b733 100644 --- a/src/AutoPilotPlugins/PX4/PX4TuningComponent.cc +++ b/src/AutoPilotPlugins/PX4/PX4TuningComponent.cc @@ -54,7 +54,7 @@ QUrl PX4TuningComponent::setupSource(void) const switch (_vehicle->vehicleType()) { case MAV_TYPE_FIXED_WING: - qmlFile = "qrc:/qml/PX4TuningComponentPlane.qml"; + qmlFile = ""; // TODO: "qrc:/qml/PX4TuningComponentPlane.qml"; break; case MAV_TYPE_QUADROTOR: case MAV_TYPE_COAXIAL: @@ -64,12 +64,12 @@ QUrl PX4TuningComponent::setupSource(void) const case MAV_TYPE_TRICOPTER: qmlFile = "qrc:/qml/PX4TuningComponentCopter.qml"; break; - case MAV_TYPE_VTOL_TAILSITTER_DUOROTOR: - case MAV_TYPE_VTOL_TAILSITTER_QUADROTOR: + case MAV_TYPE_VTOL_DUOROTOR: + case MAV_TYPE_VTOL_QUADROTOR: case MAV_TYPE_VTOL_TILTROTOR: - case MAV_TYPE_VTOL_FIXEDROTOR: - case MAV_TYPE_VTOL_TAILSITTER: - case MAV_TYPE_VTOL_TILTWING: + case MAV_TYPE_VTOL_RESERVED2: + case MAV_TYPE_VTOL_RESERVED3: + case MAV_TYPE_VTOL_RESERVED4: case MAV_TYPE_VTOL_RESERVED5: qmlFile = "qrc:/qml/PX4TuningComponentVTOL.qml"; break; diff --git a/src/AutoPilotPlugins/PX4/PX4TuningComponentPlaneAll.qml b/src/AutoPilotPlugins/PX4/PX4TuningComponentPlaneAll.qml index 4ea95bd..f815acb 100644 --- a/src/AutoPilotPlugins/PX4/PX4TuningComponentPlaneAll.qml +++ b/src/AutoPilotPlugins/PX4/PX4TuningComponentPlaneAll.qml @@ -28,16 +28,12 @@ Item { width: parent.width anchors.top: parent.top QGCTabButton { - text: qsTr("Rate Controller") - } - QGCTabButton { - text: qsTr("Attitude Controller") + text: qsTr("TECS") } } property var pages: [ - "PX4TuningComponentPlaneRate.qml", - "PX4TuningComponentPlaneAttitude.qml", + "PX4TuningComponentPlaneTECS.qml", ] Loader { diff --git a/src/AutoPilotPlugins/PX4/PX4TuningComponentPlaneAttitude.qml b/src/AutoPilotPlugins/PX4/PX4TuningComponentPlaneAttitude.qml deleted file mode 100644 index f73e15f..0000000 --- a/src/AutoPilotPlugins/PX4/PX4TuningComponentPlaneAttitude.qml +++ /dev/null @@ -1,71 +0,0 @@ -/**************************************************************************** - * - * (c) 2021 QGROUNDCONTROL PROJECT - * - * QGroundControl is licensed according to the terms in the file - * COPYING.md in the root of the source code directory. - * - ****************************************************************************/ - -import QtQuick 2.3 -import QtQuick.Controls 1.2 -import QtQuick.Layouts 1.2 - -import QGroundControl 1.0 -import QGroundControl.Controls 1.0 -import QGroundControl.FactSystem 1.0 -import QGroundControl.FactControls 1.0 -import QGroundControl.ScreenTools 1.0 -import QGroundControl.Vehicle 1.0 - -ColumnLayout { - width: availableWidth - anchors.fill: parent - property alias autotuningEnabled: pidTuning.autotuningEnabled - - PIDTuning { - width: availableWidth - id: pidTuning - - property var roll: QtObject { - property string name: qsTr("Roll") - property var plot: [ - { name: "Response", value: globals.activeVehicle.roll.value }, - { name: "Setpoint", value: globals.activeVehicle.setpoint.roll.value } - ] - property var params: ListModel { - ListElement { - title: qsTr("Time constant (FW_R_TC)") - description: qsTr("The latency between a roll step input and the achieved setpoint (inverse to a P gain)") - param: "FW_R_TC" - min: 0.4 - max: 1.0 - step: 0.05 - } - } - } - property var pitch: QtObject { - property string name: qsTr("Pitch") - property var plot: [ - { name: "Response", value: globals.activeVehicle.pitch.value }, - { name: "Setpoint", value: globals.activeVehicle.setpoint.pitch.value } - ] - property var params: ListModel { - ListElement { - title: qsTr("Time Constant (FW_P_TC)") - description: qsTr("The latency between a pitch step input and the achieved setpoint (inverse to a P gain)") - param: "FW_P_TC" - min: 0.2 - max: 1.0 - step: 0.05 - } - } - } - title: "Attitude" - tuningMode: Vehicle.ModeRateAndAttitude - unit: "deg" - axis: [ roll, pitch ] - showAutoModeChange: true - showAutoTuning: true - } -} diff --git a/src/AutoPilotPlugins/PX4/PX4TuningComponentPlaneRate.qml b/src/AutoPilotPlugins/PX4/PX4TuningComponentPlaneRate.qml deleted file mode 100644 index f35e195..0000000 --- a/src/AutoPilotPlugins/PX4/PX4TuningComponentPlaneRate.qml +++ /dev/null @@ -1,173 +0,0 @@ -/**************************************************************************** - * - * (c) 2021 QGROUNDCONTROL PROJECT - * - * QGroundControl is licensed according to the terms in the file - * COPYING.md in the root of the source code directory. - * - ****************************************************************************/ - -import QtQuick 2.3 -import QtQuick.Controls 1.2 -import QtQuick.Layouts 1.2 - -import QGroundControl 1.0 -import QGroundControl.Controls 1.0 -import QGroundControl.FactSystem 1.0 -import QGroundControl.FactControls 1.0 -import QGroundControl.ScreenTools 1.0 -import QGroundControl.Vehicle 1.0 - -ColumnLayout { - width: availableWidth - anchors.fill: parent - property alias autotuningEnabled: pidTuning.autotuningEnabled - - GridLayout { - columns: 2 - } - PIDTuning { - width: availableWidth - id: pidTuning - - property var roll: QtObject { - property string name: qsTr("Roll") - property var plot: [ - { name: "Response", value: globals.activeVehicle.rollRate.value }, - { name: "Setpoint", value: globals.activeVehicle.setpoint.rollRate.value } - ] - property var params: ListModel { - ListElement { - title: qsTr("Porportional gain (FW_RR_P)") - description: qsTr("Porportional gain.") - param: "FW_RR_P" - min: 0.0 - max: 1 - step: 0.005 - } - ListElement { - title: qsTr("Differential Gain (FW_RR_D)") - description: qsTr("Damping: increase to reduce overshoots and oscillations, but not higher than really needed.") - param: "FW_RR_D" - min: 0.0 - max: 1.0 - step: 0.005 - } - ListElement { - title: qsTr("Integral Gain (FW_RR_I)") - description: qsTr("Generally does not need much adjustment, reduce this when seeing slow oscillations.") - param: "FW_RR_I" - min: 0.0 - max: 0.5 - step: 0.005 - } - ListElement { - title: qsTr("Feedforward Gain (FW_RR_FF)") - description: qsTr("Feedforward gused to compensate for aerodynamic damping.") - param: "FW_RR_FF" - min: 0.0 - max: 10.0 - step: 0.05 - } - } - } - property var pitch: QtObject { - property string name: qsTr("Pitch") - property var plot: [ - { name: "Response", value: globals.activeVehicle.pitchRate.value }, - { name: "Setpoint", value: globals.activeVehicle.setpoint.pitchRate.value } - ] - property var params: ListModel { - ListElement { - title: qsTr("Porportional Gain (FW_PR_P)") - description: qsTr("Porportional Gain.") - param: "FW_PR_P" - min: 0.0 - max: 1 - step: 0.005 - } - ListElement { - title: qsTr("Differential Gain (FW_PR_D)") - description: qsTr("Damping: increase to reduce overshoots and oscillations, but not higher than really needed.") - param: "FW_PR_D" - min: 0.0 - max: 1.00 - step: 0.005 - } - ListElement { - title: qsTr("Integral Gain (FW_PR_I)") - description: qsTr("Generally does not need much adjustment, reduce this when seeing slow oscillations.") - param: "FW_PR_I" - min: 0.0 - max: 0.5 - step: 0.005 - } - ListElement { - title: qsTr("Feedforward Gain (FW_PR_FF)") - description: qsTr("Feedforward gused to compensate for aerodynamic damping.") - param: "FW_PR_FF" - min: 0.0 - max: 10.0 - step: 0.05 - } - } - } - property var yaw: QtObject { - property string name: qsTr("Yaw") - property var plot: [ - { name: "Response", value: globals.activeVehicle.yawRate.value }, - { name: "Setpoint", value: globals.activeVehicle.setpoint.yawRate.value } - ] - property var params: ListModel { - ListElement { - title: qsTr("Porportional Gain (FW_YR_P)") - description: qsTr("Porportional Gain.") - param: "FW_YR_P" - min: 0.0 - max: 1 - step: 0.005 - } - ListElement { - title: qsTr("Integral Gain (FW_YR_D)") - description: qsTr("Generally does not need much adjustment, reduce this when seeing slow oscillations.") - param: "FW_YR_D" - min: 0.0 - max: 1.0 - step: 0.005 - } - ListElement { - title: qsTr("Integral Gain (FW_YR_I)") - description: qsTr("Generally does not need much adjustment, reduce this when seeing slow oscillations.") - param: "FW_YR_I" - min: 0.0 - max: 50.0 - step: 0.5 - } - ListElement { - title: qsTr("Feedforward Gain (FW_YR_FF)") - description: qsTr("Feedforward gused to compensate for aerodynamic damping.") - param: "FW_YR_FF" - min: 0.0 - max: 10.0 - step: 0.05 - } - ListElement { - title: qsTr("Roll control to yaw feedforward (FW_RLL_TO_YAW_FF)") - description: qsTr("Used to counteract the adverse yaw effect for fixed wings.") - param: "FW_RLL_TO_YAW_FF" - min: 0.0 - max: 1.0 - step: 0.01 - } - } - } - title: "Rate" - tuningMode: Vehicle.ModeRateAndAttitude - unit: "deg/s" - axis: [ roll, pitch, yaw ] - chartDisplaySec: 3 - showAutoModeChange: true - showAutoTuning: true - } -} - diff --git a/src/AutoPilotPlugins/PX4/PowerComponent.cc b/src/AutoPilotPlugins/PX4/PowerComponent.cc index a2b5132..95d8297 100644 --- a/src/AutoPilotPlugins/PX4/PowerComponent.cc +++ b/src/AutoPilotPlugins/PX4/PowerComponent.cc @@ -42,21 +42,14 @@ bool PowerComponent::requiresSetup(void) const bool PowerComponent::setupComplete(void) const { - if (!_vehicle->parameterManager()->parameterExists(FactSystem::defaultComponentId, "BAT1_SOURCE") || - !_vehicle->parameterManager()->parameterExists(FactSystem::defaultComponentId, "BAT1_V_CHARGED") || - !_vehicle->parameterManager()->parameterExists(FactSystem::defaultComponentId, "BAT1_V_EMPTY") || - !_vehicle->parameterManager()->parameterExists(FactSystem::defaultComponentId, "BAT1_N_CELLS")) { - return true; - } - return _vehicle->parameterManager()->getParameter(FactSystem::defaultComponentId, "BAT1_SOURCE")->rawValue().toInt() == -1 || - (_vehicle->parameterManager()->getParameter(FactSystem::defaultComponentId, "BAT1_V_CHARGED")->rawValue().toFloat() != 0.0f && - _vehicle->parameterManager()->getParameter(FactSystem::defaultComponentId, "BAT1_V_EMPTY")->rawValue().toFloat() != 0.0f && - _vehicle->parameterManager()->getParameter(FactSystem::defaultComponentId, "BAT1_N_CELLS")->rawValue().toInt() != 0); + return _vehicle->parameterManager()->getParameter(FactSystem::defaultComponentId, "BAT_V_CHARGED")->rawValue().toFloat() != 0.0f && + _vehicle->parameterManager()->getParameter(FactSystem::defaultComponentId, "BAT_V_EMPTY")->rawValue().toFloat() != 0.0f && + _vehicle->parameterManager()->getParameter(FactSystem::defaultComponentId, "BAT_N_CELLS")->rawValue().toInt() != 0; } QStringList PowerComponent::setupCompleteChangedTriggerList(void) const { - return {"BAT1_SOURCE", "BAT1_V_CHARGED", "BAT1_V_EMPTY", "BAT1_N_CELLS"}; + return {"BAT_V_CHARGED", "BAT_V_EMPTY", "BAT_N_CELLS"}; } QUrl PowerComponent::setupSource(void) const diff --git a/src/AutoPilotPlugins/PX4/PowerComponent.qml b/src/AutoPilotPlugins/PX4/PowerComponent.qml index 659600b..a5df76c 100644 --- a/src/AutoPilotPlugins/PX4/PowerComponent.qml +++ b/src/AutoPilotPlugins/PX4/PowerComponent.qml @@ -58,7 +58,7 @@ SetupPage { onOldFirmware: mainWindow.showMessageDialog(qsTr("ESC Calibration"), qsTr("%1 cannot perform ESC Calibration with this version of firmware. You will need to upgrade to a newer firmware.").arg(QGroundControl.appName)) onNewerFirmware: mainWindow.showMessageDialog(qsTr("ESC Calibration"), qsTr("%1 cannot perform ESC Calibration with this version of firmware. You will need to upgrade %1.").arg(QGroundControl.appName)) onDisconnectBattery: mainWindow.showMessageDialog(qsTr("ESC Calibration failed"), qsTr("You must disconnect the battery prior to performing ESC Calibration. Disconnect your battery and try again.")) - onConnectBattery: escCalibrationDlgComponent.createObject(mainWindow).open() + onConnectBattery: { var dialog = mainWindow.showPopupDialogFromComponent(escCalibrationDlgComponent); dialog.disableAcceptButton() } } ColumnLayout { @@ -327,7 +327,7 @@ SetupPage { QGCButton { text: qsTr("Calculate") visible: battVoltageDividerAvailable - onClicked: calcVoltageDividerDlgComponent.createObject(mainWindow, { batteryIndex: _batteryIndex }).open() + onClicked: mainWindow.showPopupDialogFromComponent(calcVoltageDividerDlgComponent, { batteryIndex: _batteryIndex }) } Item { width: 1; height: 1; Layout.columnSpan: 2; visible: battVoltageDividerAvailable } @@ -351,7 +351,7 @@ SetupPage { QGCButton { text: qsTr("Calculate") visible: battAmpsPerVoltAvailable - onClicked: calcAmpsPerVoltDlgComponent.createObject(mainWindow, { batteryIndex: _batteryIndex }).open() + onClicked: mainWindow.showPopupDialogFromComponent(calcAmpsPerVoltDlgComponent, { batteryIndex: _batteryIndex }) } Item { width: 1; height: 1; Layout.columnSpan: 2; visible: battAmpsPerVoltAvailable } @@ -412,17 +412,16 @@ SetupPage { id: calcVoltageDividerDlgComponent QGCPopupDialog { - title: qsTr("Calculate Voltage Divider") - buttons: StandardButton.Close - - property alias batteryIndex: batParams.batteryIndex + title: qsTr("Calculate Voltage Divider") + buttons: StandardButton.Close property var _controller: controller - property FactGroup _batteryFactGroup: controller.vehicle.getFactGroup("battery" + (batteryIndex - 1)) + property FactGroup _batteryFactGroup: controller.vehicle.getFactGroup("battery" + (dialogProperties.batteryIndex - 1)) BatteryParams { id: batParams controller: _controller + batteryIndex: dialogProperties.batteryIndex } ColumnLayout { @@ -439,7 +438,7 @@ SetupPage { columns: 2 QGCLabel { text: qsTr("Measured voltage:") } - QGCTextField { id: measuredVoltage; numericValuesOnly: true } + QGCTextField { id: measuredVoltage } QGCLabel { text: qsTr("Vehicle voltage:") } QGCLabel { text: _batteryFactGroup.voltage.valueString } @@ -462,25 +461,24 @@ SetupPage { } } } - } - } - } + } // Column + } // QGCViewDialog + } // Component - calcVoltageDividerDlgComponent Component { id: calcAmpsPerVoltDlgComponent QGCPopupDialog { - title: qsTr("Calculate Amps per Volt") - buttons: StandardButton.Close - - property alias batteryIndex: batParams.batteryIndex + title: qsTr("Calculate Amps per Volt") + buttons: StandardButton.Close property var _controller: controller - property FactGroup _batteryFactGroup: controller.vehicle.getFactGroup("battery" + (batteryIndex - 1)) + property FactGroup _batteryFactGroup: controller.vehicle.getFactGroup("battery" + (dialogProperties.batteryIndex - 1)) BatteryParams { id: batParams controller: _controller + batteryIndex: dialogProperties.batteryIndex } ColumnLayout { @@ -497,7 +495,7 @@ SetupPage { columns: 2 QGCLabel { text: qsTr("Measured current:") } - QGCTextField { id: measuredCurrent; numericValuesOnly: true } + QGCTextField { id: measuredCurrent } QGCLabel { text: qsTr("Vehicle current:") } QGCLabel { text: _batteryFactGroup.current.valueString } @@ -528,17 +526,16 @@ SetupPage { id: escCalibrationDlgComponent QGCPopupDialog { - id: escCalibrationDlg - title: qsTr("ESC Calibration") - buttons: StandardButton.Ok - acceptButtonEnabled: false + id: popupDialog + title: qsTr("ESC Calibration") + buttons: StandardButton.Ok Connections { target: controller onBatteryConnected: textLabel.text = qsTr("Performing calibration. This will take a few seconds..") - onCalibrationFailed: { escCalibrationDlg.acceptButtonEnabled = true; textLabel.text = _highlightPrefix + qsTr("ESC Calibration failed. ") + _highlightSuffix + errorMessage } - onCalibrationSuccess: { escCalibrationDlg.acceptButtonEnabled = true; textLabel.text = qsTr("Calibration complete. You can disconnect your battery now if you like.") } + onCalibrationFailed: { popupDialog.enableAcceptButton(); textLabel.text = _highlightPrefix + qsTr("ESC Calibration failed. ") + _highlightSuffix + errorMessage } + onCalibrationSuccess: { popupDialog.enableAcceptButton(); textLabel.text = qsTr("Calibration complete. You can disconnect your battery now if you like.") } } ColumnLayout { diff --git a/src/AutoPilotPlugins/PX4/PowerComponentSummary.qml b/src/AutoPilotPlugins/PX4/PowerComponentSummary.qml index f0674ce..e248c56 100644 --- a/src/AutoPilotPlugins/PX4/PowerComponentSummary.qml +++ b/src/AutoPilotPlugins/PX4/PowerComponentSummary.qml @@ -26,9 +26,9 @@ Item { QGCPalette { id: qgcPal; colorGroupEnabled: enabled } FactPanelController { id: controller; } - property Fact batVChargedFact: controller.getParameterFact(-1, "BAT1_V_CHARGED") - property Fact batVEmptyFact: controller.getParameterFact(-1, "BAT1_V_EMPTY") - property Fact batCellsFact: controller.getParameterFact(-1, "BAT1_N_CELLS") + property Fact batVChargedFact: controller.getParameterFact(-1, "BAT_V_CHARGED") + property Fact batVEmptyFact: controller.getParameterFact(-1, "BAT_V_EMPTY") + property Fact batCellsFact: controller.getParameterFact(-1, "BAT_N_CELLS") Column { anchors.fill: parent diff --git a/src/AutoPilotPlugins/PX4/SensorsSetup.qml b/src/AutoPilotPlugins/PX4/SensorsSetup.qml index 4340bba..2ca0765 100644 --- a/src/AutoPilotPlugins/PX4/SensorsSetup.qml +++ b/src/AutoPilotPlugins/PX4/SensorsSetup.qml @@ -11,7 +11,6 @@ import QtQuick 2.3 import QtQuick.Controls 1.2 import QtQuick.Controls.Styles 1.4 import QtQuick.Dialogs 1.2 -import QtQuick.Layouts 1.15 import QGroundControl 1.0 import QGroundControl.FactSystem 1.0 @@ -22,7 +21,7 @@ import QGroundControl.ScreenTools 1.0 import QGroundControl.Controllers 1.0 /// Page for sensor calibration. This control is used within the SensorsComponent control and can also be used -/// standalone for custom uis. When using standadalone you can use the various show* bools to show/hide what you want. +/// standalone for custom uis. When using standardalone you can use the various show* bools to show/hide what you want. Item { id: _root @@ -83,21 +82,10 @@ Item { "ROTATION_ROLL_270_YAW_135", "ROTATION_PITCH_90", "ROTATION_PITCH_270", - "ROTATION_PITCH_180_YAW_90", - "ROTATION_PITCH_180_YAW_270", - "ROTATION_ROLL_90_PITCH_90", - "ROTATION_ROLL_180_PITCH_90", - "ROTATION_ROLL_270_PITCH_90", - "ROTATION_ROLL_90_PITCH_180", - "ROTATION_ROLL_270_PITCH_180", - "ROTATION_ROLL_90_PITCH_270", + "ROTATION_ROLL_270_YAW_270", "ROTATION_ROLL_180_PITCH_270", - "ROTATION_ROLL_270_PITCH_270", - "ROTATION_ROLL_90_PITCH_180_YAW_90", - "ROTATION_ROLL_90_YAW_270", - "ROTATION_ROLL_90_PITCH_68_YAW_293", - "ROTATION_PITCH_315", - "ROTATION_ROLL_90_PITCH_315" + "ROTATION_PITCH_90_YAW_180", + "ROTATION_ROLL_90_PITCH_90" ] property Fact cal_mag0_id: controller.getParameterFact(-1, "CAL_MAG0_ID") @@ -209,12 +197,13 @@ Item { onMagCalComplete: { setOrientationsButton.visible = orientationsButtonVisible() setOrientationsDialogShowBoardOrientation = false - setOrientationsDialogComponent.createObject(mainWindow, { title: qsTr("Compass Calibration Complete"), showRebootVehicleButton: true }).open() + setOrientationsDialogShowReboot = true + mainWindow.showComponentDialog(setOrientationsDialogComponent, qsTr("Compass Calibration Complete"), mainWindow.showDialogDefaultWidth, StandardButton.Ok) } onWaitingForCancelChanged: { if (controller.waitingForCancel) { - waitForCancelDialogComponent.createObject(mainWindow).open() + mainWindow.showComponentDialog(waitForCancelDialogComponent, qsTr("Calibration Cancel"), mainWindow.showDialogDefaultWidth, 0) } } } @@ -229,17 +218,15 @@ Item { Component { id: waitForCancelDialogComponent - QGCSimpleMessageDialog { - title: qsTr("Calibration Cancel") - text: qsTr("Waiting for Vehicle to response to Cancel. This may take a few seconds.") - buttons: 0 + QGCViewMessage { + message: qsTr("Waiting for Vehicle to response to Cancel. This may take a few seconds.") Connections { target: controller onWaitingForCancelChanged: { if (!controller.waitingForCancel) { - close() + hideDialog() } } } @@ -249,10 +236,10 @@ Item { Component { id: preCalibrationDialogComponent - QGCPopupDialog { - buttons: StandardButton.Cancel | StandardButton.Ok + QGCViewDialog { + id: preCalibrationDialog - onAccepted: { + function accept() { if (preCalibrationDialogType == "gyro") { controller.calibrateGyro() } else if (preCalibrationDialogType == "accel") { @@ -264,120 +251,139 @@ Item { } else if (preCalibrationDialogType == "airspeed") { controller.calibrateAirspeed() } + preCalibrationDialog.hideDialog() } - ColumnLayout { - spacing: ScreenTools.defaultFontPixelHeight + Column { + anchors.fill: parent + spacing: ScreenTools.defaultFontPixelHeight QGCLabel { - Layout.minimumWidth: ScreenTools.defaultFontPixelWidth * 50 - Layout.preferredWidth: innerColumn.width - wrapMode: Text.WordWrap - text: preCalibrationDialogHelp + width: parent.width + wrapMode: Text.WordWrap + text: preCalibrationDialogHelp + } + + QGCLabel { + id: boardRotationHelp + width: parent.width + wrapMode: Text.WordWrap + visible: !_sensorsHaveFixedOrientation && (preCalibrationDialogType == "accel" || preCalibrationDialogType == "compass") + text: qsTr("Set autopilot orientation before calibrating.") } Column { - id: innerColumn - spacing: parent.spacing - - QGCLabel { - id: boardRotationHelp - wrapMode: Text.WordWrap - visible: !_sensorsHaveFixedOrientation && (preCalibrationDialogType == "accel" || preCalibrationDialogType == "compass") - text: qsTr("Set autopilot orientation before calibrating.") - } - - Column { - visible: boardRotationHelp.visible - QGCLabel { text: qsTr("Autopilot Orientation") } - - FactComboBox { - sizeToContents: true - model: rotations - fact: sens_board_rot - } - - QGCLabel { - wrapMode: Text.WordWrap - text: qsTr("ROTATION_NONE indicates component points in direction of flight.") - } - } - - QGCLabel { - wrapMode: Text.WordWrap - text: qsTr("Click Ok to start calibration.") - } - } - } - } - } - - property bool setOrientationsDialogShowBoardOrientation: true - - Component { - id: setOrientationsDialogComponent - - QGCPopupDialog { - buttons: StandardButton.Ok - - property bool showRebootVehicleButton: true - - ColumnLayout { - spacing: ScreenTools.defaultFontPixelHeight - - QGCLabel { - text: qsTr("Reboot the vehicle prior to flight.") - visible: showRebootVehicleButton - } - - QGCButton { - text: qsTr("Reboot Vehicle") - visible: showRebootVehicleButton - onClicked: { controller.vehicle.rebootVehicle(); close() } - } - - QGCLabel { - text: qsTr("Adjust orientations as needed.\n\nROTATION_NONE indicates component points in direction of flight.") - visible: _boardOrientationChangeAllowed || (_compassOrientationChangeAllowed && currentExternalMagCount() !== 0) - } - - Column { - visible: _boardOrientationChangeAllowed - - QGCLabel { - text: qsTr("Autopilot Orientation") - } + width: parent.width + visible: boardRotationHelp.visible + QGCLabel { text: qsTr("Autopilot Orientation") } FactComboBox { sizeToContents: true model: rotations fact: sens_board_rot } + + QGCLabel { + width: parent.width + wrapMode: Text.WordWrap + text: qsTr("ROTATION_NONE indicates component points in direction of flight.") + } } - Repeater { - model: _compassOrientationChangeAllowed ? currentMagParamCount() : 0 + QGCLabel { + width: parent.width + wrapMode: Text.WordWrap + text: qsTr("Click Ok to start calibration.") + } + } + } + } + + property bool setOrientationsDialogShowBoardOrientation: true + property bool setOrientationsDialogShowReboot: true + + Component { + id: setOrientationsDialogComponent + + QGCViewDialog { + id: setOrientationsDialog + + QGCFlickable { + anchors.fill: parent + contentHeight: columnLayout.height + clip: true + + Column { + id: columnLayout + anchors.margins: ScreenTools.defaultFontPixelWidth + anchors.left: parent.left + anchors.right: parent.right + anchors.top: parent.top + spacing: ScreenTools.defaultFontPixelHeight + + QGCLabel { + width: parent.width + wrapMode: Text.WordWrap + text: qsTr("Reboot the vehicle prior to flight.") + visible: setOrientationsDialogShowReboot + } + + QGCButton { + text: qsTr("Reboot Vehicle") + visible: setOrientationsDialogShowReboot + onClicked: { + controller.vehicle.rebootVehicle() + hideDialog() + } + } + + QGCLabel { + width: parent.width + wrapMode: Text.WordWrap + text: qsTr("Adjust orientations as needed.\n\nROTATION_NONE indicates component points in direction of flight.") + visible: _boardOrientationChangeAllowed || (_compassOrientationChangeAllowed && currentExternalMagCount() !== 0) + + Component.onCompleted: console.log(_boardOrientationChangeAllowed, _compassOrientationChangeAllowed, currentExternalMagCount()) + } Column { - // id > = signals compass available, rot < 0 signals internal compass - visible: calMagIdFact.value > 0 && calMagRotFact.value >= 0 - - property Fact calMagIdFact: controller.getParameterFact(-1, _calMagIdParamFormat.replace("#", index)) - property Fact calMagRotFact: controller.getParameterFact(-1, _calMagRotParamFormat.replace("#", index)) + visible: _boardOrientationChangeAllowed QGCLabel { - text: qsTr("Mag %1 Orientation").arg(index) + text: qsTr("Autopilot Orientation") } FactComboBox { sizeToContents: true model: rotations - fact: parent.calMagRotFact + fact: sens_board_rot } } - } - } // Column - } // QGCPopupDialog + + Repeater { + model: _compassOrientationChangeAllowed ? currentMagParamCount() : 0 + + Column { + // id > = signals compass available, rot < 0 signals internal compass + visible: calMagIdFact.value > 0 && calMagRotFact.value >= 0 + + property Fact calMagIdFact: controller.getParameterFact(-1, _calMagIdParamFormat.replace("#", index)) + property Fact calMagRotFact: controller.getParameterFact(-1, _calMagRotParamFormat.replace("#", index)) + + QGCLabel { + text: qsTr("Mag %1 Orientation").arg(index) + } + + FactComboBox { + sizeToContents: true + model: rotations + fact: parent.calMagRotFact + } + } + } + } // Column + } // QGCFlickable + } // QGCViewDialog } // Component - setOrientationsDialogComponent QGCFlickable { @@ -401,7 +407,7 @@ Item { onClicked: { preCalibrationDialogType = "compass" preCalibrationDialogHelp = compassHelp - preCalibrationDialogComponent.createObject(mainWindow, { title: qsTr("Calibrate Compass") }).open() + mainWindow.showComponentDialog(preCalibrationDialogComponent, qsTr("Calibrate Compass"), mainWindow.showDialogDefaultWidth, StandardButton.Cancel | StandardButton.Ok) } } @@ -415,7 +421,7 @@ Item { onClicked: { preCalibrationDialogType = "gyro" preCalibrationDialogHelp = gyroHelp - preCalibrationDialogComponent.createObject(mainWindow, { title: qsTr("Calibrate Gyro") }).open() + mainWindow.showComponentDialog(preCalibrationDialogComponent, qsTr("Calibrate Gyro"), mainWindow.showDialogDefaultWidth, StandardButton.Cancel | StandardButton.Ok) } } @@ -429,7 +435,7 @@ Item { onClicked: { preCalibrationDialogType = "accel" preCalibrationDialogHelp = accelHelp - preCalibrationDialogComponent.createObject(mainWindow, { title: qsTr("Calibrate Accelerometer") }).open() + mainWindow.showComponentDialog(preCalibrationDialogComponent, qsTr("Calibrate Accelerometer"), mainWindow.showDialogDefaultWidth, StandardButton.Cancel | StandardButton.Ok) } } @@ -444,7 +450,7 @@ Item { onClicked: { preCalibrationDialogType = "level" preCalibrationDialogHelp = levelHelp - preCalibrationDialogComponent.createObject(mainWindow, { title: qsTr("Level Horizon") }).open() + mainWindow.showComponentDialog(preCalibrationDialogComponent, qsTr("Level Horizon"), mainWindow.showDialogDefaultWidth, StandardButton.Cancel | StandardButton.Ok) } } @@ -462,7 +468,7 @@ Item { onClicked: { preCalibrationDialogType = "airspeed" preCalibrationDialogHelp = airspeedHelp - preCalibrationDialogComponent.createObject(mainWindow, { title: qsTr("Calibrate Airspeed") }).open() + mainWindow.showComponentDialog(preCalibrationDialogComponent, qsTr("Calibrate Airspeed"), mainWindow.showDialogDefaultWidth, StandardButton.Cancel | StandardButton.Ok) } } @@ -490,8 +496,9 @@ Item { visible: orientationsButtonVisible() onClicked: { - setOrientationsDialogShowBoardOrientation = true - setOrientationsDialogComponent.createObject(mainWindow, { title: qsTr("Set Orientations"), showRebootVehicleButton: false }).open() + setOrientationsDialogShowBoardOrientation = true + setOrientationsDialogShowReboot = false + mainWindow.showComponentDialog(setOrientationsDialogComponent, qsTr("Set Orientations"), mainWindow.showDialogDefaultWidth, StandardButton.Ok) } } } // Column - Buttons diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index b57b40f..cb7301c 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -33,7 +33,6 @@ if(BUILD_TESTING) add_subdirectory(qgcunittest) add_qgc_test(ComponentInformationCacheTest) - add_qgc_test(ComponentInformationTranslationTest) add_qgc_test(CameraCalcTest) add_qgc_test(CameraSectionTest) add_qgc_test(CorridorScanComplexItemTest) @@ -85,8 +84,6 @@ add_library(qgc QGC.h QGCApplication.cc QGCApplication.h - QGCCachedFileDownload.cc - QGCCachedFileDownload.h QGCComboBox.cc QGCComboBox.h QGCConfig.h @@ -120,6 +117,7 @@ set_source_files_properties(QGCApplication.cc PROPERTIES COMPILE_DEFINITIONS APP add_subdirectory(ui) add_subdirectory(ADSB) +add_subdirectory(Airmap) add_subdirectory(AnalyzeView) add_subdirectory(api) add_subdirectory(Audio) @@ -164,13 +162,13 @@ target_link_libraries(qgc Qt5::Widgets ADSB + Airmap AnalyzeView api Audio AutoPilotPlugins Camera comm - compression FactSystem FirmwarePlugin FlightMap diff --git a/src/Camera/QGCCameraControl.cc b/src/Camera/QGCCameraControl.cc index ba3af30..6c7ef68 100644 --- a/src/Camera/QGCCameraControl.cc +++ b/src/Camera/QGCCameraControl.cc @@ -11,8 +11,6 @@ #include "VideoManager.h" #include "QGCMapEngine.h" #include "QGCCameraManager.h" -#include "FTPManager.h" -#include "QGCLZMA.h" #include #include @@ -728,10 +726,6 @@ QGCCameraControl::_mavCommandResult(int vehicleId, int component, int command, i qCDebug(CameraControlLog) << "Command failed for" << command; } switch(command) { - case MAV_CMD_RESET_CAMERA_SETTINGS: - _resetting = false; - qCDebug(CameraControlLog) << "Failed to reset camera settings"; - break; case MAV_CMD_IMAGE_START_CAPTURE: case MAV_CMD_IMAGE_STOP_CAPTURE: if(++_captureInfoRetries < 3) { @@ -813,24 +807,20 @@ QGCCameraControl::_loadCameraDefinitionFile(QByteArray& bytes) QString errorMsg; QDomDocument doc; if(!doc.setContent(bytes, false, &errorMsg, &errorLine)) { - qCCritical(CameraControlLog) << "Unable to parse camera definition file on line:" << errorLine; - qCCritical(CameraControlLog) << errorMsg; + qCritical() << "Unable to parse camera definition file on line:" << errorLine; + qCritical() << errorMsg; return false; } //-- Load camera constants QDomNodeList defElements = doc.elementsByTagName(kDefnition); if(!defElements.size() || !_loadConstants(defElements)) { - qCWarning(CameraControlLog) << "Unable to load camera constants from camera definition"; + qWarning() << "Unable to load camera constants from camera definition"; return false; } //-- Load camera parameters QDomNodeList paramElements = doc.elementsByTagName(kParameters); - if(!paramElements.size()) { - qCDebug(CameraControlLog) << "No parameters to load from camera"; - return false; - } - if(!_loadSettings(paramElements)) { - qCWarning(CameraControlLog) << "Unable to load camera parameters from camera definition"; + if(!paramElements.size() || !_loadSettings(paramElements)) { + qWarning() << "Unable to load camera parameters from camera definition"; return false; } //-- If this is new, cache it @@ -1960,28 +1950,8 @@ QGCCameraControl::_handleDefinitionFile(const QString &url) { //-- First check and see if we have it cached QFile xmlFile(_cacheFile); - - QString ftpPrefix(QStringLiteral("%1://").arg(FTPManager::mavlinkFTPScheme)); - if (!xmlFile.exists() && url.startsWith(ftpPrefix, Qt::CaseInsensitive)) { - qCDebug(CameraControlLog) << "No camera definition file cached, attempt ftp download"; - int ver = static_cast(_info.cam_definition_version); - QString ext = ""; - if (url.endsWith(".lzma", Qt::CaseInsensitive)) { ext = ".lzma"; } - if (url.endsWith(".xz", Qt::CaseInsensitive)) { ext = ".xz"; } - QString fileName = QString::asprintf("%s_%s_%03d.xml%s", - _vendor.toStdString().c_str(), - _modelName.toStdString().c_str(), - ver, - ext.toStdString().c_str()); - connect(_vehicle->ftpManager(), &FTPManager::downloadComplete, this, &QGCCameraControl::_ftpDownloadComplete); - _vehicle->ftpManager()->download(_compID, url, - qgcApp()->toolbox()->settingsManager()->appSettings()->parameterSavePath().toStdString().c_str(), - fileName); - return; - } - if (!xmlFile.exists()) { - qCDebug(CameraControlLog) << "No camera definition file cached, attempt http download"; + qCDebug(CameraControlLog) << "No camera definition file cached"; _httpRequest(url); return; } @@ -2050,40 +2020,6 @@ QGCCameraControl::_downloadFinished() //reply->deleteLater(); } -void QGCCameraControl::_ftpDownloadComplete(const QString& fileName, const QString& errorMsg) -{ - qCDebug(CameraControlLog) << "FTP Download completed: " << fileName << ", " << errorMsg; - - disconnect(_vehicle->ftpManager(), &FTPManager::downloadComplete, this, &QGCCameraControl::_ftpDownloadComplete); - - QString outputFileName = fileName; - - if (fileName.endsWith(".lzma", Qt::CaseInsensitive) || fileName.endsWith(".xz", Qt::CaseInsensitive)) { - outputFileName = fileName.left(fileName.lastIndexOf(".")); - if (QGCLZMA::inflateLZMAFile(fileName, outputFileName)) { - QFile(fileName).remove(); - } else { - qCWarning(CameraControlLog) << "Inflate of compressed xml failed" << fileName; - outputFileName.clear(); - } - } - - QFile xmlFile(outputFileName); - - if (!xmlFile.exists()) { - qCDebug(CameraControlLog) << "No camera definition file present after ftp download completed"; - return; - } - if (!xmlFile.open(QIODevice::ReadOnly)) { - qWarning() << "Could not read downloaded camera definition file: " << fileName; - return; - } - - _cached = true; - QByteArray bytes = xmlFile.readAll(); - emit dataReady(bytes); -} - //----------------------------------------------------------------------------- void QGCCameraControl::_dataReady(QByteArray data) diff --git a/src/Camera/QGCCameraControl.h b/src/Camera/QGCCameraControl.h index b9e13bf..b5a25bb 100644 --- a/src/Camera/QGCCameraControl.h +++ b/src/Camera/QGCCameraControl.h @@ -372,7 +372,6 @@ private: void _updateRanges (Fact* pFact); void _httpRequest (const QString& url); void _handleDefinitionFile (const QString& url); - void _ftpDownloadComplete (const QString& fileName, const QString& errorMsg); QStringList _loadExclusions (QDomNode option); QStringList _loadUpdates (QDomNode option); diff --git a/src/Camera/QGCCameraManager.cc b/src/Camera/QGCCameraManager.cc index ef36857..cfe72d6 100644 --- a/src/Camera/QGCCameraManager.cc +++ b/src/Camera/QGCCameraManager.cc @@ -109,6 +109,8 @@ QGCCameraManager::_mavlinkMessageReceived(const mavlink_message_t& message) void QGCCameraManager::_handleHeartbeat(const mavlink_message_t &message) { + mavlink_heartbeat_t heartbeat; + mavlink_msg_heartbeat_decode(&message, &heartbeat); //-- First time hearing from this one? QString sCompID = QString::number(message.compid); if(!_cameraInfoRequest.contains(sCompID)) { diff --git a/src/FactSystem/Fact.cc b/src/FactSystem/Fact.cc index 7b6b43e..502e047 100644 --- a/src/FactSystem/Fact.cc +++ b/src/FactSystem/Fact.cc @@ -278,7 +278,6 @@ void Fact::setEnumInfo(const QStringList& strings, const QVariantList& values) { if (_metaData) { _metaData->setEnumInfo(strings, values); - emit enumsChanged(); } else { qWarning() << kMissingMetadata << name(); } diff --git a/src/FactSystem/FactControls/FactComboBox.qml b/src/FactSystem/FactControls/FactComboBox.qml index 5b99f8a..db5d31d 100644 --- a/src/FactSystem/FactControls/FactComboBox.qml +++ b/src/FactSystem/FactControls/FactComboBox.qml @@ -14,17 +14,6 @@ QGCComboBox { currentIndex: fact ? (indexModel ? fact.value : fact.enumIndex) : 0 - onModelChanged: { - // When the model changes, the index gets reset to 0, so make sure to - // restore it correctly. - // Since enumIndex could trigger a model change, we use callLater() to - // avoid an event binding loop (the 2. call will for certain not trigger - // another model change) - Qt.callLater(function() { - currentIndex = fact ? (indexModel ? fact.value : fact.enumIndex) : 0 - }) - } - onActivated: { if (indexModel) { fact.value = index diff --git a/src/FactSystem/FactControls/FactTextField.qml b/src/FactSystem/FactControls/FactTextField.qml index d22500b..f4d30c5 100644 --- a/src/FactSystem/FactControls/FactTextField.qml +++ b/src/FactSystem/FactControls/FactTextField.qml @@ -11,11 +11,10 @@ import QGroundControl.ScreenTools 1.0 QGCTextField { id: _textField - text: fact ? fact.valueString : "" - unitsLabel: fact ? fact.units : "" - showUnits: true - showHelp: true - numericValuesOnly: fact && !fact.typeIsString + text: fact ? fact.valueString : "" + unitsLabel: fact ? fact.units : "" + showUnits: true + showHelp: true signal updated() @@ -23,6 +22,10 @@ QGCTextField { property string _validateString + inputMethodHints: ((fact && fact.typeIsString) || ScreenTools.isiOS) ? + Qt.ImhNone : // iOS numeric keyboard has no done button, we can't use it + Qt.ImhFormattedNumbersOnly // Forces use of virtual numeric keyboard + onEditingFinished: { var errorString = fact.validate(text, false /* convertOnly */) if (errorString === "") { @@ -30,17 +33,15 @@ QGCTextField { _textField.updated() } else { _validateString = text - validationErrorDialogComponent.createObject(mainWindow).open() + mainWindow.showComponentDialog(validationErrorDialogComponent, qsTr("Invalid Value"), mainWindow.showDialogDefaultWidth, StandardButton.Save | StandardButton.Cancel) } } - onHelpClicked: helpDialogComponent.createObject(mainWindow).open() + onHelpClicked: mainWindow.showComponentDialog(helpDialogComponent, qsTr("Value Details"), mainWindow.showDialogDefaultWidth, StandardButton.Save | StandardButton.Cancel) Component { id: validationErrorDialogComponent - ParameterEditorDialog { - title: qsTr("Invalid Value") validate: true validateValue: _validateString fact: _textField.fact @@ -49,10 +50,8 @@ QGCTextField { Component { id: helpDialogComponent - ParameterEditorDialog { - title: qsTr("Value Details") - fact: _textField.fact + fact: _textField.fact } } } diff --git a/src/FactSystem/FactControls/FactValueSlider.qml b/src/FactSystem/FactControls/FactValueSlider.qml index c39e0b9..8cba109 100644 --- a/src/FactSystem/FactControls/FactValueSlider.qml +++ b/src/FactSystem/FactControls/FactValueSlider.qml @@ -97,7 +97,7 @@ Rectangle { onClicked: { valueListView.focus = true if (_currentIndex === index) { - editDialogComponent.createObject(mainWindow, { title: qsTr("Value Details") }).open() + mainWindow.showComponentDialog(editDialogComponent, qsTr("Value Details"), mainWindow.showDialogDefaultWidth, StandardButton.Save | StandardButton.Cancel) } else { _currentIndex = index valueListView.positionViewAtIndex(_currentIndex, ListView.Center) diff --git a/src/FactSystem/FactMetaData.cc b/src/FactSystem/FactMetaData.cc index 123d51e..0369b00 100644 --- a/src/FactSystem/FactMetaData.cc +++ b/src/FactSystem/FactMetaData.cc @@ -45,7 +45,7 @@ const char* FactMetaData::_jsonMetaDataFactsName = "QGC.MetaData. const char* FactMetaData::_enumStringsJsonKey = "enumStrings"; const char* FactMetaData::_enumValuesJsonKey = "enumValues"; -// This is the newer json format for enums and bitmasks. They are used by the new COMPONENT_METADATA parameter metadata for example. +// This is the newer json format for enums and bitmasks. They are used by the new COMPONENT_INFORMATION parameter metadata for example. const char* FactMetaData::_enumValuesArrayJsonKey = "values"; const char* FactMetaData::_enumBitmaskArrayJsonKey = "bitmask"; const char* FactMetaData::_enumValuesArrayValueJsonKey = "value"; @@ -153,7 +153,9 @@ FactMetaData::FactMetaData(QObject* parent) , _rawDefaultValue (0) , _defaultValueAvailable(false) , _rawMax (_maxForType()) + , _maxIsDefaultForType (true) , _rawMin (_minForType()) + , _minIsDefaultForType (true) , _rawTranslator (_defaultTranslator) , _cookedTranslator (_defaultTranslator) , _vehicleRebootRequired(false) @@ -175,7 +177,9 @@ FactMetaData::FactMetaData(ValueType_t type, QObject* parent) , _rawDefaultValue (0) , _defaultValueAvailable(false) , _rawMax (_maxForType()) + , _maxIsDefaultForType (true) , _rawMin (_minForType()) + , _minIsDefaultForType (true) , _rawTranslator (_defaultTranslator) , _cookedTranslator (_defaultTranslator) , _vehicleRebootRequired(false) @@ -203,7 +207,9 @@ FactMetaData::FactMetaData(ValueType_t type, const QString name, QObject* parent , _rawDefaultValue (0) , _defaultValueAvailable(false) , _rawMax (_maxForType()) + , _maxIsDefaultForType (true) , _rawMin (_minForType()) + , _minIsDefaultForType (true) , _name (name) , _rawTranslator (_defaultTranslator) , _cookedTranslator (_defaultTranslator) @@ -232,7 +238,9 @@ const FactMetaData& FactMetaData::operator=(const FactMetaData& other) _group = other._group; _longDescription = other._longDescription; _rawMax = other._rawMax; + _maxIsDefaultForType = other._maxIsDefaultForType; _rawMin = other._rawMin; + _minIsDefaultForType = other._minIsDefaultForType; _name = other._name; _shortDescription = other._shortDescription; _type = other._type; @@ -284,6 +292,7 @@ void FactMetaData::setRawMin(const QVariant& rawMin) { if (isInRawMinLimit(rawMin)) { _rawMin = rawMin; + _minIsDefaultForType = false; } else { qWarning() << "Attempt to set min below allowable value for fact: " << name() << ", value attempted: " << rawMin @@ -296,10 +305,9 @@ void FactMetaData::setRawMax(const QVariant& rawMax) { if (isInRawMaxLimit(rawMax)) { _rawMax = rawMax; + _maxIsDefaultForType = false; } else { - qWarning() << "Attempt to set max above allowable value for fact: " << name() - << ", value attempted: " << rawMax - << ", type: " << type() << ", max for type: " << _maxForType(); + qWarning() << "Attempt to set max above allowable value"; _rawMax = _maxForType(); } } @@ -364,9 +372,9 @@ bool FactMetaData::isInRawMaxLimit(const QVariant& variantValue) const return true; } -QVariant FactMetaData::minForType(ValueType_t type) +QVariant FactMetaData::_minForType(void) const { - switch (type) { + switch (_type) { case valueTypeUint8: return QVariant(std::numeric_limits::min()); case valueTypeInt8: @@ -401,9 +409,9 @@ QVariant FactMetaData::minForType(ValueType_t type) return QVariant(); } -QVariant FactMetaData::maxForType(ValueType_t type) +QVariant FactMetaData::_maxForType(void) const { - switch (type) { + switch (_type) { case valueTypeUint8: return QVariant(std::numeric_limits::max()); case valueTypeInt8: @@ -1192,26 +1200,6 @@ QVariant FactMetaData::appSettingsWeightUnitsToGrams(const QVariant& weight) { } } -QVariant FactMetaData::metersSecondToAppSettingsSpeedUnits(const QVariant& metersSecond) -{ - const AppSettingsTranslation_s* pAppSettingsTranslation = _findAppSettingsUnitsTranslation("m/s", UnitSpeed); - if (pAppSettingsTranslation) { - return pAppSettingsTranslation->rawTranslator(metersSecond); - } else { - return metersSecond; - } -} - -QVariant FactMetaData::appSettingsSpeedUnitsToMetersSecond(const QVariant& speed) -{ - const AppSettingsTranslation_s* pAppSettingsTranslation = _findAppSettingsUnitsTranslation("m/s", UnitSpeed); - if (pAppSettingsTranslation) { - return pAppSettingsTranslation->cookedTranslator(speed); - } else { - return speed; - } -} - QString FactMetaData::appSettingsSpeedUnitsString() { const AppSettingsTranslation_s* pAppSettingsTranslation = _findAppSettingsUnitsTranslation("m/s", UnitSpeed); @@ -1349,7 +1337,7 @@ FactMetaData* FactMetaData::createFromJsonObject(const QJsonObject& json, QMapsetDecimalPlaces(json[_decimalPlacesJsonKey].toInt(kUnknownDecimalPlaces)); + metaData->setDecimalPlaces(json[_decimalPlacesJsonKey].toInt(0)); metaData->setShortDescription(json[_shortDescriptionJsonKey].toString()); metaData->setLongDescription(json[_longDescriptionJsonKey].toString()); diff --git a/src/FactSystem/FactMetaData.h b/src/FactSystem/FactMetaData.h index 0e2f981..6b12bc2 100644 --- a/src/FactSystem/FactMetaData.h +++ b/src/FactSystem/FactMetaData.h @@ -99,12 +99,6 @@ public: /// Returns the string for distance units which has configued by user static QString appSettingsAreaUnitsString(void); - /// Converts from meters/second to the user specified speed unit - static QVariant metersSecondToAppSettingsSpeedUnits(const QVariant& metersSecond); - - /// Converts from user specified speed unit to meters/second - static QVariant appSettingsSpeedUnitsToMetersSecond(const QVariant& speed); - /// Returns the string for speed units which has configued by user static QString appSettingsSpeedUnitsString(); @@ -124,10 +118,10 @@ public: QString longDescription (void) const { return _longDescription;} QVariant rawMax (void) const { return _rawMax; } QVariant cookedMax (void) const; - bool maxIsDefaultForType (void) const { return _rawMax == _maxForType(); } + bool maxIsDefaultForType (void) const { return _maxIsDefaultForType; } QVariant rawMin (void) const { return _rawMin; } QVariant cookedMin (void) const; - bool minIsDefaultForType (void) const { return _rawMin == _minForType(); } + bool minIsDefaultForType (void) const { return _minIsDefaultForType; } QString name (void) const { return _name; } QString shortDescription (void) const { return _shortDescription; } ValueType_t type (void) const { return _type; } @@ -212,14 +206,11 @@ public: static QString typeToString(ValueType_t type); static size_t typeToSize(ValueType_t type); - static QVariant minForType(ValueType_t type); - static QVariant maxForType(ValueType_t type); - static const char* qgcFileType; private: - QVariant _minForType (void) const { return minForType(_type); }; - QVariant _maxForType (void) const { return maxForType(_type); }; + QVariant _minForType (void) const; + QVariant _maxForType (void) const; void _setAppSettingsTranslators (void); /// Clamp a value to be within cookedMin and cookedMax @@ -323,7 +314,9 @@ private: QString _group; QString _longDescription; QVariant _rawMax; + bool _maxIsDefaultForType; QVariant _rawMin; + bool _minIsDefaultForType; QString _name; QString _shortDescription; QString _rawUnits; diff --git a/src/FactSystem/ParameterManager.cc b/src/FactSystem/ParameterManager.cc index 543cb4d..c229120 100644 --- a/src/FactSystem/ParameterManager.cc +++ b/src/FactSystem/ParameterManager.cc @@ -1,6 +1,6 @@ /**************************************************************************** * - * (c) 2009-2022 QGROUNDCONTROL PROJECT + * (c) 2009-2020 QGROUNDCONTROL PROJECT * * QGroundControl is licensed according to the terms in the file * COPYING.md in the root of the source code directory. @@ -17,7 +17,6 @@ #include "JsonHelper.h" #include "ComponentInformationManager.h" #include "CompInfoParam.h" -#include "FTPManager.h" #include #include @@ -66,6 +65,11 @@ const QHash _mavlinkCompIdHash { { MAV_COMP_ID_GPS2, "GPS2" } }; +const char* ParameterManager::_jsonParametersKey = "parameters"; +const char* ParameterManager::_jsonCompIdKey = "compId"; +const char* ParameterManager::_jsonParamNameKey = "name"; +const char* ParameterManager::_jsonParamValueKey = "value"; + ParameterManager::ParameterManager(Vehicle* vehicle) : QObject (vehicle) , _vehicle (vehicle) @@ -85,7 +89,6 @@ ParameterManager::ParameterManager(Vehicle* vehicle) , _disableAllRetries (false) , _indexBatchQueueActive (false) , _totalParamCount (0) - , _tryftp (vehicle->apmFirmware()) { if (_vehicle->isOfflineEditingVehicle()) { _loadOfflineEditingParams(); @@ -166,9 +169,6 @@ void ParameterManager::_updateProgressBar(void) void ParameterManager::mavlinkMessageReceived(mavlink_message_t message) { - if (_tryftp && message.compid == MAV_COMP_ID_AUTOPILOT1 && !_initialLoadComplete) - return; - if (message.msgid == MAVLINK_MSG_ID_PARAM_VALUE) { mavlink_param_value_t param_value; mavlink_msg_param_value_decode(&message, ¶m_value); @@ -443,63 +443,6 @@ void ParameterManager::_factRawValueUpdated(const QVariant& rawValue) _factRawValueUpdateWorker(fact->componentId(), fact->name(), fact->type(), rawValue); } -void ParameterManager::_ftpDownloadComplete(const QString& fileName, const QString& errorMsg) -{ - bool continueWithDefaultParameterdownload = true; - bool immediateRetry = false; - - disconnect(_vehicle->ftpManager(), &FTPManager::downloadComplete, this, &ParameterManager::_ftpDownloadComplete); - disconnect(_vehicle->ftpManager(), &FTPManager::commandProgress, this, &ParameterManager::_ftpDownloadProgress); - - if (errorMsg.isEmpty()) { - qCDebug(ParameterManagerLog) << "ParameterManager::_ftpDownloadComplete : Parameter file received:" << fileName; - if (_parseParamFile(fileName)) { - qCDebug(ParameterManagerLog) << "ParameterManager::_ftpDownloadComplete : Parsed!"; - return; - } else { - qCDebug(ParameterManagerLog) << "ParameterManager::_ftpDownloadComplete : Error in parameter file"; - /* This should not happen... */ - } - } else { - if (errorMsg.contains("File Not Found")) { - qCDebug(ParameterManagerLog) << "ParameterManager-ftp: No Parameterfile on vehicle - Start Conventional Parameter Download"; - if (_initialRequestRetryCount == 0) - immediateRetry = true; - } else if (_loadProgress > 0.0001 && _loadProgress < 0.01) { /* FTP supported but too slow */ - qCDebug(ParameterManagerLog) << "ParameterManager-ftp progress too slow - Start Conventional Parameter Download"; - } else if (_initialRequestRetryCount == 1) { - qCDebug(ParameterManagerLog) << "ParameterManager-ftp: Too many retries - Start Conventional Parameter Download"; - } else { - qCDebug(ParameterManagerLog) << "ParameterManager-ftp Retry: " << _initialRequestRetryCount; - continueWithDefaultParameterdownload = false; - } - } - - if (continueWithDefaultParameterdownload) { - _tryftp = false; - _initialRequestRetryCount = 0; - /* If we receive "File not Found" this indicates that the vehicle does not support - * the parameter download via ftp. If we received this without retry, then we - * can immediately response with the conventional parameter download request, because - * we have no indication of communication link congestion.*/ - if (immediateRetry) - _initialRequestTimeout(); - else - _initialRequestTimeoutTimer.start(); - } else - _initialRequestTimeoutTimer.start(); - -} - - -void ParameterManager::_ftpDownloadProgress(float progress) -{ - qCDebug(ParameterManagerVerbose1Log) << "ParameterManager::_ftpDownloadProgress: " << progress; - _setLoadProgress(static_cast(progress)); - if (progress > 0.001) - _initialRequestTimeoutTimer.stop(); -} - void ParameterManager::refreshAllParameters(uint8_t componentId) { WeakLinkInterfacePtr weakLink = _vehicle->vehicleLinkManager()->primaryLink(); @@ -522,42 +465,29 @@ void ParameterManager::refreshAllParameters(uint8_t componentId) _initialRequestTimeoutTimer.start(); } - if (_tryftp && (componentId == MAV_COMP_ID_ALL || componentId == MAV_COMP_ID_AUTOPILOT1)) { - FTPManager* ftpManager = _vehicle->ftpManager(); - connect(ftpManager, &FTPManager::downloadComplete, this, &ParameterManager::_ftpDownloadComplete); - _waitingParamTimeoutTimer.stop(); - if (ftpManager->download(MAV_COMP_ID_AUTOPILOT1, "@PARAM/param.pck", - QStandardPaths::writableLocation(QStandardPaths::TempLocation), - "", false /* No filesize check */)) { - connect(ftpManager, &FTPManager::commandProgress, this, &ParameterManager::_ftpDownloadProgress); - } else { - qCWarning(ParameterManagerLog) << "ParameterManager::refreshallParameters FTPManager::download returned failure"; - disconnect(ftpManager, &FTPManager::downloadComplete, this, &ParameterManager::_ftpDownloadComplete); + // Reset index wait lists + for (int cid: _paramCountMap.keys()) { + // Add/Update all indices to the wait list, parameter index is 0-based + if(componentId != MAV_COMP_ID_ALL && componentId != cid) + continue; + for (int waitingIndex = 0; waitingIndex < _paramCountMap[cid]; waitingIndex++) { + // This will add a new waiting index if needed and set the retry count for that index to 0 + _waitingReadParamIndexMap[cid][waitingIndex] = 0; } - } else { - // Reset index wait lists - for (int cid: _paramCountMap.keys()) { - // Add/Update all indices to the wait list, parameter index is 0-based - if(componentId != MAV_COMP_ID_ALL && componentId != cid) - continue; - for (int waitingIndex = 0; waitingIndex < _paramCountMap[cid]; waitingIndex++) { - // This will add a new waiting index if needed and set the retry count for that index to 0 - _waitingReadParamIndexMap[cid][waitingIndex] = 0; - } - } - MAVLinkProtocol* mavlink = qgcApp()->toolbox()->mavlinkProtocol(); - mavlink_message_t msg; - SharedLinkInterfacePtr sharedLink = weakLink.lock(); - - mavlink_msg_param_request_list_pack_chan(mavlink->getSystemId(), - mavlink->getComponentId(), - sharedLink->mavlinkChannel(), - &msg, - _vehicle->id(), - componentId); - _vehicle->sendMessageOnLinkThreadSafe(sharedLink.get(), msg); } + MAVLinkProtocol* mavlink = qgcApp()->toolbox()->mavlinkProtocol(); + mavlink_message_t msg; + SharedLinkInterfacePtr sharedLink = weakLink.lock(); + + mavlink_msg_param_request_list_pack_chan(mavlink->getSystemId(), + mavlink->getComponentId(), + sharedLink->mavlinkChannel(), + &msg, + _vehicle->id(), + componentId); + _vehicle->sendMessageOnLinkThreadSafe(sharedLink.get(), msg); + QString what = (componentId == MAV_COMP_ID_ALL) ? "MAV_COMP_ID_ALL" : QString::number(componentId); qCDebug(ParameterManagerLog) << _logVehiclePrefix(-1) << "Request to refresh all parameters for component ID:" << what; } @@ -1422,203 +1352,3 @@ bool ParameterManager::pendingWrites(void) return false; } - - -/* Parse the binary parameter file and inject the parameters in the qgc - * fact system. - * - * See: https://github.com/ArduPilot/ardupilot/tree/master/libraries/AP_Filesystem - * - */ -bool ParameterManager::_parseParamFile(const QString& filename) -{ - const quint16 magic_standard = 0x671B; - const quint16 magic_withdefaults = 0x671C; - quint32 no_of_parameters_found = 0; - const int componentId = MAV_COMP_ID_AUTOPILOT1; /* Only main autopilot for the moment */ - enum ap_var_type { - AP_PARAM_NONE = 0, - AP_PARAM_INT8, - AP_PARAM_INT16, - AP_PARAM_INT32, - AP_PARAM_FLOAT, - AP_PARAM_VECTOR3F, - AP_PARAM_GROUP - }; - - qCDebug(ParameterManagerLog) << "_parseParamFile: " << filename; - QFile file(filename); - if (!file.open(QIODevice::ReadOnly)) { - qCDebug(ParameterManagerLog) << "_parseParamFile: Error: Could not open downloaded parameter file."; - return false; - } - QDataStream in(&file); - in.setByteOrder(QDataStream::LittleEndian); - - quint16 magic, num_params, total_params; - in >> magic; - in >> num_params; - in >> total_params; - - if (in.status() != QDataStream::Ok) { - qCDebug(ParameterManagerLog) << "_parseParamFile: Error: Could not read Header"; - goto Error; - } - - qCDebug(ParameterManagerVerbose2Log) << "_parseParamFile: magic: 0x" << Qt::hex << magic; - qCDebug(ParameterManagerVerbose2Log) << "_parseParamFile: num_params:" << num_params - << " total_params:" << total_params; - - if ((magic != magic_standard) && (magic != magic_withdefaults)) { - qCDebug(ParameterManagerLog) << "_parseParamFile: Error: File does not start with Magic"; - goto Error; - } - if (num_params > total_params) { - qCDebug(ParameterManagerLog) << "_parseParamFile: Error: total_params > num_params"; - goto Error; - } - if (num_params != total_params) { - /* We requested all parameters, so this is an error here */ - qCDebug(ParameterManagerLog) << "_parseParamFile: Error: total_params != num_params"; - goto Error; - } - - while (in.status() == QDataStream::Ok) { - quint8 byte = 0; - quint8 flags = 0; - quint8 ptype = 0; - quint8 name_len = 0; - quint8 common_len = 0; - bool withdefault = false; - int no_read = 0; - char name_buffer[17]; - - while (byte == 0x0) { // Eat padding bytes - in >> byte; - if (in.status() != QDataStream::Ok) { - if (no_of_parameters_found == num_params) - goto Success; - else { - qCDebug(ParameterManagerLog) << "_parseParamFile: Error: unexpected EOF" - << "number of parameters expected:" << num_params - << "actual:" << no_of_parameters_found; - goto Error; - } - } - } - ptype = byte & 0x0F; - flags = (byte >> 4) & 0x0F; - withdefault = (flags & 0x01) == 0x01; - in >> byte; - if (in.status() != QDataStream::Ok) { - qCritical(ParameterManagerLog) << "_parseParamFile: Error: Unexpected EOF while reading flags"; - goto Error; - } - name_len = ((byte >> 4) & 0x0F) + 1; - common_len = byte & 0x0F; - if ((name_len + common_len) > 16) { - qCritical(ParameterManagerLog) << "_parseParamFile: Error: common_len + name_len > 16 " - << "name_len" << name_len - << "common_len" << common_len; - goto Error; - } - no_read = in.readRawData(&name_buffer[common_len], (int) name_len); - if (no_read != name_len) { - qCritical(ParameterManagerLog) << "_parseParamFile: Error: Unexpected EOF while reading parameterName" - << "Expected:" << name_len - << "Actual:" << no_read; - goto Error; - } - name_buffer[common_len + name_len] = '\0'; - QString parameterName(name_buffer); - qCDebug(ParameterManagerVerbose2Log) << "_parseParamFile: parameter" << parameterName - << "name_len" << name_len - << "common_len" << common_len - << "ptype" << ptype - << "flags" << flags; - - QVariant parameterValue = 0; - switch ((enum ap_var_type) ptype) { - qint8 data8; - qint16 data16; - qint32 data32; - float dfloat; - case AP_PARAM_INT8: - in >> data8; - parameterValue = data8; - if (withdefault) - in >> data8; - break; - case AP_PARAM_INT16: - in >> data16; - parameterValue = data16; - if (withdefault) - in >> data16; - break; - case AP_PARAM_INT32: - in >> data32; - parameterValue = data32; - if (withdefault) - in >> data32; - break; - case AP_PARAM_FLOAT: - in >> data32; - memcpy(&dfloat, &data32, 4); - parameterValue = dfloat; - if (withdefault) - in >> data32; - break; - default: - qCDebug(ParameterManagerLog) << "_parseParamFile: Error: type is out of range" << ptype; - goto Error; - break; - } - qCDebug(ParameterManagerVerbose2Log) << "paramValue" << parameterValue; - - if (++no_of_parameters_found > num_params){ - qCDebug(ParameterManagerLog) << "_parseParamFile: Error: more parameters in file than expected." - << "Expected:" << num_params - << "Actual:" << no_of_parameters_found; - goto Error; - } - - FactMetaData::ValueType_t factType = (ptype == AP_PARAM_INT8 ? FactMetaData::valueTypeInt8 : - ptype == AP_PARAM_INT16 ? FactMetaData::valueTypeInt16 : - ptype == AP_PARAM_INT32 ? FactMetaData::valueTypeInt32 : - FactMetaData::valueTypeFloat); - - Fact* fact = nullptr; - if (_mapCompId2FactMap.contains(componentId) && _mapCompId2FactMap[componentId].contains(parameterName)) { - fact = _mapCompId2FactMap[componentId][parameterName]; - } else { - qCDebug(ParameterManagerVerbose1Log) << _logVehiclePrefix(componentId) << "Adding new fact" << parameterName; - - fact = new Fact(componentId, parameterName, factType, this); - FactMetaData* factMetaData = _vehicle->compInfoManager()->compInfoParam(componentId)->factMetaDataForName(parameterName, fact->type()); - fact->setMetaData(factMetaData); - - _mapCompId2FactMap[componentId][parameterName] = fact; - - // We need to know when the fact value changes so we can update the vehicle - connect(fact, &Fact::_containerRawValueChanged, this, &ParameterManager::_factRawValueUpdated); - - emit factAdded(componentId, fact); - } - fact->_containerSetRawValue(parameterValue); - } -Success: - file.close(); - /* Create empty waiting lists as we have all parameters */ - _paramCountMap[componentId] = num_params; - _totalParamCount += num_params; - _waitingReadParamIndexMap[componentId] = QMap(); - _waitingReadParamNameMap[componentId] = QMap(); - _waitingWriteParamNameMap[componentId] = QMap(); - _checkInitialLoadComplete(); - _setLoadProgress(0.0); - return true; - -Error: - file.close(); - return false; -} diff --git a/src/FactSystem/ParameterManager.h b/src/FactSystem/ParameterManager.h index 01e9cda..fb06129 100644 --- a/src/FactSystem/ParameterManager.h +++ b/src/FactSystem/ParameterManager.h @@ -126,9 +126,6 @@ private: bool _fillIndexBatchQueue (bool waitingParamTimeout); void _updateProgressBar (void); void _checkInitialLoadComplete (void); - void _ftpDownloadComplete (const QString& fileName, const QString& errorMsg); - void _ftpDownloadProgress (float progress); - bool _parseParamFile (const QString& filename); static QVariant _stringToTypedVariant(const QString& string, FactMetaData::ValueType_t type, bool failOk = false); @@ -186,6 +183,8 @@ private: Fact _defaultFact; ///< Used to return default fact, when parameter not found - /* MavFTP */ - bool _tryftp; + static const char* _jsonParametersKey; + static const char* _jsonCompIdKey; + static const char* _jsonParamNameKey; + static const char* _jsonParamValueKey; }; diff --git a/src/FactSystem/ParameterManagerTest.cc b/src/FactSystem/ParameterManagerTest.cc index 61e0527..8b1b198 100644 --- a/src/FactSystem/ParameterManagerTest.cc +++ b/src/FactSystem/ParameterManagerTest.cc @@ -138,96 +138,3 @@ void ParameterManagerTest::_requestListMissingParamFail(void) // User should have been notified checkExpectedMessageBox(); } - -void ParameterManagerTest::_FTPnoFailure() -{ - Q_ASSERT(!_mockLink); - _mockLink = MockLink::startAPMArduPlaneMockLink(false, MockConfiguration::FailParamNoReponseToRequestList); - _mockLink->mockLinkFTP()->enableBinParamFile(true); - MultiVehicleManager* vehicleMgr = qgcApp()->toolbox()->multiVehicleManager(); - QVERIFY(vehicleMgr); - - // Wait for the Vehicle to get created - QSignalSpy spyVehicle(vehicleMgr, SIGNAL(activeVehicleAvailableChanged(bool))); - // When param load is complete we get the param ready signal - QSignalSpy spyParamsReady(vehicleMgr, SIGNAL(parameterReadyVehicleAvailableChanged(bool))); - QCOMPARE(spyVehicle.wait(5000), true); - QCOMPARE(spyVehicle.count(), 1); - QList arguments = spyVehicle.takeFirst(); - QCOMPARE(arguments.count(), 1); - QCOMPARE(arguments.at(0).toBool(), true); - Vehicle* vehicle = vehicleMgr->activeVehicle(); - QVERIFY(vehicle); - - spyParamsReady.wait(5000); - QCOMPARE(spyParamsReady.count(), 1); - arguments = spyParamsReady.takeFirst(); - QCOMPARE(arguments.count(), 1); - QCOMPARE(arguments.at(0).toBool(), true); - - // Request all parameters again and check the progress bar. The initial parameterdownload - // is so fast that I cannot connect to the loadprogress early enough. - QSignalSpy spyProgress(vehicle->parameterManager(), SIGNAL(loadProgressChanged(float))); - vehicle->parameterManager()->refreshAllParameters(); - spyParamsReady.wait(5000); - QVERIFY(spyProgress.count() > 1); - arguments = spyProgress.takeFirst(); - QCOMPARE(arguments.count(), 1); - QVERIFY(arguments.at(0).toFloat() > 0.0f); - // Progress should have been set back to 0 - arguments = spyProgress.takeLast(); - QCOMPARE(arguments.count(), 1); - QCOMPARE(arguments.at(0).toFloat(), 0.0f); -} - -void ParameterManagerTest::_FTPChangeParam() -{ - Q_ASSERT(!_mockLink); - _mockLink = MockLink::startAPMArduPlaneMockLink(false, MockConfiguration::FailParamNoReponseToRequestList); - _mockLink->mockLinkFTP()->enableBinParamFile(true); - MultiVehicleManager* vehicleMgr = qgcApp()->toolbox()->multiVehicleManager(); - QVERIFY(vehicleMgr); - - // Wait for the Vehicle to get created - QSignalSpy spyVehicle(vehicleMgr, SIGNAL(activeVehicleAvailableChanged(bool))); - // When param load is complete we get the param ready signal - QSignalSpy spyParamsReady(vehicleMgr, SIGNAL(parameterReadyVehicleAvailableChanged(bool))); - QCOMPARE(spyVehicle.wait(5000), true); - QCOMPARE(spyVehicle.count(), 1); - QList arguments = spyVehicle.takeFirst(); - QCOMPARE(arguments.count(), 1); - QCOMPARE(arguments.at(0).toBool(), true); - Vehicle* vehicle = vehicleMgr->activeVehicle(); - QVERIFY(vehicle); - - if (spyParamsReady.count() == 0) - spyParamsReady.wait(5000); - QCOMPARE(spyParamsReady.count(), 1); - arguments = spyParamsReady.takeFirst(); - QCOMPARE(arguments.count(), 1); - QCOMPARE(arguments.at(0).toBool(), true); - - // Now try to change a parameter and check the progress - QSignalSpy spyProgress(vehicle->parameterManager(), SIGNAL(loadProgressChanged(float))); - Fact* fact = vehicle->parameterManager()->getParameter(MAV_COMP_ID_AUTOPILOT1, "THR_MIN"); - QVERIFY(fact); - float value = fact->rawValue().toFloat(); - QCOMPARE(value, 0.0); - float testvalue = 0.87f; - QVariant sendv = testvalue; - fact->setRawValue(sendv); // This should trigger a parameter upload to the vehicle - /* That should set the progress to 0.5 and then back to 0 */ - spyProgress.wait(1000); - if (spyProgress.count() < 2) - spyProgress.wait(1000); - QCOMPARE(spyProgress.count(), 2); - arguments = spyProgress.takeFirst(); - QCOMPARE(arguments.count(), 1); - QVERIFY(arguments.at(0).toFloat() > 0.4f); - - // Progress should have been set back to 0 - Q_ASSERT(!spyProgress.empty()); - arguments = spyProgress.takeLast(); - QCOMPARE(arguments.count(), 1); - QCOMPARE(arguments.at(0).toFloat(), 0.0f); -} diff --git a/src/FactSystem/ParameterManagerTest.h b/src/FactSystem/ParameterManagerTest.h index 49b8608..1a388ff 100644 --- a/src/FactSystem/ParameterManagerTest.h +++ b/src/FactSystem/ParameterManagerTest.h @@ -25,9 +25,6 @@ private slots: void _requestListNoResponse(void); void _requestListMissingParamSuccess(void); void _requestListMissingParamFail(void); - void _FTPnoFailure(void); - void _FTPChangeParam(void); - private: void _noFailureWorker(MockConfiguration::FailureMode_t failureMode); diff --git a/src/FirmwarePlugin/APM/APMFirmwarePlugin.cc b/src/FirmwarePlugin/APM/APMFirmwarePlugin.cc index 4e0fdef..b1af785 100644 --- a/src/FirmwarePlugin/APM/APMFirmwarePlugin.cc +++ b/src/FirmwarePlugin/APM/APMFirmwarePlugin.cc @@ -77,7 +77,7 @@ AutoPilotPlugin* APMFirmwarePlugin::autopilotPlugin(Vehicle* vehicle) bool APMFirmwarePlugin::isCapable(const Vehicle* vehicle, FirmwareCapabilities capabilities) { - uint32_t available = SetFlightModeCapability | PauseVehicleCapability | GuidedModeCapability | ROIModeCapability; + uint32_t available = SetFlightModeCapability | PauseVehicleCapability | GuidedModeCapability; if (vehicle->multiRotor()) { available |= TakeoffVehicleCapability; } else if (vehicle->vtol()) { @@ -471,12 +471,12 @@ void APMFirmwarePlugin::initializeVehicle(Vehicle* vehicle) case MAV_TYPE_HELICOPTER: vehicle->setFirmwareVersion(3, 6, 0); break; - case MAV_TYPE_VTOL_TAILSITTER_DUOROTOR: - case MAV_TYPE_VTOL_TAILSITTER_QUADROTOR: + case MAV_TYPE_VTOL_DUOROTOR: + case MAV_TYPE_VTOL_QUADROTOR: case MAV_TYPE_VTOL_TILTROTOR: - case MAV_TYPE_VTOL_FIXEDROTOR: - case MAV_TYPE_VTOL_TAILSITTER: - case MAV_TYPE_VTOL_TILTWING: + case MAV_TYPE_VTOL_RESERVED2: + case MAV_TYPE_VTOL_RESERVED3: + case MAV_TYPE_VTOL_RESERVED4: case MAV_TYPE_VTOL_RESERVED5: case MAV_TYPE_FIXED_WING: vehicle->setFirmwareVersion(3, 9, 0); @@ -630,26 +630,6 @@ QString APMFirmwarePlugin::getHobbsMeter(Vehicle* vehicle) return timeStr; } -bool APMFirmwarePlugin::hasGripper(const Vehicle* vehicle) const -{ - if(vehicle->parameterManager()->parameterExists(FactSystem::defaultComponentId, "GRIP_ENABLE")) { - bool _hasGripper = (vehicle->parameterManager()->getParameter(FactSystem::defaultComponentId, QStringLiteral("GRIP_ENABLE"))->rawValue().toInt()) == 1 ? true : false; - return _hasGripper; - } - return false; -} - -const QVariantList& APMFirmwarePlugin::toolIndicators(const Vehicle* vehicle) -{ - if (_toolIndicatorList.size() == 0) { - // First call the base class to get the standard QGC list - _toolIndicatorList = FirmwarePlugin::toolIndicators(vehicle); - // Then add the forwarding support indicator - _toolIndicatorList.append(QVariant::fromValue(QUrl::fromUserInput("qrc:/toolbar/APMSupportForwardingIndicator.qml"))); - } - return _toolIndicatorList; -} - bool APMFirmwarePlugin::isGuidedMode(const Vehicle* vehicle) const { return vehicle->flightMode() == "Guided"; @@ -677,9 +657,6 @@ QString APMFirmwarePlugin::_internalParameterMetaDataFile(Vehicle* vehicle) case MAV_TYPE_TRICOPTER: case MAV_TYPE_COAXIAL: case MAV_TYPE_HELICOPTER: - if (vehicle->versionCompare(4, 2, 0) >= 0) { - return QStringLiteral(":/FirmwarePlugin/APM/APMParameterFactMetaData.Copter.4.2.xml"); - } if (vehicle->versionCompare(4, 1, 0) >= 0) { return QStringLiteral(":/FirmwarePlugin/APM/APMParameterFactMetaData.Copter.4.1.xml"); } @@ -694,17 +671,14 @@ QString APMFirmwarePlugin::_internalParameterMetaDataFile(Vehicle* vehicle) } return QStringLiteral(":/FirmwarePlugin/APM/APMParameterFactMetaData.Copter.3.5.xml"); - case MAV_TYPE_VTOL_TAILSITTER_DUOROTOR: - case MAV_TYPE_VTOL_TAILSITTER_QUADROTOR: + case MAV_TYPE_VTOL_DUOROTOR: + case MAV_TYPE_VTOL_QUADROTOR: case MAV_TYPE_VTOL_TILTROTOR: - case MAV_TYPE_VTOL_FIXEDROTOR: - case MAV_TYPE_VTOL_TAILSITTER: - case MAV_TYPE_VTOL_TILTWING: + case MAV_TYPE_VTOL_RESERVED2: + case MAV_TYPE_VTOL_RESERVED3: + case MAV_TYPE_VTOL_RESERVED4: case MAV_TYPE_VTOL_RESERVED5: case MAV_TYPE_FIXED_WING: - if (vehicle->versionCompare(4, 2, 0) >= 0) { - return QStringLiteral(":/FirmwarePlugin/APM/APMParameterFactMetaData.Plane.4.2.xml"); - } if (vehicle->versionCompare(4, 1, 0) >= 0) { return QStringLiteral(":/FirmwarePlugin/APM/APMParameterFactMetaData.Plane.4.1.xml"); } @@ -721,9 +695,6 @@ QString APMFirmwarePlugin::_internalParameterMetaDataFile(Vehicle* vehicle) case MAV_TYPE_GROUND_ROVER: case MAV_TYPE_SURFACE_BOAT: - if (vehicle->versionCompare(4, 2, 0) >= 0) { - return QStringLiteral(":/FirmwarePlugin/APM/APMParameterFactMetaData.Rover.4.2.xml"); - } if (vehicle->versionCompare(4, 1, 0) >= 0) { return QStringLiteral(":/FirmwarePlugin/APM/APMParameterFactMetaData.Rover.4.1.xml"); } @@ -773,29 +744,6 @@ void APMFirmwarePlugin::pauseVehicle(Vehicle* vehicle) _setFlightModeAndValidate(vehicle, pauseFlightMode()); } -typedef struct { - Vehicle* vehicle; -} MAV_CMD_DO_REPOSITION_HandlerData_t; - -static void _MAV_CMD_DO_REPOSITION_ResultHandler(void* resultHandlerData, int /*compId*/, const mavlink_command_ack_t& ack, Vehicle::MavCmdResultFailureCode_t /*failureCode*/) -{ - auto* data = (MAV_CMD_DO_REPOSITION_HandlerData_t*)resultHandlerData; - auto* vehicle = data->vehicle; - auto* instanceData = qobject_cast(vehicle->firmwarePluginInstanceData()); - - if (instanceData->MAV_CMD_DO_REPOSITION_supported || - instanceData->MAV_CMD_DO_REPOSITION_unsupported) { - // we never change out minds once set - goto out; - } - - instanceData->MAV_CMD_DO_REPOSITION_supported = (ack.result == MAV_RESULT_ACCEPTED); - instanceData->MAV_CMD_DO_REPOSITION_unsupported = (ack.result == MAV_RESULT_UNSUPPORTED); - -out: - delete data; -} - void APMFirmwarePlugin::guidedModeGotoLocation(Vehicle* vehicle, const QGeoCoordinate& gotoCoord) { if (qIsNaN(vehicle->altitudeRelative()->rawValue().toDouble())) { @@ -803,43 +751,6 @@ void APMFirmwarePlugin::guidedModeGotoLocation(Vehicle* vehicle, const QGeoCoord return; } - // attempt to use MAV_CMD_DO_REPOSITION to move vehicle. If that - // comes back as unsupported, try using the old system of sending - // through mission items with custom "current" field values. - auto* instanceData = qobject_cast(vehicle->firmwarePluginInstanceData()); - - // if we know it is supported or we don't know for sure it is - // unsupported then send the command: - if (instanceData) { - if (instanceData->MAV_CMD_DO_REPOSITION_supported || - !instanceData->MAV_CMD_DO_REPOSITION_unsupported) { - auto* result_handler_data = new MAV_CMD_DO_REPOSITION_HandlerData_t{ - vehicle - }; - - Vehicle::MavCmdAckHandlerInfo_t handlerInfo = {}; - handlerInfo.resultHandler = _MAV_CMD_DO_REPOSITION_ResultHandler; - handlerInfo.resultHandlerData = result_handler_data; - - vehicle->sendMavCommandIntWithHandler( - &handlerInfo, - vehicle->defaultComponentId(), - MAV_CMD_DO_REPOSITION, - MAV_FRAME_GLOBAL, - -1.0f, - MAV_DO_REPOSITION_FLAGS_CHANGE_MODE, - 0.0f, - NAN, - gotoCoord.latitude(), - gotoCoord.longitude(), - vehicle->altitudeAMSL()->rawValue().toFloat() - ); - } - if (instanceData->MAV_CMD_DO_REPOSITION_supported) { - // no need to fall back - return; - } - } setGuidedMode(vehicle, true); @@ -970,18 +881,9 @@ void APMFirmwarePlugin::startMission(Vehicle* vehicle) if (!vehicle->armed()) { // First switch to flight mode we can arm from - // In Ardupilot for vtols and airplanes we need to set the mode to auto and then arm, otherwise if arming in guided - // If the vehicle has tilt rotors, it will arm them in forward flight position, being dangerous. - if (vehicle->fixedWing()) { - if (!_setFlightModeAndValidate(vehicle, "Auto")) { - qgcApp()->showAppMessage(tr("Unable to start mission: Vehicle failed to change to Auto mode.")); - return; - } - } else { - if (!_setFlightModeAndValidate(vehicle, "Guided")) { - qgcApp()->showAppMessage(tr("Unable to start mission: Vehicle failed to change to Guided mode.")); - return; - } + if (!_setFlightModeAndValidate(vehicle, "Guided")) { + qgcApp()->showAppMessage(tr("Unable to start mission: Vehicle failed to change to Guided mode.")); + return; } if (!_armVehicleAndValidate(vehicle)) { @@ -990,8 +892,12 @@ void APMFirmwarePlugin::startMission(Vehicle* vehicle) } } - // For non aircraft vehicles, we would be in guided mode, so we need to send the mission start command - if (!vehicle->fixedWing()) { + if (vehicle->fixedWing()) { + if (!_setFlightModeAndValidate(vehicle, "Auto")) { + qgcApp()->showAppMessage(tr("Unable to start mission: Vehicle failed to change to Auto mode.")); + return; + } + } else { vehicle->sendMavCommand(vehicle->defaultComponentId(), MAV_CMD_MISSION_START, true /*show error */); } } @@ -1025,10 +931,9 @@ void APMFirmwarePlugin::_handleRCChannels(Vehicle* vehicle, mavlink_message_t* m mavlink_rc_channels_t channels; mavlink_msg_rc_channels_decode(message, &channels); - //-- Ardupilot uses 0-254 to indicate 0-100% where QGC expects 0-100 - // As per mavlink specs, 255 means invalid, we must leave it like that for indicators to hide if no rssi data - if(channels.rssi && channels.rssi != 255) { - channels.rssi = static_cast(static_cast(channels.rssi) / 254.0 * 100.0); + //-- Ardupilot uses 0-255 to indicate 0-100% where QGC expects 0-100 + if(channels.rssi) { + channels.rssi = static_cast(static_cast(channels.rssi) / 255.0 * 100.0); } MAVLinkProtocol* mavlink = qgcApp()->toolbox()->mavlinkProtocol(); mavlink_msg_rc_channels_encode_chan( @@ -1133,45 +1038,3 @@ QMutex& APMFirmwarePlugin::_reencodeMavlinkChannelMutex() static QMutex _mutex{}; return _mutex; } - -double APMFirmwarePlugin::maximumEquivalentAirspeed(Vehicle* vehicle) -{ - QString airspeedMax("ARSPD_FBW_MAX"); - - if (vehicle->parameterManager()->parameterExists(FactSystem::defaultComponentId, airspeedMax)) { - return vehicle->parameterManager()->getParameter(FactSystem::defaultComponentId, airspeedMax)->rawValue().toDouble(); - } - - return FirmwarePlugin::maximumEquivalentAirspeed(vehicle); -} - -double APMFirmwarePlugin::minimumEquivalentAirspeed(Vehicle* vehicle) -{ - QString airspeedMin("ARSPD_FBW_MIN"); - - if (vehicle->parameterManager()->parameterExists(FactSystem::defaultComponentId, airspeedMin)) { - return vehicle->parameterManager()->getParameter(FactSystem::defaultComponentId, airspeedMin)->rawValue().toDouble(); - } - - return FirmwarePlugin::minimumEquivalentAirspeed(vehicle); -} - -bool APMFirmwarePlugin::fixedWingAirSpeedLimitsAvailable(Vehicle* vehicle) -{ - return vehicle->parameterManager()->parameterExists(FactSystem::defaultComponentId, "ARSPD_FBW_MIN") && - vehicle->parameterManager()->parameterExists(FactSystem::defaultComponentId, "ARSPD_FBW_MAX"); -} - -void APMFirmwarePlugin::guidedModeChangeEquivalentAirspeedMetersSecond(Vehicle* vehicle, double airspeed_equiv) -{ - - vehicle->sendMavCommand( - vehicle->defaultComponentId(), - MAV_CMD_DO_CHANGE_SPEED, - true, // show error is fails - 0, // 0: airspeed, 1: groundspeed - static_cast(airspeed_equiv), // speed setpoint - -1, // throttle, no change - 0 // 0: absolute speed, 1: relative to current - ); // param 5-7 unused -} \ No newline at end of file diff --git a/src/FirmwarePlugin/APM/APMFirmwarePlugin.h b/src/FirmwarePlugin/APM/APMFirmwarePlugin.h index 1530de1..5afabd8 100644 --- a/src/FirmwarePlugin/APM/APMFirmwarePlugin.h +++ b/src/FirmwarePlugin/APM/APMFirmwarePlugin.h @@ -56,7 +56,6 @@ public: QStringList flightModes (Vehicle* vehicle) override; QString flightMode (uint8_t base_mode, uint32_t custom_mode) const override; bool setFlightMode (const QString& flightMode, uint8_t* base_mode, uint32_t* custom_mode) override; - bool MAV_CMD_DO_SET_MODE_is_supported() const override { return true; } bool isGuidedMode (const Vehicle* vehicle) const override; QString gotoFlightMode (void) const override { return QStringLiteral("Guided"); } QString rtlFlightMode (void) const override { return QString("RTL"); } @@ -78,12 +77,6 @@ public: QString brandImageIndoor (const Vehicle* vehicle) const override { Q_UNUSED(vehicle); return QStringLiteral("/qmlimages/APM/BrandImage"); } QString brandImageOutdoor (const Vehicle* vehicle) const override { Q_UNUSED(vehicle); return QStringLiteral("/qmlimages/APM/BrandImage"); } QString getHobbsMeter (Vehicle* vehicle) override; - bool hasGripper (const Vehicle* vehicle) const override; - const QVariantList& toolIndicators (const Vehicle* vehicle) override; - double maximumEquivalentAirspeed (Vehicle* vehicle) override; - double minimumEquivalentAirspeed (Vehicle* vehicle) override; - bool fixedWingAirSpeedLimitsAvailable(Vehicle* vehicle) override; - void guidedModeChangeEquivalentAirspeedMetersSecond(Vehicle* vehicle, double airspeed_equiv) override; protected: /// All access to singleton is through stack specific implementation @@ -115,7 +108,6 @@ private: // Any instance data here must be global to all vehicles // Vehicle specific data should go into APMFirmwarePluginInstanceData - QVariantList _toolIndicatorList; QList _supportedModes; QMap> _ardupilotComponentMap; @@ -141,7 +133,4 @@ public: QTime lastBatteryStatusTime; QTime lastHomePositionTime; - - bool MAV_CMD_DO_REPOSITION_supported = false; - bool MAV_CMD_DO_REPOSITION_unsupported = false; }; diff --git a/src/FirmwarePlugin/APM/APMFirmwarePluginFactory.cc b/src/FirmwarePlugin/APM/APMFirmwarePluginFactory.cc index d6b9f1f..c2338c1 100644 --- a/src/FirmwarePlugin/APM/APMFirmwarePluginFactory.cc +++ b/src/FirmwarePlugin/APM/APMFirmwarePluginFactory.cc @@ -46,12 +46,12 @@ FirmwarePlugin* APMFirmwarePluginFactory::firmwarePluginForAutopilot(MAV_AUTOPIL _arduCopterPluginInstance = new ArduCopterFirmwarePlugin; } return _arduCopterPluginInstance; - case MAV_TYPE_VTOL_TAILSITTER_DUOROTOR: - case MAV_TYPE_VTOL_TAILSITTER_QUADROTOR: + case MAV_TYPE_VTOL_DUOROTOR: + case MAV_TYPE_VTOL_QUADROTOR: case MAV_TYPE_VTOL_TILTROTOR: - case MAV_TYPE_VTOL_FIXEDROTOR: - case MAV_TYPE_VTOL_TAILSITTER: - case MAV_TYPE_VTOL_TILTWING: + case MAV_TYPE_VTOL_RESERVED2: + case MAV_TYPE_VTOL_RESERVED3: + case MAV_TYPE_VTOL_RESERVED4: case MAV_TYPE_VTOL_RESERVED5: case MAV_TYPE_FIXED_WING: if (!_arduPlanePluginInstance) { diff --git a/src/FirmwarePlugin/APM/APMParameterFactMetaData.Copter.3.5.xml b/src/FirmwarePlugin/APM/APMParameterFactMetaData.Copter.3.5.xml new file mode 100644 index 0000000..e3b7002 --- /dev/null +++ b/src/FirmwarePlugin/APM/APMParameterFactMetaData.Copter.3.5.xml @@ -0,0 +1,11623 @@ + + + + + + +-100 0 + + +True + + +True + +ArduPlane +AntennaTracker +Copter +Rover +ArduSub + + + +1 255 + + + +Mission Planner and DroidPlanner + AP Planner 2 + + + +0 10 +.5 +Hz + + +0:Roll,1:Pitch,2:Yaw + +None +Roll +Pitch +Yaw + + + +0.01 2.0 +0.01 + + + +Disabled +Warn only +Disarm +Enter surface mode + + + +0.1 +Volts + + +50 +mAh + + + +Disabled +Warn only +Disarm +Enter depth hold mode +Enter surface mode + + + + +Disabled +Warn only +Enter surface mode + + + + +Disabled +Warn only + + + + +Disabled +Warn only + + + +Pascal + + +Degrees Centigrade + + + +Disarm +Hold Position +Surface + + + + +Disabled +Warn Only +Disarm + + + +10 90 + + + +Disabled +Enabled + + + + +Never change yaw +Face next waypoint +Face next waypoint except RTL +Face along GPS course + + + +50 500 +10 +Centimeters/Second + + +50 500 +10 +cm/s/s + + +0 300 +1 +pwm + + +0:ATTITUDE_FAST,1:ATTITUDE_MED,2:GPS,3:PM,4:CTUN,5:NTUN,6:RCIN,7:IMU,8:CMD,9:CURRENT,10:RCOUT,11:OPTFLOW,12:PID,13:COMPASS,14:INAV,15:CAMERA,17:MOTBATT,18:IMU_FAST,19:IMU_RAW + +Default +Default+RCIN +Default+IMU +Default+Motors +NearlyAll-AC315 +NearlyAll +All+FastATT +All+MotBatt +All+FastIMU +All+FastIMU+PID +All+FullIMU +Disabled + + + +1000 8000 +Centi-degrees + + +0 100 + +Very Soft +Soft +Medium +Crisp +Very Crisp + +10 + + + +Disabled + + + +0.6:Strict, 0.8:Default, 1.0:Relaxed + + + +Disabled +Warn only +Disarm + + + +0.1 1.0 + + +0.2 1.0 + + +0.1 0.8 + + +1 10 + + +30 400 + + +30 400 + + +0.5 4.0 + + +1000 2000 + + + +BlueROV1 +Vectored +Vectored_6DOF +Vectored_6DOF_90 +SimpleROV-3 +SimpleROV-4 +SimpleROV-5 +Custom + +True + + +50 490 +1 +Hz + + +1 10 + + +1 10 + + +0 3 +0.1 + + +0 3 +0.1 + + + +Disabled +Leveling +Leveling and Limited + + + + +Disabled +Very Low +Low +Medium +High +Very High + + + +0.1 6.0 +0.1 + + +0.02 1.00 +0.01 + + +0 4500 +10 +cm/s/s + + +0 4500 +10 +cm/s/s + + +1.000 8.000 + + +0.500 1.500 +0.05 + + +0.000 3.000 + + +0 1000 +Percent*10 + + +0.000 0.400 + + +1.000 100.000 +Hz + + +1.000 3.000 + + +0.500 2.000 + + + +Do Not Use in RTL and SURFACE +Use in RTL and SURFACE + + + + + + + +True + + +1 255 + + +1 255 + + + +Disabled +Enabled + + + +1 10 +1 + + +0 30 +1 +seconds + + +0:Roll,1:Pitch,2:Yaw,3:Steering,4:Landing + + +0 1 +0.01 + + +0 5 +0.01 + + +0 15 +0.1 +Degrees + + +0 1000 +1 +meters + + +0 100 +1 +meters + + + +Disabled +FBWMixing +DirectMixing + + + + +Disabled +Enabled + + + +0 30 +0.1 +m/s + + +0 30 +0.1 +m/s/s + + +0 127 +1 +0.1 seconds + + +-100 100 +1 +Percent + + +0 30 +0.1 +m/s + + +0 30 +0.1 +m/s + + +0 127 +1 +percent + + +0 10 +0.5 +seconds + + +0 100 +Percent + + + + +0 45 +1 +degrees + + +0:AUTO_ALWAYS,1:AUTO_LAND,2:AUTO_LOITER_TO_ALT,3:AUTO_LOITER_ALL,4:AUTO_WAYPOINTS,5:LOITER,6:RTL,7:CIRCLE,8:CRUISE,9:FBWB,10:GUIDED + + + +Default +L1Controller + + + + +Automatic + + + +-32767 32767 +1 +Meters + + +1 32767 +1 +Meters + + +0 32767 +1 +Meters + + +-32767 32767 +1 +Meters + + +-32767 32767 +1 +Meters + + + +None +GuidedMode +ReportOnly +GuidedModeThrPass +RTL_Mode + + + + + + + +0 32767 +1 +meters + + +0 32767 +1 +meters + + +0 32767 +1 +meters + + + +NoAutoEnable +AutoEnable +AutoEnableDisableFloorOnly + + + + +FenceReturnPoint +NearestRallyPoint + + + + +Disabled +Enabled + + + +5 100 +1 +m/s + + +5 100 +1 +m/s + + + +Disabled +Enabled + + + + +Disabled +Enabled + + + +0 10000 +meters + + +1 10 +0.1 +m/s + + +-100 100 +1 +Percent + + +0 100 +1 +Percent + + +0 100 +1 +Percent + + +0 127 +1 +Percent + + +0 100 +1 +Percent + + + +Disabled +Enabled + + + + +Disabled +Enabled + + + + +Disabled +Enabled + + + +925 2200 +1 + + +0 100 +1 +Percent + + + +Disabled +Enabled + + + + +CIRCLE/no change(if already in AUTO|GUIDED|LOITER) +CIRCLE +FBWA + + + +1 100 +0.5 +seconds + + + +Continue +ReturnToLaunch +Glide +Deploy Parachute + + + +1 300 +0.5 +seconds + + +0.1 +Volts + + +50 +mAh + + + +Disabled +Heartbeat +HeartbeatAndREMRSSI +HeartbeatAndAUTO + + + + + + +Manual +CIRCLE +STABILIZE +TRAINING +ACRO +FBWA +FBWB +CRUISE +AUTOTUNE +Auto +RTL +Loiter +AVOID_ADSB +Guided +QSTABILIZE +QHOVER +QLOITER +QLAND +QRTL + + + + +Manual +CIRCLE +STABILIZE +TRAINING +ACRO +FBWA +FBWB +CRUISE +AUTOTUNE +Auto +RTL +Loiter +AVOID_ADSB +Guided +QSTABILIZE +QHOVER +QLOITER +QLAND +QRTL + + + + +Manual +CIRCLE +STABILIZE +TRAINING +ACRO +FBWA +FBWB +CRUISE +AUTOTUNE +Auto +RTL +Loiter +AVOID_ADSB +Guided +QSTABILIZE +QHOVER +QLOITER +QLAND +QRTL + + + + +Manual +CIRCLE +STABILIZE +TRAINING +ACRO +FBWA +FBWB +CRUISE +AUTOTUNE +Auto +RTL +Loiter +AVOID_ADSB +Guided +QSTABILIZE +QHOVER +QLOITER +QLAND +QRTL + + + + +Manual +CIRCLE +STABILIZE +TRAINING +ACRO +FBWA +FBWB +CRUISE +AUTOTUNE +Auto +RTL +Loiter +AVOID_ADSB +Guided +QSTABILIZE +QHOVER +QLOITER +QLAND +QRTL + + + + +Manual +CIRCLE +STABILIZE +TRAINING +ACRO +FBWA +FBWB +CRUISE +AUTOTUNE +Auto +RTL +Loiter +AVOID_ADSB +Guided +QSTABILIZE +QHOVER +QLOITER +QLAND +QRTL + + + + +Manual +CIRCLE +STABILIZE +TRAINING +ACRO +FBWA +FBWB +CRUISE +AUTOTUNE +Auto +RTL +Loiter +AVOID_ADSB +Guided +QSTABILIZE +QHOVER +QLOITER +QLAND +QRTL + + + +0 9000 +1 +centi-Degrees + + +0 9000 +1 +centi-Degrees + + +-9000 0 +1 +centi-Degrees + + +10 500 +1 +degrees/second + + +10 500 +1 +degrees/second + + + +Disabled +Enabled + + + +-100 100 +0.1 +Meters + + +10 360 +1 +degrees/second + + + +Disabled +Enabled + + + + +Disabled +Enabled + + + + +Disabled +Enabled + + + + +Disabled +Enabled + + + + +Disabled +Enabled + + + + +Disabled +UpUp +UpDown +DownUp +DownDown +UpUpSwap +UpDownSwap +DownUpSwap +DownDownSwap + + + + +Disabled +UpUp +UpDown +DownUp +DownDown +UpUpSwap +UpDownSwap +DownUpSwap +DownDownSwap + + + +0.5 1.2 + + + +Disabled +Enabled + + + +-1000 1000 +percent + + +-1000 1000 +percent + + + + +0:ATTITUDE_FAST,1:ATTITUDE_MED,2:GPS,3:PM,4:CTUN,5:NTUN,6:MODE,7:IMU,8:CMD,9:CURRENT,10:COMPASS,11:TECS,12:CAMERA,13:RC,14:SONAR,15:ARM/DISARM,19:IMU_RAW + +Disabled +PX4/Pixhawk-Default + + + + + + + +cm/s + + +m/s + + +cm/s + + +centi-Degrees + + +centimeters + + +centimeters + + + +Disabled +Enabled + + + + + + +Disabled +UpUp +UpDown +DownUp +DownDown +UpUpSwap +UpDownSwap +DownUpSwap +DownDownSwap + + + +0 100 +Percent + + +0 100 +1 +m/s + + +0 100 +Percent + + +0 100 +1 +m/s + + + + + + + +Disabled +Channel1 +Channel2 +Channel3 +Channel4 +Channel5 +Channel6 +Channel7 +Channel8 + + + + +Disabled +Enabled + + + + +Disabled +Enabled + + + +0 90 +0.1 +degrees + + + +Disable +Enable - go HOME then land +Enable - go directly to landing sequence + + + + +Disable +Enable + + + +10 127 +m/s/s + + +0:Disarm + + + + + +Disabled +Enabled + + + + +NotEnforced +Enforced + + + +0 100 +1 +Percent + + + + +True + + +True + +ArduPlane +AntennaTracker +Copter +Rover + + + +1 255 + + + +Mission Planner and DroidPlanner + AP Planner 2 + + + + +Disabled +Enabled + + + +0 10 +.5 +Hz + + +0.0 1000.0 +10 +Centimeters + + +0 500 +10 + + +0:Feedback from mid stick,1:High throttle cancels landing,2:Disarm on land detection + +None +Feedback from mid stick +High throttle cancels landing +Disarm on land detection + + + +0 30 +1 +seconds + + +0:Roll,1:Pitch,2:Yaw + +None +Roll +Pitch +Yaw + + + +0 8000 +1 +Centimeters + + +0.5 10.0 + +Disabled +Shallow +Steep + +.1 + + +0 2000 +50 +cm/s + + +0.01 2.0 +0.01 + + + +Disabled +Land +RTL + + + +0.1 +Volts + + +50 +mAh + + + +Disabled +Enabled always RTL +Enabled Continue with Mission in Auto Mode + + + +100 900 + + + +Disabled +Enabled + + + + +Disabled +Mode1 +Mode2 +Mode1+2 +Mode3 +Mode1+3 +Mode2+3 +Mode1+2+3 +Mode4 +Mode1+4 +Mode2+4 +Mode1+2+4 +Mode3+4 +Mode1+3+4 +Mode2+3+4 +Mode1+2+3+4 +Mode5 +Mode1+5 +Mode2+5 +Mode1+2+5 +Mode3+5 +Mode1+3+5 +Mode2+3+5 +Mode1+2+3+5 +Mode4+5 +Mode1+4+5 +Mode2+4+5 +Mode1+2+4+5 +Mode3+4+5 +Mode1+3+4+5 +Mode2+3+4+5 +Mode1+2+3+4+5 +Mode6 +Mode1+6 +Mode2+6 +Mode1+2+6 +Mode3+6 +Mode1+3+6 +Mode2+3+6 +Mode1+2+3+6 +Mode4+6 +Mode1+4+6 +Mode2+4+6 +Mode1+2+4+6 +Mode3+4+6 +Mode1+3+4+6 +Mode2+3+4+6 +Mode1+2+3+4+6 +Mode5+6 +Mode1+5+6 +Mode2+5+6 +Mode1+2+5+6 +Mode3+5+6 +Mode1+3+5+6 +Mode2+3+5+6 +Mode1+2+3+5+6 +Mode4+5+6 +Mode1+4+5+6 +Mode2+4+5+6 +Mode1+2+4+5+6 +Mode3+4+5+6 +Mode1+3+4+5+6 +Mode2+3+4+5+6 +Mode1+2+3+4+5+6 + + + +-1 1000 +1 +Centimeters + + +0 3000 +10 +Centimeters + + + +Never change yaw +Face next waypoint +Face next waypoint except RTL +Face along GPS course + + + +0 60000 +1000 +ms + + +30 200 +10 +cm/s + + +0 500 +10 +cm/s + + +50 500 +10 +Centimeters/Second + + +50 500 +10 +cm/s/s + + + +Disabled +Enabled always RTL +Enabled Continue with Mission in Auto Mode +Enabled always LAND + + + +925 1100 +1 +pwm + + +0 300 +1 +pwm + + + +Stabilize +Acro +AltHold +Auto +Guided +Loiter +RTL +Circle +Land +Drift +Sport +Flip +AutoTune +PosHold +Brake +Throw +Avoid_ADSB +Guided_NoGPS +SmartRTL + + + + +Stabilize +Acro +AltHold +Auto +Guided +Loiter +RTL +Circle +Land +Drift +Sport +Flip +AutoTune +PosHold +Brake +Throw +Avoid_ADSB +Guided_NoGPS +SmartRTL + + + + +Stabilize +Acro +AltHold +Auto +Guided +Loiter +RTL +Circle +Land +Drift +Sport +Flip +AutoTune +PosHold +Brake +Throw +Avoid_ADSB +Guided_NoGPS +SmartRTL + + + + +Stabilize +Acro +AltHold +Auto +Guided +Loiter +RTL +Circle +Land +Drift +Sport +Flip +AutoTune +PosHold +Brake +Throw +Avoid_ADSB +Guided_NoGPS +SmartRTL + + + + +Stabilize +Acro +AltHold +Auto +Guided +Loiter +RTL +Circle +Land +Drift +Sport +Flip +AutoTune +PosHold +Brake +Throw +Avoid_ADSB +Guided_NoGPS +SmartRTL + + + + +Stabilize +Acro +AltHold +Auto +Guided +Loiter +RTL +Circle +Land +Drift +Sport +Flip +AutoTune +PosHold +Brake +Throw +Avoid_ADSB +Guided_NoGPS +SmartRTL + + + + + +0:ATTITUDE_FAST,1:ATTITUDE_MED,2:GPS,3:PM,4:CTUN,5:NTUN,6:RCIN,7:IMU,8:CMD,9:CURRENT,10:RCOUT,11:OPTFLOW,12:PID,13:COMPASS,14:INAV,15:CAMERA,17:MOTBATT,18:IMU_FAST,19:IMU_RAW + +Default +Default+RCIN +Default+IMU +Default+Motors +NearlyAll-AC315 +NearlyAll +All+FastATT +All+MotBatt +All+FastIMU +All+FastIMU+PID +All+FullIMU +Disabled + + + + +Normal Start-up +Start-up in ESC Calibration mode if throttle high +Start-up in ESC Calibration mode regardless of throttle +Start-up and automatically calibrate ESCs +Disabled + + + + +None +Stab Roll/Pitch kP +Rate Roll/Pitch kP +Rate Roll/Pitch kI +Rate Roll/Pitch kD +Stab Yaw kP +Rate Yaw kP +Rate Yaw kD +Rate Yaw Filter +Motor Yaw Headroom +AltHold kP +Throttle Rate kP +Throttle Accel kP +Throttle Accel kI +Throttle Accel kD +Loiter Pos kP +Velocity XY kP +Velocity XY kI +WP Speed +Acro RollPitch kP +Acro Yaw kP +RC Feel +Heli Ext Gyro +Declination +Circle Rate +RangeFinder Gain +Rate Pitch kP +Rate Pitch kI +Rate Pitch kD +Rate Roll kP +Rate Roll kI +Rate Roll kD +Rate Pitch FF +Rate Roll FF +Rate Yaw FF + + + +0 32767 + + +0 32767 + + + +Plus +X +V +H +V-Tail +A-Tail +Y6B + + + + +Do Nothing +Flip +Simple Mode +RTL +Save Trim +Save WP +Camera Trigger +RangeFinder +Fence +Super Simple Mode +Acro Trainer +Sprayer +Auto +AutoTune +Land +Gripper +Parachute Enable +Parachute Release +Parachute 3pos +Auto Mission Reset +AttCon Feed Forward +AttCon Accel Limits +Retract Mount +Relay On/Off +Relay2 On/Off +Relay3 On/Off +Relay4 On/Off +Landing Gear +Lost Copter Sound +Motor Emergency Stop +Motor Interlock +Brake +Throw +ADSB-Avoidance +PrecLoiter +Object Avoidance +ArmDisarm + + + + +Do Nothing +Flip +Simple Mode +RTL +Save Trim +Save WP +Camera Trigger +RangeFinder +Fence +Super Simple Mode +Acro Trainer +Sprayer +Auto +AutoTune +Land +Gripper +Parachute Enable +Parachute Release +Parachute 3pos +Auto Mission Reset +AttCon Feed Forward +AttCon Accel Limits +Retract Mount +Relay On/Off +Relay2 On/Off +Relay3 On/Off +Relay4 On/Off +Landing Gear +Lost Copter Sound +Motor Emergency Stop +Motor Interlock +Brake +Throw +ADSB-Avoidance +PrecLoiter +Object Avoidance +ArmDisarm + + + + +Do Nothing +Flip +Simple Mode +RTL +Save Trim +Save WP +Camera Trigger +RangeFinder +Fence +Super Simple Mode +Acro Trainer +Sprayer +Auto +AutoTune +Land +Gripper +Parachute Enable +Parachute Release +Parachute 3pos +Auto Mission Reset +AttCon Feed Forward +AttCon Accel Limits +Retract Mount +Relay On/Off +Relay2 On/Off +Relay3 On/Off +Relay4 On/Off +Landing Gear +Lost Copter Sound +Motor Emergency Stop +Motor Interlock +Brake +Throw +ADSB-Avoidance +PrecLoiter +Object Avoidance +ArmDisarm + + + + +Do Nothing +Flip +Simple Mode +RTL +Save Trim +Save WP +Camera Trigger +RangeFinder +Fence +Super Simple Mode +Acro Trainer +Sprayer +Auto +AutoTune +Land +Gripper +Parachute Enable +Parachute Release +Parachute 3pos +Auto Mission Reset +AttCon Feed Forward +AttCon Accel Limits +Retract Mount +Relay On/Off +Relay2 On/Off +Relay3 On/Off +Relay4 On/Off +Landing Gear +Lost Copter Sound +Motor Emergency Stop +Motor Interlock +Brake +Throw +ADSB-Avoidance +PrecLoiter +Object Avoidance +ArmDisarm + + + + +Do Nothing +Flip +Simple Mode +RTL +Save Trim +Save WP +Camera Trigger +RangeFinder +Fence +Super Simple Mode +Acro Trainer +Sprayer +Auto +AutoTune +Land +Gripper +Parachute Enable +Parachute Release +Parachute 3pos +Auto Mission Reset +AttCon Feed Forward +AttCon Accel Limits +Retract Mount +Relay On/Off +Relay2 On/Off +Relay3 On/Off +Relay4 On/Off +Landing Gear +Lost Copter Sound +Motor Emergency Stop +Motor Interlock +Brake +Throw +ADSB-Avoidance +PrecLoiter +Object Avoidance +ArmDisarm + + + + +Do Nothing +Flip +Simple Mode +RTL +Save Trim +Save WP +Camera Trigger +RangeFinder +Fence +Super Simple Mode +Acro Trainer +Sprayer +Auto +AutoTune +Land +Gripper +Parachute Enable +Parachute Release +Parachute 3pos +Auto Mission Reset +AttCon Feed Forward +AttCon Accel Limits +Retract Mount +Relay On/Off +Relay2 On/Off +Relay3 On/Off +Relay4 On/Off +Landing Gear +Lost Copter Sound +Motor Emergency Stop +Motor Interlock +Brake +Throw +ADSB-Avoidance +PrecLoiter +Object Avoidance +ArmDisarm + + + +0 127 +Seconds + + +1000 8000 +Centi-degrees + + +0 100 + +Very Soft +Soft +Medium +Crisp +Very Crisp + +10 + + +4 12 +deg/sec + + +2000 4500 +Centi-degrees + + + +No repositioning +Repositioning + + + + +Land +AltHold +Land even in Stabilize + + + +0.6:Strict, 0.8:Default, 1.0:Relaxed + + + +Disabled +Enabled + + + +50 490 +1 +Hz + + +1 10 + + +1 10 + + +0 3 +0.1 + + +0 3 +0.1 + + + +Disabled +Leveling +Leveling and Limited + + + +-0.5 1.0 + +Disabled +Very Low +Low +Medium +High +Very High + + + +0.1 6.0 +0.1 + + +0.02 1.00 +0.01 + + +0 4500 +10 +cm/s/s + + +1.000 8.000 + + +0.500 1.500 +0.05 + + +0.000 3.000 + + +0 1000 +Percent*10 + + +0.000 0.400 + + +1.000 100.000 +Hz + + +1.000 3.000 + + +0.500 2.000 + + +0:Roll,1:Pitch,2:Yaw + +All +Roll Only +Pitch Only +Yaw Only +Roll and Pitch +Roll and Yaw +Pitch and Yaw + + + +0.05 0.10 + + +0.001 0.006 + + + +Stopped +Running + + + + +Do Not Use in RTL and Land +Use in RTL and Land + + + +0 5 + + + +Auto +Guided +RTL +Land +Brake +Throw + + + + +Upward Throw +Drop + + + + +Disabled +Enabled + + + +0:ADSBMavlinkProcessing + + +-0.5 1.0 + +Disabled +Very Low +Low +Medium +High +Very High + + + +0 1 + + + +NotEnforced +Enforced + + + + +Undefined +Quad +Hexa +Octa +OctaQuad +Y6 +Heli +Tri +SingleCopter +CoaxCopter + + + + + + + +True + +ArduPlane +AntennaTracker +Copter +Rover + + + +1 255 + + +1 255 + + +1 255 + + + +Disabled +Enabled + + + +0 20 +0.1 +seconds + + +0 20 +0.1 +seconds + + +0 100 +1 +degrees/second + + +0 20 +1 +seconds + + +-90 90 +0.000001 +degrees + + +-180 180 +0.000001 +degrees + + +0 10 +0.1 +seconds + + + +Position +OnOff +ContinuousRotation + + + + +Position +OnOff +ContinuousRotation + + + +0 50 +0.1 +degrees/second + + +0 50 +0.1 +degrees/second + + +0 2 +0.01 +seconds + + +0 2 +0.01 +seconds + + +-10 10 +0.1 +degrees + + +-10 10 +0.1 +degrees + + +0 360 +0.1 +degrees + + +0 100 +1 +meters + + + +Barometer +GPS +GPS vehicle only + + + +1 10 +1 +Hz + + +-90 0 +1 +Degrees + + +0 90 +1 +Degrees + + +0:ATTITUDE,1:GPS,2:RCIN,3:IMU,4:RCOUT,5:COMPASS + +Default +Disabled + + + +0.0 3.0 +0.01 + + +0.0 3.0 +0.01 + + +0 4000 +10 +Percent*10 + + +0.001 0.1 +0.001 + + +0.0 3.0 +0.01 + + +0.0 3.0 +0.01 + + +0 4000 +10 +Percent*10 + + +0.001 0.1 +0.001 + + +1 255 + + + + + + +True + + +0:ATTITUDE_FAST,1:ATTITUDE_MED,2:GPS,3:PM,4:CTUN,5:NTUN,6:MODE,7:IMU,8:CMD,9:CURRENT,10:COMPASS,11:TECS,12:CAMERA,13:RC,14:SONAR,15:ARM/DISARM,19:IMU_RAW + +Disabled +APM2-Default +PX4/Pixhawk-Default + + + + + + + + +MANUAL +LEARNING +STEERING +HOLD +AUTO +RTL +GUIDED + + + +1 255 + + +1 255 + + + +Disabled +Enabled + + + +0 30 +1 +seconds + + +0:Steering,1:Throttle + +None +Steering +Throttle + + + + +Disabled +Enabled + + + + +Disabled +APM TriggerPin0 +APM TriggerPin1 +APM TriggerPin2 +APM TriggerPin3 +APM TriggerPin4 +APM TriggerPin5 +APM TriggerPin6 +APM TriggerPin7 +APM TriggerPin8 +Pixhawk TriggerPin50 +Pixhawk TriggerPin51 +Pixhawk TriggerPin52 +Pixhawk TriggerPin53 +Pixhawk TriggerPin54 +Pixhawk TriggerPin55 + + + +0 20 +0.1 +m/s/s + + +0 100 +0.1 +m/s + + +0 100 +1 +percent + + +0 100 +0.1 +meters + + +0 100 +1 +percent + + +0 100 +1 +m/s + + +0 360 +1 +degrees + + + +Nothing +LearnWaypoint + + + +0 100 +1 +Percent + + +0 100 +1 +Percent + + +0 100 +1 +Percent + + +0 100 +1 +Percent + + + +Disabled +SkidSteeringOutput + + + + +Disabled +SkidSteeringInput + + + + +Nothing +RTL +HOLD + + + +seconds + + + +Disabled +Enabled + + + +925 1100 +1 + + + +Disabled +Enabled + + + + +Disabled +HOLD +HoldAndDisarm + + + +0 1000 +1 +centimeters + + +-45 45 +1 +centimeters + + +0 100 +0.1 +seconds + + +1 100 +1 + + + + + + + +Manual +LEARNING +STEERING +HOLD +Auto +RTL +Guided + + + + +Manual +LEARNING +STEERING +HOLD +Auto +RTL +Guided + + + + +Manual +LEARNING +STEERING +HOLD +Auto +RTL +Guided + + + + +Manual +LEARNING +STEERING +HOLD +Auto +RTL +Guided + + + + +Manual +LEARNING +STEERING +HOLD +Auto +RTL +Guided + + + + +Manual +LEARNING +STEERING +HOLD +Auto +RTL +Guided + + + +0 1000 +0.1 +meters + + +0.2 10 +0.1 +gravities + + + +NotEnforced +Enforced + + + + + + +Disabled +Enabled + + + +1 100 + + +1 100000 + + +-1 16777215 + + + +NoInfo +Light +Small +Large +HighVortexlarge +Heavy +HighlyManuv +Rotocraft +RESERVED +Glider +LightAir +Parachute +UltraLight +RESERVED +UAV +Space +RESERVED +EmergencySurface +ServiceSurface +PointObstacle + + + + +NO_DATA +L15W23 +L25W28P5 +L25W34 +L35W33 +L35W38 +L45W39P5 +L45W45 +L55W45 +L55W52 +L65W59P5 +L65W67 +L75W72P5 +L75W80 +L85W80 +L85W90 + + + + +NoData +Left2m +Left4m +Left6m +Center +Right2m +Right4m +Right6m + + + + +NO_DATA +AppliedBySensor + + + + +Disabled +Rx-Only +Tx-Only +Rx and Tx Enabled + + + + + + + + + + + + + + + + + + + + + +meters + + +meters + + +millibar + + + + + + + + + + + + + + +seconds + + + + +0.0 1.0 +.01 + + + +Disabled +Enabled + + + +0.1 0.4 +.01 + + +0.1 0.4 +.01 + + +0 127 +1 +m/s + + +-0.1745 +0.1745 +0.01 +Radians + + +-0.1745 +0.1745 +0.01 +Radians + + +-0.1745 +0.1745 +0.01 +Radians + + + +None +Yaw45 +Yaw90 +Yaw135 +Yaw180 +Yaw225 +Yaw270 +Yaw315 +Roll180 +Roll180Yaw45 +Roll180Yaw90 +Roll180Yaw135 +Pitch180 +Roll180Yaw225 +Roll180Yaw270 +Roll180Yaw315 +Roll90 +Roll90Yaw45 +Roll90Yaw90 +Roll90Yaw135 +Roll270 +Roll270Yaw45 +Roll270Yaw90 +Roll270Yaw136 +Pitch90 +Pitch270 +Pitch180Yaw90 +Pitch180Yaw270 +Roll90Pitch90 +Roll180Pitch90 +Roll270Pitch90 +Roll90Pitch180 +Roll270Pitch180 +Roll90Pitch270 +Roll180Pitch270 +Roll270Pitch270 +Roll90Pitch180Yaw90 +Roll90Yaw270 + + + +0.001 0.5 +.01 + + +0 10 +1 + + + +Disabled +Enable EKF2 +Enable EKF3 + + + + + + +Disabled +THR_MIN PWM when disarmed +0 PWM when disarmed + + + +0:All,1:Barometer,2:Compass,3:GPS lock,4:INS,5:Parameters,6:RC,7:Board voltage,8:Battery Level,9:Airspeed,10:Logging Available,11:Hardware safety switch,12:GPS Configuration + +None +All +Barometer +Compass +GPS Lock +INS(INertial Sensors - accels & gyros) +Parameters(unused) +RC Failsafe +Board voltage +Battery Level +Airspeed +LoggingAvailable +Hardware safety switch +GPS configuration + + + +0.25 3.0 +m/s/s + + +0.1 +Volts + + +0.1 +Volts + + + + + +None +I2C-MS4525D0 +Analog +I2C-MS5525 + + + + +Use +Don't Use + + + +0.1 + + +0.1 + + + + + + + + + +Disable +Enable + + + + + + +Bus0 +Bus1 + + + + + +500 18000 +100 +Centi-Degrees/Sec + + +0 72000 + +Disabled +Slow +Medium +Fast + +1000 +Centi-Degrees/Sec/Sec + + + +Disabled +Enabled + + + +0 180000 + +Disabled +Slow +Medium +Fast + +1000 +Centi-Degrees/Sec/Sec + + +0 180000 + +Disabled +Slow +Medium +Fast + +1000 +Centi-Degrees/Sec/Sec + + + +Disabled +Enabled + + + +3.000 12.000 + + +3.000 12.000 + + +3.000 6.000 + + +0.5 10.0 + + +0.08 0.30 +0.005 + + +0.01 0.5 +0.01 + + +0 1 +0.01 +Percent + + +0.0 0.02 +0.001 + + +0 0.5 +0.001 + + +1 100 +1 +Hz + + +0.08 0.30 +0.005 + + +0.01 0.5 +0.01 + + +0 1 +0.01 +Percent + + +0.0 0.02 +0.001 + + +0 0.5 +0.001 + + +1 100 +1 +Hz + + +0.10 0.50 +0.005 + + +0.010 0.05 +0.01 + + +0 1 +0.01 +Percent + + +0.000 0.02 +0.001 + + +0 0.5 +0.001 + + +1 100 +1 +Hz + + +0.1 0.25 + + +0.5 0.9 + + +0.5 0.9 + + + + + +Disabled +Enabled + + + + +Remain in AVOID_ADSB +Resume previous flight mode +RTL +Resume if AUTO else Loiter + + + + + +seconds + + +seconds + + +meters + + +meters + + +meters + + +meters + + + + +0:StopAtFence,1:UseProximitySensor + +None +StopAtFence +UseProximitySensor +All + + + +0 4500 + + +3 30 +meters + + +1 10 +meters + + + + + +Disabled +Analog Voltage Only +Analog Voltage and Current +Solo +Bebop +SMBus-Maxell + + + + +Disabled +A0 +A1 +Pixhawk/Pixracer/Navio2 +A5 +A10 +A13/Pixhawk2_PM2 +PX4-v1 + + + + +Disabled +A1 +A2 +Pixhawk/Pixracer/Navio2 +A11 +A12/Pixhawk2_PM2 +PX4-v1 + + + + + +Amps/Volt + + +Volts + + +50 +mAh + + +1 +Watts + + + + + +Disabled +Analog Voltage Only +Analog Voltage and Current +Solo +Bebop +SMBus-Maxell + + + + +Disabled +A0 +A1 +Pixhawk/Pixracer/Navio2 +A5 +A10 +A13/Pixhawk2_PM2 +PX4-v1 + + + + +Disabled +A1 +A2 +Pixhawk/Pixracer/Navio2 +A11 +A12/Pixhawk2_PM2 +PX4-v1 + + + + + +Amps/Volt + + +Volts + + +50 +mAh + + +1 +Amps + + + + +0 120 +1 +Seconds + + + + + +None +Pozyx +Marvelmind + + + +-90 90 +0.000001 +degrees + + +-180 180 +0.000001 +degrees + + +0 10000 +1 +meters + + +-180 +180 +1 +degrees + + + + + +No PWMs +Two PWMs +Four PWMs +Six PWMs +Three PWMs and One Capture + +True + + + +Disabled +Enabled +Auto + +True + + + +Disabled +Enabled +Auto + +True + + + +Disabled +Enabled + +True + + + +Disabled +50Hz +75Hz +100Hz +150Hz +200Hz +250Hz +300Hz + +True + + +-32768 32767 + + +0:Ch1,1:Ch2,2:Ch3,3:Ch4,4:Ch5,5:Ch6,6:Ch7,7:Ch8,8:Ch9,9:Ch10,10:Ch11,11:Ch12,12:Ch13,13:Ch14 + +Disabled +Enabled + +True + + +-1 80 +degreesC + + + +AUTO +PX4V1 +Pixhawk +Pixhawk2 +Pixracer +PixhawkMini +Pixhawk2Slim +VRBrain 5.1 +VRBrain 5.2 +VR Micro Brain 5.1 +VR Micro Brain 5.2 +VRBrain Core 1.0 +VRBrain 5.4 +Intel Aero FC +AUAV2.1 + +True + + + +Disabled +Enabled + +True + + + + + +Disabled +Enabled first channel +Enabled both channels + + + +10000 1000000 + + + +Disabled +Major messages +All messages + + + + +Disabled +Enabled + + + + + +1 250 + + + + + +Disabled +shift +arm_toggle +arm +disarm +mode_manual +mode_stabilize +mode_depth_hold +mode_poshold +mode_auto +mode_circle +mode_guided +mode_acro +mount_center +mount_tilt_up +mount_tilt_down +camera_trigger +camera_source_toggle +mount_pan_right +mount_pan_left +lights1_cycle +lights1_brighter +lights1_dimmer +lights2_cycle +lights2_brighter +lights2_dimmer +gain_toggle +gain_inc +gain_dec +trim_roll_inc +trim_roll_dec +trim_pitch_inc +trim_pitch_dec +input_hold_toggle +roll_pitch_toggle +relay_1_on +relay_1_off +relay_1_toggle +relay_2_on +relay_2_off +relay_2_toggle +servo_1_inc +servo_1_dec +servo_1_min +servo_1_max +servo_1_center +servo_2_inc +servo_2_dec +servo_2_min +servo_2_max +servo_2_center +servo_3_inc +servo_3_dec +servo_3_min +servo_3_max +servo_3_center +custom_1 +custom_2 +custom_3 +custom_4 +custom_5 +custom_6 + + + + +Disabled +shift +arm_toggle +arm +disarm +mode_manual +mode_stabilize +mode_depth_hold +mode_poshold +mode_auto +mode_circle +mode_guided +mode_acro +mount_center +mount_tilt_up +mount_tilt_down +camera_trigger +camera_source_toggle +mount_pan_right +mount_pan_left +lights1_cycle +lights1_brighter +lights1_dimmer +lights2_cycle +lights2_brighter +lights2_dimmer +gain_toggle +gain_inc +gain_dec +trim_roll_inc +trim_roll_dec +trim_pitch_inc +trim_pitch_dec +input_hold_toggle +roll_pitch_toggle +relay_1_on +relay_1_off +relay_1_toggle +relay_2_on +relay_2_off +relay_2_toggle +servo_1_inc +servo_1_dec +servo_1_min +servo_1_max +servo_1_center +servo_2_inc +servo_2_dec +servo_2_min +servo_2_max +servo_2_center +servo_3_inc +servo_3_dec +servo_3_min +servo_3_max +servo_3_center +custom_1 +custom_2 +custom_3 +custom_4 +custom_5 +custom_6 + + + + + + +Disabled +shift +arm_toggle +arm +disarm +mode_manual +mode_stabilize +mode_depth_hold +mode_poshold +mode_auto +mode_circle +mode_guided +mode_acro +mount_center +mount_tilt_up +mount_tilt_down +camera_trigger +camera_source_toggle +mount_pan_right +mount_pan_left +lights1_cycle +lights1_brighter +lights1_dimmer +lights2_cycle +lights2_brighter +lights2_dimmer +gain_toggle +gain_inc +gain_dec +trim_roll_inc +trim_roll_dec +trim_pitch_inc +trim_pitch_dec +input_hold_toggle +roll_pitch_toggle +relay_1_on +relay_1_off +relay_1_toggle +relay_2_on +relay_2_off +relay_2_toggle +servo_1_inc +servo_1_dec +servo_1_min +servo_1_max +servo_1_center +servo_2_inc +servo_2_dec +servo_2_min +servo_2_max +servo_2_center +servo_3_inc +servo_3_dec +servo_3_min +servo_3_max +servo_3_center +custom_1 +custom_2 +custom_3 +custom_4 +custom_5 +custom_6 + + + + +Disabled +shift +arm_toggle +arm +disarm +mode_manual +mode_stabilize +mode_depth_hold +mode_poshold +mode_auto +mode_circle +mode_guided +mode_acro +mount_center +mount_tilt_up +mount_tilt_down +camera_trigger +camera_source_toggle +mount_pan_right +mount_pan_left +lights1_cycle +lights1_brighter +lights1_dimmer +lights2_cycle +lights2_brighter +lights2_dimmer +gain_toggle +gain_inc +gain_dec +trim_roll_inc +trim_roll_dec +trim_pitch_inc +trim_pitch_dec +input_hold_toggle +roll_pitch_toggle +relay_1_on +relay_1_off +relay_1_toggle +relay_2_on +relay_2_off +relay_2_toggle +servo_1_inc +servo_1_dec +servo_1_min +servo_1_max +servo_1_center +servo_2_inc +servo_2_dec +servo_2_min +servo_2_max +servo_2_center +servo_3_inc +servo_3_dec +servo_3_min +servo_3_max +servo_3_center +custom_1 +custom_2 +custom_3 +custom_4 +custom_5 +custom_6 + + + + + + +Disabled +shift +arm_toggle +arm +disarm +mode_manual +mode_stabilize +mode_depth_hold +mode_poshold +mode_auto +mode_circle +mode_guided +mode_acro +mount_center +mount_tilt_up +mount_tilt_down +camera_trigger +camera_source_toggle +mount_pan_right +mount_pan_left +lights1_cycle +lights1_brighter +lights1_dimmer +lights2_cycle +lights2_brighter +lights2_dimmer +gain_toggle +gain_inc +gain_dec +trim_roll_inc +trim_roll_dec +trim_pitch_inc +trim_pitch_dec +input_hold_toggle +roll_pitch_toggle +relay_1_on +relay_1_off +relay_1_toggle +relay_2_on +relay_2_off +relay_2_toggle +servo_1_inc +servo_1_dec +servo_1_min +servo_1_max +servo_1_center +servo_2_inc +servo_2_dec +servo_2_min +servo_2_max +servo_2_center +servo_3_inc +servo_3_dec +servo_3_min +servo_3_max +servo_3_center +custom_1 +custom_2 +custom_3 +custom_4 +custom_5 +custom_6 + + + + +Disabled +shift +arm_toggle +arm +disarm +mode_manual +mode_stabilize +mode_depth_hold +mode_poshold +mode_auto +mode_circle +mode_guided +mode_acro +mount_center +mount_tilt_up +mount_tilt_down +camera_trigger +camera_source_toggle +mount_pan_right +mount_pan_left +lights1_cycle +lights1_brighter +lights1_dimmer +lights2_cycle +lights2_brighter +lights2_dimmer +gain_toggle +gain_inc +gain_dec +trim_roll_inc +trim_roll_dec +trim_pitch_inc +trim_pitch_dec +input_hold_toggle +roll_pitch_toggle +relay_1_on +relay_1_off +relay_1_toggle +relay_2_on +relay_2_off +relay_2_toggle +servo_1_inc +servo_1_dec +servo_1_min +servo_1_max +servo_1_center +servo_2_inc +servo_2_dec +servo_2_min +servo_2_max +servo_2_center +servo_3_inc +servo_3_dec +servo_3_min +servo_3_max +servo_3_center +custom_1 +custom_2 +custom_3 +custom_4 +custom_5 +custom_6 + + + + + + +Disabled +shift +arm_toggle +arm +disarm +mode_manual +mode_stabilize +mode_depth_hold +mode_poshold +mode_auto +mode_circle +mode_guided +mode_acro +mount_center +mount_tilt_up +mount_tilt_down +camera_trigger +camera_source_toggle +mount_pan_right +mount_pan_left +lights1_cycle +lights1_brighter +lights1_dimmer +lights2_cycle +lights2_brighter +lights2_dimmer +gain_toggle +gain_inc +gain_dec +trim_roll_inc +trim_roll_dec +trim_pitch_inc +trim_pitch_dec +input_hold_toggle +roll_pitch_toggle +relay_1_on +relay_1_off +relay_1_toggle +relay_2_on +relay_2_off +relay_2_toggle +servo_1_inc +servo_1_dec +servo_1_min +servo_1_max +servo_1_center +servo_2_inc +servo_2_dec +servo_2_min +servo_2_max +servo_2_center +servo_3_inc +servo_3_dec +servo_3_min +servo_3_max +servo_3_center +custom_1 +custom_2 +custom_3 +custom_4 +custom_5 +custom_6 + + + + +Disabled +shift +arm_toggle +arm +disarm +mode_manual +mode_stabilize +mode_depth_hold +mode_poshold +mode_auto +mode_circle +mode_guided +mode_acro +mount_center +mount_tilt_up +mount_tilt_down +camera_trigger +camera_source_toggle +mount_pan_right +mount_pan_left +lights1_cycle +lights1_brighter +lights1_dimmer +lights2_cycle +lights2_brighter +lights2_dimmer +gain_toggle +gain_inc +gain_dec +trim_roll_inc +trim_roll_dec +trim_pitch_inc +trim_pitch_dec +input_hold_toggle +roll_pitch_toggle +relay_1_on +relay_1_off +relay_1_toggle +relay_2_on +relay_2_off +relay_2_toggle +servo_1_inc +servo_1_dec +servo_1_min +servo_1_max +servo_1_center +servo_2_inc +servo_2_dec +servo_2_min +servo_2_max +servo_2_center +servo_3_inc +servo_3_dec +servo_3_min +servo_3_max +servo_3_center +custom_1 +custom_2 +custom_3 +custom_4 +custom_5 +custom_6 + + + + + + +Disabled +shift +arm_toggle +arm +disarm +mode_manual +mode_stabilize +mode_depth_hold +mode_poshold +mode_auto +mode_circle +mode_guided +mode_acro +mount_center +mount_tilt_up +mount_tilt_down +camera_trigger +camera_source_toggle +mount_pan_right +mount_pan_left +lights1_cycle +lights1_brighter +lights1_dimmer +lights2_cycle +lights2_brighter +lights2_dimmer +gain_toggle +gain_inc +gain_dec +trim_roll_inc +trim_roll_dec +trim_pitch_inc +trim_pitch_dec +input_hold_toggle +roll_pitch_toggle +relay_1_on +relay_1_off +relay_1_toggle +relay_2_on +relay_2_off +relay_2_toggle +servo_1_inc +servo_1_dec +servo_1_min +servo_1_max +servo_1_center +servo_2_inc +servo_2_dec +servo_2_min +servo_2_max +servo_2_center +servo_3_inc +servo_3_dec +servo_3_min +servo_3_max +servo_3_center +custom_1 +custom_2 +custom_3 +custom_4 +custom_5 +custom_6 + + + + +Disabled +shift +arm_toggle +arm +disarm +mode_manual +mode_stabilize +mode_depth_hold +mode_poshold +mode_auto +mode_circle +mode_guided +mode_acro +mount_center +mount_tilt_up +mount_tilt_down +camera_trigger +camera_source_toggle +mount_pan_right +mount_pan_left +lights1_cycle +lights1_brighter +lights1_dimmer +lights2_cycle +lights2_brighter +lights2_dimmer +gain_toggle +gain_inc +gain_dec +trim_roll_inc +trim_roll_dec +trim_pitch_inc +trim_pitch_dec +input_hold_toggle +roll_pitch_toggle +relay_1_on +relay_1_off +relay_1_toggle +relay_2_on +relay_2_off +relay_2_toggle +servo_1_inc +servo_1_dec +servo_1_min +servo_1_max +servo_1_center +servo_2_inc +servo_2_dec +servo_2_min +servo_2_max +servo_2_center +servo_3_inc +servo_3_dec +servo_3_min +servo_3_max +servo_3_center +custom_1 +custom_2 +custom_3 +custom_4 +custom_5 +custom_6 + + + + + + +Disabled +shift +arm_toggle +arm +disarm +mode_manual +mode_stabilize +mode_depth_hold +mode_poshold +mode_auto +mode_circle +mode_guided +mode_acro +mount_center +mount_tilt_up +mount_tilt_down +camera_trigger +camera_source_toggle +mount_pan_right +mount_pan_left +lights1_cycle +lights1_brighter +lights1_dimmer +lights2_cycle +lights2_brighter +lights2_dimmer +gain_toggle +gain_inc +gain_dec +trim_roll_inc +trim_roll_dec +trim_pitch_inc +trim_pitch_dec +input_hold_toggle +roll_pitch_toggle +relay_1_on +relay_1_off +relay_1_toggle +relay_2_on +relay_2_off +relay_2_toggle +servo_1_inc +servo_1_dec +servo_1_min +servo_1_max +servo_1_center +servo_2_inc +servo_2_dec +servo_2_min +servo_2_max +servo_2_center +servo_3_inc +servo_3_dec +servo_3_min +servo_3_max +servo_3_center +custom_1 +custom_2 +custom_3 +custom_4 +custom_5 +custom_6 + + + + +Disabled +shift +arm_toggle +arm +disarm +mode_manual +mode_stabilize +mode_depth_hold +mode_poshold +mode_auto +mode_circle +mode_guided +mode_acro +mount_center +mount_tilt_up +mount_tilt_down +camera_trigger +camera_source_toggle +mount_pan_right +mount_pan_left +lights1_cycle +lights1_brighter +lights1_dimmer +lights2_cycle +lights2_brighter +lights2_dimmer +gain_toggle +gain_inc +gain_dec +trim_roll_inc +trim_roll_dec +trim_pitch_inc +trim_pitch_dec +input_hold_toggle +roll_pitch_toggle +relay_1_on +relay_1_off +relay_1_toggle +relay_2_on +relay_2_off +relay_2_toggle +servo_1_inc +servo_1_dec +servo_1_min +servo_1_max +servo_1_center +servo_2_inc +servo_2_dec +servo_2_min +servo_2_max +servo_2_center +servo_3_inc +servo_3_dec +servo_3_min +servo_3_max +servo_3_center +custom_1 +custom_2 +custom_3 +custom_4 +custom_5 +custom_6 + + + + + + +Disabled +shift +arm_toggle +arm +disarm +mode_manual +mode_stabilize +mode_depth_hold +mode_poshold +mode_auto +mode_circle +mode_guided +mode_acro +mount_center +mount_tilt_up +mount_tilt_down +camera_trigger +camera_source_toggle +mount_pan_right +mount_pan_left +lights1_cycle +lights1_brighter +lights1_dimmer +lights2_cycle +lights2_brighter +lights2_dimmer +gain_toggle +gain_inc +gain_dec +trim_roll_inc +trim_roll_dec +trim_pitch_inc +trim_pitch_dec +input_hold_toggle +roll_pitch_toggle +relay_1_on +relay_1_off +relay_1_toggle +relay_2_on +relay_2_off +relay_2_toggle +servo_1_inc +servo_1_dec +servo_1_min +servo_1_max +servo_1_center +servo_2_inc +servo_2_dec +servo_2_min +servo_2_max +servo_2_center +servo_3_inc +servo_3_dec +servo_3_min +servo_3_max +servo_3_center +custom_1 +custom_2 +custom_3 +custom_4 +custom_5 +custom_6 + + + + +Disabled +shift +arm_toggle +arm +disarm +mode_manual +mode_stabilize +mode_depth_hold +mode_poshold +mode_auto +mode_circle +mode_guided +mode_acro +mount_center +mount_tilt_up +mount_tilt_down +camera_trigger +camera_source_toggle +mount_pan_right +mount_pan_left +lights1_cycle +lights1_brighter +lights1_dimmer +lights2_cycle +lights2_brighter +lights2_dimmer +gain_toggle +gain_inc +gain_dec +trim_roll_inc +trim_roll_dec +trim_pitch_inc +trim_pitch_dec +input_hold_toggle +roll_pitch_toggle +relay_1_on +relay_1_off +relay_1_toggle +relay_2_on +relay_2_off +relay_2_toggle +servo_1_inc +servo_1_dec +servo_1_min +servo_1_max +servo_1_center +servo_2_inc +servo_2_dec +servo_2_min +servo_2_max +servo_2_center +servo_3_inc +servo_3_dec +servo_3_min +servo_3_max +servo_3_center +custom_1 +custom_2 +custom_3 +custom_4 +custom_5 +custom_6 + + + + + + +Disabled +shift +arm_toggle +arm +disarm +mode_manual +mode_stabilize +mode_depth_hold +mode_poshold +mode_auto +mode_circle +mode_guided +mode_acro +mount_center +mount_tilt_up +mount_tilt_down +camera_trigger +camera_source_toggle +mount_pan_right +mount_pan_left +lights1_cycle +lights1_brighter +lights1_dimmer +lights2_cycle +lights2_brighter +lights2_dimmer +gain_toggle +gain_inc +gain_dec +trim_roll_inc +trim_roll_dec +trim_pitch_inc +trim_pitch_dec +input_hold_toggle +roll_pitch_toggle +relay_1_on +relay_1_off +relay_1_toggle +relay_2_on +relay_2_off +relay_2_toggle +servo_1_inc +servo_1_dec +servo_1_min +servo_1_max +servo_1_center +servo_2_inc +servo_2_dec +servo_2_min +servo_2_max +servo_2_center +servo_3_inc +servo_3_dec +servo_3_min +servo_3_max +servo_3_center +custom_1 +custom_2 +custom_3 +custom_4 +custom_5 +custom_6 + + + + +Disabled +shift +arm_toggle +arm +disarm +mode_manual +mode_stabilize +mode_depth_hold +mode_poshold +mode_auto +mode_circle +mode_guided +mode_acro +mount_center +mount_tilt_up +mount_tilt_down +camera_trigger +camera_source_toggle +mount_pan_right +mount_pan_left +lights1_cycle +lights1_brighter +lights1_dimmer +lights2_cycle +lights2_brighter +lights2_dimmer +gain_toggle +gain_inc +gain_dec +trim_roll_inc +trim_roll_dec +trim_pitch_inc +trim_pitch_dec +input_hold_toggle +roll_pitch_toggle +relay_1_on +relay_1_off +relay_1_toggle +relay_2_on +relay_2_off +relay_2_toggle +servo_1_inc +servo_1_dec +servo_1_min +servo_1_max +servo_1_center +servo_2_inc +servo_2_dec +servo_2_min +servo_2_max +servo_2_center +servo_3_inc +servo_3_dec +servo_3_min +servo_3_max +servo_3_center +custom_1 +custom_2 +custom_3 +custom_4 +custom_5 +custom_6 + + + + + + +Disabled +shift +arm_toggle +arm +disarm +mode_manual +mode_stabilize +mode_depth_hold +mode_poshold +mode_auto +mode_circle +mode_guided +mode_acro +mount_center +mount_tilt_up +mount_tilt_down +camera_trigger +camera_source_toggle +mount_pan_right +mount_pan_left +lights1_cycle +lights1_brighter +lights1_dimmer +lights2_cycle +lights2_brighter +lights2_dimmer +gain_toggle +gain_inc +gain_dec +trim_roll_inc +trim_roll_dec +trim_pitch_inc +trim_pitch_dec +input_hold_toggle +roll_pitch_toggle +relay_1_on +relay_1_off +relay_1_toggle +relay_2_on +relay_2_off +relay_2_toggle +servo_1_inc +servo_1_dec +servo_1_min +servo_1_max +servo_1_center +servo_2_inc +servo_2_dec +servo_2_min +servo_2_max +servo_2_center +servo_3_inc +servo_3_dec +servo_3_min +servo_3_max +servo_3_center +custom_1 +custom_2 +custom_3 +custom_4 +custom_5 +custom_6 + + + + +Disabled +shift +arm_toggle +arm +disarm +mode_manual +mode_stabilize +mode_depth_hold +mode_poshold +mode_auto +mode_circle +mode_guided +mode_acro +mount_center +mount_tilt_up +mount_tilt_down +camera_trigger +camera_source_toggle +mount_pan_right +mount_pan_left +lights1_cycle +lights1_brighter +lights1_dimmer +lights2_cycle +lights2_brighter +lights2_dimmer +gain_toggle +gain_inc +gain_dec +trim_roll_inc +trim_roll_dec +trim_pitch_inc +trim_pitch_dec +input_hold_toggle +roll_pitch_toggle +relay_1_on +relay_1_off +relay_1_toggle +relay_2_on +relay_2_off +relay_2_toggle +servo_1_inc +servo_1_dec +servo_1_min +servo_1_max +servo_1_center +servo_2_inc +servo_2_dec +servo_2_min +servo_2_max +servo_2_center +servo_3_inc +servo_3_dec +servo_3_min +servo_3_max +servo_3_center +custom_1 +custom_2 +custom_3 +custom_4 +custom_5 +custom_6 + + + + + + +Disabled +shift +arm_toggle +arm +disarm +mode_manual +mode_stabilize +mode_depth_hold +mode_poshold +mode_auto +mode_circle +mode_guided +mode_acro +mount_center +mount_tilt_up +mount_tilt_down +camera_trigger +camera_source_toggle +mount_pan_right +mount_pan_left +lights1_cycle +lights1_brighter +lights1_dimmer +lights2_cycle +lights2_brighter +lights2_dimmer +gain_toggle +gain_inc +gain_dec +trim_roll_inc +trim_roll_dec +trim_pitch_inc +trim_pitch_dec +input_hold_toggle +roll_pitch_toggle +relay_1_on +relay_1_off +relay_1_toggle +relay_2_on +relay_2_off +relay_2_toggle +servo_1_inc +servo_1_dec +servo_1_min +servo_1_max +servo_1_center +servo_2_inc +servo_2_dec +servo_2_min +servo_2_max +servo_2_center +servo_3_inc +servo_3_dec +servo_3_min +servo_3_max +servo_3_center +custom_1 +custom_2 +custom_3 +custom_4 +custom_5 +custom_6 + + + + +Disabled +shift +arm_toggle +arm +disarm +mode_manual +mode_stabilize +mode_depth_hold +mode_poshold +mode_auto +mode_circle +mode_guided +mode_acro +mount_center +mount_tilt_up +mount_tilt_down +camera_trigger +camera_source_toggle +mount_pan_right +mount_pan_left +lights1_cycle +lights1_brighter +lights1_dimmer +lights2_cycle +lights2_brighter +lights2_dimmer +gain_toggle +gain_inc +gain_dec +trim_roll_inc +trim_roll_dec +trim_pitch_inc +trim_pitch_dec +input_hold_toggle +roll_pitch_toggle +relay_1_on +relay_1_off +relay_1_toggle +relay_2_on +relay_2_off +relay_2_toggle +servo_1_inc +servo_1_dec +servo_1_min +servo_1_max +servo_1_center +servo_2_inc +servo_2_dec +servo_2_min +servo_2_max +servo_2_center +servo_3_inc +servo_3_dec +servo_3_min +servo_3_max +servo_3_center +custom_1 +custom_2 +custom_3 +custom_4 +custom_5 +custom_6 + + + + + + +Disabled +shift +arm_toggle +arm +disarm +mode_manual +mode_stabilize +mode_depth_hold +mode_poshold +mode_auto +mode_circle +mode_guided +mode_acro +mount_center +mount_tilt_up +mount_tilt_down +camera_trigger +camera_source_toggle +mount_pan_right +mount_pan_left +lights1_cycle +lights1_brighter +lights1_dimmer +lights2_cycle +lights2_brighter +lights2_dimmer +gain_toggle +gain_inc +gain_dec +trim_roll_inc +trim_roll_dec +trim_pitch_inc +trim_pitch_dec +input_hold_toggle +roll_pitch_toggle +relay_1_on +relay_1_off +relay_1_toggle +relay_2_on +relay_2_off +relay_2_toggle +servo_1_inc +servo_1_dec +servo_1_min +servo_1_max +servo_1_center +servo_2_inc +servo_2_dec +servo_2_min +servo_2_max +servo_2_center +servo_3_inc +servo_3_dec +servo_3_min +servo_3_max +servo_3_center +custom_1 +custom_2 +custom_3 +custom_4 +custom_5 +custom_6 + + + + +Disabled +shift +arm_toggle +arm +disarm +mode_manual +mode_stabilize +mode_depth_hold +mode_poshold +mode_auto +mode_circle +mode_guided +mode_acro +mount_center +mount_tilt_up +mount_tilt_down +camera_trigger +camera_source_toggle +mount_pan_right +mount_pan_left +lights1_cycle +lights1_brighter +lights1_dimmer +lights2_cycle +lights2_brighter +lights2_dimmer +gain_toggle +gain_inc +gain_dec +trim_roll_inc +trim_roll_dec +trim_pitch_inc +trim_pitch_dec +input_hold_toggle +roll_pitch_toggle +relay_1_on +relay_1_off +relay_1_toggle +relay_2_on +relay_2_off +relay_2_toggle +servo_1_inc +servo_1_dec +servo_1_min +servo_1_max +servo_1_center +servo_2_inc +servo_2_dec +servo_2_min +servo_2_max +servo_2_center +servo_3_inc +servo_3_dec +servo_3_min +servo_3_max +servo_3_center +custom_1 +custom_2 +custom_3 +custom_4 +custom_5 +custom_6 + + + + + + +Disabled +shift +arm_toggle +arm +disarm +mode_manual +mode_stabilize +mode_depth_hold +mode_poshold +mode_auto +mode_circle +mode_guided +mode_acro +mount_center +mount_tilt_up +mount_tilt_down +camera_trigger +camera_source_toggle +mount_pan_right +mount_pan_left +lights1_cycle +lights1_brighter +lights1_dimmer +lights2_cycle +lights2_brighter +lights2_dimmer +gain_toggle +gain_inc +gain_dec +trim_roll_inc +trim_roll_dec +trim_pitch_inc +trim_pitch_dec +input_hold_toggle +roll_pitch_toggle +relay_1_on +relay_1_off +relay_1_toggle +relay_2_on +relay_2_off +relay_2_toggle +servo_1_inc +servo_1_dec +servo_1_min +servo_1_max +servo_1_center +servo_2_inc +servo_2_dec +servo_2_min +servo_2_max +servo_2_center +servo_3_inc +servo_3_dec +servo_3_min +servo_3_max +servo_3_center +custom_1 +custom_2 +custom_3 +custom_4 +custom_5 +custom_6 + + + + +Disabled +shift +arm_toggle +arm +disarm +mode_manual +mode_stabilize +mode_depth_hold +mode_poshold +mode_auto +mode_circle +mode_guided +mode_acro +mount_center +mount_tilt_up +mount_tilt_down +camera_trigger +camera_source_toggle +mount_pan_right +mount_pan_left +lights1_cycle +lights1_brighter +lights1_dimmer +lights2_cycle +lights2_brighter +lights2_dimmer +gain_toggle +gain_inc +gain_dec +trim_roll_inc +trim_roll_dec +trim_pitch_inc +trim_pitch_dec +input_hold_toggle +roll_pitch_toggle +relay_1_on +relay_1_off +relay_1_toggle +relay_2_on +relay_2_off +relay_2_toggle +servo_1_inc +servo_1_dec +servo_1_min +servo_1_max +servo_1_center +servo_2_inc +servo_2_dec +servo_2_min +servo_2_max +servo_2_center +servo_3_inc +servo_3_dec +servo_3_min +servo_3_max +servo_3_center +custom_1 +custom_2 +custom_3 +custom_4 +custom_5 +custom_6 + + + + + + +Disabled +shift +arm_toggle +arm +disarm +mode_manual +mode_stabilize +mode_depth_hold +mode_poshold +mode_auto +mode_circle +mode_guided +mode_acro +mount_center +mount_tilt_up +mount_tilt_down +camera_trigger +camera_source_toggle +mount_pan_right +mount_pan_left +lights1_cycle +lights1_brighter +lights1_dimmer +lights2_cycle +lights2_brighter +lights2_dimmer +gain_toggle +gain_inc +gain_dec +trim_roll_inc +trim_roll_dec +trim_pitch_inc +trim_pitch_dec +input_hold_toggle +roll_pitch_toggle +relay_1_on +relay_1_off +relay_1_toggle +relay_2_on +relay_2_off +relay_2_toggle +servo_1_inc +servo_1_dec +servo_1_min +servo_1_max +servo_1_center +servo_2_inc +servo_2_dec +servo_2_min +servo_2_max +servo_2_center +servo_3_inc +servo_3_dec +servo_3_min +servo_3_max +servo_3_center +custom_1 +custom_2 +custom_3 +custom_4 +custom_5 +custom_6 + + + + +Disabled +shift +arm_toggle +arm +disarm +mode_manual +mode_stabilize +mode_depth_hold +mode_poshold +mode_auto +mode_circle +mode_guided +mode_acro +mount_center +mount_tilt_up +mount_tilt_down +camera_trigger +camera_source_toggle +mount_pan_right +mount_pan_left +lights1_cycle +lights1_brighter +lights1_dimmer +lights2_cycle +lights2_brighter +lights2_dimmer +gain_toggle +gain_inc +gain_dec +trim_roll_inc +trim_roll_dec +trim_pitch_inc +trim_pitch_dec +input_hold_toggle +roll_pitch_toggle +relay_1_on +relay_1_off +relay_1_toggle +relay_2_on +relay_2_off +relay_2_toggle +servo_1_inc +servo_1_dec +servo_1_min +servo_1_max +servo_1_center +servo_2_inc +servo_2_dec +servo_2_min +servo_2_max +servo_2_center +servo_3_inc +servo_3_dec +servo_3_min +servo_3_max +servo_3_center +custom_1 +custom_2 +custom_3 +custom_4 +custom_5 +custom_6 + + + + + + +Disabled +shift +arm_toggle +arm +disarm +mode_manual +mode_stabilize +mode_depth_hold +mode_poshold +mode_auto +mode_circle +mode_guided +mode_acro +mount_center +mount_tilt_up +mount_tilt_down +camera_trigger +camera_source_toggle +mount_pan_right +mount_pan_left +lights1_cycle +lights1_brighter +lights1_dimmer +lights2_cycle +lights2_brighter +lights2_dimmer +gain_toggle +gain_inc +gain_dec +trim_roll_inc +trim_roll_dec +trim_pitch_inc +trim_pitch_dec +input_hold_toggle +roll_pitch_toggle +relay_1_on +relay_1_off +relay_1_toggle +relay_2_on +relay_2_off +relay_2_toggle +servo_1_inc +servo_1_dec +servo_1_min +servo_1_max +servo_1_center +servo_2_inc +servo_2_dec +servo_2_min +servo_2_max +servo_2_center +servo_3_inc +servo_3_dec +servo_3_min +servo_3_max +servo_3_center +custom_1 +custom_2 +custom_3 +custom_4 +custom_5 +custom_6 + + + + +Disabled +shift +arm_toggle +arm +disarm +mode_manual +mode_stabilize +mode_depth_hold +mode_poshold +mode_auto +mode_circle +mode_guided +mode_acro +mount_center +mount_tilt_up +mount_tilt_down +camera_trigger +camera_source_toggle +mount_pan_right +mount_pan_left +lights1_cycle +lights1_brighter +lights1_dimmer +lights2_cycle +lights2_brighter +lights2_dimmer +gain_toggle +gain_inc +gain_dec +trim_roll_inc +trim_roll_dec +trim_pitch_inc +trim_pitch_dec +input_hold_toggle +roll_pitch_toggle +relay_1_on +relay_1_off +relay_1_toggle +relay_2_on +relay_2_off +relay_2_toggle +servo_1_inc +servo_1_dec +servo_1_min +servo_1_max +servo_1_center +servo_2_inc +servo_2_dec +servo_2_min +servo_2_max +servo_2_center +servo_3_inc +servo_3_dec +servo_3_min +servo_3_max +servo_3_center +custom_1 +custom_2 +custom_3 +custom_4 +custom_5 +custom_6 + + + + + + +Disabled +shift +arm_toggle +arm +disarm +mode_manual +mode_stabilize +mode_depth_hold +mode_poshold +mode_auto +mode_circle +mode_guided +mode_acro +mount_center +mount_tilt_up +mount_tilt_down +camera_trigger +camera_source_toggle +mount_pan_right +mount_pan_left +lights1_cycle +lights1_brighter +lights1_dimmer +lights2_cycle +lights2_brighter +lights2_dimmer +gain_toggle +gain_inc +gain_dec +trim_roll_inc +trim_roll_dec +trim_pitch_inc +trim_pitch_dec +input_hold_toggle +roll_pitch_toggle +relay_1_on +relay_1_off +relay_1_toggle +relay_2_on +relay_2_off +relay_2_toggle +servo_1_inc +servo_1_dec +servo_1_min +servo_1_max +servo_1_center +servo_2_inc +servo_2_dec +servo_2_min +servo_2_max +servo_2_center +servo_3_inc +servo_3_dec +servo_3_min +servo_3_max +servo_3_center +custom_1 +custom_2 +custom_3 +custom_4 +custom_5 +custom_6 + + + + +Disabled +shift +arm_toggle +arm +disarm +mode_manual +mode_stabilize +mode_depth_hold +mode_poshold +mode_auto +mode_circle +mode_guided +mode_acro +mount_center +mount_tilt_up +mount_tilt_down +camera_trigger +camera_source_toggle +mount_pan_right +mount_pan_left +lights1_cycle +lights1_brighter +lights1_dimmer +lights2_cycle +lights2_brighter +lights2_dimmer +gain_toggle +gain_inc +gain_dec +trim_roll_inc +trim_roll_dec +trim_pitch_inc +trim_pitch_dec +input_hold_toggle +roll_pitch_toggle +relay_1_on +relay_1_off +relay_1_toggle +relay_2_on +relay_2_off +relay_2_toggle +servo_1_inc +servo_1_dec +servo_1_min +servo_1_max +servo_1_center +servo_2_inc +servo_2_dec +servo_2_min +servo_2_max +servo_2_center +servo_3_inc +servo_3_dec +servo_3_min +servo_3_max +servo_3_center +custom_1 +custom_2 +custom_3 +custom_4 +custom_5 +custom_6 + + + + + + +Disabled +shift +arm_toggle +arm +disarm +mode_manual +mode_stabilize +mode_depth_hold +mode_poshold +mode_auto +mode_circle +mode_guided +mode_acro +mount_center +mount_tilt_up +mount_tilt_down +camera_trigger +camera_source_toggle +mount_pan_right +mount_pan_left +lights1_cycle +lights1_brighter +lights1_dimmer +lights2_cycle +lights2_brighter +lights2_dimmer +gain_toggle +gain_inc +gain_dec +trim_roll_inc +trim_roll_dec +trim_pitch_inc +trim_pitch_dec +input_hold_toggle +roll_pitch_toggle +relay_1_on +relay_1_off +relay_1_toggle +relay_2_on +relay_2_off +relay_2_toggle +servo_1_inc +servo_1_dec +servo_1_min +servo_1_max +servo_1_center +servo_2_inc +servo_2_dec +servo_2_min +servo_2_max +servo_2_center +servo_3_inc +servo_3_dec +servo_3_min +servo_3_max +servo_3_center +custom_1 +custom_2 +custom_3 +custom_4 +custom_5 +custom_6 + + + + +Disabled +shift +arm_toggle +arm +disarm +mode_manual +mode_stabilize +mode_depth_hold +mode_poshold +mode_auto +mode_circle +mode_guided +mode_acro +mount_center +mount_tilt_up +mount_tilt_down +camera_trigger +camera_source_toggle +mount_pan_right +mount_pan_left +lights1_cycle +lights1_brighter +lights1_dimmer +lights2_cycle +lights2_brighter +lights2_dimmer +gain_toggle +gain_inc +gain_dec +trim_roll_inc +trim_roll_dec +trim_pitch_inc +trim_pitch_dec +input_hold_toggle +roll_pitch_toggle +relay_1_on +relay_1_off +relay_1_toggle +relay_2_on +relay_2_off +relay_2_toggle +servo_1_inc +servo_1_dec +servo_1_min +servo_1_max +servo_1_center +servo_2_inc +servo_2_dec +servo_2_min +servo_2_max +servo_2_center +servo_3_inc +servo_3_dec +servo_3_min +servo_3_max +servo_3_center +custom_1 +custom_2 +custom_3 +custom_4 +custom_5 +custom_6 + + + + + + +Disabled +Enabled + + + + +Disabled +Pixhawk AUXOUT1 +Pixhawk AUXOUT2 +Pixhawk AUXOUT3 +Pixhawk AUXOUT4 +Pixhawk AUXOUT5 +Pixhawk AUXOUT6 +PX4 FMU Relay1 +PX4 FMU Relay2 +PX4IO Relay1 +PX4IO Relay2 +PX4IO ACC1 +PX4IO ACC2 + + + + +Disabled +Pixhawk AUXOUT1 +Pixhawk AUXOUT2 +Pixhawk AUXOUT3 +Pixhawk AUXOUT4 +Pixhawk AUXOUT5 +Pixhawk AUXOUT6 +PX4 FMU Relay1 +PX4 FMU Relay2 +PX4IO Relay1 +PX4IO Relay2 +PX4IO ACC1 +PX4IO ACC2 + + + + +Disabled +Pixhawk AUXOUT1 +Pixhawk AUXOUT2 +Pixhawk AUXOUT3 +Pixhawk AUXOUT4 +Pixhawk AUXOUT5 +Pixhawk AUXOUT6 +PX4 FMU Relay1 +PX4 FMU Relay2 +PX4IO Relay1 +PX4IO Relay2 +PX4IO ACC1 +PX4IO ACC2 + + + + +Disabled +Pixhawk AUXOUT1 +Pixhawk AUXOUT2 +Pixhawk AUXOUT3 +Pixhawk AUXOUT4 +Pixhawk AUXOUT5 +Pixhawk AUXOUT6 +PX4 FMU Relay1 +PX4 FMU Relay2 +PX4IO Relay1 +PX4IO Relay2 +PX4IO ACC1 +PX4IO ACC2 + + + +0 3600 + + + + + +Servo +Relay + + + +0 50 +deciseconds + + +1000 2000 +pwm + + +1000 2000 +pwm + + +0 1000 +meters + + + +Low +High + + + +0 10000 +milliseconds + + +0 180 +Degrees + + + +Disabled +PX4 AUX1 +PX4 AUX2 +PX4 AUX3 +PX4 AUX4(fast capture) +PX4 AUX5 +PX4 AUX6 + + + + +TriggerLow +TriggerHigh + + + + + + +Disabled +Enabled + + + + +First Relay +Second Relay +Third Relay +Fourth Relay +Servo + + + +1000 2000 +1 +pwm + + +1000 2000 +1 +pwm + + +0 32000 +1 +Meters + + +0 5000 +1 +Milliseconds + + + + +0 10000 +100 +cm + + +-90 90 +1 +deg/s + + + + +-400 400 +1 +milligauss + + +-400 400 +1 +milligauss + + +-400 400 +1 +milligauss + + +-3.142 3.142 +0.01 +Radians + + + +Disabled +Internal-Learning +EKF-Learning + + + + +Disabled +Enabled + + + + +Disabled +Enabled + + + + +Disabled +Use Throttle +Use Current + + + +-1000 1000 +1 +Offset per Amp or at Full Throttle + + +-1000 1000 +1 +Offset per Amp or at Full Throttle + + +-1000 1000 +1 +Offset per Amp or at Full Throttle + + + +None +Yaw45 +Yaw90 +Yaw135 +Yaw180 +Yaw225 +Yaw270 +Yaw315 +Roll180 +Roll180Yaw45 +Roll180Yaw90 +Roll180Yaw135 +Pitch180 +Roll180Yaw225 +Roll180Yaw270 +Roll180Yaw315 +Roll90 +Roll90Yaw45 +Roll90Yaw90 +Roll90Yaw135 +Roll270 +Roll270Yaw45 +Roll270Yaw90 +Roll270Yaw136 +Pitch90 +Pitch270 +Pitch180Yaw90 +Pitch180Yaw270 +Roll90Pitch90 +Roll180Pitch90 +Roll270Pitch90 +Roll90Pitch180 +Roll270Pitch180 +Roll90Pitch270 +Roll180Pitch270 +Roll270Pitch270 +Roll90Pitch180Yaw90 +Roll90Yaw270 +Yaw293Pitch68Roll90 + + + + +Internal +External +ForcedExternal + + + +-400 400 +1 +milligauss + + +-400 400 +1 +milligauss + + +-400 400 +1 +milligauss + + +-1000 1000 +1 +Offset per Amp or at Full Throttle + + +-1000 1000 +1 +Offset per Amp or at Full Throttle + + +-1000 1000 +1 +Offset per Amp or at Full Throttle + + + +FirstCompass +SecondCompass +ThirdCompass + + + +-400 400 +1 +milligauss + + +-400 400 +1 +milligauss + + +-400 400 +1 +milligauss + + +-1000 1000 +1 +Offset per Amp or at Full Throttle + + +-1000 1000 +1 +Offset per Amp or at Full Throttle + + +-1000 1000 +1 +Offset per Amp or at Full Throttle + + + + + + + + + +Disabled +Enabled + + + + +None +Yaw45 +Yaw90 +Yaw135 +Yaw180 +Yaw225 +Yaw270 +Yaw315 +Roll180 +Roll180Yaw45 +Roll180Yaw90 +Roll180Yaw135 +Pitch180 +Roll180Yaw225 +Roll180Yaw270 +Roll180Yaw315 +Roll90 +Roll90Yaw45 +Roll90Yaw90 +Roll90Yaw135 +Roll270 +Roll270Yaw45 +Roll270Yaw90 +Roll270Yaw136 +Pitch90 +Pitch270 +Pitch180Yaw90 +Pitch180Yaw270 +Roll90Pitch90 +Roll180Pitch90 +Roll270Pitch90 +Roll90Pitch180 +Roll270Pitch180 +Roll90Pitch270 +Roll180Pitch270 +Roll270Pitch270 +Roll90Pitch180Yaw90 +Roll90Yaw270 +Yaw293Pitch68Roll90 + + + + +Internal +External +ForcedExternal + + + + +Disabled +Enabled + + + + +None +Yaw45 +Yaw90 +Yaw135 +Yaw180 +Yaw225 +Yaw270 +Yaw315 +Roll180 +Roll180Yaw45 +Roll180Yaw90 +Roll180Yaw135 +Pitch180 +Roll180Yaw225 +Roll180Yaw270 +Roll180Yaw315 +Roll90 +Roll90Yaw45 +Roll90Yaw90 +Roll90Yaw135 +Roll270 +Roll270Yaw45 +Roll270Yaw90 +Roll270Yaw136 +Pitch90 +Pitch270 +Pitch180Yaw90 +Pitch180Yaw270 +Roll90Pitch90 +Roll180Pitch90 +Roll270Pitch90 +Roll90Pitch180 +Roll270Pitch180 +Roll90Pitch270 +Roll180Pitch270 +Roll270Pitch270 +Roll90Pitch180Yaw90 +Roll90Yaw270 +Yaw293Pitch68Roll90 + + + + +Internal +External +ForcedExternal + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +4 32 + +Very Strict +Strict +Default +Relaxed + +0.1 + + +500 3000 +1 + + + + + +Disabled +Enabled + + + + +GPS 3D Vel and 2D Pos +GPS 2D vel and 2D pos +GPS 2D pos +No GPS + + + +0.05 5.0 +0.05 +m/s + + +0.05 5.0 +0.05 +m/s + + +100 1000 +25 + + +0.1 10.0 +0.1 +m + + +100 1000 +25 + + +10 100 +5 +m + + +0 250 +10 +milliseconds + + + +Use Baro +Use Range Finder +Use GPS +Use Range Beacon + + + +0.1 10.0 +0.1 +m + + +100 1000 +25 + + +0 250 +10 +milliseconds + + +0.01 0.5 +0.01 +gauss + + + +When flying +When manoeuvring +Never +After first climb yaw reset +Always + + + +100 1000 +25 + + +0.5 5.0 +0.1 +m/s + + +100 1000 +25 + + +0.1 10.0 +0.1 +m + + +100 1000 +25 + + +1.0 4.0 +0.1 +rad/s + + +0.05 1.0 +0.05 +rad/s + + +100 1000 +25 + + +0 127 +10 +milliseconds + + +0.0001 0.1 +0.0001 +rad/s + + +0.01 1.0 +0.01 +m/s/s + + +0.00001 0.001 +rad/s/s + + +0.000001 0.001 +1/s + + +0.00001 0.001 +m/s/s/s + + +0.01 1.0 +0.1 +m/s/s + + +0.0 1.0 +0.1 + + +0:NSats,1:HDoP,2:speed error,3:position error,4:yaw error,5:pos drift,6:vert speed,7:horiz speed + + +0:FirstIMU,1:SecondIMU,2:ThirdIMU,3:FourthIMU,4:FifthIMU,5:SixthIMU + + +50 200 +% + + +0.5 50.0 +m + + +0:FirstIMU,1:SecondIMU,2:ThirdIMU,3:FourthIMU,4:FifthIMU,5:SixthIMU + + +0.05 1.0 +0.05 +rad + + +100 1000 +25 + + +10 50 +5 +cs + + +0.00001 0.01 +gauss/s + + +0.00001 0.01 +gauss/s + + +-1 70 +1 +% + + +0 0.2 +0.01 + + +0.1 10.0 +0.1 +m + + +100 1000 +25 + + +0 127 +10 +milliseconds + + +2.0 6.0 +0.5 +m/s + + +0:FirstEKF,1:SecondEKF,2:ThirdEKF,3:FourthEKF,4:FifthEKF,5:SixthEKF + + + + + +Disabled +Enabled + + + + +GPS 3D Vel and 2D Pos +GPS 2D vel and 2D pos +GPS 2D pos +No GPS + + + +0.05 5.0 +0.05 +m/s + + +0.05 5.0 +0.05 +m/s + + +100 1000 +25 + + +0.1 10.0 +0.1 +m + + +100 1000 +25 + + +10 100 +5 +m + + + +Use Baro +Use Range Finder +Use GPS +Use Range Beacon + + + +0.1 10.0 +0.1 +m + + +100 1000 +25 + + +0 250 +10 +milliseconds +True + + +0.01 0.5 +0.01 +gauss + + + +When flying +When manoeuvring +Never +After first climb yaw reset +Always + + + +100 1000 +25 + + +0.5 5.0 +0.1 +m/s + + +100 1000 +25 + + +0.1 10.0 +0.1 +m + + +100 1000 +25 + + +1.0 4.0 +0.1 +rad/s + + +0.05 1.0 +0.05 +rad/s + + +100 1000 +25 + + +0 250 +10 +milliseconds +True + + +0.0001 0.1 +0.0001 +rad/s + + +0.01 1.0 +0.01 +m/s/s + + +0.00001 0.001 +rad/s/s + + +0.00001 0.001 +m/s/s/s + + +0.01 1.0 +0.1 +m/s/s + + +0.0 1.0 +0.1 + + +0:NSats,1:HDoP,2:speed error,3:position error,4:yaw error,5:pos drift,6:vert speed,7:horiz speed + + +0:FirstIMU,1:SecondIMU,2:ThirdIMU,3:FourthIMU,4:FifthIMU,5:SixthIMU + + +50 200 +% + + +0.5 50.0 +m + + +0:FirstIMU,1:SecondIMU,2:ThirdIMU,3:FourthIMU,4:FifthIMU,5:SixthIMU + + +0.05 1.0 +0.05 +rad + + +100 1000 +25 + + +10 50 +5 +cs + + +0.00001 0.01 +gauss/s + + +0.00001 0.01 +gauss/s + + +-1 70 +1 +% + + +0 0.2 +0.01 + + +0.1 10.0 +0.1 +m + + +100 1000 +25 + + +0 250 +10 +milliseconds +True + + +2.0 6.0 +0.5 +m/s + + +0.5 2.5 +0.1 +m/s/s + + +0:FirstEKF,1:SecondEKF,2:ThirdEKF,3:FourthEKF,4:FifthEKF,5:SixthEKF + + + + + +Disabled +Enabled + + + +0:Altitude,1:Circle,2:Polygon + +None +Altitude +Circle +Altitude and Circle +Polygon +Altitude and Polygon +Circle and Polygon +All + + + + +Report Only +RTL or Land + + + +10 1000 +1 +Meters + + +30 10000 +Meters + + +1 10 +Meters + + +1 20 + + +-100 100 +1 +Meters + + + + + +Disabled +Enabled + + + +-200 +200 +1 + + +-200 +200 +1 + + +-18000 +18000 +1 + + +m + + +m + + +m + + +0 127 + + + + +True +True +1 +pascals + + +True +True +1 +degrees celsius + + +0.1 +meters + + + +FirstBaro +2ndBaro +3rdBaro + + + + +Disabled +Bus0 +Bus1 + + + +1.0:Freshwater,1.024:Saltwater + + +True +True +1 +pascals + + +True +True +1 +pascals + + + + + +None +AUTO +uBlox +MTK +MTK19 +NMEA +SiRF +HIL +SwiftNav +UAVCAN +SBF +GSOF +QURT +ERB +MAV +NOVA + +True + + + +None +AUTO +uBlox +MTK +MTK19 +NMEA +SiRF +HIL +SwiftNav +UAVCAN +SBF +GSOF +QURT +ERB +MAV +NOVA + +True + + + +Portable +Stationary +Pedestrian +Automotive +Sea +Airborne1G +Airborne2G +Airborne4G + + + + +Disabled +UseBest +Blend + + + + +Any +FloatRTK +IntegerRTK + +True + + + +Disabled +Enabled +NoChange + + + +-100 90 +Degrees + + + +send to first GPS +send to 2nd GPS +send to all + + + + +None (0x0000) +All (0xFFFF) +External only (0xFF00) + + + + +Disabled +log every sample +log every 5 samples + +True + + +0:GPS,1:SBAS,2:Galileo,3:Beidou,4:IMES,5:QZSS,6:GLOSNASS + +Leave as currently configured +GPS-NoSBAS +GPS+SBAS +Galileo-NoSBAS +Galileo+SBAS +Beidou +GPS+IMES+QZSS+SBAS (Japan Only) +GLONASS +GLONASS+SBAS +GPS+GLONASS+SBAS + + + + +Do not save config +Save config +Save only when needed + + + +0:GPS,1:SBAS,2:Galileo,3:Beidou,4:IMES,5:QZSS,6:GLOSNASS + +Leave as currently configured +GPS-NoSBAS +GPS+SBAS +Galileo-NoSBAS +Galileo+SBAS +Beidou +GPS+IMES+QZSS+SBAS (Japan Only) +GLONASS +GLONASS+SBAS +GPS+GLONASS+SBAS + + + + +Disables automatic configuration +Enable automatic configuration + + + +50 200 + +10Hz +8Hz +5Hz + +milliseconds + + +50 200 + +10Hz +8Hz +5Hz + +milliseconds + + +m + + +m + + +m + + +m + + +m + + +m + + +0 250 +milliseconds + + +0 250 +milliseconds + + +0:Horiz Pos,1:Vert Pos,2:Speed + + +5.0 30.0 +seconds + + + + + +Disabled +Enabled + + + + +None +Servo +EPM + + + +1000 2000 +PWM + + +1000 2000 +PWM + + +1000 2000 +PWM + + +0 255 +seconds + + +0 255 + + + + +-180 180 +1 +Degrees + + +-180 180 +1 +Degrees + + +-180 180 +1 +Degrees + + + +Servo only +Servo with ExtGyro +DirectDrive VarPitch +DirectDrive FixedPitch + + + + +3-Servo CCPM +H1 Mechanical Mixing + + + +0 1000 +1 +PWM + + +-90 90 +1 +Degrees + + +-10 10 +0.1 + + + +NoFlybar +Flybar + + + +0 1000 +1 +PWM + + +0 1000 +1 +PWM + + +0 2000 + + +0 2000 + + + +Reversed +Normal + + + +-180 180 +1 +Degrees + + +-180 180 +1 +Degrees + + +-180 180 +1 +Degrees + + +-180 180 +1 +Degrees + + +-180 180 +1 +Degrees + + +-180 180 +1 +Degrees + + +-90 90 +1 +Degrees + + +-90 90 +1 +Degrees + + + +Longitudinal +Transverse + + + +0 1 + + +-10 10 +0.1 + + +-10 10 +0.1 + + +0 2000 + + +0 2000 + + + +Reversed +Normal + + + +1000 2000 +1 +PWM + + +1000 2000 +1 +PWM + + +1000 2000 +1 +PWM + + +1000 2000 +1 +PWM + + +1000 2000 +1 +PWM + + +1000 2000 +1 +PWM + + + +Disabled +Passthrough +Max collective +Mid collective +Min collective + + + +0 1000 +10 +PWM + + + +Ch8 Input +SetPoint +Throttle Curve + + + +0 500 +1 +pwm + + +0 60 +Seconds + + +0 60 +Seconds + + +0 1000 +10 + + +0 500 +10 + + +0 1000 +10 + + +0 1000 +10 + + +0 18000 +100 +Centi-Degrees + + +0 10 +1 + + +1 1000 +10 + + +0 500 +10 + + + + + +Disabled +Enabled + + + + +None +Chan1 +Chan2 +Chan3 +Chan4 +Chan5 +Chan6 +Chan7 +Chan8 +Chan9 +Chan10 +Chan11 +Chan12 +Chan13 +Chan14 +Chan15 +Chan16 + + + +0.1 5 +Seconds + + +1 10 +Seconds + + +100 100000 + + +1000 2000 + + +1000 2000 + + +1000 2000 + + +1000 2000 + + + +None +RPM1 +RPM2 + + + +0 100 + + + + +0 500 +1 +Percent*10 + + +0 500 +1 +Percent*10 + + +500 1000 +1 +Percent*10 + + +500 1000 +1 +Percent*10 + + + +Disabled +Very Low +Low +Medium +High +Very High + + + + + + + +rad/s + + +rad/s + + +rad/s + + +rad/s + + +rad/s + + +rad/s + + +rad/s + + +rad/s + + +rad/s + + +0.8 1.2 + + +0.8 1.2 + + +0.8 1.2 + + +-3.5 3.5 +m/s/s + + +-3.5 3.5 +m/s/s + + +-3.5 3.5 +m/s/s + + +0.8 1.2 + + +0.8 1.2 + + +0.8 1.2 + + +-3.5 3.5 +m/s/s + + +-3.5 3.5 +m/s/s + + +-3.5 3.5 +m/s/s + + +0.8 1.2 + + +0.8 1.2 + + +0.8 1.2 + + +-3.5 3.5 +m/s/s + + +-3.5 3.5 +m/s/s + + +-3.5 3.5 +m/s/s + + +0 127 +Hz + + +0 127 +Hz + + + +Disabled +Enabled + + + + +Disabled +Enabled + + + + +Disabled +Enabled + + + +0.05 50 + + + +Never +Start-up only + + + + +Don't adjust the trims +Assume first orientation was level +Assume ACC_BODYFIX is perfectly aligned to the vehicle + + + + +IMU 1 +IMU 2 +IMU 3 + + + +m + + +m + + +m + + +m + + +m + + +m + + +m + + +m + + +m + + +True + + +True + + +True + + +True + + +True + + +True + + + + + + +0 5 +0.5 +meters + + +0 90 +0.1 +degrees + + +centi-Degrees + + +0.1 +meters + + +0.1 +seconds + + +0 30 +0.1 +meters + + +0 10 +0.1 +seconds + + +0 30 +0.1 +m/s + + +0 127 +1 +percent + + +0 127 +1 +seconds + + + +Disabled +Servos to Neutral +Servos to Zero PWM + + + + +Disabled +Enabled + + + +0 100 +Percent + + + +Standard Glide Slope + + + + + +0 20 +m/s + + + + + + +10 200 +meters + + +0 20 +m/s + + +0 2 +seconds + + +900 2100 +PWM + + +5 20 +m/s + + +5 20 +m/s + + +5 50 +meters + + +0 1 + + + + + + + + + + + + + + + +Disabled +Pixhawk Aux1 +Pixhawk Aux2 +Pixhawk Aux3 +Pixhawk Aux4 +Pixhawk Aux5 +Pixhawk Aux6 +Pixhawk 3.3ADC1 +Pixhawk 3.3ADC2 +Pixhawk 6.6ADC + + + + +Low +High + + + + +Disabled +Pixhawk Aux1 +Pixhawk Aux2 +Pixhawk Aux3 +Pixhawk Aux4 +Pixhawk Aux5 +Pixhawk Aux6 +Pixhawk 3.3ADC1 +Pixhawk 3.3ADC2 +Pixhawk 6.6ADC + + + + +Low +High + + + + +Disabled +Pixhawk Aux1 +Pixhawk Aux2 +Pixhawk Aux3 +Pixhawk Aux4 +Pixhawk Aux5 +Pixhawk Aux6 +Pixhawk 3.3ADC1 +Pixhawk 3.3ADC2 +Pixhawk 6.6ADC + + + + +Low +High + + + + + +1000 2000 +1 +pwm + + +1000 2000 +1 +pwm + + + + + +None +File +MAVLink +BothFileAndMAVLink + + + + + + +Disabled +Enabled + + + + +Disabled +Enabled + + + + +Disabled +Enabled + + + + + +0 32766 +1 + + + +Resume Mission +Restart Mission + + + + + + +Retracted +Neutral +MavLink Targeting +RC Targeting +GPS Point + + + +-180.00 179.99 +1 +Degrees + + +-180.00 179.99 +1 +Degrees + + +-180.00 179.99 +1 +Degrees + + +-180.00 179.99 +1 +Degrees + + +-180.00 179.99 +1 +Degrees + + +-180.00 179.99 +1 +Degrees + + + +Disabled +Enabled + + + + +Disabled +Enabled + + + + +Disabled +Enabled + + + + +Disabled +RC5 +RC6 +RC7 +RC8 +RC9 +RC10 +RC11 +RC12 + + + +-18000 17999 +1 +Centi-Degrees + + +-18000 17999 +1 +Centi-Degrees + + + +Disabled +RC5 +RC6 +RC7 +RC8 +RC9 +RC10 +RC11 +RC12 + + + +-18000 17999 +1 +Centi-Degrees + + +-18000 17999 +1 +Centi-Degrees + + + +Disabled +RC5 +RC6 +RC7 +RC8 +RC9 +RC10 +RC11 +RC12 + + + +-18000 17999 +1 +Centi-Degrees + + +-18000 17999 +1 +Centi-Degrees + + +0 100 +1 + + +0.0 0.2 +.005 +Seconds + + +0.0 0.2 +.005 +Seconds + + + +None +Servo +3DR Solo +Alexmos Serial +SToRM32 MAVLink +SToRM32 Serial + +True + + + +Retracted +Neutral +MavLink Targeting +RC Targeting +GPS Point + + + +-180.00 179.99 +1 +Degrees + + +-180.00 179.99 +1 +Degrees + + +-180.00 179.99 +1 +Degrees + + +-180.00 179.99 +1 +Degrees + + +-180.00 179.99 +1 +Degrees + + +-180.00 179.99 +1 +Degrees + + + +Disabled +Enabled + + + + +Disabled +Enabled + + + + +Disabled +Enabled + + + + +Disabled +RC5 +RC6 +RC7 +RC8 +RC9 +RC10 +RC11 +RC12 + + + +-18000 17999 +1 +Centi-Degrees + + +-18000 17999 +1 +Centi-Degrees + + + +Disabled +RC5 +RC6 +RC7 +RC8 +RC9 +RC10 +RC11 +RC12 + + + +-18000 17999 +1 +Centi-Degrees + + +-18000 17999 +1 +Centi-Degrees + + + +Disabled +RC5 +RC6 +RC7 +RC8 +RC9 +RC10 +RC11 +RC12 + + + +-18000 17999 +1 +Centi-Degrees + + +-18000 17999 +1 +Centi-Degrees + + +0.0 0.2 +.005 +Seconds + + +0.0 0.2 +.005 +Seconds + + + +None +Servo +3DR Solo +Alexmos Serial +SToRM32 MAVLink +SToRM32 Serial + + + + + + +normal +reverse + + + + +normal +reverse + + + + +normal +reverse + + + + +normal +reverse + + + + +normal +reverse + + + + +normal +reverse + + + + +normal +reverse + + + + +normal +reverse + + + +0.0 1.5 +0.1 + + +0 500 +pwm + + +0.25 0.8 + + +0.9:Low, 0.95:Default, 1.0:High + + +6 35 +Volts + + +6 35 +Volts + + +0 200 +Amps + + + +Normal +OneShot +OneShot125 +Brushed16kHz + +True + + +0 2000 + + +0 2000 + + +0.0:Low, 0.15:Default, 0.3:High + + +0.0:Low, 0.1:Default, 0.2:High + + +0 10 +Seconds + + +0.2 0.8 + + + +Disabled +Learn +LearnAndSave + + + + +PWM enabled while disarmed +PWM disabled while disarmed + + + +5 80 +1 +Degrees + + +0 2 +0.1 +Seconds + + + + +1 60 +1 +seconds + + +0.6 1.0 +0.05 + + +0 0.1 +0.01 + + +0 89 +degrees + + + + + +Off +Low +Medium +High + + + + +Disable +Enable + + + + +Disable +Enable + + + + +Disable +ssd1306 +sh1106 + + + + + + +Disabled +Enabled Always Land +Enabled Strict + + + + +None +CompanionComputer +IRLock +SITL_Gazebo +SITL + + + +0 360 +1 +Centi-degrees + + +-20 20 +1 +Centimeters + + +-20 20 +1 +Centimeters + + + +RawSensor +KalmanFilter + + + +0.5 5 + + +m + + +m + + +m + + + +DefaultBus +InternalI2C +ExternalI2C + + + + + + +None +LightWareSF40C +MAVLink +TeraRangerTower +RangeFinder + + + + +Default +Upside Down + + + +-180 180 +degrees + + +0 360 +degrees + + +0 45 +degrees + + +0 360 +degrees + + +0 45 +degrees + + +0 360 +degrees + + +0 45 +degrees + + +0 360 +degrees + + +0 45 +degrees + + +0 360 +degrees + + +0 45 +degrees + + +0 360 +degrees + + +0 45 +degrees + + + +None +LightWareSF40C +MAVLink +TeraRangerTower +RangeFinder + + + + +Default +Upside Down + + + +-180 180 +degrees + + + + +0.5 5 +0.1 +Hz + + + + +0.4 1.0 +0.1 +seconds + + +0.1 3.0 +0.1 + + +0 0.1 +0.01 + + +0 0.5 +0.05 + + +0 100 +1 +degrees/second + + +0 100 +1 +degrees/second + + +0.7 1.5 +0.05 + + +0 4500 +1 + + +0.1 4.0 +0.1 + + + + +0.08 0.30 +0.005 + + +0.01 0.5 +0.01 + + +0 1 +0.01 +Percent + + +0.0 0.02 +0.001 + + +0 0.5 +0.001 + + +1 100 +1 +Hz + + +0.08 0.30 +0.005 + + +0.01 0.5 +0.01 + + +0 1 +0.01 +Percent + + +0.0 0.02 +0.001 + + +0 0.5 +0.001 + + +1 100 +1 +Hz + + +0.10 0.50 +0.005 + + +0.010 0.05 +0.01 + + +0 1 +0.01 +Percent + + +0.000 0.02 +0.001 + + +0 0.5 +0.001 + + +1 100 +1 +Hz + + +0.1 0.25 + + +0.5 0.9 + + +0.5 0.9 + + + + + + +0.1 +kilometers + + + +DoNotIncludeHome +IncludeHome + + + + + +800 2200 +1 +pwm + + +800 2200 +1 +pwm + + +800 2200 +1 +pwm + + + +Normal +Reversed + + + +0 200 +pwm + + + + +800 2200 +1 +pwm + + +800 2200 +1 +pwm + + +800 2200 +1 +pwm + + + +Normal +Reversed + + + +0 200 +pwm + + + + +800 2200 +1 +pwm + + +800 2200 +1 +pwm + + +800 2200 +1 +pwm + + + +Normal +Reversed + + + +0 200 +pwm + + + + +800 2200 +1 +pwm + + +800 2200 +1 +pwm + + +800 2200 +1 +pwm + + + +Normal +Reversed + + + +0 200 +pwm + + + + +800 2200 +1 +pwm + + +800 2200 +1 +pwm + + +800 2200 +1 +pwm + + + +Normal +Reversed + + + +0 200 +pwm + + + + +800 2200 +1 +pwm + + +800 2200 +1 +pwm + + +800 2200 +1 +pwm + + + +Normal +Reversed + + + +0 200 +pwm + + + + +800 2200 +1 +pwm + + +800 2200 +1 +pwm + + +800 2200 +1 +pwm + + + +Normal +Reversed + + + +0 200 +pwm + + + + +800 2200 +1 +pwm + + +800 2200 +1 +pwm + + +800 2200 +1 +pwm + + + +Normal +Reversed + + + +0 200 +pwm + + + + +800 2200 +1 +pwm + + +800 2200 +1 +pwm + + +800 2200 +1 +pwm + + + +Normal +Reversed + + + +0 200 +pwm + + + + +800 2200 +1 +pwm + + +800 2200 +1 +pwm + + +800 2200 +1 +pwm + + + +Normal +Reversed + + + +0 200 +pwm + + + + +800 2200 +1 +pwm + + +800 2200 +1 +pwm + + +800 2200 +1 +pwm + + + +Normal +Reversed + + + +0 200 +pwm + + + + +800 2200 +1 +pwm + + +800 2200 +1 +pwm + + +800 2200 +1 +pwm + + + +Normal +Reversed + + + +0 200 +pwm + + + + +800 2200 +1 +pwm + + +800 2200 +1 +pwm + + +800 2200 +1 +pwm + + + +Normal +Reversed + + + +0 200 +pwm + + + + +800 2200 +1 +pwm + + +800 2200 +1 +pwm + + +800 2200 +1 +pwm + + + +Normal +Reversed + + + +0 200 +pwm + + + + +800 2200 +1 +pwm + + +800 2200 +1 +pwm + + +800 2200 +1 +pwm + + + +Normal +Reversed + + + +0 200 +pwm + + + + +800 2200 +1 +pwm + + +800 2200 +1 +pwm + + +800 2200 +1 +pwm + + + +Normal +Reversed + + + +0 200 +pwm + + + + +1 8 +1 +True + + +1 8 +1 +True + + +1 8 +1 +True + + +1 8 +1 +True + + +1 8 +1 +True + + +1 8 +1 +True + + + + + +Disabled +APM2 A9 pin +APM1 relay +Pixhawk AUXOUT1 +Pixhawk AUXOUT2 +Pixhawk AUXOUT3 +Pixhawk AUXOUT4 +Pixhawk AUXOUT5 +Pixhawk AUXOUT6 +PX4 FMU Relay1 +PX4 FMU Relay2 +PX4IO Relay1 +PX4IO Relay2 +PX4IO ACC1 +PX4IO ACC2 + + + + +Disabled +APM2 A9 pin +APM1 relay +Pixhawk AUXOUT1 +Pixhawk AUXOUT2 +Pixhawk AUXOUT3 +Pixhawk AUXOUT4 +Pixhawk AUXOUT5 +Pixhawk AUXOUT6 +PX4 FMU Relay1 +PX4 FMU Relay2 +PX4IO Relay1 +PX4IO Relay2 +PX4IO ACC1 +PX4IO ACC2 + + + + +Disabled +APM2 A9 pin +APM1 relay +Pixhawk AUXOUT1 +Pixhawk AUXOUT2 +Pixhawk AUXOUT3 +Pixhawk AUXOUT4 +Pixhawk AUXOUT5 +Pixhawk AUXOUT6 +PX4 FMU Relay1 +PX4 FMU Relay2 +PX4IO Relay1 +PX4IO Relay2 +PX4IO ACC1 +PX4IO ACC2 + + + + +Disabled +APM2 A9 pin +APM1 relay +Pixhawk AUXOUT1 +Pixhawk AUXOUT2 +Pixhawk AUXOUT3 +Pixhawk AUXOUT4 +Pixhawk AUXOUT5 +Pixhawk AUXOUT6 +PX4 FMU Relay1 +PX4 FMU Relay2 +PX4IO Relay1 +PX4IO Relay2 +PX4IO ACC1 +PX4IO ACC2 + + + + +Off +On +NoChange + + + + + +0.4 1.0 +0.1 +seconds + + +0.1 4.0 +0.1 + + +0 0.1 +0.01 + + +0 1.0 +0.05 + + +0 180 +1 +degrees/second + + +0 4500 +1 + + +0.1 4.0 +0.1 + + + + + +None +Analog +MaxbotixI2C +LidarLiteV2-I2C +PX4-PWM +BBB-PRU +LightWareI2C +LightWareSerial +Bebop +MAVLink +uLanding +LeddarOne +MaxbotixSerial +TrOneI2C +LidarLiteV3-I2C + + + + +Not Used +APM2-A0 +APM2-A1 +APM2-A2 +APM2-A3 +APM2-A4 +APM2-A5 +APM2-A6 +APM2-A7 +APM2-A8 +APM2-A9 +PX4-airspeed port +Pixhawk-airspeed port +APM1-airspeed port + + + +0.001 +meters/Volt + + +0.001 +Volts + + + +Linear +Inverted +Hyperbolic + + + +1 +centimeters + + +1 +centimeters + + + +Not Used +Pixhawk AUXOUT1 +Pixhawk AUXOUT2 +Pixhawk AUXOUT3 +Pixhawk AUXOUT4 +Pixhawk AUXOUT5 +Pixhawk AUXOUT6 +PX4 FMU Relay1 +PX4 FMU Relay2 +PX4IO Relay1 +PX4IO Relay2 +PX4IO ACC1 +PX4IO ACC2 + + + +1 +milliseconds + + + +No +Yes + + + +0 32767 +meters + + +5 127 +1 +centimeters + + +0 127 +1 + + +m + + +m + + +m + + + +Forward +Forward-Right +Right +Back-Right +Back +Back-Left +Left +Forward-Left +Up +Down + + + + +None +Analog +MaxbotixI2C +LidarLiteV2-I2C +PX4-PWM +BBB-PRU +LightWareI2C +LightWareSerial +Bebop +MAVLink +uLanding +LeddarOne +MaxbotixSerial +TrOneI2C +LidarLiteV3-I2C + + + + +Not Used +APM2-A0 +APM2-A1 +APM2-A2 +APM2-A3 +APM2-A4 +APM2-A5 +APM2-A6 +APM2-A7 +APM2-A8 +APM2-A9 +PX4-airspeed port +Pixhawk-airspeed port +APM1-airspeed port + + + +0.001 +meters/Volt + + +0.001 +Volts + + + +Linear +Inverted +Hyperbolic + + + +1 +centimeters + + +1 +centimeters + + + +Not Used +Pixhawk AUXOUT1 +Pixhawk AUXOUT2 +Pixhawk AUXOUT3 +Pixhawk AUXOUT4 +Pixhawk AUXOUT5 +Pixhawk AUXOUT6 +PX4 FMU Relay1 +PX4 FMU Relay2 +PX4IO Relay1 +PX4IO Relay2 +PX4IO ACC1 +PX4IO ACC2 + + + +1 +milliseconds + + + +No +Yes + + + +0 127 +1 +centimeters + + +0 127 +1 + + +m + + +m + + +m + + + +Forward +Forward-Right +Right +Back-Right +Back +Back-Left +Left +Forward-Left +Up +Down + + + + +None +Analog +MaxbotixI2C +LidarLiteV2-I2C +PX4-PWM +BBB-PRU +LightWareI2C +LightWareSerial +Bebop +MAVLink +uLanding +LeddarOne +MaxbotixSerial +TrOneI2C +LidarLiteV3-I2C + + + + +Not Used +APM2-A0 +APM2-A1 +APM2-A2 +APM2-A3 +APM2-A4 +APM2-A5 +APM2-A6 +APM2-A7 +APM2-A8 +APM2-A9 +PX4-airspeed port +Pixhawk-airspeed port +APM1-airspeed port + + + +0.001 +meters/Volt + + +0.001 +Volts + + + +Linear +Inverted +Hyperbolic + + + +1 +centimeters + + +1 +centimeters + + + +Not Used +Pixhawk AUXOUT1 +Pixhawk AUXOUT2 +Pixhawk AUXOUT3 +Pixhawk AUXOUT4 +Pixhawk AUXOUT5 +Pixhawk AUXOUT6 +PX4 FMU Relay1 +PX4 FMU Relay2 +PX4IO Relay1 +PX4IO Relay2 +PX4IO ACC1 +PX4IO ACC2 + + + +1 +milliseconds + + + +No +Yes + + + +0 127 +1 +centimeters + + +0 127 +1 + + +m + + +m + + +m + + + +Forward +Forward-Right +Right +Back-Right +Back +Back-Left +Left +Forward-Left +Up +Down + + + + +None +Analog +MaxbotixI2C +LidarLiteV2-I2C +PX4-PWM +BBB-PRU +LightWareI2C +LightWareSerial +Bebop +MAVLink +uLanding +LeddarOne +MaxbotixSerial +TrOneI2C +LidarLiteV3-I2C + + + + +Not Used +APM2-A0 +APM2-A1 +APM2-A2 +APM2-A3 +APM2-A4 +APM2-A5 +APM2-A6 +APM2-A7 +APM2-A8 +APM2-A9 +PX4-airspeed port +Pixhawk-airspeed port +APM1-airspeed port + + + +0.001 +meters/Volt + + +0.001 +Volts + + + +Linear +Inverted +Hyperbolic + + + +1 +centimeters + + +1 +centimeters + + + +Not Used +Pixhawk AUXOUT1 +Pixhawk AUXOUT2 +Pixhawk AUXOUT3 +Pixhawk AUXOUT4 +Pixhawk AUXOUT5 +Pixhawk AUXOUT6 +PX4 FMU Relay1 +PX4 FMU Relay2 +PX4IO Relay1 +PX4IO Relay2 +PX4IO ACC1 +PX4IO ACC2 + + + +1 +milliseconds + + + +No +Yes + + + +0 127 +1 +centimeters + + +0 127 +1 + + +m + + +m + + +m + + + +Forward +Forward-Right +Right +Back-Right +Back +Back-Left +Left +Forward-Left +Up +Down + + + + + + +None +PX4-PWM +AUXPIN + + + +0.001 + + +1 + + +1 + + +0.1 + + + +Disabled +PixhawkAUX1 +PixhawkAUX2 +PixhawkAUX3 +PixhawkAUX4 +PixhawkAUX5 +PixhawkAUX6 + + + + +None +PX4-PWM +AUXPIN + + + +0.001 + + + +Disabled +PixhawkAUX1 +PixhawkAUX2 +PixhawkAUX3 +PixhawkAUX4 +PixhawkAUX5 +PixhawkAUX6 + + + + + + +Disabled +AnalogPin +RCChannelPwmValue + + + + +APM2 A0 +APM2 A1 +APM2 A13 +Pixracer +Pixhawk ADC4 +Pixhawk ADC3 + Pixhawk ADC6 +Pixhawk SBUS + + + +0 5.0 +0.01 +Volt + + +0 5.0 +0.01 +Volt + + + + + +0 2000 +Microseconds + + +0 2000 +Microseconds + + + + + +Disabled +ShowSlips +ShowOverruns + + + + +50Hz +100Hz +200Hz +250Hz +300Hz +400Hz + +True + + + + + +1200 +2400 +4800 +9600 +19200 +38400 +57600 +111100 +115200 +460800 +500000 +921600 +1500000 + + + + +MAVlink1 +MAVLink2 + + + + +None +MAVLink1 +MAVLink2 +Frsky D +Frsky SPort +GPS +Alexmos Gimbal Serial +SToRM32 Gimbal Serial +Lidar +FrSky SPort Passthrough (OpenTX) +Lidar360 +Aerotenna uLanding +Beacon + + + + +1200 +2400 +4800 +9600 +19200 +38400 +57600 +111100 +115200 +500000 +921600 +1500000 + + + + +None +MAVLink1 +MAVLink2 +Frsky D +Frsky SPort +GPS +Alexmos Gimbal Serial +SToRM32 Gimbal Serial +Lidar +FrSky SPort Passthrough (OpenTX) +Lidar360 +Aerotenna uLanding +Beacon + + + + +1200 +2400 +4800 +9600 +19200 +38400 +57600 +111100 +115200 +500000 +921600 +1500000 + + + + +None +MAVLink1 +MAVLink2 +Frsky D +Frsky SPort +GPS +Alexmos Gimbal Serial +SToRM32 Gimbal Serial +Lidar +FrSky SPort Passthrough (OpenTX) +Lidar360 +Aerotenna uLanding +Beacon + + + + +1200 +2400 +4800 +9600 +19200 +38400 +57600 +111100 +115200 +500000 +921600 +1500000 + + + + +None +MAVLink1 +MAVLink2 +Frsky D +Frsky SPort +GPS +Alexmos Gimbal Serial +SToRM32 Gimbal Serial +Lidar +FrSky SPort Passthrough (OpenTX) +Lidar360 +Aerotenna uLanding +Beacon + + + + +1200 +2400 +4800 +9600 +19200 +38400 +57600 +111100 +115200 +500000 +921600 +1500000 + + + + +None +MAVLink1 +MAVLink2 +Frsky D +Frsky SPort +GPS +Alexmos Gimbal Serial +SToRM32 Gimbal Serial +Lidar +FrSky SPort Passthrough (OpenTX) +Lidar360 +Aerotenna uLanding +Beacon + + + + +1200 +2400 +4800 +9600 +19200 +38400 +57600 +111100 +115200 +500000 +921600 +1500000 + + + + + + +Disable +Enable + + + +0: Servo 1, 1: Servo 2, 2: Servo 3, 3: Servo 4, 4: Servo 5, 5: Servo 6, 6: Servo 7, 7: Servo 8, 8: Servo 9, 9: Servo 10, 10: Servo 11, 11: Servo 12, 12: Servo 13, 13: Servo 14, 14: Servo 15 + + +0: ESC 1, 1: ESC 2, 2: ESC 3, 3: ESC 4, 4: ESC 5, 5: ESC 6, 6: ESC 7, 7: ESC 8, 8: ESC 9, 9: ESC 10, 10: ESC 11, 11: ESC 12, 12: ESC 13, 13: ESC 14, 14: ESC 15, 15: ESC 16 + + + + +800 2200 +1 +pwm + + +800 2200 +1 +pwm + + +800 2200 +1 +pwm + + + +Normal +Reversed + + + + +Disabled +RCPassThru +Flap +Flap_auto +Aileron +mount_pan +mount_tilt +mount_roll +mount_open +camera_trigger +release +mount2_pan +mount2_tilt +mount2_roll +mount2_open +DifferentialSpoiler1 +DifferentialSpoiler2 +AileronWithInput +Elevator +ElevatorWithInput +Rudder +Flaperon1 +Flaperon2 +GroundSteering +Parachute +EPM +LandingGear +EngineRunEnable +HeliRSC +HeliTailRSC +Motor1 +Motor2 +Motor3 +Motor4 +Motor5 +Motor6 +Motor7 +Motor8 +MotorTilt +RCIN1 +RCIN2 +RCIN3 +RCIN4 +RCIN5 +RCIN6 +RCIN7 +RCIN8 +RCIN9 +RCIN10 +RCIN11 +RCIN12 +RCIN13 +RCIN14 +RCIN15 +RCIN16 +Ignition +Choke +Starter +Throttle +TrackerYaw +TrackerPitch +ThrottleLeft +ThrottleRight +tiltMotorLeft +tiltMotorRight +ElevonLeft +ElevonRight +VTailLeft +VTailRight + + + + + +800 2200 +1 +pwm + + +800 2200 +1 +pwm + + +800 2200 +1 +pwm + + + +Normal +Reversed + + + + +Disabled +RCPassThru +Flap +Flap_auto +Aileron +mount_pan +mount_tilt +mount_roll +mount_open +camera_trigger +release +mount2_pan +mount2_tilt +mount2_roll +mount2_open +DifferentialSpoiler1 +DifferentialSpoiler2 +AileronWithInput +Elevator +ElevatorWithInput +Rudder +Flaperon1 +Flaperon2 +GroundSteering +Parachute +EPM +LandingGear +EngineRunEnable +HeliRSC +HeliTailRSC +Motor1 +Motor2 +Motor3 +Motor4 +Motor5 +Motor6 +Motor7 +Motor8 +MotorTilt +RCIN1 +RCIN2 +RCIN3 +RCIN4 +RCIN5 +RCIN6 +RCIN7 +RCIN8 +RCIN9 +RCIN10 +RCIN11 +RCIN12 +RCIN13 +RCIN14 +RCIN15 +RCIN16 +Ignition +Choke +Starter +Throttle +TrackerYaw +TrackerPitch +ThrottleLeft +ThrottleRight +tiltMotorLeft +tiltMotorRight +ElevonLeft +ElevonRight +VTailLeft +VTailRight + + + + + +800 2200 +1 +pwm + + +800 2200 +1 +pwm + + +800 2200 +1 +pwm + + + +Normal +Reversed + + + + +Disabled +RCPassThru +Flap +Flap_auto +Aileron +mount_pan +mount_tilt +mount_roll +mount_open +camera_trigger +release +mount2_pan +mount2_tilt +mount2_roll +mount2_open +DifferentialSpoiler1 +DifferentialSpoiler2 +AileronWithInput +Elevator +ElevatorWithInput +Rudder +Flaperon1 +Flaperon2 +GroundSteering +Parachute +EPM +LandingGear +EngineRunEnable +HeliRSC +HeliTailRSC +Motor1 +Motor2 +Motor3 +Motor4 +Motor5 +Motor6 +Motor7 +Motor8 +MotorTilt +RCIN1 +RCIN2 +RCIN3 +RCIN4 +RCIN5 +RCIN6 +RCIN7 +RCIN8 +RCIN9 +RCIN10 +RCIN11 +RCIN12 +RCIN13 +RCIN14 +RCIN15 +RCIN16 +Ignition +Choke +Starter +Throttle +TrackerYaw +TrackerPitch +ThrottleLeft +ThrottleRight +tiltMotorLeft +tiltMotorRight +ElevonLeft +ElevonRight +VTailLeft +VTailRight + + + + + +800 2200 +1 +pwm + + +800 2200 +1 +pwm + + +800 2200 +1 +pwm + + + +Normal +Reversed + + + + +Disabled +RCPassThru +Flap +Flap_auto +Aileron +mount_pan +mount_tilt +mount_roll +mount_open +camera_trigger +release +mount2_pan +mount2_tilt +mount2_roll +mount2_open +DifferentialSpoiler1 +DifferentialSpoiler2 +AileronWithInput +Elevator +ElevatorWithInput +Rudder +Flaperon1 +Flaperon2 +GroundSteering +Parachute +EPM +LandingGear +EngineRunEnable +HeliRSC +HeliTailRSC +Motor1 +Motor2 +Motor3 +Motor4 +Motor5 +Motor6 +Motor7 +Motor8 +MotorTilt +RCIN1 +RCIN2 +RCIN3 +RCIN4 +RCIN5 +RCIN6 +RCIN7 +RCIN8 +RCIN9 +RCIN10 +RCIN11 +RCIN12 +RCIN13 +RCIN14 +RCIN15 +RCIN16 +Ignition +Choke +Starter +Throttle +TrackerYaw +TrackerPitch +ThrottleLeft +ThrottleRight +tiltMotorLeft +tiltMotorRight +ElevonLeft +ElevonRight +VTailLeft +VTailRight + + + + + +800 2200 +1 +pwm + + +800 2200 +1 +pwm + + +800 2200 +1 +pwm + + + +Normal +Reversed + + + + +Disabled +RCPassThru +Flap +Flap_auto +Aileron +mount_pan +mount_tilt +mount_roll +mount_open +camera_trigger +release +mount2_pan +mount2_tilt +mount2_roll +mount2_open +DifferentialSpoiler1 +DifferentialSpoiler2 +AileronWithInput +Elevator +ElevatorWithInput +Rudder +Flaperon1 +Flaperon2 +GroundSteering +Parachute +EPM +LandingGear +EngineRunEnable +HeliRSC +HeliTailRSC +Motor1 +Motor2 +Motor3 +Motor4 +Motor5 +Motor6 +Motor7 +Motor8 +MotorTilt +RCIN1 +RCIN2 +RCIN3 +RCIN4 +RCIN5 +RCIN6 +RCIN7 +RCIN8 +RCIN9 +RCIN10 +RCIN11 +RCIN12 +RCIN13 +RCIN14 +RCIN15 +RCIN16 +Ignition +Choke +Starter +Throttle +TrackerYaw +TrackerPitch +ThrottleLeft +ThrottleRight +tiltMotorLeft +tiltMotorRight +ElevonLeft +ElevonRight +VTailLeft +VTailRight + + + + + +800 2200 +1 +pwm + + +800 2200 +1 +pwm + + +800 2200 +1 +pwm + + + +Normal +Reversed + + + + +Disabled +RCPassThru +Flap +Flap_auto +Aileron +mount_pan +mount_tilt +mount_roll +mount_open +camera_trigger +release +mount2_pan +mount2_tilt +mount2_roll +mount2_open +DifferentialSpoiler1 +DifferentialSpoiler2 +AileronWithInput +Elevator +ElevatorWithInput +Rudder +Flaperon1 +Flaperon2 +GroundSteering +Parachute +EPM +LandingGear +EngineRunEnable +HeliRSC +HeliTailRSC +Motor1 +Motor2 +Motor3 +Motor4 +Motor5 +Motor6 +Motor7 +Motor8 +MotorTilt +RCIN1 +RCIN2 +RCIN3 +RCIN4 +RCIN5 +RCIN6 +RCIN7 +RCIN8 +RCIN9 +RCIN10 +RCIN11 +RCIN12 +RCIN13 +RCIN14 +RCIN15 +RCIN16 +Ignition +Choke +Starter +Throttle +TrackerYaw +TrackerPitch +ThrottleLeft +ThrottleRight +tiltMotorLeft +tiltMotorRight +ElevonLeft +ElevonRight +VTailLeft +VTailRight + + + + + +800 2200 +1 +pwm + + +800 2200 +1 +pwm + + +800 2200 +1 +pwm + + + +Normal +Reversed + + + + +Disabled +RCPassThru +Flap +Flap_auto +Aileron +mount_pan +mount_tilt +mount_roll +mount_open +camera_trigger +release +mount2_pan +mount2_tilt +mount2_roll +mount2_open +DifferentialSpoiler1 +DifferentialSpoiler2 +AileronWithInput +Elevator +ElevatorWithInput +Rudder +Flaperon1 +Flaperon2 +GroundSteering +Parachute +EPM +LandingGear +EngineRunEnable +HeliRSC +HeliTailRSC +Motor1 +Motor2 +Motor3 +Motor4 +Motor5 +Motor6 +Motor7 +Motor8 +MotorTilt +RCIN1 +RCIN2 +RCIN3 +RCIN4 +RCIN5 +RCIN6 +RCIN7 +RCIN8 +RCIN9 +RCIN10 +RCIN11 +RCIN12 +RCIN13 +RCIN14 +RCIN15 +RCIN16 +Ignition +Choke +Starter +Throttle +TrackerYaw +TrackerPitch +ThrottleLeft +ThrottleRight +tiltMotorLeft +tiltMotorRight +ElevonLeft +ElevonRight +VTailLeft +VTailRight + + + + + +800 2200 +1 +pwm + + +800 2200 +1 +pwm + + +800 2200 +1 +pwm + + + +Normal +Reversed + + + + +Disabled +RCPassThru +Flap +Flap_auto +Aileron +mount_pan +mount_tilt +mount_roll +mount_open +camera_trigger +release +mount2_pan +mount2_tilt +mount2_roll +mount2_open +DifferentialSpoiler1 +DifferentialSpoiler2 +AileronWithInput +Elevator +ElevatorWithInput +Rudder +Flaperon1 +Flaperon2 +GroundSteering +Parachute +EPM +LandingGear +EngineRunEnable +HeliRSC +HeliTailRSC +Motor1 +Motor2 +Motor3 +Motor4 +Motor5 +Motor6 +Motor7 +Motor8 +MotorTilt +RCIN1 +RCIN2 +RCIN3 +RCIN4 +RCIN5 +RCIN6 +RCIN7 +RCIN8 +RCIN9 +RCIN10 +RCIN11 +RCIN12 +RCIN13 +RCIN14 +RCIN15 +RCIN16 +Ignition +Choke +Starter +Throttle +TrackerYaw +TrackerPitch +ThrottleLeft +ThrottleRight +tiltMotorLeft +tiltMotorRight +ElevonLeft +ElevonRight +VTailLeft +VTailRight + + + + + +800 2200 +1 +pwm + + +800 2200 +1 +pwm + + +800 2200 +1 +pwm + + + +Normal +Reversed + + + + +Disabled +RCPassThru +Flap +Flap_auto +Aileron +mount_pan +mount_tilt +mount_roll +mount_open +camera_trigger +release +mount2_pan +mount2_tilt +mount2_roll +mount2_open +DifferentialSpoiler1 +DifferentialSpoiler2 +AileronWithInput +Elevator +ElevatorWithInput +Rudder +Flaperon1 +Flaperon2 +GroundSteering +Parachute +EPM +LandingGear +EngineRunEnable +HeliRSC +HeliTailRSC +Motor1 +Motor2 +Motor3 +Motor4 +Motor5 +Motor6 +Motor7 +Motor8 +MotorTilt +RCIN1 +RCIN2 +RCIN3 +RCIN4 +RCIN5 +RCIN6 +RCIN7 +RCIN8 +RCIN9 +RCIN10 +RCIN11 +RCIN12 +RCIN13 +RCIN14 +RCIN15 +RCIN16 +Ignition +Choke +Starter +Throttle +TrackerYaw +TrackerPitch +ThrottleLeft +ThrottleRight +tiltMotorLeft +tiltMotorRight +ElevonLeft +ElevonRight +VTailLeft +VTailRight + + + + + +800 2200 +1 +pwm + + +800 2200 +1 +pwm + + +800 2200 +1 +pwm + + + +Normal +Reversed + + + + +Disabled +RCPassThru +Flap +Flap_auto +Aileron +mount_pan +mount_tilt +mount_roll +mount_open +camera_trigger +release +mount2_pan +mount2_tilt +mount2_roll +mount2_open +DifferentialSpoiler1 +DifferentialSpoiler2 +AileronWithInput +Elevator +ElevatorWithInput +Rudder +Flaperon1 +Flaperon2 +GroundSteering +Parachute +EPM +LandingGear +EngineRunEnable +HeliRSC +HeliTailRSC +Motor1 +Motor2 +Motor3 +Motor4 +Motor5 +Motor6 +Motor7 +Motor8 +MotorTilt +RCIN1 +RCIN2 +RCIN3 +RCIN4 +RCIN5 +RCIN6 +RCIN7 +RCIN8 +RCIN9 +RCIN10 +RCIN11 +RCIN12 +RCIN13 +RCIN14 +RCIN15 +RCIN16 +Ignition +Choke +Starter +Throttle +TrackerYaw +TrackerPitch +ThrottleLeft +ThrottleRight +tiltMotorLeft +tiltMotorRight +ElevonLeft +ElevonRight +VTailLeft +VTailRight + + + + + +800 2200 +1 +pwm + + +800 2200 +1 +pwm + + +800 2200 +1 +pwm + + + +Normal +Reversed + + + + +Disabled +RCPassThru +Flap +Flap_auto +Aileron +mount_pan +mount_tilt +mount_roll +mount_open +camera_trigger +release +mount2_pan +mount2_tilt +mount2_roll +mount2_open +DifferentialSpoiler1 +DifferentialSpoiler2 +AileronWithInput +Elevator +ElevatorWithInput +Rudder +Flaperon1 +Flaperon2 +GroundSteering +Parachute +EPM +LandingGear +EngineRunEnable +HeliRSC +HeliTailRSC +Motor1 +Motor2 +Motor3 +Motor4 +Motor5 +Motor6 +Motor7 +Motor8 +MotorTilt +RCIN1 +RCIN2 +RCIN3 +RCIN4 +RCIN5 +RCIN6 +RCIN7 +RCIN8 +RCIN9 +RCIN10 +RCIN11 +RCIN12 +RCIN13 +RCIN14 +RCIN15 +RCIN16 +Ignition +Choke +Starter +Throttle +TrackerYaw +TrackerPitch +ThrottleLeft +ThrottleRight +tiltMotorLeft +tiltMotorRight +ElevonLeft +ElevonRight +VTailLeft +VTailRight + + + + + +800 2200 +1 +pwm + + +800 2200 +1 +pwm + + +800 2200 +1 +pwm + + + +Normal +Reversed + + + + +Disabled +RCPassThru +Flap +Flap_auto +Aileron +mount_pan +mount_tilt +mount_roll +mount_open +camera_trigger +release +mount2_pan +mount2_tilt +mount2_roll +mount2_open +DifferentialSpoiler1 +DifferentialSpoiler2 +AileronWithInput +Elevator +ElevatorWithInput +Rudder +Flaperon1 +Flaperon2 +GroundSteering +Parachute +EPM +LandingGear +EngineRunEnable +HeliRSC +HeliTailRSC +Motor1 +Motor2 +Motor3 +Motor4 +Motor5 +Motor6 +Motor7 +Motor8 +MotorTilt +RCIN1 +RCIN2 +RCIN3 +RCIN4 +RCIN5 +RCIN6 +RCIN7 +RCIN8 +RCIN9 +RCIN10 +RCIN11 +RCIN12 +RCIN13 +RCIN14 +RCIN15 +RCIN16 +Ignition +Choke +Starter +Throttle +TrackerYaw +TrackerPitch +ThrottleLeft +ThrottleRight +tiltMotorLeft +tiltMotorRight +ElevonLeft +ElevonRight +VTailLeft +VTailRight + + + + + +800 2200 +1 +pwm + + +800 2200 +1 +pwm + + +800 2200 +1 +pwm + + + +Normal +Reversed + + + + +Disabled +RCPassThru +Flap +Flap_auto +Aileron +mount_pan +mount_tilt +mount_roll +mount_open +camera_trigger +release +mount2_pan +mount2_tilt +mount2_roll +mount2_open +DifferentialSpoiler1 +DifferentialSpoiler2 +AileronWithInput +Elevator +ElevatorWithInput +Rudder +Flaperon1 +Flaperon2 +GroundSteering +Parachute +EPM +LandingGear +EngineRunEnable +HeliRSC +HeliTailRSC +Motor1 +Motor2 +Motor3 +Motor4 +Motor5 +Motor6 +Motor7 +Motor8 +MotorTilt +RCIN1 +RCIN2 +RCIN3 +RCIN4 +RCIN5 +RCIN6 +RCIN7 +RCIN8 +RCIN9 +RCIN10 +RCIN11 +RCIN12 +RCIN13 +RCIN14 +RCIN15 +RCIN16 +Ignition +Choke +Starter +Throttle +TrackerYaw +TrackerPitch +ThrottleLeft +ThrottleRight +tiltMotorLeft +tiltMotorRight +ElevonLeft +ElevonRight +VTailLeft +VTailRight + + + + + +800 2200 +1 +pwm + + +800 2200 +1 +pwm + + +800 2200 +1 +pwm + + + +Normal +Reversed + + + + +Disabled +RCPassThru +Flap +Flap_auto +Aileron +mount_pan +mount_tilt +mount_roll +mount_open +camera_trigger +release +mount2_pan +mount2_tilt +mount2_roll +mount2_open +DifferentialSpoiler1 +DifferentialSpoiler2 +AileronWithInput +Elevator +ElevatorWithInput +Rudder +Flaperon1 +Flaperon2 +GroundSteering +Parachute +EPM +LandingGear +EngineRunEnable +HeliRSC +HeliTailRSC +Motor1 +Motor2 +Motor3 +Motor4 +Motor5 +Motor6 +Motor7 +Motor8 +MotorTilt +RCIN1 +RCIN2 +RCIN3 +RCIN4 +RCIN5 +RCIN6 +RCIN7 +RCIN8 +RCIN9 +RCIN10 +RCIN11 +RCIN12 +RCIN13 +RCIN14 +RCIN15 +RCIN16 +Ignition +Choke +Starter +Throttle +TrackerYaw +TrackerPitch +ThrottleLeft +ThrottleRight +tiltMotorLeft +tiltMotorRight +ElevonLeft +ElevonRight +VTailLeft +VTailRight + + + + + +800 2200 +1 +pwm + + +800 2200 +1 +pwm + + +800 2200 +1 +pwm + + + +Normal +Reversed + + + + +Disabled +RCPassThru +Flap +Flap_auto +Aileron +mount_pan +mount_tilt +mount_roll +mount_open +camera_trigger +release +mount2_pan +mount2_tilt +mount2_roll +mount2_open +DifferentialSpoiler1 +DifferentialSpoiler2 +AileronWithInput +Elevator +ElevatorWithInput +Rudder +Flaperon1 +Flaperon2 +GroundSteering +Parachute +EPM +LandingGear +EngineRunEnable +HeliRSC +HeliTailRSC +Motor1 +Motor2 +Motor3 +Motor4 +Motor5 +Motor6 +Motor7 +Motor8 +MotorTilt +RCIN1 +RCIN2 +RCIN3 +RCIN4 +RCIN5 +RCIN6 +RCIN7 +RCIN8 +RCIN9 +RCIN10 +RCIN11 +RCIN12 +RCIN13 +RCIN14 +RCIN15 +RCIN16 +Ignition +Choke +Starter +Throttle +TrackerYaw +TrackerPitch +ThrottleLeft +ThrottleRight +tiltMotorLeft +tiltMotorRight +ElevonLeft +ElevonRight +VTailLeft +VTailRight + + + + + +800 2200 +1 +pwm + + +800 2200 +1 +pwm + + +800 2200 +1 +pwm + + + +Normal +Reversed + + + + +Disabled +RCPassThru +Flap +Flap_auto +Aileron +mount_pan +mount_tilt +mount_roll +mount_open +camera_trigger +release +mount2_pan +mount2_tilt +mount2_roll +mount2_open +DifferentialSpoiler1 +DifferentialSpoiler2 +AileronWithInput +Elevator +ElevatorWithInput +Rudder +Flaperon1 +Flaperon2 +GroundSteering +Parachute +EPM +LandingGear +EngineRunEnable +HeliRSC +HeliTailRSC +Motor1 +Motor2 +Motor3 +Motor4 +Motor5 +Motor6 +Motor7 +Motor8 +MotorTilt +RCIN1 +RCIN2 +RCIN3 +RCIN4 +RCIN5 +RCIN6 +RCIN7 +RCIN8 +RCIN9 +RCIN10 +RCIN11 +RCIN12 +RCIN13 +RCIN14 +RCIN15 +RCIN16 +Ignition +Choke +Starter +Throttle +TrackerYaw +TrackerPitch +ThrottleLeft +ThrottleRight +tiltMotorLeft +tiltMotorRight +ElevonLeft +ElevonRight +VTailLeft +VTailRight + + + + + + +Disable +Enable + + + +0 10 +m/s + + +0 100 +metres + + +0 32768 +seconds + + +0 32768 +seconds + + +0 0.5 +m*m/s/s + + +0 1000.0 +meters + + +0 1000.0 +meters + + +0 1000.0 +meters + + +0 16 + + + + + + + + + + + + + + + +Disabled +Enabled + + + +0 100 +percentage + + +1000 2000 +ms + + +0 1000 +cm/s + + +0 100 +percentage + + + + + + +seconds + + +seconds + + +seconds + + + + +0.4 1.0 +0.1 +seconds + + +0.1 10.0 +0.1 + + +0 1.0 +0.05 + + +0 0.1 +0.01 + + +0 4500 +1 + + +0 5 +0.1 +m/s + + +0.0 10.0 +0.1 + + +0.0 30.0 +0.1 +m/s + + +0.0 50.0 +0.1 +degree/(m/s) + + +0.0 4500.0 +0.1 +Centidegrees + + + + +0.1 20.0 +0.1 + + +0.1 10.0 +0.1 + + +3.0 10.0 +0.2 + + +0.1 1.0 +0.1 + + +0.0 0.5 +0.02 + + +1.0 10.0 +0.5 + + +1.0 5.0 +0.05 + + +0.5 2.0 +0.05 + + +5.0 30.0 +1.0 + + +0.0 2.0 +0.1 + + +0.1 1.0 +0.1 + + +0.0 20.0 +0.1 + + +-1 127 +1 + + +-1 100 +0.1 + + +-1.0 2.0 +0.1 + + +0 45 +1 + + +-45 0 +1 + + +0.0 2.0 +0.1 + + +1.0 5.0 +0.2 + + +0.1 1.0 +0.1 + + +-5 40 +1 + + +0.0 20.0 +0.1 +m/s + + +-2.0 2.0 +0.1 +m/s/m + + +0.1 1.0 +0.1 + + +0.0 0.5 +0.02 + + +0.0 0.5 +0.02 + + +0.1 1.0 +0.1 + + + +Disable +Enable + + + + + + +Disable +Enable + + + +1 +meters + + + + + +Disable +Chan5 +Chan6 +Chan7 +Chan8 +Chan9 +Chan10 +Chan11 +Chan12 +Chan13 +Chan14 +Chan15 +Chan16 + + + +900 2100 + + +900 2100 + + + +Disable +Chan1 +Chan3 +Chan3 +Chan4 +Chan5 +Chan6 +Chan7 +Chan8 +Chan9 +Chan10 +Chan11 +Chan12 +Chan13 +Chan14 +Chan15 +Chan16 + + + + + + +Disable +Enable + + + +0 1 + + + + + +None +MAV + + + +m + + +m + + +m + + + +Forward +Right +Back +Left +Up +Down + + + + + +20 2000 +50 +cm/s + + +100 1000 +1 +cm + + +10 1000 +50 +cm/s + + +10 500 +10 +cm/s + + +20 2000 +50 +cm/s + + +50 500 +10 +cm/s/s + + +50 500 +10 +cm/s/s + + +500 5000 +1 +cm/s/s/s + + +100 981 +1 +cm/s/s + + +25 250 +1 +cm/s/s + + + +Disable +Enable + + + + + +0 4 +0.25 + + +0 2 +0.25 + + +0 2 +0.25 + + +0.8 1.2 +0.05 + + +0 4500 +1 + + + diff --git a/src/FirmwarePlugin/APM/APMParameterFactMetaData.Copter.3.6.xml b/src/FirmwarePlugin/APM/APMParameterFactMetaData.Copter.3.6.xml new file mode 100644 index 0000000..70e35ad --- /dev/null +++ b/src/FirmwarePlugin/APM/APMParameterFactMetaData.Copter.3.6.xml @@ -0,0 +1,9401 @@ + + + + + + +True + + +True + +ArduPlane +AntennaTracker +Copter +Rover +ArduSub + + + +1 255 + + + +Mission Planner and DroidPlanner + AP Planner 2 + + + +0 10 +.5 +Hz +hertz + + +0.0 1000.0 +10 +cm +centimeters + + +0 500 +10 + + +0:Feedback from mid stick,1:High throttle cancels landing,2:Disarm on land detection + +None +Feedback from mid stick +High throttle cancels landing +Disarm on land detection + + + +0 30 +1 +s +seconds + + +0:Roll,1:Pitch,2:Yaw + +None +Roll +Pitch +Yaw + + + +0 8000 +1 +cm +centimeters + + +0.5 10.0 + +Disabled +Shallow +Steep + +.1 + + +0 2000 +50 +cm/s +centimeters per second + + +-1 1000 +1 +cm +centimeters + + +0 3000 +10 +cm +centimeters + + +0 60000 +1000 +ms +milliseconds + + +0.01 2.0 +0.01 + + + +Disabled +Enabled always RTL +Enabled Continue with Mission in Auto Mode +Enabled always SmartRTL or RTL +Enabled always SmartRTL or Land + + + +100 900 + + + +Disabled +Enabled + + + + +Disabled +Mode1 +Mode2 +Mode1+2 +Mode3 +Mode1+3 +Mode2+3 +Mode1+2+3 +Mode4 +Mode1+4 +Mode2+4 +Mode1+2+4 +Mode3+4 +Mode1+3+4 +Mode2+3+4 +Mode1+2+3+4 +Mode5 +Mode1+5 +Mode2+5 +Mode1+2+5 +Mode3+5 +Mode1+3+5 +Mode2+3+5 +Mode1+2+3+5 +Mode4+5 +Mode1+4+5 +Mode2+4+5 +Mode1+2+4+5 +Mode3+4+5 +Mode1+3+4+5 +Mode2+3+4+5 +Mode1+2+3+4+5 +Mode6 +Mode1+6 +Mode2+6 +Mode1+2+6 +Mode3+6 +Mode1+3+6 +Mode2+3+6 +Mode1+2+3+6 +Mode4+6 +Mode1+4+6 +Mode2+4+6 +Mode1+2+4+6 +Mode3+4+6 +Mode1+3+4+6 +Mode2+3+4+6 +Mode1+2+3+4+6 +Mode5+6 +Mode1+5+6 +Mode2+5+6 +Mode1+2+5+6 +Mode3+5+6 +Mode1+3+5+6 +Mode2+3+5+6 +Mode1+2+3+5+6 +Mode4+5+6 +Mode1+4+5+6 +Mode2+4+5+6 +Mode1+2+4+5+6 +Mode3+4+5+6 +Mode1+3+4+5+6 +Mode2+3+4+5+6 +Mode1+2+3+4+5+6 + + + + +Never change yaw +Face next waypoint +Face next waypoint except RTL +Face along GPS course + + + +30 200 +10 +cm/s +centimeters per second + + +0 500 +10 +cm/s +centimeters per second + + +50 500 +10 +cm/s +centimeters per second + + +50 500 +10 +cm/s/s +centimeters per square second + + + +Disabled +Enabled always RTL +Enabled Continue with Mission in Auto Mode +Enabled always Land +Enabled always SmartRTL or RTL +Enabled always SmartRTL or Land + + + +925 1100 +1 +PWM +PWM in microseconds + + +0 300 +1 +PWM +PWM in microseconds + + + +Stabilize +Acro +AltHold +Auto +Guided +Loiter +RTL +Circle +Land +Drift +Sport +Flip +AutoTune +PosHold +Brake +Throw +Avoid_ADSB +Guided_NoGPS +Smart_RTL +FlowHold +Follow + + + + +Stabilize +Acro +AltHold +Auto +Guided +Loiter +RTL +Circle +Land +Drift +Sport +Flip +AutoTune +PosHold +Brake +Throw +Avoid_ADSB +Guided_NoGPS +Smart_RTL +FlowHold +Follow + + + + +Stabilize +Acro +AltHold +Auto +Guided +Loiter +RTL +Circle +Land +Drift +Sport +Flip +AutoTune +PosHold +Brake +Throw +Avoid_ADSB +Guided_NoGPS +Smart_RTL +FlowHold +Follow + + + + +Stabilize +Acro +AltHold +Auto +Guided +Loiter +RTL +Circle +Land +Drift +Sport +Flip +AutoTune +PosHold +Brake +Throw +Avoid_ADSB +Guided_NoGPS +Smart_RTL +FlowHold +Follow + + + + +Stabilize +Acro +AltHold +Auto +Guided +Loiter +RTL +Circle +Land +Drift +Sport +Flip +AutoTune +PosHold +Brake +Throw +Avoid_ADSB +Guided_NoGPS +Smart_RTL +FlowHold +Follow + + + + +Stabilize +Acro +AltHold +Auto +Guided +Loiter +RTL +Circle +Land +Drift +Sport +Flip +AutoTune +PosHold +Brake +Throw +Avoid_ADSB +Guided_NoGPS +Smart_RTL +FlowHold +Follow + + + + +Disabled +Channel5 +Channel6 +Channel7 +Channel8 + + + + + +0:ATTITUDE_FAST,1:ATTITUDE_MED,2:GPS,3:PM,4:CTUN,5:NTUN,6:RCIN,7:IMU,8:CMD,9:CURRENT,10:RCOUT,11:OPTFLOW,12:PID,13:COMPASS,14:INAV,15:CAMERA,17:MOTBATT,18:IMU_FAST,19:IMU_RAW + +Default +Default+RCIN +Default+IMU +Default+Motors +NearlyAll-AC315 +NearlyAll +All+FastATT +All+MotBatt +All+FastIMU +All+FastIMU+PID +All+FullIMU +Disabled + + + + +Normal Start-up +Start-up in ESC Calibration mode if throttle high +Start-up in ESC Calibration mode regardless of throttle +Start-up and automatically calibrate ESCs +Disabled + + + + +None +Stab Roll/Pitch kP +Rate Roll/Pitch kP +Rate Roll/Pitch kI +Rate Roll/Pitch kD +Stab Yaw kP +Rate Yaw kP +Rate Yaw kD +Rate Yaw Filter +Motor Yaw Headroom +AltHold kP +Throttle Rate kP +Throttle Accel kP +Throttle Accel kI +Throttle Accel kD +Loiter Pos kP +Velocity XY kP +Velocity XY kI +WP Speed +Acro RollPitch kP +Acro Yaw kP +RC Feel +Heli Ext Gyro +Declination +Circle Rate +RangeFinder Gain +Rate Pitch kP +Rate Pitch kI +Rate Pitch kD +Rate Roll kP +Rate Roll kI +Rate Roll kD +Rate Pitch FF +Rate Roll FF +Rate Yaw FF +Winch + + + +0 32767 + + +0 32767 + + + +Plus +X +V +H +V-Tail +A-Tail +Y6B + +True + + + +Do Nothing +Flip +Simple Mode +RTL +Save Trim +Save WP +Camera Trigger +RangeFinder +Fence +Super Simple Mode +Acro Trainer +Sprayer +Auto +AutoTune +Land +Gripper +Parachute Enable +Parachute Release +Parachute 3pos +Auto Mission Reset +AttCon Feed Forward +AttCon Accel Limits +Retract Mount +Relay On/Off +Relay2 On/Off +Relay3 On/Off +Relay4 On/Off +Landing Gear +Lost Copter Sound +Motor Emergency Stop +Motor Interlock +Brake +Throw +ADSB-Avoidance +PrecLoiter +Object Avoidance +ArmDisarm +SmartRTL +InvertedFlight +Winch Enable +WinchControl + + + + +Do Nothing +Flip +Simple Mode +RTL +Save Trim +Save WP +Camera Trigger +RangeFinder +Fence +Super Simple Mode +Acro Trainer +Sprayer +Auto +AutoTune +Land +Gripper +Parachute Enable +Parachute Release +Parachute 3pos +Auto Mission Reset +AttCon Feed Forward +AttCon Accel Limits +Retract Mount +Relay On/Off +Relay2 On/Off +Relay3 On/Off +Relay4 On/Off +Landing Gear +Lost Copter Sound +Motor Emergency Stop +Motor Interlock +Brake +Throw +ADSB-Avoidance +PrecLoiter +Object Avoidance +ArmDisarm +SmartRTL +InvertedFlight +Winch Enable +WinchControl + + + + +Do Nothing +Flip +Simple Mode +RTL +Save Trim +Save WP +Camera Trigger +RangeFinder +Fence +Super Simple Mode +Acro Trainer +Sprayer +Auto +AutoTune +Land +Gripper +Parachute Enable +Parachute Release +Parachute 3pos +Auto Mission Reset +AttCon Feed Forward +AttCon Accel Limits +Retract Mount +Relay On/Off +Relay2 On/Off +Relay3 On/Off +Relay4 On/Off +Landing Gear +Lost Copter Sound +Motor Emergency Stop +Motor Interlock +Brake +Throw +ADSB-Avoidance +PrecLoiter +Object Avoidance +ArmDisarm +SmartRTL +InvertedFlight +Winch Enable +WinchControl + + + + +Do Nothing +Flip +Simple Mode +RTL +Save Trim +Save WP +Camera Trigger +RangeFinder +Fence +Super Simple Mode +Acro Trainer +Sprayer +Auto +AutoTune +Land +Gripper +Parachute Enable +Parachute Release +Parachute 3pos +Auto Mission Reset +AttCon Feed Forward +AttCon Accel Limits +Retract Mount +Relay On/Off +Relay2 On/Off +Relay3 On/Off +Relay4 On/Off +Landing Gear +Lost Copter Sound +Motor Emergency Stop +Motor Interlock +Brake +Throw +ADSB-Avoidance +PrecLoiter +Object Avoidance +ArmDisarm +SmartRTL +InvertedFlight +Winch Enable +WinchControl + + + + +Do Nothing +Flip +Simple Mode +RTL +Save Trim +Save WP +Camera Trigger +RangeFinder +Fence +Super Simple Mode +Acro Trainer +Sprayer +Auto +AutoTune +Land +Gripper +Parachute Enable +Parachute Release +Parachute 3pos +Auto Mission Reset +AttCon Feed Forward +AttCon Accel Limits +Retract Mount +Relay On/Off +Relay2 On/Off +Relay3 On/Off +Relay4 On/Off +Landing Gear +Lost Copter Sound +Motor Emergency Stop +Motor Interlock +Brake +Throw +ADSB-Avoidance +PrecLoiter +Object Avoidance +ArmDisarm +SmartRTL +InvertedFlight +Winch Enable +WinchControl + + + + +Do Nothing +Flip +Simple Mode +RTL +Save Trim +Save WP +Camera Trigger +RangeFinder +Fence +Super Simple Mode +Acro Trainer +Sprayer +Auto +AutoTune +Land +Gripper +Parachute Enable +Parachute Release +Parachute 3pos +Auto Mission Reset +AttCon Feed Forward +AttCon Accel Limits +Retract Mount +Relay On/Off +Relay2 On/Off +Relay3 On/Off +Relay4 On/Off +Landing Gear +Lost Copter Sound +Motor Emergency Stop +Motor Interlock +Brake +Throw +ADSB-Avoidance +PrecLoiter +Object Avoidance +ArmDisarm +SmartRTL +InvertedFlight +Winch Enable +WinchControl + + + +0 127 +s +seconds + + +1000 8000 +cdeg +centidegrees + + +4 12 +deg/s +degrees per second + + +2000 4500 +cdeg +centidegrees + + + +No repositioning +Repositioning + + + + +Land +AltHold +Land even in Stabilize + + + +0.6:Strict, 0.8:Default, 1.0:Relaxed + + + +Disabled +Enabled + + + +50 490 +1 +Hz +hertz + + +1 10 + + +1 10 + + +0 3 +0.1 + + +0 3 +0.1 + + + +Disabled +Leveling +Leveling and Limited + + + +-0.5 1.0 + +Disabled +Very Low +Low +Medium +High +Very High + + + +0:Roll,1:Pitch,2:Yaw + +All +Roll Only +Pitch Only +Yaw Only +Roll and Pitch +Roll and Yaw +Pitch and Yaw + + + +0.05 0.10 + + +0.001 0.006 + + + +Stopped +Running + + + + +Do Not Use in RTL and Land +Use in RTL and Land + + + +0 5 + + + +Auto +Guided +LOITER +RTL +Land +Brake +Throw + + + + +Upward Throw +Drop + + + + +Disabled +Enabled + + + +0:ADSBMavlinkProcessing + + +-0.5 1.0 + +Disabled +Very Low +Low +Medium +High +Very High + + + +0 1 + + + +NotEnforced +Enforced + + + + +Undefined +Quad +Hexa +Octa +OctaQuad +Y6 +Heli +Tri +SingleCopter +CoaxCopter +Heli_Dual +DodecaHexa +HeliQuad + +True + + +50 500 +10 +cm/s +centimeters per second + + +100 10000 +10 +cm +centimeters + + + + + +Disabled +Enabled + + + +1 100 + + +1 100000 + + +-1 16777215 + + + +NoInfo +Light +Small +Large +HighVortexlarge +Heavy +HighlyManuv +Rotocraft +RESERVED +Glider +LightAir +Parachute +UltraLight +RESERVED +UAV +Space +RESERVED +EmergencySurface +ServiceSurface +PointObstacle + + + + +NO_DATA +L15W23 +L25W28P5 +L25W34 +L35W33 +L35W38 +L45W39P5 +L45W45 +L55W45 +L55W52 +L65W59P5 +L65W67 +L75W72P5 +L75W80 +L85W80 +L85W90 + + + + +NoData +Left2m +Left4m +Left6m +Center +Right2m +Right4m +Right6m + + + + +NO_DATA +AppliedBySensor + + + + +Disabled +Rx-Only +Tx-Only +Rx and Tx Enabled + + + +octal +octal + + +0:UAT_in,1:1090ES_in,2:UAT_out,3:1090ES_out + +Unknown +Rx UAT only +Rx UAT and 1090ES +Rx&Tx UAT and 1090ES + + + + + + + + + + + + + + + + + + + + + +m +meters + + +m +meters + + +mbar +millibar + + + + + + + + + + + + + + +s +seconds + + + + +0.0 1.0 +.01 + + + +Disabled +Enabled + + + +0.1 0.4 +.01 + + +0.1 0.4 +.01 + + +0 127 +1 +m/s +meters per second + + +-0.1745 +0.1745 +0.01 +rad +radians + + +-0.1745 +0.1745 +0.01 +rad +radians + + +-0.1745 +0.1745 +0.01 +rad +radians + + + +None +Yaw45 +Yaw90 +Yaw135 +Yaw180 +Yaw225 +Yaw270 +Yaw315 +Roll180 +Roll180Yaw45 +Roll180Yaw90 +Roll180Yaw135 +Pitch180 +Roll180Yaw225 +Roll180Yaw270 +Roll180Yaw315 +Roll90 +Roll90Yaw45 +Roll90Yaw90 +Roll90Yaw135 +Roll270 +Roll270Yaw45 +Roll270Yaw90 +Roll270Yaw135 +Pitch90 +Pitch270 +Pitch180Yaw90 +Pitch180Yaw270 +Roll90Pitch90 +Roll180Pitch90 +Roll270Pitch90 +Roll90Pitch180 +Roll270Pitch180 +Roll90Pitch270 +Roll180Pitch270 +Roll270Pitch270 +Roll90Pitch180Yaw90 +Roll90Yaw270 +Yaw293Pitch68Roll180 +Pitch315 +Roll90Pitch315 +Custom + + + +0.001 0.5 +.01 + + +0 10 +1 + + + +Disabled +Enable EKF2 +Enable EKF3 + + + +-180 180 +1 +deg +degrees + + +-180 180 +1 +deg +degrees + + +-180 180 +1 +deg +degrees + + + + + +Disabled +THR_MIN PWM when disarmed +0 PWM when disarmed + + + +0:All,1:Barometer,2:Compass,3:GPS lock,4:INS,5:Parameters,6:RC Channels,7:Board voltage,8:Battery Level,10:Logging Available,11:Hardware safety switch,12:GPS Configuration + +None +All +Barometer +Compass +GPS Lock +INS(INertial Sensors - accels & gyros) +Parameters(unused) +RC Channels +Board voltage +Battery Level +LoggingAvailable +Hardware safety switch +GPS configuration + + + +0.25 3.0 +m/s/s +meters per square second + + +0.1 +V +volt + + +0.1 +V +volt + + + + +500 18000 +100 +cdeg/s +centidegrees per second + + +0 72000 + +Disabled +VerySlow +Slow +Medium +Fast + +1000 +cdeg/s/s +centidegrees per square second + + + +Disabled +Enabled + + + +0 180000 + +Disabled +VerySlow +Slow +Medium +Fast + +1000 +cdeg/s/s +centidegrees per square second + + +0 180000 + +Disabled +VerySlow +Slow +Medium +Fast + +1000 +cdeg/s/s +centidegrees per square second + + + +Disabled +Enabled + + + +3.000 12.000 + + +3.000 12.000 + + +3.000 6.000 + + +0.5 10.0 + + +0 1080 + +Disabled +Slow +Medium +Fast + +1 +deg/s +degrees per second + + +0 1080 + +Disabled +Slow +Medium +Fast + +1 +deg/s +degrees per second + + +0 1080 + +Disabled +Slow +Medium +Fast + +1 +deg/s +degrees per second + + +0 1 +0.5:Very Soft, 0.2:Soft, 0.15:Medium, 0.1:Crisp, 0.05:Very Crisp +0.01 +s +seconds + + +0.05 0.5 +0.005 + + +0.01 2.0 +0.01 + + +0 1 +0.01 +% +percent + + +0.0 0.02 +0.001 + + +0 0.5 +0.001 + + +1 100 +1 +Hz +hertz + + +0.05 0.50 +0.005 + + +0.01 2.0 +0.01 + + +0 1 +0.01 +% +percent + + +0.0 0.02 +0.001 + + +0 0.5 +0.001 + + +1 100 +1 +Hz +hertz + + +0.10 2.50 +0.005 + + +0.010 1.0 +0.01 + + +0 1 +0.01 +% +percent + + +0.000 0.02 +0.001 + + +0 0.5 +0.001 + + +1 10 +1 +Hz +hertz + + +0.1 0.25 + + +0.5 0.9 + + +0.1 0.9 + + +0 1000 +cdeg +centidegrees + + +0.08 0.35 +0.005 + + +0.01 0.6 +0.01 + + +0 1 +0.01 + + +0.001 0.03 +0.001 + + +0 0.5 +0.001 + + +1 20 +1 +Hz +hertz + + +0.08 0.35 +0.005 + + +0.01 0.6 +0.01 + + +0 1 +0.01 + + +0.001 0.03 +0.001 + + +0 0.5 +0.001 + + +1 20 +1 +Hz +hertz + + +0.180 0.60 +0.005 + + +0.01 0.06 +0.01 + + +0 1 +0.01 + + +0.000 0.02 +0.001 + + +0 0.5 +0.001 + + +1 20 +1 +Hz +hertz + + + +Disabled +Enabled + + + + + + +Disabled +Enabled + + + + +Remain in AVOID_ADSB +Resume previous flight mode +RTL +Resume if AUTO else Loiter + + + + + +s +seconds + + +s +seconds + + +m +meters + + +m +meters + + +m +meters + + +m +meters + + +m +meters + + + + +0:StopAtFence,1:UseProximitySensor,2:StopAtBeaconFence + +None +StopAtFence +UseProximitySensor +StopAtFence and UseProximitySensor +StopAtBeaconFence +All + + + +0 4500 +cdeg +centidegrees + + +1 30 +m +meters + + +1 10 +m +meters + + + +Slide +Stop + + + + + + +Disabled +Analog Voltage Only +Analog Voltage and Current +Solo +Bebop +SMBus-Maxell +UAVCAN-BatteryInfo + + + + +Disabled +A0 +A1 +Pixhawk/Pixracer/Navio2/Pixhawk2_PM1 +Pixhawk2_PM2 +PX4-v1 + + + + +Disabled +A1 +A2 +Pixhawk/Pixracer/Navio2/Pixhawk2_PM1 +Pixhawk2_PM2 +PX4-v1 + + + + + +A/V +ampere per volt + + +V +volt + + +50 +mAh +milliampere hour + + +1 +W +watt + + + + +0 120 +1 +s +seconds + + + +Raw Voltage +Sag Compensated Voltage + + + +0.1 +V +volt + + +50 +mAh +milliampere hour + + +0.1 +V +volt + + +50 +mAh +milliampere hour + + + +None +Land +RTL +SmartRTL +SmartRTL or Land +Terminate + + + + +None +Land +RTL +SmartRTL +SmartRTL or Land +Terminate + + + + + + +Disabled +Analog Voltage Only +Analog Voltage and Current +Solo +Bebop +SMBus-Maxell +UAVCAN-BatteryInfo + + + + +Disabled +A0 +A1 +Pixhawk/Pixracer/Navio2/Pixhawk2_PM1 +Pixhawk2_PM2 +PX4-v1 + + + + +Disabled +A1 +A2 +Pixhawk/Pixracer/Navio2/Pixhawk2_PM1 +Pixhawk2_PM2 +PX4-v1 + + + + + +A/V +ampere per volt + + +V +volt + + +50 +mAh +milliampere hour + + +1 +W +watt + + + + +0 120 +1 +s +seconds + + + +Raw Voltage +Sag Compensated Voltage + + + +0.1 +V +volt + + +50 +mAh +milliampere hour + + +0.1 +V +volt + + +50 +mAh +milliampere hour + + + +None +Land +RTL +SmartRTL +SmartRTL or Land +Terminate + + + + +None +Land +RTL +SmartRTL +SmartRTL or Land +Terminate + + + + + + +None +Pozyx +Marvelmind + + + +-90 90 +0.000001 +deg +degrees + + +-180 180 +0.000001 +deg +degrees + + +0 10000 +1 +m +meters + + +-180 +180 +1 +deg +degrees + + + + + +No PWMs +Two PWMs +Four PWMs +Six PWMs +Three PWMs and One Capture + +True + + + +Disabled +Enabled +Auto + +True + + + +Disabled +Enabled +Auto + +True + + + +Disabled +Enabled + +True + + + +Disabled +50Hz +75Hz +100Hz +150Hz +200Hz +250Hz +300Hz + +True + + +-32768 32767 + + +0:Ch1,1:Ch2,2:Ch3,3:Ch4,4:Ch5,5:Ch6,6:Ch7,7:Ch8,8:Ch9,9:Ch10,10:Ch11,11:Ch12,12:Ch13,13:Ch14 + +Disabled +Enabled + +True + + +-1 80 +degC +degrees Celsius + + + +AUTO +PX4V1 +Pixhawk +Cube/Pixhawk2 +Pixracer +PixhawkMini +Pixhawk2Slim +VRBrain 5.1 +VRBrain 5.2 +VR Micro Brain 5.1 +VR Micro Brain 5.2 +VRBrain Core 1.0 +VRBrain 5.4 +Intel Aero FC +AUAV2.1 + +True + + + +Disabled +Enabled + +True + + +0:ActiveForSafetyEnable,1:ActiveForSafetyDisable,2:ActiveWhenArmed + + + + + +None +CYRF6936 + + + + +Auto +DSM2 +DSMX + + + +0 4 + + + +NotDisabled +Disabled + + + +0 16 + + +0 16 + + + +Disabled +Enabled + + + +1 8 + + + +Disabled +MinChannel +MidChannel +MaxChannel +MinChannelCW +MidChannelCW +MaxChannelCW + + + + +Mode1 +Mode2 + + + + +Disabled +TestChan1 +TestChan2 +TestChan3 +TestChan4 +TestChan5 +TestChan6 +TestChan7 +TestChan8 + + + +0 16 + + +0 16 + + +1 8 + + +0 40 + + +0 120 + + +0 31 + + + + + +Disabled +Enabled + + + + +Disabled +Pixhawk AUXOUT1 +Pixhawk AUXOUT2 +Pixhawk AUXOUT3 +Pixhawk AUXOUT4 +Pixhawk AUXOUT5 +Pixhawk AUXOUT6 +PX4 FMU Relay1 +PX4 FMU Relay2 +PX4IO Relay1 +PX4IO Relay2 +PX4IO ACC1 +PX4IO ACC2 + + + + +Disabled +Pixhawk AUXOUT1 +Pixhawk AUXOUT2 +Pixhawk AUXOUT3 +Pixhawk AUXOUT4 +Pixhawk AUXOUT5 +Pixhawk AUXOUT6 +PX4 FMU Relay1 +PX4 FMU Relay2 +PX4IO Relay1 +PX4IO Relay2 +PX4IO ACC1 +PX4IO ACC2 + + + + +Disabled +Pixhawk AUXOUT1 +Pixhawk AUXOUT2 +Pixhawk AUXOUT3 +Pixhawk AUXOUT4 +Pixhawk AUXOUT5 +Pixhawk AUXOUT6 +PX4 FMU Relay1 +PX4 FMU Relay2 +PX4IO Relay1 +PX4IO Relay2 +PX4IO ACC1 +PX4IO ACC2 + + + + +Disabled +Pixhawk AUXOUT1 +Pixhawk AUXOUT2 +Pixhawk AUXOUT3 +Pixhawk AUXOUT4 +Pixhawk AUXOUT5 +Pixhawk AUXOUT6 +PX4 FMU Relay1 +PX4 FMU Relay2 +PX4IO Relay1 +PX4IO Relay2 +PX4IO ACC1 +PX4IO ACC2 + + + +0 3600 + + + + + +Servo +Relay + + + +0 50 +ds +deciseconds + + +1000 2000 +PWM +PWM in microseconds + + +1000 2000 +PWM +PWM in microseconds + + +0 1000 +m +meters + + + +Low +High + + + +0 10000 +ms +milliseconds + + +0 180 +deg +degrees + + + +Disabled +PX4 AUX1 +PX4 AUX2 +PX4 AUX3 +PX4 AUX4(fast capture) +PX4 AUX5 +PX4 AUX6 + + + + +TriggerLow +TriggerHigh + + + + +Always +Only when in AUTO + + + + + + +Disabled +UAVCAN + +True + + + + +1 250 + + +0: Servo 1, 1: Servo 2, 2: Servo 3, 3: Servo 4, 4: Servo 5, 5: Servo 6, 6: Servo 7, 7: Servo 8, 8: Servo 9, 9: Servo 10, 10: Servo 11, 11: Servo 12, 12: Servo 13, 13: Servo 14, 14: Servo 15 + + +0: ESC 1, 1: ESC 2, 2: ESC 3, 3: ESC 4, 4: ESC 5, 5: ESC 6, 6: ESC 7, 7: ESC 8, 8: ESC 9, 9: ESC 10, 10: ESC 11, 11: ESC 12, 12: ESC 13, 13: ESC 14, 14: ESC 15, 15: ESC 16 + + +1 200 +Hz +hertz + + + + + +Disabled +UAVCAN + +True + + + + +1 250 + + +0: Servo 1, 1: Servo 2, 2: Servo 3, 3: Servo 4, 4: Servo 5, 5: Servo 6, 6: Servo 7, 7: Servo 8, 8: Servo 9, 9: Servo 10, 10: Servo 11, 11: Servo 12, 12: Servo 13, 13: Servo 14, 14: Servo 15 + + +0: ESC 1, 1: ESC 2, 2: ESC 3, 3: ESC 4, 4: ESC 5, 5: ESC 6, 6: ESC 7, 7: ESC 8, 8: ESC 9, 9: ESC 10, 10: ESC 11, 11: ESC 12, 12: ESC 13, 13: ESC 14, 14: ESC 15, 15: ESC 16 + + +1 200 +Hz +hertz + + + + + +Disabled +UAVCAN + +True + + + + +1 250 + + +0: Servo 1, 1: Servo 2, 2: Servo 3, 3: Servo 4, 4: Servo 5, 5: Servo 6, 6: Servo 7, 7: Servo 8, 8: Servo 9, 9: Servo 10, 10: Servo 11, 11: Servo 12, 12: Servo 13, 13: Servo 14, 14: Servo 15 + + +0: ESC 1, 1: ESC 2, 2: ESC 3, 3: ESC 4, 4: ESC 5, 5: ESC 6, 6: ESC 7, 7: ESC 8, 8: ESC 9, 9: ESC 10, 10: ESC 11, 11: ESC 12, 12: ESC 13, 13: ESC 14, 14: ESC 15, 15: ESC 16 + + +1 200 +Hz +hertz + + + + + +Disabled +First driver +Second driver + +True + + +10000 1000000 + + + +Disabled +Major messages +All messages + + + + + + +Disabled +First driver +Second driver + +True + + +10000 1000000 + + + +Disabled +Major messages +All messages + + + + + + +Disabled +First driver +Second driver + +True + + +10000 1000000 + + + +Disabled +Major messages +All messages + + + + + + +Disabled +Enabled + + + + +First Relay +Second Relay +Third Relay +Fourth Relay +Servo + + + +1000 2000 +1 +PWM +PWM in microseconds + + +1000 2000 +1 +PWM +PWM in microseconds + + +0 32000 +1 +m +meters + + +0 5000 +1 +ms +milliseconds + + + + +0 10000 +100 +cm +centimeters + + +-90 90 +1 +deg/s +degrees per second + + + + +-400 400 +1 +mGauss +milligauss + + +-400 400 +1 +mGauss +milligauss + + +-400 400 +1 +mGauss +milligauss + + +-3.142 3.142 +0.01 +rad +radians + + + +Disabled +Internal-Learning +EKF-Learning + + + + +Disabled +Enabled + + + + +Disabled +Enabled + + + + +Disabled +Use Throttle +Use Current + + + +-1000 1000 +1 +mGauss/A +milligauss per ampere + + +-1000 1000 +1 +mGauss/A +milligauss per ampere + + +-1000 1000 +1 +mGauss/A +milligauss per ampere + + + +None +Yaw45 +Yaw90 +Yaw135 +Yaw180 +Yaw225 +Yaw270 +Yaw315 +Roll180 +Roll180Yaw45 +Roll180Yaw90 +Roll180Yaw135 +Pitch180 +Roll180Yaw225 +Roll180Yaw270 +Roll180Yaw315 +Roll90 +Roll90Yaw45 +Roll90Yaw90 +Roll90Yaw135 +Roll270 +Roll270Yaw45 +Roll270Yaw90 +Roll270Yaw135 +Pitch90 +Pitch270 +Pitch180Yaw90 +Pitch180Yaw270 +Roll90Pitch90 +Roll180Pitch90 +Roll270Pitch90 +Roll90Pitch180 +Roll270Pitch180 +Roll90Pitch270 +Roll180Pitch270 +Roll270Pitch270 +Roll90Pitch180Yaw90 +Roll90Yaw270 +Yaw293Pitch68Roll180 +Pitch315 +Roll90Pitch315 + + + + +Internal +External +ForcedExternal + + + +-400 400 +1 +mGauss +milligauss + + +-400 400 +1 +mGauss +milligauss + + +-400 400 +1 +mGauss +milligauss + + +-1000 1000 +1 +mGauss/A +milligauss per ampere + + +-1000 1000 +1 +mGauss/A +milligauss per ampere + + +-1000 1000 +1 +mGauss/A +milligauss per ampere + + + +FirstCompass +SecondCompass +ThirdCompass + + + +-400 400 +1 +mGauss +milligauss + + +-400 400 +1 +mGauss +milligauss + + +-400 400 +1 +mGauss +milligauss + + +-1000 1000 +1 +mGauss/A +milligauss per ampere + + +-1000 1000 +1 +mGauss/A +milligauss per ampere + + +-1000 1000 +1 +mGauss/A +milligauss per ampere + + + + + + + + + +Disabled +Enabled + + + + +None +Yaw45 +Yaw90 +Yaw135 +Yaw180 +Yaw225 +Yaw270 +Yaw315 +Roll180 +Roll180Yaw45 +Roll180Yaw90 +Roll180Yaw135 +Pitch180 +Roll180Yaw225 +Roll180Yaw270 +Roll180Yaw315 +Roll90 +Roll90Yaw45 +Roll90Yaw90 +Roll90Yaw135 +Roll270 +Roll270Yaw45 +Roll270Yaw90 +Roll270Yaw135 +Pitch90 +Pitch270 +Pitch180Yaw90 +Pitch180Yaw270 +Roll90Pitch90 +Roll180Pitch90 +Roll270Pitch90 +Roll90Pitch180 +Roll270Pitch180 +Roll90Pitch270 +Roll180Pitch270 +Roll270Pitch270 +Roll90Pitch180Yaw90 +Roll90Yaw270 +Yaw293Pitch68Roll180 +Pitch315 +Roll90Pitch315 + + + + +Internal +External +ForcedExternal + + + + +Disabled +Enabled + + + + +None +Yaw45 +Yaw90 +Yaw135 +Yaw180 +Yaw225 +Yaw270 +Yaw315 +Roll180 +Roll180Yaw45 +Roll180Yaw90 +Roll180Yaw135 +Pitch180 +Roll180Yaw225 +Roll180Yaw270 +Roll180Yaw315 +Roll90 +Roll90Yaw45 +Roll90Yaw90 +Roll90Yaw135 +Roll270 +Roll270Yaw45 +Roll270Yaw90 +Roll270Yaw135 +Pitch90 +Pitch270 +Pitch180Yaw90 +Pitch180Yaw270 +Roll90Pitch90 +Roll180Pitch90 +Roll270Pitch90 +Roll90Pitch180 +Roll270Pitch180 +Roll90Pitch270 +Roll180Pitch270 +Roll270Pitch270 +Roll90Pitch180Yaw90 +Roll90Yaw270 +Yaw293Pitch68Roll180 +Pitch315 +Roll90Pitch315 + + + + +Internal +External +ForcedExternal + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +4 32 + +Very Strict +Strict +Default +Relaxed + +0.1 + + +500 3000 +1 + + +0:HMC5883,1:LSM303D,2:AK8963,3:BMM150,4:LSM9DS1,5:LIS3MDL,6:AK09916,7:IST8310,8:ICM20948,9:MMC3416,11:UAVCAN,12:QMC5883 + + +0 100 +1 +% +percent + + + + + +Disabled +Enabled + + + +0 2 +0.01 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Disabled +Enabled + +True + + + +GPS 3D Vel and 2D Pos +GPS 2D vel and 2D pos +GPS 2D pos +No GPS + + + +0.05 5.0 +0.05 +m/s +meters per second + + +0.05 5.0 +0.05 +m/s +meters per second + + +100 1000 +25 + + +0.1 10.0 +0.1 +m +meters + + +100 1000 +25 + + +10 100 +5 +m +meters + + +0 250 +10 +ms +milliseconds +True + + + +Use Baro +Use Range Finder +Use GPS +Use Range Beacon + +True + + +0.1 10.0 +0.1 +m +meters + + +100 1000 +25 + + +0 250 +10 +ms +milliseconds +True + + +0.01 0.5 +0.01 +Gauss +gauss + + + +When flying +When manoeuvring +Never +After first climb yaw reset +Always + + + +100 1000 +25 + + +0.5 5.0 +0.1 +m/s +meters per second + + +100 1000 +25 + + +0.1 10.0 +0.1 +m +meters + + +100 1000 +25 + + +1.0 4.0 +0.1 +rad/s +radians per second + + +0.05 1.0 +0.05 +rad/s +radians per second + + +100 1000 +25 + + +0 127 +10 +ms +milliseconds +True + + +0.0001 0.1 +0.0001 +rad/s +radians per second + + +0.01 1.0 +0.01 +m/s/s +meters per square second + + +0.00001 0.001 +rad/s/s +radians per square second + + +0.000001 0.001 +Hz +hertz + + +0.00001 0.001 +m/s/s/s +meters per cubic second + + +0.01 1.0 +0.1 +m/s/s +meters per square second + + +0.0 1.0 +0.1 + + +0:NSats,1:HDoP,2:speed error,3:position error,4:yaw error,5:pos drift,6:vert speed,7:horiz speed + + +0:FirstIMU,1:SecondIMU,2:ThirdIMU,3:FourthIMU,4:FifthIMU,5:SixthIMU +True + + +50 200 +% +percent + + +0.5 50.0 +m +meters + + +0:FirstIMU,1:SecondIMU,2:ThirdIMU,3:FourthIMU,4:FifthIMU,5:SixthIMU +True + + +0.05 1.0 +0.05 +rad +radians + + +100 1000 +25 + + +10 50 +5 +cs +centiseconds + + +0.00001 0.01 +Gauss/s +gauss per second + + +0.00001 0.01 +Gauss/s +gauss per second + + +-1 70 +1 +% +percent + + +0 0.2 +0.01 + + +0.1 10.0 +0.1 +m +meters + + +100 1000 +25 + + +0 127 +10 +ms +milliseconds +True + + +2.0 6.0 +0.5 +m/s +meters per second + + +0:FirstEKF,1:SecondEKF,2:ThirdEKF,3:FourthEKF,4:FifthEKF,5:SixthEKF +True + + +0:Correct when using Baro height,1:Correct when using range finder height,2:Apply corrections to local position +True + + + + + +Disabled +Enabled + +True + + + +GPS 3D Vel and 2D Pos +GPS 2D vel and 2D pos +GPS 2D pos +No GPS + + + +0.05 5.0 +0.05 +m/s +meters per second + + +0.05 5.0 +0.05 +m/s +meters per second + + +100 1000 +25 + + +0.1 10.0 +0.1 +m +meters + + +100 1000 +25 + + +10 100 +5 +m +meters + + + +Use Baro +Use Range Finder +Use GPS +Use Range Beacon + +True + + +0.1 10.0 +0.1 +m +meters + + +100 1000 +25 + + +0 250 +10 +ms +milliseconds +True + + +0.01 0.5 +0.01 +Gauss +gauss + + + +When flying +When manoeuvring +Never +After first climb yaw reset +Always + +True + + +100 1000 +25 + + +0.5 5.0 +0.1 +m/s +meters per second + + +100 1000 +25 + + +0.1 10.0 +0.1 +m +meters + + +100 1000 +25 + + +1.0 4.0 +0.1 +rad/s +radians per second + + +0.05 1.0 +0.05 +rad/s +radians per second + + +100 1000 +25 + + +0 250 +10 +ms +milliseconds +True + + +0.0001 0.1 +0.0001 +rad/s +radians per second + + +0.01 1.0 +0.01 +m/s/s +meters per square second + + +0.00001 0.001 +rad/s/s +radians per square second + + +0.00001 0.001 +m/s/s/s +meters per cubic second + + +0.01 1.0 +0.1 +m/s/s +meters per square second + + +0.0 1.0 +0.1 + + +0:NSats,1:HDoP,2:speed error,3:position error,4:yaw error,5:pos drift,6:vert speed,7:horiz speed + + +0:FirstIMU,1:SecondIMU,2:ThirdIMU,3:FourthIMU,4:FifthIMU,5:SixthIMU +True + + +50 200 +% +percent + + +0.5 50.0 +m +meters + + +0:FirstIMU,1:SecondIMU,2:ThirdIMU,3:FourthIMU,4:FifthIMU,5:SixthIMU +True + + +0.05 1.0 +0.05 +rad +radians + + +100 1000 +25 + + +10 50 +5 +cs +centiseconds + + +0.00001 0.01 +Gauss/s +gauss per second + + +0.00001 0.01 +Gauss/s +gauss per second + + +-1 70 +1 +% +percent + + +0 0.2 +0.01 + + +0.1 10.0 +0.1 +m +meters + + +100 1000 +25 + + +0 250 +10 +ms +milliseconds +True + + +2.0 6.0 +0.5 +m/s +meters per second + + +0.5 2.5 +0.1 +m/s/s +meters per square second + + +0:FirstEKF,1:SecondEKF,2:ThirdEKF,3:FourthEKF,4:FifthEKF,5:SixthEKF +True + + +0:Correct when using Baro height,1:Correct when using range finder height,2:Apply corrections to local position +True + + +0.05 0.5 +0.05 +m/s +meters per second + + +0.5 5.0 +0.1 +m/s +meters per second + + +0.01 1.0 +0.1 +m/s +meters per second + + + + + +Disabled +Enabled + + + +0:Altitude,1:Circle,2:Polygon + +None +Altitude +Circle +Altitude and Circle +Polygon +Altitude and Polygon +Circle and Polygon +All + + + + +Report Only +RTL or Land + + + +10 1000 +1 +m +meters + + +30 10000 +m +meters + + +1 10 +m +meters + + +1 20 + + +-100 100 +1 +m +meters + + + + +0.1 6.0 +0.1 + + +0.02 1.00 +0.01 + + +0 4500 +10 +cdeg +centidegrees + + +0.1 2.5 + + +1 100 +Hz +hertz + + +0 255 + + +1 30 +deg/s +degrees per second + + + + + +Disabled +Enabled + + + +-200 +200 +1 + + +-200 +200 +1 + + +-18000 +18000 +1 + + +m +meters + + +m +meters + + +m +meters + + +0 127 + + + + + +Disabled +Enabled + + + +0 255 + + +1 1000 +m +meters + + + +North-East-Down +Relative to lead vehicle heading + + + +-100 100 +1 +m +meters + + +-100 100 +1 +m +meters + + +-100 100 +1 +m +meters + + + +None +Face Lead Vehicle +Same as Lead vehicle +Direction of Flight + + + +0.01 1.00 +0.01 + + + + +True +True +1 +Pa +pascal + + +True +1 +degC +degrees Celsius + + +0.1 +m +meters + + + +FirstBaro +2ndBaro +3rdBaro + + + + +Disabled +Bus0 +Bus1 + + + +1.0:Freshwater,1.024:Saltwater + + +True +True +1 +Pa +pascal + + +True +True +1 +Pa +pascal + + +0 100 +1 +% +percent + + + + + +None +AUTO +uBlox +MTK +MTK19 +NMEA +SiRF +HIL +SwiftNav +UAVCAN +SBF +GSOF +ERB +MAV +NOVA + +True + + + +None +AUTO +uBlox +MTK +MTK19 +NMEA +SiRF +HIL +SwiftNav +UAVCAN +SBF +GSOF +ERB +MAV +NOVA + +True + + + +Portable +Stationary +Pedestrian +Automotive +Sea +Airborne1G +Airborne2G +Airborne4G + + + + +Disabled +UseBest +Blend + + + + +Any +FloatRTK +IntegerRTK + +True + + + +Disabled +Enabled +NoChange + + + +-100 90 +deg +degrees + + + +send to first GPS +send to 2nd GPS +send to all + + + + +None (0x0000) +All (0xFFFF) +External only (0xFF00) + + + + +Ignore +Always log +Stop logging when disarmed (SBF only) +Only log every five samples (uBlox only) + +True + + +0:GPS,1:SBAS,2:Galileo,3:Beidou,4:IMES,5:QZSS,6:GLOSNASS + +Leave as currently configured +GPS-NoSBAS +GPS+SBAS +Galileo-NoSBAS +Galileo+SBAS +Beidou +GPS+IMES+QZSS+SBAS (Japan Only) +GLONASS +GLONASS+SBAS +GPS+GLONASS+SBAS + + + + +Do not save config +Save config +Save only when needed + + + +0:GPS,1:SBAS,2:Galileo,3:Beidou,4:IMES,5:QZSS,6:GLOSNASS + +Leave as currently configured +GPS-NoSBAS +GPS+SBAS +Galileo-NoSBAS +Galileo+SBAS +Beidou +GPS+IMES+QZSS+SBAS (Japan Only) +GLONASS +GLONASS+SBAS +GPS+GLONASS+SBAS + + + + +Disables automatic configuration +Enable automatic configuration + + + +50 200 + +10Hz +8Hz +5Hz + +ms +milliseconds + + +50 200 + +10Hz +8Hz +5Hz + +ms +milliseconds + + +m +meters + + +m +meters + + +m +meters + + +m +meters + + +m +meters + + +m +meters + + +0 250 +ms +milliseconds +True + + +0 250 +ms +milliseconds +True + + +0:Horiz Pos,1:Vert Pos,2:Speed + + +5.0 30.0 +s +seconds + + + + + +Disabled +Enabled + + + + +None +Servo +EPM + + + +1000 2000 +PWM +PWM in microseconds + + +1000 2000 +PWM +PWM in microseconds + + +1000 2000 +PWM +PWM in microseconds + + +0 255 +s +seconds + + +0 255 + + + + +-180 180 +1 +deg +degrees + + +-180 180 +1 +deg +degrees + + +-180 180 +1 +deg +degrees + + + +Servo only +Servo with ExtGyro +DirectDrive VarPitch +DirectDrive FixedPitch + + + + +H3 CCPM Adjustable +H1 Straight Swash +H3_140 CCPM + + + +0 1000 +1 +PWM +PWM in microseconds + + +-30 30 +1 +deg +degrees + + +-10 10 +0.1 + + + +NoFlybar +Flybar + + + +0 1000 +1 +PWM +PWM in microseconds + + +0 1000 +1 +PWM +PWM in microseconds + + + +Normal +Reversed + + + +-180 180 +1 +deg +degrees + + +-180 180 +1 +deg +degrees + + +-180 180 +1 +deg +degrees + + +-180 180 +1 +deg +degrees + + +-180 180 +1 +deg +degrees + + +-180 180 +1 +deg +degrees + + +-90 90 +1 +deg +degrees + + +-90 90 +1 +deg +degrees + + + +Longitudinal +Transverse + + + +0 1 + + +-10 10 +0.1 + + +-10 10 +0.1 + + +1000 2000 +1 +PWM +PWM in microseconds + + +1000 2000 +1 +PWM +PWM in microseconds + + +1000 2000 +1 +PWM +PWM in microseconds + + +0: Normal, 1: Reversed + + +1000 2000 +1 +PWM +PWM in microseconds + + +1000 2000 +1 +PWM +PWM in microseconds + + +1000 2000 +1 +PWM +PWM in microseconds + + + +Disabled +Passthrough +Max collective +Mid collective +Min collective + + + +0 1000 +10 +PWM +PWM in microseconds + + + +Ch8 Input +SetPoint +Throttle Curve + + + +0 500 +1 +PWM +PWM in microseconds + + +0 60 +s +seconds + + +0 60 +s +seconds + + +0 1000 +10 + + +0 500 +10 + + +0 18000 +100 +cdeg +centidegrees + + +0 10 +1 + + +0 500 +10 + + +0 1000 +10 + + +0 1000 +10 + + +0 1000 +10 + + +0 1000 +10 + + +0 1000 +10 + + + + +0 500 +1 +d% +decipercent + + +0 500 +1 +d% +decipercent + + +500 1000 +1 +d% +decipercent + + +500 1000 +1 +d% +decipercent + + + +Disabled +Very Low +Low +Medium +High +Very High + + + + + + + +rad/s +radians per second + + +rad/s +radians per second + + +rad/s +radians per second + + +rad/s +radians per second + + +rad/s +radians per second + + +rad/s +radians per second + + +rad/s +radians per second + + +rad/s +radians per second + + +rad/s +radians per second + + +0.8 1.2 + + +0.8 1.2 + + +0.8 1.2 + + +-3.5 3.5 +m/s/s +meters per square second + + +-3.5 3.5 +m/s/s +meters per square second + + +-3.5 3.5 +m/s/s +meters per square second + + +0.8 1.2 + + +0.8 1.2 + + +0.8 1.2 + + +-3.5 3.5 +m/s/s +meters per square second + + +-3.5 3.5 +m/s/s +meters per square second + + +-3.5 3.5 +m/s/s +meters per square second + + +0.8 1.2 + + +0.8 1.2 + + +0.8 1.2 + + +-3.5 3.5 +m/s/s +meters per square second + + +-3.5 3.5 +m/s/s +meters per square second + + +-3.5 3.5 +m/s/s +meters per square second + + +0 127 +Hz +hertz + + +0 127 +Hz +hertz + + + +Disabled +Enabled + + + + +Disabled +Enabled + + + + +Disabled +Enabled + + + +0.05 50 + + + +Never +Start-up only + + + + +Don't adjust the trims +Assume first orientation was level +Assume ACC_BODYFIX is perfectly aligned to the vehicle + + + + +IMU 1 +IMU 2 +IMU 3 + + + +m +meters + + +m +meters + + +m +meters + + +m +meters + + +m +meters + + +m +meters + + +m +meters + + +m +meters + + +m +meters + + +True + + +True + + +True + + +True + + +True + + +True + + +0:FirstIMU,1:SecondIMU,2:ThirdIMU + +FirstIMUOnly +FirstAndSecondIMU + + + + + +32 + + +0:IMU1,1:IMU2,2:IMU3 + +None +First IMU +All + + + +0:Sensor-Rate Logging (sample at full sensor rate seen by AP) + + +ms +milliseconds +10 + + +1 + + + + + +Disabled +Enabled + + + +10 200 +Hz +hertz + + +5 50 +Hz +hertz + + +5 30 +dB +decibel + + + + +1000 2000 +1 +PWM +PWM in microseconds + + +1000 2000 +1 +PWM +PWM in microseconds + + + +WaitForPilotInput +Retract +Deploy + + + + + + +None +File +MAVLink +BothFileAndMAVLink + + + + + + +Disabled +Enabled + + + + +Disabled +Enabled + + + + +Disabled +Enabled + + + +kB +kilobytes + + + + +0 45 +1 +deg +degrees + + +20 2000 +50 +cm/s +centimeters per second + + +100 981 +1 +cm/s/s +centimeters per square second + + +25 250 +1 +cm/s/s +centimeters per square second + + +500 5000 +1 +cm/s/s/s +centimeters per cubic second + + +0 2 +0.1 +s +seconds + + + + +0 32766 +1 + + + +Resume Mission +Restart Mission + + + +0:Clear Mission on reboot + + + + + +Retracted +Neutral +MavLink Targeting +RC Targeting +GPS Point + + + +-180.00 179.99 +1 +deg +degrees + + +-180.00 179.99 +1 +deg +degrees + + +-180.00 179.99 +1 +deg +degrees + + +-180.00 179.99 +1 +deg +degrees + + +-180.00 179.99 +1 +deg +degrees + + +-180.00 179.99 +1 +deg +degrees + + + +Disabled +Enabled + + + + +Disabled +Enabled + + + + +Disabled +Enabled + + + + +Disabled +RC5 +RC6 +RC7 +RC8 +RC9 +RC10 +RC11 +RC12 + + + +-18000 17999 +1 +cdeg +centidegrees + + +-18000 17999 +1 +cdeg +centidegrees + + + +Disabled +RC5 +RC6 +RC7 +RC8 +RC9 +RC10 +RC11 +RC12 + + + +-18000 17999 +1 +cdeg +centidegrees + + +-18000 17999 +1 +cdeg +centidegrees + + + +Disabled +RC5 +RC6 +RC7 +RC8 +RC9 +RC10 +RC11 +RC12 + + + +-18000 17999 +1 +cdeg +centidegrees + + +-18000 17999 +1 +cdeg +centidegrees + + +0 100 +1 + + +0.0 0.2 +.005 +s +seconds + + +0.0 0.2 +.005 +s +seconds + + + +None +Servo +3DR Solo +Alexmos Serial +SToRM32 MAVLink +SToRM32 Serial + +True + + + +Retracted +Neutral +MavLink Targeting +RC Targeting +GPS Point + + + +-180.00 179.99 +1 +deg +degrees + + +-180.00 179.99 +1 +deg +degrees + + +-180.00 179.99 +1 +deg +degrees + + +-180.00 179.99 +1 +deg +degrees + + +-180.00 179.99 +1 +deg +degrees + + +-180.00 179.99 +1 +deg +degrees + + + +Disabled +Enabled + + + + +Disabled +Enabled + + + + +Disabled +Enabled + + + + +Disabled +RC5 +RC6 +RC7 +RC8 +RC9 +RC10 +RC11 +RC12 + + + +-18000 17999 +1 +cdeg +centidegrees + + +-18000 17999 +1 +cdeg +centidegrees + + + +Disabled +RC5 +RC6 +RC7 +RC8 +RC9 +RC10 +RC11 +RC12 + + + +-18000 17999 +1 +cdeg +centidegrees + + +-18000 17999 +1 +cdeg +centidegrees + + + +Disabled +RC5 +RC6 +RC7 +RC8 +RC9 +RC10 +RC11 +RC12 + + + +-18000 17999 +1 +cdeg +centidegrees + + +-18000 17999 +1 +cdeg +centidegrees + + +0.0 0.2 +.005 +s +seconds + + +0.0 0.2 +.005 +s +seconds + + + +None +Servo +3DR Solo +Alexmos Serial +SToRM32 MAVLink +SToRM32 Serial + + + + + +0 500 +PWM +PWM in microseconds + + +0.25 0.8 + + +0.9:Low, 0.95:Default, 1.0:High + + +6 35 +V +volt + + +6 35 +V +volt + + +0 200 +A +ampere + + + +Normal +OneShot +OneShot125 +Brushed +DShot150 +DShot300 +DShot600 +DShot1200 + +True + + +0 2000 +PWM +PWM in microseconds + + +0 2000 +PWM +PWM in microseconds + + +0.0:Low, 0.15:Default, 0.3:High + + +0.0:Low, 0.1:Default, 0.2:High + + +0 10 +s +seconds + + +0.2 0.8 + + + +Disabled +Learn +LearnAndSave + + + + +PWM enabled while disarmed +PWM disabled while disarmed + + + +5 80 +1 +deg +degrees + + +0 2 +0.1 +s +seconds + + +0 5 +0.1 + + + +First battery +Second battery + + + + + + +Off +Low +Medium +High + + + + +Disable +Enable + + + + +Disable +Enable + + + + +Disable +ssd1306 +sh1106 + + + + +Disabled +Aircraft +Rover + + + + +Disabled + + + + + + +Disabled +Enabled Always Land +Enabled Strict + + + + +None +CompanionComputer +IRLock +SITL_Gazebo +SITL + + + +0 360 +1 +cdeg +centidegrees + + +-20 20 +1 +cm +centimeters + + +-20 20 +1 +cm +centimeters + + + +RawSensor +KalmanFilter + + + +0.5 5 + + +m +meters + + +m +meters + + +m +meters + + + +DefaultBus +InternalI2C +ExternalI2C + + + + + + +None +LightWareSF40C +MAVLink +TeraRangerTower +RangeFinder +RPLidarA2 + +True + + + +Default +Upside Down + + + +-180 180 +deg +degrees + + +0 360 +deg +degrees + + +0 45 +deg +degrees + + +0 360 +deg +degrees + + +0 45 +deg +degrees + + +0 360 +deg +degrees + + +0 45 +deg +degrees + + +0 360 +deg +degrees + + +0 45 +deg +degrees + + +0 360 +deg +degrees + + +0 45 +deg +degrees + + +0 360 +deg +degrees + + +0 45 +deg +degrees + + + +None +LightWareSF40C +MAVLink +TeraRangerTower +RangeFinder +RPLidarA2 + +True + + + +Default +Upside Down + + + +-180 180 +deg +degrees + + + + +0.5 5 +0.1 +Hz +hertz + + +1.000 3.000 + + +1.000 8.000 + + +0.500 1.500 +0.05 + + +0.000 3.000 + + +0 1000 +d% +decipercent + + +0.000 0.400 + + +1.000 100.000 +Hz +hertz + + +0.500 2.000 + + +0.1 6.0 +0.1 + + +0.02 1.00 +0.01 + + +0.00 1.00 +0.001 + + +0 4500 +10 +cm/s/s +centimeters per square second + + +0 100 +Hz +hertz + + +0 100 +Hz +hertz + + +0 45 +1 +deg +degrees + + + + + + +0.1 +km +kilometers + + + +DoNotIncludeHome +IncludeHome + + + + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + + +Normal +Reversed + + + +0 200 +PWM +PWM in microseconds + + + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + + +Normal +Reversed + + + +0 200 +PWM +PWM in microseconds + + + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + + +Normal +Reversed + + + +0 200 +PWM +PWM in microseconds + + + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + + +Normal +Reversed + + + +0 200 +PWM +PWM in microseconds + + + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + + +Normal +Reversed + + + +0 200 +PWM +PWM in microseconds + + + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + + +Normal +Reversed + + + +0 200 +PWM +PWM in microseconds + + + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + + +Normal +Reversed + + + +0 200 +PWM +PWM in microseconds + + + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + + +Normal +Reversed + + + +0 200 +PWM +PWM in microseconds + + + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + + +Normal +Reversed + + + +0 200 +PWM +PWM in microseconds + + + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + + +Normal +Reversed + + + +0 200 +PWM +PWM in microseconds + + + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + + +Normal +Reversed + + + +0 200 +PWM +PWM in microseconds + + + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + + +Normal +Reversed + + + +0 200 +PWM +PWM in microseconds + + + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + + +Normal +Reversed + + + +0 200 +PWM +PWM in microseconds + + + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + + +Normal +Reversed + + + +0 200 +PWM +PWM in microseconds + + + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + + +Normal +Reversed + + + +0 200 +PWM +PWM in microseconds + + + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + + +Normal +Reversed + + + +0 200 +PWM +PWM in microseconds + + + + +1 8 +1 +True + + +1 8 +1 +True + + +1 8 +1 +True + + +1 8 +1 +True + + +1 8 +1 +True + + +1 8 +1 +True + + + + + +Disabled +APM2 A9 pin +APM1 relay +BB Blue GP0 pin 4 +Pixhawk AUXOUT1 +Pixhawk AUXOUT2 +Pixhawk AUXOUT3 +Pixhawk AUXOUT4 +Pixhawk AUXOUT5 +Pixhawk AUXOUT6 +BB Blue GP0 pin 3 +PX4 FMU Relay1 +PX4 FMU Relay2 +PX4IO Relay1/BB Blue GP0 pin 6 +PX4IO Relay2 +PX4IO ACC1 +PX4IO ACC2/BB Blue GP0 pin 5 + + + + +Disabled +APM2 A9 pin +APM1 relay +BB Blue GP0 pin 4 +Pixhawk AUXOUT1 +Pixhawk AUXOUT2 +Pixhawk AUXOUT3 +Pixhawk AUXOUT4 +Pixhawk AUXOUT5 +Pixhawk AUXOUT6 +BB Blue GP0 pin 3 +PX4 FMU Relay1 +PX4 FMU Relay2 +PX4IO Relay1/BB Blue GP0 pin 6 +PX4IO Relay2 +PX4IO ACC1 +PX4IO ACC2/BB Blue GP0 pin 5 + + + + +Disabled +APM2 A9 pin +APM1 relay +BB Blue GP0 pin 4 +Pixhawk AUXOUT1 +Pixhawk AUXOUT2 +Pixhawk AUXOUT3 +Pixhawk AUXOUT4 +Pixhawk AUXOUT5 +Pixhawk AUXOUT6 +BB Blue GP0 pin 3 +PX4 FMU Relay1 +PX4 FMU Relay2 +PX4IO Relay1/BB Blue GP0 pin 6 +PX4IO Relay2 +PX4IO ACC1 +PX4IO ACC2/BB Blue GP0 pin 5 + + + + +Disabled +APM2 A9 pin +APM1 relay +BB Blue GP0 pin 4 +Pixhawk AUXOUT1 +Pixhawk AUXOUT2 +Pixhawk AUXOUT3 +Pixhawk AUXOUT4 +Pixhawk AUXOUT5 +Pixhawk AUXOUT6 +BB Blue GP0 pin 3 +PX4 FMU Relay1 +PX4 FMU Relay2 +PX4IO Relay1/BB Blue GP0 pin 6 +PX4IO Relay2 +PX4IO ACC1 +PX4IO ACC2/BB Blue GP0 pin 5 + + + + +Off +On +NoChange + + + + + + +None +Analog +MaxbotixI2C +LidarLiteV2-I2C +PX4-PWM +BBB-PRU +LightWareI2C +LightWareSerial +Bebop +MAVLink +uLanding +LeddarOne +MaxbotixSerial +TeraRangerI2C +LidarLiteV3-I2C +VL53L0X +NMEA + + + + +Not Used +APM2-A0 +APM2-A1 +APM2-A2 +APM2-A3 +APM2-A4 +APM2-A5 +APM2-A6 +APM2-A7 +APM2-A8 +APM2-A9 +PX4-airspeed port +Pixhawk-airspeed port +APM1-airspeed port + + + +0.001 +m/V +meters per volt + + +0.001 +V +volt + + + +Linear +Inverted +Hyperbolic + + + +1 +cm +centimeters + + +1 +cm +centimeters + + + +Not Used +Pixhawk AUXOUT1 +Pixhawk AUXOUT2 +Pixhawk AUXOUT3 +Pixhawk AUXOUT4 +Pixhawk AUXOUT5 +Pixhawk AUXOUT6 +PX4 FMU Relay1 +PX4 FMU Relay2 +PX4IO Relay1 +PX4IO Relay2 +PX4IO ACC1 +PX4IO ACC2 + + + +1 +ms +milliseconds + + + +No +Yes + + + +0 32767 +m +meters + + +5 127 +1 +cm +centimeters + + +0 127 +1 + + +m +meters + + +m +meters + + +m +meters + + + +Forward +Forward-Right +Right +Back-Right +Back +Back-Left +Left +Forward-Left +Up +Down + + + + +None +Analog +MaxbotixI2C +LidarLiteV2-I2C +PX4-PWM +BBB-PRU +LightWareI2C +LightWareSerial +Bebop +MAVLink +uLanding +LeddarOne +MaxbotixSerial +TeraRangerI2C +LidarLiteV3-I2C +VL53L0X +NMEA + + + + +Not Used +APM2-A0 +APM2-A1 +APM2-A2 +APM2-A3 +APM2-A4 +APM2-A5 +APM2-A6 +APM2-A7 +APM2-A8 +APM2-A9 +PX4-airspeed port +Pixhawk-airspeed port +APM1-airspeed port + + + +0.001 +m/V +meters per volt + + +0.001 +V +volt + + + +Linear +Inverted +Hyperbolic + + + +1 +cm +centimeters + + +1 +cm +centimeters + + + +Not Used +Pixhawk AUXOUT1 +Pixhawk AUXOUT2 +Pixhawk AUXOUT3 +Pixhawk AUXOUT4 +Pixhawk AUXOUT5 +Pixhawk AUXOUT6 +PX4 FMU Relay1 +PX4 FMU Relay2 +PX4IO Relay1 +PX4IO Relay2 +PX4IO ACC1 +PX4IO ACC2 + + + +1 +ms +milliseconds + + + +No +Yes + + + +0 127 +1 +cm +centimeters + + +0 127 +1 + + +m +meters + + +m +meters + + +m +meters + + + +Forward +Forward-Right +Right +Back-Right +Back +Back-Left +Left +Forward-Left +Up +Down + + + + +None +Analog +MaxbotixI2C +LidarLiteV2-I2C +PX4-PWM +BBB-PRU +LightWareI2C +LightWareSerial +Bebop +MAVLink +uLanding +LeddarOne +MaxbotixSerial +TeraRangerI2C +LidarLiteV3-I2C +VL53L0X +NMEA + + + + +Not Used +APM2-A0 +APM2-A1 +APM2-A2 +APM2-A3 +APM2-A4 +APM2-A5 +APM2-A6 +APM2-A7 +APM2-A8 +APM2-A9 +PX4-airspeed port +Pixhawk-airspeed port +APM1-airspeed port + + + +0.001 +m/V +meters per volt + + +0.001 +V +volt + + + +Linear +Inverted +Hyperbolic + + + +1 +cm +centimeters + + +1 +cm +centimeters + + + +Not Used +Pixhawk AUXOUT1 +Pixhawk AUXOUT2 +Pixhawk AUXOUT3 +Pixhawk AUXOUT4 +Pixhawk AUXOUT5 +Pixhawk AUXOUT6 +PX4 FMU Relay1 +PX4 FMU Relay2 +PX4IO Relay1 +PX4IO Relay2 +PX4IO ACC1 +PX4IO ACC2 + + + +1 +ms +milliseconds + + + +No +Yes + + + +0 127 +1 +cm +centimeters + + +0 127 +1 + + +m +meters + + +m +meters + + +m +meters + + + +Forward +Forward-Right +Right +Back-Right +Back +Back-Left +Left +Forward-Left +Up +Down + + + + +None +Analog +MaxbotixI2C +LidarLiteV2-I2C +PX4-PWM +BBB-PRU +LightWareI2C +LightWareSerial +Bebop +MAVLink +uLanding +LeddarOne +MaxbotixSerial +TeraRangerI2C +LidarLiteV3-I2C +VL53L0X +NMEA + + + + +Not Used +APM2-A0 +APM2-A1 +APM2-A2 +APM2-A3 +APM2-A4 +APM2-A5 +APM2-A6 +APM2-A7 +APM2-A8 +APM2-A9 +PX4-airspeed port +Pixhawk-airspeed port +APM1-airspeed port + + + +0.001 +m/V +meters per volt + + +0.001 +V +volt + + + +Linear +Inverted +Hyperbolic + + + +1 +cm +centimeters + + +1 +cm +centimeters + + + +Not Used +Pixhawk AUXOUT1 +Pixhawk AUXOUT2 +Pixhawk AUXOUT3 +Pixhawk AUXOUT4 +Pixhawk AUXOUT5 +Pixhawk AUXOUT6 +PX4 FMU Relay1 +PX4 FMU Relay2 +PX4IO Relay1 +PX4IO Relay2 +PX4IO ACC1 +PX4IO ACC2 + + + +1 +ms +milliseconds + + + +No +Yes + + + +0 127 +1 +cm +centimeters + + +0 127 +1 + + +m +meters + + +m +meters + + +m +meters + + + +Forward +Forward-Right +Right +Back-Right +Back +Back-Left +Left +Forward-Left +Up +Down + + + + + + +None +PX4-PWM +AUXPIN + + + +0.001 + + +1 + + +1 + + +0.1 + + + +Disabled +PixhawkAUX1 +PixhawkAUX2 +PixhawkAUX3 +PixhawkAUX4 +PixhawkAUX5 +PixhawkAUX6 + + + + +None +PX4-PWM +AUXPIN + + + +0.001 + + + +Disabled +PixhawkAUX1 +PixhawkAUX2 +PixhawkAUX3 +PixhawkAUX4 +PixhawkAUX5 +PixhawkAUX6 + + + + + + +Disabled +AnalogPin +RCChannelPwmValue +ReceiverProtocol + + + + +APM2 A0 +APM2 A1 +APM2 A13 +Pixracer +Pixhawk ADC4 +Pixhawk ADC3 +Pixhawk ADC6 +Pixhawk SBUS +Pixhawk2 ADC + + + +0 5.0 +0.01 +V +volt + + +0 5.0 +0.01 +V +volt + + + + +0 2000 +PWM +PWM in microseconds + + +0 2000 +PWM +PWM in microseconds + + + + + +Disabled +ShowSlips +ShowOverruns + + + + +50Hz +100Hz +200Hz +250Hz +300Hz +400Hz + +True + + + + + +1200 +2400 +4800 +9600 +19200 +38400 +57600 +111100 +115200 +460800 +500000 +921600 +1500000 + + + + +MAVlink1 +MAVLink2 + +True + + + +None +MAVLink1 +MAVLink2 +Frsky D +Frsky SPort +GPS +Alexmos Gimbal Serial +SToRM32 Gimbal Serial +Rangefinder +FrSky SPort Passthrough (OpenTX) +Lidar360 +Beacon +Volz servo out +SBus servo out +ESC Telemetry +Devo Telemetry + +True + + + +1200 +2400 +4800 +9600 +19200 +38400 +57600 +111100 +115200 +500000 +921600 +1500000 + + + + +None +MAVLink1 +MAVLink2 +Frsky D +Frsky SPort +GPS +Alexmos Gimbal Serial +SToRM32 Gimbal Serial +Rangefinder +FrSky SPort Passthrough (OpenTX) +Lidar360 +Beacon +Volz servo out +SBus servo out +ESC Telemetry +Devo Telemetry + +True + + + +1200 +2400 +4800 +9600 +19200 +38400 +57600 +111100 +115200 +500000 +921600 +1500000 + + + + +None +MAVLink1 +MAVLink2 +Frsky D +Frsky SPort +GPS +Alexmos Gimbal Serial +SToRM32 Gimbal Serial +Rangefinder +FrSky SPort Passthrough (OpenTX) +Lidar360 +Beacon +Volz servo out +SBus servo out +ESC Telemetry +Devo Telemetry + +True + + + +1200 +2400 +4800 +9600 +19200 +38400 +57600 +111100 +115200 +500000 +921600 +1500000 + + + + +None +MAVLink1 +MAVLink2 +Frsky D +Frsky SPort +GPS +Alexmos Gimbal Serial +SToRM32 Gimbal Serial +Rangefinder +FrSky SPort Passthrough (OpenTX) +Lidar360 +Beacon +Volz servo out +SBus servo out +ESC Telemetry +Devo Telemetry + +True + + + +1200 +2400 +4800 +9600 +19200 +38400 +57600 +111100 +115200 +500000 +921600 +1500000 + + + + +None +MAVLink1 +MAVLink2 +Frsky D +Frsky SPort +GPS +Alexmos Gimbal Serial +SToRM32 Gimbal Serial +Rangefinder +FrSky SPort Passthrough (OpenTX) +Lidar360 +Beacon +Volz servo out +SBus servo out +ESC Telemetry +Devo Telemetry + +True + + + +1200 +2400 +4800 +9600 +19200 +38400 +57600 +111100 +115200 +500000 +921600 +1500000 + + + + + + +Disable +Enable + + + +25 400 +Hz +hertz + + + + +500 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + + +Normal +Reversed + + + + +Disabled +RCPassThru +Flap +Flap_auto +Aileron +mount_pan +mount_tilt +mount_roll +mount_open +camera_trigger +release +mount2_pan +mount2_tilt +mount2_roll +mount2_open +DifferentialSpoilerLeft1 +DifferentialSpoilerRight1 +DifferentialSpoilerLeft2 +DifferentialSpoilerRight2 +Elevator +Rudder +FlaperonLeft +FlaperonRight +GroundSteering +Parachute +EPM +LandingGear +EngineRunEnable +HeliRSC +HeliTailRSC +Motor1 +Motor2 +Motor3 +Motor4 +Motor5 +Motor6 +Motor7 +Motor8 +MotorTilt +RCIN1 +RCIN2 +RCIN3 +RCIN4 +RCIN5 +RCIN6 +RCIN7 +RCIN8 +RCIN9 +RCIN10 +RCIN11 +RCIN12 +RCIN13 +RCIN14 +RCIN15 +RCIN16 +Ignition +Choke +Starter +Throttle +TrackerYaw +TrackerPitch +ThrottleLeft +ThrottleRight +tiltMotorLeft +tiltMotorRight +ElevonLeft +ElevonRight +VTailLeft +VTailRight +BoostThrottle +Motor9 +Motor10 +Motor11 +Motor12 +Winch + + + + + +500 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + + +Normal +Reversed + + + + +Disabled +RCPassThru +Flap +Flap_auto +Aileron +mount_pan +mount_tilt +mount_roll +mount_open +camera_trigger +release +mount2_pan +mount2_tilt +mount2_roll +mount2_open +DifferentialSpoilerLeft1 +DifferentialSpoilerRight1 +DifferentialSpoilerLeft2 +DifferentialSpoilerRight2 +Elevator +Rudder +FlaperonLeft +FlaperonRight +GroundSteering +Parachute +EPM +LandingGear +EngineRunEnable +HeliRSC +HeliTailRSC +Motor1 +Motor2 +Motor3 +Motor4 +Motor5 +Motor6 +Motor7 +Motor8 +MotorTilt +RCIN1 +RCIN2 +RCIN3 +RCIN4 +RCIN5 +RCIN6 +RCIN7 +RCIN8 +RCIN9 +RCIN10 +RCIN11 +RCIN12 +RCIN13 +RCIN14 +RCIN15 +RCIN16 +Ignition +Choke +Starter +Throttle +TrackerYaw +TrackerPitch +ThrottleLeft +ThrottleRight +tiltMotorLeft +tiltMotorRight +ElevonLeft +ElevonRight +VTailLeft +VTailRight +BoostThrottle +Motor9 +Motor10 +Motor11 +Motor12 +Winch + + + + + +500 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + + +Normal +Reversed + + + + +Disabled +RCPassThru +Flap +Flap_auto +Aileron +mount_pan +mount_tilt +mount_roll +mount_open +camera_trigger +release +mount2_pan +mount2_tilt +mount2_roll +mount2_open +DifferentialSpoilerLeft1 +DifferentialSpoilerRight1 +DifferentialSpoilerLeft2 +DifferentialSpoilerRight2 +Elevator +Rudder +FlaperonLeft +FlaperonRight +GroundSteering +Parachute +EPM +LandingGear +EngineRunEnable +HeliRSC +HeliTailRSC +Motor1 +Motor2 +Motor3 +Motor4 +Motor5 +Motor6 +Motor7 +Motor8 +MotorTilt +RCIN1 +RCIN2 +RCIN3 +RCIN4 +RCIN5 +RCIN6 +RCIN7 +RCIN8 +RCIN9 +RCIN10 +RCIN11 +RCIN12 +RCIN13 +RCIN14 +RCIN15 +RCIN16 +Ignition +Choke +Starter +Throttle +TrackerYaw +TrackerPitch +ThrottleLeft +ThrottleRight +tiltMotorLeft +tiltMotorRight +ElevonLeft +ElevonRight +VTailLeft +VTailRight +BoostThrottle +Motor9 +Motor10 +Motor11 +Motor12 +Winch + + + + + +500 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + + +Normal +Reversed + + + + +Disabled +RCPassThru +Flap +Flap_auto +Aileron +mount_pan +mount_tilt +mount_roll +mount_open +camera_trigger +release +mount2_pan +mount2_tilt +mount2_roll +mount2_open +DifferentialSpoilerLeft1 +DifferentialSpoilerRight1 +DifferentialSpoilerLeft2 +DifferentialSpoilerRight2 +Elevator +Rudder +FlaperonLeft +FlaperonRight +GroundSteering +Parachute +EPM +LandingGear +EngineRunEnable +HeliRSC +HeliTailRSC +Motor1 +Motor2 +Motor3 +Motor4 +Motor5 +Motor6 +Motor7 +Motor8 +MotorTilt +RCIN1 +RCIN2 +RCIN3 +RCIN4 +RCIN5 +RCIN6 +RCIN7 +RCIN8 +RCIN9 +RCIN10 +RCIN11 +RCIN12 +RCIN13 +RCIN14 +RCIN15 +RCIN16 +Ignition +Choke +Starter +Throttle +TrackerYaw +TrackerPitch +ThrottleLeft +ThrottleRight +tiltMotorLeft +tiltMotorRight +ElevonLeft +ElevonRight +VTailLeft +VTailRight +BoostThrottle +Motor9 +Motor10 +Motor11 +Motor12 +Winch + + + + + +500 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + + +Normal +Reversed + + + + +Disabled +RCPassThru +Flap +Flap_auto +Aileron +mount_pan +mount_tilt +mount_roll +mount_open +camera_trigger +release +mount2_pan +mount2_tilt +mount2_roll +mount2_open +DifferentialSpoilerLeft1 +DifferentialSpoilerRight1 +DifferentialSpoilerLeft2 +DifferentialSpoilerRight2 +Elevator +Rudder +FlaperonLeft +FlaperonRight +GroundSteering +Parachute +EPM +LandingGear +EngineRunEnable +HeliRSC +HeliTailRSC +Motor1 +Motor2 +Motor3 +Motor4 +Motor5 +Motor6 +Motor7 +Motor8 +MotorTilt +RCIN1 +RCIN2 +RCIN3 +RCIN4 +RCIN5 +RCIN6 +RCIN7 +RCIN8 +RCIN9 +RCIN10 +RCIN11 +RCIN12 +RCIN13 +RCIN14 +RCIN15 +RCIN16 +Ignition +Choke +Starter +Throttle +TrackerYaw +TrackerPitch +ThrottleLeft +ThrottleRight +tiltMotorLeft +tiltMotorRight +ElevonLeft +ElevonRight +VTailLeft +VTailRight +BoostThrottle +Motor9 +Motor10 +Motor11 +Motor12 +Winch + + + + + +500 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + + +Normal +Reversed + + + + +Disabled +RCPassThru +Flap +Flap_auto +Aileron +mount_pan +mount_tilt +mount_roll +mount_open +camera_trigger +release +mount2_pan +mount2_tilt +mount2_roll +mount2_open +DifferentialSpoilerLeft1 +DifferentialSpoilerRight1 +DifferentialSpoilerLeft2 +DifferentialSpoilerRight2 +Elevator +Rudder +FlaperonLeft +FlaperonRight +GroundSteering +Parachute +EPM +LandingGear +EngineRunEnable +HeliRSC +HeliTailRSC +Motor1 +Motor2 +Motor3 +Motor4 +Motor5 +Motor6 +Motor7 +Motor8 +MotorTilt +RCIN1 +RCIN2 +RCIN3 +RCIN4 +RCIN5 +RCIN6 +RCIN7 +RCIN8 +RCIN9 +RCIN10 +RCIN11 +RCIN12 +RCIN13 +RCIN14 +RCIN15 +RCIN16 +Ignition +Choke +Starter +Throttle +TrackerYaw +TrackerPitch +ThrottleLeft +ThrottleRight +tiltMotorLeft +tiltMotorRight +ElevonLeft +ElevonRight +VTailLeft +VTailRight +BoostThrottle +Motor9 +Motor10 +Motor11 +Motor12 +Winch + + + + + +500 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + + +Normal +Reversed + + + + +Disabled +RCPassThru +Flap +Flap_auto +Aileron +mount_pan +mount_tilt +mount_roll +mount_open +camera_trigger +release +mount2_pan +mount2_tilt +mount2_roll +mount2_open +DifferentialSpoilerLeft1 +DifferentialSpoilerRight1 +DifferentialSpoilerLeft2 +DifferentialSpoilerRight2 +Elevator +Rudder +FlaperonLeft +FlaperonRight +GroundSteering +Parachute +EPM +LandingGear +EngineRunEnable +HeliRSC +HeliTailRSC +Motor1 +Motor2 +Motor3 +Motor4 +Motor5 +Motor6 +Motor7 +Motor8 +MotorTilt +RCIN1 +RCIN2 +RCIN3 +RCIN4 +RCIN5 +RCIN6 +RCIN7 +RCIN8 +RCIN9 +RCIN10 +RCIN11 +RCIN12 +RCIN13 +RCIN14 +RCIN15 +RCIN16 +Ignition +Choke +Starter +Throttle +TrackerYaw +TrackerPitch +ThrottleLeft +ThrottleRight +tiltMotorLeft +tiltMotorRight +ElevonLeft +ElevonRight +VTailLeft +VTailRight +BoostThrottle +Motor9 +Motor10 +Motor11 +Motor12 +Winch + + + + + +500 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + + +Normal +Reversed + + + + +Disabled +RCPassThru +Flap +Flap_auto +Aileron +mount_pan +mount_tilt +mount_roll +mount_open +camera_trigger +release +mount2_pan +mount2_tilt +mount2_roll +mount2_open +DifferentialSpoilerLeft1 +DifferentialSpoilerRight1 +DifferentialSpoilerLeft2 +DifferentialSpoilerRight2 +Elevator +Rudder +FlaperonLeft +FlaperonRight +GroundSteering +Parachute +EPM +LandingGear +EngineRunEnable +HeliRSC +HeliTailRSC +Motor1 +Motor2 +Motor3 +Motor4 +Motor5 +Motor6 +Motor7 +Motor8 +MotorTilt +RCIN1 +RCIN2 +RCIN3 +RCIN4 +RCIN5 +RCIN6 +RCIN7 +RCIN8 +RCIN9 +RCIN10 +RCIN11 +RCIN12 +RCIN13 +RCIN14 +RCIN15 +RCIN16 +Ignition +Choke +Starter +Throttle +TrackerYaw +TrackerPitch +ThrottleLeft +ThrottleRight +tiltMotorLeft +tiltMotorRight +ElevonLeft +ElevonRight +VTailLeft +VTailRight +BoostThrottle +Motor9 +Motor10 +Motor11 +Motor12 +Winch + + + + + +500 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + + +Normal +Reversed + + + + +Disabled +RCPassThru +Flap +Flap_auto +Aileron +mount_pan +mount_tilt +mount_roll +mount_open +camera_trigger +release +mount2_pan +mount2_tilt +mount2_roll +mount2_open +DifferentialSpoilerLeft1 +DifferentialSpoilerRight1 +DifferentialSpoilerLeft2 +DifferentialSpoilerRight2 +Elevator +Rudder +FlaperonLeft +FlaperonRight +GroundSteering +Parachute +EPM +LandingGear +EngineRunEnable +HeliRSC +HeliTailRSC +Motor1 +Motor2 +Motor3 +Motor4 +Motor5 +Motor6 +Motor7 +Motor8 +MotorTilt +RCIN1 +RCIN2 +RCIN3 +RCIN4 +RCIN5 +RCIN6 +RCIN7 +RCIN8 +RCIN9 +RCIN10 +RCIN11 +RCIN12 +RCIN13 +RCIN14 +RCIN15 +RCIN16 +Ignition +Choke +Starter +Throttle +TrackerYaw +TrackerPitch +ThrottleLeft +ThrottleRight +tiltMotorLeft +tiltMotorRight +ElevonLeft +ElevonRight +VTailLeft +VTailRight +BoostThrottle +Motor9 +Motor10 +Motor11 +Motor12 +Winch + + + + + +500 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + + +Normal +Reversed + + + + +Disabled +RCPassThru +Flap +Flap_auto +Aileron +mount_pan +mount_tilt +mount_roll +mount_open +camera_trigger +release +mount2_pan +mount2_tilt +mount2_roll +mount2_open +DifferentialSpoilerLeft1 +DifferentialSpoilerRight1 +DifferentialSpoilerLeft2 +DifferentialSpoilerRight2 +Elevator +Rudder +FlaperonLeft +FlaperonRight +GroundSteering +Parachute +EPM +LandingGear +EngineRunEnable +HeliRSC +HeliTailRSC +Motor1 +Motor2 +Motor3 +Motor4 +Motor5 +Motor6 +Motor7 +Motor8 +MotorTilt +RCIN1 +RCIN2 +RCIN3 +RCIN4 +RCIN5 +RCIN6 +RCIN7 +RCIN8 +RCIN9 +RCIN10 +RCIN11 +RCIN12 +RCIN13 +RCIN14 +RCIN15 +RCIN16 +Ignition +Choke +Starter +Throttle +TrackerYaw +TrackerPitch +ThrottleLeft +ThrottleRight +tiltMotorLeft +tiltMotorRight +ElevonLeft +ElevonRight +VTailLeft +VTailRight +BoostThrottle +Motor9 +Motor10 +Motor11 +Motor12 +Winch + + + + + +500 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + + +Normal +Reversed + + + + +Disabled +RCPassThru +Flap +Flap_auto +Aileron +mount_pan +mount_tilt +mount_roll +mount_open +camera_trigger +release +mount2_pan +mount2_tilt +mount2_roll +mount2_open +DifferentialSpoilerLeft1 +DifferentialSpoilerRight1 +DifferentialSpoilerLeft2 +DifferentialSpoilerRight2 +Elevator +Rudder +FlaperonLeft +FlaperonRight +GroundSteering +Parachute +EPM +LandingGear +EngineRunEnable +HeliRSC +HeliTailRSC +Motor1 +Motor2 +Motor3 +Motor4 +Motor5 +Motor6 +Motor7 +Motor8 +MotorTilt +RCIN1 +RCIN2 +RCIN3 +RCIN4 +RCIN5 +RCIN6 +RCIN7 +RCIN8 +RCIN9 +RCIN10 +RCIN11 +RCIN12 +RCIN13 +RCIN14 +RCIN15 +RCIN16 +Ignition +Choke +Starter +Throttle +TrackerYaw +TrackerPitch +ThrottleLeft +ThrottleRight +tiltMotorLeft +tiltMotorRight +ElevonLeft +ElevonRight +VTailLeft +VTailRight +BoostThrottle +Motor9 +Motor10 +Motor11 +Motor12 +Winch + + + + + +500 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + + +Normal +Reversed + + + + +Disabled +RCPassThru +Flap +Flap_auto +Aileron +mount_pan +mount_tilt +mount_roll +mount_open +camera_trigger +release +mount2_pan +mount2_tilt +mount2_roll +mount2_open +DifferentialSpoilerLeft1 +DifferentialSpoilerRight1 +DifferentialSpoilerLeft2 +DifferentialSpoilerRight2 +Elevator +Rudder +FlaperonLeft +FlaperonRight +GroundSteering +Parachute +EPM +LandingGear +EngineRunEnable +HeliRSC +HeliTailRSC +Motor1 +Motor2 +Motor3 +Motor4 +Motor5 +Motor6 +Motor7 +Motor8 +MotorTilt +RCIN1 +RCIN2 +RCIN3 +RCIN4 +RCIN5 +RCIN6 +RCIN7 +RCIN8 +RCIN9 +RCIN10 +RCIN11 +RCIN12 +RCIN13 +RCIN14 +RCIN15 +RCIN16 +Ignition +Choke +Starter +Throttle +TrackerYaw +TrackerPitch +ThrottleLeft +ThrottleRight +tiltMotorLeft +tiltMotorRight +ElevonLeft +ElevonRight +VTailLeft +VTailRight +BoostThrottle +Motor9 +Motor10 +Motor11 +Motor12 +Winch + + + + + +500 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + + +Normal +Reversed + + + + +Disabled +RCPassThru +Flap +Flap_auto +Aileron +mount_pan +mount_tilt +mount_roll +mount_open +camera_trigger +release +mount2_pan +mount2_tilt +mount2_roll +mount2_open +DifferentialSpoilerLeft1 +DifferentialSpoilerRight1 +DifferentialSpoilerLeft2 +DifferentialSpoilerRight2 +Elevator +Rudder +FlaperonLeft +FlaperonRight +GroundSteering +Parachute +EPM +LandingGear +EngineRunEnable +HeliRSC +HeliTailRSC +Motor1 +Motor2 +Motor3 +Motor4 +Motor5 +Motor6 +Motor7 +Motor8 +MotorTilt +RCIN1 +RCIN2 +RCIN3 +RCIN4 +RCIN5 +RCIN6 +RCIN7 +RCIN8 +RCIN9 +RCIN10 +RCIN11 +RCIN12 +RCIN13 +RCIN14 +RCIN15 +RCIN16 +Ignition +Choke +Starter +Throttle +TrackerYaw +TrackerPitch +ThrottleLeft +ThrottleRight +tiltMotorLeft +tiltMotorRight +ElevonLeft +ElevonRight +VTailLeft +VTailRight +BoostThrottle +Motor9 +Motor10 +Motor11 +Motor12 +Winch + + + + + +500 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + + +Normal +Reversed + + + + +Disabled +RCPassThru +Flap +Flap_auto +Aileron +mount_pan +mount_tilt +mount_roll +mount_open +camera_trigger +release +mount2_pan +mount2_tilt +mount2_roll +mount2_open +DifferentialSpoilerLeft1 +DifferentialSpoilerRight1 +DifferentialSpoilerLeft2 +DifferentialSpoilerRight2 +Elevator +Rudder +FlaperonLeft +FlaperonRight +GroundSteering +Parachute +EPM +LandingGear +EngineRunEnable +HeliRSC +HeliTailRSC +Motor1 +Motor2 +Motor3 +Motor4 +Motor5 +Motor6 +Motor7 +Motor8 +MotorTilt +RCIN1 +RCIN2 +RCIN3 +RCIN4 +RCIN5 +RCIN6 +RCIN7 +RCIN8 +RCIN9 +RCIN10 +RCIN11 +RCIN12 +RCIN13 +RCIN14 +RCIN15 +RCIN16 +Ignition +Choke +Starter +Throttle +TrackerYaw +TrackerPitch +ThrottleLeft +ThrottleRight +tiltMotorLeft +tiltMotorRight +ElevonLeft +ElevonRight +VTailLeft +VTailRight +BoostThrottle +Motor9 +Motor10 +Motor11 +Motor12 +Winch + + + + + +500 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + + +Normal +Reversed + + + + +Disabled +RCPassThru +Flap +Flap_auto +Aileron +mount_pan +mount_tilt +mount_roll +mount_open +camera_trigger +release +mount2_pan +mount2_tilt +mount2_roll +mount2_open +DifferentialSpoilerLeft1 +DifferentialSpoilerRight1 +DifferentialSpoilerLeft2 +DifferentialSpoilerRight2 +Elevator +Rudder +FlaperonLeft +FlaperonRight +GroundSteering +Parachute +EPM +LandingGear +EngineRunEnable +HeliRSC +HeliTailRSC +Motor1 +Motor2 +Motor3 +Motor4 +Motor5 +Motor6 +Motor7 +Motor8 +MotorTilt +RCIN1 +RCIN2 +RCIN3 +RCIN4 +RCIN5 +RCIN6 +RCIN7 +RCIN8 +RCIN9 +RCIN10 +RCIN11 +RCIN12 +RCIN13 +RCIN14 +RCIN15 +RCIN16 +Ignition +Choke +Starter +Throttle +TrackerYaw +TrackerPitch +ThrottleLeft +ThrottleRight +tiltMotorLeft +tiltMotorRight +ElevonLeft +ElevonRight +VTailLeft +VTailRight +BoostThrottle +Motor9 +Motor10 +Motor11 +Motor12 +Winch + + + + + +500 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + + +Normal +Reversed + + + + +Disabled +RCPassThru +Flap +Flap_auto +Aileron +mount_pan +mount_tilt +mount_roll +mount_open +camera_trigger +release +mount2_pan +mount2_tilt +mount2_roll +mount2_open +DifferentialSpoilerLeft1 +DifferentialSpoilerRight1 +DifferentialSpoilerLeft2 +DifferentialSpoilerRight2 +Elevator +Rudder +FlaperonLeft +FlaperonRight +GroundSteering +Parachute +EPM +LandingGear +EngineRunEnable +HeliRSC +HeliTailRSC +Motor1 +Motor2 +Motor3 +Motor4 +Motor5 +Motor6 +Motor7 +Motor8 +MotorTilt +RCIN1 +RCIN2 +RCIN3 +RCIN4 +RCIN5 +RCIN6 +RCIN7 +RCIN8 +RCIN9 +RCIN10 +RCIN11 +RCIN12 +RCIN13 +RCIN14 +RCIN15 +RCIN16 +Ignition +Choke +Starter +Throttle +TrackerYaw +TrackerPitch +ThrottleLeft +ThrottleRight +tiltMotorLeft +tiltMotorRight +ElevonLeft +ElevonRight +VTailLeft +VTailRight +BoostThrottle +Motor9 +Motor10 +Motor11 +Motor12 +Winch + + + + + +0:Channel1,1:Channel2,2:Channel3,3:Channel4,4:Channel5,5:Channel6,6:Channel7,7:Channel8,8:Channel9,9:Channel10,10:Channel11,11:Channel12,12:Channel13,13:Channel14,14:Channel15,15:Channel16 + + + +Disabled +Enabled + + + + +Disabled +TestMotor1 +TestMotor2 +TestMotor3 +TestMotor4 +TestMotor5 +TestMotor6 +TestMotor7 +TestMotor8 + + + +0 300 +s +seconds + + +0 500 +Hz +hertz + + + +Disabled +Enabled + + + + +None +OneShot +OneShot125 +Brushed +DShot150 +DShot300 +DShot600 +DShot1200 + + + + + +25 250 +Hz +hertz + + + + +0:Channel1,1:Channel2,2:Channel3,3:Channel4,4:Channel5,5:Channel6,6:Channel7,7:Channel8,8:Channel9,9:Channel10,10:Channel11,11:Channel12,12:Channel13,13:Channel14,14:Channel15,15:Channel16 + + + + + +Disabled +Enabled + + + +0 100 +% +percent + + +1000 2000 +ms +milliseconds + + +0 1000 +cm/s +centimeters per second + + +0 100 +% +percent + + + + +0 10 +1 +Hz +hertz + + +0 10 +1 +Hz +hertz + + +0 10 +1 +Hz +hertz + + +0 10 +1 +Hz +hertz + + +0 10 +1 +Hz +hertz + + +0 10 +1 +Hz +hertz + + +0 10 +1 +Hz +hertz + + +0 10 +1 +Hz +hertz + + +0 10 +1 +Hz +hertz + + +0 50 +1 +Hz +hertz + + + + +0 10 +1 +Hz +hertz + + +0 10 +1 +Hz +hertz + + +0 10 +1 +Hz +hertz + + +0 10 +1 +Hz +hertz + + +0 10 +1 +Hz +hertz + + +0 10 +1 +Hz +hertz + + +0 10 +1 +Hz +hertz + + +0 10 +1 +Hz +hertz + + +0 10 +1 +Hz +hertz + + +0 50 +1 +Hz +hertz + + + + +0 10 +1 +Hz +hertz + + +0 10 +1 +Hz +hertz + + +0 10 +1 +Hz +hertz + + +0 10 +1 +Hz +hertz + + +0 10 +1 +Hz +hertz + + +0 10 +1 +Hz +hertz + + +0 10 +1 +Hz +hertz + + +0 10 +1 +Hz +hertz + + +0 10 +1 +Hz +hertz + + +0 50 +1 +Hz +hertz + + + + +0 10 +1 +Hz +hertz + + +0 10 +1 +Hz +hertz + + +0 10 +1 +Hz +hertz + + +0 10 +1 +Hz +hertz + + +0 10 +1 +Hz +hertz + + +0 10 +1 +Hz +hertz + + +0 10 +1 +Hz +hertz + + +0 10 +1 +Hz +hertz + + +0 10 +1 +Hz +hertz + + +0 50 +1 +Hz +hertz + + + + +0 10 +m +meters + + +0 500 +True + + + + +True + + +True +s +seconds + + +True +s +seconds + + +True +s +seconds + + + + + +Disabled +Enabled +EnableAndLearn + + + +True +True +degC +degrees Celsius + + +True +True +degC +degrees Celsius + + +True +True +degC +degrees Celsius + + +True +True + + + + + +Disable +Enable + + + +1 +m +meters + + + + + +Disabled +EnableVersion1 +EnableVersion2 + + + + +Stabilize +Acro +AltHold +Auto +Guided +Loiter +RTL +Circle +Land +Drift +Sport +Flip +AutoTune +PosHold +Brake +Throw +Avoid_ADSB +Guided_NoGPS +FlowHold + + + + +Stabilize +Acro +AltHold +Auto +Guided +Loiter +RTL +Circle +Land +Drift +Sport +Flip +AutoTune +PosHold +Brake +Throw +Avoid_ADSB +Guided_NoGPS +FlowHold + + + + +None +TakePhoto +ToggleVideo +ModeAcro +ModeAltHold +ModeAuto +ModeLoiter +ModeRTL +ModeCircle +ModeLand +ModeDrift +ModeSport +ModeAutoTune +ModePosHold +ModeBrake +ModeThrow +Flip +ModeStabilize +Disarm +ToggleMode +Arm-Land-RTL +ToggleSimpleMode +ToggleSuperSimpleMode +MotorLoadTest +ModeFlowHold + + + + +None +TakePhoto +ToggleVideo +ModeAcro +ModeAltHold +ModeAuto +ModeLoiter +ModeRTL +ModeCircle +ModeLand +ModeDrift +ModeSport +ModeAutoTune +ModePosHold +ModeBrake +ModeThrow +Flip +ModeStabilize +Disarm +ToggleMode +Arm-Land-RTL +ToggleSimpleMode +ToggleSuperSimpleMode +MotorLoadTest +ModeFlowHold + + + + +None +TakePhoto +ToggleVideo +ModeAcro +ModeAltHold +ModeAuto +ModeLoiter +ModeRTL +ModeCircle +ModeLand +ModeDrift +ModeSport +ModeAutoTune +ModePosHold +ModeBrake +ModeThrow +Flip +ModeStabilize +Disarm +ToggleMode +Arm-Land-RTL +ToggleSimpleMode +ToggleSuperSimpleMode +MotorLoadTest +ModeFlowHold + + + + +None +TakePhoto +ToggleVideo +ModeAcro +ModeAltHold +ModeAuto +ModeLoiter +ModeRTL +ModeCircle +ModeLand +ModeDrift +ModeSport +ModeAutoTune +ModePosHold +ModeBrake +ModeThrow +Flip +ModeStabilize +Disarm +ToggleMode +Arm-Land-RTL +ToggleSimpleMode +ToggleSuperSimpleMode +MotorLoadTest +ModeFlowHold + + + + +None +TakePhoto +ToggleVideo +ModeAcro +ModeAltHold +ModeAuto +ModeLoiter +ModeRTL +ModeCircle +ModeLand +ModeDrift +ModeSport +ModeAutoTune +ModePosHold +ModeBrake +ModeThrow +Flip +ModeStabilize +Disarm +ToggleMode +Arm-Land-RTL +ToggleSimpleMode +ToggleSuperSimpleMode +MotorLoadTest +ModeFlowHold + + + + +None +TakePhoto +ToggleVideo +ModeAcro +ModeAltHold +ModeAuto +ModeLoiter +ModeRTL +ModeCircle +ModeLand +ModeDrift +ModeSport +ModeAutoTune +ModePosHold +ModeBrake +ModeThrow +Flip +ModeStabilize +Disarm +ToggleMode +Arm-Land-RTL +ToggleSimpleMode +ToggleSuperSimpleMode +MotorLoadTest +ModeFlowHold + + + + +None +TakePhoto +ToggleVideo +ModeAcro +ModeAltHold +ModeAuto +ModeLoiter +ModeRTL +ModeCircle +ModeLand +ModeDrift +ModeSport +ModeAutoTune +ModePosHold +ModeBrake +ModeThrow +Flip +ModeStabilize +Disarm +ToggleMode +Arm-Land-RTL +ToggleSimpleMode +ToggleSuperSimpleMode +MotorLoadTest +ModeFlowHold + + + + +None +TakePhoto +ToggleVideo +ModeAcro +ModeAltHold +ModeAuto +ModeLoiter +ModeRTL +ModeCircle +ModeLand +ModeDrift +ModeSport +ModeAutoTune +ModePosHold +ModeBrake +ModeThrow +Flip +ModeStabilize +Disarm +ToggleMode +Arm-Land-RTL +ToggleSimpleMode +ToggleSuperSimpleMode +MotorLoadTest +ModeFlowHold + + + +0 100 + + + +None +TakePhoto +ToggleVideo +ModeAcro +ModeAltHold +ModeAuto +ModeLoiter +ModeRTL +ModeCircle +ModeLand +ModeDrift +ModeSport +ModeAutoTune +ModePosHold +ModeBrake +ModeThrow +Flip +ModeStabilize +Disarm +ToggleMode +Arm-Land-RTL +ToggleSimpleMode +ToggleSuperSimpleMode +MotorLoadTest + + + +0:DisarmOnLowThrottle,1:ArmOnHighThrottle,2:UpgradeToLoiter,3:RTLStickCancel + + +0 5 +0.01 + + +0 5 +0.01 + + +0 1 +0.01 + + +0 1 +0.01 + + +0 1 +0.01 + + +0 100 + + + +ConstantThrust +LogReplay1 +LogReplay2 + + + + + + +None +MAV + + + +m +meters + + +m +meters + + +m +meters + + + +Forward +Right +Back +Left +Up +Down + + + + + + +None +Quadrature + + + +1 + + +0.001 + + +0.01 +m +meters + + +0.01 +m +meters + + +0.01 +m +meters + + + +Disabled +PixhawkAUX1 +PixhawkAUX2 +PixhawkAUX3 +PixhawkAUX4 +PixhawkAUX5 +PixhawkAUX6 + + + + +Disabled +PixhawkAUX1 +PixhawkAUX2 +PixhawkAUX3 +PixhawkAUX4 +PixhawkAUX5 +PixhawkAUX6 + + + + +None +Quadrature + + + +1 + + +0.001 + + +0.01 +m +meters + + +0.01 +m +meters + + +0.01 +m +meters + + + +Disabled +PixhawkAUX1 +PixhawkAUX2 +PixhawkAUX3 +PixhawkAUX4 +PixhawkAUX5 +PixhawkAUX6 + + + + +Disabled +PixhawkAUX1 +PixhawkAUX2 +PixhawkAUX3 +PixhawkAUX4 +PixhawkAUX5 +PixhawkAUX6 + + + + + + +Disabled +Enabled + + + + +Servo with encoder + + + +0 10 +m/s +meters per second + + +0.01 10.0 + + +0.100 2.000 + + +0.000 2.000 + + +0.000 1.000 + + +0.000 0.400 + + +1.000 100.000 +Hz +hertz + + + + +20 2000 +50 +cm/s +centimeters per second + + +10 1000 +1 +cm +centimeters + + +10 1000 +50 +cm/s +centimeters per second + + +10 500 +10 +cm/s +centimeters per second + + +50 500 +10 +cm/s/s +centimeters per square second + + +50 500 +10 +cm/s/s +centimeters per square second + + + +Disable +Enable + + + + diff --git a/src/FirmwarePlugin/APM/APMParameterFactMetaData.Copter.3.7.xml b/src/FirmwarePlugin/APM/APMParameterFactMetaData.Copter.3.7.xml new file mode 100644 index 0000000..195ecb7 --- /dev/null +++ b/src/FirmwarePlugin/APM/APMParameterFactMetaData.Copter.3.7.xml @@ -0,0 +1,14791 @@ + + + + + + +True + + +1 255 + + + +Mission Planner and DroidPlanner + AP Planner 2 + + + +0 10 +.5 +Hz +hertz + + +0.0 1000.0 +10 +cm +centimeters + + +0 500 +10 + + +0:Feedback from mid stick,1:High throttle cancels landing,2:Disarm on land detection + +None +Feedback from mid stick +High throttle cancels landing +Disarm on land detection + + + +0 30 +1 +s +seconds + + +0:Roll,1:Pitch,2:Yaw + +None +Roll +Pitch +Yaw + + + +200 8000 +1 +cm +centimeters + + +0.5 10.0 + +Disabled +Shallow +Steep + +.1 + + +0 2000 +50 +cm/s +centimeters per second + + +-1 1000 +1 +cm +centimeters + + +0 3000 +10 +cm +centimeters + + +0 60000 +1000 +ms +milliseconds + + +0.01 2.0 +0.01 + + + +Disabled +Enabled always RTL +Enabled Continue with Mission in Auto Mode +Enabled always SmartRTL or RTL +Enabled always SmartRTL or Land + + + +100 900 + + + +Disabled +Enabled + + + + +Disabled +Mode1 +Mode2 +Mode1+2 +Mode3 +Mode1+3 +Mode2+3 +Mode1+2+3 +Mode4 +Mode1+4 +Mode2+4 +Mode1+2+4 +Mode3+4 +Mode1+3+4 +Mode2+3+4 +Mode1+2+3+4 +Mode5 +Mode1+5 +Mode2+5 +Mode1+2+5 +Mode3+5 +Mode1+3+5 +Mode2+3+5 +Mode1+2+3+5 +Mode4+5 +Mode1+4+5 +Mode2+4+5 +Mode1+2+4+5 +Mode3+4+5 +Mode1+3+4+5 +Mode2+3+4+5 +Mode1+2+3+4+5 +Mode6 +Mode1+6 +Mode2+6 +Mode1+2+6 +Mode3+6 +Mode1+3+6 +Mode2+3+6 +Mode1+2+3+6 +Mode4+6 +Mode1+4+6 +Mode2+4+6 +Mode1+2+4+6 +Mode3+4+6 +Mode1+3+4+6 +Mode2+3+4+6 +Mode1+2+3+4+6 +Mode5+6 +Mode1+5+6 +Mode2+5+6 +Mode1+2+5+6 +Mode3+5+6 +Mode1+3+5+6 +Mode2+3+5+6 +Mode1+2+3+5+6 +Mode4+5+6 +Mode1+4+5+6 +Mode2+4+5+6 +Mode1+2+4+5+6 +Mode3+4+5+6 +Mode1+3+4+5+6 +Mode2+3+4+5+6 +Mode1+2+3+4+5+6 + + + + +Never change yaw +Face next waypoint +Face next waypoint except RTL +Face along GPS course + + + +30 200 +10 +cm/s +centimeters per second + + +0 500 +10 +cm/s +centimeters per second + + +50 500 +10 +cm/s +centimeters per second + + +50 500 +10 +cm/s/s +centimeters per square second + + + +Disabled +Enabled always RTL +Enabled Continue with Mission in Auto Mode +Enabled always Land +Enabled always SmartRTL or RTL +Enabled always SmartRTL or Land + + + +925 1100 +1 +PWM +PWM in microseconds + + +0 300 +1 +PWM +PWM in microseconds + + + +Stabilize +Acro +AltHold +Auto +Guided +Loiter +RTL +Circle +Land +Drift +Sport +Flip +AutoTune +PosHold +Brake +Throw +Avoid_ADSB +Guided_NoGPS +Smart_RTL +FlowHold +Follow +ZigZag + + + + +Stabilize +Acro +AltHold +Auto +Guided +Loiter +RTL +Circle +Land +Drift +Sport +Flip +AutoTune +PosHold +Brake +Throw +Avoid_ADSB +Guided_NoGPS +Smart_RTL +FlowHold +Follow +ZigZag + + + + +Stabilize +Acro +AltHold +Auto +Guided +Loiter +RTL +Circle +Land +Drift +Sport +Flip +AutoTune +PosHold +Brake +Throw +Avoid_ADSB +Guided_NoGPS +Smart_RTL +FlowHold +Follow +ZigZag + + + + +Stabilize +Acro +AltHold +Auto +Guided +Loiter +RTL +Circle +Land +Drift +Sport +Flip +AutoTune +PosHold +Brake +Throw +Avoid_ADSB +Guided_NoGPS +Smart_RTL +FlowHold +Follow +ZigZag + + + + +Stabilize +Acro +AltHold +Auto +Guided +Loiter +RTL +Circle +Land +Drift +Sport +Flip +AutoTune +PosHold +Brake +Throw +Avoid_ADSB +Guided_NoGPS +Smart_RTL +FlowHold +Follow +ZigZag + + + + +Stabilize +Acro +AltHold +Auto +Guided +Loiter +RTL +Circle +Land +Drift +Sport +Flip +AutoTune +PosHold +Brake +Throw +Avoid_ADSB +Guided_NoGPS +Smart_RTL +FlowHold +Follow +ZigZag + + + + +Disabled +Channel5 +Channel6 +Channel7 +Channel8 + + + + + +0:ATTITUDE_FAST,1:ATTITUDE_MED,2:GPS,3:PM,4:CTUN,5:NTUN,6:RCIN,7:IMU,8:CMD,9:CURRENT,10:RCOUT,11:OPTFLOW,12:PID,13:COMPASS,14:INAV,15:CAMERA,17:MOTBATT,18:IMU_FAST,19:IMU_RAW + +Default +Default+RCIN +Default+IMU +Default+Motors +NearlyAll-AC315 +NearlyAll +All+FastATT +All+MotBatt +All+FastIMU +All+FastIMU+PID +All+FullIMU +Disabled + + + + +Normal Start-up +Start-up in ESC Calibration mode if throttle high +Start-up in ESC Calibration mode regardless of throttle +Start-up and automatically calibrate ESCs +Disabled + + + + +None +Stab Roll/Pitch kP +Rate Roll/Pitch kP +Rate Roll/Pitch kI +Rate Roll/Pitch kD +Stab Yaw kP +Rate Yaw kP +Rate Yaw kD +Rate Yaw Filter +Motor Yaw Headroom +AltHold kP +Throttle Rate kP +Throttle Accel kP +Throttle Accel kI +Throttle Accel kD +Loiter Pos kP +Velocity XY kP +Velocity XY kI +WP Speed +Acro RollPitch kP +Acro Yaw kP +RC Feel +Heli Ext Gyro +Declination +Circle Rate +RangeFinder Gain +Rate Pitch kP +Rate Pitch kI +Rate Pitch kD +Rate Roll kP +Rate Roll kI +Rate Roll kD +Rate Pitch FF +Rate Roll FF +Rate Yaw FF +Winch + + + +0 32767 + + +0 32767 + + + +Plus +X +V +H +V-Tail +A-Tail +Y6B +Y6F +BetaFlightX +DJIX +ClockwiseX + +True + + +0 127 +s +seconds + + +1000 8000 +cdeg +centidegrees + + +4 12 +deg/s +degrees per second + + +2000 4500 +cdeg +centidegrees + + + +No repositioning +Repositioning + + + + +Land +AltHold +Land even in Stabilize + + + +0.6:Strict, 0.8:Default, 1.0:Relaxed + + + +Disabled +Enabled + + + +50 490 +1 +Hz +hertz + + +1 10 + + +1 10 + + +0 3 +0.1 + + +0 3 +0.1 + + + +Disabled +Leveling +Leveling and Limited + + + +-0.5 1.0 + +Disabled +Very Low +Low +Medium +High +Very High + + + + +Stopped +Running + + + + +Do Not Use in RTL and Land +Use in RTL and Land + + + +0 5 + + + +Auto +Guided +LOITER +RTL +Land +Brake +Throw + + + + +Upward Throw +Drop + + + + +Disabled +Enabled + + + +0:ADSBMavlinkProcessing,1:DevOptionVFR_HUDRelativeAlt + + +-0.5 1.0 + +Disabled +Very Low +Low +Medium +High +Very High + + + +0 1 + + + +NotEnforced +Enforced + + + + +Undefined +Quad +Hexa +Octa +OctaQuad +Y6 +Heli +Tri +SingleCopter +CoaxCopter +BiCopter +Heli_Dual +DodecaHexa +HeliQuad + +True + + +50 500 +10 +cm/s +centimeters per second + + +100 10000 +10 +cm +centimeters + + + +Do Nothing +Flip +Simple Mode +RTL +Save Trim +Save WP +Camera Trigger +RangeFinder +Fence +Super Simple Mode +Acro Trainer +Sprayer +Auto +AutoTune +Land +Gripper +Parachute Enable +Parachute Release +Parachute 3pos +Auto Mission Reset +AttCon Feed Forward +AttCon Accel Limits +Retract Mount +Relay On/Off +Relay2 On/Off +Relay3 On/Off +Relay4 On/Off +Landing Gear +Lost Copter Sound +Motor Emergency Stop +Motor Interlock +Brake +Throw +ADSB-Avoidance +PrecLoiter +Object Avoidance +ArmDisarm +SmartRTL +InvertedFlight +Winch Enable +WinchControl + + + + +Do Nothing +Flip +Simple Mode +RTL +Save Trim +Save WP +Camera Trigger +RangeFinder +Fence +Super Simple Mode +Acro Trainer +Sprayer +Auto +AutoTune +Land +Gripper +Parachute Enable +Parachute Release +Parachute 3pos +Auto Mission Reset +AttCon Feed Forward +AttCon Accel Limits +Retract Mount +Relay On/Off +Relay2 On/Off +Relay3 On/Off +Relay4 On/Off +Landing Gear +Lost Copter Sound +Motor Emergency Stop +Motor Interlock +Brake +Throw +ADSB-Avoidance +PrecLoiter +Object Avoidance +ArmDisarm +SmartRTL +InvertedFlight +Winch Enable +WinchControl + + + + +Do Nothing +Flip +Simple Mode +RTL +Save Trim +Save WP +Camera Trigger +RangeFinder +Fence +Super Simple Mode +Acro Trainer +Sprayer +Auto +AutoTune +Land +Gripper +Parachute Enable +Parachute Release +Parachute 3pos +Auto Mission Reset +AttCon Feed Forward +AttCon Accel Limits +Retract Mount +Relay On/Off +Relay2 On/Off +Relay3 On/Off +Relay4 On/Off +Landing Gear +Lost Copter Sound +Motor Emergency Stop +Motor Interlock +Brake +Throw +ADSB-Avoidance +PrecLoiter +Object Avoidance +ArmDisarm +SmartRTL +InvertedFlight +Winch Enable +WinchControl + + + + +Do Nothing +Flip +Simple Mode +RTL +Save Trim +Save WP +Camera Trigger +RangeFinder +Fence +Super Simple Mode +Acro Trainer +Sprayer +Auto +AutoTune +Land +Gripper +Parachute Enable +Parachute Release +Parachute 3pos +Auto Mission Reset +AttCon Feed Forward +AttCon Accel Limits +Retract Mount +Relay On/Off +Relay2 On/Off +Relay3 On/Off +Relay4 On/Off +Landing Gear +Lost Copter Sound +Motor Emergency Stop +Motor Interlock +Brake +Throw +ADSB-Avoidance +PrecLoiter +Object Avoidance +ArmDisarm +SmartRTL +InvertedFlight +Winch Enable +WinchControl + + + + +Do Nothing +Flip +Simple Mode +RTL +Save Trim +Save WP +Camera Trigger +RangeFinder +Fence +Super Simple Mode +Acro Trainer +Sprayer +Auto +AutoTune +Land +Gripper +Parachute Enable +Parachute Release +Parachute 3pos +Auto Mission Reset +AttCon Feed Forward +AttCon Accel Limits +Retract Mount +Relay On/Off +Relay2 On/Off +Relay3 On/Off +Relay4 On/Off +Landing Gear +Lost Copter Sound +Motor Emergency Stop +Motor Interlock +Brake +Throw +ADSB-Avoidance +PrecLoiter +Object Avoidance +ArmDisarm +SmartRTL +InvertedFlight +Winch Enable +WinchControl + + + + +Do Nothing +Flip +Simple Mode +RTL +Save Trim +Save WP +Camera Trigger +RangeFinder +Fence +Super Simple Mode +Acro Trainer +Sprayer +Auto +AutoTune +Land +Gripper +Parachute Enable +Parachute Release +Parachute 3pos +Auto Mission Reset +AttCon Feed Forward +AttCon Accel Limits +Retract Mount +Relay On/Off +Relay2 On/Off +Relay3 On/Off +Relay4 On/Off +Landing Gear +Lost Copter Sound +Motor Emergency Stop +Motor Interlock +Brake +Throw +ADSB-Avoidance +PrecLoiter +Object Avoidance +ArmDisarm +SmartRTL +InvertedFlight +Winch Enable +WinchControl + + + + + + +Disabled +Enabled + + + +1 100 + + +0 100000 +m +meters + + +-1 16777215 + + + +NoInfo +Light +Small +Large +HighVortexlarge +Heavy +HighlyManuv +Rotocraft +RESERVED +Glider +LightAir +Parachute +UltraLight +RESERVED +UAV +Space +RESERVED +EmergencySurface +ServiceSurface +PointObstacle + + + + +NO_DATA +L15W23 +L25W28P5 +L25W34 +L35W33 +L35W38 +L45W39P5 +L45W45 +L55W45 +L55W52 +L65W59P5 +L65W67 +L75W72P5 +L75W80 +L85W80 +L85W90 + + + + +NoData +Left2m +Left4m +Left6m +Center +Right2m +Right4m +Right6m + + + + +NO_DATA +AppliedBySensor + + + + +Disabled +Rx-Only +Tx-Only +Rx and Tx Enabled + + + +0 7777 +octal +octal + + +0:UAT_in,1:1090ES_in,2:UAT_out,3:1090ES_out + +Unknown +Rx UAT only +Rx UAT and 1090ES +Rx&Tx UAT and 1090ES + + + +0 32767 +m +meters + + + + + + + + + + + + + + + + + + + + + + +m +meters + + +m +meters + + +mbar +millibar + + + + + + + + + + + + + + +s +seconds + + + + +0.0 1.0 +.01 + + + +Disabled +Enabled + + + +0.1 0.4 +.01 + + +0.1 0.4 +.01 + + +0 127 +1 +m/s +meters per second + + +-0.1745 +0.1745 +0.01 +rad +radians + + +-0.1745 +0.1745 +0.01 +rad +radians + + +-0.1745 +0.1745 +0.01 +rad +radians + + + +None +Yaw45 +Yaw90 +Yaw135 +Yaw180 +Yaw225 +Yaw270 +Yaw315 +Roll180 +Roll180Yaw45 +Roll180Yaw90 +Roll180Yaw135 +Pitch180 +Roll180Yaw225 +Roll180Yaw270 +Roll180Yaw315 +Roll90 +Roll90Yaw45 +Roll90Yaw90 +Roll90Yaw135 +Roll270 +Roll270Yaw45 +Roll270Yaw90 +Roll270Yaw135 +Pitch90 +Pitch270 +Pitch180Yaw90 +Pitch180Yaw270 +Roll90Pitch90 +Roll180Pitch90 +Roll270Pitch90 +Roll90Pitch180 +Roll270Pitch180 +Roll90Pitch270 +Roll180Pitch270 +Roll270Pitch270 +Roll90Pitch180Yaw90 +Roll90Yaw270 +Yaw293Pitch68Roll180 +Pitch315 +Roll90Pitch315 +Custom + + + +0.001 0.5 +.01 + + +0 10 +1 + + + +Disabled +Enable EKF2 +Enable EKF3 + + + +-180 180 +1 +deg +degrees + + +-180 180 +1 +deg +degrees + + +-180 180 +1 +deg +degrees + + + + + +Disabled +THR_MIN PWM when disarmed +0 PWM when disarmed + + + +0:All,1:Barometer,2:Compass,3:GPS lock,4:INS,5:Parameters,6:RC Channels,7:Board voltage,8:Battery Level,9:Airspeed,10:Logging Available,11:Hardware safety switch,12:GPS Configuration,13:System + +None +All +Barometer +Compass +GPS Lock +INS(INertial Sensors - accels & gyros) +Parameters(unused) +RC Channels +Board voltage +Battery Level +Airspeed +LoggingAvailable +Hardware safety switch +GPS configuration +System + + + +0.25 3.0 +m/s/s +meters per square second + + + +Disabled +ArmingOnly +ArmOrDisarm + + + +0:Land,1:VTOL Land,2:DO_LAND_START,3:Takeoff,4:VTOL Takeoff,5:Rallypoint + + + + +500 18000 +100 +cdeg/s +centidegrees per second + + +0 72000 + +Disabled +VerySlow +Slow +Medium +Fast + +1000 +cdeg/s/s +centidegrees per square second + + + +Disabled +Enabled + + + +0 180000 + +Disabled +VerySlow +Slow +Medium +Fast + +1000 +cdeg/s/s +centidegrees per square second + + +0 180000 + +Disabled +VerySlow +Slow +Medium +Fast + +1000 +cdeg/s/s +centidegrees per square second + + + +Disabled +Enabled + + + +0.0 12.000 + + +0.0 12.000 + + +0.0 6.000 + + +0.5 10.0 + + +0 1080 + +Disabled +Slow +Medium +Fast + +1 +deg/s +degrees per second + + +0 1080 + +Disabled +Slow +Medium +Fast + +1 +deg/s +degrees per second + + +0 1080 + +Disabled +Slow +Medium +Fast + +1 +deg/s +degrees per second + + +0 1 +0.5:Very Soft, 0.2:Soft, 0.15:Medium, 0.1:Crisp, 0.05:Very Crisp +0.01 +s +seconds + + +0.05 0.5 +0.005 + + +0.01 2.0 +0.01 + + +0 1 +0.01 +% +percent + + +0.0 0.02 +0.001 + + +0 0.5 +0.001 + + +1 100 +1 +Hz +hertz + + +0.05 0.50 +0.005 + + +0.01 2.0 +0.01 + + +0 1 +0.01 +% +percent + + +0.0 0.02 +0.001 + + +0 0.5 +0.001 + + +1 100 +1 +Hz +hertz + + +0.10 2.50 +0.005 + + +0.010 1.0 +0.01 + + +0 1 +0.01 +% +percent + + +0.000 0.02 +0.001 + + +0 0.5 +0.001 + + +1 10 +1 +Hz +hertz + + +0.1 0.25 + + +0.5 0.9 + + +0.1 0.9 + + +0 1000 +cdeg +centidegrees + + +0.08 0.35 +0.005 + + +0.01 0.6 +0.01 + + +0 1 +0.01 + + +0.001 0.03 +0.001 + + +0 0.5 +0.001 + + +1 20 +1 +Hz +hertz + + +0.08 0.35 +0.005 + + +0.01 0.6 +0.01 + + +0 1 +0.01 + + +0.001 0.03 +0.001 + + +0 0.5 +0.001 + + +1 20 +1 +Hz +hertz + + +0.180 0.60 +0.005 + + +0.01 0.06 +0.01 + + +0 1 +0.01 + + +0.000 0.02 +0.001 + + +0 0.5 +0.001 + + +1 20 +1 +Hz +hertz + + + +Disabled +Enabled + + + + + +0:Roll,1:Pitch,2:Yaw + +All +Roll Only +Pitch Only +Yaw Only +Roll and Pitch +Roll and Yaw +Pitch and Yaw + + + +0.05 0.10 + + +0.001 0.006 + + + + + +Disabled +Enabled + + + + +Remain in AVOID_ADSB +Resume previous flight mode +RTL +Resume if AUTO else Loiter + + + + + +s +seconds + + +s +seconds + + +m +meters + + +m +meters + + +m +meters + + +m +meters + + +m +meters + + + + +0:StopAtFence,1:UseProximitySensor,2:StopAtBeaconFence + +None +StopAtFence +UseProximitySensor +StopAtFence and UseProximitySensor +StopAtBeaconFence +All + + + +0 4500 +cdeg +centidegrees + + +1 30 +m +meters + + +1 10 +m +meters + + + +Slide +Stop + + + + + + +Disabled +Analog Voltage Only +Analog Voltage and Current +Solo +Bebop +SMBus-Maxell +UAVCAN-BatteryInfo +BLHeli ESC +SumOfFollowing +FuelFlow + +True + + + +Disabled +Pixhawk/Pixracer/Navio2/Pixhawk2_PM1 +Pixhawk2_PM2 +PX4-v1 + +True + + + +Disabled +Pixhawk/Pixracer/Navio2/Pixhawk2_PM1 +Pixhawk2_PM2 +PX4-v1 + +True + + + + +A/V +ampere per volt + + +V +volt + + +50 +mAh +milliampere hour + + +1 +W +watt + + + + +0 120 +1 +s +seconds + + + +Raw Voltage +Sag Compensated Voltage + + + +0.1 +V +volt + + +50 +mAh +milliampere hour + + +0.1 +V +volt + + +50 +mAh +milliampere hour + + + +None +Land +RTL +SmartRTL or RTL +SmartRTL or Land +Terminate + + + + +None +Land +RTL +SmartRTL or RTL +SmartRTL or Land +Terminate + + + +0.1 +V +volt + + +50 +mAh +milliampere hour + + + + + +Disabled +Analog Voltage Only +Analog Voltage and Current +Solo +Bebop +SMBus-Maxell +UAVCAN-BatteryInfo +BLHeli ESC +SumOfFollowing +FuelFlow + +True + + + +Disabled +Pixhawk/Pixracer/Navio2/Pixhawk2_PM1 +Pixhawk2_PM2 +PX4-v1 + +True + + + +Disabled +Pixhawk/Pixracer/Navio2/Pixhawk2_PM1 +Pixhawk2_PM2 +PX4-v1 + +True + + + + +A/V +ampere per volt + + +V +volt + + +50 +mAh +milliampere hour + + +1 +W +watt + + + + +0 120 +1 +s +seconds + + + +Raw Voltage +Sag Compensated Voltage + + + +0.1 +V +volt + + +50 +mAh +milliampere hour + + +0.1 +V +volt + + +50 +mAh +milliampere hour + + + +None +Land +RTL +SmartRTL or RTL +SmartRTL or Land +Terminate + + + + +None +Land +RTL +SmartRTL or RTL +SmartRTL or Land +Terminate + + + +0.1 +V +volt + + +50 +mAh +milliampere hour + + + + + +Disabled +Analog Voltage Only +Analog Voltage and Current +Solo +Bebop +SMBus-Maxell +UAVCAN-BatteryInfo +BLHeli ESC +SumOfFollowing +FuelFlow + +True + + + +Disabled +Pixhawk/Pixracer/Navio2/Pixhawk2_PM1 +Pixhawk2_PM2 +PX4-v1 + +True + + + +Disabled +Pixhawk/Pixracer/Navio2/Pixhawk2_PM1 +Pixhawk2_PM2 +PX4-v1 + +True + + + + +A/V +ampere per volt + + +V +volt + + +50 +mAh +milliampere hour + + +1 +W +watt + + + + +0 120 +1 +s +seconds + + + +Raw Voltage +Sag Compensated Voltage + + + +0.1 +V +volt + + +50 +mAh +milliampere hour + + +0.1 +V +volt + + +50 +mAh +milliampere hour + + + +None +Land +RTL +SmartRTL or RTL +SmartRTL or Land +Terminate + + + + +None +Land +RTL +SmartRTL or RTL +SmartRTL or Land +Terminate + + + +0.1 +V +volt + + +50 +mAh +milliampere hour + + + + + +Disabled +Analog Voltage Only +Analog Voltage and Current +Solo +Bebop +SMBus-Maxell +UAVCAN-BatteryInfo +BLHeli ESC +SumOfFollowing +FuelFlow + +True + + + +Disabled +Pixhawk/Pixracer/Navio2/Pixhawk2_PM1 +Pixhawk2_PM2 +PX4-v1 + +True + + + +Disabled +Pixhawk/Pixracer/Navio2/Pixhawk2_PM1 +Pixhawk2_PM2 +PX4-v1 + +True + + + + +A/V +ampere per volt + + +V +volt + + +50 +mAh +milliampere hour + + +1 +W +watt + + + + +0 120 +1 +s +seconds + + + +Raw Voltage +Sag Compensated Voltage + + + +0.1 +V +volt + + +50 +mAh +milliampere hour + + +0.1 +V +volt + + +50 +mAh +milliampere hour + + + +None +Land +RTL +SmartRTL or RTL +SmartRTL or Land +Terminate + + + + +None +Land +RTL +SmartRTL or RTL +SmartRTL or Land +Terminate + + + +0.1 +V +volt + + +50 +mAh +milliampere hour + + + + + +Disabled +Analog Voltage Only +Analog Voltage and Current +Solo +Bebop +SMBus-Maxell +UAVCAN-BatteryInfo +BLHeli ESC +SumOfFollowing +FuelFlow + +True + + + +Disabled +Pixhawk/Pixracer/Navio2/Pixhawk2_PM1 +Pixhawk2_PM2 +PX4-v1 + +True + + + +Disabled +Pixhawk/Pixracer/Navio2/Pixhawk2_PM1 +Pixhawk2_PM2 +PX4-v1 + +True + + + + +A/V +ampere per volt + + +V +volt + + +50 +mAh +milliampere hour + + +1 +W +watt + + + + +0 120 +1 +s +seconds + + + +Raw Voltage +Sag Compensated Voltage + + + +0.1 +V +volt + + +50 +mAh +milliampere hour + + +0.1 +V +volt + + +50 +mAh +milliampere hour + + + +None +Land +RTL +SmartRTL or RTL +SmartRTL or Land +Terminate + + + + +None +Land +RTL +SmartRTL or RTL +SmartRTL or Land +Terminate + + + +0.1 +V +volt + + +50 +mAh +milliampere hour + + + + + +Disabled +Analog Voltage Only +Analog Voltage and Current +Solo +Bebop +SMBus-Maxell +UAVCAN-BatteryInfo +BLHeli ESC +SumOfFollowing +FuelFlow + +True + + + +Disabled +Pixhawk/Pixracer/Navio2/Pixhawk2_PM1 +Pixhawk2_PM2 +PX4-v1 + +True + + + +Disabled +Pixhawk/Pixracer/Navio2/Pixhawk2_PM1 +Pixhawk2_PM2 +PX4-v1 + +True + + + + +A/V +ampere per volt + + +V +volt + + +50 +mAh +milliampere hour + + +1 +W +watt + + + + +0 120 +1 +s +seconds + + + +Raw Voltage +Sag Compensated Voltage + + + +0.1 +V +volt + + +50 +mAh +milliampere hour + + +0.1 +V +volt + + +50 +mAh +milliampere hour + + + +None +Land +RTL +SmartRTL or RTL +SmartRTL or Land +Terminate + + + + +None +Land +RTL +SmartRTL or RTL +SmartRTL or Land +Terminate + + + +0.1 +V +volt + + +50 +mAh +milliampere hour + + + + + +Disabled +Analog Voltage Only +Analog Voltage and Current +Solo +Bebop +SMBus-Maxell +UAVCAN-BatteryInfo +BLHeli ESC +SumOfFollowing +FuelFlow + +True + + + +Disabled +Pixhawk/Pixracer/Navio2/Pixhawk2_PM1 +Pixhawk2_PM2 +PX4-v1 + +True + + + +Disabled +Pixhawk/Pixracer/Navio2/Pixhawk2_PM1 +Pixhawk2_PM2 +PX4-v1 + +True + + + + +A/V +ampere per volt + + +V +volt + + +50 +mAh +milliampere hour + + +1 +W +watt + + + + +0 120 +1 +s +seconds + + + +Raw Voltage +Sag Compensated Voltage + + + +0.1 +V +volt + + +50 +mAh +milliampere hour + + +0.1 +V +volt + + +50 +mAh +milliampere hour + + + +None +Land +RTL +SmartRTL or RTL +SmartRTL or Land +Terminate + + + + +None +Land +RTL +SmartRTL or RTL +SmartRTL or Land +Terminate + + + +0.1 +V +volt + + +50 +mAh +milliampere hour + + + + + +Disabled +Analog Voltage Only +Analog Voltage and Current +Solo +Bebop +SMBus-Maxell +UAVCAN-BatteryInfo +BLHeli ESC +SumOfFollowing +FuelFlow + +True + + + +Disabled +Pixhawk/Pixracer/Navio2/Pixhawk2_PM1 +Pixhawk2_PM2 +PX4-v1 + +True + + + +Disabled +Pixhawk/Pixracer/Navio2/Pixhawk2_PM1 +Pixhawk2_PM2 +PX4-v1 + +True + + + + +A/V +ampere per volt + + +V +volt + + +50 +mAh +milliampere hour + + +1 +W +watt + + + + +0 120 +1 +s +seconds + + + +Raw Voltage +Sag Compensated Voltage + + + +0.1 +V +volt + + +50 +mAh +milliampere hour + + +0.1 +V +volt + + +50 +mAh +milliampere hour + + + +None +Land +RTL +SmartRTL or RTL +SmartRTL or Land +Terminate + + + + +None +Land +RTL +SmartRTL or RTL +SmartRTL or Land +Terminate + + + +0.1 +V +volt + + +50 +mAh +milliampere hour + + + + + +Disabled +Analog Voltage Only +Analog Voltage and Current +Solo +Bebop +SMBus-Maxell +UAVCAN-BatteryInfo +BLHeli ESC +SumOfFollowing +FuelFlow + +True + + + +Disabled +Pixhawk/Pixracer/Navio2/Pixhawk2_PM1 +Pixhawk2_PM2 +PX4-v1 + +True + + + +Disabled +Pixhawk/Pixracer/Navio2/Pixhawk2_PM1 +Pixhawk2_PM2 +PX4-v1 + +True + + + + +A/V +ampere per volt + + +V +volt + + +50 +mAh +milliampere hour + + +1 +W +watt + + + + +0 120 +1 +s +seconds + + + +Raw Voltage +Sag Compensated Voltage + + + +0.1 +V +volt + + +50 +mAh +milliampere hour + + +0.1 +V +volt + + +50 +mAh +milliampere hour + + + +None +Land +RTL +SmartRTL or RTL +SmartRTL or Land +Terminate + + + + +None +Land +RTL +SmartRTL or RTL +SmartRTL or Land +Terminate + + + +0.1 +V +volt + + +50 +mAh +milliampere hour + + + + + +None +Pozyx +Marvelmind + + + +-90 90 +0.000001 +deg +degrees + + +-180 180 +0.000001 +deg +degrees + + +0 10000 +1 +m +meters + + +-180 +180 +1 +deg +degrees + + + + + +No PWMs +One PWMs +Two PWMs +Three PWMs +Four PWMs +Five PWMs +Six PWMs +Seven PWMs +Eight PWMs + +True + + + +Disabled +Enabled +Auto + +True + + + +Disabled +Enabled +Auto + +True + + + +Disabled +Enabled + +True + + + +Disabled +50Hz +75Hz +100Hz +150Hz +200Hz +250Hz +300Hz + +True + + +-32768 32767 + + +0:Ch1,1:Ch2,2:Ch3,3:Ch4,4:Ch5,5:Ch6,6:Ch7,7:Ch8,8:Ch9,9:Ch10,10:Ch11,11:Ch12,12:Ch13,13:Ch14 + +Disabled +Enabled + +True + + +-1 80 +degC +degrees Celsius + + + +AUTO +PX4V1 +Pixhawk +Cube/Pixhawk2 +Pixracer +PixhawkMini +Pixhawk2Slim +VRBrain 5.1 +VRBrain 5.2 +VR Micro Brain 5.1 +VR Micro Brain 5.2 +VRBrain Core 1.0 +VRBrain 5.4 +Intel Aero FC +AUAV2.1 + +True + + + +Disabled +Enabled + +True + + +0:ActiveForSafetyEnable,1:ActiveForSafetyDisable,2:ActiveWhenArmed,3:Force safety on when the aircraft disarms + + +4.0 5.5 +0.1 +V +volt + + +3.3 12.0 +0.1 +V +volt + + +0 32 +1 + + + + + +None +CYRF6936 + + + + +Auto +DSM2 +DSMX + + + +0 4 + + + +NotDisabled +Disabled + + + +0 16 + + +0 16 + + + +Disabled +Enabled + + + +1 8 + + + +Disabled +MinChannel +MidChannel +MaxChannel +MinChannelCW +MidChannelCW +MaxChannelCW + + + + +Mode1 +Mode2 + + + + +Disabled +TestChan1 +TestChan2 +TestChan3 +TestChan4 +TestChan5 +TestChan6 +TestChan7 +TestChan8 + + + +0 16 + + +0 16 + + +1 8 + + +0 40 + + +0 120 + + +0 31 + + + + +0:GPS,1:MAVLINK_SYSTEM_TIME,2:HW + + + + + +Disabled +Enabled + + + + +Disabled +AUXOUT1 +AUXOUT2 +AUXOUT3 +AUXOUT4 +AUXOUT5 +AUXOUT6 + + + + +Disabled +AUXOUT1 +AUXOUT2 +AUXOUT3 +AUXOUT4 +AUXOUT5 +AUXOUT6 + + + + +Disabled +AUXOUT1 +AUXOUT2 +AUXOUT3 +AUXOUT4 +AUXOUT5 +AUXOUT6 + + + + +Disabled +AUXOUT1 +AUXOUT2 +AUXOUT3 +AUXOUT4 +AUXOUT5 +AUXOUT6 + + + +0 3600 + + + + + +Servo +Relay + + + +0 50 +ds +deciseconds + + +1000 2000 +PWM +PWM in microseconds + + +1000 2000 +PWM +PWM in microseconds + + +0 1000 +m +meters + + + +Low +High + + + +0 10000 +ms +milliseconds + + +0 180 +deg +degrees + + + +Disabled +AUX1 +AUX2 +AUX3 +AUX4 +AUX5 +AUX6 + +True + + + +TriggerLow +TriggerHigh + + + + +Always +Only when in AUTO + + + + +Default +BMMCC + + + + + + +Disabled +UAVCAN +KDECAN +ToshibaCAN + +True + + + + + + + + +1 250 + + +0: Servo 1, 1: Servo 2, 2: Servo 3, 3: Servo 4, 4: Servo 5, 5: Servo 6, 6: Servo 7, 7: Servo 8, 8: Servo 9, 9: Servo 10, 10: Servo 11, 11: Servo 12, 12: Servo 13, 13: Servo 14, 14: Servo 15 + + +0: ESC 1, 1: ESC 2, 2: ESC 3, 3: ESC 4, 4: ESC 5, 5: ESC 6, 6: ESC 7, 7: ESC 8, 8: ESC 9, 9: ESC 10, 10: ESC 11, 11: ESC 12, 12: ESC 13, 13: ESC 14, 14: ESC 15, 15: ESC 16 + + +1 200 +Hz +hertz + + + + + +Disabled +UAVCAN +KDECAN +ToshibaCAN + +True + + + + + + + + +1 250 + + +0: Servo 1, 1: Servo 2, 2: Servo 3, 3: Servo 4, 4: Servo 5, 5: Servo 6, 6: Servo 7, 7: Servo 8, 8: Servo 9, 9: Servo 10, 10: Servo 11, 11: Servo 12, 12: Servo 13, 13: Servo 14, 14: Servo 15 + + +0: ESC 1, 1: ESC 2, 2: ESC 3, 3: ESC 4, 4: ESC 5, 5: ESC 6, 6: ESC 7, 7: ESC 8, 8: ESC 9, 9: ESC 10, 10: ESC 11, 11: ESC 12, 12: ESC 13, 13: ESC 14, 14: ESC 15, 15: ESC 16 + + +1 200 +Hz +hertz + + + + + +Disabled +UAVCAN +KDECAN +ToshibaCAN + +True + + + + + + + + +1 250 + + +0: Servo 1, 1: Servo 2, 2: Servo 3, 3: Servo 4, 4: Servo 5, 5: Servo 6, 6: Servo 7, 7: Servo 8, 8: Servo 9, 9: Servo 10, 10: Servo 11, 11: Servo 12, 12: Servo 13, 13: Servo 14, 14: Servo 15 + + +0: ESC 1, 1: ESC 2, 2: ESC 3, 3: ESC 4, 4: ESC 5, 5: ESC 6, 6: ESC 7, 7: ESC 8, 8: ESC 9, 9: ESC 10, 10: ESC 11, 11: ESC 12, 12: ESC 13, 13: ESC 14, 14: ESC 15, 15: ESC 16 + + +1 200 +Hz +hertz + + + + + +Disabled +First driver +Second driver + +True + + +10000 1000000 + + + +Disabled +Major messages +All messages + + + + + + +Disabled +First driver +Second driver + +True + + +10000 1000000 + + + +Disabled +Major messages +All messages + + + + + + +Disabled +First driver +Second driver + +True + + +10000 1000000 + + + +Disabled +Major messages +All messages + + + + + + +Disabled +First driver +Second driver + +True + + + +Disabled +Serial0 +Serial1 +Serial2 +Serial3 +Serial4 +Serial5 +Serial6 + + + +0 32767 + + + + + +Disabled +Enabled + + + + +First Relay +Second Relay +Third Relay +Fourth Relay +Servo + + + +1000 2000 +1 +PWM +PWM in microseconds + + +1000 2000 +1 +PWM +PWM in microseconds + + +0 32000 +1 +m +meters + + +0 5000 +1 +ms +milliseconds + + + + +0 10000 +100 +cm +centimeters + + +-90 90 +1 +deg/s +degrees per second + + + + +-400 400 +1 +mGauss +milligauss + + +-400 400 +1 +mGauss +milligauss + + +-400 400 +1 +mGauss +milligauss + + +-3.142 3.142 +0.01 +rad +radians + + + +Disabled +Internal-Learning +EKF-Learning +InFlight-Learning + + + + +Disabled +Enabled + + + + +Disabled +Enabled + + + + +Disabled +Use Throttle +Use Current + + + +-1000 1000 +1 +mGauss/A +milligauss per ampere + + +-1000 1000 +1 +mGauss/A +milligauss per ampere + + +-1000 1000 +1 +mGauss/A +milligauss per ampere + + + +None +Yaw45 +Yaw90 +Yaw135 +Yaw180 +Yaw225 +Yaw270 +Yaw315 +Roll180 +Roll180Yaw45 +Roll180Yaw90 +Roll180Yaw135 +Pitch180 +Roll180Yaw225 +Roll180Yaw270 +Roll180Yaw315 +Roll90 +Roll90Yaw45 +Roll90Yaw90 +Roll90Yaw135 +Roll270 +Roll270Yaw45 +Roll270Yaw90 +Roll270Yaw135 +Pitch90 +Pitch270 +Pitch180Yaw90 +Pitch180Yaw270 +Roll90Pitch90 +Roll180Pitch90 +Roll270Pitch90 +Roll90Pitch180 +Roll270Pitch180 +Roll90Pitch270 +Roll180Pitch270 +Roll270Pitch270 +Roll90Pitch180Yaw90 +Roll90Yaw270 +Yaw293Pitch68Roll180 +Pitch315 +Roll90Pitch315 + + + + +Internal +External +ForcedExternal + + + +-400 400 +1 +mGauss +milligauss + + +-400 400 +1 +mGauss +milligauss + + +-400 400 +1 +mGauss +milligauss + + +-1000 1000 +1 +mGauss/A +milligauss per ampere + + +-1000 1000 +1 +mGauss/A +milligauss per ampere + + +-1000 1000 +1 +mGauss/A +milligauss per ampere + + + +FirstCompass +SecondCompass +ThirdCompass + + + +-400 400 +1 +mGauss +milligauss + + +-400 400 +1 +mGauss +milligauss + + +-400 400 +1 +mGauss +milligauss + + +-1000 1000 +1 +mGauss/A +milligauss per ampere + + +-1000 1000 +1 +mGauss/A +milligauss per ampere + + +-1000 1000 +1 +mGauss/A +milligauss per ampere + + +True + + +True + + +True + + + +Disabled +Enabled + + + + +None +Yaw45 +Yaw90 +Yaw135 +Yaw180 +Yaw225 +Yaw270 +Yaw315 +Roll180 +Roll180Yaw45 +Roll180Yaw90 +Roll180Yaw135 +Pitch180 +Roll180Yaw225 +Roll180Yaw270 +Roll180Yaw315 +Roll90 +Roll90Yaw45 +Roll90Yaw90 +Roll90Yaw135 +Roll270 +Roll270Yaw45 +Roll270Yaw90 +Roll270Yaw135 +Pitch90 +Pitch270 +Pitch180Yaw90 +Pitch180Yaw270 +Roll90Pitch90 +Roll180Pitch90 +Roll270Pitch90 +Roll90Pitch180 +Roll270Pitch180 +Roll90Pitch270 +Roll180Pitch270 +Roll270Pitch270 +Roll90Pitch180Yaw90 +Roll90Yaw270 +Yaw293Pitch68Roll180 +Pitch315 +Roll90Pitch315 + + + + +Internal +External +ForcedExternal + + + + +Disabled +Enabled + + + + +None +Yaw45 +Yaw90 +Yaw135 +Yaw180 +Yaw225 +Yaw270 +Yaw315 +Roll180 +Roll180Yaw45 +Roll180Yaw90 +Roll180Yaw135 +Pitch180 +Roll180Yaw225 +Roll180Yaw270 +Roll180Yaw315 +Roll90 +Roll90Yaw45 +Roll90Yaw90 +Roll90Yaw135 +Roll270 +Roll270Yaw45 +Roll270Yaw90 +Roll270Yaw135 +Pitch90 +Pitch270 +Pitch180Yaw90 +Pitch180Yaw270 +Roll90Pitch90 +Roll180Pitch90 +Roll270Pitch90 +Roll90Pitch180 +Roll270Pitch180 +Roll90Pitch270 +Roll180Pitch270 +Roll270Pitch270 +Roll90Pitch180Yaw90 +Roll90Yaw270 +Yaw293Pitch68Roll180 +Pitch315 +Roll90Pitch315 + + + + +Internal +External +ForcedExternal + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +4 32 + +Very Strict +Strict +Default +Relaxed + +0.1 + + +500 3000 +1 + + +0:HMC5883,1:LSM303D,2:AK8963,3:BMM150,4:LSM9DS1,5:LIS3MDL,6:AK09916,7:IST8310,8:ICM20948,9:MMC3416,11:UAVCAN,12:QMC5883,14:MAG3110,15:IST8308 + + +0 100 +1 +% +percent + + + +Disabled +CheckOnly +CheckAndFix + + + + + + + + + + + + +Disabled +Enabled + + + +0 2 +0.01 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Disabled +Enabled + +True + + + +GPS 3D Vel and 2D Pos +GPS 2D vel and 2D pos +GPS 2D pos +No GPS + + + +0.05 5.0 +0.05 +m/s +meters per second + + +0.05 5.0 +0.05 +m/s +meters per second + + +100 1000 +25 + + +0.1 10.0 +0.1 +m +meters + + +100 1000 +25 + + +10 100 +5 +m +meters + + + +Use Baro +Use Range Finder +Use GPS +Use Range Beacon + +True + + +0.1 10.0 +0.1 +m +meters + + +100 1000 +25 + + +0 250 +10 +ms +milliseconds +True + + +0.01 0.5 +0.01 +Gauss +gauss + + + +When flying +When manoeuvring +Never +After first climb yaw reset +Always + + + +100 1000 +25 + + +0.5 5.0 +0.1 +m/s +meters per second + + +100 1000 +25 + + +0.1 10.0 +0.1 +m +meters + + +100 1000 +25 + + +1.0 4.0 +0.1 +rad/s +radians per second + + +0.05 1.0 +0.05 +rad/s +radians per second + + +100 1000 +25 + + +0 127 +10 +ms +milliseconds +True + + +0.0001 0.1 +0.0001 +rad/s +radians per second + + +0.01 1.0 +0.01 +m/s/s +meters per square second + + +0.00001 0.001 +rad/s/s +radians per square second + + +0.000001 0.001 +Hz +hertz + + +0.00001 0.005 +m/s/s/s +meters per cubic second + + +0.01 1.0 +0.1 +m/s/s +meters per square second + + +0.0 1.0 +0.1 + + +0:NSats,1:HDoP,2:speed error,3:position error,4:yaw error,5:pos drift,6:vert speed,7:horiz speed + + +0:FirstIMU,1:SecondIMU,2:ThirdIMU,3:FourthIMU,4:FifthIMU,5:SixthIMU +True + + +50 200 +% +percent + + +0.5 50.0 +m +meters + + +0:FirstIMU,1:SecondIMU,2:ThirdIMU,3:FourthIMU,4:FifthIMU,5:SixthIMU +True + + +0.05 1.0 +0.05 +rad +radians + + +100 1000 +25 + + +10 50 +5 +cs +centiseconds + + +0.00001 0.01 +Gauss/s +gauss per second + + +0.00001 0.01 +Gauss/s +gauss per second + + +-1 70 +1 +% +percent + + +0 0.2 +0.01 + + +0.1 10.0 +0.1 +m +meters + + +100 1000 +25 + + +0 127 +10 +ms +milliseconds +True + + +2.0 6.0 +0.5 +m/s +meters per second + + +0:FirstEKF,1:SecondEKF,2:ThirdEKF,3:FourthEKF,4:FifthEKF,5:SixthEKF +True + + +0:Correct when using Baro height,1:Correct when using range finder height,2:Apply corrections to local position +True + + +0 127 +1 +ms +milliseconds +True + + + + + +Disabled +Enabled + +True + + + +GPS 3D Vel and 2D Pos +GPS 2D vel and 2D pos +GPS 2D pos +No GPS + + + +0.05 5.0 +0.05 +m/s +meters per second + + +0.05 5.0 +0.05 +m/s +meters per second + + +100 1000 +25 + + +0.1 10.0 +0.1 +m +meters + + +100 1000 +25 + + +10 100 +5 +m +meters + + + +Use Baro +Use Range Finder +Use GPS +Use Range Beacon + +True + + +0.1 10.0 +0.1 +m +meters + + +100 1000 +25 + + +0 250 +10 +ms +milliseconds +True + + +0.01 0.5 +0.01 +Gauss +gauss + + + +When flying +When manoeuvring +Never +After first climb yaw reset +Always + +True + + +100 1000 +25 + + +0.5 5.0 +0.1 +m/s +meters per second + + +100 1000 +25 + + +0.1 10.0 +0.1 +m +meters + + +100 1000 +25 + + +1.0 4.0 +0.1 +rad/s +radians per second + + +0.05 1.0 +0.05 +rad/s +radians per second + + +100 1000 +25 + + +0 250 +10 +ms +milliseconds +True + + +0.0001 0.1 +0.0001 +rad/s +radians per second + + +0.01 1.0 +0.01 +m/s/s +meters per square second + + +0.00001 0.001 +rad/s/s +radians per square second + + +0.00001 0.005 +m/s/s/s +meters per cubic second + + +0.01 1.0 +0.1 +m/s/s +meters per square second + + +0.0 1.0 +0.1 + + +0:NSats,1:HDoP,2:speed error,3:position error,4:yaw error,5:pos drift,6:vert speed,7:horiz speed + + +0:FirstIMU,1:SecondIMU,2:ThirdIMU,3:FourthIMU,4:FifthIMU,5:SixthIMU +True + + +50 200 +% +percent + + +0.5 50.0 +m +meters + + +0:FirstIMU,1:SecondIMU,2:ThirdIMU,3:FourthIMU,4:FifthIMU,5:SixthIMU +True + + +0.05 1.0 +0.05 +rad +radians + + +100 1000 +25 + + +10 50 +5 +cs +centiseconds + + +0.00001 0.01 +Gauss/s +gauss per second + + +0.00001 0.01 +Gauss/s +gauss per second + + +-1 70 +1 +% +percent + + +0 0.2 +0.01 + + +0.1 10.0 +0.1 +m +meters + + +100 1000 +25 + + +0 250 +10 +ms +milliseconds +True + + +2.0 6.0 +0.5 +m/s +meters per second + + +0.5 2.5 +0.1 +m/s/s +meters per square second + + +0:FirstEKF,1:SecondEKF,2:ThirdEKF,3:FourthEKF,4:FifthEKF,5:SixthEKF +True + + +0:Correct when using Baro height,1:Correct when using range finder height,2:Apply corrections to local position +True + + +0.05 0.5 +0.05 +m/s +meters per second + + +0.5 5.0 +0.1 +m/s +meters per second + + +0.01 1.0 +0.1 +m/s +meters per second + + + + + +Disabled +Enabled + + + +0:Altitude,1:Circle,2:Polygon + +None +Altitude +Circle +Altitude and Circle +Polygon +Altitude and Polygon +Circle and Polygon +All + + + + +Report Only +RTL or Land +Always Land +SmartRTL or RTL or Land +Brake or Land + + + +10 1000 +1 +m +meters + + +30 10000 +m +meters + + +1 10 +m +meters + + +1 20 + + +-100 100 +1 +m +meters + + + + +0.1 6.0 +0.1 + + +0.02 1.00 +0.01 + + +0 4500 +10 +cdeg +centidegrees + + +0 100 +Hz +hertz + + +0.1 2.5 + + +1 100 +Hz +hertz + + +0 255 + + +1 30 +deg/s +degrees per second + + + + + +Disabled +Enabled + + + +-200 +200 +1 + + +-200 +200 +1 + + +-18000 +18000 +1 + + +-10 10 +m +meters + + +-10 10 +m +meters + + +-10 10 +m +meters + + +0 127 + + + + + +Disabled +Enabled + + + +0 255 + + +1 1000 +m +meters + + + +North-East-Down +Relative to lead vehicle heading + + + +-100 100 +1 +m +meters + + +-100 100 +1 +m +meters + + +-100 100 +1 +m +meters + + + +None +Face Lead Vehicle +Same as Lead vehicle +Direction of Flight + + + +0.01 1.00 +0.01 + + + +absolute + relative + + + + + +True +True +1 +Pa +pascal + + +True +1 +degC +degrees Celsius + + +0.1 +m +meters + + + +FirstBaro +2ndBaro +3rdBaro + + + + +Disabled +Bus0 +Bus1 + + + +1.0:Freshwater,1.024:Saltwater + + +True +True +1 +Pa +pascal + + +True +True +1 +Pa +pascal + + +0 100 +1 +% +percent + + +0:BMP085,1:BMP280,2:MS5611,3:MS5607,4:MS5637,5:FBM320,6:DPS280,7:LPS25H,8:Keller + +BMP085 +BMP280 +MS5611 +MS5607 +MS5637 +FBM320 +DPS280 +LPS25H +Keller + + + + + + +None +AUTO +uBlox +MTK +MTK19 +NMEA +SiRF +HIL +SwiftNav +UAVCAN +SBF +GSOF +ERB +MAV +NOVA + +True + + + +None +AUTO +uBlox +MTK +MTK19 +NMEA +SiRF +HIL +SwiftNav +UAVCAN +SBF +GSOF +ERB +MAV +NOVA + +True + + + +Portable +Stationary +Pedestrian +Automotive +Sea +Airborne1G +Airborne2G +Airborne4G + + + + +Disabled +UseBest +Blend +UseSecond + + + + +Any +FloatRTK +IntegerRTK + +True + + + +Disabled +Enabled +NoChange + + + +-100 90 +deg +degrees + + + +send to first GPS +send to 2nd GPS +send to all + + + + +None (0x0000) +All (0xFFFF) +External only (0xFF00) + + + + +Ignore +Always log +Stop logging when disarmed (SBF only) +Only log every five samples (uBlox only) + +True + + +0:GPS,1:SBAS,2:Galileo,3:Beidou,4:IMES,5:QZSS,6:GLOSNASS + +Leave as currently configured +GPS-NoSBAS +GPS+SBAS +Galileo-NoSBAS +Galileo+SBAS +Beidou +GPS+IMES+QZSS+SBAS (Japan Only) +GLONASS +GLONASS+SBAS +GPS+GLONASS+SBAS + + + + +Do not save config +Save config +Save only when needed + + + +0:GPS,1:SBAS,2:Galileo,3:Beidou,4:IMES,5:QZSS,6:GLOSNASS + +Leave as currently configured +GPS-NoSBAS +GPS+SBAS +Galileo-NoSBAS +Galileo+SBAS +Beidou +GPS+IMES+QZSS+SBAS (Japan Only) +GLONASS +GLONASS+SBAS +GPS+GLONASS+SBAS + + + + +Disables automatic configuration +Enable automatic configuration + + + +50 200 + +10Hz +8Hz +5Hz + +ms +milliseconds + + +50 200 + +10Hz +8Hz +5Hz + +ms +milliseconds + + +-10 10 +m +meters + + +-10 10 +m +meters + + +-10 10 +m +meters + + +-10 10 +m +meters + + +-10 10 +m +meters + + +-10 10 +m +meters + + +0 250 +ms +milliseconds +True + + +0 250 +ms +milliseconds +True + + +0:Horiz Pos,1:Vert Pos,2:Speed + + +5.0 30.0 +s +seconds + + + + + +Disabled +Enabled + + + + +None +Servo +EPM + + + +1000 2000 +PWM +PWM in microseconds + + +1000 2000 +PWM +PWM in microseconds + + +1000 2000 +PWM +PWM in microseconds + + +0 255 +s +seconds + + +0 255 + + + + + +Servo only +Servo with ExtGyro +DirectDrive VarPitch +DirectDrive FixedPitch + + + +0 1000 +1 +PWM +PWM in microseconds + + +-10 10 +0.1 + + + +NoFlybar +Flybar + + + +0 1000 +1 +PWM +PWM in microseconds + + +0 1000 +1 +PWM +PWM in microseconds + + + +Longitudinal +Transverse + + + +0 1 + + +-10 10 +0.1 + + +-10 10 +0.1 + + +1000 2000 +1 +PWM +PWM in microseconds + + +1000 2000 +1 +PWM +PWM in microseconds + + +1000 2000 +1 +PWM +PWM in microseconds + + +1000 2000 +1 +PWM +PWM in microseconds + + +1000 2000 +1 +PWM +PWM in microseconds + + +1000 2000 +1 +PWM +PWM in microseconds + + + +Disabled +Passthrough +Max collective +Mid collective +Min collective + + + +0 1000 +10 +PWM +PWM in microseconds + + + +Ch8 Input +SetPoint +Throttle Curve + + + +0 500 +1 +PWM +PWM in microseconds + + +0 60 +s +seconds + + +0 60 +s +seconds + + +0 1000 +10 + + +0 500 +10 + + +0 18000 +100 +cdeg +centidegrees + + +0 10 +1 + + +0 500 +10 + + +0 1000 +10 + + +0 1000 +10 + + +0 1000 +10 + + +0 1000 +10 + + +0 1000 +10 + + + + + +H3 Generic +H1 non-CPPM +H3_140 +H3_120 +H4_90 +H4_45 + + + + +Normal +Reversed + + + + +Disabled +Enabled + + + + +Disabled +Enabled + + + +-180 180 +deg +degrees + + +-180 180 +deg +degrees + + +-180 180 +deg +degrees + + +-30 30 +1 +deg +degrees + + + + + +H3 Generic +H1 non-CPPM +H3_140 +H3_120 +H4_90 +H4_45 + + + + +Normal +Reversed + + + + +Disabled +Enabled + + + + +Disabled +Enabled + + + +-180 180 +deg +degrees + + +-180 180 +deg +degrees + + +-180 180 +deg +degrees + + +-30 30 +1 +deg +degrees + + + + + +H3 Generic +H1 non-CPPM +H3_140 +H3_120 +H4_90 +H4_45 + + + + +Normal +Reversed + + + + +Disabled +Enabled + + + + +Disabled +Enabled + + + +-180 180 +deg +degrees + + +-180 180 +deg +degrees + + +-180 180 +deg +degrees + + +-30 30 +1 +deg +degrees + + + + +0 500 +1 +d% +decipercent + + +0 500 +1 +d% +decipercent + + +500 1000 +1 +d% +decipercent + + +500 1000 +1 +d% +decipercent + + + +Disabled +Very Low +Low +Medium +High +Very High + + + + + +rad/s +radians per second + + +rad/s +radians per second + + +rad/s +radians per second + + +rad/s +radians per second + + +rad/s +radians per second + + +rad/s +radians per second + + +rad/s +radians per second + + +rad/s +radians per second + + +rad/s +radians per second + + +0.8 1.2 + + +0.8 1.2 + + +0.8 1.2 + + +-3.5 3.5 +m/s/s +meters per square second + + +-3.5 3.5 +m/s/s +meters per square second + + +-3.5 3.5 +m/s/s +meters per square second + + +0.8 1.2 + + +0.8 1.2 + + +0.8 1.2 + + +-3.5 3.5 +m/s/s +meters per square second + + +-3.5 3.5 +m/s/s +meters per square second + + +-3.5 3.5 +m/s/s +meters per square second + + +0.8 1.2 + + +0.8 1.2 + + +0.8 1.2 + + +-3.5 3.5 +m/s/s +meters per square second + + +-3.5 3.5 +m/s/s +meters per square second + + +-3.5 3.5 +m/s/s +meters per square second + + +0 127 +Hz +hertz + + +0 127 +Hz +hertz + + + +Disabled +Enabled + + + + +Disabled +Enabled + + + + +Disabled +Enabled + + + +0.05 50 + + + +Never +Start-up only + + + + +Don't adjust the trims +Assume first orientation was level +Assume ACC_BODYFIX is perfectly aligned to the vehicle + + + + +IMU 1 +IMU 2 +IMU 3 + + + +-10 10 +m +meters + + +-10 10 +m +meters + + +-10 10 +m +meters + + +-10 10 +m +meters + + +-10 10 +m +meters + + +-10 10 +m +meters + + +-10 10 +m +meters + + +-10 10 +m +meters + + +-10 10 +m +meters + + +True + + +True + + +True + + +True + + +True + + +True + + +0:FirstIMU,1:SecondIMU,2:ThirdIMU + +FirstIMUOnly +FirstAndSecondIMU + + + +0:FirstIMU,1:SecondIMU,2:ThirdIMU + +FirstIMUOnly +FirstAndSecondIMU +FirstSecondAndThirdIMU +AllIMUs + + + + + +32 + + +0:IMU1,1:IMU2,2:IMU3 + +None +First IMU +All + + + +0:Sensor-Rate Logging (sample at full sensor rate seen by AP) + + +10 +ms +milliseconds + + +1 + + + + + +Disabled +Enabled + + + +10 200 +Hz +hertz + + +5 50 +Hz +hertz + + +5 30 +dB +decibel + + + + + +WaitForPilotInput +Retract +Deploy + + + + +Disabled +AUX1 +AUX2 +AUX3 +AUX4 +AUX5 +AUX6 + +True + + + +Low +High + + + + +Disabled +AUX1 +AUX2 +AUX3 +AUX4 +AUX5 +AUX6 + +True + + + +Low +High + + + +0 1000 +1 +m +meters + + +0 1000 +1 +m +meters + + + + +0:File,1:MAVLink,2:Block + +None +File +MAVLink +File and MAVLink +Block +Block and MAVLink + + + + + + +Disabled +Enabled + + + + +Disabled +Enabled + + + + +Disabled +Enabled + + + +kB +kilobytes + + + + +0 45 +1 +deg +degrees + + +20 2000 +50 +cm/s +centimeters per second + + +100 981 +1 +cm/s/s +centimeters per square second + + +25 250 +1 +cm/s/s +centimeters per square second + + +500 5000 +1 +cm/s/s/s +centimeters per cubic second + + +0 2 +0.1 +s +seconds + + + + +0 32766 +1 + + + +Resume Mission +Restart Mission + + + +0:Clear Mission on reboot + + + + + +Retracted +Neutral +MavLink Targeting +RC Targeting +GPS Point + + + +-180.00 179.99 +1 +deg +degrees + + +-180.00 179.99 +1 +deg +degrees + + +-180.00 179.99 +1 +deg +degrees + + +-180.00 179.99 +1 +deg +degrees + + +-180.00 179.99 +1 +deg +degrees + + +-180.00 179.99 +1 +deg +degrees + + + +Disabled +Enabled + + + + +Disabled +Enabled + + + + +Disabled +Enabled + + + + +Disabled +RC5 +RC6 +RC7 +RC8 +RC9 +RC10 +RC11 +RC12 + + + +-18000 17999 +1 +cdeg +centidegrees + + +-18000 17999 +1 +cdeg +centidegrees + + + +Disabled +RC5 +RC6 +RC7 +RC8 +RC9 +RC10 +RC11 +RC12 + + + +-18000 17999 +1 +cdeg +centidegrees + + +-18000 17999 +1 +cdeg +centidegrees + + + +Disabled +RC5 +RC6 +RC7 +RC8 +RC9 +RC10 +RC11 +RC12 + + + +-18000 17999 +1 +cdeg +centidegrees + + +-18000 17999 +1 +cdeg +centidegrees + + +0 100 +1 + + +0.0 0.2 +.005 +s +seconds + + +0.0 0.2 +.005 +s +seconds + + + +None +Servo +3DR Solo +Alexmos Serial +SToRM32 MAVLink +SToRM32 Serial + +True + + + +Retracted +Neutral +MavLink Targeting +RC Targeting +GPS Point + + + +-180.00 179.99 +1 +deg +degrees + + +-180.00 179.99 +1 +deg +degrees + + +-180.00 179.99 +1 +deg +degrees + + +-180.00 179.99 +1 +deg +degrees + + +-180.00 179.99 +1 +deg +degrees + + +-180.00 179.99 +1 +deg +degrees + + + +Disabled +Enabled + + + + +Disabled +Enabled + + + + +Disabled +Enabled + + + + +Disabled +RC5 +RC6 +RC7 +RC8 +RC9 +RC10 +RC11 +RC12 + + + +-18000 17999 +1 +cdeg +centidegrees + + +-18000 17999 +1 +cdeg +centidegrees + + + +Disabled +RC5 +RC6 +RC7 +RC8 +RC9 +RC10 +RC11 +RC12 + + + +-18000 17999 +1 +cdeg +centidegrees + + +-18000 17999 +1 +cdeg +centidegrees + + + +Disabled +RC5 +RC6 +RC7 +RC8 +RC9 +RC10 +RC11 +RC12 + + + +-18000 17999 +1 +cdeg +centidegrees + + +-18000 17999 +1 +cdeg +centidegrees + + +0.0 0.2 +.005 +s +seconds + + +0.0 0.2 +.005 +s +seconds + + + +None +Servo +3DR Solo +Alexmos Serial +SToRM32 MAVLink +SToRM32 Serial + + + + + +0 500 +PWM +PWM in microseconds + + +0.25 0.8 + + +0.9:Low, 0.95:Default, 1.0:High + + +6 35 +V +volt + + +6 35 +V +volt + + +0 200 +A +ampere + + + +Normal +OneShot +OneShot125 +Brushed +DShot150 +DShot300 +DShot600 +DShot1200 + +True + + +0 2000 +PWM +PWM in microseconds + + +0 2000 +PWM +PWM in microseconds + + +0.0:Low, 0.15:Default, 0.3:High + + +0.0:Low, 0.1:Default, 0.2:High + + +0 10 +s +seconds + + +0.2 0.8 + + + +Disabled +Learn +LearnAndSave + + + + +PWM enabled while disarmed +PWM disabled while disarmed + + + +5 80 +1 +deg +degrees + + +0 2 +0.1 +s +seconds + + +0 5 +0.1 + + + +First battery +Second battery + + + +0 .5 +0.001 +s +seconds + + +0 .5 +0.001 +s +seconds + + + + + +Off +Low +Medium +High + + + + +Disable +Enable + + + + +Standard +MAVLink +OutbackChallenge + + + + +Disable +ssd1306 +sh1106 + + + + +Disabled +Aircraft +Rover + + + + +Disabled + + + +0:Build in LED, 1:Internal ToshibaLED, 2:External ToshibaLED, 3:External PCA9685, 4:Oreo LED, 5:UAVCAN, 6:NCP5623 External, 7:NCP5623 Internal + + + +LowIsOn +HighIsOn + + + + + + +None +MAX7456 + +True + + + +Disable +Chan5 +Chan6 +Chan7 +Chan8 +Chan9 +Chan10 +Chan11 +Chan12 +Chan13 +Chan14 +Chan15 +Chan16 + + + +0:UseDecimalPack, 1:InvertedWindPointer, 2:InvertedAHRoll + + +True + + +0 31 +True + + +0 63 +True + + +0 99 + + +1 30 + + +0 100 + + + +Metric +Imperial +SI +Aviation + + + +1 20 + + + + + +Disabled +Enabled + + + +900 2100 + + +900 2100 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +900 2100 + + +900 2100 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +900 2100 + + +900 2100 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +900 2100 + + +900 2100 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + + +None +CompanionComputer +IRLock +SITL_Gazebo +SITL + + + +0 360 +1 +cdeg +centidegrees + + +-20 20 +1 +cm +centimeters + + +-20 20 +1 +cm +centimeters + + + +RawSensor +KalmanFilter + + + +0.5 5 + + +m +meters + + +m +meters + + +m +meters + + + +DefaultBus +InternalI2C +ExternalI2C + + + +0.02 0.250 +1 +s +seconds +True + + + + + +None +LightWareSF40C +MAVLink +TeraRangerTower +RangeFinder +RPLidarA2 +TeraRangerTowerEvo +SITL +MorseSITL + +True + + + +Default +Upside Down + + + +-180 180 +deg +degrees + + +0 360 +deg +degrees + + +0 45 +deg +degrees + + +0 360 +deg +degrees + + +0 45 +deg +degrees + + +0 360 +deg +degrees + + +0 45 +deg +degrees + + +0 360 +deg +degrees + + +0 45 +deg +degrees + + +0 360 +deg +degrees + + +0 45 +deg +degrees + + +0 360 +deg +degrees + + +0 45 +deg +degrees + + + +None +LightWareSF40C +MAVLink +TeraRangerTower +RangeFinder +RPLidarA2 +TeraRangerTowerEvo + +True + + + +Default +Upside Down + + + +-180 180 +deg +degrees + + + + +0.5 5 +0.1 +Hz +hertz + + +1.000 3.000 + + +1.000 8.000 + + +0.500 1.500 +0.05 + + +0.000 3.000 + + +0 1000 +d% +decipercent + + +0.000 0.400 + + +1.000 100.000 +Hz +hertz + + +0.500 2.000 + + +0.1 6.0 +0.1 + + +0.02 1.00 +0.01 + + +0.00 1.00 +0.001 + + +0 4500 +10 +cm/s/s +centimeters per square second + + +0 100 +Hz +hertz + + +0 100 +Hz +hertz + + +0 45 +1 +deg +degrees + + + + + + +0.1 +km +kilometers + + + +DoNotIncludeHome +IncludeHome + + + + + +0.0 120.0 +s +seconds + + +0:Ignore RC Receiver, 1:Ignore MAVLink Overrides, 2:Ignore Receiver Failsafe + + + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + + +Normal +Reversed + + + +0 200 +PWM +PWM in microseconds + + + +Do Nothing +Flip +Simple Mode +RTL +Save Trim +Save WP +Camera Trigger +RangeFinder +Fence +Super Simple Mode +Acro Trainer +Sprayer +Auto +AutoTune +Land +Gripper +Parachute Enable +Parachute Release +Parachute 3pos +Auto Mission Reset +AttCon Feed Forward +AttCon Accel Limits +Retract Mount +Relay On/Off +Relay2 On/Off +Relay3 On/Off +Relay4 On/Off +Landing Gear +Lost Copter Sound +Motor Emergency Stop +Motor Interlock +Brake +Throw +ADSB-Avoidance +PrecLoiter +Proximity Avoidance +ArmDisarm +SmartRTL +InvertedFlight +Winch Enable +WinchControl +RC Override Enable +User Function 1 +User Function 2 +User Function 3 +Clear Waypoints +ZigZag +ZigZag SaveWP +Compass Learn +GPS Disable + Relay5 + Relay6 + + + + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + + +Normal +Reversed + + + +0 200 +PWM +PWM in microseconds + + + +Do Nothing +Flip +Simple Mode +RTL +Save Trim +Save WP +Camera Trigger +RangeFinder +Fence +Super Simple Mode +Acro Trainer +Sprayer +Auto +AutoTune +Land +Gripper +Parachute Enable +Parachute Release +Parachute 3pos +Auto Mission Reset +AttCon Feed Forward +AttCon Accel Limits +Retract Mount +Relay On/Off +Relay2 On/Off +Relay3 On/Off +Relay4 On/Off +Landing Gear +Lost Copter Sound +Motor Emergency Stop +Motor Interlock +Brake +Throw +ADSB-Avoidance +PrecLoiter +Proximity Avoidance +ArmDisarm +SmartRTL +InvertedFlight +Winch Enable +WinchControl +RC Override Enable +User Function 1 +User Function 2 +User Function 3 +Clear Waypoints +ZigZag +ZigZag SaveWP +Compass Learn +GPS Disable + Relay5 + Relay6 + + + + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + + +Normal +Reversed + + + +0 200 +PWM +PWM in microseconds + + + +Do Nothing +Flip +Simple Mode +RTL +Save Trim +Save WP +Camera Trigger +RangeFinder +Fence +Super Simple Mode +Acro Trainer +Sprayer +Auto +AutoTune +Land +Gripper +Parachute Enable +Parachute Release +Parachute 3pos +Auto Mission Reset +AttCon Feed Forward +AttCon Accel Limits +Retract Mount +Relay On/Off +Relay2 On/Off +Relay3 On/Off +Relay4 On/Off +Landing Gear +Lost Copter Sound +Motor Emergency Stop +Motor Interlock +Brake +Throw +ADSB-Avoidance +PrecLoiter +Proximity Avoidance +ArmDisarm +SmartRTL +InvertedFlight +Winch Enable +WinchControl +RC Override Enable +User Function 1 +User Function 2 +User Function 3 +Clear Waypoints +ZigZag +ZigZag SaveWP +Compass Learn +GPS Disable + Relay5 + Relay6 + + + + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + + +Normal +Reversed + + + +0 200 +PWM +PWM in microseconds + + + +Do Nothing +Flip +Simple Mode +RTL +Save Trim +Save WP +Camera Trigger +RangeFinder +Fence +Super Simple Mode +Acro Trainer +Sprayer +Auto +AutoTune +Land +Gripper +Parachute Enable +Parachute Release +Parachute 3pos +Auto Mission Reset +AttCon Feed Forward +AttCon Accel Limits +Retract Mount +Relay On/Off +Relay2 On/Off +Relay3 On/Off +Relay4 On/Off +Landing Gear +Lost Copter Sound +Motor Emergency Stop +Motor Interlock +Brake +Throw +ADSB-Avoidance +PrecLoiter +Proximity Avoidance +ArmDisarm +SmartRTL +InvertedFlight +Winch Enable +WinchControl +RC Override Enable +User Function 1 +User Function 2 +User Function 3 +Clear Waypoints +ZigZag +ZigZag SaveWP +Compass Learn +GPS Disable + Relay5 + Relay6 + + + + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + + +Normal +Reversed + + + +0 200 +PWM +PWM in microseconds + + + +Do Nothing +Flip +Simple Mode +RTL +Save Trim +Save WP +Camera Trigger +RangeFinder +Fence +Super Simple Mode +Acro Trainer +Sprayer +Auto +AutoTune +Land +Gripper +Parachute Enable +Parachute Release +Parachute 3pos +Auto Mission Reset +AttCon Feed Forward +AttCon Accel Limits +Retract Mount +Relay On/Off +Relay2 On/Off +Relay3 On/Off +Relay4 On/Off +Landing Gear +Lost Copter Sound +Motor Emergency Stop +Motor Interlock +Brake +Throw +ADSB-Avoidance +PrecLoiter +Proximity Avoidance +ArmDisarm +SmartRTL +InvertedFlight +Winch Enable +WinchControl +RC Override Enable +User Function 1 +User Function 2 +User Function 3 +Clear Waypoints +ZigZag +ZigZag SaveWP +Compass Learn +GPS Disable + Relay5 + Relay6 + + + + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + + +Normal +Reversed + + + +0 200 +PWM +PWM in microseconds + + + +Do Nothing +Flip +Simple Mode +RTL +Save Trim +Save WP +Camera Trigger +RangeFinder +Fence +Super Simple Mode +Acro Trainer +Sprayer +Auto +AutoTune +Land +Gripper +Parachute Enable +Parachute Release +Parachute 3pos +Auto Mission Reset +AttCon Feed Forward +AttCon Accel Limits +Retract Mount +Relay On/Off +Relay2 On/Off +Relay3 On/Off +Relay4 On/Off +Landing Gear +Lost Copter Sound +Motor Emergency Stop +Motor Interlock +Brake +Throw +ADSB-Avoidance +PrecLoiter +Proximity Avoidance +ArmDisarm +SmartRTL +InvertedFlight +Winch Enable +WinchControl +RC Override Enable +User Function 1 +User Function 2 +User Function 3 +Clear Waypoints +ZigZag +ZigZag SaveWP +Compass Learn +GPS Disable + Relay5 + Relay6 + + + + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + + +Normal +Reversed + + + +0 200 +PWM +PWM in microseconds + + + +Do Nothing +Flip +Simple Mode +RTL +Save Trim +Save WP +Camera Trigger +RangeFinder +Fence +Super Simple Mode +Acro Trainer +Sprayer +Auto +AutoTune +Land +Gripper +Parachute Enable +Parachute Release +Parachute 3pos +Auto Mission Reset +AttCon Feed Forward +AttCon Accel Limits +Retract Mount +Relay On/Off +Relay2 On/Off +Relay3 On/Off +Relay4 On/Off +Landing Gear +Lost Copter Sound +Motor Emergency Stop +Motor Interlock +Brake +Throw +ADSB-Avoidance +PrecLoiter +Proximity Avoidance +ArmDisarm +SmartRTL +InvertedFlight +Winch Enable +WinchControl +RC Override Enable +User Function 1 +User Function 2 +User Function 3 +Clear Waypoints +ZigZag +ZigZag SaveWP +Compass Learn +GPS Disable + Relay5 + Relay6 + + + + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + + +Normal +Reversed + + + +0 200 +PWM +PWM in microseconds + + + +Do Nothing +Flip +Simple Mode +RTL +Save Trim +Save WP +Camera Trigger +RangeFinder +Fence +Super Simple Mode +Acro Trainer +Sprayer +Auto +AutoTune +Land +Gripper +Parachute Enable +Parachute Release +Parachute 3pos +Auto Mission Reset +AttCon Feed Forward +AttCon Accel Limits +Retract Mount +Relay On/Off +Relay2 On/Off +Relay3 On/Off +Relay4 On/Off +Landing Gear +Lost Copter Sound +Motor Emergency Stop +Motor Interlock +Brake +Throw +ADSB-Avoidance +PrecLoiter +Proximity Avoidance +ArmDisarm +SmartRTL +InvertedFlight +Winch Enable +WinchControl +RC Override Enable +User Function 1 +User Function 2 +User Function 3 +Clear Waypoints +ZigZag +ZigZag SaveWP +Compass Learn +GPS Disable + Relay5 + Relay6 + + + + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + + +Normal +Reversed + + + +0 200 +PWM +PWM in microseconds + + + +Do Nothing +Flip +Simple Mode +RTL +Save Trim +Save WP +Camera Trigger +RangeFinder +Fence +Super Simple Mode +Acro Trainer +Sprayer +Auto +AutoTune +Land +Gripper +Parachute Enable +Parachute Release +Parachute 3pos +Auto Mission Reset +AttCon Feed Forward +AttCon Accel Limits +Retract Mount +Relay On/Off +Relay2 On/Off +Relay3 On/Off +Relay4 On/Off +Landing Gear +Lost Copter Sound +Motor Emergency Stop +Motor Interlock +Brake +Throw +ADSB-Avoidance +PrecLoiter +Proximity Avoidance +ArmDisarm +SmartRTL +InvertedFlight +Winch Enable +WinchControl +RC Override Enable +User Function 1 +User Function 2 +User Function 3 +Clear Waypoints +ZigZag +ZigZag SaveWP +Compass Learn +GPS Disable + Relay5 + Relay6 + + + + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + + +Normal +Reversed + + + +0 200 +PWM +PWM in microseconds + + + +Do Nothing +Flip +Simple Mode +RTL +Save Trim +Save WP +Camera Trigger +RangeFinder +Fence +Super Simple Mode +Acro Trainer +Sprayer +Auto +AutoTune +Land +Gripper +Parachute Enable +Parachute Release +Parachute 3pos +Auto Mission Reset +AttCon Feed Forward +AttCon Accel Limits +Retract Mount +Relay On/Off +Relay2 On/Off +Relay3 On/Off +Relay4 On/Off +Landing Gear +Lost Copter Sound +Motor Emergency Stop +Motor Interlock +Brake +Throw +ADSB-Avoidance +PrecLoiter +Proximity Avoidance +ArmDisarm +SmartRTL +InvertedFlight +Winch Enable +WinchControl +RC Override Enable +User Function 1 +User Function 2 +User Function 3 +Clear Waypoints +ZigZag +ZigZag SaveWP +Compass Learn +GPS Disable + Relay5 + Relay6 + + + + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + + +Normal +Reversed + + + +0 200 +PWM +PWM in microseconds + + + +Do Nothing +Flip +Simple Mode +RTL +Save Trim +Save WP +Camera Trigger +RangeFinder +Fence +Super Simple Mode +Acro Trainer +Sprayer +Auto +AutoTune +Land +Gripper +Parachute Enable +Parachute Release +Parachute 3pos +Auto Mission Reset +AttCon Feed Forward +AttCon Accel Limits +Retract Mount +Relay On/Off +Relay2 On/Off +Relay3 On/Off +Relay4 On/Off +Landing Gear +Lost Copter Sound +Motor Emergency Stop +Motor Interlock +Brake +Throw +ADSB-Avoidance +PrecLoiter +Proximity Avoidance +ArmDisarm +SmartRTL +InvertedFlight +Winch Enable +WinchControl +RC Override Enable +User Function 1 +User Function 2 +User Function 3 +Clear Waypoints +ZigZag +ZigZag SaveWP +Compass Learn +GPS Disable + Relay5 + Relay6 + + + + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + + +Normal +Reversed + + + +0 200 +PWM +PWM in microseconds + + + +Do Nothing +Flip +Simple Mode +RTL +Save Trim +Save WP +Camera Trigger +RangeFinder +Fence +Super Simple Mode +Acro Trainer +Sprayer +Auto +AutoTune +Land +Gripper +Parachute Enable +Parachute Release +Parachute 3pos +Auto Mission Reset +AttCon Feed Forward +AttCon Accel Limits +Retract Mount +Relay On/Off +Relay2 On/Off +Relay3 On/Off +Relay4 On/Off +Landing Gear +Lost Copter Sound +Motor Emergency Stop +Motor Interlock +Brake +Throw +ADSB-Avoidance +PrecLoiter +Proximity Avoidance +ArmDisarm +SmartRTL +InvertedFlight +Winch Enable +WinchControl +RC Override Enable +User Function 1 +User Function 2 +User Function 3 +Clear Waypoints +ZigZag +ZigZag SaveWP +Compass Learn +GPS Disable + Relay5 + Relay6 + + + + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + + +Normal +Reversed + + + +0 200 +PWM +PWM in microseconds + + + +Do Nothing +Flip +Simple Mode +RTL +Save Trim +Save WP +Camera Trigger +RangeFinder +Fence +Super Simple Mode +Acro Trainer +Sprayer +Auto +AutoTune +Land +Gripper +Parachute Enable +Parachute Release +Parachute 3pos +Auto Mission Reset +AttCon Feed Forward +AttCon Accel Limits +Retract Mount +Relay On/Off +Relay2 On/Off +Relay3 On/Off +Relay4 On/Off +Landing Gear +Lost Copter Sound +Motor Emergency Stop +Motor Interlock +Brake +Throw +ADSB-Avoidance +PrecLoiter +Proximity Avoidance +ArmDisarm +SmartRTL +InvertedFlight +Winch Enable +WinchControl +RC Override Enable +User Function 1 +User Function 2 +User Function 3 +Clear Waypoints +ZigZag +ZigZag SaveWP +Compass Learn +GPS Disable + Relay5 + Relay6 + + + + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + + +Normal +Reversed + + + +0 200 +PWM +PWM in microseconds + + + +Do Nothing +Flip +Simple Mode +RTL +Save Trim +Save WP +Camera Trigger +RangeFinder +Fence +Super Simple Mode +Acro Trainer +Sprayer +Auto +AutoTune +Land +Gripper +Parachute Enable +Parachute Release +Parachute 3pos +Auto Mission Reset +AttCon Feed Forward +AttCon Accel Limits +Retract Mount +Relay On/Off +Relay2 On/Off +Relay3 On/Off +Relay4 On/Off +Landing Gear +Lost Copter Sound +Motor Emergency Stop +Motor Interlock +Brake +Throw +ADSB-Avoidance +PrecLoiter +Proximity Avoidance +ArmDisarm +SmartRTL +InvertedFlight +Winch Enable +WinchControl +RC Override Enable +User Function 1 +User Function 2 +User Function 3 +Clear Waypoints +ZigZag +ZigZag SaveWP +Compass Learn +GPS Disable + Relay5 + Relay6 + + + + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + + +Normal +Reversed + + + +0 200 +PWM +PWM in microseconds + + + +Do Nothing +Flip +Simple Mode +RTL +Save Trim +Save WP +Camera Trigger +RangeFinder +Fence +Super Simple Mode +Acro Trainer +Sprayer +Auto +AutoTune +Land +Gripper +Parachute Enable +Parachute Release +Parachute 3pos +Auto Mission Reset +AttCon Feed Forward +AttCon Accel Limits +Retract Mount +Relay On/Off +Relay2 On/Off +Relay3 On/Off +Relay4 On/Off +Landing Gear +Lost Copter Sound +Motor Emergency Stop +Motor Interlock +Brake +Throw +ADSB-Avoidance +PrecLoiter +Proximity Avoidance +ArmDisarm +SmartRTL +InvertedFlight +Winch Enable +WinchControl +RC Override Enable +User Function 1 +User Function 2 +User Function 3 +Clear Waypoints +ZigZag +ZigZag SaveWP +Compass Learn +GPS Disable + Relay5 + Relay6 + + + + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + + +Normal +Reversed + + + +0 200 +PWM +PWM in microseconds + + + +Do Nothing +Flip +Simple Mode +RTL +Save Trim +Save WP +Camera Trigger +RangeFinder +Fence +Super Simple Mode +Acro Trainer +Sprayer +Auto +AutoTune +Land +Gripper +Parachute Enable +Parachute Release +Parachute 3pos +Auto Mission Reset +AttCon Feed Forward +AttCon Accel Limits +Retract Mount +Relay On/Off +Relay2 On/Off +Relay3 On/Off +Relay4 On/Off +Landing Gear +Lost Copter Sound +Motor Emergency Stop +Motor Interlock +Brake +Throw +ADSB-Avoidance +PrecLoiter +Proximity Avoidance +ArmDisarm +SmartRTL +InvertedFlight +Winch Enable +WinchControl +RC Override Enable +User Function 1 +User Function 2 +User Function 3 +Clear Waypoints +ZigZag +ZigZag SaveWP +Compass Learn +GPS Disable + Relay5 + Relay6 + + + + + +1 8 +1 +True + + +1 8 +1 +True + + +1 8 +1 +True + + +1 8 +1 +True + + + + + +Disabled +BB Blue GP0 pin 4 +AUXOUT1 +AUXOUT2 +AUXOUT3 +AUXOUT4 +AUXOUT5 +AUXOUT6 +BB Blue GP0 pin 3 +BB Blue GP0 pin 6 +BB Blue GP0 pin 5 + + + + +Disabled +BB Blue GP0 pin 4 +AUXOUT1 +AUXOUT2 +AUXOUT3 +AUXOUT4 +AUXOUT5 +AUXOUT6 +BB Blue GP0 pin 3 +BB Blue GP0 pin 6 +BB Blue GP0 pin 5 + + + + +Disabled +BB Blue GP0 pin 4 +AUXOUT1 +AUXOUT2 +AUXOUT3 +AUXOUT4 +AUXOUT5 +AUXOUT6 +BB Blue GP0 pin 3 +BB Blue GP0 pin 6 +BB Blue GP0 pin 5 + + + + +Disabled +BB Blue GP0 pin 4 +AUXOUT1 +AUXOUT2 +AUXOUT3 +AUXOUT4 +AUXOUT5 +AUXOUT6 +BB Blue GP0 pin 3 +BB Blue GP0 pin 6 +BB Blue GP0 pin 5 + + + + +Off +On +NoChange + + + + +Disabled +BB Blue GP0 pin 4 +AUXOUT1 +AUXOUT2 +AUXOUT3 +AUXOUT4 +AUXOUT5 +AUXOUT6 +BB Blue GP0 pin 3 +BB Blue GP0 pin 6 +BB Blue GP0 pin 5 + + + + +Disabled +BB Blue GP0 pin 4 +AUXOUT1 +AUXOUT2 +AUXOUT3 +AUXOUT4 +AUXOUT5 +AUXOUT6 +BB Blue GP0 pin 3 +BB Blue GP0 pin 6 +BB Blue GP0 pin 5 + + + + + + +None +Analog +MaxbotixI2C +LidarLiteV2-I2C +PX4-PWM +BBB-PRU +LightWareI2C +LightWareSerial +Bebop +MAVLink +uLanding +LeddarOne +MaxbotixSerial +TeraRangerI2C +LidarLiteV3-I2C +VL53L0X +NMEA +WASP-LRF +BenewakeTF02 +BenewakeTFmini + + + + +Not Used +PX4-airspeed port +Pixhawk-airspeed port + + + +0.001 +m/V +meters per volt + + +0.001 +V +volt + + + +Linear +Inverted +Hyperbolic + + + +1 +cm +centimeters + + +1 +cm +centimeters + + + +Not Used +Pixhawk AUXOUT1 +Pixhawk AUXOUT2 +Pixhawk AUXOUT3 +Pixhawk AUXOUT4 +Pixhawk AUXOUT5 +Pixhawk AUXOUT6 +PX4 FMU Relay1 +PX4 FMU Relay2 +PX4IO Relay1 +PX4IO Relay2 +PX4IO ACC1 +PX4IO ACC2 + + + +1 +ms +milliseconds + + + +No +Yes + + + +0 32767 +m +meters + + +5 127 +1 +cm +centimeters + + +0 127 +1 + + +m +meters + + +m +meters + + +m +meters + + + +Forward +Forward-Right +Right +Back-Right +Back +Back-Left +Left +Forward-Left +Up +Down + + + + + +0 255 + + +0 255 + + +0 10000 + + +0 255 + + +-1 255 + + + +Low Speed +High Speed + + + + + + +None +Analog +MaxbotixI2C +LidarLiteV2-I2C +PX4-PWM +BBB-PRU +LightWareI2C +LightWareSerial +Bebop +MAVLink +uLanding +LeddarOne +MaxbotixSerial +TeraRangerI2C +LidarLiteV3-I2C +VL53L0X +NMEA +WASP-LRF +BenewakeTF02 +BenewakeTFmini + + + + +Not Used +PX4-airspeed port +Pixhawk-airspeed port + + + +0.001 +m/V +meters per volt + + +0.001 +V +volt + + + +Linear +Inverted +Hyperbolic + + + +1 +cm +centimeters + + +1 +cm +centimeters + + + +Not Used +Pixhawk AUXOUT1 +Pixhawk AUXOUT2 +Pixhawk AUXOUT3 +Pixhawk AUXOUT4 +Pixhawk AUXOUT5 +Pixhawk AUXOUT6 +PX4 FMU Relay1 +PX4 FMU Relay2 +PX4IO Relay1 +PX4IO Relay2 +PX4IO ACC1 +PX4IO ACC2 + + + +1 +ms +milliseconds + + + +No +Yes + + + +0 32767 +m +meters + + +5 127 +1 +cm +centimeters + + +0 127 +1 + + +m +meters + + +m +meters + + +m +meters + + + +Forward +Forward-Right +Right +Back-Right +Back +Back-Left +Left +Forward-Left +Up +Down + + + + + +0 255 + + +0 255 + + +0 10000 + + +0 255 + + +-1 255 + + + +Low Speed +High Speed + + + + + + +None +Analog +MaxbotixI2C +LidarLiteV2-I2C +PX4-PWM +BBB-PRU +LightWareI2C +LightWareSerial +Bebop +MAVLink +uLanding +LeddarOne +MaxbotixSerial +TeraRangerI2C +LidarLiteV3-I2C +VL53L0X +NMEA +WASP-LRF +BenewakeTF02 +BenewakeTFmini + + + + +Not Used +PX4-airspeed port +Pixhawk-airspeed port + + + +0.001 +m/V +meters per volt + + +0.001 +V +volt + + + +Linear +Inverted +Hyperbolic + + + +1 +cm +centimeters + + +1 +cm +centimeters + + + +Not Used +Pixhawk AUXOUT1 +Pixhawk AUXOUT2 +Pixhawk AUXOUT3 +Pixhawk AUXOUT4 +Pixhawk AUXOUT5 +Pixhawk AUXOUT6 +PX4 FMU Relay1 +PX4 FMU Relay2 +PX4IO Relay1 +PX4IO Relay2 +PX4IO ACC1 +PX4IO ACC2 + + + +1 +ms +milliseconds + + + +No +Yes + + + +0 32767 +m +meters + + +5 127 +1 +cm +centimeters + + +0 127 +1 + + +m +meters + + +m +meters + + +m +meters + + + +Forward +Forward-Right +Right +Back-Right +Back +Back-Left +Left +Forward-Left +Up +Down + + + + + +0 255 + + +0 255 + + +0 10000 + + +0 255 + + +-1 255 + + + +Low Speed +High Speed + + + + + + +None +Analog +MaxbotixI2C +LidarLiteV2-I2C +PX4-PWM +BBB-PRU +LightWareI2C +LightWareSerial +Bebop +MAVLink +uLanding +LeddarOne +MaxbotixSerial +TeraRangerI2C +LidarLiteV3-I2C +VL53L0X +NMEA +WASP-LRF +BenewakeTF02 +BenewakeTFmini + + + + +Not Used +PX4-airspeed port +Pixhawk-airspeed port + + + +0.001 +m/V +meters per volt + + +0.001 +V +volt + + + +Linear +Inverted +Hyperbolic + + + +1 +cm +centimeters + + +1 +cm +centimeters + + + +Not Used +Pixhawk AUXOUT1 +Pixhawk AUXOUT2 +Pixhawk AUXOUT3 +Pixhawk AUXOUT4 +Pixhawk AUXOUT5 +Pixhawk AUXOUT6 +PX4 FMU Relay1 +PX4 FMU Relay2 +PX4IO Relay1 +PX4IO Relay2 +PX4IO ACC1 +PX4IO ACC2 + + + +1 +ms +milliseconds + + + +No +Yes + + + +0 32767 +m +meters + + +5 127 +1 +cm +centimeters + + +0 127 +1 + + +m +meters + + +m +meters + + +m +meters + + + +Forward +Forward-Right +Right +Back-Right +Back +Back-Left +Left +Forward-Left +Up +Down + + + + + +0 255 + + +0 255 + + +0 10000 + + +0 255 + + +-1 255 + + + +Low Speed +High Speed + + + + + + +None +Analog +MaxbotixI2C +LidarLiteV2-I2C +PX4-PWM +BBB-PRU +LightWareI2C +LightWareSerial +Bebop +MAVLink +uLanding +LeddarOne +MaxbotixSerial +TeraRangerI2C +LidarLiteV3-I2C +VL53L0X +NMEA +WASP-LRF +BenewakeTF02 +BenewakeTFmini + + + + +Not Used +PX4-airspeed port +Pixhawk-airspeed port + + + +0.001 +m/V +meters per volt + + +0.001 +V +volt + + + +Linear +Inverted +Hyperbolic + + + +1 +cm +centimeters + + +1 +cm +centimeters + + + +Not Used +Pixhawk AUXOUT1 +Pixhawk AUXOUT2 +Pixhawk AUXOUT3 +Pixhawk AUXOUT4 +Pixhawk AUXOUT5 +Pixhawk AUXOUT6 +PX4 FMU Relay1 +PX4 FMU Relay2 +PX4IO Relay1 +PX4IO Relay2 +PX4IO ACC1 +PX4IO ACC2 + + + +1 +ms +milliseconds + + + +No +Yes + + + +0 32767 +m +meters + + +5 127 +1 +cm +centimeters + + +0 127 +1 + + +m +meters + + +m +meters + + +m +meters + + + +Forward +Forward-Right +Right +Back-Right +Back +Back-Left +Left +Forward-Left +Up +Down + + + + + +0 255 + + +0 255 + + +0 10000 + + +0 255 + + +-1 255 + + + +Low Speed +High Speed + + + + + + +None +Analog +MaxbotixI2C +LidarLiteV2-I2C +PX4-PWM +BBB-PRU +LightWareI2C +LightWareSerial +Bebop +MAVLink +uLanding +LeddarOne +MaxbotixSerial +TeraRangerI2C +LidarLiteV3-I2C +VL53L0X +NMEA +WASP-LRF +BenewakeTF02 +BenewakeTFmini + + + + +Not Used +PX4-airspeed port +Pixhawk-airspeed port + + + +0.001 +m/V +meters per volt + + +0.001 +V +volt + + + +Linear +Inverted +Hyperbolic + + + +1 +cm +centimeters + + +1 +cm +centimeters + + + +Not Used +Pixhawk AUXOUT1 +Pixhawk AUXOUT2 +Pixhawk AUXOUT3 +Pixhawk AUXOUT4 +Pixhawk AUXOUT5 +Pixhawk AUXOUT6 +PX4 FMU Relay1 +PX4 FMU Relay2 +PX4IO Relay1 +PX4IO Relay2 +PX4IO ACC1 +PX4IO ACC2 + + + +1 +ms +milliseconds + + + +No +Yes + + + +0 32767 +m +meters + + +5 127 +1 +cm +centimeters + + +0 127 +1 + + +m +meters + + +m +meters + + +m +meters + + + +Forward +Forward-Right +Right +Back-Right +Back +Back-Left +Left +Forward-Left +Up +Down + + + + + +0 255 + + +0 255 + + +0 10000 + + +0 255 + + +-1 255 + + + +Low Speed +High Speed + + + + + + +None +Analog +MaxbotixI2C +LidarLiteV2-I2C +PX4-PWM +BBB-PRU +LightWareI2C +LightWareSerial +Bebop +MAVLink +uLanding +LeddarOne +MaxbotixSerial +TeraRangerI2C +LidarLiteV3-I2C +VL53L0X +NMEA +WASP-LRF +BenewakeTF02 +BenewakeTFmini + + + + +Not Used +PX4-airspeed port +Pixhawk-airspeed port + + + +0.001 +m/V +meters per volt + + +0.001 +V +volt + + + +Linear +Inverted +Hyperbolic + + + +1 +cm +centimeters + + +1 +cm +centimeters + + + +Not Used +Pixhawk AUXOUT1 +Pixhawk AUXOUT2 +Pixhawk AUXOUT3 +Pixhawk AUXOUT4 +Pixhawk AUXOUT5 +Pixhawk AUXOUT6 +PX4 FMU Relay1 +PX4 FMU Relay2 +PX4IO Relay1 +PX4IO Relay2 +PX4IO ACC1 +PX4IO ACC2 + + + +1 +ms +milliseconds + + + +No +Yes + + + +0 32767 +m +meters + + +5 127 +1 +cm +centimeters + + +0 127 +1 + + +m +meters + + +m +meters + + +m +meters + + + +Forward +Forward-Right +Right +Back-Right +Back +Back-Left +Left +Forward-Left +Up +Down + + + + + +0 255 + + +0 255 + + +0 10000 + + +0 255 + + +-1 255 + + + +Low Speed +High Speed + + + + + + +None +Analog +MaxbotixI2C +LidarLiteV2-I2C +PX4-PWM +BBB-PRU +LightWareI2C +LightWareSerial +Bebop +MAVLink +uLanding +LeddarOne +MaxbotixSerial +TeraRangerI2C +LidarLiteV3-I2C +VL53L0X +NMEA +WASP-LRF +BenewakeTF02 +BenewakeTFmini + + + + +Not Used +PX4-airspeed port +Pixhawk-airspeed port + + + +0.001 +m/V +meters per volt + + +0.001 +V +volt + + + +Linear +Inverted +Hyperbolic + + + +1 +cm +centimeters + + +1 +cm +centimeters + + + +Not Used +Pixhawk AUXOUT1 +Pixhawk AUXOUT2 +Pixhawk AUXOUT3 +Pixhawk AUXOUT4 +Pixhawk AUXOUT5 +Pixhawk AUXOUT6 +PX4 FMU Relay1 +PX4 FMU Relay2 +PX4IO Relay1 +PX4IO Relay2 +PX4IO ACC1 +PX4IO ACC2 + + + +1 +ms +milliseconds + + + +No +Yes + + + +0 32767 +m +meters + + +5 127 +1 +cm +centimeters + + +0 127 +1 + + +m +meters + + +m +meters + + +m +meters + + + +Forward +Forward-Right +Right +Back-Right +Back +Back-Left +Left +Forward-Left +Up +Down + + + + + +0 255 + + +0 255 + + +0 10000 + + +0 255 + + +-1 255 + + + +Low Speed +High Speed + + + + + + +None +Analog +MaxbotixI2C +LidarLiteV2-I2C +PX4-PWM +BBB-PRU +LightWareI2C +LightWareSerial +Bebop +MAVLink +uLanding +LeddarOne +MaxbotixSerial +TeraRangerI2C +LidarLiteV3-I2C +VL53L0X +NMEA +WASP-LRF +BenewakeTF02 +BenewakeTFmini + + + + +Not Used +PX4-airspeed port +Pixhawk-airspeed port + + + +0.001 +m/V +meters per volt + + +0.001 +V +volt + + + +Linear +Inverted +Hyperbolic + + + +1 +cm +centimeters + + +1 +cm +centimeters + + + +Not Used +Pixhawk AUXOUT1 +Pixhawk AUXOUT2 +Pixhawk AUXOUT3 +Pixhawk AUXOUT4 +Pixhawk AUXOUT5 +Pixhawk AUXOUT6 +PX4 FMU Relay1 +PX4 FMU Relay2 +PX4IO Relay1 +PX4IO Relay2 +PX4IO ACC1 +PX4IO ACC2 + + + +1 +ms +milliseconds + + + +No +Yes + + + +0 32767 +m +meters + + +5 127 +1 +cm +centimeters + + +0 127 +1 + + +m +meters + + +m +meters + + +m +meters + + + +Forward +Forward-Right +Right +Back-Right +Back +Back-Left +Left +Forward-Left +Up +Down + + + + + +0 255 + + +0 255 + + +0 10000 + + +0 255 + + +-1 255 + + + +Low Speed +High Speed + + + + + + +None +Analog +MaxbotixI2C +LidarLiteV2-I2C +PX4-PWM +BBB-PRU +LightWareI2C +LightWareSerial +Bebop +MAVLink +uLanding +LeddarOne +MaxbotixSerial +TeraRangerI2C +LidarLiteV3-I2C +VL53L0X +NMEA +WASP-LRF +BenewakeTF02 +BenewakeTFmini + + + + +Not Used +PX4-airspeed port +Pixhawk-airspeed port + + + +0.001 +m/V +meters per volt + + +0.001 +V +volt + + + +Linear +Inverted +Hyperbolic + + + +1 +cm +centimeters + + +1 +cm +centimeters + + + +Not Used +Pixhawk AUXOUT1 +Pixhawk AUXOUT2 +Pixhawk AUXOUT3 +Pixhawk AUXOUT4 +Pixhawk AUXOUT5 +Pixhawk AUXOUT6 +PX4 FMU Relay1 +PX4 FMU Relay2 +PX4IO Relay1 +PX4IO Relay2 +PX4IO ACC1 +PX4IO ACC2 + + + +1 +ms +milliseconds + + + +No +Yes + + + +0 32767 +m +meters + + +5 127 +1 +cm +centimeters + + +0 127 +1 + + +m +meters + + +m +meters + + +m +meters + + + +Forward +Forward-Right +Right +Back-Right +Back +Back-Left +Left +Forward-Left +Up +Down + + + + + +0 255 + + +0 255 + + +0 10000 + + +0 255 + + +-1 255 + + + +Low Speed +High Speed + + + + + + +None +PX4-PWM +AUXPIN + + + +0.001 + + +1 + + +1 + + +0.1 + + + +Disabled +PixhawkAUX1 +PixhawkAUX2 +PixhawkAUX3 +PixhawkAUX4 +PixhawkAUX5 +PixhawkAUX6 + + + + +None +PX4-PWM +AUXPIN + + + +0.001 + + + +Disabled +PixhawkAUX1 +PixhawkAUX2 +PixhawkAUX3 +PixhawkAUX4 +PixhawkAUX5 +PixhawkAUX6 + + + + + + +Disabled +AnalogPin +RCChannelPwmValue +ReceiverProtocol +PWMInputPin + + + + +V5 Nano +Pixracer +Pixhawk ADC4 +Pixhawk ADC3 +Pixhawk ADC6 +Pixhawk2 ADC +PixhawkAUX1 +PixhawkAUX2 +PixhawkAUX3 +PixhawkAUX4 +PixhawkAUX5 +PixhawkAUX6 +Pixhawk SBUS + + + +0 5.0 +0.01 +V +volt + + +0 5.0 +0.01 +V +volt + + +0 16 + + +0 2000 +PWM +PWM in microseconds + + +0 2000 +PWM +PWM in microseconds + + + + + +Disabled +ShowSlips +ShowOverruns + + + + +50Hz +100Hz +200Hz +250Hz +300Hz +400Hz + +True + + + + + +1200 +2400 +4800 +9600 +19200 +38400 +57600 +111100 +115200 +256000 +460800 +500000 +921600 +1500000 + + + + +MAVlink1 +MAVLink2 + +True + + + +None +MAVLink1 +MAVLink2 +Frsky D +Frsky SPort +GPS +Alexmos Gimbal Serial +SToRM32 Gimbal Serial +Rangefinder +FrSky SPort Passthrough (OpenTX) +Lidar360 +Beacon +Volz servo out +SBus servo out +ESC Telemetry +Devo Telemetry +OpticalFlow +RobotisServo + +True + + + +1200 +2400 +4800 +9600 +19200 +38400 +57600 +111100 +115200 +256000 +500000 +921600 +1500000 + + + + +None +MAVLink1 +MAVLink2 +Frsky D +Frsky SPort +GPS +Alexmos Gimbal Serial +SToRM32 Gimbal Serial +Rangefinder +FrSky SPort Passthrough (OpenTX) +Lidar360 +Beacon +Volz servo out +SBus servo out +ESC Telemetry +Devo Telemetry +OpticalFlow +RobotisServo + +True + + + +1200 +2400 +4800 +9600 +19200 +38400 +57600 +111100 +115200 +256000 +500000 +921600 +1500000 + + + + +None +MAVLink1 +MAVLink2 +Frsky D +Frsky SPort +GPS +Alexmos Gimbal Serial +SToRM32 Gimbal Serial +Rangefinder +FrSky SPort Passthrough (OpenTX) +Lidar360 +Beacon +Volz servo out +SBus servo out +ESC Telemetry +Devo Telemetry +OpticalFlow +RobotisServo + +True + + + +1200 +2400 +4800 +9600 +19200 +38400 +57600 +111100 +115200 +256000 +500000 +921600 +1500000 + + + + +None +MAVLink1 +MAVLink2 +Frsky D +Frsky SPort +GPS +Alexmos Gimbal Serial +SToRM32 Gimbal Serial +Rangefinder +FrSky SPort Passthrough (OpenTX) +Lidar360 +Beacon +Volz servo out +SBus servo out +ESC Telemetry +Devo Telemetry +OpticalFlow +RobotisServo + +True + + + +1200 +2400 +4800 +9600 +19200 +38400 +57600 +111100 +115200 +256000 +500000 +921600 +1500000 + + + + +None +MAVLink1 +MAVLink2 +Frsky D +Frsky SPort +GPS +Alexmos Gimbal Serial +SToRM32 Gimbal Serial +Rangefinder +FrSky SPort Passthrough (OpenTX) +Lidar360 +Beacon +Volz servo out +SBus servo out +ESC Telemetry +Devo Telemetry +OpticalFlow +RobotisServo + +True + + + +1200 +2400 +4800 +9600 +19200 +38400 +57600 +111100 +115200 +256000 +500000 +921600 +1500000 + + + + +None +MAVLink1 +MAVLink2 +Frsky D +Frsky SPort +GPS +Alexmos Gimbal Serial +SToRM32 Gimbal Serial +Rangefinder +FrSky SPort Passthrough (OpenTX) +Lidar360 +Beacon +Volz servo out +SBus servo out +ESC Telemetry +Devo Telemetry +OpticalFlow +RobotisServo + +True + + + +1200 +2400 +4800 +9600 +19200 +38400 +57600 +111100 +115200 +256000 +500000 +921600 +1500000 + + + +0:InvertRX, 1:InvertTX, 2:HalfDuplex, 4:Swap +True + + +0:InvertRX, 1:InvertTX, 2:HalfDuplex, 4:Swap +True + + +0:InvertRX, 1:InvertTX, 2:HalfDuplex, 4:Swap +True + + +0:InvertRX, 1:InvertTX, 2:HalfDuplex, 4:Swap +True + + +0:InvertRX, 1:InvertTX, 2:HalfDuplex, 4:Swap +True + + +0:InvertRX, 1:InvertTX, 2:HalfDuplex, 4:Swap +True + + + +Disabled +Serial0 +Serial1 +Serial2 +Serial3 +Serial4 +Serial5 +Serial6 + + + + +Disabled +Serial0 +Serial1 +Serial2 +Serial3 +Serial4 +Serial5 +Serial6 + + + +0 120 +s +seconds + + + + + +Disable +Enable + + + +25 400 +Hz +hertz + + + + +500 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + + +Normal +Reversed + + + + +Disabled +RCPassThru +Flap +Flap_auto +Aileron +mount_pan +mount_tilt +mount_roll +mount_open +camera_trigger +release +mount2_pan +mount2_tilt +mount2_roll +mount2_open +DifferentialSpoilerLeft1 +DifferentialSpoilerRight1 +Elevator +Rudder +FlaperonLeft +FlaperonRight +GroundSteering +Parachute +EPM +LandingGear +EngineRunEnable +HeliRSC +HeliTailRSC +Motor1 +Motor2 +Motor3 +Motor4 +Motor5 +Motor6 +Motor7 +Motor8 +MotorTilt +RCIN1 +RCIN2 +RCIN3 +RCIN4 +RCIN5 +RCIN6 +RCIN7 +RCIN8 +RCIN9 +RCIN10 +RCIN11 +RCIN12 +RCIN13 +RCIN14 +RCIN15 +RCIN16 +Ignition +Choke +Starter +Throttle +TrackerYaw +TrackerPitch +ThrottleLeft +ThrottleRight +tiltMotorLeft +tiltMotorRight +ElevonLeft +ElevonRight +VTailLeft +VTailRight +BoostThrottle +Motor9 +Motor10 +Motor11 +Motor12 +DifferentialSpoilerLeft2 +DifferentialSpoilerRight2 +Winch +Main Sail +Camera ISO +Camera Focus +Camera Shutter Speed +Script 1 +Script 2 +Script 3 +Script 4 +Script 5 +Script 6 +Script 7 +Script 8 +Script 9 +Script 10 +Script 11 +Script 12 +Script 13 +Script 14 +Script 15 +Script 16 + + + + + +500 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + + +Normal +Reversed + + + + +Disabled +RCPassThru +Flap +Flap_auto +Aileron +mount_pan +mount_tilt +mount_roll +mount_open +camera_trigger +release +mount2_pan +mount2_tilt +mount2_roll +mount2_open +DifferentialSpoilerLeft1 +DifferentialSpoilerRight1 +Elevator +Rudder +FlaperonLeft +FlaperonRight +GroundSteering +Parachute +EPM +LandingGear +EngineRunEnable +HeliRSC +HeliTailRSC +Motor1 +Motor2 +Motor3 +Motor4 +Motor5 +Motor6 +Motor7 +Motor8 +MotorTilt +RCIN1 +RCIN2 +RCIN3 +RCIN4 +RCIN5 +RCIN6 +RCIN7 +RCIN8 +RCIN9 +RCIN10 +RCIN11 +RCIN12 +RCIN13 +RCIN14 +RCIN15 +RCIN16 +Ignition +Choke +Starter +Throttle +TrackerYaw +TrackerPitch +ThrottleLeft +ThrottleRight +tiltMotorLeft +tiltMotorRight +ElevonLeft +ElevonRight +VTailLeft +VTailRight +BoostThrottle +Motor9 +Motor10 +Motor11 +Motor12 +DifferentialSpoilerLeft2 +DifferentialSpoilerRight2 +Winch +Main Sail +Camera ISO +Camera Focus +Camera Shutter Speed +Script 1 +Script 2 +Script 3 +Script 4 +Script 5 +Script 6 +Script 7 +Script 8 +Script 9 +Script 10 +Script 11 +Script 12 +Script 13 +Script 14 +Script 15 +Script 16 + + + + + +500 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + + +Normal +Reversed + + + + +Disabled +RCPassThru +Flap +Flap_auto +Aileron +mount_pan +mount_tilt +mount_roll +mount_open +camera_trigger +release +mount2_pan +mount2_tilt +mount2_roll +mount2_open +DifferentialSpoilerLeft1 +DifferentialSpoilerRight1 +Elevator +Rudder +FlaperonLeft +FlaperonRight +GroundSteering +Parachute +EPM +LandingGear +EngineRunEnable +HeliRSC +HeliTailRSC +Motor1 +Motor2 +Motor3 +Motor4 +Motor5 +Motor6 +Motor7 +Motor8 +MotorTilt +RCIN1 +RCIN2 +RCIN3 +RCIN4 +RCIN5 +RCIN6 +RCIN7 +RCIN8 +RCIN9 +RCIN10 +RCIN11 +RCIN12 +RCIN13 +RCIN14 +RCIN15 +RCIN16 +Ignition +Choke +Starter +Throttle +TrackerYaw +TrackerPitch +ThrottleLeft +ThrottleRight +tiltMotorLeft +tiltMotorRight +ElevonLeft +ElevonRight +VTailLeft +VTailRight +BoostThrottle +Motor9 +Motor10 +Motor11 +Motor12 +DifferentialSpoilerLeft2 +DifferentialSpoilerRight2 +Winch +Main Sail +Camera ISO +Camera Focus +Camera Shutter Speed +Script 1 +Script 2 +Script 3 +Script 4 +Script 5 +Script 6 +Script 7 +Script 8 +Script 9 +Script 10 +Script 11 +Script 12 +Script 13 +Script 14 +Script 15 +Script 16 + + + + + +500 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + + +Normal +Reversed + + + + +Disabled +RCPassThru +Flap +Flap_auto +Aileron +mount_pan +mount_tilt +mount_roll +mount_open +camera_trigger +release +mount2_pan +mount2_tilt +mount2_roll +mount2_open +DifferentialSpoilerLeft1 +DifferentialSpoilerRight1 +Elevator +Rudder +FlaperonLeft +FlaperonRight +GroundSteering +Parachute +EPM +LandingGear +EngineRunEnable +HeliRSC +HeliTailRSC +Motor1 +Motor2 +Motor3 +Motor4 +Motor5 +Motor6 +Motor7 +Motor8 +MotorTilt +RCIN1 +RCIN2 +RCIN3 +RCIN4 +RCIN5 +RCIN6 +RCIN7 +RCIN8 +RCIN9 +RCIN10 +RCIN11 +RCIN12 +RCIN13 +RCIN14 +RCIN15 +RCIN16 +Ignition +Choke +Starter +Throttle +TrackerYaw +TrackerPitch +ThrottleLeft +ThrottleRight +tiltMotorLeft +tiltMotorRight +ElevonLeft +ElevonRight +VTailLeft +VTailRight +BoostThrottle +Motor9 +Motor10 +Motor11 +Motor12 +DifferentialSpoilerLeft2 +DifferentialSpoilerRight2 +Winch +Main Sail +Camera ISO +Camera Focus +Camera Shutter Speed +Script 1 +Script 2 +Script 3 +Script 4 +Script 5 +Script 6 +Script 7 +Script 8 +Script 9 +Script 10 +Script 11 +Script 12 +Script 13 +Script 14 +Script 15 +Script 16 + + + + + +500 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + + +Normal +Reversed + + + + +Disabled +RCPassThru +Flap +Flap_auto +Aileron +mount_pan +mount_tilt +mount_roll +mount_open +camera_trigger +release +mount2_pan +mount2_tilt +mount2_roll +mount2_open +DifferentialSpoilerLeft1 +DifferentialSpoilerRight1 +Elevator +Rudder +FlaperonLeft +FlaperonRight +GroundSteering +Parachute +EPM +LandingGear +EngineRunEnable +HeliRSC +HeliTailRSC +Motor1 +Motor2 +Motor3 +Motor4 +Motor5 +Motor6 +Motor7 +Motor8 +MotorTilt +RCIN1 +RCIN2 +RCIN3 +RCIN4 +RCIN5 +RCIN6 +RCIN7 +RCIN8 +RCIN9 +RCIN10 +RCIN11 +RCIN12 +RCIN13 +RCIN14 +RCIN15 +RCIN16 +Ignition +Choke +Starter +Throttle +TrackerYaw +TrackerPitch +ThrottleLeft +ThrottleRight +tiltMotorLeft +tiltMotorRight +ElevonLeft +ElevonRight +VTailLeft +VTailRight +BoostThrottle +Motor9 +Motor10 +Motor11 +Motor12 +DifferentialSpoilerLeft2 +DifferentialSpoilerRight2 +Winch +Main Sail +Camera ISO +Camera Focus +Camera Shutter Speed +Script 1 +Script 2 +Script 3 +Script 4 +Script 5 +Script 6 +Script 7 +Script 8 +Script 9 +Script 10 +Script 11 +Script 12 +Script 13 +Script 14 +Script 15 +Script 16 + + + + + +500 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + + +Normal +Reversed + + + + +Disabled +RCPassThru +Flap +Flap_auto +Aileron +mount_pan +mount_tilt +mount_roll +mount_open +camera_trigger +release +mount2_pan +mount2_tilt +mount2_roll +mount2_open +DifferentialSpoilerLeft1 +DifferentialSpoilerRight1 +Elevator +Rudder +FlaperonLeft +FlaperonRight +GroundSteering +Parachute +EPM +LandingGear +EngineRunEnable +HeliRSC +HeliTailRSC +Motor1 +Motor2 +Motor3 +Motor4 +Motor5 +Motor6 +Motor7 +Motor8 +MotorTilt +RCIN1 +RCIN2 +RCIN3 +RCIN4 +RCIN5 +RCIN6 +RCIN7 +RCIN8 +RCIN9 +RCIN10 +RCIN11 +RCIN12 +RCIN13 +RCIN14 +RCIN15 +RCIN16 +Ignition +Choke +Starter +Throttle +TrackerYaw +TrackerPitch +ThrottleLeft +ThrottleRight +tiltMotorLeft +tiltMotorRight +ElevonLeft +ElevonRight +VTailLeft +VTailRight +BoostThrottle +Motor9 +Motor10 +Motor11 +Motor12 +DifferentialSpoilerLeft2 +DifferentialSpoilerRight2 +Winch +Main Sail +Camera ISO +Camera Focus +Camera Shutter Speed +Script 1 +Script 2 +Script 3 +Script 4 +Script 5 +Script 6 +Script 7 +Script 8 +Script 9 +Script 10 +Script 11 +Script 12 +Script 13 +Script 14 +Script 15 +Script 16 + + + + + +500 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + + +Normal +Reversed + + + + +Disabled +RCPassThru +Flap +Flap_auto +Aileron +mount_pan +mount_tilt +mount_roll +mount_open +camera_trigger +release +mount2_pan +mount2_tilt +mount2_roll +mount2_open +DifferentialSpoilerLeft1 +DifferentialSpoilerRight1 +Elevator +Rudder +FlaperonLeft +FlaperonRight +GroundSteering +Parachute +EPM +LandingGear +EngineRunEnable +HeliRSC +HeliTailRSC +Motor1 +Motor2 +Motor3 +Motor4 +Motor5 +Motor6 +Motor7 +Motor8 +MotorTilt +RCIN1 +RCIN2 +RCIN3 +RCIN4 +RCIN5 +RCIN6 +RCIN7 +RCIN8 +RCIN9 +RCIN10 +RCIN11 +RCIN12 +RCIN13 +RCIN14 +RCIN15 +RCIN16 +Ignition +Choke +Starter +Throttle +TrackerYaw +TrackerPitch +ThrottleLeft +ThrottleRight +tiltMotorLeft +tiltMotorRight +ElevonLeft +ElevonRight +VTailLeft +VTailRight +BoostThrottle +Motor9 +Motor10 +Motor11 +Motor12 +DifferentialSpoilerLeft2 +DifferentialSpoilerRight2 +Winch +Main Sail +Camera ISO +Camera Focus +Camera Shutter Speed +Script 1 +Script 2 +Script 3 +Script 4 +Script 5 +Script 6 +Script 7 +Script 8 +Script 9 +Script 10 +Script 11 +Script 12 +Script 13 +Script 14 +Script 15 +Script 16 + + + + + +500 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + + +Normal +Reversed + + + + +Disabled +RCPassThru +Flap +Flap_auto +Aileron +mount_pan +mount_tilt +mount_roll +mount_open +camera_trigger +release +mount2_pan +mount2_tilt +mount2_roll +mount2_open +DifferentialSpoilerLeft1 +DifferentialSpoilerRight1 +Elevator +Rudder +FlaperonLeft +FlaperonRight +GroundSteering +Parachute +EPM +LandingGear +EngineRunEnable +HeliRSC +HeliTailRSC +Motor1 +Motor2 +Motor3 +Motor4 +Motor5 +Motor6 +Motor7 +Motor8 +MotorTilt +RCIN1 +RCIN2 +RCIN3 +RCIN4 +RCIN5 +RCIN6 +RCIN7 +RCIN8 +RCIN9 +RCIN10 +RCIN11 +RCIN12 +RCIN13 +RCIN14 +RCIN15 +RCIN16 +Ignition +Choke +Starter +Throttle +TrackerYaw +TrackerPitch +ThrottleLeft +ThrottleRight +tiltMotorLeft +tiltMotorRight +ElevonLeft +ElevonRight +VTailLeft +VTailRight +BoostThrottle +Motor9 +Motor10 +Motor11 +Motor12 +DifferentialSpoilerLeft2 +DifferentialSpoilerRight2 +Winch +Main Sail +Camera ISO +Camera Focus +Camera Shutter Speed +Script 1 +Script 2 +Script 3 +Script 4 +Script 5 +Script 6 +Script 7 +Script 8 +Script 9 +Script 10 +Script 11 +Script 12 +Script 13 +Script 14 +Script 15 +Script 16 + + + + + +500 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + + +Normal +Reversed + + + + +Disabled +RCPassThru +Flap +Flap_auto +Aileron +mount_pan +mount_tilt +mount_roll +mount_open +camera_trigger +release +mount2_pan +mount2_tilt +mount2_roll +mount2_open +DifferentialSpoilerLeft1 +DifferentialSpoilerRight1 +Elevator +Rudder +FlaperonLeft +FlaperonRight +GroundSteering +Parachute +EPM +LandingGear +EngineRunEnable +HeliRSC +HeliTailRSC +Motor1 +Motor2 +Motor3 +Motor4 +Motor5 +Motor6 +Motor7 +Motor8 +MotorTilt +RCIN1 +RCIN2 +RCIN3 +RCIN4 +RCIN5 +RCIN6 +RCIN7 +RCIN8 +RCIN9 +RCIN10 +RCIN11 +RCIN12 +RCIN13 +RCIN14 +RCIN15 +RCIN16 +Ignition +Choke +Starter +Throttle +TrackerYaw +TrackerPitch +ThrottleLeft +ThrottleRight +tiltMotorLeft +tiltMotorRight +ElevonLeft +ElevonRight +VTailLeft +VTailRight +BoostThrottle +Motor9 +Motor10 +Motor11 +Motor12 +DifferentialSpoilerLeft2 +DifferentialSpoilerRight2 +Winch +Main Sail +Camera ISO +Camera Focus +Camera Shutter Speed +Script 1 +Script 2 +Script 3 +Script 4 +Script 5 +Script 6 +Script 7 +Script 8 +Script 9 +Script 10 +Script 11 +Script 12 +Script 13 +Script 14 +Script 15 +Script 16 + + + + + +500 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + + +Normal +Reversed + + + + +Disabled +RCPassThru +Flap +Flap_auto +Aileron +mount_pan +mount_tilt +mount_roll +mount_open +camera_trigger +release +mount2_pan +mount2_tilt +mount2_roll +mount2_open +DifferentialSpoilerLeft1 +DifferentialSpoilerRight1 +Elevator +Rudder +FlaperonLeft +FlaperonRight +GroundSteering +Parachute +EPM +LandingGear +EngineRunEnable +HeliRSC +HeliTailRSC +Motor1 +Motor2 +Motor3 +Motor4 +Motor5 +Motor6 +Motor7 +Motor8 +MotorTilt +RCIN1 +RCIN2 +RCIN3 +RCIN4 +RCIN5 +RCIN6 +RCIN7 +RCIN8 +RCIN9 +RCIN10 +RCIN11 +RCIN12 +RCIN13 +RCIN14 +RCIN15 +RCIN16 +Ignition +Choke +Starter +Throttle +TrackerYaw +TrackerPitch +ThrottleLeft +ThrottleRight +tiltMotorLeft +tiltMotorRight +ElevonLeft +ElevonRight +VTailLeft +VTailRight +BoostThrottle +Motor9 +Motor10 +Motor11 +Motor12 +DifferentialSpoilerLeft2 +DifferentialSpoilerRight2 +Winch +Main Sail +Camera ISO +Camera Focus +Camera Shutter Speed +Script 1 +Script 2 +Script 3 +Script 4 +Script 5 +Script 6 +Script 7 +Script 8 +Script 9 +Script 10 +Script 11 +Script 12 +Script 13 +Script 14 +Script 15 +Script 16 + + + + + +500 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + + +Normal +Reversed + + + + +Disabled +RCPassThru +Flap +Flap_auto +Aileron +mount_pan +mount_tilt +mount_roll +mount_open +camera_trigger +release +mount2_pan +mount2_tilt +mount2_roll +mount2_open +DifferentialSpoilerLeft1 +DifferentialSpoilerRight1 +Elevator +Rudder +FlaperonLeft +FlaperonRight +GroundSteering +Parachute +EPM +LandingGear +EngineRunEnable +HeliRSC +HeliTailRSC +Motor1 +Motor2 +Motor3 +Motor4 +Motor5 +Motor6 +Motor7 +Motor8 +MotorTilt +RCIN1 +RCIN2 +RCIN3 +RCIN4 +RCIN5 +RCIN6 +RCIN7 +RCIN8 +RCIN9 +RCIN10 +RCIN11 +RCIN12 +RCIN13 +RCIN14 +RCIN15 +RCIN16 +Ignition +Choke +Starter +Throttle +TrackerYaw +TrackerPitch +ThrottleLeft +ThrottleRight +tiltMotorLeft +tiltMotorRight +ElevonLeft +ElevonRight +VTailLeft +VTailRight +BoostThrottle +Motor9 +Motor10 +Motor11 +Motor12 +DifferentialSpoilerLeft2 +DifferentialSpoilerRight2 +Winch +Main Sail +Camera ISO +Camera Focus +Camera Shutter Speed +Script 1 +Script 2 +Script 3 +Script 4 +Script 5 +Script 6 +Script 7 +Script 8 +Script 9 +Script 10 +Script 11 +Script 12 +Script 13 +Script 14 +Script 15 +Script 16 + + + + + +500 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + + +Normal +Reversed + + + + +Disabled +RCPassThru +Flap +Flap_auto +Aileron +mount_pan +mount_tilt +mount_roll +mount_open +camera_trigger +release +mount2_pan +mount2_tilt +mount2_roll +mount2_open +DifferentialSpoilerLeft1 +DifferentialSpoilerRight1 +Elevator +Rudder +FlaperonLeft +FlaperonRight +GroundSteering +Parachute +EPM +LandingGear +EngineRunEnable +HeliRSC +HeliTailRSC +Motor1 +Motor2 +Motor3 +Motor4 +Motor5 +Motor6 +Motor7 +Motor8 +MotorTilt +RCIN1 +RCIN2 +RCIN3 +RCIN4 +RCIN5 +RCIN6 +RCIN7 +RCIN8 +RCIN9 +RCIN10 +RCIN11 +RCIN12 +RCIN13 +RCIN14 +RCIN15 +RCIN16 +Ignition +Choke +Starter +Throttle +TrackerYaw +TrackerPitch +ThrottleLeft +ThrottleRight +tiltMotorLeft +tiltMotorRight +ElevonLeft +ElevonRight +VTailLeft +VTailRight +BoostThrottle +Motor9 +Motor10 +Motor11 +Motor12 +DifferentialSpoilerLeft2 +DifferentialSpoilerRight2 +Winch +Main Sail +Camera ISO +Camera Focus +Camera Shutter Speed +Script 1 +Script 2 +Script 3 +Script 4 +Script 5 +Script 6 +Script 7 +Script 8 +Script 9 +Script 10 +Script 11 +Script 12 +Script 13 +Script 14 +Script 15 +Script 16 + + + + + +500 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + + +Normal +Reversed + + + + +Disabled +RCPassThru +Flap +Flap_auto +Aileron +mount_pan +mount_tilt +mount_roll +mount_open +camera_trigger +release +mount2_pan +mount2_tilt +mount2_roll +mount2_open +DifferentialSpoilerLeft1 +DifferentialSpoilerRight1 +Elevator +Rudder +FlaperonLeft +FlaperonRight +GroundSteering +Parachute +EPM +LandingGear +EngineRunEnable +HeliRSC +HeliTailRSC +Motor1 +Motor2 +Motor3 +Motor4 +Motor5 +Motor6 +Motor7 +Motor8 +MotorTilt +RCIN1 +RCIN2 +RCIN3 +RCIN4 +RCIN5 +RCIN6 +RCIN7 +RCIN8 +RCIN9 +RCIN10 +RCIN11 +RCIN12 +RCIN13 +RCIN14 +RCIN15 +RCIN16 +Ignition +Choke +Starter +Throttle +TrackerYaw +TrackerPitch +ThrottleLeft +ThrottleRight +tiltMotorLeft +tiltMotorRight +ElevonLeft +ElevonRight +VTailLeft +VTailRight +BoostThrottle +Motor9 +Motor10 +Motor11 +Motor12 +DifferentialSpoilerLeft2 +DifferentialSpoilerRight2 +Winch +Main Sail +Camera ISO +Camera Focus +Camera Shutter Speed +Script 1 +Script 2 +Script 3 +Script 4 +Script 5 +Script 6 +Script 7 +Script 8 +Script 9 +Script 10 +Script 11 +Script 12 +Script 13 +Script 14 +Script 15 +Script 16 + + + + + +500 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + + +Normal +Reversed + + + + +Disabled +RCPassThru +Flap +Flap_auto +Aileron +mount_pan +mount_tilt +mount_roll +mount_open +camera_trigger +release +mount2_pan +mount2_tilt +mount2_roll +mount2_open +DifferentialSpoilerLeft1 +DifferentialSpoilerRight1 +Elevator +Rudder +FlaperonLeft +FlaperonRight +GroundSteering +Parachute +EPM +LandingGear +EngineRunEnable +HeliRSC +HeliTailRSC +Motor1 +Motor2 +Motor3 +Motor4 +Motor5 +Motor6 +Motor7 +Motor8 +MotorTilt +RCIN1 +RCIN2 +RCIN3 +RCIN4 +RCIN5 +RCIN6 +RCIN7 +RCIN8 +RCIN9 +RCIN10 +RCIN11 +RCIN12 +RCIN13 +RCIN14 +RCIN15 +RCIN16 +Ignition +Choke +Starter +Throttle +TrackerYaw +TrackerPitch +ThrottleLeft +ThrottleRight +tiltMotorLeft +tiltMotorRight +ElevonLeft +ElevonRight +VTailLeft +VTailRight +BoostThrottle +Motor9 +Motor10 +Motor11 +Motor12 +DifferentialSpoilerLeft2 +DifferentialSpoilerRight2 +Winch +Main Sail +Camera ISO +Camera Focus +Camera Shutter Speed +Script 1 +Script 2 +Script 3 +Script 4 +Script 5 +Script 6 +Script 7 +Script 8 +Script 9 +Script 10 +Script 11 +Script 12 +Script 13 +Script 14 +Script 15 +Script 16 + + + + + +500 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + + +Normal +Reversed + + + + +Disabled +RCPassThru +Flap +Flap_auto +Aileron +mount_pan +mount_tilt +mount_roll +mount_open +camera_trigger +release +mount2_pan +mount2_tilt +mount2_roll +mount2_open +DifferentialSpoilerLeft1 +DifferentialSpoilerRight1 +Elevator +Rudder +FlaperonLeft +FlaperonRight +GroundSteering +Parachute +EPM +LandingGear +EngineRunEnable +HeliRSC +HeliTailRSC +Motor1 +Motor2 +Motor3 +Motor4 +Motor5 +Motor6 +Motor7 +Motor8 +MotorTilt +RCIN1 +RCIN2 +RCIN3 +RCIN4 +RCIN5 +RCIN6 +RCIN7 +RCIN8 +RCIN9 +RCIN10 +RCIN11 +RCIN12 +RCIN13 +RCIN14 +RCIN15 +RCIN16 +Ignition +Choke +Starter +Throttle +TrackerYaw +TrackerPitch +ThrottleLeft +ThrottleRight +tiltMotorLeft +tiltMotorRight +ElevonLeft +ElevonRight +VTailLeft +VTailRight +BoostThrottle +Motor9 +Motor10 +Motor11 +Motor12 +DifferentialSpoilerLeft2 +DifferentialSpoilerRight2 +Winch +Main Sail +Camera ISO +Camera Focus +Camera Shutter Speed +Script 1 +Script 2 +Script 3 +Script 4 +Script 5 +Script 6 +Script 7 +Script 8 +Script 9 +Script 10 +Script 11 +Script 12 +Script 13 +Script 14 +Script 15 +Script 16 + + + + + +500 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + + +Normal +Reversed + + + + +Disabled +RCPassThru +Flap +Flap_auto +Aileron +mount_pan +mount_tilt +mount_roll +mount_open +camera_trigger +release +mount2_pan +mount2_tilt +mount2_roll +mount2_open +DifferentialSpoilerLeft1 +DifferentialSpoilerRight1 +Elevator +Rudder +FlaperonLeft +FlaperonRight +GroundSteering +Parachute +EPM +LandingGear +EngineRunEnable +HeliRSC +HeliTailRSC +Motor1 +Motor2 +Motor3 +Motor4 +Motor5 +Motor6 +Motor7 +Motor8 +MotorTilt +RCIN1 +RCIN2 +RCIN3 +RCIN4 +RCIN5 +RCIN6 +RCIN7 +RCIN8 +RCIN9 +RCIN10 +RCIN11 +RCIN12 +RCIN13 +RCIN14 +RCIN15 +RCIN16 +Ignition +Choke +Starter +Throttle +TrackerYaw +TrackerPitch +ThrottleLeft +ThrottleRight +tiltMotorLeft +tiltMotorRight +ElevonLeft +ElevonRight +VTailLeft +VTailRight +BoostThrottle +Motor9 +Motor10 +Motor11 +Motor12 +DifferentialSpoilerLeft2 +DifferentialSpoilerRight2 +Winch +Main Sail +Camera ISO +Camera Focus +Camera Shutter Speed +Script 1 +Script 2 +Script 3 +Script 4 +Script 5 +Script 6 +Script 7 +Script 8 +Script 9 +Script 10 +Script 11 +Script 12 +Script 13 +Script 14 +Script 15 +Script 16 + + + + + +0:Channel1,1:Channel2,2:Channel3,3:Channel4,4:Channel5,5:Channel6,6:Channel7,7:Channel8,8:Channel9,9:Channel10,10:Channel11,11:Channel12,12:Channel13,13:Channel14,14:Channel15,15:Channel16 + + + +Disabled +Enabled + + + + +Disabled +TestMotor1 +TestMotor2 +TestMotor3 +TestMotor4 +TestMotor5 +TestMotor6 +TestMotor7 +TestMotor8 + + + +0 300 +s +seconds + + +0 500 +Hz +hertz + + + +Disabled +Enabled + + + + +None +OneShot +OneShot125 +Brushed +DShot150 +DShot300 +DShot600 +DShot1200 + + + + +Console +Telem1 +Telem2 +Telem3 +Telem4 +Telem5 + + + +1 127 + + +0:Channel1,1:Channel2,2:Channel3,3:Channel4,4:Channel5,5:Channel6,6:Channel7,7:Channel8,8:Channel9,9:Channel10,10:Channel11,11:Channel12,12:Channel13,13:Channel14,14:Channel15,15:Channel16 + + + + +0 4095 + + +0 4095 + + + + +25 250 +Hz +hertz + + + + +0:Channel1,1:Channel2,2:Channel3,3:Channel4,4:Channel5,5:Channel6,6:Channel7,7:Channel8,8:Channel9,9:Channel10,10:Channel11,11:Channel12,12:Channel13,13:Channel14,14:Channel15,15:Channel16 + + + + + +Disabled +Enabled + + + +0 100 +% +percent + + +1000 2000 +ms +milliseconds + + +0 1000 +cm/s +centimeters per second + + +0 100 +% +percent + + + + +0 10 +1 +Hz +hertz + + +0 10 +1 +Hz +hertz + + +0 10 +1 +Hz +hertz + + +0 10 +1 +Hz +hertz + + +0 10 +1 +Hz +hertz + + +0 10 +1 +Hz +hertz + + +0 10 +1 +Hz +hertz + + +0 10 +1 +Hz +hertz + + +0 10 +1 +Hz +hertz + + +0 50 +1 +Hz +hertz + + + + +0 10 +1 +Hz +hertz + + +0 10 +1 +Hz +hertz + + +0 10 +1 +Hz +hertz + + +0 10 +1 +Hz +hertz + + +0 10 +1 +Hz +hertz + + +0 10 +1 +Hz +hertz + + +0 10 +1 +Hz +hertz + + +0 10 +1 +Hz +hertz + + +0 10 +1 +Hz +hertz + + +0 50 +1 +Hz +hertz + + + + +0 10 +1 +Hz +hertz + + +0 10 +1 +Hz +hertz + + +0 10 +1 +Hz +hertz + + +0 10 +1 +Hz +hertz + + +0 10 +1 +Hz +hertz + + +0 10 +1 +Hz +hertz + + +0 10 +1 +Hz +hertz + + +0 10 +1 +Hz +hertz + + +0 10 +1 +Hz +hertz + + +0 50 +1 +Hz +hertz + + + + +0 10 +1 +Hz +hertz + + +0 10 +1 +Hz +hertz + + +0 10 +1 +Hz +hertz + + +0 10 +1 +Hz +hertz + + +0 10 +1 +Hz +hertz + + +0 10 +1 +Hz +hertz + + +0 10 +1 +Hz +hertz + + +0 10 +1 +Hz +hertz + + +0 10 +1 +Hz +hertz + + +0 50 +1 +Hz +hertz + + + + +0 10 +m +meters + + +0 500 +True + + + + +True + + +True +s +seconds + + +True +s +seconds + + +True +s +seconds + + + + + +Disabled +Enabled +EnableAndLearn + + + +True +True +degC +degrees Celsius + + +True +True +degC +degrees Celsius + + +True +True + + + + + +Disable +Enable + + + +1 +m +meters + + + + + +Disabled +EnableVersion1 +EnableVersion2 + + + + +Stabilize +Acro +AltHold +Auto +Guided +Loiter +RTL +Circle +Land +Drift +Sport +Flip +AutoTune +PosHold +Brake +Throw +Avoid_ADSB +Guided_NoGPS +FlowHold + + + + +Stabilize +Acro +AltHold +Auto +Guided +Loiter +RTL +Circle +Land +Drift +Sport +Flip +AutoTune +PosHold +Brake +Throw +Avoid_ADSB +Guided_NoGPS +FlowHold + + + + +None +TakePhoto +ToggleVideo +ModeAcro +ModeAltHold +ModeAuto +ModeLoiter +ModeRTL +ModeCircle +ModeLand +ModeDrift +ModeSport +ModeAutoTune +ModePosHold +ModeBrake +ModeThrow +Flip +ModeStabilize +Disarm +ToggleMode +Arm-Land-RTL +ToggleSimpleMode +ToggleSuperSimpleMode +MotorLoadTest +ModeFlowHold + + + + +None +TakePhoto +ToggleVideo +ModeAcro +ModeAltHold +ModeAuto +ModeLoiter +ModeRTL +ModeCircle +ModeLand +ModeDrift +ModeSport +ModeAutoTune +ModePosHold +ModeBrake +ModeThrow +Flip +ModeStabilize +Disarm +ToggleMode +Arm-Land-RTL +ToggleSimpleMode +ToggleSuperSimpleMode +MotorLoadTest +ModeFlowHold + + + + +None +TakePhoto +ToggleVideo +ModeAcro +ModeAltHold +ModeAuto +ModeLoiter +ModeRTL +ModeCircle +ModeLand +ModeDrift +ModeSport +ModeAutoTune +ModePosHold +ModeBrake +ModeThrow +Flip +ModeStabilize +Disarm +ToggleMode +Arm-Land-RTL +ToggleSimpleMode +ToggleSuperSimpleMode +MotorLoadTest +ModeFlowHold + + + + +None +TakePhoto +ToggleVideo +ModeAcro +ModeAltHold +ModeAuto +ModeLoiter +ModeRTL +ModeCircle +ModeLand +ModeDrift +ModeSport +ModeAutoTune +ModePosHold +ModeBrake +ModeThrow +Flip +ModeStabilize +Disarm +ToggleMode +Arm-Land-RTL +ToggleSimpleMode +ToggleSuperSimpleMode +MotorLoadTest +ModeFlowHold + + + + +None +TakePhoto +ToggleVideo +ModeAcro +ModeAltHold +ModeAuto +ModeLoiter +ModeRTL +ModeCircle +ModeLand +ModeDrift +ModeSport +ModeAutoTune +ModePosHold +ModeBrake +ModeThrow +Flip +ModeStabilize +Disarm +ToggleMode +Arm-Land-RTL +ToggleSimpleMode +ToggleSuperSimpleMode +MotorLoadTest +ModeFlowHold + + + + +None +TakePhoto +ToggleVideo +ModeAcro +ModeAltHold +ModeAuto +ModeLoiter +ModeRTL +ModeCircle +ModeLand +ModeDrift +ModeSport +ModeAutoTune +ModePosHold +ModeBrake +ModeThrow +Flip +ModeStabilize +Disarm +ToggleMode +Arm-Land-RTL +ToggleSimpleMode +ToggleSuperSimpleMode +MotorLoadTest +ModeFlowHold + + + + +None +TakePhoto +ToggleVideo +ModeAcro +ModeAltHold +ModeAuto +ModeLoiter +ModeRTL +ModeCircle +ModeLand +ModeDrift +ModeSport +ModeAutoTune +ModePosHold +ModeBrake +ModeThrow +Flip +ModeStabilize +Disarm +ToggleMode +Arm-Land-RTL +ToggleSimpleMode +ToggleSuperSimpleMode +MotorLoadTest +ModeFlowHold + + + + +None +TakePhoto +ToggleVideo +ModeAcro +ModeAltHold +ModeAuto +ModeLoiter +ModeRTL +ModeCircle +ModeLand +ModeDrift +ModeSport +ModeAutoTune +ModePosHold +ModeBrake +ModeThrow +Flip +ModeStabilize +Disarm +ToggleMode +Arm-Land-RTL +ToggleSimpleMode +ToggleSuperSimpleMode +MotorLoadTest +ModeFlowHold + + + +0 100 + + + +None +TakePhoto +ToggleVideo +ModeAcro +ModeAltHold +ModeAuto +ModeLoiter +ModeRTL +ModeCircle +ModeLand +ModeDrift +ModeSport +ModeAutoTune +ModePosHold +ModeBrake +ModeThrow +Flip +ModeStabilize +Disarm +ToggleMode +Arm-Land-RTL +ToggleSimpleMode +ToggleSuperSimpleMode +MotorLoadTest + + + +0:DisarmOnLowThrottle,1:ArmOnHighThrottle,2:UpgradeToLoiter,3:RTLStickCancel + + +0 5 +0.01 + + +0 5 +0.01 + + +0 1 +0.01 + + +0 1 +0.01 + + +0 1 +0.01 + + +0 100 + + + +ConstantThrust +LogReplay1 +LogReplay2 + + + + + + +None +MAV + + + +m +meters + + +m +meters + + +m +meters + + + +Forward +Right +Back +Left +Up +Down + + + + + + +None +Quadrature + + + +1 + + +0.001 +m +meters + + +0.01 +m +meters + + +0.01 +m +meters + + +0.01 +m +meters + + + +Disabled +PixhawkAUX1 +PixhawkAUX2 +PixhawkAUX3 +PixhawkAUX4 +PixhawkAUX5 +PixhawkAUX6 + + + + +Disabled +PixhawkAUX1 +PixhawkAUX2 +PixhawkAUX3 +PixhawkAUX4 +PixhawkAUX5 +PixhawkAUX6 + + + + +None +Quadrature + + + +1 + + +0.001 +m +meters + + +0.01 +m +meters + + +0.01 +m +meters + + +0.01 +m +meters + + + +Disabled +PixhawkAUX1 +PixhawkAUX2 +PixhawkAUX3 +PixhawkAUX4 +PixhawkAUX5 +PixhawkAUX6 + + + + +Disabled +PixhawkAUX1 +PixhawkAUX2 +PixhawkAUX3 +PixhawkAUX4 +PixhawkAUX5 +PixhawkAUX6 + + + + + + +Disabled +Enabled + + + + +Servo with encoder + + + +0 10 +m/s +meters per second + + +0.01 10.0 + + +0.100 2.000 + + +0.000 2.000 + + +0.000 1.000 + + +0.000 0.400 + + +1.000 100.000 +Hz +hertz + + + + +20 2000 +50 +cm/s +centimeters per second + + +10 1000 +1 +cm +centimeters + + +10 1000 +50 +cm/s +centimeters per second + + +10 500 +10 +cm/s +centimeters per second + + +50 500 +10 +cm/s/s +centimeters per square second + + +50 500 +10 +cm/s/s +centimeters per square second + + + +Disable +Enable + + + + diff --git a/src/FirmwarePlugin/APM/APMParameterFactMetaData.Copter.4.0.xml b/src/FirmwarePlugin/APM/APMParameterFactMetaData.Copter.4.0.xml new file mode 100644 index 0000000..00e25d5 --- /dev/null +++ b/src/FirmwarePlugin/APM/APMParameterFactMetaData.Copter.4.0.xml @@ -0,0 +1,16158 @@ + + + + + + +True + + +1 255 + + +1 255 + + +Hz +hertz +0 10 +.5 + + +cm +centimeters +0.0 1000.0 +10 + + + +None +Feedback from mid stick +High throttle cancels landing +Disarm on land detection + +0:Feedback from mid stick,1:High throttle cancels landing,2:Disarm on land detection + + +s +seconds +0 30 +1 + + + +None +Roll +Pitch +Yaw +AccelZ + +0:Roll,1:Pitch,2:Yaw,3:AccelZ + + +cm +centimeters +200 8000 +1 + + +0.5 10.0 +.1 + +Disabled +Shallow +Steep + + + +cm/s +centimeters per second +0 2000 +50 + + +cm +centimeters +-1 1000 +1 + + +cm +centimeters +0 3000 +10 + + +ms +milliseconds +0 60000 +1000 + + +0.01 2.0 +0.01 + + + +Disabled/NoAction +RTL +RTL or Continue with Mission in Auto Mode (Deprecated in 4.0+-see FS_OPTIONS) +SmartRTL or RTL +SmartRTL or Land +Land (4.0+ Only) + + + +100 900 + + + +Disabled +Mode1 +Mode2 +Mode1+2 +Mode3 +Mode1+3 +Mode2+3 +Mode1+2+3 +Mode4 +Mode1+4 +Mode2+4 +Mode1+2+4 +Mode3+4 +Mode1+3+4 +Mode2+3+4 +Mode1+2+3+4 +Mode5 +Mode1+5 +Mode2+5 +Mode1+2+5 +Mode3+5 +Mode1+3+5 +Mode2+3+5 +Mode1+2+3+5 +Mode4+5 +Mode1+4+5 +Mode2+4+5 +Mode1+2+4+5 +Mode3+4+5 +Mode1+3+4+5 +Mode2+3+4+5 +Mode1+2+3+4+5 +Mode6 +Mode1+6 +Mode2+6 +Mode1+2+6 +Mode3+6 +Mode1+3+6 +Mode2+3+6 +Mode1+2+3+6 +Mode4+6 +Mode1+4+6 +Mode2+4+6 +Mode1+2+4+6 +Mode3+4+6 +Mode1+3+4+6 +Mode2+3+4+6 +Mode1+2+3+4+6 +Mode5+6 +Mode1+5+6 +Mode2+5+6 +Mode1+2+5+6 +Mode3+5+6 +Mode1+3+5+6 +Mode2+3+5+6 +Mode1+2+3+5+6 +Mode4+5+6 +Mode1+4+5+6 +Mode2+4+5+6 +Mode1+2+4+5+6 +Mode3+4+5+6 +Mode1+3+4+5+6 +Mode2+3+4+5+6 +Mode1+2+3+4+5+6 + + + + +Never change yaw +Face next waypoint +Face next waypoint except RTL +Face along GPS course + + + +cm/s +centimeters per second +30 200 +10 + + +cm/s +centimeters per second +0 500 +10 + + +cm/s +centimeters per second +50 500 +10 + + +cm/s/s +centimeters per square second +50 500 +10 + + + +Disabled +Enabled always RTL +Enabled Continue with Mission in Auto Mode (Deprecated in 4.0+) +Enabled always Land +Enabled always SmartRTL or RTL +Enabled always SmartRTL or Land + + + +910 1100 +PWM +PWM in microseconds +1 + + +0 300 +PWM +PWM in microseconds +1 + + + +Stabilize +Acro +AltHold +Auto +Guided +Loiter +RTL +Circle +Land +Drift +Sport +Flip +AutoTune +PosHold +Brake +Throw +Avoid_ADSB +Guided_NoGPS +Smart_RTL +FlowHold +Follow +ZigZag +SystemID +Heli_Autorotate + + + + +Stabilize +Acro +AltHold +Auto +Guided +Loiter +RTL +Circle +Land +Drift +Sport +Flip +AutoTune +PosHold +Brake +Throw +Avoid_ADSB +Guided_NoGPS +Smart_RTL +FlowHold +Follow +ZigZag +SystemID +Heli_Autorotate + + + + +Stabilize +Acro +AltHold +Auto +Guided +Loiter +RTL +Circle +Land +Drift +Sport +Flip +AutoTune +PosHold +Brake +Throw +Avoid_ADSB +Guided_NoGPS +Smart_RTL +FlowHold +Follow +ZigZag +SystemID +Heli_Autorotate + + + + +Stabilize +Acro +AltHold +Auto +Guided +Loiter +RTL +Circle +Land +Drift +Sport +Flip +AutoTune +PosHold +Brake +Throw +Avoid_ADSB +Guided_NoGPS +Smart_RTL +FlowHold +Follow +ZigZag +SystemID +Heli_Autorotate + + + + +Stabilize +Acro +AltHold +Auto +Guided +Loiter +RTL +Circle +Land +Drift +Sport +Flip +AutoTune +PosHold +Brake +Throw +Avoid_ADSB +Guided_NoGPS +Smart_RTL +FlowHold +Follow +ZigZag +SystemID +Heli_Autorotate + + + + +Stabilize +Acro +AltHold +Auto +Guided +Loiter +RTL +Circle +Land +Drift +Sport +Flip +AutoTune +PosHold +Brake +Throw +Avoid_ADSB +Guided_NoGPS +Smart_RTL +FlowHold +Follow +ZigZag +SystemID +Heli_Autorotate + + + + +Disabled +Channel5 +Channel6 +Channel7 +Channel8 + + + + + + +Default +Default+RCIN +Default+IMU +Default+Motors +NearlyAll-AC315 +NearlyAll +All+FastATT +All+MotBatt +All+FastIMU +All+FastIMU+PID +All+FullIMU +Disabled + +0:ATTITUDE_FAST,1:ATTITUDE_MED,2:GPS,3:PM,4:CTUN,5:NTUN,6:RCIN,7:IMU,8:CMD,9:CURRENT,10:RCOUT,11:OPTFLOW,12:PID,13:COMPASS,14:INAV,15:CAMERA,17:MOTBATT,18:IMU_FAST,19:IMU_RAW + + + +Normal Start-up +Start-up in ESC Calibration mode if throttle high +Start-up in ESC Calibration mode regardless of throttle +Start-up and automatically calibrate ESCs +Disabled + + + + +None +Stab Roll/Pitch kP +Rate Roll/Pitch kP +Rate Roll/Pitch kI +Rate Roll/Pitch kD +Stab Yaw kP +Rate Yaw kP +Rate Yaw kD +Rate Yaw Filter +Motor Yaw Headroom +AltHold kP +Throttle Rate kP +Throttle Accel kP +Throttle Accel kI +Throttle Accel kD +Loiter Pos kP +Velocity XY kP +Velocity XY kI +WP Speed +Acro RollPitch kP +Acro Yaw kP +RC Feel +Heli Ext Gyro +Declination +Circle Rate +RangeFinder Gain +Rate Pitch kP +Rate Pitch kI +Rate Pitch kD +Rate Roll kP +Rate Roll kI +Rate Roll kD +Rate Pitch FF +Rate Roll FF +Rate Yaw FF +Winch +SysID Magnitude + + + + +Plus +X +V +H +V-Tail +A-Tail +Y6B +Y6F +BetaFlightX +DJIX +ClockwiseX + I + BetaFlightXReversed + +True + + +s +seconds +0 127 + + +cdeg +centidegrees +1000 8000 + + +deg/s +degrees per second +4 12 + + +cdeg +centidegrees +2000 4500 + + + +No repositioning +Repositioning + + + + +Land +AltHold +Land even in Stabilize + + + +0.6:Strict, 0.8:Default, 1.0:Relaxed + + + +Disabled +Enabled + + + +Hz +hertz +50 490 +1 + + +1 10 + + +1 10 + + +0 3 +0.1 + + +0 3 +0.1 + + + +Disabled +Leveling +Leveling and Limited + + + + +Disabled +Very Low +Low +Medium +High +Very High + +-0.5 1.0 + + + +Stopped +Running + + + + +Do Not Use in RTL and Land +Use in RTL and Land + + + +0 5 + + + +Auto +Guided +LOITER +RTL +Land +Brake +Throw + + + + +Upward Throw +Drop + + + + +Disabled +Enabled + + + +0:ADSBMavlinkProcessing,1:DevOptionVFR_HUDRelativeAlt + + + +Disabled +Very Low +Low +Medium +High +Very High + +-0.5 1.0 + + +0 1 + + + +NotEnforced +Enforced + + + + +Undefined +Quad +Hexa +Octa +OctaQuad +Y6 +Heli +Tri +SingleCopter +CoaxCopter +BiCopter +Heli_Dual +DodecaHexa +HeliQuad + +True + + +cm/s +centimeters per second +50 500 +10 + + +cm +centimeters +100 10000 +10 + + + + + + + +Disabled +Enabled + + + + +Disabled +Continue if in Auto on RC failsafe only +Continue if in Auto on GCS failsafe only +Continue if in Auto on RC and/or GCS failsafe +Continue if in Guided on RC failsafe only +Continue if landing on any failsafe +Continue if in pilot controlled modes on GCS failsafe +Continue if in Auto on RC and/or GCS failsafe and continue if in pilot controlled modes on GCS failsafe + +0:Continue if in Auto on RC failsafe, 1:Continue if in Auto on GCS failsafe, 2:Continue if in Guided on RC failsafe, 3:Continue if landing on any failsafe, 4:Continue if in pilot controlled modes on GCS failsafe + + + +Do Nothing +Flip +Simple Mode +RTL +Save Trim +Save WP +Camera Trigger +RangeFinder +Fence +Super Simple Mode +Acro Trainer +Sprayer +Auto +AutoTune +Land +Gripper +Parachute Enable +Parachute Release +Parachute 3pos +Auto Mission Reset +AttCon Feed Forward +AttCon Accel Limits +Retract Mount +Relay On/Off +Relay2 On/Off +Relay3 On/Off +Relay4 On/Off +Landing Gear +Lost Copter Sound +Motor Emergency Stop +Motor Interlock +Brake +Throw +ADSB-Avoidance +PrecLoiter +Object Avoidance +ArmDisarm +SmartRTL +InvertedFlight +Winch Enable +WinchControl + + + + +Do Nothing +Flip +Simple Mode +RTL +Save Trim +Save WP +Camera Trigger +RangeFinder +Fence +Super Simple Mode +Acro Trainer +Sprayer +Auto +AutoTune +Land +Gripper +Parachute Enable +Parachute Release +Parachute 3pos +Auto Mission Reset +AttCon Feed Forward +AttCon Accel Limits +Retract Mount +Relay On/Off +Relay2 On/Off +Relay3 On/Off +Relay4 On/Off +Landing Gear +Lost Copter Sound +Motor Emergency Stop +Motor Interlock +Brake +Throw +ADSB-Avoidance +PrecLoiter +Object Avoidance +ArmDisarm +SmartRTL +InvertedFlight +Winch Enable +WinchControl + + + + +Do Nothing +Flip +Simple Mode +RTL +Save Trim +Save WP +Camera Trigger +RangeFinder +Fence +Super Simple Mode +Acro Trainer +Sprayer +Auto +AutoTune +Land +Gripper +Parachute Enable +Parachute Release +Parachute 3pos +Auto Mission Reset +AttCon Feed Forward +AttCon Accel Limits +Retract Mount +Relay On/Off +Relay2 On/Off +Relay3 On/Off +Relay4 On/Off +Landing Gear +Lost Copter Sound +Motor Emergency Stop +Motor Interlock +Brake +Throw +ADSB-Avoidance +PrecLoiter +Object Avoidance +ArmDisarm +SmartRTL +InvertedFlight +Winch Enable +WinchControl + + + + +Do Nothing +Flip +Simple Mode +RTL +Save Trim +Save WP +Camera Trigger +RangeFinder +Fence +Super Simple Mode +Acro Trainer +Sprayer +Auto +AutoTune +Land +Gripper +Parachute Enable +Parachute Release +Parachute 3pos +Auto Mission Reset +AttCon Feed Forward +AttCon Accel Limits +Retract Mount +Relay On/Off +Relay2 On/Off +Relay3 On/Off +Relay4 On/Off +Landing Gear +Lost Copter Sound +Motor Emergency Stop +Motor Interlock +Brake +Throw +ADSB-Avoidance +PrecLoiter +Object Avoidance +ArmDisarm +SmartRTL +InvertedFlight +Winch Enable +WinchControl + + + + +Do Nothing +Flip +Simple Mode +RTL +Save Trim +Save WP +Camera Trigger +RangeFinder +Fence +Super Simple Mode +Acro Trainer +Sprayer +Auto +AutoTune +Land +Gripper +Parachute Enable +Parachute Release +Parachute 3pos +Auto Mission Reset +AttCon Feed Forward +AttCon Accel Limits +Retract Mount +Relay On/Off +Relay2 On/Off +Relay3 On/Off +Relay4 On/Off +Landing Gear +Lost Copter Sound +Motor Emergency Stop +Motor Interlock +Brake +Throw +ADSB-Avoidance +PrecLoiter +Object Avoidance +ArmDisarm +SmartRTL +InvertedFlight +Winch Enable +WinchControl + + + + +Do Nothing +Flip +Simple Mode +RTL +Save Trim +Save WP +Camera Trigger +RangeFinder +Fence +Super Simple Mode +Acro Trainer +Sprayer +Auto +AutoTune +Land +Gripper +Parachute Enable +Parachute Release +Parachute 3pos +Auto Mission Reset +AttCon Feed Forward +AttCon Accel Limits +Retract Mount +Relay On/Off +Relay2 On/Off +Relay3 On/Off +Relay4 On/Off +Landing Gear +Lost Copter Sound +Motor Emergency Stop +Motor Interlock +Brake +Throw +ADSB-Avoidance +PrecLoiter +Object Avoidance +ArmDisarm +SmartRTL +InvertedFlight +Winch Enable +WinchControl + + + +0 32767 + + +0 32767 + + + + + +Disabled +Enabled + + + +1 100 + + +0 100000 +m +meters + + +-1 16777215 + + + +NoInfo +Light +Small +Large +HighVortexlarge +Heavy +HighlyManuv +Rotocraft +RESERVED +Glider +LightAir +Parachute +UltraLight +RESERVED +UAV +Space +RESERVED +EmergencySurface +ServiceSurface +PointObstacle + + + + +NO_DATA +L15W23 +L25W28P5 +L25W34 +L35W33 +L35W38 +L45W39P5 +L45W45 +L55W45 +L55W52 +L65W59P5 +L65W67 +L75W72P5 +L75W80 +L85W80 +L85W90 + + + + +NoData +Left2m +Left4m +Left6m +Center +Right2m +Right4m +Right6m + + + + +NO_DATA +AppliedBySensor + + + + +Disabled +Rx-Only +Tx-Only +Rx and Tx Enabled + + + +0 7777 +octal +octal + + + +Unknown +Rx UAT only +Rx UAT and 1090ES +Rx&Tx UAT and 1090ES + +0:UAT_in,1:1090ES_in,2:UAT_out,3:1090ES_out + + +0 32767 +m +meters + + + + + +no logging +log only special ID +log all + + + + + + + + + + +Disabled +BB Blue GP0 pin 4 +AUXOUT1 +AUXOUT2 +AUXOUT3 +AUXOUT4 +AUXOUT5 +AUXOUT6 +BB Blue GP0 pin 3 +BB Blue GP0 pin 6 +BB Blue GP0 pin 5 + + + + + + + + + + + + +Disabled +BB Blue GP0 pin 4 +AUXOUT1 +AUXOUT2 +AUXOUT3 +AUXOUT4 +AUXOUT5 +AUXOUT6 +BB Blue GP0 pin 3 +BB Blue GP0 pin 6 +BB Blue GP0 pin 5 + + + +m +meters + + +m +meters + + +mbar +millibar + + + + + + + + + + + + + + +s +seconds + + +km +kilometers + + + + +0.0 1.0 +.01 + + + +Disabled +Enabled + + + +0.1 0.4 +.01 + + +0.1 0.4 +.01 + + +0 127 +m/s +meters per second +1 + + +rad +radians +-0.1745 +0.1745 +0.01 + + +rad +radians +-0.1745 +0.1745 +0.01 + + +rad +radians +-0.1745 +0.1745 +0.01 + + + +None +Yaw45 +Yaw90 +Yaw135 +Yaw180 +Yaw225 +Yaw270 +Yaw315 +Roll180 +Roll180Yaw45 +Roll180Yaw90 +Roll180Yaw135 +Pitch180 +Roll180Yaw225 +Roll180Yaw270 +Roll180Yaw315 +Roll90 +Roll90Yaw45 +Roll90Yaw90 +Roll90Yaw135 +Roll270 +Roll270Yaw45 +Roll270Yaw90 +Roll270Yaw135 +Pitch90 +Pitch270 +Pitch180Yaw90 +Pitch180Yaw270 +Roll90Pitch90 +Roll180Pitch90 +Roll270Pitch90 +Roll90Pitch180 +Roll270Pitch180 +Roll90Pitch270 +Roll180Pitch270 +Roll270Pitch270 +Roll90Pitch180Yaw90 +Roll90Yaw270 +Yaw293Pitch68Roll180 +Pitch315 +Roll90Pitch315 +Custom + + + +0.001 0.5 +.01 + + +0 10 +1 + + + +Disabled +Enable EKF2 +Enable EKF3 + + + +-180 180 +deg +degrees +1 + + +-180 180 +deg +degrees +1 + + +-180 180 +deg +degrees +1 + + + + + +Disabled +THR_MIN PWM when disarmed +0 PWM when disarmed + + + +m/s/s +meters per square second +0.25 3.0 + + + +Disabled +ArmingOnly +ArmOrDisarm + + + +0:Land,1:VTOL Land,2:DO_LAND_START,3:Takeoff,4:VTOL Takeoff,5:Rallypoint + + + +None +All +Barometer +Compass +GPS Lock +INS(INertial Sensors - accels & gyros) +Parameters(unused) +RC Channels +Board voltage +Battery Level +Airspeed +LoggingAvailable +Hardware safety switch +GPS configuration +System +Mission +RangeFinder + +0:All,1:Barometer,2:Compass,3:GPS lock,4:INS,5:Parameters,6:RC Channels,7:Board voltage,8:Battery Level,9:Airspeed,10:Logging Available,11:Hardware safety switch,12:GPS Configuration,13:System,14:Mission,15:Rangefinder + + + + + +Disabled +Enabled + + + +0.3 1 +0.01 + + +RPM +Revolutions Per Minute +1000 2800 +1 + + +cm/s +centimeters per second +800 2000 +50 + + +Hz +hertz +0.2 0.5 +0.01 + + +Hz +hertz +0.03 0.15 +0.01 + + +cm/s/s +centimeters per square second +30 60 +10 + + +s +seconds +0.5 4 +0.1 + + +s +seconds +0.5 3 +0.1 + + +0.1 6.0 +0.1 + + +0 1 +0.01 + + + + +cdeg/s +centidegrees per second +500 18000 +100 + + +cdeg/s/s +centidegrees per square second +0 72000 + +Disabled +VerySlow +Slow +Medium +Fast + +1000 + + + +Disabled +Enabled + + + +cdeg/s/s +centidegrees per square second +0 180000 +1000 + +Disabled +VerySlow +Slow +Medium +Fast + + + +cdeg/s/s +centidegrees per square second +0 180000 +1000 + +Disabled +VerySlow +Slow +Medium +Fast + + + + +Disabled +Enabled + + + +0.0 12.000 + + +0.0 12.000 + + +0.0 6.000 + + +0.5 10.0 + + +deg/s +degrees per second +0 1080 +1 + +Disabled +Slow +Medium +Fast + + + +deg/s +degrees per second +0 1080 +1 + +Disabled +Slow +Medium +Fast + + + +deg/s +degrees per second +0 1080 +1 + +Disabled +Slow +Medium +Fast + + + +s +seconds +0 1 +0.01 +0.5:Very Soft, 0.2:Soft, 0.15:Medium, 0.1:Crisp, 0.05:Very Crisp + + +0.01 0.5 +0.005 + + +0.01 2.0 +0.01 + + +0 1 +0.01 +% +percent + + +0.0 0.05 +0.001 + + +0 0.5 +0.001 + + +5 100 +1 +Hz +hertz + + +0 100 +1 +Hz +hertz + + +5 100 +1 +Hz +hertz + + +0.01 0.50 +0.005 + + +0.01 2.0 +0.01 + + +0 1 +0.01 +% +percent + + +0.0 0.05 +0.001 + + +0 0.5 +0.001 + + +5 100 +1 +Hz +hertz + + +0 100 +1 +Hz +hertz + + +5 100 +1 +Hz +hertz + + +0.10 2.50 +0.005 + + +0.010 1.0 +0.01 + + +0 1 +0.01 +% +percent + + +0.000 0.02 +0.001 + + +0 0.5 +0.001 + + +1 50 +1 +Hz +hertz + + +0 20 +1 +Hz +hertz + + +5 50 +1 +Hz +hertz + + +0.1 0.25 + + +0.5 0.9 + + +0.1 0.9 + + +1 100 +1 +Hz +hertz + + +1 100 +1 +Hz +hertz + + +1 10 +1 +Hz +hertz + + +cdeg +centidegrees +0 1000 + + +0.08 0.35 +0.005 + + +0.01 0.6 +0.01 + + +0 1 +0.01 + + +0 1 + + +0.001 0.03 +0.001 + + +0 0.5 +0.001 + + +5 50 +1 +Hz +hertz + + +5 50 +1 +Hz +hertz + + +0 50 +1 +Hz +hertz + + +0.08 0.35 +0.005 + + +0.01 0.6 +0.01 + + +0 1 +0.01 + + +0 1 + + +0.001 0.03 +0.001 + + +0 0.5 +0.001 + + +5 50 +1 +Hz +hertz + + +5 50 +1 +Hz +hertz + + +0 50 +1 +Hz +hertz + + +0.180 0.60 +0.005 + + +0.01 0.06 +0.01 + + +0 1 +0.01 + + +0 1 + + +0.000 0.02 +0.001 + + +0 0.5 +0.001 + + +5 50 +1 +Hz +hertz + + +5 50 +1 +Hz +hertz + + +0 50 +1 +Hz +hertz + + + +Disabled +Enabled + + + + + + +All +Roll Only +Pitch Only +Yaw Only +Roll and Pitch +Roll and Yaw +Pitch and Yaw + +0:Roll,1:Pitch,2:Yaw + + +0.05 0.10 + + +0.001 0.006 + + + + + +Disabled +Enabled + + + + +Remain in AVOID_ADSB +Resume previous flight mode +RTL +Resume if AUTO else Loiter + + + + + +s +seconds + + +s +seconds + + +m +meters + + +m +meters + + +m +meters + + +m +meters + + +m +meters + + + + + +None +UseFence +UseProximitySensor +UseFence and UseProximitySensor +UseBeaconFence +All + +0:UseFence,1:UseProximitySensor,2:UseBeaconFence + + +cdeg +centidegrees +0 4500 + + +m +meters +1 30 + + +m +meters +1 10 + + + +Slide +Stop + + + + + + +Disabled +Analog Voltage Only +Analog Voltage and Current +Solo +Bebop +SMBus-Maxell +UAVCAN-BatteryInfo +BLHeli ESC +SumOfFollowing +FuelFlow +FuelLevelPWM +SMBUS-SUI3 +SMBUS-SUI6 +NeoDesign + +True + + + +Disabled +Pixhawk/Pixracer/Navio2/Pixhawk2_PM1 +Pixhawk2_PM2 +CubeOrange +CubeOrange_PM2 +Durandal +PX4-v1 + +True + + + +Disabled +Pixhawk/Pixracer/Navio2/Pixhawk2_PM1 +Pixhawk2_PM2 +CubeOrange +CubeOrange_PM2 +Durandal +PX4-v1 + +True + + + + +A/V +ampere per volt + + +V +volt + + +mAh +milliampere hour +50 + + +W +watt +1 + + + + +s +seconds +1 +0 120 + + + +Raw Voltage +Sag Compensated Voltage + + + +V +volt +0.1 + + +mAh +milliampere hour +50 + + +V +volt +0.1 + + +mAh +milliampere hour +50 + + + +None +Land +RTL +SmartRTL or RTL +SmartRTL or Land +Terminate + + + + +None +Land +RTL +SmartRTL or RTL +SmartRTL or Land +Terminate + + + +V +volt +0.1 + + +mAh +milliampere hour +50 + + +0 3 + + + + + +Disabled +Analog Voltage Only +Analog Voltage and Current +Solo +Bebop +SMBus-Maxell +UAVCAN-BatteryInfo +BLHeli ESC +SumOfFollowing +FuelFlow +FuelLevelPWM +SMBUS-SUI3 +SMBUS-SUI6 +NeoDesign + +True + + + +Disabled +Pixhawk/Pixracer/Navio2/Pixhawk2_PM1 +Pixhawk2_PM2 +CubeOrange +CubeOrange_PM2 +Durandal +PX4-v1 + +True + + + +Disabled +Pixhawk/Pixracer/Navio2/Pixhawk2_PM1 +Pixhawk2_PM2 +CubeOrange +CubeOrange_PM2 +Durandal +PX4-v1 + +True + + + + +A/V +ampere per volt + + +V +volt + + +mAh +milliampere hour +50 + + +W +watt +1 + + + + +s +seconds +1 +0 120 + + + +Raw Voltage +Sag Compensated Voltage + + + +V +volt +0.1 + + +mAh +milliampere hour +50 + + +V +volt +0.1 + + +mAh +milliampere hour +50 + + + +None +Land +RTL +SmartRTL or RTL +SmartRTL or Land +Terminate + + + + +None +Land +RTL +SmartRTL or RTL +SmartRTL or Land +Terminate + + + +V +volt +0.1 + + +mAh +milliampere hour +50 + + +0 3 + + + + + +Disabled +Analog Voltage Only +Analog Voltage and Current +Solo +Bebop +SMBus-Maxell +UAVCAN-BatteryInfo +BLHeli ESC +SumOfFollowing +FuelFlow +FuelLevelPWM +SMBUS-SUI3 +SMBUS-SUI6 +NeoDesign + +True + + + +Disabled +Pixhawk/Pixracer/Navio2/Pixhawk2_PM1 +Pixhawk2_PM2 +CubeOrange +CubeOrange_PM2 +Durandal +PX4-v1 + +True + + + +Disabled +Pixhawk/Pixracer/Navio2/Pixhawk2_PM1 +Pixhawk2_PM2 +CubeOrange +CubeOrange_PM2 +Durandal +PX4-v1 + +True + + + + +A/V +ampere per volt + + +V +volt + + +mAh +milliampere hour +50 + + +W +watt +1 + + + + +s +seconds +1 +0 120 + + + +Raw Voltage +Sag Compensated Voltage + + + +V +volt +0.1 + + +mAh +milliampere hour +50 + + +V +volt +0.1 + + +mAh +milliampere hour +50 + + + +None +Land +RTL +SmartRTL or RTL +SmartRTL or Land +Terminate + + + + +None +Land +RTL +SmartRTL or RTL +SmartRTL or Land +Terminate + + + +V +volt +0.1 + + +mAh +milliampere hour +50 + + +0 3 + + + + + +Disabled +Analog Voltage Only +Analog Voltage and Current +Solo +Bebop +SMBus-Maxell +UAVCAN-BatteryInfo +BLHeli ESC +SumOfFollowing +FuelFlow +FuelLevelPWM +SMBUS-SUI3 +SMBUS-SUI6 +NeoDesign + +True + + + +Disabled +Pixhawk/Pixracer/Navio2/Pixhawk2_PM1 +Pixhawk2_PM2 +CubeOrange +CubeOrange_PM2 +Durandal +PX4-v1 + +True + + + +Disabled +Pixhawk/Pixracer/Navio2/Pixhawk2_PM1 +Pixhawk2_PM2 +CubeOrange +CubeOrange_PM2 +Durandal +PX4-v1 + +True + + + + +A/V +ampere per volt + + +V +volt + + +mAh +milliampere hour +50 + + +W +watt +1 + + + + +s +seconds +1 +0 120 + + + +Raw Voltage +Sag Compensated Voltage + + + +V +volt +0.1 + + +mAh +milliampere hour +50 + + +V +volt +0.1 + + +mAh +milliampere hour +50 + + + +None +Land +RTL +SmartRTL or RTL +SmartRTL or Land +Terminate + + + + +None +Land +RTL +SmartRTL or RTL +SmartRTL or Land +Terminate + + + +V +volt +0.1 + + +mAh +milliampere hour +50 + + +0 3 + + + + + +Disabled +Analog Voltage Only +Analog Voltage and Current +Solo +Bebop +SMBus-Maxell +UAVCAN-BatteryInfo +BLHeli ESC +SumOfFollowing +FuelFlow +FuelLevelPWM +SMBUS-SUI3 +SMBUS-SUI6 +NeoDesign + +True + + + +Disabled +Pixhawk/Pixracer/Navio2/Pixhawk2_PM1 +Pixhawk2_PM2 +CubeOrange +CubeOrange_PM2 +Durandal +PX4-v1 + +True + + + +Disabled +Pixhawk/Pixracer/Navio2/Pixhawk2_PM1 +Pixhawk2_PM2 +CubeOrange +CubeOrange_PM2 +Durandal +PX4-v1 + +True + + + + +A/V +ampere per volt + + +V +volt + + +mAh +milliampere hour +50 + + +W +watt +1 + + + + +s +seconds +1 +0 120 + + + +Raw Voltage +Sag Compensated Voltage + + + +V +volt +0.1 + + +mAh +milliampere hour +50 + + +V +volt +0.1 + + +mAh +milliampere hour +50 + + + +None +Land +RTL +SmartRTL or RTL +SmartRTL or Land +Terminate + + + + +None +Land +RTL +SmartRTL or RTL +SmartRTL or Land +Terminate + + + +V +volt +0.1 + + +mAh +milliampere hour +50 + + +0 3 + + + + + +Disabled +Analog Voltage Only +Analog Voltage and Current +Solo +Bebop +SMBus-Maxell +UAVCAN-BatteryInfo +BLHeli ESC +SumOfFollowing +FuelFlow +FuelLevelPWM +SMBUS-SUI3 +SMBUS-SUI6 +NeoDesign + +True + + + +Disabled +Pixhawk/Pixracer/Navio2/Pixhawk2_PM1 +Pixhawk2_PM2 +CubeOrange +CubeOrange_PM2 +Durandal +PX4-v1 + +True + + + +Disabled +Pixhawk/Pixracer/Navio2/Pixhawk2_PM1 +Pixhawk2_PM2 +CubeOrange +CubeOrange_PM2 +Durandal +PX4-v1 + +True + + + + +A/V +ampere per volt + + +V +volt + + +mAh +milliampere hour +50 + + +W +watt +1 + + + + +s +seconds +1 +0 120 + + + +Raw Voltage +Sag Compensated Voltage + + + +V +volt +0.1 + + +mAh +milliampere hour +50 + + +V +volt +0.1 + + +mAh +milliampere hour +50 + + + +None +Land +RTL +SmartRTL or RTL +SmartRTL or Land +Terminate + + + + +None +Land +RTL +SmartRTL or RTL +SmartRTL or Land +Terminate + + + +V +volt +0.1 + + +mAh +milliampere hour +50 + + +0 3 + + + + + +Disabled +Analog Voltage Only +Analog Voltage and Current +Solo +Bebop +SMBus-Maxell +UAVCAN-BatteryInfo +BLHeli ESC +SumOfFollowing +FuelFlow +FuelLevelPWM +SMBUS-SUI3 +SMBUS-SUI6 +NeoDesign + +True + + + +Disabled +Pixhawk/Pixracer/Navio2/Pixhawk2_PM1 +Pixhawk2_PM2 +CubeOrange +CubeOrange_PM2 +Durandal +PX4-v1 + +True + + + +Disabled +Pixhawk/Pixracer/Navio2/Pixhawk2_PM1 +Pixhawk2_PM2 +CubeOrange +CubeOrange_PM2 +Durandal +PX4-v1 + +True + + + + +A/V +ampere per volt + + +V +volt + + +mAh +milliampere hour +50 + + +W +watt +1 + + + + +s +seconds +1 +0 120 + + + +Raw Voltage +Sag Compensated Voltage + + + +V +volt +0.1 + + +mAh +milliampere hour +50 + + +V +volt +0.1 + + +mAh +milliampere hour +50 + + + +None +Land +RTL +SmartRTL or RTL +SmartRTL or Land +Terminate + + + + +None +Land +RTL +SmartRTL or RTL +SmartRTL or Land +Terminate + + + +V +volt +0.1 + + +mAh +milliampere hour +50 + + +0 3 + + + + + +Disabled +Analog Voltage Only +Analog Voltage and Current +Solo +Bebop +SMBus-Maxell +UAVCAN-BatteryInfo +BLHeli ESC +SumOfFollowing +FuelFlow +FuelLevelPWM +SMBUS-SUI3 +SMBUS-SUI6 +NeoDesign + +True + + + +Disabled +Pixhawk/Pixracer/Navio2/Pixhawk2_PM1 +Pixhawk2_PM2 +CubeOrange +CubeOrange_PM2 +Durandal +PX4-v1 + +True + + + +Disabled +Pixhawk/Pixracer/Navio2/Pixhawk2_PM1 +Pixhawk2_PM2 +CubeOrange +CubeOrange_PM2 +Durandal +PX4-v1 + +True + + + + +A/V +ampere per volt + + +V +volt + + +mAh +milliampere hour +50 + + +W +watt +1 + + + + +s +seconds +1 +0 120 + + + +Raw Voltage +Sag Compensated Voltage + + + +V +volt +0.1 + + +mAh +milliampere hour +50 + + +V +volt +0.1 + + +mAh +milliampere hour +50 + + + +None +Land +RTL +SmartRTL or RTL +SmartRTL or Land +Terminate + + + + +None +Land +RTL +SmartRTL or RTL +SmartRTL or Land +Terminate + + + +V +volt +0.1 + + +mAh +milliampere hour +50 + + +0 3 + + + + + +Disabled +Analog Voltage Only +Analog Voltage and Current +Solo +Bebop +SMBus-Maxell +UAVCAN-BatteryInfo +BLHeli ESC +SumOfFollowing +FuelFlow +FuelLevelPWM +SMBUS-SUI3 +SMBUS-SUI6 +NeoDesign + +True + + + +Disabled +Pixhawk/Pixracer/Navio2/Pixhawk2_PM1 +Pixhawk2_PM2 +CubeOrange +CubeOrange_PM2 +Durandal +PX4-v1 + +True + + + +Disabled +Pixhawk/Pixracer/Navio2/Pixhawk2_PM1 +Pixhawk2_PM2 +CubeOrange +CubeOrange_PM2 +Durandal +PX4-v1 + +True + + + + +A/V +ampere per volt + + +V +volt + + +mAh +milliampere hour +50 + + +W +watt +1 + + + + +s +seconds +1 +0 120 + + + +Raw Voltage +Sag Compensated Voltage + + + +V +volt +0.1 + + +mAh +milliampere hour +50 + + +V +volt +0.1 + + +mAh +milliampere hour +50 + + + +None +Land +RTL +SmartRTL or RTL +SmartRTL or Land +Terminate + + + + +None +Land +RTL +SmartRTL or RTL +SmartRTL or Land +Terminate + + + +V +volt +0.1 + + +mAh +milliampere hour +50 + + +0 3 + + + + + +None +Pozyx +Marvelmind +SITL + + + +deg +degrees +0.000001 +-90 90 + + +deg +degrees +0.000001 +-180 180 + + +m +meters +1 +0 10000 + + +deg +degrees +1 +-180 +180 + + + + + +No PWMs +One PWMs +Two PWMs +Three PWMs +Four PWMs +Five PWMs +Six PWMs +Seven PWMs +Eight PWMs + +True + + + +Disabled +Enabled +Auto + +True + + + +Disabled +Enabled +Auto + +True + + + +Disabled +Enabled + +True + + + +Disabled +50Hz +75Hz +100Hz +150Hz +200Hz +250Hz +300Hz + +True + + +-32768 32767 + + + +Disabled +Enabled + +0:Ch1,1:Ch2,2:Ch3,3:Ch4,4:Ch5,5:Ch6,6:Ch7,7:Ch8,8:Ch9,9:Ch10,10:Ch11,11:Ch12,12:Ch13,13:Ch14 +True + + +-1 80 +degC +degrees Celsius + + + +AUTO +PX4V1 +Pixhawk +Cube/Pixhawk2 +Pixracer +PixhawkMini +Pixhawk2Slim +VRBrain 5.1 +VRBrain 5.2 +VR Micro Brain 5.1 +VR Micro Brain 5.2 +VRBrain Core 1.0 +VRBrain 5.4 +Intel Aero FC +AUAV2.1 + +True + + + +Disabled +Enabled + +True + + +0:ActiveForSafetyEnable,1:ActiveForSafetyDisable,2:ActiveWhenArmed,3:Force safety on when the aircraft disarms + + +V +volt +4.0 5.5 +0.1 + + +V +volt +3.3 12.0 +0.1 + + +0 32 +1 + + + +3.3V +5V + + + +0:Enable hardware watchdog + + +0 10000 +ms +milliseconds + + +1 500 +1 + + +0 1 +0.1 + + +0 100 +1 + + +0 10 +1 +True + + + + + +None +CYRF6936 +CC2500 +BK2425 + + + + +Auto +DSM2 +DSMX + + + +0 4 + + + +NotDisabled +Disabled + + + +0 16 + + +0 16 + + + +Disabled +Enabled + + + +1 8 + + + +Disabled +MinChannel +MidChannel +MaxChannel +MinChannelCW +MidChannelCW +MaxChannelCW + + + + +Mode1 +Mode2 + + + + +Disabled +TestChan1 +TestChan2 +TestChan3 +TestChan4 +TestChan5 +TestChan6 +TestChan7 +TestChan8 + + + +0 16 + + +0 16 + + +1 8 + + +0 40 + + +0 120 + + +0 31 + + + + +0:GPS,1:MAVLINK_SYSTEM_TIME,2:HW + + +-720 +840 + + + + + +Disabled +Enabled + + + + +Disabled +AUXOUT1 +AUXOUT2 +AUXOUT3 +AUXOUT4 +AUXOUT5 +AUXOUT6 + + + + +Disabled +AUXOUT1 +AUXOUT2 +AUXOUT3 +AUXOUT4 +AUXOUT5 +AUXOUT6 + + + + +Disabled +AUXOUT1 +AUXOUT2 +AUXOUT3 +AUXOUT4 +AUXOUT5 +AUXOUT6 + + + + +Disabled +AUXOUT1 +AUXOUT2 +AUXOUT3 +AUXOUT4 +AUXOUT5 +AUXOUT6 + + + +0 3600 + + + + + +Servo +Relay +GoPro in Solo Gimbal + + + +ds +deciseconds +0 50 + + +PWM +PWM in microseconds +1000 2000 + + +PWM +PWM in microseconds +1000 2000 + + +m +meters +0 1000 + + + +Low +High + + + +ms +milliseconds +0 10000 + + +deg +degrees +0 180 + + + +Disabled +AUX1 +AUX2 +AUX3 +AUX4 +AUX5 +AUX6 + +True + + + +TriggerLow +TriggerHigh + + + + +Always +Only when in AUTO + + + + +Default +BMMCC + + + + + + +Disabled +UAVCAN +KDECAN +ToshibaCAN + +True + + + + + + + + +1 250 + + +0: Servo 1, 1: Servo 2, 2: Servo 3, 3: Servo 4, 4: Servo 5, 5: Servo 6, 6: Servo 7, 7: Servo 8, 8: Servo 9, 9: Servo 10, 10: Servo 11, 11: Servo 12, 12: Servo 13, 13: Servo 14, 14: Servo 15 + + +0: ESC 1, 1: ESC 2, 2: ESC 3, 3: ESC 4, 4: ESC 5, 5: ESC 6, 6: ESC 7, 7: ESC 8, 8: ESC 9, 9: ESC 10, 10: ESC 11, 11: ESC 12, 12: ESC 13, 13: ESC 14, 14: ESC 15, 15: ESC 16 + + +1 200 +Hz +hertz + + + + + +Disabled +UAVCAN +KDECAN +ToshibaCAN + +True + + + + + + + + +1 250 + + +0: Servo 1, 1: Servo 2, 2: Servo 3, 3: Servo 4, 4: Servo 5, 5: Servo 6, 6: Servo 7, 7: Servo 8, 8: Servo 9, 9: Servo 10, 10: Servo 11, 11: Servo 12, 12: Servo 13, 13: Servo 14, 14: Servo 15 + + +0: ESC 1, 1: ESC 2, 2: ESC 3, 3: ESC 4, 4: ESC 5, 5: ESC 6, 6: ESC 7, 7: ESC 8, 8: ESC 9, 9: ESC 10, 10: ESC 11, 11: ESC 12, 12: ESC 13, 13: ESC 14, 14: ESC 15, 15: ESC 16 + + +1 200 +Hz +hertz + + + + + +Disabled +UAVCAN +KDECAN +ToshibaCAN + +True + + + + + + + + +1 250 + + +0: Servo 1, 1: Servo 2, 2: Servo 3, 3: Servo 4, 4: Servo 5, 5: Servo 6, 6: Servo 7, 7: Servo 8, 8: Servo 9, 9: Servo 10, 10: Servo 11, 11: Servo 12, 12: Servo 13, 13: Servo 14, 14: Servo 15 + + +0: ESC 1, 1: ESC 2, 2: ESC 3, 3: ESC 4, 4: ESC 5, 5: ESC 6, 6: ESC 7, 7: ESC 8, 8: ESC 9, 9: ESC 10, 10: ESC 11, 11: ESC 12, 12: ESC 13, 13: ESC 14, 14: ESC 15, 15: ESC 16 + + +1 200 +Hz +hertz + + + + + +Disabled +First driver +Second driver + +True + + +10000 1000000 + + + +Disabled +Major messages +All messages + + + + + + +Disabled +First driver +Second driver + +True + + +10000 1000000 + + + +Disabled +Major messages +All messages + + + + + + +Disabled +First driver +Second driver + +True + + +10000 1000000 + + + +Disabled +Major messages +All messages + + + + + + +Disabled +First driver +Second driver + +True + + + +Disabled +Serial0 +Serial1 +Serial2 +Serial3 +Serial4 +Serial5 +Serial6 + + + +0 32767 + + + + + +Disabled +Enabled + + + + +First Relay +Second Relay +Third Relay +Fourth Relay +Servo + + + +1000 2000 +PWM +PWM in microseconds +1 + + +1000 2000 +PWM +PWM in microseconds +1 + + +0 32000 +m +meters +1 + + +0 5000 +ms +milliseconds +1 + + +0 15 +m/s +meters per second +1 + + + + +cm +centimeters +0 200000 +100 + + +deg/s +degrees per second +-90 90 +1 + + + +Disable +Enable + + + + + +-400 400 +mGauss +milligauss +1 +1 + + +-400 400 +mGauss +milligauss +1 +1 + + +-400 400 +mGauss +milligauss +1 + + +-3.142 3.142 +rad +radians +0.01 + + + +Disabled +Internal-Learning +EKF-Learning +InFlight-Learning + + + + +Disabled +Enabled + + + + +Disabled +Enabled + + + + +Disabled +Use Throttle +Use Current + +1 + + +-1000 1000 +mGauss/A +milligauss per ampere +1 +1 + + +-1000 1000 +mGauss/A +milligauss per ampere +1 +1 + + +-1000 1000 +mGauss/A +milligauss per ampere +1 + + + +None +Yaw45 +Yaw90 +Yaw135 +Yaw180 +Yaw225 +Yaw270 +Yaw315 +Roll180 +Roll180Yaw45 +Roll180Yaw90 +Roll180Yaw135 +Pitch180 +Roll180Yaw225 +Roll180Yaw270 +Roll180Yaw315 +Roll90 +Roll90Yaw45 +Roll90Yaw90 +Roll90Yaw135 +Roll270 +Roll270Yaw45 +Roll270Yaw90 +Roll270Yaw135 +Pitch90 +Pitch270 +Pitch180Yaw90 +Pitch180Yaw270 +Roll90Pitch90 +Roll180Pitch90 +Roll270Pitch90 +Roll90Pitch180 +Roll270Pitch180 +Roll90Pitch270 +Roll180Pitch270 +Roll270Pitch270 +Roll90Pitch180Yaw90 +Roll90Yaw270 +Yaw293Pitch68Roll180 +Pitch315 +Roll90Pitch315 +Custom + + + + +Internal +External +ForcedExternal + + + +-400 400 +mGauss +milligauss +1 +1 + + +-400 400 +mGauss +milligauss +1 +1 + + +-400 400 +mGauss +milligauss +1 + + +-1000 1000 +mGauss/A +milligauss per ampere +1 +1 + + +-1000 1000 +mGauss/A +milligauss per ampere +1 +1 + + +-1000 1000 +mGauss/A +milligauss per ampere +1 + + +-400 400 +mGauss +milligauss +1 +1 + + +-400 400 +mGauss +milligauss +1 +1 + + +-400 400 +mGauss +milligauss +1 + + +-1000 1000 +mGauss/A +milligauss per ampere +1 +1 + + +-1000 1000 +mGauss/A +milligauss per ampere +1 +1 + + +-1000 1000 +mGauss/A +milligauss per ampere +1 + + +True + + +True + + +True + + + +Disabled +Enabled + + + + +None +Yaw45 +Yaw90 +Yaw135 +Yaw180 +Yaw225 +Yaw270 +Yaw315 +Roll180 +Roll180Yaw45 +Roll180Yaw90 +Roll180Yaw135 +Pitch180 +Roll180Yaw225 +Roll180Yaw270 +Roll180Yaw315 +Roll90 +Roll90Yaw45 +Roll90Yaw90 +Roll90Yaw135 +Roll270 +Roll270Yaw45 +Roll270Yaw90 +Roll270Yaw135 +Pitch90 +Pitch270 +Pitch180Yaw90 +Pitch180Yaw270 +Roll90Pitch90 +Roll180Pitch90 +Roll270Pitch90 +Roll90Pitch180 +Roll270Pitch180 +Roll90Pitch270 +Roll180Pitch270 +Roll270Pitch270 +Roll90Pitch180Yaw90 +Roll90Yaw270 +Yaw293Pitch68Roll180 +Pitch315 +Roll90Pitch315 +Custom + + + + +Internal +External +ForcedExternal + + + + +Disabled +Enabled + + + + +None +Yaw45 +Yaw90 +Yaw135 +Yaw180 +Yaw225 +Yaw270 +Yaw315 +Roll180 +Roll180Yaw45 +Roll180Yaw90 +Roll180Yaw135 +Pitch180 +Roll180Yaw225 +Roll180Yaw270 +Roll180Yaw315 +Roll90 +Roll90Yaw45 +Roll90Yaw90 +Roll90Yaw135 +Roll270 +Roll270Yaw45 +Roll270Yaw90 +Roll270Yaw135 +Pitch90 +Pitch270 +Pitch180Yaw90 +Pitch180Yaw270 +Roll90Pitch90 +Roll180Pitch90 +Roll270Pitch90 +Roll90Pitch180 +Roll270Pitch180 +Roll90Pitch270 +Roll180Pitch270 +Roll270Pitch270 +Roll90Pitch180Yaw90 +Roll90Yaw270 +Yaw293Pitch68Roll180 +Pitch315 +Roll90Pitch315 +Custom + + + + +Internal +External +ForcedExternal + + + +1 + + +1 + + + + +1 + + +1 + + + + +1 + + +1 + + + + +1 + + +1 + + + + +1 + + +1 + + + + +1 + + +1 + + + + +4 32 + +Very Strict +Strict +Default +Relaxed + +0.1 + + +500 3000 +1 + + +0:HMC5883,1:LSM303D,2:AK8963,3:BMM150,4:LSM9DS1,5:LIS3MDL,6:AK09916,7:IST8310,8:ICM20948,9:MMC3416,11:UAVCAN,12:QMC5883,14:MAG3110,15:IST8308 + + +% +percent +0 100 +1 + + + +Disabled +CheckOnly +CheckAndFix + + + +True + + +True + + +True + + + +Disabled +Enabled + + + +0 1.3 + + +0 1.3 + + +0 1.3 + + +0:CalRequireGPS + + +True + + +True + + +True + + +True + + +True + + +-180 180 +deg +degrees +1 +True + + +-180 180 +deg +degrees +1 +True + + +-180 180 +deg +degrees +1 +True + + + + + +Disabled +Enabled + + + +0 2 +0.01 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Disabled +Enabled + +True + + + +GPS 3D Vel and 2D Pos +GPS 2D vel and 2D pos +GPS 2D pos +No GPS + + + +0.05 5.0 +0.05 +m/s +meters per second + + +0.05 5.0 +0.05 +m/s +meters per second + + +100 1000 +25 + + +0.1 10.0 +0.1 +m +meters + + +100 1000 +25 + + +10 100 +5 +m +meters + + + +Use Baro +Use Range Finder +Use GPS +Use Range Beacon + +True + + +0.1 10.0 +0.1 +m +meters + + +100 1000 +25 + + +0 250 +10 +ms +milliseconds +True + + +0.01 0.5 +0.01 +Gauss +gauss + + + +When flying +When manoeuvring +Never +After first climb yaw reset +Always + + + +100 1000 +25 + + +0.5 5.0 +0.1 +m/s +meters per second + + +100 1000 +25 + + +0.1 10.0 +0.1 +m +meters + + +100 1000 +25 + + +1.0 4.0 +0.1 +rad/s +radians per second + + +0.05 1.0 +0.05 +rad/s +radians per second + + +100 1000 +25 + + +0 127 +10 +ms +milliseconds +True + + +0.0001 0.1 +0.0001 +rad/s +radians per second + + +0.01 1.0 +0.01 +m/s/s +meters per square second + + +0.00001 0.001 +rad/s/s +radians per square second + + +0.000001 0.001 +Hz +hertz + + +0.00001 0.005 +m/s/s/s +meters per cubic second + + +0.01 1.0 +0.1 +m/s/s +meters per square second + + +0.0 1.0 +0.1 + + +0:NSats,1:HDoP,2:speed error,3:position error,4:yaw error,5:pos drift,6:vert speed,7:horiz speed + + +0:FirstIMU,1:SecondIMU,2:ThirdIMU,3:FourthIMU,4:FifthIMU,5:SixthIMU +True + + +50 200 +% +percent + + +0.5 50.0 +m +meters + + +0:FirstIMU,1:SecondIMU,2:ThirdIMU,3:FourthIMU,4:FifthIMU,5:SixthIMU +True + + +0.05 1.0 +0.05 +rad +radians + + +100 1000 +25 + + +10 50 +5 +cs +centiseconds + + +0.00001 0.01 +Gauss/s +gauss per second + + +0.00001 0.01 +Gauss/s +gauss per second + + +-1 70 +1 +% +percent + + +0 0.2 +0.01 + + +0.1 10.0 +0.1 +m +meters + + +100 1000 +25 + + +0 127 +10 +ms +milliseconds +True + + +2.0 6.0 +0.5 +m/s +meters per second + + +0:FirstEKF,1:SecondEKF,2:ThirdEKF,3:FourthEKF,4:FifthEKF,5:SixthEKF +True + + +0:Correct when using Baro height,1:Correct when using range finder height,2:Apply corrections to local position +True + + +0 127 +1 +ms +milliseconds +True + + + +None +Navigation +Terrain + +True + + +0 500 +mGauss +milligauss + + +0.1 30.0 +Hz +hertz +False + + + + + +Disabled +Enabled + +True + + + +GPS 3D Vel and 2D Pos +GPS 2D vel and 2D pos +GPS 2D pos +No GPS + + + +0.05 5.0 +0.05 +m/s +meters per second + + +0.05 5.0 +0.05 +m/s +meters per second + + +100 1000 +25 + + +0.1 10.0 +0.1 +m +meters + + +100 1000 +25 + + +10 100 +5 +m +meters + + + +Use Baro +Use Range Finder +Use GPS +Use Range Beacon + +True + + +0.1 10.0 +0.1 +m +meters + + +100 1000 +25 + + +0 250 +10 +True +ms +milliseconds + + +0.01 0.5 +0.01 +Gauss +gauss + + + +When flying +When manoeuvring +Never +After first climb yaw reset +Always +Use external yaw sensor + +True + + +100 1000 +25 + + +0.5 5.0 +0.1 +m/s +meters per second + + +100 1000 +25 + + +0.1 10.0 +0.1 +m +meters + + +100 1000 +25 + + +1.0 4.0 +0.1 +rad/s +radians per second + + +0.05 1.0 +0.05 +rad/s +radians per second + + +100 1000 +25 + + +0 250 +10 +True +ms +milliseconds + + +0.0001 0.1 +0.0001 +rad/s +radians per second + + +0.01 1.0 +0.01 +m/s/s +meters per square second + + +0.00001 0.001 +rad/s/s +radians per square second + + +0.00001 0.005 +m/s/s/s +meters per cubic second + + +0.01 1.0 +0.1 +m/s/s +meters per square second + + +0.0 1.0 +0.1 + + +0:NSats,1:HDoP,2:speed error,3:position error,4:yaw error,5:pos drift,6:vert speed,7:horiz speed + + +0:FirstIMU,1:SecondIMU,2:ThirdIMU,3:FourthIMU,4:FifthIMU,5:SixthIMU +True + + +50 200 +% +percent + + +0.5 50.0 +m +meters + + +0:FirstIMU,1:SecondIMU,2:ThirdIMU,3:FourthIMU,4:FifthIMU,5:SixthIMU +True + + +0.05 1.0 +0.05 +rad +radians + + +100 1000 +25 + + +10 50 +5 +cs +centiseconds + + +0.00001 0.01 +Gauss/s +gauss per second + + +0.00001 0.01 +Gauss/s +gauss per second + + +-1 70 +1 +% +percent + + +0 0.2 +0.01 + + +0.1 10.0 +0.1 +m +meters + + +100 1000 +25 + + +0 250 +10 +True +ms +milliseconds + + +2.0 6.0 +0.5 +m/s +meters per second + + +0.5 2.5 +0.1 +m/s/s +meters per square second + + +0:FirstEKF,1:SecondEKF,2:ThirdEKF,3:FourthEKF,4:FifthEKF,5:SixthEKF +True + + +0:Correct when using Baro height,1:Correct when using range finder height,2:Apply corrections to local position +True + + +0.05 0.5 +0.05 +m/s +meters per second + + +0.5 5.0 +0.1 +m/s +meters per second + + +0.01 1.0 +0.1 +m/s +meters per second + + + +None +Navigation +Terrain + +True + + +0.1 30.0 +Hz +hertz +False + + +0 500 +mGauss +milligauss + + + + + +Disabled +Enabled + + + + +None +Altitude +Circle +Altitude and Circle +Polygon +Altitude and Polygon +Circle and Polygon +All + +0:Altitude,1:Circle,2:Polygon + + + +Report Only +RTL or Land +Always Land +SmartRTL or RTL or Land +Brake or Land + + + +m +meters +10 1000 +1 + + +m +meters +30 10000 + + +m +meters +1 10 + + +1 20 + + +m +meters +-100 100 +1 + + + + +0.1 6.0 +0.1 + + +0.02 1.00 +0.01 + + +0 4500 +10 +cdeg +centidegrees + + +0 100 +Hz +hertz + + +0.1 2.5 + + +1 100 +Hz +hertz + + +0 255 + + +1 30 +deg/s +degrees per second + + + + + +None +PX4Flow +Pixart +Bebop +CXOF +MAVLink +UAVCAN + +True + + +-200 +200 +1 + + +-200 +200 +1 + + +-18000 +18000 +1 + + +m +meters +-10 10 + + +m +meters +-10 10 + + +m +meters +-10 10 + + +0 127 + + + +Disabled +Enabled + + + + + + +Disabled +Enabled + + + +0 255 + + +m +meters +1 1000 + + + +North-East-Down +Relative to lead vehicle heading + + + +-100 100 +m +meters +1 + + +-100 100 +m +meters +1 + + +-100 100 +m +meters +1 + + + +None +Face Lead Vehicle +Same as Lead vehicle +Direction of Flight + + + +0.01 1.00 +0.01 + + + +absolute + relative + + + + + +Pa +pascal +1 +True +True + + +degC +degrees Celsius +1 +True + + +m +meters +0.1 + + + +FirstBaro +2ndBaro +3rdBaro + + + + +Disabled +Bus0 +Bus1 + + + +1.0:Freshwater,1.024:Saltwater + + +Pa +pascal +1 +True +True + + +Pa +pascal +1 +True +True + + +% +percent +0 100 +1 + + +0:BMP085,1:BMP280,2:MS5611,3:MS5607,4:MS5637,5:FBM320,6:DPS280,7:LPS25H,8:Keller,9:MS5837,10:BMP388 + +BMP085 +BMP280 +MS5611 +MS5607 +MS5637 +FBM320 +DPS280 +LPS25H +Keller +MS5837 +BMP388 + + + + + + +None +AUTO +uBlox +MTK +MTK19 +NMEA +SiRF +HIL +SwiftNav +UAVCAN +SBF +GSOF +ERB +MAV +NOVA +HemisphereNMEA +uBlox-MovingBaseline-Base +uBlox-MovingBaseline-Rover + +True + + + +None +AUTO +uBlox +MTK +MTK19 +NMEA +SiRF +HIL +SwiftNav +UAVCAN +SBF +GSOF +ERB +MAV +NOVA +HemisphereNMEA +uBlox-MovingBaseline-Base +uBlox-MovingBaseline-Rover + +True + + + +Portable +Stationary +Pedestrian +Automotive +Sea +Airborne1G +Airborne2G +Airborne4G + + + + +Disabled +UseBest +Blend +UseSecond + + + + +Any +FloatRTK +IntegerRTK + +True + + + +Disabled +Enabled +NoChange + + + +-100 90 +deg +degrees + + + +send to first GPS +send to 2nd GPS +send to all + + + + +None (0x0000) +All (0xFFFF) +External only (0xFF00) + + + + +Ignore +Always log +Stop logging when disarmed (SBF only) +Only log every five samples (uBlox only) + +True + + + +Leave as currently configured +GPS-NoSBAS +GPS+SBAS +Galileo-NoSBAS +Galileo+SBAS +Beidou +GPS+IMES+QZSS+SBAS (Japan Only) +GLONASS +GLONASS+SBAS +GPS+GLONASS+SBAS + +0:GPS,1:SBAS,2:Galileo,3:Beidou,4:IMES,5:QZSS,6:GLOSNASS + + + +Do not save config +Save config +Save only when needed + + + + +Leave as currently configured +GPS-NoSBAS +GPS+SBAS +Galileo-NoSBAS +Galileo+SBAS +Beidou +GPS+IMES+QZSS+SBAS (Japan Only) +GLONASS +GLONASS+SBAS +GPS+GLONASS+SBAS + +0:GPS,1:SBAS,2:Galileo,3:Beidou,4:IMES,5:QZSS,6:GLOSNASS + + + +Disables automatic configuration +Enable automatic configuration + + + +ms +milliseconds + +10Hz +8Hz +5Hz + +50 200 + + +ms +milliseconds + +10Hz +8Hz +5Hz + +50 200 + + +m +meters +-5 5 +0.01 + + +m +meters +-5 5 +0.01 + + +m +meters +-5 5 +0.01 + + +m +meters +-5 5 +0.01 + + +m +meters +-5 5 +0.01 + + +m +meters +-5 5 +0.01 + + +ms +milliseconds +0 250 +True + + +ms +milliseconds +0 250 +True + + +0:Horiz Pos,1:Vert Pos,2:Speed + + +s +seconds +5.0 30.0 + + +0:Use UART2 for moving baseline on ublox + + + + + +Disabled +Enabled + + + + +None +Servo +EPM + + + +1000 2000 +PWM +PWM in microseconds + + +1000 2000 +PWM +PWM in microseconds + + +1000 2000 +PWM +PWM in microseconds + + +0 255 +s +seconds + + +0 255 + + + + + +Servo only +Servo with ExtGyro +DirectDrive VarPitch +DirectDrive FixedPitch CW +DirectDrive FixedPitch CCW + + + +0 1000 +PWM +PWM in microseconds +1 + + +-10 10 +0.1 + + + +NoFlybar +Flybar + + + +0 100 +% +percent +1 + + +0 1000 +PWM +PWM in microseconds +1 + + + +H3 Generic +H1 non-CPPM +H3_140 +H3_120 +H4_90 +H4_45 + + + + +Normal +Reversed + + + + +Disabled +Enabled + + + + +Disabled +Enabled + + + +-180 180 +deg +degrees + + +-180 180 +deg +degrees + + +-180 180 +deg +degrees + + +-30 30 +deg +degrees +1 + + + +Longitudinal +Transverse + + + +0 1 + + +-10 10 +0.1 + + +-10 10 +0.1 + + +1000 2000 +PWM +PWM in microseconds +1 + + +1000 2000 +PWM +PWM in microseconds +1 + + +1000 2000 +PWM +PWM in microseconds +1 + + + +H3 Generic +H1 non-CPPM +H3_140 +H3_120 +H4_90 +H4_45 + + + + +Normal +Reversed + + + + +Disabled +Enabled + + + + +Disabled +Enabled + + + +-180 180 +deg +degrees + + +-180 180 +deg +degrees + + +-180 180 +deg +degrees + + +-30 30 +deg +degrees +1 + + + +H3 Generic +H1 non-CPPM +H3_140 +H3_120 +H4_90 +H4_45 + + + + +Normal +Reversed + + + + +Disabled +Enabled + + + + +Disabled +Enabled + + + +-180 180 +deg +degrees + + +-180 180 +deg +degrees + + +-180 180 +deg +degrees + + +-30 30 +deg +degrees +1 + + +-0.2 0.2 +0.01 + + +1000 2000 +PWM +PWM in microseconds +1 + + +1000 2000 +PWM +PWM in microseconds +1 + + +1000 2000 +PWM +PWM in microseconds +1 + + + +Disabled +Passthrough +Max collective +Mid collective +Min collective + + + +0 4500 +100 + + +0 10 +1 + + +0.3 0.8 + + + +Disabled +Learn +Learn and Save + + + + +I term management based landed state +Leaky I(4.0 and earlier) + +0:Use Leaky I + + + + +0 100 +% +percent +1 + + + +RC Passthrough +External Gov SetPoint +Throttle Curve +Governor + + + +0 60 +s +seconds + + +0 60 +s +seconds + + +0 100 +% +percent +1 + + +0 50 +% +percent +1 + + +0 500 +10 + + +0 100 +% +percent +1 + + +0 100 +% +percent +1 + + +0 100 +% +percent +1 + + +0 100 +% +percent +1 + + +0 100 +% +percent +1 + + +800 3500 +RPM +Revolutions Per Minute +10 + + +0 50 +% +percent +1 + + +0 150 +% +percent +1 + + +50 100 +% +percent +1 + + +50 200 +RPM +Revolutions Per Minute +10 + + + + + +Disabled +Very Low +Low +Medium +High +Very High + + + +0 100 +% +percent +1 + + +0 100 +% +percent +1 + + +0 100 +% +percent +1 + + +0 100 +% +percent +1 + + + + +rad/s +radians per second + + +rad/s +radians per second + + +rad/s +radians per second + + +rad/s +radians per second + + +rad/s +radians per second + + +rad/s +radians per second + + +rad/s +radians per second + + +rad/s +radians per second + + +rad/s +radians per second + + +0.8 1.2 + + +0.8 1.2 + + +0.8 1.2 + + +m/s/s +meters per square second +-3.5 3.5 + + +m/s/s +meters per square second +-3.5 3.5 + + +m/s/s +meters per square second +-3.5 3.5 + + +0.8 1.2 + + +0.8 1.2 + + +0.8 1.2 + + +m/s/s +meters per square second +-3.5 3.5 + + +m/s/s +meters per square second +-3.5 3.5 + + +m/s/s +meters per square second +-3.5 3.5 + + +0.8 1.2 + + +0.8 1.2 + + +0.8 1.2 + + +m/s/s +meters per square second +-3.5 3.5 + + +m/s/s +meters per square second +-3.5 3.5 + + +m/s/s +meters per square second +-3.5 3.5 + + +Hz +hertz +0 256 + + +Hz +hertz +0 256 + + + +Disabled +Enabled + + + + +Disabled +Enabled + + + + +Disabled +Enabled + + + +0.05 50 + + + +Never +Start-up only + + + + +Don't adjust the trims +Assume first orientation was level +Assume ACC_BODYFIX is perfectly aligned to the vehicle + + + + +IMU 1 +IMU 2 +IMU 3 + + + +m +meters +-10 10 + + +m +meters +-10 10 + + +m +meters +-10 10 + + +m +meters +-10 10 + + +m +meters +-10 10 + + +m +meters +-10 10 + + +m +meters +-10 10 + + +m +meters +-10 10 + + +m +meters +-10 10 + + +True + + +True + + +True + + +True + + +True + + +True + + + +FirstIMUOnly +FirstAndSecondIMU + +0:FirstIMU,1:SecondIMU,2:ThirdIMU + + + +FirstIMUOnly +FirstAndSecondIMU +FirstSecondAndThirdIMU +AllIMUs + +0:FirstIMU,1:SecondIMU,2:ThirdIMU + + + + + +Disabled +Enabled + + + +10 495 +Hz +hertz + + +5 250 +Hz +hertz + + +5 50 +dB +decibel + + +0:1st harmonic,1:2nd harmonic,2:3rd harmonic,3:4th hamronic,4:5th harmonic,5:6th harmonic,6:7th harmonic,7:8th harmonic +True + + +0.0 1.0 +True + + +0 3 + +Disabled +Throttle +RPM Sensor +ESC Telemetry + + + + + +32 +True + + + +None +First IMU +All + +0:IMU1,1:IMU2,2:IMU3 +True + + +0:Sensor-Rate Logging (sample at full sensor rate seen by AP), 1: Sample post-filtering + + +ms +milliseconds +10 + + +1 + + + + + +Disabled +Enabled + + + +5 30 +dB +decibel + + +10 400 +Hz +hertz + + +5 100 +Hz +hertz + + + + + +WaitForPilotInput +Retract +Deploy + + + + +Disabled +AUX1 +AUX2 +AUX3 +AUX4 +AUX5 +AUX6 + +True + + + +Low +High + + + + +Disabled +AUX1 +AUX2 +AUX3 +AUX4 +AUX5 +AUX6 + +True + + + +Low +High + + + +m +meters +0 1000 +1 + + +m +meters +0 1000 +1 + + + +Retract after Takeoff +Deploy during Land +Retract after Takeoff AND deploy during Land + +0:Retract after Takeoff,1:Deploy during Land + + + + + +None +File +MAVLink +File and MAVLink +Block +Block and MAVLink + +0:File,1:MAVLink,2:Block + + + + + +Disabled +Enabled + + + + +Disabled +Enabled + + + + +Disabled +Enabled + + + +kB +kilobytes + + +s +seconds + + + + +deg +degrees +0 45 +1 + + +cm/s +centimeters per second +20 2000 +50 + + +cm/s/s +centimeters per square second +100 981 +1 + + +cm/s/s +centimeters per square second +25 250 +1 + + +cm/s/s/s +centimeters per cubic second +500 5000 +1 + + +s +seconds +0 2 +0.1 + + + + +0 32766 +1 +True + + + +Resume Mission +Restart Mission + + + +0:Clear Mission on reboot + + + + + +Retracted +Neutral +MavLink Targeting +RC Targeting +GPS Point + + + +deg +degrees +-180.00 179.99 +1 + + +deg +degrees +-180.00 179.99 +1 + + +deg +degrees +-180.00 179.99 +1 + + +deg +degrees +-180.00 179.99 +1 + + +deg +degrees +-180.00 179.99 +1 + + +deg +degrees +-180.00 179.99 +1 + + + +Disabled +Enabled + + + + +Disabled +Enabled + + + + +Disabled +Enabled + + + + +Disabled +RC5 +RC6 +RC7 +RC8 +RC9 +RC10 +RC11 +RC12 + + + +cdeg +centidegrees +-18000 17999 +1 + + +cdeg +centidegrees +-18000 17999 +1 + + + +Disabled +RC5 +RC6 +RC7 +RC8 +RC9 +RC10 +RC11 +RC12 + + + +cdeg +centidegrees +-18000 17999 +1 + + +cdeg +centidegrees +-18000 17999 +1 + + + +Disabled +RC5 +RC6 +RC7 +RC8 +RC9 +RC10 +RC11 +RC12 + + + +cdeg +centidegrees +-18000 17999 +1 + + +cdeg +centidegrees +-18000 17999 +1 + + +0 100 +1 + + +s +seconds +0.0 0.2 +.005 + + +s +seconds +0.0 0.2 +.005 + + + +None +Servo +3DR Solo +Alexmos Serial +SToRM32 MAVLink +SToRM32 Serial + +True + + + +Retracted +Neutral +MavLink Targeting +RC Targeting +GPS Point + + + +deg +degrees +-180.00 179.99 +1 + + +deg +degrees +-180.00 179.99 +1 + + +deg +degrees +-180.00 179.99 +1 + + +deg +degrees +-180.00 179.99 +1 + + +deg +degrees +-180.00 179.99 +1 + + +deg +degrees +-180.00 179.99 +1 + + + +Disabled +Enabled + + + + +Disabled +Enabled + + + + +Disabled +Enabled + + + + +Disabled +RC5 +RC6 +RC7 +RC8 +RC9 +RC10 +RC11 +RC12 + + + +cdeg +centidegrees +-18000 17999 +1 + + +cdeg +centidegrees +-18000 17999 +1 + + + +Disabled +RC5 +RC6 +RC7 +RC8 +RC9 +RC10 +RC11 +RC12 + + + +cdeg +centidegrees +-18000 17999 +1 + + +cdeg +centidegrees +-18000 17999 +1 + + + +Disabled +RC5 +RC6 +RC7 +RC8 +RC9 +RC10 +RC11 +RC12 + + + +cdeg +centidegrees +-18000 17999 +1 + + +cdeg +centidegrees +-18000 17999 +1 + + +s +seconds +0.0 0.2 +.005 + + +s +seconds +0.0 0.2 +.005 + + + +None +Servo +3DR Solo +Alexmos Serial +SToRM32 MAVLink +SToRM32 Serial + + + + + +0 500 +PWM +PWM in microseconds + + +0.25 0.8 + + +0.9:Low, 0.95:Default, 1.0:High + + +6 35 +V +volt + + +6 35 +V +volt + + +0 200 +A +ampere + + + +Normal +OneShot +OneShot125 +Brushed +DShot150 +DShot300 +DShot600 +DShot1200 + +True + + +PWM +PWM in microseconds +0 2000 + + +PWM +PWM in microseconds +0 2000 + + +0.0:Low, 0.15:Default, 0.3:High + + +0.0:Low, 0.1:Default, 0.2:High + + +0 10 +s +seconds + + +0.2 0.8 + + + +Disabled +Learn +Learn and Save + + + + +PWM enabled while disarmed +PWM disabled while disarmed + + + +5 80 +deg +degrees +1 + + +0 2 +s +seconds +0.1 + + +0 5 +0.1 + + + +First battery +Second battery + + + +0 .5 +s +seconds +0.001 + + +0 .5 +s +seconds +0.001 + + +0 5 +s +seconds +0.001 + + + + + +Off +Low +Medium +High + + + + +Disable +Enable + + + + +Standard +MAVLink +OutbackChallenge +TrafficLight + + + + +Disable +ssd1306 +sh1106 +SITL + + + + +Disabled +Aircraft +Rover + + + + +Disabled + + + +0:Build in LED, 1:Internal ToshibaLED, 2:External ToshibaLED, 3:External PCA9685, 4:Oreo LED, 5:UAVCAN, 6:NCP5623 External, 7:NCP5623 Internal, 8:NeoPixel, 9:ProfiLED + + + +LowIsOn +HighIsOn + + + +0 100 +% +percent + + +1 32 + + + + + +Disabled +BendyRuler +Dijkstra + + + +m +meters +1 100 +1 + + +m +meters +0.1 100 +1 + + + + +0 10000 +True + + +s +seconds +0 127 +1 + + +1 200 +True + + + +Disabled +Send only HIGH importance items +Send HIGH and NORMAL importance items +Send all items + + + +deg +degrees +1 10 +True + + +m +meters +0 10 + + +m +meters +0 10 + + + + + +None +MAX7456 + +True + + + +Disable +Chan5 +Chan6 +Chan7 +Chan8 +Chan9 +Chan10 +Chan11 +Chan12 +Chan13 +Chan14 +Chan15 +Chan16 + + + +0:UseDecimalPack, 1:InvertedWindPointer, 2:InvertedAHRoll + + +True + + +0 31 +True + + +0 63 +True + + +0 99 + + +1 30 + + +0 100 + + + +Metric +Imperial +SI +Aviation + + + +1 20 + + +0 4 + + +0 4 + + +0 4 + + + + + +Disabled +Enabled + + + +900 2100 + + +900 2100 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +900 2100 + + +900 2100 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +900 2100 + + +900 2100 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +900 2100 + + +900 2100 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + + +None +CompanionComputer +IRLock +SITL_Gazebo +SITL + + + +0 360 +1 +cdeg +centidegrees + + +-20 20 +1 +cm +centimeters + + +-20 20 +1 +cm +centimeters + + + +RawSensor +KalmanFilter + + + +0.5 5 + + +m +meters + + +m +meters + + +m +meters + + + +DefaultBus +InternalI2C +ExternalI2C + + + +0.02 0.250 +1 +s +seconds +True + + + + + +None +LightwareSF40c +LightWareSF40C-legacy +MAVLink +TeraRangerTower +RangeFinder +RPLidarA2 +TeraRangerTowerEvo +SITL +MorseSITL +AirSimSITL + +True + + + +Default +Upside Down + + + +deg +degrees +-180 180 + + +deg +degrees +0 360 + + +deg +degrees +0 45 + + +deg +degrees +0 360 + + +deg +degrees +0 45 + + +deg +degrees +0 360 + + +deg +degrees +0 45 + + +deg +degrees +0 360 + + +deg +degrees +0 45 + + +deg +degrees +0 360 + + +deg +degrees +0 45 + + +deg +degrees +0 360 + + +deg +degrees +0 45 + + + +None +LightwareSF40c +LightWareSF40C-legacy +MAVLink +TeraRangerTower +RangeFinder +RPLidarA2 +TeraRangerTowerEvo +SITL +MorseSITL +AirSimSITL + +True + + + +Default +Upside Down + + + +deg +degrees +-180 180 + + + + +Hz +hertz +0.5 5 +0.1 + + +1.000 3.000 + + +1.000 8.000 + + +0.500 1.500 +0.05 + + +0.000 3.000 + + +0 1000 +d% +decipercent + + +0.000 0.400 + + +0 0.5 +0.001 + + +1 50 +1 +Hz +hertz + + +1 100 +1 +Hz +hertz + + +1 100 +1 +Hz +hertz + + +0.500 2.000 + + +0.1 6.0 +0.1 + + +0.02 1.00 +0.01 + + +0.00 1.00 +0.001 + + +0 4500 +10 +cm/s/s +centimeters per square second + + +0 100 +Hz +hertz + + +0 100 +Hz +hertz + + +deg +degrees +0 45 +1 + + + + + + +km +kilometers +0.1 + + + +DoNotIncludeHome +IncludeHome + + + + + +0.0 120.0 +s +seconds + + +0:Ignore RC Receiver, 1:Ignore MAVLink Overrides, 2:Ignore Receiver Failsafe + + + + +PWM +PWM in microseconds +800 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + + +Normal +Reversed + + + +PWM +PWM in microseconds +0 200 + + + +Do Nothing +Flip +Simple Mode +RTL +Save Trim +Save WP +Camera Trigger +RangeFinder +Fence +Super Simple Mode +Acro Trainer +Sprayer +Auto +AutoTune +Land +Gripper +Parachute Enable +Parachute Release +Parachute 3pos +Auto Mission Reset +AttCon Feed Forward +AttCon Accel Limits +Retract Mount +Relay On/Off +Relay2 On/Off +Relay3 On/Off +Relay4 On/Off +Landing Gear +Lost Copter Sound +Motor Emergency Stop +Motor Interlock +Brake +Throw +ADSB-Avoidance +PrecLoiter +Proximity Avoidance +ArmDisarm +SmartRTL +InvertedFlight +Winch Enable +WinchControl +RC Override Enable +User Function 1 +User Function 2 +User Function 3 +Clear Waypoints +ZigZag +ZigZag SaveWP +Compass Learn +GPS Disable +Relay5 +Relay6 +Stabilize +PosHold +AltHold +FlowHold +Circle +Drift +KillIMU1 +KillIMU2 +Camera Mode Toggle + + + + + +PWM +PWM in microseconds +800 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + + +Normal +Reversed + + + +PWM +PWM in microseconds +0 200 + + + +Do Nothing +Flip +Simple Mode +RTL +Save Trim +Save WP +Camera Trigger +RangeFinder +Fence +Super Simple Mode +Acro Trainer +Sprayer +Auto +AutoTune +Land +Gripper +Parachute Enable +Parachute Release +Parachute 3pos +Auto Mission Reset +AttCon Feed Forward +AttCon Accel Limits +Retract Mount +Relay On/Off +Relay2 On/Off +Relay3 On/Off +Relay4 On/Off +Landing Gear +Lost Copter Sound +Motor Emergency Stop +Motor Interlock +Brake +Throw +ADSB-Avoidance +PrecLoiter +Proximity Avoidance +ArmDisarm +SmartRTL +InvertedFlight +Winch Enable +WinchControl +RC Override Enable +User Function 1 +User Function 2 +User Function 3 +Clear Waypoints +ZigZag +ZigZag SaveWP +Compass Learn +GPS Disable +Relay5 +Relay6 +Stabilize +PosHold +AltHold +FlowHold +Circle +Drift +KillIMU1 +KillIMU2 +Camera Mode Toggle + + + + + +PWM +PWM in microseconds +800 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + + +Normal +Reversed + + + +PWM +PWM in microseconds +0 200 + + + +Do Nothing +Flip +Simple Mode +RTL +Save Trim +Save WP +Camera Trigger +RangeFinder +Fence +Super Simple Mode +Acro Trainer +Sprayer +Auto +AutoTune +Land +Gripper +Parachute Enable +Parachute Release +Parachute 3pos +Auto Mission Reset +AttCon Feed Forward +AttCon Accel Limits +Retract Mount +Relay On/Off +Relay2 On/Off +Relay3 On/Off +Relay4 On/Off +Landing Gear +Lost Copter Sound +Motor Emergency Stop +Motor Interlock +Brake +Throw +ADSB-Avoidance +PrecLoiter +Proximity Avoidance +ArmDisarm +SmartRTL +InvertedFlight +Winch Enable +WinchControl +RC Override Enable +User Function 1 +User Function 2 +User Function 3 +Clear Waypoints +ZigZag +ZigZag SaveWP +Compass Learn +GPS Disable +Relay5 +Relay6 +Stabilize +PosHold +AltHold +FlowHold +Circle +Drift +KillIMU1 +KillIMU2 +Camera Mode Toggle + + + + + +PWM +PWM in microseconds +800 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + + +Normal +Reversed + + + +PWM +PWM in microseconds +0 200 + + + +Do Nothing +Flip +Simple Mode +RTL +Save Trim +Save WP +Camera Trigger +RangeFinder +Fence +Super Simple Mode +Acro Trainer +Sprayer +Auto +AutoTune +Land +Gripper +Parachute Enable +Parachute Release +Parachute 3pos +Auto Mission Reset +AttCon Feed Forward +AttCon Accel Limits +Retract Mount +Relay On/Off +Relay2 On/Off +Relay3 On/Off +Relay4 On/Off +Landing Gear +Lost Copter Sound +Motor Emergency Stop +Motor Interlock +Brake +Throw +ADSB-Avoidance +PrecLoiter +Proximity Avoidance +ArmDisarm +SmartRTL +InvertedFlight +Winch Enable +WinchControl +RC Override Enable +User Function 1 +User Function 2 +User Function 3 +Clear Waypoints +ZigZag +ZigZag SaveWP +Compass Learn +GPS Disable +Relay5 +Relay6 +Stabilize +PosHold +AltHold +FlowHold +Circle +Drift +KillIMU1 +KillIMU2 +Camera Mode Toggle + + + + + +PWM +PWM in microseconds +800 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + + +Normal +Reversed + + + +PWM +PWM in microseconds +0 200 + + + +Do Nothing +Flip +Simple Mode +RTL +Save Trim +Save WP +Camera Trigger +RangeFinder +Fence +Super Simple Mode +Acro Trainer +Sprayer +Auto +AutoTune +Land +Gripper +Parachute Enable +Parachute Release +Parachute 3pos +Auto Mission Reset +AttCon Feed Forward +AttCon Accel Limits +Retract Mount +Relay On/Off +Relay2 On/Off +Relay3 On/Off +Relay4 On/Off +Landing Gear +Lost Copter Sound +Motor Emergency Stop +Motor Interlock +Brake +Throw +ADSB-Avoidance +PrecLoiter +Proximity Avoidance +ArmDisarm +SmartRTL +InvertedFlight +Winch Enable +WinchControl +RC Override Enable +User Function 1 +User Function 2 +User Function 3 +Clear Waypoints +ZigZag +ZigZag SaveWP +Compass Learn +GPS Disable +Relay5 +Relay6 +Stabilize +PosHold +AltHold +FlowHold +Circle +Drift +KillIMU1 +KillIMU2 +Camera Mode Toggle + + + + + +PWM +PWM in microseconds +800 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + + +Normal +Reversed + + + +PWM +PWM in microseconds +0 200 + + + +Do Nothing +Flip +Simple Mode +RTL +Save Trim +Save WP +Camera Trigger +RangeFinder +Fence +Super Simple Mode +Acro Trainer +Sprayer +Auto +AutoTune +Land +Gripper +Parachute Enable +Parachute Release +Parachute 3pos +Auto Mission Reset +AttCon Feed Forward +AttCon Accel Limits +Retract Mount +Relay On/Off +Relay2 On/Off +Relay3 On/Off +Relay4 On/Off +Landing Gear +Lost Copter Sound +Motor Emergency Stop +Motor Interlock +Brake +Throw +ADSB-Avoidance +PrecLoiter +Proximity Avoidance +ArmDisarm +SmartRTL +InvertedFlight +Winch Enable +WinchControl +RC Override Enable +User Function 1 +User Function 2 +User Function 3 +Clear Waypoints +ZigZag +ZigZag SaveWP +Compass Learn +GPS Disable +Relay5 +Relay6 +Stabilize +PosHold +AltHold +FlowHold +Circle +Drift +KillIMU1 +KillIMU2 +Camera Mode Toggle + + + + + +PWM +PWM in microseconds +800 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + + +Normal +Reversed + + + +PWM +PWM in microseconds +0 200 + + + +Do Nothing +Flip +Simple Mode +RTL +Save Trim +Save WP +Camera Trigger +RangeFinder +Fence +Super Simple Mode +Acro Trainer +Sprayer +Auto +AutoTune +Land +Gripper +Parachute Enable +Parachute Release +Parachute 3pos +Auto Mission Reset +AttCon Feed Forward +AttCon Accel Limits +Retract Mount +Relay On/Off +Relay2 On/Off +Relay3 On/Off +Relay4 On/Off +Landing Gear +Lost Copter Sound +Motor Emergency Stop +Motor Interlock +Brake +Throw +ADSB-Avoidance +PrecLoiter +Proximity Avoidance +ArmDisarm +SmartRTL +InvertedFlight +Winch Enable +WinchControl +RC Override Enable +User Function 1 +User Function 2 +User Function 3 +Clear Waypoints +ZigZag +ZigZag SaveWP +Compass Learn +GPS Disable +Relay5 +Relay6 +Stabilize +PosHold +AltHold +FlowHold +Circle +Drift +KillIMU1 +KillIMU2 +Camera Mode Toggle + + + + + +PWM +PWM in microseconds +800 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + + +Normal +Reversed + + + +PWM +PWM in microseconds +0 200 + + + +Do Nothing +Flip +Simple Mode +RTL +Save Trim +Save WP +Camera Trigger +RangeFinder +Fence +Super Simple Mode +Acro Trainer +Sprayer +Auto +AutoTune +Land +Gripper +Parachute Enable +Parachute Release +Parachute 3pos +Auto Mission Reset +AttCon Feed Forward +AttCon Accel Limits +Retract Mount +Relay On/Off +Relay2 On/Off +Relay3 On/Off +Relay4 On/Off +Landing Gear +Lost Copter Sound +Motor Emergency Stop +Motor Interlock +Brake +Throw +ADSB-Avoidance +PrecLoiter +Proximity Avoidance +ArmDisarm +SmartRTL +InvertedFlight +Winch Enable +WinchControl +RC Override Enable +User Function 1 +User Function 2 +User Function 3 +Clear Waypoints +ZigZag +ZigZag SaveWP +Compass Learn +GPS Disable +Relay5 +Relay6 +Stabilize +PosHold +AltHold +FlowHold +Circle +Drift +KillIMU1 +KillIMU2 +Camera Mode Toggle + + + + + +PWM +PWM in microseconds +800 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + + +Normal +Reversed + + + +PWM +PWM in microseconds +0 200 + + + +Do Nothing +Flip +Simple Mode +RTL +Save Trim +Save WP +Camera Trigger +RangeFinder +Fence +Super Simple Mode +Acro Trainer +Sprayer +Auto +AutoTune +Land +Gripper +Parachute Enable +Parachute Release +Parachute 3pos +Auto Mission Reset +AttCon Feed Forward +AttCon Accel Limits +Retract Mount +Relay On/Off +Relay2 On/Off +Relay3 On/Off +Relay4 On/Off +Landing Gear +Lost Copter Sound +Motor Emergency Stop +Motor Interlock +Brake +Throw +ADSB-Avoidance +PrecLoiter +Proximity Avoidance +ArmDisarm +SmartRTL +InvertedFlight +Winch Enable +WinchControl +RC Override Enable +User Function 1 +User Function 2 +User Function 3 +Clear Waypoints +ZigZag +ZigZag SaveWP +Compass Learn +GPS Disable +Relay5 +Relay6 +Stabilize +PosHold +AltHold +FlowHold +Circle +Drift +KillIMU1 +KillIMU2 +Camera Mode Toggle + + + + + +PWM +PWM in microseconds +800 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + + +Normal +Reversed + + + +PWM +PWM in microseconds +0 200 + + + +Do Nothing +Flip +Simple Mode +RTL +Save Trim +Save WP +Camera Trigger +RangeFinder +Fence +Super Simple Mode +Acro Trainer +Sprayer +Auto +AutoTune +Land +Gripper +Parachute Enable +Parachute Release +Parachute 3pos +Auto Mission Reset +AttCon Feed Forward +AttCon Accel Limits +Retract Mount +Relay On/Off +Relay2 On/Off +Relay3 On/Off +Relay4 On/Off +Landing Gear +Lost Copter Sound +Motor Emergency Stop +Motor Interlock +Brake +Throw +ADSB-Avoidance +PrecLoiter +Proximity Avoidance +ArmDisarm +SmartRTL +InvertedFlight +Winch Enable +WinchControl +RC Override Enable +User Function 1 +User Function 2 +User Function 3 +Clear Waypoints +ZigZag +ZigZag SaveWP +Compass Learn +GPS Disable +Relay5 +Relay6 +Stabilize +PosHold +AltHold +FlowHold +Circle +Drift +KillIMU1 +KillIMU2 +Camera Mode Toggle + + + + + +PWM +PWM in microseconds +800 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + + +Normal +Reversed + + + +PWM +PWM in microseconds +0 200 + + + +Do Nothing +Flip +Simple Mode +RTL +Save Trim +Save WP +Camera Trigger +RangeFinder +Fence +Super Simple Mode +Acro Trainer +Sprayer +Auto +AutoTune +Land +Gripper +Parachute Enable +Parachute Release +Parachute 3pos +Auto Mission Reset +AttCon Feed Forward +AttCon Accel Limits +Retract Mount +Relay On/Off +Relay2 On/Off +Relay3 On/Off +Relay4 On/Off +Landing Gear +Lost Copter Sound +Motor Emergency Stop +Motor Interlock +Brake +Throw +ADSB-Avoidance +PrecLoiter +Proximity Avoidance +ArmDisarm +SmartRTL +InvertedFlight +Winch Enable +WinchControl +RC Override Enable +User Function 1 +User Function 2 +User Function 3 +Clear Waypoints +ZigZag +ZigZag SaveWP +Compass Learn +GPS Disable +Relay5 +Relay6 +Stabilize +PosHold +AltHold +FlowHold +Circle +Drift +KillIMU1 +KillIMU2 +Camera Mode Toggle + + + + + +PWM +PWM in microseconds +800 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + + +Normal +Reversed + + + +PWM +PWM in microseconds +0 200 + + + +Do Nothing +Flip +Simple Mode +RTL +Save Trim +Save WP +Camera Trigger +RangeFinder +Fence +Super Simple Mode +Acro Trainer +Sprayer +Auto +AutoTune +Land +Gripper +Parachute Enable +Parachute Release +Parachute 3pos +Auto Mission Reset +AttCon Feed Forward +AttCon Accel Limits +Retract Mount +Relay On/Off +Relay2 On/Off +Relay3 On/Off +Relay4 On/Off +Landing Gear +Lost Copter Sound +Motor Emergency Stop +Motor Interlock +Brake +Throw +ADSB-Avoidance +PrecLoiter +Proximity Avoidance +ArmDisarm +SmartRTL +InvertedFlight +Winch Enable +WinchControl +RC Override Enable +User Function 1 +User Function 2 +User Function 3 +Clear Waypoints +ZigZag +ZigZag SaveWP +Compass Learn +GPS Disable +Relay5 +Relay6 +Stabilize +PosHold +AltHold +FlowHold +Circle +Drift +KillIMU1 +KillIMU2 +Camera Mode Toggle + + + + + +PWM +PWM in microseconds +800 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + + +Normal +Reversed + + + +PWM +PWM in microseconds +0 200 + + + +Do Nothing +Flip +Simple Mode +RTL +Save Trim +Save WP +Camera Trigger +RangeFinder +Fence +Super Simple Mode +Acro Trainer +Sprayer +Auto +AutoTune +Land +Gripper +Parachute Enable +Parachute Release +Parachute 3pos +Auto Mission Reset +AttCon Feed Forward +AttCon Accel Limits +Retract Mount +Relay On/Off +Relay2 On/Off +Relay3 On/Off +Relay4 On/Off +Landing Gear +Lost Copter Sound +Motor Emergency Stop +Motor Interlock +Brake +Throw +ADSB-Avoidance +PrecLoiter +Proximity Avoidance +ArmDisarm +SmartRTL +InvertedFlight +Winch Enable +WinchControl +RC Override Enable +User Function 1 +User Function 2 +User Function 3 +Clear Waypoints +ZigZag +ZigZag SaveWP +Compass Learn +GPS Disable +Relay5 +Relay6 +Stabilize +PosHold +AltHold +FlowHold +Circle +Drift +KillIMU1 +KillIMU2 +Camera Mode Toggle + + + + + +PWM +PWM in microseconds +800 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + + +Normal +Reversed + + + +PWM +PWM in microseconds +0 200 + + + +Do Nothing +Flip +Simple Mode +RTL +Save Trim +Save WP +Camera Trigger +RangeFinder +Fence +Super Simple Mode +Acro Trainer +Sprayer +Auto +AutoTune +Land +Gripper +Parachute Enable +Parachute Release +Parachute 3pos +Auto Mission Reset +AttCon Feed Forward +AttCon Accel Limits +Retract Mount +Relay On/Off +Relay2 On/Off +Relay3 On/Off +Relay4 On/Off +Landing Gear +Lost Copter Sound +Motor Emergency Stop +Motor Interlock +Brake +Throw +ADSB-Avoidance +PrecLoiter +Proximity Avoidance +ArmDisarm +SmartRTL +InvertedFlight +Winch Enable +WinchControl +RC Override Enable +User Function 1 +User Function 2 +User Function 3 +Clear Waypoints +ZigZag +ZigZag SaveWP +Compass Learn +GPS Disable +Relay5 +Relay6 +Stabilize +PosHold +AltHold +FlowHold +Circle +Drift +KillIMU1 +KillIMU2 +Camera Mode Toggle + + + + + +PWM +PWM in microseconds +800 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + + +Normal +Reversed + + + +PWM +PWM in microseconds +0 200 + + + +Do Nothing +Flip +Simple Mode +RTL +Save Trim +Save WP +Camera Trigger +RangeFinder +Fence +Super Simple Mode +Acro Trainer +Sprayer +Auto +AutoTune +Land +Gripper +Parachute Enable +Parachute Release +Parachute 3pos +Auto Mission Reset +AttCon Feed Forward +AttCon Accel Limits +Retract Mount +Relay On/Off +Relay2 On/Off +Relay3 On/Off +Relay4 On/Off +Landing Gear +Lost Copter Sound +Motor Emergency Stop +Motor Interlock +Brake +Throw +ADSB-Avoidance +PrecLoiter +Proximity Avoidance +ArmDisarm +SmartRTL +InvertedFlight +Winch Enable +WinchControl +RC Override Enable +User Function 1 +User Function 2 +User Function 3 +Clear Waypoints +ZigZag +ZigZag SaveWP +Compass Learn +GPS Disable +Relay5 +Relay6 +Stabilize +PosHold +AltHold +FlowHold +Circle +Drift +KillIMU1 +KillIMU2 +Camera Mode Toggle + + + + + +PWM +PWM in microseconds +800 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + + +Normal +Reversed + + + +PWM +PWM in microseconds +0 200 + + + +Do Nothing +Flip +Simple Mode +RTL +Save Trim +Save WP +Camera Trigger +RangeFinder +Fence +Super Simple Mode +Acro Trainer +Sprayer +Auto +AutoTune +Land +Gripper +Parachute Enable +Parachute Release +Parachute 3pos +Auto Mission Reset +AttCon Feed Forward +AttCon Accel Limits +Retract Mount +Relay On/Off +Relay2 On/Off +Relay3 On/Off +Relay4 On/Off +Landing Gear +Lost Copter Sound +Motor Emergency Stop +Motor Interlock +Brake +Throw +ADSB-Avoidance +PrecLoiter +Proximity Avoidance +ArmDisarm +SmartRTL +InvertedFlight +Winch Enable +WinchControl +RC Override Enable +User Function 1 +User Function 2 +User Function 3 +Clear Waypoints +ZigZag +ZigZag SaveWP +Compass Learn +GPS Disable +Relay5 +Relay6 +Stabilize +PosHold +AltHold +FlowHold +Circle +Drift +KillIMU1 +KillIMU2 +Camera Mode Toggle + + + + + +1 8 +1 +True + + +1 8 +1 +True + + +1 8 +1 +True + + +1 8 +1 +True + + +1 8 +1 +True +1: 1, 2: 2, 3: 3, 4: 4, 5: 5, 6: 6, 7: 7, 8: 8 + + +1 8 +1 +True +1: 1, 2: 2, 3: 3, 4: 4, 5: 5, 6: 6, 7: 7, 8: 8 + + + + + +Disabled +BB Blue GP0 pin 4 +AUXOUT1 +AUXOUT2 +AUXOUT3 +AUXOUT4 +AUXOUT5 +AUXOUT6 +BB Blue GP0 pin 3 +BB Blue GP0 pin 6 +BB Blue GP0 pin 5 + + + + +Disabled +BB Blue GP0 pin 4 +AUXOUT1 +AUXOUT2 +AUXOUT3 +AUXOUT4 +AUXOUT5 +AUXOUT6 +BB Blue GP0 pin 3 +BB Blue GP0 pin 6 +BB Blue GP0 pin 5 + + + + +Disabled +BB Blue GP0 pin 4 +AUXOUT1 +AUXOUT2 +AUXOUT3 +AUXOUT4 +AUXOUT5 +AUXOUT6 +BB Blue GP0 pin 3 +BB Blue GP0 pin 6 +BB Blue GP0 pin 5 + + + + +Disabled +BB Blue GP0 pin 4 +AUXOUT1 +AUXOUT2 +AUXOUT3 +AUXOUT4 +AUXOUT5 +AUXOUT6 +BB Blue GP0 pin 3 +BB Blue GP0 pin 6 +BB Blue GP0 pin 5 + + + + +Off +On +NoChange + + + + +Disabled +BB Blue GP0 pin 4 +AUXOUT1 +AUXOUT2 +AUXOUT3 +AUXOUT4 +AUXOUT5 +AUXOUT6 +BB Blue GP0 pin 3 +BB Blue GP0 pin 6 +BB Blue GP0 pin 5 + + + + +Disabled +BB Blue GP0 pin 4 +AUXOUT1 +AUXOUT2 +AUXOUT3 +AUXOUT4 +AUXOUT5 +AUXOUT6 +BB Blue GP0 pin 3 +BB Blue GP0 pin 6 +BB Blue GP0 pin 5 + + + + + + +None +Analog +MaxbotixI2C +LidarLite-I2C +PWM +BBB-PRU +LightWareI2C +LightWareSerial +Bebop +MAVLink +uLanding +LeddarOne +MaxbotixSerial +TeraRangerI2C +LidarLiteV3-I2C +VL53L0X +NMEA +WASP-LRF +BenewakeTF02 +Benewake-Serial +LidarLightV3HP +PWM +BlueRoboticsPing +UAVCAN +BenewakeTFminiPlus-I2C +BenewakeTF03 + + + + +Not Used +PX4-airspeed port +Pixhawk-airspeed port +Pixhawk AUXOUT1 +Pixhawk AUXOUT2 +Pixhawk AUXOUT3 +Pixhawk AUXOUT4 +Pixhawk AUXOUT5 +Pixhawk AUXOUT6 + + + +m/V +meters per volt +0.001 + + +V +volt +0.001 + + + +Linear +Inverted +Hyperbolic + + + +cm +centimeters +1 + + +cm +centimeters +1 + + + +Not Used +Pixhawk AUXOUT1 +Pixhawk AUXOUT2 +Pixhawk AUXOUT3 +Pixhawk AUXOUT4 +Pixhawk AUXOUT5 +Pixhawk AUXOUT6 +PX4 FMU Relay1 +PX4 FMU Relay2 +PX4IO Relay1 +PX4IO Relay2 +PX4IO ACC1 +PX4IO ACC2 + + + + +No +Yes + + + +m +meters +0 32767 + + +cm +centimeters +5 127 +1 + + +0 127 +1 + + +m +meters + + +m +meters + + +m +meters + + + +Forward +Forward-Right +Right +Back-Right +Back +Back-Left +Left +Forward-Left +Up +Down + + + + + +0 255 + + +0 255 + + +0 10000 + + +0 255 + + +-1 255 + + + +Low Speed +High Speed + + + + + + +None +Analog +MaxbotixI2C +LidarLite-I2C +PWM +BBB-PRU +LightWareI2C +LightWareSerial +Bebop +MAVLink +uLanding +LeddarOne +MaxbotixSerial +TeraRangerI2C +LidarLiteV3-I2C +VL53L0X +NMEA +WASP-LRF +BenewakeTF02 +Benewake-Serial +LidarLightV3HP +PWM +BlueRoboticsPing +UAVCAN +BenewakeTFminiPlus-I2C +BenewakeTF03 + + + + +Not Used +PX4-airspeed port +Pixhawk-airspeed port +Pixhawk AUXOUT1 +Pixhawk AUXOUT2 +Pixhawk AUXOUT3 +Pixhawk AUXOUT4 +Pixhawk AUXOUT5 +Pixhawk AUXOUT6 + + + +m/V +meters per volt +0.001 + + +V +volt +0.001 + + + +Linear +Inverted +Hyperbolic + + + +cm +centimeters +1 + + +cm +centimeters +1 + + + +Not Used +Pixhawk AUXOUT1 +Pixhawk AUXOUT2 +Pixhawk AUXOUT3 +Pixhawk AUXOUT4 +Pixhawk AUXOUT5 +Pixhawk AUXOUT6 +PX4 FMU Relay1 +PX4 FMU Relay2 +PX4IO Relay1 +PX4IO Relay2 +PX4IO ACC1 +PX4IO ACC2 + + + + +No +Yes + + + +m +meters +0 32767 + + +cm +centimeters +5 127 +1 + + +0 127 +1 + + +m +meters + + +m +meters + + +m +meters + + + +Forward +Forward-Right +Right +Back-Right +Back +Back-Left +Left +Forward-Left +Up +Down + + + + + +0 255 + + +0 255 + + +0 10000 + + +0 255 + + +-1 255 + + + +Low Speed +High Speed + + + + + + +None +Analog +MaxbotixI2C +LidarLite-I2C +PWM +BBB-PRU +LightWareI2C +LightWareSerial +Bebop +MAVLink +uLanding +LeddarOne +MaxbotixSerial +TeraRangerI2C +LidarLiteV3-I2C +VL53L0X +NMEA +WASP-LRF +BenewakeTF02 +Benewake-Serial +LidarLightV3HP +PWM +BlueRoboticsPing +UAVCAN +BenewakeTFminiPlus-I2C +BenewakeTF03 + + + + +Not Used +PX4-airspeed port +Pixhawk-airspeed port +Pixhawk AUXOUT1 +Pixhawk AUXOUT2 +Pixhawk AUXOUT3 +Pixhawk AUXOUT4 +Pixhawk AUXOUT5 +Pixhawk AUXOUT6 + + + +m/V +meters per volt +0.001 + + +V +volt +0.001 + + + +Linear +Inverted +Hyperbolic + + + +cm +centimeters +1 + + +cm +centimeters +1 + + + +Not Used +Pixhawk AUXOUT1 +Pixhawk AUXOUT2 +Pixhawk AUXOUT3 +Pixhawk AUXOUT4 +Pixhawk AUXOUT5 +Pixhawk AUXOUT6 +PX4 FMU Relay1 +PX4 FMU Relay2 +PX4IO Relay1 +PX4IO Relay2 +PX4IO ACC1 +PX4IO ACC2 + + + + +No +Yes + + + +m +meters +0 32767 + + +cm +centimeters +5 127 +1 + + +0 127 +1 + + +m +meters + + +m +meters + + +m +meters + + + +Forward +Forward-Right +Right +Back-Right +Back +Back-Left +Left +Forward-Left +Up +Down + + + + + +0 255 + + +0 255 + + +0 10000 + + +0 255 + + +-1 255 + + + +Low Speed +High Speed + + + + + + +None +Analog +MaxbotixI2C +LidarLite-I2C +PWM +BBB-PRU +LightWareI2C +LightWareSerial +Bebop +MAVLink +uLanding +LeddarOne +MaxbotixSerial +TeraRangerI2C +LidarLiteV3-I2C +VL53L0X +NMEA +WASP-LRF +BenewakeTF02 +Benewake-Serial +LidarLightV3HP +PWM +BlueRoboticsPing +UAVCAN +BenewakeTFminiPlus-I2C +BenewakeTF03 + + + + +Not Used +PX4-airspeed port +Pixhawk-airspeed port +Pixhawk AUXOUT1 +Pixhawk AUXOUT2 +Pixhawk AUXOUT3 +Pixhawk AUXOUT4 +Pixhawk AUXOUT5 +Pixhawk AUXOUT6 + + + +m/V +meters per volt +0.001 + + +V +volt +0.001 + + + +Linear +Inverted +Hyperbolic + + + +cm +centimeters +1 + + +cm +centimeters +1 + + + +Not Used +Pixhawk AUXOUT1 +Pixhawk AUXOUT2 +Pixhawk AUXOUT3 +Pixhawk AUXOUT4 +Pixhawk AUXOUT5 +Pixhawk AUXOUT6 +PX4 FMU Relay1 +PX4 FMU Relay2 +PX4IO Relay1 +PX4IO Relay2 +PX4IO ACC1 +PX4IO ACC2 + + + + +No +Yes + + + +m +meters +0 32767 + + +cm +centimeters +5 127 +1 + + +0 127 +1 + + +m +meters + + +m +meters + + +m +meters + + + +Forward +Forward-Right +Right +Back-Right +Back +Back-Left +Left +Forward-Left +Up +Down + + + + + +0 255 + + +0 255 + + +0 10000 + + +0 255 + + +-1 255 + + + +Low Speed +High Speed + + + + + + +None +Analog +MaxbotixI2C +LidarLite-I2C +PWM +BBB-PRU +LightWareI2C +LightWareSerial +Bebop +MAVLink +uLanding +LeddarOne +MaxbotixSerial +TeraRangerI2C +LidarLiteV3-I2C +VL53L0X +NMEA +WASP-LRF +BenewakeTF02 +Benewake-Serial +LidarLightV3HP +PWM +BlueRoboticsPing +UAVCAN +BenewakeTFminiPlus-I2C +BenewakeTF03 + + + + +Not Used +PX4-airspeed port +Pixhawk-airspeed port +Pixhawk AUXOUT1 +Pixhawk AUXOUT2 +Pixhawk AUXOUT3 +Pixhawk AUXOUT4 +Pixhawk AUXOUT5 +Pixhawk AUXOUT6 + + + +m/V +meters per volt +0.001 + + +V +volt +0.001 + + + +Linear +Inverted +Hyperbolic + + + +cm +centimeters +1 + + +cm +centimeters +1 + + + +Not Used +Pixhawk AUXOUT1 +Pixhawk AUXOUT2 +Pixhawk AUXOUT3 +Pixhawk AUXOUT4 +Pixhawk AUXOUT5 +Pixhawk AUXOUT6 +PX4 FMU Relay1 +PX4 FMU Relay2 +PX4IO Relay1 +PX4IO Relay2 +PX4IO ACC1 +PX4IO ACC2 + + + + +No +Yes + + + +m +meters +0 32767 + + +cm +centimeters +5 127 +1 + + +0 127 +1 + + +m +meters + + +m +meters + + +m +meters + + + +Forward +Forward-Right +Right +Back-Right +Back +Back-Left +Left +Forward-Left +Up +Down + + + + + +0 255 + + +0 255 + + +0 10000 + + +0 255 + + +-1 255 + + + +Low Speed +High Speed + + + + + + +None +Analog +MaxbotixI2C +LidarLite-I2C +PWM +BBB-PRU +LightWareI2C +LightWareSerial +Bebop +MAVLink +uLanding +LeddarOne +MaxbotixSerial +TeraRangerI2C +LidarLiteV3-I2C +VL53L0X +NMEA +WASP-LRF +BenewakeTF02 +Benewake-Serial +LidarLightV3HP +PWM +BlueRoboticsPing +UAVCAN +BenewakeTFminiPlus-I2C +BenewakeTF03 + + + + +Not Used +PX4-airspeed port +Pixhawk-airspeed port +Pixhawk AUXOUT1 +Pixhawk AUXOUT2 +Pixhawk AUXOUT3 +Pixhawk AUXOUT4 +Pixhawk AUXOUT5 +Pixhawk AUXOUT6 + + + +m/V +meters per volt +0.001 + + +V +volt +0.001 + + + +Linear +Inverted +Hyperbolic + + + +cm +centimeters +1 + + +cm +centimeters +1 + + + +Not Used +Pixhawk AUXOUT1 +Pixhawk AUXOUT2 +Pixhawk AUXOUT3 +Pixhawk AUXOUT4 +Pixhawk AUXOUT5 +Pixhawk AUXOUT6 +PX4 FMU Relay1 +PX4 FMU Relay2 +PX4IO Relay1 +PX4IO Relay2 +PX4IO ACC1 +PX4IO ACC2 + + + + +No +Yes + + + +m +meters +0 32767 + + +cm +centimeters +5 127 +1 + + +0 127 +1 + + +m +meters + + +m +meters + + +m +meters + + + +Forward +Forward-Right +Right +Back-Right +Back +Back-Left +Left +Forward-Left +Up +Down + + + + + +0 255 + + +0 255 + + +0 10000 + + +0 255 + + +-1 255 + + + +Low Speed +High Speed + + + + + + +None +Analog +MaxbotixI2C +LidarLite-I2C +PWM +BBB-PRU +LightWareI2C +LightWareSerial +Bebop +MAVLink +uLanding +LeddarOne +MaxbotixSerial +TeraRangerI2C +LidarLiteV3-I2C +VL53L0X +NMEA +WASP-LRF +BenewakeTF02 +Benewake-Serial +LidarLightV3HP +PWM +BlueRoboticsPing +UAVCAN +BenewakeTFminiPlus-I2C +BenewakeTF03 + + + + +Not Used +PX4-airspeed port +Pixhawk-airspeed port +Pixhawk AUXOUT1 +Pixhawk AUXOUT2 +Pixhawk AUXOUT3 +Pixhawk AUXOUT4 +Pixhawk AUXOUT5 +Pixhawk AUXOUT6 + + + +m/V +meters per volt +0.001 + + +V +volt +0.001 + + + +Linear +Inverted +Hyperbolic + + + +cm +centimeters +1 + + +cm +centimeters +1 + + + +Not Used +Pixhawk AUXOUT1 +Pixhawk AUXOUT2 +Pixhawk AUXOUT3 +Pixhawk AUXOUT4 +Pixhawk AUXOUT5 +Pixhawk AUXOUT6 +PX4 FMU Relay1 +PX4 FMU Relay2 +PX4IO Relay1 +PX4IO Relay2 +PX4IO ACC1 +PX4IO ACC2 + + + + +No +Yes + + + +m +meters +0 32767 + + +cm +centimeters +5 127 +1 + + +0 127 +1 + + +m +meters + + +m +meters + + +m +meters + + + +Forward +Forward-Right +Right +Back-Right +Back +Back-Left +Left +Forward-Left +Up +Down + + + + + +0 255 + + +0 255 + + +0 10000 + + +0 255 + + +-1 255 + + + +Low Speed +High Speed + + + + + + +None +Analog +MaxbotixI2C +LidarLite-I2C +PWM +BBB-PRU +LightWareI2C +LightWareSerial +Bebop +MAVLink +uLanding +LeddarOne +MaxbotixSerial +TeraRangerI2C +LidarLiteV3-I2C +VL53L0X +NMEA +WASP-LRF +BenewakeTF02 +Benewake-Serial +LidarLightV3HP +PWM +BlueRoboticsPing +UAVCAN +BenewakeTFminiPlus-I2C +BenewakeTF03 + + + + +Not Used +PX4-airspeed port +Pixhawk-airspeed port +Pixhawk AUXOUT1 +Pixhawk AUXOUT2 +Pixhawk AUXOUT3 +Pixhawk AUXOUT4 +Pixhawk AUXOUT5 +Pixhawk AUXOUT6 + + + +m/V +meters per volt +0.001 + + +V +volt +0.001 + + + +Linear +Inverted +Hyperbolic + + + +cm +centimeters +1 + + +cm +centimeters +1 + + + +Not Used +Pixhawk AUXOUT1 +Pixhawk AUXOUT2 +Pixhawk AUXOUT3 +Pixhawk AUXOUT4 +Pixhawk AUXOUT5 +Pixhawk AUXOUT6 +PX4 FMU Relay1 +PX4 FMU Relay2 +PX4IO Relay1 +PX4IO Relay2 +PX4IO ACC1 +PX4IO ACC2 + + + + +No +Yes + + + +m +meters +0 32767 + + +cm +centimeters +5 127 +1 + + +0 127 +1 + + +m +meters + + +m +meters + + +m +meters + + + +Forward +Forward-Right +Right +Back-Right +Back +Back-Left +Left +Forward-Left +Up +Down + + + + + +0 255 + + +0 255 + + +0 10000 + + +0 255 + + +-1 255 + + + +Low Speed +High Speed + + + + + + +None +Analog +MaxbotixI2C +LidarLite-I2C +PWM +BBB-PRU +LightWareI2C +LightWareSerial +Bebop +MAVLink +uLanding +LeddarOne +MaxbotixSerial +TeraRangerI2C +LidarLiteV3-I2C +VL53L0X +NMEA +WASP-LRF +BenewakeTF02 +Benewake-Serial +LidarLightV3HP +PWM +BlueRoboticsPing +UAVCAN +BenewakeTFminiPlus-I2C +BenewakeTF03 + + + + +Not Used +PX4-airspeed port +Pixhawk-airspeed port +Pixhawk AUXOUT1 +Pixhawk AUXOUT2 +Pixhawk AUXOUT3 +Pixhawk AUXOUT4 +Pixhawk AUXOUT5 +Pixhawk AUXOUT6 + + + +m/V +meters per volt +0.001 + + +V +volt +0.001 + + + +Linear +Inverted +Hyperbolic + + + +cm +centimeters +1 + + +cm +centimeters +1 + + + +Not Used +Pixhawk AUXOUT1 +Pixhawk AUXOUT2 +Pixhawk AUXOUT3 +Pixhawk AUXOUT4 +Pixhawk AUXOUT5 +Pixhawk AUXOUT6 +PX4 FMU Relay1 +PX4 FMU Relay2 +PX4IO Relay1 +PX4IO Relay2 +PX4IO ACC1 +PX4IO ACC2 + + + + +No +Yes + + + +m +meters +0 32767 + + +cm +centimeters +5 127 +1 + + +0 127 +1 + + +m +meters + + +m +meters + + +m +meters + + + +Forward +Forward-Right +Right +Back-Right +Back +Back-Left +Left +Forward-Left +Up +Down + + + + + +0 255 + + +0 255 + + +0 10000 + + +0 255 + + +-1 255 + + + +Low Speed +High Speed + + + + + + +None +Analog +MaxbotixI2C +LidarLite-I2C +PWM +BBB-PRU +LightWareI2C +LightWareSerial +Bebop +MAVLink +uLanding +LeddarOne +MaxbotixSerial +TeraRangerI2C +LidarLiteV3-I2C +VL53L0X +NMEA +WASP-LRF +BenewakeTF02 +Benewake-Serial +LidarLightV3HP +PWM +BlueRoboticsPing +UAVCAN +BenewakeTFminiPlus-I2C +BenewakeTF03 + + + + +Not Used +PX4-airspeed port +Pixhawk-airspeed port +Pixhawk AUXOUT1 +Pixhawk AUXOUT2 +Pixhawk AUXOUT3 +Pixhawk AUXOUT4 +Pixhawk AUXOUT5 +Pixhawk AUXOUT6 + + + +m/V +meters per volt +0.001 + + +V +volt +0.001 + + + +Linear +Inverted +Hyperbolic + + + +cm +centimeters +1 + + +cm +centimeters +1 + + + +Not Used +Pixhawk AUXOUT1 +Pixhawk AUXOUT2 +Pixhawk AUXOUT3 +Pixhawk AUXOUT4 +Pixhawk AUXOUT5 +Pixhawk AUXOUT6 +PX4 FMU Relay1 +PX4 FMU Relay2 +PX4IO Relay1 +PX4IO Relay2 +PX4IO ACC1 +PX4IO ACC2 + + + + +No +Yes + + + +m +meters +0 32767 + + +cm +centimeters +5 127 +1 + + +0 127 +1 + + +m +meters + + +m +meters + + +m +meters + + + +Forward +Forward-Right +Right +Back-Right +Back +Back-Left +Left +Forward-Left +Up +Down + + + + + +0 255 + + +0 255 + + +0 10000 + + +0 255 + + +-1 255 + + + +Low Speed +High Speed + + + + + + +None +PWM +AUXPIN + + + +0.001 + + +1 + + +1 + + +0.1 + + + +Disabled +PixhawkAUX1 +PixhawkAUX2 +PixhawkAUX3 +PixhawkAUX4 +PixhawkAUX5 +PixhawkAUX6 + + + + +None +PWM +AUXPIN + + + +0.001 + + + +Disabled +PixhawkAUX1 +PixhawkAUX2 +PixhawkAUX3 +PixhawkAUX4 +PixhawkAUX5 +PixhawkAUX6 + + + + + + +Disabled +AnalogPin +RCChannelPwmValue +ReceiverProtocol +PWMInputPin + + + + +V5 Nano +Pixracer +Pixhawk ADC4 +Pixhawk ADC3 +Pixhawk ADC6 +Pixhawk2 ADC +PixhawkAUX1 +PixhawkAUX2 +PixhawkAUX3 +PixhawkAUX4 +PixhawkAUX5 +PixhawkAUX6 +Pixhawk SBUS + + + +V +volt +0.01 +0 5.0 + + +V +volt +0.01 +0 5.0 + + +0 16 + + +PWM +PWM in microseconds +0 2000 + + +PWM +PWM in microseconds +0 2000 + + + + + +Disabled +ShowSlips +ShowOverruns + + + + +50Hz +100Hz +200Hz +250Hz +300Hz +400Hz + +True + + + + + +None +Lua Scripts + +True + + +1000 1000000 +10000 + + +1024 1048576 +1024 +True + + + + + +1200 +2400 +4800 +9600 +19200 +38400 +57600 +111100 +115200 +256000 +460800 +500000 +921600 +1500000 + + + + +MAVlink1 +MAVLink2 + +True + + + +None +MAVLink1 +MAVLink2 +Frsky D +Frsky SPort +GPS +Alexmos Gimbal Serial +SToRM32 Gimbal Serial +Rangefinder +FrSky SPort Passthrough (OpenTX) +Lidar360 +Beacon +Volz servo out +SBus servo out +ESC Telemetry +Devo Telemetry +OpticalFlow +RobotisServo +NMEA Output +WindVane +SLCAN +RCIN + +True + + + +1200 +2400 +4800 +9600 +19200 +38400 +57600 +111100 +115200 +256000 +500000 +921600 +1500000 + + + + +None +MAVLink1 +MAVLink2 +Frsky D +Frsky SPort +GPS +Alexmos Gimbal Serial +SToRM32 Gimbal Serial +Rangefinder +FrSky SPort Passthrough (OpenTX) +Lidar360 +Beacon +Volz servo out +SBus servo out +ESC Telemetry +Devo Telemetry +OpticalFlow +RobotisServo +NMEA Output +WindVane +SLCAN +RCIN + +True + + + +1200 +2400 +4800 +9600 +19200 +38400 +57600 +111100 +115200 +256000 +500000 +921600 +1500000 + + + + +None +MAVLink1 +MAVLink2 +Frsky D +Frsky SPort +GPS +Alexmos Gimbal Serial +SToRM32 Gimbal Serial +Rangefinder +FrSky SPort Passthrough (OpenTX) +Lidar360 +Beacon +Volz servo out +SBus servo out +ESC Telemetry +Devo Telemetry +OpticalFlow +RobotisServo +NMEA Output +WindVane +SLCAN +RCIN + +True + + + +1200 +2400 +4800 +9600 +19200 +38400 +57600 +111100 +115200 +256000 +500000 +921600 +1500000 + + + + +None +MAVLink1 +MAVLink2 +Frsky D +Frsky SPort +GPS +Alexmos Gimbal Serial +SToRM32 Gimbal Serial +Rangefinder +FrSky SPort Passthrough (OpenTX) +Lidar360 +Beacon +Volz servo out +SBus servo out +ESC Telemetry +Devo Telemetry +OpticalFlow +RobotisServo +NMEA Output +WindVane +SLCAN +RCIN + +True + + + +1200 +2400 +4800 +9600 +19200 +38400 +57600 +111100 +115200 +256000 +500000 +921600 +1500000 + + + + +None +MAVLink1 +MAVLink2 +Frsky D +Frsky SPort +GPS +Alexmos Gimbal Serial +SToRM32 Gimbal Serial +Rangefinder +FrSky SPort Passthrough (OpenTX) +Lidar360 +Beacon +Volz servo out +SBus servo out +ESC Telemetry +Devo Telemetry +OpticalFlow +RobotisServo +NMEA Output +WindVane +SLCAN +RCIN + +True + + + +1200 +2400 +4800 +9600 +19200 +38400 +57600 +111100 +115200 +256000 +500000 +921600 +1500000 + + + + +None +MAVLink1 +MAVLink2 +Frsky D +Frsky SPort +GPS +Alexmos Gimbal Serial +SToRM32 Gimbal Serial +Rangefinder +FrSky SPort Passthrough (OpenTX) +Lidar360 +Beacon +Volz servo out +SBus servo out +ESC Telemetry +Devo Telemetry +OpticalFlow +RobotisServo +NMEA Output +WindVane +SLCAN +RCIN + +True + + + +1200 +2400 +4800 +9600 +19200 +38400 +57600 +111100 +115200 +256000 +500000 +921600 +1500000 + + + +0:InvertRX, 1:InvertTX, 2:HalfDuplex, 4:Swap +True + + +0:InvertRX, 1:InvertTX, 2:HalfDuplex, 4:Swap +True + + +0:InvertRX, 1:InvertTX, 2:HalfDuplex, 4:Swap +True + + +0:InvertRX, 1:InvertTX, 2:HalfDuplex, 4:Swap +True + + +0:InvertRX, 1:InvertTX, 2:HalfDuplex, 4:Swap +True + + +0:InvertRX, 1:InvertTX, 2:HalfDuplex, 4:Swap +True + + + +Disabled +Serial0 +Serial1 +Serial2 +Serial3 +Serial4 +Serial5 +Serial6 + + + + +Disabled +Serial0 +Serial1 +Serial2 +Serial3 +Serial4 +Serial5 +Serial6 + + + +0 120 +s +seconds + + + +None +MAVLink1 +MAVLink2 +Frsky D +Frsky SPort +GPS +Alexmos Gimbal Serial +SToRM32 Gimbal Serial +Rangefinder +FrSky SPort Passthrough (OpenTX) +Lidar360 +Beacon +Volz servo out +SBus servo out +ESC Telemetry +Devo Telemetry +OpticalFlow +RobotisServo +NMEA Output +WindVane +SLCAN +RCIN + +True + + + +1200 +2400 +4800 +9600 +19200 +38400 +57600 +111100 +115200 +256000 +500000 +921600 +1500000 + + + +0:InvertRX, 1:InvertTX, 2:HalfDuplex, 4:Swap +True + + + + + +Disable +Enable + + + +25 400 +Hz +hertz + + + + +PWM +PWM in microseconds +500 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + + +Normal +Reversed + + + + +Disabled +RCPassThru +Flap +Flap_auto +Aileron +mount_pan +mount_tilt +mount_roll +mount_open +camera_trigger +release +mount2_pan +mount2_tilt +mount2_roll +mount2_open +DifferentialSpoilerLeft1 +DifferentialSpoilerRight1 +Elevator +Rudder +FlaperonLeft +FlaperonRight +GroundSteering +Parachute +Gripper +LandingGear +EngineRunEnable +HeliRSC +HeliTailRSC +Motor1 +Motor2 +Motor3 +Motor4 +Motor5 +Motor6 +Motor7 +Motor8 +MotorTilt +RCIN1 +RCIN2 +RCIN3 +RCIN4 +RCIN5 +RCIN6 +RCIN7 +RCIN8 +RCIN9 +RCIN10 +RCIN11 +RCIN12 +RCIN13 +RCIN14 +RCIN15 +RCIN16 +Ignition +Choke +Starter +Throttle +TrackerYaw +TrackerPitch +ThrottleLeft +ThrottleRight +tiltMotorLeft +tiltMotorRight +ElevonLeft +ElevonRight +VTailLeft +VTailRight +BoostThrottle +Motor9 +Motor10 +Motor11 +Motor12 +DifferentialSpoilerLeft2 +DifferentialSpoilerRight2 +Main Sail +Camera ISO +Camera Focus +Camera Shutter Speed +Script 1 +Script 2 +Script 3 +Script 4 +Script 5 +Script 6 +Script 7 +Script 8 +Script 9 +Script 10 +Script 11 +Script 12 +Script 13 +Script 14 +Script 15 +Script 16 +NeoPixel1 +NeoPixel2 +NeoPixel3 +NeoPixel4 +ProfiLED 1 +ProfiLED 2 +ProfiLED 3 +ProfiLED Clock + + + + + +PWM +PWM in microseconds +500 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + + +Normal +Reversed + + + + +Disabled +RCPassThru +Flap +Flap_auto +Aileron +mount_pan +mount_tilt +mount_roll +mount_open +camera_trigger +release +mount2_pan +mount2_tilt +mount2_roll +mount2_open +DifferentialSpoilerLeft1 +DifferentialSpoilerRight1 +Elevator +Rudder +FlaperonLeft +FlaperonRight +GroundSteering +Parachute +Gripper +LandingGear +EngineRunEnable +HeliRSC +HeliTailRSC +Motor1 +Motor2 +Motor3 +Motor4 +Motor5 +Motor6 +Motor7 +Motor8 +MotorTilt +RCIN1 +RCIN2 +RCIN3 +RCIN4 +RCIN5 +RCIN6 +RCIN7 +RCIN8 +RCIN9 +RCIN10 +RCIN11 +RCIN12 +RCIN13 +RCIN14 +RCIN15 +RCIN16 +Ignition +Choke +Starter +Throttle +TrackerYaw +TrackerPitch +ThrottleLeft +ThrottleRight +tiltMotorLeft +tiltMotorRight +ElevonLeft +ElevonRight +VTailLeft +VTailRight +BoostThrottle +Motor9 +Motor10 +Motor11 +Motor12 +DifferentialSpoilerLeft2 +DifferentialSpoilerRight2 +Main Sail +Camera ISO +Camera Focus +Camera Shutter Speed +Script 1 +Script 2 +Script 3 +Script 4 +Script 5 +Script 6 +Script 7 +Script 8 +Script 9 +Script 10 +Script 11 +Script 12 +Script 13 +Script 14 +Script 15 +Script 16 +NeoPixel1 +NeoPixel2 +NeoPixel3 +NeoPixel4 +ProfiLED 1 +ProfiLED 2 +ProfiLED 3 +ProfiLED Clock + + + + + +PWM +PWM in microseconds +500 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + + +Normal +Reversed + + + + +Disabled +RCPassThru +Flap +Flap_auto +Aileron +mount_pan +mount_tilt +mount_roll +mount_open +camera_trigger +release +mount2_pan +mount2_tilt +mount2_roll +mount2_open +DifferentialSpoilerLeft1 +DifferentialSpoilerRight1 +Elevator +Rudder +FlaperonLeft +FlaperonRight +GroundSteering +Parachute +Gripper +LandingGear +EngineRunEnable +HeliRSC +HeliTailRSC +Motor1 +Motor2 +Motor3 +Motor4 +Motor5 +Motor6 +Motor7 +Motor8 +MotorTilt +RCIN1 +RCIN2 +RCIN3 +RCIN4 +RCIN5 +RCIN6 +RCIN7 +RCIN8 +RCIN9 +RCIN10 +RCIN11 +RCIN12 +RCIN13 +RCIN14 +RCIN15 +RCIN16 +Ignition +Choke +Starter +Throttle +TrackerYaw +TrackerPitch +ThrottleLeft +ThrottleRight +tiltMotorLeft +tiltMotorRight +ElevonLeft +ElevonRight +VTailLeft +VTailRight +BoostThrottle +Motor9 +Motor10 +Motor11 +Motor12 +DifferentialSpoilerLeft2 +DifferentialSpoilerRight2 +Main Sail +Camera ISO +Camera Focus +Camera Shutter Speed +Script 1 +Script 2 +Script 3 +Script 4 +Script 5 +Script 6 +Script 7 +Script 8 +Script 9 +Script 10 +Script 11 +Script 12 +Script 13 +Script 14 +Script 15 +Script 16 +NeoPixel1 +NeoPixel2 +NeoPixel3 +NeoPixel4 +ProfiLED 1 +ProfiLED 2 +ProfiLED 3 +ProfiLED Clock + + + + + +PWM +PWM in microseconds +500 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + + +Normal +Reversed + + + + +Disabled +RCPassThru +Flap +Flap_auto +Aileron +mount_pan +mount_tilt +mount_roll +mount_open +camera_trigger +release +mount2_pan +mount2_tilt +mount2_roll +mount2_open +DifferentialSpoilerLeft1 +DifferentialSpoilerRight1 +Elevator +Rudder +FlaperonLeft +FlaperonRight +GroundSteering +Parachute +Gripper +LandingGear +EngineRunEnable +HeliRSC +HeliTailRSC +Motor1 +Motor2 +Motor3 +Motor4 +Motor5 +Motor6 +Motor7 +Motor8 +MotorTilt +RCIN1 +RCIN2 +RCIN3 +RCIN4 +RCIN5 +RCIN6 +RCIN7 +RCIN8 +RCIN9 +RCIN10 +RCIN11 +RCIN12 +RCIN13 +RCIN14 +RCIN15 +RCIN16 +Ignition +Choke +Starter +Throttle +TrackerYaw +TrackerPitch +ThrottleLeft +ThrottleRight +tiltMotorLeft +tiltMotorRight +ElevonLeft +ElevonRight +VTailLeft +VTailRight +BoostThrottle +Motor9 +Motor10 +Motor11 +Motor12 +DifferentialSpoilerLeft2 +DifferentialSpoilerRight2 +Main Sail +Camera ISO +Camera Focus +Camera Shutter Speed +Script 1 +Script 2 +Script 3 +Script 4 +Script 5 +Script 6 +Script 7 +Script 8 +Script 9 +Script 10 +Script 11 +Script 12 +Script 13 +Script 14 +Script 15 +Script 16 +NeoPixel1 +NeoPixel2 +NeoPixel3 +NeoPixel4 +ProfiLED 1 +ProfiLED 2 +ProfiLED 3 +ProfiLED Clock + + + + + +PWM +PWM in microseconds +500 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + + +Normal +Reversed + + + + +Disabled +RCPassThru +Flap +Flap_auto +Aileron +mount_pan +mount_tilt +mount_roll +mount_open +camera_trigger +release +mount2_pan +mount2_tilt +mount2_roll +mount2_open +DifferentialSpoilerLeft1 +DifferentialSpoilerRight1 +Elevator +Rudder +FlaperonLeft +FlaperonRight +GroundSteering +Parachute +Gripper +LandingGear +EngineRunEnable +HeliRSC +HeliTailRSC +Motor1 +Motor2 +Motor3 +Motor4 +Motor5 +Motor6 +Motor7 +Motor8 +MotorTilt +RCIN1 +RCIN2 +RCIN3 +RCIN4 +RCIN5 +RCIN6 +RCIN7 +RCIN8 +RCIN9 +RCIN10 +RCIN11 +RCIN12 +RCIN13 +RCIN14 +RCIN15 +RCIN16 +Ignition +Choke +Starter +Throttle +TrackerYaw +TrackerPitch +ThrottleLeft +ThrottleRight +tiltMotorLeft +tiltMotorRight +ElevonLeft +ElevonRight +VTailLeft +VTailRight +BoostThrottle +Motor9 +Motor10 +Motor11 +Motor12 +DifferentialSpoilerLeft2 +DifferentialSpoilerRight2 +Main Sail +Camera ISO +Camera Focus +Camera Shutter Speed +Script 1 +Script 2 +Script 3 +Script 4 +Script 5 +Script 6 +Script 7 +Script 8 +Script 9 +Script 10 +Script 11 +Script 12 +Script 13 +Script 14 +Script 15 +Script 16 +NeoPixel1 +NeoPixel2 +NeoPixel3 +NeoPixel4 +ProfiLED 1 +ProfiLED 2 +ProfiLED 3 +ProfiLED Clock + + + + + +PWM +PWM in microseconds +500 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + + +Normal +Reversed + + + + +Disabled +RCPassThru +Flap +Flap_auto +Aileron +mount_pan +mount_tilt +mount_roll +mount_open +camera_trigger +release +mount2_pan +mount2_tilt +mount2_roll +mount2_open +DifferentialSpoilerLeft1 +DifferentialSpoilerRight1 +Elevator +Rudder +FlaperonLeft +FlaperonRight +GroundSteering +Parachute +Gripper +LandingGear +EngineRunEnable +HeliRSC +HeliTailRSC +Motor1 +Motor2 +Motor3 +Motor4 +Motor5 +Motor6 +Motor7 +Motor8 +MotorTilt +RCIN1 +RCIN2 +RCIN3 +RCIN4 +RCIN5 +RCIN6 +RCIN7 +RCIN8 +RCIN9 +RCIN10 +RCIN11 +RCIN12 +RCIN13 +RCIN14 +RCIN15 +RCIN16 +Ignition +Choke +Starter +Throttle +TrackerYaw +TrackerPitch +ThrottleLeft +ThrottleRight +tiltMotorLeft +tiltMotorRight +ElevonLeft +ElevonRight +VTailLeft +VTailRight +BoostThrottle +Motor9 +Motor10 +Motor11 +Motor12 +DifferentialSpoilerLeft2 +DifferentialSpoilerRight2 +Main Sail +Camera ISO +Camera Focus +Camera Shutter Speed +Script 1 +Script 2 +Script 3 +Script 4 +Script 5 +Script 6 +Script 7 +Script 8 +Script 9 +Script 10 +Script 11 +Script 12 +Script 13 +Script 14 +Script 15 +Script 16 +NeoPixel1 +NeoPixel2 +NeoPixel3 +NeoPixel4 +ProfiLED 1 +ProfiLED 2 +ProfiLED 3 +ProfiLED Clock + + + + + +PWM +PWM in microseconds +500 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + + +Normal +Reversed + + + + +Disabled +RCPassThru +Flap +Flap_auto +Aileron +mount_pan +mount_tilt +mount_roll +mount_open +camera_trigger +release +mount2_pan +mount2_tilt +mount2_roll +mount2_open +DifferentialSpoilerLeft1 +DifferentialSpoilerRight1 +Elevator +Rudder +FlaperonLeft +FlaperonRight +GroundSteering +Parachute +Gripper +LandingGear +EngineRunEnable +HeliRSC +HeliTailRSC +Motor1 +Motor2 +Motor3 +Motor4 +Motor5 +Motor6 +Motor7 +Motor8 +MotorTilt +RCIN1 +RCIN2 +RCIN3 +RCIN4 +RCIN5 +RCIN6 +RCIN7 +RCIN8 +RCIN9 +RCIN10 +RCIN11 +RCIN12 +RCIN13 +RCIN14 +RCIN15 +RCIN16 +Ignition +Choke +Starter +Throttle +TrackerYaw +TrackerPitch +ThrottleLeft +ThrottleRight +tiltMotorLeft +tiltMotorRight +ElevonLeft +ElevonRight +VTailLeft +VTailRight +BoostThrottle +Motor9 +Motor10 +Motor11 +Motor12 +DifferentialSpoilerLeft2 +DifferentialSpoilerRight2 +Main Sail +Camera ISO +Camera Focus +Camera Shutter Speed +Script 1 +Script 2 +Script 3 +Script 4 +Script 5 +Script 6 +Script 7 +Script 8 +Script 9 +Script 10 +Script 11 +Script 12 +Script 13 +Script 14 +Script 15 +Script 16 +NeoPixel1 +NeoPixel2 +NeoPixel3 +NeoPixel4 +ProfiLED 1 +ProfiLED 2 +ProfiLED 3 +ProfiLED Clock + + + + + +PWM +PWM in microseconds +500 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + + +Normal +Reversed + + + + +Disabled +RCPassThru +Flap +Flap_auto +Aileron +mount_pan +mount_tilt +mount_roll +mount_open +camera_trigger +release +mount2_pan +mount2_tilt +mount2_roll +mount2_open +DifferentialSpoilerLeft1 +DifferentialSpoilerRight1 +Elevator +Rudder +FlaperonLeft +FlaperonRight +GroundSteering +Parachute +Gripper +LandingGear +EngineRunEnable +HeliRSC +HeliTailRSC +Motor1 +Motor2 +Motor3 +Motor4 +Motor5 +Motor6 +Motor7 +Motor8 +MotorTilt +RCIN1 +RCIN2 +RCIN3 +RCIN4 +RCIN5 +RCIN6 +RCIN7 +RCIN8 +RCIN9 +RCIN10 +RCIN11 +RCIN12 +RCIN13 +RCIN14 +RCIN15 +RCIN16 +Ignition +Choke +Starter +Throttle +TrackerYaw +TrackerPitch +ThrottleLeft +ThrottleRight +tiltMotorLeft +tiltMotorRight +ElevonLeft +ElevonRight +VTailLeft +VTailRight +BoostThrottle +Motor9 +Motor10 +Motor11 +Motor12 +DifferentialSpoilerLeft2 +DifferentialSpoilerRight2 +Main Sail +Camera ISO +Camera Focus +Camera Shutter Speed +Script 1 +Script 2 +Script 3 +Script 4 +Script 5 +Script 6 +Script 7 +Script 8 +Script 9 +Script 10 +Script 11 +Script 12 +Script 13 +Script 14 +Script 15 +Script 16 +NeoPixel1 +NeoPixel2 +NeoPixel3 +NeoPixel4 +ProfiLED 1 +ProfiLED 2 +ProfiLED 3 +ProfiLED Clock + + + + + +PWM +PWM in microseconds +500 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + + +Normal +Reversed + + + + +Disabled +RCPassThru +Flap +Flap_auto +Aileron +mount_pan +mount_tilt +mount_roll +mount_open +camera_trigger +release +mount2_pan +mount2_tilt +mount2_roll +mount2_open +DifferentialSpoilerLeft1 +DifferentialSpoilerRight1 +Elevator +Rudder +FlaperonLeft +FlaperonRight +GroundSteering +Parachute +Gripper +LandingGear +EngineRunEnable +HeliRSC +HeliTailRSC +Motor1 +Motor2 +Motor3 +Motor4 +Motor5 +Motor6 +Motor7 +Motor8 +MotorTilt +RCIN1 +RCIN2 +RCIN3 +RCIN4 +RCIN5 +RCIN6 +RCIN7 +RCIN8 +RCIN9 +RCIN10 +RCIN11 +RCIN12 +RCIN13 +RCIN14 +RCIN15 +RCIN16 +Ignition +Choke +Starter +Throttle +TrackerYaw +TrackerPitch +ThrottleLeft +ThrottleRight +tiltMotorLeft +tiltMotorRight +ElevonLeft +ElevonRight +VTailLeft +VTailRight +BoostThrottle +Motor9 +Motor10 +Motor11 +Motor12 +DifferentialSpoilerLeft2 +DifferentialSpoilerRight2 +Main Sail +Camera ISO +Camera Focus +Camera Shutter Speed +Script 1 +Script 2 +Script 3 +Script 4 +Script 5 +Script 6 +Script 7 +Script 8 +Script 9 +Script 10 +Script 11 +Script 12 +Script 13 +Script 14 +Script 15 +Script 16 +NeoPixel1 +NeoPixel2 +NeoPixel3 +NeoPixel4 +ProfiLED 1 +ProfiLED 2 +ProfiLED 3 +ProfiLED Clock + + + + + +PWM +PWM in microseconds +500 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + + +Normal +Reversed + + + + +Disabled +RCPassThru +Flap +Flap_auto +Aileron +mount_pan +mount_tilt +mount_roll +mount_open +camera_trigger +release +mount2_pan +mount2_tilt +mount2_roll +mount2_open +DifferentialSpoilerLeft1 +DifferentialSpoilerRight1 +Elevator +Rudder +FlaperonLeft +FlaperonRight +GroundSteering +Parachute +Gripper +LandingGear +EngineRunEnable +HeliRSC +HeliTailRSC +Motor1 +Motor2 +Motor3 +Motor4 +Motor5 +Motor6 +Motor7 +Motor8 +MotorTilt +RCIN1 +RCIN2 +RCIN3 +RCIN4 +RCIN5 +RCIN6 +RCIN7 +RCIN8 +RCIN9 +RCIN10 +RCIN11 +RCIN12 +RCIN13 +RCIN14 +RCIN15 +RCIN16 +Ignition +Choke +Starter +Throttle +TrackerYaw +TrackerPitch +ThrottleLeft +ThrottleRight +tiltMotorLeft +tiltMotorRight +ElevonLeft +ElevonRight +VTailLeft +VTailRight +BoostThrottle +Motor9 +Motor10 +Motor11 +Motor12 +DifferentialSpoilerLeft2 +DifferentialSpoilerRight2 +Main Sail +Camera ISO +Camera Focus +Camera Shutter Speed +Script 1 +Script 2 +Script 3 +Script 4 +Script 5 +Script 6 +Script 7 +Script 8 +Script 9 +Script 10 +Script 11 +Script 12 +Script 13 +Script 14 +Script 15 +Script 16 +NeoPixel1 +NeoPixel2 +NeoPixel3 +NeoPixel4 +ProfiLED 1 +ProfiLED 2 +ProfiLED 3 +ProfiLED Clock + + + + + +PWM +PWM in microseconds +500 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + + +Normal +Reversed + + + + +Disabled +RCPassThru +Flap +Flap_auto +Aileron +mount_pan +mount_tilt +mount_roll +mount_open +camera_trigger +release +mount2_pan +mount2_tilt +mount2_roll +mount2_open +DifferentialSpoilerLeft1 +DifferentialSpoilerRight1 +Elevator +Rudder +FlaperonLeft +FlaperonRight +GroundSteering +Parachute +Gripper +LandingGear +EngineRunEnable +HeliRSC +HeliTailRSC +Motor1 +Motor2 +Motor3 +Motor4 +Motor5 +Motor6 +Motor7 +Motor8 +MotorTilt +RCIN1 +RCIN2 +RCIN3 +RCIN4 +RCIN5 +RCIN6 +RCIN7 +RCIN8 +RCIN9 +RCIN10 +RCIN11 +RCIN12 +RCIN13 +RCIN14 +RCIN15 +RCIN16 +Ignition +Choke +Starter +Throttle +TrackerYaw +TrackerPitch +ThrottleLeft +ThrottleRight +tiltMotorLeft +tiltMotorRight +ElevonLeft +ElevonRight +VTailLeft +VTailRight +BoostThrottle +Motor9 +Motor10 +Motor11 +Motor12 +DifferentialSpoilerLeft2 +DifferentialSpoilerRight2 +Main Sail +Camera ISO +Camera Focus +Camera Shutter Speed +Script 1 +Script 2 +Script 3 +Script 4 +Script 5 +Script 6 +Script 7 +Script 8 +Script 9 +Script 10 +Script 11 +Script 12 +Script 13 +Script 14 +Script 15 +Script 16 +NeoPixel1 +NeoPixel2 +NeoPixel3 +NeoPixel4 +ProfiLED 1 +ProfiLED 2 +ProfiLED 3 +ProfiLED Clock + + + + + +PWM +PWM in microseconds +500 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + + +Normal +Reversed + + + + +Disabled +RCPassThru +Flap +Flap_auto +Aileron +mount_pan +mount_tilt +mount_roll +mount_open +camera_trigger +release +mount2_pan +mount2_tilt +mount2_roll +mount2_open +DifferentialSpoilerLeft1 +DifferentialSpoilerRight1 +Elevator +Rudder +FlaperonLeft +FlaperonRight +GroundSteering +Parachute +Gripper +LandingGear +EngineRunEnable +HeliRSC +HeliTailRSC +Motor1 +Motor2 +Motor3 +Motor4 +Motor5 +Motor6 +Motor7 +Motor8 +MotorTilt +RCIN1 +RCIN2 +RCIN3 +RCIN4 +RCIN5 +RCIN6 +RCIN7 +RCIN8 +RCIN9 +RCIN10 +RCIN11 +RCIN12 +RCIN13 +RCIN14 +RCIN15 +RCIN16 +Ignition +Choke +Starter +Throttle +TrackerYaw +TrackerPitch +ThrottleLeft +ThrottleRight +tiltMotorLeft +tiltMotorRight +ElevonLeft +ElevonRight +VTailLeft +VTailRight +BoostThrottle +Motor9 +Motor10 +Motor11 +Motor12 +DifferentialSpoilerLeft2 +DifferentialSpoilerRight2 +Main Sail +Camera ISO +Camera Focus +Camera Shutter Speed +Script 1 +Script 2 +Script 3 +Script 4 +Script 5 +Script 6 +Script 7 +Script 8 +Script 9 +Script 10 +Script 11 +Script 12 +Script 13 +Script 14 +Script 15 +Script 16 +NeoPixel1 +NeoPixel2 +NeoPixel3 +NeoPixel4 +ProfiLED 1 +ProfiLED 2 +ProfiLED 3 +ProfiLED Clock + + + + + +PWM +PWM in microseconds +500 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + + +Normal +Reversed + + + + +Disabled +RCPassThru +Flap +Flap_auto +Aileron +mount_pan +mount_tilt +mount_roll +mount_open +camera_trigger +release +mount2_pan +mount2_tilt +mount2_roll +mount2_open +DifferentialSpoilerLeft1 +DifferentialSpoilerRight1 +Elevator +Rudder +FlaperonLeft +FlaperonRight +GroundSteering +Parachute +Gripper +LandingGear +EngineRunEnable +HeliRSC +HeliTailRSC +Motor1 +Motor2 +Motor3 +Motor4 +Motor5 +Motor6 +Motor7 +Motor8 +MotorTilt +RCIN1 +RCIN2 +RCIN3 +RCIN4 +RCIN5 +RCIN6 +RCIN7 +RCIN8 +RCIN9 +RCIN10 +RCIN11 +RCIN12 +RCIN13 +RCIN14 +RCIN15 +RCIN16 +Ignition +Choke +Starter +Throttle +TrackerYaw +TrackerPitch +ThrottleLeft +ThrottleRight +tiltMotorLeft +tiltMotorRight +ElevonLeft +ElevonRight +VTailLeft +VTailRight +BoostThrottle +Motor9 +Motor10 +Motor11 +Motor12 +DifferentialSpoilerLeft2 +DifferentialSpoilerRight2 +Main Sail +Camera ISO +Camera Focus +Camera Shutter Speed +Script 1 +Script 2 +Script 3 +Script 4 +Script 5 +Script 6 +Script 7 +Script 8 +Script 9 +Script 10 +Script 11 +Script 12 +Script 13 +Script 14 +Script 15 +Script 16 +NeoPixel1 +NeoPixel2 +NeoPixel3 +NeoPixel4 +ProfiLED 1 +ProfiLED 2 +ProfiLED 3 +ProfiLED Clock + + + + + +PWM +PWM in microseconds +500 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + + +Normal +Reversed + + + + +Disabled +RCPassThru +Flap +Flap_auto +Aileron +mount_pan +mount_tilt +mount_roll +mount_open +camera_trigger +release +mount2_pan +mount2_tilt +mount2_roll +mount2_open +DifferentialSpoilerLeft1 +DifferentialSpoilerRight1 +Elevator +Rudder +FlaperonLeft +FlaperonRight +GroundSteering +Parachute +Gripper +LandingGear +EngineRunEnable +HeliRSC +HeliTailRSC +Motor1 +Motor2 +Motor3 +Motor4 +Motor5 +Motor6 +Motor7 +Motor8 +MotorTilt +RCIN1 +RCIN2 +RCIN3 +RCIN4 +RCIN5 +RCIN6 +RCIN7 +RCIN8 +RCIN9 +RCIN10 +RCIN11 +RCIN12 +RCIN13 +RCIN14 +RCIN15 +RCIN16 +Ignition +Choke +Starter +Throttle +TrackerYaw +TrackerPitch +ThrottleLeft +ThrottleRight +tiltMotorLeft +tiltMotorRight +ElevonLeft +ElevonRight +VTailLeft +VTailRight +BoostThrottle +Motor9 +Motor10 +Motor11 +Motor12 +DifferentialSpoilerLeft2 +DifferentialSpoilerRight2 +Main Sail +Camera ISO +Camera Focus +Camera Shutter Speed +Script 1 +Script 2 +Script 3 +Script 4 +Script 5 +Script 6 +Script 7 +Script 8 +Script 9 +Script 10 +Script 11 +Script 12 +Script 13 +Script 14 +Script 15 +Script 16 +NeoPixel1 +NeoPixel2 +NeoPixel3 +NeoPixel4 +ProfiLED 1 +ProfiLED 2 +ProfiLED 3 +ProfiLED Clock + + + + + +PWM +PWM in microseconds +500 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + + +Normal +Reversed + + + + +Disabled +RCPassThru +Flap +Flap_auto +Aileron +mount_pan +mount_tilt +mount_roll +mount_open +camera_trigger +release +mount2_pan +mount2_tilt +mount2_roll +mount2_open +DifferentialSpoilerLeft1 +DifferentialSpoilerRight1 +Elevator +Rudder +FlaperonLeft +FlaperonRight +GroundSteering +Parachute +Gripper +LandingGear +EngineRunEnable +HeliRSC +HeliTailRSC +Motor1 +Motor2 +Motor3 +Motor4 +Motor5 +Motor6 +Motor7 +Motor8 +MotorTilt +RCIN1 +RCIN2 +RCIN3 +RCIN4 +RCIN5 +RCIN6 +RCIN7 +RCIN8 +RCIN9 +RCIN10 +RCIN11 +RCIN12 +RCIN13 +RCIN14 +RCIN15 +RCIN16 +Ignition +Choke +Starter +Throttle +TrackerYaw +TrackerPitch +ThrottleLeft +ThrottleRight +tiltMotorLeft +tiltMotorRight +ElevonLeft +ElevonRight +VTailLeft +VTailRight +BoostThrottle +Motor9 +Motor10 +Motor11 +Motor12 +DifferentialSpoilerLeft2 +DifferentialSpoilerRight2 +Main Sail +Camera ISO +Camera Focus +Camera Shutter Speed +Script 1 +Script 2 +Script 3 +Script 4 +Script 5 +Script 6 +Script 7 +Script 8 +Script 9 +Script 10 +Script 11 +Script 12 +Script 13 +Script 14 +Script 15 +Script 16 +NeoPixel1 +NeoPixel2 +NeoPixel3 +NeoPixel4 +ProfiLED 1 +ProfiLED 2 +ProfiLED 3 +ProfiLED Clock + + + + + +PWM +PWM in microseconds +500 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + + +Normal +Reversed + + + + +Disabled +RCPassThru +Flap +Flap_auto +Aileron +mount_pan +mount_tilt +mount_roll +mount_open +camera_trigger +release +mount2_pan +mount2_tilt +mount2_roll +mount2_open +DifferentialSpoilerLeft1 +DifferentialSpoilerRight1 +Elevator +Rudder +FlaperonLeft +FlaperonRight +GroundSteering +Parachute +Gripper +LandingGear +EngineRunEnable +HeliRSC +HeliTailRSC +Motor1 +Motor2 +Motor3 +Motor4 +Motor5 +Motor6 +Motor7 +Motor8 +MotorTilt +RCIN1 +RCIN2 +RCIN3 +RCIN4 +RCIN5 +RCIN6 +RCIN7 +RCIN8 +RCIN9 +RCIN10 +RCIN11 +RCIN12 +RCIN13 +RCIN14 +RCIN15 +RCIN16 +Ignition +Choke +Starter +Throttle +TrackerYaw +TrackerPitch +ThrottleLeft +ThrottleRight +tiltMotorLeft +tiltMotorRight +ElevonLeft +ElevonRight +VTailLeft +VTailRight +BoostThrottle +Motor9 +Motor10 +Motor11 +Motor12 +DifferentialSpoilerLeft2 +DifferentialSpoilerRight2 +Main Sail +Camera ISO +Camera Focus +Camera Shutter Speed +Script 1 +Script 2 +Script 3 +Script 4 +Script 5 +Script 6 +Script 7 +Script 8 +Script 9 +Script 10 +Script 11 +Script 12 +Script 13 +Script 14 +Script 15 +Script 16 +NeoPixel1 +NeoPixel2 +NeoPixel3 +NeoPixel4 +ProfiLED 1 +ProfiLED 2 +ProfiLED 3 +ProfiLED Clock + + + + + +0:Channel1,1:Channel2,2:Channel3,3:Channel4,4:Channel5,5:Channel6,6:Channel7,7:Channel8,8:Channel9,9:Channel10,10:Channel11,11:Channel12,12:Channel13,13:Channel14,14:Channel15,15:Channel16 + + + +Disabled +Enabled + + + + +Disabled +TestMotor1 +TestMotor2 +TestMotor3 +TestMotor4 +TestMotor5 +TestMotor6 +TestMotor7 +TestMotor8 + + + +s +seconds +0 300 + + +Hz +hertz +0 500 + + + +Disabled +Enabled + + + + +None +OneShot +OneShot125 +Brushed +DShot150 +DShot300 +DShot600 +DShot1200 + + + + +Console +Serial1 +Serial2 +Serial3 +Serial4 +Serial5 + + + +1 127 + + +0:Channel1,1:Channel2,2:Channel3,3:Channel4,4:Channel5,5:Channel6,6:Channel7,7:Channel8,8:Channel9,9:Channel10,10:Channel11,11:Channel12,12:Channel13,13:Channel14,14:Channel15,15:Channel16 + + + + +0 4095 + + +0 4095 + + + + +25 250 +Hz +hertz + + + + +0:Channel1,1:Channel2,2:Channel3,3:Channel4,4:Channel5,5:Channel6,6:Channel7,7:Channel8,8:Channel9,9:Channel10,10:Channel11,11:Channel12,12:Channel13,13:Channel14,14:Channel15,15:Channel16 + + + + + +None +Input Roll Angle +Input Pitch Angle +Input Yaw Angle +Recovery Roll Angle +Recovery Pitch Angle +Recovery Yaw Angle +Rate Roll +Rate Pitch +Rate Yaw +Mixer Roll +Mixer Pitch +Mixer Yaw +Mixer Thrust + + + + + +0.01 100 +Hz +hertz + + +0.01 100 +Hz +hertz + + +0 20 +s +seconds + + +0 255 +s +seconds + + +0 5 +s +seconds + + + + + +Disabled +Enabled + + + +% +percent +0 100 + + +ms +milliseconds +1000 2000 + + +cm/s +centimeters per second +0 1000 + + +% +percent +0 100 + + + + +Hz +hertz +0 10 +1 + + +Hz +hertz +0 10 +1 + + +Hz +hertz +0 10 +1 + + +Hz +hertz +0 10 +1 + + +Hz +hertz +0 10 +1 + + +Hz +hertz +0 10 +1 + + +Hz +hertz +0 10 +1 + + +Hz +hertz +0 10 +1 + + +Hz +hertz +0 10 +1 + + +Hz +hertz +0 50 +1 + + + + +Hz +hertz +0 10 +1 + + +Hz +hertz +0 10 +1 + + +Hz +hertz +0 10 +1 + + +Hz +hertz +0 10 +1 + + +Hz +hertz +0 10 +1 + + +Hz +hertz +0 10 +1 + + +Hz +hertz +0 10 +1 + + +Hz +hertz +0 10 +1 + + +Hz +hertz +0 10 +1 + + +Hz +hertz +0 50 +1 + + + + +Hz +hertz +0 10 +1 + + +Hz +hertz +0 10 +1 + + +Hz +hertz +0 10 +1 + + +Hz +hertz +0 10 +1 + + +Hz +hertz +0 10 +1 + + +Hz +hertz +0 10 +1 + + +Hz +hertz +0 10 +1 + + +Hz +hertz +0 10 +1 + + +Hz +hertz +0 10 +1 + + +Hz +hertz +0 50 +1 + + + + +Hz +hertz +0 10 +1 + + +Hz +hertz +0 10 +1 + + +Hz +hertz +0 10 +1 + + +Hz +hertz +0 10 +1 + + +Hz +hertz +0 10 +1 + + +Hz +hertz +0 10 +1 + + +Hz +hertz +0 10 +1 + + +Hz +hertz +0 10 +1 + + +Hz +hertz +0 10 +1 + + +Hz +hertz +0 50 +1 + + + + +m +meters +0 10 + + +0 500 +True + + + + +True + + +s +seconds +True + + +s +seconds +True + + +s +seconds +True + + + + + +Disabled +Enabled +EnableAndLearn + + + +degC +degrees Celsius +True +True + + +degC +degrees Celsius +True +True + + +True +True + + + + + +Disable +Enable + + + +m +meters +1 + + +0:Disable Download + + + + + +Disabled +EnableVersion1 +EnableVersion2 + + + + +Stabilize +Acro +AltHold +Auto +Guided +Loiter +RTL +Circle +Land +Drift +Sport +Flip +AutoTune +PosHold +Brake +Throw +Avoid_ADSB +Guided_NoGPS +FlowHold + + + + +Stabilize +Acro +AltHold +Auto +Guided +Loiter +RTL +Circle +Land +Drift +Sport +Flip +AutoTune +PosHold +Brake +Throw +Avoid_ADSB +Guided_NoGPS +FlowHold + + + + +None +TakePhoto +ToggleVideo +ModeAcro +ModeAltHold +ModeAuto +ModeLoiter +ModeRTL +ModeCircle +ModeLand +ModeDrift +ModeSport +ModeAutoTune +ModePosHold +ModeBrake +ModeThrow +Flip +ModeStabilize +Disarm +ToggleMode +Arm-Land-RTL +ToggleSimpleMode +ToggleSuperSimpleMode +MotorLoadTest +ModeFlowHold + + + + +None +TakePhoto +ToggleVideo +ModeAcro +ModeAltHold +ModeAuto +ModeLoiter +ModeRTL +ModeCircle +ModeLand +ModeDrift +ModeSport +ModeAutoTune +ModePosHold +ModeBrake +ModeThrow +Flip +ModeStabilize +Disarm +ToggleMode +Arm-Land-RTL +ToggleSimpleMode +ToggleSuperSimpleMode +MotorLoadTest +ModeFlowHold + + + + +None +TakePhoto +ToggleVideo +ModeAcro +ModeAltHold +ModeAuto +ModeLoiter +ModeRTL +ModeCircle +ModeLand +ModeDrift +ModeSport +ModeAutoTune +ModePosHold +ModeBrake +ModeThrow +Flip +ModeStabilize +Disarm +ToggleMode +Arm-Land-RTL +ToggleSimpleMode +ToggleSuperSimpleMode +MotorLoadTest +ModeFlowHold + + + + +None +TakePhoto +ToggleVideo +ModeAcro +ModeAltHold +ModeAuto +ModeLoiter +ModeRTL +ModeCircle +ModeLand +ModeDrift +ModeSport +ModeAutoTune +ModePosHold +ModeBrake +ModeThrow +Flip +ModeStabilize +Disarm +ToggleMode +Arm-Land-RTL +ToggleSimpleMode +ToggleSuperSimpleMode +MotorLoadTest +ModeFlowHold + + + + +None +TakePhoto +ToggleVideo +ModeAcro +ModeAltHold +ModeAuto +ModeLoiter +ModeRTL +ModeCircle +ModeLand +ModeDrift +ModeSport +ModeAutoTune +ModePosHold +ModeBrake +ModeThrow +Flip +ModeStabilize +Disarm +ToggleMode +Arm-Land-RTL +ToggleSimpleMode +ToggleSuperSimpleMode +MotorLoadTest +ModeFlowHold + + + + +None +TakePhoto +ToggleVideo +ModeAcro +ModeAltHold +ModeAuto +ModeLoiter +ModeRTL +ModeCircle +ModeLand +ModeDrift +ModeSport +ModeAutoTune +ModePosHold +ModeBrake +ModeThrow +Flip +ModeStabilize +Disarm +ToggleMode +Arm-Land-RTL +ToggleSimpleMode +ToggleSuperSimpleMode +MotorLoadTest +ModeFlowHold + + + + +None +TakePhoto +ToggleVideo +ModeAcro +ModeAltHold +ModeAuto +ModeLoiter +ModeRTL +ModeCircle +ModeLand +ModeDrift +ModeSport +ModeAutoTune +ModePosHold +ModeBrake +ModeThrow +Flip +ModeStabilize +Disarm +ToggleMode +Arm-Land-RTL +ToggleSimpleMode +ToggleSuperSimpleMode +MotorLoadTest +ModeFlowHold + + + + +None +TakePhoto +ToggleVideo +ModeAcro +ModeAltHold +ModeAuto +ModeLoiter +ModeRTL +ModeCircle +ModeLand +ModeDrift +ModeSport +ModeAutoTune +ModePosHold +ModeBrake +ModeThrow +Flip +ModeStabilize +Disarm +ToggleMode +Arm-Land-RTL +ToggleSimpleMode +ToggleSuperSimpleMode +MotorLoadTest +ModeFlowHold + + + +0 100 + + + +None +TakePhoto +ToggleVideo +ModeAcro +ModeAltHold +ModeAuto +ModeLoiter +ModeRTL +ModeCircle +ModeLand +ModeDrift +ModeSport +ModeAutoTune +ModePosHold +ModeBrake +ModeThrow +Flip +ModeStabilize +Disarm +ToggleMode +Arm-Land-RTL +ToggleSimpleMode +ToggleSuperSimpleMode +MotorLoadTest + + + +0:DisarmOnLowThrottle,1:ArmOnHighThrottle,2:UpgradeToLoiter,3:RTLStickCancel + + +0 5 +0.01 + + +0 5 +0.01 + + +0 1 +0.01 + + +0 1 +0.01 + + +0 1 +0.01 + + +0 100 + + + +ConstantThrust +LogReplay1 +LogReplay2 + + + + + + +None +MAV + + + +m +meters + + +m +meters + + +m +meters + + + +Forward +Right +Back +Left +Up +Down + + + + + + +None +Quadrature +SITL Quadrature + + + +1 + + +m +meters +0.001 + + +m +meters +0.01 + + +m +meters +0.01 + + +m +meters +0.01 + + + +Disabled +PixhawkAUX1 +PixhawkAUX2 +PixhawkAUX3 +PixhawkAUX4 +PixhawkAUX5 +PixhawkAUX6 + + + + +Disabled +PixhawkAUX1 +PixhawkAUX2 +PixhawkAUX3 +PixhawkAUX4 +PixhawkAUX5 +PixhawkAUX6 + + + + +None +Quadrature +SITL Quadrature + + + +1 + + +m +meters +0.001 + + +m +meters +0.01 + + +m +meters +0.01 + + +m +meters +0.01 + + + +Disabled +PixhawkAUX1 +PixhawkAUX2 +PixhawkAUX3 +PixhawkAUX4 +PixhawkAUX5 +PixhawkAUX6 + + + + +Disabled +PixhawkAUX1 +PixhawkAUX2 +PixhawkAUX3 +PixhawkAUX4 +PixhawkAUX5 +PixhawkAUX6 + + + + + + +Disabled +Enabled + + + + +Servo with encoder + + + +0 10 +m/s +meters per second + + +0.01 10.0 + + +0.100 2.000 + + +0.000 2.000 + + +0.000 1.000 + + +0.000 0.400 + + +1.000 100.000 +Hz +hertz + + + + +cm/s +centimeters per second +20 2000 +50 + + +cm +centimeters +5 1000 +1 + + +cm/s +centimeters per second +10 1000 +50 + + +cm/s +centimeters per second +10 500 +10 + + +cm/s/s +centimeters per square second +50 500 +10 + + +cm/s/s +centimeters per square second +50 500 +10 + + + +Disable +Enable + + + + diff --git a/src/FirmwarePlugin/APM/APMParameterFactMetaData.Copter.4.2.xml b/src/FirmwarePlugin/APM/APMParameterFactMetaData.Copter.4.1.xml similarity index 89% rename from src/FirmwarePlugin/APM/APMParameterFactMetaData.Copter.4.2.xml rename to src/FirmwarePlugin/APM/APMParameterFactMetaData.Copter.4.1.xml index 49b2c68..4898e43 100644 --- a/src/FirmwarePlugin/APM/APMParameterFactMetaData.Copter.4.2.xml +++ b/src/FirmwarePlugin/APM/APMParameterFactMetaData.Copter.4.1.xml @@ -13,34 +13,33 @@ 1 255 - 0 10 - .5 Hz hertz + 0 10 + .5 - 0.0 1000.0 - 10 cm centimeters + 0.0 1000.0 + 10 - 0:Feedback from mid stick,1:High throttle cancels landing,2:Disarm on land detection None Feedback from mid stick High throttle cancels landing Disarm on land detection + 0:Feedback from mid stick,1:High throttle cancels landing,2:Disarm on land detection - 0 30 - 1 s seconds + 0 30 + 1 - 0:Roll,1:Pitch,2:Yaw,3:AccelZ None Roll @@ -48,45 +47,46 @@ Yaw AccelZ + 0:Roll,1:Pitch,2:Yaw,3:AccelZ - 200 300000 - 1 cm centimeters + 200 8000 + 1 0.5 10.0 + .1 Disabled Shallow Steep - .1 - 0 2000 - 50 cm/s centimeters per second + 0 2000 + 50 + cm + centimeters 0 1000 1 - cm - centimeters - 0 3000 - 10 cm centimeters + 0 3000 + 10 - 0 60000 - 1000 ms milliseconds + 0 60000 + 1000 @@ -94,6 +94,10 @@ Terrain + + 0.01 2.0 + 0.01 + Disabled/NoAction @@ -101,15 +105,79 @@ RTL or Continue with Mission in Auto Mode (Removed in 4.0+-see FS_OPTIONS) SmartRTL or RTL SmartRTL or Land - Land - Auto DO_LAND_START or RTL + Land (4.0+ Only) 100 900 - - 0:SwitchPos1, 1:SwitchPos2, 2:SwitchPos3, 3:SwitchPos4, 4:SwitchPos5, 5:SwitchPos6 + + + Disabled + Mode1 + Mode2 + Mode1+2 + Mode3 + Mode1+3 + Mode2+3 + Mode1+2+3 + Mode4 + Mode1+4 + Mode2+4 + Mode1+2+4 + Mode3+4 + Mode1+3+4 + Mode2+3+4 + Mode1+2+3+4 + Mode5 + Mode1+5 + Mode2+5 + Mode1+2+5 + Mode3+5 + Mode1+3+5 + Mode2+3+5 + Mode1+2+3+5 + Mode4+5 + Mode1+4+5 + Mode2+4+5 + Mode1+2+4+5 + Mode3+4+5 + Mode1+3+4+5 + Mode2+3+4+5 + Mode1+2+3+4+5 + Mode6 + Mode1+6 + Mode2+6 + Mode1+2+6 + Mode3+6 + Mode1+3+6 + Mode2+3+6 + Mode1+2+3+6 + Mode4+6 + Mode1+4+6 + Mode2+4+6 + Mode1+2+4+6 + Mode3+4+6 + Mode1+3+4+6 + Mode2+3+4+6 + Mode1+2+3+4+6 + Mode5+6 + Mode1+5+6 + Mode2+5+6 + Mode1+2+5+6 + Mode3+5+6 + Mode1+3+5+6 + Mode2+3+5+6 + Mode1+2+3+5+6 + Mode4+5+6 + Mode1+4+5+6 + Mode2+4+5+6 + Mode1+2+4+5+6 + Mode3+4+5+6 + Mode1+3+4+5+6 + Mode2+3+4+5+6 + Mode1+2+3+4+5+6 + @@ -120,28 +188,28 @@ + cm/s + centimeters per second 30 200 10 - cm/s - centimeters per second + cm/s + centimeters per second 0 500 10 - cm/s - centimeters per second - 50 500 - 10 cm/s centimeters per second - - 50 500 10 + + cm/s/s centimeters per square second + 50 500 + 10 @@ -151,22 +219,21 @@ Enabled always Land Enabled always SmartRTL or RTL Enabled always SmartRTL or Land - Enabled Auto DO_LAND_START or RTL 910 1100 - 1 PWM PWM in microseconds + 1 0 300 - 1 PWM PWM in microseconds + 1 - + Stabilize Acro @@ -192,10 +259,9 @@ ZigZag SystemID Heli_Autorotate - Auto RTL - + Stabilize Acro @@ -221,10 +287,9 @@ ZigZag SystemID Heli_Autorotate - Auto RTL - + Stabilize Acro @@ -250,10 +315,9 @@ ZigZag SystemID Heli_Autorotate - Auto RTL - + Stabilize Acro @@ -279,10 +343,9 @@ ZigZag SystemID Heli_Autorotate - Auto RTL - + Stabilize Acro @@ -308,10 +371,9 @@ ZigZag SystemID Heli_Autorotate - Auto RTL - + Stabilize Acro @@ -337,7 +399,6 @@ ZigZag SystemID Heli_Autorotate - Auto RTL @@ -384,11 +445,10 @@ Heli_Autorotate - - 0:SwitchPos1, 1:SwitchPos2, 2:SwitchPos3, 3:SwitchPos4, 4:SwitchPos5, 5:SwitchPos6 - + + - 0:ATTITUDE_FAST,1:ATTITUDE_MED,2:GPS,3:PM,4:CTUN,5:NTUN,6:RCIN,7:IMU,8:CMD,9:CURRENT,10:RCOUT,11:OPTFLOW,12:PID,13:COMPASS,14:INAV,15:CAMERA,17:MOTBATT,18:IMU_FAST,19:IMU_RAW,20:VideoStabilization + 0:ATTITUDE_FAST,1:ATTITUDE_MED,2:GPS,3:PM,4:CTUN,5:NTUN,6:RCIN,7:IMU,8:CMD,9:CURRENT,10:RCOUT,11:OPTFLOW,12:PID,13:COMPASS,14:INAV,15:CAMERA,17:MOTBATT,18:IMU_FAST,19:IMU_RAW @@ -420,12 +480,13 @@ Velocity XY kP Velocity XY kI WP Speed - Acro Roll/Pitch deg/s - Acro Yaw deg/s + Acro RollPitch kP + Acro Yaw kP RC Feel Heli Ext Gyro Declination Circle Rate + RangeFinder Gain Rate Pitch kP Rate Pitch kI Rate Pitch kD @@ -453,31 +514,30 @@ ClockwiseX I BetaFlightXReversed - Y4 True - 0 127 s seconds + 0 127 - 1000 8000 - 10 cdeg centidegrees + 10 + 1000 8000 - 4 12 deg/s degrees per second + 4 12 - 2000 4500 - 10 cdeg centidegrees + 10 + 2000 4500 @@ -493,11 +553,7 @@ - - Strict - Default - Relaxed - + 0.6:Strict,0.8:Default,1.0:Relaxed @@ -506,10 +562,16 @@ - 50 490 - 1 Hz hertz + 50 490 + 1 + + + 1 10 + + + 1 10 0 3 @@ -527,7 +589,6 @@ - -0.5 0.95 Disabled Very Low @@ -536,6 +597,7 @@ High Very High + -0.5 1.0 @@ -573,7 +635,6 @@ 0:ADSBMavlinkProcessing,1:DevOptionVFR_HUDRelativeAlt - -1.0 0.95 Disabled Very Low @@ -582,6 +643,7 @@ High Very High + -0.5 1.0 0 1 @@ -611,21 +673,20 @@ Deca Scripting Matrix 6DoF Scripting - Dynamic Scripting Matrix True - - 0 500 - 10 + cm/s centimeters per second + 50 500 + 10 - 100 10000 - 10 cm centimeters + 100 10000 + 10 @@ -638,7 +699,6 @@ - 0:Continue if in Auto on RC failsafe, 1:Continue if in Auto on GCS failsafe, 2:Continue if in Guided on RC failsafe, 3:Continue if landing on any failsafe, 4:Continue if in pilot controlled modes on GCS failsafe, 5:Release Gripper Disabled Continue if in Auto on RC failsafe only @@ -649,6 +709,7 @@ Continue if in pilot controlled modes on GCS failsafe Continue if in Auto on RC and/or GCS failsafe and continue if in pilot controlled modes on GCS failsafe + 0:Continue if in Auto on RC failsafe, 1:Continue if in Auto on GCS failsafe, 2:Continue if in Guided on RC failsafe, 3:Continue if landing on any failsafe, 4:Continue if in pilot controlled modes on GCS failsafe, 5:Release Gripper 0:Air-mode,1:Rate Loop Only @@ -657,65 +718,27 @@ 0:Allow Arming,1:Allow Takeoff Without Raising Throttle,2:Ignore pilot yaw - 0:Allow Arming from Transmitter,2:Ignore pilot yaw,3:SetAttitudeTarget interprets Thrust As Thrust,4:Do not stabilize PositionXY,5:Do not stabilize VelocityXY,6:Waypoint navigation used for position targets + 0:Allow Arming from Transmitter,2:Ignore pilot yaw,3:SetAttitudeTarget_ThrustAsThrust - 2 120 - 1 s seconds + 2 120 + 1 2:Ignore pilot yaw - 0:Disable thrust loss check, 1:Disable yaw imbalance warning, 2:Release gripper on thrust loss + 0:Disable thrust loss check, 1:Disable yaw imbalance warning - 0 5 - 0.05 Hz hertz + 0 5 + 0.05 True - - 0.1 5 - s - seconds - - - 1 1080 - deg/s - degrees per second - - - 1 360 - deg/s - degrees per second - - - 1 360 - deg/s - degrees per second - - - -0.5 1.0 - - Disabled - Very Low - Low - Medium - High - Very High - - - - - Do not track - Ground - Ceiling - - @@ -725,7 +748,6 @@ Disabled uAvionix-MAVLink Sagetech - uAvionix-UCP True @@ -738,7 +760,7 @@ m meters - + -1 16777215 @@ -828,9 +850,6 @@ log all - - 0:Ping200X Send GPS,1:Squawk 7400 on RC failsafe,2:Squawk 7400 on GCS failsafe - @@ -913,11 +932,10 @@ 0.0 1.0 .01 - + Disabled - Use GPS for DCM position - Use GPS for DCM position and height + Enabled @@ -930,29 +948,29 @@ 0 127 - 1 m/s meters per second + 1 - -0.1745 +0.1745 - 0.01 rad radians + -0.1745 +0.1745 + 0.01 - -0.1745 +0.1745 - 0.01 rad radians + -0.1745 +0.1745 + 0.01 - -0.1745 +0.1745 - 0.01 rad radians + -0.1745 +0.1745 + 0.01 - + None Yaw45 @@ -963,40 +981,38 @@ Yaw270 Yaw315 Roll180 - Yaw45Roll180 - Yaw90Roll180 - Yaw135Roll180 + Roll180Yaw45 + Roll180Yaw90 + Roll180Yaw135 Pitch180 - Yaw225Roll180 - Yaw270Roll180 - Yaw315Roll180 + Roll180Yaw225 + Roll180Yaw270 + Roll180Yaw315 Roll90 - Yaw45Roll90 - Yaw90Roll90 - Yaw135Roll90 + Roll90Yaw45 + Roll90Yaw90 + Roll90Yaw135 Roll270 - Yaw45Roll270 - Yaw90Roll270 - Yaw135Roll270 + Roll270Yaw45 + Roll270Yaw90 + Roll270Yaw135 Pitch90 Pitch270 - Yaw90Pitch180 - Yaw270Pitch180 - Pitch90Roll90 - Pitch90Roll180 - Pitch90Roll270 - Pitch180Roll90 - Pitch180Roll270 - Pitch270Roll90 - Pitch270Roll180 - Pitch270Roll270 - Yaw90Pitch180Roll90 - Yaw270Roll90 + Pitch180Yaw90 + Pitch180Yaw270 + Roll90Pitch90 + Roll180Pitch90 + Roll270Pitch90 + Roll90Pitch180 + Roll270Pitch180 + Roll90Pitch270 + Roll180Pitch270 + Roll270Pitch270 + Roll90Pitch180Yaw90 + Roll90Yaw270 Yaw293Pitch68Roll180 Pitch315 - Pitch315Roll90 - Roll45 - Roll315 + Roll90Pitch315 Custom @@ -1018,28 +1034,28 @@ -180 180 - 1 deg degrees + 1 -180 180 - 1 deg degrees + 1 -180 180 - 1 deg degrees + 1 - 0.25 3.0 m/s/s meters per square second + 0.25 3.0 @@ -1067,46 +1083,46 @@ 0.01 - 1000 2800 - 1 RPM Revolutions Per Minute + 1000 2800 + 1 - 800 2000 - 50 cm/s centimeters per second + 800 2000 + 50 + Hz + hertz 0.2 0.5 0.01 - Hz - hertz - 0.03 0.15 - 0.01 Hz hertz + 0.03 0.15 + 0.01 - 30 60 - 10 cm/s/s centimeters per square second + 30 60 + 10 + s + seconds 0.5 4 0.1 - s - seconds - 0.5 3 - 0.1 s seconds + 0.5 3 + 0.1 0.1 6.0 @@ -1117,157 +1133,16 @@ 0.01 - - - - None - I2C-MS4525D0 - Analog - I2C-MS5525 - I2C-MS5525 (0x76) - I2C-MS5525 (0x77) - I2C-SDP3X - I2C-DLVR-5in - DroneCAN - I2C-DLVR-10in - I2C-DLVR-20in - I2C-DLVR-30in - I2C-DLVR-60in - NMEA water speed - MSP - ASP5033 - - - - True - - - - DoNotUse - Use - UseWhenZeroThrottle - - - - 0.1 - - - 0.1 - - - - - - - - Normal - Swapped - Auto Detect - - - - - Disable - Enable - - - - - - - Bus0(internal) - Bus1(external) - Bus2(auxillary) - - - - - FirstSensor - 2ndSensor - - - - 0:SpeedMismatchDisable, 1:AllowSpeedMismatchRecovery, 2:DisableVoltageCorrection - - - m/s - meters per second - - - m/s - meters per second - - - - None - I2C-MS4525D0 - Analog - I2C-MS5525 - I2C-MS5525 (0x76) - I2C-MS5525 (0x77) - I2C-SDP3X - I2C-DLVR-5in - DroneCAN - I2C-DLVR-10in - I2C-DLVR-20in - I2C-DLVR-30in - I2C-DLVR-60in - NMEA water speed - MSP - ASP5033 - - - - - Don't Use - use - UseWhenZeroThrottle - - - - 0.1 - - - 0.1 - - - - - - - - Normal - Swapped - Auto Detect - - - - - Disable - Enable - - - - - - - Bus0(internal) - Bus1(external) - Bus2(auxillary) - - - - True - - - 500 18000 - 100 cdeg/s centidegrees per second + 500 18000 + 100 + cdeg/s/s + centidegrees per square second 0 72000 Disabled @@ -1277,8 +1152,6 @@ Fast 1000 - cdeg/s/s - centidegrees per square second @@ -1287,7 +1160,10 @@ + cdeg/s/s + centidegrees per square second 0 180000 + 1000 Disabled VerySlow @@ -1295,12 +1171,12 @@ Medium Fast - 1000 - cdeg/s/s - centidegrees per square second + cdeg/s/s + centidegrees per square second 0 180000 + 1000 Disabled VerySlow @@ -1308,9 +1184,6 @@ Medium Fast - 1000 - cdeg/s/s - centidegrees per square second @@ -1331,53 +1204,47 @@ 0.5 10.0 - 0 1080 - - Disabled - Slow - Medium - Fast - - 1 deg/s degrees per second + 0 1080 + 1 + + Disabled + Slow + Medium + Fast + - 0 1080 - - Disabled - Slow - Medium - Fast - - 1 deg/s degrees per second + 0 1080 + 1 + + Disabled + Slow + Medium + Fast + - 0 1080 - - Disabled - Slow - Medium - Fast - - 1 deg/s degrees per second + 0 1080 + 1 + + Disabled + Slow + Medium + Fast + - 0 1 - - Very Soft - Soft - Medium - Crisp - Very Crisp - - 0.01 s seconds + 0 1 + 0.01 + 0.5:Very Soft,0.2:Soft,0.15:Medium,0.1:Crisp,0.05:Very Crisp 0.01 0.5 @@ -1515,10 +1382,10 @@ 0.1 0.9 - 0 1000 - 10 cdeg centidegrees + 10 + 0 1000 0.0 0.35 @@ -1539,7 +1406,7 @@ 0.0 0.03 0.001 - + 0.05 0.5 0.001 @@ -1584,7 +1451,7 @@ 0.0 0.03 0.001 - + 0.05 0.5 0.001 @@ -1629,7 +1496,7 @@ 0.000 0.02 0.001 - + 0 0.5 0.001 @@ -1672,24 +1539,6 @@ 0.001 0.006 - - 0:Roll,1:Pitch,2:Yaw - - - 0:VFF,1:Rate D/Rate P(incl max gain),2:Angle P,3:Max Gain Only - - - 10 30 - - - 50 120 - - - 1 2.5 - - - 0 1 - @@ -1759,20 +1608,20 @@ 0:UseFence,1:UseProximitySensor,2:UseBeaconFence - 0 4500 - 10 cdeg centidegrees + 10 + 0 4500 - 1 30 m meters + 1 30 - 1 10 m meters + 1 10 @@ -1781,44 +1630,44 @@ - 0 2 m/s meters per second + 0 2 - 0 6 m meters + 0 6 - 0 9 m/s/s meters per square second + 0 9 - 0 2 m meters + 0 2 - True - True - 1 Pa pascal + 1 + True + True - True - 1 degC degrees Celsius + 1 + True - 0.1 m meters + 0.1 @@ -1835,30 +1684,27 @@ - - Freshwater - Saltwater - + 1.0:Freshwater,1.024:Saltwater - True - True - 1 Pa pascal + 1 + True + True - True - True - 1 Pa pascal + 1 + True + True - 0 100 - 1 % percent + 0 100 + 1 0:BMP085,1:BMP280,2:MS5611,3:MS5607,4:MS5637,5:FBM320,6:DPS280,7:LPS25H,8:Keller,9:MS5837,10:BMP388,11:SPL06,12:MSP @@ -1954,9 +1800,9 @@ Solo Bebop SMBus-Generic - DroneCAN-BatteryInfo + UAVCAN-BatteryInfo ESC - Sum Of Selected Monitors + SumOfFollowing FuelFlow FuelLevelPWM SMBUS-SUI3 @@ -1966,92 +1812,13 @@ Generator-Elec Generator-Fuel Rotoye - MPPT - INA2XX - LTC2946 - Torqeedo True - - 50 - mAh - milliampere hour - - - - - 0 120 - 1 - s - seconds - - - - Raw Voltage - Sag Compensated Voltage - - - - 0.1 - V - volt - - - 50 - mAh - milliampere hour - - - 0.1 - V - volt - - - 50 - mAh - milliampere hour - - - - None - Land - RTL - SmartRTL or RTL - SmartRTL or Land - Terminate - Auto DO_LAND_START or RTL - - - - - None - Land - RTL - SmartRTL or RTL - SmartRTL or Land - Terminate - Auto DO_LAND_START or RTL - - - - 0.1 - V - volt - - - 50 - mAh - milliampere hour - - - 0:Ignore DroneCAN SoC, 1:MPPT reports input voltage and current, 2:MPPT Powered off when disarmed, 3:MPPT Powered on when armed, 4:MPPT Powered off at boot, 5:MPPT Powered on at boot, 6:Send resistance compensated voltage to GCS - Disabled Pixhawk/Pixracer/Navio2/Pixhawk2_PM1 - Navigator Pixhawk2_PM2/CubeOrange_PM2 CubeOrange Durandal @@ -2063,7 +1830,7 @@ Disabled Pixhawk/Pixracer/Navio2/Pixhawk2_PM1 - CubeOrange_PM2/Navigator + CubeOrange_PM2 Pixhawk2_PM2 CubeOrange Durandal @@ -2081,23 +1848,80 @@ V volt - + + mAh + milliampere hour + 50 + + + + + s + seconds + 1 + 0 120 + + + + Raw Voltage + Sag Compensated Voltage + + + V volt + 0.1 - + + mAh + milliampere hour + 50 + + + V + volt + 0.1 + + + mAh + milliampere hour + 50 + + + + None + Land + RTL + SmartRTL or RTL + SmartRTL or Land + Terminate + + + + + None + Land + RTL + SmartRTL or RTL + SmartRTL or Land + Terminate + + + + V + volt + 0.1 + + + mAh + milliampere hour + 50 + + 0 3 - True - - 0 127 - True - - - 0:monitor 1, 1:monitor 2, 2:monitor 3, 3:monitor 4, 4:monitor 5, 5:monitor 6, 6:monitor 7, 7:monitor 8, 8:monitor 9 - - - .1 10 + + 0:Ignore UAVCAN SoC @@ -2109,9 +1933,9 @@ Solo Bebop SMBus-Generic - DroneCAN-BatteryInfo + UAVCAN-BatteryInfo ESC - Sum Of Selected Monitors + SumOfFollowing FuelFlow FuelLevelPWM SMBUS-SUI3 @@ -2121,92 +1945,13 @@ Generator-Elec Generator-Fuel Rotoye - MPPT - INA2XX - LTC2946 - Torqeedo True - - 50 - mAh - milliampere hour - - - - - 0 120 - 1 - s - seconds - - - - Raw Voltage - Sag Compensated Voltage - - - - 0.1 - V - volt - - - 50 - mAh - milliampere hour - - - 0.1 - V - volt - - - 50 - mAh - milliampere hour - - - - None - Land - RTL - SmartRTL or RTL - SmartRTL or Land - Terminate - Auto DO_LAND_START or RTL - - - - - None - Land - RTL - SmartRTL or RTL - SmartRTL or Land - Terminate - Auto DO_LAND_START or RTL - - - - 0.1 - V - volt - - - 50 - mAh - milliampere hour - - - 0:Ignore DroneCAN SoC, 1:MPPT reports input voltage and current, 2:MPPT Powered off when disarmed, 3:MPPT Powered on when armed, 4:MPPT Powered off at boot, 5:MPPT Powered on at boot, 6:Send resistance compensated voltage to GCS - Disabled Pixhawk/Pixracer/Navio2/Pixhawk2_PM1 - Navigator Pixhawk2_PM2/CubeOrange_PM2 CubeOrange Durandal @@ -2218,7 +1963,7 @@ Disabled Pixhawk/Pixracer/Navio2/Pixhawk2_PM1 - CubeOrange_PM2/Navigator + CubeOrange_PM2 Pixhawk2_PM2 CubeOrange Durandal @@ -2236,23 +1981,80 @@ V volt - + + mAh + milliampere hour + 50 + + + + + s + seconds + 1 + 0 120 + + + + Raw Voltage + Sag Compensated Voltage + + + V volt + 0.1 - + + mAh + milliampere hour + 50 + + + V + volt + 0.1 + + + mAh + milliampere hour + 50 + + + + None + Land + RTL + SmartRTL or RTL + SmartRTL or Land + Terminate + + + + + None + Land + RTL + SmartRTL or RTL + SmartRTL or Land + Terminate + + + + V + volt + 0.1 + + + mAh + milliampere hour + 50 + + 0 3 - True - - 0 127 - True - - - 0:monitor 1, 1:monitor 2, 2:monitor 3, 3:monitor 4, 4:monitor 5, 5:monitor 6, 6:monitor 7, 7:monitor 8, 8:monitor 9 - - - .1 10 + + 0:Ignore UAVCAN SoC @@ -2264,9 +2066,9 @@ Solo Bebop SMBus-Generic - DroneCAN-BatteryInfo + UAVCAN-BatteryInfo ESC - Sum Of Selected Monitors + SumOfFollowing FuelFlow FuelLevelPWM SMBUS-SUI3 @@ -2276,92 +2078,13 @@ Generator-Elec Generator-Fuel Rotoye - MPPT - INA2XX - LTC2946 - Torqeedo True - - 50 - mAh - milliampere hour - - - - - 0 120 - 1 - s - seconds - - - - Raw Voltage - Sag Compensated Voltage - - - - 0.1 - V - volt - - - 50 - mAh - milliampere hour - - - 0.1 - V - volt - - - 50 - mAh - milliampere hour - - - - None - Land - RTL - SmartRTL or RTL - SmartRTL or Land - Terminate - Auto DO_LAND_START or RTL - - - - - None - Land - RTL - SmartRTL or RTL - SmartRTL or Land - Terminate - Auto DO_LAND_START or RTL - - - - 0.1 - V - volt - - - 50 - mAh - milliampere hour - - - 0:Ignore DroneCAN SoC, 1:MPPT reports input voltage and current, 2:MPPT Powered off when disarmed, 3:MPPT Powered on when armed, 4:MPPT Powered off at boot, 5:MPPT Powered on at boot, 6:Send resistance compensated voltage to GCS - Disabled Pixhawk/Pixracer/Navio2/Pixhawk2_PM1 - Navigator Pixhawk2_PM2/CubeOrange_PM2 CubeOrange Durandal @@ -2373,7 +2096,7 @@ Disabled Pixhawk/Pixracer/Navio2/Pixhawk2_PM1 - CubeOrange_PM2/Navigator + CubeOrange_PM2 Pixhawk2_PM2 CubeOrange Durandal @@ -2391,23 +2114,80 @@ V volt - + + mAh + milliampere hour + 50 + + + + + s + seconds + 1 + 0 120 + + + + Raw Voltage + Sag Compensated Voltage + + + V volt + 0.1 - + + mAh + milliampere hour + 50 + + + V + volt + 0.1 + + + mAh + milliampere hour + 50 + + + + None + Land + RTL + SmartRTL or RTL + SmartRTL or Land + Terminate + + + + + None + Land + RTL + SmartRTL or RTL + SmartRTL or Land + Terminate + + + + V + volt + 0.1 + + + mAh + milliampere hour + 50 + + 0 3 - True - - 0 127 - True - - - 0:monitor 1, 1:monitor 2, 2:monitor 3, 3:monitor 4, 4:monitor 5, 5:monitor 6, 6:monitor 7, 7:monitor 8, 8:monitor 9 - - - .1 10 + + 0:Ignore UAVCAN SoC @@ -2419,9 +2199,9 @@ Solo Bebop SMBus-Generic - DroneCAN-BatteryInfo + UAVCAN-BatteryInfo ESC - Sum Of Selected Monitors + SumOfFollowing FuelFlow FuelLevelPWM SMBUS-SUI3 @@ -2431,92 +2211,13 @@ Generator-Elec Generator-Fuel Rotoye - MPPT - INA2XX - LTC2946 - Torqeedo True - - 50 - mAh - milliampere hour - - - - - 0 120 - 1 - s - seconds - - - - Raw Voltage - Sag Compensated Voltage - - - - 0.1 - V - volt - - - 50 - mAh - milliampere hour - - - 0.1 - V - volt - - - 50 - mAh - milliampere hour - - - - None - Land - RTL - SmartRTL or RTL - SmartRTL or Land - Terminate - Auto DO_LAND_START or RTL - - - - - None - Land - RTL - SmartRTL or RTL - SmartRTL or Land - Terminate - Auto DO_LAND_START or RTL - - - - 0.1 - V - volt - - - 50 - mAh - milliampere hour - - - 0:Ignore DroneCAN SoC, 1:MPPT reports input voltage and current, 2:MPPT Powered off when disarmed, 3:MPPT Powered on when armed, 4:MPPT Powered off at boot, 5:MPPT Powered on at boot, 6:Send resistance compensated voltage to GCS - Disabled Pixhawk/Pixracer/Navio2/Pixhawk2_PM1 - Navigator Pixhawk2_PM2/CubeOrange_PM2 CubeOrange Durandal @@ -2528,7 +2229,7 @@ Disabled Pixhawk/Pixracer/Navio2/Pixhawk2_PM1 - CubeOrange_PM2/Navigator + CubeOrange_PM2 Pixhawk2_PM2 CubeOrange Durandal @@ -2546,23 +2247,80 @@ V volt - + + mAh + milliampere hour + 50 + + + + + s + seconds + 1 + 0 120 + + + + Raw Voltage + Sag Compensated Voltage + + + V volt + 0.1 - + + mAh + milliampere hour + 50 + + + V + volt + 0.1 + + + mAh + milliampere hour + 50 + + + + None + Land + RTL + SmartRTL or RTL + SmartRTL or Land + Terminate + + + + + None + Land + RTL + SmartRTL or RTL + SmartRTL or Land + Terminate + + + + V + volt + 0.1 + + + mAh + milliampere hour + 50 + + 0 3 - True - - 0 127 - True - - - 0:monitor 1, 1:monitor 2, 2:monitor 3, 3:monitor 4, 4:monitor 5, 5:monitor 6, 6:monitor 7, 7:monitor 8, 8:monitor 9 - - - .1 10 + + 0:Ignore UAVCAN SoC @@ -2574,9 +2332,9 @@ Solo Bebop SMBus-Generic - DroneCAN-BatteryInfo + UAVCAN-BatteryInfo ESC - Sum Of Selected Monitors + SumOfFollowing FuelFlow FuelLevelPWM SMBUS-SUI3 @@ -2586,92 +2344,13 @@ Generator-Elec Generator-Fuel Rotoye - MPPT - INA2XX - LTC2946 - Torqeedo True - - 50 - mAh - milliampere hour - - - - - 0 120 - 1 - s - seconds - - - - Raw Voltage - Sag Compensated Voltage - - - - 0.1 - V - volt - - - 50 - mAh - milliampere hour - - - 0.1 - V - volt - - - 50 - mAh - milliampere hour - - - - None - Land - RTL - SmartRTL or RTL - SmartRTL or Land - Terminate - Auto DO_LAND_START or RTL - - - - - None - Land - RTL - SmartRTL or RTL - SmartRTL or Land - Terminate - Auto DO_LAND_START or RTL - - - - 0.1 - V - volt - - - 50 - mAh - milliampere hour - - - 0:Ignore DroneCAN SoC, 1:MPPT reports input voltage and current, 2:MPPT Powered off when disarmed, 3:MPPT Powered on when armed, 4:MPPT Powered off at boot, 5:MPPT Powered on at boot, 6:Send resistance compensated voltage to GCS - Disabled Pixhawk/Pixracer/Navio2/Pixhawk2_PM1 - Navigator Pixhawk2_PM2/CubeOrange_PM2 CubeOrange Durandal @@ -2683,7 +2362,7 @@ Disabled Pixhawk/Pixracer/Navio2/Pixhawk2_PM1 - CubeOrange_PM2/Navigator + CubeOrange_PM2 Pixhawk2_PM2 CubeOrange Durandal @@ -2701,23 +2380,80 @@ V volt - + + mAh + milliampere hour + 50 + + + + + s + seconds + 1 + 0 120 + + + + Raw Voltage + Sag Compensated Voltage + + + V volt + 0.1 - + + mAh + milliampere hour + 50 + + + V + volt + 0.1 + + + mAh + milliampere hour + 50 + + + + None + Land + RTL + SmartRTL or RTL + SmartRTL or Land + Terminate + + + + + None + Land + RTL + SmartRTL or RTL + SmartRTL or Land + Terminate + + + + V + volt + 0.1 + + + mAh + milliampere hour + 50 + + 0 3 - True - - 0 127 - True - - - 0:monitor 1, 1:monitor 2, 2:monitor 3, 3:monitor 4, 4:monitor 5, 5:monitor 6, 6:monitor 7, 7:monitor 8, 8:monitor 9 - - - .1 10 + + 0:Ignore UAVCAN SoC @@ -2729,9 +2465,9 @@ Solo Bebop SMBus-Generic - DroneCAN-BatteryInfo + UAVCAN-BatteryInfo ESC - Sum Of Selected Monitors + SumOfFollowing FuelFlow FuelLevelPWM SMBUS-SUI3 @@ -2741,92 +2477,13 @@ Generator-Elec Generator-Fuel Rotoye - MPPT - INA2XX - LTC2946 - Torqeedo True - - 50 - mAh - milliampere hour - - - - - 0 120 - 1 - s - seconds - - - - Raw Voltage - Sag Compensated Voltage - - - - 0.1 - V - volt - - - 50 - mAh - milliampere hour - - - 0.1 - V - volt - - - 50 - mAh - milliampere hour - - - - None - Land - RTL - SmartRTL or RTL - SmartRTL or Land - Terminate - Auto DO_LAND_START or RTL - - - - - None - Land - RTL - SmartRTL or RTL - SmartRTL or Land - Terminate - Auto DO_LAND_START or RTL - - - - 0.1 - V - volt - - - 50 - mAh - milliampere hour - - - 0:Ignore DroneCAN SoC, 1:MPPT reports input voltage and current, 2:MPPT Powered off when disarmed, 3:MPPT Powered on when armed, 4:MPPT Powered off at boot, 5:MPPT Powered on at boot, 6:Send resistance compensated voltage to GCS - Disabled Pixhawk/Pixracer/Navio2/Pixhawk2_PM1 - Navigator Pixhawk2_PM2/CubeOrange_PM2 CubeOrange Durandal @@ -2838,7 +2495,7 @@ Disabled Pixhawk/Pixracer/Navio2/Pixhawk2_PM1 - CubeOrange_PM2/Navigator + CubeOrange_PM2 Pixhawk2_PM2 CubeOrange Durandal @@ -2856,23 +2513,80 @@ V volt - + + mAh + milliampere hour + 50 + + + + + s + seconds + 1 + 0 120 + + + + Raw Voltage + Sag Compensated Voltage + + + V volt + 0.1 - + + mAh + milliampere hour + 50 + + + V + volt + 0.1 + + + mAh + milliampere hour + 50 + + + + None + Land + RTL + SmartRTL or RTL + SmartRTL or Land + Terminate + + + + + None + Land + RTL + SmartRTL or RTL + SmartRTL or Land + Terminate + + + + V + volt + 0.1 + + + mAh + milliampere hour + 50 + + 0 3 - True - - 0 127 - True - - - 0:monitor 1, 1:monitor 2, 2:monitor 3, 3:monitor 4, 4:monitor 5, 5:monitor 6, 6:monitor 7, 7:monitor 8, 8:monitor 9 - - - .1 10 + + 0:Ignore UAVCAN SoC @@ -2884,9 +2598,9 @@ Solo Bebop SMBus-Generic - DroneCAN-BatteryInfo + UAVCAN-BatteryInfo ESC - Sum Of Selected Monitors + SumOfFollowing FuelFlow FuelLevelPWM SMBUS-SUI3 @@ -2896,92 +2610,13 @@ Generator-Elec Generator-Fuel Rotoye - MPPT - INA2XX - LTC2946 - Torqeedo True - - 50 - mAh - milliampere hour - - - - - 0 120 - 1 - s - seconds - - - - Raw Voltage - Sag Compensated Voltage - - - - 0.1 - V - volt - - - 50 - mAh - milliampere hour - - - 0.1 - V - volt - - - 50 - mAh - milliampere hour - - - - None - Land - RTL - SmartRTL or RTL - SmartRTL or Land - Terminate - Auto DO_LAND_START or RTL - - - - - None - Land - RTL - SmartRTL or RTL - SmartRTL or Land - Terminate - Auto DO_LAND_START or RTL - - - - 0.1 - V - volt - - - 50 - mAh - milliampere hour - - - 0:Ignore DroneCAN SoC, 1:MPPT reports input voltage and current, 2:MPPT Powered off when disarmed, 3:MPPT Powered on when armed, 4:MPPT Powered off at boot, 5:MPPT Powered on at boot, 6:Send resistance compensated voltage to GCS - Disabled Pixhawk/Pixracer/Navio2/Pixhawk2_PM1 - Navigator Pixhawk2_PM2/CubeOrange_PM2 CubeOrange Durandal @@ -2993,7 +2628,7 @@ Disabled Pixhawk/Pixracer/Navio2/Pixhawk2_PM1 - CubeOrange_PM2/Navigator + CubeOrange_PM2 Pixhawk2_PM2 CubeOrange Durandal @@ -3011,23 +2646,80 @@ V volt - + + mAh + milliampere hour + 50 + + + + + s + seconds + 1 + 0 120 + + + + Raw Voltage + Sag Compensated Voltage + + + V volt + 0.1 - + + mAh + milliampere hour + 50 + + + V + volt + 0.1 + + + mAh + milliampere hour + 50 + + + + None + Land + RTL + SmartRTL or RTL + SmartRTL or Land + Terminate + + + + + None + Land + RTL + SmartRTL or RTL + SmartRTL or Land + Terminate + + + + V + volt + 0.1 + + + mAh + milliampere hour + 50 + + 0 3 - True - - 0 127 - True - - - 0:monitor 1, 1:monitor 2, 2:monitor 3, 3:monitor 4, 4:monitor 5, 5:monitor 6, 6:monitor 7, 7:monitor 8, 8:monitor 9 - - - .1 10 + + 0:Ignore UAVCAN SoC @@ -3039,9 +2731,9 @@ Solo Bebop SMBus-Generic - DroneCAN-BatteryInfo + UAVCAN-BatteryInfo ESC - Sum Of Selected Monitors + SumOfFollowing FuelFlow FuelLevelPWM SMBUS-SUI3 @@ -3051,92 +2743,13 @@ Generator-Elec Generator-Fuel Rotoye - MPPT - INA2XX - LTC2946 - Torqeedo True - - 50 - mAh - milliampere hour - - - - - 0 120 - 1 - s - seconds - - - - Raw Voltage - Sag Compensated Voltage - - - - 0.1 - V - volt - - - 50 - mAh - milliampere hour - - - 0.1 - V - volt - - - 50 - mAh - milliampere hour - - - - None - Land - RTL - SmartRTL or RTL - SmartRTL or Land - Terminate - Auto DO_LAND_START or RTL - - - - - None - Land - RTL - SmartRTL or RTL - SmartRTL or Land - Terminate - Auto DO_LAND_START or RTL - - - - 0.1 - V - volt - - - 50 - mAh - milliampere hour - - - 0:Ignore DroneCAN SoC, 1:MPPT reports input voltage and current, 2:MPPT Powered off when disarmed, 3:MPPT Powered on when armed, 4:MPPT Powered off at boot, 5:MPPT Powered on at boot, 6:Send resistance compensated voltage to GCS - Disabled Pixhawk/Pixracer/Navio2/Pixhawk2_PM1 - Navigator Pixhawk2_PM2/CubeOrange_PM2 CubeOrange Durandal @@ -3148,7 +2761,7 @@ Disabled Pixhawk/Pixracer/Navio2/Pixhawk2_PM1 - CubeOrange_PM2/Navigator + CubeOrange_PM2 Pixhawk2_PM2 CubeOrange Durandal @@ -3166,23 +2779,80 @@ V volt - + + mAh + milliampere hour + 50 + + + + + s + seconds + 1 + 0 120 + + + + Raw Voltage + Sag Compensated Voltage + + + V volt + 0.1 - + + mAh + milliampere hour + 50 + + + V + volt + 0.1 + + + mAh + milliampere hour + 50 + + + + None + Land + RTL + SmartRTL or RTL + SmartRTL or Land + Terminate + + + + + None + Land + RTL + SmartRTL or RTL + SmartRTL or Land + Terminate + + + + V + volt + 0.1 + + + mAh + milliampere hour + 50 + + 0 3 - True - - 0 127 - True - - - 0:monitor 1, 1:monitor 2, 2:monitor 3, 3:monitor 4, 4:monitor 5, 5:monitor 6, 6:monitor 7, 7:monitor 8, 8:monitor 9 - - - .1 10 + + 0:Ignore UAVCAN SoC @@ -3194,9 +2864,9 @@ Solo Bebop SMBus-Generic - DroneCAN-BatteryInfo + UAVCAN-BatteryInfo ESC - Sum Of Selected Monitors + SumOfFollowing FuelFlow FuelLevelPWM SMBUS-SUI3 @@ -3206,92 +2876,13 @@ Generator-Elec Generator-Fuel Rotoye - MPPT - INA2XX - LTC2946 - Torqeedo True - - 50 - mAh - milliampere hour - - - - - 0 120 - 1 - s - seconds - - - - Raw Voltage - Sag Compensated Voltage - - - - 0.1 - V - volt - - - 50 - mAh - milliampere hour - - - 0.1 - V - volt - - - 50 - mAh - milliampere hour - - - - None - Land - RTL - SmartRTL or RTL - SmartRTL or Land - Terminate - Auto DO_LAND_START or RTL - - - - - None - Land - RTL - SmartRTL or RTL - SmartRTL or Land - Terminate - Auto DO_LAND_START or RTL - - - - 0.1 - V - volt - - - 50 - mAh - milliampere hour - - - 0:Ignore DroneCAN SoC, 1:MPPT reports input voltage and current, 2:MPPT Powered off when disarmed, 3:MPPT Powered on when armed, 4:MPPT Powered off at boot, 5:MPPT Powered on at boot, 6:Send resistance compensated voltage to GCS - Disabled Pixhawk/Pixracer/Navio2/Pixhawk2_PM1 - Navigator Pixhawk2_PM2/CubeOrange_PM2 CubeOrange Durandal @@ -3303,7 +2894,7 @@ Disabled Pixhawk/Pixracer/Navio2/Pixhawk2_PM1 - CubeOrange_PM2/Navigator + CubeOrange_PM2 Pixhawk2_PM2 CubeOrange Durandal @@ -3321,23 +2912,80 @@ V volt - + + mAh + milliampere hour + 50 + + + + + s + seconds + 1 + 0 120 + + + + Raw Voltage + Sag Compensated Voltage + + + V volt + 0.1 - + + mAh + milliampere hour + 50 + + + V + volt + 0.1 + + + mAh + milliampere hour + 50 + + + + None + Land + RTL + SmartRTL or RTL + SmartRTL or Land + Terminate + + + + + None + Land + RTL + SmartRTL or RTL + SmartRTL or Land + Terminate + + + + V + volt + 0.1 + + + mAh + milliampere hour + 50 + + 0 3 - True - - 0 127 - True - - - 0:monitor 1, 1:monitor 2, 2:monitor 3, 3:monitor 4, 4:monitor 5, 5:monitor 6, 6:monitor 7, 7:monitor 8, 8:monitor 9 - - - .1 10 + + 0:Ignore UAVCAN SoC @@ -3351,32 +2999,46 @@ - -90 90 - 0.000001 deg degrees + 0.000001 + -90 90 - -180 180 - 0.000001 deg degrees + 0.000001 + -180 180 - 0 10000 - 1 m meters + 1 + 0 10000 - -180 +180 - 1 deg degrees + 1 + -180 +180 - + + + No PWMs + One PWMs + Two PWMs + Three PWMs + Four PWMs + Five PWMs + Six PWMs + Seven PWMs + Eight PWMs + + True + + Disabled Enabled @@ -3384,7 +3046,7 @@ True - + Disabled Enabled @@ -3443,7 +3105,7 @@ 0:Output1,1:Output2,2:Output3,3:Output4,4:Output5,5:Output6,6:Output7,7:Output8,8:Output9,9:Output10,10:Output11,11:Output12,12:Output13,13:Output14 True - + -1 80 degC degrees Celsius @@ -3487,16 +3149,16 @@ 0:ActiveForSafetyEnable,1:ActiveForSafetyDisable,2:ActiveWhenArmed,3:Force safety on when the aircraft disarms + V + volt 4.0 5.5 0.1 - V - volt - 3.3 12.0 - 0.1 V volt + 3.3 12.0 + 0.1 0 32 @@ -3509,22 +3171,22 @@ - 0:Enable hardware watchdog, 1:Disable MAVftp, 2:Enable set of internal parameters, 3:Enable Debug Pins, 4:Unlock flash on reboot, 5:Write protect firmware flash on reboot, 6:Write protect bootloader flash on reboot + 0:Enable hardware watchdog, 1:Disable MAVftp, 2:Enable set of internal parameters 0 10000 ms milliseconds - + 1 500 1 - + 0 1 0.1 - + 0 100 1 @@ -3533,11 +3195,6 @@ 1 True - - 0 20 - degC - degrees Celsius - @@ -3740,7 +3397,7 @@ ADSB Avoidance En PrecLoiter Proximity Avoidance - ArmDisarm (4.1 and lower) + ArmDisarm SmartRTL InvertedFlight RC Override Enable @@ -3756,8 +3413,8 @@ ZigZag SaveWP Compass Learn GPS Disable - Relay5 On/Off - Relay6 On/Off + Relay5 + Relay6 Stabilize PosHold AltHold @@ -3768,25 +3425,16 @@ Standby Mode RunCam Control RunCam OSD Control - VisOdom Align + Viso Align Disarm ZigZag Auto Air Mode Generator EKF Pos Source - VTX Power - AUTO RTL KillIMU1 KillIMU2 Camera Mode Toggle GPS Disable Yaw - Turtle - simple heading reset - ArmDisarm (4.2 and higher) - ArmDisarm with AirMode (4.2 and higher) - Optflow Calibration - Force Flying - Turbine Start(heli) Scripting1 Scripting2 Scripting3 @@ -3835,7 +3483,7 @@ ADSB Avoidance En PrecLoiter Proximity Avoidance - ArmDisarm (4.1 and lower) + ArmDisarm SmartRTL InvertedFlight RC Override Enable @@ -3851,8 +3499,8 @@ ZigZag SaveWP Compass Learn GPS Disable - Relay5 On/Off - Relay6 On/Off + Relay5 + Relay6 Stabilize PosHold AltHold @@ -3863,25 +3511,16 @@ Standby Mode RunCam Control RunCam OSD Control - VisOdom Align + Viso Align Disarm ZigZag Auto Air Mode Generator EKF Pos Source - VTX Power - AUTO RTL KillIMU1 KillIMU2 Camera Mode Toggle GPS Disable Yaw - Turtle - simple heading reset - ArmDisarm (4.2 and higher) - ArmDisarm with AirMode (4.2 and higher) - Optflow Calibration - Force Flying - Turbine Start(heli) Scripting1 Scripting2 Scripting3 @@ -3930,7 +3569,7 @@ ADSB Avoidance En PrecLoiter Proximity Avoidance - ArmDisarm (4.1 and lower) + ArmDisarm SmartRTL InvertedFlight RC Override Enable @@ -3946,8 +3585,8 @@ ZigZag SaveWP Compass Learn GPS Disable - Relay5 On/Off - Relay6 On/Off + Relay5 + Relay6 Stabilize PosHold AltHold @@ -3958,25 +3597,16 @@ Standby Mode RunCam Control RunCam OSD Control - VisOdom Align + Viso Align Disarm ZigZag Auto Air Mode Generator EKF Pos Source - VTX Power - AUTO RTL KillIMU1 KillIMU2 Camera Mode Toggle GPS Disable Yaw - Turtle - simple heading reset - ArmDisarm (4.2 and higher) - ArmDisarm with AirMode (4.2 and higher) - Optflow Calibration - Force Flying - Turbine Start(heli) Scripting1 Scripting2 Scripting3 @@ -4025,7 +3655,7 @@ ADSB Avoidance En PrecLoiter Proximity Avoidance - ArmDisarm (4.1 and lower) + ArmDisarm SmartRTL InvertedFlight RC Override Enable @@ -4041,8 +3671,8 @@ ZigZag SaveWP Compass Learn GPS Disable - Relay5 On/Off - Relay6 On/Off + Relay5 + Relay6 Stabilize PosHold AltHold @@ -4053,25 +3683,16 @@ Standby Mode RunCam Control RunCam OSD Control - VisOdom Align + Viso Align Disarm ZigZag Auto Air Mode Generator EKF Pos Source - VTX Power - AUTO RTL KillIMU1 KillIMU2 Camera Mode Toggle GPS Disable Yaw - Turtle - simple heading reset - ArmDisarm (4.2 and higher) - ArmDisarm with AirMode (4.2 and higher) - Optflow Calibration - Force Flying - Turbine Start(heli) Scripting1 Scripting2 Scripting3 @@ -4092,24 +3713,24 @@ - 0 50 ds deciseconds + 0 50 - 1000 2000 PWM PWM in microseconds + 1000 2000 - 1000 2000 PWM PWM in microseconds + 1000 2000 - 0 1000 m meters + 0 1000 @@ -4118,14 +3739,14 @@ - 0 10000 ms milliseconds + 0 10000 - 0 180 deg degrees + 0 180 @@ -4197,15 +3818,12 @@ Disabled - DroneCAN + UAVCAN ToshibaCAN PiccoloCAN CANTester - EFI_NWPMU - USD1 KDECAN - Scripting - Benewake + PacketDigitalCAN True @@ -4219,17 +3837,17 @@ 0: ESC 1, 1: ESC 2, 2: ESC 3, 3: ESC 4, 4: ESC 5, 5: ESC 6, 6: ESC 7, 7: ESC 8, 8: ESC 9, 9: ESC 10, 10: ESC 11, 11: ESC 12, 12: ESC 13, 13: ESC 14, 14: ESC 15, 15: ESC 16 - 1 500 Hz hertz + 1 500 0: Servo 1, 1: Servo 2, 2: Servo 3, 3: Servo 4, 4: Servo 5, 5: Servo 6, 6: Servo 7, 7: Servo 8, 8: Servo 9, 9: Servo 10, 10: Servo 11, 11: Servo 12, 12: Servo 13, 13: Servo 14, 14: Servo 15, 15: Servo 16 - 1 500 Hz hertz + 1 500 @@ -4254,10 +3872,10 @@ 1 250 - + 0: Servo 1, 1: Servo 2, 2: Servo 3, 3: Servo 4, 4: Servo 5, 5: Servo 6, 6: Servo 7, 7: Servo 8, 8: Servo 9, 9: Servo 10, 10: Servo 11, 11: Servo 12, 12: Servo 13, 13: Servo 14, 14: Servo 15 - + 0: ESC 1, 1: ESC 2, 2: ESC 3, 3: ESC 4, 4: ESC 5, 5: ESC 6, 6: ESC 7, 7: ESC 8, 8: ESC 9, 9: ESC 10, 10: ESC 11, 11: ESC 12, 12: ESC 13, 13: ESC 14, 14: ESC 15, 15: ESC 16 @@ -4265,34 +3883,17 @@ Hz hertz - - 0:ClearDNADatabase,1:IgnoreDNANodeConflicts - - - 1 200 - Hz - hertz - - - 0 18 - - - 1024 16384 - Disabled - DroneCAN + UAVCAN ToshibaCAN PiccoloCAN CANTester - EFI_NWPMU - USD1 KDECAN - Scripting - Benewake + PacketDigitalCAN True @@ -4306,17 +3907,17 @@ 0: ESC 1, 1: ESC 2, 2: ESC 3, 3: ESC 4, 4: ESC 5, 5: ESC 6, 6: ESC 7, 7: ESC 8, 8: ESC 9, 9: ESC 10, 10: ESC 11, 11: ESC 12, 12: ESC 13, 13: ESC 14, 14: ESC 15, 15: ESC 16 - 1 500 Hz hertz + 1 500 0: Servo 1, 1: Servo 2, 2: Servo 3, 3: Servo 4, 4: Servo 5, 5: Servo 6, 6: Servo 7, 7: Servo 8, 8: Servo 9, 9: Servo 10, 10: Servo 11, 11: Servo 12, 12: Servo 13, 13: Servo 14, 14: Servo 15, 15: Servo 16 - 1 500 Hz hertz + 1 500 @@ -4341,10 +3942,10 @@ 1 250 - + 0: Servo 1, 1: Servo 2, 2: Servo 3, 3: Servo 4, 4: Servo 5, 5: Servo 6, 6: Servo 7, 7: Servo 8, 8: Servo 9, 9: Servo 10, 10: Servo 11, 11: Servo 12, 12: Servo 13, 13: Servo 14, 14: Servo 15 - + 0: ESC 1, 1: ESC 2, 2: ESC 3, 3: ESC 4, 4: ESC 5, 5: ESC 6, 6: ESC 7, 7: ESC 8, 8: ESC 9, 9: ESC 10, 10: ESC 11, 11: ESC 12, 12: ESC 13, 13: ESC 14, 14: ESC 15, 15: ESC 16 @@ -4352,34 +3953,17 @@ Hz hertz - - 0:ClearDNADatabase,1:IgnoreDNANodeConflicts - - - 1 200 - Hz - hertz - - - 0 18 - - - 1024 16384 - Disabled - DroneCAN + UAVCAN ToshibaCAN PiccoloCAN CANTester - EFI_NWPMU - USD1 KDECAN - Scripting - Benewake + PacketDigitalCAN True @@ -4393,17 +3977,17 @@ 0: ESC 1, 1: ESC 2, 2: ESC 3, 3: ESC 4, 4: ESC 5, 5: ESC 6, 6: ESC 7, 7: ESC 8, 8: ESC 9, 9: ESC 10, 10: ESC 11, 11: ESC 12, 12: ESC 13, 13: ESC 14, 14: ESC 15, 15: ESC 16 - 1 500 Hz hertz + 1 500 0: Servo 1, 1: Servo 2, 2: Servo 3, 3: Servo 4, 4: Servo 5, 5: Servo 6, 6: Servo 7, 7: Servo 8, 8: Servo 9, 9: Servo 10, 10: Servo 11, 11: Servo 12, 12: Servo 13, 13: Servo 14, 14: Servo 15, 15: Servo 16 - 1 500 Hz hertz + 1 500 @@ -4428,10 +4012,10 @@ 1 250 - + 0: Servo 1, 1: Servo 2, 2: Servo 3, 3: Servo 4, 4: Servo 5, 5: Servo 6, 6: Servo 7, 7: Servo 8, 8: Servo 9, 9: Servo 10, 10: Servo 11, 11: Servo 12, 12: Servo 13, 13: Servo 14, 14: Servo 15 - + 0: ESC 1, 1: ESC 2, 2: ESC 3, 3: ESC 4, 4: ESC 5, 5: ESC 6, 6: ESC 7, 7: ESC 8, 8: ESC 9, 9: ESC 10, 10: ESC 11, 11: ESC 12, 12: ESC 13, 13: ESC 14, 14: ESC 15, 15: ESC 16 @@ -4439,20 +4023,6 @@ Hz hertz - - 0:ClearDNADatabase,1:IgnoreDNANodeConflicts - - - 1 200 - Hz - hertz - - - 0 18 - - - 1024 16384 - @@ -4460,7 +4030,6 @@ Disabled First driver Second driver - Third driver True @@ -4474,7 +4043,6 @@ Disabled First driver Second driver - Third driver True @@ -4488,7 +4056,6 @@ Disabled First driver Second driver - Third driver True @@ -4542,50 +4109,47 @@ 1000 2000 - 1 PWM PWM in microseconds + 1 1000 2000 - 1 PWM PWM in microseconds + 1 0 32000 - 1 m meters + 1 0 5000 - 1 ms milliseconds + 1 0 15 - 1 m/s meters per second - - - 0:hold open forever after release + 1 - 0 200000 - 100 cm centimeters + 0 200000 + 100 - -90 90 - 1 deg/s degrees per second + -90 90 + 1 0:manual control, 1:face direction of travel, 2:Start at center rather than on perimeter @@ -4593,30 +4157,30 @@ - 1 -400 400 - 1 mGauss milligauss + 1 + 1 - 1 -400 400 - 1 mGauss milligauss + 1 + 1 -400 400 - 1 mGauss milligauss + 1 -3.142 3.142 - 0.01 rad radians + 0.01 @@ -4639,34 +4203,34 @@ - 1 Disabled Use Throttle Use Current + 1 - 1 -1000 1000 - 1 mGauss/A milligauss per ampere + 1 + 1 - 1 -1000 1000 - 1 mGauss/A milligauss per ampere + 1 + 1 -1000 1000 - 1 mGauss/A milligauss per ampere + 1 - + None Yaw45 @@ -4677,44 +4241,42 @@ Yaw270 Yaw315 Roll180 - Yaw45Roll180 - Yaw90Roll180 - Yaw135Roll180 + Roll180Yaw45 + Roll180Yaw90 + Roll180Yaw135 Pitch180 - Yaw225Roll180 - Yaw270Roll180 - Yaw315Roll180 + Roll180Yaw225 + Roll180Yaw270 + Roll180Yaw315 Roll90 - Yaw45Roll90 - Yaw90Roll90 - Yaw135Roll90 + Roll90Yaw45 + Roll90Yaw90 + Roll90Yaw135 Roll270 - Yaw45Roll270 - Yaw90Roll270 - Yaw135Roll270 + Roll270Yaw45 + Roll270Yaw90 + Roll270Yaw135 Pitch90 Pitch270 - Yaw90Pitch180 - Yaw270Pitch180 - Pitch90Roll90 - Pitch90Roll180 - Pitch90Roll270 - Pitch180Roll90 - Pitch180Roll270 - Pitch270Roll90 - Pitch270Roll180 - Pitch270Roll270 - Yaw90Pitch180Roll90 - Yaw270Roll90 + Pitch180Yaw90 + Pitch180Yaw270 + Roll90Pitch90 + Roll180Pitch90 + Roll270Pitch90 + Roll90Pitch180 + Roll270Pitch180 + Roll90Pitch270 + Roll180Pitch270 + Roll270Pitch270 + Roll90Pitch180Yaw90 + Roll90Yaw270 Yaw293Pitch68Roll180 Pitch315 - Pitch315Roll90 - Roll45 - Roll315 + Roll90Pitch315 Custom - + Internal External @@ -4722,84 +4284,84 @@ - 1 -400 400 - 1 mGauss milligauss + 1 + 1 - 1 -400 400 - 1 mGauss milligauss + 1 + 1 -400 400 - 1 mGauss milligauss + 1 - 1 -1000 1000 - 1 mGauss/A milligauss per ampere + 1 + 1 - 1 -1000 1000 - 1 mGauss/A milligauss per ampere + 1 + 1 -1000 1000 - 1 mGauss/A milligauss per ampere + 1 - 1 -400 400 - 1 mGauss milligauss + 1 + 1 - 1 -400 400 - 1 mGauss milligauss + 1 + 1 -400 400 - 1 mGauss milligauss + 1 - 1 -1000 1000 - 1 mGauss/A milligauss per ampere + 1 + 1 - 1 -1000 1000 - 1 mGauss/A milligauss per ampere + 1 + 1 -1000 1000 - 1 mGauss/A milligauss per ampere + 1 True @@ -4859,12 +4421,10 @@ Yaw293Pitch68Roll180 Pitch315 Roll90Pitch315 - Roll45 - Roll315 Custom - + Internal External @@ -4920,12 +4480,10 @@ Yaw293Pitch68Roll180 Pitch315 Roll90Pitch315 - Roll45 - Roll315 Custom - + Internal External @@ -4995,20 +4553,19 @@ 1 - 0:HMC5883,1:LSM303D,2:AK8963,3:BMM150,4:LSM9DS1,5:LIS3MDL,6:AK09916,7:IST8310,8:ICM20948,9:MMC3416,11:DroneCAN,12:QMC5883,14:MAG3110,15:IST8308,16:RM3100,17:MSP,18:ExternalAHRS + 0:HMC5883,1:LSM303D,2:AK8963,3:BMM150,4:LSM9DS1,5:LIS3MDL,6:AK09916,7:IST8310,8:ICM20948,9:MMC3416,11:UAVCAN,12:QMC5883,14:MAG3110,15:IST8308,16:RM3100,17:MSP,18:ExternalAHRS - 0 100 - 1 % percent + 0 100 + 1 Disabled CheckOnly CheckAndFix - use same tolerance to auto rotate 45 deg rotations @@ -5025,7 +4582,6 @@ Disabled Enabled - True 0 1.3 @@ -5056,23 +4612,23 @@ -180 180 - 1 deg degrees + 1 True -180 180 - 1 deg degrees + 1 True -180 180 - 1 deg degrees + 1 True @@ -5112,46 +4668,11 @@ - - - - Disabled - Enabled - - - - - Disabled - Serial0 - Serial1 - Serial2 - Serial3 - Serial4 - Serial5 - Serial6 - - - - - Disabled - Driver1 - Driver2 - - - - 0:EnforceArming - - - m - meters - - None VectorNav - LORD @@ -5159,23 +4680,6 @@ hertz - - - - None - Serial-MS - NWPMU - Serial-Lutan - - True - - - 0 1 - - - 0 10 - - @@ -5204,7 +4708,7 @@ m/s meters per second - + 100 1000 25 @@ -5450,16 +4954,24 @@ 0.1 30.0 Hz hertz + False - + 0:FirstEKF,1:SecondEKF,2:ThirdEKF,3:FourthEKF,4:FifthEKF,5:SixthEKF True - + 0:FirstEKF,1:SecondEKF,2:ThirdEKF,3:FourthEKF,4:FifthEKF,5:SixthEKF True - + + 500 5000 + 100 + ms + milliseconds + True + + 1 10 1 True @@ -5485,7 +4997,7 @@ m/s meters per second - + 100 1000 25 @@ -5518,9 +5030,9 @@ 0 250 10 + True ms milliseconds - True 0.01 0.5 @@ -5583,9 +5095,9 @@ 0 250 10 + True ms milliseconds - True 0.0001 0.1 @@ -5610,13 +5122,13 @@ meters per cubic second - 0.01 2.0 + 0.01 1.0 0.1 m/s/s meters per square second - 0.0 2.0 + 0.0 1.0 0.1 @@ -5666,7 +5178,7 @@ Gauss/s gauss per second - + -1 70 1 % @@ -5689,9 +5201,9 @@ 0 250 10 + True ms milliseconds - True 2.0 6.0 @@ -5743,21 +5255,29 @@ 0.1 30.0 Hz hertz + False 0 500 mGauss milligauss - + 0:FirstEKF,1:SecondEKF,2:ThirdEKF,3:FourthEKF,4:FifthEKF,5:SixthEKF True - + 0:FirstEKF,1:SecondEKF,2:ThirdEKF,3:FourthEKF,4:FifthEKF,5:SixthEKF True - + + 500 5000 + 100 + ms + milliseconds + True + + 1 10 1 True @@ -5800,10 +5320,6 @@ 0.0 10.0 0.5 - - 0 2 - 1 - @@ -5969,29 +5485,29 @@ + m + meters 10 1000 1 - m - meters - 30 10000 m meters + 30 10000 - 1 10 m meters + 1 10 1 20 - -100 100 - 1 m meters + -100 100 + 1 @@ -6100,7 +5616,7 @@ Bebop CXOF MAVLink - DroneCAN + UAVCAN MSP UPFLOW @@ -6115,28 +5631,28 @@ 1 - -17999 +18000 - 10 cdeg centidegrees + -17999 +18000 + 10 - -5 5 - 0.01 m meters + -5 5 + 0.01 - -5 5 - 0.01 m meters + -5 5 + 0.01 - -5 5 - 0.01 m meters + -5 5 + 0.01 0 127 @@ -6153,9 +5669,9 @@ 0 255 - 1 1000 m meters + 1 1000 @@ -6165,21 +5681,21 @@ -100 100 - 1 m meters + 1 -100 100 - 1 m meters + 1 -100 100 - 1 m meters + 1 @@ -6302,9 +5818,6 @@ 27 - - 0:EnableAirspeedAndGroundspeed - @@ -6323,11 +5836,13 @@ None AUTO uBlox + MTK + MTK19 NMEA SiRF HIL SwiftNav - DroneCAN + UAVCAN SBF GSOF ERB @@ -6339,8 +5854,6 @@ MSP AllyStar ExternalAHRS - DroneCAN-MovingBaseline-Base - DroneCAN-MovingBaseline-Rover True @@ -6349,11 +5862,13 @@ None AUTO uBlox + MTK + MTK19 NMEA SiRF HIL SwiftNav - DroneCAN + UAVCAN SBF GSOF ERB @@ -6365,8 +5880,6 @@ MSP AllyStar ExternalAHRS - DroneCAN-MovingBaseline-Base - DroneCAN-MovingBaseline-Rover True @@ -6449,88 +5962,87 @@ Disables automatic configuration - Enable automatic configuration for Serial GPSes only - Enable automatic configuration for DroneCAN as well + Enable automatic configuration - 50 200 + ms + milliseconds 10Hz 8Hz 5Hz - ms - milliseconds + 50 200 - 50 200 + ms + milliseconds 10Hz 8Hz 5Hz - ms - milliseconds + 50 200 - -5 5 - 0.01 m meters + -5 5 + 0.01 - -5 5 - 0.01 m meters + -5 5 + 0.01 - -5 5 - 0.01 m meters + -5 5 + 0.01 - -5 5 - 0.01 m meters + -5 5 + 0.01 - -5 5 - 0.01 m meters + -5 5 + 0.01 - -5 5 - 0.01 m meters + -5 5 + 0.01 - 0 250 ms milliseconds + 0 250 True - 0 250 ms milliseconds + 0 250 True 0:Horiz Pos,1:Vert Pos,2:Speed - 5.0 30.0 s seconds + 5.0 30.0 - 0:Use UART2 for moving baseline on ublox,1:Use base station for GPS yaw on SBF,2:Use baudrate 115200,3:Use dedicated CAN port b/w GPSes for moving baseline + 0:Use UART2 for moving baseline on ublox,1:Use base station for GPS yaw on SBF 0 10 @@ -6543,11 +6055,11 @@ True + 1 FirstGPS SecondGPS - 1 True @@ -6555,9 +6067,9 @@ True - + - + @@ -6569,22 +6081,22 @@ True - -5 5 - 0.01 m meters + -5 5 + 0.01 - -5 5 - 0.01 m meters + -5 5 + 0.01 - -5 5 - 0.01 m meters + -5 5 + 0.01 @@ -6596,22 +6108,22 @@ True - -5 5 - 0.01 m meters + -5 5 + 0.01 - -5 5 - 0.01 m meters + -5 5 + 0.01 - -5 5 - 0.01 m meters + -5 5 + 0.01 @@ -6648,7 +6160,7 @@ s seconds - + 0 255 @@ -6665,9 +6177,9 @@ 0 1000 - 1 PWM PWM in microseconds + 1 -10 10 @@ -6681,15 +6193,15 @@ 0 100 - 1 % percent + 1 0 1000 - 1 PWM PWM in microseconds + 1 @@ -6736,9 +6248,9 @@ -30 30 - 1 deg degrees + 1 @@ -6760,15 +6272,21 @@ 1000 2000 - 1 PWM PWM in microseconds + 1 1000 2000 - 1 PWM PWM in microseconds + 1 + + + 1000 2000 + PWM + PWM in microseconds + 1 @@ -6815,9 +6333,9 @@ -30 30 - 1 deg degrees + 1 @@ -6864,9 +6382,9 @@ -30 30 - 1 deg degrees + 1 -0.2 0.2 @@ -6878,22 +6396,28 @@ 1000 2000 - 1 PWM PWM in microseconds + 1 1000 2000 - 1 PWM PWM in microseconds + 1 + + + 1000 2000 + PWM + PWM in microseconds + 1 Disabled Passthrough Max collective - Zero thrust collective + Mid collective Min collective @@ -6905,7 +6429,7 @@ 0 10 1 - + 0.3 0.8 @@ -6918,44 +6442,20 @@ 0:Use Leaky I - - -20 0 - 0.1 - deg - degrees - - - 5 20 - 0.1 - deg - degrees - - - -5 0 - 0.1 - deg - degrees - - - -5 0 - 0.1 - deg - degrees - 0 100 - 1 % percent + 1 - + RC Passthrough External Gov SetPoint Throttle Curve - AutoThrottle + Governor @@ -6963,22 +6463,22 @@ s seconds - + 0 60 s seconds 0 100 - 1 % percent + 1 0 50 - 1 % percent + 1 0 500 @@ -6986,81 +6486,69 @@ 0 100 - 1 % percent + 1 0 100 - 1 % percent + 1 0 100 - 1 % percent + 1 0 100 - 1 % percent + 1 0 100 - 1 % percent + 1 + + + 800 3500 + RPM + Revolutions Per Minute + 10 + + + 0 50 + % + percent + 1 + + + 0 150 + % + percent + 1 + + + 50 100 + % + percent + 1 50 200 - 10 RPM Revolutions Per Minute + 10 0 40 + % + percent 1 - % - percent - - - 0 120 - 1 - s - seconds - - - 0 70 - 0.1 - % - percent - - - 0 100 - 0.1 - % - percent - - - 0 100 - 0.1 - % - percent - - - 800 3500 - 10 - RPM - Revolutions Per Minute - - - 10 60 - 1 - % - percent @@ -7076,174 +6564,174 @@ 0 100 - 1 % percent + 1 0 100 - 1 % percent + 1 0 100 - 1 % percent + 1 0 100 - 1 % percent + 1 - 1 rad/s radians per second + 1 - 1 rad/s radians per second + 1 - 1 rad/s radians per second + 1 - 1 rad/s radians per second + 1 - 1 rad/s radians per second + 1 - 1 rad/s radians per second + 1 - 1 rad/s radians per second + 1 - 1 rad/s radians per second + 1 - 1 rad/s radians per second + 1 - 1 0.8 1.2 + 1 - 1 0.8 1.2 + 1 - 1 0.8 1.2 + 1 - 1 - -3.5 3.5 m/s/s meters per square second + -3.5 3.5 + 1 - 1 - -3.5 3.5 m/s/s meters per square second + -3.5 3.5 + 1 - 1 - -3.5 3.5 m/s/s meters per square second + -3.5 3.5 + 1 - 1 0.8 1.2 + 1 - 1 0.8 1.2 + 1 - 1 0.8 1.2 + 1 - 1 - -3.5 3.5 m/s/s meters per square second + -3.5 3.5 + 1 - 1 - -3.5 3.5 m/s/s meters per square second + -3.5 3.5 + 1 - 1 - -3.5 3.5 m/s/s meters per square second + -3.5 3.5 + 1 - 1 0.8 1.2 + 1 - 1 0.8 1.2 + 1 - 1 0.8 1.2 + 1 - 1 - -3.5 3.5 m/s/s meters per square second + -3.5 3.5 + 1 - 1 - -3.5 3.5 m/s/s meters per square second + -3.5 3.5 + 1 - 1 - -3.5 3.5 m/s/s meters per square second + -3.5 3.5 + 1 - 0 256 Hz hertz + 0 256 - 0 256 Hz hertz + 0 256 @@ -7287,57 +6775,57 @@ - -5 5 - 0.01 m meters + -5 5 + 0.01 - -5 5 - 0.01 m meters + -5 5 + 0.01 - -5 5 - 0.01 m meters + -5 5 + 0.01 - -5 5 - 0.01 m meters + -5 5 + 0.01 - -5 5 - 0.01 m meters + -5 5 + 0.01 - -5 5 - 0.01 m meters + -5 5 + 0.01 - -10 10 m meters + -10 10 - -5 5 - 0.01 m meters + -5 5 + 0.01 - -5 5 - 0.01 m meters + -5 5 + 0.01 True @@ -7361,7 +6849,7 @@ 0:FirstIMU,1:SecondIMU,2:ThirdIMU - 0:FirstIMU,1:SecondIMU,2:ThirdIMU,3:FourthIMU,4:FifthIMU,5:SixthIMU,6:SeventhIMU + 0:FirstIMU,1:SecondIMU,2:ThirdIMU @@ -7373,85 +6861,39 @@ True - 1 degC degrees Celsius + 1 - 1 degC degrees Celsius + 1 - 1 degC degrees Celsius + 1 - 1 degC degrees Celsius + 1 - 1 degC degrees Celsius + 1 - 1 degC degrees Celsius + 1 0:PersistParams - - - - Disabled - Enabled - - - - 10 495 - Hz - hertz - - - 5 250 - Hz - hertz - - - 5 50 - dB - decibel - - - 0:1st harmonic,1:2nd harmonic,2:3rd harmonic,3:4th hamronic,4:5th harmonic,5:6th harmonic,6:7th harmonic,7:8th harmonic - True - - - 0.0 1.0 - True - - - 0 4 - - Disabled - Throttle - RPM Sensor - ESC Telemetry - Dynamic FFT - Second RPM Sensor - - - - 0:Double notch,1:Dynamic harmonic,2:Update at loop rate - True - - @@ -7474,7 +6916,7 @@ dB decibel - + 0:1st harmonic,1:2nd harmonic,2:3rd harmonic,3:4th hamronic,4:5th harmonic,5:6th harmonic,6:7th harmonic,7:8th harmonic True @@ -7490,7 +6932,6 @@ RPM Sensor ESC Telemetry Dynamic FFT - Second RPM Sensor @@ -7511,14 +6952,37 @@ 0:Sensor-Rate Logging (sample at full sensor rate seen by AP), 1: Sample post-filtering - 10 ms milliseconds + 10 1 + + + + Disabled + Enabled + + + + 5 30 + dB + decibel + + + 10 400 + Hz + hertz + + + 5 100 + Hz + hertz + + @@ -7529,16 +6993,16 @@ True - 1 -70 80 degC degrees Celsius + 1 - 1 -70 80 degC degrees Celsius + 1 1 @@ -7605,16 +7069,16 @@ True - 1 -70 80 degC degrees Celsius + 1 - 1 -70 80 degC degrees Celsius + 1 1 @@ -7681,16 +7145,16 @@ True - 1 -70 80 degC degrees Celsius + 1 - 1 -70 80 degC degrees Celsius + 1 1 @@ -7748,12 +7212,6 @@ - - - Disabled - Enabled - - WaitForPilotInput @@ -7798,16 +7256,16 @@ - 0 1000 - 1 m meters + 0 1000 + 1 - 0 1000 - 1 m meters + 0 1000 + 1 0:Retract after Takeoff,1:Deploy during Land @@ -7846,69 +7304,54 @@ seconds - 10 1000 MB megabyte - - - 0 1000 - Hz - hertz - - - 0 1000 - Hz - hertz - - - 0 1000 - Hz - hertz + 10 1000 - - 0 45 - 1 + deg degrees + 0 45 + 1 - 20 3500 - 50 cm/s centimeters per second + 20 3500 + 50 + cm/s/s + centimeters per square second 100 981 1 - cm/s/s - centimeters per square second - 25 250 - 1 cm/s/s centimeters per square second + 25 250 + 1 - 500 5000 - 1 cm/s/s/s centimeters per cubic second + 500 5000 + 1 - 0 2 - 0.1 s seconds + 0 2 + 0.1 - True 0 32766 1 + True @@ -7942,40 +7385,40 @@ - -180.00 179.99 - 1 deg degrees + -180.00 179.99 + 1 - -180.00 179.99 - 1 deg degrees + -180.00 179.99 + 1 - -180.00 179.99 - 1 deg degrees + -180.00 179.99 + 1 - -180.00 179.99 - 1 deg degrees + -180.00 179.99 + 1 - -180.00 179.99 - 1 deg degrees + -180.00 179.99 + 1 - -180.00 179.99 - 1 deg degrees + -180.00 179.99 + 1 @@ -8009,16 +7452,16 @@ - -18000 17999 - 10 cdeg centidegrees + -18000 17999 + 10 - -18000 17999 - 10 cdeg centidegrees + -18000 17999 + 10 @@ -8034,16 +7477,16 @@ - -18000 17999 - 10 cdeg centidegrees + -18000 17999 + 10 - -18000 17999 - 10 cdeg centidegrees + -18000 17999 + 10 @@ -8059,32 +7502,32 @@ - -18000 17999 - 10 cdeg centidegrees + -18000 17999 + 10 - -18000 17999 - 10 cdeg centidegrees + -18000 17999 + 10 0 100 1 - 0.0 0.2 - .005 s seconds + 0.0 0.2 + .005 - 0.0 0.2 - .005 s seconds + 0.0 0.2 + .005 @@ -8096,40 +7539,40 @@ - -180.00 179.99 - 1 deg degrees + -180.00 179.99 + 1 - -180.00 179.99 - 1 deg degrees + -180.00 179.99 + 1 - -180.00 179.99 - 1 deg degrees + -180.00 179.99 + 1 - -180.00 179.99 - 1 deg degrees + -180.00 179.99 + 1 - -180.00 179.99 - 1 deg degrees + -180.00 179.99 + 1 - -180.00 179.99 - 1 deg degrees + -180.00 179.99 + 1 @@ -8163,16 +7606,16 @@ - -18000 17999 - 10 cdeg centidegrees + -18000 17999 + 10 - -18000 17999 - 10 cdeg centidegrees + -18000 17999 + 10 @@ -8188,16 +7631,16 @@ - -18000 17999 - 10 cdeg centidegrees + -18000 17999 + 10 - -18000 17999 - 10 cdeg centidegrees + -18000 17999 + 10 @@ -8213,28 +7656,28 @@ - -18000 17999 - 10 cdeg centidegrees + -18000 17999 + 10 - -18000 17999 - 10 cdeg centidegrees + -18000 17999 + 10 - 0.0 0.2 - .005 s seconds + 0.0 0.2 + .005 - 0.0 0.2 - .005 s seconds + 0.0 0.2 + .005 @@ -8257,11 +7700,7 @@ -1.0 1.0 - - Low - Default - High - + 0.9:Low,0.95:Default,1.0:High 6 53 @@ -8288,33 +7727,24 @@ DShot300 DShot600 DShot1200 - PWMRange True - - 0 2000 + PWM PWM in microseconds + 0 2000 - - 0 2000 + PWM PWM in microseconds + 0 2000 - - Low - Default - High - + 0.0:Low,0.15:Default,0.3:High - - Low - Default - High - + 0.0:Low,0.1:Default,0.2:High 0 10 @@ -8339,15 +7769,15 @@ 5 80 - 1 deg degrees + 1 0 2 - 0.1 s seconds + 0.1 0 5 @@ -8361,21 +7791,21 @@ 0 .5 - 0.001 s seconds + 0.001 0 .5 - 0.001 s seconds + 0.001 0 5 - 0.001 s seconds + 0.001 @@ -8399,7 +7829,7 @@ - 0:EnableTelemetryMode, 1: DisableDJIWorkarounds, 2:EnableBTFLFonts + 0:EnableTelemetryMode @@ -8412,7 +7842,7 @@ - 0:Built-in buzzer, 1:DShot, 2:DroneCAN + 0:Built-in buzzer, 1:DShot, 2:UAVCAN @@ -8443,7 +7873,7 @@ - 0:Built-in LED, 1:Internal ToshibaLED, 2:External ToshibaLED, 3:External PCA9685, 4:Oreo LED, 5:DroneCAN, 6:NCP5623 External, 7:NCP5623 Internal, 8:NeoPixel, 9:ProfiLED, 10:Scripting, 11:DShot, 12:ProfiLED_SPI + 0:Built-in LED, 1:Internal ToshibaLED, 2:External ToshibaLED, 3:External PCA9685, 4:Oreo LED, 5:UAVCAN, 6:NCP5623 External, 7:NCP5623 Internal, 8:NeoPixel, 9:ProfiLED, 10:Scripting, 11:DShot @@ -8471,21 +7901,18 @@ - 0.1 100 - 1 m meters - - - 1: log Dijkstra points + 0.1 100 + 1 - 1 100 - 1 m meters + 1 100 + 1 1.1 2 @@ -8508,10 +7935,10 @@ True - 0 127 - 1 s seconds + 0 127 + 1 1 200 @@ -8526,25 +7953,25 @@ - 1 10 deg degrees + 1 10 True - 0 10 m meters + 0 10 - 0 10 m meters + 0 10 - 0 4 m meters + 0 4 @@ -8583,7 +8010,7 @@ - 0:UseDecimalPack, 1:InvertedWindPointer, 2:InvertedAHRoll, 3:Convert feet to miles at 5280ft instead of 10000ft, 4:DisableCrosshair + 0:UseDecimalPack, 1:InvertedWindPointer, 2:InvertedAHRoll True @@ -8860,40 +8287,40 @@ 0 15 - + Disabled Enabled - + 0 29 - + 0 15 - + Disabled Enabled - + 0 29 - + 0 15 - + Disabled Enabled - + 0 29 - + 0 15 @@ -9136,16 +8563,16 @@ 0 15 - + Disabled Enabled - + 0 29 - + 0 15 @@ -9340,18 +8767,6 @@ 0 15 - - - Disabled - Enabled - - - - 0 29 - - - 0 15 - @@ -9570,40 +8985,40 @@ 0 15 - + Disabled Enabled - + 0 29 - + 0 15 - + Disabled Enabled - + 0 29 - + 0 15 - + Disabled Enabled - + 0 29 - + 0 15 @@ -9846,16 +9261,16 @@ 0 15 - + Disabled Enabled - + 0 29 - + 0 15 @@ -10050,18 +9465,6 @@ 0 15 - - - Disabled - Enabled - - - - 0 29 - - - 0 15 - @@ -10280,40 +9683,40 @@ 0 15 - + Disabled Enabled - + 0 29 - + 0 15 - + Disabled Enabled - + 0 29 - + 0 15 - + Disabled Enabled - + 0 29 - + 0 15 @@ -10556,16 +9959,16 @@ 0 15 - + Disabled Enabled - + 0 29 - + 0 15 @@ -10760,18 +10163,6 @@ 0 15 - - - Disabled - Enabled - - - - 0 29 - - - 0 15 - @@ -10990,40 +10381,40 @@ 0 15 - + Disabled Enabled - + 0 29 - + 0 15 - + Disabled Enabled - + 0 29 - + 0 15 - + Disabled Enabled - + 0 29 - + 0 15 @@ -11266,16 +10657,16 @@ 0 15 - + Disabled Enabled - + 0 29 - + 0 15 @@ -11470,18 +10861,6 @@ 0 15 - - - Disabled - Enabled - - - - 0 29 - - - 0 15 - @@ -12071,22 +11450,22 @@ 0.5 5 - -5 5 - 0.01 m meters + -5 5 + 0.01 - -5 5 - 0.01 m meters + -5 5 + 0.01 - -5 5 - 0.01 m meters + -5 5 + 0.01 @@ -12102,52 +11481,13 @@ seconds True - - 0 10 - m - meters - - - - Land Vertically (Not strict) - Retry Landing(Normal Strictness) - Do not land (just Hover) (Very Strict) - - - - 0 10 - 1 - - - 0 20 - s - seconds - - - - Go to the last location where landing target was detected - Go towards the approximate location of the detected landing target - - - - 0 5 - m - meters - - - 0 50 - m - meters - - - 0: Moving Landing Target - None LightwareSF40c + LightWareSF40C-legacy MAVLink TeraRangerTower RangeFinder @@ -12156,7 +11496,6 @@ LightwareSF45B SITL AirSimSITL - CygbotD1 True @@ -12167,69 +11506,69 @@ - -180 180 deg degrees + -180 180 - 0 360 deg degrees + 0 360 - 0 127 deg degrees + 0 127 - 0 360 deg degrees + 0 360 - 0 127 deg degrees + 0 127 - 0 360 deg degrees + 0 360 - 0 127 deg degrees + 0 127 - 0 360 deg degrees + 0 360 - 0 127 deg degrees + 0 127 - 0 360 deg degrees + 0 360 - 0 127 deg degrees + 0 127 - 0 360 deg degrees + 0 360 - 0 127 deg degrees + 0 127 @@ -12244,27 +11583,17 @@ - 0 20 Hz hertz - - - 0 500 - m - meters - - - 0 500 - m - meters + 0 20 - 0.5 5 - 0.1 Hz hertz + 0.5 5 + 0.1 1.000 3.000 @@ -12359,12 +11688,12 @@ cm/s/s centimeters per square second - + 0 100 Hz hertz - + 0 100 Hz hertz @@ -12374,31 +11703,31 @@ 0.01 - 0 45 - 1 deg degrees - - - 1 20 + 0 45 1 - m/s/s/s - meters per cubic second - - 5 50 - 1 - m/s/s/s - meters per cubic second + + s + seconds + 0.25 2 + 0.01 + + + s + seconds + 0.1 1 + 0.01 - 0.1 km kilometers + 0.1 @@ -12414,30 +11743,30 @@ seconds - 0:Ignore RC Receiver, 1:Ignore MAVLink Overrides, 2:Ignore Receiver Failsafe bit but allow other RC failsafes if setup, 3:FPort Pad, 4:Log RC input bytes, 5:Arming check throttle for 0 input, 6:Skip the arming check for neutral Roll/Pitch/Yaw sticks, 7:Allow Switch reverse, 8:Use passthrough for CRSF telemetry, 9:Suppress CRSF mode/rate message for ELRS systems,10:Enable multiple receiver support, 11:CRSF RSSI shows Link Quality + 0:Ignore RC Receiver, 1:Ignore MAVLink Overrides, 2:Ignore Receiver Failsafe bit but allow other RC failsafes if setup, 3:FPort Pad, 4:Log RC input bytes, 5:Arming check throttle for 0 input, 6:Skip the arming check for neutral Roll/Pitch/Yay sticks, 7:Allow Switch reverse, 8:Use passthrough for CRSF telemetry - 0:All,1:PPM,2:IBUS,3:SBUS,4:SBUS_NI,5:DSM,6:SUMD,7:SRXL,8:SRXL2,9:CRSF,10:ST24,11:FPORT,12:FPORT2,13:FastSBUS + 0:All,1:PPM,2:IBUS,3:SBUS,4:SBUS_NI,5:DSM,6:SUMD,7:SRXL,8:SRXL2,9:CRSF,10:ST24,11:FPORT,12:FPORT2 - 800 2200 - 1 PWM PWM in microseconds + 800 2200 + 1 - 800 2200 - 1 PWM PWM in microseconds + 800 2200 + 1 - 800 2200 - 1 PWM PWM in microseconds + 800 2200 + 1 @@ -12446,9 +11775,9 @@ - 0 200 PWM PWM in microseconds + 0 200 @@ -12488,7 +11817,7 @@ ADSB Avoidance En PrecLoiter Proximity Avoidance - ArmDisarm (4.1 and lower) + ArmDisarm SmartRTL InvertedFlight RC Override Enable @@ -12516,25 +11845,17 @@ Standby Mode RunCam Control RunCam OSD Control - VisOdom Align + Viso Align Disarm ZigZag Auto Air Mode Generator EKF Pos Source VTX Power - AUTO RTL KillIMU1 KillIMU2 Camera Mode Toggle GPS Disable Yaw - Turtle - simple heading reset - ArmDisarm (4.2 and higher) - ArmDisarm with AirMode (4.2 and higher) - Optflow Calibration - Force Flying - Turbine Start(heli) Scripting1 Scripting2 Scripting3 @@ -12548,22 +11869,22 @@ - 800 2200 - 1 PWM PWM in microseconds + 800 2200 + 1 - 800 2200 - 1 PWM PWM in microseconds + 800 2200 + 1 - 800 2200 - 1 PWM PWM in microseconds + 800 2200 + 1 @@ -12572,9 +11893,9 @@ - 0 200 PWM PWM in microseconds + 0 200 @@ -12614,7 +11935,7 @@ ADSB Avoidance En PrecLoiter Proximity Avoidance - ArmDisarm (4.1 and lower) + ArmDisarm SmartRTL InvertedFlight RC Override Enable @@ -12642,25 +11963,17 @@ Standby Mode RunCam Control RunCam OSD Control - VisOdom Align + Viso Align Disarm ZigZag Auto Air Mode Generator EKF Pos Source VTX Power - AUTO RTL KillIMU1 KillIMU2 Camera Mode Toggle GPS Disable Yaw - Turtle - simple heading reset - ArmDisarm (4.2 and higher) - ArmDisarm with AirMode (4.2 and higher) - Optflow Calibration - Force Flying - Turbine Start(heli) Scripting1 Scripting2 Scripting3 @@ -12674,22 +11987,22 @@ - 800 2200 - 1 PWM PWM in microseconds + 800 2200 + 1 - 800 2200 - 1 PWM PWM in microseconds + 800 2200 + 1 - 800 2200 - 1 PWM PWM in microseconds + 800 2200 + 1 @@ -12698,9 +12011,9 @@ - 0 200 PWM PWM in microseconds + 0 200 @@ -12740,7 +12053,7 @@ ADSB Avoidance En PrecLoiter Proximity Avoidance - ArmDisarm (4.1 and lower) + ArmDisarm SmartRTL InvertedFlight RC Override Enable @@ -12768,25 +12081,17 @@ Standby Mode RunCam Control RunCam OSD Control - VisOdom Align + Viso Align Disarm ZigZag Auto Air Mode Generator EKF Pos Source VTX Power - AUTO RTL KillIMU1 KillIMU2 Camera Mode Toggle GPS Disable Yaw - Turtle - simple heading reset - ArmDisarm (4.2 and higher) - ArmDisarm with AirMode (4.2 and higher) - Optflow Calibration - Force Flying - Turbine Start(heli) Scripting1 Scripting2 Scripting3 @@ -12800,22 +12105,22 @@ - 800 2200 - 1 PWM PWM in microseconds + 800 2200 + 1 - 800 2200 - 1 PWM PWM in microseconds + 800 2200 + 1 - 800 2200 - 1 PWM PWM in microseconds + 800 2200 + 1 @@ -12824,9 +12129,9 @@ - 0 200 PWM PWM in microseconds + 0 200 @@ -12866,7 +12171,7 @@ ADSB Avoidance En PrecLoiter Proximity Avoidance - ArmDisarm (4.1 and lower) + ArmDisarm SmartRTL InvertedFlight RC Override Enable @@ -12894,25 +12199,17 @@ Standby Mode RunCam Control RunCam OSD Control - VisOdom Align + Viso Align Disarm ZigZag Auto Air Mode Generator EKF Pos Source VTX Power - AUTO RTL KillIMU1 KillIMU2 Camera Mode Toggle GPS Disable Yaw - Turtle - simple heading reset - ArmDisarm (4.2 and higher) - ArmDisarm with AirMode (4.2 and higher) - Optflow Calibration - Force Flying - Turbine Start(heli) Scripting1 Scripting2 Scripting3 @@ -12926,22 +12223,22 @@ - 800 2200 - 1 PWM PWM in microseconds + 800 2200 + 1 - 800 2200 - 1 PWM PWM in microseconds + 800 2200 + 1 - 800 2200 - 1 PWM PWM in microseconds + 800 2200 + 1 @@ -12950,9 +12247,9 @@ - 0 200 PWM PWM in microseconds + 0 200 @@ -12992,7 +12289,7 @@ ADSB Avoidance En PrecLoiter Proximity Avoidance - ArmDisarm (4.1 and lower) + ArmDisarm SmartRTL InvertedFlight RC Override Enable @@ -13020,25 +12317,17 @@ Standby Mode RunCam Control RunCam OSD Control - VisOdom Align + Viso Align Disarm ZigZag Auto Air Mode Generator EKF Pos Source VTX Power - AUTO RTL KillIMU1 KillIMU2 Camera Mode Toggle GPS Disable Yaw - Turtle - simple heading reset - ArmDisarm (4.2 and higher) - ArmDisarm with AirMode (4.2 and higher) - Optflow Calibration - Force Flying - Turbine Start(heli) Scripting1 Scripting2 Scripting3 @@ -13052,22 +12341,22 @@ - 800 2200 - 1 PWM PWM in microseconds + 800 2200 + 1 - 800 2200 - 1 PWM PWM in microseconds + 800 2200 + 1 - 800 2200 - 1 PWM PWM in microseconds + 800 2200 + 1 @@ -13076,9 +12365,9 @@ - 0 200 PWM PWM in microseconds + 0 200 @@ -13118,7 +12407,7 @@ ADSB Avoidance En PrecLoiter Proximity Avoidance - ArmDisarm (4.1 and lower) + ArmDisarm SmartRTL InvertedFlight RC Override Enable @@ -13146,25 +12435,17 @@ Standby Mode RunCam Control RunCam OSD Control - VisOdom Align + Viso Align Disarm ZigZag Auto Air Mode Generator EKF Pos Source VTX Power - AUTO RTL KillIMU1 KillIMU2 Camera Mode Toggle GPS Disable Yaw - Turtle - simple heading reset - ArmDisarm (4.2 and higher) - ArmDisarm with AirMode (4.2 and higher) - Optflow Calibration - Force Flying - Turbine Start(heli) Scripting1 Scripting2 Scripting3 @@ -13178,22 +12459,22 @@ - 800 2200 - 1 PWM PWM in microseconds + 800 2200 + 1 - 800 2200 - 1 PWM PWM in microseconds + 800 2200 + 1 - 800 2200 - 1 PWM PWM in microseconds + 800 2200 + 1 @@ -13202,9 +12483,9 @@ - 0 200 PWM PWM in microseconds + 0 200 @@ -13244,7 +12525,7 @@ ADSB Avoidance En PrecLoiter Proximity Avoidance - ArmDisarm (4.1 and lower) + ArmDisarm SmartRTL InvertedFlight RC Override Enable @@ -13272,25 +12553,17 @@ Standby Mode RunCam Control RunCam OSD Control - VisOdom Align + Viso Align Disarm ZigZag Auto Air Mode Generator EKF Pos Source VTX Power - AUTO RTL KillIMU1 KillIMU2 Camera Mode Toggle GPS Disable Yaw - Turtle - simple heading reset - ArmDisarm (4.2 and higher) - ArmDisarm with AirMode (4.2 and higher) - Optflow Calibration - Force Flying - Turbine Start(heli) Scripting1 Scripting2 Scripting3 @@ -13304,22 +12577,22 @@ - 800 2200 - 1 PWM PWM in microseconds + 800 2200 + 1 - 800 2200 - 1 PWM PWM in microseconds + 800 2200 + 1 - 800 2200 - 1 PWM PWM in microseconds + 800 2200 + 1 @@ -13328,9 +12601,9 @@ - 0 200 PWM PWM in microseconds + 0 200 @@ -13370,7 +12643,7 @@ ADSB Avoidance En PrecLoiter Proximity Avoidance - ArmDisarm (4.1 and lower) + ArmDisarm SmartRTL InvertedFlight RC Override Enable @@ -13398,25 +12671,17 @@ Standby Mode RunCam Control RunCam OSD Control - VisOdom Align + Viso Align Disarm ZigZag Auto Air Mode Generator EKF Pos Source VTX Power - AUTO RTL KillIMU1 KillIMU2 Camera Mode Toggle GPS Disable Yaw - Turtle - simple heading reset - ArmDisarm (4.2 and higher) - ArmDisarm with AirMode (4.2 and higher) - Optflow Calibration - Force Flying - Turbine Start(heli) Scripting1 Scripting2 Scripting3 @@ -13430,22 +12695,22 @@ - 800 2200 - 1 PWM PWM in microseconds + 800 2200 + 1 - 800 2200 - 1 PWM PWM in microseconds + 800 2200 + 1 - 800 2200 - 1 PWM PWM in microseconds + 800 2200 + 1 @@ -13454,9 +12719,9 @@ - 0 200 PWM PWM in microseconds + 0 200 @@ -13496,7 +12761,7 @@ ADSB Avoidance En PrecLoiter Proximity Avoidance - ArmDisarm (4.1 and lower) + ArmDisarm SmartRTL InvertedFlight RC Override Enable @@ -13524,25 +12789,17 @@ Standby Mode RunCam Control RunCam OSD Control - VisOdom Align + Viso Align Disarm ZigZag Auto Air Mode Generator EKF Pos Source VTX Power - AUTO RTL KillIMU1 KillIMU2 Camera Mode Toggle GPS Disable Yaw - Turtle - simple heading reset - ArmDisarm (4.2 and higher) - ArmDisarm with AirMode (4.2 and higher) - Optflow Calibration - Force Flying - Turbine Start(heli) Scripting1 Scripting2 Scripting3 @@ -13556,22 +12813,22 @@ - 800 2200 - 1 PWM PWM in microseconds + 800 2200 + 1 - 800 2200 - 1 PWM PWM in microseconds + 800 2200 + 1 - 800 2200 - 1 PWM PWM in microseconds + 800 2200 + 1 @@ -13580,9 +12837,9 @@ - 0 200 PWM PWM in microseconds + 0 200 @@ -13622,7 +12879,7 @@ ADSB Avoidance En PrecLoiter Proximity Avoidance - ArmDisarm (4.1 and lower) + ArmDisarm SmartRTL InvertedFlight RC Override Enable @@ -13650,25 +12907,17 @@ Standby Mode RunCam Control RunCam OSD Control - VisOdom Align + Viso Align Disarm ZigZag Auto Air Mode Generator EKF Pos Source VTX Power - AUTO RTL KillIMU1 KillIMU2 Camera Mode Toggle GPS Disable Yaw - Turtle - simple heading reset - ArmDisarm (4.2 and higher) - ArmDisarm with AirMode (4.2 and higher) - Optflow Calibration - Force Flying - Turbine Start(heli) Scripting1 Scripting2 Scripting3 @@ -13682,22 +12931,22 @@ - 800 2200 - 1 PWM PWM in microseconds + 800 2200 + 1 - 800 2200 - 1 PWM PWM in microseconds + 800 2200 + 1 - 800 2200 - 1 PWM PWM in microseconds + 800 2200 + 1 @@ -13706,9 +12955,9 @@ - 0 200 PWM PWM in microseconds + 0 200 @@ -13748,7 +12997,7 @@ ADSB Avoidance En PrecLoiter Proximity Avoidance - ArmDisarm (4.1 and lower) + ArmDisarm SmartRTL InvertedFlight RC Override Enable @@ -13776,25 +13025,17 @@ Standby Mode RunCam Control RunCam OSD Control - VisOdom Align + Viso Align Disarm ZigZag Auto Air Mode Generator EKF Pos Source VTX Power - AUTO RTL KillIMU1 KillIMU2 Camera Mode Toggle GPS Disable Yaw - Turtle - simple heading reset - ArmDisarm (4.2 and higher) - ArmDisarm with AirMode (4.2 and higher) - Optflow Calibration - Force Flying - Turbine Start(heli) Scripting1 Scripting2 Scripting3 @@ -13808,22 +13049,22 @@ - 800 2200 - 1 PWM PWM in microseconds + 800 2200 + 1 - 800 2200 - 1 PWM PWM in microseconds + 800 2200 + 1 - 800 2200 - 1 PWM PWM in microseconds + 800 2200 + 1 @@ -13832,9 +13073,9 @@ - 0 200 PWM PWM in microseconds + 0 200 @@ -13874,7 +13115,7 @@ ADSB Avoidance En PrecLoiter Proximity Avoidance - ArmDisarm (4.1 and lower) + ArmDisarm SmartRTL InvertedFlight RC Override Enable @@ -13902,25 +13143,17 @@ Standby Mode RunCam Control RunCam OSD Control - VisOdom Align + Viso Align Disarm ZigZag Auto Air Mode Generator EKF Pos Source VTX Power - AUTO RTL KillIMU1 KillIMU2 Camera Mode Toggle GPS Disable Yaw - Turtle - simple heading reset - ArmDisarm (4.2 and higher) - ArmDisarm with AirMode (4.2 and higher) - Optflow Calibration - Force Flying - Turbine Start(heli) Scripting1 Scripting2 Scripting3 @@ -13934,22 +13167,22 @@ - 800 2200 - 1 PWM PWM in microseconds + 800 2200 + 1 - 800 2200 - 1 PWM PWM in microseconds + 800 2200 + 1 - 800 2200 - 1 PWM PWM in microseconds + 800 2200 + 1 @@ -13958,9 +13191,9 @@ - 0 200 PWM PWM in microseconds + 0 200 @@ -14000,7 +13233,7 @@ ADSB Avoidance En PrecLoiter Proximity Avoidance - ArmDisarm (4.1 and lower) + ArmDisarm SmartRTL InvertedFlight RC Override Enable @@ -14028,25 +13261,17 @@ Standby Mode RunCam Control RunCam OSD Control - VisOdom Align + Viso Align Disarm ZigZag Auto Air Mode Generator EKF Pos Source VTX Power - AUTO RTL KillIMU1 KillIMU2 Camera Mode Toggle GPS Disable Yaw - Turtle - simple heading reset - ArmDisarm (4.2 and higher) - ArmDisarm with AirMode (4.2 and higher) - Optflow Calibration - Force Flying - Turbine Start(heli) Scripting1 Scripting2 Scripting3 @@ -14060,22 +13285,22 @@ - 800 2200 - 1 PWM PWM in microseconds + 800 2200 + 1 - 800 2200 - 1 PWM PWM in microseconds + 800 2200 + 1 - 800 2200 - 1 PWM PWM in microseconds + 800 2200 + 1 @@ -14084,9 +13309,9 @@ - 0 200 PWM PWM in microseconds + 0 200 @@ -14126,7 +13351,7 @@ ADSB Avoidance En PrecLoiter Proximity Avoidance - ArmDisarm (4.1 and lower) + ArmDisarm SmartRTL InvertedFlight RC Override Enable @@ -14154,25 +13379,17 @@ Standby Mode RunCam Control RunCam OSD Control - VisOdom Align + Viso Align Disarm ZigZag Auto Air Mode Generator EKF Pos Source VTX Power - AUTO RTL KillIMU1 KillIMU2 Camera Mode Toggle GPS Disable Yaw - Turtle - simple heading reset - ArmDisarm (4.2 and higher) - ArmDisarm with AirMode (4.2 and higher) - Optflow Calibration - Force Flying - Turbine Start(heli) Scripting1 Scripting2 Scripting3 @@ -14186,22 +13403,22 @@ - 800 2200 - 1 PWM PWM in microseconds + 800 2200 + 1 - 800 2200 - 1 PWM PWM in microseconds + 800 2200 + 1 - 800 2200 - 1 PWM PWM in microseconds + 800 2200 + 1 @@ -14210,9 +13427,9 @@ - 0 200 PWM PWM in microseconds + 0 200 @@ -14252,7 +13469,7 @@ ADSB Avoidance En PrecLoiter Proximity Avoidance - ArmDisarm (4.1 and lower) + ArmDisarm SmartRTL InvertedFlight RC Override Enable @@ -14280,25 +13497,17 @@ Standby Mode RunCam Control RunCam OSD Control - VisOdom Align + Viso Align Disarm ZigZag Auto Air Mode Generator EKF Pos Source VTX Power - AUTO RTL KillIMU1 KillIMU2 Camera Mode Toggle GPS Disable Yaw - Turtle - simple heading reset - ArmDisarm (4.2 and higher) - ArmDisarm with AirMode (4.2 and higher) - Optflow Calibration - Force Flying - Turbine Start(heli) Scripting1 Scripting2 Scripting3 @@ -14312,22 +13521,22 @@ - 800 2200 - 1 PWM PWM in microseconds + 800 2200 + 1 - 800 2200 - 1 PWM PWM in microseconds + 800 2200 + 1 - 800 2200 - 1 PWM PWM in microseconds + 800 2200 + 1 @@ -14336,9 +13545,9 @@ - 0 200 PWM PWM in microseconds + 0 200 @@ -14378,7 +13587,7 @@ ADSB Avoidance En PrecLoiter Proximity Avoidance - ArmDisarm (4.1 and lower) + ArmDisarm SmartRTL InvertedFlight RC Override Enable @@ -14406,25 +13615,17 @@ Standby Mode RunCam Control RunCam OSD Control - VisOdom Align + Viso Align Disarm ZigZag Auto Air Mode Generator EKF Pos Source VTX Power - AUTO RTL KillIMU1 KillIMU2 Camera Mode Toggle GPS Disable Yaw - Turtle - simple heading reset - ArmDisarm (4.2 and higher) - ArmDisarm with AirMode (4.2 and higher) - Optflow Calibration - Force Flying - Turbine Start(heli) Scripting1 Scripting2 Scripting3 @@ -14473,14 +13674,6 @@ BB Blue GP0 pin 6 BB Blue GP0 pin 5 BBBMini Pin P8.17 - MainOut1 - MainOut2 - MainOut3 - MainOut4 - MainOut5 - MainOut6 - MainOut7 - MainOut8 @@ -14497,14 +13690,6 @@ BB Blue GP0 pin 6 BB Blue GP0 pin 5 BBBMini Pin P8.18 - MainOut1 - MainOut2 - MainOut3 - MainOut4 - MainOut5 - MainOut6 - MainOut7 - MainOut8 @@ -14521,14 +13706,6 @@ BB Blue GP0 pin 6 BB Blue GP0 pin 5 BBBMini Pin P8.19 - MainOut1 - MainOut2 - MainOut3 - MainOut4 - MainOut5 - MainOut6 - MainOut7 - MainOut8 @@ -14545,14 +13722,6 @@ BB Blue GP0 pin 6 BB Blue GP0 pin 5 BBBMini Pin P8.34 - MainOut1 - MainOut2 - MainOut3 - MainOut4 - MainOut5 - MainOut6 - MainOut7 - MainOut8 @@ -14576,14 +13745,6 @@ BB Blue GP0 pin 6 BB Blue GP0 pin 5 BBBMini Pin P8.13 - MainOut1 - MainOut2 - MainOut3 - MainOut4 - MainOut5 - MainOut6 - MainOut7 - MainOut8 @@ -14600,19 +13761,11 @@ BB Blue GP0 pin 6 BB Blue GP0 pin 5 BBBMini Pin P8.14 - MainOut1 - MainOut2 - MainOut3 - MainOut4 - MainOut5 - MainOut6 - MainOut7 - MainOut8 - + None Analog @@ -14624,7 +13777,7 @@ LightWareSerial Bebop MAVLink - USD1_Serial + uLanding LeddarOne MaxbotixSerial TeraRangerI2C @@ -14637,7 +13790,7 @@ LidarLightV3HP PWM BlueRoboticsPing - DroneCAN + UAVCAN BenewakeTFminiPlus-I2C LanbaoPSK-CM8JL65-CC5 BenewakeTF03 @@ -14647,35 +13800,31 @@ GYUS42v2 MSP USD1_CAN - Benewake_CAN SITL - + Not Used - Pixracer - Pixhawk ADC4 - Pixhawk ADC3 - Pixhawk ADC6/Pixhawk2 ADC - AUX1 - AUX2 - AUX3 - AUX4 - AUX5 - AUX6 - Pixhawk SBUS + PX4-airspeed port + Pixhawk-airspeed port + Pixhawk AUXOUT1 + Pixhawk AUXOUT2 + Pixhawk AUXOUT3 + Pixhawk AUXOUT4 + Pixhawk AUXOUT5 + Pixhawk AUXOUT6 - - 0.001 + m/V meters per volt + 0.001 - 0.001 V volt + 0.001 @@ -14685,24 +13834,24 @@ - 1 cm centimeters + 1 - 1 cm centimeters + 1 Not Used - AUX1 - AUX2 - AUX3 - AUX4 - AUX5 - AUX6 + Pixhawk AUXOUT1 + Pixhawk AUXOUT2 + Pixhawk AUXOUT3 + Pixhawk AUXOUT4 + Pixhawk AUXOUT5 + Pixhawk AUXOUT6 PX4 FMU Relay1 PX4 FMU Relay2 PX4IO Relay1 @@ -14718,37 +13867,37 @@ - 0 32767 m meters + 0 32767 - 5 127 - 1 cm centimeters + 5 127 + 1 - + 0 127 1 - -5 5 - 0.01 m meters + -5 5 + 0.01 - -5 5 - 0.01 m meters + -5 5 + 0.01 - -5 5 - 0.01 m meters + -5 5 + 0.01 @@ -14785,15 +13934,9 @@ High Speed - - 0 65535 - - - 0 65535 - - + None Analog @@ -14805,7 +13948,7 @@ LightWareSerial Bebop MAVLink - USD1_Serial + uLanding LeddarOne MaxbotixSerial TeraRangerI2C @@ -14818,7 +13961,7 @@ LidarLightV3HP PWM BlueRoboticsPing - DroneCAN + UAVCAN BenewakeTFminiPlus-I2C LanbaoPSK-CM8JL65-CC5 BenewakeTF03 @@ -14828,35 +13971,31 @@ GYUS42v2 MSP USD1_CAN - Benewake_CAN SITL - + Not Used - Pixracer - Pixhawk ADC4 - Pixhawk ADC3 - Pixhawk ADC6/Pixhawk2 ADC - AUX1 - AUX2 - AUX3 - AUX4 - AUX5 - AUX6 - Pixhawk SBUS + PX4-airspeed port + Pixhawk-airspeed port + Pixhawk AUXOUT1 + Pixhawk AUXOUT2 + Pixhawk AUXOUT3 + Pixhawk AUXOUT4 + Pixhawk AUXOUT5 + Pixhawk AUXOUT6 - - 0.001 + m/V meters per volt + 0.001 - 0.001 V volt + 0.001 @@ -14866,24 +14005,24 @@ - 1 cm centimeters + 1 - 1 cm centimeters + 1 Not Used - AUX1 - AUX2 - AUX3 - AUX4 - AUX5 - AUX6 + Pixhawk AUXOUT1 + Pixhawk AUXOUT2 + Pixhawk AUXOUT3 + Pixhawk AUXOUT4 + Pixhawk AUXOUT5 + Pixhawk AUXOUT6 PX4 FMU Relay1 PX4 FMU Relay2 PX4IO Relay1 @@ -14899,37 +14038,37 @@ - 0 32767 m meters + 0 32767 - 5 127 - 1 cm centimeters + 5 127 + 1 - + 0 127 1 - -5 5 - 0.01 m meters + -5 5 + 0.01 - -5 5 - 0.01 m meters + -5 5 + 0.01 - -5 5 - 0.01 m meters + -5 5 + 0.01 @@ -14966,15 +14105,9 @@ High Speed - - 0 65535 - - - 0 65535 - - + None Analog @@ -14986,7 +14119,7 @@ LightWareSerial Bebop MAVLink - USD1_Serial + uLanding LeddarOne MaxbotixSerial TeraRangerI2C @@ -14999,7 +14132,7 @@ LidarLightV3HP PWM BlueRoboticsPing - DroneCAN + UAVCAN BenewakeTFminiPlus-I2C LanbaoPSK-CM8JL65-CC5 BenewakeTF03 @@ -15009,35 +14142,31 @@ GYUS42v2 MSP USD1_CAN - Benewake_CAN SITL - + Not Used - Pixracer - Pixhawk ADC4 - Pixhawk ADC3 - Pixhawk ADC6/Pixhawk2 ADC - AUX1 - AUX2 - AUX3 - AUX4 - AUX5 - AUX6 - Pixhawk SBUS + PX4-airspeed port + Pixhawk-airspeed port + Pixhawk AUXOUT1 + Pixhawk AUXOUT2 + Pixhawk AUXOUT3 + Pixhawk AUXOUT4 + Pixhawk AUXOUT5 + Pixhawk AUXOUT6 - - 0.001 + m/V meters per volt + 0.001 - 0.001 V volt + 0.001 @@ -15047,24 +14176,24 @@ - 1 cm centimeters + 1 - 1 cm centimeters + 1 Not Used - AUX1 - AUX2 - AUX3 - AUX4 - AUX5 - AUX6 + Pixhawk AUXOUT1 + Pixhawk AUXOUT2 + Pixhawk AUXOUT3 + Pixhawk AUXOUT4 + Pixhawk AUXOUT5 + Pixhawk AUXOUT6 PX4 FMU Relay1 PX4 FMU Relay2 PX4IO Relay1 @@ -15080,37 +14209,37 @@ - 0 32767 m meters + 0 32767 - 5 127 - 1 cm centimeters + 5 127 + 1 - + 0 127 1 - -5 5 - 0.01 m meters + -5 5 + 0.01 - -5 5 - 0.01 m meters + -5 5 + 0.01 - -5 5 - 0.01 m meters + -5 5 + 0.01 @@ -15147,15 +14276,9 @@ High Speed - - 0 65535 - - - 0 65535 - - + None Analog @@ -15167,7 +14290,7 @@ LightWareSerial Bebop MAVLink - USD1_Serial + uLanding LeddarOne MaxbotixSerial TeraRangerI2C @@ -15180,7 +14303,7 @@ LidarLightV3HP PWM BlueRoboticsPing - DroneCAN + UAVCAN BenewakeTFminiPlus-I2C LanbaoPSK-CM8JL65-CC5 BenewakeTF03 @@ -15190,35 +14313,31 @@ GYUS42v2 MSP USD1_CAN - Benewake_CAN SITL - + Not Used - Pixracer - Pixhawk ADC4 - Pixhawk ADC3 - Pixhawk ADC6/Pixhawk2 ADC - AUX1 - AUX2 - AUX3 - AUX4 - AUX5 - AUX6 - Pixhawk SBUS + PX4-airspeed port + Pixhawk-airspeed port + Pixhawk AUXOUT1 + Pixhawk AUXOUT2 + Pixhawk AUXOUT3 + Pixhawk AUXOUT4 + Pixhawk AUXOUT5 + Pixhawk AUXOUT6 - - 0.001 + m/V meters per volt + 0.001 - 0.001 V volt + 0.001 @@ -15228,24 +14347,24 @@ - 1 cm centimeters + 1 - 1 cm centimeters + 1 Not Used - AUX1 - AUX2 - AUX3 - AUX4 - AUX5 - AUX6 + Pixhawk AUXOUT1 + Pixhawk AUXOUT2 + Pixhawk AUXOUT3 + Pixhawk AUXOUT4 + Pixhawk AUXOUT5 + Pixhawk AUXOUT6 PX4 FMU Relay1 PX4 FMU Relay2 PX4IO Relay1 @@ -15261,37 +14380,37 @@ - 0 32767 m meters + 0 32767 - 5 127 - 1 cm centimeters + 5 127 + 1 - + 0 127 1 - -5 5 - 0.01 m meters + -5 5 + 0.01 - -5 5 - 0.01 m meters + -5 5 + 0.01 - -5 5 - 0.01 m meters + -5 5 + 0.01 @@ -15328,15 +14447,9 @@ High Speed - - 0 65535 - - - 0 65535 - - + None Analog @@ -15348,7 +14461,7 @@ LightWareSerial Bebop MAVLink - USD1_Serial + uLanding LeddarOne MaxbotixSerial TeraRangerI2C @@ -15361,7 +14474,7 @@ LidarLightV3HP PWM BlueRoboticsPing - DroneCAN + UAVCAN BenewakeTFminiPlus-I2C LanbaoPSK-CM8JL65-CC5 BenewakeTF03 @@ -15371,35 +14484,31 @@ GYUS42v2 MSP USD1_CAN - Benewake_CAN SITL - + Not Used - Pixracer - Pixhawk ADC4 - Pixhawk ADC3 - Pixhawk ADC6/Pixhawk2 ADC - AUX1 - AUX2 - AUX3 - AUX4 - AUX5 - AUX6 - Pixhawk SBUS + PX4-airspeed port + Pixhawk-airspeed port + Pixhawk AUXOUT1 + Pixhawk AUXOUT2 + Pixhawk AUXOUT3 + Pixhawk AUXOUT4 + Pixhawk AUXOUT5 + Pixhawk AUXOUT6 - - 0.001 + m/V meters per volt + 0.001 - 0.001 V volt + 0.001 @@ -15409,24 +14518,24 @@ - 1 cm centimeters + 1 - 1 cm centimeters + 1 Not Used - AUX1 - AUX2 - AUX3 - AUX4 - AUX5 - AUX6 + Pixhawk AUXOUT1 + Pixhawk AUXOUT2 + Pixhawk AUXOUT3 + Pixhawk AUXOUT4 + Pixhawk AUXOUT5 + Pixhawk AUXOUT6 PX4 FMU Relay1 PX4 FMU Relay2 PX4IO Relay1 @@ -15442,37 +14551,37 @@ - 0 32767 m meters + 0 32767 - 5 127 - 1 cm centimeters + 5 127 + 1 - + 0 127 1 - -5 5 - 0.01 m meters + -5 5 + 0.01 - -5 5 - 0.01 m meters + -5 5 + 0.01 - -5 5 - 0.01 m meters + -5 5 + 0.01 @@ -15509,15 +14618,9 @@ High Speed - - 0 65535 - - - 0 65535 - - + None Analog @@ -15529,7 +14632,7 @@ LightWareSerial Bebop MAVLink - USD1_Serial + uLanding LeddarOne MaxbotixSerial TeraRangerI2C @@ -15542,7 +14645,7 @@ LidarLightV3HP PWM BlueRoboticsPing - DroneCAN + UAVCAN BenewakeTFminiPlus-I2C LanbaoPSK-CM8JL65-CC5 BenewakeTF03 @@ -15552,35 +14655,31 @@ GYUS42v2 MSP USD1_CAN - Benewake_CAN SITL - + Not Used - Pixracer - Pixhawk ADC4 - Pixhawk ADC3 - Pixhawk ADC6/Pixhawk2 ADC - AUX1 - AUX2 - AUX3 - AUX4 - AUX5 - AUX6 - Pixhawk SBUS + PX4-airspeed port + Pixhawk-airspeed port + Pixhawk AUXOUT1 + Pixhawk AUXOUT2 + Pixhawk AUXOUT3 + Pixhawk AUXOUT4 + Pixhawk AUXOUT5 + Pixhawk AUXOUT6 - - 0.001 + m/V meters per volt + 0.001 - 0.001 V volt + 0.001 @@ -15590,24 +14689,24 @@ - 1 cm centimeters + 1 - 1 cm centimeters + 1 Not Used - AUX1 - AUX2 - AUX3 - AUX4 - AUX5 - AUX6 + Pixhawk AUXOUT1 + Pixhawk AUXOUT2 + Pixhawk AUXOUT3 + Pixhawk AUXOUT4 + Pixhawk AUXOUT5 + Pixhawk AUXOUT6 PX4 FMU Relay1 PX4 FMU Relay2 PX4IO Relay1 @@ -15623,37 +14722,37 @@ - 0 32767 m meters + 0 32767 - 5 127 - 1 cm centimeters + 5 127 + 1 - + 0 127 1 - -5 5 - 0.01 m meters + -5 5 + 0.01 - -5 5 - 0.01 m meters + -5 5 + 0.01 - -5 5 - 0.01 m meters + -5 5 + 0.01 @@ -15690,15 +14789,9 @@ High Speed - - 0 65535 - - - 0 65535 - - + None Analog @@ -15710,7 +14803,7 @@ LightWareSerial Bebop MAVLink - USD1_Serial + uLanding LeddarOne MaxbotixSerial TeraRangerI2C @@ -15723,7 +14816,7 @@ LidarLightV3HP PWM BlueRoboticsPing - DroneCAN + UAVCAN BenewakeTFminiPlus-I2C LanbaoPSK-CM8JL65-CC5 BenewakeTF03 @@ -15733,35 +14826,31 @@ GYUS42v2 MSP USD1_CAN - Benewake_CAN SITL - + Not Used - Pixracer - Pixhawk ADC4 - Pixhawk ADC3 - Pixhawk ADC6/Pixhawk2 ADC - AUX1 - AUX2 - AUX3 - AUX4 - AUX5 - AUX6 - Pixhawk SBUS + PX4-airspeed port + Pixhawk-airspeed port + Pixhawk AUXOUT1 + Pixhawk AUXOUT2 + Pixhawk AUXOUT3 + Pixhawk AUXOUT4 + Pixhawk AUXOUT5 + Pixhawk AUXOUT6 - - 0.001 + m/V meters per volt + 0.001 - 0.001 V volt + 0.001 @@ -15771,24 +14860,24 @@ - 1 cm centimeters + 1 - 1 cm centimeters + 1 Not Used - AUX1 - AUX2 - AUX3 - AUX4 - AUX5 - AUX6 + Pixhawk AUXOUT1 + Pixhawk AUXOUT2 + Pixhawk AUXOUT3 + Pixhawk AUXOUT4 + Pixhawk AUXOUT5 + Pixhawk AUXOUT6 PX4 FMU Relay1 PX4 FMU Relay2 PX4IO Relay1 @@ -15804,37 +14893,37 @@ - 0 32767 m meters + 0 32767 - 5 127 - 1 cm centimeters + 5 127 + 1 - + 0 127 1 - -5 5 - 0.01 m meters + -5 5 + 0.01 - -5 5 - 0.01 m meters + -5 5 + 0.01 - -5 5 - 0.01 m meters + -5 5 + 0.01 @@ -15871,15 +14960,9 @@ High Speed - - 0 65535 - - - 0 65535 - - + None Analog @@ -15891,7 +14974,7 @@ LightWareSerial Bebop MAVLink - USD1_Serial + uLanding LeddarOne MaxbotixSerial TeraRangerI2C @@ -15904,7 +14987,7 @@ LidarLightV3HP PWM BlueRoboticsPing - DroneCAN + UAVCAN BenewakeTFminiPlus-I2C LanbaoPSK-CM8JL65-CC5 BenewakeTF03 @@ -15914,35 +14997,31 @@ GYUS42v2 MSP USD1_CAN - Benewake_CAN SITL - + Not Used - Pixracer - Pixhawk ADC4 - Pixhawk ADC3 - Pixhawk ADC6/Pixhawk2 ADC - AUX1 - AUX2 - AUX3 - AUX4 - AUX5 - AUX6 - Pixhawk SBUS + PX4-airspeed port + Pixhawk-airspeed port + Pixhawk AUXOUT1 + Pixhawk AUXOUT2 + Pixhawk AUXOUT3 + Pixhawk AUXOUT4 + Pixhawk AUXOUT5 + Pixhawk AUXOUT6 - - 0.001 + m/V meters per volt + 0.001 - 0.001 V volt + 0.001 @@ -15952,24 +15031,24 @@ - 1 cm centimeters + 1 - 1 cm centimeters + 1 Not Used - AUX1 - AUX2 - AUX3 - AUX4 - AUX5 - AUX6 + Pixhawk AUXOUT1 + Pixhawk AUXOUT2 + Pixhawk AUXOUT3 + Pixhawk AUXOUT4 + Pixhawk AUXOUT5 + Pixhawk AUXOUT6 PX4 FMU Relay1 PX4 FMU Relay2 PX4IO Relay1 @@ -15985,37 +15064,37 @@ - 0 32767 m meters + 0 32767 - 5 127 - 1 cm centimeters + 5 127 + 1 - + 0 127 1 - -5 5 - 0.01 m meters + -5 5 + 0.01 - -5 5 - 0.01 m meters + -5 5 + 0.01 - -5 5 - 0.01 m meters + -5 5 + 0.01 @@ -16052,15 +15131,9 @@ High Speed - - 0 65535 - - - 0 65535 - - + None Analog @@ -16072,7 +15145,7 @@ LightWareSerial Bebop MAVLink - USD1_Serial + uLanding LeddarOne MaxbotixSerial TeraRangerI2C @@ -16085,7 +15158,7 @@ LidarLightV3HP PWM BlueRoboticsPing - DroneCAN + UAVCAN BenewakeTFminiPlus-I2C LanbaoPSK-CM8JL65-CC5 BenewakeTF03 @@ -16095,35 +15168,31 @@ GYUS42v2 MSP USD1_CAN - Benewake_CAN SITL - + Not Used - Pixracer - Pixhawk ADC4 - Pixhawk ADC3 - Pixhawk ADC6/Pixhawk2 ADC - AUX1 - AUX2 - AUX3 - AUX4 - AUX5 - AUX6 - Pixhawk SBUS + PX4-airspeed port + Pixhawk-airspeed port + Pixhawk AUXOUT1 + Pixhawk AUXOUT2 + Pixhawk AUXOUT3 + Pixhawk AUXOUT4 + Pixhawk AUXOUT5 + Pixhawk AUXOUT6 - - 0.001 + m/V meters per volt + 0.001 - 0.001 V volt + 0.001 @@ -16133,24 +15202,24 @@ - 1 cm centimeters + 1 - 1 cm centimeters + 1 Not Used - AUX1 - AUX2 - AUX3 - AUX4 - AUX5 - AUX6 + Pixhawk AUXOUT1 + Pixhawk AUXOUT2 + Pixhawk AUXOUT3 + Pixhawk AUXOUT4 + Pixhawk AUXOUT5 + Pixhawk AUXOUT6 PX4 FMU Relay1 PX4 FMU Relay2 PX4IO Relay1 @@ -16166,37 +15235,37 @@ - 0 32767 m meters + 0 32767 - 5 127 - 1 cm centimeters + 5 127 + 1 - + 0 127 1 - -5 5 - 0.01 m meters + -5 5 + 0.01 - -5 5 - 0.01 m meters + -5 5 + 0.01 - -5 5 - 0.01 m meters + -5 5 + 0.01 @@ -16233,15 +15302,9 @@ High Speed - - 0 65535 - - - 0 65535 - - + None Analog @@ -16253,7 +15316,7 @@ LightWareSerial Bebop MAVLink - USD1_Serial + uLanding LeddarOne MaxbotixSerial TeraRangerI2C @@ -16266,7 +15329,7 @@ LidarLightV3HP PWM BlueRoboticsPing - DroneCAN + UAVCAN BenewakeTFminiPlus-I2C LanbaoPSK-CM8JL65-CC5 BenewakeTF03 @@ -16276,35 +15339,31 @@ GYUS42v2 MSP USD1_CAN - Benewake_CAN SITL - + Not Used - Pixracer - Pixhawk ADC4 - Pixhawk ADC3 - Pixhawk ADC6/Pixhawk2 ADC - AUX1 - AUX2 - AUX3 - AUX4 - AUX5 - AUX6 - Pixhawk SBUS + PX4-airspeed port + Pixhawk-airspeed port + Pixhawk AUXOUT1 + Pixhawk AUXOUT2 + Pixhawk AUXOUT3 + Pixhawk AUXOUT4 + Pixhawk AUXOUT5 + Pixhawk AUXOUT6 - - 0.001 + m/V meters per volt + 0.001 - 0.001 V volt + 0.001 @@ -16314,24 +15373,24 @@ - 1 cm centimeters + 1 - 1 cm centimeters + 1 Not Used - AUX1 - AUX2 - AUX3 - AUX4 - AUX5 - AUX6 + Pixhawk AUXOUT1 + Pixhawk AUXOUT2 + Pixhawk AUXOUT3 + Pixhawk AUXOUT4 + Pixhawk AUXOUT5 + Pixhawk AUXOUT6 PX4 FMU Relay1 PX4 FMU Relay2 PX4IO Relay1 @@ -16347,37 +15406,37 @@ - 0 32767 m meters + 0 32767 - 5 127 - 1 cm centimeters + 5 127 + 1 - + 0 127 1 - -5 5 - 0.01 m meters + -5 5 + 0.01 - -5 5 - 0.01 m meters + -5 5 + 0.01 - -5 5 - 0.01 m meters + -5 5 + 0.01 @@ -16414,88 +15473,63 @@ High Speed - - 0 65535 - - - 0 65535 - - - + + None - Not Used + PWM AUXPIN EFI Harmonic Notch - ESC Telemetry Motors Bitmask - + 0.001 - + 1 - + 1 - + 0.1 - + Disabled - AUX1 - AUX2 - AUX3 - AUX4 - AUX5 - AUX6 + PixhawkAUX1 + PixhawkAUX2 + PixhawkAUX3 + PixhawkAUX4 + PixhawkAUX5 + PixhawkAUX6 - - 0:Channel1,1:Channel2,2:Channel3,3:Channel4,4:Channel5,5:Channel6,6:Channel7,7:Channel8,8:Channel9,9:Channel10,10:Channel11,11:Channel12,12:Channel13,13:Channel14,14:Channel15,15:Channel16 - - - - + None - Not Used + PWM AUXPIN EFI Harmonic Notch - ESC Telemetry Motors Bitmask - + 0.001 - - 1 - - - 1 - - - 0.1 - - + Disabled - AUX1 - AUX2 - AUX3 - AUX4 - AUX5 - AUX6 + PixhawkAUX1 + PixhawkAUX2 + PixhawkAUX3 + PixhawkAUX4 + PixhawkAUX5 + PixhawkAUX6 - - 0:Channel1,1:Channel2,2:Channel3,3:Channel4,4:Channel5,5:Channel6,6:Channel7,7:Channel8,8:Channel9,9:Channel10,10:Channel11,11:Channel12,12:Channel13,13:Channel14,14:Channel15,15:Channel16 - @@ -16515,39 +15549,39 @@ Pixhawk ADC4 Pixhawk ADC3 Pixhawk ADC6/Pixhawk2 ADC - AUX1 - AUX2 - AUX3 - AUX4 - AUX5 - AUX6 + PixhawkAUX1 + PixhawkAUX2 + PixhawkAUX3 + PixhawkAUX4 + PixhawkAUX5 + PixhawkAUX6 Pixhawk SBUS - - 0 5.0 - 0.01 + V volt + 0.01 + 0 5.0 - - 0 5.0 - 0.01 + V volt + 0.01 + 0 5.0 0 16 - 0 2000 PWM PWM in microseconds + 0 2000 - 0 2000 PWM PWM in microseconds + 0 2000 @@ -16590,9 +15624,8 @@ 1024 True - - 0:No Scripts to run message if all scripts have stopped, 1:Runtime messages for memory usage and execution time, 2:Suppress logging scripts to dataflash, 3:log runtime memory usage and execution time - + + @@ -16600,10 +15633,6 @@ - - - - 0:ROMFS, 1:APM/scripts @@ -16666,7 +15695,7 @@ RunCam HottTelem Scripting - Crossfire VTX + Crossfire Generator Winch MSP @@ -16675,11 +15704,6 @@ ADSB AHRS SmartAudio - FETtecOneWire - Torqeedo - AIS - CoDevESC - DisplayPort True @@ -16731,7 +15755,7 @@ RunCam HottTelem Scripting - Crossfire VTX + Crossfire Generator Winch MSP @@ -16740,11 +15764,6 @@ ADSB AHRS SmartAudio - FETtecOneWire - Torqeedo - AIS - CoDevESC - DisplayPort True @@ -16796,7 +15815,7 @@ RunCam HottTelem Scripting - Crossfire VTX + Crossfire Generator Winch MSP @@ -16805,11 +15824,6 @@ ADSB AHRS SmartAudio - FETtecOneWire - Torqeedo - AIS - CoDevESC - DisplayPort True @@ -16861,7 +15875,7 @@ RunCam HottTelem Scripting - Crossfire VTX + Crossfire Generator Winch MSP @@ -16870,11 +15884,6 @@ ADSB AHRS SmartAudio - FETtecOneWire - Torqeedo - AIS - CoDevESC - DisplayPort True @@ -16926,7 +15935,7 @@ RunCam HottTelem Scripting - Crossfire VTX + Crossfire Generator Winch MSP @@ -16935,11 +15944,6 @@ ADSB AHRS SmartAudio - FETtecOneWire - Torqeedo - AIS - CoDevESC - DisplayPort True @@ -16991,7 +15995,7 @@ RunCam HottTelem Scripting - Crossfire VTX + Crossfire Generator Winch MSP @@ -17000,11 +16004,6 @@ ADSB AHRS SmartAudio - FETtecOneWire - Torqeedo - AIS - CoDevESC - DisplayPort True @@ -17028,27 +16027,27 @@ - 0:InvertRX, 1:InvertTX, 2:HalfDuplex, 3:Swap, 4: RX_PullDown, 5: RX_PullUp, 6: TX_PullDown, 7: TX_PullUp, 8: RX_NoDMA, 9: TX_NoDMA, 10: Don't forward mavlink to/from, 11: DisableFIFO, 12: Ignore Streamrate + 0:InvertRX, 1:InvertTX, 2:HalfDuplex, 3:Swap, 4: RX_PullDown, 5: RX_PullUp, 6: TX_PullDown, 7: TX_PullUp, 8: RX_NoDMA, 9: TX_NoDMA, 10: Don't forward mavlink to/from True - 0:InvertRX, 1:InvertTX, 2:HalfDuplex, 3:Swap, 4: RX_PullDown, 5: RX_PullUp, 6: TX_PullDown, 7: TX_PullUp, 8: RX_NoDMA, 9: TX_NoDMA, 10: Don't forward mavlink to/from, 11: DisableFIFO, 12: Ignore Streamrate + 0:InvertRX, 1:InvertTX, 2:HalfDuplex, 3:Swap, 4: RX_PullDown, 5: RX_PullUp, 6: TX_PullDown, 7: TX_PullUp, 8: RX_NoDMA, 9: TX_NoDMA, 10: Don't forward mavlink to/from True - 0:InvertRX, 1:InvertTX, 2:HalfDuplex, 3:Swap, 4: RX_PullDown, 5: RX_PullUp, 6: TX_PullDown, 7: TX_PullUp, 8: RX_NoDMA, 9: TX_NoDMA, 10: Don't forward mavlink to/from, 11: DisableFIFO, 12: Ignore Streamrate + 0:InvertRX, 1:InvertTX, 2:HalfDuplex, 3:Swap, 4: RX_PullDown, 5: RX_PullUp, 6: TX_PullDown, 7: TX_PullUp, 8: RX_NoDMA, 9: TX_NoDMA, 10: Don't forward mavlink to/from True - 0:InvertRX, 1:InvertTX, 2:HalfDuplex, 3:Swap, 4: RX_PullDown, 5: RX_PullUp, 6: TX_PullDown, 7: TX_PullUp, 8: RX_NoDMA, 9: TX_NoDMA, 10: Don't forward mavlink to/from, 11: DisableFIFO, 12: Ignore Streamrate + 0:InvertRX, 1:InvertTX, 2:HalfDuplex, 3:Swap, 4: RX_PullDown, 5: RX_PullUp, 6: TX_PullDown, 7: TX_PullUp, 8: RX_NoDMA, 9: TX_NoDMA, 10: Don't forward mavlink to/from True - 0:InvertRX, 1:InvertTX, 2:HalfDuplex, 3:Swap, 4: RX_PullDown, 5: RX_PullUp, 6: TX_PullDown, 7: TX_PullUp, 8: RX_NoDMA, 9: TX_NoDMA, 10: Don't forward mavlink to/from, 11: DisableFIFO, 12: Ignore Streamrate + 0:InvertRX, 1:InvertTX, 2:HalfDuplex, 3:Swap, 4: RX_PullDown, 5: RX_PullUp, 6: TX_PullDown, 7: TX_PullUp, 8: RX_NoDMA, 9: TX_NoDMA, 10: Don't forward mavlink to/from True - 0:InvertRX, 1:InvertTX, 2:HalfDuplex, 3:Swap, 4: RX_PullDown, 5: RX_PullUp, 6: TX_PullDown, 7: TX_PullUp, 8: RX_NoDMA, 9: TX_NoDMA, 10: Don't forward mavlink to/from, 11: DisableFIFO, 12: Ignore Streamrate + 0:InvertRX, 1:InvertTX, 2:HalfDuplex, 3:Swap, 4: RX_PullDown, 5: RX_PullUp, 6: TX_PullDown, 7: TX_PullUp, 8: RX_NoDMA, 9: TX_NoDMA, 10: Don't forward mavlink to/from True @@ -17109,7 +16108,7 @@ RunCam HottTelem Scripting - Crossfire VTX + Crossfire Generator Winch MSP @@ -17117,12 +16116,6 @@ AirSpeed ADSB AHRS - SmartAudio - FETtecOneWire - Torqeedo - AIS - CoDevESC - DisplayPort True @@ -17146,7 +16139,7 @@ - 0:InvertRX, 1:InvertTX, 2:HalfDuplex, 3:Swap, 4: RX_PullDown, 5: RX_PullUp, 6: TX_PullDown, 7: TX_PullUp, 8: RX_NoDMA, 9: TX_NoDMA, 10: Don't forward mavlink to/from, 11: DisableFIFO, 12: Ignore Streamrate + 0:InvertRX, 1:InvertTX, 2:HalfDuplex, 3:Swap, 4: RX_PullDown, 5: RX_PullUp, 6: TX_PullDown, 7: TX_PullUp, 8: RX_NoDMA, 9: TX_NoDMA, 10: Don't forward mavlink to/from True @@ -17178,7 +16171,7 @@ RunCam HottTelem Scripting - Crossfire VTX + Crossfire Generator Winch MSP @@ -17186,16 +16179,10 @@ AirSpeed ADSB AHRS - SmartAudio - FETtecOneWire - Torqeedo - AIS - CoDevESC - DisplayPort True - + 1200 2400 @@ -17215,76 +16202,7 @@ - 0:InvertRX, 1:InvertTX, 2:HalfDuplex, 3:Swap, 4: RX_PullDown, 5: RX_PullUp, 6: TX_PullDown, 7: TX_PullUp, 8: RX_NoDMA, 9: TX_NoDMA, 10: Don't forward mavlink to/from, 11: DisableFIFO, 12: Ignore Streamrate - True - - - - None - MAVLink1 - MAVLink2 - Frsky D - Frsky SPort - GPS - Alexmos Gimbal Serial - SToRM32 Gimbal Serial - Rangefinder - FrSky SPort Passthrough (OpenTX) - Lidar360 - Beacon - Volz servo out - SBus servo out - ESC Telemetry - Devo Telemetry - OpticalFlow - RobotisServo - NMEA Output - WindVane - SLCAN - RCIN - MegaSquirt EFI - LTM - RunCam - HottTelem - Scripting - Crossfire VTX - Generator - Winch - MSP - DJI FPV - AirSpeed - ADSB - AHRS - SmartAudio - FETtecOneWire - Torqeedo - AIS - CoDevESC - DisplayPort - - True - - - - 1200 - 2400 - 4800 - 9600 - 19200 - 38400 - 57600 - 111100 - 115200 - 230400 - 256000 - 460800 - 500000 - 921600 - 1500000 - - - - 0:InvertRX, 1:InvertTX, 2:HalfDuplex, 3:Swap, 4: RX_PullDown, 5: RX_PullUp, 6: TX_PullDown, 7: TX_PullUp, 8: RX_NoDMA, 9: TX_NoDMA, 10: Don't forward mavlink to/from, 11: DisableFIFO, 12: Ignore Streamrate + 0:InvertRX, 1:InvertTX, 2:HalfDuplex, 3:Swap, 4: RX_PullDown, 5: RX_PullUp, 6: TX_PullDown, 7: TX_PullUp, 8: RX_NoDMA, 9: TX_NoDMA, 10: Don't forward mavlink to/from True @@ -17306,33 +16224,28 @@ None - BLHeli32/Kiss - BLHeli_S + BLHeli32/BLHeli_S/Kiss - - 0:Servo 1, 1:Servo 2, 2:Servo 3, 3:Servo 4, 4:Servo 5, 5:Servo 6, 6:Servo 7, 7:Servo 8, 8:Servo 9, 9:Servo 10, 10:Servo 11, 11:Servo 12, 12:Servo 13, 13:Servo 14, 14:Servo 15, 15:Servo 16 - True - + PWM + PWM in microseconds 500 2200 1 - PWM - PWM in microseconds - 800 2200 - 1 PWM PWM in microseconds + 800 2200 + 1 - 800 2200 - 1 PWM PWM in microseconds + 800 2200 + 1 @@ -17342,7 +16255,6 @@ - GPIO Disabled RCPassThru MountPan @@ -17432,29 +16344,27 @@ SERVOn_MIN SERVOn_TRIM SERVOn_MAX - Alarm - Alarm Inverted + PWM + PWM in microseconds 500 2200 1 - PWM - PWM in microseconds - 800 2200 - 1 PWM PWM in microseconds + 800 2200 + 1 - 800 2200 - 1 PWM PWM in microseconds + 800 2200 + 1 @@ -17464,7 +16374,6 @@ - GPIO Disabled RCPassThru MountPan @@ -17554,29 +16463,27 @@ SERVOn_MIN SERVOn_TRIM SERVOn_MAX - Alarm - Alarm Inverted + PWM + PWM in microseconds 500 2200 1 - PWM - PWM in microseconds - 800 2200 - 1 PWM PWM in microseconds + 800 2200 + 1 - 800 2200 - 1 PWM PWM in microseconds + 800 2200 + 1 @@ -17586,7 +16493,6 @@ - GPIO Disabled RCPassThru MountPan @@ -17676,29 +16582,27 @@ SERVOn_MIN SERVOn_TRIM SERVOn_MAX - Alarm - Alarm Inverted + PWM + PWM in microseconds 500 2200 1 - PWM - PWM in microseconds - 800 2200 - 1 PWM PWM in microseconds + 800 2200 + 1 - 800 2200 - 1 PWM PWM in microseconds + 800 2200 + 1 @@ -17708,7 +16612,6 @@ - GPIO Disabled RCPassThru MountPan @@ -17798,29 +16701,27 @@ SERVOn_MIN SERVOn_TRIM SERVOn_MAX - Alarm - Alarm Inverted + PWM + PWM in microseconds 500 2200 1 - PWM - PWM in microseconds - 800 2200 - 1 PWM PWM in microseconds + 800 2200 + 1 - 800 2200 - 1 PWM PWM in microseconds + 800 2200 + 1 @@ -17830,7 +16731,6 @@ - GPIO Disabled RCPassThru MountPan @@ -17920,29 +16820,27 @@ SERVOn_MIN SERVOn_TRIM SERVOn_MAX - Alarm - Alarm Inverted + PWM + PWM in microseconds 500 2200 1 - PWM - PWM in microseconds - 800 2200 - 1 PWM PWM in microseconds + 800 2200 + 1 - 800 2200 - 1 PWM PWM in microseconds + 800 2200 + 1 @@ -17952,7 +16850,6 @@ - GPIO Disabled RCPassThru MountPan @@ -18042,29 +16939,27 @@ SERVOn_MIN SERVOn_TRIM SERVOn_MAX - Alarm - Alarm Inverted + PWM + PWM in microseconds 500 2200 1 - PWM - PWM in microseconds - 800 2200 - 1 PWM PWM in microseconds + 800 2200 + 1 - 800 2200 - 1 PWM PWM in microseconds + 800 2200 + 1 @@ -18074,7 +16969,6 @@ - GPIO Disabled RCPassThru MountPan @@ -18164,29 +17058,27 @@ SERVOn_MIN SERVOn_TRIM SERVOn_MAX - Alarm - Alarm Inverted + PWM + PWM in microseconds 500 2200 1 - PWM - PWM in microseconds - 800 2200 - 1 PWM PWM in microseconds + 800 2200 + 1 - 800 2200 - 1 PWM PWM in microseconds + 800 2200 + 1 @@ -18196,7 +17088,6 @@ - GPIO Disabled RCPassThru MountPan @@ -18286,29 +17177,27 @@ SERVOn_MIN SERVOn_TRIM SERVOn_MAX - Alarm - Alarm Inverted + PWM + PWM in microseconds 500 2200 1 - PWM - PWM in microseconds - 800 2200 - 1 PWM PWM in microseconds + 800 2200 + 1 - 800 2200 - 1 PWM PWM in microseconds + 800 2200 + 1 @@ -18318,7 +17207,6 @@ - GPIO Disabled RCPassThru MountPan @@ -18408,29 +17296,27 @@ SERVOn_MIN SERVOn_TRIM SERVOn_MAX - Alarm - Alarm Inverted + PWM + PWM in microseconds 500 2200 1 - PWM - PWM in microseconds - 800 2200 - 1 PWM PWM in microseconds + 800 2200 + 1 - 800 2200 - 1 PWM PWM in microseconds + 800 2200 + 1 @@ -18440,7 +17326,6 @@ - GPIO Disabled RCPassThru MountPan @@ -18530,29 +17415,27 @@ SERVOn_MIN SERVOn_TRIM SERVOn_MAX - Alarm - Alarm Inverted + PWM + PWM in microseconds 500 2200 1 - PWM - PWM in microseconds - 800 2200 - 1 PWM PWM in microseconds + 800 2200 + 1 - 800 2200 - 1 PWM PWM in microseconds + 800 2200 + 1 @@ -18562,7 +17445,6 @@ - GPIO Disabled RCPassThru MountPan @@ -18652,29 +17534,27 @@ SERVOn_MIN SERVOn_TRIM SERVOn_MAX - Alarm - Alarm Inverted + PWM + PWM in microseconds 500 2200 1 - PWM - PWM in microseconds - 800 2200 - 1 PWM PWM in microseconds + 800 2200 + 1 - 800 2200 - 1 PWM PWM in microseconds + 800 2200 + 1 @@ -18684,7 +17564,6 @@ - GPIO Disabled RCPassThru MountPan @@ -18774,29 +17653,27 @@ SERVOn_MIN SERVOn_TRIM SERVOn_MAX - Alarm - Alarm Inverted + PWM + PWM in microseconds 500 2200 1 - PWM - PWM in microseconds - 800 2200 - 1 PWM PWM in microseconds + 800 2200 + 1 - 800 2200 - 1 PWM PWM in microseconds + 800 2200 + 1 @@ -18806,7 +17683,6 @@ - GPIO Disabled RCPassThru MountPan @@ -18896,29 +17772,27 @@ SERVOn_MIN SERVOn_TRIM SERVOn_MAX - Alarm - Alarm Inverted + PWM + PWM in microseconds 500 2200 1 - PWM - PWM in microseconds - 800 2200 - 1 PWM PWM in microseconds + 800 2200 + 1 - 800 2200 - 1 PWM PWM in microseconds + 800 2200 + 1 @@ -18928,7 +17802,6 @@ - GPIO Disabled RCPassThru MountPan @@ -19018,29 +17891,27 @@ SERVOn_MIN SERVOn_TRIM SERVOn_MAX - Alarm - Alarm Inverted + PWM + PWM in microseconds 500 2200 1 - PWM - PWM in microseconds - 800 2200 - 1 PWM PWM in microseconds + 800 2200 + 1 - 800 2200 - 1 PWM PWM in microseconds + 800 2200 + 1 @@ -19050,7 +17921,6 @@ - GPIO Disabled RCPassThru MountPan @@ -19140,29 +18010,27 @@ SERVOn_MIN SERVOn_TRIM SERVOn_MAX - Alarm - Alarm Inverted + PWM + PWM in microseconds 500 2200 1 - PWM - PWM in microseconds - 800 2200 - 1 PWM PWM in microseconds + 800 2200 + 1 - 800 2200 - 1 PWM PWM in microseconds + 800 2200 + 1 @@ -19172,7 +18040,6 @@ - GPIO Disabled RCPassThru MountPan @@ -19262,22 +18129,18 @@ SERVOn_MIN SERVOn_TRIM SERVOn_MAX - Alarm - Alarm Inverted 0:Channel1,1:Channel2,2:Channel3,3:Channel4,4:Channel5,5:Channel6,6:Channel7,7:Channel8,8:Channel9,9:Channel10,10:Channel11,11:Channel12,12:Channel13,13:Channel14,14:Channel15,15:Channel16 - True Disabled Enabled - True @@ -19293,14 +18156,14 @@ - 0 300 s seconds + 0 300 - 0 500 Hz hertz + 0 500 @@ -19319,45 +18182,28 @@ DShot600 DShot1200 - True - + Console - Mavlink Serial Channel1 - Mavlink Serial Channel2 - Mavlink Serial Channel3 - Mavlink Serial Channel4 - Mavlink Serial Channel5 + Serial1 + Serial2 + Serial3 + Serial4 + Serial5 1 127 - True 0:Channel1,1:Channel2,2:Channel3,3:Channel4,4:Channel5,5:Channel6,6:Channel7,7:Channel8,8:Channel9,9:Channel10,10:Channel11,11:Channel12,12:Channel13,13:Channel14,14:Channel15,15:Channel16 - True 0:Channel1,1:Channel2,2:Channel3,3:Channel4,4:Channel5,5:Channel6,6:Channel7,7:Channel8,8:Channel9,9:Channel10,10:Channel11,11:Channel12,12:Channel13,13:Channel14,14:Channel15,15:Channel16 - True 0:Channel1,1:Channel2,2:Channel3,3:Channel4,4:Channel5,5:Channel6,6:Channel7,7:Channel8,8:Channel9,9:Channel10,10:Channel11,11:Channel12,12:Channel13,13:Channel14,14:Channel15,15:Channel16 - True - - - - - 0:SERVO1,1:SERVO2,2:SERVO3,3:SERVO4,4:SERVO5,5:SERVO6,6:SERVO7,7:SERVO8,8:SERVO9,9:SERVO10,10:SERVO11,11:SERVO12 - True - - - 0:SERVO1,1:SERVO2,2:SERVO3,3:SERVO4,4:SERVO5,5:SERVO6,6:SERVO7,7:SERVO8,8:SERVO9,9:SERVO10,10:SERVO11,11:SERVO12 - - - 2 50 @@ -19435,465 +18281,465 @@ - 0 100 % percent + 0 100 - 1000 2000 ms milliseconds + 1000 2000 - 0 1000 cm/s centimeters per second + 0 1000 - 0 100 % percent + 0 100 - 0 50 - 1 Hz hertz + 0 50 + 1 - - 0 50 - 1 + Hz hertz + 0 50 + 1 - 0 50 - 1 Hz hertz + 0 50 + 1 - 0 50 - 1 Hz hertz + 0 50 + 1 - 0 50 - 1 Hz hertz + 0 50 + 1 - 0 50 - 1 Hz hertz + 0 50 + 1 - 0 50 - 1 Hz hertz + 0 50 + 1 - 0 50 - 1 Hz hertz + 0 50 + 1 - 0 50 - 1 Hz hertz + 0 50 + 1 - 0 50 - 1 Hz hertz + 0 50 + 1 - 0 50 - 1 Hz hertz + 0 50 + 1 - - 0 50 - 1 + Hz hertz + 0 50 + 1 - 0 50 - 1 Hz hertz + 0 50 + 1 - 0 50 - 1 Hz hertz + 0 50 + 1 - 0 50 - 1 Hz hertz + 0 50 + 1 - 0 50 - 1 Hz hertz + 0 50 + 1 - 0 50 - 1 Hz hertz + 0 50 + 1 - 0 50 - 1 Hz hertz + 0 50 + 1 - 0 50 - 1 Hz hertz + 0 50 + 1 - 0 50 - 1 Hz hertz + 0 50 + 1 - 0 50 - 1 Hz hertz + 0 50 + 1 - - 0 50 - 1 + Hz hertz + 0 50 + 1 - 0 50 - 1 Hz hertz + 0 50 + 1 - 0 50 - 1 Hz hertz + 0 50 + 1 - 0 50 - 1 Hz hertz + 0 50 + 1 - 0 50 - 1 Hz hertz + 0 50 + 1 - 0 50 - 1 Hz hertz + 0 50 + 1 - 0 50 - 1 Hz hertz + 0 50 + 1 - 0 50 - 1 Hz hertz + 0 50 + 1 - 0 50 - 1 Hz hertz + 0 50 + 1 - 0 50 - 1 Hz hertz + 0 50 + 1 - - 0 50 - 1 + Hz hertz + 0 50 + 1 - 0 50 - 1 Hz hertz + 0 50 + 1 - 0 50 - 1 Hz hertz + 0 50 + 1 - 0 50 - 1 Hz hertz + 0 50 + 1 - 0 50 - 1 Hz hertz + 0 50 + 1 - 0 50 - 1 Hz hertz + 0 50 + 1 - 0 50 - 1 Hz hertz + 0 50 + 1 - 0 50 - 1 Hz hertz + 0 50 + 1 - 0 50 - 1 Hz hertz + 0 50 + 1 - 0 50 - 1 Hz hertz + 0 50 + 1 - - 0 50 - 1 + Hz hertz + 0 50 + 1 - 0 50 - 1 Hz hertz + 0 50 + 1 - 0 50 - 1 Hz hertz + 0 50 + 1 - 0 50 - 1 Hz hertz + 0 50 + 1 - 0 50 - 1 Hz hertz + 0 50 + 1 - 0 50 - 1 Hz hertz + 0 50 + 1 - 0 50 - 1 Hz hertz + 0 50 + 1 - 0 50 - 1 Hz hertz + 0 50 + 1 - 0 50 - 1 Hz hertz + 0 50 + 1 - 0 50 - 1 Hz hertz + 0 50 + 1 - - 0 50 - 1 + Hz hertz + 0 50 + 1 - 0 50 - 1 Hz hertz + 0 50 + 1 - 0 50 - 1 Hz hertz + 0 50 + 1 - 0 50 - 1 Hz hertz + 0 50 + 1 - 0 50 - 1 Hz hertz + 0 50 + 1 - 0 50 - 1 Hz hertz + 0 50 + 1 - 0 50 - 1 Hz hertz + 0 50 + 1 - 0 50 - 1 Hz hertz + 0 50 + 1 - 0 50 - 1 Hz hertz + 0 50 + 1 - 0 50 - 1 Hz hertz + 0 50 + 1 - - 0 50 - 1 + Hz hertz + 0 50 + 1 - 0 50 - 1 Hz hertz + 0 50 + 1 - 0 50 - 1 Hz hertz + 0 50 + 1 - 0 50 - 1 Hz hertz + 0 50 + 1 - 0 50 - 1 Hz hertz + 0 50 + 1 - 0 50 - 1 Hz hertz + 0 50 + 1 - 0 50 - 1 Hz hertz + 0 50 + 1 - 0 50 - 1 Hz hertz + 0 50 + 1 - 0 50 - 1 Hz hertz + 0 50 + 1 - 0 10 m meters + 0 10 0 500 @@ -19908,19 +18754,19 @@ True - True s seconds + True - True s seconds + True - True s seconds + True @@ -19932,16 +18778,16 @@ - True - True degC degrees Celsius + True + True - True - True degC degrees Celsius + True + True True @@ -19956,23 +18802,13 @@ - 1 m meters + 1 0:Disable Download - - 0.05 50000 - m - meters - - - 0 50 - m - meters - @@ -20331,27 +19167,26 @@ None MAVLink IntelT265 - VOXL(ModalAI) True - -5 5 - 0.01 m meters + -5 5 + 0.01 - -5 5 - 0.01 m meters + -5 5 + 0.01 - -5 5 - 0.01 m meters + -5 5 + 0.01 @@ -20366,24 +19201,24 @@ - 0 250 ms milliseconds + 0 250 - 0.05 5.0 m/s meters per second + 0.05 5.0 - 0.1 10.0 m meters + 0.1 10.0 - 0.05 1.0 rad radians + 0.05 1.0 @@ -20410,8 +19245,8 @@ - 5000 6000 True + 5000 6000 0:Pitmode,1:Pitmode until armed,2:Pitmode when disarmed,3:Unlocked,4:Add leading zero byte to requests @@ -20439,40 +19274,40 @@ + cm/s + centimeters per second 20 2000 50 - cm/s - centimeters per second - 5 1000 - 1 cm centimeters + 5 1000 + 1 + cm/s + centimeters per second 10 1000 50 - cm/s - centimeters per second - 10 500 - 10 cm/s centimeters per second + 10 500 + 10 - 50 500 - 10 cm/s/s centimeters per square second + 50 500 + 10 - 50 500 - 10 cm/s/s centimeters per square second + 50 500 + 10 @@ -20481,14 +19316,9 @@ + m/s/s + meters per square second 1 20 - m/s/s/s - meters per cubic second - - - 0.1 100 - m - meters @@ -20505,14 +19335,14 @@ - 0 127 s seconds + 1 127 - 0.1 100 m meters + 0.1 100 diff --git a/src/FirmwarePlugin/APM/APMParameterFactMetaData.Plane.3.10.xml b/src/FirmwarePlugin/APM/APMParameterFactMetaData.Plane.3.10.xml new file mode 100644 index 0000000..9087863 --- /dev/null +++ b/src/FirmwarePlugin/APM/APMParameterFactMetaData.Plane.3.10.xml @@ -0,0 +1,13856 @@ + + + + + + + + +1 255 + + +1 255 + + +1 10 +1 + + +0 30 +1 +s +seconds + + +0:Roll,1:Pitch,2:Yaw,3:Steering,4:Landing + + +0 1 +0.01 + + +0 5 +0.01 + + +0 15 +0.1 +deg +degrees + + +0 1000 +1 +m +meters + + +0 100 +1 +m +meters + + + +Disabled +FBWMixing +DirectMixing + + + + +Disabled +Enabled + + + +0 30 +0.1 +m/s +meters per second + + +0 30 +0.1 +m/s/s +meters per square second + + +0 127 +1 +ds +deciseconds + + +-100 100 +1 +% +percent + + +0 30 +0.1 +m/s +meters per second + + +0 30 +0.1 +m/s +meters per second + + +-1 127 +1 +%/s +percent per second + + +0 10 +0.5 +s +seconds + + +0 100 +% +percent + + + + +0 45 +1 +deg +degrees + + +0:AUTO_ALWAYS,1:AUTO_LAND,2:AUTO_LOITER_TO_ALT,3:AUTO_LOITER_ALL,4:AUTO_WAYPOINTS,5:LOITER,6:RTL,7:CIRCLE,8:CRUISE,9:FBWB,10:GUIDED + +Never +AutoAlways +AutoLanding + + + + +Default +L1Controller + + + + +Automatic + + + +-32767 32767 +1 +m +meters + + +1 32767 +1 +m +meters + + +0 32767 +1 +m +meters + + +-32767 32767 +1 +m +meters + + +-32767 32767 +1 +m +meters + + + +None +GuidedMode +ReportOnly +GuidedModeThrPass +RTL_Mode + + + + + + + +0 32767 +1 +m +meters + + +0 32767 +1 +m +meters + + +0 32767 +1 +m +meters + + + +NoAutoEnable +AutoEnable +AutoEnableDisableFloorOnly + + + + +FenceReturnPoint +NearestRallyPoint + + + + +Disabled +Enabled + + + +5 100 +1 +m/s +meters per second + + +5 100 +1 +m/s +meters per second + + + +Disabled +Enabled + + + + +Disabled +Enabled + + + +0 10000 +m +meters + + +1 10 +0.1 +m/s +meters per second + + +-100 100 +1 +% +percent + + +0 100 +1 +% +percent + + +0 100 +1 +% +percent + + +0 127 +1 +%/s +percent per second + + +0 100 +1 +%/s +percent per second + + + +Disabled +Enabled + + + + +Disabled +Enabled + + + + +Disabled +Enabled + + + +925 2200 +1 + + +0 100 +1 +% +percent + + + +Disabled +Enabled + + + + +CIRCLE/no change(if already in AUTO|GUIDED|LOITER) +CIRCLE +FBWA +Disable + + + +1 100 +0.5 +s +seconds + + + +Continue +ReturnToLaunch +Glide +Deploy Parachute + + + +1 300 +0.5 +s +seconds + + + +Disabled +Heartbeat +HeartbeatAndREMRSSI +HeartbeatAndAUTO + + + + + + +Manual +CIRCLE +STABILIZE +TRAINING +ACRO +FBWA +FBWB +CRUISE +AUTOTUNE +Auto +RTL +Loiter +AVOID_ADSB +Guided +QSTABILIZE +QHOVER +QLOITER +QLAND +QRTL +QAUTOTUNE + + + + +Manual +CIRCLE +STABILIZE +TRAINING +ACRO +FBWA +FBWB +CRUISE +AUTOTUNE +Auto +RTL +Loiter +AVOID_ADSB +Guided +QSTABILIZE +QHOVER +QLOITER +QLAND +QRTL +QAUTOTUNE + + + + +Manual +CIRCLE +STABILIZE +TRAINING +ACRO +FBWA +FBWB +CRUISE +AUTOTUNE +Auto +RTL +Loiter +AVOID_ADSB +Guided +QSTABILIZE +QHOVER +QLOITER +QLAND +QRTL +QAUTOTUNE + + + + +Manual +CIRCLE +STABILIZE +TRAINING +ACRO +FBWA +FBWB +CRUISE +AUTOTUNE +Auto +RTL +Loiter +AVOID_ADSB +Guided +QSTABILIZE +QHOVER +QLOITER +QLAND +QRTL +QAUTOTUNE + + + + +Manual +CIRCLE +STABILIZE +TRAINING +ACRO +FBWA +FBWB +CRUISE +AUTOTUNE +Auto +RTL +Loiter +AVOID_ADSB +Guided +QSTABILIZE +QHOVER +QLOITER +QLAND +QRTL +QAUTOTUNE + + + + +Manual +CIRCLE +STABILIZE +TRAINING +ACRO +FBWA +FBWB +CRUISE +AUTOTUNE +Auto +RTL +Loiter +AVOID_ADSB +Guided +QSTABILIZE +QHOVER +QLOITER +QLAND +QRTL +QAUTOTUNE + + + + +Manual +CIRCLE +STABILIZE +TRAINING +ACRO +FBWA +FBWB +CRUISE +AUTOTUNE +Auto +RTL +Loiter +AVOID_ADSB +Guided +QSTABILIZE +QHOVER +QLOITER +QLAND +QRTL +QAUTOTUNE + + + +0 9000 +1 +cdeg +centidegrees + + +0 9000 +1 +cdeg +centidegrees + + +-9000 0 +1 +cdeg +centidegrees + + +10 500 +1 +deg/s +degrees per second + + +10 500 +1 +deg/s +degrees per second + + + +Disabled +Enabled + + + +-100 100 +0.1 +m +meters + + +10 360 +1 +deg/s +degrees per second + + + +Disabled +Enabled + + + +0.5 1.2 + + + +Disabled +Enabled + + + +-1000 1000 +d% +decipercent + + +-100 100 +% +percent + + +True + + +0:ATTITUDE_FAST,1:ATTITUDE_MED,2:GPS,3:PM,4:CTUN,5:NTUN,6:MODE,7:IMU,8:CMD,9:CURRENT,10:COMPASS,11:TECS,12:CAMERA,13:RC,14:SONAR,15:ARM/DISARM,19:IMU_RAW + +Disabled +All-Default + + + + + + + +cm/s +centimeters per second + + +m/s +meters per second + + +cm/s +centimeters per second + + +cdeg +centidegrees + + +cm +centimeters + + +cm +centimeters + + + + +0 100 +% +percent + + +0 100 +1 +m/s +meters per second + + +0 100 +% +percent + + +0 100 +1 +m/s +meters per second + + + + + + + +Disabled +Enabled + +True + + + +Disabled +Enabled + + + +0 90 +0.1 +deg +degrees + + + +Disable +Enable - go HOME then land +Enable - go directly to landing sequence + + + +10 127 +m/s/s +meters per square second + + +0:Disarm + + + + + +Disabled +Enabled + + + + +NotEnforced +Enforced + + + +0 100 +1 +% +percent + + +0:Chan1,1:Chan2,2:Chan3,3:Chan4,4:Chan5,5:Chan6,6:Chan7,7:Chan8,8:Chan9,9:Chan10,10:Chan11,11:Chan12,12:Chan13,13:Chan14,14:Chan15,15:Chan16 + + +-1 127 + +Never reset +Always reset + +m +meters + + +0:Rudder mixing in direct flight modes only (Manual / Stabilize / Acro),1:Use centered throttle in Cruise or FBWB to indicate trim airspeed, 2:Disable attitude check for takeoff arming, 3:Force target airspeed to trim airspeed in Cruise or FBWB + + +1 10 + + +0 100 +1 +% +percent + + +0 100 +1 +% +percent + + +0 120 +1 +s +seconds + + +0:pitch control, 1:full span, 2:Progressive crow +0: none, 1: D spoilers have pitch input, 2: use both control surfaces on each wing for roll, 4: Progressive crow, flaps only first (0-50% flap in) then crow flaps (50 - 100% flap in) + + +0 100 +1 +% +percent + + + + + +Disabled +Enabled + + + +1 100 + + +0 100000 +m +meters + + +-1 16777215 + + + +NoInfo +Light +Small +Large +HighVortexlarge +Heavy +HighlyManuv +Rotocraft +RESERVED +Glider +LightAir +Parachute +UltraLight +RESERVED +UAV +Space +RESERVED +EmergencySurface +ServiceSurface +PointObstacle + + + + +NO_DATA +L15W23 +L25W28P5 +L25W34 +L35W33 +L35W38 +L45W39P5 +L45W45 +L55W45 +L55W52 +L65W59P5 +L65W67 +L75W72P5 +L75W80 +L85W80 +L85W90 + + + + +NoData +Left2m +Left4m +Left6m +Center +Right2m +Right4m +Right6m + + + + +NO_DATA +AppliedBySensor + + + + +Disabled +Rx-Only +Tx-Only +Rx and Tx Enabled + + + +0 7777 +octal +octal + + +0:UAT_in,1:1090ES_in,2:UAT_out,3:1090ES_out + +Unknown +Rx UAT only +Rx UAT and 1090ES +Rx&Tx UAT and 1090ES + + + +0 32767 +m +meters + + + + + +no logging +log only special ID +log all + + + + + + + + + + + + + + + + + + + + + +m +meters + + +m +meters + + +mbar +millibar + + + + + + + + + + + + + + +s +seconds + + + + +0.0 1.0 +.01 + + + +Disabled +Enabled + + + +0.1 0.4 +.01 + + +0.1 0.4 +.01 + + +0 127 +1 +m/s +meters per second + + +-0.1745 +0.1745 +0.01 +rad +radians + + +-0.1745 +0.1745 +0.01 +rad +radians + + +-0.1745 +0.1745 +0.01 +rad +radians + + + +None +Yaw45 +Yaw90 +Yaw135 +Yaw180 +Yaw225 +Yaw270 +Yaw315 +Roll180 +Roll180Yaw45 +Roll180Yaw90 +Roll180Yaw135 +Pitch180 +Roll180Yaw225 +Roll180Yaw270 +Roll180Yaw315 +Roll90 +Roll90Yaw45 +Roll90Yaw90 +Roll90Yaw135 +Roll270 +Roll270Yaw45 +Roll270Yaw90 +Roll270Yaw135 +Pitch90 +Pitch270 +Pitch180Yaw90 +Pitch180Yaw270 +Roll90Pitch90 +Roll180Pitch90 +Roll270Pitch90 +Roll90Pitch180 +Roll270Pitch180 +Roll90Pitch270 +Roll180Pitch270 +Roll270Pitch270 +Roll90Pitch180Yaw90 +Roll90Yaw270 +Yaw293Pitch68Roll180 +Pitch315 +Roll90Pitch315 +Custom + + + +0.001 0.5 +.01 + + +0 10 +1 + + + +Disabled +Enable EKF2 +Enable EKF3 + + + +-180 180 +1 +deg +degrees + + +-180 180 +1 +deg +degrees + + +-180 180 +1 +deg +degrees + + + + + +Disabled +THR_MIN PWM when disarmed +0 PWM when disarmed + + + +0:None,1:All,2:Barometer,4:Compass,8:GPS Lock,16:INS(INertial Sensors - accels & gyros),32:Parameters(unused),64:RC Channels,128:Board voltage,256:Battery Level,512:Airspeed,1024:LoggingAvailable,2048:Hardware safety switch,4096:GPS configuration,8192:System + +None +All +Barometer +Compass +GPS Lock +INS(INertial Sensors - accels & gyros) +Parameters(unused) +RC Channels +Board voltage +Battery Level +Airspeed +LoggingAvailable +Hardware safety switch +GPS configuration +System + + + +0.25 3.0 +m/s/s +meters per square second + + + +Disabled +ArmingOnly +ArmOrDisarm + + + +0:Land,1:VTOL Land,2:DO_LAND_START,3:Takeoff,4:VTOL Takeoff,5:Rallypoint + + + + + +None +I2C-MS4525D0 +Analog +I2C-MS5525 +I2C-MS5525 (0x76) +I2C-MS5525 (0x77) +I2C-SDP3X +I2C-DLVR +UAVCAN + + + + +DoNotUse +Use +UseWhenZeroThrottle + + + +0.1 + + +0.1 + + + + + + + + + +Disable +Enable + + + + + + +Bus0(internal) +Bus1(external) +Bus2(auxillary) + + + + +FirstSensor +2ndSensor + + + +0:Disable on sensor failure,1:Re-enable on sensor recovery + + + +None +I2C-MS4525D0 +Analog +I2C-MS5525 +I2C-MS5525 (0x76) +I2C-MS5525 (0x77) +I2C-SDP3X +I2C-DLVR +UAVCAN + + + + +Don't Use +use +UseWhenZeroThrottle + + + +0.1 + + +0.1 + + + + + + + + + +Disable +Enable + + + + + + +Bus0(internal) +Bus1(external) +Bus2(auxillary) + + + + + + +Disabled +Enabled + + + + +Remain in AVOID_ADSB +Resume previous flight mode +RTL +Resume if AUTO else Loiter + + + + + +s +seconds + + +s +seconds + + +m +meters + + +m +meters + + +m +meters + + +m +meters + + +m +meters + + + + + +Disabled +Analog Voltage Only +Analog Voltage and Current +Solo +Bebop +SMBus-Maxell +UAVCAN-BatteryInfo +BLHeli ESC +SumOfFollowing +FuelFlow + +True + + + +Disabled +Pixhawk/Pixracer/Navio2/Pixhawk2_PM1 +Pixhawk2_PM2 +PX4-v1 + +True + + + +Disabled +Pixhawk/Pixracer/Navio2/Pixhawk2_PM1 +Pixhawk2_PM2 +PX4-v1 + +True + + + + +A/V +ampere per volt + + +V +volt + + +50 +mAh +milliampere hour + + +1 +W +watt + + + + +0 120 +1 +s +seconds + + + +Raw Voltage +Sag Compensated Voltage + + + +0.1 +V +volt + + +50 +mAh +milliampere hour + + +0.1 +V +volt + + +50 +mAh +milliampere hour + + + +None +RTL +Land +Terminate +QLand + + + + +None +RTL +Land +Terminate +QLand + + + +0.1 +V +volt + + +50 +mAh +milliampere hour + + + + + +Disabled +Analog Voltage Only +Analog Voltage and Current +Solo +Bebop +SMBus-Maxell +UAVCAN-BatteryInfo +BLHeli ESC +SumOfFollowing +FuelFlow + +True + + + +Disabled +Pixhawk/Pixracer/Navio2/Pixhawk2_PM1 +Pixhawk2_PM2 +PX4-v1 + +True + + + +Disabled +Pixhawk/Pixracer/Navio2/Pixhawk2_PM1 +Pixhawk2_PM2 +PX4-v1 + +True + + + + +A/V +ampere per volt + + +V +volt + + +50 +mAh +milliampere hour + + +1 +W +watt + + + + +0 120 +1 +s +seconds + + + +Raw Voltage +Sag Compensated Voltage + + + +0.1 +V +volt + + +50 +mAh +milliampere hour + + +0.1 +V +volt + + +50 +mAh +milliampere hour + + + +None +RTL +Land +Terminate +QLand + + + + +None +RTL +Land +Terminate +QLand + + + +0.1 +V +volt + + +50 +mAh +milliampere hour + + + + + +Disabled +Analog Voltage Only +Analog Voltage and Current +Solo +Bebop +SMBus-Maxell +UAVCAN-BatteryInfo +BLHeli ESC +SumOfFollowing +FuelFlow + +True + + + +Disabled +Pixhawk/Pixracer/Navio2/Pixhawk2_PM1 +Pixhawk2_PM2 +PX4-v1 + +True + + + +Disabled +Pixhawk/Pixracer/Navio2/Pixhawk2_PM1 +Pixhawk2_PM2 +PX4-v1 + +True + + + + +A/V +ampere per volt + + +V +volt + + +50 +mAh +milliampere hour + + +1 +W +watt + + + + +0 120 +1 +s +seconds + + + +Raw Voltage +Sag Compensated Voltage + + + +0.1 +V +volt + + +50 +mAh +milliampere hour + + +0.1 +V +volt + + +50 +mAh +milliampere hour + + + +None +RTL +Land +Terminate +QLand + + + + +None +RTL +Land +Terminate +QLand + + + +0.1 +V +volt + + +50 +mAh +milliampere hour + + + + + +Disabled +Analog Voltage Only +Analog Voltage and Current +Solo +Bebop +SMBus-Maxell +UAVCAN-BatteryInfo +BLHeli ESC +SumOfFollowing +FuelFlow + +True + + + +Disabled +Pixhawk/Pixracer/Navio2/Pixhawk2_PM1 +Pixhawk2_PM2 +PX4-v1 + +True + + + +Disabled +Pixhawk/Pixracer/Navio2/Pixhawk2_PM1 +Pixhawk2_PM2 +PX4-v1 + +True + + + + +A/V +ampere per volt + + +V +volt + + +50 +mAh +milliampere hour + + +1 +W +watt + + + + +0 120 +1 +s +seconds + + + +Raw Voltage +Sag Compensated Voltage + + + +0.1 +V +volt + + +50 +mAh +milliampere hour + + +0.1 +V +volt + + +50 +mAh +milliampere hour + + + +None +RTL +Land +Terminate +QLand + + + + +None +RTL +Land +Terminate +QLand + + + +0.1 +V +volt + + +50 +mAh +milliampere hour + + + + + +Disabled +Analog Voltage Only +Analog Voltage and Current +Solo +Bebop +SMBus-Maxell +UAVCAN-BatteryInfo +BLHeli ESC +SumOfFollowing +FuelFlow + +True + + + +Disabled +Pixhawk/Pixracer/Navio2/Pixhawk2_PM1 +Pixhawk2_PM2 +PX4-v1 + +True + + + +Disabled +Pixhawk/Pixracer/Navio2/Pixhawk2_PM1 +Pixhawk2_PM2 +PX4-v1 + +True + + + + +A/V +ampere per volt + + +V +volt + + +50 +mAh +milliampere hour + + +1 +W +watt + + + + +0 120 +1 +s +seconds + + + +Raw Voltage +Sag Compensated Voltage + + + +0.1 +V +volt + + +50 +mAh +milliampere hour + + +0.1 +V +volt + + +50 +mAh +milliampere hour + + + +None +RTL +Land +Terminate +QLand + + + + +None +RTL +Land +Terminate +QLand + + + +0.1 +V +volt + + +50 +mAh +milliampere hour + + + + + +Disabled +Analog Voltage Only +Analog Voltage and Current +Solo +Bebop +SMBus-Maxell +UAVCAN-BatteryInfo +BLHeli ESC +SumOfFollowing +FuelFlow + +True + + + +Disabled +Pixhawk/Pixracer/Navio2/Pixhawk2_PM1 +Pixhawk2_PM2 +PX4-v1 + +True + + + +Disabled +Pixhawk/Pixracer/Navio2/Pixhawk2_PM1 +Pixhawk2_PM2 +PX4-v1 + +True + + + + +A/V +ampere per volt + + +V +volt + + +50 +mAh +milliampere hour + + +1 +W +watt + + + + +0 120 +1 +s +seconds + + + +Raw Voltage +Sag Compensated Voltage + + + +0.1 +V +volt + + +50 +mAh +milliampere hour + + +0.1 +V +volt + + +50 +mAh +milliampere hour + + + +None +RTL +Land +Terminate +QLand + + + + +None +RTL +Land +Terminate +QLand + + + +0.1 +V +volt + + +50 +mAh +milliampere hour + + + + + +Disabled +Analog Voltage Only +Analog Voltage and Current +Solo +Bebop +SMBus-Maxell +UAVCAN-BatteryInfo +BLHeli ESC +SumOfFollowing +FuelFlow + +True + + + +Disabled +Pixhawk/Pixracer/Navio2/Pixhawk2_PM1 +Pixhawk2_PM2 +PX4-v1 + +True + + + +Disabled +Pixhawk/Pixracer/Navio2/Pixhawk2_PM1 +Pixhawk2_PM2 +PX4-v1 + +True + + + + +A/V +ampere per volt + + +V +volt + + +50 +mAh +milliampere hour + + +1 +W +watt + + + + +0 120 +1 +s +seconds + + + +Raw Voltage +Sag Compensated Voltage + + + +0.1 +V +volt + + +50 +mAh +milliampere hour + + +0.1 +V +volt + + +50 +mAh +milliampere hour + + + +None +RTL +Land +Terminate +QLand + + + + +None +RTL +Land +Terminate +QLand + + + +0.1 +V +volt + + +50 +mAh +milliampere hour + + + + + +Disabled +Analog Voltage Only +Analog Voltage and Current +Solo +Bebop +SMBus-Maxell +UAVCAN-BatteryInfo +BLHeli ESC +SumOfFollowing +FuelFlow + +True + + + +Disabled +Pixhawk/Pixracer/Navio2/Pixhawk2_PM1 +Pixhawk2_PM2 +PX4-v1 + +True + + + +Disabled +Pixhawk/Pixracer/Navio2/Pixhawk2_PM1 +Pixhawk2_PM2 +PX4-v1 + +True + + + + +A/V +ampere per volt + + +V +volt + + +50 +mAh +milliampere hour + + +1 +W +watt + + + + +0 120 +1 +s +seconds + + + +Raw Voltage +Sag Compensated Voltage + + + +0.1 +V +volt + + +50 +mAh +milliampere hour + + +0.1 +V +volt + + +50 +mAh +milliampere hour + + + +None +RTL +Land +Terminate +QLand + + + + +None +RTL +Land +Terminate +QLand + + + +0.1 +V +volt + + +50 +mAh +milliampere hour + + + + + +Disabled +Analog Voltage Only +Analog Voltage and Current +Solo +Bebop +SMBus-Maxell +UAVCAN-BatteryInfo +BLHeli ESC +SumOfFollowing +FuelFlow + +True + + + +Disabled +Pixhawk/Pixracer/Navio2/Pixhawk2_PM1 +Pixhawk2_PM2 +PX4-v1 + +True + + + +Disabled +Pixhawk/Pixracer/Navio2/Pixhawk2_PM1 +Pixhawk2_PM2 +PX4-v1 + +True + + + + +A/V +ampere per volt + + +V +volt + + +50 +mAh +milliampere hour + + +1 +W +watt + + + + +0 120 +1 +s +seconds + + + +Raw Voltage +Sag Compensated Voltage + + + +0.1 +V +volt + + +50 +mAh +milliampere hour + + +0.1 +V +volt + + +50 +mAh +milliampere hour + + + +None +RTL +Land +Terminate +QLand + + + + +None +RTL +Land +Terminate +QLand + + + +0.1 +V +volt + + +50 +mAh +milliampere hour + + + + + +No PWMs +One PWMs +Two PWMs +Three PWMs +Four PWMs +Five PWMs +Six PWMs +Seven PWMs +Eight PWMs + +True + + + +Disabled +Enabled +Auto + +True + + + +Disabled +Enabled +Auto + +True + + + +Disabled +Enabled + +True + + + +Disabled +50Hz +75Hz +100Hz +150Hz +200Hz +250Hz +300Hz + +True + + +-32768 32767 + + +0:Ch1,1:Ch2,2:Ch3,3:Ch4,4:Ch5,5:Ch6,6:Ch7,7:Ch8,8:Ch9,9:Ch10,10:Ch11,11:Ch12,12:Ch13,13:Ch14 + +Disabled +Enabled + +True + + +-1 80 +degC +degrees Celsius + + + +AUTO +PX4V1 +Pixhawk +Cube/Pixhawk2 +Pixracer +PixhawkMini +Pixhawk2Slim +VRBrain 5.1 +VRBrain 5.2 +VR Micro Brain 5.1 +VR Micro Brain 5.2 +VRBrain Core 1.0 +VRBrain 5.4 +Intel Aero FC +AUAV2.1 + +True + + + +Disabled +Enabled + +True + + +0:ActiveForSafetyEnable,1:ActiveForSafetyDisable,2:ActiveWhenArmed,3:Force safety on when the aircraft disarms + + +4.0 5.5 +0.1 +V +volt + + +3.3 12.0 +0.1 +V +volt + + +0 32 +1 + + + +3.3V +5V + + + +0:Enable hardware watchdog + + + + + +None +CYRF6936 + + + + +Auto +DSM2 +DSMX + + + +0 4 + + + +NotDisabled +Disabled + + + +0 16 + + +0 16 + + + +Disabled +Enabled + + + +1 8 + + + +Disabled +MinChannel +MidChannel +MaxChannel +MinChannelCW +MidChannelCW +MaxChannelCW + + + + +Mode1 +Mode2 + + + + +Disabled +TestChan1 +TestChan2 +TestChan3 +TestChan4 +TestChan5 +TestChan6 +TestChan7 +TestChan8 + + + +0 16 + + +0 16 + + +1 8 + + +0 40 + + +0 120 + + +0 31 + + + + +0:GPS,1:MAVLINK_SYSTEM_TIME,2:HW + + + + + +Disabled +Enabled + + + + +Disabled +AUXOUT1 +AUXOUT2 +AUXOUT3 +AUXOUT4 +AUXOUT5 +AUXOUT6 + + + + +Disabled +AUXOUT1 +AUXOUT2 +AUXOUT3 +AUXOUT4 +AUXOUT5 +AUXOUT6 + + + + +Disabled +AUXOUT1 +AUXOUT2 +AUXOUT3 +AUXOUT4 +AUXOUT5 +AUXOUT6 + + + + +Disabled +AUXOUT1 +AUXOUT2 +AUXOUT3 +AUXOUT4 +AUXOUT5 +AUXOUT6 + + + +0 3600 + + + + + +Servo +Relay + + + +0 50 +ds +deciseconds + + +1000 2000 +PWM +PWM in microseconds + + +1000 2000 +PWM +PWM in microseconds + + +0 1000 +m +meters + + + +Low +High + + + +0 10000 +ms +milliseconds + + +0 180 +deg +degrees + + + +Disabled +AUX1 +AUX2 +AUX3 +AUX4 +AUX5 +AUX6 + +True + + + +TriggerLow +TriggerHigh + + + + +Always +Only when in AUTO + + + + +Default +BMMCC + + + + + + +Disabled +UAVCAN +KDECAN +ToshibaCAN + +True + + + + + + + + +1 250 + + +0: Servo 1, 1: Servo 2, 2: Servo 3, 3: Servo 4, 4: Servo 5, 5: Servo 6, 6: Servo 7, 7: Servo 8, 8: Servo 9, 9: Servo 10, 10: Servo 11, 11: Servo 12, 12: Servo 13, 13: Servo 14, 14: Servo 15 + + +0: ESC 1, 1: ESC 2, 2: ESC 3, 3: ESC 4, 4: ESC 5, 5: ESC 6, 6: ESC 7, 7: ESC 8, 8: ESC 9, 9: ESC 10, 10: ESC 11, 11: ESC 12, 12: ESC 13, 13: ESC 14, 14: ESC 15, 15: ESC 16 + + +1 200 +Hz +hertz + + + + + +Disabled +UAVCAN +KDECAN +ToshibaCAN + +True + + + + + + + + +1 250 + + +0: Servo 1, 1: Servo 2, 2: Servo 3, 3: Servo 4, 4: Servo 5, 5: Servo 6, 6: Servo 7, 7: Servo 8, 8: Servo 9, 9: Servo 10, 10: Servo 11, 11: Servo 12, 12: Servo 13, 13: Servo 14, 14: Servo 15 + + +0: ESC 1, 1: ESC 2, 2: ESC 3, 3: ESC 4, 4: ESC 5, 5: ESC 6, 6: ESC 7, 7: ESC 8, 8: ESC 9, 9: ESC 10, 10: ESC 11, 11: ESC 12, 12: ESC 13, 13: ESC 14, 14: ESC 15, 15: ESC 16 + + +1 200 +Hz +hertz + + + + + +Disabled +UAVCAN +KDECAN +ToshibaCAN + +True + + + + + + + + +1 250 + + +0: Servo 1, 1: Servo 2, 2: Servo 3, 3: Servo 4, 4: Servo 5, 5: Servo 6, 6: Servo 7, 7: Servo 8, 8: Servo 9, 9: Servo 10, 10: Servo 11, 11: Servo 12, 12: Servo 13, 13: Servo 14, 14: Servo 15 + + +0: ESC 1, 1: ESC 2, 2: ESC 3, 3: ESC 4, 4: ESC 5, 5: ESC 6, 6: ESC 7, 7: ESC 8, 8: ESC 9, 9: ESC 10, 10: ESC 11, 11: ESC 12, 12: ESC 13, 13: ESC 14, 14: ESC 15, 15: ESC 16 + + +1 200 +Hz +hertz + + + + + +Disabled +First driver +Second driver + +True + + +10000 1000000 + + + +Disabled +Major messages +All messages + + + + + + +Disabled +First driver +Second driver + +True + + +10000 1000000 + + + +Disabled +Major messages +All messages + + + + + + +Disabled +First driver +Second driver + +True + + +10000 1000000 + + + +Disabled +Major messages +All messages + + + + + + +Disabled +First driver +Second driver + +True + + + +Disabled +Serial0 +Serial1 +Serial2 +Serial3 +Serial4 +Serial5 +Serial6 + + + +0 32767 + + + + + +Disabled +Enabled + + + + +First Relay +Second Relay +Third Relay +Fourth Relay +Servo + + + +1000 2000 +1 +PWM +PWM in microseconds + + +1000 2000 +1 +PWM +PWM in microseconds + + +0 32000 +1 +m +meters + + +0 5000 +1 +ms +milliseconds + + + + +-400 400 +1 +mGauss +milligauss + + +-400 400 +1 +mGauss +milligauss + + +-400 400 +1 +mGauss +milligauss + + +-3.142 3.142 +0.01 +rad +radians + + + +Disabled +Internal-Learning +EKF-Learning +InFlight-Learning + + + + +Disabled +Enabled + + + + +Disabled +Enabled + + + + +Disabled +Use Throttle +Use Current + + + +-1000 1000 +1 +mGauss/A +milligauss per ampere + + +-1000 1000 +1 +mGauss/A +milligauss per ampere + + +-1000 1000 +1 +mGauss/A +milligauss per ampere + + + +None +Yaw45 +Yaw90 +Yaw135 +Yaw180 +Yaw225 +Yaw270 +Yaw315 +Roll180 +Roll180Yaw45 +Roll180Yaw90 +Roll180Yaw135 +Pitch180 +Roll180Yaw225 +Roll180Yaw270 +Roll180Yaw315 +Roll90 +Roll90Yaw45 +Roll90Yaw90 +Roll90Yaw135 +Roll270 +Roll270Yaw45 +Roll270Yaw90 +Roll270Yaw135 +Pitch90 +Pitch270 +Pitch180Yaw90 +Pitch180Yaw270 +Roll90Pitch90 +Roll180Pitch90 +Roll270Pitch90 +Roll90Pitch180 +Roll270Pitch180 +Roll90Pitch270 +Roll180Pitch270 +Roll270Pitch270 +Roll90Pitch180Yaw90 +Roll90Yaw270 +Yaw293Pitch68Roll180 +Pitch315 +Roll90Pitch315 + + + + +Internal +External +ForcedExternal + + + +-400 400 +1 +mGauss +milligauss + + +-400 400 +1 +mGauss +milligauss + + +-400 400 +1 +mGauss +milligauss + + +-1000 1000 +1 +mGauss/A +milligauss per ampere + + +-1000 1000 +1 +mGauss/A +milligauss per ampere + + +-1000 1000 +1 +mGauss/A +milligauss per ampere + + + +FirstCompass +SecondCompass +ThirdCompass + + + +-400 400 +1 +mGauss +milligauss + + +-400 400 +1 +mGauss +milligauss + + +-400 400 +1 +mGauss +milligauss + + +-1000 1000 +1 +mGauss/A +milligauss per ampere + + +-1000 1000 +1 +mGauss/A +milligauss per ampere + + +-1000 1000 +1 +mGauss/A +milligauss per ampere + + +True + + +True + + +True + + + +Disabled +Enabled + + + + +None +Yaw45 +Yaw90 +Yaw135 +Yaw180 +Yaw225 +Yaw270 +Yaw315 +Roll180 +Roll180Yaw45 +Roll180Yaw90 +Roll180Yaw135 +Pitch180 +Roll180Yaw225 +Roll180Yaw270 +Roll180Yaw315 +Roll90 +Roll90Yaw45 +Roll90Yaw90 +Roll90Yaw135 +Roll270 +Roll270Yaw45 +Roll270Yaw90 +Roll270Yaw135 +Pitch90 +Pitch270 +Pitch180Yaw90 +Pitch180Yaw270 +Roll90Pitch90 +Roll180Pitch90 +Roll270Pitch90 +Roll90Pitch180 +Roll270Pitch180 +Roll90Pitch270 +Roll180Pitch270 +Roll270Pitch270 +Roll90Pitch180Yaw90 +Roll90Yaw270 +Yaw293Pitch68Roll180 +Pitch315 +Roll90Pitch315 + + + + +Internal +External +ForcedExternal + + + + +Disabled +Enabled + + + + +None +Yaw45 +Yaw90 +Yaw135 +Yaw180 +Yaw225 +Yaw270 +Yaw315 +Roll180 +Roll180Yaw45 +Roll180Yaw90 +Roll180Yaw135 +Pitch180 +Roll180Yaw225 +Roll180Yaw270 +Roll180Yaw315 +Roll90 +Roll90Yaw45 +Roll90Yaw90 +Roll90Yaw135 +Roll270 +Roll270Yaw45 +Roll270Yaw90 +Roll270Yaw135 +Pitch90 +Pitch270 +Pitch180Yaw90 +Pitch180Yaw270 +Roll90Pitch90 +Roll180Pitch90 +Roll270Pitch90 +Roll90Pitch180 +Roll270Pitch180 +Roll90Pitch270 +Roll180Pitch270 +Roll270Pitch270 +Roll90Pitch180Yaw90 +Roll90Yaw270 +Yaw293Pitch68Roll180 +Pitch315 +Roll90Pitch315 + + + + +Internal +External +ForcedExternal + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +4 32 + +Very Strict +Strict +Default +Relaxed + +0.1 + + +500 3000 +1 + + +0:HMC5883,1:LSM303D,2:AK8963,3:BMM150,4:LSM9DS1,5:LIS3MDL,6:AK09916,7:IST8310,8:ICM20948,9:MMC3416,11:UAVCAN,12:QMC5883,14:MAG3110,15:IST8308 + + +0 100 +1 +% +percent + + + +Disabled +CheckOnly +CheckAndFix + + + + + + + + + + +Disabled +Enabled + + + + + + +Disabled +Enabled + + + +0 2 +0.01 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Disabled +Enabled + +True + + + +GPS 3D Vel and 2D Pos +GPS 2D vel and 2D pos +GPS 2D pos +No GPS + + + +0.05 5.0 +0.05 +m/s +meters per second + + +0.05 5.0 +0.05 +m/s +meters per second + + +100 1000 +25 + + +0.1 10.0 +0.1 +m +meters + + +100 1000 +25 + + +10 100 +5 +m +meters + + + +Use Baro +Use Range Finder +Use GPS +Use Range Beacon + +True + + +0.1 10.0 +0.1 +m +meters + + +100 1000 +25 + + +0 250 +10 +ms +milliseconds +True + + +0.01 0.5 +0.01 +Gauss +gauss + + + +When flying +When manoeuvring +Never +After first climb yaw reset +Always + + + +100 1000 +25 + + +0.5 5.0 +0.1 +m/s +meters per second + + +100 1000 +25 + + +0.1 10.0 +0.1 +m +meters + + +100 1000 +25 + + +1.0 4.0 +0.1 +rad/s +radians per second + + +0.05 1.0 +0.05 +rad/s +radians per second + + +100 1000 +25 + + +0 127 +10 +ms +milliseconds +True + + +0.0001 0.1 +0.0001 +rad/s +radians per second + + +0.01 1.0 +0.01 +m/s/s +meters per square second + + +0.00001 0.001 +rad/s/s +radians per square second + + +0.000001 0.001 +Hz +hertz + + +0.00001 0.005 +m/s/s/s +meters per cubic second + + +0.01 1.0 +0.1 +m/s/s +meters per square second + + +0.0 1.0 +0.1 + + +0:NSats,1:HDoP,2:speed error,3:position error,4:yaw error,5:pos drift,6:vert speed,7:horiz speed + + +0:FirstIMU,1:SecondIMU,2:ThirdIMU,3:FourthIMU,4:FifthIMU,5:SixthIMU +True + + +50 200 +% +percent + + +0.5 50.0 +m +meters + + +0:FirstIMU,1:SecondIMU,2:ThirdIMU,3:FourthIMU,4:FifthIMU,5:SixthIMU +True + + +0.05 1.0 +0.05 +rad +radians + + +100 1000 +25 + + +10 50 +5 +cs +centiseconds + + +0.00001 0.01 +Gauss/s +gauss per second + + +0.00001 0.01 +Gauss/s +gauss per second + + +-1 70 +1 +% +percent + + +0 0.2 +0.01 + + +0.1 10.0 +0.1 +m +meters + + +100 1000 +25 + + +0 127 +10 +ms +milliseconds +True + + +2.0 6.0 +0.5 +m/s +meters per second + + +0:FirstEKF,1:SecondEKF,2:ThirdEKF,3:FourthEKF,4:FifthEKF,5:SixthEKF +True + + +0:Correct when using Baro height,1:Correct when using range finder height,2:Apply corrections to local position +True + + +0 127 +1 +ms +milliseconds +True + + + +None +Navigation +Terrain + +True + + + + + +Disabled +Enabled + +True + + + +GPS 3D Vel and 2D Pos +GPS 2D vel and 2D pos +GPS 2D pos +No GPS + + + +0.05 5.0 +0.05 +m/s +meters per second + + +0.05 5.0 +0.05 +m/s +meters per second + + +100 1000 +25 + + +0.1 10.0 +0.1 +m +meters + + +100 1000 +25 + + +10 100 +5 +m +meters + + + +Use Baro +Use Range Finder +Use GPS +Use Range Beacon + +True + + +0.1 10.0 +0.1 +m +meters + + +100 1000 +25 + + +0 250 +10 +ms +milliseconds +True + + +0.01 0.5 +0.01 +Gauss +gauss + + + +When flying +When manoeuvring +Never +After first climb yaw reset +Always + +True + + +100 1000 +25 + + +0.5 5.0 +0.1 +m/s +meters per second + + +100 1000 +25 + + +0.1 10.0 +0.1 +m +meters + + +100 1000 +25 + + +1.0 4.0 +0.1 +rad/s +radians per second + + +0.05 1.0 +0.05 +rad/s +radians per second + + +100 1000 +25 + + +0 250 +10 +ms +milliseconds +True + + +0.0001 0.1 +0.0001 +rad/s +radians per second + + +0.01 1.0 +0.01 +m/s/s +meters per square second + + +0.00001 0.001 +rad/s/s +radians per square second + + +0.00001 0.005 +m/s/s/s +meters per cubic second + + +0.01 1.0 +0.1 +m/s/s +meters per square second + + +0.0 1.0 +0.1 + + +0:NSats,1:HDoP,2:speed error,3:position error,4:yaw error,5:pos drift,6:vert speed,7:horiz speed + + +0:FirstIMU,1:SecondIMU,2:ThirdIMU,3:FourthIMU,4:FifthIMU,5:SixthIMU +True + + +50 200 +% +percent + + +0.5 50.0 +m +meters + + +0:FirstIMU,1:SecondIMU,2:ThirdIMU,3:FourthIMU,4:FifthIMU,5:SixthIMU +True + + +0.05 1.0 +0.05 +rad +radians + + +100 1000 +25 + + +10 50 +5 +cs +centiseconds + + +0.00001 0.01 +Gauss/s +gauss per second + + +0.00001 0.01 +Gauss/s +gauss per second + + +-1 70 +1 +% +percent + + +0 0.2 +0.01 + + +0.1 10.0 +0.1 +m +meters + + +100 1000 +25 + + +0 250 +10 +ms +milliseconds +True + + +2.0 6.0 +0.5 +m/s +meters per second + + +0.5 2.5 +0.1 +m/s/s +meters per square second + + +0:FirstEKF,1:SecondEKF,2:ThirdEKF,3:FourthEKF,4:FifthEKF,5:SixthEKF +True + + +0:Correct when using Baro height,1:Correct when using range finder height,2:Apply corrections to local position +True + + +0.05 0.5 +0.05 +m/s +meters per second + + +0.5 5.0 +0.1 +m/s +meters per second + + +0.01 1.0 +0.1 +m/s +meters per second + + + +None +Navigation +Terrain + +True + + + + + +None +PX4Flow +Pixart +Bebop +CXOF +MAVLink + +True + + +-200 +200 +1 + + +-200 +200 +1 + + +-18000 +18000 +1 + + +-10 10 +m +meters + + +-10 10 +m +meters + + +-10 10 +m +meters + + +0 127 + + + +Disabled +Enabled + + + + + +True +True +1 +Pa +pascal + + +True +1 +degC +degrees Celsius + + +0.1 +m +meters + + + +FirstBaro +2ndBaro +3rdBaro + + + + +Disabled +Bus0 +Bus1 + + + +1.0:Freshwater,1.024:Saltwater + + +True +True +1 +Pa +pascal + + +True +True +1 +Pa +pascal + + +0 100 +1 +% +percent + + +0:BMP085,1:BMP280,2:MS5611,3:MS5607,4:MS5637,5:FBM320,6:DPS280,7:LPS25H,8:Keller + +BMP085 +BMP280 +MS5611 +MS5607 +MS5637 +FBM320 +DPS280 +LPS25H +Keller + + + + + + +None +AUTO +uBlox +MTK +MTK19 +NMEA +SiRF +HIL +SwiftNav +UAVCAN +SBF +GSOF +ERB +MAV +NOVA + +True + + + +None +AUTO +uBlox +MTK +MTK19 +NMEA +SiRF +HIL +SwiftNav +UAVCAN +SBF +GSOF +ERB +MAV +NOVA + +True + + + +Portable +Stationary +Pedestrian +Automotive +Sea +Airborne1G +Airborne2G +Airborne4G + + + + +Disabled +UseBest +Blend +UseSecond + + + + +Any +FloatRTK +IntegerRTK + +True + + + +Disabled +Enabled +NoChange + + + +-100 90 +deg +degrees + + + +send to first GPS +send to 2nd GPS +send to all + + + + +None (0x0000) +All (0xFFFF) +External only (0xFF00) + + + + +Ignore +Always log +Stop logging when disarmed (SBF only) +Only log every five samples (uBlox only) + +True + + +0:GPS,1:SBAS,2:Galileo,3:Beidou,4:IMES,5:QZSS,6:GLOSNASS + +Leave as currently configured +GPS-NoSBAS +GPS+SBAS +Galileo-NoSBAS +Galileo+SBAS +Beidou +GPS+IMES+QZSS+SBAS (Japan Only) +GLONASS +GLONASS+SBAS +GPS+GLONASS+SBAS + + + + +Do not save config +Save config +Save only when needed + + + +0:GPS,1:SBAS,2:Galileo,3:Beidou,4:IMES,5:QZSS,6:GLOSNASS + +Leave as currently configured +GPS-NoSBAS +GPS+SBAS +Galileo-NoSBAS +Galileo+SBAS +Beidou +GPS+IMES+QZSS+SBAS (Japan Only) +GLONASS +GLONASS+SBAS +GPS+GLONASS+SBAS + + + + +Disables automatic configuration +Enable automatic configuration + + + +50 200 + +10Hz +8Hz +5Hz + +ms +milliseconds + + +50 200 + +10Hz +8Hz +5Hz + +ms +milliseconds + + +-10 10 +m +meters + + +-10 10 +m +meters + + +-10 10 +m +meters + + +-10 10 +m +meters + + +-10 10 +m +meters + + +-10 10 +m +meters + + +0 250 +ms +milliseconds +True + + +0 250 +ms +milliseconds +True + + +0:Horiz Pos,1:Vert Pos,2:Speed + + +5.0 30.0 +s +seconds + + + + + +Disabled +Enabled + + + + +None +Servo +EPM + + + +1000 2000 +PWM +PWM in microseconds + + +1000 2000 +PWM +PWM in microseconds + + +1000 2000 +PWM +PWM in microseconds + + +0 255 +s +seconds + + +0 255 + + + + + +Disabled +Enabled + + + + +None +Chan1 +Chan2 +Chan3 +Chan4 +Chan5 +Chan6 +Chan7 +Chan8 +Chan9 +Chan10 +Chan11 +Chan12 +Chan13 +Chan14 +Chan15 +Chan16 + + + +0.1 5 +s +seconds + + +1 10 +s +seconds + + +100 100000 + + +1000 2000 + + +1000 2000 + + +1000 2000 + + +1000 2000 + + + +None +RPM1 +RPM2 + + + +0 100 + + +0 100 + + + + +rad/s +radians per second + + +rad/s +radians per second + + +rad/s +radians per second + + +rad/s +radians per second + + +rad/s +radians per second + + +rad/s +radians per second + + +rad/s +radians per second + + +rad/s +radians per second + + +rad/s +radians per second + + +0.8 1.2 + + +0.8 1.2 + + +0.8 1.2 + + +-3.5 3.5 +m/s/s +meters per square second + + +-3.5 3.5 +m/s/s +meters per square second + + +-3.5 3.5 +m/s/s +meters per square second + + +0.8 1.2 + + +0.8 1.2 + + +0.8 1.2 + + +-3.5 3.5 +m/s/s +meters per square second + + +-3.5 3.5 +m/s/s +meters per square second + + +-3.5 3.5 +m/s/s +meters per square second + + +0.8 1.2 + + +0.8 1.2 + + +0.8 1.2 + + +-3.5 3.5 +m/s/s +meters per square second + + +-3.5 3.5 +m/s/s +meters per square second + + +-3.5 3.5 +m/s/s +meters per square second + + +0 127 +Hz +hertz + + +0 127 +Hz +hertz + + + +Disabled +Enabled + + + + +Disabled +Enabled + + + + +Disabled +Enabled + + + +0.05 50 + + + +Never +Start-up only + + + + +Don't adjust the trims +Assume first orientation was level +Assume ACC_BODYFIX is perfectly aligned to the vehicle + + + + +IMU 1 +IMU 2 +IMU 3 + + + +-10 10 +m +meters + + +-10 10 +m +meters + + +-10 10 +m +meters + + +-10 10 +m +meters + + +-10 10 +m +meters + + +-10 10 +m +meters + + +-10 10 +m +meters + + +-10 10 +m +meters + + +-10 10 +m +meters + + +True + + +True + + +True + + +True + + +True + + +True + + +0:FirstIMU,1:SecondIMU,2:ThirdIMU + +FirstIMUOnly +FirstAndSecondIMU + + + +0:FirstIMU,1:SecondIMU,2:ThirdIMU + +FirstIMUOnly +FirstAndSecondIMU +FirstSecondAndThirdIMU +AllIMUs + + + + + +32 + + +0:IMU1,1:IMU2,2:IMU3 + +None +First IMU +All + + + +0:Sensor-Rate Logging (sample at full sensor rate seen by AP) + + +10 +ms +milliseconds + + +1 + + + + + +Disabled +Enabled + + + +10 200 +Hz +hertz + + +5 50 +Hz +hertz + + +5 30 +dB +decibel + + + + +0 5 +0.5 +m +meters + + +0 90 +0.1 +deg +degrees + + +cdeg +centidegrees + + +0.1 +m +meters + + +0.1 +s +seconds + + +0 30 +0.1 +m +meters + + +0 10 +0.1 +s +seconds + + +0 30 +0.1 +m/s +meters per second + + +0 127 +1 +% +percent + + +0 127 +1 +s +seconds + + + +Disabled +Servos to Neutral +Servos to Zero PWM + + + + +Disabled +Enabled + + + +0 100 +% +percent + + + +Standard Glide Slope +Deepstall + + + + + +0 20 +m/s +meters per second + + + + + + +10 200 +m +meters + + +0 20 +m/s +meters per second + + +0 2 +s +seconds + + +900 2100 +PWM +PWM in microseconds + + +5 20 +m/s +meters per second + + +5 20 +m/s +meters per second + + +5 50 +m +meters + + +0 1 + + +0 2.0 + + + + + + + + + + + + + + + +WaitForPilotInput +Retract +Deploy + + + + +Disabled +AUX1 +AUX2 +AUX3 +AUX4 +AUX5 +AUX6 + +True + + + +Low +High + + + + +Disabled +AUX1 +AUX2 +AUX3 +AUX4 +AUX5 +AUX6 + +True + + + +Low +High + + + +0 1000 +1 +m +meters + + +0 1000 +1 +m +meters + + + + +0:File,1:MAVLink,2:Block + +None +File +MAVLink +File and MAVLink +Block +Block and MAVLink + + + + + + +Disabled +Enabled + + + + +Disabled +Enabled + + + + +Disabled +Enabled + + + +kB +kilobytes + + + + +0 32766 +1 + + + +Resume Mission +Restart Mission + + + +0:Clear Mission on reboot + + + + + +Retracted +Neutral +MavLink Targeting +RC Targeting +GPS Point + + + +-180.00 179.99 +1 +deg +degrees + + +-180.00 179.99 +1 +deg +degrees + + +-180.00 179.99 +1 +deg +degrees + + +-180.00 179.99 +1 +deg +degrees + + +-180.00 179.99 +1 +deg +degrees + + +-180.00 179.99 +1 +deg +degrees + + + +Disabled +Enabled + + + + +Disabled +Enabled + + + + +Disabled +Enabled + + + + +Disabled +RC5 +RC6 +RC7 +RC8 +RC9 +RC10 +RC11 +RC12 + + + +-18000 17999 +1 +cdeg +centidegrees + + +-18000 17999 +1 +cdeg +centidegrees + + + +Disabled +RC5 +RC6 +RC7 +RC8 +RC9 +RC10 +RC11 +RC12 + + + +-18000 17999 +1 +cdeg +centidegrees + + +-18000 17999 +1 +cdeg +centidegrees + + + +Disabled +RC5 +RC6 +RC7 +RC8 +RC9 +RC10 +RC11 +RC12 + + + +-18000 17999 +1 +cdeg +centidegrees + + +-18000 17999 +1 +cdeg +centidegrees + + +0 100 +1 + + +0.0 0.2 +.005 +s +seconds + + +0.0 0.2 +.005 +s +seconds + + + +None +Servo +3DR Solo +Alexmos Serial +SToRM32 MAVLink +SToRM32 Serial + +True + + + +Retracted +Neutral +MavLink Targeting +RC Targeting +GPS Point + + + +-180.00 179.99 +1 +deg +degrees + + +-180.00 179.99 +1 +deg +degrees + + +-180.00 179.99 +1 +deg +degrees + + +-180.00 179.99 +1 +deg +degrees + + +-180.00 179.99 +1 +deg +degrees + + +-180.00 179.99 +1 +deg +degrees + + + +Disabled +Enabled + + + + +Disabled +Enabled + + + + +Disabled +Enabled + + + + +Disabled +RC5 +RC6 +RC7 +RC8 +RC9 +RC10 +RC11 +RC12 + + + +-18000 17999 +1 +cdeg +centidegrees + + +-18000 17999 +1 +cdeg +centidegrees + + + +Disabled +RC5 +RC6 +RC7 +RC8 +RC9 +RC10 +RC11 +RC12 + + + +-18000 17999 +1 +cdeg +centidegrees + + +-18000 17999 +1 +cdeg +centidegrees + + + +Disabled +RC5 +RC6 +RC7 +RC8 +RC9 +RC10 +RC11 +RC12 + + + +-18000 17999 +1 +cdeg +centidegrees + + +-18000 17999 +1 +cdeg +centidegrees + + +0.0 0.2 +.005 +s +seconds + + +0.0 0.2 +.005 +s +seconds + + + +None +Servo +3DR Solo +Alexmos Serial +SToRM32 MAVLink +SToRM32 Serial + + + + + +1 60 +1 +s +seconds + + +0.6 1.0 +0.05 + + +0 0.1 +0.01 + + +0 89 +deg +degrees + + + + + +Off +Low +Medium +High + + + + +Disable +Enable + + + + +Standard +MAVLink +OutbackChallenge + + + + +Disable +ssd1306 +sh1106 + + + + +Disabled +Aircraft +Rover + + + + +Disabled + + + +0:Build in LED, 1:Internal ToshibaLED, 2:External ToshibaLED, 3:External PCA9685, 4:Oreo LED, 5:UAVCAN, 6:NCP5623 External, 7:NCP5623 Internal + + + +LowIsOn +HighIsOn + + + + + + +None +MAX7456 + +True + + + +Disable +Chan5 +Chan6 +Chan7 +Chan8 +Chan9 +Chan10 +Chan11 +Chan12 +Chan13 +Chan14 +Chan15 +Chan16 + + + +0:UseDecimalPack, 1:InvertedWindPointer, 2:InvertedAHRoll + + +True + + +0 31 +True + + +0 63 +True + + +0 99 + + +1 30 + + +0 100 + + + +Metric +Imperial +SI +Aviation + + + +1 20 + + +0 4 + + +0 4 + + +0 4 + + + + + +Disabled +Enabled + + + +900 2100 + + +900 2100 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +900 2100 + + +900 2100 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +900 2100 + + +900 2100 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +900 2100 + + +900 2100 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + +0.4 1.0 +0.1 +s +seconds + + +0.1 3.0 +0.1 + + +0 0.2 +0.01 + + +0 0.5 +0.05 + + +0 100 +1 +deg/s +degrees per second + + +0 100 +1 +deg/s +degrees per second + + +0.7 1.5 +0.05 + + +0 4500 +1 + + +0.1 4.0 +0.1 + + + + + +Disable +Enable +Enable VTOL AUTO + + + +1000 8000 +cdeg +centidegrees + + +0 30000 +ms +milliseconds + + +50 500 +10 +cm/s +centimeters per second + + +50 500 +10 +cm/s/s +centimeters per square second + + +50 500 +10 +Hz +hertz + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + +0 100 +0.1 +m/s +meters per second + + +50 500 +1 +deg/s +degrees per second + + +30 200 +10 +cm/s +centimeters per second + + +0.5 50 +0.1 +m +meters + + +0 30 +1 +deg +degrees + + + +Undefined +Quad +Hexa +Octa +OctaQuad +Y6 +Tri + TailSitter + + + + +Plus +X +V +H +V-Tail +A-Tail +Y6B +Y6F + + + +0 0.5 +0.01 + + +0 1 +0.01 + + +0 10 +0.1 + + +1 200 +1 +m +meters + + + +Disabled +Enabled + + + + + +10 300 +1 +deg/s +degrees per second + + +20 80 +1 +deg +degrees + + + +Disabled +Enabled + + + + +Disabled +ThrottleInput +FullInput + + + +0 10 +0.25 +m +meters + + + +Disabled +Enabled + + + +0 90 +1 +deg +degrees + + + +Continuous +Binary +VectoredYaw + + + +5 80 + + +10 300 +1 +deg/s +degrees per second + + + +MultiCopterInput +FixedWingInput +BodyFrameRoll_M +BodyFrameRoll_P + + + +0:Aileron,1:Elevator,2:Throttle,3:Rudder + + + +Disabled +Channel1 +Channel2 +Channel3 +Channel4 +Channel5 +Channel6 +Channel7 +Channel8 + + + +0 1 +0.01 + + +0 1 +0.01 + + +0 30 + + +0 4 +0.1 + + + +AUTO +FIXED_WING +QUADROTOR +COAXIAL +HELICOPTER +AIRSHIP +FREE_BALLOON +ROCKET +GROUND_ROVER +SURFACE_BOAT +SUBMARINE +FLAPPING_WING +KITE +VTOL_DUOROTOR +VTOL_QUADROTOR +VTOL_TILTROTOR + + + +0:LevelTransition,1:AllowFWTakeoff,2:AllowFWLand,3:Respect takeoff frame types,4:Use a fixed wing approach for VTOL landings + + +0.2 5 +0.1 +m/s/s +meters per square second + + +1 5 + + +-10 +10 +0.1 +deg +degrees +True + + +0 80 +deg +degrees + + +0 200 +5 +m +meters + + +0 20 +1 +s +seconds + + +0:Motor 1,1:Motor 2,2:Motor 3,3:Motor 4, 4:Motor 5,5:Motor 6,6:Motor 7,7:Motor 8 + + +0 1 +.1 + + +10 500 +1 +deg/s +degrees per second + + +10 500 +1 +deg/s +degrees per second + + +10 500 +1 +deg/s +degrees per second + + + + +500 18000 +100 +cdeg/s +centidegrees per second + + +0 72000 + +Disabled +VerySlow +Slow +Medium +Fast + +1000 +cdeg/s/s +centidegrees per square second + + + +Disabled +Enabled + + + +0 180000 + +Disabled +VerySlow +Slow +Medium +Fast + +1000 +cdeg/s/s +centidegrees per square second + + +0 180000 + +Disabled +VerySlow +Slow +Medium +Fast + +1000 +cdeg/s/s +centidegrees per square second + + + +Disabled +Enabled + + + +0.0 12.000 + + +0.0 12.000 + + +0.0 6.000 + + +0.5 10.0 + + +0 1080 + +Disabled +Slow +Medium +Fast + +1 +deg/s +degrees per second + + +0 1080 + +Disabled +Slow +Medium +Fast + +1 +deg/s +degrees per second + + +0 1080 + +Disabled +Slow +Medium +Fast + +1 +deg/s +degrees per second + + +0 1 +0.5:Very Soft, 0.2:Soft, 0.15:Medium, 0.1:Crisp, 0.05:Very Crisp +0.01 +s +seconds + + +0.05 0.5 +0.005 + + +0.01 2.0 +0.01 + + +0 1 +0.01 +% +percent + + +0.0 0.02 +0.001 + + +0 0.5 +0.001 + + +1 100 +1 +Hz +hertz + + +0.05 0.50 +0.005 + + +0.01 2.0 +0.01 + + +0 1 +0.01 +% +percent + + +0.0 0.02 +0.001 + + +0 0.5 +0.001 + + +1 100 +1 +Hz +hertz + + +0.10 2.50 +0.005 + + +0.010 1.0 +0.01 + + +0 1 +0.01 +% +percent + + +0.000 0.02 +0.001 + + +0 0.5 +0.001 + + +1 10 +1 +Hz +hertz + + +0.1 0.25 + + +0.5 0.9 + + +0.1 0.9 + + + + +0 45 +1 +deg +degrees + + +20 2000 +50 +cm/s +centimeters per second + + +100 981 +1 +cm/s/s +centimeters per square second + + +25 250 +1 +cm/s/s +centimeters per square second + + +500 5000 +1 +cm/s/s/s +centimeters per cubic second + + +0 2 +0.1 +s +seconds + + + + +0 500 +PWM +PWM in microseconds + + +0.25 0.8 + + +0.9:Low, 0.95:Default, 1.0:High + + +6 35 +V +volt + + +6 35 +V +volt + + +0 200 +A +ampere + + + +Normal +OneShot +OneShot125 +Brushed +DShot150 +DShot300 +DShot600 +DShot1200 + +True + + +0 2000 +PWM +PWM in microseconds + + +0 2000 +PWM +PWM in microseconds + + +0.0:Low, 0.15:Default, 0.3:High + + +0.0:Low, 0.1:Default, 0.2:High + + +0 10 +s +seconds + + +0.2 0.8 + + + +Disabled + + + + +PWM enabled while disarmed +PWM disabled while disarmed + + + +5 80 +1 +deg +degrees + + +0 2 +0.1 +s +seconds + + +0 5 +0.1 + + + +First battery +Second battery + + + +0 .5 +0.001 +s +seconds + + +0 .5 +0.001 +s +seconds + + + + +0.5 5 +0.1 +Hz +hertz + + +1.000 3.000 + + +1.000 8.000 + + +0.500 1.500 +0.05 + + +0.000 3.000 + + +0 1000 +d% +decipercent + + +0.000 0.400 + + +1.000 100.000 +Hz +hertz + + +0.500 2.000 + + +0.1 6.0 +0.1 + + +0.02 1.00 +0.01 + + +0.00 1.00 +0.001 + + +0 4500 +10 +cm/s/s +centimeters per square second + + +0 100 +Hz +hertz + + +0 100 +Hz +hertz + + +0 45 +1 +deg +degrees + + + + +20 2000 +50 +cm/s +centimeters per second + + +5 1000 +1 +cm +centimeters + + +10 1000 +50 +cm/s +centimeters per second + + +10 500 +10 +cm/s +centimeters per second + + +50 500 +10 +cm/s/s +centimeters per square second + + +50 500 +10 +cm/s/s +centimeters per square second + + + +Disable +Enable + + + + + + + +0.1 +km +kilometers + + + +DoNotIncludeHome +IncludeHome + + + + + +0.0 120.0 +s +seconds + + +0:Ignore RC Receiver, 1:Ignore MAVLink Overrides, 2:Ignore Receiver Failsafe + + + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + + +Normal +Reversed + + + +0 200 +PWM +PWM in microseconds + + + +Do Nothing +Camera Trigger +Relay On/Off +Landing Gear +Relay2 On/Off +Lost Plane Sound +Motor Emergency Stop +Relay3 On/Off +Relay4 On/Off +ArmDisarm +InvertedFlight +RC Override Enable +Clear Waypoints +Compass Learn +Reverse Throttle +GPS Disable +Relay5 +Relay6 + + + + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + + +Normal +Reversed + + + +0 200 +PWM +PWM in microseconds + + + +Do Nothing +Camera Trigger +Relay On/Off +Landing Gear +Relay2 On/Off +Lost Plane Sound +Motor Emergency Stop +Relay3 On/Off +Relay4 On/Off +ArmDisarm +InvertedFlight +RC Override Enable +Clear Waypoints +Compass Learn +Reverse Throttle +GPS Disable +Relay5 +Relay6 + + + + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + + +Normal +Reversed + + + +0 200 +PWM +PWM in microseconds + + + +Do Nothing +Camera Trigger +Relay On/Off +Landing Gear +Relay2 On/Off +Lost Plane Sound +Motor Emergency Stop +Relay3 On/Off +Relay4 On/Off +ArmDisarm +InvertedFlight +RC Override Enable +Clear Waypoints +Compass Learn +Reverse Throttle +GPS Disable +Relay5 +Relay6 + + + + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + + +Normal +Reversed + + + +0 200 +PWM +PWM in microseconds + + + +Do Nothing +Camera Trigger +Relay On/Off +Landing Gear +Relay2 On/Off +Lost Plane Sound +Motor Emergency Stop +Relay3 On/Off +Relay4 On/Off +ArmDisarm +InvertedFlight +RC Override Enable +Clear Waypoints +Compass Learn +Reverse Throttle +GPS Disable +Relay5 +Relay6 + + + + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + + +Normal +Reversed + + + +0 200 +PWM +PWM in microseconds + + + +Do Nothing +Camera Trigger +Relay On/Off +Landing Gear +Relay2 On/Off +Lost Plane Sound +Motor Emergency Stop +Relay3 On/Off +Relay4 On/Off +ArmDisarm +InvertedFlight +RC Override Enable +Clear Waypoints +Compass Learn +Reverse Throttle +GPS Disable +Relay5 +Relay6 + + + + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + + +Normal +Reversed + + + +0 200 +PWM +PWM in microseconds + + + +Do Nothing +Camera Trigger +Relay On/Off +Landing Gear +Relay2 On/Off +Lost Plane Sound +Motor Emergency Stop +Relay3 On/Off +Relay4 On/Off +ArmDisarm +InvertedFlight +RC Override Enable +Clear Waypoints +Compass Learn +Reverse Throttle +GPS Disable +Relay5 +Relay6 + + + + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + + +Normal +Reversed + + + +0 200 +PWM +PWM in microseconds + + + +Do Nothing +Camera Trigger +Relay On/Off +Landing Gear +Relay2 On/Off +Lost Plane Sound +Motor Emergency Stop +Relay3 On/Off +Relay4 On/Off +ArmDisarm +InvertedFlight +RC Override Enable +Clear Waypoints +Compass Learn +Reverse Throttle +GPS Disable +Relay5 +Relay6 + + + + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + + +Normal +Reversed + + + +0 200 +PWM +PWM in microseconds + + + +Do Nothing +Camera Trigger +Relay On/Off +Landing Gear +Relay2 On/Off +Lost Plane Sound +Motor Emergency Stop +Relay3 On/Off +Relay4 On/Off +ArmDisarm +InvertedFlight +RC Override Enable +Clear Waypoints +Compass Learn +Reverse Throttle +GPS Disable +Relay5 +Relay6 + + + + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + + +Normal +Reversed + + + +0 200 +PWM +PWM in microseconds + + + +Do Nothing +Camera Trigger +Relay On/Off +Landing Gear +Relay2 On/Off +Lost Plane Sound +Motor Emergency Stop +Relay3 On/Off +Relay4 On/Off +ArmDisarm +InvertedFlight +RC Override Enable +Clear Waypoints +Compass Learn +Reverse Throttle +GPS Disable +Relay5 +Relay6 + + + + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + + +Normal +Reversed + + + +0 200 +PWM +PWM in microseconds + + + +Do Nothing +Camera Trigger +Relay On/Off +Landing Gear +Relay2 On/Off +Lost Plane Sound +Motor Emergency Stop +Relay3 On/Off +Relay4 On/Off +ArmDisarm +InvertedFlight +RC Override Enable +Clear Waypoints +Compass Learn +Reverse Throttle +GPS Disable +Relay5 +Relay6 + + + + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + + +Normal +Reversed + + + +0 200 +PWM +PWM in microseconds + + + +Do Nothing +Camera Trigger +Relay On/Off +Landing Gear +Relay2 On/Off +Lost Plane Sound +Motor Emergency Stop +Relay3 On/Off +Relay4 On/Off +ArmDisarm +InvertedFlight +RC Override Enable +Clear Waypoints +Compass Learn +Reverse Throttle +GPS Disable +Relay5 +Relay6 + + + + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + + +Normal +Reversed + + + +0 200 +PWM +PWM in microseconds + + + +Do Nothing +Camera Trigger +Relay On/Off +Landing Gear +Relay2 On/Off +Lost Plane Sound +Motor Emergency Stop +Relay3 On/Off +Relay4 On/Off +ArmDisarm +InvertedFlight +RC Override Enable +Clear Waypoints +Compass Learn +Reverse Throttle +GPS Disable +Relay5 +Relay6 + + + + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + + +Normal +Reversed + + + +0 200 +PWM +PWM in microseconds + + + +Do Nothing +Camera Trigger +Relay On/Off +Landing Gear +Relay2 On/Off +Lost Plane Sound +Motor Emergency Stop +Relay3 On/Off +Relay4 On/Off +ArmDisarm +InvertedFlight +RC Override Enable +Clear Waypoints +Compass Learn +Reverse Throttle +GPS Disable +Relay5 +Relay6 + + + + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + + +Normal +Reversed + + + +0 200 +PWM +PWM in microseconds + + + +Do Nothing +Camera Trigger +Relay On/Off +Landing Gear +Relay2 On/Off +Lost Plane Sound +Motor Emergency Stop +Relay3 On/Off +Relay4 On/Off +ArmDisarm +InvertedFlight +RC Override Enable +Clear Waypoints +Compass Learn +Reverse Throttle +GPS Disable +Relay5 +Relay6 + + + + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + + +Normal +Reversed + + + +0 200 +PWM +PWM in microseconds + + + +Do Nothing +Camera Trigger +Relay On/Off +Landing Gear +Relay2 On/Off +Lost Plane Sound +Motor Emergency Stop +Relay3 On/Off +Relay4 On/Off +ArmDisarm +InvertedFlight +RC Override Enable +Clear Waypoints +Compass Learn +Reverse Throttle +GPS Disable +Relay5 +Relay6 + + + + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + + +Normal +Reversed + + + +0 200 +PWM +PWM in microseconds + + + +Do Nothing +Camera Trigger +Relay On/Off +Landing Gear +Relay2 On/Off +Lost Plane Sound +Motor Emergency Stop +Relay3 On/Off +Relay4 On/Off +ArmDisarm +InvertedFlight +RC Override Enable +Clear Waypoints +Compass Learn +Reverse Throttle +GPS Disable +Relay5 +Relay6 + + + + + +1 8 +1 +True + + +1 8 +1 +True + + +1 8 +1 +True + + +1 8 +1 +True + + + + + +Disabled +BB Blue GP0 pin 4 +AUXOUT1 +AUXOUT2 +AUXOUT3 +AUXOUT4 +AUXOUT5 +AUXOUT6 +BB Blue GP0 pin 3 +BB Blue GP0 pin 6 +BB Blue GP0 pin 5 + + + + +Disabled +BB Blue GP0 pin 4 +AUXOUT1 +AUXOUT2 +AUXOUT3 +AUXOUT4 +AUXOUT5 +AUXOUT6 +BB Blue GP0 pin 3 +BB Blue GP0 pin 6 +BB Blue GP0 pin 5 + + + + +Disabled +BB Blue GP0 pin 4 +AUXOUT1 +AUXOUT2 +AUXOUT3 +AUXOUT4 +AUXOUT5 +AUXOUT6 +BB Blue GP0 pin 3 +BB Blue GP0 pin 6 +BB Blue GP0 pin 5 + + + + +Disabled +BB Blue GP0 pin 4 +AUXOUT1 +AUXOUT2 +AUXOUT3 +AUXOUT4 +AUXOUT5 +AUXOUT6 +BB Blue GP0 pin 3 +BB Blue GP0 pin 6 +BB Blue GP0 pin 5 + + + + +Off +On +NoChange + + + + +Disabled +BB Blue GP0 pin 4 +AUXOUT1 +AUXOUT2 +AUXOUT3 +AUXOUT4 +AUXOUT5 +AUXOUT6 +BB Blue GP0 pin 3 +BB Blue GP0 pin 6 +BB Blue GP0 pin 5 + + + + +Disabled +BB Blue GP0 pin 4 +AUXOUT1 +AUXOUT2 +AUXOUT3 +AUXOUT4 +AUXOUT5 +AUXOUT6 +BB Blue GP0 pin 3 +BB Blue GP0 pin 6 +BB Blue GP0 pin 5 + + + + + +0.4 1.0 +0.1 +s +seconds + + +0.1 4.0 +0.1 + + +0 0.2 +0.01 + + +0 1.0 +0.05 + + +0 180 +1 +deg/s +degrees per second + + +0 4500 +1 + + +0.1 4.0 +0.1 + + + + + +None +Analog +MaxbotixI2C +LidarLiteV2-I2C +PX4-PWM +BBB-PRU +LightWareI2C +LightWareSerial +Bebop +MAVLink +uLanding +LeddarOne +MaxbotixSerial +TeraRangerI2C +LidarLiteV3-I2C +VL53L0X +NMEA +WASP-LRF +BenewakeTF02 +BenewakeTFmini +LidarLightV3HP +PWM +BlueRoboticsPing + + + + +Not Used +PX4-airspeed port +Pixhawk-airspeed port + + + +0.001 +m/V +meters per volt + + +0.001 +V +volt + + + +Linear +Inverted +Hyperbolic + + + +1 +cm +centimeters + + +1 +cm +centimeters + + + +Not Used +Pixhawk AUXOUT1 +Pixhawk AUXOUT2 +Pixhawk AUXOUT3 +Pixhawk AUXOUT4 +Pixhawk AUXOUT5 +Pixhawk AUXOUT6 +PX4 FMU Relay1 +PX4 FMU Relay2 +PX4IO Relay1 +PX4IO Relay2 +PX4IO ACC1 +PX4IO ACC2 + + + +1 +ms +milliseconds + + + +No +Yes + + + +0 32767 +m +meters + + +5 127 +1 +cm +centimeters + + +0 127 +1 + + +m +meters + + +m +meters + + +m +meters + + + +Forward +Forward-Right +Right +Back-Right +Back +Back-Left +Left +Forward-Left +Up +Down + + + + + +0 255 + + +0 255 + + +0 10000 + + +0 255 + + +-1 255 + + + +Low Speed +High Speed + + + + + + +None +Analog +MaxbotixI2C +LidarLiteV2-I2C +PX4-PWM +BBB-PRU +LightWareI2C +LightWareSerial +Bebop +MAVLink +uLanding +LeddarOne +MaxbotixSerial +TeraRangerI2C +LidarLiteV3-I2C +VL53L0X +NMEA +WASP-LRF +BenewakeTF02 +BenewakeTFmini +LidarLightV3HP +PWM +BlueRoboticsPing + + + + +Not Used +PX4-airspeed port +Pixhawk-airspeed port + + + +0.001 +m/V +meters per volt + + +0.001 +V +volt + + + +Linear +Inverted +Hyperbolic + + + +1 +cm +centimeters + + +1 +cm +centimeters + + + +Not Used +Pixhawk AUXOUT1 +Pixhawk AUXOUT2 +Pixhawk AUXOUT3 +Pixhawk AUXOUT4 +Pixhawk AUXOUT5 +Pixhawk AUXOUT6 +PX4 FMU Relay1 +PX4 FMU Relay2 +PX4IO Relay1 +PX4IO Relay2 +PX4IO ACC1 +PX4IO ACC2 + + + +1 +ms +milliseconds + + + +No +Yes + + + +0 32767 +m +meters + + +5 127 +1 +cm +centimeters + + +0 127 +1 + + +m +meters + + +m +meters + + +m +meters + + + +Forward +Forward-Right +Right +Back-Right +Back +Back-Left +Left +Forward-Left +Up +Down + + + + + +0 255 + + +0 255 + + +0 10000 + + +0 255 + + +-1 255 + + + +Low Speed +High Speed + + + + + + +None +Analog +MaxbotixI2C +LidarLiteV2-I2C +PX4-PWM +BBB-PRU +LightWareI2C +LightWareSerial +Bebop +MAVLink +uLanding +LeddarOne +MaxbotixSerial +TeraRangerI2C +LidarLiteV3-I2C +VL53L0X +NMEA +WASP-LRF +BenewakeTF02 +BenewakeTFmini +LidarLightV3HP +PWM +BlueRoboticsPing + + + + +Not Used +PX4-airspeed port +Pixhawk-airspeed port + + + +0.001 +m/V +meters per volt + + +0.001 +V +volt + + + +Linear +Inverted +Hyperbolic + + + +1 +cm +centimeters + + +1 +cm +centimeters + + + +Not Used +Pixhawk AUXOUT1 +Pixhawk AUXOUT2 +Pixhawk AUXOUT3 +Pixhawk AUXOUT4 +Pixhawk AUXOUT5 +Pixhawk AUXOUT6 +PX4 FMU Relay1 +PX4 FMU Relay2 +PX4IO Relay1 +PX4IO Relay2 +PX4IO ACC1 +PX4IO ACC2 + + + +1 +ms +milliseconds + + + +No +Yes + + + +0 32767 +m +meters + + +5 127 +1 +cm +centimeters + + +0 127 +1 + + +m +meters + + +m +meters + + +m +meters + + + +Forward +Forward-Right +Right +Back-Right +Back +Back-Left +Left +Forward-Left +Up +Down + + + + + +0 255 + + +0 255 + + +0 10000 + + +0 255 + + +-1 255 + + + +Low Speed +High Speed + + + + + + +None +Analog +MaxbotixI2C +LidarLiteV2-I2C +PX4-PWM +BBB-PRU +LightWareI2C +LightWareSerial +Bebop +MAVLink +uLanding +LeddarOne +MaxbotixSerial +TeraRangerI2C +LidarLiteV3-I2C +VL53L0X +NMEA +WASP-LRF +BenewakeTF02 +BenewakeTFmini +LidarLightV3HP +PWM +BlueRoboticsPing + + + + +Not Used +PX4-airspeed port +Pixhawk-airspeed port + + + +0.001 +m/V +meters per volt + + +0.001 +V +volt + + + +Linear +Inverted +Hyperbolic + + + +1 +cm +centimeters + + +1 +cm +centimeters + + + +Not Used +Pixhawk AUXOUT1 +Pixhawk AUXOUT2 +Pixhawk AUXOUT3 +Pixhawk AUXOUT4 +Pixhawk AUXOUT5 +Pixhawk AUXOUT6 +PX4 FMU Relay1 +PX4 FMU Relay2 +PX4IO Relay1 +PX4IO Relay2 +PX4IO ACC1 +PX4IO ACC2 + + + +1 +ms +milliseconds + + + +No +Yes + + + +0 32767 +m +meters + + +5 127 +1 +cm +centimeters + + +0 127 +1 + + +m +meters + + +m +meters + + +m +meters + + + +Forward +Forward-Right +Right +Back-Right +Back +Back-Left +Left +Forward-Left +Up +Down + + + + + +0 255 + + +0 255 + + +0 10000 + + +0 255 + + +-1 255 + + + +Low Speed +High Speed + + + + + + +None +Analog +MaxbotixI2C +LidarLiteV2-I2C +PX4-PWM +BBB-PRU +LightWareI2C +LightWareSerial +Bebop +MAVLink +uLanding +LeddarOne +MaxbotixSerial +TeraRangerI2C +LidarLiteV3-I2C +VL53L0X +NMEA +WASP-LRF +BenewakeTF02 +BenewakeTFmini +LidarLightV3HP +PWM +BlueRoboticsPing + + + + +Not Used +PX4-airspeed port +Pixhawk-airspeed port + + + +0.001 +m/V +meters per volt + + +0.001 +V +volt + + + +Linear +Inverted +Hyperbolic + + + +1 +cm +centimeters + + +1 +cm +centimeters + + + +Not Used +Pixhawk AUXOUT1 +Pixhawk AUXOUT2 +Pixhawk AUXOUT3 +Pixhawk AUXOUT4 +Pixhawk AUXOUT5 +Pixhawk AUXOUT6 +PX4 FMU Relay1 +PX4 FMU Relay2 +PX4IO Relay1 +PX4IO Relay2 +PX4IO ACC1 +PX4IO ACC2 + + + +1 +ms +milliseconds + + + +No +Yes + + + +0 32767 +m +meters + + +5 127 +1 +cm +centimeters + + +0 127 +1 + + +m +meters + + +m +meters + + +m +meters + + + +Forward +Forward-Right +Right +Back-Right +Back +Back-Left +Left +Forward-Left +Up +Down + + + + + +0 255 + + +0 255 + + +0 10000 + + +0 255 + + +-1 255 + + + +Low Speed +High Speed + + + + + + +None +Analog +MaxbotixI2C +LidarLiteV2-I2C +PX4-PWM +BBB-PRU +LightWareI2C +LightWareSerial +Bebop +MAVLink +uLanding +LeddarOne +MaxbotixSerial +TeraRangerI2C +LidarLiteV3-I2C +VL53L0X +NMEA +WASP-LRF +BenewakeTF02 +BenewakeTFmini +LidarLightV3HP +PWM +BlueRoboticsPing + + + + +Not Used +PX4-airspeed port +Pixhawk-airspeed port + + + +0.001 +m/V +meters per volt + + +0.001 +V +volt + + + +Linear +Inverted +Hyperbolic + + + +1 +cm +centimeters + + +1 +cm +centimeters + + + +Not Used +Pixhawk AUXOUT1 +Pixhawk AUXOUT2 +Pixhawk AUXOUT3 +Pixhawk AUXOUT4 +Pixhawk AUXOUT5 +Pixhawk AUXOUT6 +PX4 FMU Relay1 +PX4 FMU Relay2 +PX4IO Relay1 +PX4IO Relay2 +PX4IO ACC1 +PX4IO ACC2 + + + +1 +ms +milliseconds + + + +No +Yes + + + +0 32767 +m +meters + + +5 127 +1 +cm +centimeters + + +0 127 +1 + + +m +meters + + +m +meters + + +m +meters + + + +Forward +Forward-Right +Right +Back-Right +Back +Back-Left +Left +Forward-Left +Up +Down + + + + + +0 255 + + +0 255 + + +0 10000 + + +0 255 + + +-1 255 + + + +Low Speed +High Speed + + + + + + +None +Analog +MaxbotixI2C +LidarLiteV2-I2C +PX4-PWM +BBB-PRU +LightWareI2C +LightWareSerial +Bebop +MAVLink +uLanding +LeddarOne +MaxbotixSerial +TeraRangerI2C +LidarLiteV3-I2C +VL53L0X +NMEA +WASP-LRF +BenewakeTF02 +BenewakeTFmini +LidarLightV3HP +PWM +BlueRoboticsPing + + + + +Not Used +PX4-airspeed port +Pixhawk-airspeed port + + + +0.001 +m/V +meters per volt + + +0.001 +V +volt + + + +Linear +Inverted +Hyperbolic + + + +1 +cm +centimeters + + +1 +cm +centimeters + + + +Not Used +Pixhawk AUXOUT1 +Pixhawk AUXOUT2 +Pixhawk AUXOUT3 +Pixhawk AUXOUT4 +Pixhawk AUXOUT5 +Pixhawk AUXOUT6 +PX4 FMU Relay1 +PX4 FMU Relay2 +PX4IO Relay1 +PX4IO Relay2 +PX4IO ACC1 +PX4IO ACC2 + + + +1 +ms +milliseconds + + + +No +Yes + + + +0 32767 +m +meters + + +5 127 +1 +cm +centimeters + + +0 127 +1 + + +m +meters + + +m +meters + + +m +meters + + + +Forward +Forward-Right +Right +Back-Right +Back +Back-Left +Left +Forward-Left +Up +Down + + + + + +0 255 + + +0 255 + + +0 10000 + + +0 255 + + +-1 255 + + + +Low Speed +High Speed + + + + + + +None +Analog +MaxbotixI2C +LidarLiteV2-I2C +PX4-PWM +BBB-PRU +LightWareI2C +LightWareSerial +Bebop +MAVLink +uLanding +LeddarOne +MaxbotixSerial +TeraRangerI2C +LidarLiteV3-I2C +VL53L0X +NMEA +WASP-LRF +BenewakeTF02 +BenewakeTFmini +LidarLightV3HP +PWM +BlueRoboticsPing + + + + +Not Used +PX4-airspeed port +Pixhawk-airspeed port + + + +0.001 +m/V +meters per volt + + +0.001 +V +volt + + + +Linear +Inverted +Hyperbolic + + + +1 +cm +centimeters + + +1 +cm +centimeters + + + +Not Used +Pixhawk AUXOUT1 +Pixhawk AUXOUT2 +Pixhawk AUXOUT3 +Pixhawk AUXOUT4 +Pixhawk AUXOUT5 +Pixhawk AUXOUT6 +PX4 FMU Relay1 +PX4 FMU Relay2 +PX4IO Relay1 +PX4IO Relay2 +PX4IO ACC1 +PX4IO ACC2 + + + +1 +ms +milliseconds + + + +No +Yes + + + +0 32767 +m +meters + + +5 127 +1 +cm +centimeters + + +0 127 +1 + + +m +meters + + +m +meters + + +m +meters + + + +Forward +Forward-Right +Right +Back-Right +Back +Back-Left +Left +Forward-Left +Up +Down + + + + + +0 255 + + +0 255 + + +0 10000 + + +0 255 + + +-1 255 + + + +Low Speed +High Speed + + + + + + +None +Analog +MaxbotixI2C +LidarLiteV2-I2C +PX4-PWM +BBB-PRU +LightWareI2C +LightWareSerial +Bebop +MAVLink +uLanding +LeddarOne +MaxbotixSerial +TeraRangerI2C +LidarLiteV3-I2C +VL53L0X +NMEA +WASP-LRF +BenewakeTF02 +BenewakeTFmini +LidarLightV3HP +PWM +BlueRoboticsPing + + + + +Not Used +PX4-airspeed port +Pixhawk-airspeed port + + + +0.001 +m/V +meters per volt + + +0.001 +V +volt + + + +Linear +Inverted +Hyperbolic + + + +1 +cm +centimeters + + +1 +cm +centimeters + + + +Not Used +Pixhawk AUXOUT1 +Pixhawk AUXOUT2 +Pixhawk AUXOUT3 +Pixhawk AUXOUT4 +Pixhawk AUXOUT5 +Pixhawk AUXOUT6 +PX4 FMU Relay1 +PX4 FMU Relay2 +PX4IO Relay1 +PX4IO Relay2 +PX4IO ACC1 +PX4IO ACC2 + + + +1 +ms +milliseconds + + + +No +Yes + + + +0 32767 +m +meters + + +5 127 +1 +cm +centimeters + + +0 127 +1 + + +m +meters + + +m +meters + + +m +meters + + + +Forward +Forward-Right +Right +Back-Right +Back +Back-Left +Left +Forward-Left +Up +Down + + + + + +0 255 + + +0 255 + + +0 10000 + + +0 255 + + +-1 255 + + + +Low Speed +High Speed + + + + + + +None +Analog +MaxbotixI2C +LidarLiteV2-I2C +PX4-PWM +BBB-PRU +LightWareI2C +LightWareSerial +Bebop +MAVLink +uLanding +LeddarOne +MaxbotixSerial +TeraRangerI2C +LidarLiteV3-I2C +VL53L0X +NMEA +WASP-LRF +BenewakeTF02 +BenewakeTFmini +LidarLightV3HP +PWM +BlueRoboticsPing + + + + +Not Used +PX4-airspeed port +Pixhawk-airspeed port + + + +0.001 +m/V +meters per volt + + +0.001 +V +volt + + + +Linear +Inverted +Hyperbolic + + + +1 +cm +centimeters + + +1 +cm +centimeters + + + +Not Used +Pixhawk AUXOUT1 +Pixhawk AUXOUT2 +Pixhawk AUXOUT3 +Pixhawk AUXOUT4 +Pixhawk AUXOUT5 +Pixhawk AUXOUT6 +PX4 FMU Relay1 +PX4 FMU Relay2 +PX4IO Relay1 +PX4IO Relay2 +PX4IO ACC1 +PX4IO ACC2 + + + +1 +ms +milliseconds + + + +No +Yes + + + +0 32767 +m +meters + + +5 127 +1 +cm +centimeters + + +0 127 +1 + + +m +meters + + +m +meters + + +m +meters + + + +Forward +Forward-Right +Right +Back-Right +Back +Back-Left +Left +Forward-Left +Up +Down + + + + + +0 255 + + +0 255 + + +0 10000 + + +0 255 + + +-1 255 + + + +Low Speed +High Speed + + + + + + +None +PX4-PWM +AUXPIN + + + +0.001 + + +1 + + +1 + + +0.1 + + + +Disabled +PixhawkAUX1 +PixhawkAUX2 +PixhawkAUX3 +PixhawkAUX4 +PixhawkAUX5 +PixhawkAUX6 + + + + +None +PX4-PWM +AUXPIN + + + +0.001 + + + +Disabled +PixhawkAUX1 +PixhawkAUX2 +PixhawkAUX3 +PixhawkAUX4 +PixhawkAUX5 +PixhawkAUX6 + + + + + + +Disabled +AnalogPin +RCChannelPwmValue +ReceiverProtocol +PWMInputPin + + + + +V5 Nano +Pixracer +Pixhawk ADC4 +Pixhawk ADC3 +Pixhawk ADC6 +Pixhawk2 ADC +PixhawkAUX1 +PixhawkAUX2 +PixhawkAUX3 +PixhawkAUX4 +PixhawkAUX5 +PixhawkAUX6 +Pixhawk SBUS + + + +0 5.0 +0.01 +V +volt + + +0 5.0 +0.01 +V +volt + + +0 16 + + +0 2000 +PWM +PWM in microseconds + + +0 2000 +PWM +PWM in microseconds + + + + + +Disabled +ShowSlips +ShowOverruns + + + + +50Hz +100Hz +200Hz +250Hz +300Hz +400Hz + +True + + + + + +1200 +2400 +4800 +9600 +19200 +38400 +57600 +111100 +115200 +256000 +460800 +500000 +921600 +1500000 + + + + +MAVlink1 +MAVLink2 + +True + + + +None +MAVLink1 +MAVLink2 +Frsky D +Frsky SPort +GPS +Alexmos Gimbal Serial +SToRM32 Gimbal Serial +Rangefinder +FrSky SPort Passthrough (OpenTX) +Lidar360 +Beacon +Volz servo out +SBus servo out +ESC Telemetry +Devo Telemetry +OpticalFlow +RobotisServo + +True + + + +1200 +2400 +4800 +9600 +19200 +38400 +57600 +111100 +115200 +256000 +500000 +921600 +1500000 + + + + +None +MAVLink1 +MAVLink2 +Frsky D +Frsky SPort +GPS +Alexmos Gimbal Serial +SToRM32 Gimbal Serial +Rangefinder +FrSky SPort Passthrough (OpenTX) +Lidar360 +Beacon +Volz servo out +SBus servo out +ESC Telemetry +Devo Telemetry +OpticalFlow +RobotisServo + +True + + + +1200 +2400 +4800 +9600 +19200 +38400 +57600 +111100 +115200 +256000 +500000 +921600 +1500000 + + + + +None +MAVLink1 +MAVLink2 +Frsky D +Frsky SPort +GPS +Alexmos Gimbal Serial +SToRM32 Gimbal Serial +Rangefinder +FrSky SPort Passthrough (OpenTX) +Lidar360 +Beacon +Volz servo out +SBus servo out +ESC Telemetry +Devo Telemetry +OpticalFlow +RobotisServo + +True + + + +1200 +2400 +4800 +9600 +19200 +38400 +57600 +111100 +115200 +256000 +500000 +921600 +1500000 + + + + +None +MAVLink1 +MAVLink2 +Frsky D +Frsky SPort +GPS +Alexmos Gimbal Serial +SToRM32 Gimbal Serial +Rangefinder +FrSky SPort Passthrough (OpenTX) +Lidar360 +Beacon +Volz servo out +SBus servo out +ESC Telemetry +Devo Telemetry +OpticalFlow +RobotisServo + +True + + + +1200 +2400 +4800 +9600 +19200 +38400 +57600 +111100 +115200 +256000 +500000 +921600 +1500000 + + + + +None +MAVLink1 +MAVLink2 +Frsky D +Frsky SPort +GPS +Alexmos Gimbal Serial +SToRM32 Gimbal Serial +Rangefinder +FrSky SPort Passthrough (OpenTX) +Lidar360 +Beacon +Volz servo out +SBus servo out +ESC Telemetry +Devo Telemetry +OpticalFlow +RobotisServo + +True + + + +1200 +2400 +4800 +9600 +19200 +38400 +57600 +111100 +115200 +256000 +500000 +921600 +1500000 + + + + +None +MAVLink1 +MAVLink2 +Frsky D +Frsky SPort +GPS +Alexmos Gimbal Serial +SToRM32 Gimbal Serial +Rangefinder +FrSky SPort Passthrough (OpenTX) +Lidar360 +Beacon +Volz servo out +SBus servo out +ESC Telemetry +Devo Telemetry +OpticalFlow +RobotisServo + +True + + + +1200 +2400 +4800 +9600 +19200 +38400 +57600 +111100 +115200 +256000 +500000 +921600 +1500000 + + + +0:InvertRX, 1:InvertTX, 2:HalfDuplex, 4:Swap +True + + +0:InvertRX, 1:InvertTX, 2:HalfDuplex, 4:Swap +True + + +0:InvertRX, 1:InvertTX, 2:HalfDuplex, 4:Swap +True + + +0:InvertRX, 1:InvertTX, 2:HalfDuplex, 4:Swap +True + + +0:InvertRX, 1:InvertTX, 2:HalfDuplex, 4:Swap +True + + +0:InvertRX, 1:InvertTX, 2:HalfDuplex, 4:Swap +True + + + +Disabled +Serial0 +Serial1 +Serial2 +Serial3 +Serial4 +Serial5 +Serial6 + + + + +Disabled +Serial0 +Serial1 +Serial2 +Serial3 +Serial4 +Serial5 +Serial6 + + + +0 120 +s +seconds + + + + + +Disable +Enable + + + +25 400 +Hz +hertz + + + + +500 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + + +Normal +Reversed + + + + +Disabled +RCPassThru +Flap +Flap_auto +Aileron +mount_pan +mount_tilt +mount_roll +mount_open +camera_trigger +release +mount2_pan +mount2_tilt +mount2_roll +mount2_open +DifferentialSpoilerLeft1 +DifferentialSpoilerRight1 +Elevator +Rudder +FlaperonLeft +FlaperonRight +GroundSteering +Parachute +EPM +LandingGear +EngineRunEnable +HeliRSC +HeliTailRSC +Motor1 +Motor2 +Motor3 +Motor4 +Motor5 +Motor6 +Motor7 +Motor8 +MotorTilt +RCIN1 +RCIN2 +RCIN3 +RCIN4 +RCIN5 +RCIN6 +RCIN7 +RCIN8 +RCIN9 +RCIN10 +RCIN11 +RCIN12 +RCIN13 +RCIN14 +RCIN15 +RCIN16 +Ignition +Choke +Starter +Throttle +TrackerYaw +TrackerPitch +ThrottleLeft +ThrottleRight +tiltMotorLeft +tiltMotorRight +ElevonLeft +ElevonRight +VTailLeft +VTailRight +BoostThrottle +Motor9 +Motor10 +Motor11 +Motor12 +DifferentialSpoilerLeft2 +DifferentialSpoilerRight2 +Winch +Main Sail +Camera ISO +Camera Focus +Camera Shutter Speed +Script 1 +Script 2 +Script 3 +Script 4 +Script 5 +Script 6 +Script 7 +Script 8 +Script 9 +Script 10 +Script 11 +Script 12 +Script 13 +Script 14 +Script 15 +Script 16 + + + + + +500 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + + +Normal +Reversed + + + + +Disabled +RCPassThru +Flap +Flap_auto +Aileron +mount_pan +mount_tilt +mount_roll +mount_open +camera_trigger +release +mount2_pan +mount2_tilt +mount2_roll +mount2_open +DifferentialSpoilerLeft1 +DifferentialSpoilerRight1 +Elevator +Rudder +FlaperonLeft +FlaperonRight +GroundSteering +Parachute +EPM +LandingGear +EngineRunEnable +HeliRSC +HeliTailRSC +Motor1 +Motor2 +Motor3 +Motor4 +Motor5 +Motor6 +Motor7 +Motor8 +MotorTilt +RCIN1 +RCIN2 +RCIN3 +RCIN4 +RCIN5 +RCIN6 +RCIN7 +RCIN8 +RCIN9 +RCIN10 +RCIN11 +RCIN12 +RCIN13 +RCIN14 +RCIN15 +RCIN16 +Ignition +Choke +Starter +Throttle +TrackerYaw +TrackerPitch +ThrottleLeft +ThrottleRight +tiltMotorLeft +tiltMotorRight +ElevonLeft +ElevonRight +VTailLeft +VTailRight +BoostThrottle +Motor9 +Motor10 +Motor11 +Motor12 +DifferentialSpoilerLeft2 +DifferentialSpoilerRight2 +Winch +Main Sail +Camera ISO +Camera Focus +Camera Shutter Speed +Script 1 +Script 2 +Script 3 +Script 4 +Script 5 +Script 6 +Script 7 +Script 8 +Script 9 +Script 10 +Script 11 +Script 12 +Script 13 +Script 14 +Script 15 +Script 16 + + + + + +500 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + + +Normal +Reversed + + + + +Disabled +RCPassThru +Flap +Flap_auto +Aileron +mount_pan +mount_tilt +mount_roll +mount_open +camera_trigger +release +mount2_pan +mount2_tilt +mount2_roll +mount2_open +DifferentialSpoilerLeft1 +DifferentialSpoilerRight1 +Elevator +Rudder +FlaperonLeft +FlaperonRight +GroundSteering +Parachute +EPM +LandingGear +EngineRunEnable +HeliRSC +HeliTailRSC +Motor1 +Motor2 +Motor3 +Motor4 +Motor5 +Motor6 +Motor7 +Motor8 +MotorTilt +RCIN1 +RCIN2 +RCIN3 +RCIN4 +RCIN5 +RCIN6 +RCIN7 +RCIN8 +RCIN9 +RCIN10 +RCIN11 +RCIN12 +RCIN13 +RCIN14 +RCIN15 +RCIN16 +Ignition +Choke +Starter +Throttle +TrackerYaw +TrackerPitch +ThrottleLeft +ThrottleRight +tiltMotorLeft +tiltMotorRight +ElevonLeft +ElevonRight +VTailLeft +VTailRight +BoostThrottle +Motor9 +Motor10 +Motor11 +Motor12 +DifferentialSpoilerLeft2 +DifferentialSpoilerRight2 +Winch +Main Sail +Camera ISO +Camera Focus +Camera Shutter Speed +Script 1 +Script 2 +Script 3 +Script 4 +Script 5 +Script 6 +Script 7 +Script 8 +Script 9 +Script 10 +Script 11 +Script 12 +Script 13 +Script 14 +Script 15 +Script 16 + + + + + +500 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + + +Normal +Reversed + + + + +Disabled +RCPassThru +Flap +Flap_auto +Aileron +mount_pan +mount_tilt +mount_roll +mount_open +camera_trigger +release +mount2_pan +mount2_tilt +mount2_roll +mount2_open +DifferentialSpoilerLeft1 +DifferentialSpoilerRight1 +Elevator +Rudder +FlaperonLeft +FlaperonRight +GroundSteering +Parachute +EPM +LandingGear +EngineRunEnable +HeliRSC +HeliTailRSC +Motor1 +Motor2 +Motor3 +Motor4 +Motor5 +Motor6 +Motor7 +Motor8 +MotorTilt +RCIN1 +RCIN2 +RCIN3 +RCIN4 +RCIN5 +RCIN6 +RCIN7 +RCIN8 +RCIN9 +RCIN10 +RCIN11 +RCIN12 +RCIN13 +RCIN14 +RCIN15 +RCIN16 +Ignition +Choke +Starter +Throttle +TrackerYaw +TrackerPitch +ThrottleLeft +ThrottleRight +tiltMotorLeft +tiltMotorRight +ElevonLeft +ElevonRight +VTailLeft +VTailRight +BoostThrottle +Motor9 +Motor10 +Motor11 +Motor12 +DifferentialSpoilerLeft2 +DifferentialSpoilerRight2 +Winch +Main Sail +Camera ISO +Camera Focus +Camera Shutter Speed +Script 1 +Script 2 +Script 3 +Script 4 +Script 5 +Script 6 +Script 7 +Script 8 +Script 9 +Script 10 +Script 11 +Script 12 +Script 13 +Script 14 +Script 15 +Script 16 + + + + + +500 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + + +Normal +Reversed + + + + +Disabled +RCPassThru +Flap +Flap_auto +Aileron +mount_pan +mount_tilt +mount_roll +mount_open +camera_trigger +release +mount2_pan +mount2_tilt +mount2_roll +mount2_open +DifferentialSpoilerLeft1 +DifferentialSpoilerRight1 +Elevator +Rudder +FlaperonLeft +FlaperonRight +GroundSteering +Parachute +EPM +LandingGear +EngineRunEnable +HeliRSC +HeliTailRSC +Motor1 +Motor2 +Motor3 +Motor4 +Motor5 +Motor6 +Motor7 +Motor8 +MotorTilt +RCIN1 +RCIN2 +RCIN3 +RCIN4 +RCIN5 +RCIN6 +RCIN7 +RCIN8 +RCIN9 +RCIN10 +RCIN11 +RCIN12 +RCIN13 +RCIN14 +RCIN15 +RCIN16 +Ignition +Choke +Starter +Throttle +TrackerYaw +TrackerPitch +ThrottleLeft +ThrottleRight +tiltMotorLeft +tiltMotorRight +ElevonLeft +ElevonRight +VTailLeft +VTailRight +BoostThrottle +Motor9 +Motor10 +Motor11 +Motor12 +DifferentialSpoilerLeft2 +DifferentialSpoilerRight2 +Winch +Main Sail +Camera ISO +Camera Focus +Camera Shutter Speed +Script 1 +Script 2 +Script 3 +Script 4 +Script 5 +Script 6 +Script 7 +Script 8 +Script 9 +Script 10 +Script 11 +Script 12 +Script 13 +Script 14 +Script 15 +Script 16 + + + + + +500 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + + +Normal +Reversed + + + + +Disabled +RCPassThru +Flap +Flap_auto +Aileron +mount_pan +mount_tilt +mount_roll +mount_open +camera_trigger +release +mount2_pan +mount2_tilt +mount2_roll +mount2_open +DifferentialSpoilerLeft1 +DifferentialSpoilerRight1 +Elevator +Rudder +FlaperonLeft +FlaperonRight +GroundSteering +Parachute +EPM +LandingGear +EngineRunEnable +HeliRSC +HeliTailRSC +Motor1 +Motor2 +Motor3 +Motor4 +Motor5 +Motor6 +Motor7 +Motor8 +MotorTilt +RCIN1 +RCIN2 +RCIN3 +RCIN4 +RCIN5 +RCIN6 +RCIN7 +RCIN8 +RCIN9 +RCIN10 +RCIN11 +RCIN12 +RCIN13 +RCIN14 +RCIN15 +RCIN16 +Ignition +Choke +Starter +Throttle +TrackerYaw +TrackerPitch +ThrottleLeft +ThrottleRight +tiltMotorLeft +tiltMotorRight +ElevonLeft +ElevonRight +VTailLeft +VTailRight +BoostThrottle +Motor9 +Motor10 +Motor11 +Motor12 +DifferentialSpoilerLeft2 +DifferentialSpoilerRight2 +Winch +Main Sail +Camera ISO +Camera Focus +Camera Shutter Speed +Script 1 +Script 2 +Script 3 +Script 4 +Script 5 +Script 6 +Script 7 +Script 8 +Script 9 +Script 10 +Script 11 +Script 12 +Script 13 +Script 14 +Script 15 +Script 16 + + + + + +500 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + + +Normal +Reversed + + + + +Disabled +RCPassThru +Flap +Flap_auto +Aileron +mount_pan +mount_tilt +mount_roll +mount_open +camera_trigger +release +mount2_pan +mount2_tilt +mount2_roll +mount2_open +DifferentialSpoilerLeft1 +DifferentialSpoilerRight1 +Elevator +Rudder +FlaperonLeft +FlaperonRight +GroundSteering +Parachute +EPM +LandingGear +EngineRunEnable +HeliRSC +HeliTailRSC +Motor1 +Motor2 +Motor3 +Motor4 +Motor5 +Motor6 +Motor7 +Motor8 +MotorTilt +RCIN1 +RCIN2 +RCIN3 +RCIN4 +RCIN5 +RCIN6 +RCIN7 +RCIN8 +RCIN9 +RCIN10 +RCIN11 +RCIN12 +RCIN13 +RCIN14 +RCIN15 +RCIN16 +Ignition +Choke +Starter +Throttle +TrackerYaw +TrackerPitch +ThrottleLeft +ThrottleRight +tiltMotorLeft +tiltMotorRight +ElevonLeft +ElevonRight +VTailLeft +VTailRight +BoostThrottle +Motor9 +Motor10 +Motor11 +Motor12 +DifferentialSpoilerLeft2 +DifferentialSpoilerRight2 +Winch +Main Sail +Camera ISO +Camera Focus +Camera Shutter Speed +Script 1 +Script 2 +Script 3 +Script 4 +Script 5 +Script 6 +Script 7 +Script 8 +Script 9 +Script 10 +Script 11 +Script 12 +Script 13 +Script 14 +Script 15 +Script 16 + + + + + +500 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + + +Normal +Reversed + + + + +Disabled +RCPassThru +Flap +Flap_auto +Aileron +mount_pan +mount_tilt +mount_roll +mount_open +camera_trigger +release +mount2_pan +mount2_tilt +mount2_roll +mount2_open +DifferentialSpoilerLeft1 +DifferentialSpoilerRight1 +Elevator +Rudder +FlaperonLeft +FlaperonRight +GroundSteering +Parachute +EPM +LandingGear +EngineRunEnable +HeliRSC +HeliTailRSC +Motor1 +Motor2 +Motor3 +Motor4 +Motor5 +Motor6 +Motor7 +Motor8 +MotorTilt +RCIN1 +RCIN2 +RCIN3 +RCIN4 +RCIN5 +RCIN6 +RCIN7 +RCIN8 +RCIN9 +RCIN10 +RCIN11 +RCIN12 +RCIN13 +RCIN14 +RCIN15 +RCIN16 +Ignition +Choke +Starter +Throttle +TrackerYaw +TrackerPitch +ThrottleLeft +ThrottleRight +tiltMotorLeft +tiltMotorRight +ElevonLeft +ElevonRight +VTailLeft +VTailRight +BoostThrottle +Motor9 +Motor10 +Motor11 +Motor12 +DifferentialSpoilerLeft2 +DifferentialSpoilerRight2 +Winch +Main Sail +Camera ISO +Camera Focus +Camera Shutter Speed +Script 1 +Script 2 +Script 3 +Script 4 +Script 5 +Script 6 +Script 7 +Script 8 +Script 9 +Script 10 +Script 11 +Script 12 +Script 13 +Script 14 +Script 15 +Script 16 + + + + + +500 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + + +Normal +Reversed + + + + +Disabled +RCPassThru +Flap +Flap_auto +Aileron +mount_pan +mount_tilt +mount_roll +mount_open +camera_trigger +release +mount2_pan +mount2_tilt +mount2_roll +mount2_open +DifferentialSpoilerLeft1 +DifferentialSpoilerRight1 +Elevator +Rudder +FlaperonLeft +FlaperonRight +GroundSteering +Parachute +EPM +LandingGear +EngineRunEnable +HeliRSC +HeliTailRSC +Motor1 +Motor2 +Motor3 +Motor4 +Motor5 +Motor6 +Motor7 +Motor8 +MotorTilt +RCIN1 +RCIN2 +RCIN3 +RCIN4 +RCIN5 +RCIN6 +RCIN7 +RCIN8 +RCIN9 +RCIN10 +RCIN11 +RCIN12 +RCIN13 +RCIN14 +RCIN15 +RCIN16 +Ignition +Choke +Starter +Throttle +TrackerYaw +TrackerPitch +ThrottleLeft +ThrottleRight +tiltMotorLeft +tiltMotorRight +ElevonLeft +ElevonRight +VTailLeft +VTailRight +BoostThrottle +Motor9 +Motor10 +Motor11 +Motor12 +DifferentialSpoilerLeft2 +DifferentialSpoilerRight2 +Winch +Main Sail +Camera ISO +Camera Focus +Camera Shutter Speed +Script 1 +Script 2 +Script 3 +Script 4 +Script 5 +Script 6 +Script 7 +Script 8 +Script 9 +Script 10 +Script 11 +Script 12 +Script 13 +Script 14 +Script 15 +Script 16 + + + + + +500 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + + +Normal +Reversed + + + + +Disabled +RCPassThru +Flap +Flap_auto +Aileron +mount_pan +mount_tilt +mount_roll +mount_open +camera_trigger +release +mount2_pan +mount2_tilt +mount2_roll +mount2_open +DifferentialSpoilerLeft1 +DifferentialSpoilerRight1 +Elevator +Rudder +FlaperonLeft +FlaperonRight +GroundSteering +Parachute +EPM +LandingGear +EngineRunEnable +HeliRSC +HeliTailRSC +Motor1 +Motor2 +Motor3 +Motor4 +Motor5 +Motor6 +Motor7 +Motor8 +MotorTilt +RCIN1 +RCIN2 +RCIN3 +RCIN4 +RCIN5 +RCIN6 +RCIN7 +RCIN8 +RCIN9 +RCIN10 +RCIN11 +RCIN12 +RCIN13 +RCIN14 +RCIN15 +RCIN16 +Ignition +Choke +Starter +Throttle +TrackerYaw +TrackerPitch +ThrottleLeft +ThrottleRight +tiltMotorLeft +tiltMotorRight +ElevonLeft +ElevonRight +VTailLeft +VTailRight +BoostThrottle +Motor9 +Motor10 +Motor11 +Motor12 +DifferentialSpoilerLeft2 +DifferentialSpoilerRight2 +Winch +Main Sail +Camera ISO +Camera Focus +Camera Shutter Speed +Script 1 +Script 2 +Script 3 +Script 4 +Script 5 +Script 6 +Script 7 +Script 8 +Script 9 +Script 10 +Script 11 +Script 12 +Script 13 +Script 14 +Script 15 +Script 16 + + + + + +500 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + + +Normal +Reversed + + + + +Disabled +RCPassThru +Flap +Flap_auto +Aileron +mount_pan +mount_tilt +mount_roll +mount_open +camera_trigger +release +mount2_pan +mount2_tilt +mount2_roll +mount2_open +DifferentialSpoilerLeft1 +DifferentialSpoilerRight1 +Elevator +Rudder +FlaperonLeft +FlaperonRight +GroundSteering +Parachute +EPM +LandingGear +EngineRunEnable +HeliRSC +HeliTailRSC +Motor1 +Motor2 +Motor3 +Motor4 +Motor5 +Motor6 +Motor7 +Motor8 +MotorTilt +RCIN1 +RCIN2 +RCIN3 +RCIN4 +RCIN5 +RCIN6 +RCIN7 +RCIN8 +RCIN9 +RCIN10 +RCIN11 +RCIN12 +RCIN13 +RCIN14 +RCIN15 +RCIN16 +Ignition +Choke +Starter +Throttle +TrackerYaw +TrackerPitch +ThrottleLeft +ThrottleRight +tiltMotorLeft +tiltMotorRight +ElevonLeft +ElevonRight +VTailLeft +VTailRight +BoostThrottle +Motor9 +Motor10 +Motor11 +Motor12 +DifferentialSpoilerLeft2 +DifferentialSpoilerRight2 +Winch +Main Sail +Camera ISO +Camera Focus +Camera Shutter Speed +Script 1 +Script 2 +Script 3 +Script 4 +Script 5 +Script 6 +Script 7 +Script 8 +Script 9 +Script 10 +Script 11 +Script 12 +Script 13 +Script 14 +Script 15 +Script 16 + + + + + +500 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + + +Normal +Reversed + + + + +Disabled +RCPassThru +Flap +Flap_auto +Aileron +mount_pan +mount_tilt +mount_roll +mount_open +camera_trigger +release +mount2_pan +mount2_tilt +mount2_roll +mount2_open +DifferentialSpoilerLeft1 +DifferentialSpoilerRight1 +Elevator +Rudder +FlaperonLeft +FlaperonRight +GroundSteering +Parachute +EPM +LandingGear +EngineRunEnable +HeliRSC +HeliTailRSC +Motor1 +Motor2 +Motor3 +Motor4 +Motor5 +Motor6 +Motor7 +Motor8 +MotorTilt +RCIN1 +RCIN2 +RCIN3 +RCIN4 +RCIN5 +RCIN6 +RCIN7 +RCIN8 +RCIN9 +RCIN10 +RCIN11 +RCIN12 +RCIN13 +RCIN14 +RCIN15 +RCIN16 +Ignition +Choke +Starter +Throttle +TrackerYaw +TrackerPitch +ThrottleLeft +ThrottleRight +tiltMotorLeft +tiltMotorRight +ElevonLeft +ElevonRight +VTailLeft +VTailRight +BoostThrottle +Motor9 +Motor10 +Motor11 +Motor12 +DifferentialSpoilerLeft2 +DifferentialSpoilerRight2 +Winch +Main Sail +Camera ISO +Camera Focus +Camera Shutter Speed +Script 1 +Script 2 +Script 3 +Script 4 +Script 5 +Script 6 +Script 7 +Script 8 +Script 9 +Script 10 +Script 11 +Script 12 +Script 13 +Script 14 +Script 15 +Script 16 + + + + + +500 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + + +Normal +Reversed + + + + +Disabled +RCPassThru +Flap +Flap_auto +Aileron +mount_pan +mount_tilt +mount_roll +mount_open +camera_trigger +release +mount2_pan +mount2_tilt +mount2_roll +mount2_open +DifferentialSpoilerLeft1 +DifferentialSpoilerRight1 +Elevator +Rudder +FlaperonLeft +FlaperonRight +GroundSteering +Parachute +EPM +LandingGear +EngineRunEnable +HeliRSC +HeliTailRSC +Motor1 +Motor2 +Motor3 +Motor4 +Motor5 +Motor6 +Motor7 +Motor8 +MotorTilt +RCIN1 +RCIN2 +RCIN3 +RCIN4 +RCIN5 +RCIN6 +RCIN7 +RCIN8 +RCIN9 +RCIN10 +RCIN11 +RCIN12 +RCIN13 +RCIN14 +RCIN15 +RCIN16 +Ignition +Choke +Starter +Throttle +TrackerYaw +TrackerPitch +ThrottleLeft +ThrottleRight +tiltMotorLeft +tiltMotorRight +ElevonLeft +ElevonRight +VTailLeft +VTailRight +BoostThrottle +Motor9 +Motor10 +Motor11 +Motor12 +DifferentialSpoilerLeft2 +DifferentialSpoilerRight2 +Winch +Main Sail +Camera ISO +Camera Focus +Camera Shutter Speed +Script 1 +Script 2 +Script 3 +Script 4 +Script 5 +Script 6 +Script 7 +Script 8 +Script 9 +Script 10 +Script 11 +Script 12 +Script 13 +Script 14 +Script 15 +Script 16 + + + + + +500 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + + +Normal +Reversed + + + + +Disabled +RCPassThru +Flap +Flap_auto +Aileron +mount_pan +mount_tilt +mount_roll +mount_open +camera_trigger +release +mount2_pan +mount2_tilt +mount2_roll +mount2_open +DifferentialSpoilerLeft1 +DifferentialSpoilerRight1 +Elevator +Rudder +FlaperonLeft +FlaperonRight +GroundSteering +Parachute +EPM +LandingGear +EngineRunEnable +HeliRSC +HeliTailRSC +Motor1 +Motor2 +Motor3 +Motor4 +Motor5 +Motor6 +Motor7 +Motor8 +MotorTilt +RCIN1 +RCIN2 +RCIN3 +RCIN4 +RCIN5 +RCIN6 +RCIN7 +RCIN8 +RCIN9 +RCIN10 +RCIN11 +RCIN12 +RCIN13 +RCIN14 +RCIN15 +RCIN16 +Ignition +Choke +Starter +Throttle +TrackerYaw +TrackerPitch +ThrottleLeft +ThrottleRight +tiltMotorLeft +tiltMotorRight +ElevonLeft +ElevonRight +VTailLeft +VTailRight +BoostThrottle +Motor9 +Motor10 +Motor11 +Motor12 +DifferentialSpoilerLeft2 +DifferentialSpoilerRight2 +Winch +Main Sail +Camera ISO +Camera Focus +Camera Shutter Speed +Script 1 +Script 2 +Script 3 +Script 4 +Script 5 +Script 6 +Script 7 +Script 8 +Script 9 +Script 10 +Script 11 +Script 12 +Script 13 +Script 14 +Script 15 +Script 16 + + + + + +500 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + + +Normal +Reversed + + + + +Disabled +RCPassThru +Flap +Flap_auto +Aileron +mount_pan +mount_tilt +mount_roll +mount_open +camera_trigger +release +mount2_pan +mount2_tilt +mount2_roll +mount2_open +DifferentialSpoilerLeft1 +DifferentialSpoilerRight1 +Elevator +Rudder +FlaperonLeft +FlaperonRight +GroundSteering +Parachute +EPM +LandingGear +EngineRunEnable +HeliRSC +HeliTailRSC +Motor1 +Motor2 +Motor3 +Motor4 +Motor5 +Motor6 +Motor7 +Motor8 +MotorTilt +RCIN1 +RCIN2 +RCIN3 +RCIN4 +RCIN5 +RCIN6 +RCIN7 +RCIN8 +RCIN9 +RCIN10 +RCIN11 +RCIN12 +RCIN13 +RCIN14 +RCIN15 +RCIN16 +Ignition +Choke +Starter +Throttle +TrackerYaw +TrackerPitch +ThrottleLeft +ThrottleRight +tiltMotorLeft +tiltMotorRight +ElevonLeft +ElevonRight +VTailLeft +VTailRight +BoostThrottle +Motor9 +Motor10 +Motor11 +Motor12 +DifferentialSpoilerLeft2 +DifferentialSpoilerRight2 +Winch +Main Sail +Camera ISO +Camera Focus +Camera Shutter Speed +Script 1 +Script 2 +Script 3 +Script 4 +Script 5 +Script 6 +Script 7 +Script 8 +Script 9 +Script 10 +Script 11 +Script 12 +Script 13 +Script 14 +Script 15 +Script 16 + + + + + +500 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + + +Normal +Reversed + + + + +Disabled +RCPassThru +Flap +Flap_auto +Aileron +mount_pan +mount_tilt +mount_roll +mount_open +camera_trigger +release +mount2_pan +mount2_tilt +mount2_roll +mount2_open +DifferentialSpoilerLeft1 +DifferentialSpoilerRight1 +Elevator +Rudder +FlaperonLeft +FlaperonRight +GroundSteering +Parachute +EPM +LandingGear +EngineRunEnable +HeliRSC +HeliTailRSC +Motor1 +Motor2 +Motor3 +Motor4 +Motor5 +Motor6 +Motor7 +Motor8 +MotorTilt +RCIN1 +RCIN2 +RCIN3 +RCIN4 +RCIN5 +RCIN6 +RCIN7 +RCIN8 +RCIN9 +RCIN10 +RCIN11 +RCIN12 +RCIN13 +RCIN14 +RCIN15 +RCIN16 +Ignition +Choke +Starter +Throttle +TrackerYaw +TrackerPitch +ThrottleLeft +ThrottleRight +tiltMotorLeft +tiltMotorRight +ElevonLeft +ElevonRight +VTailLeft +VTailRight +BoostThrottle +Motor9 +Motor10 +Motor11 +Motor12 +DifferentialSpoilerLeft2 +DifferentialSpoilerRight2 +Winch +Main Sail +Camera ISO +Camera Focus +Camera Shutter Speed +Script 1 +Script 2 +Script 3 +Script 4 +Script 5 +Script 6 +Script 7 +Script 8 +Script 9 +Script 10 +Script 11 +Script 12 +Script 13 +Script 14 +Script 15 +Script 16 + + + + + +0:Channel1,1:Channel2,2:Channel3,3:Channel4,4:Channel5,5:Channel6,6:Channel7,7:Channel8,8:Channel9,9:Channel10,10:Channel11,11:Channel12,12:Channel13,13:Channel14,14:Channel15,15:Channel16 + + + +Disabled +Enabled + + + + +Disabled +TestMotor1 +TestMotor2 +TestMotor3 +TestMotor4 +TestMotor5 +TestMotor6 +TestMotor7 +TestMotor8 + + + +0 300 +s +seconds + + +0 500 +Hz +hertz + + + +Disabled +Enabled + + + + +None +OneShot +OneShot125 +Brushed +DShot150 +DShot300 +DShot600 +DShot1200 + + + + +Console +Telem1 +Telem2 +Telem3 +Telem4 +Telem5 + + + +1 127 + + +0:Channel1,1:Channel2,2:Channel3,3:Channel4,4:Channel5,5:Channel6,6:Channel7,7:Channel8,8:Channel9,9:Channel10,10:Channel11,11:Channel12,12:Channel13,13:Channel14,14:Channel15,15:Channel16 + + + + +0 4095 + + +0 4095 + + + + +25 250 +Hz +hertz + + + + +0:Channel1,1:Channel2,2:Channel3,3:Channel4,4:Channel5,5:Channel6,6:Channel7,7:Channel8,8:Channel9,9:Channel10,10:Channel11,11:Channel12,12:Channel13,13:Channel14,14:Channel15,15:Channel16 + + + + + +Disabled +Enabled + + + +0 15 + + + + + +Disabled +Enabled + + + +0 15 + + +1000 2000 +PWM +PWM in microseconds + + +1000 2000 +PWM +PWM in microseconds + + + +Normal +Reverse + + + + + + +Disabled +Enabled + + + +-90 90 +0.000001 +deg +degrees + + +-180 180 +0.000001 +deg +degrees + + +0 10000 +1 +cm +centimeters + + +-180 +180 +1 +deg +degrees + + +0 200 +Hz +hertz + + + +cylinder +cone +sphere + + + +0 100 +m +meters + + +5 100 +m +meters + + + + + +Disabled +Enabled + + + +0 15 + + +0 15 + + + + + +Disable +Enable + + + +0 10 +m/s +meters per second + + +0 100 +m +meters + + +0 32768 +s +seconds + + +0 32768 +s +seconds + + +0 0.5 +m.m/s/s +square meter per square second + + +0 1000.0 +m +meters + + +0 1000.0 +m +meters + + +0 1000.0 +m +meters + + +0 16 + + + + +0 10 +1 +Hz +hertz + + +0 10 +1 +Hz +hertz + + +0 10 +1 +Hz +hertz + + +0 10 +1 +Hz +hertz + + +0 10 +1 +Hz +hertz + + +0 10 +1 +Hz +hertz + + +0 10 +1 +Hz +hertz + + +0 10 +1 +Hz +hertz + + +0 10 +1 +Hz +hertz + + +0 50 +1 +Hz +hertz + + + + +0 10 +1 +Hz +hertz + + +0 10 +1 +Hz +hertz + + +0 10 +1 +Hz +hertz + + +0 10 +1 +Hz +hertz + + +0 10 +1 +Hz +hertz + + +0 10 +1 +Hz +hertz + + +0 10 +1 +Hz +hertz + + +0 10 +1 +Hz +hertz + + +0 10 +1 +Hz +hertz + + +0 50 +1 +Hz +hertz + + + + +0 10 +1 +Hz +hertz + + +0 10 +1 +Hz +hertz + + +0 10 +1 +Hz +hertz + + +0 10 +1 +Hz +hertz + + +0 10 +1 +Hz +hertz + + +0 10 +1 +Hz +hertz + + +0 10 +1 +Hz +hertz + + +0 10 +1 +Hz +hertz + + +0 10 +1 +Hz +hertz + + +0 50 +1 +Hz +hertz + + + + +0 10 +1 +Hz +hertz + + +0 10 +1 +Hz +hertz + + +0 10 +1 +Hz +hertz + + +0 10 +1 +Hz +hertz + + +0 10 +1 +Hz +hertz + + +0 10 +1 +Hz +hertz + + +0 10 +1 +Hz +hertz + + +0 10 +1 +Hz +hertz + + +0 10 +1 +Hz +hertz + + +0 50 +1 +Hz +hertz + + + + +True + + +True +s +seconds + + +True +s +seconds + + +True +s +seconds + + + + +0.4 1.0 +0.1 +s +seconds + + +0.1 10.0 +0.1 + + +0 1.0 +0.05 + + +0 0.1 +0.01 + + +0 4500 +1 +cdeg +centidegrees + + +0 5 +0.1 +m/s +meters per second + + +0.0 10.0 +0.1 + + +0.0 30.0 +0.1 +m/s +meters per second + + +0.0 50.0 +0.1 +deg/m/s +degrees per meter per second + + +0.0 4500.0 +0.1 +cdeg +centidegrees + + + + +0.1 20.0 +0.1 + + +0.1 10.0 +0.1 + + +3.0 10.0 +0.2 + + +0.1 1.0 +0.1 + + +0.0 0.5 +0.02 + + +1.0 10.0 +0.5 + + +1.0 5.0 +0.05 + + +0.5 2.0 +0.05 + + +5.0 30.0 +1.0 + + +0.0 2.0 +0.1 + + +0.1 1.0 +0.1 + + +0.0 20.0 +0.1 + + +-1 127 +1 + + +-1 100 +0.1 + + +-1.0 2.0 +0.1 + + +0 45 +1 + + +-45 0 +1 + + +0.0 2.0 +0.1 + + +1.0 5.0 +0.2 + + +0.1 1.0 +0.1 + + +-5 40 +1 + + +0.0 20.0 +0.1 +m/s +meters per second + + +-2.0 2.0 +0.1 +m/s/m +meters per second per meter + + +0.1 1.0 +0.1 + + +0.0 0.5 +0.02 + + +0.0 0.5 +0.02 + + +0.1 1.0 +0.1 + + + +Disable +Enable + + + + + + +Disable +Enable + + + +1 +m +meters + + + + + +None +RateRollPI +RateRollP +RateRollI +RateRollD +RatePitchPI +RatePitchP +RatePitchI +RatePitchD +RateYawPI +RateYawP +RateYawI +RateYawD +AngleRollP +AnglePitchP +AngleYawP +PosXYP +PosZP +VelXYP +VelXYI +VelZP +AccelZP +AccelZI +AccelZD +FixedWingRollP +FixedWingRollI +FixedWingRollD +FixedWingRollFF +FixedWingPitchP +FixedWingPitchI +FixedWingPitchD +FixedWingPitchFF +Set_RateRollPitch +Set_RateRoll +Set_RatePitch +Set_RateYaw +Set_AngleRollPitch +Set_VelXY +Set_AccelZ + + + + +Disable +Chan5 +Chan6 +Chan7 +Chan8 +Chan9 +Chan10 +Chan11 +Chan12 +Chan13 +Chan14 +Chan15 +Chan16 + + + +900 2100 + + +900 2100 + + + +Disable +Chan1 +Chan3 +Chan3 +Chan4 +Chan5 +Chan6 +Chan7 +Chan8 +Chan9 +Chan10 +Chan11 +Chan12 +Chan13 +Chan14 +Chan15 +Chan16 + + + + + + +Disable +Enable + + + +0 1 + + + + +0 4 +0.25 + + +0 2 +0.25 + + +0 2 +0.25 + + +0.8 1.2 +0.05 + + +0 4500 +1 + + + diff --git a/src/FirmwarePlugin/APM/APMParameterFactMetaData.Plane.3.8.xml b/src/FirmwarePlugin/APM/APMParameterFactMetaData.Plane.3.8.xml new file mode 100644 index 0000000..bb5209c --- /dev/null +++ b/src/FirmwarePlugin/APM/APMParameterFactMetaData.Plane.3.8.xml @@ -0,0 +1,8268 @@ + + + + + + + + +True + + +1 255 + + +1 255 + + + +Disabled +Enabled + + + +1 10 +1 + + +0 30 +1 +s +seconds + + +0:Roll,1:Pitch,2:Yaw,3:Steering,4:Landing + + +0 1 +0.01 + + +0 5 +0.01 + + +0 15 +0.1 +deg +degrees + + +0 1000 +1 +m +meters + + +0 100 +1 +m +meters + + + +Disabled +FBWMixing +DirectMixing + + + + +Disabled +Enabled + + + +0 30 +0.1 +m/s +meters per second + + +0 30 +0.1 +m/s/s +meters per square second + + +0 127 +1 +ds +deciseconds + + +-100 100 +1 +% +percent + + +0 30 +0.1 +m/s +meters per second + + +0 30 +0.1 +m/s +meters per second + + +0 127 +1 +%/s +percent per second + + +0 10 +0.5 +s +seconds + + +0 100 +% +percent + + + + +0 45 +1 +deg +degrees + + +0:AUTO_ALWAYS,1:AUTO_LAND,2:AUTO_LOITER_TO_ALT,3:AUTO_LOITER_ALL,4:AUTO_WAYPOINTS,5:LOITER,6:RTL,7:CIRCLE,8:CRUISE,9:FBWB,10:GUIDED + + + +Default +L1Controller + + + + +Automatic + + + +-32767 32767 +1 +m +meters + + +1 32767 +1 +m +meters + + +0 32767 +1 +m +meters + + +-32767 32767 +1 +m +meters + + +-32767 32767 +1 +m +meters + + + +None +GuidedMode +ReportOnly +GuidedModeThrPass +RTL_Mode + + + + + + + +0 32767 +1 +m +meters + + +0 32767 +1 +m +meters + + +0 32767 +1 +m +meters + + + +NoAutoEnable +AutoEnable +AutoEnableDisableFloorOnly + + + + +FenceReturnPoint +NearestRallyPoint + + + + +Disabled +Enabled + + + +5 100 +1 +m/s +meters per second + + +5 100 +1 +m/s +meters per second + + + +Disabled +Enabled + + + + +Disabled +Enabled + + + +0 10000 +m +meters + + +1 10 +0.1 +m/s +meters per second + + +-100 100 +1 +% +percent + + +0 100 +1 +% +percent + + +0 100 +1 +% +percent + + +0 127 +1 +%/s +percent per second + + +0 100 +1 +%/s +percent per second + + + +Disabled +Enabled + + + + +Disabled +Enabled + + + + +Disabled +Enabled + + + +925 2200 +1 + + +0 100 +1 +% +percent + + + +Disabled +Enabled + + + + +CIRCLE/no change(if already in AUTO|GUIDED|LOITER) +CIRCLE +FBWA + + + +1 100 +0.5 +s +seconds + + + +Continue +ReturnToLaunch +Glide +Deploy Parachute + + + +1 300 +0.5 +s +seconds + + +0.1 +V +volt + + +50 +mA.h +milliampere hour + + + +Disabled +Heartbeat +HeartbeatAndREMRSSI +HeartbeatAndAUTO + + + + + + +Manual +CIRCLE +STABILIZE +TRAINING +ACRO +FBWA +FBWB +CRUISE +AUTOTUNE +Auto +RTL +Loiter +AVOID_ADSB +Guided +QSTABILIZE +QHOVER +QLOITER +QLAND +QRTL + + + + +Manual +CIRCLE +STABILIZE +TRAINING +ACRO +FBWA +FBWB +CRUISE +AUTOTUNE +Auto +RTL +Loiter +AVOID_ADSB +Guided +QSTABILIZE +QHOVER +QLOITER +QLAND +QRTL + + + + +Manual +CIRCLE +STABILIZE +TRAINING +ACRO +FBWA +FBWB +CRUISE +AUTOTUNE +Auto +RTL +Loiter +AVOID_ADSB +Guided +QSTABILIZE +QHOVER +QLOITER +QLAND +QRTL + + + + +Manual +CIRCLE +STABILIZE +TRAINING +ACRO +FBWA +FBWB +CRUISE +AUTOTUNE +Auto +RTL +Loiter +AVOID_ADSB +Guided +QSTABILIZE +QHOVER +QLOITER +QLAND +QRTL + + + + +Manual +CIRCLE +STABILIZE +TRAINING +ACRO +FBWA +FBWB +CRUISE +AUTOTUNE +Auto +RTL +Loiter +AVOID_ADSB +Guided +QSTABILIZE +QHOVER +QLOITER +QLAND +QRTL + + + + +Manual +CIRCLE +STABILIZE +TRAINING +ACRO +FBWA +FBWB +CRUISE +AUTOTUNE +Auto +RTL +Loiter +AVOID_ADSB +Guided +QSTABILIZE +QHOVER +QLOITER +QLAND +QRTL + + + + +Manual +CIRCLE +STABILIZE +TRAINING +ACRO +FBWA +FBWB +CRUISE +AUTOTUNE +Auto +RTL +Loiter +AVOID_ADSB +Guided +QSTABILIZE +QHOVER +QLOITER +QLAND +QRTL + + + +0 9000 +1 +cdeg +centidegrees + + +0 9000 +1 +cdeg +centidegrees + + +-9000 0 +1 +cdeg +centidegrees + + +10 500 +1 +deg/s +degrees per second + + +10 500 +1 +deg/s +degrees per second + + + +Disabled +Enabled + + + +-100 100 +0.1 +m +meters + + +10 360 +1 +deg/s +degrees per second + + + +Disabled +Enabled + + + +0.5 1.2 + + + +Disabled +Enabled + + + +-1000 1000 +d% +decipercent + + +-100 100 +% +percent + + +True + + +0:ATTITUDE_FAST,1:ATTITUDE_MED,2:GPS,3:PM,4:CTUN,5:NTUN,6:MODE,7:IMU,8:CMD,9:CURRENT,10:COMPASS,11:TECS,12:CAMERA,13:RC,14:SONAR,15:ARM/DISARM,19:IMU_RAW + +Disabled +PX4/Pixhawk-Default + + + + + + + +cm/s +centimeters per second + + +m/s +meters per second + + +cm/s +centimeters per second + + +cdeg +centidegrees + + +cm +centimeters + + +cm +centimeters + + + +Disabled +Enabled + + + + + +0 100 +% +percent + + +0 100 +1 +m/s +meters per second + + +0 100 +% +percent + + +0 100 +1 +m/s +meters per second + + + + + + + +Disabled +Channel1 +Channel2 +Channel3 +Channel4 +Channel5 +Channel6 +Channel7 +Channel8 + + + + +Disabled +Enabled + +True + + + +Disabled +Enabled + + + +0 90 +0.1 +deg +degrees + + + +Disable +Enable - go HOME then land +Enable - go directly to landing sequence + + + +10 127 +m/s/s +meters per square second + + +0:Disarm + + + + + +Disabled +Enabled + + + + +NotEnforced +Enforced + + + +0 100 +1 +% +percent + + +0:Chan1,1:Chan2,2:Chan3,3:Chan4,4:Chan5,5:Chan6,6:Chan7,7:Chan8,8:Chan9,9:Chan10,10:Chan11,11:Chan12,12:Chan13,13:Chan14,14:Chan15,15:Chan16 + + + + + +Disabled +Enabled + + + +1 100 + + +1 100000 + + +-1 16777215 + + + +NoInfo +Light +Small +Large +HighVortexlarge +Heavy +HighlyManuv +Rotocraft +RESERVED +Glider +LightAir +Parachute +UltraLight +RESERVED +UAV +Space +RESERVED +EmergencySurface +ServiceSurface +PointObstacle + + + + +NO_DATA +L15W23 +L25W28P5 +L25W34 +L35W33 +L35W38 +L45W39P5 +L45W45 +L55W45 +L55W52 +L65W59P5 +L65W67 +L75W72P5 +L75W80 +L85W80 +L85W90 + + + + +NoData +Left2m +Left4m +Left6m +Center +Right2m +Right4m +Right6m + + + + +NO_DATA +AppliedBySensor + + + + +Disabled +Rx-Only +Tx-Only +Rx and Tx Enabled + + + + + + + + + + + + + + + + + + + + + +m +meters + + +m +meters + + +mbar +millibar + + + + + + + + + + + + + + +s +seconds + + + + +0.0 1.0 +.01 + + + +Disabled +Enabled + + + +0.1 0.4 +.01 + + +0.1 0.4 +.01 + + +0 127 +1 +m/s +meters per second + + +-0.1745 +0.1745 +0.01 +rad +radians + + +-0.1745 +0.1745 +0.01 +rad +radians + + +-0.1745 +0.1745 +0.01 +rad +radians + + + +None +Yaw45 +Yaw90 +Yaw135 +Yaw180 +Yaw225 +Yaw270 +Yaw315 +Roll180 +Roll180Yaw45 +Roll180Yaw90 +Roll180Yaw135 +Pitch180 +Roll180Yaw225 +Roll180Yaw270 +Roll180Yaw315 +Roll90 +Roll90Yaw45 +Roll90Yaw90 +Roll90Yaw135 +Roll270 +Roll270Yaw45 +Roll270Yaw90 +Roll270Yaw136 +Pitch90 +Pitch270 +Pitch180Yaw90 +Pitch180Yaw270 +Roll90Pitch90 +Roll180Pitch90 +Roll270Pitch90 +Roll90Pitch180 +Roll270Pitch180 +Roll90Pitch270 +Roll180Pitch270 +Roll270Pitch270 +Roll90Pitch180Yaw90 +Roll90Yaw270 + + + +0.001 0.5 +.01 + + +0 10 +1 + + + +Disabled +Enable EKF2 +Enable EKF3 + + + + + + +Disabled +ArmingOnly +ArmOrDisarm + + + + +Disabled +THR_MIN PWM when disarmed +0 PWM when disarmed + + + +0:All,1:Barometer,2:Compass,3:GPS lock,4:INS,5:Parameters,6:RC,7:Board voltage,8:Battery Level,9:Airspeed,10:Logging Available,11:Hardware safety switch,12:GPS Configuration + +None +All +Barometer +Compass +GPS Lock +INS(INertial Sensors - accels & gyros) +Parameters(unused) +RC Failsafe +Board voltage +Battery Level +Airspeed +LoggingAvailable +Hardware safety switch +GPS configuration + + + +0.25 3.0 +m/s/s +meters per square second + + +0.1 +V +volt + + +0.1 +V +volt + + + + + +None +I2C-MS4525D0 +Analog +I2C-MS5525 +I2C-MS5525 (0x76) +I2C-MS5525 (0x77) +I2C-SDP3X + + + + +Don't Use +use +UseWhenZeroThrottle + + + +0.1 + + +0.1 + + + + + + + + + +Disable +Enable + + + + + + +Bus0(internal) +Bus1(external) +Bus2(auxillary) + + + + +FirstSensor +2ndSensor + + + + +None +I2C-MS4525D0 +Analog +I2C-MS5525 +I2C-SDP3X + + + + +Don't Use +use +UseWhenZeroThrottle + + + +0.1 + + +0.1 + + + + + + + + + +Disable +Enable + + + + + + +Bus0(internal) +Bus1(external) +Bus2(auxillary) + + + + + + +Disabled +Enabled + + + + +Remain in AVOID_ADSB +Resume previous flight mode +RTL +Resume if AUTO else Loiter + + + + + +s +seconds + + +s +seconds + + +m +meters + + +m +meters + + +m +meters + + +m +meters + + + + + +Disabled +Analog Voltage Only +Analog Voltage and Current +Solo +Bebop +SMBus-Maxell + + + + +Disabled +A0 +A1 +Pixhawk/Pixracer/Navio2/Pixhawk2_PM1 +Pixhawk2_PM2 +PX4-v1 + + + + +Disabled +A1 +A2 +Pixhawk/Pixracer/Navio2/Pixhawk2_PM1 +Pixhawk2_PM2 +PX4-v1 + + + + + +A/V +ampere per volt + + +V +volt + + +50 +mA.h +milliampere hour + + +1 +W +watt + + + + + +Disabled +Analog Voltage Only +Analog Voltage and Current +Solo +Bebop +SMBus-Maxell + + + + +Disabled +A0 +A1 +Pixhawk/Pixracer/Navio2/Pixhawk2_PM1 +Pixhawk2_PM2 +PX4-v1 + + + + +Disabled +A1 +A2 +Pixhawk/Pixracer/Navio2/Pixhawk2_PM1 +Pixhawk2_PM2 +PX4-v1 + + + + + +A/V +ampere per volt + + +V +volt + + +50 +mA.h +milliampere hour + + +1 +A +ampere + + + + +0 120 +1 +s +seconds + + + +Raw Voltage +Sag Compensated Voltage + + + + + + +No PWMs +Two PWMs +Four PWMs +Six PWMs +Three PWMs and One Capture + +True + + + +Disabled +Enabled +Auto + +True + + + +Disabled +Enabled +Auto + +True + + + +Disabled +Enabled + +True + + + +Disabled +50Hz +75Hz +100Hz +150Hz +200Hz +250Hz +300Hz + +True + + +-32768 32767 + + +0:Ch1,1:Ch2,2:Ch3,3:Ch4,4:Ch5,5:Ch6,6:Ch7,7:Ch8,8:Ch9,9:Ch10,10:Ch11,11:Ch12,12:Ch13,13:Ch14 + +Disabled +Enabled + +True + + +-1 80 +degC +degrees Celsius + + + +AUTO +PX4V1 +Pixhawk +Pixhawk2 +Pixracer +PixhawkMini +Pixhawk2Slim +VRBrain 5.1 +VRBrain 5.2 +VR Micro Brain 5.1 +VR Micro Brain 5.2 +VRBrain Core 1.0 +VRBrain 5.4 +Intel Aero FC +AUAV2.1 + +True + + + +Disabled +Enabled + +True + + +0:ActiveForSafetyEnable,1:ActiveForSafetyDisable,2:ActiveWhenDisarmed + + + + + +Disabled +Enabled + + + + +Disabled +Pixhawk AUXOUT1 +Pixhawk AUXOUT2 +Pixhawk AUXOUT3 +Pixhawk AUXOUT4 +Pixhawk AUXOUT5 +Pixhawk AUXOUT6 +PX4 FMU Relay1 +PX4 FMU Relay2 +PX4IO Relay1 +PX4IO Relay2 +PX4IO ACC1 +PX4IO ACC2 + + + + +Disabled +Pixhawk AUXOUT1 +Pixhawk AUXOUT2 +Pixhawk AUXOUT3 +Pixhawk AUXOUT4 +Pixhawk AUXOUT5 +Pixhawk AUXOUT6 +PX4 FMU Relay1 +PX4 FMU Relay2 +PX4IO Relay1 +PX4IO Relay2 +PX4IO ACC1 +PX4IO ACC2 + + + + +Disabled +Pixhawk AUXOUT1 +Pixhawk AUXOUT2 +Pixhawk AUXOUT3 +Pixhawk AUXOUT4 +Pixhawk AUXOUT5 +Pixhawk AUXOUT6 +PX4 FMU Relay1 +PX4 FMU Relay2 +PX4IO Relay1 +PX4IO Relay2 +PX4IO ACC1 +PX4IO ACC2 + + + + +Disabled +Pixhawk AUXOUT1 +Pixhawk AUXOUT2 +Pixhawk AUXOUT3 +Pixhawk AUXOUT4 +Pixhawk AUXOUT5 +Pixhawk AUXOUT6 +PX4 FMU Relay1 +PX4 FMU Relay2 +PX4IO Relay1 +PX4IO Relay2 +PX4IO ACC1 +PX4IO ACC2 + + + +0 3600 + + + + + +Servo +Relay + + + +0 50 +ds +deciseconds + + +1000 2000 +PWM +PWM in microseconds + + +1000 2000 +PWM +PWM in microseconds + + +0 1000 +m +meters + + + +Low +High + + + +0 10000 +ms +milliseconds + + +0 180 +deg +degrees + + + +Disabled +PX4 AUX1 +PX4 AUX2 +PX4 AUX3 +PX4 AUX4(fast capture) +PX4 AUX5 +PX4 AUX6 + + + + +TriggerLow +TriggerHigh + + + + + + +Disabled +First driver +Second driver + +True + + +10000 1000000 + + + +Disabled +Major messages +All messages + + + + +Disabled +UAVCAN + +True + + + + +1 250 + + +0: Servo 1, 1: Servo 2, 2: Servo 3, 3: Servo 4, 4: Servo 5, 5: Servo 6, 6: Servo 7, 7: Servo 8, 8: Servo 9, 9: Servo 10, 10: Servo 11, 11: Servo 12, 12: Servo 13, 13: Servo 14, 14: Servo 15 + + +0: ESC 1, 1: ESC 2, 2: ESC 3, 3: ESC 4, 4: ESC 5, 5: ESC 6, 6: ESC 7, 7: ESC 8, 8: ESC 9, 9: ESC 10, 10: ESC 11, 11: ESC 12, 12: ESC 13, 13: ESC 14, 14: ESC 15, 15: ESC 16 + + + + + +Disabled +First driver +Second driver + +True + + +10000 1000000 + + + +Disabled +Major messages +All messages + + + + +Disabled +UAVCAN + +True + + + + +1 250 + + +0: Servo 1, 1: Servo 2, 2: Servo 3, 3: Servo 4, 4: Servo 5, 5: Servo 6, 6: Servo 7, 7: Servo 8, 8: Servo 9, 9: Servo 10, 10: Servo 11, 11: Servo 12, 12: Servo 13, 13: Servo 14, 14: Servo 15 + + +0: ESC 1, 1: ESC 2, 2: ESC 3, 3: ESC 4, 4: ESC 5, 5: ESC 6, 6: ESC 7, 7: ESC 8, 8: ESC 9, 9: ESC 10, 10: ESC 11, 11: ESC 12, 12: ESC 13, 13: ESC 14, 14: ESC 15, 15: ESC 16 + + + + + +Disabled +First driver +Second driver + +True + + +10000 1000000 + + + +Disabled +Major messages +All messages + + + + +Disabled +UAVCAN + +True + + + + +1 250 + + +0: Servo 1, 1: Servo 2, 2: Servo 3, 3: Servo 4, 4: Servo 5, 5: Servo 6, 6: Servo 7, 7: Servo 8, 8: Servo 9, 9: Servo 10, 10: Servo 11, 11: Servo 12, 12: Servo 13, 13: Servo 14, 14: Servo 15 + + +0: ESC 1, 1: ESC 2, 2: ESC 3, 3: ESC 4, 4: ESC 5, 5: ESC 6, 6: ESC 7, 7: ESC 8, 8: ESC 9, 9: ESC 10, 10: ESC 11, 11: ESC 12, 12: ESC 13, 13: ESC 14, 14: ESC 15, 15: ESC 16 + + + + + +Disabled +First driver +Second driver + +True + + +10000 1000000 + + + +Disabled +Major messages +All messages + + + + +Disabled +UAVCAN + +True + + + + +1 250 + + +0: Servo 1, 1: Servo 2, 2: Servo 3, 3: Servo 4, 4: Servo 5, 5: Servo 6, 6: Servo 7, 7: Servo 8, 8: Servo 9, 9: Servo 10, 10: Servo 11, 11: Servo 12, 12: Servo 13, 13: Servo 14, 14: Servo 15 + + +0: ESC 1, 1: ESC 2, 2: ESC 3, 3: ESC 4, 4: ESC 5, 5: ESC 6, 6: ESC 7, 7: ESC 8, 8: ESC 9, 9: ESC 10, 10: ESC 11, 11: ESC 12, 12: ESC 13, 13: ESC 14, 14: ESC 15, 15: ESC 16 + + + + + +Disabled +First driver +Second driver + +True + + +10000 1000000 + + + +Disabled +Major messages +All messages + + + + +Disabled +UAVCAN + +True + + + + +1 250 + + +0: Servo 1, 1: Servo 2, 2: Servo 3, 3: Servo 4, 4: Servo 5, 5: Servo 6, 6: Servo 7, 7: Servo 8, 8: Servo 9, 9: Servo 10, 10: Servo 11, 11: Servo 12, 12: Servo 13, 13: Servo 14, 14: Servo 15 + + +0: ESC 1, 1: ESC 2, 2: ESC 3, 3: ESC 4, 4: ESC 5, 5: ESC 6, 6: ESC 7, 7: ESC 8, 8: ESC 9, 9: ESC 10, 10: ESC 11, 11: ESC 12, 12: ESC 13, 13: ESC 14, 14: ESC 15, 15: ESC 16 + + + + + +Disabled +First driver +Second driver + +True + + +10000 1000000 + + + +Disabled +Major messages +All messages + + + + +Disabled +UAVCAN + +True + + + + +1 250 + + +0: Servo 1, 1: Servo 2, 2: Servo 3, 3: Servo 4, 4: Servo 5, 5: Servo 6, 6: Servo 7, 7: Servo 8, 8: Servo 9, 9: Servo 10, 10: Servo 11, 11: Servo 12, 12: Servo 13, 13: Servo 14, 14: Servo 15 + + +0: ESC 1, 1: ESC 2, 2: ESC 3, 3: ESC 4, 4: ESC 5, 5: ESC 6, 6: ESC 7, 7: ESC 8, 8: ESC 9, 9: ESC 10, 10: ESC 11, 11: ESC 12, 12: ESC 13, 13: ESC 14, 14: ESC 15, 15: ESC 16 + + + + + +Disabled +Enabled + + + + +First Relay +Second Relay +Third Relay +Fourth Relay +Servo + + + +1000 2000 +1 +PWM +PWM in microseconds + + +1000 2000 +1 +PWM +PWM in microseconds + + +0 32000 +1 +m +meters + + +0 5000 +1 +ms +milliseconds + + + + +-400 400 +1 +mGauss +milligauss + + +-400 400 +1 +mGauss +milligauss + + +-400 400 +1 +mGauss +milligauss + + +-3.142 3.142 +0.01 +rad +radians + + + +Disabled +Internal-Learning +EKF-Learning + + + + +Disabled +Enabled + + + + +Disabled +Enabled + + + + +Disabled +Use Throttle +Use Current + + + +-1000 1000 +1 +mGauss/A +milligauss per ampere + + +-1000 1000 +1 +mGauss/A +milligauss per ampere + + +-1000 1000 +1 +mGauss/A +milligauss per ampere + + + +None +Yaw45 +Yaw90 +Yaw135 +Yaw180 +Yaw225 +Yaw270 +Yaw315 +Roll180 +Roll180Yaw45 +Roll180Yaw90 +Roll180Yaw135 +Pitch180 +Roll180Yaw225 +Roll180Yaw270 +Roll180Yaw315 +Roll90 +Roll90Yaw45 +Roll90Yaw90 +Roll90Yaw135 +Roll270 +Roll270Yaw45 +Roll270Yaw90 +Roll270Yaw136 +Pitch90 +Pitch270 +Pitch180Yaw90 +Pitch180Yaw270 +Roll90Pitch90 +Roll180Pitch90 +Roll270Pitch90 +Roll90Pitch180 +Roll270Pitch180 +Roll90Pitch270 +Roll180Pitch270 +Roll270Pitch270 +Roll90Pitch180Yaw90 +Roll90Yaw270 +Yaw293Pitch68Roll90 + + + + +Internal +External +ForcedExternal + + + +-400 400 +1 +mGauss +milligauss + + +-400 400 +1 +mGauss +milligauss + + +-400 400 +1 +mGauss +milligauss + + +-1000 1000 +1 +mGauss/A +milligauss per ampere + + +-1000 1000 +1 +mGauss/A +milligauss per ampere + + +-1000 1000 +1 +mGauss/A +milligauss per ampere + + + +FirstCompass +SecondCompass +ThirdCompass + + + +-400 400 +1 +mGauss +milligauss + + +-400 400 +1 +mGauss +milligauss + + +-400 400 +1 +mGauss +milligauss + + +-1000 1000 +1 +mGauss/A +milligauss per ampere + + +-1000 1000 +1 +mGauss/A +milligauss per ampere + + +-1000 1000 +1 +mGauss/A +milligauss per ampere + + + + + + + + + +Disabled +Enabled + + + + +None +Yaw45 +Yaw90 +Yaw135 +Yaw180 +Yaw225 +Yaw270 +Yaw315 +Roll180 +Roll180Yaw45 +Roll180Yaw90 +Roll180Yaw135 +Pitch180 +Roll180Yaw225 +Roll180Yaw270 +Roll180Yaw315 +Roll90 +Roll90Yaw45 +Roll90Yaw90 +Roll90Yaw135 +Roll270 +Roll270Yaw45 +Roll270Yaw90 +Roll270Yaw136 +Pitch90 +Pitch270 +Pitch180Yaw90 +Pitch180Yaw270 +Roll90Pitch90 +Roll180Pitch90 +Roll270Pitch90 +Roll90Pitch180 +Roll270Pitch180 +Roll90Pitch270 +Roll180Pitch270 +Roll270Pitch270 +Roll90Pitch180Yaw90 +Roll90Yaw270 +Yaw293Pitch68Roll90 + + + + +Internal +External +ForcedExternal + + + + +Disabled +Enabled + + + + +None +Yaw45 +Yaw90 +Yaw135 +Yaw180 +Yaw225 +Yaw270 +Yaw315 +Roll180 +Roll180Yaw45 +Roll180Yaw90 +Roll180Yaw135 +Pitch180 +Roll180Yaw225 +Roll180Yaw270 +Roll180Yaw315 +Roll90 +Roll90Yaw45 +Roll90Yaw90 +Roll90Yaw135 +Roll270 +Roll270Yaw45 +Roll270Yaw90 +Roll270Yaw136 +Pitch90 +Pitch270 +Pitch180Yaw90 +Pitch180Yaw270 +Roll90Pitch90 +Roll180Pitch90 +Roll270Pitch90 +Roll90Pitch180 +Roll270Pitch180 +Roll90Pitch270 +Roll180Pitch270 +Roll270Pitch270 +Roll90Pitch180Yaw90 +Roll90Yaw270 +Yaw293Pitch68Roll90 + + + + +Internal +External +ForcedExternal + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +4 32 + +Very Strict +Strict +Default +Relaxed + +0.1 + + +500 3000 +1 + + +0:HMC5883,1:LSM303D,2:AK8963,3:BMM150,4:LSM9DS1,5:LIS3MDL,6:AK09916,7:IST8310,8:ICM20948,9:MMC3416,10:QFLIGHT,11:UAVCAN,12:QMC5883 + + + + + +Disabled +Enabled + +True + + + +GPS 3D Vel and 2D Pos +GPS 2D vel and 2D pos +GPS 2D pos +No GPS + + + +0.05 5.0 +0.05 +m/s +meters per second + + +0.05 5.0 +0.05 +m/s +meters per second + + +100 1000 +25 + + +0.1 10.0 +0.1 +m +meters + + +100 1000 +25 + + +10 100 +5 +m +meters + + +0 250 +10 +ms +milliseconds +True + + + +Use Baro +Use Range Finder +Use GPS +Use Range Beacon + + + +0.1 10.0 +0.1 +m +meters + + +100 1000 +25 + + +0 250 +10 +ms +milliseconds +True + + +0.01 0.5 +0.01 +Gauss +gauss + + + +When flying +When manoeuvring +Never +After first climb yaw reset +Always + + + +100 1000 +25 + + +0.5 5.0 +0.1 +m/s +meters per second + + +100 1000 +25 + + +0.1 10.0 +0.1 +m +meters + + +100 1000 +25 + + +1.0 4.0 +0.1 +rad/s +radians per second + + +0.05 1.0 +0.05 +rad/s +radians per second + + +100 1000 +25 + + +0 127 +10 +ms +milliseconds +True + + +0.0001 0.1 +0.0001 +rad/s +radians per second + + +0.01 1.0 +0.01 +m/s/s +meters per square second + + +0.00001 0.001 +rad/s/s +radians per square second + + +0.000001 0.001 +Hz +hertz + + +0.00001 0.001 +m/s/s/s +meters per cubic second + + +0.01 1.0 +0.1 +m/s/s +meters per square second + + +0.0 1.0 +0.1 + + +0:NSats,1:HDoP,2:speed error,3:position error,4:yaw error,5:pos drift,6:vert speed,7:horiz speed + + +0:FirstIMU,1:SecondIMU,2:ThirdIMU,3:FourthIMU,4:FifthIMU,5:SixthIMU +True + + +50 200 +% +percent + + +0.5 50.0 +m +meters + + +0:FirstIMU,1:SecondIMU,2:ThirdIMU,3:FourthIMU,4:FifthIMU,5:SixthIMU +True + + +0.05 1.0 +0.05 +rad +radians + + +100 1000 +25 + + +10 50 +5 +cs +centiseconds + + +0.00001 0.01 +Gauss/s +gauss per second + + +0.00001 0.01 +Gauss/s +gauss per second + + +-1 70 +1 +% +percent + + +0 0.2 +0.01 + + +0.1 10.0 +0.1 +m +meters + + +100 1000 +25 + + +0 127 +10 +ms +milliseconds +True + + +2.0 6.0 +0.5 +m/s +meters per second + + +0:FirstEKF,1:SecondEKF,2:ThirdEKF,3:FourthEKF,4:FifthEKF,5:SixthEKF +True + + +0:Correct when using Baro height,1:Correct when using range finder height,2:Apply corrections to local position +True + + + + + +Disabled +Enabled + +True + + + +GPS 3D Vel and 2D Pos +GPS 2D vel and 2D pos +GPS 2D pos +No GPS + + + +0.05 5.0 +0.05 +m/s +meters per second + + +0.05 5.0 +0.05 +m/s +meters per second + + +100 1000 +25 + + +0.1 10.0 +0.1 +m +meters + + +100 1000 +25 + + +10 100 +5 +m +meters + + + +Use Baro +Use Range Finder +Use GPS +Use Range Beacon + +True + + +0.1 10.0 +0.1 +m +meters + + +100 1000 +25 + + +0 250 +10 +ms +milliseconds +True + + +0.01 0.5 +0.01 +Gauss +gauss + + + +When flying +When manoeuvring +Never +After first climb yaw reset +Always + +True + + +100 1000 +25 + + +0.5 5.0 +0.1 +m/s +meters per second + + +100 1000 +25 + + +0.1 10.0 +0.1 +m +meters + + +100 1000 +25 + + +1.0 4.0 +0.1 +rad/s +radians per second + + +0.05 1.0 +0.05 +rad/s +radians per second + + +100 1000 +25 + + +0 250 +10 +ms +milliseconds +True + + +0.0001 0.1 +0.0001 +rad/s +radians per second + + +0.01 1.0 +0.01 +m/s/s +meters per square second + + +0.00001 0.001 +rad/s/s +radians per square second + + +0.00001 0.001 +m/s/s/s +meters per cubic second + + +0.01 1.0 +0.1 +m/s/s +meters per square second + + +0.0 1.0 +0.1 + + +0:NSats,1:HDoP,2:speed error,3:position error,4:yaw error,5:pos drift,6:vert speed,7:horiz speed + + +0:FirstIMU,1:SecondIMU,2:ThirdIMU,3:FourthIMU,4:FifthIMU,5:SixthIMU +True + + +50 200 +% +percent + + +0.5 50.0 +m +meters + + +0:FirstIMU,1:SecondIMU,2:ThirdIMU,3:FourthIMU,4:FifthIMU,5:SixthIMU +True + + +0.05 1.0 +0.05 +rad +radians + + +100 1000 +25 + + +10 50 +5 +cs +centiseconds + + +0.00001 0.01 +Gauss/s +gauss per second + + +0.00001 0.01 +Gauss/s +gauss per second + + +-1 70 +1 +% +percent + + +0 0.2 +0.01 + + +0.1 10.0 +0.1 +m +meters + + +100 1000 +25 + + +0 250 +10 +ms +milliseconds +True + + +2.0 6.0 +0.5 +m/s +meters per second + + +0.5 2.5 +0.1 +m/s/s +meters per square second + + +0:FirstEKF,1:SecondEKF,2:ThirdEKF,3:FourthEKF,4:FifthEKF,5:SixthEKF +True + + +0:Correct when using Baro height,1:Correct when using range finder height,2:Apply corrections to local position +True + + +0.05 0.5 +0.05 +m/s +meters per second + + +0.5 5.0 +0.1 +m/s +meters per second + + +0.01 1.0 +0.1 +m/s +meters per second + + + + + +Disabled +Enabled + + + +-200 +200 +1 + + +-200 +200 +1 + + +-18000 +18000 +1 + + +m +meters + + +m +meters + + +m +meters + + +0 127 + + + + +True +True +1 +Pa +pascal + + +True +1 +degC +degrees Celsius + + +0.1 +m +meters + + + +FirstBaro +2ndBaro +3rdBaro + + + + +Disabled +Bus0 +Bus1 + + + +1.0:Freshwater,1.024:Saltwater + + +True +True +1 +Pa +pascal + + +True +True +1 +Pa +pascal + + + + + +None +AUTO +uBlox +MTK +MTK19 +NMEA +SiRF +HIL +SwiftNav +UAVCAN +SBF +GSOF +QURT +ERB +MAV +NOVA + +True + + + +None +AUTO +uBlox +MTK +MTK19 +NMEA +SiRF +HIL +SwiftNav +UAVCAN +SBF +GSOF +QURT +ERB +MAV +NOVA + +True + + + +Portable +Stationary +Pedestrian +Automotive +Sea +Airborne1G +Airborne2G +Airborne4G + + + + +Disabled +UseBest +Blend + + + + +Any +FloatRTK +IntegerRTK + +True + + + +Disabled +Enabled +NoChange + + + +-100 90 +deg +degrees + + + +send to first GPS +send to 2nd GPS +send to all + + + + +None (0x0000) +All (0xFFFF) +External only (0xFF00) + + + + +Disabled +log every sample +log every 5 samples + +True + + +0:GPS,1:SBAS,2:Galileo,3:Beidou,4:IMES,5:QZSS,6:GLOSNASS + +Leave as currently configured +GPS-NoSBAS +GPS+SBAS +Galileo-NoSBAS +Galileo+SBAS +Beidou +GPS+IMES+QZSS+SBAS (Japan Only) +GLONASS +GLONASS+SBAS +GPS+GLONASS+SBAS + + + + +Do not save config +Save config +Save only when needed + + + +0:GPS,1:SBAS,2:Galileo,3:Beidou,4:IMES,5:QZSS,6:GLOSNASS + +Leave as currently configured +GPS-NoSBAS +GPS+SBAS +Galileo-NoSBAS +Galileo+SBAS +Beidou +GPS+IMES+QZSS+SBAS (Japan Only) +GLONASS +GLONASS+SBAS +GPS+GLONASS+SBAS + + + + +Disables automatic configuration +Enable automatic configuration + + + +50 200 + +10Hz +8Hz +5Hz + +ms +milliseconds + + +50 200 + +10Hz +8Hz +5Hz + +ms +milliseconds + + +m +meters + + +m +meters + + +m +meters + + +m +meters + + +m +meters + + +m +meters + + +0 250 +ms +milliseconds +True + + +0 250 +ms +milliseconds +True + + +0:Horiz Pos,1:Vert Pos,2:Speed + + +5.0 30.0 +s +seconds + + + + + +Disabled +Enabled + + + + +None +Chan1 +Chan2 +Chan3 +Chan4 +Chan5 +Chan6 +Chan7 +Chan8 +Chan9 +Chan10 +Chan11 +Chan12 +Chan13 +Chan14 +Chan15 +Chan16 + + + +0.1 5 +s +seconds + + +1 10 +s +seconds + + +100 100000 + + +1000 2000 + + +1000 2000 + + +1000 2000 + + +1000 2000 + + + +None +RPM1 +RPM2 + + + +0 100 + + + + + + +rad/s +radians per second + + +rad/s +radians per second + + +rad/s +radians per second + + +rad/s +radians per second + + +rad/s +radians per second + + +rad/s +radians per second + + +rad/s +radians per second + + +rad/s +radians per second + + +rad/s +radians per second + + +0.8 1.2 + + +0.8 1.2 + + +0.8 1.2 + + +-3.5 3.5 +m/s/s +meters per square second + + +-3.5 3.5 +m/s/s +meters per square second + + +-3.5 3.5 +m/s/s +meters per square second + + +0.8 1.2 + + +0.8 1.2 + + +0.8 1.2 + + +-3.5 3.5 +m/s/s +meters per square second + + +-3.5 3.5 +m/s/s +meters per square second + + +-3.5 3.5 +m/s/s +meters per square second + + +0.8 1.2 + + +0.8 1.2 + + +0.8 1.2 + + +-3.5 3.5 +m/s/s +meters per square second + + +-3.5 3.5 +m/s/s +meters per square second + + +-3.5 3.5 +m/s/s +meters per square second + + +0 127 +Hz +hertz + + +0 127 +Hz +hertz + + + +Disabled +Enabled + + + + +Disabled +Enabled + + + + +Disabled +Enabled + + + +0.05 50 + + + +Never +Start-up only + + + + +Don't adjust the trims +Assume first orientation was level +Assume ACC_BODYFIX is perfectly aligned to the vehicle + + + + +IMU 1 +IMU 2 +IMU 3 + + + +m +meters + + +m +meters + + +m +meters + + +m +meters + + +m +meters + + +m +meters + + +m +meters + + +m +meters + + +m +meters + + +True + + +True + + +True + + +True + + +True + + +True + + + + + + +0 5 +0.5 +m +meters + + +0 90 +0.1 +deg +degrees + + +cdeg +centidegrees + + +0.1 +m +meters + + +0.1 +s +seconds + + +0 30 +0.1 +m +meters + + +0 10 +0.1 +s +seconds + + +0 30 +0.1 +m/s +meters per second + + +0 127 +1 +% +percent + + +0 127 +1 +s +seconds + + + +Disabled +Servos to Neutral +Servos to Zero PWM + + + + +Disabled +Enabled + + + +0 100 +% +percent + + + +Standard Glide Slope +Deepstall + + + + + +0 20 +m/s +meters per second + + + + + + +10 200 +m +meters + + +0 20 +m/s +meters per second + + +0 2 +s +seconds + + +900 2100 +PWM +PWM in microseconds + + +5 20 +m/s +meters per second + + +5 20 +m/s +meters per second + + +5 50 +m +meters + + +0 1 + + + + + + + + + + + + + + + +None +File +MAVLink +BothFileAndMAVLink + + + + + + +Disabled +Enabled + + + + +Disabled +Enabled + + + + +Disabled +Enabled + + + + + +0 32766 +1 + + + +Resume Mission +Restart Mission + + + + + + +Retracted +Neutral +MavLink Targeting +RC Targeting +GPS Point + + + +-180.00 179.99 +1 +deg +degrees + + +-180.00 179.99 +1 +deg +degrees + + +-180.00 179.99 +1 +deg +degrees + + +-180.00 179.99 +1 +deg +degrees + + +-180.00 179.99 +1 +deg +degrees + + +-180.00 179.99 +1 +deg +degrees + + + +Disabled +Enabled + + + + +Disabled +Enabled + + + + +Disabled +Enabled + + + + +Disabled +RC5 +RC6 +RC7 +RC8 +RC9 +RC10 +RC11 +RC12 + + + +-18000 17999 +1 +cdeg +centidegrees + + +-18000 17999 +1 +cdeg +centidegrees + + + +Disabled +RC5 +RC6 +RC7 +RC8 +RC9 +RC10 +RC11 +RC12 + + + +-18000 17999 +1 +cdeg +centidegrees + + +-18000 17999 +1 +cdeg +centidegrees + + + +Disabled +RC5 +RC6 +RC7 +RC8 +RC9 +RC10 +RC11 +RC12 + + + +-18000 17999 +1 +cdeg +centidegrees + + +-18000 17999 +1 +cdeg +centidegrees + + +0 100 +1 + + +0.0 0.2 +.005 +s +seconds + + +0.0 0.2 +.005 +s +seconds + + + +None +Servo +3DR Solo +Alexmos Serial +SToRM32 MAVLink +SToRM32 Serial + +True + + + +Retracted +Neutral +MavLink Targeting +RC Targeting +GPS Point + + + +-180.00 179.99 +1 +deg +degrees + + +-180.00 179.99 +1 +deg +degrees + + +-180.00 179.99 +1 +deg +degrees + + +-180.00 179.99 +1 +deg +degrees + + +-180.00 179.99 +1 +deg +degrees + + +-180.00 179.99 +1 +deg +degrees + + + +Disabled +Enabled + + + + +Disabled +Enabled + + + + +Disabled +Enabled + + + + +Disabled +RC5 +RC6 +RC7 +RC8 +RC9 +RC10 +RC11 +RC12 + + + +-18000 17999 +1 +cdeg +centidegrees + + +-18000 17999 +1 +cdeg +centidegrees + + + +Disabled +RC5 +RC6 +RC7 +RC8 +RC9 +RC10 +RC11 +RC12 + + + +-18000 17999 +1 +cdeg +centidegrees + + +-18000 17999 +1 +cdeg +centidegrees + + + +Disabled +RC5 +RC6 +RC7 +RC8 +RC9 +RC10 +RC11 +RC12 + + + +-18000 17999 +1 +cdeg +centidegrees + + +-18000 17999 +1 +cdeg +centidegrees + + +0.0 0.2 +.005 +s +seconds + + +0.0 0.2 +.005 +s +seconds + + + +None +Servo +3DR Solo +Alexmos Serial +SToRM32 MAVLink +SToRM32 Serial + + + + + +1 60 +1 +s +seconds + + +0.6 1.0 +0.05 + + +0 0.1 +0.01 + + +0 89 +deg +degrees + + + + + +Off +Low +Medium +High + + + + +Disable +Enable + + + + +Disable +Enable + + + + +Disable +ssd1306 +sh1106 + + + + +Disabled +Aircraft +Rover + + + + + +0.4 1.0 +0.1 +s +seconds + + +0.1 3.0 +0.1 + + +0 0.1 +0.01 + + +0 0.5 +0.05 + + +0 100 +1 +deg/s +degrees per second + + +0 100 +1 +deg/s +degrees per second + + +0.7 1.5 +0.05 + + +0 4500 +1 + + +0.1 4.0 +0.1 + + + + + +Disable +Enable +Enable VTOL AUTO + + + +1000 8000 +cdeg +centidegrees + + +0 30000 +ms +milliseconds + + +1.000 3.000 + + +0.500 2.000 + + +0.1 6.0 +0.1 + + +0.02 1.00 +0.01 + + +0 4500 +10 +cm/s/s +centimeters per square second + + +1.000 8.000 + + +0.500 1.500 + + +0.000 3.000 + + +0 1000 +d% +decipercent + + +0.000 0.400 + + +1.000 100.000 +Hz +hertz + + +50 500 +10 +cm/s +centimeters per second + + +50 500 +10 +cm/s/s +centimeters per square second + + +50 500 +10 +Hz +hertz + + +800 2200 +1 +Hz +hertz + + +800 2200 +1 +Hz +hertz + + +0 100 +0.1 +m/s +meters per second + + +50 500 +1 +deg/s +degrees per second + + +30 200 +10 +cm/s +centimeters per second + + +0.5 50 +0.1 +m +meters + + +0 30 +1 +deg +degrees + + + +Undefined +Quad +Hexa +Octa +OctaQuad +Y6 +Tri + TailSitter + + + + +Plus +X +V +H +V-Tail +A-Tail +Y6B +Y6F + + + +0 0.5 +0.01 + + +0 1 +0.01 + + +0 10 +0.1 + + +1 200 +1 +m +meters + + + +Disabled +Enabled + + + + + +10 300 +1 +deg/s +degrees per second + + +20 80 +1 +deg +degrees + + + +Disabled +Enabled + + + + +Disabled +ThrottleInput +FullInput + + + +0 10 +0.25 + + + +Disabled +Enabled + + + +0 90 +1 +deg +degrees + + + +Continuous +Binary +VectoredYaw + + + +5 80 + + +10 300 +1 +deg/s +degrees per second + + + +MultiCopterInput +FixedWingInput + + + +0:Aileron,1:Elevator,2:Throttle,3:Rudder + + + +Disabled +Channel1 +Channel2 +Channel3 +Channel4 +Channel5 +Channel6 +Channel7 +Channel8 + + + +0 1 +0.01 + + +0 1 +0.01 + + +0 30 + + +0 4 +0.1 + + + +AUTO +FIXED_WING +QUADROTOR +COAXIAL +HELICOPTER +AIRSHIP +FREE_BALLOON +ROCKET +GROUND_ROVER +SURFACE_BOAT +SUBMARINE +FLAPPING_WING +KITE +VTOL_DUOROTOR +VTOL_QUADROTOR +VTOL_TILTROTOR + + + +0:LevelTransition,1:AllowFWTakeoff,2:AllowFWLand + + +0.2 5 +0.1 +m/s/s +meters per square second + + + + +0.08 0.30 +0.005 + + +0.01 0.5 +0.01 + + +0 1 +0.01 +% +percent + + +0.0 0.02 +0.001 + + +0 0.5 +0.001 + + +1 100 +1 +Hz +hertz + + +0.08 0.30 +0.005 + + +0.01 0.5 +0.01 + + +0 1 +0.01 +% +percent + + +0.0 0.02 +0.001 + + +0 0.5 +0.001 + + +1 100 +1 +Hz +hertz + + +0.10 0.50 +0.005 + + +0.010 0.05 +0.01 + + +0 1 +0.01 +% +percent + + +0.000 0.02 +0.001 + + +0 0.5 +0.001 + + +1 100 +1 +Hz +hertz + + +0.1 0.25 + + +0.5 0.9 + + +0.5 0.9 + + + + +0 500 +PWM +PWM in microseconds + + +0.25 0.8 + + +0.9:Low, 0.95:Default, 1.0:High + + +6 35 +V +volt + + +6 35 +V +volt + + +0 200 +A +ampere + + + +Normal +OneShot +OneShot125 +Brushed + +True + + +0 2000 +PWM +PWM in microseconds + + +0 2000 +PWM +PWM in microseconds + + +0.0:Low, 0.15:Default, 0.3:High + + +0.0:Low, 0.1:Default, 0.2:High + + +0 10 +s +seconds + + +0.2 0.8 + + + +Disabled +Learn +LearnAndSave + + + + +PWM enabled while disarmed +PWM disabled while disarmed + + + +5 80 +1 +deg +degrees + + +0 2 +0.1 +s +seconds + + +0 5 +0.1 + + + + +0.5 5 +0.1 +Hz +hertz + + + + +20 2000 +50 +cm/s +centimeters per second + + +10 1000 +1 +cm +centimeters + + +10 1000 +50 +cm/s +centimeters per second + + +10 500 +10 +cm/s +centimeters per second + + +20 2000 +50 +cm/s +centimeters per second + + +50 500 +10 +cm/s/s +centimeters per square second + + +50 500 +10 +cm/s/s +centimeters per square second + + +500 5000 +1 +cm/s/s/s +centimeters per cubic second + + +100 981 +1 +cm/s/s +centimeters per square second + + +25 250 +1 +cm/s/s +centimeters per square second + + + +Disable +Enable + + + + + + + +0.1 +km +kilometers + + + +DoNotIncludeHome +IncludeHome + + + + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + + +Normal +Reversed + + + +0 200 +PWM +PWM in microseconds + + + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + + +Normal +Reversed + + + +0 200 +PWM +PWM in microseconds + + + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + + +Normal +Reversed + + + +0 200 +PWM +PWM in microseconds + + + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + + +Normal +Reversed + + + +0 200 +PWM +PWM in microseconds + + + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + + +Normal +Reversed + + + +0 200 +PWM +PWM in microseconds + + + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + + +Normal +Reversed + + + +0 200 +PWM +PWM in microseconds + + + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + + +Normal +Reversed + + + +0 200 +PWM +PWM in microseconds + + + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + + +Normal +Reversed + + + +0 200 +PWM +PWM in microseconds + + + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + + +Normal +Reversed + + + +0 200 +PWM +PWM in microseconds + + + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + + +Normal +Reversed + + + +0 200 +PWM +PWM in microseconds + + + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + + +Normal +Reversed + + + +0 200 +PWM +PWM in microseconds + + + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + + +Normal +Reversed + + + +0 200 +PWM +PWM in microseconds + + + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + + +Normal +Reversed + + + +0 200 +PWM +PWM in microseconds + + + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + + +Normal +Reversed + + + +0 200 +PWM +PWM in microseconds + + + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + + +Normal +Reversed + + + +0 200 +PWM +PWM in microseconds + + + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + + +Normal +Reversed + + + +0 200 +PWM +PWM in microseconds + + + + +1 8 +1 +True + + +1 8 +1 +True + + +1 8 +1 +True + + +1 8 +1 +True + + +1 8 +1 +True + + +1 8 +1 +True + + + + + +Disabled +APM2 A9 pin +APM1 relay +Pixhawk AUXOUT1 +Pixhawk AUXOUT2 +Pixhawk AUXOUT3 +Pixhawk AUXOUT4 +Pixhawk AUXOUT5 +Pixhawk AUXOUT6 +PX4 FMU Relay1 +PX4 FMU Relay2 +PX4IO Relay1 +PX4IO Relay2 +PX4IO ACC1 +PX4IO ACC2 + + + + +Disabled +APM2 A9 pin +APM1 relay +Pixhawk AUXOUT1 +Pixhawk AUXOUT2 +Pixhawk AUXOUT3 +Pixhawk AUXOUT4 +Pixhawk AUXOUT5 +Pixhawk AUXOUT6 +PX4 FMU Relay1 +PX4 FMU Relay2 +PX4IO Relay1 +PX4IO Relay2 +PX4IO ACC1 +PX4IO ACC2 + + + + +Disabled +APM2 A9 pin +APM1 relay +Pixhawk AUXOUT1 +Pixhawk AUXOUT2 +Pixhawk AUXOUT3 +Pixhawk AUXOUT4 +Pixhawk AUXOUT5 +Pixhawk AUXOUT6 +PX4 FMU Relay1 +PX4 FMU Relay2 +PX4IO Relay1 +PX4IO Relay2 +PX4IO ACC1 +PX4IO ACC2 + + + + +Disabled +APM2 A9 pin +APM1 relay +Pixhawk AUXOUT1 +Pixhawk AUXOUT2 +Pixhawk AUXOUT3 +Pixhawk AUXOUT4 +Pixhawk AUXOUT5 +Pixhawk AUXOUT6 +PX4 FMU Relay1 +PX4 FMU Relay2 +PX4IO Relay1 +PX4IO Relay2 +PX4IO ACC1 +PX4IO ACC2 + + + + +Off +On +NoChange + + + + + +0.4 1.0 +0.1 +s +seconds + + +0.1 4.0 +0.1 + + +0 0.1 +0.01 + + +0 1.0 +0.05 + + +0 180 +1 +deg/s +degrees per second + + +0 4500 +1 + + +0.1 4.0 +0.1 + + + + + +None +Analog +MaxbotixI2C +LidarLiteV2-I2C +PX4-PWM +BBB-PRU +LightWareI2C +LightWareSerial +Bebop +MAVLink +uLanding +LeddarOne +MaxbotixSerial +TrOneI2C +LidarLiteV3-I2C +VL53L0X + + + + +Not Used +APM2-A0 +APM2-A1 +APM2-A2 +APM2-A3 +APM2-A4 +APM2-A5 +APM2-A6 +APM2-A7 +APM2-A8 +APM2-A9 +PX4-airspeed port +Pixhawk-airspeed port +APM1-airspeed port + + + +0.001 +m/V +meters per volt + + +0.001 +V +volt + + + +Linear +Inverted +Hyperbolic + + + +1 +cm +centimeters + + +1 +cm +centimeters + + + +Not Used +Pixhawk AUXOUT1 +Pixhawk AUXOUT2 +Pixhawk AUXOUT3 +Pixhawk AUXOUT4 +Pixhawk AUXOUT5 +Pixhawk AUXOUT6 +PX4 FMU Relay1 +PX4 FMU Relay2 +PX4IO Relay1 +PX4IO Relay2 +PX4IO ACC1 +PX4IO ACC2 + + + +1 +ms +milliseconds + + + +No +Yes + + + +0 32767 +m +meters + + +5 127 +1 +cm +centimeters + + +0 127 +1 + + +m +meters + + +m +meters + + +m +meters + + + +Forward +Forward-Right +Right +Back-Right +Back +Back-Left +Left +Forward-Left +Up +Down + + + + +None +Analog +MaxbotixI2C +LidarLiteV2-I2C +PX4-PWM +BBB-PRU +LightWareI2C +LightWareSerial +Bebop +MAVLink +uLanding +LeddarOne +MaxbotixSerial +TrOneI2C +LidarLiteV3-I2C +VL53L0X + + + + +Not Used +APM2-A0 +APM2-A1 +APM2-A2 +APM2-A3 +APM2-A4 +APM2-A5 +APM2-A6 +APM2-A7 +APM2-A8 +APM2-A9 +PX4-airspeed port +Pixhawk-airspeed port +APM1-airspeed port + + + +0.001 +m/V +meters per volt + + +0.001 +V +volt + + + +Linear +Inverted +Hyperbolic + + + +1 +cm +centimeters + + +1 +cm +centimeters + + + +Not Used +Pixhawk AUXOUT1 +Pixhawk AUXOUT2 +Pixhawk AUXOUT3 +Pixhawk AUXOUT4 +Pixhawk AUXOUT5 +Pixhawk AUXOUT6 +PX4 FMU Relay1 +PX4 FMU Relay2 +PX4IO Relay1 +PX4IO Relay2 +PX4IO ACC1 +PX4IO ACC2 + + + +1 +ms +milliseconds + + + +No +Yes + + + +0 127 +1 +cm +centimeters + + +0 127 +1 + + +m +meters + + +m +meters + + +m +meters + + + +Forward +Forward-Right +Right +Back-Right +Back +Back-Left +Left +Forward-Left +Up +Down + + + + +None +Analog +MaxbotixI2C +LidarLiteV2-I2C +PX4-PWM +BBB-PRU +LightWareI2C +LightWareSerial +Bebop +MAVLink +uLanding +LeddarOne +MaxbotixSerial +TrOneI2C +LidarLiteV3-I2C +VL53L0X + + + + +Not Used +APM2-A0 +APM2-A1 +APM2-A2 +APM2-A3 +APM2-A4 +APM2-A5 +APM2-A6 +APM2-A7 +APM2-A8 +APM2-A9 +PX4-airspeed port +Pixhawk-airspeed port +APM1-airspeed port + + + +0.001 +m/V +meters per volt + + +0.001 +V +volt + + + +Linear +Inverted +Hyperbolic + + + +1 +cm +centimeters + + +1 +cm +centimeters + + + +Not Used +Pixhawk AUXOUT1 +Pixhawk AUXOUT2 +Pixhawk AUXOUT3 +Pixhawk AUXOUT4 +Pixhawk AUXOUT5 +Pixhawk AUXOUT6 +PX4 FMU Relay1 +PX4 FMU Relay2 +PX4IO Relay1 +PX4IO Relay2 +PX4IO ACC1 +PX4IO ACC2 + + + +1 +ms +milliseconds + + + +No +Yes + + + +0 127 +1 +cm +centimeters + + +0 127 +1 + + +m +meters + + +m +meters + + +m +meters + + + +Forward +Forward-Right +Right +Back-Right +Back +Back-Left +Left +Forward-Left +Up +Down + + + + +None +Analog +MaxbotixI2C +LidarLiteV2-I2C +PX4-PWM +BBB-PRU +LightWareI2C +LightWareSerial +Bebop +MAVLink +uLanding +LeddarOne +MaxbotixSerial +TrOneI2C +LidarLiteV3-I2C +VL53L0X + + + + +Not Used +APM2-A0 +APM2-A1 +APM2-A2 +APM2-A3 +APM2-A4 +APM2-A5 +APM2-A6 +APM2-A7 +APM2-A8 +APM2-A9 +PX4-airspeed port +Pixhawk-airspeed port +APM1-airspeed port + + + +0.001 +m/V +meters per volt + + +0.001 +V +volt + + + +Linear +Inverted +Hyperbolic + + + +1 +cm +centimeters + + +1 +cm +centimeters + + + +Not Used +Pixhawk AUXOUT1 +Pixhawk AUXOUT2 +Pixhawk AUXOUT3 +Pixhawk AUXOUT4 +Pixhawk AUXOUT5 +Pixhawk AUXOUT6 +PX4 FMU Relay1 +PX4 FMU Relay2 +PX4IO Relay1 +PX4IO Relay2 +PX4IO ACC1 +PX4IO ACC2 + + + +1 +ms +milliseconds + + + +No +Yes + + + +0 127 +1 +cm +centimeters + + +0 127 +1 + + +m +meters + + +m +meters + + +m +meters + + + +Forward +Forward-Right +Right +Back-Right +Back +Back-Left +Left +Forward-Left +Up +Down + + + + + + +None +PX4-PWM +AUXPIN + + + +0.001 + + +1 + + +1 + + +0.1 + + + +Disabled +PixhawkAUX1 +PixhawkAUX2 +PixhawkAUX3 +PixhawkAUX4 +PixhawkAUX5 +PixhawkAUX6 + + + + +None +PX4-PWM +AUXPIN + + + +0.001 + + + +Disabled +PixhawkAUX1 +PixhawkAUX2 +PixhawkAUX3 +PixhawkAUX4 +PixhawkAUX5 +PixhawkAUX6 + + + + + + +Disabled +AnalogPin +RCChannelPwmValue +ReceiverProtocol + + + + +APM2 A0 +APM2 A1 +APM2 A13 +Pixracer +Pixhawk ADC4 +Pixhawk ADC3 + Pixhawk ADC6 +Pixhawk SBUS + + + +0 5.0 +0.01 +V +volt + + +0 5.0 +0.01 +V +volt + + + + +0 2000 +PWM +PWM in microseconds + + +0 2000 +PWM +PWM in microseconds + + + + + +Disabled +ShowSlips +ShowOverruns + + + + +50Hz +100Hz +200Hz +250Hz +300Hz +400Hz + +True + + + + + +1200 +2400 +4800 +9600 +19200 +38400 +57600 +111100 +115200 +460800 +500000 +921600 +1500000 + + + + +MAVlink1 +MAVLink2 + +True + + + +None +MAVLink1 +MAVLink2 +Frsky D +Frsky SPort +GPS +Alexmos Gimbal Serial +SToRM32 Gimbal Serial +Lidar +FrSky SPort Passthrough (OpenTX) +Lidar360 +Aerotenna uLanding +Beacon + +True + + + +1200 +2400 +4800 +9600 +19200 +38400 +57600 +111100 +115200 +500000 +921600 +1500000 + + + + +None +MAVLink1 +MAVLink2 +Frsky D +Frsky SPort +GPS +Alexmos Gimbal Serial +SToRM32 Gimbal Serial +Lidar +FrSky SPort Passthrough (OpenTX) +Lidar360 +Aerotenna uLanding +Beacon + +True + + + +1200 +2400 +4800 +9600 +19200 +38400 +57600 +111100 +115200 +500000 +921600 +1500000 + + + + +None +MAVLink1 +MAVLink2 +Frsky D +Frsky SPort +GPS +Alexmos Gimbal Serial +SToRM32 Gimbal Serial +Lidar +FrSky SPort Passthrough (OpenTX) +Lidar360 +Aerotenna uLanding +Beacon + +True + + + +1200 +2400 +4800 +9600 +19200 +38400 +57600 +111100 +115200 +500000 +921600 +1500000 + + + + +None +MAVLink1 +MAVLink2 +Frsky D +Frsky SPort +GPS +Alexmos Gimbal Serial +SToRM32 Gimbal Serial +Lidar +FrSky SPort Passthrough (OpenTX) +Lidar360 +Aerotenna uLanding +Beacon + +True + + + +1200 +2400 +4800 +9600 +19200 +38400 +57600 +111100 +115200 +500000 +921600 +1500000 + + + + +None +MAVLink1 +MAVLink2 +Frsky D +Frsky SPort +GPS +Alexmos Gimbal Serial +SToRM32 Gimbal Serial +Lidar +FrSky SPort Passthrough (OpenTX) +Lidar360 +Aerotenna uLanding +Beacon + +True + + + +1200 +2400 +4800 +9600 +19200 +38400 +57600 +111100 +115200 +500000 +921600 +1500000 + + + + + + +Disable +Enable + + + +25 400 +Hz +hertz + + + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + + +Normal +Reversed + + + + +Disabled +RCPassThru +Flap +Flap_auto +Aileron +mount_pan +mount_tilt +mount_roll +mount_open +camera_trigger +release +mount2_pan +mount2_tilt +mount2_roll +mount2_open +DifferentialSpoilerLeft1 +DifferentialSpoilerRight1 +DifferentialSpoilerLeft2 +DifferentialSpoilerRight2 +Elevator +Rudder +FlaperonLeft +FlaperonRight +GroundSteering +Parachute +EPM +LandingGear +EngineRunEnable +HeliRSC +HeliTailRSC +Motor1 +Motor2 +Motor3 +Motor4 +Motor5 +Motor6 +Motor7 +Motor8 +MotorTilt +RCIN1 +RCIN2 +RCIN3 +RCIN4 +RCIN5 +RCIN6 +RCIN7 +RCIN8 +RCIN9 +RCIN10 +RCIN11 +RCIN12 +RCIN13 +RCIN14 +RCIN15 +RCIN16 +Ignition +Choke +Starter +Throttle +TrackerYaw +TrackerPitch +ThrottleLeft +ThrottleRight +tiltMotorLeft +tiltMotorRight +ElevonLeft +ElevonRight +VTailLeft +VTailRight +BoostThrottle +Motor9 +Motor10 +Motor11 +Motor12 + + + + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + + +Normal +Reversed + + + + +Disabled +RCPassThru +Flap +Flap_auto +Aileron +mount_pan +mount_tilt +mount_roll +mount_open +camera_trigger +release +mount2_pan +mount2_tilt +mount2_roll +mount2_open +DifferentialSpoilerLeft1 +DifferentialSpoilerRight1 +DifferentialSpoilerLeft2 +DifferentialSpoilerRight2 +Elevator +Rudder +FlaperonLeft +FlaperonRight +GroundSteering +Parachute +EPM +LandingGear +EngineRunEnable +HeliRSC +HeliTailRSC +Motor1 +Motor2 +Motor3 +Motor4 +Motor5 +Motor6 +Motor7 +Motor8 +MotorTilt +RCIN1 +RCIN2 +RCIN3 +RCIN4 +RCIN5 +RCIN6 +RCIN7 +RCIN8 +RCIN9 +RCIN10 +RCIN11 +RCIN12 +RCIN13 +RCIN14 +RCIN15 +RCIN16 +Ignition +Choke +Starter +Throttle +TrackerYaw +TrackerPitch +ThrottleLeft +ThrottleRight +tiltMotorLeft +tiltMotorRight +ElevonLeft +ElevonRight +VTailLeft +VTailRight +BoostThrottle +Motor9 +Motor10 +Motor11 +Motor12 + + + + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + + +Normal +Reversed + + + + +Disabled +RCPassThru +Flap +Flap_auto +Aileron +mount_pan +mount_tilt +mount_roll +mount_open +camera_trigger +release +mount2_pan +mount2_tilt +mount2_roll +mount2_open +DifferentialSpoilerLeft1 +DifferentialSpoilerRight1 +DifferentialSpoilerLeft2 +DifferentialSpoilerRight2 +Elevator +Rudder +FlaperonLeft +FlaperonRight +GroundSteering +Parachute +EPM +LandingGear +EngineRunEnable +HeliRSC +HeliTailRSC +Motor1 +Motor2 +Motor3 +Motor4 +Motor5 +Motor6 +Motor7 +Motor8 +MotorTilt +RCIN1 +RCIN2 +RCIN3 +RCIN4 +RCIN5 +RCIN6 +RCIN7 +RCIN8 +RCIN9 +RCIN10 +RCIN11 +RCIN12 +RCIN13 +RCIN14 +RCIN15 +RCIN16 +Ignition +Choke +Starter +Throttle +TrackerYaw +TrackerPitch +ThrottleLeft +ThrottleRight +tiltMotorLeft +tiltMotorRight +ElevonLeft +ElevonRight +VTailLeft +VTailRight +BoostThrottle +Motor9 +Motor10 +Motor11 +Motor12 + + + + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + + +Normal +Reversed + + + + +Disabled +RCPassThru +Flap +Flap_auto +Aileron +mount_pan +mount_tilt +mount_roll +mount_open +camera_trigger +release +mount2_pan +mount2_tilt +mount2_roll +mount2_open +DifferentialSpoilerLeft1 +DifferentialSpoilerRight1 +DifferentialSpoilerLeft2 +DifferentialSpoilerRight2 +Elevator +Rudder +FlaperonLeft +FlaperonRight +GroundSteering +Parachute +EPM +LandingGear +EngineRunEnable +HeliRSC +HeliTailRSC +Motor1 +Motor2 +Motor3 +Motor4 +Motor5 +Motor6 +Motor7 +Motor8 +MotorTilt +RCIN1 +RCIN2 +RCIN3 +RCIN4 +RCIN5 +RCIN6 +RCIN7 +RCIN8 +RCIN9 +RCIN10 +RCIN11 +RCIN12 +RCIN13 +RCIN14 +RCIN15 +RCIN16 +Ignition +Choke +Starter +Throttle +TrackerYaw +TrackerPitch +ThrottleLeft +ThrottleRight +tiltMotorLeft +tiltMotorRight +ElevonLeft +ElevonRight +VTailLeft +VTailRight +BoostThrottle +Motor9 +Motor10 +Motor11 +Motor12 + + + + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + + +Normal +Reversed + + + + +Disabled +RCPassThru +Flap +Flap_auto +Aileron +mount_pan +mount_tilt +mount_roll +mount_open +camera_trigger +release +mount2_pan +mount2_tilt +mount2_roll +mount2_open +DifferentialSpoilerLeft1 +DifferentialSpoilerRight1 +DifferentialSpoilerLeft2 +DifferentialSpoilerRight2 +Elevator +Rudder +FlaperonLeft +FlaperonRight +GroundSteering +Parachute +EPM +LandingGear +EngineRunEnable +HeliRSC +HeliTailRSC +Motor1 +Motor2 +Motor3 +Motor4 +Motor5 +Motor6 +Motor7 +Motor8 +MotorTilt +RCIN1 +RCIN2 +RCIN3 +RCIN4 +RCIN5 +RCIN6 +RCIN7 +RCIN8 +RCIN9 +RCIN10 +RCIN11 +RCIN12 +RCIN13 +RCIN14 +RCIN15 +RCIN16 +Ignition +Choke +Starter +Throttle +TrackerYaw +TrackerPitch +ThrottleLeft +ThrottleRight +tiltMotorLeft +tiltMotorRight +ElevonLeft +ElevonRight +VTailLeft +VTailRight +BoostThrottle +Motor9 +Motor10 +Motor11 +Motor12 + + + + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + + +Normal +Reversed + + + + +Disabled +RCPassThru +Flap +Flap_auto +Aileron +mount_pan +mount_tilt +mount_roll +mount_open +camera_trigger +release +mount2_pan +mount2_tilt +mount2_roll +mount2_open +DifferentialSpoilerLeft1 +DifferentialSpoilerRight1 +DifferentialSpoilerLeft2 +DifferentialSpoilerRight2 +Elevator +Rudder +FlaperonLeft +FlaperonRight +GroundSteering +Parachute +EPM +LandingGear +EngineRunEnable +HeliRSC +HeliTailRSC +Motor1 +Motor2 +Motor3 +Motor4 +Motor5 +Motor6 +Motor7 +Motor8 +MotorTilt +RCIN1 +RCIN2 +RCIN3 +RCIN4 +RCIN5 +RCIN6 +RCIN7 +RCIN8 +RCIN9 +RCIN10 +RCIN11 +RCIN12 +RCIN13 +RCIN14 +RCIN15 +RCIN16 +Ignition +Choke +Starter +Throttle +TrackerYaw +TrackerPitch +ThrottleLeft +ThrottleRight +tiltMotorLeft +tiltMotorRight +ElevonLeft +ElevonRight +VTailLeft +VTailRight +BoostThrottle +Motor9 +Motor10 +Motor11 +Motor12 + + + + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + + +Normal +Reversed + + + + +Disabled +RCPassThru +Flap +Flap_auto +Aileron +mount_pan +mount_tilt +mount_roll +mount_open +camera_trigger +release +mount2_pan +mount2_tilt +mount2_roll +mount2_open +DifferentialSpoilerLeft1 +DifferentialSpoilerRight1 +DifferentialSpoilerLeft2 +DifferentialSpoilerRight2 +Elevator +Rudder +FlaperonLeft +FlaperonRight +GroundSteering +Parachute +EPM +LandingGear +EngineRunEnable +HeliRSC +HeliTailRSC +Motor1 +Motor2 +Motor3 +Motor4 +Motor5 +Motor6 +Motor7 +Motor8 +MotorTilt +RCIN1 +RCIN2 +RCIN3 +RCIN4 +RCIN5 +RCIN6 +RCIN7 +RCIN8 +RCIN9 +RCIN10 +RCIN11 +RCIN12 +RCIN13 +RCIN14 +RCIN15 +RCIN16 +Ignition +Choke +Starter +Throttle +TrackerYaw +TrackerPitch +ThrottleLeft +ThrottleRight +tiltMotorLeft +tiltMotorRight +ElevonLeft +ElevonRight +VTailLeft +VTailRight +BoostThrottle +Motor9 +Motor10 +Motor11 +Motor12 + + + + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + + +Normal +Reversed + + + + +Disabled +RCPassThru +Flap +Flap_auto +Aileron +mount_pan +mount_tilt +mount_roll +mount_open +camera_trigger +release +mount2_pan +mount2_tilt +mount2_roll +mount2_open +DifferentialSpoilerLeft1 +DifferentialSpoilerRight1 +DifferentialSpoilerLeft2 +DifferentialSpoilerRight2 +Elevator +Rudder +FlaperonLeft +FlaperonRight +GroundSteering +Parachute +EPM +LandingGear +EngineRunEnable +HeliRSC +HeliTailRSC +Motor1 +Motor2 +Motor3 +Motor4 +Motor5 +Motor6 +Motor7 +Motor8 +MotorTilt +RCIN1 +RCIN2 +RCIN3 +RCIN4 +RCIN5 +RCIN6 +RCIN7 +RCIN8 +RCIN9 +RCIN10 +RCIN11 +RCIN12 +RCIN13 +RCIN14 +RCIN15 +RCIN16 +Ignition +Choke +Starter +Throttle +TrackerYaw +TrackerPitch +ThrottleLeft +ThrottleRight +tiltMotorLeft +tiltMotorRight +ElevonLeft +ElevonRight +VTailLeft +VTailRight +BoostThrottle +Motor9 +Motor10 +Motor11 +Motor12 + + + + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + + +Normal +Reversed + + + + +Disabled +RCPassThru +Flap +Flap_auto +Aileron +mount_pan +mount_tilt +mount_roll +mount_open +camera_trigger +release +mount2_pan +mount2_tilt +mount2_roll +mount2_open +DifferentialSpoilerLeft1 +DifferentialSpoilerRight1 +DifferentialSpoilerLeft2 +DifferentialSpoilerRight2 +Elevator +Rudder +FlaperonLeft +FlaperonRight +GroundSteering +Parachute +EPM +LandingGear +EngineRunEnable +HeliRSC +HeliTailRSC +Motor1 +Motor2 +Motor3 +Motor4 +Motor5 +Motor6 +Motor7 +Motor8 +MotorTilt +RCIN1 +RCIN2 +RCIN3 +RCIN4 +RCIN5 +RCIN6 +RCIN7 +RCIN8 +RCIN9 +RCIN10 +RCIN11 +RCIN12 +RCIN13 +RCIN14 +RCIN15 +RCIN16 +Ignition +Choke +Starter +Throttle +TrackerYaw +TrackerPitch +ThrottleLeft +ThrottleRight +tiltMotorLeft +tiltMotorRight +ElevonLeft +ElevonRight +VTailLeft +VTailRight +BoostThrottle +Motor9 +Motor10 +Motor11 +Motor12 + + + + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + + +Normal +Reversed + + + + +Disabled +RCPassThru +Flap +Flap_auto +Aileron +mount_pan +mount_tilt +mount_roll +mount_open +camera_trigger +release +mount2_pan +mount2_tilt +mount2_roll +mount2_open +DifferentialSpoilerLeft1 +DifferentialSpoilerRight1 +DifferentialSpoilerLeft2 +DifferentialSpoilerRight2 +Elevator +Rudder +FlaperonLeft +FlaperonRight +GroundSteering +Parachute +EPM +LandingGear +EngineRunEnable +HeliRSC +HeliTailRSC +Motor1 +Motor2 +Motor3 +Motor4 +Motor5 +Motor6 +Motor7 +Motor8 +MotorTilt +RCIN1 +RCIN2 +RCIN3 +RCIN4 +RCIN5 +RCIN6 +RCIN7 +RCIN8 +RCIN9 +RCIN10 +RCIN11 +RCIN12 +RCIN13 +RCIN14 +RCIN15 +RCIN16 +Ignition +Choke +Starter +Throttle +TrackerYaw +TrackerPitch +ThrottleLeft +ThrottleRight +tiltMotorLeft +tiltMotorRight +ElevonLeft +ElevonRight +VTailLeft +VTailRight +BoostThrottle +Motor9 +Motor10 +Motor11 +Motor12 + + + + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + + +Normal +Reversed + + + + +Disabled +RCPassThru +Flap +Flap_auto +Aileron +mount_pan +mount_tilt +mount_roll +mount_open +camera_trigger +release +mount2_pan +mount2_tilt +mount2_roll +mount2_open +DifferentialSpoilerLeft1 +DifferentialSpoilerRight1 +DifferentialSpoilerLeft2 +DifferentialSpoilerRight2 +Elevator +Rudder +FlaperonLeft +FlaperonRight +GroundSteering +Parachute +EPM +LandingGear +EngineRunEnable +HeliRSC +HeliTailRSC +Motor1 +Motor2 +Motor3 +Motor4 +Motor5 +Motor6 +Motor7 +Motor8 +MotorTilt +RCIN1 +RCIN2 +RCIN3 +RCIN4 +RCIN5 +RCIN6 +RCIN7 +RCIN8 +RCIN9 +RCIN10 +RCIN11 +RCIN12 +RCIN13 +RCIN14 +RCIN15 +RCIN16 +Ignition +Choke +Starter +Throttle +TrackerYaw +TrackerPitch +ThrottleLeft +ThrottleRight +tiltMotorLeft +tiltMotorRight +ElevonLeft +ElevonRight +VTailLeft +VTailRight +BoostThrottle +Motor9 +Motor10 +Motor11 +Motor12 + + + + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + + +Normal +Reversed + + + + +Disabled +RCPassThru +Flap +Flap_auto +Aileron +mount_pan +mount_tilt +mount_roll +mount_open +camera_trigger +release +mount2_pan +mount2_tilt +mount2_roll +mount2_open +DifferentialSpoilerLeft1 +DifferentialSpoilerRight1 +DifferentialSpoilerLeft2 +DifferentialSpoilerRight2 +Elevator +Rudder +FlaperonLeft +FlaperonRight +GroundSteering +Parachute +EPM +LandingGear +EngineRunEnable +HeliRSC +HeliTailRSC +Motor1 +Motor2 +Motor3 +Motor4 +Motor5 +Motor6 +Motor7 +Motor8 +MotorTilt +RCIN1 +RCIN2 +RCIN3 +RCIN4 +RCIN5 +RCIN6 +RCIN7 +RCIN8 +RCIN9 +RCIN10 +RCIN11 +RCIN12 +RCIN13 +RCIN14 +RCIN15 +RCIN16 +Ignition +Choke +Starter +Throttle +TrackerYaw +TrackerPitch +ThrottleLeft +ThrottleRight +tiltMotorLeft +tiltMotorRight +ElevonLeft +ElevonRight +VTailLeft +VTailRight +BoostThrottle +Motor9 +Motor10 +Motor11 +Motor12 + + + + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + + +Normal +Reversed + + + + +Disabled +RCPassThru +Flap +Flap_auto +Aileron +mount_pan +mount_tilt +mount_roll +mount_open +camera_trigger +release +mount2_pan +mount2_tilt +mount2_roll +mount2_open +DifferentialSpoilerLeft1 +DifferentialSpoilerRight1 +DifferentialSpoilerLeft2 +DifferentialSpoilerRight2 +Elevator +Rudder +FlaperonLeft +FlaperonRight +GroundSteering +Parachute +EPM +LandingGear +EngineRunEnable +HeliRSC +HeliTailRSC +Motor1 +Motor2 +Motor3 +Motor4 +Motor5 +Motor6 +Motor7 +Motor8 +MotorTilt +RCIN1 +RCIN2 +RCIN3 +RCIN4 +RCIN5 +RCIN6 +RCIN7 +RCIN8 +RCIN9 +RCIN10 +RCIN11 +RCIN12 +RCIN13 +RCIN14 +RCIN15 +RCIN16 +Ignition +Choke +Starter +Throttle +TrackerYaw +TrackerPitch +ThrottleLeft +ThrottleRight +tiltMotorLeft +tiltMotorRight +ElevonLeft +ElevonRight +VTailLeft +VTailRight +BoostThrottle +Motor9 +Motor10 +Motor11 +Motor12 + + + + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + + +Normal +Reversed + + + + +Disabled +RCPassThru +Flap +Flap_auto +Aileron +mount_pan +mount_tilt +mount_roll +mount_open +camera_trigger +release +mount2_pan +mount2_tilt +mount2_roll +mount2_open +DifferentialSpoilerLeft1 +DifferentialSpoilerRight1 +DifferentialSpoilerLeft2 +DifferentialSpoilerRight2 +Elevator +Rudder +FlaperonLeft +FlaperonRight +GroundSteering +Parachute +EPM +LandingGear +EngineRunEnable +HeliRSC +HeliTailRSC +Motor1 +Motor2 +Motor3 +Motor4 +Motor5 +Motor6 +Motor7 +Motor8 +MotorTilt +RCIN1 +RCIN2 +RCIN3 +RCIN4 +RCIN5 +RCIN6 +RCIN7 +RCIN8 +RCIN9 +RCIN10 +RCIN11 +RCIN12 +RCIN13 +RCIN14 +RCIN15 +RCIN16 +Ignition +Choke +Starter +Throttle +TrackerYaw +TrackerPitch +ThrottleLeft +ThrottleRight +tiltMotorLeft +tiltMotorRight +ElevonLeft +ElevonRight +VTailLeft +VTailRight +BoostThrottle +Motor9 +Motor10 +Motor11 +Motor12 + + + + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + + +Normal +Reversed + + + + +Disabled +RCPassThru +Flap +Flap_auto +Aileron +mount_pan +mount_tilt +mount_roll +mount_open +camera_trigger +release +mount2_pan +mount2_tilt +mount2_roll +mount2_open +DifferentialSpoilerLeft1 +DifferentialSpoilerRight1 +DifferentialSpoilerLeft2 +DifferentialSpoilerRight2 +Elevator +Rudder +FlaperonLeft +FlaperonRight +GroundSteering +Parachute +EPM +LandingGear +EngineRunEnable +HeliRSC +HeliTailRSC +Motor1 +Motor2 +Motor3 +Motor4 +Motor5 +Motor6 +Motor7 +Motor8 +MotorTilt +RCIN1 +RCIN2 +RCIN3 +RCIN4 +RCIN5 +RCIN6 +RCIN7 +RCIN8 +RCIN9 +RCIN10 +RCIN11 +RCIN12 +RCIN13 +RCIN14 +RCIN15 +RCIN16 +Ignition +Choke +Starter +Throttle +TrackerYaw +TrackerPitch +ThrottleLeft +ThrottleRight +tiltMotorLeft +tiltMotorRight +ElevonLeft +ElevonRight +VTailLeft +VTailRight +BoostThrottle +Motor9 +Motor10 +Motor11 +Motor12 + + + + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + + +Normal +Reversed + + + + +Disabled +RCPassThru +Flap +Flap_auto +Aileron +mount_pan +mount_tilt +mount_roll +mount_open +camera_trigger +release +mount2_pan +mount2_tilt +mount2_roll +mount2_open +DifferentialSpoilerLeft1 +DifferentialSpoilerRight1 +DifferentialSpoilerLeft2 +DifferentialSpoilerRight2 +Elevator +Rudder +FlaperonLeft +FlaperonRight +GroundSteering +Parachute +EPM +LandingGear +EngineRunEnable +HeliRSC +HeliTailRSC +Motor1 +Motor2 +Motor3 +Motor4 +Motor5 +Motor6 +Motor7 +Motor8 +MotorTilt +RCIN1 +RCIN2 +RCIN3 +RCIN4 +RCIN5 +RCIN6 +RCIN7 +RCIN8 +RCIN9 +RCIN10 +RCIN11 +RCIN12 +RCIN13 +RCIN14 +RCIN15 +RCIN16 +Ignition +Choke +Starter +Throttle +TrackerYaw +TrackerPitch +ThrottleLeft +ThrottleRight +tiltMotorLeft +tiltMotorRight +ElevonLeft +ElevonRight +VTailLeft +VTailRight +BoostThrottle +Motor9 +Motor10 +Motor11 +Motor12 + + + + + + +Disable +Enable + + + +0 10 +m/s +meters per second + + +0 100 +m +meters + + +0 32768 +s +seconds + + +0 32768 +s +seconds + + +0 0.5 +m.m/s/s +square meter per square second + + +0 1000.0 +m +meters + + +0 1000.0 +m +meters + + +0 1000.0 +m +meters + + +0 16 + + + + +0 10 +1 +Hz +hertz + + +0 10 +1 +Hz +hertz + + +0 10 +1 +Hz +hertz + + +0 10 +1 +Hz +hertz + + +0 10 +1 +Hz +hertz + + +0 10 +1 +Hz +hertz + + +0 10 +1 +Hz +hertz + + +0 10 +1 +Hz +hertz + + +0 10 +1 +Hz +hertz + + +0 50 +1 +Hz +hertz + + + + +0 10 +1 +Hz +hertz + + +0 10 +1 +Hz +hertz + + +0 10 +1 +Hz +hertz + + +0 10 +1 +Hz +hertz + + +0 10 +1 +Hz +hertz + + +0 10 +1 +Hz +hertz + + +0 10 +1 +Hz +hertz + + +0 10 +1 +Hz +hertz + + +0 10 +1 +Hz +hertz + + +0 50 +1 +Hz +hertz + + + + +0 10 +1 +Hz +hertz + + +0 10 +1 +Hz +hertz + + +0 10 +1 +Hz +hertz + + +0 10 +1 +Hz +hertz + + +0 10 +1 +Hz +hertz + + +0 10 +1 +Hz +hertz + + +0 10 +1 +Hz +hertz + + +0 10 +1 +Hz +hertz + + +0 10 +1 +Hz +hertz + + +0 50 +1 +Hz +hertz + + + + +0 10 +1 +Hz +hertz + + +0 10 +1 +Hz +hertz + + +0 10 +1 +Hz +hertz + + +0 10 +1 +Hz +hertz + + +0 10 +1 +Hz +hertz + + +0 10 +1 +Hz +hertz + + +0 10 +1 +Hz +hertz + + +0 10 +1 +Hz +hertz + + +0 10 +1 +Hz +hertz + + +0 50 +1 +Hz +hertz + + + + +True + + +True +s +seconds + + +True +s +seconds + + +True +s +seconds + + + + +0.4 1.0 +0.1 +s +seconds + + +0.1 10.0 +0.1 + + +0 1.0 +0.05 + + +0 0.1 +0.01 + + +0 4500 +1 +cdeg +centidegrees + + +0 5 +0.1 +m/s +meters per second + + +0.0 10.0 +0.1 + + +0.0 30.0 +0.1 +m/s +meters per second + + +0.0 50.0 +0.1 +deg/m/s +degrees per meter per second + + +0.0 4500.0 +0.1 +cdeg +centidegrees + + + + +0.1 20.0 +0.1 + + +0.1 10.0 +0.1 + + +3.0 10.0 +0.2 + + +0.1 1.0 +0.1 + + +0.0 0.5 +0.02 + + +1.0 10.0 +0.5 + + +1.0 5.0 +0.05 + + +0.5 2.0 +0.05 + + +5.0 30.0 +1.0 + + +0.0 2.0 +0.1 + + +0.1 1.0 +0.1 + + +0.0 20.0 +0.1 + + +-1 127 +1 + + +-1 100 +0.1 + + +-1.0 2.0 +0.1 + + +0 45 +1 + + +-45 0 +1 + + +0.0 2.0 +0.1 + + +1.0 5.0 +0.2 + + +0.1 1.0 +0.1 + + +-5 40 +1 + + +0.0 20.0 +0.1 +m/s +meters per second + + +-2.0 2.0 +0.1 +m/s/m +meters per second per meter + + +0.1 1.0 +0.1 + + +0.0 0.5 +0.02 + + +0.0 0.5 +0.02 + + +0.1 1.0 +0.1 + + + +Disable +Enable + + + + + + +Disable +Enable + + + +1 +m +meters + + + + + +None +RateRollPI +RateRollP +RateRollI +RateRollD +RatePitchPI +RatePitchP +RatePitchI +RatePitchD +RateYawPI +RateYawP +RateYawI +RateYawD +AngleRollP +AnglePitchP +AngleYawP +PosXYP +PosZP +VelXYP +VelXYI +VelZP +AccelZP +AccelZI +AccelZD +FixedWingRollP +FixedWingRollI +FixedWingRollD +FixedWingRollFF +FixedWingPitchP +FixedWingPitchI +FixedWingPitchD +FixedWingPitchFF +Set_RateRollPitch +Set_RateRoll +Set_RatePitch +Set_RateYaw +Set_AngleRollPitch +Set_VelXY +Set_AccelZ + + + + +Disable +Chan5 +Chan6 +Chan7 +Chan8 +Chan9 +Chan10 +Chan11 +Chan12 +Chan13 +Chan14 +Chan15 +Chan16 + + + +900 2100 + + +900 2100 + + + +Disable +Chan1 +Chan3 +Chan3 +Chan4 +Chan5 +Chan6 +Chan7 +Chan8 +Chan9 +Chan10 +Chan11 +Chan12 +Chan13 +Chan14 +Chan15 +Chan16 + + + + + + +Disable +Enable + + + +0 1 + + + + +0 4 +0.25 + + +0 2 +0.25 + + +0 2 +0.25 + + +0.8 1.2 +0.05 + + +0 4500 +1 + + + diff --git a/src/FirmwarePlugin/APM/APMParameterFactMetaData.Plane.3.9.xml b/src/FirmwarePlugin/APM/APMParameterFactMetaData.Plane.3.9.xml new file mode 100644 index 0000000..0a5b4dd --- /dev/null +++ b/src/FirmwarePlugin/APM/APMParameterFactMetaData.Plane.3.9.xml @@ -0,0 +1,10620 @@ + + + + + + + + +1 255 + + +1 255 + + +1 10 +1 + + +0 30 +1 +s +seconds + + +0:Roll,1:Pitch,2:Yaw,3:Steering,4:Landing + + +0 1 +0.01 + + +0 5 +0.01 + + +0 15 +0.1 +deg +degrees + + +0 1000 +1 +m +meters + + +0 100 +1 +m +meters + + + +Disabled +FBWMixing +DirectMixing + + + + +Disabled +Enabled + + + +0 30 +0.1 +m/s +meters per second + + +0 30 +0.1 +m/s/s +meters per square second + + +0 127 +1 +ds +deciseconds + + +-100 100 +1 +% +percent + + +0 30 +0.1 +m/s +meters per second + + +0 30 +0.1 +m/s +meters per second + + +-1 127 +1 +%/s +percent per second + + +0 10 +0.5 +s +seconds + + +0 100 +% +percent + + + + +0 45 +1 +deg +degrees + + +0:AUTO_ALWAYS,1:AUTO_LAND,2:AUTO_LOITER_TO_ALT,3:AUTO_LOITER_ALL,4:AUTO_WAYPOINTS,5:LOITER,6:RTL,7:CIRCLE,8:CRUISE,9:FBWB,10:GUIDED + +Never +AutoAlways +AutoLanding + + + + +Default +L1Controller + + + + +Automatic + + + +-32767 32767 +1 +m +meters + + +1 32767 +1 +m +meters + + +0 32767 +1 +m +meters + + +-32767 32767 +1 +m +meters + + +-32767 32767 +1 +m +meters + + + +None +GuidedMode +ReportOnly +GuidedModeThrPass +RTL_Mode + + + + + + + +0 32767 +1 +m +meters + + +0 32767 +1 +m +meters + + +0 32767 +1 +m +meters + + + +NoAutoEnable +AutoEnable +AutoEnableDisableFloorOnly + + + + +FenceReturnPoint +NearestRallyPoint + + + + +Disabled +Enabled + + + +5 100 +1 +m/s +meters per second + + +5 100 +1 +m/s +meters per second + + + +Disabled +Enabled + + + + +Disabled +Enabled + + + +0 10000 +m +meters + + +1 10 +0.1 +m/s +meters per second + + +-100 100 +1 +% +percent + + +0 100 +1 +% +percent + + +0 100 +1 +% +percent + + +0 127 +1 +%/s +percent per second + + +0 100 +1 +%/s +percent per second + + + +Disabled +Enabled + + + + +Disabled +Enabled + + + + +Disabled +Enabled + + + +925 2200 +1 + + +0 100 +1 +% +percent + + + +Disabled +Enabled + + + + +CIRCLE/no change(if already in AUTO|GUIDED|LOITER) +CIRCLE +FBWA +Disable + + + +1 100 +0.5 +s +seconds + + + +Continue +ReturnToLaunch +Glide +Deploy Parachute + + + +1 300 +0.5 +s +seconds + + + +Disabled +Heartbeat +HeartbeatAndREMRSSI +HeartbeatAndAUTO + + + + + + +Manual +CIRCLE +STABILIZE +TRAINING +ACRO +FBWA +FBWB +CRUISE +AUTOTUNE +Auto +RTL +Loiter +AVOID_ADSB +Guided +QSTABILIZE +QHOVER +QLOITER +QLAND +QRTL + + + + +Manual +CIRCLE +STABILIZE +TRAINING +ACRO +FBWA +FBWB +CRUISE +AUTOTUNE +Auto +RTL +Loiter +AVOID_ADSB +Guided +QSTABILIZE +QHOVER +QLOITER +QLAND +QRTL + + + + +Manual +CIRCLE +STABILIZE +TRAINING +ACRO +FBWA +FBWB +CRUISE +AUTOTUNE +Auto +RTL +Loiter +AVOID_ADSB +Guided +QSTABILIZE +QHOVER +QLOITER +QLAND +QRTL + + + + +Manual +CIRCLE +STABILIZE +TRAINING +ACRO +FBWA +FBWB +CRUISE +AUTOTUNE +Auto +RTL +Loiter +AVOID_ADSB +Guided +QSTABILIZE +QHOVER +QLOITER +QLAND +QRTL + + + + +Manual +CIRCLE +STABILIZE +TRAINING +ACRO +FBWA +FBWB +CRUISE +AUTOTUNE +Auto +RTL +Loiter +AVOID_ADSB +Guided +QSTABILIZE +QHOVER +QLOITER +QLAND +QRTL + + + + +Manual +CIRCLE +STABILIZE +TRAINING +ACRO +FBWA +FBWB +CRUISE +AUTOTUNE +Auto +RTL +Loiter +AVOID_ADSB +Guided +QSTABILIZE +QHOVER +QLOITER +QLAND +QRTL + + + + +Manual +CIRCLE +STABILIZE +TRAINING +ACRO +FBWA +FBWB +CRUISE +AUTOTUNE +Auto +RTL +Loiter +AVOID_ADSB +Guided +QSTABILIZE +QHOVER +QLOITER +QLAND +QRTL + + + +0 9000 +1 +cdeg +centidegrees + + +0 9000 +1 +cdeg +centidegrees + + +-9000 0 +1 +cdeg +centidegrees + + +10 500 +1 +deg/s +degrees per second + + +10 500 +1 +deg/s +degrees per second + + + +Disabled +Enabled + + + +-100 100 +0.1 +m +meters + + +10 360 +1 +deg/s +degrees per second + + + +Disabled +Enabled + + + +0.5 1.2 + + + +Disabled +Enabled + + + +-1000 1000 +d% +decipercent + + +-100 100 +% +percent + + +True + + +0:ATTITUDE_FAST,1:ATTITUDE_MED,2:GPS,3:PM,4:CTUN,5:NTUN,6:MODE,7:IMU,8:CMD,9:CURRENT,10:COMPASS,11:TECS,12:CAMERA,13:RC,14:SONAR,15:ARM/DISARM,19:IMU_RAW + +Disabled +PX4/Pixhawk-Default + + + + + + + +cm/s +centimeters per second + + +m/s +meters per second + + +cm/s +centimeters per second + + +cdeg +centidegrees + + +cm +centimeters + + +cm +centimeters + + + +Disabled +Enabled + + + + + +0 100 +% +percent + + +0 100 +1 +m/s +meters per second + + +0 100 +% +percent + + +0 100 +1 +m/s +meters per second + + + + + + + +Disabled +Channel1 +Channel2 +Channel3 +Channel4 +Channel5 +Channel6 +Channel7 +Channel8 + + + + +Disabled +Enabled + +True + + + +Disabled +Enabled + + + +0 90 +0.1 +deg +degrees + + + +Disable +Enable - go HOME then land +Enable - go directly to landing sequence + + + +10 127 +m/s/s +meters per square second + + +0:Disarm + + + + + +Disabled +Enabled + + + + +NotEnforced +Enforced + + + +0 100 +1 +% +percent + + +0:Chan1,1:Chan2,2:Chan3,3:Chan4,4:Chan5,5:Chan6,6:Chan7,7:Chan8,8:Chan9,9:Chan10,10:Chan11,11:Chan12,12:Chan13,13:Chan14,14:Chan15,15:Chan16 + + +-1 127 + +Never reset +Always reset + +m +meters + + + + + +Disabled +Enabled + + + +1 100 + + +1 100000 + + +-1 16777215 + + + +NoInfo +Light +Small +Large +HighVortexlarge +Heavy +HighlyManuv +Rotocraft +RESERVED +Glider +LightAir +Parachute +UltraLight +RESERVED +UAV +Space +RESERVED +EmergencySurface +ServiceSurface +PointObstacle + + + + +NO_DATA +L15W23 +L25W28P5 +L25W34 +L35W33 +L35W38 +L45W39P5 +L45W45 +L55W45 +L55W52 +L65W59P5 +L65W67 +L75W72P5 +L75W80 +L85W80 +L85W90 + + + + +NoData +Left2m +Left4m +Left6m +Center +Right2m +Right4m +Right6m + + + + +NO_DATA +AppliedBySensor + + + + +Disabled +Rx-Only +Tx-Only +Rx and Tx Enabled + + + +octal +octal + + +0:UAT_in,1:1090ES_in,2:UAT_out,3:1090ES_out + +Unknown +Rx UAT only +Rx UAT and 1090ES +Rx&Tx UAT and 1090ES + + + + + + + + + + + + + + + + + + + + + +m +meters + + +m +meters + + +mbar +millibar + + + + + + + + + + + + + + +s +seconds + + + + +0.0 1.0 +.01 + + + +Disabled +Enabled + + + +0.1 0.4 +.01 + + +0.1 0.4 +.01 + + +0 127 +1 +m/s +meters per second + + +-0.1745 +0.1745 +0.01 +rad +radians + + +-0.1745 +0.1745 +0.01 +rad +radians + + +-0.1745 +0.1745 +0.01 +rad +radians + + + +None +Yaw45 +Yaw90 +Yaw135 +Yaw180 +Yaw225 +Yaw270 +Yaw315 +Roll180 +Roll180Yaw45 +Roll180Yaw90 +Roll180Yaw135 +Pitch180 +Roll180Yaw225 +Roll180Yaw270 +Roll180Yaw315 +Roll90 +Roll90Yaw45 +Roll90Yaw90 +Roll90Yaw135 +Roll270 +Roll270Yaw45 +Roll270Yaw90 +Roll270Yaw135 +Pitch90 +Pitch270 +Pitch180Yaw90 +Pitch180Yaw270 +Roll90Pitch90 +Roll180Pitch90 +Roll270Pitch90 +Roll90Pitch180 +Roll270Pitch180 +Roll90Pitch270 +Roll180Pitch270 +Roll270Pitch270 +Roll90Pitch180Yaw90 +Roll90Yaw270 +Yaw293Pitch68Roll180 +Pitch315 +Roll90Pitch315 +Custom + + + +0.001 0.5 +.01 + + +0 10 +1 + + + +Disabled +Enable EKF2 +Enable EKF3 + + + +-180 180 +1 +deg +degrees + + +-180 180 +1 +deg +degrees + + +-180 180 +1 +deg +degrees + + + + + +Disabled +ArmingOnly +ArmOrDisarm + + + + +Disabled +THR_MIN PWM when disarmed +0 PWM when disarmed + + + +0:All,1:Barometer,2:Compass,3:GPS lock,4:INS,5:Parameters,6:RC Channels,7:Board voltage,8:Battery Level,9:Airspeed,10:Logging Available,11:Hardware safety switch,12:GPS Configuration + +None +All +Barometer +Compass +GPS Lock +INS(INertial Sensors - accels & gyros) +Parameters(unused) +RC Channels +Board voltage +Battery Level +Airspeed +LoggingAvailable +Hardware safety switch +GPS configuration + + + +0.25 3.0 +m/s/s +meters per square second + + +0.1 +V +volt + + +0.1 +V +volt + + + + + +None +I2C-MS4525D0 +Analog +I2C-MS5525 +I2C-MS5525 (0x76) +I2C-MS5525 (0x77) +I2C-SDP3X + + + + +Don't Use +use +UseWhenZeroThrottle + + + +0.1 + + +0.1 + + + + + + + + + +Disable +Enable + + + + + + +Bus0(internal) +Bus1(external) +Bus2(auxillary) + + + + +FirstSensor +2ndSensor + + + + +None +I2C-MS4525D0 +Analog +I2C-MS5525 +I2C-MS5525 (0x76) +I2C-MS5525 (0x77) +I2C-SDP3X + + + + +Don't Use +use +UseWhenZeroThrottle + + + +0.1 + + +0.1 + + + + + + + + + +Disable +Enable + + + + + + +Bus0(internal) +Bus1(external) +Bus2(auxillary) + + + + + + +Disabled +Enabled + + + + +Remain in AVOID_ADSB +Resume previous flight mode +RTL +Resume if AUTO else Loiter + + + + + +s +seconds + + +s +seconds + + +m +meters + + +m +meters + + +m +meters + + +m +meters + + +m +meters + + + + + +Disabled +Analog Voltage Only +Analog Voltage and Current +Solo +Bebop +SMBus-Maxell +UAVCAN-BatteryInfo +BLHeli ESC + +True + + + +Disabled +A0 +A1 +Pixhawk/Pixracer/Navio2/Pixhawk2_PM1 +Pixhawk2_PM2 +PX4-v1 + +True + + + +Disabled +A1 +A2 +Pixhawk/Pixracer/Navio2/Pixhawk2_PM1 +Pixhawk2_PM2 +PX4-v1 + +True + + + + +A/V +ampere per volt + + +V +volt + + +50 +mAh +milliampere hour + + +1 +W +watt + + + + +0 120 +1 +s +seconds + + + +Raw Voltage +Sag Compensated Voltage + + + +0.1 +V +volt + + +50 +mAh +milliampere hour + + +0.1 +V +volt + + +50 +mAh +milliampere hour + + + +None + + + + +None + + + + + + +Disabled +Analog Voltage Only +Analog Voltage and Current +Solo +Bebop +SMBus-Maxell +UAVCAN-BatteryInfo +BLHeli ESC + +True + + + +Disabled +A0 +A1 +Pixhawk/Pixracer/Navio2/Pixhawk2_PM1 +Pixhawk2_PM2 +PX4-v1 + +True + + + +Disabled +A1 +A2 +Pixhawk/Pixracer/Navio2/Pixhawk2_PM1 +Pixhawk2_PM2 +PX4-v1 + +True + + + + +A/V +ampere per volt + + +V +volt + + +50 +mAh +milliampere hour + + +1 +W +watt + + + + +0 120 +1 +s +seconds + + + +Raw Voltage +Sag Compensated Voltage + + + +0.1 +V +volt + + +50 +mAh +milliampere hour + + +0.1 +V +volt + + +50 +mAh +milliampere hour + + + +None + + + + +None + + + + + + +No PWMs +One PWMs +Two PWMs +Three PWMs +Four PWMs +Five PWMs +Six PWMs +Seven PWMs +Eight PWMs + +True + + + +Disabled +Enabled +Auto + +True + + + +Disabled +Enabled +Auto + +True + + + +Disabled +Enabled + +True + + + +Disabled +50Hz +75Hz +100Hz +150Hz +200Hz +250Hz +300Hz + +True + + +-32768 32767 + + +0:Ch1,1:Ch2,2:Ch3,3:Ch4,4:Ch5,5:Ch6,6:Ch7,7:Ch8,8:Ch9,9:Ch10,10:Ch11,11:Ch12,12:Ch13,13:Ch14 + +Disabled +Enabled + +True + + +-1 80 +degC +degrees Celsius + + + +AUTO +PX4V1 +Pixhawk +Cube/Pixhawk2 +Pixracer +PixhawkMini +Pixhawk2Slim +VRBrain 5.1 +VRBrain 5.2 +VR Micro Brain 5.1 +VR Micro Brain 5.2 +VRBrain Core 1.0 +VRBrain 5.4 +Intel Aero FC +AUAV2.1 + +True + + + +Disabled +Enabled + +True + + +0:ActiveForSafetyEnable,1:ActiveForSafetyDisable,2:ActiveWhenArmed + + +0 32 +1 + + + + + +None +CYRF6936 + + + + +Auto +DSM2 +DSMX + + + +0 4 + + + +NotDisabled +Disabled + + + +0 16 + + +0 16 + + + +Disabled +Enabled + + + +1 8 + + + +Disabled +MinChannel +MidChannel +MaxChannel +MinChannelCW +MidChannelCW +MaxChannelCW + + + + +Mode1 +Mode2 + + + + +Disabled +TestChan1 +TestChan2 +TestChan3 +TestChan4 +TestChan5 +TestChan6 +TestChan7 +TestChan8 + + + +0 16 + + +0 16 + + +1 8 + + +0 40 + + +0 120 + + +0 31 + + + + +0:GPS,1:MAVLINK_SYSTEM_TIME,2:HW + + + + + +Disabled +Enabled + + + + +Disabled +Pixhawk AUXOUT1 +Pixhawk AUXOUT2 +Pixhawk AUXOUT3 +Pixhawk AUXOUT4 +Pixhawk AUXOUT5 +Pixhawk AUXOUT6 +PX4 FMU Relay1 +PX4 FMU Relay2 +PX4IO Relay1 +PX4IO Relay2 +PX4IO ACC1 +PX4IO ACC2 + + + + +Disabled +Pixhawk AUXOUT1 +Pixhawk AUXOUT2 +Pixhawk AUXOUT3 +Pixhawk AUXOUT4 +Pixhawk AUXOUT5 +Pixhawk AUXOUT6 +PX4 FMU Relay1 +PX4 FMU Relay2 +PX4IO Relay1 +PX4IO Relay2 +PX4IO ACC1 +PX4IO ACC2 + + + + +Disabled +Pixhawk AUXOUT1 +Pixhawk AUXOUT2 +Pixhawk AUXOUT3 +Pixhawk AUXOUT4 +Pixhawk AUXOUT5 +Pixhawk AUXOUT6 +PX4 FMU Relay1 +PX4 FMU Relay2 +PX4IO Relay1 +PX4IO Relay2 +PX4IO ACC1 +PX4IO ACC2 + + + + +Disabled +Pixhawk AUXOUT1 +Pixhawk AUXOUT2 +Pixhawk AUXOUT3 +Pixhawk AUXOUT4 +Pixhawk AUXOUT5 +Pixhawk AUXOUT6 +PX4 FMU Relay1 +PX4 FMU Relay2 +PX4IO Relay1 +PX4IO Relay2 +PX4IO ACC1 +PX4IO ACC2 + + + +0 3600 + + + + + +Servo +Relay + + + +0 50 +ds +deciseconds + + +1000 2000 +PWM +PWM in microseconds + + +1000 2000 +PWM +PWM in microseconds + + +0 1000 +m +meters + + + +Low +High + + + +0 10000 +ms +milliseconds + + +0 180 +deg +degrees + + + +Disabled +PX4 AUX1 +PX4 AUX2 +PX4 AUX3 +PX4 AUX4(fast capture) +PX4 AUX5 +PX4 AUX6 + +True + + + +TriggerLow +TriggerHigh + + + + +Always +Only when in AUTO + + + + + + +Disabled +UAVCAN + +True + + + + +1 250 + + +0: Servo 1, 1: Servo 2, 2: Servo 3, 3: Servo 4, 4: Servo 5, 5: Servo 6, 6: Servo 7, 7: Servo 8, 8: Servo 9, 9: Servo 10, 10: Servo 11, 11: Servo 12, 12: Servo 13, 13: Servo 14, 14: Servo 15 + + +0: ESC 1, 1: ESC 2, 2: ESC 3, 3: ESC 4, 4: ESC 5, 5: ESC 6, 6: ESC 7, 7: ESC 8, 8: ESC 9, 9: ESC 10, 10: ESC 11, 11: ESC 12, 12: ESC 13, 13: ESC 14, 14: ESC 15, 15: ESC 16 + + +1 200 +Hz +hertz + + + + + +Disabled +UAVCAN + +True + + + + +1 250 + + +0: Servo 1, 1: Servo 2, 2: Servo 3, 3: Servo 4, 4: Servo 5, 5: Servo 6, 6: Servo 7, 7: Servo 8, 8: Servo 9, 9: Servo 10, 10: Servo 11, 11: Servo 12, 12: Servo 13, 13: Servo 14, 14: Servo 15 + + +0: ESC 1, 1: ESC 2, 2: ESC 3, 3: ESC 4, 4: ESC 5, 5: ESC 6, 6: ESC 7, 7: ESC 8, 8: ESC 9, 9: ESC 10, 10: ESC 11, 11: ESC 12, 12: ESC 13, 13: ESC 14, 14: ESC 15, 15: ESC 16 + + +1 200 +Hz +hertz + + + + + +Disabled +UAVCAN + +True + + + + +1 250 + + +0: Servo 1, 1: Servo 2, 2: Servo 3, 3: Servo 4, 4: Servo 5, 5: Servo 6, 6: Servo 7, 7: Servo 8, 8: Servo 9, 9: Servo 10, 10: Servo 11, 11: Servo 12, 12: Servo 13, 13: Servo 14, 14: Servo 15 + + +0: ESC 1, 1: ESC 2, 2: ESC 3, 3: ESC 4, 4: ESC 5, 5: ESC 6, 6: ESC 7, 7: ESC 8, 8: ESC 9, 9: ESC 10, 10: ESC 11, 11: ESC 12, 12: ESC 13, 13: ESC 14, 14: ESC 15, 15: ESC 16 + + +1 200 +Hz +hertz + + + + + +Disabled +First driver +Second driver + +True + + +10000 1000000 + + + +Disabled +Major messages +All messages + + + + + + +Disabled +First driver +Second driver + +True + + +10000 1000000 + + + +Disabled +Major messages +All messages + + + + + + +Disabled +First driver +Second driver + +True + + +10000 1000000 + + + +Disabled +Major messages +All messages + + + + + + +Disabled +Enabled + + + + +First Relay +Second Relay +Third Relay +Fourth Relay +Servo + + + +1000 2000 +1 +PWM +PWM in microseconds + + +1000 2000 +1 +PWM +PWM in microseconds + + +0 32000 +1 +m +meters + + +0 5000 +1 +ms +milliseconds + + + + +-400 400 +1 +mGauss +milligauss + + +-400 400 +1 +mGauss +milligauss + + +-400 400 +1 +mGauss +milligauss + + +-3.142 3.142 +0.01 +rad +radians + + + +Disabled +Internal-Learning +EKF-Learning + + + + +Disabled +Enabled + + + + +Disabled +Enabled + + + + +Disabled +Use Throttle +Use Current + + + +-1000 1000 +1 +mGauss/A +milligauss per ampere + + +-1000 1000 +1 +mGauss/A +milligauss per ampere + + +-1000 1000 +1 +mGauss/A +milligauss per ampere + + + +None +Yaw45 +Yaw90 +Yaw135 +Yaw180 +Yaw225 +Yaw270 +Yaw315 +Roll180 +Roll180Yaw45 +Roll180Yaw90 +Roll180Yaw135 +Pitch180 +Roll180Yaw225 +Roll180Yaw270 +Roll180Yaw315 +Roll90 +Roll90Yaw45 +Roll90Yaw90 +Roll90Yaw135 +Roll270 +Roll270Yaw45 +Roll270Yaw90 +Roll270Yaw135 +Pitch90 +Pitch270 +Pitch180Yaw90 +Pitch180Yaw270 +Roll90Pitch90 +Roll180Pitch90 +Roll270Pitch90 +Roll90Pitch180 +Roll270Pitch180 +Roll90Pitch270 +Roll180Pitch270 +Roll270Pitch270 +Roll90Pitch180Yaw90 +Roll90Yaw270 +Yaw293Pitch68Roll180 +Pitch315 +Roll90Pitch315 + + + + +Internal +External +ForcedExternal + + + +-400 400 +1 +mGauss +milligauss + + +-400 400 +1 +mGauss +milligauss + + +-400 400 +1 +mGauss +milligauss + + +-1000 1000 +1 +mGauss/A +milligauss per ampere + + +-1000 1000 +1 +mGauss/A +milligauss per ampere + + +-1000 1000 +1 +mGauss/A +milligauss per ampere + + + +FirstCompass +SecondCompass +ThirdCompass + + + +-400 400 +1 +mGauss +milligauss + + +-400 400 +1 +mGauss +milligauss + + +-400 400 +1 +mGauss +milligauss + + +-1000 1000 +1 +mGauss/A +milligauss per ampere + + +-1000 1000 +1 +mGauss/A +milligauss per ampere + + +-1000 1000 +1 +mGauss/A +milligauss per ampere + + + + + + + + + +Disabled +Enabled + + + + +None +Yaw45 +Yaw90 +Yaw135 +Yaw180 +Yaw225 +Yaw270 +Yaw315 +Roll180 +Roll180Yaw45 +Roll180Yaw90 +Roll180Yaw135 +Pitch180 +Roll180Yaw225 +Roll180Yaw270 +Roll180Yaw315 +Roll90 +Roll90Yaw45 +Roll90Yaw90 +Roll90Yaw135 +Roll270 +Roll270Yaw45 +Roll270Yaw90 +Roll270Yaw135 +Pitch90 +Pitch270 +Pitch180Yaw90 +Pitch180Yaw270 +Roll90Pitch90 +Roll180Pitch90 +Roll270Pitch90 +Roll90Pitch180 +Roll270Pitch180 +Roll90Pitch270 +Roll180Pitch270 +Roll270Pitch270 +Roll90Pitch180Yaw90 +Roll90Yaw270 +Yaw293Pitch68Roll180 +Pitch315 +Roll90Pitch315 + + + + +Internal +External +ForcedExternal + + + + +Disabled +Enabled + + + + +None +Yaw45 +Yaw90 +Yaw135 +Yaw180 +Yaw225 +Yaw270 +Yaw315 +Roll180 +Roll180Yaw45 +Roll180Yaw90 +Roll180Yaw135 +Pitch180 +Roll180Yaw225 +Roll180Yaw270 +Roll180Yaw315 +Roll90 +Roll90Yaw45 +Roll90Yaw90 +Roll90Yaw135 +Roll270 +Roll270Yaw45 +Roll270Yaw90 +Roll270Yaw135 +Pitch90 +Pitch270 +Pitch180Yaw90 +Pitch180Yaw270 +Roll90Pitch90 +Roll180Pitch90 +Roll270Pitch90 +Roll90Pitch180 +Roll270Pitch180 +Roll90Pitch270 +Roll180Pitch270 +Roll270Pitch270 +Roll90Pitch180Yaw90 +Roll90Yaw270 +Yaw293Pitch68Roll180 +Pitch315 +Roll90Pitch315 + + + + +Internal +External +ForcedExternal + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +4 32 + +Very Strict +Strict +Default +Relaxed + +0.1 + + +500 3000 +1 + + +0:HMC5883,1:LSM303D,2:AK8963,3:BMM150,4:LSM9DS1,5:LIS3MDL,6:AK09916,7:IST8310,8:ICM20948,9:MMC3416,11:UAVCAN,12:QMC5883 + + +0 100 +1 +% +percent + + + +Disabled +CheckOnly +CheckAndFix + + + + + + +Disabled +Enabled + + + +0 2 +0.01 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Disabled +Enabled + +True + + + +GPS 3D Vel and 2D Pos +GPS 2D vel and 2D pos +GPS 2D pos +No GPS + + + +0.05 5.0 +0.05 +m/s +meters per second + + +0.05 5.0 +0.05 +m/s +meters per second + + +100 1000 +25 + + +0.1 10.0 +0.1 +m +meters + + +100 1000 +25 + + +10 100 +5 +m +meters + + +0 250 +10 +ms +milliseconds +True + + + +Use Baro +Use Range Finder +Use GPS +Use Range Beacon + +True + + +0.1 10.0 +0.1 +m +meters + + +100 1000 +25 + + +0 250 +10 +ms +milliseconds +True + + +0.01 0.5 +0.01 +Gauss +gauss + + + +When flying +When manoeuvring +Never +After first climb yaw reset +Always + + + +100 1000 +25 + + +0.5 5.0 +0.1 +m/s +meters per second + + +100 1000 +25 + + +0.1 10.0 +0.1 +m +meters + + +100 1000 +25 + + +1.0 4.0 +0.1 +rad/s +radians per second + + +0.05 1.0 +0.05 +rad/s +radians per second + + +100 1000 +25 + + +0 127 +10 +ms +milliseconds +True + + +0.0001 0.1 +0.0001 +rad/s +radians per second + + +0.01 1.0 +0.01 +m/s/s +meters per square second + + +0.00001 0.001 +rad/s/s +radians per square second + + +0.000001 0.001 +Hz +hertz + + +0.00001 0.001 +m/s/s/s +meters per cubic second + + +0.01 1.0 +0.1 +m/s/s +meters per square second + + +0.0 1.0 +0.1 + + +0:NSats,1:HDoP,2:speed error,3:position error,4:yaw error,5:pos drift,6:vert speed,7:horiz speed + + +0:FirstIMU,1:SecondIMU,2:ThirdIMU,3:FourthIMU,4:FifthIMU,5:SixthIMU +True + + +50 200 +% +percent + + +0.5 50.0 +m +meters + + +0:FirstIMU,1:SecondIMU,2:ThirdIMU,3:FourthIMU,4:FifthIMU,5:SixthIMU +True + + +0.05 1.0 +0.05 +rad +radians + + +100 1000 +25 + + +10 50 +5 +cs +centiseconds + + +0.00001 0.01 +Gauss/s +gauss per second + + +0.00001 0.01 +Gauss/s +gauss per second + + +-1 70 +1 +% +percent + + +0 0.2 +0.01 + + +0.1 10.0 +0.1 +m +meters + + +100 1000 +25 + + +0 127 +10 +ms +milliseconds +True + + +2.0 6.0 +0.5 +m/s +meters per second + + +0:FirstEKF,1:SecondEKF,2:ThirdEKF,3:FourthEKF,4:FifthEKF,5:SixthEKF +True + + +0:Correct when using Baro height,1:Correct when using range finder height,2:Apply corrections to local position +True + + + + + +Disabled +Enabled + +True + + + +GPS 3D Vel and 2D Pos +GPS 2D vel and 2D pos +GPS 2D pos +No GPS + + + +0.05 5.0 +0.05 +m/s +meters per second + + +0.05 5.0 +0.05 +m/s +meters per second + + +100 1000 +25 + + +0.1 10.0 +0.1 +m +meters + + +100 1000 +25 + + +10 100 +5 +m +meters + + + +Use Baro +Use Range Finder +Use GPS +Use Range Beacon + +True + + +0.1 10.0 +0.1 +m +meters + + +100 1000 +25 + + +0 250 +10 +ms +milliseconds +True + + +0.01 0.5 +0.01 +Gauss +gauss + + + +When flying +When manoeuvring +Never +After first climb yaw reset +Always + +True + + +100 1000 +25 + + +0.5 5.0 +0.1 +m/s +meters per second + + +100 1000 +25 + + +0.1 10.0 +0.1 +m +meters + + +100 1000 +25 + + +1.0 4.0 +0.1 +rad/s +radians per second + + +0.05 1.0 +0.05 +rad/s +radians per second + + +100 1000 +25 + + +0 250 +10 +ms +milliseconds +True + + +0.0001 0.1 +0.0001 +rad/s +radians per second + + +0.01 1.0 +0.01 +m/s/s +meters per square second + + +0.00001 0.001 +rad/s/s +radians per square second + + +0.00001 0.001 +m/s/s/s +meters per cubic second + + +0.01 1.0 +0.1 +m/s/s +meters per square second + + +0.0 1.0 +0.1 + + +0:NSats,1:HDoP,2:speed error,3:position error,4:yaw error,5:pos drift,6:vert speed,7:horiz speed + + +0:FirstIMU,1:SecondIMU,2:ThirdIMU,3:FourthIMU,4:FifthIMU,5:SixthIMU +True + + +50 200 +% +percent + + +0.5 50.0 +m +meters + + +0:FirstIMU,1:SecondIMU,2:ThirdIMU,3:FourthIMU,4:FifthIMU,5:SixthIMU +True + + +0.05 1.0 +0.05 +rad +radians + + +100 1000 +25 + + +10 50 +5 +cs +centiseconds + + +0.00001 0.01 +Gauss/s +gauss per second + + +0.00001 0.01 +Gauss/s +gauss per second + + +-1 70 +1 +% +percent + + +0 0.2 +0.01 + + +0.1 10.0 +0.1 +m +meters + + +100 1000 +25 + + +0 250 +10 +ms +milliseconds +True + + +2.0 6.0 +0.5 +m/s +meters per second + + +0.5 2.5 +0.1 +m/s/s +meters per square second + + +0:FirstEKF,1:SecondEKF,2:ThirdEKF,3:FourthEKF,4:FifthEKF,5:SixthEKF +True + + +0:Correct when using Baro height,1:Correct when using range finder height,2:Apply corrections to local position +True + + +0.05 0.5 +0.05 +m/s +meters per second + + +0.5 5.0 +0.1 +m/s +meters per second + + +0.01 1.0 +0.1 +m/s +meters per second + + + + + +Disabled +Enabled + + + +-200 +200 +1 + + +-200 +200 +1 + + +-18000 +18000 +1 + + +m +meters + + +m +meters + + +m +meters + + +0 127 + + + + +True +True +1 +Pa +pascal + + +True +1 +degC +degrees Celsius + + +0.1 +m +meters + + + +FirstBaro +2ndBaro +3rdBaro + + + + +Disabled +Bus0 +Bus1 + + + +1.0:Freshwater,1.024:Saltwater + + +True +True +1 +Pa +pascal + + +True +True +1 +Pa +pascal + + +0 100 +1 +% +percent + + + + + +None +AUTO +uBlox +MTK +MTK19 +NMEA +SiRF +HIL +SwiftNav +UAVCAN +SBF +GSOF +ERB +MAV +NOVA + +True + + + +None +AUTO +uBlox +MTK +MTK19 +NMEA +SiRF +HIL +SwiftNav +UAVCAN +SBF +GSOF +ERB +MAV +NOVA + +True + + + +Portable +Stationary +Pedestrian +Automotive +Sea +Airborne1G +Airborne2G +Airborne4G + + + + +Disabled +UseBest +Blend + + + + +Any +FloatRTK +IntegerRTK + +True + + + +Disabled +Enabled +NoChange + + + +-100 90 +deg +degrees + + + +send to first GPS +send to 2nd GPS +send to all + + + + +None (0x0000) +All (0xFFFF) +External only (0xFF00) + + + + +Ignore +Always log +Stop logging when disarmed (SBF only) +Only log every five samples (uBlox only) + +True + + +0:GPS,1:SBAS,2:Galileo,3:Beidou,4:IMES,5:QZSS,6:GLOSNASS + +Leave as currently configured +GPS-NoSBAS +GPS+SBAS +Galileo-NoSBAS +Galileo+SBAS +Beidou +GPS+IMES+QZSS+SBAS (Japan Only) +GLONASS +GLONASS+SBAS +GPS+GLONASS+SBAS + + + + +Do not save config +Save config +Save only when needed + + + +0:GPS,1:SBAS,2:Galileo,3:Beidou,4:IMES,5:QZSS,6:GLOSNASS + +Leave as currently configured +GPS-NoSBAS +GPS+SBAS +Galileo-NoSBAS +Galileo+SBAS +Beidou +GPS+IMES+QZSS+SBAS (Japan Only) +GLONASS +GLONASS+SBAS +GPS+GLONASS+SBAS + + + + +Disables automatic configuration +Enable automatic configuration + + + +50 200 + +10Hz +8Hz +5Hz + +ms +milliseconds + + +50 200 + +10Hz +8Hz +5Hz + +ms +milliseconds + + +m +meters + + +m +meters + + +m +meters + + +m +meters + + +m +meters + + +m +meters + + +0 250 +ms +milliseconds +True + + +0 250 +ms +milliseconds +True + + +0:Horiz Pos,1:Vert Pos,2:Speed + + +5.0 30.0 +s +seconds + + + + + +Disabled +Enabled + + + + +None +Servo +EPM + + + +1000 2000 +PWM +PWM in microseconds + + +1000 2000 +PWM +PWM in microseconds + + +1000 2000 +PWM +PWM in microseconds + + +0 255 +s +seconds + + +0 255 + + + + + +Disabled +Enabled + + + + +None +Chan1 +Chan2 +Chan3 +Chan4 +Chan5 +Chan6 +Chan7 +Chan8 +Chan9 +Chan10 +Chan11 +Chan12 +Chan13 +Chan14 +Chan15 +Chan16 + + + +0.1 5 +s +seconds + + +1 10 +s +seconds + + +100 100000 + + +1000 2000 + + +1000 2000 + + +1000 2000 + + +1000 2000 + + + +None +RPM1 +RPM2 + + + +0 100 + + + + + + +rad/s +radians per second + + +rad/s +radians per second + + +rad/s +radians per second + + +rad/s +radians per second + + +rad/s +radians per second + + +rad/s +radians per second + + +rad/s +radians per second + + +rad/s +radians per second + + +rad/s +radians per second + + +0.8 1.2 + + +0.8 1.2 + + +0.8 1.2 + + +-3.5 3.5 +m/s/s +meters per square second + + +-3.5 3.5 +m/s/s +meters per square second + + +-3.5 3.5 +m/s/s +meters per square second + + +0.8 1.2 + + +0.8 1.2 + + +0.8 1.2 + + +-3.5 3.5 +m/s/s +meters per square second + + +-3.5 3.5 +m/s/s +meters per square second + + +-3.5 3.5 +m/s/s +meters per square second + + +0.8 1.2 + + +0.8 1.2 + + +0.8 1.2 + + +-3.5 3.5 +m/s/s +meters per square second + + +-3.5 3.5 +m/s/s +meters per square second + + +-3.5 3.5 +m/s/s +meters per square second + + +0 127 +Hz +hertz + + +0 127 +Hz +hertz + + + +Disabled +Enabled + + + + +Disabled +Enabled + + + + +Disabled +Enabled + + + +0.05 50 + + + +Never +Start-up only + + + + +Don't adjust the trims +Assume first orientation was level +Assume ACC_BODYFIX is perfectly aligned to the vehicle + + + + +IMU 1 +IMU 2 +IMU 3 + + + +m +meters + + +m +meters + + +m +meters + + +m +meters + + +m +meters + + +m +meters + + +m +meters + + +m +meters + + +m +meters + + +True + + +True + + +True + + +True + + +True + + +True + + +0:FirstIMU,1:SecondIMU,2:ThirdIMU + +FirstIMUOnly +FirstAndSecondIMU + + + + + +32 + + +0:IMU1,1:IMU2,2:IMU3 + +None +First IMU +All + + + +0:Sensor-Rate Logging (sample at full sensor rate seen by AP) + + +ms +milliseconds +10 + + +1 + + + + + +Disabled +Enabled + + + +10 200 +Hz +hertz + + +5 50 +Hz +hertz + + +5 30 +dB +decibel + + + + +0 5 +0.5 +m +meters + + +0 90 +0.1 +deg +degrees + + +cdeg +centidegrees + + +0.1 +m +meters + + +0.1 +s +seconds + + +0 30 +0.1 +m +meters + + +0 10 +0.1 +s +seconds + + +0 30 +0.1 +m/s +meters per second + + +0 127 +1 +% +percent + + +0 127 +1 +s +seconds + + + +Disabled +Servos to Neutral +Servos to Zero PWM + + + + +Disabled +Enabled + + + +0 100 +% +percent + + + +Standard Glide Slope +Deepstall + + + + + +0 20 +m/s +meters per second + + + + + + +10 200 +m +meters + + +0 20 +m/s +meters per second + + +0 2 +s +seconds + + +900 2100 +PWM +PWM in microseconds + + +5 20 +m/s +meters per second + + +5 20 +m/s +meters per second + + +5 50 +m +meters + + +0 1 + + +0 2.0 + + + + + + + + + + + + + + + +None +File +MAVLink +BothFileAndMAVLink + + + + + + +Disabled +Enabled + + + + +Disabled +Enabled + + + + +Disabled +Enabled + + + +kB +kilobytes + + + + +0 32766 +1 + + + +Resume Mission +Restart Mission + + + +0:Clear Mission on reboot + + + + + +Retracted +Neutral +MavLink Targeting +RC Targeting +GPS Point + + + +-180.00 179.99 +1 +deg +degrees + + +-180.00 179.99 +1 +deg +degrees + + +-180.00 179.99 +1 +deg +degrees + + +-180.00 179.99 +1 +deg +degrees + + +-180.00 179.99 +1 +deg +degrees + + +-180.00 179.99 +1 +deg +degrees + + + +Disabled +Enabled + + + + +Disabled +Enabled + + + + +Disabled +Enabled + + + + +Disabled +RC5 +RC6 +RC7 +RC8 +RC9 +RC10 +RC11 +RC12 + + + +-18000 17999 +1 +cdeg +centidegrees + + +-18000 17999 +1 +cdeg +centidegrees + + + +Disabled +RC5 +RC6 +RC7 +RC8 +RC9 +RC10 +RC11 +RC12 + + + +-18000 17999 +1 +cdeg +centidegrees + + +-18000 17999 +1 +cdeg +centidegrees + + + +Disabled +RC5 +RC6 +RC7 +RC8 +RC9 +RC10 +RC11 +RC12 + + + +-18000 17999 +1 +cdeg +centidegrees + + +-18000 17999 +1 +cdeg +centidegrees + + +0 100 +1 + + +0.0 0.2 +.005 +s +seconds + + +0.0 0.2 +.005 +s +seconds + + + +None +Servo +3DR Solo +Alexmos Serial +SToRM32 MAVLink +SToRM32 Serial + +True + + + +Retracted +Neutral +MavLink Targeting +RC Targeting +GPS Point + + + +-180.00 179.99 +1 +deg +degrees + + +-180.00 179.99 +1 +deg +degrees + + +-180.00 179.99 +1 +deg +degrees + + +-180.00 179.99 +1 +deg +degrees + + +-180.00 179.99 +1 +deg +degrees + + +-180.00 179.99 +1 +deg +degrees + + + +Disabled +Enabled + + + + +Disabled +Enabled + + + + +Disabled +Enabled + + + + +Disabled +RC5 +RC6 +RC7 +RC8 +RC9 +RC10 +RC11 +RC12 + + + +-18000 17999 +1 +cdeg +centidegrees + + +-18000 17999 +1 +cdeg +centidegrees + + + +Disabled +RC5 +RC6 +RC7 +RC8 +RC9 +RC10 +RC11 +RC12 + + + +-18000 17999 +1 +cdeg +centidegrees + + +-18000 17999 +1 +cdeg +centidegrees + + + +Disabled +RC5 +RC6 +RC7 +RC8 +RC9 +RC10 +RC11 +RC12 + + + +-18000 17999 +1 +cdeg +centidegrees + + +-18000 17999 +1 +cdeg +centidegrees + + +0.0 0.2 +.005 +s +seconds + + +0.0 0.2 +.005 +s +seconds + + + +None +Servo +3DR Solo +Alexmos Serial +SToRM32 MAVLink +SToRM32 Serial + + + + + +1 60 +1 +s +seconds + + +0.6 1.0 +0.05 + + +0 0.1 +0.01 + + +0 89 +deg +degrees + + + + + +Off +Low +Medium +High + + + + +Disable +Enable + + + + +Disable +Enable + + + + +Disable +ssd1306 +sh1106 + + + + +Disabled +Aircraft +Rover + + + + +Disabled + + + +0:Build in LED, 1:Internal ToshibaLED, 2:External ToshibaLED, 3:External PCA9685, 4:Oreo LED, 5:UAVCAN, 6:NCP5623 External, 7:NCP5623 Internal + + + + + +None +MAX7456 + +True + + + +Disable +Chan5 +Chan6 +Chan7 +Chan8 +Chan9 +Chan10 +Chan11 +Chan12 +Chan13 +Chan14 +Chan15 +Chan16 + + + +0:UseDecimalPack, 1:InvertedWindPointer, 2:InvertedAHRoll + + +True + + +0 31 +True + + +0 63 +True + + +0 99 + + +1 30 + + +0 100 + + + +Metric +Imperial +SI +Aviation + + + +1 20 + + + + + +Disabled +Enabled + + + +900 2100 + + +900 2100 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +900 2100 + + +900 2100 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +900 2100 + + +900 2100 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +900 2100 + + +900 2100 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + +0.4 1.0 +0.1 +s +seconds + + +0.1 3.0 +0.1 + + +0 0.1 +0.01 + + +0 0.5 +0.05 + + +0 100 +1 +deg/s +degrees per second + + +0 100 +1 +deg/s +degrees per second + + +0.7 1.5 +0.05 + + +0 4500 +1 + + +0.1 4.0 +0.1 + + + + + +Disable +Enable +Enable VTOL AUTO + + + +1000 8000 +cdeg +centidegrees + + +0 30000 +ms +milliseconds + + +50 500 +10 +cm/s +centimeters per second + + +50 500 +10 +cm/s/s +centimeters per square second + + +50 500 +10 +Hz +hertz + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + +0 100 +0.1 +m/s +meters per second + + +50 500 +1 +deg/s +degrees per second + + +30 200 +10 +cm/s +centimeters per second + + +0.5 50 +0.1 +m +meters + + +0 30 +1 +deg +degrees + + + +Undefined +Quad +Hexa +Octa +OctaQuad +Y6 +Tri + TailSitter + + + + +Plus +X +V +H +V-Tail +A-Tail +Y6B +Y6F + + + +0 0.5 +0.01 + + +0 1 +0.01 + + +0 10 +0.1 + + +1 200 +1 +m +meters + + + +Disabled +Enabled + + + + + +10 300 +1 +deg/s +degrees per second + + +20 80 +1 +deg +degrees + + + +Disabled +Enabled + + + + +Disabled +ThrottleInput +FullInput + + + +0 10 +0.25 + + + +Disabled +Enabled + + + +0 90 +1 +deg +degrees + + + +Continuous +Binary +VectoredYaw + + + +5 80 + + +10 300 +1 +deg/s +degrees per second + + + +MultiCopterInput +FixedWingInput + + + +0:Aileron,1:Elevator,2:Throttle,3:Rudder + + + +Disabled +Channel1 +Channel2 +Channel3 +Channel4 +Channel5 +Channel6 +Channel7 +Channel8 + + + +0 1 +0.01 + + +0 1 +0.01 + + +0 30 + + +0 4 +0.1 + + + +AUTO +FIXED_WING +QUADROTOR +COAXIAL +HELICOPTER +AIRSHIP +FREE_BALLOON +ROCKET +GROUND_ROVER +SURFACE_BOAT +SUBMARINE +FLAPPING_WING +KITE +VTOL_DUOROTOR +VTOL_QUADROTOR +VTOL_TILTROTOR + + + +0:LevelTransition,1:AllowFWTakeoff,2:AllowFWLand + + +0.2 5 +0.1 +m/s/s +meters per square second + + +1 5 + + + + +500 18000 +100 +cdeg/s +centidegrees per second + + +0 72000 + +Disabled +VerySlow +Slow +Medium +Fast + +1000 +cdeg/s/s +centidegrees per square second + + + +Disabled +Enabled + + + +0 180000 + +Disabled +VerySlow +Slow +Medium +Fast + +1000 +cdeg/s/s +centidegrees per square second + + +0 180000 + +Disabled +VerySlow +Slow +Medium +Fast + +1000 +cdeg/s/s +centidegrees per square second + + + +Disabled +Enabled + + + +0.0 12.000 + + +0.0 12.000 + + +0.0 6.000 + + +0.5 10.0 + + +0 1080 + +Disabled +Slow +Medium +Fast + +1 +deg/s +degrees per second + + +0 1080 + +Disabled +Slow +Medium +Fast + +1 +deg/s +degrees per second + + +0 1080 + +Disabled +Slow +Medium +Fast + +1 +deg/s +degrees per second + + +0 1 +0.5:Very Soft, 0.2:Soft, 0.15:Medium, 0.1:Crisp, 0.05:Very Crisp +0.01 +s +seconds + + +0.05 0.5 +0.005 + + +0.01 2.0 +0.01 + + +0 1 +0.01 +% +percent + + +0.0 0.02 +0.001 + + +0 0.5 +0.001 + + +1 100 +1 +Hz +hertz + + +0.05 0.50 +0.005 + + +0.01 2.0 +0.01 + + +0 1 +0.01 +% +percent + + +0.0 0.02 +0.001 + + +0 0.5 +0.001 + + +1 100 +1 +Hz +hertz + + +0.10 2.50 +0.005 + + +0.010 1.0 +0.01 + + +0 1 +0.01 +% +percent + + +0.000 0.02 +0.001 + + +0 0.5 +0.001 + + +1 10 +1 +Hz +hertz + + +0.1 0.25 + + +0.5 0.9 + + +0.1 0.9 + + + + +0 45 +1 +deg +degrees + + +20 2000 +50 +cm/s +centimeters per second + + +100 981 +1 +cm/s/s +centimeters per square second + + +25 250 +1 +cm/s/s +centimeters per square second + + +500 5000 +1 +cm/s/s/s +centimeters per cubic second + + +0 2 +0.1 +s +seconds + + + + +0 500 +PWM +PWM in microseconds + + +0.25 0.8 + + +0.9:Low, 0.95:Default, 1.0:High + + +6 35 +V +volt + + +6 35 +V +volt + + +0 200 +A +ampere + + + +Normal +OneShot +OneShot125 +Brushed +DShot150 +DShot300 +DShot600 +DShot1200 + +True + + +0 2000 +PWM +PWM in microseconds + + +0 2000 +PWM +PWM in microseconds + + +0.0:Low, 0.15:Default, 0.3:High + + +0.0:Low, 0.1:Default, 0.2:High + + +0 10 +s +seconds + + +0.2 0.8 + + + +Disabled +Learn +LearnAndSave + + + + +PWM enabled while disarmed +PWM disabled while disarmed + + + +5 80 +1 +deg +degrees + + +0 2 +0.1 +s +seconds + + +0 5 +0.1 + + + +First battery +Second battery + + + + + +0.5 5 +0.1 +Hz +hertz + + +1.000 3.000 + + +1.000 8.000 + + +0.500 1.500 +0.05 + + +0.000 3.000 + + +0 1000 +d% +decipercent + + +0.000 0.400 + + +1.000 100.000 +Hz +hertz + + +0.500 2.000 + + +0.1 6.0 +0.1 + + +0.02 1.00 +0.01 + + +0.00 1.00 +0.001 + + +0 4500 +10 +cm/s/s +centimeters per square second + + +0 100 +Hz +hertz + + +0 100 +Hz +hertz + + +0 45 +1 +deg +degrees + + + + +20 2000 +50 +cm/s +centimeters per second + + +10 1000 +1 +cm +centimeters + + +10 1000 +50 +cm/s +centimeters per second + + +10 500 +10 +cm/s +centimeters per second + + +50 500 +10 +cm/s/s +centimeters per square second + + +50 500 +10 +cm/s/s +centimeters per square second + + + +Disable +Enable + + + + + + + +0.1 +km +kilometers + + + +DoNotIncludeHome +IncludeHome + + + + + +0.0 120.0 +s +seconds + + + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + + +Normal +Reversed + + + +0 200 +PWM +PWM in microseconds + + + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + + +Normal +Reversed + + + +0 200 +PWM +PWM in microseconds + + + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + + +Normal +Reversed + + + +0 200 +PWM +PWM in microseconds + + + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + + +Normal +Reversed + + + +0 200 +PWM +PWM in microseconds + + + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + + +Normal +Reversed + + + +0 200 +PWM +PWM in microseconds + + + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + + +Normal +Reversed + + + +0 200 +PWM +PWM in microseconds + + + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + + +Normal +Reversed + + + +0 200 +PWM +PWM in microseconds + + + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + + +Normal +Reversed + + + +0 200 +PWM +PWM in microseconds + + + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + + +Normal +Reversed + + + +0 200 +PWM +PWM in microseconds + + + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + + +Normal +Reversed + + + +0 200 +PWM +PWM in microseconds + + + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + + +Normal +Reversed + + + +0 200 +PWM +PWM in microseconds + + + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + + +Normal +Reversed + + + +0 200 +PWM +PWM in microseconds + + + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + + +Normal +Reversed + + + +0 200 +PWM +PWM in microseconds + + + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + + +Normal +Reversed + + + +0 200 +PWM +PWM in microseconds + + + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + + +Normal +Reversed + + + +0 200 +PWM +PWM in microseconds + + + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + + +Normal +Reversed + + + +0 200 +PWM +PWM in microseconds + + + + +1 8 +1 +True + + +1 8 +1 +True + + +1 8 +1 +True + + +1 8 +1 +True + + + + + +Disabled +APM2 A9 pin +APM1 relay +BB Blue GP0 pin 4 +Pixhawk AUXOUT1 +Pixhawk AUXOUT2 +Pixhawk AUXOUT3 +Pixhawk AUXOUT4 +Pixhawk AUXOUT5 +Pixhawk AUXOUT6 +BB Blue GP0 pin 3 +PX4 FMU Relay1 +PX4 FMU Relay2 +PX4IO Relay1/BB Blue GP0 pin 6 +PX4IO Relay2 +PX4IO ACC1 +PX4IO ACC2/BB Blue GP0 pin 5 + + + + +Disabled +APM2 A9 pin +APM1 relay +BB Blue GP0 pin 4 +Pixhawk AUXOUT1 +Pixhawk AUXOUT2 +Pixhawk AUXOUT3 +Pixhawk AUXOUT4 +Pixhawk AUXOUT5 +Pixhawk AUXOUT6 +BB Blue GP0 pin 3 +PX4 FMU Relay1 +PX4 FMU Relay2 +PX4IO Relay1/BB Blue GP0 pin 6 +PX4IO Relay2 +PX4IO ACC1 +PX4IO ACC2/BB Blue GP0 pin 5 + + + + +Disabled +APM2 A9 pin +APM1 relay +BB Blue GP0 pin 4 +Pixhawk AUXOUT1 +Pixhawk AUXOUT2 +Pixhawk AUXOUT3 +Pixhawk AUXOUT4 +Pixhawk AUXOUT5 +Pixhawk AUXOUT6 +BB Blue GP0 pin 3 +PX4 FMU Relay1 +PX4 FMU Relay2 +PX4IO Relay1/BB Blue GP0 pin 6 +PX4IO Relay2 +PX4IO ACC1 +PX4IO ACC2/BB Blue GP0 pin 5 + + + + +Disabled +APM2 A9 pin +APM1 relay +BB Blue GP0 pin 4 +Pixhawk AUXOUT1 +Pixhawk AUXOUT2 +Pixhawk AUXOUT3 +Pixhawk AUXOUT4 +Pixhawk AUXOUT5 +Pixhawk AUXOUT6 +BB Blue GP0 pin 3 +PX4 FMU Relay1 +PX4 FMU Relay2 +PX4IO Relay1/BB Blue GP0 pin 6 +PX4IO Relay2 +PX4IO ACC1 +PX4IO ACC2/BB Blue GP0 pin 5 + + + + +Off +On +NoChange + + + + + +0.4 1.0 +0.1 +s +seconds + + +0.1 4.0 +0.1 + + +0 0.1 +0.01 + + +0 1.0 +0.05 + + +0 180 +1 +deg/s +degrees per second + + +0 4500 +1 + + +0.1 4.0 +0.1 + + + + + +None +Analog +MaxbotixI2C +LidarLiteV2-I2C +PX4-PWM +BBB-PRU +LightWareI2C +LightWareSerial +Bebop +MAVLink +uLanding +LeddarOne +MaxbotixSerial +TeraRangerI2C +LidarLiteV3-I2C +VL53L0X +NMEA +WASP-LRF +BenewakeTF02 +BenewakeTFmini +LidarLiteV3HP-I2C + + + + +Not Used +APM2-A0 +APM2-A1 +APM2-A2 +APM2-A3 +APM2-A4 +APM2-A5 +APM2-A6 +APM2-A7 +APM2-A8 +APM2-A9 +PX4-airspeed port +Pixhawk-airspeed port +APM1-airspeed port + + + +0.001 +m/V +meters per volt + + +0.001 +V +volt + + + +Linear +Inverted +Hyperbolic + + + +1 +cm +centimeters + + +1 +cm +centimeters + + + +Not Used +Pixhawk AUXOUT1 +Pixhawk AUXOUT2 +Pixhawk AUXOUT3 +Pixhawk AUXOUT4 +Pixhawk AUXOUT5 +Pixhawk AUXOUT6 +PX4 FMU Relay1 +PX4 FMU Relay2 +PX4IO Relay1 +PX4IO Relay2 +PX4IO ACC1 +PX4IO ACC2 + + + +1 +ms +milliseconds + + + +No +Yes + + + +0 32767 +m +meters + + +5 127 +1 +cm +centimeters + + +0 127 +1 + + +m +meters + + +m +meters + + +m +meters + + + +Forward +Forward-Right +Right +Back-Right +Back +Back-Left +Left +Forward-Left +Up +Down + + + + +None +Analog +MaxbotixI2C +LidarLiteV2-I2C +PX4-PWM +BBB-PRU +LightWareI2C +LightWareSerial +Bebop +MAVLink +uLanding +LeddarOne +MaxbotixSerial +TeraRangerI2C +LidarLiteV3-I2C +VL53L0X +NMEA +WASP-LRF +BenewakeTF02 +BenewakeTFmini +LidarLiteV3HP-I2C + + + + +Not Used +APM2-A0 +APM2-A1 +APM2-A2 +APM2-A3 +APM2-A4 +APM2-A5 +APM2-A6 +APM2-A7 +APM2-A8 +APM2-A9 +PX4-airspeed port +Pixhawk-airspeed port +APM1-airspeed port + + + +0.001 +m/V +meters per volt + + +0.001 +V +volt + + + +Linear +Inverted +Hyperbolic + + + +1 +cm +centimeters + + +1 +cm +centimeters + + + +Not Used +Pixhawk AUXOUT1 +Pixhawk AUXOUT2 +Pixhawk AUXOUT3 +Pixhawk AUXOUT4 +Pixhawk AUXOUT5 +Pixhawk AUXOUT6 +PX4 FMU Relay1 +PX4 FMU Relay2 +PX4IO Relay1 +PX4IO Relay2 +PX4IO ACC1 +PX4IO ACC2 + + + +1 +ms +milliseconds + + + +No +Yes + + + +0 127 +1 +cm +centimeters + + +0 127 +1 + + +m +meters + + +m +meters + + +m +meters + + + +Forward +Forward-Right +Right +Back-Right +Back +Back-Left +Left +Forward-Left +Up +Down + + + + +None +Analog +MaxbotixI2C +LidarLiteV2-I2C +PX4-PWM +BBB-PRU +LightWareI2C +LightWareSerial +Bebop +MAVLink +uLanding +LeddarOne +MaxbotixSerial +TeraRangerI2C +LidarLiteV3-I2C +VL53L0X +NMEA +WASP-LRF +BenewakeTF02 +BenewakeTFmini +LidarLiteV3HP-I2C + + + + +Not Used +APM2-A0 +APM2-A1 +APM2-A2 +APM2-A3 +APM2-A4 +APM2-A5 +APM2-A6 +APM2-A7 +APM2-A8 +APM2-A9 +PX4-airspeed port +Pixhawk-airspeed port +APM1-airspeed port + + + +0.001 +m/V +meters per volt + + +0.001 +V +volt + + + +Linear +Inverted +Hyperbolic + + + +1 +cm +centimeters + + +1 +cm +centimeters + + + +Not Used +Pixhawk AUXOUT1 +Pixhawk AUXOUT2 +Pixhawk AUXOUT3 +Pixhawk AUXOUT4 +Pixhawk AUXOUT5 +Pixhawk AUXOUT6 +PX4 FMU Relay1 +PX4 FMU Relay2 +PX4IO Relay1 +PX4IO Relay2 +PX4IO ACC1 +PX4IO ACC2 + + + +1 +ms +milliseconds + + + +No +Yes + + + +0 127 +1 +cm +centimeters + + +0 127 +1 + + +m +meters + + +m +meters + + +m +meters + + + +Forward +Forward-Right +Right +Back-Right +Back +Back-Left +Left +Forward-Left +Up +Down + + + + +None +Analog +MaxbotixI2C +LidarLiteV2-I2C +PX4-PWM +BBB-PRU +LightWareI2C +LightWareSerial +Bebop +MAVLink +uLanding +LeddarOne +MaxbotixSerial +TeraRangerI2C +LidarLiteV3-I2C +VL53L0X +NMEA +WASP-LRF +BenewakeTF02 +BenewakeTFmini +LidarLiteV3HP-I2C + + + + +Not Used +APM2-A0 +APM2-A1 +APM2-A2 +APM2-A3 +APM2-A4 +APM2-A5 +APM2-A6 +APM2-A7 +APM2-A8 +APM2-A9 +PX4-airspeed port +Pixhawk-airspeed port +APM1-airspeed port + + + +0.001 +m/V +meters per volt + + +0.001 +V +volt + + + +Linear +Inverted +Hyperbolic + + + +1 +cm +centimeters + + +1 +cm +centimeters + + + +Not Used +Pixhawk AUXOUT1 +Pixhawk AUXOUT2 +Pixhawk AUXOUT3 +Pixhawk AUXOUT4 +Pixhawk AUXOUT5 +Pixhawk AUXOUT6 +PX4 FMU Relay1 +PX4 FMU Relay2 +PX4IO Relay1 +PX4IO Relay2 +PX4IO ACC1 +PX4IO ACC2 + + + +1 +ms +milliseconds + + + +No +Yes + + + +0 127 +1 +cm +centimeters + + +0 127 +1 + + +m +meters + + +m +meters + + +m +meters + + + +Forward +Forward-Right +Right +Back-Right +Back +Back-Left +Left +Forward-Left +Up +Down + + + + + +0 255 + + +0 255 + + +0 10000 + + +0 255 + + +-1 255 + + + +Low Speed +High Speed + + + + + +0 255 + + +0 255 + + +0 10000 + + +0 255 + + +-1 255 + + + +Low Speed +High Speed + + + + + +0 255 + + +0 255 + + +0 10000 + + +0 255 + + +-1 255 + + + +Low Speed +High Speed + + + + + +0 255 + + +0 255 + + +0 10000 + + +0 255 + + +-1 255 + + + +Low Speed +High Speed + + + + + + +None +PX4-PWM +AUXPIN + + + +0.001 + + +1 + + +1 + + +0.1 + + + +Disabled +PixhawkAUX1 +PixhawkAUX2 +PixhawkAUX3 +PixhawkAUX4 +PixhawkAUX5 +PixhawkAUX6 + + + + +None +PX4-PWM +AUXPIN + + + +0.001 + + + +Disabled +PixhawkAUX1 +PixhawkAUX2 +PixhawkAUX3 +PixhawkAUX4 +PixhawkAUX5 +PixhawkAUX6 + + + + + + +Disabled +AnalogPin +RCChannelPwmValue +ReceiverProtocol + + + + +APM2 A0 +APM2 A1 +APM2 A13 +Pixracer +Pixhawk ADC4 +Pixhawk ADC3 +Pixhawk ADC6 +Pixhawk SBUS +Pixhawk2 ADC + + + +0 5.0 +0.01 +V +volt + + +0 5.0 +0.01 +V +volt + + + + +0 2000 +PWM +PWM in microseconds + + +0 2000 +PWM +PWM in microseconds + + + + + +Disabled +ShowSlips +ShowOverruns + + + + +50Hz +100Hz +200Hz +250Hz +300Hz +400Hz + +True + + + + + +1200 +2400 +4800 +9600 +19200 +38400 +57600 +111100 +115200 +460800 +500000 +921600 +1500000 + + + + +MAVlink1 +MAVLink2 + +True + + + +None +MAVLink1 +MAVLink2 +Frsky D +Frsky SPort +GPS +Alexmos Gimbal Serial +SToRM32 Gimbal Serial +Rangefinder +FrSky SPort Passthrough (OpenTX) +Lidar360 +Beacon +Volz servo out +SBus servo out +ESC Telemetry +Devo Telemetry + +True + + + +1200 +2400 +4800 +9600 +19200 +38400 +57600 +111100 +115200 +500000 +921600 +1500000 + + + + +None +MAVLink1 +MAVLink2 +Frsky D +Frsky SPort +GPS +Alexmos Gimbal Serial +SToRM32 Gimbal Serial +Rangefinder +FrSky SPort Passthrough (OpenTX) +Lidar360 +Beacon +Volz servo out +SBus servo out +ESC Telemetry +Devo Telemetry + +True + + + +1200 +2400 +4800 +9600 +19200 +38400 +57600 +111100 +115200 +500000 +921600 +1500000 + + + + +None +MAVLink1 +MAVLink2 +Frsky D +Frsky SPort +GPS +Alexmos Gimbal Serial +SToRM32 Gimbal Serial +Rangefinder +FrSky SPort Passthrough (OpenTX) +Lidar360 +Beacon +Volz servo out +SBus servo out +ESC Telemetry +Devo Telemetry + +True + + + +1200 +2400 +4800 +9600 +19200 +38400 +57600 +111100 +115200 +500000 +921600 +1500000 + + + + +None +MAVLink1 +MAVLink2 +Frsky D +Frsky SPort +GPS +Alexmos Gimbal Serial +SToRM32 Gimbal Serial +Rangefinder +FrSky SPort Passthrough (OpenTX) +Lidar360 +Beacon +Volz servo out +SBus servo out +ESC Telemetry +Devo Telemetry + +True + + + +1200 +2400 +4800 +9600 +19200 +38400 +57600 +111100 +115200 +500000 +921600 +1500000 + + + + +None +MAVLink1 +MAVLink2 +Frsky D +Frsky SPort +GPS +Alexmos Gimbal Serial +SToRM32 Gimbal Serial +Rangefinder +FrSky SPort Passthrough (OpenTX) +Lidar360 +Beacon +Volz servo out +SBus servo out +ESC Telemetry +Devo Telemetry + +True + + + +1200 +2400 +4800 +9600 +19200 +38400 +57600 +111100 +115200 +500000 +921600 +1500000 + + + + +None +MAVLink1 +MAVLink2 +Frsky D +Frsky SPort +GPS +Alexmos Gimbal Serial +SToRM32 Gimbal Serial +Rangefinder +FrSky SPort Passthrough (OpenTX) +Lidar360 +Beacon +Volz servo out +SBus servo out +ESC Telemetry +Devo Telemetry + +True + + + +1200 +2400 +4800 +9600 +19200 +38400 +57600 +111100 +115200 +500000 +921600 +1500000 + + + + + + +Disable +Enable + + + +25 400 +Hz +hertz + + + + +500 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + + +Normal +Reversed + + + + +Disabled +RCPassThru +Flap +Flap_auto +Aileron +mount_pan +mount_tilt +mount_roll +mount_open +camera_trigger +release +mount2_pan +mount2_tilt +mount2_roll +mount2_open +DifferentialSpoilerLeft1 +DifferentialSpoilerRight1 +DifferentialSpoilerLeft2 +DifferentialSpoilerRight2 +Elevator +Rudder +FlaperonLeft +FlaperonRight +GroundSteering +Parachute +EPM +LandingGear +EngineRunEnable +HeliRSC +HeliTailRSC +Motor1 +Motor2 +Motor3 +Motor4 +Motor5 +Motor6 +Motor7 +Motor8 +MotorTilt +RCIN1 +RCIN2 +RCIN3 +RCIN4 +RCIN5 +RCIN6 +RCIN7 +RCIN8 +RCIN9 +RCIN10 +RCIN11 +RCIN12 +RCIN13 +RCIN14 +RCIN15 +RCIN16 +Ignition +Choke +Starter +Throttle +TrackerYaw +TrackerPitch +ThrottleLeft +ThrottleRight +tiltMotorLeft +tiltMotorRight +ElevonLeft +ElevonRight +VTailLeft +VTailRight +BoostThrottle +Motor9 +Motor10 +Motor11 +Motor12 +Winch + + + + + +500 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + + +Normal +Reversed + + + + +Disabled +RCPassThru +Flap +Flap_auto +Aileron +mount_pan +mount_tilt +mount_roll +mount_open +camera_trigger +release +mount2_pan +mount2_tilt +mount2_roll +mount2_open +DifferentialSpoilerLeft1 +DifferentialSpoilerRight1 +DifferentialSpoilerLeft2 +DifferentialSpoilerRight2 +Elevator +Rudder +FlaperonLeft +FlaperonRight +GroundSteering +Parachute +EPM +LandingGear +EngineRunEnable +HeliRSC +HeliTailRSC +Motor1 +Motor2 +Motor3 +Motor4 +Motor5 +Motor6 +Motor7 +Motor8 +MotorTilt +RCIN1 +RCIN2 +RCIN3 +RCIN4 +RCIN5 +RCIN6 +RCIN7 +RCIN8 +RCIN9 +RCIN10 +RCIN11 +RCIN12 +RCIN13 +RCIN14 +RCIN15 +RCIN16 +Ignition +Choke +Starter +Throttle +TrackerYaw +TrackerPitch +ThrottleLeft +ThrottleRight +tiltMotorLeft +tiltMotorRight +ElevonLeft +ElevonRight +VTailLeft +VTailRight +BoostThrottle +Motor9 +Motor10 +Motor11 +Motor12 +Winch + + + + + +500 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + + +Normal +Reversed + + + + +Disabled +RCPassThru +Flap +Flap_auto +Aileron +mount_pan +mount_tilt +mount_roll +mount_open +camera_trigger +release +mount2_pan +mount2_tilt +mount2_roll +mount2_open +DifferentialSpoilerLeft1 +DifferentialSpoilerRight1 +DifferentialSpoilerLeft2 +DifferentialSpoilerRight2 +Elevator +Rudder +FlaperonLeft +FlaperonRight +GroundSteering +Parachute +EPM +LandingGear +EngineRunEnable +HeliRSC +HeliTailRSC +Motor1 +Motor2 +Motor3 +Motor4 +Motor5 +Motor6 +Motor7 +Motor8 +MotorTilt +RCIN1 +RCIN2 +RCIN3 +RCIN4 +RCIN5 +RCIN6 +RCIN7 +RCIN8 +RCIN9 +RCIN10 +RCIN11 +RCIN12 +RCIN13 +RCIN14 +RCIN15 +RCIN16 +Ignition +Choke +Starter +Throttle +TrackerYaw +TrackerPitch +ThrottleLeft +ThrottleRight +tiltMotorLeft +tiltMotorRight +ElevonLeft +ElevonRight +VTailLeft +VTailRight +BoostThrottle +Motor9 +Motor10 +Motor11 +Motor12 +Winch + + + + + +500 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + + +Normal +Reversed + + + + +Disabled +RCPassThru +Flap +Flap_auto +Aileron +mount_pan +mount_tilt +mount_roll +mount_open +camera_trigger +release +mount2_pan +mount2_tilt +mount2_roll +mount2_open +DifferentialSpoilerLeft1 +DifferentialSpoilerRight1 +DifferentialSpoilerLeft2 +DifferentialSpoilerRight2 +Elevator +Rudder +FlaperonLeft +FlaperonRight +GroundSteering +Parachute +EPM +LandingGear +EngineRunEnable +HeliRSC +HeliTailRSC +Motor1 +Motor2 +Motor3 +Motor4 +Motor5 +Motor6 +Motor7 +Motor8 +MotorTilt +RCIN1 +RCIN2 +RCIN3 +RCIN4 +RCIN5 +RCIN6 +RCIN7 +RCIN8 +RCIN9 +RCIN10 +RCIN11 +RCIN12 +RCIN13 +RCIN14 +RCIN15 +RCIN16 +Ignition +Choke +Starter +Throttle +TrackerYaw +TrackerPitch +ThrottleLeft +ThrottleRight +tiltMotorLeft +tiltMotorRight +ElevonLeft +ElevonRight +VTailLeft +VTailRight +BoostThrottle +Motor9 +Motor10 +Motor11 +Motor12 +Winch + + + + + +500 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + + +Normal +Reversed + + + + +Disabled +RCPassThru +Flap +Flap_auto +Aileron +mount_pan +mount_tilt +mount_roll +mount_open +camera_trigger +release +mount2_pan +mount2_tilt +mount2_roll +mount2_open +DifferentialSpoilerLeft1 +DifferentialSpoilerRight1 +DifferentialSpoilerLeft2 +DifferentialSpoilerRight2 +Elevator +Rudder +FlaperonLeft +FlaperonRight +GroundSteering +Parachute +EPM +LandingGear +EngineRunEnable +HeliRSC +HeliTailRSC +Motor1 +Motor2 +Motor3 +Motor4 +Motor5 +Motor6 +Motor7 +Motor8 +MotorTilt +RCIN1 +RCIN2 +RCIN3 +RCIN4 +RCIN5 +RCIN6 +RCIN7 +RCIN8 +RCIN9 +RCIN10 +RCIN11 +RCIN12 +RCIN13 +RCIN14 +RCIN15 +RCIN16 +Ignition +Choke +Starter +Throttle +TrackerYaw +TrackerPitch +ThrottleLeft +ThrottleRight +tiltMotorLeft +tiltMotorRight +ElevonLeft +ElevonRight +VTailLeft +VTailRight +BoostThrottle +Motor9 +Motor10 +Motor11 +Motor12 +Winch + + + + + +500 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + + +Normal +Reversed + + + + +Disabled +RCPassThru +Flap +Flap_auto +Aileron +mount_pan +mount_tilt +mount_roll +mount_open +camera_trigger +release +mount2_pan +mount2_tilt +mount2_roll +mount2_open +DifferentialSpoilerLeft1 +DifferentialSpoilerRight1 +DifferentialSpoilerLeft2 +DifferentialSpoilerRight2 +Elevator +Rudder +FlaperonLeft +FlaperonRight +GroundSteering +Parachute +EPM +LandingGear +EngineRunEnable +HeliRSC +HeliTailRSC +Motor1 +Motor2 +Motor3 +Motor4 +Motor5 +Motor6 +Motor7 +Motor8 +MotorTilt +RCIN1 +RCIN2 +RCIN3 +RCIN4 +RCIN5 +RCIN6 +RCIN7 +RCIN8 +RCIN9 +RCIN10 +RCIN11 +RCIN12 +RCIN13 +RCIN14 +RCIN15 +RCIN16 +Ignition +Choke +Starter +Throttle +TrackerYaw +TrackerPitch +ThrottleLeft +ThrottleRight +tiltMotorLeft +tiltMotorRight +ElevonLeft +ElevonRight +VTailLeft +VTailRight +BoostThrottle +Motor9 +Motor10 +Motor11 +Motor12 +Winch + + + + + +500 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + + +Normal +Reversed + + + + +Disabled +RCPassThru +Flap +Flap_auto +Aileron +mount_pan +mount_tilt +mount_roll +mount_open +camera_trigger +release +mount2_pan +mount2_tilt +mount2_roll +mount2_open +DifferentialSpoilerLeft1 +DifferentialSpoilerRight1 +DifferentialSpoilerLeft2 +DifferentialSpoilerRight2 +Elevator +Rudder +FlaperonLeft +FlaperonRight +GroundSteering +Parachute +EPM +LandingGear +EngineRunEnable +HeliRSC +HeliTailRSC +Motor1 +Motor2 +Motor3 +Motor4 +Motor5 +Motor6 +Motor7 +Motor8 +MotorTilt +RCIN1 +RCIN2 +RCIN3 +RCIN4 +RCIN5 +RCIN6 +RCIN7 +RCIN8 +RCIN9 +RCIN10 +RCIN11 +RCIN12 +RCIN13 +RCIN14 +RCIN15 +RCIN16 +Ignition +Choke +Starter +Throttle +TrackerYaw +TrackerPitch +ThrottleLeft +ThrottleRight +tiltMotorLeft +tiltMotorRight +ElevonLeft +ElevonRight +VTailLeft +VTailRight +BoostThrottle +Motor9 +Motor10 +Motor11 +Motor12 +Winch + + + + + +500 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + + +Normal +Reversed + + + + +Disabled +RCPassThru +Flap +Flap_auto +Aileron +mount_pan +mount_tilt +mount_roll +mount_open +camera_trigger +release +mount2_pan +mount2_tilt +mount2_roll +mount2_open +DifferentialSpoilerLeft1 +DifferentialSpoilerRight1 +DifferentialSpoilerLeft2 +DifferentialSpoilerRight2 +Elevator +Rudder +FlaperonLeft +FlaperonRight +GroundSteering +Parachute +EPM +LandingGear +EngineRunEnable +HeliRSC +HeliTailRSC +Motor1 +Motor2 +Motor3 +Motor4 +Motor5 +Motor6 +Motor7 +Motor8 +MotorTilt +RCIN1 +RCIN2 +RCIN3 +RCIN4 +RCIN5 +RCIN6 +RCIN7 +RCIN8 +RCIN9 +RCIN10 +RCIN11 +RCIN12 +RCIN13 +RCIN14 +RCIN15 +RCIN16 +Ignition +Choke +Starter +Throttle +TrackerYaw +TrackerPitch +ThrottleLeft +ThrottleRight +tiltMotorLeft +tiltMotorRight +ElevonLeft +ElevonRight +VTailLeft +VTailRight +BoostThrottle +Motor9 +Motor10 +Motor11 +Motor12 +Winch + + + + + +500 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + + +Normal +Reversed + + + + +Disabled +RCPassThru +Flap +Flap_auto +Aileron +mount_pan +mount_tilt +mount_roll +mount_open +camera_trigger +release +mount2_pan +mount2_tilt +mount2_roll +mount2_open +DifferentialSpoilerLeft1 +DifferentialSpoilerRight1 +DifferentialSpoilerLeft2 +DifferentialSpoilerRight2 +Elevator +Rudder +FlaperonLeft +FlaperonRight +GroundSteering +Parachute +EPM +LandingGear +EngineRunEnable +HeliRSC +HeliTailRSC +Motor1 +Motor2 +Motor3 +Motor4 +Motor5 +Motor6 +Motor7 +Motor8 +MotorTilt +RCIN1 +RCIN2 +RCIN3 +RCIN4 +RCIN5 +RCIN6 +RCIN7 +RCIN8 +RCIN9 +RCIN10 +RCIN11 +RCIN12 +RCIN13 +RCIN14 +RCIN15 +RCIN16 +Ignition +Choke +Starter +Throttle +TrackerYaw +TrackerPitch +ThrottleLeft +ThrottleRight +tiltMotorLeft +tiltMotorRight +ElevonLeft +ElevonRight +VTailLeft +VTailRight +BoostThrottle +Motor9 +Motor10 +Motor11 +Motor12 +Winch + + + + + +500 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + + +Normal +Reversed + + + + +Disabled +RCPassThru +Flap +Flap_auto +Aileron +mount_pan +mount_tilt +mount_roll +mount_open +camera_trigger +release +mount2_pan +mount2_tilt +mount2_roll +mount2_open +DifferentialSpoilerLeft1 +DifferentialSpoilerRight1 +DifferentialSpoilerLeft2 +DifferentialSpoilerRight2 +Elevator +Rudder +FlaperonLeft +FlaperonRight +GroundSteering +Parachute +EPM +LandingGear +EngineRunEnable +HeliRSC +HeliTailRSC +Motor1 +Motor2 +Motor3 +Motor4 +Motor5 +Motor6 +Motor7 +Motor8 +MotorTilt +RCIN1 +RCIN2 +RCIN3 +RCIN4 +RCIN5 +RCIN6 +RCIN7 +RCIN8 +RCIN9 +RCIN10 +RCIN11 +RCIN12 +RCIN13 +RCIN14 +RCIN15 +RCIN16 +Ignition +Choke +Starter +Throttle +TrackerYaw +TrackerPitch +ThrottleLeft +ThrottleRight +tiltMotorLeft +tiltMotorRight +ElevonLeft +ElevonRight +VTailLeft +VTailRight +BoostThrottle +Motor9 +Motor10 +Motor11 +Motor12 +Winch + + + + + +500 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + + +Normal +Reversed + + + + +Disabled +RCPassThru +Flap +Flap_auto +Aileron +mount_pan +mount_tilt +mount_roll +mount_open +camera_trigger +release +mount2_pan +mount2_tilt +mount2_roll +mount2_open +DifferentialSpoilerLeft1 +DifferentialSpoilerRight1 +DifferentialSpoilerLeft2 +DifferentialSpoilerRight2 +Elevator +Rudder +FlaperonLeft +FlaperonRight +GroundSteering +Parachute +EPM +LandingGear +EngineRunEnable +HeliRSC +HeliTailRSC +Motor1 +Motor2 +Motor3 +Motor4 +Motor5 +Motor6 +Motor7 +Motor8 +MotorTilt +RCIN1 +RCIN2 +RCIN3 +RCIN4 +RCIN5 +RCIN6 +RCIN7 +RCIN8 +RCIN9 +RCIN10 +RCIN11 +RCIN12 +RCIN13 +RCIN14 +RCIN15 +RCIN16 +Ignition +Choke +Starter +Throttle +TrackerYaw +TrackerPitch +ThrottleLeft +ThrottleRight +tiltMotorLeft +tiltMotorRight +ElevonLeft +ElevonRight +VTailLeft +VTailRight +BoostThrottle +Motor9 +Motor10 +Motor11 +Motor12 +Winch + + + + + +500 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + + +Normal +Reversed + + + + +Disabled +RCPassThru +Flap +Flap_auto +Aileron +mount_pan +mount_tilt +mount_roll +mount_open +camera_trigger +release +mount2_pan +mount2_tilt +mount2_roll +mount2_open +DifferentialSpoilerLeft1 +DifferentialSpoilerRight1 +DifferentialSpoilerLeft2 +DifferentialSpoilerRight2 +Elevator +Rudder +FlaperonLeft +FlaperonRight +GroundSteering +Parachute +EPM +LandingGear +EngineRunEnable +HeliRSC +HeliTailRSC +Motor1 +Motor2 +Motor3 +Motor4 +Motor5 +Motor6 +Motor7 +Motor8 +MotorTilt +RCIN1 +RCIN2 +RCIN3 +RCIN4 +RCIN5 +RCIN6 +RCIN7 +RCIN8 +RCIN9 +RCIN10 +RCIN11 +RCIN12 +RCIN13 +RCIN14 +RCIN15 +RCIN16 +Ignition +Choke +Starter +Throttle +TrackerYaw +TrackerPitch +ThrottleLeft +ThrottleRight +tiltMotorLeft +tiltMotorRight +ElevonLeft +ElevonRight +VTailLeft +VTailRight +BoostThrottle +Motor9 +Motor10 +Motor11 +Motor12 +Winch + + + + + +500 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + + +Normal +Reversed + + + + +Disabled +RCPassThru +Flap +Flap_auto +Aileron +mount_pan +mount_tilt +mount_roll +mount_open +camera_trigger +release +mount2_pan +mount2_tilt +mount2_roll +mount2_open +DifferentialSpoilerLeft1 +DifferentialSpoilerRight1 +DifferentialSpoilerLeft2 +DifferentialSpoilerRight2 +Elevator +Rudder +FlaperonLeft +FlaperonRight +GroundSteering +Parachute +EPM +LandingGear +EngineRunEnable +HeliRSC +HeliTailRSC +Motor1 +Motor2 +Motor3 +Motor4 +Motor5 +Motor6 +Motor7 +Motor8 +MotorTilt +RCIN1 +RCIN2 +RCIN3 +RCIN4 +RCIN5 +RCIN6 +RCIN7 +RCIN8 +RCIN9 +RCIN10 +RCIN11 +RCIN12 +RCIN13 +RCIN14 +RCIN15 +RCIN16 +Ignition +Choke +Starter +Throttle +TrackerYaw +TrackerPitch +ThrottleLeft +ThrottleRight +tiltMotorLeft +tiltMotorRight +ElevonLeft +ElevonRight +VTailLeft +VTailRight +BoostThrottle +Motor9 +Motor10 +Motor11 +Motor12 +Winch + + + + + +500 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + + +Normal +Reversed + + + + +Disabled +RCPassThru +Flap +Flap_auto +Aileron +mount_pan +mount_tilt +mount_roll +mount_open +camera_trigger +release +mount2_pan +mount2_tilt +mount2_roll +mount2_open +DifferentialSpoilerLeft1 +DifferentialSpoilerRight1 +DifferentialSpoilerLeft2 +DifferentialSpoilerRight2 +Elevator +Rudder +FlaperonLeft +FlaperonRight +GroundSteering +Parachute +EPM +LandingGear +EngineRunEnable +HeliRSC +HeliTailRSC +Motor1 +Motor2 +Motor3 +Motor4 +Motor5 +Motor6 +Motor7 +Motor8 +MotorTilt +RCIN1 +RCIN2 +RCIN3 +RCIN4 +RCIN5 +RCIN6 +RCIN7 +RCIN8 +RCIN9 +RCIN10 +RCIN11 +RCIN12 +RCIN13 +RCIN14 +RCIN15 +RCIN16 +Ignition +Choke +Starter +Throttle +TrackerYaw +TrackerPitch +ThrottleLeft +ThrottleRight +tiltMotorLeft +tiltMotorRight +ElevonLeft +ElevonRight +VTailLeft +VTailRight +BoostThrottle +Motor9 +Motor10 +Motor11 +Motor12 +Winch + + + + + +500 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + + +Normal +Reversed + + + + +Disabled +RCPassThru +Flap +Flap_auto +Aileron +mount_pan +mount_tilt +mount_roll +mount_open +camera_trigger +release +mount2_pan +mount2_tilt +mount2_roll +mount2_open +DifferentialSpoilerLeft1 +DifferentialSpoilerRight1 +DifferentialSpoilerLeft2 +DifferentialSpoilerRight2 +Elevator +Rudder +FlaperonLeft +FlaperonRight +GroundSteering +Parachute +EPM +LandingGear +EngineRunEnable +HeliRSC +HeliTailRSC +Motor1 +Motor2 +Motor3 +Motor4 +Motor5 +Motor6 +Motor7 +Motor8 +MotorTilt +RCIN1 +RCIN2 +RCIN3 +RCIN4 +RCIN5 +RCIN6 +RCIN7 +RCIN8 +RCIN9 +RCIN10 +RCIN11 +RCIN12 +RCIN13 +RCIN14 +RCIN15 +RCIN16 +Ignition +Choke +Starter +Throttle +TrackerYaw +TrackerPitch +ThrottleLeft +ThrottleRight +tiltMotorLeft +tiltMotorRight +ElevonLeft +ElevonRight +VTailLeft +VTailRight +BoostThrottle +Motor9 +Motor10 +Motor11 +Motor12 +Winch + + + + + +500 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + + +Normal +Reversed + + + + +Disabled +RCPassThru +Flap +Flap_auto +Aileron +mount_pan +mount_tilt +mount_roll +mount_open +camera_trigger +release +mount2_pan +mount2_tilt +mount2_roll +mount2_open +DifferentialSpoilerLeft1 +DifferentialSpoilerRight1 +DifferentialSpoilerLeft2 +DifferentialSpoilerRight2 +Elevator +Rudder +FlaperonLeft +FlaperonRight +GroundSteering +Parachute +EPM +LandingGear +EngineRunEnable +HeliRSC +HeliTailRSC +Motor1 +Motor2 +Motor3 +Motor4 +Motor5 +Motor6 +Motor7 +Motor8 +MotorTilt +RCIN1 +RCIN2 +RCIN3 +RCIN4 +RCIN5 +RCIN6 +RCIN7 +RCIN8 +RCIN9 +RCIN10 +RCIN11 +RCIN12 +RCIN13 +RCIN14 +RCIN15 +RCIN16 +Ignition +Choke +Starter +Throttle +TrackerYaw +TrackerPitch +ThrottleLeft +ThrottleRight +tiltMotorLeft +tiltMotorRight +ElevonLeft +ElevonRight +VTailLeft +VTailRight +BoostThrottle +Motor9 +Motor10 +Motor11 +Motor12 +Winch + + + + + +0:Channel1,1:Channel2,2:Channel3,3:Channel4,4:Channel5,5:Channel6,6:Channel7,7:Channel8,8:Channel9,9:Channel10,10:Channel11,11:Channel12,12:Channel13,13:Channel14,14:Channel15,15:Channel16 + + + +Disabled +Enabled + + + + +Disabled +TestMotor1 +TestMotor2 +TestMotor3 +TestMotor4 +TestMotor5 +TestMotor6 +TestMotor7 +TestMotor8 + + + +0 300 +s +seconds + + +0 500 +Hz +hertz + + + +Disabled +Enabled + + + + +None +OneShot +OneShot125 +Brushed +DShot150 +DShot300 +DShot600 +DShot1200 + + + + +Console +Telem1 +Telem2 +Telem3 +Telem4 +Telem5 + + + + + +25 250 +Hz +hertz + + + + +0:Channel1,1:Channel2,2:Channel3,3:Channel4,4:Channel5,5:Channel6,6:Channel7,7:Channel8,8:Channel9,9:Channel10,10:Channel11,11:Channel12,12:Channel13,13:Channel14,14:Channel15,15:Channel16 + + + + + +Disable +Enable + + + +0 10 +m/s +meters per second + + +0 100 +m +meters + + +0 32768 +s +seconds + + +0 32768 +s +seconds + + +0 0.5 +m.m/s/s +square meter per square second + + +0 1000.0 +m +meters + + +0 1000.0 +m +meters + + +0 1000.0 +m +meters + + +0 16 + + + + +0 10 +1 +Hz +hertz + + +0 10 +1 +Hz +hertz + + +0 10 +1 +Hz +hertz + + +0 10 +1 +Hz +hertz + + +0 10 +1 +Hz +hertz + + +0 10 +1 +Hz +hertz + + +0 10 +1 +Hz +hertz + + +0 10 +1 +Hz +hertz + + +0 10 +1 +Hz +hertz + + +0 50 +1 +Hz +hertz + + + + +0 10 +1 +Hz +hertz + + +0 10 +1 +Hz +hertz + + +0 10 +1 +Hz +hertz + + +0 10 +1 +Hz +hertz + + +0 10 +1 +Hz +hertz + + +0 10 +1 +Hz +hertz + + +0 10 +1 +Hz +hertz + + +0 10 +1 +Hz +hertz + + +0 10 +1 +Hz +hertz + + +0 50 +1 +Hz +hertz + + + + +0 10 +1 +Hz +hertz + + +0 10 +1 +Hz +hertz + + +0 10 +1 +Hz +hertz + + +0 10 +1 +Hz +hertz + + +0 10 +1 +Hz +hertz + + +0 10 +1 +Hz +hertz + + +0 10 +1 +Hz +hertz + + +0 10 +1 +Hz +hertz + + +0 10 +1 +Hz +hertz + + +0 50 +1 +Hz +hertz + + + + +0 10 +1 +Hz +hertz + + +0 10 +1 +Hz +hertz + + +0 10 +1 +Hz +hertz + + +0 10 +1 +Hz +hertz + + +0 10 +1 +Hz +hertz + + +0 10 +1 +Hz +hertz + + +0 10 +1 +Hz +hertz + + +0 10 +1 +Hz +hertz + + +0 10 +1 +Hz +hertz + + +0 50 +1 +Hz +hertz + + + + +True + + +True +s +seconds + + +True +s +seconds + + +True +s +seconds + + + + +0.4 1.0 +0.1 +s +seconds + + +0.1 10.0 +0.1 + + +0 1.0 +0.05 + + +0 0.1 +0.01 + + +0 4500 +1 +cdeg +centidegrees + + +0 5 +0.1 +m/s +meters per second + + +0.0 10.0 +0.1 + + +0.0 30.0 +0.1 +m/s +meters per second + + +0.0 50.0 +0.1 +deg/m/s +degrees per meter per second + + +0.0 4500.0 +0.1 +cdeg +centidegrees + + + + +0.1 20.0 +0.1 + + +0.1 10.0 +0.1 + + +3.0 10.0 +0.2 + + +0.1 1.0 +0.1 + + +0.0 0.5 +0.02 + + +1.0 10.0 +0.5 + + +1.0 5.0 +0.05 + + +0.5 2.0 +0.05 + + +5.0 30.0 +1.0 + + +0.0 2.0 +0.1 + + +0.1 1.0 +0.1 + + +0.0 20.0 +0.1 + + +-1 127 +1 + + +-1 100 +0.1 + + +-1.0 2.0 +0.1 + + +0 45 +1 + + +-45 0 +1 + + +0.0 2.0 +0.1 + + +1.0 5.0 +0.2 + + +0.1 1.0 +0.1 + + +-5 40 +1 + + +0.0 20.0 +0.1 +m/s +meters per second + + +-2.0 2.0 +0.1 +m/s/m +meters per second per meter + + +0.1 1.0 +0.1 + + +0.0 0.5 +0.02 + + +0.0 0.5 +0.02 + + +0.1 1.0 +0.1 + + + +Disable +Enable + + + + + + +Disable +Enable + + + +1 +m +meters + + + + + +None +RateRollPI +RateRollP +RateRollI +RateRollD +RatePitchPI +RatePitchP +RatePitchI +RatePitchD +RateYawPI +RateYawP +RateYawI +RateYawD +AngleRollP +AnglePitchP +AngleYawP +PosXYP +PosZP +VelXYP +VelXYI +VelZP +AccelZP +AccelZI +AccelZD +FixedWingRollP +FixedWingRollI +FixedWingRollD +FixedWingRollFF +FixedWingPitchP +FixedWingPitchI +FixedWingPitchD +FixedWingPitchFF +Set_RateRollPitch +Set_RateRoll +Set_RatePitch +Set_RateYaw +Set_AngleRollPitch +Set_VelXY +Set_AccelZ + + + + +Disable +Chan5 +Chan6 +Chan7 +Chan8 +Chan9 +Chan10 +Chan11 +Chan12 +Chan13 +Chan14 +Chan15 +Chan16 + + + +900 2100 + + +900 2100 + + + +Disable +Chan1 +Chan3 +Chan3 +Chan4 +Chan5 +Chan6 +Chan7 +Chan8 +Chan9 +Chan10 +Chan11 +Chan12 +Chan13 +Chan14 +Chan15 +Chan16 + + + + + + +Disable +Enable + + + +0 1 + + + + +0 4 +0.25 + + +0 2 +0.25 + + +0 2 +0.25 + + +0.8 1.2 +0.05 + + +0 4500 +1 + + + diff --git a/src/FirmwarePlugin/APM/APMParameterFactMetaData.Plane.4.0.xml b/src/FirmwarePlugin/APM/APMParameterFactMetaData.Plane.4.0.xml new file mode 100644 index 0000000..27872b3 --- /dev/null +++ b/src/FirmwarePlugin/APM/APMParameterFactMetaData.Plane.4.0.xml @@ -0,0 +1,14946 @@ + + + + + + + + +1 255 + + +1 255 + + +1 10 +1 + + +s +seconds +0 30 +1 + + +0:Roll,1:Pitch,2:Yaw,3:Steering,4:Landing + + +0 1 +0.01 + + +0 5 +0.01 + + +0 15 +0.1 +deg +degrees + + +0 1000 +1 +m +meters + + +0 100 +1 +m +meters + + + +Disabled +FBWMixing +DirectMixing + + + + +Disabled +Enabled + + + +m/s +meters per second +0 30 +0.1 + + +m/s/s +meters per square second +0 30 +0.1 + + +ds +deciseconds +0 127 +1 + + +% +percent +-100 100 +1 + + +m/s +meters per second +0 30 +0.1 + + +m/s +meters per second +0 30 +0.1 + + +%/s +percent per second +-1 127 +1 + + +s +seconds +0 10 +0.5 + + +0 100 +% +percent + + + + +deg +degrees +0 45 +1 + + + +Never +AutoAlways +AutoLanding + +0:AUTO_ALWAYS,1:AUTO_LAND,2:AUTO_LOITER_TO_ALT,3:AUTO_LOITER_ALL,4:AUTO_WAYPOINTS,5:LOITER,6:RTL,7:CIRCLE,8:CRUISE,9:FBWB,10:GUIDED + + + +Default +L1Controller + + + + +Automatic + + + +m +meters +-32767 32767 +1 + + +m +meters +1 32767 +1 + + +m +meters +0 32767 +1 + + +m +meters +-32767 32767 +1 + + +m +meters +-32767 32767 +1 + + + +None +GuidedMode +ReportOnly +GuidedModeThrPass +RTL_Mode + + + + + + + +m +meters +0 32767 +1 + + +m +meters +0 32767 +1 + + +m +meters +0 32767 +1 + + + +NoAutoEnable +AutoEnable +AutoEnableDisableFloorOnly +EnableWhenArmed + + + + +FenceReturnPoint +NearestRallyPoint + + + + +Disabled +Enabled + + + +m/s +meters per second +5 100 +1 + + +m/s +meters per second +5 100 +1 + + + +Disabled +Enabled + + + + +Disabled +Enabled + + + +0 10000 +m +meters + + +1 10 +m/s +meters per second +0.1 + + +% +percent +-100 100 +1 + + +% +percent +0 100 +1 + + +% +percent +0 100 +1 + + +%/s +percent per second +0 127 +1 + + +%/s +percent per second +0 100 +1 + + + +Disabled +Enabled + + + + +Disabled +Enabled + + + + +Disabled +Enabled +EnabledNoFailsafe + + + +925 2200 +1 + + +% +percent +0 100 +1 + + + +Disabled +Enabled + + + + +CIRCLE/no change(if already in AUTO|GUIDED|LOITER) +CIRCLE +FBWA +Disable + + + +s +seconds +1 100 +0.5 + + + +Continue +ReturnToLaunch +Glide +Deploy Parachute + + + +s +seconds +1 300 +0.5 + + + +Disabled +Heartbeat +HeartbeatAndREMRSSI +HeartbeatAndAUTO + + + + + + +Manual +CIRCLE +STABILIZE +TRAINING +ACRO +FBWA +FBWB +CRUISE +AUTOTUNE +Auto +RTL +Loiter +TAKEOFF +AVOID_ADSB +Guided +QSTABILIZE +QHOVER +QLOITER +QLAND +QRTL +QAUTOTUNE +QACRO + + + + +Manual +CIRCLE +STABILIZE +TRAINING +ACRO +FBWA +FBWB +CRUISE +AUTOTUNE +Auto +RTL +Loiter +TAKEOFF +AVOID_ADSB +Guided +QSTABILIZE +QHOVER +QLOITER +QLAND +QRTL +QAUTOTUNE +QACRO + + + + +Manual +CIRCLE +STABILIZE +TRAINING +ACRO +FBWA +FBWB +CRUISE +AUTOTUNE +Auto +RTL +Loiter +TAKEOFF +AVOID_ADSB +Guided +QSTABILIZE +QHOVER +QLOITER +QLAND +QRTL +QAUTOTUNE +QACRO + + + + +Manual +CIRCLE +STABILIZE +TRAINING +ACRO +FBWA +FBWB +CRUISE +AUTOTUNE +Auto +RTL +Loiter +TAKEOFF +AVOID_ADSB +Guided +QSTABILIZE +QHOVER +QLOITER +QLAND +QRTL +QAUTOTUNE +QACRO + + + + +Manual +CIRCLE +STABILIZE +TRAINING +ACRO +FBWA +FBWB +CRUISE +AUTOTUNE +Auto +RTL +Loiter +TAKEOFF +AVOID_ADSB +Guided +QSTABILIZE +QHOVER +QLOITER +QLAND +QRTL +QAUTOTUNE +QACRO + + + + +Manual +CIRCLE +STABILIZE +TRAINING +ACRO +FBWA +FBWB +CRUISE +AUTOTUNE +Auto +RTL +Loiter +TAKEOFF +AVOID_ADSB +Guided +QSTABILIZE +QHOVER +QLOITER +QLAND +QRTL +QAUTOTUNE +QACRO + + + + +Manual +CIRCLE +STABILIZE +TRAINING +ACRO +FBWA +FBWB +CRUISE +AUTOTUNE +Auto +RTL +Loiter +TAKEOFF +AVOID_ADSB +Guided +QSTABILIZE +QHOVER +QLOITER +QLAND +QRTL +QAUTOTUNE +QACRO + + + +cdeg +centidegrees +0 9000 +1 + + +cdeg +centidegrees +0 9000 +1 + + +cdeg +centidegrees +-9000 0 +1 + + +deg/s +degrees per second +10 500 +1 + + +deg/s +degrees per second +10 500 +1 + + + +Disabled +Enabled + + + +m +meters +-100 100 +0.1 + + +deg/s +degrees per second +10 360 +1 + + + +Disabled +Enabled + + + +0.5 1.2 + + + +Disabled +Enabled + + + +d% +decipercent +-1000 1000 + + +% +percent +-100 100 + + +True + + + +Disabled +All-Default + +0:ATTITUDE_FAST,1:ATTITUDE_MED,2:GPS,3:PM,4:CTUN,5:NTUN,6:MODE,7:IMU,8:CMD,9:CURRENT,10:COMPASS,11:TECS,12:CAMERA,13:RC,14:SONAR,15:ARM/DISARM,19:IMU_RAW + + + + + + +cm/s +centimeters per second + + +m/s +meters per second + + +cm/s +centimeters per second + + +cdeg +centidegrees + + +cm +centimeters + + +cm +centimeters + + + + +0 100 +% +percent + + +0 100 +1 +m/s +meters per second + + +0 100 +% +percent + + +0 100 +m/s +meters per second +1 + + + + + + + +Disabled +Enabled + +True + + + +Disabled +Enabled + + + +deg +degrees +0 90 +0.1 + + + +Disable +Enable - go HOME then land +Enable - go directly to landing sequence + + + +m/s/s +meters per square second +10 127 + + +0:Disarm + + + + + +Disabled +Enabled + + + + +NotEnforced +Enforced + + + +0 100 +% +percent +1 + + +0:Chan1,1:Chan2,2:Chan3,3:Chan4,4:Chan5,5:Chan6,6:Chan7,7:Chan8,8:Chan9,9:Chan10,10:Chan11,11:Chan12,12:Chan13,13:Chan14,14:Chan15,15:Chan16 + + + +Never reset +Always reset + +-1 127 +m +meters + + +0:Rudder mixing in direct flight modes only (Manual / Stabilize / Acro),1:Use centered throttle in Cruise or FBWB to indicate trim airspeed, 2:Disable attitude check for takeoff arming, 3:Force target airspeed to trim airspeed in Cruise or FBWB + + +1 10 + + +0 100 +% +percent +1 + + +0 100 +% +percent +1 + + +0 120 +1 +s +seconds + + +0: none, 1: D spoilers have pitch input, 2: use both control surfaces on each wing for roll, 4: Progressive crow flaps only first (0-50% flap in) then crow flaps (50 - 100% flap in) +0:pitch control, 1:full span, 2:Progressive crow + + +0 100 +% +percent +1 + + +6 35 +V +volt + + +6 35 +V +volt + + + +First battery +Second battery + + + +m +meters +0 30 +1 + + + + + +Disabled +Enabled + + + +1 100 + + +0 100000 +m +meters + + +-1 16777215 + + + +NoInfo +Light +Small +Large +HighVortexlarge +Heavy +HighlyManuv +Rotocraft +RESERVED +Glider +LightAir +Parachute +UltraLight +RESERVED +UAV +Space +RESERVED +EmergencySurface +ServiceSurface +PointObstacle + + + + +NO_DATA +L15W23 +L25W28P5 +L25W34 +L35W33 +L35W38 +L45W39P5 +L45W45 +L55W45 +L55W52 +L65W59P5 +L65W67 +L75W72P5 +L75W80 +L85W80 +L85W90 + + + + +NoData +Left2m +Left4m +Left6m +Center +Right2m +Right4m +Right6m + + + + +NO_DATA +AppliedBySensor + + + + +Disabled +Rx-Only +Tx-Only +Rx and Tx Enabled + + + +0 7777 +octal +octal + + + +Unknown +Rx UAT only +Rx UAT and 1090ES +Rx&Tx UAT and 1090ES + +0:UAT_in,1:1090ES_in,2:UAT_out,3:1090ES_out + + +0 32767 +m +meters + + + + + +no logging +log only special ID +log all + + + + + + + + + + +Disabled +BB Blue GP0 pin 4 +AUXOUT1 +AUXOUT2 +AUXOUT3 +AUXOUT4 +AUXOUT5 +AUXOUT6 +BB Blue GP0 pin 3 +BB Blue GP0 pin 6 +BB Blue GP0 pin 5 + + + + + + + + + + + + +Disabled +BB Blue GP0 pin 4 +AUXOUT1 +AUXOUT2 +AUXOUT3 +AUXOUT4 +AUXOUT5 +AUXOUT6 +BB Blue GP0 pin 3 +BB Blue GP0 pin 6 +BB Blue GP0 pin 5 + + + +m +meters + + +m +meters + + +mbar +millibar + + + + + + + + + + + + + + +s +seconds + + +km +kilometers + + + + +0.0 1.0 +.01 + + + +Disabled +Enabled + + + +0.1 0.4 +.01 + + +0.1 0.4 +.01 + + +0 127 +m/s +meters per second +1 + + +rad +radians +-0.1745 +0.1745 +0.01 + + +rad +radians +-0.1745 +0.1745 +0.01 + + +rad +radians +-0.1745 +0.1745 +0.01 + + + +None +Yaw45 +Yaw90 +Yaw135 +Yaw180 +Yaw225 +Yaw270 +Yaw315 +Roll180 +Roll180Yaw45 +Roll180Yaw90 +Roll180Yaw135 +Pitch180 +Roll180Yaw225 +Roll180Yaw270 +Roll180Yaw315 +Roll90 +Roll90Yaw45 +Roll90Yaw90 +Roll90Yaw135 +Roll270 +Roll270Yaw45 +Roll270Yaw90 +Roll270Yaw135 +Pitch90 +Pitch270 +Pitch180Yaw90 +Pitch180Yaw270 +Roll90Pitch90 +Roll180Pitch90 +Roll270Pitch90 +Roll90Pitch180 +Roll270Pitch180 +Roll90Pitch270 +Roll180Pitch270 +Roll270Pitch270 +Roll90Pitch180Yaw90 +Roll90Yaw270 +Yaw293Pitch68Roll180 +Pitch315 +Roll90Pitch315 +Custom + + + +0.001 0.5 +.01 + + +0 10 +1 + + + +Disabled +Enable EKF2 +Enable EKF3 + + + +-180 180 +deg +degrees +1 + + +-180 180 +deg +degrees +1 + + +-180 180 +deg +degrees +1 + + + + + +Disabled +THR_MIN PWM when disarmed +0 PWM when disarmed + + + +m/s/s +meters per square second +0.25 3.0 + + + +Disabled +ArmingOnly +ArmOrDisarm + + + +0:Land,1:VTOL Land,2:DO_LAND_START,3:Takeoff,4:VTOL Takeoff,5:Rallypoint + + + +None +All +Barometer +Compass +GPS Lock +INS(INertial Sensors - accels & gyros) +Parameters(unused) +RC Channels +Board voltage +Battery Level +Airspeed +LoggingAvailable +Hardware safety switch +GPS configuration +System +Mission +RangeFinder + +0:All,1:Barometer,2:Compass,3:GPS lock,4:INS,5:Parameters,6:RC Channels,7:Board voltage,8:Battery Level,9:Airspeed,10:Logging Available,11:Hardware safety switch,12:GPS Configuration,13:System,14:Mission,15:Rangefinder + + + + + +None +I2C-MS4525D0 +Analog +I2C-MS5525 +I2C-MS5525 (0x76) +I2C-MS5525 (0x77) +I2C-SDP3X +I2C-DLVR-5in +UAVCAN +I2C-DLVR-10in +I2C-DLVR-20in +I2C-DLVR-30in +I2C-DLVR-60in + + + + +DoNotUse +Use +UseWhenZeroThrottle + + + +0.1 + + +0.1 + + + + + + + + + +Disable +Enable + + + + + + +Bus0(internal) +Bus1(external) +Bus2(auxillary) + + + + +FirstSensor +2ndSensor + + + +0:Disable on sensor failure,1:Re-enable on sensor recovery + + + +None +I2C-MS4525D0 +Analog +I2C-MS5525 +I2C-MS5525 (0x76) +I2C-MS5525 (0x77) +I2C-SDP3X +I2C-DLVR-5in +UAVCAN +I2C-DLVR-10in +I2C-DLVR-20in +I2C-DLVR-30in +I2C-DLVR-60in + + + + +Don't Use +use +UseWhenZeroThrottle + + + +0.1 + + +0.1 + + + + + + + + + +Disable +Enable + + + + + + +Bus0(internal) +Bus1(external) +Bus2(auxillary) + + + + + + +Disabled +Enabled + + + + +Remain in AVOID_ADSB +Resume previous flight mode +RTL +Resume if AUTO else Loiter + + + + + +s +seconds + + +s +seconds + + +m +meters + + +m +meters + + +m +meters + + +m +meters + + +m +meters + + + + + +Disabled +Analog Voltage Only +Analog Voltage and Current +Solo +Bebop +SMBus-Maxell +UAVCAN-BatteryInfo +BLHeli ESC +SumOfFollowing +FuelFlow +FuelLevelPWM +SMBUS-SUI3 +SMBUS-SUI6 +NeoDesign + +True + + + +Disabled +Pixhawk/Pixracer/Navio2/Pixhawk2_PM1 +Pixhawk2_PM2 +CubeOrange +CubeOrange_PM2 +Durandal +PX4-v1 + +True + + + +Disabled +Pixhawk/Pixracer/Navio2/Pixhawk2_PM1 +Pixhawk2_PM2 +CubeOrange +CubeOrange_PM2 +Durandal +PX4-v1 + +True + + + + +A/V +ampere per volt + + +V +volt + + +mAh +milliampere hour +50 + + +W +watt +1 + + + + +s +seconds +1 +0 120 + + + +Raw Voltage +Sag Compensated Voltage + + + +V +volt +0.1 + + +mAh +milliampere hour +50 + + +V +volt +0.1 + + +mAh +milliampere hour +50 + + + +None +RTL +Land +Terminate +QLand + + + + +None +RTL +Land +Terminate +QLand +Parachute + + + +V +volt +0.1 + + +mAh +milliampere hour +50 + + +0 3 + + + + + +Disabled +Analog Voltage Only +Analog Voltage and Current +Solo +Bebop +SMBus-Maxell +UAVCAN-BatteryInfo +BLHeli ESC +SumOfFollowing +FuelFlow +FuelLevelPWM +SMBUS-SUI3 +SMBUS-SUI6 +NeoDesign + +True + + + +Disabled +Pixhawk/Pixracer/Navio2/Pixhawk2_PM1 +Pixhawk2_PM2 +CubeOrange +CubeOrange_PM2 +Durandal +PX4-v1 + +True + + + +Disabled +Pixhawk/Pixracer/Navio2/Pixhawk2_PM1 +Pixhawk2_PM2 +CubeOrange +CubeOrange_PM2 +Durandal +PX4-v1 + +True + + + + +A/V +ampere per volt + + +V +volt + + +mAh +milliampere hour +50 + + +W +watt +1 + + + + +s +seconds +1 +0 120 + + + +Raw Voltage +Sag Compensated Voltage + + + +V +volt +0.1 + + +mAh +milliampere hour +50 + + +V +volt +0.1 + + +mAh +milliampere hour +50 + + + +None +RTL +Land +Terminate +QLand + + + + +None +RTL +Land +Terminate +QLand +Parachute + + + +V +volt +0.1 + + +mAh +milliampere hour +50 + + +0 3 + + + + + +Disabled +Analog Voltage Only +Analog Voltage and Current +Solo +Bebop +SMBus-Maxell +UAVCAN-BatteryInfo +BLHeli ESC +SumOfFollowing +FuelFlow +FuelLevelPWM +SMBUS-SUI3 +SMBUS-SUI6 +NeoDesign + +True + + + +Disabled +Pixhawk/Pixracer/Navio2/Pixhawk2_PM1 +Pixhawk2_PM2 +CubeOrange +CubeOrange_PM2 +Durandal +PX4-v1 + +True + + + +Disabled +Pixhawk/Pixracer/Navio2/Pixhawk2_PM1 +Pixhawk2_PM2 +CubeOrange +CubeOrange_PM2 +Durandal +PX4-v1 + +True + + + + +A/V +ampere per volt + + +V +volt + + +mAh +milliampere hour +50 + + +W +watt +1 + + + + +s +seconds +1 +0 120 + + + +Raw Voltage +Sag Compensated Voltage + + + +V +volt +0.1 + + +mAh +milliampere hour +50 + + +V +volt +0.1 + + +mAh +milliampere hour +50 + + + +None +RTL +Land +Terminate +QLand + + + + +None +RTL +Land +Terminate +QLand +Parachute + + + +V +volt +0.1 + + +mAh +milliampere hour +50 + + +0 3 + + + + + +Disabled +Analog Voltage Only +Analog Voltage and Current +Solo +Bebop +SMBus-Maxell +UAVCAN-BatteryInfo +BLHeli ESC +SumOfFollowing +FuelFlow +FuelLevelPWM +SMBUS-SUI3 +SMBUS-SUI6 +NeoDesign + +True + + + +Disabled +Pixhawk/Pixracer/Navio2/Pixhawk2_PM1 +Pixhawk2_PM2 +CubeOrange +CubeOrange_PM2 +Durandal +PX4-v1 + +True + + + +Disabled +Pixhawk/Pixracer/Navio2/Pixhawk2_PM1 +Pixhawk2_PM2 +CubeOrange +CubeOrange_PM2 +Durandal +PX4-v1 + +True + + + + +A/V +ampere per volt + + +V +volt + + +mAh +milliampere hour +50 + + +W +watt +1 + + + + +s +seconds +1 +0 120 + + + +Raw Voltage +Sag Compensated Voltage + + + +V +volt +0.1 + + +mAh +milliampere hour +50 + + +V +volt +0.1 + + +mAh +milliampere hour +50 + + + +None +RTL +Land +Terminate +QLand + + + + +None +RTL +Land +Terminate +QLand +Parachute + + + +V +volt +0.1 + + +mAh +milliampere hour +50 + + +0 3 + + + + + +Disabled +Analog Voltage Only +Analog Voltage and Current +Solo +Bebop +SMBus-Maxell +UAVCAN-BatteryInfo +BLHeli ESC +SumOfFollowing +FuelFlow +FuelLevelPWM +SMBUS-SUI3 +SMBUS-SUI6 +NeoDesign + +True + + + +Disabled +Pixhawk/Pixracer/Navio2/Pixhawk2_PM1 +Pixhawk2_PM2 +CubeOrange +CubeOrange_PM2 +Durandal +PX4-v1 + +True + + + +Disabled +Pixhawk/Pixracer/Navio2/Pixhawk2_PM1 +Pixhawk2_PM2 +CubeOrange +CubeOrange_PM2 +Durandal +PX4-v1 + +True + + + + +A/V +ampere per volt + + +V +volt + + +mAh +milliampere hour +50 + + +W +watt +1 + + + + +s +seconds +1 +0 120 + + + +Raw Voltage +Sag Compensated Voltage + + + +V +volt +0.1 + + +mAh +milliampere hour +50 + + +V +volt +0.1 + + +mAh +milliampere hour +50 + + + +None +RTL +Land +Terminate +QLand + + + + +None +RTL +Land +Terminate +QLand +Parachute + + + +V +volt +0.1 + + +mAh +milliampere hour +50 + + +0 3 + + + + + +Disabled +Analog Voltage Only +Analog Voltage and Current +Solo +Bebop +SMBus-Maxell +UAVCAN-BatteryInfo +BLHeli ESC +SumOfFollowing +FuelFlow +FuelLevelPWM +SMBUS-SUI3 +SMBUS-SUI6 +NeoDesign + +True + + + +Disabled +Pixhawk/Pixracer/Navio2/Pixhawk2_PM1 +Pixhawk2_PM2 +CubeOrange +CubeOrange_PM2 +Durandal +PX4-v1 + +True + + + +Disabled +Pixhawk/Pixracer/Navio2/Pixhawk2_PM1 +Pixhawk2_PM2 +CubeOrange +CubeOrange_PM2 +Durandal +PX4-v1 + +True + + + + +A/V +ampere per volt + + +V +volt + + +mAh +milliampere hour +50 + + +W +watt +1 + + + + +s +seconds +1 +0 120 + + + +Raw Voltage +Sag Compensated Voltage + + + +V +volt +0.1 + + +mAh +milliampere hour +50 + + +V +volt +0.1 + + +mAh +milliampere hour +50 + + + +None +RTL +Land +Terminate +QLand + + + + +None +RTL +Land +Terminate +QLand +Parachute + + + +V +volt +0.1 + + +mAh +milliampere hour +50 + + +0 3 + + + + + +Disabled +Analog Voltage Only +Analog Voltage and Current +Solo +Bebop +SMBus-Maxell +UAVCAN-BatteryInfo +BLHeli ESC +SumOfFollowing +FuelFlow +FuelLevelPWM +SMBUS-SUI3 +SMBUS-SUI6 +NeoDesign + +True + + + +Disabled +Pixhawk/Pixracer/Navio2/Pixhawk2_PM1 +Pixhawk2_PM2 +CubeOrange +CubeOrange_PM2 +Durandal +PX4-v1 + +True + + + +Disabled +Pixhawk/Pixracer/Navio2/Pixhawk2_PM1 +Pixhawk2_PM2 +CubeOrange +CubeOrange_PM2 +Durandal +PX4-v1 + +True + + + + +A/V +ampere per volt + + +V +volt + + +mAh +milliampere hour +50 + + +W +watt +1 + + + + +s +seconds +1 +0 120 + + + +Raw Voltage +Sag Compensated Voltage + + + +V +volt +0.1 + + +mAh +milliampere hour +50 + + +V +volt +0.1 + + +mAh +milliampere hour +50 + + + +None +RTL +Land +Terminate +QLand + + + + +None +RTL +Land +Terminate +QLand +Parachute + + + +V +volt +0.1 + + +mAh +milliampere hour +50 + + +0 3 + + + + + +Disabled +Analog Voltage Only +Analog Voltage and Current +Solo +Bebop +SMBus-Maxell +UAVCAN-BatteryInfo +BLHeli ESC +SumOfFollowing +FuelFlow +FuelLevelPWM +SMBUS-SUI3 +SMBUS-SUI6 +NeoDesign + +True + + + +Disabled +Pixhawk/Pixracer/Navio2/Pixhawk2_PM1 +Pixhawk2_PM2 +CubeOrange +CubeOrange_PM2 +Durandal +PX4-v1 + +True + + + +Disabled +Pixhawk/Pixracer/Navio2/Pixhawk2_PM1 +Pixhawk2_PM2 +CubeOrange +CubeOrange_PM2 +Durandal +PX4-v1 + +True + + + + +A/V +ampere per volt + + +V +volt + + +mAh +milliampere hour +50 + + +W +watt +1 + + + + +s +seconds +1 +0 120 + + + +Raw Voltage +Sag Compensated Voltage + + + +V +volt +0.1 + + +mAh +milliampere hour +50 + + +V +volt +0.1 + + +mAh +milliampere hour +50 + + + +None +RTL +Land +Terminate +QLand + + + + +None +RTL +Land +Terminate +QLand +Parachute + + + +V +volt +0.1 + + +mAh +milliampere hour +50 + + +0 3 + + + + + +Disabled +Analog Voltage Only +Analog Voltage and Current +Solo +Bebop +SMBus-Maxell +UAVCAN-BatteryInfo +BLHeli ESC +SumOfFollowing +FuelFlow +FuelLevelPWM +SMBUS-SUI3 +SMBUS-SUI6 +NeoDesign + +True + + + +Disabled +Pixhawk/Pixracer/Navio2/Pixhawk2_PM1 +Pixhawk2_PM2 +CubeOrange +CubeOrange_PM2 +Durandal +PX4-v1 + +True + + + +Disabled +Pixhawk/Pixracer/Navio2/Pixhawk2_PM1 +Pixhawk2_PM2 +CubeOrange +CubeOrange_PM2 +Durandal +PX4-v1 + +True + + + + +A/V +ampere per volt + + +V +volt + + +mAh +milliampere hour +50 + + +W +watt +1 + + + + +s +seconds +1 +0 120 + + + +Raw Voltage +Sag Compensated Voltage + + + +V +volt +0.1 + + +mAh +milliampere hour +50 + + +V +volt +0.1 + + +mAh +milliampere hour +50 + + + +None +RTL +Land +Terminate +QLand + + + + +None +RTL +Land +Terminate +QLand +Parachute + + + +V +volt +0.1 + + +mAh +milliampere hour +50 + + +0 3 + + + + + +No PWMs +One PWMs +Two PWMs +Three PWMs +Four PWMs +Five PWMs +Six PWMs +Seven PWMs +Eight PWMs + +True + + + +Disabled +Enabled +Auto + +True + + + +Disabled +Enabled +Auto + +True + + + +Disabled +Enabled + +True + + + +Disabled +50Hz +75Hz +100Hz +150Hz +200Hz +250Hz +300Hz + +True + + +-32768 32767 + + + +Disabled +Enabled + +0:Ch1,1:Ch2,2:Ch3,3:Ch4,4:Ch5,5:Ch6,6:Ch7,7:Ch8,8:Ch9,9:Ch10,10:Ch11,11:Ch12,12:Ch13,13:Ch14 +True + + +-1 80 +degC +degrees Celsius + + + +AUTO +PX4V1 +Pixhawk +Cube/Pixhawk2 +Pixracer +PixhawkMini +Pixhawk2Slim +VRBrain 5.1 +VRBrain 5.2 +VR Micro Brain 5.1 +VR Micro Brain 5.2 +VRBrain Core 1.0 +VRBrain 5.4 +Intel Aero FC +AUAV2.1 + +True + + + +Disabled +Enabled + +True + + +0:ActiveForSafetyEnable,1:ActiveForSafetyDisable,2:ActiveWhenArmed,3:Force safety on when the aircraft disarms + + +V +volt +4.0 5.5 +0.1 + + +V +volt +3.3 12.0 +0.1 + + +0 32 +1 + + + +3.3V +5V + + + +0:Enable hardware watchdog + + +0 10000 +ms +milliseconds + + +1 500 +1 + + +0 1 +0.1 + + +0 100 +1 + + +0 10 +1 +True + + + + + +None +CYRF6936 +CC2500 +BK2425 + + + + +Auto +DSM2 +DSMX + + + +0 4 + + + +NotDisabled +Disabled + + + +0 16 + + +0 16 + + + +Disabled +Enabled + + + +1 8 + + + +Disabled +MinChannel +MidChannel +MaxChannel +MinChannelCW +MidChannelCW +MaxChannelCW + + + + +Mode1 +Mode2 + + + + +Disabled +TestChan1 +TestChan2 +TestChan3 +TestChan4 +TestChan5 +TestChan6 +TestChan7 +TestChan8 + + + +0 16 + + +0 16 + + +1 8 + + +0 40 + + +0 120 + + +0 31 + + + + +0:GPS,1:MAVLINK_SYSTEM_TIME,2:HW + + +-720 +840 + + + + + +Disabled +Enabled + + + + +Disabled +AUXOUT1 +AUXOUT2 +AUXOUT3 +AUXOUT4 +AUXOUT5 +AUXOUT6 + + + + +Disabled +AUXOUT1 +AUXOUT2 +AUXOUT3 +AUXOUT4 +AUXOUT5 +AUXOUT6 + + + + +Disabled +AUXOUT1 +AUXOUT2 +AUXOUT3 +AUXOUT4 +AUXOUT5 +AUXOUT6 + + + + +Disabled +AUXOUT1 +AUXOUT2 +AUXOUT3 +AUXOUT4 +AUXOUT5 +AUXOUT6 + + + +0 3600 + + + + + +Servo +Relay +GoPro in Solo Gimbal + + + +ds +deciseconds +0 50 + + +PWM +PWM in microseconds +1000 2000 + + +PWM +PWM in microseconds +1000 2000 + + +m +meters +0 1000 + + + +Low +High + + + +ms +milliseconds +0 10000 + + +deg +degrees +0 180 + + + +Disabled +AUX1 +AUX2 +AUX3 +AUX4 +AUX5 +AUX6 + +True + + + +TriggerLow +TriggerHigh + + + + +Always +Only when in AUTO + + + + +Default +BMMCC + + + + + + +Disabled +UAVCAN +KDECAN +ToshibaCAN + +True + + + + + + + + +1 250 + + +0: Servo 1, 1: Servo 2, 2: Servo 3, 3: Servo 4, 4: Servo 5, 5: Servo 6, 6: Servo 7, 7: Servo 8, 8: Servo 9, 9: Servo 10, 10: Servo 11, 11: Servo 12, 12: Servo 13, 13: Servo 14, 14: Servo 15 + + +0: ESC 1, 1: ESC 2, 2: ESC 3, 3: ESC 4, 4: ESC 5, 5: ESC 6, 6: ESC 7, 7: ESC 8, 8: ESC 9, 9: ESC 10, 10: ESC 11, 11: ESC 12, 12: ESC 13, 13: ESC 14, 14: ESC 15, 15: ESC 16 + + +1 200 +Hz +hertz + + + + + +Disabled +UAVCAN +KDECAN +ToshibaCAN + +True + + + + + + + + +1 250 + + +0: Servo 1, 1: Servo 2, 2: Servo 3, 3: Servo 4, 4: Servo 5, 5: Servo 6, 6: Servo 7, 7: Servo 8, 8: Servo 9, 9: Servo 10, 10: Servo 11, 11: Servo 12, 12: Servo 13, 13: Servo 14, 14: Servo 15 + + +0: ESC 1, 1: ESC 2, 2: ESC 3, 3: ESC 4, 4: ESC 5, 5: ESC 6, 6: ESC 7, 7: ESC 8, 8: ESC 9, 9: ESC 10, 10: ESC 11, 11: ESC 12, 12: ESC 13, 13: ESC 14, 14: ESC 15, 15: ESC 16 + + +1 200 +Hz +hertz + + + + + +Disabled +UAVCAN +KDECAN +ToshibaCAN + +True + + + + + + + + +1 250 + + +0: Servo 1, 1: Servo 2, 2: Servo 3, 3: Servo 4, 4: Servo 5, 5: Servo 6, 6: Servo 7, 7: Servo 8, 8: Servo 9, 9: Servo 10, 10: Servo 11, 11: Servo 12, 12: Servo 13, 13: Servo 14, 14: Servo 15 + + +0: ESC 1, 1: ESC 2, 2: ESC 3, 3: ESC 4, 4: ESC 5, 5: ESC 6, 6: ESC 7, 7: ESC 8, 8: ESC 9, 9: ESC 10, 10: ESC 11, 11: ESC 12, 12: ESC 13, 13: ESC 14, 14: ESC 15, 15: ESC 16 + + +1 200 +Hz +hertz + + + + + +Disabled +First driver +Second driver + +True + + +10000 1000000 + + + +Disabled +Major messages +All messages + + + + + + +Disabled +First driver +Second driver + +True + + +10000 1000000 + + + +Disabled +Major messages +All messages + + + + + + +Disabled +First driver +Second driver + +True + + +10000 1000000 + + + +Disabled +Major messages +All messages + + + + + + +Disabled +First driver +Second driver + +True + + + +Disabled +Serial0 +Serial1 +Serial2 +Serial3 +Serial4 +Serial5 +Serial6 + + + +0 32767 + + + + + +Disabled +Enabled + + + + +First Relay +Second Relay +Third Relay +Fourth Relay +Servo + + + +1000 2000 +PWM +PWM in microseconds +1 + + +1000 2000 +PWM +PWM in microseconds +1 + + +0 32000 +m +meters +1 + + +0 5000 +ms +milliseconds +1 + + +0 15 +m/s +meters per second +1 + + + + +-400 400 +mGauss +milligauss +1 +1 + + +-400 400 +mGauss +milligauss +1 +1 + + +-400 400 +mGauss +milligauss +1 + + +-3.142 3.142 +rad +radians +0.01 + + + +Disabled +Internal-Learning +EKF-Learning +InFlight-Learning + + + + +Disabled +Enabled + + + + +Disabled +Enabled + + + + +Disabled +Use Throttle +Use Current + +1 + + +-1000 1000 +mGauss/A +milligauss per ampere +1 +1 + + +-1000 1000 +mGauss/A +milligauss per ampere +1 +1 + + +-1000 1000 +mGauss/A +milligauss per ampere +1 + + + +None +Yaw45 +Yaw90 +Yaw135 +Yaw180 +Yaw225 +Yaw270 +Yaw315 +Roll180 +Roll180Yaw45 +Roll180Yaw90 +Roll180Yaw135 +Pitch180 +Roll180Yaw225 +Roll180Yaw270 +Roll180Yaw315 +Roll90 +Roll90Yaw45 +Roll90Yaw90 +Roll90Yaw135 +Roll270 +Roll270Yaw45 +Roll270Yaw90 +Roll270Yaw135 +Pitch90 +Pitch270 +Pitch180Yaw90 +Pitch180Yaw270 +Roll90Pitch90 +Roll180Pitch90 +Roll270Pitch90 +Roll90Pitch180 +Roll270Pitch180 +Roll90Pitch270 +Roll180Pitch270 +Roll270Pitch270 +Roll90Pitch180Yaw90 +Roll90Yaw270 +Yaw293Pitch68Roll180 +Pitch315 +Roll90Pitch315 +Custom + + + + +Internal +External +ForcedExternal + + + +-400 400 +mGauss +milligauss +1 +1 + + +-400 400 +mGauss +milligauss +1 +1 + + +-400 400 +mGauss +milligauss +1 + + +-1000 1000 +mGauss/A +milligauss per ampere +1 +1 + + +-1000 1000 +mGauss/A +milligauss per ampere +1 +1 + + +-1000 1000 +mGauss/A +milligauss per ampere +1 + + +-400 400 +mGauss +milligauss +1 +1 + + +-400 400 +mGauss +milligauss +1 +1 + + +-400 400 +mGauss +milligauss +1 + + +-1000 1000 +mGauss/A +milligauss per ampere +1 +1 + + +-1000 1000 +mGauss/A +milligauss per ampere +1 +1 + + +-1000 1000 +mGauss/A +milligauss per ampere +1 + + +True + + +True + + +True + + + +Disabled +Enabled + + + + +None +Yaw45 +Yaw90 +Yaw135 +Yaw180 +Yaw225 +Yaw270 +Yaw315 +Roll180 +Roll180Yaw45 +Roll180Yaw90 +Roll180Yaw135 +Pitch180 +Roll180Yaw225 +Roll180Yaw270 +Roll180Yaw315 +Roll90 +Roll90Yaw45 +Roll90Yaw90 +Roll90Yaw135 +Roll270 +Roll270Yaw45 +Roll270Yaw90 +Roll270Yaw135 +Pitch90 +Pitch270 +Pitch180Yaw90 +Pitch180Yaw270 +Roll90Pitch90 +Roll180Pitch90 +Roll270Pitch90 +Roll90Pitch180 +Roll270Pitch180 +Roll90Pitch270 +Roll180Pitch270 +Roll270Pitch270 +Roll90Pitch180Yaw90 +Roll90Yaw270 +Yaw293Pitch68Roll180 +Pitch315 +Roll90Pitch315 +Custom + + + + +Internal +External +ForcedExternal + + + + +Disabled +Enabled + + + + +None +Yaw45 +Yaw90 +Yaw135 +Yaw180 +Yaw225 +Yaw270 +Yaw315 +Roll180 +Roll180Yaw45 +Roll180Yaw90 +Roll180Yaw135 +Pitch180 +Roll180Yaw225 +Roll180Yaw270 +Roll180Yaw315 +Roll90 +Roll90Yaw45 +Roll90Yaw90 +Roll90Yaw135 +Roll270 +Roll270Yaw45 +Roll270Yaw90 +Roll270Yaw135 +Pitch90 +Pitch270 +Pitch180Yaw90 +Pitch180Yaw270 +Roll90Pitch90 +Roll180Pitch90 +Roll270Pitch90 +Roll90Pitch180 +Roll270Pitch180 +Roll90Pitch270 +Roll180Pitch270 +Roll270Pitch270 +Roll90Pitch180Yaw90 +Roll90Yaw270 +Yaw293Pitch68Roll180 +Pitch315 +Roll90Pitch315 +Custom + + + + +Internal +External +ForcedExternal + + + +1 + + +1 + + + + +1 + + +1 + + + + +1 + + +1 + + + + +1 + + +1 + + + + +1 + + +1 + + + + +1 + + +1 + + + + +4 32 + +Very Strict +Strict +Default +Relaxed + +0.1 + + +500 3000 +1 + + +0:HMC5883,1:LSM303D,2:AK8963,3:BMM150,4:LSM9DS1,5:LIS3MDL,6:AK09916,7:IST8310,8:ICM20948,9:MMC3416,11:UAVCAN,12:QMC5883,14:MAG3110,15:IST8308 + + +% +percent +0 100 +1 + + + +Disabled +CheckOnly +CheckAndFix + + + +True + + +True + + +True + + + +Disabled +Enabled + + + +0 1.3 + + +0 1.3 + + +0 1.3 + + +0:CalRequireGPS + + +True + + +True + + +True + + +True + + +True + + +-180 180 +deg +degrees +1 +True + + +-180 180 +deg +degrees +1 +True + + +-180 180 +deg +degrees +1 +True + + + + + +Disabled +Enabled + + + +0 2 +0.01 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Disabled +Enabled + +True + + + +GPS 3D Vel and 2D Pos +GPS 2D vel and 2D pos +GPS 2D pos +No GPS + + + +0.05 5.0 +0.05 +m/s +meters per second + + +0.05 5.0 +0.05 +m/s +meters per second + + +100 1000 +25 + + +0.1 10.0 +0.1 +m +meters + + +100 1000 +25 + + +10 100 +5 +m +meters + + + +Use Baro +Use Range Finder +Use GPS +Use Range Beacon + +True + + +0.1 10.0 +0.1 +m +meters + + +100 1000 +25 + + +0 250 +10 +ms +milliseconds +True + + +0.01 0.5 +0.01 +Gauss +gauss + + + +When flying +When manoeuvring +Never +After first climb yaw reset +Always + + + +100 1000 +25 + + +0.5 5.0 +0.1 +m/s +meters per second + + +100 1000 +25 + + +0.1 10.0 +0.1 +m +meters + + +100 1000 +25 + + +1.0 4.0 +0.1 +rad/s +radians per second + + +0.05 1.0 +0.05 +rad/s +radians per second + + +100 1000 +25 + + +0 127 +10 +ms +milliseconds +True + + +0.0001 0.1 +0.0001 +rad/s +radians per second + + +0.01 1.0 +0.01 +m/s/s +meters per square second + + +0.00001 0.001 +rad/s/s +radians per square second + + +0.000001 0.001 +Hz +hertz + + +0.00001 0.005 +m/s/s/s +meters per cubic second + + +0.01 1.0 +0.1 +m/s/s +meters per square second + + +0.0 1.0 +0.1 + + +0:NSats,1:HDoP,2:speed error,3:position error,4:yaw error,5:pos drift,6:vert speed,7:horiz speed + + +0:FirstIMU,1:SecondIMU,2:ThirdIMU,3:FourthIMU,4:FifthIMU,5:SixthIMU +True + + +50 200 +% +percent + + +0.5 50.0 +m +meters + + +0:FirstIMU,1:SecondIMU,2:ThirdIMU,3:FourthIMU,4:FifthIMU,5:SixthIMU +True + + +0.05 1.0 +0.05 +rad +radians + + +100 1000 +25 + + +10 50 +5 +cs +centiseconds + + +0.00001 0.01 +Gauss/s +gauss per second + + +0.00001 0.01 +Gauss/s +gauss per second + + +-1 70 +1 +% +percent + + +0 0.2 +0.01 + + +0.1 10.0 +0.1 +m +meters + + +100 1000 +25 + + +0 127 +10 +ms +milliseconds +True + + +2.0 6.0 +0.5 +m/s +meters per second + + +0:FirstEKF,1:SecondEKF,2:ThirdEKF,3:FourthEKF,4:FifthEKF,5:SixthEKF +True + + +0:Correct when using Baro height,1:Correct when using range finder height,2:Apply corrections to local position +True + + +0 127 +1 +ms +milliseconds +True + + + +None +Navigation +Terrain + +True + + +0 500 +mGauss +milligauss + + +0.1 30.0 +Hz +hertz +False + + + + + +Disabled +Enabled + +True + + + +GPS 3D Vel and 2D Pos +GPS 2D vel and 2D pos +GPS 2D pos +No GPS + + + +0.05 5.0 +0.05 +m/s +meters per second + + +0.05 5.0 +0.05 +m/s +meters per second + + +100 1000 +25 + + +0.1 10.0 +0.1 +m +meters + + +100 1000 +25 + + +10 100 +5 +m +meters + + + +Use Baro +Use Range Finder +Use GPS +Use Range Beacon + +True + + +0.1 10.0 +0.1 +m +meters + + +100 1000 +25 + + +0 250 +10 +True +ms +milliseconds + + +0.01 0.5 +0.01 +Gauss +gauss + + + +When flying +When manoeuvring +Never +After first climb yaw reset +Always +Use external yaw sensor + +True + + +100 1000 +25 + + +0.5 5.0 +0.1 +m/s +meters per second + + +100 1000 +25 + + +0.1 10.0 +0.1 +m +meters + + +100 1000 +25 + + +1.0 4.0 +0.1 +rad/s +radians per second + + +0.05 1.0 +0.05 +rad/s +radians per second + + +100 1000 +25 + + +0 250 +10 +True +ms +milliseconds + + +0.0001 0.1 +0.0001 +rad/s +radians per second + + +0.01 1.0 +0.01 +m/s/s +meters per square second + + +0.00001 0.001 +rad/s/s +radians per square second + + +0.00001 0.005 +m/s/s/s +meters per cubic second + + +0.01 1.0 +0.1 +m/s/s +meters per square second + + +0.0 1.0 +0.1 + + +0:NSats,1:HDoP,2:speed error,3:position error,4:yaw error,5:pos drift,6:vert speed,7:horiz speed + + +0:FirstIMU,1:SecondIMU,2:ThirdIMU,3:FourthIMU,4:FifthIMU,5:SixthIMU +True + + +50 200 +% +percent + + +0.5 50.0 +m +meters + + +0:FirstIMU,1:SecondIMU,2:ThirdIMU,3:FourthIMU,4:FifthIMU,5:SixthIMU +True + + +0.05 1.0 +0.05 +rad +radians + + +100 1000 +25 + + +10 50 +5 +cs +centiseconds + + +0.00001 0.01 +Gauss/s +gauss per second + + +0.00001 0.01 +Gauss/s +gauss per second + + +-1 70 +1 +% +percent + + +0 0.2 +0.01 + + +0.1 10.0 +0.1 +m +meters + + +100 1000 +25 + + +0 250 +10 +True +ms +milliseconds + + +2.0 6.0 +0.5 +m/s +meters per second + + +0.5 2.5 +0.1 +m/s/s +meters per square second + + +0:FirstEKF,1:SecondEKF,2:ThirdEKF,3:FourthEKF,4:FifthEKF,5:SixthEKF +True + + +0:Correct when using Baro height,1:Correct when using range finder height,2:Apply corrections to local position +True + + +0.05 0.5 +0.05 +m/s +meters per second + + +0.5 5.0 +0.1 +m/s +meters per second + + +0.01 1.0 +0.1 +m/s +meters per second + + + +None +Navigation +Terrain + +True + + +0.1 30.0 +Hz +hertz +False + + +0 500 +mGauss +milligauss + + + + + +None +PX4Flow +Pixart +Bebop +CXOF +MAVLink +UAVCAN + +True + + +-200 +200 +1 + + +-200 +200 +1 + + +-18000 +18000 +1 + + +m +meters +-10 10 + + +m +meters +-10 10 + + +m +meters +-10 10 + + +0 127 + + + +Disabled +Enabled + + + + + +Pa +pascal +1 +True +True + + +degC +degrees Celsius +1 +True + + +m +meters +0.1 + + + +FirstBaro +2ndBaro +3rdBaro + + + + +Disabled +Bus0 +Bus1 + + + +1.0:Freshwater,1.024:Saltwater + + +Pa +pascal +1 +True +True + + +Pa +pascal +1 +True +True + + +% +percent +0 100 +1 + + +0:BMP085,1:BMP280,2:MS5611,3:MS5607,4:MS5637,5:FBM320,6:DPS280,7:LPS25H,8:Keller,9:MS5837,10:BMP388 + +BMP085 +BMP280 +MS5611 +MS5607 +MS5637 +FBM320 +DPS280 +LPS25H +Keller +MS5837 +BMP388 + + + + + + +None +AUTO +uBlox +MTK +MTK19 +NMEA +SiRF +HIL +SwiftNav +UAVCAN +SBF +GSOF +ERB +MAV +NOVA +HemisphereNMEA +uBlox-MovingBaseline-Base +uBlox-MovingBaseline-Rover + +True + + + +None +AUTO +uBlox +MTK +MTK19 +NMEA +SiRF +HIL +SwiftNav +UAVCAN +SBF +GSOF +ERB +MAV +NOVA +HemisphereNMEA +uBlox-MovingBaseline-Base +uBlox-MovingBaseline-Rover + +True + + + +Portable +Stationary +Pedestrian +Automotive +Sea +Airborne1G +Airborne2G +Airborne4G + + + + +Disabled +UseBest +Blend +UseSecond + + + + +Any +FloatRTK +IntegerRTK + +True + + + +Disabled +Enabled +NoChange + + + +-100 90 +deg +degrees + + + +send to first GPS +send to 2nd GPS +send to all + + + + +None (0x0000) +All (0xFFFF) +External only (0xFF00) + + + + +Ignore +Always log +Stop logging when disarmed (SBF only) +Only log every five samples (uBlox only) + +True + + + +Leave as currently configured +GPS-NoSBAS +GPS+SBAS +Galileo-NoSBAS +Galileo+SBAS +Beidou +GPS+IMES+QZSS+SBAS (Japan Only) +GLONASS +GLONASS+SBAS +GPS+GLONASS+SBAS + +0:GPS,1:SBAS,2:Galileo,3:Beidou,4:IMES,5:QZSS,6:GLOSNASS + + + +Do not save config +Save config +Save only when needed + + + + +Leave as currently configured +GPS-NoSBAS +GPS+SBAS +Galileo-NoSBAS +Galileo+SBAS +Beidou +GPS+IMES+QZSS+SBAS (Japan Only) +GLONASS +GLONASS+SBAS +GPS+GLONASS+SBAS + +0:GPS,1:SBAS,2:Galileo,3:Beidou,4:IMES,5:QZSS,6:GLOSNASS + + + +Disables automatic configuration +Enable automatic configuration + + + +ms +milliseconds + +10Hz +8Hz +5Hz + +50 200 + + +ms +milliseconds + +10Hz +8Hz +5Hz + +50 200 + + +m +meters +-5 5 +0.01 + + +m +meters +-5 5 +0.01 + + +m +meters +-5 5 +0.01 + + +m +meters +-5 5 +0.01 + + +m +meters +-5 5 +0.01 + + +m +meters +-5 5 +0.01 + + +ms +milliseconds +0 250 +True + + +ms +milliseconds +0 250 +True + + +0:Horiz Pos,1:Vert Pos,2:Speed + + +s +seconds +5.0 30.0 + + +0:Use UART2 for moving baseline on ublox + + + + + +Disabled +Enabled + + + + +None +Servo +EPM + + + +1000 2000 +PWM +PWM in microseconds + + +1000 2000 +PWM +PWM in microseconds + + +1000 2000 +PWM +PWM in microseconds + + +0 255 +s +seconds + + +0 255 + + + + + +Disabled +Enabled + + + + +None +Chan1 +Chan2 +Chan3 +Chan4 +Chan5 +Chan6 +Chan7 +Chan8 +Chan9 +Chan10 +Chan11 +Chan12 +Chan13 +Chan14 +Chan15 +Chan16 + + + +s +seconds +0.1 5 + + +s +seconds +1 10 + + +100 100000 + + +1000 2000 + + +1000 2000 + + +1000 2000 + + +1000 2000 + + + +None +RPM1 +RPM2 + + + +0 100 + + +0 100 + + + + +rad/s +radians per second + + +rad/s +radians per second + + +rad/s +radians per second + + +rad/s +radians per second + + +rad/s +radians per second + + +rad/s +radians per second + + +rad/s +radians per second + + +rad/s +radians per second + + +rad/s +radians per second + + +0.8 1.2 + + +0.8 1.2 + + +0.8 1.2 + + +m/s/s +meters per square second +-3.5 3.5 + + +m/s/s +meters per square second +-3.5 3.5 + + +m/s/s +meters per square second +-3.5 3.5 + + +0.8 1.2 + + +0.8 1.2 + + +0.8 1.2 + + +m/s/s +meters per square second +-3.5 3.5 + + +m/s/s +meters per square second +-3.5 3.5 + + +m/s/s +meters per square second +-3.5 3.5 + + +0.8 1.2 + + +0.8 1.2 + + +0.8 1.2 + + +m/s/s +meters per square second +-3.5 3.5 + + +m/s/s +meters per square second +-3.5 3.5 + + +m/s/s +meters per square second +-3.5 3.5 + + +Hz +hertz +0 256 + + +Hz +hertz +0 256 + + + +Disabled +Enabled + + + + +Disabled +Enabled + + + + +Disabled +Enabled + + + +0.05 50 + + + +Never +Start-up only + + + + +Don't adjust the trims +Assume first orientation was level +Assume ACC_BODYFIX is perfectly aligned to the vehicle + + + + +IMU 1 +IMU 2 +IMU 3 + + + +m +meters +-10 10 + + +m +meters +-10 10 + + +m +meters +-10 10 + + +m +meters +-10 10 + + +m +meters +-10 10 + + +m +meters +-10 10 + + +m +meters +-10 10 + + +m +meters +-10 10 + + +m +meters +-10 10 + + +True + + +True + + +True + + +True + + +True + + +True + + + +FirstIMUOnly +FirstAndSecondIMU + +0:FirstIMU,1:SecondIMU,2:ThirdIMU + + + +FirstIMUOnly +FirstAndSecondIMU +FirstSecondAndThirdIMU +AllIMUs + +0:FirstIMU,1:SecondIMU,2:ThirdIMU + + + + + +Disabled +Enabled + + + +10 495 +Hz +hertz + + +5 250 +Hz +hertz + + +5 50 +dB +decibel + + +0:1st harmonic,1:2nd harmonic,2:3rd harmonic,3:4th hamronic,4:5th harmonic,5:6th harmonic,6:7th harmonic,7:8th harmonic +True + + +0.0 1.0 +True + + +0 3 + +Disabled +Throttle +RPM Sensor +ESC Telemetry + + + + + +32 +True + + + +None +First IMU +All + +0:IMU1,1:IMU2,2:IMU3 +True + + +0:Sensor-Rate Logging (sample at full sensor rate seen by AP), 1: Sample post-filtering + + +ms +milliseconds +10 + + +1 + + + + + +Disabled +Enabled + + + +5 30 +dB +decibel + + +10 400 +Hz +hertz + + +5 100 +Hz +hertz + + + + +0 5 +m +meters +0.5 + + +0 90 +deg +degrees +0.1 + + +cdeg +centidegrees + + +m +meters +0.1 + + +s +seconds +0.1 + + +m +meters +0 30 +0.1 + + +s +seconds +0 10 +0.1 + + +m/s +meters per second +0 30 +0.1 + + +% +percent +0 127 +1 + + +s +seconds +1 +0 127 + + + +Disabled +Servos to Neutral +Servos to Zero PWM + + + + +Disabled +Enabled + + + +0 100 +% +percent + + + +Standard Glide Slope +Deepstall + + + + + +0 20 +m/s +meters per second + + + + + + +10 200 +m +meters + + +0 20 +m/s +meters per second + + +0 2 +s +seconds + + +900 2100 +PWM +PWM in microseconds + + +5 20 +m/s +meters per second + + +5 20 +m/s +meters per second + + +5 50 +m +meters + + +0 1 + + +0 2.0 + + + + + + + + + + + + + + + +WaitForPilotInput +Retract +Deploy + + + + +Disabled +AUX1 +AUX2 +AUX3 +AUX4 +AUX5 +AUX6 + +True + + + +Low +High + + + + +Disabled +AUX1 +AUX2 +AUX3 +AUX4 +AUX5 +AUX6 + +True + + + +Low +High + + + +m +meters +0 1000 +1 + + +m +meters +0 1000 +1 + + + +Retract after Takeoff +Deploy during Land +Retract after Takeoff AND deploy during Land + +0:Retract after Takeoff,1:Deploy during Land + + + + + +None +File +MAVLink +File and MAVLink +Block +Block and MAVLink + +0:File,1:MAVLink,2:Block + + + + + +Disabled +Enabled + + + + +Disabled +Enabled + + + + +Disabled +Enabled + + + +kB +kilobytes + + +s +seconds + + + + +0 32766 +1 +True + + + +Resume Mission +Restart Mission + + + +0:Clear Mission on reboot + + + + + +Retracted +Neutral +MavLink Targeting +RC Targeting +GPS Point + + + +deg +degrees +-180.00 179.99 +1 + + +deg +degrees +-180.00 179.99 +1 + + +deg +degrees +-180.00 179.99 +1 + + +deg +degrees +-180.00 179.99 +1 + + +deg +degrees +-180.00 179.99 +1 + + +deg +degrees +-180.00 179.99 +1 + + + +Disabled +Enabled + + + + +Disabled +Enabled + + + + +Disabled +Enabled + + + + +Disabled +RC5 +RC6 +RC7 +RC8 +RC9 +RC10 +RC11 +RC12 + + + +cdeg +centidegrees +-18000 17999 +1 + + +cdeg +centidegrees +-18000 17999 +1 + + + +Disabled +RC5 +RC6 +RC7 +RC8 +RC9 +RC10 +RC11 +RC12 + + + +cdeg +centidegrees +-18000 17999 +1 + + +cdeg +centidegrees +-18000 17999 +1 + + + +Disabled +RC5 +RC6 +RC7 +RC8 +RC9 +RC10 +RC11 +RC12 + + + +cdeg +centidegrees +-18000 17999 +1 + + +cdeg +centidegrees +-18000 17999 +1 + + +0 100 +1 + + +s +seconds +0.0 0.2 +.005 + + +s +seconds +0.0 0.2 +.005 + + + +None +Servo +3DR Solo +Alexmos Serial +SToRM32 MAVLink +SToRM32 Serial + +True + + + +Retracted +Neutral +MavLink Targeting +RC Targeting +GPS Point + + + +deg +degrees +-180.00 179.99 +1 + + +deg +degrees +-180.00 179.99 +1 + + +deg +degrees +-180.00 179.99 +1 + + +deg +degrees +-180.00 179.99 +1 + + +deg +degrees +-180.00 179.99 +1 + + +deg +degrees +-180.00 179.99 +1 + + + +Disabled +Enabled + + + + +Disabled +Enabled + + + + +Disabled +Enabled + + + + +Disabled +RC5 +RC6 +RC7 +RC8 +RC9 +RC10 +RC11 +RC12 + + + +cdeg +centidegrees +-18000 17999 +1 + + +cdeg +centidegrees +-18000 17999 +1 + + + +Disabled +RC5 +RC6 +RC7 +RC8 +RC9 +RC10 +RC11 +RC12 + + + +cdeg +centidegrees +-18000 17999 +1 + + +cdeg +centidegrees +-18000 17999 +1 + + + +Disabled +RC5 +RC6 +RC7 +RC8 +RC9 +RC10 +RC11 +RC12 + + + +cdeg +centidegrees +-18000 17999 +1 + + +cdeg +centidegrees +-18000 17999 +1 + + +s +seconds +0.0 0.2 +.005 + + +s +seconds +0.0 0.2 +.005 + + + +None +Servo +3DR Solo +Alexmos Serial +SToRM32 MAVLink +SToRM32 Serial + + + + + +s +seconds +1 60 +1 + + +0.6 1.0 +0.05 + + +0 0.1 +0.01 + + +deg +degrees +0 89 + + + + + +Off +Low +Medium +High + + + + +Disable +Enable + + + + +Standard +MAVLink +OutbackChallenge +TrafficLight + + + + +Disable +ssd1306 +sh1106 +SITL + + + + +Disabled +Aircraft +Rover + + + + +Disabled + + + +0:Build in LED, 1:Internal ToshibaLED, 2:External ToshibaLED, 3:External PCA9685, 4:Oreo LED, 5:UAVCAN, 6:NCP5623 External, 7:NCP5623 Internal, 8:NeoPixel, 9:ProfiLED + + + +LowIsOn +HighIsOn + + + +0 100 +% +percent + + +1 32 + + + + + +None +MAX7456 + +True + + + +Disable +Chan5 +Chan6 +Chan7 +Chan8 +Chan9 +Chan10 +Chan11 +Chan12 +Chan13 +Chan14 +Chan15 +Chan16 + + + +0:UseDecimalPack, 1:InvertedWindPointer, 2:InvertedAHRoll + + +True + + +0 31 +True + + +0 63 +True + + +0 99 + + +1 30 + + +0 100 + + + +Metric +Imperial +SI +Aviation + + + +1 20 + + +0 4 + + +0 4 + + +0 4 + + + + + +Disabled +Enabled + + + +900 2100 + + +900 2100 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +900 2100 + + +900 2100 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +900 2100 + + +900 2100 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +900 2100 + + +900 2100 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + +0.4 1.0 +s +seconds +0.1 + + +0.1 3.0 +0.1 + + +0 0.2 +0.01 + + +0 0.5 +0.05 + + +0 100 +deg/s +degrees per second +1 + + +0 100 +deg/s +degrees per second +1 + + +0.7 1.5 +0.05 + + +0 4500 +1 + + +0.1 4.0 +0.1 + + + + + +Disable +Enable +Enable VTOL AUTO + + + +cdeg +centidegrees +1000 8000 + + +ms +milliseconds +0 30000 + + +cm/s +centimeters per second +50 500 +10 + + +cm/s/s +centimeters per square second +50 500 +10 + + +Hz +hertz +50 500 +10 + + +PWM +PWM in microseconds +800 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + +m/s +meters per second +0 100 +0.1 + + +deg/s +degrees per second +50 500 +1 + + +cm/s +centimeters per second +30 200 +10 + + +m +meters +0.5 50 +0.1 + + +0 30 +deg +degrees +1 + + + +Undefined +Quad +Hexa +Octa +OctaQuad +Y6 +Tri + TailSitter + + + + +Plus +X +V +H +V-Tail +A-Tail +Y6B +Y6F +BetaFlightX +DJIX +ClockwiseX + I + + + +0 0.5 +0.01 + + +0 1 +0.01 + + +0 10 +0.1 + + +m +meters +1 200 +1 + + + +Disabled +Enabled + + + + + +deg/s +degrees per second +1 +10 300 + + +deg +degrees +1 +20 80 + + + +Disabled +Enabled + + + + +Disabled +ThrottleInput +FullInput + + + +m +meters +0 10 +0.25 + + + +Disabled +Enabled + + + +deg +degrees +0 90 +1 + + + +Continuous +Binary +VectoredYaw +Bicopter + + + +5 80 + + +deg/s +degrees per second +1 +10 300 + + + +MultiCopterInput +FixedWingInput +BodyFrameRoll_M +BodyFrameRoll_P + + + +0:Aileron,1:Elevator,2:Throttle,3:Rudder + + + +Disabled +Channel1 +Channel2 +Channel3 +Channel4 +Channel5 +Channel6 +Channel7 +Channel8 + + + +0 1 +0.01 + + +0 1 +0.01 + + +0 30 + + +0 4 +0.1 + + + +AUTO +FIXED_WING +QUADROTOR +COAXIAL +HELICOPTER +AIRSHIP +FREE_BALLOON +ROCKET +GROUND_ROVER +SURFACE_BOAT +SUBMARINE +FLAPPING_WING +KITE +VTOL_DUOROTOR +VTOL_QUADROTOR +VTOL_TILTROTOR + + + +0:LevelTransition,1:AllowFWTakeoff,2:AllowFWLand,3:Respect takeoff frame types,4:Use a fixed wing approach for VTOL landings,5:Use QRTL instead of QLAND for failsafe when in VTOL modes. + + +m/s/s +meters per square second +0.1 +0.2 5 + + +1 5 + + +deg +degrees +-10 +10 +0.1 +True + + +deg +degrees +0 80 + + +m +meters +0 200 +5 + + +s +seconds +0 20 +1 + + +0:Motor 1,1:Motor 2,2:Motor 3,3:Motor 4, 4:Motor 5,5:Motor 6,6:Motor 7,7:Motor 8 + + +0 1 +.1 + + +deg/s +degrees per second +10 500 +1 + + +deg/s +degrees per second +10 500 +1 + + +deg/s +degrees per second +10 500 +1 + + +1.1 5.0 +5.1 + + +m/s +meters per second +0 20 +1 + + +m +meters +0 120 +1 + + + + +cdeg/s +centidegrees per second +500 18000 +100 + + +cdeg/s/s +centidegrees per square second +0 72000 + +Disabled +VerySlow +Slow +Medium +Fast + +1000 + + + +Disabled +Enabled + + + +cdeg/s/s +centidegrees per square second +0 180000 +1000 + +Disabled +VerySlow +Slow +Medium +Fast + + + +cdeg/s/s +centidegrees per square second +0 180000 +1000 + +Disabled +VerySlow +Slow +Medium +Fast + + + + +Disabled +Enabled + + + +0.0 12.000 + + +0.0 12.000 + + +0.0 6.000 + + +0.5 10.0 + + +deg/s +degrees per second +0 1080 +1 + +Disabled +Slow +Medium +Fast + + + +deg/s +degrees per second +0 1080 +1 + +Disabled +Slow +Medium +Fast + + + +deg/s +degrees per second +0 1080 +1 + +Disabled +Slow +Medium +Fast + + + +s +seconds +0 1 +0.01 +0.5:Very Soft, 0.2:Soft, 0.15:Medium, 0.1:Crisp, 0.05:Very Crisp + + +0.01 0.5 +0.005 + + +0.01 2.0 +0.01 + + +0 1 +0.01 +% +percent + + +0.0 0.05 +0.001 + + +0 0.5 +0.001 + + +5 100 +1 +Hz +hertz + + +0 100 +1 +Hz +hertz + + +5 100 +1 +Hz +hertz + + +0.01 0.50 +0.005 + + +0.01 2.0 +0.01 + + +0 1 +0.01 +% +percent + + +0.0 0.05 +0.001 + + +0 0.5 +0.001 + + +5 100 +1 +Hz +hertz + + +0 100 +1 +Hz +hertz + + +5 100 +1 +Hz +hertz + + +0.10 2.50 +0.005 + + +0.010 1.0 +0.01 + + +0 1 +0.01 +% +percent + + +0.000 0.02 +0.001 + + +0 0.5 +0.001 + + +1 50 +1 +Hz +hertz + + +0 20 +1 +Hz +hertz + + +5 50 +1 +Hz +hertz + + +0.1 0.25 + + +0.5 0.9 + + +0.1 0.9 + + +1 100 +1 +Hz +hertz + + +1 100 +1 +Hz +hertz + + +1 10 +1 +Hz +hertz + + + + +deg +degrees +0 45 +1 + + +cm/s +centimeters per second +20 2000 +50 + + +cm/s/s +centimeters per square second +100 981 +1 + + +cm/s/s +centimeters per square second +25 250 +1 + + +cm/s/s/s +centimeters per cubic second +500 5000 +1 + + +s +seconds +0 2 +0.1 + + + + +0 500 +PWM +PWM in microseconds + + +0.25 0.8 + + +0.9:Low, 0.95:Default, 1.0:High + + +6 35 +V +volt + + +6 35 +V +volt + + +0 200 +A +ampere + + + +Normal +OneShot +OneShot125 +Brushed +DShot150 +DShot300 +DShot600 +DShot1200 + +True + + +PWM +PWM in microseconds +0 2000 + + +PWM +PWM in microseconds +0 2000 + + +0.0:Low, 0.15:Default, 0.3:High + + +0.0:Low, 0.1:Default, 0.2:High + + +0 10 +s +seconds + + +0.2 0.8 + + + +Disabled +Learn +Learn and Save + + + + +PWM enabled while disarmed +PWM disabled while disarmed + + + +5 80 +deg +degrees +1 + + +0 2 +s +seconds +0.1 + + +0 5 +0.1 + + + +First battery +Second battery + + + +0 .5 +s +seconds +0.001 + + +0 .5 +s +seconds +0.001 + + +0 5 +s +seconds +0.001 + + + + +Hz +hertz +0.5 5 +0.1 + + +1.000 3.000 + + +1.000 8.000 + + +0.500 1.500 +0.05 + + +0.000 3.000 + + +0 1000 +d% +decipercent + + +0.000 0.400 + + +0 0.5 +0.001 + + +1 50 +1 +Hz +hertz + + +1 100 +1 +Hz +hertz + + +1 100 +1 +Hz +hertz + + +0.500 2.000 + + +0.1 6.0 +0.1 + + +0.02 1.00 +0.01 + + +0.00 1.00 +0.001 + + +0 4500 +10 +cm/s/s +centimeters per square second + + +0 100 +Hz +hertz + + +0 100 +Hz +hertz + + +deg +degrees +0 45 +1 + + + + +cm/s +centimeters per second +20 2000 +50 + + +cm +centimeters +5 1000 +1 + + +cm/s +centimeters per second +10 1000 +50 + + +cm/s +centimeters per second +10 500 +10 + + +cm/s/s +centimeters per square second +50 500 +10 + + +cm/s/s +centimeters per square second +50 500 +10 + + + +Disable +Enable + + + + + + + +km +kilometers +0.1 + + + +DoNotIncludeHome +IncludeHome + + + + + +0.0 120.0 +s +seconds + + +0:Ignore RC Receiver, 1:Ignore MAVLink Overrides, 2:Ignore Receiver Failsafe + + + + +PWM +PWM in microseconds +800 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + + +Normal +Reversed + + + +PWM +PWM in microseconds +0 200 + + + +Do Nothing +ModeRTL +Camera Trigger +ModeAuto +Auto Mission Reset +Relay On/Off +Landing Gear +Relay2 On/Off +Lost Plane Sound +Motor Emergency Stop +Relay3 On/Off +Relay4 On/Off +ArmDisarm +InvertedFlight +RC Override Enable +ModeManual +ModeGuided +Clear Waypoints +Compass Learn +Reverse Throttle +GPS Disable +Relay5 +Relay6 +ModeCircle +ModeTakeoff +KillIMU1 +KillIMU2 +Camera Mode Toggle + + + + + +PWM +PWM in microseconds +800 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + + +Normal +Reversed + + + +PWM +PWM in microseconds +0 200 + + + +Do Nothing +ModeRTL +Camera Trigger +ModeAuto +Auto Mission Reset +Relay On/Off +Landing Gear +Relay2 On/Off +Lost Plane Sound +Motor Emergency Stop +Relay3 On/Off +Relay4 On/Off +ArmDisarm +InvertedFlight +RC Override Enable +ModeManual +ModeGuided +Clear Waypoints +Compass Learn +Reverse Throttle +GPS Disable +Relay5 +Relay6 +ModeCircle +ModeTakeoff +KillIMU1 +KillIMU2 +Camera Mode Toggle + + + + + +PWM +PWM in microseconds +800 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + + +Normal +Reversed + + + +PWM +PWM in microseconds +0 200 + + + +Do Nothing +ModeRTL +Camera Trigger +ModeAuto +Auto Mission Reset +Relay On/Off +Landing Gear +Relay2 On/Off +Lost Plane Sound +Motor Emergency Stop +Relay3 On/Off +Relay4 On/Off +ArmDisarm +InvertedFlight +RC Override Enable +ModeManual +ModeGuided +Clear Waypoints +Compass Learn +Reverse Throttle +GPS Disable +Relay5 +Relay6 +ModeCircle +ModeTakeoff +KillIMU1 +KillIMU2 +Camera Mode Toggle + + + + + +PWM +PWM in microseconds +800 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + + +Normal +Reversed + + + +PWM +PWM in microseconds +0 200 + + + +Do Nothing +ModeRTL +Camera Trigger +ModeAuto +Auto Mission Reset +Relay On/Off +Landing Gear +Relay2 On/Off +Lost Plane Sound +Motor Emergency Stop +Relay3 On/Off +Relay4 On/Off +ArmDisarm +InvertedFlight +RC Override Enable +ModeManual +ModeGuided +Clear Waypoints +Compass Learn +Reverse Throttle +GPS Disable +Relay5 +Relay6 +ModeCircle +ModeTakeoff +KillIMU1 +KillIMU2 +Camera Mode Toggle + + + + + +PWM +PWM in microseconds +800 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + + +Normal +Reversed + + + +PWM +PWM in microseconds +0 200 + + + +Do Nothing +ModeRTL +Camera Trigger +ModeAuto +Auto Mission Reset +Relay On/Off +Landing Gear +Relay2 On/Off +Lost Plane Sound +Motor Emergency Stop +Relay3 On/Off +Relay4 On/Off +ArmDisarm +InvertedFlight +RC Override Enable +ModeManual +ModeGuided +Clear Waypoints +Compass Learn +Reverse Throttle +GPS Disable +Relay5 +Relay6 +ModeCircle +ModeTakeoff +KillIMU1 +KillIMU2 +Camera Mode Toggle + + + + + +PWM +PWM in microseconds +800 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + + +Normal +Reversed + + + +PWM +PWM in microseconds +0 200 + + + +Do Nothing +ModeRTL +Camera Trigger +ModeAuto +Auto Mission Reset +Relay On/Off +Landing Gear +Relay2 On/Off +Lost Plane Sound +Motor Emergency Stop +Relay3 On/Off +Relay4 On/Off +ArmDisarm +InvertedFlight +RC Override Enable +ModeManual +ModeGuided +Clear Waypoints +Compass Learn +Reverse Throttle +GPS Disable +Relay5 +Relay6 +ModeCircle +ModeTakeoff +KillIMU1 +KillIMU2 +Camera Mode Toggle + + + + + +PWM +PWM in microseconds +800 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + + +Normal +Reversed + + + +PWM +PWM in microseconds +0 200 + + + +Do Nothing +ModeRTL +Camera Trigger +ModeAuto +Auto Mission Reset +Relay On/Off +Landing Gear +Relay2 On/Off +Lost Plane Sound +Motor Emergency Stop +Relay3 On/Off +Relay4 On/Off +ArmDisarm +InvertedFlight +RC Override Enable +ModeManual +ModeGuided +Clear Waypoints +Compass Learn +Reverse Throttle +GPS Disable +Relay5 +Relay6 +ModeCircle +ModeTakeoff +KillIMU1 +KillIMU2 +Camera Mode Toggle + + + + + +PWM +PWM in microseconds +800 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + + +Normal +Reversed + + + +PWM +PWM in microseconds +0 200 + + + +Do Nothing +ModeRTL +Camera Trigger +ModeAuto +Auto Mission Reset +Relay On/Off +Landing Gear +Relay2 On/Off +Lost Plane Sound +Motor Emergency Stop +Relay3 On/Off +Relay4 On/Off +ArmDisarm +InvertedFlight +RC Override Enable +ModeManual +ModeGuided +Clear Waypoints +Compass Learn +Reverse Throttle +GPS Disable +Relay5 +Relay6 +ModeCircle +ModeTakeoff +KillIMU1 +KillIMU2 +Camera Mode Toggle + + + + + +PWM +PWM in microseconds +800 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + + +Normal +Reversed + + + +PWM +PWM in microseconds +0 200 + + + +Do Nothing +ModeRTL +Camera Trigger +ModeAuto +Auto Mission Reset +Relay On/Off +Landing Gear +Relay2 On/Off +Lost Plane Sound +Motor Emergency Stop +Relay3 On/Off +Relay4 On/Off +ArmDisarm +InvertedFlight +RC Override Enable +ModeManual +ModeGuided +Clear Waypoints +Compass Learn +Reverse Throttle +GPS Disable +Relay5 +Relay6 +ModeCircle +ModeTakeoff +KillIMU1 +KillIMU2 +Camera Mode Toggle + + + + + +PWM +PWM in microseconds +800 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + + +Normal +Reversed + + + +PWM +PWM in microseconds +0 200 + + + +Do Nothing +ModeRTL +Camera Trigger +ModeAuto +Auto Mission Reset +Relay On/Off +Landing Gear +Relay2 On/Off +Lost Plane Sound +Motor Emergency Stop +Relay3 On/Off +Relay4 On/Off +ArmDisarm +InvertedFlight +RC Override Enable +ModeManual +ModeGuided +Clear Waypoints +Compass Learn +Reverse Throttle +GPS Disable +Relay5 +Relay6 +ModeCircle +ModeTakeoff +KillIMU1 +KillIMU2 +Camera Mode Toggle + + + + + +PWM +PWM in microseconds +800 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + + +Normal +Reversed + + + +PWM +PWM in microseconds +0 200 + + + +Do Nothing +ModeRTL +Camera Trigger +ModeAuto +Auto Mission Reset +Relay On/Off +Landing Gear +Relay2 On/Off +Lost Plane Sound +Motor Emergency Stop +Relay3 On/Off +Relay4 On/Off +ArmDisarm +InvertedFlight +RC Override Enable +ModeManual +ModeGuided +Clear Waypoints +Compass Learn +Reverse Throttle +GPS Disable +Relay5 +Relay6 +ModeCircle +ModeTakeoff +KillIMU1 +KillIMU2 +Camera Mode Toggle + + + + + +PWM +PWM in microseconds +800 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + + +Normal +Reversed + + + +PWM +PWM in microseconds +0 200 + + + +Do Nothing +ModeRTL +Camera Trigger +ModeAuto +Auto Mission Reset +Relay On/Off +Landing Gear +Relay2 On/Off +Lost Plane Sound +Motor Emergency Stop +Relay3 On/Off +Relay4 On/Off +ArmDisarm +InvertedFlight +RC Override Enable +ModeManual +ModeGuided +Clear Waypoints +Compass Learn +Reverse Throttle +GPS Disable +Relay5 +Relay6 +ModeCircle +ModeTakeoff +KillIMU1 +KillIMU2 +Camera Mode Toggle + + + + + +PWM +PWM in microseconds +800 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + + +Normal +Reversed + + + +PWM +PWM in microseconds +0 200 + + + +Do Nothing +ModeRTL +Camera Trigger +ModeAuto +Auto Mission Reset +Relay On/Off +Landing Gear +Relay2 On/Off +Lost Plane Sound +Motor Emergency Stop +Relay3 On/Off +Relay4 On/Off +ArmDisarm +InvertedFlight +RC Override Enable +ModeManual +ModeGuided +Clear Waypoints +Compass Learn +Reverse Throttle +GPS Disable +Relay5 +Relay6 +ModeCircle +ModeTakeoff +KillIMU1 +KillIMU2 +Camera Mode Toggle + + + + + +PWM +PWM in microseconds +800 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + + +Normal +Reversed + + + +PWM +PWM in microseconds +0 200 + + + +Do Nothing +ModeRTL +Camera Trigger +ModeAuto +Auto Mission Reset +Relay On/Off +Landing Gear +Relay2 On/Off +Lost Plane Sound +Motor Emergency Stop +Relay3 On/Off +Relay4 On/Off +ArmDisarm +InvertedFlight +RC Override Enable +ModeManual +ModeGuided +Clear Waypoints +Compass Learn +Reverse Throttle +GPS Disable +Relay5 +Relay6 +ModeCircle +ModeTakeoff +KillIMU1 +KillIMU2 +Camera Mode Toggle + + + + + +PWM +PWM in microseconds +800 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + + +Normal +Reversed + + + +PWM +PWM in microseconds +0 200 + + + +Do Nothing +ModeRTL +Camera Trigger +ModeAuto +Auto Mission Reset +Relay On/Off +Landing Gear +Relay2 On/Off +Lost Plane Sound +Motor Emergency Stop +Relay3 On/Off +Relay4 On/Off +ArmDisarm +InvertedFlight +RC Override Enable +ModeManual +ModeGuided +Clear Waypoints +Compass Learn +Reverse Throttle +GPS Disable +Relay5 +Relay6 +ModeCircle +ModeTakeoff +KillIMU1 +KillIMU2 +Camera Mode Toggle + + + + + +PWM +PWM in microseconds +800 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + + +Normal +Reversed + + + +PWM +PWM in microseconds +0 200 + + + +Do Nothing +ModeRTL +Camera Trigger +ModeAuto +Auto Mission Reset +Relay On/Off +Landing Gear +Relay2 On/Off +Lost Plane Sound +Motor Emergency Stop +Relay3 On/Off +Relay4 On/Off +ArmDisarm +InvertedFlight +RC Override Enable +ModeManual +ModeGuided +Clear Waypoints +Compass Learn +Reverse Throttle +GPS Disable +Relay5 +Relay6 +ModeCircle +ModeTakeoff +KillIMU1 +KillIMU2 +Camera Mode Toggle + + + + + +1 8 +1 +True + + +1 8 +1 +True + + +1 8 +1 +True + + +1 8 +1 +True + + +1 8 +1 +True +1: 1, 2: 2, 3: 3, 4: 4, 5: 5, 6: 6, 7: 7, 8: 8 + + +1 8 +1 +True +1: 1, 2: 2, 3: 3, 4: 4, 5: 5, 6: 6, 7: 7, 8: 8 + + + + + +Disabled +BB Blue GP0 pin 4 +AUXOUT1 +AUXOUT2 +AUXOUT3 +AUXOUT4 +AUXOUT5 +AUXOUT6 +BB Blue GP0 pin 3 +BB Blue GP0 pin 6 +BB Blue GP0 pin 5 + + + + +Disabled +BB Blue GP0 pin 4 +AUXOUT1 +AUXOUT2 +AUXOUT3 +AUXOUT4 +AUXOUT5 +AUXOUT6 +BB Blue GP0 pin 3 +BB Blue GP0 pin 6 +BB Blue GP0 pin 5 + + + + +Disabled +BB Blue GP0 pin 4 +AUXOUT1 +AUXOUT2 +AUXOUT3 +AUXOUT4 +AUXOUT5 +AUXOUT6 +BB Blue GP0 pin 3 +BB Blue GP0 pin 6 +BB Blue GP0 pin 5 + + + + +Disabled +BB Blue GP0 pin 4 +AUXOUT1 +AUXOUT2 +AUXOUT3 +AUXOUT4 +AUXOUT5 +AUXOUT6 +BB Blue GP0 pin 3 +BB Blue GP0 pin 6 +BB Blue GP0 pin 5 + + + + +Off +On +NoChange + + + + +Disabled +BB Blue GP0 pin 4 +AUXOUT1 +AUXOUT2 +AUXOUT3 +AUXOUT4 +AUXOUT5 +AUXOUT6 +BB Blue GP0 pin 3 +BB Blue GP0 pin 6 +BB Blue GP0 pin 5 + + + + +Disabled +BB Blue GP0 pin 4 +AUXOUT1 +AUXOUT2 +AUXOUT3 +AUXOUT4 +AUXOUT5 +AUXOUT6 +BB Blue GP0 pin 3 +BB Blue GP0 pin 6 +BB Blue GP0 pin 5 + + + + + +0.4 1.0 +s +seconds +0.1 + + +0.1 4.0 +0.1 + + +0 0.2 +0.01 + + +0 1.0 +0.05 + + +0 180 +deg/s +degrees per second +1 + + +0 4500 +1 + + +0.1 4.0 +0.1 + + + + + +None +Analog +MaxbotixI2C +LidarLite-I2C +PWM +BBB-PRU +LightWareI2C +LightWareSerial +Bebop +MAVLink +uLanding +LeddarOne +MaxbotixSerial +TeraRangerI2C +LidarLiteV3-I2C +VL53L0X +NMEA +WASP-LRF +BenewakeTF02 +Benewake-Serial +LidarLightV3HP +PWM +BlueRoboticsPing +UAVCAN +BenewakeTFminiPlus-I2C +BenewakeTF03 + + + + +Not Used +PX4-airspeed port +Pixhawk-airspeed port +Pixhawk AUXOUT1 +Pixhawk AUXOUT2 +Pixhawk AUXOUT3 +Pixhawk AUXOUT4 +Pixhawk AUXOUT5 +Pixhawk AUXOUT6 + + + +m/V +meters per volt +0.001 + + +V +volt +0.001 + + + +Linear +Inverted +Hyperbolic + + + +cm +centimeters +1 + + +cm +centimeters +1 + + + +Not Used +Pixhawk AUXOUT1 +Pixhawk AUXOUT2 +Pixhawk AUXOUT3 +Pixhawk AUXOUT4 +Pixhawk AUXOUT5 +Pixhawk AUXOUT6 +PX4 FMU Relay1 +PX4 FMU Relay2 +PX4IO Relay1 +PX4IO Relay2 +PX4IO ACC1 +PX4IO ACC2 + + + + +No +Yes + + + +m +meters +0 32767 + + +cm +centimeters +5 127 +1 + + +0 127 +1 + + +m +meters + + +m +meters + + +m +meters + + + +Forward +Forward-Right +Right +Back-Right +Back +Back-Left +Left +Forward-Left +Up +Down + + + + + +0 255 + + +0 255 + + +0 10000 + + +0 255 + + +-1 255 + + + +Low Speed +High Speed + + + + + + +None +Analog +MaxbotixI2C +LidarLite-I2C +PWM +BBB-PRU +LightWareI2C +LightWareSerial +Bebop +MAVLink +uLanding +LeddarOne +MaxbotixSerial +TeraRangerI2C +LidarLiteV3-I2C +VL53L0X +NMEA +WASP-LRF +BenewakeTF02 +Benewake-Serial +LidarLightV3HP +PWM +BlueRoboticsPing +UAVCAN +BenewakeTFminiPlus-I2C +BenewakeTF03 + + + + +Not Used +PX4-airspeed port +Pixhawk-airspeed port +Pixhawk AUXOUT1 +Pixhawk AUXOUT2 +Pixhawk AUXOUT3 +Pixhawk AUXOUT4 +Pixhawk AUXOUT5 +Pixhawk AUXOUT6 + + + +m/V +meters per volt +0.001 + + +V +volt +0.001 + + + +Linear +Inverted +Hyperbolic + + + +cm +centimeters +1 + + +cm +centimeters +1 + + + +Not Used +Pixhawk AUXOUT1 +Pixhawk AUXOUT2 +Pixhawk AUXOUT3 +Pixhawk AUXOUT4 +Pixhawk AUXOUT5 +Pixhawk AUXOUT6 +PX4 FMU Relay1 +PX4 FMU Relay2 +PX4IO Relay1 +PX4IO Relay2 +PX4IO ACC1 +PX4IO ACC2 + + + + +No +Yes + + + +m +meters +0 32767 + + +cm +centimeters +5 127 +1 + + +0 127 +1 + + +m +meters + + +m +meters + + +m +meters + + + +Forward +Forward-Right +Right +Back-Right +Back +Back-Left +Left +Forward-Left +Up +Down + + + + + +0 255 + + +0 255 + + +0 10000 + + +0 255 + + +-1 255 + + + +Low Speed +High Speed + + + + + + +None +Analog +MaxbotixI2C +LidarLite-I2C +PWM +BBB-PRU +LightWareI2C +LightWareSerial +Bebop +MAVLink +uLanding +LeddarOne +MaxbotixSerial +TeraRangerI2C +LidarLiteV3-I2C +VL53L0X +NMEA +WASP-LRF +BenewakeTF02 +Benewake-Serial +LidarLightV3HP +PWM +BlueRoboticsPing +UAVCAN +BenewakeTFminiPlus-I2C +BenewakeTF03 + + + + +Not Used +PX4-airspeed port +Pixhawk-airspeed port +Pixhawk AUXOUT1 +Pixhawk AUXOUT2 +Pixhawk AUXOUT3 +Pixhawk AUXOUT4 +Pixhawk AUXOUT5 +Pixhawk AUXOUT6 + + + +m/V +meters per volt +0.001 + + +V +volt +0.001 + + + +Linear +Inverted +Hyperbolic + + + +cm +centimeters +1 + + +cm +centimeters +1 + + + +Not Used +Pixhawk AUXOUT1 +Pixhawk AUXOUT2 +Pixhawk AUXOUT3 +Pixhawk AUXOUT4 +Pixhawk AUXOUT5 +Pixhawk AUXOUT6 +PX4 FMU Relay1 +PX4 FMU Relay2 +PX4IO Relay1 +PX4IO Relay2 +PX4IO ACC1 +PX4IO ACC2 + + + + +No +Yes + + + +m +meters +0 32767 + + +cm +centimeters +5 127 +1 + + +0 127 +1 + + +m +meters + + +m +meters + + +m +meters + + + +Forward +Forward-Right +Right +Back-Right +Back +Back-Left +Left +Forward-Left +Up +Down + + + + + +0 255 + + +0 255 + + +0 10000 + + +0 255 + + +-1 255 + + + +Low Speed +High Speed + + + + + + +None +Analog +MaxbotixI2C +LidarLite-I2C +PWM +BBB-PRU +LightWareI2C +LightWareSerial +Bebop +MAVLink +uLanding +LeddarOne +MaxbotixSerial +TeraRangerI2C +LidarLiteV3-I2C +VL53L0X +NMEA +WASP-LRF +BenewakeTF02 +Benewake-Serial +LidarLightV3HP +PWM +BlueRoboticsPing +UAVCAN +BenewakeTFminiPlus-I2C +BenewakeTF03 + + + + +Not Used +PX4-airspeed port +Pixhawk-airspeed port +Pixhawk AUXOUT1 +Pixhawk AUXOUT2 +Pixhawk AUXOUT3 +Pixhawk AUXOUT4 +Pixhawk AUXOUT5 +Pixhawk AUXOUT6 + + + +m/V +meters per volt +0.001 + + +V +volt +0.001 + + + +Linear +Inverted +Hyperbolic + + + +cm +centimeters +1 + + +cm +centimeters +1 + + + +Not Used +Pixhawk AUXOUT1 +Pixhawk AUXOUT2 +Pixhawk AUXOUT3 +Pixhawk AUXOUT4 +Pixhawk AUXOUT5 +Pixhawk AUXOUT6 +PX4 FMU Relay1 +PX4 FMU Relay2 +PX4IO Relay1 +PX4IO Relay2 +PX4IO ACC1 +PX4IO ACC2 + + + + +No +Yes + + + +m +meters +0 32767 + + +cm +centimeters +5 127 +1 + + +0 127 +1 + + +m +meters + + +m +meters + + +m +meters + + + +Forward +Forward-Right +Right +Back-Right +Back +Back-Left +Left +Forward-Left +Up +Down + + + + + +0 255 + + +0 255 + + +0 10000 + + +0 255 + + +-1 255 + + + +Low Speed +High Speed + + + + + + +None +Analog +MaxbotixI2C +LidarLite-I2C +PWM +BBB-PRU +LightWareI2C +LightWareSerial +Bebop +MAVLink +uLanding +LeddarOne +MaxbotixSerial +TeraRangerI2C +LidarLiteV3-I2C +VL53L0X +NMEA +WASP-LRF +BenewakeTF02 +Benewake-Serial +LidarLightV3HP +PWM +BlueRoboticsPing +UAVCAN +BenewakeTFminiPlus-I2C +BenewakeTF03 + + + + +Not Used +PX4-airspeed port +Pixhawk-airspeed port +Pixhawk AUXOUT1 +Pixhawk AUXOUT2 +Pixhawk AUXOUT3 +Pixhawk AUXOUT4 +Pixhawk AUXOUT5 +Pixhawk AUXOUT6 + + + +m/V +meters per volt +0.001 + + +V +volt +0.001 + + + +Linear +Inverted +Hyperbolic + + + +cm +centimeters +1 + + +cm +centimeters +1 + + + +Not Used +Pixhawk AUXOUT1 +Pixhawk AUXOUT2 +Pixhawk AUXOUT3 +Pixhawk AUXOUT4 +Pixhawk AUXOUT5 +Pixhawk AUXOUT6 +PX4 FMU Relay1 +PX4 FMU Relay2 +PX4IO Relay1 +PX4IO Relay2 +PX4IO ACC1 +PX4IO ACC2 + + + + +No +Yes + + + +m +meters +0 32767 + + +cm +centimeters +5 127 +1 + + +0 127 +1 + + +m +meters + + +m +meters + + +m +meters + + + +Forward +Forward-Right +Right +Back-Right +Back +Back-Left +Left +Forward-Left +Up +Down + + + + + +0 255 + + +0 255 + + +0 10000 + + +0 255 + + +-1 255 + + + +Low Speed +High Speed + + + + + + +None +Analog +MaxbotixI2C +LidarLite-I2C +PWM +BBB-PRU +LightWareI2C +LightWareSerial +Bebop +MAVLink +uLanding +LeddarOne +MaxbotixSerial +TeraRangerI2C +LidarLiteV3-I2C +VL53L0X +NMEA +WASP-LRF +BenewakeTF02 +Benewake-Serial +LidarLightV3HP +PWM +BlueRoboticsPing +UAVCAN +BenewakeTFminiPlus-I2C +BenewakeTF03 + + + + +Not Used +PX4-airspeed port +Pixhawk-airspeed port +Pixhawk AUXOUT1 +Pixhawk AUXOUT2 +Pixhawk AUXOUT3 +Pixhawk AUXOUT4 +Pixhawk AUXOUT5 +Pixhawk AUXOUT6 + + + +m/V +meters per volt +0.001 + + +V +volt +0.001 + + + +Linear +Inverted +Hyperbolic + + + +cm +centimeters +1 + + +cm +centimeters +1 + + + +Not Used +Pixhawk AUXOUT1 +Pixhawk AUXOUT2 +Pixhawk AUXOUT3 +Pixhawk AUXOUT4 +Pixhawk AUXOUT5 +Pixhawk AUXOUT6 +PX4 FMU Relay1 +PX4 FMU Relay2 +PX4IO Relay1 +PX4IO Relay2 +PX4IO ACC1 +PX4IO ACC2 + + + + +No +Yes + + + +m +meters +0 32767 + + +cm +centimeters +5 127 +1 + + +0 127 +1 + + +m +meters + + +m +meters + + +m +meters + + + +Forward +Forward-Right +Right +Back-Right +Back +Back-Left +Left +Forward-Left +Up +Down + + + + + +0 255 + + +0 255 + + +0 10000 + + +0 255 + + +-1 255 + + + +Low Speed +High Speed + + + + + + +None +Analog +MaxbotixI2C +LidarLite-I2C +PWM +BBB-PRU +LightWareI2C +LightWareSerial +Bebop +MAVLink +uLanding +LeddarOne +MaxbotixSerial +TeraRangerI2C +LidarLiteV3-I2C +VL53L0X +NMEA +WASP-LRF +BenewakeTF02 +Benewake-Serial +LidarLightV3HP +PWM +BlueRoboticsPing +UAVCAN +BenewakeTFminiPlus-I2C +BenewakeTF03 + + + + +Not Used +PX4-airspeed port +Pixhawk-airspeed port +Pixhawk AUXOUT1 +Pixhawk AUXOUT2 +Pixhawk AUXOUT3 +Pixhawk AUXOUT4 +Pixhawk AUXOUT5 +Pixhawk AUXOUT6 + + + +m/V +meters per volt +0.001 + + +V +volt +0.001 + + + +Linear +Inverted +Hyperbolic + + + +cm +centimeters +1 + + +cm +centimeters +1 + + + +Not Used +Pixhawk AUXOUT1 +Pixhawk AUXOUT2 +Pixhawk AUXOUT3 +Pixhawk AUXOUT4 +Pixhawk AUXOUT5 +Pixhawk AUXOUT6 +PX4 FMU Relay1 +PX4 FMU Relay2 +PX4IO Relay1 +PX4IO Relay2 +PX4IO ACC1 +PX4IO ACC2 + + + + +No +Yes + + + +m +meters +0 32767 + + +cm +centimeters +5 127 +1 + + +0 127 +1 + + +m +meters + + +m +meters + + +m +meters + + + +Forward +Forward-Right +Right +Back-Right +Back +Back-Left +Left +Forward-Left +Up +Down + + + + + +0 255 + + +0 255 + + +0 10000 + + +0 255 + + +-1 255 + + + +Low Speed +High Speed + + + + + + +None +Analog +MaxbotixI2C +LidarLite-I2C +PWM +BBB-PRU +LightWareI2C +LightWareSerial +Bebop +MAVLink +uLanding +LeddarOne +MaxbotixSerial +TeraRangerI2C +LidarLiteV3-I2C +VL53L0X +NMEA +WASP-LRF +BenewakeTF02 +Benewake-Serial +LidarLightV3HP +PWM +BlueRoboticsPing +UAVCAN +BenewakeTFminiPlus-I2C +BenewakeTF03 + + + + +Not Used +PX4-airspeed port +Pixhawk-airspeed port +Pixhawk AUXOUT1 +Pixhawk AUXOUT2 +Pixhawk AUXOUT3 +Pixhawk AUXOUT4 +Pixhawk AUXOUT5 +Pixhawk AUXOUT6 + + + +m/V +meters per volt +0.001 + + +V +volt +0.001 + + + +Linear +Inverted +Hyperbolic + + + +cm +centimeters +1 + + +cm +centimeters +1 + + + +Not Used +Pixhawk AUXOUT1 +Pixhawk AUXOUT2 +Pixhawk AUXOUT3 +Pixhawk AUXOUT4 +Pixhawk AUXOUT5 +Pixhawk AUXOUT6 +PX4 FMU Relay1 +PX4 FMU Relay2 +PX4IO Relay1 +PX4IO Relay2 +PX4IO ACC1 +PX4IO ACC2 + + + + +No +Yes + + + +m +meters +0 32767 + + +cm +centimeters +5 127 +1 + + +0 127 +1 + + +m +meters + + +m +meters + + +m +meters + + + +Forward +Forward-Right +Right +Back-Right +Back +Back-Left +Left +Forward-Left +Up +Down + + + + + +0 255 + + +0 255 + + +0 10000 + + +0 255 + + +-1 255 + + + +Low Speed +High Speed + + + + + + +None +Analog +MaxbotixI2C +LidarLite-I2C +PWM +BBB-PRU +LightWareI2C +LightWareSerial +Bebop +MAVLink +uLanding +LeddarOne +MaxbotixSerial +TeraRangerI2C +LidarLiteV3-I2C +VL53L0X +NMEA +WASP-LRF +BenewakeTF02 +Benewake-Serial +LidarLightV3HP +PWM +BlueRoboticsPing +UAVCAN +BenewakeTFminiPlus-I2C +BenewakeTF03 + + + + +Not Used +PX4-airspeed port +Pixhawk-airspeed port +Pixhawk AUXOUT1 +Pixhawk AUXOUT2 +Pixhawk AUXOUT3 +Pixhawk AUXOUT4 +Pixhawk AUXOUT5 +Pixhawk AUXOUT6 + + + +m/V +meters per volt +0.001 + + +V +volt +0.001 + + + +Linear +Inverted +Hyperbolic + + + +cm +centimeters +1 + + +cm +centimeters +1 + + + +Not Used +Pixhawk AUXOUT1 +Pixhawk AUXOUT2 +Pixhawk AUXOUT3 +Pixhawk AUXOUT4 +Pixhawk AUXOUT5 +Pixhawk AUXOUT6 +PX4 FMU Relay1 +PX4 FMU Relay2 +PX4IO Relay1 +PX4IO Relay2 +PX4IO ACC1 +PX4IO ACC2 + + + + +No +Yes + + + +m +meters +0 32767 + + +cm +centimeters +5 127 +1 + + +0 127 +1 + + +m +meters + + +m +meters + + +m +meters + + + +Forward +Forward-Right +Right +Back-Right +Back +Back-Left +Left +Forward-Left +Up +Down + + + + + +0 255 + + +0 255 + + +0 10000 + + +0 255 + + +-1 255 + + + +Low Speed +High Speed + + + + + + +None +Analog +MaxbotixI2C +LidarLite-I2C +PWM +BBB-PRU +LightWareI2C +LightWareSerial +Bebop +MAVLink +uLanding +LeddarOne +MaxbotixSerial +TeraRangerI2C +LidarLiteV3-I2C +VL53L0X +NMEA +WASP-LRF +BenewakeTF02 +Benewake-Serial +LidarLightV3HP +PWM +BlueRoboticsPing +UAVCAN +BenewakeTFminiPlus-I2C +BenewakeTF03 + + + + +Not Used +PX4-airspeed port +Pixhawk-airspeed port +Pixhawk AUXOUT1 +Pixhawk AUXOUT2 +Pixhawk AUXOUT3 +Pixhawk AUXOUT4 +Pixhawk AUXOUT5 +Pixhawk AUXOUT6 + + + +m/V +meters per volt +0.001 + + +V +volt +0.001 + + + +Linear +Inverted +Hyperbolic + + + +cm +centimeters +1 + + +cm +centimeters +1 + + + +Not Used +Pixhawk AUXOUT1 +Pixhawk AUXOUT2 +Pixhawk AUXOUT3 +Pixhawk AUXOUT4 +Pixhawk AUXOUT5 +Pixhawk AUXOUT6 +PX4 FMU Relay1 +PX4 FMU Relay2 +PX4IO Relay1 +PX4IO Relay2 +PX4IO ACC1 +PX4IO ACC2 + + + + +No +Yes + + + +m +meters +0 32767 + + +cm +centimeters +5 127 +1 + + +0 127 +1 + + +m +meters + + +m +meters + + +m +meters + + + +Forward +Forward-Right +Right +Back-Right +Back +Back-Left +Left +Forward-Left +Up +Down + + + + + +0 255 + + +0 255 + + +0 10000 + + +0 255 + + +-1 255 + + + +Low Speed +High Speed + + + + + + +None +PWM +AUXPIN + + + +0.001 + + +1 + + +1 + + +0.1 + + + +Disabled +PixhawkAUX1 +PixhawkAUX2 +PixhawkAUX3 +PixhawkAUX4 +PixhawkAUX5 +PixhawkAUX6 + + + + +None +PWM +AUXPIN + + + +0.001 + + + +Disabled +PixhawkAUX1 +PixhawkAUX2 +PixhawkAUX3 +PixhawkAUX4 +PixhawkAUX5 +PixhawkAUX6 + + + + + + +Disabled +AnalogPin +RCChannelPwmValue +ReceiverProtocol +PWMInputPin + + + + +V5 Nano +Pixracer +Pixhawk ADC4 +Pixhawk ADC3 +Pixhawk ADC6 +Pixhawk2 ADC +PixhawkAUX1 +PixhawkAUX2 +PixhawkAUX3 +PixhawkAUX4 +PixhawkAUX5 +PixhawkAUX6 +Pixhawk SBUS + + + +V +volt +0.01 +0 5.0 + + +V +volt +0.01 +0 5.0 + + +0 16 + + +PWM +PWM in microseconds +0 2000 + + +PWM +PWM in microseconds +0 2000 + + + + + +Disabled +ShowSlips +ShowOverruns + + + + +50Hz +100Hz +200Hz +250Hz +300Hz +400Hz + +True + + + + + +None +Lua Scripts + +True + + +1000 1000000 +10000 + + +1024 1048576 +1024 +True + + + + + +1200 +2400 +4800 +9600 +19200 +38400 +57600 +111100 +115200 +256000 +460800 +500000 +921600 +1500000 + + + + +MAVlink1 +MAVLink2 + +True + + + +None +MAVLink1 +MAVLink2 +Frsky D +Frsky SPort +GPS +Alexmos Gimbal Serial +SToRM32 Gimbal Serial +Rangefinder +FrSky SPort Passthrough (OpenTX) +Lidar360 +Beacon +Volz servo out +SBus servo out +ESC Telemetry +Devo Telemetry +OpticalFlow +RobotisServo +NMEA Output +WindVane +SLCAN +RCIN + +True + + + +1200 +2400 +4800 +9600 +19200 +38400 +57600 +111100 +115200 +256000 +500000 +921600 +1500000 + + + + +None +MAVLink1 +MAVLink2 +Frsky D +Frsky SPort +GPS +Alexmos Gimbal Serial +SToRM32 Gimbal Serial +Rangefinder +FrSky SPort Passthrough (OpenTX) +Lidar360 +Beacon +Volz servo out +SBus servo out +ESC Telemetry +Devo Telemetry +OpticalFlow +RobotisServo +NMEA Output +WindVane +SLCAN +RCIN + +True + + + +1200 +2400 +4800 +9600 +19200 +38400 +57600 +111100 +115200 +256000 +500000 +921600 +1500000 + + + + +None +MAVLink1 +MAVLink2 +Frsky D +Frsky SPort +GPS +Alexmos Gimbal Serial +SToRM32 Gimbal Serial +Rangefinder +FrSky SPort Passthrough (OpenTX) +Lidar360 +Beacon +Volz servo out +SBus servo out +ESC Telemetry +Devo Telemetry +OpticalFlow +RobotisServo +NMEA Output +WindVane +SLCAN +RCIN + +True + + + +1200 +2400 +4800 +9600 +19200 +38400 +57600 +111100 +115200 +256000 +500000 +921600 +1500000 + + + + +None +MAVLink1 +MAVLink2 +Frsky D +Frsky SPort +GPS +Alexmos Gimbal Serial +SToRM32 Gimbal Serial +Rangefinder +FrSky SPort Passthrough (OpenTX) +Lidar360 +Beacon +Volz servo out +SBus servo out +ESC Telemetry +Devo Telemetry +OpticalFlow +RobotisServo +NMEA Output +WindVane +SLCAN +RCIN + +True + + + +1200 +2400 +4800 +9600 +19200 +38400 +57600 +111100 +115200 +256000 +500000 +921600 +1500000 + + + + +None +MAVLink1 +MAVLink2 +Frsky D +Frsky SPort +GPS +Alexmos Gimbal Serial +SToRM32 Gimbal Serial +Rangefinder +FrSky SPort Passthrough (OpenTX) +Lidar360 +Beacon +Volz servo out +SBus servo out +ESC Telemetry +Devo Telemetry +OpticalFlow +RobotisServo +NMEA Output +WindVane +SLCAN +RCIN + +True + + + +1200 +2400 +4800 +9600 +19200 +38400 +57600 +111100 +115200 +256000 +500000 +921600 +1500000 + + + + +None +MAVLink1 +MAVLink2 +Frsky D +Frsky SPort +GPS +Alexmos Gimbal Serial +SToRM32 Gimbal Serial +Rangefinder +FrSky SPort Passthrough (OpenTX) +Lidar360 +Beacon +Volz servo out +SBus servo out +ESC Telemetry +Devo Telemetry +OpticalFlow +RobotisServo +NMEA Output +WindVane +SLCAN +RCIN + +True + + + +1200 +2400 +4800 +9600 +19200 +38400 +57600 +111100 +115200 +256000 +500000 +921600 +1500000 + + + +0:InvertRX, 1:InvertTX, 2:HalfDuplex, 4:Swap +True + + +0:InvertRX, 1:InvertTX, 2:HalfDuplex, 4:Swap +True + + +0:InvertRX, 1:InvertTX, 2:HalfDuplex, 4:Swap +True + + +0:InvertRX, 1:InvertTX, 2:HalfDuplex, 4:Swap +True + + +0:InvertRX, 1:InvertTX, 2:HalfDuplex, 4:Swap +True + + +0:InvertRX, 1:InvertTX, 2:HalfDuplex, 4:Swap +True + + + +Disabled +Serial0 +Serial1 +Serial2 +Serial3 +Serial4 +Serial5 +Serial6 + + + + +Disabled +Serial0 +Serial1 +Serial2 +Serial3 +Serial4 +Serial5 +Serial6 + + + +0 120 +s +seconds + + + +None +MAVLink1 +MAVLink2 +Frsky D +Frsky SPort +GPS +Alexmos Gimbal Serial +SToRM32 Gimbal Serial +Rangefinder +FrSky SPort Passthrough (OpenTX) +Lidar360 +Beacon +Volz servo out +SBus servo out +ESC Telemetry +Devo Telemetry +OpticalFlow +RobotisServo +NMEA Output +WindVane +SLCAN +RCIN + +True + + + +1200 +2400 +4800 +9600 +19200 +38400 +57600 +111100 +115200 +256000 +500000 +921600 +1500000 + + + +0:InvertRX, 1:InvertTX, 2:HalfDuplex, 4:Swap +True + + + + + +Disable +Enable + + + +25 400 +Hz +hertz + + + + +PWM +PWM in microseconds +500 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + + +Normal +Reversed + + + + +Disabled +RCPassThru +Flap +Flap_auto +Aileron +mount_pan +mount_tilt +mount_roll +mount_open +camera_trigger +release +mount2_pan +mount2_tilt +mount2_roll +mount2_open +DifferentialSpoilerLeft1 +DifferentialSpoilerRight1 +Elevator +Rudder +FlaperonLeft +FlaperonRight +GroundSteering +Parachute +Gripper +LandingGear +EngineRunEnable +HeliRSC +HeliTailRSC +Motor1 +Motor2 +Motor3 +Motor4 +Motor5 +Motor6 +Motor7 +Motor8 +MotorTilt +RCIN1 +RCIN2 +RCIN3 +RCIN4 +RCIN5 +RCIN6 +RCIN7 +RCIN8 +RCIN9 +RCIN10 +RCIN11 +RCIN12 +RCIN13 +RCIN14 +RCIN15 +RCIN16 +Ignition +Choke +Starter +Throttle +TrackerYaw +TrackerPitch +ThrottleLeft +ThrottleRight +tiltMotorLeft +tiltMotorRight +ElevonLeft +ElevonRight +VTailLeft +VTailRight +BoostThrottle +Motor9 +Motor10 +Motor11 +Motor12 +DifferentialSpoilerLeft2 +DifferentialSpoilerRight2 +Main Sail +Camera ISO +Camera Focus +Camera Shutter Speed +Script 1 +Script 2 +Script 3 +Script 4 +Script 5 +Script 6 +Script 7 +Script 8 +Script 9 +Script 10 +Script 11 +Script 12 +Script 13 +Script 14 +Script 15 +Script 16 +NeoPixel1 +NeoPixel2 +NeoPixel3 +NeoPixel4 +ProfiLED 1 +ProfiLED 2 +ProfiLED 3 +ProfiLED Clock + + + + + +PWM +PWM in microseconds +500 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + + +Normal +Reversed + + + + +Disabled +RCPassThru +Flap +Flap_auto +Aileron +mount_pan +mount_tilt +mount_roll +mount_open +camera_trigger +release +mount2_pan +mount2_tilt +mount2_roll +mount2_open +DifferentialSpoilerLeft1 +DifferentialSpoilerRight1 +Elevator +Rudder +FlaperonLeft +FlaperonRight +GroundSteering +Parachute +Gripper +LandingGear +EngineRunEnable +HeliRSC +HeliTailRSC +Motor1 +Motor2 +Motor3 +Motor4 +Motor5 +Motor6 +Motor7 +Motor8 +MotorTilt +RCIN1 +RCIN2 +RCIN3 +RCIN4 +RCIN5 +RCIN6 +RCIN7 +RCIN8 +RCIN9 +RCIN10 +RCIN11 +RCIN12 +RCIN13 +RCIN14 +RCIN15 +RCIN16 +Ignition +Choke +Starter +Throttle +TrackerYaw +TrackerPitch +ThrottleLeft +ThrottleRight +tiltMotorLeft +tiltMotorRight +ElevonLeft +ElevonRight +VTailLeft +VTailRight +BoostThrottle +Motor9 +Motor10 +Motor11 +Motor12 +DifferentialSpoilerLeft2 +DifferentialSpoilerRight2 +Main Sail +Camera ISO +Camera Focus +Camera Shutter Speed +Script 1 +Script 2 +Script 3 +Script 4 +Script 5 +Script 6 +Script 7 +Script 8 +Script 9 +Script 10 +Script 11 +Script 12 +Script 13 +Script 14 +Script 15 +Script 16 +NeoPixel1 +NeoPixel2 +NeoPixel3 +NeoPixel4 +ProfiLED 1 +ProfiLED 2 +ProfiLED 3 +ProfiLED Clock + + + + + +PWM +PWM in microseconds +500 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + + +Normal +Reversed + + + + +Disabled +RCPassThru +Flap +Flap_auto +Aileron +mount_pan +mount_tilt +mount_roll +mount_open +camera_trigger +release +mount2_pan +mount2_tilt +mount2_roll +mount2_open +DifferentialSpoilerLeft1 +DifferentialSpoilerRight1 +Elevator +Rudder +FlaperonLeft +FlaperonRight +GroundSteering +Parachute +Gripper +LandingGear +EngineRunEnable +HeliRSC +HeliTailRSC +Motor1 +Motor2 +Motor3 +Motor4 +Motor5 +Motor6 +Motor7 +Motor8 +MotorTilt +RCIN1 +RCIN2 +RCIN3 +RCIN4 +RCIN5 +RCIN6 +RCIN7 +RCIN8 +RCIN9 +RCIN10 +RCIN11 +RCIN12 +RCIN13 +RCIN14 +RCIN15 +RCIN16 +Ignition +Choke +Starter +Throttle +TrackerYaw +TrackerPitch +ThrottleLeft +ThrottleRight +tiltMotorLeft +tiltMotorRight +ElevonLeft +ElevonRight +VTailLeft +VTailRight +BoostThrottle +Motor9 +Motor10 +Motor11 +Motor12 +DifferentialSpoilerLeft2 +DifferentialSpoilerRight2 +Main Sail +Camera ISO +Camera Focus +Camera Shutter Speed +Script 1 +Script 2 +Script 3 +Script 4 +Script 5 +Script 6 +Script 7 +Script 8 +Script 9 +Script 10 +Script 11 +Script 12 +Script 13 +Script 14 +Script 15 +Script 16 +NeoPixel1 +NeoPixel2 +NeoPixel3 +NeoPixel4 +ProfiLED 1 +ProfiLED 2 +ProfiLED 3 +ProfiLED Clock + + + + + +PWM +PWM in microseconds +500 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + + +Normal +Reversed + + + + +Disabled +RCPassThru +Flap +Flap_auto +Aileron +mount_pan +mount_tilt +mount_roll +mount_open +camera_trigger +release +mount2_pan +mount2_tilt +mount2_roll +mount2_open +DifferentialSpoilerLeft1 +DifferentialSpoilerRight1 +Elevator +Rudder +FlaperonLeft +FlaperonRight +GroundSteering +Parachute +Gripper +LandingGear +EngineRunEnable +HeliRSC +HeliTailRSC +Motor1 +Motor2 +Motor3 +Motor4 +Motor5 +Motor6 +Motor7 +Motor8 +MotorTilt +RCIN1 +RCIN2 +RCIN3 +RCIN4 +RCIN5 +RCIN6 +RCIN7 +RCIN8 +RCIN9 +RCIN10 +RCIN11 +RCIN12 +RCIN13 +RCIN14 +RCIN15 +RCIN16 +Ignition +Choke +Starter +Throttle +TrackerYaw +TrackerPitch +ThrottleLeft +ThrottleRight +tiltMotorLeft +tiltMotorRight +ElevonLeft +ElevonRight +VTailLeft +VTailRight +BoostThrottle +Motor9 +Motor10 +Motor11 +Motor12 +DifferentialSpoilerLeft2 +DifferentialSpoilerRight2 +Main Sail +Camera ISO +Camera Focus +Camera Shutter Speed +Script 1 +Script 2 +Script 3 +Script 4 +Script 5 +Script 6 +Script 7 +Script 8 +Script 9 +Script 10 +Script 11 +Script 12 +Script 13 +Script 14 +Script 15 +Script 16 +NeoPixel1 +NeoPixel2 +NeoPixel3 +NeoPixel4 +ProfiLED 1 +ProfiLED 2 +ProfiLED 3 +ProfiLED Clock + + + + + +PWM +PWM in microseconds +500 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + + +Normal +Reversed + + + + +Disabled +RCPassThru +Flap +Flap_auto +Aileron +mount_pan +mount_tilt +mount_roll +mount_open +camera_trigger +release +mount2_pan +mount2_tilt +mount2_roll +mount2_open +DifferentialSpoilerLeft1 +DifferentialSpoilerRight1 +Elevator +Rudder +FlaperonLeft +FlaperonRight +GroundSteering +Parachute +Gripper +LandingGear +EngineRunEnable +HeliRSC +HeliTailRSC +Motor1 +Motor2 +Motor3 +Motor4 +Motor5 +Motor6 +Motor7 +Motor8 +MotorTilt +RCIN1 +RCIN2 +RCIN3 +RCIN4 +RCIN5 +RCIN6 +RCIN7 +RCIN8 +RCIN9 +RCIN10 +RCIN11 +RCIN12 +RCIN13 +RCIN14 +RCIN15 +RCIN16 +Ignition +Choke +Starter +Throttle +TrackerYaw +TrackerPitch +ThrottleLeft +ThrottleRight +tiltMotorLeft +tiltMotorRight +ElevonLeft +ElevonRight +VTailLeft +VTailRight +BoostThrottle +Motor9 +Motor10 +Motor11 +Motor12 +DifferentialSpoilerLeft2 +DifferentialSpoilerRight2 +Main Sail +Camera ISO +Camera Focus +Camera Shutter Speed +Script 1 +Script 2 +Script 3 +Script 4 +Script 5 +Script 6 +Script 7 +Script 8 +Script 9 +Script 10 +Script 11 +Script 12 +Script 13 +Script 14 +Script 15 +Script 16 +NeoPixel1 +NeoPixel2 +NeoPixel3 +NeoPixel4 +ProfiLED 1 +ProfiLED 2 +ProfiLED 3 +ProfiLED Clock + + + + + +PWM +PWM in microseconds +500 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + + +Normal +Reversed + + + + +Disabled +RCPassThru +Flap +Flap_auto +Aileron +mount_pan +mount_tilt +mount_roll +mount_open +camera_trigger +release +mount2_pan +mount2_tilt +mount2_roll +mount2_open +DifferentialSpoilerLeft1 +DifferentialSpoilerRight1 +Elevator +Rudder +FlaperonLeft +FlaperonRight +GroundSteering +Parachute +Gripper +LandingGear +EngineRunEnable +HeliRSC +HeliTailRSC +Motor1 +Motor2 +Motor3 +Motor4 +Motor5 +Motor6 +Motor7 +Motor8 +MotorTilt +RCIN1 +RCIN2 +RCIN3 +RCIN4 +RCIN5 +RCIN6 +RCIN7 +RCIN8 +RCIN9 +RCIN10 +RCIN11 +RCIN12 +RCIN13 +RCIN14 +RCIN15 +RCIN16 +Ignition +Choke +Starter +Throttle +TrackerYaw +TrackerPitch +ThrottleLeft +ThrottleRight +tiltMotorLeft +tiltMotorRight +ElevonLeft +ElevonRight +VTailLeft +VTailRight +BoostThrottle +Motor9 +Motor10 +Motor11 +Motor12 +DifferentialSpoilerLeft2 +DifferentialSpoilerRight2 +Main Sail +Camera ISO +Camera Focus +Camera Shutter Speed +Script 1 +Script 2 +Script 3 +Script 4 +Script 5 +Script 6 +Script 7 +Script 8 +Script 9 +Script 10 +Script 11 +Script 12 +Script 13 +Script 14 +Script 15 +Script 16 +NeoPixel1 +NeoPixel2 +NeoPixel3 +NeoPixel4 +ProfiLED 1 +ProfiLED 2 +ProfiLED 3 +ProfiLED Clock + + + + + +PWM +PWM in microseconds +500 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + + +Normal +Reversed + + + + +Disabled +RCPassThru +Flap +Flap_auto +Aileron +mount_pan +mount_tilt +mount_roll +mount_open +camera_trigger +release +mount2_pan +mount2_tilt +mount2_roll +mount2_open +DifferentialSpoilerLeft1 +DifferentialSpoilerRight1 +Elevator +Rudder +FlaperonLeft +FlaperonRight +GroundSteering +Parachute +Gripper +LandingGear +EngineRunEnable +HeliRSC +HeliTailRSC +Motor1 +Motor2 +Motor3 +Motor4 +Motor5 +Motor6 +Motor7 +Motor8 +MotorTilt +RCIN1 +RCIN2 +RCIN3 +RCIN4 +RCIN5 +RCIN6 +RCIN7 +RCIN8 +RCIN9 +RCIN10 +RCIN11 +RCIN12 +RCIN13 +RCIN14 +RCIN15 +RCIN16 +Ignition +Choke +Starter +Throttle +TrackerYaw +TrackerPitch +ThrottleLeft +ThrottleRight +tiltMotorLeft +tiltMotorRight +ElevonLeft +ElevonRight +VTailLeft +VTailRight +BoostThrottle +Motor9 +Motor10 +Motor11 +Motor12 +DifferentialSpoilerLeft2 +DifferentialSpoilerRight2 +Main Sail +Camera ISO +Camera Focus +Camera Shutter Speed +Script 1 +Script 2 +Script 3 +Script 4 +Script 5 +Script 6 +Script 7 +Script 8 +Script 9 +Script 10 +Script 11 +Script 12 +Script 13 +Script 14 +Script 15 +Script 16 +NeoPixel1 +NeoPixel2 +NeoPixel3 +NeoPixel4 +ProfiLED 1 +ProfiLED 2 +ProfiLED 3 +ProfiLED Clock + + + + + +PWM +PWM in microseconds +500 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + + +Normal +Reversed + + + + +Disabled +RCPassThru +Flap +Flap_auto +Aileron +mount_pan +mount_tilt +mount_roll +mount_open +camera_trigger +release +mount2_pan +mount2_tilt +mount2_roll +mount2_open +DifferentialSpoilerLeft1 +DifferentialSpoilerRight1 +Elevator +Rudder +FlaperonLeft +FlaperonRight +GroundSteering +Parachute +Gripper +LandingGear +EngineRunEnable +HeliRSC +HeliTailRSC +Motor1 +Motor2 +Motor3 +Motor4 +Motor5 +Motor6 +Motor7 +Motor8 +MotorTilt +RCIN1 +RCIN2 +RCIN3 +RCIN4 +RCIN5 +RCIN6 +RCIN7 +RCIN8 +RCIN9 +RCIN10 +RCIN11 +RCIN12 +RCIN13 +RCIN14 +RCIN15 +RCIN16 +Ignition +Choke +Starter +Throttle +TrackerYaw +TrackerPitch +ThrottleLeft +ThrottleRight +tiltMotorLeft +tiltMotorRight +ElevonLeft +ElevonRight +VTailLeft +VTailRight +BoostThrottle +Motor9 +Motor10 +Motor11 +Motor12 +DifferentialSpoilerLeft2 +DifferentialSpoilerRight2 +Main Sail +Camera ISO +Camera Focus +Camera Shutter Speed +Script 1 +Script 2 +Script 3 +Script 4 +Script 5 +Script 6 +Script 7 +Script 8 +Script 9 +Script 10 +Script 11 +Script 12 +Script 13 +Script 14 +Script 15 +Script 16 +NeoPixel1 +NeoPixel2 +NeoPixel3 +NeoPixel4 +ProfiLED 1 +ProfiLED 2 +ProfiLED 3 +ProfiLED Clock + + + + + +PWM +PWM in microseconds +500 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + + +Normal +Reversed + + + + +Disabled +RCPassThru +Flap +Flap_auto +Aileron +mount_pan +mount_tilt +mount_roll +mount_open +camera_trigger +release +mount2_pan +mount2_tilt +mount2_roll +mount2_open +DifferentialSpoilerLeft1 +DifferentialSpoilerRight1 +Elevator +Rudder +FlaperonLeft +FlaperonRight +GroundSteering +Parachute +Gripper +LandingGear +EngineRunEnable +HeliRSC +HeliTailRSC +Motor1 +Motor2 +Motor3 +Motor4 +Motor5 +Motor6 +Motor7 +Motor8 +MotorTilt +RCIN1 +RCIN2 +RCIN3 +RCIN4 +RCIN5 +RCIN6 +RCIN7 +RCIN8 +RCIN9 +RCIN10 +RCIN11 +RCIN12 +RCIN13 +RCIN14 +RCIN15 +RCIN16 +Ignition +Choke +Starter +Throttle +TrackerYaw +TrackerPitch +ThrottleLeft +ThrottleRight +tiltMotorLeft +tiltMotorRight +ElevonLeft +ElevonRight +VTailLeft +VTailRight +BoostThrottle +Motor9 +Motor10 +Motor11 +Motor12 +DifferentialSpoilerLeft2 +DifferentialSpoilerRight2 +Main Sail +Camera ISO +Camera Focus +Camera Shutter Speed +Script 1 +Script 2 +Script 3 +Script 4 +Script 5 +Script 6 +Script 7 +Script 8 +Script 9 +Script 10 +Script 11 +Script 12 +Script 13 +Script 14 +Script 15 +Script 16 +NeoPixel1 +NeoPixel2 +NeoPixel3 +NeoPixel4 +ProfiLED 1 +ProfiLED 2 +ProfiLED 3 +ProfiLED Clock + + + + + +PWM +PWM in microseconds +500 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + + +Normal +Reversed + + + + +Disabled +RCPassThru +Flap +Flap_auto +Aileron +mount_pan +mount_tilt +mount_roll +mount_open +camera_trigger +release +mount2_pan +mount2_tilt +mount2_roll +mount2_open +DifferentialSpoilerLeft1 +DifferentialSpoilerRight1 +Elevator +Rudder +FlaperonLeft +FlaperonRight +GroundSteering +Parachute +Gripper +LandingGear +EngineRunEnable +HeliRSC +HeliTailRSC +Motor1 +Motor2 +Motor3 +Motor4 +Motor5 +Motor6 +Motor7 +Motor8 +MotorTilt +RCIN1 +RCIN2 +RCIN3 +RCIN4 +RCIN5 +RCIN6 +RCIN7 +RCIN8 +RCIN9 +RCIN10 +RCIN11 +RCIN12 +RCIN13 +RCIN14 +RCIN15 +RCIN16 +Ignition +Choke +Starter +Throttle +TrackerYaw +TrackerPitch +ThrottleLeft +ThrottleRight +tiltMotorLeft +tiltMotorRight +ElevonLeft +ElevonRight +VTailLeft +VTailRight +BoostThrottle +Motor9 +Motor10 +Motor11 +Motor12 +DifferentialSpoilerLeft2 +DifferentialSpoilerRight2 +Main Sail +Camera ISO +Camera Focus +Camera Shutter Speed +Script 1 +Script 2 +Script 3 +Script 4 +Script 5 +Script 6 +Script 7 +Script 8 +Script 9 +Script 10 +Script 11 +Script 12 +Script 13 +Script 14 +Script 15 +Script 16 +NeoPixel1 +NeoPixel2 +NeoPixel3 +NeoPixel4 +ProfiLED 1 +ProfiLED 2 +ProfiLED 3 +ProfiLED Clock + + + + + +PWM +PWM in microseconds +500 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + + +Normal +Reversed + + + + +Disabled +RCPassThru +Flap +Flap_auto +Aileron +mount_pan +mount_tilt +mount_roll +mount_open +camera_trigger +release +mount2_pan +mount2_tilt +mount2_roll +mount2_open +DifferentialSpoilerLeft1 +DifferentialSpoilerRight1 +Elevator +Rudder +FlaperonLeft +FlaperonRight +GroundSteering +Parachute +Gripper +LandingGear +EngineRunEnable +HeliRSC +HeliTailRSC +Motor1 +Motor2 +Motor3 +Motor4 +Motor5 +Motor6 +Motor7 +Motor8 +MotorTilt +RCIN1 +RCIN2 +RCIN3 +RCIN4 +RCIN5 +RCIN6 +RCIN7 +RCIN8 +RCIN9 +RCIN10 +RCIN11 +RCIN12 +RCIN13 +RCIN14 +RCIN15 +RCIN16 +Ignition +Choke +Starter +Throttle +TrackerYaw +TrackerPitch +ThrottleLeft +ThrottleRight +tiltMotorLeft +tiltMotorRight +ElevonLeft +ElevonRight +VTailLeft +VTailRight +BoostThrottle +Motor9 +Motor10 +Motor11 +Motor12 +DifferentialSpoilerLeft2 +DifferentialSpoilerRight2 +Main Sail +Camera ISO +Camera Focus +Camera Shutter Speed +Script 1 +Script 2 +Script 3 +Script 4 +Script 5 +Script 6 +Script 7 +Script 8 +Script 9 +Script 10 +Script 11 +Script 12 +Script 13 +Script 14 +Script 15 +Script 16 +NeoPixel1 +NeoPixel2 +NeoPixel3 +NeoPixel4 +ProfiLED 1 +ProfiLED 2 +ProfiLED 3 +ProfiLED Clock + + + + + +PWM +PWM in microseconds +500 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + + +Normal +Reversed + + + + +Disabled +RCPassThru +Flap +Flap_auto +Aileron +mount_pan +mount_tilt +mount_roll +mount_open +camera_trigger +release +mount2_pan +mount2_tilt +mount2_roll +mount2_open +DifferentialSpoilerLeft1 +DifferentialSpoilerRight1 +Elevator +Rudder +FlaperonLeft +FlaperonRight +GroundSteering +Parachute +Gripper +LandingGear +EngineRunEnable +HeliRSC +HeliTailRSC +Motor1 +Motor2 +Motor3 +Motor4 +Motor5 +Motor6 +Motor7 +Motor8 +MotorTilt +RCIN1 +RCIN2 +RCIN3 +RCIN4 +RCIN5 +RCIN6 +RCIN7 +RCIN8 +RCIN9 +RCIN10 +RCIN11 +RCIN12 +RCIN13 +RCIN14 +RCIN15 +RCIN16 +Ignition +Choke +Starter +Throttle +TrackerYaw +TrackerPitch +ThrottleLeft +ThrottleRight +tiltMotorLeft +tiltMotorRight +ElevonLeft +ElevonRight +VTailLeft +VTailRight +BoostThrottle +Motor9 +Motor10 +Motor11 +Motor12 +DifferentialSpoilerLeft2 +DifferentialSpoilerRight2 +Main Sail +Camera ISO +Camera Focus +Camera Shutter Speed +Script 1 +Script 2 +Script 3 +Script 4 +Script 5 +Script 6 +Script 7 +Script 8 +Script 9 +Script 10 +Script 11 +Script 12 +Script 13 +Script 14 +Script 15 +Script 16 +NeoPixel1 +NeoPixel2 +NeoPixel3 +NeoPixel4 +ProfiLED 1 +ProfiLED 2 +ProfiLED 3 +ProfiLED Clock + + + + + +PWM +PWM in microseconds +500 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + + +Normal +Reversed + + + + +Disabled +RCPassThru +Flap +Flap_auto +Aileron +mount_pan +mount_tilt +mount_roll +mount_open +camera_trigger +release +mount2_pan +mount2_tilt +mount2_roll +mount2_open +DifferentialSpoilerLeft1 +DifferentialSpoilerRight1 +Elevator +Rudder +FlaperonLeft +FlaperonRight +GroundSteering +Parachute +Gripper +LandingGear +EngineRunEnable +HeliRSC +HeliTailRSC +Motor1 +Motor2 +Motor3 +Motor4 +Motor5 +Motor6 +Motor7 +Motor8 +MotorTilt +RCIN1 +RCIN2 +RCIN3 +RCIN4 +RCIN5 +RCIN6 +RCIN7 +RCIN8 +RCIN9 +RCIN10 +RCIN11 +RCIN12 +RCIN13 +RCIN14 +RCIN15 +RCIN16 +Ignition +Choke +Starter +Throttle +TrackerYaw +TrackerPitch +ThrottleLeft +ThrottleRight +tiltMotorLeft +tiltMotorRight +ElevonLeft +ElevonRight +VTailLeft +VTailRight +BoostThrottle +Motor9 +Motor10 +Motor11 +Motor12 +DifferentialSpoilerLeft2 +DifferentialSpoilerRight2 +Main Sail +Camera ISO +Camera Focus +Camera Shutter Speed +Script 1 +Script 2 +Script 3 +Script 4 +Script 5 +Script 6 +Script 7 +Script 8 +Script 9 +Script 10 +Script 11 +Script 12 +Script 13 +Script 14 +Script 15 +Script 16 +NeoPixel1 +NeoPixel2 +NeoPixel3 +NeoPixel4 +ProfiLED 1 +ProfiLED 2 +ProfiLED 3 +ProfiLED Clock + + + + + +PWM +PWM in microseconds +500 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + + +Normal +Reversed + + + + +Disabled +RCPassThru +Flap +Flap_auto +Aileron +mount_pan +mount_tilt +mount_roll +mount_open +camera_trigger +release +mount2_pan +mount2_tilt +mount2_roll +mount2_open +DifferentialSpoilerLeft1 +DifferentialSpoilerRight1 +Elevator +Rudder +FlaperonLeft +FlaperonRight +GroundSteering +Parachute +Gripper +LandingGear +EngineRunEnable +HeliRSC +HeliTailRSC +Motor1 +Motor2 +Motor3 +Motor4 +Motor5 +Motor6 +Motor7 +Motor8 +MotorTilt +RCIN1 +RCIN2 +RCIN3 +RCIN4 +RCIN5 +RCIN6 +RCIN7 +RCIN8 +RCIN9 +RCIN10 +RCIN11 +RCIN12 +RCIN13 +RCIN14 +RCIN15 +RCIN16 +Ignition +Choke +Starter +Throttle +TrackerYaw +TrackerPitch +ThrottleLeft +ThrottleRight +tiltMotorLeft +tiltMotorRight +ElevonLeft +ElevonRight +VTailLeft +VTailRight +BoostThrottle +Motor9 +Motor10 +Motor11 +Motor12 +DifferentialSpoilerLeft2 +DifferentialSpoilerRight2 +Main Sail +Camera ISO +Camera Focus +Camera Shutter Speed +Script 1 +Script 2 +Script 3 +Script 4 +Script 5 +Script 6 +Script 7 +Script 8 +Script 9 +Script 10 +Script 11 +Script 12 +Script 13 +Script 14 +Script 15 +Script 16 +NeoPixel1 +NeoPixel2 +NeoPixel3 +NeoPixel4 +ProfiLED 1 +ProfiLED 2 +ProfiLED 3 +ProfiLED Clock + + + + + +PWM +PWM in microseconds +500 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + + +Normal +Reversed + + + + +Disabled +RCPassThru +Flap +Flap_auto +Aileron +mount_pan +mount_tilt +mount_roll +mount_open +camera_trigger +release +mount2_pan +mount2_tilt +mount2_roll +mount2_open +DifferentialSpoilerLeft1 +DifferentialSpoilerRight1 +Elevator +Rudder +FlaperonLeft +FlaperonRight +GroundSteering +Parachute +Gripper +LandingGear +EngineRunEnable +HeliRSC +HeliTailRSC +Motor1 +Motor2 +Motor3 +Motor4 +Motor5 +Motor6 +Motor7 +Motor8 +MotorTilt +RCIN1 +RCIN2 +RCIN3 +RCIN4 +RCIN5 +RCIN6 +RCIN7 +RCIN8 +RCIN9 +RCIN10 +RCIN11 +RCIN12 +RCIN13 +RCIN14 +RCIN15 +RCIN16 +Ignition +Choke +Starter +Throttle +TrackerYaw +TrackerPitch +ThrottleLeft +ThrottleRight +tiltMotorLeft +tiltMotorRight +ElevonLeft +ElevonRight +VTailLeft +VTailRight +BoostThrottle +Motor9 +Motor10 +Motor11 +Motor12 +DifferentialSpoilerLeft2 +DifferentialSpoilerRight2 +Main Sail +Camera ISO +Camera Focus +Camera Shutter Speed +Script 1 +Script 2 +Script 3 +Script 4 +Script 5 +Script 6 +Script 7 +Script 8 +Script 9 +Script 10 +Script 11 +Script 12 +Script 13 +Script 14 +Script 15 +Script 16 +NeoPixel1 +NeoPixel2 +NeoPixel3 +NeoPixel4 +ProfiLED 1 +ProfiLED 2 +ProfiLED 3 +ProfiLED Clock + + + + + +PWM +PWM in microseconds +500 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + + +Normal +Reversed + + + + +Disabled +RCPassThru +Flap +Flap_auto +Aileron +mount_pan +mount_tilt +mount_roll +mount_open +camera_trigger +release +mount2_pan +mount2_tilt +mount2_roll +mount2_open +DifferentialSpoilerLeft1 +DifferentialSpoilerRight1 +Elevator +Rudder +FlaperonLeft +FlaperonRight +GroundSteering +Parachute +Gripper +LandingGear +EngineRunEnable +HeliRSC +HeliTailRSC +Motor1 +Motor2 +Motor3 +Motor4 +Motor5 +Motor6 +Motor7 +Motor8 +MotorTilt +RCIN1 +RCIN2 +RCIN3 +RCIN4 +RCIN5 +RCIN6 +RCIN7 +RCIN8 +RCIN9 +RCIN10 +RCIN11 +RCIN12 +RCIN13 +RCIN14 +RCIN15 +RCIN16 +Ignition +Choke +Starter +Throttle +TrackerYaw +TrackerPitch +ThrottleLeft +ThrottleRight +tiltMotorLeft +tiltMotorRight +ElevonLeft +ElevonRight +VTailLeft +VTailRight +BoostThrottle +Motor9 +Motor10 +Motor11 +Motor12 +DifferentialSpoilerLeft2 +DifferentialSpoilerRight2 +Main Sail +Camera ISO +Camera Focus +Camera Shutter Speed +Script 1 +Script 2 +Script 3 +Script 4 +Script 5 +Script 6 +Script 7 +Script 8 +Script 9 +Script 10 +Script 11 +Script 12 +Script 13 +Script 14 +Script 15 +Script 16 +NeoPixel1 +NeoPixel2 +NeoPixel3 +NeoPixel4 +ProfiLED 1 +ProfiLED 2 +ProfiLED 3 +ProfiLED Clock + + + + + +0:Channel1,1:Channel2,2:Channel3,3:Channel4,4:Channel5,5:Channel6,6:Channel7,7:Channel8,8:Channel9,9:Channel10,10:Channel11,11:Channel12,12:Channel13,13:Channel14,14:Channel15,15:Channel16 + + + +Disabled +Enabled + + + + +Disabled +TestMotor1 +TestMotor2 +TestMotor3 +TestMotor4 +TestMotor5 +TestMotor6 +TestMotor7 +TestMotor8 + + + +s +seconds +0 300 + + +Hz +hertz +0 500 + + + +Disabled +Enabled + + + + +None +OneShot +OneShot125 +Brushed +DShot150 +DShot300 +DShot600 +DShot1200 + + + + +Console +Serial1 +Serial2 +Serial3 +Serial4 +Serial5 + + + +1 127 + + +0:Channel1,1:Channel2,2:Channel3,3:Channel4,4:Channel5,5:Channel6,6:Channel7,7:Channel8,8:Channel9,9:Channel10,10:Channel11,11:Channel12,12:Channel13,13:Channel14,14:Channel15,15:Channel16 + + + + +0 4095 + + +0 4095 + + + + +25 250 +Hz +hertz + + + + +0:Channel1,1:Channel2,2:Channel3,3:Channel4,4:Channel5,5:Channel6,6:Channel7,7:Channel8,8:Channel9,9:Channel10,10:Channel11,11:Channel12,12:Channel13,13:Channel14,14:Channel15,15:Channel16 + + + + + +Disabled +Enabled + + + +0 15 + + + + + +Disabled +Enabled + + + +0 15 + + +1000 2000 +PWM +PWM in microseconds + + +1000 2000 +PWM +PWM in microseconds + + + +Normal +Reverse + + + + + + +Disabled +Enabled + + + +deg +degrees +0.000001 +-90 90 + + +deg +degrees +0.000001 +-180 180 + + +cm +centimeters +1 +0 10000 + + +deg +degrees +1 +-180 +180 + + +Hz +hertz +0 200 + + + +cylinder +cone +sphere + + + +m +meters +0 100 + + +m +meters +5 100 + + + + + +Disabled +Enabled + + + +0 15 + + +0 15 + + + + + +Disable +Enable + + + +m/s +meters per second +0 10 + + +m +meters +0 100 + + +s +seconds +0 32768 + + +s +seconds +0 32768 + + +m.m/s/s +square meter per square second +0 0.5 + + +m +meters +0 1000.0 + + +m +meters +0 1000.0 + + +m +meters +0 1000.0 + + +0 16 + + + + +Hz +hertz +0 10 +1 + + +Hz +hertz +0 10 +1 + + +Hz +hertz +0 10 +1 + + +Hz +hertz +0 10 +1 + + +Hz +hertz +0 10 +1 + + +Hz +hertz +0 10 +1 + + +Hz +hertz +0 10 +1 + + +Hz +hertz +0 10 +1 + + +Hz +hertz +0 10 +1 + + +Hz +hertz +0 50 +1 + + + + +Hz +hertz +0 10 +1 + + +Hz +hertz +0 10 +1 + + +Hz +hertz +0 10 +1 + + +Hz +hertz +0 10 +1 + + +Hz +hertz +0 10 +1 + + +Hz +hertz +0 10 +1 + + +Hz +hertz +0 10 +1 + + +Hz +hertz +0 10 +1 + + +Hz +hertz +0 10 +1 + + +Hz +hertz +0 50 +1 + + + + +Hz +hertz +0 10 +1 + + +Hz +hertz +0 10 +1 + + +Hz +hertz +0 10 +1 + + +Hz +hertz +0 10 +1 + + +Hz +hertz +0 10 +1 + + +Hz +hertz +0 10 +1 + + +Hz +hertz +0 10 +1 + + +Hz +hertz +0 10 +1 + + +Hz +hertz +0 10 +1 + + +Hz +hertz +0 50 +1 + + + + +Hz +hertz +0 10 +1 + + +Hz +hertz +0 10 +1 + + +Hz +hertz +0 10 +1 + + +Hz +hertz +0 10 +1 + + +Hz +hertz +0 10 +1 + + +Hz +hertz +0 10 +1 + + +Hz +hertz +0 10 +1 + + +Hz +hertz +0 10 +1 + + +Hz +hertz +0 10 +1 + + +Hz +hertz +0 50 +1 + + + + +True + + +s +seconds +True + + +s +seconds +True + + +s +seconds +True + + + + +0.4 1.0 +s +seconds +0.1 + + +0.1 10.0 +0.1 + + +0 1.0 +0.05 + + +0 0.1 +0.01 + + +0 4500 +1 +cdeg +centidegrees + + +0 5 +0.1 +m/s +meters per second + + +0.0 10.0 +0.1 + + +0.0 30.0 +0.1 +m/s +meters per second + + +0.0 50.0 +0.1 +deg/m/s +degrees per meter per second + + +0.0 4500.0 +0.1 +cdeg +centidegrees + + + + +0.1 +0.1 20.0 + + +0.1 +0.1 10.0 + + +3.0 10.0 +0.2 + + +0.1 1.0 +0.1 + + +0.0 0.5 +0.02 + + +1.0 10.0 +0.5 + + +1.0 5.0 +0.05 + + +0.5 2.0 +0.05 + + +5.0 30.0 +1.0 + + +0.0 2.0 +0.1 + + +0.1 1.0 +0.1 + + +0.1 +0.0 20.0 + + +-1 127 +1 + + +-1 100 +0.1 + + +-1.0 2.0 +0.1 + + +0 45 +1 + + +-45 0 +1 + + +0.0 2.0 +0.1 + + +1.0 5.0 +0.2 + + +0.1 1.0 +0.1 + + +-5 40 +1 + + +0.0 20.0 +m/s +meters per second +0.1 + + +-2.0 2.0 +m/s/m +meters per second per meter +0.1 + + +0.1 1.0 +0.1 + + +0.0 0.5 +0.02 + + +0.0 0.5 +0.02 + + +0.1 1.0 +0.1 + + + +Disable +Enable + + + +0:GliderOnly + + + + + +Disable +Enable + + + +m +meters +1 + + +0:Disable Download + + + + +0 200 +1 +m +meters + + +0 50 +1 +m +meters + + +0 30 +1 +deg +degrees + + +0 500 +1 +m +meters + + + + + +None +RateRollPI +RateRollP +RateRollI +RateRollD +RatePitchPI +RatePitchP +RatePitchI +RatePitchD +RateYawPI +RateYawP +RateYawI +RateYawD +AngleRollP +AnglePitchP +AngleYawP +PosXYP +PosZP +VelXYP +VelXYI +VelZP +AccelZP +AccelZI +AccelZD +FixedWingRollP +FixedWingRollI +FixedWingRollD +FixedWingRollFF +FixedWingPitchP +FixedWingPitchI +FixedWingPitchD +FixedWingPitchFF +Set_RateRollPitch +Set_RateRoll +Set_RatePitch +Set_RateYaw +Set_AngleRollPitch +Set_VelXY +Set_AccelZ + + + + +Disable +Chan5 +Chan6 +Chan7 +Chan8 +Chan9 +Chan10 +Chan11 +Chan12 +Chan13 +Chan14 +Chan15 +Chan16 + + + +900 2100 + + +900 2100 + + + +Disable +Chan1 +Chan3 +Chan3 +Chan4 +Chan5 +Chan6 +Chan7 +Chan8 +Chan9 +Chan10 +Chan11 +Chan12 +Chan13 +Chan14 +Chan15 +Chan16 + + + + + + +Disable +Enable + + + +0 1 + + + + +0 4 +0.25 + + +0 2 +0.25 + + +0 2 +0.25 + + +0.8 1.2 +0.05 + + +0 4500 +1 + + + diff --git a/src/FirmwarePlugin/APM/APMParameterFactMetaData.Plane.4.2.xml b/src/FirmwarePlugin/APM/APMParameterFactMetaData.Plane.4.1.xml similarity index 89% rename from src/FirmwarePlugin/APM/APMParameterFactMetaData.Plane.4.2.xml rename to src/FirmwarePlugin/APM/APMParameterFactMetaData.Plane.4.1.xml index 4221e38..6f364cb 100644 --- a/src/FirmwarePlugin/APM/APMParameterFactMetaData.Plane.4.2.xml +++ b/src/FirmwarePlugin/APM/APMParameterFactMetaData.Plane.4.1.xml @@ -16,10 +16,10 @@ 1 - 0 30 - 1 s seconds + 0 30 + 1 0:Roll,1:Pitch,2:Yaw,3:Steering,4:Landing @@ -58,103 +58,120 @@ VTOL Yaw only + + + Disabled + Enabled + + - 0 30 - 0.1 m/s meters per second + 0 30 + 0.1 - 0 30 - 0.1 m/s/s meters per square second + 0 30 + 0.1 - 0 127 - 1 ds deciseconds + 0 127 + 1 - -100 100 - 1 % percent + -100 100 + 1 - 0 30 - 0.1 m/s meters per second + 0 30 + 0.1 - 0 30 - 0.1 m/s meters per second + 0 30 + 0.1 - -1 127 - 1 %/s percent per second + -1 127 + 1 - 0 10 - 0.5 s seconds + 0 10 + 0.5 0 100 - 1 % percent + 1 - 0 45 - 1 deg degrees + 0 45 + 1 - 0:AUTO_ALWAYS,1:AUTO_LAND,2:AUTO_LOITER_TO_ALT,3:AUTO_LOITER_ALL,4:AUTO_WAYPOINTS,5:LOITER,6:RTL,7:CIRCLE,8:CRUISE,9:FBWB,10:GUIDED,11:AUTO_LANDING_PATTERN,12:FBWA,13:ACRO,14:STABILIZE,15:THERMAL MANUAL ONLY AutoAlways AutoLanding + 0:AUTO_ALWAYS,1:AUTO_LAND,2:AUTO_LOITER_TO_ALT,3:AUTO_LOITER_ALL,4:AUTO_WAYPOINTS,5:LOITER,6:RTL,7:CIRCLE,8:CRUISE,9:FBWB,10:GUIDED,11:AUTO_LANDING_PATTERN,12:FBWA,13:ACRO,14:STABILIZE,15:THERMAL + + + + Default + L1Controller + + + + + Automatic + - -32767 32767 - 1 m meters + -32767 32767 + 1 + m + meters 1 32767 1 - m - meters + m + meters 0 32767 1 - m - meters - -32767 32767 - 1 m meters + -32767 32767 + 1 - -32767 32767 - 1 m meters + -32767 32767 + 1 @@ -163,16 +180,16 @@ - 5 100 - 1 m/s meters per second + 5 100 + 1 - 5 100 - 1 m/s meters per second + 5 100 + 1 @@ -181,11 +198,11 @@ - 0: Enable all modes, 1:FBWB, 2:Cruise, 3:Auto, 4:RTL, 5:Avoid_ADSB, 6:Guided, 7:Loiter, 8:Circle, 9:QRTL, 10:QLand, 11:Qloiter Disabled Enabled + 0: Enable all modes, 1:FBWB, 2:Cruise, 3:Auto, 4:RTL, 5:Avoid_ADSB, 6:Guided, 7:Loiter, 8:Circle, 9:QRTL, 10:QLand, 11:Qloiter 0 10000 @@ -194,39 +211,39 @@ 1 10 - 0.1 m/s meters per second + 0.1 + % + percent -100 100 1 - % - percent - 0 100 - 1 % percent + 0 100 + 1 - 0 100 - 1 % percent - - - 0 127 - 1 - %/s - percent per second - - 0 100 1 + + %/s percent per second + 0 127 + 1 + + + %/s + percent per second + 0 100 + 1 @@ -252,10 +269,10 @@ 1 - 0 100 - 1 % percent + 0 100 + 1 @@ -263,20 +280,19 @@ Enabled - + CIRCLE/no change(if already in AUTO|GUIDED|LOITER) CIRCLE - FBWA at zero throttle + FBWA Disable - FBWB - 1 100 - 0.5 s seconds + 1 100 + 0.5 @@ -287,10 +303,10 @@ - 1 300 - 0.5 s seconds + 1 300 + 0.5 @@ -329,7 +345,6 @@ QAUTOTUNE QACRO THERMAL - Loiter to QLand @@ -357,7 +372,6 @@ QAUTOTUNE QACRO THERMAL - Loiter to QLand @@ -385,7 +399,6 @@ QAUTOTUNE QACRO THERMAL - Loiter to QLand @@ -413,7 +426,6 @@ QAUTOTUNE QACRO THERMAL - Loiter to QLand @@ -441,7 +453,6 @@ QAUTOTUNE QACRO THERMAL - Loiter to QLand @@ -469,7 +480,6 @@ QAUTOTUNE QACRO THERMAL - Loiter to QLand @@ -497,44 +507,37 @@ QAUTOTUNE QACRO THERMAL - Loiter to QLand - 0 9000 - 10 cdeg centidegrees + 0 9000 + 10 + cdeg + centidegrees 0 9000 10 - cdeg - centidegrees - -9000 0 - 10 cdeg centidegrees + -9000 0 + 10 - 10 500 - 1 deg/s degrees per second + 10 500 + 1 + deg/s + degrees per second 10 500 1 - deg/s - degrees per second - - - 0 500 - 1 - deg/s - degrees per second @@ -543,16 +546,22 @@ - -100 100 - 0.1 m meters + -100 100 + 0.1 - 10 360 - 1 deg/s degrees per second + 10 360 + 1 + + + + Disabled + Enabled + 0.5 1.2 @@ -564,40 +573,40 @@ - -1000 1000 d% decipercent + -1000 1000 - -100 100 % percent + -100 100 True - 0:ATTITUDE_FAST,1:ATTITUDE_MED,2:GPS,3:PM,4:CTUN,5:NTUN,6:MODE,7:IMU,8:CMD,9:CURRENT,10:COMPASS,11:TECS,12:CAMERA,13:RC,14:SONAR,15:ARM/DISARM,19:IMU_RAW,20:ATTITUDE_FULLRATE,21:VideoStabilization + 0:ATTITUDE_FAST,1:ATTITUDE_MED,2:GPS,3:PM,4:CTUN,5:NTUN,6:MODE,7:IMU,8:CMD,9:CURRENT,10:COMPASS,11:TECS,12:CAMERA,13:RC,14:SONAR,15:ARM/DISARM,19:IMU_RAW cm/s centimeters per second - 0 50 - 0.1 m/s meters per second + 0 50 + 0.1 cm/s centimeters per second - -4500 4500 - 10 cdeg centidegrees + -4500 4500 + 10 cm @@ -621,39 +630,40 @@ 0 100 - 1 % percent + 1 0 100 - 1 m/s meters per second + 1 - + 0 16 1 - + + + Disable - Fly HOME then land - Go directly to landing sequence - OnlyForGoAround + Enable - go HOME then land + Enable - go directly to landing sequence - 10 127 - 1 m/s/s meters per square second + 10 127 + 1 - 0:Disarm Disabled + 0:Disarm @@ -669,39 +679,39 @@ 0 100 - 1 % percent + 1 0:Chan1,1:Chan2,2:Chan3,3:Chan4,4:Chan5,5:Chan6,6:Chan7,7:Chan8,8:Chan9,9:Chan10,10:Chan11,11:Chan12,12:Chan13,13:Chan14,14:Chan15,15:Chan16 - -1 127 Never reset Always reset + -1 127 m meters - 0:Rudder mixing in direct flight modes only (Manual / Stabilize / Acro),1:Use centered throttle in Cruise or FBWB to indicate trim airspeed, 2:Disable attitude check for takeoff arming, 3:Force target airspeed to trim airspeed in Cruise or FBWB, 4: Climb to ALT_HOLD_RTL before turning for RTL, 5: Enable yaw damper in acro mode, 6: Surpress speed scaling during auto takeoffs to be 1 or less to prevent oscillations without airpseed sensor., 7:EnableDefaultAirspeed for takeoff, 8: Remove the TRIM_PITCH_CD on the GCS horizon, 9: Remove the TRIM_PITCH_CD on the OSD horizon, 10: Adjust mid-throttle to be TRIM_THROTTLE in non-auto throttle modes except MANUAL, 11:Disable suppression of fixed wing rate gains in ground mode + 0:Rudder mixing in direct flight modes only (Manual / Stabilize / Acro),1:Use centered throttle in Cruise or FBWB to indicate trim airspeed, 2:Disable attitude check for takeoff arming, 3:Force target airspeed to trim airspeed in Cruise or FBWB, 4: Climb to ALT_HOLD_RTL before turning for RTL, 5: Enable yaw damper in acro mode, 6: Surpress speed scaling during auto takeoffs to be 1 or less to prevent oscillations without airpseed sensor. 1 10 0 100 - 1 % percent + 1 0 100 - 1 % percent + 1 0 120 @@ -710,31 +720,31 @@ seconds - 0:pitch control, 1:full span, 2:Progressive crow none D spoilers have pitch input use both control surfaces on each wing for roll Progressive crow flaps only first (0-50% flap in) then crow flaps (50 - 100% flap in) + 0:pitch control, 1:full span, 2:Progressive crow 0 100 - 1 % percent + 1 6 35 - 0.1 V volt + 0.1 6 35 - 0.1 V volt + 0.1 @@ -743,33 +753,14 @@ - - Strict - Default - Relaxed - + 0.6:Strict,0.8:Default,1.0:Relaxed - 0 30 - 1 m meters - - - 0 100 + 0 30 1 - - 0 100 - 1 - - - 0 100 - 1 - - - 0: Servo 1, 1: Servo 2, 2: Servo 3, 3: Servo 4, 4: Servo 5, 5: Servo 6, 6: Servo 7, 7: Servo 8, 8: Servo 9, 9: Servo 10, 10: Servo 11, 11: Servo 12, 12: Servo 13, 13: Servo 14, 14: Servo 15 - @@ -779,7 +770,6 @@ Disabled uAvionix-MAVLink Sagetech - uAvionix-UCP True @@ -792,7 +782,7 @@ m meters - + -1 16777215 @@ -882,9 +872,6 @@ log all - - 0:Ping200X Send GPS,1:Squawk 7400 on RC failsafe,2:Squawk 7400 on GCS failsafe - @@ -967,11 +954,10 @@ 0.0 1.0 .01 - + Disabled - Use GPS for DCM position - Use GPS for DCM position and height + Enabled @@ -984,29 +970,29 @@ 0 127 - 1 m/s meters per second + 1 - -0.1745 +0.1745 - 0.01 rad radians + -0.1745 +0.1745 + 0.01 - -0.1745 +0.1745 - 0.01 rad radians + -0.1745 +0.1745 + 0.01 - -0.1745 +0.1745 - 0.01 rad radians + -0.1745 +0.1745 + 0.01 - + None Yaw45 @@ -1017,40 +1003,38 @@ Yaw270 Yaw315 Roll180 - Yaw45Roll180 - Yaw90Roll180 - Yaw135Roll180 + Roll180Yaw45 + Roll180Yaw90 + Roll180Yaw135 Pitch180 - Yaw225Roll180 - Yaw270Roll180 - Yaw315Roll180 + Roll180Yaw225 + Roll180Yaw270 + Roll180Yaw315 Roll90 - Yaw45Roll90 - Yaw90Roll90 - Yaw135Roll90 + Roll90Yaw45 + Roll90Yaw90 + Roll90Yaw135 Roll270 - Yaw45Roll270 - Yaw90Roll270 - Yaw135Roll270 + Roll270Yaw45 + Roll270Yaw90 + Roll270Yaw135 Pitch90 Pitch270 - Yaw90Pitch180 - Yaw270Pitch180 - Pitch90Roll90 - Pitch90Roll180 - Pitch90Roll270 - Pitch180Roll90 - Pitch180Roll270 - Pitch270Roll90 - Pitch270Roll180 - Pitch270Roll270 - Yaw90Pitch180Roll90 - Yaw270Roll90 + Pitch180Yaw90 + Pitch180Yaw270 + Roll90Pitch90 + Roll180Pitch90 + Roll270Pitch90 + Roll90Pitch180 + Roll270Pitch180 + Roll90Pitch270 + Roll180Pitch270 + Roll270Pitch270 + Roll90Pitch180Yaw90 + Roll90Yaw270 Yaw293Pitch68Roll180 Pitch315 - Pitch315Roll90 - Roll45 - Roll315 + Roll90Pitch315 Custom @@ -1072,21 +1056,21 @@ -180 180 - 1 deg degrees + 1 -180 180 - 1 deg degrees + 1 -180 180 - 1 deg degrees + 1 @@ -1098,9 +1082,9 @@ - 0.25 3.0 m/s/s meters per square second + 0.25 3.0 @@ -1127,7 +1111,7 @@ I2C-MS5525 (0x77) I2C-SDP3X I2C-DLVR-5in - DroneCAN + UAVCAN I2C-DLVR-10in I2C-DLVR-20in I2C-DLVR-30in @@ -1137,9 +1121,6 @@ ASP5033 - - True - DoNotUse @@ -1157,13 +1138,8 @@ - - - Normal - Swapped - Auto Detect - - + + Disable @@ -1185,8 +1161,8 @@ 2ndSensor - - 0:SpeedMismatchDisable, 1:AllowSpeedMismatchRecovery, 2:DisableVoltageCorrection + + 0:Disable sensor, 1:Re-enable sensor m/s @@ -1206,7 +1182,7 @@ I2C-MS5525 (0x77) I2C-SDP3X I2C-DLVR-5in - DroneCAN + UAVCAN I2C-DLVR-10in I2C-DLVR-20in I2C-DLVR-30in @@ -1233,13 +1209,8 @@ - - - Normal - Swapped - Auto Detect - - + + Disable @@ -1255,9 +1226,6 @@ Bus2(auxillary) - - True - @@ -1324,22 +1292,22 @@ - True - True - 1 Pa pascal + 1 + True + True - True - 1 degC degrees Celsius + 1 + True - 0.1 m meters + 0.1 @@ -1356,30 +1324,27 @@ - - Freshwater - Saltwater - + 1.0:Freshwater,1.024:Saltwater - True - True - 1 Pa pascal + 1 + True + True - True - True - 1 Pa pascal + 1 + True + True - 0 100 - 1 % percent + 0 100 + 1 0:BMP085,1:BMP280,2:MS5611,3:MS5607,4:MS5637,5:FBM320,6:DPS280,7:LPS25H,8:Keller,9:MS5837,10:BMP388,11:SPL06,12:MSP @@ -1475,9 +1440,9 @@ Solo Bebop SMBus-Generic - DroneCAN-BatteryInfo + UAVCAN-BatteryInfo ESC - Sum Of Selected Monitors + SumOfFollowing FuelFlow FuelLevelPWM SMBUS-SUI3 @@ -1487,96 +1452,13 @@ Generator-Elec Generator-Fuel Rotoye - MPPT - INA2XX - LTC2946 - Torqeedo True - - 50 - mAh - milliampere hour - - - 1 - W - watt - - - - - 0 120 - 1 - s - seconds - - - - Raw Voltage - Sag Compensated Voltage - - - - 0.1 - V - volt - - - 50 - mAh - milliampere hour - - - 0.1 - V - volt - - - 50 - mAh - milliampere hour - - - - None - RTL - Land - Terminate - QLand - Loiter to QLand - - - - - None - RTL - Land - Terminate - QLand - Parachute - Loiter to QLand - - - - 0.1 - V - volt - - - 50 - mAh - milliampere hour - - - 0:Ignore DroneCAN SoC, 1:MPPT reports input voltage and current, 2:MPPT Powered off when disarmed, 3:MPPT Powered on when armed, 4:MPPT Powered off at boot, 5:MPPT Powered on at boot, 6:Send resistance compensated voltage to GCS - Disabled Pixhawk/Pixracer/Navio2/Pixhawk2_PM1 - Navigator Pixhawk2_PM2/CubeOrange_PM2 CubeOrange Durandal @@ -1588,7 +1470,7 @@ Disabled Pixhawk/Pixracer/Navio2/Pixhawk2_PM1 - CubeOrange_PM2/Navigator + CubeOrange_PM2 Pixhawk2_PM2 CubeOrange Durandal @@ -1606,23 +1488,84 @@ V volt - + + mAh + milliampere hour + 50 + + + W + watt + 1 + + + + + s + seconds + 1 + 0 120 + + + + Raw Voltage + Sag Compensated Voltage + + + V volt + 0.1 - + + mAh + milliampere hour + 50 + + + V + volt + 0.1 + + + mAh + milliampere hour + 50 + + + + None + RTL + Land + Terminate + QLand + + + + + None + RTL + Land + Terminate + QLand + Parachute + + + + V + volt + 0.1 + + + mAh + milliampere hour + 50 + + 0 3 - True - - 0 127 - True - - - 0:monitor 1, 1:monitor 2, 2:monitor 3, 3:monitor 4, 4:monitor 5, 5:monitor 6, 6:monitor 7, 7:monitor 8, 8:monitor 9 - - - .1 10 + + 0:Ignore UAVCAN SoC @@ -1634,9 +1577,9 @@ Solo Bebop SMBus-Generic - DroneCAN-BatteryInfo + UAVCAN-BatteryInfo ESC - Sum Of Selected Monitors + SumOfFollowing FuelFlow FuelLevelPWM SMBUS-SUI3 @@ -1646,96 +1589,13 @@ Generator-Elec Generator-Fuel Rotoye - MPPT - INA2XX - LTC2946 - Torqeedo True - - 50 - mAh - milliampere hour - - - 1 - W - watt - - - - - 0 120 - 1 - s - seconds - - - - Raw Voltage - Sag Compensated Voltage - - - - 0.1 - V - volt - - - 50 - mAh - milliampere hour - - - 0.1 - V - volt - - - 50 - mAh - milliampere hour - - - - None - RTL - Land - Terminate - QLand - Loiter to QLand - - - - - None - RTL - Land - Terminate - QLand - Parachute - Loiter to QLand - - - - 0.1 - V - volt - - - 50 - mAh - milliampere hour - - - 0:Ignore DroneCAN SoC, 1:MPPT reports input voltage and current, 2:MPPT Powered off when disarmed, 3:MPPT Powered on when armed, 4:MPPT Powered off at boot, 5:MPPT Powered on at boot, 6:Send resistance compensated voltage to GCS - Disabled Pixhawk/Pixracer/Navio2/Pixhawk2_PM1 - Navigator Pixhawk2_PM2/CubeOrange_PM2 CubeOrange Durandal @@ -1747,7 +1607,7 @@ Disabled Pixhawk/Pixracer/Navio2/Pixhawk2_PM1 - CubeOrange_PM2/Navigator + CubeOrange_PM2 Pixhawk2_PM2 CubeOrange Durandal @@ -1765,23 +1625,84 @@ V volt - + + mAh + milliampere hour + 50 + + + W + watt + 1 + + + + + s + seconds + 1 + 0 120 + + + + Raw Voltage + Sag Compensated Voltage + + + V volt + 0.1 - + + mAh + milliampere hour + 50 + + + V + volt + 0.1 + + + mAh + milliampere hour + 50 + + + + None + RTL + Land + Terminate + QLand + + + + + None + RTL + Land + Terminate + QLand + Parachute + + + + V + volt + 0.1 + + + mAh + milliampere hour + 50 + + 0 3 - True - - 0 127 - True - - - 0:monitor 1, 1:monitor 2, 2:monitor 3, 3:monitor 4, 4:monitor 5, 5:monitor 6, 6:monitor 7, 7:monitor 8, 8:monitor 9 - - - .1 10 + + 0:Ignore UAVCAN SoC @@ -1793,9 +1714,9 @@ Solo Bebop SMBus-Generic - DroneCAN-BatteryInfo + UAVCAN-BatteryInfo ESC - Sum Of Selected Monitors + SumOfFollowing FuelFlow FuelLevelPWM SMBUS-SUI3 @@ -1805,96 +1726,13 @@ Generator-Elec Generator-Fuel Rotoye - MPPT - INA2XX - LTC2946 - Torqeedo True - - 50 - mAh - milliampere hour - - - 1 - W - watt - - - - - 0 120 - 1 - s - seconds - - - - Raw Voltage - Sag Compensated Voltage - - - - 0.1 - V - volt - - - 50 - mAh - milliampere hour - - - 0.1 - V - volt - - - 50 - mAh - milliampere hour - - - - None - RTL - Land - Terminate - QLand - Loiter to QLand - - - - - None - RTL - Land - Terminate - QLand - Parachute - Loiter to QLand - - - - 0.1 - V - volt - - - 50 - mAh - milliampere hour - - - 0:Ignore DroneCAN SoC, 1:MPPT reports input voltage and current, 2:MPPT Powered off when disarmed, 3:MPPT Powered on when armed, 4:MPPT Powered off at boot, 5:MPPT Powered on at boot, 6:Send resistance compensated voltage to GCS - Disabled Pixhawk/Pixracer/Navio2/Pixhawk2_PM1 - Navigator Pixhawk2_PM2/CubeOrange_PM2 CubeOrange Durandal @@ -1906,7 +1744,7 @@ Disabled Pixhawk/Pixracer/Navio2/Pixhawk2_PM1 - CubeOrange_PM2/Navigator + CubeOrange_PM2 Pixhawk2_PM2 CubeOrange Durandal @@ -1924,23 +1762,84 @@ V volt - + + mAh + milliampere hour + 50 + + + W + watt + 1 + + + + + s + seconds + 1 + 0 120 + + + + Raw Voltage + Sag Compensated Voltage + + + V volt + 0.1 - + + mAh + milliampere hour + 50 + + + V + volt + 0.1 + + + mAh + milliampere hour + 50 + + + + None + RTL + Land + Terminate + QLand + + + + + None + RTL + Land + Terminate + QLand + Parachute + + + + V + volt + 0.1 + + + mAh + milliampere hour + 50 + + 0 3 - True - - 0 127 - True - - - 0:monitor 1, 1:monitor 2, 2:monitor 3, 3:monitor 4, 4:monitor 5, 5:monitor 6, 6:monitor 7, 7:monitor 8, 8:monitor 9 - - - .1 10 + + 0:Ignore UAVCAN SoC @@ -1952,9 +1851,9 @@ Solo Bebop SMBus-Generic - DroneCAN-BatteryInfo + UAVCAN-BatteryInfo ESC - Sum Of Selected Monitors + SumOfFollowing FuelFlow FuelLevelPWM SMBUS-SUI3 @@ -1964,96 +1863,13 @@ Generator-Elec Generator-Fuel Rotoye - MPPT - INA2XX - LTC2946 - Torqeedo True - - 50 - mAh - milliampere hour - - - 1 - W - watt - - - - - 0 120 - 1 - s - seconds - - - - Raw Voltage - Sag Compensated Voltage - - - - 0.1 - V - volt - - - 50 - mAh - milliampere hour - - - 0.1 - V - volt - - - 50 - mAh - milliampere hour - - - - None - RTL - Land - Terminate - QLand - Loiter to QLand - - - - - None - RTL - Land - Terminate - QLand - Parachute - Loiter to QLand - - - - 0.1 - V - volt - - - 50 - mAh - milliampere hour - - - 0:Ignore DroneCAN SoC, 1:MPPT reports input voltage and current, 2:MPPT Powered off when disarmed, 3:MPPT Powered on when armed, 4:MPPT Powered off at boot, 5:MPPT Powered on at boot, 6:Send resistance compensated voltage to GCS - Disabled Pixhawk/Pixracer/Navio2/Pixhawk2_PM1 - Navigator Pixhawk2_PM2/CubeOrange_PM2 CubeOrange Durandal @@ -2065,7 +1881,7 @@ Disabled Pixhawk/Pixracer/Navio2/Pixhawk2_PM1 - CubeOrange_PM2/Navigator + CubeOrange_PM2 Pixhawk2_PM2 CubeOrange Durandal @@ -2083,23 +1899,84 @@ V volt - + + mAh + milliampere hour + 50 + + + W + watt + 1 + + + + + s + seconds + 1 + 0 120 + + + + Raw Voltage + Sag Compensated Voltage + + + V volt + 0.1 - + + mAh + milliampere hour + 50 + + + V + volt + 0.1 + + + mAh + milliampere hour + 50 + + + + None + RTL + Land + Terminate + QLand + + + + + None + RTL + Land + Terminate + QLand + Parachute + + + + V + volt + 0.1 + + + mAh + milliampere hour + 50 + + 0 3 - True - - 0 127 - True - - - 0:monitor 1, 1:monitor 2, 2:monitor 3, 3:monitor 4, 4:monitor 5, 5:monitor 6, 6:monitor 7, 7:monitor 8, 8:monitor 9 - - - .1 10 + + 0:Ignore UAVCAN SoC @@ -2111,9 +1988,9 @@ Solo Bebop SMBus-Generic - DroneCAN-BatteryInfo + UAVCAN-BatteryInfo ESC - Sum Of Selected Monitors + SumOfFollowing FuelFlow FuelLevelPWM SMBUS-SUI3 @@ -2123,96 +2000,13 @@ Generator-Elec Generator-Fuel Rotoye - MPPT - INA2XX - LTC2946 - Torqeedo True - - 50 - mAh - milliampere hour - - - 1 - W - watt - - - - - 0 120 - 1 - s - seconds - - - - Raw Voltage - Sag Compensated Voltage - - - - 0.1 - V - volt - - - 50 - mAh - milliampere hour - - - 0.1 - V - volt - - - 50 - mAh - milliampere hour - - - - None - RTL - Land - Terminate - QLand - Loiter to QLand - - - - - None - RTL - Land - Terminate - QLand - Parachute - Loiter to QLand - - - - 0.1 - V - volt - - - 50 - mAh - milliampere hour - - - 0:Ignore DroneCAN SoC, 1:MPPT reports input voltage and current, 2:MPPT Powered off when disarmed, 3:MPPT Powered on when armed, 4:MPPT Powered off at boot, 5:MPPT Powered on at boot, 6:Send resistance compensated voltage to GCS - Disabled Pixhawk/Pixracer/Navio2/Pixhawk2_PM1 - Navigator Pixhawk2_PM2/CubeOrange_PM2 CubeOrange Durandal @@ -2224,7 +2018,7 @@ Disabled Pixhawk/Pixracer/Navio2/Pixhawk2_PM1 - CubeOrange_PM2/Navigator + CubeOrange_PM2 Pixhawk2_PM2 CubeOrange Durandal @@ -2242,23 +2036,84 @@ V volt - + + mAh + milliampere hour + 50 + + + W + watt + 1 + + + + + s + seconds + 1 + 0 120 + + + + Raw Voltage + Sag Compensated Voltage + + + V volt + 0.1 - + + mAh + milliampere hour + 50 + + + V + volt + 0.1 + + + mAh + milliampere hour + 50 + + + + None + RTL + Land + Terminate + QLand + + + + + None + RTL + Land + Terminate + QLand + Parachute + + + + V + volt + 0.1 + + + mAh + milliampere hour + 50 + + 0 3 - True - - 0 127 - True - - - 0:monitor 1, 1:monitor 2, 2:monitor 3, 3:monitor 4, 4:monitor 5, 5:monitor 6, 6:monitor 7, 7:monitor 8, 8:monitor 9 - - - .1 10 + + 0:Ignore UAVCAN SoC @@ -2270,9 +2125,9 @@ Solo Bebop SMBus-Generic - DroneCAN-BatteryInfo + UAVCAN-BatteryInfo ESC - Sum Of Selected Monitors + SumOfFollowing FuelFlow FuelLevelPWM SMBUS-SUI3 @@ -2282,96 +2137,13 @@ Generator-Elec Generator-Fuel Rotoye - MPPT - INA2XX - LTC2946 - Torqeedo True - - 50 - mAh - milliampere hour - - - 1 - W - watt - - - - - 0 120 - 1 - s - seconds - - - - Raw Voltage - Sag Compensated Voltage - - - - 0.1 - V - volt - - - 50 - mAh - milliampere hour - - - 0.1 - V - volt - - - 50 - mAh - milliampere hour - - - - None - RTL - Land - Terminate - QLand - Loiter to QLand - - - - - None - RTL - Land - Terminate - QLand - Parachute - Loiter to QLand - - - - 0.1 - V - volt - - - 50 - mAh - milliampere hour - - - 0:Ignore DroneCAN SoC, 1:MPPT reports input voltage and current, 2:MPPT Powered off when disarmed, 3:MPPT Powered on when armed, 4:MPPT Powered off at boot, 5:MPPT Powered on at boot, 6:Send resistance compensated voltage to GCS - Disabled Pixhawk/Pixracer/Navio2/Pixhawk2_PM1 - Navigator Pixhawk2_PM2/CubeOrange_PM2 CubeOrange Durandal @@ -2383,7 +2155,7 @@ Disabled Pixhawk/Pixracer/Navio2/Pixhawk2_PM1 - CubeOrange_PM2/Navigator + CubeOrange_PM2 Pixhawk2_PM2 CubeOrange Durandal @@ -2401,23 +2173,84 @@ V volt - + + mAh + milliampere hour + 50 + + + W + watt + 1 + + + + + s + seconds + 1 + 0 120 + + + + Raw Voltage + Sag Compensated Voltage + + + V volt + 0.1 - + + mAh + milliampere hour + 50 + + + V + volt + 0.1 + + + mAh + milliampere hour + 50 + + + + None + RTL + Land + Terminate + QLand + + + + + None + RTL + Land + Terminate + QLand + Parachute + + + + V + volt + 0.1 + + + mAh + milliampere hour + 50 + + 0 3 - True - - 0 127 - True - - - 0:monitor 1, 1:monitor 2, 2:monitor 3, 3:monitor 4, 4:monitor 5, 5:monitor 6, 6:monitor 7, 7:monitor 8, 8:monitor 9 - - - .1 10 + + 0:Ignore UAVCAN SoC @@ -2429,9 +2262,9 @@ Solo Bebop SMBus-Generic - DroneCAN-BatteryInfo + UAVCAN-BatteryInfo ESC - Sum Of Selected Monitors + SumOfFollowing FuelFlow FuelLevelPWM SMBUS-SUI3 @@ -2441,96 +2274,13 @@ Generator-Elec Generator-Fuel Rotoye - MPPT - INA2XX - LTC2946 - Torqeedo True - - 50 - mAh - milliampere hour - - - 1 - W - watt - - - - - 0 120 - 1 - s - seconds - - - - Raw Voltage - Sag Compensated Voltage - - - - 0.1 - V - volt - - - 50 - mAh - milliampere hour - - - 0.1 - V - volt - - - 50 - mAh - milliampere hour - - - - None - RTL - Land - Terminate - QLand - Loiter to QLand - - - - - None - RTL - Land - Terminate - QLand - Parachute - Loiter to QLand - - - - 0.1 - V - volt - - - 50 - mAh - milliampere hour - - - 0:Ignore DroneCAN SoC, 1:MPPT reports input voltage and current, 2:MPPT Powered off when disarmed, 3:MPPT Powered on when armed, 4:MPPT Powered off at boot, 5:MPPT Powered on at boot, 6:Send resistance compensated voltage to GCS - Disabled Pixhawk/Pixracer/Navio2/Pixhawk2_PM1 - Navigator Pixhawk2_PM2/CubeOrange_PM2 CubeOrange Durandal @@ -2542,7 +2292,7 @@ Disabled Pixhawk/Pixracer/Navio2/Pixhawk2_PM1 - CubeOrange_PM2/Navigator + CubeOrange_PM2 Pixhawk2_PM2 CubeOrange Durandal @@ -2560,23 +2310,84 @@ V volt - + + mAh + milliampere hour + 50 + + + W + watt + 1 + + + + + s + seconds + 1 + 0 120 + + + + Raw Voltage + Sag Compensated Voltage + + + V volt + 0.1 - + + mAh + milliampere hour + 50 + + + V + volt + 0.1 + + + mAh + milliampere hour + 50 + + + + None + RTL + Land + Terminate + QLand + + + + + None + RTL + Land + Terminate + QLand + Parachute + + + + V + volt + 0.1 + + + mAh + milliampere hour + 50 + + 0 3 - True - - 0 127 - True - - - 0:monitor 1, 1:monitor 2, 2:monitor 3, 3:monitor 4, 4:monitor 5, 5:monitor 6, 6:monitor 7, 7:monitor 8, 8:monitor 9 - - - .1 10 + + 0:Ignore UAVCAN SoC @@ -2588,9 +2399,9 @@ Solo Bebop SMBus-Generic - DroneCAN-BatteryInfo + UAVCAN-BatteryInfo ESC - Sum Of Selected Monitors + SumOfFollowing FuelFlow FuelLevelPWM SMBUS-SUI3 @@ -2600,96 +2411,13 @@ Generator-Elec Generator-Fuel Rotoye - MPPT - INA2XX - LTC2946 - Torqeedo True - - 50 - mAh - milliampere hour - - - 1 - W - watt - - - - - 0 120 - 1 - s - seconds - - - - Raw Voltage - Sag Compensated Voltage - - - - 0.1 - V - volt - - - 50 - mAh - milliampere hour - - - 0.1 - V - volt - - - 50 - mAh - milliampere hour - - - - None - RTL - Land - Terminate - QLand - Loiter to QLand - - - - - None - RTL - Land - Terminate - QLand - Parachute - Loiter to QLand - - - - 0.1 - V - volt - - - 50 - mAh - milliampere hour - - - 0:Ignore DroneCAN SoC, 1:MPPT reports input voltage and current, 2:MPPT Powered off when disarmed, 3:MPPT Powered on when armed, 4:MPPT Powered off at boot, 5:MPPT Powered on at boot, 6:Send resistance compensated voltage to GCS - Disabled Pixhawk/Pixracer/Navio2/Pixhawk2_PM1 - Navigator Pixhawk2_PM2/CubeOrange_PM2 CubeOrange Durandal @@ -2701,7 +2429,7 @@ Disabled Pixhawk/Pixracer/Navio2/Pixhawk2_PM1 - CubeOrange_PM2/Navigator + CubeOrange_PM2 Pixhawk2_PM2 CubeOrange Durandal @@ -2719,23 +2447,84 @@ V volt - + + mAh + milliampere hour + 50 + + + W + watt + 1 + + + + + s + seconds + 1 + 0 120 + + + + Raw Voltage + Sag Compensated Voltage + + + V volt + 0.1 - + + mAh + milliampere hour + 50 + + + V + volt + 0.1 + + + mAh + milliampere hour + 50 + + + + None + RTL + Land + Terminate + QLand + + + + + None + RTL + Land + Terminate + QLand + Parachute + + + + V + volt + 0.1 + + + mAh + milliampere hour + 50 + + 0 3 - True - - 0 127 - True - - - 0:monitor 1, 1:monitor 2, 2:monitor 3, 3:monitor 4, 4:monitor 5, 5:monitor 6, 6:monitor 7, 7:monitor 8, 8:monitor 9 - - - .1 10 + + 0:Ignore UAVCAN SoC @@ -2747,9 +2536,9 @@ Solo Bebop SMBus-Generic - DroneCAN-BatteryInfo + UAVCAN-BatteryInfo ESC - Sum Of Selected Monitors + SumOfFollowing FuelFlow FuelLevelPWM SMBUS-SUI3 @@ -2759,96 +2548,13 @@ Generator-Elec Generator-Fuel Rotoye - MPPT - INA2XX - LTC2946 - Torqeedo True - - 50 - mAh - milliampere hour - - - 1 - W - watt - - - - - 0 120 - 1 - s - seconds - - - - Raw Voltage - Sag Compensated Voltage - - - - 0.1 - V - volt - - - 50 - mAh - milliampere hour - - - 0.1 - V - volt - - - 50 - mAh - milliampere hour - - - - None - RTL - Land - Terminate - QLand - Loiter to QLand - - - - - None - RTL - Land - Terminate - QLand - Parachute - Loiter to QLand - - - - 0.1 - V - volt - - - 50 - mAh - milliampere hour - - - 0:Ignore DroneCAN SoC, 1:MPPT reports input voltage and current, 2:MPPT Powered off when disarmed, 3:MPPT Powered on when armed, 4:MPPT Powered off at boot, 5:MPPT Powered on at boot, 6:Send resistance compensated voltage to GCS - Disabled Pixhawk/Pixracer/Navio2/Pixhawk2_PM1 - Navigator Pixhawk2_PM2/CubeOrange_PM2 CubeOrange Durandal @@ -2860,7 +2566,7 @@ Disabled Pixhawk/Pixracer/Navio2/Pixhawk2_PM1 - CubeOrange_PM2/Navigator + CubeOrange_PM2 Pixhawk2_PM2 CubeOrange Durandal @@ -2878,27 +2584,102 @@ V volt - + + mAh + milliampere hour + 50 + + + W + watt + 1 + + + + + s + seconds + 1 + 0 120 + + + + Raw Voltage + Sag Compensated Voltage + + + V volt + 0.1 - + + mAh + milliampere hour + 50 + + + V + volt + 0.1 + + + mAh + milliampere hour + 50 + + + + None + RTL + Land + Terminate + QLand + + + + + None + RTL + Land + Terminate + QLand + Parachute + + + + V + volt + 0.1 + + + mAh + milliampere hour + 50 + + 0 3 - True - - 0 127 - True - - - 0:monitor 1, 1:monitor 2, 2:monitor 3, 3:monitor 4, 4:monitor 5, 5:monitor 6, 6:monitor 7, 7:monitor 8, 8:monitor 9 - - - .1 10 + + 0:Ignore UAVCAN SoC - + + + No PWMs + One PWMs + Two PWMs + Three PWMs + Four PWMs + Five PWMs + Six PWMs + Seven PWMs + Eight PWMs + + True + + Disabled Enabled @@ -2906,7 +2687,7 @@ True - + Disabled Enabled @@ -2965,7 +2746,7 @@ 0:Output1,1:Output2,2:Output3,3:Output4,4:Output5,5:Output6,6:Output7,7:Output8,8:Output9,9:Output10,10:Output11,11:Output12,12:Output13,13:Output14 True - + -1 80 degC degrees Celsius @@ -3009,16 +2790,16 @@ 0:ActiveForSafetyEnable,1:ActiveForSafetyDisable,2:ActiveWhenArmed,3:Force safety on when the aircraft disarms + V + volt 4.0 5.5 0.1 - V - volt - 3.3 12.0 - 0.1 V volt + 3.3 12.0 + 0.1 0 32 @@ -3031,22 +2812,22 @@ - 0:Enable hardware watchdog, 1:Disable MAVftp, 2:Enable set of internal parameters, 3:Enable Debug Pins, 4:Unlock flash on reboot, 5:Write protect firmware flash on reboot, 6:Write protect bootloader flash on reboot + 0:Enable hardware watchdog, 1:Disable MAVftp, 2:Enable set of internal parameters 0 10000 ms milliseconds - + 1 500 1 - + 0 1 0.1 - + 0 100 1 @@ -3055,11 +2836,6 @@ 1 True - - 0 20 - degC - degrees Celsius - @@ -3229,9 +3005,7 @@ Do Nothing ModeRTL Camera Trigger - Fence ModeAuto - Parachute Release Auto Mission Reset Retract Mount Relay On/Off @@ -3242,19 +3016,18 @@ Relay3 On/Off Relay4 On/Off ADSB Avoidance En - ArmDisarm (4.1 and lower) + ArmDisarm InvertedFlight RC Override Enable ModeManual - ModeACRO ModeGuided ModeLoiter Clear Waypoints Compass Learn Reverse Throttle GPS Disable - Relay5 On/Off - Relay6 On/Off + Relay5 + Relay6 ModeCircle ModeTakeoff RunCam Control @@ -3270,24 +3043,10 @@ EKF Pos Source Airspeed Ratio Calibration FBWA - VTX Power - FBWA taildragger takeoff mode - trigger re-reading of mode switch - ModeTraining KillIMU1 KillIMU2 Camera Mode Toggle GPS Disable Yaw - Disable Airspeed Use - EnableFixedWingAutotune - ModeQRTL - CRUISE - ArmDisarm (4.2 and higher) - ArmDisarm with Quadplane AirMode (4.2 and higher) - set roll pitch and yaw trim to current servo and RC - Force FS Action to FBWA - Optflow Calibration - Weathervane Enable Flap Forward Throttle Scripting1 @@ -3305,9 +3064,7 @@ Do Nothing ModeRTL Camera Trigger - Fence ModeAuto - Parachute Release Auto Mission Reset Retract Mount Relay On/Off @@ -3318,19 +3075,18 @@ Relay3 On/Off Relay4 On/Off ADSB Avoidance En - ArmDisarm (4.1 and lower) + ArmDisarm InvertedFlight RC Override Enable ModeManual - ModeACRO ModeGuided ModeLoiter Clear Waypoints Compass Learn Reverse Throttle GPS Disable - Relay5 On/Off - Relay6 On/Off + Relay5 + Relay6 ModeCircle ModeTakeoff RunCam Control @@ -3346,24 +3102,10 @@ EKF Pos Source Airspeed Ratio Calibration FBWA - VTX Power - FBWA taildragger takeoff mode - trigger re-reading of mode switch - ModeTraining KillIMU1 KillIMU2 Camera Mode Toggle GPS Disable Yaw - Disable Airspeed Use - EnableFixedWingAutotune - ModeQRTL - CRUISE - ArmDisarm (4.2 and higher) - ArmDisarm with Quadplane AirMode (4.2 and higher) - set roll pitch and yaw trim to current servo and RC - Force FS Action to FBWA - Optflow Calibration - Weathervane Enable Flap Forward Throttle Scripting1 @@ -3381,9 +3123,7 @@ Do Nothing ModeRTL Camera Trigger - Fence ModeAuto - Parachute Release Auto Mission Reset Retract Mount Relay On/Off @@ -3394,19 +3134,18 @@ Relay3 On/Off Relay4 On/Off ADSB Avoidance En - ArmDisarm (4.1 and lower) + ArmDisarm InvertedFlight RC Override Enable ModeManual - ModeACRO ModeGuided ModeLoiter Clear Waypoints Compass Learn Reverse Throttle GPS Disable - Relay5 On/Off - Relay6 On/Off + Relay5 + Relay6 ModeCircle ModeTakeoff RunCam Control @@ -3422,24 +3161,10 @@ EKF Pos Source Airspeed Ratio Calibration FBWA - VTX Power - FBWA taildragger takeoff mode - trigger re-reading of mode switch - ModeTraining KillIMU1 KillIMU2 Camera Mode Toggle GPS Disable Yaw - Disable Airspeed Use - EnableFixedWingAutotune - ModeQRTL - CRUISE - ArmDisarm (4.2 and higher) - ArmDisarm with Quadplane AirMode (4.2 and higher) - set roll pitch and yaw trim to current servo and RC - Force FS Action to FBWA - Optflow Calibration - Weathervane Enable Flap Forward Throttle Scripting1 @@ -3457,9 +3182,7 @@ Do Nothing ModeRTL Camera Trigger - Fence ModeAuto - Parachute Release Auto Mission Reset Retract Mount Relay On/Off @@ -3470,19 +3193,18 @@ Relay3 On/Off Relay4 On/Off ADSB Avoidance En - ArmDisarm (4.1 and lower) + ArmDisarm InvertedFlight RC Override Enable ModeManual - ModeACRO ModeGuided ModeLoiter Clear Waypoints Compass Learn Reverse Throttle GPS Disable - Relay5 On/Off - Relay6 On/Off + Relay5 + Relay6 ModeCircle ModeTakeoff RunCam Control @@ -3498,24 +3220,10 @@ EKF Pos Source Airspeed Ratio Calibration FBWA - VTX Power - FBWA taildragger takeoff mode - trigger re-reading of mode switch - ModeTraining KillIMU1 KillIMU2 Camera Mode Toggle GPS Disable Yaw - Disable Airspeed Use - EnableFixedWingAutotune - ModeQRTL - CRUISE - ArmDisarm (4.2 and higher) - ArmDisarm with Quadplane AirMode (4.2 and higher) - set roll pitch and yaw trim to current servo and RC - Force FS Action to FBWA - Optflow Calibration - Weathervane Enable Flap Forward Throttle Scripting1 @@ -3538,24 +3246,24 @@ - 0 50 ds deciseconds + 0 50 - 1000 2000 PWM PWM in microseconds + 1000 2000 - 1000 2000 PWM PWM in microseconds + 1000 2000 - 0 1000 m meters + 0 1000 @@ -3564,14 +3272,14 @@ - 0 10000 ms milliseconds + 0 10000 - 0 180 deg degrees + 0 180 @@ -3643,15 +3351,12 @@ Disabled - DroneCAN + UAVCAN ToshibaCAN PiccoloCAN CANTester - EFI_NWPMU - USD1 KDECAN - Scripting - Benewake + PacketDigitalCAN True @@ -3665,17 +3370,17 @@ 0: ESC 1, 1: ESC 2, 2: ESC 3, 3: ESC 4, 4: ESC 5, 5: ESC 6, 6: ESC 7, 7: ESC 8, 8: ESC 9, 9: ESC 10, 10: ESC 11, 11: ESC 12, 12: ESC 13, 13: ESC 14, 14: ESC 15, 15: ESC 16 - 1 500 Hz hertz + 1 500 0: Servo 1, 1: Servo 2, 2: Servo 3, 3: Servo 4, 4: Servo 5, 5: Servo 6, 6: Servo 7, 7: Servo 8, 8: Servo 9, 9: Servo 10, 10: Servo 11, 11: Servo 12, 12: Servo 13, 13: Servo 14, 14: Servo 15, 15: Servo 16 - 1 500 Hz hertz + 1 500 @@ -3700,10 +3405,10 @@ 1 250 - + 0: Servo 1, 1: Servo 2, 2: Servo 3, 3: Servo 4, 4: Servo 5, 5: Servo 6, 6: Servo 7, 7: Servo 8, 8: Servo 9, 9: Servo 10, 10: Servo 11, 11: Servo 12, 12: Servo 13, 13: Servo 14, 14: Servo 15 - + 0: ESC 1, 1: ESC 2, 2: ESC 3, 3: ESC 4, 4: ESC 5, 5: ESC 6, 6: ESC 7, 7: ESC 8, 8: ESC 9, 9: ESC 10, 10: ESC 11, 11: ESC 12, 12: ESC 13, 13: ESC 14, 14: ESC 15, 15: ESC 16 @@ -3711,34 +3416,17 @@ Hz hertz - - 0:ClearDNADatabase,1:IgnoreDNANodeConflicts - - - 1 200 - Hz - hertz - - - 0 18 - - - 1024 16384 - Disabled - DroneCAN + UAVCAN ToshibaCAN PiccoloCAN CANTester - EFI_NWPMU - USD1 KDECAN - Scripting - Benewake + PacketDigitalCAN True @@ -3752,17 +3440,17 @@ 0: ESC 1, 1: ESC 2, 2: ESC 3, 3: ESC 4, 4: ESC 5, 5: ESC 6, 6: ESC 7, 7: ESC 8, 8: ESC 9, 9: ESC 10, 10: ESC 11, 11: ESC 12, 12: ESC 13, 13: ESC 14, 14: ESC 15, 15: ESC 16 - 1 500 Hz hertz + 1 500 0: Servo 1, 1: Servo 2, 2: Servo 3, 3: Servo 4, 4: Servo 5, 5: Servo 6, 6: Servo 7, 7: Servo 8, 8: Servo 9, 9: Servo 10, 10: Servo 11, 11: Servo 12, 12: Servo 13, 13: Servo 14, 14: Servo 15, 15: Servo 16 - 1 500 Hz hertz + 1 500 @@ -3787,10 +3475,10 @@ 1 250 - + 0: Servo 1, 1: Servo 2, 2: Servo 3, 3: Servo 4, 4: Servo 5, 5: Servo 6, 6: Servo 7, 7: Servo 8, 8: Servo 9, 9: Servo 10, 10: Servo 11, 11: Servo 12, 12: Servo 13, 13: Servo 14, 14: Servo 15 - + 0: ESC 1, 1: ESC 2, 2: ESC 3, 3: ESC 4, 4: ESC 5, 5: ESC 6, 6: ESC 7, 7: ESC 8, 8: ESC 9, 9: ESC 10, 10: ESC 11, 11: ESC 12, 12: ESC 13, 13: ESC 14, 14: ESC 15, 15: ESC 16 @@ -3798,34 +3486,17 @@ Hz hertz - - 0:ClearDNADatabase,1:IgnoreDNANodeConflicts - - - 1 200 - Hz - hertz - - - 0 18 - - - 1024 16384 - Disabled - DroneCAN + UAVCAN ToshibaCAN PiccoloCAN CANTester - EFI_NWPMU - USD1 KDECAN - Scripting - Benewake + PacketDigitalCAN True @@ -3839,17 +3510,17 @@ 0: ESC 1, 1: ESC 2, 2: ESC 3, 3: ESC 4, 4: ESC 5, 5: ESC 6, 6: ESC 7, 7: ESC 8, 8: ESC 9, 9: ESC 10, 10: ESC 11, 11: ESC 12, 12: ESC 13, 13: ESC 14, 14: ESC 15, 15: ESC 16 - 1 500 Hz hertz + 1 500 0: Servo 1, 1: Servo 2, 2: Servo 3, 3: Servo 4, 4: Servo 5, 5: Servo 6, 6: Servo 7, 7: Servo 8, 8: Servo 9, 9: Servo 10, 10: Servo 11, 11: Servo 12, 12: Servo 13, 13: Servo 14, 14: Servo 15, 15: Servo 16 - 1 500 Hz hertz + 1 500 @@ -3874,10 +3545,10 @@ 1 250 - + 0: Servo 1, 1: Servo 2, 2: Servo 3, 3: Servo 4, 4: Servo 5, 5: Servo 6, 6: Servo 7, 7: Servo 8, 8: Servo 9, 9: Servo 10, 10: Servo 11, 11: Servo 12, 12: Servo 13, 13: Servo 14, 14: Servo 15 - + 0: ESC 1, 1: ESC 2, 2: ESC 3, 3: ESC 4, 4: ESC 5, 5: ESC 6, 6: ESC 7, 7: ESC 8, 8: ESC 9, 9: ESC 10, 10: ESC 11, 11: ESC 12, 12: ESC 13, 13: ESC 14, 14: ESC 15, 15: ESC 16 @@ -3885,20 +3556,6 @@ Hz hertz - - 0:ClearDNADatabase,1:IgnoreDNANodeConflicts - - - 1 200 - Hz - hertz - - - 0 18 - - - 1024 16384 - @@ -3906,7 +3563,6 @@ Disabled First driver Second driver - Third driver True @@ -3920,7 +3576,6 @@ Disabled First driver Second driver - Third driver True @@ -3934,7 +3589,6 @@ Disabled First driver Second driver - Third driver True @@ -3988,64 +3642,61 @@ 1000 2000 - 1 PWM PWM in microseconds + 1 1000 2000 - 1 PWM PWM in microseconds + 1 0 32000 - 1 m meters + 1 0 5000 - 1 ms milliseconds + 1 0 15 - 1 m/s meters per second - - - 0:hold open forever after release + 1 - 1 -400 400 - 1 mGauss milligauss + 1 + 1 - 1 -400 400 - 1 mGauss milligauss + 1 + 1 -400 400 - 1 mGauss milligauss + 1 -3.142 3.142 - 0.01 rad radians + 0.01 @@ -4068,34 +3719,34 @@ - 1 Disabled Use Throttle Use Current + 1 - 1 -1000 1000 - 1 mGauss/A milligauss per ampere + 1 + 1 - 1 -1000 1000 - 1 mGauss/A milligauss per ampere + 1 + 1 -1000 1000 - 1 mGauss/A milligauss per ampere + 1 - + None Yaw45 @@ -4106,44 +3757,42 @@ Yaw270 Yaw315 Roll180 - Yaw45Roll180 - Yaw90Roll180 - Yaw135Roll180 + Roll180Yaw45 + Roll180Yaw90 + Roll180Yaw135 Pitch180 - Yaw225Roll180 - Yaw270Roll180 - Yaw315Roll180 + Roll180Yaw225 + Roll180Yaw270 + Roll180Yaw315 Roll90 - Yaw45Roll90 - Yaw90Roll90 - Yaw135Roll90 + Roll90Yaw45 + Roll90Yaw90 + Roll90Yaw135 Roll270 - Yaw45Roll270 - Yaw90Roll270 - Yaw135Roll270 + Roll270Yaw45 + Roll270Yaw90 + Roll270Yaw135 Pitch90 Pitch270 - Yaw90Pitch180 - Yaw270Pitch180 - Pitch90Roll90 - Pitch90Roll180 - Pitch90Roll270 - Pitch180Roll90 - Pitch180Roll270 - Pitch270Roll90 - Pitch270Roll180 - Pitch270Roll270 - Yaw90Pitch180Roll90 - Yaw270Roll90 + Pitch180Yaw90 + Pitch180Yaw270 + Roll90Pitch90 + Roll180Pitch90 + Roll270Pitch90 + Roll90Pitch180 + Roll270Pitch180 + Roll90Pitch270 + Roll180Pitch270 + Roll270Pitch270 + Roll90Pitch180Yaw90 + Roll90Yaw270 Yaw293Pitch68Roll180 Pitch315 - Pitch315Roll90 - Roll45 - Roll315 + Roll90Pitch315 Custom - + Internal External @@ -4151,84 +3800,84 @@ - 1 -400 400 - 1 mGauss milligauss + 1 + 1 - 1 -400 400 - 1 mGauss milligauss + 1 + 1 -400 400 - 1 mGauss milligauss + 1 - 1 -1000 1000 - 1 mGauss/A milligauss per ampere + 1 + 1 - 1 -1000 1000 - 1 mGauss/A milligauss per ampere + 1 + 1 -1000 1000 - 1 mGauss/A milligauss per ampere + 1 - 1 -400 400 - 1 mGauss milligauss + 1 + 1 - 1 -400 400 - 1 mGauss milligauss + 1 + 1 -400 400 - 1 mGauss milligauss + 1 - 1 -1000 1000 - 1 mGauss/A milligauss per ampere + 1 + 1 - 1 -1000 1000 - 1 mGauss/A milligauss per ampere + 1 + 1 -1000 1000 - 1 mGauss/A milligauss per ampere + 1 True @@ -4288,12 +3937,10 @@ Yaw293Pitch68Roll180 Pitch315 Roll90Pitch315 - Roll45 - Roll315 Custom - + Internal External @@ -4349,12 +3996,10 @@ Yaw293Pitch68Roll180 Pitch315 Roll90Pitch315 - Roll45 - Roll315 Custom - + Internal External @@ -4424,20 +4069,19 @@ 1 - 0:HMC5883,1:LSM303D,2:AK8963,3:BMM150,4:LSM9DS1,5:LIS3MDL,6:AK09916,7:IST8310,8:ICM20948,9:MMC3416,11:DroneCAN,12:QMC5883,14:MAG3110,15:IST8308,16:RM3100,17:MSP,18:ExternalAHRS + 0:HMC5883,1:LSM303D,2:AK8963,3:BMM150,4:LSM9DS1,5:LIS3MDL,6:AK09916,7:IST8310,8:ICM20948,9:MMC3416,11:UAVCAN,12:QMC5883,14:MAG3110,15:IST8308,16:RM3100,17:MSP,18:ExternalAHRS - 0 100 - 1 % percent + 0 100 + 1 Disabled CheckOnly CheckAndFix - use same tolerance to auto rotate 45 deg rotations @@ -4454,7 +4098,6 @@ Disabled Enabled - True 0 1.3 @@ -4485,23 +4128,23 @@ -180 180 - 1 deg degrees + 1 True -180 180 - 1 deg degrees + 1 True -180 180 - 1 deg degrees + 1 True @@ -4541,46 +4184,11 @@ - - - - Disabled - Enabled - - - - - Disabled - Serial0 - Serial1 - Serial2 - Serial3 - Serial4 - Serial5 - Serial6 - - - - - Disabled - Driver1 - Driver2 - - - - 0:EnforceArming - - - m - meters - - None VectorNav - LORD @@ -4594,15 +4202,16 @@ None Serial-MS NWPMU - Serial-Lutan True 0 1 + False 0 10 + False @@ -4633,7 +4242,7 @@ m/s meters per second - + 100 1000 25 @@ -4879,16 +4488,24 @@ 0.1 30.0 Hz hertz + False - + 0:FirstEKF,1:SecondEKF,2:ThirdEKF,3:FourthEKF,4:FifthEKF,5:SixthEKF True - + 0:FirstEKF,1:SecondEKF,2:ThirdEKF,3:FourthEKF,4:FifthEKF,5:SixthEKF True - + + 500 5000 + 100 + ms + milliseconds + True + + 1 10 1 True @@ -4914,7 +4531,7 @@ m/s meters per second - + 100 1000 25 @@ -4947,9 +4564,9 @@ 0 250 10 + True ms milliseconds - True 0.01 0.5 @@ -5012,9 +4629,9 @@ 0 250 10 + True ms milliseconds - True 0.0001 0.1 @@ -5039,13 +4656,13 @@ meters per cubic second - 0.01 2.0 + 0.01 1.0 0.1 m/s/s meters per square second - 0.0 2.0 + 0.0 1.0 0.1 @@ -5095,7 +4712,7 @@ Gauss/s gauss per second - + -1 70 1 % @@ -5118,9 +4735,9 @@ 0 250 10 + True ms milliseconds - True 2.0 6.0 @@ -5172,21 +4789,29 @@ 0.1 30.0 Hz hertz + False 0 500 mGauss milligauss - + 0:FirstEKF,1:SecondEKF,2:ThirdEKF,3:FourthEKF,4:FifthEKF,5:SixthEKF True - + 0:FirstEKF,1:SecondEKF,2:ThirdEKF,3:FourthEKF,4:FifthEKF,5:SixthEKF True - + + 500 5000 + 100 + ms + milliseconds + True + + 1 10 1 True @@ -5229,10 +4854,6 @@ 0.0 10.0 0.5 - - 0 2 - 1 - @@ -5396,53 +5017,53 @@ + m + meters 10 1000 1 - m - meters - 30 10000 m meters + 30 10000 - 1 10 m meters + 1 10 1 20 - -100 100 - 1 m meters + -100 100 + 1 - 0 1 Fence Return Point Nearest Rally Point + 0 1 1 - 0 32767 - 1 m meters + 0 32767 + 1 0 3 + 1 AutoEnableOff AutoEnableOnTakeoff AutoEnableDisableFloorOnLanding AutoEnableOnlyWhenArmed - 1 @@ -5514,7 +5135,7 @@ Bebop CXOF MAVLink - DroneCAN + UAVCAN MSP UPFLOW @@ -5529,91 +5150,33 @@ 1 - -17999 +18000 - 10 cdeg centidegrees + -17999 +18000 + 10 - -5 5 - 0.01 m meters + -5 5 + 0.01 - -5 5 - 0.01 m meters + -5 5 + 0.01 - -5 5 - 0.01 m meters + -5 5 + 0.01 0 127 - - - - Disabled - Enabled - - - - 0 255 - - - 1 1000 - m - meters - - - - North-East-Down - Relative to lead vehicle heading - - - - -100 100 - 1 - m - meters - - - -100 100 - 1 - m - meters - - - -100 100 - 1 - m - meters - - - - None - Face Lead Vehicle - Same as Lead vehicle - Direction of Flight - - - - 0.01 1.00 - 0.01 - - - - absolute - relative - - - @@ -5716,9 +5279,6 @@ 27 - - 0:EnableAirspeedAndGroundspeed - @@ -5737,11 +5297,13 @@ None AUTO uBlox + MTK + MTK19 NMEA SiRF HIL SwiftNav - DroneCAN + UAVCAN SBF GSOF ERB @@ -5753,8 +5315,6 @@ MSP AllyStar ExternalAHRS - DroneCAN-MovingBaseline-Base - DroneCAN-MovingBaseline-Rover True @@ -5763,11 +5323,13 @@ None AUTO uBlox + MTK + MTK19 NMEA SiRF HIL SwiftNav - DroneCAN + UAVCAN SBF GSOF ERB @@ -5779,8 +5341,6 @@ MSP AllyStar ExternalAHRS - DroneCAN-MovingBaseline-Base - DroneCAN-MovingBaseline-Rover True @@ -5863,88 +5423,87 @@ Disables automatic configuration - Enable automatic configuration for Serial GPSes only - Enable automatic configuration for DroneCAN as well + Enable automatic configuration - 50 200 + ms + milliseconds 10Hz 8Hz 5Hz - ms - milliseconds + 50 200 - 50 200 + ms + milliseconds 10Hz 8Hz 5Hz - ms - milliseconds + 50 200 - -5 5 - 0.01 m meters + -5 5 + 0.01 - -5 5 - 0.01 m meters + -5 5 + 0.01 - -5 5 - 0.01 m meters + -5 5 + 0.01 - -5 5 - 0.01 m meters + -5 5 + 0.01 - -5 5 - 0.01 m meters + -5 5 + 0.01 - -5 5 - 0.01 m meters + -5 5 + 0.01 - 0 250 ms milliseconds + 0 250 True - 0 250 ms milliseconds + 0 250 True 0:Horiz Pos,1:Vert Pos,2:Speed - 5.0 30.0 s seconds + 5.0 30.0 - 0:Use UART2 for moving baseline on ublox,1:Use base station for GPS yaw on SBF,2:Use baudrate 115200,3:Use dedicated CAN port b/w GPSes for moving baseline + 0:Use UART2 for moving baseline on ublox,1:Use base station for GPS yaw on SBF 0 10 @@ -5957,11 +5516,11 @@ True + 1 FirstGPS SecondGPS - 1 True @@ -5969,9 +5528,9 @@ True - + - + @@ -5983,22 +5542,22 @@ True - -5 5 - 0.01 m meters + -5 5 + 0.01 - -5 5 - 0.01 m meters + -5 5 + 0.01 - -5 5 - 0.01 m meters + -5 5 + 0.01 @@ -6010,22 +5569,22 @@ True - -5 5 - 0.01 m meters + -5 5 + 0.01 - -5 5 - 0.01 m meters + -5 5 + 0.01 - -5 5 - 0.01 m meters + -5 5 + 0.01 @@ -6062,7 +5621,7 @@ s seconds - + 0 255 @@ -6101,7 +5660,7 @@ Enabled - + None Chan1 @@ -6123,14 +5682,14 @@ - 0.1 5 s seconds + 0.1 5 - 1 10 s seconds + 1 10 100 100000 @@ -6167,7 +5726,7 @@ - 0:DisableIgnitionRCFailsafe,2:ThrottleWhileDisarmed + 0:DisableIgnitionRCFailsafe 0 1300 @@ -6175,149 +5734,149 @@ - 1 rad/s radians per second + 1 - 1 rad/s radians per second + 1 - 1 rad/s radians per second + 1 - 1 rad/s radians per second + 1 - 1 rad/s radians per second + 1 - 1 rad/s radians per second + 1 - 1 rad/s radians per second + 1 - 1 rad/s radians per second + 1 - 1 rad/s radians per second + 1 - 1 0.8 1.2 + 1 - 1 0.8 1.2 + 1 - 1 0.8 1.2 + 1 - 1 - -3.5 3.5 m/s/s meters per square second + -3.5 3.5 + 1 - 1 - -3.5 3.5 m/s/s meters per square second + -3.5 3.5 + 1 - 1 - -3.5 3.5 m/s/s meters per square second + -3.5 3.5 + 1 - 1 0.8 1.2 + 1 - 1 0.8 1.2 + 1 - 1 0.8 1.2 + 1 - 1 - -3.5 3.5 m/s/s meters per square second + -3.5 3.5 + 1 - 1 - -3.5 3.5 m/s/s meters per square second + -3.5 3.5 + 1 - 1 - -3.5 3.5 m/s/s meters per square second + -3.5 3.5 + 1 - 1 0.8 1.2 + 1 - 1 0.8 1.2 + 1 - 1 0.8 1.2 + 1 - 1 - -3.5 3.5 m/s/s meters per square second + -3.5 3.5 + 1 - 1 - -3.5 3.5 m/s/s meters per square second + -3.5 3.5 + 1 - 1 - -3.5 3.5 m/s/s meters per square second + -3.5 3.5 + 1 - 0 256 Hz hertz + 0 256 - 0 256 Hz hertz + 0 256 @@ -6361,57 +5920,57 @@ - -5 5 - 0.01 m meters + -5 5 + 0.01 - -5 5 - 0.01 m meters + -5 5 + 0.01 - -5 5 - 0.01 m meters + -5 5 + 0.01 - -5 5 - 0.01 m meters + -5 5 + 0.01 - -5 5 - 0.01 m meters + -5 5 + 0.01 - -5 5 - 0.01 m meters + -5 5 + 0.01 - -10 10 m meters + -10 10 - -5 5 - 0.01 m meters + -5 5 + 0.01 - -5 5 - 0.01 m meters + -5 5 + 0.01 True @@ -6435,7 +5994,7 @@ 0:FirstIMU,1:SecondIMU,2:ThirdIMU - 0:FirstIMU,1:SecondIMU,2:ThirdIMU,3:FourthIMU,4:FifthIMU,5:SixthIMU,6:SeventhIMU + 0:FirstIMU,1:SecondIMU,2:ThirdIMU @@ -6447,85 +6006,39 @@ True - 1 degC degrees Celsius + 1 - 1 degC degrees Celsius + 1 - 1 degC degrees Celsius + 1 - 1 degC degrees Celsius + 1 - 1 degC degrees Celsius + 1 - 1 degC degrees Celsius + 1 0:PersistParams - - - - Disabled - Enabled - - - - 10 495 - Hz - hertz - - - 5 250 - Hz - hertz - - - 5 50 - dB - decibel - - - 0:1st harmonic,1:2nd harmonic,2:3rd harmonic,3:4th hamronic,4:5th harmonic,5:6th harmonic,6:7th harmonic,7:8th harmonic - True - - - 0.0 1.0 - True - - - 0 4 - - Disabled - Throttle - RPM Sensor - ESC Telemetry - Dynamic FFT - Second RPM Sensor - - - - 0:Double notch,1:Dynamic harmonic,2:Update at loop rate - True - - @@ -6548,7 +6061,7 @@ dB decibel - + 0:1st harmonic,1:2nd harmonic,2:3rd harmonic,3:4th hamronic,4:5th harmonic,5:6th harmonic,6:7th harmonic,7:8th harmonic True @@ -6564,7 +6077,6 @@ RPM Sensor ESC Telemetry Dynamic FFT - Second RPM Sensor @@ -6585,14 +6097,37 @@ 0:Sensor-Rate Logging (sample at full sensor rate seen by AP), 1: Sample post-filtering - 10 ms milliseconds + 10 1 + + + + Disabled + Enabled + + + + 5 30 + dB + decibel + + + 10 400 + Hz + hertz + + + 5 100 + Hz + hertz + + @@ -6603,16 +6138,16 @@ True - 1 -70 80 degC degrees Celsius + 1 - 1 -70 80 degC degrees Celsius + 1 1 @@ -6679,16 +6214,16 @@ True - 1 -70 80 degC degrees Celsius + 1 - 1 -70 80 degC degrees Celsius + 1 1 @@ -6755,16 +6290,16 @@ True - 1 -70 80 degC degrees Celsius + 1 - 1 -70 80 degC degrees Celsius + 1 1 @@ -6824,63 +6359,63 @@ 0 5 - 0.5 m meters + 0.5 0 90 - 0.1 deg degrees + 0.1 - -2000 2000 - 10 cdeg centidegrees + -2000 2000 + 10 - 0 30 - 0.1 m meters + 0 30 + 0.1 - 0 10 - 0.1 s seconds + 0 10 + 0.1 - 0 30 - 0.1 m meters - - - 0 10 - 0.1 - s - seconds - - 0 30 0.1 - m/s - meters per second - - 0 127 - 1 - % - percent - - - 0 127 - 1 + s seconds + 0 10 + 0.1 + + + m/s + meters per second + 0 30 + 0.1 + + + % + percent + 0 127 + 1 + + + s + seconds + 1 + 0 127 @@ -6897,12 +6432,9 @@ 0 100 - 1 % percent - - - 0: honor min throttle during landing flare + 1 @@ -6910,6 +6442,9 @@ Deepstall + + 0: honor min throttle during landing flare + @@ -6987,12 +6522,6 @@ - - - Disabled - Enabled - - WaitForPilotInput @@ -7037,16 +6566,16 @@ - 0 1000 - 1 m meters + 0 1000 + 1 - 0 1000 - 1 m meters + 0 1000 + 1 0:Retract after Takeoff,1:Deploy during Land @@ -7085,31 +6614,16 @@ seconds - 10 1000 MB megabyte - - - 0 1000 - Hz - hertz - - - 0 1000 - Hz - hertz - - - 0 1000 - Hz - hertz + 10 1000 - True 0 32766 1 + True @@ -7143,40 +6657,40 @@ - -180.00 179.99 - 1 deg degrees + -180.00 179.99 + 1 - -180.00 179.99 - 1 deg degrees + -180.00 179.99 + 1 - -180.00 179.99 - 1 deg degrees + -180.00 179.99 + 1 - -180.00 179.99 - 1 deg degrees + -180.00 179.99 + 1 - -180.00 179.99 - 1 deg degrees + -180.00 179.99 + 1 - -180.00 179.99 - 1 deg degrees + -180.00 179.99 + 1 @@ -7210,16 +6724,16 @@ - -18000 17999 - 10 cdeg centidegrees + -18000 17999 + 10 - -18000 17999 - 10 cdeg centidegrees + -18000 17999 + 10 @@ -7235,16 +6749,16 @@ - -18000 17999 - 10 cdeg centidegrees + -18000 17999 + 10 - -18000 17999 - 10 cdeg centidegrees + -18000 17999 + 10 @@ -7260,32 +6774,32 @@ - -18000 17999 - 10 cdeg centidegrees + -18000 17999 + 10 - -18000 17999 - 10 cdeg centidegrees + -18000 17999 + 10 0 100 1 - 0.0 0.2 - .005 s seconds + 0.0 0.2 + .005 - 0.0 0.2 - .005 s seconds + 0.0 0.2 + .005 @@ -7297,40 +6811,40 @@ - -180.00 179.99 - 1 deg degrees + -180.00 179.99 + 1 - -180.00 179.99 - 1 deg degrees + -180.00 179.99 + 1 - -180.00 179.99 - 1 deg degrees + -180.00 179.99 + 1 - -180.00 179.99 - 1 deg degrees + -180.00 179.99 + 1 - -180.00 179.99 - 1 deg degrees + -180.00 179.99 + 1 - -180.00 179.99 - 1 deg degrees + -180.00 179.99 + 1 @@ -7364,16 +6878,16 @@ - -18000 17999 - 10 cdeg centidegrees + -18000 17999 + 10 - -18000 17999 - 10 cdeg centidegrees + -18000 17999 + 10 @@ -7389,16 +6903,16 @@ - -18000 17999 - 10 cdeg centidegrees + -18000 17999 + 10 - -18000 17999 - 10 cdeg centidegrees + -18000 17999 + 10 @@ -7414,28 +6928,28 @@ - -18000 17999 - 10 cdeg centidegrees + -18000 17999 + 10 - -18000 17999 - 10 cdeg centidegrees + -18000 17999 + 10 - 0.0 0.2 - .005 s seconds + 0.0 0.2 + .005 - 0.0 0.2 - .005 s seconds + 0.0 0.2 + .005 @@ -7469,15 +6983,15 @@ - 0:EnableTelemetryMode, 1: DisableDJIWorkarounds, 2:EnableBTFLFonts + 0:EnableTelemetryMode - 1 60 - 1 s seconds + 1 60 + 1 0.6 1.0 @@ -7488,9 +7002,9 @@ 0.01 - 0 89 deg degrees + 0 89 @@ -7503,7 +7017,7 @@ - 0:Built-in buzzer, 1:DShot, 2:DroneCAN + 0:Built-in buzzer, 1:DShot, 2:UAVCAN @@ -7534,7 +7048,7 @@ - 0:Built-in LED, 1:Internal ToshibaLED, 2:External ToshibaLED, 3:External PCA9685, 4:Oreo LED, 5:DroneCAN, 6:NCP5623 External, 7:NCP5623 Internal, 8:NeoPixel, 9:ProfiLED, 10:Scripting, 11:DShot, 12:ProfiLED_SPI + 0:Built-in LED, 1:Internal ToshibaLED, 2:External ToshibaLED, 3:External PCA9685, 4:Oreo LED, 5:UAVCAN, 6:NCP5623 External, 7:NCP5623 Internal, 8:NeoPixel, 9:ProfiLED, 10:Scripting, 11:DShot @@ -7588,7 +7102,7 @@ - 0:UseDecimalPack, 1:InvertedWindPointer, 2:InvertedAHRoll, 3:Convert feet to miles at 5280ft instead of 10000ft, 4:DisableCrosshair + 0:UseDecimalPack, 1:InvertedWindPointer, 2:InvertedAHRoll True @@ -7865,40 +7379,40 @@ 0 15 - + Disabled Enabled - + 0 29 - + 0 15 - + Disabled Enabled - + 0 29 - + 0 15 - + Disabled Enabled - + 0 29 - + 0 15 @@ -8141,16 +7655,16 @@ 0 15 - + Disabled Enabled - + 0 29 - + 0 15 @@ -8345,18 +7859,6 @@ 0 15 - - - Disabled - Enabled - - - - 0 29 - - - 0 15 - @@ -8575,40 +8077,40 @@ 0 15 - + Disabled Enabled - + 0 29 - + 0 15 - + Disabled Enabled - + 0 29 - + 0 15 - + Disabled Enabled - + 0 29 - + 0 15 @@ -8851,16 +8353,16 @@ 0 15 - + Disabled Enabled - + 0 29 - + 0 15 @@ -9055,18 +8557,6 @@ 0 15 - - - Disabled - Enabled - - - - 0 29 - - - 0 15 - @@ -9285,40 +8775,40 @@ 0 15 - + Disabled Enabled - + 0 29 - + 0 15 - + Disabled Enabled - + 0 29 - + 0 15 - + Disabled Enabled - + 0 29 - + 0 15 @@ -9561,16 +9051,16 @@ 0 15 - + Disabled Enabled - + 0 29 - + 0 15 @@ -9765,18 +9255,6 @@ 0 15 - - - Disabled - Enabled - - - - 0 29 - - - 0 15 - @@ -9995,40 +9473,40 @@ 0 15 - + Disabled Enabled - + 0 29 - + 0 15 - + Disabled Enabled - + 0 29 - + 0 15 - + Disabled Enabled - + 0 29 - + 0 15 @@ -10271,16 +9749,16 @@ 0 15 - + Disabled Enabled - + 0 29 - + 0 15 @@ -10475,18 +9953,6 @@ 0 15 - - - Disabled - Enabled - - - - 0 29 - - - 0 15 - @@ -11035,21 +10501,21 @@ 0.4 1.0 - 0.1 s seconds + 0.1 - + 0 100 - 1 deg/s degrees per second - - - 0 100 1 + + + 0 100 deg/s degrees per second + 1 0.7 1.5 @@ -11105,72 +10571,83 @@ Enable Enable VTOL AUTO - True - 1000 8000 - 10 cdeg centidegrees + 10 + 1000 8000 - 1 30000 ms milliseconds + 0 30000 - 50 500 - 10 cm/s centimeters per second + 50 500 + 10 - 50 500 - 10 cm/s centimeters per second + 50 500 + 10 - 50 500 - 10 cm/s/s centimeters per square second + 50 500 + 10 - 50 500 - 10 Hz hertz + 50 500 + 10 - - 0 100 - 0.1 + + PWM + PWM in microseconds + 800 2200 + 1 + + + PWM + PWM in microseconds + 800 2200 + 1 + + m/s meters per second + 0 100 + 0.1 - 50 500 - 1 deg/s degrees per second + 50 500 + 1 - 30 200 - 10 cm/s centimeters per second + 30 200 + 10 - 0.5 50 - 0.1 m meters + 0.5 50 + 0.1 0 30 - 1 deg degrees + 1 @@ -11181,11 +10658,10 @@ OctaQuad Y6 Tri - Single/Dual + TailSitter DodecaHexa Deca Scripting Matrix - Dynamic Scripting Matrix @@ -11211,11 +10687,19 @@ 0 0.5 0.01 + + 0 1 + 0.01 + + + 0 10 + 0.1 + - 1 200 - 1 m meters + 1 200 + 1 @@ -11225,6 +10709,20 @@ QRTL Always + + + + deg/s + degrees per second + 1 + 10 300 + + + deg + degrees + 1 + 20 80 + Disabled @@ -11239,10 +10737,10 @@ - 0 10 - 0.25 m meters + 0 10 + 0.25 @@ -11251,10 +10749,68 @@ - 0 90 - 1 deg degrees + 0 90 + 1 + + + + Continuous + Binary + VectoredYaw + Bicopter + + + + deg + degrees + 5 80 + + + deg + degrees + 5 80 + + + deg/s + degrees per second + 1 + 10 300 + + + 0:PlaneMode,1:BodyFrameRoll + + + 0:Aileron,1:Elevator,2:Throttle,3:Rudder + + + + Disabled + Channel1 + Channel2 + Channel3 + Channel4 + Channel5 + Channel6 + Channel7 + Channel8 + + + + 0 1 + 0.01 + + + 0 1 + 0.01 + + + 0 30 + + + 0 4 + 0.1 @@ -11276,101 +10832,121 @@ VTOL_TILTROTOR - - 0:Level Transition,1:Allow FW Takeoff,2:Allow FW Land,3:Vtol Takeoff Frame,4:Use FW Approach,5:Use QRTL,6:Use Governor,7:Force Qassist,8:Mtrs_Only_Qassist,10:Disarmed Yaw Tilt,11:Delay Spoolup,12:disable Qassist based on synthetic airspeed,13:Disable Ground Effect Compensation,14:Ignore forward flight angle limits in Qmodes,15:ThrLandControl,16:DisableApproach,17:EnableLandResponsition,18:ARMVtol, 19: CompleteTransition if Q_TRANS_FAIL, 20: Force RTL mode on VTOL failsafes overriding bit 5(USE QRTL) + + 0:Level Transition,1:Allow FW Takeoff,2:Allow FW Land,3:Vtol Takeoff Frame,4:Use FW Approach,5:Use QRTL,6:Use Governor,7:Force Qassist,8:Mtrs_Only_Qassist,9:Airmode_On_Arm,10:Disarmed Yaw Tilt,11:Delay Spoolup,12:disable Qassist based on synthetic airspeed,13:Disable Ground Effect Compensation,14:Ignore forward flight angle limits in Qmodes,15:ThrLandControl,16:DisableApproach,17:EnableLandResponsition - 0.2 5 - 0.1 m/s/s meters per square second - - - -10 +10 0.1 + 0.2 5 + + + 1 5 + + deg degrees + -10 +10 + 0.1 True + + deg + degrees + 0 80 + - 0 200 - 5 m meters + 0 200 + 5 - - 0 20 - 1 + s seconds + 0 20 + 1 + + + 0:Motor 1,1:Motor 2,2:Motor 3,3:Motor 4, 4:Motor 5,5:Motor 6,6:Motor 7,7:Motor 8 0 1 .1 - 10 500 - 1 deg/s degrees per second + 10 500 + 1 - 10 500 - 1 deg/s degrees per second + 10 500 + 1 - 10 500 - 1 deg/s degrees per second + 10 500 + 1 1.1 5.0 5.1 - 0 20 - 1 m/s meters per second + 0 20 + 1 - 0 120 - 1 m meters + 0 120 + 1 + + + 0:Throttle,1:ATT_THR,2:Disk Theory,3:Altitude correction + + + 0.1 1 - 0 2 - 0.1 s seconds + 0 2 + 0.1 0 100 + False - - 0 10000 - ms - milliseconds + + kg/m/m + kilograms per square meter + 0 50 - - - Warn only - QLand - QRTL - + + deg + degrees + 0 30 - - 0.1 0.6 - 0.05 - m - meters + + 0 1 - - 0 5 + + deg/s + degrees per second + 10 500 + + + deg/s + degrees per second + 10 500 @@ -11386,12 +10962,14 @@ - 500 18000 - 100 cdeg/s centidegrees per second + 500 18000 + 100 + cdeg/s/s + centidegrees per square second 0 72000 Disabled @@ -11401,8 +10979,6 @@ Fast 1000 - cdeg/s/s - centidegrees per square second @@ -11411,7 +10987,10 @@ + cdeg/s/s + centidegrees per square second 0 180000 + 1000 Disabled VerySlow @@ -11419,12 +10998,12 @@ Medium Fast - 1000 - cdeg/s/s - centidegrees per square second + cdeg/s/s + centidegrees per square second 0 180000 + 1000 Disabled VerySlow @@ -11432,9 +11011,6 @@ Medium Fast - 1000 - cdeg/s/s - centidegrees per square second @@ -11455,53 +11031,47 @@ 0.5 10.0 - 0 1080 - - Disabled - Slow - Medium - Fast - - 1 deg/s degrees per second + 0 1080 + 1 + + Disabled + Slow + Medium + Fast + - 0 1080 - - Disabled - Slow - Medium - Fast - - 1 deg/s degrees per second + 0 1080 + 1 + + Disabled + Slow + Medium + Fast + - 0 1080 - - Disabled - Slow - Medium - Fast - - 1 deg/s degrees per second + 0 1080 + 1 + + Disabled + Slow + Medium + Fast + - 0 1 - - Very Soft - Soft - Medium - Crisp - Very Crisp - - 0.01 s seconds + 0 1 + 0.01 + 0.5:Very Soft,0.2:Soft,0.15:Medium,0.1:Crisp,0.05:Very Crisp 0.01 0.5 @@ -11640,41 +11210,41 @@ - - 0 45 - 1 + deg degrees + 0 45 + 1 - 20 3500 - 50 cm/s centimeters per second + 20 3500 + 50 + cm/s/s + centimeters per square second 100 981 1 - cm/s/s - centimeters per square second - 25 250 - 1 cm/s/s centimeters per square second + 25 250 + 1 - 500 5000 - 1 cm/s/s/s centimeters per cubic second + 500 5000 + 1 - 0 2 - 0.1 s seconds + 0 2 + 0.1 @@ -11687,11 +11257,7 @@ -1.0 1.0 - - Low - Default - High - + 0.9:Low,0.95:Default,1.0:High 6 53 @@ -11718,33 +11284,24 @@ DShot300 DShot600 DShot1200 - PWMRange True - - 0 2000 + PWM PWM in microseconds + 0 2000 - - 0 2000 + PWM PWM in microseconds + 0 2000 - - Low - Default - High - + 0.0:Low,0.15:Default,0.3:High - - Low - Default - High - + 0.0:Low,0.1:Default,0.2:High 0 10 @@ -11769,15 +11326,15 @@ 5 80 - 1 deg degrees + 1 0 2 - 0.1 s seconds + 0.1 0 5 @@ -11791,29 +11348,29 @@ 0 .5 - 0.001 s seconds + 0.001 0 .5 - 0.001 s seconds + 0.001 0 5 - 0.001 s seconds + 0.001 - 0.5 5 - 0.1 Hz hertz + 0.5 5 + 0.1 1.000 3.000 @@ -11908,12 +11465,12 @@ cm/s/s centimeters per square second - + 0 100 Hz hertz - + 0 100 Hz hertz @@ -11923,198 +11480,60 @@ 0.01 + deg + degrees 0 45 1 - deg - degrees - - 1 20 - 1 - m/s/s/s - meters per cubic second - - - 5 50 - 1 - m/s/s/s - meters per cubic second - - - - - - Disable - Enable - Enable Always - - True - - - 5 80 - deg - degrees - - - 5 80 - deg - degrees - - - 0:PlaneMode,1:BodyFrameRoll - - - 0 1 + + s + seconds + 0.25 2 0.01 - - 0 1 - 0.01 - - - 0 4 - 0.1 - - - 1 5 - - - 0 80 - deg - degrees - - - 0:Motor 1,1:Motor 2,2:Motor 3,3:Motor 4, 4:Motor 5,5:Motor 6,6:Motor 7,7:Motor 8 - - - 0:Throttle,1:ATT_THR,2:Disk Theory,3:Altitude correction - - + + s + seconds 0.1 1 - - - 0 50 - kg/m/m - kilograms per square meter - - - 10 500 - deg/s - degrees per second - - - 10 500 - deg/s - degrees per second - - - -1 100 - % - percent - - - 0 2 - - - 0 2 - - - 0 2 - - - 0 15 - - - - - - Disable - Enable - - True - - - - - 10 300 - 1 - deg/s - degrees per second - - - 20 80 - 1 - deg - degrees - - - - Continuous - Binary - VectoredYaw - Bicopter - - - - 10 300 - 1 - deg/s - degrees per second - - - 0 30 - - - 0 30 - deg - degrees - - - 0 1 - - - 0 15 - 1 - deg - degrees + 0.01 + cm/s + centimeters per second 20 2000 50 - cm/s - centimeters per second - 5 1000 - 1 cm centimeters + 5 1000 + 1 + cm/s + centimeters per second 10 1000 50 - cm/s - centimeters per second - 10 500 - 10 cm/s centimeters per second + 10 500 + 10 - 50 500 - 10 cm/s/s centimeters per square second + 50 500 + 10 - 50 500 - 10 cm/s/s centimeters per square second + 50 500 + 10 @@ -12123,85 +11542,18 @@ + m/s/s + meters per square second 1 20 - m/s/s/s - meters per cubic second - - - 0.1 100 - m - meters - - - - - - Disabled - Nose into wind - Nose or tail into wind - Side into wind - tail into wind - - - - 0.5 4 - 0.1 - - - 0 10 - 0.1 - deg - degrees - - - 0 50 - 1 - m - meters - - - 0 50 - 0.1 - m/s - meters per second - - - 0 5 - 0.1 - m/s - meters per second - - - - No override - Disabled - Nose into wind - Nose or tail into wind - Side into wind - tail into wind - - - - - No override - Disabled - Nose into wind - Nose or tail into wind - Side into wind - tail into wind - - - - 0:Use pitch when nose or tail-in for faster weathervaning - 0.1 km kilometers + 0.1 @@ -12217,30 +11569,30 @@ seconds - 0:Ignore RC Receiver, 1:Ignore MAVLink Overrides, 2:Ignore Receiver Failsafe bit but allow other RC failsafes if setup, 3:FPort Pad, 4:Log RC input bytes, 5:Arming check throttle for 0 input, 6:Skip the arming check for neutral Roll/Pitch/Yaw sticks, 7:Allow Switch reverse, 8:Use passthrough for CRSF telemetry, 9:Suppress CRSF mode/rate message for ELRS systems,10:Enable multiple receiver support, 11:CRSF RSSI shows Link Quality + 0:Ignore RC Receiver, 1:Ignore MAVLink Overrides, 2:Ignore Receiver Failsafe bit but allow other RC failsafes if setup, 3:FPort Pad, 4:Log RC input bytes, 5:Arming check throttle for 0 input, 6:Skip the arming check for neutral Roll/Pitch/Yay sticks, 7:Allow Switch reverse, 8:Use passthrough for CRSF telemetry - 0:All,1:PPM,2:IBUS,3:SBUS,4:SBUS_NI,5:DSM,6:SUMD,7:SRXL,8:SRXL2,9:CRSF,10:ST24,11:FPORT,12:FPORT2,13:FastSBUS + 0:All,1:PPM,2:IBUS,3:SBUS,4:SBUS_NI,5:DSM,6:SUMD,7:SRXL,8:SRXL2,9:CRSF,10:ST24,11:FPORT,12:FPORT2 - 800 2200 - 1 PWM PWM in microseconds + 800 2200 + 1 - 800 2200 - 1 PWM PWM in microseconds + 800 2200 + 1 - 800 2200 - 1 PWM PWM in microseconds + 800 2200 + 1 @@ -12249,9 +11601,9 @@ - 0 200 PWM PWM in microseconds + 0 200 @@ -12260,7 +11612,6 @@ Camera Trigger Fence ModeAuto - Parachute Release Auto Mission Reset Retract Mount Relay On/Off @@ -12271,11 +11622,10 @@ Relay3 On/Off Relay4 On/Off ADSB Avoidance En - ArmDisarm (4.1 and lower) + ArmDisarm InvertedFlight RC Override Enable ModeManual - ModeACRO ModeGuided ModeLoiter Clear Waypoints @@ -12302,21 +11652,11 @@ VTX Power FBWA taildragger takeoff mode trigger re-reading of mode switch - ModeTraining KillIMU1 KillIMU2 Camera Mode Toggle GPS Disable Yaw Disable Airspeed Use - EnableFixedWingAutotune - ModeQRTL - CRUISE - ArmDisarm (4.2 and higher) - ArmDisarm with Quadplane AirMode (4.2 and higher) - set roll pitch and yaw trim to current servo and RC - Force FS Action to FBWA - Optflow Calibration - Weathervane Enable Flap Forward Throttle Scripting1 @@ -12332,22 +11672,22 @@ - 800 2200 - 1 PWM PWM in microseconds + 800 2200 + 1 - 800 2200 - 1 PWM PWM in microseconds + 800 2200 + 1 - 800 2200 - 1 PWM PWM in microseconds + 800 2200 + 1 @@ -12356,9 +11696,9 @@ - 0 200 PWM PWM in microseconds + 0 200 @@ -12367,7 +11707,6 @@ Camera Trigger Fence ModeAuto - Parachute Release Auto Mission Reset Retract Mount Relay On/Off @@ -12378,11 +11717,10 @@ Relay3 On/Off Relay4 On/Off ADSB Avoidance En - ArmDisarm (4.1 and lower) + ArmDisarm InvertedFlight RC Override Enable ModeManual - ModeACRO ModeGuided ModeLoiter Clear Waypoints @@ -12409,21 +11747,11 @@ VTX Power FBWA taildragger takeoff mode trigger re-reading of mode switch - ModeTraining KillIMU1 KillIMU2 Camera Mode Toggle GPS Disable Yaw Disable Airspeed Use - EnableFixedWingAutotune - ModeQRTL - CRUISE - ArmDisarm (4.2 and higher) - ArmDisarm with Quadplane AirMode (4.2 and higher) - set roll pitch and yaw trim to current servo and RC - Force FS Action to FBWA - Optflow Calibration - Weathervane Enable Flap Forward Throttle Scripting1 @@ -12439,22 +11767,22 @@ - 800 2200 - 1 PWM PWM in microseconds + 800 2200 + 1 - 800 2200 - 1 PWM PWM in microseconds + 800 2200 + 1 - 800 2200 - 1 PWM PWM in microseconds + 800 2200 + 1 @@ -12463,9 +11791,9 @@ - 0 200 PWM PWM in microseconds + 0 200 @@ -12474,7 +11802,6 @@ Camera Trigger Fence ModeAuto - Parachute Release Auto Mission Reset Retract Mount Relay On/Off @@ -12485,11 +11812,10 @@ Relay3 On/Off Relay4 On/Off ADSB Avoidance En - ArmDisarm (4.1 and lower) + ArmDisarm InvertedFlight RC Override Enable ModeManual - ModeACRO ModeGuided ModeLoiter Clear Waypoints @@ -12516,21 +11842,11 @@ VTX Power FBWA taildragger takeoff mode trigger re-reading of mode switch - ModeTraining KillIMU1 KillIMU2 Camera Mode Toggle GPS Disable Yaw Disable Airspeed Use - EnableFixedWingAutotune - ModeQRTL - CRUISE - ArmDisarm (4.2 and higher) - ArmDisarm with Quadplane AirMode (4.2 and higher) - set roll pitch and yaw trim to current servo and RC - Force FS Action to FBWA - Optflow Calibration - Weathervane Enable Flap Forward Throttle Scripting1 @@ -12546,22 +11862,22 @@ - 800 2200 - 1 PWM PWM in microseconds + 800 2200 + 1 - 800 2200 - 1 PWM PWM in microseconds + 800 2200 + 1 - 800 2200 - 1 PWM PWM in microseconds + 800 2200 + 1 @@ -12570,9 +11886,9 @@ - 0 200 PWM PWM in microseconds + 0 200 @@ -12581,7 +11897,6 @@ Camera Trigger Fence ModeAuto - Parachute Release Auto Mission Reset Retract Mount Relay On/Off @@ -12592,11 +11907,10 @@ Relay3 On/Off Relay4 On/Off ADSB Avoidance En - ArmDisarm (4.1 and lower) + ArmDisarm InvertedFlight RC Override Enable ModeManual - ModeACRO ModeGuided ModeLoiter Clear Waypoints @@ -12623,21 +11937,11 @@ VTX Power FBWA taildragger takeoff mode trigger re-reading of mode switch - ModeTraining KillIMU1 KillIMU2 Camera Mode Toggle GPS Disable Yaw Disable Airspeed Use - EnableFixedWingAutotune - ModeQRTL - CRUISE - ArmDisarm (4.2 and higher) - ArmDisarm with Quadplane AirMode (4.2 and higher) - set roll pitch and yaw trim to current servo and RC - Force FS Action to FBWA - Optflow Calibration - Weathervane Enable Flap Forward Throttle Scripting1 @@ -12653,22 +11957,22 @@ - 800 2200 - 1 PWM PWM in microseconds + 800 2200 + 1 - 800 2200 - 1 PWM PWM in microseconds + 800 2200 + 1 - 800 2200 - 1 PWM PWM in microseconds + 800 2200 + 1 @@ -12677,9 +11981,9 @@ - 0 200 PWM PWM in microseconds + 0 200 @@ -12688,7 +11992,6 @@ Camera Trigger Fence ModeAuto - Parachute Release Auto Mission Reset Retract Mount Relay On/Off @@ -12699,11 +12002,10 @@ Relay3 On/Off Relay4 On/Off ADSB Avoidance En - ArmDisarm (4.1 and lower) + ArmDisarm InvertedFlight RC Override Enable ModeManual - ModeACRO ModeGuided ModeLoiter Clear Waypoints @@ -12730,21 +12032,11 @@ VTX Power FBWA taildragger takeoff mode trigger re-reading of mode switch - ModeTraining KillIMU1 KillIMU2 Camera Mode Toggle GPS Disable Yaw Disable Airspeed Use - EnableFixedWingAutotune - ModeQRTL - CRUISE - ArmDisarm (4.2 and higher) - ArmDisarm with Quadplane AirMode (4.2 and higher) - set roll pitch and yaw trim to current servo and RC - Force FS Action to FBWA - Optflow Calibration - Weathervane Enable Flap Forward Throttle Scripting1 @@ -12760,22 +12052,22 @@ - 800 2200 - 1 PWM PWM in microseconds + 800 2200 + 1 - 800 2200 - 1 PWM PWM in microseconds + 800 2200 + 1 - 800 2200 - 1 PWM PWM in microseconds + 800 2200 + 1 @@ -12784,9 +12076,9 @@ - 0 200 PWM PWM in microseconds + 0 200 @@ -12795,7 +12087,6 @@ Camera Trigger Fence ModeAuto - Parachute Release Auto Mission Reset Retract Mount Relay On/Off @@ -12806,11 +12097,10 @@ Relay3 On/Off Relay4 On/Off ADSB Avoidance En - ArmDisarm (4.1 and lower) + ArmDisarm InvertedFlight RC Override Enable ModeManual - ModeACRO ModeGuided ModeLoiter Clear Waypoints @@ -12837,21 +12127,11 @@ VTX Power FBWA taildragger takeoff mode trigger re-reading of mode switch - ModeTraining KillIMU1 KillIMU2 Camera Mode Toggle GPS Disable Yaw Disable Airspeed Use - EnableFixedWingAutotune - ModeQRTL - CRUISE - ArmDisarm (4.2 and higher) - ArmDisarm with Quadplane AirMode (4.2 and higher) - set roll pitch and yaw trim to current servo and RC - Force FS Action to FBWA - Optflow Calibration - Weathervane Enable Flap Forward Throttle Scripting1 @@ -12867,22 +12147,22 @@ - 800 2200 - 1 PWM PWM in microseconds + 800 2200 + 1 - 800 2200 - 1 PWM PWM in microseconds + 800 2200 + 1 - 800 2200 - 1 PWM PWM in microseconds + 800 2200 + 1 @@ -12891,9 +12171,9 @@ - 0 200 PWM PWM in microseconds + 0 200 @@ -12902,7 +12182,6 @@ Camera Trigger Fence ModeAuto - Parachute Release Auto Mission Reset Retract Mount Relay On/Off @@ -12913,11 +12192,10 @@ Relay3 On/Off Relay4 On/Off ADSB Avoidance En - ArmDisarm (4.1 and lower) + ArmDisarm InvertedFlight RC Override Enable ModeManual - ModeACRO ModeGuided ModeLoiter Clear Waypoints @@ -12944,21 +12222,11 @@ VTX Power FBWA taildragger takeoff mode trigger re-reading of mode switch - ModeTraining KillIMU1 KillIMU2 Camera Mode Toggle GPS Disable Yaw Disable Airspeed Use - EnableFixedWingAutotune - ModeQRTL - CRUISE - ArmDisarm (4.2 and higher) - ArmDisarm with Quadplane AirMode (4.2 and higher) - set roll pitch and yaw trim to current servo and RC - Force FS Action to FBWA - Optflow Calibration - Weathervane Enable Flap Forward Throttle Scripting1 @@ -12974,22 +12242,22 @@ - 800 2200 - 1 PWM PWM in microseconds + 800 2200 + 1 - 800 2200 - 1 PWM PWM in microseconds + 800 2200 + 1 - 800 2200 - 1 PWM PWM in microseconds + 800 2200 + 1 @@ -12998,9 +12266,9 @@ - 0 200 PWM PWM in microseconds + 0 200 @@ -13009,7 +12277,6 @@ Camera Trigger Fence ModeAuto - Parachute Release Auto Mission Reset Retract Mount Relay On/Off @@ -13020,11 +12287,10 @@ Relay3 On/Off Relay4 On/Off ADSB Avoidance En - ArmDisarm (4.1 and lower) + ArmDisarm InvertedFlight RC Override Enable ModeManual - ModeACRO ModeGuided ModeLoiter Clear Waypoints @@ -13051,21 +12317,11 @@ VTX Power FBWA taildragger takeoff mode trigger re-reading of mode switch - ModeTraining KillIMU1 KillIMU2 Camera Mode Toggle GPS Disable Yaw Disable Airspeed Use - EnableFixedWingAutotune - ModeQRTL - CRUISE - ArmDisarm (4.2 and higher) - ArmDisarm with Quadplane AirMode (4.2 and higher) - set roll pitch and yaw trim to current servo and RC - Force FS Action to FBWA - Optflow Calibration - Weathervane Enable Flap Forward Throttle Scripting1 @@ -13081,22 +12337,22 @@ - 800 2200 - 1 PWM PWM in microseconds + 800 2200 + 1 - 800 2200 - 1 PWM PWM in microseconds + 800 2200 + 1 - 800 2200 - 1 PWM PWM in microseconds + 800 2200 + 1 @@ -13105,9 +12361,9 @@ - 0 200 PWM PWM in microseconds + 0 200 @@ -13116,7 +12372,6 @@ Camera Trigger Fence ModeAuto - Parachute Release Auto Mission Reset Retract Mount Relay On/Off @@ -13127,11 +12382,10 @@ Relay3 On/Off Relay4 On/Off ADSB Avoidance En - ArmDisarm (4.1 and lower) + ArmDisarm InvertedFlight RC Override Enable ModeManual - ModeACRO ModeGuided ModeLoiter Clear Waypoints @@ -13158,21 +12412,11 @@ VTX Power FBWA taildragger takeoff mode trigger re-reading of mode switch - ModeTraining KillIMU1 KillIMU2 Camera Mode Toggle GPS Disable Yaw Disable Airspeed Use - EnableFixedWingAutotune - ModeQRTL - CRUISE - ArmDisarm (4.2 and higher) - ArmDisarm with Quadplane AirMode (4.2 and higher) - set roll pitch and yaw trim to current servo and RC - Force FS Action to FBWA - Optflow Calibration - Weathervane Enable Flap Forward Throttle Scripting1 @@ -13188,22 +12432,22 @@ - 800 2200 - 1 PWM PWM in microseconds + 800 2200 + 1 - 800 2200 - 1 PWM PWM in microseconds + 800 2200 + 1 - 800 2200 - 1 PWM PWM in microseconds + 800 2200 + 1 @@ -13212,9 +12456,9 @@ - 0 200 PWM PWM in microseconds + 0 200 @@ -13223,7 +12467,6 @@ Camera Trigger Fence ModeAuto - Parachute Release Auto Mission Reset Retract Mount Relay On/Off @@ -13234,11 +12477,10 @@ Relay3 On/Off Relay4 On/Off ADSB Avoidance En - ArmDisarm (4.1 and lower) + ArmDisarm InvertedFlight RC Override Enable ModeManual - ModeACRO ModeGuided ModeLoiter Clear Waypoints @@ -13265,21 +12507,11 @@ VTX Power FBWA taildragger takeoff mode trigger re-reading of mode switch - ModeTraining KillIMU1 KillIMU2 Camera Mode Toggle GPS Disable Yaw Disable Airspeed Use - EnableFixedWingAutotune - ModeQRTL - CRUISE - ArmDisarm (4.2 and higher) - ArmDisarm with Quadplane AirMode (4.2 and higher) - set roll pitch and yaw trim to current servo and RC - Force FS Action to FBWA - Optflow Calibration - Weathervane Enable Flap Forward Throttle Scripting1 @@ -13295,22 +12527,22 @@ - 800 2200 - 1 PWM PWM in microseconds + 800 2200 + 1 - 800 2200 - 1 PWM PWM in microseconds + 800 2200 + 1 - 800 2200 - 1 PWM PWM in microseconds + 800 2200 + 1 @@ -13319,9 +12551,9 @@ - 0 200 PWM PWM in microseconds + 0 200 @@ -13330,7 +12562,6 @@ Camera Trigger Fence ModeAuto - Parachute Release Auto Mission Reset Retract Mount Relay On/Off @@ -13341,11 +12572,10 @@ Relay3 On/Off Relay4 On/Off ADSB Avoidance En - ArmDisarm (4.1 and lower) + ArmDisarm InvertedFlight RC Override Enable ModeManual - ModeACRO ModeGuided ModeLoiter Clear Waypoints @@ -13372,21 +12602,11 @@ VTX Power FBWA taildragger takeoff mode trigger re-reading of mode switch - ModeTraining KillIMU1 KillIMU2 Camera Mode Toggle GPS Disable Yaw Disable Airspeed Use - EnableFixedWingAutotune - ModeQRTL - CRUISE - ArmDisarm (4.2 and higher) - ArmDisarm with Quadplane AirMode (4.2 and higher) - set roll pitch and yaw trim to current servo and RC - Force FS Action to FBWA - Optflow Calibration - Weathervane Enable Flap Forward Throttle Scripting1 @@ -13402,22 +12622,22 @@ - 800 2200 - 1 PWM PWM in microseconds + 800 2200 + 1 - 800 2200 - 1 PWM PWM in microseconds + 800 2200 + 1 - 800 2200 - 1 PWM PWM in microseconds + 800 2200 + 1 @@ -13426,9 +12646,9 @@ - 0 200 PWM PWM in microseconds + 0 200 @@ -13437,7 +12657,6 @@ Camera Trigger Fence ModeAuto - Parachute Release Auto Mission Reset Retract Mount Relay On/Off @@ -13448,11 +12667,10 @@ Relay3 On/Off Relay4 On/Off ADSB Avoidance En - ArmDisarm (4.1 and lower) + ArmDisarm InvertedFlight RC Override Enable ModeManual - ModeACRO ModeGuided ModeLoiter Clear Waypoints @@ -13479,21 +12697,11 @@ VTX Power FBWA taildragger takeoff mode trigger re-reading of mode switch - ModeTraining KillIMU1 KillIMU2 Camera Mode Toggle GPS Disable Yaw Disable Airspeed Use - EnableFixedWingAutotune - ModeQRTL - CRUISE - ArmDisarm (4.2 and higher) - ArmDisarm with Quadplane AirMode (4.2 and higher) - set roll pitch and yaw trim to current servo and RC - Force FS Action to FBWA - Optflow Calibration - Weathervane Enable Flap Forward Throttle Scripting1 @@ -13509,22 +12717,22 @@ - 800 2200 - 1 PWM PWM in microseconds + 800 2200 + 1 - 800 2200 - 1 PWM PWM in microseconds + 800 2200 + 1 - 800 2200 - 1 PWM PWM in microseconds + 800 2200 + 1 @@ -13533,9 +12741,9 @@ - 0 200 PWM PWM in microseconds + 0 200 @@ -13544,7 +12752,6 @@ Camera Trigger Fence ModeAuto - Parachute Release Auto Mission Reset Retract Mount Relay On/Off @@ -13555,11 +12762,10 @@ Relay3 On/Off Relay4 On/Off ADSB Avoidance En - ArmDisarm (4.1 and lower) + ArmDisarm InvertedFlight RC Override Enable ModeManual - ModeACRO ModeGuided ModeLoiter Clear Waypoints @@ -13586,21 +12792,11 @@ VTX Power FBWA taildragger takeoff mode trigger re-reading of mode switch - ModeTraining KillIMU1 KillIMU2 Camera Mode Toggle GPS Disable Yaw Disable Airspeed Use - EnableFixedWingAutotune - ModeQRTL - CRUISE - ArmDisarm (4.2 and higher) - ArmDisarm with Quadplane AirMode (4.2 and higher) - set roll pitch and yaw trim to current servo and RC - Force FS Action to FBWA - Optflow Calibration - Weathervane Enable Flap Forward Throttle Scripting1 @@ -13616,22 +12812,22 @@ - 800 2200 - 1 PWM PWM in microseconds + 800 2200 + 1 - 800 2200 - 1 PWM PWM in microseconds + 800 2200 + 1 - 800 2200 - 1 PWM PWM in microseconds + 800 2200 + 1 @@ -13640,9 +12836,9 @@ - 0 200 PWM PWM in microseconds + 0 200 @@ -13651,7 +12847,6 @@ Camera Trigger Fence ModeAuto - Parachute Release Auto Mission Reset Retract Mount Relay On/Off @@ -13662,11 +12857,10 @@ Relay3 On/Off Relay4 On/Off ADSB Avoidance En - ArmDisarm (4.1 and lower) + ArmDisarm InvertedFlight RC Override Enable ModeManual - ModeACRO ModeGuided ModeLoiter Clear Waypoints @@ -13693,21 +12887,11 @@ VTX Power FBWA taildragger takeoff mode trigger re-reading of mode switch - ModeTraining KillIMU1 KillIMU2 Camera Mode Toggle GPS Disable Yaw Disable Airspeed Use - EnableFixedWingAutotune - ModeQRTL - CRUISE - ArmDisarm (4.2 and higher) - ArmDisarm with Quadplane AirMode (4.2 and higher) - set roll pitch and yaw trim to current servo and RC - Force FS Action to FBWA - Optflow Calibration - Weathervane Enable Flap Forward Throttle Scripting1 @@ -13723,22 +12907,22 @@ - 800 2200 - 1 PWM PWM in microseconds + 800 2200 + 1 - 800 2200 - 1 PWM PWM in microseconds + 800 2200 + 1 - 800 2200 - 1 PWM PWM in microseconds + 800 2200 + 1 @@ -13747,9 +12931,9 @@ - 0 200 PWM PWM in microseconds + 0 200 @@ -13758,7 +12942,6 @@ Camera Trigger Fence ModeAuto - Parachute Release Auto Mission Reset Retract Mount Relay On/Off @@ -13769,11 +12952,10 @@ Relay3 On/Off Relay4 On/Off ADSB Avoidance En - ArmDisarm (4.1 and lower) + ArmDisarm InvertedFlight RC Override Enable ModeManual - ModeACRO ModeGuided ModeLoiter Clear Waypoints @@ -13800,21 +12982,11 @@ VTX Power FBWA taildragger takeoff mode trigger re-reading of mode switch - ModeTraining KillIMU1 KillIMU2 Camera Mode Toggle GPS Disable Yaw Disable Airspeed Use - EnableFixedWingAutotune - ModeQRTL - CRUISE - ArmDisarm (4.2 and higher) - ArmDisarm with Quadplane AirMode (4.2 and higher) - set roll pitch and yaw trim to current servo and RC - Force FS Action to FBWA - Optflow Calibration - Weathervane Enable Flap Forward Throttle Scripting1 @@ -13830,22 +13002,22 @@ - 800 2200 - 1 PWM PWM in microseconds + 800 2200 + 1 - 800 2200 - 1 PWM PWM in microseconds + 800 2200 + 1 - 800 2200 - 1 PWM PWM in microseconds + 800 2200 + 1 @@ -13854,9 +13026,9 @@ - 0 200 PWM PWM in microseconds + 0 200 @@ -13865,7 +13037,6 @@ Camera Trigger Fence ModeAuto - Parachute Release Auto Mission Reset Retract Mount Relay On/Off @@ -13876,11 +13047,10 @@ Relay3 On/Off Relay4 On/Off ADSB Avoidance En - ArmDisarm (4.1 and lower) + ArmDisarm InvertedFlight RC Override Enable ModeManual - ModeACRO ModeGuided ModeLoiter Clear Waypoints @@ -13907,21 +13077,11 @@ VTX Power FBWA taildragger takeoff mode trigger re-reading of mode switch - ModeTraining KillIMU1 KillIMU2 Camera Mode Toggle GPS Disable Yaw Disable Airspeed Use - EnableFixedWingAutotune - ModeQRTL - CRUISE - ArmDisarm (4.2 and higher) - ArmDisarm with Quadplane AirMode (4.2 and higher) - set roll pitch and yaw trim to current servo and RC - Force FS Action to FBWA - Optflow Calibration - Weathervane Enable Flap Forward Throttle Scripting1 @@ -13972,14 +13132,6 @@ BB Blue GP0 pin 6 BB Blue GP0 pin 5 BBBMini Pin P8.17 - MainOut1 - MainOut2 - MainOut3 - MainOut4 - MainOut5 - MainOut6 - MainOut7 - MainOut8 @@ -13996,14 +13148,6 @@ BB Blue GP0 pin 6 BB Blue GP0 pin 5 BBBMini Pin P8.18 - MainOut1 - MainOut2 - MainOut3 - MainOut4 - MainOut5 - MainOut6 - MainOut7 - MainOut8 @@ -14020,14 +13164,6 @@ BB Blue GP0 pin 6 BB Blue GP0 pin 5 BBBMini Pin P8.19 - MainOut1 - MainOut2 - MainOut3 - MainOut4 - MainOut5 - MainOut6 - MainOut7 - MainOut8 @@ -14044,14 +13180,6 @@ BB Blue GP0 pin 6 BB Blue GP0 pin 5 BBBMini Pin P8.34 - MainOut1 - MainOut2 - MainOut3 - MainOut4 - MainOut5 - MainOut6 - MainOut7 - MainOut8 @@ -14075,14 +13203,6 @@ BB Blue GP0 pin 6 BB Blue GP0 pin 5 BBBMini Pin P8.13 - MainOut1 - MainOut2 - MainOut3 - MainOut4 - MainOut5 - MainOut6 - MainOut7 - MainOut8 @@ -14099,29 +13219,21 @@ BB Blue GP0 pin 6 BB Blue GP0 pin 5 BBBMini Pin P8.14 - MainOut1 - MainOut2 - MainOut3 - MainOut4 - MainOut5 - MainOut6 - MainOut7 - MainOut8 0.4 1.0 - 0.1 s seconds + 0.1 - + 0 180 - 1 deg/s degrees per second + 1 0.08 0.35 @@ -14167,7 +13279,7 @@ - + None Analog @@ -14179,7 +13291,7 @@ LightWareSerial Bebop MAVLink - USD1_Serial + uLanding LeddarOne MaxbotixSerial TeraRangerI2C @@ -14192,7 +13304,7 @@ LidarLightV3HP PWM BlueRoboticsPing - DroneCAN + UAVCAN BenewakeTFminiPlus-I2C LanbaoPSK-CM8JL65-CC5 BenewakeTF03 @@ -14202,35 +13314,31 @@ GYUS42v2 MSP USD1_CAN - Benewake_CAN SITL - + Not Used - Pixracer - Pixhawk ADC4 - Pixhawk ADC3 - Pixhawk ADC6/Pixhawk2 ADC - AUX1 - AUX2 - AUX3 - AUX4 - AUX5 - AUX6 - Pixhawk SBUS + PX4-airspeed port + Pixhawk-airspeed port + Pixhawk AUXOUT1 + Pixhawk AUXOUT2 + Pixhawk AUXOUT3 + Pixhawk AUXOUT4 + Pixhawk AUXOUT5 + Pixhawk AUXOUT6 - - 0.001 + m/V meters per volt + 0.001 - 0.001 V volt + 0.001 @@ -14240,24 +13348,24 @@ - 1 cm centimeters + 1 - 1 cm centimeters + 1 Not Used - AUX1 - AUX2 - AUX3 - AUX4 - AUX5 - AUX6 + Pixhawk AUXOUT1 + Pixhawk AUXOUT2 + Pixhawk AUXOUT3 + Pixhawk AUXOUT4 + Pixhawk AUXOUT5 + Pixhawk AUXOUT6 PX4 FMU Relay1 PX4 FMU Relay2 PX4IO Relay1 @@ -14273,37 +13381,37 @@ - 0 32767 m meters + 0 32767 - 5 127 - 1 cm centimeters + 5 127 + 1 - + 0 127 1 - -5 5 - 0.01 m meters + -5 5 + 0.01 - -5 5 - 0.01 m meters + -5 5 + 0.01 - -5 5 - 0.01 m meters + -5 5 + 0.01 @@ -14340,15 +13448,9 @@ High Speed - - 0 65535 - - - 0 65535 - - + None Analog @@ -14360,7 +13462,7 @@ LightWareSerial Bebop MAVLink - USD1_Serial + uLanding LeddarOne MaxbotixSerial TeraRangerI2C @@ -14373,7 +13475,7 @@ LidarLightV3HP PWM BlueRoboticsPing - DroneCAN + UAVCAN BenewakeTFminiPlus-I2C LanbaoPSK-CM8JL65-CC5 BenewakeTF03 @@ -14383,35 +13485,31 @@ GYUS42v2 MSP USD1_CAN - Benewake_CAN SITL - + Not Used - Pixracer - Pixhawk ADC4 - Pixhawk ADC3 - Pixhawk ADC6/Pixhawk2 ADC - AUX1 - AUX2 - AUX3 - AUX4 - AUX5 - AUX6 - Pixhawk SBUS + PX4-airspeed port + Pixhawk-airspeed port + Pixhawk AUXOUT1 + Pixhawk AUXOUT2 + Pixhawk AUXOUT3 + Pixhawk AUXOUT4 + Pixhawk AUXOUT5 + Pixhawk AUXOUT6 - - 0.001 + m/V meters per volt + 0.001 - 0.001 V volt + 0.001 @@ -14421,24 +13519,24 @@ - 1 cm centimeters + 1 - 1 cm centimeters + 1 Not Used - AUX1 - AUX2 - AUX3 - AUX4 - AUX5 - AUX6 + Pixhawk AUXOUT1 + Pixhawk AUXOUT2 + Pixhawk AUXOUT3 + Pixhawk AUXOUT4 + Pixhawk AUXOUT5 + Pixhawk AUXOUT6 PX4 FMU Relay1 PX4 FMU Relay2 PX4IO Relay1 @@ -14454,37 +13552,37 @@ - 0 32767 m meters + 0 32767 - 5 127 - 1 cm centimeters + 5 127 + 1 - + 0 127 1 - -5 5 - 0.01 m meters + -5 5 + 0.01 - -5 5 - 0.01 m meters + -5 5 + 0.01 - -5 5 - 0.01 m meters + -5 5 + 0.01 @@ -14521,15 +13619,9 @@ High Speed - - 0 65535 - - - 0 65535 - - + None Analog @@ -14541,7 +13633,7 @@ LightWareSerial Bebop MAVLink - USD1_Serial + uLanding LeddarOne MaxbotixSerial TeraRangerI2C @@ -14554,7 +13646,7 @@ LidarLightV3HP PWM BlueRoboticsPing - DroneCAN + UAVCAN BenewakeTFminiPlus-I2C LanbaoPSK-CM8JL65-CC5 BenewakeTF03 @@ -14564,35 +13656,31 @@ GYUS42v2 MSP USD1_CAN - Benewake_CAN SITL - + Not Used - Pixracer - Pixhawk ADC4 - Pixhawk ADC3 - Pixhawk ADC6/Pixhawk2 ADC - AUX1 - AUX2 - AUX3 - AUX4 - AUX5 - AUX6 - Pixhawk SBUS + PX4-airspeed port + Pixhawk-airspeed port + Pixhawk AUXOUT1 + Pixhawk AUXOUT2 + Pixhawk AUXOUT3 + Pixhawk AUXOUT4 + Pixhawk AUXOUT5 + Pixhawk AUXOUT6 - - 0.001 + m/V meters per volt + 0.001 - 0.001 V volt + 0.001 @@ -14602,24 +13690,24 @@ - 1 cm centimeters + 1 - 1 cm centimeters + 1 Not Used - AUX1 - AUX2 - AUX3 - AUX4 - AUX5 - AUX6 + Pixhawk AUXOUT1 + Pixhawk AUXOUT2 + Pixhawk AUXOUT3 + Pixhawk AUXOUT4 + Pixhawk AUXOUT5 + Pixhawk AUXOUT6 PX4 FMU Relay1 PX4 FMU Relay2 PX4IO Relay1 @@ -14635,37 +13723,37 @@ - 0 32767 m meters + 0 32767 - 5 127 - 1 cm centimeters + 5 127 + 1 - + 0 127 1 - -5 5 - 0.01 m meters + -5 5 + 0.01 - -5 5 - 0.01 m meters + -5 5 + 0.01 - -5 5 - 0.01 m meters + -5 5 + 0.01 @@ -14702,15 +13790,9 @@ High Speed - - 0 65535 - - - 0 65535 - - + None Analog @@ -14722,7 +13804,7 @@ LightWareSerial Bebop MAVLink - USD1_Serial + uLanding LeddarOne MaxbotixSerial TeraRangerI2C @@ -14735,7 +13817,7 @@ LidarLightV3HP PWM BlueRoboticsPing - DroneCAN + UAVCAN BenewakeTFminiPlus-I2C LanbaoPSK-CM8JL65-CC5 BenewakeTF03 @@ -14745,35 +13827,31 @@ GYUS42v2 MSP USD1_CAN - Benewake_CAN SITL - + Not Used - Pixracer - Pixhawk ADC4 - Pixhawk ADC3 - Pixhawk ADC6/Pixhawk2 ADC - AUX1 - AUX2 - AUX3 - AUX4 - AUX5 - AUX6 - Pixhawk SBUS + PX4-airspeed port + Pixhawk-airspeed port + Pixhawk AUXOUT1 + Pixhawk AUXOUT2 + Pixhawk AUXOUT3 + Pixhawk AUXOUT4 + Pixhawk AUXOUT5 + Pixhawk AUXOUT6 - - 0.001 + m/V meters per volt + 0.001 - 0.001 V volt + 0.001 @@ -14783,24 +13861,24 @@ - 1 cm centimeters + 1 - 1 cm centimeters + 1 Not Used - AUX1 - AUX2 - AUX3 - AUX4 - AUX5 - AUX6 + Pixhawk AUXOUT1 + Pixhawk AUXOUT2 + Pixhawk AUXOUT3 + Pixhawk AUXOUT4 + Pixhawk AUXOUT5 + Pixhawk AUXOUT6 PX4 FMU Relay1 PX4 FMU Relay2 PX4IO Relay1 @@ -14816,37 +13894,37 @@ - 0 32767 m meters + 0 32767 - 5 127 - 1 cm centimeters + 5 127 + 1 - + 0 127 1 - -5 5 - 0.01 m meters + -5 5 + 0.01 - -5 5 - 0.01 m meters + -5 5 + 0.01 - -5 5 - 0.01 m meters + -5 5 + 0.01 @@ -14883,15 +13961,9 @@ High Speed - - 0 65535 - - - 0 65535 - - + None Analog @@ -14903,7 +13975,7 @@ LightWareSerial Bebop MAVLink - USD1_Serial + uLanding LeddarOne MaxbotixSerial TeraRangerI2C @@ -14916,7 +13988,7 @@ LidarLightV3HP PWM BlueRoboticsPing - DroneCAN + UAVCAN BenewakeTFminiPlus-I2C LanbaoPSK-CM8JL65-CC5 BenewakeTF03 @@ -14926,35 +13998,31 @@ GYUS42v2 MSP USD1_CAN - Benewake_CAN SITL - + Not Used - Pixracer - Pixhawk ADC4 - Pixhawk ADC3 - Pixhawk ADC6/Pixhawk2 ADC - AUX1 - AUX2 - AUX3 - AUX4 - AUX5 - AUX6 - Pixhawk SBUS + PX4-airspeed port + Pixhawk-airspeed port + Pixhawk AUXOUT1 + Pixhawk AUXOUT2 + Pixhawk AUXOUT3 + Pixhawk AUXOUT4 + Pixhawk AUXOUT5 + Pixhawk AUXOUT6 - - 0.001 + m/V meters per volt + 0.001 - 0.001 V volt + 0.001 @@ -14964,24 +14032,24 @@ - 1 cm centimeters + 1 - 1 cm centimeters + 1 Not Used - AUX1 - AUX2 - AUX3 - AUX4 - AUX5 - AUX6 + Pixhawk AUXOUT1 + Pixhawk AUXOUT2 + Pixhawk AUXOUT3 + Pixhawk AUXOUT4 + Pixhawk AUXOUT5 + Pixhawk AUXOUT6 PX4 FMU Relay1 PX4 FMU Relay2 PX4IO Relay1 @@ -14997,37 +14065,37 @@ - 0 32767 m meters + 0 32767 - 5 127 - 1 cm centimeters + 5 127 + 1 - + 0 127 1 - -5 5 - 0.01 m meters + -5 5 + 0.01 - -5 5 - 0.01 m meters + -5 5 + 0.01 - -5 5 - 0.01 m meters + -5 5 + 0.01 @@ -15064,15 +14132,9 @@ High Speed - - 0 65535 - - - 0 65535 - - + None Analog @@ -15084,7 +14146,7 @@ LightWareSerial Bebop MAVLink - USD1_Serial + uLanding LeddarOne MaxbotixSerial TeraRangerI2C @@ -15097,7 +14159,7 @@ LidarLightV3HP PWM BlueRoboticsPing - DroneCAN + UAVCAN BenewakeTFminiPlus-I2C LanbaoPSK-CM8JL65-CC5 BenewakeTF03 @@ -15107,35 +14169,31 @@ GYUS42v2 MSP USD1_CAN - Benewake_CAN SITL - + Not Used - Pixracer - Pixhawk ADC4 - Pixhawk ADC3 - Pixhawk ADC6/Pixhawk2 ADC - AUX1 - AUX2 - AUX3 - AUX4 - AUX5 - AUX6 - Pixhawk SBUS + PX4-airspeed port + Pixhawk-airspeed port + Pixhawk AUXOUT1 + Pixhawk AUXOUT2 + Pixhawk AUXOUT3 + Pixhawk AUXOUT4 + Pixhawk AUXOUT5 + Pixhawk AUXOUT6 - - 0.001 + m/V meters per volt + 0.001 - 0.001 V volt + 0.001 @@ -15145,24 +14203,24 @@ - 1 cm centimeters + 1 - 1 cm centimeters + 1 Not Used - AUX1 - AUX2 - AUX3 - AUX4 - AUX5 - AUX6 + Pixhawk AUXOUT1 + Pixhawk AUXOUT2 + Pixhawk AUXOUT3 + Pixhawk AUXOUT4 + Pixhawk AUXOUT5 + Pixhawk AUXOUT6 PX4 FMU Relay1 PX4 FMU Relay2 PX4IO Relay1 @@ -15178,37 +14236,37 @@ - 0 32767 m meters + 0 32767 - 5 127 - 1 cm centimeters + 5 127 + 1 - + 0 127 1 - -5 5 - 0.01 m meters + -5 5 + 0.01 - -5 5 - 0.01 m meters + -5 5 + 0.01 - -5 5 - 0.01 m meters + -5 5 + 0.01 @@ -15245,15 +14303,9 @@ High Speed - - 0 65535 - - - 0 65535 - - + None Analog @@ -15265,7 +14317,7 @@ LightWareSerial Bebop MAVLink - USD1_Serial + uLanding LeddarOne MaxbotixSerial TeraRangerI2C @@ -15278,7 +14330,7 @@ LidarLightV3HP PWM BlueRoboticsPing - DroneCAN + UAVCAN BenewakeTFminiPlus-I2C LanbaoPSK-CM8JL65-CC5 BenewakeTF03 @@ -15288,35 +14340,31 @@ GYUS42v2 MSP USD1_CAN - Benewake_CAN SITL - + Not Used - Pixracer - Pixhawk ADC4 - Pixhawk ADC3 - Pixhawk ADC6/Pixhawk2 ADC - AUX1 - AUX2 - AUX3 - AUX4 - AUX5 - AUX6 - Pixhawk SBUS + PX4-airspeed port + Pixhawk-airspeed port + Pixhawk AUXOUT1 + Pixhawk AUXOUT2 + Pixhawk AUXOUT3 + Pixhawk AUXOUT4 + Pixhawk AUXOUT5 + Pixhawk AUXOUT6 - - 0.001 + m/V meters per volt + 0.001 - 0.001 V volt + 0.001 @@ -15326,24 +14374,24 @@ - 1 cm centimeters + 1 - 1 cm centimeters + 1 Not Used - AUX1 - AUX2 - AUX3 - AUX4 - AUX5 - AUX6 + Pixhawk AUXOUT1 + Pixhawk AUXOUT2 + Pixhawk AUXOUT3 + Pixhawk AUXOUT4 + Pixhawk AUXOUT5 + Pixhawk AUXOUT6 PX4 FMU Relay1 PX4 FMU Relay2 PX4IO Relay1 @@ -15359,37 +14407,37 @@ - 0 32767 m meters + 0 32767 - 5 127 - 1 cm centimeters + 5 127 + 1 - + 0 127 1 - -5 5 - 0.01 m meters + -5 5 + 0.01 - -5 5 - 0.01 m meters + -5 5 + 0.01 - -5 5 - 0.01 m meters + -5 5 + 0.01 @@ -15426,15 +14474,9 @@ High Speed - - 0 65535 - - - 0 65535 - - + None Analog @@ -15446,7 +14488,7 @@ LightWareSerial Bebop MAVLink - USD1_Serial + uLanding LeddarOne MaxbotixSerial TeraRangerI2C @@ -15459,7 +14501,7 @@ LidarLightV3HP PWM BlueRoboticsPing - DroneCAN + UAVCAN BenewakeTFminiPlus-I2C LanbaoPSK-CM8JL65-CC5 BenewakeTF03 @@ -15469,35 +14511,31 @@ GYUS42v2 MSP USD1_CAN - Benewake_CAN SITL - + Not Used - Pixracer - Pixhawk ADC4 - Pixhawk ADC3 - Pixhawk ADC6/Pixhawk2 ADC - AUX1 - AUX2 - AUX3 - AUX4 - AUX5 - AUX6 - Pixhawk SBUS + PX4-airspeed port + Pixhawk-airspeed port + Pixhawk AUXOUT1 + Pixhawk AUXOUT2 + Pixhawk AUXOUT3 + Pixhawk AUXOUT4 + Pixhawk AUXOUT5 + Pixhawk AUXOUT6 - - 0.001 + m/V meters per volt + 0.001 - 0.001 V volt + 0.001 @@ -15507,24 +14545,24 @@ - 1 cm centimeters + 1 - 1 cm centimeters + 1 Not Used - AUX1 - AUX2 - AUX3 - AUX4 - AUX5 - AUX6 + Pixhawk AUXOUT1 + Pixhawk AUXOUT2 + Pixhawk AUXOUT3 + Pixhawk AUXOUT4 + Pixhawk AUXOUT5 + Pixhawk AUXOUT6 PX4 FMU Relay1 PX4 FMU Relay2 PX4IO Relay1 @@ -15540,37 +14578,37 @@ - 0 32767 m meters + 0 32767 - 5 127 - 1 cm centimeters + 5 127 + 1 - + 0 127 1 - -5 5 - 0.01 m meters + -5 5 + 0.01 - -5 5 - 0.01 m meters + -5 5 + 0.01 - -5 5 - 0.01 m meters + -5 5 + 0.01 @@ -15607,15 +14645,9 @@ High Speed - - 0 65535 - - - 0 65535 - - + None Analog @@ -15627,7 +14659,7 @@ LightWareSerial Bebop MAVLink - USD1_Serial + uLanding LeddarOne MaxbotixSerial TeraRangerI2C @@ -15640,7 +14672,7 @@ LidarLightV3HP PWM BlueRoboticsPing - DroneCAN + UAVCAN BenewakeTFminiPlus-I2C LanbaoPSK-CM8JL65-CC5 BenewakeTF03 @@ -15650,35 +14682,31 @@ GYUS42v2 MSP USD1_CAN - Benewake_CAN SITL - + Not Used - Pixracer - Pixhawk ADC4 - Pixhawk ADC3 - Pixhawk ADC6/Pixhawk2 ADC - AUX1 - AUX2 - AUX3 - AUX4 - AUX5 - AUX6 - Pixhawk SBUS + PX4-airspeed port + Pixhawk-airspeed port + Pixhawk AUXOUT1 + Pixhawk AUXOUT2 + Pixhawk AUXOUT3 + Pixhawk AUXOUT4 + Pixhawk AUXOUT5 + Pixhawk AUXOUT6 - - 0.001 + m/V meters per volt + 0.001 - 0.001 V volt + 0.001 @@ -15688,24 +14716,24 @@ - 1 cm centimeters + 1 - 1 cm centimeters + 1 Not Used - AUX1 - AUX2 - AUX3 - AUX4 - AUX5 - AUX6 + Pixhawk AUXOUT1 + Pixhawk AUXOUT2 + Pixhawk AUXOUT3 + Pixhawk AUXOUT4 + Pixhawk AUXOUT5 + Pixhawk AUXOUT6 PX4 FMU Relay1 PX4 FMU Relay2 PX4IO Relay1 @@ -15721,37 +14749,37 @@ - 0 32767 m meters + 0 32767 - 5 127 - 1 cm centimeters + 5 127 + 1 - + 0 127 1 - -5 5 - 0.01 m meters + -5 5 + 0.01 - -5 5 - 0.01 m meters + -5 5 + 0.01 - -5 5 - 0.01 m meters + -5 5 + 0.01 @@ -15788,15 +14816,9 @@ High Speed - - 0 65535 - - - 0 65535 - - + None Analog @@ -15808,7 +14830,7 @@ LightWareSerial Bebop MAVLink - USD1_Serial + uLanding LeddarOne MaxbotixSerial TeraRangerI2C @@ -15821,7 +14843,7 @@ LidarLightV3HP PWM BlueRoboticsPing - DroneCAN + UAVCAN BenewakeTFminiPlus-I2C LanbaoPSK-CM8JL65-CC5 BenewakeTF03 @@ -15831,35 +14853,31 @@ GYUS42v2 MSP USD1_CAN - Benewake_CAN SITL - + Not Used - Pixracer - Pixhawk ADC4 - Pixhawk ADC3 - Pixhawk ADC6/Pixhawk2 ADC - AUX1 - AUX2 - AUX3 - AUX4 - AUX5 - AUX6 - Pixhawk SBUS + PX4-airspeed port + Pixhawk-airspeed port + Pixhawk AUXOUT1 + Pixhawk AUXOUT2 + Pixhawk AUXOUT3 + Pixhawk AUXOUT4 + Pixhawk AUXOUT5 + Pixhawk AUXOUT6 - - 0.001 + m/V meters per volt + 0.001 - 0.001 V volt + 0.001 @@ -15869,24 +14887,24 @@ - 1 cm centimeters + 1 - 1 cm centimeters + 1 Not Used - AUX1 - AUX2 - AUX3 - AUX4 - AUX5 - AUX6 + Pixhawk AUXOUT1 + Pixhawk AUXOUT2 + Pixhawk AUXOUT3 + Pixhawk AUXOUT4 + Pixhawk AUXOUT5 + Pixhawk AUXOUT6 PX4 FMU Relay1 PX4 FMU Relay2 PX4IO Relay1 @@ -15902,37 +14920,37 @@ - 0 32767 m meters + 0 32767 - 5 127 - 1 cm centimeters + 5 127 + 1 - + 0 127 1 - -5 5 - 0.01 m meters + -5 5 + 0.01 - -5 5 - 0.01 m meters + -5 5 + 0.01 - -5 5 - 0.01 m meters + -5 5 + 0.01 @@ -15969,88 +14987,63 @@ High Speed - - 0 65535 - - - 0 65535 - - - + + None - Not Used + PWM AUXPIN EFI Harmonic Notch - ESC Telemetry Motors Bitmask - + 0.001 - + 1 - + 1 - + 0.1 - + Disabled - AUX1 - AUX2 - AUX3 - AUX4 - AUX5 - AUX6 + PixhawkAUX1 + PixhawkAUX2 + PixhawkAUX3 + PixhawkAUX4 + PixhawkAUX5 + PixhawkAUX6 - - 0:Channel1,1:Channel2,2:Channel3,3:Channel4,4:Channel5,5:Channel6,6:Channel7,7:Channel8,8:Channel9,9:Channel10,10:Channel11,11:Channel12,12:Channel13,13:Channel14,14:Channel15,15:Channel16 - - - - + None - Not Used + PWM AUXPIN EFI Harmonic Notch - ESC Telemetry Motors Bitmask - + 0.001 - - 1 - - - 1 - - - 0.1 - - + Disabled - AUX1 - AUX2 - AUX3 - AUX4 - AUX5 - AUX6 + PixhawkAUX1 + PixhawkAUX2 + PixhawkAUX3 + PixhawkAUX4 + PixhawkAUX5 + PixhawkAUX6 - - 0:Channel1,1:Channel2,2:Channel3,3:Channel4,4:Channel5,5:Channel6,6:Channel7,7:Channel8,8:Channel9,9:Channel10,10:Channel11,11:Channel12,12:Channel13,13:Channel14,14:Channel15,15:Channel16 - @@ -16070,39 +15063,39 @@ Pixhawk ADC4 Pixhawk ADC3 Pixhawk ADC6/Pixhawk2 ADC - AUX1 - AUX2 - AUX3 - AUX4 - AUX5 - AUX6 + PixhawkAUX1 + PixhawkAUX2 + PixhawkAUX3 + PixhawkAUX4 + PixhawkAUX5 + PixhawkAUX6 Pixhawk SBUS - - 0 5.0 - 0.01 + V volt + 0.01 + 0 5.0 - - 0 5.0 - 0.01 + V volt + 0.01 + 0 5.0 0 16 - 0 2000 PWM PWM in microseconds + 0 2000 - 0 2000 PWM PWM in microseconds + 0 2000 @@ -16145,9 +15138,8 @@ 1024 True - - 0:No Scripts to run message if all scripts have stopped, 1:Runtime messages for memory usage and execution time, 2:Suppress logging scripts to dataflash, 3:log runtime memory usage and execution time - + + @@ -16155,10 +15147,6 @@ - - - - 0:ROMFS, 1:APM/scripts @@ -16221,7 +15209,7 @@ RunCam HottTelem Scripting - Crossfire VTX + Crossfire Generator Winch MSP @@ -16230,11 +15218,6 @@ ADSB AHRS SmartAudio - FETtecOneWire - Torqeedo - AIS - CoDevESC - DisplayPort True @@ -16286,7 +15269,7 @@ RunCam HottTelem Scripting - Crossfire VTX + Crossfire Generator Winch MSP @@ -16295,11 +15278,6 @@ ADSB AHRS SmartAudio - FETtecOneWire - Torqeedo - AIS - CoDevESC - DisplayPort True @@ -16351,7 +15329,7 @@ RunCam HottTelem Scripting - Crossfire VTX + Crossfire Generator Winch MSP @@ -16360,11 +15338,6 @@ ADSB AHRS SmartAudio - FETtecOneWire - Torqeedo - AIS - CoDevESC - DisplayPort True @@ -16416,7 +15389,7 @@ RunCam HottTelem Scripting - Crossfire VTX + Crossfire Generator Winch MSP @@ -16425,11 +15398,6 @@ ADSB AHRS SmartAudio - FETtecOneWire - Torqeedo - AIS - CoDevESC - DisplayPort True @@ -16481,7 +15449,7 @@ RunCam HottTelem Scripting - Crossfire VTX + Crossfire Generator Winch MSP @@ -16490,11 +15458,6 @@ ADSB AHRS SmartAudio - FETtecOneWire - Torqeedo - AIS - CoDevESC - DisplayPort True @@ -16546,7 +15509,7 @@ RunCam HottTelem Scripting - Crossfire VTX + Crossfire Generator Winch MSP @@ -16555,11 +15518,6 @@ ADSB AHRS SmartAudio - FETtecOneWire - Torqeedo - AIS - CoDevESC - DisplayPort True @@ -16583,27 +15541,27 @@ - 0:InvertRX, 1:InvertTX, 2:HalfDuplex, 3:Swap, 4: RX_PullDown, 5: RX_PullUp, 6: TX_PullDown, 7: TX_PullUp, 8: RX_NoDMA, 9: TX_NoDMA, 10: Don't forward mavlink to/from, 11: DisableFIFO, 12: Ignore Streamrate + 0:InvertRX, 1:InvertTX, 2:HalfDuplex, 3:Swap, 4: RX_PullDown, 5: RX_PullUp, 6: TX_PullDown, 7: TX_PullUp, 8: RX_NoDMA, 9: TX_NoDMA, 10: Don't forward mavlink to/from True - 0:InvertRX, 1:InvertTX, 2:HalfDuplex, 3:Swap, 4: RX_PullDown, 5: RX_PullUp, 6: TX_PullDown, 7: TX_PullUp, 8: RX_NoDMA, 9: TX_NoDMA, 10: Don't forward mavlink to/from, 11: DisableFIFO, 12: Ignore Streamrate + 0:InvertRX, 1:InvertTX, 2:HalfDuplex, 3:Swap, 4: RX_PullDown, 5: RX_PullUp, 6: TX_PullDown, 7: TX_PullUp, 8: RX_NoDMA, 9: TX_NoDMA, 10: Don't forward mavlink to/from True - 0:InvertRX, 1:InvertTX, 2:HalfDuplex, 3:Swap, 4: RX_PullDown, 5: RX_PullUp, 6: TX_PullDown, 7: TX_PullUp, 8: RX_NoDMA, 9: TX_NoDMA, 10: Don't forward mavlink to/from, 11: DisableFIFO, 12: Ignore Streamrate + 0:InvertRX, 1:InvertTX, 2:HalfDuplex, 3:Swap, 4: RX_PullDown, 5: RX_PullUp, 6: TX_PullDown, 7: TX_PullUp, 8: RX_NoDMA, 9: TX_NoDMA, 10: Don't forward mavlink to/from True - 0:InvertRX, 1:InvertTX, 2:HalfDuplex, 3:Swap, 4: RX_PullDown, 5: RX_PullUp, 6: TX_PullDown, 7: TX_PullUp, 8: RX_NoDMA, 9: TX_NoDMA, 10: Don't forward mavlink to/from, 11: DisableFIFO, 12: Ignore Streamrate + 0:InvertRX, 1:InvertTX, 2:HalfDuplex, 3:Swap, 4: RX_PullDown, 5: RX_PullUp, 6: TX_PullDown, 7: TX_PullUp, 8: RX_NoDMA, 9: TX_NoDMA, 10: Don't forward mavlink to/from True - 0:InvertRX, 1:InvertTX, 2:HalfDuplex, 3:Swap, 4: RX_PullDown, 5: RX_PullUp, 6: TX_PullDown, 7: TX_PullUp, 8: RX_NoDMA, 9: TX_NoDMA, 10: Don't forward mavlink to/from, 11: DisableFIFO, 12: Ignore Streamrate + 0:InvertRX, 1:InvertTX, 2:HalfDuplex, 3:Swap, 4: RX_PullDown, 5: RX_PullUp, 6: TX_PullDown, 7: TX_PullUp, 8: RX_NoDMA, 9: TX_NoDMA, 10: Don't forward mavlink to/from True - 0:InvertRX, 1:InvertTX, 2:HalfDuplex, 3:Swap, 4: RX_PullDown, 5: RX_PullUp, 6: TX_PullDown, 7: TX_PullUp, 8: RX_NoDMA, 9: TX_NoDMA, 10: Don't forward mavlink to/from, 11: DisableFIFO, 12: Ignore Streamrate + 0:InvertRX, 1:InvertTX, 2:HalfDuplex, 3:Swap, 4: RX_PullDown, 5: RX_PullUp, 6: TX_PullDown, 7: TX_PullUp, 8: RX_NoDMA, 9: TX_NoDMA, 10: Don't forward mavlink to/from True @@ -16664,7 +15622,7 @@ RunCam HottTelem Scripting - Crossfire VTX + Crossfire Generator Winch MSP @@ -16672,12 +15630,6 @@ AirSpeed ADSB AHRS - SmartAudio - FETtecOneWire - Torqeedo - AIS - CoDevESC - DisplayPort True @@ -16701,7 +15653,7 @@ - 0:InvertRX, 1:InvertTX, 2:HalfDuplex, 3:Swap, 4: RX_PullDown, 5: RX_PullUp, 6: TX_PullDown, 7: TX_PullUp, 8: RX_NoDMA, 9: TX_NoDMA, 10: Don't forward mavlink to/from, 11: DisableFIFO, 12: Ignore Streamrate + 0:InvertRX, 1:InvertTX, 2:HalfDuplex, 3:Swap, 4: RX_PullDown, 5: RX_PullUp, 6: TX_PullDown, 7: TX_PullUp, 8: RX_NoDMA, 9: TX_NoDMA, 10: Don't forward mavlink to/from True @@ -16733,7 +15685,7 @@ RunCam HottTelem Scripting - Crossfire VTX + Crossfire Generator Winch MSP @@ -16741,16 +15693,10 @@ AirSpeed ADSB AHRS - SmartAudio - FETtecOneWire - Torqeedo - AIS - CoDevESC - DisplayPort True - + 1200 2400 @@ -16770,76 +15716,7 @@ - 0:InvertRX, 1:InvertTX, 2:HalfDuplex, 3:Swap, 4: RX_PullDown, 5: RX_PullUp, 6: TX_PullDown, 7: TX_PullUp, 8: RX_NoDMA, 9: TX_NoDMA, 10: Don't forward mavlink to/from, 11: DisableFIFO, 12: Ignore Streamrate - True - - - - None - MAVLink1 - MAVLink2 - Frsky D - Frsky SPort - GPS - Alexmos Gimbal Serial - SToRM32 Gimbal Serial - Rangefinder - FrSky SPort Passthrough (OpenTX) - Lidar360 - Beacon - Volz servo out - SBus servo out - ESC Telemetry - Devo Telemetry - OpticalFlow - RobotisServo - NMEA Output - WindVane - SLCAN - RCIN - MegaSquirt EFI - LTM - RunCam - HottTelem - Scripting - Crossfire VTX - Generator - Winch - MSP - DJI FPV - AirSpeed - ADSB - AHRS - SmartAudio - FETtecOneWire - Torqeedo - AIS - CoDevESC - DisplayPort - - True - - - - 1200 - 2400 - 4800 - 9600 - 19200 - 38400 - 57600 - 111100 - 115200 - 230400 - 256000 - 460800 - 500000 - 921600 - 1500000 - - - - 0:InvertRX, 1:InvertTX, 2:HalfDuplex, 3:Swap, 4: RX_PullDown, 5: RX_PullUp, 6: TX_PullDown, 7: TX_PullUp, 8: RX_NoDMA, 9: TX_NoDMA, 10: Don't forward mavlink to/from, 11: DisableFIFO, 12: Ignore Streamrate + 0:InvertRX, 1:InvertTX, 2:HalfDuplex, 3:Swap, 4: RX_PullDown, 5: RX_PullUp, 6: TX_PullDown, 7: TX_PullUp, 8: RX_NoDMA, 9: TX_NoDMA, 10: Don't forward mavlink to/from True @@ -16867,33 +15744,28 @@ None - BLHeli32/Kiss - BLHeli_S + BLHeli32/BLHeli_S/Kiss - - 0:Servo 1, 1:Servo 2, 2:Servo 3, 3:Servo 4, 4:Servo 5, 5:Servo 6, 6:Servo 7, 7:Servo 8, 8:Servo 9, 9:Servo 10, 10:Servo 11, 11:Servo 12, 12:Servo 13, 13:Servo 14, 14:Servo 15, 15:Servo 16 - True - + PWM + PWM in microseconds 500 2200 1 - PWM - PWM in microseconds - 800 2200 - 1 PWM PWM in microseconds + 800 2200 + 1 - 800 2200 - 1 PWM PWM in microseconds + 800 2200 + 1 @@ -16903,7 +15775,6 @@ - GPIO Disabled RCPassThru Flap @@ -17011,29 +15882,27 @@ SERVOn_MIN SERVOn_TRIM SERVOn_MAX - Alarm - Alarm Inverted + PWM + PWM in microseconds 500 2200 1 - PWM - PWM in microseconds - 800 2200 - 1 PWM PWM in microseconds + 800 2200 + 1 - 800 2200 - 1 PWM PWM in microseconds + 800 2200 + 1 @@ -17043,7 +15912,6 @@ - GPIO Disabled RCPassThru Flap @@ -17151,29 +16019,27 @@ SERVOn_MIN SERVOn_TRIM SERVOn_MAX - Alarm - Alarm Inverted + PWM + PWM in microseconds 500 2200 1 - PWM - PWM in microseconds - 800 2200 - 1 PWM PWM in microseconds + 800 2200 + 1 - 800 2200 - 1 PWM PWM in microseconds + 800 2200 + 1 @@ -17183,7 +16049,6 @@ - GPIO Disabled RCPassThru Flap @@ -17291,29 +16156,27 @@ SERVOn_MIN SERVOn_TRIM SERVOn_MAX - Alarm - Alarm Inverted + PWM + PWM in microseconds 500 2200 1 - PWM - PWM in microseconds - 800 2200 - 1 PWM PWM in microseconds + 800 2200 + 1 - 800 2200 - 1 PWM PWM in microseconds + 800 2200 + 1 @@ -17323,7 +16186,6 @@ - GPIO Disabled RCPassThru Flap @@ -17431,29 +16293,27 @@ SERVOn_MIN SERVOn_TRIM SERVOn_MAX - Alarm - Alarm Inverted + PWM + PWM in microseconds 500 2200 1 - PWM - PWM in microseconds - 800 2200 - 1 PWM PWM in microseconds + 800 2200 + 1 - 800 2200 - 1 PWM PWM in microseconds + 800 2200 + 1 @@ -17463,7 +16323,6 @@ - GPIO Disabled RCPassThru Flap @@ -17571,29 +16430,27 @@ SERVOn_MIN SERVOn_TRIM SERVOn_MAX - Alarm - Alarm Inverted + PWM + PWM in microseconds 500 2200 1 - PWM - PWM in microseconds - 800 2200 - 1 PWM PWM in microseconds + 800 2200 + 1 - 800 2200 - 1 PWM PWM in microseconds + 800 2200 + 1 @@ -17603,7 +16460,6 @@ - GPIO Disabled RCPassThru Flap @@ -17711,29 +16567,27 @@ SERVOn_MIN SERVOn_TRIM SERVOn_MAX - Alarm - Alarm Inverted + PWM + PWM in microseconds 500 2200 1 - PWM - PWM in microseconds - 800 2200 - 1 PWM PWM in microseconds + 800 2200 + 1 - 800 2200 - 1 PWM PWM in microseconds + 800 2200 + 1 @@ -17743,7 +16597,6 @@ - GPIO Disabled RCPassThru Flap @@ -17851,29 +16704,27 @@ SERVOn_MIN SERVOn_TRIM SERVOn_MAX - Alarm - Alarm Inverted + PWM + PWM in microseconds 500 2200 1 - PWM - PWM in microseconds - 800 2200 - 1 PWM PWM in microseconds + 800 2200 + 1 - 800 2200 - 1 PWM PWM in microseconds + 800 2200 + 1 @@ -17883,7 +16734,6 @@ - GPIO Disabled RCPassThru Flap @@ -17991,29 +16841,27 @@ SERVOn_MIN SERVOn_TRIM SERVOn_MAX - Alarm - Alarm Inverted + PWM + PWM in microseconds 500 2200 1 - PWM - PWM in microseconds - 800 2200 - 1 PWM PWM in microseconds + 800 2200 + 1 - 800 2200 - 1 PWM PWM in microseconds + 800 2200 + 1 @@ -18023,7 +16871,6 @@ - GPIO Disabled RCPassThru Flap @@ -18131,29 +16978,27 @@ SERVOn_MIN SERVOn_TRIM SERVOn_MAX - Alarm - Alarm Inverted + PWM + PWM in microseconds 500 2200 1 - PWM - PWM in microseconds - 800 2200 - 1 PWM PWM in microseconds + 800 2200 + 1 - 800 2200 - 1 PWM PWM in microseconds + 800 2200 + 1 @@ -18163,7 +17008,6 @@ - GPIO Disabled RCPassThru Flap @@ -18271,29 +17115,27 @@ SERVOn_MIN SERVOn_TRIM SERVOn_MAX - Alarm - Alarm Inverted + PWM + PWM in microseconds 500 2200 1 - PWM - PWM in microseconds - 800 2200 - 1 PWM PWM in microseconds + 800 2200 + 1 - 800 2200 - 1 PWM PWM in microseconds + 800 2200 + 1 @@ -18303,7 +17145,6 @@ - GPIO Disabled RCPassThru Flap @@ -18411,29 +17252,27 @@ SERVOn_MIN SERVOn_TRIM SERVOn_MAX - Alarm - Alarm Inverted + PWM + PWM in microseconds 500 2200 1 - PWM - PWM in microseconds - 800 2200 - 1 PWM PWM in microseconds + 800 2200 + 1 - 800 2200 - 1 PWM PWM in microseconds + 800 2200 + 1 @@ -18443,7 +17282,6 @@ - GPIO Disabled RCPassThru Flap @@ -18551,29 +17389,27 @@ SERVOn_MIN SERVOn_TRIM SERVOn_MAX - Alarm - Alarm Inverted + PWM + PWM in microseconds 500 2200 1 - PWM - PWM in microseconds - 800 2200 - 1 PWM PWM in microseconds + 800 2200 + 1 - 800 2200 - 1 PWM PWM in microseconds + 800 2200 + 1 @@ -18583,7 +17419,6 @@ - GPIO Disabled RCPassThru Flap @@ -18691,29 +17526,27 @@ SERVOn_MIN SERVOn_TRIM SERVOn_MAX - Alarm - Alarm Inverted + PWM + PWM in microseconds 500 2200 1 - PWM - PWM in microseconds - 800 2200 - 1 PWM PWM in microseconds + 800 2200 + 1 - 800 2200 - 1 PWM PWM in microseconds + 800 2200 + 1 @@ -18723,7 +17556,6 @@ - GPIO Disabled RCPassThru Flap @@ -18831,29 +17663,27 @@ SERVOn_MIN SERVOn_TRIM SERVOn_MAX - Alarm - Alarm Inverted + PWM + PWM in microseconds 500 2200 1 - PWM - PWM in microseconds - 800 2200 - 1 PWM PWM in microseconds + 800 2200 + 1 - 800 2200 - 1 PWM PWM in microseconds + 800 2200 + 1 @@ -18863,7 +17693,6 @@ - GPIO Disabled RCPassThru Flap @@ -18971,29 +17800,27 @@ SERVOn_MIN SERVOn_TRIM SERVOn_MAX - Alarm - Alarm Inverted + PWM + PWM in microseconds 500 2200 1 - PWM - PWM in microseconds - 800 2200 - 1 PWM PWM in microseconds + 800 2200 + 1 - 800 2200 - 1 PWM PWM in microseconds + 800 2200 + 1 @@ -19003,7 +17830,6 @@ - GPIO Disabled RCPassThru Flap @@ -19111,22 +17937,18 @@ SERVOn_MIN SERVOn_TRIM SERVOn_MAX - Alarm - Alarm Inverted 0:Channel1,1:Channel2,2:Channel3,3:Channel4,4:Channel5,5:Channel6,6:Channel7,7:Channel8,8:Channel9,9:Channel10,10:Channel11,11:Channel12,12:Channel13,13:Channel14,14:Channel15,15:Channel16 - True Disabled Enabled - True @@ -19142,14 +17964,14 @@ - 0 300 s seconds + 0 300 - 0 500 Hz hertz + 0 500 @@ -19168,45 +17990,28 @@ DShot600 DShot1200 - True - + Console - Mavlink Serial Channel1 - Mavlink Serial Channel2 - Mavlink Serial Channel3 - Mavlink Serial Channel4 - Mavlink Serial Channel5 + Serial1 + Serial2 + Serial3 + Serial4 + Serial5 1 127 - True 0:Channel1,1:Channel2,2:Channel3,3:Channel4,4:Channel5,5:Channel6,6:Channel7,7:Channel8,8:Channel9,9:Channel10,10:Channel11,11:Channel12,12:Channel13,13:Channel14,14:Channel15,15:Channel16 - True 0:Channel1,1:Channel2,2:Channel3,3:Channel4,4:Channel5,5:Channel6,6:Channel7,7:Channel8,8:Channel9,9:Channel10,10:Channel11,11:Channel12,12:Channel13,13:Channel14,14:Channel15,15:Channel16 - True 0:Channel1,1:Channel2,2:Channel3,3:Channel4,4:Channel5,5:Channel6,6:Channel7,7:Channel8,8:Channel9,9:Channel10,10:Channel11,11:Channel12,12:Channel13,13:Channel14,14:Channel15,15:Channel16 - True - - - - - 0:SERVO1,1:SERVO2,2:SERVO3,3:SERVO4,4:SERVO5,5:SERVO6,6:SERVO7,7:SERVO8,8:SERVO9,9:SERVO10,10:SERVO11,11:SERVO12 - True - - - 0:SERVO1,1:SERVO2,2:SERVO3,3:SERVO4,4:SERVO5,5:SERVO6,6:SERVO7,7:SERVO8,8:SERVO9,9:SERVO10,10:SERVO11,11:SERVO12 - - - 2 50 @@ -19237,9 +18042,9 @@ - 0 10 m/s meters per second + 0 10 0.0001 0.01 @@ -19251,19 +18056,19 @@ 0.01 1 - 0 100 m meters + 0 100 - 0 600 s seconds + 0 600 - 0 600 s seconds + 0 600 0.005 0.5 @@ -19272,24 +18077,24 @@ 0.005 0.05 - 20 400 m.m/s/s square meter per square second + 20 400 - 0 5000.0 m meters + 0 5000.0 - 0 1000.0 m meters + 0 1000.0 - 0 5000.0 m meters + 0 5000.0 0 1000 @@ -19302,518 +18107,439 @@ deg degrees - - 5 50 - - - 5 50 - - - 0 100 - - 0 50 - 1 Hz hertz - True + 0 50 + 1 - 0 50 - 1 Hz hertz - True + 0 50 + 1 - 0 50 - 1 Hz hertz - True + 0 50 + 1 - 0 50 - 1 Hz hertz - True + 0 50 + 1 - 0 50 - 1 Hz hertz - True + 0 50 + 1 - 0 50 - 1 Hz hertz - True + 0 50 + 1 - 0 50 - 1 Hz hertz - True + 0 50 + 1 - 0 50 - 1 Hz hertz - True + 0 50 + 1 - 0 50 - 1 Hz hertz - True + 0 50 + 1 - 0 50 - 1 Hz hertz - True + 0 50 + 1 - 0 50 - 1 Hz hertz - True + 0 50 + 1 - 0 50 - 1 Hz hertz - True + 0 50 + 1 - 0 50 - 1 Hz hertz - True + 0 50 + 1 - 0 50 - 1 Hz hertz - True + 0 50 + 1 - 0 50 - 1 Hz hertz - True + 0 50 + 1 - 0 50 - 1 Hz hertz - True + 0 50 + 1 - 0 50 - 1 Hz hertz - True + 0 50 + 1 - 0 50 - 1 Hz hertz - True + 0 50 + 1 - 0 50 - 1 Hz hertz - True + 0 50 + 1 - 0 50 - 1 Hz hertz - True + 0 50 + 1 - 0 50 - 1 Hz hertz - True + 0 50 + 1 - 0 50 - 1 Hz hertz - True + 0 50 + 1 - 0 50 - 1 Hz hertz - True + 0 50 + 1 - 0 50 - 1 Hz hertz - True + 0 50 + 1 - 0 50 - 1 Hz hertz - True + 0 50 + 1 - 0 50 - 1 Hz hertz - True + 0 50 + 1 - 0 50 - 1 Hz hertz - True + 0 50 + 1 - 0 50 - 1 Hz hertz - True + 0 50 + 1 - 0 50 - 1 Hz hertz - True + 0 50 + 1 - 0 50 - 1 Hz hertz - True + 0 50 + 1 - 0 50 - 1 Hz hertz - True + 0 50 + 1 - 0 50 - 1 Hz hertz - True + 0 50 + 1 - 0 50 - 1 Hz hertz - True + 0 50 + 1 - 0 50 - 1 Hz hertz - True + 0 50 + 1 - 0 50 - 1 Hz hertz - True + 0 50 + 1 - 0 50 - 1 Hz hertz - True + 0 50 + 1 - 0 50 - 1 Hz hertz - True + 0 50 + 1 - 0 50 - 1 Hz hertz - True + 0 50 + 1 - 0 50 - 1 Hz hertz - True + 0 50 + 1 - 0 50 - 1 Hz hertz - True + 0 50 + 1 - 0 50 - 1 Hz hertz - True + 0 50 + 1 - 0 50 - 1 Hz hertz - True + 0 50 + 1 - 0 50 - 1 Hz hertz - True + 0 50 + 1 - 0 50 - 1 Hz hertz - True + 0 50 + 1 - 0 50 - 1 Hz hertz - True + 0 50 + 1 - 0 50 - 1 Hz hertz - True + 0 50 + 1 - 0 50 - 1 Hz hertz - True + 0 50 + 1 - 0 50 - 1 Hz hertz - True + 0 50 + 1 - 0 50 - 1 Hz hertz - True + 0 50 + 1 - 0 50 - 1 Hz hertz - True + 0 50 + 1 - 0 50 - 1 Hz hertz - True + 0 50 + 1 - 0 50 - 1 Hz hertz - True + 0 50 + 1 - 0 50 - 1 Hz hertz - True + 0 50 + 1 - 0 50 - 1 Hz hertz - True + 0 50 + 1 - 0 50 - 1 Hz hertz - True + 0 50 + 1 - 0 50 - 1 Hz hertz - True + 0 50 + 1 - 0 50 - 1 Hz hertz - True + 0 50 + 1 - 0 50 - 1 Hz hertz - True + 0 50 + 1 - 0 50 - 1 Hz hertz - True + 0 50 + 1 - 0 50 - 1 Hz hertz - True + 0 50 + 1 - 0 50 - 1 Hz hertz - True + 0 50 + 1 - 0 50 - 1 Hz hertz - True + 0 50 + 1 - 0 50 - 1 Hz hertz - True + 0 50 + 1 - 0 50 - 1 Hz hertz - True + 0 50 + 1 - 0 50 - 1 Hz hertz - True + 0 50 + 1 - 0 50 - 1 Hz hertz - True + 0 50 + 1 - 0 50 - 1 Hz hertz - True + 0 50 + 1 - 0 50 - 1 Hz hertz - True + 0 50 + 1 - 0 50 - 1 Hz hertz - True + 0 50 + 1 - 0 50 - 1 Hz hertz - True + 0 50 + 1 @@ -19821,27 +18547,27 @@ True - True s seconds + True - True s seconds + True - True s seconds + True 0.4 1.0 - 0.1 s seconds + 0.1 0.1 10.0 @@ -19892,12 +18618,12 @@ - 0.1 20.0 0.1 + 0.1 20.0 - 0.1 10.0 0.1 + 0.1 10.0 3.0 10.0 @@ -19936,8 +18662,8 @@ 0.1 - 0.0 20.0 0.1 + 0.0 20.0 -1 127 @@ -19977,15 +18703,15 @@ 0.0 20.0 - 0.1 m/s meters per second + 0.1 -2.0 2.0 - 0.1 m/s/m meters per second per meter + 0.1 0.1 1.0 @@ -20027,23 +18753,13 @@ - 1 m meters + 1 0:Disable Download - - 0.05 50000 - m - meters - - - 0 50 - m - meters - @@ -20098,9 +18814,6 @@ AccelZP AccelZI AccelZD - RatePitchFF - RateRollFF - RateYawFF FixedWingRollP FixedWingRollI FixedWingRollD @@ -20170,7 +18883,7 @@ Enable - + 0 1 @@ -20180,27 +18893,26 @@ None MAVLink IntelT265 - VOXL(ModalAI) True - -5 5 - 0.01 m meters + -5 5 + 0.01 - -5 5 - 0.01 m meters + -5 5 + 0.01 - -5 5 - 0.01 m meters + -5 5 + 0.01 @@ -20215,24 +18927,24 @@ - 0 250 ms milliseconds + 0 250 - 0.05 5.0 m/s meters per second + 0.05 5.0 - 0.1 10.0 m meters + 0.1 10.0 - 0.05 1.0 rad radians + 0.05 1.0 @@ -20259,8 +18971,8 @@ - 5000 6000 True + 5000 6000 0:Pitmode,1:Pitmode until armed,2:Pitmode when disarmed,3:Unlocked,4:Add leading zero byte to requests @@ -20269,7 +18981,7 @@ 25 1000 - + 0 4 0.25 @@ -20290,54 +19002,6 @@ 0 4500 1 - - - Disable - Enable - - - - 0.08 0.35 - 0.005 - - - 0.01 0.6 - 0.01 - - - 0 1 - 0.01 - - - 0.001 0.03 - 0.001 - - - 0 3.0 - 0.001 - - - 2 50 - 1 - Hz - hertz - - - 2 50 - 1 - Hz - hertz - - - 0 50 - 1 - Hz - hertz - - - 0 200 - 0.5 - diff --git a/src/FirmwarePlugin/APM/APMParameterFactMetaData.Rover.3.4.xml b/src/FirmwarePlugin/APM/APMParameterFactMetaData.Rover.3.4.xml new file mode 100644 index 0000000..304e358 --- /dev/null +++ b/src/FirmwarePlugin/APM/APMParameterFactMetaData.Rover.3.4.xml @@ -0,0 +1,7224 @@ + + + + + + + + +0:ATTITUDE_FAST,1:ATTITUDE_MED,2:GPS,3:PM,4:THR,5:NTUN,7:IMU,8:CMD,9:CURRENT,10:RANGEFINDER,11:COMPASS,12:CAMERA,13:STEERING,14:RC,15:ARM/DISARM,19:IMU_RAW + +Disabled +APM2-Default +PX4/Pixhawk-Default + + + + + + +MANUAL +ACRO +STEERING +HOLD +LOITER +AUTO +RTL +GUIDED + + + +1 255 + + +1 255 + + +0 30 +1 +s +seconds + + +0:Steering,1:Throttle + +None +Steering +Throttle + + + + +Disabled +Enabled + + + + +Disabled +APM TriggerPin0 +APM TriggerPin1 +APM TriggerPin2 +APM TriggerPin3 +APM TriggerPin4 +APM TriggerPin5 +APM TriggerPin6 +APM TriggerPin7 +APM TriggerPin8 +Pixhawk TriggerPin50 +Pixhawk TriggerPin51 +Pixhawk TriggerPin52 +Pixhawk TriggerPin53 +Pixhawk TriggerPin54 +Pixhawk TriggerPin55 + + + +0 20 +0.1 +m/s/s +meters per square second + + +0 100 +0.1 +m/s +meters per second + + +0 360 +1 +deg +degrees + + + +Nothing +SaveWaypoint +LearnCruiseSpeed +ArmDisarm +Manual +Acro +Steering +Hold +Auto +RTL +SmartRTL +Guided +Loiter + + + +0 100 +1 +% +percent + + + +Default +Two Paddles Input +Direction reversed when backing up +Direction unchanged when backing up + + + + +Nothing +RTL +Hold +SmartRTL or RTL +SmartRTL or Hold + + + +s +seconds + + + +Disabled +Enabled + + + +910 1100 +1 + + + +Disabled +Enabled + + + + +Disabled +Hold +HoldAndDisarm + + + +0 1000 +1 +cm +centimeters + + +-450 450 +1 +deg +degrees + + +0 100 +0.1 +s +seconds + + +1 100 +1 + + + + + + + +Manual +Acro +Steering +Hold +Loiter +Auto +RTL +SmartRTL +Guided + + + + +Manual +Acro +Steering +Hold +Loiter +Auto +RTL +SmartRTL +Guided + + + + +Manual +Acro +Steering +Hold +Loiter +Auto +RTL +SmartRTL +Guided + + + + +Manual +Acro +Steering +Hold +Loiter +Auto +RTL +SmartRTL +Guided + + + + +Manual +Acro +Steering +Hold +Loiter +Auto +RTL +SmartRTL +Guided + + + + +Manual +Acro +Steering +Hold +Loiter +Auto +RTL +SmartRTL +Guided + + + +0 1000 +0.1 +m +meters + + +0 10 +0.1 +m +meters + + +0.1 10 +0.01 +gravities +standard acceleration due to gravity + + + +NotEnforced +Enforced + + + +0 10 +0.1 +m +meters + + +0 360 +1 +deg/s +degrees per second + + +0 100 +0.1 +m/s +meters per second + + +0 100 +0.1 +m/s +meters per second + + + +Undefined +Rover +Boat + + + +0 360 +1 +deg/s +degrees per second + + + + + + + + + + + + + + + + + + + + +m +meters + + +m +meters + + +mbar +millibar + + + + + + + + + + + + + + +s +seconds + + + + +0.0 1.0 +.01 + + + +Disabled +Enabled + + + +0.1 0.4 +.01 + + +0.1 0.4 +.01 + + +0 127 +1 +m/s +meters per second + + +-0.1745 +0.1745 +0.01 +rad +radians + + +-0.1745 +0.1745 +0.01 +rad +radians + + +-0.1745 +0.1745 +0.01 +rad +radians + + + +None +Yaw45 +Yaw90 +Yaw135 +Yaw180 +Yaw225 +Yaw270 +Yaw315 +Roll180 +Roll180Yaw45 +Roll180Yaw90 +Roll180Yaw135 +Pitch180 +Roll180Yaw225 +Roll180Yaw270 +Roll180Yaw315 +Roll90 +Roll90Yaw45 +Roll90Yaw90 +Roll90Yaw135 +Roll270 +Roll270Yaw45 +Roll270Yaw90 +Roll270Yaw135 +Pitch90 +Pitch270 +Pitch180Yaw90 +Pitch180Yaw270 +Roll90Pitch90 +Roll180Pitch90 +Roll270Pitch90 +Roll90Pitch180 +Roll270Pitch180 +Roll90Pitch270 +Roll180Pitch270 +Roll270Pitch270 +Roll90Pitch180Yaw90 +Roll90Yaw270 +Yaw293Pitch68Roll180 +Pitch315 +Roll90Pitch315 +Custom + + + +0.001 0.5 +.01 + + +0 10 +1 + + + +Disabled +Enable EKF2 +Enable EKF3 + + + +-180 180 +1 +deg +degrees + + +-180 180 +1 +deg +degrees + + +-180 180 +1 +deg +degrees + + + + + +Disabled +THR_MIN PWM when disarmed +0 PWM when disarmed + + + +0:All,1:Barometer,2:Compass,3:GPS lock,4:INS,5:Parameters,6:RC Channels,7:Board voltage,8:Battery Level,10:Logging Available,11:Hardware safety switch,12:GPS Configuration + +None +All +Barometer +Compass +GPS Lock +INS(INertial Sensors - accels & gyros) +Parameters(unused) +RC Channels +Board voltage +Battery Level +LoggingAvailable +Hardware safety switch +GPS configuration + + + +0.25 3.0 +m/s/s +meters per square second + + +0.1 +V +volt + + +0.1 +V +volt + + + + +0.000 2.000 +0.01 + + +0.000 2.000 +0.01 + + +0.000 1.000 +0.01 + + +0.000 0.400 +0.001 + + +0.000 3.000 +0.001 + + +0.000 100.000 +0.1 +Hz +hertz + + +0.010 2.000 +0.01 + + +0.000 2.000 + + +0.000 1.000 +0.01 + + +0.000 0.400 +0.001 + + +0.000 0.500 +0.001 + + +0.000 100.000 +0.1 +Hz +hertz + + +0.0 10.0 +0.1 +m/s/s +meters per square second + + + +Disable +Enable + + + +0.00 0.50 +0.01 +m/s +meters per second + + +1.000 10.000 +0.1 + + +0 1000 +0.1 +deg/s/s +degrees per square second + + +0 1000 +0.1 +deg/s +degrees per second + + +0.0 10.0 +0.1 +m/s/s +meters per square second + + + + +0:StopAtFence,1:UseProximitySensor,2:StopAtBeaconFence + +None +StopAtFence +UseProximitySensor +StopAtFence and UseProximitySensor +StopAtBeaconFence +All + + + +0 4500 +cdeg +centidegrees + + +1 30 +m +meters + + +1 10 +m +meters + + + +Slide +Stop + + + + + + +Disabled +Analog Voltage Only +Analog Voltage and Current +Solo +Bebop +SMBus-Maxell +UAVCAN-BatteryInfo + +True + + + +Disabled +A0 +A1 +Pixhawk/Pixracer/Navio2/Pixhawk2_PM1 +Pixhawk2_PM2 +PX4-v1 + +True + + + +Disabled +A1 +A2 +Pixhawk/Pixracer/Navio2/Pixhawk2_PM1 +Pixhawk2_PM2 +PX4-v1 + +True + + + + +A/V +ampere per volt + + +V +volt + + +50 +mAh +milliampere hour + + +1 +W +watt + + + + +0 120 +1 +s +seconds + + + +Raw Voltage +Sag Compensated Voltage + + + +0.1 +V +volt + + +50 +mAh +milliampere hour + + +0.1 +V +volt + + +50 +mAh +milliampere hour + + + +None +RTL +Hold +SmartRTL +SmartRTL or Hold +Terminate + + + + +None +RTL +Hold +SmartRTL +SmartRTL or Hold +Terminate + + + + + + +Disabled +Analog Voltage Only +Analog Voltage and Current +Solo +Bebop +SMBus-Maxell +UAVCAN-BatteryInfo + +True + + + +Disabled +A0 +A1 +Pixhawk/Pixracer/Navio2/Pixhawk2_PM1 +Pixhawk2_PM2 +PX4-v1 + +True + + + +Disabled +A1 +A2 +Pixhawk/Pixracer/Navio2/Pixhawk2_PM1 +Pixhawk2_PM2 +PX4-v1 + +True + + + + +A/V +ampere per volt + + +V +volt + + +50 +mAh +milliampere hour + + +1 +W +watt + + + + +0 120 +1 +s +seconds + + + +Raw Voltage +Sag Compensated Voltage + + + +0.1 +V +volt + + +50 +mAh +milliampere hour + + +0.1 +V +volt + + +50 +mAh +milliampere hour + + + +None +RTL +Hold +SmartRTL +SmartRTL or Hold +Terminate + + + + +None +RTL +Hold +SmartRTL +SmartRTL or Hold +Terminate + + + + + + +None +Pozyx +Marvelmind + + + +-90 90 +0.000001 +deg +degrees + + +-180 180 +0.000001 +deg +degrees + + +0 10000 +1 +m +meters + + +-180 +180 +1 +deg +degrees + + + + + +No PWMs +Two PWMs +Four PWMs +Six PWMs +Three PWMs and One Capture + +True + + + +Disabled +Enabled +Auto + +True + + + +Disabled +Enabled +Auto + +True + + + +Disabled +Enabled + +True + + + +Disabled +50Hz +75Hz +100Hz +150Hz +200Hz +250Hz +300Hz + +True + + +-32768 32767 + + +0:Ch1,1:Ch2,2:Ch3,3:Ch4,4:Ch5,5:Ch6,6:Ch7,7:Ch8,8:Ch9,9:Ch10,10:Ch11,11:Ch12,12:Ch13,13:Ch14 + +Disabled +Enabled + +True + + +-1 80 +degC +degrees Celsius + + + +AUTO +PX4V1 +Pixhawk +Cube/Pixhawk2 +Pixracer +PixhawkMini +Pixhawk2Slim +VRBrain 5.1 +VRBrain 5.2 +VR Micro Brain 5.1 +VR Micro Brain 5.2 +VRBrain Core 1.0 +VRBrain 5.4 +Intel Aero FC +AUAV2.1 + +True + + + +Disabled +Enabled + +True + + +0:ActiveForSafetyEnable,1:ActiveForSafetyDisable,2:ActiveWhenArmed + + + + + +None +CYRF6936 + + + + +Auto +DSM2 +DSMX + + + +0 4 + + + +NotDisabled +Disabled + + + +0 16 + + +0 16 + + + +Disabled +Enabled + + + +1 8 + + + +Disabled +MinChannel +MidChannel +MaxChannel +MinChannelCW +MidChannelCW +MaxChannelCW + + + + +Mode1 +Mode2 + + + + +Disabled +TestChan1 +TestChan2 +TestChan3 +TestChan4 +TestChan5 +TestChan6 +TestChan7 +TestChan8 + + + +0 16 + + +0 16 + + +1 8 + + +0 40 + + +0 120 + + +0 31 + + + + +0:GPS,1:MAVLINK_SYSTEM_TIME,2:HW + + + + + +Disabled +Enabled + + + + +Disabled +Pixhawk AUXOUT1 +Pixhawk AUXOUT2 +Pixhawk AUXOUT3 +Pixhawk AUXOUT4 +Pixhawk AUXOUT5 +Pixhawk AUXOUT6 +PX4 FMU Relay1 +PX4 FMU Relay2 +PX4IO Relay1 +PX4IO Relay2 +PX4IO ACC1 +PX4IO ACC2 + + + + +Disabled +Pixhawk AUXOUT1 +Pixhawk AUXOUT2 +Pixhawk AUXOUT3 +Pixhawk AUXOUT4 +Pixhawk AUXOUT5 +Pixhawk AUXOUT6 +PX4 FMU Relay1 +PX4 FMU Relay2 +PX4IO Relay1 +PX4IO Relay2 +PX4IO ACC1 +PX4IO ACC2 + + + + +Disabled +Pixhawk AUXOUT1 +Pixhawk AUXOUT2 +Pixhawk AUXOUT3 +Pixhawk AUXOUT4 +Pixhawk AUXOUT5 +Pixhawk AUXOUT6 +PX4 FMU Relay1 +PX4 FMU Relay2 +PX4IO Relay1 +PX4IO Relay2 +PX4IO ACC1 +PX4IO ACC2 + + + + +Disabled +Pixhawk AUXOUT1 +Pixhawk AUXOUT2 +Pixhawk AUXOUT3 +Pixhawk AUXOUT4 +Pixhawk AUXOUT5 +Pixhawk AUXOUT6 +PX4 FMU Relay1 +PX4 FMU Relay2 +PX4IO Relay1 +PX4IO Relay2 +PX4IO ACC1 +PX4IO ACC2 + + + +0 3600 + + + + + +Servo +Relay + + + +0 50 +ds +deciseconds + + +1000 2000 +PWM +PWM in microseconds + + +1000 2000 +PWM +PWM in microseconds + + +0 1000 +m +meters + + + +Low +High + + + +0 10000 +ms +milliseconds + + +0 180 +deg +degrees + + + +Disabled +PX4 AUX1 +PX4 AUX2 +PX4 AUX3 +PX4 AUX4(fast capture) +PX4 AUX5 +PX4 AUX6 + + + + +TriggerLow +TriggerHigh + + + + +Always +Only when in AUTO + + + + + + +Disabled +UAVCAN + +True + + + + +1 250 + + +0: Servo 1, 1: Servo 2, 2: Servo 3, 3: Servo 4, 4: Servo 5, 5: Servo 6, 6: Servo 7, 7: Servo 8, 8: Servo 9, 9: Servo 10, 10: Servo 11, 11: Servo 12, 12: Servo 13, 13: Servo 14, 14: Servo 15 + + +0: ESC 1, 1: ESC 2, 2: ESC 3, 3: ESC 4, 4: ESC 5, 5: ESC 6, 6: ESC 7, 7: ESC 8, 8: ESC 9, 9: ESC 10, 10: ESC 11, 11: ESC 12, 12: ESC 13, 13: ESC 14, 14: ESC 15, 15: ESC 16 + + +1 200 +Hz +hertz + + + + + +Disabled +UAVCAN + +True + + + + +1 250 + + +0: Servo 1, 1: Servo 2, 2: Servo 3, 3: Servo 4, 4: Servo 5, 5: Servo 6, 6: Servo 7, 7: Servo 8, 8: Servo 9, 9: Servo 10, 10: Servo 11, 11: Servo 12, 12: Servo 13, 13: Servo 14, 14: Servo 15 + + +0: ESC 1, 1: ESC 2, 2: ESC 3, 3: ESC 4, 4: ESC 5, 5: ESC 6, 6: ESC 7, 7: ESC 8, 8: ESC 9, 9: ESC 10, 10: ESC 11, 11: ESC 12, 12: ESC 13, 13: ESC 14, 14: ESC 15, 15: ESC 16 + + +1 200 +Hz +hertz + + + + + +Disabled +UAVCAN + +True + + + + +1 250 + + +0: Servo 1, 1: Servo 2, 2: Servo 3, 3: Servo 4, 4: Servo 5, 5: Servo 6, 6: Servo 7, 7: Servo 8, 8: Servo 9, 9: Servo 10, 10: Servo 11, 11: Servo 12, 12: Servo 13, 13: Servo 14, 14: Servo 15 + + +0: ESC 1, 1: ESC 2, 2: ESC 3, 3: ESC 4, 4: ESC 5, 5: ESC 6, 6: ESC 7, 7: ESC 8, 8: ESC 9, 9: ESC 10, 10: ESC 11, 11: ESC 12, 12: ESC 13, 13: ESC 14, 14: ESC 15, 15: ESC 16 + + +1 200 +Hz +hertz + + + + + +Disabled +First driver +Second driver + +True + + +10000 1000000 + + + +Disabled +Major messages +All messages + + + + + + +Disabled +First driver +Second driver + +True + + +10000 1000000 + + + +Disabled +Major messages +All messages + + + + + + +Disabled +First driver +Second driver + +True + + +10000 1000000 + + + +Disabled +Major messages +All messages + + + + + +-400 400 +1 +mGauss +milligauss + + +-400 400 +1 +mGauss +milligauss + + +-400 400 +1 +mGauss +milligauss + + +-3.142 3.142 +0.01 +rad +radians + + + +Disabled +Internal-Learning +EKF-Learning + + + + +Disabled +Enabled + + + + +Disabled +Enabled + + + + +Disabled +Use Throttle +Use Current + + + +-1000 1000 +1 +mGauss/A +milligauss per ampere + + +-1000 1000 +1 +mGauss/A +milligauss per ampere + + +-1000 1000 +1 +mGauss/A +milligauss per ampere + + + +None +Yaw45 +Yaw90 +Yaw135 +Yaw180 +Yaw225 +Yaw270 +Yaw315 +Roll180 +Roll180Yaw45 +Roll180Yaw90 +Roll180Yaw135 +Pitch180 +Roll180Yaw225 +Roll180Yaw270 +Roll180Yaw315 +Roll90 +Roll90Yaw45 +Roll90Yaw90 +Roll90Yaw135 +Roll270 +Roll270Yaw45 +Roll270Yaw90 +Roll270Yaw135 +Pitch90 +Pitch270 +Pitch180Yaw90 +Pitch180Yaw270 +Roll90Pitch90 +Roll180Pitch90 +Roll270Pitch90 +Roll90Pitch180 +Roll270Pitch180 +Roll90Pitch270 +Roll180Pitch270 +Roll270Pitch270 +Roll90Pitch180Yaw90 +Roll90Yaw270 +Yaw293Pitch68Roll180 +Pitch315 +Roll90Pitch315 + + + + +Internal +External +ForcedExternal + + + +-400 400 +1 +mGauss +milligauss + + +-400 400 +1 +mGauss +milligauss + + +-400 400 +1 +mGauss +milligauss + + +-1000 1000 +1 +mGauss/A +milligauss per ampere + + +-1000 1000 +1 +mGauss/A +milligauss per ampere + + +-1000 1000 +1 +mGauss/A +milligauss per ampere + + + +FirstCompass +SecondCompass +ThirdCompass + + + +-400 400 +1 +mGauss +milligauss + + +-400 400 +1 +mGauss +milligauss + + +-400 400 +1 +mGauss +milligauss + + +-1000 1000 +1 +mGauss/A +milligauss per ampere + + +-1000 1000 +1 +mGauss/A +milligauss per ampere + + +-1000 1000 +1 +mGauss/A +milligauss per ampere + + + + + + + + + +Disabled +Enabled + + + + +None +Yaw45 +Yaw90 +Yaw135 +Yaw180 +Yaw225 +Yaw270 +Yaw315 +Roll180 +Roll180Yaw45 +Roll180Yaw90 +Roll180Yaw135 +Pitch180 +Roll180Yaw225 +Roll180Yaw270 +Roll180Yaw315 +Roll90 +Roll90Yaw45 +Roll90Yaw90 +Roll90Yaw135 +Roll270 +Roll270Yaw45 +Roll270Yaw90 +Roll270Yaw135 +Pitch90 +Pitch270 +Pitch180Yaw90 +Pitch180Yaw270 +Roll90Pitch90 +Roll180Pitch90 +Roll270Pitch90 +Roll90Pitch180 +Roll270Pitch180 +Roll90Pitch270 +Roll180Pitch270 +Roll270Pitch270 +Roll90Pitch180Yaw90 +Roll90Yaw270 +Yaw293Pitch68Roll180 +Pitch315 +Roll90Pitch315 + + + + +Internal +External +ForcedExternal + + + + +Disabled +Enabled + + + + +None +Yaw45 +Yaw90 +Yaw135 +Yaw180 +Yaw225 +Yaw270 +Yaw315 +Roll180 +Roll180Yaw45 +Roll180Yaw90 +Roll180Yaw135 +Pitch180 +Roll180Yaw225 +Roll180Yaw270 +Roll180Yaw315 +Roll90 +Roll90Yaw45 +Roll90Yaw90 +Roll90Yaw135 +Roll270 +Roll270Yaw45 +Roll270Yaw90 +Roll270Yaw135 +Pitch90 +Pitch270 +Pitch180Yaw90 +Pitch180Yaw270 +Roll90Pitch90 +Roll180Pitch90 +Roll270Pitch90 +Roll90Pitch180 +Roll270Pitch180 +Roll90Pitch270 +Roll180Pitch270 +Roll270Pitch270 +Roll90Pitch180Yaw90 +Roll90Yaw270 +Yaw293Pitch68Roll180 +Pitch315 +Roll90Pitch315 + + + + +Internal +External +ForcedExternal + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +4 32 + +Very Strict +Strict +Default +Relaxed + +0.1 + + +500 3000 +1 + + +0:HMC5883,1:LSM303D,2:AK8963,3:BMM150,4:LSM9DS1,5:LIS3MDL,6:AK09916,7:IST8310,8:ICM20948,9:MMC3416,11:UAVCAN,12:QMC5883 + + +0 100 +1 +% +percent + + + + + +Disabled +Enabled + + + +0 2 +0.01 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Disabled +Enabled + +True + + + +GPS 3D Vel and 2D Pos +GPS 2D vel and 2D pos +GPS 2D pos +No GPS + + + +0.05 5.0 +0.05 +m/s +meters per second + + +0.05 5.0 +0.05 +m/s +meters per second + + +100 1000 +25 + + +0.1 10.0 +0.1 +m +meters + + +100 1000 +25 + + +10 100 +5 +m +meters + + +0 250 +10 +ms +milliseconds +True + + + +Use Baro +Use Range Finder +Use GPS +Use Range Beacon + +True + + +0.1 10.0 +0.1 +m +meters + + +100 1000 +25 + + +0 250 +10 +ms +milliseconds +True + + +0.01 0.5 +0.01 +Gauss +gauss + + + +When flying +When manoeuvring +Never +After first climb yaw reset +Always + + + +100 1000 +25 + + +0.5 5.0 +0.1 +m/s +meters per second + + +100 1000 +25 + + +0.1 10.0 +0.1 +m +meters + + +100 1000 +25 + + +1.0 4.0 +0.1 +rad/s +radians per second + + +0.05 1.0 +0.05 +rad/s +radians per second + + +100 1000 +25 + + +0 127 +10 +ms +milliseconds +True + + +0.0001 0.1 +0.0001 +rad/s +radians per second + + +0.01 1.0 +0.01 +m/s/s +meters per square second + + +0.00001 0.001 +rad/s/s +radians per square second + + +0.000001 0.001 +Hz +hertz + + +0.00001 0.001 +m/s/s/s +meters per cubic second + + +0.01 1.0 +0.1 +m/s/s +meters per square second + + +0.0 1.0 +0.1 + + +0:NSats,1:HDoP,2:speed error,3:position error,4:yaw error,5:pos drift,6:vert speed,7:horiz speed + + +0:FirstIMU,1:SecondIMU,2:ThirdIMU,3:FourthIMU,4:FifthIMU,5:SixthIMU +True + + +50 200 +% +percent + + +0.5 50.0 +m +meters + + +0:FirstIMU,1:SecondIMU,2:ThirdIMU,3:FourthIMU,4:FifthIMU,5:SixthIMU +True + + +0.05 1.0 +0.05 +rad +radians + + +100 1000 +25 + + +10 50 +5 +cs +centiseconds + + +0.00001 0.01 +Gauss/s +gauss per second + + +0.00001 0.01 +Gauss/s +gauss per second + + +-1 70 +1 +% +percent + + +0 0.2 +0.01 + + +0.1 10.0 +0.1 +m +meters + + +100 1000 +25 + + +0 127 +10 +ms +milliseconds +True + + +2.0 6.0 +0.5 +m/s +meters per second + + +0:FirstEKF,1:SecondEKF,2:ThirdEKF,3:FourthEKF,4:FifthEKF,5:SixthEKF +True + + +0:Correct when using Baro height,1:Correct when using range finder height,2:Apply corrections to local position +True + + + + + +Disabled +Enabled + +True + + + +GPS 3D Vel and 2D Pos +GPS 2D vel and 2D pos +GPS 2D pos +No GPS + + + +0.05 5.0 +0.05 +m/s +meters per second + + +0.05 5.0 +0.05 +m/s +meters per second + + +100 1000 +25 + + +0.1 10.0 +0.1 +m +meters + + +100 1000 +25 + + +10 100 +5 +m +meters + + + +Use Baro +Use Range Finder +Use GPS +Use Range Beacon + +True + + +0.1 10.0 +0.1 +m +meters + + +100 1000 +25 + + +0 250 +10 +ms +milliseconds +True + + +0.01 0.5 +0.01 +Gauss +gauss + + + +When flying +When manoeuvring +Never +After first climb yaw reset +Always + +True + + +100 1000 +25 + + +0.5 5.0 +0.1 +m/s +meters per second + + +100 1000 +25 + + +0.1 10.0 +0.1 +m +meters + + +100 1000 +25 + + +1.0 4.0 +0.1 +rad/s +radians per second + + +0.05 1.0 +0.05 +rad/s +radians per second + + +100 1000 +25 + + +0 250 +10 +ms +milliseconds +True + + +0.0001 0.1 +0.0001 +rad/s +radians per second + + +0.01 1.0 +0.01 +m/s/s +meters per square second + + +0.00001 0.001 +rad/s/s +radians per square second + + +0.00001 0.001 +m/s/s/s +meters per cubic second + + +0.01 1.0 +0.1 +m/s/s +meters per square second + + +0.0 1.0 +0.1 + + +0:NSats,1:HDoP,2:speed error,3:position error,4:yaw error,5:pos drift,6:vert speed,7:horiz speed + + +0:FirstIMU,1:SecondIMU,2:ThirdIMU,3:FourthIMU,4:FifthIMU,5:SixthIMU +True + + +50 200 +% +percent + + +0.5 50.0 +m +meters + + +0:FirstIMU,1:SecondIMU,2:ThirdIMU,3:FourthIMU,4:FifthIMU,5:SixthIMU +True + + +0.05 1.0 +0.05 +rad +radians + + +100 1000 +25 + + +10 50 +5 +cs +centiseconds + + +0.00001 0.01 +Gauss/s +gauss per second + + +0.00001 0.01 +Gauss/s +gauss per second + + +-1 70 +1 +% +percent + + +0 0.2 +0.01 + + +0.1 10.0 +0.1 +m +meters + + +100 1000 +25 + + +0 250 +10 +ms +milliseconds +True + + +2.0 6.0 +0.5 +m/s +meters per second + + +0.5 2.5 +0.1 +m/s/s +meters per square second + + +0:FirstEKF,1:SecondEKF,2:ThirdEKF,3:FourthEKF,4:FifthEKF,5:SixthEKF +True + + +0:Correct when using Baro height,1:Correct when using range finder height,2:Apply corrections to local position +True + + +0.05 0.5 +0.05 +m/s +meters per second + + +0.5 5.0 +0.1 +m/s +meters per second + + +0.01 1.0 +0.1 +m/s +meters per second + + + + + +Disabled +Enabled + + + +0:Altitude,1:Circle,2:Polygon + +None +Altitude +Circle +Altitude and Circle +Polygon +Altitude and Polygon +Circle and Polygon +All + + + + +Report Only +RTL or Land + + + +10 1000 +1 +m +meters + + +30 10000 +m +meters + + +1 10 +m +meters + + +1 20 + + +-100 100 +1 +m +meters + + + + +True +True +1 +Pa +pascal + + +True +1 +degC +degrees Celsius + + +0.1 +m +meters + + + +FirstBaro +2ndBaro +3rdBaro + + + + +Disabled +Bus0 +Bus1 + + + +1.0:Freshwater,1.024:Saltwater + + +True +True +1 +Pa +pascal + + +True +True +1 +Pa +pascal + + +0 100 +1 +% +percent + + + + + +None +AUTO +uBlox +MTK +MTK19 +NMEA +SiRF +HIL +SwiftNav +UAVCAN +SBF +GSOF +ERB +MAV +NOVA + +True + + + +None +AUTO +uBlox +MTK +MTK19 +NMEA +SiRF +HIL +SwiftNav +UAVCAN +SBF +GSOF +ERB +MAV +NOVA + +True + + + +Portable +Stationary +Pedestrian +Automotive +Sea +Airborne1G +Airborne2G +Airborne4G + + + + +Disabled +UseBest +Blend + + + + +Any +FloatRTK +IntegerRTK + +True + + + +Disabled +Enabled +NoChange + + + +-100 90 +deg +degrees + + + +send to first GPS +send to 2nd GPS +send to all + + + + +None (0x0000) +All (0xFFFF) +External only (0xFF00) + + + + +Ignore +Always log +Stop logging when disarmed (SBF only) +Only log every five samples (uBlox only) + +True + + +0:GPS,1:SBAS,2:Galileo,3:Beidou,4:IMES,5:QZSS,6:GLOSNASS + +Leave as currently configured +GPS-NoSBAS +GPS+SBAS +Galileo-NoSBAS +Galileo+SBAS +Beidou +GPS+IMES+QZSS+SBAS (Japan Only) +GLONASS +GLONASS+SBAS +GPS+GLONASS+SBAS + + + + +Do not save config +Save config +Save only when needed + + + +0:GPS,1:SBAS,2:Galileo,3:Beidou,4:IMES,5:QZSS,6:GLOSNASS + +Leave as currently configured +GPS-NoSBAS +GPS+SBAS +Galileo-NoSBAS +Galileo+SBAS +Beidou +GPS+IMES+QZSS+SBAS (Japan Only) +GLONASS +GLONASS+SBAS +GPS+GLONASS+SBAS + + + + +Disables automatic configuration +Enable automatic configuration + + + +50 200 + +10Hz +8Hz +5Hz + +ms +milliseconds + + +50 200 + +10Hz +8Hz +5Hz + +ms +milliseconds + + +m +meters + + +m +meters + + +m +meters + + +m +meters + + +m +meters + + +m +meters + + +0 250 +ms +milliseconds +True + + +0 250 +ms +milliseconds +True + + +0:Horiz Pos,1:Vert Pos,2:Speed + + +5.0 30.0 +s +seconds + + + + + + +rad/s +radians per second + + +rad/s +radians per second + + +rad/s +radians per second + + +rad/s +radians per second + + +rad/s +radians per second + + +rad/s +radians per second + + +rad/s +radians per second + + +rad/s +radians per second + + +rad/s +radians per second + + +0.8 1.2 + + +0.8 1.2 + + +0.8 1.2 + + +-3.5 3.5 +m/s/s +meters per square second + + +-3.5 3.5 +m/s/s +meters per square second + + +-3.5 3.5 +m/s/s +meters per square second + + +0.8 1.2 + + +0.8 1.2 + + +0.8 1.2 + + +-3.5 3.5 +m/s/s +meters per square second + + +-3.5 3.5 +m/s/s +meters per square second + + +-3.5 3.5 +m/s/s +meters per square second + + +0.8 1.2 + + +0.8 1.2 + + +0.8 1.2 + + +-3.5 3.5 +m/s/s +meters per square second + + +-3.5 3.5 +m/s/s +meters per square second + + +-3.5 3.5 +m/s/s +meters per square second + + +0 127 +Hz +hertz + + +0 127 +Hz +hertz + + + +Disabled +Enabled + + + + +Disabled +Enabled + + + + +Disabled +Enabled + + + +0.05 50 + + + +Never +Start-up only + + + + +Don't adjust the trims +Assume first orientation was level +Assume ACC_BODYFIX is perfectly aligned to the vehicle + + + + +IMU 1 +IMU 2 +IMU 3 + + + +m +meters + + +m +meters + + +m +meters + + +m +meters + + +m +meters + + +m +meters + + +m +meters + + +m +meters + + +m +meters + + +True + + +True + + +True + + +True + + +True + + +True + + +0:FirstIMU,1:SecondIMU,2:ThirdIMU + +FirstIMUOnly +FirstAndSecondIMU + + + + + +32 + + +0:IMU1,1:IMU2,2:IMU3 + +None +First IMU +All + + + +0:Sensor-Rate Logging (sample at full sensor rate seen by AP) + + +ms +milliseconds +10 + + +1 + + + + + +Disabled +Enabled + + + +10 200 +Hz +hertz + + +5 50 +Hz +hertz + + +5 30 +dB +decibel + + + + + +None +File +MAVLink +BothFileAndMAVLink + + + + + + +Disabled +Enabled + + + + +Disabled +Enabled + + + + +Disabled +Enabled + + + +kB +kilobytes + + + + +0 32766 +1 + + + +Resume Mission +Restart Mission + + + +0:Clear Mission on reboot + + + + + +Retracted +Neutral +MavLink Targeting +RC Targeting +GPS Point + + + +-180.00 179.99 +1 +deg +degrees + + +-180.00 179.99 +1 +deg +degrees + + +-180.00 179.99 +1 +deg +degrees + + +-180.00 179.99 +1 +deg +degrees + + +-180.00 179.99 +1 +deg +degrees + + +-180.00 179.99 +1 +deg +degrees + + + +Disabled +Enabled + + + + +Disabled +Enabled + + + + +Disabled +Enabled + + + + +Disabled +RC5 +RC6 +RC7 +RC8 +RC9 +RC10 +RC11 +RC12 + + + +-18000 17999 +1 +cdeg +centidegrees + + +-18000 17999 +1 +cdeg +centidegrees + + + +Disabled +RC5 +RC6 +RC7 +RC8 +RC9 +RC10 +RC11 +RC12 + + + +-18000 17999 +1 +cdeg +centidegrees + + +-18000 17999 +1 +cdeg +centidegrees + + + +Disabled +RC5 +RC6 +RC7 +RC8 +RC9 +RC10 +RC11 +RC12 + + + +-18000 17999 +1 +cdeg +centidegrees + + +-18000 17999 +1 +cdeg +centidegrees + + +0 100 +1 + + +0.0 0.2 +.005 +s +seconds + + +0.0 0.2 +.005 +s +seconds + + + +None +Servo +3DR Solo +Alexmos Serial +SToRM32 MAVLink +SToRM32 Serial + +True + + + +Retracted +Neutral +MavLink Targeting +RC Targeting +GPS Point + + + +-180.00 179.99 +1 +deg +degrees + + +-180.00 179.99 +1 +deg +degrees + + +-180.00 179.99 +1 +deg +degrees + + +-180.00 179.99 +1 +deg +degrees + + +-180.00 179.99 +1 +deg +degrees + + +-180.00 179.99 +1 +deg +degrees + + + +Disabled +Enabled + + + + +Disabled +Enabled + + + + +Disabled +Enabled + + + + +Disabled +RC5 +RC6 +RC7 +RC8 +RC9 +RC10 +RC11 +RC12 + + + +-18000 17999 +1 +cdeg +centidegrees + + +-18000 17999 +1 +cdeg +centidegrees + + + +Disabled +RC5 +RC6 +RC7 +RC8 +RC9 +RC10 +RC11 +RC12 + + + +-18000 17999 +1 +cdeg +centidegrees + + +-18000 17999 +1 +cdeg +centidegrees + + + +Disabled +RC5 +RC6 +RC7 +RC8 +RC9 +RC10 +RC11 +RC12 + + + +-18000 17999 +1 +cdeg +centidegrees + + +-18000 17999 +1 +cdeg +centidegrees + + +0.0 0.2 +.005 +s +seconds + + +0.0 0.2 +.005 +s +seconds + + + +None +Servo +3DR Solo +Alexmos Serial +SToRM32 MAVLink +SToRM32 Serial + + + + + + +Normal +OneShot +OneShot125 +BrushedWithRelay +BrushedBiPolar + +True + + +1 20 +1 +kHz +kilohertz +True + + + +PWM enabled while disarmed +PWM disabled while disarmed + + + +0 20 +1 +% +percent + + +30 100 +1 +% +percent + + +0 1000 +1 +%/s +percent per second + + +-1.0 1.0 + + +0 100 +% +percent + + +0 10 +m/s +meters per second + + + + +1 60 +1 +s +seconds + + +0.6 1.0 +0.05 + + +0 0.1 +0.01 + + +0 89 +deg +degrees + + + + + +Off +Low +Medium +High + + + + +Disable +Enable + + + + +Disable +Enable + + + + +Disable +ssd1306 +sh1106 + + + + +Disabled +Aircraft +Rover + + + + +Disabled + + + + + + +None +LightWareSF40C +MAVLink +TeraRangerTower +RangeFinder +RPLidarA2 + +True + + + +Default +Upside Down + + + +-180 180 +deg +degrees + + +0 360 +deg +degrees + + +0 45 +deg +degrees + + +0 360 +deg +degrees + + +0 45 +deg +degrees + + +0 360 +deg +degrees + + +0 45 +deg +degrees + + +0 360 +deg +degrees + + +0 45 +deg +degrees + + +0 360 +deg +degrees + + +0 45 +deg +degrees + + +0 360 +deg +degrees + + +0 45 +deg +degrees + + + +None +LightWareSF40C +MAVLink +TeraRangerTower +RangeFinder +RPLidarA2 + +True + + + +Default +Upside Down + + + +-180 180 +deg +degrees + + + + +0.0 120.0 +s +seconds + + + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + + +Normal +Reversed + + + +0 200 +PWM +PWM in microseconds + + + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + + +Normal +Reversed + + + +0 200 +PWM +PWM in microseconds + + + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + + +Normal +Reversed + + + +0 200 +PWM +PWM in microseconds + + + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + + +Normal +Reversed + + + +0 200 +PWM +PWM in microseconds + + + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + + +Normal +Reversed + + + +0 200 +PWM +PWM in microseconds + + + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + + +Normal +Reversed + + + +0 200 +PWM +PWM in microseconds + + + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + + +Normal +Reversed + + + +0 200 +PWM +PWM in microseconds + + + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + + +Normal +Reversed + + + +0 200 +PWM +PWM in microseconds + + + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + + +Normal +Reversed + + + +0 200 +PWM +PWM in microseconds + + + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + + +Normal +Reversed + + + +0 200 +PWM +PWM in microseconds + + + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + + +Normal +Reversed + + + +0 200 +PWM +PWM in microseconds + + + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + + +Normal +Reversed + + + +0 200 +PWM +PWM in microseconds + + + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + + +Normal +Reversed + + + +0 200 +PWM +PWM in microseconds + + + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + + +Normal +Reversed + + + +0 200 +PWM +PWM in microseconds + + + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + + +Normal +Reversed + + + +0 200 +PWM +PWM in microseconds + + + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + + +Normal +Reversed + + + +0 200 +PWM +PWM in microseconds + + + + +1 8 +1 +True + + +1 8 +1 +True + + +1 8 +1 +True + + +1 8 +1 +True + + +1 8 +1 +True + + +1 8 +1 +True + + + + + +Disabled +APM2 A9 pin +APM1 relay +BB Blue GP0 pin 4 +Pixhawk AUXOUT1 +Pixhawk AUXOUT2 +Pixhawk AUXOUT3 +Pixhawk AUXOUT4 +Pixhawk AUXOUT5 +Pixhawk AUXOUT6 +BB Blue GP0 pin 3 +PX4 FMU Relay1 +PX4 FMU Relay2 +PX4IO Relay1/BB Blue GP0 pin 6 +PX4IO Relay2 +PX4IO ACC1 +PX4IO ACC2/BB Blue GP0 pin 5 + + + + +Disabled +APM2 A9 pin +APM1 relay +BB Blue GP0 pin 4 +Pixhawk AUXOUT1 +Pixhawk AUXOUT2 +Pixhawk AUXOUT3 +Pixhawk AUXOUT4 +Pixhawk AUXOUT5 +Pixhawk AUXOUT6 +BB Blue GP0 pin 3 +PX4 FMU Relay1 +PX4 FMU Relay2 +PX4IO Relay1/BB Blue GP0 pin 6 +PX4IO Relay2 +PX4IO ACC1 +PX4IO ACC2/BB Blue GP0 pin 5 + + + + +Disabled +APM2 A9 pin +APM1 relay +BB Blue GP0 pin 4 +Pixhawk AUXOUT1 +Pixhawk AUXOUT2 +Pixhawk AUXOUT3 +Pixhawk AUXOUT4 +Pixhawk AUXOUT5 +Pixhawk AUXOUT6 +BB Blue GP0 pin 3 +PX4 FMU Relay1 +PX4 FMU Relay2 +PX4IO Relay1/BB Blue GP0 pin 6 +PX4IO Relay2 +PX4IO ACC1 +PX4IO ACC2/BB Blue GP0 pin 5 + + + + +Disabled +APM2 A9 pin +APM1 relay +BB Blue GP0 pin 4 +Pixhawk AUXOUT1 +Pixhawk AUXOUT2 +Pixhawk AUXOUT3 +Pixhawk AUXOUT4 +Pixhawk AUXOUT5 +Pixhawk AUXOUT6 +BB Blue GP0 pin 3 +PX4 FMU Relay1 +PX4 FMU Relay2 +PX4IO Relay1/BB Blue GP0 pin 6 +PX4IO Relay2 +PX4IO ACC1 +PX4IO ACC2/BB Blue GP0 pin 5 + + + + +Off +On +NoChange + + + + + + +None +Analog +MaxbotixI2C +LidarLiteV2-I2C +PX4-PWM +BBB-PRU +LightWareI2C +LightWareSerial +Bebop +MAVLink +uLanding +LeddarOne +MaxbotixSerial +TeraRangerI2C +LidarLiteV3-I2C +VL53L0X +NMEA +WASP-LRF +BenewakeTF02 +BenewakeTFmini + + + + +Not Used +APM2-A0 +APM2-A1 +APM2-A2 +APM2-A3 +APM2-A4 +APM2-A5 +APM2-A6 +APM2-A7 +APM2-A8 +APM2-A9 +PX4-airspeed port +Pixhawk-airspeed port +APM1-airspeed port + + + +0.001 +m/V +meters per volt + + +0.001 +V +volt + + + +Linear +Inverted +Hyperbolic + + + +1 +cm +centimeters + + +1 +cm +centimeters + + + +Not Used +Pixhawk AUXOUT1 +Pixhawk AUXOUT2 +Pixhawk AUXOUT3 +Pixhawk AUXOUT4 +Pixhawk AUXOUT5 +Pixhawk AUXOUT6 +PX4 FMU Relay1 +PX4 FMU Relay2 +PX4IO Relay1 +PX4IO Relay2 +PX4IO ACC1 +PX4IO ACC2 + + + +1 +ms +milliseconds + + + +No +Yes + + + +0 32767 +m +meters + + +5 127 +1 +cm +centimeters + + +0 127 +1 + + +m +meters + + +m +meters + + +m +meters + + + +Forward +Forward-Right +Right +Back-Right +Back +Back-Left +Left +Forward-Left +Up +Down + + + + +None +Analog +MaxbotixI2C +LidarLiteV2-I2C +PX4-PWM +BBB-PRU +LightWareI2C +LightWareSerial +Bebop +MAVLink +uLanding +LeddarOne +MaxbotixSerial +TeraRangerI2C +LidarLiteV3-I2C +VL53L0X +NMEA +WASP-LRF +BenewakeTF02 +BenewakeTFmini + + + + +Not Used +APM2-A0 +APM2-A1 +APM2-A2 +APM2-A3 +APM2-A4 +APM2-A5 +APM2-A6 +APM2-A7 +APM2-A8 +APM2-A9 +PX4-airspeed port +Pixhawk-airspeed port +APM1-airspeed port + + + +0.001 +m/V +meters per volt + + +0.001 +V +volt + + + +Linear +Inverted +Hyperbolic + + + +1 +cm +centimeters + + +1 +cm +centimeters + + + +Not Used +Pixhawk AUXOUT1 +Pixhawk AUXOUT2 +Pixhawk AUXOUT3 +Pixhawk AUXOUT4 +Pixhawk AUXOUT5 +Pixhawk AUXOUT6 +PX4 FMU Relay1 +PX4 FMU Relay2 +PX4IO Relay1 +PX4IO Relay2 +PX4IO ACC1 +PX4IO ACC2 + + + +1 +ms +milliseconds + + + +No +Yes + + + +0 127 +1 +cm +centimeters + + +0 127 +1 + + +m +meters + + +m +meters + + +m +meters + + + +Forward +Forward-Right +Right +Back-Right +Back +Back-Left +Left +Forward-Left +Up +Down + + + + +None +Analog +MaxbotixI2C +LidarLiteV2-I2C +PX4-PWM +BBB-PRU +LightWareI2C +LightWareSerial +Bebop +MAVLink +uLanding +LeddarOne +MaxbotixSerial +TeraRangerI2C +LidarLiteV3-I2C +VL53L0X +NMEA +WASP-LRF +BenewakeTF02 +BenewakeTFmini + + + + +Not Used +APM2-A0 +APM2-A1 +APM2-A2 +APM2-A3 +APM2-A4 +APM2-A5 +APM2-A6 +APM2-A7 +APM2-A8 +APM2-A9 +PX4-airspeed port +Pixhawk-airspeed port +APM1-airspeed port + + + +0.001 +m/V +meters per volt + + +0.001 +V +volt + + + +Linear +Inverted +Hyperbolic + + + +1 +cm +centimeters + + +1 +cm +centimeters + + + +Not Used +Pixhawk AUXOUT1 +Pixhawk AUXOUT2 +Pixhawk AUXOUT3 +Pixhawk AUXOUT4 +Pixhawk AUXOUT5 +Pixhawk AUXOUT6 +PX4 FMU Relay1 +PX4 FMU Relay2 +PX4IO Relay1 +PX4IO Relay2 +PX4IO ACC1 +PX4IO ACC2 + + + +1 +ms +milliseconds + + + +No +Yes + + + +0 127 +1 +cm +centimeters + + +0 127 +1 + + +m +meters + + +m +meters + + +m +meters + + + +Forward +Forward-Right +Right +Back-Right +Back +Back-Left +Left +Forward-Left +Up +Down + + + + +None +Analog +MaxbotixI2C +LidarLiteV2-I2C +PX4-PWM +BBB-PRU +LightWareI2C +LightWareSerial +Bebop +MAVLink +uLanding +LeddarOne +MaxbotixSerial +TeraRangerI2C +LidarLiteV3-I2C +VL53L0X +NMEA +WASP-LRF +BenewakeTF02 +BenewakeTFmini + + + + +Not Used +APM2-A0 +APM2-A1 +APM2-A2 +APM2-A3 +APM2-A4 +APM2-A5 +APM2-A6 +APM2-A7 +APM2-A8 +APM2-A9 +PX4-airspeed port +Pixhawk-airspeed port +APM1-airspeed port + + + +0.001 +m/V +meters per volt + + +0.001 +V +volt + + + +Linear +Inverted +Hyperbolic + + + +1 +cm +centimeters + + +1 +cm +centimeters + + + +Not Used +Pixhawk AUXOUT1 +Pixhawk AUXOUT2 +Pixhawk AUXOUT3 +Pixhawk AUXOUT4 +Pixhawk AUXOUT5 +Pixhawk AUXOUT6 +PX4 FMU Relay1 +PX4 FMU Relay2 +PX4IO Relay1 +PX4IO Relay2 +PX4IO ACC1 +PX4IO ACC2 + + + +1 +ms +milliseconds + + + +No +Yes + + + +0 127 +1 +cm +centimeters + + +0 127 +1 + + +m +meters + + +m +meters + + +m +meters + + + +Forward +Forward-Right +Right +Back-Right +Back +Back-Left +Left +Forward-Left +Up +Down + + + + + +0 255 + + +0 255 + + +0 10000 + + +0 255 + + +-1 255 + + + +Low Speed +High Speed + + + + + +0 255 + + +0 255 + + +0 10000 + + +0 255 + + +-1 255 + + + +Low Speed +High Speed + + + + + +0 255 + + +0 255 + + +0 10000 + + +0 255 + + +-1 255 + + + +Low Speed +High Speed + + + + + +0 255 + + +0 255 + + +0 10000 + + +0 255 + + +-1 255 + + + +Low Speed +High Speed + + + + + + +Disabled +AnalogPin +RCChannelPwmValue +ReceiverProtocol + + + + +APM2 A0 +APM2 A1 +APM2 A13 +Pixracer +Pixhawk ADC4 +Pixhawk ADC3 +Pixhawk ADC6 +Pixhawk SBUS +Pixhawk2 ADC + + + +0 5.0 +0.01 +V +volt + + +0 5.0 +0.01 +V +volt + + + + +0 2000 +PWM +PWM in microseconds + + +0 2000 +PWM +PWM in microseconds + + + + + +Disabled +ShowSlips +ShowOverruns + + + + +50Hz +100Hz +200Hz +250Hz +300Hz +400Hz + +True + + + + + +1200 +2400 +4800 +9600 +19200 +38400 +57600 +111100 +115200 +460800 +500000 +921600 +1500000 + + + + +MAVlink1 +MAVLink2 + +True + + + +None +MAVLink1 +MAVLink2 +Frsky D +Frsky SPort +GPS +Alexmos Gimbal Serial +SToRM32 Gimbal Serial +Rangefinder +FrSky SPort Passthrough (OpenTX) +Lidar360 +Beacon +Volz servo out +SBus servo out +ESC Telemetry +Devo Telemetry + +True + + + +1200 +2400 +4800 +9600 +19200 +38400 +57600 +111100 +115200 +500000 +921600 +1500000 + + + + +None +MAVLink1 +MAVLink2 +Frsky D +Frsky SPort +GPS +Alexmos Gimbal Serial +SToRM32 Gimbal Serial +Rangefinder +FrSky SPort Passthrough (OpenTX) +Lidar360 +Beacon +Volz servo out +SBus servo out +ESC Telemetry +Devo Telemetry + +True + + + +1200 +2400 +4800 +9600 +19200 +38400 +57600 +111100 +115200 +500000 +921600 +1500000 + + + + +None +MAVLink1 +MAVLink2 +Frsky D +Frsky SPort +GPS +Alexmos Gimbal Serial +SToRM32 Gimbal Serial +Rangefinder +FrSky SPort Passthrough (OpenTX) +Lidar360 +Beacon +Volz servo out +SBus servo out +ESC Telemetry +Devo Telemetry + +True + + + +1200 +2400 +4800 +9600 +19200 +38400 +57600 +111100 +115200 +500000 +921600 +1500000 + + + + +None +MAVLink1 +MAVLink2 +Frsky D +Frsky SPort +GPS +Alexmos Gimbal Serial +SToRM32 Gimbal Serial +Rangefinder +FrSky SPort Passthrough (OpenTX) +Lidar360 +Beacon +Volz servo out +SBus servo out +ESC Telemetry +Devo Telemetry + +True + + + +1200 +2400 +4800 +9600 +19200 +38400 +57600 +111100 +115200 +500000 +921600 +1500000 + + + + +None +MAVLink1 +MAVLink2 +Frsky D +Frsky SPort +GPS +Alexmos Gimbal Serial +SToRM32 Gimbal Serial +Rangefinder +FrSky SPort Passthrough (OpenTX) +Lidar360 +Beacon +Volz servo out +SBus servo out +ESC Telemetry +Devo Telemetry + +True + + + +1200 +2400 +4800 +9600 +19200 +38400 +57600 +111100 +115200 +500000 +921600 +1500000 + + + + + + +Disable +Enable + + + +25 400 +Hz +hertz + + + + +500 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + + +Normal +Reversed + + + + +Disabled +RCPassThru +Flap +Flap_auto +Aileron +mount_pan +mount_tilt +mount_roll +mount_open +camera_trigger +release +mount2_pan +mount2_tilt +mount2_roll +mount2_open +DifferentialSpoilerLeft1 +DifferentialSpoilerRight1 +DifferentialSpoilerLeft2 +DifferentialSpoilerRight2 +Elevator +Rudder +FlaperonLeft +FlaperonRight +GroundSteering +Parachute +EPM +LandingGear +EngineRunEnable +HeliRSC +HeliTailRSC +Motor1 +Motor2 +Motor3 +Motor4 +Motor5 +Motor6 +Motor7 +Motor8 +MotorTilt +RCIN1 +RCIN2 +RCIN3 +RCIN4 +RCIN5 +RCIN6 +RCIN7 +RCIN8 +RCIN9 +RCIN10 +RCIN11 +RCIN12 +RCIN13 +RCIN14 +RCIN15 +RCIN16 +Ignition +Choke +Starter +Throttle +TrackerYaw +TrackerPitch +ThrottleLeft +ThrottleRight +tiltMotorLeft +tiltMotorRight +ElevonLeft +ElevonRight +VTailLeft +VTailRight +BoostThrottle +Motor9 +Motor10 +Motor11 +Motor12 +Winch + + + + + +500 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + + +Normal +Reversed + + + + +Disabled +RCPassThru +Flap +Flap_auto +Aileron +mount_pan +mount_tilt +mount_roll +mount_open +camera_trigger +release +mount2_pan +mount2_tilt +mount2_roll +mount2_open +DifferentialSpoilerLeft1 +DifferentialSpoilerRight1 +DifferentialSpoilerLeft2 +DifferentialSpoilerRight2 +Elevator +Rudder +FlaperonLeft +FlaperonRight +GroundSteering +Parachute +EPM +LandingGear +EngineRunEnable +HeliRSC +HeliTailRSC +Motor1 +Motor2 +Motor3 +Motor4 +Motor5 +Motor6 +Motor7 +Motor8 +MotorTilt +RCIN1 +RCIN2 +RCIN3 +RCIN4 +RCIN5 +RCIN6 +RCIN7 +RCIN8 +RCIN9 +RCIN10 +RCIN11 +RCIN12 +RCIN13 +RCIN14 +RCIN15 +RCIN16 +Ignition +Choke +Starter +Throttle +TrackerYaw +TrackerPitch +ThrottleLeft +ThrottleRight +tiltMotorLeft +tiltMotorRight +ElevonLeft +ElevonRight +VTailLeft +VTailRight +BoostThrottle +Motor9 +Motor10 +Motor11 +Motor12 +Winch + + + + + +500 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + + +Normal +Reversed + + + + +Disabled +RCPassThru +Flap +Flap_auto +Aileron +mount_pan +mount_tilt +mount_roll +mount_open +camera_trigger +release +mount2_pan +mount2_tilt +mount2_roll +mount2_open +DifferentialSpoilerLeft1 +DifferentialSpoilerRight1 +DifferentialSpoilerLeft2 +DifferentialSpoilerRight2 +Elevator +Rudder +FlaperonLeft +FlaperonRight +GroundSteering +Parachute +EPM +LandingGear +EngineRunEnable +HeliRSC +HeliTailRSC +Motor1 +Motor2 +Motor3 +Motor4 +Motor5 +Motor6 +Motor7 +Motor8 +MotorTilt +RCIN1 +RCIN2 +RCIN3 +RCIN4 +RCIN5 +RCIN6 +RCIN7 +RCIN8 +RCIN9 +RCIN10 +RCIN11 +RCIN12 +RCIN13 +RCIN14 +RCIN15 +RCIN16 +Ignition +Choke +Starter +Throttle +TrackerYaw +TrackerPitch +ThrottleLeft +ThrottleRight +tiltMotorLeft +tiltMotorRight +ElevonLeft +ElevonRight +VTailLeft +VTailRight +BoostThrottle +Motor9 +Motor10 +Motor11 +Motor12 +Winch + + + + + +500 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + + +Normal +Reversed + + + + +Disabled +RCPassThru +Flap +Flap_auto +Aileron +mount_pan +mount_tilt +mount_roll +mount_open +camera_trigger +release +mount2_pan +mount2_tilt +mount2_roll +mount2_open +DifferentialSpoilerLeft1 +DifferentialSpoilerRight1 +DifferentialSpoilerLeft2 +DifferentialSpoilerRight2 +Elevator +Rudder +FlaperonLeft +FlaperonRight +GroundSteering +Parachute +EPM +LandingGear +EngineRunEnable +HeliRSC +HeliTailRSC +Motor1 +Motor2 +Motor3 +Motor4 +Motor5 +Motor6 +Motor7 +Motor8 +MotorTilt +RCIN1 +RCIN2 +RCIN3 +RCIN4 +RCIN5 +RCIN6 +RCIN7 +RCIN8 +RCIN9 +RCIN10 +RCIN11 +RCIN12 +RCIN13 +RCIN14 +RCIN15 +RCIN16 +Ignition +Choke +Starter +Throttle +TrackerYaw +TrackerPitch +ThrottleLeft +ThrottleRight +tiltMotorLeft +tiltMotorRight +ElevonLeft +ElevonRight +VTailLeft +VTailRight +BoostThrottle +Motor9 +Motor10 +Motor11 +Motor12 +Winch + + + + + +500 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + + +Normal +Reversed + + + + +Disabled +RCPassThru +Flap +Flap_auto +Aileron +mount_pan +mount_tilt +mount_roll +mount_open +camera_trigger +release +mount2_pan +mount2_tilt +mount2_roll +mount2_open +DifferentialSpoilerLeft1 +DifferentialSpoilerRight1 +DifferentialSpoilerLeft2 +DifferentialSpoilerRight2 +Elevator +Rudder +FlaperonLeft +FlaperonRight +GroundSteering +Parachute +EPM +LandingGear +EngineRunEnable +HeliRSC +HeliTailRSC +Motor1 +Motor2 +Motor3 +Motor4 +Motor5 +Motor6 +Motor7 +Motor8 +MotorTilt +RCIN1 +RCIN2 +RCIN3 +RCIN4 +RCIN5 +RCIN6 +RCIN7 +RCIN8 +RCIN9 +RCIN10 +RCIN11 +RCIN12 +RCIN13 +RCIN14 +RCIN15 +RCIN16 +Ignition +Choke +Starter +Throttle +TrackerYaw +TrackerPitch +ThrottleLeft +ThrottleRight +tiltMotorLeft +tiltMotorRight +ElevonLeft +ElevonRight +VTailLeft +VTailRight +BoostThrottle +Motor9 +Motor10 +Motor11 +Motor12 +Winch + + + + + +500 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + + +Normal +Reversed + + + + +Disabled +RCPassThru +Flap +Flap_auto +Aileron +mount_pan +mount_tilt +mount_roll +mount_open +camera_trigger +release +mount2_pan +mount2_tilt +mount2_roll +mount2_open +DifferentialSpoilerLeft1 +DifferentialSpoilerRight1 +DifferentialSpoilerLeft2 +DifferentialSpoilerRight2 +Elevator +Rudder +FlaperonLeft +FlaperonRight +GroundSteering +Parachute +EPM +LandingGear +EngineRunEnable +HeliRSC +HeliTailRSC +Motor1 +Motor2 +Motor3 +Motor4 +Motor5 +Motor6 +Motor7 +Motor8 +MotorTilt +RCIN1 +RCIN2 +RCIN3 +RCIN4 +RCIN5 +RCIN6 +RCIN7 +RCIN8 +RCIN9 +RCIN10 +RCIN11 +RCIN12 +RCIN13 +RCIN14 +RCIN15 +RCIN16 +Ignition +Choke +Starter +Throttle +TrackerYaw +TrackerPitch +ThrottleLeft +ThrottleRight +tiltMotorLeft +tiltMotorRight +ElevonLeft +ElevonRight +VTailLeft +VTailRight +BoostThrottle +Motor9 +Motor10 +Motor11 +Motor12 +Winch + + + + + +500 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + + +Normal +Reversed + + + + +Disabled +RCPassThru +Flap +Flap_auto +Aileron +mount_pan +mount_tilt +mount_roll +mount_open +camera_trigger +release +mount2_pan +mount2_tilt +mount2_roll +mount2_open +DifferentialSpoilerLeft1 +DifferentialSpoilerRight1 +DifferentialSpoilerLeft2 +DifferentialSpoilerRight2 +Elevator +Rudder +FlaperonLeft +FlaperonRight +GroundSteering +Parachute +EPM +LandingGear +EngineRunEnable +HeliRSC +HeliTailRSC +Motor1 +Motor2 +Motor3 +Motor4 +Motor5 +Motor6 +Motor7 +Motor8 +MotorTilt +RCIN1 +RCIN2 +RCIN3 +RCIN4 +RCIN5 +RCIN6 +RCIN7 +RCIN8 +RCIN9 +RCIN10 +RCIN11 +RCIN12 +RCIN13 +RCIN14 +RCIN15 +RCIN16 +Ignition +Choke +Starter +Throttle +TrackerYaw +TrackerPitch +ThrottleLeft +ThrottleRight +tiltMotorLeft +tiltMotorRight +ElevonLeft +ElevonRight +VTailLeft +VTailRight +BoostThrottle +Motor9 +Motor10 +Motor11 +Motor12 +Winch + + + + + +500 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + + +Normal +Reversed + + + + +Disabled +RCPassThru +Flap +Flap_auto +Aileron +mount_pan +mount_tilt +mount_roll +mount_open +camera_trigger +release +mount2_pan +mount2_tilt +mount2_roll +mount2_open +DifferentialSpoilerLeft1 +DifferentialSpoilerRight1 +DifferentialSpoilerLeft2 +DifferentialSpoilerRight2 +Elevator +Rudder +FlaperonLeft +FlaperonRight +GroundSteering +Parachute +EPM +LandingGear +EngineRunEnable +HeliRSC +HeliTailRSC +Motor1 +Motor2 +Motor3 +Motor4 +Motor5 +Motor6 +Motor7 +Motor8 +MotorTilt +RCIN1 +RCIN2 +RCIN3 +RCIN4 +RCIN5 +RCIN6 +RCIN7 +RCIN8 +RCIN9 +RCIN10 +RCIN11 +RCIN12 +RCIN13 +RCIN14 +RCIN15 +RCIN16 +Ignition +Choke +Starter +Throttle +TrackerYaw +TrackerPitch +ThrottleLeft +ThrottleRight +tiltMotorLeft +tiltMotorRight +ElevonLeft +ElevonRight +VTailLeft +VTailRight +BoostThrottle +Motor9 +Motor10 +Motor11 +Motor12 +Winch + + + + + +500 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + + +Normal +Reversed + + + + +Disabled +RCPassThru +Flap +Flap_auto +Aileron +mount_pan +mount_tilt +mount_roll +mount_open +camera_trigger +release +mount2_pan +mount2_tilt +mount2_roll +mount2_open +DifferentialSpoilerLeft1 +DifferentialSpoilerRight1 +DifferentialSpoilerLeft2 +DifferentialSpoilerRight2 +Elevator +Rudder +FlaperonLeft +FlaperonRight +GroundSteering +Parachute +EPM +LandingGear +EngineRunEnable +HeliRSC +HeliTailRSC +Motor1 +Motor2 +Motor3 +Motor4 +Motor5 +Motor6 +Motor7 +Motor8 +MotorTilt +RCIN1 +RCIN2 +RCIN3 +RCIN4 +RCIN5 +RCIN6 +RCIN7 +RCIN8 +RCIN9 +RCIN10 +RCIN11 +RCIN12 +RCIN13 +RCIN14 +RCIN15 +RCIN16 +Ignition +Choke +Starter +Throttle +TrackerYaw +TrackerPitch +ThrottleLeft +ThrottleRight +tiltMotorLeft +tiltMotorRight +ElevonLeft +ElevonRight +VTailLeft +VTailRight +BoostThrottle +Motor9 +Motor10 +Motor11 +Motor12 +Winch + + + + + +500 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + + +Normal +Reversed + + + + +Disabled +RCPassThru +Flap +Flap_auto +Aileron +mount_pan +mount_tilt +mount_roll +mount_open +camera_trigger +release +mount2_pan +mount2_tilt +mount2_roll +mount2_open +DifferentialSpoilerLeft1 +DifferentialSpoilerRight1 +DifferentialSpoilerLeft2 +DifferentialSpoilerRight2 +Elevator +Rudder +FlaperonLeft +FlaperonRight +GroundSteering +Parachute +EPM +LandingGear +EngineRunEnable +HeliRSC +HeliTailRSC +Motor1 +Motor2 +Motor3 +Motor4 +Motor5 +Motor6 +Motor7 +Motor8 +MotorTilt +RCIN1 +RCIN2 +RCIN3 +RCIN4 +RCIN5 +RCIN6 +RCIN7 +RCIN8 +RCIN9 +RCIN10 +RCIN11 +RCIN12 +RCIN13 +RCIN14 +RCIN15 +RCIN16 +Ignition +Choke +Starter +Throttle +TrackerYaw +TrackerPitch +ThrottleLeft +ThrottleRight +tiltMotorLeft +tiltMotorRight +ElevonLeft +ElevonRight +VTailLeft +VTailRight +BoostThrottle +Motor9 +Motor10 +Motor11 +Motor12 +Winch + + + + + +500 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + + +Normal +Reversed + + + + +Disabled +RCPassThru +Flap +Flap_auto +Aileron +mount_pan +mount_tilt +mount_roll +mount_open +camera_trigger +release +mount2_pan +mount2_tilt +mount2_roll +mount2_open +DifferentialSpoilerLeft1 +DifferentialSpoilerRight1 +DifferentialSpoilerLeft2 +DifferentialSpoilerRight2 +Elevator +Rudder +FlaperonLeft +FlaperonRight +GroundSteering +Parachute +EPM +LandingGear +EngineRunEnable +HeliRSC +HeliTailRSC +Motor1 +Motor2 +Motor3 +Motor4 +Motor5 +Motor6 +Motor7 +Motor8 +MotorTilt +RCIN1 +RCIN2 +RCIN3 +RCIN4 +RCIN5 +RCIN6 +RCIN7 +RCIN8 +RCIN9 +RCIN10 +RCIN11 +RCIN12 +RCIN13 +RCIN14 +RCIN15 +RCIN16 +Ignition +Choke +Starter +Throttle +TrackerYaw +TrackerPitch +ThrottleLeft +ThrottleRight +tiltMotorLeft +tiltMotorRight +ElevonLeft +ElevonRight +VTailLeft +VTailRight +BoostThrottle +Motor9 +Motor10 +Motor11 +Motor12 +Winch + + + + + +500 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + + +Normal +Reversed + + + + +Disabled +RCPassThru +Flap +Flap_auto +Aileron +mount_pan +mount_tilt +mount_roll +mount_open +camera_trigger +release +mount2_pan +mount2_tilt +mount2_roll +mount2_open +DifferentialSpoilerLeft1 +DifferentialSpoilerRight1 +DifferentialSpoilerLeft2 +DifferentialSpoilerRight2 +Elevator +Rudder +FlaperonLeft +FlaperonRight +GroundSteering +Parachute +EPM +LandingGear +EngineRunEnable +HeliRSC +HeliTailRSC +Motor1 +Motor2 +Motor3 +Motor4 +Motor5 +Motor6 +Motor7 +Motor8 +MotorTilt +RCIN1 +RCIN2 +RCIN3 +RCIN4 +RCIN5 +RCIN6 +RCIN7 +RCIN8 +RCIN9 +RCIN10 +RCIN11 +RCIN12 +RCIN13 +RCIN14 +RCIN15 +RCIN16 +Ignition +Choke +Starter +Throttle +TrackerYaw +TrackerPitch +ThrottleLeft +ThrottleRight +tiltMotorLeft +tiltMotorRight +ElevonLeft +ElevonRight +VTailLeft +VTailRight +BoostThrottle +Motor9 +Motor10 +Motor11 +Motor12 +Winch + + + + + +500 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + + +Normal +Reversed + + + + +Disabled +RCPassThru +Flap +Flap_auto +Aileron +mount_pan +mount_tilt +mount_roll +mount_open +camera_trigger +release +mount2_pan +mount2_tilt +mount2_roll +mount2_open +DifferentialSpoilerLeft1 +DifferentialSpoilerRight1 +DifferentialSpoilerLeft2 +DifferentialSpoilerRight2 +Elevator +Rudder +FlaperonLeft +FlaperonRight +GroundSteering +Parachute +EPM +LandingGear +EngineRunEnable +HeliRSC +HeliTailRSC +Motor1 +Motor2 +Motor3 +Motor4 +Motor5 +Motor6 +Motor7 +Motor8 +MotorTilt +RCIN1 +RCIN2 +RCIN3 +RCIN4 +RCIN5 +RCIN6 +RCIN7 +RCIN8 +RCIN9 +RCIN10 +RCIN11 +RCIN12 +RCIN13 +RCIN14 +RCIN15 +RCIN16 +Ignition +Choke +Starter +Throttle +TrackerYaw +TrackerPitch +ThrottleLeft +ThrottleRight +tiltMotorLeft +tiltMotorRight +ElevonLeft +ElevonRight +VTailLeft +VTailRight +BoostThrottle +Motor9 +Motor10 +Motor11 +Motor12 +Winch + + + + + +500 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + + +Normal +Reversed + + + + +Disabled +RCPassThru +Flap +Flap_auto +Aileron +mount_pan +mount_tilt +mount_roll +mount_open +camera_trigger +release +mount2_pan +mount2_tilt +mount2_roll +mount2_open +DifferentialSpoilerLeft1 +DifferentialSpoilerRight1 +DifferentialSpoilerLeft2 +DifferentialSpoilerRight2 +Elevator +Rudder +FlaperonLeft +FlaperonRight +GroundSteering +Parachute +EPM +LandingGear +EngineRunEnable +HeliRSC +HeliTailRSC +Motor1 +Motor2 +Motor3 +Motor4 +Motor5 +Motor6 +Motor7 +Motor8 +MotorTilt +RCIN1 +RCIN2 +RCIN3 +RCIN4 +RCIN5 +RCIN6 +RCIN7 +RCIN8 +RCIN9 +RCIN10 +RCIN11 +RCIN12 +RCIN13 +RCIN14 +RCIN15 +RCIN16 +Ignition +Choke +Starter +Throttle +TrackerYaw +TrackerPitch +ThrottleLeft +ThrottleRight +tiltMotorLeft +tiltMotorRight +ElevonLeft +ElevonRight +VTailLeft +VTailRight +BoostThrottle +Motor9 +Motor10 +Motor11 +Motor12 +Winch + + + + + +500 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + + +Normal +Reversed + + + + +Disabled +RCPassThru +Flap +Flap_auto +Aileron +mount_pan +mount_tilt +mount_roll +mount_open +camera_trigger +release +mount2_pan +mount2_tilt +mount2_roll +mount2_open +DifferentialSpoilerLeft1 +DifferentialSpoilerRight1 +DifferentialSpoilerLeft2 +DifferentialSpoilerRight2 +Elevator +Rudder +FlaperonLeft +FlaperonRight +GroundSteering +Parachute +EPM +LandingGear +EngineRunEnable +HeliRSC +HeliTailRSC +Motor1 +Motor2 +Motor3 +Motor4 +Motor5 +Motor6 +Motor7 +Motor8 +MotorTilt +RCIN1 +RCIN2 +RCIN3 +RCIN4 +RCIN5 +RCIN6 +RCIN7 +RCIN8 +RCIN9 +RCIN10 +RCIN11 +RCIN12 +RCIN13 +RCIN14 +RCIN15 +RCIN16 +Ignition +Choke +Starter +Throttle +TrackerYaw +TrackerPitch +ThrottleLeft +ThrottleRight +tiltMotorLeft +tiltMotorRight +ElevonLeft +ElevonRight +VTailLeft +VTailRight +BoostThrottle +Motor9 +Motor10 +Motor11 +Motor12 +Winch + + + + + +500 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + + +Normal +Reversed + + + + +Disabled +RCPassThru +Flap +Flap_auto +Aileron +mount_pan +mount_tilt +mount_roll +mount_open +camera_trigger +release +mount2_pan +mount2_tilt +mount2_roll +mount2_open +DifferentialSpoilerLeft1 +DifferentialSpoilerRight1 +DifferentialSpoilerLeft2 +DifferentialSpoilerRight2 +Elevator +Rudder +FlaperonLeft +FlaperonRight +GroundSteering +Parachute +EPM +LandingGear +EngineRunEnable +HeliRSC +HeliTailRSC +Motor1 +Motor2 +Motor3 +Motor4 +Motor5 +Motor6 +Motor7 +Motor8 +MotorTilt +RCIN1 +RCIN2 +RCIN3 +RCIN4 +RCIN5 +RCIN6 +RCIN7 +RCIN8 +RCIN9 +RCIN10 +RCIN11 +RCIN12 +RCIN13 +RCIN14 +RCIN15 +RCIN16 +Ignition +Choke +Starter +Throttle +TrackerYaw +TrackerPitch +ThrottleLeft +ThrottleRight +tiltMotorLeft +tiltMotorRight +ElevonLeft +ElevonRight +VTailLeft +VTailRight +BoostThrottle +Motor9 +Motor10 +Motor11 +Motor12 +Winch + + + + + +0:Channel1,1:Channel2,2:Channel3,3:Channel4,4:Channel5,5:Channel6,6:Channel7,7:Channel8,8:Channel9,9:Channel10,10:Channel11,11:Channel12,12:Channel13,13:Channel14,14:Channel15,15:Channel16 + + + +Disabled +Enabled + + + + +Disabled +TestMotor1 +TestMotor2 +TestMotor3 +TestMotor4 +TestMotor5 +TestMotor6 +TestMotor7 +TestMotor8 + + + +0 300 +s +seconds + + +0 500 +Hz +hertz + + + +Disabled +Enabled + + + + +None +OneShot +OneShot125 +Brushed +DShot150 +DShot300 +DShot600 +DShot1200 + + + + + +25 250 +Hz +hertz + + + + +0:Channel1,1:Channel2,2:Channel3,3:Channel4,4:Channel5,5:Channel6,6:Channel7,7:Channel8,8:Channel9,9:Channel10,10:Channel11,11:Channel12,12:Channel13,13:Channel14,14:Channel15,15:Channel16 + + + + +0 10 +1 +Hz +hertz + + +0 10 +1 +Hz +hertz + + +0 10 +1 +Hz +hertz + + +0 10 +1 +Hz +hertz + + +0 10 +1 +Hz +hertz + + +0 10 +1 +Hz +hertz + + +0 10 +1 +Hz +hertz + + +0 10 +1 +Hz +hertz + + +0 10 +1 +Hz +hertz + + + + +0 10 +1 +Hz +hertz + + +0 10 +1 +Hz +hertz + + +0 10 +1 +Hz +hertz + + +0 10 +1 +Hz +hertz + + +0 10 +1 +Hz +hertz + + +0 10 +1 +Hz +hertz + + +0 10 +1 +Hz +hertz + + +0 10 +1 +Hz +hertz + + +0 10 +1 +Hz +hertz + + + + +0 10 +1 +Hz +hertz + + +0 10 +1 +Hz +hertz + + +0 10 +1 +Hz +hertz + + +0 10 +1 +Hz +hertz + + +0 10 +1 +Hz +hertz + + +0 10 +1 +Hz +hertz + + +0 10 +1 +Hz +hertz + + +0 10 +1 +Hz +hertz + + +0 10 +1 +Hz +hertz + + + + +0 10 +1 +Hz +hertz + + +0 10 +1 +Hz +hertz + + +0 10 +1 +Hz +hertz + + +0 10 +1 +Hz +hertz + + +0 10 +1 +Hz +hertz + + +0 10 +1 +Hz +hertz + + +0 10 +1 +Hz +hertz + + +0 10 +1 +Hz +hertz + + +0 10 +1 +Hz +hertz + + + + +0 10 +m +meters + + +0 500 +True + + + + +True + + +True +s +seconds + + +True +s +seconds + + +True +s +seconds + + + + + +None +MAV + + + +m +meters + + +m +meters + + +m +meters + + + +Forward +Right +Back +Left +Up +Down + + + + + + +None +Quadrature + + + +1 + + +0.001 + + +0.01 +m +meters + + +0.01 +m +meters + + +0.01 +m +meters + + + +Disabled +PixhawkAUX1 +PixhawkAUX2 +PixhawkAUX3 +PixhawkAUX4 +PixhawkAUX5 +PixhawkAUX6 + + + + +Disabled +PixhawkAUX1 +PixhawkAUX2 +PixhawkAUX3 +PixhawkAUX4 +PixhawkAUX5 +PixhawkAUX6 + + + + +None +Quadrature + + + +1 + + +0.001 + + +0.01 +m +meters + + +0.01 +m +meters + + +0.01 +m +meters + + + +Disabled +PixhawkAUX1 +PixhawkAUX2 +PixhawkAUX3 +PixhawkAUX4 +PixhawkAUX5 +PixhawkAUX6 + + + + +Disabled +PixhawkAUX1 +PixhawkAUX2 +PixhawkAUX3 +PixhawkAUX4 +PixhawkAUX5 +PixhawkAUX6 + + + + diff --git a/src/FirmwarePlugin/APM/APMParameterFactMetaData.Rover.3.5.xml b/src/FirmwarePlugin/APM/APMParameterFactMetaData.Rover.3.5.xml new file mode 100644 index 0000000..6b4ff7c --- /dev/null +++ b/src/FirmwarePlugin/APM/APMParameterFactMetaData.Rover.3.5.xml @@ -0,0 +1,11650 @@ + + + + + + + + + +Disabled +Default + +0:ATTITUDE_FAST,1:ATTITUDE_MED,2:GPS,3:PM,4:THR,5:NTUN,7:IMU,8:CMD,9:CURRENT,10:RANGEFINDER,11:COMPASS,12:CAMERA,13:STEERING,14:RC,15:ARM/DISARM,19:IMU_RAW + + + + + +Manual +Acro +Steering +Hold +Loiter +Follow +Simple +Auto +RTL +SmartRTL +Guided + + + +1 255 + + +1 255 + + +s +seconds +0 30 +1 + + + +None +Steering +Throttle +Pitch +Left Wheel +Right Wheel +Sailboat Heel + +0:Steering,1:Throttle,2:Pitch,3:Left Wheel,4:Right Wheel,5:Sailboat Heel + + + +Disabled +Enabled + + + + +Disabled +APM TriggerPin0 +APM TriggerPin1 +APM TriggerPin2 +APM TriggerPin3 +APM TriggerPin4 +APM TriggerPin5 +APM TriggerPin6 +APM TriggerPin7 +APM TriggerPin8 +Pixhawk TriggerPin50 +Pixhawk TriggerPin51 +Pixhawk TriggerPin52 +Pixhawk TriggerPin53 +Pixhawk TriggerPin54 +Pixhawk TriggerPin55 + + + +m/s/s +meters per square second +0 20 +0.1 + + +m/s +meters per second +0 100 +0.1 + + +deg +degrees +0 360 +1 + + +% +percent +0 100 +1 + + + +Default +Two Paddles Input +Direction reversed when backing up +Direction unchanged when backing up + + + + +Nothing +RTL +Hold +SmartRTL or RTL +SmartRTL or Hold + + + +s +seconds +1 100 +0.5 + + + +Disabled +Enabled +Enabled Continue with Mission in Auto + + + +910 1100 +1 + + + +Disabled +Enabled +Enabled Continue with Mission in Auto + + + + +Disabled +Hold +HoldAndDisarm + + + + +Disabled +Hold + + + +0.6:Strict, 0.8:Default, 1.0:Relaxed + + +cm +centimeters +0 1000 +1 + + +deg +degrees +-450 450 +1 + + +s +seconds +0 100 +0.1 + + +1 100 +1 + + + + + +Manual +Acro +Steering +Hold +Loiter +Follow +Simple +Auto +RTL +SmartRTL +Guided + + + + +Manual +Acro +Steering +Hold +Loiter +Follow +Simple +Auto +RTL +SmartRTL +Guided + + + + +Manual +Acro +Steering +Hold +Loiter +Follow +Simple +Auto +RTL +SmartRTL +Guided + + + + +Manual +Acro +Steering +Hold +Loiter +Follow +Simple +Auto +RTL +SmartRTL +Guided + + + + +Manual +Acro +Steering +Hold +Loiter +Follow +Simple +Auto +RTL +SmartRTL +Guided + + + + +Manual +Acro +Steering +Hold +Loiter +Follow +Simple +Auto +RTL +SmartRTL +Guided + + + +m +meters +0 1000 +0.1 + + +m +meters +0 10 +0.1 + + +gravities +standard acceleration due to gravity +0.1 10 +0.01 + + + +NotEnforced +Enforced + + + +m +meters +0 10 +0.1 + + +deg/s +degrees per second +0 360 +1 + + +m/s +meters per second +0 100 +0.1 + + +m/s +meters per second +0 100 +0.1 + + + +Undefined +Rover +Boat +BalanceBot + + + +deg/s +degrees per second +0 360 +1 + + +deg +degrees +0 5 +0.1 + + +deg +degrees +0 60 +1 + + + +Undefined +Omni3 +OmniX +OmniPlus + +True + + + +Forward or reverse to target point +Always face bow towards target point + + + + +InitialHeading +CardinalDirections + +True + + +m +meters +0 20 +1 + + +deg +degrees +0 90 +1 + + +deg +degrees +0 90 +1 + + +deg +degrees +0 90 +1 + + +deg +degrees +0 90 +1 + + +deg +degrees +0 90 +1 + + + +Hold +Loiter + + + + +Nothing +SaveWaypoint +LearnCruiseSpeed +ArmDisarm +Manual +Acro +Steering +Hold +Auto +RTL +SmartRTL +Guided +Loiter + + + + + + + + + + + + + + + + + + + + + + + +m +meters + + +m +meters + + +mbar +millibar + + + + + + + + + + + + + + +s +seconds + + + + +0.0 1.0 +.01 + + + +Disabled +Enabled + + + +0.1 0.4 +.01 + + +0.1 0.4 +.01 + + +0 127 +m/s +meters per second +1 + + +rad +radians +-0.1745 +0.1745 +0.01 + + +rad +radians +-0.1745 +0.1745 +0.01 + + +rad +radians +-0.1745 +0.1745 +0.01 + + + +None +Yaw45 +Yaw90 +Yaw135 +Yaw180 +Yaw225 +Yaw270 +Yaw315 +Roll180 +Roll180Yaw45 +Roll180Yaw90 +Roll180Yaw135 +Pitch180 +Roll180Yaw225 +Roll180Yaw270 +Roll180Yaw315 +Roll90 +Roll90Yaw45 +Roll90Yaw90 +Roll90Yaw135 +Roll270 +Roll270Yaw45 +Roll270Yaw90 +Roll270Yaw135 +Pitch90 +Pitch270 +Pitch180Yaw90 +Pitch180Yaw270 +Roll90Pitch90 +Roll180Pitch90 +Roll270Pitch90 +Roll90Pitch180 +Roll270Pitch180 +Roll90Pitch270 +Roll180Pitch270 +Roll270Pitch270 +Roll90Pitch180Yaw90 +Roll90Yaw270 +Yaw293Pitch68Roll180 +Pitch315 +Roll90Pitch315 +Custom + + + +0.001 0.5 +.01 + + +0 10 +1 + + + +Disabled +Enable EKF2 +Enable EKF3 + + + +-180 180 +deg +degrees +1 + + +-180 180 +deg +degrees +1 + + +-180 180 +deg +degrees +1 + + + + + +Disabled +THR_MIN PWM when disarmed +0 PWM when disarmed + + + + +None +All +Barometer +Compass +GPS Lock +INS(INertial Sensors - accels & gyros) +Parameters(unused) +RC Channels +Board voltage +Battery Level +Airspeed +LoggingAvailable +Hardware safety switch +GPS configuration +System + +0:All,1:Barometer,2:Compass,3:GPS lock,4:INS,5:Parameters,6:RC Channels,7:Board voltage,8:Battery Level,9:Airspeed,10:Logging Available,11:Hardware safety switch,12:GPS Configuration,13:System + + +m/s/s +meters per square second +0.25 3.0 + + + +Disabled +ArmingOnly +ArmOrDisarm + + + +0:Land,1:VTOL Land,2:DO_LAND_START,3:Takeoff,4:VTOL Takeoff,5:Rallypoint + + + + + +None +I2C-MS4525D0 +Analog +I2C-MS5525 +I2C-MS5525 (0x76) +I2C-MS5525 (0x77) +I2C-SDP3X +I2C-DLVR +UAVCAN + + + + +DoNotUse +Use +UseWhenZeroThrottle + + + +0.1 + + +0.1 + + + + + + + + + +Disable +Enable + + + + + + +Bus0(internal) +Bus1(external) +Bus2(auxillary) + + + + +FirstSensor +2ndSensor + + + + +None +I2C-MS4525D0 +Analog +I2C-MS5525 +I2C-MS5525 (0x76) +I2C-MS5525 (0x77) +I2C-SDP3X +I2C-DLVR +UAVCAN + + + + +Don't Use +use +UseWhenZeroThrottle + + + +0.1 + + +0.1 + + + + + + + + + +Disable +Enable + + + + + + +Bus0(internal) +Bus1(external) +Bus2(auxillary) + + + + + +0.000 2.000 +0.01 + + +0.000 2.000 +0.01 + + +0.000 1.000 +0.01 + + +0.000 0.400 +0.001 + + +0.000 3.000 +0.001 + + +0.000 100.000 +0.1 +Hz +hertz + + +0.010 2.000 +0.01 + + +0.000 2.000 + + +0.000 1.000 +0.01 + + +0.000 0.400 +0.001 + + +0.000 0.500 +0.001 + + +0.000 100.000 +0.1 +Hz +hertz + + +0.0 10.0 +0.1 +m/s/s +meters per square second + + + +Disable +Enable + + + +0.00 0.50 +0.01 +m/s +meters per second + + +1.000 10.000 +0.1 + + +0 1000 +0.1 +deg/s/s +degrees per square second + + +0 1000 +0.1 +deg/s +degrees per second + + +0.0 10.0 +0.1 +m/s/s +meters per square second + + +0.000 2.000 +0.01 + + +0.000 2.000 + + +0.000 1.000 +0.01 + + +0.000 0.100 +0.001 + + +0.000 0.500 +0.001 + + +0.000 100.000 +0.1 +Hz +hertz + + +0.0 10.0 +0.01 + + +0.000 2.000 +0.01 + + +0.000 2.000 + + +0.000 1.000 +0.01 + + +0.000 0.100 +0.001 + + +0.000 0.500 +0.001 + + +0.000 100.000 +0.1 +Hz +hertz + + + + + +None +StopAtFence +UseProximitySensor +StopAtFence and UseProximitySensor +StopAtBeaconFence +All + +0:StopAtFence,1:UseProximitySensor,2:StopAtBeaconFence + + +cdeg +centidegrees +0 4500 + + +m +meters +1 30 + + +m +meters +1 10 + + + +Slide +Stop + + + + + + +Disabled +Analog Voltage Only +Analog Voltage and Current +Solo +Bebop +SMBus-Maxell +UAVCAN-BatteryInfo +BLHeli ESC +SumOfFollowing + +True + + + +Disabled +Pixhawk/Pixracer/Navio2/Pixhawk2_PM1 +Pixhawk2_PM2 +PX4-v1 + +True + + + +Disabled +Pixhawk/Pixracer/Navio2/Pixhawk2_PM1 +Pixhawk2_PM2 +PX4-v1 + +True + + + + +A/V +ampere per volt + + +V +volt + + +mAh +milliampere hour +50 + + +W +watt +1 + + + + +s +seconds +1 +0 120 + + + +Raw Voltage +Sag Compensated Voltage + + + +V +volt +0.1 + + +mAh +milliampere hour +50 + + +V +volt +0.1 + + +mAh +milliampere hour +50 + + + +None +RTL +Hold +SmartRTL +SmartRTL or Hold +Terminate + + + + +None +RTL +Hold +SmartRTL +SmartRTL or Hold +Terminate + + + +V +volt +0.1 + + +mAh +milliampere hour +50 + + + + + +Disabled +Analog Voltage Only +Analog Voltage and Current +Solo +Bebop +SMBus-Maxell +UAVCAN-BatteryInfo +BLHeli ESC +SumOfFollowing + +True + + + +Disabled +Pixhawk/Pixracer/Navio2/Pixhawk2_PM1 +Pixhawk2_PM2 +PX4-v1 + +True + + + +Disabled +Pixhawk/Pixracer/Navio2/Pixhawk2_PM1 +Pixhawk2_PM2 +PX4-v1 + +True + + + + +A/V +ampere per volt + + +V +volt + + +mAh +milliampere hour +50 + + +W +watt +1 + + + + +s +seconds +1 +0 120 + + + +Raw Voltage +Sag Compensated Voltage + + + +V +volt +0.1 + + +mAh +milliampere hour +50 + + +V +volt +0.1 + + +mAh +milliampere hour +50 + + + +None +RTL +Hold +SmartRTL +SmartRTL or Hold +Terminate + + + + +None +RTL +Hold +SmartRTL +SmartRTL or Hold +Terminate + + + +V +volt +0.1 + + +mAh +milliampere hour +50 + + + + + +Disabled +Analog Voltage Only +Analog Voltage and Current +Solo +Bebop +SMBus-Maxell +UAVCAN-BatteryInfo +BLHeli ESC +SumOfFollowing + +True + + + +Disabled +Pixhawk/Pixracer/Navio2/Pixhawk2_PM1 +Pixhawk2_PM2 +PX4-v1 + +True + + + +Disabled +Pixhawk/Pixracer/Navio2/Pixhawk2_PM1 +Pixhawk2_PM2 +PX4-v1 + +True + + + + +A/V +ampere per volt + + +V +volt + + +mAh +milliampere hour +50 + + +W +watt +1 + + + + +s +seconds +1 +0 120 + + + +Raw Voltage +Sag Compensated Voltage + + + +V +volt +0.1 + + +mAh +milliampere hour +50 + + +V +volt +0.1 + + +mAh +milliampere hour +50 + + + +None +RTL +Hold +SmartRTL +SmartRTL or Hold +Terminate + + + + +None +RTL +Hold +SmartRTL +SmartRTL or Hold +Terminate + + + +V +volt +0.1 + + +mAh +milliampere hour +50 + + + + + +Disabled +Analog Voltage Only +Analog Voltage and Current +Solo +Bebop +SMBus-Maxell +UAVCAN-BatteryInfo +BLHeli ESC +SumOfFollowing + +True + + + +Disabled +Pixhawk/Pixracer/Navio2/Pixhawk2_PM1 +Pixhawk2_PM2 +PX4-v1 + +True + + + +Disabled +Pixhawk/Pixracer/Navio2/Pixhawk2_PM1 +Pixhawk2_PM2 +PX4-v1 + +True + + + + +A/V +ampere per volt + + +V +volt + + +mAh +milliampere hour +50 + + +W +watt +1 + + + + +s +seconds +1 +0 120 + + + +Raw Voltage +Sag Compensated Voltage + + + +V +volt +0.1 + + +mAh +milliampere hour +50 + + +V +volt +0.1 + + +mAh +milliampere hour +50 + + + +None +RTL +Hold +SmartRTL +SmartRTL or Hold +Terminate + + + + +None +RTL +Hold +SmartRTL +SmartRTL or Hold +Terminate + + + +V +volt +0.1 + + +mAh +milliampere hour +50 + + + + + +Disabled +Analog Voltage Only +Analog Voltage and Current +Solo +Bebop +SMBus-Maxell +UAVCAN-BatteryInfo +BLHeli ESC +SumOfFollowing + +True + + + +Disabled +Pixhawk/Pixracer/Navio2/Pixhawk2_PM1 +Pixhawk2_PM2 +PX4-v1 + +True + + + +Disabled +Pixhawk/Pixracer/Navio2/Pixhawk2_PM1 +Pixhawk2_PM2 +PX4-v1 + +True + + + + +A/V +ampere per volt + + +V +volt + + +mAh +milliampere hour +50 + + +W +watt +1 + + + + +s +seconds +1 +0 120 + + + +Raw Voltage +Sag Compensated Voltage + + + +V +volt +0.1 + + +mAh +milliampere hour +50 + + +V +volt +0.1 + + +mAh +milliampere hour +50 + + + +None +RTL +Hold +SmartRTL +SmartRTL or Hold +Terminate + + + + +None +RTL +Hold +SmartRTL +SmartRTL or Hold +Terminate + + + +V +volt +0.1 + + +mAh +milliampere hour +50 + + + + + +Disabled +Analog Voltage Only +Analog Voltage and Current +Solo +Bebop +SMBus-Maxell +UAVCAN-BatteryInfo +BLHeli ESC +SumOfFollowing + +True + + + +Disabled +Pixhawk/Pixracer/Navio2/Pixhawk2_PM1 +Pixhawk2_PM2 +PX4-v1 + +True + + + +Disabled +Pixhawk/Pixracer/Navio2/Pixhawk2_PM1 +Pixhawk2_PM2 +PX4-v1 + +True + + + + +A/V +ampere per volt + + +V +volt + + +mAh +milliampere hour +50 + + +W +watt +1 + + + + +s +seconds +1 +0 120 + + + +Raw Voltage +Sag Compensated Voltage + + + +V +volt +0.1 + + +mAh +milliampere hour +50 + + +V +volt +0.1 + + +mAh +milliampere hour +50 + + + +None +RTL +Hold +SmartRTL +SmartRTL or Hold +Terminate + + + + +None +RTL +Hold +SmartRTL +SmartRTL or Hold +Terminate + + + +V +volt +0.1 + + +mAh +milliampere hour +50 + + + + + +Disabled +Analog Voltage Only +Analog Voltage and Current +Solo +Bebop +SMBus-Maxell +UAVCAN-BatteryInfo +BLHeli ESC +SumOfFollowing + +True + + + +Disabled +Pixhawk/Pixracer/Navio2/Pixhawk2_PM1 +Pixhawk2_PM2 +PX4-v1 + +True + + + +Disabled +Pixhawk/Pixracer/Navio2/Pixhawk2_PM1 +Pixhawk2_PM2 +PX4-v1 + +True + + + + +A/V +ampere per volt + + +V +volt + + +mAh +milliampere hour +50 + + +W +watt +1 + + + + +s +seconds +1 +0 120 + + + +Raw Voltage +Sag Compensated Voltage + + + +V +volt +0.1 + + +mAh +milliampere hour +50 + + +V +volt +0.1 + + +mAh +milliampere hour +50 + + + +None +RTL +Hold +SmartRTL +SmartRTL or Hold +Terminate + + + + +None +RTL +Hold +SmartRTL +SmartRTL or Hold +Terminate + + + +V +volt +0.1 + + +mAh +milliampere hour +50 + + + + + +Disabled +Analog Voltage Only +Analog Voltage and Current +Solo +Bebop +SMBus-Maxell +UAVCAN-BatteryInfo +BLHeli ESC +SumOfFollowing + +True + + + +Disabled +Pixhawk/Pixracer/Navio2/Pixhawk2_PM1 +Pixhawk2_PM2 +PX4-v1 + +True + + + +Disabled +Pixhawk/Pixracer/Navio2/Pixhawk2_PM1 +Pixhawk2_PM2 +PX4-v1 + +True + + + + +A/V +ampere per volt + + +V +volt + + +mAh +milliampere hour +50 + + +W +watt +1 + + + + +s +seconds +1 +0 120 + + + +Raw Voltage +Sag Compensated Voltage + + + +V +volt +0.1 + + +mAh +milliampere hour +50 + + +V +volt +0.1 + + +mAh +milliampere hour +50 + + + +None +RTL +Hold +SmartRTL +SmartRTL or Hold +Terminate + + + + +None +RTL +Hold +SmartRTL +SmartRTL or Hold +Terminate + + + +V +volt +0.1 + + +mAh +milliampere hour +50 + + + + + +Disabled +Analog Voltage Only +Analog Voltage and Current +Solo +Bebop +SMBus-Maxell +UAVCAN-BatteryInfo +BLHeli ESC +SumOfFollowing + +True + + + +Disabled +Pixhawk/Pixracer/Navio2/Pixhawk2_PM1 +Pixhawk2_PM2 +PX4-v1 + +True + + + +Disabled +Pixhawk/Pixracer/Navio2/Pixhawk2_PM1 +Pixhawk2_PM2 +PX4-v1 + +True + + + + +A/V +ampere per volt + + +V +volt + + +mAh +milliampere hour +50 + + +W +watt +1 + + + + +s +seconds +1 +0 120 + + + +Raw Voltage +Sag Compensated Voltage + + + +V +volt +0.1 + + +mAh +milliampere hour +50 + + +V +volt +0.1 + + +mAh +milliampere hour +50 + + + +None +RTL +Hold +SmartRTL +SmartRTL or Hold +Terminate + + + + +None +RTL +Hold +SmartRTL +SmartRTL or Hold +Terminate + + + +V +volt +0.1 + + +mAh +milliampere hour +50 + + + + + +None +Pozyx +Marvelmind + + + +deg +degrees +0.000001 +-90 90 + + +deg +degrees +0.000001 +-180 180 + + +m +meters +1 +0 10000 + + +deg +degrees +1 +-180 +180 + + + + + +No PWMs +One PWMs +Two PWMs +Three PWMs +Four PWMs +Five PWMs +Six PWMs +Seven PWMs +Eight PWMs + +True + + + +Disabled +Enabled +Auto + +True + + + +Disabled +Enabled +Auto + +True + + + +Disabled +Enabled + +True + + + +Disabled +50Hz +75Hz +100Hz +150Hz +200Hz +250Hz +300Hz + +True + + +-32768 32767 + + + +Disabled +Enabled + +0:Ch1,1:Ch2,2:Ch3,3:Ch4,4:Ch5,5:Ch6,6:Ch7,7:Ch8,8:Ch9,9:Ch10,10:Ch11,11:Ch12,12:Ch13,13:Ch14 +True + + +-1 80 +degC +degrees Celsius + + + +AUTO +PX4V1 +Pixhawk +Cube/Pixhawk2 +Pixracer +PixhawkMini +Pixhawk2Slim +VRBrain 5.1 +VRBrain 5.2 +VR Micro Brain 5.1 +VR Micro Brain 5.2 +VRBrain Core 1.0 +VRBrain 5.4 +Intel Aero FC +AUAV2.1 + +True + + + +Disabled +Enabled + +True + + +0:ActiveForSafetyEnable,1:ActiveForSafetyDisable,2:ActiveWhenArmed,3:Force safety on when the aircraft disarms + + +V +volt +4.0 5.5 +0.1 + + +V +volt +3.3 12.0 +0.1 + + +0 32 +1 + + + + + +None +CYRF6936 + + + + +Auto +DSM2 +DSMX + + + +0 4 + + + +NotDisabled +Disabled + + + +0 16 + + +0 16 + + + +Disabled +Enabled + + + +1 8 + + + +Disabled +MinChannel +MidChannel +MaxChannel +MinChannelCW +MidChannelCW +MaxChannelCW + + + + +Mode1 +Mode2 + + + + +Disabled +TestChan1 +TestChan2 +TestChan3 +TestChan4 +TestChan5 +TestChan6 +TestChan7 +TestChan8 + + + +0 16 + + +0 16 + + +1 8 + + +0 40 + + +0 120 + + +0 31 + + + + +0:GPS,1:MAVLINK_SYSTEM_TIME,2:HW + + + + + +Disabled +Enabled + + + + +Disabled +Pixhawk AUXOUT1 +Pixhawk AUXOUT2 +Pixhawk AUXOUT3 +Pixhawk AUXOUT4 +Pixhawk AUXOUT5 +Pixhawk AUXOUT6 +PX4 FMU Relay1 +PX4 FMU Relay2 +PX4IO Relay1 +PX4IO Relay2 +PX4IO ACC1 +PX4IO ACC2 + + + + +Disabled +Pixhawk AUXOUT1 +Pixhawk AUXOUT2 +Pixhawk AUXOUT3 +Pixhawk AUXOUT4 +Pixhawk AUXOUT5 +Pixhawk AUXOUT6 +PX4 FMU Relay1 +PX4 FMU Relay2 +PX4IO Relay1 +PX4IO Relay2 +PX4IO ACC1 +PX4IO ACC2 + + + + +Disabled +Pixhawk AUXOUT1 +Pixhawk AUXOUT2 +Pixhawk AUXOUT3 +Pixhawk AUXOUT4 +Pixhawk AUXOUT5 +Pixhawk AUXOUT6 +PX4 FMU Relay1 +PX4 FMU Relay2 +PX4IO Relay1 +PX4IO Relay2 +PX4IO ACC1 +PX4IO ACC2 + + + + +Disabled +Pixhawk AUXOUT1 +Pixhawk AUXOUT2 +Pixhawk AUXOUT3 +Pixhawk AUXOUT4 +Pixhawk AUXOUT5 +Pixhawk AUXOUT6 +PX4 FMU Relay1 +PX4 FMU Relay2 +PX4IO Relay1 +PX4IO Relay2 +PX4IO ACC1 +PX4IO ACC2 + + + +0 3600 + + + + + +Servo +Relay + + + +ds +deciseconds +0 50 + + +PWM +PWM in microseconds +1000 2000 + + +PWM +PWM in microseconds +1000 2000 + + +m +meters +0 1000 + + + +Low +High + + + +ms +milliseconds +0 10000 + + +deg +degrees +0 180 + + + +Disabled +AUX1 +AUX2 +AUX3 +AUX4 +AUX5 +AUX6 + +True + + + +TriggerLow +TriggerHigh + + + + +Always +Only when in AUTO + + + + +Default +BMMCC + + + + + + +Disabled +UAVCAN +KDECAN +ToshibaCAN + +True + + + + + + + + +1 250 + + +0: Servo 1, 1: Servo 2, 2: Servo 3, 3: Servo 4, 4: Servo 5, 5: Servo 6, 6: Servo 7, 7: Servo 8, 8: Servo 9, 9: Servo 10, 10: Servo 11, 11: Servo 12, 12: Servo 13, 13: Servo 14, 14: Servo 15 + + +0: ESC 1, 1: ESC 2, 2: ESC 3, 3: ESC 4, 4: ESC 5, 5: ESC 6, 6: ESC 7, 7: ESC 8, 8: ESC 9, 9: ESC 10, 10: ESC 11, 11: ESC 12, 12: ESC 13, 13: ESC 14, 14: ESC 15, 15: ESC 16 + + +1 200 +Hz +hertz + + + + + +Disabled +UAVCAN +KDECAN +ToshibaCAN + +True + + + + + + + + +1 250 + + +0: Servo 1, 1: Servo 2, 2: Servo 3, 3: Servo 4, 4: Servo 5, 5: Servo 6, 6: Servo 7, 7: Servo 8, 8: Servo 9, 9: Servo 10, 10: Servo 11, 11: Servo 12, 12: Servo 13, 13: Servo 14, 14: Servo 15 + + +0: ESC 1, 1: ESC 2, 2: ESC 3, 3: ESC 4, 4: ESC 5, 5: ESC 6, 6: ESC 7, 7: ESC 8, 8: ESC 9, 9: ESC 10, 10: ESC 11, 11: ESC 12, 12: ESC 13, 13: ESC 14, 14: ESC 15, 15: ESC 16 + + +1 200 +Hz +hertz + + + + + +Disabled +UAVCAN +KDECAN +ToshibaCAN + +True + + + + + + + + +1 250 + + +0: Servo 1, 1: Servo 2, 2: Servo 3, 3: Servo 4, 4: Servo 5, 5: Servo 6, 6: Servo 7, 7: Servo 8, 8: Servo 9, 9: Servo 10, 10: Servo 11, 11: Servo 12, 12: Servo 13, 13: Servo 14, 14: Servo 15 + + +0: ESC 1, 1: ESC 2, 2: ESC 3, 3: ESC 4, 4: ESC 5, 5: ESC 6, 6: ESC 7, 7: ESC 8, 8: ESC 9, 9: ESC 10, 10: ESC 11, 11: ESC 12, 12: ESC 13, 13: ESC 14, 14: ESC 15, 15: ESC 16 + + +1 200 +Hz +hertz + + + + + +Disabled +First driver +Second driver + +True + + +10000 1000000 + + + +Disabled +Major messages +All messages + + + + + + +Disabled +First driver +Second driver + +True + + +10000 1000000 + + + +Disabled +Major messages +All messages + + + + + + +Disabled +First driver +Second driver + +True + + +10000 1000000 + + + +Disabled +Major messages +All messages + + + + + +-400 400 +mGauss +milligauss +1 + + +-400 400 +mGauss +milligauss +1 + + +-400 400 +mGauss +milligauss +1 + + +-3.142 3.142 +rad +radians +0.01 + + + +Disabled +Internal-Learning +EKF-Learning + + + + +Disabled +Enabled + + + + +Disabled +Enabled + + + + +Disabled +Use Throttle +Use Current + + + +-1000 1000 +mGauss/A +milligauss per ampere +1 + + +-1000 1000 +mGauss/A +milligauss per ampere +1 + + +-1000 1000 +mGauss/A +milligauss per ampere +1 + + + +None +Yaw45 +Yaw90 +Yaw135 +Yaw180 +Yaw225 +Yaw270 +Yaw315 +Roll180 +Roll180Yaw45 +Roll180Yaw90 +Roll180Yaw135 +Pitch180 +Roll180Yaw225 +Roll180Yaw270 +Roll180Yaw315 +Roll90 +Roll90Yaw45 +Roll90Yaw90 +Roll90Yaw135 +Roll270 +Roll270Yaw45 +Roll270Yaw90 +Roll270Yaw135 +Pitch90 +Pitch270 +Pitch180Yaw90 +Pitch180Yaw270 +Roll90Pitch90 +Roll180Pitch90 +Roll270Pitch90 +Roll90Pitch180 +Roll270Pitch180 +Roll90Pitch270 +Roll180Pitch270 +Roll270Pitch270 +Roll90Pitch180Yaw90 +Roll90Yaw270 +Yaw293Pitch68Roll180 +Pitch315 +Roll90Pitch315 + + + + +Internal +External +ForcedExternal + + + +-400 400 +mGauss +milligauss +1 + + +-400 400 +mGauss +milligauss +1 + + +-400 400 +mGauss +milligauss +1 + + +-1000 1000 +mGauss/A +milligauss per ampere +1 + + +-1000 1000 +mGauss/A +milligauss per ampere +1 + + +-1000 1000 +mGauss/A +milligauss per ampere +1 + + + +FirstCompass +SecondCompass +ThirdCompass + + + +-400 400 +mGauss +milligauss +1 + + +-400 400 +mGauss +milligauss +1 + + +-400 400 +mGauss +milligauss +1 + + +-1000 1000 +mGauss/A +milligauss per ampere +1 + + +-1000 1000 +mGauss/A +milligauss per ampere +1 + + +-1000 1000 +mGauss/A +milligauss per ampere +1 + + +True + + +True + + +True + + + +Disabled +Enabled + + + + +None +Yaw45 +Yaw90 +Yaw135 +Yaw180 +Yaw225 +Yaw270 +Yaw315 +Roll180 +Roll180Yaw45 +Roll180Yaw90 +Roll180Yaw135 +Pitch180 +Roll180Yaw225 +Roll180Yaw270 +Roll180Yaw315 +Roll90 +Roll90Yaw45 +Roll90Yaw90 +Roll90Yaw135 +Roll270 +Roll270Yaw45 +Roll270Yaw90 +Roll270Yaw135 +Pitch90 +Pitch270 +Pitch180Yaw90 +Pitch180Yaw270 +Roll90Pitch90 +Roll180Pitch90 +Roll270Pitch90 +Roll90Pitch180 +Roll270Pitch180 +Roll90Pitch270 +Roll180Pitch270 +Roll270Pitch270 +Roll90Pitch180Yaw90 +Roll90Yaw270 +Yaw293Pitch68Roll180 +Pitch315 +Roll90Pitch315 + + + + +Internal +External +ForcedExternal + + + + +Disabled +Enabled + + + + +None +Yaw45 +Yaw90 +Yaw135 +Yaw180 +Yaw225 +Yaw270 +Yaw315 +Roll180 +Roll180Yaw45 +Roll180Yaw90 +Roll180Yaw135 +Pitch180 +Roll180Yaw225 +Roll180Yaw270 +Roll180Yaw315 +Roll90 +Roll90Yaw45 +Roll90Yaw90 +Roll90Yaw135 +Roll270 +Roll270Yaw45 +Roll270Yaw90 +Roll270Yaw135 +Pitch90 +Pitch270 +Pitch180Yaw90 +Pitch180Yaw270 +Roll90Pitch90 +Roll180Pitch90 +Roll270Pitch90 +Roll90Pitch180 +Roll270Pitch180 +Roll90Pitch270 +Roll180Pitch270 +Roll270Pitch270 +Roll90Pitch180Yaw90 +Roll90Yaw270 +Yaw293Pitch68Roll180 +Pitch315 +Roll90Pitch315 + + + + +Internal +External +ForcedExternal + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +4 32 + +Very Strict +Strict +Default +Relaxed + +0.1 + + +500 3000 +1 + + +0:HMC5883,1:LSM303D,2:AK8963,3:BMM150,4:LSM9DS1,5:LIS3MDL,6:AK09916,7:IST8310,8:ICM20948,9:MMC3416,11:UAVCAN,12:QMC5883,14:MAG3110,15:IST8308 + + +% +percent +0 100 +1 + + + +Disabled +CheckOnly +CheckAndFix + + + + + + + + + + + + +Disabled +Enabled + + + +0 2 +0.01 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Disabled +Enabled + +True + + + +GPS 3D Vel and 2D Pos +GPS 2D vel and 2D pos +GPS 2D pos +No GPS + + + +0.05 5.0 +0.05 +m/s +meters per second + + +0.05 5.0 +0.05 +m/s +meters per second + + +100 1000 +25 + + +0.1 10.0 +0.1 +m +meters + + +100 1000 +25 + + +10 100 +5 +m +meters + + + +Use Baro +Use Range Finder +Use GPS +Use Range Beacon + +True + + +0.1 10.0 +0.1 +m +meters + + +100 1000 +25 + + +0 250 +10 +ms +milliseconds +True + + +0.01 0.5 +0.01 +Gauss +gauss + + + +When flying +When manoeuvring +Never +After first climb yaw reset +Always + + + +100 1000 +25 + + +0.5 5.0 +0.1 +m/s +meters per second + + +100 1000 +25 + + +0.1 10.0 +0.1 +m +meters + + +100 1000 +25 + + +1.0 4.0 +0.1 +rad/s +radians per second + + +0.05 1.0 +0.05 +rad/s +radians per second + + +100 1000 +25 + + +0 127 +10 +ms +milliseconds +True + + +0.0001 0.1 +0.0001 +rad/s +radians per second + + +0.01 1.0 +0.01 +m/s/s +meters per square second + + +0.00001 0.001 +rad/s/s +radians per square second + + +0.000001 0.001 +Hz +hertz + + +0.00001 0.005 +m/s/s/s +meters per cubic second + + +0.01 1.0 +0.1 +m/s/s +meters per square second + + +0.0 1.0 +0.1 + + +0:NSats,1:HDoP,2:speed error,3:position error,4:yaw error,5:pos drift,6:vert speed,7:horiz speed + + +0:FirstIMU,1:SecondIMU,2:ThirdIMU,3:FourthIMU,4:FifthIMU,5:SixthIMU +True + + +50 200 +% +percent + + +0.5 50.0 +m +meters + + +0:FirstIMU,1:SecondIMU,2:ThirdIMU,3:FourthIMU,4:FifthIMU,5:SixthIMU +True + + +0.05 1.0 +0.05 +rad +radians + + +100 1000 +25 + + +10 50 +5 +cs +centiseconds + + +0.00001 0.01 +Gauss/s +gauss per second + + +0.00001 0.01 +Gauss/s +gauss per second + + +-1 70 +1 +% +percent + + +0 0.2 +0.01 + + +0.1 10.0 +0.1 +m +meters + + +100 1000 +25 + + +0 127 +10 +ms +milliseconds +True + + +2.0 6.0 +0.5 +m/s +meters per second + + +0:FirstEKF,1:SecondEKF,2:ThirdEKF,3:FourthEKF,4:FifthEKF,5:SixthEKF +True + + +0:Correct when using Baro height,1:Correct when using range finder height,2:Apply corrections to local position +True + + + + + +Disabled +Enabled + +True + + + +GPS 3D Vel and 2D Pos +GPS 2D vel and 2D pos +GPS 2D pos +No GPS + + + +0.05 5.0 +0.05 +m/s +meters per second + + +0.05 5.0 +0.05 +m/s +meters per second + + +100 1000 +25 + + +0.1 10.0 +0.1 +m +meters + + +100 1000 +25 + + +10 100 +5 +m +meters + + + +Use Baro +Use Range Finder +Use GPS +Use Range Beacon + +True + + +0.1 10.0 +0.1 +m +meters + + +100 1000 +25 + + +0 250 +10 +True +ms +milliseconds + + +0.01 0.5 +0.01 +Gauss +gauss + + + +When flying +When manoeuvring +Never +After first climb yaw reset +Always + +True + + +100 1000 +25 + + +0.5 5.0 +0.1 +m/s +meters per second + + +100 1000 +25 + + +0.1 10.0 +0.1 +m +meters + + +100 1000 +25 + + +1.0 4.0 +0.1 +rad/s +radians per second + + +0.05 1.0 +0.05 +rad/s +radians per second + + +100 1000 +25 + + +0 250 +10 +True +ms +milliseconds + + +0.0001 0.1 +0.0001 +rad/s +radians per second + + +0.01 1.0 +0.01 +m/s/s +meters per square second + + +0.00001 0.001 +rad/s/s +radians per square second + + +0.00001 0.005 +m/s/s/s +meters per cubic second + + +0.01 1.0 +0.1 +m/s/s +meters per square second + + +0.0 1.0 +0.1 + + +0:NSats,1:HDoP,2:speed error,3:position error,4:yaw error,5:pos drift,6:vert speed,7:horiz speed + + +0:FirstIMU,1:SecondIMU,2:ThirdIMU,3:FourthIMU,4:FifthIMU,5:SixthIMU +True + + +50 200 +% +percent + + +0.5 50.0 +m +meters + + +0:FirstIMU,1:SecondIMU,2:ThirdIMU,3:FourthIMU,4:FifthIMU,5:SixthIMU +True + + +0.05 1.0 +0.05 +rad +radians + + +100 1000 +25 + + +10 50 +5 +cs +centiseconds + + +0.00001 0.01 +Gauss/s +gauss per second + + +0.00001 0.01 +Gauss/s +gauss per second + + +-1 70 +1 +% +percent + + +0 0.2 +0.01 + + +0.1 10.0 +0.1 +m +meters + + +100 1000 +25 + + +0 250 +10 +True +ms +milliseconds + + +2.0 6.0 +0.5 +m/s +meters per second + + +0.5 2.5 +0.1 +m/s/s +meters per square second + + +0:FirstEKF,1:SecondEKF,2:ThirdEKF,3:FourthEKF,4:FifthEKF,5:SixthEKF +True + + +0:Correct when using Baro height,1:Correct when using range finder height,2:Apply corrections to local position +True + + +0.05 0.5 +0.05 +m/s +meters per second + + +0.5 5.0 +0.1 +m/s +meters per second + + +0.01 1.0 +0.1 +m/s +meters per second + + + + + +Disabled +Enabled + + + + +None +Altitude +Circle +Altitude and Circle +Polygon +Altitude and Polygon +Circle and Polygon +All + +0:Altitude,1:Circle,2:Polygon + + + +Report Only +RTL or Land +Always land + + + +m +meters +10 1000 +1 + + +m +meters +30 10000 + + +m +meters +1 10 + + +1 20 + + +m +meters +-100 100 +1 + + + + + +Disabled +Enabled + + + +0 255 + + +m +meters +1 1000 + + + +North-East-Down +Relative to lead vehicle heading + + + +-100 100 +m +meters +1 + + +-100 100 +m +meters +1 + + +-100 100 +m +meters +1 + + + +None +Face Lead Vehicle +Same as Lead vehicle +Direction of Flight + + + +0.01 1.00 +0.01 + + + +absolute + relative + + + + + +Pa +pascal +1 +True +True + + +degC +degrees Celsius +1 +True + + +m +meters +0.1 + + + +FirstBaro +2ndBaro +3rdBaro + + + + +Disabled +Bus0 +Bus1 + + + +1.0:Freshwater,1.024:Saltwater + + +Pa +pascal +1 +True +True + + +Pa +pascal +1 +True +True + + +% +percent +0 100 +1 + + +0:BMP085,1:BMP280,2:MS5611,3:MS5607,4:MS5637,5:FBM320,6:DPS280,7:LPS25H,8:Keller + +BMP085 +BMP280 +MS5611 +MS5607 +MS5637 +FBM320 +DPS280 +LPS25H +Keller + + + + + + +None +AUTO +uBlox +MTK +MTK19 +NMEA +SiRF +HIL +SwiftNav +UAVCAN +SBF +GSOF +ERB +MAV +NOVA + +True + + + +None +AUTO +uBlox +MTK +MTK19 +NMEA +SiRF +HIL +SwiftNav +UAVCAN +SBF +GSOF +ERB +MAV +NOVA + +True + + + +Portable +Stationary +Pedestrian +Automotive +Sea +Airborne1G +Airborne2G +Airborne4G + + + + +Disabled +UseBest +Blend +UseSecond + + + + +Any +FloatRTK +IntegerRTK + +True + + + +Disabled +Enabled +NoChange + + + +-100 90 +deg +degrees + + + +send to first GPS +send to 2nd GPS +send to all + + + + +None (0x0000) +All (0xFFFF) +External only (0xFF00) + + + + +Ignore +Always log +Stop logging when disarmed (SBF only) +Only log every five samples (uBlox only) + +True + + + +Leave as currently configured +GPS-NoSBAS +GPS+SBAS +Galileo-NoSBAS +Galileo+SBAS +Beidou +GPS+IMES+QZSS+SBAS (Japan Only) +GLONASS +GLONASS+SBAS +GPS+GLONASS+SBAS + +0:GPS,1:SBAS,2:Galileo,3:Beidou,4:IMES,5:QZSS,6:GLOSNASS + + + +Do not save config +Save config +Save only when needed + + + + +Leave as currently configured +GPS-NoSBAS +GPS+SBAS +Galileo-NoSBAS +Galileo+SBAS +Beidou +GPS+IMES+QZSS+SBAS (Japan Only) +GLONASS +GLONASS+SBAS +GPS+GLONASS+SBAS + +0:GPS,1:SBAS,2:Galileo,3:Beidou,4:IMES,5:QZSS,6:GLOSNASS + + + +Disables automatic configuration +Enable automatic configuration + + + +ms +milliseconds + +10Hz +8Hz +5Hz + +50 200 + + +ms +milliseconds + +10Hz +8Hz +5Hz + +50 200 + + +m +meters +-10 10 + + +m +meters +-10 10 + + +m +meters +-10 10 + + +m +meters +-10 10 + + +m +meters +-10 10 + + +m +meters +-10 10 + + +ms +milliseconds +0 250 +True + + +ms +milliseconds +0 250 +True + + +0:Horiz Pos,1:Vert Pos,2:Speed + + +s +seconds +5.0 30.0 + + + + +rad/s +radians per second + + +rad/s +radians per second + + +rad/s +radians per second + + +rad/s +radians per second + + +rad/s +radians per second + + +rad/s +radians per second + + +rad/s +radians per second + + +rad/s +radians per second + + +rad/s +radians per second + + +0.8 1.2 + + +0.8 1.2 + + +0.8 1.2 + + +m/s/s +meters per square second +-3.5 3.5 + + +m/s/s +meters per square second +-3.5 3.5 + + +m/s/s +meters per square second +-3.5 3.5 + + +0.8 1.2 + + +0.8 1.2 + + +0.8 1.2 + + +m/s/s +meters per square second +-3.5 3.5 + + +m/s/s +meters per square second +-3.5 3.5 + + +m/s/s +meters per square second +-3.5 3.5 + + +0.8 1.2 + + +0.8 1.2 + + +0.8 1.2 + + +m/s/s +meters per square second +-3.5 3.5 + + +m/s/s +meters per square second +-3.5 3.5 + + +m/s/s +meters per square second +-3.5 3.5 + + +Hz +hertz +0 127 + + +Hz +hertz +0 127 + + + +Disabled +Enabled + + + + +Disabled +Enabled + + + + +Disabled +Enabled + + + +0.05 50 + + + +Never +Start-up only + + + + +Don't adjust the trims +Assume first orientation was level +Assume ACC_BODYFIX is perfectly aligned to the vehicle + + + + +IMU 1 +IMU 2 +IMU 3 + + + +m +meters +-10 10 + + +m +meters +-10 10 + + +m +meters +-10 10 + + +m +meters +-10 10 + + +m +meters +-10 10 + + +m +meters +-10 10 + + +m +meters +-10 10 + + +m +meters +-10 10 + + +m +meters +-10 10 + + +True + + +True + + +True + + +True + + +True + + +True + + + +FirstIMUOnly +FirstAndSecondIMU + +0:FirstIMU,1:SecondIMU,2:ThirdIMU + + + + +32 + + + +None +First IMU +All + +0:IMU1,1:IMU2,2:IMU3 + + +0:Sensor-Rate Logging (sample at full sensor rate seen by AP) + + +ms +milliseconds +10 + + +1 + + + + + +Disabled +Enabled + + + +10 200 +Hz +hertz + + +5 50 +Hz +hertz + + +5 30 +dB +decibel + + + + +0:File,1:MAVLink,2:Block + + + + + +Disabled +Enabled + + + + +Disabled +Enabled + + + + +Disabled +Enabled + + + +kB +kilobytes + + + + +0 32766 +1 + + + +Resume Mission +Restart Mission + + + +0:Clear Mission on reboot + + + + + +Retracted +Neutral +MavLink Targeting +RC Targeting +GPS Point + + + +deg +degrees +-180.00 179.99 +1 + + +deg +degrees +-180.00 179.99 +1 + + +deg +degrees +-180.00 179.99 +1 + + +deg +degrees +-180.00 179.99 +1 + + +deg +degrees +-180.00 179.99 +1 + + +deg +degrees +-180.00 179.99 +1 + + + +Disabled +Enabled + + + + +Disabled +Enabled + + + + +Disabled +Enabled + + + + +Disabled +RC5 +RC6 +RC7 +RC8 +RC9 +RC10 +RC11 +RC12 + + + +cdeg +centidegrees +-18000 17999 +1 + + +cdeg +centidegrees +-18000 17999 +1 + + + +Disabled +RC5 +RC6 +RC7 +RC8 +RC9 +RC10 +RC11 +RC12 + + + +cdeg +centidegrees +-18000 17999 +1 + + +cdeg +centidegrees +-18000 17999 +1 + + + +Disabled +RC5 +RC6 +RC7 +RC8 +RC9 +RC10 +RC11 +RC12 + + + +cdeg +centidegrees +-18000 17999 +1 + + +cdeg +centidegrees +-18000 17999 +1 + + +0 100 +1 + + +s +seconds +0.0 0.2 +.005 + + +s +seconds +0.0 0.2 +.005 + + + +None +Servo +3DR Solo +Alexmos Serial +SToRM32 MAVLink +SToRM32 Serial + +True + + + +Retracted +Neutral +MavLink Targeting +RC Targeting +GPS Point + + + +deg +degrees +-180.00 179.99 +1 + + +deg +degrees +-180.00 179.99 +1 + + +deg +degrees +-180.00 179.99 +1 + + +deg +degrees +-180.00 179.99 +1 + + +deg +degrees +-180.00 179.99 +1 + + +deg +degrees +-180.00 179.99 +1 + + + +Disabled +Enabled + + + + +Disabled +Enabled + + + + +Disabled +Enabled + + + + +Disabled +RC5 +RC6 +RC7 +RC8 +RC9 +RC10 +RC11 +RC12 + + + +cdeg +centidegrees +-18000 17999 +1 + + +cdeg +centidegrees +-18000 17999 +1 + + + +Disabled +RC5 +RC6 +RC7 +RC8 +RC9 +RC10 +RC11 +RC12 + + + +cdeg +centidegrees +-18000 17999 +1 + + +cdeg +centidegrees +-18000 17999 +1 + + + +Disabled +RC5 +RC6 +RC7 +RC8 +RC9 +RC10 +RC11 +RC12 + + + +cdeg +centidegrees +-18000 17999 +1 + + +cdeg +centidegrees +-18000 17999 +1 + + +s +seconds +0.0 0.2 +.005 + + +s +seconds +0.0 0.2 +.005 + + + +None +Servo +3DR Solo +Alexmos Serial +SToRM32 MAVLink +SToRM32 Serial + + + + + + +Normal +OneShot +OneShot125 +BrushedWithRelay +BrushedBiPolar +DShot150 +DShot300 +DShot600 +DShot1200 + +True + + +kHz +kilohertz +1 20 +1 +True + + + +PWM enabled while disarmed +PWM disabled while disarmed + + + +% +percent +0 20 +1 + + +% +percent +30 100 +1 + + +%/s +percent per second +0 1000 +1 + + +-1.0 1.0 + + +% +percent +0 100 + + +m/s +meters per second +0 10 + + + + +s +seconds +1 60 +1 + + +0.6 1.0 +0.05 + + +0 0.1 +0.01 + + +deg +degrees +0 89 + + + + + +Off +Low +Medium +High + + + + +Disable +Enable + + + + +Disable +Enable + + + + +Disable +ssd1306 +sh1106 + + + + +Disabled +Aircraft +Rover + + + + +Disabled + + + +0:Build in LED, 1:Internal ToshibaLED, 2:External ToshibaLED, 3:External PCA9685, 4:Oreo LED, 5:UAVCAN, 6:NCP5623 External, 7:NCP5623 Internal + + + + + +None +MAX7456 + +True + + + +Disable +Chan5 +Chan6 +Chan7 +Chan8 +Chan9 +Chan10 +Chan11 +Chan12 +Chan13 +Chan14 +Chan15 +Chan16 + + + +0:UseDecimalPack, 1:InvertedWindPointer, 2:InvertedAHRoll + + +True + + +0 31 +True + + +0 63 +True + + +0 99 + + +1 30 + + +0 100 + + + +Metric +Imperial +SI +Aviation + + + +1 20 + + + + + +Disabled +Enabled + + + +900 2100 + + +900 2100 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +900 2100 + + +900 2100 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +900 2100 + + +900 2100 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +900 2100 + + +900 2100 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +None +LightWareSF40C +MAVLink +TeraRangerTower +RangeFinder +RPLidarA2 +TeraRangerTowerEvo +SITL +MorseSITL + +True + + + +Default +Upside Down + + + +deg +degrees +-180 180 + + +deg +degrees +0 360 + + +deg +degrees +0 45 + + +deg +degrees +0 360 + + +deg +degrees +0 45 + + +deg +degrees +0 360 + + +deg +degrees +0 45 + + +deg +degrees +0 360 + + +deg +degrees +0 45 + + +deg +degrees +0 360 + + +deg +degrees +0 45 + + +deg +degrees +0 360 + + +deg +degrees +0 45 + + + +None +LightWareSF40C +MAVLink +TeraRangerTower +RangeFinder +RPLidarA2 +TeraRangerTowerEvo + +True + + + +Default +Upside Down + + + +deg +degrees +-180 180 + + + + + + +km +kilometers +0.1 + + + +DoNotIncludeHome +IncludeHome + + + + + +0.0 120.0 +s +seconds + + +0:Ignore RC Reciever, 1:Ignore MAVLink Overrides + + + + +PWM +PWM in microseconds +800 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + + +Normal +Reversed + + + +PWM +PWM in microseconds +0 200 + + + +Do Nothing +RTL +Save WP +Camera Trigger +Auto +Relay On/Off +Lost Rover Sound +Relay2 On/Off +Relay3 On/Off +Relay4 On/Off +Proximity Avoidance +ArmDisarm +SmartRTL +RC Override Enable +LearnCruise +Manual +Acro +Steering +Hold +Guided +Loiter +Follow +Clear Waypoints +Simple +Compass Learn +Sailboat Tack +GPS Disable + Relay5 + Relay6 + + + + + +PWM +PWM in microseconds +800 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + + +Normal +Reversed + + + +PWM +PWM in microseconds +0 200 + + + +Do Nothing +RTL +Save WP +Camera Trigger +Auto +Relay On/Off +Lost Rover Sound +Relay2 On/Off +Relay3 On/Off +Relay4 On/Off +Proximity Avoidance +ArmDisarm +SmartRTL +RC Override Enable +LearnCruise +Manual +Acro +Steering +Hold +Guided +Loiter +Follow +Clear Waypoints +Simple +Compass Learn +Sailboat Tack +GPS Disable + Relay5 + Relay6 + + + + + +PWM +PWM in microseconds +800 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + + +Normal +Reversed + + + +PWM +PWM in microseconds +0 200 + + + +Do Nothing +RTL +Save WP +Camera Trigger +Auto +Relay On/Off +Lost Rover Sound +Relay2 On/Off +Relay3 On/Off +Relay4 On/Off +Proximity Avoidance +ArmDisarm +SmartRTL +RC Override Enable +LearnCruise +Manual +Acro +Steering +Hold +Guided +Loiter +Follow +Clear Waypoints +Simple +Compass Learn +Sailboat Tack +GPS Disable + Relay5 + Relay6 + + + + + +PWM +PWM in microseconds +800 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + + +Normal +Reversed + + + +PWM +PWM in microseconds +0 200 + + + +Do Nothing +RTL +Save WP +Camera Trigger +Auto +Relay On/Off +Lost Rover Sound +Relay2 On/Off +Relay3 On/Off +Relay4 On/Off +Proximity Avoidance +ArmDisarm +SmartRTL +RC Override Enable +LearnCruise +Manual +Acro +Steering +Hold +Guided +Loiter +Follow +Clear Waypoints +Simple +Compass Learn +Sailboat Tack +GPS Disable + Relay5 + Relay6 + + + + + +PWM +PWM in microseconds +800 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + + +Normal +Reversed + + + +PWM +PWM in microseconds +0 200 + + + +Do Nothing +RTL +Save WP +Camera Trigger +Auto +Relay On/Off +Lost Rover Sound +Relay2 On/Off +Relay3 On/Off +Relay4 On/Off +Proximity Avoidance +ArmDisarm +SmartRTL +RC Override Enable +LearnCruise +Manual +Acro +Steering +Hold +Guided +Loiter +Follow +Clear Waypoints +Simple +Compass Learn +Sailboat Tack +GPS Disable + Relay5 + Relay6 + + + + + +PWM +PWM in microseconds +800 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + + +Normal +Reversed + + + +PWM +PWM in microseconds +0 200 + + + +Do Nothing +RTL +Save WP +Camera Trigger +Auto +Relay On/Off +Lost Rover Sound +Relay2 On/Off +Relay3 On/Off +Relay4 On/Off +Proximity Avoidance +ArmDisarm +SmartRTL +RC Override Enable +LearnCruise +Manual +Acro +Steering +Hold +Guided +Loiter +Follow +Clear Waypoints +Simple +Compass Learn +Sailboat Tack +GPS Disable + Relay5 + Relay6 + + + + + +PWM +PWM in microseconds +800 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + + +Normal +Reversed + + + +PWM +PWM in microseconds +0 200 + + + +Do Nothing +RTL +Save WP +Camera Trigger +Auto +Relay On/Off +Lost Rover Sound +Relay2 On/Off +Relay3 On/Off +Relay4 On/Off +Proximity Avoidance +ArmDisarm +SmartRTL +RC Override Enable +LearnCruise +Manual +Acro +Steering +Hold +Guided +Loiter +Follow +Clear Waypoints +Simple +Compass Learn +Sailboat Tack +GPS Disable + Relay5 + Relay6 + + + + + +PWM +PWM in microseconds +800 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + + +Normal +Reversed + + + +PWM +PWM in microseconds +0 200 + + + +Do Nothing +RTL +Save WP +Camera Trigger +Auto +Relay On/Off +Lost Rover Sound +Relay2 On/Off +Relay3 On/Off +Relay4 On/Off +Proximity Avoidance +ArmDisarm +SmartRTL +RC Override Enable +LearnCruise +Manual +Acro +Steering +Hold +Guided +Loiter +Follow +Clear Waypoints +Simple +Compass Learn +Sailboat Tack +GPS Disable + Relay5 + Relay6 + + + + + +PWM +PWM in microseconds +800 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + + +Normal +Reversed + + + +PWM +PWM in microseconds +0 200 + + + +Do Nothing +RTL +Save WP +Camera Trigger +Auto +Relay On/Off +Lost Rover Sound +Relay2 On/Off +Relay3 On/Off +Relay4 On/Off +Proximity Avoidance +ArmDisarm +SmartRTL +RC Override Enable +LearnCruise +Manual +Acro +Steering +Hold +Guided +Loiter +Follow +Clear Waypoints +Simple +Compass Learn +Sailboat Tack +GPS Disable + Relay5 + Relay6 + + + + + +PWM +PWM in microseconds +800 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + + +Normal +Reversed + + + +PWM +PWM in microseconds +0 200 + + + +Do Nothing +RTL +Save WP +Camera Trigger +Auto +Relay On/Off +Lost Rover Sound +Relay2 On/Off +Relay3 On/Off +Relay4 On/Off +Proximity Avoidance +ArmDisarm +SmartRTL +RC Override Enable +LearnCruise +Manual +Acro +Steering +Hold +Guided +Loiter +Follow +Clear Waypoints +Simple +Compass Learn +Sailboat Tack +GPS Disable + Relay5 + Relay6 + + + + + +PWM +PWM in microseconds +800 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + + +Normal +Reversed + + + +PWM +PWM in microseconds +0 200 + + + +Do Nothing +RTL +Save WP +Camera Trigger +Auto +Relay On/Off +Lost Rover Sound +Relay2 On/Off +Relay3 On/Off +Relay4 On/Off +Proximity Avoidance +ArmDisarm +SmartRTL +RC Override Enable +LearnCruise +Manual +Acro +Steering +Hold +Guided +Loiter +Follow +Clear Waypoints +Simple +Compass Learn +Sailboat Tack +GPS Disable + Relay5 + Relay6 + + + + + +PWM +PWM in microseconds +800 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + + +Normal +Reversed + + + +PWM +PWM in microseconds +0 200 + + + +Do Nothing +RTL +Save WP +Camera Trigger +Auto +Relay On/Off +Lost Rover Sound +Relay2 On/Off +Relay3 On/Off +Relay4 On/Off +Proximity Avoidance +ArmDisarm +SmartRTL +RC Override Enable +LearnCruise +Manual +Acro +Steering +Hold +Guided +Loiter +Follow +Clear Waypoints +Simple +Compass Learn +Sailboat Tack +GPS Disable + Relay5 + Relay6 + + + + + +PWM +PWM in microseconds +800 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + + +Normal +Reversed + + + +PWM +PWM in microseconds +0 200 + + + +Do Nothing +RTL +Save WP +Camera Trigger +Auto +Relay On/Off +Lost Rover Sound +Relay2 On/Off +Relay3 On/Off +Relay4 On/Off +Proximity Avoidance +ArmDisarm +SmartRTL +RC Override Enable +LearnCruise +Manual +Acro +Steering +Hold +Guided +Loiter +Follow +Clear Waypoints +Simple +Compass Learn +Sailboat Tack +GPS Disable + Relay5 + Relay6 + + + + + +PWM +PWM in microseconds +800 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + + +Normal +Reversed + + + +PWM +PWM in microseconds +0 200 + + + +Do Nothing +RTL +Save WP +Camera Trigger +Auto +Relay On/Off +Lost Rover Sound +Relay2 On/Off +Relay3 On/Off +Relay4 On/Off +Proximity Avoidance +ArmDisarm +SmartRTL +RC Override Enable +LearnCruise +Manual +Acro +Steering +Hold +Guided +Loiter +Follow +Clear Waypoints +Simple +Compass Learn +Sailboat Tack +GPS Disable + Relay5 + Relay6 + + + + + +PWM +PWM in microseconds +800 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + + +Normal +Reversed + + + +PWM +PWM in microseconds +0 200 + + + +Do Nothing +RTL +Save WP +Camera Trigger +Auto +Relay On/Off +Lost Rover Sound +Relay2 On/Off +Relay3 On/Off +Relay4 On/Off +Proximity Avoidance +ArmDisarm +SmartRTL +RC Override Enable +LearnCruise +Manual +Acro +Steering +Hold +Guided +Loiter +Follow +Clear Waypoints +Simple +Compass Learn +Sailboat Tack +GPS Disable + Relay5 + Relay6 + + + + + +PWM +PWM in microseconds +800 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + + +Normal +Reversed + + + +PWM +PWM in microseconds +0 200 + + + +Do Nothing +RTL +Save WP +Camera Trigger +Auto +Relay On/Off +Lost Rover Sound +Relay2 On/Off +Relay3 On/Off +Relay4 On/Off +Proximity Avoidance +ArmDisarm +SmartRTL +RC Override Enable +LearnCruise +Manual +Acro +Steering +Hold +Guided +Loiter +Follow +Clear Waypoints +Simple +Compass Learn +Sailboat Tack +GPS Disable + Relay5 + Relay6 + + + + + +1 8 +1 +True + + +1 8 +1 +True + + +1 8 +1 +True + + +1 8 +1 +True + + + + + +Disabled +BB Blue GP0 pin 4 +Pixhawk AUXOUT1 +Pixhawk AUXOUT2 +Pixhawk AUXOUT3 +Pixhawk AUXOUT4 +Pixhawk AUXOUT5 +Pixhawk AUXOUT6 +BB Blue GP0 pin 3 +PX4 FMU Relay1 +PX4 FMU Relay2 +PX4IO Relay1/BB Blue GP0 pin 6 +PX4IO Relay2 +PX4IO ACC1 +PX4IO ACC2/BB Blue GP0 pin 5 + + + + +Disabled +BB Blue GP0 pin 4 +Pixhawk AUXOUT1 +Pixhawk AUXOUT2 +Pixhawk AUXOUT3 +Pixhawk AUXOUT4 +Pixhawk AUXOUT5 +Pixhawk AUXOUT6 +BB Blue GP0 pin 3 +PX4 FMU Relay1 +PX4 FMU Relay2 +PX4IO Relay1/BB Blue GP0 pin 6 +PX4IO Relay2 +PX4IO ACC1 +PX4IO ACC2/BB Blue GP0 pin 5 + + + + +Disabled +BB Blue GP0 pin 4 +Pixhawk AUXOUT1 +Pixhawk AUXOUT2 +Pixhawk AUXOUT3 +Pixhawk AUXOUT4 +Pixhawk AUXOUT5 +Pixhawk AUXOUT6 +BB Blue GP0 pin 3 +PX4 FMU Relay1 +PX4 FMU Relay2 +PX4IO Relay1/BB Blue GP0 pin 6 +PX4IO Relay2 +PX4IO ACC1 +PX4IO ACC2/BB Blue GP0 pin 5 + + + + +Disabled +BB Blue GP0 pin 4 +Pixhawk AUXOUT1 +Pixhawk AUXOUT2 +Pixhawk AUXOUT3 +Pixhawk AUXOUT4 +Pixhawk AUXOUT5 +Pixhawk AUXOUT6 +BB Blue GP0 pin 3 +PX4 FMU Relay1 +PX4 FMU Relay2 +PX4IO Relay1/BB Blue GP0 pin 6 +PX4IO Relay2 +PX4IO ACC1 +PX4IO ACC2/BB Blue GP0 pin 5 + + + + +Off +On +NoChange + + + + +Disabled +BB Blue GP0 pin 4 +Pixhawk AUXOUT1 +Pixhawk AUXOUT2 +Pixhawk AUXOUT3 +Pixhawk AUXOUT4 +Pixhawk AUXOUT5 +Pixhawk AUXOUT6 +BB Blue GP0 pin 3 +PX4 FMU Relay1 +PX4 FMU Relay2 +PX4IO Relay1/BB Blue GP0 pin 6 +PX4IO Relay2 +PX4IO ACC1 +PX4IO ACC2/BB Blue GP0 pin 5 + + + + +Disabled +BB Blue GP0 pin 4 +Pixhawk AUXOUT1 +Pixhawk AUXOUT2 +Pixhawk AUXOUT3 +Pixhawk AUXOUT4 +Pixhawk AUXOUT5 +Pixhawk AUXOUT6 +BB Blue GP0 pin 3 +PX4 FMU Relay1 +PX4 FMU Relay2 +PX4IO Relay1/BB Blue GP0 pin 6 +PX4IO Relay2 +PX4IO ACC1 +PX4IO ACC2/BB Blue GP0 pin 5 + + + + + + +None +Analog +MaxbotixI2C +LidarLiteV2-I2C +PX4-PWM +BBB-PRU +LightWareI2C +LightWareSerial +Bebop +MAVLink +uLanding +LeddarOne +MaxbotixSerial +TeraRangerI2C +LidarLiteV3-I2C +VL53L0X +NMEA +WASP-LRF +BenewakeTF02 +BenewakeTFmini +LidarLiteV3HP-I2C +PWM + + + + +Not Used +PX4-airspeed port +Pixhawk-airspeed port +GPIO1 +GPIO2 +GPIO3 +GPIO4 +GPIO5 +GPIO6 + + + +m/V +meters per volt +0.001 + + +V +volt +0.001 + + + +Linear +Inverted +Hyperbolic + + + +cm +centimeters +1 + + +cm +centimeters +1 + + + +Not Used +Pixhawk AUXOUT1 +Pixhawk AUXOUT2 +Pixhawk AUXOUT3 +Pixhawk AUXOUT4 +Pixhawk AUXOUT5 +Pixhawk AUXOUT6 +PX4 FMU Relay1 +PX4 FMU Relay2 +PX4IO Relay1 +PX4IO Relay2 +PX4IO ACC1 +PX4IO ACC2 + + + +ms +milliseconds +1 + + + +No +Yes + + + +m +meters +0 32767 + + +cm +centimeters +5 127 +1 + + +0 127 +1 + + +m +meters +-10 10 + + +m +meters +-10 10 + + +m +meters +-10 10 + + + +Forward +Forward-Right +Right +Back-Right +Back +Back-Left +Left +Forward-Left +Up +Down + + + + +None +Analog +MaxbotixI2C +LidarLiteV2-I2C +PX4-PWM +BBB-PRU +LightWareI2C +LightWareSerial +Bebop +MAVLink +uLanding +LeddarOne +MaxbotixSerial +TeraRangerI2C +LidarLiteV3-I2C +VL53L0X +NMEA +WASP-LRF +BenewakeTF02 +BenewakeTFmini +LidarLiteV3HP-I2C +PWM + + + + +Not Used +PX4-airspeed port +Pixhawk-airspeed port + + + +m/V +meters per volt +0.001 + + +V +volt +0.001 + + + +Linear +Inverted +Hyperbolic + + + +cm +centimeters +1 + + +cm +centimeters +1 + + + +Not Used +Pixhawk AUXOUT1 +Pixhawk AUXOUT2 +Pixhawk AUXOUT3 +Pixhawk AUXOUT4 +Pixhawk AUXOUT5 +Pixhawk AUXOUT6 +PX4 FMU Relay1 +PX4 FMU Relay2 +PX4IO Relay1 +PX4IO Relay2 +PX4IO ACC1 +PX4IO ACC2 + + + +ms +milliseconds +1 + + + +No +Yes + + + +cm +centimeters +0 127 +1 + + +0 127 +1 + + +m +meters +-10 10 + + +m +meters +-10 10 + + +m +meters +-10 10 + + + +Forward +Forward-Right +Right +Back-Right +Back +Back-Left +Left +Forward-Left +Up +Down + + + + +None +Analog +MaxbotixI2C +LidarLiteV2-I2C +PX4-PWM +BBB-PRU +LightWareI2C +LightWareSerial +Bebop +MAVLink +uLanding +LeddarOne +MaxbotixSerial +TeraRangerI2C +LidarLiteV3-I2C +VL53L0X +NMEA +WASP-LRF +BenewakeTF02 +BenewakeTFmini +LidarLiteV3HP-I2C +PWM + + + + +Not Used +PX4-airspeed port +Pixhawk-airspeed port + + + +m/V +meters per volt +0.001 + + +V +volt +0.001 + + + +Linear +Inverted +Hyperbolic + + + +cm +centimeters +1 + + +cm +centimeters +1 + + + +Not Used +Pixhawk AUXOUT1 +Pixhawk AUXOUT2 +Pixhawk AUXOUT3 +Pixhawk AUXOUT4 +Pixhawk AUXOUT5 +Pixhawk AUXOUT6 +PX4 FMU Relay1 +PX4 FMU Relay2 +PX4IO Relay1 +PX4IO Relay2 +PX4IO ACC1 +PX4IO ACC2 + + + +ms +milliseconds +1 + + + +No +Yes + + + +cm +centimeters +0 127 +1 + + +0 127 +1 + + +m +meters +-10 10 + + +m +meters +-10 10 + + +m +meters +-10 10 + + + +Forward +Forward-Right +Right +Back-Right +Back +Back-Left +Left +Forward-Left +Up +Down + + + + +None +Analog +MaxbotixI2C +LidarLiteV2-I2C +PX4-PWM +BBB-PRU +LightWareI2C +LightWareSerial +Bebop +MAVLink +uLanding +LeddarOne +MaxbotixSerial +TeraRangerI2C +LidarLiteV3-I2C +VL53L0X +NMEA +WASP-LRF +BenewakeTF02 +BenewakeTFmini +LidarLiteV3HP-I2C +PWM + + + + +Not Used +PX4-airspeed port +Pixhawk-airspeed port + + + +m/V +meters per volt +0.001 + + +V +volt +0.001 + + + +Linear +Inverted +Hyperbolic + + + +cm +centimeters +1 + + +cm +centimeters +1 + + + +Not Used +Pixhawk AUXOUT1 +Pixhawk AUXOUT2 +Pixhawk AUXOUT3 +Pixhawk AUXOUT4 +Pixhawk AUXOUT5 +Pixhawk AUXOUT6 +PX4 FMU Relay1 +PX4 FMU Relay2 +PX4IO Relay1 +PX4IO Relay2 +PX4IO ACC1 +PX4IO ACC2 + + + +ms +milliseconds +1 + + + +No +Yes + + + +cm +centimeters +0 127 +1 + + +0 127 +1 + + +m +meters +-10 10 + + +m +meters +-10 10 + + +m +meters +-10 10 + + + +Forward +Forward-Right +Right +Back-Right +Back +Back-Left +Left +Forward-Left +Up +Down + + + + + +0 255 + + +0 255 + + +0 10000 + + +0 255 + + +-1 255 + + + +Low Speed +High Speed + + + + + +0 255 + + +0 255 + + +0 10000 + + +0 255 + + +-1 255 + + + +Low Speed +High Speed + + + + + +0 255 + + +0 255 + + +0 10000 + + +0 255 + + +-1 255 + + + +Low Speed +High Speed + + + + + +0 255 + + +0 255 + + +0 10000 + + +0 255 + + +-1 255 + + + +Low Speed +High Speed + + + + + + +Disabled +AnalogPin +RCChannelPwmValue +ReceiverProtocol +PWMInputPin + + + + +Pixracer +Pixhawk ADC4 +Pixhawk ADC3 +Pixhawk ADC6 +Pixhawk2 ADC +PixhawkAUX1 +PixhawkAUX2 +PixhawkAUX3 +PixhawkAUX4 +PixhawkAUX5 +PixhawkAUX6 +Pixhawk SBUS + + + +V +volt +0.01 +0 5.0 + + +V +volt +0.01 +0 5.0 + + +0 16 + + +PWM +PWM in microseconds +0 2000 + + +PWM +PWM in microseconds +0 2000 + + + + + +Disabled +ShowSlips +ShowOverruns + + + + +50Hz +100Hz +200Hz +250Hz +300Hz +400Hz + +True + + + + + +1200 +2400 +4800 +9600 +19200 +38400 +57600 +111100 +115200 +256000 +460800 +500000 +921600 +1500000 + + + + +MAVlink1 +MAVLink2 + +True + + + +None +MAVLink1 +MAVLink2 +Frsky D +Frsky SPort +GPS +Alexmos Gimbal Serial +SToRM32 Gimbal Serial +Rangefinder +FrSky SPort Passthrough (OpenTX) +Lidar360 +Beacon +Volz servo out +SBus servo out +ESC Telemetry +Devo Telemetry +OpticalFlow +RobotisServo + +True + + + +1200 +2400 +4800 +9600 +19200 +38400 +57600 +111100 +115200 +256000 +500000 +921600 +1500000 + + + + +None +MAVLink1 +MAVLink2 +Frsky D +Frsky SPort +GPS +Alexmos Gimbal Serial +SToRM32 Gimbal Serial +Rangefinder +FrSky SPort Passthrough (OpenTX) +Lidar360 +Beacon +Volz servo out +SBus servo out +ESC Telemetry +Devo Telemetry +OpticalFlow +RobotisServo + +True + + + +1200 +2400 +4800 +9600 +19200 +38400 +57600 +111100 +115200 +256000 +500000 +921600 +1500000 + + + + +None +MAVLink1 +MAVLink2 +Frsky D +Frsky SPort +GPS +Alexmos Gimbal Serial +SToRM32 Gimbal Serial +Rangefinder +FrSky SPort Passthrough (OpenTX) +Lidar360 +Beacon +Volz servo out +SBus servo out +ESC Telemetry +Devo Telemetry +OpticalFlow +RobotisServo + +True + + + +1200 +2400 +4800 +9600 +19200 +38400 +57600 +111100 +115200 +256000 +500000 +921600 +1500000 + + + + +None +MAVLink1 +MAVLink2 +Frsky D +Frsky SPort +GPS +Alexmos Gimbal Serial +SToRM32 Gimbal Serial +Rangefinder +FrSky SPort Passthrough (OpenTX) +Lidar360 +Beacon +Volz servo out +SBus servo out +ESC Telemetry +Devo Telemetry +OpticalFlow +RobotisServo + +True + + + +1200 +2400 +4800 +9600 +19200 +38400 +57600 +111100 +115200 +256000 +500000 +921600 +1500000 + + + + +None +MAVLink1 +MAVLink2 +Frsky D +Frsky SPort +GPS +Alexmos Gimbal Serial +SToRM32 Gimbal Serial +Rangefinder +FrSky SPort Passthrough (OpenTX) +Lidar360 +Beacon +Volz servo out +SBus servo out +ESC Telemetry +Devo Telemetry +OpticalFlow +RobotisServo + +True + + + +1200 +2400 +4800 +9600 +19200 +38400 +57600 +111100 +115200 +256000 +500000 +921600 +1500000 + + + + +None +MAVLink1 +MAVLink2 +Frsky D +Frsky SPort +GPS +Alexmos Gimbal Serial +SToRM32 Gimbal Serial +Rangefinder +FrSky SPort Passthrough (OpenTX) +Lidar360 +Beacon +Volz servo out +SBus servo out +ESC Telemetry +Devo Telemetry +OpticalFlow +RobotisServo + +True + + + +1200 +2400 +4800 +9600 +19200 +38400 +57600 +111100 +115200 +256000 +500000 +921600 +1500000 + + + +0:InvertRX, 1:InvertTX, 2:HalfDuplex, 4:Swap +True + + +0:InvertRX, 1:InvertTX, 2:HalfDuplex, 4:Swap +True + + +0:InvertRX, 1:InvertTX, 2:HalfDuplex, 4:Swap +True + + +0:InvertRX, 1:InvertTX, 2:HalfDuplex, 4:Swap +True + + +0:InvertRX, 1:InvertTX, 2:HalfDuplex, 4:Swap +True + + +0:InvertRX, 1:InvertTX, 2:HalfDuplex, 4:Swap +True + + + +Disabled +Serial0 +Serial1 +Serial2 +Serial3 +Serial4 +Serial5 +Serial6 + + + + +Disabled +Serial0 +Serial1 +Serial2 +Serial3 +Serial4 +Serial5 +Serial6 + + + +0 120 +s +seconds + + + + + +Disable +Enable + + + +25 400 +Hz +hertz + + + + +PWM +PWM in microseconds +500 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + + +Normal +Reversed + + + + +Disabled +RCPassThru +Flap +Flap_auto +Aileron +mount_pan +mount_tilt +mount_roll +mount_open +camera_trigger +release +mount2_pan +mount2_tilt +mount2_roll +mount2_open +DifferentialSpoilerLeft1 +DifferentialSpoilerRight1 +Elevator +Rudder +FlaperonLeft +FlaperonRight +GroundSteering +Parachute +EPM +LandingGear +EngineRunEnable +HeliRSC +HeliTailRSC +Motor1 +Motor2 +Motor3 +Motor4 +Motor5 +Motor6 +Motor7 +Motor8 +MotorTilt +RCIN1 +RCIN2 +RCIN3 +RCIN4 +RCIN5 +RCIN6 +RCIN7 +RCIN8 +RCIN9 +RCIN10 +RCIN11 +RCIN12 +RCIN13 +RCIN14 +RCIN15 +RCIN16 +Ignition +Choke +Starter +Throttle +TrackerYaw +TrackerPitch +ThrottleLeft +ThrottleRight +tiltMotorLeft +tiltMotorRight +ElevonLeft +ElevonRight +VTailLeft +VTailRight +BoostThrottle +Motor9 +Motor10 +Motor11 +Motor12 +DifferentialSpoilerLeft2 +DifferentialSpoilerRight2 +Winch +Main Sail +Camera ISO +Camera Focus +Camera Shutter Speed +Script 1 +Script 2 +Script 3 +Script 4 +Script 5 +Script 6 +Script 7 +Script 8 +Script 9 +Script 10 +Script 11 +Script 12 +Script 13 +Script 14 +Script 15 +Script 16 + + + + + +PWM +PWM in microseconds +500 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + + +Normal +Reversed + + + + +Disabled +RCPassThru +Flap +Flap_auto +Aileron +mount_pan +mount_tilt +mount_roll +mount_open +camera_trigger +release +mount2_pan +mount2_tilt +mount2_roll +mount2_open +DifferentialSpoilerLeft1 +DifferentialSpoilerRight1 +Elevator +Rudder +FlaperonLeft +FlaperonRight +GroundSteering +Parachute +EPM +LandingGear +EngineRunEnable +HeliRSC +HeliTailRSC +Motor1 +Motor2 +Motor3 +Motor4 +Motor5 +Motor6 +Motor7 +Motor8 +MotorTilt +RCIN1 +RCIN2 +RCIN3 +RCIN4 +RCIN5 +RCIN6 +RCIN7 +RCIN8 +RCIN9 +RCIN10 +RCIN11 +RCIN12 +RCIN13 +RCIN14 +RCIN15 +RCIN16 +Ignition +Choke +Starter +Throttle +TrackerYaw +TrackerPitch +ThrottleLeft +ThrottleRight +tiltMotorLeft +tiltMotorRight +ElevonLeft +ElevonRight +VTailLeft +VTailRight +BoostThrottle +Motor9 +Motor10 +Motor11 +Motor12 +DifferentialSpoilerLeft2 +DifferentialSpoilerRight2 +Winch +Main Sail +Camera ISO +Camera Focus +Camera Shutter Speed +Script 1 +Script 2 +Script 3 +Script 4 +Script 5 +Script 6 +Script 7 +Script 8 +Script 9 +Script 10 +Script 11 +Script 12 +Script 13 +Script 14 +Script 15 +Script 16 + + + + + +PWM +PWM in microseconds +500 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + + +Normal +Reversed + + + + +Disabled +RCPassThru +Flap +Flap_auto +Aileron +mount_pan +mount_tilt +mount_roll +mount_open +camera_trigger +release +mount2_pan +mount2_tilt +mount2_roll +mount2_open +DifferentialSpoilerLeft1 +DifferentialSpoilerRight1 +Elevator +Rudder +FlaperonLeft +FlaperonRight +GroundSteering +Parachute +EPM +LandingGear +EngineRunEnable +HeliRSC +HeliTailRSC +Motor1 +Motor2 +Motor3 +Motor4 +Motor5 +Motor6 +Motor7 +Motor8 +MotorTilt +RCIN1 +RCIN2 +RCIN3 +RCIN4 +RCIN5 +RCIN6 +RCIN7 +RCIN8 +RCIN9 +RCIN10 +RCIN11 +RCIN12 +RCIN13 +RCIN14 +RCIN15 +RCIN16 +Ignition +Choke +Starter +Throttle +TrackerYaw +TrackerPitch +ThrottleLeft +ThrottleRight +tiltMotorLeft +tiltMotorRight +ElevonLeft +ElevonRight +VTailLeft +VTailRight +BoostThrottle +Motor9 +Motor10 +Motor11 +Motor12 +DifferentialSpoilerLeft2 +DifferentialSpoilerRight2 +Winch +Main Sail +Camera ISO +Camera Focus +Camera Shutter Speed +Script 1 +Script 2 +Script 3 +Script 4 +Script 5 +Script 6 +Script 7 +Script 8 +Script 9 +Script 10 +Script 11 +Script 12 +Script 13 +Script 14 +Script 15 +Script 16 + + + + + +PWM +PWM in microseconds +500 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + + +Normal +Reversed + + + + +Disabled +RCPassThru +Flap +Flap_auto +Aileron +mount_pan +mount_tilt +mount_roll +mount_open +camera_trigger +release +mount2_pan +mount2_tilt +mount2_roll +mount2_open +DifferentialSpoilerLeft1 +DifferentialSpoilerRight1 +Elevator +Rudder +FlaperonLeft +FlaperonRight +GroundSteering +Parachute +EPM +LandingGear +EngineRunEnable +HeliRSC +HeliTailRSC +Motor1 +Motor2 +Motor3 +Motor4 +Motor5 +Motor6 +Motor7 +Motor8 +MotorTilt +RCIN1 +RCIN2 +RCIN3 +RCIN4 +RCIN5 +RCIN6 +RCIN7 +RCIN8 +RCIN9 +RCIN10 +RCIN11 +RCIN12 +RCIN13 +RCIN14 +RCIN15 +RCIN16 +Ignition +Choke +Starter +Throttle +TrackerYaw +TrackerPitch +ThrottleLeft +ThrottleRight +tiltMotorLeft +tiltMotorRight +ElevonLeft +ElevonRight +VTailLeft +VTailRight +BoostThrottle +Motor9 +Motor10 +Motor11 +Motor12 +DifferentialSpoilerLeft2 +DifferentialSpoilerRight2 +Winch +Main Sail +Camera ISO +Camera Focus +Camera Shutter Speed +Script 1 +Script 2 +Script 3 +Script 4 +Script 5 +Script 6 +Script 7 +Script 8 +Script 9 +Script 10 +Script 11 +Script 12 +Script 13 +Script 14 +Script 15 +Script 16 + + + + + +PWM +PWM in microseconds +500 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + + +Normal +Reversed + + + + +Disabled +RCPassThru +Flap +Flap_auto +Aileron +mount_pan +mount_tilt +mount_roll +mount_open +camera_trigger +release +mount2_pan +mount2_tilt +mount2_roll +mount2_open +DifferentialSpoilerLeft1 +DifferentialSpoilerRight1 +Elevator +Rudder +FlaperonLeft +FlaperonRight +GroundSteering +Parachute +EPM +LandingGear +EngineRunEnable +HeliRSC +HeliTailRSC +Motor1 +Motor2 +Motor3 +Motor4 +Motor5 +Motor6 +Motor7 +Motor8 +MotorTilt +RCIN1 +RCIN2 +RCIN3 +RCIN4 +RCIN5 +RCIN6 +RCIN7 +RCIN8 +RCIN9 +RCIN10 +RCIN11 +RCIN12 +RCIN13 +RCIN14 +RCIN15 +RCIN16 +Ignition +Choke +Starter +Throttle +TrackerYaw +TrackerPitch +ThrottleLeft +ThrottleRight +tiltMotorLeft +tiltMotorRight +ElevonLeft +ElevonRight +VTailLeft +VTailRight +BoostThrottle +Motor9 +Motor10 +Motor11 +Motor12 +DifferentialSpoilerLeft2 +DifferentialSpoilerRight2 +Winch +Main Sail +Camera ISO +Camera Focus +Camera Shutter Speed +Script 1 +Script 2 +Script 3 +Script 4 +Script 5 +Script 6 +Script 7 +Script 8 +Script 9 +Script 10 +Script 11 +Script 12 +Script 13 +Script 14 +Script 15 +Script 16 + + + + + +PWM +PWM in microseconds +500 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + + +Normal +Reversed + + + + +Disabled +RCPassThru +Flap +Flap_auto +Aileron +mount_pan +mount_tilt +mount_roll +mount_open +camera_trigger +release +mount2_pan +mount2_tilt +mount2_roll +mount2_open +DifferentialSpoilerLeft1 +DifferentialSpoilerRight1 +Elevator +Rudder +FlaperonLeft +FlaperonRight +GroundSteering +Parachute +EPM +LandingGear +EngineRunEnable +HeliRSC +HeliTailRSC +Motor1 +Motor2 +Motor3 +Motor4 +Motor5 +Motor6 +Motor7 +Motor8 +MotorTilt +RCIN1 +RCIN2 +RCIN3 +RCIN4 +RCIN5 +RCIN6 +RCIN7 +RCIN8 +RCIN9 +RCIN10 +RCIN11 +RCIN12 +RCIN13 +RCIN14 +RCIN15 +RCIN16 +Ignition +Choke +Starter +Throttle +TrackerYaw +TrackerPitch +ThrottleLeft +ThrottleRight +tiltMotorLeft +tiltMotorRight +ElevonLeft +ElevonRight +VTailLeft +VTailRight +BoostThrottle +Motor9 +Motor10 +Motor11 +Motor12 +DifferentialSpoilerLeft2 +DifferentialSpoilerRight2 +Winch +Main Sail +Camera ISO +Camera Focus +Camera Shutter Speed +Script 1 +Script 2 +Script 3 +Script 4 +Script 5 +Script 6 +Script 7 +Script 8 +Script 9 +Script 10 +Script 11 +Script 12 +Script 13 +Script 14 +Script 15 +Script 16 + + + + + +PWM +PWM in microseconds +500 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + + +Normal +Reversed + + + + +Disabled +RCPassThru +Flap +Flap_auto +Aileron +mount_pan +mount_tilt +mount_roll +mount_open +camera_trigger +release +mount2_pan +mount2_tilt +mount2_roll +mount2_open +DifferentialSpoilerLeft1 +DifferentialSpoilerRight1 +Elevator +Rudder +FlaperonLeft +FlaperonRight +GroundSteering +Parachute +EPM +LandingGear +EngineRunEnable +HeliRSC +HeliTailRSC +Motor1 +Motor2 +Motor3 +Motor4 +Motor5 +Motor6 +Motor7 +Motor8 +MotorTilt +RCIN1 +RCIN2 +RCIN3 +RCIN4 +RCIN5 +RCIN6 +RCIN7 +RCIN8 +RCIN9 +RCIN10 +RCIN11 +RCIN12 +RCIN13 +RCIN14 +RCIN15 +RCIN16 +Ignition +Choke +Starter +Throttle +TrackerYaw +TrackerPitch +ThrottleLeft +ThrottleRight +tiltMotorLeft +tiltMotorRight +ElevonLeft +ElevonRight +VTailLeft +VTailRight +BoostThrottle +Motor9 +Motor10 +Motor11 +Motor12 +DifferentialSpoilerLeft2 +DifferentialSpoilerRight2 +Winch +Main Sail +Camera ISO +Camera Focus +Camera Shutter Speed +Script 1 +Script 2 +Script 3 +Script 4 +Script 5 +Script 6 +Script 7 +Script 8 +Script 9 +Script 10 +Script 11 +Script 12 +Script 13 +Script 14 +Script 15 +Script 16 + + + + + +PWM +PWM in microseconds +500 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + + +Normal +Reversed + + + + +Disabled +RCPassThru +Flap +Flap_auto +Aileron +mount_pan +mount_tilt +mount_roll +mount_open +camera_trigger +release +mount2_pan +mount2_tilt +mount2_roll +mount2_open +DifferentialSpoilerLeft1 +DifferentialSpoilerRight1 +Elevator +Rudder +FlaperonLeft +FlaperonRight +GroundSteering +Parachute +EPM +LandingGear +EngineRunEnable +HeliRSC +HeliTailRSC +Motor1 +Motor2 +Motor3 +Motor4 +Motor5 +Motor6 +Motor7 +Motor8 +MotorTilt +RCIN1 +RCIN2 +RCIN3 +RCIN4 +RCIN5 +RCIN6 +RCIN7 +RCIN8 +RCIN9 +RCIN10 +RCIN11 +RCIN12 +RCIN13 +RCIN14 +RCIN15 +RCIN16 +Ignition +Choke +Starter +Throttle +TrackerYaw +TrackerPitch +ThrottleLeft +ThrottleRight +tiltMotorLeft +tiltMotorRight +ElevonLeft +ElevonRight +VTailLeft +VTailRight +BoostThrottle +Motor9 +Motor10 +Motor11 +Motor12 +DifferentialSpoilerLeft2 +DifferentialSpoilerRight2 +Winch +Main Sail +Camera ISO +Camera Focus +Camera Shutter Speed +Script 1 +Script 2 +Script 3 +Script 4 +Script 5 +Script 6 +Script 7 +Script 8 +Script 9 +Script 10 +Script 11 +Script 12 +Script 13 +Script 14 +Script 15 +Script 16 + + + + + +PWM +PWM in microseconds +500 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + + +Normal +Reversed + + + + +Disabled +RCPassThru +Flap +Flap_auto +Aileron +mount_pan +mount_tilt +mount_roll +mount_open +camera_trigger +release +mount2_pan +mount2_tilt +mount2_roll +mount2_open +DifferentialSpoilerLeft1 +DifferentialSpoilerRight1 +Elevator +Rudder +FlaperonLeft +FlaperonRight +GroundSteering +Parachute +EPM +LandingGear +EngineRunEnable +HeliRSC +HeliTailRSC +Motor1 +Motor2 +Motor3 +Motor4 +Motor5 +Motor6 +Motor7 +Motor8 +MotorTilt +RCIN1 +RCIN2 +RCIN3 +RCIN4 +RCIN5 +RCIN6 +RCIN7 +RCIN8 +RCIN9 +RCIN10 +RCIN11 +RCIN12 +RCIN13 +RCIN14 +RCIN15 +RCIN16 +Ignition +Choke +Starter +Throttle +TrackerYaw +TrackerPitch +ThrottleLeft +ThrottleRight +tiltMotorLeft +tiltMotorRight +ElevonLeft +ElevonRight +VTailLeft +VTailRight +BoostThrottle +Motor9 +Motor10 +Motor11 +Motor12 +DifferentialSpoilerLeft2 +DifferentialSpoilerRight2 +Winch +Main Sail +Camera ISO +Camera Focus +Camera Shutter Speed +Script 1 +Script 2 +Script 3 +Script 4 +Script 5 +Script 6 +Script 7 +Script 8 +Script 9 +Script 10 +Script 11 +Script 12 +Script 13 +Script 14 +Script 15 +Script 16 + + + + + +PWM +PWM in microseconds +500 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + + +Normal +Reversed + + + + +Disabled +RCPassThru +Flap +Flap_auto +Aileron +mount_pan +mount_tilt +mount_roll +mount_open +camera_trigger +release +mount2_pan +mount2_tilt +mount2_roll +mount2_open +DifferentialSpoilerLeft1 +DifferentialSpoilerRight1 +Elevator +Rudder +FlaperonLeft +FlaperonRight +GroundSteering +Parachute +EPM +LandingGear +EngineRunEnable +HeliRSC +HeliTailRSC +Motor1 +Motor2 +Motor3 +Motor4 +Motor5 +Motor6 +Motor7 +Motor8 +MotorTilt +RCIN1 +RCIN2 +RCIN3 +RCIN4 +RCIN5 +RCIN6 +RCIN7 +RCIN8 +RCIN9 +RCIN10 +RCIN11 +RCIN12 +RCIN13 +RCIN14 +RCIN15 +RCIN16 +Ignition +Choke +Starter +Throttle +TrackerYaw +TrackerPitch +ThrottleLeft +ThrottleRight +tiltMotorLeft +tiltMotorRight +ElevonLeft +ElevonRight +VTailLeft +VTailRight +BoostThrottle +Motor9 +Motor10 +Motor11 +Motor12 +DifferentialSpoilerLeft2 +DifferentialSpoilerRight2 +Winch +Main Sail +Camera ISO +Camera Focus +Camera Shutter Speed +Script 1 +Script 2 +Script 3 +Script 4 +Script 5 +Script 6 +Script 7 +Script 8 +Script 9 +Script 10 +Script 11 +Script 12 +Script 13 +Script 14 +Script 15 +Script 16 + + + + + +PWM +PWM in microseconds +500 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + + +Normal +Reversed + + + + +Disabled +RCPassThru +Flap +Flap_auto +Aileron +mount_pan +mount_tilt +mount_roll +mount_open +camera_trigger +release +mount2_pan +mount2_tilt +mount2_roll +mount2_open +DifferentialSpoilerLeft1 +DifferentialSpoilerRight1 +Elevator +Rudder +FlaperonLeft +FlaperonRight +GroundSteering +Parachute +EPM +LandingGear +EngineRunEnable +HeliRSC +HeliTailRSC +Motor1 +Motor2 +Motor3 +Motor4 +Motor5 +Motor6 +Motor7 +Motor8 +MotorTilt +RCIN1 +RCIN2 +RCIN3 +RCIN4 +RCIN5 +RCIN6 +RCIN7 +RCIN8 +RCIN9 +RCIN10 +RCIN11 +RCIN12 +RCIN13 +RCIN14 +RCIN15 +RCIN16 +Ignition +Choke +Starter +Throttle +TrackerYaw +TrackerPitch +ThrottleLeft +ThrottleRight +tiltMotorLeft +tiltMotorRight +ElevonLeft +ElevonRight +VTailLeft +VTailRight +BoostThrottle +Motor9 +Motor10 +Motor11 +Motor12 +DifferentialSpoilerLeft2 +DifferentialSpoilerRight2 +Winch +Main Sail +Camera ISO +Camera Focus +Camera Shutter Speed +Script 1 +Script 2 +Script 3 +Script 4 +Script 5 +Script 6 +Script 7 +Script 8 +Script 9 +Script 10 +Script 11 +Script 12 +Script 13 +Script 14 +Script 15 +Script 16 + + + + + +PWM +PWM in microseconds +500 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + + +Normal +Reversed + + + + +Disabled +RCPassThru +Flap +Flap_auto +Aileron +mount_pan +mount_tilt +mount_roll +mount_open +camera_trigger +release +mount2_pan +mount2_tilt +mount2_roll +mount2_open +DifferentialSpoilerLeft1 +DifferentialSpoilerRight1 +Elevator +Rudder +FlaperonLeft +FlaperonRight +GroundSteering +Parachute +EPM +LandingGear +EngineRunEnable +HeliRSC +HeliTailRSC +Motor1 +Motor2 +Motor3 +Motor4 +Motor5 +Motor6 +Motor7 +Motor8 +MotorTilt +RCIN1 +RCIN2 +RCIN3 +RCIN4 +RCIN5 +RCIN6 +RCIN7 +RCIN8 +RCIN9 +RCIN10 +RCIN11 +RCIN12 +RCIN13 +RCIN14 +RCIN15 +RCIN16 +Ignition +Choke +Starter +Throttle +TrackerYaw +TrackerPitch +ThrottleLeft +ThrottleRight +tiltMotorLeft +tiltMotorRight +ElevonLeft +ElevonRight +VTailLeft +VTailRight +BoostThrottle +Motor9 +Motor10 +Motor11 +Motor12 +DifferentialSpoilerLeft2 +DifferentialSpoilerRight2 +Winch +Main Sail +Camera ISO +Camera Focus +Camera Shutter Speed +Script 1 +Script 2 +Script 3 +Script 4 +Script 5 +Script 6 +Script 7 +Script 8 +Script 9 +Script 10 +Script 11 +Script 12 +Script 13 +Script 14 +Script 15 +Script 16 + + + + + +PWM +PWM in microseconds +500 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + + +Normal +Reversed + + + + +Disabled +RCPassThru +Flap +Flap_auto +Aileron +mount_pan +mount_tilt +mount_roll +mount_open +camera_trigger +release +mount2_pan +mount2_tilt +mount2_roll +mount2_open +DifferentialSpoilerLeft1 +DifferentialSpoilerRight1 +Elevator +Rudder +FlaperonLeft +FlaperonRight +GroundSteering +Parachute +EPM +LandingGear +EngineRunEnable +HeliRSC +HeliTailRSC +Motor1 +Motor2 +Motor3 +Motor4 +Motor5 +Motor6 +Motor7 +Motor8 +MotorTilt +RCIN1 +RCIN2 +RCIN3 +RCIN4 +RCIN5 +RCIN6 +RCIN7 +RCIN8 +RCIN9 +RCIN10 +RCIN11 +RCIN12 +RCIN13 +RCIN14 +RCIN15 +RCIN16 +Ignition +Choke +Starter +Throttle +TrackerYaw +TrackerPitch +ThrottleLeft +ThrottleRight +tiltMotorLeft +tiltMotorRight +ElevonLeft +ElevonRight +VTailLeft +VTailRight +BoostThrottle +Motor9 +Motor10 +Motor11 +Motor12 +DifferentialSpoilerLeft2 +DifferentialSpoilerRight2 +Winch +Main Sail +Camera ISO +Camera Focus +Camera Shutter Speed +Script 1 +Script 2 +Script 3 +Script 4 +Script 5 +Script 6 +Script 7 +Script 8 +Script 9 +Script 10 +Script 11 +Script 12 +Script 13 +Script 14 +Script 15 +Script 16 + + + + + +PWM +PWM in microseconds +500 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + + +Normal +Reversed + + + + +Disabled +RCPassThru +Flap +Flap_auto +Aileron +mount_pan +mount_tilt +mount_roll +mount_open +camera_trigger +release +mount2_pan +mount2_tilt +mount2_roll +mount2_open +DifferentialSpoilerLeft1 +DifferentialSpoilerRight1 +Elevator +Rudder +FlaperonLeft +FlaperonRight +GroundSteering +Parachute +EPM +LandingGear +EngineRunEnable +HeliRSC +HeliTailRSC +Motor1 +Motor2 +Motor3 +Motor4 +Motor5 +Motor6 +Motor7 +Motor8 +MotorTilt +RCIN1 +RCIN2 +RCIN3 +RCIN4 +RCIN5 +RCIN6 +RCIN7 +RCIN8 +RCIN9 +RCIN10 +RCIN11 +RCIN12 +RCIN13 +RCIN14 +RCIN15 +RCIN16 +Ignition +Choke +Starter +Throttle +TrackerYaw +TrackerPitch +ThrottleLeft +ThrottleRight +tiltMotorLeft +tiltMotorRight +ElevonLeft +ElevonRight +VTailLeft +VTailRight +BoostThrottle +Motor9 +Motor10 +Motor11 +Motor12 +DifferentialSpoilerLeft2 +DifferentialSpoilerRight2 +Winch +Main Sail +Camera ISO +Camera Focus +Camera Shutter Speed +Script 1 +Script 2 +Script 3 +Script 4 +Script 5 +Script 6 +Script 7 +Script 8 +Script 9 +Script 10 +Script 11 +Script 12 +Script 13 +Script 14 +Script 15 +Script 16 + + + + + +PWM +PWM in microseconds +500 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + + +Normal +Reversed + + + + +Disabled +RCPassThru +Flap +Flap_auto +Aileron +mount_pan +mount_tilt +mount_roll +mount_open +camera_trigger +release +mount2_pan +mount2_tilt +mount2_roll +mount2_open +DifferentialSpoilerLeft1 +DifferentialSpoilerRight1 +Elevator +Rudder +FlaperonLeft +FlaperonRight +GroundSteering +Parachute +EPM +LandingGear +EngineRunEnable +HeliRSC +HeliTailRSC +Motor1 +Motor2 +Motor3 +Motor4 +Motor5 +Motor6 +Motor7 +Motor8 +MotorTilt +RCIN1 +RCIN2 +RCIN3 +RCIN4 +RCIN5 +RCIN6 +RCIN7 +RCIN8 +RCIN9 +RCIN10 +RCIN11 +RCIN12 +RCIN13 +RCIN14 +RCIN15 +RCIN16 +Ignition +Choke +Starter +Throttle +TrackerYaw +TrackerPitch +ThrottleLeft +ThrottleRight +tiltMotorLeft +tiltMotorRight +ElevonLeft +ElevonRight +VTailLeft +VTailRight +BoostThrottle +Motor9 +Motor10 +Motor11 +Motor12 +DifferentialSpoilerLeft2 +DifferentialSpoilerRight2 +Winch +Main Sail +Camera ISO +Camera Focus +Camera Shutter Speed +Script 1 +Script 2 +Script 3 +Script 4 +Script 5 +Script 6 +Script 7 +Script 8 +Script 9 +Script 10 +Script 11 +Script 12 +Script 13 +Script 14 +Script 15 +Script 16 + + + + + +PWM +PWM in microseconds +500 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + + +Normal +Reversed + + + + +Disabled +RCPassThru +Flap +Flap_auto +Aileron +mount_pan +mount_tilt +mount_roll +mount_open +camera_trigger +release +mount2_pan +mount2_tilt +mount2_roll +mount2_open +DifferentialSpoilerLeft1 +DifferentialSpoilerRight1 +Elevator +Rudder +FlaperonLeft +FlaperonRight +GroundSteering +Parachute +EPM +LandingGear +EngineRunEnable +HeliRSC +HeliTailRSC +Motor1 +Motor2 +Motor3 +Motor4 +Motor5 +Motor6 +Motor7 +Motor8 +MotorTilt +RCIN1 +RCIN2 +RCIN3 +RCIN4 +RCIN5 +RCIN6 +RCIN7 +RCIN8 +RCIN9 +RCIN10 +RCIN11 +RCIN12 +RCIN13 +RCIN14 +RCIN15 +RCIN16 +Ignition +Choke +Starter +Throttle +TrackerYaw +TrackerPitch +ThrottleLeft +ThrottleRight +tiltMotorLeft +tiltMotorRight +ElevonLeft +ElevonRight +VTailLeft +VTailRight +BoostThrottle +Motor9 +Motor10 +Motor11 +Motor12 +DifferentialSpoilerLeft2 +DifferentialSpoilerRight2 +Winch +Main Sail +Camera ISO +Camera Focus +Camera Shutter Speed +Script 1 +Script 2 +Script 3 +Script 4 +Script 5 +Script 6 +Script 7 +Script 8 +Script 9 +Script 10 +Script 11 +Script 12 +Script 13 +Script 14 +Script 15 +Script 16 + + + + + +0:Channel1,1:Channel2,2:Channel3,3:Channel4,4:Channel5,5:Channel6,6:Channel7,7:Channel8,8:Channel9,9:Channel10,10:Channel11,11:Channel12,12:Channel13,13:Channel14,14:Channel15,15:Channel16 + + + +Disabled +Enabled + + + + +Disabled +TestMotor1 +TestMotor2 +TestMotor3 +TestMotor4 +TestMotor5 +TestMotor6 +TestMotor7 +TestMotor8 + + + +s +seconds +0 300 + + +Hz +hertz +0 500 + + + +Disabled +Enabled + + + + +None +OneShot +OneShot125 +Brushed +DShot150 +DShot300 +DShot600 +DShot1200 + + + + +Console +Telem1 +Telem2 +Telem3 +Telem4 +Telem5 + + + +1 127 + + +0:Channel1,1:Channel2,2:Channel3,3:Channel4,4:Channel5,5:Channel6,6:Channel7,7:Channel8,8:Channel9,9:Channel10,10:Channel11,11:Channel12,12:Channel13,13:Channel14,14:Channel15,15:Channel16 + + + + +0 4095 + + +0 4095 + + + + +25 250 +Hz +hertz + + + + +0:Channel1,1:Channel2,2:Channel3,3:Channel4,4:Channel5,5:Channel6,6:Channel7,7:Channel8,8:Channel9,9:Channel10,10:Channel11,11:Channel12,12:Channel13,13:Channel14,14:Channel15,15:Channel16 + + + + + +Disabled +Enabled + + + +0 15 + + + + + +Disabled +Enabled + + + +0 15 + + +1000 2000 +PWM +PWM in microseconds + + +1000 2000 +PWM +PWM in microseconds + + + +Normal +Reverse + + + + + + +Disabled +Enabled + + + +0 15 + + +0 15 + + + + + +Disabled +Enabled + + + +% +percent +0 100 + + +ms +milliseconds +1000 2000 + + +cm/s +centimeters per second +0 1000 + + +% +percent +0 100 + + + + +Hz +hertz +0 10 +1 + + +Hz +hertz +0 10 +1 + + +Hz +hertz +0 10 +1 + + +Hz +hertz +0 10 +1 + + +Hz +hertz +0 10 +1 + + +Hz +hertz +0 10 +1 + + +Hz +hertz +0 10 +1 + + +Hz +hertz +0 10 +1 + + +Hz +hertz +0 10 +1 + + + + +Hz +hertz +0 10 +1 + + +Hz +hertz +0 10 +1 + + +Hz +hertz +0 10 +1 + + +Hz +hertz +0 10 +1 + + +Hz +hertz +0 10 +1 + + +Hz +hertz +0 10 +1 + + +Hz +hertz +0 10 +1 + + +Hz +hertz +0 10 +1 + + +Hz +hertz +0 10 +1 + + + + +Hz +hertz +0 10 +1 + + +Hz +hertz +0 10 +1 + + +Hz +hertz +0 10 +1 + + +Hz +hertz +0 10 +1 + + +Hz +hertz +0 10 +1 + + +Hz +hertz +0 10 +1 + + +Hz +hertz +0 10 +1 + + +Hz +hertz +0 10 +1 + + +Hz +hertz +0 10 +1 + + + + +Hz +hertz +0 10 +1 + + +Hz +hertz +0 10 +1 + + +Hz +hertz +0 10 +1 + + +Hz +hertz +0 10 +1 + + +Hz +hertz +0 10 +1 + + +Hz +hertz +0 10 +1 + + +Hz +hertz +0 10 +1 + + +Hz +hertz +0 10 +1 + + +Hz +hertz +0 10 +1 + + + + +m +meters +0 10 + + +0 500 +True + + + + +True + + +s +seconds +True + + +s +seconds +True + + +s +seconds +True + + + + + +None +MAV + + + +m +meters + + +m +meters + + +m +meters + + + +Forward +Right +Back +Left +Up +Down + + + + + + +None +Quadrature + + + +1 + + +m +meters +0.001 + + +m +meters +0.01 + + +m +meters +0.01 + + +m +meters +0.01 + + + +Disabled +PixhawkAUX1 +PixhawkAUX2 +PixhawkAUX3 +PixhawkAUX4 +PixhawkAUX5 +PixhawkAUX6 + + + + +Disabled +PixhawkAUX1 +PixhawkAUX2 +PixhawkAUX3 +PixhawkAUX4 +PixhawkAUX5 +PixhawkAUX6 + + + + +None +Quadrature + + + +1 + + +m +meters +0.001 + + +m +meters +0.01 + + +m +meters +0.01 + + +m +meters +0.01 + + + +Disabled +PixhawkAUX1 +PixhawkAUX2 +PixhawkAUX3 +PixhawkAUX4 +PixhawkAUX5 +PixhawkAUX6 + + + + +Disabled +PixhawkAUX1 +PixhawkAUX2 +PixhawkAUX3 +PixhawkAUX4 +PixhawkAUX5 +PixhawkAUX6 + + + + + + +None +Heading when armed +RC input offset heading when armed +Analog + + + +0 16 +1 + + + +Pixracer +Pixhawk ADC4 +Pixhawk ADC3 +Pixhawk ADC6 +Pixhawk2 ADC +PixhawkAUX1 +PixhawkAUX2 +PixhawkAUX3 +PixhawkAUX4 +PixhawkAUX5 +PixhawkAUX6 +Pixhawk SBUS + + + +V +volt +0.01 +0 5.0 + + +V +volt +0.01 +0 5.0 + + +deg +degrees +1 +0 360 + + +Hz +hertz + + + +None +Calibrate + + + +deg +degrees +1 +0 360 + + +m/s +meters per second +0.1 +0 5 + + + +None +Airspeed library +Moden Devices Wind Sensor +SITL + + + + +Pixracer +Pixhawk ADC4 +Pixhawk ADC3 +Pixhawk ADC6 +Pixhawk2 ADC +PixhawkAUX1 +PixhawkAUX2 +PixhawkAUX3 +PixhawkAUX4 +PixhawkAUX5 +PixhawkAUX6 +Pixhawk SBUS + + + + +Pixracer +Pixhawk ADC4 +Pixhawk ADC3 +Pixhawk ADC6 +Pixhawk2 ADC +PixhawkAUX1 +PixhawkAUX2 +PixhawkAUX3 +PixhawkAUX4 +PixhawkAUX5 +PixhawkAUX6 +Pixhawk SBUS + + + +V +volt +0.01 +0 3.3 + + +Hz +hertz + + + + + +Disabled +Enabled + + + +rad/s +radians per second +0 200 + + +0.100 2.000 + + +0.100 2.000 + + +0.000 2.000 + + +0.000 1.000 + + +0.000 0.400 + + +1.000 100.000 +Hz +hertz + + +0.100 2.000 + + +0.100 2.000 + + +0.000 2.000 + + +0.000 1.000 + + +0.000 0.400 + + +1.000 100.000 +Hz +hertz + + + diff --git a/src/FirmwarePlugin/APM/APMParameterFactMetaData.Rover.3.6.xml b/src/FirmwarePlugin/APM/APMParameterFactMetaData.Rover.3.6.xml new file mode 100644 index 0000000..64e19bd --- /dev/null +++ b/src/FirmwarePlugin/APM/APMParameterFactMetaData.Rover.3.6.xml @@ -0,0 +1,13034 @@ + + + + + + + + + +Disabled +Default + +0:ATTITUDE_FAST,1:ATTITUDE_MED,2:GPS,3:PM,4:THR,5:NTUN,7:IMU,8:CMD,9:CURRENT,10:RANGEFINDER,11:COMPASS,12:CAMERA,13:STEERING,14:RC,15:ARM/DISARM,19:IMU_RAW + + + + + +Manual +Acro +Steering +Hold +Loiter +Follow +Simple +Auto +RTL +SmartRTL +Guided + + + +1 255 + + +1 255 + + +s +seconds +0 30 +1 + + + +None +Steering +Throttle +Pitch +Left Wheel +Right Wheel +Sailboat Heel + +0:Steering,1:Throttle,2:Pitch,3:Left Wheel,4:Right Wheel,5:Sailboat Heel + + + +Disabled +APM TriggerPin0 +APM TriggerPin1 +APM TriggerPin2 +APM TriggerPin3 +APM TriggerPin4 +APM TriggerPin5 +APM TriggerPin6 +APM TriggerPin7 +APM TriggerPin8 +Pixhawk TriggerPin50 +Pixhawk TriggerPin51 +Pixhawk TriggerPin52 +Pixhawk TriggerPin53 +Pixhawk TriggerPin54 +Pixhawk TriggerPin55 + + + +m/s/s +meters per square second +0 20 +0.1 + + +m/s +meters per second +0 100 +0.1 + + +% +percent +0 100 +1 + + + +Default +Two Paddles Input +Direction reversed when backing up +Direction unchanged when backing up + + + + +Nothing +RTL +Hold +SmartRTL or RTL +SmartRTL or Hold + + + +s +seconds +1 100 +0.5 + + + +Disabled +Enabled +Enabled Continue with Mission in Auto + + + +910 1100 +1 + + + +Disabled +Enabled +Enabled Continue with Mission in Auto + + + + +Disabled +Hold +HoldAndDisarm + + + + +Disabled +Hold + + + +0.6:Strict, 0.8:Default, 1.0:Relaxed + + +cm +centimeters +0 1000 +1 + + +deg +degrees +-450 450 +1 + + +s +seconds +0 100 +0.1 + + +1 100 +1 + + + + + +Manual +Acro +Steering +Hold +Loiter +Follow +Simple +Auto +RTL +SmartRTL +Guided + + + + +Manual +Acro +Steering +Hold +Loiter +Follow +Simple +Auto +RTL +SmartRTL +Guided + + + + +Manual +Acro +Steering +Hold +Loiter +Follow +Simple +Auto +RTL +SmartRTL +Guided + + + + +Manual +Acro +Steering +Hold +Loiter +Follow +Simple +Auto +RTL +SmartRTL +Guided + + + + +Manual +Acro +Steering +Hold +Loiter +Follow +Simple +Auto +RTL +SmartRTL +Guided + + + + +Manual +Acro +Steering +Hold +Loiter +Follow +Simple +Auto +RTL +SmartRTL +Guided + + + +gravities +standard acceleration due to gravity +0.1 10 +0.01 + + + +NotEnforced +Enforced + + + +m +meters +0 10 +0.1 + + +deg/s +degrees per second +0 360 +1 + + +m/s +meters per second +0 100 +0.1 + + + +Undefined +Rover +Boat +BalanceBot + + + +deg +degrees +0 5 +0.1 + + +deg +degrees +0 60 +1 + + + +Undefined +Omni3 +OmniX +OmniPlus + +True + + + +Forward or reverse to target point +Always face bow towards target point + + + + +InitialHeading +CardinalDirections + +True + + +m +meters +0 20 +1 + + + +Hold +Loiter +Acro + + + +deg +degrees +-2 2 +0.1 + + + +Disabled +Enabled + + + + +Nothing +SaveWaypoint +LearnCruiseSpeed +ArmDisarm +Manual +Acro +Steering +Hold +Auto +RTL +SmartRTL +Guided +Loiter + + + + + +deg +degrees +0 360 +1 + + +m +meters +0 1000 +0.1 + + +m +meters +0 10 +0.1 + + +m/s +meters per second +0 100 +0.1 + + +deg/s +degrees per second +0 360 +1 + + + + + + + + + +Disabled +BB Blue GP0 pin 4 +AUXOUT1 +AUXOUT2 +AUXOUT3 +AUXOUT4 +AUXOUT5 +AUXOUT6 +BB Blue GP0 pin 3 +BB Blue GP0 pin 6 +BB Blue GP0 pin 5 + + + + + + + + + + + + +Disabled +BB Blue GP0 pin 4 +AUXOUT1 +AUXOUT2 +AUXOUT3 +AUXOUT4 +AUXOUT5 +AUXOUT6 +BB Blue GP0 pin 3 +BB Blue GP0 pin 6 +BB Blue GP0 pin 5 + + + +m +meters + + +m +meters + + +mbar +millibar + + + + + + + + + + + + + + +s +seconds + + + + +0.0 1.0 +.01 + + + +Disabled +Enabled + + + +0.1 0.4 +.01 + + +0.1 0.4 +.01 + + +0 127 +m/s +meters per second +1 + + +rad +radians +-0.1745 +0.1745 +0.01 + + +rad +radians +-0.1745 +0.1745 +0.01 + + +rad +radians +-0.1745 +0.1745 +0.01 + + + +None +Yaw45 +Yaw90 +Yaw135 +Yaw180 +Yaw225 +Yaw270 +Yaw315 +Roll180 +Roll180Yaw45 +Roll180Yaw90 +Roll180Yaw135 +Pitch180 +Roll180Yaw225 +Roll180Yaw270 +Roll180Yaw315 +Roll90 +Roll90Yaw45 +Roll90Yaw90 +Roll90Yaw135 +Roll270 +Roll270Yaw45 +Roll270Yaw90 +Roll270Yaw135 +Pitch90 +Pitch270 +Pitch180Yaw90 +Pitch180Yaw270 +Roll90Pitch90 +Roll180Pitch90 +Roll270Pitch90 +Roll90Pitch180 +Roll270Pitch180 +Roll90Pitch270 +Roll180Pitch270 +Roll270Pitch270 +Roll90Pitch180Yaw90 +Roll90Yaw270 +Yaw293Pitch68Roll180 +Pitch315 +Roll90Pitch315 +Custom + + + +0.001 0.5 +.01 + + +0 10 +1 + + + +Disabled +Enable EKF2 +Enable EKF3 + + + +-180 180 +deg +degrees +1 + + +-180 180 +deg +degrees +1 + + +-180 180 +deg +degrees +1 + + + + + +Disabled +THR_MIN PWM when disarmed +0 PWM when disarmed + + + + +None +All +Barometer +Compass +GPS Lock +INS(INertial Sensors - accels & gyros) +Parameters(unused) +RC Channels +Board voltage +Battery Level +Airspeed +LoggingAvailable +Hardware safety switch +GPS configuration +System + +0:All,1:Barometer,2:Compass,3:GPS lock,4:INS,5:Parameters,6:RC Channels,7:Board voltage,8:Battery Level,9:Airspeed,10:Logging Available,11:Hardware safety switch,12:GPS Configuration,13:System + + +m/s/s +meters per square second +0.25 3.0 + + + +Disabled +ArmingOnly +ArmOrDisarm + + + +0:Land,1:VTOL Land,2:DO_LAND_START,3:Takeoff,4:VTOL Takeoff,5:Rallypoint + + + + + +None +I2C-MS4525D0 +Analog +I2C-MS5525 +I2C-MS5525 (0x76) +I2C-MS5525 (0x77) +I2C-SDP3X +I2C-DLVR +UAVCAN + + + + +DoNotUse +Use +UseWhenZeroThrottle + + + +0.1 + + +0.1 + + + + + + + + + +Disable +Enable + + + + + + +Bus0(internal) +Bus1(external) +Bus2(auxillary) + + + + +FirstSensor +2ndSensor + + + +0:Disable on sensor failure,1:Re-enable on sensor recovery + + + +None +I2C-MS4525D0 +Analog +I2C-MS5525 +I2C-MS5525 (0x76) +I2C-MS5525 (0x77) +I2C-SDP3X +I2C-DLVR +UAVCAN + + + + +Don't Use +use +UseWhenZeroThrottle + + + +0.1 + + +0.1 + + + + + + + + + +Disable +Enable + + + + + + +Bus0(internal) +Bus1(external) +Bus2(auxillary) + + + + + +0.000 2.000 +0.01 + + +0.000 2.000 +0.01 + + +0.000 1.000 +0.01 + + +0.000 0.400 +0.001 + + +0.000 3.000 +0.001 + + +0.000 100.000 +0.1 +Hz +hertz + + +0.010 2.000 +0.01 + + +0.000 2.000 + + +0.000 1.000 +0.01 + + +0.000 0.400 +0.001 + + +0.000 0.500 +0.001 + + +0.000 100.000 +0.1 +Hz +hertz + + +0.0 10.0 +0.1 +m/s/s +meters per square second + + + +Disable +Enable + + + +0.00 0.50 +0.01 +m/s +meters per second + + +1.000 10.000 +0.1 + + +0 1000 +0.1 +deg/s/s +degrees per square second + + +0 1000 +0.1 +deg/s +degrees per second + + +0.0 10.0 +0.1 +m/s/s +meters per square second + + +0.000 2.000 +0.01 + + +0.000 2.000 + + +0.000 1.000 +0.01 + + +0.000 0.100 +0.001 + + +0.000 0.500 +0.001 + + +0.000 100.000 +0.1 +Hz +hertz + + +0.0 10.0 +0.01 + + +0.000 2.000 +0.01 + + +0.000 2.000 + + +0.000 1.000 +0.01 + + +0.000 0.100 +0.001 + + +0.000 0.500 +0.001 + + +0.000 100.000 +0.1 +Hz +hertz + + + + + +None +UseFence +UseProximitySensor +UseFence and UseProximitySensor +UseBeaconFence +All + +0:UseFence,1:UseProximitySensor,2:UseBeaconFence + + +cdeg +centidegrees +0 4500 + + +m +meters +1 30 + + +m +meters +1 10 + + + +Slide +Stop + + + + + + +Disabled +Analog Voltage Only +Analog Voltage and Current +Solo +Bebop +SMBus-Maxell +UAVCAN-BatteryInfo +BLHeli ESC +SumOfFollowing +FuelFlow + +True + + + +Disabled +Pixhawk/Pixracer/Navio2/Pixhawk2_PM1 +Pixhawk2_PM2 +CubeOrange +CubeOrange_PM2 +PX4-v1 + +True + + + +Disabled +Pixhawk/Pixracer/Navio2/Pixhawk2_PM1 +Pixhawk2_PM2 +CubeOrange +CubeOrange_PM2 +PX4-v1 + +True + + + + +A/V +ampere per volt + + +V +volt + + +mAh +milliampere hour +50 + + +W +watt +1 + + + + +s +seconds +1 +0 120 + + + +Raw Voltage +Sag Compensated Voltage + + + +V +volt +0.1 + + +mAh +milliampere hour +50 + + +V +volt +0.1 + + +mAh +milliampere hour +50 + + + +None +RTL +Hold +SmartRTL +SmartRTL or Hold +Terminate + + + + +None +RTL +Hold +SmartRTL +SmartRTL or Hold +Terminate + + + +V +volt +0.1 + + +mAh +milliampere hour +50 + + + + + +Disabled +Analog Voltage Only +Analog Voltage and Current +Solo +Bebop +SMBus-Maxell +UAVCAN-BatteryInfo +BLHeli ESC +SumOfFollowing +FuelFlow + +True + + + +Disabled +Pixhawk/Pixracer/Navio2/Pixhawk2_PM1 +Pixhawk2_PM2 +CubeOrange +CubeOrange_PM2 +PX4-v1 + +True + + + +Disabled +Pixhawk/Pixracer/Navio2/Pixhawk2_PM1 +Pixhawk2_PM2 +CubeOrange +CubeOrange_PM2 +PX4-v1 + +True + + + + +A/V +ampere per volt + + +V +volt + + +mAh +milliampere hour +50 + + +W +watt +1 + + + + +s +seconds +1 +0 120 + + + +Raw Voltage +Sag Compensated Voltage + + + +V +volt +0.1 + + +mAh +milliampere hour +50 + + +V +volt +0.1 + + +mAh +milliampere hour +50 + + + +None +RTL +Hold +SmartRTL +SmartRTL or Hold +Terminate + + + + +None +RTL +Hold +SmartRTL +SmartRTL or Hold +Terminate + + + +V +volt +0.1 + + +mAh +milliampere hour +50 + + + + + +Disabled +Analog Voltage Only +Analog Voltage and Current +Solo +Bebop +SMBus-Maxell +UAVCAN-BatteryInfo +BLHeli ESC +SumOfFollowing +FuelFlow + +True + + + +Disabled +Pixhawk/Pixracer/Navio2/Pixhawk2_PM1 +Pixhawk2_PM2 +CubeOrange +CubeOrange_PM2 +PX4-v1 + +True + + + +Disabled +Pixhawk/Pixracer/Navio2/Pixhawk2_PM1 +Pixhawk2_PM2 +CubeOrange +CubeOrange_PM2 +PX4-v1 + +True + + + + +A/V +ampere per volt + + +V +volt + + +mAh +milliampere hour +50 + + +W +watt +1 + + + + +s +seconds +1 +0 120 + + + +Raw Voltage +Sag Compensated Voltage + + + +V +volt +0.1 + + +mAh +milliampere hour +50 + + +V +volt +0.1 + + +mAh +milliampere hour +50 + + + +None +RTL +Hold +SmartRTL +SmartRTL or Hold +Terminate + + + + +None +RTL +Hold +SmartRTL +SmartRTL or Hold +Terminate + + + +V +volt +0.1 + + +mAh +milliampere hour +50 + + + + + +Disabled +Analog Voltage Only +Analog Voltage and Current +Solo +Bebop +SMBus-Maxell +UAVCAN-BatteryInfo +BLHeli ESC +SumOfFollowing +FuelFlow + +True + + + +Disabled +Pixhawk/Pixracer/Navio2/Pixhawk2_PM1 +Pixhawk2_PM2 +CubeOrange +CubeOrange_PM2 +PX4-v1 + +True + + + +Disabled +Pixhawk/Pixracer/Navio2/Pixhawk2_PM1 +Pixhawk2_PM2 +CubeOrange +CubeOrange_PM2 +PX4-v1 + +True + + + + +A/V +ampere per volt + + +V +volt + + +mAh +milliampere hour +50 + + +W +watt +1 + + + + +s +seconds +1 +0 120 + + + +Raw Voltage +Sag Compensated Voltage + + + +V +volt +0.1 + + +mAh +milliampere hour +50 + + +V +volt +0.1 + + +mAh +milliampere hour +50 + + + +None +RTL +Hold +SmartRTL +SmartRTL or Hold +Terminate + + + + +None +RTL +Hold +SmartRTL +SmartRTL or Hold +Terminate + + + +V +volt +0.1 + + +mAh +milliampere hour +50 + + + + + +Disabled +Analog Voltage Only +Analog Voltage and Current +Solo +Bebop +SMBus-Maxell +UAVCAN-BatteryInfo +BLHeli ESC +SumOfFollowing +FuelFlow + +True + + + +Disabled +Pixhawk/Pixracer/Navio2/Pixhawk2_PM1 +Pixhawk2_PM2 +CubeOrange +CubeOrange_PM2 +PX4-v1 + +True + + + +Disabled +Pixhawk/Pixracer/Navio2/Pixhawk2_PM1 +Pixhawk2_PM2 +CubeOrange +CubeOrange_PM2 +PX4-v1 + +True + + + + +A/V +ampere per volt + + +V +volt + + +mAh +milliampere hour +50 + + +W +watt +1 + + + + +s +seconds +1 +0 120 + + + +Raw Voltage +Sag Compensated Voltage + + + +V +volt +0.1 + + +mAh +milliampere hour +50 + + +V +volt +0.1 + + +mAh +milliampere hour +50 + + + +None +RTL +Hold +SmartRTL +SmartRTL or Hold +Terminate + + + + +None +RTL +Hold +SmartRTL +SmartRTL or Hold +Terminate + + + +V +volt +0.1 + + +mAh +milliampere hour +50 + + + + + +Disabled +Analog Voltage Only +Analog Voltage and Current +Solo +Bebop +SMBus-Maxell +UAVCAN-BatteryInfo +BLHeli ESC +SumOfFollowing +FuelFlow + +True + + + +Disabled +Pixhawk/Pixracer/Navio2/Pixhawk2_PM1 +Pixhawk2_PM2 +CubeOrange +CubeOrange_PM2 +PX4-v1 + +True + + + +Disabled +Pixhawk/Pixracer/Navio2/Pixhawk2_PM1 +Pixhawk2_PM2 +CubeOrange +CubeOrange_PM2 +PX4-v1 + +True + + + + +A/V +ampere per volt + + +V +volt + + +mAh +milliampere hour +50 + + +W +watt +1 + + + + +s +seconds +1 +0 120 + + + +Raw Voltage +Sag Compensated Voltage + + + +V +volt +0.1 + + +mAh +milliampere hour +50 + + +V +volt +0.1 + + +mAh +milliampere hour +50 + + + +None +RTL +Hold +SmartRTL +SmartRTL or Hold +Terminate + + + + +None +RTL +Hold +SmartRTL +SmartRTL or Hold +Terminate + + + +V +volt +0.1 + + +mAh +milliampere hour +50 + + + + + +Disabled +Analog Voltage Only +Analog Voltage and Current +Solo +Bebop +SMBus-Maxell +UAVCAN-BatteryInfo +BLHeli ESC +SumOfFollowing +FuelFlow + +True + + + +Disabled +Pixhawk/Pixracer/Navio2/Pixhawk2_PM1 +Pixhawk2_PM2 +CubeOrange +CubeOrange_PM2 +PX4-v1 + +True + + + +Disabled +Pixhawk/Pixracer/Navio2/Pixhawk2_PM1 +Pixhawk2_PM2 +CubeOrange +CubeOrange_PM2 +PX4-v1 + +True + + + + +A/V +ampere per volt + + +V +volt + + +mAh +milliampere hour +50 + + +W +watt +1 + + + + +s +seconds +1 +0 120 + + + +Raw Voltage +Sag Compensated Voltage + + + +V +volt +0.1 + + +mAh +milliampere hour +50 + + +V +volt +0.1 + + +mAh +milliampere hour +50 + + + +None +RTL +Hold +SmartRTL +SmartRTL or Hold +Terminate + + + + +None +RTL +Hold +SmartRTL +SmartRTL or Hold +Terminate + + + +V +volt +0.1 + + +mAh +milliampere hour +50 + + + + + +Disabled +Analog Voltage Only +Analog Voltage and Current +Solo +Bebop +SMBus-Maxell +UAVCAN-BatteryInfo +BLHeli ESC +SumOfFollowing +FuelFlow + +True + + + +Disabled +Pixhawk/Pixracer/Navio2/Pixhawk2_PM1 +Pixhawk2_PM2 +CubeOrange +CubeOrange_PM2 +PX4-v1 + +True + + + +Disabled +Pixhawk/Pixracer/Navio2/Pixhawk2_PM1 +Pixhawk2_PM2 +CubeOrange +CubeOrange_PM2 +PX4-v1 + +True + + + + +A/V +ampere per volt + + +V +volt + + +mAh +milliampere hour +50 + + +W +watt +1 + + + + +s +seconds +1 +0 120 + + + +Raw Voltage +Sag Compensated Voltage + + + +V +volt +0.1 + + +mAh +milliampere hour +50 + + +V +volt +0.1 + + +mAh +milliampere hour +50 + + + +None +RTL +Hold +SmartRTL +SmartRTL or Hold +Terminate + + + + +None +RTL +Hold +SmartRTL +SmartRTL or Hold +Terminate + + + +V +volt +0.1 + + +mAh +milliampere hour +50 + + + + + +Disabled +Analog Voltage Only +Analog Voltage and Current +Solo +Bebop +SMBus-Maxell +UAVCAN-BatteryInfo +BLHeli ESC +SumOfFollowing +FuelFlow + +True + + + +Disabled +Pixhawk/Pixracer/Navio2/Pixhawk2_PM1 +Pixhawk2_PM2 +CubeOrange +CubeOrange_PM2 +PX4-v1 + +True + + + +Disabled +Pixhawk/Pixracer/Navio2/Pixhawk2_PM1 +Pixhawk2_PM2 +CubeOrange +CubeOrange_PM2 +PX4-v1 + +True + + + + +A/V +ampere per volt + + +V +volt + + +mAh +milliampere hour +50 + + +W +watt +1 + + + + +s +seconds +1 +0 120 + + + +Raw Voltage +Sag Compensated Voltage + + + +V +volt +0.1 + + +mAh +milliampere hour +50 + + +V +volt +0.1 + + +mAh +milliampere hour +50 + + + +None +RTL +Hold +SmartRTL +SmartRTL or Hold +Terminate + + + + +None +RTL +Hold +SmartRTL +SmartRTL or Hold +Terminate + + + +V +volt +0.1 + + +mAh +milliampere hour +50 + + + + + +None +Pozyx +Marvelmind +SITL + + + +deg +degrees +0.000001 +-90 90 + + +deg +degrees +0.000001 +-180 180 + + +m +meters +1 +0 10000 + + +deg +degrees +1 +-180 +180 + + + + + +No PWMs +One PWMs +Two PWMs +Three PWMs +Four PWMs +Five PWMs +Six PWMs +Seven PWMs +Eight PWMs + +True + + + +Disabled +Enabled +Auto + +True + + + +Disabled +Enabled +Auto + +True + + + +Disabled +Enabled + +True + + + +Disabled +50Hz +75Hz +100Hz +150Hz +200Hz +250Hz +300Hz + +True + + +-32768 32767 + + + +Disabled +Enabled + +0:Ch1,1:Ch2,2:Ch3,3:Ch4,4:Ch5,5:Ch6,6:Ch7,7:Ch8,8:Ch9,9:Ch10,10:Ch11,11:Ch12,12:Ch13,13:Ch14 +True + + +-1 80 +degC +degrees Celsius + + + +AUTO +PX4V1 +Pixhawk +Cube/Pixhawk2 +Pixracer +PixhawkMini +Pixhawk2Slim +VRBrain 5.1 +VRBrain 5.2 +VR Micro Brain 5.1 +VR Micro Brain 5.2 +VRBrain Core 1.0 +VRBrain 5.4 +Intel Aero FC +AUAV2.1 + +True + + + +Disabled +Enabled + +True + + +0:ActiveForSafetyEnable,1:ActiveForSafetyDisable,2:ActiveWhenArmed,3:Force safety on when the aircraft disarms + + +V +volt +4.0 5.5 +0.1 + + +V +volt +3.3 12.0 +0.1 + + +0 32 +1 + + + +3.3V +5V + + + +0:Enable hardware watchdog + + + + + +None +CYRF6936 + + + + +Auto +DSM2 +DSMX + + + +0 4 + + + +NotDisabled +Disabled + + + +0 16 + + +0 16 + + + +Disabled +Enabled + + + +1 8 + + + +Disabled +MinChannel +MidChannel +MaxChannel +MinChannelCW +MidChannelCW +MaxChannelCW + + + + +Mode1 +Mode2 + + + + +Disabled +TestChan1 +TestChan2 +TestChan3 +TestChan4 +TestChan5 +TestChan6 +TestChan7 +TestChan8 + + + +0 16 + + +0 16 + + +1 8 + + +0 40 + + +0 120 + + +0 31 + + + + +0:GPS,1:MAVLINK_SYSTEM_TIME,2:HW + + + + + +Disabled +Enabled + + + + +Disabled +AUXOUT1 +AUXOUT2 +AUXOUT3 +AUXOUT4 +AUXOUT5 +AUXOUT6 + + + + +Disabled +AUXOUT1 +AUXOUT2 +AUXOUT3 +AUXOUT4 +AUXOUT5 +AUXOUT6 + + + + +Disabled +AUXOUT1 +AUXOUT2 +AUXOUT3 +AUXOUT4 +AUXOUT5 +AUXOUT6 + + + + +Disabled +AUXOUT1 +AUXOUT2 +AUXOUT3 +AUXOUT4 +AUXOUT5 +AUXOUT6 + + + +0 3600 + + + + + +Servo +Relay + + + +ds +deciseconds +0 50 + + +PWM +PWM in microseconds +1000 2000 + + +PWM +PWM in microseconds +1000 2000 + + +m +meters +0 1000 + + + +Low +High + + + +ms +milliseconds +0 10000 + + +deg +degrees +0 180 + + + +Disabled +AUX1 +AUX2 +AUX3 +AUX4 +AUX5 +AUX6 + +True + + + +TriggerLow +TriggerHigh + + + + +Always +Only when in AUTO + + + + +Default +BMMCC + + + + + + +Disabled +UAVCAN +KDECAN +ToshibaCAN + +True + + + + + + + + +1 250 + + +0: Servo 1, 1: Servo 2, 2: Servo 3, 3: Servo 4, 4: Servo 5, 5: Servo 6, 6: Servo 7, 7: Servo 8, 8: Servo 9, 9: Servo 10, 10: Servo 11, 11: Servo 12, 12: Servo 13, 13: Servo 14, 14: Servo 15 + + +0: ESC 1, 1: ESC 2, 2: ESC 3, 3: ESC 4, 4: ESC 5, 5: ESC 6, 6: ESC 7, 7: ESC 8, 8: ESC 9, 9: ESC 10, 10: ESC 11, 11: ESC 12, 12: ESC 13, 13: ESC 14, 14: ESC 15, 15: ESC 16 + + +1 200 +Hz +hertz + + + + + +Disabled +UAVCAN +KDECAN +ToshibaCAN + +True + + + + + + + + +1 250 + + +0: Servo 1, 1: Servo 2, 2: Servo 3, 3: Servo 4, 4: Servo 5, 5: Servo 6, 6: Servo 7, 7: Servo 8, 8: Servo 9, 9: Servo 10, 10: Servo 11, 11: Servo 12, 12: Servo 13, 13: Servo 14, 14: Servo 15 + + +0: ESC 1, 1: ESC 2, 2: ESC 3, 3: ESC 4, 4: ESC 5, 5: ESC 6, 6: ESC 7, 7: ESC 8, 8: ESC 9, 9: ESC 10, 10: ESC 11, 11: ESC 12, 12: ESC 13, 13: ESC 14, 14: ESC 15, 15: ESC 16 + + +1 200 +Hz +hertz + + + + + +Disabled +UAVCAN +KDECAN +ToshibaCAN + +True + + + + + + + + +1 250 + + +0: Servo 1, 1: Servo 2, 2: Servo 3, 3: Servo 4, 4: Servo 5, 5: Servo 6, 6: Servo 7, 7: Servo 8, 8: Servo 9, 9: Servo 10, 10: Servo 11, 11: Servo 12, 12: Servo 13, 13: Servo 14, 14: Servo 15 + + +0: ESC 1, 1: ESC 2, 2: ESC 3, 3: ESC 4, 4: ESC 5, 5: ESC 6, 6: ESC 7, 7: ESC 8, 8: ESC 9, 9: ESC 10, 10: ESC 11, 11: ESC 12, 12: ESC 13, 13: ESC 14, 14: ESC 15, 15: ESC 16 + + +1 200 +Hz +hertz + + + + + +Disabled +First driver +Second driver + +True + + +10000 1000000 + + + +Disabled +Major messages +All messages + + + + + + +Disabled +First driver +Second driver + +True + + +10000 1000000 + + + +Disabled +Major messages +All messages + + + + + + +Disabled +First driver +Second driver + +True + + +10000 1000000 + + + +Disabled +Major messages +All messages + + + + + + +Disabled +First driver +Second driver + +True + + + +Disabled +Serial0 +Serial1 +Serial2 +Serial3 +Serial4 +Serial5 +Serial6 + + + +0 32767 + + + + +-400 400 +mGauss +milligauss +1 + + +-400 400 +mGauss +milligauss +1 + + +-400 400 +mGauss +milligauss +1 + + +-3.142 3.142 +rad +radians +0.01 + + + +Disabled +Internal-Learning +EKF-Learning +InFlight-Learning + + + + +Disabled +Enabled + + + + +Disabled +Enabled + + + + +Disabled +Use Throttle +Use Current + + + +-1000 1000 +mGauss/A +milligauss per ampere +1 + + +-1000 1000 +mGauss/A +milligauss per ampere +1 + + +-1000 1000 +mGauss/A +milligauss per ampere +1 + + + +None +Yaw45 +Yaw90 +Yaw135 +Yaw180 +Yaw225 +Yaw270 +Yaw315 +Roll180 +Roll180Yaw45 +Roll180Yaw90 +Roll180Yaw135 +Pitch180 +Roll180Yaw225 +Roll180Yaw270 +Roll180Yaw315 +Roll90 +Roll90Yaw45 +Roll90Yaw90 +Roll90Yaw135 +Roll270 +Roll270Yaw45 +Roll270Yaw90 +Roll270Yaw135 +Pitch90 +Pitch270 +Pitch180Yaw90 +Pitch180Yaw270 +Roll90Pitch90 +Roll180Pitch90 +Roll270Pitch90 +Roll90Pitch180 +Roll270Pitch180 +Roll90Pitch270 +Roll180Pitch270 +Roll270Pitch270 +Roll90Pitch180Yaw90 +Roll90Yaw270 +Yaw293Pitch68Roll180 +Pitch315 +Roll90Pitch315 + + + + +Internal +External +ForcedExternal + + + +-400 400 +mGauss +milligauss +1 + + +-400 400 +mGauss +milligauss +1 + + +-400 400 +mGauss +milligauss +1 + + +-1000 1000 +mGauss/A +milligauss per ampere +1 + + +-1000 1000 +mGauss/A +milligauss per ampere +1 + + +-1000 1000 +mGauss/A +milligauss per ampere +1 + + + +FirstCompass +SecondCompass +ThirdCompass + + + +-400 400 +mGauss +milligauss +1 + + +-400 400 +mGauss +milligauss +1 + + +-400 400 +mGauss +milligauss +1 + + +-1000 1000 +mGauss/A +milligauss per ampere +1 + + +-1000 1000 +mGauss/A +milligauss per ampere +1 + + +-1000 1000 +mGauss/A +milligauss per ampere +1 + + +True + + +True + + +True + + + +Disabled +Enabled + + + + +None +Yaw45 +Yaw90 +Yaw135 +Yaw180 +Yaw225 +Yaw270 +Yaw315 +Roll180 +Roll180Yaw45 +Roll180Yaw90 +Roll180Yaw135 +Pitch180 +Roll180Yaw225 +Roll180Yaw270 +Roll180Yaw315 +Roll90 +Roll90Yaw45 +Roll90Yaw90 +Roll90Yaw135 +Roll270 +Roll270Yaw45 +Roll270Yaw90 +Roll270Yaw135 +Pitch90 +Pitch270 +Pitch180Yaw90 +Pitch180Yaw270 +Roll90Pitch90 +Roll180Pitch90 +Roll270Pitch90 +Roll90Pitch180 +Roll270Pitch180 +Roll90Pitch270 +Roll180Pitch270 +Roll270Pitch270 +Roll90Pitch180Yaw90 +Roll90Yaw270 +Yaw293Pitch68Roll180 +Pitch315 +Roll90Pitch315 + + + + +Internal +External +ForcedExternal + + + + +Disabled +Enabled + + + + +None +Yaw45 +Yaw90 +Yaw135 +Yaw180 +Yaw225 +Yaw270 +Yaw315 +Roll180 +Roll180Yaw45 +Roll180Yaw90 +Roll180Yaw135 +Pitch180 +Roll180Yaw225 +Roll180Yaw270 +Roll180Yaw315 +Roll90 +Roll90Yaw45 +Roll90Yaw90 +Roll90Yaw135 +Roll270 +Roll270Yaw45 +Roll270Yaw90 +Roll270Yaw135 +Pitch90 +Pitch270 +Pitch180Yaw90 +Pitch180Yaw270 +Roll90Pitch90 +Roll180Pitch90 +Roll270Pitch90 +Roll90Pitch180 +Roll270Pitch180 +Roll90Pitch270 +Roll180Pitch270 +Roll270Pitch270 +Roll90Pitch180Yaw90 +Roll90Yaw270 +Yaw293Pitch68Roll180 +Pitch315 +Roll90Pitch315 + + + + +Internal +External +ForcedExternal + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +4 32 + +Very Strict +Strict +Default +Relaxed + +0.1 + + +500 3000 +1 + + +0:HMC5883,1:LSM303D,2:AK8963,3:BMM150,4:LSM9DS1,5:LIS3MDL,6:AK09916,7:IST8310,8:ICM20948,9:MMC3416,11:UAVCAN,12:QMC5883,14:MAG3110,15:IST8308 + + +% +percent +0 100 +1 + + + +Disabled +CheckOnly +CheckAndFix + + + + + + + + + + +Disabled +Enabled + + + + + + +Disabled +Enabled + + + +0 2 +0.01 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Disabled +Enabled + +True + + + +GPS 3D Vel and 2D Pos +GPS 2D vel and 2D pos +GPS 2D pos +No GPS + + + +0.05 5.0 +0.05 +m/s +meters per second + + +0.05 5.0 +0.05 +m/s +meters per second + + +100 1000 +25 + + +0.1 10.0 +0.1 +m +meters + + +100 1000 +25 + + +10 100 +5 +m +meters + + + +Use Baro +Use Range Finder +Use GPS +Use Range Beacon + +True + + +0.1 10.0 +0.1 +m +meters + + +100 1000 +25 + + +0 250 +10 +ms +milliseconds +True + + +0.01 0.5 +0.01 +Gauss +gauss + + + +When flying +When manoeuvring +Never +After first climb yaw reset +Always + + + +100 1000 +25 + + +0.5 5.0 +0.1 +m/s +meters per second + + +100 1000 +25 + + +0.1 10.0 +0.1 +m +meters + + +100 1000 +25 + + +1.0 4.0 +0.1 +rad/s +radians per second + + +0.05 1.0 +0.05 +rad/s +radians per second + + +100 1000 +25 + + +0 127 +10 +ms +milliseconds +True + + +0.0001 0.1 +0.0001 +rad/s +radians per second + + +0.01 1.0 +0.01 +m/s/s +meters per square second + + +0.00001 0.001 +rad/s/s +radians per square second + + +0.000001 0.001 +Hz +hertz + + +0.00001 0.005 +m/s/s/s +meters per cubic second + + +0.01 1.0 +0.1 +m/s/s +meters per square second + + +0.0 1.0 +0.1 + + +0:NSats,1:HDoP,2:speed error,3:position error,4:yaw error,5:pos drift,6:vert speed,7:horiz speed + + +0:FirstIMU,1:SecondIMU,2:ThirdIMU,3:FourthIMU,4:FifthIMU,5:SixthIMU +True + + +50 200 +% +percent + + +0.5 50.0 +m +meters + + +0:FirstIMU,1:SecondIMU,2:ThirdIMU,3:FourthIMU,4:FifthIMU,5:SixthIMU +True + + +0.05 1.0 +0.05 +rad +radians + + +100 1000 +25 + + +10 50 +5 +cs +centiseconds + + +0.00001 0.01 +Gauss/s +gauss per second + + +0.00001 0.01 +Gauss/s +gauss per second + + +-1 70 +1 +% +percent + + +0 0.2 +0.01 + + +0.1 10.0 +0.1 +m +meters + + +100 1000 +25 + + +0 127 +10 +ms +milliseconds +True + + +2.0 6.0 +0.5 +m/s +meters per second + + +0:FirstEKF,1:SecondEKF,2:ThirdEKF,3:FourthEKF,4:FifthEKF,5:SixthEKF +True + + +0:Correct when using Baro height,1:Correct when using range finder height,2:Apply corrections to local position +True + + +0 127 +1 +ms +milliseconds +True + + + +None +Navigation +Terrain + +True + + +0 500 +mGauss +milligauss + + + + + +Disabled +Enabled + +True + + + +GPS 3D Vel and 2D Pos +GPS 2D vel and 2D pos +GPS 2D pos +No GPS + + + +0.05 5.0 +0.05 +m/s +meters per second + + +0.05 5.0 +0.05 +m/s +meters per second + + +100 1000 +25 + + +0.1 10.0 +0.1 +m +meters + + +100 1000 +25 + + +10 100 +5 +m +meters + + + +Use Baro +Use Range Finder +Use GPS +Use Range Beacon + +True + + +0.1 10.0 +0.1 +m +meters + + +100 1000 +25 + + +0 250 +10 +True +ms +milliseconds + + +0.01 0.5 +0.01 +Gauss +gauss + + + +When flying +When manoeuvring +Never +After first climb yaw reset +Always + +True + + +100 1000 +25 + + +0.5 5.0 +0.1 +m/s +meters per second + + +100 1000 +25 + + +0.1 10.0 +0.1 +m +meters + + +100 1000 +25 + + +1.0 4.0 +0.1 +rad/s +radians per second + + +0.05 1.0 +0.05 +rad/s +radians per second + + +100 1000 +25 + + +0 250 +10 +True +ms +milliseconds + + +0.0001 0.1 +0.0001 +rad/s +radians per second + + +0.01 1.0 +0.01 +m/s/s +meters per square second + + +0.00001 0.001 +rad/s/s +radians per square second + + +0.00001 0.005 +m/s/s/s +meters per cubic second + + +0.01 1.0 +0.1 +m/s/s +meters per square second + + +0.0 1.0 +0.1 + + +0:NSats,1:HDoP,2:speed error,3:position error,4:yaw error,5:pos drift,6:vert speed,7:horiz speed + + +0:FirstIMU,1:SecondIMU,2:ThirdIMU,3:FourthIMU,4:FifthIMU,5:SixthIMU +True + + +50 200 +% +percent + + +0.5 50.0 +m +meters + + +0:FirstIMU,1:SecondIMU,2:ThirdIMU,3:FourthIMU,4:FifthIMU,5:SixthIMU +True + + +0.05 1.0 +0.05 +rad +radians + + +100 1000 +25 + + +10 50 +5 +cs +centiseconds + + +0.00001 0.01 +Gauss/s +gauss per second + + +0.00001 0.01 +Gauss/s +gauss per second + + +-1 70 +1 +% +percent + + +0 0.2 +0.01 + + +0.1 10.0 +0.1 +m +meters + + +100 1000 +25 + + +0 250 +10 +True +ms +milliseconds + + +2.0 6.0 +0.5 +m/s +meters per second + + +0.5 2.5 +0.1 +m/s/s +meters per square second + + +0:FirstEKF,1:SecondEKF,2:ThirdEKF,3:FourthEKF,4:FifthEKF,5:SixthEKF +True + + +0:Correct when using Baro height,1:Correct when using range finder height,2:Apply corrections to local position +True + + +0.05 0.5 +0.05 +m/s +meters per second + + +0.5 5.0 +0.1 +m/s +meters per second + + +0.01 1.0 +0.1 +m/s +meters per second + + + +None +Navigation +Terrain + +True + + + + + +Disabled +Enabled + + + + +None +Altitude +Circle +Altitude and Circle +Polygon +Altitude and Polygon +Circle and Polygon +All + +0:Altitude,1:Circle,2:Polygon + + + +Report Only +RTL or Land +Always Land +SmartRTL or RTL or Land +Brake or Land + + + +m +meters +10 1000 +1 + + +m +meters +30 10000 + + +m +meters +1 10 + + +1 20 + + +m +meters +-100 100 +1 + + + + + +Disabled +Enabled + + + +0 255 + + +m +meters +1 1000 + + + +North-East-Down +Relative to lead vehicle heading + + + +-100 100 +m +meters +1 + + +-100 100 +m +meters +1 + + +-100 100 +m +meters +1 + + + +None +Face Lead Vehicle +Same as Lead vehicle +Direction of Flight + + + +0.01 1.00 +0.01 + + + +absolute + relative + + + + + +Pa +pascal +1 +True +True + + +degC +degrees Celsius +1 +True + + +m +meters +0.1 + + + +FirstBaro +2ndBaro +3rdBaro + + + + +Disabled +Bus0 +Bus1 + + + +1.0:Freshwater,1.024:Saltwater + + +Pa +pascal +1 +True +True + + +Pa +pascal +1 +True +True + + +% +percent +0 100 +1 + + +0:BMP085,1:BMP280,2:MS5611,3:MS5607,4:MS5637,5:FBM320,6:DPS280,7:LPS25H,8:Keller + +BMP085 +BMP280 +MS5611 +MS5607 +MS5637 +FBM320 +DPS280 +LPS25H +Keller + + + + + + +None +AUTO +uBlox +MTK +MTK19 +NMEA +SiRF +HIL +SwiftNav +UAVCAN +SBF +GSOF +ERB +MAV +NOVA + +True + + + +None +AUTO +uBlox +MTK +MTK19 +NMEA +SiRF +HIL +SwiftNav +UAVCAN +SBF +GSOF +ERB +MAV +NOVA + +True + + + +Portable +Stationary +Pedestrian +Automotive +Sea +Airborne1G +Airborne2G +Airborne4G + + + + +Disabled +UseBest +Blend +UseSecond + + + + +Any +FloatRTK +IntegerRTK + +True + + + +Disabled +Enabled +NoChange + + + +-100 90 +deg +degrees + + + +send to first GPS +send to 2nd GPS +send to all + + + + +None (0x0000) +All (0xFFFF) +External only (0xFF00) + + + + +Ignore +Always log +Stop logging when disarmed (SBF only) +Only log every five samples (uBlox only) + +True + + + +Leave as currently configured +GPS-NoSBAS +GPS+SBAS +Galileo-NoSBAS +Galileo+SBAS +Beidou +GPS+IMES+QZSS+SBAS (Japan Only) +GLONASS +GLONASS+SBAS +GPS+GLONASS+SBAS + +0:GPS,1:SBAS,2:Galileo,3:Beidou,4:IMES,5:QZSS,6:GLOSNASS + + + +Do not save config +Save config +Save only when needed + + + + +Leave as currently configured +GPS-NoSBAS +GPS+SBAS +Galileo-NoSBAS +Galileo+SBAS +Beidou +GPS+IMES+QZSS+SBAS (Japan Only) +GLONASS +GLONASS+SBAS +GPS+GLONASS+SBAS + +0:GPS,1:SBAS,2:Galileo,3:Beidou,4:IMES,5:QZSS,6:GLOSNASS + + + +Disables automatic configuration +Enable automatic configuration + + + +ms +milliseconds + +10Hz +8Hz +5Hz + +50 200 + + +ms +milliseconds + +10Hz +8Hz +5Hz + +50 200 + + +m +meters +-10 10 + + +m +meters +-10 10 + + +m +meters +-10 10 + + +m +meters +-10 10 + + +m +meters +-10 10 + + +m +meters +-10 10 + + +ms +milliseconds +0 250 +True + + +ms +milliseconds +0 250 +True + + +0:Horiz Pos,1:Vert Pos,2:Speed + + +s +seconds +5.0 30.0 + + + + + +Disabled +Enabled + + + + +None +Servo +EPM + + + +1000 2000 +PWM +PWM in microseconds + + +1000 2000 +PWM +PWM in microseconds + + +1000 2000 +PWM +PWM in microseconds + + +0 255 +s +seconds + + +0 255 + + + + +rad/s +radians per second + + +rad/s +radians per second + + +rad/s +radians per second + + +rad/s +radians per second + + +rad/s +radians per second + + +rad/s +radians per second + + +rad/s +radians per second + + +rad/s +radians per second + + +rad/s +radians per second + + +0.8 1.2 + + +0.8 1.2 + + +0.8 1.2 + + +m/s/s +meters per square second +-3.5 3.5 + + +m/s/s +meters per square second +-3.5 3.5 + + +m/s/s +meters per square second +-3.5 3.5 + + +0.8 1.2 + + +0.8 1.2 + + +0.8 1.2 + + +m/s/s +meters per square second +-3.5 3.5 + + +m/s/s +meters per square second +-3.5 3.5 + + +m/s/s +meters per square second +-3.5 3.5 + + +0.8 1.2 + + +0.8 1.2 + + +0.8 1.2 + + +m/s/s +meters per square second +-3.5 3.5 + + +m/s/s +meters per square second +-3.5 3.5 + + +m/s/s +meters per square second +-3.5 3.5 + + +Hz +hertz +0 256 + + +Hz +hertz +0 256 + + + +Disabled +Enabled + + + + +Disabled +Enabled + + + + +Disabled +Enabled + + + +0.05 50 + + + +Never +Start-up only + + + + +Don't adjust the trims +Assume first orientation was level +Assume ACC_BODYFIX is perfectly aligned to the vehicle + + + + +IMU 1 +IMU 2 +IMU 3 + + + +m +meters +-10 10 + + +m +meters +-10 10 + + +m +meters +-10 10 + + +m +meters +-10 10 + + +m +meters +-10 10 + + +m +meters +-10 10 + + +m +meters +-10 10 + + +m +meters +-10 10 + + +m +meters +-10 10 + + +True + + +True + + +True + + +True + + +True + + +True + + + +FirstIMUOnly +FirstAndSecondIMU + +0:FirstIMU,1:SecondIMU,2:ThirdIMU + + + +FirstIMUOnly +FirstAndSecondIMU +FirstSecondAndThirdIMU +AllIMUs + +0:FirstIMU,1:SecondIMU,2:ThirdIMU + + + + +32 + + + +None +First IMU +All + +0:IMU1,1:IMU2,2:IMU3 + + +0:Sensor-Rate Logging (sample at full sensor rate seen by AP), 1: Sample post-filtering + + +ms +milliseconds +10 + + +1 + + + + + +Disabled +Enabled + + + +10 400 +Hz +hertz + + +5 100 +Hz +hertz + + +5 30 +dB +decibel + + + + + +None +File +MAVLink +File and MAVLink +Block +Block and MAVLink + +0:File,1:MAVLink,2:Block + + + + + +Disabled +Enabled + + + + +Disabled +Enabled + + + + +Disabled +Enabled + + + +kB +kilobytes + + + + +0 32766 +1 + + + +Resume Mission +Restart Mission + + + +0:Clear Mission on reboot + + + + + +Retracted +Neutral +MavLink Targeting +RC Targeting +GPS Point + + + +deg +degrees +-180.00 179.99 +1 + + +deg +degrees +-180.00 179.99 +1 + + +deg +degrees +-180.00 179.99 +1 + + +deg +degrees +-180.00 179.99 +1 + + +deg +degrees +-180.00 179.99 +1 + + +deg +degrees +-180.00 179.99 +1 + + + +Disabled +Enabled + + + + +Disabled +Enabled + + + + +Disabled +Enabled + + + + +Disabled +RC5 +RC6 +RC7 +RC8 +RC9 +RC10 +RC11 +RC12 + + + +cdeg +centidegrees +-18000 17999 +1 + + +cdeg +centidegrees +-18000 17999 +1 + + + +Disabled +RC5 +RC6 +RC7 +RC8 +RC9 +RC10 +RC11 +RC12 + + + +cdeg +centidegrees +-18000 17999 +1 + + +cdeg +centidegrees +-18000 17999 +1 + + + +Disabled +RC5 +RC6 +RC7 +RC8 +RC9 +RC10 +RC11 +RC12 + + + +cdeg +centidegrees +-18000 17999 +1 + + +cdeg +centidegrees +-18000 17999 +1 + + +0 100 +1 + + +s +seconds +0.0 0.2 +.005 + + +s +seconds +0.0 0.2 +.005 + + + +None +Servo +3DR Solo +Alexmos Serial +SToRM32 MAVLink +SToRM32 Serial + +True + + + +Retracted +Neutral +MavLink Targeting +RC Targeting +GPS Point + + + +deg +degrees +-180.00 179.99 +1 + + +deg +degrees +-180.00 179.99 +1 + + +deg +degrees +-180.00 179.99 +1 + + +deg +degrees +-180.00 179.99 +1 + + +deg +degrees +-180.00 179.99 +1 + + +deg +degrees +-180.00 179.99 +1 + + + +Disabled +Enabled + + + + +Disabled +Enabled + + + + +Disabled +Enabled + + + + +Disabled +RC5 +RC6 +RC7 +RC8 +RC9 +RC10 +RC11 +RC12 + + + +cdeg +centidegrees +-18000 17999 +1 + + +cdeg +centidegrees +-18000 17999 +1 + + + +Disabled +RC5 +RC6 +RC7 +RC8 +RC9 +RC10 +RC11 +RC12 + + + +cdeg +centidegrees +-18000 17999 +1 + + +cdeg +centidegrees +-18000 17999 +1 + + + +Disabled +RC5 +RC6 +RC7 +RC8 +RC9 +RC10 +RC11 +RC12 + + + +cdeg +centidegrees +-18000 17999 +1 + + +cdeg +centidegrees +-18000 17999 +1 + + +s +seconds +0.0 0.2 +.005 + + +s +seconds +0.0 0.2 +.005 + + + +None +Servo +3DR Solo +Alexmos Serial +SToRM32 MAVLink +SToRM32 Serial + + + + + + +Normal +OneShot +OneShot125 +BrushedWithRelay +BrushedBiPolar +DShot150 +DShot300 +DShot600 +DShot1200 + +True + + +kHz +kilohertz +1 20 +1 +True + + + +PWM enabled while disarmed +PWM disabled while disarmed + + + +% +percent +0 20 +1 + + +% +percent +30 100 +1 + + +%/s +percent per second +0 1000 +1 + + +-1.0 1.0 + + +% +percent +0 100 + + +m/s +meters per second +0 10 + + + + +s +seconds +1 60 +1 + + +0.6 1.0 +0.05 + + +0 0.1 +0.01 + + +deg +degrees +0 89 + + + + + +Off +Low +Medium +High + + + + +Disable +Enable + + + + +Standard +MAVLink +OutbackChallenge + + + + +Disable +ssd1306 +sh1106 + + + + +Disabled +Aircraft +Rover + + + + +Disabled + + + +0:Build in LED, 1:Internal ToshibaLED, 2:External ToshibaLED, 3:External PCA9685, 4:Oreo LED, 5:UAVCAN, 6:NCP5623 External, 7:NCP5623 Internal + + + +LowIsOn +HighIsOn + + + + + + +Disabled +BendyRuler +Dijkstra + + + +m +meters +1 100 +1 + + +m +meters +1 100 +1 + + + + + +None +MAX7456 + +True + + + +Disable +Chan5 +Chan6 +Chan7 +Chan8 +Chan9 +Chan10 +Chan11 +Chan12 +Chan13 +Chan14 +Chan15 +Chan16 + + + +0:UseDecimalPack, 1:InvertedWindPointer, 2:InvertedAHRoll + + +True + + +0 31 +True + + +0 63 +True + + +0 99 + + +1 30 + + +0 100 + + + +Metric +Imperial +SI +Aviation + + + +1 20 + + +0 4 + + +0 4 + + +0 4 + + + + + +Disabled +Enabled + + + +900 2100 + + +900 2100 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +900 2100 + + +900 2100 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +900 2100 + + +900 2100 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +900 2100 + + +900 2100 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +None +LightWareSF40C +MAVLink +TeraRangerTower +RangeFinder +RPLidarA2 +TeraRangerTowerEvo +SITL +MorseSITL + +True + + + +Default +Upside Down + + + +deg +degrees +-180 180 + + +deg +degrees +0 360 + + +deg +degrees +0 45 + + +deg +degrees +0 360 + + +deg +degrees +0 45 + + +deg +degrees +0 360 + + +deg +degrees +0 45 + + +deg +degrees +0 360 + + +deg +degrees +0 45 + + +deg +degrees +0 360 + + +deg +degrees +0 45 + + +deg +degrees +0 360 + + +deg +degrees +0 45 + + + +None +LightWareSF40C +MAVLink +TeraRangerTower +RangeFinder +RPLidarA2 +TeraRangerTowerEvo + +True + + + +Default +Upside Down + + + +deg +degrees +-180 180 + + + + + + +km +kilometers +0.1 + + + +DoNotIncludeHome +IncludeHome + + + + + +0.0 120.0 +s +seconds + + +0:Ignore RC Receiver, 1:Ignore MAVLink Overrides, 2:Ignore Receiver Failsafe + + + + +PWM +PWM in microseconds +800 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + + +Normal +Reversed + + + +PWM +PWM in microseconds +0 200 + + + +Do Nothing +RTL +Save WP +Camera Trigger +Auto +Gripper +Relay On/Off +Lost Rover Sound +Motor Emergency Stop +Relay2 On/Off +Relay3 On/Off +Relay4 On/Off +Proximity Avoidance +ArmDisarm +SmartRTL +RC Override Enable +LearnCruise +Manual +Acro +Steering +Hold +Guided +Loiter +Follow +Clear Waypoints +Simple +Compass Learn +Sailboat Tack +GPS Disable +Relay5 +Relay6 + + + + + +PWM +PWM in microseconds +800 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + + +Normal +Reversed + + + +PWM +PWM in microseconds +0 200 + + + +Do Nothing +RTL +Save WP +Camera Trigger +Auto +Gripper +Relay On/Off +Lost Rover Sound +Motor Emergency Stop +Relay2 On/Off +Relay3 On/Off +Relay4 On/Off +Proximity Avoidance +ArmDisarm +SmartRTL +RC Override Enable +LearnCruise +Manual +Acro +Steering +Hold +Guided +Loiter +Follow +Clear Waypoints +Simple +Compass Learn +Sailboat Tack +GPS Disable +Relay5 +Relay6 + + + + + +PWM +PWM in microseconds +800 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + + +Normal +Reversed + + + +PWM +PWM in microseconds +0 200 + + + +Do Nothing +RTL +Save WP +Camera Trigger +Auto +Gripper +Relay On/Off +Lost Rover Sound +Motor Emergency Stop +Relay2 On/Off +Relay3 On/Off +Relay4 On/Off +Proximity Avoidance +ArmDisarm +SmartRTL +RC Override Enable +LearnCruise +Manual +Acro +Steering +Hold +Guided +Loiter +Follow +Clear Waypoints +Simple +Compass Learn +Sailboat Tack +GPS Disable +Relay5 +Relay6 + + + + + +PWM +PWM in microseconds +800 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + + +Normal +Reversed + + + +PWM +PWM in microseconds +0 200 + + + +Do Nothing +RTL +Save WP +Camera Trigger +Auto +Gripper +Relay On/Off +Lost Rover Sound +Motor Emergency Stop +Relay2 On/Off +Relay3 On/Off +Relay4 On/Off +Proximity Avoidance +ArmDisarm +SmartRTL +RC Override Enable +LearnCruise +Manual +Acro +Steering +Hold +Guided +Loiter +Follow +Clear Waypoints +Simple +Compass Learn +Sailboat Tack +GPS Disable +Relay5 +Relay6 + + + + + +PWM +PWM in microseconds +800 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + + +Normal +Reversed + + + +PWM +PWM in microseconds +0 200 + + + +Do Nothing +RTL +Save WP +Camera Trigger +Auto +Gripper +Relay On/Off +Lost Rover Sound +Motor Emergency Stop +Relay2 On/Off +Relay3 On/Off +Relay4 On/Off +Proximity Avoidance +ArmDisarm +SmartRTL +RC Override Enable +LearnCruise +Manual +Acro +Steering +Hold +Guided +Loiter +Follow +Clear Waypoints +Simple +Compass Learn +Sailboat Tack +GPS Disable +Relay5 +Relay6 + + + + + +PWM +PWM in microseconds +800 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + + +Normal +Reversed + + + +PWM +PWM in microseconds +0 200 + + + +Do Nothing +RTL +Save WP +Camera Trigger +Auto +Gripper +Relay On/Off +Lost Rover Sound +Motor Emergency Stop +Relay2 On/Off +Relay3 On/Off +Relay4 On/Off +Proximity Avoidance +ArmDisarm +SmartRTL +RC Override Enable +LearnCruise +Manual +Acro +Steering +Hold +Guided +Loiter +Follow +Clear Waypoints +Simple +Compass Learn +Sailboat Tack +GPS Disable +Relay5 +Relay6 + + + + + +PWM +PWM in microseconds +800 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + + +Normal +Reversed + + + +PWM +PWM in microseconds +0 200 + + + +Do Nothing +RTL +Save WP +Camera Trigger +Auto +Gripper +Relay On/Off +Lost Rover Sound +Motor Emergency Stop +Relay2 On/Off +Relay3 On/Off +Relay4 On/Off +Proximity Avoidance +ArmDisarm +SmartRTL +RC Override Enable +LearnCruise +Manual +Acro +Steering +Hold +Guided +Loiter +Follow +Clear Waypoints +Simple +Compass Learn +Sailboat Tack +GPS Disable +Relay5 +Relay6 + + + + + +PWM +PWM in microseconds +800 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + + +Normal +Reversed + + + +PWM +PWM in microseconds +0 200 + + + +Do Nothing +RTL +Save WP +Camera Trigger +Auto +Gripper +Relay On/Off +Lost Rover Sound +Motor Emergency Stop +Relay2 On/Off +Relay3 On/Off +Relay4 On/Off +Proximity Avoidance +ArmDisarm +SmartRTL +RC Override Enable +LearnCruise +Manual +Acro +Steering +Hold +Guided +Loiter +Follow +Clear Waypoints +Simple +Compass Learn +Sailboat Tack +GPS Disable +Relay5 +Relay6 + + + + + +PWM +PWM in microseconds +800 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + + +Normal +Reversed + + + +PWM +PWM in microseconds +0 200 + + + +Do Nothing +RTL +Save WP +Camera Trigger +Auto +Gripper +Relay On/Off +Lost Rover Sound +Motor Emergency Stop +Relay2 On/Off +Relay3 On/Off +Relay4 On/Off +Proximity Avoidance +ArmDisarm +SmartRTL +RC Override Enable +LearnCruise +Manual +Acro +Steering +Hold +Guided +Loiter +Follow +Clear Waypoints +Simple +Compass Learn +Sailboat Tack +GPS Disable +Relay5 +Relay6 + + + + + +PWM +PWM in microseconds +800 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + + +Normal +Reversed + + + +PWM +PWM in microseconds +0 200 + + + +Do Nothing +RTL +Save WP +Camera Trigger +Auto +Gripper +Relay On/Off +Lost Rover Sound +Motor Emergency Stop +Relay2 On/Off +Relay3 On/Off +Relay4 On/Off +Proximity Avoidance +ArmDisarm +SmartRTL +RC Override Enable +LearnCruise +Manual +Acro +Steering +Hold +Guided +Loiter +Follow +Clear Waypoints +Simple +Compass Learn +Sailboat Tack +GPS Disable +Relay5 +Relay6 + + + + + +PWM +PWM in microseconds +800 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + + +Normal +Reversed + + + +PWM +PWM in microseconds +0 200 + + + +Do Nothing +RTL +Save WP +Camera Trigger +Auto +Gripper +Relay On/Off +Lost Rover Sound +Motor Emergency Stop +Relay2 On/Off +Relay3 On/Off +Relay4 On/Off +Proximity Avoidance +ArmDisarm +SmartRTL +RC Override Enable +LearnCruise +Manual +Acro +Steering +Hold +Guided +Loiter +Follow +Clear Waypoints +Simple +Compass Learn +Sailboat Tack +GPS Disable +Relay5 +Relay6 + + + + + +PWM +PWM in microseconds +800 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + + +Normal +Reversed + + + +PWM +PWM in microseconds +0 200 + + + +Do Nothing +RTL +Save WP +Camera Trigger +Auto +Gripper +Relay On/Off +Lost Rover Sound +Motor Emergency Stop +Relay2 On/Off +Relay3 On/Off +Relay4 On/Off +Proximity Avoidance +ArmDisarm +SmartRTL +RC Override Enable +LearnCruise +Manual +Acro +Steering +Hold +Guided +Loiter +Follow +Clear Waypoints +Simple +Compass Learn +Sailboat Tack +GPS Disable +Relay5 +Relay6 + + + + + +PWM +PWM in microseconds +800 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + + +Normal +Reversed + + + +PWM +PWM in microseconds +0 200 + + + +Do Nothing +RTL +Save WP +Camera Trigger +Auto +Gripper +Relay On/Off +Lost Rover Sound +Motor Emergency Stop +Relay2 On/Off +Relay3 On/Off +Relay4 On/Off +Proximity Avoidance +ArmDisarm +SmartRTL +RC Override Enable +LearnCruise +Manual +Acro +Steering +Hold +Guided +Loiter +Follow +Clear Waypoints +Simple +Compass Learn +Sailboat Tack +GPS Disable +Relay5 +Relay6 + + + + + +PWM +PWM in microseconds +800 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + + +Normal +Reversed + + + +PWM +PWM in microseconds +0 200 + + + +Do Nothing +RTL +Save WP +Camera Trigger +Auto +Gripper +Relay On/Off +Lost Rover Sound +Motor Emergency Stop +Relay2 On/Off +Relay3 On/Off +Relay4 On/Off +Proximity Avoidance +ArmDisarm +SmartRTL +RC Override Enable +LearnCruise +Manual +Acro +Steering +Hold +Guided +Loiter +Follow +Clear Waypoints +Simple +Compass Learn +Sailboat Tack +GPS Disable +Relay5 +Relay6 + + + + + +PWM +PWM in microseconds +800 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + + +Normal +Reversed + + + +PWM +PWM in microseconds +0 200 + + + +Do Nothing +RTL +Save WP +Camera Trigger +Auto +Gripper +Relay On/Off +Lost Rover Sound +Motor Emergency Stop +Relay2 On/Off +Relay3 On/Off +Relay4 On/Off +Proximity Avoidance +ArmDisarm +SmartRTL +RC Override Enable +LearnCruise +Manual +Acro +Steering +Hold +Guided +Loiter +Follow +Clear Waypoints +Simple +Compass Learn +Sailboat Tack +GPS Disable +Relay5 +Relay6 + + + + + +PWM +PWM in microseconds +800 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + + +Normal +Reversed + + + +PWM +PWM in microseconds +0 200 + + + +Do Nothing +RTL +Save WP +Camera Trigger +Auto +Gripper +Relay On/Off +Lost Rover Sound +Motor Emergency Stop +Relay2 On/Off +Relay3 On/Off +Relay4 On/Off +Proximity Avoidance +ArmDisarm +SmartRTL +RC Override Enable +LearnCruise +Manual +Acro +Steering +Hold +Guided +Loiter +Follow +Clear Waypoints +Simple +Compass Learn +Sailboat Tack +GPS Disable +Relay5 +Relay6 + + + + + +1 8 +1 +True + + +1 8 +1 +True + + +1 8 +1 +True + + +1 8 +1 +True + + +1 8 +1 +True +1-8 + + +1 8 +1 +True +1-8 + + + + + +Disabled +BB Blue GP0 pin 4 +AUXOUT1 +AUXOUT2 +AUXOUT3 +AUXOUT4 +AUXOUT5 +AUXOUT6 +BB Blue GP0 pin 3 +BB Blue GP0 pin 6 +BB Blue GP0 pin 5 + + + + +Disabled +BB Blue GP0 pin 4 +AUXOUT1 +AUXOUT2 +AUXOUT3 +AUXOUT4 +AUXOUT5 +AUXOUT6 +BB Blue GP0 pin 3 +BB Blue GP0 pin 6 +BB Blue GP0 pin 5 + + + + +Disabled +BB Blue GP0 pin 4 +AUXOUT1 +AUXOUT2 +AUXOUT3 +AUXOUT4 +AUXOUT5 +AUXOUT6 +BB Blue GP0 pin 3 +BB Blue GP0 pin 6 +BB Blue GP0 pin 5 + + + + +Disabled +BB Blue GP0 pin 4 +AUXOUT1 +AUXOUT2 +AUXOUT3 +AUXOUT4 +AUXOUT5 +AUXOUT6 +BB Blue GP0 pin 3 +BB Blue GP0 pin 6 +BB Blue GP0 pin 5 + + + + +Off +On +NoChange + + + + +Disabled +BB Blue GP0 pin 4 +AUXOUT1 +AUXOUT2 +AUXOUT3 +AUXOUT4 +AUXOUT5 +AUXOUT6 +BB Blue GP0 pin 3 +BB Blue GP0 pin 6 +BB Blue GP0 pin 5 + + + + +Disabled +BB Blue GP0 pin 4 +AUXOUT1 +AUXOUT2 +AUXOUT3 +AUXOUT4 +AUXOUT5 +AUXOUT6 +BB Blue GP0 pin 3 +BB Blue GP0 pin 6 +BB Blue GP0 pin 5 + + + + + + +None +Analog +MaxbotixI2C +LidarLiteV2-I2C +PX4-PWM +BBB-PRU +LightWareI2C +LightWareSerial +Bebop +MAVLink +uLanding +LeddarOne +MaxbotixSerial +TeraRangerI2C +LidarLiteV3-I2C +VL53L0X +NMEA +WASP-LRF +BenewakeTF02 +BenewakeTFmini +LidarLightV3HP +PWM +BlueRoboticsPing +UAVCAN +BenewakeTFMiniPlus + + + + +Not Used +PX4-airspeed port +Pixhawk-airspeed port + + + +m/V +meters per volt +0.001 + + +V +volt +0.001 + + + +Linear +Inverted +Hyperbolic + + + +cm +centimeters +1 + + +cm +centimeters +1 + + + +Not Used +Pixhawk AUXOUT1 +Pixhawk AUXOUT2 +Pixhawk AUXOUT3 +Pixhawk AUXOUT4 +Pixhawk AUXOUT5 +Pixhawk AUXOUT6 +PX4 FMU Relay1 +PX4 FMU Relay2 +PX4IO Relay1 +PX4IO Relay2 +PX4IO ACC1 +PX4IO ACC2 + + + +ms +milliseconds +1 + + + +No +Yes + + + +m +meters +0 32767 + + +cm +centimeters +5 127 +1 + + +0 127 +1 + + +m +meters + + +m +meters + + +m +meters + + + +Forward +Forward-Right +Right +Back-Right +Back +Back-Left +Left +Forward-Left +Up +Down + + + + + +0 255 + + +0 255 + + +0 10000 + + +0 255 + + +-1 255 + + + +Low Speed +High Speed + + + + + + +None +Analog +MaxbotixI2C +LidarLiteV2-I2C +PX4-PWM +BBB-PRU +LightWareI2C +LightWareSerial +Bebop +MAVLink +uLanding +LeddarOne +MaxbotixSerial +TeraRangerI2C +LidarLiteV3-I2C +VL53L0X +NMEA +WASP-LRF +BenewakeTF02 +BenewakeTFmini +LidarLightV3HP +PWM +BlueRoboticsPing +UAVCAN +BenewakeTFMiniPlus + + + + +Not Used +PX4-airspeed port +Pixhawk-airspeed port + + + +m/V +meters per volt +0.001 + + +V +volt +0.001 + + + +Linear +Inverted +Hyperbolic + + + +cm +centimeters +1 + + +cm +centimeters +1 + + + +Not Used +Pixhawk AUXOUT1 +Pixhawk AUXOUT2 +Pixhawk AUXOUT3 +Pixhawk AUXOUT4 +Pixhawk AUXOUT5 +Pixhawk AUXOUT6 +PX4 FMU Relay1 +PX4 FMU Relay2 +PX4IO Relay1 +PX4IO Relay2 +PX4IO ACC1 +PX4IO ACC2 + + + +ms +milliseconds +1 + + + +No +Yes + + + +m +meters +0 32767 + + +cm +centimeters +5 127 +1 + + +0 127 +1 + + +m +meters + + +m +meters + + +m +meters + + + +Forward +Forward-Right +Right +Back-Right +Back +Back-Left +Left +Forward-Left +Up +Down + + + + + +0 255 + + +0 255 + + +0 10000 + + +0 255 + + +-1 255 + + + +Low Speed +High Speed + + + + + + +None +Analog +MaxbotixI2C +LidarLiteV2-I2C +PX4-PWM +BBB-PRU +LightWareI2C +LightWareSerial +Bebop +MAVLink +uLanding +LeddarOne +MaxbotixSerial +TeraRangerI2C +LidarLiteV3-I2C +VL53L0X +NMEA +WASP-LRF +BenewakeTF02 +BenewakeTFmini +LidarLightV3HP +PWM +BlueRoboticsPing +UAVCAN +BenewakeTFMiniPlus + + + + +Not Used +PX4-airspeed port +Pixhawk-airspeed port + + + +m/V +meters per volt +0.001 + + +V +volt +0.001 + + + +Linear +Inverted +Hyperbolic + + + +cm +centimeters +1 + + +cm +centimeters +1 + + + +Not Used +Pixhawk AUXOUT1 +Pixhawk AUXOUT2 +Pixhawk AUXOUT3 +Pixhawk AUXOUT4 +Pixhawk AUXOUT5 +Pixhawk AUXOUT6 +PX4 FMU Relay1 +PX4 FMU Relay2 +PX4IO Relay1 +PX4IO Relay2 +PX4IO ACC1 +PX4IO ACC2 + + + +ms +milliseconds +1 + + + +No +Yes + + + +m +meters +0 32767 + + +cm +centimeters +5 127 +1 + + +0 127 +1 + + +m +meters + + +m +meters + + +m +meters + + + +Forward +Forward-Right +Right +Back-Right +Back +Back-Left +Left +Forward-Left +Up +Down + + + + + +0 255 + + +0 255 + + +0 10000 + + +0 255 + + +-1 255 + + + +Low Speed +High Speed + + + + + + +None +Analog +MaxbotixI2C +LidarLiteV2-I2C +PX4-PWM +BBB-PRU +LightWareI2C +LightWareSerial +Bebop +MAVLink +uLanding +LeddarOne +MaxbotixSerial +TeraRangerI2C +LidarLiteV3-I2C +VL53L0X +NMEA +WASP-LRF +BenewakeTF02 +BenewakeTFmini +LidarLightV3HP +PWM +BlueRoboticsPing +UAVCAN +BenewakeTFMiniPlus + + + + +Not Used +PX4-airspeed port +Pixhawk-airspeed port + + + +m/V +meters per volt +0.001 + + +V +volt +0.001 + + + +Linear +Inverted +Hyperbolic + + + +cm +centimeters +1 + + +cm +centimeters +1 + + + +Not Used +Pixhawk AUXOUT1 +Pixhawk AUXOUT2 +Pixhawk AUXOUT3 +Pixhawk AUXOUT4 +Pixhawk AUXOUT5 +Pixhawk AUXOUT6 +PX4 FMU Relay1 +PX4 FMU Relay2 +PX4IO Relay1 +PX4IO Relay2 +PX4IO ACC1 +PX4IO ACC2 + + + +ms +milliseconds +1 + + + +No +Yes + + + +m +meters +0 32767 + + +cm +centimeters +5 127 +1 + + +0 127 +1 + + +m +meters + + +m +meters + + +m +meters + + + +Forward +Forward-Right +Right +Back-Right +Back +Back-Left +Left +Forward-Left +Up +Down + + + + + +0 255 + + +0 255 + + +0 10000 + + +0 255 + + +-1 255 + + + +Low Speed +High Speed + + + + + + +None +Analog +MaxbotixI2C +LidarLiteV2-I2C +PX4-PWM +BBB-PRU +LightWareI2C +LightWareSerial +Bebop +MAVLink +uLanding +LeddarOne +MaxbotixSerial +TeraRangerI2C +LidarLiteV3-I2C +VL53L0X +NMEA +WASP-LRF +BenewakeTF02 +BenewakeTFmini +LidarLightV3HP +PWM +BlueRoboticsPing +UAVCAN +BenewakeTFMiniPlus + + + + +Not Used +PX4-airspeed port +Pixhawk-airspeed port + + + +m/V +meters per volt +0.001 + + +V +volt +0.001 + + + +Linear +Inverted +Hyperbolic + + + +cm +centimeters +1 + + +cm +centimeters +1 + + + +Not Used +Pixhawk AUXOUT1 +Pixhawk AUXOUT2 +Pixhawk AUXOUT3 +Pixhawk AUXOUT4 +Pixhawk AUXOUT5 +Pixhawk AUXOUT6 +PX4 FMU Relay1 +PX4 FMU Relay2 +PX4IO Relay1 +PX4IO Relay2 +PX4IO ACC1 +PX4IO ACC2 + + + +ms +milliseconds +1 + + + +No +Yes + + + +m +meters +0 32767 + + +cm +centimeters +5 127 +1 + + +0 127 +1 + + +m +meters + + +m +meters + + +m +meters + + + +Forward +Forward-Right +Right +Back-Right +Back +Back-Left +Left +Forward-Left +Up +Down + + + + + +0 255 + + +0 255 + + +0 10000 + + +0 255 + + +-1 255 + + + +Low Speed +High Speed + + + + + + +None +Analog +MaxbotixI2C +LidarLiteV2-I2C +PX4-PWM +BBB-PRU +LightWareI2C +LightWareSerial +Bebop +MAVLink +uLanding +LeddarOne +MaxbotixSerial +TeraRangerI2C +LidarLiteV3-I2C +VL53L0X +NMEA +WASP-LRF +BenewakeTF02 +BenewakeTFmini +LidarLightV3HP +PWM +BlueRoboticsPing +UAVCAN +BenewakeTFMiniPlus + + + + +Not Used +PX4-airspeed port +Pixhawk-airspeed port + + + +m/V +meters per volt +0.001 + + +V +volt +0.001 + + + +Linear +Inverted +Hyperbolic + + + +cm +centimeters +1 + + +cm +centimeters +1 + + + +Not Used +Pixhawk AUXOUT1 +Pixhawk AUXOUT2 +Pixhawk AUXOUT3 +Pixhawk AUXOUT4 +Pixhawk AUXOUT5 +Pixhawk AUXOUT6 +PX4 FMU Relay1 +PX4 FMU Relay2 +PX4IO Relay1 +PX4IO Relay2 +PX4IO ACC1 +PX4IO ACC2 + + + +ms +milliseconds +1 + + + +No +Yes + + + +m +meters +0 32767 + + +cm +centimeters +5 127 +1 + + +0 127 +1 + + +m +meters + + +m +meters + + +m +meters + + + +Forward +Forward-Right +Right +Back-Right +Back +Back-Left +Left +Forward-Left +Up +Down + + + + + +0 255 + + +0 255 + + +0 10000 + + +0 255 + + +-1 255 + + + +Low Speed +High Speed + + + + + + +None +Analog +MaxbotixI2C +LidarLiteV2-I2C +PX4-PWM +BBB-PRU +LightWareI2C +LightWareSerial +Bebop +MAVLink +uLanding +LeddarOne +MaxbotixSerial +TeraRangerI2C +LidarLiteV3-I2C +VL53L0X +NMEA +WASP-LRF +BenewakeTF02 +BenewakeTFmini +LidarLightV3HP +PWM +BlueRoboticsPing +UAVCAN +BenewakeTFMiniPlus + + + + +Not Used +PX4-airspeed port +Pixhawk-airspeed port + + + +m/V +meters per volt +0.001 + + +V +volt +0.001 + + + +Linear +Inverted +Hyperbolic + + + +cm +centimeters +1 + + +cm +centimeters +1 + + + +Not Used +Pixhawk AUXOUT1 +Pixhawk AUXOUT2 +Pixhawk AUXOUT3 +Pixhawk AUXOUT4 +Pixhawk AUXOUT5 +Pixhawk AUXOUT6 +PX4 FMU Relay1 +PX4 FMU Relay2 +PX4IO Relay1 +PX4IO Relay2 +PX4IO ACC1 +PX4IO ACC2 + + + +ms +milliseconds +1 + + + +No +Yes + + + +m +meters +0 32767 + + +cm +centimeters +5 127 +1 + + +0 127 +1 + + +m +meters + + +m +meters + + +m +meters + + + +Forward +Forward-Right +Right +Back-Right +Back +Back-Left +Left +Forward-Left +Up +Down + + + + + +0 255 + + +0 255 + + +0 10000 + + +0 255 + + +-1 255 + + + +Low Speed +High Speed + + + + + + +None +Analog +MaxbotixI2C +LidarLiteV2-I2C +PX4-PWM +BBB-PRU +LightWareI2C +LightWareSerial +Bebop +MAVLink +uLanding +LeddarOne +MaxbotixSerial +TeraRangerI2C +LidarLiteV3-I2C +VL53L0X +NMEA +WASP-LRF +BenewakeTF02 +BenewakeTFmini +LidarLightV3HP +PWM +BlueRoboticsPing +UAVCAN +BenewakeTFMiniPlus + + + + +Not Used +PX4-airspeed port +Pixhawk-airspeed port + + + +m/V +meters per volt +0.001 + + +V +volt +0.001 + + + +Linear +Inverted +Hyperbolic + + + +cm +centimeters +1 + + +cm +centimeters +1 + + + +Not Used +Pixhawk AUXOUT1 +Pixhawk AUXOUT2 +Pixhawk AUXOUT3 +Pixhawk AUXOUT4 +Pixhawk AUXOUT5 +Pixhawk AUXOUT6 +PX4 FMU Relay1 +PX4 FMU Relay2 +PX4IO Relay1 +PX4IO Relay2 +PX4IO ACC1 +PX4IO ACC2 + + + +ms +milliseconds +1 + + + +No +Yes + + + +m +meters +0 32767 + + +cm +centimeters +5 127 +1 + + +0 127 +1 + + +m +meters + + +m +meters + + +m +meters + + + +Forward +Forward-Right +Right +Back-Right +Back +Back-Left +Left +Forward-Left +Up +Down + + + + + +0 255 + + +0 255 + + +0 10000 + + +0 255 + + +-1 255 + + + +Low Speed +High Speed + + + + + + +None +Analog +MaxbotixI2C +LidarLiteV2-I2C +PX4-PWM +BBB-PRU +LightWareI2C +LightWareSerial +Bebop +MAVLink +uLanding +LeddarOne +MaxbotixSerial +TeraRangerI2C +LidarLiteV3-I2C +VL53L0X +NMEA +WASP-LRF +BenewakeTF02 +BenewakeTFmini +LidarLightV3HP +PWM +BlueRoboticsPing +UAVCAN +BenewakeTFMiniPlus + + + + +Not Used +PX4-airspeed port +Pixhawk-airspeed port + + + +m/V +meters per volt +0.001 + + +V +volt +0.001 + + + +Linear +Inverted +Hyperbolic + + + +cm +centimeters +1 + + +cm +centimeters +1 + + + +Not Used +Pixhawk AUXOUT1 +Pixhawk AUXOUT2 +Pixhawk AUXOUT3 +Pixhawk AUXOUT4 +Pixhawk AUXOUT5 +Pixhawk AUXOUT6 +PX4 FMU Relay1 +PX4 FMU Relay2 +PX4IO Relay1 +PX4IO Relay2 +PX4IO ACC1 +PX4IO ACC2 + + + +ms +milliseconds +1 + + + +No +Yes + + + +m +meters +0 32767 + + +cm +centimeters +5 127 +1 + + +0 127 +1 + + +m +meters + + +m +meters + + +m +meters + + + +Forward +Forward-Right +Right +Back-Right +Back +Back-Left +Left +Forward-Left +Up +Down + + + + + +0 255 + + +0 255 + + +0 10000 + + +0 255 + + +-1 255 + + + +Low Speed +High Speed + + + + + + +None +Analog +MaxbotixI2C +LidarLiteV2-I2C +PX4-PWM +BBB-PRU +LightWareI2C +LightWareSerial +Bebop +MAVLink +uLanding +LeddarOne +MaxbotixSerial +TeraRangerI2C +LidarLiteV3-I2C +VL53L0X +NMEA +WASP-LRF +BenewakeTF02 +BenewakeTFmini +LidarLightV3HP +PWM +BlueRoboticsPing +UAVCAN +BenewakeTFMiniPlus + + + + +Not Used +PX4-airspeed port +Pixhawk-airspeed port + + + +m/V +meters per volt +0.001 + + +V +volt +0.001 + + + +Linear +Inverted +Hyperbolic + + + +cm +centimeters +1 + + +cm +centimeters +1 + + + +Not Used +Pixhawk AUXOUT1 +Pixhawk AUXOUT2 +Pixhawk AUXOUT3 +Pixhawk AUXOUT4 +Pixhawk AUXOUT5 +Pixhawk AUXOUT6 +PX4 FMU Relay1 +PX4 FMU Relay2 +PX4IO Relay1 +PX4IO Relay2 +PX4IO ACC1 +PX4IO ACC2 + + + +ms +milliseconds +1 + + + +No +Yes + + + +m +meters +0 32767 + + +cm +centimeters +5 127 +1 + + +0 127 +1 + + +m +meters + + +m +meters + + +m +meters + + + +Forward +Forward-Right +Right +Back-Right +Back +Back-Left +Left +Forward-Left +Up +Down + + + + + +0 255 + + +0 255 + + +0 10000 + + +0 255 + + +-1 255 + + + +Low Speed +High Speed + + + + + + +None +PX4-PWM +AUXPIN + + + +0.001 + + +1 + + +1 + + +0.1 + + + +Disabled +PixhawkAUX1 +PixhawkAUX2 +PixhawkAUX3 +PixhawkAUX4 +PixhawkAUX5 +PixhawkAUX6 + + + + +None +PX4-PWM +AUXPIN + + + +0.001 + + + +Disabled +PixhawkAUX1 +PixhawkAUX2 +PixhawkAUX3 +PixhawkAUX4 +PixhawkAUX5 +PixhawkAUX6 + + + + + + +Disabled +AnalogPin +RCChannelPwmValue +ReceiverProtocol +PWMInputPin + + + + +V5 Nano +Pixracer +Pixhawk ADC4 +Pixhawk ADC3 +Pixhawk ADC6 +Pixhawk2 ADC +PixhawkAUX1 +PixhawkAUX2 +PixhawkAUX3 +PixhawkAUX4 +PixhawkAUX5 +PixhawkAUX6 +Pixhawk SBUS + + + +V +volt +0.01 +0 5.0 + + +V +volt +0.01 +0 5.0 + + +0 16 + + +PWM +PWM in microseconds +0 2000 + + +PWM +PWM in microseconds +0 2000 + + + + + +Disable +Enable + +True + + +deg +degrees +0 90 +1 + + +deg +degrees +0 90 +1 + + +deg +degrees +0 90 +1 + + +deg +degrees +0 90 +1 + + +deg +degrees +0 90 +1 + + + + + +Disabled +ShowSlips +ShowOverruns + + + + +50Hz +100Hz +200Hz +250Hz +300Hz +400Hz + +True + + + + + +None +Lua Scripts + +True + + +1000 1000000 +10000 + + +1024 1048576 +1024 +True + + + + + +1200 +2400 +4800 +9600 +19200 +38400 +57600 +111100 +115200 +256000 +460800 +500000 +921600 +1500000 + + + + +MAVlink1 +MAVLink2 + +True + + + +None +MAVLink1 +MAVLink2 +Frsky D +Frsky SPort +GPS +Alexmos Gimbal Serial +SToRM32 Gimbal Serial +Rangefinder +FrSky SPort Passthrough (OpenTX) +Lidar360 +Beacon +Volz servo out +SBus servo out +ESC Telemetry +Devo Telemetry +OpticalFlow +RobotisServo +NMEA Output +WindVane + +True + + + +1200 +2400 +4800 +9600 +19200 +38400 +57600 +111100 +115200 +256000 +500000 +921600 +1500000 + + + + +None +MAVLink1 +MAVLink2 +Frsky D +Frsky SPort +GPS +Alexmos Gimbal Serial +SToRM32 Gimbal Serial +Rangefinder +FrSky SPort Passthrough (OpenTX) +Lidar360 +Beacon +Volz servo out +SBus servo out +ESC Telemetry +Devo Telemetry +OpticalFlow +RobotisServo +NMEA Output +WindVane + +True + + + +1200 +2400 +4800 +9600 +19200 +38400 +57600 +111100 +115200 +256000 +500000 +921600 +1500000 + + + + +None +MAVLink1 +MAVLink2 +Frsky D +Frsky SPort +GPS +Alexmos Gimbal Serial +SToRM32 Gimbal Serial +Rangefinder +FrSky SPort Passthrough (OpenTX) +Lidar360 +Beacon +Volz servo out +SBus servo out +ESC Telemetry +Devo Telemetry +OpticalFlow +RobotisServo +NMEA Output +WindVane + +True + + + +1200 +2400 +4800 +9600 +19200 +38400 +57600 +111100 +115200 +256000 +500000 +921600 +1500000 + + + + +None +MAVLink1 +MAVLink2 +Frsky D +Frsky SPort +GPS +Alexmos Gimbal Serial +SToRM32 Gimbal Serial +Rangefinder +FrSky SPort Passthrough (OpenTX) +Lidar360 +Beacon +Volz servo out +SBus servo out +ESC Telemetry +Devo Telemetry +OpticalFlow +RobotisServo +NMEA Output +WindVane + +True + + + +1200 +2400 +4800 +9600 +19200 +38400 +57600 +111100 +115200 +256000 +500000 +921600 +1500000 + + + + +None +MAVLink1 +MAVLink2 +Frsky D +Frsky SPort +GPS +Alexmos Gimbal Serial +SToRM32 Gimbal Serial +Rangefinder +FrSky SPort Passthrough (OpenTX) +Lidar360 +Beacon +Volz servo out +SBus servo out +ESC Telemetry +Devo Telemetry +OpticalFlow +RobotisServo +NMEA Output +WindVane + +True + + + +1200 +2400 +4800 +9600 +19200 +38400 +57600 +111100 +115200 +256000 +500000 +921600 +1500000 + + + + +None +MAVLink1 +MAVLink2 +Frsky D +Frsky SPort +GPS +Alexmos Gimbal Serial +SToRM32 Gimbal Serial +Rangefinder +FrSky SPort Passthrough (OpenTX) +Lidar360 +Beacon +Volz servo out +SBus servo out +ESC Telemetry +Devo Telemetry +OpticalFlow +RobotisServo +NMEA Output +WindVane + +True + + + +1200 +2400 +4800 +9600 +19200 +38400 +57600 +111100 +115200 +256000 +500000 +921600 +1500000 + + + +0:InvertRX, 1:InvertTX, 2:HalfDuplex, 4:Swap +True + + +0:InvertRX, 1:InvertTX, 2:HalfDuplex, 4:Swap +True + + +0:InvertRX, 1:InvertTX, 2:HalfDuplex, 4:Swap +True + + +0:InvertRX, 1:InvertTX, 2:HalfDuplex, 4:Swap +True + + +0:InvertRX, 1:InvertTX, 2:HalfDuplex, 4:Swap +True + + +0:InvertRX, 1:InvertTX, 2:HalfDuplex, 4:Swap +True + + + +Disabled +Serial0 +Serial1 +Serial2 +Serial3 +Serial4 +Serial5 +Serial6 + + + + +Disabled +Serial0 +Serial1 +Serial2 +Serial3 +Serial4 +Serial5 +Serial6 + + + +0 120 +s +seconds + + + + + +Disable +Enable + + + +25 400 +Hz +hertz + + + + +PWM +PWM in microseconds +500 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + + +Normal +Reversed + + + + +Disabled +RCPassThru +Flap +Flap_auto +Aileron +mount_pan +mount_tilt +mount_roll +mount_open +camera_trigger +release +mount2_pan +mount2_tilt +mount2_roll +mount2_open +DifferentialSpoilerLeft1 +DifferentialSpoilerRight1 +Elevator +Rudder +FlaperonLeft +FlaperonRight +GroundSteering +Parachute +EPM +LandingGear +EngineRunEnable +HeliRSC +HeliTailRSC +Motor1 +Motor2 +Motor3 +Motor4 +Motor5 +Motor6 +Motor7 +Motor8 +MotorTilt +RCIN1 +RCIN2 +RCIN3 +RCIN4 +RCIN5 +RCIN6 +RCIN7 +RCIN8 +RCIN9 +RCIN10 +RCIN11 +RCIN12 +RCIN13 +RCIN14 +RCIN15 +RCIN16 +Ignition +Choke +Starter +Throttle +TrackerYaw +TrackerPitch +ThrottleLeft +ThrottleRight +tiltMotorLeft +tiltMotorRight +ElevonLeft +ElevonRight +VTailLeft +VTailRight +BoostThrottle +Motor9 +Motor10 +Motor11 +Motor12 +DifferentialSpoilerLeft2 +DifferentialSpoilerRight2 +Winch +Main Sail +Camera ISO +Camera Focus +Camera Shutter Speed +Script 1 +Script 2 +Script 3 +Script 4 +Script 5 +Script 6 +Script 7 +Script 8 +Script 9 +Script 10 +Script 11 +Script 12 +Script 13 +Script 14 +Script 15 +Script 16 + + + + + +PWM +PWM in microseconds +500 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + + +Normal +Reversed + + + + +Disabled +RCPassThru +Flap +Flap_auto +Aileron +mount_pan +mount_tilt +mount_roll +mount_open +camera_trigger +release +mount2_pan +mount2_tilt +mount2_roll +mount2_open +DifferentialSpoilerLeft1 +DifferentialSpoilerRight1 +Elevator +Rudder +FlaperonLeft +FlaperonRight +GroundSteering +Parachute +EPM +LandingGear +EngineRunEnable +HeliRSC +HeliTailRSC +Motor1 +Motor2 +Motor3 +Motor4 +Motor5 +Motor6 +Motor7 +Motor8 +MotorTilt +RCIN1 +RCIN2 +RCIN3 +RCIN4 +RCIN5 +RCIN6 +RCIN7 +RCIN8 +RCIN9 +RCIN10 +RCIN11 +RCIN12 +RCIN13 +RCIN14 +RCIN15 +RCIN16 +Ignition +Choke +Starter +Throttle +TrackerYaw +TrackerPitch +ThrottleLeft +ThrottleRight +tiltMotorLeft +tiltMotorRight +ElevonLeft +ElevonRight +VTailLeft +VTailRight +BoostThrottle +Motor9 +Motor10 +Motor11 +Motor12 +DifferentialSpoilerLeft2 +DifferentialSpoilerRight2 +Winch +Main Sail +Camera ISO +Camera Focus +Camera Shutter Speed +Script 1 +Script 2 +Script 3 +Script 4 +Script 5 +Script 6 +Script 7 +Script 8 +Script 9 +Script 10 +Script 11 +Script 12 +Script 13 +Script 14 +Script 15 +Script 16 + + + + + +PWM +PWM in microseconds +500 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + + +Normal +Reversed + + + + +Disabled +RCPassThru +Flap +Flap_auto +Aileron +mount_pan +mount_tilt +mount_roll +mount_open +camera_trigger +release +mount2_pan +mount2_tilt +mount2_roll +mount2_open +DifferentialSpoilerLeft1 +DifferentialSpoilerRight1 +Elevator +Rudder +FlaperonLeft +FlaperonRight +GroundSteering +Parachute +EPM +LandingGear +EngineRunEnable +HeliRSC +HeliTailRSC +Motor1 +Motor2 +Motor3 +Motor4 +Motor5 +Motor6 +Motor7 +Motor8 +MotorTilt +RCIN1 +RCIN2 +RCIN3 +RCIN4 +RCIN5 +RCIN6 +RCIN7 +RCIN8 +RCIN9 +RCIN10 +RCIN11 +RCIN12 +RCIN13 +RCIN14 +RCIN15 +RCIN16 +Ignition +Choke +Starter +Throttle +TrackerYaw +TrackerPitch +ThrottleLeft +ThrottleRight +tiltMotorLeft +tiltMotorRight +ElevonLeft +ElevonRight +VTailLeft +VTailRight +BoostThrottle +Motor9 +Motor10 +Motor11 +Motor12 +DifferentialSpoilerLeft2 +DifferentialSpoilerRight2 +Winch +Main Sail +Camera ISO +Camera Focus +Camera Shutter Speed +Script 1 +Script 2 +Script 3 +Script 4 +Script 5 +Script 6 +Script 7 +Script 8 +Script 9 +Script 10 +Script 11 +Script 12 +Script 13 +Script 14 +Script 15 +Script 16 + + + + + +PWM +PWM in microseconds +500 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + + +Normal +Reversed + + + + +Disabled +RCPassThru +Flap +Flap_auto +Aileron +mount_pan +mount_tilt +mount_roll +mount_open +camera_trigger +release +mount2_pan +mount2_tilt +mount2_roll +mount2_open +DifferentialSpoilerLeft1 +DifferentialSpoilerRight1 +Elevator +Rudder +FlaperonLeft +FlaperonRight +GroundSteering +Parachute +EPM +LandingGear +EngineRunEnable +HeliRSC +HeliTailRSC +Motor1 +Motor2 +Motor3 +Motor4 +Motor5 +Motor6 +Motor7 +Motor8 +MotorTilt +RCIN1 +RCIN2 +RCIN3 +RCIN4 +RCIN5 +RCIN6 +RCIN7 +RCIN8 +RCIN9 +RCIN10 +RCIN11 +RCIN12 +RCIN13 +RCIN14 +RCIN15 +RCIN16 +Ignition +Choke +Starter +Throttle +TrackerYaw +TrackerPitch +ThrottleLeft +ThrottleRight +tiltMotorLeft +tiltMotorRight +ElevonLeft +ElevonRight +VTailLeft +VTailRight +BoostThrottle +Motor9 +Motor10 +Motor11 +Motor12 +DifferentialSpoilerLeft2 +DifferentialSpoilerRight2 +Winch +Main Sail +Camera ISO +Camera Focus +Camera Shutter Speed +Script 1 +Script 2 +Script 3 +Script 4 +Script 5 +Script 6 +Script 7 +Script 8 +Script 9 +Script 10 +Script 11 +Script 12 +Script 13 +Script 14 +Script 15 +Script 16 + + + + + +PWM +PWM in microseconds +500 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + + +Normal +Reversed + + + + +Disabled +RCPassThru +Flap +Flap_auto +Aileron +mount_pan +mount_tilt +mount_roll +mount_open +camera_trigger +release +mount2_pan +mount2_tilt +mount2_roll +mount2_open +DifferentialSpoilerLeft1 +DifferentialSpoilerRight1 +Elevator +Rudder +FlaperonLeft +FlaperonRight +GroundSteering +Parachute +EPM +LandingGear +EngineRunEnable +HeliRSC +HeliTailRSC +Motor1 +Motor2 +Motor3 +Motor4 +Motor5 +Motor6 +Motor7 +Motor8 +MotorTilt +RCIN1 +RCIN2 +RCIN3 +RCIN4 +RCIN5 +RCIN6 +RCIN7 +RCIN8 +RCIN9 +RCIN10 +RCIN11 +RCIN12 +RCIN13 +RCIN14 +RCIN15 +RCIN16 +Ignition +Choke +Starter +Throttle +TrackerYaw +TrackerPitch +ThrottleLeft +ThrottleRight +tiltMotorLeft +tiltMotorRight +ElevonLeft +ElevonRight +VTailLeft +VTailRight +BoostThrottle +Motor9 +Motor10 +Motor11 +Motor12 +DifferentialSpoilerLeft2 +DifferentialSpoilerRight2 +Winch +Main Sail +Camera ISO +Camera Focus +Camera Shutter Speed +Script 1 +Script 2 +Script 3 +Script 4 +Script 5 +Script 6 +Script 7 +Script 8 +Script 9 +Script 10 +Script 11 +Script 12 +Script 13 +Script 14 +Script 15 +Script 16 + + + + + +PWM +PWM in microseconds +500 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + + +Normal +Reversed + + + + +Disabled +RCPassThru +Flap +Flap_auto +Aileron +mount_pan +mount_tilt +mount_roll +mount_open +camera_trigger +release +mount2_pan +mount2_tilt +mount2_roll +mount2_open +DifferentialSpoilerLeft1 +DifferentialSpoilerRight1 +Elevator +Rudder +FlaperonLeft +FlaperonRight +GroundSteering +Parachute +EPM +LandingGear +EngineRunEnable +HeliRSC +HeliTailRSC +Motor1 +Motor2 +Motor3 +Motor4 +Motor5 +Motor6 +Motor7 +Motor8 +MotorTilt +RCIN1 +RCIN2 +RCIN3 +RCIN4 +RCIN5 +RCIN6 +RCIN7 +RCIN8 +RCIN9 +RCIN10 +RCIN11 +RCIN12 +RCIN13 +RCIN14 +RCIN15 +RCIN16 +Ignition +Choke +Starter +Throttle +TrackerYaw +TrackerPitch +ThrottleLeft +ThrottleRight +tiltMotorLeft +tiltMotorRight +ElevonLeft +ElevonRight +VTailLeft +VTailRight +BoostThrottle +Motor9 +Motor10 +Motor11 +Motor12 +DifferentialSpoilerLeft2 +DifferentialSpoilerRight2 +Winch +Main Sail +Camera ISO +Camera Focus +Camera Shutter Speed +Script 1 +Script 2 +Script 3 +Script 4 +Script 5 +Script 6 +Script 7 +Script 8 +Script 9 +Script 10 +Script 11 +Script 12 +Script 13 +Script 14 +Script 15 +Script 16 + + + + + +PWM +PWM in microseconds +500 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + + +Normal +Reversed + + + + +Disabled +RCPassThru +Flap +Flap_auto +Aileron +mount_pan +mount_tilt +mount_roll +mount_open +camera_trigger +release +mount2_pan +mount2_tilt +mount2_roll +mount2_open +DifferentialSpoilerLeft1 +DifferentialSpoilerRight1 +Elevator +Rudder +FlaperonLeft +FlaperonRight +GroundSteering +Parachute +EPM +LandingGear +EngineRunEnable +HeliRSC +HeliTailRSC +Motor1 +Motor2 +Motor3 +Motor4 +Motor5 +Motor6 +Motor7 +Motor8 +MotorTilt +RCIN1 +RCIN2 +RCIN3 +RCIN4 +RCIN5 +RCIN6 +RCIN7 +RCIN8 +RCIN9 +RCIN10 +RCIN11 +RCIN12 +RCIN13 +RCIN14 +RCIN15 +RCIN16 +Ignition +Choke +Starter +Throttle +TrackerYaw +TrackerPitch +ThrottleLeft +ThrottleRight +tiltMotorLeft +tiltMotorRight +ElevonLeft +ElevonRight +VTailLeft +VTailRight +BoostThrottle +Motor9 +Motor10 +Motor11 +Motor12 +DifferentialSpoilerLeft2 +DifferentialSpoilerRight2 +Winch +Main Sail +Camera ISO +Camera Focus +Camera Shutter Speed +Script 1 +Script 2 +Script 3 +Script 4 +Script 5 +Script 6 +Script 7 +Script 8 +Script 9 +Script 10 +Script 11 +Script 12 +Script 13 +Script 14 +Script 15 +Script 16 + + + + + +PWM +PWM in microseconds +500 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + + +Normal +Reversed + + + + +Disabled +RCPassThru +Flap +Flap_auto +Aileron +mount_pan +mount_tilt +mount_roll +mount_open +camera_trigger +release +mount2_pan +mount2_tilt +mount2_roll +mount2_open +DifferentialSpoilerLeft1 +DifferentialSpoilerRight1 +Elevator +Rudder +FlaperonLeft +FlaperonRight +GroundSteering +Parachute +EPM +LandingGear +EngineRunEnable +HeliRSC +HeliTailRSC +Motor1 +Motor2 +Motor3 +Motor4 +Motor5 +Motor6 +Motor7 +Motor8 +MotorTilt +RCIN1 +RCIN2 +RCIN3 +RCIN4 +RCIN5 +RCIN6 +RCIN7 +RCIN8 +RCIN9 +RCIN10 +RCIN11 +RCIN12 +RCIN13 +RCIN14 +RCIN15 +RCIN16 +Ignition +Choke +Starter +Throttle +TrackerYaw +TrackerPitch +ThrottleLeft +ThrottleRight +tiltMotorLeft +tiltMotorRight +ElevonLeft +ElevonRight +VTailLeft +VTailRight +BoostThrottle +Motor9 +Motor10 +Motor11 +Motor12 +DifferentialSpoilerLeft2 +DifferentialSpoilerRight2 +Winch +Main Sail +Camera ISO +Camera Focus +Camera Shutter Speed +Script 1 +Script 2 +Script 3 +Script 4 +Script 5 +Script 6 +Script 7 +Script 8 +Script 9 +Script 10 +Script 11 +Script 12 +Script 13 +Script 14 +Script 15 +Script 16 + + + + + +PWM +PWM in microseconds +500 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + + +Normal +Reversed + + + + +Disabled +RCPassThru +Flap +Flap_auto +Aileron +mount_pan +mount_tilt +mount_roll +mount_open +camera_trigger +release +mount2_pan +mount2_tilt +mount2_roll +mount2_open +DifferentialSpoilerLeft1 +DifferentialSpoilerRight1 +Elevator +Rudder +FlaperonLeft +FlaperonRight +GroundSteering +Parachute +EPM +LandingGear +EngineRunEnable +HeliRSC +HeliTailRSC +Motor1 +Motor2 +Motor3 +Motor4 +Motor5 +Motor6 +Motor7 +Motor8 +MotorTilt +RCIN1 +RCIN2 +RCIN3 +RCIN4 +RCIN5 +RCIN6 +RCIN7 +RCIN8 +RCIN9 +RCIN10 +RCIN11 +RCIN12 +RCIN13 +RCIN14 +RCIN15 +RCIN16 +Ignition +Choke +Starter +Throttle +TrackerYaw +TrackerPitch +ThrottleLeft +ThrottleRight +tiltMotorLeft +tiltMotorRight +ElevonLeft +ElevonRight +VTailLeft +VTailRight +BoostThrottle +Motor9 +Motor10 +Motor11 +Motor12 +DifferentialSpoilerLeft2 +DifferentialSpoilerRight2 +Winch +Main Sail +Camera ISO +Camera Focus +Camera Shutter Speed +Script 1 +Script 2 +Script 3 +Script 4 +Script 5 +Script 6 +Script 7 +Script 8 +Script 9 +Script 10 +Script 11 +Script 12 +Script 13 +Script 14 +Script 15 +Script 16 + + + + + +PWM +PWM in microseconds +500 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + + +Normal +Reversed + + + + +Disabled +RCPassThru +Flap +Flap_auto +Aileron +mount_pan +mount_tilt +mount_roll +mount_open +camera_trigger +release +mount2_pan +mount2_tilt +mount2_roll +mount2_open +DifferentialSpoilerLeft1 +DifferentialSpoilerRight1 +Elevator +Rudder +FlaperonLeft +FlaperonRight +GroundSteering +Parachute +EPM +LandingGear +EngineRunEnable +HeliRSC +HeliTailRSC +Motor1 +Motor2 +Motor3 +Motor4 +Motor5 +Motor6 +Motor7 +Motor8 +MotorTilt +RCIN1 +RCIN2 +RCIN3 +RCIN4 +RCIN5 +RCIN6 +RCIN7 +RCIN8 +RCIN9 +RCIN10 +RCIN11 +RCIN12 +RCIN13 +RCIN14 +RCIN15 +RCIN16 +Ignition +Choke +Starter +Throttle +TrackerYaw +TrackerPitch +ThrottleLeft +ThrottleRight +tiltMotorLeft +tiltMotorRight +ElevonLeft +ElevonRight +VTailLeft +VTailRight +BoostThrottle +Motor9 +Motor10 +Motor11 +Motor12 +DifferentialSpoilerLeft2 +DifferentialSpoilerRight2 +Winch +Main Sail +Camera ISO +Camera Focus +Camera Shutter Speed +Script 1 +Script 2 +Script 3 +Script 4 +Script 5 +Script 6 +Script 7 +Script 8 +Script 9 +Script 10 +Script 11 +Script 12 +Script 13 +Script 14 +Script 15 +Script 16 + + + + + +PWM +PWM in microseconds +500 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + + +Normal +Reversed + + + + +Disabled +RCPassThru +Flap +Flap_auto +Aileron +mount_pan +mount_tilt +mount_roll +mount_open +camera_trigger +release +mount2_pan +mount2_tilt +mount2_roll +mount2_open +DifferentialSpoilerLeft1 +DifferentialSpoilerRight1 +Elevator +Rudder +FlaperonLeft +FlaperonRight +GroundSteering +Parachute +EPM +LandingGear +EngineRunEnable +HeliRSC +HeliTailRSC +Motor1 +Motor2 +Motor3 +Motor4 +Motor5 +Motor6 +Motor7 +Motor8 +MotorTilt +RCIN1 +RCIN2 +RCIN3 +RCIN4 +RCIN5 +RCIN6 +RCIN7 +RCIN8 +RCIN9 +RCIN10 +RCIN11 +RCIN12 +RCIN13 +RCIN14 +RCIN15 +RCIN16 +Ignition +Choke +Starter +Throttle +TrackerYaw +TrackerPitch +ThrottleLeft +ThrottleRight +tiltMotorLeft +tiltMotorRight +ElevonLeft +ElevonRight +VTailLeft +VTailRight +BoostThrottle +Motor9 +Motor10 +Motor11 +Motor12 +DifferentialSpoilerLeft2 +DifferentialSpoilerRight2 +Winch +Main Sail +Camera ISO +Camera Focus +Camera Shutter Speed +Script 1 +Script 2 +Script 3 +Script 4 +Script 5 +Script 6 +Script 7 +Script 8 +Script 9 +Script 10 +Script 11 +Script 12 +Script 13 +Script 14 +Script 15 +Script 16 + + + + + +PWM +PWM in microseconds +500 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + + +Normal +Reversed + + + + +Disabled +RCPassThru +Flap +Flap_auto +Aileron +mount_pan +mount_tilt +mount_roll +mount_open +camera_trigger +release +mount2_pan +mount2_tilt +mount2_roll +mount2_open +DifferentialSpoilerLeft1 +DifferentialSpoilerRight1 +Elevator +Rudder +FlaperonLeft +FlaperonRight +GroundSteering +Parachute +EPM +LandingGear +EngineRunEnable +HeliRSC +HeliTailRSC +Motor1 +Motor2 +Motor3 +Motor4 +Motor5 +Motor6 +Motor7 +Motor8 +MotorTilt +RCIN1 +RCIN2 +RCIN3 +RCIN4 +RCIN5 +RCIN6 +RCIN7 +RCIN8 +RCIN9 +RCIN10 +RCIN11 +RCIN12 +RCIN13 +RCIN14 +RCIN15 +RCIN16 +Ignition +Choke +Starter +Throttle +TrackerYaw +TrackerPitch +ThrottleLeft +ThrottleRight +tiltMotorLeft +tiltMotorRight +ElevonLeft +ElevonRight +VTailLeft +VTailRight +BoostThrottle +Motor9 +Motor10 +Motor11 +Motor12 +DifferentialSpoilerLeft2 +DifferentialSpoilerRight2 +Winch +Main Sail +Camera ISO +Camera Focus +Camera Shutter Speed +Script 1 +Script 2 +Script 3 +Script 4 +Script 5 +Script 6 +Script 7 +Script 8 +Script 9 +Script 10 +Script 11 +Script 12 +Script 13 +Script 14 +Script 15 +Script 16 + + + + + +PWM +PWM in microseconds +500 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + + +Normal +Reversed + + + + +Disabled +RCPassThru +Flap +Flap_auto +Aileron +mount_pan +mount_tilt +mount_roll +mount_open +camera_trigger +release +mount2_pan +mount2_tilt +mount2_roll +mount2_open +DifferentialSpoilerLeft1 +DifferentialSpoilerRight1 +Elevator +Rudder +FlaperonLeft +FlaperonRight +GroundSteering +Parachute +EPM +LandingGear +EngineRunEnable +HeliRSC +HeliTailRSC +Motor1 +Motor2 +Motor3 +Motor4 +Motor5 +Motor6 +Motor7 +Motor8 +MotorTilt +RCIN1 +RCIN2 +RCIN3 +RCIN4 +RCIN5 +RCIN6 +RCIN7 +RCIN8 +RCIN9 +RCIN10 +RCIN11 +RCIN12 +RCIN13 +RCIN14 +RCIN15 +RCIN16 +Ignition +Choke +Starter +Throttle +TrackerYaw +TrackerPitch +ThrottleLeft +ThrottleRight +tiltMotorLeft +tiltMotorRight +ElevonLeft +ElevonRight +VTailLeft +VTailRight +BoostThrottle +Motor9 +Motor10 +Motor11 +Motor12 +DifferentialSpoilerLeft2 +DifferentialSpoilerRight2 +Winch +Main Sail +Camera ISO +Camera Focus +Camera Shutter Speed +Script 1 +Script 2 +Script 3 +Script 4 +Script 5 +Script 6 +Script 7 +Script 8 +Script 9 +Script 10 +Script 11 +Script 12 +Script 13 +Script 14 +Script 15 +Script 16 + + + + + +PWM +PWM in microseconds +500 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + + +Normal +Reversed + + + + +Disabled +RCPassThru +Flap +Flap_auto +Aileron +mount_pan +mount_tilt +mount_roll +mount_open +camera_trigger +release +mount2_pan +mount2_tilt +mount2_roll +mount2_open +DifferentialSpoilerLeft1 +DifferentialSpoilerRight1 +Elevator +Rudder +FlaperonLeft +FlaperonRight +GroundSteering +Parachute +EPM +LandingGear +EngineRunEnable +HeliRSC +HeliTailRSC +Motor1 +Motor2 +Motor3 +Motor4 +Motor5 +Motor6 +Motor7 +Motor8 +MotorTilt +RCIN1 +RCIN2 +RCIN3 +RCIN4 +RCIN5 +RCIN6 +RCIN7 +RCIN8 +RCIN9 +RCIN10 +RCIN11 +RCIN12 +RCIN13 +RCIN14 +RCIN15 +RCIN16 +Ignition +Choke +Starter +Throttle +TrackerYaw +TrackerPitch +ThrottleLeft +ThrottleRight +tiltMotorLeft +tiltMotorRight +ElevonLeft +ElevonRight +VTailLeft +VTailRight +BoostThrottle +Motor9 +Motor10 +Motor11 +Motor12 +DifferentialSpoilerLeft2 +DifferentialSpoilerRight2 +Winch +Main Sail +Camera ISO +Camera Focus +Camera Shutter Speed +Script 1 +Script 2 +Script 3 +Script 4 +Script 5 +Script 6 +Script 7 +Script 8 +Script 9 +Script 10 +Script 11 +Script 12 +Script 13 +Script 14 +Script 15 +Script 16 + + + + + +PWM +PWM in microseconds +500 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + + +Normal +Reversed + + + + +Disabled +RCPassThru +Flap +Flap_auto +Aileron +mount_pan +mount_tilt +mount_roll +mount_open +camera_trigger +release +mount2_pan +mount2_tilt +mount2_roll +mount2_open +DifferentialSpoilerLeft1 +DifferentialSpoilerRight1 +Elevator +Rudder +FlaperonLeft +FlaperonRight +GroundSteering +Parachute +EPM +LandingGear +EngineRunEnable +HeliRSC +HeliTailRSC +Motor1 +Motor2 +Motor3 +Motor4 +Motor5 +Motor6 +Motor7 +Motor8 +MotorTilt +RCIN1 +RCIN2 +RCIN3 +RCIN4 +RCIN5 +RCIN6 +RCIN7 +RCIN8 +RCIN9 +RCIN10 +RCIN11 +RCIN12 +RCIN13 +RCIN14 +RCIN15 +RCIN16 +Ignition +Choke +Starter +Throttle +TrackerYaw +TrackerPitch +ThrottleLeft +ThrottleRight +tiltMotorLeft +tiltMotorRight +ElevonLeft +ElevonRight +VTailLeft +VTailRight +BoostThrottle +Motor9 +Motor10 +Motor11 +Motor12 +DifferentialSpoilerLeft2 +DifferentialSpoilerRight2 +Winch +Main Sail +Camera ISO +Camera Focus +Camera Shutter Speed +Script 1 +Script 2 +Script 3 +Script 4 +Script 5 +Script 6 +Script 7 +Script 8 +Script 9 +Script 10 +Script 11 +Script 12 +Script 13 +Script 14 +Script 15 +Script 16 + + + + + +PWM +PWM in microseconds +500 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + + +Normal +Reversed + + + + +Disabled +RCPassThru +Flap +Flap_auto +Aileron +mount_pan +mount_tilt +mount_roll +mount_open +camera_trigger +release +mount2_pan +mount2_tilt +mount2_roll +mount2_open +DifferentialSpoilerLeft1 +DifferentialSpoilerRight1 +Elevator +Rudder +FlaperonLeft +FlaperonRight +GroundSteering +Parachute +EPM +LandingGear +EngineRunEnable +HeliRSC +HeliTailRSC +Motor1 +Motor2 +Motor3 +Motor4 +Motor5 +Motor6 +Motor7 +Motor8 +MotorTilt +RCIN1 +RCIN2 +RCIN3 +RCIN4 +RCIN5 +RCIN6 +RCIN7 +RCIN8 +RCIN9 +RCIN10 +RCIN11 +RCIN12 +RCIN13 +RCIN14 +RCIN15 +RCIN16 +Ignition +Choke +Starter +Throttle +TrackerYaw +TrackerPitch +ThrottleLeft +ThrottleRight +tiltMotorLeft +tiltMotorRight +ElevonLeft +ElevonRight +VTailLeft +VTailRight +BoostThrottle +Motor9 +Motor10 +Motor11 +Motor12 +DifferentialSpoilerLeft2 +DifferentialSpoilerRight2 +Winch +Main Sail +Camera ISO +Camera Focus +Camera Shutter Speed +Script 1 +Script 2 +Script 3 +Script 4 +Script 5 +Script 6 +Script 7 +Script 8 +Script 9 +Script 10 +Script 11 +Script 12 +Script 13 +Script 14 +Script 15 +Script 16 + + + + + +0:Channel1,1:Channel2,2:Channel3,3:Channel4,4:Channel5,5:Channel6,6:Channel7,7:Channel8,8:Channel9,9:Channel10,10:Channel11,11:Channel12,12:Channel13,13:Channel14,14:Channel15,15:Channel16 + + + +Disabled +Enabled + + + + +Disabled +TestMotor1 +TestMotor2 +TestMotor3 +TestMotor4 +TestMotor5 +TestMotor6 +TestMotor7 +TestMotor8 + + + +s +seconds +0 300 + + +Hz +hertz +0 500 + + + +Disabled +Enabled + + + + +None +OneShot +OneShot125 +Brushed +DShot150 +DShot300 +DShot600 +DShot1200 + + + + +Console +Telem1 +Telem2 +Telem3 +Telem4 +Telem5 + + + +1 127 + + +0:Channel1,1:Channel2,2:Channel3,3:Channel4,4:Channel5,5:Channel6,6:Channel7,7:Channel8,8:Channel9,9:Channel10,10:Channel11,11:Channel12,12:Channel13,13:Channel14,14:Channel15,15:Channel16 + + + + +0 4095 + + +0 4095 + + + + +25 250 +Hz +hertz + + + + +0:Channel1,1:Channel2,2:Channel3,3:Channel4,4:Channel5,5:Channel6,6:Channel7,7:Channel8,8:Channel9,9:Channel10,10:Channel11,11:Channel12,12:Channel13,13:Channel14,14:Channel15,15:Channel16 + + + + + +Disabled +Enabled + + + +0 15 + + + + + +Disabled +Enabled + + + +0 15 + + +1000 2000 +PWM +PWM in microseconds + + +1000 2000 +PWM +PWM in microseconds + + + +Normal +Reverse + + + + + + +Disabled +Enabled + + + +deg +degrees +0.000001 +-90 90 + + +deg +degrees +0.000001 +-180 180 + + +cm +centimeters +1 +0 10000 + + +deg +degrees +1 +-180 +180 + + +Hz +hertz +0 200 + + + +cylinder +cone +sphere + + + +m +meters +0 100 + + +m +meters +5 100 + + + + + +Disabled +Enabled + + + +0 15 + + +0 15 + + + + + +Disabled +Enabled + + + +% +percent +0 100 + + +ms +milliseconds +1000 2000 + + +cm/s +centimeters per second +0 1000 + + +% +percent +0 100 + + + + +Hz +hertz +0 10 +1 + + +Hz +hertz +0 10 +1 + + +Hz +hertz +0 10 +1 + + +Hz +hertz +0 10 +1 + + +Hz +hertz +0 10 +1 + + +Hz +hertz +0 10 +1 + + +Hz +hertz +0 10 +1 + + +Hz +hertz +0 10 +1 + + +Hz +hertz +0 10 +1 + + + + +Hz +hertz +0 10 +1 + + +Hz +hertz +0 10 +1 + + +Hz +hertz +0 10 +1 + + +Hz +hertz +0 10 +1 + + +Hz +hertz +0 10 +1 + + +Hz +hertz +0 10 +1 + + +Hz +hertz +0 10 +1 + + +Hz +hertz +0 10 +1 + + +Hz +hertz +0 10 +1 + + + + +Hz +hertz +0 10 +1 + + +Hz +hertz +0 10 +1 + + +Hz +hertz +0 10 +1 + + +Hz +hertz +0 10 +1 + + +Hz +hertz +0 10 +1 + + +Hz +hertz +0 10 +1 + + +Hz +hertz +0 10 +1 + + +Hz +hertz +0 10 +1 + + +Hz +hertz +0 10 +1 + + + + +Hz +hertz +0 10 +1 + + +Hz +hertz +0 10 +1 + + +Hz +hertz +0 10 +1 + + +Hz +hertz +0 10 +1 + + +Hz +hertz +0 10 +1 + + +Hz +hertz +0 10 +1 + + +Hz +hertz +0 10 +1 + + +Hz +hertz +0 10 +1 + + +Hz +hertz +0 10 +1 + + + + +m +meters +0 10 + + +0 500 +True + + + + +True + + +s +seconds +True + + +s +seconds +True + + +s +seconds +True + + + + + +None +MAV + + + +m +meters + + +m +meters + + +m +meters + + + +Forward +Right +Back +Left +Up +Down + + + + + + +None +Quadrature + + + +1 + + +m +meters +0.001 + + +m +meters +0.01 + + +m +meters +0.01 + + +m +meters +0.01 + + + +Disabled +PixhawkAUX1 +PixhawkAUX2 +PixhawkAUX3 +PixhawkAUX4 +PixhawkAUX5 +PixhawkAUX6 + + + + +Disabled +PixhawkAUX1 +PixhawkAUX2 +PixhawkAUX3 +PixhawkAUX4 +PixhawkAUX5 +PixhawkAUX6 + + + + +None +Quadrature + + + +1 + + +m +meters +0.001 + + +m +meters +0.01 + + +m +meters +0.01 + + +m +meters +0.01 + + + +Disabled +PixhawkAUX1 +PixhawkAUX2 +PixhawkAUX3 +PixhawkAUX4 +PixhawkAUX5 +PixhawkAUX6 + + + + +Disabled +PixhawkAUX1 +PixhawkAUX2 +PixhawkAUX3 +PixhawkAUX4 +PixhawkAUX5 +PixhawkAUX6 + + + + + + +None +Heading when armed +RC input offset heading when armed +Analog +NMEA +SITL + +True + + +0 16 +1 + + + +Pixracer +Pixhawk ADC4 +Pixhawk ADC3 +Pixhawk ADC6 +Pixhawk2 ADC +PixhawkAUX1 +PixhawkAUX2 +PixhawkAUX3 +PixhawkAUX4 +PixhawkAUX5 +PixhawkAUX6 +Pixhawk SBUS + + + +V +volt +0.01 +0 5.0 + + +V +volt +0.01 +0 5.0 + + +deg +degrees +1 +0 360 + + +Hz +hertz + + + +None +Calibrate direction +Calibrate speed + + + +deg +degrees +1 +0 360 + + +m/s +meters per second +0.1 +0 5 + + + +None +Airspeed library +Modern Devices Wind Sensor +RPM library +NMEA +SITL + +True + + + +Pixracer +Pixhawk ADC4 +Pixhawk ADC3 +Pixhawk ADC6 +Pixhawk2 ADC +PixhawkAUX1 +PixhawkAUX2 +PixhawkAUX3 +PixhawkAUX4 +PixhawkAUX5 +PixhawkAUX6 +Pixhawk SBUS + + + + +Pixracer +Pixhawk ADC4 +Pixhawk ADC3 +Pixhawk ADC6 +Pixhawk2 ADC +PixhawkAUX1 +PixhawkAUX2 +PixhawkAUX3 +PixhawkAUX4 +PixhawkAUX5 +PixhawkAUX6 +Pixhawk SBUS + + + +V +volt +0.01 +0 3.3 + + +Hz +hertz + + + + +m/s +meters per second +0 100 +0.1 + + +m +meters +0 100 +0.1 + + +m +meters +0 10 +0.1 + + +deg +degrees +0 360 +1 + + +deg/s +degrees per second +0 360 +1 + + + + + +Disabled +Enabled + + + +rad/s +radians per second +0 200 + + +0.100 2.000 + + +0.100 2.000 + + +0.000 2.000 + + +0.000 1.000 + + +0.000 0.400 + + +1.000 100.000 +Hz +hertz + + +0.100 2.000 + + +0.100 2.000 + + +0.000 2.000 + + +0.000 1.000 + + +0.000 0.400 + + +1.000 100.000 +Hz +hertz + + + diff --git a/src/FirmwarePlugin/APM/APMParameterFactMetaData.Rover.4.0.xml b/src/FirmwarePlugin/APM/APMParameterFactMetaData.Rover.4.0.xml new file mode 100644 index 0000000..078c13d --- /dev/null +++ b/src/FirmwarePlugin/APM/APMParameterFactMetaData.Rover.4.0.xml @@ -0,0 +1,13621 @@ + + + + + + + + + +Disabled +Default + +0:ATTITUDE_FAST,1:ATTITUDE_MED,2:GPS,3:PM,4:THR,5:NTUN,7:IMU,8:CMD,9:CURRENT,10:RANGEFINDER,11:COMPASS,12:CAMERA,13:STEERING,14:RC,15:ARM/DISARM,19:IMU_RAW + + + + + +Manual +Acro +Steering +Hold +Loiter +Follow +Simple +Auto +RTL +SmartRTL +Guided + + + +1 255 + + +1 255 + + +s +seconds +0 30 +1 + + + +None +Steering +Throttle +Pitch +Left Wheel +Right Wheel +Sailboat Heel + +0:Steering,1:Throttle,2:Pitch,3:Left Wheel,4:Right Wheel,5:Sailboat Heel + + + +Disabled +APM TriggerPin0 +APM TriggerPin1 +APM TriggerPin2 +APM TriggerPin3 +APM TriggerPin4 +APM TriggerPin5 +APM TriggerPin6 +APM TriggerPin7 +APM TriggerPin8 +Pixhawk TriggerPin50 +Pixhawk TriggerPin51 +Pixhawk TriggerPin52 +Pixhawk TriggerPin53 +Pixhawk TriggerPin54 +Pixhawk TriggerPin55 + + + +m/s/s +meters per square second +0 20 +0.1 + + +m/s +meters per second +0 100 +0.1 + + +% +percent +0 100 +1 + + + +Default +Two Paddles Input +Direction reversed when backing up +Direction unchanged when backing up + + + + +Nothing +RTL +Hold +SmartRTL or RTL +SmartRTL or Hold + + + +s +seconds +1 100 +0.5 + + + +Disabled +Enabled +Enabled Continue with Mission in Auto + + + +910 1100 +1 + + + +Disabled +Enabled +Enabled Continue with Mission in Auto + + + + +Disabled +Hold +HoldAndDisarm + + + + +Disabled +Hold + + + +0.6:Strict, 0.8:Default, 1.0:Relaxed + + + + + +Manual +Acro +Steering +Hold +Loiter +Follow +Simple +Auto +RTL +SmartRTL +Guided + + + + +Manual +Acro +Steering +Hold +Loiter +Follow +Simple +Auto +RTL +SmartRTL +Guided + + + + +Manual +Acro +Steering +Hold +Loiter +Follow +Simple +Auto +RTL +SmartRTL +Guided + + + + +Manual +Acro +Steering +Hold +Loiter +Follow +Simple +Auto +RTL +SmartRTL +Guided + + + + +Manual +Acro +Steering +Hold +Loiter +Follow +Simple +Auto +RTL +SmartRTL +Guided + + + + +Manual +Acro +Steering +Hold +Loiter +Follow +Simple +Auto +RTL +SmartRTL +Guided + + + +gravities +standard acceleration due to gravity +0.1 10 +0.01 + + + +NotEnforced +Enforced + + + +m +meters +0 10 +0.1 + + +deg/s +degrees per second +0 360 +1 + + +m/s +meters per second +0 100 +0.1 + + + +Undefined +Rover +Boat +BalanceBot + + + +deg +degrees +0 5 +0.1 + + +deg +degrees +0 60 +1 + + + +Undefined +Omni3 +OmniX +OmniPlus + +True + + + +Forward or reverse to target point +Always face bow towards target point +Always face stern towards target point + + + + +InitialHeading +CardinalDirections + +True + + +m +meters +0 20 +1 + + + +Hold +Loiter +Acro + + + +deg +degrees +-2 2 +0.1 + + + +Disabled +Enabled + + + +m/s +meters per second +0 30 +0.1 + + +0 5 +0.01 + + + +None +Failsafe enabled in Hold mode + +0:Failsafe enabled in Hold mode + + + +Nothing +SaveWaypoint +LearnCruiseSpeed +ArmDisarm +Manual +Acro +Steering +Hold +Auto +RTL +SmartRTL +Guided +Loiter + + + + + +deg +degrees +0 360 +1 + + +deg/s +degrees per second +0 360 +1 + + + + + + + + + +Disabled +BB Blue GP0 pin 4 +AUXOUT1 +AUXOUT2 +AUXOUT3 +AUXOUT4 +AUXOUT5 +AUXOUT6 +BB Blue GP0 pin 3 +BB Blue GP0 pin 6 +BB Blue GP0 pin 5 + + + + + + + + + + + + +Disabled +BB Blue GP0 pin 4 +AUXOUT1 +AUXOUT2 +AUXOUT3 +AUXOUT4 +AUXOUT5 +AUXOUT6 +BB Blue GP0 pin 3 +BB Blue GP0 pin 6 +BB Blue GP0 pin 5 + + + +m +meters + + +m +meters + + +mbar +millibar + + + + + + + + + + + + + + +s +seconds + + +km +kilometers + + + + +0.0 1.0 +.01 + + + +Disabled +Enabled + + + +0.1 0.4 +.01 + + +0.1 0.4 +.01 + + +0 127 +m/s +meters per second +1 + + +rad +radians +-0.1745 +0.1745 +0.01 + + +rad +radians +-0.1745 +0.1745 +0.01 + + +rad +radians +-0.1745 +0.1745 +0.01 + + + +None +Yaw45 +Yaw90 +Yaw135 +Yaw180 +Yaw225 +Yaw270 +Yaw315 +Roll180 +Roll180Yaw45 +Roll180Yaw90 +Roll180Yaw135 +Pitch180 +Roll180Yaw225 +Roll180Yaw270 +Roll180Yaw315 +Roll90 +Roll90Yaw45 +Roll90Yaw90 +Roll90Yaw135 +Roll270 +Roll270Yaw45 +Roll270Yaw90 +Roll270Yaw135 +Pitch90 +Pitch270 +Pitch180Yaw90 +Pitch180Yaw270 +Roll90Pitch90 +Roll180Pitch90 +Roll270Pitch90 +Roll90Pitch180 +Roll270Pitch180 +Roll90Pitch270 +Roll180Pitch270 +Roll270Pitch270 +Roll90Pitch180Yaw90 +Roll90Yaw270 +Yaw293Pitch68Roll180 +Pitch315 +Roll90Pitch315 +Custom + + + +0.001 0.5 +.01 + + +0 10 +1 + + + +Disabled +Enable EKF2 +Enable EKF3 + + + +-180 180 +deg +degrees +1 + + +-180 180 +deg +degrees +1 + + +-180 180 +deg +degrees +1 + + + + + +Disabled +THR_MIN PWM when disarmed +0 PWM when disarmed + + + +m/s/s +meters per square second +0.25 3.0 + + + +Disabled +ArmingOnly +ArmOrDisarm + + + +0:Land,1:VTOL Land,2:DO_LAND_START,3:Takeoff,4:VTOL Takeoff,5:Rallypoint + + + +None +All +Barometer +Compass +GPS Lock +INS(INertial Sensors - accels & gyros) +Parameters(unused) +RC Channels +Board voltage +Battery Level +Airspeed +LoggingAvailable +Hardware safety switch +GPS configuration +System + +0:All,1:Barometer,2:Compass,3:GPS lock,4:INS,5:Parameters,6:RC Channels,7:Board voltage,8:Battery Level,9:Airspeed,10:Logging Available,11:Hardware safety switch,12:GPS Configuration,13:System,14:Mission,15:Rangefinder + + + + + +None +I2C-MS4525D0 +Analog +I2C-MS5525 +I2C-MS5525 (0x76) +I2C-MS5525 (0x77) +I2C-SDP3X +I2C-DLVR-5in +UAVCAN +I2C-DLVR-10in + + + + +DoNotUse +Use +UseWhenZeroThrottle + + + +0.1 + + +0.1 + + + + + + + + + +Disable +Enable + + + + + + +Bus0(internal) +Bus1(external) +Bus2(auxillary) + + + + +FirstSensor +2ndSensor + + + +0:Disable on sensor failure,1:Re-enable on sensor recovery + + + +None +I2C-MS4525D0 +Analog +I2C-MS5525 +I2C-MS5525 (0x76) +I2C-MS5525 (0x77) +I2C-SDP3X +I2C-DLVR-5in +UAVCAN +I2C-DLVR-10in + + + + +Don't Use +use +UseWhenZeroThrottle + + + +0.1 + + +0.1 + + + + + + + + + +Disable +Enable + + + + + + +Bus0(internal) +Bus1(external) +Bus2(auxillary) + + + + + +0.000 2.000 +0.01 + + +0.000 2.000 +0.01 + + +0.000 1.000 +0.01 + + +0.000 0.400 +0.001 + + +0.000 3.000 +0.001 + + +0.000 100.000 +0.1 +Hz +hertz + + +Hz +hertz + + +Hz +hertz + + +Hz +hertz + + +0.010 2.000 +0.01 + + +0.000 2.000 + + +0.000 1.000 +0.01 + + +0.000 0.400 +0.001 + + +0.000 0.500 +0.001 + + +0.000 100.000 +0.1 +Hz +hertz + + +Hz +hertz + + +Hz +hertz + + +Hz +hertz + + +0.0 10.0 +0.1 +m/s/s +meters per square second + + + +Disable +Enable + + + +0.00 0.50 +0.01 +m/s +meters per second + + +1.000 10.000 +0.1 + + +0 1000 +0.1 +deg/s/s +degrees per square second + + +0 1000 +0.1 +deg/s +degrees per second + + +0.0 10.0 +0.1 +m/s/s +meters per square second + + +0.000 2.000 +0.01 + + +0.000 2.000 + + +0.000 1.000 +0.01 + + +0.000 0.100 +0.001 + + +0.000 0.500 +0.001 + + +0.000 100.000 +0.1 +Hz +hertz + + +Hz +hertz + + +Hz +hertz + + +Hz +hertz + + +0.0 10.0 +0.01 + + +0.000 2.000 +0.01 + + +0.000 2.000 + + +0.000 1.000 +0.01 + + +0.000 0.100 +0.001 + + +0.000 0.500 +0.001 + + +0.000 100.000 +0.1 +Hz +hertz + + +Hz +hertz + + +Hz +hertz + + +Hz +hertz + + + + + +None +UseFence +UseProximitySensor +UseFence and UseProximitySensor +UseBeaconFence +All + +0:UseFence,1:UseProximitySensor,2:UseBeaconFence + + +cdeg +centidegrees +0 4500 + + +m +meters +1 30 + + +m +meters +1 10 + + + +Slide +Stop + + + + + + +Disabled +Analog Voltage Only +Analog Voltage and Current +Solo +Bebop +SMBus-Maxell +UAVCAN-BatteryInfo +BLHeli ESC +SumOfFollowing +FuelFlow +FuelLevelPWM + +True + + + +Disabled +Pixhawk/Pixracer/Navio2/Pixhawk2_PM1 +Pixhawk2_PM2 +CubeOrange +CubeOrange_PM2 +PX4-v1 + +True + + + +Disabled +Pixhawk/Pixracer/Navio2/Pixhawk2_PM1 +Pixhawk2_PM2 +CubeOrange +CubeOrange_PM2 +PX4-v1 + +True + + + + +A/V +ampere per volt + + +V +volt + + +mAh +milliampere hour +50 + + +W +watt +1 + + + + +s +seconds +1 +0 120 + + + +Raw Voltage +Sag Compensated Voltage + + + +V +volt +0.1 + + +mAh +milliampere hour +50 + + +V +volt +0.1 + + +mAh +milliampere hour +50 + + + +None +RTL +Hold +SmartRTL +SmartRTL or Hold +Terminate + + + + +None +RTL +Hold +SmartRTL +SmartRTL or Hold +Terminate + + + +V +volt +0.1 + + +mAh +milliampere hour +50 + + + + + +Disabled +Analog Voltage Only +Analog Voltage and Current +Solo +Bebop +SMBus-Maxell +UAVCAN-BatteryInfo +BLHeli ESC +SumOfFollowing +FuelFlow +FuelLevelPWM + +True + + + +Disabled +Pixhawk/Pixracer/Navio2/Pixhawk2_PM1 +Pixhawk2_PM2 +CubeOrange +CubeOrange_PM2 +PX4-v1 + +True + + + +Disabled +Pixhawk/Pixracer/Navio2/Pixhawk2_PM1 +Pixhawk2_PM2 +CubeOrange +CubeOrange_PM2 +PX4-v1 + +True + + + + +A/V +ampere per volt + + +V +volt + + +mAh +milliampere hour +50 + + +W +watt +1 + + + + +s +seconds +1 +0 120 + + + +Raw Voltage +Sag Compensated Voltage + + + +V +volt +0.1 + + +mAh +milliampere hour +50 + + +V +volt +0.1 + + +mAh +milliampere hour +50 + + + +None +RTL +Hold +SmartRTL +SmartRTL or Hold +Terminate + + + + +None +RTL +Hold +SmartRTL +SmartRTL or Hold +Terminate + + + +V +volt +0.1 + + +mAh +milliampere hour +50 + + + + + +Disabled +Analog Voltage Only +Analog Voltage and Current +Solo +Bebop +SMBus-Maxell +UAVCAN-BatteryInfo +BLHeli ESC +SumOfFollowing +FuelFlow +FuelLevelPWM + +True + + + +Disabled +Pixhawk/Pixracer/Navio2/Pixhawk2_PM1 +Pixhawk2_PM2 +CubeOrange +CubeOrange_PM2 +PX4-v1 + +True + + + +Disabled +Pixhawk/Pixracer/Navio2/Pixhawk2_PM1 +Pixhawk2_PM2 +CubeOrange +CubeOrange_PM2 +PX4-v1 + +True + + + + +A/V +ampere per volt + + +V +volt + + +mAh +milliampere hour +50 + + +W +watt +1 + + + + +s +seconds +1 +0 120 + + + +Raw Voltage +Sag Compensated Voltage + + + +V +volt +0.1 + + +mAh +milliampere hour +50 + + +V +volt +0.1 + + +mAh +milliampere hour +50 + + + +None +RTL +Hold +SmartRTL +SmartRTL or Hold +Terminate + + + + +None +RTL +Hold +SmartRTL +SmartRTL or Hold +Terminate + + + +V +volt +0.1 + + +mAh +milliampere hour +50 + + + + + +Disabled +Analog Voltage Only +Analog Voltage and Current +Solo +Bebop +SMBus-Maxell +UAVCAN-BatteryInfo +BLHeli ESC +SumOfFollowing +FuelFlow +FuelLevelPWM + +True + + + +Disabled +Pixhawk/Pixracer/Navio2/Pixhawk2_PM1 +Pixhawk2_PM2 +CubeOrange +CubeOrange_PM2 +PX4-v1 + +True + + + +Disabled +Pixhawk/Pixracer/Navio2/Pixhawk2_PM1 +Pixhawk2_PM2 +CubeOrange +CubeOrange_PM2 +PX4-v1 + +True + + + + +A/V +ampere per volt + + +V +volt + + +mAh +milliampere hour +50 + + +W +watt +1 + + + + +s +seconds +1 +0 120 + + + +Raw Voltage +Sag Compensated Voltage + + + +V +volt +0.1 + + +mAh +milliampere hour +50 + + +V +volt +0.1 + + +mAh +milliampere hour +50 + + + +None +RTL +Hold +SmartRTL +SmartRTL or Hold +Terminate + + + + +None +RTL +Hold +SmartRTL +SmartRTL or Hold +Terminate + + + +V +volt +0.1 + + +mAh +milliampere hour +50 + + + + + +Disabled +Analog Voltage Only +Analog Voltage and Current +Solo +Bebop +SMBus-Maxell +UAVCAN-BatteryInfo +BLHeli ESC +SumOfFollowing +FuelFlow +FuelLevelPWM + +True + + + +Disabled +Pixhawk/Pixracer/Navio2/Pixhawk2_PM1 +Pixhawk2_PM2 +CubeOrange +CubeOrange_PM2 +PX4-v1 + +True + + + +Disabled +Pixhawk/Pixracer/Navio2/Pixhawk2_PM1 +Pixhawk2_PM2 +CubeOrange +CubeOrange_PM2 +PX4-v1 + +True + + + + +A/V +ampere per volt + + +V +volt + + +mAh +milliampere hour +50 + + +W +watt +1 + + + + +s +seconds +1 +0 120 + + + +Raw Voltage +Sag Compensated Voltage + + + +V +volt +0.1 + + +mAh +milliampere hour +50 + + +V +volt +0.1 + + +mAh +milliampere hour +50 + + + +None +RTL +Hold +SmartRTL +SmartRTL or Hold +Terminate + + + + +None +RTL +Hold +SmartRTL +SmartRTL or Hold +Terminate + + + +V +volt +0.1 + + +mAh +milliampere hour +50 + + + + + +Disabled +Analog Voltage Only +Analog Voltage and Current +Solo +Bebop +SMBus-Maxell +UAVCAN-BatteryInfo +BLHeli ESC +SumOfFollowing +FuelFlow +FuelLevelPWM + +True + + + +Disabled +Pixhawk/Pixracer/Navio2/Pixhawk2_PM1 +Pixhawk2_PM2 +CubeOrange +CubeOrange_PM2 +PX4-v1 + +True + + + +Disabled +Pixhawk/Pixracer/Navio2/Pixhawk2_PM1 +Pixhawk2_PM2 +CubeOrange +CubeOrange_PM2 +PX4-v1 + +True + + + + +A/V +ampere per volt + + +V +volt + + +mAh +milliampere hour +50 + + +W +watt +1 + + + + +s +seconds +1 +0 120 + + + +Raw Voltage +Sag Compensated Voltage + + + +V +volt +0.1 + + +mAh +milliampere hour +50 + + +V +volt +0.1 + + +mAh +milliampere hour +50 + + + +None +RTL +Hold +SmartRTL +SmartRTL or Hold +Terminate + + + + +None +RTL +Hold +SmartRTL +SmartRTL or Hold +Terminate + + + +V +volt +0.1 + + +mAh +milliampere hour +50 + + + + + +Disabled +Analog Voltage Only +Analog Voltage and Current +Solo +Bebop +SMBus-Maxell +UAVCAN-BatteryInfo +BLHeli ESC +SumOfFollowing +FuelFlow +FuelLevelPWM + +True + + + +Disabled +Pixhawk/Pixracer/Navio2/Pixhawk2_PM1 +Pixhawk2_PM2 +CubeOrange +CubeOrange_PM2 +PX4-v1 + +True + + + +Disabled +Pixhawk/Pixracer/Navio2/Pixhawk2_PM1 +Pixhawk2_PM2 +CubeOrange +CubeOrange_PM2 +PX4-v1 + +True + + + + +A/V +ampere per volt + + +V +volt + + +mAh +milliampere hour +50 + + +W +watt +1 + + + + +s +seconds +1 +0 120 + + + +Raw Voltage +Sag Compensated Voltage + + + +V +volt +0.1 + + +mAh +milliampere hour +50 + + +V +volt +0.1 + + +mAh +milliampere hour +50 + + + +None +RTL +Hold +SmartRTL +SmartRTL or Hold +Terminate + + + + +None +RTL +Hold +SmartRTL +SmartRTL or Hold +Terminate + + + +V +volt +0.1 + + +mAh +milliampere hour +50 + + + + + +Disabled +Analog Voltage Only +Analog Voltage and Current +Solo +Bebop +SMBus-Maxell +UAVCAN-BatteryInfo +BLHeli ESC +SumOfFollowing +FuelFlow +FuelLevelPWM + +True + + + +Disabled +Pixhawk/Pixracer/Navio2/Pixhawk2_PM1 +Pixhawk2_PM2 +CubeOrange +CubeOrange_PM2 +PX4-v1 + +True + + + +Disabled +Pixhawk/Pixracer/Navio2/Pixhawk2_PM1 +Pixhawk2_PM2 +CubeOrange +CubeOrange_PM2 +PX4-v1 + +True + + + + +A/V +ampere per volt + + +V +volt + + +mAh +milliampere hour +50 + + +W +watt +1 + + + + +s +seconds +1 +0 120 + + + +Raw Voltage +Sag Compensated Voltage + + + +V +volt +0.1 + + +mAh +milliampere hour +50 + + +V +volt +0.1 + + +mAh +milliampere hour +50 + + + +None +RTL +Hold +SmartRTL +SmartRTL or Hold +Terminate + + + + +None +RTL +Hold +SmartRTL +SmartRTL or Hold +Terminate + + + +V +volt +0.1 + + +mAh +milliampere hour +50 + + + + + +Disabled +Analog Voltage Only +Analog Voltage and Current +Solo +Bebop +SMBus-Maxell +UAVCAN-BatteryInfo +BLHeli ESC +SumOfFollowing +FuelFlow +FuelLevelPWM + +True + + + +Disabled +Pixhawk/Pixracer/Navio2/Pixhawk2_PM1 +Pixhawk2_PM2 +CubeOrange +CubeOrange_PM2 +PX4-v1 + +True + + + +Disabled +Pixhawk/Pixracer/Navio2/Pixhawk2_PM1 +Pixhawk2_PM2 +CubeOrange +CubeOrange_PM2 +PX4-v1 + +True + + + + +A/V +ampere per volt + + +V +volt + + +mAh +milliampere hour +50 + + +W +watt +1 + + + + +s +seconds +1 +0 120 + + + +Raw Voltage +Sag Compensated Voltage + + + +V +volt +0.1 + + +mAh +milliampere hour +50 + + +V +volt +0.1 + + +mAh +milliampere hour +50 + + + +None +RTL +Hold +SmartRTL +SmartRTL or Hold +Terminate + + + + +None +RTL +Hold +SmartRTL +SmartRTL or Hold +Terminate + + + +V +volt +0.1 + + +mAh +milliampere hour +50 + + + + + +None +Pozyx +Marvelmind +SITL + + + +deg +degrees +0.000001 +-90 90 + + +deg +degrees +0.000001 +-180 180 + + +m +meters +1 +0 10000 + + +deg +degrees +1 +-180 +180 + + + + + +No PWMs +One PWMs +Two PWMs +Three PWMs +Four PWMs +Five PWMs +Six PWMs +Seven PWMs +Eight PWMs + +True + + + +Disabled +Enabled +Auto + +True + + + +Disabled +Enabled +Auto + +True + + + +Disabled +Enabled + +True + + + +Disabled +50Hz +75Hz +100Hz +150Hz +200Hz +250Hz +300Hz + +True + + +-32768 32767 + + + +Disabled +Enabled + +0:Ch1,1:Ch2,2:Ch3,3:Ch4,4:Ch5,5:Ch6,6:Ch7,7:Ch8,8:Ch9,9:Ch10,10:Ch11,11:Ch12,12:Ch13,13:Ch14 +True + + +-1 80 +degC +degrees Celsius + + + +AUTO +PX4V1 +Pixhawk +Cube/Pixhawk2 +Pixracer +PixhawkMini +Pixhawk2Slim +VRBrain 5.1 +VRBrain 5.2 +VR Micro Brain 5.1 +VR Micro Brain 5.2 +VRBrain Core 1.0 +VRBrain 5.4 +Intel Aero FC +AUAV2.1 + +True + + + +Disabled +Enabled + +True + + +0:ActiveForSafetyEnable,1:ActiveForSafetyDisable,2:ActiveWhenArmed,3:Force safety on when the aircraft disarms + + +V +volt +4.0 5.5 +0.1 + + +V +volt +3.3 12.0 +0.1 + + +0 32 +1 + + + +3.3V +5V + + + +0:Enable hardware watchdog + + +0 10000 +ms +milliseconds + + +1 500 +1 + + +0 1 +0.1 + + +0 100 +1 + + + + + +None +CYRF6936 +CC2500 +BK2425 + + + + +Auto +DSM2 +DSMX + + + +0 4 + + + +NotDisabled +Disabled + + + +0 16 + + +0 16 + + + +Disabled +Enabled + + + +1 8 + + + +Disabled +MinChannel +MidChannel +MaxChannel +MinChannelCW +MidChannelCW +MaxChannelCW + + + + +Mode1 +Mode2 + + + + +Disabled +TestChan1 +TestChan2 +TestChan3 +TestChan4 +TestChan5 +TestChan6 +TestChan7 +TestChan8 + + + +0 16 + + +0 16 + + +1 8 + + +0 40 + + +0 120 + + +0 31 + + + + +0:GPS,1:MAVLINK_SYSTEM_TIME,2:HW + + +-720 +840 + + + + + +Disabled +Enabled + + + + +Disabled +AUXOUT1 +AUXOUT2 +AUXOUT3 +AUXOUT4 +AUXOUT5 +AUXOUT6 + + + + +Disabled +AUXOUT1 +AUXOUT2 +AUXOUT3 +AUXOUT4 +AUXOUT5 +AUXOUT6 + + + + +Disabled +AUXOUT1 +AUXOUT2 +AUXOUT3 +AUXOUT4 +AUXOUT5 +AUXOUT6 + + + + +Disabled +AUXOUT1 +AUXOUT2 +AUXOUT3 +AUXOUT4 +AUXOUT5 +AUXOUT6 + + + +0 3600 + + + + + +Servo +Relay + + + +ds +deciseconds +0 50 + + +PWM +PWM in microseconds +1000 2000 + + +PWM +PWM in microseconds +1000 2000 + + +m +meters +0 1000 + + + +Low +High + + + +ms +milliseconds +0 10000 + + +deg +degrees +0 180 + + + +Disabled +AUX1 +AUX2 +AUX3 +AUX4 +AUX5 +AUX6 + +True + + + +TriggerLow +TriggerHigh + + + + +Always +Only when in AUTO + + + + +Default +BMMCC + + + + + + +Disabled +UAVCAN +KDECAN +ToshibaCAN + +True + + + + + + + + +1 250 + + +0: Servo 1, 1: Servo 2, 2: Servo 3, 3: Servo 4, 4: Servo 5, 5: Servo 6, 6: Servo 7, 7: Servo 8, 8: Servo 9, 9: Servo 10, 10: Servo 11, 11: Servo 12, 12: Servo 13, 13: Servo 14, 14: Servo 15 + + +0: ESC 1, 1: ESC 2, 2: ESC 3, 3: ESC 4, 4: ESC 5, 5: ESC 6, 6: ESC 7, 7: ESC 8, 8: ESC 9, 9: ESC 10, 10: ESC 11, 11: ESC 12, 12: ESC 13, 13: ESC 14, 14: ESC 15, 15: ESC 16 + + +1 200 +Hz +hertz + + + + + +Disabled +UAVCAN +KDECAN +ToshibaCAN + +True + + + + + + + + +1 250 + + +0: Servo 1, 1: Servo 2, 2: Servo 3, 3: Servo 4, 4: Servo 5, 5: Servo 6, 6: Servo 7, 7: Servo 8, 8: Servo 9, 9: Servo 10, 10: Servo 11, 11: Servo 12, 12: Servo 13, 13: Servo 14, 14: Servo 15 + + +0: ESC 1, 1: ESC 2, 2: ESC 3, 3: ESC 4, 4: ESC 5, 5: ESC 6, 6: ESC 7, 7: ESC 8, 8: ESC 9, 9: ESC 10, 10: ESC 11, 11: ESC 12, 12: ESC 13, 13: ESC 14, 14: ESC 15, 15: ESC 16 + + +1 200 +Hz +hertz + + + + + +Disabled +UAVCAN +KDECAN +ToshibaCAN + +True + + + + + + + + +1 250 + + +0: Servo 1, 1: Servo 2, 2: Servo 3, 3: Servo 4, 4: Servo 5, 5: Servo 6, 6: Servo 7, 7: Servo 8, 8: Servo 9, 9: Servo 10, 10: Servo 11, 11: Servo 12, 12: Servo 13, 13: Servo 14, 14: Servo 15 + + +0: ESC 1, 1: ESC 2, 2: ESC 3, 3: ESC 4, 4: ESC 5, 5: ESC 6, 6: ESC 7, 7: ESC 8, 8: ESC 9, 9: ESC 10, 10: ESC 11, 11: ESC 12, 12: ESC 13, 13: ESC 14, 14: ESC 15, 15: ESC 16 + + +1 200 +Hz +hertz + + + + + +Disabled +First driver +Second driver + +True + + +10000 1000000 + + + +Disabled +Major messages +All messages + + + + + + +Disabled +First driver +Second driver + +True + + +10000 1000000 + + + +Disabled +Major messages +All messages + + + + + + +Disabled +First driver +Second driver + +True + + +10000 1000000 + + + +Disabled +Major messages +All messages + + + + + + +Disabled +First driver +Second driver + +True + + + +Disabled +Serial0 +Serial1 +Serial2 +Serial3 +Serial4 +Serial5 +Serial6 + + + +0 32767 + + + + +-400 400 +mGauss +milligauss +1 + + +-400 400 +mGauss +milligauss +1 + + +-400 400 +mGauss +milligauss +1 + + +-3.142 3.142 +rad +radians +0.01 + + + +Disabled +Internal-Learning +EKF-Learning +InFlight-Learning + + + + +Disabled +Enabled + + + + +Disabled +Enabled + + + + +Disabled +Use Throttle +Use Current + + + +-1000 1000 +mGauss/A +milligauss per ampere +1 + + +-1000 1000 +mGauss/A +milligauss per ampere +1 + + +-1000 1000 +mGauss/A +milligauss per ampere +1 + + + +None +Yaw45 +Yaw90 +Yaw135 +Yaw180 +Yaw225 +Yaw270 +Yaw315 +Roll180 +Roll180Yaw45 +Roll180Yaw90 +Roll180Yaw135 +Pitch180 +Roll180Yaw225 +Roll180Yaw270 +Roll180Yaw315 +Roll90 +Roll90Yaw45 +Roll90Yaw90 +Roll90Yaw135 +Roll270 +Roll270Yaw45 +Roll270Yaw90 +Roll270Yaw135 +Pitch90 +Pitch270 +Pitch180Yaw90 +Pitch180Yaw270 +Roll90Pitch90 +Roll180Pitch90 +Roll270Pitch90 +Roll90Pitch180 +Roll270Pitch180 +Roll90Pitch270 +Roll180Pitch270 +Roll270Pitch270 +Roll90Pitch180Yaw90 +Roll90Yaw270 +Yaw293Pitch68Roll180 +Pitch315 +Roll90Pitch315 + + + + +Internal +External +ForcedExternal + + + +-400 400 +mGauss +milligauss +1 + + +-400 400 +mGauss +milligauss +1 + + +-400 400 +mGauss +milligauss +1 + + +-1000 1000 +mGauss/A +milligauss per ampere +1 + + +-1000 1000 +mGauss/A +milligauss per ampere +1 + + +-1000 1000 +mGauss/A +milligauss per ampere +1 + + + +FirstCompass +SecondCompass +ThirdCompass + + + +-400 400 +mGauss +milligauss +1 + + +-400 400 +mGauss +milligauss +1 + + +-400 400 +mGauss +milligauss +1 + + +-1000 1000 +mGauss/A +milligauss per ampere +1 + + +-1000 1000 +mGauss/A +milligauss per ampere +1 + + +-1000 1000 +mGauss/A +milligauss per ampere +1 + + +True + + +True + + +True + + + +Disabled +Enabled + + + + +None +Yaw45 +Yaw90 +Yaw135 +Yaw180 +Yaw225 +Yaw270 +Yaw315 +Roll180 +Roll180Yaw45 +Roll180Yaw90 +Roll180Yaw135 +Pitch180 +Roll180Yaw225 +Roll180Yaw270 +Roll180Yaw315 +Roll90 +Roll90Yaw45 +Roll90Yaw90 +Roll90Yaw135 +Roll270 +Roll270Yaw45 +Roll270Yaw90 +Roll270Yaw135 +Pitch90 +Pitch270 +Pitch180Yaw90 +Pitch180Yaw270 +Roll90Pitch90 +Roll180Pitch90 +Roll270Pitch90 +Roll90Pitch180 +Roll270Pitch180 +Roll90Pitch270 +Roll180Pitch270 +Roll270Pitch270 +Roll90Pitch180Yaw90 +Roll90Yaw270 +Yaw293Pitch68Roll180 +Pitch315 +Roll90Pitch315 + + + + +Internal +External +ForcedExternal + + + + +Disabled +Enabled + + + + +None +Yaw45 +Yaw90 +Yaw135 +Yaw180 +Yaw225 +Yaw270 +Yaw315 +Roll180 +Roll180Yaw45 +Roll180Yaw90 +Roll180Yaw135 +Pitch180 +Roll180Yaw225 +Roll180Yaw270 +Roll180Yaw315 +Roll90 +Roll90Yaw45 +Roll90Yaw90 +Roll90Yaw135 +Roll270 +Roll270Yaw45 +Roll270Yaw90 +Roll270Yaw135 +Pitch90 +Pitch270 +Pitch180Yaw90 +Pitch180Yaw270 +Roll90Pitch90 +Roll180Pitch90 +Roll270Pitch90 +Roll90Pitch180 +Roll270Pitch180 +Roll90Pitch270 +Roll180Pitch270 +Roll270Pitch270 +Roll90Pitch180Yaw90 +Roll90Yaw270 +Yaw293Pitch68Roll180 +Pitch315 +Roll90Pitch315 + + + + +Internal +External +ForcedExternal + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +4 32 + +Very Strict +Strict +Default +Relaxed + +0.1 + + +500 3000 +1 + + +0:HMC5883,1:LSM303D,2:AK8963,3:BMM150,4:LSM9DS1,5:LIS3MDL,6:AK09916,7:IST8310,8:ICM20948,9:MMC3416,11:UAVCAN,12:QMC5883,14:MAG3110,15:IST8308 + + +% +percent +0 100 +1 + + + +Disabled +CheckOnly +CheckAndFix + + + + + + + + + + +Disabled +Enabled + + + + + + +Disabled +Enabled + + + +0 2 +0.01 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Disabled +Enabled + +True + + + +GPS 3D Vel and 2D Pos +GPS 2D vel and 2D pos +GPS 2D pos +No GPS + + + +0.05 5.0 +0.05 +m/s +meters per second + + +0.05 5.0 +0.05 +m/s +meters per second + + +100 1000 +25 + + +0.1 10.0 +0.1 +m +meters + + +100 1000 +25 + + +10 100 +5 +m +meters + + + +Use Baro +Use Range Finder +Use GPS +Use Range Beacon + +True + + +0.1 10.0 +0.1 +m +meters + + +100 1000 +25 + + +0 250 +10 +ms +milliseconds +True + + +0.01 0.5 +0.01 +Gauss +gauss + + + +When flying +When manoeuvring +Never +After first climb yaw reset +Always + + + +100 1000 +25 + + +0.5 5.0 +0.1 +m/s +meters per second + + +100 1000 +25 + + +0.1 10.0 +0.1 +m +meters + + +100 1000 +25 + + +1.0 4.0 +0.1 +rad/s +radians per second + + +0.05 1.0 +0.05 +rad/s +radians per second + + +100 1000 +25 + + +0 127 +10 +ms +milliseconds +True + + +0.0001 0.1 +0.0001 +rad/s +radians per second + + +0.01 1.0 +0.01 +m/s/s +meters per square second + + +0.00001 0.001 +rad/s/s +radians per square second + + +0.000001 0.001 +Hz +hertz + + +0.00001 0.005 +m/s/s/s +meters per cubic second + + +0.01 1.0 +0.1 +m/s/s +meters per square second + + +0.0 1.0 +0.1 + + +0:NSats,1:HDoP,2:speed error,3:position error,4:yaw error,5:pos drift,6:vert speed,7:horiz speed + + +0:FirstIMU,1:SecondIMU,2:ThirdIMU,3:FourthIMU,4:FifthIMU,5:SixthIMU +True + + +50 200 +% +percent + + +0.5 50.0 +m +meters + + +0:FirstIMU,1:SecondIMU,2:ThirdIMU,3:FourthIMU,4:FifthIMU,5:SixthIMU +True + + +0.05 1.0 +0.05 +rad +radians + + +100 1000 +25 + + +10 50 +5 +cs +centiseconds + + +0.00001 0.01 +Gauss/s +gauss per second + + +0.00001 0.01 +Gauss/s +gauss per second + + +-1 70 +1 +% +percent + + +0 0.2 +0.01 + + +0.1 10.0 +0.1 +m +meters + + +100 1000 +25 + + +0 127 +10 +ms +milliseconds +True + + +2.0 6.0 +0.5 +m/s +meters per second + + +0:FirstEKF,1:SecondEKF,2:ThirdEKF,3:FourthEKF,4:FifthEKF,5:SixthEKF +True + + +0:Correct when using Baro height,1:Correct when using range finder height,2:Apply corrections to local position +True + + +0 127 +1 +ms +milliseconds +True + + + +None +Navigation +Terrain + +True + + +0 500 +mGauss +milligauss + + +0.1 30.0 +Hz +hertz +False + + + + + +Disabled +Enabled + +True + + + +GPS 3D Vel and 2D Pos +GPS 2D vel and 2D pos +GPS 2D pos +No GPS + + + +0.05 5.0 +0.05 +m/s +meters per second + + +0.05 5.0 +0.05 +m/s +meters per second + + +100 1000 +25 + + +0.1 10.0 +0.1 +m +meters + + +100 1000 +25 + + +10 100 +5 +m +meters + + + +Use Baro +Use Range Finder +Use GPS +Use Range Beacon + +True + + +0.1 10.0 +0.1 +m +meters + + +100 1000 +25 + + +0 250 +10 +True +ms +milliseconds + + +0.01 0.5 +0.01 +Gauss +gauss + + + +When flying +When manoeuvring +Never +After first climb yaw reset +Always +Use external yaw sensor + +True + + +100 1000 +25 + + +0.5 5.0 +0.1 +m/s +meters per second + + +100 1000 +25 + + +0.1 10.0 +0.1 +m +meters + + +100 1000 +25 + + +1.0 4.0 +0.1 +rad/s +radians per second + + +0.05 1.0 +0.05 +rad/s +radians per second + + +100 1000 +25 + + +0 250 +10 +True +ms +milliseconds + + +0.0001 0.1 +0.0001 +rad/s +radians per second + + +0.01 1.0 +0.01 +m/s/s +meters per square second + + +0.00001 0.001 +rad/s/s +radians per square second + + +0.00001 0.005 +m/s/s/s +meters per cubic second + + +0.01 1.0 +0.1 +m/s/s +meters per square second + + +0.0 1.0 +0.1 + + +0:NSats,1:HDoP,2:speed error,3:position error,4:yaw error,5:pos drift,6:vert speed,7:horiz speed + + +0:FirstIMU,1:SecondIMU,2:ThirdIMU,3:FourthIMU,4:FifthIMU,5:SixthIMU +True + + +50 200 +% +percent + + +0.5 50.0 +m +meters + + +0:FirstIMU,1:SecondIMU,2:ThirdIMU,3:FourthIMU,4:FifthIMU,5:SixthIMU +True + + +0.05 1.0 +0.05 +rad +radians + + +100 1000 +25 + + +10 50 +5 +cs +centiseconds + + +0.00001 0.01 +Gauss/s +gauss per second + + +0.00001 0.01 +Gauss/s +gauss per second + + +-1 70 +1 +% +percent + + +0 0.2 +0.01 + + +0.1 10.0 +0.1 +m +meters + + +100 1000 +25 + + +0 250 +10 +True +ms +milliseconds + + +2.0 6.0 +0.5 +m/s +meters per second + + +0.5 2.5 +0.1 +m/s/s +meters per square second + + +0:FirstEKF,1:SecondEKF,2:ThirdEKF,3:FourthEKF,4:FifthEKF,5:SixthEKF +True + + +0:Correct when using Baro height,1:Correct when using range finder height,2:Apply corrections to local position +True + + +0.05 0.5 +0.05 +m/s +meters per second + + +0.5 5.0 +0.1 +m/s +meters per second + + +0.01 1.0 +0.1 +m/s +meters per second + + + +None +Navigation +Terrain + +True + + +0.1 30.0 +Hz +hertz +False + + +0 500 +mGauss +milligauss + + + + + +Disabled +Enabled + + + + +None +Altitude +Circle +Altitude and Circle +Polygon +Altitude and Polygon +Circle and Polygon +All + +0:Altitude,1:Circle,2:Polygon + + + +Report Only +RTL or Land +Always Land +SmartRTL or RTL or Land +Brake or Land + + + +m +meters +10 1000 +1 + + +m +meters +30 10000 + + +m +meters +1 10 + + +1 20 + + +m +meters +-100 100 +1 + + + + + +Disabled +Enabled + + + +0 255 + + +m +meters +1 1000 + + + +North-East-Down +Relative to lead vehicle heading + + + +-100 100 +m +meters +1 + + +-100 100 +m +meters +1 + + +-100 100 +m +meters +1 + + + +None +Face Lead Vehicle +Same as Lead vehicle +Direction of Flight + + + +0.01 1.00 +0.01 + + + +absolute + relative + + + + + +Pa +pascal +1 +True +True + + +degC +degrees Celsius +1 +True + + +m +meters +0.1 + + + +FirstBaro +2ndBaro +3rdBaro + + + + +Disabled +Bus0 +Bus1 + + + +1.0:Freshwater,1.024:Saltwater + + +Pa +pascal +1 +True +True + + +Pa +pascal +1 +True +True + + +% +percent +0 100 +1 + + +0:BMP085,1:BMP280,2:MS5611,3:MS5607,4:MS5637,5:FBM320,6:DPS280,7:LPS25H,8:Keller,9:MS5837,10:BMP388 + +BMP085 +BMP280 +MS5611 +MS5607 +MS5637 +FBM320 +DPS280 +LPS25H +Keller +MS5837 +BMP388 + + + + + + +None +AUTO +uBlox +MTK +MTK19 +NMEA +SiRF +HIL +SwiftNav +UAVCAN +SBF +GSOF +ERB +MAV +NOVA +HemisphereNMEA + +True + + + +None +AUTO +uBlox +MTK +MTK19 +NMEA +SiRF +HIL +SwiftNav +UAVCAN +SBF +GSOF +ERB +MAV +NOVA +HemisphereNMEA + +True + + + +Portable +Stationary +Pedestrian +Automotive +Sea +Airborne1G +Airborne2G +Airborne4G + + + + +Disabled +UseBest +Blend +UseSecond + + + + +Any +FloatRTK +IntegerRTK + +True + + + +Disabled +Enabled +NoChange + + + +-100 90 +deg +degrees + + + +send to first GPS +send to 2nd GPS +send to all + + + + +None (0x0000) +All (0xFFFF) +External only (0xFF00) + + + + +Ignore +Always log +Stop logging when disarmed (SBF only) +Only log every five samples (uBlox only) + +True + + + +Leave as currently configured +GPS-NoSBAS +GPS+SBAS +Galileo-NoSBAS +Galileo+SBAS +Beidou +GPS+IMES+QZSS+SBAS (Japan Only) +GLONASS +GLONASS+SBAS +GPS+GLONASS+SBAS + +0:GPS,1:SBAS,2:Galileo,3:Beidou,4:IMES,5:QZSS,6:GLOSNASS + + + +Do not save config +Save config +Save only when needed + + + + +Leave as currently configured +GPS-NoSBAS +GPS+SBAS +Galileo-NoSBAS +Galileo+SBAS +Beidou +GPS+IMES+QZSS+SBAS (Japan Only) +GLONASS +GLONASS+SBAS +GPS+GLONASS+SBAS + +0:GPS,1:SBAS,2:Galileo,3:Beidou,4:IMES,5:QZSS,6:GLOSNASS + + + +Disables automatic configuration +Enable automatic configuration + + + +ms +milliseconds + +10Hz +8Hz +5Hz + +50 200 + + +ms +milliseconds + +10Hz +8Hz +5Hz + +50 200 + + +m +meters +-10 10 + + +m +meters +-10 10 + + +m +meters +-10 10 + + +m +meters +-10 10 + + +m +meters +-10 10 + + +m +meters +-10 10 + + +ms +milliseconds +0 250 +True + + +ms +milliseconds +0 250 +True + + +0:Horiz Pos,1:Vert Pos,2:Speed + + +s +seconds +5.0 30.0 + + + + + +Disabled +Enabled + + + + +None +Servo +EPM + + + +1000 2000 +PWM +PWM in microseconds + + +1000 2000 +PWM +PWM in microseconds + + +1000 2000 +PWM +PWM in microseconds + + +0 255 +s +seconds + + +0 255 + + + + +rad/s +radians per second + + +rad/s +radians per second + + +rad/s +radians per second + + +rad/s +radians per second + + +rad/s +radians per second + + +rad/s +radians per second + + +rad/s +radians per second + + +rad/s +radians per second + + +rad/s +radians per second + + +0.8 1.2 + + +0.8 1.2 + + +0.8 1.2 + + +m/s/s +meters per square second +-3.5 3.5 + + +m/s/s +meters per square second +-3.5 3.5 + + +m/s/s +meters per square second +-3.5 3.5 + + +0.8 1.2 + + +0.8 1.2 + + +0.8 1.2 + + +m/s/s +meters per square second +-3.5 3.5 + + +m/s/s +meters per square second +-3.5 3.5 + + +m/s/s +meters per square second +-3.5 3.5 + + +0.8 1.2 + + +0.8 1.2 + + +0.8 1.2 + + +m/s/s +meters per square second +-3.5 3.5 + + +m/s/s +meters per square second +-3.5 3.5 + + +m/s/s +meters per square second +-3.5 3.5 + + +Hz +hertz +0 256 + + +Hz +hertz +0 256 + + + +Disabled +Enabled + + + + +Disabled +Enabled + + + + +Disabled +Enabled + + + +0.05 50 + + + +Never +Start-up only + + + + +Don't adjust the trims +Assume first orientation was level +Assume ACC_BODYFIX is perfectly aligned to the vehicle + + + + +IMU 1 +IMU 2 +IMU 3 + + + +m +meters +-10 10 + + +m +meters +-10 10 + + +m +meters +-10 10 + + +m +meters +-10 10 + + +m +meters +-10 10 + + +m +meters +-10 10 + + +m +meters +-10 10 + + +m +meters +-10 10 + + +m +meters +-10 10 + + +True + + +True + + +True + + +True + + +True + + +True + + + +FirstIMUOnly +FirstAndSecondIMU + +0:FirstIMU,1:SecondIMU,2:ThirdIMU + + + +FirstIMUOnly +FirstAndSecondIMU +FirstSecondAndThirdIMU +AllIMUs + +0:FirstIMU,1:SecondIMU,2:ThirdIMU + + + + + +Disabled +Enabled + + + +10 400 +Hz +hertz + + +5 100 +Hz +hertz + + +5 30 +dB +decibel + + +0:1st harmonic,1:2nd harmonic,2:3rd harmonic,3:4th hamronic,4:5th harmonic,5:6th harmonic,6:7th harmonic,7:8th harmonic +True + + +0.0 1.0 +True + + +0 3 + +Disabled +Throttle +RPM Sensor +ESC Telemetry + + + + + +32 +True + + + +None +First IMU +All + +0:IMU1,1:IMU2,2:IMU3 +True + + +0:Sensor-Rate Logging (sample at full sensor rate seen by AP), 1: Sample post-filtering + + +ms +milliseconds +10 + + +1 + + + + + +Disabled +Enabled + + + +5 30 +dB +decibel + + +10 400 +Hz +hertz + + +5 100 +Hz +hertz + + + + + +None +File +MAVLink +File and MAVLink +Block +Block and MAVLink + +0:File,1:MAVLink,2:Block + + + + + +Disabled +Enabled + + + + +Disabled +Enabled + + + + +Disabled +Enabled + + + +kB +kilobytes + + +s +seconds + + + + +0 32766 +1 +True + + + +Resume Mission +Restart Mission + + + +0:Clear Mission on reboot + + + + + +Retracted +Neutral +MavLink Targeting +RC Targeting +GPS Point + + + +deg +degrees +-180.00 179.99 +1 + + +deg +degrees +-180.00 179.99 +1 + + +deg +degrees +-180.00 179.99 +1 + + +deg +degrees +-180.00 179.99 +1 + + +deg +degrees +-180.00 179.99 +1 + + +deg +degrees +-180.00 179.99 +1 + + + +Disabled +Enabled + + + + +Disabled +Enabled + + + + +Disabled +Enabled + + + + +Disabled +RC5 +RC6 +RC7 +RC8 +RC9 +RC10 +RC11 +RC12 + + + +cdeg +centidegrees +-18000 17999 +1 + + +cdeg +centidegrees +-18000 17999 +1 + + + +Disabled +RC5 +RC6 +RC7 +RC8 +RC9 +RC10 +RC11 +RC12 + + + +cdeg +centidegrees +-18000 17999 +1 + + +cdeg +centidegrees +-18000 17999 +1 + + + +Disabled +RC5 +RC6 +RC7 +RC8 +RC9 +RC10 +RC11 +RC12 + + + +cdeg +centidegrees +-18000 17999 +1 + + +cdeg +centidegrees +-18000 17999 +1 + + +0 100 +1 + + +s +seconds +0.0 0.2 +.005 + + +s +seconds +0.0 0.2 +.005 + + + +None +Servo +3DR Solo +Alexmos Serial +SToRM32 MAVLink +SToRM32 Serial + +True + + + +Retracted +Neutral +MavLink Targeting +RC Targeting +GPS Point + + + +deg +degrees +-180.00 179.99 +1 + + +deg +degrees +-180.00 179.99 +1 + + +deg +degrees +-180.00 179.99 +1 + + +deg +degrees +-180.00 179.99 +1 + + +deg +degrees +-180.00 179.99 +1 + + +deg +degrees +-180.00 179.99 +1 + + + +Disabled +Enabled + + + + +Disabled +Enabled + + + + +Disabled +Enabled + + + + +Disabled +RC5 +RC6 +RC7 +RC8 +RC9 +RC10 +RC11 +RC12 + + + +cdeg +centidegrees +-18000 17999 +1 + + +cdeg +centidegrees +-18000 17999 +1 + + + +Disabled +RC5 +RC6 +RC7 +RC8 +RC9 +RC10 +RC11 +RC12 + + + +cdeg +centidegrees +-18000 17999 +1 + + +cdeg +centidegrees +-18000 17999 +1 + + + +Disabled +RC5 +RC6 +RC7 +RC8 +RC9 +RC10 +RC11 +RC12 + + + +cdeg +centidegrees +-18000 17999 +1 + + +cdeg +centidegrees +-18000 17999 +1 + + +s +seconds +0.0 0.2 +.005 + + +s +seconds +0.0 0.2 +.005 + + + +None +Servo +3DR Solo +Alexmos Serial +SToRM32 MAVLink +SToRM32 Serial + + + + + + +Normal +OneShot +OneShot125 +BrushedWithRelay +BrushedBiPolar +DShot150 +DShot300 +DShot600 +DShot1200 + +True + + +kHz +kilohertz +1 20 +1 +True + + + +PWM enabled while disarmed +PWM disabled while disarmed + + + +% +percent +0 20 +1 + + +% +percent +30 100 +1 + + +%/s +percent per second +0 1000 +1 + + +-1.0 1.0 + + +% +percent +0 100 + + +m/s +meters per second +0 10 + + + + +s +seconds +1 60 +1 + + +0.6 1.0 +0.05 + + +0 0.1 +0.01 + + +deg +degrees +0 89 + + + + + +Off +Low +Medium +High + + + + +Disable +Enable + + + + +Standard +MAVLink +OutbackChallenge +TrafficLight + + + + +Disable +ssd1306 +sh1106 +SITL + + + + +Disabled +Aircraft +Rover + + + + +Disabled + + + +0:Build in LED, 1:Internal ToshibaLED, 2:External ToshibaLED, 3:External PCA9685, 4:Oreo LED, 5:UAVCAN, 6:NCP5623 External, 7:NCP5623 Internal, 8:NeoPixel + + + +LowIsOn +HighIsOn + + + +0 100 +% +percent + + + + + +Disabled +BendyRuler +Dijkstra + + + +m +meters +1 100 +1 + + +m +meters +0.1 100 +1 + + + + +0 10000 +True + + +s +seconds +0 127 +1 + + +1 200 +True + + + +Disabled +Send only HIGH importance items +Send HIGH and NORMAL importance items +Send all items + + + + + + +None +MAX7456 + +True + + + +Disable +Chan5 +Chan6 +Chan7 +Chan8 +Chan9 +Chan10 +Chan11 +Chan12 +Chan13 +Chan14 +Chan15 +Chan16 + + + +0:UseDecimalPack, 1:InvertedWindPointer, 2:InvertedAHRoll + + +True + + +0 31 +True + + +0 63 +True + + +0 99 + + +1 30 + + +0 100 + + + +Metric +Imperial +SI +Aviation + + + +1 20 + + +0 4 + + +0 4 + + +0 4 + + + + + +Disabled +Enabled + + + +900 2100 + + +900 2100 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +900 2100 + + +900 2100 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +900 2100 + + +900 2100 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +Disabled +Enabled + + + +900 2100 + + +900 2100 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + +Disabled +Enabled + + + +0 29 + + +0 15 + + + + + +None +LightwareSF40c +LightWareSF40C-legacy +MAVLink +TeraRangerTower +RangeFinder +RPLidarA2 +TeraRangerTowerEvo +SITL +MorseSITL +AirSimSITL + +True + + + +Default +Upside Down + + + +deg +degrees +-180 180 + + +deg +degrees +0 360 + + +deg +degrees +0 45 + + +deg +degrees +0 360 + + +deg +degrees +0 45 + + +deg +degrees +0 360 + + +deg +degrees +0 45 + + +deg +degrees +0 360 + + +deg +degrees +0 45 + + +deg +degrees +0 360 + + +deg +degrees +0 45 + + +deg +degrees +0 360 + + +deg +degrees +0 45 + + + +None +LightwareSF40c +LightWareSF40C-legacy +MAVLink +TeraRangerTower +RangeFinder +RPLidarA2 +TeraRangerTowerEvo +SITL +MorseSITL +AirSimSITL + +True + + + +Default +Upside Down + + + +deg +degrees +-180 180 + + + + + + +km +kilometers +0.1 + + + +DoNotIncludeHome +IncludeHome + + + + + +0.0 120.0 +s +seconds + + +0:Ignore RC Receiver, 1:Ignore MAVLink Overrides, 2:Ignore Receiver Failsafe + + + + +PWM +PWM in microseconds +800 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + + +Normal +Reversed + + + +PWM +PWM in microseconds +0 200 + + + +Do Nothing +RTL +Save Trim +Save WP +Camera Trigger +Fence +Auto +Gripper +Auto Mission Reset +Relay On/Off +Lost Rover Sound +Motor Emergency Stop +Relay2 On/Off +Relay3 On/Off +Relay4 On/Off +Proximity Avoidance +ArmDisarm +SmartRTL +RC Override Enable +LearnCruise +Manual +Acro +Steering +Hold +Guided +Loiter +Follow +Clear Waypoints +Simple Mode +Compass Learn +Sailboat Tack +GPS Disable +Relay5 +Relay6 +Sailboat motoring 3pos +KillIMU1 +KillIMU2 +MainSail + + + + + +PWM +PWM in microseconds +800 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + + +Normal +Reversed + + + +PWM +PWM in microseconds +0 200 + + + +Do Nothing +RTL +Save Trim +Save WP +Camera Trigger +Fence +Auto +Gripper +Auto Mission Reset +Relay On/Off +Lost Rover Sound +Motor Emergency Stop +Relay2 On/Off +Relay3 On/Off +Relay4 On/Off +Proximity Avoidance +ArmDisarm +SmartRTL +RC Override Enable +LearnCruise +Manual +Acro +Steering +Hold +Guided +Loiter +Follow +Clear Waypoints +Simple Mode +Compass Learn +Sailboat Tack +GPS Disable +Relay5 +Relay6 +Sailboat motoring 3pos +KillIMU1 +KillIMU2 +MainSail + + + + + +PWM +PWM in microseconds +800 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + + +Normal +Reversed + + + +PWM +PWM in microseconds +0 200 + + + +Do Nothing +RTL +Save Trim +Save WP +Camera Trigger +Fence +Auto +Gripper +Auto Mission Reset +Relay On/Off +Lost Rover Sound +Motor Emergency Stop +Relay2 On/Off +Relay3 On/Off +Relay4 On/Off +Proximity Avoidance +ArmDisarm +SmartRTL +RC Override Enable +LearnCruise +Manual +Acro +Steering +Hold +Guided +Loiter +Follow +Clear Waypoints +Simple Mode +Compass Learn +Sailboat Tack +GPS Disable +Relay5 +Relay6 +Sailboat motoring 3pos +KillIMU1 +KillIMU2 +MainSail + + + + + +PWM +PWM in microseconds +800 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + + +Normal +Reversed + + + +PWM +PWM in microseconds +0 200 + + + +Do Nothing +RTL +Save Trim +Save WP +Camera Trigger +Fence +Auto +Gripper +Auto Mission Reset +Relay On/Off +Lost Rover Sound +Motor Emergency Stop +Relay2 On/Off +Relay3 On/Off +Relay4 On/Off +Proximity Avoidance +ArmDisarm +SmartRTL +RC Override Enable +LearnCruise +Manual +Acro +Steering +Hold +Guided +Loiter +Follow +Clear Waypoints +Simple Mode +Compass Learn +Sailboat Tack +GPS Disable +Relay5 +Relay6 +Sailboat motoring 3pos +KillIMU1 +KillIMU2 +MainSail + + + + + +PWM +PWM in microseconds +800 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + + +Normal +Reversed + + + +PWM +PWM in microseconds +0 200 + + + +Do Nothing +RTL +Save Trim +Save WP +Camera Trigger +Fence +Auto +Gripper +Auto Mission Reset +Relay On/Off +Lost Rover Sound +Motor Emergency Stop +Relay2 On/Off +Relay3 On/Off +Relay4 On/Off +Proximity Avoidance +ArmDisarm +SmartRTL +RC Override Enable +LearnCruise +Manual +Acro +Steering +Hold +Guided +Loiter +Follow +Clear Waypoints +Simple Mode +Compass Learn +Sailboat Tack +GPS Disable +Relay5 +Relay6 +Sailboat motoring 3pos +KillIMU1 +KillIMU2 +MainSail + + + + + +PWM +PWM in microseconds +800 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + + +Normal +Reversed + + + +PWM +PWM in microseconds +0 200 + + + +Do Nothing +RTL +Save Trim +Save WP +Camera Trigger +Fence +Auto +Gripper +Auto Mission Reset +Relay On/Off +Lost Rover Sound +Motor Emergency Stop +Relay2 On/Off +Relay3 On/Off +Relay4 On/Off +Proximity Avoidance +ArmDisarm +SmartRTL +RC Override Enable +LearnCruise +Manual +Acro +Steering +Hold +Guided +Loiter +Follow +Clear Waypoints +Simple Mode +Compass Learn +Sailboat Tack +GPS Disable +Relay5 +Relay6 +Sailboat motoring 3pos +KillIMU1 +KillIMU2 +MainSail + + + + + +PWM +PWM in microseconds +800 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + + +Normal +Reversed + + + +PWM +PWM in microseconds +0 200 + + + +Do Nothing +RTL +Save Trim +Save WP +Camera Trigger +Fence +Auto +Gripper +Auto Mission Reset +Relay On/Off +Lost Rover Sound +Motor Emergency Stop +Relay2 On/Off +Relay3 On/Off +Relay4 On/Off +Proximity Avoidance +ArmDisarm +SmartRTL +RC Override Enable +LearnCruise +Manual +Acro +Steering +Hold +Guided +Loiter +Follow +Clear Waypoints +Simple Mode +Compass Learn +Sailboat Tack +GPS Disable +Relay5 +Relay6 +Sailboat motoring 3pos +KillIMU1 +KillIMU2 +MainSail + + + + + +PWM +PWM in microseconds +800 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + + +Normal +Reversed + + + +PWM +PWM in microseconds +0 200 + + + +Do Nothing +RTL +Save Trim +Save WP +Camera Trigger +Fence +Auto +Gripper +Auto Mission Reset +Relay On/Off +Lost Rover Sound +Motor Emergency Stop +Relay2 On/Off +Relay3 On/Off +Relay4 On/Off +Proximity Avoidance +ArmDisarm +SmartRTL +RC Override Enable +LearnCruise +Manual +Acro +Steering +Hold +Guided +Loiter +Follow +Clear Waypoints +Simple Mode +Compass Learn +Sailboat Tack +GPS Disable +Relay5 +Relay6 +Sailboat motoring 3pos +KillIMU1 +KillIMU2 +MainSail + + + + + +PWM +PWM in microseconds +800 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + + +Normal +Reversed + + + +PWM +PWM in microseconds +0 200 + + + +Do Nothing +RTL +Save Trim +Save WP +Camera Trigger +Fence +Auto +Gripper +Auto Mission Reset +Relay On/Off +Lost Rover Sound +Motor Emergency Stop +Relay2 On/Off +Relay3 On/Off +Relay4 On/Off +Proximity Avoidance +ArmDisarm +SmartRTL +RC Override Enable +LearnCruise +Manual +Acro +Steering +Hold +Guided +Loiter +Follow +Clear Waypoints +Simple Mode +Compass Learn +Sailboat Tack +GPS Disable +Relay5 +Relay6 +Sailboat motoring 3pos +KillIMU1 +KillIMU2 +MainSail + + + + + +PWM +PWM in microseconds +800 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + + +Normal +Reversed + + + +PWM +PWM in microseconds +0 200 + + + +Do Nothing +RTL +Save Trim +Save WP +Camera Trigger +Fence +Auto +Gripper +Auto Mission Reset +Relay On/Off +Lost Rover Sound +Motor Emergency Stop +Relay2 On/Off +Relay3 On/Off +Relay4 On/Off +Proximity Avoidance +ArmDisarm +SmartRTL +RC Override Enable +LearnCruise +Manual +Acro +Steering +Hold +Guided +Loiter +Follow +Clear Waypoints +Simple Mode +Compass Learn +Sailboat Tack +GPS Disable +Relay5 +Relay6 +Sailboat motoring 3pos +KillIMU1 +KillIMU2 +MainSail + + + + + +PWM +PWM in microseconds +800 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + + +Normal +Reversed + + + +PWM +PWM in microseconds +0 200 + + + +Do Nothing +RTL +Save Trim +Save WP +Camera Trigger +Fence +Auto +Gripper +Auto Mission Reset +Relay On/Off +Lost Rover Sound +Motor Emergency Stop +Relay2 On/Off +Relay3 On/Off +Relay4 On/Off +Proximity Avoidance +ArmDisarm +SmartRTL +RC Override Enable +LearnCruise +Manual +Acro +Steering +Hold +Guided +Loiter +Follow +Clear Waypoints +Simple Mode +Compass Learn +Sailboat Tack +GPS Disable +Relay5 +Relay6 +Sailboat motoring 3pos +KillIMU1 +KillIMU2 +MainSail + + + + + +PWM +PWM in microseconds +800 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + + +Normal +Reversed + + + +PWM +PWM in microseconds +0 200 + + + +Do Nothing +RTL +Save Trim +Save WP +Camera Trigger +Fence +Auto +Gripper +Auto Mission Reset +Relay On/Off +Lost Rover Sound +Motor Emergency Stop +Relay2 On/Off +Relay3 On/Off +Relay4 On/Off +Proximity Avoidance +ArmDisarm +SmartRTL +RC Override Enable +LearnCruise +Manual +Acro +Steering +Hold +Guided +Loiter +Follow +Clear Waypoints +Simple Mode +Compass Learn +Sailboat Tack +GPS Disable +Relay5 +Relay6 +Sailboat motoring 3pos +KillIMU1 +KillIMU2 +MainSail + + + + + +PWM +PWM in microseconds +800 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + + +Normal +Reversed + + + +PWM +PWM in microseconds +0 200 + + + +Do Nothing +RTL +Save Trim +Save WP +Camera Trigger +Fence +Auto +Gripper +Auto Mission Reset +Relay On/Off +Lost Rover Sound +Motor Emergency Stop +Relay2 On/Off +Relay3 On/Off +Relay4 On/Off +Proximity Avoidance +ArmDisarm +SmartRTL +RC Override Enable +LearnCruise +Manual +Acro +Steering +Hold +Guided +Loiter +Follow +Clear Waypoints +Simple Mode +Compass Learn +Sailboat Tack +GPS Disable +Relay5 +Relay6 +Sailboat motoring 3pos +KillIMU1 +KillIMU2 +MainSail + + + + + +PWM +PWM in microseconds +800 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + + +Normal +Reversed + + + +PWM +PWM in microseconds +0 200 + + + +Do Nothing +RTL +Save Trim +Save WP +Camera Trigger +Fence +Auto +Gripper +Auto Mission Reset +Relay On/Off +Lost Rover Sound +Motor Emergency Stop +Relay2 On/Off +Relay3 On/Off +Relay4 On/Off +Proximity Avoidance +ArmDisarm +SmartRTL +RC Override Enable +LearnCruise +Manual +Acro +Steering +Hold +Guided +Loiter +Follow +Clear Waypoints +Simple Mode +Compass Learn +Sailboat Tack +GPS Disable +Relay5 +Relay6 +Sailboat motoring 3pos +KillIMU1 +KillIMU2 +MainSail + + + + + +PWM +PWM in microseconds +800 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + + +Normal +Reversed + + + +PWM +PWM in microseconds +0 200 + + + +Do Nothing +RTL +Save Trim +Save WP +Camera Trigger +Fence +Auto +Gripper +Auto Mission Reset +Relay On/Off +Lost Rover Sound +Motor Emergency Stop +Relay2 On/Off +Relay3 On/Off +Relay4 On/Off +Proximity Avoidance +ArmDisarm +SmartRTL +RC Override Enable +LearnCruise +Manual +Acro +Steering +Hold +Guided +Loiter +Follow +Clear Waypoints +Simple Mode +Compass Learn +Sailboat Tack +GPS Disable +Relay5 +Relay6 +Sailboat motoring 3pos +KillIMU1 +KillIMU2 +MainSail + + + + + +PWM +PWM in microseconds +800 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + + +Normal +Reversed + + + +PWM +PWM in microseconds +0 200 + + + +Do Nothing +RTL +Save Trim +Save WP +Camera Trigger +Fence +Auto +Gripper +Auto Mission Reset +Relay On/Off +Lost Rover Sound +Motor Emergency Stop +Relay2 On/Off +Relay3 On/Off +Relay4 On/Off +Proximity Avoidance +ArmDisarm +SmartRTL +RC Override Enable +LearnCruise +Manual +Acro +Steering +Hold +Guided +Loiter +Follow +Clear Waypoints +Simple Mode +Compass Learn +Sailboat Tack +GPS Disable +Relay5 +Relay6 +Sailboat motoring 3pos +KillIMU1 +KillIMU2 +MainSail + + + + + +1 8 +1 +True + + +1 8 +1 +True + + +1 8 +1 +True + + +1 8 +1 +True + + +1 8 +1 +True +1: 1, 2: 2, 3: 3, 4: 4, 5: 5, 6: 6, 7: 7, 8: 8 + + +1 8 +1 +True +1: 1, 2: 2, 3: 3, 4: 4, 5: 5, 6: 6, 7: 7, 8: 8 + + + + + +Disabled +BB Blue GP0 pin 4 +AUXOUT1 +AUXOUT2 +AUXOUT3 +AUXOUT4 +AUXOUT5 +AUXOUT6 +BB Blue GP0 pin 3 +BB Blue GP0 pin 6 +BB Blue GP0 pin 5 + + + + +Disabled +BB Blue GP0 pin 4 +AUXOUT1 +AUXOUT2 +AUXOUT3 +AUXOUT4 +AUXOUT5 +AUXOUT6 +BB Blue GP0 pin 3 +BB Blue GP0 pin 6 +BB Blue GP0 pin 5 + + + + +Disabled +BB Blue GP0 pin 4 +AUXOUT1 +AUXOUT2 +AUXOUT3 +AUXOUT4 +AUXOUT5 +AUXOUT6 +BB Blue GP0 pin 3 +BB Blue GP0 pin 6 +BB Blue GP0 pin 5 + + + + +Disabled +BB Blue GP0 pin 4 +AUXOUT1 +AUXOUT2 +AUXOUT3 +AUXOUT4 +AUXOUT5 +AUXOUT6 +BB Blue GP0 pin 3 +BB Blue GP0 pin 6 +BB Blue GP0 pin 5 + + + + +Off +On +NoChange + + + + +Disabled +BB Blue GP0 pin 4 +AUXOUT1 +AUXOUT2 +AUXOUT3 +AUXOUT4 +AUXOUT5 +AUXOUT6 +BB Blue GP0 pin 3 +BB Blue GP0 pin 6 +BB Blue GP0 pin 5 + + + + +Disabled +BB Blue GP0 pin 4 +AUXOUT1 +AUXOUT2 +AUXOUT3 +AUXOUT4 +AUXOUT5 +AUXOUT6 +BB Blue GP0 pin 3 +BB Blue GP0 pin 6 +BB Blue GP0 pin 5 + + + + + + +None +Analog +MaxbotixI2C +LidarLite-I2C +PWM +BBB-PRU +LightWareI2C +LightWareSerial +Bebop +MAVLink +uLanding +LeddarOne +MaxbotixSerial +TeraRangerI2C +LidarLiteV3-I2C +VL53L0X +NMEA +WASP-LRF +BenewakeTF02 +BenewakeTFmini/Plus-Serial +LidarLightV3HP +PWM +BlueRoboticsPing +UAVCAN +BenewakeTFmini/Plus-I2C +BenewakeTF03 + + + + +Not Used +PX4-airspeed port +Pixhawk-airspeed port +Pixhawk AUXOUT1 +Pixhawk AUXOUT2 +Pixhawk AUXOUT3 +Pixhawk AUXOUT4 +Pixhawk AUXOUT5 +Pixhawk AUXOUT6 + + + +m/V +meters per volt +0.001 + + +V +volt +0.001 + + + +Linear +Inverted +Hyperbolic + + + +cm +centimeters +1 + + +cm +centimeters +1 + + + +Not Used +Pixhawk AUXOUT1 +Pixhawk AUXOUT2 +Pixhawk AUXOUT3 +Pixhawk AUXOUT4 +Pixhawk AUXOUT5 +Pixhawk AUXOUT6 +PX4 FMU Relay1 +PX4 FMU Relay2 +PX4IO Relay1 +PX4IO Relay2 +PX4IO ACC1 +PX4IO ACC2 + + + + +No +Yes + + + +m +meters +0 32767 + + +cm +centimeters +5 127 +1 + + +0 127 +1 + + +m +meters + + +m +meters + + +m +meters + + + +Forward +Forward-Right +Right +Back-Right +Back +Back-Left +Left +Forward-Left +Up +Down + + + + + +0 255 + + +0 255 + + +0 10000 + + +0 255 + + +-1 255 + + + +Low Speed +High Speed + + + + + + +None +Analog +MaxbotixI2C +LidarLite-I2C +PWM +BBB-PRU +LightWareI2C +LightWareSerial +Bebop +MAVLink +uLanding +LeddarOne +MaxbotixSerial +TeraRangerI2C +LidarLiteV3-I2C +VL53L0X +NMEA +WASP-LRF +BenewakeTF02 +BenewakeTFmini/Plus-Serial +LidarLightV3HP +PWM +BlueRoboticsPing +UAVCAN +BenewakeTFmini/Plus-I2C +BenewakeTF03 + + + + +Not Used +PX4-airspeed port +Pixhawk-airspeed port +Pixhawk AUXOUT1 +Pixhawk AUXOUT2 +Pixhawk AUXOUT3 +Pixhawk AUXOUT4 +Pixhawk AUXOUT5 +Pixhawk AUXOUT6 + + + +m/V +meters per volt +0.001 + + +V +volt +0.001 + + + +Linear +Inverted +Hyperbolic + + + +cm +centimeters +1 + + +cm +centimeters +1 + + + +Not Used +Pixhawk AUXOUT1 +Pixhawk AUXOUT2 +Pixhawk AUXOUT3 +Pixhawk AUXOUT4 +Pixhawk AUXOUT5 +Pixhawk AUXOUT6 +PX4 FMU Relay1 +PX4 FMU Relay2 +PX4IO Relay1 +PX4IO Relay2 +PX4IO ACC1 +PX4IO ACC2 + + + + +No +Yes + + + +m +meters +0 32767 + + +cm +centimeters +5 127 +1 + + +0 127 +1 + + +m +meters + + +m +meters + + +m +meters + + + +Forward +Forward-Right +Right +Back-Right +Back +Back-Left +Left +Forward-Left +Up +Down + + + + + +0 255 + + +0 255 + + +0 10000 + + +0 255 + + +-1 255 + + + +Low Speed +High Speed + + + + + + +None +Analog +MaxbotixI2C +LidarLite-I2C +PWM +BBB-PRU +LightWareI2C +LightWareSerial +Bebop +MAVLink +uLanding +LeddarOne +MaxbotixSerial +TeraRangerI2C +LidarLiteV3-I2C +VL53L0X +NMEA +WASP-LRF +BenewakeTF02 +BenewakeTFmini/Plus-Serial +LidarLightV3HP +PWM +BlueRoboticsPing +UAVCAN +BenewakeTFmini/Plus-I2C +BenewakeTF03 + + + + +Not Used +PX4-airspeed port +Pixhawk-airspeed port +Pixhawk AUXOUT1 +Pixhawk AUXOUT2 +Pixhawk AUXOUT3 +Pixhawk AUXOUT4 +Pixhawk AUXOUT5 +Pixhawk AUXOUT6 + + + +m/V +meters per volt +0.001 + + +V +volt +0.001 + + + +Linear +Inverted +Hyperbolic + + + +cm +centimeters +1 + + +cm +centimeters +1 + + + +Not Used +Pixhawk AUXOUT1 +Pixhawk AUXOUT2 +Pixhawk AUXOUT3 +Pixhawk AUXOUT4 +Pixhawk AUXOUT5 +Pixhawk AUXOUT6 +PX4 FMU Relay1 +PX4 FMU Relay2 +PX4IO Relay1 +PX4IO Relay2 +PX4IO ACC1 +PX4IO ACC2 + + + + +No +Yes + + + +m +meters +0 32767 + + +cm +centimeters +5 127 +1 + + +0 127 +1 + + +m +meters + + +m +meters + + +m +meters + + + +Forward +Forward-Right +Right +Back-Right +Back +Back-Left +Left +Forward-Left +Up +Down + + + + + +0 255 + + +0 255 + + +0 10000 + + +0 255 + + +-1 255 + + + +Low Speed +High Speed + + + + + + +None +Analog +MaxbotixI2C +LidarLite-I2C +PWM +BBB-PRU +LightWareI2C +LightWareSerial +Bebop +MAVLink +uLanding +LeddarOne +MaxbotixSerial +TeraRangerI2C +LidarLiteV3-I2C +VL53L0X +NMEA +WASP-LRF +BenewakeTF02 +BenewakeTFmini/Plus-Serial +LidarLightV3HP +PWM +BlueRoboticsPing +UAVCAN +BenewakeTFmini/Plus-I2C +BenewakeTF03 + + + + +Not Used +PX4-airspeed port +Pixhawk-airspeed port +Pixhawk AUXOUT1 +Pixhawk AUXOUT2 +Pixhawk AUXOUT3 +Pixhawk AUXOUT4 +Pixhawk AUXOUT5 +Pixhawk AUXOUT6 + + + +m/V +meters per volt +0.001 + + +V +volt +0.001 + + + +Linear +Inverted +Hyperbolic + + + +cm +centimeters +1 + + +cm +centimeters +1 + + + +Not Used +Pixhawk AUXOUT1 +Pixhawk AUXOUT2 +Pixhawk AUXOUT3 +Pixhawk AUXOUT4 +Pixhawk AUXOUT5 +Pixhawk AUXOUT6 +PX4 FMU Relay1 +PX4 FMU Relay2 +PX4IO Relay1 +PX4IO Relay2 +PX4IO ACC1 +PX4IO ACC2 + + + + +No +Yes + + + +m +meters +0 32767 + + +cm +centimeters +5 127 +1 + + +0 127 +1 + + +m +meters + + +m +meters + + +m +meters + + + +Forward +Forward-Right +Right +Back-Right +Back +Back-Left +Left +Forward-Left +Up +Down + + + + + +0 255 + + +0 255 + + +0 10000 + + +0 255 + + +-1 255 + + + +Low Speed +High Speed + + + + + + +None +Analog +MaxbotixI2C +LidarLite-I2C +PWM +BBB-PRU +LightWareI2C +LightWareSerial +Bebop +MAVLink +uLanding +LeddarOne +MaxbotixSerial +TeraRangerI2C +LidarLiteV3-I2C +VL53L0X +NMEA +WASP-LRF +BenewakeTF02 +BenewakeTFmini/Plus-Serial +LidarLightV3HP +PWM +BlueRoboticsPing +UAVCAN +BenewakeTFmini/Plus-I2C +BenewakeTF03 + + + + +Not Used +PX4-airspeed port +Pixhawk-airspeed port +Pixhawk AUXOUT1 +Pixhawk AUXOUT2 +Pixhawk AUXOUT3 +Pixhawk AUXOUT4 +Pixhawk AUXOUT5 +Pixhawk AUXOUT6 + + + +m/V +meters per volt +0.001 + + +V +volt +0.001 + + + +Linear +Inverted +Hyperbolic + + + +cm +centimeters +1 + + +cm +centimeters +1 + + + +Not Used +Pixhawk AUXOUT1 +Pixhawk AUXOUT2 +Pixhawk AUXOUT3 +Pixhawk AUXOUT4 +Pixhawk AUXOUT5 +Pixhawk AUXOUT6 +PX4 FMU Relay1 +PX4 FMU Relay2 +PX4IO Relay1 +PX4IO Relay2 +PX4IO ACC1 +PX4IO ACC2 + + + + +No +Yes + + + +m +meters +0 32767 + + +cm +centimeters +5 127 +1 + + +0 127 +1 + + +m +meters + + +m +meters + + +m +meters + + + +Forward +Forward-Right +Right +Back-Right +Back +Back-Left +Left +Forward-Left +Up +Down + + + + + +0 255 + + +0 255 + + +0 10000 + + +0 255 + + +-1 255 + + + +Low Speed +High Speed + + + + + + +None +Analog +MaxbotixI2C +LidarLite-I2C +PWM +BBB-PRU +LightWareI2C +LightWareSerial +Bebop +MAVLink +uLanding +LeddarOne +MaxbotixSerial +TeraRangerI2C +LidarLiteV3-I2C +VL53L0X +NMEA +WASP-LRF +BenewakeTF02 +BenewakeTFmini/Plus-Serial +LidarLightV3HP +PWM +BlueRoboticsPing +UAVCAN +BenewakeTFmini/Plus-I2C +BenewakeTF03 + + + + +Not Used +PX4-airspeed port +Pixhawk-airspeed port +Pixhawk AUXOUT1 +Pixhawk AUXOUT2 +Pixhawk AUXOUT3 +Pixhawk AUXOUT4 +Pixhawk AUXOUT5 +Pixhawk AUXOUT6 + + + +m/V +meters per volt +0.001 + + +V +volt +0.001 + + + +Linear +Inverted +Hyperbolic + + + +cm +centimeters +1 + + +cm +centimeters +1 + + + +Not Used +Pixhawk AUXOUT1 +Pixhawk AUXOUT2 +Pixhawk AUXOUT3 +Pixhawk AUXOUT4 +Pixhawk AUXOUT5 +Pixhawk AUXOUT6 +PX4 FMU Relay1 +PX4 FMU Relay2 +PX4IO Relay1 +PX4IO Relay2 +PX4IO ACC1 +PX4IO ACC2 + + + + +No +Yes + + + +m +meters +0 32767 + + +cm +centimeters +5 127 +1 + + +0 127 +1 + + +m +meters + + +m +meters + + +m +meters + + + +Forward +Forward-Right +Right +Back-Right +Back +Back-Left +Left +Forward-Left +Up +Down + + + + + +0 255 + + +0 255 + + +0 10000 + + +0 255 + + +-1 255 + + + +Low Speed +High Speed + + + + + + +None +Analog +MaxbotixI2C +LidarLite-I2C +PWM +BBB-PRU +LightWareI2C +LightWareSerial +Bebop +MAVLink +uLanding +LeddarOne +MaxbotixSerial +TeraRangerI2C +LidarLiteV3-I2C +VL53L0X +NMEA +WASP-LRF +BenewakeTF02 +BenewakeTFmini/Plus-Serial +LidarLightV3HP +PWM +BlueRoboticsPing +UAVCAN +BenewakeTFmini/Plus-I2C +BenewakeTF03 + + + + +Not Used +PX4-airspeed port +Pixhawk-airspeed port +Pixhawk AUXOUT1 +Pixhawk AUXOUT2 +Pixhawk AUXOUT3 +Pixhawk AUXOUT4 +Pixhawk AUXOUT5 +Pixhawk AUXOUT6 + + + +m/V +meters per volt +0.001 + + +V +volt +0.001 + + + +Linear +Inverted +Hyperbolic + + + +cm +centimeters +1 + + +cm +centimeters +1 + + + +Not Used +Pixhawk AUXOUT1 +Pixhawk AUXOUT2 +Pixhawk AUXOUT3 +Pixhawk AUXOUT4 +Pixhawk AUXOUT5 +Pixhawk AUXOUT6 +PX4 FMU Relay1 +PX4 FMU Relay2 +PX4IO Relay1 +PX4IO Relay2 +PX4IO ACC1 +PX4IO ACC2 + + + + +No +Yes + + + +m +meters +0 32767 + + +cm +centimeters +5 127 +1 + + +0 127 +1 + + +m +meters + + +m +meters + + +m +meters + + + +Forward +Forward-Right +Right +Back-Right +Back +Back-Left +Left +Forward-Left +Up +Down + + + + + +0 255 + + +0 255 + + +0 10000 + + +0 255 + + +-1 255 + + + +Low Speed +High Speed + + + + + + +None +Analog +MaxbotixI2C +LidarLite-I2C +PWM +BBB-PRU +LightWareI2C +LightWareSerial +Bebop +MAVLink +uLanding +LeddarOne +MaxbotixSerial +TeraRangerI2C +LidarLiteV3-I2C +VL53L0X +NMEA +WASP-LRF +BenewakeTF02 +BenewakeTFmini/Plus-Serial +LidarLightV3HP +PWM +BlueRoboticsPing +UAVCAN +BenewakeTFmini/Plus-I2C +BenewakeTF03 + + + + +Not Used +PX4-airspeed port +Pixhawk-airspeed port +Pixhawk AUXOUT1 +Pixhawk AUXOUT2 +Pixhawk AUXOUT3 +Pixhawk AUXOUT4 +Pixhawk AUXOUT5 +Pixhawk AUXOUT6 + + + +m/V +meters per volt +0.001 + + +V +volt +0.001 + + + +Linear +Inverted +Hyperbolic + + + +cm +centimeters +1 + + +cm +centimeters +1 + + + +Not Used +Pixhawk AUXOUT1 +Pixhawk AUXOUT2 +Pixhawk AUXOUT3 +Pixhawk AUXOUT4 +Pixhawk AUXOUT5 +Pixhawk AUXOUT6 +PX4 FMU Relay1 +PX4 FMU Relay2 +PX4IO Relay1 +PX4IO Relay2 +PX4IO ACC1 +PX4IO ACC2 + + + + +No +Yes + + + +m +meters +0 32767 + + +cm +centimeters +5 127 +1 + + +0 127 +1 + + +m +meters + + +m +meters + + +m +meters + + + +Forward +Forward-Right +Right +Back-Right +Back +Back-Left +Left +Forward-Left +Up +Down + + + + + +0 255 + + +0 255 + + +0 10000 + + +0 255 + + +-1 255 + + + +Low Speed +High Speed + + + + + + +None +Analog +MaxbotixI2C +LidarLite-I2C +PWM +BBB-PRU +LightWareI2C +LightWareSerial +Bebop +MAVLink +uLanding +LeddarOne +MaxbotixSerial +TeraRangerI2C +LidarLiteV3-I2C +VL53L0X +NMEA +WASP-LRF +BenewakeTF02 +BenewakeTFmini/Plus-Serial +LidarLightV3HP +PWM +BlueRoboticsPing +UAVCAN +BenewakeTFmini/Plus-I2C +BenewakeTF03 + + + + +Not Used +PX4-airspeed port +Pixhawk-airspeed port +Pixhawk AUXOUT1 +Pixhawk AUXOUT2 +Pixhawk AUXOUT3 +Pixhawk AUXOUT4 +Pixhawk AUXOUT5 +Pixhawk AUXOUT6 + + + +m/V +meters per volt +0.001 + + +V +volt +0.001 + + + +Linear +Inverted +Hyperbolic + + + +cm +centimeters +1 + + +cm +centimeters +1 + + + +Not Used +Pixhawk AUXOUT1 +Pixhawk AUXOUT2 +Pixhawk AUXOUT3 +Pixhawk AUXOUT4 +Pixhawk AUXOUT5 +Pixhawk AUXOUT6 +PX4 FMU Relay1 +PX4 FMU Relay2 +PX4IO Relay1 +PX4IO Relay2 +PX4IO ACC1 +PX4IO ACC2 + + + + +No +Yes + + + +m +meters +0 32767 + + +cm +centimeters +5 127 +1 + + +0 127 +1 + + +m +meters + + +m +meters + + +m +meters + + + +Forward +Forward-Right +Right +Back-Right +Back +Back-Left +Left +Forward-Left +Up +Down + + + + + +0 255 + + +0 255 + + +0 10000 + + +0 255 + + +-1 255 + + + +Low Speed +High Speed + + + + + + +None +Analog +MaxbotixI2C +LidarLite-I2C +PWM +BBB-PRU +LightWareI2C +LightWareSerial +Bebop +MAVLink +uLanding +LeddarOne +MaxbotixSerial +TeraRangerI2C +LidarLiteV3-I2C +VL53L0X +NMEA +WASP-LRF +BenewakeTF02 +BenewakeTFmini/Plus-Serial +LidarLightV3HP +PWM +BlueRoboticsPing +UAVCAN +BenewakeTFmini/Plus-I2C +BenewakeTF03 + + + + +Not Used +PX4-airspeed port +Pixhawk-airspeed port +Pixhawk AUXOUT1 +Pixhawk AUXOUT2 +Pixhawk AUXOUT3 +Pixhawk AUXOUT4 +Pixhawk AUXOUT5 +Pixhawk AUXOUT6 + + + +m/V +meters per volt +0.001 + + +V +volt +0.001 + + + +Linear +Inverted +Hyperbolic + + + +cm +centimeters +1 + + +cm +centimeters +1 + + + +Not Used +Pixhawk AUXOUT1 +Pixhawk AUXOUT2 +Pixhawk AUXOUT3 +Pixhawk AUXOUT4 +Pixhawk AUXOUT5 +Pixhawk AUXOUT6 +PX4 FMU Relay1 +PX4 FMU Relay2 +PX4IO Relay1 +PX4IO Relay2 +PX4IO ACC1 +PX4IO ACC2 + + + + +No +Yes + + + +m +meters +0 32767 + + +cm +centimeters +5 127 +1 + + +0 127 +1 + + +m +meters + + +m +meters + + +m +meters + + + +Forward +Forward-Right +Right +Back-Right +Back +Back-Left +Left +Forward-Left +Up +Down + + + + + +0 255 + + +0 255 + + +0 10000 + + +0 255 + + +-1 255 + + + +Low Speed +High Speed + + + + + + +None +PWM +AUXPIN + + + +0.001 + + +1 + + +1 + + +0.1 + + + +Disabled +PixhawkAUX1 +PixhawkAUX2 +PixhawkAUX3 +PixhawkAUX4 +PixhawkAUX5 +PixhawkAUX6 + + + + +None +PWM +AUXPIN + + + +0.001 + + + +Disabled +PixhawkAUX1 +PixhawkAUX2 +PixhawkAUX3 +PixhawkAUX4 +PixhawkAUX5 +PixhawkAUX6 + + + + + + +Disabled +AnalogPin +RCChannelPwmValue +ReceiverProtocol +PWMInputPin + + + + +V5 Nano +Pixracer +Pixhawk ADC4 +Pixhawk ADC3 +Pixhawk ADC6 +Pixhawk2 ADC +PixhawkAUX1 +PixhawkAUX2 +PixhawkAUX3 +PixhawkAUX4 +PixhawkAUX5 +PixhawkAUX6 +Pixhawk SBUS + + + +V +volt +0.01 +0 5.0 + + +V +volt +0.01 +0 5.0 + + +0 16 + + +PWM +PWM in microseconds +0 2000 + + +PWM +PWM in microseconds +0 2000 + + + + + +Disable +Enable + +True + + +deg +degrees +0 90 +1 + + +deg +degrees +0 90 +1 + + +deg +degrees +0 90 +1 + + +deg +degrees +0 90 +1 + + +deg +degrees +0 90 +1 + + +m/s +meters per second +0 5 +0.1 + + +m +meters +5 25 +1 + + +m +meters +0 20 +1 + + + + + +Disabled +ShowSlips +ShowOverruns + + + + +50Hz +100Hz +200Hz +250Hz +300Hz +400Hz + +True + + + + + +None +Lua Scripts + +True + + +1000 1000000 +10000 + + +1024 1048576 +1024 +True + + + + + +1200 +2400 +4800 +9600 +19200 +38400 +57600 +111100 +115200 +256000 +460800 +500000 +921600 +1500000 + + + + +MAVlink1 +MAVLink2 + +True + + + +None +MAVLink1 +MAVLink2 +Frsky D +Frsky SPort +GPS +Alexmos Gimbal Serial +SToRM32 Gimbal Serial +Rangefinder +FrSky SPort Passthrough (OpenTX) +Lidar360 +Beacon +Volz servo out +SBus servo out +ESC Telemetry +Devo Telemetry +OpticalFlow +RobotisServo +NMEA Output +WindVane +SLCAN +RCIN + +True + + + +1200 +2400 +4800 +9600 +19200 +38400 +57600 +111100 +115200 +256000 +500000 +921600 +1500000 + + + + +None +MAVLink1 +MAVLink2 +Frsky D +Frsky SPort +GPS +Alexmos Gimbal Serial +SToRM32 Gimbal Serial +Rangefinder +FrSky SPort Passthrough (OpenTX) +Lidar360 +Beacon +Volz servo out +SBus servo out +ESC Telemetry +Devo Telemetry +OpticalFlow +RobotisServo +NMEA Output +WindVane +SLCAN +RCIN + +True + + + +1200 +2400 +4800 +9600 +19200 +38400 +57600 +111100 +115200 +256000 +500000 +921600 +1500000 + + + + +None +MAVLink1 +MAVLink2 +Frsky D +Frsky SPort +GPS +Alexmos Gimbal Serial +SToRM32 Gimbal Serial +Rangefinder +FrSky SPort Passthrough (OpenTX) +Lidar360 +Beacon +Volz servo out +SBus servo out +ESC Telemetry +Devo Telemetry +OpticalFlow +RobotisServo +NMEA Output +WindVane +SLCAN +RCIN + +True + + + +1200 +2400 +4800 +9600 +19200 +38400 +57600 +111100 +115200 +256000 +500000 +921600 +1500000 + + + + +None +MAVLink1 +MAVLink2 +Frsky D +Frsky SPort +GPS +Alexmos Gimbal Serial +SToRM32 Gimbal Serial +Rangefinder +FrSky SPort Passthrough (OpenTX) +Lidar360 +Beacon +Volz servo out +SBus servo out +ESC Telemetry +Devo Telemetry +OpticalFlow +RobotisServo +NMEA Output +WindVane +SLCAN +RCIN + +True + + + +1200 +2400 +4800 +9600 +19200 +38400 +57600 +111100 +115200 +256000 +500000 +921600 +1500000 + + + + +None +MAVLink1 +MAVLink2 +Frsky D +Frsky SPort +GPS +Alexmos Gimbal Serial +SToRM32 Gimbal Serial +Rangefinder +FrSky SPort Passthrough (OpenTX) +Lidar360 +Beacon +Volz servo out +SBus servo out +ESC Telemetry +Devo Telemetry +OpticalFlow +RobotisServo +NMEA Output +WindVane +SLCAN +RCIN + +True + + + +1200 +2400 +4800 +9600 +19200 +38400 +57600 +111100 +115200 +256000 +500000 +921600 +1500000 + + + + +None +MAVLink1 +MAVLink2 +Frsky D +Frsky SPort +GPS +Alexmos Gimbal Serial +SToRM32 Gimbal Serial +Rangefinder +FrSky SPort Passthrough (OpenTX) +Lidar360 +Beacon +Volz servo out +SBus servo out +ESC Telemetry +Devo Telemetry +OpticalFlow +RobotisServo +NMEA Output +WindVane +SLCAN +RCIN + +True + + + +1200 +2400 +4800 +9600 +19200 +38400 +57600 +111100 +115200 +256000 +500000 +921600 +1500000 + + + +0:InvertRX, 1:InvertTX, 2:HalfDuplex, 4:Swap +True + + +0:InvertRX, 1:InvertTX, 2:HalfDuplex, 4:Swap +True + + +0:InvertRX, 1:InvertTX, 2:HalfDuplex, 4:Swap +True + + +0:InvertRX, 1:InvertTX, 2:HalfDuplex, 4:Swap +True + + +0:InvertRX, 1:InvertTX, 2:HalfDuplex, 4:Swap +True + + +0:InvertRX, 1:InvertTX, 2:HalfDuplex, 4:Swap +True + + + +Disabled +Serial0 +Serial1 +Serial2 +Serial3 +Serial4 +Serial5 +Serial6 + + + + +Disabled +Serial0 +Serial1 +Serial2 +Serial3 +Serial4 +Serial5 +Serial6 + + + +0 120 +s +seconds + + + +None +MAVLink1 +MAVLink2 +Frsky D +Frsky SPort +GPS +Alexmos Gimbal Serial +SToRM32 Gimbal Serial +Rangefinder +FrSky SPort Passthrough (OpenTX) +Lidar360 +Beacon +Volz servo out +SBus servo out +ESC Telemetry +Devo Telemetry +OpticalFlow +RobotisServo +NMEA Output +WindVane +SLCAN +RCIN + +True + + + +1200 +2400 +4800 +9600 +19200 +38400 +57600 +111100 +115200 +256000 +500000 +921600 +1500000 + + + +0:InvertRX, 1:InvertTX, 2:HalfDuplex, 4:Swap +True + + + + + +Disable +Enable + + + +25 400 +Hz +hertz + + + + +PWM +PWM in microseconds +500 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + + +Normal +Reversed + + + + +Disabled +RCPassThru +Flap +Flap_auto +Aileron +mount_pan +mount_tilt +mount_roll +mount_open +camera_trigger +release +mount2_pan +mount2_tilt +mount2_roll +mount2_open +DifferentialSpoilerLeft1 +DifferentialSpoilerRight1 +Elevator +Rudder +FlaperonLeft +FlaperonRight +GroundSteering +Parachute +Gripper +LandingGear +EngineRunEnable +HeliRSC +HeliTailRSC +Motor1 +Motor2 +Motor3 +Motor4 +Motor5 +Motor6 +Motor7 +Motor8 +MotorTilt +RCIN1 +RCIN2 +RCIN3 +RCIN4 +RCIN5 +RCIN6 +RCIN7 +RCIN8 +RCIN9 +RCIN10 +RCIN11 +RCIN12 +RCIN13 +RCIN14 +RCIN15 +RCIN16 +Ignition +Choke +Starter +Throttle +TrackerYaw +TrackerPitch +ThrottleLeft +ThrottleRight +tiltMotorLeft +tiltMotorRight +ElevonLeft +ElevonRight +VTailLeft +VTailRight +BoostThrottle +Motor9 +Motor10 +Motor11 +Motor12 +DifferentialSpoilerLeft2 +DifferentialSpoilerRight2 +Main Sail +Camera ISO +Camera Focus +Camera Shutter Speed +Script 1 +Script 2 +Script 3 +Script 4 +Script 5 +Script 6 +Script 7 +Script 8 +Script 9 +Script 10 +Script 11 +Script 12 +Script 13 +Script 14 +Script 15 +Script 16 +RateRoll +RatePitch +RateThrust +RateYaw + + + + + +PWM +PWM in microseconds +500 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + + +Normal +Reversed + + + + +Disabled +RCPassThru +Flap +Flap_auto +Aileron +mount_pan +mount_tilt +mount_roll +mount_open +camera_trigger +release +mount2_pan +mount2_tilt +mount2_roll +mount2_open +DifferentialSpoilerLeft1 +DifferentialSpoilerRight1 +Elevator +Rudder +FlaperonLeft +FlaperonRight +GroundSteering +Parachute +Gripper +LandingGear +EngineRunEnable +HeliRSC +HeliTailRSC +Motor1 +Motor2 +Motor3 +Motor4 +Motor5 +Motor6 +Motor7 +Motor8 +MotorTilt +RCIN1 +RCIN2 +RCIN3 +RCIN4 +RCIN5 +RCIN6 +RCIN7 +RCIN8 +RCIN9 +RCIN10 +RCIN11 +RCIN12 +RCIN13 +RCIN14 +RCIN15 +RCIN16 +Ignition +Choke +Starter +Throttle +TrackerYaw +TrackerPitch +ThrottleLeft +ThrottleRight +tiltMotorLeft +tiltMotorRight +ElevonLeft +ElevonRight +VTailLeft +VTailRight +BoostThrottle +Motor9 +Motor10 +Motor11 +Motor12 +DifferentialSpoilerLeft2 +DifferentialSpoilerRight2 +Main Sail +Camera ISO +Camera Focus +Camera Shutter Speed +Script 1 +Script 2 +Script 3 +Script 4 +Script 5 +Script 6 +Script 7 +Script 8 +Script 9 +Script 10 +Script 11 +Script 12 +Script 13 +Script 14 +Script 15 +Script 16 +RateRoll +RatePitch +RateThrust +RateYaw + + + + + +PWM +PWM in microseconds +500 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + + +Normal +Reversed + + + + +Disabled +RCPassThru +Flap +Flap_auto +Aileron +mount_pan +mount_tilt +mount_roll +mount_open +camera_trigger +release +mount2_pan +mount2_tilt +mount2_roll +mount2_open +DifferentialSpoilerLeft1 +DifferentialSpoilerRight1 +Elevator +Rudder +FlaperonLeft +FlaperonRight +GroundSteering +Parachute +Gripper +LandingGear +EngineRunEnable +HeliRSC +HeliTailRSC +Motor1 +Motor2 +Motor3 +Motor4 +Motor5 +Motor6 +Motor7 +Motor8 +MotorTilt +RCIN1 +RCIN2 +RCIN3 +RCIN4 +RCIN5 +RCIN6 +RCIN7 +RCIN8 +RCIN9 +RCIN10 +RCIN11 +RCIN12 +RCIN13 +RCIN14 +RCIN15 +RCIN16 +Ignition +Choke +Starter +Throttle +TrackerYaw +TrackerPitch +ThrottleLeft +ThrottleRight +tiltMotorLeft +tiltMotorRight +ElevonLeft +ElevonRight +VTailLeft +VTailRight +BoostThrottle +Motor9 +Motor10 +Motor11 +Motor12 +DifferentialSpoilerLeft2 +DifferentialSpoilerRight2 +Main Sail +Camera ISO +Camera Focus +Camera Shutter Speed +Script 1 +Script 2 +Script 3 +Script 4 +Script 5 +Script 6 +Script 7 +Script 8 +Script 9 +Script 10 +Script 11 +Script 12 +Script 13 +Script 14 +Script 15 +Script 16 +RateRoll +RatePitch +RateThrust +RateYaw + + + + + +PWM +PWM in microseconds +500 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + + +Normal +Reversed + + + + +Disabled +RCPassThru +Flap +Flap_auto +Aileron +mount_pan +mount_tilt +mount_roll +mount_open +camera_trigger +release +mount2_pan +mount2_tilt +mount2_roll +mount2_open +DifferentialSpoilerLeft1 +DifferentialSpoilerRight1 +Elevator +Rudder +FlaperonLeft +FlaperonRight +GroundSteering +Parachute +Gripper +LandingGear +EngineRunEnable +HeliRSC +HeliTailRSC +Motor1 +Motor2 +Motor3 +Motor4 +Motor5 +Motor6 +Motor7 +Motor8 +MotorTilt +RCIN1 +RCIN2 +RCIN3 +RCIN4 +RCIN5 +RCIN6 +RCIN7 +RCIN8 +RCIN9 +RCIN10 +RCIN11 +RCIN12 +RCIN13 +RCIN14 +RCIN15 +RCIN16 +Ignition +Choke +Starter +Throttle +TrackerYaw +TrackerPitch +ThrottleLeft +ThrottleRight +tiltMotorLeft +tiltMotorRight +ElevonLeft +ElevonRight +VTailLeft +VTailRight +BoostThrottle +Motor9 +Motor10 +Motor11 +Motor12 +DifferentialSpoilerLeft2 +DifferentialSpoilerRight2 +Main Sail +Camera ISO +Camera Focus +Camera Shutter Speed +Script 1 +Script 2 +Script 3 +Script 4 +Script 5 +Script 6 +Script 7 +Script 8 +Script 9 +Script 10 +Script 11 +Script 12 +Script 13 +Script 14 +Script 15 +Script 16 +RateRoll +RatePitch +RateThrust +RateYaw + + + + + +PWM +PWM in microseconds +500 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + + +Normal +Reversed + + + + +Disabled +RCPassThru +Flap +Flap_auto +Aileron +mount_pan +mount_tilt +mount_roll +mount_open +camera_trigger +release +mount2_pan +mount2_tilt +mount2_roll +mount2_open +DifferentialSpoilerLeft1 +DifferentialSpoilerRight1 +Elevator +Rudder +FlaperonLeft +FlaperonRight +GroundSteering +Parachute +Gripper +LandingGear +EngineRunEnable +HeliRSC +HeliTailRSC +Motor1 +Motor2 +Motor3 +Motor4 +Motor5 +Motor6 +Motor7 +Motor8 +MotorTilt +RCIN1 +RCIN2 +RCIN3 +RCIN4 +RCIN5 +RCIN6 +RCIN7 +RCIN8 +RCIN9 +RCIN10 +RCIN11 +RCIN12 +RCIN13 +RCIN14 +RCIN15 +RCIN16 +Ignition +Choke +Starter +Throttle +TrackerYaw +TrackerPitch +ThrottleLeft +ThrottleRight +tiltMotorLeft +tiltMotorRight +ElevonLeft +ElevonRight +VTailLeft +VTailRight +BoostThrottle +Motor9 +Motor10 +Motor11 +Motor12 +DifferentialSpoilerLeft2 +DifferentialSpoilerRight2 +Main Sail +Camera ISO +Camera Focus +Camera Shutter Speed +Script 1 +Script 2 +Script 3 +Script 4 +Script 5 +Script 6 +Script 7 +Script 8 +Script 9 +Script 10 +Script 11 +Script 12 +Script 13 +Script 14 +Script 15 +Script 16 +RateRoll +RatePitch +RateThrust +RateYaw + + + + + +PWM +PWM in microseconds +500 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + + +Normal +Reversed + + + + +Disabled +RCPassThru +Flap +Flap_auto +Aileron +mount_pan +mount_tilt +mount_roll +mount_open +camera_trigger +release +mount2_pan +mount2_tilt +mount2_roll +mount2_open +DifferentialSpoilerLeft1 +DifferentialSpoilerRight1 +Elevator +Rudder +FlaperonLeft +FlaperonRight +GroundSteering +Parachute +Gripper +LandingGear +EngineRunEnable +HeliRSC +HeliTailRSC +Motor1 +Motor2 +Motor3 +Motor4 +Motor5 +Motor6 +Motor7 +Motor8 +MotorTilt +RCIN1 +RCIN2 +RCIN3 +RCIN4 +RCIN5 +RCIN6 +RCIN7 +RCIN8 +RCIN9 +RCIN10 +RCIN11 +RCIN12 +RCIN13 +RCIN14 +RCIN15 +RCIN16 +Ignition +Choke +Starter +Throttle +TrackerYaw +TrackerPitch +ThrottleLeft +ThrottleRight +tiltMotorLeft +tiltMotorRight +ElevonLeft +ElevonRight +VTailLeft +VTailRight +BoostThrottle +Motor9 +Motor10 +Motor11 +Motor12 +DifferentialSpoilerLeft2 +DifferentialSpoilerRight2 +Main Sail +Camera ISO +Camera Focus +Camera Shutter Speed +Script 1 +Script 2 +Script 3 +Script 4 +Script 5 +Script 6 +Script 7 +Script 8 +Script 9 +Script 10 +Script 11 +Script 12 +Script 13 +Script 14 +Script 15 +Script 16 +RateRoll +RatePitch +RateThrust +RateYaw + + + + + +PWM +PWM in microseconds +500 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + + +Normal +Reversed + + + + +Disabled +RCPassThru +Flap +Flap_auto +Aileron +mount_pan +mount_tilt +mount_roll +mount_open +camera_trigger +release +mount2_pan +mount2_tilt +mount2_roll +mount2_open +DifferentialSpoilerLeft1 +DifferentialSpoilerRight1 +Elevator +Rudder +FlaperonLeft +FlaperonRight +GroundSteering +Parachute +Gripper +LandingGear +EngineRunEnable +HeliRSC +HeliTailRSC +Motor1 +Motor2 +Motor3 +Motor4 +Motor5 +Motor6 +Motor7 +Motor8 +MotorTilt +RCIN1 +RCIN2 +RCIN3 +RCIN4 +RCIN5 +RCIN6 +RCIN7 +RCIN8 +RCIN9 +RCIN10 +RCIN11 +RCIN12 +RCIN13 +RCIN14 +RCIN15 +RCIN16 +Ignition +Choke +Starter +Throttle +TrackerYaw +TrackerPitch +ThrottleLeft +ThrottleRight +tiltMotorLeft +tiltMotorRight +ElevonLeft +ElevonRight +VTailLeft +VTailRight +BoostThrottle +Motor9 +Motor10 +Motor11 +Motor12 +DifferentialSpoilerLeft2 +DifferentialSpoilerRight2 +Main Sail +Camera ISO +Camera Focus +Camera Shutter Speed +Script 1 +Script 2 +Script 3 +Script 4 +Script 5 +Script 6 +Script 7 +Script 8 +Script 9 +Script 10 +Script 11 +Script 12 +Script 13 +Script 14 +Script 15 +Script 16 +RateRoll +RatePitch +RateThrust +RateYaw + + + + + +PWM +PWM in microseconds +500 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + + +Normal +Reversed + + + + +Disabled +RCPassThru +Flap +Flap_auto +Aileron +mount_pan +mount_tilt +mount_roll +mount_open +camera_trigger +release +mount2_pan +mount2_tilt +mount2_roll +mount2_open +DifferentialSpoilerLeft1 +DifferentialSpoilerRight1 +Elevator +Rudder +FlaperonLeft +FlaperonRight +GroundSteering +Parachute +Gripper +LandingGear +EngineRunEnable +HeliRSC +HeliTailRSC +Motor1 +Motor2 +Motor3 +Motor4 +Motor5 +Motor6 +Motor7 +Motor8 +MotorTilt +RCIN1 +RCIN2 +RCIN3 +RCIN4 +RCIN5 +RCIN6 +RCIN7 +RCIN8 +RCIN9 +RCIN10 +RCIN11 +RCIN12 +RCIN13 +RCIN14 +RCIN15 +RCIN16 +Ignition +Choke +Starter +Throttle +TrackerYaw +TrackerPitch +ThrottleLeft +ThrottleRight +tiltMotorLeft +tiltMotorRight +ElevonLeft +ElevonRight +VTailLeft +VTailRight +BoostThrottle +Motor9 +Motor10 +Motor11 +Motor12 +DifferentialSpoilerLeft2 +DifferentialSpoilerRight2 +Main Sail +Camera ISO +Camera Focus +Camera Shutter Speed +Script 1 +Script 2 +Script 3 +Script 4 +Script 5 +Script 6 +Script 7 +Script 8 +Script 9 +Script 10 +Script 11 +Script 12 +Script 13 +Script 14 +Script 15 +Script 16 +RateRoll +RatePitch +RateThrust +RateYaw + + + + + +PWM +PWM in microseconds +500 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + + +Normal +Reversed + + + + +Disabled +RCPassThru +Flap +Flap_auto +Aileron +mount_pan +mount_tilt +mount_roll +mount_open +camera_trigger +release +mount2_pan +mount2_tilt +mount2_roll +mount2_open +DifferentialSpoilerLeft1 +DifferentialSpoilerRight1 +Elevator +Rudder +FlaperonLeft +FlaperonRight +GroundSteering +Parachute +Gripper +LandingGear +EngineRunEnable +HeliRSC +HeliTailRSC +Motor1 +Motor2 +Motor3 +Motor4 +Motor5 +Motor6 +Motor7 +Motor8 +MotorTilt +RCIN1 +RCIN2 +RCIN3 +RCIN4 +RCIN5 +RCIN6 +RCIN7 +RCIN8 +RCIN9 +RCIN10 +RCIN11 +RCIN12 +RCIN13 +RCIN14 +RCIN15 +RCIN16 +Ignition +Choke +Starter +Throttle +TrackerYaw +TrackerPitch +ThrottleLeft +ThrottleRight +tiltMotorLeft +tiltMotorRight +ElevonLeft +ElevonRight +VTailLeft +VTailRight +BoostThrottle +Motor9 +Motor10 +Motor11 +Motor12 +DifferentialSpoilerLeft2 +DifferentialSpoilerRight2 +Main Sail +Camera ISO +Camera Focus +Camera Shutter Speed +Script 1 +Script 2 +Script 3 +Script 4 +Script 5 +Script 6 +Script 7 +Script 8 +Script 9 +Script 10 +Script 11 +Script 12 +Script 13 +Script 14 +Script 15 +Script 16 +RateRoll +RatePitch +RateThrust +RateYaw + + + + + +PWM +PWM in microseconds +500 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + + +Normal +Reversed + + + + +Disabled +RCPassThru +Flap +Flap_auto +Aileron +mount_pan +mount_tilt +mount_roll +mount_open +camera_trigger +release +mount2_pan +mount2_tilt +mount2_roll +mount2_open +DifferentialSpoilerLeft1 +DifferentialSpoilerRight1 +Elevator +Rudder +FlaperonLeft +FlaperonRight +GroundSteering +Parachute +Gripper +LandingGear +EngineRunEnable +HeliRSC +HeliTailRSC +Motor1 +Motor2 +Motor3 +Motor4 +Motor5 +Motor6 +Motor7 +Motor8 +MotorTilt +RCIN1 +RCIN2 +RCIN3 +RCIN4 +RCIN5 +RCIN6 +RCIN7 +RCIN8 +RCIN9 +RCIN10 +RCIN11 +RCIN12 +RCIN13 +RCIN14 +RCIN15 +RCIN16 +Ignition +Choke +Starter +Throttle +TrackerYaw +TrackerPitch +ThrottleLeft +ThrottleRight +tiltMotorLeft +tiltMotorRight +ElevonLeft +ElevonRight +VTailLeft +VTailRight +BoostThrottle +Motor9 +Motor10 +Motor11 +Motor12 +DifferentialSpoilerLeft2 +DifferentialSpoilerRight2 +Main Sail +Camera ISO +Camera Focus +Camera Shutter Speed +Script 1 +Script 2 +Script 3 +Script 4 +Script 5 +Script 6 +Script 7 +Script 8 +Script 9 +Script 10 +Script 11 +Script 12 +Script 13 +Script 14 +Script 15 +Script 16 +RateRoll +RatePitch +RateThrust +RateYaw + + + + + +PWM +PWM in microseconds +500 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + + +Normal +Reversed + + + + +Disabled +RCPassThru +Flap +Flap_auto +Aileron +mount_pan +mount_tilt +mount_roll +mount_open +camera_trigger +release +mount2_pan +mount2_tilt +mount2_roll +mount2_open +DifferentialSpoilerLeft1 +DifferentialSpoilerRight1 +Elevator +Rudder +FlaperonLeft +FlaperonRight +GroundSteering +Parachute +Gripper +LandingGear +EngineRunEnable +HeliRSC +HeliTailRSC +Motor1 +Motor2 +Motor3 +Motor4 +Motor5 +Motor6 +Motor7 +Motor8 +MotorTilt +RCIN1 +RCIN2 +RCIN3 +RCIN4 +RCIN5 +RCIN6 +RCIN7 +RCIN8 +RCIN9 +RCIN10 +RCIN11 +RCIN12 +RCIN13 +RCIN14 +RCIN15 +RCIN16 +Ignition +Choke +Starter +Throttle +TrackerYaw +TrackerPitch +ThrottleLeft +ThrottleRight +tiltMotorLeft +tiltMotorRight +ElevonLeft +ElevonRight +VTailLeft +VTailRight +BoostThrottle +Motor9 +Motor10 +Motor11 +Motor12 +DifferentialSpoilerLeft2 +DifferentialSpoilerRight2 +Main Sail +Camera ISO +Camera Focus +Camera Shutter Speed +Script 1 +Script 2 +Script 3 +Script 4 +Script 5 +Script 6 +Script 7 +Script 8 +Script 9 +Script 10 +Script 11 +Script 12 +Script 13 +Script 14 +Script 15 +Script 16 +RateRoll +RatePitch +RateThrust +RateYaw + + + + + +PWM +PWM in microseconds +500 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + + +Normal +Reversed + + + + +Disabled +RCPassThru +Flap +Flap_auto +Aileron +mount_pan +mount_tilt +mount_roll +mount_open +camera_trigger +release +mount2_pan +mount2_tilt +mount2_roll +mount2_open +DifferentialSpoilerLeft1 +DifferentialSpoilerRight1 +Elevator +Rudder +FlaperonLeft +FlaperonRight +GroundSteering +Parachute +Gripper +LandingGear +EngineRunEnable +HeliRSC +HeliTailRSC +Motor1 +Motor2 +Motor3 +Motor4 +Motor5 +Motor6 +Motor7 +Motor8 +MotorTilt +RCIN1 +RCIN2 +RCIN3 +RCIN4 +RCIN5 +RCIN6 +RCIN7 +RCIN8 +RCIN9 +RCIN10 +RCIN11 +RCIN12 +RCIN13 +RCIN14 +RCIN15 +RCIN16 +Ignition +Choke +Starter +Throttle +TrackerYaw +TrackerPitch +ThrottleLeft +ThrottleRight +tiltMotorLeft +tiltMotorRight +ElevonLeft +ElevonRight +VTailLeft +VTailRight +BoostThrottle +Motor9 +Motor10 +Motor11 +Motor12 +DifferentialSpoilerLeft2 +DifferentialSpoilerRight2 +Main Sail +Camera ISO +Camera Focus +Camera Shutter Speed +Script 1 +Script 2 +Script 3 +Script 4 +Script 5 +Script 6 +Script 7 +Script 8 +Script 9 +Script 10 +Script 11 +Script 12 +Script 13 +Script 14 +Script 15 +Script 16 +RateRoll +RatePitch +RateThrust +RateYaw + + + + + +PWM +PWM in microseconds +500 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + + +Normal +Reversed + + + + +Disabled +RCPassThru +Flap +Flap_auto +Aileron +mount_pan +mount_tilt +mount_roll +mount_open +camera_trigger +release +mount2_pan +mount2_tilt +mount2_roll +mount2_open +DifferentialSpoilerLeft1 +DifferentialSpoilerRight1 +Elevator +Rudder +FlaperonLeft +FlaperonRight +GroundSteering +Parachute +Gripper +LandingGear +EngineRunEnable +HeliRSC +HeliTailRSC +Motor1 +Motor2 +Motor3 +Motor4 +Motor5 +Motor6 +Motor7 +Motor8 +MotorTilt +RCIN1 +RCIN2 +RCIN3 +RCIN4 +RCIN5 +RCIN6 +RCIN7 +RCIN8 +RCIN9 +RCIN10 +RCIN11 +RCIN12 +RCIN13 +RCIN14 +RCIN15 +RCIN16 +Ignition +Choke +Starter +Throttle +TrackerYaw +TrackerPitch +ThrottleLeft +ThrottleRight +tiltMotorLeft +tiltMotorRight +ElevonLeft +ElevonRight +VTailLeft +VTailRight +BoostThrottle +Motor9 +Motor10 +Motor11 +Motor12 +DifferentialSpoilerLeft2 +DifferentialSpoilerRight2 +Main Sail +Camera ISO +Camera Focus +Camera Shutter Speed +Script 1 +Script 2 +Script 3 +Script 4 +Script 5 +Script 6 +Script 7 +Script 8 +Script 9 +Script 10 +Script 11 +Script 12 +Script 13 +Script 14 +Script 15 +Script 16 +RateRoll +RatePitch +RateThrust +RateYaw + + + + + +PWM +PWM in microseconds +500 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + + +Normal +Reversed + + + + +Disabled +RCPassThru +Flap +Flap_auto +Aileron +mount_pan +mount_tilt +mount_roll +mount_open +camera_trigger +release +mount2_pan +mount2_tilt +mount2_roll +mount2_open +DifferentialSpoilerLeft1 +DifferentialSpoilerRight1 +Elevator +Rudder +FlaperonLeft +FlaperonRight +GroundSteering +Parachute +Gripper +LandingGear +EngineRunEnable +HeliRSC +HeliTailRSC +Motor1 +Motor2 +Motor3 +Motor4 +Motor5 +Motor6 +Motor7 +Motor8 +MotorTilt +RCIN1 +RCIN2 +RCIN3 +RCIN4 +RCIN5 +RCIN6 +RCIN7 +RCIN8 +RCIN9 +RCIN10 +RCIN11 +RCIN12 +RCIN13 +RCIN14 +RCIN15 +RCIN16 +Ignition +Choke +Starter +Throttle +TrackerYaw +TrackerPitch +ThrottleLeft +ThrottleRight +tiltMotorLeft +tiltMotorRight +ElevonLeft +ElevonRight +VTailLeft +VTailRight +BoostThrottle +Motor9 +Motor10 +Motor11 +Motor12 +DifferentialSpoilerLeft2 +DifferentialSpoilerRight2 +Main Sail +Camera ISO +Camera Focus +Camera Shutter Speed +Script 1 +Script 2 +Script 3 +Script 4 +Script 5 +Script 6 +Script 7 +Script 8 +Script 9 +Script 10 +Script 11 +Script 12 +Script 13 +Script 14 +Script 15 +Script 16 +RateRoll +RatePitch +RateThrust +RateYaw + + + + + +PWM +PWM in microseconds +500 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + + +Normal +Reversed + + + + +Disabled +RCPassThru +Flap +Flap_auto +Aileron +mount_pan +mount_tilt +mount_roll +mount_open +camera_trigger +release +mount2_pan +mount2_tilt +mount2_roll +mount2_open +DifferentialSpoilerLeft1 +DifferentialSpoilerRight1 +Elevator +Rudder +FlaperonLeft +FlaperonRight +GroundSteering +Parachute +Gripper +LandingGear +EngineRunEnable +HeliRSC +HeliTailRSC +Motor1 +Motor2 +Motor3 +Motor4 +Motor5 +Motor6 +Motor7 +Motor8 +MotorTilt +RCIN1 +RCIN2 +RCIN3 +RCIN4 +RCIN5 +RCIN6 +RCIN7 +RCIN8 +RCIN9 +RCIN10 +RCIN11 +RCIN12 +RCIN13 +RCIN14 +RCIN15 +RCIN16 +Ignition +Choke +Starter +Throttle +TrackerYaw +TrackerPitch +ThrottleLeft +ThrottleRight +tiltMotorLeft +tiltMotorRight +ElevonLeft +ElevonRight +VTailLeft +VTailRight +BoostThrottle +Motor9 +Motor10 +Motor11 +Motor12 +DifferentialSpoilerLeft2 +DifferentialSpoilerRight2 +Main Sail +Camera ISO +Camera Focus +Camera Shutter Speed +Script 1 +Script 2 +Script 3 +Script 4 +Script 5 +Script 6 +Script 7 +Script 8 +Script 9 +Script 10 +Script 11 +Script 12 +Script 13 +Script 14 +Script 15 +Script 16 +RateRoll +RatePitch +RateThrust +RateYaw + + + + + +PWM +PWM in microseconds +500 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + + +Normal +Reversed + + + + +Disabled +RCPassThru +Flap +Flap_auto +Aileron +mount_pan +mount_tilt +mount_roll +mount_open +camera_trigger +release +mount2_pan +mount2_tilt +mount2_roll +mount2_open +DifferentialSpoilerLeft1 +DifferentialSpoilerRight1 +Elevator +Rudder +FlaperonLeft +FlaperonRight +GroundSteering +Parachute +Gripper +LandingGear +EngineRunEnable +HeliRSC +HeliTailRSC +Motor1 +Motor2 +Motor3 +Motor4 +Motor5 +Motor6 +Motor7 +Motor8 +MotorTilt +RCIN1 +RCIN2 +RCIN3 +RCIN4 +RCIN5 +RCIN6 +RCIN7 +RCIN8 +RCIN9 +RCIN10 +RCIN11 +RCIN12 +RCIN13 +RCIN14 +RCIN15 +RCIN16 +Ignition +Choke +Starter +Throttle +TrackerYaw +TrackerPitch +ThrottleLeft +ThrottleRight +tiltMotorLeft +tiltMotorRight +ElevonLeft +ElevonRight +VTailLeft +VTailRight +BoostThrottle +Motor9 +Motor10 +Motor11 +Motor12 +DifferentialSpoilerLeft2 +DifferentialSpoilerRight2 +Main Sail +Camera ISO +Camera Focus +Camera Shutter Speed +Script 1 +Script 2 +Script 3 +Script 4 +Script 5 +Script 6 +Script 7 +Script 8 +Script 9 +Script 10 +Script 11 +Script 12 +Script 13 +Script 14 +Script 15 +Script 16 +RateRoll +RatePitch +RateThrust +RateYaw + + + + + +0:Channel1,1:Channel2,2:Channel3,3:Channel4,4:Channel5,5:Channel6,6:Channel7,7:Channel8,8:Channel9,9:Channel10,10:Channel11,11:Channel12,12:Channel13,13:Channel14,14:Channel15,15:Channel16 + + + +Disabled +Enabled + + + + +Disabled +TestMotor1 +TestMotor2 +TestMotor3 +TestMotor4 +TestMotor5 +TestMotor6 +TestMotor7 +TestMotor8 + + + +s +seconds +0 300 + + +Hz +hertz +0 500 + + + +Disabled +Enabled + + + + +None +OneShot +OneShot125 +Brushed +DShot150 +DShot300 +DShot600 +DShot1200 + + + + +Console +Serial1 +Serial2 +Serial3 +Serial4 +Serial5 + + + +1 127 + + +0:Channel1,1:Channel2,2:Channel3,3:Channel4,4:Channel5,5:Channel6,6:Channel7,7:Channel8,8:Channel9,9:Channel10,10:Channel11,11:Channel12,12:Channel13,13:Channel14,14:Channel15,15:Channel16 + + + + +0 4095 + + +0 4095 + + + + +25 250 +Hz +hertz + + + + +0:Channel1,1:Channel2,2:Channel3,3:Channel4,4:Channel5,5:Channel6,6:Channel7,7:Channel8,8:Channel9,9:Channel10,10:Channel11,11:Channel12,12:Channel13,13:Channel14,14:Channel15,15:Channel16 + + + + + +Disabled +Enabled + + + +0 15 + + + + + +Disabled +Enabled + + + +0 15 + + +1000 2000 +PWM +PWM in microseconds + + +1000 2000 +PWM +PWM in microseconds + + + +Normal +Reverse + + + + + + +Disabled +Enabled + + + +deg +degrees +0.000001 +-90 90 + + +deg +degrees +0.000001 +-180 180 + + +cm +centimeters +1 +0 10000 + + +deg +degrees +1 +-180 +180 + + +Hz +hertz +0 200 + + + +cylinder +cone +sphere + + + +m +meters +0 100 + + +m +meters +5 100 + + + + + +Disabled +Enabled + + + +0 15 + + +0 15 + + + + + +Disabled +Enabled + + + +% +percent +0 100 + + +ms +milliseconds +1000 2000 + + +cm/s +centimeters per second +0 1000 + + +% +percent +0 100 + + + + +Hz +hertz +0 10 +1 + + +Hz +hertz +0 10 +1 + + +Hz +hertz +0 10 +1 + + +Hz +hertz +0 10 +1 + + +Hz +hertz +0 10 +1 + + +Hz +hertz +0 10 +1 + + +Hz +hertz +0 10 +1 + + +Hz +hertz +0 10 +1 + + +Hz +hertz +0 10 +1 + + +Hz +hertz +0 50 +1 + + + + +Hz +hertz +0 10 +1 + + +Hz +hertz +0 10 +1 + + +Hz +hertz +0 10 +1 + + +Hz +hertz +0 10 +1 + + +Hz +hertz +0 10 +1 + + +Hz +hertz +0 10 +1 + + +Hz +hertz +0 10 +1 + + +Hz +hertz +0 10 +1 + + +Hz +hertz +0 10 +1 + + +Hz +hertz +0 50 +1 + + + + +Hz +hertz +0 10 +1 + + +Hz +hertz +0 10 +1 + + +Hz +hertz +0 10 +1 + + +Hz +hertz +0 10 +1 + + +Hz +hertz +0 10 +1 + + +Hz +hertz +0 10 +1 + + +Hz +hertz +0 10 +1 + + +Hz +hertz +0 10 +1 + + +Hz +hertz +0 10 +1 + + +Hz +hertz +0 50 +1 + + + + +Hz +hertz +0 10 +1 + + +Hz +hertz +0 10 +1 + + +Hz +hertz +0 10 +1 + + +Hz +hertz +0 10 +1 + + +Hz +hertz +0 10 +1 + + +Hz +hertz +0 10 +1 + + +Hz +hertz +0 10 +1 + + +Hz +hertz +0 10 +1 + + +Hz +hertz +0 10 +1 + + +Hz +hertz +0 50 +1 + + + + +m +meters +0 10 + + +0 500 +True + + + + +True + + +s +seconds +True + + +s +seconds +True + + +s +seconds +True + + + + + +None +MAV + + + +m +meters + + +m +meters + + +m +meters + + + +Forward +Right +Back +Left +Up +Down + + + + + + +None +Quadrature +SITL Quadrature + + + +1 + + +m +meters +0.001 + + +m +meters +0.01 + + +m +meters +0.01 + + +m +meters +0.01 + + + +Disabled +PixhawkAUX1 +PixhawkAUX2 +PixhawkAUX3 +PixhawkAUX4 +PixhawkAUX5 +PixhawkAUX6 + + + + +Disabled +PixhawkAUX1 +PixhawkAUX2 +PixhawkAUX3 +PixhawkAUX4 +PixhawkAUX5 +PixhawkAUX6 + + + + +None +Quadrature +SITL Quadrature + + + +1 + + +m +meters +0.001 + + +m +meters +0.01 + + +m +meters +0.01 + + +m +meters +0.01 + + + +Disabled +PixhawkAUX1 +PixhawkAUX2 +PixhawkAUX3 +PixhawkAUX4 +PixhawkAUX5 +PixhawkAUX6 + + + + +Disabled +PixhawkAUX1 +PixhawkAUX2 +PixhawkAUX3 +PixhawkAUX4 +PixhawkAUX5 +PixhawkAUX6 + + + + + + +None +Heading when armed +RC input offset heading when armed +Analog +NMEA +SITL + +True + + +0 16 +1 + + + +Pixracer +Pixhawk ADC4 +Pixhawk ADC3 +Pixhawk ADC6 +Pixhawk2 ADC +PixhawkAUX1 +PixhawkAUX2 +PixhawkAUX3 +PixhawkAUX4 +PixhawkAUX5 +PixhawkAUX6 +Pixhawk SBUS + + + +V +volt +0.01 +0 5.0 + + +V +volt +0.01 +0 5.0 + + +deg +degrees +1 +0 360 + + +Hz +hertz + + + +None +Calibrate direction +Calibrate speed + + + +deg +degrees +1 +0 360 + + +m/s +meters per second +0.1 +0 5 + + + +None +Airspeed library +Modern Devices Wind Sensor +RPM library +NMEA +SITL + +True + + + +Pixracer +Pixhawk ADC4 +Pixhawk ADC3 +Pixhawk ADC6 +Pixhawk2 ADC +PixhawkAUX1 +PixhawkAUX2 +PixhawkAUX3 +PixhawkAUX4 +PixhawkAUX5 +PixhawkAUX6 +Pixhawk SBUS + + + + +Pixracer +Pixhawk ADC4 +Pixhawk ADC3 +Pixhawk ADC6 +Pixhawk2 ADC +PixhawkAUX1 +PixhawkAUX2 +PixhawkAUX3 +PixhawkAUX4 +PixhawkAUX5 +PixhawkAUX6 +Pixhawk SBUS + + + +V +volt +0.01 +0 3.3 + + +Hz +hertz + + + + +m/s +meters per second +0 100 +0.1 + + +m +meters +0 100 +0.1 + + +m +meters +0 10 +0.1 + + +deg +degrees +0 360 +1 + + +deg/s +degrees per second +0 360 +1 + + +m/s +meters per second +0 100 +0.1 + + + + + +Disabled +Enabled + + + +rad/s +radians per second +0 200 + + +0.100 2.000 + + +0.100 2.000 + + +0.000 2.000 + + +0.000 1.000 + + +0.000 0.400 + + +1.000 100.000 +Hz +hertz + + +0.100 2.000 + + +0.100 2.000 + + +0.000 2.000 + + +0.000 1.000 + + +0.000 0.400 + + +1.000 100.000 +Hz +hertz + + + diff --git a/src/FirmwarePlugin/APM/APMParameterFactMetaData.Rover.4.2.xml b/src/FirmwarePlugin/APM/APMParameterFactMetaData.Rover.4.1.xml similarity index 91% rename from src/FirmwarePlugin/APM/APMParameterFactMetaData.Rover.4.2.xml rename to src/FirmwarePlugin/APM/APMParameterFactMetaData.Rover.4.1.xml index 792f0a3..6339a43 100644 --- a/src/FirmwarePlugin/APM/APMParameterFactMetaData.Rover.4.2.xml +++ b/src/FirmwarePlugin/APM/APMParameterFactMetaData.Rover.4.1.xml @@ -6,7 +6,7 @@ - 0:ATTITUDE_FAST,1:ATTITUDE_MED,2:GPS,3:PM,4:THR,5:NTUN,7:IMU,8:CMD,9:CURRENT,10:RANGEFINDER,11:COMPASS,12:CAMERA,13:STEERING,14:RC,15:ARM/DISARM,19:IMU_RAW,20:VideoStabilization + 0:ATTITUDE_FAST,1:ATTITUDE_MED,2:GPS,3:PM,4:THR,5:NTUN,7:IMU,8:CMD,9:CURRENT,10:RANGEFINDER,11:COMPASS,12:CAMERA,13:STEERING,14:RC,15:ARM/DISARM,19:IMU_RAW @@ -32,13 +32,12 @@ 1 255 - 0 30 - 1 s seconds + 0 30 + 1 - 0:Steering,1:Throttle,2:Pitch,3:Left Wheel,4:Right Wheel,5:Sailboat Heel None Steering @@ -48,6 +47,7 @@ Right Wheel Sailboat Heel + 0:Steering,1:Throttle,2:Pitch,3:Left Wheel,4:Right Wheel,5:Sailboat Heel @@ -61,33 +61,33 @@ APM TriggerPin6 APM TriggerPin7 APM TriggerPin8 - AUX1 - AUX2 - AUX3 - AUX4 - AUX5 - AUX6 + Pixhawk TriggerPin50 + Pixhawk TriggerPin51 + Pixhawk TriggerPin52 + Pixhawk TriggerPin53 + Pixhawk TriggerPin54 + Pixhawk TriggerPin55 - 0 20 - 0.1 m/s/s meters per square second + 0 20 + 0.1 - 0 100 - 0.1 m/s meters per second + 0 100 + 0.1 - 0 100 - 1 % percent + 0 100 + 1 - + Default Two Paddles Input @@ -105,10 +105,10 @@ - 1 100 - 0.5 s seconds + 1 100 + 0.5 @@ -143,11 +143,7 @@ - - Strict - Default - Relaxed - + 0.6:Strict,0.8:Default,1.0:Relaxed @@ -248,22 +244,22 @@ - 0 10 - 0.1 m meters + 0 10 + 0.1 - 0 360 - 1 deg/s degrees per second + 0 360 + 1 - 0 100 - 0.1 m/s meters per second + 0 100 + 0.1 @@ -274,16 +270,16 @@ + deg + degrees 0 5 0.1 - deg - degrees - 0 60 - 1 deg degrees + 0 60 + 1 @@ -309,10 +305,10 @@ True - 0 20 - 1 m meters + 0 20 + 1 @@ -323,10 +319,10 @@ - -2 2 - 0.1 deg degrees + -2 2 + 0.1 @@ -335,21 +331,21 @@ - 0 30 - 0.1 m/s meters per second + 0 30 + 0.1 0 5 0.01 - 0:Failsafe enabled in Hold mode None Failsafe enabled in Hold mode + 0:Failsafe enabled in Hold mode @@ -371,16 +367,16 @@ - 0 360 - 1 deg degrees - - 0 360 1 + + deg/s degrees per second + 0 360 + 1 @@ -466,11 +462,10 @@ 0.0 1.0 .01 - + Disabled - Use GPS for DCM position - Use GPS for DCM position and height + Enabled @@ -483,29 +478,29 @@ 0 127 - 1 m/s meters per second + 1 - -0.1745 +0.1745 - 0.01 rad radians + -0.1745 +0.1745 + 0.01 - -0.1745 +0.1745 - 0.01 rad radians + -0.1745 +0.1745 + 0.01 - -0.1745 +0.1745 - 0.01 rad radians + -0.1745 +0.1745 + 0.01 - + None Yaw45 @@ -516,40 +511,38 @@ Yaw270 Yaw315 Roll180 - Yaw45Roll180 - Yaw90Roll180 - Yaw135Roll180 + Roll180Yaw45 + Roll180Yaw90 + Roll180Yaw135 Pitch180 - Yaw225Roll180 - Yaw270Roll180 - Yaw315Roll180 + Roll180Yaw225 + Roll180Yaw270 + Roll180Yaw315 Roll90 - Yaw45Roll90 - Yaw90Roll90 - Yaw135Roll90 + Roll90Yaw45 + Roll90Yaw90 + Roll90Yaw135 Roll270 - Yaw45Roll270 - Yaw90Roll270 - Yaw135Roll270 + Roll270Yaw45 + Roll270Yaw90 + Roll270Yaw135 Pitch90 Pitch270 - Yaw90Pitch180 - Yaw270Pitch180 - Pitch90Roll90 - Pitch90Roll180 - Pitch90Roll270 - Pitch180Roll90 - Pitch180Roll270 - Pitch270Roll90 - Pitch270Roll180 - Pitch270Roll270 - Yaw90Pitch180Roll90 - Yaw270Roll90 + Pitch180Yaw90 + Pitch180Yaw270 + Roll90Pitch90 + Roll180Pitch90 + Roll270Pitch90 + Roll90Pitch180 + Roll270Pitch180 + Roll90Pitch270 + Roll180Pitch270 + Roll270Pitch270 + Roll90Pitch180Yaw90 + Roll90Yaw270 Yaw293Pitch68Roll180 Pitch315 - Pitch315Roll90 - Roll45 - Roll315 + Roll90Pitch315 Custom @@ -571,41 +564,21 @@ -180 180 - 1 deg degrees + 1 -180 180 - 1 deg degrees + 1 -180 180 - 1 deg degrees - - - - - - None - NMEA AIVDM message - - True - - - 1 100 - - - 1 2000 - s - seconds - - - 0:Log all AIVDM messages,1:Log only unsupported AIVDM messages,2:Log decoded messages + 1 @@ -617,9 +590,9 @@ - 0.25 3.0 m/s/s meters per square second + 0.25 3.0 @@ -646,7 +619,7 @@ I2C-MS5525 (0x77) I2C-SDP3X I2C-DLVR-5in - DroneCAN + UAVCAN I2C-DLVR-10in I2C-DLVR-20in I2C-DLVR-30in @@ -656,9 +629,6 @@ ASP5033 - - True - DoNotUse @@ -676,13 +646,8 @@ - - - Normal - Swapped - Auto Detect - - + + Disable @@ -704,8 +669,8 @@ 2ndSensor - - 0:SpeedMismatchDisable, 1:AllowSpeedMismatchRecovery, 2:DisableVoltageCorrection + + 0:Disable sensor, 1:Re-enable sensor m/s @@ -725,7 +690,7 @@ I2C-MS5525 (0x77) I2C-SDP3X I2C-DLVR-5in - DroneCAN + UAVCAN I2C-DLVR-10in I2C-DLVR-20in I2C-DLVR-30in @@ -752,13 +717,8 @@ - - - Normal - Swapped - Auto Detect - - + + Disable @@ -774,9 +734,6 @@ Bus2(auxillary) - - True - @@ -1016,10 +973,10 @@ 0.5 - 0.1 10 - 0.01 gravities standard acceleration due to gravity + 0.1 10 + 0.01 @@ -1027,44 +984,44 @@ 0:UseFence,1:UseProximitySensor,2:UseBeaconFence - 1 10 m meters + 1 10 - 0 2 m/s meters per second + 0 2 - 0 9 m/s/s meters per square second + 0 9 - 0 2 m meters + 0 2 - True - True - 1 Pa pascal + 1 + True + True - True - 1 degC degrees Celsius + 1 + True - 0.1 m meters + 0.1 @@ -1081,30 +1038,27 @@ - - Freshwater - Saltwater - + 1.0:Freshwater,1.024:Saltwater - True - True - 1 Pa pascal + 1 + True + True - True - True - 1 Pa pascal + 1 + True + True - 0 100 - 1 % percent + 0 100 + 1 0:BMP085,1:BMP280,2:MS5611,3:MS5607,4:MS5637,5:FBM320,6:DPS280,7:LPS25H,8:Keller,9:MS5837,10:BMP388,11:SPL06,12:MSP @@ -1200,9 +1154,9 @@ Solo Bebop SMBus-Generic - DroneCAN-BatteryInfo + UAVCAN-BatteryInfo ESC - Sum Of Selected Monitors + SumOfFollowing FuelFlow FuelLevelPWM SMBUS-SUI3 @@ -1212,85 +1166,9 @@ Generator-Elec Generator-Fuel Rotoye - MPPT - INA2XX - LTC2946 - Torqeedo True - - 50 - mAh - milliampere hour - - - - - 0 120 - 1 - s - seconds - - - - Raw Voltage - Sag Compensated Voltage - - - - 0.1 - V - volt - - - 50 - mAh - milliampere hour - - - 0.1 - V - volt - - - 50 - mAh - milliampere hour - - - - None - RTL - Hold - SmartRTL - SmartRTL or Hold - Terminate - - - - - None - RTL - Hold - SmartRTL - SmartRTL or Hold - Terminate - - - - 0.1 - V - volt - - - 50 - mAh - milliampere hour - - - 0:Ignore DroneCAN SoC, 1:MPPT reports input voltage and current, 2:MPPT Powered off when disarmed, 3:MPPT Powered on when armed, 4:MPPT Powered off at boot, 5:MPPT Powered on at boot, 6:Send resistance compensated voltage to GCS - Disabled @@ -1325,23 +1203,80 @@ V volt - + + mAh + milliampere hour + 50 + + + + + s + seconds + 1 + 0 120 + + + + Raw Voltage + Sag Compensated Voltage + + + V volt + 0.1 - + + mAh + milliampere hour + 50 + + + V + volt + 0.1 + + + mAh + milliampere hour + 50 + + + + None + RTL + Hold + SmartRTL + SmartRTL or Hold + Terminate + + + + + None + RTL + Hold + SmartRTL + SmartRTL or Hold + Terminate + + + + V + volt + 0.1 + + + mAh + milliampere hour + 50 + + 0 3 - True - - 0 127 - True - - - 0:monitor 1, 1:monitor 2, 2:monitor 3, 3:monitor 4, 4:monitor 5, 5:monitor 6, 6:monitor 7, 7:monitor 8, 8:monitor 9 - - - .1 10 + + 0:Ignore UAVCAN SoC @@ -1353,9 +1288,9 @@ Solo Bebop SMBus-Generic - DroneCAN-BatteryInfo + UAVCAN-BatteryInfo ESC - Sum Of Selected Monitors + SumOfFollowing FuelFlow FuelLevelPWM SMBUS-SUI3 @@ -1365,85 +1300,9 @@ Generator-Elec Generator-Fuel Rotoye - MPPT - INA2XX - LTC2946 - Torqeedo True - - 50 - mAh - milliampere hour - - - - - 0 120 - 1 - s - seconds - - - - Raw Voltage - Sag Compensated Voltage - - - - 0.1 - V - volt - - - 50 - mAh - milliampere hour - - - 0.1 - V - volt - - - 50 - mAh - milliampere hour - - - - None - RTL - Hold - SmartRTL - SmartRTL or Hold - Terminate - - - - - None - RTL - Hold - SmartRTL - SmartRTL or Hold - Terminate - - - - 0.1 - V - volt - - - 50 - mAh - milliampere hour - - - 0:Ignore DroneCAN SoC, 1:MPPT reports input voltage and current, 2:MPPT Powered off when disarmed, 3:MPPT Powered on when armed, 4:MPPT Powered off at boot, 5:MPPT Powered on at boot, 6:Send resistance compensated voltage to GCS - Disabled @@ -1478,23 +1337,80 @@ V volt - + + mAh + milliampere hour + 50 + + + + + s + seconds + 1 + 0 120 + + + + Raw Voltage + Sag Compensated Voltage + + + V volt + 0.1 - + + mAh + milliampere hour + 50 + + + V + volt + 0.1 + + + mAh + milliampere hour + 50 + + + + None + RTL + Hold + SmartRTL + SmartRTL or Hold + Terminate + + + + + None + RTL + Hold + SmartRTL + SmartRTL or Hold + Terminate + + + + V + volt + 0.1 + + + mAh + milliampere hour + 50 + + 0 3 - True - - 0 127 - True - - - 0:monitor 1, 1:monitor 2, 2:monitor 3, 3:monitor 4, 4:monitor 5, 5:monitor 6, 6:monitor 7, 7:monitor 8, 8:monitor 9 - - - .1 10 + + 0:Ignore UAVCAN SoC @@ -1506,9 +1422,9 @@ Solo Bebop SMBus-Generic - DroneCAN-BatteryInfo + UAVCAN-BatteryInfo ESC - Sum Of Selected Monitors + SumOfFollowing FuelFlow FuelLevelPWM SMBUS-SUI3 @@ -1518,85 +1434,9 @@ Generator-Elec Generator-Fuel Rotoye - MPPT - INA2XX - LTC2946 - Torqeedo True - - 50 - mAh - milliampere hour - - - - - 0 120 - 1 - s - seconds - - - - Raw Voltage - Sag Compensated Voltage - - - - 0.1 - V - volt - - - 50 - mAh - milliampere hour - - - 0.1 - V - volt - - - 50 - mAh - milliampere hour - - - - None - RTL - Hold - SmartRTL - SmartRTL or Hold - Terminate - - - - - None - RTL - Hold - SmartRTL - SmartRTL or Hold - Terminate - - - - 0.1 - V - volt - - - 50 - mAh - milliampere hour - - - 0:Ignore DroneCAN SoC, 1:MPPT reports input voltage and current, 2:MPPT Powered off when disarmed, 3:MPPT Powered on when armed, 4:MPPT Powered off at boot, 5:MPPT Powered on at boot, 6:Send resistance compensated voltage to GCS - Disabled @@ -1631,23 +1471,80 @@ V volt - + + mAh + milliampere hour + 50 + + + + + s + seconds + 1 + 0 120 + + + + Raw Voltage + Sag Compensated Voltage + + + V volt + 0.1 - + + mAh + milliampere hour + 50 + + + V + volt + 0.1 + + + mAh + milliampere hour + 50 + + + + None + RTL + Hold + SmartRTL + SmartRTL or Hold + Terminate + + + + + None + RTL + Hold + SmartRTL + SmartRTL or Hold + Terminate + + + + V + volt + 0.1 + + + mAh + milliampere hour + 50 + + 0 3 - True - - 0 127 - True - - - 0:monitor 1, 1:monitor 2, 2:monitor 3, 3:monitor 4, 4:monitor 5, 5:monitor 6, 6:monitor 7, 7:monitor 8, 8:monitor 9 - - - .1 10 + + 0:Ignore UAVCAN SoC @@ -1659,9 +1556,9 @@ Solo Bebop SMBus-Generic - DroneCAN-BatteryInfo + UAVCAN-BatteryInfo ESC - Sum Of Selected Monitors + SumOfFollowing FuelFlow FuelLevelPWM SMBUS-SUI3 @@ -1671,85 +1568,9 @@ Generator-Elec Generator-Fuel Rotoye - MPPT - INA2XX - LTC2946 - Torqeedo True - - 50 - mAh - milliampere hour - - - - - 0 120 - 1 - s - seconds - - - - Raw Voltage - Sag Compensated Voltage - - - - 0.1 - V - volt - - - 50 - mAh - milliampere hour - - - 0.1 - V - volt - - - 50 - mAh - milliampere hour - - - - None - RTL - Hold - SmartRTL - SmartRTL or Hold - Terminate - - - - - None - RTL - Hold - SmartRTL - SmartRTL or Hold - Terminate - - - - 0.1 - V - volt - - - 50 - mAh - milliampere hour - - - 0:Ignore DroneCAN SoC, 1:MPPT reports input voltage and current, 2:MPPT Powered off when disarmed, 3:MPPT Powered on when armed, 4:MPPT Powered off at boot, 5:MPPT Powered on at boot, 6:Send resistance compensated voltage to GCS - Disabled @@ -1784,23 +1605,80 @@ V volt - + + mAh + milliampere hour + 50 + + + + + s + seconds + 1 + 0 120 + + + + Raw Voltage + Sag Compensated Voltage + + + V volt + 0.1 - + + mAh + milliampere hour + 50 + + + V + volt + 0.1 + + + mAh + milliampere hour + 50 + + + + None + RTL + Hold + SmartRTL + SmartRTL or Hold + Terminate + + + + + None + RTL + Hold + SmartRTL + SmartRTL or Hold + Terminate + + + + V + volt + 0.1 + + + mAh + milliampere hour + 50 + + 0 3 - True - - 0 127 - True - - - 0:monitor 1, 1:monitor 2, 2:monitor 3, 3:monitor 4, 4:monitor 5, 5:monitor 6, 6:monitor 7, 7:monitor 8, 8:monitor 9 - - - .1 10 + + 0:Ignore UAVCAN SoC @@ -1812,9 +1690,9 @@ Solo Bebop SMBus-Generic - DroneCAN-BatteryInfo + UAVCAN-BatteryInfo ESC - Sum Of Selected Monitors + SumOfFollowing FuelFlow FuelLevelPWM SMBUS-SUI3 @@ -1824,85 +1702,9 @@ Generator-Elec Generator-Fuel Rotoye - MPPT - INA2XX - LTC2946 - Torqeedo True - - 50 - mAh - milliampere hour - - - - - 0 120 - 1 - s - seconds - - - - Raw Voltage - Sag Compensated Voltage - - - - 0.1 - V - volt - - - 50 - mAh - milliampere hour - - - 0.1 - V - volt - - - 50 - mAh - milliampere hour - - - - None - RTL - Hold - SmartRTL - SmartRTL or Hold - Terminate - - - - - None - RTL - Hold - SmartRTL - SmartRTL or Hold - Terminate - - - - 0.1 - V - volt - - - 50 - mAh - milliampere hour - - - 0:Ignore DroneCAN SoC, 1:MPPT reports input voltage and current, 2:MPPT Powered off when disarmed, 3:MPPT Powered on when armed, 4:MPPT Powered off at boot, 5:MPPT Powered on at boot, 6:Send resistance compensated voltage to GCS - Disabled @@ -1937,23 +1739,80 @@ V volt - + + mAh + milliampere hour + 50 + + + + + s + seconds + 1 + 0 120 + + + + Raw Voltage + Sag Compensated Voltage + + + V volt + 0.1 - + + mAh + milliampere hour + 50 + + + V + volt + 0.1 + + + mAh + milliampere hour + 50 + + + + None + RTL + Hold + SmartRTL + SmartRTL or Hold + Terminate + + + + + None + RTL + Hold + SmartRTL + SmartRTL or Hold + Terminate + + + + V + volt + 0.1 + + + mAh + milliampere hour + 50 + + 0 3 - True - - 0 127 - True - - - 0:monitor 1, 1:monitor 2, 2:monitor 3, 3:monitor 4, 4:monitor 5, 5:monitor 6, 6:monitor 7, 7:monitor 8, 8:monitor 9 - - - .1 10 + + 0:Ignore UAVCAN SoC @@ -1965,9 +1824,9 @@ Solo Bebop SMBus-Generic - DroneCAN-BatteryInfo + UAVCAN-BatteryInfo ESC - Sum Of Selected Monitors + SumOfFollowing FuelFlow FuelLevelPWM SMBUS-SUI3 @@ -1977,85 +1836,9 @@ Generator-Elec Generator-Fuel Rotoye - MPPT - INA2XX - LTC2946 - Torqeedo True - - 50 - mAh - milliampere hour - - - - - 0 120 - 1 - s - seconds - - - - Raw Voltage - Sag Compensated Voltage - - - - 0.1 - V - volt - - - 50 - mAh - milliampere hour - - - 0.1 - V - volt - - - 50 - mAh - milliampere hour - - - - None - RTL - Hold - SmartRTL - SmartRTL or Hold - Terminate - - - - - None - RTL - Hold - SmartRTL - SmartRTL or Hold - Terminate - - - - 0.1 - V - volt - - - 50 - mAh - milliampere hour - - - 0:Ignore DroneCAN SoC, 1:MPPT reports input voltage and current, 2:MPPT Powered off when disarmed, 3:MPPT Powered on when armed, 4:MPPT Powered off at boot, 5:MPPT Powered on at boot, 6:Send resistance compensated voltage to GCS - Disabled @@ -2090,23 +1873,80 @@ V volt - + + mAh + milliampere hour + 50 + + + + + s + seconds + 1 + 0 120 + + + + Raw Voltage + Sag Compensated Voltage + + + V volt + 0.1 - + + mAh + milliampere hour + 50 + + + V + volt + 0.1 + + + mAh + milliampere hour + 50 + + + + None + RTL + Hold + SmartRTL + SmartRTL or Hold + Terminate + + + + + None + RTL + Hold + SmartRTL + SmartRTL or Hold + Terminate + + + + V + volt + 0.1 + + + mAh + milliampere hour + 50 + + 0 3 - True - - 0 127 - True - - - 0:monitor 1, 1:monitor 2, 2:monitor 3, 3:monitor 4, 4:monitor 5, 5:monitor 6, 6:monitor 7, 7:monitor 8, 8:monitor 9 - - - .1 10 + + 0:Ignore UAVCAN SoC @@ -2118,9 +1958,9 @@ Solo Bebop SMBus-Generic - DroneCAN-BatteryInfo + UAVCAN-BatteryInfo ESC - Sum Of Selected Monitors + SumOfFollowing FuelFlow FuelLevelPWM SMBUS-SUI3 @@ -2130,85 +1970,9 @@ Generator-Elec Generator-Fuel Rotoye - MPPT - INA2XX - LTC2946 - Torqeedo True - - 50 - mAh - milliampere hour - - - - - 0 120 - 1 - s - seconds - - - - Raw Voltage - Sag Compensated Voltage - - - - 0.1 - V - volt - - - 50 - mAh - milliampere hour - - - 0.1 - V - volt - - - 50 - mAh - milliampere hour - - - - None - RTL - Hold - SmartRTL - SmartRTL or Hold - Terminate - - - - - None - RTL - Hold - SmartRTL - SmartRTL or Hold - Terminate - - - - 0.1 - V - volt - - - 50 - mAh - milliampere hour - - - 0:Ignore DroneCAN SoC, 1:MPPT reports input voltage and current, 2:MPPT Powered off when disarmed, 3:MPPT Powered on when armed, 4:MPPT Powered off at boot, 5:MPPT Powered on at boot, 6:Send resistance compensated voltage to GCS - Disabled @@ -2243,23 +2007,80 @@ V volt - + + mAh + milliampere hour + 50 + + + + + s + seconds + 1 + 0 120 + + + + Raw Voltage + Sag Compensated Voltage + + + V volt + 0.1 - + + mAh + milliampere hour + 50 + + + V + volt + 0.1 + + + mAh + milliampere hour + 50 + + + + None + RTL + Hold + SmartRTL + SmartRTL or Hold + Terminate + + + + + None + RTL + Hold + SmartRTL + SmartRTL or Hold + Terminate + + + + V + volt + 0.1 + + + mAh + milliampere hour + 50 + + 0 3 - True - - 0 127 - True - - - 0:monitor 1, 1:monitor 2, 2:monitor 3, 3:monitor 4, 4:monitor 5, 5:monitor 6, 6:monitor 7, 7:monitor 8, 8:monitor 9 - - - .1 10 + + 0:Ignore UAVCAN SoC @@ -2271,9 +2092,9 @@ Solo Bebop SMBus-Generic - DroneCAN-BatteryInfo + UAVCAN-BatteryInfo ESC - Sum Of Selected Monitors + SumOfFollowing FuelFlow FuelLevelPWM SMBUS-SUI3 @@ -2283,85 +2104,9 @@ Generator-Elec Generator-Fuel Rotoye - MPPT - INA2XX - LTC2946 - Torqeedo True - - 50 - mAh - milliampere hour - - - - - 0 120 - 1 - s - seconds - - - - Raw Voltage - Sag Compensated Voltage - - - - 0.1 - V - volt - - - 50 - mAh - milliampere hour - - - 0.1 - V - volt - - - 50 - mAh - milliampere hour - - - - None - RTL - Hold - SmartRTL - SmartRTL or Hold - Terminate - - - - - None - RTL - Hold - SmartRTL - SmartRTL or Hold - Terminate - - - - 0.1 - V - volt - - - 50 - mAh - milliampere hour - - - 0:Ignore DroneCAN SoC, 1:MPPT reports input voltage and current, 2:MPPT Powered off when disarmed, 3:MPPT Powered on when armed, 4:MPPT Powered off at boot, 5:MPPT Powered on at boot, 6:Send resistance compensated voltage to GCS - Disabled @@ -2396,23 +2141,80 @@ V volt - + + mAh + milliampere hour + 50 + + + + + s + seconds + 1 + 0 120 + + + + Raw Voltage + Sag Compensated Voltage + + + V volt + 0.1 - + + mAh + milliampere hour + 50 + + + V + volt + 0.1 + + + mAh + milliampere hour + 50 + + + + None + RTL + Hold + SmartRTL + SmartRTL or Hold + Terminate + + + + + None + RTL + Hold + SmartRTL + SmartRTL or Hold + Terminate + + + + V + volt + 0.1 + + + mAh + milliampere hour + 50 + + 0 3 - True - - 0 127 - True - - - 0:monitor 1, 1:monitor 2, 2:monitor 3, 3:monitor 4, 4:monitor 5, 5:monitor 6, 6:monitor 7, 7:monitor 8, 8:monitor 9 - - - .1 10 + + 0:Ignore UAVCAN SoC @@ -2424,9 +2226,9 @@ Solo Bebop SMBus-Generic - DroneCAN-BatteryInfo + UAVCAN-BatteryInfo ESC - Sum Of Selected Monitors + SumOfFollowing FuelFlow FuelLevelPWM SMBUS-SUI3 @@ -2436,85 +2238,9 @@ Generator-Elec Generator-Fuel Rotoye - MPPT - INA2XX - LTC2946 - Torqeedo True - - 50 - mAh - milliampere hour - - - - - 0 120 - 1 - s - seconds - - - - Raw Voltage - Sag Compensated Voltage - - - - 0.1 - V - volt - - - 50 - mAh - milliampere hour - - - 0.1 - V - volt - - - 50 - mAh - milliampere hour - - - - None - RTL - Hold - SmartRTL - SmartRTL or Hold - Terminate - - - - - None - RTL - Hold - SmartRTL - SmartRTL or Hold - Terminate - - - - 0.1 - V - volt - - - 50 - mAh - milliampere hour - - - 0:Ignore DroneCAN SoC, 1:MPPT reports input voltage and current, 2:MPPT Powered off when disarmed, 3:MPPT Powered on when armed, 4:MPPT Powered off at boot, 5:MPPT Powered on at boot, 6:Send resistance compensated voltage to GCS - Disabled @@ -2549,23 +2275,80 @@ V volt - + + mAh + milliampere hour + 50 + + + + + s + seconds + 1 + 0 120 + + + + Raw Voltage + Sag Compensated Voltage + + + V volt + 0.1 - + + mAh + milliampere hour + 50 + + + V + volt + 0.1 + + + mAh + milliampere hour + 50 + + + + None + RTL + Hold + SmartRTL + SmartRTL or Hold + Terminate + + + + + None + RTL + Hold + SmartRTL + SmartRTL or Hold + Terminate + + + + V + volt + 0.1 + + + mAh + milliampere hour + 50 + + 0 3 - True - - 0 127 - True - - - 0:monitor 1, 1:monitor 2, 2:monitor 3, 3:monitor 4, 4:monitor 5, 5:monitor 6, 6:monitor 7, 7:monitor 8, 8:monitor 9 - - - .1 10 + + 0:Ignore UAVCAN SoC @@ -2579,32 +2362,46 @@ - -90 90 - 0.000001 deg degrees + 0.000001 + -90 90 - -180 180 - 0.000001 deg degrees + 0.000001 + -180 180 - 0 10000 - 1 m meters + 1 + 0 10000 - -180 +180 - 1 deg degrees + 1 + -180 +180 - + + + No PWMs + One PWMs + Two PWMs + Three PWMs + Four PWMs + Five PWMs + Six PWMs + Seven PWMs + Eight PWMs + + True + + Disabled Enabled @@ -2612,7 +2409,7 @@ True - + Disabled Enabled @@ -2671,7 +2468,7 @@ 0:Output1,1:Output2,2:Output3,3:Output4,4:Output5,5:Output6,6:Output7,7:Output8,8:Output9,9:Output10,10:Output11,11:Output12,12:Output13,13:Output14 True - + -1 80 degC degrees Celsius @@ -2715,16 +2512,16 @@ 0:ActiveForSafetyEnable,1:ActiveForSafetyDisable,2:ActiveWhenArmed,3:Force safety on when the aircraft disarms + V + volt 4.0 5.5 0.1 - V - volt - 3.3 12.0 - 0.1 V volt + 3.3 12.0 + 0.1 0 32 @@ -2737,22 +2534,22 @@ - 0:Enable hardware watchdog, 1:Disable MAVftp, 2:Enable set of internal parameters, 3:Enable Debug Pins, 4:Unlock flash on reboot, 5:Write protect firmware flash on reboot, 6:Write protect bootloader flash on reboot + 0:Enable hardware watchdog, 1:Disable MAVftp, 2:Enable set of internal parameters, 3:Enable Debug Pins 0 10000 ms milliseconds - + 1 500 1 - + 0 1 0.1 - + 0 100 1 @@ -2761,11 +2558,6 @@ 1 True - - 0 20 - degC - degrees Celsius - @@ -2934,7 +2726,7 @@ Do Nothing RTL - Save Trim (4.1 and lower) + Save Trim Save WP Camera Trigger Fence @@ -2949,7 +2741,7 @@ Relay3 On/Off Relay4 On/Off Proximity Avoidance - ArmDisarm (4.1 and lower) + ArmDisarm SmartRTL RC Override Enable LearnCruise @@ -2965,29 +2757,23 @@ Compass Learn Sailboat Tack GPS Disable - Relay5 On/Off - Relay6 On/Off + Relay5 + Relay6 Sailboat motoring 3pos RunCam Control RunCam OSD Control Viso Align Disarm EKF Pos Source - VTX Power - Windvane home heading direction offset KillIMU1 KillIMU2 Camera Mode Toggle GPS Disable Yaw - Disable Airspeed Use - ArmDisarm (4.2 and higher) - set steering trim to current servo and RC - Torqeedo Clear Err Roll Pitch + Walking Height MainSail Flap - Walking Height Scripting1 Scripting2 Scripting3 @@ -3002,7 +2788,7 @@ Do Nothing RTL - Save Trim (4.1 and lower) + Save Trim Save WP Camera Trigger Fence @@ -3017,7 +2803,7 @@ Relay3 On/Off Relay4 On/Off Proximity Avoidance - ArmDisarm (4.1 and lower) + ArmDisarm SmartRTL RC Override Enable LearnCruise @@ -3033,29 +2819,23 @@ Compass Learn Sailboat Tack GPS Disable - Relay5 On/Off - Relay6 On/Off + Relay5 + Relay6 Sailboat motoring 3pos RunCam Control RunCam OSD Control Viso Align Disarm EKF Pos Source - VTX Power - Windvane home heading direction offset KillIMU1 KillIMU2 Camera Mode Toggle GPS Disable Yaw - Disable Airspeed Use - ArmDisarm (4.2 and higher) - set steering trim to current servo and RC - Torqeedo Clear Err Roll Pitch + Walking Height MainSail Flap - Walking Height Scripting1 Scripting2 Scripting3 @@ -3070,7 +2850,7 @@ Do Nothing RTL - Save Trim (4.1 and lower) + Save Trim Save WP Camera Trigger Fence @@ -3085,7 +2865,7 @@ Relay3 On/Off Relay4 On/Off Proximity Avoidance - ArmDisarm (4.1 and lower) + ArmDisarm SmartRTL RC Override Enable LearnCruise @@ -3101,29 +2881,23 @@ Compass Learn Sailboat Tack GPS Disable - Relay5 On/Off - Relay6 On/Off + Relay5 + Relay6 Sailboat motoring 3pos RunCam Control RunCam OSD Control Viso Align Disarm EKF Pos Source - VTX Power - Windvane home heading direction offset KillIMU1 KillIMU2 Camera Mode Toggle GPS Disable Yaw - Disable Airspeed Use - ArmDisarm (4.2 and higher) - set steering trim to current servo and RC - Torqeedo Clear Err Roll Pitch + Walking Height MainSail Flap - Walking Height Scripting1 Scripting2 Scripting3 @@ -3138,7 +2912,7 @@ Do Nothing RTL - Save Trim (4.1 and lower) + Save Trim Save WP Camera Trigger Fence @@ -3153,7 +2927,7 @@ Relay3 On/Off Relay4 On/Off Proximity Avoidance - ArmDisarm (4.1 and lower) + ArmDisarm SmartRTL RC Override Enable LearnCruise @@ -3169,29 +2943,23 @@ Compass Learn Sailboat Tack GPS Disable - Relay5 On/Off - Relay6 On/Off + Relay5 + Relay6 Sailboat motoring 3pos RunCam Control RunCam OSD Control Viso Align Disarm EKF Pos Source - VTX Power - Windvane home heading direction offset KillIMU1 KillIMU2 Camera Mode Toggle GPS Disable Yaw - Disable Airspeed Use - ArmDisarm (4.2 and higher) - set steering trim to current servo and RC - Torqeedo Clear Err Roll Pitch + Walking Height MainSail Flap - Walking Height Scripting1 Scripting2 Scripting3 @@ -3212,24 +2980,24 @@ - 0 50 ds deciseconds + 0 50 - 1000 2000 PWM PWM in microseconds + 1000 2000 - 1000 2000 PWM PWM in microseconds + 1000 2000 - 0 1000 m meters + 0 1000 @@ -3238,14 +3006,14 @@ - 0 10000 ms milliseconds + 0 10000 - 0 180 deg degrees + 0 180 @@ -3317,15 +3085,12 @@ Disabled - DroneCAN + UAVCAN ToshibaCAN PiccoloCAN CANTester - EFI_NWPMU - USD1 KDECAN - Scripting - Benewake + PacketDigitalCAN True @@ -3339,17 +3104,17 @@ 0: ESC 1, 1: ESC 2, 2: ESC 3, 3: ESC 4, 4: ESC 5, 5: ESC 6, 6: ESC 7, 7: ESC 8, 8: ESC 9, 9: ESC 10, 10: ESC 11, 11: ESC 12, 12: ESC 13, 13: ESC 14, 14: ESC 15, 15: ESC 16 - 1 500 Hz hertz + 1 500 0: Servo 1, 1: Servo 2, 2: Servo 3, 3: Servo 4, 4: Servo 5, 5: Servo 6, 6: Servo 7, 7: Servo 8, 8: Servo 9, 9: Servo 10, 10: Servo 11, 11: Servo 12, 12: Servo 13, 13: Servo 14, 14: Servo 15, 15: Servo 16 - 1 500 Hz hertz + 1 500 @@ -3374,10 +3139,10 @@ 1 250 - + 0: Servo 1, 1: Servo 2, 2: Servo 3, 3: Servo 4, 4: Servo 5, 5: Servo 6, 6: Servo 7, 7: Servo 8, 8: Servo 9, 9: Servo 10, 10: Servo 11, 11: Servo 12, 12: Servo 13, 13: Servo 14, 14: Servo 15 - + 0: ESC 1, 1: ESC 2, 2: ESC 3, 3: ESC 4, 4: ESC 5, 5: ESC 6, 6: ESC 7, 7: ESC 8, 8: ESC 9, 9: ESC 10, 10: ESC 11, 11: ESC 12, 12: ESC 13, 13: ESC 14, 14: ESC 15, 15: ESC 16 @@ -3388,31 +3153,17 @@ 0:ClearDNADatabase,1:IgnoreDNANodeConflicts - - 1 200 - Hz - hertz - - - 0 18 - - - 1024 16384 - Disabled - DroneCAN + UAVCAN ToshibaCAN PiccoloCAN CANTester - EFI_NWPMU - USD1 KDECAN - Scripting - Benewake + PacketDigitalCAN True @@ -3426,17 +3177,17 @@ 0: ESC 1, 1: ESC 2, 2: ESC 3, 3: ESC 4, 4: ESC 5, 5: ESC 6, 6: ESC 7, 7: ESC 8, 8: ESC 9, 9: ESC 10, 10: ESC 11, 11: ESC 12, 12: ESC 13, 13: ESC 14, 14: ESC 15, 15: ESC 16 - 1 500 Hz hertz + 1 500 0: Servo 1, 1: Servo 2, 2: Servo 3, 3: Servo 4, 4: Servo 5, 5: Servo 6, 6: Servo 7, 7: Servo 8, 8: Servo 9, 9: Servo 10, 10: Servo 11, 11: Servo 12, 12: Servo 13, 13: Servo 14, 14: Servo 15, 15: Servo 16 - 1 500 Hz hertz + 1 500 @@ -3461,10 +3212,10 @@ 1 250 - + 0: Servo 1, 1: Servo 2, 2: Servo 3, 3: Servo 4, 4: Servo 5, 5: Servo 6, 6: Servo 7, 7: Servo 8, 8: Servo 9, 9: Servo 10, 10: Servo 11, 11: Servo 12, 12: Servo 13, 13: Servo 14, 14: Servo 15 - + 0: ESC 1, 1: ESC 2, 2: ESC 3, 3: ESC 4, 4: ESC 5, 5: ESC 6, 6: ESC 7, 7: ESC 8, 8: ESC 9, 9: ESC 10, 10: ESC 11, 11: ESC 12, 12: ESC 13, 13: ESC 14, 14: ESC 15, 15: ESC 16 @@ -3475,31 +3226,17 @@ 0:ClearDNADatabase,1:IgnoreDNANodeConflicts - - 1 200 - Hz - hertz - - - 0 18 - - - 1024 16384 - Disabled - DroneCAN + UAVCAN ToshibaCAN PiccoloCAN CANTester - EFI_NWPMU - USD1 KDECAN - Scripting - Benewake + PacketDigitalCAN True @@ -3513,17 +3250,17 @@ 0: ESC 1, 1: ESC 2, 2: ESC 3, 3: ESC 4, 4: ESC 5, 5: ESC 6, 6: ESC 7, 7: ESC 8, 8: ESC 9, 9: ESC 10, 10: ESC 11, 11: ESC 12, 12: ESC 13, 13: ESC 14, 14: ESC 15, 15: ESC 16 - 1 500 Hz hertz + 1 500 0: Servo 1, 1: Servo 2, 2: Servo 3, 3: Servo 4, 4: Servo 5, 5: Servo 6, 6: Servo 7, 7: Servo 8, 8: Servo 9, 9: Servo 10, 10: Servo 11, 11: Servo 12, 12: Servo 13, 13: Servo 14, 14: Servo 15, 15: Servo 16 - 1 500 Hz hertz + 1 500 @@ -3548,10 +3285,10 @@ 1 250 - + 0: Servo 1, 1: Servo 2, 2: Servo 3, 3: Servo 4, 4: Servo 5, 5: Servo 6, 6: Servo 7, 7: Servo 8, 8: Servo 9, 9: Servo 10, 10: Servo 11, 11: Servo 12, 12: Servo 13, 13: Servo 14, 14: Servo 15 - + 0: ESC 1, 1: ESC 2, 2: ESC 3, 3: ESC 4, 4: ESC 5, 5: ESC 6, 6: ESC 7, 7: ESC 8, 8: ESC 9, 9: ESC 10, 10: ESC 11, 11: ESC 12, 12: ESC 13, 13: ESC 14, 14: ESC 15, 15: ESC 16 @@ -3562,17 +3299,6 @@ 0:ClearDNADatabase,1:IgnoreDNANodeConflicts - - 1 200 - Hz - hertz - - - 0 18 - - - 1024 16384 - @@ -3580,7 +3306,6 @@ Disabled First driver Second driver - Third driver True @@ -3594,7 +3319,6 @@ Disabled First driver Second driver - Third driver True @@ -3608,7 +3332,6 @@ Disabled First driver Second driver - Third driver True @@ -3646,30 +3369,30 @@ - 1 -400 400 - 1 mGauss milligauss + 1 + 1 - 1 -400 400 - 1 mGauss milligauss + 1 + 1 -400 400 - 1 mGauss milligauss + 1 -3.142 3.142 - 0.01 rad radians + 0.01 @@ -3692,34 +3415,34 @@ - 1 Disabled Use Throttle Use Current + 1 - 1 -1000 1000 - 1 mGauss/A milligauss per ampere + 1 + 1 - 1 -1000 1000 - 1 mGauss/A milligauss per ampere + 1 + 1 -1000 1000 - 1 mGauss/A milligauss per ampere + 1 - + None Yaw45 @@ -3730,44 +3453,42 @@ Yaw270 Yaw315 Roll180 - Yaw45Roll180 - Yaw90Roll180 - Yaw135Roll180 + Roll180Yaw45 + Roll180Yaw90 + Roll180Yaw135 Pitch180 - Yaw225Roll180 - Yaw270Roll180 - Yaw315Roll180 + Roll180Yaw225 + Roll180Yaw270 + Roll180Yaw315 Roll90 - Yaw45Roll90 - Yaw90Roll90 - Yaw135Roll90 + Roll90Yaw45 + Roll90Yaw90 + Roll90Yaw135 Roll270 - Yaw45Roll270 - Yaw90Roll270 - Yaw135Roll270 + Roll270Yaw45 + Roll270Yaw90 + Roll270Yaw135 Pitch90 Pitch270 - Yaw90Pitch180 - Yaw270Pitch180 - Pitch90Roll90 - Pitch90Roll180 - Pitch90Roll270 - Pitch180Roll90 - Pitch180Roll270 - Pitch270Roll90 - Pitch270Roll180 - Pitch270Roll270 - Yaw90Pitch180Roll90 - Yaw270Roll90 + Pitch180Yaw90 + Pitch180Yaw270 + Roll90Pitch90 + Roll180Pitch90 + Roll270Pitch90 + Roll90Pitch180 + Roll270Pitch180 + Roll90Pitch270 + Roll180Pitch270 + Roll270Pitch270 + Roll90Pitch180Yaw90 + Roll90Yaw270 Yaw293Pitch68Roll180 Pitch315 - Pitch315Roll90 - Roll45 - Roll315 + Roll90Pitch315 Custom - + Internal External @@ -3775,84 +3496,84 @@ - 1 -400 400 - 1 mGauss milligauss + 1 + 1 - 1 -400 400 - 1 mGauss milligauss + 1 + 1 -400 400 - 1 mGauss milligauss + 1 - 1 -1000 1000 - 1 mGauss/A milligauss per ampere + 1 + 1 - 1 -1000 1000 - 1 mGauss/A milligauss per ampere + 1 + 1 -1000 1000 - 1 mGauss/A milligauss per ampere + 1 - 1 -400 400 - 1 mGauss milligauss + 1 + 1 - 1 -400 400 - 1 mGauss milligauss + 1 + 1 -400 400 - 1 mGauss milligauss + 1 - 1 -1000 1000 - 1 mGauss/A milligauss per ampere + 1 + 1 - 1 -1000 1000 - 1 mGauss/A milligauss per ampere + 1 + 1 -1000 1000 - 1 mGauss/A milligauss per ampere + 1 True @@ -3912,12 +3633,10 @@ Yaw293Pitch68Roll180 Pitch315 Roll90Pitch315 - Roll45 - Roll315 Custom - + Internal External @@ -3973,12 +3692,10 @@ Yaw293Pitch68Roll180 Pitch315 Roll90Pitch315 - Roll45 - Roll315 Custom - + Internal External @@ -4048,20 +3765,19 @@ 1 - 0:HMC5883,1:LSM303D,2:AK8963,3:BMM150,4:LSM9DS1,5:LIS3MDL,6:AK09916,7:IST8310,8:ICM20948,9:MMC3416,11:DroneCAN,12:QMC5883,14:MAG3110,15:IST8308,16:RM3100,17:MSP,18:ExternalAHRS + 0:HMC5883,1:LSM303D,2:AK8963,3:BMM150,4:LSM9DS1,5:LIS3MDL,6:AK09916,7:IST8310,8:ICM20948,9:MMC3416,11:UAVCAN,12:QMC5883,14:MAG3110,15:IST8308,16:RM3100,17:MSP,18:ExternalAHRS - 0 100 - 1 % percent + 0 100 + 1 Disabled CheckOnly CheckAndFix - use same tolerance to auto rotate 45 deg rotations @@ -4078,7 +3794,6 @@ Disabled Enabled - True 0 1.3 @@ -4109,23 +3824,23 @@ -180 180 - 1 deg degrees + 1 True -180 180 - 1 deg degrees + 1 True -180 180 - 1 deg degrees + 1 True @@ -4165,46 +3880,11 @@ - - - - Disabled - Enabled - - - - - Disabled - Serial0 - Serial1 - Serial2 - Serial3 - Serial4 - Serial5 - Serial6 - - - - - Disabled - Driver1 - Driver2 - - - - 0:EnforceArming - - - m - meters - - None VectorNav - LORD @@ -4212,23 +3892,6 @@ hertz - - - - None - Serial-MS - NWPMU - Serial-Lutan - - True - - - 0 1 - - - 0 10 - - @@ -4257,7 +3920,7 @@ m/s meters per second - + 100 1000 25 @@ -4503,16 +4166,17 @@ 0.1 30.0 Hz hertz + False - + 0:FirstEKF,1:SecondEKF,2:ThirdEKF,3:FourthEKF,4:FifthEKF,5:SixthEKF True - + 0:FirstEKF,1:SecondEKF,2:ThirdEKF,3:FourthEKF,4:FifthEKF,5:SixthEKF True - + 1 10 1 True @@ -4538,7 +4202,7 @@ m/s meters per second - + 100 1000 25 @@ -4571,9 +4235,9 @@ 0 250 10 + True ms milliseconds - True 0.01 0.5 @@ -4636,9 +4300,9 @@ 0 250 10 + True ms milliseconds - True 0.0001 0.1 @@ -4742,9 +4406,9 @@ 0 250 10 + True ms milliseconds - True 2.0 6.0 @@ -4796,21 +4460,22 @@ 0.1 30.0 Hz hertz + False 0 500 mGauss milligauss - + 0:FirstEKF,1:SecondEKF,2:ThirdEKF,3:FourthEKF,4:FifthEKF,5:SixthEKF True - + 0:FirstEKF,1:SecondEKF,2:ThirdEKF,3:FourthEKF,4:FifthEKF,5:SixthEKF True - + 1 10 1 True @@ -5021,14 +4686,14 @@ - 30 10000 m meters + 30 10000 - 1 10 m meters + 1 10 1 20 @@ -5105,9 +4770,9 @@ 0 255 - 1 1000 m meters + 1 1000 @@ -5117,21 +4782,21 @@ -100 100 - 1 m meters + 1 -100 100 - 1 m meters + 1 -100 100 - 1 m meters + 1 @@ -5254,9 +4919,6 @@ 27 - - 0:EnableAirspeedAndGroundspeed - @@ -5275,11 +4937,13 @@ None AUTO uBlox + MTK + MTK19 NMEA SiRF HIL SwiftNav - DroneCAN + UAVCAN SBF GSOF ERB @@ -5291,8 +4955,6 @@ MSP AllyStar ExternalAHRS - DroneCAN-MovingBaseline-Base - DroneCAN-MovingBaseline-Rover True @@ -5301,11 +4963,13 @@ None AUTO uBlox + MTK + MTK19 NMEA SiRF HIL SwiftNav - DroneCAN + UAVCAN SBF GSOF ERB @@ -5317,8 +4981,6 @@ MSP AllyStar ExternalAHRS - DroneCAN-MovingBaseline-Base - DroneCAN-MovingBaseline-Rover True @@ -5401,88 +5063,87 @@ Disables automatic configuration - Enable automatic configuration for Serial GPSes only - Enable automatic configuration for DroneCAN as well + Enable automatic configuration - 50 200 + ms + milliseconds 10Hz 8Hz 5Hz - ms - milliseconds + 50 200 - 50 200 + ms + milliseconds 10Hz 8Hz 5Hz - ms - milliseconds + 50 200 - -5 5 - 0.01 m meters + -5 5 + 0.01 - -5 5 - 0.01 m meters + -5 5 + 0.01 - -5 5 - 0.01 m meters + -5 5 + 0.01 - -5 5 - 0.01 m meters + -5 5 + 0.01 - -5 5 - 0.01 m meters + -5 5 + 0.01 - -5 5 - 0.01 m meters + -5 5 + 0.01 - 0 250 ms milliseconds + 0 250 True - 0 250 ms milliseconds + 0 250 True 0:Horiz Pos,1:Vert Pos,2:Speed - 5.0 30.0 s seconds + 5.0 30.0 - 0:Use UART2 for moving baseline on ublox,1:Use base station for GPS yaw on SBF,2:Use baudrate 115200,3:Use dedicated CAN port b/w GPSes for moving baseline + 0:Use UART2 for moving baseline on ublox,1:Use base station for GPS yaw on SBF,2:Use baudrate 115200 0 10 @@ -5495,11 +5156,11 @@ True + 1 FirstGPS SecondGPS - 1 True @@ -5507,9 +5168,9 @@ True - + - + @@ -5521,22 +5182,22 @@ True - -5 5 - 0.01 m meters + -5 5 + 0.01 - -5 5 - 0.01 m meters + -5 5 + 0.01 - -5 5 - 0.01 m meters + -5 5 + 0.01 @@ -5548,22 +5209,22 @@ True - -5 5 - 0.01 m meters + -5 5 + 0.01 - -5 5 - 0.01 m meters + -5 5 + 0.01 - -5 5 - 0.01 m meters + -5 5 + 0.01 @@ -5600,155 +5261,155 @@ s seconds - + 0 255 - 1 rad/s radians per second + 1 - 1 rad/s radians per second + 1 - 1 rad/s radians per second + 1 - 1 rad/s radians per second + 1 - 1 rad/s radians per second + 1 - 1 rad/s radians per second + 1 - 1 rad/s radians per second + 1 - 1 rad/s radians per second + 1 - 1 rad/s radians per second + 1 - 1 0.8 1.2 + 1 - 1 0.8 1.2 + 1 - 1 0.8 1.2 + 1 - 1 - -3.5 3.5 m/s/s meters per square second + -3.5 3.5 + 1 - 1 - -3.5 3.5 m/s/s meters per square second + -3.5 3.5 + 1 - 1 - -3.5 3.5 m/s/s meters per square second + -3.5 3.5 + 1 - 1 0.8 1.2 + 1 - 1 0.8 1.2 + 1 - 1 0.8 1.2 + 1 - 1 - -3.5 3.5 m/s/s meters per square second + -3.5 3.5 + 1 - 1 - -3.5 3.5 m/s/s meters per square second + -3.5 3.5 + 1 - 1 - -3.5 3.5 m/s/s meters per square second + -3.5 3.5 + 1 - 1 0.8 1.2 + 1 - 1 0.8 1.2 + 1 - 1 0.8 1.2 + 1 - 1 - -3.5 3.5 m/s/s meters per square second + -3.5 3.5 + 1 - 1 - -3.5 3.5 m/s/s meters per square second + -3.5 3.5 + 1 - 1 - -3.5 3.5 m/s/s meters per square second + -3.5 3.5 + 1 - 0 256 Hz hertz + 0 256 - 0 256 Hz hertz + 0 256 @@ -5792,57 +5453,57 @@ - -5 5 - 0.01 m meters + -5 5 + 0.01 - -5 5 - 0.01 m meters + -5 5 + 0.01 - -5 5 - 0.01 m meters + -5 5 + 0.01 - -5 5 - 0.01 m meters + -5 5 + 0.01 - -5 5 - 0.01 m meters + -5 5 + 0.01 - -5 5 - 0.01 m meters + -5 5 + 0.01 - -10 10 m meters + -10 10 - -5 5 - 0.01 m meters + -5 5 + 0.01 - -5 5 - 0.01 m meters + -5 5 + 0.01 True @@ -5866,7 +5527,7 @@ 0:FirstIMU,1:SecondIMU,2:ThirdIMU - 0:FirstIMU,1:SecondIMU,2:ThirdIMU,3:FourthIMU,4:FifthIMU,5:SixthIMU,6:SeventhIMU + 0:FirstIMU,1:SecondIMU,2:ThirdIMU @@ -5878,85 +5539,39 @@ True - 1 degC degrees Celsius + 1 - 1 degC degrees Celsius + 1 - 1 degC degrees Celsius + 1 - 1 degC degrees Celsius + 1 - 1 degC degrees Celsius + 1 - 1 degC degrees Celsius + 1 0:PersistParams - - - - Disabled - Enabled - - - - 10 495 - Hz - hertz - - - 5 250 - Hz - hertz - - - 5 50 - dB - decibel - - - 0:1st harmonic,1:2nd harmonic,2:3rd harmonic,3:4th hamronic,4:5th harmonic,5:6th harmonic,6:7th harmonic,7:8th harmonic - True - - - 0.0 1.0 - True - - - 0 4 - - Disabled - Throttle - RPM Sensor - ESC Telemetry - Dynamic FFT - Second RPM Sensor - - - - 0:Double notch,1:Dynamic harmonic,2:Update at loop rate - True - - @@ -5979,7 +5594,7 @@ dB decibel - + 0:1st harmonic,1:2nd harmonic,2:3rd harmonic,3:4th hamronic,4:5th harmonic,5:6th harmonic,6:7th harmonic,7:8th harmonic True @@ -5995,7 +5610,6 @@ RPM Sensor ESC Telemetry Dynamic FFT - Second RPM Sensor @@ -6016,14 +5630,37 @@ 0:Sensor-Rate Logging (sample at full sensor rate seen by AP), 1: Sample post-filtering - 10 ms milliseconds + 10 1 + + + + Disabled + Enabled + + + + 5 30 + dB + decibel + + + 10 400 + Hz + hertz + + + 5 100 + Hz + hertz + + @@ -6034,16 +5671,16 @@ True - 1 -70 80 degC degrees Celsius + 1 - 1 -70 80 degC degrees Celsius + 1 1 @@ -6110,16 +5747,16 @@ True - 1 -70 80 degC degrees Celsius + 1 - 1 -70 80 degC degrees Celsius + 1 1 @@ -6186,16 +5823,16 @@ True - 1 -70 80 degC degrees Celsius + 1 - 1 -70 80 degC degrees Celsius + 1 1 @@ -6285,31 +5922,16 @@ seconds - 10 1000 MB megabyte - - - 0 1000 - Hz - hertz - - - 0 1000 - Hz - hertz - - - 0 1000 - Hz - hertz + 10 1000 - True 0 32766 1 + True @@ -6343,40 +5965,40 @@ - -180.00 179.99 - 1 deg degrees + -180.00 179.99 + 1 - -180.00 179.99 - 1 deg degrees + -180.00 179.99 + 1 - -180.00 179.99 - 1 deg degrees + -180.00 179.99 + 1 - -180.00 179.99 - 1 deg degrees + -180.00 179.99 + 1 - -180.00 179.99 - 1 deg degrees + -180.00 179.99 + 1 - -180.00 179.99 - 1 deg degrees + -180.00 179.99 + 1 @@ -6410,16 +6032,16 @@ - -18000 17999 - 10 cdeg centidegrees + -18000 17999 + 10 - -18000 17999 - 10 cdeg centidegrees + -18000 17999 + 10 @@ -6435,16 +6057,16 @@ - -18000 17999 - 10 cdeg centidegrees + -18000 17999 + 10 - -18000 17999 - 10 cdeg centidegrees + -18000 17999 + 10 @@ -6460,32 +6082,32 @@ - -18000 17999 - 10 cdeg centidegrees + -18000 17999 + 10 - -18000 17999 - 10 cdeg centidegrees + -18000 17999 + 10 0 100 1 - 0.0 0.2 - .005 s seconds + 0.0 0.2 + .005 - 0.0 0.2 - .005 s seconds + 0.0 0.2 + .005 @@ -6497,40 +6119,40 @@ - -180.00 179.99 - 1 deg degrees + -180.00 179.99 + 1 - -180.00 179.99 - 1 deg degrees + -180.00 179.99 + 1 - -180.00 179.99 - 1 deg degrees + -180.00 179.99 + 1 - -180.00 179.99 - 1 deg degrees + -180.00 179.99 + 1 - -180.00 179.99 - 1 deg degrees + -180.00 179.99 + 1 - -180.00 179.99 - 1 deg degrees + -180.00 179.99 + 1 @@ -6564,16 +6186,16 @@ - -18000 17999 - 10 cdeg centidegrees + -18000 17999 + 10 - -18000 17999 - 10 cdeg centidegrees + -18000 17999 + 10 @@ -6589,16 +6211,16 @@ - -18000 17999 - 10 cdeg centidegrees + -18000 17999 + 10 - -18000 17999 - 10 cdeg centidegrees + -18000 17999 + 10 @@ -6614,28 +6236,28 @@ - -18000 17999 - 10 cdeg centidegrees + -18000 17999 + 10 - -18000 17999 - 10 cdeg centidegrees + -18000 17999 + 10 - 0.0 0.2 - .005 s seconds + 0.0 0.2 + .005 - 0.0 0.2 - .005 s seconds + 0.0 0.2 + .005 @@ -6664,10 +6286,10 @@ True - 1 20 - 1 kHz kilohertz + 1 20 + 1 True @@ -6677,38 +6299,38 @@ + % + percent 0 20 1 - % - percent - 30 100 - 1 % percent + 30 100 + 1 - 0 1000 - 1 %/s percent per second + 0 1000 + 1 -1.0 1.0 - 0 10 m/s meters per second + 0 10 0.2 1.0 - 0 90 deg degrees + 0 90 @@ -6732,15 +6354,15 @@ - 0:EnableTelemetryMode, 1: DisableDJIWorkarounds, 2:EnableBTFLFonts + 0:EnableTelemetryMode - 1 60 - 1 s seconds + 1 60 + 1 0.6 1.0 @@ -6751,9 +6373,9 @@ 0.01 - 0 89 deg degrees + 0 89 @@ -6766,7 +6388,7 @@ - 0:Built-in buzzer, 1:DShot, 2:DroneCAN + 0:Built-in buzzer, 1:DShot, 2:UAVCAN @@ -6797,7 +6419,7 @@ - 0:Built-in LED, 1:Internal ToshibaLED, 2:External ToshibaLED, 3:External PCA9685, 4:Oreo LED, 5:DroneCAN, 6:NCP5623 External, 7:NCP5623 Internal, 8:NeoPixel, 9:ProfiLED, 10:Scripting, 11:DShot, 12:ProfiLED_SPI + 0:Built-in LED, 1:Internal ToshibaLED, 2:External ToshibaLED, 3:External PCA9685, 4:Oreo LED, 5:UAVCAN, 6:NCP5623 External, 7:NCP5623 Internal, 8:NeoPixel, 9:ProfiLED, 10:Scripting, 11:DShot @@ -6825,21 +6447,21 @@ - 0.1 100 - 1 m meters + 0.1 100 + 1 - 0: Reset the origin of the waypoint to the present location, 1: log Dijkstra points + 0: Reset the origin of the waypoint to the present location - 1 100 - 1 m meters + 1 100 + 1 1.1 2 @@ -6856,10 +6478,10 @@ True - 0 127 - 1 s seconds + 0 127 + 1 1 200 @@ -6874,20 +6496,20 @@ - 1 10 deg degrees + 1 10 True - 0 10 m meters + 0 10 - 0 10 m meters + 0 10 @@ -6926,7 +6548,7 @@ - 0:UseDecimalPack, 1:InvertedWindPointer, 2:InvertedAHRoll, 3:Convert feet to miles at 5280ft instead of 10000ft, 4:DisableCrosshair + 0:UseDecimalPack, 1:InvertedWindPointer, 2:InvertedAHRoll True @@ -7203,40 +6825,40 @@ 0 15 - + Disabled Enabled - + 0 29 - + 0 15 - + Disabled Enabled - + 0 29 - + 0 15 - + Disabled Enabled - + 0 29 - + 0 15 @@ -7479,16 +7101,16 @@ 0 15 - + Disabled Enabled - + 0 29 - + 0 15 @@ -7683,18 +7305,6 @@ 0 15 - - - Disabled - Enabled - - - - 0 29 - - - 0 15 - @@ -7913,40 +7523,40 @@ 0 15 - + Disabled Enabled - + 0 29 - + 0 15 - + Disabled Enabled - + 0 29 - + 0 15 - + Disabled Enabled - + 0 29 - + 0 15 @@ -8189,16 +7799,16 @@ 0 15 - + Disabled Enabled - + 0 29 - + 0 15 @@ -8393,18 +8003,6 @@ 0 15 - - - Disabled - Enabled - - - - 0 29 - - - 0 15 - @@ -8623,40 +8221,40 @@ 0 15 - + Disabled Enabled - + 0 29 - + 0 15 - + Disabled Enabled - + 0 29 - + 0 15 - + Disabled Enabled - + 0 29 - + 0 15 @@ -8899,16 +8497,16 @@ 0 15 - + Disabled Enabled - + 0 29 - + 0 15 @@ -9103,18 +8701,6 @@ 0 15 - - - Disabled - Enabled - - - - 0 29 - - - 0 15 - @@ -9333,40 +8919,40 @@ 0 15 - + Disabled Enabled - + 0 29 - + 0 15 - + Disabled Enabled - + 0 29 - + 0 15 - + Disabled Enabled - + 0 29 - + 0 15 @@ -9609,16 +9195,16 @@ 0 15 - + Disabled Enabled - + 0 29 - + 0 15 @@ -9813,18 +9399,6 @@ 0 15 - - - Disabled - Enabled - - - - 0 29 - - - 0 15 - @@ -10375,6 +9949,7 @@ None LightwareSF40c + LightWareSF40C-legacy MAVLink TeraRangerTower RangeFinder @@ -10383,7 +9958,6 @@ LightwareSF45B SITL AirSimSITL - CygbotD1 True @@ -10394,69 +9968,69 @@ - -180 180 deg degrees + -180 180 - 0 360 deg degrees + 0 360 - 0 127 deg degrees + 0 127 - 0 360 deg degrees + 0 360 - 0 127 deg degrees + 0 127 - 0 360 deg degrees + 0 360 - 0 127 deg degrees + 0 127 - 0 360 deg degrees + 0 360 - 0 127 deg degrees + 0 127 - 0 360 deg degrees + 0 360 - 0 127 deg degrees + 0 127 - 0 360 deg degrees + 0 360 - 0 127 deg degrees + 0 127 @@ -10465,28 +10039,18 @@ - 0 20 Hz hertz - - - 0 500 - m - meters - - - 0 500 - m - meters + 0 20 - 0.1 km kilometers + 0.1 @@ -10502,30 +10066,30 @@ seconds - 0:Ignore RC Receiver, 1:Ignore MAVLink Overrides, 2:Ignore Receiver Failsafe bit but allow other RC failsafes if setup, 3:FPort Pad, 4:Log RC input bytes, 5:Arming check throttle for 0 input, 6:Skip the arming check for neutral Roll/Pitch/Yaw sticks, 7:Allow Switch reverse, 8:Use passthrough for CRSF telemetry, 9:Suppress CRSF mode/rate message for ELRS systems,10:Enable multiple receiver support, 11:CRSF RSSI shows Link Quality + 0:Ignore RC Receiver, 1:Ignore MAVLink Overrides, 2:Ignore Receiver Failsafe bit but allow other RC failsafes if setup, 3:FPort Pad, 4:Log RC input bytes, 5:Arming check throttle for 0 input, 6:Skip the arming check for neutral Roll/Pitch/Yay sticks, 7:Allow Switch reverse, 8:Use passthrough for CRSF telemetry, 9:Suppress CRSF mode/rate message for ELRS systems, 10:Enable RC Protocol re-detection - 0:All,1:PPM,2:IBUS,3:SBUS,4:SBUS_NI,5:DSM,6:SUMD,7:SRXL,8:SRXL2,9:CRSF,10:ST24,11:FPORT,12:FPORT2,13:FastSBUS + 0:All,1:PPM,2:IBUS,3:SBUS,4:SBUS_NI,5:DSM,6:SUMD,7:SRXL,8:SRXL2,9:CRSF,10:ST24,11:FPORT,12:FPORT2 - 800 2200 - 1 PWM PWM in microseconds + 800 2200 + 1 - 800 2200 - 1 PWM PWM in microseconds + 800 2200 + 1 - 800 2200 - 1 PWM PWM in microseconds + 800 2200 + 1 @@ -10534,15 +10098,15 @@ - 0 200 PWM PWM in microseconds + 0 200 Do Nothing RTL - Save Trim (4.1 and lower) + Save Trim Save WP Camera Trigger Fence @@ -10557,7 +10121,7 @@ Relay3 On/Off Relay4 On/Off Proximity Avoidance - ArmDisarm (4.1 and lower) + ArmDisarm SmartRTL RC Override Enable LearnCruise @@ -10588,14 +10152,11 @@ Camera Mode Toggle GPS Disable Yaw Disable Airspeed Use - ArmDisarm (4.2 and higher) - set steering trim to current servo and RC - Torqeedo Clear Err Roll Pitch + Walking Height MainSail Flap - Walking Height Scripting1 Scripting2 Scripting3 @@ -10609,22 +10170,22 @@ - 800 2200 - 1 PWM PWM in microseconds + 800 2200 + 1 - 800 2200 - 1 PWM PWM in microseconds + 800 2200 + 1 - 800 2200 - 1 PWM PWM in microseconds + 800 2200 + 1 @@ -10633,15 +10194,15 @@ - 0 200 PWM PWM in microseconds + 0 200 Do Nothing RTL - Save Trim (4.1 and lower) + Save Trim Save WP Camera Trigger Fence @@ -10656,7 +10217,7 @@ Relay3 On/Off Relay4 On/Off Proximity Avoidance - ArmDisarm (4.1 and lower) + ArmDisarm SmartRTL RC Override Enable LearnCruise @@ -10687,14 +10248,11 @@ Camera Mode Toggle GPS Disable Yaw Disable Airspeed Use - ArmDisarm (4.2 and higher) - set steering trim to current servo and RC - Torqeedo Clear Err Roll Pitch + Walking Height MainSail Flap - Walking Height Scripting1 Scripting2 Scripting3 @@ -10708,22 +10266,22 @@ - 800 2200 - 1 PWM PWM in microseconds + 800 2200 + 1 - 800 2200 - 1 PWM PWM in microseconds + 800 2200 + 1 - 800 2200 - 1 PWM PWM in microseconds + 800 2200 + 1 @@ -10732,15 +10290,15 @@ - 0 200 PWM PWM in microseconds + 0 200 Do Nothing RTL - Save Trim (4.1 and lower) + Save Trim Save WP Camera Trigger Fence @@ -10755,7 +10313,7 @@ Relay3 On/Off Relay4 On/Off Proximity Avoidance - ArmDisarm (4.1 and lower) + ArmDisarm SmartRTL RC Override Enable LearnCruise @@ -10786,14 +10344,11 @@ Camera Mode Toggle GPS Disable Yaw Disable Airspeed Use - ArmDisarm (4.2 and higher) - set steering trim to current servo and RC - Torqeedo Clear Err Roll Pitch + Walking Height MainSail Flap - Walking Height Scripting1 Scripting2 Scripting3 @@ -10807,22 +10362,22 @@ - 800 2200 - 1 PWM PWM in microseconds + 800 2200 + 1 - 800 2200 - 1 PWM PWM in microseconds + 800 2200 + 1 - 800 2200 - 1 PWM PWM in microseconds + 800 2200 + 1 @@ -10831,15 +10386,15 @@ - 0 200 PWM PWM in microseconds + 0 200 Do Nothing RTL - Save Trim (4.1 and lower) + Save Trim Save WP Camera Trigger Fence @@ -10854,7 +10409,7 @@ Relay3 On/Off Relay4 On/Off Proximity Avoidance - ArmDisarm (4.1 and lower) + ArmDisarm SmartRTL RC Override Enable LearnCruise @@ -10885,14 +10440,11 @@ Camera Mode Toggle GPS Disable Yaw Disable Airspeed Use - ArmDisarm (4.2 and higher) - set steering trim to current servo and RC - Torqeedo Clear Err Roll Pitch + Walking Height MainSail Flap - Walking Height Scripting1 Scripting2 Scripting3 @@ -10906,22 +10458,22 @@ - 800 2200 - 1 PWM PWM in microseconds + 800 2200 + 1 - 800 2200 - 1 PWM PWM in microseconds + 800 2200 + 1 - 800 2200 - 1 PWM PWM in microseconds + 800 2200 + 1 @@ -10930,15 +10482,15 @@ - 0 200 PWM PWM in microseconds + 0 200 Do Nothing RTL - Save Trim (4.1 and lower) + Save Trim Save WP Camera Trigger Fence @@ -10953,7 +10505,7 @@ Relay3 On/Off Relay4 On/Off Proximity Avoidance - ArmDisarm (4.1 and lower) + ArmDisarm SmartRTL RC Override Enable LearnCruise @@ -10984,14 +10536,11 @@ Camera Mode Toggle GPS Disable Yaw Disable Airspeed Use - ArmDisarm (4.2 and higher) - set steering trim to current servo and RC - Torqeedo Clear Err Roll Pitch + Walking Height MainSail Flap - Walking Height Scripting1 Scripting2 Scripting3 @@ -11005,22 +10554,22 @@ - 800 2200 - 1 PWM PWM in microseconds + 800 2200 + 1 - 800 2200 - 1 PWM PWM in microseconds + 800 2200 + 1 - 800 2200 - 1 PWM PWM in microseconds + 800 2200 + 1 @@ -11029,15 +10578,15 @@ - 0 200 PWM PWM in microseconds + 0 200 Do Nothing RTL - Save Trim (4.1 and lower) + Save Trim Save WP Camera Trigger Fence @@ -11052,7 +10601,7 @@ Relay3 On/Off Relay4 On/Off Proximity Avoidance - ArmDisarm (4.1 and lower) + ArmDisarm SmartRTL RC Override Enable LearnCruise @@ -11083,14 +10632,11 @@ Camera Mode Toggle GPS Disable Yaw Disable Airspeed Use - ArmDisarm (4.2 and higher) - set steering trim to current servo and RC - Torqeedo Clear Err Roll Pitch + Walking Height MainSail Flap - Walking Height Scripting1 Scripting2 Scripting3 @@ -11104,22 +10650,22 @@ - 800 2200 - 1 PWM PWM in microseconds + 800 2200 + 1 - 800 2200 - 1 PWM PWM in microseconds + 800 2200 + 1 - 800 2200 - 1 PWM PWM in microseconds + 800 2200 + 1 @@ -11128,15 +10674,15 @@ - 0 200 PWM PWM in microseconds + 0 200 Do Nothing RTL - Save Trim (4.1 and lower) + Save Trim Save WP Camera Trigger Fence @@ -11151,7 +10697,7 @@ Relay3 On/Off Relay4 On/Off Proximity Avoidance - ArmDisarm (4.1 and lower) + ArmDisarm SmartRTL RC Override Enable LearnCruise @@ -11182,14 +10728,11 @@ Camera Mode Toggle GPS Disable Yaw Disable Airspeed Use - ArmDisarm (4.2 and higher) - set steering trim to current servo and RC - Torqeedo Clear Err Roll Pitch + Walking Height MainSail Flap - Walking Height Scripting1 Scripting2 Scripting3 @@ -11203,22 +10746,22 @@ - 800 2200 - 1 PWM PWM in microseconds + 800 2200 + 1 - 800 2200 - 1 PWM PWM in microseconds + 800 2200 + 1 - 800 2200 - 1 PWM PWM in microseconds + 800 2200 + 1 @@ -11227,15 +10770,15 @@ - 0 200 PWM PWM in microseconds + 0 200 Do Nothing RTL - Save Trim (4.1 and lower) + Save Trim Save WP Camera Trigger Fence @@ -11250,7 +10793,7 @@ Relay3 On/Off Relay4 On/Off Proximity Avoidance - ArmDisarm (4.1 and lower) + ArmDisarm SmartRTL RC Override Enable LearnCruise @@ -11281,14 +10824,11 @@ Camera Mode Toggle GPS Disable Yaw Disable Airspeed Use - ArmDisarm (4.2 and higher) - set steering trim to current servo and RC - Torqeedo Clear Err Roll Pitch + Walking Height MainSail Flap - Walking Height Scripting1 Scripting2 Scripting3 @@ -11302,22 +10842,22 @@ - 800 2200 - 1 PWM PWM in microseconds + 800 2200 + 1 - 800 2200 - 1 PWM PWM in microseconds + 800 2200 + 1 - 800 2200 - 1 PWM PWM in microseconds + 800 2200 + 1 @@ -11326,15 +10866,15 @@ - 0 200 PWM PWM in microseconds + 0 200 Do Nothing RTL - Save Trim (4.1 and lower) + Save Trim Save WP Camera Trigger Fence @@ -11349,7 +10889,7 @@ Relay3 On/Off Relay4 On/Off Proximity Avoidance - ArmDisarm (4.1 and lower) + ArmDisarm SmartRTL RC Override Enable LearnCruise @@ -11380,14 +10920,11 @@ Camera Mode Toggle GPS Disable Yaw Disable Airspeed Use - ArmDisarm (4.2 and higher) - set steering trim to current servo and RC - Torqeedo Clear Err Roll Pitch + Walking Height MainSail Flap - Walking Height Scripting1 Scripting2 Scripting3 @@ -11401,22 +10938,22 @@ - 800 2200 - 1 PWM PWM in microseconds + 800 2200 + 1 - 800 2200 - 1 PWM PWM in microseconds + 800 2200 + 1 - 800 2200 - 1 PWM PWM in microseconds + 800 2200 + 1 @@ -11425,15 +10962,15 @@ - 0 200 PWM PWM in microseconds + 0 200 Do Nothing RTL - Save Trim (4.1 and lower) + Save Trim Save WP Camera Trigger Fence @@ -11448,7 +10985,7 @@ Relay3 On/Off Relay4 On/Off Proximity Avoidance - ArmDisarm (4.1 and lower) + ArmDisarm SmartRTL RC Override Enable LearnCruise @@ -11479,14 +11016,11 @@ Camera Mode Toggle GPS Disable Yaw Disable Airspeed Use - ArmDisarm (4.2 and higher) - set steering trim to current servo and RC - Torqeedo Clear Err Roll Pitch + Walking Height MainSail Flap - Walking Height Scripting1 Scripting2 Scripting3 @@ -11500,22 +11034,22 @@ - 800 2200 - 1 PWM PWM in microseconds + 800 2200 + 1 - 800 2200 - 1 PWM PWM in microseconds + 800 2200 + 1 - 800 2200 - 1 PWM PWM in microseconds + 800 2200 + 1 @@ -11524,15 +11058,15 @@ - 0 200 PWM PWM in microseconds + 0 200 Do Nothing RTL - Save Trim (4.1 and lower) + Save Trim Save WP Camera Trigger Fence @@ -11547,7 +11081,7 @@ Relay3 On/Off Relay4 On/Off Proximity Avoidance - ArmDisarm (4.1 and lower) + ArmDisarm SmartRTL RC Override Enable LearnCruise @@ -11578,14 +11112,11 @@ Camera Mode Toggle GPS Disable Yaw Disable Airspeed Use - ArmDisarm (4.2 and higher) - set steering trim to current servo and RC - Torqeedo Clear Err Roll Pitch + Walking Height MainSail Flap - Walking Height Scripting1 Scripting2 Scripting3 @@ -11599,22 +11130,22 @@ - 800 2200 - 1 PWM PWM in microseconds + 800 2200 + 1 - 800 2200 - 1 PWM PWM in microseconds + 800 2200 + 1 - 800 2200 - 1 PWM PWM in microseconds + 800 2200 + 1 @@ -11623,15 +11154,15 @@ - 0 200 PWM PWM in microseconds + 0 200 Do Nothing RTL - Save Trim (4.1 and lower) + Save Trim Save WP Camera Trigger Fence @@ -11646,7 +11177,7 @@ Relay3 On/Off Relay4 On/Off Proximity Avoidance - ArmDisarm (4.1 and lower) + ArmDisarm SmartRTL RC Override Enable LearnCruise @@ -11677,14 +11208,11 @@ Camera Mode Toggle GPS Disable Yaw Disable Airspeed Use - ArmDisarm (4.2 and higher) - set steering trim to current servo and RC - Torqeedo Clear Err Roll Pitch + Walking Height MainSail Flap - Walking Height Scripting1 Scripting2 Scripting3 @@ -11698,22 +11226,22 @@ - 800 2200 - 1 PWM PWM in microseconds + 800 2200 + 1 - 800 2200 - 1 PWM PWM in microseconds + 800 2200 + 1 - 800 2200 - 1 PWM PWM in microseconds + 800 2200 + 1 @@ -11722,15 +11250,15 @@ - 0 200 PWM PWM in microseconds + 0 200 Do Nothing RTL - Save Trim (4.1 and lower) + Save Trim Save WP Camera Trigger Fence @@ -11745,7 +11273,7 @@ Relay3 On/Off Relay4 On/Off Proximity Avoidance - ArmDisarm (4.1 and lower) + ArmDisarm SmartRTL RC Override Enable LearnCruise @@ -11776,14 +11304,11 @@ Camera Mode Toggle GPS Disable Yaw Disable Airspeed Use - ArmDisarm (4.2 and higher) - set steering trim to current servo and RC - Torqeedo Clear Err Roll Pitch + Walking Height MainSail Flap - Walking Height Scripting1 Scripting2 Scripting3 @@ -11797,22 +11322,22 @@ - 800 2200 - 1 PWM PWM in microseconds + 800 2200 + 1 - 800 2200 - 1 PWM PWM in microseconds + 800 2200 + 1 - 800 2200 - 1 PWM PWM in microseconds + 800 2200 + 1 @@ -11821,15 +11346,15 @@ - 0 200 PWM PWM in microseconds + 0 200 Do Nothing RTL - Save Trim (4.1 and lower) + Save Trim Save WP Camera Trigger Fence @@ -11844,7 +11369,7 @@ Relay3 On/Off Relay4 On/Off Proximity Avoidance - ArmDisarm (4.1 and lower) + ArmDisarm SmartRTL RC Override Enable LearnCruise @@ -11875,14 +11400,11 @@ Camera Mode Toggle GPS Disable Yaw Disable Airspeed Use - ArmDisarm (4.2 and higher) - set steering trim to current servo and RC - Torqeedo Clear Err Roll Pitch + Walking Height MainSail Flap - Walking Height Scripting1 Scripting2 Scripting3 @@ -11896,22 +11418,22 @@ - 800 2200 - 1 PWM PWM in microseconds + 800 2200 + 1 - 800 2200 - 1 PWM PWM in microseconds + 800 2200 + 1 - 800 2200 - 1 PWM PWM in microseconds + 800 2200 + 1 @@ -11920,15 +11442,15 @@ - 0 200 PWM PWM in microseconds + 0 200 Do Nothing RTL - Save Trim (4.1 and lower) + Save Trim Save WP Camera Trigger Fence @@ -11943,7 +11465,7 @@ Relay3 On/Off Relay4 On/Off Proximity Avoidance - ArmDisarm (4.1 and lower) + ArmDisarm SmartRTL RC Override Enable LearnCruise @@ -11974,14 +11496,11 @@ Camera Mode Toggle GPS Disable Yaw Disable Airspeed Use - ArmDisarm (4.2 and higher) - set steering trim to current servo and RC - Torqeedo Clear Err Roll Pitch + Walking Height MainSail Flap - Walking Height Scripting1 Scripting2 Scripting3 @@ -11995,22 +11514,22 @@ - 800 2200 - 1 PWM PWM in microseconds + 800 2200 + 1 - 800 2200 - 1 PWM PWM in microseconds + 800 2200 + 1 - 800 2200 - 1 PWM PWM in microseconds + 800 2200 + 1 @@ -12019,15 +11538,15 @@ - 0 200 PWM PWM in microseconds + 0 200 Do Nothing RTL - Save Trim (4.1 and lower) + Save Trim Save WP Camera Trigger Fence @@ -12042,7 +11561,7 @@ Relay3 On/Off Relay4 On/Off Proximity Avoidance - ArmDisarm (4.1 and lower) + ArmDisarm SmartRTL RC Override Enable LearnCruise @@ -12073,14 +11592,11 @@ Camera Mode Toggle GPS Disable Yaw Disable Airspeed Use - ArmDisarm (4.2 and higher) - set steering trim to current servo and RC - Torqeedo Clear Err Roll Pitch + Walking Height MainSail Flap - Walking Height Scripting1 Scripting2 Scripting3 @@ -12139,14 +11655,6 @@ BB Blue GP0 pin 6 BB Blue GP0 pin 5 BBBMini Pin P8.17 - MainOut1 - MainOut2 - MainOut3 - MainOut4 - MainOut5 - MainOut6 - MainOut7 - MainOut8 @@ -12163,14 +11671,6 @@ BB Blue GP0 pin 6 BB Blue GP0 pin 5 BBBMini Pin P8.18 - MainOut1 - MainOut2 - MainOut3 - MainOut4 - MainOut5 - MainOut6 - MainOut7 - MainOut8 @@ -12187,14 +11687,6 @@ BB Blue GP0 pin 6 BB Blue GP0 pin 5 BBBMini Pin P8.19 - MainOut1 - MainOut2 - MainOut3 - MainOut4 - MainOut5 - MainOut6 - MainOut7 - MainOut8 @@ -12211,14 +11703,6 @@ BB Blue GP0 pin 6 BB Blue GP0 pin 5 BBBMini Pin P8.34 - MainOut1 - MainOut2 - MainOut3 - MainOut4 - MainOut5 - MainOut6 - MainOut7 - MainOut8 @@ -12242,14 +11726,6 @@ BB Blue GP0 pin 6 BB Blue GP0 pin 5 BBBMini Pin P8.13 - MainOut1 - MainOut2 - MainOut3 - MainOut4 - MainOut5 - MainOut6 - MainOut7 - MainOut8 @@ -12266,19 +11742,11 @@ BB Blue GP0 pin 6 BB Blue GP0 pin 5 BBBMini Pin P8.14 - MainOut1 - MainOut2 - MainOut3 - MainOut4 - MainOut5 - MainOut6 - MainOut7 - MainOut8 - + None Analog @@ -12290,7 +11758,7 @@ LightWareSerial Bebop MAVLink - USD1_Serial + uLanding LeddarOne MaxbotixSerial TeraRangerI2C @@ -12303,7 +11771,7 @@ LidarLightV3HP PWM BlueRoboticsPing - DroneCAN + UAVCAN BenewakeTFminiPlus-I2C LanbaoPSK-CM8JL65-CC5 BenewakeTF03 @@ -12313,35 +11781,31 @@ GYUS42v2 MSP USD1_CAN - Benewake_CAN SITL - + Not Used - Pixracer - Pixhawk ADC4 - Pixhawk ADC3 - Pixhawk ADC6/Pixhawk2 ADC - AUX1 - AUX2 - AUX3 - AUX4 - AUX5 - AUX6 - Pixhawk SBUS + PX4-airspeed port + Pixhawk-airspeed port + Pixhawk AUXOUT1 + Pixhawk AUXOUT2 + Pixhawk AUXOUT3 + Pixhawk AUXOUT4 + Pixhawk AUXOUT5 + Pixhawk AUXOUT6 - - 0.001 + m/V meters per volt + 0.001 - 0.001 V volt + 0.001 @@ -12351,24 +11815,24 @@ - 1 cm centimeters + 1 - 1 cm centimeters + 1 Not Used - AUX1 - AUX2 - AUX3 - AUX4 - AUX5 - AUX6 + Pixhawk AUXOUT1 + Pixhawk AUXOUT2 + Pixhawk AUXOUT3 + Pixhawk AUXOUT4 + Pixhawk AUXOUT5 + Pixhawk AUXOUT6 PX4 FMU Relay1 PX4 FMU Relay2 PX4IO Relay1 @@ -12384,37 +11848,37 @@ - 0 32767 m meters + 0 32767 - 5 127 - 1 cm centimeters + 5 127 + 1 - + 0 127 1 - -5 5 - 0.01 m meters + -5 5 + 0.01 - -5 5 - 0.01 m meters + -5 5 + 0.01 - -5 5 - 0.01 m meters + -5 5 + 0.01 @@ -12451,15 +11915,9 @@ High Speed - - 0 65535 - - - 0 65535 - - + None Analog @@ -12471,7 +11929,7 @@ LightWareSerial Bebop MAVLink - USD1_Serial + uLanding LeddarOne MaxbotixSerial TeraRangerI2C @@ -12484,7 +11942,7 @@ LidarLightV3HP PWM BlueRoboticsPing - DroneCAN + UAVCAN BenewakeTFminiPlus-I2C LanbaoPSK-CM8JL65-CC5 BenewakeTF03 @@ -12494,35 +11952,31 @@ GYUS42v2 MSP USD1_CAN - Benewake_CAN SITL - + Not Used - Pixracer - Pixhawk ADC4 - Pixhawk ADC3 - Pixhawk ADC6/Pixhawk2 ADC - AUX1 - AUX2 - AUX3 - AUX4 - AUX5 - AUX6 - Pixhawk SBUS + PX4-airspeed port + Pixhawk-airspeed port + Pixhawk AUXOUT1 + Pixhawk AUXOUT2 + Pixhawk AUXOUT3 + Pixhawk AUXOUT4 + Pixhawk AUXOUT5 + Pixhawk AUXOUT6 - - 0.001 + m/V meters per volt + 0.001 - 0.001 V volt + 0.001 @@ -12532,24 +11986,24 @@ - 1 cm centimeters + 1 - 1 cm centimeters + 1 Not Used - AUX1 - AUX2 - AUX3 - AUX4 - AUX5 - AUX6 + Pixhawk AUXOUT1 + Pixhawk AUXOUT2 + Pixhawk AUXOUT3 + Pixhawk AUXOUT4 + Pixhawk AUXOUT5 + Pixhawk AUXOUT6 PX4 FMU Relay1 PX4 FMU Relay2 PX4IO Relay1 @@ -12565,37 +12019,37 @@ - 0 32767 m meters + 0 32767 - 5 127 - 1 cm centimeters + 5 127 + 1 - + 0 127 1 - -5 5 - 0.01 m meters + -5 5 + 0.01 - -5 5 - 0.01 m meters + -5 5 + 0.01 - -5 5 - 0.01 m meters + -5 5 + 0.01 @@ -12632,15 +12086,9 @@ High Speed - - 0 65535 - - - 0 65535 - - + None Analog @@ -12652,7 +12100,7 @@ LightWareSerial Bebop MAVLink - USD1_Serial + uLanding LeddarOne MaxbotixSerial TeraRangerI2C @@ -12665,7 +12113,7 @@ LidarLightV3HP PWM BlueRoboticsPing - DroneCAN + UAVCAN BenewakeTFminiPlus-I2C LanbaoPSK-CM8JL65-CC5 BenewakeTF03 @@ -12675,35 +12123,31 @@ GYUS42v2 MSP USD1_CAN - Benewake_CAN SITL - + Not Used - Pixracer - Pixhawk ADC4 - Pixhawk ADC3 - Pixhawk ADC6/Pixhawk2 ADC - AUX1 - AUX2 - AUX3 - AUX4 - AUX5 - AUX6 - Pixhawk SBUS + PX4-airspeed port + Pixhawk-airspeed port + Pixhawk AUXOUT1 + Pixhawk AUXOUT2 + Pixhawk AUXOUT3 + Pixhawk AUXOUT4 + Pixhawk AUXOUT5 + Pixhawk AUXOUT6 - - 0.001 + m/V meters per volt + 0.001 - 0.001 V volt + 0.001 @@ -12713,24 +12157,24 @@ - 1 cm centimeters + 1 - 1 cm centimeters + 1 Not Used - AUX1 - AUX2 - AUX3 - AUX4 - AUX5 - AUX6 + Pixhawk AUXOUT1 + Pixhawk AUXOUT2 + Pixhawk AUXOUT3 + Pixhawk AUXOUT4 + Pixhawk AUXOUT5 + Pixhawk AUXOUT6 PX4 FMU Relay1 PX4 FMU Relay2 PX4IO Relay1 @@ -12746,37 +12190,37 @@ - 0 32767 m meters + 0 32767 - 5 127 - 1 cm centimeters + 5 127 + 1 - + 0 127 1 - -5 5 - 0.01 m meters + -5 5 + 0.01 - -5 5 - 0.01 m meters + -5 5 + 0.01 - -5 5 - 0.01 m meters + -5 5 + 0.01 @@ -12813,15 +12257,9 @@ High Speed - - 0 65535 - - - 0 65535 - - + None Analog @@ -12833,7 +12271,7 @@ LightWareSerial Bebop MAVLink - USD1_Serial + uLanding LeddarOne MaxbotixSerial TeraRangerI2C @@ -12846,7 +12284,7 @@ LidarLightV3HP PWM BlueRoboticsPing - DroneCAN + UAVCAN BenewakeTFminiPlus-I2C LanbaoPSK-CM8JL65-CC5 BenewakeTF03 @@ -12856,35 +12294,31 @@ GYUS42v2 MSP USD1_CAN - Benewake_CAN SITL - + Not Used - Pixracer - Pixhawk ADC4 - Pixhawk ADC3 - Pixhawk ADC6/Pixhawk2 ADC - AUX1 - AUX2 - AUX3 - AUX4 - AUX5 - AUX6 - Pixhawk SBUS + PX4-airspeed port + Pixhawk-airspeed port + Pixhawk AUXOUT1 + Pixhawk AUXOUT2 + Pixhawk AUXOUT3 + Pixhawk AUXOUT4 + Pixhawk AUXOUT5 + Pixhawk AUXOUT6 - - 0.001 + m/V meters per volt + 0.001 - 0.001 V volt + 0.001 @@ -12894,24 +12328,24 @@ - 1 cm centimeters + 1 - 1 cm centimeters + 1 Not Used - AUX1 - AUX2 - AUX3 - AUX4 - AUX5 - AUX6 + Pixhawk AUXOUT1 + Pixhawk AUXOUT2 + Pixhawk AUXOUT3 + Pixhawk AUXOUT4 + Pixhawk AUXOUT5 + Pixhawk AUXOUT6 PX4 FMU Relay1 PX4 FMU Relay2 PX4IO Relay1 @@ -12927,37 +12361,37 @@ - 0 32767 m meters + 0 32767 - 5 127 - 1 cm centimeters + 5 127 + 1 - + 0 127 1 - -5 5 - 0.01 m meters + -5 5 + 0.01 - -5 5 - 0.01 m meters + -5 5 + 0.01 - -5 5 - 0.01 m meters + -5 5 + 0.01 @@ -12994,15 +12428,9 @@ High Speed - - 0 65535 - - - 0 65535 - - + None Analog @@ -13014,7 +12442,7 @@ LightWareSerial Bebop MAVLink - USD1_Serial + uLanding LeddarOne MaxbotixSerial TeraRangerI2C @@ -13027,7 +12455,7 @@ LidarLightV3HP PWM BlueRoboticsPing - DroneCAN + UAVCAN BenewakeTFminiPlus-I2C LanbaoPSK-CM8JL65-CC5 BenewakeTF03 @@ -13037,35 +12465,31 @@ GYUS42v2 MSP USD1_CAN - Benewake_CAN SITL - + Not Used - Pixracer - Pixhawk ADC4 - Pixhawk ADC3 - Pixhawk ADC6/Pixhawk2 ADC - AUX1 - AUX2 - AUX3 - AUX4 - AUX5 - AUX6 - Pixhawk SBUS + PX4-airspeed port + Pixhawk-airspeed port + Pixhawk AUXOUT1 + Pixhawk AUXOUT2 + Pixhawk AUXOUT3 + Pixhawk AUXOUT4 + Pixhawk AUXOUT5 + Pixhawk AUXOUT6 - - 0.001 + m/V meters per volt + 0.001 - 0.001 V volt + 0.001 @@ -13075,24 +12499,24 @@ - 1 cm centimeters + 1 - 1 cm centimeters + 1 Not Used - AUX1 - AUX2 - AUX3 - AUX4 - AUX5 - AUX6 + Pixhawk AUXOUT1 + Pixhawk AUXOUT2 + Pixhawk AUXOUT3 + Pixhawk AUXOUT4 + Pixhawk AUXOUT5 + Pixhawk AUXOUT6 PX4 FMU Relay1 PX4 FMU Relay2 PX4IO Relay1 @@ -13108,37 +12532,37 @@ - 0 32767 m meters + 0 32767 - 5 127 - 1 cm centimeters + 5 127 + 1 - + 0 127 1 - -5 5 - 0.01 m meters + -5 5 + 0.01 - -5 5 - 0.01 m meters + -5 5 + 0.01 - -5 5 - 0.01 m meters + -5 5 + 0.01 @@ -13175,15 +12599,9 @@ High Speed - - 0 65535 - - - 0 65535 - - + None Analog @@ -13195,7 +12613,7 @@ LightWareSerial Bebop MAVLink - USD1_Serial + uLanding LeddarOne MaxbotixSerial TeraRangerI2C @@ -13208,7 +12626,7 @@ LidarLightV3HP PWM BlueRoboticsPing - DroneCAN + UAVCAN BenewakeTFminiPlus-I2C LanbaoPSK-CM8JL65-CC5 BenewakeTF03 @@ -13218,35 +12636,31 @@ GYUS42v2 MSP USD1_CAN - Benewake_CAN SITL - + Not Used - Pixracer - Pixhawk ADC4 - Pixhawk ADC3 - Pixhawk ADC6/Pixhawk2 ADC - AUX1 - AUX2 - AUX3 - AUX4 - AUX5 - AUX6 - Pixhawk SBUS + PX4-airspeed port + Pixhawk-airspeed port + Pixhawk AUXOUT1 + Pixhawk AUXOUT2 + Pixhawk AUXOUT3 + Pixhawk AUXOUT4 + Pixhawk AUXOUT5 + Pixhawk AUXOUT6 - - 0.001 + m/V meters per volt + 0.001 - 0.001 V volt + 0.001 @@ -13256,24 +12670,24 @@ - 1 cm centimeters + 1 - 1 cm centimeters + 1 Not Used - AUX1 - AUX2 - AUX3 - AUX4 - AUX5 - AUX6 + Pixhawk AUXOUT1 + Pixhawk AUXOUT2 + Pixhawk AUXOUT3 + Pixhawk AUXOUT4 + Pixhawk AUXOUT5 + Pixhawk AUXOUT6 PX4 FMU Relay1 PX4 FMU Relay2 PX4IO Relay1 @@ -13289,37 +12703,37 @@ - 0 32767 m meters + 0 32767 - 5 127 - 1 cm centimeters + 5 127 + 1 - + 0 127 1 - -5 5 - 0.01 m meters + -5 5 + 0.01 - -5 5 - 0.01 m meters + -5 5 + 0.01 - -5 5 - 0.01 m meters + -5 5 + 0.01 @@ -13356,15 +12770,9 @@ High Speed - - 0 65535 - - - 0 65535 - - + None Analog @@ -13376,7 +12784,7 @@ LightWareSerial Bebop MAVLink - USD1_Serial + uLanding LeddarOne MaxbotixSerial TeraRangerI2C @@ -13389,7 +12797,7 @@ LidarLightV3HP PWM BlueRoboticsPing - DroneCAN + UAVCAN BenewakeTFminiPlus-I2C LanbaoPSK-CM8JL65-CC5 BenewakeTF03 @@ -13399,35 +12807,31 @@ GYUS42v2 MSP USD1_CAN - Benewake_CAN SITL - + Not Used - Pixracer - Pixhawk ADC4 - Pixhawk ADC3 - Pixhawk ADC6/Pixhawk2 ADC - AUX1 - AUX2 - AUX3 - AUX4 - AUX5 - AUX6 - Pixhawk SBUS + PX4-airspeed port + Pixhawk-airspeed port + Pixhawk AUXOUT1 + Pixhawk AUXOUT2 + Pixhawk AUXOUT3 + Pixhawk AUXOUT4 + Pixhawk AUXOUT5 + Pixhawk AUXOUT6 - - 0.001 + m/V meters per volt + 0.001 - 0.001 V volt + 0.001 @@ -13437,24 +12841,24 @@ - 1 cm centimeters + 1 - 1 cm centimeters + 1 Not Used - AUX1 - AUX2 - AUX3 - AUX4 - AUX5 - AUX6 + Pixhawk AUXOUT1 + Pixhawk AUXOUT2 + Pixhawk AUXOUT3 + Pixhawk AUXOUT4 + Pixhawk AUXOUT5 + Pixhawk AUXOUT6 PX4 FMU Relay1 PX4 FMU Relay2 PX4IO Relay1 @@ -13470,37 +12874,37 @@ - 0 32767 m meters + 0 32767 - 5 127 - 1 cm centimeters + 5 127 + 1 - + 0 127 1 - -5 5 - 0.01 m meters + -5 5 + 0.01 - -5 5 - 0.01 m meters + -5 5 + 0.01 - -5 5 - 0.01 m meters + -5 5 + 0.01 @@ -13537,15 +12941,9 @@ High Speed - - 0 65535 - - - 0 65535 - - + None Analog @@ -13557,7 +12955,7 @@ LightWareSerial Bebop MAVLink - USD1_Serial + uLanding LeddarOne MaxbotixSerial TeraRangerI2C @@ -13570,7 +12968,7 @@ LidarLightV3HP PWM BlueRoboticsPing - DroneCAN + UAVCAN BenewakeTFminiPlus-I2C LanbaoPSK-CM8JL65-CC5 BenewakeTF03 @@ -13580,35 +12978,31 @@ GYUS42v2 MSP USD1_CAN - Benewake_CAN SITL - + Not Used - Pixracer - Pixhawk ADC4 - Pixhawk ADC3 - Pixhawk ADC6/Pixhawk2 ADC - AUX1 - AUX2 - AUX3 - AUX4 - AUX5 - AUX6 - Pixhawk SBUS + PX4-airspeed port + Pixhawk-airspeed port + Pixhawk AUXOUT1 + Pixhawk AUXOUT2 + Pixhawk AUXOUT3 + Pixhawk AUXOUT4 + Pixhawk AUXOUT5 + Pixhawk AUXOUT6 - - 0.001 + m/V meters per volt + 0.001 - 0.001 V volt + 0.001 @@ -13618,24 +13012,24 @@ - 1 cm centimeters + 1 - 1 cm centimeters + 1 Not Used - AUX1 - AUX2 - AUX3 - AUX4 - AUX5 - AUX6 + Pixhawk AUXOUT1 + Pixhawk AUXOUT2 + Pixhawk AUXOUT3 + Pixhawk AUXOUT4 + Pixhawk AUXOUT5 + Pixhawk AUXOUT6 PX4 FMU Relay1 PX4 FMU Relay2 PX4IO Relay1 @@ -13651,37 +13045,37 @@ - 0 32767 m meters + 0 32767 - 5 127 - 1 cm centimeters + 5 127 + 1 - + 0 127 1 - -5 5 - 0.01 m meters + -5 5 + 0.01 - -5 5 - 0.01 m meters + -5 5 + 0.01 - -5 5 - 0.01 m meters + -5 5 + 0.01 @@ -13718,15 +13112,9 @@ High Speed - - 0 65535 - - - 0 65535 - - + None Analog @@ -13738,7 +13126,7 @@ LightWareSerial Bebop MAVLink - USD1_Serial + uLanding LeddarOne MaxbotixSerial TeraRangerI2C @@ -13751,7 +13139,7 @@ LidarLightV3HP PWM BlueRoboticsPing - DroneCAN + UAVCAN BenewakeTFminiPlus-I2C LanbaoPSK-CM8JL65-CC5 BenewakeTF03 @@ -13761,35 +13149,31 @@ GYUS42v2 MSP USD1_CAN - Benewake_CAN SITL - + Not Used - Pixracer - Pixhawk ADC4 - Pixhawk ADC3 - Pixhawk ADC6/Pixhawk2 ADC - AUX1 - AUX2 - AUX3 - AUX4 - AUX5 - AUX6 - Pixhawk SBUS + PX4-airspeed port + Pixhawk-airspeed port + Pixhawk AUXOUT1 + Pixhawk AUXOUT2 + Pixhawk AUXOUT3 + Pixhawk AUXOUT4 + Pixhawk AUXOUT5 + Pixhawk AUXOUT6 - - 0.001 + m/V meters per volt + 0.001 - 0.001 V volt + 0.001 @@ -13799,24 +13183,24 @@ - 1 cm centimeters + 1 - 1 cm centimeters + 1 Not Used - AUX1 - AUX2 - AUX3 - AUX4 - AUX5 - AUX6 + Pixhawk AUXOUT1 + Pixhawk AUXOUT2 + Pixhawk AUXOUT3 + Pixhawk AUXOUT4 + Pixhawk AUXOUT5 + Pixhawk AUXOUT6 PX4 FMU Relay1 PX4 FMU Relay2 PX4IO Relay1 @@ -13832,37 +13216,37 @@ - 0 32767 m meters + 0 32767 - 5 127 - 1 cm centimeters + 5 127 + 1 - + 0 127 1 - -5 5 - 0.01 m meters + -5 5 + 0.01 - -5 5 - 0.01 m meters + -5 5 + 0.01 - -5 5 - 0.01 m meters + -5 5 + 0.01 @@ -13899,15 +13283,9 @@ High Speed - - 0 65535 - - - 0 65535 - - + None Analog @@ -13919,7 +13297,7 @@ LightWareSerial Bebop MAVLink - USD1_Serial + uLanding LeddarOne MaxbotixSerial TeraRangerI2C @@ -13932,7 +13310,7 @@ LidarLightV3HP PWM BlueRoboticsPing - DroneCAN + UAVCAN BenewakeTFminiPlus-I2C LanbaoPSK-CM8JL65-CC5 BenewakeTF03 @@ -13942,35 +13320,31 @@ GYUS42v2 MSP USD1_CAN - Benewake_CAN SITL - + Not Used - Pixracer - Pixhawk ADC4 - Pixhawk ADC3 - Pixhawk ADC6/Pixhawk2 ADC - AUX1 - AUX2 - AUX3 - AUX4 - AUX5 - AUX6 - Pixhawk SBUS + PX4-airspeed port + Pixhawk-airspeed port + Pixhawk AUXOUT1 + Pixhawk AUXOUT2 + Pixhawk AUXOUT3 + Pixhawk AUXOUT4 + Pixhawk AUXOUT5 + Pixhawk AUXOUT6 - - 0.001 + m/V meters per volt + 0.001 - 0.001 V volt + 0.001 @@ -13980,24 +13354,24 @@ - 1 cm centimeters + 1 - 1 cm centimeters + 1 Not Used - AUX1 - AUX2 - AUX3 - AUX4 - AUX5 - AUX6 + Pixhawk AUXOUT1 + Pixhawk AUXOUT2 + Pixhawk AUXOUT3 + Pixhawk AUXOUT4 + Pixhawk AUXOUT5 + Pixhawk AUXOUT6 PX4 FMU Relay1 PX4 FMU Relay2 PX4IO Relay1 @@ -14013,37 +13387,37 @@ - 0 32767 m meters + 0 32767 - 5 127 - 1 cm centimeters + 5 127 + 1 - + 0 127 1 - -5 5 - 0.01 m meters + -5 5 + 0.01 - -5 5 - 0.01 m meters + -5 5 + 0.01 - -5 5 - 0.01 m meters + -5 5 + 0.01 @@ -14080,88 +13454,63 @@ High Speed - - 0 65535 - - - 0 65535 - - - + + None - Not Used + PWM AUXPIN EFI Harmonic Notch - ESC Telemetry Motors Bitmask - + 0.001 - + 1 - + 1 - + 0.1 - + Disabled - AUX1 - AUX2 - AUX3 - AUX4 - AUX5 - AUX6 + PixhawkAUX1 + PixhawkAUX2 + PixhawkAUX3 + PixhawkAUX4 + PixhawkAUX5 + PixhawkAUX6 - - 0:Channel1,1:Channel2,2:Channel3,3:Channel4,4:Channel5,5:Channel6,6:Channel7,7:Channel8,8:Channel9,9:Channel10,10:Channel11,11:Channel12,12:Channel13,13:Channel14,14:Channel15,15:Channel16 - - - - + None - Not Used + PWM AUXPIN EFI Harmonic Notch - ESC Telemetry Motors Bitmask - + 0.001 - - 1 - - - 1 - - - 0.1 - - + Disabled - AUX1 - AUX2 - AUX3 - AUX4 - AUX5 - AUX6 + PixhawkAUX1 + PixhawkAUX2 + PixhawkAUX3 + PixhawkAUX4 + PixhawkAUX5 + PixhawkAUX6 - - 0:Channel1,1:Channel2,2:Channel3,3:Channel4,4:Channel5,5:Channel6,6:Channel7,7:Channel8,8:Channel9,9:Channel10,10:Channel11,11:Channel12,12:Channel13,13:Channel14,14:Channel15,15:Channel16 - @@ -14181,39 +13530,39 @@ Pixhawk ADC4 Pixhawk ADC3 Pixhawk ADC6/Pixhawk2 ADC - AUX1 - AUX2 - AUX3 - AUX4 - AUX5 - AUX6 + PixhawkAUX1 + PixhawkAUX2 + PixhawkAUX3 + PixhawkAUX4 + PixhawkAUX5 + PixhawkAUX6 Pixhawk SBUS - - 0 5.0 - 0.01 + V volt + 0.01 + 0 5.0 - - 0 5.0 - 0.01 + V volt + 0.01 + 0 5.0 0 16 - 0 2000 PWM PWM in microseconds + 0 2000 - 0 2000 PWM PWM in microseconds + 0 2000 @@ -14225,52 +13574,52 @@ True - 0 90 - 1 deg degrees + 0 90 + 1 - 0 90 - 1 deg degrees + 0 90 + 1 - 0 90 - 1 deg degrees + 0 90 + 1 - 0 90 - 1 deg degrees + 0 90 + 1 - 0 90 - 1 deg degrees + 0 90 + 1 - 0 5 - 0.1 m/s meters per second + 0 5 + 0.1 + m + meters 5 25 1 - m - meters - 0 20 - 1 m meters + 0 20 + 1 @@ -14313,9 +13662,8 @@ 1024 True - - 0:No Scripts to run message if all scripts have stopped, 1:Runtime messages for memory usage and execution time, 2:Suppress logging scripts to dataflash, 3:log runtime memory usage and execution time - + + @@ -14323,10 +13671,6 @@ - - - - 0:ROMFS, 1:APM/scripts @@ -14389,7 +13733,7 @@ RunCam HottTelem Scripting - Crossfire VTX + Crossfire Generator Winch MSP @@ -14399,10 +13743,6 @@ AHRS SmartAudio FETtecOneWire - Torqeedo - AIS - CoDevESC - DisplayPort True @@ -14454,7 +13794,7 @@ RunCam HottTelem Scripting - Crossfire VTX + Crossfire Generator Winch MSP @@ -14464,10 +13804,6 @@ AHRS SmartAudio FETtecOneWire - Torqeedo - AIS - CoDevESC - DisplayPort True @@ -14519,7 +13855,7 @@ RunCam HottTelem Scripting - Crossfire VTX + Crossfire Generator Winch MSP @@ -14529,10 +13865,6 @@ AHRS SmartAudio FETtecOneWire - Torqeedo - AIS - CoDevESC - DisplayPort True @@ -14584,7 +13916,7 @@ RunCam HottTelem Scripting - Crossfire VTX + Crossfire Generator Winch MSP @@ -14594,10 +13926,6 @@ AHRS SmartAudio FETtecOneWire - Torqeedo - AIS - CoDevESC - DisplayPort True @@ -14649,7 +13977,7 @@ RunCam HottTelem Scripting - Crossfire VTX + Crossfire Generator Winch MSP @@ -14659,10 +13987,6 @@ AHRS SmartAudio FETtecOneWire - Torqeedo - AIS - CoDevESC - DisplayPort True @@ -14714,7 +14038,7 @@ RunCam HottTelem Scripting - Crossfire VTX + Crossfire Generator Winch MSP @@ -14724,10 +14048,6 @@ AHRS SmartAudio FETtecOneWire - Torqeedo - AIS - CoDevESC - DisplayPort True @@ -14751,27 +14071,27 @@ - 0:InvertRX, 1:InvertTX, 2:HalfDuplex, 3:Swap, 4: RX_PullDown, 5: RX_PullUp, 6: TX_PullDown, 7: TX_PullUp, 8: RX_NoDMA, 9: TX_NoDMA, 10: Don't forward mavlink to/from, 11: DisableFIFO, 12: Ignore Streamrate + 0:InvertRX, 1:InvertTX, 2:HalfDuplex, 3:Swap, 4: RX_PullDown, 5: RX_PullUp, 6: TX_PullDown, 7: TX_PullUp, 8: RX_NoDMA, 9: TX_NoDMA, 10: Don't forward mavlink to/from, 11: DisableFIFO True - 0:InvertRX, 1:InvertTX, 2:HalfDuplex, 3:Swap, 4: RX_PullDown, 5: RX_PullUp, 6: TX_PullDown, 7: TX_PullUp, 8: RX_NoDMA, 9: TX_NoDMA, 10: Don't forward mavlink to/from, 11: DisableFIFO, 12: Ignore Streamrate + 0:InvertRX, 1:InvertTX, 2:HalfDuplex, 3:Swap, 4: RX_PullDown, 5: RX_PullUp, 6: TX_PullDown, 7: TX_PullUp, 8: RX_NoDMA, 9: TX_NoDMA, 10: Don't forward mavlink to/from, 11: DisableFIFO True - 0:InvertRX, 1:InvertTX, 2:HalfDuplex, 3:Swap, 4: RX_PullDown, 5: RX_PullUp, 6: TX_PullDown, 7: TX_PullUp, 8: RX_NoDMA, 9: TX_NoDMA, 10: Don't forward mavlink to/from, 11: DisableFIFO, 12: Ignore Streamrate + 0:InvertRX, 1:InvertTX, 2:HalfDuplex, 3:Swap, 4: RX_PullDown, 5: RX_PullUp, 6: TX_PullDown, 7: TX_PullUp, 8: RX_NoDMA, 9: TX_NoDMA, 10: Don't forward mavlink to/from, 11: DisableFIFO True - 0:InvertRX, 1:InvertTX, 2:HalfDuplex, 3:Swap, 4: RX_PullDown, 5: RX_PullUp, 6: TX_PullDown, 7: TX_PullUp, 8: RX_NoDMA, 9: TX_NoDMA, 10: Don't forward mavlink to/from, 11: DisableFIFO, 12: Ignore Streamrate + 0:InvertRX, 1:InvertTX, 2:HalfDuplex, 3:Swap, 4: RX_PullDown, 5: RX_PullUp, 6: TX_PullDown, 7: TX_PullUp, 8: RX_NoDMA, 9: TX_NoDMA, 10: Don't forward mavlink to/from, 11: DisableFIFO True - 0:InvertRX, 1:InvertTX, 2:HalfDuplex, 3:Swap, 4: RX_PullDown, 5: RX_PullUp, 6: TX_PullDown, 7: TX_PullUp, 8: RX_NoDMA, 9: TX_NoDMA, 10: Don't forward mavlink to/from, 11: DisableFIFO, 12: Ignore Streamrate + 0:InvertRX, 1:InvertTX, 2:HalfDuplex, 3:Swap, 4: RX_PullDown, 5: RX_PullUp, 6: TX_PullDown, 7: TX_PullUp, 8: RX_NoDMA, 9: TX_NoDMA, 10: Don't forward mavlink to/from, 11: DisableFIFO True - 0:InvertRX, 1:InvertTX, 2:HalfDuplex, 3:Swap, 4: RX_PullDown, 5: RX_PullUp, 6: TX_PullDown, 7: TX_PullUp, 8: RX_NoDMA, 9: TX_NoDMA, 10: Don't forward mavlink to/from, 11: DisableFIFO, 12: Ignore Streamrate + 0:InvertRX, 1:InvertTX, 2:HalfDuplex, 3:Swap, 4: RX_PullDown, 5: RX_PullUp, 6: TX_PullDown, 7: TX_PullUp, 8: RX_NoDMA, 9: TX_NoDMA, 10: Don't forward mavlink to/from, 11: DisableFIFO True @@ -14832,7 +14152,7 @@ RunCam HottTelem Scripting - Crossfire VTX + Crossfire Generator Winch MSP @@ -14842,10 +14162,6 @@ AHRS SmartAudio FETtecOneWire - Torqeedo - AIS - CoDevESC - DisplayPort True @@ -14869,7 +14185,7 @@ - 0:InvertRX, 1:InvertTX, 2:HalfDuplex, 3:Swap, 4: RX_PullDown, 5: RX_PullUp, 6: TX_PullDown, 7: TX_PullUp, 8: RX_NoDMA, 9: TX_NoDMA, 10: Don't forward mavlink to/from, 11: DisableFIFO, 12: Ignore Streamrate + 0:InvertRX, 1:InvertTX, 2:HalfDuplex, 3:Swap, 4: RX_PullDown, 5: RX_PullUp, 6: TX_PullDown, 7: TX_PullUp, 8: RX_NoDMA, 9: TX_NoDMA, 10: Don't forward mavlink to/from, 11: DisableFIFO True @@ -14901,7 +14217,7 @@ RunCam HottTelem Scripting - Crossfire VTX + Crossfire Generator Winch MSP @@ -14911,10 +14227,6 @@ AHRS SmartAudio FETtecOneWire - Torqeedo - AIS - CoDevESC - DisplayPort True @@ -14938,76 +14250,7 @@ - 0:InvertRX, 1:InvertTX, 2:HalfDuplex, 3:Swap, 4: RX_PullDown, 5: RX_PullUp, 6: TX_PullDown, 7: TX_PullUp, 8: RX_NoDMA, 9: TX_NoDMA, 10: Don't forward mavlink to/from, 11: DisableFIFO, 12: Ignore Streamrate - True - - - - None - MAVLink1 - MAVLink2 - Frsky D - Frsky SPort - GPS - Alexmos Gimbal Serial - SToRM32 Gimbal Serial - Rangefinder - FrSky SPort Passthrough (OpenTX) - Lidar360 - Beacon - Volz servo out - SBus servo out - ESC Telemetry - Devo Telemetry - OpticalFlow - RobotisServo - NMEA Output - WindVane - SLCAN - RCIN - MegaSquirt EFI - LTM - RunCam - HottTelem - Scripting - Crossfire VTX - Generator - Winch - MSP - DJI FPV - AirSpeed - ADSB - AHRS - SmartAudio - FETtecOneWire - Torqeedo - AIS - CoDevESC - DisplayPort - - True - - - - 1200 - 2400 - 4800 - 9600 - 19200 - 38400 - 57600 - 111100 - 115200 - 230400 - 256000 - 460800 - 500000 - 921600 - 1500000 - - - - 0:InvertRX, 1:InvertTX, 2:HalfDuplex, 3:Swap, 4: RX_PullDown, 5: RX_PullUp, 6: TX_PullDown, 7: TX_PullUp, 8: RX_NoDMA, 9: TX_NoDMA, 10: Don't forward mavlink to/from, 11: DisableFIFO, 12: Ignore Streamrate + 0:InvertRX, 1:InvertTX, 2:HalfDuplex, 3:Swap, 4: RX_PullDown, 5: RX_PullUp, 6: TX_PullDown, 7: TX_PullUp, 8: RX_NoDMA, 9: TX_NoDMA, 10: Don't forward mavlink to/from, 11: DisableFIFO True @@ -15029,33 +14272,28 @@ None - BLHeli32/Kiss - BLHeli_S + BLHeli32/BLHeli_S/Kiss - - 0:Servo 1, 1:Servo 2, 2:Servo 3, 3:Servo 4, 4:Servo 5, 5:Servo 6, 6:Servo 7, 7:Servo 8, 8:Servo 9, 9:Servo 10, 10:Servo 11, 11:Servo 12, 12:Servo 13, 13:Servo 14, 14:Servo 15, 15:Servo 16 - True - + PWM + PWM in microseconds 500 2200 1 - PWM - PWM in microseconds - 800 2200 - 1 PWM PWM in microseconds + 800 2200 + 1 - 800 2200 - 1 PWM PWM in microseconds + 800 2200 + 1 @@ -15065,7 +14303,6 @@ - GPIO Disabled RCPassThru MountPan @@ -15140,29 +14377,27 @@ SERVOn_TRIM SERVOn_MAX SailMastRotation - Alarm - Alarm Inverted + PWM + PWM in microseconds 500 2200 1 - PWM - PWM in microseconds - 800 2200 - 1 PWM PWM in microseconds + 800 2200 + 1 - 800 2200 - 1 PWM PWM in microseconds + 800 2200 + 1 @@ -15172,7 +14407,6 @@ - GPIO Disabled RCPassThru MountPan @@ -15247,29 +14481,27 @@ SERVOn_TRIM SERVOn_MAX SailMastRotation - Alarm - Alarm Inverted + PWM + PWM in microseconds 500 2200 1 - PWM - PWM in microseconds - 800 2200 - 1 PWM PWM in microseconds + 800 2200 + 1 - 800 2200 - 1 PWM PWM in microseconds + 800 2200 + 1 @@ -15279,7 +14511,6 @@ - GPIO Disabled RCPassThru MountPan @@ -15354,29 +14585,27 @@ SERVOn_TRIM SERVOn_MAX SailMastRotation - Alarm - Alarm Inverted + PWM + PWM in microseconds 500 2200 1 - PWM - PWM in microseconds - 800 2200 - 1 PWM PWM in microseconds + 800 2200 + 1 - 800 2200 - 1 PWM PWM in microseconds + 800 2200 + 1 @@ -15386,7 +14615,6 @@ - GPIO Disabled RCPassThru MountPan @@ -15461,29 +14689,27 @@ SERVOn_TRIM SERVOn_MAX SailMastRotation - Alarm - Alarm Inverted + PWM + PWM in microseconds 500 2200 1 - PWM - PWM in microseconds - 800 2200 - 1 PWM PWM in microseconds + 800 2200 + 1 - 800 2200 - 1 PWM PWM in microseconds + 800 2200 + 1 @@ -15493,7 +14719,6 @@ - GPIO Disabled RCPassThru MountPan @@ -15568,29 +14793,27 @@ SERVOn_TRIM SERVOn_MAX SailMastRotation - Alarm - Alarm Inverted + PWM + PWM in microseconds 500 2200 1 - PWM - PWM in microseconds - 800 2200 - 1 PWM PWM in microseconds + 800 2200 + 1 - 800 2200 - 1 PWM PWM in microseconds + 800 2200 + 1 @@ -15600,7 +14823,6 @@ - GPIO Disabled RCPassThru MountPan @@ -15675,29 +14897,27 @@ SERVOn_TRIM SERVOn_MAX SailMastRotation - Alarm - Alarm Inverted + PWM + PWM in microseconds 500 2200 1 - PWM - PWM in microseconds - 800 2200 - 1 PWM PWM in microseconds + 800 2200 + 1 - 800 2200 - 1 PWM PWM in microseconds + 800 2200 + 1 @@ -15707,7 +14927,6 @@ - GPIO Disabled RCPassThru MountPan @@ -15782,29 +15001,27 @@ SERVOn_TRIM SERVOn_MAX SailMastRotation - Alarm - Alarm Inverted + PWM + PWM in microseconds 500 2200 1 - PWM - PWM in microseconds - 800 2200 - 1 PWM PWM in microseconds + 800 2200 + 1 - 800 2200 - 1 PWM PWM in microseconds + 800 2200 + 1 @@ -15814,7 +15031,6 @@ - GPIO Disabled RCPassThru MountPan @@ -15889,29 +15105,27 @@ SERVOn_TRIM SERVOn_MAX SailMastRotation - Alarm - Alarm Inverted + PWM + PWM in microseconds 500 2200 1 - PWM - PWM in microseconds - 800 2200 - 1 PWM PWM in microseconds + 800 2200 + 1 - 800 2200 - 1 PWM PWM in microseconds + 800 2200 + 1 @@ -15921,7 +15135,6 @@ - GPIO Disabled RCPassThru MountPan @@ -15996,29 +15209,27 @@ SERVOn_TRIM SERVOn_MAX SailMastRotation - Alarm - Alarm Inverted + PWM + PWM in microseconds 500 2200 1 - PWM - PWM in microseconds - 800 2200 - 1 PWM PWM in microseconds + 800 2200 + 1 - 800 2200 - 1 PWM PWM in microseconds + 800 2200 + 1 @@ -16028,7 +15239,6 @@ - GPIO Disabled RCPassThru MountPan @@ -16103,29 +15313,27 @@ SERVOn_TRIM SERVOn_MAX SailMastRotation - Alarm - Alarm Inverted + PWM + PWM in microseconds 500 2200 1 - PWM - PWM in microseconds - 800 2200 - 1 PWM PWM in microseconds + 800 2200 + 1 - 800 2200 - 1 PWM PWM in microseconds + 800 2200 + 1 @@ -16135,7 +15343,6 @@ - GPIO Disabled RCPassThru MountPan @@ -16210,29 +15417,27 @@ SERVOn_TRIM SERVOn_MAX SailMastRotation - Alarm - Alarm Inverted + PWM + PWM in microseconds 500 2200 1 - PWM - PWM in microseconds - 800 2200 - 1 PWM PWM in microseconds + 800 2200 + 1 - 800 2200 - 1 PWM PWM in microseconds + 800 2200 + 1 @@ -16242,7 +15447,6 @@ - GPIO Disabled RCPassThru MountPan @@ -16317,29 +15521,27 @@ SERVOn_TRIM SERVOn_MAX SailMastRotation - Alarm - Alarm Inverted + PWM + PWM in microseconds 500 2200 1 - PWM - PWM in microseconds - 800 2200 - 1 PWM PWM in microseconds + 800 2200 + 1 - 800 2200 - 1 PWM PWM in microseconds + 800 2200 + 1 @@ -16349,7 +15551,6 @@ - GPIO Disabled RCPassThru MountPan @@ -16424,29 +15625,27 @@ SERVOn_TRIM SERVOn_MAX SailMastRotation - Alarm - Alarm Inverted + PWM + PWM in microseconds 500 2200 1 - PWM - PWM in microseconds - 800 2200 - 1 PWM PWM in microseconds + 800 2200 + 1 - 800 2200 - 1 PWM PWM in microseconds + 800 2200 + 1 @@ -16456,7 +15655,6 @@ - GPIO Disabled RCPassThru MountPan @@ -16531,29 +15729,27 @@ SERVOn_TRIM SERVOn_MAX SailMastRotation - Alarm - Alarm Inverted + PWM + PWM in microseconds 500 2200 1 - PWM - PWM in microseconds - 800 2200 - 1 PWM PWM in microseconds + 800 2200 + 1 - 800 2200 - 1 PWM PWM in microseconds + 800 2200 + 1 @@ -16563,7 +15759,6 @@ - GPIO Disabled RCPassThru MountPan @@ -16638,29 +15833,27 @@ SERVOn_TRIM SERVOn_MAX SailMastRotation - Alarm - Alarm Inverted + PWM + PWM in microseconds 500 2200 1 - PWM - PWM in microseconds - 800 2200 - 1 PWM PWM in microseconds + 800 2200 + 1 - 800 2200 - 1 PWM PWM in microseconds + 800 2200 + 1 @@ -16670,7 +15863,6 @@ - GPIO Disabled RCPassThru MountPan @@ -16745,22 +15937,18 @@ SERVOn_TRIM SERVOn_MAX SailMastRotation - Alarm - Alarm Inverted 0:Channel1,1:Channel2,2:Channel3,3:Channel4,4:Channel5,5:Channel6,6:Channel7,7:Channel8,8:Channel9,9:Channel10,10:Channel11,11:Channel12,12:Channel13,13:Channel14,14:Channel15,15:Channel16 - True Disabled Enabled - True @@ -16776,14 +15964,14 @@ - 0 300 s seconds + 0 300 - 0 500 Hz hertz + 0 500 @@ -16802,33 +15990,28 @@ DShot600 DShot1200 - True - + Console - Mavlink Serial Channel1 - Mavlink Serial Channel2 - Mavlink Serial Channel3 - Mavlink Serial Channel4 - Mavlink Serial Channel5 + Serial1 + Serial2 + Serial3 + Serial4 + Serial5 1 127 - True 0:Channel1,1:Channel2,2:Channel3,3:Channel4,4:Channel5,5:Channel6,6:Channel7,7:Channel8,8:Channel9,9:Channel10,10:Channel11,11:Channel12,12:Channel13,13:Channel14,14:Channel15,15:Channel16 - True 0:Channel1,1:Channel2,2:Channel3,3:Channel4,4:Channel5,5:Channel6,6:Channel7,7:Channel8,8:Channel9,9:Channel10,10:Channel11,11:Channel12,12:Channel13,13:Channel14,14:Channel15,15:Channel16 - True 0:Channel1,1:Channel2,2:Channel3,3:Channel4,4:Channel5,5:Channel6,6:Channel7,7:Channel8,8:Channel9,9:Channel10,10:Channel11,11:Channel12,12:Channel13,13:Channel14,14:Channel15,15:Channel16 - True @@ -16871,465 +16054,465 @@ - 0 100 % percent + 0 100 - 1000 2000 ms milliseconds + 1000 2000 - 0 1000 cm/s centimeters per second + 0 1000 - 0 100 % percent + 0 100 - 0 50 - 1 Hz hertz + 0 50 + 1 - 0 50 - 1 Hz hertz + 0 50 + 1 - 0 50 - 1 Hz hertz + 0 50 + 1 - 0 50 - 1 Hz hertz + 0 50 + 1 - 0 50 - 1 Hz hertz + 0 50 + 1 - 0 50 - 1 Hz hertz + 0 50 + 1 - 0 50 - 1 Hz hertz + 0 50 + 1 - 0 50 - 1 Hz hertz + 0 50 + 1 - 0 50 - 1 Hz hertz + 0 50 + 1 - 0 50 - 1 Hz hertz + 0 50 + 1 - 0 50 - 1 Hz hertz + 0 50 + 1 - 0 50 - 1 Hz hertz + 0 50 + 1 - 0 50 - 1 Hz hertz + 0 50 + 1 - 0 50 - 1 Hz hertz + 0 50 + 1 - 0 50 - 1 Hz hertz + 0 50 + 1 - 0 50 - 1 Hz hertz + 0 50 + 1 - 0 50 - 1 Hz hertz + 0 50 + 1 - 0 50 - 1 Hz hertz + 0 50 + 1 - 0 50 - 1 Hz hertz + 0 50 + 1 - 0 50 - 1 Hz hertz + 0 50 + 1 - 0 50 - 1 Hz hertz + 0 50 + 1 - 0 50 - 1 Hz hertz + 0 50 + 1 - 0 50 - 1 Hz hertz + 0 50 + 1 - 0 50 - 1 Hz hertz + 0 50 + 1 - 0 50 - 1 Hz hertz + 0 50 + 1 - 0 50 - 1 Hz hertz + 0 50 + 1 - 0 50 - 1 Hz hertz + 0 50 + 1 - 0 50 - 1 Hz hertz + 0 50 + 1 - 0 50 - 1 Hz hertz + 0 50 + 1 - 0 50 - 1 Hz hertz + 0 50 + 1 - 0 50 - 1 Hz hertz + 0 50 + 1 - 0 50 - 1 Hz hertz + 0 50 + 1 - 0 50 - 1 Hz hertz + 0 50 + 1 - 0 50 - 1 Hz hertz + 0 50 + 1 - 0 50 - 1 Hz hertz + 0 50 + 1 - 0 50 - 1 Hz hertz + 0 50 + 1 - 0 50 - 1 Hz hertz + 0 50 + 1 - 0 50 - 1 Hz hertz + 0 50 + 1 - 0 50 - 1 Hz hertz + 0 50 + 1 - 0 50 - 1 Hz hertz + 0 50 + 1 - 0 50 - 1 Hz hertz + 0 50 + 1 - 0 50 - 1 Hz hertz + 0 50 + 1 - 0 50 - 1 Hz hertz + 0 50 + 1 - 0 50 - 1 Hz hertz + 0 50 + 1 - 0 50 - 1 Hz hertz + 0 50 + 1 - 0 50 - 1 Hz hertz + 0 50 + 1 - 0 50 - 1 Hz hertz + 0 50 + 1 - 0 50 - 1 Hz hertz + 0 50 + 1 - 0 50 - 1 Hz hertz + 0 50 + 1 - 0 50 - 1 Hz hertz + 0 50 + 1 - 0 50 - 1 Hz hertz + 0 50 + 1 - 0 50 - 1 Hz hertz + 0 50 + 1 - 0 50 - 1 Hz hertz + 0 50 + 1 - 0 50 - 1 Hz hertz + 0 50 + 1 - 0 50 - 1 Hz hertz + 0 50 + 1 - 0 50 - 1 Hz hertz + 0 50 + 1 - 0 50 - 1 Hz hertz + 0 50 + 1 - 0 50 - 1 Hz hertz + 0 50 + 1 - 0 50 - 1 Hz hertz + 0 50 + 1 - 0 50 - 1 Hz hertz + 0 50 + 1 - 0 50 - 1 Hz hertz + 0 50 + 1 - 0 50 - 1 Hz hertz + 0 50 + 1 - 0 50 - 1 Hz hertz + 0 50 + 1 - 0 50 - 1 Hz hertz + 0 50 + 1 - 0 50 - 1 Hz hertz + 0 50 + 1 - 0 50 - 1 Hz hertz + 0 50 + 1 - 0 50 - 1 Hz hertz + 0 50 + 1 - 0 50 - 1 Hz hertz + 0 50 + 1 - 0 50 - 1 Hz hertz + 0 50 + 1 - 0 50 - 1 Hz hertz + 0 50 + 1 - 0 10 m meters + 0 10 0 500 @@ -17344,74 +16527,19 @@ True - True s seconds + True - True s seconds + True + s + seconds True - s - seconds - - - - - - Disabled - Tiller - Motor - - True - - - - Disabled - AUX1 - AUX2 - AUX3 - AUX4 - AUX5 - AUX6 - - True - - - - Disabled - AUX1 - AUX2 - AUX3 - AUX4 - AUX5 - AUX6 - - True - - - 0:Log,1:Send debug to GCS - - - 0 100 - 1 - % - percent - - - 0 5 - 0.1 - s - seconds - - - 0 5 - 0.1 - s - seconds @@ -17420,27 +16548,26 @@ None MAVLink IntelT265 - VOXL(ModalAI) True - -5 5 - 0.01 m meters + -5 5 + 0.01 - -5 5 - 0.01 m meters + -5 5 + 0.01 - -5 5 - 0.01 m meters + -5 5 + 0.01 @@ -17455,24 +16582,24 @@ - 0 250 ms milliseconds + 0 250 - 0.05 5.0 m/s meters per second + 0.05 5.0 - 0.1 10.0 m meters + 0.1 10.0 - 0.05 1.0 rad radians + 0.05 1.0 @@ -17499,8 +16626,8 @@ - 5000 6000 True + 5000 6000 0:Pitmode,1:Pitmode until armed,2:Pitmode when disarmed,3:Unlocked,4:Add leading zero byte to requests @@ -17521,48 +16648,48 @@ 1 - 0.001 m meters + 0.001 - -5 5 - 0.01 m meters + -5 5 + 0.01 - -5 5 - 0.01 m meters + -5 5 + 0.01 - -5 5 - 0.01 m meters + -5 5 + 0.01 Disabled - AUX1 - AUX2 - AUX3 - AUX4 - AUX5 - AUX6 + PixhawkAUX1 + PixhawkAUX2 + PixhawkAUX3 + PixhawkAUX4 + PixhawkAUX5 + PixhawkAUX6 Disabled - AUX1 - AUX2 - AUX3 - AUX4 - AUX5 - AUX6 + PixhawkAUX1 + PixhawkAUX2 + PixhawkAUX3 + PixhawkAUX4 + PixhawkAUX5 + PixhawkAUX6 @@ -17576,48 +16703,48 @@ 1 - 0.001 m meters + 0.001 - -5 5 - 0.01 m meters + -5 5 + 0.01 - -5 5 - 0.01 m meters + -5 5 + 0.01 - -5 5 - 0.01 m meters + -5 5 + 0.01 Disabled - AUX1 - AUX2 - AUX3 - AUX4 - AUX5 - AUX6 + PixhawkAUX1 + PixhawkAUX2 + PixhawkAUX3 + PixhawkAUX4 + PixhawkAUX5 + PixhawkAUX6 Disabled - AUX1 - AUX2 - AUX3 - AUX4 - AUX5 - AUX6 + PixhawkAUX1 + PixhawkAUX2 + PixhawkAUX3 + PixhawkAUX4 + PixhawkAUX5 + PixhawkAUX6 @@ -17640,32 +16767,32 @@ Pixhawk ADC4 Pixhawk ADC3 Pixhawk ADC6/Pixhawk2 ADC - AUX1 - AUX2 - AUX3 - AUX4 - AUX5 - AUX6 + PixhawkAUX1 + PixhawkAUX2 + PixhawkAUX3 + PixhawkAUX4 + PixhawkAUX5 + PixhawkAUX6 Pixhawk SBUS - - 0 5.0 - 0.01 + V volt + 0.01 + 0 5.0 - - 0 5.0 - 0.01 + V volt + 0.01 + 0 5.0 - 0 360 - 1 deg degrees + 1 + 0 360 Hz @@ -17679,16 +16806,16 @@ - 0 360 - 1 deg degrees + 1 + 0 360 - 0 5 - 0.1 m/s meters per second + 0.1 + 0 5 @@ -17708,12 +16835,12 @@ Pixhawk ADC4 Pixhawk ADC3 Pixhawk ADC6/Pixhawk2 ADC - AUX1 - AUX2 - AUX3 - AUX4 - AUX5 - AUX6 + PixhawkAUX1 + PixhawkAUX2 + PixhawkAUX3 + PixhawkAUX4 + PixhawkAUX5 + PixhawkAUX6 Pixhawk SBUS @@ -17723,20 +16850,20 @@ Pixhawk ADC4 Pixhawk ADC3 Pixhawk ADC6/Pixhawk2 ADC - AUX1 - AUX2 - AUX3 - AUX4 - AUX5 - AUX6 + PixhawkAUX1 + PixhawkAUX2 + PixhawkAUX3 + PixhawkAUX4 + PixhawkAUX5 + PixhawkAUX6 Pixhawk SBUS - 0 3.3 - 0.01 V volt + 0.01 + 0 3.3 Hz @@ -17749,46 +16876,46 @@ - 0 100 - 0.1 m/s meters per second + 0 100 + 0.1 - 0 100 - 0.1 m meters + 0 100 + 0.1 - 0 10 - 0.1 m meters + 0 10 + 0.1 - 0 360 - 1 deg degrees - - 0 360 1 + + deg/s degrees per second + 0 360 + 1 - 0 100 - 0.1 m/s meters per second + 0 100 + 0.1 - 0 60 - 0.1 s seconds + 0 60 + 0.1 @@ -17799,9 +16926,9 @@ - 0 200 rad/s radians per second + 0 200 0.100 2.000 diff --git a/src/FirmwarePlugin/APM/APMParameterFactMetaData.Sub.3.4.xml b/src/FirmwarePlugin/APM/APMParameterFactMetaData.Sub.3.4.xml new file mode 100644 index 0000000..c807a5e --- /dev/null +++ b/src/FirmwarePlugin/APM/APMParameterFactMetaData.Sub.3.4.xml @@ -0,0 +1,6680 @@ + + + + + + +-100 0 + + +True + + +True + +ArduPlane +AntennaTracker +Copter +Rover +ArduSub + + + +1 255 + + + +Mission Planner and DroidPlanner + AP Planner 2 + + + + +Disabled +Enabled + + + +0 10 +.5 +Hz + + +0:Roll,1:Pitch,2:Yaw + +None +Roll +Pitch +Yaw + + + +0.01 2.0 +0.01 + + + +Disabled +Land +RTL + + + +0.1 +Volts + + +50 +mAh + + + +Disabled +Warn only +Disarm +Enter depth hold mode +Enter surface mode + + + + +Disabled +Warn only +Enter surface mode + + + + +Disabled +Warn only + + + + +Disabled +Warn only + + + +Pascal + + +Degrees Centigrade + + + +Disarm +Hold Position +Surface + + + +10 90 + + +100 900 + + + +Disabled +Enabled + + + + +Never change yaw +Face next waypoint +Face next waypoint except RTL +Face along GPS course + + + +50 500 +10 +Centimeters/Second + + +50 500 +10 +cm/s/s + + +0 300 +1 +pwm + + + +Stabilize +DepthHold +Manual + + + + +Stabilize +DepthHold +Manual + + + + +Stabilize +DepthHold +Manual + + + + +Stabilize +DepthHold +Manual + + + + +Stabilize +DepthHold +Manual + + + + +Stabilize +DepthHold +Manual + + + +0:ATTITUDE_FAST,1:ATTITUDE_MED,2:GPS,3:PM,4:CTUN,5:NTUN,6:RCIN,7:IMU,8:CMD,9:CURRENT,10:RCOUT,11:OPTFLOW,12:PID,13:COMPASS,14:INAV,15:CAMERA,17:MOTBATT,18:IMU_FAST,19:IMU_RAW + +Default +Default+RCIN +Default+IMU +Default+Motors +NearlyAll-AC315 +NearlyAll +All+FastATT +All+MotBatt +All+FastIMU +All+FastIMU+PID +All+FullIMU +Disabled + + + + +Normal Start-up +Start-up in ESC Calibration mode if throttle high +Start-up in ESC Calibration mode regardless of throttle +Disabled + + + + +None +Stab Roll/Pitch kP +Rate Roll/Pitch kP +Rate Roll/Pitch kI +Rate Roll/Pitch kD +Stab Yaw kP +Rate Yaw kP +Rate Yaw kD +Altitude Hold kP +Throttle Rate kP +Throttle Accel kP +Throttle Accel kI +Throttle Accel kD +Loiter Speed +Loiter Pos kP +Velocity XY kP +Velocity XY kI +WP Speed +Acro RollPitch kP +Acro Yaw kP +Heli Ext Gyro +OF Loiter kP +OF Loiter kI +OF Loiter kD +Declination +Circle Rate +RangeFinder Gain +Rate Pitch kP +Rate Pitch kI +Rate Pitch kD +Rate Roll kP +Rate Roll kI +Rate Roll kD +Rate Pitch FF +Rate Roll FF +Rate Yaw FF + + + +0 32767 + + +0 32767 + + + +Do Nothing +Flip +Simple Mode +RTL +Save Trim +Save WP +Camera Trigger +RangeFinder +Fence +ResetToArmedYaw +Super Simple Mode +Acro Trainer +Auto +AutoTune +Land +Gripper +Parachute Enable +Parachute Release +Parachute 3pos +Auto Mission Reset +AttCon Feed Forward +AttCon Accel Limits +Retract Mount +Relay On/Off +Relay2 On/Off +Relay3 On/Off +Relay4 On/Off +Landing Gear +Lost Copter Sound +Motor Emergency Stop +Motor Interlock +Brake +Throw + + + + +Do Nothing +Flip +Simple Mode +RTL +Save Trim +Save WP +Camera Trigger +RangeFinder +Fence +ResetToArmedYaw +Super Simple Mode +Acro Trainer +Auto +AutoTune +Land +Gripper +Parachute Enable +Parachute Release +Parachute 3pos +Auto Mission Reset +AttCon Feed Forward +AttCon Accel Limits +Retract Mount +Relay On/Off +Relay2 On/Off +Relay3 On/Off +Relay4 On/Off +Landing Gear +Lost Copter Sound +Motor Emergency Stop +Motor Interlock +Brake +Throw + + + + +Do Nothing +Flip +Simple Mode +RTL +Save Trim +Save WP +Camera Trigger +RangeFinder +Fence +ResetToArmedYaw +Super Simple Mode +Acro Trainer +Auto +AutoTune +Land +Gripper +Parachute Enable +Parachute Release +Parachute 3pos +Auto Mission Reset +AttCon Feed Forward +AttCon Accel Limits +Retract Mount +Relay On/Off +Relay2 On/Off +Relay3 On/Off +Relay4 On/Off +Landing Gear +Lost Copter Sound +Motor Emergency Stop +Motor Interlock +Brake +Throw + + + + +Do Nothing +Flip +Simple Mode +RTL +Save Trim +Save WP +Camera Trigger +RangeFinder +Fence +ResetToArmedYaw +Super Simple Mode +Acro Trainer +Auto +AutoTune +Land +Gripper +Parachute Enable +Parachute Release +Parachute 3pos +Auto Mission Reset +AttCon Feed Forward +AttCon Accel Limits +Retract Mount +Relay On/Off +Relay2 On/Off +Relay3 On/Off +Relay4 On/Off +Landing Gear +Lost Copter Sound +Motor Emergency Stop +Motor Interlock +Brake +Throw + + + + +Do Nothing +Flip +Simple Mode +RTL +Save Trim +Save WP +Camera Trigger +RangeFinder +Fence +ResetToArmedYaw +Super Simple Mode +Acro Trainer +Auto +AutoTune +Land +Gripper +Parachute Enable +Parachute Release +Parachute 3pos +Auto Mission Reset +AttCon Feed Forward +AttCon Accel Limits +Retract Mount +Relay On/Off +Relay2 On/Off +Relay3 On/Off +Relay4 On/Off +Landing Gear +Lost Copter Sound +Motor Emergency Stop +Motor Interlock +Brake +Throw + + + + +Do Nothing +Flip +Simple Mode +RTL +Save Trim +Save WP +Camera Trigger +RangeFinder +Fence +ResetToArmedYaw +Super Simple Mode +Acro Trainer +Auto +AutoTune +Land +Gripper +Parachute Enable +Parachute Release +Parachute 3pos +Auto Mission Reset +AttCon Feed Forward +AttCon Accel Limits +Retract Mount +Relay On/Off +Relay2 On/Off +Relay3 On/Off +Relay4 On/Off +Landing Gear +Lost Copter Sound +Motor Emergency Stop +Motor Interlock +Brake +Throw + + + +0:All,1:Baro,2:Compass,3:GPS,4:INS,5:Parameters+Rangefinder,6:RC,7:Voltage + +Disabled +Enabled +Skip Baro +Skip Compass +Skip GPS +Skip INS +Skip Params/Rangefinder +Skip RC +Skip Voltage + + + +0 127 +Seconds + + +1000 8000 +Centi-degrees + + +0 100 + +Very Soft +Soft +Medium +Crisp +Very Crisp + +10 + + + +Land +AltHold +Land even in Stabilize + + + +0.6:Strict, 0.8:Default, 1.0:Relaxed + + + +Disabled +Enabled + + + +0.1 1.0 + + +0.2 1.0 + + +0.1 0.8 + + +1 10 + + +30 400 + + +30 400 + + +0.5 4.0 + + +1000 2000 + + +50 490 +1 +Hz + + +1 10 + + +1 10 + + +0 3 +0.1 + + +0 3 +0.1 + + + +Disabled +Leveling +Leveling and Limited + + + + +Disabled +Very Low +Low +Medium +High +Very High + + + +0.1 6.0 +0.1 + + +0.02 1.00 +0.01 + + +0 4500 +10 +cm/s/s + + +0 4500 +10 +cm/s/s + + +1.000 8.000 + + +0.500 1.500 +0.05 + + +0.000 3.000 + + +0 1000 +Percent*10 + + +0.000 0.400 + + +1.000 100.000 +Hz + + +1.000 3.000 + + +0.500 2.000 + + +0:Roll,1:Pitch,2:Yaw + +All +Roll Only +Pitch Only +Yaw Only +Roll and Pitch +Roll and Yaw +Pitch and Yaw + + + +0.05 0.10 + + +0.001 0.006 + + + +Do Not Use in RTL and Land +Use in RTL and Land + + + +0 5 + + + + + +1200 +2400 +4800 +9600 +19200 +38400 +57600 +111100 +115200 +500000 +921600 +1500000 + + + + +MAVlink1 +MAVLink2 + + + + +None +MAVLink1 +MAVLink2 +Frsky D +Frsky SPort +GPS +Alexmos Gimbal Serial +SToRM32 Gimbal Serial +Lidar +FrSky SPort Passthrough (OpenTX) +Lidar360 +Aerotenna uLanding +Pozyx Beacon + + + + +1200 +2400 +4800 +9600 +19200 +38400 +57600 +111100 +115200 +500000 +921600 +1500000 + + + + +None +MAVLink1 +MAVLink2 +Frsky D +Frsky SPort +GPS +Alexmos Gimbal Serial +SToRM32 Gimbal Serial +Lidar +FrSky SPort Passthrough (OpenTX) +Lidar360 +Aerotenna uLanding +Pozyx Beacon + + + + +1200 +2400 +4800 +9600 +19200 +38400 +57600 +111100 +115200 +500000 +921600 +1500000 + + + + +None +MAVLink1 +MAVLink2 +Frsky D +Frsky SPort +GPS +Alexmos Gimbal Serial +SToRM32 Gimbal Serial +Lidar +FrSky SPort Passthrough (OpenTX) +Lidar360 +Aerotenna uLanding +Pozyx Beacon + + + + +1200 +2400 +4800 +9600 +19200 +38400 +57600 +111100 +115200 +500000 +921600 +1500000 + + + + +None +MAVLink1 +MAVLink2 +Frsky D +Frsky SPort +GPS +Alexmos Gimbal Serial +SToRM32 Gimbal Serial +Lidar +FrSky SPort Passthrough (OpenTX) +Lidar360 +Aerotenna uLanding +Pozyx Beacon + + + + +1200 +2400 +4800 +9600 +19200 +38400 +57600 +111100 +115200 +500000 +921600 +1500000 + + + + +None +MAVLink1 +MAVLink2 +Frsky D +Frsky SPort +GPS +Alexmos Gimbal Serial +SToRM32 Gimbal Serial +Lidar +FrSky SPort Passthrough (OpenTX) +Lidar360 +Aerotenna uLanding +Pozyx Beacon + + + + +1200 +2400 +4800 +9600 +19200 +38400 +57600 +111100 +115200 +500000 +921600 +1500000 + + + + + +800 2200 +1 +pwm + + +800 2200 +1 +pwm + + +800 2200 +1 +pwm + + + +Reversed +Normal + + + +0 200 +pwm + + + + +800 2200 +1 +pwm + + +800 2200 +1 +pwm + + +800 2200 +1 +pwm + + + +Reversed +Normal + + + +0 200 +pwm + + + + +800 2200 +1 +pwm + + +800 2200 +1 +pwm + + +800 2200 +1 +pwm + + + +Reversed +Normal + + + +0 200 +pwm + + + + +800 2200 +1 +pwm + + +800 2200 +1 +pwm + + +800 2200 +1 +pwm + + + +Reversed +Normal + + + +0 200 +pwm + + + + +800 2200 +1 +pwm + + +800 2200 +1 +pwm + + +800 2200 +1 +pwm + + + +Reversed +Normal + + + +0 200 +pwm + + + +Disabled +RCPassThru +Flap +Flap_auto +Aileron +mount_pan +mount_tilt +mount_roll +mount_open +camera_trigger +release +mount2_pan +mount2_tilt +mount2_roll +mount2_open +DifferentialSpoiler1 +DifferentialSpoiler2 +AileronWithInput +Elevator +ElevatorWithInput +Rudder +Flaperon1 +Flaperon2 +GroundSteering +Parachute +Gripper +LandingGear +EngineRunEnable +HeliRSC +HeliTailRSC +Motor1 +Motor2 +Motor3 +Motor4 +Motor5 +Motor6 +Motor7 +Motor8 +RCIN1 +RCIN2 +RCIN3 +RCIN4 +RCIN5 +RCIN6 +RCIN7 +RCIN8 +RCIN9 +RCIN10 +RCIN11 +RCIN12 +RCIN13 +RCIN14 +RCIN15 +RCIN16 +Ignition +Choke +Starter +Throttle + + + + + +800 2200 +1 +pwm + + +800 2200 +1 +pwm + + +800 2200 +1 +pwm + + + +Reversed +Normal + + + +0 200 +pwm + + + +Disabled +RCPassThru +Flap +Flap_auto +Aileron +mount_pan +mount_tilt +mount_roll +mount_open +camera_trigger +release +mount2_pan +mount2_tilt +mount2_roll +mount2_open +DifferentialSpoiler1 +DifferentialSpoiler2 +AileronWithInput +Elevator +ElevatorWithInput +Rudder +Flaperon1 +Flaperon2 +GroundSteering +Parachute +Gripper +LandingGear +EngineRunEnable +HeliRSC +HeliTailRSC +Motor1 +Motor2 +Motor3 +Motor4 +Motor5 +Motor6 +Motor7 +Motor8 +RCIN1 +RCIN2 +RCIN3 +RCIN4 +RCIN5 +RCIN6 +RCIN7 +RCIN8 +RCIN9 +RCIN10 +RCIN11 +RCIN12 +RCIN13 +RCIN14 +RCIN15 +RCIN16 +Ignition +Choke +Starter +Throttle + + + + + +800 2200 +1 +pwm + + +800 2200 +1 +pwm + + +800 2200 +1 +pwm + + + +Reversed +Normal + + + +0 200 +pwm + + + +Disabled +RCPassThru +Flap +Flap_auto +Aileron +mount_pan +mount_tilt +mount_roll +mount_open +camera_trigger +release +mount2_pan +mount2_tilt +mount2_roll +mount2_open +DifferentialSpoiler1 +DifferentialSpoiler2 +AileronWithInput +Elevator +ElevatorWithInput +Rudder +Flaperon1 +Flaperon2 +GroundSteering +Parachute +Gripper +LandingGear +EngineRunEnable +HeliRSC +HeliTailRSC +Motor1 +Motor2 +Motor3 +Motor4 +Motor5 +Motor6 +Motor7 +Motor8 +RCIN1 +RCIN2 +RCIN3 +RCIN4 +RCIN5 +RCIN6 +RCIN7 +RCIN8 +RCIN9 +RCIN10 +RCIN11 +RCIN12 +RCIN13 +RCIN14 +RCIN15 +RCIN16 +Ignition +Choke +Starter +Throttle + + + + + +800 2200 +1 +pwm + + +800 2200 +1 +pwm + + +800 2200 +1 +pwm + + + +Reversed +Normal + + + +0 200 +pwm + + + +Disabled +RCPassThru +Flap +Flap_auto +Aileron +mount_pan +mount_tilt +mount_roll +mount_open +camera_trigger +release +mount2_pan +mount2_tilt +mount2_roll +mount2_open +DifferentialSpoiler1 +DifferentialSpoiler2 +AileronWithInput +Elevator +ElevatorWithInput +Rudder +Flaperon1 +Flaperon2 +GroundSteering +Parachute +Gripper +LandingGear +EngineRunEnable +HeliRSC +HeliTailRSC +Motor1 +Motor2 +Motor3 +Motor4 +Motor5 +Motor6 +Motor7 +Motor8 +RCIN1 +RCIN2 +RCIN3 +RCIN4 +RCIN5 +RCIN6 +RCIN7 +RCIN8 +RCIN9 +RCIN10 +RCIN11 +RCIN12 +RCIN13 +RCIN14 +RCIN15 +RCIN16 +Ignition +Choke +Starter +Throttle + + + + + +800 2200 +1 +pwm + + +800 2200 +1 +pwm + + +800 2200 +1 +pwm + + + +Reversed +Normal + + + +0 200 +pwm + + + +Disabled +RCPassThru +Flap +Flap_auto +Aileron +mount_pan +mount_tilt +mount_roll +mount_open +camera_trigger +release +mount2_pan +mount2_tilt +mount2_roll +mount2_open +DifferentialSpoiler1 +DifferentialSpoiler2 +AileronWithInput +Elevator +ElevatorWithInput +Rudder +Flaperon1 +Flaperon2 +GroundSteering +Parachute +Gripper +LandingGear +EngineRunEnable +HeliRSC +HeliTailRSC +Motor1 +Motor2 +Motor3 +Motor4 +Motor5 +Motor6 +Motor7 +Motor8 +RCIN1 +RCIN2 +RCIN3 +RCIN4 +RCIN5 +RCIN6 +RCIN7 +RCIN8 +RCIN9 +RCIN10 +RCIN11 +RCIN12 +RCIN13 +RCIN14 +RCIN15 +RCIN16 +Ignition +Choke +Starter +Throttle + + + + + +800 2200 +1 +pwm + + +800 2200 +1 +pwm + + +800 2200 +1 +pwm + + + +Reversed +Normal + + + +0 200 +pwm + + + +Disabled +RCPassThru +Flap +Flap_auto +Aileron +mount_pan +mount_tilt +mount_roll +mount_open +camera_trigger +release +mount2_pan +mount2_tilt +mount2_roll +mount2_open +DifferentialSpoiler1 +DifferentialSpoiler2 +AileronWithInput +Elevator +ElevatorWithInput +Rudder +Flaperon1 +Flaperon2 +GroundSteering +Parachute +Gripper +LandingGear +EngineRunEnable +HeliRSC +HeliTailRSC +Motor1 +Motor2 +Motor3 +Motor4 +Motor5 +Motor6 +Motor7 +Motor8 +RCIN1 +RCIN2 +RCIN3 +RCIN4 +RCIN5 +RCIN6 +RCIN7 +RCIN8 +RCIN9 +RCIN10 +RCIN11 +RCIN12 +RCIN13 +RCIN14 +RCIN15 +RCIN16 +Ignition +Choke +Starter +Throttle + + + + + +800 2200 +1 +pwm + + +800 2200 +1 +pwm + + +800 2200 +1 +pwm + + + +Reversed +Normal + + + +0 200 +pwm + + + +Disabled +RCPassThru +Flap +Flap_auto +Aileron +mount_pan +mount_tilt +mount_roll +mount_open +camera_trigger +release +mount2_pan +mount2_tilt +mount2_roll +mount2_open +DifferentialSpoiler1 +DifferentialSpoiler2 +AileronWithInput +Elevator +ElevatorWithInput +Rudder +Flaperon1 +Flaperon2 +GroundSteering +Parachute +Gripper +LandingGear +EngineRunEnable +HeliRSC +HeliTailRSC +Motor1 +Motor2 +Motor3 +Motor4 +Motor5 +Motor6 +Motor7 +Motor8 +RCIN1 +RCIN2 +RCIN3 +RCIN4 +RCIN5 +RCIN6 +RCIN7 +RCIN8 +RCIN9 +RCIN10 +RCIN11 +RCIN12 +RCIN13 +RCIN14 +RCIN15 +RCIN16 +Ignition +Choke +Starter +Throttle + + + + + +800 2200 +1 +pwm + + +800 2200 +1 +pwm + + +800 2200 +1 +pwm + + + +Reversed +Normal + + + +0 200 +pwm + + + +Disabled +RCPassThru +Flap +Flap_auto +Aileron +mount_pan +mount_tilt +mount_roll +mount_open +camera_trigger +release +mount2_pan +mount2_tilt +mount2_roll +mount2_open +DifferentialSpoiler1 +DifferentialSpoiler2 +AileronWithInput +Elevator +ElevatorWithInput +Rudder +Flaperon1 +Flaperon2 +GroundSteering +Parachute +Gripper +LandingGear +EngineRunEnable +HeliRSC +HeliTailRSC +Motor1 +Motor2 +Motor3 +Motor4 +Motor5 +Motor6 +Motor7 +Motor8 +RCIN1 +RCIN2 +RCIN3 +RCIN4 +RCIN5 +RCIN6 +RCIN7 +RCIN8 +RCIN9 +RCIN10 +RCIN11 +RCIN12 +RCIN13 +RCIN14 +RCIN15 +RCIN16 +Ignition +Choke +Starter +Throttle + + + + + +800 2200 +1 +pwm + + +800 2200 +1 +pwm + + +800 2200 +1 +pwm + + + +Reversed +Normal + + + +0 200 +pwm + + + +Disabled +RCPassThru +Flap +Flap_auto +Aileron +mount_pan +mount_tilt +mount_roll +mount_open +camera_trigger +release +mount2_pan +mount2_tilt +mount2_roll +mount2_open +DifferentialSpoiler1 +DifferentialSpoiler2 +AileronWithInput +Elevator +ElevatorWithInput +Rudder +Flaperon1 +Flaperon2 +GroundSteering +Parachute +Gripper +LandingGear +EngineRunEnable +HeliRSC +HeliTailRSC +Motor1 +Motor2 +Motor3 +Motor4 +Motor5 +Motor6 +Motor7 +Motor8 +RCIN1 +RCIN2 +RCIN3 +RCIN4 +RCIN5 +RCIN6 +RCIN7 +RCIN8 +RCIN9 +RCIN10 +RCIN11 +RCIN12 +RCIN13 +RCIN14 +RCIN15 +RCIN16 +Ignition +Choke +Starter +Throttle + + + + + +800 2200 +1 +pwm + + +800 2200 +1 +pwm + + +800 2200 +1 +pwm + + + +Reversed +Normal + + + +0 200 +pwm + + + +Disabled +RCPassThru +Flap +Flap_auto +Aileron +mount_pan +mount_tilt +mount_roll +mount_open +camera_trigger +release +mount2_pan +mount2_tilt +mount2_roll +mount2_open +DifferentialSpoiler1 +DifferentialSpoiler2 +AileronWithInput +Elevator +ElevatorWithInput +Rudder +Flaperon1 +Flaperon2 +GroundSteering +Parachute +Gripper +LandingGear +EngineRunEnable +HeliRSC +HeliTailRSC +Motor1 +Motor2 +Motor3 +Motor4 +Motor5 +Motor6 +Motor7 +Motor8 +RCIN1 +RCIN2 +RCIN3 +RCIN4 +RCIN5 +RCIN6 +RCIN7 +RCIN8 +RCIN9 +RCIN10 +RCIN11 +RCIN12 +RCIN13 +RCIN14 +RCIN15 +RCIN16 +Ignition +Choke +Starter +Throttle + + + + + + +Disabled +shift +arm_toggle +arm +disarm +mode_toggle +enter_mode_1 +enter_mode_2 +enter_mode_3 +enter_mode_4 +enter_mode_5 +enter_mode_6 +mount_center +mount_tilt_up +mount_tilt_down +camera_trigger +camera_source_toggle +mount_pan_right +mount_pan_left +lights1_cycle +lights1_brighter +lights1_dimmer +lights2_cycle +lights2_brighter +lights2_dimmer +gain_toggle +gain_inc +gain_dec +trim_roll_inc +trim_roll_dec +trim_pitch_inc +trim_pitch_dec +input_hold_toggle +relay_1_on +relay_1_off +relay_1_toggle +relay_2_on +relay_2_off +relay_2_toggle +custom_1 +custom_2 +custom_3 +custom_4 +custom_5 +custom_6 + + + + +Disabled +shift +arm_toggle +arm +disarm +mode_toggle +enter_mode_1 +enter_mode_2 +enter_mode_3 +enter_mode_4 +enter_mode_5 +enter_mode_6 +mount_center +mount_tilt_up +mount_tilt_down +camera_trigger +camera_source_toggle +mount_pan_right +mount_pan_left +lights1_cycle +lights1_brighter +lights1_dimmer +lights2_cycle +lights2_brighter +lights2_dimmer +gain_toggle +gain_inc +gain_dec +trim_roll_inc +trim_roll_dec +trim_pitch_inc +trim_pitch_dec +input_hold_toggle +relay_1_on +relay_1_off +relay_1_toggle +relay_2_on +relay_2_off +relay_2_toggle +custom_1 +custom_2 +custom_3 +custom_4 +custom_5 +custom_6 + + + + + + +Disabled +shift +arm_toggle +arm +disarm +mode_toggle +enter_mode_1 +enter_mode_2 +enter_mode_3 +enter_mode_4 +enter_mode_5 +enter_mode_6 +mount_center +mount_tilt_up +mount_tilt_down +camera_trigger +camera_source_toggle +mount_pan_right +mount_pan_left +lights1_cycle +lights1_brighter +lights1_dimmer +lights2_cycle +lights2_brighter +lights2_dimmer +gain_toggle +gain_inc +gain_dec +trim_roll_inc +trim_roll_dec +trim_pitch_inc +trim_pitch_dec +input_hold_toggle +relay_1_on +relay_1_off +relay_1_toggle +relay_2_on +relay_2_off +relay_2_toggle +custom_1 +custom_2 +custom_3 +custom_4 +custom_5 +custom_6 + + + + +Disabled +shift +arm_toggle +arm +disarm +mode_toggle +enter_mode_1 +enter_mode_2 +enter_mode_3 +enter_mode_4 +enter_mode_5 +enter_mode_6 +mount_center +mount_tilt_up +mount_tilt_down +camera_trigger +camera_source_toggle +mount_pan_right +mount_pan_left +lights1_cycle +lights1_brighter +lights1_dimmer +lights2_cycle +lights2_brighter +lights2_dimmer +gain_toggle +gain_inc +gain_dec +trim_roll_inc +trim_roll_dec +trim_pitch_inc +trim_pitch_dec +input_hold_toggle +relay_1_on +relay_1_off +relay_1_toggle +relay_2_on +relay_2_off +relay_2_toggle +custom_1 +custom_2 +custom_3 +custom_4 +custom_5 +custom_6 + + + + + + +Disabled +shift +arm_toggle +arm +disarm +mode_toggle +enter_mode_1 +enter_mode_2 +enter_mode_3 +enter_mode_4 +enter_mode_5 +enter_mode_6 +mount_center +mount_tilt_up +mount_tilt_down +camera_trigger +camera_source_toggle +mount_pan_right +mount_pan_left +lights1_cycle +lights1_brighter +lights1_dimmer +lights2_cycle +lights2_brighter +lights2_dimmer +gain_toggle +gain_inc +gain_dec +trim_roll_inc +trim_roll_dec +trim_pitch_inc +trim_pitch_dec +input_hold_toggle +relay_1_on +relay_1_off +relay_1_toggle +relay_2_on +relay_2_off +relay_2_toggle +custom_1 +custom_2 +custom_3 +custom_4 +custom_5 +custom_6 + + + + +Disabled +shift +arm_toggle +arm +disarm +mode_toggle +enter_mode_1 +enter_mode_2 +enter_mode_3 +enter_mode_4 +enter_mode_5 +enter_mode_6 +mount_center +mount_tilt_up +mount_tilt_down +camera_trigger +camera_source_toggle +mount_pan_right +mount_pan_left +lights1_cycle +lights1_brighter +lights1_dimmer +lights2_cycle +lights2_brighter +lights2_dimmer +gain_toggle +gain_inc +gain_dec +trim_roll_inc +trim_roll_dec +trim_pitch_inc +trim_pitch_dec +input_hold_toggle +relay_1_on +relay_1_off +relay_1_toggle +relay_2_on +relay_2_off +relay_2_toggle +custom_1 +custom_2 +custom_3 +custom_4 +custom_5 +custom_6 + + + + + + +Disabled +shift +arm_toggle +arm +disarm +mode_toggle +enter_mode_1 +enter_mode_2 +enter_mode_3 +enter_mode_4 +enter_mode_5 +enter_mode_6 +mount_center +mount_tilt_up +mount_tilt_down +camera_trigger +camera_source_toggle +mount_pan_right +mount_pan_left +lights1_cycle +lights1_brighter +lights1_dimmer +lights2_cycle +lights2_brighter +lights2_dimmer +gain_toggle +gain_inc +gain_dec +trim_roll_inc +trim_roll_dec +trim_pitch_inc +trim_pitch_dec +input_hold_toggle +relay_1_on +relay_1_off +relay_1_toggle +relay_2_on +relay_2_off +relay_2_toggle +custom_1 +custom_2 +custom_3 +custom_4 +custom_5 +custom_6 + + + + +Disabled +shift +arm_toggle +arm +disarm +mode_toggle +enter_mode_1 +enter_mode_2 +enter_mode_3 +enter_mode_4 +enter_mode_5 +enter_mode_6 +mount_center +mount_tilt_up +mount_tilt_down +camera_trigger +camera_source_toggle +mount_pan_right +mount_pan_left +lights1_cycle +lights1_brighter +lights1_dimmer +lights2_cycle +lights2_brighter +lights2_dimmer +gain_toggle +gain_inc +gain_dec +trim_roll_inc +trim_roll_dec +trim_pitch_inc +trim_pitch_dec +input_hold_toggle +relay_1_on +relay_1_off +relay_1_toggle +relay_2_on +relay_2_off +relay_2_toggle +custom_1 +custom_2 +custom_3 +custom_4 +custom_5 +custom_6 + + + + + + +Disabled +shift +arm_toggle +arm +disarm +mode_toggle +enter_mode_1 +enter_mode_2 +enter_mode_3 +enter_mode_4 +enter_mode_5 +enter_mode_6 +mount_center +mount_tilt_up +mount_tilt_down +camera_trigger +camera_source_toggle +mount_pan_right +mount_pan_left +lights1_cycle +lights1_brighter +lights1_dimmer +lights2_cycle +lights2_brighter +lights2_dimmer +gain_toggle +gain_inc +gain_dec +trim_roll_inc +trim_roll_dec +trim_pitch_inc +trim_pitch_dec +input_hold_toggle +relay_1_on +relay_1_off +relay_1_toggle +relay_2_on +relay_2_off +relay_2_toggle +custom_1 +custom_2 +custom_3 +custom_4 +custom_5 +custom_6 + + + + +Disabled +shift +arm_toggle +arm +disarm +mode_toggle +enter_mode_1 +enter_mode_2 +enter_mode_3 +enter_mode_4 +enter_mode_5 +enter_mode_6 +mount_center +mount_tilt_up +mount_tilt_down +camera_trigger +camera_source_toggle +mount_pan_right +mount_pan_left +lights1_cycle +lights1_brighter +lights1_dimmer +lights2_cycle +lights2_brighter +lights2_dimmer +gain_toggle +gain_inc +gain_dec +trim_roll_inc +trim_roll_dec +trim_pitch_inc +trim_pitch_dec +input_hold_toggle +relay_1_on +relay_1_off +relay_1_toggle +relay_2_on +relay_2_off +relay_2_toggle +custom_1 +custom_2 +custom_3 +custom_4 +custom_5 +custom_6 + + + + + + +Disabled +shift +arm_toggle +arm +disarm +mode_toggle +enter_mode_1 +enter_mode_2 +enter_mode_3 +enter_mode_4 +enter_mode_5 +enter_mode_6 +mount_center +mount_tilt_up +mount_tilt_down +camera_trigger +camera_source_toggle +mount_pan_right +mount_pan_left +lights1_cycle +lights1_brighter +lights1_dimmer +lights2_cycle +lights2_brighter +lights2_dimmer +gain_toggle +gain_inc +gain_dec +trim_roll_inc +trim_roll_dec +trim_pitch_inc +trim_pitch_dec +input_hold_toggle +relay_1_on +relay_1_off +relay_1_toggle +relay_2_on +relay_2_off +relay_2_toggle +custom_1 +custom_2 +custom_3 +custom_4 +custom_5 +custom_6 + + + + +Disabled +shift +arm_toggle +arm +disarm +mode_toggle +enter_mode_1 +enter_mode_2 +enter_mode_3 +enter_mode_4 +enter_mode_5 +enter_mode_6 +mount_center +mount_tilt_up +mount_tilt_down +camera_trigger +camera_source_toggle +mount_pan_right +mount_pan_left +lights1_cycle +lights1_brighter +lights1_dimmer +lights2_cycle +lights2_brighter +lights2_dimmer +gain_toggle +gain_inc +gain_dec +trim_roll_inc +trim_roll_dec +trim_pitch_inc +trim_pitch_dec +input_hold_toggle +relay_1_on +relay_1_off +relay_1_toggle +relay_2_on +relay_2_off +relay_2_toggle +custom_1 +custom_2 +custom_3 +custom_4 +custom_5 +custom_6 + + + + + + +Disabled +shift +arm_toggle +arm +disarm +mode_toggle +enter_mode_1 +enter_mode_2 +enter_mode_3 +enter_mode_4 +enter_mode_5 +enter_mode_6 +mount_center +mount_tilt_up +mount_tilt_down +camera_trigger +camera_source_toggle +mount_pan_right +mount_pan_left +lights1_cycle +lights1_brighter +lights1_dimmer +lights2_cycle +lights2_brighter +lights2_dimmer +gain_toggle +gain_inc +gain_dec +trim_roll_inc +trim_roll_dec +trim_pitch_inc +trim_pitch_dec +input_hold_toggle +relay_1_on +relay_1_off +relay_1_toggle +relay_2_on +relay_2_off +relay_2_toggle +custom_1 +custom_2 +custom_3 +custom_4 +custom_5 +custom_6 + + + + +Disabled +shift +arm_toggle +arm +disarm +mode_toggle +enter_mode_1 +enter_mode_2 +enter_mode_3 +enter_mode_4 +enter_mode_5 +enter_mode_6 +mount_center +mount_tilt_up +mount_tilt_down +camera_trigger +camera_source_toggle +mount_pan_right +mount_pan_left +lights1_cycle +lights1_brighter +lights1_dimmer +lights2_cycle +lights2_brighter +lights2_dimmer +gain_toggle +gain_inc +gain_dec +trim_roll_inc +trim_roll_dec +trim_pitch_inc +trim_pitch_dec +input_hold_toggle +relay_1_on +relay_1_off +relay_1_toggle +relay_2_on +relay_2_off +relay_2_toggle +custom_1 +custom_2 +custom_3 +custom_4 +custom_5 +custom_6 + + + + + + +Disabled +shift +arm_toggle +arm +disarm +mode_toggle +enter_mode_1 +enter_mode_2 +enter_mode_3 +enter_mode_4 +enter_mode_5 +enter_mode_6 +mount_center +mount_tilt_up +mount_tilt_down +camera_trigger +camera_source_toggle +mount_pan_right +mount_pan_left +lights1_cycle +lights1_brighter +lights1_dimmer +lights2_cycle +lights2_brighter +lights2_dimmer +gain_toggle +gain_inc +gain_dec +trim_roll_inc +trim_roll_dec +trim_pitch_inc +trim_pitch_dec +input_hold_toggle +relay_1_on +relay_1_off +relay_1_toggle +relay_2_on +relay_2_off +relay_2_toggle +custom_1 +custom_2 +custom_3 +custom_4 +custom_5 +custom_6 + + + + +Disabled +shift +arm_toggle +arm +disarm +mode_toggle +enter_mode_1 +enter_mode_2 +enter_mode_3 +enter_mode_4 +enter_mode_5 +enter_mode_6 +mount_center +mount_tilt_up +mount_tilt_down +camera_trigger +camera_source_toggle +mount_pan_right +mount_pan_left +lights1_cycle +lights1_brighter +lights1_dimmer +lights2_cycle +lights2_brighter +lights2_dimmer +gain_toggle +gain_inc +gain_dec +trim_roll_inc +trim_roll_dec +trim_pitch_inc +trim_pitch_dec +input_hold_toggle +relay_1_on +relay_1_off +relay_1_toggle +relay_2_on +relay_2_off +relay_2_toggle +custom_1 +custom_2 +custom_3 +custom_4 +custom_5 +custom_6 + + + + + + +Disabled +shift +arm_toggle +arm +disarm +mode_toggle +enter_mode_1 +enter_mode_2 +enter_mode_3 +enter_mode_4 +enter_mode_5 +enter_mode_6 +mount_center +mount_tilt_up +mount_tilt_down +camera_trigger +camera_source_toggle +mount_pan_right +mount_pan_left +lights1_cycle +lights1_brighter +lights1_dimmer +lights2_cycle +lights2_brighter +lights2_dimmer +gain_toggle +gain_inc +gain_dec +trim_roll_inc +trim_roll_dec +trim_pitch_inc +trim_pitch_dec +input_hold_toggle +relay_1_on +relay_1_off +relay_1_toggle +relay_2_on +relay_2_off +relay_2_toggle +custom_1 +custom_2 +custom_3 +custom_4 +custom_5 +custom_6 + + + + +Disabled +shift +arm_toggle +arm +disarm +mode_toggle +enter_mode_1 +enter_mode_2 +enter_mode_3 +enter_mode_4 +enter_mode_5 +enter_mode_6 +mount_center +mount_tilt_up +mount_tilt_down +camera_trigger +camera_source_toggle +mount_pan_right +mount_pan_left +lights1_cycle +lights1_brighter +lights1_dimmer +lights2_cycle +lights2_brighter +lights2_dimmer +gain_toggle +gain_inc +gain_dec +trim_roll_inc +trim_roll_dec +trim_pitch_inc +trim_pitch_dec +input_hold_toggle +relay_1_on +relay_1_off +relay_1_toggle +relay_2_on +relay_2_off +relay_2_toggle +custom_1 +custom_2 +custom_3 +custom_4 +custom_5 +custom_6 + + + + + + +Disabled +shift +arm_toggle +arm +disarm +mode_toggle +enter_mode_1 +enter_mode_2 +enter_mode_3 +enter_mode_4 +enter_mode_5 +enter_mode_6 +mount_center +mount_tilt_up +mount_tilt_down +camera_trigger +camera_source_toggle +mount_pan_right +mount_pan_left +lights1_cycle +lights1_brighter +lights1_dimmer +lights2_cycle +lights2_brighter +lights2_dimmer +gain_toggle +gain_inc +gain_dec +trim_roll_inc +trim_roll_dec +trim_pitch_inc +trim_pitch_dec +input_hold_toggle +relay_1_on +relay_1_off +relay_1_toggle +relay_2_on +relay_2_off +relay_2_toggle +custom_1 +custom_2 +custom_3 +custom_4 +custom_5 +custom_6 + + + + +Disabled +shift +arm_toggle +arm +disarm +mode_toggle +enter_mode_1 +enter_mode_2 +enter_mode_3 +enter_mode_4 +enter_mode_5 +enter_mode_6 +mount_center +mount_tilt_up +mount_tilt_down +camera_trigger +camera_source_toggle +mount_pan_right +mount_pan_left +lights1_cycle +lights1_brighter +lights1_dimmer +lights2_cycle +lights2_brighter +lights2_dimmer +gain_toggle +gain_inc +gain_dec +trim_roll_inc +trim_roll_dec +trim_pitch_inc +trim_pitch_dec +input_hold_toggle +relay_1_on +relay_1_off +relay_1_toggle +relay_2_on +relay_2_off +relay_2_toggle +custom_1 +custom_2 +custom_3 +custom_4 +custom_5 +custom_6 + + + + + + +Disabled +shift +arm_toggle +arm +disarm +mode_toggle +enter_mode_1 +enter_mode_2 +enter_mode_3 +enter_mode_4 +enter_mode_5 +enter_mode_6 +mount_center +mount_tilt_up +mount_tilt_down +camera_trigger +camera_source_toggle +mount_pan_right +mount_pan_left +lights1_cycle +lights1_brighter +lights1_dimmer +lights2_cycle +lights2_brighter +lights2_dimmer +gain_toggle +gain_inc +gain_dec +trim_roll_inc +trim_roll_dec +trim_pitch_inc +trim_pitch_dec +input_hold_toggle +relay_1_on +relay_1_off +relay_1_toggle +relay_2_on +relay_2_off +relay_2_toggle +custom_1 +custom_2 +custom_3 +custom_4 +custom_5 +custom_6 + + + + +Disabled +shift +arm_toggle +arm +disarm +mode_toggle +enter_mode_1 +enter_mode_2 +enter_mode_3 +enter_mode_4 +enter_mode_5 +enter_mode_6 +mount_center +mount_tilt_up +mount_tilt_down +camera_trigger +camera_source_toggle +mount_pan_right +mount_pan_left +lights1_cycle +lights1_brighter +lights1_dimmer +lights2_cycle +lights2_brighter +lights2_dimmer +gain_toggle +gain_inc +gain_dec +trim_roll_inc +trim_roll_dec +trim_pitch_inc +trim_pitch_dec +input_hold_toggle +relay_1_on +relay_1_off +relay_1_toggle +relay_2_on +relay_2_off +relay_2_toggle +custom_1 +custom_2 +custom_3 +custom_4 +custom_5 +custom_6 + + + + + + +Disabled +shift +arm_toggle +arm +disarm +mode_toggle +enter_mode_1 +enter_mode_2 +enter_mode_3 +enter_mode_4 +enter_mode_5 +enter_mode_6 +mount_center +mount_tilt_up +mount_tilt_down +camera_trigger +camera_source_toggle +mount_pan_right +mount_pan_left +lights1_cycle +lights1_brighter +lights1_dimmer +lights2_cycle +lights2_brighter +lights2_dimmer +gain_toggle +gain_inc +gain_dec +trim_roll_inc +trim_roll_dec +trim_pitch_inc +trim_pitch_dec +input_hold_toggle +relay_1_on +relay_1_off +relay_1_toggle +relay_2_on +relay_2_off +relay_2_toggle +custom_1 +custom_2 +custom_3 +custom_4 +custom_5 +custom_6 + + + + +Disabled +shift +arm_toggle +arm +disarm +mode_toggle +enter_mode_1 +enter_mode_2 +enter_mode_3 +enter_mode_4 +enter_mode_5 +enter_mode_6 +mount_center +mount_tilt_up +mount_tilt_down +camera_trigger +camera_source_toggle +mount_pan_right +mount_pan_left +lights1_cycle +lights1_brighter +lights1_dimmer +lights2_cycle +lights2_brighter +lights2_dimmer +gain_toggle +gain_inc +gain_dec +trim_roll_inc +trim_roll_dec +trim_pitch_inc +trim_pitch_dec +input_hold_toggle +relay_1_on +relay_1_off +relay_1_toggle +relay_2_on +relay_2_off +relay_2_toggle +custom_1 +custom_2 +custom_3 +custom_4 +custom_5 +custom_6 + + + + + + +Disabled +shift +arm_toggle +arm +disarm +mode_toggle +enter_mode_1 +enter_mode_2 +enter_mode_3 +enter_mode_4 +enter_mode_5 +enter_mode_6 +mount_center +mount_tilt_up +mount_tilt_down +camera_trigger +camera_source_toggle +mount_pan_right +mount_pan_left +lights1_cycle +lights1_brighter +lights1_dimmer +lights2_cycle +lights2_brighter +lights2_dimmer +gain_toggle +gain_inc +gain_dec +trim_roll_inc +trim_roll_dec +trim_pitch_inc +trim_pitch_dec +input_hold_toggle +relay_1_on +relay_1_off +relay_1_toggle +relay_2_on +relay_2_off +relay_2_toggle +custom_1 +custom_2 +custom_3 +custom_4 +custom_5 +custom_6 + + + + +Disabled +shift +arm_toggle +arm +disarm +mode_toggle +enter_mode_1 +enter_mode_2 +enter_mode_3 +enter_mode_4 +enter_mode_5 +enter_mode_6 +mount_center +mount_tilt_up +mount_tilt_down +camera_trigger +camera_source_toggle +mount_pan_right +mount_pan_left +lights1_cycle +lights1_brighter +lights1_dimmer +lights2_cycle +lights2_brighter +lights2_dimmer +gain_toggle +gain_inc +gain_dec +trim_roll_inc +trim_roll_dec +trim_pitch_inc +trim_pitch_dec +input_hold_toggle +relay_1_on +relay_1_off +relay_1_toggle +relay_2_on +relay_2_off +relay_2_toggle +custom_1 +custom_2 +custom_3 +custom_4 +custom_5 +custom_6 + + + + + + +Disabled +shift +arm_toggle +arm +disarm +mode_toggle +enter_mode_1 +enter_mode_2 +enter_mode_3 +enter_mode_4 +enter_mode_5 +enter_mode_6 +mount_center +mount_tilt_up +mount_tilt_down +camera_trigger +camera_source_toggle +mount_pan_right +mount_pan_left +lights1_cycle +lights1_brighter +lights1_dimmer +lights2_cycle +lights2_brighter +lights2_dimmer +gain_toggle +gain_inc +gain_dec +trim_roll_inc +trim_roll_dec +trim_pitch_inc +trim_pitch_dec +input_hold_toggle +relay_1_on +relay_1_off +relay_1_toggle +relay_2_on +relay_2_off +relay_2_toggle +custom_1 +custom_2 +custom_3 +custom_4 +custom_5 +custom_6 + + + + +Disabled +shift +arm_toggle +arm +disarm +mode_toggle +enter_mode_1 +enter_mode_2 +enter_mode_3 +enter_mode_4 +enter_mode_5 +enter_mode_6 +mount_center +mount_tilt_up +mount_tilt_down +camera_trigger +camera_source_toggle +mount_pan_right +mount_pan_left +lights1_cycle +lights1_brighter +lights1_dimmer +lights2_cycle +lights2_brighter +lights2_dimmer +gain_toggle +gain_inc +gain_dec +trim_roll_inc +trim_roll_dec +trim_pitch_inc +trim_pitch_dec +input_hold_toggle +relay_1_on +relay_1_off +relay_1_toggle +relay_2_on +relay_2_off +relay_2_toggle +custom_1 +custom_2 +custom_3 +custom_4 +custom_5 +custom_6 + + + + + + +Disabled +shift +arm_toggle +arm +disarm +mode_toggle +enter_mode_1 +enter_mode_2 +enter_mode_3 +enter_mode_4 +enter_mode_5 +enter_mode_6 +mount_center +mount_tilt_up +mount_tilt_down +camera_trigger +camera_source_toggle +mount_pan_right +mount_pan_left +lights1_cycle +lights1_brighter +lights1_dimmer +lights2_cycle +lights2_brighter +lights2_dimmer +gain_toggle +gain_inc +gain_dec +trim_roll_inc +trim_roll_dec +trim_pitch_inc +trim_pitch_dec +input_hold_toggle +relay_1_on +relay_1_off +relay_1_toggle +relay_2_on +relay_2_off +relay_2_toggle +custom_1 +custom_2 +custom_3 +custom_4 +custom_5 +custom_6 + + + + +Disabled +shift +arm_toggle +arm +disarm +mode_toggle +enter_mode_1 +enter_mode_2 +enter_mode_3 +enter_mode_4 +enter_mode_5 +enter_mode_6 +mount_center +mount_tilt_up +mount_tilt_down +camera_trigger +camera_source_toggle +mount_pan_right +mount_pan_left +lights1_cycle +lights1_brighter +lights1_dimmer +lights2_cycle +lights2_brighter +lights2_dimmer +gain_toggle +gain_inc +gain_dec +trim_roll_inc +trim_roll_dec +trim_pitch_inc +trim_pitch_dec +input_hold_toggle +relay_1_on +relay_1_off +relay_1_toggle +relay_2_on +relay_2_off +relay_2_toggle +custom_1 +custom_2 +custom_3 +custom_4 +custom_5 +custom_6 + + + + + + +Disabled +shift +arm_toggle +arm +disarm +mode_toggle +enter_mode_1 +enter_mode_2 +enter_mode_3 +enter_mode_4 +enter_mode_5 +enter_mode_6 +mount_center +mount_tilt_up +mount_tilt_down +camera_trigger +camera_source_toggle +mount_pan_right +mount_pan_left +lights1_cycle +lights1_brighter +lights1_dimmer +lights2_cycle +lights2_brighter +lights2_dimmer +gain_toggle +gain_inc +gain_dec +trim_roll_inc +trim_roll_dec +trim_pitch_inc +trim_pitch_dec +input_hold_toggle +relay_1_on +relay_1_off +relay_1_toggle +relay_2_on +relay_2_off +relay_2_toggle +custom_1 +custom_2 +custom_3 +custom_4 +custom_5 +custom_6 + + + + +Disabled +shift +arm_toggle +arm +disarm +mode_toggle +enter_mode_1 +enter_mode_2 +enter_mode_3 +enter_mode_4 +enter_mode_5 +enter_mode_6 +mount_center +mount_tilt_up +mount_tilt_down +camera_trigger +camera_source_toggle +mount_pan_right +mount_pan_left +lights1_cycle +lights1_brighter +lights1_dimmer +lights2_cycle +lights2_brighter +lights2_dimmer +gain_toggle +gain_inc +gain_dec +trim_roll_inc +trim_roll_dec +trim_pitch_inc +trim_pitch_dec +input_hold_toggle +relay_1_on +relay_1_off +relay_1_toggle +relay_2_on +relay_2_off +relay_2_toggle +custom_1 +custom_2 +custom_3 +custom_4 +custom_5 +custom_6 + + + + + + +Servo +Relay + + + +0 50 +seconds + + +1000 2000 +pwm + + +1000 2000 +pwm + + +0 1000 +meters + + + +Low +High + + + +0 10000 +milliseconds + + +0 180 +Degrees + + + +Disabled +PX4 AUX1 +PX4 AUX2 +PX4 AUX3 +PX4 AUX4(fast capture) +PX4 AUX5 +PX4 AUX6 + + + + +TriggerLow +TriggerHigh + + + + + + +Disabled +APM2 A9 pin +APM1 relay +Pixhawk AUXOUT1 +Pixhawk AUXOUT2 +Pixhawk AUXOUT3 +Pixhawk AUXOUT4 +Pixhawk AUXOUT5 +Pixhawk AUXOUT6 +PX4 FMU Relay1 +PX4 FMU Relay2 +PX4IO Relay1 +PX4IO Relay2 +PX4IO ACC1 +PX4IO ACC2 + + + + +Disabled +APM2 A9 pin +APM1 relay +Pixhawk AUXOUT1 +Pixhawk AUXOUT2 +Pixhawk AUXOUT3 +Pixhawk AUXOUT4 +Pixhawk AUXOUT5 +Pixhawk AUXOUT6 +PX4 FMU Relay1 +PX4 FMU Relay2 +PX4IO Relay1 +PX4IO Relay2 +PX4IO ACC1 +PX4IO ACC2 + + + + +Disabled +APM2 A9 pin +APM1 relay +Pixhawk AUXOUT1 +Pixhawk AUXOUT2 +Pixhawk AUXOUT3 +Pixhawk AUXOUT4 +Pixhawk AUXOUT5 +Pixhawk AUXOUT6 +PX4 FMU Relay1 +PX4 FMU Relay2 +PX4IO Relay1 +PX4IO Relay2 +PX4IO ACC1 +PX4IO ACC2 + + + + +Disabled +APM2 A9 pin +APM1 relay +Pixhawk AUXOUT1 +Pixhawk AUXOUT2 +Pixhawk AUXOUT3 +Pixhawk AUXOUT4 +Pixhawk AUXOUT5 +Pixhawk AUXOUT6 +PX4 FMU Relay1 +PX4 FMU Relay2 +PX4IO Relay1 +PX4IO Relay2 +PX4IO ACC1 +PX4IO ACC2 + + + + +Off +On +NoChange + + + + + +-400 400 +1 +milligauss + + +-400 400 +1 +milligauss + + +-400 400 +1 +milligauss + + +-3.142 3.142 +0.01 +Radians + + + +Disabled +Internal-Learning +EKF-Learning + + + + +Disabled +Enabled + + + + +Disabled +Enabled + + + + +Disabled +Use Throttle +Use Current + + + +-1000 1000 +1 +Offset per Amp or at Full Throttle + + +-1000 1000 +1 +Offset per Amp or at Full Throttle + + +-1000 1000 +1 +Offset per Amp or at Full Throttle + + + +None +Yaw45 +Yaw90 +Yaw135 +Yaw180 +Yaw225 +Yaw270 +Yaw315 +Roll180 +Roll180Yaw45 +Roll180Yaw90 +Roll180Yaw135 +Pitch180 +Roll180Yaw225 +Roll180Yaw270 +Roll180Yaw315 +Roll90 +Roll90Yaw45 +Roll90Yaw90 +Roll90Yaw135 +Roll270 +Roll270Yaw45 +Roll270Yaw90 +Roll270Yaw136 +Pitch90 +Pitch270 +Pitch180Yaw90 +Pitch180Yaw270 +Roll90Pitch90 +Roll180Pitch90 +Roll270Pitch90 +Roll90Pitch180 +Roll270Pitch180 +Roll90Pitch270 +Roll180Pitch270 +Roll270Pitch270 +Roll90Pitch180Yaw90 +Roll90Yaw270 +Yaw293Pitch68Roll90 + + + + +Internal +External +ForcedExternal + + + +-400 400 +1 +milligauss + + +-400 400 +1 +milligauss + + +-400 400 +1 +milligauss + + +-1000 1000 +1 +Offset per Amp or at Full Throttle + + +-1000 1000 +1 +Offset per Amp or at Full Throttle + + +-1000 1000 +1 +Offset per Amp or at Full Throttle + + + +FirstCompass +SecondCompass +ThirdCompass + + + +-400 400 +1 +milligauss + + +-400 400 +1 +milligauss + + +-400 400 +1 +milligauss + + +-1000 1000 +1 +Offset per Amp or at Full Throttle + + +-1000 1000 +1 +Offset per Amp or at Full Throttle + + +-1000 1000 +1 +Offset per Amp or at Full Throttle + + + + + + + + + +Disabled +Enabled + + + + +None +Yaw45 +Yaw90 +Yaw135 +Yaw180 +Yaw225 +Yaw270 +Yaw315 +Roll180 +Roll180Yaw45 +Roll180Yaw90 +Roll180Yaw135 +Pitch180 +Roll180Yaw225 +Roll180Yaw270 +Roll180Yaw315 +Roll90 +Roll90Yaw45 +Roll90Yaw90 +Roll90Yaw135 +Roll270 +Roll270Yaw45 +Roll270Yaw90 +Roll270Yaw136 +Pitch90 +Pitch270 +Pitch180Yaw90 +Pitch180Yaw270 +Roll90Pitch90 +Roll180Pitch90 +Roll270Pitch90 +Roll90Pitch180 +Roll270Pitch180 +Roll90Pitch270 +Roll180Pitch270 +Roll270Pitch270 +Roll90Pitch180Yaw90 +Roll90Yaw270 +Yaw293Pitch68Roll90 + + + + +Internal +External +ForcedExternal + + + + +Disabled +Enabled + + + + +None +Yaw45 +Yaw90 +Yaw135 +Yaw180 +Yaw225 +Yaw270 +Yaw315 +Roll180 +Roll180Yaw45 +Roll180Yaw90 +Roll180Yaw135 +Pitch180 +Roll180Yaw225 +Roll180Yaw270 +Roll180Yaw315 +Roll90 +Roll90Yaw45 +Roll90Yaw90 +Roll90Yaw135 +Roll270 +Roll270Yaw45 +Roll270Yaw90 +Roll270Yaw136 +Pitch90 +Pitch270 +Pitch180Yaw90 +Pitch180Yaw270 +Roll90Pitch90 +Roll180Pitch90 +Roll270Pitch90 +Roll90Pitch180 +Roll270Pitch180 +Roll90Pitch270 +Roll180Pitch270 +Roll270Pitch270 +Roll90Pitch180Yaw90 +Roll90Yaw270 +Yaw293Pitch68Roll90 + + + + +Internal +External +ForcedExternal + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +4 32 + +Very Strict +Default +Relaxed +Very Relaxed + +0.1 + + + + + + +rad/s + + +rad/s + + +rad/s + + +rad/s + + +rad/s + + +rad/s + + +rad/s + + +rad/s + + +rad/s + + +0.8 1.2 + + +0.8 1.2 + + +0.8 1.2 + + +-3.5 3.5 +m/s/s + + +-3.5 3.5 +m/s/s + + +-3.5 3.5 +m/s/s + + +0.8 1.2 + + +0.8 1.2 + + +0.8 1.2 + + +-3.5 3.5 +m/s/s + + +-3.5 3.5 +m/s/s + + +-3.5 3.5 +m/s/s + + +0.8 1.2 + + +0.8 1.2 + + +0.8 1.2 + + +-3.5 3.5 +m/s/s + + +-3.5 3.5 +m/s/s + + +-3.5 3.5 +m/s/s + + +0 127 +Hz + + +0 127 +Hz + + + +Disabled +Enabled + + + + +Disabled +Enabled + + + + +Disabled +Enabled + + + +0.05 50 + + + +Never +Start-up only + + + + +Don't adjust the trims +Assume first orientation was level +Assume ACC_BODYFIX is perfectly aligned to the vehicle + + + + +IMU 1 +IMU 2 +IMU 3 + + + +m + + +m + + +m + + +m + + +m + + +m + + +m + + +m + + +m + + +True + + +True + + +True + + +True + + +True + + +True + + + + + + +0 2000 +50 +cm/s + + +100 1000 +1 +cm + + +0 1000 +50 +cm/s + + +0 500 +10 +cm/s + + +0 2000 +50 +cm/s + + +50 500 +10 +cm/s/s + + +50 500 +10 +cm/s/s + + +500 5000 +1 +cm/s/s/s + + +100 981 +1 +cm/s/s + + +25 250 +1 +cm/s/s + + + +Disable +Enable + + + + + +0 10000 +100 +cm + + +-90 90 +1 +deg/s + + + + +500 18000 +100 +Centi-Degrees/Sec + + +0 72000 + +Disabled +Slow +Medium +Fast + +1000 +Centi-Degrees/Sec/Sec + + +0 72000 + +Disabled +Slow +Medium +Fast + +1000 +Centi-Degrees/Sec/Sec + + + +Disabled +Enabled + + + +0 180000 + +Disabled +Slow +Medium +Fast + +1000 +Centi-Degrees/Sec/Sec + + +0 180000 + +Disabled +Slow +Medium +Fast + +1000 +Centi-Degrees/Sec/Sec + + + +Disabled +Enabled + + + +3.000 12.000 + + +3.000 12.000 + + +3.000 6.000 + + +0.5 10.0 + + +0.08 0.30 +0.005 + + +0.01 0.5 +0.01 + + +0 1 +0.01 +Percent + + +0.0 0.02 +0.001 + + +1 100 +1 +Hz + + +0.08 0.30 +0.005 + + +0.01 0.5 +0.01 + + +0 1 +0.01 +Percent + + +0.0 0.02 +0.001 + + +1 100 +1 +Hz + + +0.10 0.50 +0.005 + + +0.010 0.05 +0.01 + + +0 1 +0.01 +Percent + + +0.000 0.02 +0.001 + + +1 100 +1 +Hz + + +0.1 0.25 + + +0.5 0.9 + + + + +0.5 5 +0.1 +Hz + + + + +0 10 +1 +Hz + + +0 10 +1 +Hz + + +0 10 +1 +Hz + + +0 10 +1 +Hz + + +0 10 +1 +Hz + + +0 10 +1 +Hz + + +0 10 +1 +Hz + + +0 10 +1 +Hz + + +0 10 +1 +Hz + + + + +0 10 +1 +Hz + + +0 10 +1 +Hz + + +0 10 +1 +Hz + + +0 10 +1 +Hz + + +0 10 +1 +Hz + + +0 10 +1 +Hz + + +0 10 +1 +Hz + + +0 10 +1 +Hz + + +0 10 +1 +Hz + + + + +0 10 +1 +Hz + + +0 10 +1 +Hz + + +0 10 +1 +Hz + + +0 10 +1 +Hz + + +0 10 +1 +Hz + + +0 10 +1 +Hz + + +0 10 +1 +Hz + + +0 10 +1 +Hz + + +0 10 +1 +Hz + + + + +0 10 +1 +Hz + + +0 10 +1 +Hz + + +0 10 +1 +Hz + + +0 10 +1 +Hz + + +0 10 +1 +Hz + + +0 10 +1 +Hz + + +0 10 +1 +Hz + + +0 10 +1 +Hz + + +0 10 +1 +Hz + + + + +0.0 1.0 +.01 + + + +Disabled +Enabled + + + +0.1 0.4 +.01 + + +0.1 0.4 +.01 + + +0 127 +1 +m/s + + +-0.1745 +0.1745 +0.01 +Radians + + +-0.1745 +0.1745 +0.01 +Radians + + +-0.1745 +0.1745 +0.01 +Radians + + + +None +Yaw45 +Yaw90 +Yaw135 +Yaw180 +Yaw225 +Yaw270 +Yaw315 +Roll180 +Roll180Yaw45 +Roll180Yaw90 +Roll180Yaw135 +Pitch180 +Roll180Yaw225 +Roll180Yaw270 +Roll180Yaw315 +Roll90 +Roll90Yaw45 +Roll90Yaw90 +Roll90Yaw135 +Roll270 +Roll270Yaw45 +Roll270Yaw90 +Roll270Yaw136 +Pitch90 +Pitch270 +Pitch180Yaw90 +Pitch180Yaw270 +Roll90Pitch90 +Roll180Pitch90 +Roll270Pitch90 +Roll90Pitch180 +Roll270Pitch180 +Roll90Pitch270 +Roll180Pitch270 +Roll270Pitch270 +Roll90Pitch180Yaw90 +Roll90Yaw270 + + + +0.001 0.5 +.01 + + +0 10 +1 + + + +Disabled +Enabled +Enable EKF2 + + + + + + +Retracted +Neutral +MavLink Targeting +RC Targeting +GPS Point + + + +-180.00 179.99 +1 +Degrees + + +-180.00 179.99 +1 +Degrees + + +-180.00 179.99 +1 +Degrees + + +-180.00 179.99 +1 +Degrees + + +-180.00 179.99 +1 +Degrees + + +-180.00 179.99 +1 +Degrees + + + +Disabled +Enabled + + + + +Disabled +Enabled + + + + +Disabled +Enabled + + + + +Disabled +RC5 +RC6 +RC7 +RC8 +RC9 +RC10 +RC11 +RC12 + + + +-18000 17999 +1 +Centi-Degrees + + +-18000 17999 +1 +Centi-Degrees + + + +Disabled +RC5 +RC6 +RC7 +RC8 +RC9 +RC10 +RC11 +RC12 + + + +-18000 17999 +1 +Centi-Degrees + + +-18000 17999 +1 +Centi-Degrees + + + +Disabled +RC5 +RC6 +RC7 +RC8 +RC9 +RC10 +RC11 +RC12 + + + +-18000 17999 +1 +Centi-Degrees + + +-18000 17999 +1 +Centi-Degrees + + +0 100 +1 + + +0.0 0.2 +.005 +Seconds + + +0.0 0.2 +.005 +Seconds + + + +None +Servo +3DR Solo +Alexmos Serial +SToRM32 MAVLink +SToRM32 Serial + +True + + + +Retracted +Neutral +MavLink Targeting +RC Targeting +GPS Point + + + +-180.00 179.99 +1 +Degrees + + +-180.00 179.99 +1 +Degrees + + +-180.00 179.99 +1 +Degrees + + +-180.00 179.99 +1 +Degrees + + +-180.00 179.99 +1 +Degrees + + +-180.00 179.99 +1 +Degrees + + + +Disabled +Enabled + + + + +Disabled +Enabled + + + + +Disabled +Enabled + + + + +Disabled +RC5 +RC6 +RC7 +RC8 +RC9 +RC10 +RC11 +RC12 + + + +-18000 17999 +1 +Centi-Degrees + + +-18000 17999 +1 +Centi-Degrees + + + +Disabled +RC5 +RC6 +RC7 +RC8 +RC9 +RC10 +RC11 +RC12 + + + +-18000 17999 +1 +Centi-Degrees + + +-18000 17999 +1 +Centi-Degrees + + + +Disabled +RC5 +RC6 +RC7 +RC8 +RC9 +RC10 +RC11 +RC12 + + + +-18000 17999 +1 +Centi-Degrees + + +-18000 17999 +1 +Centi-Degrees + + +0.0 0.2 +.005 +Seconds + + +0.0 0.2 +.005 +Seconds + + + +None +Servo +3DR Solo +Alexmos Serial +SToRM32 MAVLink +SToRM32 Serial + + + + + + +None +File +MAVLink +BothFileAndMAVLink + + + + + + +Disabled +Enabled + + + + +Disabled +Enabled + + + + +Disabled +Enabled + + + + + + +Disabled +Analog Voltage Only +Analog Voltage and Current +SMBus +Bebop + + + + +Disabled +A0 +A1 +Pixhawk +A13 +PX4 + + + + +Disabled +A1 +A2 +Pixhawk +A12 +PX4 + + + + + +Amps/Volt + + +Volts + + +50 +mAh + + +1 +Watts + + + +Disabled +Analog Voltage Only +Analog Voltage and Current +SMBus +Bebop + + + + +Disabled +A0 +A1 +Pixhawk +A13 +PX4 + + + + +Disabled +A1 +A2 +Pixhawk +A12 +PX4 + + + + + +Amps/Volt + + +Volts + + +50 +mAh + + +1 +Amps + + + + + +No PWMs +Two PWMs +Four PWMs +Six PWMs +Three PWMs and One Capture + +True + + + +Disabled +Enabled +Auto + +True + + + +Disabled +Enabled +Auto + +True + + + +Disabled +Enabled + +True + + + +Disabled +50Hz +75Hz +100Hz +150Hz +200Hz +250Hz +300Hz + +True + + +-32767 32768 + + + +Disabled +Enabled +Dynamic ID/Update + + + +0:Ch1,1:Ch2,2:Ch3,3:Ch4,4:Ch5,5:Ch6,6:Ch7,7:Ch8,8:Ch9,9:Ch10,10:Ch11,11:Ch12,12:Ch13,13:Ch14 + +Disabled +Enabled + +True + + +-1 80 +degreesC + + + +AUTO +PX4V1 +Pixhawk +Pixhawk2 +Pixracer +PixhawkMini +Pixhawk2Slim +VRBrain 5.1 +VRBrain 5.2 +VR Micro Brain 5.1 +VR Micro Brain 5.2 +VRBrain Core 1.0 +VRBrain 5.4 + +True + + + + +True +True +1 +pascals + + +True +True +1 +degrees celsius + + +0.1 +meters + + + +FirstBaro +2ndBaro +3rdBaro + + + + +Disabled +Bus0 + + + +1.0:Fresh Water, 1.024:Salt Water + + +pascals + + + +Keep +Reset + +True + + + + + +None +AUTO +uBlox +MTK +MTK19 +NMEA +SiRF +HIL +SwiftNav +PX4-UAVCAN +SBF +GSOF +QURT +ERB +MAV +NOVA + +True + + + +None +AUTO +uBlox +MTK +MTK19 +NMEA +SiRF +HIL +SwiftNav +PX4-UAVCAN +SBF +GSOF + +True + + + +Portable +Stationary +Pedestrian +Automotive +Sea +Airborne1G +Airborne2G +Airborne4G + + + + +Disabled +Enabled + + + + +Any +FloatRTK +IntegerRTK + +True + + + +Disabled +Enabled +NoChange + + + +-100 90 +Degrees + + + +send to first GPS +send to 2nd GPS +send to all + + + + +None +All +External only + + + + +Disabled +log every sample +log every 5 samples + +True + + +0:GPS,1:SBAS,2:Galileo,3:Beidou,4:IMES,5:QZSS,6:GLOSNASS + +Leave as currently configured +GPS-NoSBAS +GPS+SBAS +Galileo-NoSBAS +Galileo+SBAS +Beidou +GPS+IMES+QZSS+SBAS (Japan Only) +GLONASS +GLONASS+SBAS +GPS+GLONASS+SBAS + + + + +Do not save config +Save config +Save only when needed + + + +0:GPS,1:SBAS,2:Galileo,3:Beidou,4:IMES,5:QZSS,6:GLOSNASS + +Leave as currently configured +GPS-NoSBAS +GPS+SBAS +Galileo-NoSBAS +Galileo+SBAS +Beidou +GPS+IMES+QZSS+SBAS (Japan Only) +GLONASS +GLONASS+SBAS +GPS+GLONASS+SBAS + + + + +Disables automatic configuration +Enable automatic configuration + + + + +10Hz +8Hz +5Hz + + + + +10Hz +8Hz +5Hz + + + +m + + +m + + +m + + +m + + +m + + +m + + + + + +Disabled +Pixhawk Aux1 +Pixhawk Aux2 +Pixhawk Aux3 +Pixhawk Aux4 +Pixhawk Aux5 +Pixhawk Aux6 +Pixhawk 3.3ADC1 +Pixhawk 3.3ADC2 +Pixhawk 6.6ADC + + + + +Low +High + + + + +Disabled +Pixhawk Aux1 +Pixhawk Aux2 +Pixhawk Aux3 +Pixhawk Aux4 +Pixhawk Aux5 +Pixhawk Aux6 +Pixhawk 3.3ADC1 +Pixhawk 3.3ADC2 +Pixhawk 6.6ADC + + + + +Low +High + + + + +Disabled +Pixhawk Aux1 +Pixhawk Aux2 +Pixhawk Aux3 +Pixhawk Aux4 +Pixhawk Aux5 +Pixhawk Aux6 +Pixhawk 3.3ADC1 +Pixhawk 3.3ADC2 +Pixhawk 6.6ADC + + + + +Low +High + + + + + + +Disabled +ShowSlips +ShowOverruns + + + + +50Hz +100Hz +200Hz +250Hz +300Hz +400Hz + +True + + + + + +Disabled +Enabled + + + +0:Altitude,1:Circle,2:Polygon + +None +Altitude +Circle +Altitude and Circle +Polygon +Altitude and Polygon +Circle and Polygon +All + + + + +Report Only +RTL or Land + + + +10 1000 +1 +Meters + + +30 10000 +Meters + + +1 10 +Meters + + +1 20 + + +10 1000 +1 +Meters + + + + +0:StopAtFence,1:UseProximitySensor + +None +StopAtFence +UseProximitySensor +All + + + + + + + +0.1 +kilometers + + + +DoNotIncludeHome +IncludeHome + + + + + + +normal +reverse + + + + +normal +reverse + + + + +normal +reverse + + + + +normal +reverse + + + + +normal +reverse + + + + +normal +reverse + + + + +normal +reverse + + + + +normal +reverse + + + +0.0 1.5 +0.1 + + +0 500 +pwm + + +0.25 0.8 + + +0.9:Low, 0.95:Default, 1.0:High + + +6 35 +Volts + + +6 35 +Volts + + +0 200 +Amps + + + +Normal +OneShot +OneShot125 +Brushed16kHz + +True + + +0 2000 + + +0 2000 + + +0.0:Low, 0.15:Default, 0.3:High + + +0.0:Low, 0.1:Default, 0.2:High + + +0 10 +Seconds + + +0.2 0.8 + + + +Disabled +Learn +LearnAndSave + + + + +PWM enabled while disarmed +PWM disabled while disarmed + + + + + +1 8 +1 +True + + +1 8 +1 +True + + +1 8 +1 +True + + +1 8 +1 +True + + +1 8 +1 +True + + +1 8 +1 +True + + + + + +Disabled +Enabled + + + +0.05 5.0 +0.05 + + +0.05 5.0 +0.05 + + +0.1 10.0 +0.1 +meters + + +0.1 10.0 +0.1 +meters + + +0.01 0.5 +0.01 + + +0.5 5.0 +0.1 +m/s + + +0.01 1.0 +0.1 + + +0.0 1.0 +0.1 + + +0.001 0.05 +0.001 +rad/s + + +0.05 1.0 +0.01 +m/s/s + + +0.0000001 0.00001 +rad/s + + +0.00001 0.001 +m/s/s + + +0.0001 0.01 +gauss/s + + +0.0001 0.01 +gauss/s + + +0 500 +10 +milliseconds + + +0 500 +10 +milliseconds + + + +GPS 3D Vel and 2D Pos +GPS 2D vel and 2D pos +GPS 2D pos +No GPS use optical flow + + + +1 100 +1 + + +1 100 +1 + + +1 100 +1 + + +1 100 +1 + + +1 100 +1 + + + +Speed and Height +Acceleration +Never +Always + + + +100 500 +50 + + +10 50 +5 +meters + + +1 50 +1 + + +0.05 1.0 +0.05 +rad/s + + +1 100 +1 + + +0 500 +10 +milliseconds + + +1 100 +1 + + +1.0 4.0 +0.1 + + + +Trust EKF more +Trust DCM more + + + + +Use Baro +Use Range Finder + + + +0:NSats,1:HDoP,2:speed error,3:horiz pos error,4:yaw error,5:pos drift,6:vert speed,7:horiz speed + + + + + +Disabled +Enabled + + + + +GPS 3D Vel and 2D Pos +GPS 2D vel and 2D pos +GPS 2D pos +No GPS + + + +0.05 5.0 +0.05 +m/s + + +0.05 5.0 +0.05 +m/s + + +100 1000 +25 + + +0.1 10.0 +0.1 +m + + +100 1000 +25 + + +10 100 +5 +m + + +0 250 +10 +msec + + + +Use Baro +Use Range Finder +Use GPS +Use Range Beacon + + + +0.1 10.0 +0.1 +m + + +100 1000 +25 + + +0 250 +10 +msec + + +0.01 0.5 +0.01 +gauss + + + +When flying +When manoeuvring +Never +After first climb yaw reset +Always + + + +100 1000 +25 + + +0.5 5.0 +0.1 +m/s + + +100 1000 +25 + + +0.1 10.0 +0.1 +m + + +100 1000 +25 + + +1.0 4.0 +0.1 +rad/s + + +0.05 1.0 +0.05 +rad/s + + +100 1000 +25 + + +0 250 +10 +msec + + +0.0001 0.1 +0.0001 +rad/s + + +0.01 1.0 +0.01 +m/s/s + + +0.00001 0.001 +rad/s/s + + +0.000001 0.001 +1/s + + +0.00001 0.001 +m/s/s/s + + +0.01 1.0 +0.1 +m/s/s + + +0.0 1.0 +0.1 + + +0:NSats,1:HDoP,2:speed error,3:horiz pos error,4:yaw error,5:pos drift,6:vert speed,7:horiz speed + + +1 127 + + +50 200 +% + + +0.5 50.0 +m/s + + + +Disabled +FirstIMU +FirstAndSecondIMU +AllIMUs + + + +0.05 1.0 +0.05 +gauss + + +100 1000 +25 + + +10 50 +5 + + +0.00001 0.01 +gauss/s + + +0.00001 0.01 +gauss/s + + +-1 70 +1 +% + + +0 0.2 +0.01 + + +0.1 10.0 +0.1 +m + + +100 1000 +25 + + +0 250 +10 +msec + + + + +0 32766 +1 + + + +Resume Mission +Restart Mission + + + + + + +None +Analog +MaxbotixI2C +PulsedLightI2C +PX4-I2C +PX4-PWM +BBB-PRU +LightWareI2C +LightWareSerial +Bebop +MAVLink +uLanding +LeddarOne +MaxbotixSerial + + + + +Not Used +APM2-A0 +APM2-A1 +APM2-A2 +APM2-A3 +APM2-A4 +APM2-A5 +APM2-A6 +APM2-A7 +APM2-A8 +APM2-A9 +PX4-airspeed port +Pixhawk-airspeed port +APM1-airspeed port + + + +0.001 +meters/Volt + + +0.001 +Volts + + + +Linear +Inverted +Hyperbolic + + + +1 +centimeters + + +1 +centimeters + + + +Not Used +Pixhawk AUXOUT1 +Pixhawk AUXOUT2 +Pixhawk AUXOUT3 +Pixhawk AUXOUT4 +Pixhawk AUXOUT5 +Pixhawk AUXOUT6 +PX4 FMU Relay1 +PX4 FMU Relay2 +PX4IO Relay1 +PX4IO Relay2 +PX4IO ACC1 +PX4IO ACC2 + + + +1 +milliseconds + + + +No +Yes + + + +0 32767 +meters + + +0 127 +1 +centimeters + + +0 127 +1 + + +m + + +m + + +m + + + +None +Analog +MaxbotixI2C +PulsedLightI2C +PX4-I2C +PX4-PWM +BBB-PRU +LightWareI2C +LightWareSerial +Bebop +MAVLink +uLanding +LeddarOne +MaxbotixSerial + + + + +Not Used +APM2-A0 +APM2-A1 +APM2-A2 +APM2-A3 +APM2-A4 +APM2-A5 +APM2-A6 +APM2-A7 +APM2-A8 +APM2-A9 +PX4-airspeed port +Pixhawk-airspeed port +APM1-airspeed port + + + +0.001 +meters/Volt + + +0.001 +Volts + + + +Linear +Inverted +Hyperbolic + + + +1 +centimeters + + +1 +centimeters + + + +Not Used +Pixhawk AUXOUT1 +Pixhawk AUXOUT2 +Pixhawk AUXOUT3 +Pixhawk AUXOUT4 +Pixhawk AUXOUT5 +Pixhawk AUXOUT6 +PX4 FMU Relay1 +PX4 FMU Relay2 +PX4IO Relay1 +PX4IO Relay2 +PX4IO ACC1 +PX4IO ACC2 + + + +1 +milliseconds + + + +No +Yes + + + +0 127 +1 +centimeters + + +0 127 +1 + + +m + + +m + + +m + + + +None +Analog +APM2-MaxbotixI2C +APM2-PulsedLightI2C +PX4-I2C +PX4-PWM +BBB-PRU +LightWareI2C +LightWareSerial +Bebop +MAVLink +uLanding +LeddarOne +MaxbotixSerial + + + + +Not Used +APM2-A0 +APM2-A1 +APM2-A2 +APM2-A3 +APM2-A4 +APM2-A5 +APM2-A6 +APM2-A7 +APM2-A8 +APM2-A9 +PX4-airspeed port +Pixhawk-airspeed port +APM1-airspeed port + + + +0.001 +meters/Volt + + +0.001 +Volts + + + +Linear +Inverted +Hyperbolic + + + +1 +centimeters + + +1 +centimeters + + + +Not Used +Pixhawk AUXOUT1 +Pixhawk AUXOUT2 +Pixhawk AUXOUT3 +Pixhawk AUXOUT4 +Pixhawk AUXOUT5 +Pixhawk AUXOUT6 +PX4 FMU Relay1 +PX4 FMU Relay2 +PX4IO Relay1 +PX4IO Relay2 +PX4IO ACC1 +PX4IO ACC2 + + + +1 +milliseconds + + + +No +Yes + + + +0 127 +1 +centimeters + + +0 127 +1 + + +m + + +m + + +m + + + +None +Analog +APM2-MaxbotixI2C +APM2-PulsedLightI2C +PX4-I2C +PX4-PWM +BBB-PRU +LightWareI2C +LightWareSerial +Bebop +MAVLink +uLanding +LeddarOne +MaxbotixSerial + + + + +Not Used +APM2-A0 +APM2-A1 +APM2-A2 +APM2-A3 +APM2-A4 +APM2-A5 +APM2-A6 +APM2-A7 +APM2-A8 +APM2-A9 +PX4-airspeed port +Pixhawk-airspeed port +APM1-airspeed port + + + +0.001 +meters/Volt + + +0.001 +Volts + + + +Linear +Inverted +Hyperbolic + + + +1 +centimeters + + +1 +centimeters + + + +Not Used +Pixhawk AUXOUT1 +Pixhawk AUXOUT2 +Pixhawk AUXOUT3 +Pixhawk AUXOUT4 +Pixhawk AUXOUT5 +Pixhawk AUXOUT6 +PX4 FMU Relay1 +PX4 FMU Relay2 +PX4IO Relay1 +PX4IO Relay2 +PX4IO ACC1 +PX4IO ACC2 + + + +1 +milliseconds + + + +No +Yes + + + +0 127 +1 +centimeters + + +0 127 +1 + + +m + + +m + + +m + + + + + +Disable +Enable + + + +1 +meters + + + + + +Disabled +Enabled + + + +-200 +200 +1 + + +-200 +200 +1 + + +-18000 +18000 +1 + + +m + + +m + + +m + + +0 255 + + + + + +None +PX4-PWM + + + +0.001 + + +1 + + +1 + + +0.1 + + + +None +PX4-PWM + + + +0.001 + + + + + +Off +Low +Medium +High + + + + +Disable +Enable + + + + +Disable +Enable + + + + + + +None +LightWareSF40C + + + + +Default +Upside Down + + + +-180 180 + + +0 360 + + +0 45 + + +0 360 + + +0 45 + + +0 360 + + +0 45 + + +0 360 + + +0 45 + + +0 360 + + +0 45 + + +0 360 + + +0 45 + + + +None +LightWareSF40C + + + + +Default +Upside Down + + + +-180 180 + + + + + +Disabled +Enabled + + + + +None +Servo +EPM + + + +1000 2000 + + +1000 2000 + + +1000 2000 + + +0 255 +seconds + + +0 255 + + + diff --git a/src/FirmwarePlugin/APM/APMParameterFactMetaData.Sub.3.5.xml b/src/FirmwarePlugin/APM/APMParameterFactMetaData.Sub.3.5.xml new file mode 100644 index 0000000..8756cfa --- /dev/null +++ b/src/FirmwarePlugin/APM/APMParameterFactMetaData.Sub.3.5.xml @@ -0,0 +1,8765 @@ + + + + + + +-100 0 +cm + + +True + + +True + +ArduPlane +AntennaTracker +Copter +Rover +ArduSub + + + +1 255 + + + + +0 10 +.5 +Hz + + +0:Roll,1:Pitch,2:Yaw + +None +Roll +Pitch +Yaw + + + +0.01 2.0 +0.01 + + + +Disabled +Warn only +Disarm +Enter surface mode + + + +0.1 +Volts + + +50 +mAh + + + +Disabled +Warn only +Disarm +Enter depth hold mode +Enter surface mode + + + + +Disabled +Warn only +Enter surface mode + + + + +Disabled +Warn only + + + + +Disabled +Warn only + + + +Pascal + + +Degrees Centigrade + + + +Disarm +Hold Position +Surface + + + + +Disabled +Warn Only +Disarm + + + +0.1 3.0 +Seconds + + +10 90 + + + +Disabled +Enabled + + + + +Never change yaw +Face next waypoint +Face next waypoint except RTL +Face along GPS course +Correct crosstrack error + + + +50 500 +10 +Centimeters/Second + + +50 500 +10 +cm/s/s + + +0 300 +1 +pwm + + +0:ATTITUDE_FAST,1:ATTITUDE_MED,2:GPS,3:PM,4:CTUN,5:NTUN,6:RCIN,7:IMU,8:CMD,9:CURRENT,10:RCOUT,11:OPTFLOW,12:PID,13:COMPASS,14:INAV,15:CAMERA,17:MOTBATT,18:IMU_FAST,19:IMU_RAW + +Default +Default+RCIN +Default+IMU +Default+Motors +NearlyAll-AC315 +NearlyAll +All+FastATT +All+MotBatt +All+FastIMU +All+FastIMU+PID +All+FullIMU +Disabled + + + +1000 8000 +Centi-degrees + + +0 100 + +Very Soft +Soft +Medium +Crisp +Very Crisp + +10 + + + +Disabled +Warn only +Disarm + + + +0.6:Strict, 0.8:Default, 1.0:Relaxed + + + +Disabled +Warn only +Disarm + + + +0.1 1.0 + + +0.2 1.0 + + +0.1 0.8 + + +1 10 + + +1 10 +PWM + + +0.5 4.0 + + + +BlueROV1 +Vectored +Vectored_6DOF +Vectored_6DOF_90 +SimpleROV-3 +SimpleROV-4 +SimpleROV-5 +Custom + +True + + +50 490 +1 +Hz + + +0 500 +10 +%/s + + +1 10 + + +1 10 + + +0 3 +0.1 + + +0 3 +0.1 + + + +Disabled +Leveling +Leveling and Limited + + + + +Disabled +Very Low +Low +Medium +High +Very High + + + +0.1 6.0 +0.1 + + +0.02 1.00 +0.01 + + +0 4500 +10 +cm/s/s + + +0 4500 +10 +cm/s/s + + +1.000 8.000 + + +0.500 1.500 +0.05 + + +0.000 3.000 + + +0 1000 +Percent*10 + + +0.000 0.400 + + +1.000 100.000 +Hz + + +1.000 3.000 + + +0.500 2.000 + + + +Do Not Use in RTL and SURFACE +Use in RTL and SURFACE + + + + + +0.0 1.0 +.01 + + + +Disabled +Enabled + + + +0.1 0.4 +.01 + + +0.1 0.4 +.01 + + +0 127 +1 +m/s + + +-0.1745 +0.1745 +0.01 +Radians + + +-0.1745 +0.1745 +0.01 +Radians + + +-0.1745 +0.1745 +0.01 +Radians + + + +None +Yaw45 +Yaw90 +Yaw135 +Yaw180 +Yaw225 +Yaw270 +Yaw315 +Roll180 +Roll180Yaw45 +Roll180Yaw90 +Roll180Yaw135 +Pitch180 +Roll180Yaw225 +Roll180Yaw270 +Roll180Yaw315 +Roll90 +Roll90Yaw45 +Roll90Yaw90 +Roll90Yaw135 +Roll270 +Roll270Yaw45 +Roll270Yaw90 +Roll270Yaw136 +Pitch90 +Pitch270 +Pitch180Yaw90 +Pitch180Yaw270 +Roll90Pitch90 +Roll180Pitch90 +Roll270Pitch90 +Roll90Pitch180 +Roll270Pitch180 +Roll90Pitch270 +Roll180Pitch270 +Roll270Pitch270 +Roll90Pitch180Yaw90 +Roll90Yaw270 + + + +0.001 0.5 +.01 + + +0 10 +1 + + + +Disabled +Enable EKF2 +Enable EKF3 + + + + + + +Disabled +THR_MIN PWM when disarmed +0 PWM when disarmed + + + +0:All,1:Barometer,2:Compass,3:GPS lock,4:INS,5:Parameters,6:RC Channels,7:Board voltage,8:Battery Level,10:Logging Available,11:Hardware safety switch,12:GPS Configuration + +None +All +Barometer +Compass +GPS Lock +INS(INertial Sensors - accels & gyros) +Parameters(unused) +RC Channels +Board voltage +Battery Level +LoggingAvailable +Hardware safety switch +GPS configuration + + + +0.25 3.0 +m/s/s + + +0.1 +Volts + + +0.1 +Volts + + + + +500 18000 +100 +Centi-Degrees/Sec + + +0 72000 + +Disabled +Slow +Medium +Fast + +1000 +Centi-Degrees/Sec/Sec + + + +Disabled +Enabled + + + +0 180000 + +Disabled +Slow +Medium +Fast + +1000 +Centi-Degrees/Sec/Sec + + +0 180000 + +Disabled +Slow +Medium +Fast + +1000 +Centi-Degrees/Sec/Sec + + + +Disabled +Enabled + + + +0.0 12.000 + + +0.0 12.000 + + +0.0 6.000 + + +0.5 10.0 + + +0.0 0.30 +0.005 + + +0.0 0.5 +0.01 + + +0 1 +0.01 +Percent + + +0.0 0.02 +0.001 + + +0 0.5 +0.001 + + +1 100 +1 +Hz + + +0.0 0.30 +0.005 + + +0.0 0.5 +0.01 + + +0 1 +0.01 +Percent + + +0.0 0.02 +0.001 + + +0 0.5 +0.001 + + +1 100 +1 +Hz + + +0.0 0.50 +0.005 + + +0.0 0.05 +0.01 + + +0 1 +0.01 +Percent + + +0.000 0.02 +0.001 + + +0 0.5 +0.001 + + +1 100 +1 +Hz + + +0.1 0.25 + + +0.5 0.9 + + +0.5 0.9 + + + + +0:StopAtFence,1:UseProximitySensor + +None +StopAtFence +UseProximitySensor +All + + + +0 4500 + + +3 30 +meters + + + + + +Disabled +Analog Voltage Only +Analog Voltage and Current +Solo +Bebop +SMBus-Maxell + + + + +Disabled +A0 +A1 +Pixhawk/Pixracer/Navio2 +A5 +A10 +A13/Pixhawk2_PM2 +PX4-v1 + + + + +Disabled +A1 +A2 +Pixhawk/Pixracer/Navio2 +A11 +A12/Pixhawk2_PM2 +PX4-v1 + + + + + +Amps/Volt + + +Volts + + +50 +mAh + + +1 +Watts + + + +Disabled +Analog Voltage Only +Analog Voltage and Current +Solo +Bebop +SMBus-Maxell + + + + +Disabled +A0 +A1 +Pixhawk/Pixracer/Navio2 +A5 +A10 +A13/Pixhawk2_PM2 +PX4-v1 + + + + +Disabled +A1 +A2 +Pixhawk/Pixracer/Navio2 +A11 +A12/Pixhawk2_PM2 +PX4-v1 + + + + + +Amps/Volt + + +Volts + + +50 +mAh + + +1 +Amps + + + + + +No PWMs +Two PWMs +Four PWMs +Six PWMs +Three PWMs and One Capture + +True + + + +Disabled +Enabled +Auto + +True + + + +Disabled +Enabled +Auto + +True + + + +Disabled +Enabled + +True + + + +Disabled +50Hz +75Hz +100Hz +150Hz +200Hz +250Hz +300Hz + +True + + +-32768 32767 + + +0:Ch1,1:Ch2,2:Ch3,3:Ch4,4:Ch5,5:Ch6,6:Ch7,7:Ch8,8:Ch9,9:Ch10,10:Ch11,11:Ch12,12:Ch13,13:Ch14 + +Disabled +Enabled + +True + + +-1 80 +degreesC + + + +AUTO +PX4V1 +Pixhawk +Pixhawk2 +Pixracer +PixhawkMini +Pixhawk2Slim +VRBrain 5.1 +VRBrain 5.2 +VR Micro Brain 5.1 +VR Micro Brain 5.2 +VRBrain Core 1.0 +VRBrain 5.4 +Intel Aero FC +AUAV2.1 + +True + + + +Disabled +Enabled + +True + + + + + +Disabled +Enabled first channel +Enabled both channels + + + +10000 1000000 + + + +Disabled +Major messages +All messages + + + + +Disabled +Enabled + + + + + +1 250 + + + + + +Disabled +shift +arm_toggle +arm +disarm +mode_manual +mode_stabilize +mode_depth_hold +mode_poshold +mode_auto +mode_circle +mode_guided +mode_acro +mount_center +mount_tilt_up +mount_tilt_down +camera_trigger +camera_source_toggle +mount_pan_right +mount_pan_left +lights1_cycle +lights1_brighter +lights1_dimmer +lights2_cycle +lights2_brighter +lights2_dimmer +gain_toggle +gain_inc +gain_dec +trim_roll_inc +trim_roll_dec +trim_pitch_inc +trim_pitch_dec +input_hold_set +roll_pitch_toggle +relay_1_on +relay_1_off +relay_1_toggle +relay_2_on +relay_2_off +relay_2_toggle +relay_3_on +relay_3_off +relay_3_toggle +servo_1_inc +servo_1_dec +servo_1_min +servo_1_max +servo_1_center +servo_2_inc +servo_2_dec +servo_2_min +servo_2_max +servo_2_center +servo_3_inc +servo_3_dec +servo_3_min +servo_3_max +servo_3_center +servo_1_min_momentary +servo_1_max_momentary +servo_1_min_toggle +servo_1_max_toggle +servo_2_min_momentary +servo_2_max_momentary +servo_2_min_toggle +servo_2_max_toggle +servo_3_min_momentary +servo_3_max_momentary +servo_3_min_toggle +servo_3_max_toggle +custom_1 +custom_2 +custom_3 +custom_4 +custom_5 +custom_6 +relay_4_on +relay_4_off +relay_4_toggle +relay_1_momentary +relay_2_momentary +relay_3_momentary +relay_4_momentary + + + + +Disabled +shift +arm_toggle +arm +disarm +mode_manual +mode_stabilize +mode_depth_hold +mode_poshold +mode_auto +mode_circle +mode_guided +mode_acro +mount_center +mount_tilt_up +mount_tilt_down +camera_trigger +camera_source_toggle +mount_pan_right +mount_pan_left +lights1_cycle +lights1_brighter +lights1_dimmer +lights2_cycle +lights2_brighter +lights2_dimmer +gain_toggle +gain_inc +gain_dec +trim_roll_inc +trim_roll_dec +trim_pitch_inc +trim_pitch_dec +input_hold_set +roll_pitch_toggle +relay_1_on +relay_1_off +relay_1_toggle +relay_2_on +relay_2_off +relay_2_toggle +relay_3_on +relay_3_off +relay_3_toggle +servo_1_inc +servo_1_dec +servo_1_min +servo_1_max +servo_1_center +servo_2_inc +servo_2_dec +servo_2_min +servo_2_max +servo_2_center +servo_3_inc +servo_3_dec +servo_3_min +servo_3_max +servo_3_center +servo_1_min_momentary +servo_1_max_momentary +servo_1_min_toggle +servo_1_max_toggle +servo_2_min_momentary +servo_2_max_momentary +servo_2_min_toggle +servo_2_max_toggle +servo_3_min_momentary +servo_3_max_momentary +servo_3_min_toggle +servo_3_max_toggle +custom_1 +custom_2 +custom_3 +custom_4 +custom_5 +custom_6 +relay_4_on +relay_4_off +relay_4_toggle +relay_1_momentary +relay_2_momentary +relay_3_momentary +relay_4_momentary + + + + + + +Disabled +shift +arm_toggle +arm +disarm +mode_manual +mode_stabilize +mode_depth_hold +mode_poshold +mode_auto +mode_circle +mode_guided +mode_acro +mount_center +mount_tilt_up +mount_tilt_down +camera_trigger +camera_source_toggle +mount_pan_right +mount_pan_left +lights1_cycle +lights1_brighter +lights1_dimmer +lights2_cycle +lights2_brighter +lights2_dimmer +gain_toggle +gain_inc +gain_dec +trim_roll_inc +trim_roll_dec +trim_pitch_inc +trim_pitch_dec +input_hold_set +roll_pitch_toggle +relay_1_on +relay_1_off +relay_1_toggle +relay_2_on +relay_2_off +relay_2_toggle +relay_3_on +relay_3_off +relay_3_toggle +servo_1_inc +servo_1_dec +servo_1_min +servo_1_max +servo_1_center +servo_2_inc +servo_2_dec +servo_2_min +servo_2_max +servo_2_center +servo_3_inc +servo_3_dec +servo_3_min +servo_3_max +servo_3_center +servo_1_min_momentary +servo_1_max_momentary +servo_1_min_toggle +servo_1_max_toggle +servo_2_min_momentary +servo_2_max_momentary +servo_2_min_toggle +servo_2_max_toggle +servo_3_min_momentary +servo_3_max_momentary +servo_3_min_toggle +servo_3_max_toggle +custom_1 +custom_2 +custom_3 +custom_4 +custom_5 +custom_6 +relay_4_on +relay_4_off +relay_4_toggle +relay_1_momentary +relay_2_momentary +relay_3_momentary +relay_4_momentary + + + + +Disabled +shift +arm_toggle +arm +disarm +mode_manual +mode_stabilize +mode_depth_hold +mode_poshold +mode_auto +mode_circle +mode_guided +mode_acro +mount_center +mount_tilt_up +mount_tilt_down +camera_trigger +camera_source_toggle +mount_pan_right +mount_pan_left +lights1_cycle +lights1_brighter +lights1_dimmer +lights2_cycle +lights2_brighter +lights2_dimmer +gain_toggle +gain_inc +gain_dec +trim_roll_inc +trim_roll_dec +trim_pitch_inc +trim_pitch_dec +input_hold_set +roll_pitch_toggle +relay_1_on +relay_1_off +relay_1_toggle +relay_2_on +relay_2_off +relay_2_toggle +relay_3_on +relay_3_off +relay_3_toggle +servo_1_inc +servo_1_dec +servo_1_min +servo_1_max +servo_1_center +servo_2_inc +servo_2_dec +servo_2_min +servo_2_max +servo_2_center +servo_3_inc +servo_3_dec +servo_3_min +servo_3_max +servo_3_center +servo_1_min_momentary +servo_1_max_momentary +servo_1_min_toggle +servo_1_max_toggle +servo_2_min_momentary +servo_2_max_momentary +servo_2_min_toggle +servo_2_max_toggle +servo_3_min_momentary +servo_3_max_momentary +servo_3_min_toggle +servo_3_max_toggle +custom_1 +custom_2 +custom_3 +custom_4 +custom_5 +custom_6 +relay_4_on +relay_4_off +relay_4_toggle +relay_1_momentary +relay_2_momentary +relay_3_momentary +relay_4_momentary + + + + + + +Disabled +shift +arm_toggle +arm +disarm +mode_manual +mode_stabilize +mode_depth_hold +mode_poshold +mode_auto +mode_circle +mode_guided +mode_acro +mount_center +mount_tilt_up +mount_tilt_down +camera_trigger +camera_source_toggle +mount_pan_right +mount_pan_left +lights1_cycle +lights1_brighter +lights1_dimmer +lights2_cycle +lights2_brighter +lights2_dimmer +gain_toggle +gain_inc +gain_dec +trim_roll_inc +trim_roll_dec +trim_pitch_inc +trim_pitch_dec +input_hold_set +roll_pitch_toggle +relay_1_on +relay_1_off +relay_1_toggle +relay_2_on +relay_2_off +relay_2_toggle +relay_3_on +relay_3_off +relay_3_toggle +servo_1_inc +servo_1_dec +servo_1_min +servo_1_max +servo_1_center +servo_2_inc +servo_2_dec +servo_2_min +servo_2_max +servo_2_center +servo_3_inc +servo_3_dec +servo_3_min +servo_3_max +servo_3_center +servo_1_min_momentary +servo_1_max_momentary +servo_1_min_toggle +servo_1_max_toggle +servo_2_min_momentary +servo_2_max_momentary +servo_2_min_toggle +servo_2_max_toggle +servo_3_min_momentary +servo_3_max_momentary +servo_3_min_toggle +servo_3_max_toggle +custom_1 +custom_2 +custom_3 +custom_4 +custom_5 +custom_6 +relay_4_on +relay_4_off +relay_4_toggle +relay_1_momentary +relay_2_momentary +relay_3_momentary +relay_4_momentary + + + + +Disabled +shift +arm_toggle +arm +disarm +mode_manual +mode_stabilize +mode_depth_hold +mode_poshold +mode_auto +mode_circle +mode_guided +mode_acro +mount_center +mount_tilt_up +mount_tilt_down +camera_trigger +camera_source_toggle +mount_pan_right +mount_pan_left +lights1_cycle +lights1_brighter +lights1_dimmer +lights2_cycle +lights2_brighter +lights2_dimmer +gain_toggle +gain_inc +gain_dec +trim_roll_inc +trim_roll_dec +trim_pitch_inc +trim_pitch_dec +input_hold_set +roll_pitch_toggle +relay_1_on +relay_1_off +relay_1_toggle +relay_2_on +relay_2_off +relay_2_toggle +relay_3_on +relay_3_off +relay_3_toggle +servo_1_inc +servo_1_dec +servo_1_min +servo_1_max +servo_1_center +servo_2_inc +servo_2_dec +servo_2_min +servo_2_max +servo_2_center +servo_3_inc +servo_3_dec +servo_3_min +servo_3_max +servo_3_center +servo_1_min_momentary +servo_1_max_momentary +servo_1_min_toggle +servo_1_max_toggle +servo_2_min_momentary +servo_2_max_momentary +servo_2_min_toggle +servo_2_max_toggle +servo_3_min_momentary +servo_3_max_momentary +servo_3_min_toggle +servo_3_max_toggle +custom_1 +custom_2 +custom_3 +custom_4 +custom_5 +custom_6 +relay_4_on +relay_4_off +relay_4_toggle +relay_1_momentary +relay_2_momentary +relay_3_momentary +relay_4_momentary + + + + + + +Disabled +shift +arm_toggle +arm +disarm +mode_manual +mode_stabilize +mode_depth_hold +mode_poshold +mode_auto +mode_circle +mode_guided +mode_acro +mount_center +mount_tilt_up +mount_tilt_down +camera_trigger +camera_source_toggle +mount_pan_right +mount_pan_left +lights1_cycle +lights1_brighter +lights1_dimmer +lights2_cycle +lights2_brighter +lights2_dimmer +gain_toggle +gain_inc +gain_dec +trim_roll_inc +trim_roll_dec +trim_pitch_inc +trim_pitch_dec +input_hold_set +roll_pitch_toggle +relay_1_on +relay_1_off +relay_1_toggle +relay_2_on +relay_2_off +relay_2_toggle +relay_3_on +relay_3_off +relay_3_toggle +servo_1_inc +servo_1_dec +servo_1_min +servo_1_max +servo_1_center +servo_2_inc +servo_2_dec +servo_2_min +servo_2_max +servo_2_center +servo_3_inc +servo_3_dec +servo_3_min +servo_3_max +servo_3_center +servo_1_min_momentary +servo_1_max_momentary +servo_1_min_toggle +servo_1_max_toggle +servo_2_min_momentary +servo_2_max_momentary +servo_2_min_toggle +servo_2_max_toggle +servo_3_min_momentary +servo_3_max_momentary +servo_3_min_toggle +servo_3_max_toggle +custom_1 +custom_2 +custom_3 +custom_4 +custom_5 +custom_6 +relay_4_on +relay_4_off +relay_4_toggle +relay_1_momentary +relay_2_momentary +relay_3_momentary +relay_4_momentary + + + + +Disabled +shift +arm_toggle +arm +disarm +mode_manual +mode_stabilize +mode_depth_hold +mode_poshold +mode_auto +mode_circle +mode_guided +mode_acro +mount_center +mount_tilt_up +mount_tilt_down +camera_trigger +camera_source_toggle +mount_pan_right +mount_pan_left +lights1_cycle +lights1_brighter +lights1_dimmer +lights2_cycle +lights2_brighter +lights2_dimmer +gain_toggle +gain_inc +gain_dec +trim_roll_inc +trim_roll_dec +trim_pitch_inc +trim_pitch_dec +input_hold_set +roll_pitch_toggle +relay_1_on +relay_1_off +relay_1_toggle +relay_2_on +relay_2_off +relay_2_toggle +relay_3_on +relay_3_off +relay_3_toggle +servo_1_inc +servo_1_dec +servo_1_min +servo_1_max +servo_1_center +servo_2_inc +servo_2_dec +servo_2_min +servo_2_max +servo_2_center +servo_3_inc +servo_3_dec +servo_3_min +servo_3_max +servo_3_center +servo_1_min_momentary +servo_1_max_momentary +servo_1_min_toggle +servo_1_max_toggle +servo_2_min_momentary +servo_2_max_momentary +servo_2_min_toggle +servo_2_max_toggle +servo_3_min_momentary +servo_3_max_momentary +servo_3_min_toggle +servo_3_max_toggle +custom_1 +custom_2 +custom_3 +custom_4 +custom_5 +custom_6 +relay_4_on +relay_4_off +relay_4_toggle +relay_1_momentary +relay_2_momentary +relay_3_momentary +relay_4_momentary + + + + + + +Disabled +shift +arm_toggle +arm +disarm +mode_manual +mode_stabilize +mode_depth_hold +mode_poshold +mode_auto +mode_circle +mode_guided +mode_acro +mount_center +mount_tilt_up +mount_tilt_down +camera_trigger +camera_source_toggle +mount_pan_right +mount_pan_left +lights1_cycle +lights1_brighter +lights1_dimmer +lights2_cycle +lights2_brighter +lights2_dimmer +gain_toggle +gain_inc +gain_dec +trim_roll_inc +trim_roll_dec +trim_pitch_inc +trim_pitch_dec +input_hold_set +roll_pitch_toggle +relay_1_on +relay_1_off +relay_1_toggle +relay_2_on +relay_2_off +relay_2_toggle +relay_3_on +relay_3_off +relay_3_toggle +servo_1_inc +servo_1_dec +servo_1_min +servo_1_max +servo_1_center +servo_2_inc +servo_2_dec +servo_2_min +servo_2_max +servo_2_center +servo_3_inc +servo_3_dec +servo_3_min +servo_3_max +servo_3_center +servo_1_min_momentary +servo_1_max_momentary +servo_1_min_toggle +servo_1_max_toggle +servo_2_min_momentary +servo_2_max_momentary +servo_2_min_toggle +servo_2_max_toggle +servo_3_min_momentary +servo_3_max_momentary +servo_3_min_toggle +servo_3_max_toggle +custom_1 +custom_2 +custom_3 +custom_4 +custom_5 +custom_6 +relay_4_on +relay_4_off +relay_4_toggle +relay_1_momentary +relay_2_momentary +relay_3_momentary +relay_4_momentary + + + + +Disabled +shift +arm_toggle +arm +disarm +mode_manual +mode_stabilize +mode_depth_hold +mode_poshold +mode_auto +mode_circle +mode_guided +mode_acro +mount_center +mount_tilt_up +mount_tilt_down +camera_trigger +camera_source_toggle +mount_pan_right +mount_pan_left +lights1_cycle +lights1_brighter +lights1_dimmer +lights2_cycle +lights2_brighter +lights2_dimmer +gain_toggle +gain_inc +gain_dec +trim_roll_inc +trim_roll_dec +trim_pitch_inc +trim_pitch_dec +input_hold_set +roll_pitch_toggle +relay_1_on +relay_1_off +relay_1_toggle +relay_2_on +relay_2_off +relay_2_toggle +relay_3_on +relay_3_off +relay_3_toggle +servo_1_inc +servo_1_dec +servo_1_min +servo_1_max +servo_1_center +servo_2_inc +servo_2_dec +servo_2_min +servo_2_max +servo_2_center +servo_3_inc +servo_3_dec +servo_3_min +servo_3_max +servo_3_center +servo_1_min_momentary +servo_1_max_momentary +servo_1_min_toggle +servo_1_max_toggle +servo_2_min_momentary +servo_2_max_momentary +servo_2_min_toggle +servo_2_max_toggle +servo_3_min_momentary +servo_3_max_momentary +servo_3_min_toggle +servo_3_max_toggle +custom_1 +custom_2 +custom_3 +custom_4 +custom_5 +custom_6 +relay_4_on +relay_4_off +relay_4_toggle +relay_1_momentary +relay_2_momentary +relay_3_momentary +relay_4_momentary + + + + + + +Disabled +shift +arm_toggle +arm +disarm +mode_manual +mode_stabilize +mode_depth_hold +mode_poshold +mode_auto +mode_circle +mode_guided +mode_acro +mount_center +mount_tilt_up +mount_tilt_down +camera_trigger +camera_source_toggle +mount_pan_right +mount_pan_left +lights1_cycle +lights1_brighter +lights1_dimmer +lights2_cycle +lights2_brighter +lights2_dimmer +gain_toggle +gain_inc +gain_dec +trim_roll_inc +trim_roll_dec +trim_pitch_inc +trim_pitch_dec +input_hold_set +roll_pitch_toggle +relay_1_on +relay_1_off +relay_1_toggle +relay_2_on +relay_2_off +relay_2_toggle +relay_3_on +relay_3_off +relay_3_toggle +servo_1_inc +servo_1_dec +servo_1_min +servo_1_max +servo_1_center +servo_2_inc +servo_2_dec +servo_2_min +servo_2_max +servo_2_center +servo_3_inc +servo_3_dec +servo_3_min +servo_3_max +servo_3_center +servo_1_min_momentary +servo_1_max_momentary +servo_1_min_toggle +servo_1_max_toggle +servo_2_min_momentary +servo_2_max_momentary +servo_2_min_toggle +servo_2_max_toggle +servo_3_min_momentary +servo_3_max_momentary +servo_3_min_toggle +servo_3_max_toggle +custom_1 +custom_2 +custom_3 +custom_4 +custom_5 +custom_6 +relay_4_on +relay_4_off +relay_4_toggle +relay_1_momentary +relay_2_momentary +relay_3_momentary +relay_4_momentary + + + + +Disabled +shift +arm_toggle +arm +disarm +mode_manual +mode_stabilize +mode_depth_hold +mode_poshold +mode_auto +mode_circle +mode_guided +mode_acro +mount_center +mount_tilt_up +mount_tilt_down +camera_trigger +camera_source_toggle +mount_pan_right +mount_pan_left +lights1_cycle +lights1_brighter +lights1_dimmer +lights2_cycle +lights2_brighter +lights2_dimmer +gain_toggle +gain_inc +gain_dec +trim_roll_inc +trim_roll_dec +trim_pitch_inc +trim_pitch_dec +input_hold_set +roll_pitch_toggle +relay_1_on +relay_1_off +relay_1_toggle +relay_2_on +relay_2_off +relay_2_toggle +relay_3_on +relay_3_off +relay_3_toggle +servo_1_inc +servo_1_dec +servo_1_min +servo_1_max +servo_1_center +servo_2_inc +servo_2_dec +servo_2_min +servo_2_max +servo_2_center +servo_3_inc +servo_3_dec +servo_3_min +servo_3_max +servo_3_center +servo_1_min_momentary +servo_1_max_momentary +servo_1_min_toggle +servo_1_max_toggle +servo_2_min_momentary +servo_2_max_momentary +servo_2_min_toggle +servo_2_max_toggle +servo_3_min_momentary +servo_3_max_momentary +servo_3_min_toggle +servo_3_max_toggle +custom_1 +custom_2 +custom_3 +custom_4 +custom_5 +custom_6 +relay_4_on +relay_4_off +relay_4_toggle +relay_1_momentary +relay_2_momentary +relay_3_momentary +relay_4_momentary + + + + + + +Disabled +shift +arm_toggle +arm +disarm +mode_manual +mode_stabilize +mode_depth_hold +mode_poshold +mode_auto +mode_circle +mode_guided +mode_acro +mount_center +mount_tilt_up +mount_tilt_down +camera_trigger +camera_source_toggle +mount_pan_right +mount_pan_left +lights1_cycle +lights1_brighter +lights1_dimmer +lights2_cycle +lights2_brighter +lights2_dimmer +gain_toggle +gain_inc +gain_dec +trim_roll_inc +trim_roll_dec +trim_pitch_inc +trim_pitch_dec +input_hold_set +roll_pitch_toggle +relay_1_on +relay_1_off +relay_1_toggle +relay_2_on +relay_2_off +relay_2_toggle +relay_3_on +relay_3_off +relay_3_toggle +servo_1_inc +servo_1_dec +servo_1_min +servo_1_max +servo_1_center +servo_2_inc +servo_2_dec +servo_2_min +servo_2_max +servo_2_center +servo_3_inc +servo_3_dec +servo_3_min +servo_3_max +servo_3_center +servo_1_min_momentary +servo_1_max_momentary +servo_1_min_toggle +servo_1_max_toggle +servo_2_min_momentary +servo_2_max_momentary +servo_2_min_toggle +servo_2_max_toggle +servo_3_min_momentary +servo_3_max_momentary +servo_3_min_toggle +servo_3_max_toggle +custom_1 +custom_2 +custom_3 +custom_4 +custom_5 +custom_6 +relay_4_on +relay_4_off +relay_4_toggle +relay_1_momentary +relay_2_momentary +relay_3_momentary +relay_4_momentary + + + + +Disabled +shift +arm_toggle +arm +disarm +mode_manual +mode_stabilize +mode_depth_hold +mode_poshold +mode_auto +mode_circle +mode_guided +mode_acro +mount_center +mount_tilt_up +mount_tilt_down +camera_trigger +camera_source_toggle +mount_pan_right +mount_pan_left +lights1_cycle +lights1_brighter +lights1_dimmer +lights2_cycle +lights2_brighter +lights2_dimmer +gain_toggle +gain_inc +gain_dec +trim_roll_inc +trim_roll_dec +trim_pitch_inc +trim_pitch_dec +input_hold_set +roll_pitch_toggle +relay_1_on +relay_1_off +relay_1_toggle +relay_2_on +relay_2_off +relay_2_toggle +relay_3_on +relay_3_off +relay_3_toggle +servo_1_inc +servo_1_dec +servo_1_min +servo_1_max +servo_1_center +servo_2_inc +servo_2_dec +servo_2_min +servo_2_max +servo_2_center +servo_3_inc +servo_3_dec +servo_3_min +servo_3_max +servo_3_center +servo_1_min_momentary +servo_1_max_momentary +servo_1_min_toggle +servo_1_max_toggle +servo_2_min_momentary +servo_2_max_momentary +servo_2_min_toggle +servo_2_max_toggle +servo_3_min_momentary +servo_3_max_momentary +servo_3_min_toggle +servo_3_max_toggle +custom_1 +custom_2 +custom_3 +custom_4 +custom_5 +custom_6 +relay_4_on +relay_4_off +relay_4_toggle +relay_1_momentary +relay_2_momentary +relay_3_momentary +relay_4_momentary + + + + + + +Disabled +shift +arm_toggle +arm +disarm +mode_manual +mode_stabilize +mode_depth_hold +mode_poshold +mode_auto +mode_circle +mode_guided +mode_acro +mount_center +mount_tilt_up +mount_tilt_down +camera_trigger +camera_source_toggle +mount_pan_right +mount_pan_left +lights1_cycle +lights1_brighter +lights1_dimmer +lights2_cycle +lights2_brighter +lights2_dimmer +gain_toggle +gain_inc +gain_dec +trim_roll_inc +trim_roll_dec +trim_pitch_inc +trim_pitch_dec +input_hold_set +roll_pitch_toggle +relay_1_on +relay_1_off +relay_1_toggle +relay_2_on +relay_2_off +relay_2_toggle +relay_3_on +relay_3_off +relay_3_toggle +servo_1_inc +servo_1_dec +servo_1_min +servo_1_max +servo_1_center +servo_2_inc +servo_2_dec +servo_2_min +servo_2_max +servo_2_center +servo_3_inc +servo_3_dec +servo_3_min +servo_3_max +servo_3_center +servo_1_min_momentary +servo_1_max_momentary +servo_1_min_toggle +servo_1_max_toggle +servo_2_min_momentary +servo_2_max_momentary +servo_2_min_toggle +servo_2_max_toggle +servo_3_min_momentary +servo_3_max_momentary +servo_3_min_toggle +servo_3_max_toggle +custom_1 +custom_2 +custom_3 +custom_4 +custom_5 +custom_6 +relay_4_on +relay_4_off +relay_4_toggle +relay_1_momentary +relay_2_momentary +relay_3_momentary +relay_4_momentary + + + + +Disabled +shift +arm_toggle +arm +disarm +mode_manual +mode_stabilize +mode_depth_hold +mode_poshold +mode_auto +mode_circle +mode_guided +mode_acro +mount_center +mount_tilt_up +mount_tilt_down +camera_trigger +camera_source_toggle +mount_pan_right +mount_pan_left +lights1_cycle +lights1_brighter +lights1_dimmer +lights2_cycle +lights2_brighter +lights2_dimmer +gain_toggle +gain_inc +gain_dec +trim_roll_inc +trim_roll_dec +trim_pitch_inc +trim_pitch_dec +input_hold_set +roll_pitch_toggle +relay_1_on +relay_1_off +relay_1_toggle +relay_2_on +relay_2_off +relay_2_toggle +relay_3_on +relay_3_off +relay_3_toggle +servo_1_inc +servo_1_dec +servo_1_min +servo_1_max +servo_1_center +servo_2_inc +servo_2_dec +servo_2_min +servo_2_max +servo_2_center +servo_3_inc +servo_3_dec +servo_3_min +servo_3_max +servo_3_center +servo_1_min_momentary +servo_1_max_momentary +servo_1_min_toggle +servo_1_max_toggle +servo_2_min_momentary +servo_2_max_momentary +servo_2_min_toggle +servo_2_max_toggle +servo_3_min_momentary +servo_3_max_momentary +servo_3_min_toggle +servo_3_max_toggle +custom_1 +custom_2 +custom_3 +custom_4 +custom_5 +custom_6 +relay_4_on +relay_4_off +relay_4_toggle +relay_1_momentary +relay_2_momentary +relay_3_momentary +relay_4_momentary + + + + + + +Disabled +shift +arm_toggle +arm +disarm +mode_manual +mode_stabilize +mode_depth_hold +mode_poshold +mode_auto +mode_circle +mode_guided +mode_acro +mount_center +mount_tilt_up +mount_tilt_down +camera_trigger +camera_source_toggle +mount_pan_right +mount_pan_left +lights1_cycle +lights1_brighter +lights1_dimmer +lights2_cycle +lights2_brighter +lights2_dimmer +gain_toggle +gain_inc +gain_dec +trim_roll_inc +trim_roll_dec +trim_pitch_inc +trim_pitch_dec +input_hold_set +roll_pitch_toggle +relay_1_on +relay_1_off +relay_1_toggle +relay_2_on +relay_2_off +relay_2_toggle +relay_3_on +relay_3_off +relay_3_toggle +servo_1_inc +servo_1_dec +servo_1_min +servo_1_max +servo_1_center +servo_2_inc +servo_2_dec +servo_2_min +servo_2_max +servo_2_center +servo_3_inc +servo_3_dec +servo_3_min +servo_3_max +servo_3_center +servo_1_min_momentary +servo_1_max_momentary +servo_1_min_toggle +servo_1_max_toggle +servo_2_min_momentary +servo_2_max_momentary +servo_2_min_toggle +servo_2_max_toggle +servo_3_min_momentary +servo_3_max_momentary +servo_3_min_toggle +servo_3_max_toggle +custom_1 +custom_2 +custom_3 +custom_4 +custom_5 +custom_6 +relay_4_on +relay_4_off +relay_4_toggle +relay_1_momentary +relay_2_momentary +relay_3_momentary +relay_4_momentary + + + + +Disabled +shift +arm_toggle +arm +disarm +mode_manual +mode_stabilize +mode_depth_hold +mode_poshold +mode_auto +mode_circle +mode_guided +mode_acro +mount_center +mount_tilt_up +mount_tilt_down +camera_trigger +camera_source_toggle +mount_pan_right +mount_pan_left +lights1_cycle +lights1_brighter +lights1_dimmer +lights2_cycle +lights2_brighter +lights2_dimmer +gain_toggle +gain_inc +gain_dec +trim_roll_inc +trim_roll_dec +trim_pitch_inc +trim_pitch_dec +input_hold_set +roll_pitch_toggle +relay_1_on +relay_1_off +relay_1_toggle +relay_2_on +relay_2_off +relay_2_toggle +relay_3_on +relay_3_off +relay_3_toggle +servo_1_inc +servo_1_dec +servo_1_min +servo_1_max +servo_1_center +servo_2_inc +servo_2_dec +servo_2_min +servo_2_max +servo_2_center +servo_3_inc +servo_3_dec +servo_3_min +servo_3_max +servo_3_center +servo_1_min_momentary +servo_1_max_momentary +servo_1_min_toggle +servo_1_max_toggle +servo_2_min_momentary +servo_2_max_momentary +servo_2_min_toggle +servo_2_max_toggle +servo_3_min_momentary +servo_3_max_momentary +servo_3_min_toggle +servo_3_max_toggle +custom_1 +custom_2 +custom_3 +custom_4 +custom_5 +custom_6 +relay_4_on +relay_4_off +relay_4_toggle +relay_1_momentary +relay_2_momentary +relay_3_momentary +relay_4_momentary + + + + + + +Disabled +shift +arm_toggle +arm +disarm +mode_manual +mode_stabilize +mode_depth_hold +mode_poshold +mode_auto +mode_circle +mode_guided +mode_acro +mount_center +mount_tilt_up +mount_tilt_down +camera_trigger +camera_source_toggle +mount_pan_right +mount_pan_left +lights1_cycle +lights1_brighter +lights1_dimmer +lights2_cycle +lights2_brighter +lights2_dimmer +gain_toggle +gain_inc +gain_dec +trim_roll_inc +trim_roll_dec +trim_pitch_inc +trim_pitch_dec +input_hold_set +roll_pitch_toggle +relay_1_on +relay_1_off +relay_1_toggle +relay_2_on +relay_2_off +relay_2_toggle +relay_3_on +relay_3_off +relay_3_toggle +servo_1_inc +servo_1_dec +servo_1_min +servo_1_max +servo_1_center +servo_2_inc +servo_2_dec +servo_2_min +servo_2_max +servo_2_center +servo_3_inc +servo_3_dec +servo_3_min +servo_3_max +servo_3_center +servo_1_min_momentary +servo_1_max_momentary +servo_1_min_toggle +servo_1_max_toggle +servo_2_min_momentary +servo_2_max_momentary +servo_2_min_toggle +servo_2_max_toggle +servo_3_min_momentary +servo_3_max_momentary +servo_3_min_toggle +servo_3_max_toggle +custom_1 +custom_2 +custom_3 +custom_4 +custom_5 +custom_6 +relay_4_on +relay_4_off +relay_4_toggle +relay_1_momentary +relay_2_momentary +relay_3_momentary +relay_4_momentary + + + + +Disabled +shift +arm_toggle +arm +disarm +mode_manual +mode_stabilize +mode_depth_hold +mode_poshold +mode_auto +mode_circle +mode_guided +mode_acro +mount_center +mount_tilt_up +mount_tilt_down +camera_trigger +camera_source_toggle +mount_pan_right +mount_pan_left +lights1_cycle +lights1_brighter +lights1_dimmer +lights2_cycle +lights2_brighter +lights2_dimmer +gain_toggle +gain_inc +gain_dec +trim_roll_inc +trim_roll_dec +trim_pitch_inc +trim_pitch_dec +input_hold_set +roll_pitch_toggle +relay_1_on +relay_1_off +relay_1_toggle +relay_2_on +relay_2_off +relay_2_toggle +relay_3_on +relay_3_off +relay_3_toggle +servo_1_inc +servo_1_dec +servo_1_min +servo_1_max +servo_1_center +servo_2_inc +servo_2_dec +servo_2_min +servo_2_max +servo_2_center +servo_3_inc +servo_3_dec +servo_3_min +servo_3_max +servo_3_center +servo_1_min_momentary +servo_1_max_momentary +servo_1_min_toggle +servo_1_max_toggle +servo_2_min_momentary +servo_2_max_momentary +servo_2_min_toggle +servo_2_max_toggle +servo_3_min_momentary +servo_3_max_momentary +servo_3_min_toggle +servo_3_max_toggle +custom_1 +custom_2 +custom_3 +custom_4 +custom_5 +custom_6 +relay_4_on +relay_4_off +relay_4_toggle +relay_1_momentary +relay_2_momentary +relay_3_momentary +relay_4_momentary + + + + + + +Disabled +shift +arm_toggle +arm +disarm +mode_manual +mode_stabilize +mode_depth_hold +mode_poshold +mode_auto +mode_circle +mode_guided +mode_acro +mount_center +mount_tilt_up +mount_tilt_down +camera_trigger +camera_source_toggle +mount_pan_right +mount_pan_left +lights1_cycle +lights1_brighter +lights1_dimmer +lights2_cycle +lights2_brighter +lights2_dimmer +gain_toggle +gain_inc +gain_dec +trim_roll_inc +trim_roll_dec +trim_pitch_inc +trim_pitch_dec +input_hold_set +roll_pitch_toggle +relay_1_on +relay_1_off +relay_1_toggle +relay_2_on +relay_2_off +relay_2_toggle +relay_3_on +relay_3_off +relay_3_toggle +servo_1_inc +servo_1_dec +servo_1_min +servo_1_max +servo_1_center +servo_2_inc +servo_2_dec +servo_2_min +servo_2_max +servo_2_center +servo_3_inc +servo_3_dec +servo_3_min +servo_3_max +servo_3_center +servo_1_min_momentary +servo_1_max_momentary +servo_1_min_toggle +servo_1_max_toggle +servo_2_min_momentary +servo_2_max_momentary +servo_2_min_toggle +servo_2_max_toggle +servo_3_min_momentary +servo_3_max_momentary +servo_3_min_toggle +servo_3_max_toggle +custom_1 +custom_2 +custom_3 +custom_4 +custom_5 +custom_6 +relay_4_on +relay_4_off +relay_4_toggle +relay_1_momentary +relay_2_momentary +relay_3_momentary +relay_4_momentary + + + + +Disabled +shift +arm_toggle +arm +disarm +mode_manual +mode_stabilize +mode_depth_hold +mode_poshold +mode_auto +mode_circle +mode_guided +mode_acro +mount_center +mount_tilt_up +mount_tilt_down +camera_trigger +camera_source_toggle +mount_pan_right +mount_pan_left +lights1_cycle +lights1_brighter +lights1_dimmer +lights2_cycle +lights2_brighter +lights2_dimmer +gain_toggle +gain_inc +gain_dec +trim_roll_inc +trim_roll_dec +trim_pitch_inc +trim_pitch_dec +input_hold_set +roll_pitch_toggle +relay_1_on +relay_1_off +relay_1_toggle +relay_2_on +relay_2_off +relay_2_toggle +relay_3_on +relay_3_off +relay_3_toggle +servo_1_inc +servo_1_dec +servo_1_min +servo_1_max +servo_1_center +servo_2_inc +servo_2_dec +servo_2_min +servo_2_max +servo_2_center +servo_3_inc +servo_3_dec +servo_3_min +servo_3_max +servo_3_center +servo_1_min_momentary +servo_1_max_momentary +servo_1_min_toggle +servo_1_max_toggle +servo_2_min_momentary +servo_2_max_momentary +servo_2_min_toggle +servo_2_max_toggle +servo_3_min_momentary +servo_3_max_momentary +servo_3_min_toggle +servo_3_max_toggle +custom_1 +custom_2 +custom_3 +custom_4 +custom_5 +custom_6 +relay_4_on +relay_4_off +relay_4_toggle +relay_1_momentary +relay_2_momentary +relay_3_momentary +relay_4_momentary + + + + + + +Disabled +shift +arm_toggle +arm +disarm +mode_manual +mode_stabilize +mode_depth_hold +mode_poshold +mode_auto +mode_circle +mode_guided +mode_acro +mount_center +mount_tilt_up +mount_tilt_down +camera_trigger +camera_source_toggle +mount_pan_right +mount_pan_left +lights1_cycle +lights1_brighter +lights1_dimmer +lights2_cycle +lights2_brighter +lights2_dimmer +gain_toggle +gain_inc +gain_dec +trim_roll_inc +trim_roll_dec +trim_pitch_inc +trim_pitch_dec +input_hold_set +roll_pitch_toggle +relay_1_on +relay_1_off +relay_1_toggle +relay_2_on +relay_2_off +relay_2_toggle +relay_3_on +relay_3_off +relay_3_toggle +servo_1_inc +servo_1_dec +servo_1_min +servo_1_max +servo_1_center +servo_2_inc +servo_2_dec +servo_2_min +servo_2_max +servo_2_center +servo_3_inc +servo_3_dec +servo_3_min +servo_3_max +servo_3_center +servo_1_min_momentary +servo_1_max_momentary +servo_1_min_toggle +servo_1_max_toggle +servo_2_min_momentary +servo_2_max_momentary +servo_2_min_toggle +servo_2_max_toggle +servo_3_min_momentary +servo_3_max_momentary +servo_3_min_toggle +servo_3_max_toggle +custom_1 +custom_2 +custom_3 +custom_4 +custom_5 +custom_6 +relay_4_on +relay_4_off +relay_4_toggle +relay_1_momentary +relay_2_momentary +relay_3_momentary +relay_4_momentary + + + + +Disabled +shift +arm_toggle +arm +disarm +mode_manual +mode_stabilize +mode_depth_hold +mode_poshold +mode_auto +mode_circle +mode_guided +mode_acro +mount_center +mount_tilt_up +mount_tilt_down +camera_trigger +camera_source_toggle +mount_pan_right +mount_pan_left +lights1_cycle +lights1_brighter +lights1_dimmer +lights2_cycle +lights2_brighter +lights2_dimmer +gain_toggle +gain_inc +gain_dec +trim_roll_inc +trim_roll_dec +trim_pitch_inc +trim_pitch_dec +input_hold_set +roll_pitch_toggle +relay_1_on +relay_1_off +relay_1_toggle +relay_2_on +relay_2_off +relay_2_toggle +relay_3_on +relay_3_off +relay_3_toggle +servo_1_inc +servo_1_dec +servo_1_min +servo_1_max +servo_1_center +servo_2_inc +servo_2_dec +servo_2_min +servo_2_max +servo_2_center +servo_3_inc +servo_3_dec +servo_3_min +servo_3_max +servo_3_center +servo_1_min_momentary +servo_1_max_momentary +servo_1_min_toggle +servo_1_max_toggle +servo_2_min_momentary +servo_2_max_momentary +servo_2_min_toggle +servo_2_max_toggle +servo_3_min_momentary +servo_3_max_momentary +servo_3_min_toggle +servo_3_max_toggle +custom_1 +custom_2 +custom_3 +custom_4 +custom_5 +custom_6 +relay_4_on +relay_4_off +relay_4_toggle +relay_1_momentary +relay_2_momentary +relay_3_momentary +relay_4_momentary + + + + + + +Disabled +shift +arm_toggle +arm +disarm +mode_manual +mode_stabilize +mode_depth_hold +mode_poshold +mode_auto +mode_circle +mode_guided +mode_acro +mount_center +mount_tilt_up +mount_tilt_down +camera_trigger +camera_source_toggle +mount_pan_right +mount_pan_left +lights1_cycle +lights1_brighter +lights1_dimmer +lights2_cycle +lights2_brighter +lights2_dimmer +gain_toggle +gain_inc +gain_dec +trim_roll_inc +trim_roll_dec +trim_pitch_inc +trim_pitch_dec +input_hold_set +roll_pitch_toggle +relay_1_on +relay_1_off +relay_1_toggle +relay_2_on +relay_2_off +relay_2_toggle +relay_3_on +relay_3_off +relay_3_toggle +servo_1_inc +servo_1_dec +servo_1_min +servo_1_max +servo_1_center +servo_2_inc +servo_2_dec +servo_2_min +servo_2_max +servo_2_center +servo_3_inc +servo_3_dec +servo_3_min +servo_3_max +servo_3_center +servo_1_min_momentary +servo_1_max_momentary +servo_1_min_toggle +servo_1_max_toggle +servo_2_min_momentary +servo_2_max_momentary +servo_2_min_toggle +servo_2_max_toggle +servo_3_min_momentary +servo_3_max_momentary +servo_3_min_toggle +servo_3_max_toggle +custom_1 +custom_2 +custom_3 +custom_4 +custom_5 +custom_6 +relay_4_on +relay_4_off +relay_4_toggle +relay_1_momentary +relay_2_momentary +relay_3_momentary +relay_4_momentary + + + + +Disabled +shift +arm_toggle +arm +disarm +mode_manual +mode_stabilize +mode_depth_hold +mode_poshold +mode_auto +mode_circle +mode_guided +mode_acro +mount_center +mount_tilt_up +mount_tilt_down +camera_trigger +camera_source_toggle +mount_pan_right +mount_pan_left +lights1_cycle +lights1_brighter +lights1_dimmer +lights2_cycle +lights2_brighter +lights2_dimmer +gain_toggle +gain_inc +gain_dec +trim_roll_inc +trim_roll_dec +trim_pitch_inc +trim_pitch_dec +input_hold_set +roll_pitch_toggle +relay_1_on +relay_1_off +relay_1_toggle +relay_2_on +relay_2_off +relay_2_toggle +relay_3_on +relay_3_off +relay_3_toggle +servo_1_inc +servo_1_dec +servo_1_min +servo_1_max +servo_1_center +servo_2_inc +servo_2_dec +servo_2_min +servo_2_max +servo_2_center +servo_3_inc +servo_3_dec +servo_3_min +servo_3_max +servo_3_center +servo_1_min_momentary +servo_1_max_momentary +servo_1_min_toggle +servo_1_max_toggle +servo_2_min_momentary +servo_2_max_momentary +servo_2_min_toggle +servo_2_max_toggle +servo_3_min_momentary +servo_3_max_momentary +servo_3_min_toggle +servo_3_max_toggle +custom_1 +custom_2 +custom_3 +custom_4 +custom_5 +custom_6 +relay_4_on +relay_4_off +relay_4_toggle +relay_1_momentary +relay_2_momentary +relay_3_momentary +relay_4_momentary + + + + + + +Disabled +shift +arm_toggle +arm +disarm +mode_manual +mode_stabilize +mode_depth_hold +mode_poshold +mode_auto +mode_circle +mode_guided +mode_acro +mount_center +mount_tilt_up +mount_tilt_down +camera_trigger +camera_source_toggle +mount_pan_right +mount_pan_left +lights1_cycle +lights1_brighter +lights1_dimmer +lights2_cycle +lights2_brighter +lights2_dimmer +gain_toggle +gain_inc +gain_dec +trim_roll_inc +trim_roll_dec +trim_pitch_inc +trim_pitch_dec +input_hold_set +roll_pitch_toggle +relay_1_on +relay_1_off +relay_1_toggle +relay_2_on +relay_2_off +relay_2_toggle +relay_3_on +relay_3_off +relay_3_toggle +servo_1_inc +servo_1_dec +servo_1_min +servo_1_max +servo_1_center +servo_2_inc +servo_2_dec +servo_2_min +servo_2_max +servo_2_center +servo_3_inc +servo_3_dec +servo_3_min +servo_3_max +servo_3_center +servo_1_min_momentary +servo_1_max_momentary +servo_1_min_toggle +servo_1_max_toggle +servo_2_min_momentary +servo_2_max_momentary +servo_2_min_toggle +servo_2_max_toggle +servo_3_min_momentary +servo_3_max_momentary +servo_3_min_toggle +servo_3_max_toggle +custom_1 +custom_2 +custom_3 +custom_4 +custom_5 +custom_6 +relay_4_on +relay_4_off +relay_4_toggle +relay_1_momentary +relay_2_momentary +relay_3_momentary +relay_4_momentary + + + + +Disabled +shift +arm_toggle +arm +disarm +mode_manual +mode_stabilize +mode_depth_hold +mode_poshold +mode_auto +mode_circle +mode_guided +mode_acro +mount_center +mount_tilt_up +mount_tilt_down +camera_trigger +camera_source_toggle +mount_pan_right +mount_pan_left +lights1_cycle +lights1_brighter +lights1_dimmer +lights2_cycle +lights2_brighter +lights2_dimmer +gain_toggle +gain_inc +gain_dec +trim_roll_inc +trim_roll_dec +trim_pitch_inc +trim_pitch_dec +input_hold_set +roll_pitch_toggle +relay_1_on +relay_1_off +relay_1_toggle +relay_2_on +relay_2_off +relay_2_toggle +relay_3_on +relay_3_off +relay_3_toggle +servo_1_inc +servo_1_dec +servo_1_min +servo_1_max +servo_1_center +servo_2_inc +servo_2_dec +servo_2_min +servo_2_max +servo_2_center +servo_3_inc +servo_3_dec +servo_3_min +servo_3_max +servo_3_center +servo_1_min_momentary +servo_1_max_momentary +servo_1_min_toggle +servo_1_max_toggle +servo_2_min_momentary +servo_2_max_momentary +servo_2_min_toggle +servo_2_max_toggle +servo_3_min_momentary +servo_3_max_momentary +servo_3_min_toggle +servo_3_max_toggle +custom_1 +custom_2 +custom_3 +custom_4 +custom_5 +custom_6 +relay_4_on +relay_4_off +relay_4_toggle +relay_1_momentary +relay_2_momentary +relay_3_momentary +relay_4_momentary + + + + + + +Disabled +shift +arm_toggle +arm +disarm +mode_manual +mode_stabilize +mode_depth_hold +mode_poshold +mode_auto +mode_circle +mode_guided +mode_acro +mount_center +mount_tilt_up +mount_tilt_down +camera_trigger +camera_source_toggle +mount_pan_right +mount_pan_left +lights1_cycle +lights1_brighter +lights1_dimmer +lights2_cycle +lights2_brighter +lights2_dimmer +gain_toggle +gain_inc +gain_dec +trim_roll_inc +trim_roll_dec +trim_pitch_inc +trim_pitch_dec +input_hold_set +roll_pitch_toggle +relay_1_on +relay_1_off +relay_1_toggle +relay_2_on +relay_2_off +relay_2_toggle +relay_3_on +relay_3_off +relay_3_toggle +servo_1_inc +servo_1_dec +servo_1_min +servo_1_max +servo_1_center +servo_2_inc +servo_2_dec +servo_2_min +servo_2_max +servo_2_center +servo_3_inc +servo_3_dec +servo_3_min +servo_3_max +servo_3_center +servo_1_min_momentary +servo_1_max_momentary +servo_1_min_toggle +servo_1_max_toggle +servo_2_min_momentary +servo_2_max_momentary +servo_2_min_toggle +servo_2_max_toggle +servo_3_min_momentary +servo_3_max_momentary +servo_3_min_toggle +servo_3_max_toggle +custom_1 +custom_2 +custom_3 +custom_4 +custom_5 +custom_6 +relay_4_on +relay_4_off +relay_4_toggle +relay_1_momentary +relay_2_momentary +relay_3_momentary +relay_4_momentary + + + + +Disabled +shift +arm_toggle +arm +disarm +mode_manual +mode_stabilize +mode_depth_hold +mode_poshold +mode_auto +mode_circle +mode_guided +mode_acro +mount_center +mount_tilt_up +mount_tilt_down +camera_trigger +camera_source_toggle +mount_pan_right +mount_pan_left +lights1_cycle +lights1_brighter +lights1_dimmer +lights2_cycle +lights2_brighter +lights2_dimmer +gain_toggle +gain_inc +gain_dec +trim_roll_inc +trim_roll_dec +trim_pitch_inc +trim_pitch_dec +input_hold_set +roll_pitch_toggle +relay_1_on +relay_1_off +relay_1_toggle +relay_2_on +relay_2_off +relay_2_toggle +relay_3_on +relay_3_off +relay_3_toggle +servo_1_inc +servo_1_dec +servo_1_min +servo_1_max +servo_1_center +servo_2_inc +servo_2_dec +servo_2_min +servo_2_max +servo_2_center +servo_3_inc +servo_3_dec +servo_3_min +servo_3_max +servo_3_center +servo_1_min_momentary +servo_1_max_momentary +servo_1_min_toggle +servo_1_max_toggle +servo_2_min_momentary +servo_2_max_momentary +servo_2_min_toggle +servo_2_max_toggle +servo_3_min_momentary +servo_3_max_momentary +servo_3_min_toggle +servo_3_max_toggle +custom_1 +custom_2 +custom_3 +custom_4 +custom_5 +custom_6 +relay_4_on +relay_4_off +relay_4_toggle +relay_1_momentary +relay_2_momentary +relay_3_momentary +relay_4_momentary + + + + + + +Disabled +shift +arm_toggle +arm +disarm +mode_manual +mode_stabilize +mode_depth_hold +mode_poshold +mode_auto +mode_circle +mode_guided +mode_acro +mount_center +mount_tilt_up +mount_tilt_down +camera_trigger +camera_source_toggle +mount_pan_right +mount_pan_left +lights1_cycle +lights1_brighter +lights1_dimmer +lights2_cycle +lights2_brighter +lights2_dimmer +gain_toggle +gain_inc +gain_dec +trim_roll_inc +trim_roll_dec +trim_pitch_inc +trim_pitch_dec +input_hold_set +roll_pitch_toggle +relay_1_on +relay_1_off +relay_1_toggle +relay_2_on +relay_2_off +relay_2_toggle +relay_3_on +relay_3_off +relay_3_toggle +servo_1_inc +servo_1_dec +servo_1_min +servo_1_max +servo_1_center +servo_2_inc +servo_2_dec +servo_2_min +servo_2_max +servo_2_center +servo_3_inc +servo_3_dec +servo_3_min +servo_3_max +servo_3_center +servo_1_min_momentary +servo_1_max_momentary +servo_1_min_toggle +servo_1_max_toggle +servo_2_min_momentary +servo_2_max_momentary +servo_2_min_toggle +servo_2_max_toggle +servo_3_min_momentary +servo_3_max_momentary +servo_3_min_toggle +servo_3_max_toggle +custom_1 +custom_2 +custom_3 +custom_4 +custom_5 +custom_6 +relay_4_on +relay_4_off +relay_4_toggle +relay_1_momentary +relay_2_momentary +relay_3_momentary +relay_4_momentary + + + + +Disabled +shift +arm_toggle +arm +disarm +mode_manual +mode_stabilize +mode_depth_hold +mode_poshold +mode_auto +mode_circle +mode_guided +mode_acro +mount_center +mount_tilt_up +mount_tilt_down +camera_trigger +camera_source_toggle +mount_pan_right +mount_pan_left +lights1_cycle +lights1_brighter +lights1_dimmer +lights2_cycle +lights2_brighter +lights2_dimmer +gain_toggle +gain_inc +gain_dec +trim_roll_inc +trim_roll_dec +trim_pitch_inc +trim_pitch_dec +input_hold_set +roll_pitch_toggle +relay_1_on +relay_1_off +relay_1_toggle +relay_2_on +relay_2_off +relay_2_toggle +relay_3_on +relay_3_off +relay_3_toggle +servo_1_inc +servo_1_dec +servo_1_min +servo_1_max +servo_1_center +servo_2_inc +servo_2_dec +servo_2_min +servo_2_max +servo_2_center +servo_3_inc +servo_3_dec +servo_3_min +servo_3_max +servo_3_center +servo_1_min_momentary +servo_1_max_momentary +servo_1_min_toggle +servo_1_max_toggle +servo_2_min_momentary +servo_2_max_momentary +servo_2_min_toggle +servo_2_max_toggle +servo_3_min_momentary +servo_3_max_momentary +servo_3_min_toggle +servo_3_max_toggle +custom_1 +custom_2 +custom_3 +custom_4 +custom_5 +custom_6 +relay_4_on +relay_4_off +relay_4_toggle +relay_1_momentary +relay_2_momentary +relay_3_momentary +relay_4_momentary + + + + + + +Servo +Relay + + + +0 50 +deciseconds + + +1000 2000 +pwm + + +1000 2000 +pwm + + +0 1000 +meters + + + +Low +High + + + +0 10000 +milliseconds + + +0 180 +Degrees + + + +Disabled +PX4 AUX1 +PX4 AUX2 +PX4 AUX3 +PX4 AUX4(fast capture) +PX4 AUX5 +PX4 AUX6 + + + + +TriggerLow +TriggerHigh + + + + + +0 10000 +100 +cm + + +-90 90 +1 +deg/s + + + + +-400 400 +1 +milligauss + + +-400 400 +1 +milligauss + + +-400 400 +1 +milligauss + + +-3.142 3.142 +0.01 +Radians + + + +Disabled +Internal-Learning +EKF-Learning + + + + +Disabled +Enabled + + + + +Disabled +Enabled + + + + +Disabled +Use Throttle +Use Current + + + +-1000 1000 +1 +Offset per Amp or at Full Throttle + + +-1000 1000 +1 +Offset per Amp or at Full Throttle + + +-1000 1000 +1 +Offset per Amp or at Full Throttle + + + +None +Yaw45 +Yaw90 +Yaw135 +Yaw180 +Yaw225 +Yaw270 +Yaw315 +Roll180 +Roll180Yaw45 +Roll180Yaw90 +Roll180Yaw135 +Pitch180 +Roll180Yaw225 +Roll180Yaw270 +Roll180Yaw315 +Roll90 +Roll90Yaw45 +Roll90Yaw90 +Roll90Yaw135 +Roll270 +Roll270Yaw45 +Roll270Yaw90 +Roll270Yaw136 +Pitch90 +Pitch270 +Pitch180Yaw90 +Pitch180Yaw270 +Roll90Pitch90 +Roll180Pitch90 +Roll270Pitch90 +Roll90Pitch180 +Roll270Pitch180 +Roll90Pitch270 +Roll180Pitch270 +Roll270Pitch270 +Roll90Pitch180Yaw90 +Roll90Yaw270 +Yaw293Pitch68Roll90 + + + + +Internal +External +ForcedExternal + + + +-400 400 +1 +milligauss + + +-400 400 +1 +milligauss + + +-400 400 +1 +milligauss + + +-1000 1000 +1 +Offset per Amp or at Full Throttle + + +-1000 1000 +1 +Offset per Amp or at Full Throttle + + +-1000 1000 +1 +Offset per Amp or at Full Throttle + + + +FirstCompass +SecondCompass +ThirdCompass + + + +-400 400 +1 +milligauss + + +-400 400 +1 +milligauss + + +-400 400 +1 +milligauss + + +-1000 1000 +1 +Offset per Amp or at Full Throttle + + +-1000 1000 +1 +Offset per Amp or at Full Throttle + + +-1000 1000 +1 +Offset per Amp or at Full Throttle + + + + + + + + + +Disabled +Enabled + + + + +None +Yaw45 +Yaw90 +Yaw135 +Yaw180 +Yaw225 +Yaw270 +Yaw315 +Roll180 +Roll180Yaw45 +Roll180Yaw90 +Roll180Yaw135 +Pitch180 +Roll180Yaw225 +Roll180Yaw270 +Roll180Yaw315 +Roll90 +Roll90Yaw45 +Roll90Yaw90 +Roll90Yaw135 +Roll270 +Roll270Yaw45 +Roll270Yaw90 +Roll270Yaw136 +Pitch90 +Pitch270 +Pitch180Yaw90 +Pitch180Yaw270 +Roll90Pitch90 +Roll180Pitch90 +Roll270Pitch90 +Roll90Pitch180 +Roll270Pitch180 +Roll90Pitch270 +Roll180Pitch270 +Roll270Pitch270 +Roll90Pitch180Yaw90 +Roll90Yaw270 +Yaw293Pitch68Roll90 + + + + +Internal +External +ForcedExternal + + + + +Disabled +Enabled + + + + +None +Yaw45 +Yaw90 +Yaw135 +Yaw180 +Yaw225 +Yaw270 +Yaw315 +Roll180 +Roll180Yaw45 +Roll180Yaw90 +Roll180Yaw135 +Pitch180 +Roll180Yaw225 +Roll180Yaw270 +Roll180Yaw315 +Roll90 +Roll90Yaw45 +Roll90Yaw90 +Roll90Yaw135 +Roll270 +Roll270Yaw45 +Roll270Yaw90 +Roll270Yaw136 +Pitch90 +Pitch270 +Pitch180Yaw90 +Pitch180Yaw270 +Roll90Pitch90 +Roll180Pitch90 +Roll270Pitch90 +Roll90Pitch180 +Roll270Pitch180 +Roll90Pitch270 +Roll180Pitch270 +Roll270Pitch270 +Roll90Pitch180Yaw90 +Roll90Yaw270 +Yaw293Pitch68Roll90 + + + + +Internal +External +ForcedExternal + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +4 32 + +Very Strict +Strict +Default +Relaxed + +0.1 + + +500 3000 +1 + + + + + +Disabled +Enabled + + + + +GPS 3D Vel and 2D Pos +GPS 2D vel and 2D pos +GPS 2D pos +No GPS + + + +0.05 5.0 +0.05 +m/s + + +0.05 5.0 +0.05 +m/s + + +100 1000 +25 + + +0.1 10.0 +0.1 +m + + +100 1000 +25 + + +10 100 +5 +m + + +0 250 +10 +milliseconds + + + +Use Baro +Use Range Finder +Use GPS +Use Range Beacon + + + +0.1 10.0 +0.1 +m + + +100 1000 +25 + + +0 250 +10 +milliseconds + + +0.01 0.5 +0.01 +gauss + + + +When flying +When manoeuvring +Never +After first climb yaw reset +Always + + + +100 1000 +25 + + +0.5 5.0 +0.1 +m/s + + +100 1000 +25 + + +0.1 10.0 +0.1 +m + + +100 1000 +25 + + +1.0 4.0 +0.1 +rad/s + + +0.05 1.0 +0.05 +rad/s + + +100 1000 +25 + + +0 127 +10 +milliseconds + + +0.0001 0.1 +0.0001 +rad/s + + +0.01 1.0 +0.01 +m/s/s + + +0.00001 0.001 +rad/s/s + + +0.000001 0.001 +1/s + + +0.00001 0.001 +m/s/s/s + + +0.01 1.0 +0.1 +m/s/s + + +0.0 1.0 +0.1 + + +0:NSats,1:HDoP,2:speed error,3:position error,4:yaw error,5:pos drift,6:vert speed,7:horiz speed + + +0:FirstIMU,1:SecondIMU,2:ThirdIMU,3:FourthIMU,4:FifthIMU,5:SixthIMU + + +50 200 +% + + +0.5 50.0 +m + + +0:FirstIMU,1:SecondIMU,2:ThirdIMU,3:FourthIMU,4:FifthIMU,5:SixthIMU + + +0.05 1.0 +0.05 +rad + + +100 1000 +25 + + +10 50 +5 +cs + + +0.00001 0.01 +gauss/s + + +0.00001 0.01 +gauss/s + + +-1 70 +1 +% + + +0 0.2 +0.01 + + +0.1 10.0 +0.1 +m + + +100 1000 +25 + + +0 127 +10 +milliseconds + + +2.0 6.0 +0.5 +m/s + + +0:FirstEKF,1:SecondEKF,2:ThirdEKF,3:FourthEKF,4:FifthEKF,5:SixthEKF + + + + + +Disabled +Enabled + + + + +GPS 3D Vel and 2D Pos +GPS 2D vel and 2D pos +GPS 2D pos +No GPS + + + +0.05 5.0 +0.05 +m/s + + +0.05 5.0 +0.05 +m/s + + +100 1000 +25 + + +0.1 10.0 +0.1 +m + + +100 1000 +25 + + +10 100 +5 +m + + + +Use Baro +Use Range Finder +Use GPS +Use Range Beacon + + + +0.1 10.0 +0.1 +m + + +100 1000 +25 + + +0 250 +10 +milliseconds +True + + +0.01 0.5 +0.01 +gauss + + + +When flying +When manoeuvring +Never +After first climb yaw reset +Always + + + +100 1000 +25 + + +0.5 5.0 +0.1 +m/s + + +100 1000 +25 + + +0.1 10.0 +0.1 +m + + +100 1000 +25 + + +1.0 4.0 +0.1 +rad/s + + +0.05 1.0 +0.05 +rad/s + + +100 1000 +25 + + +0 250 +10 +milliseconds +True + + +0.0001 0.1 +0.0001 +rad/s + + +0.01 1.0 +0.01 +m/s/s + + +0.00001 0.001 +rad/s/s + + +0.00001 0.001 +m/s/s/s + + +0.01 1.0 +0.1 +m/s/s + + +0.0 1.0 +0.1 + + +0:NSats,1:HDoP,2:speed error,3:position error,4:yaw error,5:pos drift,6:vert speed,7:horiz speed + + +0:FirstIMU,1:SecondIMU,2:ThirdIMU,3:FourthIMU,4:FifthIMU,5:SixthIMU + + +50 200 +% + + +0.5 50.0 +m + + +0:FirstIMU,1:SecondIMU,2:ThirdIMU,3:FourthIMU,4:FifthIMU,5:SixthIMU + + +0.05 1.0 +0.05 +rad + + +100 1000 +25 + + +10 50 +5 +cs + + +0.00001 0.01 +gauss/s + + +0.00001 0.01 +gauss/s + + +-1 70 +1 +% + + +0 0.2 +0.01 + + +0.1 10.0 +0.1 +m + + +100 1000 +25 + + +0 250 +10 +milliseconds +True + + +2.0 6.0 +0.5 +m/s + + +0.5 2.5 +0.1 +m/s/s + + +0:FirstEKF,1:SecondEKF,2:ThirdEKF,3:FourthEKF,4:FifthEKF,5:SixthEKF + + + + + +Disabled +Enabled + + + +0:Altitude,1:Circle,2:Polygon + +None +Altitude +Circle +Altitude and Circle +Polygon +Altitude and Polygon +Circle and Polygon +All + + + + +Report Only +RTL or Land + + + +10 1000 +1 +Meters + + +30 10000 +Meters + + +1 10 +Meters + + +1 20 + + +-100 100 +1 +Meters + + + + + +Disabled +Enabled + + + +-200 +200 +1 + + +-200 +200 +1 + + +-18000 +18000 +1 + + +m + + +m + + +m + + +0 127 + + + + +True +True +1 +pascals + + +True +True +1 +degrees celsius + + +0.1 +meters + + + +FirstBaro +2ndBaro +3rdBaro + + + + +Disabled +Bus0 +Bus1 + + + +1.0:Freshwater,1.024:Saltwater + + +True +True +1 +pascals + + +True +True +1 +pascals + + + + + +None +AUTO +uBlox +MTK +MTK19 +NMEA +SiRF +HIL +SwiftNav +UAVCAN +SBF +GSOF +QURT +ERB +MAV +NOVA + +True + + + +None +AUTO +uBlox +MTK +MTK19 +NMEA +SiRF +HIL +SwiftNav +UAVCAN +SBF +GSOF +QURT +ERB +MAV +NOVA + +True + + + +Portable +Stationary +Pedestrian +Automotive +Sea +Airborne1G +Airborne2G +Airborne4G + + + + +Disabled +UseBest +Blend + + + + +Any +FloatRTK +IntegerRTK + +True + + + +Disabled +Enabled +NoChange + + + +-100 90 +Degrees + + + +send to first GPS +send to 2nd GPS +send to all + + + + +None (0x0000) +All (0xFFFF) +External only (0xFF00) + + + + +Disabled +log every sample +log every 5 samples + +True + + +0:GPS,1:SBAS,2:Galileo,3:Beidou,4:IMES,5:QZSS,6:GLOSNASS + +Leave as currently configured +GPS-NoSBAS +GPS+SBAS +Galileo-NoSBAS +Galileo+SBAS +Beidou +GPS+IMES+QZSS+SBAS (Japan Only) +GLONASS +GLONASS+SBAS +GPS+GLONASS+SBAS + + + + +Do not save config +Save config +Save only when needed + + + +0:GPS,1:SBAS,2:Galileo,3:Beidou,4:IMES,5:QZSS,6:GLOSNASS + +Leave as currently configured +GPS-NoSBAS +GPS+SBAS +Galileo-NoSBAS +Galileo+SBAS +Beidou +GPS+IMES+QZSS+SBAS (Japan Only) +GLONASS +GLONASS+SBAS +GPS+GLONASS+SBAS + + + + +Disables automatic configuration +Enable automatic configuration + + + +50 200 + +10Hz +8Hz +5Hz + +milliseconds + + +50 200 + +10Hz +8Hz +5Hz + +milliseconds + + +m + + +m + + +m + + +m + + +m + + +m + + +0 250 +milliseconds + + +0 250 +milliseconds + + +0:Horiz Pos,1:Vert Pos,2:Speed + + +5.0 30.0 +seconds + + + + + +Disabled +Enabled + + + + +None +Servo +EPM + + + +1000 2000 +PWM + + +1000 2000 +PWM + + +1000 2000 +PWM + + +0 255 +seconds + + +0 255 + + + + + + +rad/s + + +rad/s + + +rad/s + + +rad/s + + +rad/s + + +rad/s + + +rad/s + + +rad/s + + +rad/s + + +0.8 1.2 + + +0.8 1.2 + + +0.8 1.2 + + +-3.5 3.5 +m/s/s + + +-3.5 3.5 +m/s/s + + +-3.5 3.5 +m/s/s + + +0.8 1.2 + + +0.8 1.2 + + +0.8 1.2 + + +-3.5 3.5 +m/s/s + + +-3.5 3.5 +m/s/s + + +-3.5 3.5 +m/s/s + + +0.8 1.2 + + +0.8 1.2 + + +0.8 1.2 + + +-3.5 3.5 +m/s/s + + +-3.5 3.5 +m/s/s + + +-3.5 3.5 +m/s/s + + +0 127 +Hz + + +0 127 +Hz + + + +Disabled +Enabled + + + + +Disabled +Enabled + + + + +Disabled +Enabled + + + +0.05 50 + + + +Never +Start-up only + + + + +Don't adjust the trims +Assume first orientation was level +Assume ACC_BODYFIX is perfectly aligned to the vehicle + + + + +IMU 1 +IMU 2 +IMU 3 + + + +m + + +m + + +m + + +m + + +m + + +m + + +m + + +m + + +m + + +True + + +True + + +True + + +True + + +True + + +True + + + + + + + +Disabled +Pixhawk Aux1 +Pixhawk Aux2 +Pixhawk Aux3 +Pixhawk Aux4 +Pixhawk Aux5 +Pixhawk Aux6 +Pixhawk 3.3ADC1 +Pixhawk 3.3ADC2 +Pixhawk 6.6ADC + + + + +Low +High + + + + +Disabled +Pixhawk Aux1 +Pixhawk Aux2 +Pixhawk Aux3 +Pixhawk Aux4 +Pixhawk Aux5 +Pixhawk Aux6 +Pixhawk 3.3ADC1 +Pixhawk 3.3ADC2 +Pixhawk 6.6ADC + + + + +Low +High + + + + +Disabled +Pixhawk Aux1 +Pixhawk Aux2 +Pixhawk Aux3 +Pixhawk Aux4 +Pixhawk Aux5 +Pixhawk Aux6 +Pixhawk 3.3ADC1 +Pixhawk 3.3ADC2 +Pixhawk 6.6ADC + + + + +Low +High + + + + + + +None +File +MAVLink +BothFileAndMAVLink + + + + + + +Disabled +Enabled + + + + +Disabled +Enabled + + + + +Disabled +Enabled + + + + + +0 32766 +1 + + + +Resume Mission +Restart Mission + + + + + + +Retracted +Neutral +MavLink Targeting +RC Targeting +GPS Point + + + +-180.00 179.99 +1 +Degrees + + +-180.00 179.99 +1 +Degrees + + +-180.00 179.99 +1 +Degrees + + +-180.00 179.99 +1 +Degrees + + +-180.00 179.99 +1 +Degrees + + +-180.00 179.99 +1 +Degrees + + + +Disabled +Enabled + + + + +Disabled +Enabled + + + + +Disabled +Enabled + + + + +Disabled +RC5 +RC6 +RC7 +RC8 +RC9 +RC10 +RC11 +RC12 + + + +-18000 17999 +1 +Centi-Degrees + + +-18000 17999 +1 +Centi-Degrees + + + +Disabled +RC5 +RC6 +RC7 +RC8 +RC9 +RC10 +RC11 +RC12 + + + +-18000 17999 +1 +Centi-Degrees + + +-18000 17999 +1 +Centi-Degrees + + + +Disabled +RC5 +RC6 +RC7 +RC8 +RC9 +RC10 +RC11 +RC12 + + + +-18000 17999 +1 +Centi-Degrees + + +-18000 17999 +1 +Centi-Degrees + + +0 100 +1 + + +0.0 0.2 +.005 +Seconds + + +0.0 0.2 +.005 +Seconds + + + +None +Servo +3DR Solo +Alexmos Serial +SToRM32 MAVLink +SToRM32 Serial + +True + + + +Retracted +Neutral +MavLink Targeting +RC Targeting +GPS Point + + + +-180.00 179.99 +1 +Degrees + + +-180.00 179.99 +1 +Degrees + + +-180.00 179.99 +1 +Degrees + + +-180.00 179.99 +1 +Degrees + + +-180.00 179.99 +1 +Degrees + + +-180.00 179.99 +1 +Degrees + + + +Disabled +Enabled + + + + +Disabled +Enabled + + + + +Disabled +Enabled + + + + +Disabled +RC5 +RC6 +RC7 +RC8 +RC9 +RC10 +RC11 +RC12 + + + +-18000 17999 +1 +Centi-Degrees + + +-18000 17999 +1 +Centi-Degrees + + + +Disabled +RC5 +RC6 +RC7 +RC8 +RC9 +RC10 +RC11 +RC12 + + + +-18000 17999 +1 +Centi-Degrees + + +-18000 17999 +1 +Centi-Degrees + + + +Disabled +RC5 +RC6 +RC7 +RC8 +RC9 +RC10 +RC11 +RC12 + + + +-18000 17999 +1 +Centi-Degrees + + +-18000 17999 +1 +Centi-Degrees + + +0.0 0.2 +.005 +Seconds + + +0.0 0.2 +.005 +Seconds + + + +None +Servo +3DR Solo +Alexmos Serial +SToRM32 MAVLink +SToRM32 Serial + + + + + + +normal +reverse + + + + +normal +reverse + + + + +normal +reverse + + + + +normal +reverse + + + + +normal +reverse + + + + +normal +reverse + + + + +normal +reverse + + + + +normal +reverse + + + +0.0 1.5 +0.1 + + +0 500 +pwm + + +0.25 0.8 + + +0.9:Low, 0.95:Default, 1.0:High + + +6 35 +Volts + + +6 35 +Volts + + +0 200 +Amps + + + +Normal +OneShot +OneShot125 +Brushed16kHz + +True + + +0 2000 + + +0 2000 + + +0.0:Low, 0.15:Default, 0.3:High + + +0.0:Low, 0.1:Default, 0.2:High + + +0 10 +Seconds + + +0.2 0.8 + + + +Disabled +Learn +LearnAndSave + + + + +PWM enabled while disarmed +PWM disabled while disarmed + + + +5 80 +1 +Degrees + + +0 2 +0.1 +Seconds + + + + + +Off +Low +Medium +High + + + + +Disable +Enable + + + + +Disable +Enable + + + + +Disable +ssd1306 +sh1106 + + + + + + +None +LightWareSF40C +MAVLink +TeraRangerTower +RangeFinder + + + + +Default +Upside Down + + + +-180 180 +degrees + + +0 360 +degrees + + +0 45 +degrees + + +0 360 +degrees + + +0 45 +degrees + + +0 360 +degrees + + +0 45 +degrees + + +0 360 +degrees + + +0 45 +degrees + + +0 360 +degrees + + +0 45 +degrees + + +0 360 +degrees + + +0 45 +degrees + + + +None +LightWareSF40C +MAVLink +TeraRangerTower +RangeFinder + + + + +Default +Upside Down + + + +-180 180 +degrees + + + + +0.5 5 +0.1 +Hz + + + + + + +0.1 +kilometers + + + +DoNotIncludeHome +IncludeHome + + + + + +800 2200 +1 +pwm + + +800 2200 +1 +pwm + + +800 2200 +1 +pwm + + + +Normal +Reversed + + + +0 200 +pwm + + + + +800 2200 +1 +pwm + + +800 2200 +1 +pwm + + +800 2200 +1 +pwm + + + +Normal +Reversed + + + +0 200 +pwm + + + + +800 2200 +1 +pwm + + +800 2200 +1 +pwm + + +800 2200 +1 +pwm + + + +Normal +Reversed + + + +0 200 +pwm + + + + +800 2200 +1 +pwm + + +800 2200 +1 +pwm + + +800 2200 +1 +pwm + + + +Normal +Reversed + + + +0 200 +pwm + + + + +800 2200 +1 +pwm + + +800 2200 +1 +pwm + + +800 2200 +1 +pwm + + + +Normal +Reversed + + + +0 200 +pwm + + + + +800 2200 +1 +pwm + + +800 2200 +1 +pwm + + +800 2200 +1 +pwm + + + +Normal +Reversed + + + +0 200 +pwm + + + + +800 2200 +1 +pwm + + +800 2200 +1 +pwm + + +800 2200 +1 +pwm + + + +Normal +Reversed + + + +0 200 +pwm + + + + +800 2200 +1 +pwm + + +800 2200 +1 +pwm + + +800 2200 +1 +pwm + + + +Normal +Reversed + + + +0 200 +pwm + + + + +800 2200 +1 +pwm + + +800 2200 +1 +pwm + + +800 2200 +1 +pwm + + + +Normal +Reversed + + + +0 200 +pwm + + + + +800 2200 +1 +pwm + + +800 2200 +1 +pwm + + +800 2200 +1 +pwm + + + +Normal +Reversed + + + +0 200 +pwm + + + + +800 2200 +1 +pwm + + +800 2200 +1 +pwm + + +800 2200 +1 +pwm + + + +Normal +Reversed + + + +0 200 +pwm + + + + +800 2200 +1 +pwm + + +800 2200 +1 +pwm + + +800 2200 +1 +pwm + + + +Normal +Reversed + + + +0 200 +pwm + + + + +800 2200 +1 +pwm + + +800 2200 +1 +pwm + + +800 2200 +1 +pwm + + + +Normal +Reversed + + + +0 200 +pwm + + + + +800 2200 +1 +pwm + + +800 2200 +1 +pwm + + +800 2200 +1 +pwm + + + +Normal +Reversed + + + +0 200 +pwm + + + + +800 2200 +1 +pwm + + +800 2200 +1 +pwm + + +800 2200 +1 +pwm + + + +Normal +Reversed + + + +0 200 +pwm + + + + +800 2200 +1 +pwm + + +800 2200 +1 +pwm + + +800 2200 +1 +pwm + + + +Normal +Reversed + + + +0 200 +pwm + + + + +1 8 +1 +True + + +1 8 +1 +True + + +1 8 +1 +True + + +1 8 +1 +True + + +1 8 +1 +True + + +1 8 +1 +True + + + + + +Disabled +APM2 A9 pin +APM1 relay +Pixhawk AUXOUT1 +Pixhawk AUXOUT2 +Pixhawk AUXOUT3 +Pixhawk AUXOUT4 +Pixhawk AUXOUT5 +Pixhawk AUXOUT6 +PX4 FMU Relay1 +PX4 FMU Relay2 +PX4IO Relay1 +PX4IO Relay2 +PX4IO ACC1 +PX4IO ACC2 + + + + +Disabled +APM2 A9 pin +APM1 relay +Pixhawk AUXOUT1 +Pixhawk AUXOUT2 +Pixhawk AUXOUT3 +Pixhawk AUXOUT4 +Pixhawk AUXOUT5 +Pixhawk AUXOUT6 +PX4 FMU Relay1 +PX4 FMU Relay2 +PX4IO Relay1 +PX4IO Relay2 +PX4IO ACC1 +PX4IO ACC2 + + + + +Disabled +APM2 A9 pin +APM1 relay +Pixhawk AUXOUT1 +Pixhawk AUXOUT2 +Pixhawk AUXOUT3 +Pixhawk AUXOUT4 +Pixhawk AUXOUT5 +Pixhawk AUXOUT6 +PX4 FMU Relay1 +PX4 FMU Relay2 +PX4IO Relay1 +PX4IO Relay2 +PX4IO ACC1 +PX4IO ACC2 + + + + +Disabled +APM2 A9 pin +APM1 relay +Pixhawk AUXOUT1 +Pixhawk AUXOUT2 +Pixhawk AUXOUT3 +Pixhawk AUXOUT4 +Pixhawk AUXOUT5 +Pixhawk AUXOUT6 +PX4 FMU Relay1 +PX4 FMU Relay2 +PX4IO Relay1 +PX4IO Relay2 +PX4IO ACC1 +PX4IO ACC2 + + + + +Off +On +NoChange + + + + + + +None +Analog +MaxbotixI2C +LidarLiteV2-I2C +PX4-PWM +BBB-PRU +LightWareI2C +LightWareSerial +Bebop +MAVLink +uLanding +LeddarOne +MaxbotixSerial +TrOneI2C +LidarLiteV3-I2C + + + + +Not Used +APM2-A0 +APM2-A1 +APM2-A2 +APM2-A3 +APM2-A4 +APM2-A5 +APM2-A6 +APM2-A7 +APM2-A8 +APM2-A9 +PX4-airspeed port +Pixhawk-airspeed port +APM1-airspeed port + + + +0.001 +meters/Volt + + +0.001 +Volts + + + +Linear +Inverted +Hyperbolic + + + +1 +centimeters + + +1 +centimeters + + + +Not Used +Pixhawk AUXOUT1 +Pixhawk AUXOUT2 +Pixhawk AUXOUT3 +Pixhawk AUXOUT4 +Pixhawk AUXOUT5 +Pixhawk AUXOUT6 +PX4 FMU Relay1 +PX4 FMU Relay2 +PX4IO Relay1 +PX4IO Relay2 +PX4IO ACC1 +PX4IO ACC2 + + + +1 +milliseconds + + + +No +Yes + + + +0 32767 +meters + + +5 127 +1 +centimeters + + +0 127 +1 + + +m + + +m + + +m + + + +Forward +Forward-Right +Right +Back-Right +Back +Back-Left +Left +Forward-Left +Up +Down + + + + +None +Analog +MaxbotixI2C +LidarLiteV2-I2C +PX4-PWM +BBB-PRU +LightWareI2C +LightWareSerial +Bebop +MAVLink +uLanding +LeddarOne +MaxbotixSerial +TrOneI2C +LidarLiteV3-I2C + + + + +Not Used +APM2-A0 +APM2-A1 +APM2-A2 +APM2-A3 +APM2-A4 +APM2-A5 +APM2-A6 +APM2-A7 +APM2-A8 +APM2-A9 +PX4-airspeed port +Pixhawk-airspeed port +APM1-airspeed port + + + +0.001 +meters/Volt + + +0.001 +Volts + + + +Linear +Inverted +Hyperbolic + + + +1 +centimeters + + +1 +centimeters + + + +Not Used +Pixhawk AUXOUT1 +Pixhawk AUXOUT2 +Pixhawk AUXOUT3 +Pixhawk AUXOUT4 +Pixhawk AUXOUT5 +Pixhawk AUXOUT6 +PX4 FMU Relay1 +PX4 FMU Relay2 +PX4IO Relay1 +PX4IO Relay2 +PX4IO ACC1 +PX4IO ACC2 + + + +1 +milliseconds + + + +No +Yes + + + +0 127 +1 +centimeters + + +0 127 +1 + + +m + + +m + + +m + + + +Forward +Forward-Right +Right +Back-Right +Back +Back-Left +Left +Forward-Left +Up +Down + + + + +None +Analog +MaxbotixI2C +LidarLiteV2-I2C +PX4-PWM +BBB-PRU +LightWareI2C +LightWareSerial +Bebop +MAVLink +uLanding +LeddarOne +MaxbotixSerial +TrOneI2C +LidarLiteV3-I2C + + + + +Not Used +APM2-A0 +APM2-A1 +APM2-A2 +APM2-A3 +APM2-A4 +APM2-A5 +APM2-A6 +APM2-A7 +APM2-A8 +APM2-A9 +PX4-airspeed port +Pixhawk-airspeed port +APM1-airspeed port + + + +0.001 +meters/Volt + + +0.001 +Volts + + + +Linear +Inverted +Hyperbolic + + + +1 +centimeters + + +1 +centimeters + + + +Not Used +Pixhawk AUXOUT1 +Pixhawk AUXOUT2 +Pixhawk AUXOUT3 +Pixhawk AUXOUT4 +Pixhawk AUXOUT5 +Pixhawk AUXOUT6 +PX4 FMU Relay1 +PX4 FMU Relay2 +PX4IO Relay1 +PX4IO Relay2 +PX4IO ACC1 +PX4IO ACC2 + + + +1 +milliseconds + + + +No +Yes + + + +0 127 +1 +centimeters + + +0 127 +1 + + +m + + +m + + +m + + + +Forward +Forward-Right +Right +Back-Right +Back +Back-Left +Left +Forward-Left +Up +Down + + + + +None +Analog +MaxbotixI2C +LidarLiteV2-I2C +PX4-PWM +BBB-PRU +LightWareI2C +LightWareSerial +Bebop +MAVLink +uLanding +LeddarOne +MaxbotixSerial +TrOneI2C +LidarLiteV3-I2C + + + + +Not Used +APM2-A0 +APM2-A1 +APM2-A2 +APM2-A3 +APM2-A4 +APM2-A5 +APM2-A6 +APM2-A7 +APM2-A8 +APM2-A9 +PX4-airspeed port +Pixhawk-airspeed port +APM1-airspeed port + + + +0.001 +meters/Volt + + +0.001 +Volts + + + +Linear +Inverted +Hyperbolic + + + +1 +centimeters + + +1 +centimeters + + + +Not Used +Pixhawk AUXOUT1 +Pixhawk AUXOUT2 +Pixhawk AUXOUT3 +Pixhawk AUXOUT4 +Pixhawk AUXOUT5 +Pixhawk AUXOUT6 +PX4 FMU Relay1 +PX4 FMU Relay2 +PX4IO Relay1 +PX4IO Relay2 +PX4IO ACC1 +PX4IO ACC2 + + + +1 +milliseconds + + + +No +Yes + + + +0 127 +1 +centimeters + + +0 127 +1 + + +m + + +m + + +m + + + +Forward +Forward-Right +Right +Back-Right +Back +Back-Left +Left +Forward-Left +Up +Down + + + + + + +None +PX4-PWM +AUXPIN + + + +0.001 + + +1 + + +1 + + +0.1 + + + +Disabled +PixhawkAUX1 +PixhawkAUX2 +PixhawkAUX3 +PixhawkAUX4 +PixhawkAUX5 +PixhawkAUX6 + + + + +None +PX4-PWM +AUXPIN + + + +0.001 + + + +Disabled +PixhawkAUX1 +PixhawkAUX2 +PixhawkAUX3 +PixhawkAUX4 +PixhawkAUX5 +PixhawkAUX6 + + + + + + +Disabled +ShowSlips +ShowOverruns + + + + +50Hz +100Hz +200Hz +250Hz +300Hz +400Hz + +True + + + + + +1200 +2400 +4800 +9600 +19200 +38400 +57600 +111100 +115200 +460800 +500000 +921600 +1500000 + + + + +MAVlink1 +MAVLink2 + + + + +None +MAVLink1 +MAVLink2 +Frsky D +Frsky SPort +GPS +Alexmos Gimbal Serial +SToRM32 Gimbal Serial +Lidar +FrSky SPort Passthrough (OpenTX) +Lidar360 +Aerotenna uLanding +Pozyx Beacon + + + + +1200 +2400 +4800 +9600 +19200 +38400 +57600 +111100 +115200 +500000 +921600 +1500000 + + + + +None +MAVLink1 +MAVLink2 +Frsky D +Frsky SPort +GPS +Alexmos Gimbal Serial +SToRM32 Gimbal Serial +Lidar +FrSky SPort Passthrough (OpenTX) +Lidar360 +Aerotenna uLanding +Pozyx Beacon + + + + +1200 +2400 +4800 +9600 +19200 +38400 +57600 +111100 +115200 +500000 +921600 +1500000 + + + + +None +MAVLink1 +MAVLink2 +Frsky D +Frsky SPort +GPS +Alexmos Gimbal Serial +SToRM32 Gimbal Serial +Lidar +FrSky SPort Passthrough (OpenTX) +Lidar360 +Aerotenna uLanding +Pozyx Beacon + + + + +1200 +2400 +4800 +9600 +19200 +38400 +57600 +111100 +115200 +500000 +921600 +1500000 + + + + +None +MAVLink1 +MAVLink2 +Frsky D +Frsky SPort +GPS +Alexmos Gimbal Serial +SToRM32 Gimbal Serial +Lidar +FrSky SPort Passthrough (OpenTX) +Lidar360 +Aerotenna uLanding +Pozyx Beacon + + + + +1200 +2400 +4800 +9600 +19200 +38400 +57600 +111100 +115200 +500000 +921600 +1500000 + + + + +None +MAVLink1 +MAVLink2 +Frsky D +Frsky SPort +GPS +Alexmos Gimbal Serial +SToRM32 Gimbal Serial +Lidar +FrSky SPort Passthrough (OpenTX) +Lidar360 +Aerotenna uLanding +Pozyx Beacon + + + + +1200 +2400 +4800 +9600 +19200 +38400 +57600 +111100 +115200 +500000 +921600 +1500000 + + + + + + +Disable +Enable + + + +0: Servo 1, 1: Servo 2, 2: Servo 3, 3: Servo 4, 4: Servo 5, 5: Servo 6, 6: Servo 7, 7: Servo 8, 8: Servo 9, 9: Servo 10, 10: Servo 11, 11: Servo 12, 12: Servo 13, 13: Servo 14, 14: Servo 15 + + +0: ESC 1, 1: ESC 2, 2: ESC 3, 3: ESC 4, 4: ESC 5, 5: ESC 6, 6: ESC 7, 7: ESC 8, 8: ESC 9, 9: ESC 10, 10: ESC 11, 11: ESC 12, 12: ESC 13, 13: ESC 14, 14: ESC 15, 15: ESC 16 + + + + +800 2200 +1 +pwm + + +800 2200 +1 +pwm + + +800 2200 +1 +pwm + + + +Normal +Reversed + + + + +Disabled +RCPassThru +Flap +Flap_auto +Aileron +mount_pan +mount_tilt +mount_roll +mount_open +camera_trigger +release +mount2_pan +mount2_tilt +mount2_roll +mount2_open +DifferentialSpoiler1 +DifferentialSpoiler2 +AileronWithInput +Elevator +ElevatorWithInput +Rudder +Flaperon1 +Flaperon2 +GroundSteering +Parachute +EPM +LandingGear +EngineRunEnable +HeliRSC +HeliTailRSC +Motor1 +Motor2 +Motor3 +Motor4 +Motor5 +Motor6 +Motor7 +Motor8 +MotorTilt +RCIN1 +RCIN2 +RCIN3 +RCIN4 +RCIN5 +RCIN6 +RCIN7 +RCIN8 +RCIN9 +RCIN10 +RCIN11 +RCIN12 +RCIN13 +RCIN14 +RCIN15 +RCIN16 +Ignition +Choke +Starter +Throttle +TrackerYaw +TrackerPitch +ThrottleLeft +ThrottleRight + + + + + +800 2200 +1 +pwm + + +800 2200 +1 +pwm + + +800 2200 +1 +pwm + + + +Normal +Reversed + + + + +Disabled +RCPassThru +Flap +Flap_auto +Aileron +mount_pan +mount_tilt +mount_roll +mount_open +camera_trigger +release +mount2_pan +mount2_tilt +mount2_roll +mount2_open +DifferentialSpoiler1 +DifferentialSpoiler2 +AileronWithInput +Elevator +ElevatorWithInput +Rudder +Flaperon1 +Flaperon2 +GroundSteering +Parachute +EPM +LandingGear +EngineRunEnable +HeliRSC +HeliTailRSC +Motor1 +Motor2 +Motor3 +Motor4 +Motor5 +Motor6 +Motor7 +Motor8 +MotorTilt +RCIN1 +RCIN2 +RCIN3 +RCIN4 +RCIN5 +RCIN6 +RCIN7 +RCIN8 +RCIN9 +RCIN10 +RCIN11 +RCIN12 +RCIN13 +RCIN14 +RCIN15 +RCIN16 +Ignition +Choke +Starter +Throttle +TrackerYaw +TrackerPitch +ThrottleLeft +ThrottleRight + + + + + +800 2200 +1 +pwm + + +800 2200 +1 +pwm + + +800 2200 +1 +pwm + + + +Normal +Reversed + + + + +Disabled +RCPassThru +Flap +Flap_auto +Aileron +mount_pan +mount_tilt +mount_roll +mount_open +camera_trigger +release +mount2_pan +mount2_tilt +mount2_roll +mount2_open +DifferentialSpoiler1 +DifferentialSpoiler2 +AileronWithInput +Elevator +ElevatorWithInput +Rudder +Flaperon1 +Flaperon2 +GroundSteering +Parachute +EPM +LandingGear +EngineRunEnable +HeliRSC +HeliTailRSC +Motor1 +Motor2 +Motor3 +Motor4 +Motor5 +Motor6 +Motor7 +Motor8 +MotorTilt +RCIN1 +RCIN2 +RCIN3 +RCIN4 +RCIN5 +RCIN6 +RCIN7 +RCIN8 +RCIN9 +RCIN10 +RCIN11 +RCIN12 +RCIN13 +RCIN14 +RCIN15 +RCIN16 +Ignition +Choke +Starter +Throttle +TrackerYaw +TrackerPitch +ThrottleLeft +ThrottleRight + + + + + +800 2200 +1 +pwm + + +800 2200 +1 +pwm + + +800 2200 +1 +pwm + + + +Normal +Reversed + + + + +Disabled +RCPassThru +Flap +Flap_auto +Aileron +mount_pan +mount_tilt +mount_roll +mount_open +camera_trigger +release +mount2_pan +mount2_tilt +mount2_roll +mount2_open +DifferentialSpoiler1 +DifferentialSpoiler2 +AileronWithInput +Elevator +ElevatorWithInput +Rudder +Flaperon1 +Flaperon2 +GroundSteering +Parachute +EPM +LandingGear +EngineRunEnable +HeliRSC +HeliTailRSC +Motor1 +Motor2 +Motor3 +Motor4 +Motor5 +Motor6 +Motor7 +Motor8 +MotorTilt +RCIN1 +RCIN2 +RCIN3 +RCIN4 +RCIN5 +RCIN6 +RCIN7 +RCIN8 +RCIN9 +RCIN10 +RCIN11 +RCIN12 +RCIN13 +RCIN14 +RCIN15 +RCIN16 +Ignition +Choke +Starter +Throttle +TrackerYaw +TrackerPitch +ThrottleLeft +ThrottleRight + + + + + +800 2200 +1 +pwm + + +800 2200 +1 +pwm + + +800 2200 +1 +pwm + + + +Normal +Reversed + + + + +Disabled +RCPassThru +Flap +Flap_auto +Aileron +mount_pan +mount_tilt +mount_roll +mount_open +camera_trigger +release +mount2_pan +mount2_tilt +mount2_roll +mount2_open +DifferentialSpoiler1 +DifferentialSpoiler2 +AileronWithInput +Elevator +ElevatorWithInput +Rudder +Flaperon1 +Flaperon2 +GroundSteering +Parachute +EPM +LandingGear +EngineRunEnable +HeliRSC +HeliTailRSC +Motor1 +Motor2 +Motor3 +Motor4 +Motor5 +Motor6 +Motor7 +Motor8 +MotorTilt +RCIN1 +RCIN2 +RCIN3 +RCIN4 +RCIN5 +RCIN6 +RCIN7 +RCIN8 +RCIN9 +RCIN10 +RCIN11 +RCIN12 +RCIN13 +RCIN14 +RCIN15 +RCIN16 +Ignition +Choke +Starter +Throttle +TrackerYaw +TrackerPitch +ThrottleLeft +ThrottleRight + + + + + +800 2200 +1 +pwm + + +800 2200 +1 +pwm + + +800 2200 +1 +pwm + + + +Normal +Reversed + + + + +Disabled +RCPassThru +Flap +Flap_auto +Aileron +mount_pan +mount_tilt +mount_roll +mount_open +camera_trigger +release +mount2_pan +mount2_tilt +mount2_roll +mount2_open +DifferentialSpoiler1 +DifferentialSpoiler2 +AileronWithInput +Elevator +ElevatorWithInput +Rudder +Flaperon1 +Flaperon2 +GroundSteering +Parachute +EPM +LandingGear +EngineRunEnable +HeliRSC +HeliTailRSC +Motor1 +Motor2 +Motor3 +Motor4 +Motor5 +Motor6 +Motor7 +Motor8 +MotorTilt +RCIN1 +RCIN2 +RCIN3 +RCIN4 +RCIN5 +RCIN6 +RCIN7 +RCIN8 +RCIN9 +RCIN10 +RCIN11 +RCIN12 +RCIN13 +RCIN14 +RCIN15 +RCIN16 +Ignition +Choke +Starter +Throttle +TrackerYaw +TrackerPitch +ThrottleLeft +ThrottleRight + + + + + +800 2200 +1 +pwm + + +800 2200 +1 +pwm + + +800 2200 +1 +pwm + + + +Normal +Reversed + + + + +Disabled +RCPassThru +Flap +Flap_auto +Aileron +mount_pan +mount_tilt +mount_roll +mount_open +camera_trigger +release +mount2_pan +mount2_tilt +mount2_roll +mount2_open +DifferentialSpoiler1 +DifferentialSpoiler2 +AileronWithInput +Elevator +ElevatorWithInput +Rudder +Flaperon1 +Flaperon2 +GroundSteering +Parachute +EPM +LandingGear +EngineRunEnable +HeliRSC +HeliTailRSC +Motor1 +Motor2 +Motor3 +Motor4 +Motor5 +Motor6 +Motor7 +Motor8 +MotorTilt +RCIN1 +RCIN2 +RCIN3 +RCIN4 +RCIN5 +RCIN6 +RCIN7 +RCIN8 +RCIN9 +RCIN10 +RCIN11 +RCIN12 +RCIN13 +RCIN14 +RCIN15 +RCIN16 +Ignition +Choke +Starter +Throttle +TrackerYaw +TrackerPitch +ThrottleLeft +ThrottleRight + + + + + +800 2200 +1 +pwm + + +800 2200 +1 +pwm + + +800 2200 +1 +pwm + + + +Normal +Reversed + + + + +Disabled +RCPassThru +Flap +Flap_auto +Aileron +mount_pan +mount_tilt +mount_roll +mount_open +camera_trigger +release +mount2_pan +mount2_tilt +mount2_roll +mount2_open +DifferentialSpoiler1 +DifferentialSpoiler2 +AileronWithInput +Elevator +ElevatorWithInput +Rudder +Flaperon1 +Flaperon2 +GroundSteering +Parachute +EPM +LandingGear +EngineRunEnable +HeliRSC +HeliTailRSC +Motor1 +Motor2 +Motor3 +Motor4 +Motor5 +Motor6 +Motor7 +Motor8 +MotorTilt +RCIN1 +RCIN2 +RCIN3 +RCIN4 +RCIN5 +RCIN6 +RCIN7 +RCIN8 +RCIN9 +RCIN10 +RCIN11 +RCIN12 +RCIN13 +RCIN14 +RCIN15 +RCIN16 +Ignition +Choke +Starter +Throttle +TrackerYaw +TrackerPitch +ThrottleLeft +ThrottleRight + + + + + +800 2200 +1 +pwm + + +800 2200 +1 +pwm + + +800 2200 +1 +pwm + + + +Normal +Reversed + + + + +Disabled +RCPassThru +Flap +Flap_auto +Aileron +mount_pan +mount_tilt +mount_roll +mount_open +camera_trigger +release +mount2_pan +mount2_tilt +mount2_roll +mount2_open +DifferentialSpoiler1 +DifferentialSpoiler2 +AileronWithInput +Elevator +ElevatorWithInput +Rudder +Flaperon1 +Flaperon2 +GroundSteering +Parachute +EPM +LandingGear +EngineRunEnable +HeliRSC +HeliTailRSC +Motor1 +Motor2 +Motor3 +Motor4 +Motor5 +Motor6 +Motor7 +Motor8 +MotorTilt +RCIN1 +RCIN2 +RCIN3 +RCIN4 +RCIN5 +RCIN6 +RCIN7 +RCIN8 +RCIN9 +RCIN10 +RCIN11 +RCIN12 +RCIN13 +RCIN14 +RCIN15 +RCIN16 +Ignition +Choke +Starter +Throttle +TrackerYaw +TrackerPitch +ThrottleLeft +ThrottleRight + + + + + +800 2200 +1 +pwm + + +800 2200 +1 +pwm + + +800 2200 +1 +pwm + + + +Normal +Reversed + + + + +Disabled +RCPassThru +Flap +Flap_auto +Aileron +mount_pan +mount_tilt +mount_roll +mount_open +camera_trigger +release +mount2_pan +mount2_tilt +mount2_roll +mount2_open +DifferentialSpoiler1 +DifferentialSpoiler2 +AileronWithInput +Elevator +ElevatorWithInput +Rudder +Flaperon1 +Flaperon2 +GroundSteering +Parachute +EPM +LandingGear +EngineRunEnable +HeliRSC +HeliTailRSC +Motor1 +Motor2 +Motor3 +Motor4 +Motor5 +Motor6 +Motor7 +Motor8 +MotorTilt +RCIN1 +RCIN2 +RCIN3 +RCIN4 +RCIN5 +RCIN6 +RCIN7 +RCIN8 +RCIN9 +RCIN10 +RCIN11 +RCIN12 +RCIN13 +RCIN14 +RCIN15 +RCIN16 +Ignition +Choke +Starter +Throttle +TrackerYaw +TrackerPitch +ThrottleLeft +ThrottleRight + + + + + +800 2200 +1 +pwm + + +800 2200 +1 +pwm + + +800 2200 +1 +pwm + + + +Normal +Reversed + + + + +Disabled +RCPassThru +Flap +Flap_auto +Aileron +mount_pan +mount_tilt +mount_roll +mount_open +camera_trigger +release +mount2_pan +mount2_tilt +mount2_roll +mount2_open +DifferentialSpoiler1 +DifferentialSpoiler2 +AileronWithInput +Elevator +ElevatorWithInput +Rudder +Flaperon1 +Flaperon2 +GroundSteering +Parachute +EPM +LandingGear +EngineRunEnable +HeliRSC +HeliTailRSC +Motor1 +Motor2 +Motor3 +Motor4 +Motor5 +Motor6 +Motor7 +Motor8 +MotorTilt +RCIN1 +RCIN2 +RCIN3 +RCIN4 +RCIN5 +RCIN6 +RCIN7 +RCIN8 +RCIN9 +RCIN10 +RCIN11 +RCIN12 +RCIN13 +RCIN14 +RCIN15 +RCIN16 +Ignition +Choke +Starter +Throttle +TrackerYaw +TrackerPitch +ThrottleLeft +ThrottleRight + + + + + +800 2200 +1 +pwm + + +800 2200 +1 +pwm + + +800 2200 +1 +pwm + + + +Normal +Reversed + + + + +Disabled +RCPassThru +Flap +Flap_auto +Aileron +mount_pan +mount_tilt +mount_roll +mount_open +camera_trigger +release +mount2_pan +mount2_tilt +mount2_roll +mount2_open +DifferentialSpoiler1 +DifferentialSpoiler2 +AileronWithInput +Elevator +ElevatorWithInput +Rudder +Flaperon1 +Flaperon2 +GroundSteering +Parachute +EPM +LandingGear +EngineRunEnable +HeliRSC +HeliTailRSC +Motor1 +Motor2 +Motor3 +Motor4 +Motor5 +Motor6 +Motor7 +Motor8 +MotorTilt +RCIN1 +RCIN2 +RCIN3 +RCIN4 +RCIN5 +RCIN6 +RCIN7 +RCIN8 +RCIN9 +RCIN10 +RCIN11 +RCIN12 +RCIN13 +RCIN14 +RCIN15 +RCIN16 +Ignition +Choke +Starter +Throttle +TrackerYaw +TrackerPitch +ThrottleLeft +ThrottleRight + + + + + +800 2200 +1 +pwm + + +800 2200 +1 +pwm + + +800 2200 +1 +pwm + + + +Normal +Reversed + + + + +Disabled +RCPassThru +Flap +Flap_auto +Aileron +mount_pan +mount_tilt +mount_roll +mount_open +camera_trigger +release +mount2_pan +mount2_tilt +mount2_roll +mount2_open +DifferentialSpoiler1 +DifferentialSpoiler2 +AileronWithInput +Elevator +ElevatorWithInput +Rudder +Flaperon1 +Flaperon2 +GroundSteering +Parachute +EPM +LandingGear +EngineRunEnable +HeliRSC +HeliTailRSC +Motor1 +Motor2 +Motor3 +Motor4 +Motor5 +Motor6 +Motor7 +Motor8 +MotorTilt +RCIN1 +RCIN2 +RCIN3 +RCIN4 +RCIN5 +RCIN6 +RCIN7 +RCIN8 +RCIN9 +RCIN10 +RCIN11 +RCIN12 +RCIN13 +RCIN14 +RCIN15 +RCIN16 +Ignition +Choke +Starter +Throttle +TrackerYaw +TrackerPitch +ThrottleLeft +ThrottleRight + + + + + +800 2200 +1 +pwm + + +800 2200 +1 +pwm + + +800 2200 +1 +pwm + + + +Normal +Reversed + + + + +Disabled +RCPassThru +Flap +Flap_auto +Aileron +mount_pan +mount_tilt +mount_roll +mount_open +camera_trigger +release +mount2_pan +mount2_tilt +mount2_roll +mount2_open +DifferentialSpoiler1 +DifferentialSpoiler2 +AileronWithInput +Elevator +ElevatorWithInput +Rudder +Flaperon1 +Flaperon2 +GroundSteering +Parachute +EPM +LandingGear +EngineRunEnable +HeliRSC +HeliTailRSC +Motor1 +Motor2 +Motor3 +Motor4 +Motor5 +Motor6 +Motor7 +Motor8 +MotorTilt +RCIN1 +RCIN2 +RCIN3 +RCIN4 +RCIN5 +RCIN6 +RCIN7 +RCIN8 +RCIN9 +RCIN10 +RCIN11 +RCIN12 +RCIN13 +RCIN14 +RCIN15 +RCIN16 +Ignition +Choke +Starter +Throttle +TrackerYaw +TrackerPitch +ThrottleLeft +ThrottleRight + + + + + +800 2200 +1 +pwm + + +800 2200 +1 +pwm + + +800 2200 +1 +pwm + + + +Normal +Reversed + + + + +Disabled +RCPassThru +Flap +Flap_auto +Aileron +mount_pan +mount_tilt +mount_roll +mount_open +camera_trigger +release +mount2_pan +mount2_tilt +mount2_roll +mount2_open +DifferentialSpoiler1 +DifferentialSpoiler2 +AileronWithInput +Elevator +ElevatorWithInput +Rudder +Flaperon1 +Flaperon2 +GroundSteering +Parachute +EPM +LandingGear +EngineRunEnable +HeliRSC +HeliTailRSC +Motor1 +Motor2 +Motor3 +Motor4 +Motor5 +Motor6 +Motor7 +Motor8 +MotorTilt +RCIN1 +RCIN2 +RCIN3 +RCIN4 +RCIN5 +RCIN6 +RCIN7 +RCIN8 +RCIN9 +RCIN10 +RCIN11 +RCIN12 +RCIN13 +RCIN14 +RCIN15 +RCIN16 +Ignition +Choke +Starter +Throttle +TrackerYaw +TrackerPitch +ThrottleLeft +ThrottleRight + + + + + +800 2200 +1 +pwm + + +800 2200 +1 +pwm + + +800 2200 +1 +pwm + + + +Normal +Reversed + + + + +Disabled +RCPassThru +Flap +Flap_auto +Aileron +mount_pan +mount_tilt +mount_roll +mount_open +camera_trigger +release +mount2_pan +mount2_tilt +mount2_roll +mount2_open +DifferentialSpoiler1 +DifferentialSpoiler2 +AileronWithInput +Elevator +ElevatorWithInput +Rudder +Flaperon1 +Flaperon2 +GroundSteering +Parachute +EPM +LandingGear +EngineRunEnable +HeliRSC +HeliTailRSC +Motor1 +Motor2 +Motor3 +Motor4 +Motor5 +Motor6 +Motor7 +Motor8 +MotorTilt +RCIN1 +RCIN2 +RCIN3 +RCIN4 +RCIN5 +RCIN6 +RCIN7 +RCIN8 +RCIN9 +RCIN10 +RCIN11 +RCIN12 +RCIN13 +RCIN14 +RCIN15 +RCIN16 +Ignition +Choke +Starter +Throttle +TrackerYaw +TrackerPitch +ThrottleLeft +ThrottleRight + + + + + +0 10 +1 +Hz + + +0 10 +1 +Hz + + +0 10 +1 +Hz + + +0 10 +1 +Hz + + +0 10 +1 +Hz + + +0 10 +1 +Hz + + +0 10 +1 +Hz + + +0 10 +1 +Hz + + + + +0 10 +1 +Hz + + +0 10 +1 +Hz + + +0 10 +1 +Hz + + +0 10 +1 +Hz + + +0 10 +1 +Hz + + +0 10 +1 +Hz + + +0 10 +1 +Hz + + +0 10 +1 +Hz + + + + +0 10 +1 +Hz + + +0 10 +1 +Hz + + +0 10 +1 +Hz + + +0 10 +1 +Hz + + +0 10 +1 +Hz + + +0 10 +1 +Hz + + +0 10 +1 +Hz + + +0 10 +1 +Hz + + + + +0 10 +1 +Hz + + +0 10 +1 +Hz + + +0 10 +1 +Hz + + +0 10 +1 +Hz + + +0 10 +1 +Hz + + +0 10 +1 +Hz + + +0 10 +1 +Hz + + +0 10 +1 +Hz + + + + + +Disable +Enable + + + +1 +meters + + + + +20 2000 +50 +cm/s + + +100 1000 +1 +cm + + +10 1000 +50 +cm/s + + +10 500 +10 +cm/s + + +20 2000 +50 +cm/s + + +50 500 +10 +cm/s/s + + +50 500 +10 +cm/s/s + + +500 5000 +1 +cm/s/s/s + + +100 981 +1 +cm/s/s + + +25 250 +1 +cm/s/s + + + +Disable +Enable + + + + diff --git a/src/FirmwarePlugin/APM/APMParameterFactMetaData.Sub.3.6.xml b/src/FirmwarePlugin/APM/APMParameterFactMetaData.Sub.3.6.xml new file mode 100644 index 0000000..9239b7e --- /dev/null +++ b/src/FirmwarePlugin/APM/APMParameterFactMetaData.Sub.3.6.xml @@ -0,0 +1,12574 @@ + + + + + + +-100 0 +cm +centimeters + + +True + + +1 255 + + + + +0 10 +.5 +Hz +hertz + + +0:Roll,1:Pitch,2:Yaw + +None +Roll +Pitch +Yaw + + + +0.01 2.0 +0.01 + + + +Disabled +Warn only +Disarm +Enter depth hold mode +Enter surface mode + + + + +Disabled +Warn only +Enter surface mode + + + + +Disabled +Warn only + + + + +Disabled +Warn only + + + +Pa +pascal + + +degC +degrees Celsius + + + +Disarm +Hold Position +Surface + + + + +Disabled +Warn Only +Disarm + + + +0.1 3.0 +s +seconds + + +10 90 + + + +Never change yaw +Face next waypoint +Face next waypoint except RTL +Face along GPS course +Correct crosstrack error + + + +50 500 +10 +cm/s +centimeters per second + + +50 500 +10 +cm/s +centimeters per second + + +50 500 +10 +cm/s/s +centimeters per square second + + +0 300 +1 +PWM +PWM in microseconds + + +0:ATTITUDE_FAST,1:ATTITUDE_MED,2:GPS,3:PM,4:CTUN,5:NTUN,6:RCIN,7:IMU,8:CMD,9:CURRENT,10:RCOUT,11:OPTFLOW,12:PID,13:COMPASS,14:INAV,15:CAMERA,17:MOTBATT,18:IMU_FAST,19:IMU_RAW + +Default +Default+RCIN +Default+IMU +Default+Motors +NearlyAll-AC315 +NearlyAll +All+FastATT +All+MotBatt +All+FastIMU +All+FastIMU+PID +All+FullIMU +Disabled + + + +1000 8000 +cdeg +centidegrees + + + +Disabled +Warn only +Disarm + + + +0.6:Strict, 0.8:Default, 1.0:Relaxed + + + +Disabled +Warn only +Disarm + + + +0.1 1.0 + + +0.2 1.0 + + +0.1 0.8 + + +1 10 + + +1 10 +PWM +PWM in microseconds + + +0.5 4.0 + + + +BlueROV1 +Vectored +Vectored_6DOF +Vectored_6DOF_90 +SimpleROV-3 +SimpleROV-4 +SimpleROV-5 +Custom + +True + + +50 490 +1 +Hz +hertz + + +1 10 + + +1 10 + + +0 3 +0.1 + + +0 3 +0.1 + + + +Disabled +Leveling +Leveling and Limited + + + + +Disabled +Very Low +Low +Medium +High +Very High + + + + +Do Not Use in RTL and SURFACE +Use in RTL and SURFACE + + + + + +0.0 1.0 +.01 + + + +Disabled +Enabled + + + +0.1 0.4 +.01 + + +0.1 0.4 +.01 + + +0 127 +1 +m/s +meters per second + + +-0.1745 +0.1745 +0.01 +rad +radians + + +-0.1745 +0.1745 +0.01 +rad +radians + + +-0.1745 +0.1745 +0.01 +rad +radians + + + +None +Yaw45 +Yaw90 +Yaw135 +Yaw180 +Yaw225 +Yaw270 +Yaw315 +Roll180 +Roll180Yaw45 +Roll180Yaw90 +Roll180Yaw135 +Pitch180 +Roll180Yaw225 +Roll180Yaw270 +Roll180Yaw315 +Roll90 +Roll90Yaw45 +Roll90Yaw90 +Roll90Yaw135 +Roll270 +Roll270Yaw45 +Roll270Yaw90 +Roll270Yaw135 +Pitch90 +Pitch270 +Pitch180Yaw90 +Pitch180Yaw270 +Roll90Pitch90 +Roll180Pitch90 +Roll270Pitch90 +Roll90Pitch180 +Roll270Pitch180 +Roll90Pitch270 +Roll180Pitch270 +Roll270Pitch270 +Roll90Pitch180Yaw90 +Roll90Yaw270 +Yaw293Pitch68Roll180 +Pitch315 +Roll90Pitch315 +Custom + + + +0.001 0.5 +.01 + + +0 10 +1 + + + +Disabled +Enable EKF2 +Enable EKF3 + + + +-180 180 +1 +deg +degrees + + +-180 180 +1 +deg +degrees + + +-180 180 +1 +deg +degrees + + + + + +Disabled +THR_MIN PWM when disarmed +0 PWM when disarmed + + + +0:All,1:Barometer,2:Compass,3:GPS lock,4:INS,5:Parameters,6:RC Channels,7:Board voltage,8:Battery Level,9:Airspeed,10:Logging Available,11:Hardware safety switch,12:GPS Configuration,13:System + +None +All +Barometer +Compass +GPS Lock +INS(INertial Sensors - accels & gyros) +Parameters(unused) +RC Channels +Board voltage +Battery Level +Airspeed +LoggingAvailable +Hardware safety switch +GPS configuration +System + + + +0.25 3.0 +m/s/s +meters per square second + + + +Disabled +ArmingOnly +ArmOrDisarm + + + +0:Land,1:VTOL Land,2:DO_LAND_START,3:Takeoff,4:VTOL Takeoff,5:Rallypoint + + + + +500 18000 +100 +cdeg/s +centidegrees per second + + +0 72000 + +Disabled +VerySlow +Slow +Medium +Fast + +1000 +cdeg/s/s +centidegrees per square second + + + +Disabled +Enabled + + + +0 180000 + +Disabled +VerySlow +Slow +Medium +Fast + +1000 +cdeg/s/s +centidegrees per square second + + +0 180000 + +Disabled +VerySlow +Slow +Medium +Fast + +1000 +cdeg/s/s +centidegrees per square second + + + +Disabled +Enabled + + + +0.0 12.000 + + +0.0 12.000 + + +0.0 6.000 + + +0.5 10.0 + + +0 1080 + +Disabled +Slow +Medium +Fast + +1 +deg/s +degrees per second + + +0 1080 + +Disabled +Slow +Medium +Fast + +1 +deg/s +degrees per second + + +0 1080 + +Disabled +Slow +Medium +Fast + +1 +deg/s +degrees per second + + +0 1 +0.5:Very Soft, 0.2:Soft, 0.15:Medium, 0.1:Crisp, 0.05:Very Crisp +0.01 +s +seconds + + +0.0 0.30 +0.005 + + +0.0 0.5 +0.01 + + +0 1 +0.01 +% +percent + + +0.0 0.02 +0.001 + + +0 0.5 +0.001 + + +1 100 +1 +Hz +hertz + + +0.0 0.30 +0.005 + + +0.0 0.5 +0.01 + + +0 1 +0.01 +% +percent + + +0.0 0.02 +0.001 + + +0 0.5 +0.001 + + +1 100 +1 +Hz +hertz + + +0.0 0.50 +0.005 + + +0.0 0.05 +0.01 + + +0 1 +0.01 +% +percent + + +0.000 0.02 +0.001 + + +0 0.5 +0.001 + + +1 100 +1 +Hz +hertz + + +0.1 0.25 + + +0.5 0.9 + + +0.5 0.9 + + + + +0:StopAtFence,1:UseProximitySensor,2:StopAtBeaconFence + +None +StopAtFence +UseProximitySensor +StopAtFence and UseProximitySensor +StopAtBeaconFence +All + + + +0 4500 +cdeg +centidegrees + + +1 30 +m +meters + + +1 10 +m +meters + + + +Slide +Stop + + + + + + +Disabled +Analog Voltage Only +Analog Voltage and Current +Solo +Bebop +SMBus-Maxell +UAVCAN-BatteryInfo +BLHeli ESC +SumOfFollowing +FuelFlow + +True + + + +Disabled +Pixhawk/Pixracer/Navio2/Pixhawk2_PM1 +Pixhawk2_PM2 +PX4-v1 + +True + + + +Disabled +Pixhawk/Pixracer/Navio2/Pixhawk2_PM1 +Pixhawk2_PM2 +PX4-v1 + +True + + + + +A/V +ampere per volt + + +V +volt + + +50 +mAh +milliampere hour + + +1 +W +watt + + + + +0 120 +1 +s +seconds + + + +Raw Voltage +Sag Compensated Voltage + + + +0.1 +V +volt + + +50 +mAh +milliampere hour + + +0.1 +V +volt + + +50 +mAh +milliampere hour + + + +None +Disarm +Enter surface mode + + + + +None +Disarm +Enter surface mode + + + +0.1 +V +volt + + +50 +mAh +milliampere hour + + + + + +Disabled +Analog Voltage Only +Analog Voltage and Current +Solo +Bebop +SMBus-Maxell +UAVCAN-BatteryInfo +BLHeli ESC +SumOfFollowing +FuelFlow + +True + + + +Disabled +Pixhawk/Pixracer/Navio2/Pixhawk2_PM1 +Pixhawk2_PM2 +PX4-v1 + +True + + + +Disabled +Pixhawk/Pixracer/Navio2/Pixhawk2_PM1 +Pixhawk2_PM2 +PX4-v1 + +True + + + + +A/V +ampere per volt + + +V +volt + + +50 +mAh +milliampere hour + + +1 +W +watt + + + + +0 120 +1 +s +seconds + + + +Raw Voltage +Sag Compensated Voltage + + + +0.1 +V +volt + + +50 +mAh +milliampere hour + + +0.1 +V +volt + + +50 +mAh +milliampere hour + + + +None +Disarm +Enter surface mode + + + + +None +Disarm +Enter surface mode + + + +0.1 +V +volt + + +50 +mAh +milliampere hour + + + + + +Disabled +Analog Voltage Only +Analog Voltage and Current +Solo +Bebop +SMBus-Maxell +UAVCAN-BatteryInfo +BLHeli ESC +SumOfFollowing +FuelFlow + +True + + + +Disabled +Pixhawk/Pixracer/Navio2/Pixhawk2_PM1 +Pixhawk2_PM2 +PX4-v1 + +True + + + +Disabled +Pixhawk/Pixracer/Navio2/Pixhawk2_PM1 +Pixhawk2_PM2 +PX4-v1 + +True + + + + +A/V +ampere per volt + + +V +volt + + +50 +mAh +milliampere hour + + +1 +W +watt + + + + +0 120 +1 +s +seconds + + + +Raw Voltage +Sag Compensated Voltage + + + +0.1 +V +volt + + +50 +mAh +milliampere hour + + +0.1 +V +volt + + +50 +mAh +milliampere hour + + + +None +Disarm +Enter surface mode + + + + +None +Disarm +Enter surface mode + + + +0.1 +V +volt + + +50 +mAh +milliampere hour + + + + + +Disabled +Analog Voltage Only +Analog Voltage and Current +Solo +Bebop +SMBus-Maxell +UAVCAN-BatteryInfo +BLHeli ESC +SumOfFollowing +FuelFlow + +True + + + +Disabled +Pixhawk/Pixracer/Navio2/Pixhawk2_PM1 +Pixhawk2_PM2 +PX4-v1 + +True + + + +Disabled +Pixhawk/Pixracer/Navio2/Pixhawk2_PM1 +Pixhawk2_PM2 +PX4-v1 + +True + + + + +A/V +ampere per volt + + +V +volt + + +50 +mAh +milliampere hour + + +1 +W +watt + + + + +0 120 +1 +s +seconds + + + +Raw Voltage +Sag Compensated Voltage + + + +0.1 +V +volt + + +50 +mAh +milliampere hour + + +0.1 +V +volt + + +50 +mAh +milliampere hour + + + +None +Disarm +Enter surface mode + + + + +None +Disarm +Enter surface mode + + + +0.1 +V +volt + + +50 +mAh +milliampere hour + + + + + +Disabled +Analog Voltage Only +Analog Voltage and Current +Solo +Bebop +SMBus-Maxell +UAVCAN-BatteryInfo +BLHeli ESC +SumOfFollowing +FuelFlow + +True + + + +Disabled +Pixhawk/Pixracer/Navio2/Pixhawk2_PM1 +Pixhawk2_PM2 +PX4-v1 + +True + + + +Disabled +Pixhawk/Pixracer/Navio2/Pixhawk2_PM1 +Pixhawk2_PM2 +PX4-v1 + +True + + + + +A/V +ampere per volt + + +V +volt + + +50 +mAh +milliampere hour + + +1 +W +watt + + + + +0 120 +1 +s +seconds + + + +Raw Voltage +Sag Compensated Voltage + + + +0.1 +V +volt + + +50 +mAh +milliampere hour + + +0.1 +V +volt + + +50 +mAh +milliampere hour + + + +None +Disarm +Enter surface mode + + + + +None +Disarm +Enter surface mode + + + +0.1 +V +volt + + +50 +mAh +milliampere hour + + + + + +Disabled +Analog Voltage Only +Analog Voltage and Current +Solo +Bebop +SMBus-Maxell +UAVCAN-BatteryInfo +BLHeli ESC +SumOfFollowing +FuelFlow + +True + + + +Disabled +Pixhawk/Pixracer/Navio2/Pixhawk2_PM1 +Pixhawk2_PM2 +PX4-v1 + +True + + + +Disabled +Pixhawk/Pixracer/Navio2/Pixhawk2_PM1 +Pixhawk2_PM2 +PX4-v1 + +True + + + + +A/V +ampere per volt + + +V +volt + + +50 +mAh +milliampere hour + + +1 +W +watt + + + + +0 120 +1 +s +seconds + + + +Raw Voltage +Sag Compensated Voltage + + + +0.1 +V +volt + + +50 +mAh +milliampere hour + + +0.1 +V +volt + + +50 +mAh +milliampere hour + + + +None +Disarm +Enter surface mode + + + + +None +Disarm +Enter surface mode + + + +0.1 +V +volt + + +50 +mAh +milliampere hour + + + + + +Disabled +Analog Voltage Only +Analog Voltage and Current +Solo +Bebop +SMBus-Maxell +UAVCAN-BatteryInfo +BLHeli ESC +SumOfFollowing +FuelFlow + +True + + + +Disabled +Pixhawk/Pixracer/Navio2/Pixhawk2_PM1 +Pixhawk2_PM2 +PX4-v1 + +True + + + +Disabled +Pixhawk/Pixracer/Navio2/Pixhawk2_PM1 +Pixhawk2_PM2 +PX4-v1 + +True + + + + +A/V +ampere per volt + + +V +volt + + +50 +mAh +milliampere hour + + +1 +W +watt + + + + +0 120 +1 +s +seconds + + + +Raw Voltage +Sag Compensated Voltage + + + +0.1 +V +volt + + +50 +mAh +milliampere hour + + +0.1 +V +volt + + +50 +mAh +milliampere hour + + + +None +Disarm +Enter surface mode + + + + +None +Disarm +Enter surface mode + + + +0.1 +V +volt + + +50 +mAh +milliampere hour + + + + + +Disabled +Analog Voltage Only +Analog Voltage and Current +Solo +Bebop +SMBus-Maxell +UAVCAN-BatteryInfo +BLHeli ESC +SumOfFollowing +FuelFlow + +True + + + +Disabled +Pixhawk/Pixracer/Navio2/Pixhawk2_PM1 +Pixhawk2_PM2 +PX4-v1 + +True + + + +Disabled +Pixhawk/Pixracer/Navio2/Pixhawk2_PM1 +Pixhawk2_PM2 +PX4-v1 + +True + + + + +A/V +ampere per volt + + +V +volt + + +50 +mAh +milliampere hour + + +1 +W +watt + + + + +0 120 +1 +s +seconds + + + +Raw Voltage +Sag Compensated Voltage + + + +0.1 +V +volt + + +50 +mAh +milliampere hour + + +0.1 +V +volt + + +50 +mAh +milliampere hour + + + +None +Disarm +Enter surface mode + + + + +None +Disarm +Enter surface mode + + + +0.1 +V +volt + + +50 +mAh +milliampere hour + + + + + +Disabled +Analog Voltage Only +Analog Voltage and Current +Solo +Bebop +SMBus-Maxell +UAVCAN-BatteryInfo +BLHeli ESC +SumOfFollowing +FuelFlow + +True + + + +Disabled +Pixhawk/Pixracer/Navio2/Pixhawk2_PM1 +Pixhawk2_PM2 +PX4-v1 + +True + + + +Disabled +Pixhawk/Pixracer/Navio2/Pixhawk2_PM1 +Pixhawk2_PM2 +PX4-v1 + +True + + + + +A/V +ampere per volt + + +V +volt + + +50 +mAh +milliampere hour + + +1 +W +watt + + + + +0 120 +1 +s +seconds + + + +Raw Voltage +Sag Compensated Voltage + + + +0.1 +V +volt + + +50 +mAh +milliampere hour + + +0.1 +V +volt + + +50 +mAh +milliampere hour + + + +None +Disarm +Enter surface mode + + + + +None +Disarm +Enter surface mode + + + +0.1 +V +volt + + +50 +mAh +milliampere hour + + + + + +No PWMs +One PWMs +Two PWMs +Three PWMs +Four PWMs +Five PWMs +Six PWMs +Seven PWMs +Eight PWMs + +True + + + +Disabled +Enabled +Auto + +True + + + +Disabled +Enabled +Auto + +True + + + +Disabled +Enabled + +True + + + +Disabled +50Hz +75Hz +100Hz +150Hz +200Hz +250Hz +300Hz + +True + + +-32768 32767 + + +0:Ch1,1:Ch2,2:Ch3,3:Ch4,4:Ch5,5:Ch6,6:Ch7,7:Ch8,8:Ch9,9:Ch10,10:Ch11,11:Ch12,12:Ch13,13:Ch14 + +Disabled +Enabled + +True + + +-1 80 +degC +degrees Celsius + + + +AUTO +PX4V1 +Pixhawk +Cube/Pixhawk2 +Pixracer +PixhawkMini +Pixhawk2Slim +VRBrain 5.1 +VRBrain 5.2 +VR Micro Brain 5.1 +VR Micro Brain 5.2 +VRBrain Core 1.0 +VRBrain 5.4 +Intel Aero FC +AUAV2.1 + +True + + + +Disabled +Enabled + +True + + +0:ActiveForSafetyEnable,1:ActiveForSafetyDisable,2:ActiveWhenArmed,3:Force safety on when the aircraft disarms + + +4.0 5.5 +0.1 +V +volt + + +3.3 12.0 +0.1 +V +volt + + +0 32 +1 + + + +3.3V +5V + + + + + + +None +CYRF6936 + + + + +Auto +DSM2 +DSMX + + + +0 4 + + + +NotDisabled +Disabled + + + +0 16 + + +0 16 + + + +Disabled +Enabled + + + +1 8 + + + +Disabled +MinChannel +MidChannel +MaxChannel +MinChannelCW +MidChannelCW +MaxChannelCW + + + + +Mode1 +Mode2 + + + + +Disabled +TestChan1 +TestChan2 +TestChan3 +TestChan4 +TestChan5 +TestChan6 +TestChan7 +TestChan8 + + + +0 16 + + +0 16 + + +1 8 + + +0 40 + + +0 120 + + +0 31 + + + + +0:GPS,1:MAVLINK_SYSTEM_TIME,2:HW + + + + + +Disabled +shift +arm_toggle +arm +disarm +mode_manual +mode_stabilize +mode_depth_hold +mode_poshold +mode_auto +mode_circle +mode_guided +mode_acro +mount_center +mount_tilt_up +mount_tilt_down +camera_trigger +camera_source_toggle +mount_pan_right +mount_pan_left +lights1_cycle +lights1_brighter +lights1_dimmer +lights2_cycle +lights2_brighter +lights2_dimmer +gain_toggle +gain_inc +gain_dec +trim_roll_inc +trim_roll_dec +trim_pitch_inc +trim_pitch_dec +input_hold_set +roll_pitch_toggle +relay_1_on +relay_1_off +relay_1_toggle +relay_2_on +relay_2_off +relay_2_toggle +relay_3_on +relay_3_off +relay_3_toggle +servo_1_inc +servo_1_dec +servo_1_min +servo_1_max +servo_1_center +servo_2_inc +servo_2_dec +servo_2_min +servo_2_max +servo_2_center +servo_3_inc +servo_3_dec +servo_3_min +servo_3_max +servo_3_center +servo_1_min_momentary +servo_1_max_momentary +servo_1_min_toggle +servo_1_max_toggle +servo_2_min_momentary +servo_2_max_momentary +servo_2_min_toggle +servo_2_max_toggle +servo_3_min_momentary +servo_3_max_momentary +servo_3_min_toggle +servo_3_max_toggle +custom_1 +custom_2 +custom_3 +custom_4 +custom_5 +custom_6 +relay_4_on +relay_4_off +relay_4_toggle +relay_1_momentary +relay_2_momentary +relay_3_momentary +relay_4_momentary + + + + +Disabled +shift +arm_toggle +arm +disarm +mode_manual +mode_stabilize +mode_depth_hold +mode_poshold +mode_auto +mode_circle +mode_guided +mode_acro +mount_center +mount_tilt_up +mount_tilt_down +camera_trigger +camera_source_toggle +mount_pan_right +mount_pan_left +lights1_cycle +lights1_brighter +lights1_dimmer +lights2_cycle +lights2_brighter +lights2_dimmer +gain_toggle +gain_inc +gain_dec +trim_roll_inc +trim_roll_dec +trim_pitch_inc +trim_pitch_dec +input_hold_set +roll_pitch_toggle +relay_1_on +relay_1_off +relay_1_toggle +relay_2_on +relay_2_off +relay_2_toggle +relay_3_on +relay_3_off +relay_3_toggle +servo_1_inc +servo_1_dec +servo_1_min +servo_1_max +servo_1_center +servo_2_inc +servo_2_dec +servo_2_min +servo_2_max +servo_2_center +servo_3_inc +servo_3_dec +servo_3_min +servo_3_max +servo_3_center +servo_1_min_momentary +servo_1_max_momentary +servo_1_min_toggle +servo_1_max_toggle +servo_2_min_momentary +servo_2_max_momentary +servo_2_min_toggle +servo_2_max_toggle +servo_3_min_momentary +servo_3_max_momentary +servo_3_min_toggle +servo_3_max_toggle +custom_1 +custom_2 +custom_3 +custom_4 +custom_5 +custom_6 +relay_4_on +relay_4_off +relay_4_toggle +relay_1_momentary +relay_2_momentary +relay_3_momentary +relay_4_momentary + + + + + + +Disabled +shift +arm_toggle +arm +disarm +mode_manual +mode_stabilize +mode_depth_hold +mode_poshold +mode_auto +mode_circle +mode_guided +mode_acro +mount_center +mount_tilt_up +mount_tilt_down +camera_trigger +camera_source_toggle +mount_pan_right +mount_pan_left +lights1_cycle +lights1_brighter +lights1_dimmer +lights2_cycle +lights2_brighter +lights2_dimmer +gain_toggle +gain_inc +gain_dec +trim_roll_inc +trim_roll_dec +trim_pitch_inc +trim_pitch_dec +input_hold_set +roll_pitch_toggle +relay_1_on +relay_1_off +relay_1_toggle +relay_2_on +relay_2_off +relay_2_toggle +relay_3_on +relay_3_off +relay_3_toggle +servo_1_inc +servo_1_dec +servo_1_min +servo_1_max +servo_1_center +servo_2_inc +servo_2_dec +servo_2_min +servo_2_max +servo_2_center +servo_3_inc +servo_3_dec +servo_3_min +servo_3_max +servo_3_center +servo_1_min_momentary +servo_1_max_momentary +servo_1_min_toggle +servo_1_max_toggle +servo_2_min_momentary +servo_2_max_momentary +servo_2_min_toggle +servo_2_max_toggle +servo_3_min_momentary +servo_3_max_momentary +servo_3_min_toggle +servo_3_max_toggle +custom_1 +custom_2 +custom_3 +custom_4 +custom_5 +custom_6 +relay_4_on +relay_4_off +relay_4_toggle +relay_1_momentary +relay_2_momentary +relay_3_momentary +relay_4_momentary + + + + +Disabled +shift +arm_toggle +arm +disarm +mode_manual +mode_stabilize +mode_depth_hold +mode_poshold +mode_auto +mode_circle +mode_guided +mode_acro +mount_center +mount_tilt_up +mount_tilt_down +camera_trigger +camera_source_toggle +mount_pan_right +mount_pan_left +lights1_cycle +lights1_brighter +lights1_dimmer +lights2_cycle +lights2_brighter +lights2_dimmer +gain_toggle +gain_inc +gain_dec +trim_roll_inc +trim_roll_dec +trim_pitch_inc +trim_pitch_dec +input_hold_set +roll_pitch_toggle +relay_1_on +relay_1_off +relay_1_toggle +relay_2_on +relay_2_off +relay_2_toggle +relay_3_on +relay_3_off +relay_3_toggle +servo_1_inc +servo_1_dec +servo_1_min +servo_1_max +servo_1_center +servo_2_inc +servo_2_dec +servo_2_min +servo_2_max +servo_2_center +servo_3_inc +servo_3_dec +servo_3_min +servo_3_max +servo_3_center +servo_1_min_momentary +servo_1_max_momentary +servo_1_min_toggle +servo_1_max_toggle +servo_2_min_momentary +servo_2_max_momentary +servo_2_min_toggle +servo_2_max_toggle +servo_3_min_momentary +servo_3_max_momentary +servo_3_min_toggle +servo_3_max_toggle +custom_1 +custom_2 +custom_3 +custom_4 +custom_5 +custom_6 +relay_4_on +relay_4_off +relay_4_toggle +relay_1_momentary +relay_2_momentary +relay_3_momentary +relay_4_momentary + + + + + + +Disabled +shift +arm_toggle +arm +disarm +mode_manual +mode_stabilize +mode_depth_hold +mode_poshold +mode_auto +mode_circle +mode_guided +mode_acro +mount_center +mount_tilt_up +mount_tilt_down +camera_trigger +camera_source_toggle +mount_pan_right +mount_pan_left +lights1_cycle +lights1_brighter +lights1_dimmer +lights2_cycle +lights2_brighter +lights2_dimmer +gain_toggle +gain_inc +gain_dec +trim_roll_inc +trim_roll_dec +trim_pitch_inc +trim_pitch_dec +input_hold_set +roll_pitch_toggle +relay_1_on +relay_1_off +relay_1_toggle +relay_2_on +relay_2_off +relay_2_toggle +relay_3_on +relay_3_off +relay_3_toggle +servo_1_inc +servo_1_dec +servo_1_min +servo_1_max +servo_1_center +servo_2_inc +servo_2_dec +servo_2_min +servo_2_max +servo_2_center +servo_3_inc +servo_3_dec +servo_3_min +servo_3_max +servo_3_center +servo_1_min_momentary +servo_1_max_momentary +servo_1_min_toggle +servo_1_max_toggle +servo_2_min_momentary +servo_2_max_momentary +servo_2_min_toggle +servo_2_max_toggle +servo_3_min_momentary +servo_3_max_momentary +servo_3_min_toggle +servo_3_max_toggle +custom_1 +custom_2 +custom_3 +custom_4 +custom_5 +custom_6 +relay_4_on +relay_4_off +relay_4_toggle +relay_1_momentary +relay_2_momentary +relay_3_momentary +relay_4_momentary + + + + +Disabled +shift +arm_toggle +arm +disarm +mode_manual +mode_stabilize +mode_depth_hold +mode_poshold +mode_auto +mode_circle +mode_guided +mode_acro +mount_center +mount_tilt_up +mount_tilt_down +camera_trigger +camera_source_toggle +mount_pan_right +mount_pan_left +lights1_cycle +lights1_brighter +lights1_dimmer +lights2_cycle +lights2_brighter +lights2_dimmer +gain_toggle +gain_inc +gain_dec +trim_roll_inc +trim_roll_dec +trim_pitch_inc +trim_pitch_dec +input_hold_set +roll_pitch_toggle +relay_1_on +relay_1_off +relay_1_toggle +relay_2_on +relay_2_off +relay_2_toggle +relay_3_on +relay_3_off +relay_3_toggle +servo_1_inc +servo_1_dec +servo_1_min +servo_1_max +servo_1_center +servo_2_inc +servo_2_dec +servo_2_min +servo_2_max +servo_2_center +servo_3_inc +servo_3_dec +servo_3_min +servo_3_max +servo_3_center +servo_1_min_momentary +servo_1_max_momentary +servo_1_min_toggle +servo_1_max_toggle +servo_2_min_momentary +servo_2_max_momentary +servo_2_min_toggle +servo_2_max_toggle +servo_3_min_momentary +servo_3_max_momentary +servo_3_min_toggle +servo_3_max_toggle +custom_1 +custom_2 +custom_3 +custom_4 +custom_5 +custom_6 +relay_4_on +relay_4_off +relay_4_toggle +relay_1_momentary +relay_2_momentary +relay_3_momentary +relay_4_momentary + + + + + + +Disabled +shift +arm_toggle +arm +disarm +mode_manual +mode_stabilize +mode_depth_hold +mode_poshold +mode_auto +mode_circle +mode_guided +mode_acro +mount_center +mount_tilt_up +mount_tilt_down +camera_trigger +camera_source_toggle +mount_pan_right +mount_pan_left +lights1_cycle +lights1_brighter +lights1_dimmer +lights2_cycle +lights2_brighter +lights2_dimmer +gain_toggle +gain_inc +gain_dec +trim_roll_inc +trim_roll_dec +trim_pitch_inc +trim_pitch_dec +input_hold_set +roll_pitch_toggle +relay_1_on +relay_1_off +relay_1_toggle +relay_2_on +relay_2_off +relay_2_toggle +relay_3_on +relay_3_off +relay_3_toggle +servo_1_inc +servo_1_dec +servo_1_min +servo_1_max +servo_1_center +servo_2_inc +servo_2_dec +servo_2_min +servo_2_max +servo_2_center +servo_3_inc +servo_3_dec +servo_3_min +servo_3_max +servo_3_center +servo_1_min_momentary +servo_1_max_momentary +servo_1_min_toggle +servo_1_max_toggle +servo_2_min_momentary +servo_2_max_momentary +servo_2_min_toggle +servo_2_max_toggle +servo_3_min_momentary +servo_3_max_momentary +servo_3_min_toggle +servo_3_max_toggle +custom_1 +custom_2 +custom_3 +custom_4 +custom_5 +custom_6 +relay_4_on +relay_4_off +relay_4_toggle +relay_1_momentary +relay_2_momentary +relay_3_momentary +relay_4_momentary + + + + +Disabled +shift +arm_toggle +arm +disarm +mode_manual +mode_stabilize +mode_depth_hold +mode_poshold +mode_auto +mode_circle +mode_guided +mode_acro +mount_center +mount_tilt_up +mount_tilt_down +camera_trigger +camera_source_toggle +mount_pan_right +mount_pan_left +lights1_cycle +lights1_brighter +lights1_dimmer +lights2_cycle +lights2_brighter +lights2_dimmer +gain_toggle +gain_inc +gain_dec +trim_roll_inc +trim_roll_dec +trim_pitch_inc +trim_pitch_dec +input_hold_set +roll_pitch_toggle +relay_1_on +relay_1_off +relay_1_toggle +relay_2_on +relay_2_off +relay_2_toggle +relay_3_on +relay_3_off +relay_3_toggle +servo_1_inc +servo_1_dec +servo_1_min +servo_1_max +servo_1_center +servo_2_inc +servo_2_dec +servo_2_min +servo_2_max +servo_2_center +servo_3_inc +servo_3_dec +servo_3_min +servo_3_max +servo_3_center +servo_1_min_momentary +servo_1_max_momentary +servo_1_min_toggle +servo_1_max_toggle +servo_2_min_momentary +servo_2_max_momentary +servo_2_min_toggle +servo_2_max_toggle +servo_3_min_momentary +servo_3_max_momentary +servo_3_min_toggle +servo_3_max_toggle +custom_1 +custom_2 +custom_3 +custom_4 +custom_5 +custom_6 +relay_4_on +relay_4_off +relay_4_toggle +relay_1_momentary +relay_2_momentary +relay_3_momentary +relay_4_momentary + + + + + + +Disabled +shift +arm_toggle +arm +disarm +mode_manual +mode_stabilize +mode_depth_hold +mode_poshold +mode_auto +mode_circle +mode_guided +mode_acro +mount_center +mount_tilt_up +mount_tilt_down +camera_trigger +camera_source_toggle +mount_pan_right +mount_pan_left +lights1_cycle +lights1_brighter +lights1_dimmer +lights2_cycle +lights2_brighter +lights2_dimmer +gain_toggle +gain_inc +gain_dec +trim_roll_inc +trim_roll_dec +trim_pitch_inc +trim_pitch_dec +input_hold_set +roll_pitch_toggle +relay_1_on +relay_1_off +relay_1_toggle +relay_2_on +relay_2_off +relay_2_toggle +relay_3_on +relay_3_off +relay_3_toggle +servo_1_inc +servo_1_dec +servo_1_min +servo_1_max +servo_1_center +servo_2_inc +servo_2_dec +servo_2_min +servo_2_max +servo_2_center +servo_3_inc +servo_3_dec +servo_3_min +servo_3_max +servo_3_center +servo_1_min_momentary +servo_1_max_momentary +servo_1_min_toggle +servo_1_max_toggle +servo_2_min_momentary +servo_2_max_momentary +servo_2_min_toggle +servo_2_max_toggle +servo_3_min_momentary +servo_3_max_momentary +servo_3_min_toggle +servo_3_max_toggle +custom_1 +custom_2 +custom_3 +custom_4 +custom_5 +custom_6 +relay_4_on +relay_4_off +relay_4_toggle +relay_1_momentary +relay_2_momentary +relay_3_momentary +relay_4_momentary + + + + +Disabled +shift +arm_toggle +arm +disarm +mode_manual +mode_stabilize +mode_depth_hold +mode_poshold +mode_auto +mode_circle +mode_guided +mode_acro +mount_center +mount_tilt_up +mount_tilt_down +camera_trigger +camera_source_toggle +mount_pan_right +mount_pan_left +lights1_cycle +lights1_brighter +lights1_dimmer +lights2_cycle +lights2_brighter +lights2_dimmer +gain_toggle +gain_inc +gain_dec +trim_roll_inc +trim_roll_dec +trim_pitch_inc +trim_pitch_dec +input_hold_set +roll_pitch_toggle +relay_1_on +relay_1_off +relay_1_toggle +relay_2_on +relay_2_off +relay_2_toggle +relay_3_on +relay_3_off +relay_3_toggle +servo_1_inc +servo_1_dec +servo_1_min +servo_1_max +servo_1_center +servo_2_inc +servo_2_dec +servo_2_min +servo_2_max +servo_2_center +servo_3_inc +servo_3_dec +servo_3_min +servo_3_max +servo_3_center +servo_1_min_momentary +servo_1_max_momentary +servo_1_min_toggle +servo_1_max_toggle +servo_2_min_momentary +servo_2_max_momentary +servo_2_min_toggle +servo_2_max_toggle +servo_3_min_momentary +servo_3_max_momentary +servo_3_min_toggle +servo_3_max_toggle +custom_1 +custom_2 +custom_3 +custom_4 +custom_5 +custom_6 +relay_4_on +relay_4_off +relay_4_toggle +relay_1_momentary +relay_2_momentary +relay_3_momentary +relay_4_momentary + + + + + + +Disabled +shift +arm_toggle +arm +disarm +mode_manual +mode_stabilize +mode_depth_hold +mode_poshold +mode_auto +mode_circle +mode_guided +mode_acro +mount_center +mount_tilt_up +mount_tilt_down +camera_trigger +camera_source_toggle +mount_pan_right +mount_pan_left +lights1_cycle +lights1_brighter +lights1_dimmer +lights2_cycle +lights2_brighter +lights2_dimmer +gain_toggle +gain_inc +gain_dec +trim_roll_inc +trim_roll_dec +trim_pitch_inc +trim_pitch_dec +input_hold_set +roll_pitch_toggle +relay_1_on +relay_1_off +relay_1_toggle +relay_2_on +relay_2_off +relay_2_toggle +relay_3_on +relay_3_off +relay_3_toggle +servo_1_inc +servo_1_dec +servo_1_min +servo_1_max +servo_1_center +servo_2_inc +servo_2_dec +servo_2_min +servo_2_max +servo_2_center +servo_3_inc +servo_3_dec +servo_3_min +servo_3_max +servo_3_center +servo_1_min_momentary +servo_1_max_momentary +servo_1_min_toggle +servo_1_max_toggle +servo_2_min_momentary +servo_2_max_momentary +servo_2_min_toggle +servo_2_max_toggle +servo_3_min_momentary +servo_3_max_momentary +servo_3_min_toggle +servo_3_max_toggle +custom_1 +custom_2 +custom_3 +custom_4 +custom_5 +custom_6 +relay_4_on +relay_4_off +relay_4_toggle +relay_1_momentary +relay_2_momentary +relay_3_momentary +relay_4_momentary + + + + +Disabled +shift +arm_toggle +arm +disarm +mode_manual +mode_stabilize +mode_depth_hold +mode_poshold +mode_auto +mode_circle +mode_guided +mode_acro +mount_center +mount_tilt_up +mount_tilt_down +camera_trigger +camera_source_toggle +mount_pan_right +mount_pan_left +lights1_cycle +lights1_brighter +lights1_dimmer +lights2_cycle +lights2_brighter +lights2_dimmer +gain_toggle +gain_inc +gain_dec +trim_roll_inc +trim_roll_dec +trim_pitch_inc +trim_pitch_dec +input_hold_set +roll_pitch_toggle +relay_1_on +relay_1_off +relay_1_toggle +relay_2_on +relay_2_off +relay_2_toggle +relay_3_on +relay_3_off +relay_3_toggle +servo_1_inc +servo_1_dec +servo_1_min +servo_1_max +servo_1_center +servo_2_inc +servo_2_dec +servo_2_min +servo_2_max +servo_2_center +servo_3_inc +servo_3_dec +servo_3_min +servo_3_max +servo_3_center +servo_1_min_momentary +servo_1_max_momentary +servo_1_min_toggle +servo_1_max_toggle +servo_2_min_momentary +servo_2_max_momentary +servo_2_min_toggle +servo_2_max_toggle +servo_3_min_momentary +servo_3_max_momentary +servo_3_min_toggle +servo_3_max_toggle +custom_1 +custom_2 +custom_3 +custom_4 +custom_5 +custom_6 +relay_4_on +relay_4_off +relay_4_toggle +relay_1_momentary +relay_2_momentary +relay_3_momentary +relay_4_momentary + + + + + + +Disabled +shift +arm_toggle +arm +disarm +mode_manual +mode_stabilize +mode_depth_hold +mode_poshold +mode_auto +mode_circle +mode_guided +mode_acro +mount_center +mount_tilt_up +mount_tilt_down +camera_trigger +camera_source_toggle +mount_pan_right +mount_pan_left +lights1_cycle +lights1_brighter +lights1_dimmer +lights2_cycle +lights2_brighter +lights2_dimmer +gain_toggle +gain_inc +gain_dec +trim_roll_inc +trim_roll_dec +trim_pitch_inc +trim_pitch_dec +input_hold_set +roll_pitch_toggle +relay_1_on +relay_1_off +relay_1_toggle +relay_2_on +relay_2_off +relay_2_toggle +relay_3_on +relay_3_off +relay_3_toggle +servo_1_inc +servo_1_dec +servo_1_min +servo_1_max +servo_1_center +servo_2_inc +servo_2_dec +servo_2_min +servo_2_max +servo_2_center +servo_3_inc +servo_3_dec +servo_3_min +servo_3_max +servo_3_center +servo_1_min_momentary +servo_1_max_momentary +servo_1_min_toggle +servo_1_max_toggle +servo_2_min_momentary +servo_2_max_momentary +servo_2_min_toggle +servo_2_max_toggle +servo_3_min_momentary +servo_3_max_momentary +servo_3_min_toggle +servo_3_max_toggle +custom_1 +custom_2 +custom_3 +custom_4 +custom_5 +custom_6 +relay_4_on +relay_4_off +relay_4_toggle +relay_1_momentary +relay_2_momentary +relay_3_momentary +relay_4_momentary + + + + +Disabled +shift +arm_toggle +arm +disarm +mode_manual +mode_stabilize +mode_depth_hold +mode_poshold +mode_auto +mode_circle +mode_guided +mode_acro +mount_center +mount_tilt_up +mount_tilt_down +camera_trigger +camera_source_toggle +mount_pan_right +mount_pan_left +lights1_cycle +lights1_brighter +lights1_dimmer +lights2_cycle +lights2_brighter +lights2_dimmer +gain_toggle +gain_inc +gain_dec +trim_roll_inc +trim_roll_dec +trim_pitch_inc +trim_pitch_dec +input_hold_set +roll_pitch_toggle +relay_1_on +relay_1_off +relay_1_toggle +relay_2_on +relay_2_off +relay_2_toggle +relay_3_on +relay_3_off +relay_3_toggle +servo_1_inc +servo_1_dec +servo_1_min +servo_1_max +servo_1_center +servo_2_inc +servo_2_dec +servo_2_min +servo_2_max +servo_2_center +servo_3_inc +servo_3_dec +servo_3_min +servo_3_max +servo_3_center +servo_1_min_momentary +servo_1_max_momentary +servo_1_min_toggle +servo_1_max_toggle +servo_2_min_momentary +servo_2_max_momentary +servo_2_min_toggle +servo_2_max_toggle +servo_3_min_momentary +servo_3_max_momentary +servo_3_min_toggle +servo_3_max_toggle +custom_1 +custom_2 +custom_3 +custom_4 +custom_5 +custom_6 +relay_4_on +relay_4_off +relay_4_toggle +relay_1_momentary +relay_2_momentary +relay_3_momentary +relay_4_momentary + + + + + + +Disabled +shift +arm_toggle +arm +disarm +mode_manual +mode_stabilize +mode_depth_hold +mode_poshold +mode_auto +mode_circle +mode_guided +mode_acro +mount_center +mount_tilt_up +mount_tilt_down +camera_trigger +camera_source_toggle +mount_pan_right +mount_pan_left +lights1_cycle +lights1_brighter +lights1_dimmer +lights2_cycle +lights2_brighter +lights2_dimmer +gain_toggle +gain_inc +gain_dec +trim_roll_inc +trim_roll_dec +trim_pitch_inc +trim_pitch_dec +input_hold_set +roll_pitch_toggle +relay_1_on +relay_1_off +relay_1_toggle +relay_2_on +relay_2_off +relay_2_toggle +relay_3_on +relay_3_off +relay_3_toggle +servo_1_inc +servo_1_dec +servo_1_min +servo_1_max +servo_1_center +servo_2_inc +servo_2_dec +servo_2_min +servo_2_max +servo_2_center +servo_3_inc +servo_3_dec +servo_3_min +servo_3_max +servo_3_center +servo_1_min_momentary +servo_1_max_momentary +servo_1_min_toggle +servo_1_max_toggle +servo_2_min_momentary +servo_2_max_momentary +servo_2_min_toggle +servo_2_max_toggle +servo_3_min_momentary +servo_3_max_momentary +servo_3_min_toggle +servo_3_max_toggle +custom_1 +custom_2 +custom_3 +custom_4 +custom_5 +custom_6 +relay_4_on +relay_4_off +relay_4_toggle +relay_1_momentary +relay_2_momentary +relay_3_momentary +relay_4_momentary + + + + +Disabled +shift +arm_toggle +arm +disarm +mode_manual +mode_stabilize +mode_depth_hold +mode_poshold +mode_auto +mode_circle +mode_guided +mode_acro +mount_center +mount_tilt_up +mount_tilt_down +camera_trigger +camera_source_toggle +mount_pan_right +mount_pan_left +lights1_cycle +lights1_brighter +lights1_dimmer +lights2_cycle +lights2_brighter +lights2_dimmer +gain_toggle +gain_inc +gain_dec +trim_roll_inc +trim_roll_dec +trim_pitch_inc +trim_pitch_dec +input_hold_set +roll_pitch_toggle +relay_1_on +relay_1_off +relay_1_toggle +relay_2_on +relay_2_off +relay_2_toggle +relay_3_on +relay_3_off +relay_3_toggle +servo_1_inc +servo_1_dec +servo_1_min +servo_1_max +servo_1_center +servo_2_inc +servo_2_dec +servo_2_min +servo_2_max +servo_2_center +servo_3_inc +servo_3_dec +servo_3_min +servo_3_max +servo_3_center +servo_1_min_momentary +servo_1_max_momentary +servo_1_min_toggle +servo_1_max_toggle +servo_2_min_momentary +servo_2_max_momentary +servo_2_min_toggle +servo_2_max_toggle +servo_3_min_momentary +servo_3_max_momentary +servo_3_min_toggle +servo_3_max_toggle +custom_1 +custom_2 +custom_3 +custom_4 +custom_5 +custom_6 +relay_4_on +relay_4_off +relay_4_toggle +relay_1_momentary +relay_2_momentary +relay_3_momentary +relay_4_momentary + + + + + + +Disabled +shift +arm_toggle +arm +disarm +mode_manual +mode_stabilize +mode_depth_hold +mode_poshold +mode_auto +mode_circle +mode_guided +mode_acro +mount_center +mount_tilt_up +mount_tilt_down +camera_trigger +camera_source_toggle +mount_pan_right +mount_pan_left +lights1_cycle +lights1_brighter +lights1_dimmer +lights2_cycle +lights2_brighter +lights2_dimmer +gain_toggle +gain_inc +gain_dec +trim_roll_inc +trim_roll_dec +trim_pitch_inc +trim_pitch_dec +input_hold_set +roll_pitch_toggle +relay_1_on +relay_1_off +relay_1_toggle +relay_2_on +relay_2_off +relay_2_toggle +relay_3_on +relay_3_off +relay_3_toggle +servo_1_inc +servo_1_dec +servo_1_min +servo_1_max +servo_1_center +servo_2_inc +servo_2_dec +servo_2_min +servo_2_max +servo_2_center +servo_3_inc +servo_3_dec +servo_3_min +servo_3_max +servo_3_center +servo_1_min_momentary +servo_1_max_momentary +servo_1_min_toggle +servo_1_max_toggle +servo_2_min_momentary +servo_2_max_momentary +servo_2_min_toggle +servo_2_max_toggle +servo_3_min_momentary +servo_3_max_momentary +servo_3_min_toggle +servo_3_max_toggle +custom_1 +custom_2 +custom_3 +custom_4 +custom_5 +custom_6 +relay_4_on +relay_4_off +relay_4_toggle +relay_1_momentary +relay_2_momentary +relay_3_momentary +relay_4_momentary + + + + +Disabled +shift +arm_toggle +arm +disarm +mode_manual +mode_stabilize +mode_depth_hold +mode_poshold +mode_auto +mode_circle +mode_guided +mode_acro +mount_center +mount_tilt_up +mount_tilt_down +camera_trigger +camera_source_toggle +mount_pan_right +mount_pan_left +lights1_cycle +lights1_brighter +lights1_dimmer +lights2_cycle +lights2_brighter +lights2_dimmer +gain_toggle +gain_inc +gain_dec +trim_roll_inc +trim_roll_dec +trim_pitch_inc +trim_pitch_dec +input_hold_set +roll_pitch_toggle +relay_1_on +relay_1_off +relay_1_toggle +relay_2_on +relay_2_off +relay_2_toggle +relay_3_on +relay_3_off +relay_3_toggle +servo_1_inc +servo_1_dec +servo_1_min +servo_1_max +servo_1_center +servo_2_inc +servo_2_dec +servo_2_min +servo_2_max +servo_2_center +servo_3_inc +servo_3_dec +servo_3_min +servo_3_max +servo_3_center +servo_1_min_momentary +servo_1_max_momentary +servo_1_min_toggle +servo_1_max_toggle +servo_2_min_momentary +servo_2_max_momentary +servo_2_min_toggle +servo_2_max_toggle +servo_3_min_momentary +servo_3_max_momentary +servo_3_min_toggle +servo_3_max_toggle +custom_1 +custom_2 +custom_3 +custom_4 +custom_5 +custom_6 +relay_4_on +relay_4_off +relay_4_toggle +relay_1_momentary +relay_2_momentary +relay_3_momentary +relay_4_momentary + + + + + + +Disabled +shift +arm_toggle +arm +disarm +mode_manual +mode_stabilize +mode_depth_hold +mode_poshold +mode_auto +mode_circle +mode_guided +mode_acro +mount_center +mount_tilt_up +mount_tilt_down +camera_trigger +camera_source_toggle +mount_pan_right +mount_pan_left +lights1_cycle +lights1_brighter +lights1_dimmer +lights2_cycle +lights2_brighter +lights2_dimmer +gain_toggle +gain_inc +gain_dec +trim_roll_inc +trim_roll_dec +trim_pitch_inc +trim_pitch_dec +input_hold_set +roll_pitch_toggle +relay_1_on +relay_1_off +relay_1_toggle +relay_2_on +relay_2_off +relay_2_toggle +relay_3_on +relay_3_off +relay_3_toggle +servo_1_inc +servo_1_dec +servo_1_min +servo_1_max +servo_1_center +servo_2_inc +servo_2_dec +servo_2_min +servo_2_max +servo_2_center +servo_3_inc +servo_3_dec +servo_3_min +servo_3_max +servo_3_center +servo_1_min_momentary +servo_1_max_momentary +servo_1_min_toggle +servo_1_max_toggle +servo_2_min_momentary +servo_2_max_momentary +servo_2_min_toggle +servo_2_max_toggle +servo_3_min_momentary +servo_3_max_momentary +servo_3_min_toggle +servo_3_max_toggle +custom_1 +custom_2 +custom_3 +custom_4 +custom_5 +custom_6 +relay_4_on +relay_4_off +relay_4_toggle +relay_1_momentary +relay_2_momentary +relay_3_momentary +relay_4_momentary + + + + +Disabled +shift +arm_toggle +arm +disarm +mode_manual +mode_stabilize +mode_depth_hold +mode_poshold +mode_auto +mode_circle +mode_guided +mode_acro +mount_center +mount_tilt_up +mount_tilt_down +camera_trigger +camera_source_toggle +mount_pan_right +mount_pan_left +lights1_cycle +lights1_brighter +lights1_dimmer +lights2_cycle +lights2_brighter +lights2_dimmer +gain_toggle +gain_inc +gain_dec +trim_roll_inc +trim_roll_dec +trim_pitch_inc +trim_pitch_dec +input_hold_set +roll_pitch_toggle +relay_1_on +relay_1_off +relay_1_toggle +relay_2_on +relay_2_off +relay_2_toggle +relay_3_on +relay_3_off +relay_3_toggle +servo_1_inc +servo_1_dec +servo_1_min +servo_1_max +servo_1_center +servo_2_inc +servo_2_dec +servo_2_min +servo_2_max +servo_2_center +servo_3_inc +servo_3_dec +servo_3_min +servo_3_max +servo_3_center +servo_1_min_momentary +servo_1_max_momentary +servo_1_min_toggle +servo_1_max_toggle +servo_2_min_momentary +servo_2_max_momentary +servo_2_min_toggle +servo_2_max_toggle +servo_3_min_momentary +servo_3_max_momentary +servo_3_min_toggle +servo_3_max_toggle +custom_1 +custom_2 +custom_3 +custom_4 +custom_5 +custom_6 +relay_4_on +relay_4_off +relay_4_toggle +relay_1_momentary +relay_2_momentary +relay_3_momentary +relay_4_momentary + + + + + + +Disabled +shift +arm_toggle +arm +disarm +mode_manual +mode_stabilize +mode_depth_hold +mode_poshold +mode_auto +mode_circle +mode_guided +mode_acro +mount_center +mount_tilt_up +mount_tilt_down +camera_trigger +camera_source_toggle +mount_pan_right +mount_pan_left +lights1_cycle +lights1_brighter +lights1_dimmer +lights2_cycle +lights2_brighter +lights2_dimmer +gain_toggle +gain_inc +gain_dec +trim_roll_inc +trim_roll_dec +trim_pitch_inc +trim_pitch_dec +input_hold_set +roll_pitch_toggle +relay_1_on +relay_1_off +relay_1_toggle +relay_2_on +relay_2_off +relay_2_toggle +relay_3_on +relay_3_off +relay_3_toggle +servo_1_inc +servo_1_dec +servo_1_min +servo_1_max +servo_1_center +servo_2_inc +servo_2_dec +servo_2_min +servo_2_max +servo_2_center +servo_3_inc +servo_3_dec +servo_3_min +servo_3_max +servo_3_center +servo_1_min_momentary +servo_1_max_momentary +servo_1_min_toggle +servo_1_max_toggle +servo_2_min_momentary +servo_2_max_momentary +servo_2_min_toggle +servo_2_max_toggle +servo_3_min_momentary +servo_3_max_momentary +servo_3_min_toggle +servo_3_max_toggle +custom_1 +custom_2 +custom_3 +custom_4 +custom_5 +custom_6 +relay_4_on +relay_4_off +relay_4_toggle +relay_1_momentary +relay_2_momentary +relay_3_momentary +relay_4_momentary + + + + +Disabled +shift +arm_toggle +arm +disarm +mode_manual +mode_stabilize +mode_depth_hold +mode_poshold +mode_auto +mode_circle +mode_guided +mode_acro +mount_center +mount_tilt_up +mount_tilt_down +camera_trigger +camera_source_toggle +mount_pan_right +mount_pan_left +lights1_cycle +lights1_brighter +lights1_dimmer +lights2_cycle +lights2_brighter +lights2_dimmer +gain_toggle +gain_inc +gain_dec +trim_roll_inc +trim_roll_dec +trim_pitch_inc +trim_pitch_dec +input_hold_set +roll_pitch_toggle +relay_1_on +relay_1_off +relay_1_toggle +relay_2_on +relay_2_off +relay_2_toggle +relay_3_on +relay_3_off +relay_3_toggle +servo_1_inc +servo_1_dec +servo_1_min +servo_1_max +servo_1_center +servo_2_inc +servo_2_dec +servo_2_min +servo_2_max +servo_2_center +servo_3_inc +servo_3_dec +servo_3_min +servo_3_max +servo_3_center +servo_1_min_momentary +servo_1_max_momentary +servo_1_min_toggle +servo_1_max_toggle +servo_2_min_momentary +servo_2_max_momentary +servo_2_min_toggle +servo_2_max_toggle +servo_3_min_momentary +servo_3_max_momentary +servo_3_min_toggle +servo_3_max_toggle +custom_1 +custom_2 +custom_3 +custom_4 +custom_5 +custom_6 +relay_4_on +relay_4_off +relay_4_toggle +relay_1_momentary +relay_2_momentary +relay_3_momentary +relay_4_momentary + + + + + + +Disabled +shift +arm_toggle +arm +disarm +mode_manual +mode_stabilize +mode_depth_hold +mode_poshold +mode_auto +mode_circle +mode_guided +mode_acro +mount_center +mount_tilt_up +mount_tilt_down +camera_trigger +camera_source_toggle +mount_pan_right +mount_pan_left +lights1_cycle +lights1_brighter +lights1_dimmer +lights2_cycle +lights2_brighter +lights2_dimmer +gain_toggle +gain_inc +gain_dec +trim_roll_inc +trim_roll_dec +trim_pitch_inc +trim_pitch_dec +input_hold_set +roll_pitch_toggle +relay_1_on +relay_1_off +relay_1_toggle +relay_2_on +relay_2_off +relay_2_toggle +relay_3_on +relay_3_off +relay_3_toggle +servo_1_inc +servo_1_dec +servo_1_min +servo_1_max +servo_1_center +servo_2_inc +servo_2_dec +servo_2_min +servo_2_max +servo_2_center +servo_3_inc +servo_3_dec +servo_3_min +servo_3_max +servo_3_center +servo_1_min_momentary +servo_1_max_momentary +servo_1_min_toggle +servo_1_max_toggle +servo_2_min_momentary +servo_2_max_momentary +servo_2_min_toggle +servo_2_max_toggle +servo_3_min_momentary +servo_3_max_momentary +servo_3_min_toggle +servo_3_max_toggle +custom_1 +custom_2 +custom_3 +custom_4 +custom_5 +custom_6 +relay_4_on +relay_4_off +relay_4_toggle +relay_1_momentary +relay_2_momentary +relay_3_momentary +relay_4_momentary + + + + +Disabled +shift +arm_toggle +arm +disarm +mode_manual +mode_stabilize +mode_depth_hold +mode_poshold +mode_auto +mode_circle +mode_guided +mode_acro +mount_center +mount_tilt_up +mount_tilt_down +camera_trigger +camera_source_toggle +mount_pan_right +mount_pan_left +lights1_cycle +lights1_brighter +lights1_dimmer +lights2_cycle +lights2_brighter +lights2_dimmer +gain_toggle +gain_inc +gain_dec +trim_roll_inc +trim_roll_dec +trim_pitch_inc +trim_pitch_dec +input_hold_set +roll_pitch_toggle +relay_1_on +relay_1_off +relay_1_toggle +relay_2_on +relay_2_off +relay_2_toggle +relay_3_on +relay_3_off +relay_3_toggle +servo_1_inc +servo_1_dec +servo_1_min +servo_1_max +servo_1_center +servo_2_inc +servo_2_dec +servo_2_min +servo_2_max +servo_2_center +servo_3_inc +servo_3_dec +servo_3_min +servo_3_max +servo_3_center +servo_1_min_momentary +servo_1_max_momentary +servo_1_min_toggle +servo_1_max_toggle +servo_2_min_momentary +servo_2_max_momentary +servo_2_min_toggle +servo_2_max_toggle +servo_3_min_momentary +servo_3_max_momentary +servo_3_min_toggle +servo_3_max_toggle +custom_1 +custom_2 +custom_3 +custom_4 +custom_5 +custom_6 +relay_4_on +relay_4_off +relay_4_toggle +relay_1_momentary +relay_2_momentary +relay_3_momentary +relay_4_momentary + + + + + + +Disabled +shift +arm_toggle +arm +disarm +mode_manual +mode_stabilize +mode_depth_hold +mode_poshold +mode_auto +mode_circle +mode_guided +mode_acro +mount_center +mount_tilt_up +mount_tilt_down +camera_trigger +camera_source_toggle +mount_pan_right +mount_pan_left +lights1_cycle +lights1_brighter +lights1_dimmer +lights2_cycle +lights2_brighter +lights2_dimmer +gain_toggle +gain_inc +gain_dec +trim_roll_inc +trim_roll_dec +trim_pitch_inc +trim_pitch_dec +input_hold_set +roll_pitch_toggle +relay_1_on +relay_1_off +relay_1_toggle +relay_2_on +relay_2_off +relay_2_toggle +relay_3_on +relay_3_off +relay_3_toggle +servo_1_inc +servo_1_dec +servo_1_min +servo_1_max +servo_1_center +servo_2_inc +servo_2_dec +servo_2_min +servo_2_max +servo_2_center +servo_3_inc +servo_3_dec +servo_3_min +servo_3_max +servo_3_center +servo_1_min_momentary +servo_1_max_momentary +servo_1_min_toggle +servo_1_max_toggle +servo_2_min_momentary +servo_2_max_momentary +servo_2_min_toggle +servo_2_max_toggle +servo_3_min_momentary +servo_3_max_momentary +servo_3_min_toggle +servo_3_max_toggle +custom_1 +custom_2 +custom_3 +custom_4 +custom_5 +custom_6 +relay_4_on +relay_4_off +relay_4_toggle +relay_1_momentary +relay_2_momentary +relay_3_momentary +relay_4_momentary + + + + +Disabled +shift +arm_toggle +arm +disarm +mode_manual +mode_stabilize +mode_depth_hold +mode_poshold +mode_auto +mode_circle +mode_guided +mode_acro +mount_center +mount_tilt_up +mount_tilt_down +camera_trigger +camera_source_toggle +mount_pan_right +mount_pan_left +lights1_cycle +lights1_brighter +lights1_dimmer +lights2_cycle +lights2_brighter +lights2_dimmer +gain_toggle +gain_inc +gain_dec +trim_roll_inc +trim_roll_dec +trim_pitch_inc +trim_pitch_dec +input_hold_set +roll_pitch_toggle +relay_1_on +relay_1_off +relay_1_toggle +relay_2_on +relay_2_off +relay_2_toggle +relay_3_on +relay_3_off +relay_3_toggle +servo_1_inc +servo_1_dec +servo_1_min +servo_1_max +servo_1_center +servo_2_inc +servo_2_dec +servo_2_min +servo_2_max +servo_2_center +servo_3_inc +servo_3_dec +servo_3_min +servo_3_max +servo_3_center +servo_1_min_momentary +servo_1_max_momentary +servo_1_min_toggle +servo_1_max_toggle +servo_2_min_momentary +servo_2_max_momentary +servo_2_min_toggle +servo_2_max_toggle +servo_3_min_momentary +servo_3_max_momentary +servo_3_min_toggle +servo_3_max_toggle +custom_1 +custom_2 +custom_3 +custom_4 +custom_5 +custom_6 +relay_4_on +relay_4_off +relay_4_toggle +relay_1_momentary +relay_2_momentary +relay_3_momentary +relay_4_momentary + + + + + + +Disabled +shift +arm_toggle +arm +disarm +mode_manual +mode_stabilize +mode_depth_hold +mode_poshold +mode_auto +mode_circle +mode_guided +mode_acro +mount_center +mount_tilt_up +mount_tilt_down +camera_trigger +camera_source_toggle +mount_pan_right +mount_pan_left +lights1_cycle +lights1_brighter +lights1_dimmer +lights2_cycle +lights2_brighter +lights2_dimmer +gain_toggle +gain_inc +gain_dec +trim_roll_inc +trim_roll_dec +trim_pitch_inc +trim_pitch_dec +input_hold_set +roll_pitch_toggle +relay_1_on +relay_1_off +relay_1_toggle +relay_2_on +relay_2_off +relay_2_toggle +relay_3_on +relay_3_off +relay_3_toggle +servo_1_inc +servo_1_dec +servo_1_min +servo_1_max +servo_1_center +servo_2_inc +servo_2_dec +servo_2_min +servo_2_max +servo_2_center +servo_3_inc +servo_3_dec +servo_3_min +servo_3_max +servo_3_center +servo_1_min_momentary +servo_1_max_momentary +servo_1_min_toggle +servo_1_max_toggle +servo_2_min_momentary +servo_2_max_momentary +servo_2_min_toggle +servo_2_max_toggle +servo_3_min_momentary +servo_3_max_momentary +servo_3_min_toggle +servo_3_max_toggle +custom_1 +custom_2 +custom_3 +custom_4 +custom_5 +custom_6 +relay_4_on +relay_4_off +relay_4_toggle +relay_1_momentary +relay_2_momentary +relay_3_momentary +relay_4_momentary + + + + +Disabled +shift +arm_toggle +arm +disarm +mode_manual +mode_stabilize +mode_depth_hold +mode_poshold +mode_auto +mode_circle +mode_guided +mode_acro +mount_center +mount_tilt_up +mount_tilt_down +camera_trigger +camera_source_toggle +mount_pan_right +mount_pan_left +lights1_cycle +lights1_brighter +lights1_dimmer +lights2_cycle +lights2_brighter +lights2_dimmer +gain_toggle +gain_inc +gain_dec +trim_roll_inc +trim_roll_dec +trim_pitch_inc +trim_pitch_dec +input_hold_set +roll_pitch_toggle +relay_1_on +relay_1_off +relay_1_toggle +relay_2_on +relay_2_off +relay_2_toggle +relay_3_on +relay_3_off +relay_3_toggle +servo_1_inc +servo_1_dec +servo_1_min +servo_1_max +servo_1_center +servo_2_inc +servo_2_dec +servo_2_min +servo_2_max +servo_2_center +servo_3_inc +servo_3_dec +servo_3_min +servo_3_max +servo_3_center +servo_1_min_momentary +servo_1_max_momentary +servo_1_min_toggle +servo_1_max_toggle +servo_2_min_momentary +servo_2_max_momentary +servo_2_min_toggle +servo_2_max_toggle +servo_3_min_momentary +servo_3_max_momentary +servo_3_min_toggle +servo_3_max_toggle +custom_1 +custom_2 +custom_3 +custom_4 +custom_5 +custom_6 +relay_4_on +relay_4_off +relay_4_toggle +relay_1_momentary +relay_2_momentary +relay_3_momentary +relay_4_momentary + + + + + + +Disabled +shift +arm_toggle +arm +disarm +mode_manual +mode_stabilize +mode_depth_hold +mode_poshold +mode_auto +mode_circle +mode_guided +mode_acro +mount_center +mount_tilt_up +mount_tilt_down +camera_trigger +camera_source_toggle +mount_pan_right +mount_pan_left +lights1_cycle +lights1_brighter +lights1_dimmer +lights2_cycle +lights2_brighter +lights2_dimmer +gain_toggle +gain_inc +gain_dec +trim_roll_inc +trim_roll_dec +trim_pitch_inc +trim_pitch_dec +input_hold_set +roll_pitch_toggle +relay_1_on +relay_1_off +relay_1_toggle +relay_2_on +relay_2_off +relay_2_toggle +relay_3_on +relay_3_off +relay_3_toggle +servo_1_inc +servo_1_dec +servo_1_min +servo_1_max +servo_1_center +servo_2_inc +servo_2_dec +servo_2_min +servo_2_max +servo_2_center +servo_3_inc +servo_3_dec +servo_3_min +servo_3_max +servo_3_center +servo_1_min_momentary +servo_1_max_momentary +servo_1_min_toggle +servo_1_max_toggle +servo_2_min_momentary +servo_2_max_momentary +servo_2_min_toggle +servo_2_max_toggle +servo_3_min_momentary +servo_3_max_momentary +servo_3_min_toggle +servo_3_max_toggle +custom_1 +custom_2 +custom_3 +custom_4 +custom_5 +custom_6 +relay_4_on +relay_4_off +relay_4_toggle +relay_1_momentary +relay_2_momentary +relay_3_momentary +relay_4_momentary + + + + +Disabled +shift +arm_toggle +arm +disarm +mode_manual +mode_stabilize +mode_depth_hold +mode_poshold +mode_auto +mode_circle +mode_guided +mode_acro +mount_center +mount_tilt_up +mount_tilt_down +camera_trigger +camera_source_toggle +mount_pan_right +mount_pan_left +lights1_cycle +lights1_brighter +lights1_dimmer +lights2_cycle +lights2_brighter +lights2_dimmer +gain_toggle +gain_inc +gain_dec +trim_roll_inc +trim_roll_dec +trim_pitch_inc +trim_pitch_dec +input_hold_set +roll_pitch_toggle +relay_1_on +relay_1_off +relay_1_toggle +relay_2_on +relay_2_off +relay_2_toggle +relay_3_on +relay_3_off +relay_3_toggle +servo_1_inc +servo_1_dec +servo_1_min +servo_1_max +servo_1_center +servo_2_inc +servo_2_dec +servo_2_min +servo_2_max +servo_2_center +servo_3_inc +servo_3_dec +servo_3_min +servo_3_max +servo_3_center +servo_1_min_momentary +servo_1_max_momentary +servo_1_min_toggle +servo_1_max_toggle +servo_2_min_momentary +servo_2_max_momentary +servo_2_min_toggle +servo_2_max_toggle +servo_3_min_momentary +servo_3_max_momentary +servo_3_min_toggle +servo_3_max_toggle +custom_1 +custom_2 +custom_3 +custom_4 +custom_5 +custom_6 +relay_4_on +relay_4_off +relay_4_toggle +relay_1_momentary +relay_2_momentary +relay_3_momentary +relay_4_momentary + + + + + + +Disabled +shift +arm_toggle +arm +disarm +mode_manual +mode_stabilize +mode_depth_hold +mode_poshold +mode_auto +mode_circle +mode_guided +mode_acro +mount_center +mount_tilt_up +mount_tilt_down +camera_trigger +camera_source_toggle +mount_pan_right +mount_pan_left +lights1_cycle +lights1_brighter +lights1_dimmer +lights2_cycle +lights2_brighter +lights2_dimmer +gain_toggle +gain_inc +gain_dec +trim_roll_inc +trim_roll_dec +trim_pitch_inc +trim_pitch_dec +input_hold_set +roll_pitch_toggle +relay_1_on +relay_1_off +relay_1_toggle +relay_2_on +relay_2_off +relay_2_toggle +relay_3_on +relay_3_off +relay_3_toggle +servo_1_inc +servo_1_dec +servo_1_min +servo_1_max +servo_1_center +servo_2_inc +servo_2_dec +servo_2_min +servo_2_max +servo_2_center +servo_3_inc +servo_3_dec +servo_3_min +servo_3_max +servo_3_center +servo_1_min_momentary +servo_1_max_momentary +servo_1_min_toggle +servo_1_max_toggle +servo_2_min_momentary +servo_2_max_momentary +servo_2_min_toggle +servo_2_max_toggle +servo_3_min_momentary +servo_3_max_momentary +servo_3_min_toggle +servo_3_max_toggle +custom_1 +custom_2 +custom_3 +custom_4 +custom_5 +custom_6 +relay_4_on +relay_4_off +relay_4_toggle +relay_1_momentary +relay_2_momentary +relay_3_momentary +relay_4_momentary + + + + +Disabled +shift +arm_toggle +arm +disarm +mode_manual +mode_stabilize +mode_depth_hold +mode_poshold +mode_auto +mode_circle +mode_guided +mode_acro +mount_center +mount_tilt_up +mount_tilt_down +camera_trigger +camera_source_toggle +mount_pan_right +mount_pan_left +lights1_cycle +lights1_brighter +lights1_dimmer +lights2_cycle +lights2_brighter +lights2_dimmer +gain_toggle +gain_inc +gain_dec +trim_roll_inc +trim_roll_dec +trim_pitch_inc +trim_pitch_dec +input_hold_set +roll_pitch_toggle +relay_1_on +relay_1_off +relay_1_toggle +relay_2_on +relay_2_off +relay_2_toggle +relay_3_on +relay_3_off +relay_3_toggle +servo_1_inc +servo_1_dec +servo_1_min +servo_1_max +servo_1_center +servo_2_inc +servo_2_dec +servo_2_min +servo_2_max +servo_2_center +servo_3_inc +servo_3_dec +servo_3_min +servo_3_max +servo_3_center +servo_1_min_momentary +servo_1_max_momentary +servo_1_min_toggle +servo_1_max_toggle +servo_2_min_momentary +servo_2_max_momentary +servo_2_min_toggle +servo_2_max_toggle +servo_3_min_momentary +servo_3_max_momentary +servo_3_min_toggle +servo_3_max_toggle +custom_1 +custom_2 +custom_3 +custom_4 +custom_5 +custom_6 +relay_4_on +relay_4_off +relay_4_toggle +relay_1_momentary +relay_2_momentary +relay_3_momentary +relay_4_momentary + + + + + + +Servo +Relay + + + +0 50 +ds +deciseconds + + +1000 2000 +PWM +PWM in microseconds + + +1000 2000 +PWM +PWM in microseconds + + +0 1000 +m +meters + + + +Low +High + + + +0 10000 +ms +milliseconds + + +0 180 +deg +degrees + + + +Disabled +AUX1 +AUX2 +AUX3 +AUX4 +AUX5 +AUX6 + +True + + + +TriggerLow +TriggerHigh + + + + +Always +Only when in AUTO + + + + +Default +BMMCC + + + + + + +Disabled +UAVCAN +KDECAN +ToshibaCAN + +True + + + + + + + + +1 250 + + +0: Servo 1, 1: Servo 2, 2: Servo 3, 3: Servo 4, 4: Servo 5, 5: Servo 6, 6: Servo 7, 7: Servo 8, 8: Servo 9, 9: Servo 10, 10: Servo 11, 11: Servo 12, 12: Servo 13, 13: Servo 14, 14: Servo 15 + + +0: ESC 1, 1: ESC 2, 2: ESC 3, 3: ESC 4, 4: ESC 5, 5: ESC 6, 6: ESC 7, 7: ESC 8, 8: ESC 9, 9: ESC 10, 10: ESC 11, 11: ESC 12, 12: ESC 13, 13: ESC 14, 14: ESC 15, 15: ESC 16 + + +1 200 +Hz +hertz + + + + + +Disabled +UAVCAN +KDECAN +ToshibaCAN + +True + + + + + + + + +1 250 + + +0: Servo 1, 1: Servo 2, 2: Servo 3, 3: Servo 4, 4: Servo 5, 5: Servo 6, 6: Servo 7, 7: Servo 8, 8: Servo 9, 9: Servo 10, 10: Servo 11, 11: Servo 12, 12: Servo 13, 13: Servo 14, 14: Servo 15 + + +0: ESC 1, 1: ESC 2, 2: ESC 3, 3: ESC 4, 4: ESC 5, 5: ESC 6, 6: ESC 7, 7: ESC 8, 8: ESC 9, 9: ESC 10, 10: ESC 11, 11: ESC 12, 12: ESC 13, 13: ESC 14, 14: ESC 15, 15: ESC 16 + + +1 200 +Hz +hertz + + + + + +Disabled +UAVCAN +KDECAN +ToshibaCAN + +True + + + + + + + + +1 250 + + +0: Servo 1, 1: Servo 2, 2: Servo 3, 3: Servo 4, 4: Servo 5, 5: Servo 6, 6: Servo 7, 7: Servo 8, 8: Servo 9, 9: Servo 10, 10: Servo 11, 11: Servo 12, 12: Servo 13, 13: Servo 14, 14: Servo 15 + + +0: ESC 1, 1: ESC 2, 2: ESC 3, 3: ESC 4, 4: ESC 5, 5: ESC 6, 6: ESC 7, 7: ESC 8, 8: ESC 9, 9: ESC 10, 10: ESC 11, 11: ESC 12, 12: ESC 13, 13: ESC 14, 14: ESC 15, 15: ESC 16 + + +1 200 +Hz +hertz + + + + + +Disabled +First driver +Second driver + +True + + +10000 1000000 + + + +Disabled +Major messages +All messages + + + + + + +Disabled +First driver +Second driver + +True + + +10000 1000000 + + + +Disabled +Major messages +All messages + + + + + + +Disabled +First driver +Second driver + +True + + +10000 1000000 + + + +Disabled +Major messages +All messages + + + + + + +Disabled +First driver +Second driver + +True + + + +Disabled +Serial0 +Serial1 +Serial2 +Serial3 +Serial4 +Serial5 +Serial6 + + + +0 32767 + + + + +0 10000 +100 +cm +centimeters + + +-90 90 +1 +deg/s +degrees per second + + + + +-400 400 +1 +mGauss +milligauss + + +-400 400 +1 +mGauss +milligauss + + +-400 400 +1 +mGauss +milligauss + + +-3.142 3.142 +0.01 +rad +radians + + + +Disabled +Internal-Learning +EKF-Learning +InFlight-Learning + + + + +Disabled +Enabled + + + + +Disabled +Enabled + + + + +Disabled +Use Throttle +Use Current + + + +-1000 1000 +1 +mGauss/A +milligauss per ampere + + +-1000 1000 +1 +mGauss/A +milligauss per ampere + + +-1000 1000 +1 +mGauss/A +milligauss per ampere + + + +None +Yaw45 +Yaw90 +Yaw135 +Yaw180 +Yaw225 +Yaw270 +Yaw315 +Roll180 +Roll180Yaw45 +Roll180Yaw90 +Roll180Yaw135 +Pitch180 +Roll180Yaw225 +Roll180Yaw270 +Roll180Yaw315 +Roll90 +Roll90Yaw45 +Roll90Yaw90 +Roll90Yaw135 +Roll270 +Roll270Yaw45 +Roll270Yaw90 +Roll270Yaw135 +Pitch90 +Pitch270 +Pitch180Yaw90 +Pitch180Yaw270 +Roll90Pitch90 +Roll180Pitch90 +Roll270Pitch90 +Roll90Pitch180 +Roll270Pitch180 +Roll90Pitch270 +Roll180Pitch270 +Roll270Pitch270 +Roll90Pitch180Yaw90 +Roll90Yaw270 +Yaw293Pitch68Roll180 +Pitch315 +Roll90Pitch315 + + + + +Internal +External +ForcedExternal + + + +-400 400 +1 +mGauss +milligauss + + +-400 400 +1 +mGauss +milligauss + + +-400 400 +1 +mGauss +milligauss + + +-1000 1000 +1 +mGauss/A +milligauss per ampere + + +-1000 1000 +1 +mGauss/A +milligauss per ampere + + +-1000 1000 +1 +mGauss/A +milligauss per ampere + + + +FirstCompass +SecondCompass +ThirdCompass + + + +-400 400 +1 +mGauss +milligauss + + +-400 400 +1 +mGauss +milligauss + + +-400 400 +1 +mGauss +milligauss + + +-1000 1000 +1 +mGauss/A +milligauss per ampere + + +-1000 1000 +1 +mGauss/A +milligauss per ampere + + +-1000 1000 +1 +mGauss/A +milligauss per ampere + + +True + + +True + + +True + + + +Disabled +Enabled + + + + +None +Yaw45 +Yaw90 +Yaw135 +Yaw180 +Yaw225 +Yaw270 +Yaw315 +Roll180 +Roll180Yaw45 +Roll180Yaw90 +Roll180Yaw135 +Pitch180 +Roll180Yaw225 +Roll180Yaw270 +Roll180Yaw315 +Roll90 +Roll90Yaw45 +Roll90Yaw90 +Roll90Yaw135 +Roll270 +Roll270Yaw45 +Roll270Yaw90 +Roll270Yaw135 +Pitch90 +Pitch270 +Pitch180Yaw90 +Pitch180Yaw270 +Roll90Pitch90 +Roll180Pitch90 +Roll270Pitch90 +Roll90Pitch180 +Roll270Pitch180 +Roll90Pitch270 +Roll180Pitch270 +Roll270Pitch270 +Roll90Pitch180Yaw90 +Roll90Yaw270 +Yaw293Pitch68Roll180 +Pitch315 +Roll90Pitch315 + + + + +Internal +External +ForcedExternal + + + + +Disabled +Enabled + + + + +None +Yaw45 +Yaw90 +Yaw135 +Yaw180 +Yaw225 +Yaw270 +Yaw315 +Roll180 +Roll180Yaw45 +Roll180Yaw90 +Roll180Yaw135 +Pitch180 +Roll180Yaw225 +Roll180Yaw270 +Roll180Yaw315 +Roll90 +Roll90Yaw45 +Roll90Yaw90 +Roll90Yaw135 +Roll270 +Roll270Yaw45 +Roll270Yaw90 +Roll270Yaw135 +Pitch90 +Pitch270 +Pitch180Yaw90 +Pitch180Yaw270 +Roll90Pitch90 +Roll180Pitch90 +Roll270Pitch90 +Roll90Pitch180 +Roll270Pitch180 +Roll90Pitch270 +Roll180Pitch270 +Roll270Pitch270 +Roll90Pitch180Yaw90 +Roll90Yaw270 +Yaw293Pitch68Roll180 +Pitch315 +Roll90Pitch315 + + + + +Internal +External +ForcedExternal + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +4 32 + +Very Strict +Strict +Default +Relaxed + +0.1 + + +500 3000 +1 + + +0:HMC5883,1:LSM303D,2:AK8963,3:BMM150,4:LSM9DS1,5:LIS3MDL,6:AK09916,7:IST8310,8:ICM20948,9:MMC3416,11:UAVCAN,12:QMC5883,14:MAG3110,15:IST8308 + + +0 100 +1 +% +percent + + + +Disabled +CheckOnly +CheckAndFix + + + + + + + + + + +Disabled +Enabled + + + + + + +Disabled +Enabled + + + +0 2 +0.01 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Disabled +Enabled + +True + + + +GPS 3D Vel and 2D Pos +GPS 2D vel and 2D pos +GPS 2D pos +No GPS + + + +0.05 5.0 +0.05 +m/s +meters per second + + +0.05 5.0 +0.05 +m/s +meters per second + + +100 1000 +25 + + +0.1 10.0 +0.1 +m +meters + + +100 1000 +25 + + +10 100 +5 +m +meters + + + +Use Baro +Use Range Finder +Use GPS +Use Range Beacon + +True + + +0.1 10.0 +0.1 +m +meters + + +100 1000 +25 + + +0 250 +10 +ms +milliseconds +True + + +0.01 0.5 +0.01 +Gauss +gauss + + + +When flying +When manoeuvring +Never +After first climb yaw reset +Always + + + +100 1000 +25 + + +0.5 5.0 +0.1 +m/s +meters per second + + +100 1000 +25 + + +0.1 10.0 +0.1 +m +meters + + +100 1000 +25 + + +1.0 4.0 +0.1 +rad/s +radians per second + + +0.05 1.0 +0.05 +rad/s +radians per second + + +100 1000 +25 + + +0 127 +10 +ms +milliseconds +True + + +0.0001 0.1 +0.0001 +rad/s +radians per second + + +0.01 1.0 +0.01 +m/s/s +meters per square second + + +0.00001 0.001 +rad/s/s +radians per square second + + +0.000001 0.001 +Hz +hertz + + +0.00001 0.005 +m/s/s/s +meters per cubic second + + +0.01 1.0 +0.1 +m/s/s +meters per square second + + +0.0 1.0 +0.1 + + +0:NSats,1:HDoP,2:speed error,3:position error,4:yaw error,5:pos drift,6:vert speed,7:horiz speed + + +0:FirstIMU,1:SecondIMU,2:ThirdIMU,3:FourthIMU,4:FifthIMU,5:SixthIMU +True + + +50 200 +% +percent + + +0.5 50.0 +m +meters + + +0:FirstIMU,1:SecondIMU,2:ThirdIMU,3:FourthIMU,4:FifthIMU,5:SixthIMU +True + + +0.05 1.0 +0.05 +rad +radians + + +100 1000 +25 + + +10 50 +5 +cs +centiseconds + + +0.00001 0.01 +Gauss/s +gauss per second + + +0.00001 0.01 +Gauss/s +gauss per second + + +-1 70 +1 +% +percent + + +0 0.2 +0.01 + + +0.1 10.0 +0.1 +m +meters + + +100 1000 +25 + + +0 127 +10 +ms +milliseconds +True + + +2.0 6.0 +0.5 +m/s +meters per second + + +0:FirstEKF,1:SecondEKF,2:ThirdEKF,3:FourthEKF,4:FifthEKF,5:SixthEKF +True + + +0:Correct when using Baro height,1:Correct when using range finder height,2:Apply corrections to local position +True + + +0 127 +1 +ms +milliseconds +True + + + +None +Navigation +Terrain + +True + + + + + +Disabled +Enabled + +True + + + +GPS 3D Vel and 2D Pos +GPS 2D vel and 2D pos +GPS 2D pos +No GPS + + + +0.05 5.0 +0.05 +m/s +meters per second + + +0.05 5.0 +0.05 +m/s +meters per second + + +100 1000 +25 + + +0.1 10.0 +0.1 +m +meters + + +100 1000 +25 + + +10 100 +5 +m +meters + + + +Use Baro +Use Range Finder +Use GPS +Use Range Beacon + +True + + +0.1 10.0 +0.1 +m +meters + + +100 1000 +25 + + +0 250 +10 +ms +milliseconds +True + + +0.01 0.5 +0.01 +Gauss +gauss + + + +When flying +When manoeuvring +Never +After first climb yaw reset +Always + +True + + +100 1000 +25 + + +0.5 5.0 +0.1 +m/s +meters per second + + +100 1000 +25 + + +0.1 10.0 +0.1 +m +meters + + +100 1000 +25 + + +1.0 4.0 +0.1 +rad/s +radians per second + + +0.05 1.0 +0.05 +rad/s +radians per second + + +100 1000 +25 + + +0 250 +10 +ms +milliseconds +True + + +0.0001 0.1 +0.0001 +rad/s +radians per second + + +0.01 1.0 +0.01 +m/s/s +meters per square second + + +0.00001 0.001 +rad/s/s +radians per square second + + +0.00001 0.005 +m/s/s/s +meters per cubic second + + +0.01 1.0 +0.1 +m/s/s +meters per square second + + +0.0 1.0 +0.1 + + +0:NSats,1:HDoP,2:speed error,3:position error,4:yaw error,5:pos drift,6:vert speed,7:horiz speed + + +0:FirstIMU,1:SecondIMU,2:ThirdIMU,3:FourthIMU,4:FifthIMU,5:SixthIMU +True + + +50 200 +% +percent + + +0.5 50.0 +m +meters + + +0:FirstIMU,1:SecondIMU,2:ThirdIMU,3:FourthIMU,4:FifthIMU,5:SixthIMU +True + + +0.05 1.0 +0.05 +rad +radians + + +100 1000 +25 + + +10 50 +5 +cs +centiseconds + + +0.00001 0.01 +Gauss/s +gauss per second + + +0.00001 0.01 +Gauss/s +gauss per second + + +-1 70 +1 +% +percent + + +0 0.2 +0.01 + + +0.1 10.0 +0.1 +m +meters + + +100 1000 +25 + + +0 250 +10 +ms +milliseconds +True + + +2.0 6.0 +0.5 +m/s +meters per second + + +0.5 2.5 +0.1 +m/s/s +meters per square second + + +0:FirstEKF,1:SecondEKF,2:ThirdEKF,3:FourthEKF,4:FifthEKF,5:SixthEKF +True + + +0:Correct when using Baro height,1:Correct when using range finder height,2:Apply corrections to local position +True + + +0.05 0.5 +0.05 +m/s +meters per second + + +0.5 5.0 +0.1 +m/s +meters per second + + +0.01 1.0 +0.1 +m/s +meters per second + + + +None +Navigation +Terrain + +True + + + + + +Disabled +Enabled + + + +0:Altitude,1:Circle,2:Polygon + +None +Altitude +Circle +Altitude and Circle +Polygon +Altitude and Polygon +Circle and Polygon +All + + + + +Report Only +RTL or Land +Always Land +SmartRTL or RTL or Land +Brake or Land + + + +10 1000 +1 +m +meters + + +30 10000 +m +meters + + +1 10 +m +meters + + +1 20 + + +-100 100 +1 +m +meters + + + + + +None +PX4Flow +Pixart +Bebop +CXOF +MAVLink + +True + + +-200 +200 +1 + + +-200 +200 +1 + + +-18000 +18000 +1 + + +-10 10 +m +meters + + +-10 10 +m +meters + + +-10 10 +m +meters + + +0 127 + + + +Disabled +Enabled + + + + + +True +True +1 +Pa +pascal + + +True +1 +degC +degrees Celsius + + +0.1 +m +meters + + + +FirstBaro +2ndBaro +3rdBaro + + + + +Disabled +Bus0 +Bus1 + + + +1.0:Freshwater,1.024:Saltwater + + +True +True +1 +Pa +pascal + + +True +True +1 +Pa +pascal + + +0 100 +1 +% +percent + + +0:BMP085,1:BMP280,2:MS5611,3:MS5607,4:MS5637,5:FBM320,6:DPS280,7:LPS25H,8:Keller + +BMP085 +BMP280 +MS5611 +MS5607 +MS5637 +FBM320 +DPS280 +LPS25H +Keller + + + + + + +None +AUTO +uBlox +MTK +MTK19 +NMEA +SiRF +HIL +SwiftNav +UAVCAN +SBF +GSOF +ERB +MAV +NOVA + +True + + + +None +AUTO +uBlox +MTK +MTK19 +NMEA +SiRF +HIL +SwiftNav +UAVCAN +SBF +GSOF +ERB +MAV +NOVA + +True + + + +Portable +Stationary +Pedestrian +Automotive +Sea +Airborne1G +Airborne2G +Airborne4G + + + + +Disabled +UseBest +Blend +UseSecond + + + + +Any +FloatRTK +IntegerRTK + +True + + + +Disabled +Enabled +NoChange + + + +-100 90 +deg +degrees + + + +send to first GPS +send to 2nd GPS +send to all + + + + +None (0x0000) +All (0xFFFF) +External only (0xFF00) + + + + +Ignore +Always log +Stop logging when disarmed (SBF only) +Only log every five samples (uBlox only) + +True + + +0:GPS,1:SBAS,2:Galileo,3:Beidou,4:IMES,5:QZSS,6:GLOSNASS + +Leave as currently configured +GPS-NoSBAS +GPS+SBAS +Galileo-NoSBAS +Galileo+SBAS +Beidou +GPS+IMES+QZSS+SBAS (Japan Only) +GLONASS +GLONASS+SBAS +GPS+GLONASS+SBAS + + + + +Do not save config +Save config +Save only when needed + + + +0:GPS,1:SBAS,2:Galileo,3:Beidou,4:IMES,5:QZSS,6:GLOSNASS + +Leave as currently configured +GPS-NoSBAS +GPS+SBAS +Galileo-NoSBAS +Galileo+SBAS +Beidou +GPS+IMES+QZSS+SBAS (Japan Only) +GLONASS +GLONASS+SBAS +GPS+GLONASS+SBAS + + + + +Disables automatic configuration +Enable automatic configuration + + + +50 200 + +10Hz +8Hz +5Hz + +ms +milliseconds + + +50 200 + +10Hz +8Hz +5Hz + +ms +milliseconds + + +-10 10 +m +meters + + +-10 10 +m +meters + + +-10 10 +m +meters + + +-10 10 +m +meters + + +-10 10 +m +meters + + +-10 10 +m +meters + + +0 250 +ms +milliseconds +True + + +0 250 +ms +milliseconds +True + + +0:Horiz Pos,1:Vert Pos,2:Speed + + +5.0 30.0 +s +seconds + + + + + +Disabled +Enabled + + + + +None +Servo +EPM + + + +1000 2000 +PWM +PWM in microseconds + + +1000 2000 +PWM +PWM in microseconds + + +1000 2000 +PWM +PWM in microseconds + + +0 255 +s +seconds + + +0 255 + + + + +rad/s +radians per second + + +rad/s +radians per second + + +rad/s +radians per second + + +rad/s +radians per second + + +rad/s +radians per second + + +rad/s +radians per second + + +rad/s +radians per second + + +rad/s +radians per second + + +rad/s +radians per second + + +0.8 1.2 + + +0.8 1.2 + + +0.8 1.2 + + +-3.5 3.5 +m/s/s +meters per square second + + +-3.5 3.5 +m/s/s +meters per square second + + +-3.5 3.5 +m/s/s +meters per square second + + +0.8 1.2 + + +0.8 1.2 + + +0.8 1.2 + + +-3.5 3.5 +m/s/s +meters per square second + + +-3.5 3.5 +m/s/s +meters per square second + + +-3.5 3.5 +m/s/s +meters per square second + + +0.8 1.2 + + +0.8 1.2 + + +0.8 1.2 + + +-3.5 3.5 +m/s/s +meters per square second + + +-3.5 3.5 +m/s/s +meters per square second + + +-3.5 3.5 +m/s/s +meters per square second + + +0 127 +Hz +hertz + + +0 127 +Hz +hertz + + + +Disabled +Enabled + + + + +Disabled +Enabled + + + + +Disabled +Enabled + + + +0.05 50 + + + +Never +Start-up only + + + + +Don't adjust the trims +Assume first orientation was level +Assume ACC_BODYFIX is perfectly aligned to the vehicle + + + + +IMU 1 +IMU 2 +IMU 3 + + + +-10 10 +m +meters + + +-10 10 +m +meters + + +-10 10 +m +meters + + +-10 10 +m +meters + + +-10 10 +m +meters + + +-10 10 +m +meters + + +-10 10 +m +meters + + +-10 10 +m +meters + + +-10 10 +m +meters + + +True + + +True + + +True + + +True + + +True + + +True + + +0:FirstIMU,1:SecondIMU,2:ThirdIMU + +FirstIMUOnly +FirstAndSecondIMU + + + +0:FirstIMU,1:SecondIMU,2:ThirdIMU + +FirstIMUOnly +FirstAndSecondIMU +FirstSecondAndThirdIMU +AllIMUs + + + + + +32 + + +0:IMU1,1:IMU2,2:IMU3 + +None +First IMU +All + + + +0:Sensor-Rate Logging (sample at full sensor rate seen by AP) + + +10 +ms +milliseconds + + +1 + + + + + +Disabled +Enabled + + + +10 200 +Hz +hertz + + +5 50 +Hz +hertz + + +5 30 +dB +decibel + + + + + +Disabled +Pixhawk Aux1 +Pixhawk Aux2 +Pixhawk Aux3 +Pixhawk Aux4 +Pixhawk Aux5 +Pixhawk Aux6 +Pixhawk 3.3ADC1 +Pixhawk 3.3ADC2 +Pixhawk 6.6ADC + + + + +Low +High + + + + +Disabled +Pixhawk Aux1 +Pixhawk Aux2 +Pixhawk Aux3 +Pixhawk Aux4 +Pixhawk Aux5 +Pixhawk Aux6 +Pixhawk 3.3ADC1 +Pixhawk 3.3ADC2 +Pixhawk 6.6ADC + + + + +Low +High + + + + +Disabled +Pixhawk Aux1 +Pixhawk Aux2 +Pixhawk Aux3 +Pixhawk Aux4 +Pixhawk Aux5 +Pixhawk Aux6 +Pixhawk 3.3ADC1 +Pixhawk 3.3ADC2 +Pixhawk 6.6ADC + + + + +Low +High + + + + + +0:File,1:MAVLink,2:Block + +None +File +MAVLink +File and MAVLink +Block +Block and MAVLink + + + + + + +Disabled +Enabled + + + + +Disabled +Enabled + + + + +Disabled +Enabled + + + +kB +kilobytes + + + + +0 45 +1 +deg +degrees + + +20 2000 +50 +cm/s +centimeters per second + + +100 981 +1 +cm/s/s +centimeters per square second + + +25 250 +1 +cm/s/s +centimeters per square second + + +500 5000 +1 +cm/s/s/s +centimeters per cubic second + + +0 2 +0.1 +s +seconds + + + + +0 32766 +1 + + + +Resume Mission +Restart Mission + + + +0:Clear Mission on reboot + + + + + +Retracted +Neutral +MavLink Targeting +RC Targeting +GPS Point + + + +-180.00 179.99 +1 +deg +degrees + + +-180.00 179.99 +1 +deg +degrees + + +-180.00 179.99 +1 +deg +degrees + + +-180.00 179.99 +1 +deg +degrees + + +-180.00 179.99 +1 +deg +degrees + + +-180.00 179.99 +1 +deg +degrees + + + +Disabled +Enabled + + + + +Disabled +Enabled + + + + +Disabled +Enabled + + + + +Disabled +RC5 +RC6 +RC7 +RC8 +RC9 +RC10 +RC11 +RC12 + + + +-18000 17999 +1 +cdeg +centidegrees + + +-18000 17999 +1 +cdeg +centidegrees + + + +Disabled +RC5 +RC6 +RC7 +RC8 +RC9 +RC10 +RC11 +RC12 + + + +-18000 17999 +1 +cdeg +centidegrees + + +-18000 17999 +1 +cdeg +centidegrees + + + +Disabled +RC5 +RC6 +RC7 +RC8 +RC9 +RC10 +RC11 +RC12 + + + +-18000 17999 +1 +cdeg +centidegrees + + +-18000 17999 +1 +cdeg +centidegrees + + +0 100 +1 + + +0.0 0.2 +.005 +s +seconds + + +0.0 0.2 +.005 +s +seconds + + + +None +Servo +3DR Solo +Alexmos Serial +SToRM32 MAVLink +SToRM32 Serial + +True + + + +Retracted +Neutral +MavLink Targeting +RC Targeting +GPS Point + + + +-180.00 179.99 +1 +deg +degrees + + +-180.00 179.99 +1 +deg +degrees + + +-180.00 179.99 +1 +deg +degrees + + +-180.00 179.99 +1 +deg +degrees + + +-180.00 179.99 +1 +deg +degrees + + +-180.00 179.99 +1 +deg +degrees + + + +Disabled +Enabled + + + + +Disabled +Enabled + + + + +Disabled +Enabled + + + + +Disabled +RC5 +RC6 +RC7 +RC8 +RC9 +RC10 +RC11 +RC12 + + + +-18000 17999 +1 +cdeg +centidegrees + + +-18000 17999 +1 +cdeg +centidegrees + + + +Disabled +RC5 +RC6 +RC7 +RC8 +RC9 +RC10 +RC11 +RC12 + + + +-18000 17999 +1 +cdeg +centidegrees + + +-18000 17999 +1 +cdeg +centidegrees + + + +Disabled +RC5 +RC6 +RC7 +RC8 +RC9 +RC10 +RC11 +RC12 + + + +-18000 17999 +1 +cdeg +centidegrees + + +-18000 17999 +1 +cdeg +centidegrees + + +0.0 0.2 +.005 +s +seconds + + +0.0 0.2 +.005 +s +seconds + + + +None +Servo +3DR Solo +Alexmos Serial +SToRM32 MAVLink +SToRM32 Serial + + + + + + +normal +reverse + + + + +normal +reverse + + + + +normal +reverse + + + + +normal +reverse + + + + +normal +reverse + + + + +normal +reverse + + + + +normal +reverse + + + + +normal +reverse + + + +0.0 1.5 +0.1 + + + +normal +reverse + + + + +normal +reverse + + + + +normal +reverse + + + + +normal +reverse + + + +0 500 +PWM +PWM in microseconds + + +0.25 0.8 + + +0.9:Low, 0.95:Default, 1.0:High + + +6 35 +V +volt + + +6 35 +V +volt + + +0 200 +A +ampere + + + +Normal +OneShot +OneShot125 +Brushed +DShot150 +DShot300 +DShot600 +DShot1200 + +True + + +0 2000 +PWM +PWM in microseconds + + +0 2000 +PWM +PWM in microseconds + + +0.0:Low, 0.15:Default, 0.3:High + + +0.0:Low, 0.1:Default, 0.2:High + + +0 10 +s +seconds + + +0.2 0.8 + + + +Disabled + + + + +PWM enabled while disarmed +PWM disabled while disarmed + + + +5 80 +1 +deg +degrees + + +0 2 +0.1 +s +seconds + + +0 5 +0.1 + + + +First battery +Second battery + + + +0 .5 +0.001 +s +seconds + + +0 .5 +0.001 +s +seconds + + + + + +Off +Low +Medium +High + + + + +Disable +Enable + + + + +Standard +MAVLink +OutbackChallenge + + + + +Disable +ssd1306 +sh1106 + + + + +Disabled +Aircraft +Rover + + + + +Disabled + + + +0:Build in LED, 1:Internal ToshibaLED, 2:External ToshibaLED, 3:External PCA9685, 4:Oreo LED, 5:UAVCAN, 6:NCP5623 External, 7:NCP5623 Internal + + + +LowIsOn +HighIsOn + + + + + + +None +LightWareSF40C +MAVLink +TeraRangerTower +RangeFinder +RPLidarA2 +TeraRangerTowerEvo +SITL +MorseSITL + +True + + + +Default +Upside Down + + + +-180 180 +deg +degrees + + +0 360 +deg +degrees + + +0 45 +deg +degrees + + +0 360 +deg +degrees + + +0 45 +deg +degrees + + +0 360 +deg +degrees + + +0 45 +deg +degrees + + +0 360 +deg +degrees + + +0 45 +deg +degrees + + +0 360 +deg +degrees + + +0 45 +deg +degrees + + +0 360 +deg +degrees + + +0 45 +deg +degrees + + + +None +LightWareSF40C +MAVLink +TeraRangerTower +RangeFinder +RPLidarA2 +TeraRangerTowerEvo + +True + + + +Default +Upside Down + + + +-180 180 +deg +degrees + + + + +0.5 5 +0.1 +Hz +hertz + + +1.000 3.000 + + +1.000 8.000 + + +0.500 1.500 +0.05 + + +0.000 3.000 + + +0 1000 +d% +decipercent + + +0.000 0.400 + + +1.000 100.000 +Hz +hertz + + +0.500 2.000 + + +0.1 6.0 +0.1 + + +0.02 1.00 +0.01 + + +0.00 1.00 +0.001 + + +0 4500 +10 +cm/s/s +centimeters per square second + + +0 100 +Hz +hertz + + +0 100 +Hz +hertz + + +0 45 +1 +deg +degrees + + + + + + +0.1 +km +kilometers + + + +DoNotIncludeHome +IncludeHome + + + + + +0.0 120.0 +s +seconds + + +0:Ignore RC Receiver, 1:Ignore MAVLink Overrides, 2:Ignore Receiver Failsafe + + + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + + +Normal +Reversed + + + +0 200 +PWM +PWM in microseconds + + + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + + +Normal +Reversed + + + +0 200 +PWM +PWM in microseconds + + + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + + +Normal +Reversed + + + +0 200 +PWM +PWM in microseconds + + + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + + +Normal +Reversed + + + +0 200 +PWM +PWM in microseconds + + + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + + +Normal +Reversed + + + +0 200 +PWM +PWM in microseconds + + + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + + +Normal +Reversed + + + +0 200 +PWM +PWM in microseconds + + + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + + +Normal +Reversed + + + +0 200 +PWM +PWM in microseconds + + + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + + +Normal +Reversed + + + +0 200 +PWM +PWM in microseconds + + + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + + +Normal +Reversed + + + +0 200 +PWM +PWM in microseconds + + + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + + +Normal +Reversed + + + +0 200 +PWM +PWM in microseconds + + + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + + +Normal +Reversed + + + +0 200 +PWM +PWM in microseconds + + + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + + +Normal +Reversed + + + +0 200 +PWM +PWM in microseconds + + + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + + +Normal +Reversed + + + +0 200 +PWM +PWM in microseconds + + + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + + +Normal +Reversed + + + +0 200 +PWM +PWM in microseconds + + + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + + +Normal +Reversed + + + +0 200 +PWM +PWM in microseconds + + + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + + +Normal +Reversed + + + +0 200 +PWM +PWM in microseconds + + + + +1 8 +1 +True + + +1 8 +1 +True + + +1 8 +1 +True + + +1 8 +1 +True + + +1 8 +1-8 +1 +True + + +1 8 +1-8 +1 +True + + + + + +Disabled +BB Blue GP0 pin 4 +AUXOUT1 +AUXOUT2 +AUXOUT3 +AUXOUT4 +AUXOUT5 +AUXOUT6 +BB Blue GP0 pin 3 +BB Blue GP0 pin 6 +BB Blue GP0 pin 5 + + + + +Disabled +BB Blue GP0 pin 4 +AUXOUT1 +AUXOUT2 +AUXOUT3 +AUXOUT4 +AUXOUT5 +AUXOUT6 +BB Blue GP0 pin 3 +BB Blue GP0 pin 6 +BB Blue GP0 pin 5 + + + + +Disabled +BB Blue GP0 pin 4 +AUXOUT1 +AUXOUT2 +AUXOUT3 +AUXOUT4 +AUXOUT5 +AUXOUT6 +BB Blue GP0 pin 3 +BB Blue GP0 pin 6 +BB Blue GP0 pin 5 + + + + +Disabled +BB Blue GP0 pin 4 +AUXOUT1 +AUXOUT2 +AUXOUT3 +AUXOUT4 +AUXOUT5 +AUXOUT6 +BB Blue GP0 pin 3 +BB Blue GP0 pin 6 +BB Blue GP0 pin 5 + + + + +Off +On +NoChange + + + + +Disabled +BB Blue GP0 pin 4 +AUXOUT1 +AUXOUT2 +AUXOUT3 +AUXOUT4 +AUXOUT5 +AUXOUT6 +BB Blue GP0 pin 3 +BB Blue GP0 pin 6 +BB Blue GP0 pin 5 + + + + +Disabled +BB Blue GP0 pin 4 +AUXOUT1 +AUXOUT2 +AUXOUT3 +AUXOUT4 +AUXOUT5 +AUXOUT6 +BB Blue GP0 pin 3 +BB Blue GP0 pin 6 +BB Blue GP0 pin 5 + + + + + + +None +Analog +MaxbotixI2C +LidarLiteV2-I2C +PX4-PWM +BBB-PRU +LightWareI2C +LightWareSerial +Bebop +MAVLink +uLanding +LeddarOne +MaxbotixSerial +TeraRangerI2C +LidarLiteV3-I2C +VL53L0X +NMEA +WASP-LRF +BenewakeTF02 +BenewakeTFmini +LidarLightV3HP +PWM +BlueRoboticsPing + + + + +Not Used +PX4-airspeed port +Pixhawk-airspeed port + + + +0.001 +m/V +meters per volt + + +0.001 +V +volt + + + +Linear +Inverted +Hyperbolic + + + +1 +cm +centimeters + + +1 +cm +centimeters + + + +Not Used +Pixhawk AUXOUT1 +Pixhawk AUXOUT2 +Pixhawk AUXOUT3 +Pixhawk AUXOUT4 +Pixhawk AUXOUT5 +Pixhawk AUXOUT6 +PX4 FMU Relay1 +PX4 FMU Relay2 +PX4IO Relay1 +PX4IO Relay2 +PX4IO ACC1 +PX4IO ACC2 + + + +1 +ms +milliseconds + + + +No +Yes + + + +0 32767 +m +meters + + +5 127 +1 +cm +centimeters + + +0 127 +1 + + +m +meters + + +m +meters + + +m +meters + + + +Forward +Forward-Right +Right +Back-Right +Back +Back-Left +Left +Forward-Left +Up +Down + + + + + +0 255 + + +0 255 + + +0 10000 + + +0 255 + + +-1 255 + + + +Low Speed +High Speed + + + + + + +None +Analog +MaxbotixI2C +LidarLiteV2-I2C +PX4-PWM +BBB-PRU +LightWareI2C +LightWareSerial +Bebop +MAVLink +uLanding +LeddarOne +MaxbotixSerial +TeraRangerI2C +LidarLiteV3-I2C +VL53L0X +NMEA +WASP-LRF +BenewakeTF02 +BenewakeTFmini +LidarLightV3HP +PWM +BlueRoboticsPing + + + + +Not Used +PX4-airspeed port +Pixhawk-airspeed port + + + +0.001 +m/V +meters per volt + + +0.001 +V +volt + + + +Linear +Inverted +Hyperbolic + + + +1 +cm +centimeters + + +1 +cm +centimeters + + + +Not Used +Pixhawk AUXOUT1 +Pixhawk AUXOUT2 +Pixhawk AUXOUT3 +Pixhawk AUXOUT4 +Pixhawk AUXOUT5 +Pixhawk AUXOUT6 +PX4 FMU Relay1 +PX4 FMU Relay2 +PX4IO Relay1 +PX4IO Relay2 +PX4IO ACC1 +PX4IO ACC2 + + + +1 +ms +milliseconds + + + +No +Yes + + + +0 32767 +m +meters + + +5 127 +1 +cm +centimeters + + +0 127 +1 + + +m +meters + + +m +meters + + +m +meters + + + +Forward +Forward-Right +Right +Back-Right +Back +Back-Left +Left +Forward-Left +Up +Down + + + + + +0 255 + + +0 255 + + +0 10000 + + +0 255 + + +-1 255 + + + +Low Speed +High Speed + + + + + + +None +Analog +MaxbotixI2C +LidarLiteV2-I2C +PX4-PWM +BBB-PRU +LightWareI2C +LightWareSerial +Bebop +MAVLink +uLanding +LeddarOne +MaxbotixSerial +TeraRangerI2C +LidarLiteV3-I2C +VL53L0X +NMEA +WASP-LRF +BenewakeTF02 +BenewakeTFmini +LidarLightV3HP +PWM +BlueRoboticsPing + + + + +Not Used +PX4-airspeed port +Pixhawk-airspeed port + + + +0.001 +m/V +meters per volt + + +0.001 +V +volt + + + +Linear +Inverted +Hyperbolic + + + +1 +cm +centimeters + + +1 +cm +centimeters + + + +Not Used +Pixhawk AUXOUT1 +Pixhawk AUXOUT2 +Pixhawk AUXOUT3 +Pixhawk AUXOUT4 +Pixhawk AUXOUT5 +Pixhawk AUXOUT6 +PX4 FMU Relay1 +PX4 FMU Relay2 +PX4IO Relay1 +PX4IO Relay2 +PX4IO ACC1 +PX4IO ACC2 + + + +1 +ms +milliseconds + + + +No +Yes + + + +0 32767 +m +meters + + +5 127 +1 +cm +centimeters + + +0 127 +1 + + +m +meters + + +m +meters + + +m +meters + + + +Forward +Forward-Right +Right +Back-Right +Back +Back-Left +Left +Forward-Left +Up +Down + + + + + +0 255 + + +0 255 + + +0 10000 + + +0 255 + + +-1 255 + + + +Low Speed +High Speed + + + + + + +None +Analog +MaxbotixI2C +LidarLiteV2-I2C +PX4-PWM +BBB-PRU +LightWareI2C +LightWareSerial +Bebop +MAVLink +uLanding +LeddarOne +MaxbotixSerial +TeraRangerI2C +LidarLiteV3-I2C +VL53L0X +NMEA +WASP-LRF +BenewakeTF02 +BenewakeTFmini +LidarLightV3HP +PWM +BlueRoboticsPing + + + + +Not Used +PX4-airspeed port +Pixhawk-airspeed port + + + +0.001 +m/V +meters per volt + + +0.001 +V +volt + + + +Linear +Inverted +Hyperbolic + + + +1 +cm +centimeters + + +1 +cm +centimeters + + + +Not Used +Pixhawk AUXOUT1 +Pixhawk AUXOUT2 +Pixhawk AUXOUT3 +Pixhawk AUXOUT4 +Pixhawk AUXOUT5 +Pixhawk AUXOUT6 +PX4 FMU Relay1 +PX4 FMU Relay2 +PX4IO Relay1 +PX4IO Relay2 +PX4IO ACC1 +PX4IO ACC2 + + + +1 +ms +milliseconds + + + +No +Yes + + + +0 32767 +m +meters + + +5 127 +1 +cm +centimeters + + +0 127 +1 + + +m +meters + + +m +meters + + +m +meters + + + +Forward +Forward-Right +Right +Back-Right +Back +Back-Left +Left +Forward-Left +Up +Down + + + + + +0 255 + + +0 255 + + +0 10000 + + +0 255 + + +-1 255 + + + +Low Speed +High Speed + + + + + + +None +Analog +MaxbotixI2C +LidarLiteV2-I2C +PX4-PWM +BBB-PRU +LightWareI2C +LightWareSerial +Bebop +MAVLink +uLanding +LeddarOne +MaxbotixSerial +TeraRangerI2C +LidarLiteV3-I2C +VL53L0X +NMEA +WASP-LRF +BenewakeTF02 +BenewakeTFmini +LidarLightV3HP +PWM +BlueRoboticsPing + + + + +Not Used +PX4-airspeed port +Pixhawk-airspeed port + + + +0.001 +m/V +meters per volt + + +0.001 +V +volt + + + +Linear +Inverted +Hyperbolic + + + +1 +cm +centimeters + + +1 +cm +centimeters + + + +Not Used +Pixhawk AUXOUT1 +Pixhawk AUXOUT2 +Pixhawk AUXOUT3 +Pixhawk AUXOUT4 +Pixhawk AUXOUT5 +Pixhawk AUXOUT6 +PX4 FMU Relay1 +PX4 FMU Relay2 +PX4IO Relay1 +PX4IO Relay2 +PX4IO ACC1 +PX4IO ACC2 + + + +1 +ms +milliseconds + + + +No +Yes + + + +0 32767 +m +meters + + +5 127 +1 +cm +centimeters + + +0 127 +1 + + +m +meters + + +m +meters + + +m +meters + + + +Forward +Forward-Right +Right +Back-Right +Back +Back-Left +Left +Forward-Left +Up +Down + + + + + +0 255 + + +0 255 + + +0 10000 + + +0 255 + + +-1 255 + + + +Low Speed +High Speed + + + + + + +None +Analog +MaxbotixI2C +LidarLiteV2-I2C +PX4-PWM +BBB-PRU +LightWareI2C +LightWareSerial +Bebop +MAVLink +uLanding +LeddarOne +MaxbotixSerial +TeraRangerI2C +LidarLiteV3-I2C +VL53L0X +NMEA +WASP-LRF +BenewakeTF02 +BenewakeTFmini +LidarLightV3HP +PWM +BlueRoboticsPing + + + + +Not Used +PX4-airspeed port +Pixhawk-airspeed port + + + +0.001 +m/V +meters per volt + + +0.001 +V +volt + + + +Linear +Inverted +Hyperbolic + + + +1 +cm +centimeters + + +1 +cm +centimeters + + + +Not Used +Pixhawk AUXOUT1 +Pixhawk AUXOUT2 +Pixhawk AUXOUT3 +Pixhawk AUXOUT4 +Pixhawk AUXOUT5 +Pixhawk AUXOUT6 +PX4 FMU Relay1 +PX4 FMU Relay2 +PX4IO Relay1 +PX4IO Relay2 +PX4IO ACC1 +PX4IO ACC2 + + + +1 +ms +milliseconds + + + +No +Yes + + + +0 32767 +m +meters + + +5 127 +1 +cm +centimeters + + +0 127 +1 + + +m +meters + + +m +meters + + +m +meters + + + +Forward +Forward-Right +Right +Back-Right +Back +Back-Left +Left +Forward-Left +Up +Down + + + + + +0 255 + + +0 255 + + +0 10000 + + +0 255 + + +-1 255 + + + +Low Speed +High Speed + + + + + + +None +Analog +MaxbotixI2C +LidarLiteV2-I2C +PX4-PWM +BBB-PRU +LightWareI2C +LightWareSerial +Bebop +MAVLink +uLanding +LeddarOne +MaxbotixSerial +TeraRangerI2C +LidarLiteV3-I2C +VL53L0X +NMEA +WASP-LRF +BenewakeTF02 +BenewakeTFmini +LidarLightV3HP +PWM +BlueRoboticsPing + + + + +Not Used +PX4-airspeed port +Pixhawk-airspeed port + + + +0.001 +m/V +meters per volt + + +0.001 +V +volt + + + +Linear +Inverted +Hyperbolic + + + +1 +cm +centimeters + + +1 +cm +centimeters + + + +Not Used +Pixhawk AUXOUT1 +Pixhawk AUXOUT2 +Pixhawk AUXOUT3 +Pixhawk AUXOUT4 +Pixhawk AUXOUT5 +Pixhawk AUXOUT6 +PX4 FMU Relay1 +PX4 FMU Relay2 +PX4IO Relay1 +PX4IO Relay2 +PX4IO ACC1 +PX4IO ACC2 + + + +1 +ms +milliseconds + + + +No +Yes + + + +0 32767 +m +meters + + +5 127 +1 +cm +centimeters + + +0 127 +1 + + +m +meters + + +m +meters + + +m +meters + + + +Forward +Forward-Right +Right +Back-Right +Back +Back-Left +Left +Forward-Left +Up +Down + + + + + +0 255 + + +0 255 + + +0 10000 + + +0 255 + + +-1 255 + + + +Low Speed +High Speed + + + + + + +None +Analog +MaxbotixI2C +LidarLiteV2-I2C +PX4-PWM +BBB-PRU +LightWareI2C +LightWareSerial +Bebop +MAVLink +uLanding +LeddarOne +MaxbotixSerial +TeraRangerI2C +LidarLiteV3-I2C +VL53L0X +NMEA +WASP-LRF +BenewakeTF02 +BenewakeTFmini +LidarLightV3HP +PWM +BlueRoboticsPing + + + + +Not Used +PX4-airspeed port +Pixhawk-airspeed port + + + +0.001 +m/V +meters per volt + + +0.001 +V +volt + + + +Linear +Inverted +Hyperbolic + + + +1 +cm +centimeters + + +1 +cm +centimeters + + + +Not Used +Pixhawk AUXOUT1 +Pixhawk AUXOUT2 +Pixhawk AUXOUT3 +Pixhawk AUXOUT4 +Pixhawk AUXOUT5 +Pixhawk AUXOUT6 +PX4 FMU Relay1 +PX4 FMU Relay2 +PX4IO Relay1 +PX4IO Relay2 +PX4IO ACC1 +PX4IO ACC2 + + + +1 +ms +milliseconds + + + +No +Yes + + + +0 32767 +m +meters + + +5 127 +1 +cm +centimeters + + +0 127 +1 + + +m +meters + + +m +meters + + +m +meters + + + +Forward +Forward-Right +Right +Back-Right +Back +Back-Left +Left +Forward-Left +Up +Down + + + + + +0 255 + + +0 255 + + +0 10000 + + +0 255 + + +-1 255 + + + +Low Speed +High Speed + + + + + + +None +Analog +MaxbotixI2C +LidarLiteV2-I2C +PX4-PWM +BBB-PRU +LightWareI2C +LightWareSerial +Bebop +MAVLink +uLanding +LeddarOne +MaxbotixSerial +TeraRangerI2C +LidarLiteV3-I2C +VL53L0X +NMEA +WASP-LRF +BenewakeTF02 +BenewakeTFmini +LidarLightV3HP +PWM +BlueRoboticsPing + + + + +Not Used +PX4-airspeed port +Pixhawk-airspeed port + + + +0.001 +m/V +meters per volt + + +0.001 +V +volt + + + +Linear +Inverted +Hyperbolic + + + +1 +cm +centimeters + + +1 +cm +centimeters + + + +Not Used +Pixhawk AUXOUT1 +Pixhawk AUXOUT2 +Pixhawk AUXOUT3 +Pixhawk AUXOUT4 +Pixhawk AUXOUT5 +Pixhawk AUXOUT6 +PX4 FMU Relay1 +PX4 FMU Relay2 +PX4IO Relay1 +PX4IO Relay2 +PX4IO ACC1 +PX4IO ACC2 + + + +1 +ms +milliseconds + + + +No +Yes + + + +0 32767 +m +meters + + +5 127 +1 +cm +centimeters + + +0 127 +1 + + +m +meters + + +m +meters + + +m +meters + + + +Forward +Forward-Right +Right +Back-Right +Back +Back-Left +Left +Forward-Left +Up +Down + + + + + +0 255 + + +0 255 + + +0 10000 + + +0 255 + + +-1 255 + + + +Low Speed +High Speed + + + + + + +None +Analog +MaxbotixI2C +LidarLiteV2-I2C +PX4-PWM +BBB-PRU +LightWareI2C +LightWareSerial +Bebop +MAVLink +uLanding +LeddarOne +MaxbotixSerial +TeraRangerI2C +LidarLiteV3-I2C +VL53L0X +NMEA +WASP-LRF +BenewakeTF02 +BenewakeTFmini +LidarLightV3HP +PWM +BlueRoboticsPing + + + + +Not Used +PX4-airspeed port +Pixhawk-airspeed port + + + +0.001 +m/V +meters per volt + + +0.001 +V +volt + + + +Linear +Inverted +Hyperbolic + + + +1 +cm +centimeters + + +1 +cm +centimeters + + + +Not Used +Pixhawk AUXOUT1 +Pixhawk AUXOUT2 +Pixhawk AUXOUT3 +Pixhawk AUXOUT4 +Pixhawk AUXOUT5 +Pixhawk AUXOUT6 +PX4 FMU Relay1 +PX4 FMU Relay2 +PX4IO Relay1 +PX4IO Relay2 +PX4IO ACC1 +PX4IO ACC2 + + + +1 +ms +milliseconds + + + +No +Yes + + + +0 32767 +m +meters + + +5 127 +1 +cm +centimeters + + +0 127 +1 + + +m +meters + + +m +meters + + +m +meters + + + +Forward +Forward-Right +Right +Back-Right +Back +Back-Left +Left +Forward-Left +Up +Down + + + + + +0 255 + + +0 255 + + +0 10000 + + +0 255 + + +-1 255 + + + +Low Speed +High Speed + + + + + + +None +PX4-PWM +AUXPIN + + + +0.001 + + +1 + + +1 + + +0.1 + + + +Disabled +PixhawkAUX1 +PixhawkAUX2 +PixhawkAUX3 +PixhawkAUX4 +PixhawkAUX5 +PixhawkAUX6 + + + + +None +PX4-PWM +AUXPIN + + + +0.001 + + + +Disabled +PixhawkAUX1 +PixhawkAUX2 +PixhawkAUX3 +PixhawkAUX4 +PixhawkAUX5 +PixhawkAUX6 + + + + + + +Disabled +ShowSlips +ShowOverruns + + + + +50Hz +100Hz +200Hz +250Hz +300Hz +400Hz + +True + + + + + +1200 +2400 +4800 +9600 +19200 +38400 +57600 +111100 +115200 +256000 +460800 +500000 +921600 +1500000 + + + + +MAVlink1 +MAVLink2 + +True + + + +None +MAVLink1 +MAVLink2 +Frsky D +Frsky SPort +GPS +Alexmos Gimbal Serial +SToRM32 Gimbal Serial +Rangefinder +FrSky SPort Passthrough (OpenTX) +Lidar360 +Beacon +Volz servo out +SBus servo out +ESC Telemetry +Devo Telemetry +OpticalFlow +RobotisServo + +True + + + +1200 +2400 +4800 +9600 +19200 +38400 +57600 +111100 +115200 +256000 +500000 +921600 +1500000 + + + + +None +MAVLink1 +MAVLink2 +Frsky D +Frsky SPort +GPS +Alexmos Gimbal Serial +SToRM32 Gimbal Serial +Rangefinder +FrSky SPort Passthrough (OpenTX) +Lidar360 +Beacon +Volz servo out +SBus servo out +ESC Telemetry +Devo Telemetry +OpticalFlow +RobotisServo + +True + + + +1200 +2400 +4800 +9600 +19200 +38400 +57600 +111100 +115200 +256000 +500000 +921600 +1500000 + + + + +None +MAVLink1 +MAVLink2 +Frsky D +Frsky SPort +GPS +Alexmos Gimbal Serial +SToRM32 Gimbal Serial +Rangefinder +FrSky SPort Passthrough (OpenTX) +Lidar360 +Beacon +Volz servo out +SBus servo out +ESC Telemetry +Devo Telemetry +OpticalFlow +RobotisServo + +True + + + +1200 +2400 +4800 +9600 +19200 +38400 +57600 +111100 +115200 +256000 +500000 +921600 +1500000 + + + + +None +MAVLink1 +MAVLink2 +Frsky D +Frsky SPort +GPS +Alexmos Gimbal Serial +SToRM32 Gimbal Serial +Rangefinder +FrSky SPort Passthrough (OpenTX) +Lidar360 +Beacon +Volz servo out +SBus servo out +ESC Telemetry +Devo Telemetry +OpticalFlow +RobotisServo + +True + + + +1200 +2400 +4800 +9600 +19200 +38400 +57600 +111100 +115200 +256000 +500000 +921600 +1500000 + + + + +None +MAVLink1 +MAVLink2 +Frsky D +Frsky SPort +GPS +Alexmos Gimbal Serial +SToRM32 Gimbal Serial +Rangefinder +FrSky SPort Passthrough (OpenTX) +Lidar360 +Beacon +Volz servo out +SBus servo out +ESC Telemetry +Devo Telemetry +OpticalFlow +RobotisServo + +True + + + +1200 +2400 +4800 +9600 +19200 +38400 +57600 +111100 +115200 +256000 +500000 +921600 +1500000 + + + + +None +MAVLink1 +MAVLink2 +Frsky D +Frsky SPort +GPS +Alexmos Gimbal Serial +SToRM32 Gimbal Serial +Rangefinder +FrSky SPort Passthrough (OpenTX) +Lidar360 +Beacon +Volz servo out +SBus servo out +ESC Telemetry +Devo Telemetry +OpticalFlow +RobotisServo + +True + + + +1200 +2400 +4800 +9600 +19200 +38400 +57600 +111100 +115200 +256000 +500000 +921600 +1500000 + + + +0:InvertRX, 1:InvertTX, 2:HalfDuplex, 4:Swap +True + + +0:InvertRX, 1:InvertTX, 2:HalfDuplex, 4:Swap +True + + +0:InvertRX, 1:InvertTX, 2:HalfDuplex, 4:Swap +True + + +0:InvertRX, 1:InvertTX, 2:HalfDuplex, 4:Swap +True + + +0:InvertRX, 1:InvertTX, 2:HalfDuplex, 4:Swap +True + + +0:InvertRX, 1:InvertTX, 2:HalfDuplex, 4:Swap +True + + + +Disabled +Serial0 +Serial1 +Serial2 +Serial3 +Serial4 +Serial5 +Serial6 + + + + +Disabled +Serial0 +Serial1 +Serial2 +Serial3 +Serial4 +Serial5 +Serial6 + + + +0 120 +s +seconds + + + + + +Disable +Enable + + + +25 400 +Hz +hertz + + + + +500 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + + +Normal +Reversed + + + + +Disabled +RCPassThru +Flap +Flap_auto +Aileron +mount_pan +mount_tilt +mount_roll +mount_open +camera_trigger +release +mount2_pan +mount2_tilt +mount2_roll +mount2_open +DifferentialSpoilerLeft1 +DifferentialSpoilerRight1 +Elevator +Rudder +FlaperonLeft +FlaperonRight +GroundSteering +Parachute +EPM +LandingGear +EngineRunEnable +HeliRSC +HeliTailRSC +Motor1 +Motor2 +Motor3 +Motor4 +Motor5 +Motor6 +Motor7 +Motor8 +MotorTilt +RCIN1 +RCIN2 +RCIN3 +RCIN4 +RCIN5 +RCIN6 +RCIN7 +RCIN8 +RCIN9 +RCIN10 +RCIN11 +RCIN12 +RCIN13 +RCIN14 +RCIN15 +RCIN16 +Ignition +Choke +Starter +Throttle +TrackerYaw +TrackerPitch +ThrottleLeft +ThrottleRight +tiltMotorLeft +tiltMotorRight +ElevonLeft +ElevonRight +VTailLeft +VTailRight +BoostThrottle +Motor9 +Motor10 +Motor11 +Motor12 +DifferentialSpoilerLeft2 +DifferentialSpoilerRight2 +Winch +Main Sail +Camera ISO +Camera Focus +Camera Shutter Speed +Script 1 +Script 2 +Script 3 +Script 4 +Script 5 +Script 6 +Script 7 +Script 8 +Script 9 +Script 10 +Script 11 +Script 12 +Script 13 +Script 14 +Script 15 +Script 16 + + + + + +500 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + + +Normal +Reversed + + + + +Disabled +RCPassThru +Flap +Flap_auto +Aileron +mount_pan +mount_tilt +mount_roll +mount_open +camera_trigger +release +mount2_pan +mount2_tilt +mount2_roll +mount2_open +DifferentialSpoilerLeft1 +DifferentialSpoilerRight1 +Elevator +Rudder +FlaperonLeft +FlaperonRight +GroundSteering +Parachute +EPM +LandingGear +EngineRunEnable +HeliRSC +HeliTailRSC +Motor1 +Motor2 +Motor3 +Motor4 +Motor5 +Motor6 +Motor7 +Motor8 +MotorTilt +RCIN1 +RCIN2 +RCIN3 +RCIN4 +RCIN5 +RCIN6 +RCIN7 +RCIN8 +RCIN9 +RCIN10 +RCIN11 +RCIN12 +RCIN13 +RCIN14 +RCIN15 +RCIN16 +Ignition +Choke +Starter +Throttle +TrackerYaw +TrackerPitch +ThrottleLeft +ThrottleRight +tiltMotorLeft +tiltMotorRight +ElevonLeft +ElevonRight +VTailLeft +VTailRight +BoostThrottle +Motor9 +Motor10 +Motor11 +Motor12 +DifferentialSpoilerLeft2 +DifferentialSpoilerRight2 +Winch +Main Sail +Camera ISO +Camera Focus +Camera Shutter Speed +Script 1 +Script 2 +Script 3 +Script 4 +Script 5 +Script 6 +Script 7 +Script 8 +Script 9 +Script 10 +Script 11 +Script 12 +Script 13 +Script 14 +Script 15 +Script 16 + + + + + +500 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + + +Normal +Reversed + + + + +Disabled +RCPassThru +Flap +Flap_auto +Aileron +mount_pan +mount_tilt +mount_roll +mount_open +camera_trigger +release +mount2_pan +mount2_tilt +mount2_roll +mount2_open +DifferentialSpoilerLeft1 +DifferentialSpoilerRight1 +Elevator +Rudder +FlaperonLeft +FlaperonRight +GroundSteering +Parachute +EPM +LandingGear +EngineRunEnable +HeliRSC +HeliTailRSC +Motor1 +Motor2 +Motor3 +Motor4 +Motor5 +Motor6 +Motor7 +Motor8 +MotorTilt +RCIN1 +RCIN2 +RCIN3 +RCIN4 +RCIN5 +RCIN6 +RCIN7 +RCIN8 +RCIN9 +RCIN10 +RCIN11 +RCIN12 +RCIN13 +RCIN14 +RCIN15 +RCIN16 +Ignition +Choke +Starter +Throttle +TrackerYaw +TrackerPitch +ThrottleLeft +ThrottleRight +tiltMotorLeft +tiltMotorRight +ElevonLeft +ElevonRight +VTailLeft +VTailRight +BoostThrottle +Motor9 +Motor10 +Motor11 +Motor12 +DifferentialSpoilerLeft2 +DifferentialSpoilerRight2 +Winch +Main Sail +Camera ISO +Camera Focus +Camera Shutter Speed +Script 1 +Script 2 +Script 3 +Script 4 +Script 5 +Script 6 +Script 7 +Script 8 +Script 9 +Script 10 +Script 11 +Script 12 +Script 13 +Script 14 +Script 15 +Script 16 + + + + + +500 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + + +Normal +Reversed + + + + +Disabled +RCPassThru +Flap +Flap_auto +Aileron +mount_pan +mount_tilt +mount_roll +mount_open +camera_trigger +release +mount2_pan +mount2_tilt +mount2_roll +mount2_open +DifferentialSpoilerLeft1 +DifferentialSpoilerRight1 +Elevator +Rudder +FlaperonLeft +FlaperonRight +GroundSteering +Parachute +EPM +LandingGear +EngineRunEnable +HeliRSC +HeliTailRSC +Motor1 +Motor2 +Motor3 +Motor4 +Motor5 +Motor6 +Motor7 +Motor8 +MotorTilt +RCIN1 +RCIN2 +RCIN3 +RCIN4 +RCIN5 +RCIN6 +RCIN7 +RCIN8 +RCIN9 +RCIN10 +RCIN11 +RCIN12 +RCIN13 +RCIN14 +RCIN15 +RCIN16 +Ignition +Choke +Starter +Throttle +TrackerYaw +TrackerPitch +ThrottleLeft +ThrottleRight +tiltMotorLeft +tiltMotorRight +ElevonLeft +ElevonRight +VTailLeft +VTailRight +BoostThrottle +Motor9 +Motor10 +Motor11 +Motor12 +DifferentialSpoilerLeft2 +DifferentialSpoilerRight2 +Winch +Main Sail +Camera ISO +Camera Focus +Camera Shutter Speed +Script 1 +Script 2 +Script 3 +Script 4 +Script 5 +Script 6 +Script 7 +Script 8 +Script 9 +Script 10 +Script 11 +Script 12 +Script 13 +Script 14 +Script 15 +Script 16 + + + + + +500 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + + +Normal +Reversed + + + + +Disabled +RCPassThru +Flap +Flap_auto +Aileron +mount_pan +mount_tilt +mount_roll +mount_open +camera_trigger +release +mount2_pan +mount2_tilt +mount2_roll +mount2_open +DifferentialSpoilerLeft1 +DifferentialSpoilerRight1 +Elevator +Rudder +FlaperonLeft +FlaperonRight +GroundSteering +Parachute +EPM +LandingGear +EngineRunEnable +HeliRSC +HeliTailRSC +Motor1 +Motor2 +Motor3 +Motor4 +Motor5 +Motor6 +Motor7 +Motor8 +MotorTilt +RCIN1 +RCIN2 +RCIN3 +RCIN4 +RCIN5 +RCIN6 +RCIN7 +RCIN8 +RCIN9 +RCIN10 +RCIN11 +RCIN12 +RCIN13 +RCIN14 +RCIN15 +RCIN16 +Ignition +Choke +Starter +Throttle +TrackerYaw +TrackerPitch +ThrottleLeft +ThrottleRight +tiltMotorLeft +tiltMotorRight +ElevonLeft +ElevonRight +VTailLeft +VTailRight +BoostThrottle +Motor9 +Motor10 +Motor11 +Motor12 +DifferentialSpoilerLeft2 +DifferentialSpoilerRight2 +Winch +Main Sail +Camera ISO +Camera Focus +Camera Shutter Speed +Script 1 +Script 2 +Script 3 +Script 4 +Script 5 +Script 6 +Script 7 +Script 8 +Script 9 +Script 10 +Script 11 +Script 12 +Script 13 +Script 14 +Script 15 +Script 16 + + + + + +500 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + + +Normal +Reversed + + + + +Disabled +RCPassThru +Flap +Flap_auto +Aileron +mount_pan +mount_tilt +mount_roll +mount_open +camera_trigger +release +mount2_pan +mount2_tilt +mount2_roll +mount2_open +DifferentialSpoilerLeft1 +DifferentialSpoilerRight1 +Elevator +Rudder +FlaperonLeft +FlaperonRight +GroundSteering +Parachute +EPM +LandingGear +EngineRunEnable +HeliRSC +HeliTailRSC +Motor1 +Motor2 +Motor3 +Motor4 +Motor5 +Motor6 +Motor7 +Motor8 +MotorTilt +RCIN1 +RCIN2 +RCIN3 +RCIN4 +RCIN5 +RCIN6 +RCIN7 +RCIN8 +RCIN9 +RCIN10 +RCIN11 +RCIN12 +RCIN13 +RCIN14 +RCIN15 +RCIN16 +Ignition +Choke +Starter +Throttle +TrackerYaw +TrackerPitch +ThrottleLeft +ThrottleRight +tiltMotorLeft +tiltMotorRight +ElevonLeft +ElevonRight +VTailLeft +VTailRight +BoostThrottle +Motor9 +Motor10 +Motor11 +Motor12 +DifferentialSpoilerLeft2 +DifferentialSpoilerRight2 +Winch +Main Sail +Camera ISO +Camera Focus +Camera Shutter Speed +Script 1 +Script 2 +Script 3 +Script 4 +Script 5 +Script 6 +Script 7 +Script 8 +Script 9 +Script 10 +Script 11 +Script 12 +Script 13 +Script 14 +Script 15 +Script 16 + + + + + +500 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + + +Normal +Reversed + + + + +Disabled +RCPassThru +Flap +Flap_auto +Aileron +mount_pan +mount_tilt +mount_roll +mount_open +camera_trigger +release +mount2_pan +mount2_tilt +mount2_roll +mount2_open +DifferentialSpoilerLeft1 +DifferentialSpoilerRight1 +Elevator +Rudder +FlaperonLeft +FlaperonRight +GroundSteering +Parachute +EPM +LandingGear +EngineRunEnable +HeliRSC +HeliTailRSC +Motor1 +Motor2 +Motor3 +Motor4 +Motor5 +Motor6 +Motor7 +Motor8 +MotorTilt +RCIN1 +RCIN2 +RCIN3 +RCIN4 +RCIN5 +RCIN6 +RCIN7 +RCIN8 +RCIN9 +RCIN10 +RCIN11 +RCIN12 +RCIN13 +RCIN14 +RCIN15 +RCIN16 +Ignition +Choke +Starter +Throttle +TrackerYaw +TrackerPitch +ThrottleLeft +ThrottleRight +tiltMotorLeft +tiltMotorRight +ElevonLeft +ElevonRight +VTailLeft +VTailRight +BoostThrottle +Motor9 +Motor10 +Motor11 +Motor12 +DifferentialSpoilerLeft2 +DifferentialSpoilerRight2 +Winch +Main Sail +Camera ISO +Camera Focus +Camera Shutter Speed +Script 1 +Script 2 +Script 3 +Script 4 +Script 5 +Script 6 +Script 7 +Script 8 +Script 9 +Script 10 +Script 11 +Script 12 +Script 13 +Script 14 +Script 15 +Script 16 + + + + + +500 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + + +Normal +Reversed + + + + +Disabled +RCPassThru +Flap +Flap_auto +Aileron +mount_pan +mount_tilt +mount_roll +mount_open +camera_trigger +release +mount2_pan +mount2_tilt +mount2_roll +mount2_open +DifferentialSpoilerLeft1 +DifferentialSpoilerRight1 +Elevator +Rudder +FlaperonLeft +FlaperonRight +GroundSteering +Parachute +EPM +LandingGear +EngineRunEnable +HeliRSC +HeliTailRSC +Motor1 +Motor2 +Motor3 +Motor4 +Motor5 +Motor6 +Motor7 +Motor8 +MotorTilt +RCIN1 +RCIN2 +RCIN3 +RCIN4 +RCIN5 +RCIN6 +RCIN7 +RCIN8 +RCIN9 +RCIN10 +RCIN11 +RCIN12 +RCIN13 +RCIN14 +RCIN15 +RCIN16 +Ignition +Choke +Starter +Throttle +TrackerYaw +TrackerPitch +ThrottleLeft +ThrottleRight +tiltMotorLeft +tiltMotorRight +ElevonLeft +ElevonRight +VTailLeft +VTailRight +BoostThrottle +Motor9 +Motor10 +Motor11 +Motor12 +DifferentialSpoilerLeft2 +DifferentialSpoilerRight2 +Winch +Main Sail +Camera ISO +Camera Focus +Camera Shutter Speed +Script 1 +Script 2 +Script 3 +Script 4 +Script 5 +Script 6 +Script 7 +Script 8 +Script 9 +Script 10 +Script 11 +Script 12 +Script 13 +Script 14 +Script 15 +Script 16 + + + + + +500 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + + +Normal +Reversed + + + + +Disabled +RCPassThru +Flap +Flap_auto +Aileron +mount_pan +mount_tilt +mount_roll +mount_open +camera_trigger +release +mount2_pan +mount2_tilt +mount2_roll +mount2_open +DifferentialSpoilerLeft1 +DifferentialSpoilerRight1 +Elevator +Rudder +FlaperonLeft +FlaperonRight +GroundSteering +Parachute +EPM +LandingGear +EngineRunEnable +HeliRSC +HeliTailRSC +Motor1 +Motor2 +Motor3 +Motor4 +Motor5 +Motor6 +Motor7 +Motor8 +MotorTilt +RCIN1 +RCIN2 +RCIN3 +RCIN4 +RCIN5 +RCIN6 +RCIN7 +RCIN8 +RCIN9 +RCIN10 +RCIN11 +RCIN12 +RCIN13 +RCIN14 +RCIN15 +RCIN16 +Ignition +Choke +Starter +Throttle +TrackerYaw +TrackerPitch +ThrottleLeft +ThrottleRight +tiltMotorLeft +tiltMotorRight +ElevonLeft +ElevonRight +VTailLeft +VTailRight +BoostThrottle +Motor9 +Motor10 +Motor11 +Motor12 +DifferentialSpoilerLeft2 +DifferentialSpoilerRight2 +Winch +Main Sail +Camera ISO +Camera Focus +Camera Shutter Speed +Script 1 +Script 2 +Script 3 +Script 4 +Script 5 +Script 6 +Script 7 +Script 8 +Script 9 +Script 10 +Script 11 +Script 12 +Script 13 +Script 14 +Script 15 +Script 16 + + + + + +500 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + + +Normal +Reversed + + + + +Disabled +RCPassThru +Flap +Flap_auto +Aileron +mount_pan +mount_tilt +mount_roll +mount_open +camera_trigger +release +mount2_pan +mount2_tilt +mount2_roll +mount2_open +DifferentialSpoilerLeft1 +DifferentialSpoilerRight1 +Elevator +Rudder +FlaperonLeft +FlaperonRight +GroundSteering +Parachute +EPM +LandingGear +EngineRunEnable +HeliRSC +HeliTailRSC +Motor1 +Motor2 +Motor3 +Motor4 +Motor5 +Motor6 +Motor7 +Motor8 +MotorTilt +RCIN1 +RCIN2 +RCIN3 +RCIN4 +RCIN5 +RCIN6 +RCIN7 +RCIN8 +RCIN9 +RCIN10 +RCIN11 +RCIN12 +RCIN13 +RCIN14 +RCIN15 +RCIN16 +Ignition +Choke +Starter +Throttle +TrackerYaw +TrackerPitch +ThrottleLeft +ThrottleRight +tiltMotorLeft +tiltMotorRight +ElevonLeft +ElevonRight +VTailLeft +VTailRight +BoostThrottle +Motor9 +Motor10 +Motor11 +Motor12 +DifferentialSpoilerLeft2 +DifferentialSpoilerRight2 +Winch +Main Sail +Camera ISO +Camera Focus +Camera Shutter Speed +Script 1 +Script 2 +Script 3 +Script 4 +Script 5 +Script 6 +Script 7 +Script 8 +Script 9 +Script 10 +Script 11 +Script 12 +Script 13 +Script 14 +Script 15 +Script 16 + + + + + +500 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + + +Normal +Reversed + + + + +Disabled +RCPassThru +Flap +Flap_auto +Aileron +mount_pan +mount_tilt +mount_roll +mount_open +camera_trigger +release +mount2_pan +mount2_tilt +mount2_roll +mount2_open +DifferentialSpoilerLeft1 +DifferentialSpoilerRight1 +Elevator +Rudder +FlaperonLeft +FlaperonRight +GroundSteering +Parachute +EPM +LandingGear +EngineRunEnable +HeliRSC +HeliTailRSC +Motor1 +Motor2 +Motor3 +Motor4 +Motor5 +Motor6 +Motor7 +Motor8 +MotorTilt +RCIN1 +RCIN2 +RCIN3 +RCIN4 +RCIN5 +RCIN6 +RCIN7 +RCIN8 +RCIN9 +RCIN10 +RCIN11 +RCIN12 +RCIN13 +RCIN14 +RCIN15 +RCIN16 +Ignition +Choke +Starter +Throttle +TrackerYaw +TrackerPitch +ThrottleLeft +ThrottleRight +tiltMotorLeft +tiltMotorRight +ElevonLeft +ElevonRight +VTailLeft +VTailRight +BoostThrottle +Motor9 +Motor10 +Motor11 +Motor12 +DifferentialSpoilerLeft2 +DifferentialSpoilerRight2 +Winch +Main Sail +Camera ISO +Camera Focus +Camera Shutter Speed +Script 1 +Script 2 +Script 3 +Script 4 +Script 5 +Script 6 +Script 7 +Script 8 +Script 9 +Script 10 +Script 11 +Script 12 +Script 13 +Script 14 +Script 15 +Script 16 + + + + + +500 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + + +Normal +Reversed + + + + +Disabled +RCPassThru +Flap +Flap_auto +Aileron +mount_pan +mount_tilt +mount_roll +mount_open +camera_trigger +release +mount2_pan +mount2_tilt +mount2_roll +mount2_open +DifferentialSpoilerLeft1 +DifferentialSpoilerRight1 +Elevator +Rudder +FlaperonLeft +FlaperonRight +GroundSteering +Parachute +EPM +LandingGear +EngineRunEnable +HeliRSC +HeliTailRSC +Motor1 +Motor2 +Motor3 +Motor4 +Motor5 +Motor6 +Motor7 +Motor8 +MotorTilt +RCIN1 +RCIN2 +RCIN3 +RCIN4 +RCIN5 +RCIN6 +RCIN7 +RCIN8 +RCIN9 +RCIN10 +RCIN11 +RCIN12 +RCIN13 +RCIN14 +RCIN15 +RCIN16 +Ignition +Choke +Starter +Throttle +TrackerYaw +TrackerPitch +ThrottleLeft +ThrottleRight +tiltMotorLeft +tiltMotorRight +ElevonLeft +ElevonRight +VTailLeft +VTailRight +BoostThrottle +Motor9 +Motor10 +Motor11 +Motor12 +DifferentialSpoilerLeft2 +DifferentialSpoilerRight2 +Winch +Main Sail +Camera ISO +Camera Focus +Camera Shutter Speed +Script 1 +Script 2 +Script 3 +Script 4 +Script 5 +Script 6 +Script 7 +Script 8 +Script 9 +Script 10 +Script 11 +Script 12 +Script 13 +Script 14 +Script 15 +Script 16 + + + + + +500 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + + +Normal +Reversed + + + + +Disabled +RCPassThru +Flap +Flap_auto +Aileron +mount_pan +mount_tilt +mount_roll +mount_open +camera_trigger +release +mount2_pan +mount2_tilt +mount2_roll +mount2_open +DifferentialSpoilerLeft1 +DifferentialSpoilerRight1 +Elevator +Rudder +FlaperonLeft +FlaperonRight +GroundSteering +Parachute +EPM +LandingGear +EngineRunEnable +HeliRSC +HeliTailRSC +Motor1 +Motor2 +Motor3 +Motor4 +Motor5 +Motor6 +Motor7 +Motor8 +MotorTilt +RCIN1 +RCIN2 +RCIN3 +RCIN4 +RCIN5 +RCIN6 +RCIN7 +RCIN8 +RCIN9 +RCIN10 +RCIN11 +RCIN12 +RCIN13 +RCIN14 +RCIN15 +RCIN16 +Ignition +Choke +Starter +Throttle +TrackerYaw +TrackerPitch +ThrottleLeft +ThrottleRight +tiltMotorLeft +tiltMotorRight +ElevonLeft +ElevonRight +VTailLeft +VTailRight +BoostThrottle +Motor9 +Motor10 +Motor11 +Motor12 +DifferentialSpoilerLeft2 +DifferentialSpoilerRight2 +Winch +Main Sail +Camera ISO +Camera Focus +Camera Shutter Speed +Script 1 +Script 2 +Script 3 +Script 4 +Script 5 +Script 6 +Script 7 +Script 8 +Script 9 +Script 10 +Script 11 +Script 12 +Script 13 +Script 14 +Script 15 +Script 16 + + + + + +500 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + + +Normal +Reversed + + + + +Disabled +RCPassThru +Flap +Flap_auto +Aileron +mount_pan +mount_tilt +mount_roll +mount_open +camera_trigger +release +mount2_pan +mount2_tilt +mount2_roll +mount2_open +DifferentialSpoilerLeft1 +DifferentialSpoilerRight1 +Elevator +Rudder +FlaperonLeft +FlaperonRight +GroundSteering +Parachute +EPM +LandingGear +EngineRunEnable +HeliRSC +HeliTailRSC +Motor1 +Motor2 +Motor3 +Motor4 +Motor5 +Motor6 +Motor7 +Motor8 +MotorTilt +RCIN1 +RCIN2 +RCIN3 +RCIN4 +RCIN5 +RCIN6 +RCIN7 +RCIN8 +RCIN9 +RCIN10 +RCIN11 +RCIN12 +RCIN13 +RCIN14 +RCIN15 +RCIN16 +Ignition +Choke +Starter +Throttle +TrackerYaw +TrackerPitch +ThrottleLeft +ThrottleRight +tiltMotorLeft +tiltMotorRight +ElevonLeft +ElevonRight +VTailLeft +VTailRight +BoostThrottle +Motor9 +Motor10 +Motor11 +Motor12 +DifferentialSpoilerLeft2 +DifferentialSpoilerRight2 +Winch +Main Sail +Camera ISO +Camera Focus +Camera Shutter Speed +Script 1 +Script 2 +Script 3 +Script 4 +Script 5 +Script 6 +Script 7 +Script 8 +Script 9 +Script 10 +Script 11 +Script 12 +Script 13 +Script 14 +Script 15 +Script 16 + + + + + +500 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + + +Normal +Reversed + + + + +Disabled +RCPassThru +Flap +Flap_auto +Aileron +mount_pan +mount_tilt +mount_roll +mount_open +camera_trigger +release +mount2_pan +mount2_tilt +mount2_roll +mount2_open +DifferentialSpoilerLeft1 +DifferentialSpoilerRight1 +Elevator +Rudder +FlaperonLeft +FlaperonRight +GroundSteering +Parachute +EPM +LandingGear +EngineRunEnable +HeliRSC +HeliTailRSC +Motor1 +Motor2 +Motor3 +Motor4 +Motor5 +Motor6 +Motor7 +Motor8 +MotorTilt +RCIN1 +RCIN2 +RCIN3 +RCIN4 +RCIN5 +RCIN6 +RCIN7 +RCIN8 +RCIN9 +RCIN10 +RCIN11 +RCIN12 +RCIN13 +RCIN14 +RCIN15 +RCIN16 +Ignition +Choke +Starter +Throttle +TrackerYaw +TrackerPitch +ThrottleLeft +ThrottleRight +tiltMotorLeft +tiltMotorRight +ElevonLeft +ElevonRight +VTailLeft +VTailRight +BoostThrottle +Motor9 +Motor10 +Motor11 +Motor12 +DifferentialSpoilerLeft2 +DifferentialSpoilerRight2 +Winch +Main Sail +Camera ISO +Camera Focus +Camera Shutter Speed +Script 1 +Script 2 +Script 3 +Script 4 +Script 5 +Script 6 +Script 7 +Script 8 +Script 9 +Script 10 +Script 11 +Script 12 +Script 13 +Script 14 +Script 15 +Script 16 + + + + + +500 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + +800 2200 +1 +PWM +PWM in microseconds + + + +Normal +Reversed + + + + +Disabled +RCPassThru +Flap +Flap_auto +Aileron +mount_pan +mount_tilt +mount_roll +mount_open +camera_trigger +release +mount2_pan +mount2_tilt +mount2_roll +mount2_open +DifferentialSpoilerLeft1 +DifferentialSpoilerRight1 +Elevator +Rudder +FlaperonLeft +FlaperonRight +GroundSteering +Parachute +EPM +LandingGear +EngineRunEnable +HeliRSC +HeliTailRSC +Motor1 +Motor2 +Motor3 +Motor4 +Motor5 +Motor6 +Motor7 +Motor8 +MotorTilt +RCIN1 +RCIN2 +RCIN3 +RCIN4 +RCIN5 +RCIN6 +RCIN7 +RCIN8 +RCIN9 +RCIN10 +RCIN11 +RCIN12 +RCIN13 +RCIN14 +RCIN15 +RCIN16 +Ignition +Choke +Starter +Throttle +TrackerYaw +TrackerPitch +ThrottleLeft +ThrottleRight +tiltMotorLeft +tiltMotorRight +ElevonLeft +ElevonRight +VTailLeft +VTailRight +BoostThrottle +Motor9 +Motor10 +Motor11 +Motor12 +DifferentialSpoilerLeft2 +DifferentialSpoilerRight2 +Winch +Main Sail +Camera ISO +Camera Focus +Camera Shutter Speed +Script 1 +Script 2 +Script 3 +Script 4 +Script 5 +Script 6 +Script 7 +Script 8 +Script 9 +Script 10 +Script 11 +Script 12 +Script 13 +Script 14 +Script 15 +Script 16 + + + + + +0:Channel1,1:Channel2,2:Channel3,3:Channel4,4:Channel5,5:Channel6,6:Channel7,7:Channel8,8:Channel9,9:Channel10,10:Channel11,11:Channel12,12:Channel13,13:Channel14,14:Channel15,15:Channel16 + + + +Disabled +Enabled + + + + +Disabled +TestMotor1 +TestMotor2 +TestMotor3 +TestMotor4 +TestMotor5 +TestMotor6 +TestMotor7 +TestMotor8 + + + +0 300 +s +seconds + + +0 500 +Hz +hertz + + + +Disabled +Enabled + + + + +None +OneShot +OneShot125 +Brushed +DShot150 +DShot300 +DShot600 +DShot1200 + + + + +Console +Telem1 +Telem2 +Telem3 +Telem4 +Telem5 + + + +1 127 + + +0:Channel1,1:Channel2,2:Channel3,3:Channel4,4:Channel5,5:Channel6,6:Channel7,7:Channel8,8:Channel9,9:Channel10,10:Channel11,11:Channel12,12:Channel13,13:Channel14,14:Channel15,15:Channel16 + + + + +0 4095 + + +0 4095 + + + + +25 250 +Hz +hertz + + + + +0:Channel1,1:Channel2,2:Channel3,3:Channel4,4:Channel5,5:Channel6,6:Channel7,7:Channel8,8:Channel9,9:Channel10,10:Channel11,11:Channel12,12:Channel13,13:Channel14,14:Channel15,15:Channel16 + + + + +0 10 +1 +Hz +hertz + + +0 10 +1 +Hz +hertz + + +0 10 +1 +Hz +hertz + + +0 10 +1 +Hz +hertz + + +0 10 +1 +Hz +hertz + + +0 10 +1 +Hz +hertz + + +0 10 +1 +Hz +hertz + + +0 10 +1 +Hz +hertz + + + + +0 10 +1 +Hz +hertz + + +0 10 +1 +Hz +hertz + + +0 10 +1 +Hz +hertz + + +0 10 +1 +Hz +hertz + + +0 10 +1 +Hz +hertz + + +0 10 +1 +Hz +hertz + + +0 10 +1 +Hz +hertz + + +0 10 +1 +Hz +hertz + + + + +0 10 +1 +Hz +hertz + + +0 10 +1 +Hz +hertz + + +0 10 +1 +Hz +hertz + + +0 10 +1 +Hz +hertz + + +0 10 +1 +Hz +hertz + + +0 10 +1 +Hz +hertz + + +0 10 +1 +Hz +hertz + + +0 10 +1 +Hz +hertz + + + + +0 10 +1 +Hz +hertz + + +0 10 +1 +Hz +hertz + + +0 10 +1 +Hz +hertz + + +0 10 +1 +Hz +hertz + + +0 10 +1 +Hz +hertz + + +0 10 +1 +Hz +hertz + + +0 10 +1 +Hz +hertz + + +0 10 +1 +Hz +hertz + + + + + +Disable +Enable + + + +1 +m +meters + + + + +20 2000 +50 +cm/s +centimeters per second + + +10 1000 +1 +cm +centimeters + + +10 1000 +50 +cm/s +centimeters per second + + +10 500 +10 +cm/s +centimeters per second + + +50 500 +10 +cm/s/s +centimeters per square second + + +50 500 +10 +cm/s/s +centimeters per square second + + + +Disable +Enable + + + + diff --git a/src/FirmwarePlugin/APM/APMParameterFactMetaData.Sub.4.0.xml b/src/FirmwarePlugin/APM/APMParameterFactMetaData.Sub.4.0.xml new file mode 100644 index 0000000..62ae698 --- /dev/null +++ b/src/FirmwarePlugin/APM/APMParameterFactMetaData.Sub.4.0.xml @@ -0,0 +1,13283 @@ + + + + + + +cm +centimeters +-100 0 + + +True + + +1 255 + + + + +Hz +hertz +0 10 +.5 + + + +None +Roll +Pitch +Yaw + +0:Roll,1:Pitch,2:Yaw + + +0.01 2.0 +0.01 + + + +Disabled +Warn only +Disarm +Enter depth hold mode +Enter surface mode + + + + +Disabled +Warn only +Enter surface mode + + + + +Disabled +Warn only + + + + +Disabled +Warn only + + + +Pa +pascal + + +degC +degrees Celsius + + + +Disarm +Hold Position +Surface + + + + +Disabled +Warn Only +Disarm + + + +s +seconds +0.1 3.0 + + +10 90 + + + +Never change yaw +Face next waypoint +Face next waypoint except RTL +Face along GPS course +Correct crosstrack error + + + +cm/s +centimeters per second +50 500 +10 + + +cm/s +centimeters per second +50 500 +10 + + +cm/s/s +centimeters per square second +50 500 +10 + + +0 300 +PWM +PWM in microseconds +1 + + + +Default +Default+RCIN +Default+IMU +Default+Motors +NearlyAll-AC315 +NearlyAll +All+FastATT +All+MotBatt +All+FastIMU +All+FastIMU+PID +All+FullIMU +Disabled + +0:ATTITUDE_FAST,1:ATTITUDE_MED,2:GPS,3:PM,4:CTUN,5:NTUN,6:RCIN,7:IMU,8:CMD,9:CURRENT,10:RCOUT,11:OPTFLOW,12:PID,13:COMPASS,14:INAV,15:CAMERA,17:MOTBATT,18:IMU_FAST,19:IMU_RAW + + +cdeg +centidegrees +1000 8000 + + + +Disabled +Warn only +Disarm + + + +0.6:Strict, 0.8:Default, 1.0:Relaxed + + + +Disabled +Warn only +Disarm + + + +0.1 1.0 + + +0.2 1.0 + + +0.1 0.8 + + +1 10 + + +1 10 +PWM +PWM in microseconds + + +0.5 4.0 + + +True + +BlueROV1 +Vectored +Vectored_6DOF +Vectored_6DOF_90 +SimpleROV-3 +SimpleROV-4 +SimpleROV-5 +Custom + + + +Hz +hertz +50 490 +1 + + +1 10 + + +1 10 + + +0 3 +0.1 + + +0 3 +0.1 + + + +Disabled +Leveling +Leveling and Limited + + + + +Disabled +Very Low +Low +Medium +High +Very High + + + + +Do Not Use in RTL and SURFACE +Use in RTL and SURFACE + + + + + +0.0 1.0 +.01 + + + +Disabled +Enabled + + + +0.1 0.4 +.01 + + +0.1 0.4 +.01 + + +0 127 +m/s +meters per second +1 + + +rad +radians +-0.1745 +0.1745 +0.01 + + +rad +radians +-0.1745 +0.1745 +0.01 + + +rad +radians +-0.1745 +0.1745 +0.01 + + + +None +Yaw45 +Yaw90 +Yaw135 +Yaw180 +Yaw225 +Yaw270 +Yaw315 +Roll180 +Roll180Yaw45 +Roll180Yaw90 +Roll180Yaw135 +Pitch180 +Roll180Yaw225 +Roll180Yaw270 +Roll180Yaw315 +Roll90 +Roll90Yaw45 +Roll90Yaw90 +Roll90Yaw135 +Roll270 +Roll270Yaw45 +Roll270Yaw90 +Roll270Yaw135 +Pitch90 +Pitch270 +Pitch180Yaw90 +Pitch180Yaw270 +Roll90Pitch90 +Roll180Pitch90 +Roll270Pitch90 +Roll90Pitch180 +Roll270Pitch180 +Roll90Pitch270 +Roll180Pitch270 +Roll270Pitch270 +Roll90Pitch180Yaw90 +Roll90Yaw270 +Yaw293Pitch68Roll180 +Pitch315 +Roll90Pitch315 +Custom + + + +0.001 0.5 +.01 + + +0 10 +1 + + + +Disabled +Enable EKF2 +Enable EKF3 + + + +-180 180 +deg +degrees +1 + + +-180 180 +deg +degrees +1 + + +-180 180 +deg +degrees +1 + + + + + +Disabled +THR_MIN PWM when disarmed +0 PWM when disarmed + + + +m/s/s +meters per square second +0.25 3.0 + + + +Disabled +ArmingOnly +ArmOrDisarm + + + +0:Land,1:VTOL Land,2:DO_LAND_START,3:Takeoff,4:VTOL Takeoff,5:Rallypoint + + + +None +All +Barometer +Compass +GPS Lock +INS(INertial Sensors - accels & gyros) +Parameters(unused) +RC Channels +Board voltage +Battery Level +Airspeed +LoggingAvailable +Hardware safety switch +GPS configuration +System + +0:All,1:Barometer,2:Compass,3:GPS lock,4:INS,5:Parameters,6:RC Channels,7:Board voltage,8:Battery Level,9:Airspeed,10:Logging Available,11:Hardware safety switch,12:GPS Configuration,13:System,14:Mission,15:Rangefinder + + + + +cdeg/s +centidegrees per second +500 18000 +100 + + +cdeg/s/s +centidegrees per square second +0 72000 + +Disabled +VerySlow +Slow +Medium +Fast + +1000 + + + +Disabled +Enabled + + + +cdeg/s/s +centidegrees per square second +0 180000 +1000 + +Disabled +VerySlow +Slow +Medium +Fast + + + +cdeg/s/s +centidegrees per square second +0 180000 +1000 + +Disabled +VerySlow +Slow +Medium +Fast + + + + +Disabled +Enabled + + + +0.0 12.000 + + +0.0 12.000 + + +0.0 6.000 + + +0.5 10.0 + + +deg/s +degrees per second +0 1080 +1 + +Disabled +Slow +Medium +Fast + + + +deg/s +degrees per second +0 1080 +1 + +Disabled +Slow +Medium +Fast + + + +deg/s +degrees per second +0 1080 +1 + +Disabled +Slow +Medium +Fast + + + +s +seconds +0 1 +0.01 +0.5:Very Soft, 0.2:Soft, 0.15:Medium, 0.1:Crisp, 0.05:Very Crisp + + +0.0 0.30 +0.005 + + +0.0 0.5 +0.01 + + +0 1 +0.01 +% +percent + + +0.0 0.02 +0.001 + + +0 0.5 +0.001 + + +1 100 +1 +Hz +hertz + + +1 100 +1 +Hz +hertz + + +1 100 +1 +Hz +hertz + + +0.0 0.30 +0.005 + + +0.0 0.5 +0.01 + + +0 1 +0.01 +% +percent + + +0.0 0.02 +0.001 + + +0 0.5 +0.001 + + +1 100 +1 +Hz +hertz + + +1 100 +1 +Hz +hertz + + +1 100 +1 +Hz +hertz + + +0.0 0.50 +0.005 + + +0.0 0.05 +0.01 + + +0 1 +0.01 +% +percent + + +0.000 0.02 +0.001 + + +0 0.5 +0.001 + + +1 100 +1 +Hz +hertz + + +1 100 +1 +Hz +hertz + + +1 100 +1 +Hz +hertz + + +0.1 0.25 + + +0.5 0.9 + + +0.5 0.9 + + +1 100 +1 +Hz +hertz + + +1 100 +1 +Hz +hertz + + +1 100 +1 +Hz +hertz + + + + + +None +UseFence +UseProximitySensor +UseFence and UseProximitySensor +UseBeaconFence +All + +0:UseFence,1:UseProximitySensor,2:UseBeaconFence + + +cdeg +centidegrees +0 4500 + + +m +meters +1 30 + + +m +meters +1 10 + + + +Slide +Stop + + + + + + +Disabled +Analog Voltage Only +Analog Voltage and Current +Solo +Bebop +SMBus-Maxell +UAVCAN-BatteryInfo +BLHeli ESC +SumOfFollowing +FuelFlow +FuelLevelPWM + +True + + + +Disabled +Pixhawk/Pixracer/Navio2/Pixhawk2_PM1 +Pixhawk2_PM2 +CubeOrange +CubeOrange_PM2 +PX4-v1 + +True + + + +Disabled +Pixhawk/Pixracer/Navio2/Pixhawk2_PM1 +Pixhawk2_PM2 +CubeOrange +CubeOrange_PM2 +PX4-v1 + +True + + + + +A/V +ampere per volt + + +V +volt + + +mAh +milliampere hour +50 + + +W +watt +1 + + + + +s +seconds +1 +0 120 + + + +Raw Voltage +Sag Compensated Voltage + + + +V +volt +0.1 + + +mAh +milliampere hour +50 + + +V +volt +0.1 + + +mAh +milliampere hour +50 + + + +None +Disarm +Enter surface mode + + + + +None +Disarm +Enter surface mode + + + +V +volt +0.1 + + +mAh +milliampere hour +50 + + + + + +Disabled +Analog Voltage Only +Analog Voltage and Current +Solo +Bebop +SMBus-Maxell +UAVCAN-BatteryInfo +BLHeli ESC +SumOfFollowing +FuelFlow +FuelLevelPWM + +True + + + +Disabled +Pixhawk/Pixracer/Navio2/Pixhawk2_PM1 +Pixhawk2_PM2 +CubeOrange +CubeOrange_PM2 +PX4-v1 + +True + + + +Disabled +Pixhawk/Pixracer/Navio2/Pixhawk2_PM1 +Pixhawk2_PM2 +CubeOrange +CubeOrange_PM2 +PX4-v1 + +True + + + + +A/V +ampere per volt + + +V +volt + + +mAh +milliampere hour +50 + + +W +watt +1 + + + + +s +seconds +1 +0 120 + + + +Raw Voltage +Sag Compensated Voltage + + + +V +volt +0.1 + + +mAh +milliampere hour +50 + + +V +volt +0.1 + + +mAh +milliampere hour +50 + + + +None +Disarm +Enter surface mode + + + + +None +Disarm +Enter surface mode + + + +V +volt +0.1 + + +mAh +milliampere hour +50 + + + + + +Disabled +Analog Voltage Only +Analog Voltage and Current +Solo +Bebop +SMBus-Maxell +UAVCAN-BatteryInfo +BLHeli ESC +SumOfFollowing +FuelFlow +FuelLevelPWM + +True + + + +Disabled +Pixhawk/Pixracer/Navio2/Pixhawk2_PM1 +Pixhawk2_PM2 +CubeOrange +CubeOrange_PM2 +PX4-v1 + +True + + + +Disabled +Pixhawk/Pixracer/Navio2/Pixhawk2_PM1 +Pixhawk2_PM2 +CubeOrange +CubeOrange_PM2 +PX4-v1 + +True + + + + +A/V +ampere per volt + + +V +volt + + +mAh +milliampere hour +50 + + +W +watt +1 + + + + +s +seconds +1 +0 120 + + + +Raw Voltage +Sag Compensated Voltage + + + +V +volt +0.1 + + +mAh +milliampere hour +50 + + +V +volt +0.1 + + +mAh +milliampere hour +50 + + + +None +Disarm +Enter surface mode + + + + +None +Disarm +Enter surface mode + + + +V +volt +0.1 + + +mAh +milliampere hour +50 + + + + + +Disabled +Analog Voltage Only +Analog Voltage and Current +Solo +Bebop +SMBus-Maxell +UAVCAN-BatteryInfo +BLHeli ESC +SumOfFollowing +FuelFlow +FuelLevelPWM + +True + + + +Disabled +Pixhawk/Pixracer/Navio2/Pixhawk2_PM1 +Pixhawk2_PM2 +CubeOrange +CubeOrange_PM2 +PX4-v1 + +True + + + +Disabled +Pixhawk/Pixracer/Navio2/Pixhawk2_PM1 +Pixhawk2_PM2 +CubeOrange +CubeOrange_PM2 +PX4-v1 + +True + + + + +A/V +ampere per volt + + +V +volt + + +mAh +milliampere hour +50 + + +W +watt +1 + + + + +s +seconds +1 +0 120 + + + +Raw Voltage +Sag Compensated Voltage + + + +V +volt +0.1 + + +mAh +milliampere hour +50 + + +V +volt +0.1 + + +mAh +milliampere hour +50 + + + +None +Disarm +Enter surface mode + + + + +None +Disarm +Enter surface mode + + + +V +volt +0.1 + + +mAh +milliampere hour +50 + + + + + +Disabled +Analog Voltage Only +Analog Voltage and Current +Solo +Bebop +SMBus-Maxell +UAVCAN-BatteryInfo +BLHeli ESC +SumOfFollowing +FuelFlow +FuelLevelPWM + +True + + + +Disabled +Pixhawk/Pixracer/Navio2/Pixhawk2_PM1 +Pixhawk2_PM2 +CubeOrange +CubeOrange_PM2 +PX4-v1 + +True + + + +Disabled +Pixhawk/Pixracer/Navio2/Pixhawk2_PM1 +Pixhawk2_PM2 +CubeOrange +CubeOrange_PM2 +PX4-v1 + +True + + + + +A/V +ampere per volt + + +V +volt + + +mAh +milliampere hour +50 + + +W +watt +1 + + + + +s +seconds +1 +0 120 + + + +Raw Voltage +Sag Compensated Voltage + + + +V +volt +0.1 + + +mAh +milliampere hour +50 + + +V +volt +0.1 + + +mAh +milliampere hour +50 + + + +None +Disarm +Enter surface mode + + + + +None +Disarm +Enter surface mode + + + +V +volt +0.1 + + +mAh +milliampere hour +50 + + + + + +Disabled +Analog Voltage Only +Analog Voltage and Current +Solo +Bebop +SMBus-Maxell +UAVCAN-BatteryInfo +BLHeli ESC +SumOfFollowing +FuelFlow +FuelLevelPWM + +True + + + +Disabled +Pixhawk/Pixracer/Navio2/Pixhawk2_PM1 +Pixhawk2_PM2 +CubeOrange +CubeOrange_PM2 +PX4-v1 + +True + + + +Disabled +Pixhawk/Pixracer/Navio2/Pixhawk2_PM1 +Pixhawk2_PM2 +CubeOrange +CubeOrange_PM2 +PX4-v1 + +True + + + + +A/V +ampere per volt + + +V +volt + + +mAh +milliampere hour +50 + + +W +watt +1 + + + + +s +seconds +1 +0 120 + + + +Raw Voltage +Sag Compensated Voltage + + + +V +volt +0.1 + + +mAh +milliampere hour +50 + + +V +volt +0.1 + + +mAh +milliampere hour +50 + + + +None +Disarm +Enter surface mode + + + + +None +Disarm +Enter surface mode + + + +V +volt +0.1 + + +mAh +milliampere hour +50 + + + + + +Disabled +Analog Voltage Only +Analog Voltage and Current +Solo +Bebop +SMBus-Maxell +UAVCAN-BatteryInfo +BLHeli ESC +SumOfFollowing +FuelFlow +FuelLevelPWM + +True + + + +Disabled +Pixhawk/Pixracer/Navio2/Pixhawk2_PM1 +Pixhawk2_PM2 +CubeOrange +CubeOrange_PM2 +PX4-v1 + +True + + + +Disabled +Pixhawk/Pixracer/Navio2/Pixhawk2_PM1 +Pixhawk2_PM2 +CubeOrange +CubeOrange_PM2 +PX4-v1 + +True + + + + +A/V +ampere per volt + + +V +volt + + +mAh +milliampere hour +50 + + +W +watt +1 + + + + +s +seconds +1 +0 120 + + + +Raw Voltage +Sag Compensated Voltage + + + +V +volt +0.1 + + +mAh +milliampere hour +50 + + +V +volt +0.1 + + +mAh +milliampere hour +50 + + + +None +Disarm +Enter surface mode + + + + +None +Disarm +Enter surface mode + + + +V +volt +0.1 + + +mAh +milliampere hour +50 + + + + + +Disabled +Analog Voltage Only +Analog Voltage and Current +Solo +Bebop +SMBus-Maxell +UAVCAN-BatteryInfo +BLHeli ESC +SumOfFollowing +FuelFlow +FuelLevelPWM + +True + + + +Disabled +Pixhawk/Pixracer/Navio2/Pixhawk2_PM1 +Pixhawk2_PM2 +CubeOrange +CubeOrange_PM2 +PX4-v1 + +True + + + +Disabled +Pixhawk/Pixracer/Navio2/Pixhawk2_PM1 +Pixhawk2_PM2 +CubeOrange +CubeOrange_PM2 +PX4-v1 + +True + + + + +A/V +ampere per volt + + +V +volt + + +mAh +milliampere hour +50 + + +W +watt +1 + + + + +s +seconds +1 +0 120 + + + +Raw Voltage +Sag Compensated Voltage + + + +V +volt +0.1 + + +mAh +milliampere hour +50 + + +V +volt +0.1 + + +mAh +milliampere hour +50 + + + +None +Disarm +Enter surface mode + + + + +None +Disarm +Enter surface mode + + + +V +volt +0.1 + + +mAh +milliampere hour +50 + + + + + +Disabled +Analog Voltage Only +Analog Voltage and Current +Solo +Bebop +SMBus-Maxell +UAVCAN-BatteryInfo +BLHeli ESC +SumOfFollowing +FuelFlow +FuelLevelPWM + +True + + + +Disabled +Pixhawk/Pixracer/Navio2/Pixhawk2_PM1 +Pixhawk2_PM2 +CubeOrange +CubeOrange_PM2 +PX4-v1 + +True + + + +Disabled +Pixhawk/Pixracer/Navio2/Pixhawk2_PM1 +Pixhawk2_PM2 +CubeOrange +CubeOrange_PM2 +PX4-v1 + +True + + + + +A/V +ampere per volt + + +V +volt + + +mAh +milliampere hour +50 + + +W +watt +1 + + + + +s +seconds +1 +0 120 + + + +Raw Voltage +Sag Compensated Voltage + + + +V +volt +0.1 + + +mAh +milliampere hour +50 + + +V +volt +0.1 + + +mAh +milliampere hour +50 + + + +None +Disarm +Enter surface mode + + + + +None +Disarm +Enter surface mode + + + +V +volt +0.1 + + +mAh +milliampere hour +50 + + + + + +No PWMs +One PWMs +Two PWMs +Three PWMs +Four PWMs +Five PWMs +Six PWMs +Seven PWMs +Eight PWMs + +True + + + +Disabled +Enabled +Auto + +True + + + +Disabled +Enabled +Auto + +True + + + +Disabled +Enabled + +True + + + +Disabled +50Hz +75Hz +100Hz +150Hz +200Hz +250Hz +300Hz + +True + + +-32768 32767 + + + +Disabled +Enabled + +0:Ch1,1:Ch2,2:Ch3,3:Ch4,4:Ch5,5:Ch6,6:Ch7,7:Ch8,8:Ch9,9:Ch10,10:Ch11,11:Ch12,12:Ch13,13:Ch14 +True + + +-1 80 +degC +degrees Celsius + + + +AUTO +PX4V1 +Pixhawk +Cube/Pixhawk2 +Pixracer +PixhawkMini +Pixhawk2Slim +VRBrain 5.1 +VRBrain 5.2 +VR Micro Brain 5.1 +VR Micro Brain 5.2 +VRBrain Core 1.0 +VRBrain 5.4 +Intel Aero FC +AUAV2.1 + +True + + + +Disabled +Enabled + +True + + +0:ActiveForSafetyEnable,1:ActiveForSafetyDisable,2:ActiveWhenArmed,3:Force safety on when the aircraft disarms + + +V +volt +4.0 5.5 +0.1 + + +V +volt +3.3 12.0 +0.1 + + +0 32 +1 + + + +3.3V +5V + + + +0:Enable hardware watchdog + + +0 10000 +ms +milliseconds + + + + + +None +CYRF6936 +CC2500 +BK2425 + + + + +Auto +DSM2 +DSMX + + + +0 4 + + + +NotDisabled +Disabled + + + +0 16 + + +0 16 + + + +Disabled +Enabled + + + +1 8 + + + +Disabled +MinChannel +MidChannel +MaxChannel +MinChannelCW +MidChannelCW +MaxChannelCW + + + + +Mode1 +Mode2 + + + + +Disabled +TestChan1 +TestChan2 +TestChan3 +TestChan4 +TestChan5 +TestChan6 +TestChan7 +TestChan8 + + + +0 16 + + +0 16 + + +1 8 + + +0 40 + + +0 120 + + +0 31 + + + + +0:GPS,1:MAVLINK_SYSTEM_TIME,2:HW + + + + + +Disabled +shift +arm_toggle +arm +disarm +mode_manual +mode_stabilize +mode_depth_hold +mode_poshold +mode_auto +mode_circle +mode_guided +mode_acro +mount_center +mount_tilt_up +mount_tilt_down +camera_trigger +camera_source_toggle +mount_pan_right +mount_pan_left +lights1_cycle +lights1_brighter +lights1_dimmer +lights2_cycle +lights2_brighter +lights2_dimmer +gain_toggle +gain_inc +gain_dec +trim_roll_inc +trim_roll_dec +trim_pitch_inc +trim_pitch_dec +input_hold_set +roll_pitch_toggle +relay_1_on +relay_1_off +relay_1_toggle +relay_2_on +relay_2_off +relay_2_toggle +relay_3_on +relay_3_off +relay_3_toggle +servo_1_inc +servo_1_dec +servo_1_min +servo_1_max +servo_1_center +servo_2_inc +servo_2_dec +servo_2_min +servo_2_max +servo_2_center +servo_3_inc +servo_3_dec +servo_3_min +servo_3_max +servo_3_center +servo_1_min_momentary +servo_1_max_momentary +servo_1_min_toggle +servo_1_max_toggle +servo_2_min_momentary +servo_2_max_momentary +servo_2_min_toggle +servo_2_max_toggle +servo_3_min_momentary +servo_3_max_momentary +servo_3_min_toggle +servo_3_max_toggle +custom_1 +custom_2 +custom_3 +custom_4 +custom_5 +custom_6 +relay_4_on +relay_4_off +relay_4_toggle +relay_1_momentary +relay_2_momentary +relay_3_momentary +relay_4_momentary + + + + +Disabled +shift +arm_toggle +arm +disarm +mode_manual +mode_stabilize +mode_depth_hold +mode_poshold +mode_auto +mode_circle +mode_guided +mode_acro +mount_center +mount_tilt_up +mount_tilt_down +camera_trigger +camera_source_toggle +mount_pan_right +mount_pan_left +lights1_cycle +lights1_brighter +lights1_dimmer +lights2_cycle +lights2_brighter +lights2_dimmer +gain_toggle +gain_inc +gain_dec +trim_roll_inc +trim_roll_dec +trim_pitch_inc +trim_pitch_dec +input_hold_set +roll_pitch_toggle +relay_1_on +relay_1_off +relay_1_toggle +relay_2_on +relay_2_off +relay_2_toggle +relay_3_on +relay_3_off +relay_3_toggle +servo_1_inc +servo_1_dec +servo_1_min +servo_1_max +servo_1_center +servo_2_inc +servo_2_dec +servo_2_min +servo_2_max +servo_2_center +servo_3_inc +servo_3_dec +servo_3_min +servo_3_max +servo_3_center +servo_1_min_momentary +servo_1_max_momentary +servo_1_min_toggle +servo_1_max_toggle +servo_2_min_momentary +servo_2_max_momentary +servo_2_min_toggle +servo_2_max_toggle +servo_3_min_momentary +servo_3_max_momentary +servo_3_min_toggle +servo_3_max_toggle +custom_1 +custom_2 +custom_3 +custom_4 +custom_5 +custom_6 +relay_4_on +relay_4_off +relay_4_toggle +relay_1_momentary +relay_2_momentary +relay_3_momentary +relay_4_momentary + + + + + + +Disabled +shift +arm_toggle +arm +disarm +mode_manual +mode_stabilize +mode_depth_hold +mode_poshold +mode_auto +mode_circle +mode_guided +mode_acro +mount_center +mount_tilt_up +mount_tilt_down +camera_trigger +camera_source_toggle +mount_pan_right +mount_pan_left +lights1_cycle +lights1_brighter +lights1_dimmer +lights2_cycle +lights2_brighter +lights2_dimmer +gain_toggle +gain_inc +gain_dec +trim_roll_inc +trim_roll_dec +trim_pitch_inc +trim_pitch_dec +input_hold_set +roll_pitch_toggle +relay_1_on +relay_1_off +relay_1_toggle +relay_2_on +relay_2_off +relay_2_toggle +relay_3_on +relay_3_off +relay_3_toggle +servo_1_inc +servo_1_dec +servo_1_min +servo_1_max +servo_1_center +servo_2_inc +servo_2_dec +servo_2_min +servo_2_max +servo_2_center +servo_3_inc +servo_3_dec +servo_3_min +servo_3_max +servo_3_center +servo_1_min_momentary +servo_1_max_momentary +servo_1_min_toggle +servo_1_max_toggle +servo_2_min_momentary +servo_2_max_momentary +servo_2_min_toggle +servo_2_max_toggle +servo_3_min_momentary +servo_3_max_momentary +servo_3_min_toggle +servo_3_max_toggle +custom_1 +custom_2 +custom_3 +custom_4 +custom_5 +custom_6 +relay_4_on +relay_4_off +relay_4_toggle +relay_1_momentary +relay_2_momentary +relay_3_momentary +relay_4_momentary + + + + +Disabled +shift +arm_toggle +arm +disarm +mode_manual +mode_stabilize +mode_depth_hold +mode_poshold +mode_auto +mode_circle +mode_guided +mode_acro +mount_center +mount_tilt_up +mount_tilt_down +camera_trigger +camera_source_toggle +mount_pan_right +mount_pan_left +lights1_cycle +lights1_brighter +lights1_dimmer +lights2_cycle +lights2_brighter +lights2_dimmer +gain_toggle +gain_inc +gain_dec +trim_roll_inc +trim_roll_dec +trim_pitch_inc +trim_pitch_dec +input_hold_set +roll_pitch_toggle +relay_1_on +relay_1_off +relay_1_toggle +relay_2_on +relay_2_off +relay_2_toggle +relay_3_on +relay_3_off +relay_3_toggle +servo_1_inc +servo_1_dec +servo_1_min +servo_1_max +servo_1_center +servo_2_inc +servo_2_dec +servo_2_min +servo_2_max +servo_2_center +servo_3_inc +servo_3_dec +servo_3_min +servo_3_max +servo_3_center +servo_1_min_momentary +servo_1_max_momentary +servo_1_min_toggle +servo_1_max_toggle +servo_2_min_momentary +servo_2_max_momentary +servo_2_min_toggle +servo_2_max_toggle +servo_3_min_momentary +servo_3_max_momentary +servo_3_min_toggle +servo_3_max_toggle +custom_1 +custom_2 +custom_3 +custom_4 +custom_5 +custom_6 +relay_4_on +relay_4_off +relay_4_toggle +relay_1_momentary +relay_2_momentary +relay_3_momentary +relay_4_momentary + + + + + + +Disabled +shift +arm_toggle +arm +disarm +mode_manual +mode_stabilize +mode_depth_hold +mode_poshold +mode_auto +mode_circle +mode_guided +mode_acro +mount_center +mount_tilt_up +mount_tilt_down +camera_trigger +camera_source_toggle +mount_pan_right +mount_pan_left +lights1_cycle +lights1_brighter +lights1_dimmer +lights2_cycle +lights2_brighter +lights2_dimmer +gain_toggle +gain_inc +gain_dec +trim_roll_inc +trim_roll_dec +trim_pitch_inc +trim_pitch_dec +input_hold_set +roll_pitch_toggle +relay_1_on +relay_1_off +relay_1_toggle +relay_2_on +relay_2_off +relay_2_toggle +relay_3_on +relay_3_off +relay_3_toggle +servo_1_inc +servo_1_dec +servo_1_min +servo_1_max +servo_1_center +servo_2_inc +servo_2_dec +servo_2_min +servo_2_max +servo_2_center +servo_3_inc +servo_3_dec +servo_3_min +servo_3_max +servo_3_center +servo_1_min_momentary +servo_1_max_momentary +servo_1_min_toggle +servo_1_max_toggle +servo_2_min_momentary +servo_2_max_momentary +servo_2_min_toggle +servo_2_max_toggle +servo_3_min_momentary +servo_3_max_momentary +servo_3_min_toggle +servo_3_max_toggle +custom_1 +custom_2 +custom_3 +custom_4 +custom_5 +custom_6 +relay_4_on +relay_4_off +relay_4_toggle +relay_1_momentary +relay_2_momentary +relay_3_momentary +relay_4_momentary + + + + +Disabled +shift +arm_toggle +arm +disarm +mode_manual +mode_stabilize +mode_depth_hold +mode_poshold +mode_auto +mode_circle +mode_guided +mode_acro +mount_center +mount_tilt_up +mount_tilt_down +camera_trigger +camera_source_toggle +mount_pan_right +mount_pan_left +lights1_cycle +lights1_brighter +lights1_dimmer +lights2_cycle +lights2_brighter +lights2_dimmer +gain_toggle +gain_inc +gain_dec +trim_roll_inc +trim_roll_dec +trim_pitch_inc +trim_pitch_dec +input_hold_set +roll_pitch_toggle +relay_1_on +relay_1_off +relay_1_toggle +relay_2_on +relay_2_off +relay_2_toggle +relay_3_on +relay_3_off +relay_3_toggle +servo_1_inc +servo_1_dec +servo_1_min +servo_1_max +servo_1_center +servo_2_inc +servo_2_dec +servo_2_min +servo_2_max +servo_2_center +servo_3_inc +servo_3_dec +servo_3_min +servo_3_max +servo_3_center +servo_1_min_momentary +servo_1_max_momentary +servo_1_min_toggle +servo_1_max_toggle +servo_2_min_momentary +servo_2_max_momentary +servo_2_min_toggle +servo_2_max_toggle +servo_3_min_momentary +servo_3_max_momentary +servo_3_min_toggle +servo_3_max_toggle +custom_1 +custom_2 +custom_3 +custom_4 +custom_5 +custom_6 +relay_4_on +relay_4_off +relay_4_toggle +relay_1_momentary +relay_2_momentary +relay_3_momentary +relay_4_momentary + + + + + + +Disabled +shift +arm_toggle +arm +disarm +mode_manual +mode_stabilize +mode_depth_hold +mode_poshold +mode_auto +mode_circle +mode_guided +mode_acro +mount_center +mount_tilt_up +mount_tilt_down +camera_trigger +camera_source_toggle +mount_pan_right +mount_pan_left +lights1_cycle +lights1_brighter +lights1_dimmer +lights2_cycle +lights2_brighter +lights2_dimmer +gain_toggle +gain_inc +gain_dec +trim_roll_inc +trim_roll_dec +trim_pitch_inc +trim_pitch_dec +input_hold_set +roll_pitch_toggle +relay_1_on +relay_1_off +relay_1_toggle +relay_2_on +relay_2_off +relay_2_toggle +relay_3_on +relay_3_off +relay_3_toggle +servo_1_inc +servo_1_dec +servo_1_min +servo_1_max +servo_1_center +servo_2_inc +servo_2_dec +servo_2_min +servo_2_max +servo_2_center +servo_3_inc +servo_3_dec +servo_3_min +servo_3_max +servo_3_center +servo_1_min_momentary +servo_1_max_momentary +servo_1_min_toggle +servo_1_max_toggle +servo_2_min_momentary +servo_2_max_momentary +servo_2_min_toggle +servo_2_max_toggle +servo_3_min_momentary +servo_3_max_momentary +servo_3_min_toggle +servo_3_max_toggle +custom_1 +custom_2 +custom_3 +custom_4 +custom_5 +custom_6 +relay_4_on +relay_4_off +relay_4_toggle +relay_1_momentary +relay_2_momentary +relay_3_momentary +relay_4_momentary + + + + +Disabled +shift +arm_toggle +arm +disarm +mode_manual +mode_stabilize +mode_depth_hold +mode_poshold +mode_auto +mode_circle +mode_guided +mode_acro +mount_center +mount_tilt_up +mount_tilt_down +camera_trigger +camera_source_toggle +mount_pan_right +mount_pan_left +lights1_cycle +lights1_brighter +lights1_dimmer +lights2_cycle +lights2_brighter +lights2_dimmer +gain_toggle +gain_inc +gain_dec +trim_roll_inc +trim_roll_dec +trim_pitch_inc +trim_pitch_dec +input_hold_set +roll_pitch_toggle +relay_1_on +relay_1_off +relay_1_toggle +relay_2_on +relay_2_off +relay_2_toggle +relay_3_on +relay_3_off +relay_3_toggle +servo_1_inc +servo_1_dec +servo_1_min +servo_1_max +servo_1_center +servo_2_inc +servo_2_dec +servo_2_min +servo_2_max +servo_2_center +servo_3_inc +servo_3_dec +servo_3_min +servo_3_max +servo_3_center +servo_1_min_momentary +servo_1_max_momentary +servo_1_min_toggle +servo_1_max_toggle +servo_2_min_momentary +servo_2_max_momentary +servo_2_min_toggle +servo_2_max_toggle +servo_3_min_momentary +servo_3_max_momentary +servo_3_min_toggle +servo_3_max_toggle +custom_1 +custom_2 +custom_3 +custom_4 +custom_5 +custom_6 +relay_4_on +relay_4_off +relay_4_toggle +relay_1_momentary +relay_2_momentary +relay_3_momentary +relay_4_momentary + + + + + + +Disabled +shift +arm_toggle +arm +disarm +mode_manual +mode_stabilize +mode_depth_hold +mode_poshold +mode_auto +mode_circle +mode_guided +mode_acro +mount_center +mount_tilt_up +mount_tilt_down +camera_trigger +camera_source_toggle +mount_pan_right +mount_pan_left +lights1_cycle +lights1_brighter +lights1_dimmer +lights2_cycle +lights2_brighter +lights2_dimmer +gain_toggle +gain_inc +gain_dec +trim_roll_inc +trim_roll_dec +trim_pitch_inc +trim_pitch_dec +input_hold_set +roll_pitch_toggle +relay_1_on +relay_1_off +relay_1_toggle +relay_2_on +relay_2_off +relay_2_toggle +relay_3_on +relay_3_off +relay_3_toggle +servo_1_inc +servo_1_dec +servo_1_min +servo_1_max +servo_1_center +servo_2_inc +servo_2_dec +servo_2_min +servo_2_max +servo_2_center +servo_3_inc +servo_3_dec +servo_3_min +servo_3_max +servo_3_center +servo_1_min_momentary +servo_1_max_momentary +servo_1_min_toggle +servo_1_max_toggle +servo_2_min_momentary +servo_2_max_momentary +servo_2_min_toggle +servo_2_max_toggle +servo_3_min_momentary +servo_3_max_momentary +servo_3_min_toggle +servo_3_max_toggle +custom_1 +custom_2 +custom_3 +custom_4 +custom_5 +custom_6 +relay_4_on +relay_4_off +relay_4_toggle +relay_1_momentary +relay_2_momentary +relay_3_momentary +relay_4_momentary + + + + +Disabled +shift +arm_toggle +arm +disarm +mode_manual +mode_stabilize +mode_depth_hold +mode_poshold +mode_auto +mode_circle +mode_guided +mode_acro +mount_center +mount_tilt_up +mount_tilt_down +camera_trigger +camera_source_toggle +mount_pan_right +mount_pan_left +lights1_cycle +lights1_brighter +lights1_dimmer +lights2_cycle +lights2_brighter +lights2_dimmer +gain_toggle +gain_inc +gain_dec +trim_roll_inc +trim_roll_dec +trim_pitch_inc +trim_pitch_dec +input_hold_set +roll_pitch_toggle +relay_1_on +relay_1_off +relay_1_toggle +relay_2_on +relay_2_off +relay_2_toggle +relay_3_on +relay_3_off +relay_3_toggle +servo_1_inc +servo_1_dec +servo_1_min +servo_1_max +servo_1_center +servo_2_inc +servo_2_dec +servo_2_min +servo_2_max +servo_2_center +servo_3_inc +servo_3_dec +servo_3_min +servo_3_max +servo_3_center +servo_1_min_momentary +servo_1_max_momentary +servo_1_min_toggle +servo_1_max_toggle +servo_2_min_momentary +servo_2_max_momentary +servo_2_min_toggle +servo_2_max_toggle +servo_3_min_momentary +servo_3_max_momentary +servo_3_min_toggle +servo_3_max_toggle +custom_1 +custom_2 +custom_3 +custom_4 +custom_5 +custom_6 +relay_4_on +relay_4_off +relay_4_toggle +relay_1_momentary +relay_2_momentary +relay_3_momentary +relay_4_momentary + + + + + + +Disabled +shift +arm_toggle +arm +disarm +mode_manual +mode_stabilize +mode_depth_hold +mode_poshold +mode_auto +mode_circle +mode_guided +mode_acro +mount_center +mount_tilt_up +mount_tilt_down +camera_trigger +camera_source_toggle +mount_pan_right +mount_pan_left +lights1_cycle +lights1_brighter +lights1_dimmer +lights2_cycle +lights2_brighter +lights2_dimmer +gain_toggle +gain_inc +gain_dec +trim_roll_inc +trim_roll_dec +trim_pitch_inc +trim_pitch_dec +input_hold_set +roll_pitch_toggle +relay_1_on +relay_1_off +relay_1_toggle +relay_2_on +relay_2_off +relay_2_toggle +relay_3_on +relay_3_off +relay_3_toggle +servo_1_inc +servo_1_dec +servo_1_min +servo_1_max +servo_1_center +servo_2_inc +servo_2_dec +servo_2_min +servo_2_max +servo_2_center +servo_3_inc +servo_3_dec +servo_3_min +servo_3_max +servo_3_center +servo_1_min_momentary +servo_1_max_momentary +servo_1_min_toggle +servo_1_max_toggle +servo_2_min_momentary +servo_2_max_momentary +servo_2_min_toggle +servo_2_max_toggle +servo_3_min_momentary +servo_3_max_momentary +servo_3_min_toggle +servo_3_max_toggle +custom_1 +custom_2 +custom_3 +custom_4 +custom_5 +custom_6 +relay_4_on +relay_4_off +relay_4_toggle +relay_1_momentary +relay_2_momentary +relay_3_momentary +relay_4_momentary + + + + +Disabled +shift +arm_toggle +arm +disarm +mode_manual +mode_stabilize +mode_depth_hold +mode_poshold +mode_auto +mode_circle +mode_guided +mode_acro +mount_center +mount_tilt_up +mount_tilt_down +camera_trigger +camera_source_toggle +mount_pan_right +mount_pan_left +lights1_cycle +lights1_brighter +lights1_dimmer +lights2_cycle +lights2_brighter +lights2_dimmer +gain_toggle +gain_inc +gain_dec +trim_roll_inc +trim_roll_dec +trim_pitch_inc +trim_pitch_dec +input_hold_set +roll_pitch_toggle +relay_1_on +relay_1_off +relay_1_toggle +relay_2_on +relay_2_off +relay_2_toggle +relay_3_on +relay_3_off +relay_3_toggle +servo_1_inc +servo_1_dec +servo_1_min +servo_1_max +servo_1_center +servo_2_inc +servo_2_dec +servo_2_min +servo_2_max +servo_2_center +servo_3_inc +servo_3_dec +servo_3_min +servo_3_max +servo_3_center +servo_1_min_momentary +servo_1_max_momentary +servo_1_min_toggle +servo_1_max_toggle +servo_2_min_momentary +servo_2_max_momentary +servo_2_min_toggle +servo_2_max_toggle +servo_3_min_momentary +servo_3_max_momentary +servo_3_min_toggle +servo_3_max_toggle +custom_1 +custom_2 +custom_3 +custom_4 +custom_5 +custom_6 +relay_4_on +relay_4_off +relay_4_toggle +relay_1_momentary +relay_2_momentary +relay_3_momentary +relay_4_momentary + + + + + + +Disabled +shift +arm_toggle +arm +disarm +mode_manual +mode_stabilize +mode_depth_hold +mode_poshold +mode_auto +mode_circle +mode_guided +mode_acro +mount_center +mount_tilt_up +mount_tilt_down +camera_trigger +camera_source_toggle +mount_pan_right +mount_pan_left +lights1_cycle +lights1_brighter +lights1_dimmer +lights2_cycle +lights2_brighter +lights2_dimmer +gain_toggle +gain_inc +gain_dec +trim_roll_inc +trim_roll_dec +trim_pitch_inc +trim_pitch_dec +input_hold_set +roll_pitch_toggle +relay_1_on +relay_1_off +relay_1_toggle +relay_2_on +relay_2_off +relay_2_toggle +relay_3_on +relay_3_off +relay_3_toggle +servo_1_inc +servo_1_dec +servo_1_min +servo_1_max +servo_1_center +servo_2_inc +servo_2_dec +servo_2_min +servo_2_max +servo_2_center +servo_3_inc +servo_3_dec +servo_3_min +servo_3_max +servo_3_center +servo_1_min_momentary +servo_1_max_momentary +servo_1_min_toggle +servo_1_max_toggle +servo_2_min_momentary +servo_2_max_momentary +servo_2_min_toggle +servo_2_max_toggle +servo_3_min_momentary +servo_3_max_momentary +servo_3_min_toggle +servo_3_max_toggle +custom_1 +custom_2 +custom_3 +custom_4 +custom_5 +custom_6 +relay_4_on +relay_4_off +relay_4_toggle +relay_1_momentary +relay_2_momentary +relay_3_momentary +relay_4_momentary + + + + +Disabled +shift +arm_toggle +arm +disarm +mode_manual +mode_stabilize +mode_depth_hold +mode_poshold +mode_auto +mode_circle +mode_guided +mode_acro +mount_center +mount_tilt_up +mount_tilt_down +camera_trigger +camera_source_toggle +mount_pan_right +mount_pan_left +lights1_cycle +lights1_brighter +lights1_dimmer +lights2_cycle +lights2_brighter +lights2_dimmer +gain_toggle +gain_inc +gain_dec +trim_roll_inc +trim_roll_dec +trim_pitch_inc +trim_pitch_dec +input_hold_set +roll_pitch_toggle +relay_1_on +relay_1_off +relay_1_toggle +relay_2_on +relay_2_off +relay_2_toggle +relay_3_on +relay_3_off +relay_3_toggle +servo_1_inc +servo_1_dec +servo_1_min +servo_1_max +servo_1_center +servo_2_inc +servo_2_dec +servo_2_min +servo_2_max +servo_2_center +servo_3_inc +servo_3_dec +servo_3_min +servo_3_max +servo_3_center +servo_1_min_momentary +servo_1_max_momentary +servo_1_min_toggle +servo_1_max_toggle +servo_2_min_momentary +servo_2_max_momentary +servo_2_min_toggle +servo_2_max_toggle +servo_3_min_momentary +servo_3_max_momentary +servo_3_min_toggle +servo_3_max_toggle +custom_1 +custom_2 +custom_3 +custom_4 +custom_5 +custom_6 +relay_4_on +relay_4_off +relay_4_toggle +relay_1_momentary +relay_2_momentary +relay_3_momentary +relay_4_momentary + + + + + + +Disabled +shift +arm_toggle +arm +disarm +mode_manual +mode_stabilize +mode_depth_hold +mode_poshold +mode_auto +mode_circle +mode_guided +mode_acro +mount_center +mount_tilt_up +mount_tilt_down +camera_trigger +camera_source_toggle +mount_pan_right +mount_pan_left +lights1_cycle +lights1_brighter +lights1_dimmer +lights2_cycle +lights2_brighter +lights2_dimmer +gain_toggle +gain_inc +gain_dec +trim_roll_inc +trim_roll_dec +trim_pitch_inc +trim_pitch_dec +input_hold_set +roll_pitch_toggle +relay_1_on +relay_1_off +relay_1_toggle +relay_2_on +relay_2_off +relay_2_toggle +relay_3_on +relay_3_off +relay_3_toggle +servo_1_inc +servo_1_dec +servo_1_min +servo_1_max +servo_1_center +servo_2_inc +servo_2_dec +servo_2_min +servo_2_max +servo_2_center +servo_3_inc +servo_3_dec +servo_3_min +servo_3_max +servo_3_center +servo_1_min_momentary +servo_1_max_momentary +servo_1_min_toggle +servo_1_max_toggle +servo_2_min_momentary +servo_2_max_momentary +servo_2_min_toggle +servo_2_max_toggle +servo_3_min_momentary +servo_3_max_momentary +servo_3_min_toggle +servo_3_max_toggle +custom_1 +custom_2 +custom_3 +custom_4 +custom_5 +custom_6 +relay_4_on +relay_4_off +relay_4_toggle +relay_1_momentary +relay_2_momentary +relay_3_momentary +relay_4_momentary + + + + +Disabled +shift +arm_toggle +arm +disarm +mode_manual +mode_stabilize +mode_depth_hold +mode_poshold +mode_auto +mode_circle +mode_guided +mode_acro +mount_center +mount_tilt_up +mount_tilt_down +camera_trigger +camera_source_toggle +mount_pan_right +mount_pan_left +lights1_cycle +lights1_brighter +lights1_dimmer +lights2_cycle +lights2_brighter +lights2_dimmer +gain_toggle +gain_inc +gain_dec +trim_roll_inc +trim_roll_dec +trim_pitch_inc +trim_pitch_dec +input_hold_set +roll_pitch_toggle +relay_1_on +relay_1_off +relay_1_toggle +relay_2_on +relay_2_off +relay_2_toggle +relay_3_on +relay_3_off +relay_3_toggle +servo_1_inc +servo_1_dec +servo_1_min +servo_1_max +servo_1_center +servo_2_inc +servo_2_dec +servo_2_min +servo_2_max +servo_2_center +servo_3_inc +servo_3_dec +servo_3_min +servo_3_max +servo_3_center +servo_1_min_momentary +servo_1_max_momentary +servo_1_min_toggle +servo_1_max_toggle +servo_2_min_momentary +servo_2_max_momentary +servo_2_min_toggle +servo_2_max_toggle +servo_3_min_momentary +servo_3_max_momentary +servo_3_min_toggle +servo_3_max_toggle +custom_1 +custom_2 +custom_3 +custom_4 +custom_5 +custom_6 +relay_4_on +relay_4_off +relay_4_toggle +relay_1_momentary +relay_2_momentary +relay_3_momentary +relay_4_momentary + + + + + + +Disabled +shift +arm_toggle +arm +disarm +mode_manual +mode_stabilize +mode_depth_hold +mode_poshold +mode_auto +mode_circle +mode_guided +mode_acro +mount_center +mount_tilt_up +mount_tilt_down +camera_trigger +camera_source_toggle +mount_pan_right +mount_pan_left +lights1_cycle +lights1_brighter +lights1_dimmer +lights2_cycle +lights2_brighter +lights2_dimmer +gain_toggle +gain_inc +gain_dec +trim_roll_inc +trim_roll_dec +trim_pitch_inc +trim_pitch_dec +input_hold_set +roll_pitch_toggle +relay_1_on +relay_1_off +relay_1_toggle +relay_2_on +relay_2_off +relay_2_toggle +relay_3_on +relay_3_off +relay_3_toggle +servo_1_inc +servo_1_dec +servo_1_min +servo_1_max +servo_1_center +servo_2_inc +servo_2_dec +servo_2_min +servo_2_max +servo_2_center +servo_3_inc +servo_3_dec +servo_3_min +servo_3_max +servo_3_center +servo_1_min_momentary +servo_1_max_momentary +servo_1_min_toggle +servo_1_max_toggle +servo_2_min_momentary +servo_2_max_momentary +servo_2_min_toggle +servo_2_max_toggle +servo_3_min_momentary +servo_3_max_momentary +servo_3_min_toggle +servo_3_max_toggle +custom_1 +custom_2 +custom_3 +custom_4 +custom_5 +custom_6 +relay_4_on +relay_4_off +relay_4_toggle +relay_1_momentary +relay_2_momentary +relay_3_momentary +relay_4_momentary + + + + +Disabled +shift +arm_toggle +arm +disarm +mode_manual +mode_stabilize +mode_depth_hold +mode_poshold +mode_auto +mode_circle +mode_guided +mode_acro +mount_center +mount_tilt_up +mount_tilt_down +camera_trigger +camera_source_toggle +mount_pan_right +mount_pan_left +lights1_cycle +lights1_brighter +lights1_dimmer +lights2_cycle +lights2_brighter +lights2_dimmer +gain_toggle +gain_inc +gain_dec +trim_roll_inc +trim_roll_dec +trim_pitch_inc +trim_pitch_dec +input_hold_set +roll_pitch_toggle +relay_1_on +relay_1_off +relay_1_toggle +relay_2_on +relay_2_off +relay_2_toggle +relay_3_on +relay_3_off +relay_3_toggle +servo_1_inc +servo_1_dec +servo_1_min +servo_1_max +servo_1_center +servo_2_inc +servo_2_dec +servo_2_min +servo_2_max +servo_2_center +servo_3_inc +servo_3_dec +servo_3_min +servo_3_max +servo_3_center +servo_1_min_momentary +servo_1_max_momentary +servo_1_min_toggle +servo_1_max_toggle +servo_2_min_momentary +servo_2_max_momentary +servo_2_min_toggle +servo_2_max_toggle +servo_3_min_momentary +servo_3_max_momentary +servo_3_min_toggle +servo_3_max_toggle +custom_1 +custom_2 +custom_3 +custom_4 +custom_5 +custom_6 +relay_4_on +relay_4_off +relay_4_toggle +relay_1_momentary +relay_2_momentary +relay_3_momentary +relay_4_momentary + + + + + + +Disabled +shift +arm_toggle +arm +disarm +mode_manual +mode_stabilize +mode_depth_hold +mode_poshold +mode_auto +mode_circle +mode_guided +mode_acro +mount_center +mount_tilt_up +mount_tilt_down +camera_trigger +camera_source_toggle +mount_pan_right +mount_pan_left +lights1_cycle +lights1_brighter +lights1_dimmer +lights2_cycle +lights2_brighter +lights2_dimmer +gain_toggle +gain_inc +gain_dec +trim_roll_inc +trim_roll_dec +trim_pitch_inc +trim_pitch_dec +input_hold_set +roll_pitch_toggle +relay_1_on +relay_1_off +relay_1_toggle +relay_2_on +relay_2_off +relay_2_toggle +relay_3_on +relay_3_off +relay_3_toggle +servo_1_inc +servo_1_dec +servo_1_min +servo_1_max +servo_1_center +servo_2_inc +servo_2_dec +servo_2_min +servo_2_max +servo_2_center +servo_3_inc +servo_3_dec +servo_3_min +servo_3_max +servo_3_center +servo_1_min_momentary +servo_1_max_momentary +servo_1_min_toggle +servo_1_max_toggle +servo_2_min_momentary +servo_2_max_momentary +servo_2_min_toggle +servo_2_max_toggle +servo_3_min_momentary +servo_3_max_momentary +servo_3_min_toggle +servo_3_max_toggle +custom_1 +custom_2 +custom_3 +custom_4 +custom_5 +custom_6 +relay_4_on +relay_4_off +relay_4_toggle +relay_1_momentary +relay_2_momentary +relay_3_momentary +relay_4_momentary + + + + +Disabled +shift +arm_toggle +arm +disarm +mode_manual +mode_stabilize +mode_depth_hold +mode_poshold +mode_auto +mode_circle +mode_guided +mode_acro +mount_center +mount_tilt_up +mount_tilt_down +camera_trigger +camera_source_toggle +mount_pan_right +mount_pan_left +lights1_cycle +lights1_brighter +lights1_dimmer +lights2_cycle +lights2_brighter +lights2_dimmer +gain_toggle +gain_inc +gain_dec +trim_roll_inc +trim_roll_dec +trim_pitch_inc +trim_pitch_dec +input_hold_set +roll_pitch_toggle +relay_1_on +relay_1_off +relay_1_toggle +relay_2_on +relay_2_off +relay_2_toggle +relay_3_on +relay_3_off +relay_3_toggle +servo_1_inc +servo_1_dec +servo_1_min +servo_1_max +servo_1_center +servo_2_inc +servo_2_dec +servo_2_min +servo_2_max +servo_2_center +servo_3_inc +servo_3_dec +servo_3_min +servo_3_max +servo_3_center +servo_1_min_momentary +servo_1_max_momentary +servo_1_min_toggle +servo_1_max_toggle +servo_2_min_momentary +servo_2_max_momentary +servo_2_min_toggle +servo_2_max_toggle +servo_3_min_momentary +servo_3_max_momentary +servo_3_min_toggle +servo_3_max_toggle +custom_1 +custom_2 +custom_3 +custom_4 +custom_5 +custom_6 +relay_4_on +relay_4_off +relay_4_toggle +relay_1_momentary +relay_2_momentary +relay_3_momentary +relay_4_momentary + + + + + + +Disabled +shift +arm_toggle +arm +disarm +mode_manual +mode_stabilize +mode_depth_hold +mode_poshold +mode_auto +mode_circle +mode_guided +mode_acro +mount_center +mount_tilt_up +mount_tilt_down +camera_trigger +camera_source_toggle +mount_pan_right +mount_pan_left +lights1_cycle +lights1_brighter +lights1_dimmer +lights2_cycle +lights2_brighter +lights2_dimmer +gain_toggle +gain_inc +gain_dec +trim_roll_inc +trim_roll_dec +trim_pitch_inc +trim_pitch_dec +input_hold_set +roll_pitch_toggle +relay_1_on +relay_1_off +relay_1_toggle +relay_2_on +relay_2_off +relay_2_toggle +relay_3_on +relay_3_off +relay_3_toggle +servo_1_inc +servo_1_dec +servo_1_min +servo_1_max +servo_1_center +servo_2_inc +servo_2_dec +servo_2_min +servo_2_max +servo_2_center +servo_3_inc +servo_3_dec +servo_3_min +servo_3_max +servo_3_center +servo_1_min_momentary +servo_1_max_momentary +servo_1_min_toggle +servo_1_max_toggle +servo_2_min_momentary +servo_2_max_momentary +servo_2_min_toggle +servo_2_max_toggle +servo_3_min_momentary +servo_3_max_momentary +servo_3_min_toggle +servo_3_max_toggle +custom_1 +custom_2 +custom_3 +custom_4 +custom_5 +custom_6 +relay_4_on +relay_4_off +relay_4_toggle +relay_1_momentary +relay_2_momentary +relay_3_momentary +relay_4_momentary + + + + +Disabled +shift +arm_toggle +arm +disarm +mode_manual +mode_stabilize +mode_depth_hold +mode_poshold +mode_auto +mode_circle +mode_guided +mode_acro +mount_center +mount_tilt_up +mount_tilt_down +camera_trigger +camera_source_toggle +mount_pan_right +mount_pan_left +lights1_cycle +lights1_brighter +lights1_dimmer +lights2_cycle +lights2_brighter +lights2_dimmer +gain_toggle +gain_inc +gain_dec +trim_roll_inc +trim_roll_dec +trim_pitch_inc +trim_pitch_dec +input_hold_set +roll_pitch_toggle +relay_1_on +relay_1_off +relay_1_toggle +relay_2_on +relay_2_off +relay_2_toggle +relay_3_on +relay_3_off +relay_3_toggle +servo_1_inc +servo_1_dec +servo_1_min +servo_1_max +servo_1_center +servo_2_inc +servo_2_dec +servo_2_min +servo_2_max +servo_2_center +servo_3_inc +servo_3_dec +servo_3_min +servo_3_max +servo_3_center +servo_1_min_momentary +servo_1_max_momentary +servo_1_min_toggle +servo_1_max_toggle +servo_2_min_momentary +servo_2_max_momentary +servo_2_min_toggle +servo_2_max_toggle +servo_3_min_momentary +servo_3_max_momentary +servo_3_min_toggle +servo_3_max_toggle +custom_1 +custom_2 +custom_3 +custom_4 +custom_5 +custom_6 +relay_4_on +relay_4_off +relay_4_toggle +relay_1_momentary +relay_2_momentary +relay_3_momentary +relay_4_momentary + + + + + + +Disabled +shift +arm_toggle +arm +disarm +mode_manual +mode_stabilize +mode_depth_hold +mode_poshold +mode_auto +mode_circle +mode_guided +mode_acro +mount_center +mount_tilt_up +mount_tilt_down +camera_trigger +camera_source_toggle +mount_pan_right +mount_pan_left +lights1_cycle +lights1_brighter +lights1_dimmer +lights2_cycle +lights2_brighter +lights2_dimmer +gain_toggle +gain_inc +gain_dec +trim_roll_inc +trim_roll_dec +trim_pitch_inc +trim_pitch_dec +input_hold_set +roll_pitch_toggle +relay_1_on +relay_1_off +relay_1_toggle +relay_2_on +relay_2_off +relay_2_toggle +relay_3_on +relay_3_off +relay_3_toggle +servo_1_inc +servo_1_dec +servo_1_min +servo_1_max +servo_1_center +servo_2_inc +servo_2_dec +servo_2_min +servo_2_max +servo_2_center +servo_3_inc +servo_3_dec +servo_3_min +servo_3_max +servo_3_center +servo_1_min_momentary +servo_1_max_momentary +servo_1_min_toggle +servo_1_max_toggle +servo_2_min_momentary +servo_2_max_momentary +servo_2_min_toggle +servo_2_max_toggle +servo_3_min_momentary +servo_3_max_momentary +servo_3_min_toggle +servo_3_max_toggle +custom_1 +custom_2 +custom_3 +custom_4 +custom_5 +custom_6 +relay_4_on +relay_4_off +relay_4_toggle +relay_1_momentary +relay_2_momentary +relay_3_momentary +relay_4_momentary + + + + +Disabled +shift +arm_toggle +arm +disarm +mode_manual +mode_stabilize +mode_depth_hold +mode_poshold +mode_auto +mode_circle +mode_guided +mode_acro +mount_center +mount_tilt_up +mount_tilt_down +camera_trigger +camera_source_toggle +mount_pan_right +mount_pan_left +lights1_cycle +lights1_brighter +lights1_dimmer +lights2_cycle +lights2_brighter +lights2_dimmer +gain_toggle +gain_inc +gain_dec +trim_roll_inc +trim_roll_dec +trim_pitch_inc +trim_pitch_dec +input_hold_set +roll_pitch_toggle +relay_1_on +relay_1_off +relay_1_toggle +relay_2_on +relay_2_off +relay_2_toggle +relay_3_on +relay_3_off +relay_3_toggle +servo_1_inc +servo_1_dec +servo_1_min +servo_1_max +servo_1_center +servo_2_inc +servo_2_dec +servo_2_min +servo_2_max +servo_2_center +servo_3_inc +servo_3_dec +servo_3_min +servo_3_max +servo_3_center +servo_1_min_momentary +servo_1_max_momentary +servo_1_min_toggle +servo_1_max_toggle +servo_2_min_momentary +servo_2_max_momentary +servo_2_min_toggle +servo_2_max_toggle +servo_3_min_momentary +servo_3_max_momentary +servo_3_min_toggle +servo_3_max_toggle +custom_1 +custom_2 +custom_3 +custom_4 +custom_5 +custom_6 +relay_4_on +relay_4_off +relay_4_toggle +relay_1_momentary +relay_2_momentary +relay_3_momentary +relay_4_momentary + + + + + + +Disabled +shift +arm_toggle +arm +disarm +mode_manual +mode_stabilize +mode_depth_hold +mode_poshold +mode_auto +mode_circle +mode_guided +mode_acro +mount_center +mount_tilt_up +mount_tilt_down +camera_trigger +camera_source_toggle +mount_pan_right +mount_pan_left +lights1_cycle +lights1_brighter +lights1_dimmer +lights2_cycle +lights2_brighter +lights2_dimmer +gain_toggle +gain_inc +gain_dec +trim_roll_inc +trim_roll_dec +trim_pitch_inc +trim_pitch_dec +input_hold_set +roll_pitch_toggle +relay_1_on +relay_1_off +relay_1_toggle +relay_2_on +relay_2_off +relay_2_toggle +relay_3_on +relay_3_off +relay_3_toggle +servo_1_inc +servo_1_dec +servo_1_min +servo_1_max +servo_1_center +servo_2_inc +servo_2_dec +servo_2_min +servo_2_max +servo_2_center +servo_3_inc +servo_3_dec +servo_3_min +servo_3_max +servo_3_center +servo_1_min_momentary +servo_1_max_momentary +servo_1_min_toggle +servo_1_max_toggle +servo_2_min_momentary +servo_2_max_momentary +servo_2_min_toggle +servo_2_max_toggle +servo_3_min_momentary +servo_3_max_momentary +servo_3_min_toggle +servo_3_max_toggle +custom_1 +custom_2 +custom_3 +custom_4 +custom_5 +custom_6 +relay_4_on +relay_4_off +relay_4_toggle +relay_1_momentary +relay_2_momentary +relay_3_momentary +relay_4_momentary + + + + +Disabled +shift +arm_toggle +arm +disarm +mode_manual +mode_stabilize +mode_depth_hold +mode_poshold +mode_auto +mode_circle +mode_guided +mode_acro +mount_center +mount_tilt_up +mount_tilt_down +camera_trigger +camera_source_toggle +mount_pan_right +mount_pan_left +lights1_cycle +lights1_brighter +lights1_dimmer +lights2_cycle +lights2_brighter +lights2_dimmer +gain_toggle +gain_inc +gain_dec +trim_roll_inc +trim_roll_dec +trim_pitch_inc +trim_pitch_dec +input_hold_set +roll_pitch_toggle +relay_1_on +relay_1_off +relay_1_toggle +relay_2_on +relay_2_off +relay_2_toggle +relay_3_on +relay_3_off +relay_3_toggle +servo_1_inc +servo_1_dec +servo_1_min +servo_1_max +servo_1_center +servo_2_inc +servo_2_dec +servo_2_min +servo_2_max +servo_2_center +servo_3_inc +servo_3_dec +servo_3_min +servo_3_max +servo_3_center +servo_1_min_momentary +servo_1_max_momentary +servo_1_min_toggle +servo_1_max_toggle +servo_2_min_momentary +servo_2_max_momentary +servo_2_min_toggle +servo_2_max_toggle +servo_3_min_momentary +servo_3_max_momentary +servo_3_min_toggle +servo_3_max_toggle +custom_1 +custom_2 +custom_3 +custom_4 +custom_5 +custom_6 +relay_4_on +relay_4_off +relay_4_toggle +relay_1_momentary +relay_2_momentary +relay_3_momentary +relay_4_momentary + + + + + + +Disabled +shift +arm_toggle +arm +disarm +mode_manual +mode_stabilize +mode_depth_hold +mode_poshold +mode_auto +mode_circle +mode_guided +mode_acro +mount_center +mount_tilt_up +mount_tilt_down +camera_trigger +camera_source_toggle +mount_pan_right +mount_pan_left +lights1_cycle +lights1_brighter +lights1_dimmer +lights2_cycle +lights2_brighter +lights2_dimmer +gain_toggle +gain_inc +gain_dec +trim_roll_inc +trim_roll_dec +trim_pitch_inc +trim_pitch_dec +input_hold_set +roll_pitch_toggle +relay_1_on +relay_1_off +relay_1_toggle +relay_2_on +relay_2_off +relay_2_toggle +relay_3_on +relay_3_off +relay_3_toggle +servo_1_inc +servo_1_dec +servo_1_min +servo_1_max +servo_1_center +servo_2_inc +servo_2_dec +servo_2_min +servo_2_max +servo_2_center +servo_3_inc +servo_3_dec +servo_3_min +servo_3_max +servo_3_center +servo_1_min_momentary +servo_1_max_momentary +servo_1_min_toggle +servo_1_max_toggle +servo_2_min_momentary +servo_2_max_momentary +servo_2_min_toggle +servo_2_max_toggle +servo_3_min_momentary +servo_3_max_momentary +servo_3_min_toggle +servo_3_max_toggle +custom_1 +custom_2 +custom_3 +custom_4 +custom_5 +custom_6 +relay_4_on +relay_4_off +relay_4_toggle +relay_1_momentary +relay_2_momentary +relay_3_momentary +relay_4_momentary + + + + +Disabled +shift +arm_toggle +arm +disarm +mode_manual +mode_stabilize +mode_depth_hold +mode_poshold +mode_auto +mode_circle +mode_guided +mode_acro +mount_center +mount_tilt_up +mount_tilt_down +camera_trigger +camera_source_toggle +mount_pan_right +mount_pan_left +lights1_cycle +lights1_brighter +lights1_dimmer +lights2_cycle +lights2_brighter +lights2_dimmer +gain_toggle +gain_inc +gain_dec +trim_roll_inc +trim_roll_dec +trim_pitch_inc +trim_pitch_dec +input_hold_set +roll_pitch_toggle +relay_1_on +relay_1_off +relay_1_toggle +relay_2_on +relay_2_off +relay_2_toggle +relay_3_on +relay_3_off +relay_3_toggle +servo_1_inc +servo_1_dec +servo_1_min +servo_1_max +servo_1_center +servo_2_inc +servo_2_dec +servo_2_min +servo_2_max +servo_2_center +servo_3_inc +servo_3_dec +servo_3_min +servo_3_max +servo_3_center +servo_1_min_momentary +servo_1_max_momentary +servo_1_min_toggle +servo_1_max_toggle +servo_2_min_momentary +servo_2_max_momentary +servo_2_min_toggle +servo_2_max_toggle +servo_3_min_momentary +servo_3_max_momentary +servo_3_min_toggle +servo_3_max_toggle +custom_1 +custom_2 +custom_3 +custom_4 +custom_5 +custom_6 +relay_4_on +relay_4_off +relay_4_toggle +relay_1_momentary +relay_2_momentary +relay_3_momentary +relay_4_momentary + + + + + + +Disabled +shift +arm_toggle +arm +disarm +mode_manual +mode_stabilize +mode_depth_hold +mode_poshold +mode_auto +mode_circle +mode_guided +mode_acro +mount_center +mount_tilt_up +mount_tilt_down +camera_trigger +camera_source_toggle +mount_pan_right +mount_pan_left +lights1_cycle +lights1_brighter +lights1_dimmer +lights2_cycle +lights2_brighter +lights2_dimmer +gain_toggle +gain_inc +gain_dec +trim_roll_inc +trim_roll_dec +trim_pitch_inc +trim_pitch_dec +input_hold_set +roll_pitch_toggle +relay_1_on +relay_1_off +relay_1_toggle +relay_2_on +relay_2_off +relay_2_toggle +relay_3_on +relay_3_off +relay_3_toggle +servo_1_inc +servo_1_dec +servo_1_min +servo_1_max +servo_1_center +servo_2_inc +servo_2_dec +servo_2_min +servo_2_max +servo_2_center +servo_3_inc +servo_3_dec +servo_3_min +servo_3_max +servo_3_center +servo_1_min_momentary +servo_1_max_momentary +servo_1_min_toggle +servo_1_max_toggle +servo_2_min_momentary +servo_2_max_momentary +servo_2_min_toggle +servo_2_max_toggle +servo_3_min_momentary +servo_3_max_momentary +servo_3_min_toggle +servo_3_max_toggle +custom_1 +custom_2 +custom_3 +custom_4 +custom_5 +custom_6 +relay_4_on +relay_4_off +relay_4_toggle +relay_1_momentary +relay_2_momentary +relay_3_momentary +relay_4_momentary + + + + +Disabled +shift +arm_toggle +arm +disarm +mode_manual +mode_stabilize +mode_depth_hold +mode_poshold +mode_auto +mode_circle +mode_guided +mode_acro +mount_center +mount_tilt_up +mount_tilt_down +camera_trigger +camera_source_toggle +mount_pan_right +mount_pan_left +lights1_cycle +lights1_brighter +lights1_dimmer +lights2_cycle +lights2_brighter +lights2_dimmer +gain_toggle +gain_inc +gain_dec +trim_roll_inc +trim_roll_dec +trim_pitch_inc +trim_pitch_dec +input_hold_set +roll_pitch_toggle +relay_1_on +relay_1_off +relay_1_toggle +relay_2_on +relay_2_off +relay_2_toggle +relay_3_on +relay_3_off +relay_3_toggle +servo_1_inc +servo_1_dec +servo_1_min +servo_1_max +servo_1_center +servo_2_inc +servo_2_dec +servo_2_min +servo_2_max +servo_2_center +servo_3_inc +servo_3_dec +servo_3_min +servo_3_max +servo_3_center +servo_1_min_momentary +servo_1_max_momentary +servo_1_min_toggle +servo_1_max_toggle +servo_2_min_momentary +servo_2_max_momentary +servo_2_min_toggle +servo_2_max_toggle +servo_3_min_momentary +servo_3_max_momentary +servo_3_min_toggle +servo_3_max_toggle +custom_1 +custom_2 +custom_3 +custom_4 +custom_5 +custom_6 +relay_4_on +relay_4_off +relay_4_toggle +relay_1_momentary +relay_2_momentary +relay_3_momentary +relay_4_momentary + + + + + + +Disabled +shift +arm_toggle +arm +disarm +mode_manual +mode_stabilize +mode_depth_hold +mode_poshold +mode_auto +mode_circle +mode_guided +mode_acro +mount_center +mount_tilt_up +mount_tilt_down +camera_trigger +camera_source_toggle +mount_pan_right +mount_pan_left +lights1_cycle +lights1_brighter +lights1_dimmer +lights2_cycle +lights2_brighter +lights2_dimmer +gain_toggle +gain_inc +gain_dec +trim_roll_inc +trim_roll_dec +trim_pitch_inc +trim_pitch_dec +input_hold_set +roll_pitch_toggle +relay_1_on +relay_1_off +relay_1_toggle +relay_2_on +relay_2_off +relay_2_toggle +relay_3_on +relay_3_off +relay_3_toggle +servo_1_inc +servo_1_dec +servo_1_min +servo_1_max +servo_1_center +servo_2_inc +servo_2_dec +servo_2_min +servo_2_max +servo_2_center +servo_3_inc +servo_3_dec +servo_3_min +servo_3_max +servo_3_center +servo_1_min_momentary +servo_1_max_momentary +servo_1_min_toggle +servo_1_max_toggle +servo_2_min_momentary +servo_2_max_momentary +servo_2_min_toggle +servo_2_max_toggle +servo_3_min_momentary +servo_3_max_momentary +servo_3_min_toggle +servo_3_max_toggle +custom_1 +custom_2 +custom_3 +custom_4 +custom_5 +custom_6 +relay_4_on +relay_4_off +relay_4_toggle +relay_1_momentary +relay_2_momentary +relay_3_momentary +relay_4_momentary + + + + +Disabled +shift +arm_toggle +arm +disarm +mode_manual +mode_stabilize +mode_depth_hold +mode_poshold +mode_auto +mode_circle +mode_guided +mode_acro +mount_center +mount_tilt_up +mount_tilt_down +camera_trigger +camera_source_toggle +mount_pan_right +mount_pan_left +lights1_cycle +lights1_brighter +lights1_dimmer +lights2_cycle +lights2_brighter +lights2_dimmer +gain_toggle +gain_inc +gain_dec +trim_roll_inc +trim_roll_dec +trim_pitch_inc +trim_pitch_dec +input_hold_set +roll_pitch_toggle +relay_1_on +relay_1_off +relay_1_toggle +relay_2_on +relay_2_off +relay_2_toggle +relay_3_on +relay_3_off +relay_3_toggle +servo_1_inc +servo_1_dec +servo_1_min +servo_1_max +servo_1_center +servo_2_inc +servo_2_dec +servo_2_min +servo_2_max +servo_2_center +servo_3_inc +servo_3_dec +servo_3_min +servo_3_max +servo_3_center +servo_1_min_momentary +servo_1_max_momentary +servo_1_min_toggle +servo_1_max_toggle +servo_2_min_momentary +servo_2_max_momentary +servo_2_min_toggle +servo_2_max_toggle +servo_3_min_momentary +servo_3_max_momentary +servo_3_min_toggle +servo_3_max_toggle +custom_1 +custom_2 +custom_3 +custom_4 +custom_5 +custom_6 +relay_4_on +relay_4_off +relay_4_toggle +relay_1_momentary +relay_2_momentary +relay_3_momentary +relay_4_momentary + + + + + + +Servo +Relay + + + +ds +deciseconds +0 50 + + +PWM +PWM in microseconds +1000 2000 + + +PWM +PWM in microseconds +1000 2000 + + +m +meters +0 1000 + + + +Low +High + + + +ms +milliseconds +0 10000 + + +deg +degrees +0 180 + + + +Disabled +AUX1 +AUX2 +AUX3 +AUX4 +AUX5 +AUX6 + +True + + + +TriggerLow +TriggerHigh + + + + +Always +Only when in AUTO + + + + +Default +BMMCC + + + + + + +Disabled +UAVCAN +KDECAN +ToshibaCAN + +True + + + + + + + + +1 250 + + +0: Servo 1, 1: Servo 2, 2: Servo 3, 3: Servo 4, 4: Servo 5, 5: Servo 6, 6: Servo 7, 7: Servo 8, 8: Servo 9, 9: Servo 10, 10: Servo 11, 11: Servo 12, 12: Servo 13, 13: Servo 14, 14: Servo 15 + + +0: ESC 1, 1: ESC 2, 2: ESC 3, 3: ESC 4, 4: ESC 5, 5: ESC 6, 6: ESC 7, 7: ESC 8, 8: ESC 9, 9: ESC 10, 10: ESC 11, 11: ESC 12, 12: ESC 13, 13: ESC 14, 14: ESC 15, 15: ESC 16 + + +1 200 +Hz +hertz + + + + + +Disabled +UAVCAN +KDECAN +ToshibaCAN + +True + + + + + + + + +1 250 + + +0: Servo 1, 1: Servo 2, 2: Servo 3, 3: Servo 4, 4: Servo 5, 5: Servo 6, 6: Servo 7, 7: Servo 8, 8: Servo 9, 9: Servo 10, 10: Servo 11, 11: Servo 12, 12: Servo 13, 13: Servo 14, 14: Servo 15 + + +0: ESC 1, 1: ESC 2, 2: ESC 3, 3: ESC 4, 4: ESC 5, 5: ESC 6, 6: ESC 7, 7: ESC 8, 8: ESC 9, 9: ESC 10, 10: ESC 11, 11: ESC 12, 12: ESC 13, 13: ESC 14, 14: ESC 15, 15: ESC 16 + + +1 200 +Hz +hertz + + + + + +Disabled +UAVCAN +KDECAN +ToshibaCAN + +True + + + + + + + + +1 250 + + +0: Servo 1, 1: Servo 2, 2: Servo 3, 3: Servo 4, 4: Servo 5, 5: Servo 6, 6: Servo 7, 7: Servo 8, 8: Servo 9, 9: Servo 10, 10: Servo 11, 11: Servo 12, 12: Servo 13, 13: Servo 14, 14: Servo 15 + + +0: ESC 1, 1: ESC 2, 2: ESC 3, 3: ESC 4, 4: ESC 5, 5: ESC 6, 6: ESC 7, 7: ESC 8, 8: ESC 9, 9: ESC 10, 10: ESC 11, 11: ESC 12, 12: ESC 13, 13: ESC 14, 14: ESC 15, 15: ESC 16 + + +1 200 +Hz +hertz + + + + + +Disabled +First driver +Second driver + +True + + +10000 1000000 + + + +Disabled +Major messages +All messages + + + + + + +Disabled +First driver +Second driver + +True + + +10000 1000000 + + + +Disabled +Major messages +All messages + + + + + + +Disabled +First driver +Second driver + +True + + +10000 1000000 + + + +Disabled +Major messages +All messages + + + + + + +Disabled +First driver +Second driver + +True + + + +Disabled +Serial0 +Serial1 +Serial2 +Serial3 +Serial4 +Serial5 +Serial6 + + + +0 32767 + + + + +cm +centimeters +0 10000 +100 + + +deg/s +degrees per second +-90 90 +1 + + + + +-400 400 +mGauss +milligauss +1 + + +-400 400 +mGauss +milligauss +1 + + +-400 400 +mGauss +milligauss +1 + + +-3.142 3.142 +rad +radians +0.01 + + + +Disabled +Internal-Learning +EKF-Learning +InFlight-Learning + + + + +Disabled +Enabled + + + + +Disabled +Enabled + + + + +Disabled +Use Throttle +Use Current + + + +-1000 1000 +mGauss/A +milligauss per ampere +1 + + +-1000 1000 +mGauss/A +milligauss per ampere +1 + + +-1000 1000 +mGauss/A +milligauss per ampere +1 + + + +None +Yaw45 +Yaw90 +Yaw135 +Yaw180 +Yaw225 +Yaw270 +Yaw315 +Roll180 +Roll180Yaw45 +Roll180Yaw90 +Roll180Yaw135 +Pitch180 +Roll180Yaw225 +Roll180Yaw270 +Roll180Yaw315 +Roll90 +Roll90Yaw45 +Roll90Yaw90 +Roll90Yaw135 +Roll270 +Roll270Yaw45 +Roll270Yaw90 +Roll270Yaw135 +Pitch90 +Pitch270 +Pitch180Yaw90 +Pitch180Yaw270 +Roll90Pitch90 +Roll180Pitch90 +Roll270Pitch90 +Roll90Pitch180 +Roll270Pitch180 +Roll90Pitch270 +Roll180Pitch270 +Roll270Pitch270 +Roll90Pitch180Yaw90 +Roll90Yaw270 +Yaw293Pitch68Roll180 +Pitch315 +Roll90Pitch315 + + + + +Internal +External +ForcedExternal + + + +-400 400 +mGauss +milligauss +1 + + +-400 400 +mGauss +milligauss +1 + + +-400 400 +mGauss +milligauss +1 + + +-1000 1000 +mGauss/A +milligauss per ampere +1 + + +-1000 1000 +mGauss/A +milligauss per ampere +1 + + +-1000 1000 +mGauss/A +milligauss per ampere +1 + + + +FirstCompass +SecondCompass +ThirdCompass + + + +-400 400 +mGauss +milligauss +1 + + +-400 400 +mGauss +milligauss +1 + + +-400 400 +mGauss +milligauss +1 + + +-1000 1000 +mGauss/A +milligauss per ampere +1 + + +-1000 1000 +mGauss/A +milligauss per ampere +1 + + +-1000 1000 +mGauss/A +milligauss per ampere +1 + + +True + + +True + + +True + + + +Disabled +Enabled + + + + +None +Yaw45 +Yaw90 +Yaw135 +Yaw180 +Yaw225 +Yaw270 +Yaw315 +Roll180 +Roll180Yaw45 +Roll180Yaw90 +Roll180Yaw135 +Pitch180 +Roll180Yaw225 +Roll180Yaw270 +Roll180Yaw315 +Roll90 +Roll90Yaw45 +Roll90Yaw90 +Roll90Yaw135 +Roll270 +Roll270Yaw45 +Roll270Yaw90 +Roll270Yaw135 +Pitch90 +Pitch270 +Pitch180Yaw90 +Pitch180Yaw270 +Roll90Pitch90 +Roll180Pitch90 +Roll270Pitch90 +Roll90Pitch180 +Roll270Pitch180 +Roll90Pitch270 +Roll180Pitch270 +Roll270Pitch270 +Roll90Pitch180Yaw90 +Roll90Yaw270 +Yaw293Pitch68Roll180 +Pitch315 +Roll90Pitch315 + + + + +Internal +External +ForcedExternal + + + + +Disabled +Enabled + + + + +None +Yaw45 +Yaw90 +Yaw135 +Yaw180 +Yaw225 +Yaw270 +Yaw315 +Roll180 +Roll180Yaw45 +Roll180Yaw90 +Roll180Yaw135 +Pitch180 +Roll180Yaw225 +Roll180Yaw270 +Roll180Yaw315 +Roll90 +Roll90Yaw45 +Roll90Yaw90 +Roll90Yaw135 +Roll270 +Roll270Yaw45 +Roll270Yaw90 +Roll270Yaw135 +Pitch90 +Pitch270 +Pitch180Yaw90 +Pitch180Yaw270 +Roll90Pitch90 +Roll180Pitch90 +Roll270Pitch90 +Roll90Pitch180 +Roll270Pitch180 +Roll90Pitch270 +Roll180Pitch270 +Roll270Pitch270 +Roll90Pitch180Yaw90 +Roll90Yaw270 +Yaw293Pitch68Roll180 +Pitch315 +Roll90Pitch315 + + + + +Internal +External +ForcedExternal + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +4 32 + +Very Strict +Strict +Default +Relaxed + +0.1 + + +500 3000 +1 + + +0:HMC5883,1:LSM303D,2:AK8963,3:BMM150,4:LSM9DS1,5:LIS3MDL,6:AK09916,7:IST8310,8:ICM20948,9:MMC3416,11:UAVCAN,12:QMC5883,14:MAG3110,15:IST8308 + + +% +percent +0 100 +1 + + + +Disabled +CheckOnly +CheckAndFix + + + + + + + + + + +Disabled +Enabled + + + + + + +Disabled +Enabled + + + +0 2 +0.01 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Disabled +Enabled + +True + + + +GPS 3D Vel and 2D Pos +GPS 2D vel and 2D pos +GPS 2D pos +No GPS + + + +0.05 5.0 +0.05 +m/s +meters per second + + +0.05 5.0 +0.05 +m/s +meters per second + + +100 1000 +25 + + +0.1 10.0 +0.1 +m +meters + + +100 1000 +25 + + +10 100 +5 +m +meters + + + +Use Baro +Use Range Finder +Use GPS +Use Range Beacon + +True + + +0.1 10.0 +0.1 +m +meters + + +100 1000 +25 + + +0 250 +10 +ms +milliseconds +True + + +0.01 0.5 +0.01 +Gauss +gauss + + + +When flying +When manoeuvring +Never +After first climb yaw reset +Always + + + +100 1000 +25 + + +0.5 5.0 +0.1 +m/s +meters per second + + +100 1000 +25 + + +0.1 10.0 +0.1 +m +meters + + +100 1000 +25 + + +1.0 4.0 +0.1 +rad/s +radians per second + + +0.05 1.0 +0.05 +rad/s +radians per second + + +100 1000 +25 + + +0 127 +10 +ms +milliseconds +True + + +0.0001 0.1 +0.0001 +rad/s +radians per second + + +0.01 1.0 +0.01 +m/s/s +meters per square second + + +0.00001 0.001 +rad/s/s +radians per square second + + +0.000001 0.001 +Hz +hertz + + +0.00001 0.005 +m/s/s/s +meters per cubic second + + +0.01 1.0 +0.1 +m/s/s +meters per square second + + +0.0 1.0 +0.1 + + +0:NSats,1:HDoP,2:speed error,3:position error,4:yaw error,5:pos drift,6:vert speed,7:horiz speed + + +0:FirstIMU,1:SecondIMU,2:ThirdIMU,3:FourthIMU,4:FifthIMU,5:SixthIMU +True + + +50 200 +% +percent + + +0.5 50.0 +m +meters + + +0:FirstIMU,1:SecondIMU,2:ThirdIMU,3:FourthIMU,4:FifthIMU,5:SixthIMU +True + + +0.05 1.0 +0.05 +rad +radians + + +100 1000 +25 + + +10 50 +5 +cs +centiseconds + + +0.00001 0.01 +Gauss/s +gauss per second + + +0.00001 0.01 +Gauss/s +gauss per second + + +-1 70 +1 +% +percent + + +0 0.2 +0.01 + + +0.1 10.0 +0.1 +m +meters + + +100 1000 +25 + + +0 127 +10 +ms +milliseconds +True + + +2.0 6.0 +0.5 +m/s +meters per second + + +0:FirstEKF,1:SecondEKF,2:ThirdEKF,3:FourthEKF,4:FifthEKF,5:SixthEKF +True + + +0:Correct when using Baro height,1:Correct when using range finder height,2:Apply corrections to local position +True + + +0 127 +1 +ms +milliseconds +True + + + +None +Navigation +Terrain + +True + + +0 500 +mGauss +milligauss + + + + + +Disabled +Enabled + +True + + + +GPS 3D Vel and 2D Pos +GPS 2D vel and 2D pos +GPS 2D pos +No GPS + + + +0.05 5.0 +0.05 +m/s +meters per second + + +0.05 5.0 +0.05 +m/s +meters per second + + +100 1000 +25 + + +0.1 10.0 +0.1 +m +meters + + +100 1000 +25 + + +10 100 +5 +m +meters + + + +Use Baro +Use Range Finder +Use GPS +Use Range Beacon + +True + + +0.1 10.0 +0.1 +m +meters + + +100 1000 +25 + + +0 250 +10 +True +ms +milliseconds + + +0.01 0.5 +0.01 +Gauss +gauss + + + +When flying +When manoeuvring +Never +After first climb yaw reset +Always +Use external yaw sensor + +True + + +100 1000 +25 + + +0.5 5.0 +0.1 +m/s +meters per second + + +100 1000 +25 + + +0.1 10.0 +0.1 +m +meters + + +100 1000 +25 + + +1.0 4.0 +0.1 +rad/s +radians per second + + +0.05 1.0 +0.05 +rad/s +radians per second + + +100 1000 +25 + + +0 250 +10 +True +ms +milliseconds + + +0.0001 0.1 +0.0001 +rad/s +radians per second + + +0.01 1.0 +0.01 +m/s/s +meters per square second + + +0.00001 0.001 +rad/s/s +radians per square second + + +0.00001 0.005 +m/s/s/s +meters per cubic second + + +0.01 1.0 +0.1 +m/s/s +meters per square second + + +0.0 1.0 +0.1 + + +0:NSats,1:HDoP,2:speed error,3:position error,4:yaw error,5:pos drift,6:vert speed,7:horiz speed + + +0:FirstIMU,1:SecondIMU,2:ThirdIMU,3:FourthIMU,4:FifthIMU,5:SixthIMU +True + + +50 200 +% +percent + + +0.5 50.0 +m +meters + + +0:FirstIMU,1:SecondIMU,2:ThirdIMU,3:FourthIMU,4:FifthIMU,5:SixthIMU +True + + +0.05 1.0 +0.05 +rad +radians + + +100 1000 +25 + + +10 50 +5 +cs +centiseconds + + +0.00001 0.01 +Gauss/s +gauss per second + + +0.00001 0.01 +Gauss/s +gauss per second + + +-1 70 +1 +% +percent + + +0 0.2 +0.01 + + +0.1 10.0 +0.1 +m +meters + + +100 1000 +25 + + +0 250 +10 +True +ms +milliseconds + + +2.0 6.0 +0.5 +m/s +meters per second + + +0.5 2.5 +0.1 +m/s/s +meters per square second + + +0:FirstEKF,1:SecondEKF,2:ThirdEKF,3:FourthEKF,4:FifthEKF,5:SixthEKF +True + + +0:Correct when using Baro height,1:Correct when using range finder height,2:Apply corrections to local position +True + + +0.05 0.5 +0.05 +m/s +meters per second + + +0.5 5.0 +0.1 +m/s +meters per second + + +0.01 1.0 +0.1 +m/s +meters per second + + + +None +Navigation +Terrain + +True + + + + + +Disabled +Enabled + + + + +None +Altitude +Circle +Altitude and Circle +Polygon +Altitude and Polygon +Circle and Polygon +All + +0:Altitude,1:Circle,2:Polygon + + + +Report Only +RTL or Land +Always Land +SmartRTL or RTL or Land +Brake or Land + + + +m +meters +10 1000 +1 + + +m +meters +30 10000 + + +m +meters +1 10 + + +1 20 + + +m +meters +-100 100 +1 + + + + + +None +PX4Flow +Pixart +Bebop +CXOF +MAVLink +UAVCAN + +True + + +-200 +200 +1 + + +-200 +200 +1 + + +-18000 +18000 +1 + + +m +meters +-10 10 + + +m +meters +-10 10 + + +m +meters +-10 10 + + +0 127 + + + +Disabled +Enabled + + + + + +Pa +pascal +1 +True +True + + +degC +degrees Celsius +1 +True + + +m +meters +0.1 + + + +FirstBaro +2ndBaro +3rdBaro + + + + +Disabled +Bus0 +Bus1 + + + +1.0:Freshwater,1.024:Saltwater + + +Pa +pascal +1 +True +True + + +Pa +pascal +1 +True +True + + +% +percent +0 100 +1 + + +0:BMP085,1:BMP280,2:MS5611,3:MS5607,4:MS5637,5:FBM320,6:DPS280,7:LPS25H,8:Keller,10:MS5837,11:BMP388 + +BMP085 +BMP280 +MS5611 +MS5607 +MS5637 +FBM320 +DPS280 +LPS25H +Keller +MS5837 +BMP388 + + + + + + +None +AUTO +uBlox +MTK +MTK19 +NMEA +SiRF +HIL +SwiftNav +UAVCAN +SBF +GSOF +ERB +MAV +NOVA +HemisphereNMEA + +True + + + +None +AUTO +uBlox +MTK +MTK19 +NMEA +SiRF +HIL +SwiftNav +UAVCAN +SBF +GSOF +ERB +MAV +NOVA +HemisphereNMEA + +True + + + +Portable +Stationary +Pedestrian +Automotive +Sea +Airborne1G +Airborne2G +Airborne4G + + + + +Disabled +UseBest +Blend +UseSecond + + + + +Any +FloatRTK +IntegerRTK + +True + + + +Disabled +Enabled +NoChange + + + +-100 90 +deg +degrees + + + +send to first GPS +send to 2nd GPS +send to all + + + + +None (0x0000) +All (0xFFFF) +External only (0xFF00) + + + + +Ignore +Always log +Stop logging when disarmed (SBF only) +Only log every five samples (uBlox only) + +True + + + +Leave as currently configured +GPS-NoSBAS +GPS+SBAS +Galileo-NoSBAS +Galileo+SBAS +Beidou +GPS+IMES+QZSS+SBAS (Japan Only) +GLONASS +GLONASS+SBAS +GPS+GLONASS+SBAS + +0:GPS,1:SBAS,2:Galileo,3:Beidou,4:IMES,5:QZSS,6:GLOSNASS + + + +Do not save config +Save config +Save only when needed + + + + +Leave as currently configured +GPS-NoSBAS +GPS+SBAS +Galileo-NoSBAS +Galileo+SBAS +Beidou +GPS+IMES+QZSS+SBAS (Japan Only) +GLONASS +GLONASS+SBAS +GPS+GLONASS+SBAS + +0:GPS,1:SBAS,2:Galileo,3:Beidou,4:IMES,5:QZSS,6:GLOSNASS + + + +Disables automatic configuration +Enable automatic configuration + + + +ms +milliseconds + +10Hz +8Hz +5Hz + +50 200 + + +ms +milliseconds + +10Hz +8Hz +5Hz + +50 200 + + +m +meters +-10 10 + + +m +meters +-10 10 + + +m +meters +-10 10 + + +m +meters +-10 10 + + +m +meters +-10 10 + + +m +meters +-10 10 + + +ms +milliseconds +0 250 +True + + +ms +milliseconds +0 250 +True + + +0:Horiz Pos,1:Vert Pos,2:Speed + + +s +seconds +5.0 30.0 + + + + + +Disabled +Enabled + + + + +None +Servo +EPM + + + +1000 2000 +PWM +PWM in microseconds + + +1000 2000 +PWM +PWM in microseconds + + +1000 2000 +PWM +PWM in microseconds + + +0 255 +s +seconds + + +0 255 + + + + +rad/s +radians per second + + +rad/s +radians per second + + +rad/s +radians per second + + +rad/s +radians per second + + +rad/s +radians per second + + +rad/s +radians per second + + +rad/s +radians per second + + +rad/s +radians per second + + +rad/s +radians per second + + +0.8 1.2 + + +0.8 1.2 + + +0.8 1.2 + + +m/s/s +meters per square second +-3.5 3.5 + + +m/s/s +meters per square second +-3.5 3.5 + + +m/s/s +meters per square second +-3.5 3.5 + + +0.8 1.2 + + +0.8 1.2 + + +0.8 1.2 + + +m/s/s +meters per square second +-3.5 3.5 + + +m/s/s +meters per square second +-3.5 3.5 + + +m/s/s +meters per square second +-3.5 3.5 + + +0.8 1.2 + + +0.8 1.2 + + +0.8 1.2 + + +m/s/s +meters per square second +-3.5 3.5 + + +m/s/s +meters per square second +-3.5 3.5 + + +m/s/s +meters per square second +-3.5 3.5 + + +Hz +hertz +0 256 + + +Hz +hertz +0 256 + + + +Disabled +Enabled + + + + +Disabled +Enabled + + + + +Disabled +Enabled + + + +0.05 50 + + + +Never +Start-up only + + + + +Don't adjust the trims +Assume first orientation was level +Assume ACC_BODYFIX is perfectly aligned to the vehicle + + + + +IMU 1 +IMU 2 +IMU 3 + + + +m +meters +-10 10 + + +m +meters +-10 10 + + +m +meters +-10 10 + + +m +meters +-10 10 + + +m +meters +-10 10 + + +m +meters +-10 10 + + +m +meters +-10 10 + + +m +meters +-10 10 + + +m +meters +-10 10 + + +True + + +True + + +True + + +True + + +True + + +True + + + +FirstIMUOnly +FirstAndSecondIMU + +0:FirstIMU,1:SecondIMU,2:ThirdIMU + + + +FirstIMUOnly +FirstAndSecondIMU +FirstSecondAndThirdIMU +AllIMUs + +0:FirstIMU,1:SecondIMU,2:ThirdIMU + + + + + +Disabled +Enabled + + + +10 400 +Hz +hertz + + +5 100 +Hz +hertz + + +5 30 +dB +decibel + + +0:1st harmonic,1:2nd harmonic,2:3rd harmonic,3:4th hamronic,4:5th harmonic,5:6th harmonic,6:7th harmonic,7:8th harmonic +True + + +0.1 0.9 +True + + + + +32 +True + + + +None +First IMU +All + +0:IMU1,1:IMU2,2:IMU3 +True + + +0:Sensor-Rate Logging (sample at full sensor rate seen by AP), 1: Sample post-filtering + + +ms +milliseconds +10 + + +1 + + + + + +Disabled +Enabled + + + +5 30 +dB +decibel + + +10 400 +Hz +hertz + + +5 100 +Hz +hertz + + + + + +Disabled +Pixhawk Aux1 +Pixhawk Aux2 +Pixhawk Aux3 +Pixhawk Aux4 +Pixhawk Aux5 +Pixhawk Aux6 +Pixhawk 3.3ADC1 +Pixhawk 3.3ADC2 +Pixhawk 6.6ADC + +True + + + +Low +High + + + + +Disabled +Pixhawk Aux1 +Pixhawk Aux2 +Pixhawk Aux3 +Pixhawk Aux4 +Pixhawk Aux5 +Pixhawk Aux6 +Pixhawk 3.3ADC1 +Pixhawk 3.3ADC2 +Pixhawk 6.6ADC + +True + + + +Low +High + + + + +Disabled +Pixhawk Aux1 +Pixhawk Aux2 +Pixhawk Aux3 +Pixhawk Aux4 +Pixhawk Aux5 +Pixhawk Aux6 +Pixhawk 3.3ADC1 +Pixhawk 3.3ADC2 +Pixhawk 6.6ADC + +True + + + +Low +High + + + + + + +None +File +MAVLink +File and MAVLink +Block +Block and MAVLink + +0:File,1:MAVLink,2:Block + + + + + +Disabled +Enabled + + + + +Disabled +Enabled + + + + +Disabled +Enabled + + + +kB +kilobytes + + +s +seconds + + + + +deg +degrees +0 45 +1 + + +cm/s +centimeters per second +20 2000 +50 + + +cm/s/s +centimeters per square second +100 981 +1 + + +cm/s/s +centimeters per square second +25 250 +1 + + +cm/s/s/s +centimeters per cubic second +500 5000 +1 + + +s +seconds +0 2 +0.1 + + + + +0 32766 +1 +True + + + +Resume Mission +Restart Mission + + + +0:Clear Mission on reboot + + + + + +Retracted +Neutral +MavLink Targeting +RC Targeting +GPS Point + + + +deg +degrees +-180.00 179.99 +1 + + +deg +degrees +-180.00 179.99 +1 + + +deg +degrees +-180.00 179.99 +1 + + +deg +degrees +-180.00 179.99 +1 + + +deg +degrees +-180.00 179.99 +1 + + +deg +degrees +-180.00 179.99 +1 + + + +Disabled +Enabled + + + + +Disabled +Enabled + + + + +Disabled +Enabled + + + + +Disabled +RC5 +RC6 +RC7 +RC8 +RC9 +RC10 +RC11 +RC12 + + + +cdeg +centidegrees +-18000 17999 +1 + + +cdeg +centidegrees +-18000 17999 +1 + + + +Disabled +RC5 +RC6 +RC7 +RC8 +RC9 +RC10 +RC11 +RC12 + + + +cdeg +centidegrees +-18000 17999 +1 + + +cdeg +centidegrees +-18000 17999 +1 + + + +Disabled +RC5 +RC6 +RC7 +RC8 +RC9 +RC10 +RC11 +RC12 + + + +cdeg +centidegrees +-18000 17999 +1 + + +cdeg +centidegrees +-18000 17999 +1 + + +0 100 +1 + + +s +seconds +0.0 0.2 +.005 + + +s +seconds +0.0 0.2 +.005 + + + +None +Servo +3DR Solo +Alexmos Serial +SToRM32 MAVLink +SToRM32 Serial + +True + + + +Retracted +Neutral +MavLink Targeting +RC Targeting +GPS Point + + + +deg +degrees +-180.00 179.99 +1 + + +deg +degrees +-180.00 179.99 +1 + + +deg +degrees +-180.00 179.99 +1 + + +deg +degrees +-180.00 179.99 +1 + + +deg +degrees +-180.00 179.99 +1 + + +deg +degrees +-180.00 179.99 +1 + + + +Disabled +Enabled + + + + +Disabled +Enabled + + + + +Disabled +Enabled + + + + +Disabled +RC5 +RC6 +RC7 +RC8 +RC9 +RC10 +RC11 +RC12 + + + +cdeg +centidegrees +-18000 17999 +1 + + +cdeg +centidegrees +-18000 17999 +1 + + + +Disabled +RC5 +RC6 +RC7 +RC8 +RC9 +RC10 +RC11 +RC12 + + + +cdeg +centidegrees +-18000 17999 +1 + + +cdeg +centidegrees +-18000 17999 +1 + + + +Disabled +RC5 +RC6 +RC7 +RC8 +RC9 +RC10 +RC11 +RC12 + + + +cdeg +centidegrees +-18000 17999 +1 + + +cdeg +centidegrees +-18000 17999 +1 + + +s +seconds +0.0 0.2 +.005 + + +s +seconds +0.0 0.2 +.005 + + + +None +Servo +3DR Solo +Alexmos Serial +SToRM32 MAVLink +SToRM32 Serial + + + + + + +normal +reverse + + + + +normal +reverse + + + + +normal +reverse + + + + +normal +reverse + + + + +normal +reverse + + + + +normal +reverse + + + + +normal +reverse + + + + +normal +reverse + + + +0.0 1.5 +0.1 + + + +normal +reverse + + + + +normal +reverse + + + + +normal +reverse + + + + +normal +reverse + + + +0 500 +PWM +PWM in microseconds + + +0.25 0.8 + + +0.9:Low, 0.95:Default, 1.0:High + + +6 35 +V +volt + + +6 35 +V +volt + + +0 200 +A +ampere + + + +Normal +OneShot +OneShot125 +Brushed +DShot150 +DShot300 +DShot600 +DShot1200 + +True + + +PWM +PWM in microseconds +0 2000 + + +PWM +PWM in microseconds +0 2000 + + +0.0:Low, 0.15:Default, 0.3:High + + +0.0:Low, 0.1:Default, 0.2:High + + +0 10 +s +seconds + + +0.2 0.8 + + + +Disabled + + + + +PWM enabled while disarmed +PWM disabled while disarmed + + + +5 80 +deg +degrees +1 + + +0 2 +s +seconds +0.1 + + +0 5 +0.1 + + + +First battery +Second battery + + + +0 .5 +s +seconds +0.001 + + +0 .5 +s +seconds +0.001 + + + + + +Off +Low +Medium +High + + + + +Disable +Enable + + + + +Standard +MAVLink +OutbackChallenge +TrafficLight + + + + +Disable +ssd1306 +sh1106 +SITL + + + + +Disabled +Aircraft +Rover + + + + +Disabled + + + +0:Build in LED, 1:Internal ToshibaLED, 2:External ToshibaLED, 3:External PCA9685, 4:Oreo LED, 5:UAVCAN, 6:NCP5623 External, 7:NCP5623 Internal, 8:NeoPixel + + + +LowIsOn +HighIsOn + + + +0 100 +% +percent + + + + + +None +LightWareSF40C +MAVLink +TeraRangerTower +RangeFinder +RPLidarA2 +TeraRangerTowerEvo +SITL +MorseSITL +AirSimSITL + +True + + + +Default +Upside Down + + + +deg +degrees +-180 180 + + +deg +degrees +0 360 + + +deg +degrees +0 45 + + +deg +degrees +0 360 + + +deg +degrees +0 45 + + +deg +degrees +0 360 + + +deg +degrees +0 45 + + +deg +degrees +0 360 + + +deg +degrees +0 45 + + +deg +degrees +0 360 + + +deg +degrees +0 45 + + +deg +degrees +0 360 + + +deg +degrees +0 45 + + + +None +LightWareSF40C +MAVLink +TeraRangerTower +RangeFinder +RPLidarA2 +TeraRangerTowerEvo + +True + + + +Default +Upside Down + + + +deg +degrees +-180 180 + + + + +Hz +hertz +0.5 5 +0.1 + + +1.000 3.000 + + +1.000 8.000 + + +0.500 1.500 +0.05 + + +0.000 3.000 + + +0 1000 +d% +decipercent + + +0.000 0.400 + + +1.000 100.000 +Hz +hertz + + +0.500 2.000 + + +0.1 6.0 +0.1 + + +0.02 1.00 +0.01 + + +0.00 1.00 +0.001 + + +0 4500 +10 +cm/s/s +centimeters per square second + + +0 100 +Hz +hertz + + +0 100 +Hz +hertz + + +deg +degrees +0 45 +1 + + + + + + +km +kilometers +0.1 + + + +DoNotIncludeHome +IncludeHome + + + + + +0.0 120.0 +s +seconds + + +0:Ignore RC Receiver, 1:Ignore MAVLink Overrides, 2:Ignore Receiver Failsafe + + + + +PWM +PWM in microseconds +800 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + + +Normal +Reversed + + + +PWM +PWM in microseconds +0 200 + + + +Do Nothing +ModeRTL +Camera Trigger +ModeAuto +Auto Mission Reset +Relay On/Off +Landing Gear +Relay2 On/Off +Lost Plane Sound +Motor Emergency Stop +Relay3 On/Off +Relay4 On/Off +ArmDisarm +InvertedFlight +RC Override Enable +ModeManual +ModeGuided +Clear Waypoints +Compass Learn +Reverse Throttle +GPS Disable +Relay5 +Relay6 +ModeCircle +KillIMU1 +KillIMU2 + + + + + +PWM +PWM in microseconds +800 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + + +Normal +Reversed + + + +PWM +PWM in microseconds +0 200 + + + +Do Nothing +ModeRTL +Camera Trigger +ModeAuto +Auto Mission Reset +Relay On/Off +Landing Gear +Relay2 On/Off +Lost Plane Sound +Motor Emergency Stop +Relay3 On/Off +Relay4 On/Off +ArmDisarm +InvertedFlight +RC Override Enable +ModeManual +ModeGuided +Clear Waypoints +Compass Learn +Reverse Throttle +GPS Disable +Relay5 +Relay6 +ModeCircle +KillIMU1 +KillIMU2 + + + + + +PWM +PWM in microseconds +800 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + + +Normal +Reversed + + + +PWM +PWM in microseconds +0 200 + + + +Do Nothing +ModeRTL +Camera Trigger +ModeAuto +Auto Mission Reset +Relay On/Off +Landing Gear +Relay2 On/Off +Lost Plane Sound +Motor Emergency Stop +Relay3 On/Off +Relay4 On/Off +ArmDisarm +InvertedFlight +RC Override Enable +ModeManual +ModeGuided +Clear Waypoints +Compass Learn +Reverse Throttle +GPS Disable +Relay5 +Relay6 +ModeCircle +KillIMU1 +KillIMU2 + + + + + +PWM +PWM in microseconds +800 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + + +Normal +Reversed + + + +PWM +PWM in microseconds +0 200 + + + +Do Nothing +ModeRTL +Camera Trigger +ModeAuto +Auto Mission Reset +Relay On/Off +Landing Gear +Relay2 On/Off +Lost Plane Sound +Motor Emergency Stop +Relay3 On/Off +Relay4 On/Off +ArmDisarm +InvertedFlight +RC Override Enable +ModeManual +ModeGuided +Clear Waypoints +Compass Learn +Reverse Throttle +GPS Disable +Relay5 +Relay6 +ModeCircle +KillIMU1 +KillIMU2 + + + + + +PWM +PWM in microseconds +800 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + + +Normal +Reversed + + + +PWM +PWM in microseconds +0 200 + + + +Do Nothing +ModeRTL +Camera Trigger +ModeAuto +Auto Mission Reset +Relay On/Off +Landing Gear +Relay2 On/Off +Lost Plane Sound +Motor Emergency Stop +Relay3 On/Off +Relay4 On/Off +ArmDisarm +InvertedFlight +RC Override Enable +ModeManual +ModeGuided +Clear Waypoints +Compass Learn +Reverse Throttle +GPS Disable +Relay5 +Relay6 +ModeCircle +KillIMU1 +KillIMU2 + + + + + +PWM +PWM in microseconds +800 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + + +Normal +Reversed + + + +PWM +PWM in microseconds +0 200 + + + +Do Nothing +ModeRTL +Camera Trigger +ModeAuto +Auto Mission Reset +Relay On/Off +Landing Gear +Relay2 On/Off +Lost Plane Sound +Motor Emergency Stop +Relay3 On/Off +Relay4 On/Off +ArmDisarm +InvertedFlight +RC Override Enable +ModeManual +ModeGuided +Clear Waypoints +Compass Learn +Reverse Throttle +GPS Disable +Relay5 +Relay6 +ModeCircle +KillIMU1 +KillIMU2 + + + + + +PWM +PWM in microseconds +800 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + + +Normal +Reversed + + + +PWM +PWM in microseconds +0 200 + + + +Do Nothing +ModeRTL +Camera Trigger +ModeAuto +Auto Mission Reset +Relay On/Off +Landing Gear +Relay2 On/Off +Lost Plane Sound +Motor Emergency Stop +Relay3 On/Off +Relay4 On/Off +ArmDisarm +InvertedFlight +RC Override Enable +ModeManual +ModeGuided +Clear Waypoints +Compass Learn +Reverse Throttle +GPS Disable +Relay5 +Relay6 +ModeCircle +KillIMU1 +KillIMU2 + + + + + +PWM +PWM in microseconds +800 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + + +Normal +Reversed + + + +PWM +PWM in microseconds +0 200 + + + +Do Nothing +ModeRTL +Camera Trigger +ModeAuto +Auto Mission Reset +Relay On/Off +Landing Gear +Relay2 On/Off +Lost Plane Sound +Motor Emergency Stop +Relay3 On/Off +Relay4 On/Off +ArmDisarm +InvertedFlight +RC Override Enable +ModeManual +ModeGuided +Clear Waypoints +Compass Learn +Reverse Throttle +GPS Disable +Relay5 +Relay6 +ModeCircle +KillIMU1 +KillIMU2 + + + + + +PWM +PWM in microseconds +800 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + + +Normal +Reversed + + + +PWM +PWM in microseconds +0 200 + + + +Do Nothing +ModeRTL +Camera Trigger +ModeAuto +Auto Mission Reset +Relay On/Off +Landing Gear +Relay2 On/Off +Lost Plane Sound +Motor Emergency Stop +Relay3 On/Off +Relay4 On/Off +ArmDisarm +InvertedFlight +RC Override Enable +ModeManual +ModeGuided +Clear Waypoints +Compass Learn +Reverse Throttle +GPS Disable +Relay5 +Relay6 +ModeCircle +KillIMU1 +KillIMU2 + + + + + +PWM +PWM in microseconds +800 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + + +Normal +Reversed + + + +PWM +PWM in microseconds +0 200 + + + +Do Nothing +ModeRTL +Camera Trigger +ModeAuto +Auto Mission Reset +Relay On/Off +Landing Gear +Relay2 On/Off +Lost Plane Sound +Motor Emergency Stop +Relay3 On/Off +Relay4 On/Off +ArmDisarm +InvertedFlight +RC Override Enable +ModeManual +ModeGuided +Clear Waypoints +Compass Learn +Reverse Throttle +GPS Disable +Relay5 +Relay6 +ModeCircle +KillIMU1 +KillIMU2 + + + + + +PWM +PWM in microseconds +800 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + + +Normal +Reversed + + + +PWM +PWM in microseconds +0 200 + + + +Do Nothing +ModeRTL +Camera Trigger +ModeAuto +Auto Mission Reset +Relay On/Off +Landing Gear +Relay2 On/Off +Lost Plane Sound +Motor Emergency Stop +Relay3 On/Off +Relay4 On/Off +ArmDisarm +InvertedFlight +RC Override Enable +ModeManual +ModeGuided +Clear Waypoints +Compass Learn +Reverse Throttle +GPS Disable +Relay5 +Relay6 +ModeCircle +KillIMU1 +KillIMU2 + + + + + +PWM +PWM in microseconds +800 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + + +Normal +Reversed + + + +PWM +PWM in microseconds +0 200 + + + +Do Nothing +ModeRTL +Camera Trigger +ModeAuto +Auto Mission Reset +Relay On/Off +Landing Gear +Relay2 On/Off +Lost Plane Sound +Motor Emergency Stop +Relay3 On/Off +Relay4 On/Off +ArmDisarm +InvertedFlight +RC Override Enable +ModeManual +ModeGuided +Clear Waypoints +Compass Learn +Reverse Throttle +GPS Disable +Relay5 +Relay6 +ModeCircle +KillIMU1 +KillIMU2 + + + + + +PWM +PWM in microseconds +800 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + + +Normal +Reversed + + + +PWM +PWM in microseconds +0 200 + + + +Do Nothing +ModeRTL +Camera Trigger +ModeAuto +Auto Mission Reset +Relay On/Off +Landing Gear +Relay2 On/Off +Lost Plane Sound +Motor Emergency Stop +Relay3 On/Off +Relay4 On/Off +ArmDisarm +InvertedFlight +RC Override Enable +ModeManual +ModeGuided +Clear Waypoints +Compass Learn +Reverse Throttle +GPS Disable +Relay5 +Relay6 +ModeCircle +KillIMU1 +KillIMU2 + + + + + +PWM +PWM in microseconds +800 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + + +Normal +Reversed + + + +PWM +PWM in microseconds +0 200 + + + +Do Nothing +ModeRTL +Camera Trigger +ModeAuto +Auto Mission Reset +Relay On/Off +Landing Gear +Relay2 On/Off +Lost Plane Sound +Motor Emergency Stop +Relay3 On/Off +Relay4 On/Off +ArmDisarm +InvertedFlight +RC Override Enable +ModeManual +ModeGuided +Clear Waypoints +Compass Learn +Reverse Throttle +GPS Disable +Relay5 +Relay6 +ModeCircle +KillIMU1 +KillIMU2 + + + + + +PWM +PWM in microseconds +800 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + + +Normal +Reversed + + + +PWM +PWM in microseconds +0 200 + + + +Do Nothing +ModeRTL +Camera Trigger +ModeAuto +Auto Mission Reset +Relay On/Off +Landing Gear +Relay2 On/Off +Lost Plane Sound +Motor Emergency Stop +Relay3 On/Off +Relay4 On/Off +ArmDisarm +InvertedFlight +RC Override Enable +ModeManual +ModeGuided +Clear Waypoints +Compass Learn +Reverse Throttle +GPS Disable +Relay5 +Relay6 +ModeCircle +KillIMU1 +KillIMU2 + + + + + +PWM +PWM in microseconds +800 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + + +Normal +Reversed + + + +PWM +PWM in microseconds +0 200 + + + +Do Nothing +ModeRTL +Camera Trigger +ModeAuto +Auto Mission Reset +Relay On/Off +Landing Gear +Relay2 On/Off +Lost Plane Sound +Motor Emergency Stop +Relay3 On/Off +Relay4 On/Off +ArmDisarm +InvertedFlight +RC Override Enable +ModeManual +ModeGuided +Clear Waypoints +Compass Learn +Reverse Throttle +GPS Disable +Relay5 +Relay6 +ModeCircle +KillIMU1 +KillIMU2 + + + + + +1 8 +1 +True + + +1 8 +1 +True + + +1 8 +1 +True + + +1 8 +1 +True + + +1 8 +1 +True +1: 1, 2: 2, 3: 3, 4: 4, 5: 5, 6: 6, 7: 7, 8: 8 + + +1 8 +1 +True +1: 1, 2: 2, 3: 3, 4: 4, 5: 5, 6: 6, 7: 7, 8: 8 + + + + + +Disabled +BB Blue GP0 pin 4 +AUXOUT1 +AUXOUT2 +AUXOUT3 +AUXOUT4 +AUXOUT5 +AUXOUT6 +BB Blue GP0 pin 3 +BB Blue GP0 pin 6 +BB Blue GP0 pin 5 + + + + +Disabled +BB Blue GP0 pin 4 +AUXOUT1 +AUXOUT2 +AUXOUT3 +AUXOUT4 +AUXOUT5 +AUXOUT6 +BB Blue GP0 pin 3 +BB Blue GP0 pin 6 +BB Blue GP0 pin 5 + + + + +Disabled +BB Blue GP0 pin 4 +AUXOUT1 +AUXOUT2 +AUXOUT3 +AUXOUT4 +AUXOUT5 +AUXOUT6 +BB Blue GP0 pin 3 +BB Blue GP0 pin 6 +BB Blue GP0 pin 5 + + + + +Disabled +BB Blue GP0 pin 4 +AUXOUT1 +AUXOUT2 +AUXOUT3 +AUXOUT4 +AUXOUT5 +AUXOUT6 +BB Blue GP0 pin 3 +BB Blue GP0 pin 6 +BB Blue GP0 pin 5 + + + + +Off +On +NoChange + + + + +Disabled +BB Blue GP0 pin 4 +AUXOUT1 +AUXOUT2 +AUXOUT3 +AUXOUT4 +AUXOUT5 +AUXOUT6 +BB Blue GP0 pin 3 +BB Blue GP0 pin 6 +BB Blue GP0 pin 5 + + + + +Disabled +BB Blue GP0 pin 4 +AUXOUT1 +AUXOUT2 +AUXOUT3 +AUXOUT4 +AUXOUT5 +AUXOUT6 +BB Blue GP0 pin 3 +BB Blue GP0 pin 6 +BB Blue GP0 pin 5 + + + + + + +None +Analog +MaxbotixI2C +LidarLiteV2-I2C +PWM +BBB-PRU +LightWareI2C +LightWareSerial +Bebop +MAVLink +uLanding +LeddarOne +MaxbotixSerial +TeraRangerI2C +LidarLiteV3-I2C +VL53L0X +NMEA +WASP-LRF +BenewakeTF02 +BenewakeTFmini +LidarLightV3HP +PWM +BlueRoboticsPing +UAVCAN +BenewakeTFMiniPlus + + + + +Not Used +PX4-airspeed port +Pixhawk-airspeed port + + + +m/V +meters per volt +0.001 + + +V +volt +0.001 + + + +Linear +Inverted +Hyperbolic + + + +cm +centimeters +1 + + +cm +centimeters +1 + + + +Not Used +Pixhawk AUXOUT1 +Pixhawk AUXOUT2 +Pixhawk AUXOUT3 +Pixhawk AUXOUT4 +Pixhawk AUXOUT5 +Pixhawk AUXOUT6 +PX4 FMU Relay1 +PX4 FMU Relay2 +PX4IO Relay1 +PX4IO Relay2 +PX4IO ACC1 +PX4IO ACC2 + + + + +No +Yes + + + +m +meters +0 32767 + + +cm +centimeters +5 127 +1 + + +0 127 +1 + + +m +meters + + +m +meters + + +m +meters + + + +Forward +Forward-Right +Right +Back-Right +Back +Back-Left +Left +Forward-Left +Up +Down + + + + + +0 255 + + +0 255 + + +0 10000 + + +0 255 + + +-1 255 + + + +Low Speed +High Speed + + + + + + +None +Analog +MaxbotixI2C +LidarLiteV2-I2C +PWM +BBB-PRU +LightWareI2C +LightWareSerial +Bebop +MAVLink +uLanding +LeddarOne +MaxbotixSerial +TeraRangerI2C +LidarLiteV3-I2C +VL53L0X +NMEA +WASP-LRF +BenewakeTF02 +BenewakeTFmini +LidarLightV3HP +PWM +BlueRoboticsPing +UAVCAN +BenewakeTFMiniPlus + + + + +Not Used +PX4-airspeed port +Pixhawk-airspeed port + + + +m/V +meters per volt +0.001 + + +V +volt +0.001 + + + +Linear +Inverted +Hyperbolic + + + +cm +centimeters +1 + + +cm +centimeters +1 + + + +Not Used +Pixhawk AUXOUT1 +Pixhawk AUXOUT2 +Pixhawk AUXOUT3 +Pixhawk AUXOUT4 +Pixhawk AUXOUT5 +Pixhawk AUXOUT6 +PX4 FMU Relay1 +PX4 FMU Relay2 +PX4IO Relay1 +PX4IO Relay2 +PX4IO ACC1 +PX4IO ACC2 + + + + +No +Yes + + + +m +meters +0 32767 + + +cm +centimeters +5 127 +1 + + +0 127 +1 + + +m +meters + + +m +meters + + +m +meters + + + +Forward +Forward-Right +Right +Back-Right +Back +Back-Left +Left +Forward-Left +Up +Down + + + + + +0 255 + + +0 255 + + +0 10000 + + +0 255 + + +-1 255 + + + +Low Speed +High Speed + + + + + + +None +Analog +MaxbotixI2C +LidarLiteV2-I2C +PWM +BBB-PRU +LightWareI2C +LightWareSerial +Bebop +MAVLink +uLanding +LeddarOne +MaxbotixSerial +TeraRangerI2C +LidarLiteV3-I2C +VL53L0X +NMEA +WASP-LRF +BenewakeTF02 +BenewakeTFmini +LidarLightV3HP +PWM +BlueRoboticsPing +UAVCAN +BenewakeTFMiniPlus + + + + +Not Used +PX4-airspeed port +Pixhawk-airspeed port + + + +m/V +meters per volt +0.001 + + +V +volt +0.001 + + + +Linear +Inverted +Hyperbolic + + + +cm +centimeters +1 + + +cm +centimeters +1 + + + +Not Used +Pixhawk AUXOUT1 +Pixhawk AUXOUT2 +Pixhawk AUXOUT3 +Pixhawk AUXOUT4 +Pixhawk AUXOUT5 +Pixhawk AUXOUT6 +PX4 FMU Relay1 +PX4 FMU Relay2 +PX4IO Relay1 +PX4IO Relay2 +PX4IO ACC1 +PX4IO ACC2 + + + + +No +Yes + + + +m +meters +0 32767 + + +cm +centimeters +5 127 +1 + + +0 127 +1 + + +m +meters + + +m +meters + + +m +meters + + + +Forward +Forward-Right +Right +Back-Right +Back +Back-Left +Left +Forward-Left +Up +Down + + + + + +0 255 + + +0 255 + + +0 10000 + + +0 255 + + +-1 255 + + + +Low Speed +High Speed + + + + + + +None +Analog +MaxbotixI2C +LidarLiteV2-I2C +PWM +BBB-PRU +LightWareI2C +LightWareSerial +Bebop +MAVLink +uLanding +LeddarOne +MaxbotixSerial +TeraRangerI2C +LidarLiteV3-I2C +VL53L0X +NMEA +WASP-LRF +BenewakeTF02 +BenewakeTFmini +LidarLightV3HP +PWM +BlueRoboticsPing +UAVCAN +BenewakeTFMiniPlus + + + + +Not Used +PX4-airspeed port +Pixhawk-airspeed port + + + +m/V +meters per volt +0.001 + + +V +volt +0.001 + + + +Linear +Inverted +Hyperbolic + + + +cm +centimeters +1 + + +cm +centimeters +1 + + + +Not Used +Pixhawk AUXOUT1 +Pixhawk AUXOUT2 +Pixhawk AUXOUT3 +Pixhawk AUXOUT4 +Pixhawk AUXOUT5 +Pixhawk AUXOUT6 +PX4 FMU Relay1 +PX4 FMU Relay2 +PX4IO Relay1 +PX4IO Relay2 +PX4IO ACC1 +PX4IO ACC2 + + + + +No +Yes + + + +m +meters +0 32767 + + +cm +centimeters +5 127 +1 + + +0 127 +1 + + +m +meters + + +m +meters + + +m +meters + + + +Forward +Forward-Right +Right +Back-Right +Back +Back-Left +Left +Forward-Left +Up +Down + + + + + +0 255 + + +0 255 + + +0 10000 + + +0 255 + + +-1 255 + + + +Low Speed +High Speed + + + + + + +None +Analog +MaxbotixI2C +LidarLiteV2-I2C +PWM +BBB-PRU +LightWareI2C +LightWareSerial +Bebop +MAVLink +uLanding +LeddarOne +MaxbotixSerial +TeraRangerI2C +LidarLiteV3-I2C +VL53L0X +NMEA +WASP-LRF +BenewakeTF02 +BenewakeTFmini +LidarLightV3HP +PWM +BlueRoboticsPing +UAVCAN +BenewakeTFMiniPlus + + + + +Not Used +PX4-airspeed port +Pixhawk-airspeed port + + + +m/V +meters per volt +0.001 + + +V +volt +0.001 + + + +Linear +Inverted +Hyperbolic + + + +cm +centimeters +1 + + +cm +centimeters +1 + + + +Not Used +Pixhawk AUXOUT1 +Pixhawk AUXOUT2 +Pixhawk AUXOUT3 +Pixhawk AUXOUT4 +Pixhawk AUXOUT5 +Pixhawk AUXOUT6 +PX4 FMU Relay1 +PX4 FMU Relay2 +PX4IO Relay1 +PX4IO Relay2 +PX4IO ACC1 +PX4IO ACC2 + + + + +No +Yes + + + +m +meters +0 32767 + + +cm +centimeters +5 127 +1 + + +0 127 +1 + + +m +meters + + +m +meters + + +m +meters + + + +Forward +Forward-Right +Right +Back-Right +Back +Back-Left +Left +Forward-Left +Up +Down + + + + + +0 255 + + +0 255 + + +0 10000 + + +0 255 + + +-1 255 + + + +Low Speed +High Speed + + + + + + +None +Analog +MaxbotixI2C +LidarLiteV2-I2C +PWM +BBB-PRU +LightWareI2C +LightWareSerial +Bebop +MAVLink +uLanding +LeddarOne +MaxbotixSerial +TeraRangerI2C +LidarLiteV3-I2C +VL53L0X +NMEA +WASP-LRF +BenewakeTF02 +BenewakeTFmini +LidarLightV3HP +PWM +BlueRoboticsPing +UAVCAN +BenewakeTFMiniPlus + + + + +Not Used +PX4-airspeed port +Pixhawk-airspeed port + + + +m/V +meters per volt +0.001 + + +V +volt +0.001 + + + +Linear +Inverted +Hyperbolic + + + +cm +centimeters +1 + + +cm +centimeters +1 + + + +Not Used +Pixhawk AUXOUT1 +Pixhawk AUXOUT2 +Pixhawk AUXOUT3 +Pixhawk AUXOUT4 +Pixhawk AUXOUT5 +Pixhawk AUXOUT6 +PX4 FMU Relay1 +PX4 FMU Relay2 +PX4IO Relay1 +PX4IO Relay2 +PX4IO ACC1 +PX4IO ACC2 + + + + +No +Yes + + + +m +meters +0 32767 + + +cm +centimeters +5 127 +1 + + +0 127 +1 + + +m +meters + + +m +meters + + +m +meters + + + +Forward +Forward-Right +Right +Back-Right +Back +Back-Left +Left +Forward-Left +Up +Down + + + + + +0 255 + + +0 255 + + +0 10000 + + +0 255 + + +-1 255 + + + +Low Speed +High Speed + + + + + + +None +Analog +MaxbotixI2C +LidarLiteV2-I2C +PWM +BBB-PRU +LightWareI2C +LightWareSerial +Bebop +MAVLink +uLanding +LeddarOne +MaxbotixSerial +TeraRangerI2C +LidarLiteV3-I2C +VL53L0X +NMEA +WASP-LRF +BenewakeTF02 +BenewakeTFmini +LidarLightV3HP +PWM +BlueRoboticsPing +UAVCAN +BenewakeTFMiniPlus + + + + +Not Used +PX4-airspeed port +Pixhawk-airspeed port + + + +m/V +meters per volt +0.001 + + +V +volt +0.001 + + + +Linear +Inverted +Hyperbolic + + + +cm +centimeters +1 + + +cm +centimeters +1 + + + +Not Used +Pixhawk AUXOUT1 +Pixhawk AUXOUT2 +Pixhawk AUXOUT3 +Pixhawk AUXOUT4 +Pixhawk AUXOUT5 +Pixhawk AUXOUT6 +PX4 FMU Relay1 +PX4 FMU Relay2 +PX4IO Relay1 +PX4IO Relay2 +PX4IO ACC1 +PX4IO ACC2 + + + + +No +Yes + + + +m +meters +0 32767 + + +cm +centimeters +5 127 +1 + + +0 127 +1 + + +m +meters + + +m +meters + + +m +meters + + + +Forward +Forward-Right +Right +Back-Right +Back +Back-Left +Left +Forward-Left +Up +Down + + + + + +0 255 + + +0 255 + + +0 10000 + + +0 255 + + +-1 255 + + + +Low Speed +High Speed + + + + + + +None +Analog +MaxbotixI2C +LidarLiteV2-I2C +PWM +BBB-PRU +LightWareI2C +LightWareSerial +Bebop +MAVLink +uLanding +LeddarOne +MaxbotixSerial +TeraRangerI2C +LidarLiteV3-I2C +VL53L0X +NMEA +WASP-LRF +BenewakeTF02 +BenewakeTFmini +LidarLightV3HP +PWM +BlueRoboticsPing +UAVCAN +BenewakeTFMiniPlus + + + + +Not Used +PX4-airspeed port +Pixhawk-airspeed port + + + +m/V +meters per volt +0.001 + + +V +volt +0.001 + + + +Linear +Inverted +Hyperbolic + + + +cm +centimeters +1 + + +cm +centimeters +1 + + + +Not Used +Pixhawk AUXOUT1 +Pixhawk AUXOUT2 +Pixhawk AUXOUT3 +Pixhawk AUXOUT4 +Pixhawk AUXOUT5 +Pixhawk AUXOUT6 +PX4 FMU Relay1 +PX4 FMU Relay2 +PX4IO Relay1 +PX4IO Relay2 +PX4IO ACC1 +PX4IO ACC2 + + + + +No +Yes + + + +m +meters +0 32767 + + +cm +centimeters +5 127 +1 + + +0 127 +1 + + +m +meters + + +m +meters + + +m +meters + + + +Forward +Forward-Right +Right +Back-Right +Back +Back-Left +Left +Forward-Left +Up +Down + + + + + +0 255 + + +0 255 + + +0 10000 + + +0 255 + + +-1 255 + + + +Low Speed +High Speed + + + + + + +None +Analog +MaxbotixI2C +LidarLiteV2-I2C +PWM +BBB-PRU +LightWareI2C +LightWareSerial +Bebop +MAVLink +uLanding +LeddarOne +MaxbotixSerial +TeraRangerI2C +LidarLiteV3-I2C +VL53L0X +NMEA +WASP-LRF +BenewakeTF02 +BenewakeTFmini +LidarLightV3HP +PWM +BlueRoboticsPing +UAVCAN +BenewakeTFMiniPlus + + + + +Not Used +PX4-airspeed port +Pixhawk-airspeed port + + + +m/V +meters per volt +0.001 + + +V +volt +0.001 + + + +Linear +Inverted +Hyperbolic + + + +cm +centimeters +1 + + +cm +centimeters +1 + + + +Not Used +Pixhawk AUXOUT1 +Pixhawk AUXOUT2 +Pixhawk AUXOUT3 +Pixhawk AUXOUT4 +Pixhawk AUXOUT5 +Pixhawk AUXOUT6 +PX4 FMU Relay1 +PX4 FMU Relay2 +PX4IO Relay1 +PX4IO Relay2 +PX4IO ACC1 +PX4IO ACC2 + + + + +No +Yes + + + +m +meters +0 32767 + + +cm +centimeters +5 127 +1 + + +0 127 +1 + + +m +meters + + +m +meters + + +m +meters + + + +Forward +Forward-Right +Right +Back-Right +Back +Back-Left +Left +Forward-Left +Up +Down + + + + + +0 255 + + +0 255 + + +0 10000 + + +0 255 + + +-1 255 + + + +Low Speed +High Speed + + + + + + +None +Analog +MaxbotixI2C +LidarLiteV2-I2C +PWM +BBB-PRU +LightWareI2C +LightWareSerial +Bebop +MAVLink +uLanding +LeddarOne +MaxbotixSerial +TeraRangerI2C +LidarLiteV3-I2C +VL53L0X +NMEA +WASP-LRF +BenewakeTF02 +BenewakeTFmini +LidarLightV3HP +PWM +BlueRoboticsPing +UAVCAN +BenewakeTFMiniPlus + + + + +Not Used +PX4-airspeed port +Pixhawk-airspeed port + + + +m/V +meters per volt +0.001 + + +V +volt +0.001 + + + +Linear +Inverted +Hyperbolic + + + +cm +centimeters +1 + + +cm +centimeters +1 + + + +Not Used +Pixhawk AUXOUT1 +Pixhawk AUXOUT2 +Pixhawk AUXOUT3 +Pixhawk AUXOUT4 +Pixhawk AUXOUT5 +Pixhawk AUXOUT6 +PX4 FMU Relay1 +PX4 FMU Relay2 +PX4IO Relay1 +PX4IO Relay2 +PX4IO ACC1 +PX4IO ACC2 + + + + +No +Yes + + + +m +meters +0 32767 + + +cm +centimeters +5 127 +1 + + +0 127 +1 + + +m +meters + + +m +meters + + +m +meters + + + +Forward +Forward-Right +Right +Back-Right +Back +Back-Left +Left +Forward-Left +Up +Down + + + + + +0 255 + + +0 255 + + +0 10000 + + +0 255 + + +-1 255 + + + +Low Speed +High Speed + + + + + + +None +PX4-PWM +AUXPIN + + + +0.001 + + +1 + + +1 + + +0.1 + + + +Disabled +PixhawkAUX1 +PixhawkAUX2 +PixhawkAUX3 +PixhawkAUX4 +PixhawkAUX5 +PixhawkAUX6 + + + + +None +PX4-PWM +AUXPIN + + + +0.001 + + + +Disabled +PixhawkAUX1 +PixhawkAUX2 +PixhawkAUX3 +PixhawkAUX4 +PixhawkAUX5 +PixhawkAUX6 + + + + + + +Disabled +ShowSlips +ShowOverruns + + + + +50Hz +100Hz +200Hz +250Hz +300Hz +400Hz + +True + + + + + +None +Lua Scripts + +True + + +1000 1000000 +10000 + + +1024 1048576 +1024 +True + + + + + +1200 +2400 +4800 +9600 +19200 +38400 +57600 +111100 +115200 +256000 +460800 +500000 +921600 +1500000 + + + + +MAVlink1 +MAVLink2 + +True + + + +None +MAVLink1 +MAVLink2 +Frsky D +Frsky SPort +GPS +Alexmos Gimbal Serial +SToRM32 Gimbal Serial +Rangefinder +FrSky SPort Passthrough (OpenTX) +Lidar360 +Beacon +Volz servo out +SBus servo out +ESC Telemetry +Devo Telemetry +OpticalFlow +RobotisServo +NMEA Output +WindVane +SLCAN +RCIN + +True + + + +1200 +2400 +4800 +9600 +19200 +38400 +57600 +111100 +115200 +256000 +500000 +921600 +1500000 + + + + +None +MAVLink1 +MAVLink2 +Frsky D +Frsky SPort +GPS +Alexmos Gimbal Serial +SToRM32 Gimbal Serial +Rangefinder +FrSky SPort Passthrough (OpenTX) +Lidar360 +Beacon +Volz servo out +SBus servo out +ESC Telemetry +Devo Telemetry +OpticalFlow +RobotisServo +NMEA Output +WindVane +SLCAN +RCIN + +True + + + +1200 +2400 +4800 +9600 +19200 +38400 +57600 +111100 +115200 +256000 +500000 +921600 +1500000 + + + + +None +MAVLink1 +MAVLink2 +Frsky D +Frsky SPort +GPS +Alexmos Gimbal Serial +SToRM32 Gimbal Serial +Rangefinder +FrSky SPort Passthrough (OpenTX) +Lidar360 +Beacon +Volz servo out +SBus servo out +ESC Telemetry +Devo Telemetry +OpticalFlow +RobotisServo +NMEA Output +WindVane +SLCAN +RCIN + +True + + + +1200 +2400 +4800 +9600 +19200 +38400 +57600 +111100 +115200 +256000 +500000 +921600 +1500000 + + + + +None +MAVLink1 +MAVLink2 +Frsky D +Frsky SPort +GPS +Alexmos Gimbal Serial +SToRM32 Gimbal Serial +Rangefinder +FrSky SPort Passthrough (OpenTX) +Lidar360 +Beacon +Volz servo out +SBus servo out +ESC Telemetry +Devo Telemetry +OpticalFlow +RobotisServo +NMEA Output +WindVane +SLCAN +RCIN + +True + + + +1200 +2400 +4800 +9600 +19200 +38400 +57600 +111100 +115200 +256000 +500000 +921600 +1500000 + + + + +None +MAVLink1 +MAVLink2 +Frsky D +Frsky SPort +GPS +Alexmos Gimbal Serial +SToRM32 Gimbal Serial +Rangefinder +FrSky SPort Passthrough (OpenTX) +Lidar360 +Beacon +Volz servo out +SBus servo out +ESC Telemetry +Devo Telemetry +OpticalFlow +RobotisServo +NMEA Output +WindVane +SLCAN +RCIN + +True + + + +1200 +2400 +4800 +9600 +19200 +38400 +57600 +111100 +115200 +256000 +500000 +921600 +1500000 + + + + +None +MAVLink1 +MAVLink2 +Frsky D +Frsky SPort +GPS +Alexmos Gimbal Serial +SToRM32 Gimbal Serial +Rangefinder +FrSky SPort Passthrough (OpenTX) +Lidar360 +Beacon +Volz servo out +SBus servo out +ESC Telemetry +Devo Telemetry +OpticalFlow +RobotisServo +NMEA Output +WindVane +SLCAN +RCIN + +True + + + +1200 +2400 +4800 +9600 +19200 +38400 +57600 +111100 +115200 +256000 +500000 +921600 +1500000 + + + +0:InvertRX, 1:InvertTX, 2:HalfDuplex, 4:Swap +True + + +0:InvertRX, 1:InvertTX, 2:HalfDuplex, 4:Swap +True + + +0:InvertRX, 1:InvertTX, 2:HalfDuplex, 4:Swap +True + + +0:InvertRX, 1:InvertTX, 2:HalfDuplex, 4:Swap +True + + +0:InvertRX, 1:InvertTX, 2:HalfDuplex, 4:Swap +True + + +0:InvertRX, 1:InvertTX, 2:HalfDuplex, 4:Swap +True + + + +Disabled +Serial0 +Serial1 +Serial2 +Serial3 +Serial4 +Serial5 +Serial6 + + + + +Disabled +Serial0 +Serial1 +Serial2 +Serial3 +Serial4 +Serial5 +Serial6 + + + +0 120 +s +seconds + + + +None +MAVLink1 +MAVLink2 +Frsky D +Frsky SPort +GPS +Alexmos Gimbal Serial +SToRM32 Gimbal Serial +Rangefinder +FrSky SPort Passthrough (OpenTX) +Lidar360 +Beacon +Volz servo out +SBus servo out +ESC Telemetry +Devo Telemetry +OpticalFlow +RobotisServo +NMEA Output +WindVane +SLCAN +RCIN + +True + + + +1200 +2400 +4800 +9600 +19200 +38400 +57600 +111100 +115200 +256000 +500000 +921600 +1500000 + + + +0:InvertRX, 1:InvertTX, 2:HalfDuplex, 4:Swap +True + + + + + +Disable +Enable + + + +25 400 +Hz +hertz + + + + +PWM +PWM in microseconds +500 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + + +Normal +Reversed + + + + +Disabled +RCPassThru +Flap +Flap_auto +Aileron +mount_pan +mount_tilt +mount_roll +mount_open +camera_trigger +release +mount2_pan +mount2_tilt +mount2_roll +mount2_open +DifferentialSpoilerLeft1 +DifferentialSpoilerRight1 +Elevator +Rudder +FlaperonLeft +FlaperonRight +GroundSteering +Parachute +EPM +LandingGear +EngineRunEnable +HeliRSC +HeliTailRSC +Motor1 +Motor2 +Motor3 +Motor4 +Motor5 +Motor6 +Motor7 +Motor8 +MotorTilt +RCIN1 +RCIN2 +RCIN3 +RCIN4 +RCIN5 +RCIN6 +RCIN7 +RCIN8 +RCIN9 +RCIN10 +RCIN11 +RCIN12 +RCIN13 +RCIN14 +RCIN15 +RCIN16 +Ignition +Choke +Starter +Throttle +TrackerYaw +TrackerPitch +ThrottleLeft +ThrottleRight +tiltMotorLeft +tiltMotorRight +ElevonLeft +ElevonRight +VTailLeft +VTailRight +BoostThrottle +Motor9 +Motor10 +Motor11 +Motor12 +DifferentialSpoilerLeft2 +DifferentialSpoilerRight2 +Winch +Main Sail +Camera ISO +Camera Focus +Camera Shutter Speed +Script 1 +Script 2 +Script 3 +Script 4 +Script 5 +Script 6 +Script 7 +Script 8 +Script 9 +Script 10 +Script 11 +Script 12 +Script 13 +Script 14 +Script 15 +Script 16 + + + + + +PWM +PWM in microseconds +500 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + + +Normal +Reversed + + + + +Disabled +RCPassThru +Flap +Flap_auto +Aileron +mount_pan +mount_tilt +mount_roll +mount_open +camera_trigger +release +mount2_pan +mount2_tilt +mount2_roll +mount2_open +DifferentialSpoilerLeft1 +DifferentialSpoilerRight1 +Elevator +Rudder +FlaperonLeft +FlaperonRight +GroundSteering +Parachute +EPM +LandingGear +EngineRunEnable +HeliRSC +HeliTailRSC +Motor1 +Motor2 +Motor3 +Motor4 +Motor5 +Motor6 +Motor7 +Motor8 +MotorTilt +RCIN1 +RCIN2 +RCIN3 +RCIN4 +RCIN5 +RCIN6 +RCIN7 +RCIN8 +RCIN9 +RCIN10 +RCIN11 +RCIN12 +RCIN13 +RCIN14 +RCIN15 +RCIN16 +Ignition +Choke +Starter +Throttle +TrackerYaw +TrackerPitch +ThrottleLeft +ThrottleRight +tiltMotorLeft +tiltMotorRight +ElevonLeft +ElevonRight +VTailLeft +VTailRight +BoostThrottle +Motor9 +Motor10 +Motor11 +Motor12 +DifferentialSpoilerLeft2 +DifferentialSpoilerRight2 +Winch +Main Sail +Camera ISO +Camera Focus +Camera Shutter Speed +Script 1 +Script 2 +Script 3 +Script 4 +Script 5 +Script 6 +Script 7 +Script 8 +Script 9 +Script 10 +Script 11 +Script 12 +Script 13 +Script 14 +Script 15 +Script 16 + + + + + +PWM +PWM in microseconds +500 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + + +Normal +Reversed + + + + +Disabled +RCPassThru +Flap +Flap_auto +Aileron +mount_pan +mount_tilt +mount_roll +mount_open +camera_trigger +release +mount2_pan +mount2_tilt +mount2_roll +mount2_open +DifferentialSpoilerLeft1 +DifferentialSpoilerRight1 +Elevator +Rudder +FlaperonLeft +FlaperonRight +GroundSteering +Parachute +EPM +LandingGear +EngineRunEnable +HeliRSC +HeliTailRSC +Motor1 +Motor2 +Motor3 +Motor4 +Motor5 +Motor6 +Motor7 +Motor8 +MotorTilt +RCIN1 +RCIN2 +RCIN3 +RCIN4 +RCIN5 +RCIN6 +RCIN7 +RCIN8 +RCIN9 +RCIN10 +RCIN11 +RCIN12 +RCIN13 +RCIN14 +RCIN15 +RCIN16 +Ignition +Choke +Starter +Throttle +TrackerYaw +TrackerPitch +ThrottleLeft +ThrottleRight +tiltMotorLeft +tiltMotorRight +ElevonLeft +ElevonRight +VTailLeft +VTailRight +BoostThrottle +Motor9 +Motor10 +Motor11 +Motor12 +DifferentialSpoilerLeft2 +DifferentialSpoilerRight2 +Winch +Main Sail +Camera ISO +Camera Focus +Camera Shutter Speed +Script 1 +Script 2 +Script 3 +Script 4 +Script 5 +Script 6 +Script 7 +Script 8 +Script 9 +Script 10 +Script 11 +Script 12 +Script 13 +Script 14 +Script 15 +Script 16 + + + + + +PWM +PWM in microseconds +500 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + + +Normal +Reversed + + + + +Disabled +RCPassThru +Flap +Flap_auto +Aileron +mount_pan +mount_tilt +mount_roll +mount_open +camera_trigger +release +mount2_pan +mount2_tilt +mount2_roll +mount2_open +DifferentialSpoilerLeft1 +DifferentialSpoilerRight1 +Elevator +Rudder +FlaperonLeft +FlaperonRight +GroundSteering +Parachute +EPM +LandingGear +EngineRunEnable +HeliRSC +HeliTailRSC +Motor1 +Motor2 +Motor3 +Motor4 +Motor5 +Motor6 +Motor7 +Motor8 +MotorTilt +RCIN1 +RCIN2 +RCIN3 +RCIN4 +RCIN5 +RCIN6 +RCIN7 +RCIN8 +RCIN9 +RCIN10 +RCIN11 +RCIN12 +RCIN13 +RCIN14 +RCIN15 +RCIN16 +Ignition +Choke +Starter +Throttle +TrackerYaw +TrackerPitch +ThrottleLeft +ThrottleRight +tiltMotorLeft +tiltMotorRight +ElevonLeft +ElevonRight +VTailLeft +VTailRight +BoostThrottle +Motor9 +Motor10 +Motor11 +Motor12 +DifferentialSpoilerLeft2 +DifferentialSpoilerRight2 +Winch +Main Sail +Camera ISO +Camera Focus +Camera Shutter Speed +Script 1 +Script 2 +Script 3 +Script 4 +Script 5 +Script 6 +Script 7 +Script 8 +Script 9 +Script 10 +Script 11 +Script 12 +Script 13 +Script 14 +Script 15 +Script 16 + + + + + +PWM +PWM in microseconds +500 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + + +Normal +Reversed + + + + +Disabled +RCPassThru +Flap +Flap_auto +Aileron +mount_pan +mount_tilt +mount_roll +mount_open +camera_trigger +release +mount2_pan +mount2_tilt +mount2_roll +mount2_open +DifferentialSpoilerLeft1 +DifferentialSpoilerRight1 +Elevator +Rudder +FlaperonLeft +FlaperonRight +GroundSteering +Parachute +EPM +LandingGear +EngineRunEnable +HeliRSC +HeliTailRSC +Motor1 +Motor2 +Motor3 +Motor4 +Motor5 +Motor6 +Motor7 +Motor8 +MotorTilt +RCIN1 +RCIN2 +RCIN3 +RCIN4 +RCIN5 +RCIN6 +RCIN7 +RCIN8 +RCIN9 +RCIN10 +RCIN11 +RCIN12 +RCIN13 +RCIN14 +RCIN15 +RCIN16 +Ignition +Choke +Starter +Throttle +TrackerYaw +TrackerPitch +ThrottleLeft +ThrottleRight +tiltMotorLeft +tiltMotorRight +ElevonLeft +ElevonRight +VTailLeft +VTailRight +BoostThrottle +Motor9 +Motor10 +Motor11 +Motor12 +DifferentialSpoilerLeft2 +DifferentialSpoilerRight2 +Winch +Main Sail +Camera ISO +Camera Focus +Camera Shutter Speed +Script 1 +Script 2 +Script 3 +Script 4 +Script 5 +Script 6 +Script 7 +Script 8 +Script 9 +Script 10 +Script 11 +Script 12 +Script 13 +Script 14 +Script 15 +Script 16 + + + + + +PWM +PWM in microseconds +500 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + + +Normal +Reversed + + + + +Disabled +RCPassThru +Flap +Flap_auto +Aileron +mount_pan +mount_tilt +mount_roll +mount_open +camera_trigger +release +mount2_pan +mount2_tilt +mount2_roll +mount2_open +DifferentialSpoilerLeft1 +DifferentialSpoilerRight1 +Elevator +Rudder +FlaperonLeft +FlaperonRight +GroundSteering +Parachute +EPM +LandingGear +EngineRunEnable +HeliRSC +HeliTailRSC +Motor1 +Motor2 +Motor3 +Motor4 +Motor5 +Motor6 +Motor7 +Motor8 +MotorTilt +RCIN1 +RCIN2 +RCIN3 +RCIN4 +RCIN5 +RCIN6 +RCIN7 +RCIN8 +RCIN9 +RCIN10 +RCIN11 +RCIN12 +RCIN13 +RCIN14 +RCIN15 +RCIN16 +Ignition +Choke +Starter +Throttle +TrackerYaw +TrackerPitch +ThrottleLeft +ThrottleRight +tiltMotorLeft +tiltMotorRight +ElevonLeft +ElevonRight +VTailLeft +VTailRight +BoostThrottle +Motor9 +Motor10 +Motor11 +Motor12 +DifferentialSpoilerLeft2 +DifferentialSpoilerRight2 +Winch +Main Sail +Camera ISO +Camera Focus +Camera Shutter Speed +Script 1 +Script 2 +Script 3 +Script 4 +Script 5 +Script 6 +Script 7 +Script 8 +Script 9 +Script 10 +Script 11 +Script 12 +Script 13 +Script 14 +Script 15 +Script 16 + + + + + +PWM +PWM in microseconds +500 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + + +Normal +Reversed + + + + +Disabled +RCPassThru +Flap +Flap_auto +Aileron +mount_pan +mount_tilt +mount_roll +mount_open +camera_trigger +release +mount2_pan +mount2_tilt +mount2_roll +mount2_open +DifferentialSpoilerLeft1 +DifferentialSpoilerRight1 +Elevator +Rudder +FlaperonLeft +FlaperonRight +GroundSteering +Parachute +EPM +LandingGear +EngineRunEnable +HeliRSC +HeliTailRSC +Motor1 +Motor2 +Motor3 +Motor4 +Motor5 +Motor6 +Motor7 +Motor8 +MotorTilt +RCIN1 +RCIN2 +RCIN3 +RCIN4 +RCIN5 +RCIN6 +RCIN7 +RCIN8 +RCIN9 +RCIN10 +RCIN11 +RCIN12 +RCIN13 +RCIN14 +RCIN15 +RCIN16 +Ignition +Choke +Starter +Throttle +TrackerYaw +TrackerPitch +ThrottleLeft +ThrottleRight +tiltMotorLeft +tiltMotorRight +ElevonLeft +ElevonRight +VTailLeft +VTailRight +BoostThrottle +Motor9 +Motor10 +Motor11 +Motor12 +DifferentialSpoilerLeft2 +DifferentialSpoilerRight2 +Winch +Main Sail +Camera ISO +Camera Focus +Camera Shutter Speed +Script 1 +Script 2 +Script 3 +Script 4 +Script 5 +Script 6 +Script 7 +Script 8 +Script 9 +Script 10 +Script 11 +Script 12 +Script 13 +Script 14 +Script 15 +Script 16 + + + + + +PWM +PWM in microseconds +500 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + + +Normal +Reversed + + + + +Disabled +RCPassThru +Flap +Flap_auto +Aileron +mount_pan +mount_tilt +mount_roll +mount_open +camera_trigger +release +mount2_pan +mount2_tilt +mount2_roll +mount2_open +DifferentialSpoilerLeft1 +DifferentialSpoilerRight1 +Elevator +Rudder +FlaperonLeft +FlaperonRight +GroundSteering +Parachute +EPM +LandingGear +EngineRunEnable +HeliRSC +HeliTailRSC +Motor1 +Motor2 +Motor3 +Motor4 +Motor5 +Motor6 +Motor7 +Motor8 +MotorTilt +RCIN1 +RCIN2 +RCIN3 +RCIN4 +RCIN5 +RCIN6 +RCIN7 +RCIN8 +RCIN9 +RCIN10 +RCIN11 +RCIN12 +RCIN13 +RCIN14 +RCIN15 +RCIN16 +Ignition +Choke +Starter +Throttle +TrackerYaw +TrackerPitch +ThrottleLeft +ThrottleRight +tiltMotorLeft +tiltMotorRight +ElevonLeft +ElevonRight +VTailLeft +VTailRight +BoostThrottle +Motor9 +Motor10 +Motor11 +Motor12 +DifferentialSpoilerLeft2 +DifferentialSpoilerRight2 +Winch +Main Sail +Camera ISO +Camera Focus +Camera Shutter Speed +Script 1 +Script 2 +Script 3 +Script 4 +Script 5 +Script 6 +Script 7 +Script 8 +Script 9 +Script 10 +Script 11 +Script 12 +Script 13 +Script 14 +Script 15 +Script 16 + + + + + +PWM +PWM in microseconds +500 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + + +Normal +Reversed + + + + +Disabled +RCPassThru +Flap +Flap_auto +Aileron +mount_pan +mount_tilt +mount_roll +mount_open +camera_trigger +release +mount2_pan +mount2_tilt +mount2_roll +mount2_open +DifferentialSpoilerLeft1 +DifferentialSpoilerRight1 +Elevator +Rudder +FlaperonLeft +FlaperonRight +GroundSteering +Parachute +EPM +LandingGear +EngineRunEnable +HeliRSC +HeliTailRSC +Motor1 +Motor2 +Motor3 +Motor4 +Motor5 +Motor6 +Motor7 +Motor8 +MotorTilt +RCIN1 +RCIN2 +RCIN3 +RCIN4 +RCIN5 +RCIN6 +RCIN7 +RCIN8 +RCIN9 +RCIN10 +RCIN11 +RCIN12 +RCIN13 +RCIN14 +RCIN15 +RCIN16 +Ignition +Choke +Starter +Throttle +TrackerYaw +TrackerPitch +ThrottleLeft +ThrottleRight +tiltMotorLeft +tiltMotorRight +ElevonLeft +ElevonRight +VTailLeft +VTailRight +BoostThrottle +Motor9 +Motor10 +Motor11 +Motor12 +DifferentialSpoilerLeft2 +DifferentialSpoilerRight2 +Winch +Main Sail +Camera ISO +Camera Focus +Camera Shutter Speed +Script 1 +Script 2 +Script 3 +Script 4 +Script 5 +Script 6 +Script 7 +Script 8 +Script 9 +Script 10 +Script 11 +Script 12 +Script 13 +Script 14 +Script 15 +Script 16 + + + + + +PWM +PWM in microseconds +500 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + + +Normal +Reversed + + + + +Disabled +RCPassThru +Flap +Flap_auto +Aileron +mount_pan +mount_tilt +mount_roll +mount_open +camera_trigger +release +mount2_pan +mount2_tilt +mount2_roll +mount2_open +DifferentialSpoilerLeft1 +DifferentialSpoilerRight1 +Elevator +Rudder +FlaperonLeft +FlaperonRight +GroundSteering +Parachute +EPM +LandingGear +EngineRunEnable +HeliRSC +HeliTailRSC +Motor1 +Motor2 +Motor3 +Motor4 +Motor5 +Motor6 +Motor7 +Motor8 +MotorTilt +RCIN1 +RCIN2 +RCIN3 +RCIN4 +RCIN5 +RCIN6 +RCIN7 +RCIN8 +RCIN9 +RCIN10 +RCIN11 +RCIN12 +RCIN13 +RCIN14 +RCIN15 +RCIN16 +Ignition +Choke +Starter +Throttle +TrackerYaw +TrackerPitch +ThrottleLeft +ThrottleRight +tiltMotorLeft +tiltMotorRight +ElevonLeft +ElevonRight +VTailLeft +VTailRight +BoostThrottle +Motor9 +Motor10 +Motor11 +Motor12 +DifferentialSpoilerLeft2 +DifferentialSpoilerRight2 +Winch +Main Sail +Camera ISO +Camera Focus +Camera Shutter Speed +Script 1 +Script 2 +Script 3 +Script 4 +Script 5 +Script 6 +Script 7 +Script 8 +Script 9 +Script 10 +Script 11 +Script 12 +Script 13 +Script 14 +Script 15 +Script 16 + + + + + +PWM +PWM in microseconds +500 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + + +Normal +Reversed + + + + +Disabled +RCPassThru +Flap +Flap_auto +Aileron +mount_pan +mount_tilt +mount_roll +mount_open +camera_trigger +release +mount2_pan +mount2_tilt +mount2_roll +mount2_open +DifferentialSpoilerLeft1 +DifferentialSpoilerRight1 +Elevator +Rudder +FlaperonLeft +FlaperonRight +GroundSteering +Parachute +EPM +LandingGear +EngineRunEnable +HeliRSC +HeliTailRSC +Motor1 +Motor2 +Motor3 +Motor4 +Motor5 +Motor6 +Motor7 +Motor8 +MotorTilt +RCIN1 +RCIN2 +RCIN3 +RCIN4 +RCIN5 +RCIN6 +RCIN7 +RCIN8 +RCIN9 +RCIN10 +RCIN11 +RCIN12 +RCIN13 +RCIN14 +RCIN15 +RCIN16 +Ignition +Choke +Starter +Throttle +TrackerYaw +TrackerPitch +ThrottleLeft +ThrottleRight +tiltMotorLeft +tiltMotorRight +ElevonLeft +ElevonRight +VTailLeft +VTailRight +BoostThrottle +Motor9 +Motor10 +Motor11 +Motor12 +DifferentialSpoilerLeft2 +DifferentialSpoilerRight2 +Winch +Main Sail +Camera ISO +Camera Focus +Camera Shutter Speed +Script 1 +Script 2 +Script 3 +Script 4 +Script 5 +Script 6 +Script 7 +Script 8 +Script 9 +Script 10 +Script 11 +Script 12 +Script 13 +Script 14 +Script 15 +Script 16 + + + + + +PWM +PWM in microseconds +500 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + + +Normal +Reversed + + + + +Disabled +RCPassThru +Flap +Flap_auto +Aileron +mount_pan +mount_tilt +mount_roll +mount_open +camera_trigger +release +mount2_pan +mount2_tilt +mount2_roll +mount2_open +DifferentialSpoilerLeft1 +DifferentialSpoilerRight1 +Elevator +Rudder +FlaperonLeft +FlaperonRight +GroundSteering +Parachute +EPM +LandingGear +EngineRunEnable +HeliRSC +HeliTailRSC +Motor1 +Motor2 +Motor3 +Motor4 +Motor5 +Motor6 +Motor7 +Motor8 +MotorTilt +RCIN1 +RCIN2 +RCIN3 +RCIN4 +RCIN5 +RCIN6 +RCIN7 +RCIN8 +RCIN9 +RCIN10 +RCIN11 +RCIN12 +RCIN13 +RCIN14 +RCIN15 +RCIN16 +Ignition +Choke +Starter +Throttle +TrackerYaw +TrackerPitch +ThrottleLeft +ThrottleRight +tiltMotorLeft +tiltMotorRight +ElevonLeft +ElevonRight +VTailLeft +VTailRight +BoostThrottle +Motor9 +Motor10 +Motor11 +Motor12 +DifferentialSpoilerLeft2 +DifferentialSpoilerRight2 +Winch +Main Sail +Camera ISO +Camera Focus +Camera Shutter Speed +Script 1 +Script 2 +Script 3 +Script 4 +Script 5 +Script 6 +Script 7 +Script 8 +Script 9 +Script 10 +Script 11 +Script 12 +Script 13 +Script 14 +Script 15 +Script 16 + + + + + +PWM +PWM in microseconds +500 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + + +Normal +Reversed + + + + +Disabled +RCPassThru +Flap +Flap_auto +Aileron +mount_pan +mount_tilt +mount_roll +mount_open +camera_trigger +release +mount2_pan +mount2_tilt +mount2_roll +mount2_open +DifferentialSpoilerLeft1 +DifferentialSpoilerRight1 +Elevator +Rudder +FlaperonLeft +FlaperonRight +GroundSteering +Parachute +EPM +LandingGear +EngineRunEnable +HeliRSC +HeliTailRSC +Motor1 +Motor2 +Motor3 +Motor4 +Motor5 +Motor6 +Motor7 +Motor8 +MotorTilt +RCIN1 +RCIN2 +RCIN3 +RCIN4 +RCIN5 +RCIN6 +RCIN7 +RCIN8 +RCIN9 +RCIN10 +RCIN11 +RCIN12 +RCIN13 +RCIN14 +RCIN15 +RCIN16 +Ignition +Choke +Starter +Throttle +TrackerYaw +TrackerPitch +ThrottleLeft +ThrottleRight +tiltMotorLeft +tiltMotorRight +ElevonLeft +ElevonRight +VTailLeft +VTailRight +BoostThrottle +Motor9 +Motor10 +Motor11 +Motor12 +DifferentialSpoilerLeft2 +DifferentialSpoilerRight2 +Winch +Main Sail +Camera ISO +Camera Focus +Camera Shutter Speed +Script 1 +Script 2 +Script 3 +Script 4 +Script 5 +Script 6 +Script 7 +Script 8 +Script 9 +Script 10 +Script 11 +Script 12 +Script 13 +Script 14 +Script 15 +Script 16 + + + + + +PWM +PWM in microseconds +500 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + + +Normal +Reversed + + + + +Disabled +RCPassThru +Flap +Flap_auto +Aileron +mount_pan +mount_tilt +mount_roll +mount_open +camera_trigger +release +mount2_pan +mount2_tilt +mount2_roll +mount2_open +DifferentialSpoilerLeft1 +DifferentialSpoilerRight1 +Elevator +Rudder +FlaperonLeft +FlaperonRight +GroundSteering +Parachute +EPM +LandingGear +EngineRunEnable +HeliRSC +HeliTailRSC +Motor1 +Motor2 +Motor3 +Motor4 +Motor5 +Motor6 +Motor7 +Motor8 +MotorTilt +RCIN1 +RCIN2 +RCIN3 +RCIN4 +RCIN5 +RCIN6 +RCIN7 +RCIN8 +RCIN9 +RCIN10 +RCIN11 +RCIN12 +RCIN13 +RCIN14 +RCIN15 +RCIN16 +Ignition +Choke +Starter +Throttle +TrackerYaw +TrackerPitch +ThrottleLeft +ThrottleRight +tiltMotorLeft +tiltMotorRight +ElevonLeft +ElevonRight +VTailLeft +VTailRight +BoostThrottle +Motor9 +Motor10 +Motor11 +Motor12 +DifferentialSpoilerLeft2 +DifferentialSpoilerRight2 +Winch +Main Sail +Camera ISO +Camera Focus +Camera Shutter Speed +Script 1 +Script 2 +Script 3 +Script 4 +Script 5 +Script 6 +Script 7 +Script 8 +Script 9 +Script 10 +Script 11 +Script 12 +Script 13 +Script 14 +Script 15 +Script 16 + + + + + +PWM +PWM in microseconds +500 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + + +Normal +Reversed + + + + +Disabled +RCPassThru +Flap +Flap_auto +Aileron +mount_pan +mount_tilt +mount_roll +mount_open +camera_trigger +release +mount2_pan +mount2_tilt +mount2_roll +mount2_open +DifferentialSpoilerLeft1 +DifferentialSpoilerRight1 +Elevator +Rudder +FlaperonLeft +FlaperonRight +GroundSteering +Parachute +EPM +LandingGear +EngineRunEnable +HeliRSC +HeliTailRSC +Motor1 +Motor2 +Motor3 +Motor4 +Motor5 +Motor6 +Motor7 +Motor8 +MotorTilt +RCIN1 +RCIN2 +RCIN3 +RCIN4 +RCIN5 +RCIN6 +RCIN7 +RCIN8 +RCIN9 +RCIN10 +RCIN11 +RCIN12 +RCIN13 +RCIN14 +RCIN15 +RCIN16 +Ignition +Choke +Starter +Throttle +TrackerYaw +TrackerPitch +ThrottleLeft +ThrottleRight +tiltMotorLeft +tiltMotorRight +ElevonLeft +ElevonRight +VTailLeft +VTailRight +BoostThrottle +Motor9 +Motor10 +Motor11 +Motor12 +DifferentialSpoilerLeft2 +DifferentialSpoilerRight2 +Winch +Main Sail +Camera ISO +Camera Focus +Camera Shutter Speed +Script 1 +Script 2 +Script 3 +Script 4 +Script 5 +Script 6 +Script 7 +Script 8 +Script 9 +Script 10 +Script 11 +Script 12 +Script 13 +Script 14 +Script 15 +Script 16 + + + + + +PWM +PWM in microseconds +500 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + + +Normal +Reversed + + + + +Disabled +RCPassThru +Flap +Flap_auto +Aileron +mount_pan +mount_tilt +mount_roll +mount_open +camera_trigger +release +mount2_pan +mount2_tilt +mount2_roll +mount2_open +DifferentialSpoilerLeft1 +DifferentialSpoilerRight1 +Elevator +Rudder +FlaperonLeft +FlaperonRight +GroundSteering +Parachute +EPM +LandingGear +EngineRunEnable +HeliRSC +HeliTailRSC +Motor1 +Motor2 +Motor3 +Motor4 +Motor5 +Motor6 +Motor7 +Motor8 +MotorTilt +RCIN1 +RCIN2 +RCIN3 +RCIN4 +RCIN5 +RCIN6 +RCIN7 +RCIN8 +RCIN9 +RCIN10 +RCIN11 +RCIN12 +RCIN13 +RCIN14 +RCIN15 +RCIN16 +Ignition +Choke +Starter +Throttle +TrackerYaw +TrackerPitch +ThrottleLeft +ThrottleRight +tiltMotorLeft +tiltMotorRight +ElevonLeft +ElevonRight +VTailLeft +VTailRight +BoostThrottle +Motor9 +Motor10 +Motor11 +Motor12 +DifferentialSpoilerLeft2 +DifferentialSpoilerRight2 +Winch +Main Sail +Camera ISO +Camera Focus +Camera Shutter Speed +Script 1 +Script 2 +Script 3 +Script 4 +Script 5 +Script 6 +Script 7 +Script 8 +Script 9 +Script 10 +Script 11 +Script 12 +Script 13 +Script 14 +Script 15 +Script 16 + + + + + +0:Channel1,1:Channel2,2:Channel3,3:Channel4,4:Channel5,5:Channel6,6:Channel7,7:Channel8,8:Channel9,9:Channel10,10:Channel11,11:Channel12,12:Channel13,13:Channel14,14:Channel15,15:Channel16 + + + +Disabled +Enabled + + + + +Disabled +TestMotor1 +TestMotor2 +TestMotor3 +TestMotor4 +TestMotor5 +TestMotor6 +TestMotor7 +TestMotor8 + + + +s +seconds +0 300 + + +Hz +hertz +0 500 + + + +Disabled +Enabled + + + + +None +OneShot +OneShot125 +Brushed +DShot150 +DShot300 +DShot600 +DShot1200 + + + + +Console +Telem1 +Telem2 +Telem3 +Telem4 +Telem5 + + + +1 127 + + +0:Channel1,1:Channel2,2:Channel3,3:Channel4,4:Channel5,5:Channel6,6:Channel7,7:Channel8,8:Channel9,9:Channel10,10:Channel11,11:Channel12,12:Channel13,13:Channel14,14:Channel15,15:Channel16 + + + + +0 4095 + + +0 4095 + + + + +25 250 +Hz +hertz + + + + +0:Channel1,1:Channel2,2:Channel3,3:Channel4,4:Channel5,5:Channel6,6:Channel7,7:Channel8,8:Channel9,9:Channel10,10:Channel11,11:Channel12,12:Channel13,13:Channel14,14:Channel15,15:Channel16 + + + + +Hz +hertz +0 10 +1 + + +Hz +hertz +0 10 +1 + + +Hz +hertz +0 10 +1 + + +Hz +hertz +0 10 +1 + + +Hz +hertz +0 10 +1 + + +Hz +hertz +0 10 +1 + + +Hz +hertz +0 10 +1 + + +Hz +hertz +0 10 +1 + + + + +Hz +hertz +0 10 +1 + + +Hz +hertz +0 10 +1 + + +Hz +hertz +0 10 +1 + + +Hz +hertz +0 10 +1 + + +Hz +hertz +0 10 +1 + + +Hz +hertz +0 10 +1 + + +Hz +hertz +0 10 +1 + + +Hz +hertz +0 10 +1 + + + + +Hz +hertz +0 10 +1 + + +Hz +hertz +0 10 +1 + + +Hz +hertz +0 10 +1 + + +Hz +hertz +0 10 +1 + + +Hz +hertz +0 10 +1 + + +Hz +hertz +0 10 +1 + + +Hz +hertz +0 10 +1 + + +Hz +hertz +0 10 +1 + + + + +Hz +hertz +0 10 +1 + + +Hz +hertz +0 10 +1 + + +Hz +hertz +0 10 +1 + + +Hz +hertz +0 10 +1 + + +Hz +hertz +0 10 +1 + + +Hz +hertz +0 10 +1 + + +Hz +hertz +0 10 +1 + + +Hz +hertz +0 10 +1 + + + + + +Disable +Enable + + + +m +meters +1 + + + + +cm/s +centimeters per second +20 2000 +50 + + +cm +centimeters +5 1000 +1 + + +cm/s +centimeters per second +10 1000 +50 + + +cm/s +centimeters per second +10 500 +10 + + +cm/s/s +centimeters per square second +50 500 +10 + + +cm/s/s +centimeters per square second +50 500 +10 + + + +Disable +Enable + + + + diff --git a/src/FirmwarePlugin/APM/APMParameterFactMetaData.Sub.4.1.xml b/src/FirmwarePlugin/APM/APMParameterFactMetaData.Sub.4.1.xml new file mode 100644 index 0000000..3fb0b59 --- /dev/null +++ b/src/FirmwarePlugin/APM/APMParameterFactMetaData.Sub.4.1.xml @@ -0,0 +1,15203 @@ + + + + + + +cm +centimeters +-100 0 + + +True + + +1 255 + + + + +Hz +hertz +0 10 +.5 + + + +None +Roll +Pitch +Yaw + +0:Roll,1:Pitch,2:Yaw + + +0.01 2.0 +0.01 + + + +Disabled +Warn only +Disarm +Enter depth hold mode +Enter surface mode + + + + +Disabled +Warn only +Enter surface mode + + + + +Disabled +Warn only + + + + +Disabled +Warn only + + + +Pa +pascal + + +degC +degrees Celsius + + + +Disarm +Hold Position +Surface + + + + +Disabled +Warn Only +Disarm + + + +s +seconds +0.1 3.0 + + +10 90 + + + +Never change yaw +Face next waypoint +Face next waypoint except RTL +Face along GPS course +Correct crosstrack error + + + +cm/s +centimeters per second +50 500 +10 + + +cm/s +centimeters per second +50 500 +10 + + +cm/s/s +centimeters per square second +50 500 +10 + + +0 300 +PWM +PWM in microseconds +1 + + + +Default +Default+RCIN +Default+IMU +Default+Motors +NearlyAll-AC315 +NearlyAll +All+FastATT +All+MotBatt +All+FastIMU +All+FastIMU+PID +All+FullIMU +Disabled + +0:ATTITUDE_FAST,1:ATTITUDE_MED,2:GPS,3:PM,4:CTUN,5:NTUN,6:RCIN,7:IMU,8:CMD,9:CURRENT,10:RCOUT,11:OPTFLOW,12:PID,13:COMPASS,14:INAV,15:CAMERA,17:MOTBATT,18:IMU_FAST,19:IMU_RAW + + +cdeg +centidegrees +10 +1000 8000 + + + +Disabled +Warn only +Disarm + + + +0.6:Strict,0.8:Default,1.0:Relaxed + + + +Disabled +Warn only +Disarm + + + +0.1 1.0 + + +0.2 1.0 + + +0.1 0.8 + + +1 10 + + +1 10 +PWM +PWM in microseconds + + +0.5 4.0 + + +True + +BlueROV1 +Vectored +Vectored_6DOF +Vectored_6DOF_90 +SimpleROV-3 +SimpleROV-4 +SimpleROV-5 +Custom + + + +Hz +hertz +50 490 +1 + + +1 10 + + +1 10 + + +0 3 +0.1 + + +0 3 +0.1 + + + +Disabled +Leveling +Leveling and Limited + + + + +Disabled +Very Low +Low +Medium +High +Very High + + + + + + + +0.0 1.0 +.01 + + + +Disabled +Enabled + + + +0.1 0.4 +.01 + + +0.1 0.4 +.01 + + +0 127 +m/s +meters per second +1 + + +rad +radians +-0.1745 +0.1745 +0.01 + + +rad +radians +-0.1745 +0.1745 +0.01 + + +rad +radians +-0.1745 +0.1745 +0.01 + + + +None +Yaw45 +Yaw90 +Yaw135 +Yaw180 +Yaw225 +Yaw270 +Yaw315 +Roll180 +Roll180Yaw45 +Roll180Yaw90 +Roll180Yaw135 +Pitch180 +Roll180Yaw225 +Roll180Yaw270 +Roll180Yaw315 +Roll90 +Roll90Yaw45 +Roll90Yaw90 +Roll90Yaw135 +Roll270 +Roll270Yaw45 +Roll270Yaw90 +Roll270Yaw135 +Pitch90 +Pitch270 +Pitch180Yaw90 +Pitch180Yaw270 +Roll90Pitch90 +Roll180Pitch90 +Roll270Pitch90 +Roll90Pitch180 +Roll270Pitch180 +Roll90Pitch270 +Roll180Pitch270 +Roll270Pitch270 +Roll90Pitch180Yaw90 +Roll90Yaw270 +Yaw293Pitch68Roll180 +Pitch315 +Roll90Pitch315 +Custom + + + +0.001 0.5 +.01 + + +0 10 +1 + + + +Disabled +Enable EKF2 +Enable EKF3 +ExternalAHRS + + + +-180 180 +deg +degrees +1 + + +-180 180 +deg +degrees +1 + + +-180 180 +deg +degrees +1 + + + + +m/s/s +meters per square second +0.25 3.0 + + + +Disabled +ArmingOnly +ArmOrDisarm + + + +0:Land,1:VTOL Land,2:DO_LAND_START,3:Takeoff,4:VTOL Takeoff,5:Rallypoint + + +0:All,1:Barometer,2:Compass,3:GPS lock,4:INS,5:Parameters,6:RC Channels,7:Board voltage,8:Battery Level,10:Logging Available,11:Hardware safety switch,12:GPS Configuration,13:System,14:Mission,15:Rangefinder,16:Camera,17:AuxAuth,18:VisualOdometry,19:FFT + + + + + +None +I2C-MS4525D0 +Analog +I2C-MS5525 +I2C-MS5525 (0x76) +I2C-MS5525 (0x77) +I2C-SDP3X +I2C-DLVR-5in +UAVCAN +I2C-DLVR-10in +I2C-DLVR-20in +I2C-DLVR-30in +I2C-DLVR-60in +NMEA water speed +MSP +ASP5033 + + + + +DoNotUse +Use +UseWhenZeroThrottle + + + +0.1 + + +0.1 + + + + + + + + + +Disable +Enable + + + + + + +Bus0(internal) +Bus1(external) +Bus2(auxillary) + + + + +FirstSensor +2ndSensor + + + +0:Disable sensor, 1:Re-enable sensor + + +m/s +meters per second + + +m/s +meters per second + + + +None +I2C-MS4525D0 +Analog +I2C-MS5525 +I2C-MS5525 (0x76) +I2C-MS5525 (0x77) +I2C-SDP3X +I2C-DLVR-5in +UAVCAN +I2C-DLVR-10in +I2C-DLVR-20in +I2C-DLVR-30in +I2C-DLVR-60in +NMEA water speed +MSP +ASP5033 + + + + +Don't Use +use +UseWhenZeroThrottle + + + +0.1 + + +0.1 + + + + + + + + + +Disable +Enable + + + + + + +Bus0(internal) +Bus1(external) +Bus2(auxillary) + + + + + +cdeg/s +centidegrees per second +500 18000 +100 + + +cdeg/s/s +centidegrees per square second +0 72000 + +Disabled +VerySlow +Slow +Medium +Fast + +1000 + + + +Disabled +Enabled + + + +cdeg/s/s +centidegrees per square second +0 180000 +1000 + +Disabled +VerySlow +Slow +Medium +Fast + + + +cdeg/s/s +centidegrees per square second +0 180000 +1000 + +Disabled +VerySlow +Slow +Medium +Fast + + + + +Disabled +Enabled + + + +0.0 12.000 + + +0.0 12.000 + + +0.0 6.000 + + +0.5 10.0 + + +deg/s +degrees per second +0 1080 +1 + +Disabled +Slow +Medium +Fast + + + +deg/s +degrees per second +0 1080 +1 + +Disabled +Slow +Medium +Fast + + + +deg/s +degrees per second +0 1080 +1 + +Disabled +Slow +Medium +Fast + + + +s +seconds +0 1 +0.01 +0.5:Very Soft,0.2:Soft,0.15:Medium,0.1:Crisp,0.05:Very Crisp + + +0.0 0.30 +0.005 + + +0.0 0.5 +0.01 + + +0 1 +0.01 + + +0.0 0.02 +0.001 + + +0 0.5 +0.001 + + +1 100 +1 +Hz +hertz + + +1 100 +1 +Hz +hertz + + +1 100 +1 +Hz +hertz + + +0 200 +0.5 + + +0.0 0.30 +0.005 + + +0.0 0.5 +0.01 + + +0 1 +0.01 + + +0.0 0.02 +0.001 + + +0 0.5 +0.001 + + +1 100 +1 +Hz +hertz + + +1 100 +1 +Hz +hertz + + +1 100 +1 +Hz +hertz + + +0 200 +0.5 + + +0.0 0.50 +0.005 + + +0.0 0.05 +0.01 + + +0 1 +0.01 + + +0.000 0.02 +0.001 + + +0 0.5 +0.001 + + +1 100 +1 +Hz +hertz + + +1 100 +1 +Hz +hertz + + +1 100 +1 +Hz +hertz + + +0 200 +0.5 + + +0.1 0.25 + + +0.5 0.9 + + +0.5 0.9 + + +1 100 +1 +Hz +hertz + + +1 100 +1 +Hz +hertz + + +1 100 +1 +Hz +hertz + + + + +0:UseFence,1:UseProximitySensor,2:UseBeaconFence + + +m +meters +1 10 + + +m/s +meters per second +0 2 + + +m/s/s +meters per square second +0 9 + + +m +meters +0 2 + + + + +Pa +pascal +1 +True +True + + +degC +degrees Celsius +1 +True + + +m +meters +0.1 + + + +FirstBaro +2ndBaro +3rdBaro + + + + +Disabled +Bus0 +Bus1 + + + +1.0:Freshwater,1.024:Saltwater + + +Pa +pascal +1 +True +True + + +Pa +pascal +1 +True +True + + +% +percent +0 100 +1 + + +0:BMP085,1:BMP280,2:MS5611,3:MS5607,4:MS5637,5:FBM320,6:DPS280,7:LPS25H,8:Keller,9:MS5837,10:BMP388,11:SPL06,12:MSP + + +True + + +True + + +True + + + + + +Disabled +Enabled + + + +-1.0 1.0 +0.05 + + +-1.0 1.0 +0.05 + + +-1.0 1.0 +0.05 + + +-1.0 1.0 +0.05 + + + + + +Disabled +Enabled + + + +-1.0 1.0 +0.05 + + +-1.0 1.0 +0.05 + + +-1.0 1.0 +0.05 + + +-1.0 1.0 +0.05 + + + + + +Disabled +Enabled + + + +-1.0 1.0 +0.05 + + +-1.0 1.0 +0.05 + + +-1.0 1.0 +0.05 + + +-1.0 1.0 +0.05 + + + + + +Disabled +Analog Voltage Only +Analog Voltage and Current +Solo +Bebop +SMBus-Generic +UAVCAN-BatteryInfo +ESC +SumOfFollowing +FuelFlow +FuelLevelPWM +SMBUS-SUI3 +SMBUS-SUI6 +NeoDesign +SMBus-Maxell +Generator-Elec +Generator-Fuel +Rotoye + +True + + + +Disabled +Pixhawk/Pixracer/Navio2/Pixhawk2_PM1 +Navigator +Pixhawk2_PM2/CubeOrange_PM2 +CubeOrange +Durandal +PX4-v1 + +True + + + +Disabled +Pixhawk/Pixracer/Navio2/Pixhawk2_PM1 +CubeOrange_PM2/Navigator +Pixhawk2_PM2 +CubeOrange +Durandal +PX4-v1 + +True + + + + +A/V +ampere per volt + + +V +volt + + +mAh +milliampere hour +50 + + + + +s +seconds +1 +0 120 + + + +Raw Voltage +Sag Compensated Voltage + + + +V +volt +0.1 + + +mAh +milliampere hour +50 + + +V +volt +0.1 + + +mAh +milliampere hour +50 + + + +None +Disarm +Enter surface mode + + + + +None +Disarm +Enter surface mode + + + +V +volt +0.1 + + +mAh +milliampere hour +50 + + +0 3 + + +0:Ignore UAVCAN SoC + + + + + +Disabled +Analog Voltage Only +Analog Voltage and Current +Solo +Bebop +SMBus-Generic +UAVCAN-BatteryInfo +ESC +SumOfFollowing +FuelFlow +FuelLevelPWM +SMBUS-SUI3 +SMBUS-SUI6 +NeoDesign +SMBus-Maxell +Generator-Elec +Generator-Fuel +Rotoye + +True + + + +Disabled +Pixhawk/Pixracer/Navio2/Pixhawk2_PM1 +Navigator +Pixhawk2_PM2/CubeOrange_PM2 +CubeOrange +Durandal +PX4-v1 + +True + + + +Disabled +Pixhawk/Pixracer/Navio2/Pixhawk2_PM1 +CubeOrange_PM2/Navigator +Pixhawk2_PM2 +CubeOrange +Durandal +PX4-v1 + +True + + + + +A/V +ampere per volt + + +V +volt + + +mAh +milliampere hour +50 + + + + +s +seconds +1 +0 120 + + + +Raw Voltage +Sag Compensated Voltage + + + +V +volt +0.1 + + +mAh +milliampere hour +50 + + +V +volt +0.1 + + +mAh +milliampere hour +50 + + + +None +Disarm +Enter surface mode + + + + +None +Disarm +Enter surface mode + + + +V +volt +0.1 + + +mAh +milliampere hour +50 + + +0 3 + + +0:Ignore UAVCAN SoC + + + + + +Disabled +Analog Voltage Only +Analog Voltage and Current +Solo +Bebop +SMBus-Generic +UAVCAN-BatteryInfo +ESC +SumOfFollowing +FuelFlow +FuelLevelPWM +SMBUS-SUI3 +SMBUS-SUI6 +NeoDesign +SMBus-Maxell +Generator-Elec +Generator-Fuel +Rotoye + +True + + + +Disabled +Pixhawk/Pixracer/Navio2/Pixhawk2_PM1 +Navigator +Pixhawk2_PM2/CubeOrange_PM2 +CubeOrange +Durandal +PX4-v1 + +True + + + +Disabled +Pixhawk/Pixracer/Navio2/Pixhawk2_PM1 +CubeOrange_PM2/Navigator +Pixhawk2_PM2 +CubeOrange +Durandal +PX4-v1 + +True + + + + +A/V +ampere per volt + + +V +volt + + +mAh +milliampere hour +50 + + + + +s +seconds +1 +0 120 + + + +Raw Voltage +Sag Compensated Voltage + + + +V +volt +0.1 + + +mAh +milliampere hour +50 + + +V +volt +0.1 + + +mAh +milliampere hour +50 + + + +None +Disarm +Enter surface mode + + + + +None +Disarm +Enter surface mode + + + +V +volt +0.1 + + +mAh +milliampere hour +50 + + +0 3 + + +0:Ignore UAVCAN SoC + + + + + +Disabled +Analog Voltage Only +Analog Voltage and Current +Solo +Bebop +SMBus-Generic +UAVCAN-BatteryInfo +ESC +SumOfFollowing +FuelFlow +FuelLevelPWM +SMBUS-SUI3 +SMBUS-SUI6 +NeoDesign +SMBus-Maxell +Generator-Elec +Generator-Fuel +Rotoye + +True + + + +Disabled +Pixhawk/Pixracer/Navio2/Pixhawk2_PM1 +Navigator +Pixhawk2_PM2/CubeOrange_PM2 +CubeOrange +Durandal +PX4-v1 + +True + + + +Disabled +Pixhawk/Pixracer/Navio2/Pixhawk2_PM1 +CubeOrange_PM2/Navigator +Pixhawk2_PM2 +CubeOrange +Durandal +PX4-v1 + +True + + + + +A/V +ampere per volt + + +V +volt + + +mAh +milliampere hour +50 + + + + +s +seconds +1 +0 120 + + + +Raw Voltage +Sag Compensated Voltage + + + +V +volt +0.1 + + +mAh +milliampere hour +50 + + +V +volt +0.1 + + +mAh +milliampere hour +50 + + + +None +Disarm +Enter surface mode + + + + +None +Disarm +Enter surface mode + + + +V +volt +0.1 + + +mAh +milliampere hour +50 + + +0 3 + + +0:Ignore UAVCAN SoC + + + + + +Disabled +Analog Voltage Only +Analog Voltage and Current +Solo +Bebop +SMBus-Generic +UAVCAN-BatteryInfo +ESC +SumOfFollowing +FuelFlow +FuelLevelPWM +SMBUS-SUI3 +SMBUS-SUI6 +NeoDesign +SMBus-Maxell +Generator-Elec +Generator-Fuel +Rotoye + +True + + + +Disabled +Pixhawk/Pixracer/Navio2/Pixhawk2_PM1 +Navigator +Pixhawk2_PM2/CubeOrange_PM2 +CubeOrange +Durandal +PX4-v1 + +True + + + +Disabled +Pixhawk/Pixracer/Navio2/Pixhawk2_PM1 +CubeOrange_PM2/Navigator +Pixhawk2_PM2 +CubeOrange +Durandal +PX4-v1 + +True + + + + +A/V +ampere per volt + + +V +volt + + +mAh +milliampere hour +50 + + + + +s +seconds +1 +0 120 + + + +Raw Voltage +Sag Compensated Voltage + + + +V +volt +0.1 + + +mAh +milliampere hour +50 + + +V +volt +0.1 + + +mAh +milliampere hour +50 + + + +None +Disarm +Enter surface mode + + + + +None +Disarm +Enter surface mode + + + +V +volt +0.1 + + +mAh +milliampere hour +50 + + +0 3 + + +0:Ignore UAVCAN SoC + + + + + +Disabled +Analog Voltage Only +Analog Voltage and Current +Solo +Bebop +SMBus-Generic +UAVCAN-BatteryInfo +ESC +SumOfFollowing +FuelFlow +FuelLevelPWM +SMBUS-SUI3 +SMBUS-SUI6 +NeoDesign +SMBus-Maxell +Generator-Elec +Generator-Fuel +Rotoye + +True + + + +Disabled +Pixhawk/Pixracer/Navio2/Pixhawk2_PM1 +Navigator +Pixhawk2_PM2/CubeOrange_PM2 +CubeOrange +Durandal +PX4-v1 + +True + + + +Disabled +Pixhawk/Pixracer/Navio2/Pixhawk2_PM1 +CubeOrange_PM2/Navigator +Pixhawk2_PM2 +CubeOrange +Durandal +PX4-v1 + +True + + + + +A/V +ampere per volt + + +V +volt + + +mAh +milliampere hour +50 + + + + +s +seconds +1 +0 120 + + + +Raw Voltage +Sag Compensated Voltage + + + +V +volt +0.1 + + +mAh +milliampere hour +50 + + +V +volt +0.1 + + +mAh +milliampere hour +50 + + + +None +Disarm +Enter surface mode + + + + +None +Disarm +Enter surface mode + + + +V +volt +0.1 + + +mAh +milliampere hour +50 + + +0 3 + + +0:Ignore UAVCAN SoC + + + + + +Disabled +Analog Voltage Only +Analog Voltage and Current +Solo +Bebop +SMBus-Generic +UAVCAN-BatteryInfo +ESC +SumOfFollowing +FuelFlow +FuelLevelPWM +SMBUS-SUI3 +SMBUS-SUI6 +NeoDesign +SMBus-Maxell +Generator-Elec +Generator-Fuel +Rotoye + +True + + + +Disabled +Pixhawk/Pixracer/Navio2/Pixhawk2_PM1 +Navigator +Pixhawk2_PM2/CubeOrange_PM2 +CubeOrange +Durandal +PX4-v1 + +True + + + +Disabled +Pixhawk/Pixracer/Navio2/Pixhawk2_PM1 +CubeOrange_PM2/Navigator +Pixhawk2_PM2 +CubeOrange +Durandal +PX4-v1 + +True + + + + +A/V +ampere per volt + + +V +volt + + +mAh +milliampere hour +50 + + + + +s +seconds +1 +0 120 + + + +Raw Voltage +Sag Compensated Voltage + + + +V +volt +0.1 + + +mAh +milliampere hour +50 + + +V +volt +0.1 + + +mAh +milliampere hour +50 + + + +None +Disarm +Enter surface mode + + + + +None +Disarm +Enter surface mode + + + +V +volt +0.1 + + +mAh +milliampere hour +50 + + +0 3 + + +0:Ignore UAVCAN SoC + + + + + +Disabled +Analog Voltage Only +Analog Voltage and Current +Solo +Bebop +SMBus-Generic +UAVCAN-BatteryInfo +ESC +SumOfFollowing +FuelFlow +FuelLevelPWM +SMBUS-SUI3 +SMBUS-SUI6 +NeoDesign +SMBus-Maxell +Generator-Elec +Generator-Fuel +Rotoye + +True + + + +Disabled +Pixhawk/Pixracer/Navio2/Pixhawk2_PM1 +Navigator +Pixhawk2_PM2/CubeOrange_PM2 +CubeOrange +Durandal +PX4-v1 + +True + + + +Disabled +Pixhawk/Pixracer/Navio2/Pixhawk2_PM1 +CubeOrange_PM2/Navigator +Pixhawk2_PM2 +CubeOrange +Durandal +PX4-v1 + +True + + + + +A/V +ampere per volt + + +V +volt + + +mAh +milliampere hour +50 + + + + +s +seconds +1 +0 120 + + + +Raw Voltage +Sag Compensated Voltage + + + +V +volt +0.1 + + +mAh +milliampere hour +50 + + +V +volt +0.1 + + +mAh +milliampere hour +50 + + + +None +Disarm +Enter surface mode + + + + +None +Disarm +Enter surface mode + + + +V +volt +0.1 + + +mAh +milliampere hour +50 + + +0 3 + + +0:Ignore UAVCAN SoC + + + + + +Disabled +Analog Voltage Only +Analog Voltage and Current +Solo +Bebop +SMBus-Generic +UAVCAN-BatteryInfo +ESC +SumOfFollowing +FuelFlow +FuelLevelPWM +SMBUS-SUI3 +SMBUS-SUI6 +NeoDesign +SMBus-Maxell +Generator-Elec +Generator-Fuel +Rotoye + +True + + + +Disabled +Pixhawk/Pixracer/Navio2/Pixhawk2_PM1 +Navigator +Pixhawk2_PM2/CubeOrange_PM2 +CubeOrange +Durandal +PX4-v1 + +True + + + +Disabled +Pixhawk/Pixracer/Navio2/Pixhawk2_PM1 +CubeOrange_PM2/Navigator +Pixhawk2_PM2 +CubeOrange +Durandal +PX4-v1 + +True + + + + +A/V +ampere per volt + + +V +volt + + +mAh +milliampere hour +50 + + + + +s +seconds +1 +0 120 + + + +Raw Voltage +Sag Compensated Voltage + + + +V +volt +0.1 + + +mAh +milliampere hour +50 + + +V +volt +0.1 + + +mAh +milliampere hour +50 + + + +None +Disarm +Enter surface mode + + + + +None +Disarm +Enter surface mode + + + +V +volt +0.1 + + +mAh +milliampere hour +50 + + +0 3 + + +0:Ignore UAVCAN SoC + + + + + +No PWMs +One PWMs +Two PWMs +Three PWMs +Four PWMs +Five PWMs +Six PWMs +Seven PWMs +Eight PWMs + +True + + + +Disabled +Enabled +Auto + +True + + + +Disabled +Enabled +Auto + +True + + + +Disabled +Enabled +Auto + +True + + + +Disabled +Enabled +Auto + +True + + + +Disabled +Enabled +Auto + +True + + + +Disabled +Enabled + +True + + + +Disabled +50Hz +75Hz +100Hz +150Hz +200Hz +250Hz +300Hz + +True + + +-32768 32767 + + +0:Output1,1:Output2,2:Output3,3:Output4,4:Output5,5:Output6,6:Output7,7:Output8,8:Output9,9:Output10,10:Output11,11:Output12,12:Output13,13:Output14 +True + + +-1 80 +degC +degrees Celsius + + + +AUTO +PX4V1 +Pixhawk +Cube/Pixhawk2 +Pixracer +PixhawkMini +Pixhawk2Slim +Intel Aero FC +Pixhawk Pro +AUAV2.1 +PCNC1 +MINDPXV2 +SP01 +CUAVv5/FMUV5 +VRX BRAIN51 +VRX BRAIN52 +VRX BRAIN52E +VRX UBRAIN51 +VRX UBRAIN52 +VRX CORE10 +VRX BRAIN54 +PX4 FMUV6 +PX4 OLDDRIVERS + +True + + + +Disabled +Enabled + +True + + +0:ActiveForSafetyEnable,1:ActiveForSafetyDisable,2:ActiveWhenArmed,3:Force safety on when the aircraft disarms + + +V +volt +4.0 5.5 +0.1 + + +V +volt +3.3 12.0 +0.1 + + +0 32 +1 + + + +3.3V +5V + + + +0:Enable hardware watchdog, 1:Disable MAVftp, 2:Enable set of internal parameters, 3:Enable Debug Pins + + +0 10000 +ms +milliseconds + + +1 500 +1 + + +0 1 +0.1 + + +0 100 +1 + + +0 10 +1 +True + + + + + +None +CYRF6936 +CC2500 +BK2425 + + + + +Auto +DSM2 +DSMX + + + +0 4 + + + +NotDisabled +Disabled + + + +0 16 + + +0 16 + + + +Disabled +Enabled + + + +1 8 + + + +Disabled +MinChannel +MidChannel +MaxChannel +MinChannelCW +MidChannelCW +MaxChannelCW + + + + +Mode1 +Mode2 + + + + +Disabled +TestChan1 +TestChan2 +TestChan3 +TestChan4 +TestChan5 +TestChan6 +TestChan7 +TestChan8 + + + +0 16 + + +0 16 + + +1 8 + + +0 40 + + +0 120 + + +0 31 + + + + +0:GPS,1:MAVLINK_SYSTEM_TIME,2:HW + + +-720 +840 + + + + + +Disabled +shift +arm_toggle +arm +disarm +mode_manual +mode_stabilize +mode_depth_hold +mode_poshold +mode_auto +mode_circle +mode_guided +mode_acro +mount_center +mount_tilt_up +mount_tilt_down +camera_trigger +camera_source_toggle +mount_pan_right +mount_pan_left +lights1_cycle +lights1_brighter +lights1_dimmer +lights2_cycle +lights2_brighter +lights2_dimmer +gain_toggle +gain_inc +gain_dec +trim_roll_inc +trim_roll_dec +trim_pitch_inc +trim_pitch_dec +input_hold_set +roll_pitch_toggle +relay_1_on +relay_1_off +relay_1_toggle +relay_2_on +relay_2_off +relay_2_toggle +relay_3_on +relay_3_off +relay_3_toggle +servo_1_inc +servo_1_dec +servo_1_min +servo_1_max +servo_1_center +servo_2_inc +servo_2_dec +servo_2_min +servo_2_max +servo_2_center +servo_3_inc +servo_3_dec +servo_3_min +servo_3_max +servo_3_center +servo_1_min_momentary +servo_1_max_momentary +servo_1_min_toggle +servo_1_max_toggle +servo_2_min_momentary +servo_2_max_momentary +servo_2_min_toggle +servo_2_max_toggle +servo_3_min_momentary +servo_3_max_momentary +servo_3_min_toggle +servo_3_max_toggle +custom_1 +custom_2 +custom_3 +custom_4 +custom_5 +custom_6 +relay_4_on +relay_4_off +relay_4_toggle +relay_1_momentary +relay_2_momentary +relay_3_momentary +relay_4_momentary + + + + +Disabled +shift +arm_toggle +arm +disarm +mode_manual +mode_stabilize +mode_depth_hold +mode_poshold +mode_auto +mode_circle +mode_guided +mode_acro +mount_center +mount_tilt_up +mount_tilt_down +camera_trigger +camera_source_toggle +mount_pan_right +mount_pan_left +lights1_cycle +lights1_brighter +lights1_dimmer +lights2_cycle +lights2_brighter +lights2_dimmer +gain_toggle +gain_inc +gain_dec +trim_roll_inc +trim_roll_dec +trim_pitch_inc +trim_pitch_dec +input_hold_set +roll_pitch_toggle +relay_1_on +relay_1_off +relay_1_toggle +relay_2_on +relay_2_off +relay_2_toggle +relay_3_on +relay_3_off +relay_3_toggle +servo_1_inc +servo_1_dec +servo_1_min +servo_1_max +servo_1_center +servo_2_inc +servo_2_dec +servo_2_min +servo_2_max +servo_2_center +servo_3_inc +servo_3_dec +servo_3_min +servo_3_max +servo_3_center +servo_1_min_momentary +servo_1_max_momentary +servo_1_min_toggle +servo_1_max_toggle +servo_2_min_momentary +servo_2_max_momentary +servo_2_min_toggle +servo_2_max_toggle +servo_3_min_momentary +servo_3_max_momentary +servo_3_min_toggle +servo_3_max_toggle +custom_1 +custom_2 +custom_3 +custom_4 +custom_5 +custom_6 +relay_4_on +relay_4_off +relay_4_toggle +relay_1_momentary +relay_2_momentary +relay_3_momentary +relay_4_momentary + + + + + + +Disabled +shift +arm_toggle +arm +disarm +mode_manual +mode_stabilize +mode_depth_hold +mode_poshold +mode_auto +mode_circle +mode_guided +mode_acro +mount_center +mount_tilt_up +mount_tilt_down +camera_trigger +camera_source_toggle +mount_pan_right +mount_pan_left +lights1_cycle +lights1_brighter +lights1_dimmer +lights2_cycle +lights2_brighter +lights2_dimmer +gain_toggle +gain_inc +gain_dec +trim_roll_inc +trim_roll_dec +trim_pitch_inc +trim_pitch_dec +input_hold_set +roll_pitch_toggle +relay_1_on +relay_1_off +relay_1_toggle +relay_2_on +relay_2_off +relay_2_toggle +relay_3_on +relay_3_off +relay_3_toggle +servo_1_inc +servo_1_dec +servo_1_min +servo_1_max +servo_1_center +servo_2_inc +servo_2_dec +servo_2_min +servo_2_max +servo_2_center +servo_3_inc +servo_3_dec +servo_3_min +servo_3_max +servo_3_center +servo_1_min_momentary +servo_1_max_momentary +servo_1_min_toggle +servo_1_max_toggle +servo_2_min_momentary +servo_2_max_momentary +servo_2_min_toggle +servo_2_max_toggle +servo_3_min_momentary +servo_3_max_momentary +servo_3_min_toggle +servo_3_max_toggle +custom_1 +custom_2 +custom_3 +custom_4 +custom_5 +custom_6 +relay_4_on +relay_4_off +relay_4_toggle +relay_1_momentary +relay_2_momentary +relay_3_momentary +relay_4_momentary + + + + +Disabled +shift +arm_toggle +arm +disarm +mode_manual +mode_stabilize +mode_depth_hold +mode_poshold +mode_auto +mode_circle +mode_guided +mode_acro +mount_center +mount_tilt_up +mount_tilt_down +camera_trigger +camera_source_toggle +mount_pan_right +mount_pan_left +lights1_cycle +lights1_brighter +lights1_dimmer +lights2_cycle +lights2_brighter +lights2_dimmer +gain_toggle +gain_inc +gain_dec +trim_roll_inc +trim_roll_dec +trim_pitch_inc +trim_pitch_dec +input_hold_set +roll_pitch_toggle +relay_1_on +relay_1_off +relay_1_toggle +relay_2_on +relay_2_off +relay_2_toggle +relay_3_on +relay_3_off +relay_3_toggle +servo_1_inc +servo_1_dec +servo_1_min +servo_1_max +servo_1_center +servo_2_inc +servo_2_dec +servo_2_min +servo_2_max +servo_2_center +servo_3_inc +servo_3_dec +servo_3_min +servo_3_max +servo_3_center +servo_1_min_momentary +servo_1_max_momentary +servo_1_min_toggle +servo_1_max_toggle +servo_2_min_momentary +servo_2_max_momentary +servo_2_min_toggle +servo_2_max_toggle +servo_3_min_momentary +servo_3_max_momentary +servo_3_min_toggle +servo_3_max_toggle +custom_1 +custom_2 +custom_3 +custom_4 +custom_5 +custom_6 +relay_4_on +relay_4_off +relay_4_toggle +relay_1_momentary +relay_2_momentary +relay_3_momentary +relay_4_momentary + + + + + + +Disabled +shift +arm_toggle +arm +disarm +mode_manual +mode_stabilize +mode_depth_hold +mode_poshold +mode_auto +mode_circle +mode_guided +mode_acro +mount_center +mount_tilt_up +mount_tilt_down +camera_trigger +camera_source_toggle +mount_pan_right +mount_pan_left +lights1_cycle +lights1_brighter +lights1_dimmer +lights2_cycle +lights2_brighter +lights2_dimmer +gain_toggle +gain_inc +gain_dec +trim_roll_inc +trim_roll_dec +trim_pitch_inc +trim_pitch_dec +input_hold_set +roll_pitch_toggle +relay_1_on +relay_1_off +relay_1_toggle +relay_2_on +relay_2_off +relay_2_toggle +relay_3_on +relay_3_off +relay_3_toggle +servo_1_inc +servo_1_dec +servo_1_min +servo_1_max +servo_1_center +servo_2_inc +servo_2_dec +servo_2_min +servo_2_max +servo_2_center +servo_3_inc +servo_3_dec +servo_3_min +servo_3_max +servo_3_center +servo_1_min_momentary +servo_1_max_momentary +servo_1_min_toggle +servo_1_max_toggle +servo_2_min_momentary +servo_2_max_momentary +servo_2_min_toggle +servo_2_max_toggle +servo_3_min_momentary +servo_3_max_momentary +servo_3_min_toggle +servo_3_max_toggle +custom_1 +custom_2 +custom_3 +custom_4 +custom_5 +custom_6 +relay_4_on +relay_4_off +relay_4_toggle +relay_1_momentary +relay_2_momentary +relay_3_momentary +relay_4_momentary + + + + +Disabled +shift +arm_toggle +arm +disarm +mode_manual +mode_stabilize +mode_depth_hold +mode_poshold +mode_auto +mode_circle +mode_guided +mode_acro +mount_center +mount_tilt_up +mount_tilt_down +camera_trigger +camera_source_toggle +mount_pan_right +mount_pan_left +lights1_cycle +lights1_brighter +lights1_dimmer +lights2_cycle +lights2_brighter +lights2_dimmer +gain_toggle +gain_inc +gain_dec +trim_roll_inc +trim_roll_dec +trim_pitch_inc +trim_pitch_dec +input_hold_set +roll_pitch_toggle +relay_1_on +relay_1_off +relay_1_toggle +relay_2_on +relay_2_off +relay_2_toggle +relay_3_on +relay_3_off +relay_3_toggle +servo_1_inc +servo_1_dec +servo_1_min +servo_1_max +servo_1_center +servo_2_inc +servo_2_dec +servo_2_min +servo_2_max +servo_2_center +servo_3_inc +servo_3_dec +servo_3_min +servo_3_max +servo_3_center +servo_1_min_momentary +servo_1_max_momentary +servo_1_min_toggle +servo_1_max_toggle +servo_2_min_momentary +servo_2_max_momentary +servo_2_min_toggle +servo_2_max_toggle +servo_3_min_momentary +servo_3_max_momentary +servo_3_min_toggle +servo_3_max_toggle +custom_1 +custom_2 +custom_3 +custom_4 +custom_5 +custom_6 +relay_4_on +relay_4_off +relay_4_toggle +relay_1_momentary +relay_2_momentary +relay_3_momentary +relay_4_momentary + + + + + + +Disabled +shift +arm_toggle +arm +disarm +mode_manual +mode_stabilize +mode_depth_hold +mode_poshold +mode_auto +mode_circle +mode_guided +mode_acro +mount_center +mount_tilt_up +mount_tilt_down +camera_trigger +camera_source_toggle +mount_pan_right +mount_pan_left +lights1_cycle +lights1_brighter +lights1_dimmer +lights2_cycle +lights2_brighter +lights2_dimmer +gain_toggle +gain_inc +gain_dec +trim_roll_inc +trim_roll_dec +trim_pitch_inc +trim_pitch_dec +input_hold_set +roll_pitch_toggle +relay_1_on +relay_1_off +relay_1_toggle +relay_2_on +relay_2_off +relay_2_toggle +relay_3_on +relay_3_off +relay_3_toggle +servo_1_inc +servo_1_dec +servo_1_min +servo_1_max +servo_1_center +servo_2_inc +servo_2_dec +servo_2_min +servo_2_max +servo_2_center +servo_3_inc +servo_3_dec +servo_3_min +servo_3_max +servo_3_center +servo_1_min_momentary +servo_1_max_momentary +servo_1_min_toggle +servo_1_max_toggle +servo_2_min_momentary +servo_2_max_momentary +servo_2_min_toggle +servo_2_max_toggle +servo_3_min_momentary +servo_3_max_momentary +servo_3_min_toggle +servo_3_max_toggle +custom_1 +custom_2 +custom_3 +custom_4 +custom_5 +custom_6 +relay_4_on +relay_4_off +relay_4_toggle +relay_1_momentary +relay_2_momentary +relay_3_momentary +relay_4_momentary + + + + +Disabled +shift +arm_toggle +arm +disarm +mode_manual +mode_stabilize +mode_depth_hold +mode_poshold +mode_auto +mode_circle +mode_guided +mode_acro +mount_center +mount_tilt_up +mount_tilt_down +camera_trigger +camera_source_toggle +mount_pan_right +mount_pan_left +lights1_cycle +lights1_brighter +lights1_dimmer +lights2_cycle +lights2_brighter +lights2_dimmer +gain_toggle +gain_inc +gain_dec +trim_roll_inc +trim_roll_dec +trim_pitch_inc +trim_pitch_dec +input_hold_set +roll_pitch_toggle +relay_1_on +relay_1_off +relay_1_toggle +relay_2_on +relay_2_off +relay_2_toggle +relay_3_on +relay_3_off +relay_3_toggle +servo_1_inc +servo_1_dec +servo_1_min +servo_1_max +servo_1_center +servo_2_inc +servo_2_dec +servo_2_min +servo_2_max +servo_2_center +servo_3_inc +servo_3_dec +servo_3_min +servo_3_max +servo_3_center +servo_1_min_momentary +servo_1_max_momentary +servo_1_min_toggle +servo_1_max_toggle +servo_2_min_momentary +servo_2_max_momentary +servo_2_min_toggle +servo_2_max_toggle +servo_3_min_momentary +servo_3_max_momentary +servo_3_min_toggle +servo_3_max_toggle +custom_1 +custom_2 +custom_3 +custom_4 +custom_5 +custom_6 +relay_4_on +relay_4_off +relay_4_toggle +relay_1_momentary +relay_2_momentary +relay_3_momentary +relay_4_momentary + + + + + + +Disabled +shift +arm_toggle +arm +disarm +mode_manual +mode_stabilize +mode_depth_hold +mode_poshold +mode_auto +mode_circle +mode_guided +mode_acro +mount_center +mount_tilt_up +mount_tilt_down +camera_trigger +camera_source_toggle +mount_pan_right +mount_pan_left +lights1_cycle +lights1_brighter +lights1_dimmer +lights2_cycle +lights2_brighter +lights2_dimmer +gain_toggle +gain_inc +gain_dec +trim_roll_inc +trim_roll_dec +trim_pitch_inc +trim_pitch_dec +input_hold_set +roll_pitch_toggle +relay_1_on +relay_1_off +relay_1_toggle +relay_2_on +relay_2_off +relay_2_toggle +relay_3_on +relay_3_off +relay_3_toggle +servo_1_inc +servo_1_dec +servo_1_min +servo_1_max +servo_1_center +servo_2_inc +servo_2_dec +servo_2_min +servo_2_max +servo_2_center +servo_3_inc +servo_3_dec +servo_3_min +servo_3_max +servo_3_center +servo_1_min_momentary +servo_1_max_momentary +servo_1_min_toggle +servo_1_max_toggle +servo_2_min_momentary +servo_2_max_momentary +servo_2_min_toggle +servo_2_max_toggle +servo_3_min_momentary +servo_3_max_momentary +servo_3_min_toggle +servo_3_max_toggle +custom_1 +custom_2 +custom_3 +custom_4 +custom_5 +custom_6 +relay_4_on +relay_4_off +relay_4_toggle +relay_1_momentary +relay_2_momentary +relay_3_momentary +relay_4_momentary + + + + +Disabled +shift +arm_toggle +arm +disarm +mode_manual +mode_stabilize +mode_depth_hold +mode_poshold +mode_auto +mode_circle +mode_guided +mode_acro +mount_center +mount_tilt_up +mount_tilt_down +camera_trigger +camera_source_toggle +mount_pan_right +mount_pan_left +lights1_cycle +lights1_brighter +lights1_dimmer +lights2_cycle +lights2_brighter +lights2_dimmer +gain_toggle +gain_inc +gain_dec +trim_roll_inc +trim_roll_dec +trim_pitch_inc +trim_pitch_dec +input_hold_set +roll_pitch_toggle +relay_1_on +relay_1_off +relay_1_toggle +relay_2_on +relay_2_off +relay_2_toggle +relay_3_on +relay_3_off +relay_3_toggle +servo_1_inc +servo_1_dec +servo_1_min +servo_1_max +servo_1_center +servo_2_inc +servo_2_dec +servo_2_min +servo_2_max +servo_2_center +servo_3_inc +servo_3_dec +servo_3_min +servo_3_max +servo_3_center +servo_1_min_momentary +servo_1_max_momentary +servo_1_min_toggle +servo_1_max_toggle +servo_2_min_momentary +servo_2_max_momentary +servo_2_min_toggle +servo_2_max_toggle +servo_3_min_momentary +servo_3_max_momentary +servo_3_min_toggle +servo_3_max_toggle +custom_1 +custom_2 +custom_3 +custom_4 +custom_5 +custom_6 +relay_4_on +relay_4_off +relay_4_toggle +relay_1_momentary +relay_2_momentary +relay_3_momentary +relay_4_momentary + + + + + + +Disabled +shift +arm_toggle +arm +disarm +mode_manual +mode_stabilize +mode_depth_hold +mode_poshold +mode_auto +mode_circle +mode_guided +mode_acro +mount_center +mount_tilt_up +mount_tilt_down +camera_trigger +camera_source_toggle +mount_pan_right +mount_pan_left +lights1_cycle +lights1_brighter +lights1_dimmer +lights2_cycle +lights2_brighter +lights2_dimmer +gain_toggle +gain_inc +gain_dec +trim_roll_inc +trim_roll_dec +trim_pitch_inc +trim_pitch_dec +input_hold_set +roll_pitch_toggle +relay_1_on +relay_1_off +relay_1_toggle +relay_2_on +relay_2_off +relay_2_toggle +relay_3_on +relay_3_off +relay_3_toggle +servo_1_inc +servo_1_dec +servo_1_min +servo_1_max +servo_1_center +servo_2_inc +servo_2_dec +servo_2_min +servo_2_max +servo_2_center +servo_3_inc +servo_3_dec +servo_3_min +servo_3_max +servo_3_center +servo_1_min_momentary +servo_1_max_momentary +servo_1_min_toggle +servo_1_max_toggle +servo_2_min_momentary +servo_2_max_momentary +servo_2_min_toggle +servo_2_max_toggle +servo_3_min_momentary +servo_3_max_momentary +servo_3_min_toggle +servo_3_max_toggle +custom_1 +custom_2 +custom_3 +custom_4 +custom_5 +custom_6 +relay_4_on +relay_4_off +relay_4_toggle +relay_1_momentary +relay_2_momentary +relay_3_momentary +relay_4_momentary + + + + +Disabled +shift +arm_toggle +arm +disarm +mode_manual +mode_stabilize +mode_depth_hold +mode_poshold +mode_auto +mode_circle +mode_guided +mode_acro +mount_center +mount_tilt_up +mount_tilt_down +camera_trigger +camera_source_toggle +mount_pan_right +mount_pan_left +lights1_cycle +lights1_brighter +lights1_dimmer +lights2_cycle +lights2_brighter +lights2_dimmer +gain_toggle +gain_inc +gain_dec +trim_roll_inc +trim_roll_dec +trim_pitch_inc +trim_pitch_dec +input_hold_set +roll_pitch_toggle +relay_1_on +relay_1_off +relay_1_toggle +relay_2_on +relay_2_off +relay_2_toggle +relay_3_on +relay_3_off +relay_3_toggle +servo_1_inc +servo_1_dec +servo_1_min +servo_1_max +servo_1_center +servo_2_inc +servo_2_dec +servo_2_min +servo_2_max +servo_2_center +servo_3_inc +servo_3_dec +servo_3_min +servo_3_max +servo_3_center +servo_1_min_momentary +servo_1_max_momentary +servo_1_min_toggle +servo_1_max_toggle +servo_2_min_momentary +servo_2_max_momentary +servo_2_min_toggle +servo_2_max_toggle +servo_3_min_momentary +servo_3_max_momentary +servo_3_min_toggle +servo_3_max_toggle +custom_1 +custom_2 +custom_3 +custom_4 +custom_5 +custom_6 +relay_4_on +relay_4_off +relay_4_toggle +relay_1_momentary +relay_2_momentary +relay_3_momentary +relay_4_momentary + + + + + + +Disabled +shift +arm_toggle +arm +disarm +mode_manual +mode_stabilize +mode_depth_hold +mode_poshold +mode_auto +mode_circle +mode_guided +mode_acro +mount_center +mount_tilt_up +mount_tilt_down +camera_trigger +camera_source_toggle +mount_pan_right +mount_pan_left +lights1_cycle +lights1_brighter +lights1_dimmer +lights2_cycle +lights2_brighter +lights2_dimmer +gain_toggle +gain_inc +gain_dec +trim_roll_inc +trim_roll_dec +trim_pitch_inc +trim_pitch_dec +input_hold_set +roll_pitch_toggle +relay_1_on +relay_1_off +relay_1_toggle +relay_2_on +relay_2_off +relay_2_toggle +relay_3_on +relay_3_off +relay_3_toggle +servo_1_inc +servo_1_dec +servo_1_min +servo_1_max +servo_1_center +servo_2_inc +servo_2_dec +servo_2_min +servo_2_max +servo_2_center +servo_3_inc +servo_3_dec +servo_3_min +servo_3_max +servo_3_center +servo_1_min_momentary +servo_1_max_momentary +servo_1_min_toggle +servo_1_max_toggle +servo_2_min_momentary +servo_2_max_momentary +servo_2_min_toggle +servo_2_max_toggle +servo_3_min_momentary +servo_3_max_momentary +servo_3_min_toggle +servo_3_max_toggle +custom_1 +custom_2 +custom_3 +custom_4 +custom_5 +custom_6 +relay_4_on +relay_4_off +relay_4_toggle +relay_1_momentary +relay_2_momentary +relay_3_momentary +relay_4_momentary + + + + +Disabled +shift +arm_toggle +arm +disarm +mode_manual +mode_stabilize +mode_depth_hold +mode_poshold +mode_auto +mode_circle +mode_guided +mode_acro +mount_center +mount_tilt_up +mount_tilt_down +camera_trigger +camera_source_toggle +mount_pan_right +mount_pan_left +lights1_cycle +lights1_brighter +lights1_dimmer +lights2_cycle +lights2_brighter +lights2_dimmer +gain_toggle +gain_inc +gain_dec +trim_roll_inc +trim_roll_dec +trim_pitch_inc +trim_pitch_dec +input_hold_set +roll_pitch_toggle +relay_1_on +relay_1_off +relay_1_toggle +relay_2_on +relay_2_off +relay_2_toggle +relay_3_on +relay_3_off +relay_3_toggle +servo_1_inc +servo_1_dec +servo_1_min +servo_1_max +servo_1_center +servo_2_inc +servo_2_dec +servo_2_min +servo_2_max +servo_2_center +servo_3_inc +servo_3_dec +servo_3_min +servo_3_max +servo_3_center +servo_1_min_momentary +servo_1_max_momentary +servo_1_min_toggle +servo_1_max_toggle +servo_2_min_momentary +servo_2_max_momentary +servo_2_min_toggle +servo_2_max_toggle +servo_3_min_momentary +servo_3_max_momentary +servo_3_min_toggle +servo_3_max_toggle +custom_1 +custom_2 +custom_3 +custom_4 +custom_5 +custom_6 +relay_4_on +relay_4_off +relay_4_toggle +relay_1_momentary +relay_2_momentary +relay_3_momentary +relay_4_momentary + + + + + + +Disabled +shift +arm_toggle +arm +disarm +mode_manual +mode_stabilize +mode_depth_hold +mode_poshold +mode_auto +mode_circle +mode_guided +mode_acro +mount_center +mount_tilt_up +mount_tilt_down +camera_trigger +camera_source_toggle +mount_pan_right +mount_pan_left +lights1_cycle +lights1_brighter +lights1_dimmer +lights2_cycle +lights2_brighter +lights2_dimmer +gain_toggle +gain_inc +gain_dec +trim_roll_inc +trim_roll_dec +trim_pitch_inc +trim_pitch_dec +input_hold_set +roll_pitch_toggle +relay_1_on +relay_1_off +relay_1_toggle +relay_2_on +relay_2_off +relay_2_toggle +relay_3_on +relay_3_off +relay_3_toggle +servo_1_inc +servo_1_dec +servo_1_min +servo_1_max +servo_1_center +servo_2_inc +servo_2_dec +servo_2_min +servo_2_max +servo_2_center +servo_3_inc +servo_3_dec +servo_3_min +servo_3_max +servo_3_center +servo_1_min_momentary +servo_1_max_momentary +servo_1_min_toggle +servo_1_max_toggle +servo_2_min_momentary +servo_2_max_momentary +servo_2_min_toggle +servo_2_max_toggle +servo_3_min_momentary +servo_3_max_momentary +servo_3_min_toggle +servo_3_max_toggle +custom_1 +custom_2 +custom_3 +custom_4 +custom_5 +custom_6 +relay_4_on +relay_4_off +relay_4_toggle +relay_1_momentary +relay_2_momentary +relay_3_momentary +relay_4_momentary + + + + +Disabled +shift +arm_toggle +arm +disarm +mode_manual +mode_stabilize +mode_depth_hold +mode_poshold +mode_auto +mode_circle +mode_guided +mode_acro +mount_center +mount_tilt_up +mount_tilt_down +camera_trigger +camera_source_toggle +mount_pan_right +mount_pan_left +lights1_cycle +lights1_brighter +lights1_dimmer +lights2_cycle +lights2_brighter +lights2_dimmer +gain_toggle +gain_inc +gain_dec +trim_roll_inc +trim_roll_dec +trim_pitch_inc +trim_pitch_dec +input_hold_set +roll_pitch_toggle +relay_1_on +relay_1_off +relay_1_toggle +relay_2_on +relay_2_off +relay_2_toggle +relay_3_on +relay_3_off +relay_3_toggle +servo_1_inc +servo_1_dec +servo_1_min +servo_1_max +servo_1_center +servo_2_inc +servo_2_dec +servo_2_min +servo_2_max +servo_2_center +servo_3_inc +servo_3_dec +servo_3_min +servo_3_max +servo_3_center +servo_1_min_momentary +servo_1_max_momentary +servo_1_min_toggle +servo_1_max_toggle +servo_2_min_momentary +servo_2_max_momentary +servo_2_min_toggle +servo_2_max_toggle +servo_3_min_momentary +servo_3_max_momentary +servo_3_min_toggle +servo_3_max_toggle +custom_1 +custom_2 +custom_3 +custom_4 +custom_5 +custom_6 +relay_4_on +relay_4_off +relay_4_toggle +relay_1_momentary +relay_2_momentary +relay_3_momentary +relay_4_momentary + + + + + + +Disabled +shift +arm_toggle +arm +disarm +mode_manual +mode_stabilize +mode_depth_hold +mode_poshold +mode_auto +mode_circle +mode_guided +mode_acro +mount_center +mount_tilt_up +mount_tilt_down +camera_trigger +camera_source_toggle +mount_pan_right +mount_pan_left +lights1_cycle +lights1_brighter +lights1_dimmer +lights2_cycle +lights2_brighter +lights2_dimmer +gain_toggle +gain_inc +gain_dec +trim_roll_inc +trim_roll_dec +trim_pitch_inc +trim_pitch_dec +input_hold_set +roll_pitch_toggle +relay_1_on +relay_1_off +relay_1_toggle +relay_2_on +relay_2_off +relay_2_toggle +relay_3_on +relay_3_off +relay_3_toggle +servo_1_inc +servo_1_dec +servo_1_min +servo_1_max +servo_1_center +servo_2_inc +servo_2_dec +servo_2_min +servo_2_max +servo_2_center +servo_3_inc +servo_3_dec +servo_3_min +servo_3_max +servo_3_center +servo_1_min_momentary +servo_1_max_momentary +servo_1_min_toggle +servo_1_max_toggle +servo_2_min_momentary +servo_2_max_momentary +servo_2_min_toggle +servo_2_max_toggle +servo_3_min_momentary +servo_3_max_momentary +servo_3_min_toggle +servo_3_max_toggle +custom_1 +custom_2 +custom_3 +custom_4 +custom_5 +custom_6 +relay_4_on +relay_4_off +relay_4_toggle +relay_1_momentary +relay_2_momentary +relay_3_momentary +relay_4_momentary + + + + +Disabled +shift +arm_toggle +arm +disarm +mode_manual +mode_stabilize +mode_depth_hold +mode_poshold +mode_auto +mode_circle +mode_guided +mode_acro +mount_center +mount_tilt_up +mount_tilt_down +camera_trigger +camera_source_toggle +mount_pan_right +mount_pan_left +lights1_cycle +lights1_brighter +lights1_dimmer +lights2_cycle +lights2_brighter +lights2_dimmer +gain_toggle +gain_inc +gain_dec +trim_roll_inc +trim_roll_dec +trim_pitch_inc +trim_pitch_dec +input_hold_set +roll_pitch_toggle +relay_1_on +relay_1_off +relay_1_toggle +relay_2_on +relay_2_off +relay_2_toggle +relay_3_on +relay_3_off +relay_3_toggle +servo_1_inc +servo_1_dec +servo_1_min +servo_1_max +servo_1_center +servo_2_inc +servo_2_dec +servo_2_min +servo_2_max +servo_2_center +servo_3_inc +servo_3_dec +servo_3_min +servo_3_max +servo_3_center +servo_1_min_momentary +servo_1_max_momentary +servo_1_min_toggle +servo_1_max_toggle +servo_2_min_momentary +servo_2_max_momentary +servo_2_min_toggle +servo_2_max_toggle +servo_3_min_momentary +servo_3_max_momentary +servo_3_min_toggle +servo_3_max_toggle +custom_1 +custom_2 +custom_3 +custom_4 +custom_5 +custom_6 +relay_4_on +relay_4_off +relay_4_toggle +relay_1_momentary +relay_2_momentary +relay_3_momentary +relay_4_momentary + + + + + + +Disabled +shift +arm_toggle +arm +disarm +mode_manual +mode_stabilize +mode_depth_hold +mode_poshold +mode_auto +mode_circle +mode_guided +mode_acro +mount_center +mount_tilt_up +mount_tilt_down +camera_trigger +camera_source_toggle +mount_pan_right +mount_pan_left +lights1_cycle +lights1_brighter +lights1_dimmer +lights2_cycle +lights2_brighter +lights2_dimmer +gain_toggle +gain_inc +gain_dec +trim_roll_inc +trim_roll_dec +trim_pitch_inc +trim_pitch_dec +input_hold_set +roll_pitch_toggle +relay_1_on +relay_1_off +relay_1_toggle +relay_2_on +relay_2_off +relay_2_toggle +relay_3_on +relay_3_off +relay_3_toggle +servo_1_inc +servo_1_dec +servo_1_min +servo_1_max +servo_1_center +servo_2_inc +servo_2_dec +servo_2_min +servo_2_max +servo_2_center +servo_3_inc +servo_3_dec +servo_3_min +servo_3_max +servo_3_center +servo_1_min_momentary +servo_1_max_momentary +servo_1_min_toggle +servo_1_max_toggle +servo_2_min_momentary +servo_2_max_momentary +servo_2_min_toggle +servo_2_max_toggle +servo_3_min_momentary +servo_3_max_momentary +servo_3_min_toggle +servo_3_max_toggle +custom_1 +custom_2 +custom_3 +custom_4 +custom_5 +custom_6 +relay_4_on +relay_4_off +relay_4_toggle +relay_1_momentary +relay_2_momentary +relay_3_momentary +relay_4_momentary + + + + +Disabled +shift +arm_toggle +arm +disarm +mode_manual +mode_stabilize +mode_depth_hold +mode_poshold +mode_auto +mode_circle +mode_guided +mode_acro +mount_center +mount_tilt_up +mount_tilt_down +camera_trigger +camera_source_toggle +mount_pan_right +mount_pan_left +lights1_cycle +lights1_brighter +lights1_dimmer +lights2_cycle +lights2_brighter +lights2_dimmer +gain_toggle +gain_inc +gain_dec +trim_roll_inc +trim_roll_dec +trim_pitch_inc +trim_pitch_dec +input_hold_set +roll_pitch_toggle +relay_1_on +relay_1_off +relay_1_toggle +relay_2_on +relay_2_off +relay_2_toggle +relay_3_on +relay_3_off +relay_3_toggle +servo_1_inc +servo_1_dec +servo_1_min +servo_1_max +servo_1_center +servo_2_inc +servo_2_dec +servo_2_min +servo_2_max +servo_2_center +servo_3_inc +servo_3_dec +servo_3_min +servo_3_max +servo_3_center +servo_1_min_momentary +servo_1_max_momentary +servo_1_min_toggle +servo_1_max_toggle +servo_2_min_momentary +servo_2_max_momentary +servo_2_min_toggle +servo_2_max_toggle +servo_3_min_momentary +servo_3_max_momentary +servo_3_min_toggle +servo_3_max_toggle +custom_1 +custom_2 +custom_3 +custom_4 +custom_5 +custom_6 +relay_4_on +relay_4_off +relay_4_toggle +relay_1_momentary +relay_2_momentary +relay_3_momentary +relay_4_momentary + + + + + + +Disabled +shift +arm_toggle +arm +disarm +mode_manual +mode_stabilize +mode_depth_hold +mode_poshold +mode_auto +mode_circle +mode_guided +mode_acro +mount_center +mount_tilt_up +mount_tilt_down +camera_trigger +camera_source_toggle +mount_pan_right +mount_pan_left +lights1_cycle +lights1_brighter +lights1_dimmer +lights2_cycle +lights2_brighter +lights2_dimmer +gain_toggle +gain_inc +gain_dec +trim_roll_inc +trim_roll_dec +trim_pitch_inc +trim_pitch_dec +input_hold_set +roll_pitch_toggle +relay_1_on +relay_1_off +relay_1_toggle +relay_2_on +relay_2_off +relay_2_toggle +relay_3_on +relay_3_off +relay_3_toggle +servo_1_inc +servo_1_dec +servo_1_min +servo_1_max +servo_1_center +servo_2_inc +servo_2_dec +servo_2_min +servo_2_max +servo_2_center +servo_3_inc +servo_3_dec +servo_3_min +servo_3_max +servo_3_center +servo_1_min_momentary +servo_1_max_momentary +servo_1_min_toggle +servo_1_max_toggle +servo_2_min_momentary +servo_2_max_momentary +servo_2_min_toggle +servo_2_max_toggle +servo_3_min_momentary +servo_3_max_momentary +servo_3_min_toggle +servo_3_max_toggle +custom_1 +custom_2 +custom_3 +custom_4 +custom_5 +custom_6 +relay_4_on +relay_4_off +relay_4_toggle +relay_1_momentary +relay_2_momentary +relay_3_momentary +relay_4_momentary + + + + +Disabled +shift +arm_toggle +arm +disarm +mode_manual +mode_stabilize +mode_depth_hold +mode_poshold +mode_auto +mode_circle +mode_guided +mode_acro +mount_center +mount_tilt_up +mount_tilt_down +camera_trigger +camera_source_toggle +mount_pan_right +mount_pan_left +lights1_cycle +lights1_brighter +lights1_dimmer +lights2_cycle +lights2_brighter +lights2_dimmer +gain_toggle +gain_inc +gain_dec +trim_roll_inc +trim_roll_dec +trim_pitch_inc +trim_pitch_dec +input_hold_set +roll_pitch_toggle +relay_1_on +relay_1_off +relay_1_toggle +relay_2_on +relay_2_off +relay_2_toggle +relay_3_on +relay_3_off +relay_3_toggle +servo_1_inc +servo_1_dec +servo_1_min +servo_1_max +servo_1_center +servo_2_inc +servo_2_dec +servo_2_min +servo_2_max +servo_2_center +servo_3_inc +servo_3_dec +servo_3_min +servo_3_max +servo_3_center +servo_1_min_momentary +servo_1_max_momentary +servo_1_min_toggle +servo_1_max_toggle +servo_2_min_momentary +servo_2_max_momentary +servo_2_min_toggle +servo_2_max_toggle +servo_3_min_momentary +servo_3_max_momentary +servo_3_min_toggle +servo_3_max_toggle +custom_1 +custom_2 +custom_3 +custom_4 +custom_5 +custom_6 +relay_4_on +relay_4_off +relay_4_toggle +relay_1_momentary +relay_2_momentary +relay_3_momentary +relay_4_momentary + + + + + + +Disabled +shift +arm_toggle +arm +disarm +mode_manual +mode_stabilize +mode_depth_hold +mode_poshold +mode_auto +mode_circle +mode_guided +mode_acro +mount_center +mount_tilt_up +mount_tilt_down +camera_trigger +camera_source_toggle +mount_pan_right +mount_pan_left +lights1_cycle +lights1_brighter +lights1_dimmer +lights2_cycle +lights2_brighter +lights2_dimmer +gain_toggle +gain_inc +gain_dec +trim_roll_inc +trim_roll_dec +trim_pitch_inc +trim_pitch_dec +input_hold_set +roll_pitch_toggle +relay_1_on +relay_1_off +relay_1_toggle +relay_2_on +relay_2_off +relay_2_toggle +relay_3_on +relay_3_off +relay_3_toggle +servo_1_inc +servo_1_dec +servo_1_min +servo_1_max +servo_1_center +servo_2_inc +servo_2_dec +servo_2_min +servo_2_max +servo_2_center +servo_3_inc +servo_3_dec +servo_3_min +servo_3_max +servo_3_center +servo_1_min_momentary +servo_1_max_momentary +servo_1_min_toggle +servo_1_max_toggle +servo_2_min_momentary +servo_2_max_momentary +servo_2_min_toggle +servo_2_max_toggle +servo_3_min_momentary +servo_3_max_momentary +servo_3_min_toggle +servo_3_max_toggle +custom_1 +custom_2 +custom_3 +custom_4 +custom_5 +custom_6 +relay_4_on +relay_4_off +relay_4_toggle +relay_1_momentary +relay_2_momentary +relay_3_momentary +relay_4_momentary + + + + +Disabled +shift +arm_toggle +arm +disarm +mode_manual +mode_stabilize +mode_depth_hold +mode_poshold +mode_auto +mode_circle +mode_guided +mode_acro +mount_center +mount_tilt_up +mount_tilt_down +camera_trigger +camera_source_toggle +mount_pan_right +mount_pan_left +lights1_cycle +lights1_brighter +lights1_dimmer +lights2_cycle +lights2_brighter +lights2_dimmer +gain_toggle +gain_inc +gain_dec +trim_roll_inc +trim_roll_dec +trim_pitch_inc +trim_pitch_dec +input_hold_set +roll_pitch_toggle +relay_1_on +relay_1_off +relay_1_toggle +relay_2_on +relay_2_off +relay_2_toggle +relay_3_on +relay_3_off +relay_3_toggle +servo_1_inc +servo_1_dec +servo_1_min +servo_1_max +servo_1_center +servo_2_inc +servo_2_dec +servo_2_min +servo_2_max +servo_2_center +servo_3_inc +servo_3_dec +servo_3_min +servo_3_max +servo_3_center +servo_1_min_momentary +servo_1_max_momentary +servo_1_min_toggle +servo_1_max_toggle +servo_2_min_momentary +servo_2_max_momentary +servo_2_min_toggle +servo_2_max_toggle +servo_3_min_momentary +servo_3_max_momentary +servo_3_min_toggle +servo_3_max_toggle +custom_1 +custom_2 +custom_3 +custom_4 +custom_5 +custom_6 +relay_4_on +relay_4_off +relay_4_toggle +relay_1_momentary +relay_2_momentary +relay_3_momentary +relay_4_momentary + + + + + + +Disabled +shift +arm_toggle +arm +disarm +mode_manual +mode_stabilize +mode_depth_hold +mode_poshold +mode_auto +mode_circle +mode_guided +mode_acro +mount_center +mount_tilt_up +mount_tilt_down +camera_trigger +camera_source_toggle +mount_pan_right +mount_pan_left +lights1_cycle +lights1_brighter +lights1_dimmer +lights2_cycle +lights2_brighter +lights2_dimmer +gain_toggle +gain_inc +gain_dec +trim_roll_inc +trim_roll_dec +trim_pitch_inc +trim_pitch_dec +input_hold_set +roll_pitch_toggle +relay_1_on +relay_1_off +relay_1_toggle +relay_2_on +relay_2_off +relay_2_toggle +relay_3_on +relay_3_off +relay_3_toggle +servo_1_inc +servo_1_dec +servo_1_min +servo_1_max +servo_1_center +servo_2_inc +servo_2_dec +servo_2_min +servo_2_max +servo_2_center +servo_3_inc +servo_3_dec +servo_3_min +servo_3_max +servo_3_center +servo_1_min_momentary +servo_1_max_momentary +servo_1_min_toggle +servo_1_max_toggle +servo_2_min_momentary +servo_2_max_momentary +servo_2_min_toggle +servo_2_max_toggle +servo_3_min_momentary +servo_3_max_momentary +servo_3_min_toggle +servo_3_max_toggle +custom_1 +custom_2 +custom_3 +custom_4 +custom_5 +custom_6 +relay_4_on +relay_4_off +relay_4_toggle +relay_1_momentary +relay_2_momentary +relay_3_momentary +relay_4_momentary + + + + +Disabled +shift +arm_toggle +arm +disarm +mode_manual +mode_stabilize +mode_depth_hold +mode_poshold +mode_auto +mode_circle +mode_guided +mode_acro +mount_center +mount_tilt_up +mount_tilt_down +camera_trigger +camera_source_toggle +mount_pan_right +mount_pan_left +lights1_cycle +lights1_brighter +lights1_dimmer +lights2_cycle +lights2_brighter +lights2_dimmer +gain_toggle +gain_inc +gain_dec +trim_roll_inc +trim_roll_dec +trim_pitch_inc +trim_pitch_dec +input_hold_set +roll_pitch_toggle +relay_1_on +relay_1_off +relay_1_toggle +relay_2_on +relay_2_off +relay_2_toggle +relay_3_on +relay_3_off +relay_3_toggle +servo_1_inc +servo_1_dec +servo_1_min +servo_1_max +servo_1_center +servo_2_inc +servo_2_dec +servo_2_min +servo_2_max +servo_2_center +servo_3_inc +servo_3_dec +servo_3_min +servo_3_max +servo_3_center +servo_1_min_momentary +servo_1_max_momentary +servo_1_min_toggle +servo_1_max_toggle +servo_2_min_momentary +servo_2_max_momentary +servo_2_min_toggle +servo_2_max_toggle +servo_3_min_momentary +servo_3_max_momentary +servo_3_min_toggle +servo_3_max_toggle +custom_1 +custom_2 +custom_3 +custom_4 +custom_5 +custom_6 +relay_4_on +relay_4_off +relay_4_toggle +relay_1_momentary +relay_2_momentary +relay_3_momentary +relay_4_momentary + + + + + + +Disabled +shift +arm_toggle +arm +disarm +mode_manual +mode_stabilize +mode_depth_hold +mode_poshold +mode_auto +mode_circle +mode_guided +mode_acro +mount_center +mount_tilt_up +mount_tilt_down +camera_trigger +camera_source_toggle +mount_pan_right +mount_pan_left +lights1_cycle +lights1_brighter +lights1_dimmer +lights2_cycle +lights2_brighter +lights2_dimmer +gain_toggle +gain_inc +gain_dec +trim_roll_inc +trim_roll_dec +trim_pitch_inc +trim_pitch_dec +input_hold_set +roll_pitch_toggle +relay_1_on +relay_1_off +relay_1_toggle +relay_2_on +relay_2_off +relay_2_toggle +relay_3_on +relay_3_off +relay_3_toggle +servo_1_inc +servo_1_dec +servo_1_min +servo_1_max +servo_1_center +servo_2_inc +servo_2_dec +servo_2_min +servo_2_max +servo_2_center +servo_3_inc +servo_3_dec +servo_3_min +servo_3_max +servo_3_center +servo_1_min_momentary +servo_1_max_momentary +servo_1_min_toggle +servo_1_max_toggle +servo_2_min_momentary +servo_2_max_momentary +servo_2_min_toggle +servo_2_max_toggle +servo_3_min_momentary +servo_3_max_momentary +servo_3_min_toggle +servo_3_max_toggle +custom_1 +custom_2 +custom_3 +custom_4 +custom_5 +custom_6 +relay_4_on +relay_4_off +relay_4_toggle +relay_1_momentary +relay_2_momentary +relay_3_momentary +relay_4_momentary + + + + +Disabled +shift +arm_toggle +arm +disarm +mode_manual +mode_stabilize +mode_depth_hold +mode_poshold +mode_auto +mode_circle +mode_guided +mode_acro +mount_center +mount_tilt_up +mount_tilt_down +camera_trigger +camera_source_toggle +mount_pan_right +mount_pan_left +lights1_cycle +lights1_brighter +lights1_dimmer +lights2_cycle +lights2_brighter +lights2_dimmer +gain_toggle +gain_inc +gain_dec +trim_roll_inc +trim_roll_dec +trim_pitch_inc +trim_pitch_dec +input_hold_set +roll_pitch_toggle +relay_1_on +relay_1_off +relay_1_toggle +relay_2_on +relay_2_off +relay_2_toggle +relay_3_on +relay_3_off +relay_3_toggle +servo_1_inc +servo_1_dec +servo_1_min +servo_1_max +servo_1_center +servo_2_inc +servo_2_dec +servo_2_min +servo_2_max +servo_2_center +servo_3_inc +servo_3_dec +servo_3_min +servo_3_max +servo_3_center +servo_1_min_momentary +servo_1_max_momentary +servo_1_min_toggle +servo_1_max_toggle +servo_2_min_momentary +servo_2_max_momentary +servo_2_min_toggle +servo_2_max_toggle +servo_3_min_momentary +servo_3_max_momentary +servo_3_min_toggle +servo_3_max_toggle +custom_1 +custom_2 +custom_3 +custom_4 +custom_5 +custom_6 +relay_4_on +relay_4_off +relay_4_toggle +relay_1_momentary +relay_2_momentary +relay_3_momentary +relay_4_momentary + + + + + + +Disabled +shift +arm_toggle +arm +disarm +mode_manual +mode_stabilize +mode_depth_hold +mode_poshold +mode_auto +mode_circle +mode_guided +mode_acro +mount_center +mount_tilt_up +mount_tilt_down +camera_trigger +camera_source_toggle +mount_pan_right +mount_pan_left +lights1_cycle +lights1_brighter +lights1_dimmer +lights2_cycle +lights2_brighter +lights2_dimmer +gain_toggle +gain_inc +gain_dec +trim_roll_inc +trim_roll_dec +trim_pitch_inc +trim_pitch_dec +input_hold_set +roll_pitch_toggle +relay_1_on +relay_1_off +relay_1_toggle +relay_2_on +relay_2_off +relay_2_toggle +relay_3_on +relay_3_off +relay_3_toggle +servo_1_inc +servo_1_dec +servo_1_min +servo_1_max +servo_1_center +servo_2_inc +servo_2_dec +servo_2_min +servo_2_max +servo_2_center +servo_3_inc +servo_3_dec +servo_3_min +servo_3_max +servo_3_center +servo_1_min_momentary +servo_1_max_momentary +servo_1_min_toggle +servo_1_max_toggle +servo_2_min_momentary +servo_2_max_momentary +servo_2_min_toggle +servo_2_max_toggle +servo_3_min_momentary +servo_3_max_momentary +servo_3_min_toggle +servo_3_max_toggle +custom_1 +custom_2 +custom_3 +custom_4 +custom_5 +custom_6 +relay_4_on +relay_4_off +relay_4_toggle +relay_1_momentary +relay_2_momentary +relay_3_momentary +relay_4_momentary + + + + +Disabled +shift +arm_toggle +arm +disarm +mode_manual +mode_stabilize +mode_depth_hold +mode_poshold +mode_auto +mode_circle +mode_guided +mode_acro +mount_center +mount_tilt_up +mount_tilt_down +camera_trigger +camera_source_toggle +mount_pan_right +mount_pan_left +lights1_cycle +lights1_brighter +lights1_dimmer +lights2_cycle +lights2_brighter +lights2_dimmer +gain_toggle +gain_inc +gain_dec +trim_roll_inc +trim_roll_dec +trim_pitch_inc +trim_pitch_dec +input_hold_set +roll_pitch_toggle +relay_1_on +relay_1_off +relay_1_toggle +relay_2_on +relay_2_off +relay_2_toggle +relay_3_on +relay_3_off +relay_3_toggle +servo_1_inc +servo_1_dec +servo_1_min +servo_1_max +servo_1_center +servo_2_inc +servo_2_dec +servo_2_min +servo_2_max +servo_2_center +servo_3_inc +servo_3_dec +servo_3_min +servo_3_max +servo_3_center +servo_1_min_momentary +servo_1_max_momentary +servo_1_min_toggle +servo_1_max_toggle +servo_2_min_momentary +servo_2_max_momentary +servo_2_min_toggle +servo_2_max_toggle +servo_3_min_momentary +servo_3_max_momentary +servo_3_min_toggle +servo_3_max_toggle +custom_1 +custom_2 +custom_3 +custom_4 +custom_5 +custom_6 +relay_4_on +relay_4_off +relay_4_toggle +relay_1_momentary +relay_2_momentary +relay_3_momentary +relay_4_momentary + + + + + + +Disabled +shift +arm_toggle +arm +disarm +mode_manual +mode_stabilize +mode_depth_hold +mode_poshold +mode_auto +mode_circle +mode_guided +mode_acro +mount_center +mount_tilt_up +mount_tilt_down +camera_trigger +camera_source_toggle +mount_pan_right +mount_pan_left +lights1_cycle +lights1_brighter +lights1_dimmer +lights2_cycle +lights2_brighter +lights2_dimmer +gain_toggle +gain_inc +gain_dec +trim_roll_inc +trim_roll_dec +trim_pitch_inc +trim_pitch_dec +input_hold_set +roll_pitch_toggle +relay_1_on +relay_1_off +relay_1_toggle +relay_2_on +relay_2_off +relay_2_toggle +relay_3_on +relay_3_off +relay_3_toggle +servo_1_inc +servo_1_dec +servo_1_min +servo_1_max +servo_1_center +servo_2_inc +servo_2_dec +servo_2_min +servo_2_max +servo_2_center +servo_3_inc +servo_3_dec +servo_3_min +servo_3_max +servo_3_center +servo_1_min_momentary +servo_1_max_momentary +servo_1_min_toggle +servo_1_max_toggle +servo_2_min_momentary +servo_2_max_momentary +servo_2_min_toggle +servo_2_max_toggle +servo_3_min_momentary +servo_3_max_momentary +servo_3_min_toggle +servo_3_max_toggle +custom_1 +custom_2 +custom_3 +custom_4 +custom_5 +custom_6 +relay_4_on +relay_4_off +relay_4_toggle +relay_1_momentary +relay_2_momentary +relay_3_momentary +relay_4_momentary + + + + +Disabled +shift +arm_toggle +arm +disarm +mode_manual +mode_stabilize +mode_depth_hold +mode_poshold +mode_auto +mode_circle +mode_guided +mode_acro +mount_center +mount_tilt_up +mount_tilt_down +camera_trigger +camera_source_toggle +mount_pan_right +mount_pan_left +lights1_cycle +lights1_brighter +lights1_dimmer +lights2_cycle +lights2_brighter +lights2_dimmer +gain_toggle +gain_inc +gain_dec +trim_roll_inc +trim_roll_dec +trim_pitch_inc +trim_pitch_dec +input_hold_set +roll_pitch_toggle +relay_1_on +relay_1_off +relay_1_toggle +relay_2_on +relay_2_off +relay_2_toggle +relay_3_on +relay_3_off +relay_3_toggle +servo_1_inc +servo_1_dec +servo_1_min +servo_1_max +servo_1_center +servo_2_inc +servo_2_dec +servo_2_min +servo_2_max +servo_2_center +servo_3_inc +servo_3_dec +servo_3_min +servo_3_max +servo_3_center +servo_1_min_momentary +servo_1_max_momentary +servo_1_min_toggle +servo_1_max_toggle +servo_2_min_momentary +servo_2_max_momentary +servo_2_min_toggle +servo_2_max_toggle +servo_3_min_momentary +servo_3_max_momentary +servo_3_min_toggle +servo_3_max_toggle +custom_1 +custom_2 +custom_3 +custom_4 +custom_5 +custom_6 +relay_4_on +relay_4_off +relay_4_toggle +relay_1_momentary +relay_2_momentary +relay_3_momentary +relay_4_momentary + + + + + + +Servo +Relay +GoPro in Solo Gimbal + + + +ds +deciseconds +0 50 + + +PWM +PWM in microseconds +1000 2000 + + +PWM +PWM in microseconds +1000 2000 + + +m +meters +0 1000 + + + +Low +High + + + +ms +milliseconds +0 10000 + + +deg +degrees +0 180 + + + +Disabled +AUX1 +AUX2 +AUX3 +AUX4 +AUX5 +AUX6 + +True + + + +TriggerLow +TriggerHigh + + + + +Always +Only when in AUTO + + + + +Default +BMMCC + + + + + + +Disabled +RunCam Split Micro/RunCam with UART +RunCam Split +RunCam Split4 4k +RunCam Hybrid + + + +0:Power Button,1:WiFi Button,2:Change Mode,3:5-Key OSD,4:Settings Access,5:DisplayPort,6:Start Recording,7:Stop Recording + + + + + + + + +0:Stick yaw right,1:Stick roll right,2:3-position switch,3:2-position switch,4:Autorecording enabled + + + + +0 4 + +Log None +Log Error +Log Warning and below +Log Info and below +Log Everything + + + + + + +Disabled +UAVCAN +ToshibaCAN +PiccoloCAN +CANTester +KDECAN +PacketDigitalCAN + +True + + + + + + + + +0: ESC 1, 1: ESC 2, 2: ESC 3, 3: ESC 4, 4: ESC 5, 5: ESC 6, 6: ESC 7, 7: ESC 8, 8: ESC 9, 9: ESC 10, 10: ESC 11, 11: ESC 12, 12: ESC 13, 13: ESC 14, 14: ESC 15, 15: ESC 16 + + +Hz +hertz +1 500 + + +0: Servo 1, 1: Servo 2, 2: Servo 3, 3: Servo 4, 4: Servo 5, 5: Servo 6, 6: Servo 7, 7: Servo 8, 8: Servo 9, 9: Servo 10, 10: Servo 11, 11: Servo 12, 12: Servo 13, 13: Servo 14, 14: Servo 15, 15: Servo 16 + + +Hz +hertz +1 500 + + + + +0 4 + +TEST_NONE +TEST_LOOPBACK +TEST_BUSOFF_RECOVERY +TEST_UAVCAN_DNA +TEST_TOSHIBA_CAN +TEST_KDE_CAN +TEST_UAVCAN_ESC + + + +us +microseconds + + + + +1 250 + + +0: Servo 1, 1: Servo 2, 2: Servo 3, 3: Servo 4, 4: Servo 5, 5: Servo 6, 6: Servo 7, 7: Servo 8, 8: Servo 9, 9: Servo 10, 10: Servo 11, 11: Servo 12, 12: Servo 13, 13: Servo 14, 14: Servo 15 + + +0: ESC 1, 1: ESC 2, 2: ESC 3, 3: ESC 4, 4: ESC 5, 5: ESC 6, 6: ESC 7, 7: ESC 8, 8: ESC 9, 9: ESC 10, 10: ESC 11, 11: ESC 12, 12: ESC 13, 13: ESC 14, 14: ESC 15, 15: ESC 16 + + +1 200 +Hz +hertz + + +0:ClearDNADatabase,1:IgnoreDNANodeConflicts + + + + + +Disabled +UAVCAN +ToshibaCAN +PiccoloCAN +CANTester +KDECAN +PacketDigitalCAN + +True + + + + + + + + +0: ESC 1, 1: ESC 2, 2: ESC 3, 3: ESC 4, 4: ESC 5, 5: ESC 6, 6: ESC 7, 7: ESC 8, 8: ESC 9, 9: ESC 10, 10: ESC 11, 11: ESC 12, 12: ESC 13, 13: ESC 14, 14: ESC 15, 15: ESC 16 + + +Hz +hertz +1 500 + + +0: Servo 1, 1: Servo 2, 2: Servo 3, 3: Servo 4, 4: Servo 5, 5: Servo 6, 6: Servo 7, 7: Servo 8, 8: Servo 9, 9: Servo 10, 10: Servo 11, 11: Servo 12, 12: Servo 13, 13: Servo 14, 14: Servo 15, 15: Servo 16 + + +Hz +hertz +1 500 + + + + +0 4 + +TEST_NONE +TEST_LOOPBACK +TEST_BUSOFF_RECOVERY +TEST_UAVCAN_DNA +TEST_TOSHIBA_CAN +TEST_KDE_CAN +TEST_UAVCAN_ESC + + + +us +microseconds + + + + +1 250 + + +0: Servo 1, 1: Servo 2, 2: Servo 3, 3: Servo 4, 4: Servo 5, 5: Servo 6, 6: Servo 7, 7: Servo 8, 8: Servo 9, 9: Servo 10, 10: Servo 11, 11: Servo 12, 12: Servo 13, 13: Servo 14, 14: Servo 15 + + +0: ESC 1, 1: ESC 2, 2: ESC 3, 3: ESC 4, 4: ESC 5, 5: ESC 6, 6: ESC 7, 7: ESC 8, 8: ESC 9, 9: ESC 10, 10: ESC 11, 11: ESC 12, 12: ESC 13, 13: ESC 14, 14: ESC 15, 15: ESC 16 + + +1 200 +Hz +hertz + + +0:ClearDNADatabase,1:IgnoreDNANodeConflicts + + + + + +Disabled +UAVCAN +ToshibaCAN +PiccoloCAN +CANTester +KDECAN +PacketDigitalCAN + +True + + + + + + + + +0: ESC 1, 1: ESC 2, 2: ESC 3, 3: ESC 4, 4: ESC 5, 5: ESC 6, 6: ESC 7, 7: ESC 8, 8: ESC 9, 9: ESC 10, 10: ESC 11, 11: ESC 12, 12: ESC 13, 13: ESC 14, 14: ESC 15, 15: ESC 16 + + +Hz +hertz +1 500 + + +0: Servo 1, 1: Servo 2, 2: Servo 3, 3: Servo 4, 4: Servo 5, 5: Servo 6, 6: Servo 7, 7: Servo 8, 8: Servo 9, 9: Servo 10, 10: Servo 11, 11: Servo 12, 12: Servo 13, 13: Servo 14, 14: Servo 15, 15: Servo 16 + + +Hz +hertz +1 500 + + + + +0 4 + +TEST_NONE +TEST_LOOPBACK +TEST_BUSOFF_RECOVERY +TEST_UAVCAN_DNA +TEST_TOSHIBA_CAN +TEST_KDE_CAN +TEST_UAVCAN_ESC + + + +us +microseconds + + + + +1 250 + + +0: Servo 1, 1: Servo 2, 2: Servo 3, 3: Servo 4, 4: Servo 5, 5: Servo 6, 6: Servo 7, 7: Servo 8, 8: Servo 9, 9: Servo 10, 10: Servo 11, 11: Servo 12, 12: Servo 13, 13: Servo 14, 14: Servo 15 + + +0: ESC 1, 1: ESC 2, 2: ESC 3, 3: ESC 4, 4: ESC 5, 5: ESC 6, 6: ESC 7, 7: ESC 8, 8: ESC 9, 9: ESC 10, 10: ESC 11, 11: ESC 12, 12: ESC 13, 13: ESC 14, 14: ESC 15, 15: ESC 16 + + +1 200 +Hz +hertz + + +0:ClearDNADatabase,1:IgnoreDNANodeConflicts + + + + + +Disabled +First driver +Second driver + +True + + +10000 1000000 + + + + + +Disabled +First driver +Second driver + +True + + +10000 1000000 + + + + + +Disabled +First driver +Second driver + +True + + +10000 1000000 + + + + + +Disabled +First interface +Second interface + +True + + + +Disabled +Serial0 +Serial1 +Serial2 +Serial3 +Serial4 +Serial5 +Serial6 + + + +0 127 + + +0 127 + + + + +cm +centimeters +0 200000 +100 + + +deg/s +degrees per second +-90 90 +1 + + +0:manual control, 1:face direction of travel, 2:Start at center rather than on perimeter + + + + +-400 400 +mGauss +milligauss +1 +1 + + +-400 400 +mGauss +milligauss +1 +1 + + +-400 400 +mGauss +milligauss +1 + + +-3.142 3.142 +rad +radians +0.01 + + + +Disabled +Internal-Learning +EKF-Learning +InFlight-Learning + + + + +Disabled +Enabled + + + + +Disabled +Enabled + + + + +Disabled +Use Throttle +Use Current + +1 + + +-1000 1000 +mGauss/A +milligauss per ampere +1 +1 + + +-1000 1000 +mGauss/A +milligauss per ampere +1 +1 + + +-1000 1000 +mGauss/A +milligauss per ampere +1 + + + +None +Yaw45 +Yaw90 +Yaw135 +Yaw180 +Yaw225 +Yaw270 +Yaw315 +Roll180 +Roll180Yaw45 +Roll180Yaw90 +Roll180Yaw135 +Pitch180 +Roll180Yaw225 +Roll180Yaw270 +Roll180Yaw315 +Roll90 +Roll90Yaw45 +Roll90Yaw90 +Roll90Yaw135 +Roll270 +Roll270Yaw45 +Roll270Yaw90 +Roll270Yaw135 +Pitch90 +Pitch270 +Pitch180Yaw90 +Pitch180Yaw270 +Roll90Pitch90 +Roll180Pitch90 +Roll270Pitch90 +Roll90Pitch180 +Roll270Pitch180 +Roll90Pitch270 +Roll180Pitch270 +Roll270Pitch270 +Roll90Pitch180Yaw90 +Roll90Yaw270 +Yaw293Pitch68Roll180 +Pitch315 +Roll90Pitch315 +Custom + + + + +Internal +External +ForcedExternal + + + +-400 400 +mGauss +milligauss +1 +1 + + +-400 400 +mGauss +milligauss +1 +1 + + +-400 400 +mGauss +milligauss +1 + + +-1000 1000 +mGauss/A +milligauss per ampere +1 +1 + + +-1000 1000 +mGauss/A +milligauss per ampere +1 +1 + + +-1000 1000 +mGauss/A +milligauss per ampere +1 + + +-400 400 +mGauss +milligauss +1 +1 + + +-400 400 +mGauss +milligauss +1 +1 + + +-400 400 +mGauss +milligauss +1 + + +-1000 1000 +mGauss/A +milligauss per ampere +1 +1 + + +-1000 1000 +mGauss/A +milligauss per ampere +1 +1 + + +-1000 1000 +mGauss/A +milligauss per ampere +1 + + +True + + +True + + +True + + + +Disabled +Enabled + + + + +None +Yaw45 +Yaw90 +Yaw135 +Yaw180 +Yaw225 +Yaw270 +Yaw315 +Roll180 +Roll180Yaw45 +Roll180Yaw90 +Roll180Yaw135 +Pitch180 +Roll180Yaw225 +Roll180Yaw270 +Roll180Yaw315 +Roll90 +Roll90Yaw45 +Roll90Yaw90 +Roll90Yaw135 +Roll270 +Roll270Yaw45 +Roll270Yaw90 +Roll270Yaw135 +Pitch90 +Pitch270 +Pitch180Yaw90 +Pitch180Yaw270 +Roll90Pitch90 +Roll180Pitch90 +Roll270Pitch90 +Roll90Pitch180 +Roll270Pitch180 +Roll90Pitch270 +Roll180Pitch270 +Roll270Pitch270 +Roll90Pitch180Yaw90 +Roll90Yaw270 +Yaw293Pitch68Roll180 +Pitch315 +Roll90Pitch315 +Custom + + + + +Internal +External +ForcedExternal + + + + +Disabled +Enabled + + + + +None +Yaw45 +Yaw90 +Yaw135 +Yaw180 +Yaw225 +Yaw270 +Yaw315 +Roll180 +Roll180Yaw45 +Roll180Yaw90 +Roll180Yaw135 +Pitch180 +Roll180Yaw225 +Roll180Yaw270 +Roll180Yaw315 +Roll90 +Roll90Yaw45 +Roll90Yaw90 +Roll90Yaw135 +Roll270 +Roll270Yaw45 +Roll270Yaw90 +Roll270Yaw135 +Pitch90 +Pitch270 +Pitch180Yaw90 +Pitch180Yaw270 +Roll90Pitch90 +Roll180Pitch90 +Roll270Pitch90 +Roll90Pitch180 +Roll270Pitch180 +Roll90Pitch270 +Roll180Pitch270 +Roll270Pitch270 +Roll90Pitch180Yaw90 +Roll90Yaw270 +Yaw293Pitch68Roll180 +Pitch315 +Roll90Pitch315 +Custom + + + + +Internal +External +ForcedExternal + + + +1 + + +1 + + + + +1 + + +1 + + + + +1 + + +1 + + + + +1 + + +1 + + + + +1 + + +1 + + + + +1 + + +1 + + + + +4 32 + +Very Strict +Strict +Default +Relaxed + +0.1 + + +500 3000 +1 + + +0:HMC5883,1:LSM303D,2:AK8963,3:BMM150,4:LSM9DS1,5:LIS3MDL,6:AK09916,7:IST8310,8:ICM20948,9:MMC3416,11:UAVCAN,12:QMC5883,14:MAG3110,15:IST8308,16:RM3100,17:MSP,18:ExternalAHRS + + +% +percent +0 100 +1 + + + +Disabled +CheckOnly +CheckAndFix + + + +True + + +True + + +True + + + +Disabled +Enabled + + + +0 1.3 + + +0 1.3 + + +0 1.3 + + +0:CalRequireGPS + + +True + + +True + + +True + + +True + + +True + + +-180 180 +deg +degrees +1 +True + + +-180 180 +deg +degrees +1 +True + + +-180 180 +deg +degrees +1 +True + + + + + +Disabled +Enabled + + + +0 2 +0.01 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +None +VectorNav + + + +Hz +hertz + + + + + +Disabled +Enabled + +True + + + +GPS 3D Vel and 2D Pos +GPS 2D vel and 2D pos +GPS 2D pos +No GPS + + + +0.05 5.0 +0.05 +m/s +meters per second + + +0.05 5.0 +0.05 +m/s +meters per second + + +100 1000 +25 + + +0.1 10.0 +0.1 +m +meters + + +100 1000 +25 + + +10 100 +5 +m +meters + + + +Use Baro +Use Range Finder +Use GPS +Use Range Beacon + +True + + +0.1 10.0 +0.1 +m +meters + + +100 1000 +25 + + +0 250 +10 +ms +milliseconds +True + + +0.01 0.5 +0.01 +Gauss +gauss + + + +When flying +When manoeuvring +Never +After first climb yaw reset +Always + + + +100 1000 +25 + + +0.5 5.0 +0.1 +m/s +meters per second + + +100 1000 +25 + + +0.1 10.0 +0.1 +m +meters + + +100 1000 +25 + + +1.0 4.0 +0.1 +rad/s +radians per second + + +0.05 1.0 +0.05 +rad/s +radians per second + + +100 1000 +25 + + +0 127 +10 +ms +milliseconds +True + + +0.0001 0.1 +0.0001 +rad/s +radians per second + + +0.01 1.0 +0.01 +m/s/s +meters per square second + + +0.00001 0.001 +rad/s/s +radians per square second + + +0.000001 0.001 +Hz +hertz + + +0.00001 0.005 +m/s/s/s +meters per cubic second + + +0.01 1.0 +0.1 +m/s/s +meters per square second + + +0.0 1.0 +0.1 + + +0:NSats,1:HDoP,2:speed error,3:position error,4:yaw error,5:pos drift,6:vert speed,7:horiz speed + + +0:FirstIMU,1:SecondIMU,2:ThirdIMU,3:FourthIMU,4:FifthIMU,5:SixthIMU +True + + +50 200 +% +percent + + +0.5 50.0 +m +meters + + +0.05 1.0 +0.05 +rad +radians + + +100 1000 +25 + + +10 50 +5 +cs +centiseconds + + +0.00001 0.01 +Gauss/s +gauss per second + + +0.00001 0.01 +Gauss/s +gauss per second + + +-1 70 +1 +% +percent + + +0 0.2 +0.01 + + +0.1 10.0 +0.1 +m +meters + + +100 1000 +25 + + +0 127 +10 +ms +milliseconds +True + + +2.0 6.0 +0.5 +m/s +meters per second + + +0:FirstEKF,1:SecondEKF,2:ThirdEKF,3:FourthEKF,4:FifthEKF,5:SixthEKF +True + + +0:Correct when using Baro height,1:Correct when using range finder height,2:Apply corrections to local position +True + + + +None +Navigation +Terrain + +True + + +0 500 +mGauss +milligauss + + +0.1 30.0 +Hz +hertz +False + + +0:FirstEKF,1:SecondEKF,2:ThirdEKF,3:FourthEKF,4:FifthEKF,5:SixthEKF +True + + +0:FirstEKF,1:SecondEKF,2:ThirdEKF,3:FourthEKF,4:FifthEKF,5:SixthEKF +True + + +1 10 +1 +True + + + + + +Disabled +Enabled + +True + + +0.05 5.0 +0.05 +m/s +meters per second + + +0.05 5.0 +0.05 +m/s +meters per second + + +100 1000 +25 + + +0.1 10.0 +0.1 +m +meters + + +100 1000 +25 + + +10 100 +5 +m +meters + + +0.1 10.0 +0.1 +m +meters + + +100 1000 +25 + + +0 250 +10 +True +ms +milliseconds + + +0.01 0.5 +0.01 +Gauss +gauss + + + +When flying +When manoeuvring +Never +After first climb yaw reset +Always +Use external yaw sensor (Deprecated in 4.1+ see EK3_SRCn_YAW) +External yaw sensor with compass fallback (Deprecated in 4.1+ see EK3_SRCn_YAW) + +True + + +100 1000 +25 + + +0.5 5.0 +0.1 +m/s +meters per second + + +100 1000 +25 + + +0.1 10.0 +0.1 +m +meters + + +100 1000 +25 + + +1.0 4.0 +0.1 +rad/s +radians per second + + +0.05 1.0 +0.05 +rad/s +radians per second + + +100 1000 +25 + + +0 250 +10 +True +ms +milliseconds + + +0.0001 0.1 +0.0001 +rad/s +radians per second + + +0.01 1.0 +0.01 +m/s/s +meters per square second + + +0.00001 0.001 +rad/s/s +radians per square second + + +0.00001 0.005 +m/s/s/s +meters per cubic second + + +0.01 2.0 +0.1 +m/s/s +meters per square second + + +0.0 2.0 +0.1 + + +0:NSats,1:HDoP,2:speed error,3:position error,4:yaw error,5:pos drift,6:vert speed,7:horiz speed + + +0:FirstIMU,1:SecondIMU,2:ThirdIMU,3:FourthIMU,4:FifthIMU,5:SixthIMU +True + + +50 200 +% +percent + + +0.5 50.0 +m +meters + + +0:Always,1:WhenNoYawSensor +True + + +0.05 1.0 +0.05 +rad +radians + + +100 1000 +25 + + +10 50 +5 +cs +centiseconds + + +0.00001 0.01 +Gauss/s +gauss per second + + +0.00001 0.01 +Gauss/s +gauss per second + + +-1 70 +1 +% +percent + + +0 0.2 +0.01 + + +0.1 10.0 +0.1 +m +meters + + +100 1000 +25 + + +0 250 +10 +True +ms +milliseconds + + +2.0 6.0 +0.5 +m/s +meters per second + + +0.5 2.5 +0.1 +m/s/s +meters per square second + + +0:FirstEKF,1:SecondEKF,2:ThirdEKF,3:FourthEKF,4:FifthEKF,5:SixthEKF +True + + +0:Correct when using Baro height,1:Correct when using range finder height,2:Apply corrections to local position +True + + +0.05 0.5 +0.05 +m/s +meters per second + + +0.5 5.0 +0.1 +m/s +meters per second + + +0.01 1.0 +0.1 +m/s +meters per second + + + +None +Navigation +Terrain + +True + + +0.1 30.0 +Hz +hertz +False + + +0 500 +mGauss +milligauss + + +0:FirstEKF,1:SecondEKF,2:ThirdEKF,3:FourthEKF,4:FifthEKF,5:SixthEKF +True + + +0:FirstEKF,1:SecondEKF,2:ThirdEKF,3:FourthEKF,4:FifthEKF,5:SixthEKF +True + + +1 10 +1 +True + + +0.05 1 +0.05 + + +0:EnableGPSAffinity,1:EnableBaroAffinity,2:EnableCompassAffinity,3:EnableAirspeedAffinity +True + + +0.0 1000.0 +kg/m/m +kilograms per square meter + + +50.0 1000.0 +kg/m/m +kilograms per square meter + + +0.1 2.0 +0.1 +m/s/s +meters per square second + + +0.0 1.0 +0.01 +1/s +per second + + +1.0 10.0 +0.5 + + +0.0 10.0 +0.5 + + +0 2 +1 + + + + + +None +GPS +Beacon +ExternalNav + + + + +None +GPS +Beacon +OpticalFlow +ExternalNav +WheelEncoder + + + + +None +Baro +RangeFinder +GPS +Beacon +ExternalNav + + + + +None +GPS +Beacon +ExternalNav + + + + +None +Compass +GPS +GPS with Compass Fallback +ExternalNav +GSF + + + + +None +GPS +Beacon +ExternalNav + + + + +None +GPS +Beacon +OpticalFlow +ExternalNav +WheelEncoder + + + + +None +Baro +RangeFinder +GPS +Beacon +ExternalNav + + + + +None +GPS +Beacon +ExternalNav + + + + +None +Compass +GPS +GPS with Compass Fallback +ExternalNav +GSF + + + + +None +GPS +Beacon +ExternalNav + + + + +None +GPS +Beacon +OpticalFlow +ExternalNav +WheelEncoder + + + + +None +Baro +RangeFinder +GPS +Beacon +ExternalNav + + + + +None +GPS +Beacon +ExternalNav + + + + +None +Compass +GPS +GPS with Compass Fallback +ExternalNav +GSF + + + +0:FuseAllVelocities + + + + + +Disabled +Enabled + + + +0:Max altitude,1:Circle,2:Polygon,3:Min altitude + + + +Report Only +RTL or Land + + + +m +meters +10 1000 +1 + + +m +meters +30 10000 + + +m +meters +1 10 + + +1 20 + + +m +meters +-100 100 +1 + + + + + +Disabled +Enabled + +True + + +20 400 +Hz +hertz + + +20 495 +Hz +hertz + + +0 4 +True + + +32 1024 +True + + +0 0.9 +True + + +0 250 + + +0.01 0.9 + + +0.0 100.0 + + +0 100 + + +0 200 + + +0 100 +True + + + +Auto +Center Frequency +Lower-Shoulder Frequency +Upper-Shoulder Frequency +Roll-Axis +Pitch-Axis + + + + + + +None +PX4Flow +Pixart +Bebop +CXOF +MAVLink +UAVCAN +MSP +UPFLOW + +True + + +-200 +200 +1 + + +-200 +200 +1 + + +cdeg +centidegrees +-17999 +18000 +10 + + +m +meters +-5 5 +0.01 + + +m +meters +-5 5 +0.01 + + +m +meters +-5 5 +0.01 + + +0 127 + + + + + +Disable +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 + + + + +Disable +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 + + + + +Disable +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 + + + + +Disable +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 + + + + + + +Disabled +IE 650w 800w Fuel Cell +IE 2.4kW Fuel Cell +Richenpower + +True + + + + + +None +AUTO +uBlox +MTK +MTK19 +NMEA +SiRF +HIL +SwiftNav +UAVCAN +SBF +GSOF +ERB +MAV +NOVA +HemisphereNMEA +uBlox-MovingBaseline-Base +uBlox-MovingBaseline-Rover +MSP +AllyStar +ExternalAHRS + +True + + + +None +AUTO +uBlox +MTK +MTK19 +NMEA +SiRF +HIL +SwiftNav +UAVCAN +SBF +GSOF +ERB +MAV +NOVA +HemisphereNMEA +uBlox-MovingBaseline-Base +uBlox-MovingBaseline-Rover +MSP +AllyStar +ExternalAHRS + +True + + + +Portable +Stationary +Pedestrian +Automotive +Sea +Airborne1G +Airborne2G +Airborne4G + + + + +Use primary +UseBest +Blend +Use primary if 3D fix or better + + + + +Any +FloatRTK +IntegerRTK + +True + + + +Disabled +Enabled +NoChange + + + +-100 90 +deg +degrees + + + +send to first GPS +send to 2nd GPS +send to all + + + + +None (0x0000) +All (0xFFFF) +External only (0xFF00) + + + + +Ignore +Always log +Stop logging when disarmed (SBF only) +Only log every five samples (uBlox only) + +True + + +0:GPS,1:SBAS,2:Galileo,3:Beidou,4:IMES,5:QZSS,6:GLONASS + + + +Do not save config +Save config +Save only when needed + + + +0:GPS,1:SBAS,2:Galileo,3:Beidou,4:IMES,5:QZSS,6:GLONASS + + + +Disables automatic configuration +Enable automatic configuration + + + +ms +milliseconds + +10Hz +8Hz +5Hz + +50 200 + + +ms +milliseconds + +10Hz +8Hz +5Hz + +50 200 + + +m +meters +-5 5 +0.01 + + +m +meters +-5 5 +0.01 + + +m +meters +-5 5 +0.01 + + +m +meters +-5 5 +0.01 + + +m +meters +-5 5 +0.01 + + +m +meters +-5 5 +0.01 + + +ms +milliseconds +0 250 +True + + +ms +milliseconds +0 250 +True + + +0:Horiz Pos,1:Vert Pos,2:Speed + + +s +seconds +5.0 30.0 + + +0:Use UART2 for moving baseline on ublox,1:Use base station for GPS yaw on SBF,2:Use baudrate 115200 + + +0 10 +1 +True + + +0 10 +1 +True + + +1 + +FirstGPS +SecondGPS + + + +True + + +True + + + + + + + + + +Relative to alternate GPS instance +RelativeToCustomBase + +True + + +m +meters +-5 5 +0.01 + + +m +meters +-5 5 +0.01 + + +m +meters +-5 5 +0.01 + + + + + +Relative to alternate GPS instance +RelativeToCustomBase + +True + + +m +meters +-5 5 +0.01 + + +m +meters +-5 5 +0.01 + + +m +meters +-5 5 +0.01 + + + + + +Disabled +Enabled + + + + +None +Servo +EPM + + + +1000 2000 +PWM +PWM in microseconds + + +1000 2000 +PWM +PWM in microseconds + + +1000 2000 +PWM +PWM in microseconds + + +0 255 +s +seconds + + +0 255 + + + + +rad/s +radians per second +1 + + +rad/s +radians per second +1 + + +rad/s +radians per second +1 + + +rad/s +radians per second +1 + + +rad/s +radians per second +1 + + +rad/s +radians per second +1 + + +rad/s +radians per second +1 + + +rad/s +radians per second +1 + + +rad/s +radians per second +1 + + +0.8 1.2 +1 + + +0.8 1.2 +1 + + +0.8 1.2 +1 + + +m/s/s +meters per square second +-3.5 3.5 +1 + + +m/s/s +meters per square second +-3.5 3.5 +1 + + +m/s/s +meters per square second +-3.5 3.5 +1 + + +0.8 1.2 +1 + + +0.8 1.2 +1 + + +0.8 1.2 +1 + + +m/s/s +meters per square second +-3.5 3.5 +1 + + +m/s/s +meters per square second +-3.5 3.5 +1 + + +m/s/s +meters per square second +-3.5 3.5 +1 + + +0.8 1.2 +1 + + +0.8 1.2 +1 + + +0.8 1.2 +1 + + +m/s/s +meters per square second +-3.5 3.5 +1 + + +m/s/s +meters per square second +-3.5 3.5 +1 + + +m/s/s +meters per square second +-3.5 3.5 +1 + + +Hz +hertz +0 256 + + +Hz +hertz +0 256 + + + +Disabled +Enabled + + + + +Disabled +Enabled + + + + +Disabled +Enabled + + + +0.05 50 + + + +Never +Start-up only + + + + +Don't adjust the trims +Assume first orientation was level +Assume ACC_BODYFIX is perfectly aligned to the vehicle + + + + +IMU 1 +IMU 2 +IMU 3 + + + +m +meters +-5 5 +0.01 + + +m +meters +-5 5 +0.01 + + +m +meters +-5 5 +0.01 + + +m +meters +-5 5 +0.01 + + +m +meters +-5 5 +0.01 + + +m +meters +-5 5 +0.01 + + +m +meters +-10 10 + + +m +meters +-5 5 +0.01 + + +m +meters +-5 5 +0.01 + + +True + + +True + + +True + + +True + + +True + + +True + + +0:FirstIMU,1:SecondIMU,2:ThirdIMU + + +0:FirstIMU,1:SecondIMU,2:ThirdIMU + + + +1kHz +2kHz +4kHz +8kHz + +True + + +degC +degrees Celsius +1 + + +degC +degrees Celsius +1 + + +degC +degrees Celsius +1 + + +degC +degrees Celsius +1 + + +degC +degrees Celsius +1 + + +degC +degrees Celsius +1 + + +0:PersistParams + + + + + +Disabled +Enabled + + + +10 495 +Hz +hertz + + +5 250 +Hz +hertz + + +5 50 +dB +decibel + + +0:1st harmonic,1:2nd harmonic,2:3rd harmonic,3:4th hamronic,4:5th harmonic,5:6th harmonic,6:7th harmonic,7:8th harmonic +True + + +0.0 1.0 +True + + +0 4 + +Disabled +Throttle +RPM Sensor +ESC Telemetry +Dynamic FFT + + + +0:Double notch,1:Dynamic harmonic,2:Update at loop rate +True + + + + +32 +True + + +0:IMU1,1:IMU2,2:IMU3 +True + + +0:Sensor-Rate Logging (sample at full sensor rate seen by AP), 1: Sample post-filtering + + +ms +milliseconds +10 + + +1 + + + + + +Disabled +Enabled + + + +5 30 +dB +decibel + + +10 400 +Hz +hertz + + +5 100 +Hz +hertz + + + + + +Disabled +Enabled +LearnCalibration + +True + + +-70 80 +degC +degrees Celsius +1 + + +-70 80 +degC +degrees Celsius +1 + + +1 + + +1 + + +1 + + +1 + + +1 + + +1 + + +1 + + +1 + + +1 + + +1 + + +1 + + +1 + + +1 + + +1 + + +1 + + +1 + + +1 + + +1 + + + + + +Disabled +Enabled +LearnCalibration + +True + + +-70 80 +degC +degrees Celsius +1 + + +-70 80 +degC +degrees Celsius +1 + + +1 + + +1 + + +1 + + +1 + + +1 + + +1 + + +1 + + +1 + + +1 + + +1 + + +1 + + +1 + + +1 + + +1 + + +1 + + +1 + + +1 + + +1 + + + + + +Disabled +Enabled +LearnCalibration + +True + + +-70 80 +degC +degrees Celsius +1 + + +-70 80 +degC +degrees Celsius +1 + + +1 + + +1 + + +1 + + +1 + + +1 + + +1 + + +1 + + +1 + + +1 + + +1 + + +1 + + +1 + + +1 + + +1 + + +1 + + +1 + + +1 + + +1 + + + + + +Disabled +Pixhawk Aux1 +Pixhawk Aux2 +Pixhawk Aux3 +Pixhawk Aux4 +Pixhawk Aux5 +Pixhawk Aux6 +Pixhawk 3.3ADC1 +Pixhawk 3.3ADC2 +Pixhawk 6.6ADC +Navigator Built-In + +True + + + +Low +High + + + + +Disabled +Pixhawk Aux1 +Pixhawk Aux2 +Pixhawk Aux3 +Pixhawk Aux4 +Pixhawk Aux5 +Pixhawk Aux6 +Pixhawk 3.3ADC1 +Pixhawk 3.3ADC2 +Pixhawk 6.6ADC +Navigator Leak1 + +True + + + +Low +High + + + + +Disabled +Pixhawk Aux1 +Pixhawk Aux2 +Pixhawk Aux3 +Pixhawk Aux4 +Pixhawk Aux5 +Pixhawk Aux6 +Pixhawk 3.3ADC1 +Pixhawk 3.3ADC2 +Pixhawk 6.6ADC +Navigator Leak1 + +True + + + +Low +High + + + + + +0:File,1:MAVLink,2:Block + + + + + +Disabled +Enabled + + + + +Disabled +Enabled + + + + +Disabled +Enabled + + + +kB +kilobytes + + +s +seconds + + +MB +megabyte +10 1000 + + + + +deg +degrees +0 45 +1 + + +cm/s +centimeters per second +20 3500 +50 + + +cm/s/s +centimeters per square second +100 981 +1 + + +cm/s/s +centimeters per square second +25 250 +1 + + +cm/s/s/s +centimeters per cubic second +500 5000 +1 + + +s +seconds +0 2 +0.1 + + + + +0 32766 +1 +True + + + +Resume Mission +Restart Mission + + + +0:Clear Mission on reboot + + + + + +None +Servo +3DR Solo +Alexmos Serial +SToRM32 MAVLink +SToRM32 Serial + +True + + + +Retracted +Neutral +MavLink Targeting +RC Targeting +GPS Point + + + +deg +degrees +-180.00 179.99 +1 + + +deg +degrees +-180.00 179.99 +1 + + +deg +degrees +-180.00 179.99 +1 + + +deg +degrees +-180.00 179.99 +1 + + +deg +degrees +-180.00 179.99 +1 + + +deg +degrees +-180.00 179.99 +1 + + + +Disabled +Enabled + + + + +Disabled +Enabled + + + + +Disabled +Enabled + + + + +Disabled +RC5 +RC6 +RC7 +RC8 +RC9 +RC10 +RC11 +RC12 + + + +cdeg +centidegrees +-18000 17999 +10 + + +cdeg +centidegrees +-18000 17999 +10 + + + +Disabled +RC5 +RC6 +RC7 +RC8 +RC9 +RC10 +RC11 +RC12 + + + +cdeg +centidegrees +-18000 17999 +10 + + +cdeg +centidegrees +-18000 17999 +10 + + + +Disabled +RC5 +RC6 +RC7 +RC8 +RC9 +RC10 +RC11 +RC12 + + + +cdeg +centidegrees +-18000 17999 +10 + + +cdeg +centidegrees +-18000 17999 +10 + + +0 100 +1 + + +s +seconds +0.0 0.2 +.005 + + +s +seconds +0.0 0.2 +.005 + + + +Retracted +Neutral +MavLink Targeting +RC Targeting +GPS Point + + + +deg +degrees +-180.00 179.99 +1 + + +deg +degrees +-180.00 179.99 +1 + + +deg +degrees +-180.00 179.99 +1 + + +deg +degrees +-180.00 179.99 +1 + + +deg +degrees +-180.00 179.99 +1 + + +deg +degrees +-180.00 179.99 +1 + + + +Disabled +Enabled + + + + +Disabled +Enabled + + + + +Disabled +Enabled + + + + +Disabled +RC5 +RC6 +RC7 +RC8 +RC9 +RC10 +RC11 +RC12 + + + +cdeg +centidegrees +-18000 17999 +10 + + +cdeg +centidegrees +-18000 17999 +10 + + + +Disabled +RC5 +RC6 +RC7 +RC8 +RC9 +RC10 +RC11 +RC12 + + + +cdeg +centidegrees +-18000 17999 +10 + + +cdeg +centidegrees +-18000 17999 +10 + + + +Disabled +RC5 +RC6 +RC7 +RC8 +RC9 +RC10 +RC11 +RC12 + + + +cdeg +centidegrees +-18000 17999 +10 + + +cdeg +centidegrees +-18000 17999 +10 + + +s +seconds +0.0 0.2 +.005 + + +s +seconds +0.0 0.2 +.005 + + + +None +Servo +3DR Solo +Alexmos Serial +SToRM32 MAVLink +SToRM32 Serial + + + + + + +normal +reverse + + + + +normal +reverse + + + + +normal +reverse + + + + +normal +reverse + + + + +normal +reverse + + + + +normal +reverse + + + + +normal +reverse + + + + +normal +reverse + + + +0.0 1.5 +0.1 + + + +normal +reverse + + + + +normal +reverse + + + + +normal +reverse + + + + +normal +reverse + + + +0 500 +PWM +PWM in microseconds + + +-1.0 1.0 + + +0.9:Low,0.95:Default,1.0:High + + +6 53 +V +volt + + +6 42 +V +volt + + +0 200 +A +ampere + + + +Normal +OneShot +OneShot125 +Brushed +DShot150 +DShot300 +DShot600 +DShot1200 + +True + + +PWM +PWM in microseconds +0 2000 + + +PWM +PWM in microseconds +0 2000 + + +0.0:Low,0.15:Default,0.3:High + + +0.0:Low,0.1:Default,0.2:High + + +0 10 +s +seconds + + +0.2 0.8 + + + +Disabled + + + + +PWM enabled while disarmed +PWM disabled while disarmed + + + +5 80 +deg +degrees +1 + + +0 2 +s +seconds +0.1 + + +0 5 +0.1 + + + +First battery +Second battery + + + +0 .5 +s +seconds +0.001 + + +0 .5 +s +seconds +0.001 + + +0 5 +s +seconds +0.001 + + + + + +Auto +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 + + + +0:EnableTelemetryMode + + + + + +Off +Low +Medium +High + + + +0:Built-in buzzer, 1:DShot, 2:UAVCAN + + + +Standard +MAVLink/Scripting/AP_Periph +OutbackChallenge +TrafficLight + + + + +Disable +ssd1306 +sh1106 +SITL + + + + +Disabled +Aircraft +Rover + + + + +Disabled + + + +0:Built-in LED, 1:Internal ToshibaLED, 2:External ToshibaLED, 3:External PCA9685, 4:Oreo LED, 5:UAVCAN, 6:NCP5623 External, 7:NCP5623 Internal, 8:NeoPixel, 9:ProfiLED, 10:Scripting, 11:DShot + + + +LowIsOn +HighIsOn + + + +0 100 +% +percent + + +1 32 +True + + + + + +None +LightwareSF40c +LightWareSF40C-legacy +MAVLink +TeraRangerTower +RangeFinder +RPLidarA2 +TeraRangerTowerEvo +LightwareSF45B +SITL +AirSimSITL + +True + + + +Default +Upside Down + + + +deg +degrees +-180 180 + + +deg +degrees +0 360 + + +deg +degrees +0 127 + + +deg +degrees +0 360 + + +deg +degrees +0 127 + + +deg +degrees +0 360 + + +deg +degrees +0 127 + + +deg +degrees +0 360 + + +deg +degrees +0 127 + + +deg +degrees +0 360 + + +deg +degrees +0 127 + + +deg +degrees +0 360 + + +deg +degrees +0 127 + + + +Off +On + + + +Hz +hertz +0 20 + + + + +Hz +hertz +0.5 5 +0.1 + + +1.000 3.000 + + +1.000 8.000 + + +0.02 1.00 +0.01 + + +1.000 8.000 + + +0.00 1.00 +0.001 + + +0 1 +0.01 + + +0 100 +Hz +hertz + + +0 100 +Hz +hertz + + +0.200 1.500 +0.05 + + +0.000 3.000 + + +0 1000 +d% +decipercent + + +0.000 0.400 + + +0 0.5 +0.001 + + +1 50 +1 +Hz +hertz + + +1 100 +1 +Hz +hertz + + +1 100 +1 +Hz +hertz + + +0 200 +0.5 + + +0.500 2.000 + + +0.1 6.0 +0.1 + + +0.02 1.00 +0.01 + + +0.00 1.00 +0.001 + + +0 4500 +10 +cm/s/s +centimeters per square second + + +0 100 +Hz +hertz + + +0 100 +Hz +hertz + + +0 6 +0.01 + + +deg +degrees +0 45 +1 + + +m/s/s/s +meters per cubic second +1 20 +1 + + +m/s/s/s +meters per cubic second +5 50 +1 + + + + + + +km +kilometers +0.1 + + + +DoNotIncludeHome +IncludeHome + + + + + +0.0 120.0 +s +seconds + + +0:Ignore RC Receiver, 1:Ignore MAVLink Overrides, 2:Ignore Receiver Failsafe bit but allow other RC failsafes if setup, 3:FPort Pad, 4:Log RC input bytes, 5:Arming check throttle for 0 input, 6:Skip the arming check for neutral Roll/Pitch/Yay sticks, 7:Allow Switch reverse, 8:Use passthrough for CRSF telemetry, 9:Suppress CRSF mode/rate message for ELRS systems, 10:Enable RC Protocol re-detection + + +0:All,1:PPM,2:IBUS,3:SBUS,4:SBUS_NI,5:DSM,6:SUMD,7:SRXL,8:SRXL2,9:CRSF,10:ST24,11:FPORT,12:FPORT2 + + + + +PWM +PWM in microseconds +800 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + + +Normal +Reversed + + + +PWM +PWM in microseconds +0 200 + + + + +PWM +PWM in microseconds +800 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + + +Normal +Reversed + + + +PWM +PWM in microseconds +0 200 + + + + +PWM +PWM in microseconds +800 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + + +Normal +Reversed + + + +PWM +PWM in microseconds +0 200 + + + + +PWM +PWM in microseconds +800 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + + +Normal +Reversed + + + +PWM +PWM in microseconds +0 200 + + + + +PWM +PWM in microseconds +800 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + + +Normal +Reversed + + + +PWM +PWM in microseconds +0 200 + + + + +PWM +PWM in microseconds +800 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + + +Normal +Reversed + + + +PWM +PWM in microseconds +0 200 + + + + +PWM +PWM in microseconds +800 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + + +Normal +Reversed + + + +PWM +PWM in microseconds +0 200 + + + + +PWM +PWM in microseconds +800 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + + +Normal +Reversed + + + +PWM +PWM in microseconds +0 200 + + + + +PWM +PWM in microseconds +800 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + + +Normal +Reversed + + + +PWM +PWM in microseconds +0 200 + + + + +PWM +PWM in microseconds +800 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + + +Normal +Reversed + + + +PWM +PWM in microseconds +0 200 + + + + +PWM +PWM in microseconds +800 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + + +Normal +Reversed + + + +PWM +PWM in microseconds +0 200 + + + + +PWM +PWM in microseconds +800 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + + +Normal +Reversed + + + +PWM +PWM in microseconds +0 200 + + + + +PWM +PWM in microseconds +800 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + + +Normal +Reversed + + + +PWM +PWM in microseconds +0 200 + + + + +PWM +PWM in microseconds +800 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + + +Normal +Reversed + + + +PWM +PWM in microseconds +0 200 + + + + +PWM +PWM in microseconds +800 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + + +Normal +Reversed + + + +PWM +PWM in microseconds +0 200 + + + + +PWM +PWM in microseconds +800 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + + +Normal +Reversed + + + +PWM +PWM in microseconds +0 200 + + + + +1 8 +1 +True + + +1 8 +1 +True + + +1 8 +1 +True + + +1 8 +1 +True + + +1 8 +1 +True + + +1 8 +1 +True + + + + + +Disabled +BB Blue GP0 pin 4 +AUXOUT1 +AUXOUT2 +AUXOUT3 +AUXOUT4 +AUXOUT5 +AUXOUT6 +BB Blue GP0 pin 3 +BB Blue GP0 pin 6 +BB Blue GP0 pin 5 +BBBMini Pin P8.17 + + + + +Disabled +BB Blue GP0 pin 4 +AUXOUT1 +AUXOUT2 +AUXOUT3 +AUXOUT4 +AUXOUT5 +AUXOUT6 +BB Blue GP0 pin 3 +BB Blue GP0 pin 6 +BB Blue GP0 pin 5 +BBBMini Pin P8.18 + + + + +Disabled +BB Blue GP0 pin 4 +AUXOUT1 +AUXOUT2 +AUXOUT3 +AUXOUT4 +AUXOUT5 +AUXOUT6 +BB Blue GP0 pin 3 +BB Blue GP0 pin 6 +BB Blue GP0 pin 5 +BBBMini Pin P8.19 + + + + +Disabled +BB Blue GP0 pin 4 +AUXOUT1 +AUXOUT2 +AUXOUT3 +AUXOUT4 +AUXOUT5 +AUXOUT6 +BB Blue GP0 pin 3 +BB Blue GP0 pin 6 +BB Blue GP0 pin 5 +BBBMini Pin P8.34 + + + + +Off +On +NoChange + + + + +Disabled +BB Blue GP0 pin 4 +AUXOUT1 +AUXOUT2 +AUXOUT3 +AUXOUT4 +AUXOUT5 +AUXOUT6 +BB Blue GP0 pin 3 +BB Blue GP0 pin 6 +BB Blue GP0 pin 5 +BBBMini Pin P8.13 + + + + +Disabled +BB Blue GP0 pin 4 +AUXOUT1 +AUXOUT2 +AUXOUT3 +AUXOUT4 +AUXOUT5 +AUXOUT6 +BB Blue GP0 pin 3 +BB Blue GP0 pin 6 +BB Blue GP0 pin 5 +BBBMini Pin P8.14 + + + + + + +None +Analog +MaxbotixI2C +LidarLite-I2C +PWM +BBB-PRU +LightWareI2C +LightWareSerial +Bebop +MAVLink +uLanding +LeddarOne +MaxbotixSerial +TeraRangerI2C +LidarLiteV3-I2C +VL53L0X or VL53L1X +NMEA +WASP-LRF +BenewakeTF02 +Benewake-Serial +LidarLightV3HP +PWM +BlueRoboticsPing +UAVCAN +BenewakeTFminiPlus-I2C +LanbaoPSK-CM8JL65-CC5 +BenewakeTF03 +VL53L1X-ShortRange +LeddarVu8-Serial +HC-SR04 +GYUS42v2 +MSP +USD1_CAN +SITL + + + + +Not Used +PX4-airspeed port +Pixhawk-airspeed port +Pixhawk AUXOUT1 +Pixhawk AUXOUT2 +Pixhawk AUXOUT3 +Pixhawk AUXOUT4 +Pixhawk AUXOUT5 +Pixhawk AUXOUT6 + + + +m/V +meters per volt +0.001 + + +V +volt +0.001 + + + +Linear +Inverted +Hyperbolic + + + +cm +centimeters +1 + + +cm +centimeters +1 + + + +Not Used +Pixhawk AUXOUT1 +Pixhawk AUXOUT2 +Pixhawk AUXOUT3 +Pixhawk AUXOUT4 +Pixhawk AUXOUT5 +Pixhawk AUXOUT6 +PX4 FMU Relay1 +PX4 FMU Relay2 +PX4IO Relay1 +PX4IO Relay2 +PX4IO ACC1 +PX4IO ACC2 + + + + +No +Yes + + + +m +meters +0 32767 + + +cm +centimeters +5 127 +1 + + +0 127 +1 + + +m +meters +-5 5 +0.01 + + +m +meters +-5 5 +0.01 + + +m +meters +-5 5 +0.01 + + + +Forward +Forward-Right +Right +Back-Right +Back +Back-Left +Left +Forward-Left +Up +Down + + + +0 255 + + +0 255 + + +0 10000 + + +0 255 + + +-1 255 + + + +Low Speed +High Speed + + + + + + +None +Analog +MaxbotixI2C +LidarLite-I2C +PWM +BBB-PRU +LightWareI2C +LightWareSerial +Bebop +MAVLink +uLanding +LeddarOne +MaxbotixSerial +TeraRangerI2C +LidarLiteV3-I2C +VL53L0X or VL53L1X +NMEA +WASP-LRF +BenewakeTF02 +Benewake-Serial +LidarLightV3HP +PWM +BlueRoboticsPing +UAVCAN +BenewakeTFminiPlus-I2C +LanbaoPSK-CM8JL65-CC5 +BenewakeTF03 +VL53L1X-ShortRange +LeddarVu8-Serial +HC-SR04 +GYUS42v2 +MSP +USD1_CAN +SITL + + + + +Not Used +PX4-airspeed port +Pixhawk-airspeed port +Pixhawk AUXOUT1 +Pixhawk AUXOUT2 +Pixhawk AUXOUT3 +Pixhawk AUXOUT4 +Pixhawk AUXOUT5 +Pixhawk AUXOUT6 + + + +m/V +meters per volt +0.001 + + +V +volt +0.001 + + + +Linear +Inverted +Hyperbolic + + + +cm +centimeters +1 + + +cm +centimeters +1 + + + +Not Used +Pixhawk AUXOUT1 +Pixhawk AUXOUT2 +Pixhawk AUXOUT3 +Pixhawk AUXOUT4 +Pixhawk AUXOUT5 +Pixhawk AUXOUT6 +PX4 FMU Relay1 +PX4 FMU Relay2 +PX4IO Relay1 +PX4IO Relay2 +PX4IO ACC1 +PX4IO ACC2 + + + + +No +Yes + + + +m +meters +0 32767 + + +cm +centimeters +5 127 +1 + + +0 127 +1 + + +m +meters +-5 5 +0.01 + + +m +meters +-5 5 +0.01 + + +m +meters +-5 5 +0.01 + + + +Forward +Forward-Right +Right +Back-Right +Back +Back-Left +Left +Forward-Left +Up +Down + + + +0 255 + + +0 255 + + +0 10000 + + +0 255 + + +-1 255 + + + +Low Speed +High Speed + + + + + + +None +Analog +MaxbotixI2C +LidarLite-I2C +PWM +BBB-PRU +LightWareI2C +LightWareSerial +Bebop +MAVLink +uLanding +LeddarOne +MaxbotixSerial +TeraRangerI2C +LidarLiteV3-I2C +VL53L0X or VL53L1X +NMEA +WASP-LRF +BenewakeTF02 +Benewake-Serial +LidarLightV3HP +PWM +BlueRoboticsPing +UAVCAN +BenewakeTFminiPlus-I2C +LanbaoPSK-CM8JL65-CC5 +BenewakeTF03 +VL53L1X-ShortRange +LeddarVu8-Serial +HC-SR04 +GYUS42v2 +MSP +USD1_CAN +SITL + + + + +Not Used +PX4-airspeed port +Pixhawk-airspeed port +Pixhawk AUXOUT1 +Pixhawk AUXOUT2 +Pixhawk AUXOUT3 +Pixhawk AUXOUT4 +Pixhawk AUXOUT5 +Pixhawk AUXOUT6 + + + +m/V +meters per volt +0.001 + + +V +volt +0.001 + + + +Linear +Inverted +Hyperbolic + + + +cm +centimeters +1 + + +cm +centimeters +1 + + + +Not Used +Pixhawk AUXOUT1 +Pixhawk AUXOUT2 +Pixhawk AUXOUT3 +Pixhawk AUXOUT4 +Pixhawk AUXOUT5 +Pixhawk AUXOUT6 +PX4 FMU Relay1 +PX4 FMU Relay2 +PX4IO Relay1 +PX4IO Relay2 +PX4IO ACC1 +PX4IO ACC2 + + + + +No +Yes + + + +m +meters +0 32767 + + +cm +centimeters +5 127 +1 + + +0 127 +1 + + +m +meters +-5 5 +0.01 + + +m +meters +-5 5 +0.01 + + +m +meters +-5 5 +0.01 + + + +Forward +Forward-Right +Right +Back-Right +Back +Back-Left +Left +Forward-Left +Up +Down + + + +0 255 + + +0 255 + + +0 10000 + + +0 255 + + +-1 255 + + + +Low Speed +High Speed + + + + + + +None +Analog +MaxbotixI2C +LidarLite-I2C +PWM +BBB-PRU +LightWareI2C +LightWareSerial +Bebop +MAVLink +uLanding +LeddarOne +MaxbotixSerial +TeraRangerI2C +LidarLiteV3-I2C +VL53L0X or VL53L1X +NMEA +WASP-LRF +BenewakeTF02 +Benewake-Serial +LidarLightV3HP +PWM +BlueRoboticsPing +UAVCAN +BenewakeTFminiPlus-I2C +LanbaoPSK-CM8JL65-CC5 +BenewakeTF03 +VL53L1X-ShortRange +LeddarVu8-Serial +HC-SR04 +GYUS42v2 +MSP +USD1_CAN +SITL + + + + +Not Used +PX4-airspeed port +Pixhawk-airspeed port +Pixhawk AUXOUT1 +Pixhawk AUXOUT2 +Pixhawk AUXOUT3 +Pixhawk AUXOUT4 +Pixhawk AUXOUT5 +Pixhawk AUXOUT6 + + + +m/V +meters per volt +0.001 + + +V +volt +0.001 + + + +Linear +Inverted +Hyperbolic + + + +cm +centimeters +1 + + +cm +centimeters +1 + + + +Not Used +Pixhawk AUXOUT1 +Pixhawk AUXOUT2 +Pixhawk AUXOUT3 +Pixhawk AUXOUT4 +Pixhawk AUXOUT5 +Pixhawk AUXOUT6 +PX4 FMU Relay1 +PX4 FMU Relay2 +PX4IO Relay1 +PX4IO Relay2 +PX4IO ACC1 +PX4IO ACC2 + + + + +No +Yes + + + +m +meters +0 32767 + + +cm +centimeters +5 127 +1 + + +0 127 +1 + + +m +meters +-5 5 +0.01 + + +m +meters +-5 5 +0.01 + + +m +meters +-5 5 +0.01 + + + +Forward +Forward-Right +Right +Back-Right +Back +Back-Left +Left +Forward-Left +Up +Down + + + +0 255 + + +0 255 + + +0 10000 + + +0 255 + + +-1 255 + + + +Low Speed +High Speed + + + + + + +None +Analog +MaxbotixI2C +LidarLite-I2C +PWM +BBB-PRU +LightWareI2C +LightWareSerial +Bebop +MAVLink +uLanding +LeddarOne +MaxbotixSerial +TeraRangerI2C +LidarLiteV3-I2C +VL53L0X or VL53L1X +NMEA +WASP-LRF +BenewakeTF02 +Benewake-Serial +LidarLightV3HP +PWM +BlueRoboticsPing +UAVCAN +BenewakeTFminiPlus-I2C +LanbaoPSK-CM8JL65-CC5 +BenewakeTF03 +VL53L1X-ShortRange +LeddarVu8-Serial +HC-SR04 +GYUS42v2 +MSP +USD1_CAN +SITL + + + + +Not Used +PX4-airspeed port +Pixhawk-airspeed port +Pixhawk AUXOUT1 +Pixhawk AUXOUT2 +Pixhawk AUXOUT3 +Pixhawk AUXOUT4 +Pixhawk AUXOUT5 +Pixhawk AUXOUT6 + + + +m/V +meters per volt +0.001 + + +V +volt +0.001 + + + +Linear +Inverted +Hyperbolic + + + +cm +centimeters +1 + + +cm +centimeters +1 + + + +Not Used +Pixhawk AUXOUT1 +Pixhawk AUXOUT2 +Pixhawk AUXOUT3 +Pixhawk AUXOUT4 +Pixhawk AUXOUT5 +Pixhawk AUXOUT6 +PX4 FMU Relay1 +PX4 FMU Relay2 +PX4IO Relay1 +PX4IO Relay2 +PX4IO ACC1 +PX4IO ACC2 + + + + +No +Yes + + + +m +meters +0 32767 + + +cm +centimeters +5 127 +1 + + +0 127 +1 + + +m +meters +-5 5 +0.01 + + +m +meters +-5 5 +0.01 + + +m +meters +-5 5 +0.01 + + + +Forward +Forward-Right +Right +Back-Right +Back +Back-Left +Left +Forward-Left +Up +Down + + + +0 255 + + +0 255 + + +0 10000 + + +0 255 + + +-1 255 + + + +Low Speed +High Speed + + + + + + +None +Analog +MaxbotixI2C +LidarLite-I2C +PWM +BBB-PRU +LightWareI2C +LightWareSerial +Bebop +MAVLink +uLanding +LeddarOne +MaxbotixSerial +TeraRangerI2C +LidarLiteV3-I2C +VL53L0X or VL53L1X +NMEA +WASP-LRF +BenewakeTF02 +Benewake-Serial +LidarLightV3HP +PWM +BlueRoboticsPing +UAVCAN +BenewakeTFminiPlus-I2C +LanbaoPSK-CM8JL65-CC5 +BenewakeTF03 +VL53L1X-ShortRange +LeddarVu8-Serial +HC-SR04 +GYUS42v2 +MSP +USD1_CAN +SITL + + + + +Not Used +PX4-airspeed port +Pixhawk-airspeed port +Pixhawk AUXOUT1 +Pixhawk AUXOUT2 +Pixhawk AUXOUT3 +Pixhawk AUXOUT4 +Pixhawk AUXOUT5 +Pixhawk AUXOUT6 + + + +m/V +meters per volt +0.001 + + +V +volt +0.001 + + + +Linear +Inverted +Hyperbolic + + + +cm +centimeters +1 + + +cm +centimeters +1 + + + +Not Used +Pixhawk AUXOUT1 +Pixhawk AUXOUT2 +Pixhawk AUXOUT3 +Pixhawk AUXOUT4 +Pixhawk AUXOUT5 +Pixhawk AUXOUT6 +PX4 FMU Relay1 +PX4 FMU Relay2 +PX4IO Relay1 +PX4IO Relay2 +PX4IO ACC1 +PX4IO ACC2 + + + + +No +Yes + + + +m +meters +0 32767 + + +cm +centimeters +5 127 +1 + + +0 127 +1 + + +m +meters +-5 5 +0.01 + + +m +meters +-5 5 +0.01 + + +m +meters +-5 5 +0.01 + + + +Forward +Forward-Right +Right +Back-Right +Back +Back-Left +Left +Forward-Left +Up +Down + + + +0 255 + + +0 255 + + +0 10000 + + +0 255 + + +-1 255 + + + +Low Speed +High Speed + + + + + + +None +Analog +MaxbotixI2C +LidarLite-I2C +PWM +BBB-PRU +LightWareI2C +LightWareSerial +Bebop +MAVLink +uLanding +LeddarOne +MaxbotixSerial +TeraRangerI2C +LidarLiteV3-I2C +VL53L0X or VL53L1X +NMEA +WASP-LRF +BenewakeTF02 +Benewake-Serial +LidarLightV3HP +PWM +BlueRoboticsPing +UAVCAN +BenewakeTFminiPlus-I2C +LanbaoPSK-CM8JL65-CC5 +BenewakeTF03 +VL53L1X-ShortRange +LeddarVu8-Serial +HC-SR04 +GYUS42v2 +MSP +USD1_CAN +SITL + + + + +Not Used +PX4-airspeed port +Pixhawk-airspeed port +Pixhawk AUXOUT1 +Pixhawk AUXOUT2 +Pixhawk AUXOUT3 +Pixhawk AUXOUT4 +Pixhawk AUXOUT5 +Pixhawk AUXOUT6 + + + +m/V +meters per volt +0.001 + + +V +volt +0.001 + + + +Linear +Inverted +Hyperbolic + + + +cm +centimeters +1 + + +cm +centimeters +1 + + + +Not Used +Pixhawk AUXOUT1 +Pixhawk AUXOUT2 +Pixhawk AUXOUT3 +Pixhawk AUXOUT4 +Pixhawk AUXOUT5 +Pixhawk AUXOUT6 +PX4 FMU Relay1 +PX4 FMU Relay2 +PX4IO Relay1 +PX4IO Relay2 +PX4IO ACC1 +PX4IO ACC2 + + + + +No +Yes + + + +m +meters +0 32767 + + +cm +centimeters +5 127 +1 + + +0 127 +1 + + +m +meters +-5 5 +0.01 + + +m +meters +-5 5 +0.01 + + +m +meters +-5 5 +0.01 + + + +Forward +Forward-Right +Right +Back-Right +Back +Back-Left +Left +Forward-Left +Up +Down + + + +0 255 + + +0 255 + + +0 10000 + + +0 255 + + +-1 255 + + + +Low Speed +High Speed + + + + + + +None +Analog +MaxbotixI2C +LidarLite-I2C +PWM +BBB-PRU +LightWareI2C +LightWareSerial +Bebop +MAVLink +uLanding +LeddarOne +MaxbotixSerial +TeraRangerI2C +LidarLiteV3-I2C +VL53L0X or VL53L1X +NMEA +WASP-LRF +BenewakeTF02 +Benewake-Serial +LidarLightV3HP +PWM +BlueRoboticsPing +UAVCAN +BenewakeTFminiPlus-I2C +LanbaoPSK-CM8JL65-CC5 +BenewakeTF03 +VL53L1X-ShortRange +LeddarVu8-Serial +HC-SR04 +GYUS42v2 +MSP +USD1_CAN +SITL + + + + +Not Used +PX4-airspeed port +Pixhawk-airspeed port +Pixhawk AUXOUT1 +Pixhawk AUXOUT2 +Pixhawk AUXOUT3 +Pixhawk AUXOUT4 +Pixhawk AUXOUT5 +Pixhawk AUXOUT6 + + + +m/V +meters per volt +0.001 + + +V +volt +0.001 + + + +Linear +Inverted +Hyperbolic + + + +cm +centimeters +1 + + +cm +centimeters +1 + + + +Not Used +Pixhawk AUXOUT1 +Pixhawk AUXOUT2 +Pixhawk AUXOUT3 +Pixhawk AUXOUT4 +Pixhawk AUXOUT5 +Pixhawk AUXOUT6 +PX4 FMU Relay1 +PX4 FMU Relay2 +PX4IO Relay1 +PX4IO Relay2 +PX4IO ACC1 +PX4IO ACC2 + + + + +No +Yes + + + +m +meters +0 32767 + + +cm +centimeters +5 127 +1 + + +0 127 +1 + + +m +meters +-5 5 +0.01 + + +m +meters +-5 5 +0.01 + + +m +meters +-5 5 +0.01 + + + +Forward +Forward-Right +Right +Back-Right +Back +Back-Left +Left +Forward-Left +Up +Down + + + +0 255 + + +0 255 + + +0 10000 + + +0 255 + + +-1 255 + + + +Low Speed +High Speed + + + + + + +None +Analog +MaxbotixI2C +LidarLite-I2C +PWM +BBB-PRU +LightWareI2C +LightWareSerial +Bebop +MAVLink +uLanding +LeddarOne +MaxbotixSerial +TeraRangerI2C +LidarLiteV3-I2C +VL53L0X or VL53L1X +NMEA +WASP-LRF +BenewakeTF02 +Benewake-Serial +LidarLightV3HP +PWM +BlueRoboticsPing +UAVCAN +BenewakeTFminiPlus-I2C +LanbaoPSK-CM8JL65-CC5 +BenewakeTF03 +VL53L1X-ShortRange +LeddarVu8-Serial +HC-SR04 +GYUS42v2 +MSP +USD1_CAN +SITL + + + + +Not Used +PX4-airspeed port +Pixhawk-airspeed port +Pixhawk AUXOUT1 +Pixhawk AUXOUT2 +Pixhawk AUXOUT3 +Pixhawk AUXOUT4 +Pixhawk AUXOUT5 +Pixhawk AUXOUT6 + + + +m/V +meters per volt +0.001 + + +V +volt +0.001 + + + +Linear +Inverted +Hyperbolic + + + +cm +centimeters +1 + + +cm +centimeters +1 + + + +Not Used +Pixhawk AUXOUT1 +Pixhawk AUXOUT2 +Pixhawk AUXOUT3 +Pixhawk AUXOUT4 +Pixhawk AUXOUT5 +Pixhawk AUXOUT6 +PX4 FMU Relay1 +PX4 FMU Relay2 +PX4IO Relay1 +PX4IO Relay2 +PX4IO ACC1 +PX4IO ACC2 + + + + +No +Yes + + + +m +meters +0 32767 + + +cm +centimeters +5 127 +1 + + +0 127 +1 + + +m +meters +-5 5 +0.01 + + +m +meters +-5 5 +0.01 + + +m +meters +-5 5 +0.01 + + + +Forward +Forward-Right +Right +Back-Right +Back +Back-Left +Left +Forward-Left +Up +Down + + + +0 255 + + +0 255 + + +0 10000 + + +0 255 + + +-1 255 + + + +Low Speed +High Speed + + + + + + +None +Analog +MaxbotixI2C +LidarLite-I2C +PWM +BBB-PRU +LightWareI2C +LightWareSerial +Bebop +MAVLink +uLanding +LeddarOne +MaxbotixSerial +TeraRangerI2C +LidarLiteV3-I2C +VL53L0X or VL53L1X +NMEA +WASP-LRF +BenewakeTF02 +Benewake-Serial +LidarLightV3HP +PWM +BlueRoboticsPing +UAVCAN +BenewakeTFminiPlus-I2C +LanbaoPSK-CM8JL65-CC5 +BenewakeTF03 +VL53L1X-ShortRange +LeddarVu8-Serial +HC-SR04 +GYUS42v2 +MSP +USD1_CAN +SITL + + + + +Not Used +PX4-airspeed port +Pixhawk-airspeed port +Pixhawk AUXOUT1 +Pixhawk AUXOUT2 +Pixhawk AUXOUT3 +Pixhawk AUXOUT4 +Pixhawk AUXOUT5 +Pixhawk AUXOUT6 + + + +m/V +meters per volt +0.001 + + +V +volt +0.001 + + + +Linear +Inverted +Hyperbolic + + + +cm +centimeters +1 + + +cm +centimeters +1 + + + +Not Used +Pixhawk AUXOUT1 +Pixhawk AUXOUT2 +Pixhawk AUXOUT3 +Pixhawk AUXOUT4 +Pixhawk AUXOUT5 +Pixhawk AUXOUT6 +PX4 FMU Relay1 +PX4 FMU Relay2 +PX4IO Relay1 +PX4IO Relay2 +PX4IO ACC1 +PX4IO ACC2 + + + + +No +Yes + + + +m +meters +0 32767 + + +cm +centimeters +5 127 +1 + + +0 127 +1 + + +m +meters +-5 5 +0.01 + + +m +meters +-5 5 +0.01 + + +m +meters +-5 5 +0.01 + + + +Forward +Forward-Right +Right +Back-Right +Back +Back-Left +Left +Forward-Left +Up +Down + + + +0 255 + + +0 255 + + +0 10000 + + +0 255 + + +-1 255 + + + +Low Speed +High Speed + + + + + + +None +PWM +AUXPIN +EFI +Harmonic Notch + + + +0.001 + + +1 + + +1 + + +0.1 + + + +Disabled +PixhawkAUX1 +PixhawkAUX2 +PixhawkAUX3 +PixhawkAUX4 +PixhawkAUX5 +PixhawkAUX6 + + + + +None +PWM +AUXPIN +EFI +Harmonic Notch + + + +0.001 + + + +Disabled +PixhawkAUX1 +PixhawkAUX2 +PixhawkAUX3 +PixhawkAUX4 +PixhawkAUX5 +PixhawkAUX6 + + + + + + +Disabled +ShowSlips +ShowOverruns + + + + +50Hz +100Hz +200Hz +250Hz +300Hz +400Hz + +True + + +0:Enable per-task perf info + + + + + +None +Lua Scripts + +True + + +1000 1000000 +10000 + + +1024 1048576 +1024 +True + + + + + + + + + + + + +0:ROMFS, 1:APM/scripts +True + + + + + +1200 +2400 +4800 +9600 +19200 +38400 +57600 +111100 +115200 +230400 +256000 +460800 +500000 +921600 +1500000 + + + + +MAVlink1 +MAVLink2 + +True + + + +None +MAVLink1 +MAVLink2 +Frsky D +Frsky SPort +GPS +Alexmos Gimbal Serial +SToRM32 Gimbal Serial +Rangefinder +FrSky SPort Passthrough (OpenTX) +Lidar360 +Beacon +Volz servo out +SBus servo out +ESC Telemetry +Devo Telemetry +OpticalFlow +RobotisServo +NMEA Output +WindVane +SLCAN +RCIN +MegaSquirt EFI +LTM +RunCam +HottTelem +Scripting +Crossfire +Generator +Winch +MSP +DJI FPV +AirSpeed +ADSB +AHRS +SmartAudio +FETtecOneWire + +True + + + +1200 +2400 +4800 +9600 +19200 +38400 +57600 +111100 +115200 +230400 +256000 +460800 +500000 +921600 +1500000 + + + + +None +MAVLink1 +MAVLink2 +Frsky D +Frsky SPort +GPS +Alexmos Gimbal Serial +SToRM32 Gimbal Serial +Rangefinder +FrSky SPort Passthrough (OpenTX) +Lidar360 +Beacon +Volz servo out +SBus servo out +ESC Telemetry +Devo Telemetry +OpticalFlow +RobotisServo +NMEA Output +WindVane +SLCAN +RCIN +MegaSquirt EFI +LTM +RunCam +HottTelem +Scripting +Crossfire +Generator +Winch +MSP +DJI FPV +AirSpeed +ADSB +AHRS +SmartAudio +FETtecOneWire + +True + + + +1200 +2400 +4800 +9600 +19200 +38400 +57600 +111100 +115200 +230400 +256000 +460800 +500000 +921600 +1500000 + + + + +None +MAVLink1 +MAVLink2 +Frsky D +Frsky SPort +GPS +Alexmos Gimbal Serial +SToRM32 Gimbal Serial +Rangefinder +FrSky SPort Passthrough (OpenTX) +Lidar360 +Beacon +Volz servo out +SBus servo out +ESC Telemetry +Devo Telemetry +OpticalFlow +RobotisServo +NMEA Output +WindVane +SLCAN +RCIN +MegaSquirt EFI +LTM +RunCam +HottTelem +Scripting +Crossfire +Generator +Winch +MSP +DJI FPV +AirSpeed +ADSB +AHRS +SmartAudio +FETtecOneWire + +True + + + +1200 +2400 +4800 +9600 +19200 +38400 +57600 +111100 +115200 +230400 +256000 +460800 +500000 +921600 +1500000 + + + + +None +MAVLink1 +MAVLink2 +Frsky D +Frsky SPort +GPS +Alexmos Gimbal Serial +SToRM32 Gimbal Serial +Rangefinder +FrSky SPort Passthrough (OpenTX) +Lidar360 +Beacon +Volz servo out +SBus servo out +ESC Telemetry +Devo Telemetry +OpticalFlow +RobotisServo +NMEA Output +WindVane +SLCAN +RCIN +MegaSquirt EFI +LTM +RunCam +HottTelem +Scripting +Crossfire +Generator +Winch +MSP +DJI FPV +AirSpeed +ADSB +AHRS +SmartAudio +FETtecOneWire + +True + + + +1200 +2400 +4800 +9600 +19200 +38400 +57600 +111100 +115200 +230400 +256000 +460800 +500000 +921600 +1500000 + + + + +None +MAVLink1 +MAVLink2 +Frsky D +Frsky SPort +GPS +Alexmos Gimbal Serial +SToRM32 Gimbal Serial +Rangefinder +FrSky SPort Passthrough (OpenTX) +Lidar360 +Beacon +Volz servo out +SBus servo out +ESC Telemetry +Devo Telemetry +OpticalFlow +RobotisServo +NMEA Output +WindVane +SLCAN +RCIN +MegaSquirt EFI +LTM +RunCam +HottTelem +Scripting +Crossfire +Generator +Winch +MSP +DJI FPV +AirSpeed +ADSB +AHRS +SmartAudio +FETtecOneWire + +True + + + +1200 +2400 +4800 +9600 +19200 +38400 +57600 +111100 +115200 +230400 +256000 +460800 +500000 +921600 +1500000 + + + + +None +MAVLink1 +MAVLink2 +Frsky D +Frsky SPort +GPS +Alexmos Gimbal Serial +SToRM32 Gimbal Serial +Rangefinder +FrSky SPort Passthrough (OpenTX) +Lidar360 +Beacon +Volz servo out +SBus servo out +ESC Telemetry +Devo Telemetry +OpticalFlow +RobotisServo +NMEA Output +WindVane +SLCAN +RCIN +MegaSquirt EFI +LTM +RunCam +HottTelem +Scripting +Crossfire +Generator +Winch +MSP +DJI FPV +AirSpeed +ADSB +AHRS +SmartAudio +FETtecOneWire + +True + + + +1200 +2400 +4800 +9600 +19200 +38400 +57600 +111100 +115200 +230400 +256000 +460800 +500000 +921600 +1500000 + + + +0:InvertRX, 1:InvertTX, 2:HalfDuplex, 3:Swap, 4: RX_PullDown, 5: RX_PullUp, 6: TX_PullDown, 7: TX_PullUp, 8: RX_NoDMA, 9: TX_NoDMA, 10: Don't forward mavlink to/from, 11: DisableFIFO +True + + +0:InvertRX, 1:InvertTX, 2:HalfDuplex, 3:Swap, 4: RX_PullDown, 5: RX_PullUp, 6: TX_PullDown, 7: TX_PullUp, 8: RX_NoDMA, 9: TX_NoDMA, 10: Don't forward mavlink to/from, 11: DisableFIFO +True + + +0:InvertRX, 1:InvertTX, 2:HalfDuplex, 3:Swap, 4: RX_PullDown, 5: RX_PullUp, 6: TX_PullDown, 7: TX_PullUp, 8: RX_NoDMA, 9: TX_NoDMA, 10: Don't forward mavlink to/from, 11: DisableFIFO +True + + +0:InvertRX, 1:InvertTX, 2:HalfDuplex, 3:Swap, 4: RX_PullDown, 5: RX_PullUp, 6: TX_PullDown, 7: TX_PullUp, 8: RX_NoDMA, 9: TX_NoDMA, 10: Don't forward mavlink to/from, 11: DisableFIFO +True + + +0:InvertRX, 1:InvertTX, 2:HalfDuplex, 3:Swap, 4: RX_PullDown, 5: RX_PullUp, 6: TX_PullDown, 7: TX_PullUp, 8: RX_NoDMA, 9: TX_NoDMA, 10: Don't forward mavlink to/from, 11: DisableFIFO +True + + +0:InvertRX, 1:InvertTX, 2:HalfDuplex, 3:Swap, 4: RX_PullDown, 5: RX_PullUp, 6: TX_PullDown, 7: TX_PullUp, 8: RX_NoDMA, 9: TX_NoDMA, 10: Don't forward mavlink to/from, 11: DisableFIFO +True + + + +Disabled +Serial0 +Serial1 +Serial2 +Serial3 +Serial4 +Serial5 +Serial6 + + + + +Disabled +Serial0 +Serial1 +Serial2 +Serial3 +Serial4 +Serial5 +Serial6 + + + +0 120 +s +seconds + + + +None +MAVLink1 +MAVLink2 +Frsky D +Frsky SPort +GPS +Alexmos Gimbal Serial +SToRM32 Gimbal Serial +Rangefinder +FrSky SPort Passthrough (OpenTX) +Lidar360 +Beacon +Volz servo out +SBus servo out +ESC Telemetry +Devo Telemetry +OpticalFlow +RobotisServo +NMEA Output +WindVane +SLCAN +RCIN +MegaSquirt EFI +LTM +RunCam +HottTelem +Scripting +Crossfire +Generator +Winch +MSP +DJI FPV +AirSpeed +ADSB +AHRS +SmartAudio +FETtecOneWire + +True + + + +1200 +2400 +4800 +9600 +19200 +38400 +57600 +111100 +115200 +230400 +256000 +460800 +500000 +921600 +1500000 + + + +0:InvertRX, 1:InvertTX, 2:HalfDuplex, 3:Swap, 4: RX_PullDown, 5: RX_PullUp, 6: TX_PullDown, 7: TX_PullUp, 8: RX_NoDMA, 9: TX_NoDMA, 10: Don't forward mavlink to/from, 11: DisableFIFO +True + + + +None +MAVLink1 +MAVLink2 +Frsky D +Frsky SPort +GPS +Alexmos Gimbal Serial +SToRM32 Gimbal Serial +Rangefinder +FrSky SPort Passthrough (OpenTX) +Lidar360 +Beacon +Volz servo out +SBus servo out +ESC Telemetry +Devo Telemetry +OpticalFlow +RobotisServo +NMEA Output +WindVane +SLCAN +RCIN +MegaSquirt EFI +LTM +RunCam +HottTelem +Scripting +Crossfire +Generator +Winch +MSP +DJI FPV +AirSpeed +ADSB +AHRS +SmartAudio +FETtecOneWire + +True + + + +1200 +2400 +4800 +9600 +19200 +38400 +57600 +111100 +115200 +230400 +256000 +460800 +500000 +921600 +1500000 + + + +0:InvertRX, 1:InvertTX, 2:HalfDuplex, 3:Swap, 4: RX_PullDown, 5: RX_PullUp, 6: TX_PullDown, 7: TX_PullUp, 8: RX_NoDMA, 9: TX_NoDMA, 10: Don't forward mavlink to/from, 11: DisableFIFO +True + + + + +25 400 +Hz +hertz + + + +1Khz +loop-rate +double loop-rate +triple loop-rate +quadruple loop rate + + + + +None +BLHeli32/BLHeli_S/Kiss + + + + + +PWM +PWM in microseconds +500 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + + +Normal +Reversed + + + + +Disabled +RCPassThru +Flap +FlapAuto +Aileron +MountPan +MountTilt +MountRoll +MountOpen +CameraTrigger +Mount2Pan +Mount2Tilt +Mount2Roll +Mount2Open +DifferentialSpoilerLeft1 +DifferentialSpoilerRight1 +Elevator +Rudder +SprayerPump +SprayerSpinner +FlaperonLeft +FlaperonRight +GroundSteering +Parachute +Gripper +LandingGear +EngineRunEnable +HeliRSC +HeliTailRSC +Motor1 +Motor2 +Motor3 +Motor4 +Motor5 +Motor6 +Motor7 +Motor8 +TiltMotorsFront +TiltMotorsRear +TiltMotorRearLeft +TiltMotorRearRight +RCIN1 +RCIN2 +RCIN3 +RCIN4 +RCIN5 +RCIN6 +RCIN7 +RCIN8 +RCIN9 +RCIN10 +RCIN11 +RCIN12 +RCIN13 +RCIN14 +RCIN15 +RCIN16 +Ignition +Starter +Throttle +TrackerYaw +TrackerPitch +ThrottleLeft +ThrottleRight +TiltMotorFrontLeft +TiltMotorFrontRight +ElevonLeft +ElevonRight +VTailLeft +VTailRight +BoostThrottle +Motor9 +Motor10 +Motor11 +Motor12 +DifferentialSpoilerLeft2 +DifferentialSpoilerRight2 +Winch +Main Sail +CameraISO +CameraAperture +CameraFocus +CameraShutterSpeed +Script1 +Script2 +Script3 +Script4 +Script5 +Script6 +Script7 +Script8 +Script9 +Script10 +Script11 +Script12 +Script13 +Script14 +Script15 +Script16 +NeoPixel1 +NeoPixel2 +NeoPixel3 +NeoPixel4 +RateRoll +RatePitch +RateThrust +RateYaw +WingSailElevator +ProfiLED1 +ProfiLED2 +ProfiLED3 +ProfiLEDClock +Winch Clutch +SERVOn_MIN +SERVOn_TRIM +SERVOn_MAX +SailMastRotation + + + + + +PWM +PWM in microseconds +500 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + + +Normal +Reversed + + + + +Disabled +RCPassThru +Flap +FlapAuto +Aileron +MountPan +MountTilt +MountRoll +MountOpen +CameraTrigger +Mount2Pan +Mount2Tilt +Mount2Roll +Mount2Open +DifferentialSpoilerLeft1 +DifferentialSpoilerRight1 +Elevator +Rudder +SprayerPump +SprayerSpinner +FlaperonLeft +FlaperonRight +GroundSteering +Parachute +Gripper +LandingGear +EngineRunEnable +HeliRSC +HeliTailRSC +Motor1 +Motor2 +Motor3 +Motor4 +Motor5 +Motor6 +Motor7 +Motor8 +TiltMotorsFront +TiltMotorsRear +TiltMotorRearLeft +TiltMotorRearRight +RCIN1 +RCIN2 +RCIN3 +RCIN4 +RCIN5 +RCIN6 +RCIN7 +RCIN8 +RCIN9 +RCIN10 +RCIN11 +RCIN12 +RCIN13 +RCIN14 +RCIN15 +RCIN16 +Ignition +Starter +Throttle +TrackerYaw +TrackerPitch +ThrottleLeft +ThrottleRight +TiltMotorFrontLeft +TiltMotorFrontRight +ElevonLeft +ElevonRight +VTailLeft +VTailRight +BoostThrottle +Motor9 +Motor10 +Motor11 +Motor12 +DifferentialSpoilerLeft2 +DifferentialSpoilerRight2 +Winch +Main Sail +CameraISO +CameraAperture +CameraFocus +CameraShutterSpeed +Script1 +Script2 +Script3 +Script4 +Script5 +Script6 +Script7 +Script8 +Script9 +Script10 +Script11 +Script12 +Script13 +Script14 +Script15 +Script16 +NeoPixel1 +NeoPixel2 +NeoPixel3 +NeoPixel4 +RateRoll +RatePitch +RateThrust +RateYaw +WingSailElevator +ProfiLED1 +ProfiLED2 +ProfiLED3 +ProfiLEDClock +Winch Clutch +SERVOn_MIN +SERVOn_TRIM +SERVOn_MAX +SailMastRotation + + + + + +PWM +PWM in microseconds +500 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + + +Normal +Reversed + + + + +Disabled +RCPassThru +Flap +FlapAuto +Aileron +MountPan +MountTilt +MountRoll +MountOpen +CameraTrigger +Mount2Pan +Mount2Tilt +Mount2Roll +Mount2Open +DifferentialSpoilerLeft1 +DifferentialSpoilerRight1 +Elevator +Rudder +SprayerPump +SprayerSpinner +FlaperonLeft +FlaperonRight +GroundSteering +Parachute +Gripper +LandingGear +EngineRunEnable +HeliRSC +HeliTailRSC +Motor1 +Motor2 +Motor3 +Motor4 +Motor5 +Motor6 +Motor7 +Motor8 +TiltMotorsFront +TiltMotorsRear +TiltMotorRearLeft +TiltMotorRearRight +RCIN1 +RCIN2 +RCIN3 +RCIN4 +RCIN5 +RCIN6 +RCIN7 +RCIN8 +RCIN9 +RCIN10 +RCIN11 +RCIN12 +RCIN13 +RCIN14 +RCIN15 +RCIN16 +Ignition +Starter +Throttle +TrackerYaw +TrackerPitch +ThrottleLeft +ThrottleRight +TiltMotorFrontLeft +TiltMotorFrontRight +ElevonLeft +ElevonRight +VTailLeft +VTailRight +BoostThrottle +Motor9 +Motor10 +Motor11 +Motor12 +DifferentialSpoilerLeft2 +DifferentialSpoilerRight2 +Winch +Main Sail +CameraISO +CameraAperture +CameraFocus +CameraShutterSpeed +Script1 +Script2 +Script3 +Script4 +Script5 +Script6 +Script7 +Script8 +Script9 +Script10 +Script11 +Script12 +Script13 +Script14 +Script15 +Script16 +NeoPixel1 +NeoPixel2 +NeoPixel3 +NeoPixel4 +RateRoll +RatePitch +RateThrust +RateYaw +WingSailElevator +ProfiLED1 +ProfiLED2 +ProfiLED3 +ProfiLEDClock +Winch Clutch +SERVOn_MIN +SERVOn_TRIM +SERVOn_MAX +SailMastRotation + + + + + +PWM +PWM in microseconds +500 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + + +Normal +Reversed + + + + +Disabled +RCPassThru +Flap +FlapAuto +Aileron +MountPan +MountTilt +MountRoll +MountOpen +CameraTrigger +Mount2Pan +Mount2Tilt +Mount2Roll +Mount2Open +DifferentialSpoilerLeft1 +DifferentialSpoilerRight1 +Elevator +Rudder +SprayerPump +SprayerSpinner +FlaperonLeft +FlaperonRight +GroundSteering +Parachute +Gripper +LandingGear +EngineRunEnable +HeliRSC +HeliTailRSC +Motor1 +Motor2 +Motor3 +Motor4 +Motor5 +Motor6 +Motor7 +Motor8 +TiltMotorsFront +TiltMotorsRear +TiltMotorRearLeft +TiltMotorRearRight +RCIN1 +RCIN2 +RCIN3 +RCIN4 +RCIN5 +RCIN6 +RCIN7 +RCIN8 +RCIN9 +RCIN10 +RCIN11 +RCIN12 +RCIN13 +RCIN14 +RCIN15 +RCIN16 +Ignition +Starter +Throttle +TrackerYaw +TrackerPitch +ThrottleLeft +ThrottleRight +TiltMotorFrontLeft +TiltMotorFrontRight +ElevonLeft +ElevonRight +VTailLeft +VTailRight +BoostThrottle +Motor9 +Motor10 +Motor11 +Motor12 +DifferentialSpoilerLeft2 +DifferentialSpoilerRight2 +Winch +Main Sail +CameraISO +CameraAperture +CameraFocus +CameraShutterSpeed +Script1 +Script2 +Script3 +Script4 +Script5 +Script6 +Script7 +Script8 +Script9 +Script10 +Script11 +Script12 +Script13 +Script14 +Script15 +Script16 +NeoPixel1 +NeoPixel2 +NeoPixel3 +NeoPixel4 +RateRoll +RatePitch +RateThrust +RateYaw +WingSailElevator +ProfiLED1 +ProfiLED2 +ProfiLED3 +ProfiLEDClock +Winch Clutch +SERVOn_MIN +SERVOn_TRIM +SERVOn_MAX +SailMastRotation + + + + + +PWM +PWM in microseconds +500 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + + +Normal +Reversed + + + + +Disabled +RCPassThru +Flap +FlapAuto +Aileron +MountPan +MountTilt +MountRoll +MountOpen +CameraTrigger +Mount2Pan +Mount2Tilt +Mount2Roll +Mount2Open +DifferentialSpoilerLeft1 +DifferentialSpoilerRight1 +Elevator +Rudder +SprayerPump +SprayerSpinner +FlaperonLeft +FlaperonRight +GroundSteering +Parachute +Gripper +LandingGear +EngineRunEnable +HeliRSC +HeliTailRSC +Motor1 +Motor2 +Motor3 +Motor4 +Motor5 +Motor6 +Motor7 +Motor8 +TiltMotorsFront +TiltMotorsRear +TiltMotorRearLeft +TiltMotorRearRight +RCIN1 +RCIN2 +RCIN3 +RCIN4 +RCIN5 +RCIN6 +RCIN7 +RCIN8 +RCIN9 +RCIN10 +RCIN11 +RCIN12 +RCIN13 +RCIN14 +RCIN15 +RCIN16 +Ignition +Starter +Throttle +TrackerYaw +TrackerPitch +ThrottleLeft +ThrottleRight +TiltMotorFrontLeft +TiltMotorFrontRight +ElevonLeft +ElevonRight +VTailLeft +VTailRight +BoostThrottle +Motor9 +Motor10 +Motor11 +Motor12 +DifferentialSpoilerLeft2 +DifferentialSpoilerRight2 +Winch +Main Sail +CameraISO +CameraAperture +CameraFocus +CameraShutterSpeed +Script1 +Script2 +Script3 +Script4 +Script5 +Script6 +Script7 +Script8 +Script9 +Script10 +Script11 +Script12 +Script13 +Script14 +Script15 +Script16 +NeoPixel1 +NeoPixel2 +NeoPixel3 +NeoPixel4 +RateRoll +RatePitch +RateThrust +RateYaw +WingSailElevator +ProfiLED1 +ProfiLED2 +ProfiLED3 +ProfiLEDClock +Winch Clutch +SERVOn_MIN +SERVOn_TRIM +SERVOn_MAX +SailMastRotation + + + + + +PWM +PWM in microseconds +500 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + + +Normal +Reversed + + + + +Disabled +RCPassThru +Flap +FlapAuto +Aileron +MountPan +MountTilt +MountRoll +MountOpen +CameraTrigger +Mount2Pan +Mount2Tilt +Mount2Roll +Mount2Open +DifferentialSpoilerLeft1 +DifferentialSpoilerRight1 +Elevator +Rudder +SprayerPump +SprayerSpinner +FlaperonLeft +FlaperonRight +GroundSteering +Parachute +Gripper +LandingGear +EngineRunEnable +HeliRSC +HeliTailRSC +Motor1 +Motor2 +Motor3 +Motor4 +Motor5 +Motor6 +Motor7 +Motor8 +TiltMotorsFront +TiltMotorsRear +TiltMotorRearLeft +TiltMotorRearRight +RCIN1 +RCIN2 +RCIN3 +RCIN4 +RCIN5 +RCIN6 +RCIN7 +RCIN8 +RCIN9 +RCIN10 +RCIN11 +RCIN12 +RCIN13 +RCIN14 +RCIN15 +RCIN16 +Ignition +Starter +Throttle +TrackerYaw +TrackerPitch +ThrottleLeft +ThrottleRight +TiltMotorFrontLeft +TiltMotorFrontRight +ElevonLeft +ElevonRight +VTailLeft +VTailRight +BoostThrottle +Motor9 +Motor10 +Motor11 +Motor12 +DifferentialSpoilerLeft2 +DifferentialSpoilerRight2 +Winch +Main Sail +CameraISO +CameraAperture +CameraFocus +CameraShutterSpeed +Script1 +Script2 +Script3 +Script4 +Script5 +Script6 +Script7 +Script8 +Script9 +Script10 +Script11 +Script12 +Script13 +Script14 +Script15 +Script16 +NeoPixel1 +NeoPixel2 +NeoPixel3 +NeoPixel4 +RateRoll +RatePitch +RateThrust +RateYaw +WingSailElevator +ProfiLED1 +ProfiLED2 +ProfiLED3 +ProfiLEDClock +Winch Clutch +SERVOn_MIN +SERVOn_TRIM +SERVOn_MAX +SailMastRotation + + + + + +PWM +PWM in microseconds +500 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + + +Normal +Reversed + + + + +Disabled +RCPassThru +Flap +FlapAuto +Aileron +MountPan +MountTilt +MountRoll +MountOpen +CameraTrigger +Mount2Pan +Mount2Tilt +Mount2Roll +Mount2Open +DifferentialSpoilerLeft1 +DifferentialSpoilerRight1 +Elevator +Rudder +SprayerPump +SprayerSpinner +FlaperonLeft +FlaperonRight +GroundSteering +Parachute +Gripper +LandingGear +EngineRunEnable +HeliRSC +HeliTailRSC +Motor1 +Motor2 +Motor3 +Motor4 +Motor5 +Motor6 +Motor7 +Motor8 +TiltMotorsFront +TiltMotorsRear +TiltMotorRearLeft +TiltMotorRearRight +RCIN1 +RCIN2 +RCIN3 +RCIN4 +RCIN5 +RCIN6 +RCIN7 +RCIN8 +RCIN9 +RCIN10 +RCIN11 +RCIN12 +RCIN13 +RCIN14 +RCIN15 +RCIN16 +Ignition +Starter +Throttle +TrackerYaw +TrackerPitch +ThrottleLeft +ThrottleRight +TiltMotorFrontLeft +TiltMotorFrontRight +ElevonLeft +ElevonRight +VTailLeft +VTailRight +BoostThrottle +Motor9 +Motor10 +Motor11 +Motor12 +DifferentialSpoilerLeft2 +DifferentialSpoilerRight2 +Winch +Main Sail +CameraISO +CameraAperture +CameraFocus +CameraShutterSpeed +Script1 +Script2 +Script3 +Script4 +Script5 +Script6 +Script7 +Script8 +Script9 +Script10 +Script11 +Script12 +Script13 +Script14 +Script15 +Script16 +NeoPixel1 +NeoPixel2 +NeoPixel3 +NeoPixel4 +RateRoll +RatePitch +RateThrust +RateYaw +WingSailElevator +ProfiLED1 +ProfiLED2 +ProfiLED3 +ProfiLEDClock +Winch Clutch +SERVOn_MIN +SERVOn_TRIM +SERVOn_MAX +SailMastRotation + + + + + +PWM +PWM in microseconds +500 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + + +Normal +Reversed + + + + +Disabled +RCPassThru +Flap +FlapAuto +Aileron +MountPan +MountTilt +MountRoll +MountOpen +CameraTrigger +Mount2Pan +Mount2Tilt +Mount2Roll +Mount2Open +DifferentialSpoilerLeft1 +DifferentialSpoilerRight1 +Elevator +Rudder +SprayerPump +SprayerSpinner +FlaperonLeft +FlaperonRight +GroundSteering +Parachute +Gripper +LandingGear +EngineRunEnable +HeliRSC +HeliTailRSC +Motor1 +Motor2 +Motor3 +Motor4 +Motor5 +Motor6 +Motor7 +Motor8 +TiltMotorsFront +TiltMotorsRear +TiltMotorRearLeft +TiltMotorRearRight +RCIN1 +RCIN2 +RCIN3 +RCIN4 +RCIN5 +RCIN6 +RCIN7 +RCIN8 +RCIN9 +RCIN10 +RCIN11 +RCIN12 +RCIN13 +RCIN14 +RCIN15 +RCIN16 +Ignition +Starter +Throttle +TrackerYaw +TrackerPitch +ThrottleLeft +ThrottleRight +TiltMotorFrontLeft +TiltMotorFrontRight +ElevonLeft +ElevonRight +VTailLeft +VTailRight +BoostThrottle +Motor9 +Motor10 +Motor11 +Motor12 +DifferentialSpoilerLeft2 +DifferentialSpoilerRight2 +Winch +Main Sail +CameraISO +CameraAperture +CameraFocus +CameraShutterSpeed +Script1 +Script2 +Script3 +Script4 +Script5 +Script6 +Script7 +Script8 +Script9 +Script10 +Script11 +Script12 +Script13 +Script14 +Script15 +Script16 +NeoPixel1 +NeoPixel2 +NeoPixel3 +NeoPixel4 +RateRoll +RatePitch +RateThrust +RateYaw +WingSailElevator +ProfiLED1 +ProfiLED2 +ProfiLED3 +ProfiLEDClock +Winch Clutch +SERVOn_MIN +SERVOn_TRIM +SERVOn_MAX +SailMastRotation + + + + + +PWM +PWM in microseconds +500 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + + +Normal +Reversed + + + + +Disabled +RCPassThru +Flap +FlapAuto +Aileron +MountPan +MountTilt +MountRoll +MountOpen +CameraTrigger +Mount2Pan +Mount2Tilt +Mount2Roll +Mount2Open +DifferentialSpoilerLeft1 +DifferentialSpoilerRight1 +Elevator +Rudder +SprayerPump +SprayerSpinner +FlaperonLeft +FlaperonRight +GroundSteering +Parachute +Gripper +LandingGear +EngineRunEnable +HeliRSC +HeliTailRSC +Motor1 +Motor2 +Motor3 +Motor4 +Motor5 +Motor6 +Motor7 +Motor8 +TiltMotorsFront +TiltMotorsRear +TiltMotorRearLeft +TiltMotorRearRight +RCIN1 +RCIN2 +RCIN3 +RCIN4 +RCIN5 +RCIN6 +RCIN7 +RCIN8 +RCIN9 +RCIN10 +RCIN11 +RCIN12 +RCIN13 +RCIN14 +RCIN15 +RCIN16 +Ignition +Starter +Throttle +TrackerYaw +TrackerPitch +ThrottleLeft +ThrottleRight +TiltMotorFrontLeft +TiltMotorFrontRight +ElevonLeft +ElevonRight +VTailLeft +VTailRight +BoostThrottle +Motor9 +Motor10 +Motor11 +Motor12 +DifferentialSpoilerLeft2 +DifferentialSpoilerRight2 +Winch +Main Sail +CameraISO +CameraAperture +CameraFocus +CameraShutterSpeed +Script1 +Script2 +Script3 +Script4 +Script5 +Script6 +Script7 +Script8 +Script9 +Script10 +Script11 +Script12 +Script13 +Script14 +Script15 +Script16 +NeoPixel1 +NeoPixel2 +NeoPixel3 +NeoPixel4 +RateRoll +RatePitch +RateThrust +RateYaw +WingSailElevator +ProfiLED1 +ProfiLED2 +ProfiLED3 +ProfiLEDClock +Winch Clutch +SERVOn_MIN +SERVOn_TRIM +SERVOn_MAX +SailMastRotation + + + + + +PWM +PWM in microseconds +500 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + + +Normal +Reversed + + + + +Disabled +RCPassThru +Flap +FlapAuto +Aileron +MountPan +MountTilt +MountRoll +MountOpen +CameraTrigger +Mount2Pan +Mount2Tilt +Mount2Roll +Mount2Open +DifferentialSpoilerLeft1 +DifferentialSpoilerRight1 +Elevator +Rudder +SprayerPump +SprayerSpinner +FlaperonLeft +FlaperonRight +GroundSteering +Parachute +Gripper +LandingGear +EngineRunEnable +HeliRSC +HeliTailRSC +Motor1 +Motor2 +Motor3 +Motor4 +Motor5 +Motor6 +Motor7 +Motor8 +TiltMotorsFront +TiltMotorsRear +TiltMotorRearLeft +TiltMotorRearRight +RCIN1 +RCIN2 +RCIN3 +RCIN4 +RCIN5 +RCIN6 +RCIN7 +RCIN8 +RCIN9 +RCIN10 +RCIN11 +RCIN12 +RCIN13 +RCIN14 +RCIN15 +RCIN16 +Ignition +Starter +Throttle +TrackerYaw +TrackerPitch +ThrottleLeft +ThrottleRight +TiltMotorFrontLeft +TiltMotorFrontRight +ElevonLeft +ElevonRight +VTailLeft +VTailRight +BoostThrottle +Motor9 +Motor10 +Motor11 +Motor12 +DifferentialSpoilerLeft2 +DifferentialSpoilerRight2 +Winch +Main Sail +CameraISO +CameraAperture +CameraFocus +CameraShutterSpeed +Script1 +Script2 +Script3 +Script4 +Script5 +Script6 +Script7 +Script8 +Script9 +Script10 +Script11 +Script12 +Script13 +Script14 +Script15 +Script16 +NeoPixel1 +NeoPixel2 +NeoPixel3 +NeoPixel4 +RateRoll +RatePitch +RateThrust +RateYaw +WingSailElevator +ProfiLED1 +ProfiLED2 +ProfiLED3 +ProfiLEDClock +Winch Clutch +SERVOn_MIN +SERVOn_TRIM +SERVOn_MAX +SailMastRotation + + + + + +PWM +PWM in microseconds +500 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + + +Normal +Reversed + + + + +Disabled +RCPassThru +Flap +FlapAuto +Aileron +MountPan +MountTilt +MountRoll +MountOpen +CameraTrigger +Mount2Pan +Mount2Tilt +Mount2Roll +Mount2Open +DifferentialSpoilerLeft1 +DifferentialSpoilerRight1 +Elevator +Rudder +SprayerPump +SprayerSpinner +FlaperonLeft +FlaperonRight +GroundSteering +Parachute +Gripper +LandingGear +EngineRunEnable +HeliRSC +HeliTailRSC +Motor1 +Motor2 +Motor3 +Motor4 +Motor5 +Motor6 +Motor7 +Motor8 +TiltMotorsFront +TiltMotorsRear +TiltMotorRearLeft +TiltMotorRearRight +RCIN1 +RCIN2 +RCIN3 +RCIN4 +RCIN5 +RCIN6 +RCIN7 +RCIN8 +RCIN9 +RCIN10 +RCIN11 +RCIN12 +RCIN13 +RCIN14 +RCIN15 +RCIN16 +Ignition +Starter +Throttle +TrackerYaw +TrackerPitch +ThrottleLeft +ThrottleRight +TiltMotorFrontLeft +TiltMotorFrontRight +ElevonLeft +ElevonRight +VTailLeft +VTailRight +BoostThrottle +Motor9 +Motor10 +Motor11 +Motor12 +DifferentialSpoilerLeft2 +DifferentialSpoilerRight2 +Winch +Main Sail +CameraISO +CameraAperture +CameraFocus +CameraShutterSpeed +Script1 +Script2 +Script3 +Script4 +Script5 +Script6 +Script7 +Script8 +Script9 +Script10 +Script11 +Script12 +Script13 +Script14 +Script15 +Script16 +NeoPixel1 +NeoPixel2 +NeoPixel3 +NeoPixel4 +RateRoll +RatePitch +RateThrust +RateYaw +WingSailElevator +ProfiLED1 +ProfiLED2 +ProfiLED3 +ProfiLEDClock +Winch Clutch +SERVOn_MIN +SERVOn_TRIM +SERVOn_MAX +SailMastRotation + + + + + +PWM +PWM in microseconds +500 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + + +Normal +Reversed + + + + +Disabled +RCPassThru +Flap +FlapAuto +Aileron +MountPan +MountTilt +MountRoll +MountOpen +CameraTrigger +Mount2Pan +Mount2Tilt +Mount2Roll +Mount2Open +DifferentialSpoilerLeft1 +DifferentialSpoilerRight1 +Elevator +Rudder +SprayerPump +SprayerSpinner +FlaperonLeft +FlaperonRight +GroundSteering +Parachute +Gripper +LandingGear +EngineRunEnable +HeliRSC +HeliTailRSC +Motor1 +Motor2 +Motor3 +Motor4 +Motor5 +Motor6 +Motor7 +Motor8 +TiltMotorsFront +TiltMotorsRear +TiltMotorRearLeft +TiltMotorRearRight +RCIN1 +RCIN2 +RCIN3 +RCIN4 +RCIN5 +RCIN6 +RCIN7 +RCIN8 +RCIN9 +RCIN10 +RCIN11 +RCIN12 +RCIN13 +RCIN14 +RCIN15 +RCIN16 +Ignition +Starter +Throttle +TrackerYaw +TrackerPitch +ThrottleLeft +ThrottleRight +TiltMotorFrontLeft +TiltMotorFrontRight +ElevonLeft +ElevonRight +VTailLeft +VTailRight +BoostThrottle +Motor9 +Motor10 +Motor11 +Motor12 +DifferentialSpoilerLeft2 +DifferentialSpoilerRight2 +Winch +Main Sail +CameraISO +CameraAperture +CameraFocus +CameraShutterSpeed +Script1 +Script2 +Script3 +Script4 +Script5 +Script6 +Script7 +Script8 +Script9 +Script10 +Script11 +Script12 +Script13 +Script14 +Script15 +Script16 +NeoPixel1 +NeoPixel2 +NeoPixel3 +NeoPixel4 +RateRoll +RatePitch +RateThrust +RateYaw +WingSailElevator +ProfiLED1 +ProfiLED2 +ProfiLED3 +ProfiLEDClock +Winch Clutch +SERVOn_MIN +SERVOn_TRIM +SERVOn_MAX +SailMastRotation + + + + + +PWM +PWM in microseconds +500 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + + +Normal +Reversed + + + + +Disabled +RCPassThru +Flap +FlapAuto +Aileron +MountPan +MountTilt +MountRoll +MountOpen +CameraTrigger +Mount2Pan +Mount2Tilt +Mount2Roll +Mount2Open +DifferentialSpoilerLeft1 +DifferentialSpoilerRight1 +Elevator +Rudder +SprayerPump +SprayerSpinner +FlaperonLeft +FlaperonRight +GroundSteering +Parachute +Gripper +LandingGear +EngineRunEnable +HeliRSC +HeliTailRSC +Motor1 +Motor2 +Motor3 +Motor4 +Motor5 +Motor6 +Motor7 +Motor8 +TiltMotorsFront +TiltMotorsRear +TiltMotorRearLeft +TiltMotorRearRight +RCIN1 +RCIN2 +RCIN3 +RCIN4 +RCIN5 +RCIN6 +RCIN7 +RCIN8 +RCIN9 +RCIN10 +RCIN11 +RCIN12 +RCIN13 +RCIN14 +RCIN15 +RCIN16 +Ignition +Starter +Throttle +TrackerYaw +TrackerPitch +ThrottleLeft +ThrottleRight +TiltMotorFrontLeft +TiltMotorFrontRight +ElevonLeft +ElevonRight +VTailLeft +VTailRight +BoostThrottle +Motor9 +Motor10 +Motor11 +Motor12 +DifferentialSpoilerLeft2 +DifferentialSpoilerRight2 +Winch +Main Sail +CameraISO +CameraAperture +CameraFocus +CameraShutterSpeed +Script1 +Script2 +Script3 +Script4 +Script5 +Script6 +Script7 +Script8 +Script9 +Script10 +Script11 +Script12 +Script13 +Script14 +Script15 +Script16 +NeoPixel1 +NeoPixel2 +NeoPixel3 +NeoPixel4 +RateRoll +RatePitch +RateThrust +RateYaw +WingSailElevator +ProfiLED1 +ProfiLED2 +ProfiLED3 +ProfiLEDClock +Winch Clutch +SERVOn_MIN +SERVOn_TRIM +SERVOn_MAX +SailMastRotation + + + + + +PWM +PWM in microseconds +500 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + + +Normal +Reversed + + + + +Disabled +RCPassThru +Flap +FlapAuto +Aileron +MountPan +MountTilt +MountRoll +MountOpen +CameraTrigger +Mount2Pan +Mount2Tilt +Mount2Roll +Mount2Open +DifferentialSpoilerLeft1 +DifferentialSpoilerRight1 +Elevator +Rudder +SprayerPump +SprayerSpinner +FlaperonLeft +FlaperonRight +GroundSteering +Parachute +Gripper +LandingGear +EngineRunEnable +HeliRSC +HeliTailRSC +Motor1 +Motor2 +Motor3 +Motor4 +Motor5 +Motor6 +Motor7 +Motor8 +TiltMotorsFront +TiltMotorsRear +TiltMotorRearLeft +TiltMotorRearRight +RCIN1 +RCIN2 +RCIN3 +RCIN4 +RCIN5 +RCIN6 +RCIN7 +RCIN8 +RCIN9 +RCIN10 +RCIN11 +RCIN12 +RCIN13 +RCIN14 +RCIN15 +RCIN16 +Ignition +Starter +Throttle +TrackerYaw +TrackerPitch +ThrottleLeft +ThrottleRight +TiltMotorFrontLeft +TiltMotorFrontRight +ElevonLeft +ElevonRight +VTailLeft +VTailRight +BoostThrottle +Motor9 +Motor10 +Motor11 +Motor12 +DifferentialSpoilerLeft2 +DifferentialSpoilerRight2 +Winch +Main Sail +CameraISO +CameraAperture +CameraFocus +CameraShutterSpeed +Script1 +Script2 +Script3 +Script4 +Script5 +Script6 +Script7 +Script8 +Script9 +Script10 +Script11 +Script12 +Script13 +Script14 +Script15 +Script16 +NeoPixel1 +NeoPixel2 +NeoPixel3 +NeoPixel4 +RateRoll +RatePitch +RateThrust +RateYaw +WingSailElevator +ProfiLED1 +ProfiLED2 +ProfiLED3 +ProfiLEDClock +Winch Clutch +SERVOn_MIN +SERVOn_TRIM +SERVOn_MAX +SailMastRotation + + + + + +PWM +PWM in microseconds +500 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + + +Normal +Reversed + + + + +Disabled +RCPassThru +Flap +FlapAuto +Aileron +MountPan +MountTilt +MountRoll +MountOpen +CameraTrigger +Mount2Pan +Mount2Tilt +Mount2Roll +Mount2Open +DifferentialSpoilerLeft1 +DifferentialSpoilerRight1 +Elevator +Rudder +SprayerPump +SprayerSpinner +FlaperonLeft +FlaperonRight +GroundSteering +Parachute +Gripper +LandingGear +EngineRunEnable +HeliRSC +HeliTailRSC +Motor1 +Motor2 +Motor3 +Motor4 +Motor5 +Motor6 +Motor7 +Motor8 +TiltMotorsFront +TiltMotorsRear +TiltMotorRearLeft +TiltMotorRearRight +RCIN1 +RCIN2 +RCIN3 +RCIN4 +RCIN5 +RCIN6 +RCIN7 +RCIN8 +RCIN9 +RCIN10 +RCIN11 +RCIN12 +RCIN13 +RCIN14 +RCIN15 +RCIN16 +Ignition +Starter +Throttle +TrackerYaw +TrackerPitch +ThrottleLeft +ThrottleRight +TiltMotorFrontLeft +TiltMotorFrontRight +ElevonLeft +ElevonRight +VTailLeft +VTailRight +BoostThrottle +Motor9 +Motor10 +Motor11 +Motor12 +DifferentialSpoilerLeft2 +DifferentialSpoilerRight2 +Winch +Main Sail +CameraISO +CameraAperture +CameraFocus +CameraShutterSpeed +Script1 +Script2 +Script3 +Script4 +Script5 +Script6 +Script7 +Script8 +Script9 +Script10 +Script11 +Script12 +Script13 +Script14 +Script15 +Script16 +NeoPixel1 +NeoPixel2 +NeoPixel3 +NeoPixel4 +RateRoll +RatePitch +RateThrust +RateYaw +WingSailElevator +ProfiLED1 +ProfiLED2 +ProfiLED3 +ProfiLEDClock +Winch Clutch +SERVOn_MIN +SERVOn_TRIM +SERVOn_MAX +SailMastRotation + + + + + +PWM +PWM in microseconds +500 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + +PWM +PWM in microseconds +800 2200 +1 + + + +Normal +Reversed + + + + +Disabled +RCPassThru +Flap +FlapAuto +Aileron +MountPan +MountTilt +MountRoll +MountOpen +CameraTrigger +Mount2Pan +Mount2Tilt +Mount2Roll +Mount2Open +DifferentialSpoilerLeft1 +DifferentialSpoilerRight1 +Elevator +Rudder +SprayerPump +SprayerSpinner +FlaperonLeft +FlaperonRight +GroundSteering +Parachute +Gripper +LandingGear +EngineRunEnable +HeliRSC +HeliTailRSC +Motor1 +Motor2 +Motor3 +Motor4 +Motor5 +Motor6 +Motor7 +Motor8 +TiltMotorsFront +TiltMotorsRear +TiltMotorRearLeft +TiltMotorRearRight +RCIN1 +RCIN2 +RCIN3 +RCIN4 +RCIN5 +RCIN6 +RCIN7 +RCIN8 +RCIN9 +RCIN10 +RCIN11 +RCIN12 +RCIN13 +RCIN14 +RCIN15 +RCIN16 +Ignition +Starter +Throttle +TrackerYaw +TrackerPitch +ThrottleLeft +ThrottleRight +TiltMotorFrontLeft +TiltMotorFrontRight +ElevonLeft +ElevonRight +VTailLeft +VTailRight +BoostThrottle +Motor9 +Motor10 +Motor11 +Motor12 +DifferentialSpoilerLeft2 +DifferentialSpoilerRight2 +Winch +Main Sail +CameraISO +CameraAperture +CameraFocus +CameraShutterSpeed +Script1 +Script2 +Script3 +Script4 +Script5 +Script6 +Script7 +Script8 +Script9 +Script10 +Script11 +Script12 +Script13 +Script14 +Script15 +Script16 +NeoPixel1 +NeoPixel2 +NeoPixel3 +NeoPixel4 +RateRoll +RatePitch +RateThrust +RateYaw +WingSailElevator +ProfiLED1 +ProfiLED2 +ProfiLED3 +ProfiLEDClock +Winch Clutch +SERVOn_MIN +SERVOn_TRIM +SERVOn_MAX +SailMastRotation + + + + + +0:Channel1,1:Channel2,2:Channel3,3:Channel4,4:Channel5,5:Channel6,6:Channel7,7:Channel8,8:Channel9,9:Channel10,10:Channel11,11:Channel12,12:Channel13,13:Channel14,14:Channel15,15:Channel16 + + + +Disabled +Enabled + + + + +Disabled +TestMotor1 +TestMotor2 +TestMotor3 +TestMotor4 +TestMotor5 +TestMotor6 +TestMotor7 +TestMotor8 + + + +s +seconds +0 300 + + +Hz +hertz +0 500 + + + +Disabled +Enabled + + + + +None +OneShot +OneShot125 +Brushed +DShot150 +DShot300 +DShot600 +DShot1200 + + + + +Console +Serial1 +Serial2 +Serial3 +Serial4 +Serial5 + + + +1 127 + + +0:Channel1,1:Channel2,2:Channel3,3:Channel4,4:Channel5,5:Channel6,6:Channel7,7:Channel8,8:Channel9,9:Channel10,10:Channel11,11:Channel12,12:Channel13,13:Channel14,14:Channel15,15:Channel16 + + +0:Channel1,1:Channel2,2:Channel3,3:Channel4,4:Channel5,5:Channel6,6:Channel7,7:Channel8,8:Channel9,9:Channel10,10:Channel11,11:Channel12,12:Channel13,13:Channel14,14:Channel15,15:Channel16 + + +0:Channel1,1:Channel2,2:Channel3,3:Channel4,4:Channel5,5:Channel6,6:Channel7,7:Channel8,8:Channel9,9:Channel10,10:Channel11,11:Channel12,12:Channel13,13:Channel14,14:Channel15,15:Channel16 + + + + +0:SERVO1,1:SERVO2,2:SERVO3,3:SERVO4,4:SERVO5,5:SERVO6,6:SERVO7,7:SERVO8,8:SERVO9,9:SERVO10,10:SERVO11,11:SERVO12 +True + + +0:SERVO1,1:SERVO2,2:SERVO3,3:SERVO4,4:SERVO5,5:SERVO6,6:SERVO7,7:SERVO8,8:SERVO9,9:SERVO10,10:SERVO11,11:SERVO12 + + +2 50 + + + + +0 4095 + + +0 4095 + + + + +25 250 +Hz +hertz + + + + +0:Channel1,1:Channel2,2:Channel3,3:Channel4,4:Channel5,5:Channel6,6:Channel7,7:Channel8,8:Channel9,9:Channel10,10:Channel11,11:Channel12,12:Channel13,13:Channel14,14:Channel15,15:Channel16 + + + + +Hz +hertz +0 50 +1 + + +Hz +hertz +0 50 +1 + + +Hz +hertz +0 50 +1 + + +Hz +hertz +0 50 +1 + + +Hz +hertz +0 50 +1 + + +Hz +hertz +0 50 +1 + + +Hz +hertz +0 50 +1 + + +Hz +hertz +0 50 +1 + + + + +Hz +hertz +0 50 +1 + + +Hz +hertz +0 50 +1 + + +Hz +hertz +0 50 +1 + + +Hz +hertz +0 50 +1 + + +Hz +hertz +0 50 +1 + + +Hz +hertz +0 50 +1 + + +Hz +hertz +0 50 +1 + + +Hz +hertz +0 50 +1 + + + + +Hz +hertz +0 50 +1 + + +Hz +hertz +0 50 +1 + + +Hz +hertz +0 50 +1 + + +Hz +hertz +0 50 +1 + + +Hz +hertz +0 50 +1 + + +Hz +hertz +0 50 +1 + + +Hz +hertz +0 50 +1 + + +Hz +hertz +0 50 +1 + + + + +Hz +hertz +0 50 +1 + + +Hz +hertz +0 50 +1 + + +Hz +hertz +0 50 +1 + + +Hz +hertz +0 50 +1 + + +Hz +hertz +0 50 +1 + + +Hz +hertz +0 50 +1 + + +Hz +hertz +0 50 +1 + + +Hz +hertz +0 50 +1 + + + + +Hz +hertz +0 50 +1 + + +Hz +hertz +0 50 +1 + + +Hz +hertz +0 50 +1 + + +Hz +hertz +0 50 +1 + + +Hz +hertz +0 50 +1 + + +Hz +hertz +0 50 +1 + + +Hz +hertz +0 50 +1 + + +Hz +hertz +0 50 +1 + + + + +Hz +hertz +0 50 +1 + + +Hz +hertz +0 50 +1 + + +Hz +hertz +0 50 +1 + + +Hz +hertz +0 50 +1 + + +Hz +hertz +0 50 +1 + + +Hz +hertz +0 50 +1 + + +Hz +hertz +0 50 +1 + + +Hz +hertz +0 50 +1 + + + + +Hz +hertz +0 50 +1 + + +Hz +hertz +0 50 +1 + + +Hz +hertz +0 50 +1 + + +Hz +hertz +0 50 +1 + + +Hz +hertz +0 50 +1 + + +Hz +hertz +0 50 +1 + + +Hz +hertz +0 50 +1 + + +Hz +hertz +0 50 +1 + + + + + +Disable +Enable + + + +m +meters +1 + + +0:Disable Download + + + + + +None +MAVLink +IntelT265 + +True + + +m +meters +-5 5 +0.01 + + +m +meters +-5 5 +0.01 + + +m +meters +-5 5 +0.01 + + + +Forward +Right +Back +Left +Up +Down + + + + + +ms +milliseconds +0 250 + + +m/s +meters per second +0.05 5.0 + + +m +meters +0.1 10.0 + + +rad +radians +0.05 1.0 + + + + + +Disable +Enable + + + +1 1000 + + +0 7 + + + +Band A +Band B +Band E +Airwave +RaceBand +Low RaceBand + + + +True +5000 6000 + + +0:Pitmode,1:Pitmode until armed,2:Pitmode when disarmed,3:Unlocked,4:Add leading zero byte to requests + + +25 1000 + + + + +cm/s +centimeters per second +20 2000 +50 + + +cm +centimeters +5 1000 +1 + + +cm/s +centimeters per second +10 1000 +50 + + +cm/s +centimeters per second +10 500 +10 + + +cm/s/s +centimeters per square second +50 500 +10 + + +cm/s/s +centimeters per square second +50 500 +10 + + + +Disable +Enable + + + +m/s/s/s +meters per cubic second +1 20 + + +m +meters +0.1 100 + + + + diff --git a/src/FirmwarePlugin/APM/APMParameterMetaData.cc b/src/FirmwarePlugin/APM/APMParameterMetaData.cc index 4ad0055..9bdfac2 100644 --- a/src/FirmwarePlugin/APM/APMParameterMetaData.cc +++ b/src/FirmwarePlugin/APM/APMParameterMetaData.cc @@ -85,12 +85,12 @@ QString APMParameterMetaData::mavTypeToString(MAV_TYPE vehicleTypeEnum) switch(vehicleTypeEnum) { case MAV_TYPE_FIXED_WING: - case MAV_TYPE_VTOL_TAILSITTER_DUOROTOR: - case MAV_TYPE_VTOL_TAILSITTER_QUADROTOR: + case MAV_TYPE_VTOL_DUOROTOR: + case MAV_TYPE_VTOL_QUADROTOR: case MAV_TYPE_VTOL_TILTROTOR: - case MAV_TYPE_VTOL_FIXEDROTOR: - case MAV_TYPE_VTOL_TAILSITTER: - case MAV_TYPE_VTOL_TILTWING: + case MAV_TYPE_VTOL_RESERVED2: + case MAV_TYPE_VTOL_RESERVED3: + case MAV_TYPE_VTOL_RESERVED4: case MAV_TYPE_VTOL_RESERVED5: vehicleName = "ArduPlane"; break; diff --git a/src/FirmwarePlugin/APM/APMResources.qrc b/src/FirmwarePlugin/APM/APMResources.qrc index 27a8ba5..0ec3896 100644 --- a/src/FirmwarePlugin/APM/APMResources.qrc +++ b/src/FirmwarePlugin/APM/APMResources.qrc @@ -29,7 +29,6 @@ ../../AutoPilotPlugins/APM/APMSensorsComponentSummary.qml ../../AutoPilotPlugins/APM/APMTuningComponentCopter.qml ../../AutoPilotPlugins/APM/APMTuningComponentSub.qml - ../../AutoPilotPlugins/APM/APMRemoteSupportComponent.qml APMSensorParams.qml APMSensorIdDecoder.qml QGroundControl.ArduPilot.qmldir @@ -44,29 +43,26 @@ ../../AutoPilotPlugins/APM/APMFollowComponent.FactMetaData.json - ArduPilot-Parameter-Repository/Plane-3.8/apm.pdef.xml - ArduPilot-Parameter-Repository/Plane-3.9/apm.pdef.xml - ArduPilot-Parameter-Repository/Plane-3.10/apm.pdef.xml - ArduPilot-Parameter-Repository/Plane-4.0/apm.pdef.xml - ArduPilot-Parameter-Repository/Plane-4.1/apm.pdef.xml - ArduPilot-Parameter-Repository/Plane-4.2/apm.pdef.xml - ArduPilot-Parameter-Repository/Copter-3.5/apm.pdef.xml - ArduPilot-Parameter-Repository/Copter-3.6/apm.pdef.xml - ArduPilot-Parameter-Repository/Copter-3.7/apm.pdef.xml - ArduPilot-Parameter-Repository/Copter-4.0/apm.pdef.xml - ArduPilot-Parameter-Repository/Copter-4.1/apm.pdef.xml - ArduPilot-Parameter-Repository/Copter-4.2/apm.pdef.xml - ArduPilot-Parameter-Repository/Rover-3.4/apm.pdef.xml - ArduPilot-Parameter-Repository/Rover-3.5/apm.pdef.xml - ArduPilot-Parameter-Repository/Rover-3.6/apm.pdef.xml - ArduPilot-Parameter-Repository/Rover-4.0/apm.pdef.xml - ArduPilot-Parameter-Repository/Rover-4.1/apm.pdef.xml - ArduPilot-Parameter-Repository/Rover-4.2/apm.pdef.xml - ArduPilot-Parameter-Repository/Sub-3.4/apm.pdef.xml - ArduPilot-Parameter-Repository/Sub-3.5/apm.pdef.xml - ArduPilot-Parameter-Repository/Sub-3.6/apm.pdef.xml - ArduPilot-Parameter-Repository/Sub-4.0/apm.pdef.xml - ArduPilot-Parameter-Repository/Sub-4.1/apm.pdef.xml + APMParameterFactMetaData.Plane.3.8.xml + APMParameterFactMetaData.Plane.3.9.xml + APMParameterFactMetaData.Plane.3.10.xml + APMParameterFactMetaData.Plane.4.0.xml + APMParameterFactMetaData.Plane.4.1.xml + APMParameterFactMetaData.Copter.3.5.xml + APMParameterFactMetaData.Copter.3.6.xml + APMParameterFactMetaData.Copter.3.7.xml + APMParameterFactMetaData.Copter.4.0.xml + APMParameterFactMetaData.Copter.4.1.xml + APMParameterFactMetaData.Rover.3.4.xml + APMParameterFactMetaData.Rover.3.5.xml + APMParameterFactMetaData.Rover.3.6.xml + APMParameterFactMetaData.Rover.4.0.xml + APMParameterFactMetaData.Rover.4.1.xml + APMParameterFactMetaData.Sub.3.4.xml + APMParameterFactMetaData.Sub.3.5.xml + APMParameterFactMetaData.Sub.3.6.xml + APMParameterFactMetaData.Sub.4.0.xml + APMParameterFactMetaData.Sub.4.1.xml Copter3.6.OfflineEditing.params Plane3.9.OfflineEditing.params Rover3.5.OfflineEditing.params diff --git a/src/FirmwarePlugin/APM/APMSensorParams.qml b/src/FirmwarePlugin/APM/APMSensorParams.qml index fb52e08..d3d6c91 100644 --- a/src/FirmwarePlugin/APM/APMSensorParams.qml +++ b/src/FirmwarePlugin/APM/APMSensorParams.qml @@ -100,7 +100,7 @@ Item { property bool ins2IdParamAvailable: factPanelController.parameterExists(-1, "INS_ACC2_ID") property bool ins3IdParamAvailable: factPanelController.parameterExists(-1, "INS_ACC3_ID") - property Fact ins1Id: ins1IdParamAvailable ? factPanelController.getParameterFact(-1, "INS_ACC_ID") : _noFact + property Fact ins1Id: insIdParamsAvailable ? factPanelController.getParameterFact(-1, "INS_ACC_ID") : _noFact property Fact ins2Id: ins2IdParamAvailable ? factPanelController.getParameterFact(-1, "INS_ACC2_ID") : _noFact property Fact ins3Id: ins3IdParamAvailable ? factPanelController.getParameterFact(-1, "INS_ACC3_ID") : _noFact property var rgInsId: [ ins1Id, ins2Id, ins3Id ] diff --git a/src/FirmwarePlugin/APM/ArduCopterFirmwarePlugin.cc b/src/FirmwarePlugin/APM/ArduCopterFirmwarePlugin.cc index d54e25a..0ae992b 100644 --- a/src/FirmwarePlugin/APM/ArduCopterFirmwarePlugin.cc +++ b/src/FirmwarePlugin/APM/ArduCopterFirmwarePlugin.cc @@ -43,12 +43,11 @@ APMCopterMode::APMCopterMode(uint32_t mode, bool settable) : { GUIDED_NOGPS, "Guided No GPS"}, { SMART_RTL, "Smart RTL"}, { FLOWHOLD, "Flow Hold" }, +#if 0 + // Follow me not ready for Stable { FOLLOW, "Follow" }, +#endif { ZIGZAG, "ZigZag" }, - { SYSTEMID, "SystemID" }, - { AUTOROTATE, "AutoRotate" }, - { AUTO_RTL, "AutoRTL" }, - { TURTLE, "Turtle" }, }); } @@ -75,12 +74,11 @@ ArduCopterFirmwarePlugin::ArduCopterFirmwarePlugin(void) APMCopterMode(APMCopterMode::GUIDED_NOGPS, true), APMCopterMode(APMCopterMode::SMART_RTL, true), APMCopterMode(APMCopterMode::FLOWHOLD, true), +#if 0 + // Follow me not ready for Stable APMCopterMode(APMCopterMode::FOLLOW, true), +#endif APMCopterMode(APMCopterMode::ZIGZAG, true), - APMCopterMode(APMCopterMode::SYSTEMID, true), - APMCopterMode(APMCopterMode::AUTOROTATE, true), - APMCopterMode(APMCopterMode::AUTO_RTL, true), - APMCopterMode(APMCopterMode::TURTLE, true), }); if (!_remapParamNameIntialized) { @@ -136,7 +134,10 @@ bool ArduCopterFirmwarePlugin::multiRotorXConfig(Vehicle* vehicle) return vehicle->parameterManager()->getParameter(FactSystem::defaultComponentId, "FRAME")->rawValue().toInt() != 0; } +#if 0 + // Follow me not ready for Stable void ArduCopterFirmwarePlugin::sendGCSMotionReport(Vehicle* vehicle, FollowMe::GCSMotionReport& motionReport, uint8_t estimatationCapabilities) { _sendGCSMotionReport(vehicle, motionReport, estimatationCapabilities); } +#endif diff --git a/src/FirmwarePlugin/APM/ArduCopterFirmwarePlugin.h b/src/FirmwarePlugin/APM/ArduCopterFirmwarePlugin.h index f45693e..0294872 100644 --- a/src/FirmwarePlugin/APM/ArduCopterFirmwarePlugin.h +++ b/src/FirmwarePlugin/APM/ArduCopterFirmwarePlugin.h @@ -43,12 +43,11 @@ public: GUIDED_NOGPS= 20, SMART_RTL = 21, // SMART_RTL returns to home by retracing its steps FLOWHOLD = 22, // FLOWHOLD holds position with optical flow without rangefinder +#if 0 + // Follow me not ready for Stable FOLLOW = 23, // follow attempts to follow another vehicle or ground station +#endif ZIGZAG = 24, // ZIGZAG mode is able to fly in a zigzag manner with predefined point A and point B - SYSTEMID = 25, - AUTOROTATE = 26, - AUTO_RTL = 27, - TURTLE = 28, }; APMCopterMode(uint32_t mode, bool settable); @@ -74,7 +73,10 @@ public: QString followFlightMode (void) const override { return QStringLiteral("Follow"); } QString autoDisarmParameter (Vehicle* vehicle) override { Q_UNUSED(vehicle); return QStringLiteral("DISARM_DELAY"); } bool supportsSmartRTL (void) const override { return true; } +#if 0 + // Follow me not ready for Stable void sendGCSMotionReport (Vehicle* vehicle, FollowMe::GCSMotionReport& motionReport, uint8_t estimatationCapabilities) override; +#endif private: static bool _remapParamNameIntialized; diff --git a/src/FirmwarePlugin/APM/ArduRoverFirmwarePlugin.cc b/src/FirmwarePlugin/APM/ArduRoverFirmwarePlugin.cc index dff99c8..4bb3157 100644 --- a/src/FirmwarePlugin/APM/ArduRoverFirmwarePlugin.cc +++ b/src/FirmwarePlugin/APM/ArduRoverFirmwarePlugin.cc @@ -22,7 +22,10 @@ APMRoverMode::APMRoverMode(uint32_t mode, bool settable) {STEERING, "Steering"}, {HOLD, "Hold"}, {LOITER, "Loiter"}, +#if 0 + // Follow me not ready for Stable {FOLLOW, "Follow"}, +#endif {SIMPLE, "Simple"}, {AUTO, "Auto"}, {RTL, "RTL"}, @@ -40,7 +43,10 @@ ArduRoverFirmwarePlugin::ArduRoverFirmwarePlugin(void) APMRoverMode(APMRoverMode::STEERING ,true), APMRoverMode(APMRoverMode::HOLD ,true), APMRoverMode(APMRoverMode::LOITER ,true), +#if 0 + // Follow me not ready for Stable APMRoverMode(APMRoverMode::FOLLOW ,true), +#endif APMRoverMode(APMRoverMode::SIMPLE ,true), APMRoverMode(APMRoverMode::AUTO ,true), APMRoverMode(APMRoverMode::RTL ,true), @@ -75,8 +81,10 @@ bool ArduRoverFirmwarePlugin::supportsNegativeThrust(Vehicle* /*vehicle*/) return true; } +#if 0 + // Follow me not ready for Stable void ArduRoverFirmwarePlugin::sendGCSMotionReport(Vehicle* vehicle, FollowMe::GCSMotionReport& motionReport, uint8_t estimatationCapabilities) { _sendGCSMotionReport(vehicle, motionReport, estimatationCapabilities); } - +#endif diff --git a/src/FirmwarePlugin/APM/ArduRoverFirmwarePlugin.h b/src/FirmwarePlugin/APM/ArduRoverFirmwarePlugin.h index 6484f08..c82ef43 100644 --- a/src/FirmwarePlugin/APM/ArduRoverFirmwarePlugin.h +++ b/src/FirmwarePlugin/APM/ArduRoverFirmwarePlugin.h @@ -25,7 +25,10 @@ public: STEERING = 3, HOLD = 4, LOITER = 5, +#if 0 + // Follow me not ready for Stable FOLLOW = 6, +#endif SIMPLE = 7, AUTO = 10, RTL = 11, @@ -53,7 +56,10 @@ public: bool supportsNegativeThrust (Vehicle *) final; bool supportsSmartRTL (void) const override { return true; } QString offlineEditingParamFile (Vehicle* vehicle) override { Q_UNUSED(vehicle); return QStringLiteral(":/FirmwarePlugin/APM/Rover.OfflineEditing.params"); } +#if 0 + // Follow me not ready for Stable void sendGCSMotionReport (Vehicle* vehicle, FollowMe::GCSMotionReport& motionReport, uint8_t estimatationCapabilities) override; +#endif private: static bool _remapParamNameIntialized; diff --git a/src/FirmwarePlugin/APM/BuildParamMetaData.sh b/src/FirmwarePlugin/APM/BuildParamMetaData.sh new file mode 100644 index 0000000..49736ed --- /dev/null +++ b/src/FirmwarePlugin/APM/BuildParamMetaData.sh @@ -0,0 +1,7 @@ +# Args: [ArduCopter|ArduPlane] [Copter.3.7|...] +cd ~/repos/ardupilot +rm -f apm.pdef.xml +./Tools/autotest/param_metadata/param_parse.py --vehicle $1 +cp apm.pdef.xml ~/repos/qgroundcontrol/src/FirmwarePlugin/APM/APMParameterFactMetaData.$2.xml +rm apm.pdef.xml +cd ~/repos/qgroundcontrol/src/FirmwarePlugin/APM diff --git a/src/FirmwarePlugin/FirmwarePlugin.cc b/src/FirmwarePlugin/FirmwarePlugin.cc index 32cd3a6..79285ec 100644 --- a/src/FirmwarePlugin/FirmwarePlugin.cc +++ b/src/FirmwarePlugin/FirmwarePlugin.cc @@ -275,20 +275,6 @@ void FirmwarePlugin::guidedModeChangeAltitude(Vehicle*, double, bool pauseVehicl qgcApp()->showAppMessage(guided_mode_not_supported_by_vehicle); } -void -FirmwarePlugin::guidedModeChangeGroundSpeedMetersSecond(Vehicle*, double) -{ - // Not supported by generic vehicle - qgcApp()->showAppMessage(guided_mode_not_supported_by_vehicle); -} - -void -FirmwarePlugin::guidedModeChangeEquivalentAirspeedMetersSecond(Vehicle*, double) -{ - // Not supported by generic vehicle - qgcApp()->showAppMessage(guided_mode_not_supported_by_vehicle); -} - void FirmwarePlugin::startMission(Vehicle*) { // Not supported by generic vehicle @@ -332,7 +318,6 @@ const QVariantList& FirmwarePlugin::toolIndicators(const Vehicle*) QVariant::fromValue(QUrl::fromUserInput("qrc:/toolbar/TelemetryRSSIIndicator.qml")), QVariant::fromValue(QUrl::fromUserInput("qrc:/toolbar/RCRSSIIndicator.qml")), QVariant::fromValue(QUrl::fromUserInput("qrc:/toolbar/BatteryIndicator.qml")), - QVariant::fromValue(QUrl::fromUserInput("qrc:/toolbar/RemoteIDIndicator.qml")), }); } return _toolIndicatorList; @@ -553,22 +538,6 @@ const QVariantList& FirmwarePlugin::cameraList(const Vehicle*) this); // parent _cameraList.append(QVariant::fromValue(metaData)); - metaData = new CameraMetaData( - "Sentera 65R Sensor", - tr("Sentera"), - tr("65R Sensor"), - 29.9, // sensorWidth - 22.4, // sendsorHeight - 9344, // imageWidth - 7000, // imageHeight - 27.4, // focalLength - true, // landscape - false, // fixedOrientation - 0.3, // minTriggerInterval - tr(""), // SHOULD BE BLANK FOR NEWLY ADDED CAMERAS. Deprecated translation from older builds. - this); // parent - _cameraList.append(QVariant::fromValue(metaData)); - metaData = new CameraMetaData( //-- http://www.sony.co.uk/electronics/interchangeable-lens-cameras/ilce-6000-body-kit#product_details_default // Sony a6000 Sony 16mm f/2.8" @@ -949,8 +918,8 @@ bool FirmwarePlugin::_armVehicleAndValidate(Vehicle* vehicle) // Only try arming the vehicle a single time. Doing retries on arming with a delay can lead to safety issues. vehicle->setArmed(true, false /* showError */); - // Wait 1500 msecs for vehicle to arm (waiting for the next heartbeat) - for (int i = 0; i < 15; i++) { + // Wait 1000 msecs for vehicle to arm + for (int i=0; i<10; i++) { if (vehicle->armed()) { vehicleArmed = true; break; diff --git a/src/FirmwarePlugin/FirmwarePlugin.h b/src/FirmwarePlugin/FirmwarePlugin.h index f9444b4..7b9fec3 100644 --- a/src/FirmwarePlugin/FirmwarePlugin.h +++ b/src/FirmwarePlugin/FirmwarePlugin.h @@ -88,6 +88,10 @@ public: /// list available from the firmware. Call will be made again if advanced mode changes. virtual QStringList flightModes(Vehicle* /*vehicle*/) { return QStringList(); } + /// Returns the list of additional flight modes to add to the list for joystick button actions. + /// Call will be made again if advanced mode changes. + virtual QStringList extraJoystickFlightModes(Vehicle* /*vehicle*/) { return QStringList(); } + /// Returns the name for this flight mode. Flight mode names must be human readable as well as audio speakable. /// @param base_mode Base mode from mavlink HEARTBEAT message /// @param custom_mode Custom mode from mavlink HEARTBEAT message @@ -98,9 +102,6 @@ public: /// @param[out] custom_mode Custom mode for SET_MODE mavlink message virtual bool setFlightMode(const QString& flightMode, uint8_t* base_mode, uint32_t* custom_mode); - /// returns true if this flight stack supports MAV_CMD_DO_SET_MODE - virtual bool MAV_CMD_DO_SET_MODE_is_supported() const { return false; } - /// Returns The flight mode which indicates the vehicle is paused virtual QString pauseFlightMode(void) const { return QString(); } @@ -149,24 +150,6 @@ public: /// @return The minimum takeoff altitude (relative) for guided takeoff. virtual double minimumTakeoffAltitude(Vehicle* /*vehicle*/) { return 10; } - /// @return The maximum horizontal groundspeed for a multirotor. - virtual double maximumHorizontalSpeedMultirotor(Vehicle* /*vehicle*/) { return NAN; } - - /// @return The maximum equivalent airspeed setpoint. - virtual double maximumEquivalentAirspeed(Vehicle* /*vehicle*/) { return NAN; } - - /// @return The minimum equivalent airspeed setpoint - virtual double minimumEquivalentAirspeed(Vehicle* /*vehicle*/) { return NAN; } - - /// @return Return true if the GCS has enabled Grip_enable option - virtual bool hasGripper(const Vehicle* /*vehicle*/) const { return false; } - - /// @return Return true if we have received the ground speed limits for the mulirotor. - virtual bool mulirotorSpeedLimitsAvailable(Vehicle* /*vehicle*/) { return false; } - - /// @return Return true if we have received the airspeed limits for fixed wing. - virtual bool fixedWingAirSpeedLimitsAvailable(Vehicle* /*vehicle*/) { return false; } - /// Command the vehicle to start the mission virtual void startMission(Vehicle* vehicle); @@ -178,14 +161,6 @@ public: /// @param pauseVehicle true: pause vehicle prior to altitude change virtual void guidedModeChangeAltitude(Vehicle* vehicle, double altitudeChange, bool pauseVehicle); - /// Command vehicle to change groundspeed - /// @param groundspeed Groundspeed in m/s - virtual void guidedModeChangeGroundSpeedMetersSecond(Vehicle* vehicle, double groundspeed); - - /// Command vehicle to change equivalent airspeed - /// @param airspeed_equiv Equivalent airspeed in m/s - virtual void guidedModeChangeEquivalentAirspeedMetersSecond(Vehicle* vehicle, double airspeed_equiv); - /// Default tx mode to apply to joystick axes /// TX modes are as outlined here: http://www.rc-airplane-world.com/rc-transmitter-modes.html virtual int defaultJoystickTXMode(void); diff --git a/src/FirmwarePlugin/PX4/PX4FirmwarePlugin.cc b/src/FirmwarePlugin/PX4/PX4FirmwarePlugin.cc index cf76d12..b97164f 100644 --- a/src/FirmwarePlugin/PX4/PX4FirmwarePlugin.cc +++ b/src/FirmwarePlugin/PX4/PX4FirmwarePlugin.cc @@ -11,6 +11,7 @@ #include "PX4ParameterMetaData.h" #include "QGCApplication.h" #include "PX4AutoPilotPlugin.h" +#include "PX4AdvancedFlightModesController.h" #include "PX4SimpleFlightModesController.h" #include "AirframeComponentController.h" #include "SensorsComponentController.h" @@ -52,6 +53,7 @@ PX4FirmwarePlugin::PX4FirmwarePlugin() , _simpleFlightMode (tr("Simple")) , _orbitFlightMode (tr("Orbit")) { + qmlRegisterType ("QGroundControl.Controllers", 1, 0, "PX4AdvancedFlightModesController"); qmlRegisterType ("QGroundControl.Controllers", 1, 0, "PX4SimpleFlightModesController"); qmlRegisterType ("QGroundControl.Controllers", 1, 0, "AirframeComponentController"); qmlRegisterType ("QGroundControl.Controllers", 1, 0, "SensorsComponentController"); @@ -271,9 +273,7 @@ QList PX4FirmwarePlugin::supportedMissionCommands(QGCMAVLink::VehicleCl MAV_CMD_DO_DIGICAM_CONTROL, MAV_CMD_DO_SET_CAM_TRIGG_DIST, MAV_CMD_DO_SET_SERVO, - MAV_CMD_DO_SET_ACTUATOR, MAV_CMD_DO_CHANGE_SPEED, - MAV_CMD_DO_SET_HOME, MAV_CMD_DO_LAND_START, MAV_CMD_DO_SET_ROI_LOCATION, MAV_CMD_DO_SET_ROI_WPNEXT_OFFSET, MAV_CMD_DO_SET_ROI_NONE, MAV_CMD_DO_MOUNT_CONFIGURE, @@ -283,7 +283,6 @@ QList PX4FirmwarePlugin::supportedMissionCommands(QGCMAVLink::VehicleCl MAV_CMD_NAV_DELAY, MAV_CMD_CONDITION_YAW, MAV_CMD_NAV_LOITER_TO_ALT, - MAV_CMD_DO_GRIPPER }; QList vtolCommands = { @@ -411,50 +410,6 @@ void PX4FirmwarePlugin::guidedModeTakeoff(Vehicle* vehicle, double takeoffAltRel static_cast(takeoffAltAMSL)); // AMSL altitude } -double PX4FirmwarePlugin::maximumHorizontalSpeedMultirotor(Vehicle* vehicle) -{ - QString speedParam("MPC_XY_VEL_MAX"); - - if (vehicle->parameterManager()->parameterExists(FactSystem::defaultComponentId, speedParam)) { - return vehicle->parameterManager()->getParameter(FactSystem::defaultComponentId, speedParam)->rawValue().toDouble(); - } - - return FirmwarePlugin::maximumHorizontalSpeedMultirotor(vehicle); -} - -double PX4FirmwarePlugin::maximumEquivalentAirspeed(Vehicle* vehicle) -{ - QString airspeedMax("FW_AIRSPD_MAX"); - - if (vehicle->parameterManager()->parameterExists(FactSystem::defaultComponentId, airspeedMax)) { - return vehicle->parameterManager()->getParameter(FactSystem::defaultComponentId, airspeedMax)->rawValue().toDouble(); - } - - return FirmwarePlugin::maximumEquivalentAirspeed(vehicle); -} - -double PX4FirmwarePlugin::minimumEquivalentAirspeed(Vehicle* vehicle) -{ - QString airspeedMin("FW_AIRSPD_MIN"); - - if (vehicle->parameterManager()->parameterExists(FactSystem::defaultComponentId, airspeedMin)) { - return vehicle->parameterManager()->getParameter(FactSystem::defaultComponentId, airspeedMin)->rawValue().toDouble(); - } - - return FirmwarePlugin::minimumEquivalentAirspeed(vehicle); -} - -bool PX4FirmwarePlugin::mulirotorSpeedLimitsAvailable(Vehicle* vehicle) -{ - return vehicle->parameterManager()->parameterExists(FactSystem::defaultComponentId, "MPC_XY_VEL_MAX"); -} - -bool PX4FirmwarePlugin::fixedWingAirSpeedLimitsAvailable(Vehicle* vehicle) -{ - return vehicle->parameterManager()->parameterExists(FactSystem::defaultComponentId, "FW_AIRSPD_MIN") && - vehicle->parameterManager()->parameterExists(FactSystem::defaultComponentId, "FW_AIRSPD_MAX"); -} - void PX4FirmwarePlugin::guidedModeGotoLocation(Vehicle* vehicle, const QGeoCoordinate& gotoCoord) { if (qIsNaN(vehicle->altitudeAMSL()->rawValue().toDouble())) { @@ -494,12 +449,14 @@ typedef struct { double newAMSLAlt; } PauseVehicleThenChangeAltData_t; -static void _pauseVehicleThenChangeAltResultHandler(void* resultHandlerData, int /*compId*/, const mavlink_command_ack_t& ack, Vehicle::MavCmdResultFailureCode_t failureCode) +static void _pauseVehicleThenChangeAltResultHandler(void* resultHandlerData, int /*compId*/, MAV_RESULT commandResult, uint8_t progress, Vehicle::MavCmdResultFailureCode_t failureCode) { - if (ack.result != MAV_RESULT_ACCEPTED) { + Q_UNUSED(progress); + + if (commandResult != MAV_RESULT_ACCEPTED) { switch (failureCode) { case Vehicle::MavCmdResultCommandResultOnly: - qDebug() << QStringLiteral("MAV_CMD_DO_REPOSITION error(%1)").arg(ack.result); + qDebug() << QStringLiteral("MAV_CMD_DO_REPOSITION error(%1)").arg(commandResult); break; case Vehicle::MavCmdResultFailureNoResponseToCommand: qDebug() << "MAV_CMD_DO_REPOSITION no response from vehicle"; @@ -511,7 +468,7 @@ static void _pauseVehicleThenChangeAltResultHandler(void* resultHandlerData, int } PauseVehicleThenChangeAltData_t* pData = static_cast(resultHandlerData); - pData->plugin->_changeAltAfterPause(resultHandlerData, ack.result == MAV_RESULT_ACCEPTED /* pauseSucceeded */); + pData->plugin->_changeAltAfterPause(resultHandlerData, commandResult == MAV_RESULT_ACCEPTED /* pauseSucceeded */); } void PX4FirmwarePlugin::_changeAltAfterPause(void* resultHandlerData, bool pauseSucceeded) @@ -555,12 +512,9 @@ void PX4FirmwarePlugin::guidedModeChangeAltitude(Vehicle* vehicle, double altitu resultData->newAMSLAlt = vehicle->homePosition().altitude() + newAltRel; if (pauseVehicle) { - Vehicle::MavCmdAckHandlerInfo_t handlerInfo = {}; - handlerInfo.resultHandler = _pauseVehicleThenChangeAltResultHandler; - handlerInfo.resultHandlerData = resultData; - vehicle->sendMavCommandWithHandler( - &handlerInfo, + _pauseVehicleThenChangeAltResultHandler, + resultData, vehicle->defaultComponentId(), MAV_CMD_DO_REPOSITION, -1.0f, // Don't change groundspeed @@ -572,34 +526,6 @@ void PX4FirmwarePlugin::guidedModeChangeAltitude(Vehicle* vehicle, double altitu } } -void PX4FirmwarePlugin::guidedModeChangeGroundSpeedMetersSecond(Vehicle* vehicle, double groundspeed) -{ - - vehicle->sendMavCommand( - vehicle->defaultComponentId(), - MAV_CMD_DO_CHANGE_SPEED, - true, // show error is fails - 1, // 0: airspeed, 1: groundspeed - static_cast(groundspeed), // groundspeed setpoint - -1, // throttle - 0, // 0: absolute speed, 1: relative to current - NAN, NAN,NAN); // param 5-7 unused -} - -void PX4FirmwarePlugin::guidedModeChangeEquivalentAirspeedMetersSecond(Vehicle* vehicle, double airspeed_equiv) -{ - - vehicle->sendMavCommand( - vehicle->defaultComponentId(), - MAV_CMD_DO_CHANGE_SPEED, - true, // show error is fails - 0, // 0: airspeed, 1: groundspeed - static_cast(airspeed_equiv), // groundspeed setpoint - -1, // throttle - 0, // 0: absolute speed, 1: relative to current - NAN, NAN,NAN); // param 5-7 unused -} - void PX4FirmwarePlugin::startMission(Vehicle* vehicle) { if (_setFlightModeAndValidate(vehicle, missionFlightMode())) { @@ -708,7 +634,7 @@ bool PX4FirmwarePlugin::supportsNegativeThrust(Vehicle* vehicle) return ((vehicle->vehicleType() == MAV_TYPE_GROUND_ROVER) || (vehicle->vehicleType() == MAV_TYPE_SUBMARINE)); } -QString PX4FirmwarePlugin::getHobbsMeter(Vehicle* vehicle) +QString PX4FirmwarePlugin::getHobbsMeter(Vehicle* vehicle) { static const char* HOOBS_HI = "LND_FLIGHT_T_HI"; static const char* HOOBS_LO = "LND_FLIGHT_T_LO"; @@ -720,7 +646,7 @@ QString PX4FirmwarePlugin::getHobbsMeter(Vehicle* vehicle) Fact* factLo = vehicle->parameterManager()->getParameter(FactSystem::defaultComponentId, HOOBS_LO); hobbsTimeSeconds = ((uint64_t)factHi->rawValue().toUInt() << 32 | (uint64_t)factLo->rawValue().toUInt()) / 1000000; qCDebug(VehicleLog) << "Hobbs Meter raw PX4:" << "(" << factHi->rawValue().toUInt() << factLo->rawValue().toUInt() << ")"; - } + } int hours = hobbsTimeSeconds / 3600; int minutes = (hobbsTimeSeconds % 3600) / 60; @@ -728,13 +654,4 @@ QString PX4FirmwarePlugin::getHobbsMeter(Vehicle* vehicle) QString timeStr = QString::asprintf("%04d:%02d:%02d", hours, minutes, seconds); qCDebug(VehicleLog) << "Hobbs Meter string:" << timeStr; return timeStr; -} - -bool PX4FirmwarePlugin::hasGripper(const Vehicle* vehicle) const -{ - if(vehicle->parameterManager()->parameterExists(FactSystem::defaultComponentId, QStringLiteral("PD_GRIPPER_EN"))) { - bool _hasGripper = (vehicle->parameterManager()->getParameter(FactSystem::defaultComponentId, QStringLiteral("PD_GRIPPER_EN"))->rawValue().toInt()) != 0 ? true : false; - return _hasGripper; - } - return false; -} +} diff --git a/src/FirmwarePlugin/PX4/PX4FirmwarePlugin.h b/src/FirmwarePlugin/PX4/PX4FirmwarePlugin.h index a0a8d62..5b11ea2 100644 --- a/src/FirmwarePlugin/PX4/PX4FirmwarePlugin.h +++ b/src/FirmwarePlugin/PX4/PX4FirmwarePlugin.h @@ -46,15 +46,8 @@ public: void guidedModeRTL (Vehicle* vehicle, bool smartRTL) override; void guidedModeLand (Vehicle* vehicle) override; void guidedModeTakeoff (Vehicle* vehicle, double takeoffAltRel) override; - double maximumHorizontalSpeedMultirotor(Vehicle* vehicle) override; - double maximumEquivalentAirspeed(Vehicle* vehicle) override; - double minimumEquivalentAirspeed(Vehicle* vehicle) override; - bool mulirotorSpeedLimitsAvailable(Vehicle* vehicle) override; - bool fixedWingAirSpeedLimitsAvailable(Vehicle* vehicle) override; void guidedModeGotoLocation (Vehicle* vehicle, const QGeoCoordinate& gotoCoord) override; void guidedModeChangeAltitude (Vehicle* vehicle, double altitudeRel, bool pauseVehicle) override; - void guidedModeChangeGroundSpeedMetersSecond(Vehicle* vehicle, double groundspeed) override; - void guidedModeChangeEquivalentAirspeedMetersSecond(Vehicle* vehicle, double airspeed_equiv) override; void startMission (Vehicle* vehicle) override; bool isGuidedMode (const Vehicle* vehicle) const override; void initializeVehicle (Vehicle* vehicle) override; @@ -72,7 +65,6 @@ public: uint32_t highLatencyCustomModeTo32Bits (uint16_t hlCustomMode) override; bool supportsNegativeThrust (Vehicle* vehicle) override; QString getHobbsMeter (Vehicle* vehicle) override; - bool hasGripper (const Vehicle* vehicle) const override; protected: typedef struct { diff --git a/src/FirmwarePlugin/PX4/PX4ParameterFactMetaData.xml b/src/FirmwarePlugin/PX4/PX4ParameterFactMetaData.xml index fe4cc47..8c9b18c 100644 --- a/src/FirmwarePlugin/PX4/PX4ParameterFactMetaData.xml +++ b/src/FirmwarePlugin/PX4/PX4ParameterFactMetaData.xml @@ -196,175 +196,16 @@ us - - - First 4 characters of CALLSIGN - Sets first 4 characters of a total of 8. Valid characters are A-Z, 0-9, " ". Example "PX4 " -> 1347957792 For CALLSIGN shorter than 8 characters use the null terminator at the end '\0'. - true - - - Second 4 characters of CALLSIGN - Sets second 4 characters of a total of 8. Valid characters are A-Z, 0-9, " " only. Example "TEST" -> 1413829460 For CALLSIGN shorter than 8 characters use the null terminator at the end '\0'. - true - - - ADSB-Out Emergency State - Sets the vehicle emergency state - 0 - 6 - false - - NoEmergency - General - Medical - LowFuel - NoCommunications - Interference - Downed - - - - ADSB-Out Vehicle Emitter Type - Configure the emitter type of the vehicle. - 0 - 15 - true - - Unknown - Light - Small - Large - HighVortex - Heavy - Performance - Rotorcraft - RESERVED - Glider - LightAir - Parachute - UltraLight - RESERVED - UAV - Space - RESERVED - EmergencySurf - ServiceSurf - PointObstacle - - - - ADSB-Out GPS Offset lat - Sets GPS lataral offset encoding - 0 - 7 - false - - NoData - LatLeft2M - LatLeft4M - LatLeft6M - LatRight0M - LatRight2M - LatRight4M - LatRight6M - - - - ADSB-Out GPS Offset lon - Sets GPS longitudinal offset encoding - 0 - 1 - false - - NoData - AppliedBySensor - - - - ADSB-Out ICAO configuration - Defines the ICAO ID of the vehicle - -1 - 16777215 - true - - - ADSB-In Special ICAO configuration - This vehicle is always tracked. Use 0 to disable. - 0 - 16777215 - false - - - ADSB-Out Ident Configuration - Enable Identification of Position feature - false - - - ADSB-Out Vehicle Size Configuration - Report the length and width of the vehicle in meters. In most cases, use '1' for the smallest vehicle size. - 0 - 15 - true - - SizeUnknown - Len15_Wid23 - Len25_Wid28 - Len25_Wid34 - Len35_Wid33 - Len35_Wid38 - Len45_Wid39 - Len45_Wid45 - Len55_Wid45 - Len55_Wid52 - Len65_Wid59 - Len65_Wid67 - Len75_Wid72 - Len75_Wid80 - Len85_Wid80 - Len85_Wid90 - - - - ADSB-In Vehicle List Size - Change number of targets to track - 0 - 50 - true - - - ADSB-Out Vehicle Max Speed - Informs ADSB vehicles of this vehicle's max speed capability - 0 - 6 - true - - UnknownMaxSpeed - 75Kts - 150Kts - 300Kts - 600Kts - 1200Kts - Over1200Kts - - - - ADSB-Out squawk code configuration - This parameter defines the squawk code. Value should be between 0000 and 7777. - 0 - 7777 - false - - - Gate size for sideslip angle fusion + Airspeed Selector: Gate size for sideslip angle fusion Sets the number of standard deviations used by the innovation consistency test. 1 5 SD - - Wind estimator sideslip measurement noise + + Airspeed Selector: Wind estimator sideslip measurement noise Sideslip measurement noise of the internal wind estimator(s) of the airspeed selector. 0 1 @@ -373,12 +214,12 @@ Enable checks on airspeed sensors - Controls which checks are run to check airspeed data for validity. Only applied if ASPD_PRIMARY > 0. + Controls which checks are run to check airspeed data for validity. Only applied if ASPD_PRIMARY > 0. Note that the data missing check is enabled if any of the options is set. 0 15 Only data missing check (triggers if more than 1s no data) - Data stuck (triggers if data is exactly constant for 2s in FW mode) + Data stuck (triggers if data is exactly constant for 2s) Innovation check (see ASPD_FS_INNOV) Load factor check (triggers if measurement is below stall speed) @@ -456,7 +297,7 @@ 2 true - + Controls when to apply the new estimated airspeed scale(s) Do not automatically apply the estimated scale @@ -464,48 +305,187 @@ Apply the estimated scale in air - - Wind estimator true airspeed scale process noise spectral density - Airspeed scale process noise of the internal wind estimator(s) of the airspeed selector. When unaided, the scale uncertainty (1-sigma, unitless) increases by this amount every second. + + Airspeed Selector: Wind estimator true airspeed scale process noise + Airspeed scale process noise of the internal wind estimator(s) of the airspeed selector. 0 0.1 - 1/s/sqrt(Hz) + Hz 5 - - Gate size for true airspeed fusion + + Airspeed Selector: Gate size for true airspeed fusion Sets the number of standard deviations used by the innovation consistency test. 1 5 SD - Wind estimator true airspeed measurement noise + Airspeed Selector: Wind estimator true airspeed measurement noise True airspeed measurement noise of the internal wind estimator(s) of the airspeed selector. 0 4 m/s 1 - - Horizontal wind uncertainty threshold for synthetic airspeed - The synthetic airspeed estimate (from groundspeed and heading) will be declared valid as soon and as long the horizontal wind uncertainty is below this value. - 0.001 - 5 - m/s - 3 - - - Wind estimator wind process noise spectral density - Wind process noise of the internal wind estimator(s) of the airspeed selector. When unaided, the wind estimate uncertainty (1-sigma, in m/s) increases by this amount every second. + + Airspeed Selector: Wind estimator wind process noise + Wind process noise of the internal wind estimator(s) of the airspeed selector. 0 1 - m/s^2/sqrt(Hz) + m/s^2 2 + + + Body X axis angular velocity D gain + Body X axis angular velocity differential gain. Small values help reduce fast oscillations. If value is too big oscillations will appear again. + 0.0 + 2.0 + 4 + 0.01 + + + Body X axis angular velocity feedforward gain + Improves tracking performance. + 0.0 + Nm/(rad/s) + 4 + + + Body X axis angular velocity I gain + Body X axis angular velocity integral gain. Can be set to compensate static thrust difference or gravity center offset. + 0.0 + Nm/rad + 3 + 0.01 + + + Body X axis angular velocity integrator limit + Body X axis angular velocity integrator limit. Can be set to increase the amount of integrator available to counteract disturbances or reduced to improve settling time after large roll moment trim changes. + 0.0 + Nm + 2 + 0.01 + + + Body X axis angular velocity controller gain + Global gain of the controller. This gain scales the P, I and D terms of the controller: output = AVC_X_K * (AVC_X_P * error + AVC_X_I * error_integral + AVC_X_D * error_derivative) Set AVC_X_P=1 to implement a PID in the ideal form. Set AVC_X_K=1 to implement a PID in the parallel form. + 0.0 + 5.0 + 4 + 0.0005 + + + Body X axis angular velocity P gain + Body X axis angular velocity proportional gain, i.e. control output for angular speed error 1 rad/s. + 0.0 + 20.0 + 1/s + 3 + 0.01 + + + Body Y axis angular velocity D gain + Body Y axis angular velocity differential gain. Small values help reduce fast oscillations. If value is too big oscillations will appear again. + 0.0 + 2.0 + 4 + 0.01 + + + Body Y axis angular velocity feedforward + Improves tracking performance. + 0.0 + Nm/(rad/s) + 4 + + + Body Y axis angular velocity I gain + Body Y axis angular velocity integral gain. Can be set to compensate static thrust difference or gravity center offset. + 0.0 + Nm/rad + 3 + 0.01 + + + Body Y axis angular velocity integrator limit + Body Y axis angular velocity integrator limit. Can be set to increase the amount of integrator available to counteract disturbances or reduced to improve settling time after large pitch moment trim changes. + 0.0 + Nm + 2 + 0.01 + + + Body Y axis angular velocity controller gain + Global gain of the controller. This gain scales the P, I and D terms of the controller: output = AVC_Y_K * (AVC_Y_P * error + AVC_Y_I * error_integral + AVC_Y_D * error_derivative) Set AVC_Y_P=1 to implement a PID in the ideal form. Set AVC_Y_K=1 to implement a PID in the parallel form. + 0.0 + 20.0 + 4 + 0.0005 + + + Body Y axis angular velocity P gain + Body Y axis angular velocity proportional gain, i.e. control output for angular speed error 1 rad/s. + 0.0 + 20.0 + 1/s + 3 + 0.01 + + + Body Z axis angular velocity D gain + Body Z axis angular velocity differential gain. Small values help reduce fast oscillations. If value is too big oscillations will appear again. + 0.0 + 2.0 + 2 + 0.01 + + + Body Z axis angular velocity feedforward + Improves tracking performance. + 0.0 + Nm/(rad/s) + 4 + 0.01 + + + Body Z axis angular velocity I gain + Body Z axis angular velocity integral gain. Can be set to compensate static thrust difference or gravity center offset. + 0.0 + Nm/rad + 2 + 0.01 + + + Body Z axis angular velocity integrator limit + Body Z axis angular velocity integrator limit. Can be set to increase the amount of integrator available to counteract disturbances or reduced to improve settling time after large yaw moment trim changes. + 0.0 + Nm + 2 + 0.01 + + + Body Z axis angular velocity controller gain + Global gain of the controller. This gain scales the P, I and D terms of the controller: output = AVC_Z_K * (AVC_Z_P * error + AVC_Z_I * error_integral + AVC_Z_D * error_derivative) Set AVC_Z_P=1 to implement a PID in the ideal form. Set AVC_Z_K=1 to implement a PID in the parallel form. + 0.0 + 5.0 + 4 + 0.0005 + + + Body Z axis angular velocity P gain + Body Z axis angular velocity proportional gain, i.e. control output for angular speed error 1 rad/s. + 0.0 + 20.0 + 1/s + 2 + 0.01 + + - + Acceleration compensation based on GPS velocity @@ -581,24 +561,9 @@ yaw - - Enable/disable auto tuning using an RC AUX input - Defines which RC_MAP_AUXn parameter maps the RC channel used to enable/disable auto tuning. - 0 - 6 - - Disable - Aux1 - Aux2 - Aux3 - Aux4 - Aux5 - Aux6 - - Start the autotuning sequence - WARNING: this will inject steps to the rate controller and can be dangerous. Only activate if you know what you are doing, and in a safe environment. Any motion of the remote stick will abort the signal injection and reset this parameter Best is to perform the identification in position or hold mode. Increase the amplitude of the injected signal using FW_AT_SYSID_AMP for more signal/noise ratio + WARNING: this will inject steps to the rate controller and can be dangerous. Only activate if you know what you are doing, and in a safe environment. Any motion of the remote stick will abord the signal injection and reset this parameter Best is to perform the identification in position or hold mode. Increase the amplitude of the injected signal using FW_AT_SYSID_AMP for more signal/noise ratio Amplitude of the injected signal @@ -628,7 +593,7 @@ Start the autotuning sequence - WARNING: this will inject steps to the rate controller and can be dangerous. Only activate if you know what you are doing, and in a safe environment. Any motion of the remote stick will abort the signal injection and reset this parameter Best is to perform the identification in position or hold mode. Increase the amplitude of the injected signal using MC_AT_SYSID_AMP for more signal/noise ratio + WARNING: this will inject steps to the rate controller and can be dangerous. Only activate if you know what you are doing, and in a safe environment. Any motion of the remote stick will abord the signal injection and reset this parameter Best is to perform the identification in position or hold mode. Increase the amplitude of the injected signal using MC_AT_SYSID_AMP for more signal/noise ratio Amplitude of the injected signal @@ -641,14 +606,6 @@ This parameter is deprecated. Please use BAT1_I_CHANNEL - - Expected battery current in flight - This value is used to initialize the in-flight average current estimation, which in turn is used for estimating remaining flight time and RTL triggering. - 0 - 500 - A - 0.1 - Critical threshold Sets the threshold when the battery will be reported as critically low. This has to be lower than the low threshold. This threshold commonly will trigger RTL. @@ -682,7 +639,7 @@ This parameter is deprecated. Please use BAT1_V_CHARGED instead - + This parameter is deprecated. Please use BAT1_V_EMPTY instead @@ -790,6 +747,22 @@ Distance based, on command (Survey mode) + + Camera trigger pin + Selects which FMU pin is used (range: AUX1-AUX8 on Pixhawk controllers with an I/O board, MAIN1-MAIN8 on controllers without an I/O board). The PWM interface takes two pins per camera, while relay triggers on every pin individually. Example: Value 56 would trigger on pins 5 and 6. For GPIO mode Pin 6 will be triggered followed by 5. With a value of 65 pin 5 will be triggered followed by 6. Pins may be non contiguous. I.E. 16 or 61. In GPIO mode the delay pin to pin is < .2 uS. + 1 + 12345678 + 0 + true + + + Camera trigger pin extended + This Bit mask selects which FMU pin is used (range: AUX9-AUX32) If the value is not 0 it takes precedence over TRIG_PINS. If bits above 8 are set that value is used as the selector for trigger pins. greater then 8. 0x00000300 Would be Pins 9,10. If the value is + 0 + 2147483647 + 0 + true + Camera trigger polarity This parameter sets the polarity of the trigger (0 = active low, 1 = active high ) @@ -831,6 +804,13 @@ 782097 true + + Circuit breaker for engine failure detection + Setting this parameter to 284953 will disable the engine failure detection. If the aircraft is in engine failure mode the engine failure flag will be set to healthy WARNING: ENABLING THIS CIRCUIT BREAKER IS AT OWN RISK + 0 + 284953 + true + Circuit breaker for flight termination Setting this parameter to 121212 will disable the flight termination action if triggered by the FailureDetector logic or if FMU is lost. This circuit breaker does not affect the RC loss, data link loss, geofence, and takeoff failure detection safety logic. @@ -844,6 +824,13 @@ 0 22027 + + Circuit breaker for rate controller output + Setting this parameter to 140253 will disable the rate controller uORB publication. WARNING: ENABLING THIS CIRCUIT BREAKER IS AT OWN RISK + 0 + 140253 + true + Circuit breaker for power supply check Setting this parameter to 894281 will disable the power valid checks in the commander. WARNING: ENABLING THIS CIRCUIT BREAKER IS AT OWN RISK @@ -856,6 +843,12 @@ 0 197848 + + Circuit breaker for position error check + Setting this parameter to 201607 will disable the position and velocity accuracy checks in the commander. WARNING: ENABLING THIS CIRCUIT BREAKER IS AT OWN RISK + 0 + 201607 + Circuit breaker for arming in fixed-wing mode check Setting this parameter to 159753 will enable arming in fixed-wing mode for VTOLs. WARNING: ENABLING THIS CIRCUIT BREAKER IS AT OWN RISK @@ -864,25 +857,12 @@ - - Set the actuator failure failsafe mode - Note: actuator failure needs to be enabled and configured via FD_ACT_* parameters. - 0 - 3 + + Enable preflight check for maximal allowed airspeed when arming + Deny arming if the current airspeed measurement is greater than half the cruise airspeed (FW_AIRSPD_TRIM). Excessive airspeed measurements on ground are either caused by wind or bad airspeed calibration. - Warning only - Hold mode - Land mode - Return mode - Terminate - - - - Flag to allow arming - Set 0 to prevent accidental use of the vehicle e.g. for safety or maintenance reasons. - - Disallow arming - Allow arming + Disabled + Enabled @@ -908,15 +888,6 @@ 1 0.1 - - Minimum battery level for arming - Additional battery level check that only allows arming if the state of charge of the emptiest connected battery is above this value. A value of 0 disables the check. - 0 - 0.9 - norm - 2 - 0.01 - Enable checks on ESCs that report telemetry If this parameter is set, the system will check ESC's online status and failures. This param is specific for ESCs reporting status. It shall be used only if ESCs support telemetry. @@ -949,10 +920,6 @@ 2 0.05 - - Enable FMU SD card hardfault detection check - This check detects if there are hardfault files present on the SD card. If so, and the parameter is enabled, arming is prevented. - Maximum accelerometer inconsistency between IMU units that will allow arming 0.1 @@ -969,7 +936,7 @@ 3 0.01 - + Maximum magnetic field inconsistency between units that will allow arming Set -1 to disable the check. 3 @@ -989,15 +956,6 @@ Require valid mission to arm The default allows to arm the vehicle without a valid mission. - - Enable Drone ID system detection and health check - This check detects if the Open Drone ID system is missing. Depending on the value of the parameter, the check can be disabled, warn only or deny arming. - - Disabled - Warning only - Enforce Open Drone ID system presence - - Enable FMU SD card detection check This check detects if the FMU SD card is missing. Depending on the value of the parameter, the check can be disabled, warn only or deny arming. @@ -1013,14 +971,15 @@ Allow arming without GPS + The default allows the vehicle to arm without GPS signal. Require GPS lock to arm Allow arming without GPS - + Maximum allowed CPU load to still arm - The check fails if the CPU load is above this threshold for 2s. A negative value disables the check. + A negative value disables the check. -1 100 % @@ -1030,42 +989,169 @@ Time-out for auto disarm after landing A non-zero, positive value specifies the time-out period in seconds after which the vehicle will be automatically disarmed in case a landing situation has been detected during this period. A zero or negative value means that automatic disarming triggered by landing detection is disabled. s - 1 - 0.1 - - - Allow disarming via switch/stick/button on multicopters in manual thrust modes - 0: Disallow disarming when not landed 1: Allow disarming in multicopter flight in modes where the thrust is directly controlled by thr throttle stick e.g. Stabilized, Acro + 2 Time-out for auto disarm if not taking off A non-zero, positive value specifies the time in seconds, within which the vehicle is expected to take off after arming. In case the vehicle didn't takeoff within the timeout it disarms again. A negative value disables autmoatic disarming triggered by a pre-takeoff timeout. s - 1 - 0.1 + 2 - GCS connection loss time threshold - After this amount of seconds without datalink, the GCS connection lost mode triggers + Datalink loss time threshold + After this amount of seconds without datalink the data link lost mode triggers 5 300 s 1 1 - - Delay between failsafe condition triggered and failsafe reaction - Before entering failsafe (RTL, Land, Hold), wait COM_FAIL_ACT_T seconds in Hold mode for the user to realize. During that time the user cannot take over control via the stick override feature (see COM_RC_OVERRIDE). Afterwards the configured failsafe action is triggered and the user may use stick override. A zero value disables the delay and the user cannot take over via stick movements (switching modes is still allowed). + + Engine Failure Current/Throttle Threshold + Engine failure triggers only below this current value 0.0 - 25.0 + 50.0 + A/% + 2 + 1 + + + Engine Failure Throttle Threshold + Engine failure triggers only above this throttle value + 0.0 + 1.0 + norm + 2 + 0.01 + + + Engine Failure Time Threshold + Engine failure triggers only if the throttle threshold and the current to throttle threshold are violated for this time + 0.0 + 60.0 s - 3 + 1 + 1 Next flight UUID This number is incremented automatically after every flight on disarming in order to remember the next flight UUID. The first flight is 0. 0 + + First flightmode slot (1000-1160) + If the main switch channel is in this range the selected flight mode will be applied. + + Unassigned + Manual + Altitude + Position + Mission + Hold + Return + Acro + Offboard + Stabilized + Takeoff + Land + Follow Me + + + + Second flightmode slot (1160-1320) + If the main switch channel is in this range the selected flight mode will be applied. + + Unassigned + Manual + Altitude + Position + Mission + Hold + Return + Acro + Offboard + Stabilized + Takeoff + Land + Follow Me + + + + Third flightmode slot (1320-1480) + If the main switch channel is in this range the selected flight mode will be applied. + + Unassigned + Manual + Altitude + Position + Mission + Hold + Return + Acro + Offboard + Stabilized + Takeoff + Land + Follow Me + + + + Fourth flightmode slot (1480-1640) + If the main switch channel is in this range the selected flight mode will be applied. + + Unassigned + Manual + Altitude + Position + Mission + Hold + Return + Acro + Offboard + Stabilized + Takeoff + Land + Follow Me + + + + Fifth flightmode slot (1640-1800) + If the main switch channel is in this range the selected flight mode will be applied. + + Unassigned + Manual + Altitude + Position + Mission + Hold + Return + Acro + Offboard + Stabilized + Takeoff + Land + Follow Me + + + + Sixth flightmode slot (1800-2000) + If the main switch channel is in this range the selected flight mode will be applied. + + Unassigned + Manual + Altitude + Position + Mission + Hold + Return + Acro + Offboard + Stabilized + Takeoff + Land + Follow Me + + User Flight Profile Describes the intended use of the vehicle. Can be used by ground control software or log post processing. This param does not influence the behavior within the firmware. This means for example the control logic is independent of the setting of this param (but depends on other params). @@ -1076,16 +1162,6 @@ Developer - - Maximum allowed flight time - The vehicle aborts the current operation and returns to launch when the time since takeoff is above this value. It is not possible to resume the mission or switch to any auto mode other than RTL or Land. Taking over in any manual mode is still possible. Starting from 90% of the maximum flight time, a warning message will be sent every 1 minute with the remaining time until automatic RTL. Set to -1 to disable. - -1 - s - - - Enable force safety - Force safety when the vehicle disarms - High Latency Datalink loss time threshold After this amount of seconds without datalink the data link lost mode triggers @@ -1100,18 +1176,32 @@ 60 s - - Home position enabled - Set home position automatically if possible. - true + + Home set horizontal threshold + The home position will be set if the estimated positioning accuracy is below the threshold. + 2 + 15 + m + 2 + 0.5 Allows setting the home position after takeoff If set to true, the autopilot is allowed to set its home position after takeoff The true home position is back-computed if a local position is estimate if available. If no local position is available, home is set to the current position. + + Home set vertical threshold + The home position will be set if the estimated positioning accuracy is below the threshold. + 5 + 25 + m + 2 + 0.5 + Imbalanced propeller failsafe mode Action the system takes when an imbalanced propeller is detected by the failure detector. See also FD_IMB_PROP_THR to set the failure threshold. + 0 1 Disabled @@ -1129,7 +1219,7 @@ Timeout for detecting a failure after takeoff - A non-zero, positive value specifies the timeframe in seconds within failure detector is allowed to disarm the vehicle if attitude exceeds the limits defined in FD_FAIL_P and FD_FAIL_R. The check is not executed for flight modes that do support acrobatic maneuvers, e.g: Acro (MC/FW) and Manual (FW). A zero or negative value means that the check is disabled. + A non-zero, positive value specifies the timeframe in seconds within failure detector is allowed to put the vehicle into a lockdown state if attitude exceeds the limits defined in FD_FAIL_P and FD_FAIL_R. The check is not executed for flight modes that do support acrobatic maneuvers, e.g: Acro (MC/FW) and Manual (FW). A zero or negative value means that the check is disabled. -1.0 5.0 s @@ -1138,6 +1228,8 @@ Battery failsafe mode Action the system takes at critical battery. See also BAT_CRIT_THR and BAT_EMERGEN_THR for definition of battery states. + 0 + 1 Warning Land mode @@ -1145,8 +1237,8 @@ - Enable Actuator Testing - If set, enables the actuator test interface via MAVLink (ACTUATOR_TEST), that allows spinning the motors and moving the servos for testing purposes. + Enable Motor Testing + If set, enables the motor test interface via MAVLink (DO_MOTOR_TEST), that allows spinning the motors for testing purposes. Time-out to wait when onboard computer connection is lost before warning about loss connection @@ -1155,10 +1247,23 @@ s 0.01 - + Set offboard loss failsafe mode The offboard loss failsafe will only be entered after a timeout, set by COM_OF_LOSS_T in seconds. + Disabled + Land mode + Hold mode + Return mode + Terminate + Lockdown + + + + Set offboard loss failsafe mode when RC is available + The offboard loss failsafe will only be entered after a timeout, set by COM_OF_LOSS_T in seconds. + + Disabled Position mode Altitude mode Manual @@ -1166,7 +1271,7 @@ Land mode Hold mode Terminate - Disarm + Lockdown @@ -1174,7 +1279,7 @@ Time-out to wait when offboard connection is lost before triggering offboard lost action - See COM_OBL_RC_ACT to configure action. + See COM_OBL_ACT and COM_OBL_RC_ACT to configure action. 0 60 s @@ -1185,10 +1290,10 @@ Position control navigation loss response - This sets the flight mode that will be used if navigation accuracy is no longer adequate for position control. If Altitude/Manual is selected: assume use of remote control after fallback. Switch to Altitude mode if a height estimate is available, else switch to MANUAL. If Land/Descend is selected: assume no use of remote control after fallback. Switch to Land mode if a height estimate is available, else switch to Descend. + This sets the flight mode that will be used if navigation accuracy is no longer adequate for position control. Navigation accuracy checks can be disabled using the CBRK_VELPOSERR parameter, but doing so will remove protection for all flight modes. - Altitude/Manual - Land/Descend + Altitude/Manual. Assume use of remote control after fallback. Switch to Altitude mode if a height estimate is available, else switch to MANUAL. + Land/Terminate. Assume no use of remote control after fallback. Switch to Land mode if a height estimate is available, else switch to TERMINATION. @@ -1198,21 +1303,28 @@ 100 s - + Horizontal position error threshold - This is the horizontal position error (EPH) threshold that will trigger a failsafe. The default is appropriate for a multicopter. Can be increased for a fixed-wing. If the previous position error was below this threshold, there is an additional factor of 2.5 applied (threshold for invalidation 2.5 times the one for validation). Set to -1 to disable. - -1 - 400 + This is the horizontal position error (EPH) threshold that will trigger a failsafe. The default is appropriate for a multicopter. Can be increased for a fixed-wing. m - 1 - - EPH threshold for RTL - Specify the threshold for triggering a warning for low local position accuracy. Additionally triggers a RTL if currently in Mission or Loiter mode. Local position has to be still declared valid, which is most of all depending on COM_POS_FS_EPH. Use this feature on systems with dead-reckoning capabilites (e.g. fixed-wing vehicles with airspeed sensor) to improve the user notification and failure mitigation when flying in GNSS-denied areas. Set to -1 to disable. - -1 - 1000 + + Vertical position error threshold + This is the vertical position error (EPV) threshold that will trigger a failsafe. The default is appropriate for a multicopter. Can be increased for a fixed-wing. m + + Loss of position probation gain factor + This sets the rate that the loss of position probation time grows when position checks are failing. The default value has been optimised for rotary wing applications. For fixed wing applications a value of 0 should be used. + true + + + Loss of position probation delay at takeoff + The probation delay is the number of seconds that the EKF innovation checks need to pass for the position to be declared good after it has been declared bad. The probation delay will be reset to this parameter value when takeoff is detected. After takeoff, if position checks are passing, the probation delay will reduce by one second for every lapsed second of valid position down to a minimum of 1 second. If position checks are failing, the probation delay will increase by COM_POS_FS_GAIN seconds for every lapsed second up to a maximum of 100 seconds. The default value has been optimised for rotary wing applications. For fixed wing applications, a value of 1 should be used. + 1 + 100 + s + Required number of redundant power modules This configures a check to verify the expected number of 5V rail power supplies are present. By default only one is expected. Note: CBRK_SUPPLY_CHK disables all power checks including this one. @@ -1228,14 +1340,13 @@ Always - - Set command after a quadchute - - Warning only - Return mode - Land mode - Hold mode - + + Delay between RC loss and configured reaction + RC signal not updated -> still use data for COM_RC_LOSS_T seconds Consider RC signal lost -> wait COM_RCL_ACT_T seconds on the spot waiting to regain signal React with failsafe action NAV_RCL_ACT A zero value disables the delay. + 0.0 + 25.0 + s + 3 RC loss exceptions @@ -1257,7 +1368,7 @@ RC control input mode - A value of 0 enables RC transmitter control (only). A valid RC transmitter calibration is required. A value of 1 allows joystick control only. RC input handling and the associated checks are disabled. A value of 2 allows either RC Transmitter or Joystick input. The first valid input is used, will fallback to other sources if the input stream becomes invalid. A value of 3 allows either input from RC or joystick. The first available source is selected and used until reboot. A value of 4 ignores any stick input. + The default value of 0 requires a valid RC transmitter setup. Setting this to 1 allows joystick control and disables RC input handling and the associated checks. A value of 2 will generate RC control data from manual input received via MAVLink instead of directly forwarding the manual input data. 0 4 @@ -1269,8 +1380,8 @@ - Manual control loss timeout - The time in seconds without a new setpoint from RC or Joystick, after which the connection is considered lost. This must be kept short as the vehicle will use the last supplied setpoint until the timeout triggers. + RC loss time threshold + After this amount of seconds without RC connection it's considered lost and not used anymore 0 35 s @@ -1279,7 +1390,7 @@ Enable RC stick override of auto and/or offboard modes - When RC stick override is enabled, moving the RC sticks more than COM_RC_STICK_OV immediately gives control back to the pilot by switching to Position mode and if position is unavailable Altitude mode. Note: Only has an effect on multicopters, and VTOLs in multicopter mode. + When RC stick override is enabled, moving the RC sticks more than COM_RC_STICK_OV immediately gives control back to the pilot by switching to Position mode and if position is unavailable Altitude mode. Note: Only has an effect on multicopters, and VTOLs in multicopter mode. This parameter is not considered in case of a GPS failure (Descend flight mode), where stick override is always enabled. 0 3 @@ -1296,14 +1407,9 @@ 0 0.05 - - Enforced delay between arming and further navigation - The minimal time from arming the motors until moving the vehicle is possible is COM_SPOOLUP_TIME seconds. Goal: - Motors and propellers spool up to idle speed before getting commanded to spin faster - Timeout for ESCs and smart batteries to successfulyy do failure checks e.g. for stuck rotors before the vehicle is off the ground - 0 - 30 - s - 1 - 0.1 + + Rearming grace period + Re-arming grace allows to rearm the drone with manual command without running prearmcheck during 5 s after disarming. Action after TAKEOFF has been accepted @@ -1313,57 +1419,23 @@ Mission (if valid) - - Enable throw-start - Allows to start the vehicle by throwing it into the air. - - - Minimum speed for the throw start - When the throw launch is enabled, the drone will only arm after this speed is exceeded before detecting the freefall. This is a safety feature to ensure the drone does not turn on after accidental drop or a rapid movement before the throw. Set to 0 to disable. - 0 - m/s - 1 - 0.1 - - + Horizontal velocity error threshold - This is the horizontal velocity error (EVH) threshold that will trigger a failsafe. The default is appropriate for a multicopter. Can be increased for a fixed-wing. If the previous velocity error was below this threshold, there is an additional factor of 2.5 applied (threshold for invalidation 2.5 times the one for validation). - 0 + This is the horizontal velocity error (EVH) threshold that will trigger a failsafe. The default is appropriate for a multicopter. Can be increased for a fixed-wing. m/s - 1 - - - High wind speed failsafe threshold - Wind speed threshold above which an automatic failsafe action is triggered. Failsafe action can be specified with COM_WIND_MAX_ACT. - -1 - m/s - 1 - 0.1 - - - High wind failsafe mode - Action the system takes when a wind speed above the specified threshold is detected. See COM_WIND_MAX to set the failsafe threshold. If enabled, it is not possible to resume the mission or switch to any auto mode other than RTL or Land if this threshold is exceeded. Taking over in any manual mode is still possible. - 1 - - None - Warning - Hold - Return - Terminate - Land - Wind speed warning threshold - A warning is triggered if the currently estimated wind speed is above this value. Warning is sent periodically (every 1 minute). Set to -1 to disable. + A warning is triggered if the currently estimated wind speed is above this value. Warning is sent periodically (every 1min). A negative value disables the feature. -1 + 30 m/s 1 0.1 - Set GCS connection loss failsafe mode - The GCS connection loss failsafe will only be entered after a timeout, set by COM_DL_LOSS_T in seconds. Once the timeout occurs the selected action will be executed. + Set data link loss failsafe mode + The data link loss failsafe will only be entered after a timeout, set by COM_DL_LOSS_T in seconds. Once the timeout occurs the selected action will be executed. 0 6 @@ -1372,7 +1444,7 @@ Return mode Land mode Terminate - Disarm + Lockdown @@ -1385,94 +1457,32 @@ Return mode Land mode Terminate - Disarm + Lockdown - - - UAVCAN/CAN v1 bus bitrate - 20000 - 1000000 - bit/s - true + + + Airfield home alt + Altitude of airfield home waypoint + -50 + m + 1 + 0.5 - - Cyphal - 0 - Cyphal disabled. 1 - Enables Cyphal - true + + Airfield home Lat + Latitude of airfield home waypoint + -900000000 + 900000000 + deg*1e7 - - Cyphal Node ID - Read the specs at http://uavcan.org to learn more about Node ID. - -1 - 125 - true - - - actuator_outputs uORB over Cyphal publication port ID - -1 - 6143 - - - UDRAL battery parameters subscription port ID - -1 - 6143 - - - UDRAL battery status subscription port ID - -1 - 6143 - - - UDRAL battery energy source subscription port ID - -1 - 6143 - - - ESC 0 subscription port ID - -1 - 6143 - - - Cyphal ESC publication port ID - -1 - 6143 - - - GPS 0 subscription port ID - -1 - 6143 - - - GPS 1 subscription port ID - -1 - 6143 - - - Cyphal GPS publication port ID - -1 - 6143 - - - Cyphal legacy battery port ID - -1 - 6143 - - - Cyphal Servo publication port ID - -1 - 6143 - - - sensor_gps uORB over Cyphal subscription port ID - -1 - 6143 - - - sensor_gps uORB over Cyphal publication port ID - -1 - 6143 + + Airfield home Lon + Longitude of airfield home waypoint + -1800000000 + 1800000000 + deg*1e7 @@ -1486,7 +1496,7 @@ Maximum IMU accel magnitude that allows IMU bias learning - If the magnitude of the IMU accelerometer vector exceeds this value, the EKF accel bias state estimation will be inhibited. This reduces the adverse effect of high manoeuvre accelerations and IMU nonlinerity and scale factor errors on the accel bias estimates. + If the magnitude of the IMU accelerometer vector exceeds this value, the EKF delta velocity state estimation will be inhibited. This reduces the adverse effect of high manoeuvre accelerations and IMU nonlinerity and scale factor errors on the delta velocity bias estimates. 20.0 200.0 m/s^2 @@ -1494,7 +1504,7 @@ Maximum IMU gyro angular rate magnitude that allows IMU bias learning - If the magnitude of the IMU angular rate vector exceeds this value, the EKF accel bias state estimation will be inhibited. This reduces the adverse effect of rapid rotation rates and associated errors on the accel bias estimates. + If the magnitude of the IMU angular rate vector exceeds this value, the EKF delta velocity state estimation will be inhibited. This reduces the adverse effect of rapid rotation rates and associated errors on the delta velocity bias estimates. 2.0 20.0 rad/s @@ -1502,14 +1512,14 @@ Accelerometer bias learning limit - The ekf accel bias states will be limited to within a range equivalent to +- of this value. + The ekf delta velocity bias states will be limited to within a range equivalent to +- of this value. 0.0 0.8 m/s^2 2 - Time constant used by acceleration and angular rate magnitude checks used to inhibit accel bias learning + Time constant used by acceleration and angular rate magnitude checks used to inhibit delta velocity bias learning The vector magnitude of angular rate and acceleration used to check if learning should be inhibited has a peak hold filter applied to it with an exponential decay. This parameter controls the time constant of the decay. 0.1 1.0 @@ -1530,6 +1540,24 @@ m/s^2 2 + + Integer bitmask controlling data fusion and aiding methods + Set bits in the following positions to enable: 0 : Set to true to use GPS data if available 1 : Set to true to use optical flow data if available 2 : Set to true to inhibit IMU delta velocity bias estimation 3 : Set to true to enable vision position fusion 4 : Set to true to enable vision yaw fusion. Cannot be used if bit position 7 is true. 5 : Set to true to enable multi-rotor drag specific force fusion 6 : set to true if the EV observations are in a non NED reference frame and need to be rotated before being used 7 : Set to true to enable GPS yaw fusion. Cannot be used if bit position 4 is true. + 0 + 511 + true + + use GPS + use optical flow + inhibit IMU bias estimation + vision position fusion + vision yaw fusion + multi-rotor drag fusion + rotate external vision + GPS yaw fusion + vision velocity fusion + + 1-sigma tilt angle uncertainty after gravity vector alignment 0.0 @@ -1540,7 +1568,7 @@ Airspeed fusion threshold - Airspeed data is fused for wind estimation if above this threshold. Set to 0 to disable airspeed fusion. For reliable wind estimation both sideslip (see EKF2_FUSE_BETA) and airspeed fusion should be enabled. Only applies to fixed-wing vehicles (or VTOLs in fixed-wing mode). + A value of zero will deactivate airspeed fusion. Any other positive value will determine the minimum airspeed which will still be fused. Set to about 90% of the vehicles stall speed. Both airspeed fusion and sideslip fusion must be active for the EKF to continue navigating after loss of GPS. Use EKF2_FUSE_BETA to activate sideslip fusion. 0.0 m/s 1 @@ -1561,17 +1589,13 @@ true - Auxiliary Velocity Estimate (e.g from a landing target) delay relative to IMU measurements + Auxillary Velocity Estimate (e.g from a landing target) delay relative to IMU measurements 0 300 ms 1 true - - Barometric sensor height aiding - If this parameter is enabled then the estimator will make use of the barometric height measurements to estimate its height in addition to other height sources (if activated). - Barometer measurement delay relative to IMU measurements 0 @@ -1596,7 +1620,7 @@ X-axis ballistic coefficient used for multi-rotor wind estimation - This parameter controls the prediction of drag produced by bluff body drag along the forward/reverse axis when flying a multi-copter which enables estimation of wind drift when enabled by the EKF2_DRAG_CTRL parameter. The drag produced by this effect scales with speed squared. The predicted drag from the rotors is specified separately by the EKF2_MCOEF parameter. Set this parameter to zero to turn off the bluff body drag model for this axis. + This parameter controls the prediction of drag produced by bluff body drag along the forward/reverse axis when flying a multi-copter which enables estimation of wind drift when enabled by the EKF2_AID_MASK parameter. The EKF2_BCOEF_X paraemter should be set initially to the ratio of mass / projected frontal area and adjusted together with EKF2_MCOEF to minimise variance of the X-axis drag specific force innovation sequence. The drag produced by this effect scales with speed squared. Set this parameter to zero to turn off the bluff body drag model for this axis. The predicted drag from the rotors is specified separately by the EKF2_MCOEF parameter. 0.0 200.0 kg/m^2 @@ -1604,7 +1628,7 @@ Y-axis ballistic coefficient used for multi-rotor wind estimation - This parameter controls the prediction of drag produced by bluff body drag along the right/left axis when flying a multi-copter, which enables estimation of wind drift when enabled by the EKF2_DRAG_CTRL parameter. The drag produced by this effect scales with speed squared. The predicted drag from the rotors is specified separately by the EKF2_MCOEF parameter. Set this parameter to zero to turn off the bluff body drag model for this axis. + This parameter controls the prediction of drag produced by bluff body drag along the right/left axis when flying a multi-copter, which enables estimation of wind drift when enabled by the EKF2_AID_MASK parameter. The EKF2_BCOEF_Y paraemter should be set initially to the ratio of mass / projected side area and adjusted together with EKF2_MCOEF to minimise variance of the Y-axis drag specific force innovation sequence. The drag produced by this effect scales with speed squared. et this parameter to zero to turn off the bluff body drag model for this axis. The predicted drag from the rotors is specified separately by the EKF2_MCOEF parameter. 0.0 200.0 kg/m^2 @@ -1636,10 +1660,6 @@ use declination as an observation - - Multirotor wind estimation selection - Activate wind speed estimation using specific-force measurements and a drag model defined by EKF2_BCOEF_[XY] and EKF2_MCOEF. Only use on vehicles that have their thrust aligned with the Z axis and no thrust in the XY plane. - Specific drag force observation noise variance used by the multi-rotor specific drag force model Increasing this makes the multi-rotor wind estimates adjust more slowly. @@ -1655,7 +1675,7 @@ m/s 1 - + Measurement noise for vision angle observations used to lower bound or replace the uncertainty included in the message 0.05 rad @@ -1687,19 +1707,7 @@ m/s 2 - - External vision (EV) sensor aiding - Set bits in the following positions to enable: 0 : Horizontal position fusion 1 : Vertical position fusion 2 : 3D velocity fusion 3 : Yaw - 0 - 15 - - Horizontal position - Vertical position - 3D velocity - Yaw - - - + Vision Position Estimator delay relative to IMU measurements 0 300 @@ -1707,13 +1715,9 @@ 1 true - - External vision (EV) noise mode - If set to 0 (default) the measurement noise is taken from the vision message and the EV noise parameters are used as a lower bound. If set to 1 the observation noise is set from the parameters directly, - - EV reported variance (parameter lower bound) - EV noise parameters - + + Whether to set the external vision observation noise from the parameter or from vision message + If set to true the observation noise is set from the parameters directly, if set to false the measurement noise is taken from the vision message and the parameter are used as a lower bound. X position of VI sensor focal point in body frame (forward axis with origin relative to vehicle centre of gravity) @@ -1730,16 +1734,9 @@ m 3 - - External vision (EV) minimum quality (optional) - External vision will only be started and fused if the quality metric is above this threshold. The quality metric is a completely optional field provided by some VIO systems. - 0 - 100 - 1 - - Enable synthetic sideslip fusion - For reliable wind estimation both sideslip and airspeed fusion (see EKF2_ARSP_THR) should be enabled. Only applies to fixed-wing vehicles (or VTOLs in fixed-wing mode). Note: side slip fusion is currently not supported for tailsitters. + Boolean determining if synthetic sideslip measurements should fused + A value of 1 indicates that fusion is active Both sideslip fusion and airspeed fusion must be active for the EKF to continue navigating after loss of GPS. Use EKF2_ARSP_THR to activate airspeed fusion. 1-sigma IMU gyro switch-on bias @@ -1767,7 +1764,7 @@ Integer bitmask controlling GPS checks - Set bits to 1 to enable checks. Checks enabled by the following bit positions 0 : Minimum required sat count set by EKF2_REQ_NSATS 1 : Maximum allowed PDOP set by EKF2_REQ_PDOP 2 : Maximum allowed horizontal position error set by EKF2_REQ_EPH 3 : Maximum allowed vertical position error set by EKF2_REQ_EPV 4 : Maximum allowed speed error set by EKF2_REQ_SACC 5 : Maximum allowed horizontal position rate set by EKF2_REQ_HDRIFT. This check will only run when the vehicle is on ground and stationary. 6 : Maximum allowed vertical position rate set by EKF2_REQ_VDRIFT. This check will only run when the vehicle is on ground and stationary. 7 : Maximum allowed horizontal speed set by EKF2_REQ_HDRIFT. This check will only run when the vehicle is on ground and stationary. 8 : Maximum allowed vertical velocity discrepancy set by EKF2_REQ_VDRIFT + Set bits to 1 to enable checks. Checks enabled by the following bit positions 0 : Minimum required sat count set by EKF2_REQ_NSATS 1 : Maximum allowed PDOP set by EKF2_REQ_PDOP 2 : Maximum allowed horizontal position error set by EKF2_REQ_EPH 3 : Maximum allowed vertical position error set by EKF2_REQ_EPV 4 : Maximum allowed speed error set by EKF2_REQ_SACC 5 : Maximum allowed horizontal position rate set by EKF2_REQ_HDRIFT. This check will only run when the vehicle is on ground and stationary. Detecton of the stationary condition is controlled by the EKF2_MOVE_TEST parameter. 6 : Maximum allowed vertical position rate set by EKF2_REQ_VDRIFT. This check will only run when the vehicle is on ground and stationary. Detecton of the stationary condition is controlled by the EKF2_MOVE_TEST parameter. 7 : Maximum allowed horizontal speed set by EKF2_REQ_HDRIFT. This check will only run when the vehicle is on ground and stationary. Detecton of the stationary condition is controlled by the EKF2_MOVE_TEST parameter. 8 : Maximum allowed vertical velocity discrepancy set by EKF2_REQ_VDRIFT 0 511 @@ -1782,18 +1779,6 @@ Max vertical velocity discrepancy (EKF2_REQ_VDRIFT) - - GNSS sensor aiding - Set bits in the following positions to enable: 0 : Longitude and latitude fusion 1 : Altitude fusion 2 : 3D velocity fusion 3 : Dual antenna heading fusion - 0 - 15 - - Lon/lat - Altitude - 3D velocity - Dual antenna heading - - GPS measurement delay relative to IMU measurements 0 @@ -1818,56 +1803,41 @@ 3 - Gate size for GNSS position fusion + Gate size for GPS horizontal position fusion Sets the number of standard deviations used by the innovation consistency test. 1.0 SD 1 - Measurement noise for GNSS position + Measurement noise for gps position 0.01 10.0 m 2 - Gate size for GNSS velocity fusion + Gate size for GPS velocity fusion Sets the number of standard deviations used by the innovation consistency test. 1.0 SD 1 - Measurement noise for GNSS velocity + Measurement noise for gps horizontal velocity 0.01 5.0 m/s 2 - - Accelerometer measurement noise for gravity based observations - 0.1 - 10.0 - m/s^2 - 2 - Default value of true airspeed used in EKF-GSF AHRS calculation - If no airspeed measurements are available, the EKF-GSF AHRS calculation will assume this value of true airspeed when compensating for centripetal acceleration during turns. Set to zero to disable centripetal acceleration compensation during fixed wing flight modes. + If no airspeed measurements are avalable, the EKF-GSF AHRS calculation will assume this value of true airspeed when compensating for centripetal acceleration during turns. Set to zero to disable centripetal acceleration compensation during fixed wing flight modes. 0.0 100.0 m/s 1 - - Gyro bias learning limit - The ekf gyro bias states will be limited to within a range equivalent to +- of this value. - 0.0 - 0.4 - rad/s - 3 - Process noise for IMU rate gyro bias prediction 0.0 @@ -1883,7 +1853,7 @@ 4 - Gate size for heading fusion + Gate size for magnetic heading fusion Sets the number of standard deviations used by the innovation consistency test. 1.0 SD @@ -1896,9 +1866,9 @@ rad 2 - - Determines the reference source of height data used by the EKF - When multiple height sources are enabled at the same time, the height estimate will always converge towards the reference height source selected by this parameter. The range sensor and vision options should only be used when for operation over a flat surface as the local NED origin will move up and down with ground level. + + Determines the primary source of height data used by the EKF + The range sensor option should only be used when for operation over a flat surface as the local NED origin will move up and down with ground level. true Barometric pressure @@ -1907,16 +1877,6 @@ Vision - - IMU control - 0 - 7 - - Gyro Bias - Accel Bias - Gravity vector fusion - - X position of IMU in body frame (forward axis with origin relative to vehicle centre of gravity) m @@ -1934,7 +1894,7 @@ Horizontal acceleration threshold used by automatic selection of magnetometer fusion method - This parameter is used when the magnetometer fusion method is set automatically (EKF2_MAG_TYPE = 0). If the filtered horizontal acceleration is greater than this parameter value, then the EKF will use 3-axis magnetometer fusion. + This parameter is used when the magnetometer fusion method is set automatically (EKF2_MAG_TYPE = 0). If the filtered horizontal acceleration is greater than this parameter value, then the EKF will use 3-axis magnetomer fusion. 0.0 5.0 m/s^2 @@ -1947,32 +1907,9 @@ gauss/s 6 - + Magnetic field strength test selection - Bitmask to set which check is used to decide whether the magnetometer data is valid. If GNSS data is received, the magnetic field is compared to a World Magnetic Model (WMM), otherwise an average value is used. This check is useful to reject occasional hard iron disturbance. Set bits to 1 to enable checks. Checks enabled by the following bit positions 0 : Magnetic field strength. Set tolerance using EKF2_MAG_CHK_STR 1 : Magnetic field inclination. Set tolerance using EKF2_MAG_CHK_INC 2 : Wait for GNSS to find the theoretical strength and inclination using the WMM - 0 - 7 - - Strength (EKF2_MAG_CHK_STR) - Inclination (EKF2_MAG_CHK_INC) - Wait for WMM - - - - Magnetic field inclination check tolerance - Maximum allowed deviation from the expected magnetic field inclination to pass the check. - 0.0 - 90.0 - deg - 1 - - - Magnetic field strength check tolerance - Maximum allowed deviation from the expected magnetic field strength to pass the check. - 0.0 - 1.0 - gauss - 2 + When set, the EKF checks the strength of the magnetic field to decide whether the magnetometer data is valid. If GPS data is received, the magnetic field is compared to a World Magnetic Model (WMM), otherwise an average value is used. This check is useful to reject occasional hard iron disturbance. Magnetic declination @@ -2010,37 +1947,55 @@ Type of magnetometer fusion - Integer controlling the type of magnetometer fusion used - magnetic heading or 3-component vector. The fusion of magnetometer data as a three component vector enables vehicle body fixed hard iron errors to be learned, but requires a stable earth field. If set to 'Automatic' magnetic heading fusion is used when on-ground and 3-axis magnetic field fusion in-flight with fallback to magnetic heading fusion if there is insufficient motion to make yaw or magnetic field states observable. If set to 'Magnetic heading' magnetic heading fusion is used at all times. If set to 'None' the magnetometer will not be used under any circumstance. If no external source of yaw is available, it is possible to use post-takeoff horizontal movement combined with GPS velocity measurements to align the yaw angle with the timer required (depending on the amount of movement and GPS data quality). + Integer controlling the type of magnetometer fusion used - magnetic heading or 3-component vector. The fuson of magnetomer data as a three component vector enables vehicle body fixed hard iron errors to be learned, but requires a stable earth field. If set to 'Automatic' magnetic heading fusion is used when on-ground and 3-axis magnetic field fusion in-flight with fallback to magnetic heading fusion if there is insufficient motion to make yaw or magnetic field states observable. If set to 'Magnetic heading' magnetic heading fusion is used at all times If set to '3-axis' 3-axis field fusion is used at all times. If set to 'VTOL custom' the behaviour is the same as 'Automatic', but if fusing airspeed, magnetometer fusion is only allowed to modify the magnetic field states. This can be used by VTOL platforms with large magnetic field disturbances to prevent incorrect bias states being learned during forward flight operation which can adversely affect estimation accuracy after transition to hovering flight. If set to 'MC custom' the behaviour is the same as 'Automatic, but if there are no earth frame position or velocity observations being used, the magnetometer will not be used. This enables vehicles to operate with no GPS in environments where the magnetic field cannot be used to provide a heading reference. Prior to flight, the yaw angle is assumed to be constant if movement tests controlled by the EKF2_MOVE_TEST parameter indicate that the vehicle is static. This allows the vehicle to be placed on the ground to learn the yaw gyro bias prior to flight. If set to 'None' the magnetometer will not be used under any circumstance. If no external source of yaw is available, it is possible to use post-takeoff horizontal movement combined with GPS velocity measurements to align the yaw angle with the timer required (depending on the amount of movement and GPS data quality). Other external sources of yaw may be used if selected via the EKF2_AID_MASK parameter. true Automatic Magnetic heading + 3-axis + VTOL custom + MC custom None - + Yaw rate threshold used by automatic selection of magnetometer fusion method - This parameter is used when the magnetometer fusion method is set automatically (EKF2_MAG_TYPE = 0). If the filtered yaw rate is greater than this parameter value, then the EKF will use 3-axis magnetometer fusion. + This parameter is used when the magnetometer fusion method is set automatically (EKF2_MAG_TYPE = 0). If the filtered yaw rate is greater than this parameter value, then the EKF will use 3-axis magnetomer fusion. 0.0 1.0 rad/s 2 - Propeller momentum drag coefficient used for multi-rotor wind estimation - This parameter controls the prediction of drag produced by the propellers when flying a multi-copter, which enables estimation of wind drift when enabled by the EKF2_DRAG_CTRL parameter. The drag produced by this effect scales with speed not speed squared and is produced because some of the air velocity normal to the propeller axis of rotation is lost when passing through the rotor disc. This changes the momentum of the flow which creates a drag reaction force. When comparing un-ducted propellers of the same diameter, the effect is roughly proportional to the area of the propeller blades when viewed side on and changes with propeller selection. Momentum drag is significantly higher for ducted rotors. To account for the drag produced by the body which scales with speed squared, see documentation for the EKF2_BCOEF_X and EKF2_BCOEF_Y parameters. Set this parameter to zero to turn off the momentum drag model for both axis. + propeller momentum drag coefficient used for multi-rotor wind estimation + This parameter controls the prediction of drag produced by the propellers when flying a multi-copter, which enables estimation of wind drift when enabled by the EKF2_AID_MASK parameter. The drag produced by this effect scales with speed not speed squared and is produced because some of the air velocity normal to the propeller axis of rotation is lost when passing through the rotor disc. This changes the momentum of the flow which creates a drag reaction force. When comparing un-ducted propellers of the same diameter, the effect is roughly proportional to the area of the propeller blades when viewed side on and changes with propeller selection. Momentum drag is significantly higher for ducted rotors. For example, if flying at 10 m/s at sea level conditions produces a rotor induced drag deceleration of 1.5 m/s/s when the multi-copter levelled to zero roll/pitch, then EKF2_MCOEF would be set to 0.15 = (1.5/10.0). Set EKF2_MCOEF to a positive value to enable wind estimation using this drag effect. To account for the drag produced by the body which scales with speed squared, see documentation for the EKF2_BCOEF_X and EKF2_BCOEF_Y parameters. The EKF2_MCOEF parameter should be adjusted together with EKF2_BCOEF_X and EKF2_BCOEF_Y to minimise variance of the X and y axis drag specific force innovation sequences. 0 1.0 1/s 2 + + Minimum time of arrival delta between non-IMU observations before data is downsampled + Baro and Magnetometer data will be averaged before downsampling, other data will be point sampled resulting in loss of information. + 10 + 50 + ms + true + Expected range finder reading when on ground - If the vehicle is on ground, is not moving as determined by the motion test and the range finder is returning invalid or no data, then an assumed range value of EKF2_MIN_RNG will be used by the terrain estimator so that a terrain height estimate is available at the start of flight in situations where the range finder may be inside its minimum measurements distance when on ground. + If the vehicle is on ground, is not moving as determined by the motion test controlled by EKF2_MOVE_TEST and the range finder is returning invalid or no data, then an assumed range value of EKF2_MIN_RNG will be used by the terrain estimator so that a terrain height estimate is avilable at the start of flight in situations where the range finder may be inside its minimum measurements distance when on ground. 0.01 m 2 + + Vehicle movement test threshold + Scales the threshold tests applied to IMU data used to determine if the vehicle is static or moving. See parameter descriptions for EKF2_GPS_CHECK and EKF2_MAG_TYPE for further information on the functionality affected by this parameter. + 0.1 + 10.0 + 1 + Multi-EKF IMUs Maximum number of IMUs to use for Multi-EKF. Set 0 to disable. Requires SENS_IMU_MODE 0. @@ -2068,10 +2023,6 @@ 10000000 us - - Optical flow aiding - Enable optical flow fusion. - Optical flow measurement delay relative to IMU measurements Assumes measurement is timestamped at trailing edge of integration period @@ -2117,12 +2068,7 @@ 3 - Optical Flow data will only be used in air if the sensor reports a quality metric >= EKF2_OF_QMIN - 0 - 255 - - - Optical Flow data will only be used on the ground if the sensor reports a quality metric >= EKF2_OF_QMIN_GND + Optical Flow data will only be used if the sensor reports a quality metric >= EKF2_OF_QMIN 0 255 @@ -2161,13 +2107,6 @@ 0.5 2 - - EKF prediction period - EKF prediction period in microseconds. This should ideally be an integer multiple of the IMU time delta. Actual filter update will be an integer multiple of IMU update. - 1000 - 20000 - us - Required EPH to use GPS 2 @@ -2222,9 +2161,17 @@ m/s 2 + + Range sensor aid + If this parameter is enabled then the estimator will make use of the range finder measurements to estimate it's height even if range sensor is not the primary height source. It will only do so if conditions for range measurement fusion are met. This enables the range finder to be used during low speed and low altitude operation, eg takeoff and landing, where baro interference from rotor wash is excessive and can corrupt EKF state estimates. It is intended to be used where a vertical takeoff and landing is performed, and horizontal flight does not occur until above EKF2_RNG_A_HMAX. If vehicle motion causes repeated switching between the primary height sensor and range finder, an offset in the local position origin can accumulate. Also range finder measurements are less reliable and can experience unexpected errors. For these reasons, if accurate control of height relative to ground is required, it is recommended to use the MPC_ALT_MODE parameter instead, unless baro errors are severe enough to cause problems with landing and takeoff. + + Range aid disabled + Range aid enabled + + - Maximum absolute altitude (height above ground level) allowed for conditional range aid mode - If the vehicle absolute altitude exceeds this value then the estimator will not fuse range measurements to estimate its height. This only applies when conditional range aid mode is activated (EKF2_RNG_CTRL = 1). + Maximum absolute altitude (height above ground level) allowed for range aid mode + If the vehicle absolute altitude exceeds this value then the estimator will not fuse range measurements to estimate it's height. This only applies when range aid mode is activated (EKF2_RNG_AID = enabled). 1.0 10.0 m @@ -2237,21 +2184,12 @@ SD - Maximum horizontal velocity allowed for conditional range aid mode - If the vehicle horizontal speed exceeds this value then the estimator will not fuse range measurements to estimate its height. This only applies when conditional range aid mode is activated (EKF2_RNG_CTRL = 1). + Maximum horizontal velocity allowed for range aid mode + If the vehicle horizontal speed exceeds this value then the estimator will not fuse range measurements to estimate it's height. This only applies when range aid mode is activated (EKF2_RNG_AID = enabled). 0.1 2 m/s - - Range sensor height aiding - WARNING: Range finder measurements are less reliable and can experience unexpected errors. For these reasons, if accurate control of height relative to ground is required, it is recommended to use the MPC_ALT_MODE parameter instead, unless baro errors are severe enough to cause problems with landing and takeoff. To en-/disable range finder for terrain height estimation, use EKF2_TERR_MASK instead. If this parameter is enabled then the estimator will make use of the range finder measurements to estimate its height in addition to other height sources (if activated). Range sensor aiding can be enabled (i.e.: always use) or set in "conditional" mode. Conditional mode: This enables the range finder to be used during low speed (< EKF2_RNG_A_VMAX) and low altitude (< EKF2_RNG_A_HMAX) operation, eg takeoff and landing, where baro interference from rotor wash is excessive and can corrupt EKF state estimates. It is intended to be used where a vertical takeoff and landing is performed, and horizontal flight does not occur until above EKF2_RNG_A_HMAX. - - Disable range fusion - Enabled (conditional mode) - Enabled - - Range finder measurement delay relative to IMU measurements 0 @@ -2267,13 +2205,6 @@ SD 1 - - Gate size used for range finder kinematic consistency check - To be used, the time derivative of the distance sensor measurements projected on the vertical axis needs to be statistically consistent with the estimated vertical velocity of the drone. Decrease this value to make the filter more robust against range finder faulty data (stuck, reflections, ...). Note: tune the range finder noise parameters (EKF2_RNG_NOISE and EKF2_RNG_SFE) before tuning this gate. - 0.1 - 5.0 - SD - Measurement noise for range finder fusion 0.01 @@ -2309,7 +2240,7 @@ s - Range finder range dependent noise scaler + Range finder range dependant noise scaler Specifies the increase in range finder noise with range. 0.0 0.2 @@ -2341,9 +2272,9 @@ Enable synthetic magnetometer Z component measurement - Use for vehicles where the measured body Z magnetic field is subject to strong magnetic interference. For magnetic heading fusion the magnetometer Z measurement will be replaced by a synthetic value calculated using the knowledge of the 3D magnetic field vector at the location of the drone. Therefore, this parameter will only have an effect if the global position of the drone is known. For 3D mag fusion the magnetometer Z measurement will simply be ignored instead of fusing the synthetic value. + Use for vehicles where the measured body Z magnetic field is subject to strong magnetic interference. For magnetic heading fusion the magnetometer Z measurement will be replaced by a synthetic value calculated using the knowledge of the 3D magnetic field vector at the location of the drone. Therefore, this parameter will only have an effect if the global position of the drone is known. For 3D mag fusion the magnetometer Z measurement will simply be ingored instead of fusing the synthetic value. - + Gate size for TAS fusion Sets the number of standard deviations used by the innovation consistency test. 1.0 @@ -2385,12 +2316,11 @@ m/s 1 - - Process noise spectral density for wind velocity prediction - When unaided, the wind estimate uncertainty (1-sigma, in m/s) increases by this amount every second. + + Process noise for wind velocity prediction 0.0 1.0 - m/s^2/sqrt(Hz) + m/s^2 3 @@ -2424,564 +2354,33 @@ - - Maximum manual pitch angle - Applies to both directions in all manual modes with attitude stabilization but without altitude control - 0.0 - 90.0 - deg - 1 - 0.5 - - - Maximum manual roll angle - Applies to both directions in all manual modes with attitude stabilization - 0.0 - 90.0 - deg - 1 - 0.5 - - - Maximum manually added yaw rate - This is the maximally added yaw rate setpoint from the yaw stick in any attitude controlled flight mode. It is added to the yaw rate setpoint generated by the controller for turn coordination. - 0 - deg/s - 1 - 0.5 - - - Pitch setpoint offset (pitch at level flight) - An airframe specific offset of the pitch setpoint in degrees, the value is added to the pitch setpoint and should correspond to the pitch at typical cruise speed of the airframe. - -90.0 - 90.0 - deg - 1 - 0.5 - - - Maximum negative / down pitch rate setpoint - 0.0 - 180 - deg/s - 1 - 0.5 - - - Maximum positive / up pitch rate setpoint - 0.0 - 180 - deg/s - 1 - 0.5 - - - Attitude pitch time constant - This defines the latency between a pitch step input and the achieved setpoint (inverse to a P gain). Smaller systems may require smaller values. - 0.2 - 1.0 - s - 2 - 0.05 - - - Maximum roll rate setpoint - 0.0 - 180 - deg/s - 1 - 0.5 - - - Attitude Roll Time Constant - This defines the latency between a roll step input and the achieved setpoint (inverse to a P gain). Smaller systems may require smaller values. - 0.2 - 1.0 - s - 2 - 0.05 - - - Spoiler descend setting - 0.0 - 1.0 - norm - 2 - 0.01 - - - Spoiler landing setting - 0.0 - 1.0 - norm - 2 - 0.01 - - - Wheel steering rate feed forward - 0.0 - 10 - %/rad/s - 2 - 0.05 - - - Wheel steering rate integrator gain - This gain defines how much control response will result out of a steady state error. It trims any constant error. - 0.0 - 10 - %/rad - 3 - 0.005 - - - Wheel steering rate integrator limit - 0.0 - 1.0 - 2 - 0.05 - - - Wheel steering rate proportional gain - This defines how much the wheel steering input will be commanded depending on the current body angular rate error. - 0.0 - 10 - %/rad/s - 3 - 0.005 - - - Enable wheel steering controller - Only enabled during automatic runway takeoff and landing. In all manual modes the wheel is directly controlled with yaw stick. - - - Maximum wheel steering rate - This limits the maximum wheel steering rate the controller will output (in degrees per second). - 0.0 - 90.0 - deg/s - 1 - 0.5 - - - Maximum yaw rate setpoint - 0.0 - 180 - deg/s - 1 - 0.5 - - - - - Bit mask to set the automatic landing abort conditions - Terrain estimation: bit 0: Abort if terrain is not found bit 1: Abort if terrain times out (after a first successful measurement) The last estimate is always used as ground, whether the last valid measurement or the land waypoint, depending on the selected abort criteria, until an abort condition is entered. If FW_LND_USETER == 0, these bits are ignored. TODO: Extend automatic abort conditions e.g. glide slope tracking error (horizontal and vertical) - 0 - 3 - - Abort if terrain is not found (only applies to mission landings) - Abort if terrain times out (after a first successful measurement) - - - - Landing airspeed - The calibrated airspeed setpoint during landing. If set <= 0.0, landing airspeed = FW_AIRSPD_MIN by default. - -1.0 - m/s - 1 - 0.1 - - - Maximum landing slope angle - Typically the desired landing slope angle when landing configuration (flaps, airspeed) is enabled. Set this value within the vehicle's performance limits. - 1.0 - 15.0 - deg - 1 - 0.5 - - - Early landing configuration deployment - When disabled, the landing configuration (flaps, landing airspeed, etc.) is only activated on the final approach to landing. When enabled, it is already activated when entering the final loiter-down (loiter-to-alt) waypoint before the landing approach. - - - Landing flare altitude (relative to landing altitude) - NOTE: max(FW_LND_FLALT, FW_LND_FL_TIME * |z-velocity|) is taken as the flare altitude - 0.0 - m - 1 - 0.5 - - - Flare, maximum pitch - Maximum pitch during flare, a positive sign means nose up Applied once flaring is triggered - 0 - 45.0 - deg - 1 - 0.5 - - - Flare, minimum pitch - Minimum pitch during flare, a positive sign means nose up Applied once flaring is triggered - -5 - 15.0 - deg - 1 - 0.5 - - - Landing flare sink rate - TECS will attempt to control the aircraft to this sink rate via pitch angle (throttle killed during flare) - 0.0 - 2 - m/s - 2 - 0.1 - - - Landing flare time - Multiplied by the descent rate to calculate a dynamic altitude at which to trigger the flare. NOTE: max(FW_LND_FLALT, FW_LND_FL_TIME * descent rate) is taken as the flare altitude - 0.1 - 5.0 - s - 1 - 0.1 - - - Landing touchdown nudging option - Approach angle nudging: shifts the touchdown point laterally while keeping the approach entrance point constant Approach path nudging: shifts the touchdown point laterally along with the entire approach path This is useful for manually adjusting the landing point in real time when map or GNSS errors cause an offset from the desired landing vector. Nuding is done with yaw stick, constrained to FW_LND_TD_OFF (in meters) and the direction is relative to the vehicle heading (stick deflection to the right = land point moves to the right as seen by the vehicle). - 0 - 2 - - Disable nudging - Nudge approach angle - Nudge approach path - - - - Maximum lateral position offset for the touchdown point - 0.0 - 10.0 - m - 1 - 1 - - - Landing touchdown time (since flare start) - This is the time after the start of flaring that we expect the vehicle to touch the runway. At this time, a 0.5s clamp down ramp will engage, constraining the pitch setpoint to RWTO_PSP. If enabled, ensure that RWTO_PSP is configured appropriately for full gear contact on ground roll. Set to -1.0 to disable touchdown clamping. E.g. it may not be desirable to clamp on belly landings. The touchdown time will be constrained to be greater than or equal to the flare time (FW_LND_FL_TIME). - -1.0 - 5.0 - s - 1 - 0.1 - - - Altitude time constant factor for landing - Set this parameter to less than 1.0 to make TECS react faster to altitude errors during landing than during normal flight. During landing, the TECS altitude time constant (FW_T_ALT_TC) is multiplied by this value. - 0.2 - 1.0 - - 0.1 - - - Use terrain estimation during landing. This is critical for detecting when to flare, and should be enabled if possible - NOTE: terrain estimate is currently solely derived from a distance sensor. If enabled and no measurement is found within a given timeout, the landing waypoint altitude will be used OR the landing will be aborted, depending on the criteria set in FW_LND_ABORT. If disabled, FW_LND_ABORT terrain based criteria are ignored. - 0 - 2 - - Disable the terrain estimate - Use the terrain estimate to trigger the flare (only) - Calculate landing glide slope relative to the terrain estimate - - - - - - Height (AGL) of the wings when the aircraft is on the ground - This is used to constrain a minimum altitude below which we keep wings level to avoid wing tip strike. It's safer to give a slight margin here (> 0m) - 0.0 - m - 1 - 1 - - - The aircraft's wing span (length from tip to tip) - This is used for limiting the roll setpoint near the ground. (if multiple wings, take the longest span) - 0.1 - m - 1 - 0.1 - - - - - Trigger time - Launch is detected when acceleration in body forward direction is above FW_LAUN_AC_THLD for FW_LAUN_AC_T seconds. - 0.0 - 5.0 - s - 2 - 0.05 - - - Trigger acceleration threshold - Launch is detected when acceleration in body forward direction is above FW_LAUN_AC_THLD for FW_LAUN_AC_T seconds. - 0 - m/s^2 - 1 - 0.5 - - - Fixed-wing launch detection - Enables automatic launch detection based on measured acceleration. Use for hand- or catapult-launched vehicles. Not compatible with runway takeoff. - - - Motor delay - Start the motor(s) this amount of seconds after launch is detected. - 0.0 - 10.0 - s - 1 - 0.5 - - - - - NPFG damping ratio - Damping ratio of the NPFG control law. - 0.10 - 1.00 - 2 - 0.01 - - - Enable minimum forward ground speed maintaining excess wind handling logic - - - Maximum, minimum forward ground speed for track keeping in excess wind - The maximum value of the minimum forward ground speed that may be commanded by the track keeping excess wind handling logic. Commanded in full at the normalized track error fraction of the track error boundary and reduced to zero on track. - 0.0 - 10.0 - m/s - 1 - 0.5 - - - Enable automatic lower bound on the NPFG period - Avoids limit cycling from a too aggressively tuned period/damping combination. If set to false, also disables the upper bound NPFG_PERIOD_UB. - - - NPFG period - Period of the NPFG control law. - 1.0 - 100.0 - s - 1 - 0.1 - - - Period safety factor - Multiplied by period for conservative minimum period bounding (when period lower bounding is enabled). 1.0 bounds at marginal stability. - 1.0 - 10.0 - 1 - 0.1 - - - Roll time constant - Time constant of roll controller command / response, modeled as first order delay. Used to determine lower period bound. Setting zero disables automatic period bounding. - 0.00 - 2.00 - s - 2 - 0.05 - - - NPFG switch distance multiplier - Multiplied by the track error boundary to determine when the aircraft switches to the next waypoint and/or path segment. Should be less than 1. - 0.1 - 1.0 - 2 - 0.01 - - - Enable track keeping excess wind handling logic - - - Enable automatic upper bound on the NPFG period - Adapts period to maintain track keeping in variable winds and path curvature. - - - Enable wind excess regulation - Disabling this parameter further disables all other airspeed incrementation options. - - - - - Path navigation roll slew rate limit - The maximum change in roll angle setpoint per second. - 0 - deg/s - 0 - 1 - - - RC stick configuration fixed-wing - Set RC/joystick configuration for fixed-wing manual position and altitude controlled flight. - 0 - 3 - - Alternative stick configuration (height rate on throttle stick, airspeed on pitch stick) - Enable airspeed setpoint via sticks in altitude and position flight mode - - - - Maximum roll angle - The maximum roll angle setpoint for setpoint for a height-rate or altitude controlled mode. - 35.0 - 65.0 - deg - 1 - 0.5 - - - Minimum pitch during takeoff - -5.0 - 30.0 - deg - 1 - 0.5 - - - - - Maximum Airspeed (CAS) - The maximal airspeed (calibrated airspeed) the user is able to command. - 0.5 - m/s - 1 - 0.5 - - - Minimum Airspeed (CAS) - The minimal airspeed (calibrated airspeed) the user is able to command. Further, if the airspeed falls below this value, the TECS controller will try to increase airspeed more aggressively. Has to be set according to the vehicle's stall speed (which should be set in FW_AIRSPD_STALL), with some margin between the stall speed and minimum airspeed. This value corresponds to the desired minimum speed with the default load factor (level flight, default weight), and is automatically adpated to the current load factor (calculated from roll setpoint and WEIGHT_GROSS/WEIGHT_BASE). - 0.5 - m/s - 1 - 0.5 - - - Stall Airspeed (CAS) - The stall airspeed (calibrated airspeed) of the vehicle. It is used for airspeed sensor failure detection and for the control surface scaling airspeed limits. - 0.5 - m/s - 1 - 0.5 - - - Trim (Cruise) Airspeed - The trim CAS (calibrated airspeed) of the vehicle. If an airspeed controller is active, this is the default airspeed setpoint that the controller will try to achieve. This value corresponds to the trim airspeed with the default load factor (level flight, default weight). - 0.5 - m/s - 1 - 0.5 - - - Service ceiling - Altitude in standard atmosphere at which the vehicle in normal configuration (WEIGHT_BASE) is still able to achieve a maximum climb rate of 0.5m/s at maximum throttle (FW_THR_MAX). Used to compensate for air density in FW_T_CLMB_MAX. Set negative to disable. - -1.0 - m - 0 - 1.0 - - - Throttle at max airspeed - Required throttle (at sea level, standard atmosphere) for level flight at maximum airspeed FW_AIRSPD_MAX Set to 0 to disable mapping of airspeed to trim throttle. - 0 - 1 - 2 - 0.01 - - - Throttle at min airspeed - Required throttle (at sea level, standard atmosphere) for level flight at minimum airspeed FW_AIRSPD_MIN Set to 0 to disable mapping of airspeed to trim throttle below FW_AIRSPD_TRIM. - 0 - 1 - 2 - 0.01 - - - Trim throttle - Required throttle (at sea level, standard atmosphere) for level flight at FW_AIRSPD_TRIM - 0.0 - 1.0 - norm - 2 - 0.01 - - - Maximum climb rate - This is the maximum calibrated climb rate that the aircraft can achieve with the throttle set to FW_THR_MAX and the airspeed set to the trim value. For electric aircraft make sure this number can be achieved towards the end of flight when the battery voltage has reduced. - 1.0 - 15.0 - m/s - 1 - 0.5 - - - Minimum descent rate - This is the minimum calibrated sink rate of the aircraft with the throttle set to THR_MIN and flown at the same airspeed as used to measure FW_T_CLMB_MAX. - 1.0 - 5.0 - m/s - 1 - 0.5 - - - Vehicle base weight - This is the weight of the vehicle at which it's performance limits were derived. A zero or negative value disables trim throttle and minimum airspeed compensation based on weight. - kg - 1 - 0.5 - - - Vehicle gross weight - This is the actual weight of the vehicle at any time. This value will differ from WEIGHT_BASE in case weight was added or removed from the base weight. Examples are the addition of payloads or larger batteries. A zero or negative value disables trim throttle and minimum airspeed compensation based on weight. - kg - 1 - 0.1 - - - - Acro body roll max rate setpoint - 10 + Acro body x max rate + This is the rate the controller is trying to achieve if the user applies full roll stick input in acro mode. + 45 720 deg - - Enable yaw rate controller in Acro - If this parameter is set to 1, the yaw rate controller is enabled in Fixed-wing Acro mode. Otherwise the pilot commands directly the yaw actuator. It is disabled by default because an active yaw rate controller will fight against the natural turn coordination of the plane. - - Acro body pitch max rate setpoint - 10 + Acro body y max rate + This is the body y rate the controller is trying to achieve if the user applies full pitch stick input in acro mode. + 45 720 deg - Acro body yaw max rate setpoint + Acro body z max rate + This is the body z rate the controller is trying to achieve if the user applies full yaw stick input in acro mode. 10 - 720 + 180 deg Airspeed mode - On vehicles without airspeed sensor this parameter can be used to enable flying without an airspeed reading + For small wings or VTOL without airspeed sensor this parameter can be used to enable flying without an airspeed reading - Use airspeed in controller - Do not use airspeed in controller + Normal (use airspeed if available) + Airspeed disabled @@ -2989,60 +2388,92 @@ This enables a logic that automatically adjusts the output of the rate controller to take into account the real torque produced by an aerodynamic control surface given the current deviation from the trim airspeed (FW_AIRSPD_TRIM). Enable when using aerodynamic control surfaces (e.g.: plane) Disable when using rotor wings (e.g.: autogyro) - Enable throttle scale by battery level - This compensates for voltage drop of the battery over time by attempting to normalize performance across the operating range of the battery. + Whether to scale throttle by battery power level + This compensates for voltage drop of the battery over time by attempting to normalize performance across the operating range of the battery. The fixed wing should constantly behave as if it was fully charged with reduced max thrust at lower battery percentages. i.e. if cruise speed is at 0.5 throttle at 100% battery, it will still be 0.5 at 60% battery. + + + Pitch trim increment for flaps configuration + This increment is added to the pitch trim whenever flaps are fully deployed. + -0.25 + 0.25 + 2 + 0.01 Pitch trim increment at maximum airspeed This increment is added to TRIM_PITCH when airspeed is FW_AIRSPD_MAX. - -0.5 - 0.5 + -0.25 + 0.25 2 0.01 Pitch trim increment at minimum airspeed This increment is added to TRIM_PITCH when airspeed is FW_AIRSPD_MIN. - -0.5 - 0.5 + -0.25 + 0.25 + 2 + 0.01 + + + Roll trim increment for flaps configuration + This increment is added to TRIM_ROLL whenever flaps are fully deployed. + -0.25 + 0.25 2 0.01 Roll trim increment at maximum airspeed This increment is added to TRIM_ROLL when airspeed is FW_AIRSPD_MAX. - -0.5 - 0.5 + -0.25 + 0.25 2 0.01 Roll trim increment at minimum airspeed This increment is added to TRIM_ROLL when airspeed is FW_AIRSPD_MIN. - -0.5 - 0.5 + -0.25 + 0.25 2 0.01 Yaw trim increment at maximum airspeed This increment is added to TRIM_YAW when airspeed is FW_AIRSPD_MAX. - -0.5 - 0.5 + -0.25 + 0.25 2 0.01 Yaw trim increment at minimum airspeed This increment is added to TRIM_YAW when airspeed is FW_AIRSPD_MIN. - -0.5 - 0.5 + -0.25 + 0.25 + 2 + 0.01 + + + Scale factor for flaperons + 0.0 + 1.0 + norm 2 0.01 Flaps setting during landing - Sets a fraction of full flaps during landing. Also applies to flaperons if enabled in the mixer/allocation. + Sets a fraction of full flaps (FW_FLAPS_SCL) during landing + 0.0 + 1.0 + norm + 2 + 0.01 + + + Scale factor for flaps 0.0 1.0 norm @@ -3051,13 +2482,22 @@ Flaps setting during take-off - Sets a fraction of full flaps during take-off. Also applies to flaperons if enabled in the mixer/allocation. + Sets a fraction of full flaps (FW_FLAPS_SCL) during take-off 0.0 1.0 norm 2 0.01 + + Max manual pitch + Max pitch for manual control in attitude stabilized mode + 0.0 + 90.0 + deg + 1 + 0.5 + Manual pitch scale Scale factor applied to the desired pitch actuator command in full manual mode. This parameter allows to adjust the throws of the control surfaces. @@ -3066,6 +2506,15 @@ 2 0.01 + + Max manual roll + Max roll for manual control in attitude stabilized mode + 0.0 + 90.0 + deg + 1 + 0.5 + Manual roll scale Scale factor applied to the desired roll actuator command in full manual mode. This parameter allows to adjust the throws of the control surfaces. @@ -3083,15 +2532,6 @@ 2 0.01 - - Pitch rate derivative gain - Pitch rate differential gain. - 0.0 - 10 - %/rad/s - 3 - 0.005 - Pitch rate feed forward Direct feed forward from rate setpoint to control surface output @@ -3103,14 +2543,16 @@ Pitch rate integrator gain - 0.0 - 10 + This gain defines how much control response will result out of a steady state error. It trims any constant error. + 0.005 + 0.5 %/rad 3 0.005 Pitch rate integrator limit + The portion of the integrator part in the control surface deflection is limited to this value 0.0 1.0 2 @@ -3118,30 +2560,59 @@ Pitch rate proportional gain - 0.0 - 10 + This defines how much the elevator input will be commanded depending on the current body angular rate error. + 0.005 + 1.0 %/rad/s 3 0.005 + + Pitch setpoint offset (pitch at level flight) + An airframe specific offset of the pitch setpoint in degrees, the value is added to the pitch setpoint and should correspond to the pitch at typical cruise speed of the airframe. + -90.0 + 90.0 + deg + 1 + 0.5 + + + Maximum negative / down pitch rate + This limits the maximum pitch down up angular rate the controller will output (in degrees per second). + 0.0 + 90.0 + deg/s + 1 + 0.5 + + + Maximum positive / up pitch rate + This limits the maximum pitch up angular rate the controller will output (in degrees per second). + 0.0 + 90.0 + deg/s + 1 + 0.5 + + + Attitude pitch time constant + This defines the latency between a pitch step input and the achieved setpoint (inverse to a P gain). Half a second is a good start value and fits for most average systems. Smaller systems may require smaller values, but as this will wear out servos faster, the value should only be decreased as needed. + 0.2 + 1.0 + s + 2 + 0.05 + Roll control to yaw control feedforward gain - This gain can be used to counteract the "adverse yaw" effect for fixed wings. When the plane enters a roll it will tend to yaw the nose out of the turn. This gain enables the use of a yaw actuator to counteract this effect. + This gain can be used to counteract the "adverse yaw" effect for fixed wings. When the plane enters a roll it will tend to yaw the nose out of the turn. This gain enables the use of a yaw actuator (rudder, airbrakes, ...) to counteract this effect. 0.0 1 0.01 - - Roll rate derivative gain - 0.0 - 10 - %/rad/s - 3 - 0.005 - Roll rate feed forward - Direct feed forward from rate setpoint to control surface output. + Direct feed forward from rate setpoint to control surface output. Use this to obtain a tigher response of the controller without introducing noise amplification. 0.0 10.0 %/rad/s @@ -3149,45 +2620,96 @@ 0.05 - Roll rate integrator gain - 0.0 - 10 + Roll rate integrator Gain + This gain defines how much control response will result out of a steady state error. It trims any constant error. + 0.005 + 0.2 %/rad - 2 - 0.01 + 3 + 0.005 - Roll integrator limit + Roll integrator anti-windup + The portion of the integrator part in the control surface deflection is limited to this value. 0.0 1.0 2 0.05 - Roll rate proportional gain - 0.0 - 10 + Roll rate proportional Gain + This defines how much the aileron input will be commanded depending on the current body angular rate error. + 0.005 + 1.0 %/rad/s 3 0.005 - - Spoiler input in manual flight - Chose source for manual setting of spoilers in manual flight modes. - - Disabled - Flaps channel - Aux1 - - - - Yaw rate derivative gain + + Maximum roll rate + This limits the maximum roll rate the controller will output (in degrees per second). 0.0 - 10 + 90.0 + deg/s + 1 + 0.5 + + + Attitude Roll Time Constant + This defines the latency between a roll step input and the achieved setpoint (inverse to a P gain). Half a second is a good start value and fits for most average systems. Smaller systems may require smaller values, but as this will wear out servos faster, the value should only be decreased as needed. + 0.4 + 1.0 + s + 2 + 0.05 + + + Wheel steering rate feed forward + Direct feed forward from rate setpoint to control surface output + 0.0 + 10.0 + %/rad/s + 2 + 0.05 + + + Wheel steering rate integrator gain + This gain defines how much control response will result out of a steady state error. It trims any constant error. + 0.005 + 0.5 + %/rad + 3 + 0.005 + + + Wheel steering rate integrator limit + The portion of the integrator part in the control surface deflection is limited to this value + 0.0 + 1.0 + 2 + 0.05 + + + Wheel steering rate proportional gain + This defines how much the wheel steering input will be commanded depending on the current body angular rate error. + 0.005 + 1.0 %/rad/s 3 0.005 + + Enable wheel steering controller + + + Maximum wheel steering rate + This limits the maximum wheel steering rate the controller will output (in degrees per second). + 0.0 + 90.0 + deg/s + 1 + 0.5 + Yaw rate feed forward Direct feed forward from rate setpoint to control surface output @@ -3199,14 +2721,16 @@ Yaw rate integrator gain + This gain defines how much control response will result out of a steady state error. It trims any constant error. 0.0 - 10 + 50.0 %/rad 1 0.5 Yaw rate integrator limit + The portion of the integrator part in the control surface deflection is limited to this value 0.0 1.0 2 @@ -3214,53 +2738,217 @@ Yaw rate proportional gain - 0.0 - 10 + This defines how much the rudder input will be commanded depending on the current body angular rate error. + 0.005 + 1.0 %/rad/s 3 0.005 - - - - Minimum groundspeed - The controller will increase the commanded airspeed to maintain this minimum groundspeed to the next waypoint. + + Maximum yaw rate + This limits the maximum yaw rate the controller will output (in degrees per second). 0.0 - 40 - m/s + 90.0 + deg/s 1 0.5 - - Maximum pitch angle - The maximum pitch angle setpoint setpoint for a height-rate or altitude controlled mode. + + + + Climbout Altitude difference + If the altitude error exceeds this parameter, the system will climb out with maximum throttle and minimum airspeed until it is closer than this distance to the desired altitude. Mostly used for takeoff waypoints / modes. Set to 0 to disable climbout mode (not recommended). + 0.0 + 150.0 + m + 1 + 0.5 + + + L1 damping + Damping factor for L1 control. + 0.6 + 0.9 + 2 + 0.05 + + + L1 period + Used to determine the L1 gain and controller time constant. This parameter is proportional to the L1 distance (which points ahead of the aircraft on the path it is following). A value of 18-25 seconds works for most aircraft. Shorten slowly during tuning until response is sharp without oscillation. + 7.0 + 50.0 + s + 1 + 0.5 + + + L1 controller roll slew rate limit + The maxium change in roll angle setpoint per second. + 0 + deg/s + 1 + + + Min. airspeed scaling factor for landing + Multiplying this factor with the minimum airspeed of the plane gives the target airspeed the landing approach. FW_AIRSPD_MIN * FW_LND_AIRSPD_SC + 1.0 + 1.5 + norm + 2 + 0.01 + + + Landing slope angle + 1.0 + 15.0 + deg + 1 + 0.5 + + + Early landing configuration deployment + When disabled, the landing configuration (flaps, landing airspeed, etc.) is only activated on the final approach to landing. When enabled, it is already activated when entering the final loiter-down (loiter-to-alt) waypoint before the landing approach. This shifts the (often large) altitude and airspeed errors caused by the configuration change away from the ground such that these are not so critical. It also gives the controller enough time to adapt to the new configuration such that the landing approach starts with a cleaner initial state. + + + Landing flare altitude (relative to landing altitude) + 0.0 + 25.0 + m + 1 + 0.5 + + + Flare, maximum pitch + Maximum pitch during flare, a positive sign means nose up Applied once FW_LND_FLALT is reached + 0 + 45.0 + deg + 1 + 0.5 + + + Flare, minimum pitch + Minimum pitch during flare, a positive sign means nose up Applied once FW_LND_FLALT is reached + 0 + 15.0 + deg + 1 + 0.5 + + + Landing heading hold horizontal distance + Set to 0 to disable heading hold. + 0 + 30.0 + m + 1 + 0.5 + + + FW_LND_HVIRT + 1.0 + 15.0 + m + 1 + 0.5 + + + Altitude time constant factor for landing + Set this parameter to less than 1.0 to make TECS react faster to altitude errors during landing than during normal flight (i.e. giving efficiency and low motor wear at high altitudes but control accuracy during landing). During landing, the TECS altitude time constant (FW_T_ALT_TC) is multiplied by this value. + 0.2 + 1.0 + + 0.1 + + + Landing throttle limit altitude (relative landing altitude) + Default of -1.0 lets the system default to applying throttle limiting at 2/3 of the flare altitude. + -1.0 + 30.0 + m + 1 + 0.5 + + + Use terrain estimate during landing + This is turned off by default and a waypoint or return altitude is normally used (or sea level for an arbitrary land position). + + + RC stick mapping fixed-wing + Set RC/joystick configuration for fixed-wing position and altitude controlled flight. + 0 + 1 + + Normal stick configuration (airspeed on throttle stick, altitude on pitch stick) + Alternative stick configuration (altitude on throttle stick, airspeed on pitch stick) + + + + Positive pitch limit + The maximum positive pitch the controller will output. 0.0 60.0 deg 1 0.5 - - Minimum pitch angle - The minimum pitch angle setpoint for a height-rate or altitude controlled mode. + + Negative pitch limit + The minimum negative pitch the controller will output. -60.0 0.0 deg 1 0.5 - + + Controller roll limit + The maximum roll the controller will output. + 35.0 + 65.0 + deg + 1 + 0.5 + + + Scale throttle by pressure change + Automatically adjust throttle to account for decreased air density at higher altitudes. Start with a scale factor of 1.0 and adjust for different propulsion systems. When flying without airspeed sensor this will help to keep a constant performance over large altitude ranges. The default value of 0 will disable scaling. + 0.0 + 10.0 + 1 + 0.1 + + + Cruise throttle + This is the throttle setting required to achieve the desired cruise speed. Most airframes have a value of 0.5-0.7. + 0.0 + 1.0 + norm + 2 + 0.01 + + Idle throttle - This is the minimum throttle while on the ground For aircraft with internal combustion engines, this parameter should be set above the desired idle rpm. For electric motors, idle should typically be set to zero. Note that in automatic modes, "landed" conditions will engage idle throttle. + This is the minimum throttle while on the ground For aircraft with internal combustion engine this parameter should be set above desired idle rpm. 0.0 0.4 norm 2 0.01 + + Throttle limit during landing below throttle limit altitude + During the flare of the autonomous landing process, this value will be set as throttle limit when the aircraft altitude is below FW_LND_TLALT. + 0.0 + 1.0 + norm + 2 + 0.01 + Throttle limit max - Maximum throttle limit in altitude controlled modes. Should be set accordingly to achieve FW_T_CLMB_MAX. + This is the maximum throttle % that can be used by the controller. For overpowered aircraft, this should be reduced to a value that provides sufficient thrust to climb at the maximum pitch angle PTCH_MAX. 0.0 1.0 norm @@ -3269,7 +2957,7 @@ Throttle limit min - Minimum throttle limit in altitude controlled modes. Usually set to 0 but can be increased to prevent the motor from stopping when descending, which can increase achievable descent rates. For aircraft with internal combustion engine this parameter should be set for desired idle rpm. + This is the minimum throttle % that can be used by the controller. For electric aircraft this will normally be set to zero, but can be set to a small non-zero value if a folding prop is fitted to prevent the prop from folding and unfolding repeatedly in-flight or to provide some aerodynamic drag from a turning prop to improve the descent rate. For aircraft with internal combustion engine this parameter should be set for desired idle rpm. 0.0 1.0 norm @@ -3281,16 +2969,101 @@ Maximum slew rate for the commanded throttle 0.0 1.0 - 2 - 0.01 - - Takeoff Airspeed - The calibrated airspeed setpoint TECS will stabilize to during the takeoff climbout. If set <= 0.0, FW_AIRSPD_MIN will be set by default. - -1.0 + + Minimum pitch during takeoff + -5.0 + 30.0 + deg + 1 + 0.5 + + + + + Launch detection + + + Catapult accelerometer threshold + LAUN_CAT_A for LAUN_CAT_T serves as threshold to trigger launch detection. + 0 + m/s^2 + 1 + 0.5 + + + Motor delay + Delay between starting attitude control and powering up the throttle (giving throttle control to the controller) Before this timespan is up the throttle will be set to FW_THR_IDLE, set to 0 to deactivate + 0.0 + 10.0 + s + 1 + 0.5 + + + Maximum pitch before the throttle is powered up (during motor delay phase) + This is an extra limit for the maximum pitch which is imposed in the phase before the throttle turns on. This allows to limit the maximum pitch angle during a bungee launch (make the launch less steep). + 0.0 + 45.0 + deg + 1 + 0.5 + + + Catapult time threshold + LAUN_CAT_A for LAUN_CAT_T serves as threshold to trigger launch detection. + 0.0 + 5.0 + s + 2 + 0.05 + + + + + Maximum Airspeed (CAS) + If the CAS (calibrated airspeed) is above this value, the TECS controller will try to decrease airspeed more aggressively. + 0.5 + 40 m/s 1 - 0.1 + 0.5 + + + Minimum Airspeed (CAS) + The minimal airspeed (calibrated airspeed) the user is able to command. Further, if the airspeed falls below this value, the TECS controller will try to increase airspeed more aggressively. + 0.5 + 40 + m/s + 1 + 0.5 + + + Stall Airspeed (CAS) + The stall airspeed (calibrated airspeed) of the vehicle. It is used for airspeed sensor failure detection and for the control surface scaling airspeed limits. + 0.5 + 40 + m/s + 1 + 0.5 + + + Cruise Airspeed (CAS) + The trim CAS (calibrated airspeed) of the vehicle. If an airspeed controller is active, this is the default airspeed setpoint that the controller will try to achieve if no other airspeed setpoint sources are present (e.g. through non-centered RC sticks). + 0.5 + 40 + m/s + 1 + 0.5 + + + Minimum groundspeed + The controller will increase the commanded airspeed to maintain this minimum groundspeed to the next waypoint. + 0.0 + 40 + m/s + 1 + 0.5 Altitude error time constant @@ -3298,6 +3071,15 @@ 2 0.5 + + Maximum climb rate + This is the best climb rate that the aircraft can achieve with the throttle set to THR_MAX and the airspeed set to the default value. For electric aircraft make sure this number can be achieved towards the end of flight when the battery voltage has reduced. The setting of this parameter can be checked by commanding a positive altitude change of 100m in loiter, RTL or guided mode. If the throttle required to climb is close to THR_MAX and the aircraft is maintaining airspeed, then this parameter is set correctly. If the airspeed starts to reduce, then the parameter is set to high, and if the throttle demand required to climb and maintain speed is noticeably less than FW_THR_MAX, then either FW_T_CLMB_MAX should be increased or FW_THR_MAX reduced. + 1.0 + 15.0 + m/s + 1 + 0.5 + Default target climbrate The default rate at which the vehicle will climb in autonomous modes to achieve altitude setpoints. In manual modes this defines the maximum rate at which the altitude setpoint can be increased. @@ -3322,7 +3104,7 @@ 2 0.05 - + Integrator gain throttle This is the integrator gain on the throttle part of the control loop. Increasing this gain increases the speed at which speed and height offsets are trimmed out, but reduces damping and increases overshoot. Set this value to zero to completely disable all integrator action. 0.0 @@ -3362,6 +3144,15 @@ 1 0.5 + + Minimum descent rate + This is the sink rate of the aircraft with the throttle set to THR_MIN and flown at the same airspeed as used to measure FW_T_CLMB_MAX. + 1.0 + 5.0 + m/s + 1 + 0.5 + Default target sinkrate The default rate at which the vehicle will sink in autonomous modes to achieve altitude setpoints. In manual modes this defines the maximum rate at which the altitude setpoint can be decreased. @@ -3373,38 +3164,20 @@ Speed <--> Altitude priority - This parameter adjusts the amount of weighting that the pitch control applies to speed vs height errors. Setting it to 0.0 will cause the pitch control to control height and ignore speed errors. This will normally improve height accuracy but give larger airspeed errors. Setting it to 2.0 will cause the pitch control loop to control speed and ignore height errors. This will normally reduce airspeed errors, but give larger height errors. The default value of 1.0 allows the pitch control to simultaneously control height and speed. Set to 2 for gliders. + This parameter adjusts the amount of weighting that the pitch control applies to speed vs height errors. Setting it to 0.0 will cause the pitch control to control height and ignore speed errors. This will normally improve height accuracy but give larger airspeed errors. Setting it to 2.0 will cause the pitch control loop to control speed and ignore height errors. This will normally reduce airspeed errors, but give larger height errors. The default value of 1.0 allows the pitch control to simultaneously control height and speed. Note to Glider Pilots - set this parameter to 2.0 (The glider will adjust its pitch angle to maintain airspeed, ignoring changes in height). 0.0 2.0 1 1.0 - - Airspeed rate measurement standard deviation for airspeed filter - This is the measurement standard deviation for the airspeed rate used in the airspeed filter in TECS. - 0.01 + + Complementary filter "omega" parameter for speed + This is the cross-over frequency (in radians/second) of the complementary filter used to fuse longitudinal acceleration and airspeed to obtain an improved airspeed estimate. Increasing this frequency weights the solution more towards use of the airspeed sensor, whilst reducing it weights the solution more towards use of the accelerometer data. + 1.0 10.0 - m/s^2 - 2 - 0.1 - - - Process noise standard deviation for the airspeed rate in the airspeed filter - This is the process noise standard deviation in the airspeed filter filter defining the noise in the airspeed rate for the constant airspeed rate model. This is used to define how much the airspeed and the airspeed rate are filtered. The smaller the value the more the measurements are smoothed with the drawback for delays. - 0.01 - 10.0 - m/s^2 - 2 - 0.1 - - - Airspeed measurement standard deviation for airspeed filter - This is the measurement standard deviation for the airspeed used in the airspeed filter in TECS. - 0.01 - 10.0 - m/s - 2 - 0.1 + rad/s + 1 + 0.5 Specific total energy rate first order filter time constant @@ -3414,6 +3187,14 @@ 2 0.01 + + True airspeed rate first order filter time constant + This filter is applied to the true airspeed rate. + 0.0 + 2 + 2 + 0.01 + True airspeed error time constant 2.0 @@ -3437,46 +3218,8 @@ 1 0.5 - - Wind-based airspeed scaling factor - Multiplying this factor with the current absolute wind estimate gives the airspeed offset added to the minimum airspeed setpoint limit. This helps to make the system more robust against disturbances (turbulence) in high wind. Only applies to AUTO flight mode. - 0 - 2 - 0.01 - - - Enable Actuator Failure check - If enabled, failure detector will verify that for motors, a minimum amount of ESC current per throttle level is being consumed. Otherwise this indicates an motor failure. - true - - - Motor Failure Current/Throttle Threshold - Motor failure triggers only below this current value - 0.0 - 50.0 - A/% - 2 - 1 - - - Motor Failure Throttle Threshold - Motor failure triggers only above this throttle value. - 0.0 - 1.0 - norm - 2 - 0.01 - - - Motor Failure Time Threshold - Motor failure triggers only if the throttle threshold and the current to throttle threshold are violated for this time. - 10 - 10000 - ms - 100 - Enable checks on ESCs that report their arming state If enabled, failure detector will verify that all the ESCs have successfully armed when the vehicle has transitioned to the armed state. Timeout for receiving an acknowledgement from the ESCs is 0.3s, if no feedback is received the failure detector will auto disarm the vehicle. @@ -3495,7 +3238,7 @@ FailureDetector Max Pitch Maximum pitch angle before FailureDetector triggers the attitude_failure flag. The flag triggers flight termination (if @CBRK_FLIGHTTERM = 0), which sets outputs to their failsafe values. On takeoff the flag triggers lockdown (irrespective of @CBRK_FLIGHTTERM), which disarms motors but does not set outputs to failsafe values. Setting this parameter to 0 disables the check - 0 + 60 180 deg @@ -3510,7 +3253,7 @@ FailureDetector Max Roll Maximum roll angle before FailureDetector triggers the attitude_failure flag. The flag triggers flight termination (if @CBRK_FLIGHTTERM = 0), which sets outputs to their failsafe values. On takeoff the flag triggers lockdown (irrespective of @CBRK_FLIGHTTERM), which disarms motors but does not set outputs to failsafe values. Setting this parameter to 0 disables the check - 0 + 60 180 deg @@ -3530,58 +3273,32 @@ 1 - - - Maximum radius of orbit - 1.0 - 10000.0 - m - 1 - 0.5 - - - - Altitude control mode - Maintain altitude or track target's altitude. When maintaining the altitude, the drone can crash into terrain when the target moves uphill. When tracking the target's altitude, the follow altitude FLW_TGT_HT should be high enough to prevent terrain collisions due to GPS inaccuracies of the target. - - 2D Tracking: Maintain constant altitude relative to home and track XY position only - 2D + Terrain: Maintain constant altitude relative to terrain below and track XY position - 3D Tracking: Track target's altitude (be aware that GPS altitude bias usually makes this useless) - - - + Distance to follow target from The distance in meters to follow the target at 1.0 m - - Follow Angle setting in degrees - Angle to follow the target from. 0.0 Equals straight in front of the target's course (direction of motion) and the angle increases in clockwise direction, meaning Right-side would be 90.0 degrees while Left-side is -90.0 degrees Note: When the user force sets the angle out of the min/max range, it will be wrapped (e.g. 480 -> 120) in the range to gracefully handle the out of range. - -180.0 - 180.0 + + Side to follow target from + The side to follow the target from (front right = 0, behind = 1, front = 2, front left = 3) + 0 + 3 - - Follow target height - Following height above the target - 8.0 - m - - - Maximum tangential velocity setting for generating the follow orbit trajectory - This is the maximum tangential velocity the drone will circle around the target whenever an orbit angle setpoint changes. Higher value means more aggressive follow behavior. - 0.0 - 20.0 - 1 - - - Responsiveness to target movement in Target Estimator - lower values increase the responsiveness to changing position, but also ignore less noise + + Dynamic filtering algorithm responsiveness to target movement + lower numbers increase the responsiveness to changing long lat but also ignore less noise 0.0 1.0 2 + + Minimum follow target altitude + The minimum height in meters relative to home for following a target + 8.0 + m + @@ -3602,7 +3319,7 @@ Protocol for Main GPS Select the GPS protocol over serial. Auto-detection will probe all protocols, and thus is a bit slower. 0 - 7 + 5 true Auto detect @@ -3612,7 +3329,6 @@ Emlid Reach Femtomes NMEA (generic) - Septentrio (SBF) @@ -3633,7 +3349,7 @@ Protocol for Secondary GPS Select the GPS protocol over serial. Auto-detection will probe all protocols, and thus is a bit slower. 0 - 6 + 5 true Auto detect @@ -3656,41 +3372,6 @@ RTCM output (PPK) - - Pitch offset for dual antenna GPS - Vertical offsets can be compensated for by adjusting the Pitch offset (Septentrio). Note that this can be interpreted as the "roll" angle in case the antennas are aligned along the perpendicular axis. This occurs in situations where the two antenna ARPs may not be exactly at the same height in the vehicle reference frame. Since pitch is defined as the right-handed rotation about the vehicle Y axis, a situation where the main antenna is mounted lower than the aux antenna (assuming the default antenna setup) will result in a positive pitch. - -90 - 90 - deg - 3 - true - - - Enable sat info (if available) - Enable publication of satellite info (ORB_ID(satellite_info)) if possible. Not available on MTK. - true - - - u-blox F9P UART2 Baudrate - Select a baudrate for the F9P's UART2 port. In GPS_UBX_MODE 1, 2, and 3, the F9P's UART2 port is configured to send/receive RTCM corrections. Set this to 57600 if you want to attach a telemetry radio on UART2. - 0 - B/s - true - - - u-blox protocol configuration for interfaces - 0 - 32 - true - - Enable I2C input protocol UBX - Enable I2C input protocol NMEA - Enable I2C input protocol RTCM3X - Enable I2C output protocol UBX - Enable I2C output protocol NMEA - Enable I2C output protocol RTCM3X - - u-blox GPS dynamic platform model u-blox receivers support different dynamic platform models to adjust the navigation engine to the expected application environment. @@ -3707,7 +3388,7 @@ u-blox GPS Mode - Select the u-blox configuration setup. Most setups will use the default, including RTK and dual GPS without heading. If rover has RTCM corrections from a static base (or other static correction source) coming in on UART2, then select Mode 5. The Heading mode requires 2 F9P devices to be attached. The main GPS will act as rover and output heading information, whereas the secondary will act as moving base. Modes 1 and 2 require each F9P UART1 to be connected to the Autopilot. In addition, UART2 on the F9P units are connected to each other. Modes 3 and 4 only require UART1 on each F9P connected to the Autopilot or Can Node. UART RX DMA is required. RTK is still possible with this setup. + Select the u-blox configuration setup. Most setups will use the default, including RTK and dual GPS without heading. The Heading mode requires 2 F9P devices to be attached. The main GPS will act as rover and output heading information, whereas the secondary will act as moving base. Modes 1 and 2 require each F9P UART1 to be connected to the Autopilot. In addition, UART2 on the F9P units are connected to each other. Modes 3 and 4 only require UART1 on each F9P connected to the Autopilot or Can Node. UART RX DMA is required. RTK is still possible with this setup. 0 1 true @@ -3717,16 +3398,15 @@ Moving Base (UART1 Connected To Autopilot, UART2 Connected To Rover) Heading (Rover With Moving Base UART1 Connected to Autopilot Or Can Node At 921600) Moving Base (Moving Base UART1 Connected to Autopilot Or Can Node At 921600) - Rover with Static Base on UART2 (similar to Default, except coming in on UART2) Heading/Yaw offset for dual antenna GPS - Heading offset angle for dual antenna GPS setups that support heading estimation. Set this to 0 if the antennas are parallel to the forward-facing direction of the vehicle and the rover (or Unicore primary) antenna is in front. The offset angle increases clockwise. Set this to 90 if the rover (or Unicore primary) antenna is placed on the right side of the vehicle and the moving base antenna is on the left side. (Note: the Unicore primary antenna is the one connected on the right as seen from the top). + Heading offset angle for dual antenna GPS setups that support heading estimation. Set this to 0 if the antennas are parallel to the forward-facing direction of the vehicle and the first antenna is in front. The offset angle increases clockwise. Set this to 90 if the first antenna is placed on the right side and the second on the left side of the vehicle. 0 360 deg - 3 + 0 true @@ -3738,7 +3418,7 @@ Geofence violation action - Note: Setting this value to 4 enables flight termination, which will kill the vehicle on violation of the fence. + Note: Setting this value to 4 enables flight termination, which will kill the vehicle on violation of the fence. Due to the inherent danger of this, this function is disabled using a software circuit breaker, which needs to be reset to 0 to really shut down the system. 0 5 @@ -3750,26 +3430,39 @@ Land mode - - Max horizontal distance from Home - Maximum horizontal distance in meters the vehicle can be from Home before triggering a geofence action. Disabled if 0. + + Geofence altitude mode + Select which altitude (AMSL) source should be used for geofence calculations. + 0 + 1 + + Autopilot estimator global position altitude (GPS) + Raw barometer altitude (assuming standard atmospheric pressure) + + + + Geofence counter limit + Set how many subsequent position measurements outside of the fence are needed before geofence violation is triggered + -1 + 10 + 1 + + + Max horizontal distance in meters + Maximum horizontal distance in meters the vehicle can be from home before triggering a geofence action. Disabled if 0. 0 10000 m 1 - - Max vertical distance from Home - Maximum vertical distance in meters the vehicle can be from Home before triggering a geofence action. Disabled if 0. + + Max vertical distance in meters + Maximum vertical distance in meters the vehicle can be from home before triggering a geofence action. Disabled if 0. 0 10000 m 1 - - [EXPERIMENTAL] Use Pre-emptive geofence triggering - WARNING: This experimental feature may cause flyaways. Use at your own risk. Predict the motion of the vehicle and trigger the breach if it is determined that the current trajectory would result in a breach happening before the vehicle can make evasive maneuvers. The vehicle is then re-routed to a safe hold position (stop for multirotor, loiter for fixed wing). - Geofence source Select which position source should be used. Selecting GPS instead of global position makes sure that there is no dependence on the position estimator 0 = global position, 1 = GPS @@ -3806,14 +3499,6 @@ normalized_thrust/s 4 - - Max deviation from MPC_THR_HOVER - Defines the range of the hover thrust estimate around MPC_THR_HOVER. A value of 0.2 with MPC_THR_HOVER at 0.5 results in a range of [0.3, 0.7]. Set to a large value if the vehicle operates in varying physical conditions that affect the required hover thrust strongly (e.g. differently sized payloads). - 0.01 - 0.4 - normalized_thrust - 2 - Horizontal velocity threshold for sensitivity reduction Above this speed, the measurement noise is linearly increased to reduce the sensitivity of the estimator from biased measurement. Set to a low value on vehicles with large lifting surfaces. @@ -3861,14 +3546,6 @@ m/s 1 - - Fixed-wing land detection trigger time - Time the land conditions (speeds and acceleration) have to be satisfied to detect a landing. - 0.1 - s - 1 - true - Fixed-wing land detector: Max horizontal velocity threshold Maximum horizontal velocity allowed in the landed state. A factor of 0.7 is applied in case of airspeed-less flying (either because no sensor is present or sensor data got invalid in flight). @@ -3877,9 +3554,9 @@ m/s 1 - + Fixed-wing land detector: Max vertiacal velocity threshold - Maximum vertical velocity allowed in the landed state. + Maximum vertical velocity allowed in the landed state. A factor of 0.7 is applied in case of airspeed-less flying (either because no sensor is present or sensor data got invalid in flight). 0.1 20 m/s @@ -3893,13 +3570,21 @@ m/s^2 1 - + Ground effect altitude for multicopters The height above ground below which ground effect creates barometric altitude errors. A negative value indicates no ground effect. -1 m 2 + + Maximum altitude for multicopters + The system will obey this limit as a hard altitude limit. This setting will be consolidated with the GF_MAX_VER_DIST parameter. A negative value indicates no altitude limitation. + -1 + 10000 + m + 2 + Multicopter max rotation Maximum allowed angular velocity around each axis allowed in the landed state. @@ -3920,12 +3605,11 @@ m/s 1 - - Multicopter vertical velocity threshold - Vertical velocity threshold to detect landing. Has to be set lower than the expected minimal speed for landing, which is either MPC_LAND_SPEED or MPC_LAND_CRWL. This is enforced by an automatic check. - 0 + + Multicopter max climb rate + Maximum vertical velocity allowed in the landed state m/s - 2 + 1 Total flight time in microseconds @@ -3938,7 +3622,7 @@ 0 - + Acceleration uncertainty Variance of acceleration measurement used for landing target position prediction. Higher values results in tighter following of the measurements and more lenient outlier rejection @@ -3981,41 +3665,6 @@ 0.01 3 - - X Position of IRLOCK in body frame (forward) - m - 3 - true - - - Y Position of IRLOCK in body frame (right) - m - 3 - true - - - Z Position of IRLOCK in body frame (downward) - m - 3 - true - - - Rotation of IRLOCK sensor relative to airframe - Default orientation of Yaw 90° - -1 - 40 - true - - No rotation - Yaw 45° - Yaw 90° - Yaw 135° - Yaw 180° - Yaw 225° - Yaw 270° - Yaw 315° - - Initial landing target velocity uncertainty Initial variance of the relative landing target velocity in x and y directions @@ -4086,6 +3735,7 @@ Optical flow minimum quality threshold 0 255 + 0 Optical flow rotation (roll/pitch) noise gain @@ -4331,6 +3981,10 @@ Heartbeat message forwarding The mavlink heartbeat message will not be forwarded if this parameter is set to 'disabled'. The main reason for disabling heartbeats to be forwarded is because they confuse dronekit. + + Activate ODOMETRY loopback + If set, it gets the data from 'vehicle_visual_odometry' instead of 'vehicle_odometry' serving as a loopback of the received ODOMETRY messages on the Mavlink receiver. + MAVLink protocol version @@ -4358,29 +4012,39 @@ 250 true - + MAVLink airframe type - 0 - 22 + 1 + 27 Generic micro air vehicle Fixed wing aircraft Quadrotor Coaxial helicopter Normal helicopter with tail rotor + Ground installation + Operator control unit / ground control station Airship, controlled Free balloon, uncontrolled + Rocket Ground rover Surface vessel, boat, ship Submarine Hexarotor Octorotor Tricopter - VTOL Two-rotor Tailsitter - VTOL Quad-rotor Tailsitter - VTOL Tiltrotor - VTOL Standard (separate fixed rotors for hover and cruise flight) - VTOL Tailsitter + Flapping wing + Kite + Onboard companion controller + Two-rotor VTOL using control surfaces in vertical operation in addition. Tailsitter. + Quad-rotor VTOL using a V-shaped quad config in vertical operation. Tailsitter. + Tiltrotor VTOL + VTOL reserved 2 + VTOL reserved 3 + VTOL reserved 4 + VTOL reserved 5 + Onboard gimbal + Onboard ADSB peripheral @@ -4388,120 +4052,6 @@ If set to 1 incoming HIL GPS messages are parsed. - - - UART ESC baud rate - Default rate is 250Kbps, which is used in off-the-shelf MoadalAI ESC products. - bit/s - - - UART ESC configuration - Selects what type of UART ESC, if any, is being used. - 0 - 1 - true - - - Disabled - - VOXL ESC - - - - UART ESC Mode - Selects what type of mode is enabled, if any - 0 - 2 - true - - - None - - Turtle Mode enabled via AUX1 - - Turtle Mode enabled via AUX2 - - UART Passthrough Mode - - - - UART ESC RPM Max - Maximum RPM for ESC - rpm - - - UART ESC RPM Min - Minimum RPM for ESC - rpm - - - UART ESC ID 1 Spin Direction Flag - - - Default - - Reverse - - - - UART ESC ID 2 Spin Direction Flag - - - Default - - Reverse - - - - UART ESC ID 3 Spin Direction Flag - - - Default - - Reverse - - - - UART ESC ID 4 Spin Direction Flag - - - Default - - Reverse - - - - UART ESC Turtle Mode Cosphi - 0.000 - 1.000 - 10 - 0.001 - - - UART ESC Turtle Mode Crash Flip Motor Deadband - 0 - 100 - 10 - 1 - - - UART ESC Turtle Mode Crash Flip Motor expo - 0 - 100 - 10 - 1 - - - UART ESC Turtle Mode Crash Flip Motor STICK_MINF - 0.0 - 100.0 - 10 - 1.0 - - - UART ESC Turtle Mode Crash Flip Motor Percent - 1 - 100 - 10 - 1 - - - UART ESC verbose logging - 0 - 1 - true - - - Disabled - - Enabled - - - Enable online mag bias calibration @@ -4521,14 +4071,7 @@ Enable arm/disarm stick gesture This determines if moving the left stick to the lower right arms and to the lower left disarms the vehicle. - - - Trigger time for kill stick gesture - The timeout for holding the left stick to the lower left and the right stick to the lower right at the same time until the gesture kills the actuators one-way. A negative value disables the feature. - -1 - 15 - s - 2 + true @@ -4541,7 +4084,7 @@ GPS failure fixed roll angle - Roll in degrees during the loiter after the vehicle has lost GPS in an auto mode (e.g. mission or loiter). + Roll in degrees during the loiter after the vehicle has lost GPS in an auto mode (e.g. mission or loiter). Does only apply for fixed-wing vehicles or VTOLs with NAV_FORCE_VT set to 0. 0.0 30.0 deg @@ -4549,19 +4092,31 @@ 0.5 - Maximal horizontal distance from current position to first waypoint - Failsafe check to prevent running mission stored from previous flight at a new takeoff location. Set a value of zero or less to disable. The mission will not be started if the current waypoint is more distant than MIS_DIST_1WP from the current position. - -1 + Maximal horizontal distance from home to first waypoint + Failsafe check to prevent running mission stored from previous flight at a new takeoff location. Set a value of zero or less to disable. The mission will not be started if the current waypoint is more distant than MIS_DIST_1WP from the home position. + 0 10000 m 1 100 - - Landing abort min altitude - Minimum altitude above landing point that the vehicle will climb to after an aborted landing. Then vehicle will loiter in this altitude until further command is received. Only applies to fixed-wing vehicles. + + Maximal horizontal distance between waypoint + Failsafe check to prevent running missions which are way too big. Set a value of zero or less to disable. The mission will not be started if any distance between two subsequent waypoints is greater than MIS_DIST_WPS. 0 + 10000 m + 1 + 100 + + + Minimum Loiter altitude + This is the minimum altitude the system will always obey. The intent is to stay out of ground effect. set to -1, if there shouldn't be a minimum loiter altitude + -1 + 80 + m + 1 + 0.5 Enable yaw control of the mount. (Only affects multicopters and ROI mission items) @@ -4573,31 +4128,18 @@ Enable - - Timeout for a successful payload deployment acknowledgement - 0 - s - 1 - 1 - - Default take-off altitude - This is the relative altitude the system will take off to if not otherwise specified. + Take-off altitude + This is the minimum altitude the system will take off to. 0 + 80 m 1 0.5 - - Mission takeoff/landing required - Specifies if a mission has to contain a takeoff and/or mission landing. Validity of configured takeoffs/landings is checked independently of the setting here. - - No requirements - Require a takeoff - Require a landing - Require a takeoff and a landing - Require both a takeoff and a landing, or neither - + + Take-off waypoint required + If set, the mission feasibility checker will check for a takeoff waypoint on the mission. Max yaw error in degrees needed for waypoint heading acceptance @@ -4617,7 +4159,8 @@ 1 - Heading behavior in autonomous modes + Yaw mode + Specifies the heading in Auto. 0 4 @@ -4630,7 +4173,7 @@ Acceptance Radius - Default acceptance radius, overridden by acceptance radius of waypoint if set. For fixed wing the npfg switch distance is used for horizontal acceptance. + Default acceptance radius, overridden by acceptance radius of waypoint if set. For fixed wing the L1 turning distance is used for horizontal acceptance. 0.05 200.0 m @@ -4657,9 +4200,9 @@ 1 0.5 - + Loiter radius (FW only) - Default value of loiter radius in FW mode (e.g. for Loiter mode). + Default value of loiter radius for missions, Hold mode, Return mode, etc. (fixedwing only). 25 1000 m @@ -4675,14 +4218,6 @@ 1 0.5 - - Minimum Loiter altitude - This is the minimum altitude above Home the system will always obey in Loiter (Hold) mode if switched into this mode without specifying an altitude (e.g. through Loiter switch on RC). Doesn't affect Loiters that are part of Missions or that are entered through a reposition setpoint ("Go to"). Set to a negative value to disable. - -1 - m - 1 - 0.5 - Set traffic avoidance mode Enabling this will allow the system to respond to transponder data from e.g. ADSB transponders @@ -4694,25 +4229,19 @@ Position Hold mode - - Set NAV TRAFFIC AVOID horizontal distance - Defines a crosstrack horizontal distance + + Set NAV TRAFFIC AVOID RADIUS MANNED + Defines the Radius where NAV TRAFFIC AVOID is Called For Manned Aviation 500 m - - Set NAV TRAFFIC AVOID vertical distance + + Set NAV TRAFFIC AVOID RADIUS + Defines the Radius where NAV TRAFFIC AVOID is Called For Unmanned Aviation 10 500 m - - Estimated time until collision - Minimum acceptable time until collsion. Assumes constant speed over 3d distance. - 1 - 900000000 - s - @@ -4724,6 +4253,14 @@ Roll/Pitch/Yaw + + Motor Ordering + Determines the motor ordering. This can be used for example in combination with a 4-in-1 ESC that assumes a motor ordering which is different from PX4. ONLY supported for Quads. When changing this, make sure to test the motor response without props first. + + PX4 + Betaflight / Cleanflight + + @@ -4737,20 +4274,6 @@ Stabilize yaw for absolute/lock mode. - - Pitch maximum when landed - -90.0 - 90.0 - deg - 1 - - - Pitch minimum when landed - -90.0 - 90.0 - deg - 1 - Auxiliary channel to control pitch (in AUX input or manual mode) 0 @@ -4803,71 +4326,78 @@ Mount input mode - This is the protocol used between the ground station and the autopilot. Recommended is Auto, RC only or MAVLink gimbal protocol v2. The rest will be deprecated. + RC uses the AUX input channels (see MNT_MAN_* parameters), MAVLINK_ROI uses the MAV_CMD_DO_SET_ROI Mavlink message, and MAVLINK_DO_MOUNT the MAV_CMD_DO_MOUNT_CONFIGURE and MAV_CMD_DO_MOUNT_CONTROL messages to control a mount. -1 4 true DISABLED - Auto (RC and MAVLink gimbal protocol v2) + AUTO RC - MAVLINK_ROI (protocol v1, to be deprecated) - MAVLINK_DO_MOUNT (protocol v1, to be deprecated) + MAVLINK_ROI (protocol v1) + MAVLINK_DO_MOUNT (protocol v1) MAVlink gimbal protocol v2 Mount output mode - This is the protocol used between the autopilot and a connected gimbal. Recommended is the MAVLink gimbal protocol v2 if the gimbal supports it. + AUX uses the mixer output Control Group #2. MAVLINK uses the MAV_CMD_DO_MOUNT_CONFIGURE and MAV_CMD_DO_MOUNT_CONTROL MavLink messages to control a mount (set MNT_MAV_SYSID & MNT_MAV_COMPID) 0 2 - true AUX MAVLink gimbal protocol v1 MAVLink gimbal protocol v2 + + Mixer value for selecting a locking mode + if required for the gimbal (only in AUX output mode) + -1.0 + 1.0 + 3 + + + Mixer value for selecting normal mode + if required by the gimbal (only in AUX output mode) + -1.0 + 1.0 + 3 + Offset for pitch channel output in degrees -360.0 360.0 - deg 1 Offset for roll channel output in degrees -360.0 360.0 - deg 1 Offset for yaw channel output in degrees -360.0 360.0 - deg 1 Range of pitch channel output in degrees (only in AUX output mode) 1.0 720.0 - deg 1 Range of roll channel output in degrees (only in AUX output mode) 1.0 720.0 - deg 1 Range of yaw channel output in degrees (only in AUX output mode) 1.0 720.0 - deg 1 @@ -4875,14 +4405,12 @@ Full stick input [-1..1] translats to [-pitch rate..pitch rate]. 1.0 90.0 - deg/s Angular yaw rate for manual input in degrees/second Full stick input [-1..1] translats to [-yaw rate..yaw rate]. 1.0 90.0 - deg/s Input mode for RC gimbal input @@ -4894,63 +4422,6 @@ - - - Acro mode roll, pitch expo factor - Exponential factor for tuning the input curve shape. 0 Purely linear input curve 1 Purely cubic input curve - 0 - 1 - 2 - - - Acro mode yaw expo factor - Exponential factor for tuning the input curve shape. 0 Purely linear input curve 1 Purely cubic input curve - 0 - 1 - 2 - - - Acro mode maximum pitch rate - Full stick deflection leads to this rate. - 0.0 - 1800.0 - deg/s - 1 - 5 - - - Acro mode maximum roll rate - Full stick deflection leads to this rate. - 0.0 - 1800.0 - deg/s - 1 - 5 - - - Acro mode roll, pitch super expo factor - "Superexponential" factor for refining the input curve shape tuned using MC_ACRO_EXPO. 0 Pure Expo function 0.7 reasonable shape enhancement for intuitive stick feel 0.95 very strong bent input curve only near maxima have effect - 0 - 0.95 - 2 - - - Acro mode yaw super expo factor - "Superexponential" factor for refining the input curve shape tuned using MC_ACRO_EXPO_Y. 0 Pure Expo function 0.7 reasonable shape enhancement for intuitive stick feel 0.95 very strong bent input curve only near maxima have effect - 0 - 0.95 - 2 - - - Acro mode maximum yaw rate - Full stick deflection leads to this rate. - 0.0 - 1800.0 - deg/s - 1 - 5 - - Max pitch rate @@ -5004,19 +4475,19 @@ Yaw weight - A fraction [0,1] deprioritizing yaw compared to roll and pitch in non-linear attitude control. Deprioritizing yaw is necessary because multicopters have much less control authority in yaw compared to the other axes and it makes sense because yaw is not critical for stable hovering or 3D navigation. For yaw control tuning use MC_YAW_P. This ratio has no impact on the yaw gain. + A fraction [0,1] deprioritizing yaw compared to roll and pitch in non-linear attitude control. Deprioritizing yaw is necessary because multicopters have much less control authority in yaw compared to the other axes and it makes sense because yaw is not critical for stable hovering or 3D navigation. For yaw control tuning use MC_YAW_P. This ratio has no inpact on the yaw gain. 0.0 1.0 2 0.1 - - Max yaw rate in autonomous modes - Limits the rate of change of the yaw setpoint to avoid large control output and mixer saturation. - 0 - 360 + + Max yaw rate in auto mode + Limit the rate of change of the yaw setpoint in autonomous mode to avoid large control output and mixer saturation. + 0.0 + 360.0 deg/s - 0 + 1 5 @@ -5054,42 +4525,42 @@ s 2 - - Maximum downwards acceleration in climb rate controlled modes - 2 - 15 - m/s^2 - 1 - 1 - - - Acceleration for autonomous and for manual modes - When piloting manually, this parameter is only used in MPC_POS_MODE 4. - 2 - 15 - m/s^2 - 1 - 1 - - - Maximum horizontal acceleration - MPC_POS_MODE 1 just deceleration 3 acceleration and deceleration 4 not used, use MPC_ACC_HOR instead - 2 - 15 + + Maximum vertical acceleration in velocity controlled modes down + 2.0 + 15.0 m/s^2 2 1 - - Maximum upwards acceleration in climb rate controlled modes - 2 - 15 + + Acceleration for auto and for manual + Note: In manual, this parameter is only used in MPC_POS_MODE 4. + 2.0 + 15.0 m/s^2 - 1 + 2 1 - - Altitude reference mode + + Maximum horizontal acceleration for auto mode and for manual mode + MPC_POS_MODE 1 just deceleration 3 acceleration and deceleration 4 just acceleration + 2.0 + 15.0 + m/s^2 + 2 + 1 + + + Maximum vertical acceleration in velocity controlled modes upward + 2.0 + 15.0 + m/s^2 + 2 + 1 + + + Altitude control mode Set to 0 to control height relative to the earth frame origin. This origin may move up and down in flight due to sensor drift. Set to 1 to control height relative to estimated distance to ground. The vehicle will move up and down with terrain height variation. Requires a distance to ground sensor. The height controller will revert to using height above origin if the distance to ground estimate becomes invalid as indicated by the local_position.distance_bottom_valid message being false. Set to 2 to control height relative to ground (requires a distance sensor) when stationary and relative to earth frame origin when moving horizontally. The speed threshold is controlled by the MPC_HOLD_MAX_XY parameter. 0 2 @@ -5100,96 +4571,59 @@ - Deadzone for sticks in manual piloted modes - Does not apply to manual throttle and direct attitude piloting by stick. - 0 - 1 + Deadzone of sticks where position hold is enabled + 0.0 + 1.0 2 - 0.01 Maximum horizontal velocity for which position hold is enabled (use 0 to disable check) - Only used with MPC_POS_MODE 0 or MPC_ALT_MODE 2 - 0 - 3 + 0.0 + 3.0 m/s 2 Maximum vertical velocity for which position hold is enabled (use 0 to disable check) - Only used with MPC_ALT_MODE 1 - 0 - 3 + 0.0 + 3.0 m/s 2 - - Jerk limit in autonomous modes - Limit the maximum jerk of the vehicle (how fast the acceleration can change). A lower value leads to smoother vehicle motions but also limited agility. - 1 - 80 + + Jerk limit in auto mode + Limit the maximum jerk of the vehicle (how fast the acceleration can change). A lower value leads to smoother vehicle motions, but it also limits its agility. + 1.0 + 80.0 m/s^3 1 1 - - Maximum horizontal and vertical jerk in Position/Altitude mode - Limit the maximum jerk of the vehicle (how fast the acceleration can change). A lower value leads to smoother motions but limits agility (how fast it can change directions or break). Setting this to the maximum value essentially disables the limit. Only used with smooth MPC_POS_MODE 3 and 4. + + Maximum jerk limit + Limit the maximum jerk of the vehicle (how fast the acceleration can change). A lower value leads to smoother vehicle motions, but it also limits its agility (how fast it can change directions or break). Setting this to the maximum value essentially disables the limit. Note: This is only used when MPC_POS_MODE is set to a smoothing mode 3 or 4. 0.5 - 500 + 500.0 m/s^3 - 0 + 2 1 - + Altitude for 1. step of slow landing (descend) - Below this altitude descending velocity gets limited to a value between "MPC_Z_VEL_MAX_DN" (or "MPC_Z_V_AUTO_DN") and "MPC_LAND_SPEED" Value needs to be higher than "MPC_LAND_ALT2" + Below this altitude descending velocity gets limited to a value between "MPC_Z_VEL_MAX_DN" and "MPC_LAND_SPEED" Value needs to be higher than "MPC_LAND_ALT2" 0 122 m 1 - + Altitude for 2. step of slow landing (landing) - Below this altitude descending velocity gets limited to "MPC_LAND_SPEED" Value needs to be lower than "MPC_LAND_ALT1" + Below this altitude descending velocity gets limited to "MPC_LAND_SPEED". Value needs to be lower than "MPC_LAND_ALT1" 0 122 m 1 - - Altitude for 3. step of slow landing - Below this altitude descending velocity gets limited to "MPC_LAND_CRWL", if LIDAR available. No effect if LIDAR not available - 0 - 122 - m - 1 - - - Land crawl descend rate - Used below MPC_LAND_ALT3 if distance sensor data is availabe. - 0.1 - m/s - 1 - - - User assisted landing radius - When nudging is enabled (see MPC_LAND_RC_HELP), this controls the maximum allowed horizontal displacement from the original landing point. - 0 - m - 0 - 1 - - - Enable nudging based on user input during autonomous land routine - Using stick input the vehicle can be moved horizontally and yawed. The descend speed is amended: stick full up - 0 stick centered - MPC_LAND_SPEED stick full down - 2 * MPC_LAND_SPEED Manual override during auto modes has to be disabled to use this feature (see COM_RC_OVERRIDE). - 0 - 1 - - Nudging disabled - Nudging enabled - - Landing descend rate 0.6 @@ -5197,116 +4631,117 @@ 1 - Minimum collective thrust in Stabilized mode - The value is mapped to the lowest throttle stick position in Stabilized mode. Too low collective thrust leads to loss of roll/pitch/yaw torque control authority. Airmode is used to keep torque authority with zero thrust (see MC_AIRMODE). - 0 - 1 + Minimum manual thrust + Minimum vertical thrust. It's recommended to set it > 0 to avoid free fall with zero thrust. With MC_AIRMODE set to 1, this can safely be set to 0. + 0.0 + 1.0 norm 2 0.01 - - Maximal tilt angle in Stabilized or Altitude mode - 0 - 90 + + Maximal tilt angle in manual or altitude mode + 0.0 + 90.0 deg - 0 - 1 + 1 - - Max manual yaw rate for Stabilized, Altitude, Position mode - 0 + + Max manual yaw rate + 0.0 400 deg/s - 0 - 10 + 1 Manual yaw rate input filter time constant - Not used in Stabilized mode Setting this parameter to 0 disables the filter - 0 - 5 + Setting this parameter to 0 disables the filter + 0.0 + 5.0 s 2 - 0.01 - Position/Altitude mode variant - The supported sub-modes are: 0 Sticks directly map to velocity setpoints without smoothing. Also applies to vertical direction and Altitude mode. Useful for velocity control tuning. 3 Sticks map to velocity but with maximum acceleration and jerk limits based on jerk optimized trajectory generator (different algorithm than 1). 4 Sticks map to acceleration and there's a virtual brake drag + Manual-Position control sub-mode + The supported sub-modes are: 0 Simple position control where sticks map directly to velocity setpoints without smoothing. Useful for velocity control tuning. 3 Smooth position control with maximum acceleration and jerk limits based on jerk optimized trajectory generator (different algorithm than 1). 4 Smooth position control where sticks map to acceleration and there's a virtual brake drag - Direct velocity - Smoothed velocity - Acceleration based + Simple position control + Smooth position control (Jerk optimized) + Acceleration based input + + Enforced delay between arming and takeoff + For altitude controlled modes the time from arming the motors until a takeoff is possible gets forced to be at least MPC_SPOOLUP_TIME seconds to ensure the motors and propellers can sppol up and reach idle speed before getting commanded to spin faster. This delay is particularly useful for vehicles with slow motor spin-up e.g. because of large propellers. + 0 + 10 + s + - Thrust curve mapping in Stabilized Mode - This parameter defines how the throttle stick input is mapped to collective thrust in Stabilized mode. In case the default is used ('Rescale to hover thrust'), the stick input is linearly rescaled, such that a centered stick corresponds to the hover throttle (see MPC_THR_HOVER). Select 'No Rescale' to directly map the stick 1:1 to the output. This can be useful in case the hover thrust is very low and the default would lead to too much distortion (e.g. if hover thrust is set to 20%, then 80% of the upper thrust range is squeezed into the upper half of the stick range). Note: In case MPC_THR_HOVER is set to 50%, the modes 0 and 1 are the same. + Thrust curve in Manual Mode + This parameter defines how the throttle stick input is mapped to commanded thrust in Manual/Stabilized flight mode. In case the default is used ('Rescale to hover thrust'), the stick input is linearly rescaled, such that a centered stick corresponds to the hover throttle (see MPC_THR_HOVER). Select 'No Rescale' to directly map the stick 1:1 to the output. This can be useful in case the hover thrust is very low and the default would lead to too much distortion (e.g. if hover thrust is set to 20%, 80% of the upper thrust range is squeezed into the upper half of the stick range). Note: In case MPC_THR_HOVER is set to 50%, the modes 0 and 1 are the same. Rescale to hover thrust No Rescale - Vertical thrust required to hover - Mapped to center throttle stick in Stabilized mode (see MPC_THR_CURVE). Used for initialization of the hover thrust estimator (see MPC_USE_HTE). The estimated hover thrust is used as base for zero vertical acceleration in altitude control. The hover thrust is important for land detection to work correctly. + Hover thrust + Vertical thrust required to hover. This value is mapped to center stick for manual throttle control. With this value set to the thrust required to hover, transition from manual to Altitude or Position mode while hovering will occur with the throttle stick near center, which is then interpreted as (near) zero demand for vertical speed. This parameter is also important for the landing detection to work correctly. 0.1 0.8 norm 2 0.01 - - Maximum collective thrust in climb rate controlled modes - Limit allowed thrust e.g. for indoor test of overpowered vehicle. - 0 - 1 + + Maximum thrust in auto thrust control + Limit max allowed thrust + 0.0 + 1.0 norm 2 - 0.05 + 0.01 - Minimum collective thrust in climb rate controlled modes - Too low thrust leads to loss of roll/pitch/yaw torque control authority. With airmode enabled this parameters can be set to 0 while still keeping torque authority (see MC_AIRMODE). + Minimum collective thrust in auto thrust control + It's recommended to set it > 0 to avoid free fall with zero thrust. Note: Without airmode zero thrust leads to zero roll/pitch control authority. (see MC_AIRMODE) 0.05 - 0.5 + 1.0 norm 2 0.01 Horizontal thrust margin - Margin that is kept for horizontal control when higher priority vertical thrust is saturated. To avoid completely starving horizontal control with high vertical error. - 0 + Margin that is kept for horizontal control when prioritizing vertical thrust. To avoid completely starving horizontal control with high vertical error. + 0.0 0.5 norm 2 0.01 - + Maximum tilt angle in air - Absolute maximum for all velocity or acceleration controlled modes. Any higher value is truncated. - 20 - 89 + Limits maximum tilt in AUTO and POSCTRL modes during flight. + 20.0 + 89.0 deg - 0 - 1 + 1 - - Maximum tilt during inital takeoff ramp - Tighter tilt limit during takeoff to avoid tip over. - 5 - 89 + + Maximum tilt during landing + Limits maximum tilt angle on landing. + 10.0 + 89.0 deg - 0 - 1 + 1 - - Smooth takeoff ramp time constant - Increasing this value will make climb rate controlled takeoff slower. If it's too slow the drone might scratch the ground and tip over. A time constant of 0 disables the ramp + + Position control smooth takeoff ramp time constant + Increasing this value will make automatic and manual takeoff slower. If it's too slow the drone might scratch the ground and tip over. A time constant of 0 disables the ramp 0 5 - s Takeoff climb rate @@ -5316,86 +4751,62 @@ 2 - Hover thrust estimator - Disable to use the fixed parameter MPC_THR_HOVER Enable to use the hover thrust estimator + Hover thrust source selector + Set false to use the fixed parameter MPC_THR_HOVER Set true to use the value computed by the hover thrust estimator - Numerical velocity derivative low pass cutoff frequency - 0 + Low pass filter cut freq. for numerical velocity derivative + 0.0 10 Hz - 1 - 0.5 + 2 - - Maximum horizontal velocity setpoint in Position mode - Must be smaller than MPC_XY_VEL_MAX. The maximum sideways and backward speed can be set differently using MPC_VEL_MAN_SIDE and MPC_VEL_MAN_BACK, respectively. - 3 - 20 + + Maximum horizontal velocity setpoint for manual controlled mode + If velocity setpoint larger than MPC_XY_VEL_MAX is set, then the setpoint will be capped to MPC_XY_VEL_MAX + 3.0 + 20.0 m/s - 1 + 2 1 - - Maximum backward velocity in Position mode - If set to a negative value or larger than MPC_VEL_MANUAL then MPC_VEL_MANUAL is used. - -1 - 20 + + Default horizontal velocity in mission + Horizontal velocity used when flying autonomously in e.g. Missions, RTL, Goto. + 3.0 + 20.0 m/s - 1 + 2 1 - - Maximum sideways velocity in Position mode - If set to a negative value or larger than MPC_VEL_MANUAL then MPC_VEL_MANUAL is used. - -1 - 20 - m/s - 1 - 1 - - - Default horizontal velocity in autonomous modes - e.g. in Missions, RTL, Goto if the waypoint does not specify differently - 3 - 20 - m/s - 0 - 1 - - + Maximum horizontal error allowed by the trajectory generator The integration speed of the trajectory setpoint is linearly reduced with the horizontal position tracking error. When the error is above this parameter, the integration of the trajectory is stopped to wait for the drone. This value can be adjusted depending on the tracking capabilities of the vehicle. 0.1 - 10 + 10.0 1 - 1 Manual position control stick exponential curve sensitivity - The higher the value the less sensitivity the stick has around zero while still reaching the maximum value with full stick deflection. 0 Purely linear input curve 1 Purely cubic input curve + The higher the value the less sensitivity the stick has around zero while still reaching the maximum value with full stick deflection. 0 Purely linear input curve (default) 1 Purely cubic input curve 0 1 2 - 0.01 Proportional gain for horizontal position error - Defined as corrective velocity in m/s per m position error - 0 - 2 + 0.0 + 2.0 2 - 0.1 Proportional gain for horizontal trajectory position error 0.1 - 1 + 1.0 1 - 0.1 - - Overall Horizontal Velocity Limit + + Overall Horizonal Velocity Limit If set to a value greater than zero, other parameters are automatically set (such as MPC_XY_VEL_MAX or MPC_VEL_MANUAL). If set to a negative value, the existing individual parameters are used. -20 20 @@ -5403,63 +4814,56 @@ 1 - Differential gain for horizontal velocity error - Defined as corrective acceleration in m/s^2 per m/s^2 velocity derivative + Differential gain for horizontal velocity error. Small values help reduce fast oscillations. If value is too big oscillations will appear again + defined as correction acceleration in m/s^2 per m/s^2 velocity derivative 0.1 - 2 - 2 - 0.02 + 2.0 + 3 Integral gain for horizontal velocity error - Defined as correction acceleration in m/s^2 per m velocity integral Allows to eliminate steady state errors in disturbances like wind. - 0 - 60 - 2 - 0.02 + defined as correction acceleration in m/s^2 per m velocity integral Non-zero value allows to eliminate steady state errors in the presence of disturbances like wind. + 0.0 + 60.0 + 3 - + Maximum horizontal velocity - Absolute maximum for all velocity controlled modes. Any higher value is truncated. - 0 - 20 + Maximum horizontal velocity in AUTO mode. If higher speeds are commanded in a mission they will be capped to this velocity. + 0.0 + 20.0 m/s - 1 + 2 1 Proportional gain for horizontal velocity error - Defined as corrective acceleration in m/s^2 per m/s velocity error + defined as correction acceleration in m/s^2 per m/s velocity error 1.2 - 5 + 5.0 2 - 0.1 Manual control stick yaw rotation exponential curve - The higher the value the less sensitivity the stick has around zero while still reaching the maximum value with full stick deflection. 0 Purely linear input curve 1 Purely cubic input curve + The higher the value the less sensitivity the stick has around zero while still reaching the maximum value with full stick deflection. 0 Purely linear input curve (default) 1 Purely cubic input curve 0 1 2 - 0.01 Manual control stick vertical exponential curve - The higher the value the less sensitivity the stick has around zero while still reaching the maximum value with full stick deflection. 0 Purely linear input curve 1 Purely cubic input curve + The higher the value the less sensitivity the stick has around zero while still reaching the maximum value with full stick deflection. 0 Purely linear input curve (default) 1 Purely cubic input curve 0 1 2 - 0.01 - + Proportional gain for vertical position error - Defined as corrective velocity in m/s per m position error - 0.1 + 0.0 1.5 2 - 0.1 - + Overall Vertical Velocity Limit If set to a value greater than zero, other parameters are automatically set (such as MPC_Z_VEL_MAX_UP or MPC_LAND_SPEED). If set to a negative value, the existing individual parameters are used. -3 @@ -5467,65 +4871,41 @@ 1 0.5 - + Differential gain for vertical velocity error - Defined as corrective acceleration in m/s^2 per m/s^2 velocity derivative - 0 - 2 - 2 - 0.02 + defined as correction acceleration in m/s^2 per m/s^2 velocity derivative + 0.0 + 2.0 + 3 - + Integral gain for vertical velocity error - Defined as corrective acceleration in m/s^2 per m velocity integral + defined as correction acceleration in m/s^2 per m velocity integral Non zero value allows hovering thrust estimation on stabilized or autonomous takeoff. 0.2 - 3 - 2 - 0.1 + 3.0 + 3 - - Maximum descent velocity - Absolute maximum for all climb rate controlled modes. In manually piloted modes full stick deflection commands this velocity. For default autonomous velocity see MPC_Z_V_AUTO_UP + + Maximum vertical descent velocity + Maximum vertical velocity in AUTO mode and endpoint for stabilized modes (ALTCTRL, POSCTRL). 0.5 - 4 + 4.0 + m/s + + + Maximum vertical ascent velocity + Maximum vertical velocity in AUTO mode and endpoint for stabilized modes (ALTCTRL, POSCTRL). + 0.5 + 8.0 m/s 1 - 0.1 - - Maximum ascent velocity - Absolute maximum for all climb rate controlled modes. In manually piloted modes full stick deflection commands this velocity. For default autonomous velocity see MPC_Z_V_AUTO_UP - 0.5 - 8 - m/s - 1 - 0.1 - - + Proportional gain for vertical velocity error - Defined as corrective acceleration in m/s^2 per m/s velocity error - 2 - 15 + defined as correction acceleration in m/s^2 per m/s velocity error + 2.0 + 15.0 2 - 0.1 - - - Descent velocity in autonomous modes - For manual modes and offboard, see MPC_Z_VEL_MAX_DN - 0.5 - 4 - m/s - 1 - 0.5 - - - Ascent velocity in autonomous modes - For manually controlled modes and offboard see MPC_Z_VEL_MAX_UP - 0.5 - 8 - m/s - 1 - 0.5 Responsiveness @@ -5552,6 +4932,61 @@ + + Acro mode Expo factor for Roll and Pitch + Exponential factor for tuning the input curve shape. 0 Purely linear input curve 1 Purely cubic input curve + 0 + 1 + 2 + + + Acro mode Expo factor for Yaw + Exponential factor for tuning the input curve shape. 0 Purely linear input curve 1 Purely cubic input curve + 0 + 1 + 2 + + + Max acro pitch rate + default: 2 turns per second + 0.0 + 1800.0 + deg/s + 1 + 5 + + + Max acro roll rate + default: 2 turns per second + 0.0 + 1800.0 + deg/s + 1 + 5 + + + Acro mode SuperExpo factor for Roll and Pitch + SuperExpo factor for refining the input curve shape tuned using MC_ACRO_EXPO. 0 Pure Expo function 0.7 resonable shape enhancement for intuitive stick feel 0.95 very strong bent input curve only near maxima have effect + 0 + 0.95 + 2 + + + Acro mode SuperExpo factor for Yaw + SuperExpo factor for refining the input curve shape tuned using MC_ACRO_EXPO_Y. 0 Pure Expo function 0.7 resonable shape enhancement for intuitive stick feel 0.95 very strong bent input curve only near maxima have effect + 0 + 0.95 + 2 + + + Max acro yaw rate + default 1.5 turns per second + 0.0 + 1800.0 + deg/s + 1 + 5 + Battery power level scaler This compensates for voltage drop of the battery over time by attempting to normalize performance across the operating range of the battery. The copter should constantly behave as if it was fully charged with reduced max acceleration at lower battery percentages. i.e. if hover is at 0.5 throttle at 100% battery, it will still be 0.5 at 60% battery. @@ -5703,7 +5138,7 @@ Minimum motor rise time (slew rate limit) - Minimum time allowed for the motor input signal to pass through a range of 1000 PWM units. A value x means that the motor signal can only go from 1000 to 2000 PWM in minimum x seconds. Zero means that slew rate limiting is disabled. + Minimum time allowed for the motor input signal to pass through a range of 1000 PWM units. A value x means that the motor signal can only go from 1000 to 2000 PWM in maximum x seconds. Zero means that slew rate limiting is disabled. 0.0 s/(1000*PWM) @@ -5806,7 +5241,7 @@ RC channel 10 trim - Mid point value + Mid point value (has to be set to the same as min for throttle channel). 800.0 2200.0 us @@ -5843,7 +5278,7 @@ RC channel 11 trim - Mid point value + Mid point value (has to be set to the same as min for throttle channel). 800.0 2200.0 us @@ -5880,7 +5315,7 @@ RC channel 12 trim - Mid point value + Mid point value (has to be set to the same as min for throttle channel). 800.0 2200.0 us @@ -5917,7 +5352,7 @@ RC channel 13 trim - Mid point value + Mid point value (has to be set to the same as min for throttle channel). 800.0 2200.0 us @@ -5954,7 +5389,7 @@ RC channel 14 trim - Mid point value + Mid point value (has to be set to the same as min for throttle channel). 800.0 2200.0 us @@ -5991,7 +5426,7 @@ RC channel 15 trim - Mid point value + Mid point value (has to be set to the same as min for throttle channel). 800.0 2200.0 us @@ -6028,7 +5463,7 @@ RC channel 16 trim - Mid point value + Mid point value (has to be set to the same as min for throttle channel). 800.0 2200.0 us @@ -6065,7 +5500,7 @@ RC channel 17 trim - Mid point value + Mid point value (has to be set to the same as min for throttle channel). 800.0 2200.0 us @@ -6102,7 +5537,7 @@ RC channel 18 trim - Mid point value + Mid point value (has to be set to the same as min for throttle channel). 800.0 2200.0 us @@ -6140,7 +5575,7 @@ RC channel 1 trim - Mid point value + Mid point value (same as min for throttle) 800.0 2200.0 us @@ -6178,7 +5613,7 @@ RC channel 2 trim - Mid point value + Mid point value (has to be set to the same as min for throttle channel). 800.0 2200.0 us @@ -6216,7 +5651,7 @@ RC channel 3 trim - Mid point value + Mid point value (has to be set to the same as min for throttle channel). 800.0 2200.0 us @@ -6254,7 +5689,7 @@ RC channel 4 trim - Mid point value + Mid point value (has to be set to the same as min for throttle channel). 800.0 2200.0 us @@ -6291,7 +5726,7 @@ RC channel 5 trim - Mid point value + Mid point value (has to be set to the same as min for throttle channel). 800.0 2200.0 us @@ -6328,7 +5763,7 @@ RC channel 6 trim - Mid point value + Mid point value (has to be set to the same as min for throttle channel). 800.0 2200.0 us @@ -6365,7 +5800,7 @@ RC channel 7 trim - Mid point value + Mid point value (has to be set to the same as min for throttle channel). 800.0 2200.0 us @@ -6402,7 +5837,7 @@ RC channel 8 trim - Mid point value + Mid point value (has to be set to the same as min for throttle channel). 800.0 2200.0 us @@ -6439,7 +5874,7 @@ RC channel 9 trim - Mid point value + Mid point value (has to be set to the same as min for throttle channel). 800.0 2200.0 us @@ -6452,7 +5887,7 @@ Failsafe channel PWM threshold - Use RC_MAP_FAILSAFE to specify which channel is used to indicate RC loss via this threshold. By default this is the throttle channel. Set to a PWM value slightly above the PWM value for the channel (e.g. throttle) in a failsafe event, but below the minimum PWM value for the channel during normal operation. Note: The default value of 0 disables the feature (it is below the expected range). + Use RC_MAP_FAILSAFE to specify which channel is used to indicate RC loss via this theshold. By default this is the throttle channel. Set to a PWM value slightly above the PWM value for the channel (e.g. throttle) in a failsafe event, but below the minimum PWM value for the channel during normal operation. Note: The default value of 0 disables the feature (it is below the expected range). 0 2200 us @@ -6616,32 +6051,6 @@ Channel 18 - - RC channel to engage the main motor (for helicopters) - 0 - 18 - - Unassigned - Channel 1 - Channel 2 - Channel 3 - Channel 4 - Channel 5 - Channel 6 - Channel 7 - Channel 8 - Channel 9 - Channel 10 - Channel 11 - Channel 12 - Channel 13 - Channel 14 - Channel 15 - Channel 16 - Channel 17 - Channel 18 - - Failsafe channel mapping Configures which RC channel is used by the receiver to indicate the signal was lost (on receivers that use output a fixed signal value to report lost signal). If set to 0, the channel mapped to throttle is used. Use RC_FAILS_THR to set the threshold indicating lost signal. By default it's below the expected range and hence disabled. @@ -6899,25 +6308,25 @@ Pitch trim - The trim value is the actuator control value the system needs for straight and level flight. - -0.5 - 0.5 + The trim value is the actuator control value the system needs for straight and level flight. It can be calibrated by flying manually straight and level using the RC trims and copying them using the GCS. + -0.25 + 0.25 2 0.01 Roll trim - The trim value is the actuator control value the system needs for straight and level flight. - -0.5 - 0.5 + The trim value is the actuator control value the system needs for straight and level flight. It can be calibrated by flying manually straight and level using the RC trims and copying them using the GCS. + -0.25 + 0.25 2 0.01 Yaw trim - The trim value is the actuator control value the system needs for straight and level flight. - -0.5 - 0.5 + The trim value is the actuator control value the system needs for straight and level flight. It can be calibrated by flying manually straight and level using the RC trims and copying them using the GCS. + -0.25 + 0.25 2 0.01 @@ -6929,12 +6338,6 @@ -1 1 - - Threshold for selecting main motor engage - 0-1 indicate where in the full channel range the threshold sits 0 : min 1 : max sign indicates polarity of comparison positive : true when channel>th negative : true when channel<th - -1 - 1 - Threshold for the landing gear switch 0-1 indicate where in the full channel range the threshold sits 0 : min 1 : max sign indicates polarity of comparison positive : true when channel>th negative : true when channel<th @@ -7407,10 +6810,11 @@ Only climb to at least RTL_DESCEND_ALT above destination. - + Return mode loiter altitude - Descend to this altitude (above destination position) after return, and wait for time defined in RTL_LAND_DELAY. Land (i.e. slowly descend) from this altitude if autolanding allowed. VTOLs do transition to hover in this altitdue above the landing point. - 0 + Descend to this altitude (above destination position) after return, and wait for time defined in RTL_LAND_DELAY. Land (i.e. slowly descend) from this altitude if autolanding allowed. + 2 + 100 m 1 0.5 @@ -7428,14 +6832,16 @@ Return mode delay Delay before landing (after initial descent) in Return mode. If set to -1 the system will not land but loiter at RTL_DESCEND_ALT. -1 + 300 s 1 0.5 - + Loiter radius for rtl descend Set the radius for loitering to a safe altitude for VTOL transition. 25 + 1000 m 1 0.5 @@ -7444,6 +6850,7 @@ Horizontal radius from return point within which special rules for return mode apply The return altitude will be calculated based on RTL_CONE_ANG parameter. The yaw setpoint will switch to the one defined by corresponding waypoint. 0.5 + 100 m 1 0.5 @@ -7457,10 +6864,11 @@ Required precision landing - + Return mode return altitude - Default minimum altitude above destination (e.g. home, safe point, landing pattern) for return flight. The vehicle will climb to this altitude when Return mode is enganged, unless it currently is flying higher already. This is affected by RTL_MIN_DIST and RTL_CONE_ANG. + Default minimum altitude above destination (e.g. home, safe point, landing pattern) for return flight. This is affected by RTL_MIN_DIST and RTL_CONE_ANG. 0 + 150 m 1 0.5 @@ -7477,13 +6885,9 @@ - - RTL force approach landing - Only consider RTL point, if it has an approach defined. - RTL time estimate safety margin factor - Safety factor that is used to scale the actual RTL time estimate. Time with margin = RTL_TIME_FACTOR * time + RTL_TIME_MARGIN + Safety factor that is used to scale the actual RTL time estiamte. Time with margin = RTL_TIME_FACTOR * time + RTL_TIME_MARGIN 1.0 2.0 1 @@ -7499,6 +6903,60 @@ 1 + + + Address of the Roboclaw + The Roboclaw can be configured to have an address from 0x80 to 0x87, inclusive. It must be configured to match this parameter. + 128 + 135 + + 0x80 + 0x81 + 0x82 + 0x83 + 0x84 + 0x85 + 0x86 + 0x87 + + + + Roboclaw serial baud rate + Baud rate of the serial communication with the Roboclaw. The Roboclaw must be configured to match this rate. + 2400 + 460800 + true + + 2400 baud + 9600 baud + 19200 baud + 38400 baud + 57600 baud + 115200 baud + 230400 baud + 460800 baud + + + + Encoder counts per revolution + Number of encoder counts for one revolution. The roboclaw treats analog encoders (potentiometers) as having 2047 counts per rev. The default value of 1200 corresponds to the default configuration of the Aion R1 rover. + 1 + + + Encoder read period + How long to wait, in Milliseconds, between reading wheel encoder values over Uart from the Roboclaw + 1 + 1000 + ms + + + Uart write period + How long to wait, in Milliseconds, between writing actuator controls over Uart to the Roboclaw + 1 + 1000 + ms + + L1 damping @@ -7650,38 +7108,63 @@ + + Min airspeed scaling factor for takeoff + Pitch up will be commanded when the following airspeed is reached: FW_AIRSPD_MIN * RWTO_AIRSPD_SCL + 0.0 + 2.0 + norm + 2 + 0.01 + - Specifies which heading should be held during the runway takeoff ground roll - 0: airframe heading when takeoff is initiated 1: position control along runway direction (bearing defined from vehicle position on takeoff initiation to MAV_CMD_TAKEOFF position defined by operator) + Specifies which heading should be held during runnway takeoff + 0: airframe heading, 1: heading towards takeoff waypoint 0 1 Airframe - Runway + Waypoint + + Max pitch during takeoff + Fixed-wing settings are used if set to 0. Note that there is also a minimum pitch of 10 degrees during takeoff, so this must be larger if set. + 0.0 + 60.0 + deg + 1 + 0.5 + + + Max roll during climbout + Roll is limited during climbout to ensure enough lift and prevents aggressive navigation before we're on a safe height. + 0.0 + 60.0 + deg + 1 + 0.5 + Max throttle during runway takeoff + Can be used to test taxi on runway 0.0 1.0 norm 2 0.01 - - NPFG period while steering on runway - 1.0 + + Altitude AGL at which we have enough ground clearance to allow some roll + Until RWTO_NAV_ALT is reached the plane is held level and only rudder is used to keep the heading (see RWTO_HDG). This should be below FW_CLMBOUT_DIFF if FW_CLMBOUT_DIFF > 0. + 0.0 100.0 - s + m 1 - 0.1 - - - Enable use of yaw stick for nudging the wheel during runway ground roll - This is useful when map, GNSS, or yaw errors on ground are misaligned with what the operator intends for takeoff course. Particularly useful for skinny runways or if the wheel servo is a bit off trim. + 1 - Pitch setpoint during taxi / before takeoff rotation airspeed is reached + Pitch setpoint during taxi / before takeoff airspeed is reached A taildragger with steerable wheel might need to pitch up a little to keep its wheel on the ground before airspeed to takeoff is reached. -10.0 20.0 @@ -7697,22 +7180,6 @@ 2 0.1 - - Takeoff rotation airspeed - The calibrated airspeed threshold during the takeoff ground roll when the plane should start rotating (pitching up). Must be less than the takeoff airspeed, will otherwise be capped at the takeoff airpeed (see FW_TKO_AIRSPD). If set <= 0.0, defaults to 0.9 * takeoff airspeed (see FW_TKO_AIRSPD) - -1.0 - m/s - 1 - 0.1 - - - Takeoff rotation time - This is the time desired to linearly ramp in takeoff pitch constraints during the takeoff rotation - 0.1 - s - 1 - 0.1 - Runway takeoff with landing gear @@ -7770,14 +7237,13 @@ from boot until disarm from boot until shutdown depending on AUX1 RC channel - from 1st armed until shutdown Logging topic profile (integer bitmask) - This integer bitmask controls the set and rates of logged topics. The default allows for general log analysis while keeping the log file size reasonably small. Enabling multiple sets leads to higher bandwidth requirements and larger log files. Set bits true to enable: 0 : Default set (used for general log analysis) 1 : Full rate estimator (EKF2) replay topics 2 : Topics for thermal calibration (high rate raw IMU and Baro sensor data) 3 : Topics for system identification (high rate actuator control and IMU data) 4 : Full rates for analysis of fast maneuvers (RC, attitude, rates and actuators) 5 : Debugging topics (debug_*.msg topics, for custom code) 6 : Topics for sensor comparison (low rate raw IMU, Baro and magnetometer data) 7 : Topics for computer vision and collision avoidance 8 : Raw FIFO high-rate IMU (Gyro) 9 : Raw FIFO high-rate IMU (Accel) 10: Logging of mavlink tunnel message (useful for payload communication debugging) + This integer bitmask controls the set and rates of logged topics. The default allows for general log analysis while keeping the log file size reasonably small. Enabling multiple sets leads to higher bandwidth requirements and larger log files. Set bits true to enable: 0 : Default set (used for general log analysis) 1 : Full rate estimator (EKF2) replay topics 2 : Topics for thermal calibration (high rate raw IMU and Baro sensor data) 3 : Topics for system identification (high rate actuator control and IMU data) 4 : Full rates for analysis of fast maneuvers (RC, attitude, rates and actuators) 5 : Debugging topics (debug_*.msg topics, for custom code) 6 : Topics for sensor comparison (low rate raw IMU, Baro and Magnetomer data) 7 : Topics for computer vision and collision avoidance 8 : Raw FIFO high-rate IMU (Gyro) 9 : Raw FIFO high-rate IMU (Accel) 0 - 2047 + 1023 true Default set (general log analysis) @@ -7790,7 +7256,6 @@ Computer Vision and Avoidance Raw FIFO high-rate IMU (Gyro) Raw FIFO high-rate IMU (Accel) - Mavlink tunnel message logging @@ -7823,6 +7288,1122 @@ + + ID of the Accelerometer that the calibration is for + + + Accelerometer 0 priority + + Uninitialized + Disabled + Min + Low + Medium (Default) + High + Max + + + + Rotation of accelerometer 0 relative to airframe + An internal sensor will force a value of -1, so a GCS should only attempt to configure the rotation if the value is greater than or equal to zero. + -1 + 40 + true + + Internal + No rotation + Yaw 45° + Yaw 90° + Yaw 135° + Yaw 180° + Yaw 225° + Yaw 270° + Yaw 315° + Roll 180° + Roll 180°, Yaw 45° + Roll 180°, Yaw 90° + Roll 180°, Yaw 135° + Pitch 180° + Roll 180°, Yaw 225° + Roll 180°, Yaw 270° + Roll 180°, Yaw 315° + Roll 90° + Roll 90°, Yaw 45° + Roll 90°, Yaw 90° + Roll 90°, Yaw 135° + Roll 270° + Roll 270°, Yaw 45° + Roll 270°, Yaw 90° + Roll 270°, Yaw 135° + Pitch 90° + Pitch 270° + Pitch 180°, Yaw 90° + Pitch 180°, Yaw 270° + Roll 90°, Pitch 90° + Roll 180°, Pitch 90° + Roll 270°, Pitch 90° + Roll 90°, Pitch 180° + Roll 270°, Pitch 180° + Roll 90°, Pitch 270° + Roll 180°, Pitch 270° + Roll 270°, Pitch 270° + Roll 90°, Pitch 180°, Yaw 90° + Roll 90°, Yaw 270° + Roll 90°, Pitch 68°, Yaw 293° + Pitch 315° + Roll 90°, Pitch 315° + + + + Accelerometer calibration temperature + Temperature during last calibration. + celcius + + + Accelerometer X-axis offset + + + Accelerometer X-axis scaling factor + + + Accelerometer Y-axis offset + + + Accelerometer Y-axis scaling factor + + + Accelerometer Z-axis offset + + + Accelerometer Z-axis scaling factor + + + ID of the Accelerometer that the calibration is for + + + Accelerometer 1 priority + + Uninitialized + Disabled + Min + Low + Medium (Default) + High + Max + + + + Rotation of accelerometer 1 relative to airframe + An internal sensor will force a value of -1, so a GCS should only attempt to configure the rotation if the value is greater than or equal to zero. + -1 + 40 + true + + Internal + No rotation + Yaw 45° + Yaw 90° + Yaw 135° + Yaw 180° + Yaw 225° + Yaw 270° + Yaw 315° + Roll 180° + Roll 180°, Yaw 45° + Roll 180°, Yaw 90° + Roll 180°, Yaw 135° + Pitch 180° + Roll 180°, Yaw 225° + Roll 180°, Yaw 270° + Roll 180°, Yaw 315° + Roll 90° + Roll 90°, Yaw 45° + Roll 90°, Yaw 90° + Roll 90°, Yaw 135° + Roll 270° + Roll 270°, Yaw 45° + Roll 270°, Yaw 90° + Roll 270°, Yaw 135° + Pitch 90° + Pitch 270° + Pitch 180°, Yaw 90° + Pitch 180°, Yaw 270° + Roll 90°, Pitch 90° + Roll 180°, Pitch 90° + Roll 270°, Pitch 90° + Roll 90°, Pitch 180° + Roll 270°, Pitch 180° + Roll 90°, Pitch 270° + Roll 180°, Pitch 270° + Roll 270°, Pitch 270° + Roll 90°, Pitch 180°, Yaw 90° + Roll 90°, Yaw 270° + Roll 90°, Pitch 68°, Yaw 293° + Pitch 315° + Roll 90°, Pitch 315° + + + + Accelerometer calibration temperature + Temperature during last calibration. + celcius + + + Accelerometer X-axis offset + + + Accelerometer X-axis scaling factor + + + Accelerometer Y-axis offset + + + Accelerometer Y-axis scaling factor + + + Accelerometer Z-axis offset + + + Accelerometer Z-axis scaling factor + + + ID of the Accelerometer that the calibration is for + + + Accelerometer 2 priority + + Uninitialized + Disabled + Min + Low + Medium (Default) + High + Max + + + + Rotation of accelerometer 2 relative to airframe + An internal sensor will force a value of -1, so a GCS should only attempt to configure the rotation if the value is greater than or equal to zero. + -1 + 40 + true + + Internal + No rotation + Yaw 45° + Yaw 90° + Yaw 135° + Yaw 180° + Yaw 225° + Yaw 270° + Yaw 315° + Roll 180° + Roll 180°, Yaw 45° + Roll 180°, Yaw 90° + Roll 180°, Yaw 135° + Pitch 180° + Roll 180°, Yaw 225° + Roll 180°, Yaw 270° + Roll 180°, Yaw 315° + Roll 90° + Roll 90°, Yaw 45° + Roll 90°, Yaw 90° + Roll 90°, Yaw 135° + Roll 270° + Roll 270°, Yaw 45° + Roll 270°, Yaw 90° + Roll 270°, Yaw 135° + Pitch 90° + Pitch 270° + Pitch 180°, Yaw 90° + Pitch 180°, Yaw 270° + Roll 90°, Pitch 90° + Roll 180°, Pitch 90° + Roll 270°, Pitch 90° + Roll 90°, Pitch 180° + Roll 270°, Pitch 180° + Roll 90°, Pitch 270° + Roll 180°, Pitch 270° + Roll 270°, Pitch 270° + Roll 90°, Pitch 180°, Yaw 90° + Roll 90°, Yaw 270° + Roll 90°, Pitch 68°, Yaw 293° + Pitch 315° + Roll 90°, Pitch 315° + + + + Accelerometer calibration temperature + Temperature during last calibration. + celcius + + + Accelerometer X-axis offset + + + Accelerometer X-axis scaling factor + + + Accelerometer Y-axis offset + + + Accelerometer Y-axis scaling factor + + + Accelerometer Z-axis offset + + + Accelerometer Z-axis scaling factor + + + ID of the Accelerometer that the calibration is for + + + Accelerometer 3 priority + + Uninitialized + Disabled + Min + Low + Medium (Default) + High + Max + + + + Rotation of accelerometer 3 relative to airframe + An internal sensor will force a value of -1, so a GCS should only attempt to configure the rotation if the value is greater than or equal to zero. + -1 + 40 + true + + Internal + No rotation + Yaw 45° + Yaw 90° + Yaw 135° + Yaw 180° + Yaw 225° + Yaw 270° + Yaw 315° + Roll 180° + Roll 180°, Yaw 45° + Roll 180°, Yaw 90° + Roll 180°, Yaw 135° + Pitch 180° + Roll 180°, Yaw 225° + Roll 180°, Yaw 270° + Roll 180°, Yaw 315° + Roll 90° + Roll 90°, Yaw 45° + Roll 90°, Yaw 90° + Roll 90°, Yaw 135° + Roll 270° + Roll 270°, Yaw 45° + Roll 270°, Yaw 90° + Roll 270°, Yaw 135° + Pitch 90° + Pitch 270° + Pitch 180°, Yaw 90° + Pitch 180°, Yaw 270° + Roll 90°, Pitch 90° + Roll 180°, Pitch 90° + Roll 270°, Pitch 90° + Roll 90°, Pitch 180° + Roll 270°, Pitch 180° + Roll 90°, Pitch 270° + Roll 180°, Pitch 270° + Roll 270°, Pitch 270° + Roll 90°, Pitch 180°, Yaw 90° + Roll 90°, Yaw 270° + Roll 90°, Pitch 68°, Yaw 293° + Pitch 315° + Roll 90°, Pitch 315° + + + + Accelerometer calibration temperature + Temperature during last calibration. + celcius + + + Accelerometer X-axis offset + + + Accelerometer X-axis scaling factor + + + Accelerometer Y-axis offset + + + Accelerometer Y-axis scaling factor + + + Accelerometer Z-axis offset + + + Accelerometer Z-axis scaling factor + + + ID of the Gyro that the calibration is for + + + Gyro 0 priority + + Uninitialized + Disabled + Min + Low + Medium (Default) + High + Max + + + + Rotation of gyro 0 relative to airframe + An internal sensor will force a value of -1, so a GCS should only attempt to configure the rotation if the value is greater than or equal to zero. + -1 + 40 + true + + Internal + No rotation + Yaw 45° + Yaw 90° + Yaw 135° + Yaw 180° + Yaw 225° + Yaw 270° + Yaw 315° + Roll 180° + Roll 180°, Yaw 45° + Roll 180°, Yaw 90° + Roll 180°, Yaw 135° + Pitch 180° + Roll 180°, Yaw 225° + Roll 180°, Yaw 270° + Roll 180°, Yaw 315° + Roll 90° + Roll 90°, Yaw 45° + Roll 90°, Yaw 90° + Roll 90°, Yaw 135° + Roll 270° + Roll 270°, Yaw 45° + Roll 270°, Yaw 90° + Roll 270°, Yaw 135° + Pitch 90° + Pitch 270° + Pitch 180°, Yaw 90° + Pitch 180°, Yaw 270° + Roll 90°, Pitch 90° + Roll 180°, Pitch 90° + Roll 270°, Pitch 90° + Roll 90°, Pitch 180° + Roll 270°, Pitch 180° + Roll 90°, Pitch 270° + Roll 180°, Pitch 270° + Roll 270°, Pitch 270° + Roll 90°, Pitch 180°, Yaw 90° + Roll 90°, Yaw 270° + Roll 90°, Pitch 68°, Yaw 293° + Pitch 315° + Roll 90°, Pitch 315° + + + + Gyroscope calibration temperature + Temperature during last calibration. + celcius + + + Gyro X-axis offset + + + Gyro Y-axis offset + + + Gyro Z-axis offset + + + ID of the Gyro that the calibration is for + + + Gyro 1 priority + + Uninitialized + Disabled + Min + Low + Medium (Default) + High + Max + + + + Rotation of gyro 1 relative to airframe + An internal sensor will force a value of -1, so a GCS should only attempt to configure the rotation if the value is greater than or equal to zero. + -1 + 40 + true + + Internal + No rotation + Yaw 45° + Yaw 90° + Yaw 135° + Yaw 180° + Yaw 225° + Yaw 270° + Yaw 315° + Roll 180° + Roll 180°, Yaw 45° + Roll 180°, Yaw 90° + Roll 180°, Yaw 135° + Pitch 180° + Roll 180°, Yaw 225° + Roll 180°, Yaw 270° + Roll 180°, Yaw 315° + Roll 90° + Roll 90°, Yaw 45° + Roll 90°, Yaw 90° + Roll 90°, Yaw 135° + Roll 270° + Roll 270°, Yaw 45° + Roll 270°, Yaw 90° + Roll 270°, Yaw 135° + Pitch 90° + Pitch 270° + Pitch 180°, Yaw 90° + Pitch 180°, Yaw 270° + Roll 90°, Pitch 90° + Roll 180°, Pitch 90° + Roll 270°, Pitch 90° + Roll 90°, Pitch 180° + Roll 270°, Pitch 180° + Roll 90°, Pitch 270° + Roll 180°, Pitch 270° + Roll 270°, Pitch 270° + Roll 90°, Pitch 180°, Yaw 90° + Roll 90°, Yaw 270° + Roll 90°, Pitch 68°, Yaw 293° + Pitch 315° + Roll 90°, Pitch 315° + + + + Gyroscope calibration temperature + Temperature during last calibration. + celcius + + + Gyro X-axis offset + + + Gyro Y-axis offset + + + Gyro Z-axis offset + + + ID of the Gyro that the calibration is for + + + Gyro 2 priority + + Uninitialized + Disabled + Min + Low + Medium (Default) + High + Max + + + + Rotation of gyro 2 relative to airframe + An internal sensor will force a value of -1, so a GCS should only attempt to configure the rotation if the value is greater than or equal to zero. + -1 + 40 + true + + Internal + No rotation + Yaw 45° + Yaw 90° + Yaw 135° + Yaw 180° + Yaw 225° + Yaw 270° + Yaw 315° + Roll 180° + Roll 180°, Yaw 45° + Roll 180°, Yaw 90° + Roll 180°, Yaw 135° + Pitch 180° + Roll 180°, Yaw 225° + Roll 180°, Yaw 270° + Roll 180°, Yaw 315° + Roll 90° + Roll 90°, Yaw 45° + Roll 90°, Yaw 90° + Roll 90°, Yaw 135° + Roll 270° + Roll 270°, Yaw 45° + Roll 270°, Yaw 90° + Roll 270°, Yaw 135° + Pitch 90° + Pitch 270° + Pitch 180°, Yaw 90° + Pitch 180°, Yaw 270° + Roll 90°, Pitch 90° + Roll 180°, Pitch 90° + Roll 270°, Pitch 90° + Roll 90°, Pitch 180° + Roll 270°, Pitch 180° + Roll 90°, Pitch 270° + Roll 180°, Pitch 270° + Roll 270°, Pitch 270° + Roll 90°, Pitch 180°, Yaw 90° + Roll 90°, Yaw 270° + Roll 90°, Pitch 68°, Yaw 293° + Pitch 315° + Roll 90°, Pitch 315° + + + + Gyroscope calibration temperature + Temperature during last calibration. + celcius + + + Gyro X-axis offset + + + Gyro Y-axis offset + + + Gyro Z-axis offset + + + ID of the Gyro that the calibration is for + + + Gyro 3 priority + + Uninitialized + Disabled + Min + Low + Medium (Default) + High + Max + + + + Rotation of gyro 3 relative to airframe + An internal sensor will force a value of -1, so a GCS should only attempt to configure the rotation if the value is greater than or equal to zero. + -1 + 40 + true + + Internal + No rotation + Yaw 45° + Yaw 90° + Yaw 135° + Yaw 180° + Yaw 225° + Yaw 270° + Yaw 315° + Roll 180° + Roll 180°, Yaw 45° + Roll 180°, Yaw 90° + Roll 180°, Yaw 135° + Pitch 180° + Roll 180°, Yaw 225° + Roll 180°, Yaw 270° + Roll 180°, Yaw 315° + Roll 90° + Roll 90°, Yaw 45° + Roll 90°, Yaw 90° + Roll 90°, Yaw 135° + Roll 270° + Roll 270°, Yaw 45° + Roll 270°, Yaw 90° + Roll 270°, Yaw 135° + Pitch 90° + Pitch 270° + Pitch 180°, Yaw 90° + Pitch 180°, Yaw 270° + Roll 90°, Pitch 90° + Roll 180°, Pitch 90° + Roll 270°, Pitch 90° + Roll 90°, Pitch 180° + Roll 270°, Pitch 180° + Roll 90°, Pitch 270° + Roll 180°, Pitch 270° + Roll 270°, Pitch 270° + Roll 90°, Pitch 180°, Yaw 90° + Roll 90°, Yaw 270° + Roll 90°, Pitch 68°, Yaw 293° + Pitch 315° + Roll 90°, Pitch 315° + + + + Gyroscope calibration temperature + Temperature during last calibration. + celcius + + + Gyro X-axis offset + + + Gyro Y-axis offset + + + Gyro Z-axis offset + + + ID of Magnetometer the calibration is for + + + Mag 0 priority + + Uninitialized + Disabled + Min + Low + Medium (Default) + High + Max + + + + Rotation of magnetometer 0 relative to airframe + An internal sensor will force a value of -1, so a GCS should only attempt to configure the rotation if the value is greater than or equal to zero. + -1 + 40 + true + + Internal + No rotation + Yaw 45° + Yaw 90° + Yaw 135° + Yaw 180° + Yaw 225° + Yaw 270° + Yaw 315° + Roll 180° + Roll 180°, Yaw 45° + Roll 180°, Yaw 90° + Roll 180°, Yaw 135° + Pitch 180° + Roll 180°, Yaw 225° + Roll 180°, Yaw 270° + Roll 180°, Yaw 315° + Roll 90° + Roll 90°, Yaw 45° + Roll 90°, Yaw 90° + Roll 90°, Yaw 135° + Roll 270° + Roll 270°, Yaw 45° + Roll 270°, Yaw 90° + Roll 270°, Yaw 135° + Pitch 90° + Pitch 270° + Pitch 180°, Yaw 90° + Pitch 180°, Yaw 270° + Roll 90°, Pitch 90° + Roll 180°, Pitch 90° + Roll 270°, Pitch 90° + Roll 90°, Pitch 180° + Roll 270°, Pitch 180° + Roll 90°, Pitch 270° + Roll 180°, Pitch 270° + Roll 270°, Pitch 270° + Roll 90°, Pitch 180°, Yaw 90° + Roll 90°, Yaw 270° + Roll 90°, Pitch 68°, Yaw 293° + Pitch 315° + Roll 90°, Pitch 315° + + + + Magnetometer calibration temperature + Temperature during last calibration. + celcius + + + X Axis throttle compensation for Mag 0 + Coefficient describing linear relationship between X component of magnetometer in body frame axis and either current or throttle depending on value of CAL_MAG_COMP_TYP. Unit for throttle-based compensation is [G] and for current-based compensation [G/kA] + + + Magnetometer X-axis off diagonal factor + + + Magnetometer X-axis offset + + + Magnetometer X-axis scaling factor + + + Y Axis throttle compensation for Mag 0 + Coefficient describing linear relationship between Y component of magnetometer in body frame axis and either current or throttle depending on value of CAL_MAG_COMP_TYP. Unit for throttle-based compensation is [G] and for current-based compensation [G/kA] + + + Magnetometer Y-axis off diagonal factor + + + Magnetometer Y-axis offset + + + Magnetometer Y-axis scaling factor + + + Z Axis throttle compensation for Mag 0 + Coefficient describing linear relationship between Z component of magnetometer in body frame axis and either current or throttle depending on value of CAL_MAG_COMP_TYP. Unit for throttle-based compensation is [G] and for current-based compensation [G/kA] + + + Magnetometer Z-axis off diagonal factor + + + Magnetometer Z-axis offset + + + Magnetometer Z-axis scaling factor + + + ID of Magnetometer the calibration is for + + + Mag 1 priority + + Uninitialized + Disabled + Min + Low + Medium (Default) + High + Max + + + + Rotation of magnetometer 1 relative to airframe + An internal sensor will force a value of -1, so a GCS should only attempt to configure the rotation if the value is greater than or equal to zero. + -1 + 40 + true + + Internal + No rotation + Yaw 45° + Yaw 90° + Yaw 135° + Yaw 180° + Yaw 225° + Yaw 270° + Yaw 315° + Roll 180° + Roll 180°, Yaw 45° + Roll 180°, Yaw 90° + Roll 180°, Yaw 135° + Pitch 180° + Roll 180°, Yaw 225° + Roll 180°, Yaw 270° + Roll 180°, Yaw 315° + Roll 90° + Roll 90°, Yaw 45° + Roll 90°, Yaw 90° + Roll 90°, Yaw 135° + Roll 270° + Roll 270°, Yaw 45° + Roll 270°, Yaw 90° + Roll 270°, Yaw 135° + Pitch 90° + Pitch 270° + Pitch 180°, Yaw 90° + Pitch 180°, Yaw 270° + Roll 90°, Pitch 90° + Roll 180°, Pitch 90° + Roll 270°, Pitch 90° + Roll 90°, Pitch 180° + Roll 270°, Pitch 180° + Roll 90°, Pitch 270° + Roll 180°, Pitch 270° + Roll 270°, Pitch 270° + Roll 90°, Pitch 180°, Yaw 90° + Roll 90°, Yaw 270° + Roll 90°, Pitch 68°, Yaw 293° + Pitch 315° + Roll 90°, Pitch 315° + + + + Magnetometer calibration temperature + Temperature during last calibration. + celcius + + + X Axis throttle compensation for Mag 1 + Coefficient describing linear relationship between X component of magnetometer in body frame axis and either current or throttle depending on value of CAL_MAG_COMP_TYP. Unit for throttle-based compensation is [G] and for current-based compensation [G/kA] + + + Magnetometer X-axis off diagonal factor + + + Magnetometer X-axis offset + + + Magnetometer X-axis scaling factor + + + Y Axis throttle compensation for Mag 1 + Coefficient describing linear relationship between Y component of magnetometer in body frame axis and either current or throttle depending on value of CAL_MAG_COMP_TYP. Unit for throttle-based compensation is [G] and for current-based compensation [G/kA] + + + Magnetometer Y-axis off diagonal factor + + + Magnetometer Y-axis offset + + + Magnetometer Y-axis scaling factor + + + Z Axis throttle compensation for Mag 1 + Coefficient describing linear relationship between Z component of magnetometer in body frame axis and either current or throttle depending on value of CAL_MAG_COMP_TYP. Unit for throttle-based compensation is [G] and for current-based compensation [G/kA] + + + Magnetometer Z-axis off diagonal factor + + + Magnetometer Z-axis offset + + + Magnetometer Z-axis scaling factor + + + ID of Magnetometer the calibration is for + + + Mag 2 priority + + Uninitialized + Disabled + Min + Low + Medium (Default) + High + Max + + + + Rotation of magnetometer 2 relative to airframe + An internal sensor will force a value of -1, so a GCS should only attempt to configure the rotation if the value is greater than or equal to zero. + -1 + 40 + true + + Internal + No rotation + Yaw 45° + Yaw 90° + Yaw 135° + Yaw 180° + Yaw 225° + Yaw 270° + Yaw 315° + Roll 180° + Roll 180°, Yaw 45° + Roll 180°, Yaw 90° + Roll 180°, Yaw 135° + Pitch 180° + Roll 180°, Yaw 225° + Roll 180°, Yaw 270° + Roll 180°, Yaw 315° + Roll 90° + Roll 90°, Yaw 45° + Roll 90°, Yaw 90° + Roll 90°, Yaw 135° + Roll 270° + Roll 270°, Yaw 45° + Roll 270°, Yaw 90° + Roll 270°, Yaw 135° + Pitch 90° + Pitch 270° + Pitch 180°, Yaw 90° + Pitch 180°, Yaw 270° + Roll 90°, Pitch 90° + Roll 180°, Pitch 90° + Roll 270°, Pitch 90° + Roll 90°, Pitch 180° + Roll 270°, Pitch 180° + Roll 90°, Pitch 270° + Roll 180°, Pitch 270° + Roll 270°, Pitch 270° + Roll 90°, Pitch 180°, Yaw 90° + Roll 90°, Yaw 270° + Roll 90°, Pitch 68°, Yaw 293° + Pitch 315° + Roll 90°, Pitch 315° + + + + Magnetometer calibration temperature + Temperature during last calibration. + celcius + + + X Axis throttle compensation for Mag 2 + Coefficient describing linear relationship between X component of magnetometer in body frame axis and either current or throttle depending on value of CAL_MAG_COMP_TYP. Unit for throttle-based compensation is [G] and for current-based compensation [G/kA] + + + Magnetometer X-axis off diagonal factor + + + Magnetometer X-axis offset + + + Magnetometer X-axis scaling factor + + + Y Axis throttle compensation for Mag 2 + Coefficient describing linear relationship between Y component of magnetometer in body frame axis and either current or throttle depending on value of CAL_MAG_COMP_TYP. Unit for throttle-based compensation is [G] and for current-based compensation [G/kA] + + + Magnetometer Y-axis off diagonal factor + + + Magnetometer Y-axis offset + + + Magnetometer Y-axis scaling factor + + + Z Axis throttle compensation for Mag 2 + Coefficient describing linear relationship between Z component of magnetometer in body frame axis and either current or throttle depending on value of CAL_MAG_COMP_TYP. Unit for throttle-based compensation is [G] and for current-based compensation [G/kA] + + + Magnetometer Z-axis off diagonal factor + + + Magnetometer Z-axis offset + + + Magnetometer Z-axis scaling factor + + + ID of Magnetometer the calibration is for + + + Mag 3 priority + + Uninitialized + Disabled + Min + Low + Medium (Default) + High + Max + + + + Rotation of magnetometer 3 relative to airframe + An internal sensor will force a value of -1, so a GCS should only attempt to configure the rotation if the value is greater than or equal to zero. + -1 + 40 + true + + Internal + No rotation + Yaw 45° + Yaw 90° + Yaw 135° + Yaw 180° + Yaw 225° + Yaw 270° + Yaw 315° + Roll 180° + Roll 180°, Yaw 45° + Roll 180°, Yaw 90° + Roll 180°, Yaw 135° + Pitch 180° + Roll 180°, Yaw 225° + Roll 180°, Yaw 270° + Roll 180°, Yaw 315° + Roll 90° + Roll 90°, Yaw 45° + Roll 90°, Yaw 90° + Roll 90°, Yaw 135° + Roll 270° + Roll 270°, Yaw 45° + Roll 270°, Yaw 90° + Roll 270°, Yaw 135° + Pitch 90° + Pitch 270° + Pitch 180°, Yaw 90° + Pitch 180°, Yaw 270° + Roll 90°, Pitch 90° + Roll 180°, Pitch 90° + Roll 270°, Pitch 90° + Roll 90°, Pitch 180° + Roll 270°, Pitch 180° + Roll 90°, Pitch 270° + Roll 180°, Pitch 270° + Roll 270°, Pitch 270° + Roll 90°, Pitch 180°, Yaw 90° + Roll 90°, Yaw 270° + Roll 90°, Pitch 68°, Yaw 293° + Pitch 315° + Roll 90°, Pitch 315° + + + + Magnetometer calibration temperature + Temperature during last calibration. + celcius + + + X Axis throttle compensation for Mag 3 + Coefficient describing linear relationship between X component of magnetometer in body frame axis and either current or throttle depending on value of CAL_MAG_COMP_TYP. Unit for throttle-based compensation is [G] and for current-based compensation [G/kA] + + + Magnetometer X-axis off diagonal factor + + + Magnetometer X-axis offset + + + Magnetometer X-axis scaling factor + + + Y Axis throttle compensation for Mag 3 + Coefficient describing linear relationship between Y component of magnetometer in body frame axis and either current or throttle depending on value of CAL_MAG_COMP_TYP. Unit for throttle-based compensation is [G] and for current-based compensation [G/kA] + + + Magnetometer Y-axis off diagonal factor + + + Magnetometer Y-axis offset + + + Magnetometer Y-axis scaling factor + + + Z Axis throttle compensation for Mag 3 + Coefficient describing linear relationship between Z component of magnetometer in body frame axis and either current or throttle depending on value of CAL_MAG_COMP_TYP. Unit for throttle-based compensation is [G] and for current-based compensation [G/kA] + + + Magnetometer Z-axis off diagonal factor + + + Magnetometer Z-axis offset + + + Magnetometer Z-axis scaling factor + Type of magnetometer compensation @@ -7840,23 +8421,23 @@ Differential pressure sensor offset The offset (zero-reading) in Pascal - + Maximum height above ground when reliant on optical flow This parameter defines the maximum distance from ground at which the optical flow sensor operates reliably. The height setpoint will be limited to be no greater than this value when the navigation system is completely reliant on optical flow data and the height above ground estimate is valid. The sensor may be usable above this height, but accuracy will progressively degrade. 1.0 - 100.0 + 25.0 m 1 0.1 - + Magnitude of maximum angular flow rate reliably measurable by the optical flow sensor Optical flow data will not fused by the estimators if the magnitude of the flow rate exceeds this value and control loops will be instructed to limit ground speed such that the flow rate produced by movement over ground is less than 50% of this value. 1.0 rad/s 2 - + Minimum height above ground when reliant on optical flow This parameter defines the minimum distance from ground at which the optical flow sensor operates reliably. The sensor may be usable below this height, but accuracy will progressively reduce to loss of focus. 0.0 @@ -7867,11 +8448,6 @@ - - Enable external ADS1115 ADC - If enabled, the internal ADC is not used. - true - Capacity/current multiplier for high-current capable SMBUS battery 1 @@ -7926,9 +8502,20 @@ 2.00 m - - For legacy QGC support only - Use SENS_MAG_SIDES instead + + Automatically set external rotations + During calibration attempt to automatically determine the rotation of external magnetometers. + + + Bitfield selecting mag sides for calibration + If set to two side calibration, only the offsets are estimated, the scale calibration is left unchanged. Thus an initial six side calibration is recommended. Bits: ORIENTATION_TAIL_DOWN = 1 ORIENTATION_NOSE_DOWN = 2 ORIENTATION_LEFT = 4 ORIENTATION_RIGHT = 8 ORIENTATION_UPSIDE_DOWN = 16 ORIENTATION_RIGHTSIDE_UP = 32 + 34 + 63 + + Two side calibration + Three side calibration + Six side calibration + Low pass filter cutoff frequency for accel @@ -7963,7 +8550,6 @@ Bandwidth per notch filter when using dynamic notch filtering with ESC RPM. 5 30 - Hz IMU gyro dynamic notch filtering @@ -7975,17 +8561,6 @@ FFT - - IMU gyro dynamic notch filter harmonics - ESC RPM number of harmonics (multiples of RPM) for ESC RPM dynamic notch filtering. - 1 - 7 - - - IMU gyro dynamic notch filter minimum frequency - Minimum notch filter frequency in Hz. - Hz - IMU gyro FFT enable true @@ -8020,33 +8595,17 @@ 1 30 - + Notch filter bandwidth for gyro - The frequency width of the stop band for the 2nd order notch filter on the primary gyro. See "IMU_GYRO_NF0_FRQ" to activate the filter and to set the notch frequency. Applies to both angular velocity and angular acceleration sent to the controllers. + The frequency width of the stop band for the 2nd order notch filter on the primary gyro. See "IMU_GYRO_NF_FREQ" to activate the filter and to set the notch frequency. Applies to both angular velocity and angular acceleration sent to the controllers. 0 100 Hz true - + Notch filter frequency for gyro - The center frequency for the 2nd order notch filter on the primary gyro. This filter can be enabled to avoid feedback amplification of structural resonances at a specific frequency. This only affects the signal sent to the controllers, not the estimators. Applies to both angular velocity and angular acceleration sent to the controllers. See "IMU_GYRO_NF0_BW" to set the bandwidth of the filter. A value of 0 disables the filter. - 0 - 1000 - Hz - true - - - Notch filter 1 bandwidth for gyro - The frequency width of the stop band for the 2nd order notch filter on the primary gyro. See "IMU_GYRO_NF1_FRQ" to activate the filter and to set the notch frequency. Applies to both angular velocity and angular acceleration sent to the controllers. - 0 - 100 - Hz - true - - - Notch filter 2 frequency for gyro - The center frequency for the 2nd order notch filter on the primary gyro. This filter can be enabled to avoid feedback amplification of structural resonances at a specific frequency. This only affects the signal sent to the controllers, not the estimators. Applies to both angular velocity and angular acceleration sent to the controllers. See "IMU_GYRO_NF1_BW" to set the bandwidth of the filter. A value of 0 disables the filter. + The center frequency for the 2nd order notch filter on the primary gyro. This filter can be enabled to avoid feedback amplification of structural resonances at a specific frequency. This only affects the signal sent to the controllers, not the estimators. Applies to both angular velocity and angular acceleration sent to the controllers. See "IMU_GYRO_NF_BW" to set the bandwidth of the filter. A value of 0 disables the filter. 0 1000 Hz @@ -8082,41 +8641,6 @@ 400 Hz - - INA220 Power Monitor Config - 0 - 65535 - 1 - 1 - - - INA220 Power Monitor Battery Max Current - 0.1 - 500.0 - 2 - 0.1 - - - INA220 Power Monitor Regulator Max Current - 0.1 - 500.0 - 2 - 0.1 - - - INA220 Power Monitor Battery Shunt - 0.000000001 - 0.1 - 10 - .000000001 - - - INA220 Power Monitor Regulator Shunt - 0.000000001 - 0.1 - 10 - .000000001 - INA226 Power Monitor Config 0 @@ -8173,6 +8697,14 @@ 10 .000000001 + + PCF8583 rotorfreq (i2c) i2c address + true + + Address 0x50 (80) + Address 0x51 (81) + + PCF8583 rotorfreq (i2c) pulse count Nmumber of signals per rotation of actuator @@ -8187,60 +8719,23 @@ PCF8583 rotorfreq (i2c) pulse reset value - Internal device counter is reset to 0 when overrun this value, counter is able to store up to 6 digits reset of counter takes some time - measurement with reset has worse accuracy. 0 means reset counter after every measurement. + Internal device counter is reset to 0 when overun this value, counter is able to store upto 6 digits reset of counter takes some time - measurement with reset has worse accurancy. 0 means reset counter after every measurement. true - - AFBR Rangefinder Short/Long Range Threshold Hysteresis - This parameter defines the hysteresis for switching between short and long range mode. - 1 - 10 - m - - - AFBR Rangefinder Long Range Rate - This parameter defines measurement rate of the AFBR Rangefinder in long range mode. - 1 - 100 - - - AFBR Rangefinder Mode - This parameter defines the mode of the AFBR Rangefinder. - 0 - 3 - true - - Short Range Mode - Long Range Mode - High Speed Short Range Mode - High Speed Long Range Mode - - - - AFBR Rangefinder Short Range Rate - This parameter defines measurement rate of the AFBR Rangefinder in short range mode. - 1 - 100 - - - AFBR Rangefinder Short/Long Range Threshold - This parameter defines the threshold for switching between short and long range mode. The mode will switch from short to long range when the distance is greater than the threshold plus the hysteresis. The mode will switch from long to short range when the distance is less than the threshold minus the hysteresis. - 1 - 50 - m - QNH for barometer 500 1500 hPa + true Baro max rate - Barometric air data maximum publication rate. This is an upper bound, actual barometric data rate is still dependent on the sensor. + Barometric air data maximum publication rate. This is an upper bound, actual barometric data rate is still dependant on the sensor. 1 200 Hz + true Board rotation @@ -8317,34 +8812,6 @@ Enabled - - Analog Devices ADIS16507 IMU (external SPI) - true - - - Enable simulated airspeed sensor instance - 0 - 1 - true - - Disabled - Enabled - - - - ASP5033 differential pressure sensor (external I2C) - true - - - Enable simulated barometer sensor instance - 0 - 1 - true - - Disabled - Enabled - - SMBUS Smart battery driver BQ40Z50 and BQ40Z80 true @@ -8353,21 +8820,6 @@ Eagle Tree airspeed sensor (external I2C) true - - Enable simulated GPS sinstance - 0 - 1 - true - - Disabled - Enabled - - - - Enable INA220 Power Monitor - For systems a INA220 Power Monitor, this should be set to true - true - Enable INA226 Power Monitor For systems a INA226 Power Monitor, this should be set to true @@ -8383,10 +8835,6 @@ For systems a INA238 Power Monitor, this should be set to true true - - IR-LOCK Sensor (external I2C) - true - Lidar-Lite (LL40LS) 0 @@ -8398,16 +8846,6 @@ I2C - - Enable simulated magnetometer sensor instance - 0 - 1 - true - - Disabled - Enabled - - Maxbotix Sonar (mb12xx) true @@ -8422,37 +8860,18 @@ Autodetect - - TE MS4515 differential pressure sensor (external I2C) + + TE MS4525 differential pressure sensor (external I2C) true - - TE MS4525DO differential pressure sensor (external I2C) - true - - - TE MS5525DSO differential pressure sensor (external I2C) - true - - - PAA3905 Optical Flow + + TE MS5525 differential pressure sensor (external I2C) true - PAW3902/PAW3903 Optical Flow + PAW3902 & PAW3903 Optical Flow true - - PCF8583 eneable driver - Run PCF8583 driver automatically - 0 - 1 - true - - Disabled - Eneabled - - PGA460 Ultrasonic driver (PGA460) true @@ -8496,25 +8915,12 @@ SF11/c SF/LW20/b SF/LW20/c - SF/LW30/d - - SHT3x temperature and hygrometer - true - - - Goertek SPL06 Barometer (external I2C) - true - HY-SRF05 / HC-SR05 true - - TF02 Pro Distance Sensor (i2c) - true - Thermal control of sensor temperature @@ -8537,10 +8943,6 @@ TREvo3m - - VL53L0X Distance Sensor - true - VL53L1X Distance Sensor true @@ -8549,17 +8951,10 @@ External I2C probe Probe for optional external I2C devices. - - Optical flow max rate - Optical flow data maximum publication rate. This is an upper bound, actual optical flow data rate is still dependent on the sensor. - 1 - 200 - Hz + + PX4Flow board rotation + This parameter defines the yaw rotation of the PX4FLOW board relative to the vehicle body frame. Zero rotation is defined as X on flow board pointing towards front of vehicle. The recommneded installation default for the PX4FLOW board is with the Y axis forward (270 deg yaw). true - - - Optical flow rotation - This parameter defines the yaw rotation of the optical flow relative to the vehicle body frame. Zero rotation is defined as X on flow board pointing towards front of vehicle. No rotation Yaw 45° @@ -8571,7 +8966,7 @@ Yaw 315° - + Multi GPS Blending Control Mask Set bits in the following positions to set which GPS accuracy metrics will be used to calculate the blending weight. Set to zero to disable and always used first GPS instance. 0 : Set to true to use speed accuracy 1 : Set to true to use horizontal position accuracy 2 : Set to true to use vertical position accuracy 0 @@ -8596,14 +8991,6 @@ s 1 - - IMU auto calibration - Automatically initialize IMU (accel/gyro) calibration from bias estimates if available. - - - IMU notify clipping - Notify the user if the IMU is clipping - Sensors hub IMU mode true @@ -8645,14 +9032,10 @@ For systems with an external barometer, this should be set to false to make sure that the external is used. true - + Magnetometer auto calibration Automatically initialize magnetometer calibration from bias estimate if available. - - Automatically set external rotations - During calibration attempt to automatically determine the rotation of external magnetometers. - Sensors hub mag mode true @@ -8661,25 +9044,14 @@ Publish primary magnetometer - + Magnetometer max rate - Magnetometer data maximum publication rate. This is an upper bound, actual magnetometer data rate is still dependent on the sensor. + Magnetometer data maximum publication rate. This is an upper bound, actual magnetometer data rate is still dependant on the sensor. 1 200 Hz true - - Bitfield selecting mag sides for calibration - If set to two side calibration, only the offsets are estimated, the scale calibration is left unchanged. Thus an initial six side calibration is recommended. Bits: ORIENTATION_TAIL_DOWN = 1 ORIENTATION_NOSE_DOWN = 2 ORIENTATION_LEFT = 4 ORIENTATION_RIGHT = 8 ORIENTATION_UPSIDE_DOWN = 16 ORIENTATION_RIGHTSIDE_UP = 32 - 34 - 63 - - Two side calibration - Three side calibration - Six side calibration - - MaxBotix MB12XX Sensor 0 Rotation This parameter defines the rotation of the sensor relative to the platform. @@ -9101,16 +9473,6 @@ Target IMU device ID to regulate temperature - - Dynamically simulate failure of airspeed sensor instance - 0 - 1 - true - - Disabled - Enabled - - VOXL Power Monitor Shunt, Battery 0.000000001 @@ -9128,31 +9490,14 @@ true - - - MXS Serial Communication Baud rate - Baudrate for the Serial Port connected to the MXS Transponder - 0 - 10 - true - - 38400 - 600 - 4800 - 9600 - RESERVED - 57600 - 115200 - 230400 - 19200 - 460800 - 921600 - - - + + Barometer offset in meters + Absolute value superior to 10000 will disable barometer + m + - distance sensor maximum range + distance sensor maximun range 0.0 1000.0 m @@ -9160,7 +9505,7 @@ 0.01 - distance sensor minimum range + distance sensor minimun range 0.0 10.0 m @@ -9168,13 +9513,18 @@ 0.01 - if >= 0 the distance sensor measures will be overridden by this value + if >= 0 the distance sensor measures will be overrided by this value Absolute value superior to 10000 will disable distance sensor m + + Number of GPS satellites used + 0 + 50 + Vehicle inertia about X axis - The inertia is a 3 by 3 symmetric matrix. It represents the difficulty of the vehicle to modify its angular rate. + The intertia is a 3 by 3 symmetric matrix. It represents the difficulty of the vehicle to modify its angular rate. 0.0 kg m^2 3 @@ -9182,21 +9532,21 @@ Vehicle cross term inertia xy - The inertia is a 3 by 3 symmetric matrix. This value can be set to 0 for a quad symmetric about its center of mass. + The intertia is a 3 by 3 symmetric matrix. This value can be set to 0 for a quad symmetric about its center of mass. kg m^2 3 0.005 Vehicle cross term inertia xz - The inertia is a 3 by 3 symmetric matrix. This value can be set to 0 for a quad symmetric about its center of mass. + The intertia is a 3 by 3 symmetric matrix. This value can be set to 0 for a quad symmetric about its center of mass. kg m^2 3 0.005 Vehicle inertia about Y axis - The inertia is a 3 by 3 symmetric matrix. It represents the difficulty of the vehicle to modify its angular rate. + The intertia is a 3 by 3 symmetric matrix. It represents the difficulty of the vehicle to modify its angular rate. 0.0 kg m^2 3 @@ -9204,14 +9554,14 @@ Vehicle cross term inertia yz - The inertia is a 3 by 3 symmetric matrix. This value can be set to 0 for a quad symmetric about its center of mass. + The intertia is a 3 by 3 symmetric matrix. This value can be set to 0 for a quad symmetric about its center of mass. kg m^2 3 0.005 Vehicle inertia about Z axis - The inertia is a 3 by 3 symmetric matrix. It represents the difficulty of the vehicle to modify its angular rate. + The intertia is a 3 by 3 symmetric matrix. It represents the difficulty of the vehicle to modify its angular rate. 0.0 kg m^2 3 @@ -9256,6 +9606,33 @@ 1800000000 deg*1e7 + + North magnetic field at the initial location + This value represents the North magnetic field at the initial location. A magnetic field calculator can be found on the NOAA website Note, the values need to be converted from nano Tesla to Gauss LAT0, LON0, H0, MU_X, MU_Y, and MU_Z should ideally be consistent among each others to represent a physical ground location on Earth. + -1.0 + 1.0 + gauss + 2 + 0.001 + + + East magnetic field at the initial location + This value represents the East magnetic field at the initial location. A magnetic field calculator can be found on the NOAA website Note, the values need to be converted from nano Tesla to Gauss LAT0, LON0, H0, MU_X, MU_Y, and MU_Z should ideally be consistent among each others to represent a physical ground location on Earth. + -1.0 + 1.0 + gauss + 2 + 0.001 + + + Down magnetic field at the initial location + This value represents the Down magnetic field at the initial location. A magnetic field calculator can be found on the NOAA website Note, the values need to be converted from nano Tesla to Gauss LAT0, LON0, H0, MU_X, MU_Y, and MU_Z should ideally be consistent among each others to represent a physical ground location on Earth. + -1.0 + 1.0 + gauss + 2 + 0.001 + Pitch arm length This is the arm length generating the pitching moment This value can be measured with a ruler. This corresponds to half the distance between the front and rear motors. @@ -9272,6 +9649,21 @@ 2 0.05 + + magnetometer X offset in Gauss + Absolute value superior to 10000 will disable magnetometer + gauss + + + magnetometer Y offset in Gauss + Absolute value superior to 10000 will disable magnetometer + gauss + + + magnetometer Z offset in Gauss + Absolute value superior to 10000 will disable magnetometer + gauss + Vehicle mass This value can be measured by weighting the quad on a scale. @@ -9305,9 +9697,8 @@ Vehicle type true - Multicopter - Fixed-Wing - Tailsitter + MC + FW @@ -9317,25 +9708,12 @@ simulated barometer temperature offset - celcius simulated GPS number of satellites used 0 50 - - simulator origin altitude - m - - - simulator origin latitude - deg - - - simulator origin longitude - deg - simulated magnetometer X offset gauss @@ -9390,7 +9768,7 @@ Required temperature rise during thermal calibration - A temperature increase greater than this value is required during calibration. Calibration will complete for each sensor when the temperature increase above the starting temperature exceeds the value set by SYS_CAL_TDEL. If the temperature rise is insufficient, the calibration will continue indefinitely and the board will need to be repowered to exit. + A temperature increase greater than this value is required during calibration. Calibration will complete for each sensor when the temperature increase above the starting temeprature exceeds the value set by SYS_CAL_TDEL. If the temperature rise is insufficient, the calibration will continue indefinitely and the board will need to be repowered to exit. 10 celcius @@ -9404,6 +9782,11 @@ Temperature calibration for each sensor will ignore data if the temperature is lower than the value set by SYS_CAL_TMIN. celcius + + Enable Dynamic Control Allocation + If disabled, the existing mixing implementation is used. If enabled, dynamic control allocation with runtime configuration of the mixing and output functions is used. Note: this is work-in-progress and not all vehicle types are supported yet. + true + Dataman storage backend true @@ -9413,14 +9796,9 @@ RAM (not persistent) - + Enable factory calibration mode If enabled, future sensor calibrations will be stored to /fs/mtd_caldata. Note: this is only supported on boards with a separate calibration storage /fs/mtd_caldata. - - Disabled - All sensors - All sensors except mag - Enable failure injection @@ -9436,17 +9814,11 @@ Disable this if the system has no GPS. If disabled, the sensors hub will not process sensor_gps, and GPS will not be available for the rest of the system. true - + Control if the vehicle has a magnetometer - Set this to 0 if the board has no magnetometer. If set to 0, the preflight checks will not check for the presence of a magnetometer, otherwise N sensors are required. + Disable this if the board has no magnetometer, such as the Omnibus F4 SD. If disabled, the preflight checks will not check for the presence of a magnetometer. true - - Number of distance sensors to check being available - The preflight check will fail if fewer than this number of distance sensors with valid data is present. Disable the check with 0. - 0 - 4 - Enable HITL/SIH mode on next boot While enabled the system will boot in Hardware-In-The-Loop (HITL) or Simulation-In-Hardware (SIH) mode and not enable all sensors and checks. When disabled the same vehicle can be flown normally. Set to 'external HITL', if the system should perform as if it were a real vehicle (the only difference to a real system is then only the parameter value, which can be used for log analysis). @@ -9476,6 +9848,15 @@ Enable stack checking + + Set usage of IO board + Can be used to use a configure the use of the IO board. + true + + IO PWM disabled (RC only) + IO enabled (RC & PWM) + + @@ -10057,234 +10438,6 @@ Thermal compensation for rate gyro sensors true - - ID of Magnetometer that the calibration is for - - - Magnetometer calibration maximum temperature - - - Magnetometer calibration minimum temperature - - - Magnetometer calibration reference temperature - - - Magnetometer offset temperature ^0 polynomial coefficient - X axis - - - Magnetometer offset temperature ^0 polynomial coefficient - Y axis - - - Magnetometer offset temperature ^0 polynomial coefficient - Z axis - - - Magnetometer offset temperature ^1 polynomial coefficient - X axis - - - Magnetometer offset temperature ^1 polynomial coefficient - Y axis - - - Magnetometer offset temperature ^1 polynomial coefficient - Z axis - - - Magnetometer offset temperature ^2 polynomial coefficient - X axis - - - Magnetometer offset temperature ^2 polynomial coefficient - Y axis - - - Magnetometer offset temperature ^2 polynomial coefficient - Z axis - - - Magnetometer offset temperature ^3 polynomial coefficient - X axis - - - Magnetometer offset temperature ^3 polynomial coefficient - Y axis - - - Magnetometer offset temperature ^3 polynomial coefficient - Z axis - - - ID of Magnetometer that the calibration is for - - - Magnetometer calibration maximum temperature - - - Magnetometer calibration minimum temperature - - - Magnetometer calibration reference temperature - - - Magnetometer offset temperature ^0 polynomial coefficient - X axis - - - Magnetometer offset temperature ^0 polynomial coefficient - Y axis - - - Magnetometer offset temperature ^0 polynomial coefficient - Z axis - - - Magnetometer offset temperature ^1 polynomial coefficient - X axis - - - Magnetometer offset temperature ^1 polynomial coefficient - Y axis - - - Magnetometer offset temperature ^1 polynomial coefficient - Z axis - - - Magnetometer offset temperature ^2 polynomial coefficient - X axis - - - Magnetometer offset temperature ^2 polynomial coefficient - Y axis - - - Magnetometer offset temperature ^2 polynomial coefficient - Z axis - - - Magnetometer offset temperature ^3 polynomial coefficient - X axis - - - Magnetometer offset temperature ^3 polynomial coefficient - Y axis - - - Magnetometer offset temperature ^3 polynomial coefficient - Z axis - - - ID of Magnetometer that the calibration is for - - - Magnetometer calibration maximum temperature - - - Magnetometer calibration minimum temperature - - - Magnetometer calibration reference temperature - - - Magnetometer offset temperature ^0 polynomial coefficient - X axis - - - Magnetometer offset temperature ^0 polynomial coefficient - Y axis - - - Magnetometer offset temperature ^0 polynomial coefficient - Z axis - - - Magnetometer offset temperature ^1 polynomial coefficient - X axis - - - Magnetometer offset temperature ^1 polynomial coefficient - Y axis - - - Magnetometer offset temperature ^1 polynomial coefficient - Z axis - - - Magnetometer offset temperature ^2 polynomial coefficient - X axis - - - Magnetometer offset temperature ^2 polynomial coefficient - Y axis - - - Magnetometer offset temperature ^2 polynomial coefficient - Z axis - - - Magnetometer offset temperature ^3 polynomial coefficient - X axis - - - Magnetometer offset temperature ^3 polynomial coefficient - Y axis - - - Magnetometer offset temperature ^3 polynomial coefficient - Z axis - - - ID of Magnetometer that the calibration is for - - - Magnetometer calibration maximum temperature - - - Magnetometer calibration minimum temperature - - - Magnetometer calibration reference temperature - - - Magnetometer offset temperature ^0 polynomial coefficient - X axis - - - Magnetometer offset temperature ^0 polynomial coefficient - Y axis - - - Magnetometer offset temperature ^0 polynomial coefficient - Z axis - - - Magnetometer offset temperature ^1 polynomial coefficient - X axis - - - Magnetometer offset temperature ^1 polynomial coefficient - Y axis - - - Magnetometer offset temperature ^1 polynomial coefficient - Z axis - - - Magnetometer offset temperature ^2 polynomial coefficient - X axis - - - Magnetometer offset temperature ^2 polynomial coefficient - Y axis - - - Magnetometer offset temperature ^2 polynomial coefficient - Z axis - - - Magnetometer offset temperature ^3 polynomial coefficient - X axis - - - Magnetometer offset temperature ^3 polynomial coefficient - Y axis - - - Magnetometer offset temperature ^3 polynomial coefficient - Z axis - - - Thermal compensation for magnetometer sensors - true - - - - - Sagetech External Configuration Mode - Disables auto-configuration mode enabling MXS config through external software. - true - - - Sagetech MXS mode configuration - This parameter defines the operating mode of the MXS - 0 - 3 - false - - Off - On - Standby - Alt - - - - Sagetech MXS Participant Configuration - The MXS communication port to receive Target data from - 0 - 2 - false - - Auto - COM0 - COM1 - - @@ -10292,27 +10445,31 @@ 20000 1000000 - - Enable MovingBaselineData publication + + Cannode flow board rotation + This parameter defines the yaw rotation of the Cannode flow board relative to the vehicle body frame. Zero rotation is defined as X on flow board pointing towards front of vehicle. true + + No rotation + Yaw 45° + Yaw 90° + Yaw 135° + Yaw 180° + Yaw 225° + Yaw 270° + Yaw 315° + - - Enable MovingBaselineData subscription - 1 - true - - - Enable RTCM subscription - true + + UAVCAN Node ID + Read the specs at http://uavcan.org to learn more about Node ID. + 1 + 125 CAN built-in bus termination 1 - - Simulator Gazebo bridge enable - true - UAVCAN CAN bus bitrate 20000 @@ -10333,6 +10490,10 @@ Sensors and Actuators (ESCs) Automatic Config + + UAVCAN ESC will spin at idle throttle when armed, even if the mixer outputs zero setpoints + true + UAVCAN ANTI_COLLISION light operating mode This parameter defines the minimum condition under which the system will command the ANTI_COLLISION lights on 0 - Always off 1 - When autopilot is armed 2 - When autopilot is prearmed 3 - Always on @@ -10392,21 +10553,6 @@ 125 true - - publish Arming Status stream - Enable UAVCAN Arming Status stream publication uavcan::equipment::safety::ArmingStatus - true - - - publish moving baseline data RTCM stream - Enable UAVCAN RTCM stream publication ardupilot::gnss::MovingBaselineData - true - - - publish RTCM stream - Enable UAVCAN RTCM stream publication uavcan::equipment::gnss::RTCMStream - true - UAVCAN rangefinder maximum range This parameter defines the maximum valid range for a rangefinder connected via UAVCAN. @@ -10429,21 +10575,16 @@ subscription battery - Enable UAVCAN battery subscription. uavcan::equipment::power::BatteryInfo ardupilot::equipment::power::BatteryInfoAux 0 - Disable 1 - Use raw data. Recommended for Smart battery 2 - Filter the data with internal battery library + Enable UAVCAN battery subscription. 1) uavcan::equipment::power::BatteryInfo 2) cuav::equipment::power::CBAT 0 2 true - Disable - Raw data - Filter data + disabled + default + CUAV battery monitor - - subscription button - Enable UAVCAN button subscription. ardupilot::indication::Button - true - subscription differential pressure Enable UAVCAN differential pressure subscription. uavcan::equipment::air_data::RawAirData @@ -10459,14 +10600,9 @@ Enable UAVCAN GPS subscriptions. uavcan::equipment::gnss::Fix uavcan::equipment::gnss::Fix2 uavcan::equipment::gnss::Auxiliary true - - subscription hygrometer - Enable UAVCAN hygrometer subscriptions. dronecan::sensors::hygrometer::Hygrometer - true - subscription ICE - Enable UAVCAN internal combustion engine (ICE) subscription. uavcan::equipment::ice::reciprocating::Status + Enable UAVCAN internal combusion engine (ICE) subscription. uavcan::equipment::ice::reciprocating::Status true @@ -10476,12 +10612,100 @@ subscription magnetometer - Enable UAVCAN mag subscription. uavcan::equipment::ahrs::MagneticFieldStrength uavcan::equipment::ahrs::MagneticFieldStrength2 + Enable UAVCAN GPS subscription. uavcan::equipment::ahrs::MagneticFieldStrength uavcan::equipment::ahrs::MagneticFieldStrength2 true subscription range finder - Enable UAVCAN range finder subscription. uavcan::equipment::range_sensor::Measurement + Enable UAVCAN GPS subscription. uavcan::equipment::range_sensor::Measurement + true + + + + + UAVCAN/CAN v1 bus bitrate + 20000 + 1000000 + bit/s + true + + + UAVCAN v1 + 0 - UAVCAN disabled. 1 - Enables UAVCANv1 + true + + + actuator_outputs uORB over UAVCAN v1 publication port ID + -1 + 6143 + + + DS-015 battery parameters subscription port ID + -1 + 6143 + + + DS-015 battery status subscription port ID + -1 + 6143 + + + DS-015 battery energy source subscription port ID + -1 + 6143 + + + ESC 0 subscription port ID + -1 + 6143 + + + UAVCAN v1 ESC publication port ID + -1 + 6143 + + + GPS 0 subscription port ID + -1 + 6143 + + + GPS 1 subscription port ID + -1 + 6143 + + + UAVCAN v1 GPS publication port ID + -1 + 6143 + + + UAVCAN v1 leagcy battery port ID + -1 + 6143 + + + UAVCAN v1 Servo publication port ID + -1 + 6143 + + + sensor_gps uORB over UAVCAN v1 subscription port ID + -1 + 6143 + + + sensor_gps uORB over UAVCAN v1 publication port ID + -1 + 6143 + + + + + UAVCAN v1 Node ID + Read the specs at http://uavcan.org to learn more about Node ID. + -1 + 125 true @@ -10576,36 +10800,51 @@ 2 1 - - Duration motor tilt up in backtransition - Time in seconds it takes to tilt form VT_TILT_FW to VT_TILT_MC. - 0.1 - 10 - s + + Backtransition deceleration setpoint to pitch feedforward gain + 0 + 0.2 + rad s^2/m 1 - 0.1 + 0.01 Backtransition deceleration setpoint to pitch I gain 0 0.3 rad s/m - 2 + 1 0.05 Approximate deceleration during back transition - Used to calculate back transition distance in an auto mode. For standard vtol and tiltrotors a controller is used to track this value during the transition. + The approximate deceleration during a back transition in m/s/s Used to calculate back transition distance in mission mode. A lower value will make the VTOL transition further from the destination waypoint. For standard vtol and tiltrotors a controller is used to track this value during the transition. 0.5 10 m/s^2 2 0.1 - - Maximum duration of a back transition - Transition is also declared over if the groundspeed drops below MPC_XY_CRUISE. - 0.1 + + Delay in seconds before applying back transition throttle + Set this to a value greater than 0 to give the motor time to spin down. unit s + 0 + 10 + 2 + 1 + + + Output on airbrakes channel during back transition + Used for airbrakes or with ESCs that have reverse thrust enabled on a seperate channel Airbrakes need to be enables for your selected model/mixer + 0 + 1 + 2 + 0.01 + + + Duration of a back transition + Time in seconds used for a back transition + 0.00 20.00 s 2 @@ -10617,192 +10856,174 @@ 0.0 20.0 s - 1 - 0.1 - - Lock control surfaces in hover - If set to 1 the control surfaces are locked at the disarmed value in multicopter mode. - - - Use fixed-wing actuation in hover to accelerate forward - This feature can be used to avoid the plane having to pitch nose down in order to move forward. Prevents large, negative lift from pitching nose down into wind. Fixed-wing forward actuators refers to puller/pusher (standard VTOL), or forward-tilt (tiltrotor VTOL). Only active if demanded down pitch is below VT_PITCH_MIN. Use VT_FWD_THRUST_SC to tune it. Only active (if enabled) in Altitude, Position and Auto modes, not in Stabilized. - - Disabled - Enabled (except LANDING) - Enabled if distance to ground above MPC_LAND_ALT1 - Enabled if distance to ground above MPC_LAND_ALT2 - Enabled constantly - Enabled if distance to ground above MPC_LAND_ALT1 (except LANDING) - Enabled if distance to ground above MPC_LAND_ALT2 (except LANDING) - - - - Fixed-wing actuation thrust scale for hover forward flight - Scale applied to the demanded down-pitch to get the fixed-wing forward actuation in hover mode. Enabled via VT_FWD_THRUST_EN. - 0.0 - 2.0 + + Target throttle value for the transition to hover flight + standard vtol: pusher tailsitter, tiltrotor: main throttle Note for standard vtol: For ESCs and mixers that support reverse thrust on low PWM values set this to a negative value to apply active breaking For ESCs that support thrust reversal with a control channel please set VT_B_REV_OUT and set this to a positive value to apply active breaking + -1 + 1 2 0.01 + + Lock elevons in multicopter mode + If set to 1 the elevons are locked in multicopter mode + + + Enable/disable usage of fixed-wing actuators in hover to generate forward force (instead of pitching down) + This technique can be used to avoid the plane having to pitch down in order to move forward. This prevents large, negative lift values being created when facing strong winds. Fixed-wing forward actuators refers to puller/pusher (standard VTOL), or forward-tilt (tiltrotor VTOL). Only active if demaded down pitch is below VT_PITCH_MIN, and uses VT_FWD_THRUST_SC to get from demanded down pitch to fixed-wing actuation. + + Disable FW forward actuation in hover. + Enable FW forward actuation in hover in altitude, position and auto modes (except LANDING). + Enable FW forward actuation in hover in altitude, position and auto modes if above MPC_LAND_ALT1. + Enable FW forward actuation in hover in altitude, position and auto modes if above MPC_LAND_ALT2. + Enable FW forward actuation in hover in altitude, position and auto modes. + Enable FW forward actuation in hover in altitude, position and auto modes if above MPC_LAND_ALT1 (except LANDING). + Enable FW forward actuation in hover in altitude, position and auto modes if above MPC_LAND_ALT2 (except LANDING). + + + + Fixed-wing actuator thrust scale for hover forward flight + Scale applied to the demanded down-pitch to get the fixed-wing forward actuation in hover mode. Only active if demaded down pitch is below VT_PITCH_MIN. Enabled via VT_FWD_THRUST_EN. + 0.0 + 2.0 + + + Adaptive QuadChute + Maximum negative altitude error for fixed wing flight. If the altitude drops below this value below the altitude setpoint the vehicle will transition back to MC mode and enter failsafe RTL. + 0.0 + 200.0 + Differential thrust in forwards flight - Enable differential thrust seperately for roll, pitch, yaw in forward (fixed-wing) mode. The effectiveness of differential thrust around the corresponding axis can be tuned by setting VT_FW_DIFTHR_S_R / VT_FW_DIFTHR_S_P / VT_FW_DIFTHR_S_Y. + Set to 1 to enable differential thrust in fixed-wing flight. 0 - 7 - - Yaw - Roll - Pitch - + 1 + 0 - - Pitch differential thrust factor in forward flight - Differential thrust in forward flight is enabled via VT_FW_DIFTHR_EN. + + Differential thrust scaling factor + This factor specifies how the yaw input gets mapped to differential thrust in forwards flight. 0.0 - 2.0 - 2 - 0.1 - - - Roll differential thrust factor in forward flight - Differential thrust in forward flight is enabled via VT_FW_DIFTHR_EN. - 0.0 - 2.0 - 2 - 0.1 - - - Yaw differential thrust factor in forward flight - Differential thrust in forward flight is enabled via VT_FW_DIFTHR_EN. - 0.0 - 2.0 + 1.0 2 0.1 - Quad-chute altitude - Minimum altitude for fixed-wing flight. When the vehicle is in fixed-wing mode and the altitude drops below this altitude (relative altitude above local origin), it will instantly switch back to MC mode and execute behavior defined in COM_QC_ACT. + QuadChute Altitude + Minimum altitude for fixed wing flight, when in fixed wing the altitude drops below this altitude the vehicle will transition back to MC mode and enter failsafe RTL 0.0 200.0 - m - 1 + + + The channel number of motors that must be turned off in fixed wing mode + 0 + 12345678 + 0 1 - - Quad-chute maximum height - Maximum height above the ground (if available, otherwise above Home if available, otherwise above the local origin) where triggering a quad-chute is possible. At high altitudes there is a big risk to deplete the battery and therefore crash if quad-chuting there. - 0 - m - 1 + + Permanent stabilization in fw mode + If set to one this parameter will cause permanent attitude stabilization in fw mode. This parameter has been introduced for pure convenience sake. - Quad-chute max pitch threshold - Absolute pitch threshold for quad-chute triggering in FW mode. Above this the vehicle will transition back to MC mode and execute behavior defined in COM_QC_ACT. Set to 0 do disable this threshold. + QuadChute Max Pitch + Maximum pitch angle before QuadChute engages Above this the vehicle will transition back to MC mode and enter failsafe RTL 0 180 - deg - Quad-chute max roll threshold - Absolute roll threshold for quad-chute triggering in FW mode. Above this the vehicle will transition back to MC mode and execute behavior defined in COM_QC_ACT. Set to 0 do disable this threshold. + QuadChute Max Roll + Maximum roll angle before QuadChute engages Above this the vehicle will transition back to MC mode and enter failsafe RTL 0 180 - deg Duration of a front transition Time in seconds used for a transition - 0.1 + 0.00 20.00 s 2 1 - Target throttle value for the transition to fixed-wing flight + Target throttle value for the transition to fixed wing flight + standard vtol: pusher tailsitter, tiltrotor: main throttle 0.0 1.0 3 0.01 - Airspeed-less front transition time (open loop) + Airspeed less front transition time (open loop) The duration of the front transition when there is no airspeed feedback available. 1.0 30.0 s - 1 - 0.5 - + + Idle speed of VTOL when in multicopter mode + 900 + 2000 + us + 0 + 1 + + Minimum pitch angle during hover landing - Overrides VT_PITCH_MIN when the vehicle is in LAND mode (hovering). During landing it can be beneficial to reduce the pitch angle to reduce the generated lift in head wind. + Overrides VT_PTCH_MIN when the vehicle is in LAND mode (hovering). During landing it can be beneficial to allow lower minimum pitch angles as it can avoid the wings generating too much lift and preventing the vehicle from sinking at the desired rate. -10.0 45.0 - deg - 1 - 0.1 - - Minimum pitch angle during hover - Any pitch setpoint below this value is translated to a forward force by the fixed-wing forward actuation if VT_FW_TRHUST_EN is set to 1. - -10.0 - 45.0 - deg - 1 - 0.1 + + Enable the usage of AUX outputs for hover motors + Set this parameter to true if the vehicle's hover motors are connected to the FMU (AUX) port. Not required for boards that only have a FMU, and no IO. Only applies for standard VTOL and tiltrotor. - - Pusher throttle ramp up slew rate - Defines the slew rate of the puller/pusher throttle during transitions. Zero will deactivate the slew rate limiting and thus produce an instant throttle rise to the transition throttle VT_F_TRANS_THR. + + The channel number of motors which provide lift during hover 0 - 1/s + 12345678 + 0 + 1 + + + Pusher throttle ramp up window + Defines the time window during which the pusher throttle will be ramped up linearly to VT_F_TRANS_THR during a transition to fixed wing mode. Zero or negative values will produce an instant throttle rise to VT_F_TRANS_THR. + 20 2 0.01 - - Quad-chute uncommanded descent threshold - Altitude error threshold for quad-chute triggering during fixed-wing flight. The check is only active if altitude is controlled and the vehicle is below the current altitude reference. The altitude error is relative to the highest altitude the vehicle has achieved since it has flown below the current altitude reference. Set to 0 do disable. - 0.0 - 200.0 - m - 1 - 1 - - - Quad-chute transition altitude loss threshold - Altitude loss threshold for quad-chute triggering during VTOL transition to fixed-wing flight in altitude-controlled flight modes. Active until 5s after completing transition to fixed-wing. If the current altitude is more than this value below the altitude at the beginning of the transition, it will instantly switch back to MC mode and execute behavior defined in COM_QC_ACT. Set to 0 do disable this threshold. - 0 - 50 - m - 1 - 1 - - - Spoiler setting while landing (hover) - -1 - 1 - norm - 1 - 0.1 + + Minimum pitch angle during hover + Minimum pitch angle during hover flight. If the desired pitch angle is is lower than this value then the fixed-wing forward actuation can be used to compensate for the missing thrust in forward direction (see VT_FW_TRHUST_EN) + -10.0 + 45.0 - Normalized tilt in FW + Position of tilt servo in fw mode 0.0 1.0 3 0.01 - Normalized tilt in Hover + Position of tilt servo in mc mode 0.0 1.0 3 0.01 - - Normalized tilt in transition to FW + + Tilt actuator control value commanded when disarmed and during the first second after arming + This specific tilt during spin-up is necessary for some systems whose motors otherwise don't spin-up freely. + 0.0 + 1.0 + 3 + 0.01 + + + Position of tilt servo in transition mode 0.0 1.0 3 @@ -10814,12 +11035,10 @@ 0.0 20.0 s - 1 - 0.1 Duration of front transition phase 2 - Time in seconds it takes to tilt form VT_TILT_TRANS to VT_TILT_FW. + Time in seconds it should take for the rotors to rotate forward completely from the point when the plane has picked up enough airspeed and is ready to go into fixed wind mode. 0.1 5.0 s @@ -10829,7 +11048,7 @@ Front transition timeout Time in seconds after which transition will be cancelled. Disabled if set to 0. - 0.1 + 0.00 30.00 s 2 @@ -10839,6 +11058,7 @@ VTOL Type (Tailsitter=0, Tiltrotor=1, Standard=2) 0 2 + 0 true Tailsitter @@ -10856,18 +11076,73 @@ 0.01 - - - VTOL Takeoff relative loiter altitude - Altitude relative to home at which vehicle will loiter after front transition. - 20 - 300 - m - 1 - 1 + + + Inertia matrix, XX component + kg m^2 + 5 + 0.00001 + + + Inertia matrix, XY component + kg m^2 + 5 + 0.00001 + + + Inertia matrix, XZ component + kg m^2 + 5 + 0.00001 + + + Inertia matrix, YY component + kg m^2 + 5 + 0.00001 + + + Inertia matrix, YZ component + kg m^2 + 5 + 0.00001 + + + Inertia matrix, ZZ component + kg m^2 + 5 + 0.00001 + + + Mass + kg + 5 + 0.00001 + + EXFW_HDNG_P + + + EXFW_PITCH_P + + + EXFW_ROLL_P + + + Enable user assisted descent speed for autonomous land routine + When enabled, descent speed will be: stick full up - 0 stick centered - MPC_LAND_SPEED stick full down - 2 * MPC_LAND_SPEED + 0 + 1 + + Fixed descent speed of MPC_LAND_SPEED + User assisted descent speed + + + + RV_YAW_P + Skip the controller diff --git a/src/FirmwarePlugin/PX4/PX4Resources.qrc b/src/FirmwarePlugin/PX4/PX4Resources.qrc index 3431508..e83713a 100644 --- a/src/FirmwarePlugin/PX4/PX4Resources.qrc +++ b/src/FirmwarePlugin/PX4/PX4Resources.qrc @@ -7,6 +7,7 @@ ../../AutoPilotPlugins/PX4/FlightModesComponentSummary.qml ../../AutoPilotPlugins/PX4/PowerComponent.qml ../../AutoPilotPlugins/PX4/PowerComponentSummary.qml + ../../AutoPilotPlugins/PX4/PX4AdvancedFlightModes.qml ../../AutoPilotPlugins/PX4/PX4FlightModes.qml ../../AutoPilotPlugins/PX4/PX4RadioComponentSummary.qml ../../AutoPilotPlugins/PX4/PX4SimpleFlightModes.qml @@ -19,8 +20,6 @@ ../../AutoPilotPlugins/PX4/PX4TuningComponentCopterPosition.qml ../../AutoPilotPlugins/PX4/PX4TuningComponentPlane.qml ../../AutoPilotPlugins/PX4/PX4TuningComponentPlaneAll.qml - ../../AutoPilotPlugins/PX4/PX4TuningComponentPlaneAttitude.qml - ../../AutoPilotPlugins/PX4/PX4TuningComponentPlaneRate.qml ../../AutoPilotPlugins/PX4/PX4TuningComponentPlaneTECS.qml ../../AutoPilotPlugins/PX4/PX4TuningComponentVTOL.qml ../../AutoPilotPlugins/PX4/SafetyComponent.qml diff --git a/src/FirstRunPromptDialogs/FirstRunPrompt.qml b/src/FirstRunPromptDialogs/FirstRunPrompt.qml index 3e2b196..63b4fe1 100644 --- a/src/FirstRunPromptDialogs/FirstRunPrompt.qml +++ b/src/FirstRunPromptDialogs/FirstRunPrompt.qml @@ -15,12 +15,12 @@ import QGroundControl.Controls 1.0 // Base class for all first run prompt dialogs QGCPopupDialog { - buttons: StandardButton.Ok + buttons: StandardButton.Ok property int promptId property bool markAsShownOnClose: true - onClosed: { + onHideDialog: { if (markAsShownOnClose) { QGroundControl.settingsManager.appSettings.firstRunPromptIdsMarkIdAsShown(promptId) } diff --git a/src/FlightDisplay/CMakeLists.txt b/src/FlightDisplay/CMakeLists.txt index f8f2c38..6aafa3c 100644 --- a/src/FlightDisplay/CMakeLists.txt +++ b/src/FlightDisplay/CMakeLists.txt @@ -7,6 +7,7 @@ add_custom_target(FligthDisplayQml FlightDisplayViewUVC.qml FlightDisplayViewVideo.qml FlightDisplayViewWidgets.qml + FlyViewAirspaceIndicator.qml FlyViewCustomLayer.qml FlyViewInstrumentPanel.qml FlyViewMap.qml @@ -25,9 +26,7 @@ add_custom_target(FligthDisplayQml GuidedActionRTL.qml GuidedActionsController.qml GuidedActionTakeoff.qml - GuidedActionGripper.qml - GripperMenu.qml - GuidedValueSlider.qml + GuidedAltitudeSlider.qml GuidedToolStripAction.qml MultiRotorChecklist.qml MultiVehicleList.qml diff --git a/src/FlightDisplay/FlightDisplayViewUVC.qml b/src/FlightDisplay/FlightDisplayViewUVC.qml index dbe2dce..c5ca599 100644 --- a/src/FlightDisplay/FlightDisplayViewUVC.qml +++ b/src/FlightDisplay/FlightDisplayViewUVC.qml @@ -19,7 +19,6 @@ Rectangle { color: Qt.rgba(0,0,0,0.75) clip: true anchors.centerIn: parent - visible: QGroundControl.videoManager.isUvc function adjustAspectRatio() { @@ -33,7 +32,7 @@ Rectangle { Camera { id: camera - deviceId: QGroundControl.videoManager.uvcVideoSourceID + deviceId: QGroundControl.videoManager.videoSourceID captureMode: Camera.CaptureViewfinder onDeviceIdChanged: { adjustAspectRatio() @@ -48,15 +47,12 @@ Rectangle { source: camera anchors.fill: parent fillMode: VideoOutput.PreserveAspectCrop - visible: QGroundControl.videoManager.isUvc - - onVisibleChanged: { - console.log('UVC Video output visible: ', visible); - if (visible) { - camera.start() - } else { - camera.stop() - } - } + visible: !QGroundControl.videoManager.isGStreamer + } + onVisibleChanged: { + if(visible) + camera.start() + else + camera.stop() } } diff --git a/src/FlightDisplay/FlightDisplayViewVideo.qml b/src/FlightDisplay/FlightDisplayViewVideo.qml index 05913d3..d00b45b 100644 --- a/src/FlightDisplay/FlightDisplayViewVideo.qml +++ b/src/FlightDisplay/FlightDisplayViewVideo.qml @@ -38,32 +38,19 @@ Item { property double _thermalHeightFactor: 0.85 //-- TODO - Image { - id: noVideo - anchors.fill: parent - source: "/res/NoVideoBackground.jpg" - fillMode: Image.PreserveAspectCrop - visible: !(QGroundControl.videoManager.decoding) - - Rectangle { - anchors.centerIn: parent - width: noVideoLabel.contentWidth + ScreenTools.defaultFontPixelHeight - height: noVideoLabel.contentHeight + ScreenTools.defaultFontPixelHeight - radius: ScreenTools.defaultFontPixelWidth / 2 - color: "black" - opacity: 0.5 - } - - QGCLabel { - id: noVideoLabel - text: QGroundControl.settingsManager.videoSettings.streamEnabled.rawValue ? qsTr("WAITING FOR VIDEO") : qsTr("VIDEO DISABLED") - font.family: ScreenTools.demiboldFontFamily - color: "white" - font.pointSize: useSmallFont ? ScreenTools.smallFontPointSize : ScreenTools.largeFontPointSize - anchors.centerIn: parent - } + Rectangle { + id: noVideo + anchors.fill: parent + color: Qt.rgba(0,0,0,0.75) + visible: !(QGroundControl.videoManager.decoding) + QGCLabel { + text: QGroundControl.settingsManager.videoSettings.streamEnabled.rawValue ? qsTr("WAITING FOR VIDEO") : qsTr("VIDEO DISABLED") + font.family: ScreenTools.demiboldFontFamily + color: "white" + font.pointSize: useSmallFont ? ScreenTools.smallFontPointSize : ScreenTools.largeFontPointSize + anchors.centerIn: parent } - + } Rectangle { anchors.fill: parent color: "black" diff --git a/src/FlightDisplay/FlyView.qml b/src/FlightDisplay/FlyView.qml index 68c2a8b..86f5fdf 100644 --- a/src/FlightDisplay/FlyView.qml +++ b/src/FlightDisplay/FlyView.qml @@ -18,6 +18,8 @@ import QtQuick.Window 2.2 import QtQml.Models 2.1 import QGroundControl 1.0 +import QGroundControl.Airspace 1.0 +import QGroundControl.Airmap 1.0 import QGroundControl.Controllers 1.0 import QGroundControl.Controls 1.0 import QGroundControl.FactSystem 1.0 @@ -49,8 +51,7 @@ Item { property real _margins: ScreenTools.defaultFontPixelWidth / 2 property var _guidedController: guidedActionsController property var _guidedActionList: guidedActionList - property var _guidedValueSlider: guidedValueSlider - property var _widgetLayer: widgetLayer + property var _guidedAltSlider: guidedAltSlider property real _toolsMargin: ScreenTools.defaultFontPixelWidth * 0.75 property rect _centerViewport: Qt.rect(0, 0, width, height) property real _rightPanelWidth: ScreenTools.defaultFontPixelWidth * 30 @@ -78,14 +79,13 @@ Item { anchors.top: parent.top anchors.bottom: parent.bottom anchors.left: parent.left - anchors.right: guidedValueSlider.visible ? guidedValueSlider.left : parent.right + anchors.right: guidedAltSlider.visible ? guidedAltSlider.left : parent.right z: _fullItemZorder + 1 parentToolInsets: _toolInsets mapControl: _mapControl visible: !QGroundControl.videoManager.fullScreen } - FlyViewCustomLayer { id: customOverlay anchors.fill: widgetLayer @@ -95,25 +95,11 @@ Item { visible: !QGroundControl.videoManager.fullScreen } - // Development tool for visualizing the insets for a paticular layer, enable if needed - /* - FlyViewInsetViewer { - id: widgetLayerInsetViewer - anchors.top: parent.top - anchors.bottom: parent.bottom - anchors.left: parent.left - anchors.right: guidedValueSlider.visible ? guidedValueSlider.left : parent.right - - z: widgetLayer.z + 1 - - insetsToView: customOverlay.totalToolInsets - }*/ - GuidedActionsController { id: guidedActionsController missionController: _missionController actionList: _guidedActionList - guidedValueSlider: _guidedValueSlider + altitudeSlider: _guidedAltSlider } /*GuidedActionConfirm { @@ -123,7 +109,7 @@ Item { anchors.horizontalCenter: parent.horizontalCenter z: QGroundControl.zOrderTopMost guidedController: _guidedController - guidedValueSlider: _guidedValueSlider + altitudeSlider: _guidedAltSlider }*/ GuidedActionList { @@ -135,9 +121,9 @@ Item { guidedController: _guidedController } - //-- Guided value slider (e.g. altitude) - GuidedValueSlider { - id: guidedValueSlider + //-- Altitude slider + GuidedAltitudeSlider { + id: guidedAltSlider anchors.margins: _toolsMargin anchors.right: parent.right anchors.top: parent.top diff --git a/src/FlightDisplay/FlyViewAirspaceIndicator.qml b/src/FlightDisplay/FlyViewAirspaceIndicator.qml new file mode 100644 index 0000000..91a2585 --- /dev/null +++ b/src/FlightDisplay/FlyViewAirspaceIndicator.qml @@ -0,0 +1,66 @@ +/**************************************************************************** + * + * (c) 2009-2020 QGROUNDCONTROL PROJECT + * + * QGroundControl is licensed according to the terms in the file + * COPYING.md in the root of the source code directory. + * + ****************************************************************************/ + +import QtQuick 2.12 +import QtQuick.Controls 2.4 + +import QGroundControl 1.0 +import QGroundControl.Airspace 1.0 +import QGroundControl.Controls 1.0 +import QGroundControl.Palette 1.0 +import QGroundControl.ScreenTools 1.0 + +Rectangle { + id: _root + width: airspaceRow.width + (ScreenTools.defaultFontPixelWidth * 3) + height: airspaceRow.height * 1.25 + color: qgcPal.globalTheme === QGCPalette.Light ? Qt.rgba(1,1,1,0.95) : Qt.rgba(0,0,0,0.75) + visible: show && QGroundControl.airmapSupported && _flightPermit && _flightPermit !== AirspaceFlightPlanProvider.PermitNone + radius: 3 + border.width: 1 + border.color: qgcPal.globalTheme === QGCPalette.Light ? Qt.rgba(0,0,0,0.35) : Qt.rgba(1,1,1,0.35) + + property bool show: false + + property var _flightPermit: QGroundControl.airmapSupported ? QGroundControl.airspaceManager.flightPlan.flightPermitStatus : null + property string _providerName: QGroundControl.airspaceManager.providerName + + QGCPalette { id: qgcPal; colorGroupEnabled: enabled } + + Row { + id: airspaceRow + spacing: ScreenTools.defaultFontPixelWidth + anchors.centerIn: parent + + QGCLabel { text: _providerName+":"; anchors.verticalCenter: parent.verticalCenter; } + QGCLabel { + text: { + if(_flightPermit) { + if(_flightPermit === AirspaceFlightPlanProvider.PermitPending) + return qsTr("Approval Pending") + if(_flightPermit === AirspaceFlightPlanProvider.PermitAccepted || _flightPermit === AirspaceFlightPlanProvider.PermitNotRequired) + return qsTr("Flight Approved") + if(_flightPermit === AirspaceFlightPlanProvider.PermitRejected) + return qsTr("Flight Rejected") + } + return "" + } + color: { + if(_flightPermit) { + if(_flightPermit === AirspaceFlightPlanProvider.PermitPending) + return qgcPal.colorOrange + if(_flightPermit === AirspaceFlightPlanProvider.PermitAccepted || _flightPermit === AirspaceFlightPlanProvider.PermitNotRequired) + return qgcPal.colorGreen + } + return qgcPal.colorRed + } + anchors.verticalCenter: parent.verticalCenter; + } + } +} diff --git a/src/FlightDisplay/FlyViewCustomLayer.qml b/src/FlightDisplay/FlyViewCustomLayer.qml index c09b7e4..a8ead7d 100644 --- a/src/FlightDisplay/FlyViewCustomLayer.qml +++ b/src/FlightDisplay/FlyViewCustomLayer.qml @@ -18,6 +18,8 @@ import QtQuick.Window 2.2 import QtQml.Models 2.1 import QGroundControl 1.0 +import QGroundControl.Airspace 1.0 +import QGroundControl.Airmap 1.0 import QGroundControl.Controllers 1.0 import QGroundControl.Controls 1.0 import QGroundControl.FactSystem 1.0 @@ -36,20 +38,19 @@ Item { property var totalToolInsets: _toolInsets // These are the insets for your custom overlay additions property var mapControl - // since this file is a placeholder for the custom layer in a standard build, we will just pass through the parent insets QGCToolInsets { - id: _toolInsets - leftEdgeTopInset: parentToolInsets.leftEdgeTopInset - leftEdgeCenterInset: parentToolInsets.leftEdgeCenterInset - leftEdgeBottomInset: parentToolInsets.leftEdgeBottomInset - rightEdgeTopInset: parentToolInsets.rightEdgeTopInset - rightEdgeCenterInset: parentToolInsets.rightEdgeCenterInset - rightEdgeBottomInset: parentToolInsets.rightEdgeBottomInset - topEdgeLeftInset: parentToolInsets.topEdgeLeftInset - topEdgeCenterInset: parentToolInsets.topEdgeCenterInset - topEdgeRightInset: parentToolInsets.topEdgeRightInset - bottomEdgeLeftInset: parentToolInsets.bottomEdgeLeftInset - bottomEdgeCenterInset: parentToolInsets.bottomEdgeCenterInset - bottomEdgeRightInset: parentToolInsets.bottomEdgeRightInset + id: _toolInsets + leftEdgeCenterInset: 0 + leftEdgeTopInset: 0 + leftEdgeBottomInset: 0 + rightEdgeCenterInset: 0 + rightEdgeTopInset: 0 + rightEdgeBottomInset: 0 + topEdgeCenterInset: 0 + topEdgeLeftInset: 0 + topEdgeRightInset: 0 + bottomEdgeCenterInset: 0 + bottomEdgeLeftInset: 0 + bottomEdgeRightInset: 0 } } diff --git a/src/FlightDisplay/FlyViewInsetViewer.qml b/src/FlightDisplay/FlyViewInsetViewer.qml deleted file mode 100644 index 2f95208..0000000 --- a/src/FlightDisplay/FlyViewInsetViewer.qml +++ /dev/null @@ -1,194 +0,0 @@ -/**************************************************************************** - * - * (c) 2009-2020 QGROUNDCONTROL PROJECT - * - * QGroundControl is licensed according to the terms in the file - * COPYING.md in the root of the source code directory. - * - ****************************************************************************/ - -import QtQuick 2.12 -import QtQuick.Controls 2.4 -import QtQuick.Dialogs 1.3 -import QtQuick.Layouts 1.12 - -import QtLocation 5.3 -import QtPositioning 5.3 -import QtQuick.Window 2.2 -import QtQml.Models 2.1 - -import QGroundControl 1.0 -import QGroundControl.Controls 1.0 -import QGroundControl.Controllers 1.0 -import QGroundControl.FlightDisplay 1.0 -import QGroundControl.ScreenTools 1.0 -import QGroundControl.FlightMap 1.0 - - -// This is the ui overlay layer for the widgets/tools for Fly View -Item { - id: _root - property var insetsToView: QGCToolInsets {} - property int _linethickness: 3 - - Rectangle { - anchors.left: parent.left - anchors.verticalCenter: parent.verticalCenter - anchors.leftMargin: parent.width/8 - height: checkboxcolumn.height - width: checkboxcolumn.width - color: "dimgray" - - ColumnLayout { - id: checkboxcolumn - QGCCheckBox{ - checked: true - text: "leftEdgeTopInset" - onClicked: leftEdgeTopInset.visible = checked - textColor: leftEdgeTopInset.color - textBold: true - } - QGCCheckBox{ - checked: true - text: "leftEdgeBottomInset" - onClicked: leftEdgeBottomInset.visible = checked - textColor: leftEdgeBottomInset.color - textBold: true - } - QGCCheckBox{ - checked: true - text: "rightEdgeTopInset" - onClicked: rightEdgeTopInset.visible = checked - textColor: rightEdgeTopInset.color - textBold: true - } - QGCCheckBox{ - checked: true - text: "rightEdgeBottomInset" - onClicked: rightEdgeBottomInset.visible = checked - textColor: rightEdgeBottomInset.color - textBold: true - } - QGCCheckBox{ - checked: true - text: "topEdgeLeftInset" - onClicked: topEdgeLeftInset.visible = checked - textColor: topEdgeLeftInset.color - textBold: true - } - QGCCheckBox{ - checked: true - text: "topEdgeRightInset" - onClicked: topEdgeRightInset.visible = checked - textColor: topEdgeRightInset.color - textBold: true - } - QGCCheckBox{ - checked: true - text: "bottomEdgeLeftInset" - onClicked: bottomEdgeLeftInset.visible = checked - textColor: bottomEdgeLeftInset.color - textBold: true - } - QGCCheckBox{ - checked: true - text: "bottomEdgeRightInset" - onClicked: bottomEdgeRightInset.visible = checked - textColor: bottomEdgeRightInset.color - textBold: true - } - QGCCheckBox{ - checked: true - text: "centerInsetRect" - onClicked: centerInsetRect.visible = checked - textColor: centerInsetRect.border.color - textBold: true - } - } - - } - - Rectangle { // leftEdgeTopInset - id: leftEdgeTopInset - anchors.top: parent.top - anchors.left: parent.left - anchors.leftMargin: insetsToView.leftEdgeTopInset - height: parent.height - width: _linethickness - color: "coral" - } - Rectangle { // leftEdgeBottomInset - id: leftEdgeBottomInset - anchors.top: parent.top - anchors.left: parent.left - anchors.leftMargin: insetsToView.leftEdgeBottomInset - height: parent.height - width: _linethickness - color: "cornflowerblue" - } - Rectangle { // rightEdgeTopInset - id: rightEdgeTopInset - anchors.top: parent.top - anchors.right: parent.right - anchors.rightMargin: insetsToView.rightEdgeTopInset - height: parent.height - width: _linethickness - color: "darkslateblue" - } - Rectangle { // rightEdgeBottomInset - id: rightEdgeBottomInset - anchors.top: parent.top - anchors.right: parent.right - anchors.rightMargin: insetsToView.rightEdgeBottomInset - height: parent.height - width: _linethickness - color: "firebrick" - } - Rectangle { // topEdgeLeftInset - id: topEdgeLeftInset - anchors.top: parent.top - anchors.left: parent.left - anchors.topMargin: insetsToView.topEdgeLeftInset - height: _linethickness - width: parent.width - color: "mediumseagreen" - } - Rectangle { // topEdgeRightInset - id: topEdgeRightInset - anchors.top: parent.top - anchors.left: parent.left - anchors.topMargin: insetsToView.topEdgeRightInset - height: _linethickness - width: parent.width - color: "moccasin" - } - Rectangle { // bottomEdgeLeftInset - id: bottomEdgeLeftInset - anchors.bottom: parent.bottom - anchors.left: parent.left - anchors.bottomMargin: insetsToView.bottomEdgeLeftInset - height: _linethickness - width: parent.width - color: "salmon" - } - Rectangle { // bottomEdgeRightInset - id: bottomEdgeRightInset - anchors.bottom: parent.bottom - anchors.left: parent.left - anchors.bottomMargin: insetsToView.bottomEdgeRightInset - height: _linethickness - width: parent.width - color: "slategrey" - } - Rectangle { - id: centerInsetRect - x: insetsToView.leftEdgeCenterInset - y: insetsToView.topEdgeCenterInset - width: _root.width - insetsToView.leftEdgeCenterInset - insetsToView.rightEdgeCenterInset - height: _root.height - insetsToView.topEdgeCenterInset - insetsToView.bottomEdgeCenterInset - color: "transparent" - border.color: "yellow" - border.width: 1 - radius: 0 - } -} diff --git a/src/FlightDisplay/FlyViewInstrumentPanel.qml b/src/FlightDisplay/FlyViewInstrumentPanel.qml index 32ab45e..38b8ab5 100644 --- a/src/FlightDisplay/FlyViewInstrumentPanel.qml +++ b/src/FlightDisplay/FlyViewInstrumentPanel.qml @@ -10,6 +10,8 @@ import QtQuick 2.12 import QGroundControl 1.0 +import QGroundControl.Airspace 1.0 +import QGroundControl.Airmap 1.0 import QGroundControl.Controls 1.0 import QGroundControl.ScreenTools 1.0 @@ -21,6 +23,13 @@ Column { property real availableHeight + AirspaceControl { + id: airspaceControl + width: parent.width + planView: false + visible: QGroundControl.airmapSupported ? QGroundControl.settingsManager.airMapSettings.enableAirMap.rawValue : false + } + FlightDisplayViewWidgets { id: flightDisplayViewWidgets width: parent.width diff --git a/src/FlightDisplay/FlyViewMap.qml b/src/FlightDisplay/FlyViewMap.qml index 1396874..8dcfaf3 100644 --- a/src/FlightDisplay/FlyViewMap.qml +++ b/src/FlightDisplay/FlyViewMap.qml @@ -12,9 +12,9 @@ import QtQuick.Controls 2.4 import QtLocation 5.3 import QtPositioning 5.3 import QtQuick.Dialogs 1.2 -import QtQuick.Layouts 1.11 import QGroundControl 1.0 +import QGroundControl.Airspace 1.0 import QGroundControl.Controllers 1.0 import QGroundControl.Controls 1.0 import QGroundControl.FlightDisplay 1.0 @@ -50,6 +50,7 @@ FlightMap { property var _activeVehicleCoordinate: _activeVehicle ? _activeVehicle.coordinate : QtPositioning.coordinate() property real _toolButtonTopMargin: parent.height - mainWindow.height + (ScreenTools.defaultFontPixelHeight / 2) property real _toolsMargin: ScreenTools.defaultFontPixelWidth * 0.75 + property bool _airspaceEnabled: QGroundControl.airmapSupported ? (QGroundControl.settingsManager.airMapSettings.enableAirMap.rawValue && QGroundControl.airspaceManager.connected): false property var _flyViewSettings: QGroundControl.settingsManager.flyViewSettings property bool _keepMapCenteredOnVehicle: _flyViewSettings.keepMapCenteredOnVehicle.rawValue @@ -57,6 +58,16 @@ FlightMap { property bool _keepVehicleCentered: pipMode ? true : false property bool _saveZoomLevelSetting: true + function updateAirspace(reset) { + if(_airspaceEnabled) { + var coordinateNW = _root.toCoordinate(Qt.point(0,0), false /* clipToViewPort */) + var coordinateSE = _root.toCoordinate(Qt.point(width,height), false /* clipToViewPort */) + if(coordinateNW.isValid && coordinateSE.isValid) { + QGroundControl.airspaceManager.setROI(coordinateNW, coordinateSE, false /*planView*/, reset) + } + } + } + function _adjustMapZoomForPipMode() { _saveZoomLevelSetting = false if (pipMode) { @@ -81,10 +92,16 @@ FlightMap { onZoomLevelChanged: { if (_saveZoomLevelSetting) { QGroundControl.flightMapZoom = zoomLevel + updateAirspace(false) } } onCenterChanged: { QGroundControl.flightMapPosition = center + updateAirspace(false) + } + + on_AirspaceEnabledChanged: { + updateAirspace(true) } // We track whether the user has panned or not to correctly handle automatic map positioning @@ -126,59 +143,17 @@ FlightMap { animateLong.start() } - // returns the rectangle formed by the four center insets - // used for checking if vehicle is under ui, and as a target for recentering the view - function _insetCenterRect() { + function _insetRect() { return Qt.rect(toolInsets.leftEdgeCenterInset, toolInsets.topEdgeCenterInset, _root.width - toolInsets.leftEdgeCenterInset - toolInsets.rightEdgeCenterInset, _root.height - toolInsets.topEdgeCenterInset - toolInsets.bottomEdgeCenterInset) } - // returns the four rectangles formed by the 8 corner insets - // used for detecting if the vehicle has flown under the instrument panel, virtual joystick etc - function _insetCornerRects() { - var rects = { - "topleft": Qt.rect(0,0, - toolInsets.leftEdgeTopInset, - toolInsets.topEdgeLeftInset), - "topright": Qt.rect(_root.width-toolInsets.rightEdgeTopInset,0, - toolInsets.rightEdgeTopInset, - toolInsets.topEdgeRightInset), - "bottomleft": Qt.rect(0,_root.height-toolInsets.bottomEdgeLeftInset, - toolInsets.leftEdgeBottomInset, - toolInsets.bottomEdgeLeftInset), - "bottomright": Qt.rect(_root.width-toolInsets.rightEdgeBottomInset,_root.height-toolInsets.bottomEdgeRightInset, - toolInsets.rightEdgeBottomInset, - toolInsets.bottomEdgeRightInset)} - return rects - } - function recenterNeeded() { var vehiclePoint = _root.fromCoordinate(_activeVehicleCoordinate, false /* clipToViewport */) - var centerRect = _insetCenterRect() - //return !pointInRect(vehiclePoint,insetRect) - - // If we are outside the center inset rectangle, recenter - if(!pointInRect(vehiclePoint, centerRect)){ - return true - } - - // if we are inside the center inset rectangle - // then additionally check if we are underneath one of the corner inset rectangles - var cornerRects = _insetCornerRects() - if(pointInRect(vehiclePoint, cornerRects["topleft"])){ - return true - } else if(pointInRect(vehiclePoint, cornerRects["topright"])){ - return true - } else if(pointInRect(vehiclePoint, cornerRects["bottomleft"])){ - return true - } else if(pointInRect(vehiclePoint, cornerRects["bottomright"])){ - return true - } - - // if we are inside the center inset rectangle, and not under any corner elements - return false + var insetRect = _insetRect() + return !pointInRect(vehiclePoint, insetRect) } function updateMapToVehiclePosition() { @@ -193,8 +168,8 @@ FlightMap { if (firstVehiclePositionReceived && recenterNeeded()) { // Move the map such that the vehicle is centered within the inset area var vehiclePoint = _root.fromCoordinate(_activeVehicleCoordinate, false /* clipToViewport */) - var centerInsetRect = _insetCenterRect() - var centerInsetPoint = Qt.point(centerInsetRect.x + centerInsetRect.width / 2, centerInsetRect.y + centerInsetRect.height / 2) + var insetRect = _insetRect() + var centerInsetPoint = Qt.point(insetRect.x + insetRect.width / 2, insetRect.y + insetRect.height / 2) var centerOffset = Qt.point((_root.width / 2) - centerInsetPoint.x, (_root.height / 2) - centerInsetPoint.y) var vehicleOffsetPoint = Qt.point(vehiclePoint.x + centerOffset.x, vehiclePoint.y + centerOffset.y) var vehicleOffsetCoord = _root.toCoordinate(vehicleOffsetPoint, false /* clipToViewport */) @@ -307,7 +282,6 @@ FlightMap { heading: object.heading alert: object.alert map: _root - size: pipMode ? ScreenTools.defaultFontPixelHeight : ScreenTools.defaultFontPixelHeight * 2.5 z: QGroundControl.zOrderVehicles } } @@ -537,109 +511,75 @@ FlightMap { } } - // Handle guided mode clicks MouseArea { anchors.fill: parent - Popup { + QGCMenu { id: clickMenu - modal: true - property var coord + QGCMenuItem { + text: qsTr("Go to location") + visible: globals.guidedControllerFlyView.showGotoLocation - function setCoordinates(mouseX, mouseY) { - var newX = mouseX - var newY = mouseY - - // Filtering coordinates - if (newX + clickMenu.width > _root.width) { - newX = _root.width - clickMenu.width + onTriggered: { + gotoLocationItem.show(clickMenu.coord) + globals.guidedControllerFlyView.confirmAction(globals.guidedControllerFlyView.actionGoto, clickMenu.coord, gotoLocationItem) } - if (newY + clickMenu.height > _root.height) { - newY = _root.height - clickMenu.height - } - - // Set coordiantes - x = newX - y = newY } + QGCMenuItem { + text: qsTr("Orbit at location") + visible: globals.guidedControllerFlyView.showOrbit - background: Rectangle { - radius: ScreenTools.defaultFontPixelHeight * 0.5 - color: qgcPal.window - border.color: qgcPal.text + onTriggered: { + orbitMapCircle.show(clickMenu.coord) + globals.guidedControllerFlyView.confirmAction(globals.guidedControllerFlyView.actionOrbit, clickMenu.coord, orbitMapCircle) + } } + QGCMenuItem { + text: qsTr("ROI at location") + visible: globals.guidedControllerFlyView.showROI - ColumnLayout { - id: mainLayout - spacing: ScreenTools.defaultFontPixelWidth / 2 - - QGCButton { - Layout.fillWidth: true - text: "Go to location" - visible: globals.guidedControllerFlyView.showGotoLocation - onClicked: { - if (clickMenu.opened) { - clickMenu.close() - } - gotoLocationItem.show(clickMenu.coord) - globals.guidedControllerFlyView.confirmAction(globals.guidedControllerFlyView.actionGoto, clickMenu.coord, gotoLocationItem) - } - } - - QGCButton { - Layout.fillWidth: true - text: "Orbit at location" - visible: globals.guidedControllerFlyView.showOrbit - onClicked: { - if (clickMenu.opened) { - clickMenu.close() - } - orbitMapCircle.show(clickMenu.coord) - globals.guidedControllerFlyView.confirmAction(globals.guidedControllerFlyView.actionOrbit, clickMenu.coord, orbitMapCircle) - } - } - - QGCButton { - Layout.fillWidth: true - text: "ROI at location" - visible: globals.guidedControllerFlyView.showROI - onClicked: { - if (clickMenu.opened) { - clickMenu.close() - } - roiLocationItem.show(clickMenu.coord) - globals.guidedControllerFlyView.confirmAction(globals.guidedControllerFlyView.actionROI, clickMenu.coord, roiLocationItem) - } - } - - QGCButton { - Layout.fillWidth: true - text: "Set home here" - visible: globals.guidedControllerFlyView.showSetHome - onClicked: { - if (clickMenu.opened) { - clickMenu.close() - } - globals.guidedControllerFlyView.confirmAction(globals.guidedControllerFlyView.actionSetHome, clickMenu.coord) - } + onTriggered: { + roiLocationItem.show(clickMenu.coord) + globals.guidedControllerFlyView.confirmAction(globals.guidedControllerFlyView.actionROI, clickMenu.coord, roiLocationItem) } } } onClicked: { - if (!globals.guidedControllerFlyView.guidedUIVisible && (globals.guidedControllerFlyView.showGotoLocation || globals.guidedControllerFlyView.showOrbit || globals.guidedControllerFlyView.showROI || globals.guidedControllerFlyView.showSetHome)) { + if (!globals.guidedControllerFlyView.guidedUIVisible && (globals.guidedControllerFlyView.showGotoLocation || globals.guidedControllerFlyView.showOrbit || globals.guidedControllerFlyView.showROI)) { orbitMapCircle.hide() gotoLocationItem.hide() var clickCoord = _root.toCoordinate(Qt.point(mouse.x, mouse.y), false /* clipToViewPort */) clickMenu.coord = clickCoord - clickMenu.setCoordinates(mouse.x, mouse.y) - clickMenu.open() + clickMenu.popup() } } } + // Airspace overlap support + MapItemView { + model: _airspaceEnabled && QGroundControl.settingsManager.airMapSettings.enableAirspace && QGroundControl.airspaceManager.airspaceVisible ? QGroundControl.airspaceManager.airspaces.circles : [] + delegate: MapCircle { + center: object.center + radius: object.radius + color: object.color + border.color: object.lineColor + border.width: object.lineWidth + } + } + + MapItemView { + model: _airspaceEnabled && QGroundControl.settingsManager.airMapSettings.enableAirspace && QGroundControl.airspaceManager.airspaceVisible ? QGroundControl.airspaceManager.airspaces.polygons : [] + delegate: MapPolygon { + path: object.polygon + color: object.color + border.color: object.lineColor + border.width: object.lineWidth + } + } + MapScale { id: mapScale anchors.margins: _toolsMargin diff --git a/src/FlightDisplay/FlyViewMissionCompleteDialog.qml b/src/FlightDisplay/FlyViewMissionCompleteDialog.qml index 8b490c7..bcc225d 100644 --- a/src/FlightDisplay/FlyViewMissionCompleteDialog.qml +++ b/src/FlightDisplay/FlyViewMissionCompleteDialog.qml @@ -32,8 +32,8 @@ Item { property bool _vehicleInMissionFlightMode: _activeVehicle ? (_activeVehicle.flightMode === _activeVehicle.missionFlightMode) : false property bool _vehicleWasInMissionFlightMode: false property bool _showMissionCompleteDialog: _vehicleWasArmed && _vehicleWasInMissionFlightMode && - (missionController.containsItems || geoFenceController.containsItems || rallyPointController.containsItems || - (_activeVehicle ? _activeVehicle.cameraTriggerPoints.count !== 0 : false)) + (missionController.containsItems || geoFenceController.containsItems || rallyPointController.containsItems || + (_activeVehicle ? _activeVehicle.cameraTriggerPoints.count !== 0 : false)) on_VehicleArmedChanged: { if (_vehicleArmed) { @@ -41,7 +41,7 @@ Item { _vehicleWasInMissionFlightMode = _vehicleInMissionFlightMode } else { if (_showMissionCompleteDialog) { - missionCompleteDialogComponent.createObject(mainWindow).open() + mainWindow.showComponentDialog(missionCompleteDialogComponent, qsTr("Flight Plan complete"), mainWindow.showDialogDefaultWidth, StandardButton.Close) } _vehicleWasArmed = false _vehicleWasInMissionFlightMode = false @@ -57,83 +57,85 @@ Item { Component { id: missionCompleteDialogComponent - QGCPopupDialog { - id: missionCompleteDialog - title: qsTr("Flight Plan complete") - buttons: StandardButton.Close - + QGCViewDialog { property var activeVehicleCopy: _activeVehicle onActiveVehicleCopyChanged: if (!activeVehicleCopy) { - missionCompleteDialog.close() + hideDialog() } - ColumnLayout { - id: column - width: 40 * ScreenTools.defaultFontPixelWidth - spacing: ScreenTools.defaultFontPixelHeight - - QGCLabel { - Layout.fillWidth: true - text: qsTr("%1 Images Taken").arg(_activeVehicle.cameraTriggerPoints.count) - horizontalAlignment: Text.AlignHCenter - visible: _activeVehicle.cameraTriggerPoints.count !== 0 - } - - QGCButton { - Layout.fillWidth: true - text: qsTr("Remove plan from vehicle") - visible: !_activeVehicle.communicationLost// && !_activeVehicle.apmFirmware // ArduPilot has a bug somewhere with mission clear - onClicked: { - _planController.removeAllFromVehicle() - missionCompleteDialog.close() - } - } - - QGCButton { - Layout.fillWidth: true - Layout.alignment: Qt.AlignHCenter - text: qsTr("Leave plan on vehicle") - onClicked: missionCompleteDialog.close() - - } - - Rectangle { - Layout.fillWidth: true - color: qgcPal.text - height: 1 - } + QGCFlickable { + anchors.fill: parent + contentHeight: column.height ColumnLayout { - Layout.fillWidth: true + id: column + anchors.margins: _margins + anchors.left: parent.left + anchors.right: parent.right spacing: ScreenTools.defaultFontPixelHeight - visible: !_activeVehicle.communicationLost && globals.guidedControllerFlyView.showResumeMission + + QGCLabel { + Layout.fillWidth: true + text: qsTr("%1 Images Taken").arg(_activeVehicle.cameraTriggerPoints.count) + horizontalAlignment: Text.AlignHCenter + visible: _activeVehicle.cameraTriggerPoints.count !== 0 + } + + QGCButton { + Layout.fillWidth: true + text: qsTr("Remove plan from vehicle") + visible: !_activeVehicle.communicationLost// && !_activeVehicle.apmFirmware // ArduPilot has a bug somewhere with mission clear + onClicked: { + _planController.removeAllFromVehicle() + hideDialog() + } + } QGCButton { Layout.fillWidth: true Layout.alignment: Qt.AlignHCenter - text: qsTr("Resume Mission From Waypoint %1").arg(globals.guidedControllerFlyView._resumeMissionIndex) + text: qsTr("Leave plan on vehicle") + onClicked: hideDialog() + } - onClicked: { - globals.guidedControllerFlyView.executeAction(globals.guidedControllerFlyView.actionResumeMission, null, null) - missionCompleteDialog.close() + Rectangle { + Layout.fillWidth: true + color: qgcPal.text + height: 1 + } + + ColumnLayout { + Layout.fillWidth: true + spacing: ScreenTools.defaultFontPixelHeight + visible: !_activeVehicle.communicationLost && globals.guidedControllerFlyView.showResumeMission + + QGCButton { + Layout.fillWidth: true + Layout.alignment: Qt.AlignHCenter + text: qsTr("Resume Mission From Waypoint %1").arg(globals.guidedControllerFlyView._resumeMissionIndex) + + onClicked: { + globals.guidedControllerFlyView.executeAction(globals.guidedControllerFlyView.actionResumeMission, null, null) + hideDialog() + } + } + + QGCLabel { + Layout.fillWidth: true + wrapMode: Text.WordWrap + text: qsTr("Resume Mission will rebuild the current mission from the last flown waypoint and upload it to the vehicle for the next flight.") } } QGCLabel { Layout.fillWidth: true wrapMode: Text.WordWrap - text: qsTr("Resume Mission will rebuild the current mission from the last flown waypoint and upload it to the vehicle for the next flight.") + color: qgcPal.warningText + text: qsTr("If you are changing batteries for Resume Mission do not disconnect from the vehicle.") + visible: globals.guidedControllerFlyView.showResumeMission } } - - QGCLabel { - Layout.fillWidth: true - wrapMode: Text.WordWrap - color: qgcPal.warningText - text: qsTr("If you are changing batteries for Resume Mission do not disconnect from the vehicle.") - visible: globals.guidedControllerFlyView.showResumeMission - } } } } diff --git a/src/FlightDisplay/FlyViewPreFlightChecklistPopup.qml b/src/FlightDisplay/FlyViewPreFlightChecklistPopup.qml index eeff2d4..b3116ab 100644 --- a/src/FlightDisplay/FlyViewPreFlightChecklistPopup.qml +++ b/src/FlightDisplay/FlyViewPreFlightChecklistPopup.qml @@ -44,7 +44,9 @@ QGCPopupDialog { interval: 1000 repeat: false onTriggered: { + // FIXME: What was the visible check in here for if (!_checklistComplete) { + console.log("open", _root.width, _root.height) _root.open() } else { _root.close() diff --git a/src/FlightDisplay/FlyViewToolStripActionList.qml b/src/FlightDisplay/FlyViewToolStripActionList.qml index 331aaea..451a482 100644 --- a/src/FlightDisplay/FlyViewToolStripActionList.qml +++ b/src/FlightDisplay/FlyViewToolStripActionList.qml @@ -28,7 +28,6 @@ ToolStripActionList { GuidedActionLand { }, GuidedActionRTL { }, GuidedActionPause { }, - GuidedActionActionList { }, - GuidedActionGripper { } + GuidedActionActionList { } ] } diff --git a/src/FlightDisplay/FlyViewWidgetLayer.qml b/src/FlightDisplay/FlyViewWidgetLayer.qml index 8f4fbea..76cf0c9 100644 --- a/src/FlightDisplay/FlyViewWidgetLayer.qml +++ b/src/FlightDisplay/FlyViewWidgetLayer.qml @@ -19,6 +19,8 @@ import QtQml.Models 2.1 import QGroundControl 1.0 import QGroundControl.Controls 1.0 +import QGroundControl.Airspace 1.0 +import QGroundControl.Airmap 1.0 import QGroundControl.Controllers 1.0 import QGroundControl.Controls 1.0 import QGroundControl.FactSystem 1.0 @@ -46,22 +48,21 @@ Item { property real _toolsMargin: ScreenTools.defaultFontPixelWidth * 0.75 property rect _centerViewport: Qt.rect(0, 0, width, height) property real _rightPanelWidth: ScreenTools.defaultFontPixelWidth * 30 - property alias _gripperMenu: gripperOptions QGCToolInsets { id: _totalToolInsets - leftEdgeTopInset: toolStrip.leftEdgeTopInset - leftEdgeCenterInset: parentToolInsets.leftEdgeCenterInset - leftEdgeBottomInset: virtualJoystickMultiTouch.visible ? virtualJoystickMultiTouch.leftEdgeBottomInset : parentToolInsets.leftEdgeBottomInset - rightEdgeTopInset: instrumentPanel.rightEdgeTopInset - rightEdgeCenterInset: (telemetryPanel.rightEdgeCenterInset > photoVideoControl.rightEdgeCenterInset) ? telemetryPanel.rightEdgeCenterInset : photoVideoControl.rightEdgeCenterInset - rightEdgeBottomInset: virtualJoystickMultiTouch.visible ? virtualJoystickMultiTouch.rightEdgeBottomInset : parentToolInsets.rightEdgeBottomInset - topEdgeLeftInset: toolStrip.topEdgeLeftInset - topEdgeCenterInset: mapScale.topEdgeCenterInset - topEdgeRightInset: instrumentPanel.topEdgeRightInset - bottomEdgeLeftInset: virtualJoystickMultiTouch.visible ? virtualJoystickMultiTouch.bottomEdgeLeftInset : parentToolInsets.bottomEdgeLeftInset - bottomEdgeCenterInset: telemetryPanel.bottomEdgeCenterInset - bottomEdgeRightInset: virtualJoystickMultiTouch.visible ? virtualJoystickMultiTouch.bottomEdgeRightInset : parentToolInsets.bottomEdgeRightInset + leftEdgeTopInset: toolStrip.leftInset + leftEdgeCenterInset: toolStrip.leftInset + leftEdgeBottomInset: parentToolInsets.leftEdgeBottomInset + rightEdgeTopInset: parentToolInsets.rightEdgeTopInset + rightEdgeCenterInset: parentToolInsets.rightEdgeCenterInset + rightEdgeBottomInset: parentToolInsets.rightEdgeBottomInset + topEdgeLeftInset: parentToolInsets.topEdgeLeftInset + topEdgeCenterInset: parentToolInsets.topEdgeCenterInset + topEdgeRightInset: parentToolInsets.topEdgeRightInset + bottomEdgeLeftInset: parentToolInsets.bottomEdgeLeftInset + bottomEdgeCenterInset: mapScale.centerInset + bottomEdgeRightInset: 0 } FlyViewMissionCompleteDialog { @@ -105,16 +106,6 @@ Item { visible: !multiVehiclePanelSelector.showSingleVehiclePanel } - - GuidedActionConfirm { - anchors.margins: _toolsMargin - anchors.top: parent.top - anchors.horizontalCenter: parent.horizontalCenter - z: QGroundControl.zOrderTopMost - guidedController: _guidedController - guidedValueSlider: _guidedValueSlider - } - FlyViewInstrumentPanel { id: instrumentPanel anchors.margins: _toolsMargin @@ -125,8 +116,7 @@ Item { visible: QGroundControl.corePlugin.options.flyView.showInstrumentPanel && multiVehiclePanelSelector.showSingleVehiclePanel availableHeight: parent.height - y - _toolsMargin - property real rightEdgeTopInset: visible ? parent.width - x : 0 - property real topEdgeRightInset: visible ? y + height : 0 + property real rightInset: visible ? parent.width - x : 0 } PhotoVideoControl { @@ -134,9 +124,6 @@ Item { anchors.margins: _toolsMargin anchors.right: parent.right width: _rightPanelWidth - - property real rightEdgeCenterInset: visible ? parent.width - x : 0 - state: _verticalCenter ? "verticalCenter" : "topAnchor" states: [ State { @@ -165,9 +152,6 @@ Item { x: recalcXPosition() anchors.margins: _toolsMargin - property real bottomEdgeCenterInset: 0 - property real rightEdgeCenterInset: 0 - // States for custom layout support states: [ State { @@ -185,8 +169,6 @@ Item { PropertyChanges { target: telemetryPanel x: recalcXPosition() - bottomEdgeCenterInset: visible ? parent.height-y : 0 - rightEdgeCenterInset: 0 } }, @@ -201,11 +183,6 @@ Item { anchors.right: parent.right anchors.verticalCenter: undefined } - PropertyChanges { - target: telemetryPanel - bottomEdgeCenterInset: 0 - rightEdgeCenterInset: visible ? parent.width - x : 0 - } }, State { @@ -219,11 +196,6 @@ Item { anchors.right: parent.right anchors.verticalCenter: parent.verticalCenter } - PropertyChanges { - target: telemetryPanel - bottomEdgeCenterInset: 0 - rightEdgeCenterInset: visible ? parent.width - x : 0 - } } ] @@ -259,13 +231,6 @@ Item { property bool autoCenterThrottle: QGroundControl.settingsManager.appSettings.virtualJoystickAutoCenterThrottle.rawValue property bool _virtualJoystickEnabled: QGroundControl.settingsManager.appSettings.virtualJoystick.rawValue - - property real bottomEdgeLeftInset: parent.height-y - property real bottomEdgeRightInset: parent.height-y - - // Width is difficult to access directly hence this hack which may not work in all circumstances - property real leftEdgeBottomInset: visible ? bottomEdgeLeftInset + width/18 - ScreenTools.defaultFontPixelHeight*2 : 0 - property real rightEdgeBottomInset: visible ? bottomEdgeRightInset + width/18 - ScreenTools.defaultFontPixelHeight*2 : 0 } FlyViewToolStrip { @@ -278,15 +243,17 @@ Item { maxHeight: parent.height - y - parentToolInsets.bottomEdgeLeftInset - _toolsMargin visible: !QGroundControl.videoManager.fullScreen - onDisplayPreFlightChecklist: preFlightChecklistPopup.createObject(mainWindow).open() + onDisplayPreFlightChecklist: mainWindow.showPopupDialogFromComponent(preFlightChecklistPopup) - - property real topEdgeLeftInset: visible ? y + height : 0 - property real leftEdgeTopInset: visible ? x + width : 0 + property real leftInset: x + width } - GripperMenu { - id: gripperOptions + FlyViewAirspaceIndicator { + anchors.top: parent.top + anchors.topMargin: ScreenTools.defaultFontPixelHeight * 0.25 + anchors.horizontalCenter: parent.horizontalCenter + z: QGroundControl.zOrderWidgets + show: mapControl.pipState.state !== mapControl.pipState.pipState } VehicleWarnings { @@ -303,7 +270,7 @@ Item { buttonsOnLeft: false visible: !ScreenTools.isTinyScreen && QGroundControl.corePlugin.options.flyView.showMapScale && mapControl.pipState.state === mapControl.pipState.fullState - property real topEdgeCenterInset: visible ? y + height : 0 + property real centerInset: visible ? parent.height - y : 0 } Component { diff --git a/src/FlightDisplay/GripperMenu.qml b/src/FlightDisplay/GripperMenu.qml deleted file mode 100644 index b1c863e..0000000 --- a/src/FlightDisplay/GripperMenu.qml +++ /dev/null @@ -1,71 +0,0 @@ - -import QtQuick 2.3 -import QtQuick.Controls 1.2 -import QtQuick.Controls.Styles 1.4 -import QtQuick.Dialogs 1.2 -import QtLocation 5.3 -import QtPositioning 5.3 -import QtQuick.Layouts 1.2 - -import QGroundControl 1.0 -import QGroundControl.ScreenTools 1.0 -import QGroundControl.Controls 1.0 -import QGroundControl.Palette 1.0 -import QGroundControl.Vehicle 1.0 -import QGroundControl.FlightMap 1.0 - -Component { - id: messageDialogComponent - QGCPopupDialog { - title: "Select one action" - property var acceptFunction: null - buttons: StandardButton.Cancel - - onRejected:{ - _guidedController._gripperFunction = Vehicle.Invalid_option - _guidedController.closeAll() - close() - } - - onAccepted: { - if (acceptFunction) { - _guidedController._gripperFunction = Vehicle.Invalid_option - close() - } - } - - RowLayout { - QGCColumnButton { - id: grabButton - text: "Grab" - iconSource: "/res/GripperGrab.svg" - pointSize: ScreenTools.defaultFontPointSize * 3.5 - backRadius: width / 40 - heightFactor: 0.75 - Layout.preferredHeight: releaseButton.height - Layout.preferredWidth: releaseButton.width - - onClicked: { - _guidedController._gripperFunction = Vehicle.Gripper_grab - close() - } - } - - QGCColumnButton { - id: releaseButton - text: "Release" - iconSource: "/res/GripperRelease.svg" - pointSize: ScreenTools.defaultFontPointSize * 3.5 - backRadius: width / 40 - heightFactor: 0.75 - Layout.preferredWidth: ScreenTools.defaultFontPixelWidth * 27 - Layout.preferredHeight: Layout.preferredWidth / 1.20 - - onClicked: { - _guidedController._gripperFunction = Vehicle.Gripper_release - close() - } - } - } - } -} diff --git a/src/FlightDisplay/GuidedActionConfirm.qml b/src/FlightDisplay/GuidedActionConfirm.qml index b01dce3..63272eb 100644 --- a/src/FlightDisplay/GuidedActionConfirm.qml +++ b/src/FlightDisplay/GuidedActionConfirm.qml @@ -17,15 +17,15 @@ import QGroundControl.Controls 1.0 import QGroundControl.Palette 1.0 Rectangle { - id: _root - width: ScreenTools.defaultFontPixelWidth * 45 - height: mainLayout.height + (_margins * 2) - radius: ScreenTools.defaultFontPixelWidth / 2 - color: qgcPal.window - visible: false + id: _root + Layout.minimumWidth: mainLayout.width + (_margins * 2) + Layout.preferredHeight: mainLayout.height + (_margins * 2) + radius: ScreenTools.defaultFontPixelWidth / 2 + color: qgcPal.windowShadeLight + visible: false property var guidedController - property var guidedValueSlider + property var altitudeSlider property string title // Currently unused property alias message: messageText.text property int action @@ -40,12 +40,6 @@ Rectangle { Component.onCompleted: guidedController.confirmDialog = this - onVisibleChanged: { - if (visible) { - slider.focus = true - } - } - onHideTriggerChanged: { if (hideTrigger) { confirmCancelled() @@ -63,7 +57,7 @@ Rectangle { } function confirmCancelled() { - guidedValueSlider.visible = false + altitudeSlider.visible = false visible = false hideTrigger = false visibleTimer.stop() @@ -83,18 +77,15 @@ Rectangle { QGCPalette { id: qgcPal } ColumnLayout { - id: mainLayout - anchors.margins: _margins - anchors.left: parent.left - anchors.right: parent.right - spacing: _margins + id: mainLayout + anchors.horizontalCenter: parent.horizontalCenter + spacing: _margins QGCLabel { id: messageText Layout.fillWidth: true horizontalAlignment: Text.AlignHCenter wrapMode: Text.WordWrap - font.pointSize: ScreenTools.mediumFontPointSize } QGCCheckBox { @@ -105,23 +96,23 @@ Rectangle { } RowLayout { - Layout.fillWidth: true - spacing: ScreenTools.defaultFontPixelWidth + Layout.alignment: Qt.AlignHCenter + spacing: ScreenTools.defaultFontPixelWidth SliderSwitch { - id: slider - confirmText: ScreenTools.isMobile ? qsTr("Slide to confirm") : qsTr("Slide or hold spacebar") - Layout.fillWidth: true + id: slider + confirmText: qsTr("Slide to confirm") + Layout.minimumWidth: Math.max(implicitWidth, ScreenTools.defaultFontPixelWidth * 30) onAccept: { _root.visible = false - var sliderOutputValue = 0 - if (guidedValueSlider.visible) { - sliderOutputValue = guidedValueSlider.getOutputValue() - guidedValueSlider.visible = false + var altitudeChange = 0 + if (altitudeSlider.visible) { + altitudeChange = altitudeSlider.getAltitudeChangeValue() + altitudeSlider.visible = false } hideTrigger = false - guidedController.executeAction(_root.action, _root.actionData, sliderOutputValue, _root.optionChecked) + guidedController.executeAction(_root.action, _root.actionData, altitudeChange, _root.optionChecked) if (mapIndicator) { mapIndicator.actionConfirmed() mapIndicator = undefined diff --git a/src/FlightDisplay/GuidedActionGripper.qml b/src/FlightDisplay/GuidedActionGripper.qml deleted file mode 100644 index cddb3c4..0000000 --- a/src/FlightDisplay/GuidedActionGripper.qml +++ /dev/null @@ -1,24 +0,0 @@ -/**************************************************************************** - * - * (c) 2009-2020 QGROUNDCONTROL PROJECT - * - * QGroundControl is licensed according to the terms in the file - * COPYING.md in the root of the source code directory. - * - ****************************************************************************/ - -import QGroundControl.FlightDisplay 1.0 -import QGroundControl 1.0 - -GuidedToolStripAction { - property var activeVehicle: QGroundControl.multiVehicleManager.activeVehicle - property bool _initialConnectComplete: activeVehicle ? activeVehicle.initialConnectComplete : false - property bool _grip_enable: _initialConnectComplete ? activeVehicle.hasGripper : false - property bool _isVehicleArmed: _initialConnectComplete ? activeVehicle.armed : false - - text: "Gripper" - iconSource: "/res/Gripper.svg" - visible: !_isVehicleArmed && _grip_enable // in this way if the pilot it's on the ground can release the cargo without actions tool - enabled: _grip_enable - actionID: _guidedController.actionGripper -} diff --git a/src/FlightDisplay/GuidedActionList.qml b/src/FlightDisplay/GuidedActionList.qml index 6b494d7..f72e253 100644 --- a/src/FlightDisplay/GuidedActionList.qml +++ b/src/FlightDisplay/GuidedActionList.qml @@ -14,7 +14,6 @@ import QtQuick.Layouts 1.2 import QGroundControl 1.0 import QGroundControl.ScreenTools 1.0 import QGroundControl.Controls 1.0 -import QGroundControl.Controllers 1.0 import QGroundControl.FlightDisplay 1.0 import QGroundControl.Palette 1.0 @@ -29,7 +28,7 @@ Rectangle { visible: false property var guidedController - property var guidedValueSlider + property var altitudeSlider function show() { visible = true @@ -63,26 +62,9 @@ Rectangle { text: guidedController.landAbortMessage, action: guidedController.actionLandAbort, visible: guidedController.showLandAbort - }, - { - title: guidedController.changeSpeedTitle, - text: guidedController.changeSpeedMessage, - action: guidedController.actionChangeSpeed, - visible: guidedController.showChangeSpeed - }, - { - title: guidedController.gripperTitle, - text: guidedController.gripperMessage, - action: guidedController.actionGripper, - visible: guidedController.showGripper } ] - property var _customManager: CustomActionManager { - id: customManager - } - readonly property bool hasCustomActions: QGroundControl.settingsManager.flyViewSettings.enableCustomActions.rawValue && customManager.hasActions - QGCPalette { id: qgcPal } DeadMouseArea { @@ -108,13 +90,12 @@ Rectangle { Layout.minimumWidth: _width Layout.maximumWidth: _width - property real _width: Math.min((_actionWidth * 3) + _actionHorizSpacing*2, actionRow.width) + property real _width: Math.min((_actionWidth * 2) + _actionHorizSpacing, actionRow.width) RowLayout { id: actionRow spacing: _actionHorizSpacing - // These are the pre-defined Actions Repeater { id: actionRepeater model: _model @@ -132,6 +113,8 @@ Rectangle { Layout.minimumWidth: _actionWidth Layout.maximumWidth: _actionWidth Layout.fillHeight: true + + property real _width: ScreenTools.defaultFontPixelWidth * 25 } QGCButton { @@ -144,41 +127,8 @@ Rectangle { guidedController.confirmAction(modelData.action) } } - } // ColumnLayout - } // Repeater - - // These are the user-defined Custom Actions - Repeater { - id: customRepeater - model: customManager.actions - - ColumnLayout { - spacing: ScreenTools.defaultFontPixelHeight / 2 - visible: _root.hasCustomActions - Layout.fillHeight: true - - QGCLabel { - id: customMessage - text: "Custom Action #" + (index + 1) - horizontalAlignment: Text.AlignHCenter - wrapMode: Text.WordWrap - Layout.minimumWidth: _actionWidth - Layout.maximumWidth: _actionWidth - Layout.fillHeight: true - } - - QGCButton { - id: customButton - text: object.label - Layout.alignment: Qt.AlignCenter - - onClicked: { - var vehicle = QGroundControl.multiVehicleManager.activeVehicle - object.sendTo(vehicle) - } - } - } // ColumnLayout - } // Repeater + } + } } } } diff --git a/src/FlightDisplay/GuidedActionsController.qml b/src/FlightDisplay/GuidedActionsController.qml index 2698535..4d533d2 100644 --- a/src/FlightDisplay/GuidedActionsController.qml +++ b/src/FlightDisplay/GuidedActionsController.qml @@ -30,7 +30,7 @@ Item { property var missionController property var confirmDialog property var actionList - property var guidedValueSlider + property var altitudeSlider property var orbitMapCircle readonly property string emergencyStopTitle: qsTr("EMERGENCY STOP") @@ -39,7 +39,6 @@ Item { readonly property string disarmTitle: qsTr("Disarm") readonly property string rtlTitle: qsTr("Return") readonly property string takeoffTitle: qsTr("Takeoff") - readonly property string gripperTitle: qsTr("Gripper Function") readonly property string landTitle: qsTr("Land") readonly property string startMissionTitle: qsTr("Start Mission") readonly property string mvStartMissionTitle: qsTr("Start Mission (MV)") @@ -48,15 +47,12 @@ Item { readonly property string pauseTitle: qsTr("Pause") readonly property string mvPauseTitle: qsTr("Pause (MV)") readonly property string changeAltTitle: qsTr("Change Altitude") - readonly property string changeCruiseSpeedTitle: qsTr("Change Max Ground Speed") - readonly property string changeAirspeedTitle: qsTr("Change Airspeed") readonly property string orbitTitle: qsTr("Orbit") readonly property string landAbortTitle: qsTr("Land Abort") readonly property string setWaypointTitle: qsTr("Set Waypoint") readonly property string gotoTitle: qsTr("Go To Location") readonly property string vtolTransitionTitle: qsTr("VTOL Transition") readonly property string roiTitle: qsTr("ROI") - readonly property string setHomeTitle: qsTr("Set Home") readonly property string actionListTitle: qsTr("Action") readonly property string armMessage: qsTr("Arm the vehicle.") @@ -64,15 +60,12 @@ Item { readonly property string disarmMessage: qsTr("Disarm the vehicle") readonly property string emergencyStopMessage: qsTr("WARNING: THIS WILL STOP ALL MOTORS. IF VEHICLE IS CURRENTLY IN THE AIR IT WILL CRASH.") readonly property string takeoffMessage: qsTr("Takeoff from ground and hold position.") - readonly property string gripperMessage: qsTr("Grab or Release the cargo") readonly property string startMissionMessage: qsTr("Takeoff from ground and start the current mission.") readonly property string continueMissionMessage: qsTr("Continue the mission from the current waypoint.") readonly property string resumeMissionUploadFailMessage: qsTr("Upload of resume mission failed. Confirm to retry upload") readonly property string landMessage: qsTr("Land the vehicle at the current position.") readonly property string rtlMessage: qsTr("Return to the launch position of the vehicle.") readonly property string changeAltMessage: qsTr("Change the altitude of the vehicle up or down.") - readonly property string changeCruiseSpeedMessage: qsTr("Change the maximum horizontal cruise speed.") - readonly property string changeAirspeedMessage: qsTr("Change the equivalent airspeed setpoint") readonly property string gotoMessage: qsTr("Move the vehicle to the specified location.") property string setWaypointMessage: qsTr("Adjust current waypoint to %1.").arg(_actionData) readonly property string orbitMessage: qsTr("Orbit the vehicle around the specified location.") @@ -82,7 +75,6 @@ Item { readonly property string vtolTransitionFwdMessage: qsTr("Transition VTOL to fixed wing flight.") readonly property string vtolTransitionMRMessage: qsTr("Transition VTOL to multi-rotor flight.") readonly property string roiMessage: qsTr("Make the specified location a Region Of Interest.") - readonly property string setHomeMessage: qsTr("Set vehicle home as the specified location. This will affect Return to Home position") readonly property int actionRTL: 1 readonly property int actionLand: 2 @@ -108,40 +100,28 @@ Item { readonly property int actionROI: 22 readonly property int actionActionList: 23 readonly property int actionForceArm: 24 - readonly property int actionChangeSpeed: 25 - readonly property int actionGripper: 26 - readonly property int actionSetHome: 27 property var _activeVehicle: QGroundControl.multiVehicleManager.activeVehicle property bool _useChecklist: QGroundControl.settingsManager.appSettings.useChecklist.rawValue && QGroundControl.corePlugin.options.preFlightChecklistUrl.toString().length property bool _enforceChecklist: _useChecklist && QGroundControl.settingsManager.appSettings.enforceChecklist.rawValue - property bool _checklistPassed: _activeVehicle ? (_useChecklist ? (_enforceChecklist ? _activeVehicle.checkListState === Vehicle.CheckListPassed : true) : true) : true - property bool _canArm: _activeVehicle ? (_checklistPassed && (!_activeVehicle.healthAndArmingCheckReport.supported || _activeVehicle.healthAndArmingCheckReport.canArm)) : false - property bool _canTakeoff: _activeVehicle ? (_checklistPassed && (!_activeVehicle.healthAndArmingCheckReport.supported || _activeVehicle.healthAndArmingCheckReport.canTakeoff)) : false - property bool _canStartMission: _activeVehicle ? (_checklistPassed && (!_activeVehicle.healthAndArmingCheckReport.supported || _activeVehicle.healthAndArmingCheckReport.canStartMission)) : false - property bool _initialConnectComplete: _activeVehicle ? _activeVehicle.initialConnectComplete : false + property bool _canArm: _activeVehicle ? (_useChecklist ? (_enforceChecklist ? _activeVehicle.checkListState === Vehicle.CheckListPassed : true) : true) : false property bool showEmergenyStop: _guidedActionsEnabled && !_hideEmergenyStop && _vehicleArmed && _vehicleFlying property bool showArm: _guidedActionsEnabled && !_vehicleArmed && _canArm property bool showForceArm: _guidedActionsEnabled && !_vehicleArmed property bool showDisarm: _guidedActionsEnabled && _vehicleArmed && !_vehicleFlying property bool showRTL: _guidedActionsEnabled && _vehicleArmed && _activeVehicle.guidedModeSupported && _vehicleFlying && !_vehicleInRTLMode - property bool showTakeoff: _guidedActionsEnabled && _activeVehicle.takeoffVehicleSupported && !_vehicleFlying && _canTakeoff + property bool showTakeoff: _guidedActionsEnabled && _activeVehicle.takeoffVehicleSupported && !_vehicleFlying && _canArm property bool showLand: _guidedActionsEnabled && _activeVehicle.guidedModeSupported && _vehicleArmed && !_activeVehicle.fixedWing && !_vehicleInLandMode - property bool showStartMission: _guidedActionsEnabled && _missionAvailable && !_missionActive && !_vehicleFlying && _canStartMission + property bool showStartMission: _guidedActionsEnabled && _missionAvailable && !_missionActive && !_vehicleFlying && _canArm property bool showContinueMission: _guidedActionsEnabled && _missionAvailable && !_missionActive && _vehicleArmed && _vehicleFlying && (_currentMissionIndex < _missionItemCount - 1) property bool showPause: _guidedActionsEnabled && _vehicleArmed && _activeVehicle.pauseVehicleSupported && _vehicleFlying && !_vehiclePaused && !_fixedWingOnApproach property bool showChangeAlt: _guidedActionsEnabled && _vehicleFlying && _activeVehicle.guidedModeSupported && _vehicleArmed && !_missionActive - property bool showChangeSpeed: _guidedActionsEnabled && _vehicleFlying && _activeVehicle.guidedModeSupported && _vehicleArmed && !_missionActive && _speedLimitsAvailable property bool showOrbit: _guidedActionsEnabled && _vehicleFlying && __orbitSupported && !_missionActive property bool showROI: _guidedActionsEnabled && _vehicleFlying && __roiSupported && !_missionActive property bool showLandAbort: _guidedActionsEnabled && _vehicleFlying && _fixedWingOnApproach property bool showGotoLocation: _guidedActionsEnabled && _vehicleFlying - property bool showSetHome: _guidedActionsEnabled - property bool showActionList: _guidedActionsEnabled && (showStartMission || showResumeMission || showChangeAlt || showLandAbort || actionList.hasCustomActions) - property bool showGripper: _initialConnectComplete ? _activeVehicle.hasGripper : false - property string changeSpeedTitle: _fixedWing ? changeAirspeedTitle : changeCruiseSpeedTitle - property string changeSpeedMessage: _fixedWing ? changeAirspeedMessage : changeCruiseSpeedMessage + property bool showActionList: _guidedActionsEnabled && (showStartMission || showResumeMission || showChangeAlt || showLandAbort) // Note: The '_missionItemCount - 2' is a hack to not trigger resume mission when a mission ends with an RTL item property bool showResumeMission: _activeVehicle && !_vehicleArmed && _vehicleWasFlying && _missionAvailable && _resumeMissionIndex > 0 && (_resumeMissionIndex < _missionItemCount - 2) @@ -170,9 +150,6 @@ Item { property bool _vehicleWasFlying: false property bool _rcRSSIAvailable: _activeVehicle ? _activeVehicle.rcRSSI > 0 && _activeVehicle.rcRSSI <= 100 : false property bool _fixedWingOnApproach: _activeVehicle ? _activeVehicle.fixedWing && _vehicleLanding : false - property bool _fixedWing: _activeVehicle ? _activeVehicle.fixedWing || _activeVehicle.vtolInFwdFlight : false - property bool _speedLimitsAvailable: _activeVehicle && ((_fixedWing && _activeVehicle.haveFWSpeedLimits) || (!_fixedWing && _activeVehicle.haveMRSpeedLimits)) - property var _gripperFunction: undefined // You can turn on log output for GuidedActionsController by turning on GuidedActionsControllerLog category property bool __guidedModeSupported: _activeVehicle ? _activeVehicle.guidedModeSupported : false @@ -187,34 +164,6 @@ Item { } } - function setupSlider(actionCode) { - // generic defaults - guidedValueSlider.configureAsLinearSlider() - guidedValueSlider.setIsSpeedSlider(false) - - if (actionCode === actionTakeoff) { - guidedValueSlider.setMinVal(_activeVehicle.minimumTakeoffAltitude()) - guidedValueSlider.setValue(_activeVehicle ? _activeVehicle.minimumTakeoffAltitude() : 0) - guidedValueSlider.setDisplayText("Height") - } else if (actionCode === actionChangeSpeed) { - guidedValueSlider.setIsSpeedSlider(true) - if (_fixedWing) { - guidedValueSlider.setDisplayText("Set Airspeed") - guidedValueSlider.setMinVal(QGroundControl.unitsConversion.metersSecondToAppSettingsSpeedUnits(_activeVehicle.minimumEquivalentAirspeed()).toFixed(1)) - guidedValueSlider.setMaxVal(QGroundControl.unitsConversion.metersSecondToAppSettingsSpeedUnits(_activeVehicle.maximumEquivalentAirspeed()).toFixed(1)) - guidedValueSlider.setValue(_activeVehicle.airSpeed.value) - } else if (!_fixedWing && _activeVehicle.haveMRSpeedLimits) { - guidedValueSlider.setDisplayText("Set Speed") - guidedValueSlider.setMinVal(QGroundControl.unitsConversion.metersSecondToAppSettingsSpeedUnits(0.1).toFixed(1)) - guidedValueSlider.setMaxVal(QGroundControl.unitsConversion.metersSecondToAppSettingsSpeedUnits(_activeVehicle.maximumHorizontalSpeedMultirotor()).toFixed(1)) - guidedValueSlider.setValue(QGroundControl.unitsConversion.metersSecondToAppSettingsSpeedUnits(_activeVehicle.maximumHorizontalSpeedMultirotor()/2).toFixed(1)) - } - } else if (actionCode === actionChangeAlt || actionCode === actionOrbit || actionCode === actionGoto || actionCode === actionPause) { - guidedValueSlider.setDisplayText("New Alt(rel)") - guidedValueSlider.configureAsRelativeAltSliderExp() - } - } - on_ActiveVehicleChanged: _outputState() Component.onCompleted: _outputState() @@ -359,7 +308,7 @@ Item { function closeAll() { confirmDialog.visible = false actionList.visible = false - guidedValueSlider.visible = false + altitudeSlider.visible = false } // Called when an action is about to be executed in order to confirm @@ -372,9 +321,6 @@ Item { confirmDialog.mapIndicator = mapIndicator confirmDialog.optionText = "" _actionData = actionData - - setupSlider(actionCode) - switch (actionCode) { case actionArm: if (_vehicleFlying || !_guidedActionsEnabled) { @@ -406,7 +352,8 @@ Item { confirmDialog.title = takeoffTitle confirmDialog.message = takeoffMessage confirmDialog.hideTrigger = Qt.binding(function() { return !showTakeoff }) - guidedValueSlider.visible = true + altitudeSlider.setToMinimumTakeoff() + altitudeSlider.visible = true break; case actionStartMission: showImmediate = false @@ -451,7 +398,8 @@ Item { confirmDialog.title = changeAltTitle confirmDialog.message = changeAltMessage confirmDialog.hideTrigger = Qt.binding(function() { return !showChangeAlt }) - guidedValueSlider.visible = true + altitudeSlider.reset() + altitudeSlider.visible = true break; case actionGoto: confirmDialog.title = gotoTitle @@ -466,7 +414,8 @@ Item { confirmDialog.title = orbitTitle confirmDialog.message = orbitMessage confirmDialog.hideTrigger = Qt.binding(function() { return !showOrbit }) - guidedValueSlider.visible = true + altitudeSlider.reset() + altitudeSlider.visible = true break; case actionLandAbort: confirmDialog.title = landAbortTitle @@ -477,7 +426,8 @@ Item { confirmDialog.title = pauseTitle confirmDialog.message = pauseMessage confirmDialog.hideTrigger = Qt.binding(function() { return !showPause }) - guidedValueSlider.visible = true + altitudeSlider.reset() + altitudeSlider.visible = true break; case actionMVPause: confirmDialog.title = mvPauseTitle @@ -502,23 +452,6 @@ Item { case actionActionList: actionList.show() return - case actionChangeSpeed: - confirmDialog.hideTrigger = true - confirmDialog.title = changeSpeedTitle - confirmDialog.message = changeSpeedMessage - guidedValueSlider.visible = true - break - case actionGripper: - confirmDialog.hideTrigger = true - confirmDialog.title = gripperTitle - confirmDialog.message = gripperMessage - _widgetLayer._gripperMenu.createObject(mainWindow).open() - break - case actionSetHome: - confirmDialog.title = setHomeTitle - confirmDialog.message = setHomeMessage - confirmDialog.hideTrigger = Qt.binding(function() { return !showSetHome }) - break default: console.warn("Unknown actionCode", actionCode) return @@ -527,7 +460,7 @@ Item { } // Executes the specified action - function executeAction(actionCode, actionData, sliderOutputValue, optionChecked) { + function executeAction(actionCode, actionData, actionAltitudeChange, optionChecked) { var i; var rgVehicle; switch (actionCode) { @@ -538,7 +471,7 @@ Item { _activeVehicle.guidedModeLand() break case actionTakeoff: - _activeVehicle.guidedModeTakeoff(sliderOutputValue) + _activeVehicle.guidedModeTakeoff(actionAltitudeChange) break case actionResumeMission: case actionResumeMissionUploadFail: @@ -567,7 +500,7 @@ Item { _activeVehicle.emergencyStop() break case actionChangeAlt: - _activeVehicle.guidedModeChangeAltitude(sliderOutputValue, false /* pauseVehicle */) + _activeVehicle.guidedModeChangeAltitude(actionAltitudeChange, false /* pauseVehicle */) break case actionGoto: _activeVehicle.guidedModeGotoLocation(actionData) @@ -576,13 +509,13 @@ Item { _activeVehicle.setCurrentMissionSequence(actionData) break case actionOrbit: - _activeVehicle.guidedModeOrbit(orbitMapCircle.center, orbitMapCircle.radius() * (orbitMapCircle.clockwiseRotation ? 1 : -1), _activeVehicle.altitudeAMSL.rawValue + sliderOutputValue) + _activeVehicle.guidedModeOrbit(orbitMapCircle.center, orbitMapCircle.radius() * (orbitMapCircle.clockwiseRotation ? 1 : -1), _activeVehicle.altitudeAMSL.rawValue + actionAltitudeChange) break case actionLandAbort: _activeVehicle.abortLanding(50) // hardcoded value for climbOutAltitude that is currently ignored break case actionPause: - _activeVehicle.guidedModeChangeAltitude(sliderOutputValue, true /* pauseVehicle */) + _activeVehicle.guidedModeChangeAltitude(actionAltitudeChange, true /* pauseVehicle */) break case actionMVPause: rgVehicle = QGroundControl.multiVehicleManager.vehicles @@ -599,23 +532,6 @@ Item { case actionROI: _activeVehicle.guidedModeROI(actionData) break - case actionChangeSpeed: - if (_activeVehicle) { - // We need to convert back to m/s as that is what mavlink standard uses for MAV_CMD_DO_CHANGE_SPEED - var metersSecondSpeed = QGroundControl.unitsConversion.appSettingsSpeedUnitsToMetersSecond(sliderOutputValue).toFixed(1) - if (_activeVehicle.vtolInFwdFlight || _activeVehicle.fixedWing) { - _activeVehicle.guidedModeChangeEquivalentAirspeedMetersSecond(metersSecondSpeed) - } else { - _activeVehicle.guidedModeChangeGroundSpeedMetersSecond(metersSecondSpeed) - } - } - break - case actionGripper: - _gripperFunction === undefined ? _activeVehicle.sendGripperAction(Vehicle.Invalid_option) : _activeVehicle.sendGripperAction(_gripperFunction) - break - case actionSetHome: - _activeVehicle.doSetHome(actionData) - break default: console.warn(qsTr("Internal error: unknown actionCode"), actionCode) break diff --git a/src/FlightDisplay/GuidedAltitudeSlider.qml b/src/FlightDisplay/GuidedAltitudeSlider.qml new file mode 100644 index 0000000..39e4bd8 --- /dev/null +++ b/src/FlightDisplay/GuidedAltitudeSlider.qml @@ -0,0 +1,106 @@ +/**************************************************************************** + * + * (c) 2009-2020 QGROUNDCONTROL PROJECT + * + * QGroundControl is licensed according to the terms in the file + * COPYING.md in the root of the source code directory. + * + ****************************************************************************/ + +import QtQuick 2.3 +import QtQuick.Controls 1.2 + +import QGroundControl 1.0 +import QGroundControl.Controls 1.0 +import QGroundControl.Vehicle 1.0 + +/// Altitude slider for guided change altitude command +Rectangle { + id: _root + + readonly property real _maxAlt: 121.92 // 400 feet + readonly property real _minAlt: 3 + + property var _activeVehicle: QGroundControl.multiVehicleManager.activeVehicle + property var _flyViewSettings: QGroundControl.settingsManager.flyViewSettings + property real _vehicleAltitude: _activeVehicle ? _activeVehicle.altitudeRelative.rawValue : 0 + property bool _fixedWing: _activeVehicle ? _activeVehicle.fixedWing : false + property real _sliderMaxAlt: _flyViewSettings ? _flyViewSettings.guidedMaximumAltitude.rawValue : 0 + property real _sliderMinAlt: _flyViewSettings ? _flyViewSettings.guidedMinimumAltitude.rawValue : 0 + property bool _flying: _activeVehicle ? _activeVehicle.flying : false + + function reset() { + altSlider.value = 0 + } + + function setToMinimumTakeoff() { + altField.setToMinimumTakeoff() + } + + /// Returns the user specified change in altitude from the current vehicle altitude + function getAltitudeChangeValue() { + return altField.newAltitudeMeters - _vehicleAltitude + } + + function log10(value) { + if (value === 0) { + return 0 + } else { + return Math.log(value) / Math.LN10 + } + } + + Column { + id: headerColumn + anchors.margins: _margins + anchors.top: parent.top + anchors.left: parent.left + anchors.right: parent.right + + QGCLabel { + anchors.left: parent.left + anchors.right: parent.right + wrapMode: Text.WordWrap + horizontalAlignment: Text.AlignHCenter + text: qsTr("New Alt(rel)") + } + + QGCLabel { + id: altField + anchors.horizontalCenter: parent.horizontalCenter + text: newAltitudeAppUnits + " " + QGroundControl.unitsConversion.appSettingsHorizontalDistanceUnitsString + + property real altGainRange: Math.max(_sliderMaxAlt - _vehicleAltitude, 0) + property real altLossRange: Math.max(_vehicleAltitude - _sliderMinAlt, 0) + property real altExp: Math.pow(altSlider.value, 3) + property real altLossGain: altExp * (altSlider.value > 0 ? altGainRange : altLossRange) + property real newAltitudeMeters: _vehicleAltitude + altLossGain + property string newAltitudeAppUnits: QGroundControl.unitsConversion.metersToAppSettingsHorizontalDistanceUnits(newAltitudeMeters).toFixed(1) + + function setToMinimumTakeoff() { + altSlider.value = Math.pow(_activeVehicle.minimumTakeoffAltitude() / altGainRange, 1.0/3.0) + } + } + } + + QGCSlider { + id: altSlider + anchors.margins: _margins + anchors.top: headerColumn.bottom + anchors.bottom: parent.bottom + anchors.left: parent.left + anchors.right: parent.right + orientation: Qt.Vertical + minimumValue: _flying ? -1 : 0 + maximumValue: 1 + zeroCentered: true + rotation: 180 + + // We want slide up to be positive values + transform: Rotation { + origin.x: altSlider.width / 2 + origin.y: altSlider.height / 2 + angle: 180 + } + } +} diff --git a/src/FlightDisplay/GuidedValueSlider.qml b/src/FlightDisplay/GuidedValueSlider.qml deleted file mode 100644 index a7487c6..0000000 --- a/src/FlightDisplay/GuidedValueSlider.qml +++ /dev/null @@ -1,179 +0,0 @@ -/**************************************************************************** - * - * (c) 2009-2020 QGROUNDCONTROL PROJECT - * - * QGroundControl is licensed according to the terms in the file - * COPYING.md in the root of the source code directory. - * - ****************************************************************************/ - -import QtQuick 2.3 -import QtQuick.Controls 1.2 - -import QGroundControl 1.0 -import QGroundControl.Controls 1.0 -import QGroundControl.Vehicle 1.0 -import QGroundControl.Palette 1.0 - -Rectangle { - id: _root - - property var _flyViewSettings: QGroundControl.settingsManager.flyViewSettings - property real _vehicleAltitude: _activeVehicle ? _activeVehicle.altitudeRelative.rawValue : 0 - property bool _fixedWing: _activeVehicle ? _activeVehicle.fixedWing : false - property real _sliderMaxVal: _flyViewSettings ? _flyViewSettings.guidedMaximumAltitude.rawValue : 0 - property real _sliderMinVal: _flyViewSettings ? _flyViewSettings.guidedMinimumAltitude.rawValue : 0 - property real _sliderCenterValue: _vehicleAltitude - property string _displayText: "" - property bool _altSlider: true - property bool _speedSlider: false - - property var sliderValue : valueSlider.value - - onSliderValueChanged: { - valueField.updateFunction(sliderValue) - } - - on_SliderCenterValueChanged: { - valueField.updateFunction(sliderValue) - } - - function setValue(val) { - valueSlider.value = valueField.getSliderValueFromOutput(val) - valueField.updateFunction(valueSlider.value) - } - - function configureAsRelativeAltSliderExp() { - _sliderMaxVal = _flyViewSettings ? _flyViewSettings.guidedMaximumAltitude.rawValue : 0 - _sliderMinVal = _flyViewSettings ? _flyViewSettings.guidedMinimumAltitude.rawValue : 0 - _sliderCenterValue = Qt.binding(function() { return _vehicleAltitude }) - _altSlider = true - valueField.updateFunction = valueField.updateExpAroundCenterValue - valueSlider.value = 0 - valueField.updateFunction(sliderValue) - - } - - function configureAsLinearSlider() { - _altSlider = false - valueField.updateFunction = valueField.updateLinear - - } - - function setMinVal(min_val) { - _sliderMinVal = min_val - } - - function setMaxVal(max_val) { - _sliderMaxVal = max_val - } - - function setCenterValue(center) { - _sliderCenterValue = center - } - - function setDisplayText(text) { - _displayText = text - } - - function setIsSpeedSlider(isSpeed) { - _speedSlider = isSpeed - } - - function getOutputValue() { - if (_altSlider) { - return valueField.newValue - _sliderCenterValue - } else { - return valueField.newValue - } - } - - Column { - id: headerColumn - anchors.margins: _margins - anchors.top: parent.top - anchors.left: parent.left - anchors.right: parent.right - - QGCLabel { - anchors.left: parent.left - anchors.right: parent.right - wrapMode: Text.WordWrap - horizontalAlignment: Text.AlignHCenter - text: _displayText - } - - QGCLabel { - id: valueField - anchors.horizontalCenter: parent.horizontalCenter - text: newValueAppUnits + " " + (_speedSlider ? QGroundControl.unitsConversion.appSettingsSpeedUnitsString - : QGroundControl.unitsConversion.appSettingsHorizontalDistanceUnitsString) - - property real newValue - property string newValueAppUnits - - property var updateFunction : updateExpAroundCenterValue - - function updateExpAroundCenterValue(value) { - var decreaseRange = Math.max(_sliderCenterValue - _sliderMinVal, 0) - var increaseRange = Math.max(_sliderMaxVal - _sliderCenterValue, 0) - var valExp = Math.pow(valueSlider.value, 3) - var delta = valExp * (valueSlider.value > 0 ? increaseRange : decreaseRange) - newValue = _sliderCenterValue + delta - newValueAppUnits = QGroundControl.unitsConversion.metersToAppSettingsHorizontalDistanceUnits(newValue).toFixed(1) - } - - function updateLinear(value) { - // value is between -1 and 1 - newValue = _sliderMinVal + (value + 1) * 0.5 * (_sliderMaxVal - _sliderMinVal) - if (_speedSlider) { - // Already working in converted units - newValueAppUnits = newValue.toFixed(1) - } else { - newValueAppUnits = QGroundControl.unitsConversion.metersToAppSettingsHorizontalDistanceUnits(newValue).toFixed(1) - } - } - - function getSliderValueFromOutputLinear(val) { - return 2 * (val - _sliderMinVal) / (_sliderMaxVal - _sliderMinVal) - 1 - } - - function getSliderValueFromOutputExp(val) { - if (val >= _sliderCenterValue) { - return Math.pow(val / Math.max(_sliderMaxVal - _sliderCenterValue, 0), 1.0/3.0) - } else { - return -Math.pow(val / Math.max(_sliderCenterValue - _sliderMinVal, 0), 1.0/3.0) - } - } - - function getSliderValueFromOutput(output) { - if (updateFunction == updateExpAroundCenterValue) { - return getSliderValueFromOutputExp(output) - } else { - return getSliderValueFromOutputLinear(output) - } - } - } - } - - QGCSlider { - id: valueSlider - anchors.margins: _margins - anchors.top: headerColumn.bottom - anchors.bottom: parent.bottom - anchors.left: parent.left - anchors.right: parent.right - orientation: Qt.Vertical - minimumValue: -1 - maximumValue: 1 - zeroCentered: false - rotation: 180 - - // We want slide up to be positive values - transform: Rotation { - origin.x: valueSlider.width / 2 - origin.y: valueSlider.height / 2 - angle: 180 - } - } -} diff --git a/src/FlightDisplay/TelemetryValuesBar.qml b/src/FlightDisplay/TelemetryValuesBar.qml index 136cfe1..b5c8a9c 100644 --- a/src/FlightDisplay/TelemetryValuesBar.qml +++ b/src/FlightDisplay/TelemetryValuesBar.qml @@ -92,17 +92,8 @@ Rectangle { y: telemetryLayout.y width: telemetryLayout.width height: telemetryLayout.height - hoverEnabled: !ScreenTools.isMobile + hoverEnabled: true propagateComposedEvents: true - - onClicked: { - if (ScreenTools.isMobile && !valueArea.settingsUnlocked) { - valueArea.settingsUnlocked = true - mouse.accepted = true - } else { - mouse.accepted = false - } - } } HorizontalFactValueGrid { @@ -110,5 +101,11 @@ Rectangle { userSettingsGroup: telemetryBarUserSettingsGroup defaultSettingsGroup: telemetryBarDefaultSettingsGroup } + + GuidedActionConfirm { + Layout.fillWidth: true + guidedController: _guidedController + altitudeSlider: _guidedAltSlider + } } } diff --git a/src/FlightDisplay/VehicleWarnings.qml b/src/FlightDisplay/VehicleWarnings.qml index 44259a1..3624b0c 100644 --- a/src/FlightDisplay/VehicleWarnings.qml +++ b/src/FlightDisplay/VehicleWarnings.qml @@ -23,7 +23,7 @@ Rectangle { property var _activeVehicle: QGroundControl.multiVehicleManager.activeVehicle property bool _noGPSLockVisible: _activeVehicle && _activeVehicle.requiresGpsFix && !_activeVehicle.coordinate.isValid - property bool _prearmErrorVisible: _activeVehicle && !_activeVehicle.armed && _activeVehicle.prearmError && !_activeVehicle.healthAndArmingCheckReport.supported + property bool _prearmErrorVisible: _activeVehicle && !_activeVehicle.armed && _activeVehicle.prearmError Column { id: warningsCol diff --git a/src/FlightMap/FlightMap.qml b/src/FlightMap/FlightMap.qml index 7aefc11..0cc1c61 100644 --- a/src/FlightMap/FlightMap.qml +++ b/src/FlightMap/FlightMap.qml @@ -66,13 +66,12 @@ Map { } function centerToSpecifiedLocation() { - specifyMapPositionDialog.createObject(mainWindow).open() + mainWindow.showComponentDialog(specifyMapPositionDialog, qsTr("Specify Position"), mainWindow.showDialogDefaultWidth, StandardButton.Close) } Component { id: specifyMapPositionDialog EditPositionDialog { - title: qsTr("Specify Position") coordinate: center onCoordinateChanged: center = coordinate } @@ -103,11 +102,9 @@ Map { on_ActiveVehicleCoordinateChanged: _possiblyCenterToVehiclePosition() - onMapReadyChanged: { - if (_map.mapReady) { - updateActiveMapType() - _possiblyCenterToVehiclePosition() - } + Component.onCompleted: { + updateActiveMapType() + _possiblyCenterToVehiclePosition() } Connections { diff --git a/src/FlightMap/MapItems/VehicleMapItem.qml b/src/FlightMap/MapItems/VehicleMapItem.qml index 49c8106..176f479 100644 --- a/src/FlightMap/MapItems/VehicleMapItem.qml +++ b/src/FlightMap/MapItems/VehicleMapItem.qml @@ -19,14 +19,12 @@ import QGroundControl.Controls 1.0 /// Marker for displaying a vehicle location on the map MapQuickItem { - id: _root - property var vehicle /// Vehicle object, undefined for ADSB vehicle property var map property double altitude: Number.NaN ///< NAN to not show property string callsign: "" ///< Vehicle callsign property double heading: vehicle ? vehicle.heading.value : Number.NaN ///< Vehicle heading, NAN for none - property real size: ScreenTools.defaultFontPixelHeight * 3 /// Default size for icon, most usage overrides this + property real size: _adsbVehicle ? _adsbSize : _uavSize /// Size for icon property bool alert: false /// Collision alert anchorPoint.x: vehicleItem.width / 2 @@ -35,6 +33,8 @@ MapQuickItem { property var _activeVehicle: QGroundControl.multiVehicleManager.activeVehicle property bool _adsbVehicle: vehicle ? false : true + property real _uavSize: ScreenTools.defaultFontPixelHeight * 5 + property real _adsbSize: ScreenTools.defaultFontPixelHeight * 2.5 property var _map: map property bool _multiVehicle: QGroundControl.multiVehicleManager.vehicles.count > 1 @@ -65,8 +65,8 @@ MapQuickItem { id: vehicleIcon source: _adsbVehicle ? (alert ? "/qmlimages/AlertAircraft.svg" : "/qmlimages/AwarenessAircraft.svg") : vehicle.vehicleImageOpaque mipmap: true - width: _root.size - sourceSize.width: _root.size + width: size + sourceSize.width: size fillMode: Image.PreserveAspectFit transform: Rotation { origin.x: vehicleIcon.width / 2 diff --git a/src/FlightMap/Widgets/PhotoVideoControl.qml b/src/FlightMap/Widgets/PhotoVideoControl.qml index 73eeee4..61d3a07 100644 --- a/src/FlightMap/Widgets/PhotoVideoControl.qml +++ b/src/FlightMap/Widgets/PhotoVideoControl.qml @@ -25,7 +25,7 @@ import QGroundControl.FactControls 1.0 Rectangle { height: mainLayout.height + (_margins * 2) - color: Qt.rgba(qgcPal.window.r, qgcPal.window.g, qgcPal.window.b, 0.5) + color: "#80000000" radius: _margins visible: (_mavlinkCamera || _videoStreamAvailable || _simpleCameraAvailable) && multiVehiclePanelSelector.showSingleVehiclePanel @@ -101,19 +101,7 @@ Rectangle { function toggleShooting() { console.log("toggleShooting", _anyVideoStreamAvailable) - - // This whole mavlinkCameraCaptureVideoOrPhotos stuff is to work around some strange qml boolean testing - // behavior which wasn't working correctly. This should work: - // if (_mavlinkCamera && (_mavlinkCamera.capturesVideo || _mavlinkCamera.capturesPhotos) ) { - // but it doesn't for some strange reason. Hence all the stuff below... - var mavlinkCameraCaptureVideoOrPhotos = false - if (_mavlinkCamera) { - if (_mavlinkCamera.capturesVideo || _mavlinkCamera.capturesPhotos) { - mavlinkCameraCaptureVideoOrPhotos = true - } - } - - if (mavlinkCameraCaptureVideoOrPhotos) { + if (_mavlinkCamera && _mavlinkCamera.capturesVideo) { if(_mavlinkCameraInVideoMode) { _mavlinkCamera.toggleVideo() } else { @@ -165,7 +153,7 @@ Rectangle { QGCMouseArea { fillItem: parent - onClicked: settingsDialogComponent.createObject(mainWindow).open() + onClicked: mainWindow.showPopupDialogFromComponent(settingsDialogComponent) } } diff --git a/src/Joystick/Joystick.cc b/src/Joystick/Joystick.cc index b9835c4..8492924 100644 --- a/src/Joystick/Joystick.cc +++ b/src/Joystick/Joystick.cc @@ -19,7 +19,7 @@ #include -// JoystickLog Category declaration moved to QGCLoggingCategory.cc to allow access in Vehicle +QGC_LOGGING_CATEGORY(JoystickLog, "JoystickLog") QGC_LOGGING_CATEGORY(JoystickValuesLog, "JoystickValuesLog") const char* Joystick::_settingsGroup = "Joysticks"; @@ -65,8 +65,6 @@ const char* Joystick::_buttonActionGimbalLeft = QT_TR_NOOP("Gimbal Left" const char* Joystick::_buttonActionGimbalRight = QT_TR_NOOP("Gimbal Right"); const char* Joystick::_buttonActionGimbalCenter = QT_TR_NOOP("Gimbal Center"); const char* Joystick::_buttonActionEmergencyStop = QT_TR_NOOP("Emergency Stop"); -const char* Joystick::_buttonActionGripperGrab = QT_TR_NOOP("Gripper Close"); -const char* Joystick::_buttonActionGripperRelease = QT_TR_NOOP("Gripper Open"); const char* Joystick::_rgFunctionSettingsKey[Joystick::maxFunction] = { "RollAxis", @@ -108,8 +106,6 @@ Joystick::Joystick(const QString& name, int axisCount, int buttonCount, int hatC , _totalButtonCount(_buttonCount+_hatButtonCount) , _multiVehicleManager(multiVehicleManager) { - qRegisterMetaType(); - _rgAxisValues = new int[static_cast(_axisCount)]; _rgCalibration = new Calibration_t[static_cast(_axisCount)]; _rgButtonValues = new uint8_t[static_cast(_totalButtonCount)]; @@ -124,7 +120,6 @@ Joystick::Joystick(const QString& name, int axisCount, int buttonCount, int hatC _updateTXModeSettingsKey(_multiVehicleManager->activeVehicle()); _loadSettings(); connect(_multiVehicleManager, &MultiVehicleManager::activeVehicleChanged, this, &Joystick::_activeVehicleChanged); - connect(qgcApp()->toolbox()->multiVehicleManager()->vehicles(), &QmlObjectListModel::countChanged, this, &Joystick::_vehicleCountChanged); _customMavCommands = JoystickMavCommand::load("JoystickMavCommands.json"); } @@ -222,20 +217,6 @@ void Joystick::_activeVehicleChanged(Vehicle* activeVehicle) setTXMode(mode); } } -void Joystick::_flightModesChanged() -{ - _buildActionList(_activeVehicle); -} - -void Joystick::_vehicleCountChanged(int count) -{ - if(count == 0) - { - // then the last vehicle has been deleted - qCDebug(JoystickLog) << "Stopping joystick thread due to last active vehicle deletion"; - this->stopPolling(); - } -} void Joystick::_loadSettings() { @@ -505,9 +486,7 @@ void Joystick::run() while (!_exitThread) { _update(); _handleButtons(); - if (axisCount() != 0) { - _handleAxis(); - } + _handleAxis(); QGC::SLEEP::msleep(qMin(static_cast(1000.0f / _maxAxisFrequencyHz), static_cast(1000.0f / _maxButtonFrequencyHz)) / 2); } _close(); @@ -720,13 +699,11 @@ void Joystick::startPolling(Vehicle* vehicle) disconnect(this, &Joystick::centerGimbal, _activeVehicle, &Vehicle::centerGimbal); disconnect(this, &Joystick::gimbalControlValue, _activeVehicle, &Vehicle::gimbalControlValue); disconnect(this, &Joystick::emergencyStop, _activeVehicle, &Vehicle::emergencyStop); - disconnect(this, &Joystick::gripperAction, _activeVehicle, &Vehicle::setGripperAction); - disconnect(_activeVehicle, &Vehicle::flightModesChanged, this, &Joystick::_flightModesChanged); } // Always set up the new vehicle _activeVehicle = vehicle; // If joystick is not calibrated, disable it - if ( axisCount() != 0 && !_calibrated ) { + if ( !_calibrated ) { vehicle->setJoystickEnabled(false); } // Update qml in case of joystick transition @@ -744,8 +721,6 @@ void Joystick::startPolling(Vehicle* vehicle) connect(this, &Joystick::centerGimbal, _activeVehicle, &Vehicle::centerGimbal); connect(this, &Joystick::gimbalControlValue, _activeVehicle, &Vehicle::gimbalControlValue); connect(this, &Joystick::emergencyStop, _activeVehicle, &Vehicle::emergencyStop); - connect(this, &Joystick::gripperAction, _activeVehicle, &Vehicle::setGripperAction); - connect(_activeVehicle, &Vehicle::flightModesChanged, this, &Joystick::_flightModesChanged); } } if (!isRunning()) { @@ -765,8 +740,6 @@ void Joystick::stopPolling(void) disconnect(this, &Joystick::gimbalYawStep, _activeVehicle, &Vehicle::gimbalYawStep); disconnect(this, &Joystick::centerGimbal, _activeVehicle, &Vehicle::centerGimbal); disconnect(this, &Joystick::gimbalControlValue, _activeVehicle, &Vehicle::gimbalControlValue); - disconnect(this, &Joystick::gripperAction, _activeVehicle, &Vehicle::setGripperAction); - disconnect(_activeVehicle, &Vehicle::flightModesChanged, this, &Joystick::_flightModesChanged); } _exitThread = true; } @@ -973,8 +946,8 @@ void Joystick::setCircleCorrection(bool circleCorrection) void Joystick::setAxisFrequency(float val) { //-- Arbitrary limits - val = qMax(_minAxisFrequencyHz, val); - val = qMin(_maxAxisFrequencyHz, val); + val = qMin(_minAxisFrequencyHz, val); + val = qMax(_maxAxisFrequencyHz, val); _axisFrequencyHz = val; _saveSettings(); emit axisFrequencyHzChanged(); @@ -983,8 +956,8 @@ void Joystick::setAxisFrequency(float val) void Joystick::setButtonFrequency(float val) { //-- Arbitrary limits - val = qMax(_minButtonFrequencyHz, val); - val = qMin(_maxButtonFrequencyHz, val); + val = qMin(_minButtonFrequencyHz, val); + val = qMax(_maxButtonFrequencyHz, val); _buttonFrequencyHz = val; _saveSettings(); emit buttonFrequencyHzChanged(); @@ -1018,7 +991,7 @@ void Joystick::_executeButtonAction(const QString& action, bool buttonDown) if (buttonDown) emit setVtolInFwdFlight(true); } else if (action == _buttonActionVTOLMultiRotor) { if (buttonDown) emit setVtolInFwdFlight(false); - } else if (_activeVehicle->flightModes().contains(action)) { + } else if (_activeVehicle->flightModes().contains(action) || _activeVehicle->extraJoystickFlightModes().contains(action)) { if (buttonDown) emit setFlightMode(action); } else if(action == _buttonActionContinuousZoomIn || action == _buttonActionContinuousZoomOut) { if (buttonDown) { @@ -1056,14 +1029,6 @@ void Joystick::_executeButtonAction(const QString& action, bool buttonDown) } } else if(action == _buttonActionEmergencyStop) { if(buttonDown) emit emergencyStop(); - } else if(action == _buttonActionGripperGrab) { - if(buttonDown) { - emit gripperAction(GRIPPER_ACTION_GRAB); - } - } else if(action == _buttonActionGripperRelease) { - if(buttonDown) { - emit gripperAction(GRIPPER_ACTION_RELEASE); - } } else { if (buttonDown && _activeVehicle) { for (auto& item : _customMavCommands) { @@ -1073,6 +1038,7 @@ void Joystick::_executeButtonAction(const QString& action, bool buttonDown) } } } + qCDebug(JoystickLog) << "_buttonAction unknown action:" << action; } } @@ -1135,6 +1101,10 @@ void Joystick::_buildActionList(Vehicle* activeVehicle) foreach(auto mode, list) { _assignableButtonActions.append(new AssignableButtonAction(this, mode)); } + list = activeVehicle->extraJoystickFlightModes(); + foreach(auto mode, list) { + _assignableButtonActions.append(new AssignableButtonAction(this, mode)); + } } _assignableButtonActions.append(new AssignableButtonAction(this, _buttonActionVTOLFixedWing)); _assignableButtonActions.append(new AssignableButtonAction(this, _buttonActionVTOLMultiRotor)); @@ -1156,12 +1126,8 @@ void Joystick::_buildActionList(Vehicle* activeVehicle) _assignableButtonActions.append(new AssignableButtonAction(this, _buttonActionGimbalRight, true)); _assignableButtonActions.append(new AssignableButtonAction(this, _buttonActionGimbalCenter)); _assignableButtonActions.append(new AssignableButtonAction(this, _buttonActionEmergencyStop)); - _assignableButtonActions.append(new AssignableButtonAction(this, _buttonActionGripperGrab)); - _assignableButtonActions.append(new AssignableButtonAction(this, _buttonActionGripperRelease)); - - for (auto& item : _customMavCommands) { + for (auto& item : _customMavCommands) _assignableButtonActions.append(new AssignableButtonAction(this, item.name())); - } for(int i = 0; i < _assignableButtonActions.count(); i++) { AssignableButtonAction* p = qobject_cast(_assignableButtonActions[i]); diff --git a/src/Joystick/Joystick.h b/src/Joystick/Joystick.h index 7405630..81ccb07 100644 --- a/src/Joystick/Joystick.h +++ b/src/Joystick/Joystick.h @@ -14,16 +14,15 @@ #include #include -#include #include "QGCLoggingCategory.h" #include "Vehicle.h" #include "MultiVehicleManager.h" #include "JoystickMavCommand.h" +#include -// JoystickLog Category declaration moved to QGCLoggingCategory.cc to allow access in Vehicle +Q_DECLARE_LOGGING_CATEGORY(JoystickLog) Q_DECLARE_LOGGING_CATEGORY(JoystickValuesLog) -Q_DECLARE_METATYPE(GRIPPER_ACTIONS) /// Action assigned to button class AssignedButtonAction : public QObject { @@ -218,12 +217,6 @@ signals: void setVtolInFwdFlight (bool set); void setFlightMode (const QString& flightMode); void emergencyStop (); - /** - * @brief Send MAV_CMD_DO_GRIPPER command to the vehicle - * - * @param gripperAction (Open / Close) Gripper action to command - */ - void gripperAction (GRIPPER_ACTIONS gripperAction); protected: void _setDefaultCalibration (); @@ -359,12 +352,7 @@ private: static const char* _buttonActionGimbalRight; static const char* _buttonActionGimbalCenter; static const char* _buttonActionEmergencyStop; - static const char* _buttonActionGripperGrab; - static const char* _buttonActionGripperRelease; - private slots: void _activeVehicleChanged(Vehicle* activeVehicle); - void _vehicleCountChanged(int count); - void _flightModesChanged(); }; diff --git a/src/Joystick/JoystickManager.cc b/src/Joystick/JoystickManager.cc index bd03f15..0cba191 100644 --- a/src/Joystick/JoystickManager.cc +++ b/src/Joystick/JoystickManager.cc @@ -175,15 +175,14 @@ QString JoystickManager::activeJoystickName(void) return _activeJoystick ? _activeJoystick->name() : QString(); } -bool JoystickManager::setActiveJoystickName(const QString& name) +void JoystickManager::setActiveJoystickName(const QString& name) { - if (_name2JoystickMap.contains(name)) { - setActiveJoystick(_name2JoystickMap[name]); - return true; - } else { + if (!_name2JoystickMap.contains(name)) { qCWarning(JoystickManagerLog) << "Set active not in map" << name; - return false; + return; } + + setActiveJoystick(_name2JoystickMap[name]); } /* diff --git a/src/Joystick/JoystickManager.h b/src/Joystick/JoystickManager.h index 6614501..f4f939a 100644 --- a/src/Joystick/JoystickManager.h +++ b/src/Joystick/JoystickManager.h @@ -47,7 +47,7 @@ public: void setActiveJoystick(Joystick* joystick); QString activeJoystickName(void); - bool setActiveJoystickName(const QString& name); + void setActiveJoystickName(const QString& name); void restartJoystickCheckTimer(void); diff --git a/src/Joystick/JoystickSDL.cc b/src/Joystick/JoystickSDL.cc index 4743e38..172627c 100644 --- a/src/Joystick/JoystickSDL.cc +++ b/src/Joystick/JoystickSDL.cc @@ -44,6 +44,11 @@ QMap JoystickSDL::discover(MultiVehicleManager* _multiVehicl axisCount = SDL_JoystickNumAxes(sdlJoystick); buttonCount = SDL_JoystickNumButtons(sdlJoystick); hatCount = SDL_JoystickNumHats(sdlJoystick); +#ifdef Q_OS_WIN + if (name == QStringLiteral("Xbox Series X Controller") || name == QStringLiteral("Controller (Xbox One For Windows)")) { + hatCount = 0; + } +#endif if (axisCount < 0 || buttonCount < 0 || hatCount < 0) { qCWarning(JoystickLog) << "\t libsdl error parsing joystick features:" << SDL_GetError(); } diff --git a/src/MissionManager/CorridorScanComplexItem.cc b/src/MissionManager/CorridorScanComplexItem.cc index cf11fa6..565cc92 100644 --- a/src/MissionManager/CorridorScanComplexItem.cc +++ b/src/MissionManager/CorridorScanComplexItem.cc @@ -346,15 +346,7 @@ void CorridorScanComplexItem::_rebuildTransectsPhase1(void) QList reversedVertices; for (int j=transectVertices.count()-1; j>=0; j--) { reversedVertices.append(transectVertices[j]); - - // as we are flying the transect reversed, we also need to swap entry and exit coordinate types - if (reversedVertices.last().coordType == CoordTypeSurveyEntry) { - reversedVertices.last().coordType = CoordTypeSurveyExit; - } else if (reversedVertices.last().coordType == CoordTypeSurveyExit) { - reversedVertices.last().coordType = CoordTypeSurveyEntry; - } } - transectVertices = reversedVertices; } else { reverseVertices = true; diff --git a/src/MissionManager/GeoFenceController.cc b/src/MissionManager/GeoFenceController.cc index 7092d1f..4e3042d 100644 --- a/src/MissionManager/GeoFenceController.cc +++ b/src/MissionManager/GeoFenceController.cc @@ -39,9 +39,6 @@ const char* GeoFenceController::_jsonCirclesKey = "circles"; const char* GeoFenceController::_breachReturnAltitudeFactName = "Altitude"; const char* GeoFenceController::_px4ParamCircularFence = "GF_MAX_HOR_DIST"; -const char* GeoFenceController::_apmParamCircularFenceRadius = "FENCE_RADIUS"; -const char* GeoFenceController::_apmParamCircularFenceEnabled = "FENCE_ENABLE"; -const char* GeoFenceController::_apmParamCircularFenceType = "FENCE_TYPE"; GeoFenceController::GeoFenceController(PlanMasterController* masterController, QObject* parent) : PlanElementController (masterController, parent) @@ -498,102 +495,30 @@ bool GeoFenceController::supported(void) const return (_managerVehicle->capabilityBits() & MAV_PROTOCOL_CAPABILITY_MISSION_FENCE) && (_managerVehicle->maxProtoVersion() >= 200); } -/* Returns the radius of the "paramCircularFence" - * which is called the "Geofence Failsafe" in PX4 and the "Circular Geofence" on Ardupilot - * this code should ideally live in the firmware plugin since it is specific to apm and px4 firmwares */ +// Hack for PX4 double GeoFenceController::paramCircularFence(void) { - if(_managerVehicle->isOfflineEditingVehicle()){ + if (_managerVehicle->isOfflineEditingVehicle() || !_managerVehicle->parameterManager()->parameterExists(FactSystem::defaultComponentId, _px4ParamCircularFence)) { return 0; } - if(_managerVehicle->px4Firmware()){ - if(!_managerVehicle->parameterManager()->parameterExists(FactSystem::defaultComponentId, _px4ParamCircularFence)){ - return 0; - } - - return _managerVehicle->parameterManager()->getParameter(FactSystem::defaultComponentId, _px4ParamCircularFence)->rawValue().toDouble(); - } - - if(_managerVehicle->apmFirmware()) - { - if (!_managerVehicle->parameterManager()->parameterExists(FactSystem::defaultComponentId, _apmParamCircularFenceRadius) || - !_managerVehicle->parameterManager()->parameterExists(FactSystem::defaultComponentId, _apmParamCircularFenceEnabled) || - !_managerVehicle->parameterManager()->parameterExists(FactSystem::defaultComponentId, _apmParamCircularFenceType)){ - return 0; - } - - bool apm_fence_enabled = _managerVehicle->parameterManager()->getParameter(FactSystem::defaultComponentId, _apmParamCircularFenceEnabled)->rawValue().toBool(); - bool apm_fence_type_circle = (1 << 1) & _managerVehicle->parameterManager()->getParameter(FactSystem::defaultComponentId, _apmParamCircularFenceType)->rawValue().toUInt(); - - if(!apm_fence_enabled || !apm_fence_type_circle) - return 0; - - return _managerVehicle->parameterManager()->getParameter(FactSystem::defaultComponentId, _apmParamCircularFenceRadius)->rawValue().toDouble(); - } - - return 0; + return _managerVehicle->parameterManager()->getParameter(FactSystem::defaultComponentId, _px4ParamCircularFence)->rawValue().toDouble(); } void GeoFenceController::_parametersReady(void) { - /* When parameters are ready we setup notifications of param changes - * so that if a param changes we can emit paramCircularFenceChanged - * and trigger an update to the UI */ - - // First disconnect from any existing facts if (_px4ParamCircularFenceFact) { _px4ParamCircularFenceFact->disconnect(this); _px4ParamCircularFenceFact = nullptr; } - if (_apmParamCircularFenceRadiusFact) { - _apmParamCircularFenceRadiusFact->disconnect(this); - _apmParamCircularFenceRadiusFact = nullptr; - } - if (_apmParamCircularFenceEnabledFact) { - _apmParamCircularFenceEnabledFact->disconnect(this); - _apmParamCircularFenceEnabledFact = nullptr; - } - if (_apmParamCircularFenceTypeFact) { - _apmParamCircularFenceTypeFact->disconnect(this); - _apmParamCircularFenceTypeFact = nullptr; - } - // then connect to needed paremters - // While checking they exist to avoid errors - ParameterManager* _paramManager = _managerVehicle->parameterManager(); - - if(_managerVehicle->isOfflineEditingVehicle()){ + if (_managerVehicle->isOfflineEditingVehicle() || !_managerVehicle->parameterManager()->parameterExists(FactSystem::defaultComponentId, _px4ParamCircularFence)) { emit paramCircularFenceChanged(); return; } - if(_managerVehicle->px4Firmware()){ - if(!_paramManager->parameterExists(FactSystem::defaultComponentId, _px4ParamCircularFence)){ - emit paramCircularFenceChanged(); - return; - } - - _px4ParamCircularFenceFact = _paramManager->getParameter(FactSystem::defaultComponentId, _px4ParamCircularFence); - connect(_px4ParamCircularFenceFact, &Fact::rawValueChanged, this, &GeoFenceController::paramCircularFenceChanged); - } - else if(_managerVehicle->apmFirmware()) - { - if (!_paramManager->parameterExists(FactSystem::defaultComponentId, _apmParamCircularFenceRadius) || - !_paramManager->parameterExists(FactSystem::defaultComponentId, _apmParamCircularFenceEnabled) || - !_paramManager->parameterExists(FactSystem::defaultComponentId, _apmParamCircularFenceType)){ - emit paramCircularFenceChanged(); - return; - } - - _apmParamCircularFenceRadiusFact = _paramManager->getParameter(FactSystem::defaultComponentId, _apmParamCircularFenceRadius); - _apmParamCircularFenceEnabledFact = _paramManager->getParameter(FactSystem::defaultComponentId, _apmParamCircularFenceEnabled); - _apmParamCircularFenceTypeFact = _paramManager->getParameter(FactSystem::defaultComponentId, _apmParamCircularFenceType); - connect(_apmParamCircularFenceRadiusFact, &Fact::rawValueChanged, this, &GeoFenceController::paramCircularFenceChanged); - connect(_apmParamCircularFenceEnabledFact, &Fact::rawValueChanged, this, &GeoFenceController::paramCircularFenceChanged); - connect(_apmParamCircularFenceTypeFact, &Fact::rawValueChanged, this, &GeoFenceController::paramCircularFenceChanged); - } - + _px4ParamCircularFenceFact = _managerVehicle->parameterManager()->getParameter(FactSystem::defaultComponentId, _px4ParamCircularFence); + connect(_px4ParamCircularFenceFact, &Fact::rawValueChanged, this, &GeoFenceController::paramCircularFenceChanged); emit paramCircularFenceChanged(); } diff --git a/src/MissionManager/GeoFenceController.h b/src/MissionManager/GeoFenceController.h index 19f0643..83bb2e2 100644 --- a/src/MissionManager/GeoFenceController.h +++ b/src/MissionManager/GeoFenceController.h @@ -35,8 +35,8 @@ public: Q_PROPERTY(QGeoCoordinate breachReturnPoint READ breachReturnPoint WRITE setBreachReturnPoint NOTIFY breachReturnPointChanged) Q_PROPERTY(Fact* breachReturnAltitude READ breachReturnAltitude CONSTANT) - // Radius of the "paramCircularFence" which is called the "Geofence Failsafe" in PX4 and the "Circular Geofence" on ArduPilot - Q_PROPERTY(double paramCircularFence READ paramCircularFence NOTIFY paramCircularFenceChanged) + // Hack to expose PX4 circular fence controlled by GF_MAX_HOR_DIST + Q_PROPERTY(double paramCircularFence READ paramCircularFence NOTIFY paramCircularFenceChanged) /// Add a new inclusion polygon to the fence /// @param topLeft: Top left coordinate or map viewport @@ -114,18 +114,11 @@ private: Fact _breachReturnAltitudeFact; double _breachReturnDefaultAltitude = qQNaN(); bool _itemsRequested = false; - - Fact* _px4ParamCircularFenceFact = nullptr; - Fact* _apmParamCircularFenceRadiusFact = nullptr; - Fact* _apmParamCircularFenceEnabledFact = nullptr; - Fact* _apmParamCircularFenceTypeFact = nullptr; + Fact* _px4ParamCircularFenceFact = nullptr; static QMap _metaDataMap; static const char* _px4ParamCircularFence; - static const char* _apmParamCircularFenceRadius; - static const char* _apmParamCircularFenceEnabled; - static const char* _apmParamCircularFenceType; static const int _jsonCurrentVersion = 2; diff --git a/src/MissionManager/GeoFenceManager.cc b/src/MissionManager/GeoFenceManager.cc index 2042d2f..af63420 100644 --- a/src/MissionManager/GeoFenceManager.cc +++ b/src/MissionManager/GeoFenceManager.cc @@ -19,6 +19,9 @@ QGC_LOGGING_CATEGORY(GeoFenceManagerLog, "GeoFenceManagerLog") GeoFenceManager::GeoFenceManager(Vehicle* vehicle) : PlanManager (vehicle, MAV_MISSION_TYPE_FENCE) +#if defined(QGC_AIRMAP_ENABLED) + , _airspaceManager (qgcApp()->toolbox()->airspaceManager()) +#endif { connect(this, &PlanManager::inProgressChanged, this, &GeoFenceManager::inProgressChanged); connect(this, &PlanManager::error, this, &GeoFenceManager::error); diff --git a/src/MissionManager/GeoFenceManager.h b/src/MissionManager/GeoFenceManager.h index 3b67033..3270f23 100644 --- a/src/MissionManager/GeoFenceManager.h +++ b/src/MissionManager/GeoFenceManager.h @@ -12,6 +12,10 @@ #include #include +#if defined(QGC_AIRMAP_ENABLED) +#include "AirspaceManager.h" +#endif + #include "QGCLoggingCategory.h" #include "FactSystem.h" #include "PlanManager.h" @@ -83,4 +87,7 @@ private: bool _firstParamLoadComplete = false; QList _sendPolygons; QList _sendCircles; +#if defined(QGC_AIRMAP_ENABLED) + AirspaceManager* _airspaceManager = nullptr; +#endif }; diff --git a/src/MissionManager/MavCmdInfoCommon.json b/src/MissionManager/MavCmdInfoCommon.json index b01650f..2bf2c92 100644 --- a/src/MissionManager/MavCmdInfoCommon.json +++ b/src/MissionManager/MavCmdInfoCommon.json @@ -36,15 +36,13 @@ "label": "Hold", "units": "secs", "default": 0, - "decimalPlaces": 0, - "min": 0 + "decimalPlaces": 0 }, "param2": { "label": "Acceptance", "units": "m", "default": 0, - "decimalPlaces": 2, - "min": 0 + "decimalPlaces": 2 }, "param3": { "label": "Pass Radius", @@ -95,8 +93,7 @@ "param1": { "label": "Turns", "default": 1, - "decimalPlaces": 0, - "min": 0 + "decimalPlaces": 0 }, "param2": { "label": "Leave Loiter", @@ -132,8 +129,7 @@ "label": "Loiter Time", "units": "secs", "default": 30, - "decimalPlaces": 0, - "min": 0 + "decimalPlaces": 0 }, "param2": { "label": "Leave Loiter", @@ -298,8 +294,7 @@ "label": "Hold", "units": "secs", "default": 0, - "decimalPlaces": 0, - "min": 0 + "decimalPlaces": 0 } }, { "id": 83, "rawName": "MAV_CMD_NAV_ALTITUDE_WAIT", "friendlyName": "Altitude wait" }, @@ -369,34 +364,27 @@ "id": 93, "rawName": "MAV_CMD_NAV_DELAY", "friendlyName": "Delay until", - "description": "Delay until the specified time is reached.", + "description": "Delay unti the specified time is reached.", "param1": { "label": "Hold", "units": "secs", "default": 30, - "decimalPlaces": 0, - "min": -1 + "decimalPlaces": 0 }, "param2": { "label": "Hour (utc)", "default": 0, - "decimalPlaces": 0, - "min": -1, - "max": 23 + "decimalPlaces": 0 }, "param3": { "label": "Min (utc)", "default": 0, - "decimalPlaces": 0, - "min": -1, - "max": 59 + "decimalPlaces": 0 }, "param4": { "label": "Sec (utc)", "default": 0, - "decimalPlaces": 0, - "min": -1, - "max": 59 + "decimalPlaces": 0 } }, { @@ -410,8 +398,7 @@ "label": "Delay", "units": "secs", "default": 30, - "decimalPlaces": 0, - "min": 0 + "decimalPlaces": 0 } }, { @@ -439,8 +426,7 @@ "label": "Distance", "units": "m", "default": 10, - "decimalPlaces": 2, - "min": 0 + "decimalPlaces": 2 } }, { @@ -471,7 +457,7 @@ "label": "Offset", "enumStrings": "Relative,Absolute", "enumValues": "1,0", - "default": 0 + "default": 1 } }, { "id": 176, "rawName": "MAV_CMD_DO_SET_MODE", "friendlyName": "Set mode" }, @@ -507,14 +493,12 @@ "param1": { "label": "Item #", "default": 1, - "decimalPlaces": 0, - "min": 0 + "decimalPlaces": 0 }, "param2": { "label": "Repeat", "default": 10, - "decimalPlaces": 0, - "min": 0 + "decimalPlaces": 0 } }, { @@ -532,14 +516,12 @@ "param2": { "label": "Speed", "units": "m/s", - "default": 0, - "min": -2 + "default": 0 }, "param3": { "label": "Throttle", "units": "%", - "default": 0, - "min": -2 + "default": 0 }, "param4": { "label": "Offset", @@ -573,8 +555,7 @@ "param1": { "label": "Relay #", "default": 0, - "decimalPlaces": 0, - "min": 0 + "decimalPlaces": 0 }, "param2": { "label": "Value", @@ -589,22 +570,19 @@ "param1": { "label": "Relay #", "default": 0, - "decimalPlaces": 0, - "min": 0 + "decimalPlaces": 0 }, "param2": { "label": "Cycles", "default": 1, "units": "count", - "decimalPlaces": 0, - "min": 1 + "decimalPlaces": 0 }, "param3": { "label": "Time", "default": 10, "units": "secs", - "decimalPlaces": 0, - "min": 0 + "decimalPlaces": 0 } }, { @@ -616,14 +594,12 @@ "param1": { "label": "Servo", "default": 1, - "decimalPlaces": 0, - "min": 0 + "decimalPlaces": 0 }, "param2": { "label": "PWM", "default": 1500, - "decimalPlaces": 0, - "min": 0 + "decimalPlaces": 0 } }, { @@ -634,59 +610,24 @@ "param1": { "label": "Servo", "default": 1, - "decimalPlaces": 0, - "min": 0 + "decimalPlaces": 0 }, "param2": { "label": "PWM", "default": 1000, - "decimalPlaces": 0, - "min": 0 + "decimalPlaces": 0 }, "param3": { "label": "Cycles", "default": 1, "units": "count", - "decimalPlaces": 0, - "min": 1 + "decimalPlaces": 0 }, "param4": { "label": "Time", "default": 10, "units": "secs", - "decimalPlaces": 0, - "min": 0 - } - }, - { - "id": 187, - "rawName": "MAV_CMD_DO_SET_ACTUATOR", - "friendlyName": "Set actuator", - "description": "Set actuator to specified output value (range [-1, 1]).", - "friendlyEdit": true, - "param1": { - "label": "Actuator 1", - "default": null, - "nanUnchanged": true, - "decimalPlaces": 2 - }, - "param2": { - "label": "Actuator 2", - "default": null, - "nanUnchanged": true, - "decimalPlaces": 2 - }, - "param3": { - "label": "Actuator 3", - "default": null, - "nanUnchanged": true, - "decimalPlaces": 2 - }, - "param4": { - "label": "Actuator 4", - "default": null, - "nanUnchanged": true, - "decimalPlaces": 2 + "decimalPlaces": 0 } }, { "id": 185, "rawName": "MAV_CMD_DO_FLIGHTTERMINATION", "friendlyName": "Flight termination" }, @@ -783,14 +724,12 @@ "param2": { "label": "Mission Index", "default": 0, - "decimalPlaces": 0, - "min": 0 + "decimalPlaces": 0 }, "param3": { "label": "ROI Index", "default": 0, - "decimalPlaces": 0, - "min": 0 + "decimalPlaces": 0 } }, { @@ -940,51 +879,6 @@ "enumValues": "0,1,2,3,4" } }, - { - "id": 1000, - "rawName": "MAV_CMD_DO_GIMBAL_MANAGER_PITCHYAW", - "friendlyName": "Gimbal Manager PitchYaw" , - "description": "Control the gimbal during the mission", - "category": "Advanced", - "param1": { - "label": "Pitch", - "default": 0, - "units": "deg", - "decimalPlaces": 2 - }, - "param2": { - "label": "Yaw", - "default": 0, - "units": "deg", - "decimalPlaces": 2 - }, - "param3": { - "label": "Pitch rate", - "default": 0, - "units": "deg/s", - "decimalPlaces": 2 - }, - "param4": { - "label": "Yaw rate", - "default": 0, - "units": "deg/s", - "decimalPlaces": 2 - }, - "param5": { - "label": "Follow yaw", - "default": 0, - "decimalPlaces": 0, - "enumStrings": "Follow yaw, Lock yaw", - "enumValues": "0,16" - }, - "param7": { - "label": "Gimbal", - "default": 0, - "decimalPlaces": 0, - "enumStrings": "Primary,first gimbal,second gimbal", - "enumValues": "0,1,2" - } - }, { "id": 206, "rawName": "MAV_CMD_DO_SET_CAM_TRIGG_DIST", @@ -995,15 +889,13 @@ "label": "Distance", "default": 25, "units": "m", - "decimalPlaces": 2, - "min": 0 + "decimalPlaces": 2 }, "param2": { "label": "Shutter", "default": 0, "units": "msecs", - "decimalPlaces": 0, - "min": -1 + "decimalPlaces": 0 }, "param3": { "label": "Trigger", @@ -1065,8 +957,8 @@ { "id": 211, "rawName": "MAV_CMD_DO_GRIPPER", - "friendlyName": "Gripper Mechanism", - "description": "Control a gripper mechanism.", + "friendlyName": "Gripper", + "description": "Operate EPM gripper.", "specifiesCoordinate": false, "friendlyEdit": true, "category": "Advanced", @@ -1108,8 +1000,7 @@ "label": "Timeout", "default": 0, "units": "secs", - "decimalPlaces": 0, - "min": 0 + "decimalPlaces": 0 }, "param2": { "label": "Min Alt", @@ -1127,8 +1018,7 @@ "label": "H Limit", "default": 25, "units": "m", - "decimalPlaces": 2, - "min": 0 + "decimalPlaces": 2 } }, { "id": 241, "rawName": "MAV_CMD_PREFLIGHT_CALIBRATION", "friendlyName": "Calibration" }, @@ -1169,14 +1059,12 @@ "label": "Interval", "default": 0, "units": "secs", - "decimalPlaces": 0, - "min": 0 + "decimalPlaces": 0 }, "param3": { "label": "Photo count", "default": 1, - "decimalPlaces": 0, - "min": 0 + "decimalPlaces": 0 } }, { @@ -1198,8 +1086,7 @@ "label": "Status Frequency", "default": 0.2, "units": "Hz", - "decimalPlaces": 2, - "min": 0 + "decimalPlaces": 2 } }, { diff --git a/src/MissionManager/MissionCommandTreeTest.cc b/src/MissionManager/MissionCommandTreeTest.cc index 8ebeb5f..80bb378 100644 --- a/src/MissionManager/MissionCommandTreeTest.cc +++ b/src/MissionManager/MissionCommandTreeTest.cc @@ -203,12 +203,12 @@ void MissionCommandTreeTest::testAllTrees(void) QList vehicleList; firmwareList << MAV_AUTOPILOT_GENERIC << MAV_AUTOPILOT_PX4 << MAV_AUTOPILOT_ARDUPILOTMEGA; - vehicleList << MAV_TYPE_GENERIC << MAV_TYPE_QUADROTOR << MAV_TYPE_FIXED_WING << MAV_TYPE_GROUND_ROVER << MAV_TYPE_SUBMARINE << MAV_TYPE_VTOL_TAILSITTER_QUADROTOR; + vehicleList << MAV_TYPE_GENERIC << MAV_TYPE_QUADROTOR << MAV_TYPE_FIXED_WING << MAV_TYPE_GROUND_ROVER << MAV_TYPE_SUBMARINE << MAV_TYPE_VTOL_QUADROTOR; // This will cause all of the variants of collapsed trees to be built for(MAV_AUTOPILOT firmwareType: firmwareList) { for (MAV_TYPE vehicleType: vehicleList) { - if (firmwareType == MAV_AUTOPILOT_ARDUPILOTMEGA && vehicleType == MAV_TYPE_VTOL_TAILSITTER_QUADROTOR) { + if (firmwareType == MAV_AUTOPILOT_ARDUPILOTMEGA && vehicleType == MAV_TYPE_VTOL_QUADROTOR) { // VTOL in ArduPilot shows up as plane so we can test this pair continue; } diff --git a/src/MissionManager/MissionCommandUIInfo.cc b/src/MissionManager/MissionCommandUIInfo.cc index 3f1083b..391b822 100644 --- a/src/MissionManager/MissionCommandUIInfo.cc +++ b/src/MissionManager/MissionCommandUIInfo.cc @@ -24,8 +24,6 @@ const char* MissionCommandUIInfo::_friendlyNameJsonKey = "friendlyName" const char* MissionCommandUIInfo::_idJsonKey = "id"; const char* MissionCommandUIInfo::_labelJsonKey = "label"; const char* MissionCommandUIInfo::_mavCmdInfoJsonKey = "mavCmdInfo"; -const char* MissionCommandUIInfo::_maxJsonKey = "max"; -const char* MissionCommandUIInfo::_minJsonKey = "min"; const char* MissionCommandUIInfo::_param1JsonKey = "param1"; const char* MissionCommandUIInfo::_param2JsonKey = "param2"; const char* MissionCommandUIInfo::_param3JsonKey = "param3"; @@ -48,8 +46,6 @@ const char* MissionCommandUIInfo::_advancedCategory = "Advanced"; MissionCmdParamInfo::MissionCmdParamInfo(QObject* parent) : QObject(parent) - , _min (FactMetaData::minForType(FactMetaData::valueTypeDouble).toDouble()) - , _max (FactMetaData::maxForType(FactMetaData::valueTypeDouble).toDouble()) { } @@ -70,8 +66,6 @@ const MissionCmdParamInfo& MissionCmdParamInfo::operator=(const MissionCmdParamI _param = other._param; _units = other._units; _nanUnchanged = other._nanUnchanged; - _min = other._min; - _max = other._max; return *this; } @@ -376,9 +370,7 @@ bool MissionCommandUIInfo::loadJsonInfo(const QJsonObject& jsonObject, bool requ QJsonObject paramObject = jsonObject.value(paramKey).toObject(); QStringList allParamKeys; - allParamKeys << _defaultJsonKey << _decimalPlacesJsonKey << _enumStringsJsonKey << _enumValuesJsonKey - << _labelJsonKey << _unitsJsonKey << _nanUnchangedJsonKey - << _minJsonKey << _maxJsonKey; + allParamKeys << _defaultJsonKey << _decimalPlacesJsonKey << _enumStringsJsonKey << _enumValuesJsonKey << _labelJsonKey << _unitsJsonKey << _nanUnchangedJsonKey; // Look for unknown keys in param object for (const QString& key: paramObject.keys()) { @@ -413,14 +405,6 @@ bool MissionCommandUIInfo::loadJsonInfo(const QJsonObject& jsonObject, bool requ paramInfo->_nanUnchanged = paramObject.value(_nanUnchangedJsonKey).toBool(false); paramInfo->_enumStrings = paramObject.value(_enumStringsJsonKey).toString().split(",", Qt::SkipEmptyParts); - // The min and max values are defaulted correctly already, so only set them if a value is present in the JSON. - if (paramObject.value(_minJsonKey).isDouble()) { - paramInfo->_min = paramObject.value(_minJsonKey).toDouble(); - } - if (paramObject.value(_maxJsonKey).isDouble()) { - paramInfo->_max = paramObject.value(_maxJsonKey).toDouble(); - } - if (paramObject.contains(_defaultJsonKey)) { if (paramInfo->_nanUnchanged) { paramInfo->_defaultValue = JsonHelper::possibleNaNJsonValue(paramObject[_defaultJsonKey]); @@ -434,7 +418,6 @@ bool MissionCommandUIInfo::loadJsonInfo(const QJsonObject& jsonObject, bool requ } else { paramInfo->_defaultValue = paramInfo->_nanUnchanged ? std::numeric_limits::quiet_NaN() : 0; } - QStringList enumValues = paramObject.value(_enumValuesJsonKey).toString().split(",", Qt::SkipEmptyParts); for (const QString &enumValue: enumValues) { bool convertOk; @@ -462,9 +445,7 @@ bool MissionCommandUIInfo::loadJsonInfo(const QJsonObject& jsonObject, bool requ << paramInfo->_units << paramInfo->_enumStrings << paramInfo->_enumValues - << paramInfo->_nanUnchanged - << paramInfo->_min - << paramInfo->_max; + << paramInfo->_nanUnchanged; _paramInfoMap[i] = paramInfo; } diff --git a/src/MissionManager/MissionCommandUIInfo.h b/src/MissionManager/MissionCommandUIInfo.h index 0a09d2f..ac052e0 100644 --- a/src/MissionManager/MissionCommandUIInfo.h +++ b/src/MissionManager/MissionCommandUIInfo.h @@ -55,8 +55,6 @@ public: Q_PROPERTY(int param READ param CONSTANT) Q_PROPERTY(QString units READ units CONSTANT) Q_PROPERTY(bool nanUnchanged READ nanUnchanged CONSTANT) - Q_PROPERTY(double min READ min CONSTANT) - Q_PROPERTY(double max READ max CONSTANT) int decimalPlaces (void) const { return _decimalPlaces; } double defaultValue (void) const { return _defaultValue; } @@ -66,8 +64,6 @@ public: int param (void) const { return _param; } QString units (void) const { return _units; } bool nanUnchanged (void) const { return _nanUnchanged; } - double min (void) const { return _min; } - double max (void) const { return _max; } private: int _decimalPlaces; @@ -78,8 +74,6 @@ private: int _param; QString _units; bool _nanUnchanged; - double _min; - double _max; friend class MissionCommandTree; friend class MissionCommandUIInfo; @@ -191,8 +185,6 @@ private: static const char* _idJsonKey; static const char* _labelJsonKey; static const char* _mavCmdInfoJsonKey; - static const char* _maxJsonKey; - static const char* _minJsonKey; static const char* _param1JsonKey; static const char* _param2JsonKey; static const char* _param3JsonKey; diff --git a/src/MissionManager/MissionController.cc b/src/MissionManager/MissionController.cc index 4f482c0..cac624d 100644 --- a/src/MissionManager/MissionController.cc +++ b/src/MissionManager/MissionController.cc @@ -1269,6 +1269,7 @@ void MissionController::_recalcFlightPathSegments(void) bool signalSplitSegmentChanged = false; qCDebug(MissionControllerLog) << "_recalcFlightPathSegments homePositionValid" << homePositionValid; + qDebug() << "_recalcFlightPathSegments homePositionValid" << homePositionValid; FlightPathSegmentHashTable oldSegmentTable = _flightPathSegmentHashTable; @@ -1576,7 +1577,6 @@ void MissionController::_recalcMissionFlightStatus() case MAV_CMD_NAV_ROI: case MAV_CMD_DO_SET_ROI_LOCATION: case MAV_CMD_DO_SET_ROI_WPNEXT_OFFSET: - case MAV_CMD_DO_GIMBAL_MANAGER_PITCHYAW: _missionFlightStatus.gimbalYaw = qQNaN(); _missionFlightStatus.gimbalPitch = qQNaN(); break; diff --git a/src/MissionManager/PlanMasterController.cc b/src/MissionManager/PlanMasterController.cc index 4843286..f40cd9d 100644 --- a/src/MissionManager/PlanMasterController.cc +++ b/src/MissionManager/PlanMasterController.cc @@ -20,6 +20,9 @@ #include "StructureScanPlanCreator.h" #include "CorridorScanPlanCreator.h" #include "BlankPlanCreator.h" +#if defined(QGC_AIRMAP_ENABLED) +#include "AirspaceFlightPlanProvider.h" +#endif #include #include @@ -93,6 +96,14 @@ void PlanMasterController::start(void) connect(_multiVehicleMgr, &MultiVehicleManager::activeVehicleChanged, this, &PlanMasterController::_activeVehicleChanged); _updatePlanCreatorsList(); + +#if defined(QGC_AIRMAP_ENABLED) + //-- This assumes there is one single instance of PlanMasterController in edit mode. + if(!_flyView) { + // Wait for signal confirming AirMap client connection before starting flight planning + connect(qgcApp()->toolbox()->airspaceManager(), &AirspaceManager::connectStatusChanged, this, &PlanMasterController::_startFlightPlanning); + } +#endif } void PlanMasterController::startStaticActiveVehicle(Vehicle* vehicle, bool deleteWhenSendCompleted) @@ -305,6 +316,15 @@ void PlanMasterController::_sendRallyPointsComplete(void) } } +#if defined(QGC_AIRMAP_ENABLED) +void PlanMasterController::_startFlightPlanning(void) { + if (qgcApp()->toolbox()->airspaceManager()->connected()) { + qCDebug(PlanMasterControllerLog) << "PlanMasterController::_startFlightPlanning client connected, start flight planning"; + qgcApp()->toolbox()->airspaceManager()->flightPlan()->startFlightPlanning(this); + } +} +#endif + void PlanMasterController::sendToVehicle(void) { WeakLinkInterfacePtr weakLink = _managerVehicle->vehicleLinkManager()->primaryLink(); diff --git a/src/MissionManager/PlanMasterController.h b/src/MissionManager/PlanMasterController.h index e02e5d7..e24e6f7 100644 --- a/src/MissionManager/PlanMasterController.h +++ b/src/MissionManager/PlanMasterController.h @@ -129,6 +129,9 @@ private slots: void _sendGeoFenceComplete (void); void _sendRallyPointsComplete (void); void _updatePlanCreatorsList (void); +#if defined(QGC_AIRMAP_ENABLED) + void _startFlightPlanning (void); +#endif private: void _commonInit (void); diff --git a/src/MissionManager/QGCMapPolygonVisuals.qml b/src/MissionManager/QGCMapPolygonVisuals.qml index 95e4dd7..a19471a 100644 --- a/src/MissionManager/QGCMapPolygonVisuals.qml +++ b/src/MissionManager/QGCMapPolygonVisuals.qml @@ -266,13 +266,13 @@ Item { QGCMenuItem { text: qsTr("Edit position..." ) visible: _circleMode - onTriggered: editCenterPositionDialog.createObject(mainWindow).open() + onTriggered: mainWindow.showComponentDialog(editCenterPositionDialog, qsTr("Edit Center Position"), mainWindow.showDialogDefaultWidth, StandardButton.Close) } QGCMenuItem { text: qsTr("Edit position..." ) visible: !_circleMode && menu._editingVertexIndex >= 0 - onTriggered: editVertexPositionDialog.createObject(mainWindow).open() + onTriggered: mainWindow.showComponentDialog(editVertexPositionDialog, qsTr("Edit Vertex Position"), mainWindow.showDialogDefaultWidth, StandardButton.Close) } } @@ -458,7 +458,6 @@ Item { id: editCenterPositionDialog EditPositionDialog { - title: qsTr("Edit Center Position") coordinate: mapPolygon.center onCoordinateChanged: { // Prevent spamming signals on vertex changes by setting centerDrag = true when changing center position. @@ -474,8 +473,7 @@ Item { id: editVertexPositionDialog EditPositionDialog { - title: qsTr("Edit Vertex Position") - coordinate: mapPolygon.vertexCoordinate(menu._editingVertexIndex) + coordinate: mapPolygon.vertexCoordinate(menu._editingVertexIndex) onCoordinateChanged: { mapPolygon.adjustVertex(menu._editingVertexIndex, coordinate) mapPolygon.verifyClockwiseWinding() diff --git a/src/MissionManager/QGCMapPolylineVisuals.qml b/src/MissionManager/QGCMapPolylineVisuals.qml index deb5829..46c43b5 100644 --- a/src/MissionManager/QGCMapPolylineVisuals.qml +++ b/src/MissionManager/QGCMapPolylineVisuals.qml @@ -153,7 +153,7 @@ Item { QGCMenuItem { text: qsTr("Edit position..." ) - onTriggered: editPositionDialog.createObject(mainWindow, { coordinate: mapPolyline.path[menu._removeVertexIndex] }).open() + onTriggered: mainWindow.showComponentDialog(editPositionDialog, qsTr("Edit Position"), mainWindow.showDialogDefaultWidth, StandardButton.Cancel) } } @@ -161,7 +161,8 @@ Item { id: editPositionDialog EditPositionDialog { - onCoordinateChanged: mapPolyline.adjustVertex(menu._removeVertexIndex,coordinate) + Component.onCompleted: coordinate = mapPolyline.path[menu._removeVertexIndex] + onCoordinateChanged: mapPolyline.adjustVertex(menu._removeVertexIndex,coordinate) } } diff --git a/src/MissionManager/SimpleMissionItem.cc b/src/MissionManager/SimpleMissionItem.cc index eda4f34..17d8b1f 100644 --- a/src/MissionManager/SimpleMissionItem.cc +++ b/src/MissionManager/SimpleMissionItem.cc @@ -480,9 +480,6 @@ void SimpleMissionItem::_rebuildTextFieldFacts(void) paramFact->_setName(paramInfo->label()); paramMetaData->setDecimalPlaces(paramInfo->decimalPlaces()); paramMetaData->setRawUnits(paramInfo->units()); - paramMetaData->setRawDefaultValue(paramInfo->defaultValue()); - paramMetaData->setRawMin(paramInfo->min()); - paramMetaData->setRawMax(paramInfo->max()); paramFact->setMetaData(paramMetaData); _textFieldFacts.append(paramFact); } @@ -531,9 +528,6 @@ void SimpleMissionItem::_rebuildNaNFacts(void) paramFact->_setName(paramInfo->label()); paramMetaData->setDecimalPlaces(paramInfo->decimalPlaces()); paramMetaData->setRawUnits(paramInfo->units()); - paramMetaData->setRawDefaultValue(paramInfo->defaultValue()); - paramMetaData->setRawMin(paramInfo->min()); - paramMetaData->setRawMax(paramInfo->max()); paramFact->setMetaData(paramMetaData); _nanFacts.append(paramFact); } @@ -603,9 +597,6 @@ void SimpleMissionItem::_rebuildComboBoxFacts(void) paramMetaData->setDecimalPlaces(paramInfo->decimalPlaces()); paramMetaData->setEnumInfo(paramInfo->enumStrings(), paramInfo->enumValues()); paramMetaData->setRawUnits(paramInfo->units()); - paramMetaData->setRawDefaultValue(paramInfo->defaultValue()); - paramMetaData->setRawMin(paramInfo->min()); - paramMetaData->setRawMax(paramInfo->max()); paramFact->setMetaData(paramMetaData); _comboboxFacts.append(paramFact); } diff --git a/src/MissionManager/TransectStyleComplexItem.cc b/src/MissionManager/TransectStyleComplexItem.cc index b4d4bfd..af72bd5 100644 --- a/src/MissionManager/TransectStyleComplexItem.cc +++ b/src/MissionManager/TransectStyleComplexItem.cc @@ -422,14 +422,12 @@ void TransectStyleComplexItem::_rebuildTransects(void) return; case QGroundControlQmlGlobal::AltitudeModeRelative: case QGroundControlQmlGlobal::AltitudeModeAbsolute: - case QGroundControlQmlGlobal::AltitudeModeTerrainFrame: - // Terrain height not needed to calculate path, as TerrainFrame specifies a fixed altitude over terrain, doesn't need to know the actual terrain height - // so vehicle is responsible for having or not this altitude calculation, so we can build the flight path right away. + // Not following terrain so we can build the flight path now _buildFlightPathCoordInfoFromTransects(); break; case QGroundControlQmlGlobal::AltitudeModeCalcAboveTerrain: - // Query the terrain data. Once available flight path will be calculated, as on this mode QGC actually calculates the individual altitude for each waypoint - // having into account terrain data. + case QGroundControlQmlGlobal::AltitudeModeTerrainFrame: + // Query the terrain data. Once available flight path will be calculated _queryTransectsPathHeightInfo(); break; } diff --git a/src/PlanView/MissionItemEditor.qml b/src/PlanView/MissionItemEditor.qml index 00e1a54..e04210d 100644 --- a/src/PlanView/MissionItemEditor.qml +++ b/src/PlanView/MissionItemEditor.qml @@ -71,8 +71,8 @@ Rectangle { id: editPositionDialog EditPositionDialog { - coordinate: missionItem.isSurveyItem ? missionItem.centerCoordinate : missionItem.coordinate - onCoordinateChanged: missionItem.isSurveyItem ? missionItem.centerCoordinate = coordinate : missionItem.coordinate = coordinate + coordinate: missionItem.isSurveyItem ? missionItem.centerCoordinate : missionItem.coordinate + onCoordinateChanged: missionItem.isSurveyItem ? missionItem.centerCoordinate = coordinate : missionItem.coordinate = coordinate } } @@ -152,7 +152,7 @@ Rectangle { QGCMouseArea { fillItem: parent - onClicked: commandDialog.createObject(mainWindow).open() + onClicked: mainWindow.showComponentDialog(commandDialog, qsTr("Select Mission Command"), mainWindow.showDialogDefaultWidth, StandardButton.Cancel) } Component { @@ -220,7 +220,7 @@ Rectangle { QGCMenuItem { text: qsTr("Edit position...") visible: missionItem.specifiesCoordinate - onTriggered: editPositionDialog.createObject(mainWindow).open() + onTriggered: mainWindow.showComponentDialog(editPositionDialog, qsTr("Edit Position"), mainWindow.showDialogDefaultWidth, StandardButton.Close) } QGCMenuSeparator { diff --git a/src/PlanView/MissionSettingsEditor.qml b/src/PlanView/MissionSettingsEditor.qml index 5e8ae24..3535a0d 100644 --- a/src/PlanView/MissionSettingsEditor.qml +++ b/src/PlanView/MissionSettingsEditor.qml @@ -79,7 +79,7 @@ Rectangle { if (!_controllerVehicle.supportsTerrainFrame) { removeModes.push(QGroundControl.AltitudeModeTerrainFrame) } - altModeDialogComponent.createObject(mainWindow, { rgRemoveModes: removeModes, updateAltModeFn: updateFunction }).open() + mainWindow.showPopupDialogFromComponent(altModeDialogComponent, { rgRemoveModes: removeModes, updateAltModeFn: updateFunction }) } RowLayout { diff --git a/src/PlanView/PlanToolBarIndicators.qml b/src/PlanView/PlanToolBarIndicators.qml index 62224d5..ab07b93 100644 --- a/src/PlanView/PlanToolBarIndicators.qml +++ b/src/PlanView/PlanToolBarIndicators.qml @@ -158,7 +158,7 @@ Item { Item { width: 1; height: 1 } - QGCLabel { text: qsTr("Dist prev WP:"); font.pointSize: _dataFontSize; } + QGCLabel { text: qsTr("Distance:"); font.pointSize: _dataFontSize; } QGCLabel { text: _distanceText font.pointSize: _dataFontSize diff --git a/src/PlanView/PlanView.qml b/src/PlanView/PlanView.qml index 98ad6ff..8bc4920 100644 --- a/src/PlanView/PlanView.qml +++ b/src/PlanView/PlanView.qml @@ -24,6 +24,8 @@ import QGroundControl.FactControls 1.0 import QGroundControl.Palette 1.0 import QGroundControl.Controllers 1.0 import QGroundControl.ShapeFileHelper 1.0 +import QGroundControl.Airspace 1.0 +import QGroundControl.Airmap 1.0 Item { id: _root @@ -38,7 +40,7 @@ Item { readonly property var _defaultVehicleCoordinate: QtPositioning.coordinate(37.803784, -122.462276) readonly property bool _waypointsOnlyMode: QGroundControl.corePlugin.options.missionWaypointsOnly - property var _planMasterController: planMasterController + property bool _airspaceEnabled: QGroundControl.airmapSupported ? (QGroundControl.settingsManager.airMapSettings.enableAirMap.rawValue && QGroundControl.airspaceManager.connected): false property var _missionController: _planMasterController.missionController property var _geoFenceController: _planMasterController.geoFenceController property var _rallyPointController: _planMasterController.rallyPointController @@ -67,6 +69,16 @@ Item { return coordinate } + function updateAirspace(reset) { + if(_airspaceEnabled) { + var coordinateNW = editorMap.toCoordinate(Qt.point(0,0), false /* clipToViewPort */) + var coordinateSE = editorMap.toCoordinate(Qt.point(width,height), false /* clipToViewPort */) + if(coordinateNW.isValid && coordinateSE.isValid) { + QGroundControl.airspaceManager.setROI(coordinateNW, coordinateSE, true /*planView*/, reset) + } + } + } + property bool _firstMissionLoadComplete: false property bool _firstFenceLoadComplete: false property bool _firstRallyLoadComplete: false @@ -79,6 +91,19 @@ Item { planMasterController: _planMasterController } + on_AirspaceEnabledChanged: { + if(QGroundControl.airmapSupported) { + if(_airspaceEnabled) { + planControlColapsed = QGroundControl.airspaceManager.airspaceVisible + updateAirspace(true) + } else { + planControlColapsed = false + } + } else { + planControlColapsed = false + } + } + onVisibleChanged: { if(visible) { editorMap.zoomLevel = QGroundControl.flightMapZoom @@ -93,10 +118,18 @@ Item { target: _appSettings ? _appSettings.defaultMissionItemAltitude : null function onRawValueChanged() { if (_visualItems.count > 1) { - mainWindow.showMessageDialog(qsTr("Apply new altitude"), - qsTr("You have changed the default altitude for mission items. Would you like to apply that altitude to all the items in the current mission?"), - StandardButton.Yes | StandardButton.No, - function() { _missionController.applyDefaultMissionAltitude() }) + mainWindow.showComponentDialog(applyNewAltitude, qsTr("Apply new altitude"), mainWindow.showDialogDefaultWidth, StandardButton.Yes | StandardButton.No) + } + } + } + + Component { + id: applyNewAltitude + QGCViewMessage { + message: qsTr("You have changed the default altitude for mission items. Would you like to apply that altitude to all the items in the current mission?") + function accept() { + hideDialog() + _missionController.applyDefaultMissionAltitude() } } } @@ -126,7 +159,7 @@ Item { onClicked: { _planMasterController.showPlanFromManagerVehicle() _promptForPlanUsageShowing = false - close(); + hideDialog(); } } @@ -140,15 +173,45 @@ Item { _planMasterController.dirty = true } _promptForPlanUsageShowing = false - close() + hideDialog() } } } } } + + Component { + id: firmwareOrVehicleMismatchUploadDialogComponent + QGCViewMessage { + message: qsTr("This Plan was created for a different firmware or vehicle type than the firmware/vehicle type of vehicle you are uploading to. " + + "This can lead to errors or incorrect behavior. " + + "It is recommended to recreate the Plan for the correct firmware/vehicle type.\n\n" + + "Click 'Ok' to upload the Plan anyway.") + + function accept() { + _planMasterController.sendToVehicle() + hideDialog() + } + } + } + + Connections { + target: QGroundControl.airspaceManager + function onAirspaceVisibleChanged() { + planControlColapsed = QGroundControl.airspaceManager.airspaceVisible + } + } + + Component { + id: noItemForKML + QGCViewMessage { + message: qsTr("You need at least one item to create a KML.") + } + } + PlanMasterController { - id: planMasterController + id: _planMasterController flyView: false Component.onCompleted: { @@ -160,7 +223,7 @@ Item { onPromptForPlanUsageOnVehicleChange: { if (!_promptForPlanUsageShowing) { _promptForPlanUsageShowing = true - promptForPlanUsageOnVehicleChangePopupComponent.createObject(mainWindow).open() + mainWindow.showPopupDialogFromComponent(promptForPlanUsageOnVehicleChangePopupComponent) } } @@ -197,13 +260,7 @@ Item { mainWindow.showMessageDialog(qsTr("Send To Vehicle"), qsTr("Current mission must be paused prior to uploading a new Plan")) break case MissionController.SendToVehiclePreCheckStateFirwmareVehicleMismatch: - mainWindow.showMessageDialog(qsTr("Plan Upload"), - qsTr("This Plan was created for a different firmware or vehicle type than the firmware/vehicle type of vehicle you are uploading to. " + - "This can lead to errors or incorrect behavior. " + - "It is recommended to recreate the Plan for the correct firmware/vehicle type.\n\n" + - "Click 'Ok' to upload the Plan anyway."), - StandardButton.Ok | StandardButton.Cancel, - function() { _planMasterController.sendToVehicle() }) + mainWindow.showComponentDialog(firmwareOrVehicleMismatchUploadDialogComponent, qsTr("Plan Upload"), mainWindow.showDialogDefaultWidth, StandardButton.Ok | StandardButton.Cancel) break } } @@ -296,6 +353,8 @@ Item { } } + property int _moveDialogMissionItemIndex + QGCFileDialog { id: fileDialog folder: _appSettings ? _appSettings.missionSavePath : "" @@ -319,6 +378,38 @@ Item { } } + Component { + id: moveDialog + QGCViewDialog { + function accept() { + var toIndex = toCombo.currentIndex + if (toIndex === 0) { + toIndex = 1 + } + _missionController.moveMissionItem(_moveDialogMissionItemIndex, toIndex) + hideDialog() + } + Column { + anchors.left: parent.left + anchors.right: parent.right + spacing: ScreenTools.defaultFontPixelHeight + + QGCLabel { + anchors.left: parent.left + anchors.right: parent.right + wrapMode: Text.WordWrap + text: qsTr("Move the selected mission item to the be after following mission item:") + } + + QGCComboBox { + id: toCombo + model: _visualItems.count + currentIndex: _moveDialogMissionItemIndex + } + } + } + } + Item { id: panel anchors.fill: parent @@ -348,9 +439,11 @@ Item { onZoomLevelChanged: { QGroundControl.flightMapZoom = zoomLevel + updateAirspace(false) } onCenterChanged: { QGroundControl.flightMapPosition = center + updateAirspace(false) } MouseArea { @@ -490,6 +583,28 @@ Item { planView: true opacity: _editingLayer != _layerRallyPoints ? editorMap._nonInteractiveOpacity : 1 } + + // Airspace overlap support + MapItemView { + model: _airspaceEnabled && QGroundControl.airspaceManager.airspaceVisible ? QGroundControl.airspaceManager.airspaces.circles : [] + delegate: MapCircle { + center: object.center + radius: object.radius + color: object.color + border.color: object.lineColor + border.width: object.lineWidth + } + } + + MapItemView { + model: _airspaceEnabled && QGroundControl.airspaceManager.airspaceVisible ? QGroundControl.airspaceManager.airspaces.polygons : [] + delegate: MapPolygon { + path: object.polygon + color: object.color + border.color: object.lineColor + border.width: object.lineWidth + } + } } //----------------------------------------------------------- @@ -636,11 +751,67 @@ Item { anchors.right: parent.right anchors.top: parent.top //------------------------------------------------------- + // Airmap Airspace Control + AirspaceControl { + id: airspaceControl + width: parent.width + visible: _airspaceEnabled + planView: true + showColapse: true + } + //------------------------------------------------------- + // Mission Controls (Colapsed) + Rectangle { + width: parent.width + height: planControlColapsed ? colapsedRow.height + ScreenTools.defaultFontPixelHeight : 0 + color: qgcPal.missionItemEditor + radius: _radius + visible: planControlColapsed && _airspaceEnabled + Row { + id: colapsedRow + spacing: ScreenTools.defaultFontPixelWidth + anchors.left: parent.left + anchors.leftMargin: ScreenTools.defaultFontPixelWidth + anchors.verticalCenter: parent.verticalCenter + QGCColoredImage { + width: height + height: ScreenTools.defaultFontPixelWidth * 2.5 + sourceSize.height: height + source: "qrc:/res/waypoint.svg" + color: qgcPal.text + anchors.verticalCenter: parent.verticalCenter + } + QGCLabel { + text: qsTr("Plan") + color: qgcPal.text + anchors.verticalCenter: parent.verticalCenter + } + } + QGCColoredImage { + width: height + height: ScreenTools.defaultFontPixelWidth * 2.5 + sourceSize.height: height + source: QGroundControl.airmapSupported ? "qrc:/airmap/expand.svg" : "" + color: "white" + visible: QGroundControl.airmapSupported + anchors.right: parent.right + anchors.rightMargin: ScreenTools.defaultFontPixelWidth + anchors.verticalCenter: parent.verticalCenter + } + MouseArea { + anchors.fill: parent + enabled: QGroundControl.airmapSupported + onClicked: { + QGroundControl.airspaceManager.airspaceVisible = false + } + } + } + //------------------------------------------------------- // Mission Controls (Expanded) QGCTabBar { id: layerTabBar width: parent.width - visible: QGroundControl.corePlugin.options.enablePlanViewSelector + visible: (!planControlColapsed || !_airspaceEnabled) && QGroundControl.corePlugin.options.enablePlanViewSelector Component.onCompleted: currentIndex = 0 QGCTabButton { text: qsTr("Mission") @@ -682,7 +853,7 @@ Item { map: editorMap masterController: _planMasterController missionItem: object - width: missionItemEditorListView.width + width: parent.width readOnly: false onClicked: _missionController.setCurrentPlanViewSeqNum(object.sequenceNumber, false) onRemove: { @@ -730,19 +901,6 @@ Item { } } - QGCLabel { - // Elevation provider notice on top of terrain plot - readonly property string _licenseString: QGroundControl.elevationProviderNotice - - id: licenseLabel - visible: terrainStatus.visible && _licenseString !== "" - anchors.bottom: terrainStatus.top - anchors.horizontalCenter: terrainStatus.horizontalCenter - anchors.bottomMargin: ScreenTools.defaultFontPixelWidth * 0.5 - font.pointSize: ScreenTools.smallFontPointSize - text: qsTr("Powered by %1").arg(_licenseString) - } - TerrainStatus { id: terrainStatus anchors.margins: _toolsMargin @@ -777,33 +935,53 @@ Item { } } - function showLoadFromFileOverwritePrompt(title) { - mainWindow.showMessageDialog(title, - qsTr("You have unsaved/unsent changes. Loading from a file will lose these changes. Are you sure you want to load from a file?"), - StandardButton.Yes | StandardButton.Cancel, - function() { _planMasterController.loadFromSelectedFile() } ) - } - Component { - id: createPlanRemoveAllPromptDialog - - QGCSimpleMessageDialog { - title: qsTr("Create Plan") - text: qsTr("Are you sure you want to remove current plan and create a new plan? ") - buttons: StandardButton.Yes | StandardButton.No - - property var mapCenter - property var planCreator - - onAccepted: planCreator.createPlan(mapCenter) + id: syncLoadFromVehicleOverwrite + QGCViewMessage { + id: syncLoadFromVehicleCheck + message: qsTr("You have unsaved/unsent changes. Loading from the Vehicle will lose these changes. Are you sure you want to load from the Vehicle?") + function accept() { + hideDialog() + _planMasterController.loadFromVehicle() + } } } - function clearButtonClicked() { - mainWindow.showMessageDialog(qsTr("Clear"), - qsTr("Are you sure you want to remove all mission items and clear the mission from the vehicle?"), - StandardButton.Yes | StandardButton.Cancel, - function() { _planMasterController.removeAllFromVehicle(); _missionController.setCurrentPlanViewSeqNum(0, true) }) + Component { + id: syncLoadFromFileOverwrite + QGCViewMessage { + id: syncLoadFromVehicleCheck + message: qsTr("You have unsaved/unsent changes. Loading from a file will lose these changes. Are you sure you want to load from a file?") + function accept() { + hideDialog() + _planMasterController.loadFromSelectedFile() + } + } + } + + property var createPlanRemoveAllPromptDialogMapCenter + property var createPlanRemoveAllPromptDialogPlanCreator + Component { + id: createPlanRemoveAllPromptDialog + QGCViewMessage { + message: qsTr("Are you sure you want to remove current plan and create a new plan? ") + function accept() { + createPlanRemoveAllPromptDialogPlanCreator.createPlan(createPlanRemoveAllPromptDialogMapCenter) + hideDialog() + } + } + } + + Component { + id: clearVehicleMissionDialog + QGCViewMessage { + message: qsTr("Are you sure you want to remove all mission items and clear the mission from the vehicle?") + function accept() { + _planMasterController.removeAllFromVehicle() + _missionController.setCurrentPlanViewSeqNum(0, true) + hideDialog() + } + } } //- ToolStrip DropPanel Components @@ -841,17 +1019,6 @@ Item { } // Column } - function downloadClicked(title) { - if (_planMasterController.dirty) { - mainWindow.showMessageDialog(title, - qsTr("You have unsaved/unsent changes. Loading from the Vehicle will lose these changes. Are you sure you want to load from the Vehicle?"), - StandardButton.Yes | StandardButton.Cancel, - function() { _planMasterController.loadFromVehicle() }) - } else { - _planMasterController.loadFromVehicle() - } - } - Component { id: syncDropPanel @@ -859,7 +1026,7 @@ Item { id: columnHolder spacing: _margin - property string _overwriteText: qsTr("Plan overwrite") + property string _overwriteText: (_editingLayer == _layerMission) ? qsTr("Mission overwrite") : ((_editingLayer == _layerGeoFence) ? qsTr("GeoFence overwrite") : qsTr("Rally Points overwrite")) QGCLabel { id: unsavedChangedLabel @@ -924,7 +1091,9 @@ Item { preventStealing: true onClicked: { if (_planMasterController.containsItems) { - createPlanRemoveAllPromptDialog.createObject(mainWindow, { mapCenter: _mapCenter(), planCreator: object }).open() + createPlanRemoveAllPromptDialogMapCenter = _mapCenter() + createPlanRemoveAllPromptDialogPlanCreator = object + mainWindow.showComponentDialog(createPlanRemoveAllPromptDialog, qsTr("Create Plan"), mainWindow.showDialogDefaultWidth, StandardButton.Yes | StandardButton.No) } else { object.createPlan(_mapCenter()) } @@ -952,6 +1121,17 @@ Item { columnSpacing: ScreenTools.defaultFontPixelWidth visible: storageSection.visible + /*QGCButton { + text: qsTr("New...") + Layout.fillWidth: true + onClicked: { + dropPanel.hide() + if (_planMasterController.containsItems) { + mainWindow.showComponentDialog(removeAllPromptDialog, qsTr("New Plan"), mainWindow.showDialogDefaultWidth, StandardButton.Yes | StandardButton.No) + } + } + }*/ + QGCButton { text: qsTr("Open...") Layout.fillWidth: true @@ -959,7 +1139,7 @@ Item { onClicked: { dropPanel.hide() if (_planMasterController.dirty) { - showLoadFromFileOverwritePrompt(columnHolder._overwriteText) + mainWindow.showComponentDialog(syncLoadFromFileOverwrite, columnHolder._overwriteText, mainWindow.showDialogDefaultWidth, StandardButton.Yes | StandardButton.Cancel) } else { _planMasterController.loadFromSelectedFile() } @@ -998,7 +1178,7 @@ Item { onClicked: { // First point does not count if (_visualItems.count < 2) { - mainWindow.showMessageDialog(qsTr("KML"), qsTr("You need at least one item to create a KML.")) + mainWindow.showComponentDialog(noItemForKML, qsTr("KML"), mainWindow.showDialogDefaultWidth, StandardButton.Cancel) return } dropPanel.hide() @@ -1034,10 +1214,13 @@ Item { Layout.fillWidth: true enabled: !_planMasterController.offline && !_planMasterController.syncInProgress visible: !QGroundControl.corePlugin.options.disableVehicleConnection - onClicked: { dropPanel.hide() - downloadClicked(columnHolder._overwriteText) + if (_planMasterController.dirty) { + mainWindow.showComponentDialog(syncLoadFromVehicleOverwrite, columnHolder._overwriteText, mainWindow.showDialogDefaultWidth, StandardButton.Yes | StandardButton.Cancel) + } else { + _planMasterController.loadFromVehicle() + } } } @@ -1049,7 +1232,7 @@ Item { visible: !QGroundControl.corePlugin.options.disableVehicleConnection onClicked: { dropPanel.hide() - clearButtonClicked() + mainWindow.showComponentDialog(clearVehicleMissionDialog, text, mainWindow.showDialogDefaultWidth, StandardButton.Yes | StandardButton.Cancel) } } } diff --git a/src/PlanView/SimpleItemEditor.qml b/src/PlanView/SimpleItemEditor.qml index 24e711b..9d97067 100644 --- a/src/PlanView/SimpleItemEditor.qml +++ b/src/PlanView/SimpleItemEditor.qml @@ -145,7 +145,7 @@ Rectangle { removeModes.push(QGroundControl.AltitudeModeAbsolute) } removeModes.push(QGroundControl.AltitudeModeMixed) - altModeDialogComponent.createObject(mainWindow, { rgRemoveModes: removeModes, updateAltModeFn: updateFunction }).open() + mainWindow.showPopupDialogFromComponent(altModeDialogComponent, { rgRemoveModes: removeModes, updateAltModeFn: updateFunction }) } } diff --git a/src/PlanView/StructureScanEditor.qml b/src/PlanView/StructureScanEditor.qml index 913a8e6..7d6fa1a 100644 --- a/src/PlanView/StructureScanEditor.qml +++ b/src/PlanView/StructureScanEditor.qml @@ -49,30 +49,51 @@ Rectangle { QGCPalette { id: qgcPal; colorGroupEnabled: true } - ColumnLayout { + Column { id: editorColumn anchors.margins: _margin anchors.top: parent.top anchors.left: parent.left anchors.right: parent.right - QGCLabel { - id: wizardLabel + ColumnLayout { + id: wizardColumn + anchors.left: parent.left + anchors.right: parent.right + spacing: _margin + visible: !missionItem.structurePolygon.isValid || missionItem.wizardMode + + QGCLabel { Layout.fillWidth: true wrapMode: Text.WordWrap - horizontalAlignment: Text.AlignHCenter text: qsTr("Use the Polygon Tools to create the polygon which outlines the structure.") - visible: !missionItem.structurePolygon.isValid || missionItem.wizardMode } - ColumnLayout { - Layout.fillWidth: true + /* + Trial of new "done" model so leaving for now in case it comes back + QGCButton { + text: qsTr("Done With Polygon") + Layout.fillWidth: true + enabled: missionItem.structurePolygon.isValid && !missionItem.structurePolygon.traceMode + onClicked: { + missionItem.wizardMode = false + // Trial of no auto select next item + //editorRoot.selectNextNotReadyItem() + } + } + */ + } + + Column { + anchors.left: parent.left + anchors.right: parent.right spacing: _margin - visible: !wizardLabel.visible + visible: !wizardColumn.visible QGCTabBar { id: tabBar - Layout.fillWidth: true + anchors.left: parent.left + anchors.right: parent.right Component.onCompleted: currentIndex = 0 @@ -80,20 +101,23 @@ Rectangle { QGCTabButton { text: qsTr("Camera") } } - ColumnLayout { - Layout.fillWidth: true + Column { + anchors.left: parent.left + anchors.right: parent.right spacing: _margin visible: tabBar.currentIndex == 0 QGCLabel { - Layout.fillWidth: true + anchors.left: parent.left + anchors.right: parent.right text: qsTr("Note: Polygon respresents structure surface not vehicle flight path.") wrapMode: Text.WordWrap font.pointSize: ScreenTools.smallFontPointSize } QGCLabel { - Layout.fillWidth: true + anchors.left: parent.left + anchors.right: parent.right text: qsTr("WARNING: Photo interval is below minimum interval (%1 secs) supported by camera.").arg(_cameraMinTriggerInterval.toFixed(1)) wrapMode: Text.WordWrap color: qgcPal.warningText @@ -101,7 +125,6 @@ Rectangle { } CameraCalcGrid { - Layout.fillWidth: true cameraCalc: missionItem.cameraCalc vehicleFlightIsFrontal: false distanceToSurfaceLabel: qsTr("Scan Distance") @@ -111,17 +134,20 @@ Rectangle { SectionHeader { id: scanHeader - Layout.fillWidth: true + anchors.left: parent.left + anchors.right: parent.right text: qsTr("Scan") } - ColumnLayout { - Layout.fillWidth: true + Column { + anchors.left: parent.left + anchors.right: parent.right spacing: _margin visible: scanHeader.checked GridLayout { - Layout.fillWidth: true + anchors.left: parent.left + anchors.right: parent.right columnSpacing: _margin rowSpacing: _margin columns: 2 @@ -180,7 +206,8 @@ Rectangle { SectionHeader { id: statsHeader - Layout.fillWidth: true + anchors.left: parent.left + anchors.right: parent.right text: qsTr("Statistics") } @@ -212,13 +239,13 @@ Rectangle { } } // Grid Column - ColumnLayout { - Layout.fillWidth: true + Column { + anchors.left: parent.left + anchors.right: parent.right spacing: _margin visible: tabBar.currentIndex == 1 CameraCalcCamera { - Layout.fillWidth: true cameraCalc: missionItem.cameraCalc } } diff --git a/src/PlanView/TerrainStatus.qml b/src/PlanView/TerrainStatus.qml index fe3418d..51f1109 100644 --- a/src/PlanView/TerrainStatus.qml +++ b/src/PlanView/TerrainStatus.qml @@ -50,6 +50,7 @@ Rectangle { QGCFlickable { id: terrainProfileFlickable + //anchors.margins: _margins anchors.top: parent.top anchors.bottom: parent.bottom anchors.leftMargin: titleLabel.contentHeight diff --git a/src/PlanView/TransectStyleComplexItemEditor.qml b/src/PlanView/TransectStyleComplexItemEditor.qml index acc385d..1361fa9 100644 --- a/src/PlanView/TransectStyleComplexItemEditor.qml +++ b/src/PlanView/TransectStyleComplexItemEditor.qml @@ -184,19 +184,21 @@ Rectangle { Layout.fillWidth: true text: qsTr("Delete Preset") enabled: _missionItem.presetNames.length != 0 - onClicked: deletePresetDialog.createObject(mainWindow, { presetName: presetCombo.textAt(presetCombo.currentIndex) }).open() + onClicked: mainWindow.showPopupDialogFromComponent(deletePresetDialog, { presetName: presetCombo.textAt(presetCombo.currentIndex) }) Component { id: deletePresetDialog - QGCSimpleMessageDialog { + QGCPopupDialog { title: qsTr("Delete Preset") - text: qsTr("Are you sure you want to delete '%1' preset?").arg(presetName) buttons: StandardButton.Yes | StandardButton.No - property string presetName + QGCLabel { text: qsTr("Are you sure you want to delete '%1' preset?").arg(dialogProperties.presetName) } - onAccepted: { _missionItem.deletePreset(presetName) } + function accept() { + _missionItem.deletePreset(dialogProperties.presetName) + hideDialog() + } } } } @@ -208,7 +210,7 @@ Rectangle { Layout.alignment: Qt.AlignCenter Layout.fillWidth: true text: qsTr("Save Settings As New Preset") - onClicked: savePresetDialog.createObject(mainWindow).open() + onClicked: mainWindow.showPopupDialogFromComponent(savePresetDialog) } SectionHeader { @@ -247,11 +249,10 @@ Rectangle { title: qsTr("Save Preset") buttons: StandardButton.Save | StandardButton.Cancel - onAccepted: { + function accept() { if (presetNameField.text != "") { _missionItem.savePreset(presetNameField.text.trim()) - } else { - preventClose = true + hideDialog() } } @@ -280,13 +281,13 @@ Rectangle { function validateText(text) { if (text.trim() === "") { nameError.text = qsTr("Preset name cannot be blank.") - popupDialog.acceptButtonEnabled = false + popupDialog.disableAcceptButton() } else if (text.includes("/")) { nameError.text = qsTr("Preset name cannot include the \"/\" character.") - popupDialog.acceptButtonEnabled = false + popupDialog.disableAcceptButton() } else { nameError.text = "" - popupDialog.acceptButtonEnabled = true + popupDialog.enableAcceptButton() } } } diff --git a/src/PlanView/TransectStyleComplexItemTerrainFollow.qml b/src/PlanView/TransectStyleComplexItemTerrainFollow.qml index 7dde52f..0ed90b9 100644 --- a/src/PlanView/TransectStyleComplexItemTerrainFollow.qml +++ b/src/PlanView/TransectStyleComplexItemTerrainFollow.qml @@ -28,7 +28,7 @@ ColumnLayout { if (!QGroundControl.corePlugin.options.showMissionAbsoluteAltitude || !_missionItem.cameraCalc.isManualCamera) { removeModes.push(QGroundControl.AltitudeModeAbsolute) } - altModeDialogComponent.createObject(mainWindow, { rgRemoveModes: removeModes, updateAltModeFn: updateFunction }).open() + mainWindow.showPopupDialogFromComponent(altModeDialogComponent, { rgRemoveModes: removeModes, updateAltModeFn: updateFunction }) } Component { id: altModeDialogComponent; AltModeDialog { } } diff --git a/src/PositionManager/PositionManager.cpp b/src/PositionManager/PositionManager.cpp index 78fbd8f..7cbf719 100644 --- a/src/PositionManager/PositionManager.cpp +++ b/src/PositionManager/PositionManager.cpp @@ -153,17 +153,6 @@ void QGCPositionManager::setPositionSource(QGCPositionManager::QGCPositionSource if (_currentSource != nullptr) { _currentSource->stopUpdates(); disconnect(_currentSource); - - // Reset all values so we dont get stuck on old values - _geoPositionInfo = QGeoPositionInfo(); - _gcsPosition = QGeoCoordinate(); - _gcsHeading = qQNaN(); - _gcsPositionHorizontalAccuracy = std::numeric_limits::infinity(); - - emit gcsPositionChanged(_gcsPosition); - emit gcsHeadingChanged(_gcsHeading); - emit positionInfoUpdated(_geoPositionInfo); - emit gcsPositionHorizontalAccuracyChanged(); } if (qgcApp()->runningUnitTests()) { @@ -181,7 +170,7 @@ void QGCPositionManager::setPositionSource(QGCPositionManager::QGCPositionSource _currentSource = _nmeaSource; break; case QGCPositionManager::InternalGPS: - default: + default: _currentSource = _defaultSource; break; } diff --git a/src/QGCApplication.cc b/src/QGCApplication.cc index 77c8b83..4e8088b 100644 --- a/src/QGCApplication.cc +++ b/src/QGCApplication.cc @@ -102,9 +102,6 @@ #include "QGCMAVLink.h" #include "VehicleLinkManager.h" #include "Autotune.h" -#include "RemoteIDManager.h" -#include "CustomAction.h" -#include "CustomActionManager.h" #if defined(QGC_ENABLE_PAIRING) #include "PairingManager.h" @@ -466,7 +463,6 @@ void QGCApplication::_initCommon() qmlRegisterUncreatableType (kQGCVehicle, 1, 0, "LinkInterface", kRefOnly); qmlRegisterUncreatableType (kQGCVehicle, 1, 0, "VehicleLinkManager", kRefOnly); qmlRegisterUncreatableType (kQGCVehicle, 1, 0, "Autotune", kRefOnly); - qmlRegisterUncreatableType (kQGCVehicle, 1, 0, "RemoteIDManager", kRefOnly); qmlRegisterUncreatableType (kQGCControllers, 1, 0, "MissionController", kRefOnly); qmlRegisterUncreatableType (kQGCControllers, 1, 0, "GeoFenceController", kRefOnly); @@ -515,8 +511,6 @@ void QGCApplication::_initCommon() qmlRegisterType (kQGCControllers, 1, 0, "SyslinkComponentController"); qmlRegisterType (kQGCControllers, 1, 0, "EditPositionDialogController"); qmlRegisterType (kQGCControllers, 1, 0, "RCToParamDialogController"); - qmlRegisterType (kQGCControllers, 1, 0, "CustomAction"); - qmlRegisterType (kQGCControllers, 1, 0, "CustomActionManager"); qmlRegisterType ("QGroundControl.Controls", 1, 0, "TerrainProfile"); qmlRegisterType ("QGroundControl.Controls", 1, 0, "ToolStripAction"); @@ -755,7 +749,7 @@ void QGCApplication::showAppMessage(const QString& message, const QString& title if (rootQmlObject) { QVariant varReturn; QVariant varMessage = QVariant::fromValue(message); - QMetaObject::invokeMethod(_rootQmlObject(), "_showMessageDialog", Q_RETURN_ARG(QVariant, varReturn), Q_ARG(QVariant, dialogTitle), Q_ARG(QVariant, varMessage)); + QMetaObject::invokeMethod(_rootQmlObject(), "showMessageDialog", Q_RETURN_ARG(QVariant, varReturn), Q_ARG(QVariant, dialogTitle), Q_ARG(QVariant, varMessage)); } else if (runningUnitTests()) { // Unit tests can run without UI qDebug() << "QGCApplication::showAppMessage unittest title:message" << dialogTitle << message; @@ -825,6 +819,7 @@ bool QGCApplication::isInternetAvailable() void QGCApplication::_checkForNewVersion() { +#ifndef __mobile__ if (!_runningUnitTests) { if (_parseVersionText(applicationVersion(), _majorVersion, _minorVersion, _buildVersion)) { QString versionCheckFile = toolbox()->corePlugin()->stableVersionCheckFileUrl(); @@ -835,10 +830,15 @@ void QGCApplication::_checkForNewVersion() } } } +#endif } void QGCApplication::_qgcCurrentStableVersionDownloadComplete(QString /*remoteFile*/, QString localFile, QString errorMsg) { +#ifdef __mobile__ + Q_UNUSED(localFile) + Q_UNUSED(errorMsg) +#else if (errorMsg.isEmpty()) { QFile versionFile(localFile); if (versionFile.open(QIODevice::ReadOnly)) { @@ -861,6 +861,7 @@ void QGCApplication::_qgcCurrentStableVersionDownloadComplete(QString /*remoteFi } sender()->deleteLater(); +#endif } bool QGCApplication::_parseVersionText(const QString& versionString, int& majorVersion, int& minorVersion, int& buildVersion) diff --git a/src/QGCCachedFileDownload.cc b/src/QGCCachedFileDownload.cc deleted file mode 100644 index 2dc1c63..0000000 --- a/src/QGCCachedFileDownload.cc +++ /dev/null @@ -1,71 +0,0 @@ -/**************************************************************************** - * - * (c) 2022 QGROUNDCONTROL PROJECT - * - * QGroundControl is licensed according to the terms in the file - * COPYING.md in the root of the source code directory. - * - ****************************************************************************/ - - -#include "QGCCachedFileDownload.h" - -QGCCachedFileDownload::QGCCachedFileDownload(QObject* parent, const QString& cacheDirectory) - : QObject(parent), _fileDownload(new QGCFileDownload(this)), _diskCache(new QNetworkDiskCache(this)) -{ - _diskCache->setCacheDirectory(cacheDirectory); - _fileDownload->setCache(_diskCache); - - connect(_fileDownload, &QGCFileDownload::downloadProgress, this, &QGCCachedFileDownload::downloadProgress); - connect(_fileDownload, &QGCFileDownload::downloadComplete, this, &QGCCachedFileDownload::onDownloadCompleted); -} - -bool QGCCachedFileDownload::download(const QString& url, int maxCacheAgeSec) -{ - _downloadFromNetwork = false; - // Check cache - QNetworkCacheMetaData metadata = _diskCache->metaData(url); - if (metadata.isValid() && metadata.attributes().contains(QNetworkRequest::Attribute::User)) { - - // We want the following behavior: - // - Use the cached file if not older than maxCacheAgeSec - // - Otherwise try to download the file, but still use the cached file if there's no connection - - QDateTime creationTime = metadata.attributes().find(QNetworkRequest::Attribute::User)->toDateTime(); - bool expired = creationTime.addSecs(maxCacheAgeSec) < QDateTime::currentDateTime(); - if (expired) { - // Force network download, as Qt would still use the cache otherwise (w/o checking the remote) - auto attributes = QVector{qMakePair(QNetworkRequest::CacheLoadControlAttribute, QVariant{QNetworkRequest::AlwaysNetwork})}; - _downloadFromNetwork = true; - return _fileDownload->download(url, attributes); - } - - auto attributes = QVector{qMakePair(QNetworkRequest::CacheLoadControlAttribute, QVariant{QNetworkRequest::PreferCache})}; - return _fileDownload->download(url, attributes); - - } else { - return _fileDownload->download(url); - } -} - -void QGCCachedFileDownload::onDownloadCompleted(QString remoteFile, QString localFile, QString errorMsg) -{ - // Set cache creation time if not set already (the Qt docs mention there's a creation time, but I could not find any API) - QNetworkCacheMetaData metadata = _diskCache->metaData(remoteFile); - if (metadata.isValid() && !metadata.attributes().contains(QNetworkRequest::Attribute::User)) { - QNetworkCacheMetaData::AttributesMap attributes = metadata.attributes(); - attributes.insert(QNetworkRequest::Attribute::User, QDateTime::currentDateTime()); - metadata.setAttributes(attributes); - _diskCache->updateMetaData(metadata); - } - - // If we forced network download, but it failed, try again with the cache - if (_downloadFromNetwork && !errorMsg.isEmpty()) { - _downloadFromNetwork = false; - if (!_fileDownload->download(remoteFile)) { - emit downloadComplete(remoteFile, localFile, errorMsg); - } - } else { - emit downloadComplete(remoteFile, localFile, errorMsg); - } -} diff --git a/src/QGCCachedFileDownload.h b/src/QGCCachedFileDownload.h deleted file mode 100644 index f47ba73..0000000 --- a/src/QGCCachedFileDownload.h +++ /dev/null @@ -1,39 +0,0 @@ -/**************************************************************************** - * - * (c) 2022 QGROUNDCONTROL PROJECT - * - * QGroundControl is licensed according to the terms in the file - * COPYING.md in the root of the source code directory. - * - ****************************************************************************/ - -#pragma once - -#include "QGCFileDownload.h" - -#include - -class QGCCachedFileDownload : public QObject -{ - Q_OBJECT - -public: - QGCCachedFileDownload(QObject* parent, const QString& cacheDirectory); - - /// Download the specified remote file. - /// @param url File to download - /// @param maxCacheAgeSec Maximum age of cached item in seconds - /// @return true: Asynchronous download has started, false: Download initialization failed - bool download(const QString& url, int maxCacheAgeSec); - -signals: - void downloadProgress(qint64 curr, qint64 total); - void downloadComplete(QString remoteFile, QString localFile, QString errorMsg); - -private: - void onDownloadCompleted(QString remoteFile, QString localFile, QString errorMsg); - - QGCFileDownload* _fileDownload; - QNetworkDiskCache* _diskCache; - bool _downloadFromNetwork{false}; -}; diff --git a/src/QGCFileDownload.cc b/src/QGCFileDownload.cc index e67da07..a818e36 100644 --- a/src/QGCFileDownload.cc +++ b/src/QGCFileDownload.cc @@ -20,10 +20,9 @@ QGCFileDownload::QGCFileDownload(QObject* parent) } -bool QGCFileDownload::download(const QString& remoteFile, const QVector>& requestAttributes, bool redirect) +bool QGCFileDownload::download(const QString& remoteFile, bool redirect) { if (!redirect) { - _requestAttributes = requestAttributes; _originalRemoteFile = remoteFile; } @@ -46,10 +45,6 @@ bool QGCFileDownload::download(const QString& remoteFile, const QVectorattribute(QNetworkRequest::RedirectionTargetAttribute); if (!redirectionTarget.isNull()) { QUrl redirectUrl = reply->url().resolved(redirectionTarget.toUrl()); - download(redirectUrl.toString(), _requestAttributes, true /* redirect */); + download(redirectUrl.toString(), true /* redirect */); reply->deleteLater(); return; } @@ -150,19 +143,3 @@ void QGCFileDownload::_downloadError(QNetworkReply::NetworkError code) emit downloadComplete(_originalRemoteFile, QString(), errorMsg); } - -void QGCFileDownload::setIgnoreSSLErrorsIfNeeded(QNetworkReply& networkReply) -{ - // Some systems (like Ubuntu 22.04) only ship with OpenSSL 3.x, however Qt 5.15.2 links against OpenSSL 1.x. - // This results in unresolved symbols for EVP_PKEY_base_id and SSL_get_peer_certificate. - // To still get a connection we have to ignore certificate verification (connection is still encrypted but open to MITM attacks) - // See https://bugreports.qt.io/browse/QTBUG-115146 - const bool sslLibraryBuildIs1x = (QSslSocket::sslLibraryBuildVersionNumber() & 0xf0000000) == 0x10000000; - const bool sslLibraryIs3x = (QSslSocket::sslLibraryVersionNumber() & 0xf0000000) == 0x30000000; - if (sslLibraryBuildIs1x && sslLibraryIs3x) { - qWarning() << "Ignoring ssl certificates due to OpenSSL version mismatch"; - QList errorsThatCanBeIgnored; - errorsThatCanBeIgnored << QSslError(QSslError::NoPeerCertificate); - networkReply.ignoreSslErrors(errorsThatCanBeIgnored); - } -} diff --git a/src/QGCFileDownload.h b/src/QGCFileDownload.h index 3c9932a..62d04a9 100644 --- a/src/QGCFileDownload.h +++ b/src/QGCFileDownload.h @@ -20,12 +20,9 @@ public: /// Download the specified remote file. /// @param remoteFile File to download. Can be http address or file system path. - /// @param requestAttributes Optional request attributes to set /// @param redirect true: call is internal due to redirect /// @return true: Asynchronous download has started, false: Download initialization failed - bool download(const QString& remoteFile, const QVector>& requestAttributes={}, bool redirect = false); - - static void setIgnoreSSLErrorsIfNeeded(QNetworkReply& networkReply); + bool download(const QString& remoteFile, bool redirect = false); signals: void downloadProgress(qint64 curr, qint64 total); @@ -36,5 +33,4 @@ private: void _downloadError(QNetworkReply::NetworkError code); QString _originalRemoteFile; - QVector> _requestAttributes; }; diff --git a/src/QGCLoggingCategory.cc b/src/QGCLoggingCategory.cc index 791de78..54d2cad 100644 --- a/src/QGCLoggingCategory.cc +++ b/src/QGCLoggingCategory.cc @@ -29,8 +29,6 @@ QGC_LOGGING_CATEGORY(GuidedActionsControllerLog, "GuidedActionsControllerLog" QGC_LOGGING_CATEGORY(ADSBVehicleManagerLog, "ADSBVehicleManagerLog") QGC_LOGGING_CATEGORY(LocalizationLog, "LocalizationLog") QGC_LOGGING_CATEGORY(VideoAllLog, kVideoAllLogCategory) -QGC_LOGGING_CATEGORY(JoystickLog, "JoystickLog") - QGCLoggingCategoryRegister* _instance = nullptr; const char* QGCLoggingCategoryRegister::_filterRulesSettingsGroup = "LoggingFilters"; diff --git a/src/QGCLoggingCategory.h b/src/QGCLoggingCategory.h index e4d1de3..7b54911 100644 --- a/src/QGCLoggingCategory.h +++ b/src/QGCLoggingCategory.h @@ -24,7 +24,6 @@ Q_DECLARE_LOGGING_CATEGORY(GuidedActionsControllerLog) Q_DECLARE_LOGGING_CATEGORY(ADSBVehicleManagerLog) Q_DECLARE_LOGGING_CATEGORY(LocalizationLog) Q_DECLARE_LOGGING_CATEGORY(VideoAllLog) // turns on all individual QGC video logs -Q_DECLARE_LOGGING_CATEGORY(JoystickLog) /// @def QGC_LOGGING_CATEGORY /// This is a QGC specific replacement for Q_LOGGING_CATEGORY. It will register the category name into a diff --git a/src/QGCToolbox.cc b/src/QGCToolbox.cc index 7fede01..cb6b3a2 100644 --- a/src/QGCToolbox.cc +++ b/src/QGCToolbox.cc @@ -34,6 +34,11 @@ #if defined(QGC_ENABLE_PAIRING) #include "PairingManager.h" #endif +#if defined(QGC_AIRMAP_ENABLED) +#include "AirMapManager.h" +#else +#include "AirspaceManager.h" +#endif #if defined(QGC_GST_TAISYNC_ENABLED) #include "TaisyncManager.h" #endif @@ -72,6 +77,14 @@ QGCToolbox::QGCToolbox(QGCApplication* app) _adsbVehicleManager = new ADSBVehicleManager (app, this); #if defined(QGC_ENABLE_PAIRING) _pairingManager = new PairingManager (app, this); +#endif + //-- Airmap Manager + //-- This should be "pluggable" so an arbitrary AirSpace manager can be used + //-- For now, we instantiate the one and only AirMap provider +#if defined(QGC_AIRMAP_ENABLED) + _airspaceManager = new AirMapManager (app, this); +#else + _airspaceManager = new AirspaceManager (app, this); #endif #if defined(QGC_GST_TAISYNC_ENABLED) _taisyncManager = new TaisyncManager (app, this); @@ -105,6 +118,7 @@ void QGCToolbox::setChildToolboxes(void) _qgcPositionManager->setToolbox(this); _videoManager->setToolbox(this); _mavlinkLogManager->setToolbox(this); + _airspaceManager->setToolbox(this); _adsbVehicleManager->setToolbox(this); #if defined(QGC_GST_TAISYNC_ENABLED) _taisyncManager->setToolbox(this); diff --git a/src/QGCToolbox.h b/src/QGCToolbox.h index 44b87fe..3e49701 100644 --- a/src/QGCToolbox.h +++ b/src/QGCToolbox.h @@ -32,6 +32,7 @@ class VideoManager; class MAVLinkLogManager; class QGCCorePlugin; class SettingsManager; +class AirspaceManager; class ADSBVehicleManager; #if defined(QGC_ENABLE_PAIRING) class PairingManager; @@ -66,6 +67,7 @@ public: MAVLinkLogManager* mavlinkLogManager () { return _mavlinkLogManager; } QGCCorePlugin* corePlugin () { return _corePlugin; } SettingsManager* settingsManager () { return _settingsManager; } + AirspaceManager* airspaceManager () { return _airspaceManager; } ADSBVehicleManager* adsbVehicleManager () { return _adsbVehicleManager; } #if defined(QGC_ENABLE_PAIRING) PairingManager* pairingManager () { return _pairingManager; } @@ -105,6 +107,7 @@ private: MAVLinkLogManager* _mavlinkLogManager = nullptr; QGCCorePlugin* _corePlugin = nullptr; SettingsManager* _settingsManager = nullptr; + AirspaceManager* _airspaceManager = nullptr; ADSBVehicleManager* _adsbVehicleManager = nullptr; #if defined(QGC_ENABLE_PAIRING) PairingManager* _pairingManager = nullptr; diff --git a/src/QmlControls/AltModeDialog.qml b/src/QmlControls/AltModeDialog.qml index 079457f..489641b 100644 --- a/src/QmlControls/AltModeDialog.qml +++ b/src/QmlControls/AltModeDialog.qml @@ -20,20 +20,16 @@ QGCPopupDialog { title: qsTr("Select Altitude Mode") buttons: StandardButton.Close - property var rgRemoveModes - property var updateAltModeFn - property var currentAltMode - Component.onCompleted: { // Check for custom build override on AMSL usage - if (!QGroundControl.corePlugin.options.showMissionAbsoluteAltitude && currentAltMode != QGroundControl.AltitudeModeAbsolute) { - rgRemoveModes.push(QGroundControl.AltitudeModeAbsolute) + if (!QGroundControl.corePlugin.options.showMissionAbsoluteAltitude && dialogProperties.currentAltMode != QGroundControl.AltitudeModeAbsolute) { + dialogProperties.rgRemoveModes.push(QGroundControl.AltitudeModeAbsolute) } // Remove modes specified by consumer - for (var i=0; i - * - * QGroundControl is licensed according to the terms in the file - * COPYING.md in the root of the source code directory. - * - ****************************************************************************/ - -#include - -#include "MAVLinkProtocol.h" -#include "Vehicle.h" - -class CustomAction: public QObject -{ - Q_OBJECT - - Q_PROPERTY(QString label READ label CONSTANT) - - -public: - CustomAction() { CustomAction("", MAV_CMD(0)); } // this is required for QML reflection - CustomAction( - QString label, - MAV_CMD mavCmd, - MAV_COMPONENT compId = MAV_COMP_ID_AUTOPILOT1, - float param1 = 0.0f, - float param2 = 0.0f, - float param3 = 0.0f, - float param4 = 0.0f, - float param5 = 0.0f, - float param6 = 0.0f, - float param7 = 0.0f - ): - _label(label), - _mavCmd(mavCmd), - _compId(compId), - _params{ param1, param2, param3, param4, param5, param6, param7 } - {}; - - Q_INVOKABLE void sendTo(Vehicle* vehicle) { - if (vehicle) { - const bool showError = true; - vehicle->sendMavCommand(_compId, _mavCmd, showError, _params[0], _params[1], _params[2], _params[3], _params[4], _params[5], _params[6]); - } - }; - - -private: - QString label() const { return _label; } - - QString _label; - MAV_CMD _mavCmd; - MAV_COMPONENT _compId; - float _params[7]; - -}; diff --git a/src/QmlControls/CustomActionManager.cc b/src/QmlControls/CustomActionManager.cc deleted file mode 100644 index bbf6074..0000000 --- a/src/QmlControls/CustomActionManager.cc +++ /dev/null @@ -1,101 +0,0 @@ -/**************************************************************************** - * - * (c) 2009-2023 QGROUNDCONTROL PROJECT - * - * QGroundControl is licensed according to the terms in the file - * COPYING.md in the root of the source code directory. - * - ****************************************************************************/ - -#include - -#include "CustomActionManager.h" -#include "CustomAction.h" -#include "JsonHelper.h" -#include "QGCApplication.h" -#include "SettingsManager.h" - -CustomActionManager::CustomActionManager(void) { - auto flyViewSettings = qgcApp()->toolbox()->settingsManager()->flyViewSettings(); - Fact* customActionsFact = flyViewSettings->customActionDefinitions(); - - connect(customActionsFact, &Fact::valueChanged, this, &CustomActionManager::_loadFromJson); - - // On construction, we only load the Custom Actions if we have a path - // defined, to prevent spurious warnings. - if (!customActionsFact->rawValue().toString().isEmpty()) { - _loadFromJson(customActionsFact->rawValue()); - } -} - -void CustomActionManager::_loadFromJson(QVariant fact) { - QString path = fact.toString(); - - const char* kQgcFileType = "CustomActions"; - const char* kActionListKey = "actions"; - - _actions.clearAndDeleteContents(); - - QString errorString; - int version; - QJsonObject jsonObject = JsonHelper::openInternalQGCJsonFile(path, kQgcFileType, 1, 1, version, errorString); - if (!errorString.isEmpty()) { - qCWarning(GuidedActionsControllerLog) << "Custom Actions Internal Error: " << errorString; - emit actionsChanged(); - return; - } - - QList keyInfoList = { - { kActionListKey, QJsonValue::Array, /* required= */ true }, - }; - if (!JsonHelper::validateKeys(jsonObject, keyInfoList, errorString)) { - qCWarning(GuidedActionsControllerLog) << "Custom Actions JSON document incorrect format:" << errorString; - emit actionsChanged(); - return; - } - - QJsonArray actionList = jsonObject[kActionListKey].toArray(); - for (auto actionJson: actionList) { - if (!actionJson.isObject()) { - qCWarning(GuidedActionsControllerLog) << "Custom Actions JsonValue not an object: " << actionJson; - continue; - } - - auto actionObj = actionJson.toObject(); - - QList actionKeyInfoList = { - { "label", QJsonValue::String, /* required= */ true }, - { "mavCmd", QJsonValue::Double, /* required= */ true }, - - { "compId", QJsonValue::Double, /* required= */ false }, - { "param1", QJsonValue::Double, /* required= */ false }, - { "param2", QJsonValue::Double, /* required= */ false }, - { "param3", QJsonValue::Double, /* required= */ false }, - { "param4", QJsonValue::Double, /* required= */ false }, - { "param5", QJsonValue::Double, /* required= */ false }, - { "param6", QJsonValue::Double, /* required= */ false }, - { "param7", QJsonValue::Double, /* required= */ false }, - }; - if (!JsonHelper::validateKeys(actionObj, actionKeyInfoList, errorString)) { - qCWarning(GuidedActionsControllerLog) << "Custom Actions JSON document incorrect format:" << errorString; - continue; - } - - auto label = actionObj["label"].toString(); - auto mavCmd = (MAV_CMD)actionObj["mavCmd"].toInt(); - auto compId = (MAV_COMPONENT)actionObj["compId"].toInt(MAV_COMP_ID_AUTOPILOT1); - auto param1 = actionObj["param1"].toDouble(0.0); - auto param2 = actionObj["param2"].toDouble(0.0); - auto param3 = actionObj["param3"].toDouble(0.0); - auto param4 = actionObj["param4"].toDouble(0.0); - auto param5 = actionObj["param5"].toDouble(0.0); - auto param6 = actionObj["param6"].toDouble(0.0); - auto param7 = actionObj["param7"].toDouble(0.0); - - CustomAction* action = new CustomAction(label, mavCmd, compId, param1, param2, param3, param4, param5, param6, param7); - QQmlEngine::setObjectOwnership(action, QQmlEngine::CppOwnership); - _actions.append(action); - } - - emit actionsChanged(); -} diff --git a/src/QmlControls/CustomActionManager.h b/src/QmlControls/CustomActionManager.h deleted file mode 100644 index e7f8956..0000000 --- a/src/QmlControls/CustomActionManager.h +++ /dev/null @@ -1,37 +0,0 @@ -/**************************************************************************** - * - * (c) 2009-2023 QGROUNDCONTROL PROJECT - * - * QGroundControl is licensed according to the terms in the file - * COPYING.md in the root of the source code directory. - * - ****************************************************************************/ - -#include -#include - - -class CustomActionManager : public QObject -{ - Q_OBJECT - - Q_PROPERTY(QmlObjectListModel* actions READ actions NOTIFY actionsChanged) - Q_PROPERTY(bool hasActions READ hasActions NOTIFY actionsChanged) - -public: - CustomActionManager(void); - - QmlObjectListModel* actions(void) { return &_actions; } - bool hasActions(void) { return _actions.count() > 0; } - -signals: - void actionsChanged(); - -private slots: - void _loadFromJson(QVariant path); - -private: - QmlObjectListModel _actions; - bool _hasActions; - -}; diff --git a/src/QmlControls/CustomActions.json b/src/QmlControls/CustomActions.json deleted file mode 100644 index 76f0f60..0000000 --- a/src/QmlControls/CustomActions.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "version": 1, - "fileType": "CustomActions", - "actions": [ - { - "label": "Image Start Capture", - "mavCmd": 2000, - "compId": 1, - "param1": 0, - "param2": 0, - "param3": 0, - "param4": 0, - "param5": 0, - "param6": 0, - "param7": 0 - }, - { - "label": "Image Stop Capture", - "mavCmd": 2001 - } - ] -} diff --git a/src/QmlControls/EditPositionDialog.qml b/src/QmlControls/EditPositionDialog.qml index 16f3623..c02aa70 100644 --- a/src/QmlControls/EditPositionDialog.qml +++ b/src/QmlControls/EditPositionDialog.qml @@ -10,7 +10,6 @@ import QtQuick 2.3 import QtQuick.Controls 1.2 import QtQuick.Layouts 1.2 -import QtQuick.Dialogs 1.2 import QGroundControl 1.0 import QGroundControl.Palette 1.0 @@ -19,11 +18,7 @@ import QGroundControl.FactControls 1.0 import QGroundControl.ScreenTools 1.0 import QGroundControl.Controllers 1.0 -QGCPopupDialog { - id: root - title: qsTr("Edit Position") - buttons: mainWindow.showDialogDefaultWidth, StandardButton.Close - +QGCViewDialog { property alias coordinate: controller.coordinate property real _margin: ScreenTools.defaultFontPixelWidth / 2 @@ -35,121 +30,127 @@ QGCPopupDialog { Component.onCompleted: initValues() } - Column { - id: column - width: 40 * ScreenTools.defaultFontPixelWidth - spacing: ScreenTools.defaultFontPixelHeight + QGCFlickable { + anchors.fill: parent + contentHeight: column.height - GridLayout { + Column { + id: column anchors.left: parent.left anchors.right: parent.right - columnSpacing: _margin - rowSpacing: _margin - columns: 2 + spacing: ScreenTools.defaultFontPixelHeight - QGCLabel { - text: qsTr("Latitude") - } - FactTextField { - fact: controller.latitude - Layout.fillWidth: true - } + GridLayout { + anchors.left: parent.left + anchors.right: parent.right + columnSpacing: _margin + rowSpacing: _margin + columns: 2 - QGCLabel { - text: qsTr("Longitude") - } - FactTextField { - fact: controller.longitude - Layout.fillWidth: true - } + QGCLabel { + text: qsTr("Latitude") + } + FactTextField { + fact: controller.latitude + Layout.fillWidth: true + } - QGCButton { - text: qsTr("Set Geographic") - Layout.alignment: Qt.AlignRight - Layout.columnSpan: 2 - onClicked: { - controller.setFromGeo() - root.close() + QGCLabel { + text: qsTr("Longitude") + } + FactTextField { + fact: controller.longitude + Layout.fillWidth: true + } + + QGCButton { + text: qsTr("Set Geographic") + Layout.alignment: Qt.AlignRight + Layout.columnSpan: 2 + onClicked: { + controller.setFromGeo() + reject() + } + } + + Item { width: 1; height: ScreenTools.defaultFontPixelHeight; Layout.columnSpan: 2} + + QGCLabel { + text: qsTr("Zone") + } + FactTextField { + fact: controller.zone + Layout.fillWidth: true + } + + QGCLabel { + text: qsTr("Hemisphere") + } + FactComboBox { + fact: controller.hemisphere + indexModel: false + Layout.fillWidth: true + } + + QGCLabel { + text: qsTr("Easting") + } + FactTextField { + fact: controller.easting + Layout.fillWidth: true + } + + QGCLabel { + text: qsTr("Northing") + } + FactTextField { + fact: controller.northing + Layout.fillWidth: true + } + + QGCButton { + text: qsTr("Set UTM") + Layout.alignment: Qt.AlignRight + Layout.columnSpan: 2 + onClicked: { + controller.setFromUTM() + reject() + } + } + + Item { width: 1; height: ScreenTools.defaultFontPixelHeight; Layout.columnSpan: 2} + + QGCLabel { + text: qsTr("MGRS") + } + FactTextField { + fact: controller.mgrs + Layout.fillWidth: true + } + + QGCButton { + text: qsTr("Set MGRS") + Layout.alignment: Qt.AlignRight + Layout.columnSpan: 2 + onClicked: { + controller.setFromMGRS() + reject() + } + } + + Item { width: 1; height: ScreenTools.defaultFontPixelHeight; Layout.columnSpan: 2} + + QGCButton { + text: qsTr("Set From Vehicle Position") + visible: QGroundControl.multiVehicleManager.activeVehicle && QGroundControl.multiVehicleManager.activeVehicle.coordinate.isValid + Layout.alignment: Qt.AlignRight + Layout.columnSpan: 2 + onClicked: { + controller.setFromVehicle() + reject() + } } } - - Item { width: 1; height: ScreenTools.defaultFontPixelHeight; Layout.columnSpan: 2} - - QGCLabel { - text: qsTr("Zone") - } - FactTextField { - fact: controller.zone - Layout.fillWidth: true - } - - QGCLabel { - text: qsTr("Hemisphere") - } - FactComboBox { - fact: controller.hemisphere - indexModel: false - Layout.fillWidth: true - } - - QGCLabel { - text: qsTr("Easting") - } - FactTextField { - fact: controller.easting - Layout.fillWidth: true - } - - QGCLabel { - text: qsTr("Northing") - } - FactTextField { - fact: controller.northing - Layout.fillWidth: true - } - - QGCButton { - text: qsTr("Set UTM") - Layout.alignment: Qt.AlignRight - Layout.columnSpan: 2 - onClicked: { - controller.setFromUTM() - root.close() - } - } - - Item { width: 1; height: ScreenTools.defaultFontPixelHeight; Layout.columnSpan: 2} - - QGCLabel { - text: qsTr("MGRS") - } - FactTextField { - fact: controller.mgrs - Layout.fillWidth: true - } - - QGCButton { - text: qsTr("Set MGRS") - Layout.alignment: Qt.AlignRight - Layout.columnSpan: 2 - onClicked: { - controller.setFromMGRS() - root.close() - } - } - - Item { width: 1; height: ScreenTools.defaultFontPixelHeight; Layout.columnSpan: 2} - - QGCButton { - text: qsTr("Set From Vehicle Position") - visible: QGroundControl.multiVehicleManager.activeVehicle && QGroundControl.multiVehicleManager.activeVehicle.coordinate.isValid - Layout.alignment: Qt.AlignRight - Layout.columnSpan: 2 - onClicked: { - controller.setFromVehicle() - root.close() - } - } - } - } -} + } // Column + } // QGCFlickable +} // QGCViewDialog diff --git a/src/QmlControls/HorizontalFactValueGrid.qml b/src/QmlControls/HorizontalFactValueGrid.qml index 93b825c..310b71b 100644 --- a/src/QmlControls/HorizontalFactValueGrid.qml +++ b/src/QmlControls/HorizontalFactValueGrid.qml @@ -20,6 +20,10 @@ import QGroundControl.Palette 1.0 import QGroundControl.FlightMap 1.0 import QGroundControl 1.0 +// Note: This control will spit out qWarnings like this: "QGridLayoutEngine::addItem: Cell (0, 1) already taken" +// This is due to Qt bug https://bugreports.qt.io/browse/QTBUG-65121 +// If this becomes a problem I'll implement our own grid layout control + T.HorizontalFactValueGrid { id: _root Layout.preferredWidth: topLayout.width @@ -76,7 +80,7 @@ T.HorizontalFactValueGrid { function recalcWidth() { var newMaxWidth = 0 for (var i=0; iname().contains(re) && - !fact->shortDescription().contains(re) && - !fact->longDescription().contains(re)) { - matched = false; - } - } else { - if (!fact->name().contains(searchItem, Qt::CaseInsensitive) && - !fact->shortDescription().contains(searchItem, Qt::CaseInsensitive) && - !fact->longDescription().contains(searchItem, Qt::CaseInsensitive)) { - matched = false; - } + if (!fact->name().contains(searchItem, Qt::CaseInsensitive) && + !fact->shortDescription().contains(searchItem, Qt::CaseInsensitive) && + !fact->longDescription().contains(searchItem, Qt::CaseInsensitive)) { + matched = false; } } } diff --git a/src/QmlControls/ParameterEditorDialog.qml b/src/QmlControls/ParameterEditorDialog.qml index f0bdf70..137eebe 100644 --- a/src/QmlControls/ParameterEditorDialog.qml +++ b/src/QmlControls/ParameterEditorDialog.qml @@ -8,8 +8,8 @@ ****************************************************************************/ import QtQuick 2.3 -import QtQuick.Controls 2.15 -import QtQuick.Layouts 1.15 +import QtQuick.Controls 1.2 +import QtQuick.Layouts 1.2 import QtQuick.Dialogs 1.3 import QGroundControl 1.0 @@ -20,10 +20,9 @@ import QGroundControl.FactSystem 1.0 import QGroundControl.FactControls 1.0 import QGroundControl.ScreenTools 1.0 -QGCPopupDialog { - id: root - title: qsTr("Parameter Editor") - buttons: StandardButton.Cancel | StandardButton.Save +QGCViewDialog { + id: root + focus: true property Fact fact property bool showRCToParam: false @@ -38,39 +37,40 @@ QGCPopupDialog { property bool _editingParameter: fact.componentId != 0 property bool _allowForceSave: QGroundControl.corePlugin.showAdvancedUI || !_editingParameter property bool _allowDefaultReset: fact.defaultValueAvailable && (QGroundControl.corePlugin.showAdvancedUI || !_editingParameter) - property bool _showCombo: fact.enumStrings.length !== 0 && fact.bitmaskStrings.length === 0 && !validate ParameterEditorController { id: controller; } QGCPalette { id: qgcPal; colorGroupEnabled: true } - onAccepted: { + function accept() { if (bitmaskColumn.visible && !manualEntry.checked) { fact.value = bitmaskValue(); fact.valueChanged(fact.value) valueChanged() + hideDialog(); } else if (factCombo.visible && !manualEntry.checked) { fact.enumIndex = factCombo.currentIndex valueChanged() + hideDialog() } else { var errorString = fact.validate(valueField.text, forceSave.checked) if (errorString === "") { fact.value = valueField.text fact.valueChanged(fact.value) valueChanged() + hideDialog() } else { validationError.text = errorString if (_allowForceSave) { forceSave.visible = true } - preventClose = true } } } function reject() { fact.valueChanged(fact.value) - close() + hideDialog(); } function bitmaskValue() { @@ -93,41 +93,63 @@ QGCPopupDialog { } } - ColumnLayout { - width: editRow.width - spacing: globals.defaultTextHeight + QGCFlickable { + id: flickable + anchors.fill: parent + contentHeight: _column.y + _column.height + flickableDirection: Flickable.VerticalFlick - QGCLabel { - id: validationError - Layout.fillWidth: true - wrapMode: Text.WordWrap - color: qgcPal.warningText - visible: text !== "" - } + Column { + id: _column + spacing: globals.defaultTextHeight + anchors.left: parent.left + anchors.right: parent.right - RowLayout { - id: editRow - spacing: ScreenTools.defaultFontPixelWidth + QGCLabel { + id: validationError + width: parent.width + wrapMode: Text.WordWrap + color: qgcPal.warningText + } - QGCTextField { - id: valueField - width: _editFieldWidth - text: validate ? validateValue : fact.valueString - unitsLabel: fact.units - showUnits: fact.units != "" - focus: setFocus && visible - inputMethodHints: (fact.typeIsString || ScreenTools.isiOS) ? // iOS numeric keyboard has no done button, we can't use it - Qt.ImhNone : - Qt.ImhFormattedNumbersOnly // Forces use of virtual numeric keyboard - visible: !_showCombo || validate || manualEntry.checked + RowLayout { + spacing: ScreenTools.defaultFontPixelWidth + anchors.left: parent.left + anchors.right: parent.right + + QGCTextField { + id: valueField + text: validate ? validateValue : fact.valueString + visible: fact.enumStrings.length === 0 || validate || manualEntry.checked + unitsLabel: fact.units + showUnits: fact.units != "" + Layout.fillWidth: true + focus: setFocus + inputMethodHints: (fact.typeIsString || ScreenTools.isiOS) ? + Qt.ImhNone : // iOS numeric keyboard has no done button, we can't use it + Qt.ImhFormattedNumbersOnly // Forces use of virtual numeric keyboard + } + + QGCButton { + visible: _allowDefaultReset + text: qsTr("Reset to default") + + onClicked: { + fact.value = fact.defaultValue + fact.valueChanged(fact.value) + hideDialog() + } + } } QGCComboBox { - id: factCombo - width: _editFieldWidth - model: fact.enumStrings - visible: _showCombo - focus: setFocus && visible + id: factCombo + anchors.left: parent.left + anchors.right: parent.right + visible: _showCombo + model: fact.enumStrings + + property bool _showCombo: fact.enumStrings.length !== 0 && fact.bitmaskStrings.length === 0 && !validate Component.onCompleted: { // We can't bind directly to fact.enumIndex since that would add an unknown value @@ -144,125 +166,134 @@ QGCPopupDialog { } } - QGCButton { - visible: _allowDefaultReset - text: qsTr("Reset To Default") + Column { + id: bitmaskColumn + spacing: ScreenTools.defaultFontPixelHeight / 2 + visible: fact.bitmaskStrings.length > 0 - onClicked: { - fact.value = fact.defaultValue - fact.valueChanged(fact.value) - close() - } - } - } + Repeater { + id: bitmaskRepeater + model: fact.bitmaskStrings - Column { - id: bitmaskColumn - spacing: ScreenTools.defaultFontPixelHeight / 2 - visible: fact.bitmaskStrings.length > 0 + delegate : QGCCheckBox { + text : modelData + checked : fact.value & fact.bitmaskValues[index] - Repeater { - id: bitmaskRepeater - model: fact.bitmaskStrings - - delegate : QGCCheckBox { - text : modelData - checked : fact.value & fact.bitmaskValues[index] - - onClicked: { - valueField.text = bitmaskValue() + onClicked: { + valueField.text = bitmaskValue() + } } } } - } - - QGCLabel { - Layout.fillWidth: true - wrapMode: Text.WordWrap - visible: !longDescriptionLabel.visible - text: fact.shortDescription - } - - QGCLabel { - id: longDescriptionLabel - Layout.fillWidth: true - wrapMode: Text.WordWrap - visible: fact.longDescription != "" - text: fact.longDescription - } - - Row { - spacing: ScreenTools.defaultFontPixelWidth QGCLabel { - id: minValueDisplay - text: qsTr("Min: ") + fact.minString - visible: !fact.minIsDefaultForType + width: parent.width + wrapMode: Text.WordWrap + visible: !longDescriptionLabel.visible + text: fact.shortDescription } QGCLabel { - text: qsTr("Max: ") + fact.maxString - visible: !fact.maxIsDefaultForType + id: longDescriptionLabel + width: parent.width + wrapMode: Text.WordWrap + visible: fact.longDescription != "" + text: fact.longDescription + } + + Row { + spacing: ScreenTools.defaultFontPixelWidth + + QGCLabel { + id: minValueDisplay + text: qsTr("Min: ") + fact.minString + visible: !fact.minIsDefaultForType + } + + QGCLabel { + text: qsTr("Max: ") + fact.maxString + visible: !fact.maxIsDefaultForType + } + + QGCLabel { + text: qsTr("Default: ") + fact.defaultValueString + visible: _allowDefaultReset + } } QGCLabel { - text: qsTr("Default: ") + fact.defaultValueString - visible: _allowDefaultReset + text: qsTr("Parameter name: ") + fact.name + visible: fact.componentId > 0 // > 0 means it's a parameter fact } - } - QGCLabel { - text: qsTr("Parameter name: ") + fact.name - visible: fact.componentId > 0 // > 0 means it's a parameter fact - } - - QGCLabel { - visible: fact.vehicleRebootRequired - text: qsTr("Vehicle reboot required after change") - } - - QGCLabel { - visible: fact.qgcRebootRequired - text: qsTr("Application restart required after change") - } - - QGCLabel { - Layout.fillWidth: true - wrapMode: Text.WordWrap - text: qsTr("Warning: Modifying values while vehicle is in flight can lead to vehicle instability and possible vehicle loss. ") + - qsTr("Make sure you know what you are doing and double-check your values before Save!") - visible: fact.componentId != -1 - } - - QGCCheckBox { - id: forceSave - visible: false - text: qsTr("Force save (dangerous!)") - } - - QGCCheckBox { - id: _advanced - text: qsTr("Advanced settings") - visible: showRCToParam || factCombo.visible || bitmaskColumn.visible - } - - // Checkbox to allow manual entry of enumerated or bitmask parameters - QGCCheckBox { - id: manualEntry - visible: _advanced.checked && (factCombo.visible || bitmaskColumn.visible) - text: qsTr("Manual Entry") - - onClicked: { - valueField.text = fact.valueString + QGCLabel { + visible: fact.vehicleRebootRequired + text: qsTr("Vehicle reboot required after change") } - } - QGCButton { - text: qsTr("Set RC to Param") - visible: _advanced.checked && !validate && showRCToParam - onClicked: rcToParamDialog.createObject(mainWindow).open() - } - } // Column + QGCLabel { + visible: fact.qgcRebootRequired + text: qsTr("Application restart required after change") + } + + QGCLabel { + width: parent.width + wrapMode: Text.WordWrap + text: qsTr("Warning: Modifying values while vehicle is in flight can lead to vehicle instability and possible vehicle loss. ") + + qsTr("Make sure you know what you are doing and double-check your values before Save!") + visible: fact.componentId != -1 + } + + QGCCheckBox { + id: forceSave + visible: false + text: qsTr("Force save (dangerous!)") + } + + Row { + width: parent.width + spacing: ScreenTools.defaultFontPixelWidth / 2 + visible: showRCToParam || factCombo.visible || bitmaskColumn.visible + + Rectangle { + height: 1 + width: ScreenTools.defaultFontPixelWidth * 5 + color: qgcPal.text + anchors.verticalCenter: _advanced.verticalCenter + } + + QGCCheckBox { + id: _advanced + text: qsTr("Advanced settings") + } + + Rectangle { + height: 1 + width: ScreenTools.defaultFontPixelWidth * 5 + color: qgcPal.text + anchors.verticalCenter: _advanced.verticalCenter + } + } + + // Checkbox to allow manual entry of enumerated or bitmask parameters + QGCCheckBox { + id: manualEntry + visible: _advanced.checked && (factCombo.visible || bitmaskColumn.visible) + text: qsTr("Manual Entry") + + onClicked: { + valueField.text = fact.valueString + } + } + + QGCButton { + text: qsTr("Set RC to Param") + width: _editFieldWidth + visible: _advanced.checked && !validate && showRCToParam + onClicked: mainWindow.showPopupDialogFromComponent(rcToParamDialog) + } + } // Column + } Component { id: rcToParamDialog @@ -271,4 +302,4 @@ QGCPopupDialog { tuningFact: fact } } -} +} // QGCViewDialog diff --git a/src/QmlControls/QGCColumnButton.qml b/src/QmlControls/QGCColumnButton.qml deleted file mode 100644 index 02721fb..0000000 --- a/src/QmlControls/QGCColumnButton.qml +++ /dev/null @@ -1,63 +0,0 @@ -import QtQuick 2.5 -import QtQuick.Controls 2.12 -import QtQuick.Controls.Styles 1.4 -import QtQuick.Layouts 1.2 - -import QGroundControl.Palette 1.0 -import QGroundControl.ScreenTools 1.0 - -QGCButton { - id: control //This is a button rework from DonLakeFlyer's QGCButton that allows to contain a text and an Icon with a column look and the same capabilites - - background: Rectangle { - id: backRect - width: control.width - height: control.height - radius: backRadius - border.width: showBorder ? 1 : 0 - border.color: qgcPal.buttonText - color: _showHighlight ? - qgcPal.buttonHighlight : - (primary ? qgcPal.primaryButton : qgcPal.button) - } - - contentItem: Item { - id: contItem - implicitWidth: Math.max(textLabel.implicitWidth , icon.implicitWidth ) * 1.1 - implicitHeight: iconSource === "" ? textLabel.implicitHeight : textLabel.implicitHeight * 2.5 - ColumnLayout { - anchors.fill: parent - QGCColoredImage { - id: icon - Layout.fillWidth: true - Layout.fillHeight: true - Layout.maximumHeight: parent.height - textLabelContainer.height - Layout.alignment: control.text !== "" ? Qt.AlignTop : Qt.AlignHCenter | Qt.AlignVCenter - source: control.iconSource - color: qgcPal.text - fillMode: Image.PreserveAspectFit - sourceSize.height: height - sourceSize.width: width - visible: control.iconSource !== "" ? true : false - } - - Item { - id: textLabelContainer - Layout.alignment: icon.visible ? Qt.AlignBottom | Qt.AlignHCenter : Qt.AlignCenter - visible: control.text !== "" ? true : false - Layout.preferredWidth: parent.width - Layout.preferredHeight: textLabel.baselineOffset - QGCLabel { - id: textLabel - text: control.text - font.family: ScreenTools.normalFontFamily - font.pointSize: control.pointSize - color: _showHighlight ? qgcPal.buttonHighlightText : (primary ? qgcPal.primaryButtonText : qgcPal.buttonText) - anchors.baseline: iconSource !== "" ? parent.bottom : undefined - anchors.centerIn: iconSource === "" ? parent : undefined - anchors.horizontalCenter: parent.horizontalCenter - } - } - } - } -} diff --git a/src/QmlControls/QGCComboBox.qml b/src/QmlControls/QGCComboBox.qml index b51b3f9..f02d8cd 100644 --- a/src/QmlControls/QGCComboBox.qml +++ b/src/QmlControls/QGCComboBox.qml @@ -27,7 +27,6 @@ T.ComboBox { contentItem.implicitWidth + leftPadding + rightPadding + padding) implicitHeight: Math.max(background ? background.implicitHeight : 0, Math.max(contentItem.implicitHeight, indicator ? indicator.implicitHeight : 0) + topPadding + bottomPadding) - baselineOffset: contentItem.y + text.baselineOffset leftPadding: padding + (!control.mirrored || !indicator || !indicator.visible ? 0 : indicator.width + spacing) rightPadding: padding + (control.mirrored || !indicator || !indicator.visible ? 0 : indicator.width) diff --git a/src/QmlControls/QGCFileDialog.qml b/src/QmlControls/QGCFileDialog.qml index a4c185e..98ccc7b 100644 --- a/src/QmlControls/QGCFileDialog.qml +++ b/src/QmlControls/QGCFileDialog.qml @@ -27,7 +27,7 @@ Item { function openForLoad() { _openForLoad = true if (_mobileDlg && folder.length !== 0) { - mobileFileOpenDialogComponent.createObject(mainWindow).open() + mainWindow.showComponentDialog(mobileFileOpenDialog, title, mainWindow.showDialogDefaultWidth, StandardButton.Cancel) } else { fullFileDialog.open() } @@ -36,7 +36,7 @@ Item { function openForSave() { _openForLoad = false if (_mobileDlg && folder.length !== 0) { - mobileFileSaveDialogComponent.createObject(mainWindow).open() + mainWindow.showComponentDialog(mobileFileSaveDialog, title, mainWindow.showDialogDefaultWidth, StandardButton.Cancel | StandardButton.Ok) } else { fullFileDialog.open() } @@ -107,158 +107,168 @@ Item { } Component { - id: mobileFileOpenDialogComponent + id: mobileFileOpenDialog - QGCPopupDialog { - id: mobileFileOpenDialog - title: _root.title - buttons: StandardButton.Cancel + QGCViewDialog { + QGCFlickable { + anchors.fill: parent + contentHeight: fileOpenColumn.height - Column { - id: fileOpenColumn - width: 40 * ScreenTools.defaultFontPixelWidth - spacing: ScreenTools.defaultFontPixelHeight / 2 + Column { + id: fileOpenColumn + anchors.left: parent.left + anchors.right: parent.right + spacing: ScreenTools.defaultFontPixelHeight / 2 - QGCLabel { text: qsTr("Path: %1").arg(_mobileShortPath) } + QGCLabel { text: qsTr("Path: %1").arg(_mobileShortPath) } - Repeater { - id: fileRepeater - model: controller.getFiles(folder, _rgExtensions) + Repeater { + id: fileRepeater + model: controller.getFiles(folder, _rgExtensions) - FileButton { - id: fileButton - anchors.left: parent.left - anchors.right: parent.right - text: modelData + FileButton { + id: fileButton + anchors.left: parent.left + anchors.right: parent.right + text: modelData - onClicked: { - mobileFileOpenDialog.close() - _root.acceptedForLoad(controller.fullyQualifiedFilename(folder, modelData)) - } + onClicked: { + hideDialog() + _root.acceptedForLoad(controller.fullyQualifiedFilename(folder, modelData)) + } - onHamburgerClicked: { - highlight = true - hamburgerMenu.fileToDelete = controller.fullyQualifiedFilename(folder, modelData) - hamburgerMenu.popup() - } + onHamburgerClicked: { + highlight = true + hamburgerMenu.fileToDelete = controller.fullyQualifiedFilename(folder, modelData) + hamburgerMenu.popup() + } - QGCMenu { - id: hamburgerMenu + QGCMenu { + id: hamburgerMenu - property string fileToDelete + property string fileToDelete - onAboutToHide: fileButton.highlight = false + onAboutToHide: fileButton.highlight = false - QGCMenuItem { - text: qsTr("Delete") - onTriggered: { - controller.deleteFile(hamburgerMenu.fileToDelete) - fileRepeater.model = controller.getFiles(folder, _rgExtensions) + QGCMenuItem { + text: qsTr("Delete") + onTriggered: { + controller.deleteFile(hamburgerMenu.fileToDelete) + fileRepeater.model = controller.getFiles(folder, _rgExtensions) + } } } } } - } - QGCLabel { - text: qsTr("No files") - visible: fileRepeater.model.length === 0 + QGCLabel { + text: qsTr("No files") + visible: fileRepeater.model.length === 0 + } } } } } Component { - id: mobileFileSaveDialogComponent + id: mobileFileSaveDialog - QGCPopupDialog { - id: mobileFileSaveDialog - title: _root.title - buttons: StandardButton.Cancel | StandardButton.Ok - - onAccepted: { + QGCViewDialog { + function accept() { if (filenameTextField.text == "") { - mobileFileSaveDialog.preventClose = true return } if (!replaceMessage.visible) { if (controller.fileExists(controller.fullyQualifiedFilename(folder, filenameTextField.text, _rgExtensions))) { replaceMessage.visible = true - mobileFileSaveDialog.preventClose = true return } } _root.acceptedForSave(controller.fullyQualifiedFilename(folder, filenameTextField.text, _rgExtensions)) + hideDialog() } - Column { - id: fileSaveColumn - width: 40 * ScreenTools.defaultFontPixelWidth - spacing: ScreenTools.defaultFontPixelHeight / 2 + QGCFlickable { + anchors.fill: parent + contentHeight: fileSaveColumn.height - RowLayout { + Column { + id: fileSaveColumn anchors.left: parent.left anchors.right: parent.right - spacing: ScreenTools.defaultFontPixelWidth + spacing: ScreenTools.defaultFontPixelHeight / 2 - QGCLabel { text: qsTr("New file name:") } - - QGCTextField { - id: filenameTextField - Layout.fillWidth: true - onTextChanged: replaceMessage.visible = false - } - } - - QGCLabel { - id: replaceMessage - anchors.left: parent.left - anchors.right: parent.right - wrapMode: Text.WordWrap - text: qsTr("The file %1 exists. Click Save again to replace it.").arg(filenameTextField.text) - visible: false - color: qgcPal.warningText - } - - SectionHeader { - anchors.left: parent.left - anchors.right: parent.right - text: qsTr("Save to existing file:") - } - - Repeater { - id: fileRepeater - model: controller.getFiles(folder, [ _rgExtensions ]) - - FileButton { - id: fileButton + RowLayout { anchors.left: parent.left anchors.right: parent.right - text: modelData + spacing: ScreenTools.defaultFontPixelWidth - onClicked: { - mobileFileSaveDialog.close() - _root.acceptedForSave(controller.fullyQualifiedFilename(folder, modelData)) + QGCLabel { text: qsTr("New file name:") } + + QGCTextField { + id: filenameTextField + Layout.fillWidth: true + onTextChanged: replaceMessage.visible = false } + } - onHamburgerClicked: { - highlight = true - hamburgerMenu.fileToDelete = controller.fullyQualifiedFilename(folder, modelData) - hamburgerMenu.popup() - } + QGCLabel { + anchors.left: parent.left + anchors.right: parent.right + wrapMode: Text.WordWrap + text: qsTr("File names must end with .%1 file extension. If missing it will be added.").arg(fileExtension) + } - QGCMenu { - id: hamburgerMenu + QGCLabel { + id: replaceMessage + anchors.left: parent.left + anchors.right: parent.right + wrapMode: Text.WordWrap + text: qsTr("The file %1 exists. Click Save again to replace it.").arg(filenameTextField.text) + visible: false + color: qgcPal.warningText + } - property string fileToDelete + SectionHeader { + anchors.left: parent.left + anchors.right: parent.right + text: qsTr("Save to existing file:") + } - onAboutToHide: fileButton.highlight = false + Repeater { + id: fileRepeater + model: controller.getFiles(folder, [ fileExtension ]) - QGCMenuItem { - text: qsTr("Delete") - onTriggered: { - controller.deleteFile(hamburgerMenu.fileToDelete) - fileRepeater.model = controller.getFiles(folder, [ _rgExtensions ]) + FileButton { + id: fileButton + anchors.left: parent.left + anchors.right: parent.right + text: modelData + + onClicked: { + hideDialog() + _root.acceptedForSave(controller.fullyQualifiedFilename(folder, modelData)) + } + + onHamburgerClicked: { + highlight = true + hamburgerMenu.fileToDelete = controller.fullyQualifiedFilename(folder, modelData) + hamburgerMenu.popup() + } + + QGCMenu { + id: hamburgerMenu + + property string fileToDelete + + onAboutToHide: fileButton.highlight = false + + QGCMenuItem { + text: qsTr("Delete") + onTriggered: { + controller.deleteFile(hamburgerMenu.fileToDelete) + fileRepeater.model = controller.getFiles(folder, [ fileExtension ]) + } } } } diff --git a/src/QmlControls/QGCFlickable.qml b/src/QmlControls/QGCFlickable.qml index 8bf130e..3fbb869 100644 --- a/src/QmlControls/QGCFlickable.qml +++ b/src/QmlControls/QGCFlickable.qml @@ -1,14 +1,12 @@ import QtQuick 2.3 -import QGroundControl.Palette 1.0 -import QGroundControl.ScreenTools 1.0 +import QGroundControl.Palette 1.0 /// QGC version of Flickable control that shows horizontal/vertial scroll indicators Flickable { - id: root - boundsBehavior: Flickable.StopAtBounds - clip: true - maximumFlickVelocity: (ScreenTools.realPixelDensity * 25.4) * 8 // About two inches per second + id: root + boundsBehavior: Flickable.StopAtBounds + clip: true property color indicatorColor: qgcPal.text diff --git a/src/QmlControls/QGCMouseArea.qml b/src/QmlControls/QGCMouseArea.qml index 9218c5d..e1a9f2c 100644 --- a/src/QmlControls/QGCMouseArea.qml +++ b/src/QmlControls/QGCMouseArea.qml @@ -26,7 +26,7 @@ MouseArea { Rectangle { anchors.fill: parent border.color: "red" - border.width: QGroundControl.corePlugin.showTouchAreas ? 3 : 0 + border.width: QGroundControl.corePlugin.showTouchAreas ? 1 : 0 color: "transparent" } } diff --git a/src/QmlControls/QGCPipOverlay.qml b/src/QmlControls/QGCPipOverlay.qml index c8eaaa5..7308822 100644 --- a/src/QmlControls/QGCPipOverlay.qml +++ b/src/QmlControls/QGCPipOverlay.qml @@ -70,7 +70,6 @@ Item { item1.pipState.state = item1.pipState.fullState _fullItem = item1 _pipOrWindowItem = null - item1.visible = true } _setPipIsExpanded(QGroundControl.loadBoolGlobalSetting(_pipExpandedSettingsKey, true)) } diff --git a/src/QmlControls/QGCPopupDialog.qml b/src/QmlControls/QGCPopupDialog.qml index 51235f5..71c60ba 100644 --- a/src/QmlControls/QGCPopupDialog.qml +++ b/src/QmlControls/QGCPopupDialog.qml @@ -7,286 +7,43 @@ * ****************************************************************************/ -import QtQuick 2.12 -import QtQuick.Controls 2.4 -import QtQuick.Layouts 1.12 -import QtQuick.Dialogs 1.3 - -import QGroundControl 1.0 -import QGroundControl.Controls 1.0 -import QGroundControl.Palette 1.0 -import QGroundControl.ScreenTools 1.0 - -// Provides the standard dialog mechanism for QGC. Works 99% like Qml Dialog. -// -// Example usage: -// Component { -// id: dialogComponent -// -// QGCPopupDialog { -// ... -// } -// } -// -// onFoo: dialogComponent.createObject(mainWindow).open() -// -// Notes: -// * QGCPopupDialog should be created from a component to limit the memory usage of the dialog -// to only when it is displayed. -// * Parent for createObject should always be mainWindow. -// Differences from standard Qml Dialog: -// * The QGCPopupDialog object will automatically be destroyed when it closed. You can override this -// behaviour by setting destroyOnClose to false if it was not created dynamically. -// * Dialog will automatically close after accepted/rejected signal processing. You can prevent this by setting -// preventClose = true prior to returning from your signal handlers. -Popup { - id: _root - parent: Overlay.overlay - anchors.centerIn: parent - width: mainColumnLayout.width + (padding * 2) - height: mainColumnLayout.y + mainColumnLayout.height + padding - padding: 2 - modal: true - focus: true +import QtQuick 2.12 +import QtQuick.Dialogs 1.3 +Item { property string title - property var buttons: StandardButton.Ok - property bool acceptAllowed: acceptButton.visible - property bool rejectAllowed: rejectButton.visible - property alias acceptButtonEnabled: acceptButton.enabled - property alias rejectButtonEnabled: rejectButton.enabled - property var dialogProperties - property bool destroyOnClose: true - property bool preventClose: false + property var buttons: StandardButton.Ok - signal accepted - signal rejected + width: childrenRect.width + height: childrenRect.height - property var _pal: QGroundControl.globalPalette - property real _frameSize: ScreenTools.defaultFontPixelWidth - property real _contentMargin: ScreenTools.defaultFontPixelHeight / 2 - property real _popupDoubleInset: ScreenTools.defaultFontPixelHeight * 2 - property real _maxContentWidth: parent.width - _popupDoubleInset - property real _maxContentHeight: parent.height - titleRowLayout.height - _popupDoubleInset + signal hideDialog + signal enableAcceptButton + signal disableAcceptButton + signal enableRejectButton + signal disableRejectButton - background: Item { - Rectangle { - anchors.left: parent.left - anchors.top: parent.top - width: _frameSize - height: _frameSize - color: _pal.text - visible: enabled - } - - Rectangle { - anchors.right: parent.right - anchors.top: parent.top - width: _frameSize - height: _frameSize - color: _pal.text - visible: enabled - } - - Rectangle { - anchors.left: parent.left - anchors.bottom: parent.bottom - width: _frameSize - height: _frameSize - color: _pal.text - visible: enabled - } - - Rectangle { - anchors.right: parent.right - anchors.bottom: parent.bottom - width: _frameSize - height: _frameSize - color: _pal.text - visible: enabled - } - - Rectangle { - anchors.margins: _root.padding - anchors.fill: parent - color: _pal.window + Keys.onReleased: { + if (event.key === Qt.Key_Escape) { + reject() + event.accepted = true + } else if (event.key === Qt.Key_Return || event.key === Qt.Key_Enter) { + accept() + event.accepted = true } } - Component.onCompleted: { - // The last child item will be the true dialog content. - // Re-Parent it to the right place in the ui hierarchy. - contentChildren[contentChildren.length - 1].parent = dialogContentParent - } - - onAboutToShow: setupDialogButtons(buttons) - onClosed: { - Qt.inputMethod.hide() - if (destroyOnClose) { - _root.destroy() - } - } - - function _accept() { + function accept() { if (acceptAllowed) { - accepted() - if (preventClose) { - preventClose = false - } else { - close() - } + Qt.inputMethod.hide() + hideDialog() } } - function _reject() { + function reject() { if (rejectAllowed) { - rejected() - if (preventClose) { - preventClose = false - } else { - close() - } - } - } - - QGCPalette { id: qgcPal; colorGroupEnabled: parent.enabled } - - function setupDialogButtons(buttons) { - acceptButton.visible = false - rejectButton.visible = false - // Accept role buttons - if (buttons & StandardButton.Ok) { - acceptButton.text = qsTr("Ok") - acceptButton.visible = true - } else if (buttons & StandardButton.Open) { - acceptButton.text = qsTr("Open") - acceptButton.visible = true - } else if (buttons & StandardButton.Save) { - acceptButton.text = qsTr("Save") - acceptButton.visible = true - } else if (buttons & StandardButton.Apply) { - acceptButton.text = qsTr("Apply") - acceptButton.visible = true - } else if (buttons & StandardButton.Open) { - acceptButton.text = qsTr("Open") - acceptButton.visible = true - } else if (buttons & StandardButton.SaveAll) { - acceptButton.text = qsTr("Save All") - acceptButton.visible = true - } else if (buttons & StandardButton.Yes) { - acceptButton.text = qsTr("Yes") - acceptButton.visible = true - } else if (buttons & StandardButton.YesToAll) { - acceptButton.text = qsTr("Yes to All") - acceptButton.visible = true - } else if (buttons & StandardButton.Retry) { - acceptButton.text = qsTr("Retry") - acceptButton.visible = true - } else if (buttons & StandardButton.Reset) { - acceptButton.text = qsTr("Reset") - acceptButton.visible = true - } else if (buttons & StandardButton.RestoreToDefaults) { - acceptButton.text = qsTr("Restore to Defaults") - acceptButton.visible = true - } else if (buttons & StandardButton.Ignore) { - acceptButton.text = qsTr("Ignore") - acceptButton.visible = true - } - - // Reject role buttons - if (buttons & StandardButton.Cancel) { - rejectButton.text = qsTr("Cancel") - rejectButton.visible = true - } else if (buttons & StandardButton.Close) { - rejectButton.text = qsTr("Close") - rejectButton.visible = true - } else if (buttons & StandardButton.No) { - rejectButton.text = qsTr("No") - rejectButton.visible = true - } else if (buttons & StandardButton.NoToAll) { - rejectButton.text = qsTr("No to All") - rejectButton.visible = true - } else if (buttons & StandardButton.Abort) { - rejectButton.text = qsTr("Abort") - rejectButton.visible = true - } - - if (rejectButton.visible) { - closePolicy = Popup.NoAutoClose | Popup.CloseOnEscape - } else { - closePolicy = Popup.NoAutoClose - } - } - - function disableAcceptButton() { - acceptButton.enabled = false - } - - Rectangle { - width: titleRowLayout.width - height: titleRowLayout.height - color: qgcPal.windowShade - } - - ColumnLayout { - id: mainColumnLayout - spacing: _contentMargin - - RowLayout { - id: titleRowLayout - Layout.fillWidth: true - - QGCLabel { - Layout.leftMargin: ScreenTools.defaultFontPixelWidth - Layout.fillWidth: true - text: _root.title - font.pointSize: ScreenTools.mediumFontPointSize - verticalAlignment: Text.AlignVCenter - } - - QGCButton { - id: rejectButton - onClicked: _reject() - } - - QGCButton { - id: acceptButton - primary: true - onClicked: _accept() - } - } - - QGCFlickable { - id: mainFlickable - Layout.preferredWidth: Math.min(Math.max(marginItem.width, mainColumnLayout.width), _maxContentWidth) - Layout.preferredHeight: Math.min(marginItem.height, _maxContentHeight) - contentWidth: marginItem.width - contentHeight: marginItem.height - - Item { - id: marginItem - width: dialogContentParent.width + (_contentMargin * 2) - height: dialogContentParent.height + _contentMargin - - Item { - id: dialogContentParent - x: _contentMargin - width: childrenRect.width - height: childrenRect.height - focus: true - - Keys.onReleased: { - if (event.key === Qt.Key_Escape) { - _reject() - event.accepted = true - } else if (event.key === Qt.Key_Return || event.key === Qt.Key_Enter) { - _accept() - event.accepted = true - } - } - - } - } + Qt.inputMethod.hide() + hideDialog() } } } diff --git a/src/QmlControls/QGCPopupDialogContainer.qml b/src/QmlControls/QGCPopupDialogContainer.qml new file mode 100644 index 0000000..7e2281f --- /dev/null +++ b/src/QmlControls/QGCPopupDialogContainer.qml @@ -0,0 +1,232 @@ +/**************************************************************************** + * + * (c) 2009-2020 QGROUNDCONTROL PROJECT + * + * QGroundControl is licensed according to the terms in the file + * COPYING.md in the root of the source code directory. + * + ****************************************************************************/ + +import QtQuick 2.12 +import QtQuick.Controls 2.4 +import QtQuick.Layouts 1.12 +import QtQuick.Dialogs 1.3 + +import QGroundControl 1.0 +import QGroundControl.Controls 1.0 +import QGroundControl.Palette 1.0 +import QGroundControl.ScreenTools 1.0 + +Popup { + property var dialogComponent + property string dialogSource + property var dialogProperties + + id: _root + anchors.centerIn: parent + width: mainColumnLayout.width + (padding * 2) + height: mainColumnLayout.y + mainColumnLayout.height + padding + padding: 2 + modal: true + focus: true + + property var _pal: QGroundControl.globalPalette + property real _frameSize: ScreenTools.defaultFontPixelWidth + property string _dialogTitle + property real _contentMargin: ScreenTools.defaultFontPixelHeight / 2 + property real _popupDoubleInset: ScreenTools.defaultFontPixelHeight * 2 + property real _maxContentWidth: parent.width - _popupDoubleInset + property real _maxContentHeight: parent.height - titleRowLayout.height - _popupDoubleInset + + background: Item { + Rectangle { + anchors.left: parent.left + anchors.top: parent.top + width: _frameSize + height: _frameSize + color: _pal.text + visible: enabled + } + + Rectangle { + anchors.right: parent.right + anchors.top: parent.top + width: _frameSize + height: _frameSize + color: _pal.text + visible: enabled + } + + Rectangle { + anchors.left: parent.left + anchors.bottom: parent.bottom + width: _frameSize + height: _frameSize + color: _pal.text + visible: enabled + } + + Rectangle { + anchors.right: parent.right + anchors.bottom: parent.bottom + width: _frameSize + height: _frameSize + color: _pal.text + visible: enabled + } + + Rectangle { + anchors.margins: _root.padding + anchors.fill: parent + color: _pal.window + } + } + + Component.onCompleted: { + _dialogTitle = dialogComponentLoader.item.title + setupDialogButtons(dialogComponentLoader.item.buttons) + } + + QGCPalette { id: qgcPal; colorGroupEnabled: parent.enabled } + + function setupDialogButtons(buttons) { + acceptButton.visible = false + rejectButton.visible = false + // Accept role buttons + if (buttons & StandardButton.Ok) { + acceptButton.text = qsTr("Ok") + acceptButton.visible = true + } else if (buttons & StandardButton.Open) { + acceptButton.text = qsTr("Open") + acceptButton.visible = true + } else if (buttons & StandardButton.Save) { + acceptButton.text = qsTr("Save") + acceptButton.visible = true + } else if (buttons & StandardButton.Apply) { + acceptButton.text = qsTr("Apply") + acceptButton.visible = true + } else if (buttons & StandardButton.Open) { + acceptButton.text = qsTr("Open") + acceptButton.visible = true + } else if (buttons & StandardButton.SaveAll) { + acceptButton.text = qsTr("Save All") + acceptButton.visible = true + } else if (buttons & StandardButton.Yes) { + acceptButton.text = qsTr("Yes") + acceptButton.visible = true + } else if (buttons & StandardButton.YesToAll) { + acceptButton.text = qsTr("Yes to All") + acceptButton.visible = true + } else if (buttons & StandardButton.Retry) { + acceptButton.text = qsTr("Retry") + acceptButton.visible = true + } else if (buttons & StandardButton.Reset) { + acceptButton.text = qsTr("Reset") + acceptButton.visible = true + } else if (buttons & StandardButton.RestoreToDefaults) { + acceptButton.text = qsTr("Restore to Defaults") + acceptButton.visible = true + } else if (buttons & StandardButton.Ignore) { + acceptButton.text = qsTr("Ignore") + acceptButton.visible = true + } + + // Reject role buttons + if (buttons & StandardButton.Cancel) { + rejectButton.text = qsTr("Cancel") + rejectButton.visible = true + } else if (buttons & StandardButton.Close) { + rejectButton.text = qsTr("Close") + rejectButton.visible = true + } else if (buttons & StandardButton.No) { + rejectButton.text = qsTr("No") + rejectButton.visible = true + } else if (buttons & StandardButton.NoToAll) { + rejectButton.text = qsTr("No to All") + rejectButton.visible = true + } else if (buttons & StandardButton.Abort) { + rejectButton.text = qsTr("Abort") + rejectButton.visible = true + } + + if (rejectButton.visible) { + closePolicy = Popup.NoAutoClose | Popup.CloseOnEscape + } else { + closePolicy = Popup.NoAutoClose + } + } + + function disableAcceptButton() { + acceptButton.enabled = false + } + + Connections { + target: dialogComponentLoader.item + onHideDialog: close() + onEnableAcceptButton: acceptButton.enabled = true + onEnableRejectButton: rejectButton.enabled = true + onDisableAcceptButton: acceptButton.enabled = false + onDisableRejectButton: rejectButton.enabled = false + } + + Rectangle { + width: titleRowLayout.width + height: titleRowLayout.height + color: qgcPal.windowShade + } + + ColumnLayout { + id: mainColumnLayout + spacing: _contentMargin + + RowLayout { + id: titleRowLayout + Layout.fillWidth: true + + QGCLabel { + Layout.leftMargin: ScreenTools.defaultFontPixelWidth + Layout.fillWidth: true + text: _dialogTitle + font.pointSize: ScreenTools.mediumFontPointSize + verticalAlignment: Text.AlignVCenter + } + + QGCButton { + id: rejectButton + onClicked: dialogComponentLoader.item.reject() + } + + QGCButton { + id: acceptButton + primary: true + onClicked: dialogComponentLoader.item.accept() + } + } + + QGCFlickable { + id: mainFlickable + Layout.preferredWidth: Math.min(marginItem.width, _maxContentWidth) + Layout.preferredHeight: Math.min(marginItem.height, _maxContentHeight) + contentWidth: marginItem.width + contentHeight: marginItem.height + + Item { + id: marginItem + width: dialogComponentLoader.width + (_contentMargin * 2) + height: dialogComponentLoader.height + _contentMargin + + Loader { + id: dialogComponentLoader + x: _contentMargin + source: dialogSource + sourceComponent: dialogComponent + focus: true + + property var dialogProperties: _root.dialogProperties + property bool acceptAllowed: acceptButton.visible + property bool rejectAllowed: rejectButton.visible + } + } + } + } +} diff --git a/src/QmlControls/QGCSimpleMessageDialog.qml b/src/QmlControls/QGCSimpleMessageDialog.qml deleted file mode 100644 index 460dc32..0000000 --- a/src/QmlControls/QGCSimpleMessageDialog.qml +++ /dev/null @@ -1,33 +0,0 @@ -/**************************************************************************** - * - * (c) 2009-2020 QGROUNDCONTROL PROJECT - * - * QGroundControl is licensed according to the terms in the file - * COPYING.md in the root of the source code directory. - * - ****************************************************************************/ - -import QtQuick 2.15 -import QtQuick.Layouts 1.15 - -import QGroundControl.Controls 1.0 -import QGroundControl.ScreenTools 1.0 - -QGCPopupDialog { - property alias text: label.text - property var acceptFunction: null // Mainly used by MainRootWindow.showMessage to specify accept function in call - - onAccepted: { - if (acceptFunction) { - acceptFunction() - } - } - - ColumnLayout { - QGCLabel { - id: label - Layout.maximumWidth: mainWindow.width / (ScreenTools.isMobile ? 2 : 3) - wrapMode: Text.WordWrap - } - } -} diff --git a/src/QmlControls/QGCTextField.qml b/src/QmlControls/QGCTextField.qml index 89934a1..317ffd8 100644 --- a/src/QmlControls/QGCTextField.qml +++ b/src/QmlControls/QGCTextField.qml @@ -12,15 +12,11 @@ TextField { implicitHeight: ScreenTools.implicitTextFieldHeight activeFocusOnPress: true antialiasing: true - inputMethodHints: numericValuesOnly && !ScreenTools.isiOS ? - Qt.ImhFormattedNumbersOnly: // Forces use of virtual numeric keyboard instead of full keyboard - Qt.ImhNone // iOS numeric keyboard has no done button, we can't use it. property bool showUnits: false property bool showHelp: false property string unitsLabel: "" property string extraUnitsLabel: "" - property bool numericValuesOnly: false // true: Used as hint for mobile devices to show numeric only keyboard signal helpClicked diff --git a/src/QmlControls/QGCToolBarButton.qml b/src/QmlControls/QGCToolBarButton.qml index c7903be..16380a9 100644 --- a/src/QmlControls/QGCToolBarButton.qml +++ b/src/QmlControls/QGCToolBarButton.qml @@ -10,7 +10,6 @@ import QtQuick 2.3 import QtQuick.Controls 2.4 -import QGroundControl 1.0 import QGroundControl.Controls 1.0 import QGroundControl.Palette 1.0 import QGroundControl.ScreenTools 1.0 @@ -32,10 +31,8 @@ Button { onCheckedChanged: checkable = false background: Rectangle { - anchors.fill: parent - color: button.checked ? qgcPal.buttonHighlight : Qt.rgba(0,0,0,0) - border.color: "red" - border.width: QGroundControl.corePlugin.showTouchAreas ? 3 : 0 + anchors.fill: parent + color: button.checked ? qgcPal.buttonHighlight : Qt.rgba(0,0,0,0) } contentItem: Row { diff --git a/src/QmlControls/QGCViewDialog.qml b/src/QmlControls/QGCViewDialog.qml new file mode 100644 index 0000000..b2878aa --- /dev/null +++ b/src/QmlControls/QGCViewDialog.qml @@ -0,0 +1,46 @@ +/**************************************************************************** + * + * (c) 2009-2020 QGROUNDCONTROL PROJECT + * + * QGroundControl is licensed according to the terms in the file + * COPYING.md in the root of the source code directory. + * + ****************************************************************************/ + +import QtQuick 2.3 +import QtQuick.Controls 1.2 +import QtQuick.Dialogs 1.3 + +import QGroundControl.Controls 1.0 +import QGroundControl.Palette 1.0 +import QGroundControl.FactSystem 1.0 +import QGroundControl.FactControls 1.0 +import QGroundControl.ScreenTools 1.0 + +Item { + property var buttons: StandardButton.NoButton + + signal hideDialog + + Keys.onReleased: { + if (event.key === Qt.Key_Escape) { + reject() + event.accepted = true + } else if (event.key === Qt.Key_Return || event.key === Qt.Key_Enter) { + accept() + event.accepted = true + } + } + + function accept() { + if (acceptAllowed) { + hideDialog() + } + } + + function reject() { + if (rejectAllowed) { + hideDialog() + } + } +} diff --git a/src/QmlControls/QGCViewDialogContainer.qml b/src/QmlControls/QGCViewDialogContainer.qml new file mode 100644 index 0000000..7b64d44 --- /dev/null +++ b/src/QmlControls/QGCViewDialogContainer.qml @@ -0,0 +1,177 @@ +/**************************************************************************** + * + * (c) 2009-2020 QGROUNDCONTROL PROJECT + * + * QGroundControl is licensed according to the terms in the file + * COPYING.md in the root of the source code directory. + * + ****************************************************************************/ + +import QtQuick 2.11 +import QtQuick.Controls 2.4 +import QtQuick.Dialogs 1.3 + +import QGroundControl.Controls 1.0 +import QGroundControl.Palette 1.0 +import QGroundControl.ScreenTools 1.0 + +Drawer { + edge: Qt.RightEdge + interactive: false + + property var dialogComponent + property string dialogTitle + property var dialogButtons: StandardButton.NoButton + + property real _defaultTextHeight: _textMeasure.contentHeight + property real _defaultTextWidth: _textMeasure.contentWidth + + function setupDialogButtons(buttons) { + _acceptButton.visible = false + _rejectButton.visible = false + // Accept role buttons + if (buttons & StandardButton.Ok) { + _acceptButton.text = qsTr("Ok") + _acceptButton.visible = true + } else if (buttons & StandardButton.Open) { + _acceptButton.text = qsTr("Open") + _acceptButton.visible = true + } else if (buttons & StandardButton.Save) { + _acceptButton.text = qsTr("Save") + _acceptButton.visible = true + } else if (buttons & StandardButton.Apply) { + _acceptButton.text = qsTr("Apply") + _acceptButton.visible = true + } else if (buttons & StandardButton.Open) { + _acceptButton.text = qsTr("Open") + _acceptButton.visible = true + } else if (buttons & StandardButton.SaveAll) { + _acceptButton.text = qsTr("Save All") + _acceptButton.visible = true + } else if (buttons & StandardButton.Yes) { + _acceptButton.text = qsTr("Yes") + _acceptButton.visible = true + } else if (buttons & StandardButton.YesToAll) { + _acceptButton.text = qsTr("Yes to All") + _acceptButton.visible = true + } else if (buttons & StandardButton.Retry) { + _acceptButton.text = qsTr("Retry") + _acceptButton.visible = true + } else if (buttons & StandardButton.Reset) { + _acceptButton.text = qsTr("Reset") + _acceptButton.visible = true + } else if (buttons & StandardButton.RestoreToDefaults) { + _acceptButton.text = qsTr("Restore to Defaults") + _acceptButton.visible = true + } else if (buttons & StandardButton.Ignore) { + _acceptButton.text = qsTr("Ignore") + _acceptButton.visible = true + } + + // Reject role buttons + if (buttons & StandardButton.Cancel) { + _rejectButton.text = qsTr("Cancel") + _rejectButton.visible = true + } else if (buttons & StandardButton.Close) { + _rejectButton.text = qsTr("Close") + _rejectButton.visible = true + } else if (buttons & StandardButton.No) { + _rejectButton.text = qsTr("No") + _rejectButton.visible = true + } else if (buttons & StandardButton.NoToAll) { + _rejectButton.text = qsTr("No to All") + _rejectButton.visible = true + } else if (buttons & StandardButton.Abort) { + _rejectButton.text = qsTr("Abort") + _rejectButton.visible = true + } + + if (buttons & StandardButton.Cancel || buttons & StandardButton.Close || buttons & StandardButton.Discard || buttons & StandardButton.Abort || buttons & StandardButton.Ignore) { + closePolicy = Popup.NoAutoClose; + interactive = false; + } else { + closePolicy = Popup.CloseOnEscape | Popup.CloseOnPressOutside; + interactive = true; + } + } + + Connections { + target: _dialogComponentLoader.item + onHideDialog: { + Qt.inputMethod.hide() + close() + } + } + + Connections { + target: toolDrawer + onVisibleChanged: { + if(toolDrawer.visible === true) { + // Do nothing + return + } + else { + // Close DialogContainer + Qt.inputMethod.hide() + close() + } + } + } + + Component.onCompleted: setupDialogButtons(dialogButtons) + + QGCLabel { id: _textMeasure; text: "X"; visible: false } + + background: Rectangle { + color: qgcPal.windowShadeDark + } + + // This is the main dialog panel + Item { + id: _dialogPanel + anchors.fill: parent + Rectangle { + id: _header + width: parent.width + height: _acceptButton.visible ? _acceptButton.height : _rejectButton.height + color: qgcPal.windowShade + QGCLabel { + x: _defaultTextWidth + text: dialogTitle + height: parent.height + verticalAlignment: Text.AlignVCenter + } + QGCButton { + id: _rejectButton + anchors.right: _acceptButton.visible ? _acceptButton.left : parent.right + anchors.bottom: parent.bottom + onClicked: _dialogComponentLoader.item.reject() + } + QGCButton { + id: _acceptButton + anchors.right: parent.right + anchors.bottom: parent.bottom + primary: true + onClicked: _dialogComponentLoader.item.accept() + } + } + Item { + id: _spacer + width: 10 + height: 10 + anchors.top: _header.bottom + } + Loader { + id: _dialogComponentLoader + anchors.margins: 5 + anchors.left: parent.left + anchors.right: parent.right + anchors.top: _spacer.bottom + anchors.bottom: parent.bottom + sourceComponent: dialogComponent + focus: true + property bool acceptAllowed: _acceptButton.visible + property bool rejectAllowed: _rejectButton.visible + } + } +} diff --git a/src/QmlControls/QGCViewMessage.qml b/src/QmlControls/QGCViewMessage.qml new file mode 100644 index 0000000..9e1f69d --- /dev/null +++ b/src/QmlControls/QGCViewMessage.qml @@ -0,0 +1,35 @@ +/**************************************************************************** + * + * (c) 2009-2020 QGROUNDCONTROL PROJECT + * + * QGroundControl is licensed according to the terms in the file + * COPYING.md in the root of the source code directory. + * + ****************************************************************************/ + + +/// @file +/// @author Don Gagne + +import QtQuick 2.3 +import QtQuick.Controls 1.2 + +import QGroundControl.Controls 1.0 +import QGroundControl.Palette 1.0 + +QGCViewDialog { + property string message + + QGCFlickable { + anchors.fill: parent + contentHeight: label.contentHeight + + QGCLabel { + id: label + anchors.left: parent.left + anchors.right: parent.right + wrapMode: Text.WordWrap + text: message + } + } +} diff --git a/src/QmlControls/QGroundControl/Airmap/qmldir b/src/QmlControls/QGroundControl/Airmap/qmldir new file mode 100644 index 0000000..b125667 --- /dev/null +++ b/src/QmlControls/QGroundControl/Airmap/qmldir @@ -0,0 +1,10 @@ +Module QGroundControl.Airmap + +AirspaceControl 1.0 AirspaceControl.qml +AirspaceRegulation 1.0 AirspaceRegulation.qml +AirspaceWeather 1.0 AirspaceWeather.qml +ComplianceRules 1.0 ComplianceRules.qml +FlightFeature 1.0 FlightFeature.qml +RuleSelector 1.0 RuleSelector.qml +FlightBrief 1.0 FlightBrief.qml +FlightDetails 1.0 FlightDetails.qml \ No newline at end of file diff --git a/src/QmlControls/QGroundControl/Controls/qmldir b/src/QmlControls/QGroundControl/Controls/qmldir index 0ac432d..557be24 100644 --- a/src/QmlControls/QGroundControl/Controls/qmldir +++ b/src/QmlControls/QGroundControl/Controls/qmldir @@ -33,7 +33,6 @@ JoystickThumbPad 1.0 JoystickThumbPad.qml KMLOrSHPFileDialog 1.0 KMLOrSHPFileDialog.qml LogReplayStatusBar 1.0 LogReplayStatusBar.qml MainStatusIndicator 1.0 MainStatusIndicator.qml -FlightModeMenuIndicator 1.0 FlightModeMenuIndicator.qml MainToolBar 1.0 MainToolBar.qml MainWindowSavedState 1.0 MainWindowSavedState.qml MAVLinkMessageButton 1.0 MAVLinkMessageButton.qml @@ -42,7 +41,6 @@ MissionItemEditor 1.0 MissionItemEditor.qml MissionItemIndexLabel 1.0 MissionItemIndexLabel.qml MissionItemMapVisual 1.0 MissionItemMapVisual.qml MissionItemStatus 1.0 MissionItemStatus.qml -MockLinkOptionsDlg 1.0 MockLinkOptionsDlg.qml ModeSwitchDisplay 1.0 ModeSwitchDisplay.qml MultiRotorMotorDisplay 1.0 MultiRotorMotorDisplay.qml OfflineMapButton 1.0 OfflineMapButton.qml @@ -55,7 +53,6 @@ PreFlightCheckButton 1.0 PreFlightCheckButton.qml PreFlightCheckGroup 1.0 PreFlightCheckGroup.qml PreFlightCheckModel 1.0 PreFlightCheckModel.qml QGCButton 1.0 QGCButton.qml -QGCColumnButton 1.0 QGCColumnButton.qml AutotuneUI 1.0 AutotuneUI.qml QGCCheckBox 1.0 QGCCheckBox.qml QGCColoredImage 1.0 QGCColoredImage.qml @@ -80,8 +77,8 @@ QGCOptionsComboBox 1.0 QGCOptionsComboBox.qml QGCPipOverlay 1.0 QGCPipOverlay.qml QGCPipState 1.0 QGCPipState.qml QGCPopupDialog 1.0 QGCPopupDialog.qml +QGCPopupDialogContainer 1.0 QGCPopupDialogContainer.qml QGCRadioButton 1.0 QGCRadioButton.qml -QGCSimpleMessageDialog 1.0 QGCSimpleMessageDialog.qml QGCSlider 1.0 QGCSlider.qml QGCSwitch 1.0 QGCSwitch.qml QGCTabBar 1.0 QGCTabBar.qml @@ -89,6 +86,9 @@ QGCTabButton 1.0 QGCTabButton.qml QGCTextField 1.0 QGCTextField.qml QGCToolBarButton 1.0 QGCToolBarButton.qml QGCToolInsets 1.0 QGCToolInsets.qml +QGCViewDialog 1.0 QGCViewDialog.qml +QGCViewDialogContainer 1.0 QGCViewDialogContainer.qml +QGCViewMessage 1.0 QGCViewMessage.qml RallyPointEditorHeader 1.0 RallyPointEditorHeader.qml RallyPointItemEditor 1.0 RallyPointItemEditor.qml RallyPointMapVisuals 1.0 RallyPointMapVisuals.qml diff --git a/src/QmlControls/QGroundControl/FlightDisplay/qmldir b/src/QmlControls/QGroundControl/FlightDisplay/qmldir index f27005c..f44dd8c 100644 --- a/src/QmlControls/QGroundControl/FlightDisplay/qmldir +++ b/src/QmlControls/QGroundControl/FlightDisplay/qmldir @@ -1,6 +1,7 @@ Module QGroundControl.FlightDisplay FlightDisplayViewWidgets 1.0 FlightDisplayViewWidgets.qml +FlyViewAirspaceIndicator 1.0 FlyViewAirspaceIndicator.qml FlyView 1.0 FlyView.qml FlyViewCustomLayer 1.0 FlyViewCustomLayer.qml FlyViewInstrumentPanel 1.0 FlyViewInstrumentPanel.qml @@ -11,7 +12,6 @@ FlyViewToolStrip 1.0 FlyViewToolStrip.qml FlyViewToolStripActionList 1.0 FlyViewToolStripActionList.qml FlyViewVideo 1.0 FlyViewVideo.qml FlyViewWidgetLayer 1.0 FlyViewWidgetLayer.qml -FlyViewInsetViewer 1.0 FlyViewInsetViewer.qml GuidedActionActionList 1.0 GuidedActionActionList.qml GuidedActionConfirm 1.0 GuidedActionConfirm.qml GuidedActionsController 1.0 GuidedActionsController.qml @@ -19,9 +19,8 @@ GuidedActionLand 1.0 GuidedActionLand.qml GuidedActionList 1.0 GuidedActionList.qml GuidedActionPause 1.0 GuidedActionPause.qml GuidedActionRTL 1.0 GuidedActionRTL.qml -GuidedValueSlider 1.0 GuidedValueSlider.qml +GuidedAltitudeSlider 1.0 GuidedAltitudeSlider.qml GuidedActionTakeoff 1.0 GuidedActionTakeoff.qml -GuidedActionGripper 1.0 GuidedActionGripper.qml GuidedToolStripAction 1.0 GuidedToolStripAction.qml MultiVehicleList 1.0 MultiVehicleList.qml PreFlightBatteryCheck 1.0 PreFlightBatteryCheck.qml @@ -37,4 +36,3 @@ VehicleWarnings 1.0 VehicleWarnings.qml ObstacleDistanceOverlay 1.0 ObstacleDistanceOverlay.qml ObstacleDistanceOverlayMap 1.0 ObstacleDistanceOverlayMap.qml ObstacleDistanceOverlayVideo 1.0 ObstacleDistanceOverlayVideo.qml -GripperMenu 1.0 GripperMenu.qml diff --git a/src/QmlControls/QGroundControlQmlGlobal.cc b/src/QmlControls/QGroundControlQmlGlobal.cc index 2a32c71..fb2019c 100644 --- a/src/QmlControls/QGroundControlQmlGlobal.cc +++ b/src/QmlControls/QGroundControlQmlGlobal.cc @@ -36,26 +36,6 @@ QGroundControlQmlGlobal::QGroundControlQmlGlobal(QGCApplication* app, QGCToolbox _coord.setLatitude(settings.value(_flightMapPositionLatitudeSettingsKey, _coord.latitude()).toDouble()); _coord.setLongitude(settings.value(_flightMapPositionLongitudeSettingsKey, _coord.longitude()).toDouble()); _zoom = settings.value(_flightMapZoomSettingsKey, _zoom).toDouble(); - _flightMapPositionSettledTimer.setSingleShot(true); - _flightMapPositionSettledTimer.setInterval(1000); - connect(&_flightMapPositionSettledTimer, &QTimer::timeout, [](){ - // When they settle, save flightMapPosition and Zoom to the config file - QSettings settings; - settings.beginGroup(_flightMapPositionSettingsGroup); - settings.setValue(_flightMapPositionLatitudeSettingsKey, _coord.latitude()); - settings.setValue(_flightMapPositionLongitudeSettingsKey, _coord.longitude()); - settings.setValue(_flightMapZoomSettingsKey, _zoom); - }); - connect(this, &QGroundControlQmlGlobal::flightMapPositionChanged, this, [this](QGeoCoordinate){ - if (!_flightMapPositionSettledTimer.isActive()) { - _flightMapPositionSettledTimer.start(); - } - }); - connect(this, &QGroundControlQmlGlobal::flightMapZoomChanged, this, [this](double){ - if (!_flightMapPositionSettledTimer.isActive()) { - _flightMapPositionSettledTimer.start(); - } - }); } QGroundControlQmlGlobal::~QGroundControlQmlGlobal() @@ -77,6 +57,7 @@ void QGroundControlQmlGlobal::setToolbox(QGCToolbox* toolbox) _firmwarePluginManager = toolbox->firmwarePluginManager(); _settingsManager = toolbox->settingsManager(); _gpsRtkFactGroup = qgcApp()->gpsRtkFactGroup(); + _airspaceManager = toolbox->airspaceManager(); _adsbVehicleManager = toolbox->adsbVehicleManager(); _globalPalette = new QGCPalette(this); #if defined(QGC_ENABLE_PAIRING) @@ -247,6 +228,10 @@ void QGroundControlQmlGlobal::setFlightMapPosition(QGeoCoordinate& coordinate) if (coordinate != flightMapPosition()) { _coord.setLatitude(coordinate.latitude()); _coord.setLongitude(coordinate.longitude()); + QSettings settings; + settings.beginGroup(_flightMapPositionSettingsGroup); + settings.setValue(_flightMapPositionLatitudeSettingsKey, _coord.latitude()); + settings.setValue(_flightMapPositionLongitudeSettingsKey, _coord.longitude()); emit flightMapPositionChanged(coordinate); } } @@ -255,6 +240,9 @@ void QGroundControlQmlGlobal::setFlightMapZoom(double zoom) { if (zoom != flightMapZoom()) { _zoom = zoom; + QSettings settings; + settings.beginGroup(_flightMapPositionSettingsGroup); + settings.setValue(_flightMapZoomSettingsKey, _zoom); emit flightMapZoomChanged(zoom); } } diff --git a/src/QmlControls/QGroundControlQmlGlobal.h b/src/QmlControls/QGroundControlQmlGlobal.h index 1a54275..0961bab 100644 --- a/src/QmlControls/QGroundControlQmlGlobal.h +++ b/src/QmlControls/QGroundControlQmlGlobal.h @@ -15,6 +15,7 @@ #include "SimulatedPosition.h" #include "QGCLoggingCategory.h" #include "AppSettings.h" +#include "AirspaceManager.h" #include "ADSBVehicleManager.h" #include "QGCPalette.h" #include "QmlUnitsConversion.h" @@ -65,10 +66,12 @@ public: Q_PROPERTY(VideoManager* videoManager READ videoManager CONSTANT) Q_PROPERTY(MAVLinkLogManager* mavlinkLogManager READ mavlinkLogManager CONSTANT) Q_PROPERTY(SettingsManager* settingsManager READ settingsManager CONSTANT) + Q_PROPERTY(AirspaceManager* airspaceManager READ airspaceManager CONSTANT) Q_PROPERTY(ADSBVehicleManager* adsbVehicleManager READ adsbVehicleManager CONSTANT) Q_PROPERTY(QGCCorePlugin* corePlugin READ corePlugin CONSTANT) Q_PROPERTY(MissionCommandTree* missionCommandTree READ missionCommandTree CONSTANT) Q_PROPERTY(FactGroup* gpsRtk READ gpsRtkFactGroup CONSTANT) + Q_PROPERTY(bool airmapSupported READ airmapSupported CONSTANT) Q_PROPERTY(TaisyncManager* taisyncManager READ taisyncManager CONSTANT) Q_PROPERTY(bool taisyncSupported READ taisyncSupported CONSTANT) Q_PROPERTY(MicrohardManager* microhardManager READ microhardManager CONSTANT) @@ -106,12 +109,6 @@ public: Q_PROPERTY(bool hasMAVLinkInspector READ hasMAVLinkInspector CONSTANT) - //------------------------------------------------------------------------- - // Elevation Provider - Q_PROPERTY(QString elevationProviderName READ elevationProviderName CONSTANT) - Q_PROPERTY(QString elevationProviderNotice READ elevationProviderNotice CONSTANT) - - #if defined(QGC_ENABLE_PAIRING) Q_PROPERTY(PairingManager* pairingManager READ pairingManager CONSTANT) #endif @@ -162,6 +159,7 @@ public: QGCCorePlugin* corePlugin () { return _corePlugin; } SettingsManager* settingsManager () { return _settingsManager; } FactGroup* gpsRtkFactGroup () { return _gpsRtkFactGroup; } + AirspaceManager* airspaceManager () { return _airspaceManager; } ADSBVehicleManager* adsbVehicleManager () { return _adsbVehicleManager; } QmlUnitsConversion* unitsConversion () { return &_unitsConversion; } #if defined(QGC_ENABLE_PAIRING) @@ -209,9 +207,6 @@ public: bool hasMAVLinkInspector () { return true; } #endif - QString elevationProviderName () { return UrlFactory::kCopernicusElevationProviderKey; } - QString elevationProviderNotice () { return UrlFactory::kCopernicusElevationProviderNotice; } - bool singleFirmwareSupport (); bool singleVehicleSupport (); bool px4ProFirmwareSupported (); @@ -230,6 +225,12 @@ public: QString qgcVersion (void) const; +#if defined(QGC_AIRMAP_ENABLED) + bool airmapSupported() { return true; } +#else + bool airmapSupported() { return false; } +#endif + // Overrides from QGCTool virtual void setToolbox(QGCToolbox* toolbox); @@ -254,6 +255,7 @@ private: FirmwarePluginManager* _firmwarePluginManager = nullptr; SettingsManager* _settingsManager = nullptr; FactGroup* _gpsRtkFactGroup = nullptr; + AirspaceManager* _airspaceManager = nullptr; TaisyncManager* _taisyncManager = nullptr; MicrohardManager* _microhardManager = nullptr; ADSBVehicleManager* _adsbVehicleManager = nullptr; @@ -273,5 +275,4 @@ private: static QGeoCoordinate _coord; static double _zoom; - QTimer _flightMapPositionSettledTimer; }; diff --git a/src/QmlControls/QmlObjectListModel.cc b/src/QmlControls/QmlObjectListModel.cc index fc9eff0..a9222c6 100644 --- a/src/QmlControls/QmlObjectListModel.cc +++ b/src/QmlControls/QmlObjectListModel.cc @@ -220,9 +220,9 @@ void QmlObjectListModel::insert(int i, QList objects) QObject::connect(object, SIGNAL(dirtyChanged(bool)), this, SLOT(_childDirtyChanged(bool))); } } + j++; _objectList.insert(j, object); - j++; } insertRows(i, objects.count()); diff --git a/src/QmlControls/QmlUnitsConversion.h b/src/QmlControls/QmlUnitsConversion.h index 769018f..267503d 100644 --- a/src/QmlControls/QmlUnitsConversion.h +++ b/src/QmlControls/QmlUnitsConversion.h @@ -59,12 +59,6 @@ public: QString appSettingsAreaUnitsString(void) const { return FactMetaData::appSettingsAreaUnitsString(); } - /// Converts from meters/second to the user specified speed unit - Q_INVOKABLE QVariant metersSecondToAppSettingsSpeedUnits(const QVariant& metersSecond) const { return FactMetaData::metersSecondToAppSettingsSpeedUnits(metersSecond); } - - /// Converts from user specified speed unit to meters/second - Q_INVOKABLE QVariant appSettingsSpeedUnitsToMetersSecond(const QVariant& speed) const { return FactMetaData::appSettingsSpeedUnitsToMetersSecond(speed); } - /// Returns the string for speed units which has configued by user QString appSettingsSpeedUnitsString() { return FactMetaData::appSettingsSpeedUnitsString(); } diff --git a/src/QmlControls/RCToParamDialog.qml b/src/QmlControls/RCToParamDialog.qml index 0e833c5..f7d6a18 100644 --- a/src/QmlControls/RCToParamDialog.qml +++ b/src/QmlControls/RCToParamDialog.qml @@ -20,12 +20,15 @@ import QGroundControl.FactControls 1.0 import QGroundControl.Controllers 1.0 QGCPopupDialog { + property alias tuningFact: controller.tuningFact + title: qsTr("RC To Param") buttons: StandardButton.Cancel | StandardButton.Ok - property alias tuningFact: controller.tuningFact - - onAccepted: QGroundControl.multiVehicleManager.activeVehicle.sendParamMapRC(tuningFact.name, scale.text, centerValue.text, tuningID.currentIndex, minValue.text, maxValue.text) + function accept() { + QGroundControl.multiVehicleManager.activeVehicle.sendParamMapRC(tuningFact.name, scale.text, centerValue.text, tuningID.currentIndex, minValue.text, maxValue.text); + hideDialog() + } RCToParamDialogController { id: controller diff --git a/src/QmlControls/SliderSwitch.qml b/src/QmlControls/SliderSwitch.qml index f06575e..112223a 100644 --- a/src/QmlControls/SliderSwitch.qml +++ b/src/QmlControls/SliderSwitch.qml @@ -1,11 +1,11 @@ -import QtQuick 2.15 -import QtQuick.Controls 2.15 +import QtQuick 2.3 +import QtQuick.Controls 1.2 import QGroundControl.ScreenTools 1.0 import QGroundControl.Palette 1.0 /// The SliderSwitch control implements a sliding switch control similar to the power off -/// control on an iPhone. It supports holding the space bar to slide the switch. +/// control on an iPhone. Rectangle { id: _root implicitWidth: label.contentWidth + (_diameter * 2.5) + (_border * 4) @@ -18,46 +18,15 @@ Rectangle { property string confirmText ///< Text for slider property alias fontPointSize: label.font.pointSize ///< Point size for text - property real _border: 4 - property real _diameter: height - (_border * 2) - property real _dragStartX: _border - property real _dragStopX: _root.width - (_diameter + _border) - property bool _waitingForLastAutoRepeat: false - - Keys.onSpacePressed: { - if (visible && event.modifiers === Qt.NoModifier && event.isAutoRepeat && !sliderDragArea.drag.active) { - event.accepted = true - if (_waitingForLastAutoRepeat) { - resetSpaceBarSliding() - accept() - } else { - sliderAnimation.start() - spaceBarTimout.restart() - } - } - } - - function resetSpaceBarSliding() { - _waitingForLastAutoRepeat = false - spaceBarTimout.stop() - slider.reset() - } - - Timer { - id: spaceBarTimout - interval: 200 - repeat: false - onTriggered: _root.resetSpaceBarSliding() - } + property real _border: 4 + property real _diameter: height - (_border * 2) QGCPalette { id: qgcPal; colorGroupEnabled: true } QGCLabel { id: label - x: _diameter + _border - width: parent.width - x + anchors.horizontalCenter: parent.horizontalCenter anchors.verticalCenter: parent.verticalCenter - horizontalAlignment: Text.AlignHCenter text: confirmText color: qgcPal.buttonText } @@ -84,19 +53,6 @@ Rectangle { source: "/res/ArrowRight.svg" } - PropertyAnimation on x { - id: sliderAnimation - duration: 1500 - from: _dragStartX - to: _dragStopX - running: false - onFinished: _waitingForLastAutoRepeat = true - } - - function reset() { - slider.x = _border - sliderAnimation.stop() - } } QGCMouseArea { @@ -105,18 +61,20 @@ Rectangle { fillItem: slider drag.target: slider drag.axis: Drag.XAxis - drag.minimumX: _dragStartX - drag.maximumX: _dragStopX + drag.minimumX: _border + drag.maximumX: _maxXDrag preventStealing: true - property bool dragActive: drag.active + property real _maxXDrag: _root.width - (_diameter + _border) + property bool dragActive: drag.active + property real _dragOffset: 1 onDragActiveChanged: { if (!sliderDragArea.drag.active) { - if (slider.x > _dragStopX - _border) { + if (slider.x > _maxXDrag - _border) { _root.accept() } - slider.reset() + slider.x = _border } } } diff --git a/src/QmlControls/ToolStrip.qml b/src/QmlControls/ToolStrip.qml index ad5602c..da90839 100644 --- a/src/QmlControls/ToolStrip.qml +++ b/src/QmlControls/ToolStrip.qml @@ -52,7 +52,7 @@ Rectangle { anchors.top: parent.top anchors.left: parent.left anchors.right: parent.right - height: parent.height - anchors.margins * 2 + height: parent.height contentHeight: toolStripColumn.height flickableDirection: Flickable.VerticalFlick clip: true diff --git a/src/QtLocationPlugin/ElevationMapProvider.cpp b/src/QtLocationPlugin/ElevationMapProvider.cpp index 851f162..c362464 100644 --- a/src/QtLocationPlugin/ElevationMapProvider.cpp +++ b/src/QtLocationPlugin/ElevationMapProvider.cpp @@ -6,40 +6,32 @@ #include "QGCMapEngine.h" #include "TerrainTile.h" -/* -License for the COPERNICUS dataset hosted on https://terrain-ce.suite.auterion.com/: - -© DLR e.V. 2010-2014 and © Airbus Defence and Space GmbH 2014-2018 provided under COPERNICUS -by the European Union and ESA; all rights reserved. - -*/ - ElevationProvider::ElevationProvider(const QString& imageFormat, quint32 averageSize, QGeoMapType::MapStyle mapType, QObject* parent) - : MapProvider(QStringLiteral("https://terrain-ce.suite.auterion.com/"), imageFormat, averageSize, mapType, parent) {} + : MapProvider(QStringLiteral("https://api.airmap.com/"), imageFormat, averageSize, mapType, parent) {} //----------------------------------------------------------------------------- -int CopernicusElevationProvider::long2tileX(const double lon, const int z) const { +int AirmapElevationProvider::long2tileX(const double lon, const int z) const { Q_UNUSED(z) return static_cast(floor((lon + 180.0) / TerrainTile::tileSizeDegrees)); } //----------------------------------------------------------------------------- -int CopernicusElevationProvider::lat2tileY(const double lat, const int z) const { +int AirmapElevationProvider::lat2tileY(const double lat, const int z) const { Q_UNUSED(z) return static_cast(floor((lat + 90.0) / TerrainTile::tileSizeDegrees)); } -QString CopernicusElevationProvider::_getURL(const int x, const int y, const int zoom, QNetworkAccessManager* networkManager) { +QString AirmapElevationProvider::_getURL(const int x, const int y, const int zoom, QNetworkAccessManager* networkManager) { Q_UNUSED(networkManager) Q_UNUSED(zoom) - return QString("https://terrain-ce.suite.auterion.com/api/v1/carpet?points=%1,%2,%3,%4") + return QString("https://api.airmap.com/elevation/v1/ele/carpet?points=%1,%2,%3,%4") .arg(static_cast(y) * TerrainTile::tileSizeDegrees - 90.0) .arg(static_cast(x) * TerrainTile::tileSizeDegrees - 180.0) .arg(static_cast(y + 1) * TerrainTile::tileSizeDegrees - 90.0) .arg(static_cast(x + 1) * TerrainTile::tileSizeDegrees - 180.0); } -QGCTileSet CopernicusElevationProvider::getTileCount(const int zoom, const double topleftLon, +QGCTileSet AirmapElevationProvider::getTileCount(const int zoom, const double topleftLon, const double topleftLat, const double bottomRightLon, const double bottomRightLat) const { QGCTileSet set; diff --git a/src/QtLocationPlugin/ElevationMapProvider.h b/src/QtLocationPlugin/ElevationMapProvider.h index 8420569..ce2cbea 100644 --- a/src/QtLocationPlugin/ElevationMapProvider.h +++ b/src/QtLocationPlugin/ElevationMapProvider.h @@ -24,10 +24,10 @@ class ElevationProvider : public MapProvider { // ----------------------------------------------------------- // Airmap Elevation -class CopernicusElevationProvider : public ElevationProvider { +class AirmapElevationProvider : public ElevationProvider { Q_OBJECT public: - CopernicusElevationProvider(QObject* parent = nullptr) + AirmapElevationProvider(QObject* parent = nullptr) : ElevationProvider(QStringLiteral("bin"), AVERAGE_AIRMAP_ELEV_SIZE, QGeoMapType::StreetMap, parent) {} @@ -42,3 +42,4 @@ class CopernicusElevationProvider : public ElevationProvider { protected: QString _getURL(const int x, const int y, const int zoom, QNetworkAccessManager* networkManager) override; }; + diff --git a/src/QtLocationPlugin/GenericMapProvider.cpp b/src/QtLocationPlugin/GenericMapProvider.cpp index f0e9928..14557e0 100644 --- a/src/QtLocationPlugin/GenericMapProvider.cpp +++ b/src/QtLocationPlugin/GenericMapProvider.cpp @@ -65,14 +65,6 @@ QString StatkartMapProvider::_getURL(const int x, const int y, const int zoom, Q return StatkartMapUrl.arg(zoom).arg(x).arg(y); } -static const QString StatkartBaseMapUrl = QStringLiteral("http://opencache.statkart.no/gatekeeper/gk/gk.open_gmaps?layers=norgeskart_bakgrunn&zoom=%1&x=%2&y=%3"); - -QString StatkartBaseMapProvider::_getURL(const int x, const int y, const int zoom, QNetworkAccessManager* networkManager) { - Q_UNUSED(networkManager) - return StatkartBaseMapUrl.arg(zoom).arg(x).arg(y); -} - - static const QString EniroMapUrl = QStringLiteral("http://map.eniro.com/geowebcache/service/tms1.0.0/map/%1/%2/%3.png"); QString EniroMapProvider::_getURL(const int x, const int y, const int zoom, QNetworkAccessManager* networkManager) { diff --git a/src/QtLocationPlugin/GenericMapProvider.h b/src/QtLocationPlugin/GenericMapProvider.h index 2dfbe1d..4472508 100644 --- a/src/QtLocationPlugin/GenericMapProvider.h +++ b/src/QtLocationPlugin/GenericMapProvider.h @@ -80,21 +80,12 @@ class CustomURLMapProvider : public MapProvider { QString _getURL(const int x, const int y, const int zoom, QNetworkAccessManager* networkManager) override; }; + class StatkartMapProvider : public MapProvider { Q_OBJECT public: StatkartMapProvider(QObject* parent = nullptr) - : MapProvider(QStringLiteral("https://norgeskart.no/"), QStringLiteral("png"), - AVERAGE_TILE_SIZE, QGeoMapType::StreetMap, parent) {} - - QString _getURL(const int x, const int y, const int zoom, QNetworkAccessManager* networkManager) override; -}; - -class StatkartBaseMapProvider : public MapProvider { - Q_OBJECT - public: - StatkartBaseMapProvider(QObject* parent = nullptr) - : MapProvider(QStringLiteral("https://norgeskart.no/"), QStringLiteral("png"), + : MapProvider(QStringLiteral("https://www.norgeskart.no/"), QStringLiteral("png"), AVERAGE_TILE_SIZE, QGeoMapType::StreetMap, parent) {} QString _getURL(const int x, const int y, const int zoom, QNetworkAccessManager* networkManager) override; diff --git a/src/QtLocationPlugin/QGCMapEngine.cpp b/src/QtLocationPlugin/QGCMapEngine.cpp index 6f29fc6..15774db 100644 --- a/src/QtLocationPlugin/QGCMapEngine.cpp +++ b/src/QtLocationPlugin/QGCMapEngine.cpp @@ -200,7 +200,7 @@ QGCMapEngine::addTask(QGCMapTask* task) //----------------------------------------------------------------------------- void -QGCMapEngine::cacheTile(const QString& type, int x, int y, int z, const QByteArray& image, const QString &format, qulonglong set) +QGCMapEngine::cacheTile(QString type, int x, int y, int z, const QByteArray& image, const QString &format, qulonglong set) { QString hash = getTileHash(type, x, y, z); cacheTile(type, hash, image, format, set); @@ -208,7 +208,7 @@ QGCMapEngine::cacheTile(const QString& type, int x, int y, int z, const QByteArr //----------------------------------------------------------------------------- void -QGCMapEngine::cacheTile(const QString& type, const QString& hash, const QByteArray& image, const QString& format, qulonglong set) +QGCMapEngine::cacheTile(QString type, const QString& hash, const QByteArray& image, const QString& format, qulonglong set) { AppSettings* appSettings = qgcApp()->toolbox()->settingsManager()->appSettings(); //-- If we are allowed to persist data, save tile to cache @@ -220,7 +220,7 @@ QGCMapEngine::cacheTile(const QString& type, const QString& hash, const QByteArr //----------------------------------------------------------------------------- QString -QGCMapEngine::getTileHash(const QString& type, int x, int y, int z) +QGCMapEngine::getTileHash(QString type, int x, int y, int z) { return QString::asprintf("%010d%08d%08d%03d", getQGCMapEngine()->urlFactory()->getIdFromType(type), x, y, z); } @@ -235,7 +235,7 @@ QGCMapEngine::hashToType(const QString& hash) //----------------------------------------------------------------------------- QGCFetchTileTask* -QGCMapEngine::createFetchTileTask(const QString& type, int x, int y, int z) +QGCMapEngine::createFetchTileTask(QString type, int x, int y, int z) { QString hash = getTileHash(type, x, y, z); QGCFetchTileTask* task = new QGCFetchTileTask(hash); @@ -244,7 +244,7 @@ QGCMapEngine::createFetchTileTask(const QString& type, int x, int y, int z) //----------------------------------------------------------------------------- QGCTileSet -QGCMapEngine::getTileCount(int zoom, double topleftLon, double topleftLat, double bottomRightLon, double bottomRightLat, const QString& mapType) +QGCMapEngine::getTileCount(int zoom, double topleftLon, double topleftLat, double bottomRightLon, double bottomRightLat, QString mapType) { if(zoom < 1) zoom = 1; if(zoom > MAX_MAP_ZOOM) zoom = MAX_MAP_ZOOM; @@ -368,7 +368,7 @@ QGCMapEngine::_pruned() //----------------------------------------------------------------------------- int -QGCMapEngine::concurrentDownloads(const QString& type) +QGCMapEngine::concurrentDownloads(QString type) { Q_UNUSED(type); // TODO : We may want different values depending on diff --git a/src/QtLocationPlugin/QGCMapEngine.h b/src/QtLocationPlugin/QGCMapEngine.h index 5f8bce7..4f4668d 100644 --- a/src/QtLocationPlugin/QGCMapEngine.h +++ b/src/QtLocationPlugin/QGCMapEngine.h @@ -36,13 +36,13 @@ public: void init (); void addTask (QGCMapTask *task); - void cacheTile (const QString& type, int x, int y, int z, const QByteArray& image, const QString& format, qulonglong set = UINT64_MAX); - void cacheTile (const QString& type, const QString& hash, const QByteArray& image, const QString& format, qulonglong set = UINT64_MAX); - QGCFetchTileTask* createFetchTileTask (const QString& type, int x, int y, int z); + void cacheTile (QString type, int x, int y, int z, const QByteArray& image, const QString& format, qulonglong set = UINT64_MAX); + void cacheTile (QString type, const QString& hash, const QByteArray& image, const QString& format, qulonglong set = UINT64_MAX); + QGCFetchTileTask* createFetchTileTask (QString type, int x, int y, int z); QStringList getMapNameList (); const QString userAgent () { return _userAgent; } void setUserAgent (const QString& ua) { _userAgent = ua; } - QString hashToType (const QString& hash); + QString hashToType (const QString& hash); quint32 getMaxDiskCache (); void setMaxDiskCache (quint32 size); quint32 getMaxMemCache (); @@ -56,13 +56,13 @@ public: UrlFactory* urlFactory () { return _urlFactory; } //-- Tile Math - static QGCTileSet getTileCount (int zoom, double topleftLon, double topleftLat, double bottomRightLon, double bottomRightLat, const QString& mapType); - static QString getTileHash (const QString& type, int x, int y, int z); - static QString getTypeFromName (const QString& name); + static QGCTileSet getTileCount (int zoom, double topleftLon, double topleftLat, double bottomRightLon, double bottomRightLat, QString mapType); + static QString getTileHash (QString type, int x, int y, int z); + static QString getTypeFromName (const QString &name); static QString bigSizeToString (quint64 size); static QString storageFreeSizeToString(quint64 size_MB); static QString numberToString (quint64 number); - static int concurrentDownloads (const QString& type); + static int concurrentDownloads (QString type); private slots: void _updateTotals (quint32 totaltiles, quint64 totalsize, quint32 defaulttiles, quint64 defaultsize); diff --git a/src/QtLocationPlugin/QGCMapEngineData.h b/src/QtLocationPlugin/QGCMapEngineData.h index 14fe489..64cdbc1 100644 --- a/src/QtLocationPlugin/QGCMapEngineData.h +++ b/src/QtLocationPlugin/QGCMapEngineData.h @@ -76,7 +76,7 @@ class QGCCacheTile : public QObject { Q_OBJECT public: - QGCCacheTile (const QString& hash, const QByteArray& img, const QString& format, const QString& type, qulonglong set = UINT64_MAX) + QGCCacheTile (const QString hash, const QByteArray img, const QString format, QString type, qulonglong set = UINT64_MAX) : _set(set) , _hash(hash) , _img(img) diff --git a/src/QtLocationPlugin/QGCMapTileSet.cpp b/src/QtLocationPlugin/QGCMapTileSet.cpp index 5888cad..e8ad05d 100644 --- a/src/QtLocationPlugin/QGCMapTileSet.cpp +++ b/src/QtLocationPlugin/QGCMapTileSet.cpp @@ -19,7 +19,6 @@ #include "QGCMapEngine.h" #include "QGCMapTileSet.h" #include "QGCMapEngineManager.h" -#include "QGCFileDownload.h" #include "TerrainTile.h" #include @@ -250,7 +249,6 @@ void QGCCachedTileSet::_prepareDownload() #endif QNetworkReply* reply = _networkManager->get(request); reply->setParent(0); - QGCFileDownload::setIgnoreSSLErrorsIfNeeded(*reply); connect(reply, &QNetworkReply::finished, this, &QGCCachedTileSet::_networkReplyFinished); connect(reply, &QNetworkReply::errorOccurred, this, &QGCCachedTileSet::_networkReplyError); _replies.insert(tile->hash(), reply); @@ -289,7 +287,7 @@ QGCCachedTileSet::_networkReplyFinished() qCDebug(QGCCachedTileSetLog) << "Tile fetched" << hash; QByteArray image = reply->readAll(); QString type = getQGCMapEngine()->hashToType(hash); - if (type == UrlFactory::kCopernicusElevationProviderKey) { + if (type == "Airmap Elevation" ) { image = TerrainTile::serializeFromAirMapJson(image); } QString format = getQGCMapEngine()->urlFactory()->getImageFormat(type, image); diff --git a/src/QtLocationPlugin/QGCMapUrlEngine.cpp b/src/QtLocationPlugin/QGCMapUrlEngine.cpp index b41002f..8461dc1 100644 --- a/src/QtLocationPlugin/QGCMapUrlEngine.cpp +++ b/src/QtLocationPlugin/QGCMapUrlEngine.cpp @@ -32,9 +32,6 @@ QGC_LOGGING_CATEGORY(QGCMapUrlEngineLog, "QGCMapUrlEngineLog") #include #include -const char* UrlFactory::kCopernicusElevationProviderKey = "Copernicus Elevation"; -const char* UrlFactory::kCopernicusElevationProviderNotice = "© Airbus Defence and Space GmbH"; - //----------------------------------------------------------------------------- UrlFactory::UrlFactory() : _timeout(5 * 1000) { @@ -45,7 +42,7 @@ UrlFactory::UrlFactory() : _timeout(5 * 1000) { _providersTable["Google Satellite"] = new GoogleSatelliteMapProvider(this); _providersTable["Google Terrain"] = new GoogleTerrainMapProvider(this); _providersTable["Google Hybrid"] = new GoogleHybridMapProvider(this); - _providersTable["Google Labels"] = new GoogleLabelsMapProvider(this); + _providersTable["Google Labels"] = new GoogleTerrainMapProvider(this); #endif _providersTable["Bing Road"] = new BingRoadMapProvider(this); @@ -53,7 +50,6 @@ UrlFactory::UrlFactory() : _timeout(5 * 1000) { _providersTable["Bing Hybrid"] = new BingHybridMapProvider(this); _providersTable["Statkart Topo"] = new StatkartMapProvider(this); - _providersTable["Statkart Basemap"] = new StatkartBaseMapProvider(this); _providersTable["Eniro Topo"] = new EniroMapProvider(this); @@ -74,20 +70,20 @@ UrlFactory::UrlFactory() : _timeout(5 * 1000) { //_providersTable["MapQuest Map"] = new MapQuestMapMapProvider(this); //_providersTable["MapQuest Sat"] = new MapQuestSatMapProvider(this); - + _providersTable["VWorld Street Map"] = new VWorldStreetMapProvider(this); _providersTable["VWorld Satellite Map"] = new VWorldSatMapProvider(this); - _providersTable[kCopernicusElevationProviderKey] = new CopernicusElevationProvider(this); + _providersTable["Airmap Elevation"] = new AirmapElevationProvider(this); _providersTable["Japan-GSI Contour"] = new JapanStdMapProvider(this); _providersTable["Japan-GSI Seamless"] = new JapanSeamlessMapProvider(this); _providersTable["Japan-GSI Anaglyph"] = new JapanAnaglyphMapProvider(this); _providersTable["Japan-GSI Slope"] = new JapanSlopeMapProvider(this); _providersTable["Japan-GSI Relief"] = new JapanReliefMapProvider(this); - + _providersTable["LINZ Basemap"] = new LINZBasemapMapProvider(this); - + _providersTable["CustomURL Custom"] = new CustomURLMapProvider(this); } @@ -109,7 +105,7 @@ QString UrlFactory::getImageFormat(int id, const QByteArray& image) { } //----------------------------------------------------------------------------- -QString UrlFactory::getImageFormat(const QString& type, const QByteArray& image) { +QString UrlFactory::getImageFormat(QString type, const QByteArray& image) { if (_providersTable.find(type) != _providersTable.end()) { return _providersTable[type]->getImageFormat(image); } else { @@ -130,7 +126,7 @@ QNetworkRequest UrlFactory::getTileURL(int id, int x, int y, int zoom, } //----------------------------------------------------------------------------- -QNetworkRequest UrlFactory::getTileURL(const QString& type, int x, int y, int zoom, +QNetworkRequest UrlFactory::getTileURL(QString type, int x, int y, int zoom, QNetworkAccessManager* networkManager) { if (_providersTable.find(type) != _providersTable.end()) { return _providersTable[type]->getTileURL(x, y, zoom, networkManager); @@ -140,10 +136,10 @@ QNetworkRequest UrlFactory::getTileURL(const QString& type, int x, int y, int zo } //----------------------------------------------------------------------------- -quint32 UrlFactory::averageSizeForType(const QString& type) { +quint32 UrlFactory::averageSizeForType(QString type) { if (_providersTable.find(type) != _providersTable.end()) { return _providersTable[type]->getAverageSize(); - } + } qCDebug(QGCMapUrlEngineLog) << "UrlFactory::averageSizeForType " << type << " Not registered"; @@ -156,9 +152,13 @@ quint32 UrlFactory::averageSizeForType(const QString& type) { } QString UrlFactory::getTypeFromId(int id) { - for (auto it = _providersTable.constBegin(); it != _providersTable.constEnd(); ++it) { - if ((int)(qHash(it.key()) >> 1) == id) { - return it.key(); + + QHashIterator i(_providersTable); + + while (i.hasNext()) { + i.next(); + if ((int)(qHash(i.key())>>1) == id) { + return i.key(); } } qCDebug(QGCMapUrlEngineLog) << "getTypeFromId : id not found" << id; @@ -176,26 +176,21 @@ MapProvider* UrlFactory::getMapProviderFromId(int id) return nullptr; } -//----------------------------------------------------------------------------- // Todo : qHash produce a uint bigger than max(int) // There is still a low probability for this to // generate similar hash for different types -int -UrlFactory::getIdFromType(const QString& type) -{ - return (int)(qHash(type)>>1); -} +int UrlFactory::getIdFromType(QString type) { return (int)(qHash(type)>>1); } //----------------------------------------------------------------------------- int -UrlFactory::long2tileX(const QString& mapType, double lon, int z) +UrlFactory::long2tileX(QString mapType, double lon, int z) { return _providersTable[mapType]->long2tileX(lon, z); } //----------------------------------------------------------------------------- int -UrlFactory::lat2tileY(const QString& mapType, double lat, int z) +UrlFactory::lat2tileY(QString mapType, double lat, int z) { return _providersTable[mapType]->lat2tileY(lat, z); } @@ -203,7 +198,7 @@ UrlFactory::lat2tileY(const QString& mapType, double lat, int z) //----------------------------------------------------------------------------- QGCTileSet -UrlFactory::getTileCount(int zoom, double topleftLon, double topleftLat, double bottomRightLon, double bottomRightLat, const QString& mapType) +UrlFactory::getTileCount(int zoom, double topleftLon, double topleftLat, double bottomRightLon, double bottomRightLat, QString mapType) { return _providersTable[mapType]->getTileCount(zoom, topleftLon, topleftLat, bottomRightLon, bottomRightLat); } diff --git a/src/QtLocationPlugin/QGCMapUrlEngine.h b/src/QtLocationPlugin/QGCMapUrlEngine.h index 8d3535c..898cf47 100644 --- a/src/QtLocationPlugin/QGCMapUrlEngine.h +++ b/src/QtLocationPlugin/QGCMapUrlEngine.h @@ -29,32 +29,30 @@ class UrlFactory : public QObject { Q_OBJECT public: - static const char* kCopernicusElevationProviderKey; - static const char* kCopernicusElevationProviderNotice; UrlFactory (); ~UrlFactory (); - QNetworkRequest getTileURL (const QString& type, int x, int y, int zoom, QNetworkAccessManager* networkManager); + QNetworkRequest getTileURL (QString type, int x, int y, int zoom, QNetworkAccessManager* networkManager); QNetworkRequest getTileURL (int id, int x, int y, int zoom, QNetworkAccessManager* networkManager); - QString getImageFormat (const QString& type, const QByteArray& image); + QString getImageFormat (QString type, const QByteArray& image); QString getImageFormat (int id , const QByteArray& image); - quint32 averageSizeForType (const QString& type); + quint32 averageSizeForType (QString type); - int long2tileX(const QString& mapType, double lon, int z); - int lat2tileY(const QString& mapType, double lat, int z); + int long2tileX(QString mapType, double lon, int z); + int lat2tileY(QString mapType, double lat, int z); QHash getProviderTable(){return _providersTable;} - int getIdFromType(const QString& type); + int getIdFromType(QString type); QString getTypeFromId(int id); MapProvider* getMapProviderFromId(int id); QGCTileSet getTileCount(int zoom, double topleftLon, double topleftLat, double bottomRightLon, double bottomRightLat, - const QString& mapType); + QString mapType); bool isElevation(int mapId); diff --git a/src/QtLocationPlugin/QGCTileCacheWorker.cpp b/src/QtLocationPlugin/QGCTileCacheWorker.cpp index f8f9188..b8ab9f0 100644 --- a/src/QtLocationPlugin/QGCTileCacheWorker.cpp +++ b/src/QtLocationPlugin/QGCTileCacheWorker.cpp @@ -297,7 +297,7 @@ QGCCacheWorker::_saveTile(QGCMapTask *mtask) query.addBindValue(task->tile()->img()); query.addBindValue(task->tile()->img().size()); query.addBindValue(task->tile()->type()); - query.addBindValue(QDateTime::currentDateTime().toSecsSinceEpoch()); + query.addBindValue(QDateTime::currentDateTime().toTime_t()); if(query.exec()) { quint64 tileID = query.lastInsertId().toULongLong(); quint64 setID = task->tile()->set() == UINT64_MAX ? _getDefaultTileSet() : task->tile()->set(); @@ -329,11 +329,11 @@ QGCCacheWorker::_getTile(QGCMapTask* mtask) QString s = QString("SELECT tile, format, type FROM Tiles WHERE hash = \"%1\"").arg(task->hash()); if(query.exec(s)) { if(query.next()) { - const QByteArray& arrray = query.value(0).toByteArray(); - const QString& format = query.value(1).toString(); + QByteArray ar = query.value(0).toByteArray(); + QString format = query.value(1).toString(); QString type = getQGCMapEngine()->urlFactory()->getTypeFromId(query.value(2).toInt()); qCDebug(QGCTileCacheLog) << "_getTile() (Found in DB) HASH:" << task->hash(); - QGCCacheTile* tile = new QGCCacheTile(task->hash(), arrray, format, type); + QGCCacheTile* tile = new QGCCacheTile(task->hash(), ar, format, type); task->setTileFetched(tile); found = true; } @@ -370,7 +370,7 @@ QGCCacheWorker::_getTileSets(QGCMapTask* mtask) set->setType(getQGCMapEngine()->urlFactory()->getTypeFromId(query.value("type").toInt())); set->setTotalTileCount(query.value("numTiles").toUInt()); set->setDefaultSet(query.value("defaultSet").toInt() != 0); - set->setCreationDate(QDateTime::fromSecsSinceEpoch(query.value("date").toUInt())); + set->setCreationDate(QDateTime::fromTime_t(query.value("date").toUInt())); _updateSetTotals(set); //-- Object created here must be moved to app thread to be used there set->moveToThread(QApplication::instance()->thread()); @@ -499,7 +499,7 @@ QGCCacheWorker::_createTileSet(QGCMapTask *mtask) query.addBindValue(task->tileSet()->maxZoom()); query.addBindValue(getQGCMapEngine()->urlFactory()->getIdFromType(task->tileSet()->type())); query.addBindValue(task->tileSet()->totalTileCount()); - query.addBindValue(QDateTime::currentDateTime().toSecsSinceEpoch()); + query.addBindValue(QDateTime::currentDateTime().toTime_t()); if(!query.exec()) { qWarning() << "Map Cache SQL error (add tileSet into TileSets):" << query.lastError().text(); } else { @@ -799,7 +799,7 @@ QGCCacheWorker::_importSets(QGCMapTask* mtask) cQuery.addBindValue(type); cQuery.addBindValue(numTiles); cQuery.addBindValue(defaultSet); - cQuery.addBindValue(QDateTime::currentDateTime().toSecsSinceEpoch()); + cQuery.addBindValue(QDateTime::currentDateTime().toTime_t()); if(!cQuery.exec()) { task->setError("Error adding imported tile set to database"); break; @@ -829,7 +829,7 @@ QGCCacheWorker::_importSets(QGCMapTask* mtask) cQuery.addBindValue(img); cQuery.addBindValue(img.size()); cQuery.addBindValue(type); - cQuery.addBindValue(QDateTime::currentDateTime().toSecsSinceEpoch()); + cQuery.addBindValue(QDateTime::currentDateTime().toTime_t()); if(cQuery.exec()) { tilesSaved++; quint64 importTileID = cQuery.lastInsertId().toULongLong(); @@ -939,7 +939,7 @@ QGCCacheWorker::_exportSets(QGCMapTask* mtask) exportQuery.addBindValue(getQGCMapEngine()->urlFactory()->getIdFromType(set->type())); exportQuery.addBindValue(set->totalTileCount()); exportQuery.addBindValue(set->defaultSet()); - exportQuery.addBindValue(QDateTime::currentDateTime().toSecsSinceEpoch()); + exportQuery.addBindValue(QDateTime::currentDateTime().toTime_t()); if(!exportQuery.exec()) { task->setError("Error adding tile set to exported database"); break; @@ -969,7 +969,7 @@ QGCCacheWorker::_exportSets(QGCMapTask* mtask) exportQuery.addBindValue(img); exportQuery.addBindValue(img.size()); exportQuery.addBindValue(type); - exportQuery.addBindValue(QDateTime::currentDateTime().toSecsSinceEpoch()); + exportQuery.addBindValue(QDateTime::currentDateTime().toTime_t()); if(exportQuery.exec()) { quint64 exportTileID = exportQuery.lastInsertId().toULongLong(); QString s = QString("INSERT INTO SetTiles(tileID, setID) VALUES(%1, %2)").arg(exportTileID).arg(exportSetID); @@ -1115,7 +1115,7 @@ QGCCacheWorker::_createDB(QSqlDatabase& db, bool createDefault) query.prepare("INSERT INTO TileSets(name, defaultSet, date) VALUES(?, ?, ?)"); query.addBindValue(kDefaultSet); query.addBindValue(1); - query.addBindValue(QDateTime::currentDateTime().toSecsSinceEpoch()); + query.addBindValue(QDateTime::currentDateTime().toTime_t()); if(!query.exec()) { qWarning() << "Map Cache SQL error (Creating default tile set):" << db.lastError(); res = false; diff --git a/src/QtLocationPlugin/QMLControl/OfflineMap.qml b/src/QtLocationPlugin/QMLControl/OfflineMap.qml index 5db10d4..9a88b20 100644 --- a/src/QtLocationPlugin/QMLControl/OfflineMap.qml +++ b/src/QtLocationPlugin/QMLControl/OfflineMap.qml @@ -247,169 +247,181 @@ Item { Component { id: optionsDialogComponent - QGCPopupDialog { - title: qsTr("Offline Maps Options") - buttons: StandardButton.Save | StandardButton.Cancel + QGCViewDialog { + id: optionDialog - onAccepted: { + function accept() { QGroundControl.mapEngineManager.maxDiskCache = parseInt(maxCacheSize.text) QGroundControl.mapEngineManager.maxMemCache = parseInt(maxCacheMemSize.text) + optionDialog.hideDialog() } - Column { - spacing: ScreenTools.defaultFontPixelHeight / 2 + QGCFlickable { + anchors.fill: parent + contentHeight: optionsColumn.height - QGCLabel { text: qsTr("Max Cache Disk Size (MB):") } + Column { + id: optionsColumn + anchors.margins: ScreenTools.defaultFontPixelWidth + anchors.left: parent.left + anchors.right: parent.right + anchors.top: parent.top + spacing: ScreenTools.defaultFontPixelHeight / 2 - QGCTextField { - id: maxCacheSize - maximumLength: 6 - inputMethodHints: Qt.ImhDigitsOnly - validator: IntValidator {bottom: 1; top: 262144;} - text: QGroundControl.mapEngineManager.maxDiskCache - } + QGCLabel { text: qsTr("Max Cache Disk Size (MB):") } - Item { width: 1; height: 1 } + QGCTextField { + id: maxCacheSize + maximumLength: 6 + inputMethodHints: Qt.ImhDigitsOnly + validator: IntValidator {bottom: 1; top: 262144;} + text: QGroundControl.mapEngineManager.maxDiskCache + } - QGCLabel { - anchors.left: parent.left - anchors.right: parent.right - wrapMode: Text.WordWrap - text: qsTr("Max Cache Memory Size (MB):") - } + Item { width: 1; height: 1 } - QGCTextField { - id: maxCacheMemSize - maximumLength: 4 - inputMethodHints: Qt.ImhDigitsOnly - validator: IntValidator {bottom: 1; top: 1024;} - text: QGroundControl.mapEngineManager.maxMemCache - } + QGCLabel { + anchors.left: parent.left + anchors.right: parent.right + wrapMode: Text.WordWrap + text: qsTr("Max Cache Memory Size (MB):") + } - QGCLabel { - anchors.left: parent.left - anchors.right: parent.right - wrapMode: Text.WordWrap - font.pointSize: _adjustableFontPointSize - text: qsTr("Memory cache changes require a restart to take effect.") - } + QGCTextField { + id: maxCacheMemSize + maximumLength: 4 + inputMethodHints: Qt.ImhDigitsOnly + validator: IntValidator {bottom: 1; top: 1024;} + text: QGroundControl.mapEngineManager.maxMemCache + } - Item { width: 1; height: 1; visible: _mapboxFact ? _mapboxFact.visible : false } - QGCLabel { text: qsTr("Mapbox Access Token"); visible: _mapboxFact ? _mapboxFact.visible : false } - FactTextField { - fact: _mapboxFact - visible: _mapboxFact ? _mapboxFact.visible : false - maximumLength: 256 - width: ScreenTools.defaultFontPixelWidth * 30 - } - QGCLabel { - anchors.left: parent.left - anchors.right: parent.right - wrapMode: Text.WordWrap - text: qsTr("To enable Mapbox maps, enter your access token.") - visible: _mapboxFact ? _mapboxFact.visible : false - font.pointSize: _adjustableFontPointSize - } + QGCLabel { + anchors.left: parent.left + anchors.right: parent.right + wrapMode: Text.WordWrap + font.pointSize: _adjustableFontPointSize + text: qsTr("Memory cache changes require a restart to take effect.") + } - Item { width: 1; height: 1; visible: _mapboxAccountFact ? _mapboxAccountFact.visible : false } - QGCLabel { text: qsTr("Mapbox User Name"); visible: _mapboxAccountFact ? _mapboxAccountFact.visible : false } - FactTextField { - fact: _mapboxAccountFact - visible: _mapboxAccountFact ? _mapboxAccountFact.visible : false - maximumLength: 256 - width: ScreenTools.defaultFontPixelWidth * 30 - } - QGCLabel { - anchors.left: parent.left - anchors.right: parent.right - wrapMode: Text.WordWrap - text: qsTr("To enable custom Mapbox styles, enter your account name.") - visible: _mapboxAccountFact ? _mapboxAccountFact.visible : false - font.pointSize: _adjustableFontPointSize - } + Item { width: 1; height: 1; visible: _mapboxFact ? _mapboxFact.visible : false } + QGCLabel { text: qsTr("Mapbox Access Token"); visible: _mapboxFact ? _mapboxFact.visible : false } + FactTextField { + fact: _mapboxFact + visible: _mapboxFact ? _mapboxFact.visible : false + maximumLength: 256 + width: ScreenTools.defaultFontPixelWidth * 30 + } + QGCLabel { + anchors.left: parent.left + anchors.right: parent.right + wrapMode: Text.WordWrap + text: qsTr("To enable Mapbox maps, enter your access token.") + visible: _mapboxFact ? _mapboxFact.visible : false + font.pointSize: _adjustableFontPointSize + } - Item { width: 1; height: 1; visible: _mapboxStyleFact ? _mapboxStyleFact.visible : false } - QGCLabel { text: qsTr("Mapbox Style ID"); visible: _mapboxStyleFact ? _mapboxStyleFact.visible : false } - FactTextField { - fact: _mapboxStyleFact - visible: _mapboxStyleFact ? _mapboxStyleFact.visible : false - maximumLength: 256 - width: ScreenTools.defaultFontPixelWidth * 30 - } - QGCLabel { - anchors.left: parent.left - anchors.right: parent.right - wrapMode: Text.WordWrap - text: qsTr("To enable custom Mapbox styles, enter your style ID.") - visible: _mapboxStyleFact ? _mapboxStyleFact.visible : false - font.pointSize: _adjustableFontPointSize - } + Item { width: 1; height: 1; visible: _mapboxAccountFact ? _mapboxAccountFact.visible : false } + QGCLabel { text: qsTr("Mapbox User Name"); visible: _mapboxAccountFact ? _mapboxAccountFact.visible : false } + FactTextField { + fact: _mapboxAccountFact + visible: _mapboxAccountFact ? _mapboxAccountFact.visible : false + maximumLength: 256 + width: ScreenTools.defaultFontPixelWidth * 30 + } + QGCLabel { + anchors.left: parent.left + anchors.right: parent.right + wrapMode: Text.WordWrap + text: qsTr("To enable custom Mapbox styles, enter your account name.") + visible: _mapboxAccountFact ? _mapboxAccountFact.visible : false + font.pointSize: _adjustableFontPointSize + } - Item { width: 1; height: 1; visible: _esriFact ? _esriFact.visible : false } - QGCLabel { text: qsTr("Esri Access Token"); visible: _esriFact ? _esriFact.visible : false } - FactTextField { - fact: _esriFact - visible: _esriFact ? _esriFact.visible : false - maximumLength: 256 - width: ScreenTools.defaultFontPixelWidth * 30 - } - QGCLabel { - anchors.left: parent.left - anchors.right: parent.right - wrapMode: Text.WordWrap - text: qsTr("To enable Esri maps, enter your access token.") - visible: _esriFact ? _esriFact.visible : false - font.pointSize: _adjustableFontPointSize - } + Item { width: 1; height: 1; visible: _mapboxStyleFact ? _mapboxStyleFact.visible : false } + QGCLabel { text: qsTr("Mapbox Style ID"); visible: _mapboxStyleFact ? _mapboxStyleFact.visible : false } + FactTextField { + fact: _mapboxStyleFact + visible: _mapboxStyleFact ? _mapboxStyleFact.visible : false + maximumLength: 256 + width: ScreenTools.defaultFontPixelWidth * 30 + } + QGCLabel { + anchors.left: parent.left + anchors.right: parent.right + wrapMode: Text.WordWrap + text: qsTr("To enable custom Mapbox styles, enter your style ID.") + visible: _mapboxStyleFact ? _mapboxStyleFact.visible : false + font.pointSize: _adjustableFontPointSize + } - Item { width: 1; height: 1; visible: _vworldFact ? _vworldFact.visible : false } - QGCLabel { text: qsTr("VWorld Access Token"); visible: _vworldFact ? _vworldFact.visible : false } - FactTextField { - fact: _vworldFact - visible: _vworldFact ? _vworldFact.visible : false - maximumLength: 256 - width: ScreenTools.defaultFontPixelWidth * 30 - } - QGCLabel { - anchors.left: parent.left - anchors.right: parent.right - wrapMode: Text.WordWrap - text: qsTr("To enable VWorld maps, enter your access token.") - visible: _vworldFact ? _vworldFact.visible : false - font.pointSize: _adjustableFontPointSize - } + Item { width: 1; height: 1; visible: _esriFact ? _esriFact.visible : false } + QGCLabel { text: qsTr("Esri Access Token"); visible: _esriFact ? _esriFact.visible : false } + FactTextField { + fact: _esriFact + visible: _esriFact ? _esriFact.visible : false + maximumLength: 256 + width: ScreenTools.defaultFontPixelWidth * 30 + } + QGCLabel { + anchors.left: parent.left + anchors.right: parent.right + wrapMode: Text.WordWrap + text: qsTr("To enable Esri maps, enter your access token.") + visible: _esriFact ? _esriFact.visible : false + font.pointSize: _adjustableFontPointSize + } - Item { width: 1; height: 1; visible: _customURLFact ? _customURLFact.visible : false } - QGCLabel { text: qsTr("Custom Map URL"); visible: _customURLFact ? _customURLFact.visible : false } - FactTextField { - fact: _customURLFact - visible: _customURLFact ? _customURLFact.visible : false - maximumLength: 256 - width: ScreenTools.defaultFontPixelWidth * 30 - } - QGCLabel { - anchors.left: parent.left - anchors.right: parent.right - wrapMode: Text.WordWrap - text: qsTr("URL with {x} {y} {z} or {zoom} substitutions") - visible: _customURLFact ? _customURLFact.visible : false - font.pointSize: _adjustableFontPointSize - } - } - } + Item { width: 1; height: 1; visible: _vworldFact ? _vworldFact.visible : false } + QGCLabel { text: qsTr("VWorld Access Token"); visible: _vworldFact ? _vworldFact.visible : false } + FactTextField { + fact: _vworldFact + visible: _vworldFact ? _vworldFact.visible : false + maximumLength: 256 + width: ScreenTools.defaultFontPixelWidth * 30 + } + QGCLabel { + anchors.left: parent.left + anchors.right: parent.right + wrapMode: Text.WordWrap + text: qsTr("To enable VWorld maps, enter your access token.") + visible: _vworldFact ? _vworldFact.visible : false + font.pointSize: _adjustableFontPointSize + } + + Item { width: 1; height: 1; visible: _customURLFact ? _customURLFact.visible : false } + QGCLabel { text: qsTr("Custom Map URL"); visible: _customURLFact ? _customURLFact.visible : false } + FactTextField { + fact: _customURLFact + visible: _customURLFact ? _customURLFact.visible : false + maximumLength: 256 + width: ScreenTools.defaultFontPixelWidth * 30 + } + QGCLabel { + anchors.left: parent.left + anchors.right: parent.right + wrapMode: Text.WordWrap + text: qsTr("URL with {x} {y} {z} or {zoom} substitutions") + visible: _customURLFact ? _customURLFact.visible : false + font.pointSize: _adjustableFontPointSize + } + } // GridLayout + } // QGCFlickable + } // QGCViewDialog - optionsDialog } // Component - optionsDialogComponent Component { id: deleteConfirmationDialogComponent - QGCSimpleMessageDialog { - title: qsTr("Confirm Delete") - text: offlineMapView._currentSelection.defaultSet ? - qsTr("This will delete all tiles INCLUDING the tile sets you have created yourself.\n\nIs this really what you want?") : - qsTr("Delete %1 and all its tiles.\n\nIs this really what you want?").arg(offlineMapView._currentSelection.name) - buttons: StandardButton.Yes | StandardButton.No - - onAccepted: { + QGCViewMessage { + id: deleteConfirmationDialog + message: { + if(offlineMapView._currentSelection.defaultSet) + return qsTr("This will delete all tiles INCLUDING the tile sets you have created yourself.\n\nIs this really what you want?"); + else + return qsTr("Delete %1 and all its tiles.\n\nIs this really what you want?").arg(offlineMapView._currentSelection.name); + } + function accept() { QGroundControl.mapEngineManager.deleteTileSet(offlineMapView._currentSelection) + deleteConfirmationDialog.hideDialog() leaveInfoView() showList() } @@ -522,7 +534,7 @@ Item { Row { spacing: ScreenTools.defaultFontPixelWidth anchors.horizontalCenter: parent.horizontalCenter - visible: !_defaultSet && mapType !== QGroundControl.elevationProviderName + visible: !_defaultSet && mapType !== "Airmap Elevation" QGCLabel { text: qsTr("Zoom Levels:"); width: infoView._labelWidth; } QGCLabel { text: offlineMapView._currentSelection ? (offlineMapView._currentSelection.minZoom + " - " + offlineMapView._currentSelection.maxZoom) : ""; horizontalAlignment: Text.AlignRight; width: infoView._valueWidth; } } @@ -594,8 +606,7 @@ Item { QGCButton { text: qsTr("Delete") width: ScreenTools.defaultFontPixelWidth * (infoView._extraButton ? 6 : 10) - onClicked: deleteConfirmationDialogComponent.createObject(mainWindow).open() - enabled: offlineMapView._currentSelection ? (offlineMapView._currentSelection.savedTileSize > 0) : false + onClicked: mainWindow.showComponentDialog(deleteConfirmationDialogComponent, qsTr("Confirm Delete"), mainWindow.showDialogDefaultWidth, StandardButton.Yes | StandardButton.No) } QGCButton { text: qsTr("Ok") @@ -1075,7 +1086,7 @@ Item { QGCButton { text: qsTr("Options") width: _buttonSize - onClicked: optionsDialogComponent.createObject(mainWindow).open() + onClicked: mainWindow.showComponentDialog(optionsDialogComponent, qsTr("Offline Maps Options"), mainWindow.showDialogDefaultWidth, StandardButton.Save | StandardButton.Cancel) } } diff --git a/src/QtLocationPlugin/QMLControl/QGCMapEngineManager.cc b/src/QtLocationPlugin/QMLControl/QGCMapEngineManager.cc index ec4fe2d..2882eac 100644 --- a/src/QtLocationPlugin/QMLControl/QGCMapEngineManager.cc +++ b/src/QtLocationPlugin/QMLControl/QGCMapEngineManager.cc @@ -28,8 +28,6 @@ QGC_LOGGING_CATEGORY(QGCMapEngineManagerLog, "QGCMapEngineManagerLog") static const char* kQmlOfflineMapKeyName = "QGCOfflineMap"; -static const auto kElevationMapType = UrlFactory::kCopernicusElevationProviderKey; - //----------------------------------------------------------------------------- QGCMapEngineManager::QGCMapEngineManager(QGCApplication* app, QGCToolbox* toolbox) : QGCTool(app, toolbox) @@ -86,7 +84,7 @@ QGCMapEngineManager::updateForCurrentView(double lon0, double lat0, double lon1, _imageSet += set; } if (_fetchElevation) { - QGCTileSet set = QGCMapEngine::getTileCount(1, lon0, lat0, lon1, lat1, kElevationMapType); + QGCTileSet set = QGCMapEngine::getTileCount(1, lon0, lat0, lon1, lat1, "Airmap Elevation"); _elevationSet += set; } @@ -161,9 +159,9 @@ QGCMapEngineManager::startDownload(const QString& name, const QString& mapType) } else { qWarning() << "QGCMapEngineManager::startDownload() No Tiles to save"; } - if (mapType != kElevationMapType && _fetchElevation) { + if (mapType != "Airmap Elevation" && _fetchElevation) { QGCCachedTileSet* set = new QGCCachedTileSet(name + " Elevation"); - set->setMapTypeStr(kElevationMapType); + set->setMapTypeStr("Airmap Elevation"); set->setTopleftLat(_topleftLat); set->setTopleftLon(_topleftLon); set->setBottomRightLat(_bottomRightLat); @@ -172,7 +170,7 @@ QGCMapEngineManager::startDownload(const QString& name, const QString& mapType) set->setMaxZoom(1); set->setTotalTileSize(_elevationSet.tileSize); set->setTotalTileCount(static_cast(_elevationSet.tileCount)); - set->setType(kElevationMapType); + set->setType("Airmap Elevation"); QGCCreateTileSetTask* task = new QGCCreateTileSetTask(set); //-- Create Tile Set (it will also create a list of tiles to download) connect(task, &QGCCreateTileSetTask::tileSetSaved, this, &QGCMapEngineManager::_tileSetSaved); @@ -454,7 +452,7 @@ QGCMapEngineManager::importSets(QString path) { if(dir.isEmpty()) { #if defined(__mobile__) //-- TODO: This has to be something fixed - dir = QDir(QDir::homePath()).filePath(QString("export_%1.db").arg(QDateTime::currentDateTime().toSecsSinceEpoch())); + dir = QDir(QDir::homePath()).filePath(QString("export_%1.db").arg(QDateTime::currentDateTime().toTime_t())); #else dir = QString(); //-- TODO: QGCQFileDialog::getOpenFileName( // nullptr, @@ -484,7 +482,7 @@ QGCMapEngineManager::exportSets(QString path) { QString dir = path; if(dir.isEmpty()) { #if defined(__mobile__) - dir = QDir(QDir::homePath()).filePath(QString("export_%1.db").arg(QDateTime::currentDateTime().toSecsSinceEpoch())); + dir = QDir(QDir::homePath()).filePath(QString("export_%1.db").arg(QDateTime::currentDateTime().toTime_t())); #else dir = QString(); //-- TODO: QGCQFileDialog::getSaveFileName( // MainWindow::instance(), diff --git a/src/QtLocationPlugin/qtlocation/README.md b/src/QtLocationPlugin/qtlocation/README.md new file mode 100644 index 0000000..d85d4f1 --- /dev/null +++ b/src/QtLocationPlugin/qtlocation/README.md @@ -0,0 +1,9 @@ +# QGroundControl + +## Qt Location Headers for Qt 5.5.1 + +Qt version 5.5.1 did not include the headers for QtLocation. It's included here so we can build our location plugin. This is only needed for Qt 5.5.1. The qmake file handles it automatically. Once we move past 5.5.1 we can delete this directory. + +The bug has been reported here: + +https://bugreports.qt.io/browse/QTBUG-48812 diff --git a/src/QtLocationPlugin/qtlocation/include/QtLocation/5.5.1/QtLocation/private/qcache3q_p.h b/src/QtLocationPlugin/qtlocation/include/QtLocation/5.5.1/QtLocation/private/qcache3q_p.h new file mode 100644 index 0000000..2f3ebc0 --- /dev/null +++ b/src/QtLocationPlugin/qtlocation/include/QtLocation/5.5.1/QtLocation/private/qcache3q_p.h @@ -0,0 +1 @@ +#include "../../../../../src/location/maps/qcache3q_p.h" diff --git a/src/QtLocationPlugin/qtlocation/include/QtLocation/5.5.1/QtLocation/private/qgeocameracapabilities_p.h b/src/QtLocationPlugin/qtlocation/include/QtLocation/5.5.1/QtLocation/private/qgeocameracapabilities_p.h new file mode 100644 index 0000000..c237979 --- /dev/null +++ b/src/QtLocationPlugin/qtlocation/include/QtLocation/5.5.1/QtLocation/private/qgeocameracapabilities_p.h @@ -0,0 +1 @@ +#include "../../../../../src/location/maps/qgeocameracapabilities_p.h" diff --git a/src/QtLocationPlugin/qtlocation/include/QtLocation/5.5.1/QtLocation/private/qgeocameradata_p.h b/src/QtLocationPlugin/qtlocation/include/QtLocation/5.5.1/QtLocation/private/qgeocameradata_p.h new file mode 100644 index 0000000..0639753 --- /dev/null +++ b/src/QtLocationPlugin/qtlocation/include/QtLocation/5.5.1/QtLocation/private/qgeocameradata_p.h @@ -0,0 +1 @@ +#include "../../../../../src/location/maps/qgeocameradata_p.h" diff --git a/src/QtLocationPlugin/qtlocation/include/QtLocation/5.5.1/QtLocation/private/qgeocameratiles_p.h b/src/QtLocationPlugin/qtlocation/include/QtLocation/5.5.1/QtLocation/private/qgeocameratiles_p.h new file mode 100644 index 0000000..80f6aaf --- /dev/null +++ b/src/QtLocationPlugin/qtlocation/include/QtLocation/5.5.1/QtLocation/private/qgeocameratiles_p.h @@ -0,0 +1 @@ +#include "../../../../../src/location/maps/qgeocameratiles_p.h" diff --git a/src/QtLocationPlugin/qtlocation/include/QtLocation/5.5.1/QtLocation/private/qgeocodereply_p.h b/src/QtLocationPlugin/qtlocation/include/QtLocation/5.5.1/QtLocation/private/qgeocodereply_p.h new file mode 100644 index 0000000..2524050 --- /dev/null +++ b/src/QtLocationPlugin/qtlocation/include/QtLocation/5.5.1/QtLocation/private/qgeocodereply_p.h @@ -0,0 +1 @@ +#include "../../../../../src/location/maps/qgeocodereply_p.h" diff --git a/src/QtLocationPlugin/qtlocation/include/QtLocation/5.5.1/QtLocation/private/qgeocodingmanager_p.h b/src/QtLocationPlugin/qtlocation/include/QtLocation/5.5.1/QtLocation/private/qgeocodingmanager_p.h new file mode 100644 index 0000000..043ed36 --- /dev/null +++ b/src/QtLocationPlugin/qtlocation/include/QtLocation/5.5.1/QtLocation/private/qgeocodingmanager_p.h @@ -0,0 +1 @@ +#include "../../../../../src/location/maps/qgeocodingmanager_p.h" diff --git a/src/QtLocationPlugin/qtlocation/include/QtLocation/5.5.1/QtLocation/private/qgeocodingmanagerengine_p.h b/src/QtLocationPlugin/qtlocation/include/QtLocation/5.5.1/QtLocation/private/qgeocodingmanagerengine_p.h new file mode 100644 index 0000000..5ce24ee --- /dev/null +++ b/src/QtLocationPlugin/qtlocation/include/QtLocation/5.5.1/QtLocation/private/qgeocodingmanagerengine_p.h @@ -0,0 +1 @@ +#include "../../../../../src/location/maps/qgeocodingmanagerengine_p.h" diff --git a/src/QtLocationPlugin/qtlocation/include/QtLocation/5.5.1/QtLocation/private/qgeomaneuver_p.h b/src/QtLocationPlugin/qtlocation/include/QtLocation/5.5.1/QtLocation/private/qgeomaneuver_p.h new file mode 100644 index 0000000..cd5008e --- /dev/null +++ b/src/QtLocationPlugin/qtlocation/include/QtLocation/5.5.1/QtLocation/private/qgeomaneuver_p.h @@ -0,0 +1 @@ +#include "../../../../../src/location/maps/qgeomaneuver_p.h" diff --git a/src/QtLocationPlugin/qtlocation/include/QtLocation/5.5.1/QtLocation/private/qgeomap_p.h b/src/QtLocationPlugin/qtlocation/include/QtLocation/5.5.1/QtLocation/private/qgeomap_p.h new file mode 100644 index 0000000..b7327e4 --- /dev/null +++ b/src/QtLocationPlugin/qtlocation/include/QtLocation/5.5.1/QtLocation/private/qgeomap_p.h @@ -0,0 +1 @@ +#include "../../../../../src/location/maps/qgeomap_p.h" diff --git a/src/QtLocationPlugin/qtlocation/include/QtLocation/5.5.1/QtLocation/private/qgeomap_p_p.h b/src/QtLocationPlugin/qtlocation/include/QtLocation/5.5.1/QtLocation/private/qgeomap_p_p.h new file mode 100644 index 0000000..3407c69 --- /dev/null +++ b/src/QtLocationPlugin/qtlocation/include/QtLocation/5.5.1/QtLocation/private/qgeomap_p_p.h @@ -0,0 +1 @@ +#include "../../../../../src/location/maps/qgeomap_p_p.h" diff --git a/src/QtLocationPlugin/qtlocation/include/QtLocation/5.5.1/QtLocation/private/qgeomapcontroller_p.h b/src/QtLocationPlugin/qtlocation/include/QtLocation/5.5.1/QtLocation/private/qgeomapcontroller_p.h new file mode 100644 index 0000000..ba33d75 --- /dev/null +++ b/src/QtLocationPlugin/qtlocation/include/QtLocation/5.5.1/QtLocation/private/qgeomapcontroller_p.h @@ -0,0 +1 @@ +#include "../../../../../src/location/maps/qgeomapcontroller_p.h" diff --git a/src/QtLocationPlugin/qtlocation/include/QtLocation/5.5.1/QtLocation/private/qgeomappingmanager_p.h b/src/QtLocationPlugin/qtlocation/include/QtLocation/5.5.1/QtLocation/private/qgeomappingmanager_p.h new file mode 100644 index 0000000..9b03ed7 --- /dev/null +++ b/src/QtLocationPlugin/qtlocation/include/QtLocation/5.5.1/QtLocation/private/qgeomappingmanager_p.h @@ -0,0 +1 @@ +#include "../../../../../src/location/maps/qgeomappingmanager_p.h" diff --git a/src/QtLocationPlugin/qtlocation/include/QtLocation/5.5.1/QtLocation/private/qgeomappingmanager_p_p.h b/src/QtLocationPlugin/qtlocation/include/QtLocation/5.5.1/QtLocation/private/qgeomappingmanager_p_p.h new file mode 100644 index 0000000..a9d965a --- /dev/null +++ b/src/QtLocationPlugin/qtlocation/include/QtLocation/5.5.1/QtLocation/private/qgeomappingmanager_p_p.h @@ -0,0 +1 @@ +#include "../../../../../src/location/maps/qgeomappingmanager_p_p.h" diff --git a/src/QtLocationPlugin/qtlocation/include/QtLocation/5.5.1/QtLocation/private/qgeomappingmanagerengine_p.h b/src/QtLocationPlugin/qtlocation/include/QtLocation/5.5.1/QtLocation/private/qgeomappingmanagerengine_p.h new file mode 100644 index 0000000..a1dd77b --- /dev/null +++ b/src/QtLocationPlugin/qtlocation/include/QtLocation/5.5.1/QtLocation/private/qgeomappingmanagerengine_p.h @@ -0,0 +1 @@ +#include "../../../../../src/location/maps/qgeomappingmanagerengine_p.h" diff --git a/src/QtLocationPlugin/qtlocation/include/QtLocation/5.5.1/QtLocation/private/qgeomappingmanagerengine_p_p.h b/src/QtLocationPlugin/qtlocation/include/QtLocation/5.5.1/QtLocation/private/qgeomappingmanagerengine_p_p.h new file mode 100644 index 0000000..7d99d28 --- /dev/null +++ b/src/QtLocationPlugin/qtlocation/include/QtLocation/5.5.1/QtLocation/private/qgeomappingmanagerengine_p_p.h @@ -0,0 +1 @@ +#include "../../../../../src/location/maps/qgeomappingmanagerengine_p_p.h" diff --git a/src/QtLocationPlugin/qtlocation/include/QtLocation/5.5.1/QtLocation/private/qgeomapscene_p.h b/src/QtLocationPlugin/qtlocation/include/QtLocation/5.5.1/QtLocation/private/qgeomapscene_p.h new file mode 100644 index 0000000..b80f27d --- /dev/null +++ b/src/QtLocationPlugin/qtlocation/include/QtLocation/5.5.1/QtLocation/private/qgeomapscene_p.h @@ -0,0 +1 @@ +#include "../../../../../src/location/maps/qgeomapscene_p.h" diff --git a/src/QtLocationPlugin/qtlocation/include/QtLocation/5.5.1/QtLocation/private/qgeomaptype_p.h b/src/QtLocationPlugin/qtlocation/include/QtLocation/5.5.1/QtLocation/private/qgeomaptype_p.h new file mode 100644 index 0000000..d6f8348 --- /dev/null +++ b/src/QtLocationPlugin/qtlocation/include/QtLocation/5.5.1/QtLocation/private/qgeomaptype_p.h @@ -0,0 +1 @@ +#include "../../../../../src/location/maps/qgeomaptype_p.h" diff --git a/src/QtLocationPlugin/qtlocation/include/QtLocation/5.5.1/QtLocation/private/qgeomaptype_p_p.h b/src/QtLocationPlugin/qtlocation/include/QtLocation/5.5.1/QtLocation/private/qgeomaptype_p_p.h new file mode 100644 index 0000000..93fb3ba --- /dev/null +++ b/src/QtLocationPlugin/qtlocation/include/QtLocation/5.5.1/QtLocation/private/qgeomaptype_p_p.h @@ -0,0 +1 @@ +#include "../../../../../src/location/maps/qgeomaptype_p_p.h" diff --git a/src/QtLocationPlugin/qtlocation/include/QtLocation/5.5.1/QtLocation/private/qgeoroute_p.h b/src/QtLocationPlugin/qtlocation/include/QtLocation/5.5.1/QtLocation/private/qgeoroute_p.h new file mode 100644 index 0000000..aed5df1 --- /dev/null +++ b/src/QtLocationPlugin/qtlocation/include/QtLocation/5.5.1/QtLocation/private/qgeoroute_p.h @@ -0,0 +1 @@ +#include "../../../../../src/location/maps/qgeoroute_p.h" diff --git a/src/QtLocationPlugin/qtlocation/include/QtLocation/5.5.1/QtLocation/private/qgeoroutereply_p.h b/src/QtLocationPlugin/qtlocation/include/QtLocation/5.5.1/QtLocation/private/qgeoroutereply_p.h new file mode 100644 index 0000000..73e5640 --- /dev/null +++ b/src/QtLocationPlugin/qtlocation/include/QtLocation/5.5.1/QtLocation/private/qgeoroutereply_p.h @@ -0,0 +1 @@ +#include "../../../../../src/location/maps/qgeoroutereply_p.h" diff --git a/src/QtLocationPlugin/qtlocation/include/QtLocation/5.5.1/QtLocation/private/qgeorouterequest_p.h b/src/QtLocationPlugin/qtlocation/include/QtLocation/5.5.1/QtLocation/private/qgeorouterequest_p.h new file mode 100644 index 0000000..00f7941 --- /dev/null +++ b/src/QtLocationPlugin/qtlocation/include/QtLocation/5.5.1/QtLocation/private/qgeorouterequest_p.h @@ -0,0 +1 @@ +#include "../../../../../src/location/maps/qgeorouterequest_p.h" diff --git a/src/QtLocationPlugin/qtlocation/include/QtLocation/5.5.1/QtLocation/private/qgeoroutesegment_p.h b/src/QtLocationPlugin/qtlocation/include/QtLocation/5.5.1/QtLocation/private/qgeoroutesegment_p.h new file mode 100644 index 0000000..77cc84a --- /dev/null +++ b/src/QtLocationPlugin/qtlocation/include/QtLocation/5.5.1/QtLocation/private/qgeoroutesegment_p.h @@ -0,0 +1 @@ +#include "../../../../../src/location/maps/qgeoroutesegment_p.h" diff --git a/src/QtLocationPlugin/qtlocation/include/QtLocation/5.5.1/QtLocation/private/qgeoroutingmanager_p.h b/src/QtLocationPlugin/qtlocation/include/QtLocation/5.5.1/QtLocation/private/qgeoroutingmanager_p.h new file mode 100644 index 0000000..1824922 --- /dev/null +++ b/src/QtLocationPlugin/qtlocation/include/QtLocation/5.5.1/QtLocation/private/qgeoroutingmanager_p.h @@ -0,0 +1 @@ +#include "../../../../../src/location/maps/qgeoroutingmanager_p.h" diff --git a/src/QtLocationPlugin/qtlocation/include/QtLocation/5.5.1/QtLocation/private/qgeoroutingmanagerengine_p.h b/src/QtLocationPlugin/qtlocation/include/QtLocation/5.5.1/QtLocation/private/qgeoroutingmanagerengine_p.h new file mode 100644 index 0000000..6f11de9 --- /dev/null +++ b/src/QtLocationPlugin/qtlocation/include/QtLocation/5.5.1/QtLocation/private/qgeoroutingmanagerengine_p.h @@ -0,0 +1 @@ +#include "../../../../../src/location/maps/qgeoroutingmanagerengine_p.h" diff --git a/src/QtLocationPlugin/qtlocation/include/QtLocation/5.5.1/QtLocation/private/qgeoserviceprovider_p.h b/src/QtLocationPlugin/qtlocation/include/QtLocation/5.5.1/QtLocation/private/qgeoserviceprovider_p.h new file mode 100644 index 0000000..88f9999 --- /dev/null +++ b/src/QtLocationPlugin/qtlocation/include/QtLocation/5.5.1/QtLocation/private/qgeoserviceprovider_p.h @@ -0,0 +1 @@ +#include "../../../../../src/location/maps/qgeoserviceprovider_p.h" diff --git a/src/QtLocationPlugin/qtlocation/include/QtLocation/5.5.1/QtLocation/private/qgeotilecache_p.h b/src/QtLocationPlugin/qtlocation/include/QtLocation/5.5.1/QtLocation/private/qgeotilecache_p.h new file mode 100644 index 0000000..bcabde3 --- /dev/null +++ b/src/QtLocationPlugin/qtlocation/include/QtLocation/5.5.1/QtLocation/private/qgeotilecache_p.h @@ -0,0 +1 @@ +#include "../../../../../src/location/maps/qgeotilecache_p.h" diff --git a/src/QtLocationPlugin/qtlocation/include/QtLocation/5.5.1/QtLocation/private/qgeotiledmap_p.h b/src/QtLocationPlugin/qtlocation/include/QtLocation/5.5.1/QtLocation/private/qgeotiledmap_p.h new file mode 100644 index 0000000..718b0a3 --- /dev/null +++ b/src/QtLocationPlugin/qtlocation/include/QtLocation/5.5.1/QtLocation/private/qgeotiledmap_p.h @@ -0,0 +1 @@ +#include "../../../../../src/location/maps/qgeotiledmap_p.h" diff --git a/src/QtLocationPlugin/qtlocation/include/QtLocation/5.5.1/QtLocation/private/qgeotiledmap_p_p.h b/src/QtLocationPlugin/qtlocation/include/QtLocation/5.5.1/QtLocation/private/qgeotiledmap_p_p.h new file mode 100644 index 0000000..10bf8bb --- /dev/null +++ b/src/QtLocationPlugin/qtlocation/include/QtLocation/5.5.1/QtLocation/private/qgeotiledmap_p_p.h @@ -0,0 +1 @@ +#include "../../../../../src/location/maps/qgeotiledmap_p_p.h" diff --git a/src/QtLocationPlugin/qtlocation/include/QtLocation/5.5.1/QtLocation/private/qgeotiledmappingmanagerengine_p.h b/src/QtLocationPlugin/qtlocation/include/QtLocation/5.5.1/QtLocation/private/qgeotiledmappingmanagerengine_p.h new file mode 100644 index 0000000..8cda0fe --- /dev/null +++ b/src/QtLocationPlugin/qtlocation/include/QtLocation/5.5.1/QtLocation/private/qgeotiledmappingmanagerengine_p.h @@ -0,0 +1 @@ +#include "../../../../../src/location/maps/qgeotiledmappingmanagerengine_p.h" diff --git a/src/QtLocationPlugin/qtlocation/include/QtLocation/5.5.1/QtLocation/private/qgeotiledmappingmanagerengine_p_p.h b/src/QtLocationPlugin/qtlocation/include/QtLocation/5.5.1/QtLocation/private/qgeotiledmappingmanagerengine_p_p.h new file mode 100644 index 0000000..1ad7d38 --- /dev/null +++ b/src/QtLocationPlugin/qtlocation/include/QtLocation/5.5.1/QtLocation/private/qgeotiledmappingmanagerengine_p_p.h @@ -0,0 +1 @@ +#include "../../../../../src/location/maps/qgeotiledmappingmanagerengine_p_p.h" diff --git a/src/QtLocationPlugin/qtlocation/include/QtLocation/5.5.1/QtLocation/private/qgeotiledmapreply_p.h b/src/QtLocationPlugin/qtlocation/include/QtLocation/5.5.1/QtLocation/private/qgeotiledmapreply_p.h new file mode 100644 index 0000000..90e0c73 --- /dev/null +++ b/src/QtLocationPlugin/qtlocation/include/QtLocation/5.5.1/QtLocation/private/qgeotiledmapreply_p.h @@ -0,0 +1 @@ +#include "../../../../../src/location/maps/qgeotiledmapreply_p.h" diff --git a/src/QtLocationPlugin/qtlocation/include/QtLocation/5.5.1/QtLocation/private/qgeotiledmapreply_p_p.h b/src/QtLocationPlugin/qtlocation/include/QtLocation/5.5.1/QtLocation/private/qgeotiledmapreply_p_p.h new file mode 100644 index 0000000..6563bf2 --- /dev/null +++ b/src/QtLocationPlugin/qtlocation/include/QtLocation/5.5.1/QtLocation/private/qgeotiledmapreply_p_p.h @@ -0,0 +1 @@ +#include "../../../../../src/location/maps/qgeotiledmapreply_p_p.h" diff --git a/src/QtLocationPlugin/qtlocation/include/QtLocation/5.5.1/QtLocation/private/qgeotilefetcher_p.h b/src/QtLocationPlugin/qtlocation/include/QtLocation/5.5.1/QtLocation/private/qgeotilefetcher_p.h new file mode 100644 index 0000000..5e921b5 --- /dev/null +++ b/src/QtLocationPlugin/qtlocation/include/QtLocation/5.5.1/QtLocation/private/qgeotilefetcher_p.h @@ -0,0 +1 @@ +#include "../../../../../src/location/maps/qgeotilefetcher_p.h" diff --git a/src/QtLocationPlugin/qtlocation/include/QtLocation/5.5.1/QtLocation/private/qgeotilefetcher_p_p.h b/src/QtLocationPlugin/qtlocation/include/QtLocation/5.5.1/QtLocation/private/qgeotilefetcher_p_p.h new file mode 100644 index 0000000..c183b71 --- /dev/null +++ b/src/QtLocationPlugin/qtlocation/include/QtLocation/5.5.1/QtLocation/private/qgeotilefetcher_p_p.h @@ -0,0 +1 @@ +#include "../../../../../src/location/maps/qgeotilefetcher_p_p.h" diff --git a/src/QtLocationPlugin/qtlocation/include/QtLocation/5.5.1/QtLocation/private/qgeotilerequestmanager_p.h b/src/QtLocationPlugin/qtlocation/include/QtLocation/5.5.1/QtLocation/private/qgeotilerequestmanager_p.h new file mode 100644 index 0000000..8872823 --- /dev/null +++ b/src/QtLocationPlugin/qtlocation/include/QtLocation/5.5.1/QtLocation/private/qgeotilerequestmanager_p.h @@ -0,0 +1 @@ +#include "../../../../../src/location/maps/qgeotilerequestmanager_p.h" diff --git a/src/QtLocationPlugin/qtlocation/include/QtLocation/5.5.1/QtLocation/private/qgeotilespec_p.h b/src/QtLocationPlugin/qtlocation/include/QtLocation/5.5.1/QtLocation/private/qgeotilespec_p.h new file mode 100644 index 0000000..7737cc7 --- /dev/null +++ b/src/QtLocationPlugin/qtlocation/include/QtLocation/5.5.1/QtLocation/private/qgeotilespec_p.h @@ -0,0 +1 @@ +#include "../../../../../src/location/maps/qgeotilespec_p.h" diff --git a/src/QtLocationPlugin/qtlocation/include/QtLocation/5.5.1/QtLocation/private/qgeotilespec_p_p.h b/src/QtLocationPlugin/qtlocation/include/QtLocation/5.5.1/QtLocation/private/qgeotilespec_p_p.h new file mode 100644 index 0000000..8f318b6 --- /dev/null +++ b/src/QtLocationPlugin/qtlocation/include/QtLocation/5.5.1/QtLocation/private/qgeotilespec_p_p.h @@ -0,0 +1 @@ +#include "../../../../../src/location/maps/qgeotilespec_p_p.h" diff --git a/src/QtLocationPlugin/qtlocation/include/QtLocation/5.5.1/QtLocation/private/qplace_p.h b/src/QtLocationPlugin/qtlocation/include/QtLocation/5.5.1/QtLocation/private/qplace_p.h new file mode 100644 index 0000000..1aabde7 --- /dev/null +++ b/src/QtLocationPlugin/qtlocation/include/QtLocation/5.5.1/QtLocation/private/qplace_p.h @@ -0,0 +1 @@ +#include "../../../../../src/location/places/qplace_p.h" diff --git a/src/QtLocationPlugin/qtlocation/include/QtLocation/5.5.1/QtLocation/private/qplaceattribute_p.h b/src/QtLocationPlugin/qtlocation/include/QtLocation/5.5.1/QtLocation/private/qplaceattribute_p.h new file mode 100644 index 0000000..ce8bd7c --- /dev/null +++ b/src/QtLocationPlugin/qtlocation/include/QtLocation/5.5.1/QtLocation/private/qplaceattribute_p.h @@ -0,0 +1 @@ +#include "../../../../../src/location/places/qplaceattribute_p.h" diff --git a/src/QtLocationPlugin/qtlocation/include/QtLocation/5.5.1/QtLocation/private/qplacecategory_p.h b/src/QtLocationPlugin/qtlocation/include/QtLocation/5.5.1/QtLocation/private/qplacecategory_p.h new file mode 100644 index 0000000..ed94a62 --- /dev/null +++ b/src/QtLocationPlugin/qtlocation/include/QtLocation/5.5.1/QtLocation/private/qplacecategory_p.h @@ -0,0 +1 @@ +#include "../../../../../src/location/places/qplacecategory_p.h" diff --git a/src/QtLocationPlugin/qtlocation/include/QtLocation/5.5.1/QtLocation/private/qplacecontactdetail_p.h b/src/QtLocationPlugin/qtlocation/include/QtLocation/5.5.1/QtLocation/private/qplacecontactdetail_p.h new file mode 100644 index 0000000..c8833e9 --- /dev/null +++ b/src/QtLocationPlugin/qtlocation/include/QtLocation/5.5.1/QtLocation/private/qplacecontactdetail_p.h @@ -0,0 +1 @@ +#include "../../../../../src/location/places/qplacecontactdetail_p.h" diff --git a/src/QtLocationPlugin/qtlocation/include/QtLocation/5.5.1/QtLocation/private/qplacecontent_p.h b/src/QtLocationPlugin/qtlocation/include/QtLocation/5.5.1/QtLocation/private/qplacecontent_p.h new file mode 100644 index 0000000..4ccd7c8 --- /dev/null +++ b/src/QtLocationPlugin/qtlocation/include/QtLocation/5.5.1/QtLocation/private/qplacecontent_p.h @@ -0,0 +1 @@ +#include "../../../../../src/location/places/qplacecontent_p.h" diff --git a/src/QtLocationPlugin/qtlocation/include/QtLocation/5.5.1/QtLocation/private/qplacecontentrequest_p.h b/src/QtLocationPlugin/qtlocation/include/QtLocation/5.5.1/QtLocation/private/qplacecontentrequest_p.h new file mode 100644 index 0000000..64ca72d --- /dev/null +++ b/src/QtLocationPlugin/qtlocation/include/QtLocation/5.5.1/QtLocation/private/qplacecontentrequest_p.h @@ -0,0 +1 @@ +#include "../../../../../src/location/places/qplacecontentrequest_p.h" diff --git a/src/QtLocationPlugin/qtlocation/include/QtLocation/5.5.1/QtLocation/private/qplaceeditorial_p.h b/src/QtLocationPlugin/qtlocation/include/QtLocation/5.5.1/QtLocation/private/qplaceeditorial_p.h new file mode 100644 index 0000000..c4caf2e --- /dev/null +++ b/src/QtLocationPlugin/qtlocation/include/QtLocation/5.5.1/QtLocation/private/qplaceeditorial_p.h @@ -0,0 +1 @@ +#include "../../../../../src/location/places/qplaceeditorial_p.h" diff --git a/src/QtLocationPlugin/qtlocation/include/QtLocation/5.5.1/QtLocation/private/qplaceicon_p.h b/src/QtLocationPlugin/qtlocation/include/QtLocation/5.5.1/QtLocation/private/qplaceicon_p.h new file mode 100644 index 0000000..37a951d --- /dev/null +++ b/src/QtLocationPlugin/qtlocation/include/QtLocation/5.5.1/QtLocation/private/qplaceicon_p.h @@ -0,0 +1 @@ +#include "../../../../../src/location/places/qplaceicon_p.h" diff --git a/src/QtLocationPlugin/qtlocation/include/QtLocation/5.5.1/QtLocation/private/qplaceimage_p.h b/src/QtLocationPlugin/qtlocation/include/QtLocation/5.5.1/QtLocation/private/qplaceimage_p.h new file mode 100644 index 0000000..9de1983 --- /dev/null +++ b/src/QtLocationPlugin/qtlocation/include/QtLocation/5.5.1/QtLocation/private/qplaceimage_p.h @@ -0,0 +1 @@ +#include "../../../../../src/location/places/qplaceimage_p.h" diff --git a/src/QtLocationPlugin/qtlocation/include/QtLocation/5.5.1/QtLocation/private/qplacemanagerengine_p.h b/src/QtLocationPlugin/qtlocation/include/QtLocation/5.5.1/QtLocation/private/qplacemanagerengine_p.h new file mode 100644 index 0000000..2e1be79 --- /dev/null +++ b/src/QtLocationPlugin/qtlocation/include/QtLocation/5.5.1/QtLocation/private/qplacemanagerengine_p.h @@ -0,0 +1 @@ +#include "../../../../../src/location/places/qplacemanagerengine_p.h" diff --git a/src/QtLocationPlugin/qtlocation/include/QtLocation/5.5.1/QtLocation/private/qplaceproposedsearchresult_p.h b/src/QtLocationPlugin/qtlocation/include/QtLocation/5.5.1/QtLocation/private/qplaceproposedsearchresult_p.h new file mode 100644 index 0000000..b9e81b0 --- /dev/null +++ b/src/QtLocationPlugin/qtlocation/include/QtLocation/5.5.1/QtLocation/private/qplaceproposedsearchresult_p.h @@ -0,0 +1 @@ +#include "../../../../../src/location/places/qplaceproposedsearchresult_p.h" diff --git a/src/QtLocationPlugin/qtlocation/include/QtLocation/5.5.1/QtLocation/private/qplaceratings_p.h b/src/QtLocationPlugin/qtlocation/include/QtLocation/5.5.1/QtLocation/private/qplaceratings_p.h new file mode 100644 index 0000000..3904253 --- /dev/null +++ b/src/QtLocationPlugin/qtlocation/include/QtLocation/5.5.1/QtLocation/private/qplaceratings_p.h @@ -0,0 +1 @@ +#include "../../../../../src/location/places/qplaceratings_p.h" diff --git a/src/QtLocationPlugin/qtlocation/include/QtLocation/5.5.1/QtLocation/private/qplacereply_p.h b/src/QtLocationPlugin/qtlocation/include/QtLocation/5.5.1/QtLocation/private/qplacereply_p.h new file mode 100644 index 0000000..fb0e273 --- /dev/null +++ b/src/QtLocationPlugin/qtlocation/include/QtLocation/5.5.1/QtLocation/private/qplacereply_p.h @@ -0,0 +1 @@ +#include "../../../../../src/location/places/qplacereply_p.h" diff --git a/src/QtLocationPlugin/qtlocation/include/QtLocation/5.5.1/QtLocation/private/qplaceresult_p.h b/src/QtLocationPlugin/qtlocation/include/QtLocation/5.5.1/QtLocation/private/qplaceresult_p.h new file mode 100644 index 0000000..94132fe --- /dev/null +++ b/src/QtLocationPlugin/qtlocation/include/QtLocation/5.5.1/QtLocation/private/qplaceresult_p.h @@ -0,0 +1 @@ +#include "../../../../../src/location/places/qplaceresult_p.h" diff --git a/src/QtLocationPlugin/qtlocation/include/QtLocation/5.5.1/QtLocation/private/qplacereview_p.h b/src/QtLocationPlugin/qtlocation/include/QtLocation/5.5.1/QtLocation/private/qplacereview_p.h new file mode 100644 index 0000000..94552a3 --- /dev/null +++ b/src/QtLocationPlugin/qtlocation/include/QtLocation/5.5.1/QtLocation/private/qplacereview_p.h @@ -0,0 +1 @@ +#include "../../../../../src/location/places/qplacereview_p.h" diff --git a/src/QtLocationPlugin/qtlocation/include/QtLocation/5.5.1/QtLocation/private/qplacesearchresult_p.h b/src/QtLocationPlugin/qtlocation/include/QtLocation/5.5.1/QtLocation/private/qplacesearchresult_p.h new file mode 100644 index 0000000..1b7404e --- /dev/null +++ b/src/QtLocationPlugin/qtlocation/include/QtLocation/5.5.1/QtLocation/private/qplacesearchresult_p.h @@ -0,0 +1 @@ +#include "../../../../../src/location/places/qplacesearchresult_p.h" diff --git a/src/QtLocationPlugin/qtlocation/include/QtLocation/5.5.1/QtLocation/private/qplacesupplier_p.h b/src/QtLocationPlugin/qtlocation/include/QtLocation/5.5.1/QtLocation/private/qplacesupplier_p.h new file mode 100644 index 0000000..718cc74 --- /dev/null +++ b/src/QtLocationPlugin/qtlocation/include/QtLocation/5.5.1/QtLocation/private/qplacesupplier_p.h @@ -0,0 +1 @@ +#include "../../../../../src/location/places/qplacesupplier_p.h" diff --git a/src/QtLocationPlugin/qtlocation/include/QtLocation/5.5.1/QtLocation/private/qplaceuser_p.h b/src/QtLocationPlugin/qtlocation/include/QtLocation/5.5.1/QtLocation/private/qplaceuser_p.h new file mode 100644 index 0000000..0dc4089 --- /dev/null +++ b/src/QtLocationPlugin/qtlocation/include/QtLocation/5.5.1/QtLocation/private/qplaceuser_p.h @@ -0,0 +1 @@ +#include "../../../../../src/location/places/qplaceuser_p.h" diff --git a/src/QtLocationPlugin/qtlocation/include/QtLocation/5.5.1/QtLocation/private/unsupportedreplies_p.h b/src/QtLocationPlugin/qtlocation/include/QtLocation/5.5.1/QtLocation/private/unsupportedreplies_p.h new file mode 100644 index 0000000..396fcf9 --- /dev/null +++ b/src/QtLocationPlugin/qtlocation/include/QtLocation/5.5.1/QtLocation/private/unsupportedreplies_p.h @@ -0,0 +1 @@ +#include "../../../../../src/location/places/unsupportedreplies_p.h" diff --git a/src/QtLocationPlugin/qtlocation/include/QtLocation/QGeoCodeReply b/src/QtLocationPlugin/qtlocation/include/QtLocation/QGeoCodeReply new file mode 100644 index 0000000..14193f8 --- /dev/null +++ b/src/QtLocationPlugin/qtlocation/include/QtLocation/QGeoCodeReply @@ -0,0 +1 @@ +#include "qgeocodereply.h" diff --git a/src/QtLocationPlugin/qtlocation/include/QtLocation/QGeoCodingManager b/src/QtLocationPlugin/qtlocation/include/QtLocation/QGeoCodingManager new file mode 100644 index 0000000..ed7d721 --- /dev/null +++ b/src/QtLocationPlugin/qtlocation/include/QtLocation/QGeoCodingManager @@ -0,0 +1 @@ +#include "qgeocodingmanager.h" diff --git a/src/QtLocationPlugin/qtlocation/include/QtLocation/QGeoCodingManagerEngine b/src/QtLocationPlugin/qtlocation/include/QtLocation/QGeoCodingManagerEngine new file mode 100644 index 0000000..69303d2 --- /dev/null +++ b/src/QtLocationPlugin/qtlocation/include/QtLocation/QGeoCodingManagerEngine @@ -0,0 +1 @@ +#include "qgeocodingmanagerengine.h" diff --git a/src/QtLocationPlugin/qtlocation/include/QtLocation/QGeoManeuver b/src/QtLocationPlugin/qtlocation/include/QtLocation/QGeoManeuver new file mode 100644 index 0000000..a3ff6a5 --- /dev/null +++ b/src/QtLocationPlugin/qtlocation/include/QtLocation/QGeoManeuver @@ -0,0 +1 @@ +#include "qgeomaneuver.h" diff --git a/src/QtLocationPlugin/qtlocation/include/QtLocation/QGeoRoute b/src/QtLocationPlugin/qtlocation/include/QtLocation/QGeoRoute new file mode 100644 index 0000000..fd6690a --- /dev/null +++ b/src/QtLocationPlugin/qtlocation/include/QtLocation/QGeoRoute @@ -0,0 +1 @@ +#include "qgeoroute.h" diff --git a/src/QtLocationPlugin/qtlocation/include/QtLocation/QGeoRouteReply b/src/QtLocationPlugin/qtlocation/include/QtLocation/QGeoRouteReply new file mode 100644 index 0000000..6109d67 --- /dev/null +++ b/src/QtLocationPlugin/qtlocation/include/QtLocation/QGeoRouteReply @@ -0,0 +1 @@ +#include "qgeoroutereply.h" diff --git a/src/QtLocationPlugin/qtlocation/include/QtLocation/QGeoRouteRequest b/src/QtLocationPlugin/qtlocation/include/QtLocation/QGeoRouteRequest new file mode 100644 index 0000000..221969b --- /dev/null +++ b/src/QtLocationPlugin/qtlocation/include/QtLocation/QGeoRouteRequest @@ -0,0 +1 @@ +#include "qgeorouterequest.h" diff --git a/src/QtLocationPlugin/qtlocation/include/QtLocation/QGeoRouteSegment b/src/QtLocationPlugin/qtlocation/include/QtLocation/QGeoRouteSegment new file mode 100644 index 0000000..74590d6 --- /dev/null +++ b/src/QtLocationPlugin/qtlocation/include/QtLocation/QGeoRouteSegment @@ -0,0 +1 @@ +#include "qgeoroutesegment.h" diff --git a/src/QtLocationPlugin/qtlocation/include/QtLocation/QGeoRoutingManager b/src/QtLocationPlugin/qtlocation/include/QtLocation/QGeoRoutingManager new file mode 100644 index 0000000..76e5224 --- /dev/null +++ b/src/QtLocationPlugin/qtlocation/include/QtLocation/QGeoRoutingManager @@ -0,0 +1 @@ +#include "qgeoroutingmanager.h" diff --git a/src/QtLocationPlugin/qtlocation/include/QtLocation/QGeoRoutingManagerEngine b/src/QtLocationPlugin/qtlocation/include/QtLocation/QGeoRoutingManagerEngine new file mode 100644 index 0000000..300a668 --- /dev/null +++ b/src/QtLocationPlugin/qtlocation/include/QtLocation/QGeoRoutingManagerEngine @@ -0,0 +1 @@ +#include "qgeoroutingmanagerengine.h" diff --git a/src/QtLocationPlugin/qtlocation/include/QtLocation/QGeoServiceProvider b/src/QtLocationPlugin/qtlocation/include/QtLocation/QGeoServiceProvider new file mode 100644 index 0000000..d5b38bc --- /dev/null +++ b/src/QtLocationPlugin/qtlocation/include/QtLocation/QGeoServiceProvider @@ -0,0 +1 @@ +#include "qgeoserviceprovider.h" diff --git a/src/QtLocationPlugin/qtlocation/include/QtLocation/QGeoServiceProviderFactory b/src/QtLocationPlugin/qtlocation/include/QtLocation/QGeoServiceProviderFactory new file mode 100644 index 0000000..9bee8fb --- /dev/null +++ b/src/QtLocationPlugin/qtlocation/include/QtLocation/QGeoServiceProviderFactory @@ -0,0 +1 @@ +#include "qgeoserviceproviderfactory.h" diff --git a/src/QtLocationPlugin/qtlocation/include/QtLocation/QLocation b/src/QtLocationPlugin/qtlocation/include/QtLocation/QLocation new file mode 100644 index 0000000..e433f1e --- /dev/null +++ b/src/QtLocationPlugin/qtlocation/include/QtLocation/QLocation @@ -0,0 +1 @@ +#include "qlocation.h" diff --git a/src/QtLocationPlugin/qtlocation/include/QtLocation/QPlace b/src/QtLocationPlugin/qtlocation/include/QtLocation/QPlace new file mode 100644 index 0000000..51b4bac --- /dev/null +++ b/src/QtLocationPlugin/qtlocation/include/QtLocation/QPlace @@ -0,0 +1 @@ +#include "qplace.h" diff --git a/src/QtLocationPlugin/qtlocation/include/QtLocation/QPlaceAttribute b/src/QtLocationPlugin/qtlocation/include/QtLocation/QPlaceAttribute new file mode 100644 index 0000000..05d36df --- /dev/null +++ b/src/QtLocationPlugin/qtlocation/include/QtLocation/QPlaceAttribute @@ -0,0 +1 @@ +#include "qplaceattribute.h" diff --git a/src/QtLocationPlugin/qtlocation/include/QtLocation/QPlaceCategory b/src/QtLocationPlugin/qtlocation/include/QtLocation/QPlaceCategory new file mode 100644 index 0000000..959738a --- /dev/null +++ b/src/QtLocationPlugin/qtlocation/include/QtLocation/QPlaceCategory @@ -0,0 +1 @@ +#include "qplacecategory.h" diff --git a/src/QtLocationPlugin/qtlocation/include/QtLocation/QPlaceContactDetail b/src/QtLocationPlugin/qtlocation/include/QtLocation/QPlaceContactDetail new file mode 100644 index 0000000..4ff2d2d --- /dev/null +++ b/src/QtLocationPlugin/qtlocation/include/QtLocation/QPlaceContactDetail @@ -0,0 +1 @@ +#include "qplacecontactdetail.h" diff --git a/src/QtLocationPlugin/qtlocation/include/QtLocation/QPlaceContent b/src/QtLocationPlugin/qtlocation/include/QtLocation/QPlaceContent new file mode 100644 index 0000000..7ebb145 --- /dev/null +++ b/src/QtLocationPlugin/qtlocation/include/QtLocation/QPlaceContent @@ -0,0 +1 @@ +#include "qplacecontent.h" diff --git a/src/QtLocationPlugin/qtlocation/include/QtLocation/QPlaceContentReply b/src/QtLocationPlugin/qtlocation/include/QtLocation/QPlaceContentReply new file mode 100644 index 0000000..67fc8a8 --- /dev/null +++ b/src/QtLocationPlugin/qtlocation/include/QtLocation/QPlaceContentReply @@ -0,0 +1 @@ +#include "qplacecontentreply.h" diff --git a/src/QtLocationPlugin/qtlocation/include/QtLocation/QPlaceContentRequest b/src/QtLocationPlugin/qtlocation/include/QtLocation/QPlaceContentRequest new file mode 100644 index 0000000..43459f4 --- /dev/null +++ b/src/QtLocationPlugin/qtlocation/include/QtLocation/QPlaceContentRequest @@ -0,0 +1 @@ +#include "qplacecontentrequest.h" diff --git a/src/QtLocationPlugin/qtlocation/include/QtLocation/QPlaceDetailsReply b/src/QtLocationPlugin/qtlocation/include/QtLocation/QPlaceDetailsReply new file mode 100644 index 0000000..1455310 --- /dev/null +++ b/src/QtLocationPlugin/qtlocation/include/QtLocation/QPlaceDetailsReply @@ -0,0 +1 @@ +#include "qplacedetailsreply.h" diff --git a/src/QtLocationPlugin/qtlocation/include/QtLocation/QPlaceEditorial b/src/QtLocationPlugin/qtlocation/include/QtLocation/QPlaceEditorial new file mode 100644 index 0000000..d1a232a --- /dev/null +++ b/src/QtLocationPlugin/qtlocation/include/QtLocation/QPlaceEditorial @@ -0,0 +1 @@ +#include "qplaceeditorial.h" diff --git a/src/QtLocationPlugin/qtlocation/include/QtLocation/QPlaceIcon b/src/QtLocationPlugin/qtlocation/include/QtLocation/QPlaceIcon new file mode 100644 index 0000000..fae7a4e --- /dev/null +++ b/src/QtLocationPlugin/qtlocation/include/QtLocation/QPlaceIcon @@ -0,0 +1 @@ +#include "qplaceicon.h" diff --git a/src/QtLocationPlugin/qtlocation/include/QtLocation/QPlaceIdReply b/src/QtLocationPlugin/qtlocation/include/QtLocation/QPlaceIdReply new file mode 100644 index 0000000..8709b65 --- /dev/null +++ b/src/QtLocationPlugin/qtlocation/include/QtLocation/QPlaceIdReply @@ -0,0 +1 @@ +#include "qplaceidreply.h" diff --git a/src/QtLocationPlugin/qtlocation/include/QtLocation/QPlaceImage b/src/QtLocationPlugin/qtlocation/include/QtLocation/QPlaceImage new file mode 100644 index 0000000..606c306 --- /dev/null +++ b/src/QtLocationPlugin/qtlocation/include/QtLocation/QPlaceImage @@ -0,0 +1 @@ +#include "qplaceimage.h" diff --git a/src/QtLocationPlugin/qtlocation/include/QtLocation/QPlaceManager b/src/QtLocationPlugin/qtlocation/include/QtLocation/QPlaceManager new file mode 100644 index 0000000..7973c48 --- /dev/null +++ b/src/QtLocationPlugin/qtlocation/include/QtLocation/QPlaceManager @@ -0,0 +1 @@ +#include "qplacemanager.h" diff --git a/src/QtLocationPlugin/qtlocation/include/QtLocation/QPlaceManagerEngine b/src/QtLocationPlugin/qtlocation/include/QtLocation/QPlaceManagerEngine new file mode 100644 index 0000000..27f07fc --- /dev/null +++ b/src/QtLocationPlugin/qtlocation/include/QtLocation/QPlaceManagerEngine @@ -0,0 +1 @@ +#include "qplacemanagerengine.h" diff --git a/src/QtLocationPlugin/qtlocation/include/QtLocation/QPlaceMatchReply b/src/QtLocationPlugin/qtlocation/include/QtLocation/QPlaceMatchReply new file mode 100644 index 0000000..37ffdf2 --- /dev/null +++ b/src/QtLocationPlugin/qtlocation/include/QtLocation/QPlaceMatchReply @@ -0,0 +1 @@ +#include "qplacematchreply.h" diff --git a/src/QtLocationPlugin/qtlocation/include/QtLocation/QPlaceMatchRequest b/src/QtLocationPlugin/qtlocation/include/QtLocation/QPlaceMatchRequest new file mode 100644 index 0000000..ceaeb96 --- /dev/null +++ b/src/QtLocationPlugin/qtlocation/include/QtLocation/QPlaceMatchRequest @@ -0,0 +1 @@ +#include "qplacematchrequest.h" diff --git a/src/QtLocationPlugin/qtlocation/include/QtLocation/QPlaceProposedSearchResult b/src/QtLocationPlugin/qtlocation/include/QtLocation/QPlaceProposedSearchResult new file mode 100644 index 0000000..c43f2a6 --- /dev/null +++ b/src/QtLocationPlugin/qtlocation/include/QtLocation/QPlaceProposedSearchResult @@ -0,0 +1 @@ +#include "qplaceproposedsearchresult.h" diff --git a/src/QtLocationPlugin/qtlocation/include/QtLocation/QPlaceRatings b/src/QtLocationPlugin/qtlocation/include/QtLocation/QPlaceRatings new file mode 100644 index 0000000..4b7f63c --- /dev/null +++ b/src/QtLocationPlugin/qtlocation/include/QtLocation/QPlaceRatings @@ -0,0 +1 @@ +#include "qplaceratings.h" diff --git a/src/QtLocationPlugin/qtlocation/include/QtLocation/QPlaceReply b/src/QtLocationPlugin/qtlocation/include/QtLocation/QPlaceReply new file mode 100644 index 0000000..f0654b8 --- /dev/null +++ b/src/QtLocationPlugin/qtlocation/include/QtLocation/QPlaceReply @@ -0,0 +1 @@ +#include "qplacereply.h" diff --git a/src/QtLocationPlugin/qtlocation/include/QtLocation/QPlaceResult b/src/QtLocationPlugin/qtlocation/include/QtLocation/QPlaceResult new file mode 100644 index 0000000..4f5c8db --- /dev/null +++ b/src/QtLocationPlugin/qtlocation/include/QtLocation/QPlaceResult @@ -0,0 +1 @@ +#include "qplaceresult.h" diff --git a/src/QtLocationPlugin/qtlocation/include/QtLocation/QPlaceReview b/src/QtLocationPlugin/qtlocation/include/QtLocation/QPlaceReview new file mode 100644 index 0000000..83cccec --- /dev/null +++ b/src/QtLocationPlugin/qtlocation/include/QtLocation/QPlaceReview @@ -0,0 +1 @@ +#include "qplacereview.h" diff --git a/src/QtLocationPlugin/qtlocation/include/QtLocation/QPlaceSearchReply b/src/QtLocationPlugin/qtlocation/include/QtLocation/QPlaceSearchReply new file mode 100644 index 0000000..395a61a --- /dev/null +++ b/src/QtLocationPlugin/qtlocation/include/QtLocation/QPlaceSearchReply @@ -0,0 +1 @@ +#include "qplacesearchreply.h" diff --git a/src/QtLocationPlugin/qtlocation/include/QtLocation/QPlaceSearchRequest b/src/QtLocationPlugin/qtlocation/include/QtLocation/QPlaceSearchRequest new file mode 100644 index 0000000..b247dab --- /dev/null +++ b/src/QtLocationPlugin/qtlocation/include/QtLocation/QPlaceSearchRequest @@ -0,0 +1 @@ +#include "qplacesearchrequest.h" diff --git a/src/QtLocationPlugin/qtlocation/include/QtLocation/QPlaceSearchResult b/src/QtLocationPlugin/qtlocation/include/QtLocation/QPlaceSearchResult new file mode 100644 index 0000000..2298271 --- /dev/null +++ b/src/QtLocationPlugin/qtlocation/include/QtLocation/QPlaceSearchResult @@ -0,0 +1 @@ +#include "qplacesearchresult.h" diff --git a/src/QtLocationPlugin/qtlocation/include/QtLocation/QPlaceSearchSuggestionReply b/src/QtLocationPlugin/qtlocation/include/QtLocation/QPlaceSearchSuggestionReply new file mode 100644 index 0000000..e7a4f91 --- /dev/null +++ b/src/QtLocationPlugin/qtlocation/include/QtLocation/QPlaceSearchSuggestionReply @@ -0,0 +1 @@ +#include "qplacesearchsuggestionreply.h" diff --git a/src/QtLocationPlugin/qtlocation/include/QtLocation/QPlaceSupplier b/src/QtLocationPlugin/qtlocation/include/QtLocation/QPlaceSupplier new file mode 100644 index 0000000..465b46d --- /dev/null +++ b/src/QtLocationPlugin/qtlocation/include/QtLocation/QPlaceSupplier @@ -0,0 +1 @@ +#include "qplacesupplier.h" diff --git a/src/QtLocationPlugin/qtlocation/include/QtLocation/QPlaceUser b/src/QtLocationPlugin/qtlocation/include/QtLocation/QPlaceUser new file mode 100644 index 0000000..5acba29 --- /dev/null +++ b/src/QtLocationPlugin/qtlocation/include/QtLocation/QPlaceUser @@ -0,0 +1 @@ +#include "qplaceuser.h" diff --git a/src/QtLocationPlugin/qtlocation/include/QtLocation/QtLocation b/src/QtLocationPlugin/qtlocation/include/QtLocation/QtLocation new file mode 100644 index 0000000..897c1aa --- /dev/null +++ b/src/QtLocationPlugin/qtlocation/include/QtLocation/QtLocation @@ -0,0 +1,47 @@ +#ifndef QT_QTLOCATION_MODULE_H +#define QT_QTLOCATION_MODULE_H +#include +#include "qlocation.h" +#include "qlocationglobal.h" +#include "qgeocodereply.h" +#include "qgeocodingmanager.h" +#include "qgeocodingmanagerengine.h" +#include "qgeomaneuver.h" +#include "qgeoroute.h" +#include "qgeoroutereply.h" +#include "qgeorouterequest.h" +#include "qgeoroutesegment.h" +#include "qgeoroutingmanager.h" +#include "qgeoroutingmanagerengine.h" +#include "qgeoserviceprovider.h" +#include "qgeoserviceproviderfactory.h" +#include "placemacro.h" +#include "qplace.h" +#include "qplaceattribute.h" +#include "qplacecategory.h" +#include "qplacecontactdetail.h" +#include "qplacecontent.h" +#include "qplacecontentreply.h" +#include "qplacecontentrequest.h" +#include "qplacedetailsreply.h" +#include "qplaceeditorial.h" +#include "qplaceicon.h" +#include "qplaceidreply.h" +#include "qplaceimage.h" +#include "qplacemanager.h" +#include "qplacemanagerengine.h" +#include "qplacematchreply.h" +#include "qplacematchrequest.h" +#include "qplaceproposedsearchresult.h" +#include "qplaceratings.h" +#include "qplacereply.h" +#include "qplaceresult.h" +#include "qplacereview.h" +#include "qplacesearchreply.h" +#include "qplacesearchrequest.h" +#include "qplacesearchresult.h" +#include "qplacesearchsuggestionreply.h" +#include "qplacesupplier.h" +#include "qplaceuser.h" +#include "qtlocationversion.h" +#endif diff --git a/src/QtLocationPlugin/qtlocation/include/QtLocation/QtLocationVersion b/src/QtLocationPlugin/qtlocation/include/QtLocation/QtLocationVersion new file mode 100644 index 0000000..8da2499 --- /dev/null +++ b/src/QtLocationPlugin/qtlocation/include/QtLocation/QtLocationVersion @@ -0,0 +1 @@ +#include "qtlocationversion.h" diff --git a/src/QtLocationPlugin/qtlocation/include/QtLocation/placemacro.h b/src/QtLocationPlugin/qtlocation/include/QtLocation/placemacro.h new file mode 100644 index 0000000..19404ab --- /dev/null +++ b/src/QtLocationPlugin/qtlocation/include/QtLocation/placemacro.h @@ -0,0 +1 @@ +#include "../../src/location/places/placemacro.h" diff --git a/src/QtLocationPlugin/qtlocation/include/QtLocation/qgeocodereply.h b/src/QtLocationPlugin/qtlocation/include/QtLocation/qgeocodereply.h new file mode 100644 index 0000000..ba6d712 --- /dev/null +++ b/src/QtLocationPlugin/qtlocation/include/QtLocation/qgeocodereply.h @@ -0,0 +1 @@ +#include "../../src/location/maps/qgeocodereply.h" diff --git a/src/QtLocationPlugin/qtlocation/include/QtLocation/qgeocodingmanager.h b/src/QtLocationPlugin/qtlocation/include/QtLocation/qgeocodingmanager.h new file mode 100644 index 0000000..7ddf50f --- /dev/null +++ b/src/QtLocationPlugin/qtlocation/include/QtLocation/qgeocodingmanager.h @@ -0,0 +1 @@ +#include "../../src/location/maps/qgeocodingmanager.h" diff --git a/src/QtLocationPlugin/qtlocation/include/QtLocation/qgeocodingmanagerengine.h b/src/QtLocationPlugin/qtlocation/include/QtLocation/qgeocodingmanagerengine.h new file mode 100644 index 0000000..18d06ef --- /dev/null +++ b/src/QtLocationPlugin/qtlocation/include/QtLocation/qgeocodingmanagerengine.h @@ -0,0 +1 @@ +#include "../../src/location/maps/qgeocodingmanagerengine.h" diff --git a/src/QtLocationPlugin/qtlocation/include/QtLocation/qgeomaneuver.h b/src/QtLocationPlugin/qtlocation/include/QtLocation/qgeomaneuver.h new file mode 100644 index 0000000..72e145b --- /dev/null +++ b/src/QtLocationPlugin/qtlocation/include/QtLocation/qgeomaneuver.h @@ -0,0 +1 @@ +#include "../../src/location/maps/qgeomaneuver.h" diff --git a/src/QtLocationPlugin/qtlocation/include/QtLocation/qgeoroute.h b/src/QtLocationPlugin/qtlocation/include/QtLocation/qgeoroute.h new file mode 100644 index 0000000..b0bdf34 --- /dev/null +++ b/src/QtLocationPlugin/qtlocation/include/QtLocation/qgeoroute.h @@ -0,0 +1 @@ +#include "../../src/location/maps/qgeoroute.h" diff --git a/src/QtLocationPlugin/qtlocation/include/QtLocation/qgeoroutereply.h b/src/QtLocationPlugin/qtlocation/include/QtLocation/qgeoroutereply.h new file mode 100644 index 0000000..34d8e88 --- /dev/null +++ b/src/QtLocationPlugin/qtlocation/include/QtLocation/qgeoroutereply.h @@ -0,0 +1 @@ +#include "../../src/location/maps/qgeoroutereply.h" diff --git a/src/QtLocationPlugin/qtlocation/include/QtLocation/qgeorouterequest.h b/src/QtLocationPlugin/qtlocation/include/QtLocation/qgeorouterequest.h new file mode 100644 index 0000000..33bf11d --- /dev/null +++ b/src/QtLocationPlugin/qtlocation/include/QtLocation/qgeorouterequest.h @@ -0,0 +1 @@ +#include "../../src/location/maps/qgeorouterequest.h" diff --git a/src/QtLocationPlugin/qtlocation/include/QtLocation/qgeoroutesegment.h b/src/QtLocationPlugin/qtlocation/include/QtLocation/qgeoroutesegment.h new file mode 100644 index 0000000..7205732 --- /dev/null +++ b/src/QtLocationPlugin/qtlocation/include/QtLocation/qgeoroutesegment.h @@ -0,0 +1 @@ +#include "../../src/location/maps/qgeoroutesegment.h" diff --git a/src/QtLocationPlugin/qtlocation/include/QtLocation/qgeoroutingmanager.h b/src/QtLocationPlugin/qtlocation/include/QtLocation/qgeoroutingmanager.h new file mode 100644 index 0000000..8ae46be --- /dev/null +++ b/src/QtLocationPlugin/qtlocation/include/QtLocation/qgeoroutingmanager.h @@ -0,0 +1 @@ +#include "../../src/location/maps/qgeoroutingmanager.h" diff --git a/src/QtLocationPlugin/qtlocation/include/QtLocation/qgeoroutingmanagerengine.h b/src/QtLocationPlugin/qtlocation/include/QtLocation/qgeoroutingmanagerengine.h new file mode 100644 index 0000000..4b26f14 --- /dev/null +++ b/src/QtLocationPlugin/qtlocation/include/QtLocation/qgeoroutingmanagerengine.h @@ -0,0 +1 @@ +#include "../../src/location/maps/qgeoroutingmanagerengine.h" diff --git a/src/QtLocationPlugin/qtlocation/include/QtLocation/qgeoserviceprovider.h b/src/QtLocationPlugin/qtlocation/include/QtLocation/qgeoserviceprovider.h new file mode 100644 index 0000000..4aca205 --- /dev/null +++ b/src/QtLocationPlugin/qtlocation/include/QtLocation/qgeoserviceprovider.h @@ -0,0 +1 @@ +#include "../../src/location/maps/qgeoserviceprovider.h" diff --git a/src/QtLocationPlugin/qtlocation/include/QtLocation/qgeoserviceproviderfactory.h b/src/QtLocationPlugin/qtlocation/include/QtLocation/qgeoserviceproviderfactory.h new file mode 100644 index 0000000..39a5e4c --- /dev/null +++ b/src/QtLocationPlugin/qtlocation/include/QtLocation/qgeoserviceproviderfactory.h @@ -0,0 +1 @@ +#include "../../src/location/maps/qgeoserviceproviderfactory.h" diff --git a/src/QtLocationPlugin/qtlocation/include/QtLocation/qlocation.h b/src/QtLocationPlugin/qtlocation/include/QtLocation/qlocation.h new file mode 100644 index 0000000..4c266a1 --- /dev/null +++ b/src/QtLocationPlugin/qtlocation/include/QtLocation/qlocation.h @@ -0,0 +1 @@ +#include "../../src/location/qlocation.h" diff --git a/src/QtLocationPlugin/qtlocation/include/QtLocation/qlocationglobal.h b/src/QtLocationPlugin/qtlocation/include/QtLocation/qlocationglobal.h new file mode 100644 index 0000000..9959740 --- /dev/null +++ b/src/QtLocationPlugin/qtlocation/include/QtLocation/qlocationglobal.h @@ -0,0 +1 @@ +#include "../../src/location/qlocationglobal.h" diff --git a/src/QtLocationPlugin/qtlocation/include/QtLocation/qplace.h b/src/QtLocationPlugin/qtlocation/include/QtLocation/qplace.h new file mode 100644 index 0000000..7ce3cf4 --- /dev/null +++ b/src/QtLocationPlugin/qtlocation/include/QtLocation/qplace.h @@ -0,0 +1 @@ +#include "../../src/location/places/qplace.h" diff --git a/src/QtLocationPlugin/qtlocation/include/QtLocation/qplaceattribute.h b/src/QtLocationPlugin/qtlocation/include/QtLocation/qplaceattribute.h new file mode 100644 index 0000000..9ade0c5 --- /dev/null +++ b/src/QtLocationPlugin/qtlocation/include/QtLocation/qplaceattribute.h @@ -0,0 +1 @@ +#include "../../src/location/places/qplaceattribute.h" diff --git a/src/QtLocationPlugin/qtlocation/include/QtLocation/qplacecategory.h b/src/QtLocationPlugin/qtlocation/include/QtLocation/qplacecategory.h new file mode 100644 index 0000000..310d15c --- /dev/null +++ b/src/QtLocationPlugin/qtlocation/include/QtLocation/qplacecategory.h @@ -0,0 +1 @@ +#include "../../src/location/places/qplacecategory.h" diff --git a/src/QtLocationPlugin/qtlocation/include/QtLocation/qplacecontactdetail.h b/src/QtLocationPlugin/qtlocation/include/QtLocation/qplacecontactdetail.h new file mode 100644 index 0000000..179040c --- /dev/null +++ b/src/QtLocationPlugin/qtlocation/include/QtLocation/qplacecontactdetail.h @@ -0,0 +1 @@ +#include "../../src/location/places/qplacecontactdetail.h" diff --git a/src/QtLocationPlugin/qtlocation/include/QtLocation/qplacecontent.h b/src/QtLocationPlugin/qtlocation/include/QtLocation/qplacecontent.h new file mode 100644 index 0000000..675d5ee --- /dev/null +++ b/src/QtLocationPlugin/qtlocation/include/QtLocation/qplacecontent.h @@ -0,0 +1 @@ +#include "../../src/location/places/qplacecontent.h" diff --git a/src/QtLocationPlugin/qtlocation/include/QtLocation/qplacecontentreply.h b/src/QtLocationPlugin/qtlocation/include/QtLocation/qplacecontentreply.h new file mode 100644 index 0000000..3129a8f --- /dev/null +++ b/src/QtLocationPlugin/qtlocation/include/QtLocation/qplacecontentreply.h @@ -0,0 +1 @@ +#include "../../src/location/places/qplacecontentreply.h" diff --git a/src/QtLocationPlugin/qtlocation/include/QtLocation/qplacecontentrequest.h b/src/QtLocationPlugin/qtlocation/include/QtLocation/qplacecontentrequest.h new file mode 100644 index 0000000..1578507 --- /dev/null +++ b/src/QtLocationPlugin/qtlocation/include/QtLocation/qplacecontentrequest.h @@ -0,0 +1 @@ +#include "../../src/location/places/qplacecontentrequest.h" diff --git a/src/QtLocationPlugin/qtlocation/include/QtLocation/qplacedetailsreply.h b/src/QtLocationPlugin/qtlocation/include/QtLocation/qplacedetailsreply.h new file mode 100644 index 0000000..586e16a --- /dev/null +++ b/src/QtLocationPlugin/qtlocation/include/QtLocation/qplacedetailsreply.h @@ -0,0 +1 @@ +#include "../../src/location/places/qplacedetailsreply.h" diff --git a/src/QtLocationPlugin/qtlocation/include/QtLocation/qplaceeditorial.h b/src/QtLocationPlugin/qtlocation/include/QtLocation/qplaceeditorial.h new file mode 100644 index 0000000..9dac346 --- /dev/null +++ b/src/QtLocationPlugin/qtlocation/include/QtLocation/qplaceeditorial.h @@ -0,0 +1 @@ +#include "../../src/location/places/qplaceeditorial.h" diff --git a/src/QtLocationPlugin/qtlocation/include/QtLocation/qplaceicon.h b/src/QtLocationPlugin/qtlocation/include/QtLocation/qplaceicon.h new file mode 100644 index 0000000..558ac04 --- /dev/null +++ b/src/QtLocationPlugin/qtlocation/include/QtLocation/qplaceicon.h @@ -0,0 +1 @@ +#include "../../src/location/places/qplaceicon.h" diff --git a/src/QtLocationPlugin/qtlocation/include/QtLocation/qplaceidreply.h b/src/QtLocationPlugin/qtlocation/include/QtLocation/qplaceidreply.h new file mode 100644 index 0000000..8d19185 --- /dev/null +++ b/src/QtLocationPlugin/qtlocation/include/QtLocation/qplaceidreply.h @@ -0,0 +1 @@ +#include "../../src/location/places/qplaceidreply.h" diff --git a/src/QtLocationPlugin/qtlocation/include/QtLocation/qplaceimage.h b/src/QtLocationPlugin/qtlocation/include/QtLocation/qplaceimage.h new file mode 100644 index 0000000..856deb1 --- /dev/null +++ b/src/QtLocationPlugin/qtlocation/include/QtLocation/qplaceimage.h @@ -0,0 +1 @@ +#include "../../src/location/places/qplaceimage.h" diff --git a/src/QtLocationPlugin/qtlocation/include/QtLocation/qplacemanager.h b/src/QtLocationPlugin/qtlocation/include/QtLocation/qplacemanager.h new file mode 100644 index 0000000..689e043 --- /dev/null +++ b/src/QtLocationPlugin/qtlocation/include/QtLocation/qplacemanager.h @@ -0,0 +1 @@ +#include "../../src/location/places/qplacemanager.h" diff --git a/src/QtLocationPlugin/qtlocation/include/QtLocation/qplacemanagerengine.h b/src/QtLocationPlugin/qtlocation/include/QtLocation/qplacemanagerengine.h new file mode 100644 index 0000000..8966e6d --- /dev/null +++ b/src/QtLocationPlugin/qtlocation/include/QtLocation/qplacemanagerengine.h @@ -0,0 +1 @@ +#include "../../src/location/places/qplacemanagerengine.h" diff --git a/src/QtLocationPlugin/qtlocation/include/QtLocation/qplacematchreply.h b/src/QtLocationPlugin/qtlocation/include/QtLocation/qplacematchreply.h new file mode 100644 index 0000000..123bd8f --- /dev/null +++ b/src/QtLocationPlugin/qtlocation/include/QtLocation/qplacematchreply.h @@ -0,0 +1 @@ +#include "../../src/location/places/qplacematchreply.h" diff --git a/src/QtLocationPlugin/qtlocation/include/QtLocation/qplacematchrequest.h b/src/QtLocationPlugin/qtlocation/include/QtLocation/qplacematchrequest.h new file mode 100644 index 0000000..bca1b69 --- /dev/null +++ b/src/QtLocationPlugin/qtlocation/include/QtLocation/qplacematchrequest.h @@ -0,0 +1 @@ +#include "../../src/location/places/qplacematchrequest.h" diff --git a/src/QtLocationPlugin/qtlocation/include/QtLocation/qplaceproposedsearchresult.h b/src/QtLocationPlugin/qtlocation/include/QtLocation/qplaceproposedsearchresult.h new file mode 100644 index 0000000..9a609b4 --- /dev/null +++ b/src/QtLocationPlugin/qtlocation/include/QtLocation/qplaceproposedsearchresult.h @@ -0,0 +1 @@ +#include "../../src/location/places/qplaceproposedsearchresult.h" diff --git a/src/QtLocationPlugin/qtlocation/include/QtLocation/qplaceratings.h b/src/QtLocationPlugin/qtlocation/include/QtLocation/qplaceratings.h new file mode 100644 index 0000000..dc6ad10 --- /dev/null +++ b/src/QtLocationPlugin/qtlocation/include/QtLocation/qplaceratings.h @@ -0,0 +1 @@ +#include "../../src/location/places/qplaceratings.h" diff --git a/src/QtLocationPlugin/qtlocation/include/QtLocation/qplacereply.h b/src/QtLocationPlugin/qtlocation/include/QtLocation/qplacereply.h new file mode 100644 index 0000000..96a2fef --- /dev/null +++ b/src/QtLocationPlugin/qtlocation/include/QtLocation/qplacereply.h @@ -0,0 +1 @@ +#include "../../src/location/places/qplacereply.h" diff --git a/src/QtLocationPlugin/qtlocation/include/QtLocation/qplaceresult.h b/src/QtLocationPlugin/qtlocation/include/QtLocation/qplaceresult.h new file mode 100644 index 0000000..48e4bed --- /dev/null +++ b/src/QtLocationPlugin/qtlocation/include/QtLocation/qplaceresult.h @@ -0,0 +1 @@ +#include "../../src/location/places/qplaceresult.h" diff --git a/src/QtLocationPlugin/qtlocation/include/QtLocation/qplacereview.h b/src/QtLocationPlugin/qtlocation/include/QtLocation/qplacereview.h new file mode 100644 index 0000000..19273d9 --- /dev/null +++ b/src/QtLocationPlugin/qtlocation/include/QtLocation/qplacereview.h @@ -0,0 +1 @@ +#include "../../src/location/places/qplacereview.h" diff --git a/src/QtLocationPlugin/qtlocation/include/QtLocation/qplacesearchreply.h b/src/QtLocationPlugin/qtlocation/include/QtLocation/qplacesearchreply.h new file mode 100644 index 0000000..5e45879 --- /dev/null +++ b/src/QtLocationPlugin/qtlocation/include/QtLocation/qplacesearchreply.h @@ -0,0 +1 @@ +#include "../../src/location/places/qplacesearchreply.h" diff --git a/src/QtLocationPlugin/qtlocation/include/QtLocation/qplacesearchrequest.h b/src/QtLocationPlugin/qtlocation/include/QtLocation/qplacesearchrequest.h new file mode 100644 index 0000000..794ac51 --- /dev/null +++ b/src/QtLocationPlugin/qtlocation/include/QtLocation/qplacesearchrequest.h @@ -0,0 +1 @@ +#include "../../src/location/places/qplacesearchrequest.h" diff --git a/src/QtLocationPlugin/qtlocation/include/QtLocation/qplacesearchresult.h b/src/QtLocationPlugin/qtlocation/include/QtLocation/qplacesearchresult.h new file mode 100644 index 0000000..102d1e8 --- /dev/null +++ b/src/QtLocationPlugin/qtlocation/include/QtLocation/qplacesearchresult.h @@ -0,0 +1 @@ +#include "../../src/location/places/qplacesearchresult.h" diff --git a/src/QtLocationPlugin/qtlocation/include/QtLocation/qplacesearchsuggestionreply.h b/src/QtLocationPlugin/qtlocation/include/QtLocation/qplacesearchsuggestionreply.h new file mode 100644 index 0000000..72cdc6a --- /dev/null +++ b/src/QtLocationPlugin/qtlocation/include/QtLocation/qplacesearchsuggestionreply.h @@ -0,0 +1 @@ +#include "../../src/location/places/qplacesearchsuggestionreply.h" diff --git a/src/QtLocationPlugin/qtlocation/include/QtLocation/qplacesupplier.h b/src/QtLocationPlugin/qtlocation/include/QtLocation/qplacesupplier.h new file mode 100644 index 0000000..071102d --- /dev/null +++ b/src/QtLocationPlugin/qtlocation/include/QtLocation/qplacesupplier.h @@ -0,0 +1 @@ +#include "../../src/location/places/qplacesupplier.h" diff --git a/src/QtLocationPlugin/qtlocation/include/QtLocation/qplaceuser.h b/src/QtLocationPlugin/qtlocation/include/QtLocation/qplaceuser.h new file mode 100644 index 0000000..88d3b28 --- /dev/null +++ b/src/QtLocationPlugin/qtlocation/include/QtLocation/qplaceuser.h @@ -0,0 +1 @@ +#include "../../src/location/places/qplaceuser.h" diff --git a/src/QtLocationPlugin/qtlocation/include/QtLocation/qtlocationversion.h b/src/QtLocationPlugin/qtlocation/include/QtLocation/qtlocationversion.h new file mode 100644 index 0000000..9a2b1c8 --- /dev/null +++ b/src/QtLocationPlugin/qtlocation/include/QtLocation/qtlocationversion.h @@ -0,0 +1,9 @@ +/* This file was generated by syncqt. */ +#ifndef QT_QTLOCATION_VERSION_H +#define QT_QTLOCATION_VERSION_H + +#define QTLOCATION_VERSION_STR "5.5.1" + +#define QTLOCATION_VERSION 0x050501 + +#endif // QT_QTLOCATION_VERSION_H diff --git a/src/QtLocationPlugin/qtlocation/include/QtPositioning/5.5.1/QtPositioning/private/qdeclarativegeoaddress_p.h b/src/QtLocationPlugin/qtlocation/include/QtPositioning/5.5.1/QtPositioning/private/qdeclarativegeoaddress_p.h new file mode 100644 index 0000000..56562a7 --- /dev/null +++ b/src/QtLocationPlugin/qtlocation/include/QtPositioning/5.5.1/QtPositioning/private/qdeclarativegeoaddress_p.h @@ -0,0 +1 @@ +#include "../../../../../src/positioning/qdeclarativegeoaddress_p.h" diff --git a/src/QtLocationPlugin/qtlocation/include/QtPositioning/5.5.1/QtPositioning/private/qdeclarativegeolocation_p.h b/src/QtLocationPlugin/qtlocation/include/QtPositioning/5.5.1/QtPositioning/private/qdeclarativegeolocation_p.h new file mode 100644 index 0000000..ce5bbf3 --- /dev/null +++ b/src/QtLocationPlugin/qtlocation/include/QtPositioning/5.5.1/QtPositioning/private/qdeclarativegeolocation_p.h @@ -0,0 +1 @@ +#include "../../../../../src/positioning/qdeclarativegeolocation_p.h" diff --git a/src/QtLocationPlugin/qtlocation/include/QtPositioning/5.5.1/QtPositioning/private/qdoublevector2d_p.h b/src/QtLocationPlugin/qtlocation/include/QtPositioning/5.5.1/QtPositioning/private/qdoublevector2d_p.h new file mode 100644 index 0000000..a679f2f --- /dev/null +++ b/src/QtLocationPlugin/qtlocation/include/QtPositioning/5.5.1/QtPositioning/private/qdoublevector2d_p.h @@ -0,0 +1 @@ +#include "../../../../../src/positioning/qdoublevector2d_p.h" diff --git a/src/QtLocationPlugin/qtlocation/include/QtPositioning/5.5.1/QtPositioning/private/qdoublevector3d_p.h b/src/QtLocationPlugin/qtlocation/include/QtPositioning/5.5.1/QtPositioning/private/qdoublevector3d_p.h new file mode 100644 index 0000000..6b1a13c --- /dev/null +++ b/src/QtLocationPlugin/qtlocation/include/QtPositioning/5.5.1/QtPositioning/private/qdoublevector3d_p.h @@ -0,0 +1 @@ +#include "../../../../../src/positioning/qdoublevector3d_p.h" diff --git a/src/QtLocationPlugin/qtlocation/include/QtPositioning/5.5.1/QtPositioning/private/qgeoaddress_p.h b/src/QtLocationPlugin/qtlocation/include/QtPositioning/5.5.1/QtPositioning/private/qgeoaddress_p.h new file mode 100644 index 0000000..b494007 --- /dev/null +++ b/src/QtLocationPlugin/qtlocation/include/QtPositioning/5.5.1/QtPositioning/private/qgeoaddress_p.h @@ -0,0 +1 @@ +#include "../../../../../src/positioning/qgeoaddress_p.h" diff --git a/src/QtLocationPlugin/qtlocation/include/QtPositioning/5.5.1/QtPositioning/private/qgeocircle_p.h b/src/QtLocationPlugin/qtlocation/include/QtPositioning/5.5.1/QtPositioning/private/qgeocircle_p.h new file mode 100644 index 0000000..80a2f05 --- /dev/null +++ b/src/QtLocationPlugin/qtlocation/include/QtPositioning/5.5.1/QtPositioning/private/qgeocircle_p.h @@ -0,0 +1 @@ +#include "../../../../../src/positioning/qgeocircle_p.h" diff --git a/src/QtLocationPlugin/qtlocation/include/QtPositioning/5.5.1/QtPositioning/private/qgeocoordinate_p.h b/src/QtLocationPlugin/qtlocation/include/QtPositioning/5.5.1/QtPositioning/private/qgeocoordinate_p.h new file mode 100644 index 0000000..53b5c3b --- /dev/null +++ b/src/QtLocationPlugin/qtlocation/include/QtPositioning/5.5.1/QtPositioning/private/qgeocoordinate_p.h @@ -0,0 +1 @@ +#include "../../../../../src/positioning/qgeocoordinate_p.h" diff --git a/src/QtLocationPlugin/qtlocation/include/QtPositioning/5.5.1/QtPositioning/private/qgeolocation_p.h b/src/QtLocationPlugin/qtlocation/include/QtPositioning/5.5.1/QtPositioning/private/qgeolocation_p.h new file mode 100644 index 0000000..15bd5a1 --- /dev/null +++ b/src/QtLocationPlugin/qtlocation/include/QtPositioning/5.5.1/QtPositioning/private/qgeolocation_p.h @@ -0,0 +1 @@ +#include "../../../../../src/positioning/qgeolocation_p.h" diff --git a/src/QtLocationPlugin/qtlocation/include/QtPositioning/5.5.1/QtPositioning/private/qgeopositioninfosource_p.h b/src/QtLocationPlugin/qtlocation/include/QtPositioning/5.5.1/QtPositioning/private/qgeopositioninfosource_p.h new file mode 100644 index 0000000..a43d355 --- /dev/null +++ b/src/QtLocationPlugin/qtlocation/include/QtPositioning/5.5.1/QtPositioning/private/qgeopositioninfosource_p.h @@ -0,0 +1 @@ +#include "../../../../../src/positioning/qgeopositioninfosource_p.h" diff --git a/src/QtLocationPlugin/qtlocation/include/QtPositioning/5.5.1/QtPositioning/private/qgeoprojection_p.h b/src/QtLocationPlugin/qtlocation/include/QtPositioning/5.5.1/QtPositioning/private/qgeoprojection_p.h new file mode 100644 index 0000000..d055679 --- /dev/null +++ b/src/QtLocationPlugin/qtlocation/include/QtPositioning/5.5.1/QtPositioning/private/qgeoprojection_p.h @@ -0,0 +1 @@ +#include "../../../../../src/positioning/qgeoprojection_p.h" diff --git a/src/QtLocationPlugin/qtlocation/include/QtPositioning/5.5.1/QtPositioning/private/qgeorectangle_p.h b/src/QtLocationPlugin/qtlocation/include/QtPositioning/5.5.1/QtPositioning/private/qgeorectangle_p.h new file mode 100644 index 0000000..e4d2ac1 --- /dev/null +++ b/src/QtLocationPlugin/qtlocation/include/QtPositioning/5.5.1/QtPositioning/private/qgeorectangle_p.h @@ -0,0 +1 @@ +#include "../../../../../src/positioning/qgeorectangle_p.h" diff --git a/src/QtLocationPlugin/qtlocation/include/QtPositioning/5.5.1/QtPositioning/private/qgeoshape_p.h b/src/QtLocationPlugin/qtlocation/include/QtPositioning/5.5.1/QtPositioning/private/qgeoshape_p.h new file mode 100644 index 0000000..ef4a35e --- /dev/null +++ b/src/QtLocationPlugin/qtlocation/include/QtPositioning/5.5.1/QtPositioning/private/qgeoshape_p.h @@ -0,0 +1 @@ +#include "../../../../../src/positioning/qgeoshape_p.h" diff --git a/src/QtLocationPlugin/qtlocation/include/QtPositioning/5.5.1/QtPositioning/private/qlocationutils_p.h b/src/QtLocationPlugin/qtlocation/include/QtPositioning/5.5.1/QtPositioning/private/qlocationutils_p.h new file mode 100644 index 0000000..0c3d9cd --- /dev/null +++ b/src/QtLocationPlugin/qtlocation/include/QtPositioning/5.5.1/QtPositioning/private/qlocationutils_p.h @@ -0,0 +1 @@ +#include "../../../../../src/positioning/qlocationutils_p.h" diff --git a/src/QtLocationPlugin/qtlocation/include/QtPositioning/5.5.1/QtPositioning/private/qnmeapositioninfosource_p.h b/src/QtLocationPlugin/qtlocation/include/QtPositioning/5.5.1/QtPositioning/private/qnmeapositioninfosource_p.h new file mode 100644 index 0000000..2fd5904 --- /dev/null +++ b/src/QtLocationPlugin/qtlocation/include/QtPositioning/5.5.1/QtPositioning/private/qnmeapositioninfosource_p.h @@ -0,0 +1 @@ +#include "../../../../../src/positioning/qnmeapositioninfosource_p.h" diff --git a/src/QtLocationPlugin/qtlocation/include/QtPositioning/QGeoAddress b/src/QtLocationPlugin/qtlocation/include/QtPositioning/QGeoAddress new file mode 100644 index 0000000..708bcab --- /dev/null +++ b/src/QtLocationPlugin/qtlocation/include/QtPositioning/QGeoAddress @@ -0,0 +1 @@ +#include "qgeoaddress.h" diff --git a/src/QtLocationPlugin/qtlocation/include/QtPositioning/QGeoAreaMonitorInfo b/src/QtLocationPlugin/qtlocation/include/QtPositioning/QGeoAreaMonitorInfo new file mode 100644 index 0000000..7e137e6 --- /dev/null +++ b/src/QtLocationPlugin/qtlocation/include/QtPositioning/QGeoAreaMonitorInfo @@ -0,0 +1 @@ +#include "qgeoareamonitorinfo.h" diff --git a/src/QtLocationPlugin/qtlocation/include/QtPositioning/QGeoAreaMonitorSource b/src/QtLocationPlugin/qtlocation/include/QtPositioning/QGeoAreaMonitorSource new file mode 100644 index 0000000..942ccf6 --- /dev/null +++ b/src/QtLocationPlugin/qtlocation/include/QtPositioning/QGeoAreaMonitorSource @@ -0,0 +1 @@ +#include "qgeoareamonitorsource.h" diff --git a/src/QtLocationPlugin/qtlocation/include/QtPositioning/QGeoCircle b/src/QtLocationPlugin/qtlocation/include/QtPositioning/QGeoCircle new file mode 100644 index 0000000..b77d827 --- /dev/null +++ b/src/QtLocationPlugin/qtlocation/include/QtPositioning/QGeoCircle @@ -0,0 +1 @@ +#include "qgeocircle.h" diff --git a/src/QtLocationPlugin/qtlocation/include/QtPositioning/QGeoCoordinate b/src/QtLocationPlugin/qtlocation/include/QtPositioning/QGeoCoordinate new file mode 100644 index 0000000..812fb2a --- /dev/null +++ b/src/QtLocationPlugin/qtlocation/include/QtPositioning/QGeoCoordinate @@ -0,0 +1 @@ +#include "qgeocoordinate.h" diff --git a/src/QtLocationPlugin/qtlocation/include/QtPositioning/QGeoLocation b/src/QtLocationPlugin/qtlocation/include/QtPositioning/QGeoLocation new file mode 100644 index 0000000..bd38c75 --- /dev/null +++ b/src/QtLocationPlugin/qtlocation/include/QtPositioning/QGeoLocation @@ -0,0 +1 @@ +#include "qgeolocation.h" diff --git a/src/QtLocationPlugin/qtlocation/include/QtPositioning/QGeoPositionInfo b/src/QtLocationPlugin/qtlocation/include/QtPositioning/QGeoPositionInfo new file mode 100644 index 0000000..d6feec9 --- /dev/null +++ b/src/QtLocationPlugin/qtlocation/include/QtPositioning/QGeoPositionInfo @@ -0,0 +1 @@ +#include "qgeopositioninfo.h" diff --git a/src/QtLocationPlugin/qtlocation/include/QtPositioning/QGeoPositionInfoSource b/src/QtLocationPlugin/qtlocation/include/QtPositioning/QGeoPositionInfoSource new file mode 100644 index 0000000..b7cc338 --- /dev/null +++ b/src/QtLocationPlugin/qtlocation/include/QtPositioning/QGeoPositionInfoSource @@ -0,0 +1 @@ +#include "qgeopositioninfosource.h" diff --git a/src/QtLocationPlugin/qtlocation/include/QtPositioning/QGeoPositionInfoSourceFactory b/src/QtLocationPlugin/qtlocation/include/QtPositioning/QGeoPositionInfoSourceFactory new file mode 100644 index 0000000..7448436 --- /dev/null +++ b/src/QtLocationPlugin/qtlocation/include/QtPositioning/QGeoPositionInfoSourceFactory @@ -0,0 +1 @@ +#include "qgeopositioninfosourcefactory.h" diff --git a/src/QtLocationPlugin/qtlocation/include/QtPositioning/QGeoRectangle b/src/QtLocationPlugin/qtlocation/include/QtPositioning/QGeoRectangle new file mode 100644 index 0000000..9a7d48f --- /dev/null +++ b/src/QtLocationPlugin/qtlocation/include/QtPositioning/QGeoRectangle @@ -0,0 +1 @@ +#include "qgeorectangle.h" diff --git a/src/QtLocationPlugin/qtlocation/include/QtPositioning/QGeoSatelliteInfo b/src/QtLocationPlugin/qtlocation/include/QtPositioning/QGeoSatelliteInfo new file mode 100644 index 0000000..a3fd47d --- /dev/null +++ b/src/QtLocationPlugin/qtlocation/include/QtPositioning/QGeoSatelliteInfo @@ -0,0 +1 @@ +#include "qgeosatelliteinfo.h" diff --git a/src/QtLocationPlugin/qtlocation/include/QtPositioning/QGeoSatelliteInfoSource b/src/QtLocationPlugin/qtlocation/include/QtPositioning/QGeoSatelliteInfoSource new file mode 100644 index 0000000..cc6ba9d --- /dev/null +++ b/src/QtLocationPlugin/qtlocation/include/QtPositioning/QGeoSatelliteInfoSource @@ -0,0 +1 @@ +#include "qgeosatelliteinfosource.h" diff --git a/src/QtLocationPlugin/qtlocation/include/QtPositioning/QGeoShape b/src/QtLocationPlugin/qtlocation/include/QtPositioning/QGeoShape new file mode 100644 index 0000000..d86ddc3 --- /dev/null +++ b/src/QtLocationPlugin/qtlocation/include/QtPositioning/QGeoShape @@ -0,0 +1 @@ +#include "qgeoshape.h" diff --git a/src/QtLocationPlugin/qtlocation/include/QtPositioning/QNmeaPositionInfoSource b/src/QtLocationPlugin/qtlocation/include/QtPositioning/QNmeaPositionInfoSource new file mode 100644 index 0000000..5c261c9 --- /dev/null +++ b/src/QtLocationPlugin/qtlocation/include/QtPositioning/QNmeaPositionInfoSource @@ -0,0 +1 @@ +#include "qnmeapositioninfosource.h" diff --git a/src/QtLocationPlugin/qtlocation/include/QtPositioning/QtPositioning b/src/QtLocationPlugin/qtlocation/include/QtPositioning/QtPositioning new file mode 100644 index 0000000..90f0720 --- /dev/null +++ b/src/QtLocationPlugin/qtlocation/include/QtPositioning/QtPositioning @@ -0,0 +1,20 @@ +#ifndef QT_QTPOSITIONING_MODULE_H +#define QT_QTPOSITIONING_MODULE_H +#include +#include "qgeoaddress.h" +#include "qgeoareamonitorinfo.h" +#include "qgeoareamonitorsource.h" +#include "qgeocircle.h" +#include "qgeocoordinate.h" +#include "qgeolocation.h" +#include "qgeopositioninfo.h" +#include "qgeopositioninfosource.h" +#include "qgeopositioninfosourcefactory.h" +#include "qgeorectangle.h" +#include "qgeosatelliteinfo.h" +#include "qgeosatelliteinfosource.h" +#include "qgeoshape.h" +#include "qnmeapositioninfosource.h" +#include "qpositioningglobal.h" +#include "qtpositioningversion.h" +#endif diff --git a/src/QtLocationPlugin/qtlocation/include/QtPositioning/QtPositioningVersion b/src/QtLocationPlugin/qtlocation/include/QtPositioning/QtPositioningVersion new file mode 100644 index 0000000..2f99398 --- /dev/null +++ b/src/QtLocationPlugin/qtlocation/include/QtPositioning/QtPositioningVersion @@ -0,0 +1 @@ +#include "qtpositioningversion.h" diff --git a/src/QtLocationPlugin/qtlocation/include/QtPositioning/qgeoaddress.h b/src/QtLocationPlugin/qtlocation/include/QtPositioning/qgeoaddress.h new file mode 100644 index 0000000..b8e0a99 --- /dev/null +++ b/src/QtLocationPlugin/qtlocation/include/QtPositioning/qgeoaddress.h @@ -0,0 +1 @@ +#include "../../src/positioning/qgeoaddress.h" diff --git a/src/QtLocationPlugin/qtlocation/include/QtPositioning/qgeoareamonitorinfo.h b/src/QtLocationPlugin/qtlocation/include/QtPositioning/qgeoareamonitorinfo.h new file mode 100644 index 0000000..f9a334c --- /dev/null +++ b/src/QtLocationPlugin/qtlocation/include/QtPositioning/qgeoareamonitorinfo.h @@ -0,0 +1 @@ +#include "../../src/positioning/qgeoareamonitorinfo.h" diff --git a/src/QtLocationPlugin/qtlocation/include/QtPositioning/qgeoareamonitorsource.h b/src/QtLocationPlugin/qtlocation/include/QtPositioning/qgeoareamonitorsource.h new file mode 100644 index 0000000..4555de8 --- /dev/null +++ b/src/QtLocationPlugin/qtlocation/include/QtPositioning/qgeoareamonitorsource.h @@ -0,0 +1 @@ +#include "../../src/positioning/qgeoareamonitorsource.h" diff --git a/src/QtLocationPlugin/qtlocation/include/QtPositioning/qgeocircle.h b/src/QtLocationPlugin/qtlocation/include/QtPositioning/qgeocircle.h new file mode 100644 index 0000000..f598c2c --- /dev/null +++ b/src/QtLocationPlugin/qtlocation/include/QtPositioning/qgeocircle.h @@ -0,0 +1 @@ +#include "../../src/positioning/qgeocircle.h" diff --git a/src/QtLocationPlugin/qtlocation/include/QtPositioning/qgeocoordinate.h b/src/QtLocationPlugin/qtlocation/include/QtPositioning/qgeocoordinate.h new file mode 100644 index 0000000..93b16d9 --- /dev/null +++ b/src/QtLocationPlugin/qtlocation/include/QtPositioning/qgeocoordinate.h @@ -0,0 +1 @@ +#include "../../src/positioning/qgeocoordinate.h" diff --git a/src/QtLocationPlugin/qtlocation/include/QtPositioning/qgeolocation.h b/src/QtLocationPlugin/qtlocation/include/QtPositioning/qgeolocation.h new file mode 100644 index 0000000..59429ea --- /dev/null +++ b/src/QtLocationPlugin/qtlocation/include/QtPositioning/qgeolocation.h @@ -0,0 +1 @@ +#include "../../src/positioning/qgeolocation.h" diff --git a/src/QtLocationPlugin/qtlocation/include/QtPositioning/qgeopositioninfo.h b/src/QtLocationPlugin/qtlocation/include/QtPositioning/qgeopositioninfo.h new file mode 100644 index 0000000..213fbb2 --- /dev/null +++ b/src/QtLocationPlugin/qtlocation/include/QtPositioning/qgeopositioninfo.h @@ -0,0 +1 @@ +#include "../../src/positioning/qgeopositioninfo.h" diff --git a/src/QtLocationPlugin/qtlocation/include/QtPositioning/qgeopositioninfosource.h b/src/QtLocationPlugin/qtlocation/include/QtPositioning/qgeopositioninfosource.h new file mode 100644 index 0000000..8f7082d --- /dev/null +++ b/src/QtLocationPlugin/qtlocation/include/QtPositioning/qgeopositioninfosource.h @@ -0,0 +1 @@ +#include "../../src/positioning/qgeopositioninfosource.h" diff --git a/src/QtLocationPlugin/qtlocation/include/QtPositioning/qgeopositioninfosourcefactory.h b/src/QtLocationPlugin/qtlocation/include/QtPositioning/qgeopositioninfosourcefactory.h new file mode 100644 index 0000000..e59bdd9 --- /dev/null +++ b/src/QtLocationPlugin/qtlocation/include/QtPositioning/qgeopositioninfosourcefactory.h @@ -0,0 +1 @@ +#include "../../src/positioning/qgeopositioninfosourcefactory.h" diff --git a/src/QtLocationPlugin/qtlocation/include/QtPositioning/qgeorectangle.h b/src/QtLocationPlugin/qtlocation/include/QtPositioning/qgeorectangle.h new file mode 100644 index 0000000..f4a6526 --- /dev/null +++ b/src/QtLocationPlugin/qtlocation/include/QtPositioning/qgeorectangle.h @@ -0,0 +1 @@ +#include "../../src/positioning/qgeorectangle.h" diff --git a/src/QtLocationPlugin/qtlocation/include/QtPositioning/qgeosatelliteinfo.h b/src/QtLocationPlugin/qtlocation/include/QtPositioning/qgeosatelliteinfo.h new file mode 100644 index 0000000..1c1d631 --- /dev/null +++ b/src/QtLocationPlugin/qtlocation/include/QtPositioning/qgeosatelliteinfo.h @@ -0,0 +1 @@ +#include "../../src/positioning/qgeosatelliteinfo.h" diff --git a/src/QtLocationPlugin/qtlocation/include/QtPositioning/qgeosatelliteinfosource.h b/src/QtLocationPlugin/qtlocation/include/QtPositioning/qgeosatelliteinfosource.h new file mode 100644 index 0000000..a3115b1 --- /dev/null +++ b/src/QtLocationPlugin/qtlocation/include/QtPositioning/qgeosatelliteinfosource.h @@ -0,0 +1 @@ +#include "../../src/positioning/qgeosatelliteinfosource.h" diff --git a/src/QtLocationPlugin/qtlocation/include/QtPositioning/qgeoshape.h b/src/QtLocationPlugin/qtlocation/include/QtPositioning/qgeoshape.h new file mode 100644 index 0000000..6e7d4db --- /dev/null +++ b/src/QtLocationPlugin/qtlocation/include/QtPositioning/qgeoshape.h @@ -0,0 +1 @@ +#include "../../src/positioning/qgeoshape.h" diff --git a/src/QtLocationPlugin/qtlocation/include/QtPositioning/qnmeapositioninfosource.h b/src/QtLocationPlugin/qtlocation/include/QtPositioning/qnmeapositioninfosource.h new file mode 100644 index 0000000..6f5d63d --- /dev/null +++ b/src/QtLocationPlugin/qtlocation/include/QtPositioning/qnmeapositioninfosource.h @@ -0,0 +1 @@ +#include "../../src/positioning/qnmeapositioninfosource.h" diff --git a/src/QtLocationPlugin/qtlocation/include/QtPositioning/qpositioningglobal.h b/src/QtLocationPlugin/qtlocation/include/QtPositioning/qpositioningglobal.h new file mode 100644 index 0000000..a291214 --- /dev/null +++ b/src/QtLocationPlugin/qtlocation/include/QtPositioning/qpositioningglobal.h @@ -0,0 +1 @@ +#include "../../src/positioning/qpositioningglobal.h" diff --git a/src/QtLocationPlugin/qtlocation/include/QtPositioning/qtpositioningversion.h b/src/QtLocationPlugin/qtlocation/include/QtPositioning/qtpositioningversion.h new file mode 100644 index 0000000..a177db2 --- /dev/null +++ b/src/QtLocationPlugin/qtlocation/include/QtPositioning/qtpositioningversion.h @@ -0,0 +1,9 @@ +/* This file was generated by syncqt. */ +#ifndef QT_QTPOSITIONING_VERSION_H +#define QT_QTPOSITIONING_VERSION_H + +#define QTPOSITIONING_VERSION_STR "5.5.1" + +#define QTPOSITIONING_VERSION 0x050501 + +#endif // QT_QTPOSITIONING_VERSION_H diff --git a/src/QtLocationPlugin/qtlocation/src/location/maps/maps.pri b/src/QtLocationPlugin/qtlocation/src/location/maps/maps.pri new file mode 100644 index 0000000..43e0f74 --- /dev/null +++ b/src/QtLocationPlugin/qtlocation/src/location/maps/maps.pri @@ -0,0 +1,89 @@ + +INCLUDEPATH += maps + +QT += gui quick + +PUBLIC_HEADERS += \ + maps/qgeocodereply.h \ + maps/qgeocodingmanagerengine.h \ + maps/qgeocodingmanager.h \ + maps/qgeomaneuver.h \ + maps/qgeoroute.h \ + maps/qgeoroutereply.h \ + maps/qgeorouterequest.h \ + maps/qgeoroutesegment.h \ + maps/qgeoroutingmanagerengine.h \ + maps/qgeoroutingmanager.h \ + maps/qgeoserviceproviderfactory.h \ + maps/qgeoserviceprovider.h + +PRIVATE_HEADERS += \ + maps/qgeocameracapabilities_p.h \ + maps/qgeocameradata_p.h \ + maps/qgeocameratiles_p.h \ + maps/qgeocodereply_p.h \ + maps/qgeocodingmanagerengine_p.h \ + maps/qgeocodingmanager_p.h \ + maps/qgeomaneuver_p.h \ + maps/qgeomapcontroller_p.h \ + maps/qgeomapscene_p.h \ + maps/qgeotilerequestmanager_p.h \ + maps/qgeomap_p.h \ + maps/qgeomap_p_p.h \ + maps/qgeotiledmap_p.h \ + maps/qgeotiledmap_p_p.h \ + maps/qgeotilefetcher_p.h \ + maps/qgeotilefetcher_p_p.h \ + maps/qgeomappingmanager_p.h \ + maps/qgeomappingmanager_p_p.h \ + maps/qgeomappingmanagerengine_p.h \ + maps/qgeomappingmanagerengine_p_p.h \ + maps/qgeotiledmappingmanagerengine_p.h \ + maps/qgeotiledmappingmanagerengine_p_p.h \ + maps/qgeomaptype_p.h \ + maps/qgeomaptype_p_p.h \ + maps/qgeoroute_p.h \ + maps/qgeoroutereply_p.h \ + maps/qgeorouterequest_p.h \ + maps/qgeoroutesegment_p.h \ + maps/qgeoroutingmanagerengine_p.h \ + maps/qgeoroutingmanager_p.h \ + maps/qgeoserviceprovider_p.h \ + maps/qgeotilecache_p.h \ + maps/qgeotiledmapreply_p.h \ + maps/qgeotiledmapreply_p_p.h \ + maps/qgeotilespec_p.h \ + maps/qgeotilespec_p_p.h \ + maps/qcache3q_p.h + +SOURCES += \ + maps/qgeocameracapabilities.cpp \ + maps/qgeocameradata.cpp \ + maps/qgeocameratiles.cpp \ + maps/qgeocodereply.cpp \ + maps/qgeocodingmanager.cpp \ + maps/qgeocodingmanagerengine.cpp \ + maps/qgeomaneuver.cpp \ + maps/qgeomapcontroller.cpp \ + maps/qgeomapscene.cpp \ + maps/qgeotilerequestmanager.cpp \ + maps/qgeomap.cpp \ + maps/qgeomappingmanager.cpp \ + maps/qgeomappingmanagerengine.cpp \ + maps/qgeotiledmappingmanagerengine.cpp \ + maps/qgeotilefetcher.cpp \ + maps/qgeomaptype.cpp \ + maps/qgeoroute.cpp \ + maps/qgeoroutereply.cpp \ + maps/qgeorouterequest.cpp \ + maps/qgeoroutesegment.cpp \ + maps/qgeoroutingmanager.cpp \ + maps/qgeoroutingmanagerengine.cpp \ + maps/qgeoserviceprovider.cpp \ + maps/qgeoserviceproviderfactory.cpp \ + maps/qgeotilecache.cpp \ + maps/qgeotiledmapreply.cpp \ + maps/qgeotilespec.cpp \ + maps/qgeotiledmap.cpp + + diff --git a/src/QtLocationPlugin/qtlocation/src/location/maps/qcache3q_p.h b/src/QtLocationPlugin/qtlocation/src/location/maps/qcache3q_p.h new file mode 100644 index 0000000..debce5d --- /dev/null +++ b/src/QtLocationPlugin/qtlocation/src/location/maps/qcache3q_p.h @@ -0,0 +1,471 @@ +/**************************************************************************** +** +** Copyright (C) 2015 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the QtCore module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The Qt Company. For licensing terms +** and conditions see http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QCACHE3Q_H +#define QCACHE3Q_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists purely as an +// implementation detail. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. + +#include +#include +#include +#include +#include + +QT_BEGIN_NAMESPACE + +template +class QCache3QDefaultEvictionPolicy +{ +protected: + /* called just before a key/value pair is about to be _evicted_ */ + void aboutToBeEvicted(const Key &key, QSharedPointer obj); + /* called just before a key/value pair is about to be removed, by + * clear(), remove() or by the destructor (which calls clear) */ + void aboutToBeRemoved(const Key &key, QSharedPointer obj); +}; + +template +void QCache3QDefaultEvictionPolicy::aboutToBeEvicted(const Key &key, QSharedPointer obj) +{ + Q_UNUSED(key); + Q_UNUSED(obj); +} + +template +void QCache3QDefaultEvictionPolicy::aboutToBeRemoved(const Key &key, QSharedPointer obj) +{ + Q_UNUSED(key); + Q_UNUSED(obj); +} + +/* + * QCache3Q + * + * A cache template class for managing QSharedPointers to objects with an + * associated key. It's a lot like QCache, but uses an alternative algorithm + * '3Q' -- which is the '2Q' algorithm plus an extra queue for previously popular + * but evicted nodes, and a 'ghost' list of recent evictions to make a better + * placement choice if they are requested again. + * + * New nodes enter the cache on the "newbies" queue, which is evicted LRA + * (least-recently-added). If a newbie is popular enough (it has been requested + * more than promoteAt times), it will be promoted to a "regular". Regulars + * are evicted LRU (least-recently-used). If a regular is under consideration + * for eviction, its popularity is compared to the mean popularity of the whole + * regulars queue. If it is greater, it is instead moved to the "hobos" queue. + * The "hobos" queue is also evicted LRU, but has a maximum size constraint + * so eviction from it is less likely than from the regulars. + * + * Tweakables: + * * maxCost = maximum total cost for the whole cache + * * minRecent = minimum size that q1 ("newbies") has to be before eviction + * from it takes place + * * maxOldPopular = maximum size that q3 ("hobos") can reach before eviction + * from it takes place + * * promoteAt = minimum popularity necessary to promote a node from + * "newbie" to "regular" + */ +template > +class QCache3Q : public EvPolicy +{ +private: + class Queue; + class Node + { + public: + inline explicit Node() : q(0), n(0), p(0), pop(0), cost(0) {} + + Queue *q; + Node *n; + Node *p; + Key k; + QSharedPointer v; + quint64 pop; // popularity, incremented each ping + int cost; + }; + + class Queue + { + public: + inline explicit Queue() : f(0), l(0), cost(0), pop(0), size(0) {} + + Node *f; + Node *l; + int cost; // total cost of nodes on the queue + quint64 pop; // sum of popularity values on the queue + int size; // size of the queue + }; + + Queue *q1_; // "newbies": seen only once, evicted LRA (least-recently-added) + Queue *q2_; // regular nodes, promoted from newbies, evicted LRU + Queue *q3_; // "hobos": evicted from q2 but were very popular (above mean) + Queue *q1_evicted_; // ghosts of recently evicted newbies and regulars + QHash lookup_; + +public: + explicit QCache3Q(int maxCost = 100, int minRecent = -1, int maxOldPopular = -1); + inline ~QCache3Q() { clear(); delete q1_; delete q2_; delete q3_; delete q1_evicted_; } + + inline int maxCost() const { return maxCost_; } + void setMaxCost(int maxCost, int minRecent = -1, int maxOldPopular = -1); + + inline int promoteAt() const { return promote_; } + inline void setPromoteAt(int p) { promote_ = p; } + + inline int totalCost() const { return q1_->cost + q2_->cost + q3_->cost; } + + void clear(); + bool insert(const Key &key, QSharedPointer object, int cost = 1); + QSharedPointer object(const Key &key) const; + QSharedPointer operator[](const Key &key) const; + + void remove(const Key &key); + + void printStats(); + + // Copy data directly into a queue. Designed for single use after construction + void deserializeQueue(int queueNumber, const QList &keys, + const QList > &values, const QList &costs); + // Copy data from specific queue into list + void serializeQueue(int queueNumber, QList > &buffer); + +private: + int maxCost_, minRecent_, maxOldPopular_; + int hitCount_, missCount_, promote_; + + void rebalance(); + void unlink(Node *n); + void link_front(Node *n, Queue *q); + +private: + // make these private so they can't be used + inline QCache3Q(const QCache3Q &) {} + inline QCache3Q &operator=(const QCache3Q &) {} +}; + +template +void QCache3Q::printStats() +{ + qDebug("\n=== cache %p ===", this); + qDebug("hits: %d (%.2f%%)\tmisses: %d\tfill: %.2f%%", hitCount_, + 100.0 * float(hitCount_) / (float(hitCount_ + missCount_)), + missCount_, + 100.0 * float(totalCost()) / float(maxCost())); + qDebug("q1g: size=%d, pop=%llu", q1_evicted_->size, q1_evicted_->pop); + qDebug("q1: cost=%d, size=%d, pop=%llu", q1_->cost, q1_->size, q1_->pop); + qDebug("q2: cost=%d, size=%d, pop=%llu", q2_->cost, q2_->size, q2_->pop); + qDebug("q3: cost=%d, size=%d, pop=%llu", q3_->cost, q3_->size, q3_->pop); +} + +template +QCache3Q::QCache3Q(int maxCost, int minRecent, int maxOldPopular) + : q1_(new Queue), q2_(new Queue), q3_(new Queue), q1_evicted_(new Queue), + maxCost_(maxCost), minRecent_(minRecent), maxOldPopular_(maxOldPopular), + hitCount_(0), missCount_(0), promote_(0) +{ + if (minRecent_ < 0) + minRecent_ = maxCost_ / 3; + if (maxOldPopular_ < 0) + maxOldPopular_ = maxCost_ / 5; +} + +template +void QCache3Q::serializeQueue(int queueNumber, QList > &buffer) +{ + Q_ASSERT(queueNumber >= 1 && queueNumber <= 4); + Queue *queue = queueNumber == 1 ? q1_ : + queueNumber == 2 ? q2_ : + queueNumber == 3 ? q3_ : + q1_evicted_; + for (Node *node = queue->f; node; node = node->n) + buffer.append(node->v); +} + +template +void QCache3Q::deserializeQueue(int queueNumber, const QList &keys, + const QList > &values, const QList &costs) +{ + Q_ASSERT(queueNumber >= 1 && queueNumber <= 4); + int bufferSize = keys.size(); + if (bufferSize == 0) + return; + clear(); + Queue *queue = queueNumber == 1 ? q1_ : + queueNumber == 2 ? q2_ : + queueNumber == 3 ? q3_ : + q1_evicted_; + for (int i = 0; iv = values[i]; + node->k = keys[i]; + node->cost = costs[i]; + link_front(node, queue); + lookup_[keys[i]] = node; + } +} + + +template +inline void QCache3Q::setMaxCost(int maxCost, int minRecent, int maxOldPopular) +{ + maxCost_ = maxCost; + minRecent_ = minRecent; + maxOldPopular_ = maxOldPopular; + if (minRecent_ < 0) + minRecent_ = maxCost_ / 3; + if (maxOldPopular_ < 0) + maxOldPopular_ = maxCost_ / 5; + rebalance(); +} + +template +bool QCache3Q::insert(const Key &key, QSharedPointer object, int cost) +{ + if (cost > maxCost_) { + return false; + } + + if (lookup_.contains(key)) { + Node *n = lookup_[key]; + n->v = object; + n->q->cost -= n->cost; + n->cost = cost; + n->q->cost += cost; + + if (n->q == q1_evicted_) { + if (n->pop > (uint)promote_) { + unlink(n); + link_front(n, q2_); + rebalance(); + } + } else if (n->q != q1_) { + Queue *q = n->q; + unlink(n); + link_front(n, q); + rebalance(); + } + + return true; + } + + Node *n = new Node; + n->v = object; + n->k = key; + n->cost = cost; + link_front(n, q1_); + lookup_[key] = n; + + rebalance(); + + return true; +} + +template +void QCache3Q::clear() +{ + while (q1_evicted_->f) { + Node *n = q1_evicted_->f; + unlink(n); + delete n; + } + + while (q1_->f) { + Node *n = q1_->f; + unlink(n); + EvPolicy::aboutToBeRemoved(n->k, n->v); + delete n; + } + + while (q2_->f) { + Node *n = q2_->f; + unlink(n); + EvPolicy::aboutToBeRemoved(n->k, n->v); + delete n; + } + + while (q3_->f) { + Node *n = q3_->f; + unlink(n); + EvPolicy::aboutToBeRemoved(n->k, n->v); + delete n; + } + + lookup_.clear(); +} + +template +void QCache3Q::unlink(Node *n) +{ + if (n->n) + n->n->p = n->p; + if (n->p) + n->p->n = n->n; + if (n->q->f == n) + n->q->f = n->n; + if (n->q->l == n) + n->q->l = n->p; + n->n = 0; + n->p = 0; + n->q->pop -= n->pop; + n->q->cost -= n->cost; + n->q->size--; + n->q = 0; +} + +template +void QCache3Q::link_front(Node *n, Queue *q) +{ + n->n = q->f; + n->p = 0; + n->q = q; + if (q->f) + q->f->p = n; + q->f = n; + if (!q->l) + q->l = n; + + q->pop += n->pop; + q->cost += n->cost; + q->size++; +} + +template +void QCache3Q::rebalance() +{ + while (q1_evicted_->size > (q1_->size + q2_->size + q3_->size) * 4) { + Node *n = q1_evicted_->l; + unlink(n); + lookup_.remove(n->k); + delete n; + } + + while ((q1_->cost + q2_->cost + q3_->cost) > maxCost_) { + if (q3_->cost > maxOldPopular_) { + Node *n = q3_->l; + unlink(n); + EvPolicy::aboutToBeEvicted(n->k, n->v); + lookup_.remove(n->k); + delete n; + } else if (q1_->cost > minRecent_) { + Node *n = q1_->l; + unlink(n); + EvPolicy::aboutToBeEvicted(n->k, n->v); + n->v.clear(); + n->cost = 0; + link_front(n, q1_evicted_); + } else { + Node *n = q2_->l; + unlink(n); + if (n->pop > (q2_->pop / q2_->size)) { + link_front(n, q3_); + } else { + EvPolicy::aboutToBeEvicted(n->k, n->v); + n->v.clear(); + n->cost = 0; + link_front(n, q1_evicted_); + } + } + } +} + +template +void QCache3Q::remove(const Key &key) +{ + if (!lookup_.contains(key)) { + return; + } + Node *n = lookup_[key]; + unlink(n); + if (n->q != q1_evicted_) + EvPolicy::aboutToBeRemoved(n->k, n->v); + lookup_.remove(key); + delete n; +} + +template +QSharedPointer QCache3Q::object(const Key &key) const +{ + if (!lookup_.contains(key)) { + const_cast *>(this)->missCount_++; + return QSharedPointer(0); + } + + QCache3Q *me = const_cast *>(this); + + Node *n = me->lookup_[key]; + n->pop++; + n->q->pop++; + + if (n->q == q1_) { + me->hitCount_++; + + if (n->pop > (quint64)promote_) { + me->unlink(n); + me->link_front(n, q2_); + me->rebalance(); + } + } else if (n->q != q1_evicted_) { + me->hitCount_++; + + Queue *q = n->q; + me->unlink(n); + me->link_front(n, q); + me->rebalance(); + } else { + me->missCount_++; + } + + return n->v; +} + +template +inline QSharedPointer QCache3Q::operator[](const Key &key) const +{ + return object(key); +} + +QT_END_NAMESPACE + +#endif // QCACHE3Q_H diff --git a/src/QtLocationPlugin/qtlocation/src/location/maps/qgeocameracapabilities_p.h b/src/QtLocationPlugin/qtlocation/src/location/maps/qgeocameracapabilities_p.h new file mode 100644 index 0000000..4e498b1 --- /dev/null +++ b/src/QtLocationPlugin/qtlocation/src/location/maps/qgeocameracapabilities_p.h @@ -0,0 +1,97 @@ +/**************************************************************************** +** +** Copyright (C) 2015 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the QtLocation module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The Qt Company. For licensing terms +** and conditions see http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QGEOCAMERACAPABILITIES_P_H +#define QGEOCAMERACAPABILITIES_P_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists purely as an +// implementation detail. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + +#include + +#include + +QT_BEGIN_NAMESPACE + +class QGeoCameraCapabilitiesPrivate; + +class Q_LOCATION_EXPORT QGeoCameraCapabilities +{ +public: + QGeoCameraCapabilities(); + QGeoCameraCapabilities(const QGeoCameraCapabilities &other); + ~QGeoCameraCapabilities(); + + QGeoCameraCapabilities &operator = (const QGeoCameraCapabilities &other); + + void setMinimumZoomLevel(double minimumZoomLevel); + double minimumZoomLevel() const; + + void setMaximumZoomLevel(double maximumZoomLevel); + double maximumZoomLevel() const; + + void setSupportsBearing(bool supportsBearing); + bool supportsBearing() const; + + void setSupportsRolling(bool supportsRolling); + bool supportsRolling() const; + + void setSupportsTilting(bool supportsTilting); + bool supportsTilting() const; + + void setMinimumTilt(double minimumTilt); + double minimumTilt() const; + + void setMaximumTilt(double maximumTilt); + double maximumTilt() const; + + bool isValid() const; + +private: + QSharedDataPointer d; +}; + +QT_END_NAMESPACE + +#endif // QGEOCAMERACAPABILITIES_P_H diff --git a/src/QtLocationPlugin/qtlocation/src/location/maps/qgeocameradata_p.h b/src/QtLocationPlugin/qtlocation/src/location/maps/qgeocameradata_p.h new file mode 100644 index 0000000..a1434fd --- /dev/null +++ b/src/QtLocationPlugin/qtlocation/src/location/maps/qgeocameradata_p.h @@ -0,0 +1,98 @@ +/**************************************************************************** +** +** Copyright (C) 2015 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the QtLocation module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The Qt Company. For licensing terms +** and conditions see http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ +#ifndef QGEOCAMERADATA_P_H +#define QGEOCAMERADATA_P_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists purely as an +// implementation detail. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + +#include "qlocationglobal.h" +#include "qgeocoordinate.h" + +#include + +#include + +#include + +QT_BEGIN_NAMESPACE + +class QGeoCameraDataPrivate; + +class Q_LOCATION_EXPORT QGeoCameraData +{ +public: + QGeoCameraData(); + QGeoCameraData(const QGeoCameraData &other); + ~QGeoCameraData(); + + QGeoCameraData &operator = (const QGeoCameraData &other); + + bool operator == (const QGeoCameraData &other) const; + bool operator != (const QGeoCameraData &other) const; + + void setCenter(const QGeoCoordinate &coordinate); + QGeoCoordinate center() const; + + void setBearing(double bearing); + double bearing() const; + + void setTilt(double tilt); + double tilt() const; + + void setRoll(double roll); + double roll() const; + + void setZoomLevel(double zoomLevel); + double zoomLevel() const; + +private: + QSharedDataPointer d; +}; + +QT_END_NAMESPACE + +Q_DECLARE_METATYPE(QGeoCameraData) + +#endif // QGEOCAMERADATA_P_H diff --git a/src/QtLocationPlugin/qtlocation/src/location/maps/qgeocameratiles_p.h b/src/QtLocationPlugin/qtlocation/src/location/maps/qgeocameratiles_p.h new file mode 100644 index 0000000..e326028 --- /dev/null +++ b/src/QtLocationPlugin/qtlocation/src/location/maps/qgeocameratiles_p.h @@ -0,0 +1,89 @@ +/**************************************************************************** +** +** Copyright (C) 2015 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the QtLocation module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The Qt Company. For licensing terms +** and conditions see http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ +#ifndef QGEOCAMERATILES_P_H +#define QGEOCAMERATILES_P_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists purely as an +// implementation detail. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + +#include +#include + +QT_BEGIN_NAMESPACE + +class QGeoCameraData; +class QGeoTileSpec; +class QGeoMapType; +class QGeoCameraTilesPrivate; +class QSize; + +class Q_LOCATION_EXPORT QGeoCameraTiles { +public: + QGeoCameraTiles(); + ~QGeoCameraTiles(); + + enum PrefetchStle { PrefetchNeighbourLayer, PrefetchTwoNeighbourLayers}; + + void setCamera(const QGeoCameraData &camera); + void setScreenSize(const QSize &size); + void setTileSize(int tileSize); + void setMaximumZoomLevel(int maxZoom); + + int tileSize() const; + + void setPluginString(const QString &pluginString); + void setMapType(const QGeoMapType &mapType); + void setMapVersion(int mapVersion); + + QSet visibleTiles(); + QSet prefetchTiles(PrefetchStle style); + +protected: + QScopedPointer d_ptr; + Q_DISABLE_COPY(QGeoCameraTiles) +}; + +QT_END_NAMESPACE + +#endif // QGEOCAMERATILES_P_H diff --git a/src/QtLocationPlugin/qtlocation/src/location/maps/qgeocodereply.h b/src/QtLocationPlugin/qtlocation/src/location/maps/qgeocodereply.h new file mode 100644 index 0000000..f713e42 --- /dev/null +++ b/src/QtLocationPlugin/qtlocation/src/location/maps/qgeocodereply.h @@ -0,0 +1,105 @@ +/**************************************************************************** +** +** Copyright (C) 2015 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the QtLocation module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The Qt Company. For licensing terms +** and conditions see http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QGEOCODEREPLY_H +#define QGEOCODEREPLY_H + +#include +#include +#include + +#include + +QT_BEGIN_NAMESPACE + +class QGeoShape; +class QGeoCodeReplyPrivate; + +class Q_LOCATION_EXPORT QGeoCodeReply : public QObject +{ + Q_OBJECT + +public: + enum Error { + NoError, + EngineNotSetError, + CommunicationError, + ParseError, + UnsupportedOptionError, + CombinationError, + UnknownError + }; + + QGeoCodeReply(Error error, const QString &errorString, QObject *parent = 0); + virtual ~QGeoCodeReply(); + + bool isFinished() const; + Error error() const; + QString errorString() const; + + QGeoShape viewport() const; + QList locations() const; + + int limit() const; + int offset() const; + + virtual void abort(); + +Q_SIGNALS: + void finished(); + void error(QGeoCodeReply::Error error, const QString &errorString = QString()); + +protected: + QGeoCodeReply(QObject *parent = 0); + + void setError(Error error, const QString &errorString); + void setFinished(bool finished); + + void setViewport(const QGeoShape &viewport); + void addLocation(const QGeoLocation &location); + void setLocations(const QList &locations); + + void setLimit(int limit); + void setOffset(int offset); + +private: + QGeoCodeReplyPrivate *d_ptr; + Q_DISABLE_COPY(QGeoCodeReply) +}; + +QT_END_NAMESPACE + +#endif diff --git a/src/QtLocationPlugin/qtlocation/src/location/maps/qgeocodereply_p.h b/src/QtLocationPlugin/qtlocation/src/location/maps/qgeocodereply_p.h new file mode 100644 index 0000000..fefe788 --- /dev/null +++ b/src/QtLocationPlugin/qtlocation/src/location/maps/qgeocodereply_p.h @@ -0,0 +1,83 @@ +/**************************************************************************** +** +** Copyright (C) 2015 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the QtLocation module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The Qt Company. For licensing terms +** and conditions see http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QGEOCODEREPLY_P_H +#define QGEOCODEREPLY_P_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists purely as an +// implementation detail. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + +#include "qgeocodereply.h" + +#include "qgeoshape.h" + +#include + +QT_BEGIN_NAMESPACE + +class QGeoLocation; + +class QGeoCodeReplyPrivate +{ +public: + QGeoCodeReplyPrivate(); + QGeoCodeReplyPrivate(QGeoCodeReply::Error error, const QString &errorString); + ~QGeoCodeReplyPrivate(); + + QGeoCodeReply::Error error; + QString errorString; + bool isFinished; + + QGeoShape viewport; + QList locations; + + int limit; + int offset; +private: + Q_DISABLE_COPY(QGeoCodeReplyPrivate) +}; + +QT_END_NAMESPACE + +#endif diff --git a/src/QtLocationPlugin/qtlocation/src/location/maps/qgeocodingmanager.h b/src/QtLocationPlugin/qtlocation/src/location/maps/qgeocodingmanager.h new file mode 100644 index 0000000..b33cda7 --- /dev/null +++ b/src/QtLocationPlugin/qtlocation/src/location/maps/qgeocodingmanager.h @@ -0,0 +1,92 @@ +/**************************************************************************** +** +** Copyright (C) 2015 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the QtLocation module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The Qt Company. For licensing terms +** and conditions see http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QGEOCODINGMANAGER_H +#define QGEOCODINGMANAGER_H + +#include +#include + +#include +#include +#include + +QT_BEGIN_NAMESPACE + +class QLocale; + +class QGeoCodingManagerEngine; +class QGeoCodingManagerPrivate; + +class Q_LOCATION_EXPORT QGeoCodingManager : public QObject +{ + Q_OBJECT +public: + ~QGeoCodingManager(); + + QString managerName() const; + int managerVersion() const; + + QGeoCodeReply *geocode(const QGeoAddress &address, + const QGeoShape &bounds = QGeoShape()); + QGeoCodeReply *geocode(const QString &searchString, + int limit = -1, + int offset = 0, + const QGeoShape &bounds = QGeoShape()); + + QGeoCodeReply *reverseGeocode(const QGeoCoordinate &coordinate, + const QGeoShape &bounds = QGeoShape()); + + void setLocale(const QLocale &locale); + QLocale locale() const; + +Q_SIGNALS: + void finished(QGeoCodeReply *reply); + void error(QGeoCodeReply *reply, QGeoCodeReply::Error error, QString errorString = QString()); + +private: + QGeoCodingManager(QGeoCodingManagerEngine *engine, QObject *parent = 0); + + QGeoCodingManagerPrivate *d_ptr; + Q_DISABLE_COPY(QGeoCodingManager) + + friend class QGeoServiceProvider; + friend class QGeoServiceProviderPrivate; +}; + +QT_END_NAMESPACE + +#endif diff --git a/src/QtLocationPlugin/qtlocation/src/location/maps/qgeocodingmanager_p.h b/src/QtLocationPlugin/qtlocation/src/location/maps/qgeocodingmanager_p.h new file mode 100644 index 0000000..de723ee --- /dev/null +++ b/src/QtLocationPlugin/qtlocation/src/location/maps/qgeocodingmanager_p.h @@ -0,0 +1,76 @@ +/**************************************************************************** +** +** Copyright (C) 2015 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the QtLocation module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The Qt Company. For licensing terms +** and conditions see http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QGEOCODINGMANAGER_P_H +#define QGEOCODINGMANAGER_P_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists purely as an +// implementation detail. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + +#include "qgeocodingmanager.h" + +#include "qgeocodereply.h" + +#include + +QT_BEGIN_NAMESPACE + +class QGeoCodingManagerEngine; + +class QGeoCodingManagerPrivate +{ +public: + QGeoCodingManagerPrivate(); + ~QGeoCodingManagerPrivate(); + + QGeoCodingManagerEngine *engine; + +private: + Q_DISABLE_COPY(QGeoCodingManagerPrivate) +}; + +QT_END_NAMESPACE + +#endif + diff --git a/src/QtLocationPlugin/qtlocation/src/location/maps/qgeocodingmanagerengine.h b/src/QtLocationPlugin/qtlocation/src/location/maps/qgeocodingmanagerengine.h new file mode 100644 index 0000000..3e91575 --- /dev/null +++ b/src/QtLocationPlugin/qtlocation/src/location/maps/qgeocodingmanagerengine.h @@ -0,0 +1,89 @@ +/**************************************************************************** +** +** Copyright (C) 2015 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the QtLocation module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The Qt Company. For licensing terms +** and conditions see http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QGEOCODINGMANAGERENGINE_H +#define QGEOCODINGMANAGERENGINE_H + +#include +#include +#include + +QT_BEGIN_NAMESPACE + +class QGeoAddress; +class QGeoShape; +class QGeoCodingManagerEnginePrivate; + +class Q_LOCATION_EXPORT QGeoCodingManagerEngine : public QObject +{ + Q_OBJECT +public: + QGeoCodingManagerEngine(const QVariantMap ¶meters, QObject *parent = 0); + virtual ~QGeoCodingManagerEngine(); + + QString managerName() const; + int managerVersion() const; + + virtual QGeoCodeReply *geocode(const QGeoAddress &address, const QGeoShape &bounds); + virtual QGeoCodeReply *geocode(const QString &address, + int limit, + int offset, + const QGeoShape &bounds); + virtual QGeoCodeReply *reverseGeocode(const QGeoCoordinate &coordinate, + const QGeoShape &bounds); + + + void setLocale(const QLocale &locale); + QLocale locale() const; + +Q_SIGNALS: + void finished(QGeoCodeReply *reply); + void error(QGeoCodeReply *reply, QGeoCodeReply::Error error, QString errorString = QString()); + +private: + void setManagerName(const QString &managerName); + void setManagerVersion(int managerVersion); + + QGeoCodingManagerEnginePrivate *d_ptr; + Q_DISABLE_COPY(QGeoCodingManagerEngine) + + friend class QGeoServiceProvider; + friend class QGeoServiceProviderPrivate; +}; + +QT_END_NAMESPACE + +#endif diff --git a/src/QtLocationPlugin/qtlocation/src/location/maps/qgeocodingmanagerengine_p.h b/src/QtLocationPlugin/qtlocation/src/location/maps/qgeocodingmanagerengine_p.h new file mode 100644 index 0000000..b6fcb68 --- /dev/null +++ b/src/QtLocationPlugin/qtlocation/src/location/maps/qgeocodingmanagerengine_p.h @@ -0,0 +1,75 @@ +/**************************************************************************** +** +** Copyright (C) 2015 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the QtLocation module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The Qt Company. For licensing terms +** and conditions see http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QGEOCODINGMANAGERENGINE_P_H +#define QGEOCODINGMANAGERENGINE_P_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists purely as an +// implementation detail. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + +#include "qgeocodingmanagerengine.h" + +#include +#include + +QT_BEGIN_NAMESPACE + +class QGeoCodingManagerEnginePrivate +{ +public: + QGeoCodingManagerEnginePrivate(); + ~QGeoCodingManagerEnginePrivate(); + + QString managerName; + int managerVersion; + + QLocale locale; + +private: + Q_DISABLE_COPY(QGeoCodingManagerEnginePrivate) +}; + +QT_END_NAMESPACE + +#endif diff --git a/src/QtLocationPlugin/qtlocation/src/location/maps/qgeomaneuver.h b/src/QtLocationPlugin/qtlocation/src/location/maps/qgeomaneuver.h new file mode 100644 index 0000000..9710f8f --- /dev/null +++ b/src/QtLocationPlugin/qtlocation/src/location/maps/qgeomaneuver.h @@ -0,0 +1,104 @@ +/**************************************************************************** +** +** Copyright (C) 2015 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the QtLocation module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The Qt Company. For licensing terms +** and conditions see http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QGEOMANEUVER_H +#define QGEOMANEUVER_H + +#include +#include + +QT_BEGIN_NAMESPACE + +class QString; + +class QGeoCoordinate; +class QGeoManeuverPrivate; + +class Q_LOCATION_EXPORT QGeoManeuver +{ + +public: + enum InstructionDirection { + NoDirection, + DirectionForward, + DirectionBearRight, + DirectionLightRight, + DirectionRight, + DirectionHardRight, + DirectionUTurnRight, + DirectionUTurnLeft, + DirectionHardLeft, + DirectionLeft, + DirectionLightLeft, + DirectionBearLeft + }; + + QGeoManeuver(); + QGeoManeuver(const QGeoManeuver &other); + ~QGeoManeuver(); + + QGeoManeuver &operator= (const QGeoManeuver &other); + + bool operator== (const QGeoManeuver &other) const; + bool operator!= (const QGeoManeuver &other) const; + + bool isValid() const; + + void setPosition(const QGeoCoordinate &position); + QGeoCoordinate position() const; + + void setInstructionText(const QString &instructionText); + QString instructionText() const; + + void setDirection(InstructionDirection direction); + InstructionDirection direction() const; + + void setTimeToNextInstruction(int secs); + int timeToNextInstruction() const; + + void setDistanceToNextInstruction(qreal distance); + qreal distanceToNextInstruction() const; + + void setWaypoint(const QGeoCoordinate &coordinate); + QGeoCoordinate waypoint() const; + +private: + QSharedDataPointer d_ptr; +}; + +QT_END_NAMESPACE + +#endif diff --git a/src/QtLocationPlugin/qtlocation/src/location/maps/qgeomaneuver_p.h b/src/QtLocationPlugin/qtlocation/src/location/maps/qgeomaneuver_p.h new file mode 100644 index 0000000..c048f13 --- /dev/null +++ b/src/QtLocationPlugin/qtlocation/src/location/maps/qgeomaneuver_p.h @@ -0,0 +1,80 @@ +/**************************************************************************** +** +** Copyright (C) 2015 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the QtLocation module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The Qt Company. For licensing terms +** and conditions see http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QGEOMANEUVER_P_H +#define QGEOMANEUVER_P_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists purely as an +// implementation detail. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + +#include "qgeomaneuver.h" +#include "qgeocoordinate.h" + +#include +#include + +QT_BEGIN_NAMESPACE + +class QGeoManeuverPrivate : public QSharedData +{ +public: + QGeoManeuverPrivate(); + QGeoManeuverPrivate(const QGeoManeuverPrivate &other); + ~QGeoManeuverPrivate(); + + bool operator== (const QGeoManeuverPrivate &other) const; + + bool valid; + QString id; + QGeoCoordinate position; + QString text; + QGeoManeuver::InstructionDirection direction; + int timeToNextInstruction; + qreal distanceToNextInstruction; + QGeoCoordinate waypoint; +}; + +QT_END_NAMESPACE + +#endif diff --git a/src/QtLocationPlugin/qtlocation/src/location/maps/qgeomap_p.h b/src/QtLocationPlugin/qtlocation/src/location/maps/qgeomap_p.h new file mode 100644 index 0000000..9e4d5a0 --- /dev/null +++ b/src/QtLocationPlugin/qtlocation/src/location/maps/qgeomap_p.h @@ -0,0 +1,115 @@ +/**************************************************************************** +** +** Copyright (C) 2015 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the QtLocation module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The Qt Company. For licensing terms +** and conditions see http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ +#ifndef QGEOMAP_P_H +#define QGEOMAP_P_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists purely as an +// implementation detail. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + +#include "qgeocameradata_p.h" +#include "qgeomaptype_p.h" +#include +#include + +QT_BEGIN_NAMESPACE + +class QGeoMappingManagerEngine; +class QGeoMapPrivate; +class QGeoMapController; +class QGeoCameraCapabilities; +class QGeoCoordinate; +class QSGNode; +class QQuickWindow; + +class Q_LOCATION_EXPORT QGeoMap : public QObject +{ + Q_OBJECT + Q_DECLARE_PRIVATE(QGeoMap) + +public: + virtual ~QGeoMap(); + + QGeoMapController *mapController(); + + void resize(int width, int height); + int width() const; + int height() const; + + QGeoCameraData cameraData() const; + + void setActiveMapType(const QGeoMapType mapType); + const QGeoMapType activeMapType() const; + + virtual QGeoCoordinate itemPositionToCoordinate(const QDoubleVector2D &pos, bool clipToViewport = true) const = 0; + virtual QDoubleVector2D coordinateToItemPosition(const QGeoCoordinate &coordinate, bool clipToViewport = true) const = 0; + virtual int mapVersion(); + virtual void prefetchData(); + + QString pluginString(); + QGeoCameraCapabilities cameraCapabilities(); + +protected: + QGeoMap(QGeoMapPrivate &dd, QObject *parent = 0); + void setCameraData(const QGeoCameraData &cameraData); + virtual QSGNode *updateSceneGraph(QSGNode *node, QQuickWindow *window) = 0; + +public Q_SLOTS: + void update(); + +Q_SIGNALS: + void cameraDataChanged(const QGeoCameraData &cameraData); + void updateRequired(); + void activeMapTypeChanged(); + void copyrightsChanged(const QImage ©rightsImage); + void copyrightsChanged(const QString ©rightsHtml); + +private: + Q_DISABLE_COPY(QGeoMap) + friend class QGeoMapController; //setCameraData + friend class QDeclarativeGeoMap; //updateSceneGraph +}; + +QT_END_NAMESPACE + +#endif // QGEOMAP_P_H diff --git a/src/QtLocationPlugin/qtlocation/src/location/maps/qgeomap_p_p.h b/src/QtLocationPlugin/qtlocation/src/location/maps/qgeomap_p_p.h new file mode 100644 index 0000000..e7a2306 --- /dev/null +++ b/src/QtLocationPlugin/qtlocation/src/location/maps/qgeomap_p_p.h @@ -0,0 +1,89 @@ +/**************************************************************************** +** +** Copyright (C) 2015 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the QtLocation module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The Qt Company. For licensing terms +** and conditions see http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ +#ifndef QGEOMAP_P_P_H +#define QGEOMAP_P_P_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists purely as an +// implementation detail. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + +#include "qgeocameradata_p.h" +#include "qgeomaptype_p.h" +#include + + +QT_BEGIN_NAMESPACE + +class QGeoMappingManagerEngine; +class QGeoMap; +class QGeoMapController; + +class QGeoMapPrivate : public QObjectPrivate +{ + Q_DECLARE_PUBLIC(QGeoMap) +public: + QGeoMapPrivate(QGeoMappingManagerEngine *engine); + virtual ~QGeoMapPrivate(); + + void setCameraData(const QGeoCameraData &cameraData); + void resize(int width, int height); + +protected: + virtual void mapResized(int width, int height) = 0; + virtual void changeCameraData(const QGeoCameraData &oldCameraData) = 0; + virtual void changeActiveMapType(const QGeoMapType mapType) = 0; + +protected: + int m_width; + int m_height; + double m_aspectRatio; + QPointer m_engine; + QString m_pluginString; + QGeoMapController *m_controller; + QGeoCameraData m_cameraData; + QGeoMapType m_activeMapType; +}; + +QT_END_NAMESPACE + +#endif // QGEOMAP_P_P_H diff --git a/src/QtLocationPlugin/qtlocation/src/location/maps/qgeomapcontroller_p.h b/src/QtLocationPlugin/qtlocation/src/location/maps/qgeomapcontroller_p.h new file mode 100644 index 0000000..06f2b92 --- /dev/null +++ b/src/QtLocationPlugin/qtlocation/src/location/maps/qgeomapcontroller_p.h @@ -0,0 +1,112 @@ +/**************************************************************************** +** +** Copyright (C) 2015 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the QtLocation module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The Qt Company. For licensing terms +** and conditions see http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ +#ifndef QGEOMAPCONTROLLER_P_H +#define QGEOMAPCONTROLLER_P_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists purely as an +// implementation detail. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + +#include + +#include "qgeocoordinate.h" +#include "qgeocameradata_p.h" + +QT_BEGIN_NAMESPACE + +class QGeoMap; + + +class Q_LOCATION_EXPORT QGeoMapController : public QObject +{ + Q_OBJECT + + Q_PROPERTY(QGeoCoordinate center READ center WRITE setCenter NOTIFY centerChanged) + Q_PROPERTY(qreal bearing READ bearing WRITE setBearing NOTIFY bearingChanged) + Q_PROPERTY(qreal tilt READ tilt WRITE setTilt NOTIFY tiltChanged) + Q_PROPERTY(qreal roll READ roll WRITE setRoll NOTIFY rollChanged) + Q_PROPERTY(qreal zoom READ zoom WRITE setZoom NOTIFY zoomChanged) + +public: + QGeoMapController(QGeoMap *map); + ~QGeoMapController(); + + QGeoCoordinate center() const; + void setCenter(const QGeoCoordinate ¢er); + + void setLatitude(qreal latitude); + void setLongitude(qreal longitude); + void setAltitude(qreal altitude); + + qreal bearing() const; + void setBearing(qreal bearing); + + qreal tilt() const; + void setTilt(qreal tilt); + + qreal roll() const; + void setRoll(qreal roll); + + qreal zoom() const; + void setZoom(qreal zoom); + + void pan(qreal dx, qreal dy); + +private Q_SLOTS: + void cameraDataChanged(const QGeoCameraData &cameraData); + +Q_SIGNALS: + void centerChanged(const QGeoCoordinate ¢er); + void bearingChanged(qreal bearing); + void tiltChanged(qreal tilt); + void rollChanged(qreal roll); + void zoomChanged(qreal zoom); + +private: + QGeoMap *map_; + QGeoCameraData oldCameraData_; +}; + +QT_END_NAMESPACE + +#endif // QGEOMAPCONTROLLER_P_H diff --git a/src/QtLocationPlugin/qtlocation/src/location/maps/qgeomappingmanager_p.h b/src/QtLocationPlugin/qtlocation/src/location/maps/qgeomappingmanager_p.h new file mode 100644 index 0000000..043ebd8 --- /dev/null +++ b/src/QtLocationPlugin/qtlocation/src/location/maps/qgeomappingmanager_p.h @@ -0,0 +1,106 @@ +/**************************************************************************** +** +** Copyright (C) 2015 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the QtLocation module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The Qt Company. For licensing terms +** and conditions see http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QGEOMAPPINGMANAGER_H +#define QGEOMAPPINGMANAGER_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists purely as an +// implementation detail. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + +#include +#include +#include +#include +#include "qgeomaptype_p.h" + +QT_BEGIN_NAMESPACE + +class QGeoMap; +class QLocale; +class QGeoRectangle; +class QGeoCoordinate; +class QGeoMappingManagerPrivate; +class QGeoMapRequestOptions; +class QGeoMappingManagerEngine; +class QGeoCameraCapabilities; + + +class Q_LOCATION_EXPORT QGeoMappingManager : public QObject +{ + Q_OBJECT + +public: + ~QGeoMappingManager(); + + QString managerName() const; + int managerVersion() const; + + QGeoMap *createMap(QObject *parent); + + QList supportedMapTypes() const; + + bool isInitialized() const; + + QGeoCameraCapabilities cameraCapabilities() const; + + void setLocale(const QLocale &locale); + QLocale locale() const; + +Q_SIGNALS: + void initialized(); + +protected: + QGeoMappingManager(QGeoMappingManagerEngine *engine, QObject *parent = 0); + +private: + QGeoMappingManagerPrivate *d_ptr; + Q_DISABLE_COPY(QGeoMappingManager) + + friend class QGeoServiceProvider; + friend class QGeoServiceProviderPrivate; +}; + +QT_END_NAMESPACE + +#endif diff --git a/src/QtLocationPlugin/qtlocation/src/location/maps/qgeomappingmanager_p_p.h b/src/QtLocationPlugin/qtlocation/src/location/maps/qgeomappingmanager_p_p.h new file mode 100644 index 0000000..65d1b5e --- /dev/null +++ b/src/QtLocationPlugin/qtlocation/src/location/maps/qgeomappingmanager_p_p.h @@ -0,0 +1,73 @@ +/**************************************************************************** +** +** Copyright (C) 2015 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the QtLocation module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The Qt Company. For licensing terms +** and conditions see http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QGEOMAPPINGMANAGER_P_H +#define QGEOMAPPINGMANAGER_P_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists purely as an +// implementation detail. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + +#include +#include +#include +#include +#include + +QT_BEGIN_NAMESPACE + +class QGeoMappingManagerPrivate +{ +public: + QGeoMappingManagerPrivate(); + ~QGeoMappingManagerPrivate(); + + QGeoMappingManagerEngine *engine; + +private: + Q_DISABLE_COPY(QGeoMappingManagerPrivate) +}; + +QT_END_NAMESPACE + +#endif diff --git a/src/QtLocationPlugin/qtlocation/src/location/maps/qgeomappingmanagerengine_p.h b/src/QtLocationPlugin/qtlocation/src/location/maps/qgeomappingmanagerengine_p.h new file mode 100644 index 0000000..b9565d8 --- /dev/null +++ b/src/QtLocationPlugin/qtlocation/src/location/maps/qgeomappingmanagerengine_p.h @@ -0,0 +1,125 @@ +/**************************************************************************** +** +** Copyright (C) 2015 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the QtLocation module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The Qt Company. For licensing terms +** and conditions see http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QGEOMAPPINGMANAGERENGINE_H +#define QGEOMAPPINGMANAGERENGINE_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists purely as an +// implementation detail. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "qgeomaptype_p.h" +#include "qgeomappingmanager_p.h" + +QT_BEGIN_NAMESPACE + +class QLocale; + +class QGeoRectangle; +class QGeoCoordinate; +class QGeoMappingManagerPrivate; +class QGeoMapRequestOptions; + +class QGeoMappingManagerEnginePrivate; +class QGeoMap; + +class Q_LOCATION_EXPORT QGeoMappingManagerEngine : public QObject +{ + Q_OBJECT + +public: + explicit QGeoMappingManagerEngine(QObject *parent = 0); + virtual ~QGeoMappingManagerEngine(); + + virtual QGeoMap *createMap() = 0; + virtual void registerMap(QGeoMap *map) = 0; + virtual void deregisterMap(QGeoMap *map) = 0; + + QVariantMap parameters() const; + + QString managerName() const; + int managerVersion() const; + + QList supportedMapTypes() const; + + QGeoCameraCapabilities cameraCapabilities(); + + void setLocale(const QLocale &locale); + QLocale locale() const; + + bool isInitialized() const; + +Q_SIGNALS: + void initialized(); + +protected: + void setSupportedMapTypes(const QList &supportedMapTypes); + void setCameraCapabilities(const QGeoCameraCapabilities &capabilities); + + void engineInitialized(); + +private: + QGeoMappingManagerEnginePrivate *d_ptr; + + void setManagerName(const QString &managerName); + void setManagerVersion(int managerVersion); + + Q_DECLARE_PRIVATE(QGeoMappingManagerEngine) + Q_DISABLE_COPY(QGeoMappingManagerEngine) + + friend class QGeoServiceProvider; + friend class QGeoServiceProviderPrivate; +}; + +QT_END_NAMESPACE + +#endif diff --git a/src/QtLocationPlugin/qtlocation/src/location/maps/qgeomappingmanagerengine_p_p.h b/src/QtLocationPlugin/qtlocation/src/location/maps/qgeomappingmanagerengine_p_p.h new file mode 100644 index 0000000..5442686 --- /dev/null +++ b/src/QtLocationPlugin/qtlocation/src/location/maps/qgeomappingmanagerengine_p_p.h @@ -0,0 +1,87 @@ +/**************************************************************************** +** +** Copyright (C) 2015 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the QtLocation module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The Qt Company. For licensing terms +** and conditions see http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QGEOMAPPINGMANAGERENGINE_P_H +#define QGEOMAPPINGMANAGERENGINE_P_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists purely as an +// implementation detail. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + +#include +#include +#include +#include +#include +#include +#include "qgeomaptype_p.h" +#include "qgeomappingmanager_p.h" +#include "qgeocameracapabilities_p.h" + +QT_BEGIN_NAMESPACE + +class QGeoTileSpec; +class QGeoTiledMapReply; + +class QGeoMappingManagerEnginePrivate +{ +public: + QGeoMappingManagerEnginePrivate(); + ~QGeoMappingManagerEnginePrivate(); + + QString managerName; + int managerVersion; + + QList supportedMapTypes; + QGeoCameraCapabilities capabilities_; + + QLocale locale; + bool initialized; + +private: + Q_DISABLE_COPY(QGeoMappingManagerEnginePrivate) +}; + +QT_END_NAMESPACE + +#endif diff --git a/src/QtLocationPlugin/qtlocation/src/location/maps/qgeomapscene_p.h b/src/QtLocationPlugin/qtlocation/src/location/maps/qgeomapscene_p.h new file mode 100644 index 0000000..a4a9e4e --- /dev/null +++ b/src/QtLocationPlugin/qtlocation/src/location/maps/qgeomapscene_p.h @@ -0,0 +1,98 @@ +/**************************************************************************** +** +** Copyright (C) 2015 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the QtLocation module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The Qt Company. For licensing terms +** and conditions see http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ +#ifndef QGEOMAPSCENE_P_H +#define QGEOMAPSCENE_P_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists purely as an +// implementation detail. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + +#include +#include + +QT_BEGIN_NAMESPACE + +class QGeoCameraData; +class QGeoTileSpec; +class QDoubleVector2D; +class QGeoTileTexture; +class QSGNode; +class QQuickWindow; +class QGeoMapScenePrivate; + +class Q_LOCATION_EXPORT QGeoMapScene : public QObject +{ + Q_OBJECT + Q_DECLARE_PRIVATE(QGeoMapScene) +public: + explicit QGeoMapScene(QObject *parent = 0); + virtual ~QGeoMapScene(); + + void setScreenSize(const QSize &size); + void setTileSize(int tileSize); + void setCameraData(const QGeoCameraData &cameraData); + + void setVisibleTiles(const QSet &tiles); + + void setUseVerticalLock(bool lock); + + void addTile(const QGeoTileSpec &spec, QSharedPointer texture); + + QDoubleVector2D itemPositionToMercator(const QDoubleVector2D &pos) const; + QDoubleVector2D mercatorToItemPosition(const QDoubleVector2D &mercator) const; + + QSGNode *updateSceneGraph(QSGNode *oldNode, QQuickWindow *window); + + bool verticalLock() const; + QSet texturedTiles(); + +Q_SIGNALS: + void newTilesVisible(const QSet &newTiles); + +private: + Q_DISABLE_COPY(QGeoMapScene) +}; + +QT_END_NAMESPACE + +#endif // QGEOMAPSCENE_P_H diff --git a/src/QtLocationPlugin/qtlocation/src/location/maps/qgeomaptype_p.h b/src/QtLocationPlugin/qtlocation/src/location/maps/qgeomaptype_p.h new file mode 100644 index 0000000..78c7416 --- /dev/null +++ b/src/QtLocationPlugin/qtlocation/src/location/maps/qgeomaptype_p.h @@ -0,0 +1,101 @@ +/**************************************************************************** +** +** Copyright (C) 2015 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the QtLocation module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The Qt Company. For licensing terms +** and conditions see http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QGEOMAPTYPE_H +#define QGEOMAPTYPE_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists purely as an +// implementation detail. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + +#include +#include +#include + +QT_BEGIN_NAMESPACE + +class QGeoMapTypePrivate; + +class Q_LOCATION_EXPORT QGeoMapType +{ +public: + enum MapStyle { + NoMap = 0, + StreetMap, + SatelliteMapDay, + SatelliteMapNight, + TerrainMap, + HybridMap, + TransitMap, + GrayStreetMap, + PedestrianMap, + CarNavigationMap, + CycleMap, + CustomMap = 100 + }; + + QGeoMapType(); + QGeoMapType(const QGeoMapType &other); + QGeoMapType(MapStyle style, const QString &name, const QString &description, bool mobile, + bool night, int mapId); + ~QGeoMapType(); + + QGeoMapType &operator = (const QGeoMapType &other); + + bool operator == (const QGeoMapType &other) const; + bool operator != (const QGeoMapType &other) const; + + MapStyle style() const; + QString name() const; + QString description() const; + bool mobile() const; + bool night() const; + int mapId() const; + +private: + QSharedDataPointer d_ptr; +}; + +QT_END_NAMESPACE + +#endif // QGEOMAPTYPE_H diff --git a/src/QtLocationPlugin/qtlocation/src/location/maps/qgeomaptype_p_p.h b/src/QtLocationPlugin/qtlocation/src/location/maps/qgeomaptype_p_p.h new file mode 100644 index 0000000..2aafd37 --- /dev/null +++ b/src/QtLocationPlugin/qtlocation/src/location/maps/qgeomaptype_p_p.h @@ -0,0 +1,83 @@ +/**************************************************************************** +** +** Copyright (C) 2015 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the QtLocation module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The Qt Company. For licensing terms +** and conditions see http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QGEOMAPTYPE_P_H +#define QGEOMAPTYPE_P_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists purely as an +// implementation detail. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + +#include +#include +#include + +#include "qgeomaptype_p.h" + +QT_BEGIN_NAMESPACE + +class QGeoMapTypePrivate : public QSharedData +{ +public: + QGeoMapTypePrivate(); + QGeoMapTypePrivate(QGeoMapType::MapStyle style, const QString &name, const QString &description, bool mobile, bool night, int mapId); + QGeoMapTypePrivate(const QGeoMapTypePrivate &other); + ~QGeoMapTypePrivate(); + + QGeoMapTypePrivate &operator = (const QGeoMapTypePrivate &other); + + bool operator == (const QGeoMapTypePrivate &other) const; + + QGeoMapType::MapStyle style_; + QString name_; + QString description_; + bool mobile_; + bool night_; + int mapId_; +}; + +QT_END_NAMESPACE + +Q_DECLARE_METATYPE(QGeoMapTypePrivate) + +#endif // QGEOMAPTYPE_P_H diff --git a/src/QtLocationPlugin/qtlocation/src/location/maps/qgeoroute.h b/src/QtLocationPlugin/qtlocation/src/location/maps/qgeoroute.h new file mode 100644 index 0000000..68e73c0 --- /dev/null +++ b/src/QtLocationPlugin/qtlocation/src/location/maps/qgeoroute.h @@ -0,0 +1,96 @@ +/**************************************************************************** +** +** Copyright (C) 2015 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the QtLocation module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The Qt Company. For licensing terms +** and conditions see http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QGEOROUTE_H +#define QGEOROUTE_H + +#include +#include + +#include +#include +#include + +QT_BEGIN_NAMESPACE + +class QGeoRectangle; +class QGeoRouteSegment; + +class QGeoRoutePrivate; + +class Q_LOCATION_EXPORT QGeoRoute +{ +public: + QGeoRoute(); + QGeoRoute(const QGeoRoute &other); + ~QGeoRoute(); + + QGeoRoute &operator = (const QGeoRoute &other); + + bool operator == (const QGeoRoute &other) const; + bool operator != (const QGeoRoute &other) const; + + void setRouteId(const QString &id); + QString routeId() const; + + void setRequest(const QGeoRouteRequest &request); + QGeoRouteRequest request() const; + + void setBounds(const QGeoRectangle &bounds); + QGeoRectangle bounds() const; + + void setFirstRouteSegment(const QGeoRouteSegment &routeSegment); + QGeoRouteSegment firstRouteSegment() const; + + void setTravelTime(int secs); + int travelTime() const; + + void setDistance(qreal distance); + qreal distance() const; + + void setTravelMode(QGeoRouteRequest::TravelMode mode); + QGeoRouteRequest::TravelMode travelMode() const; + + void setPath(const QList &path); + QList path() const; + +private: + QExplicitlySharedDataPointer d_ptr; +}; + +QT_END_NAMESPACE + +#endif diff --git a/src/QtLocationPlugin/qtlocation/src/location/maps/qgeoroute_p.h b/src/QtLocationPlugin/qtlocation/src/location/maps/qgeoroute_p.h new file mode 100644 index 0000000..66ef3c6 --- /dev/null +++ b/src/QtLocationPlugin/qtlocation/src/location/maps/qgeoroute_p.h @@ -0,0 +1,89 @@ +/**************************************************************************** +** +** Copyright (C) 2015 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the QtLocation module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The Qt Company. For licensing terms +** and conditions see http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QGEOROUTE_P_H +#define QGEOROUTE_P_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists purely as an +// implementation detail. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + +#include "qgeoroute.h" +#include "qgeorouterequest.h" +#include "qgeorectangle.h" +#include "qgeoroutesegment.h" + +#include + +QT_BEGIN_NAMESPACE + +class QGeoCoordinate; + +class QGeoRoutePrivate : public QSharedData +{ +public: + QGeoRoutePrivate(); + QGeoRoutePrivate(const QGeoRoutePrivate &other); + ~QGeoRoutePrivate(); + + bool operator == (const QGeoRoutePrivate &other) const; + + QString id; + QGeoRouteRequest request; + + QGeoRectangle bounds; +// QList routeSegments; + + int travelTime; + qreal distance; + + QGeoRouteRequest::TravelMode travelMode; + + QList path; + + QGeoRouteSegment firstSegment; +}; + +QT_END_NAMESPACE + +#endif diff --git a/src/QtLocationPlugin/qtlocation/src/location/maps/qgeoroutereply.h b/src/QtLocationPlugin/qtlocation/src/location/maps/qgeoroutereply.h new file mode 100644 index 0000000..52f9133 --- /dev/null +++ b/src/QtLocationPlugin/qtlocation/src/location/maps/qgeoroutereply.h @@ -0,0 +1,95 @@ +/**************************************************************************** +** +** Copyright (C) 2015 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the QtLocation module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The Qt Company. For licensing terms +** and conditions see http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QGEOROUTEREPLY_H +#define QGEOROUTEREPLY_H + +#include + +#include +#include + +QT_BEGIN_NAMESPACE + +class QGeoRouteRequest; +class QGeoRouteReplyPrivate; + +class Q_LOCATION_EXPORT QGeoRouteReply : public QObject +{ + Q_OBJECT +public: + enum Error { + NoError, + EngineNotSetError, + CommunicationError, + ParseError, + UnsupportedOptionError, + UnknownError + }; + + QGeoRouteReply(Error error, const QString &errorString, QObject *parent = 0); + virtual ~QGeoRouteReply(); + + bool isFinished() const; + Error error() const; + QString errorString() const; + + QGeoRouteRequest request() const; + QList routes() const; + + virtual void abort(); + +Q_SIGNALS: + void finished(); + void error(QGeoRouteReply::Error error, const QString &errorString = QString()); + +protected: + QGeoRouteReply(const QGeoRouteRequest &request, QObject *parent = 0); + + void setError(Error error, const QString &errorString); + void setFinished(bool finished); + + void setRoutes(const QList &routes); + void addRoutes(const QList &routes); + +private: + QGeoRouteReplyPrivate *d_ptr; + Q_DISABLE_COPY(QGeoRouteReply) +}; + +QT_END_NAMESPACE + +#endif diff --git a/src/QtLocationPlugin/qtlocation/src/location/maps/qgeoroutereply_p.h b/src/QtLocationPlugin/qtlocation/src/location/maps/qgeoroutereply_p.h new file mode 100644 index 0000000..496a616 --- /dev/null +++ b/src/QtLocationPlugin/qtlocation/src/location/maps/qgeoroutereply_p.h @@ -0,0 +1,80 @@ +/**************************************************************************** +** +** Copyright (C) 2015 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the QtLocation module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The Qt Company. For licensing terms +** and conditions see http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QGEOROUTEREPLY_P_H +#define QGEOROUTEREPLY_P_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists purely as an +// implementation detail. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + +#include "qgeorouterequest.h" +#include "qgeoroutereply.h" + +#include + +QT_BEGIN_NAMESPACE + +class QGeoRoute; + +class QGeoRouteReplyPrivate +{ +public: + explicit QGeoRouteReplyPrivate(const QGeoRouteRequest &request); + QGeoRouteReplyPrivate(QGeoRouteReply::Error error, QString errorString); + ~QGeoRouteReplyPrivate(); + + QGeoRouteReply::Error error; + QString errorString; + bool isFinished; + + QGeoRouteRequest request; + QList routes; + +private: + Q_DISABLE_COPY(QGeoRouteReplyPrivate) +}; + +QT_END_NAMESPACE + +#endif diff --git a/src/QtLocationPlugin/qtlocation/src/location/maps/qgeorouterequest.h b/src/QtLocationPlugin/qtlocation/src/location/maps/qgeorouterequest.h new file mode 100644 index 0000000..1692bbb --- /dev/null +++ b/src/QtLocationPlugin/qtlocation/src/location/maps/qgeorouterequest.h @@ -0,0 +1,161 @@ +/**************************************************************************** +** +** Copyright (C) 2015 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the QtLocation module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The Qt Company. For licensing terms +** and conditions see http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QGEOROUTEREQUEST_H +#define QGEOROUTEREQUEST_H + +#include +#include +#include + +#include +#include + +QT_BEGIN_NAMESPACE + +class QGeoRectangle; +class QGeoRouteRequestPrivate; + +class Q_LOCATION_EXPORT QGeoRouteRequest +{ +public: + enum TravelMode { + CarTravel = 0x0001, + PedestrianTravel = 0x0002, + BicycleTravel = 0x0004, + PublicTransitTravel = 0x0008, + TruckTravel = 0x0010 + }; + Q_DECLARE_FLAGS(TravelModes, TravelMode) + + enum FeatureType { + NoFeature = 0x00000000, + TollFeature = 0x00000001, + HighwayFeature = 0x00000002, + PublicTransitFeature = 0x00000004, + FerryFeature = 0x00000008, + TunnelFeature = 0x00000010, + DirtRoadFeature = 0x00000020, + ParksFeature = 0x00000040, + MotorPoolLaneFeature = 0x00000080 + }; + Q_DECLARE_FLAGS(FeatureTypes, FeatureType) + + enum FeatureWeight { + NeutralFeatureWeight = 0x00000000, + PreferFeatureWeight = 0x00000001, + RequireFeatureWeight = 0x00000002, + AvoidFeatureWeight = 0x00000004, + DisallowFeatureWeight = 0x00000008 + }; + Q_DECLARE_FLAGS(FeatureWeights, FeatureWeight) + + enum RouteOptimization { + ShortestRoute = 0x0001, + FastestRoute = 0x0002, + MostEconomicRoute = 0x0004, + MostScenicRoute = 0x0008 + }; + Q_DECLARE_FLAGS(RouteOptimizations, RouteOptimization) + + enum SegmentDetail { + NoSegmentData = 0x0000, + BasicSegmentData = 0x0001 + }; + Q_DECLARE_FLAGS(SegmentDetails, SegmentDetail) + + enum ManeuverDetail { + NoManeuvers = 0x0000, + BasicManeuvers = 0x0001 + }; + Q_DECLARE_FLAGS(ManeuverDetails, ManeuverDetail) + + explicit QGeoRouteRequest(const QList &waypoints = QList()); + QGeoRouteRequest(const QGeoCoordinate &origin, + const QGeoCoordinate &destination); + QGeoRouteRequest(const QGeoRouteRequest &other); + + ~QGeoRouteRequest(); + + QGeoRouteRequest &operator= (const QGeoRouteRequest &other); + + bool operator == (const QGeoRouteRequest &other) const; + bool operator != (const QGeoRouteRequest &other) const; + + void setWaypoints(const QList &waypoints); + QList waypoints() const; + + void setExcludeAreas(const QList &areas); + QList excludeAreas() const; + + // defaults to 0 + void setNumberAlternativeRoutes(int alternatives); + int numberAlternativeRoutes() const; + + // defaults to TravelByCar + void setTravelModes(TravelModes travelModes); + TravelModes travelModes() const; + + void setFeatureWeight(FeatureType featureType, FeatureWeight featureWeight); + FeatureWeight featureWeight(FeatureType featureType) const; + QList featureTypes() const; + + // defaults to OptimizeFastest + void setRouteOptimization(RouteOptimizations optimization); + RouteOptimizations routeOptimization() const; + + // defaults to BasicSegmentData + void setSegmentDetail(SegmentDetail segmentDetail); + SegmentDetail segmentDetail() const; + + // defaults to BasicManeuvers + void setManeuverDetail(ManeuverDetail maneuverDetail); + ManeuverDetail maneuverDetail() const; + +private: + QExplicitlySharedDataPointer d_ptr; +}; + +Q_DECLARE_OPERATORS_FOR_FLAGS(QGeoRouteRequest::TravelModes) +Q_DECLARE_OPERATORS_FOR_FLAGS(QGeoRouteRequest::FeatureTypes) +Q_DECLARE_OPERATORS_FOR_FLAGS(QGeoRouteRequest::FeatureWeights) +Q_DECLARE_OPERATORS_FOR_FLAGS(QGeoRouteRequest::RouteOptimizations) +Q_DECLARE_OPERATORS_FOR_FLAGS(QGeoRouteRequest::SegmentDetails) +Q_DECLARE_OPERATORS_FOR_FLAGS(QGeoRouteRequest::ManeuverDetails) + +QT_END_NAMESPACE + +#endif diff --git a/src/QtLocationPlugin/qtlocation/src/location/maps/qgeorouterequest_p.h b/src/QtLocationPlugin/qtlocation/src/location/maps/qgeorouterequest_p.h new file mode 100644 index 0000000..ea0b142 --- /dev/null +++ b/src/QtLocationPlugin/qtlocation/src/location/maps/qgeorouterequest_p.h @@ -0,0 +1,82 @@ +/**************************************************************************** +** +** Copyright (C) 2015 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the QtLocation module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The Qt Company. For licensing terms +** and conditions see http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QGEOROUTEREQUEST_P_H +#define QGEOROUTEREQUEST_P_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists purely as an +// implementation detail. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + +#include "qgeorouterequest.h" + +#include +#include +#include +#include + +QT_BEGIN_NAMESPACE + +class QGeoRouteRequestPrivate : public QSharedData +{ +public: + QGeoRouteRequestPrivate(); + QGeoRouteRequestPrivate(const QGeoRouteRequestPrivate &other); + ~QGeoRouteRequestPrivate(); + + bool operator ==(const QGeoRouteRequestPrivate &other) const; + + QList waypoints; + QList excludeAreas; + int numberAlternativeRoutes; + QGeoRouteRequest::TravelModes travelModes; + QMap < QGeoRouteRequest::FeatureType, + QGeoRouteRequest::FeatureWeight > featureWeights; + QGeoRouteRequest::RouteOptimizations routeOptimization; + QGeoRouteRequest::SegmentDetail segmentDetail; + QGeoRouteRequest::ManeuverDetail maneuverDetail; +}; + +QT_END_NAMESPACE + +#endif diff --git a/src/QtLocationPlugin/qtlocation/src/location/maps/qgeoroutesegment.h b/src/QtLocationPlugin/qtlocation/src/location/maps/qgeoroutesegment.h new file mode 100644 index 0000000..bddc172 --- /dev/null +++ b/src/QtLocationPlugin/qtlocation/src/location/maps/qgeoroutesegment.h @@ -0,0 +1,89 @@ +/**************************************************************************** +** +** Copyright (C) 2015 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the QtLocation module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The Qt Company. For licensing terms +** and conditions see http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QGEOROUTESEGMENT_H +#define QGEOROUTESEGMENT_H + +#include +#include +#include + +QT_BEGIN_NAMESPACE + +class QGeoCoordinate; +class QGeoManeuver; +class QGeoRouteSegmentPrivate; + +class Q_LOCATION_EXPORT QGeoRouteSegment +{ + +public: + QGeoRouteSegment(); + QGeoRouteSegment(const QGeoRouteSegment &other); + ~QGeoRouteSegment(); + + QGeoRouteSegment &operator= (const QGeoRouteSegment &other); + + bool operator ==(const QGeoRouteSegment &other) const; + bool operator !=(const QGeoRouteSegment &other) const; + + bool isValid() const; + + void setNextRouteSegment(const QGeoRouteSegment &routeSegment); + QGeoRouteSegment nextRouteSegment() const; + + void setTravelTime(int secs); + int travelTime() const; + + void setDistance(qreal distance); + qreal distance() const; + + void setPath(const QList &path); + QList path() const; + + void setManeuver(const QGeoManeuver &maneuver); + QGeoManeuver maneuver() const; + +protected: + QGeoRouteSegment(QExplicitlySharedDataPointer &d_ptr); + +private: + QExplicitlySharedDataPointer d_ptr; +}; + +QT_END_NAMESPACE + +#endif diff --git a/src/QtLocationPlugin/qtlocation/src/location/maps/qgeoroutesegment_p.h b/src/QtLocationPlugin/qtlocation/src/location/maps/qgeoroutesegment_p.h new file mode 100644 index 0000000..1751266 --- /dev/null +++ b/src/QtLocationPlugin/qtlocation/src/location/maps/qgeoroutesegment_p.h @@ -0,0 +1,82 @@ +/**************************************************************************** +** +** Copyright (C) 2015 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the QtLocation module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The Qt Company. For licensing terms +** and conditions see http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QGEOROUTESEGMENT_P_H +#define QGEOROUTESEGMENT_P_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists purely as an +// implementation detail. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + +#include "qgeomaneuver.h" + +#include +#include +#include + +QT_BEGIN_NAMESPACE + +class QGeoCoordinate; + +class QGeoRouteSegmentPrivate : public QSharedData +{ +public: + QGeoRouteSegmentPrivate(); + QGeoRouteSegmentPrivate(const QGeoRouteSegmentPrivate &other); + ~QGeoRouteSegmentPrivate(); + + bool operator ==(const QGeoRouteSegmentPrivate &other) const; + + bool valid; + + int travelTime; + qreal distance; + QList path; + QGeoManeuver maneuver; + + QExplicitlySharedDataPointer nextSegment; +}; + +QT_END_NAMESPACE + +#endif diff --git a/src/QtLocationPlugin/qtlocation/src/location/maps/qgeoroutingmanager.h b/src/QtLocationPlugin/qtlocation/src/location/maps/qgeoroutingmanager.h new file mode 100644 index 0000000..0648a15 --- /dev/null +++ b/src/QtLocationPlugin/qtlocation/src/location/maps/qgeoroutingmanager.h @@ -0,0 +1,91 @@ +/**************************************************************************** +** +** Copyright (C) 2015 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the QtLocation module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The Qt Company. For licensing terms +** and conditions see http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QGEOROUTINGMANAGER_H +#define QGEOROUTINGMANAGER_H + +#include +#include +#include +#include + +QT_BEGIN_NAMESPACE + +class QGeoRoutingManagerEngine; +class QGeoRoutingManagerPrivate; + +class Q_LOCATION_EXPORT QGeoRoutingManager : public QObject +{ + Q_OBJECT + +public: + ~QGeoRoutingManager(); + + QString managerName() const; + int managerVersion() const; + + QGeoRouteReply *calculateRoute(const QGeoRouteRequest &request); + QGeoRouteReply *updateRoute(const QGeoRoute &route, const QGeoCoordinate &position); + + QGeoRouteRequest::TravelModes supportedTravelModes() const; + QGeoRouteRequest::FeatureTypes supportedFeatureTypes() const; + QGeoRouteRequest::FeatureWeights supportedFeatureWeights() const; + QGeoRouteRequest::RouteOptimizations supportedRouteOptimizations() const; + QGeoRouteRequest::SegmentDetails supportedSegmentDetails() const; + QGeoRouteRequest::ManeuverDetails supportedManeuverDetails() const; + + void setLocale(const QLocale &locale); + QLocale locale() const; + void setMeasurementSystem(QLocale::MeasurementSystem system); + QLocale::MeasurementSystem measurementSystem() const; + +Q_SIGNALS: + void finished(QGeoRouteReply *reply); + void error(QGeoRouteReply *reply, QGeoRouteReply::Error error, QString errorString = QString()); + +private: + QGeoRoutingManager(QGeoRoutingManagerEngine *engine, QObject *parent = 0); + + QGeoRoutingManagerPrivate *d_ptr; + Q_DISABLE_COPY(QGeoRoutingManager) + + friend class QGeoServiceProvider; + friend class QGeoServiceProviderPrivate; +}; + +QT_END_NAMESPACE + +#endif diff --git a/src/QtLocationPlugin/qtlocation/src/location/maps/qgeoroutingmanager_p.h b/src/QtLocationPlugin/qtlocation/src/location/maps/qgeoroutingmanager_p.h new file mode 100644 index 0000000..b3a9f2f --- /dev/null +++ b/src/QtLocationPlugin/qtlocation/src/location/maps/qgeoroutingmanager_p.h @@ -0,0 +1,69 @@ +/**************************************************************************** +** +** Copyright (C) 2015 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the QtLocation module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The Qt Company. For licensing terms +** and conditions see http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QGEOROUTINGMANAGER_P_H +#define QGEOROUTINGMANAGER_P_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists purely as an +// implementation detail. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + +QT_BEGIN_NAMESPACE + +class QGeoRoutingManagerEngine; + +class QGeoRoutingManagerPrivate +{ +public: + QGeoRoutingManagerPrivate(); + ~QGeoRoutingManagerPrivate(); + + QGeoRoutingManagerEngine *engine; + +private: + Q_DISABLE_COPY(QGeoRoutingManagerPrivate) +}; + +QT_END_NAMESPACE + +#endif diff --git a/src/QtLocationPlugin/qtlocation/src/location/maps/qgeoroutingmanagerengine.h b/src/QtLocationPlugin/qtlocation/src/location/maps/qgeoroutingmanagerengine.h new file mode 100644 index 0000000..9fa0272 --- /dev/null +++ b/src/QtLocationPlugin/qtlocation/src/location/maps/qgeoroutingmanagerengine.h @@ -0,0 +1,100 @@ +/**************************************************************************** +** +** Copyright (C) 2015 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the QtLocation module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The Qt Company. For licensing terms +** and conditions see http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QGEOROUTINGMANAGERENGINE_H +#define QGEOROUTINGMANAGERENGINE_H + +#include +#include +#include +#include +#include + +QT_BEGIN_NAMESPACE + +class QGeoRoutingManagerEnginePrivate; + +class Q_LOCATION_EXPORT QGeoRoutingManagerEngine : public QObject +{ + Q_OBJECT +public: + QGeoRoutingManagerEngine(const QVariantMap ¶meters, QObject *parent = 0); + virtual ~QGeoRoutingManagerEngine(); + + QString managerName() const; + int managerVersion() const; + + virtual QGeoRouteReply *calculateRoute(const QGeoRouteRequest &request) = 0; + virtual QGeoRouteReply *updateRoute(const QGeoRoute &route, const QGeoCoordinate &position); + + QGeoRouteRequest::TravelModes supportedTravelModes() const; + QGeoRouteRequest::FeatureTypes supportedFeatureTypes() const; + QGeoRouteRequest::FeatureWeights supportedFeatureWeights() const; + QGeoRouteRequest::RouteOptimizations supportedRouteOptimizations() const; + QGeoRouteRequest::SegmentDetails supportedSegmentDetails() const; + QGeoRouteRequest::ManeuverDetails supportedManeuverDetails() const; + + void setLocale(const QLocale &locale); + QLocale locale() const; + void setMeasurementSystem(QLocale::MeasurementSystem system); + QLocale::MeasurementSystem measurementSystem() const; + +Q_SIGNALS: + void finished(QGeoRouteReply *reply); + void error(QGeoRouteReply *reply, QGeoRouteReply::Error error, QString errorString = QString()); + +protected: + void setSupportedTravelModes(QGeoRouteRequest::TravelModes travelModes); + void setSupportedFeatureTypes(QGeoRouteRequest::FeatureTypes featureTypes); + void setSupportedFeatureWeights(QGeoRouteRequest::FeatureWeights featureWeights); + void setSupportedRouteOptimizations(QGeoRouteRequest::RouteOptimizations optimizations); + void setSupportedSegmentDetails(QGeoRouteRequest::SegmentDetails segmentDetails); + void setSupportedManeuverDetails(QGeoRouteRequest::ManeuverDetails maneuverDetails); + +private: + void setManagerName(const QString &managerName); + void setManagerVersion(int managerVersion); + + QGeoRoutingManagerEnginePrivate *d_ptr; + Q_DISABLE_COPY(QGeoRoutingManagerEngine) + + friend class QGeoServiceProvider; + friend class QGeoServiceProviderPrivate; +}; + +QT_END_NAMESPACE + +#endif diff --git a/src/QtLocationPlugin/qtlocation/src/location/maps/qgeoroutingmanagerengine_p.h b/src/QtLocationPlugin/qtlocation/src/location/maps/qgeoroutingmanagerengine_p.h new file mode 100644 index 0000000..7ba6c3d --- /dev/null +++ b/src/QtLocationPlugin/qtlocation/src/location/maps/qgeoroutingmanagerengine_p.h @@ -0,0 +1,83 @@ +/**************************************************************************** +** +** Copyright (C) 2015 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the QtLocation module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The Qt Company. For licensing terms +** and conditions see http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QGEOROUTINGMANAGERENGINE_P_H +#define QGEOROUTINGMANAGERENGINE_P_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists purely as an +// implementation detail. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + +#include "qgeorouterequest.h" + +#include +#include + +QT_BEGIN_NAMESPACE + +class QGeoRoutingManagerEnginePrivate +{ +public: + QGeoRoutingManagerEnginePrivate(); + ~QGeoRoutingManagerEnginePrivate(); + + QString managerName; + int managerVersion; + + QGeoRouteRequest::TravelModes supportedTravelModes; + QGeoRouteRequest::FeatureTypes supportedFeatureTypes; + QGeoRouteRequest::FeatureWeights supportedFeatureWeights; + QGeoRouteRequest::RouteOptimizations supportedRouteOptimizations; + QGeoRouteRequest::SegmentDetails supportedSegmentDetails; + QGeoRouteRequest::ManeuverDetails supportedManeuverDetails; + + QLocale locale; + QLocale::MeasurementSystem measurementSystem; + +private: + Q_DISABLE_COPY(QGeoRoutingManagerEnginePrivate) +}; + +QT_END_NAMESPACE + +#endif diff --git a/src/QtLocationPlugin/qtlocation/src/location/maps/qgeoserviceprovider.h b/src/QtLocationPlugin/qtlocation/src/location/maps/qgeoserviceprovider.h new file mode 100644 index 0000000..69a9838 --- /dev/null +++ b/src/QtLocationPlugin/qtlocation/src/location/maps/qgeoserviceprovider.h @@ -0,0 +1,163 @@ +/**************************************************************************** +** +** Copyright (C) 2015 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the QtLocation module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The Qt Company. For licensing terms +** and conditions see http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QGEOSERVICEPROVIDER_H +#define QGEOSERVICEPROVIDER_H + +#include +#include +#include +#include + +QT_BEGIN_NAMESPACE + +class QLocale; +class QStringList; +class QGeoCodingManager; +class QGeoMappingManager; +class QGeoRoutingManager; +class QPlaceManager; +class QGeoCodingManagerEngine; +class QGeoMappingManagerEngine; +class QGeoRoutingManagerEngine; +class QPlaceManagerEngine; +class QGeoServiceProviderPrivate; + +class Q_LOCATION_EXPORT QGeoServiceProvider : public QObject +{ + Q_OBJECT + Q_ENUM(Error) +public: + enum Error { + NoError, + NotSupportedError, + UnknownParameterError, + MissingRequiredParameterError, + ConnectionError + }; + + enum RoutingFeature { + NoRoutingFeatures = 0, + OnlineRoutingFeature = (1<<0), + OfflineRoutingFeature = (1<<1), + LocalizedRoutingFeature = (1<<2), + RouteUpdatesFeature = (1<<3), + AlternativeRoutesFeature = (1<<4), + ExcludeAreasRoutingFeature = (1<<5), + AnyRoutingFeatures = ~(0) + }; + + enum GeocodingFeature { + NoGeocodingFeatures = 0, + OnlineGeocodingFeature = (1<<0), + OfflineGeocodingFeature = (1<<1), + ReverseGeocodingFeature = (1<<2), + LocalizedGeocodingFeature = (1<<3), + AnyGeocodingFeatures = ~(0) + }; + + enum MappingFeature { + NoMappingFeatures = 0, + OnlineMappingFeature = (1<<0), + OfflineMappingFeature = (1<<1), + LocalizedMappingFeature = (1<<2), + AnyMappingFeatures = ~(0) + }; + + enum PlacesFeature { + NoPlacesFeatures = 0, + OnlinePlacesFeature = (1<<0), + OfflinePlacesFeature = (1<<1), + SavePlaceFeature = (1<<2), + RemovePlaceFeature = (1<<3), + SaveCategoryFeature = (1<<4), + RemoveCategoryFeature = (1<<5), + PlaceRecommendationsFeature = (1<<6), + SearchSuggestionsFeature = (1<<7), + LocalizedPlacesFeature = (1<<8), + NotificationsFeature = (1<<9), + PlaceMatchingFeature = (1<<10), + AnyPlacesFeatures = ~(0) + }; + + Q_DECLARE_FLAGS(RoutingFeatures, RoutingFeature) + Q_FLAGS(RoutingFeatures) + + Q_DECLARE_FLAGS(GeocodingFeatures, GeocodingFeature) + Q_FLAGS(GeocodingFeatures) + + Q_DECLARE_FLAGS(MappingFeatures, MappingFeature) + Q_FLAGS(MappingFeatures) + + Q_DECLARE_FLAGS(PlacesFeatures, PlacesFeature) + Q_FLAGS(PlacesFeatures) + + static QStringList availableServiceProviders(); + QGeoServiceProvider(const QString &providerName, + const QVariantMap ¶meters = QVariantMap(), + bool allowExperimental = false); + + ~QGeoServiceProvider(); + + RoutingFeatures routingFeatures() const; + GeocodingFeatures geocodingFeatures() const; + MappingFeatures mappingFeatures() const; + PlacesFeatures placesFeatures() const; + + QGeoCodingManager *geocodingManager() const; + QGeoMappingManager *mappingManager() const; + QGeoRoutingManager *routingManager() const; + QPlaceManager *placeManager() const; + + Error error() const; + QString errorString() const; + + void setParameters(const QVariantMap ¶meters); + void setLocale(const QLocale &locale); + void setAllowExperimental(bool allow); + +private: + QGeoServiceProviderPrivate *d_ptr; +}; + +Q_DECLARE_OPERATORS_FOR_FLAGS(QGeoServiceProvider::RoutingFeatures) +Q_DECLARE_OPERATORS_FOR_FLAGS(QGeoServiceProvider::GeocodingFeatures) +Q_DECLARE_OPERATORS_FOR_FLAGS(QGeoServiceProvider::MappingFeatures) +Q_DECLARE_OPERATORS_FOR_FLAGS(QGeoServiceProvider::PlacesFeatures) + +QT_END_NAMESPACE + +#endif diff --git a/src/QtLocationPlugin/qtlocation/src/location/maps/qgeoserviceprovider_p.h b/src/QtLocationPlugin/qtlocation/src/location/maps/qgeoserviceprovider_p.h new file mode 100644 index 0000000..6bfb9b2 --- /dev/null +++ b/src/QtLocationPlugin/qtlocation/src/location/maps/qgeoserviceprovider_p.h @@ -0,0 +1,121 @@ +/**************************************************************************** +** +** Copyright (C) 2015 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the QtLocation module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The Qt Company. For licensing terms +** and conditions see http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QGEOSERVICEPROVIDER_P_H +#define QGEOSERVICEPROVIDER_P_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists purely as an +// implementation detail. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + +#include "qgeoserviceprovider.h" + +#include +#include +#include +#include + +QT_BEGIN_NAMESPACE + +class QGeoCodingManager; +class QGeoRoutingManager; +class QGeoMappingManager; + +class QGeoServiceProviderFactory; + +class QGeoServiceProviderPrivate +{ +public: + QGeoServiceProviderPrivate(); + ~QGeoServiceProviderPrivate(); + + void loadMeta(); + void loadPlugin(const QVariantMap ¶meters); + void unload(); + void filterParameterMap(); + + /* helper templates for generating the feature and manager accessors */ + template + Manager *manager(QGeoServiceProvider::Error *error, + QString *errorString, Manager **manager); + template + Flags features(const char *enumName); + + QGeoServiceProviderFactory *factory; + QJsonObject metaData; + + QVariantMap parameterMap; + QVariantMap cleanedParameterMap; + + bool experimental; + + QGeoCodingManager *geocodingManager; + QGeoRoutingManager *routingManager; + QGeoMappingManager *mappingManager; + QPlaceManager *placeManager; + + QGeoServiceProvider::Error geocodeError; + QGeoServiceProvider::Error routingError; + QGeoServiceProvider::Error mappingError; + QGeoServiceProvider::Error placeError; + + QString geocodeErrorString; + QString routingErrorString; + QString mappingErrorString; + QString placeErrorString; + + QGeoServiceProvider::Error error; + QString errorString; + + QString providerName; + + QLocale locale; + bool localeSet; + + static QHash plugins(bool reload = false); + static void loadPluginMetadata(QHash &list); +}; + +QT_END_NAMESPACE + +#endif diff --git a/src/QtLocationPlugin/qtlocation/src/location/maps/qgeoserviceproviderfactory.h b/src/QtLocationPlugin/qtlocation/src/location/maps/qgeoserviceproviderfactory.h new file mode 100644 index 0000000..cc60cf7 --- /dev/null +++ b/src/QtLocationPlugin/qtlocation/src/location/maps/qgeoserviceproviderfactory.h @@ -0,0 +1,72 @@ +/**************************************************************************** +** +** Copyright (C) 2015 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the QtLocation module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The Qt Company. For licensing terms +** and conditions see http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QGEOSERVICEPROVIDERFACTORY_H +#define QGEOSERVICEPROVIDERFACTORY_H + +#include + +#include +#include +#include + +QT_BEGIN_NAMESPACE + +class Q_LOCATION_EXPORT QGeoServiceProviderFactory +{ +public: + virtual ~QGeoServiceProviderFactory() {} + + virtual QGeoCodingManagerEngine *createGeocodingManagerEngine(const QVariantMap ¶meters, + QGeoServiceProvider::Error *error, + QString *errorString) const; + virtual QGeoMappingManagerEngine *createMappingManagerEngine(const QVariantMap ¶meters, + QGeoServiceProvider::Error *error, + QString *errorString) const; + virtual QGeoRoutingManagerEngine *createRoutingManagerEngine(const QVariantMap ¶meters, + QGeoServiceProvider::Error *error, + QString *errorString) const; + virtual QPlaceManagerEngine *createPlaceManagerEngine(const QVariantMap ¶meters, + QGeoServiceProvider::Error *error, + QString *errorString) const; +}; + +Q_DECLARE_INTERFACE(QGeoServiceProviderFactory, + "org.qt-project.qt.geoservice.serviceproviderfactory/5.0") + +QT_END_NAMESPACE + +#endif diff --git a/src/QtLocationPlugin/qtlocation/src/location/maps/qgeotilecache_p.h b/src/QtLocationPlugin/qtlocation/src/location/maps/qgeotilecache_p.h new file mode 100644 index 0000000..9cf31db --- /dev/null +++ b/src/QtLocationPlugin/qtlocation/src/location/maps/qgeotilecache_p.h @@ -0,0 +1,168 @@ +/**************************************************************************** +** +** Copyright (C) 2015 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the QtLocation module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The Qt Company. For licensing terms +** and conditions see http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ +#ifndef QGEOTILECACHE_P_H +#define QGEOTILECACHE_P_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists purely as an +// implementation detail. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + +#include + +#include +#include +#include "qcache3q_p.h" +#include +#include +#include + +#include "qgeotilespec_p.h" +#include "qgeotiledmappingmanagerengine_p.h" + +#include + +QT_BEGIN_NAMESPACE + +class QGeoMappingManager; + +class QGeoTile; +class QGeoCachedTileMemory; +class QGeoTileCache; + +class QPixmap; +class QThread; + +/* This would be internal to qgeotilecache.cpp except that the eviction + * policy can't be defined without it being concrete here */ +class QGeoCachedTileDisk +{ +public: + ~QGeoCachedTileDisk(); + + QGeoTileSpec spec; + QString filename; + QString format; + QGeoTileCache *cache; +}; + +/* This is also used in the mapgeometry */ +class Q_LOCATION_EXPORT QGeoTileTexture +{ +public: + + QGeoTileTexture(); + ~QGeoTileTexture(); + + QGeoTileSpec spec; + QImage image; + bool textureBound; +}; + +/* Custom eviction policy for the disk cache, to avoid deleting all the files + * when the application closes */ +class QCache3QTileEvictionPolicy : public QCache3QDefaultEvictionPolicy +{ +protected: + void aboutToBeRemoved(const QGeoTileSpec &key, QSharedPointer obj); + void aboutToBeEvicted(const QGeoTileSpec &key, QSharedPointer obj); +}; + +class Q_LOCATION_EXPORT QGeoTileCache : public QObject +{ + Q_OBJECT +public: + QGeoTileCache(const QString &directory = QString(), QObject *parent = 0); + ~QGeoTileCache(); + + void setMaxDiskUsage(int diskUsage); + int maxDiskUsage() const; + int diskUsage() const; + + void setMaxMemoryUsage(int memoryUsage); + int maxMemoryUsage() const; + int memoryUsage() const; + + void setMinTextureUsage(int textureUsage); + void setExtraTextureUsage(int textureUsage); + int maxTextureUsage() const; + int minTextureUsage() const; + int textureUsage() const; + + QSharedPointer get(const QGeoTileSpec &spec); + QString directory() const; + + // can be called without a specific tileCache pointer + static void evictFromDiskCache(QGeoCachedTileDisk *td); + static void evictFromMemoryCache(QGeoCachedTileMemory *tm); + + void insert(const QGeoTileSpec &spec, + const QByteArray &bytes, + const QString &format, + QGeoTiledMappingManagerEngine::CacheAreas areas = QGeoTiledMappingManagerEngine::AllCaches); + void handleError(const QGeoTileSpec &spec, const QString &errorString); + +public Q_SLOTS: + void printStats(); + +private: + void loadTiles(); + + QSharedPointer addToDiskCache(const QGeoTileSpec &spec, const QString &filename); + QSharedPointer addToMemoryCache(const QGeoTileSpec &spec, const QByteArray &bytes, const QString &format); + QSharedPointer addToTextureCache(const QGeoTileSpec &spec, const QPixmap &pixmap); + + static QString tileSpecToFilename(const QGeoTileSpec &spec, const QString &format, const QString &directory); + static QGeoTileSpec filenameToTileSpec(const QString &filename); + + QString directory_; + QCache3Q diskCache_; + QCache3Q memoryCache_; + QCache3Q textureCache_; + + int minTextureUsage_; + int extraTextureUsage_; +}; + +QT_END_NAMESPACE + +#endif // QGEOTILECACHE_P_H diff --git a/src/QtLocationPlugin/qtlocation/src/location/maps/qgeotiledmap_p.h b/src/QtLocationPlugin/qtlocation/src/location/maps/qgeotiledmap_p.h new file mode 100644 index 0000000..2dbf175 --- /dev/null +++ b/src/QtLocationPlugin/qtlocation/src/location/maps/qgeotiledmap_p.h @@ -0,0 +1,105 @@ +/**************************************************************************** +** +** Copyright (C) 2015 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the QtLocation module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The Qt Company. For licensing terms +** and conditions see http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ +#ifndef QGEOTILEDMAP_P_H +#define QGEOTILEDMAP_P_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists purely as an +// implementation detail. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + +#include +#include + +#include "qgeomap_p.h" +#include "qgeocameradata_p.h" +#include "qgeomaptype_p.h" + +#include + +QT_BEGIN_NAMESPACE + +class QGeoTileSpec; +class QGeoTileTexture; +class QGeoTileCache; +class QGeoTiledMapPrivate; +class QGeoTiledMappingManagerEngine; +class QGeoTileRequestManager; + +class QQuickWindow; +class QSGNode; + +class QPointF; + +class Q_LOCATION_EXPORT QGeoTiledMap : public QGeoMap +{ + Q_OBJECT + Q_DECLARE_PRIVATE(QGeoTiledMap) + +public: + QGeoTiledMap(QGeoTiledMappingManagerEngine *engine, QObject *parent); + virtual ~QGeoTiledMap(); + + QGeoTileCache *tileCache(); + QGeoTileRequestManager *requestManager(); + void updateTile(const QGeoTileSpec &spec); + + QGeoCoordinate itemPositionToCoordinate(const QDoubleVector2D &pos, bool clipToViewport = true) const Q_DECL_OVERRIDE; + QDoubleVector2D coordinateToItemPosition(const QGeoCoordinate &coordinate, bool clipToViewport = true) const Q_DECL_OVERRIDE; + void prefetchData() Q_DECL_OVERRIDE; + + +protected: + QSGNode *updateSceneGraph(QSGNode *, QQuickWindow *window) Q_DECL_OVERRIDE; + +protected Q_SLOTS: + virtual void evaluateCopyrights(const QSet &visibleTiles); + void updateMapVersion(); + +private: + Q_DISABLE_COPY(QGeoTiledMap) + +}; + +QT_END_NAMESPACE + +#endif // QGEOMAP_P_H diff --git a/src/QtLocationPlugin/qtlocation/src/location/maps/qgeotiledmap_p_p.h b/src/QtLocationPlugin/qtlocation/src/location/maps/qgeotiledmap_p_p.h new file mode 100644 index 0000000..bd4b4c0 --- /dev/null +++ b/src/QtLocationPlugin/qtlocation/src/location/maps/qgeotiledmap_p_p.h @@ -0,0 +1,102 @@ +/**************************************************************************** +** +** Copyright (C) 2015 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the QtLocation module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The Qt Company. For licensing terms +** and conditions see http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ +#ifndef QGEOTILEDMAP_P_P_H +#define QGEOTILEDMAP_P_P_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists purely as an +// implementation detail. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + +#include "qgeomap_p_p.h" +#include "qgeocameradata_p.h" +#include "qgeomaptype_p.h" +#include +#include +#include + +QT_BEGIN_NAMESPACE + +class QGeoCameraTiles; +class QGeoMapScene; +class QGeoTileCache; +class QGeoTiledMappingManagerEngine; +class QGeoTiledMap; +class QGeoTileRequestManager; +class QGeoTileSpec; +class QSGNode; +class QQuickWindow; + +class QGeoTiledMapPrivate : public QGeoMapPrivate +{ + Q_DECLARE_PUBLIC(QGeoTiledMap) +public: + QGeoTiledMapPrivate(QGeoTiledMappingManagerEngine *engine); + ~QGeoTiledMapPrivate(); + + QSGNode *updateSceneGraph(QSGNode *node, QQuickWindow *window); + + void changeMapVersion(int mapVersion); + void resized(int width, int height); + + QGeoCoordinate itemPositionToCoordinate(const QDoubleVector2D &pos) const; + QDoubleVector2D coordinateToItemPosition(const QGeoCoordinate &coordinate) const; + + void updateTile(const QGeoTileSpec &spec); + void prefetchTiles(); + +protected: + void mapResized(int width, int height) Q_DECL_OVERRIDE; + void changeCameraData(const QGeoCameraData &oldCameraData) Q_DECL_OVERRIDE; + void changeActiveMapType(const QGeoMapType mapType) Q_DECL_OVERRIDE; + +private: + QGeoTileCache *m_cache; + QGeoCameraTiles *m_cameraTiles; + QGeoMapScene *m_mapScene; + QGeoTileRequestManager *m_tileRequests; + Q_DISABLE_COPY(QGeoTiledMapPrivate) +}; + +QT_END_NAMESPACE + +#endif // QGEOTILEDMAP_P_P_H diff --git a/src/QtLocationPlugin/qtlocation/src/location/maps/qgeotiledmappingmanagerengine_p.h b/src/QtLocationPlugin/qtlocation/src/location/maps/qgeotiledmappingmanagerengine_p.h new file mode 100644 index 0000000..6cc4cae --- /dev/null +++ b/src/QtLocationPlugin/qtlocation/src/location/maps/qgeotiledmappingmanagerengine_p.h @@ -0,0 +1,119 @@ +/**************************************************************************** +** +** Copyright (C) 2015 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the QtLocation module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The Qt Company. For licensing terms +** and conditions see http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QGEOTILEDMAPPINGMANAGERENGINE_H +#define QGEOTILEDMAPPINGMANAGERENGINE_H + +#include +#include +#include +#include +#include "qgeomaptype_p.h" +#include "qgeomappingmanagerengine_p.h" + +QT_BEGIN_NAMESPACE + +class QGeoTiledMappingManagerEnginePrivate; +class QGeoMapRequestOptions; +class QGeoTileFetcher; +class QGeoTileTexture; + +class QGeoTileSpec; +class QGeoTiledMap; +class QGeoTileCache; + +class Q_LOCATION_EXPORT QGeoTiledMappingManagerEngine : public QGeoMappingManagerEngine +{ + Q_OBJECT + +public: + enum CacheArea { + DiskCache = 0x01, + MemoryCache = 0x02, + AllCaches = 0xFF + }; + Q_DECLARE_FLAGS(CacheAreas, CacheArea) + + explicit QGeoTiledMappingManagerEngine(QObject *parent = 0); + virtual ~QGeoTiledMappingManagerEngine(); + + QGeoTileFetcher *tileFetcher(); + + QGeoMap *createMap() Q_DECL_OVERRIDE; + void registerMap(QGeoMap *map) Q_DECL_OVERRIDE; + void deregisterMap(QGeoMap *map) Q_DECL_OVERRIDE; + + QSize tileSize() const; + + void updateTileRequests(QGeoTiledMap *map, + const QSet &tilesAdded, + const QSet &tilesRemoved); + + QGeoTileCache *tileCache(); // TODO: check this is still used + QSharedPointer getTileTexture(const QGeoTileSpec &spec); + + + QGeoTiledMappingManagerEngine::CacheAreas cacheHint() const; + +private Q_SLOTS: + void engineTileFinished(const QGeoTileSpec &spec, const QByteArray &bytes, const QString &format); + void engineTileError(const QGeoTileSpec &spec, const QString &errorString); + +Q_SIGNALS: + void tileError(const QGeoTileSpec &spec, const QString &errorString); + void mapVersionChanged(); + +protected: + void setTileFetcher(QGeoTileFetcher *fetcher); + void setTileSize(const QSize &tileSize); + void setCacheHint(QGeoTiledMappingManagerEngine::CacheAreas cacheHint); + + QGeoTileCache *createTileCacheWithDir(const QString &cacheDirectory); + +private: + QGeoTiledMappingManagerEnginePrivate *d_ptr; + + Q_DECLARE_PRIVATE(QGeoTiledMappingManagerEngine) + Q_DISABLE_COPY(QGeoTiledMappingManagerEngine) + + friend class QGeoTileFetcher; +}; + +Q_DECLARE_OPERATORS_FOR_FLAGS(QGeoTiledMappingManagerEngine::CacheAreas) + +QT_END_NAMESPACE + +#endif diff --git a/src/QtLocationPlugin/qtlocation/src/location/maps/qgeotiledmappingmanagerengine_p_p.h b/src/QtLocationPlugin/qtlocation/src/location/maps/qgeotiledmappingmanagerengine_p_p.h new file mode 100644 index 0000000..77e84e8 --- /dev/null +++ b/src/QtLocationPlugin/qtlocation/src/location/maps/qgeotiledmappingmanagerengine_p_p.h @@ -0,0 +1,84 @@ +/**************************************************************************** +** +** Copyright (C) 2015 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the QtLocation module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The Qt Company. For licensing terms +** and conditions see http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + + +#ifndef QGEOTILEDMAPPINGMANAGER_P_H +#define QGEOTILEDMAPPINGMANAGER_P_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists purely as an +// implementation detail. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + +#include +#include +#include +#include "qgeotiledmappingmanagerengine_p.h" + +QT_BEGIN_NAMESPACE + +class QGeoTiledMap; +class QGeoTileCache; +class QGeoTileSpec; +class QGeoTileFetcher; + +class QGeoTiledMappingManagerEnginePrivate +{ +public: + QGeoTiledMappingManagerEnginePrivate(); + ~QGeoTiledMappingManagerEnginePrivate(); + + QSize tileSize_; + QSet tileMaps_; + QHash > mapHash_; + QHash > tileHash_; + QGeoTiledMappingManagerEngine::CacheAreas cacheHint_; + QGeoTileCache *tileCache_; + QGeoTileFetcher *fetcher_; + +private: + Q_DISABLE_COPY(QGeoTiledMappingManagerEnginePrivate) +}; + +QT_END_NAMESPACE + +#endif diff --git a/src/QtLocationPlugin/qtlocation/src/location/maps/qgeotiledmapreply_p.h b/src/QtLocationPlugin/qtlocation/src/location/maps/qgeotiledmapreply_p.h new file mode 100644 index 0000000..91852cc --- /dev/null +++ b/src/QtLocationPlugin/qtlocation/src/location/maps/qgeotiledmapreply_p.h @@ -0,0 +1,109 @@ +/**************************************************************************** +** +** Copyright (C) 2015 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the QtLocation module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The Qt Company. For licensing terms +** and conditions see http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QGEOTILEDMAPREPLY_H +#define QGEOTILEDMAPREPLY_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists purely as an +// implementation detail. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + +#include + +#include + +QT_BEGIN_NAMESPACE + +class QGeoTileSpec; +class QGeoTiledMapReplyPrivate; + +class Q_LOCATION_EXPORT QGeoTiledMapReply : public QObject +{ + Q_OBJECT + +public: + enum Error { + NoError, + CommunicationError, + ParseError, + UnknownError + }; + + QGeoTiledMapReply(const QGeoTileSpec &spec, QObject *parent = 0); + QGeoTiledMapReply(Error error, const QString &errorString, QObject *parent = 0); + virtual ~QGeoTiledMapReply(); + + bool isFinished() const; + Error error() const; + QString errorString() const; + + bool isCached() const; + + QGeoTileSpec tileSpec() const; + + QByteArray mapImageData() const; + QString mapImageFormat() const; + + virtual void abort(); + +Q_SIGNALS: + void finished(); + void error(QGeoTiledMapReply::Error error, const QString &errorString = QString()); + +protected: + void setError(Error error, const QString &errorString); + void setFinished(bool finished); + + void setCached(bool cached); + + void setMapImageData(const QByteArray &data); + void setMapImageFormat(const QString &format); + +private: + QGeoTiledMapReplyPrivate *d_ptr; + Q_DISABLE_COPY(QGeoTiledMapReply) +}; + +QT_END_NAMESPACE + +#endif diff --git a/src/QtLocationPlugin/qtlocation/src/location/maps/qgeotiledmapreply_p_p.h b/src/QtLocationPlugin/qtlocation/src/location/maps/qgeotiledmapreply_p_p.h new file mode 100644 index 0000000..5dcf5a7 --- /dev/null +++ b/src/QtLocationPlugin/qtlocation/src/location/maps/qgeotiledmapreply_p_p.h @@ -0,0 +1,75 @@ +/**************************************************************************** +** +** Copyright (C) 2015 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the QtLocation module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The Qt Company. For licensing terms +** and conditions see http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QGEOTILEDMAPREPLY_P_H +#define QGEOTILEDMAPREPLY_P_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists purely as an +// implementation detail. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + +#include "qgeotiledmapreply_p.h" +#include "qgeotilespec_p.h" + +QT_BEGIN_NAMESPACE + +class QGeoTiledMapReplyPrivate +{ +public: + QGeoTiledMapReplyPrivate(const QGeoTileSpec &spec); + QGeoTiledMapReplyPrivate(QGeoTiledMapReply::Error error, const QString &errorString); + ~QGeoTiledMapReplyPrivate(); + + QGeoTiledMapReply::Error error; + QString errorString; + bool isFinished; + bool isCached; + + QGeoTileSpec spec; + QByteArray mapImageData; + QString mapImageFormat; +}; + +QT_END_NAMESPACE + +#endif diff --git a/src/QtLocationPlugin/qtlocation/src/location/maps/qgeotilefetcher_p.h b/src/QtLocationPlugin/qtlocation/src/location/maps/qgeotilefetcher_p.h new file mode 100644 index 0000000..cabab05 --- /dev/null +++ b/src/QtLocationPlugin/qtlocation/src/location/maps/qgeotilefetcher_p.h @@ -0,0 +1,103 @@ +/**************************************************************************** +** +** Copyright (C) 2015 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the QtLocation module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The Qt Company. For licensing terms +** and conditions see http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QGEOTILEFETCHER_H +#define QGEOTILEFETCHER_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists purely as an +// implementation detail. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + +#include +#include +#include "qgeomaptype_p.h" +#include "qgeotiledmappingmanagerengine_p.h" + +QT_BEGIN_NAMESPACE + +class QGeoMapRequestOptions; + +class QGeoTileFetcherPrivate; +class QGeoTiledMappingManagerEngine; +class QGeoTiledMapReply; +class QGeoTileSpec; + +class Q_LOCATION_EXPORT QGeoTileFetcher : public QObject +{ + Q_OBJECT + +public: + QGeoTileFetcher(QObject *parent = 0); + virtual ~QGeoTileFetcher(); + +public Q_SLOTS: + void updateTileRequests(const QSet &tilesAdded, const QSet &tilesRemoved); + +private Q_SLOTS: + void cancelTileRequests(const QSet &tiles); + void requestNextTile(); + void finished(); + +Q_SIGNALS: + void tileFinished(const QGeoTileSpec &spec, const QByteArray &bytes, const QString &format); + void tileError(const QGeoTileSpec &spec, const QString &errorString); + +protected: + void timerEvent(QTimerEvent *event); + QGeoTiledMappingManagerEngine::CacheAreas cacheHint() const; + +private: + QGeoTileFetcherPrivate *d_ptr; + + virtual QGeoTiledMapReply *getTileImage(const QGeoTileSpec &spec) = 0; + void handleReply(QGeoTiledMapReply *reply, const QGeoTileSpec &spec); + + Q_DECLARE_PRIVATE(QGeoTileFetcher) + Q_DISABLE_COPY(QGeoTileFetcher) + + friend class QGeoTiledMappingManagerEngine; +}; + +QT_END_NAMESPACE + +#endif diff --git a/src/QtLocationPlugin/qtlocation/src/location/maps/qgeotilefetcher_p_p.h b/src/QtLocationPlugin/qtlocation/src/location/maps/qgeotilefetcher_p_p.h new file mode 100644 index 0000000..ce2a548 --- /dev/null +++ b/src/QtLocationPlugin/qtlocation/src/location/maps/qgeotilefetcher_p_p.h @@ -0,0 +1,86 @@ +/**************************************************************************** +** +** Copyright (C) 2015 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the QtLocation module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The Qt Company. For licensing terms +** and conditions see http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QGEOTILEFETCHER_P_H +#define QGEOTILEFETCHER_P_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists purely as an +// implementation detail. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + +#include +#include +#include +#include +#include +#include +#include +#include +#include "qgeomaptype_p.h" + +QT_BEGIN_NAMESPACE + +class QGeoTileSpec; +class QGeoTiledMapReply; +class QGeoTileCache; +class QGeoTiledMappingManagerEngine; + +class QGeoTileFetcherPrivate +{ +public: + QGeoTileFetcherPrivate(); + virtual ~QGeoTileFetcherPrivate(); + + bool enabled_; + QBasicTimer timer_; + QMutex queueMutex_; + QList queue_; + QHash invmap_; + +private: + Q_DISABLE_COPY(QGeoTileFetcherPrivate) +}; + +QT_END_NAMESPACE + +#endif diff --git a/src/QtLocationPlugin/qtlocation/src/location/maps/qgeotilerequestmanager_p.h b/src/QtLocationPlugin/qtlocation/src/location/maps/qgeotilerequestmanager_p.h new file mode 100644 index 0000000..8ae7360 --- /dev/null +++ b/src/QtLocationPlugin/qtlocation/src/location/maps/qgeotilerequestmanager_p.h @@ -0,0 +1,81 @@ +/**************************************************************************** +** +** Copyright (C) 2015 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the QtLocation module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The Qt Company. For licensing terms +** and conditions see http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ +#ifndef QGEOTILEREQUESTMANAGER_P_H +#define QGEOTILEREQUESTMANAGER_P_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists purely as an +// implementation detail. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + +#include + +QT_BEGIN_NAMESPACE + +class QGeoTiledMap; +class QGeoTiledMappingManagerEngine; +class QGeoTileSpec; +class QGeoTileCache; +class QGeoTileTexture; + +class QGeoTileRequestManagerPrivate; + +class QGeoTileRequestManager +{ +public: + explicit QGeoTileRequestManager(QGeoTiledMap *map, QGeoTiledMappingManagerEngine *engine); + ~QGeoTileRequestManager(); + + QList > requestTiles(const QSet &tiles); + + void tileError(const QGeoTileSpec &tile, const QString &errorString); + void tileFetched(const QGeoTileSpec &spec); + QSharedPointer tileTexture(const QGeoTileSpec &spec); + +private: + QScopedPointer d_ptr; + Q_DISABLE_COPY(QGeoTileRequestManager) +}; + +QT_END_NAMESPACE + +#endif // QGEOTILEREQUESTMANAGER_P_H diff --git a/src/QtLocationPlugin/qtlocation/src/location/maps/qgeotilespec_p.h b/src/QtLocationPlugin/qtlocation/src/location/maps/qgeotilespec_p.h new file mode 100644 index 0000000..b277824 --- /dev/null +++ b/src/QtLocationPlugin/qtlocation/src/location/maps/qgeotilespec_p.h @@ -0,0 +1,103 @@ +/**************************************************************************** +** +** Copyright (C) 2015 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the QtLocation module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The Qt Company. For licensing terms +** and conditions see http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QGEOTILESPEC_H +#define QGEOTILESPEC_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists purely as an +// implementation detail. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + +#include +#include +#include + +#include + +QT_BEGIN_NAMESPACE + +class QGeoTileSpecPrivate; + +class Q_LOCATION_EXPORT QGeoTileSpec +{ +public: + QGeoTileSpec(); + QGeoTileSpec(const QGeoTileSpec &other); + QGeoTileSpec(const QString &plugin, int mapId, int zoom, int x, int y, int version = -1); + ~QGeoTileSpec(); + + QGeoTileSpec &operator = (const QGeoTileSpec &other); + + QString plugin() const; + + void setZoom(int zoom); + int zoom() const; + + void setX(int x); + int x() const; + + void setY(int y); + int y() const; + + void setMapId(int mapId); + int mapId() const; + + void setVersion(int version); + int version() const; + + bool operator == (const QGeoTileSpec &rhs) const; + bool operator < (const QGeoTileSpec &rhs) const; + +private: + QSharedDataPointer d; +}; + +Q_LOCATION_EXPORT unsigned int qHash(const QGeoTileSpec &spec); + +Q_LOCATION_EXPORT QDebug operator<<(QDebug, const QGeoTileSpec &); + +QT_END_NAMESPACE + +Q_DECLARE_METATYPE(QGeoTileSpec) + +#endif // QGEOTILESPEC_H diff --git a/src/QtLocationPlugin/qtlocation/src/location/maps/qgeotilespec_p_p.h b/src/QtLocationPlugin/qtlocation/src/location/maps/qgeotilespec_p_p.h new file mode 100644 index 0000000..1e7442f --- /dev/null +++ b/src/QtLocationPlugin/qtlocation/src/location/maps/qgeotilespec_p_p.h @@ -0,0 +1,78 @@ +/**************************************************************************** +** +** Copyright (C) 2015 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the QtLocation module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The Qt Company. For licensing terms +** and conditions see http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ +#ifndef QGEOTILESPEC_P_H +#define QGEOTILESPEC_P_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists purely as an +// implementation detail. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + +#include +#include + +QT_BEGIN_NAMESPACE + +class QGeoTileSpecPrivate : public QSharedData +{ +public: + QGeoTileSpecPrivate(); + QGeoTileSpecPrivate(const QGeoTileSpecPrivate &other); + QGeoTileSpecPrivate(const QString &plugin, int mapId, int zoom, int x, int y, int version); + ~QGeoTileSpecPrivate(); + + QGeoTileSpecPrivate &operator = (const QGeoTileSpecPrivate &other); + + bool operator == (const QGeoTileSpecPrivate &rhs) const; + bool operator < (const QGeoTileSpecPrivate &rhs) const; + + QString plugin_; + int mapId_; + int zoom_; + int x_; + int y_; + int version_; +}; + +QT_END_NAMESPACE + +#endif // QGEOTILESPEC_P_H diff --git a/src/QtLocationPlugin/qtlocation/src/location/qlocation.h b/src/QtLocationPlugin/qtlocation/src/location/qlocation.h new file mode 100644 index 0000000..d30a3a3 --- /dev/null +++ b/src/QtLocationPlugin/qtlocation/src/location/qlocation.h @@ -0,0 +1,65 @@ +/**************************************************************************** +** +** Copyright (C) 2015 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the QtLocation module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The Qt Company. For licensing terms +** and conditions see http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QLOCATION_H +#define QLOCATION_H + +#if 0 +#pragma qt_class(QLocation) +#endif + +#include + +QT_BEGIN_NAMESPACE + +namespace QLocation { + +enum Visibility { + UnspecifiedVisibility = 0x00, + DeviceVisibility = 0x01, + PrivateVisibility = 0x02, + PublicVisibility = 0x04 +}; + +Q_DECLARE_FLAGS(VisibilityScope, Visibility) + +} + +Q_DECLARE_OPERATORS_FOR_FLAGS(QLocation::VisibilityScope) + +QT_END_NAMESPACE + +#endif // QLOCATION_H diff --git a/src/QtLocationPlugin/qtlocation/src/location/qlocationglobal.h b/src/QtLocationPlugin/qtlocation/src/location/qlocationglobal.h new file mode 100644 index 0000000..7992c09 --- /dev/null +++ b/src/QtLocationPlugin/qtlocation/src/location/qlocationglobal.h @@ -0,0 +1,56 @@ +/**************************************************************************** +** +** Copyright (C) 2015 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the QtLocation module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The Qt Company. For licensing terms +** and conditions see http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ +#ifndef QLOCATIONGLOBAL_H +#define QLOCATIONGLOBAL_H + +#include + +QT_BEGIN_NAMESPACE + +#ifndef QT_STATIC +# if defined(QT_BUILD_LOCATION_LIB) +# define Q_LOCATION_EXPORT Q_DECL_EXPORT +# else +# define Q_LOCATION_EXPORT Q_DECL_IMPORT +# endif +#else +# define Q_LOCATION_EXPORT +#endif + +QT_END_NAMESPACE + +#endif // QLOCATIONGLOBAL_H + diff --git a/src/QtLocationPlugin/qtlocation/src/positioning/qdeclarativegeoaddress_p.h b/src/QtLocationPlugin/qtlocation/src/positioning/qdeclarativegeoaddress_p.h new file mode 100644 index 0000000..7f51d55 --- /dev/null +++ b/src/QtLocationPlugin/qtlocation/src/positioning/qdeclarativegeoaddress_p.h @@ -0,0 +1,103 @@ +/**************************************************************************** +** +** Copyright (C) 2015 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the QtPositioning module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL21$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The Qt Company. For licensing terms +** and conditions see http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 or version 3 as published by the Free +** Software Foundation and appearing in the file LICENSE.LGPLv21 and +** LICENSE.LGPLv3 included in the packaging of this file. Please review the +** following information to ensure the GNU Lesser General Public License +** requirements will be met: https://www.gnu.org/licenses/lgpl.html and +** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** As a special exception, The Qt Company gives you certain additional +** rights. These rights are described in The Qt Company LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** $QT_END_LICENSE$ +** +***************************************************************************/ + +#ifndef QDECLARATIVEGEOADDRESS_P_H +#define QDECLARATIVEGEOADDRESS_P_H + +#include +#include + +QT_BEGIN_NAMESPACE + +class Q_POSITIONING_EXPORT QDeclarativeGeoAddress : public QObject +{ + Q_OBJECT + + Q_PROPERTY(QGeoAddress address READ address WRITE setAddress) + Q_PROPERTY(QString text READ text WRITE setText NOTIFY textChanged) + Q_PROPERTY(QString country READ country WRITE setCountry NOTIFY countryChanged) + Q_PROPERTY(QString countryCode READ countryCode WRITE setCountryCode NOTIFY countryCodeChanged) + Q_PROPERTY(QString state READ state WRITE setState NOTIFY stateChanged) + Q_PROPERTY(QString county READ county WRITE setCounty NOTIFY countyChanged) + Q_PROPERTY(QString city READ city WRITE setCity NOTIFY cityChanged) + Q_PROPERTY(QString district READ district WRITE setDistrict NOTIFY districtChanged) + Q_PROPERTY(QString street READ street WRITE setStreet NOTIFY streetChanged) + Q_PROPERTY(QString postalCode READ postalCode WRITE setPostalCode NOTIFY postalCodeChanged) + Q_PROPERTY(bool isTextGenerated READ isTextGenerated NOTIFY isTextGeneratedChanged) + +public: + explicit QDeclarativeGeoAddress(QObject *parent = 0); + QDeclarativeGeoAddress(const QGeoAddress &address, QObject *parent = 0); + QGeoAddress address() const; + void setAddress(const QGeoAddress &address); + + QString text() const; + void setText(const QString &address); + + QString country() const; + void setCountry(const QString &country); + QString countryCode() const; + void setCountryCode(const QString &countryCode); + QString state() const; + void setState(const QString &state); + QString county() const; + void setCounty(const QString &county); + QString city() const; + void setCity(const QString &city); + QString district() const; + void setDistrict(const QString &district); + QString street() const; + void setStreet(const QString &street); + QString postalCode() const; + void setPostalCode(const QString &postalCode); + bool isTextGenerated() const; + +Q_SIGNALS: + void textChanged(); + void countryChanged(); + void countryCodeChanged(); + void stateChanged(); + void countyChanged(); + void cityChanged(); + void districtChanged(); + void streetChanged(); + void postalCodeChanged(); + void isTextGeneratedChanged(); + +private: + QGeoAddress m_address; +}; + +QT_END_NAMESPACE + +#endif // QDECLARATIVEGEOADDRESS_P_H diff --git a/src/QtLocationPlugin/qtlocation/src/positioning/qdeclarativegeolocation_p.h b/src/QtLocationPlugin/qtlocation/src/positioning/qdeclarativegeolocation_p.h new file mode 100644 index 0000000..832dac6 --- /dev/null +++ b/src/QtLocationPlugin/qtlocation/src/positioning/qdeclarativegeolocation_p.h @@ -0,0 +1,82 @@ +/**************************************************************************** +** +** Copyright (C) 2015 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the QtPositioning module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL21$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The Qt Company. For licensing terms +** and conditions see http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 or version 3 as published by the Free +** Software Foundation and appearing in the file LICENSE.LGPLv21 and +** LICENSE.LGPLv3 included in the packaging of this file. Please review the +** following information to ensure the GNU Lesser General Public License +** requirements will be met: https://www.gnu.org/licenses/lgpl.html and +** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** As a special exception, The Qt Company gives you certain additional +** rights. These rights are described in The Qt Company LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QDECLARATIVEGEOLOCATION_P_H +#define QDECLARATIVEGEOLOCATION_P_H + +#include +#include +#include +#include + +QT_BEGIN_NAMESPACE + +class Q_POSITIONING_EXPORT QDeclarativeGeoLocation : public QObject +{ + Q_OBJECT + + Q_PROPERTY(QGeoLocation location READ location WRITE setLocation) + Q_PROPERTY(QDeclarativeGeoAddress *address READ address WRITE setAddress NOTIFY addressChanged) + Q_PROPERTY(QGeoCoordinate coordinate READ coordinate WRITE setCoordinate NOTIFY coordinateChanged) + Q_PROPERTY(QGeoRectangle boundingBox READ boundingBox WRITE setBoundingBox NOTIFY boundingBoxChanged) + +public: + explicit QDeclarativeGeoLocation(QObject *parent = 0); + explicit QDeclarativeGeoLocation(const QGeoLocation &src, QObject *parent = 0); + ~QDeclarativeGeoLocation(); + + QGeoLocation location() const; + void setLocation(const QGeoLocation &src); + + QDeclarativeGeoAddress *address() const; + void setAddress(QDeclarativeGeoAddress *address); + QGeoCoordinate coordinate() const; + void setCoordinate(const QGeoCoordinate coordinate); + + QGeoRectangle boundingBox() const; + void setBoundingBox(const QGeoRectangle &boundingBox); + +Q_SIGNALS: + void addressChanged(); + void coordinateChanged(); + void boundingBoxChanged(); + +private: + QDeclarativeGeoAddress *m_address; + QGeoRectangle m_boundingBox; + QGeoCoordinate m_coordinate; +}; + +QT_END_NAMESPACE + +#endif // QDECLARATIVELOCATION_P_H diff --git a/src/QtLocationPlugin/qtlocation/src/positioning/qdoublevector2d_p.h b/src/QtLocationPlugin/qtlocation/src/positioning/qdoublevector2d_p.h new file mode 100644 index 0000000..f25190b --- /dev/null +++ b/src/QtLocationPlugin/qtlocation/src/positioning/qdoublevector2d_p.h @@ -0,0 +1,242 @@ +/**************************************************************************** +** +** Copyright (C) 2015 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the QtPositioning module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL21$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The Qt Company. For licensing terms +** and conditions see http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 or version 3 as published by the Free +** Software Foundation and appearing in the file LICENSE.LGPLv21 and +** LICENSE.LGPLv3 included in the packaging of this file. Please review the +** following information to ensure the GNU Lesser General Public License +** requirements will be met: https://www.gnu.org/licenses/lgpl.html and +** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** As a special exception, The Qt Company gives you certain additional +** rights. These rights are described in The Qt Company LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QDOUBLEVECTOR2D_P_H +#define QDOUBLEVECTOR2D_P_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists purely as an +// implementation detail. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + +#ifdef QT_BUILD_LOCATION_LIB +#include +#endif + +#include "qpositioningglobal.h" +#include +#include + +QT_BEGIN_NAMESPACE + +class QDoubleVector3D; + +class Q_POSITIONING_EXPORT QDoubleVector2D +{ +public: + Q_DECL_CONSTEXPR inline QDoubleVector2D(); + Q_DECL_CONSTEXPR inline QDoubleVector2D(double xpos, double ypos); + Q_DECL_CONSTEXPR explicit inline QDoubleVector2D(const QPointF &p); + explicit QDoubleVector2D(const QDoubleVector3D &vector); + + Q_DECL_CONSTEXPR inline double manhattanLength() const; + inline bool isNull() const; + + Q_DECL_CONSTEXPR inline double x() const; + Q_DECL_CONSTEXPR inline double y() const; + + inline void setX(double x); + inline void setY(double y); + + double length() const; + Q_DECL_CONSTEXPR inline double lengthSquared() const; + + QDoubleVector2D normalized() const; + void normalize(); + + inline QDoubleVector2D &operator+=(const QDoubleVector2D &vector); + inline QDoubleVector2D &operator-=(const QDoubleVector2D &vector); + inline QDoubleVector2D &operator*=(double factor); + inline QDoubleVector2D &operator*=(const QDoubleVector2D &vector); + inline QDoubleVector2D &operator/=(double divisor); + + Q_DECL_CONSTEXPR static inline double dotProduct(const QDoubleVector2D &v1, const QDoubleVector2D &v2) + { return v1.xp * v2.xp + v1.yp * v2.yp; } + + + friend Q_DECL_CONSTEXPR inline bool operator==(const QDoubleVector2D &v1, const QDoubleVector2D &v2); + friend Q_DECL_CONSTEXPR inline bool operator!=(const QDoubleVector2D &v1, const QDoubleVector2D &v2); + friend Q_DECL_CONSTEXPR inline const QDoubleVector2D operator+(const QDoubleVector2D &v1, const QDoubleVector2D &v2); + friend Q_DECL_CONSTEXPR inline const QDoubleVector2D operator-(const QDoubleVector2D &v1, const QDoubleVector2D &v2); + friend Q_DECL_CONSTEXPR inline const QDoubleVector2D operator*(double factor, const QDoubleVector2D &vector); + friend Q_DECL_CONSTEXPR inline const QDoubleVector2D operator*(const QDoubleVector2D &vector, double factor); + friend Q_DECL_CONSTEXPR inline const QDoubleVector2D operator*(const QDoubleVector2D &v1, const QDoubleVector2D &v2); + friend Q_DECL_CONSTEXPR inline const QDoubleVector2D operator-(const QDoubleVector2D &vector); + friend Q_DECL_CONSTEXPR inline const QDoubleVector2D operator/(const QDoubleVector2D &vector, double divisor); + + friend Q_DECL_CONSTEXPR inline bool qFuzzyCompare(const QDoubleVector2D &v1, const QDoubleVector2D &v2); + + QDoubleVector3D toVector3D() const; + Q_DECL_CONSTEXPR inline QPointF toPointF() const; + +private: + double xp, yp; + + friend class QDoubleVector3D; +}; + +Q_DECLARE_TYPEINFO(QDoubleVector2D, Q_MOVABLE_TYPE); + +Q_DECL_CONSTEXPR inline QDoubleVector2D::QDoubleVector2D() : xp(0.0), yp(0.0) {} + +Q_DECL_CONSTEXPR inline QDoubleVector2D::QDoubleVector2D(double xpos, double ypos) : xp(xpos), yp(ypos) {} + +Q_DECL_CONSTEXPR inline QDoubleVector2D::QDoubleVector2D(const QPointF &p) : xp(p.x()), yp(p.y()) { } + +Q_DECL_CONSTEXPR inline double QDoubleVector2D::manhattanLength() const +{ + return qAbs(x())+qAbs(y()); +} + +inline bool QDoubleVector2D::isNull() const +{ + return qIsNull(xp) && qIsNull(yp); +} + +Q_DECL_CONSTEXPR inline double QDoubleVector2D::x() const { return xp; } +Q_DECL_CONSTEXPR inline double QDoubleVector2D::y() const { return yp; } + +inline void QDoubleVector2D::setX(double aX) { xp = aX; } +inline void QDoubleVector2D::setY(double aY) { yp = aY; } + +Q_DECL_CONSTEXPR inline double QDoubleVector2D::lengthSquared() const +{ return xp * xp + yp * yp; } + +inline QDoubleVector2D &QDoubleVector2D::operator+=(const QDoubleVector2D &vector) +{ + xp += vector.xp; + yp += vector.yp; + return *this; +} + +inline QDoubleVector2D &QDoubleVector2D::operator-=(const QDoubleVector2D &vector) +{ + xp -= vector.xp; + yp -= vector.yp; + return *this; +} + +inline QDoubleVector2D &QDoubleVector2D::operator*=(double factor) +{ + xp *= factor; + yp *= factor; + return *this; +} + +inline QDoubleVector2D &QDoubleVector2D::operator*=(const QDoubleVector2D &vector) +{ + xp *= vector.xp; + yp *= vector.yp; + return *this; +} + +inline QDoubleVector2D &QDoubleVector2D::operator/=(double divisor) +{ + xp /= divisor; + yp /= divisor; + return *this; +} + +Q_DECL_CONSTEXPR inline bool operator==(const QDoubleVector2D &v1, const QDoubleVector2D &v2) +{ + return v1.xp == v2.xp && v1.yp == v2.yp; +} + +Q_DECL_CONSTEXPR inline bool operator!=(const QDoubleVector2D &v1, const QDoubleVector2D &v2) +{ + return v1.xp != v2.xp || v1.yp != v2.yp; +} + +Q_DECL_CONSTEXPR inline const QDoubleVector2D operator+(const QDoubleVector2D &v1, const QDoubleVector2D &v2) +{ + return QDoubleVector2D(v1.xp + v2.xp, v1.yp + v2.yp); +} + +Q_DECL_CONSTEXPR inline const QDoubleVector2D operator-(const QDoubleVector2D &v1, const QDoubleVector2D &v2) +{ + return QDoubleVector2D(v1.xp - v2.xp, v1.yp - v2.yp); +} + +Q_DECL_CONSTEXPR inline const QDoubleVector2D operator*(double factor, const QDoubleVector2D &vector) +{ + return QDoubleVector2D(vector.xp * factor, vector.yp * factor); +} + +Q_DECL_CONSTEXPR inline const QDoubleVector2D operator*(const QDoubleVector2D &vector, double factor) +{ + return QDoubleVector2D(vector.xp * factor, vector.yp * factor); +} + +Q_DECL_CONSTEXPR inline const QDoubleVector2D operator*(const QDoubleVector2D &v1, const QDoubleVector2D &v2) +{ + return QDoubleVector2D(v1.xp * v2.xp, v1.yp * v2.yp); +} + +Q_DECL_CONSTEXPR inline const QDoubleVector2D operator-(const QDoubleVector2D &vector) +{ + return QDoubleVector2D(-vector.xp, -vector.yp); +} + +Q_DECL_CONSTEXPR inline const QDoubleVector2D operator/(const QDoubleVector2D &vector, double divisor) +{ + return QDoubleVector2D(vector.xp / divisor, vector.yp / divisor); +} + +Q_DECL_CONSTEXPR inline bool qFuzzyCompare(const QDoubleVector2D &v1, const QDoubleVector2D &v2) +{ + return qFuzzyCompare(v1.xp, v2.xp) && qFuzzyCompare(v1.yp, v2.yp); +} + +Q_DECL_CONSTEXPR inline QPointF QDoubleVector2D::toPointF() const +{ + return QPointF(qreal(xp), qreal(yp)); +} + +#ifndef QT_NO_DEBUG_STREAM +Q_POSITIONING_EXPORT QDebug operator<<(QDebug dbg, const QDoubleVector2D &vector); +#endif + +#ifndef QT_NO_DATASTREAM +Q_POSITIONING_EXPORT QDataStream &operator<<(QDataStream &, const QDoubleVector2D &); +Q_POSITIONING_EXPORT QDataStream &operator>>(QDataStream &, QDoubleVector2D &); +#endif + +QT_END_NAMESPACE + +#endif diff --git a/src/QtLocationPlugin/qtlocation/src/positioning/qdoublevector3d_p.h b/src/QtLocationPlugin/qtlocation/src/positioning/qdoublevector3d_p.h new file mode 100644 index 0000000..e4f96e3 --- /dev/null +++ b/src/QtLocationPlugin/qtlocation/src/positioning/qdoublevector3d_p.h @@ -0,0 +1,296 @@ +/**************************************************************************** +** +** Copyright (C) 2015 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the QtPositioning module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL21$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The Qt Company. For licensing terms +** and conditions see http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 or version 3 as published by the Free +** Software Foundation and appearing in the file LICENSE.LGPLv21 and +** LICENSE.LGPLv3 included in the packaging of this file. Please review the +** following information to ensure the GNU Lesser General Public License +** requirements will be met: https://www.gnu.org/licenses/lgpl.html and +** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** As a special exception, The Qt Company gives you certain additional +** rights. These rights are described in The Qt Company LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QDOUBLEVECTOR3D_P_H +#define QDOUBLEVECTOR3D_P_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists purely as an +// implementation detail. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + +#ifdef QT_BUILD_LOCATION_LIB +#include +#endif + +#include "qpositioningglobal.h" +#include "qdoublevector2d_p.h" +#include + +QT_BEGIN_NAMESPACE + +class Q_POSITIONING_EXPORT QDoubleVector3D +{ +public: + Q_DECL_CONSTEXPR inline QDoubleVector3D(); + Q_DECL_CONSTEXPR inline QDoubleVector3D(double xpos, double ypos, double zpos); + Q_DECL_CONSTEXPR inline QDoubleVector3D(const QDoubleVector2D &vector); + Q_DECL_CONSTEXPR inline QDoubleVector3D(const QDoubleVector2D &vector, double zpos); + + inline bool isNull() const; + + Q_DECL_CONSTEXPR inline double x() const; + Q_DECL_CONSTEXPR inline double y() const; + Q_DECL_CONSTEXPR inline double z() const; + + inline void setX(double x); + inline void setY(double y); + inline void setZ(double z); + + inline double get(int i) const; + inline void set(int i, double value); + + double length() const; + Q_DECL_CONSTEXPR inline double lengthSquared() const; + + QDoubleVector3D normalized() const; + void normalize(); + + inline QDoubleVector3D &operator+=(const QDoubleVector3D &vector); + inline QDoubleVector3D &operator-=(const QDoubleVector3D &vector); + inline QDoubleVector3D &operator*=(double factor); + inline QDoubleVector3D &operator*=(const QDoubleVector3D &vector); + inline QDoubleVector3D &operator/=(double divisor); + + Q_DECL_CONSTEXPR static inline double dotProduct(const QDoubleVector3D &v1, const QDoubleVector3D &v2) + { return v1.xp * v2.xp + v1.yp * v2.yp + v1.zp * v2.zp; } + + Q_DECL_CONSTEXPR static inline QDoubleVector3D crossProduct(const QDoubleVector3D &v1, const QDoubleVector3D &v2) + { return QDoubleVector3D(v1.yp * v2.zp - v1.zp * v2.yp, + v1.zp * v2.xp - v1.xp * v2.zp, + v1.xp * v2.yp - v1.yp * v2.xp); } + + static QDoubleVector3D normal(const QDoubleVector3D &v1, const QDoubleVector3D &v2); + static QDoubleVector3D normal + (const QDoubleVector3D &v1, const QDoubleVector3D &v2, const QDoubleVector3D &v3); + + double distanceToPlane(const QDoubleVector3D &plane, const QDoubleVector3D &normal) const; + double distanceToPlane(const QDoubleVector3D &plane1, const QDoubleVector3D &plane2, const QDoubleVector3D &plane3) const; + double distanceToLine(const QDoubleVector3D &point, const QDoubleVector3D &direction) const; + + friend Q_DECL_CONSTEXPR inline bool operator==(const QDoubleVector3D &v1, const QDoubleVector3D &v2); + friend Q_DECL_CONSTEXPR inline bool operator!=(const QDoubleVector3D &v1, const QDoubleVector3D &v2); + friend Q_DECL_CONSTEXPR inline const QDoubleVector3D operator+(const QDoubleVector3D &v1, const QDoubleVector3D &v2); + friend Q_DECL_CONSTEXPR inline const QDoubleVector3D operator-(const QDoubleVector3D &v1, const QDoubleVector3D &v2); + friend Q_DECL_CONSTEXPR inline const QDoubleVector3D operator*(double factor, const QDoubleVector3D &vector); + friend Q_DECL_CONSTEXPR inline const QDoubleVector3D operator*(const QDoubleVector3D &vector, double factor); + friend Q_DECL_CONSTEXPR inline const QDoubleVector3D operator*(const QDoubleVector3D &v1, const QDoubleVector3D &v2); + friend Q_DECL_CONSTEXPR inline const QDoubleVector3D operator-(const QDoubleVector3D &vector); + friend Q_DECL_CONSTEXPR inline const QDoubleVector3D operator/(const QDoubleVector3D &vector, double divisor); + + friend Q_DECL_CONSTEXPR inline bool qFuzzyCompare(const QDoubleVector3D &v1, const QDoubleVector3D &v2); + + Q_DECL_CONSTEXPR inline QDoubleVector2D toVector2D() const; + +private: + double xp, yp, zp; + + friend class QDoubleVector2D; +}; + +Q_DECLARE_TYPEINFO(QDoubleVector3D, Q_MOVABLE_TYPE); + +Q_DECL_CONSTEXPR inline QDoubleVector3D::QDoubleVector3D() : xp(0.0), yp(0.0), zp(0.0) {} + +Q_DECL_CONSTEXPR inline QDoubleVector3D::QDoubleVector3D(double xpos, double ypos, double zpos) : xp(xpos), yp(ypos), zp(zpos) {} + +Q_DECL_CONSTEXPR inline QDoubleVector3D::QDoubleVector3D(const QDoubleVector2D &v) + : xp(v.xp), yp(v.yp), zp(0.0) {} + +Q_DECL_CONSTEXPR inline QDoubleVector3D::QDoubleVector3D(const QDoubleVector2D &v, double zpos) + : xp(v.xp), yp(v.yp), zp(zpos) {} + +inline bool QDoubleVector3D::isNull() const +{ + return qIsNull(xp) && qIsNull(yp) && qIsNull(zp); +} + +Q_DECL_CONSTEXPR inline double QDoubleVector3D::x() const { return xp; } +Q_DECL_CONSTEXPR inline double QDoubleVector3D::y() const { return yp; } +Q_DECL_CONSTEXPR inline double QDoubleVector3D::z() const { return zp; } + +Q_DECL_CONSTEXPR inline double QDoubleVector3D::lengthSquared() const +{ return xp * xp + yp * yp + zp * zp; } + + +inline void QDoubleVector3D::setX(double aX) { xp = aX; } +inline void QDoubleVector3D::setY(double aY) { yp = aY; } +inline void QDoubleVector3D::setZ(double aZ) { zp = aZ; } + +inline double QDoubleVector3D::get(int i) const +{ + switch (i) { + case 0: + return xp; + case 1: + return yp; + case 2: + return zp; + default: + return 0.0; + } +} + +inline void QDoubleVector3D::set(int i, double value) +{ + switch (i) { + case 0: + xp = value; + break; + case 1: + yp = value; + break; + case 2: + zp = value; + break; + default: + break; + } +} + +inline QDoubleVector3D &QDoubleVector3D::operator+=(const QDoubleVector3D &vector) +{ + xp += vector.xp; + yp += vector.yp; + zp += vector.zp; + return *this; +} + +inline QDoubleVector3D &QDoubleVector3D::operator-=(const QDoubleVector3D &vector) +{ + xp -= vector.xp; + yp -= vector.yp; + zp -= vector.zp; + return *this; +} + +inline QDoubleVector3D &QDoubleVector3D::operator*=(double factor) +{ + xp *= factor; + yp *= factor; + zp *= factor; + return *this; +} + +inline QDoubleVector3D &QDoubleVector3D::operator*=(const QDoubleVector3D &vector) +{ + xp *= vector.xp; + yp *= vector.yp; + zp *= vector.zp; + return *this; +} + +inline QDoubleVector3D &QDoubleVector3D::operator/=(double divisor) +{ + xp /= divisor; + yp /= divisor; + zp /= divisor; + return *this; +} + +Q_DECL_CONSTEXPR inline bool operator==(const QDoubleVector3D &v1, const QDoubleVector3D &v2) +{ + return v1.xp == v2.xp && v1.yp == v2.yp && v1.zp == v2.zp; +} + +Q_DECL_CONSTEXPR inline bool operator!=(const QDoubleVector3D &v1, const QDoubleVector3D &v2) +{ + return v1.xp != v2.xp || v1.yp != v2.yp || v1.zp != v2.zp; +} + +Q_DECL_CONSTEXPR inline const QDoubleVector3D operator+(const QDoubleVector3D &v1, const QDoubleVector3D &v2) +{ + return QDoubleVector3D(v1.xp + v2.xp, v1.yp + v2.yp, v1.zp + v2.zp); +} + +Q_DECL_CONSTEXPR inline const QDoubleVector3D operator-(const QDoubleVector3D &v1, const QDoubleVector3D &v2) +{ + return QDoubleVector3D(v1.xp - v2.xp, v1.yp - v2.yp, v1.zp - v2.zp); +} + +Q_DECL_CONSTEXPR inline const QDoubleVector3D operator*(double factor, const QDoubleVector3D &vector) +{ + return QDoubleVector3D(vector.xp * factor, vector.yp * factor, vector.zp * factor); +} + +Q_DECL_CONSTEXPR inline const QDoubleVector3D operator*(const QDoubleVector3D &vector, double factor) +{ + return QDoubleVector3D(vector.xp * factor, vector.yp * factor, vector.zp * factor); +} + +Q_DECL_CONSTEXPR inline const QDoubleVector3D operator*(const QDoubleVector3D &v1, const QDoubleVector3D &v2) +{ + return QDoubleVector3D(v1.xp * v2.xp, v1.yp * v2.yp, v1.zp * v2.zp); +} + +Q_DECL_CONSTEXPR inline const QDoubleVector3D operator-(const QDoubleVector3D &vector) +{ + return QDoubleVector3D(-vector.xp, -vector.yp, -vector.zp); +} + +Q_DECL_CONSTEXPR inline const QDoubleVector3D operator/(const QDoubleVector3D &vector, double divisor) +{ + return QDoubleVector3D(vector.xp / divisor, vector.yp / divisor, vector.zp / divisor); +} + +Q_DECL_CONSTEXPR inline bool qFuzzyCompare(const QDoubleVector3D &v1, const QDoubleVector3D &v2) +{ + return qFuzzyCompare(v1.xp, v2.xp) && + qFuzzyCompare(v1.yp, v2.yp) && + qFuzzyCompare(v1.zp, v2.zp); +} + +Q_DECL_CONSTEXPR inline QDoubleVector2D QDoubleVector3D::toVector2D() const +{ + return QDoubleVector2D(xp, yp); +} + + +#ifndef QT_NO_DEBUG_STREAM +Q_POSITIONING_EXPORT QDebug operator<<(QDebug dbg, const QDoubleVector3D &vector); +#endif + +#ifndef QT_NO_DATASTREAM +Q_POSITIONING_EXPORT QDataStream &operator<<(QDataStream &, const QDoubleVector3D &); +Q_POSITIONING_EXPORT QDataStream &operator>>(QDataStream &, QDoubleVector3D &); +#endif + +QT_END_NAMESPACE + +#endif diff --git a/src/QtLocationPlugin/qtlocation/src/positioning/qgeoaddress.h b/src/QtLocationPlugin/qtlocation/src/positioning/qgeoaddress.h new file mode 100644 index 0000000..9c107b1 --- /dev/null +++ b/src/QtLocationPlugin/qtlocation/src/positioning/qgeoaddress.h @@ -0,0 +1,100 @@ +/**************************************************************************** +** +** Copyright (C) 2015 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the QtPositioning module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL21$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The Qt Company. For licensing terms +** and conditions see http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 or version 3 as published by the Free +** Software Foundation and appearing in the file LICENSE.LGPLv21 and +** LICENSE.LGPLv3 included in the packaging of this file. Please review the +** following information to ensure the GNU Lesser General Public License +** requirements will be met: https://www.gnu.org/licenses/lgpl.html and +** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** As a special exception, The Qt Company gives you certain additional +** rights. These rights are described in The Qt Company LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QGEOADDRESS_H +#define QGEOADDRESS_H + +#include +#include +#include + +QT_BEGIN_NAMESPACE + +class QString; +class QGeoAddressPrivate; +class Q_POSITIONING_EXPORT QGeoAddress +{ +public: + QGeoAddress(); + QGeoAddress(const QGeoAddress &other); + ~QGeoAddress(); + + QGeoAddress &operator=(const QGeoAddress &other); + bool operator==(const QGeoAddress &other) const; + bool operator!=(const QGeoAddress &other) const { + return !(other == *this); + } + + QString text() const; + void setText(const QString &text); + + QString country() const; + void setCountry(const QString &country); + + QString countryCode() const; + void setCountryCode(const QString &countryCode); + + QString state() const; + void setState(const QString &state); + + QString county() const; + void setCounty(const QString &county); + + QString city() const; + void setCity(const QString &city); + + QString district() const; + void setDistrict(const QString &district); + + QString postalCode() const; + void setPostalCode(const QString &postalCode); + + QString street() const; + void setStreet(const QString &street); + + bool isEmpty() const; + void clear(); + + bool isTextGenerated() const; + +private: + QSharedDataPointer d; +}; + +Q_DECLARE_TYPEINFO(QGeoAddress, Q_MOVABLE_TYPE); + +QT_END_NAMESPACE + +Q_DECLARE_METATYPE(QGeoAddress) + +#endif diff --git a/src/QtLocationPlugin/qtlocation/src/positioning/qgeoaddress_p.h b/src/QtLocationPlugin/qtlocation/src/positioning/qgeoaddress_p.h new file mode 100644 index 0000000..bbd47fc --- /dev/null +++ b/src/QtLocationPlugin/qtlocation/src/positioning/qgeoaddress_p.h @@ -0,0 +1,74 @@ +/**************************************************************************** +** +** Copyright (C) 2015 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the QtPositioning module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL21$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The Qt Company. For licensing terms +** and conditions see http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 or version 3 as published by the Free +** Software Foundation and appearing in the file LICENSE.LGPLv21 and +** LICENSE.LGPLv3 included in the packaging of this file. Please review the +** following information to ensure the GNU Lesser General Public License +** requirements will be met: https://www.gnu.org/licenses/lgpl.html and +** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** As a special exception, The Qt Company gives you certain additional +** rights. These rights are described in The Qt Company LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QLOCATION_GEOADDRESS_P_H +#define QLOCATION_GEOADDRESS_P_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists purely as an +// implementation detail. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + +#include +#include + +QT_BEGIN_NAMESPACE + +class QGeoAddressPrivate : public QSharedData +{ +public: + QGeoAddressPrivate(); + QGeoAddressPrivate(const QGeoAddressPrivate &other); + ~QGeoAddressPrivate(); + + QString sCountry; //!< country field + QString sCountryCode; //!< country code field + QString sState; //!< state field + QString sCounty; //!< county field + QString sCity; //!< city field + QString sDistrict; //!< district field + QString sStreet; //!< street name field + QString sPostalCode; //!< postal code field + QString sText; + bool m_autoGeneratedText; +}; + +QT_END_NAMESPACE + +#endif diff --git a/src/QtLocationPlugin/qtlocation/src/positioning/qgeoareamonitorinfo.h b/src/QtLocationPlugin/qtlocation/src/positioning/qgeoareamonitorinfo.h new file mode 100644 index 0000000..faa8f09 --- /dev/null +++ b/src/QtLocationPlugin/qtlocation/src/positioning/qgeoareamonitorinfo.h @@ -0,0 +1,97 @@ +/**************************************************************************** +** +** Copyright (C) 2015 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the QtPositioning module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL21$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The Qt Company. For licensing terms +** and conditions see http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 or version 3 as published by the Free +** Software Foundation and appearing in the file LICENSE.LGPLv21 and +** LICENSE.LGPLv3 included in the packaging of this file. Please review the +** following information to ensure the GNU Lesser General Public License +** requirements will be met: https://www.gnu.org/licenses/lgpl.html and +** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** As a special exception, The Qt Company gives you certain additional +** rights. These rights are described in The Qt Company LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QGEOAREAMONITORINFO_H +#define QGEOAREAMONITORINFO_H + +#include +#include +#include +#include + +QT_BEGIN_NAMESPACE + +class QDataStream; +class QGeoAreaMonitorInfo; + +#ifndef QT_NO_DATASTREAM +Q_POSITIONING_EXPORT QDataStream &operator<<(QDataStream &, const QGeoAreaMonitorInfo &); +Q_POSITIONING_EXPORT QDataStream &operator>>(QDataStream &, QGeoAreaMonitorInfo &); +#endif + +class QGeoAreaMonitorInfoPrivate; +class Q_POSITIONING_EXPORT QGeoAreaMonitorInfo +{ +public: + explicit QGeoAreaMonitorInfo(const QString &name = QString()); + QGeoAreaMonitorInfo(const QGeoAreaMonitorInfo &other); + ~QGeoAreaMonitorInfo(); + + QGeoAreaMonitorInfo &operator=(const QGeoAreaMonitorInfo &other); + + bool operator==(const QGeoAreaMonitorInfo &other) const; + bool operator!=(const QGeoAreaMonitorInfo &other) const; + + QString name() const; + void setName(const QString &name); + + QString identifier() const; + bool isValid() const; + + QGeoShape area() const; + void setArea(const QGeoShape &newShape); + + QDateTime expiration() const; + void setExpiration(const QDateTime &expiry); + + bool isPersistent() const; + void setPersistent(bool isPersistent); + + QVariantMap notificationParameters() const; + void setNotificationParameters(const QVariantMap ¶meters); +private: + QSharedDataPointer d; + +#ifndef QT_NO_DATASTREAM + friend Q_POSITIONING_EXPORT QDataStream &operator<<(QDataStream &, const QGeoAreaMonitorInfo &); + friend Q_POSITIONING_EXPORT QDataStream &operator>>(QDataStream &, QGeoAreaMonitorInfo &); +#endif +}; + +#ifndef QT_NO_DEBUG_STREAM +Q_POSITIONING_EXPORT QDebug operator<<(QDebug, const QGeoAreaMonitorInfo &); +#endif + +QT_END_NAMESPACE + +#endif // QGEOAREAMONITORINFO_H diff --git a/src/QtLocationPlugin/qtlocation/src/positioning/qgeoareamonitorsource.h b/src/QtLocationPlugin/qtlocation/src/positioning/qgeoareamonitorsource.h new file mode 100644 index 0000000..1d9aa69 --- /dev/null +++ b/src/QtLocationPlugin/qtlocation/src/positioning/qgeoareamonitorsource.h @@ -0,0 +1,102 @@ +/**************************************************************************** +** +** Copyright (C) 2015 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the QtPositioning module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL21$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The Qt Company. For licensing terms +** and conditions see http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 or version 3 as published by the Free +** Software Foundation and appearing in the file LICENSE.LGPLv21 and +** LICENSE.LGPLv3 included in the packaging of this file. Please review the +** following information to ensure the GNU Lesser General Public License +** requirements will be met: https://www.gnu.org/licenses/lgpl.html and +** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** As a special exception, The Qt Company gives you certain additional +** rights. These rights are described in The Qt Company LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ +#ifndef QGEOAREAMONITORSOURCE_H +#define QGEOAREAMONITORSOURCE_H + +#include +#include +#include + +#include +#include + +QT_BEGIN_NAMESPACE + +class QGeoPositionInfo; +class QGeoAreaMonitorSourcePrivate; +class Q_POSITIONING_EXPORT QGeoAreaMonitorSource : public QObject +{ + Q_OBJECT + +public: + enum Error { + AccessError = 0, + InsufficientPositionInfo = 1, + UnknownSourceError = 2, + NoError = 3 + }; + Q_ENUM(Error) + + enum AreaMonitorFeature { + PersistentAreaMonitorFeature = 0x00000001, + AnyAreaMonitorFeature = 0xffffffff + }; + Q_DECLARE_FLAGS(AreaMonitorFeatures, AreaMonitorFeature) + + explicit QGeoAreaMonitorSource(QObject *parent); + virtual ~QGeoAreaMonitorSource(); + + static QGeoAreaMonitorSource *createDefaultSource(QObject *parent); + static QGeoAreaMonitorSource *createSource(const QString& sourceName, QObject *parent); + static QStringList availableSources(); + + virtual void setPositionInfoSource(QGeoPositionInfoSource *source); + virtual QGeoPositionInfoSource* positionInfoSource() const; + + QString sourceName() const; + + virtual Error error() const = 0; + virtual AreaMonitorFeatures supportedAreaMonitorFeatures() const = 0; + + virtual bool startMonitoring(const QGeoAreaMonitorInfo &monitor) = 0; + virtual bool stopMonitoring(const QGeoAreaMonitorInfo &monitor) = 0; + virtual bool requestUpdate(const QGeoAreaMonitorInfo &monitor, const char *signal) = 0; + + virtual QList activeMonitors() const = 0; + virtual QList activeMonitors(const QGeoShape &lookupArea) const = 0; + +Q_SIGNALS: + void areaEntered(const QGeoAreaMonitorInfo &monitor, const QGeoPositionInfo &update); + void areaExited(const QGeoAreaMonitorInfo &monitor, const QGeoPositionInfo &update); + void monitorExpired(const QGeoAreaMonitorInfo &monitor); + void error(QGeoAreaMonitorSource::Error error); + +private: + Q_DISABLE_COPY(QGeoAreaMonitorSource) + QGeoAreaMonitorSourcePrivate *d; +}; + + +QT_END_NAMESPACE + +#endif diff --git a/src/QtLocationPlugin/qtlocation/src/positioning/qgeocircle.h b/src/QtLocationPlugin/qtlocation/src/positioning/qgeocircle.h new file mode 100644 index 0000000..9d2828c --- /dev/null +++ b/src/QtLocationPlugin/qtlocation/src/positioning/qgeocircle.h @@ -0,0 +1,89 @@ +/**************************************************************************** +** +** Copyright (C) 2015 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the QtPositioning module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL21$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The Qt Company. For licensing terms +** and conditions see http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 or version 3 as published by the Free +** Software Foundation and appearing in the file LICENSE.LGPLv21 and +** LICENSE.LGPLv3 included in the packaging of this file. Please review the +** following information to ensure the GNU Lesser General Public License +** requirements will be met: https://www.gnu.org/licenses/lgpl.html and +** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** As a special exception, The Qt Company gives you certain additional +** rights. These rights are described in The Qt Company LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QGEOCIRCLE_H +#define QGEOCIRCLE_H + +#include + +QT_BEGIN_NAMESPACE + +class QGeoCoordinate; +class QGeoCirclePrivate; + +class Q_POSITIONING_EXPORT QGeoCircle : public QGeoShape +{ + Q_GADGET + Q_PROPERTY(QGeoCoordinate center READ center WRITE setCenter) + Q_PROPERTY(qreal radius READ radius WRITE setRadius) + +public: + QGeoCircle(); + QGeoCircle(const QGeoCoordinate ¢er, qreal radius = -1.0); + QGeoCircle(const QGeoCircle &other); + QGeoCircle(const QGeoShape &other); + + ~QGeoCircle(); + + QGeoCircle &operator=(const QGeoCircle &other); + + using QGeoShape::operator==; + bool operator==(const QGeoCircle &other) const; + + using QGeoShape::operator!=; + bool operator!=(const QGeoCircle &other) const; + + void setCenter(const QGeoCoordinate ¢er); + QGeoCoordinate center() const; + + void setRadius(qreal radius); + qreal radius() const; + + void translate(double degreesLatitude, double degreesLongitude); + QGeoCircle translated(double degreesLatitude, double degreesLongitude) const; + + Q_INVOKABLE QString toString() const; + +private: + inline QGeoCirclePrivate *d_func(); + inline const QGeoCirclePrivate *d_func() const; +}; + +Q_DECLARE_TYPEINFO(QGeoCircle, Q_MOVABLE_TYPE); + +QT_END_NAMESPACE + +Q_DECLARE_METATYPE(QGeoCircle) + +#endif + diff --git a/src/QtLocationPlugin/qtlocation/src/positioning/qgeocircle_p.h b/src/QtLocationPlugin/qtlocation/src/positioning/qgeocircle_p.h new file mode 100644 index 0000000..c3c6333 --- /dev/null +++ b/src/QtLocationPlugin/qtlocation/src/positioning/qgeocircle_p.h @@ -0,0 +1,79 @@ +/**************************************************************************** +** +** Copyright (C) 2015 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the QtPositioning module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL21$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The Qt Company. For licensing terms +** and conditions see http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 or version 3 as published by the Free +** Software Foundation and appearing in the file LICENSE.LGPLv21 and +** LICENSE.LGPLv3 included in the packaging of this file. Please review the +** following information to ensure the GNU Lesser General Public License +** requirements will be met: https://www.gnu.org/licenses/lgpl.html and +** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** As a special exception, The Qt Company gives you certain additional +** rights. These rights are described in The Qt Company LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QGEOCIRCLE_P_H +#define QGEOCIRCLE_P_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists purely as an +// implementation detail. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + +#include "qgeoshape_p.h" +#include "qgeocoordinate.h" + +QT_BEGIN_NAMESPACE + +class QGeoCirclePrivate : public QGeoShapePrivate +{ +public: + QGeoCirclePrivate(); + QGeoCirclePrivate(const QGeoCoordinate ¢er, qreal radius); + QGeoCirclePrivate(const QGeoCirclePrivate &other); + ~QGeoCirclePrivate(); + + bool isValid() const Q_DECL_OVERRIDE; + bool isEmpty() const Q_DECL_OVERRIDE; + bool contains(const QGeoCoordinate &coordinate) const Q_DECL_OVERRIDE; + + QGeoCoordinate center() const Q_DECL_OVERRIDE; + + void extendShape(const QGeoCoordinate &coordinate) Q_DECL_OVERRIDE; + + QGeoShapePrivate *clone() const Q_DECL_OVERRIDE; + + bool operator==(const QGeoShapePrivate &other) const Q_DECL_OVERRIDE; + + QGeoCoordinate m_center; + qreal radius; +}; + +QT_END_NAMESPACE + +#endif diff --git a/src/QtLocationPlugin/qtlocation/src/positioning/qgeocoordinate.h b/src/QtLocationPlugin/qtlocation/src/positioning/qgeocoordinate.h new file mode 100644 index 0000000..a1a636d --- /dev/null +++ b/src/QtLocationPlugin/qtlocation/src/positioning/qgeocoordinate.h @@ -0,0 +1,127 @@ +/**************************************************************************** +** +** Copyright (C) 2015 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the QtPositioning module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL21$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The Qt Company. For licensing terms +** and conditions see http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 or version 3 as published by the Free +** Software Foundation and appearing in the file LICENSE.LGPLv21 and +** LICENSE.LGPLv3 included in the packaging of this file. Please review the +** following information to ensure the GNU Lesser General Public License +** requirements will be met: https://www.gnu.org/licenses/lgpl.html and +** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** As a special exception, The Qt Company gives you certain additional +** rights. These rights are described in The Qt Company LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QGEOCOORDINATE_H +#define QGEOCOORDINATE_H + +#include +#include +#include +#include + +QT_BEGIN_NAMESPACE + +class QDebug; +class QDataStream; + +class QGeoCoordinatePrivate; +class Q_POSITIONING_EXPORT QGeoCoordinate +{ + Q_GADGET + + Q_PROPERTY(double latitude READ latitude WRITE setLatitude) + Q_PROPERTY(double longitude READ longitude WRITE setLongitude) + Q_PROPERTY(double altitude READ altitude WRITE setAltitude) + Q_PROPERTY(bool isValid READ isValid) + +public: + + enum CoordinateType { + InvalidCoordinate, + Coordinate2D, + Coordinate3D + }; + + enum CoordinateFormat { + Degrees, + DegreesWithHemisphere, + DegreesMinutes, + DegreesMinutesWithHemisphere, + DegreesMinutesSeconds, + DegreesMinutesSecondsWithHemisphere + }; + + QGeoCoordinate(); + QGeoCoordinate(double latitude, double longitude); + QGeoCoordinate(double latitude, double longitude, double altitude); + QGeoCoordinate(const QGeoCoordinate &other); + ~QGeoCoordinate(); + + QGeoCoordinate &operator=(const QGeoCoordinate &other); + + bool operator==(const QGeoCoordinate &other) const; + inline bool operator!=(const QGeoCoordinate &other) const { + return !operator==(other); + } + + bool isValid() const; + CoordinateType type() const; + + void setLatitude(double latitude); + double latitude() const; + + void setLongitude(double longitude); + double longitude() const; + + void setAltitude(double altitude); + double altitude() const; + + Q_INVOKABLE qreal distanceTo(const QGeoCoordinate &other) const; + Q_INVOKABLE qreal azimuthTo(const QGeoCoordinate &other) const; + + Q_INVOKABLE QGeoCoordinate atDistanceAndAzimuth(qreal distance, qreal azimuth, qreal distanceUp = 0.0) const; + + Q_INVOKABLE QString toString(CoordinateFormat format = DegreesMinutesSecondsWithHemisphere) const; + +private: + QSharedDataPointer d; + + friend class QGeoCoordinatePrivate; +}; + +Q_DECLARE_TYPEINFO(QGeoCoordinate, Q_MOVABLE_TYPE); + +#ifndef QT_NO_DEBUG_STREAM +Q_POSITIONING_EXPORT QDebug operator<<(QDebug, const QGeoCoordinate &); +#endif + +#ifndef QT_NO_DATASTREAM +Q_POSITIONING_EXPORT QDataStream &operator<<(QDataStream &stream, const QGeoCoordinate &coordinate); +Q_POSITIONING_EXPORT QDataStream &operator>>(QDataStream &stream, QGeoCoordinate &coordinate); +#endif + +QT_END_NAMESPACE + +Q_DECLARE_METATYPE(QGeoCoordinate) + +#endif diff --git a/src/QtLocationPlugin/qtlocation/src/positioning/qgeocoordinate_p.h b/src/QtLocationPlugin/qtlocation/src/positioning/qgeocoordinate_p.h new file mode 100644 index 0000000..b9304b0 --- /dev/null +++ b/src/QtLocationPlugin/qtlocation/src/positioning/qgeocoordinate_p.h @@ -0,0 +1,71 @@ +/**************************************************************************** +** +** Copyright (C) 2015 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the QtPositioning module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL21$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The Qt Company. For licensing terms +** and conditions see http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 or version 3 as published by the Free +** Software Foundation and appearing in the file LICENSE.LGPLv21 and +** LICENSE.LGPLv3 included in the packaging of this file. Please review the +** following information to ensure the GNU Lesser General Public License +** requirements will be met: https://www.gnu.org/licenses/lgpl.html and +** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** As a special exception, The Qt Company gives you certain additional +** rights. These rights are described in The Qt Company LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QGEOCOORDINATE_P_H +#define QGEOCOORDINATE_P_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists purely as an +// implementation detail. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + +#include +#include "qgeocoordinate.h" + +QT_BEGIN_NAMESPACE + +class QGeoCoordinatePrivate : public QSharedData +{ +public: + QGeoCoordinatePrivate(); + QGeoCoordinatePrivate(const QGeoCoordinatePrivate &other); + ~QGeoCoordinatePrivate(); + + double lat; + double lng; + double alt; + + static void atDistanceAndAzimuth(const QGeoCoordinate &coord, + qreal distance, qreal azimuth, + double *lon, double *lat); +}; + +QT_END_NAMESPACE + +#endif // QGEOCOORDINATE_P_H diff --git a/src/QtLocationPlugin/qtlocation/src/positioning/qgeolocation.h b/src/QtLocationPlugin/qtlocation/src/positioning/qgeolocation.h new file mode 100644 index 0000000..579a2a4 --- /dev/null +++ b/src/QtLocationPlugin/qtlocation/src/positioning/qgeolocation.h @@ -0,0 +1,82 @@ +/**************************************************************************** +** +** Copyright (C) 2015 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the QtPositioning module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL21$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The Qt Company. For licensing terms +** and conditions see http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 or version 3 as published by the Free +** Software Foundation and appearing in the file LICENSE.LGPLv21 and +** LICENSE.LGPLv3 included in the packaging of this file. Please review the +** following information to ensure the GNU Lesser General Public License +** requirements will be met: https://www.gnu.org/licenses/lgpl.html and +** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** As a special exception, The Qt Company gives you certain additional +** rights. These rights are described in The Qt Company LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QGEOLOCATION_H +#define QGEOLOCATION_H + +#include +#include +#include + +QT_BEGIN_NAMESPACE + +class QGeoAddress; +class QGeoCoordinate; +class QGeoRectangle; +class QGeoLocationPrivate; + +class Q_POSITIONING_EXPORT QGeoLocation +{ +public: + QGeoLocation(); + QGeoLocation(const QGeoLocation &other); + + ~QGeoLocation(); + + QGeoLocation &operator=(const QGeoLocation &other); + + bool operator==(const QGeoLocation &other) const; + bool operator!=(const QGeoLocation &other) const { + return !(other == *this); + } + + QGeoAddress address() const; + void setAddress(const QGeoAddress &address); + QGeoCoordinate coordinate() const; + void setCoordinate(const QGeoCoordinate &position); + QGeoRectangle boundingBox() const; + void setBoundingBox(const QGeoRectangle &box); + + bool isEmpty() const; + +private: + QSharedDataPointer d; +}; + +Q_DECLARE_TYPEINFO(QGeoLocation, Q_MOVABLE_TYPE); + +QT_END_NAMESPACE + +Q_DECLARE_METATYPE(QGeoLocation) + +#endif diff --git a/src/QtLocationPlugin/qtlocation/src/positioning/qgeolocation_p.h b/src/QtLocationPlugin/qtlocation/src/positioning/qgeolocation_p.h new file mode 100644 index 0000000..cafcafe --- /dev/null +++ b/src/QtLocationPlugin/qtlocation/src/positioning/qgeolocation_p.h @@ -0,0 +1,63 @@ +/**************************************************************************** +** +** Copyright (C) 2015 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the QtPositioning module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL21$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The Qt Company. For licensing terms +** and conditions see http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 or version 3 as published by the Free +** Software Foundation and appearing in the file LICENSE.LGPLv21 and +** LICENSE.LGPLv3 included in the packaging of this file. Please review the +** following information to ensure the GNU Lesser General Public License +** requirements will be met: https://www.gnu.org/licenses/lgpl.html and +** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** As a special exception, The Qt Company gives you certain additional +** rights. These rights are described in The Qt Company LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QGEOLOCATION_P_H +#define QGEOLOCATION_P_H + +#include +#include +#include +#include + +QT_BEGIN_NAMESPACE + +class QGeoLocationPrivate : public QSharedData +{ +public: + QGeoLocationPrivate(); + QGeoLocationPrivate(const QGeoLocationPrivate &other); + + ~QGeoLocationPrivate(); + + bool operator==(const QGeoLocationPrivate &other) const; + + bool isEmpty() const; + + QGeoAddress address; + QGeoCoordinate coordinate; + QGeoRectangle viewport; +}; + +QT_END_NAMESPACE + +#endif diff --git a/src/QtLocationPlugin/qtlocation/src/positioning/qgeopositioninfo.h b/src/QtLocationPlugin/qtlocation/src/positioning/qgeopositioninfo.h new file mode 100644 index 0000000..0d17f70 --- /dev/null +++ b/src/QtLocationPlugin/qtlocation/src/positioning/qgeopositioninfo.h @@ -0,0 +1,107 @@ +/**************************************************************************** +** +** Copyright (C) 2015 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the QtPositioning module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL21$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The Qt Company. For licensing terms +** and conditions see http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 or version 3 as published by the Free +** Software Foundation and appearing in the file LICENSE.LGPLv21 and +** LICENSE.LGPLv3 included in the packaging of this file. Please review the +** following information to ensure the GNU Lesser General Public License +** requirements will be met: https://www.gnu.org/licenses/lgpl.html and +** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** As a special exception, The Qt Company gives you certain additional +** rights. These rights are described in The Qt Company LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ +#ifndef QGEOPOSITIONINFO_H +#define QGEOPOSITIONINFO_H + +#include + +#include + +QT_BEGIN_NAMESPACE + +class QDebug; +class QDataStream; + +class QGeoPositionInfoPrivate; +class Q_POSITIONING_EXPORT QGeoPositionInfo +{ +public: + enum Attribute { + Direction, + GroundSpeed, + VerticalSpeed, + MagneticVariation, + HorizontalAccuracy, + VerticalAccuracy + }; + + QGeoPositionInfo(); + QGeoPositionInfo(const QGeoCoordinate &coordinate, const QDateTime &updateTime); + QGeoPositionInfo(const QGeoPositionInfo &other); + ~QGeoPositionInfo(); + + QGeoPositionInfo &operator=(const QGeoPositionInfo &other); + + bool operator==(const QGeoPositionInfo &other) const; + inline bool operator!=(const QGeoPositionInfo &other) const { + return !operator==(other); + } + + bool isValid() const; + + void setTimestamp(const QDateTime ×tamp); + QDateTime timestamp() const; + + void setCoordinate(const QGeoCoordinate &coordinate); + QGeoCoordinate coordinate() const; + + void setAttribute(Attribute attribute, qreal value); + qreal attribute(Attribute attribute) const; + void removeAttribute(Attribute attribute); + bool hasAttribute(Attribute attribute) const; + +private: +#ifndef QT_NO_DEBUG_STREAM + friend Q_POSITIONING_EXPORT QDebug operator<<(QDebug dbg, const QGeoPositionInfo &info); +#endif +#ifndef QT_NO_DATASTREAM + friend Q_POSITIONING_EXPORT QDataStream &operator<<(QDataStream &stream, const QGeoPositionInfo &info); + friend Q_POSITIONING_EXPORT QDataStream &operator>>(QDataStream &stream, QGeoPositionInfo &info); +#endif + QGeoPositionInfoPrivate *d; +}; + +#ifndef QT_NO_DEBUG_STREAM +Q_POSITIONING_EXPORT QDebug operator<<(QDebug dbg, const QGeoPositionInfo &info); +#endif + +#ifndef QT_NO_DATASTREAM +Q_POSITIONING_EXPORT QDataStream &operator<<(QDataStream &stream, QGeoPositionInfo::Attribute attr); +Q_POSITIONING_EXPORT QDataStream &operator>>(QDataStream &stream, QGeoPositionInfo::Attribute &attr); +Q_POSITIONING_EXPORT QDataStream &operator<<(QDataStream &stream, const QGeoPositionInfo &info); +Q_POSITIONING_EXPORT QDataStream &operator>>(QDataStream &stream, QGeoPositionInfo &info); +#endif + +QT_END_NAMESPACE + +#endif diff --git a/src/QtLocationPlugin/qtlocation/src/positioning/qgeopositioninfosource.h b/src/QtLocationPlugin/qtlocation/src/positioning/qgeopositioninfosource.h new file mode 100644 index 0000000..18f2fb0 --- /dev/null +++ b/src/QtLocationPlugin/qtlocation/src/positioning/qgeopositioninfosource.h @@ -0,0 +1,108 @@ +/**************************************************************************** +** +** Copyright (C) 2015 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the QtPositioning module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL21$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The Qt Company. For licensing terms +** and conditions see http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 or version 3 as published by the Free +** Software Foundation and appearing in the file LICENSE.LGPLv21 and +** LICENSE.LGPLv3 included in the packaging of this file. Please review the +** following information to ensure the GNU Lesser General Public License +** requirements will be met: https://www.gnu.org/licenses/lgpl.html and +** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** As a special exception, The Qt Company gives you certain additional +** rights. These rights are described in The Qt Company LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ +#ifndef QGEOPOSITIONINFOSOURCE_H +#define QGEOPOSITIONINFOSOURCE_H + +#include + +#include + +QT_BEGIN_NAMESPACE + +class QGeoPositionInfoSourcePrivate; +class Q_POSITIONING_EXPORT QGeoPositionInfoSource : public QObject +{ + Q_OBJECT + Q_PROPERTY(int updateInterval READ updateInterval WRITE setUpdateInterval) + Q_PROPERTY(int minimumUpdateInterval READ minimumUpdateInterval) + Q_PROPERTY(QString sourceName READ sourceName) + +public: + enum Error { + AccessError = 0, + ClosedError = 1, + UnknownSourceError = 2, + NoError = 3 + }; + Q_ENUM(Error) + + enum PositioningMethod { + NoPositioningMethods = 0x00000000, + SatellitePositioningMethods = 0x000000ff, + NonSatellitePositioningMethods = 0xffffff00, + AllPositioningMethods = 0xffffffff + }; + Q_DECLARE_FLAGS(PositioningMethods, PositioningMethod) + + explicit QGeoPositionInfoSource(QObject *parent); + virtual ~QGeoPositionInfoSource(); + + virtual void setUpdateInterval(int msec); + int updateInterval() const; + + virtual void setPreferredPositioningMethods(PositioningMethods methods); + PositioningMethods preferredPositioningMethods() const; + + virtual QGeoPositionInfo lastKnownPosition(bool fromSatellitePositioningMethodsOnly = false) const = 0; + + virtual PositioningMethods supportedPositioningMethods() const = 0; + virtual int minimumUpdateInterval() const = 0; + + QString sourceName() const; + + static QGeoPositionInfoSource *createDefaultSource(QObject *parent); + static QGeoPositionInfoSource *createSource(const QString &sourceName, QObject *parent); + static QStringList availableSources(); + virtual Error error() const = 0; + +public Q_SLOTS: + virtual void startUpdates() = 0; + virtual void stopUpdates() = 0; + + virtual void requestUpdate(int timeout = 0) = 0; + +Q_SIGNALS: + void positionUpdated(const QGeoPositionInfo &update); + void updateTimeout(); + void error(QGeoPositionInfoSource::Error); + +private: + Q_DISABLE_COPY(QGeoPositionInfoSource) + QGeoPositionInfoSourcePrivate *d; +}; + +Q_DECLARE_OPERATORS_FOR_FLAGS(QGeoPositionInfoSource::PositioningMethods) + +QT_END_NAMESPACE + +#endif diff --git a/src/QtLocationPlugin/qtlocation/src/positioning/qgeopositioninfosource_p.h b/src/QtLocationPlugin/qtlocation/src/positioning/qgeopositioninfosource_p.h new file mode 100644 index 0000000..aedf331 --- /dev/null +++ b/src/QtLocationPlugin/qtlocation/src/positioning/qgeopositioninfosource_p.h @@ -0,0 +1,65 @@ +/**************************************************************************** +** +** Copyright (C) 2015 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the QtPositioning module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL21$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The Qt Company. For licensing terms +** and conditions see http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 or version 3 as published by the Free +** Software Foundation and appearing in the file LICENSE.LGPLv21 and +** LICENSE.LGPLv3 included in the packaging of this file. Please review the +** following information to ensure the GNU Lesser General Public License +** requirements will be met: https://www.gnu.org/licenses/lgpl.html and +** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** As a special exception, The Qt Company gives you certain additional +** rights. These rights are described in The Qt Company LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QGEOPOSITIONINFOSOURCE_P_H +#define QGEOPOSITIONINFOSOURCE_P_H + +#include "qgeopositioninfosource.h" +#include "qgeopositioninfosourcefactory.h" +#include +#include +#include +#include + +QT_BEGIN_NAMESPACE + +class QGeoPositionInfoSourcePrivate +{ +public: + int interval; + QGeoPositionInfoSource::PositioningMethods methods; + QJsonObject metaData; + QGeoPositionInfoSourceFactory *factory; + QString providerName; + + void loadMeta(); + void loadPlugin(); + + static QHash plugins(bool reload = false); + static void loadPluginMetadata(QHash &list); + static QList pluginsSorted(); +}; + +QT_END_NAMESPACE + +#endif // QGEOPOSITIONINFOSOURCE_P_H diff --git a/src/QtLocationPlugin/qtlocation/src/positioning/qgeopositioninfosourcefactory.h b/src/QtLocationPlugin/qtlocation/src/positioning/qgeopositioninfosourcefactory.h new file mode 100644 index 0000000..34c644f --- /dev/null +++ b/src/QtLocationPlugin/qtlocation/src/positioning/qgeopositioninfosourcefactory.h @@ -0,0 +1,60 @@ +/**************************************************************************** +** +** Copyright (C) 2015 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the QtPositioning module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL21$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The Qt Company. For licensing terms +** and conditions see http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 or version 3 as published by the Free +** Software Foundation and appearing in the file LICENSE.LGPLv21 and +** LICENSE.LGPLv3 included in the packaging of this file. Please review the +** following information to ensure the GNU Lesser General Public License +** requirements will be met: https://www.gnu.org/licenses/lgpl.html and +** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** As a special exception, The Qt Company gives you certain additional +** rights. These rights are described in The Qt Company LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QGEOPOSITIONINFOSOURCEFACTORY_H +#define QGEOPOSITIONINFOSOURCEFACTORY_H + +#include +#include +#include +#include + +QT_BEGIN_NAMESPACE + +class Q_POSITIONING_EXPORT QGeoPositionInfoSourceFactory +{ +public: + virtual ~QGeoPositionInfoSourceFactory(); + + virtual QGeoPositionInfoSource *positionInfoSource(QObject *parent) = 0; + virtual QGeoSatelliteInfoSource *satelliteInfoSource(QObject *parent) = 0; + virtual QGeoAreaMonitorSource *areaMonitor(QObject *parent) = 0; +}; + +#define QT_POSITION_SOURCE_INTERFACE +Q_DECLARE_INTERFACE(QGeoPositionInfoSourceFactory, + "org.qt-project.qt.position.sourcefactory/5.0") + +QT_END_NAMESPACE + +#endif // QGEOPOSITIONINFOSOURCEFACTORY_H diff --git a/src/QtLocationPlugin/qtlocation/src/positioning/qgeoprojection_p.h b/src/QtLocationPlugin/qtlocation/src/positioning/qgeoprojection_p.h new file mode 100644 index 0000000..f1b3252 --- /dev/null +++ b/src/QtLocationPlugin/qtlocation/src/positioning/qgeoprojection_p.h @@ -0,0 +1,77 @@ +/**************************************************************************** +** +** Copyright (C) 2015 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the QtLocation module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL21$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The Qt Company. For licensing terms +** and conditions see http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 or version 3 as published by the Free +** Software Foundation and appearing in the file LICENSE.LGPLv21 and +** LICENSE.LGPLv3 included in the packaging of this file. Please review the +** following information to ensure the GNU Lesser General Public License +** requirements will be met: https://www.gnu.org/licenses/lgpl.html and +** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** As a special exception, The Qt Company gives you certain additional +** rights. These rights are described in The Qt Company LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ +#ifndef QGEOPROJECTION_P_H +#define QGEOPROJECTION_P_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists purely as an +// implementation detail. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + +#ifndef M_PI +#define M_PI (3.14159265358979323846) +#endif + +#include +#include +#include "qpositioningglobal.h" + +QT_BEGIN_NAMESPACE + +class QGeoCoordinate; +class QDoubleVector2D; + +Q_POSITIONING_EXPORT QVariant geoCoordinateInterpolator(const QGeoCoordinate &from, + const QGeoCoordinate &to, + qreal progress); + +class Q_POSITIONING_EXPORT QGeoProjection +{ +public: + static QDoubleVector2D coordToMercator(const QGeoCoordinate &coord); + static QGeoCoordinate mercatorToCoord(const QDoubleVector2D &mercator); + static QGeoCoordinate coordinateInterpolation(const QGeoCoordinate &from, const QGeoCoordinate &to, qreal progress); + +private: + static double realmod(const double a, const double b); +}; + +QT_END_NAMESPACE + +#endif // QGEOPROJECTION_P_H diff --git a/src/QtLocationPlugin/qtlocation/src/positioning/qgeorectangle.h b/src/QtLocationPlugin/qtlocation/src/positioning/qgeorectangle.h new file mode 100644 index 0000000..b39b532 --- /dev/null +++ b/src/QtLocationPlugin/qtlocation/src/positioning/qgeorectangle.h @@ -0,0 +1,124 @@ +/**************************************************************************** +** +** Copyright (C) 2015 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the QtPositioning module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL21$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The Qt Company. For licensing terms +** and conditions see http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 or version 3 as published by the Free +** Software Foundation and appearing in the file LICENSE.LGPLv21 and +** LICENSE.LGPLv3 included in the packaging of this file. Please review the +** following information to ensure the GNU Lesser General Public License +** requirements will be met: https://www.gnu.org/licenses/lgpl.html and +** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** As a special exception, The Qt Company gives you certain additional +** rights. These rights are described in The Qt Company LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QGEORECTANGLE_H +#define QGEORECTANGLE_H + +#include + +QT_BEGIN_NAMESPACE + +class QGeoCoordinate; +class QGeoRectanglePrivate; + +class Q_POSITIONING_EXPORT QGeoRectangle : public QGeoShape +{ + Q_GADGET + Q_PROPERTY(QGeoCoordinate bottomLeft READ bottomLeft WRITE setBottomLeft) + Q_PROPERTY(QGeoCoordinate bottomRight READ bottomRight WRITE setBottomRight) + Q_PROPERTY(QGeoCoordinate topLeft READ topLeft WRITE setTopLeft) + Q_PROPERTY(QGeoCoordinate topRight READ topRight WRITE setTopRight) + Q_PROPERTY(QGeoCoordinate center READ center WRITE setCenter) + Q_PROPERTY(double height READ height WRITE setHeight) + Q_PROPERTY(double width READ width WRITE setWidth) + +public: + QGeoRectangle(); + QGeoRectangle(const QGeoCoordinate ¢er, double degreesWidth, double degreesHeight); + QGeoRectangle(const QGeoCoordinate &topLeft, const QGeoCoordinate &bottomRight); + QGeoRectangle(const QList &coordinates); + QGeoRectangle(const QGeoRectangle &other); + QGeoRectangle(const QGeoShape &other); + + ~QGeoRectangle(); + + QGeoRectangle &operator=(const QGeoRectangle &other); + + using QGeoShape::operator==; + bool operator==(const QGeoRectangle &other) const; + + using QGeoShape::operator!=; + bool operator!=(const QGeoRectangle &other) const; + + void setTopLeft(const QGeoCoordinate &topLeft); + QGeoCoordinate topLeft() const; + + void setTopRight(const QGeoCoordinate &topRight); + QGeoCoordinate topRight() const; + + void setBottomLeft(const QGeoCoordinate &bottomLeft); + QGeoCoordinate bottomLeft() const; + + void setBottomRight(const QGeoCoordinate &bottomRight); + QGeoCoordinate bottomRight() const; + + void setCenter(const QGeoCoordinate ¢er); + QGeoCoordinate center() const; + + void setWidth(double degreesWidth); + double width() const; + + void setHeight(double degreesHeight); + double height() const; + + using QGeoShape::contains; + bool contains(const QGeoRectangle &rectangle) const; + bool intersects(const QGeoRectangle &rectangle) const; + + void translate(double degreesLatitude, double degreesLongitude); + QGeoRectangle translated(double degreesLatitude, double degreesLongitude) const; + + QGeoRectangle united(const QGeoRectangle &rectangle) const; + QGeoRectangle operator|(const QGeoRectangle &rectangle) const; + QGeoRectangle &operator|=(const QGeoRectangle &rectangle); + + Q_INVOKABLE QString toString() const; + +private: + inline QGeoRectanglePrivate *d_func(); + inline const QGeoRectanglePrivate *d_func() const; +}; + +Q_DECLARE_TYPEINFO(QGeoRectangle, Q_MOVABLE_TYPE); + +inline QGeoRectangle QGeoRectangle::operator|(const QGeoRectangle &rectangle) const +{ + return united(rectangle); +} + +QT_END_NAMESPACE + +Q_DECLARE_METATYPE(QGeoRectangle) + +#endif + diff --git a/src/QtLocationPlugin/qtlocation/src/positioning/qgeorectangle_p.h b/src/QtLocationPlugin/qtlocation/src/positioning/qgeorectangle_p.h new file mode 100644 index 0000000..36c79b1 --- /dev/null +++ b/src/QtLocationPlugin/qtlocation/src/positioning/qgeorectangle_p.h @@ -0,0 +1,79 @@ +/**************************************************************************** +** +** Copyright (C) 2015 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the QtPositioning module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL21$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The Qt Company. For licensing terms +** and conditions see http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 or version 3 as published by the Free +** Software Foundation and appearing in the file LICENSE.LGPLv21 and +** LICENSE.LGPLv3 included in the packaging of this file. Please review the +** following information to ensure the GNU Lesser General Public License +** requirements will be met: https://www.gnu.org/licenses/lgpl.html and +** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** As a special exception, The Qt Company gives you certain additional +** rights. These rights are described in The Qt Company LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QGEORECTANGLE_P_H +#define QGEORECTANGLE_P_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists purely as an +// implementation detail. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + +#include "qgeoshape_p.h" +#include "qgeocoordinate.h" + +QT_BEGIN_NAMESPACE + +class QGeoRectanglePrivate : public QGeoShapePrivate +{ +public: + QGeoRectanglePrivate(); + QGeoRectanglePrivate(const QGeoCoordinate &topLeft, const QGeoCoordinate &bottomRight); + QGeoRectanglePrivate(const QGeoRectanglePrivate &other); + ~QGeoRectanglePrivate(); + + bool isValid() const Q_DECL_OVERRIDE; + bool isEmpty() const Q_DECL_OVERRIDE; + bool contains(const QGeoCoordinate &coordinate) const Q_DECL_OVERRIDE; + + QGeoCoordinate center() const Q_DECL_OVERRIDE; + + void extendShape(const QGeoCoordinate &coordinate) Q_DECL_OVERRIDE; + + QGeoShapePrivate *clone() const Q_DECL_OVERRIDE; + + bool operator==(const QGeoShapePrivate &other) const Q_DECL_OVERRIDE; + + QGeoCoordinate topLeft; + QGeoCoordinate bottomRight; +}; + +QT_END_NAMESPACE + +#endif diff --git a/src/QtLocationPlugin/qtlocation/src/positioning/qgeosatelliteinfo.h b/src/QtLocationPlugin/qtlocation/src/positioning/qgeosatelliteinfo.h new file mode 100644 index 0000000..0c203a5 --- /dev/null +++ b/src/QtLocationPlugin/qtlocation/src/positioning/qgeosatelliteinfo.h @@ -0,0 +1,106 @@ +/**************************************************************************** +** +** Copyright (C) 2015 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the QtPositioning module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL21$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The Qt Company. For licensing terms +** and conditions see http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 or version 3 as published by the Free +** Software Foundation and appearing in the file LICENSE.LGPLv21 and +** LICENSE.LGPLv3 included in the packaging of this file. Please review the +** following information to ensure the GNU Lesser General Public License +** requirements will be met: https://www.gnu.org/licenses/lgpl.html and +** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** As a special exception, The Qt Company gives you certain additional +** rights. These rights are described in The Qt Company LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ +#ifndef QGEOSATELLITEINFO_H +#define QGEOSATELLITEINFO_H + +#include + +QT_BEGIN_NAMESPACE + +class QDebug; +class QDataStream; + +class QGeoSatelliteInfoPrivate; +class Q_POSITIONING_EXPORT QGeoSatelliteInfo +{ +public: + enum Attribute { + Elevation, + Azimuth + }; + + enum SatelliteSystem { + Undefined = 0x00, + GPS = 0x01, + GLONASS = 0x02 + }; + + QGeoSatelliteInfo(); + QGeoSatelliteInfo(const QGeoSatelliteInfo &other); + ~QGeoSatelliteInfo(); + + QGeoSatelliteInfo &operator=(const QGeoSatelliteInfo &other); + + bool operator==(const QGeoSatelliteInfo &other) const; + inline bool operator!=(const QGeoSatelliteInfo &other) const { + return !operator==(other); + } + + void setSatelliteSystem(SatelliteSystem system); + SatelliteSystem satelliteSystem() const; + + void setSatelliteIdentifier(int satId); + int satelliteIdentifier() const; + + void setSignalStrength(int signalStrength); + int signalStrength() const; + + void setAttribute(Attribute attribute, qreal value); + qreal attribute(Attribute attribute) const; + void removeAttribute(Attribute attribute); + + bool hasAttribute(Attribute attribute) const; + +private: +#ifndef QT_NO_DEBUG_STREAM + friend Q_POSITIONING_EXPORT QDebug operator<<(QDebug dbg, const QGeoSatelliteInfo &info); +#endif +#ifndef QT_NO_DATASTREAM + friend Q_POSITIONING_EXPORT QDataStream &operator<<(QDataStream &stream, const QGeoSatelliteInfo &info); + friend Q_POSITIONING_EXPORT QDataStream &operator>>(QDataStream &stream, QGeoSatelliteInfo &info); +#endif + QGeoSatelliteInfoPrivate *d; +}; + +#ifndef QT_NO_DEBUG_STREAM +Q_POSITIONING_EXPORT QDebug operator<<(QDebug dbg, const QGeoSatelliteInfo &info); +#endif + +#ifndef QT_NO_DATASTREAM +Q_POSITIONING_EXPORT QDataStream &operator<<(QDataStream &stream, const QGeoSatelliteInfo &info); +Q_POSITIONING_EXPORT QDataStream &operator>>(QDataStream &stream, QGeoSatelliteInfo &info); +#endif + +QT_END_NAMESPACE + +#endif diff --git a/src/QtLocationPlugin/qtlocation/src/positioning/qgeosatelliteinfosource.h b/src/QtLocationPlugin/qtlocation/src/positioning/qgeosatelliteinfosource.h new file mode 100644 index 0000000..07121c7 --- /dev/null +++ b/src/QtLocationPlugin/qtlocation/src/positioning/qgeosatelliteinfosource.h @@ -0,0 +1,92 @@ +/**************************************************************************** +** +** Copyright (C) 2015 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the QtPositioning module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL21$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The Qt Company. For licensing terms +** and conditions see http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 or version 3 as published by the Free +** Software Foundation and appearing in the file LICENSE.LGPLv21 and +** LICENSE.LGPLv3 included in the packaging of this file. Please review the +** following information to ensure the GNU Lesser General Public License +** requirements will be met: https://www.gnu.org/licenses/lgpl.html and +** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** As a special exception, The Qt Company gives you certain additional +** rights. These rights are described in The Qt Company LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ +#ifndef QGEOSATELLITEINFOSOURCE_H +#define QGEOSATELLITEINFOSOURCE_H + +#include + +#include +#include + +QT_BEGIN_NAMESPACE + +class QGeoSatelliteInfoSourcePrivate; +class Q_POSITIONING_EXPORT QGeoSatelliteInfoSource : public QObject +{ + Q_OBJECT + Q_PROPERTY(int updateInterval READ updateInterval WRITE setUpdateInterval) + Q_PROPERTY(int minimumUpdateInterval READ minimumUpdateInterval) + +public: + enum Error { + AccessError = 0, + ClosedError = 1, + NoError = 2, + UnknownSourceError = -1 + }; + Q_ENUM(Error) + + explicit QGeoSatelliteInfoSource(QObject *parent); + virtual ~QGeoSatelliteInfoSource(); + + static QGeoSatelliteInfoSource *createDefaultSource(QObject *parent); + static QGeoSatelliteInfoSource *createSource(const QString &sourceName, QObject *parent); + static QStringList availableSources(); + + QString sourceName() const; + + virtual void setUpdateInterval(int msec); + int updateInterval() const; + virtual int minimumUpdateInterval() const = 0; + virtual Error error() const = 0; + +public Q_SLOTS: + virtual void startUpdates() = 0; + virtual void stopUpdates() = 0; + + virtual void requestUpdate(int timeout = 0) = 0; + +Q_SIGNALS: + void satellitesInViewUpdated(const QList &satellites); + void satellitesInUseUpdated(const QList &satellites); + void requestTimeout(); + void error(QGeoSatelliteInfoSource::Error); + +private: + Q_DISABLE_COPY(QGeoSatelliteInfoSource) + QGeoSatelliteInfoSourcePrivate *d; +}; + +QT_END_NAMESPACE + +#endif diff --git a/src/QtLocationPlugin/qtlocation/src/positioning/qgeoshape.h b/src/QtLocationPlugin/qtlocation/src/positioning/qgeoshape.h new file mode 100644 index 0000000..23d9de2 --- /dev/null +++ b/src/QtLocationPlugin/qtlocation/src/positioning/qgeoshape.h @@ -0,0 +1,106 @@ +/**************************************************************************** +** +** Copyright (C) 2015 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the QtPositioning module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL21$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The Qt Company. For licensing terms +** and conditions see http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 or version 3 as published by the Free +** Software Foundation and appearing in the file LICENSE.LGPLv21 and +** LICENSE.LGPLv3 included in the packaging of this file. Please review the +** following information to ensure the GNU Lesser General Public License +** requirements will be met: https://www.gnu.org/licenses/lgpl.html and +** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** As a special exception, The Qt Company gives you certain additional +** rights. These rights are described in The Qt Company LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QGEOSHAPE_H +#define QGEOSHAPE_H + +#include +#include + +QT_BEGIN_NAMESPACE + +class QDebug; +class QGeoShapePrivate; + +class Q_POSITIONING_EXPORT QGeoShape +{ + Q_GADGET + Q_PROPERTY(ShapeType type READ type) + Q_PROPERTY(bool isValid READ isValid) + Q_PROPERTY(bool isEmpty READ isEmpty) + Q_ENUM(ShapeType) + +public: + QGeoShape(); + QGeoShape(const QGeoShape &other); + ~QGeoShape(); + + enum ShapeType { + UnknownType, + RectangleType, + CircleType + }; + + ShapeType type() const; + + bool isValid() const; + bool isEmpty() const; + Q_INVOKABLE bool contains(const QGeoCoordinate &coordinate) const; + + QGeoCoordinate center() const; + + void extendShape(const QGeoCoordinate &coordinate); + + bool operator==(const QGeoShape &other) const; + bool operator!=(const QGeoShape &other) const; + + QGeoShape &operator=(const QGeoShape &other); + + Q_INVOKABLE QString toString() const; +protected: + QGeoShape(QGeoShapePrivate *d); + + QSharedDataPointer d_ptr; + +private: + inline QGeoShapePrivate *d_func(); + inline const QGeoShapePrivate *d_func() const; +}; + +Q_DECLARE_TYPEINFO(QGeoShape, Q_MOVABLE_TYPE); + +#ifndef QT_NO_DEBUG_STREAM +Q_POSITIONING_EXPORT QDebug operator<<(QDebug, const QGeoShape &); +#endif + +#ifndef QT_NO_DATASTREAM +Q_POSITIONING_EXPORT QDataStream &operator<<(QDataStream &stream, const QGeoShape &shape); +Q_POSITIONING_EXPORT QDataStream &operator>>(QDataStream &stream, QGeoShape &shape); +#endif + +QT_END_NAMESPACE + +Q_DECLARE_METATYPE(QGeoShape) + +#endif + diff --git a/src/QtLocationPlugin/qtlocation/src/positioning/qgeoshape_p.h b/src/QtLocationPlugin/qtlocation/src/positioning/qgeoshape_p.h new file mode 100644 index 0000000..ef6f400 --- /dev/null +++ b/src/QtLocationPlugin/qtlocation/src/positioning/qgeoshape_p.h @@ -0,0 +1,86 @@ +/**************************************************************************** +** +** Copyright (C) 2015 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the QtPositioning module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL21$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The Qt Company. For licensing terms +** and conditions see http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 or version 3 as published by the Free +** Software Foundation and appearing in the file LICENSE.LGPLv21 and +** LICENSE.LGPLv3 included in the packaging of this file. Please review the +** following information to ensure the GNU Lesser General Public License +** requirements will be met: https://www.gnu.org/licenses/lgpl.html and +** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** As a special exception, The Qt Company gives you certain additional +** rights. These rights are described in The Qt Company LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QGEOSHAPE_P_H +#define QGEOSHAPE_P_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists purely as an +// implementation detail. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + +#include + +#include "qgeoshape.h" + +QT_BEGIN_NAMESPACE + +class QGeoShapePrivate : public QSharedData +{ +public: + explicit QGeoShapePrivate(QGeoShape::ShapeType type); + virtual ~QGeoShapePrivate(); + + virtual bool isValid() const = 0; + virtual bool isEmpty() const = 0; + virtual bool contains(const QGeoCoordinate &coordinate) const = 0; + + virtual QGeoCoordinate center() const = 0; + + virtual void extendShape(const QGeoCoordinate &coordinate) = 0; + + virtual QGeoShapePrivate *clone() const = 0; + + virtual bool operator==(const QGeoShapePrivate &other) const; + + QGeoShape::ShapeType type; +}; + +// don't use the copy constructor when detaching from a QSharedDataPointer, use virtual clone() +// call instead. +template <> +Q_INLINE_TEMPLATE QGeoShapePrivate *QSharedDataPointer::clone() +{ + return d->clone(); +} + +QT_END_NAMESPACE + +#endif + diff --git a/src/QtLocationPlugin/qtlocation/src/positioning/qlocationutils_p.h b/src/QtLocationPlugin/qtlocation/src/positioning/qlocationutils_p.h new file mode 100644 index 0000000..8c39463 --- /dev/null +++ b/src/QtLocationPlugin/qtlocation/src/positioning/qlocationutils_p.h @@ -0,0 +1,112 @@ +/**************************************************************************** +** +** Copyright (C) 2015 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the QtPositioning module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL21$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The Qt Company. For licensing terms +** and conditions see http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 or version 3 as published by the Free +** Software Foundation and appearing in the file LICENSE.LGPLv21 and +** LICENSE.LGPLv3 included in the packaging of this file. Please review the +** following information to ensure the GNU Lesser General Public License +** requirements will be met: https://www.gnu.org/licenses/lgpl.html and +** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** As a special exception, The Qt Company gives you certain additional +** rights. These rights are described in The Qt Company LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ +#ifndef QLOCATIONUTILS_P_H +#define QLOCATIONUTILS_P_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists purely as an +// implementation detail. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + +#include + +QT_BEGIN_NAMESPACE +class QTime; +class QByteArray; + +class QGeoPositionInfo; +class QLocationUtils +{ +public: + inline static bool isValidLat(double lat) { + return lat >= -90 && lat <= 90; + } + inline static bool isValidLong(double lng) { + return lng >= -180 && lng <= 180; + } + + inline static double clipLat(double lat) { + if (lat > 90) + lat = 90; + else if (lat < -90) + lat = -90; + return lat; + } + + inline static double wrapLong(double lng) { + if (lng > 180) + lng -= 360; + else if (lng < -180) + lng += 360; + return lng; + } + + /* + Creates a QGeoPositionInfo from a GGA, GLL, RMC, VTG or ZDA sentence. + + Note: + - GGA and GLL sentences have time but not date so the update's + QDateTime object will have an invalid date. + - RMC reports date with a two-digit year so in this case the year + is assumed to be after the year 2000. + */ + Q_AUTOTEST_EXPORT static bool getPosInfoFromNmea(const char *data, int size, + QGeoPositionInfo *info, double uere, + bool *hasFix = 0); + + /* + Returns true if the given NMEA sentence has a valid checksum. + */ + Q_AUTOTEST_EXPORT static bool hasValidNmeaChecksum(const char *data, int size); + + /* + Returns time from a string in hhmmss or hhmmss.z+ format. + */ + Q_AUTOTEST_EXPORT static bool getNmeaTime(const QByteArray &bytes, QTime *time); + + /* + Accepts for example ("2734.7964", 'S', "15306.0124", 'E') and returns the + lat-long values. Fails if lat or long fail isValidLat() or isValidLong(). + */ + Q_AUTOTEST_EXPORT static bool getNmeaLatLong(const QByteArray &latString, char latDirection, const QByteArray &lngString, char lngDirection, double *lat, double *lon); +}; + +QT_END_NAMESPACE + +#endif diff --git a/src/QtLocationPlugin/qtlocation/src/positioning/qnmeapositioninfosource.h b/src/QtLocationPlugin/qtlocation/src/positioning/qnmeapositioninfosource.h new file mode 100644 index 0000000..9bb67c9 --- /dev/null +++ b/src/QtLocationPlugin/qtlocation/src/positioning/qnmeapositioninfosource.h @@ -0,0 +1,91 @@ +/**************************************************************************** +** +** Copyright (C) 2015 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the QtPositioning module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL21$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The Qt Company. For licensing terms +** and conditions see http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 or version 3 as published by the Free +** Software Foundation and appearing in the file LICENSE.LGPLv21 and +** LICENSE.LGPLv3 included in the packaging of this file. Please review the +** following information to ensure the GNU Lesser General Public License +** requirements will be met: https://www.gnu.org/licenses/lgpl.html and +** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** As a special exception, The Qt Company gives you certain additional +** rights. These rights are described in The Qt Company LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ +#ifndef QNMEAPOSITIONINFOSOURCE_H +#define QNMEAPOSITIONINFOSOURCE_H + +#include + +QT_BEGIN_NAMESPACE + +class QIODevice; + +class QNmeaPositionInfoSourcePrivate; +class Q_POSITIONING_EXPORT QNmeaPositionInfoSource : public QGeoPositionInfoSource +{ + Q_OBJECT +public: + enum UpdateMode { + RealTimeMode = 1, + SimulationMode + }; + + explicit QNmeaPositionInfoSource(UpdateMode updateMode, QObject *parent = 0); + ~QNmeaPositionInfoSource(); + + void setUserEquivalentRangeError(double uere); + double userEquivalentRangeError() const; + + UpdateMode updateMode() const; + + void setDevice(QIODevice *source); + QIODevice *device() const; + + void setUpdateInterval(int msec); + + QGeoPositionInfo lastKnownPosition(bool fromSatellitePositioningMethodsOnly = false) const; + PositioningMethods supportedPositioningMethods() const; + int minimumUpdateInterval() const; + Error error() const; + + +public Q_SLOTS: + void startUpdates(); + void stopUpdates(); + void requestUpdate(int timeout = 0); + +protected: + virtual bool parsePosInfoFromNmeaData(const char *data, + int size, + QGeoPositionInfo *posInfo, + bool *hasFix); + +private: + Q_DISABLE_COPY(QNmeaPositionInfoSource) + friend class QNmeaPositionInfoSourcePrivate; + QNmeaPositionInfoSourcePrivate *d; + void setError(QGeoPositionInfoSource::Error positionError); +}; + +QT_END_NAMESPACE + +#endif diff --git a/src/QtLocationPlugin/qtlocation/src/positioning/qnmeapositioninfosource_p.h b/src/QtLocationPlugin/qtlocation/src/positioning/qnmeapositioninfosource_p.h new file mode 100644 index 0000000..069f9d2 --- /dev/null +++ b/src/QtLocationPlugin/qtlocation/src/positioning/qnmeapositioninfosource_p.h @@ -0,0 +1,171 @@ +/**************************************************************************** +** +** Copyright (C) 2015 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the QtPositioning module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL21$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The Qt Company. For licensing terms +** and conditions see http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 or version 3 as published by the Free +** Software Foundation and appearing in the file LICENSE.LGPLv21 and +** LICENSE.LGPLv3 included in the packaging of this file. Please review the +** following information to ensure the GNU Lesser General Public License +** requirements will be met: https://www.gnu.org/licenses/lgpl.html and +** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** As a special exception, The Qt Company gives you certain additional +** rights. These rights are described in The Qt Company LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ +#ifndef QNMEAPOSITIONINFOSOURCE_P_H +#define QNMEAPOSITIONINFOSOURCE_P_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists purely as an +// implementation detail. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + +#include "qnmeapositioninfosource.h" +#include "qgeopositioninfo.h" + +#include +#include +#include + +QT_BEGIN_NAMESPACE + +class QBasicTimer; +class QTimerEvent; +class QTimer; + +class QNmeaReader; +struct QPendingGeoPositionInfo +{ + QGeoPositionInfo info; + bool hasFix; +}; + + +class QNmeaPositionInfoSourcePrivate : public QObject +{ + Q_OBJECT +public: + QNmeaPositionInfoSourcePrivate(QNmeaPositionInfoSource *parent, QNmeaPositionInfoSource::UpdateMode updateMode); + ~QNmeaPositionInfoSourcePrivate(); + + void startUpdates(); + void stopUpdates(); + void requestUpdate(int msec); + + bool parsePosInfoFromNmeaData(const char *data, + int size, + QGeoPositionInfo *posInfo, + bool *hasFix); + + void notifyNewUpdate(QGeoPositionInfo *update, bool fixStatus); + + QNmeaPositionInfoSource::UpdateMode m_updateMode; + QPointer m_device; + QGeoPositionInfo m_lastUpdate; + bool m_invokedStart; + QGeoPositionInfoSource::Error m_positionError; + double m_userEquivalentRangeError; + +public Q_SLOTS: + void readyRead(); + +protected: + void timerEvent(QTimerEvent *event); + +private Q_SLOTS: + void emitPendingUpdate(); + void sourceDataClosed(); + void updateRequestTimeout(); + +private: + bool openSourceDevice(); + bool initialize(); + void prepareSourceDevice(); + void emitUpdated(const QGeoPositionInfo &update); + + QNmeaPositionInfoSource *m_source; + QNmeaReader *m_nmeaReader; + QBasicTimer *m_updateTimer; + QGeoPositionInfo m_pendingUpdate; + QDate m_currentDate; + QTimer *m_requestTimer; + qreal m_horizontalAccuracy; + qreal m_verticalAccuracy; + bool m_noUpdateLastInterval; + bool m_updateTimeoutSent; + bool m_connectedReadyRead; +}; + + +class QNmeaReader +{ +public: + explicit QNmeaReader(QNmeaPositionInfoSourcePrivate *sourcePrivate) + : m_proxy(sourcePrivate) {} + virtual ~QNmeaReader() {} + + virtual void readAvailableData() = 0; + +protected: + QNmeaPositionInfoSourcePrivate *m_proxy; +}; + + +class QNmeaRealTimeReader : public QNmeaReader +{ +public: + explicit QNmeaRealTimeReader(QNmeaPositionInfoSourcePrivate *sourcePrivate); + virtual void readAvailableData(); +}; + + +class QNmeaSimulatedReader : public QObject, public QNmeaReader +{ + Q_OBJECT +public: + explicit QNmeaSimulatedReader(QNmeaPositionInfoSourcePrivate *sourcePrivate); + ~QNmeaSimulatedReader(); + virtual void readAvailableData(); + +protected: + virtual void timerEvent(QTimerEvent *event); + +private Q_SLOTS: + void simulatePendingUpdate(); + +private: + bool setFirstDateTime(); + void processNextSentence(); + + QQueue m_pendingUpdates; + int m_currTimerId; + bool m_hasValidDateTime; +}; + +QT_END_NAMESPACE + +#endif diff --git a/src/QtLocationPlugin/qtlocation/src/positioning/qpositioningglobal.h b/src/QtLocationPlugin/qtlocation/src/positioning/qpositioningglobal.h new file mode 100644 index 0000000..6e1e65e --- /dev/null +++ b/src/QtLocationPlugin/qtlocation/src/positioning/qpositioningglobal.h @@ -0,0 +1,54 @@ +/**************************************************************************** +** +** Copyright (C) 2015 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the QtPositioning module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL21$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The Qt Company. For licensing terms +** and conditions see http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 or version 3 as published by the Free +** Software Foundation and appearing in the file LICENSE.LGPLv21 and +** LICENSE.LGPLv3 included in the packaging of this file. Please review the +** following information to ensure the GNU Lesser General Public License +** requirements will be met: https://www.gnu.org/licenses/lgpl.html and +** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** As a special exception, The Qt Company gives you certain additional +** rights. These rights are described in The Qt Company LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ +#ifndef QPOSITIONINGGLOBAL_H +#define QPOSITIONINGGLOBAL_H + +#include + +QT_BEGIN_NAMESPACE + +#ifndef QT_STATIC +# if defined(QT_BUILD_POSITIONING_LIB) +# define Q_POSITIONING_EXPORT Q_DECL_EXPORT +# else +# define Q_POSITIONING_EXPORT Q_DECL_IMPORT +# endif +#else +# define Q_POSITIONING_EXPORT +#endif + + +QT_END_NAMESPACE + +#endif // QPOSITIONINGGLOBAL_H + diff --git a/src/Settings/App.SettingsGroup.json b/src/Settings/App.SettingsGroup.json index fe58bb3..115e321 100644 --- a/src/Settings/App.SettingsGroup.json +++ b/src/Settings/App.SettingsGroup.json @@ -174,18 +174,10 @@ { "name": "savePath", "shortDesc": "Application save directory", - "longDesc": "Directory to which all data files are saved/loaded from", + "longDesc": "Directory to which all data files are saved/loaded from", "type": "string", "default": "" }, -{ - "name": "androidSaveToSDCard", - "shortDesc": "Save to SD card", - "longDesc": "Application data is saved to the sd card", - "type": "bool", - "default": false, - "qgcRebootRequired": true -}, { "name": "userBrandImageIndoor", "shortDesc": "User-selected brand image", @@ -288,7 +280,7 @@ "name": "qLocaleLanguage", "shortDesc": "Language", "type": "uint32", - "enumStrings": "System,Azerbaijani (Azerbaijani),български (Bulgarian),中文 (Chinese),Nederlands (Dutch),English,Suomi (Finnish),Français (French),Deutsche (German),Ελληνικά (Greek), עברית (Hebrew),Italiano (Italian),日本語 (Japanese),한국어 (Korean),Norsk (Norwegian),Polskie (Polish),Português (Portuguese),Pусский (Russian),Español (Spanish),Svenska (Swedish),Türk (Turkish)", + "enumStrings": "System,Azerbaijani (Azerbaijani),български (Bulgarian),中文 (Chinese),Nederlands (Dutch),English,Suomi (Finnish),Français (French),Deutsche (German),Ελληνικά (Greek), עברית (Hebrew),Italiano (Italian),日本人 (Japanese),한국어 (Korean),Norsk (Norwegian),Polskie (Polish),Português (Portuguese),Pусский (Russian),Español (Spanish),Svenska (Swedish),Türk (Turkish)", "enumValues": "0,12,20,25,30,31,36,37,42,43,48,58,59,66,85,90,91,96,111,114,125", "comment": "enumValues uses Qt QLocale::Language values", "default": 0 @@ -333,13 +325,6 @@ "longDesc": "Host name to forward mavlink to. i.e: localhost:14445", "type": "string", "default": "localhost:14445" -}, -{ - "name": "forwardMavlinkAPMSupportHostName", - "shortDesc": "Ardupilot Support Host name", - "longDesc": "Ardupilot Support server to forward mavlink to. i.e: support.ardupilot.org:xxxx", - "type": "string", - "default": "support.ardupilot.org:xxxx" } ] } diff --git a/src/Settings/AppSettings.cc b/src/Settings/AppSettings.cc index 6da0652..c5b5956 100644 --- a/src/Settings/AppSettings.cc +++ b/src/Settings/AppSettings.cc @@ -12,10 +12,6 @@ #include "QGCApplication.h" #include "ParameterManager.h" -#ifdef __android__ -#include "AndroidInterface.h" -#endif - #include #include #include @@ -38,7 +34,6 @@ const char* AppSettings::logDirectory = QT_TRANSLATE_NOOP("AppSettin const char* AppSettings::videoDirectory = QT_TRANSLATE_NOOP("AppSettings", "Video"); const char* AppSettings::photoDirectory = QT_TRANSLATE_NOOP("AppSettings", "Photo"); const char* AppSettings::crashDirectory = QT_TRANSLATE_NOOP("AppSettings", "CrashLogs"); -const char* AppSettings::customActionsDirectory = QT_TRANSLATE_NOOP("AppSettings", "CustomActions"); // Release languages are 90%+ complete QList AppSettings::_rgReleaseLanguages = { @@ -99,26 +94,10 @@ DECLARE_SETTINGGROUP(App, "") QDir rootDir = QDir(QStandardPaths::writableLocation(QStandardPaths::DocumentsLocation)); savePathFact->setRawValue(rootDir.absolutePath()); #else - QString rootDirPath; - #ifdef __android__ - if (androidSaveToSDCard()->rawValue().toBool()) { - rootDirPath = AndroidInterface::getSDCardPath(); - qDebug() << "AndroidInterface::getSDCardPath();" << rootDirPath; - if (rootDirPath.isEmpty() || !QDir(rootDirPath).exists()) { - rootDirPath.clear(); - qgcApp()->showAppMessage(tr("Save to SD card specified for application data. But no SD card present. Using internal storage.")); - } else if (!QFileInfo(rootDirPath).isWritable()) { - rootDirPath.clear(); - qgcApp()->showAppMessage(tr("Save to SD card specified for application data. But SD card is write protected. Using internal storage.")); - } - } - #endif - if (rootDirPath.isEmpty()) { - rootDirPath = QStandardPaths::writableLocation(QStandardPaths::GenericDataLocation); - } - savePathFact->setRawValue(QDir(rootDirPath).filePath(appName)); + QDir rootDir = QDir(QStandardPaths::writableLocation(QStandardPaths::GenericDataLocation)); + savePathFact->setRawValue(rootDir.filePath(appName)); #endif - savePathFact->setVisible(false); + savePathFact->setVisible(false); #else QDir rootDir = QDir(QStandardPaths::writableLocation(QStandardPaths::DocumentsLocation)); savePathFact->setRawValue(rootDir.filePath(appName)); @@ -148,7 +127,6 @@ DECLARE_SETTINGSFACT(AppSettings, virtualJoystickAutoCenterThrottle) DECLARE_SETTINGSFACT(AppSettings, appFontPointSize) DECLARE_SETTINGSFACT(AppSettings, showLargeCompass) DECLARE_SETTINGSFACT(AppSettings, savePath) -DECLARE_SETTINGSFACT(AppSettings, androidSaveToSDCard) DECLARE_SETTINGSFACT(AppSettings, useChecklist) DECLARE_SETTINGSFACT(AppSettings, enforceChecklist) DECLARE_SETTINGSFACT(AppSettings, mapboxToken) @@ -170,7 +148,6 @@ DECLARE_SETTINGSFACT(AppSettings, saveCsvTelemetry) DECLARE_SETTINGSFACT(AppSettings, firstRunPromptIdsShown) DECLARE_SETTINGSFACT(AppSettings, forwardMavlink) DECLARE_SETTINGSFACT(AppSettings, forwardMavlinkHostName) -DECLARE_SETTINGSFACT(AppSettings, forwardMavlinkAPMSupportHostName) DECLARE_SETTINGSFACT_NO_FUNC(AppSettings, indoorPalette) { @@ -240,7 +217,6 @@ void AppSettings::_checkSavePathDirectories(void) savePathDir.mkdir(videoDirectory); savePathDir.mkdir(photoDirectory); savePathDir.mkdir(crashDirectory); - savePathDir.mkdir(customActionsDirectory); } } @@ -319,16 +295,6 @@ QString AppSettings::crashSavePath(void) return QString(); } -QString AppSettings::customActionsSavePath(void) -{ - QString path = savePath()->rawValue().toString(); - if (!path.isEmpty() && QDir(path).exists()) { - QDir dir(path); - return dir.filePath(customActionsDirectory); - } - return QString(); -} - QList AppSettings::firstRunPromptsIdsVariantToList(const QVariant& firstRunPromptIds) { QList rgIds; @@ -369,7 +335,7 @@ QLocale::Language AppSettings::_qLocaleLanguageID(void) // We need to convert to the new settings key/values #if 0 // Old vales - "enumStrings": "System,български (Bulgarian),中文 (Chinese),Nederlands (Dutch),English,Suomi (Finnish),Français (French),Deutsche (German),Ελληνικά (Greek), עברית (Hebrew),Italiano (Italian),日本語 (Japanese),한국어 (Korean),Norsk (Norwegian),Polskie (Polish),Português (Portuguese),Pусский (Russian),Español (Spanish),Svenska (Swedish),Türk (Turkish),Azerbaijani (Azerbaijani)", + "enumStrings": "System,български (Bulgarian),中文 (Chinese),Nederlands (Dutch),English,Suomi (Finnish),Français (French),Deutsche (German),Ελληνικά (Greek), עברית (Hebrew),Italiano (Italian),日本人 (Japanese),한국어 (Korean),Norsk (Norwegian),Polskie (Polish),Português (Portuguese),Pусский (Russian),Español (Spanish),Svenska (Swedish),Türk (Turkish),Azerbaijani (Azerbaijani)", "enumValues": "0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20", #endif static QList rgNewValues = { 0,20,25,30,31,36,37,42,43,48,58,59,66,85,90,91,96,111,114,125,15 }; diff --git a/src/Settings/AppSettings.h b/src/Settings/AppSettings.h index c2e1901..0dea191 100644 --- a/src/Settings/AppSettings.h +++ b/src/Settings/AppSettings.h @@ -44,7 +44,6 @@ public: DEFINE_SETTINGFACT(indoorPalette) DEFINE_SETTINGFACT(showLargeCompass) DEFINE_SETTINGFACT(savePath) - DEFINE_SETTINGFACT(androidSaveToSDCard) DEFINE_SETTINGFACT(useChecklist) DEFINE_SETTINGFACT(enforceChecklist) DEFINE_SETTINGFACT(mapboxToken) @@ -66,20 +65,18 @@ public: DEFINE_SETTINGFACT(firstRunPromptIdsShown) DEFINE_SETTINGFACT(forwardMavlink) DEFINE_SETTINGFACT(forwardMavlinkHostName) - DEFINE_SETTINGFACT(forwardMavlinkAPMSupportHostName) // Although this is a global setting it only affects ArduPilot vehicle since PX4 automatically starts the stream from the vehicle side DEFINE_SETTINGFACT(apmStartMavlinkStreams) - Q_PROPERTY(QString missionSavePath READ missionSavePath NOTIFY savePathsChanged) - Q_PROPERTY(QString parameterSavePath READ parameterSavePath NOTIFY savePathsChanged) - Q_PROPERTY(QString telemetrySavePath READ telemetrySavePath NOTIFY savePathsChanged) - Q_PROPERTY(QString logSavePath READ logSavePath NOTIFY savePathsChanged) - Q_PROPERTY(QString videoSavePath READ videoSavePath NOTIFY savePathsChanged) - Q_PROPERTY(QString photoSavePath READ photoSavePath NOTIFY savePathsChanged) - Q_PROPERTY(QString crashSavePath READ crashSavePath NOTIFY savePathsChanged) - Q_PROPERTY(QString customActionsSavePath READ customActionsSavePath NOTIFY savePathsChanged) + Q_PROPERTY(QString missionSavePath READ missionSavePath NOTIFY savePathsChanged) + Q_PROPERTY(QString parameterSavePath READ parameterSavePath NOTIFY savePathsChanged) + Q_PROPERTY(QString telemetrySavePath READ telemetrySavePath NOTIFY savePathsChanged) + Q_PROPERTY(QString logSavePath READ logSavePath NOTIFY savePathsChanged) + Q_PROPERTY(QString videoSavePath READ videoSavePath NOTIFY savePathsChanged) + Q_PROPERTY(QString photoSavePath READ photoSavePath NOTIFY savePathsChanged) + Q_PROPERTY(QString crashSavePath READ crashSavePath NOTIFY savePathsChanged) Q_PROPERTY(QString planFileExtension MEMBER planFileExtension CONSTANT) Q_PROPERTY(QString missionFileExtension MEMBER missionFileExtension CONSTANT) @@ -90,14 +87,13 @@ public: Q_PROPERTY(QString shpFileExtension MEMBER shpFileExtension CONSTANT) Q_PROPERTY(QString logFileExtension MEMBER logFileExtension CONSTANT) - QString missionSavePath (); - QString parameterSavePath (); - QString telemetrySavePath (); - QString logSavePath (); - QString videoSavePath (); - QString photoSavePath (); - QString crashSavePath (); - QString customActionsSavePath (); + QString missionSavePath (); + QString parameterSavePath (); + QString telemetrySavePath (); + QString logSavePath (); + QString videoSavePath (); + QString photoSavePath (); + QString crashSavePath (); // Helper methods for working with firstRunPromptIds QVariant settings string list static QList firstRunPromptsIdsVariantToList (const QVariant& firstRunPromptIds); @@ -124,7 +120,6 @@ public: static const char* videoDirectory; static const char* photoDirectory; static const char* crashDirectory; - static const char* customActionsDirectory; // Returns the current qLocaleLanguage setting bypassing the standard SettingsGroup path. This should only be used // by QGCApplication::setLanguage to query the language setting as early in the boot process as possible. diff --git a/src/Settings/CMakeLists.txt b/src/Settings/CMakeLists.txt index c06f941..55abf6a 100644 --- a/src/Settings/CMakeLists.txt +++ b/src/Settings/CMakeLists.txt @@ -30,8 +30,6 @@ add_library(Settings UnitsSettings.h VideoSettings.cc VideoSettings.h - RemoteIDSettings.h - RemoteIDSettings.cc ) target_link_libraries(Settings diff --git a/src/Settings/FlyView.SettingsGroup.json b/src/Settings/FlyView.SettingsGroup.json index e1a82f0..c5bbeb5 100644 --- a/src/Settings/FlyView.SettingsGroup.json +++ b/src/Settings/FlyView.SettingsGroup.json @@ -66,25 +66,6 @@ "units": "m", "default": 1000, "min": 1 -}, -{ - "name": "updateHomePosition", - "shortDesc": "Send updated GCS' home position to autopilot in case of change of the home position", - "type": "bool", - "default": false -}, -{ - "name": "enableCustomActions", - "shortDesc": "Enable Custom Actions", - "type": "bool", - "default": false -}, -{ - "name": "customActionDefinitions", - "shortDesc": "Custom Action Definitions", - "longDesc": "File that defines custom actions to send connected vehicle", - "type": "string", - "default": "" } ] } diff --git a/src/Settings/FlyViewSettings.cc b/src/Settings/FlyViewSettings.cc index c88dd0d..5b8fb41 100644 --- a/src/Settings/FlyViewSettings.cc +++ b/src/Settings/FlyViewSettings.cc @@ -27,7 +27,3 @@ DECLARE_SETTINGSFACT(FlyViewSettings, maxGoToLocationDistance) DECLARE_SETTINGSFACT(FlyViewSettings, keepMapCenteredOnVehicle) DECLARE_SETTINGSFACT(FlyViewSettings, showSimpleCameraControl) DECLARE_SETTINGSFACT(FlyViewSettings, showObstacleDistanceOverlay) -DECLARE_SETTINGSFACT(FlyViewSettings, updateHomePosition) -DECLARE_SETTINGSFACT(FlyViewSettings, enableCustomActions) -DECLARE_SETTINGSFACT(FlyViewSettings, customActionDefinitions) - diff --git a/src/Settings/FlyViewSettings.h b/src/Settings/FlyViewSettings.h index f9eeb2c..237ad32 100644 --- a/src/Settings/FlyViewSettings.h +++ b/src/Settings/FlyViewSettings.h @@ -29,7 +29,4 @@ public: DEFINE_SETTINGFACT(keepMapCenteredOnVehicle) DEFINE_SETTINGFACT(showSimpleCameraControl) DEFINE_SETTINGFACT(showObstacleDistanceOverlay) - DEFINE_SETTINGFACT(updateHomePosition) - DEFINE_SETTINGFACT(enableCustomActions) - DEFINE_SETTINGFACT(customActionDefinitions) }; diff --git a/src/Settings/RemoteID.SettingsGroup.json b/src/Settings/RemoteID.SettingsGroup.json deleted file mode 100644 index 4e23486..0000000 --- a/src/Settings/RemoteID.SettingsGroup.json +++ /dev/null @@ -1,169 +0,0 @@ -{ - "version": 1, - "fileType": "FactMetaData", - "QGC.MetaData.Facts": -[ -{ - "name": "enable", - "shortDesc": "Show Drone ID settings page when enabled", - "type": "bool", - "default": false -}, -{ - "name": "operatorID", - "shortDesc": "Operator ID", - "longDesc": "Operator ID. Maximum 20 characters.", - "type": "string", - "default": "" -}, -{ - "name": "operatorIDType", - "shortDesc": "Operator ID type", - "type": "uint8", - "enumStrings": "CAA", - "enumValues": "0", - "default": 0 -}, -{ - "name": "sendOperatorID", - "shortDesc": "Send Operator ID", - "longDesc": "When enabled, sends operator ID message", - "type": "bool", - "default": false -}, -{ - "name": "selfIDFree", - "shortDesc": "Self ID", - "longDesc": "Optional plain text for operator to specify operations data (Free Text). Maximum 23 characters.", - "type": "string", - "default": "" -}, -{ - "name": "selfIDEmergency", - "shortDesc": "Self ID", - "longDesc": "Optional plain text for operator to specify operations data (Emergency Text). Maximum 23 characters.", - "type": "string", - "default": "Pilot Emergency Status" -}, -{ - "name": "selfIDExtended", - "shortDesc": "Self ID", - "longDesc": "Optional plain text for operator to specify operations data (Extended Text). Maximum 23 characters.", - "type": "string", - "default": "" -}, -{ - "name": "selfIDType", - "shortDesc": "Self ID type", - "type": "uint8", - "enumStrings": "Free Text,Emergency,Extended Status", - "enumValues": "0,1,2", - "default": 0 -}, -{ - "name": "sendSelfID", - "shortDesc": "Send Self ID", - "longDesc": "When enabled, sends self ID message", - "type": "bool", - "default": false -}, -{ - "name": "basicID", - "shortDesc": "Basic ID", - "type": "string", - "default": "" -}, -{ - "name": "basicIDType", - "shortDesc": "Basic ID Type", - "type": "uint8", - "enumStrings": "None, SerialNumber(ANSI/CTA-2063), CAA, UTM(RFC4122), Specific", - "enumValues": "0,1,2,3,4", - "default": 2 -}, -{ - "name": "basicIDUaType", - "shortDesc": "UA type", - "type": "uint8", - "enumStrings": "Undefined,Airplane/FixedWing,Helicopter/Multirrotor, Gyroplane, VTOL, Ornithopter, Glider, Kite, Free Ballon, Captive Ballon, Airship, Parachute, Rocket, Tethered powered aircraft, Ground Obstacle, Other", - "enumValues": "0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15", - "default": 0 -}, -{ - "name": "sendBasicID", - "shortDesc": "Send Basic ID", - "longDesc": "When enabled, sends basic ID message", - "type": "bool", - "default": false -}, -{ - "name": "region", - "shortDesc": "Region of operation", - "longDesc": "The region of operation the mission will take place in", - "type": "uint8", - "enumStrings": "FAA,EU", - "enumValues": "0,1", - "default": 0 -}, -{ - "name": "locationType", - "shortDesc": "Location Type", - "longDesc": "Operator location Type", - "type": "uint8", - "enumStrings": "Takeoff(Not Supported),Live GNNS, Fixed", - "enumValues": "0,1,2", - "default": 1 -}, -{ - "name": "latitudeFixed", - "shortDesc": "Latitude Fixed", - "longDesc": "Fixed latitude to send on SYSTEM message", - "type": "double", - "decimalPlaces":7, - "default": 0 -}, -{ - "name": "longitudeFixed", - "shortDesc": "Longitude Fixed", - "longDesc": "Fixed Longitude to send on SYSTEM message", - "type": "double", - "decimalPlaces":7, - "default": 0 -}, -{ - "name": "altitudeFixed", - "shortDesc": "Altitude Fixed", - "longDesc": "Fixed Altitude to send on SYSTEM message", - "type": "double", - "decimalPlaces":7, - "default": 0 -}, -{ - "name": "classificationType", - "shortDesc": "Classification Type", - "longDesc": "Classification Type of UA", - "type": "uint8", - "enumStrings": "Undefined,EU", - "enumValues": "0,1", - "default": 0 -}, -{ - "name": "categoryEU", - "shortDesc": "Category EU", - "longDesc": "Category of the UAS in the EU region", - "type": "uint8", - "enumStrings": "Undeclared,Open, Specific, Certified", - "enumValues": "0,1,2,3", - "default": 0 -}, -{ - "name": "classEU", - "shortDesc": "Class EU", - "longDesc": "Class of the UAS in the EU region", - "type": "uint8", - "enumStrings": "Undeclared,Class 0, Class 1, Class 2, Class 3, Class 4, Class 5, Class 6", - "enumValues": "0,1,2,3,4,5,6,7", - "default": 0 -} -] -} \ No newline at end of file diff --git a/src/Settings/RemoteIDSettings.cc b/src/Settings/RemoteIDSettings.cc deleted file mode 100644 index ef405b7..0000000 --- a/src/Settings/RemoteIDSettings.cc +++ /dev/null @@ -1,40 +0,0 @@ -/**************************************************************************** - * - * (c) 2009-2022 QGROUNDCONTROL PROJECT - * - * QGroundControl is licensed according to the terms in the file - * COPYING.md in the root of the source code directory. - * - ****************************************************************************/ - -#include "RemoteIDSettings.h" - -#include -#include - -DECLARE_SETTINGGROUP(RemoteID, "RemoteID") -{ - qmlRegisterUncreatableType("QGroundControl.SettingsManager", 1, 0, "RemoteIDSettings", "Reference only"); \ -} - -DECLARE_SETTINGSFACT(RemoteIDSettings, enable) -DECLARE_SETTINGSFACT(RemoteIDSettings, operatorID) -DECLARE_SETTINGSFACT(RemoteIDSettings, operatorIDType) -DECLARE_SETTINGSFACT(RemoteIDSettings, sendOperatorID) -DECLARE_SETTINGSFACT(RemoteIDSettings, selfIDFree) -DECLARE_SETTINGSFACT(RemoteIDSettings, selfIDEmergency) -DECLARE_SETTINGSFACT(RemoteIDSettings, selfIDExtended) -DECLARE_SETTINGSFACT(RemoteIDSettings, selfIDType) -DECLARE_SETTINGSFACT(RemoteIDSettings, sendSelfID) -DECLARE_SETTINGSFACT(RemoteIDSettings, basicID) -DECLARE_SETTINGSFACT(RemoteIDSettings, basicIDType) -DECLARE_SETTINGSFACT(RemoteIDSettings, basicIDUaType) -DECLARE_SETTINGSFACT(RemoteIDSettings, sendBasicID) -DECLARE_SETTINGSFACT(RemoteIDSettings, region) -DECLARE_SETTINGSFACT(RemoteIDSettings, locationType) -DECLARE_SETTINGSFACT(RemoteIDSettings, latitudeFixed) -DECLARE_SETTINGSFACT(RemoteIDSettings, longitudeFixed) -DECLARE_SETTINGSFACT(RemoteIDSettings, altitudeFixed) -DECLARE_SETTINGSFACT(RemoteIDSettings, classificationType) -DECLARE_SETTINGSFACT(RemoteIDSettings, categoryEU) -DECLARE_SETTINGSFACT(RemoteIDSettings, classEU) \ No newline at end of file diff --git a/src/Settings/RemoteIDSettings.h b/src/Settings/RemoteIDSettings.h deleted file mode 100644 index 28e8d32..0000000 --- a/src/Settings/RemoteIDSettings.h +++ /dev/null @@ -1,42 +0,0 @@ -/**************************************************************************** - * - * (c) 2009-2022 QGROUNDCONTROL PROJECT - * - * QGroundControl is licensed according to the terms in the file - * COPYING.md in the root of the source code directory. - * - ****************************************************************************/ - -#pragma once - -#include "SettingsGroup.h" - -class RemoteIDSettings : public SettingsGroup -{ - Q_OBJECT -public: - RemoteIDSettings(QObject* parent = nullptr); - DEFINE_SETTING_NAME_GROUP() - - DEFINE_SETTINGFACT(enable) - DEFINE_SETTINGFACT(operatorID) - DEFINE_SETTINGFACT(operatorIDType) - DEFINE_SETTINGFACT(sendOperatorID) - DEFINE_SETTINGFACT(selfIDFree) - DEFINE_SETTINGFACT(selfIDEmergency) - DEFINE_SETTINGFACT(selfIDExtended) - DEFINE_SETTINGFACT(selfIDType) - DEFINE_SETTINGFACT(sendSelfID) - DEFINE_SETTINGFACT(basicID) - DEFINE_SETTINGFACT(basicIDType) - DEFINE_SETTINGFACT(basicIDUaType) - DEFINE_SETTINGFACT(sendBasicID) - DEFINE_SETTINGFACT(region) - DEFINE_SETTINGFACT(locationType) - DEFINE_SETTINGFACT(latitudeFixed) - DEFINE_SETTINGFACT(longitudeFixed) - DEFINE_SETTINGFACT(altitudeFixed) - DEFINE_SETTINGFACT(classificationType) - DEFINE_SETTINGFACT(categoryEU) - DEFINE_SETTINGFACT(classEU) -}; \ No newline at end of file diff --git a/src/Settings/SettingsManager.cc b/src/Settings/SettingsManager.cc index 41d8ce9..e0a1a4a 100644 --- a/src/Settings/SettingsManager.cc +++ b/src/Settings/SettingsManager.cc @@ -14,6 +14,9 @@ SettingsManager::SettingsManager(QGCApplication* app, QGCToolbox* toolbox) : QGCTool(app, toolbox) +#if defined(QGC_AIRMAP_ENABLED) + , _airMapSettings (nullptr) +#endif , _appSettings (nullptr) , _unitsSettings (nullptr) , _autoConnectSettings (nullptr) @@ -29,7 +32,6 @@ SettingsManager::SettingsManager(QGCApplication* app, QGCToolbox* toolbox) #if !defined(NO_ARDUPILOT_DIALECT) , _apmMavlinkStreamRateSettings (nullptr) #endif - , _remoteIDSettings (nullptr) { } @@ -55,5 +57,7 @@ void SettingsManager::setToolbox(QGCToolbox *toolbox) #if !defined(NO_ARDUPILOT_DIALECT) _apmMavlinkStreamRateSettings = new APMMavlinkStreamRateSettings(this); #endif - _remoteIDSettings = new RemoteIDSettings (this); +#if defined(QGC_AIRMAP_ENABLED) + _airMapSettings = new AirMapSettings (this); +#endif } diff --git a/src/Settings/SettingsManager.h b/src/Settings/SettingsManager.h index 3e8044a..dcaba86 100644 --- a/src/Settings/SettingsManager.h +++ b/src/Settings/SettingsManager.h @@ -27,8 +27,10 @@ #include "APMMavlinkStreamRateSettings.h" #include "FirmwareUpgradeSettings.h" #include "ADSBVehicleManagerSettings.h" +#if defined(QGC_AIRMAP_ENABLED) +#include "AirMapSettings.h" +#endif #include -#include "RemoteIDSettings.h" /// Provides access to all app settings class SettingsManager : public QGCTool @@ -38,6 +40,9 @@ class SettingsManager : public QGCTool public: SettingsManager(QGCApplication* app, QGCToolbox* toolbox); +#if defined(QGC_AIRMAP_ENABLED) + Q_PROPERTY(QObject* airMapSettings READ airMapSettings CONSTANT) +#endif Q_PROPERTY(QObject* appSettings READ appSettings CONSTANT) Q_PROPERTY(QObject* unitsSettings READ unitsSettings CONSTANT) Q_PROPERTY(QObject* autoConnectSettings READ autoConnectSettings CONSTANT) @@ -53,10 +58,12 @@ public: #if !defined(NO_ARDUPILOT_DIALECT) Q_PROPERTY(QObject* apmMavlinkStreamRateSettings READ apmMavlinkStreamRateSettings CONSTANT) #endif - Q_PROPERTY(QObject* remoteIDSettings READ remoteIDSettings CONSTANT) // Override from QGCTool virtual void setToolbox(QGCToolbox *toolbox); +#if defined(QGC_AIRMAP_ENABLED) + AirMapSettings* airMapSettings (void) { return _airMapSettings; } +#endif AppSettings* appSettings (void) { return _appSettings; } UnitsSettings* unitsSettings (void) { return _unitsSettings; } AutoConnectSettings* autoConnectSettings (void) { return _autoConnectSettings; } @@ -72,8 +79,10 @@ public: #if !defined(NO_ARDUPILOT_DIALECT) APMMavlinkStreamRateSettings* apmMavlinkStreamRateSettings(void) { return _apmMavlinkStreamRateSettings; } #endif - RemoteIDSettings* remoteIDSettings (void) { return _remoteIDSettings; } private: +#if defined(QGC_AIRMAP_ENABLED) + AirMapSettings* _airMapSettings; +#endif AppSettings* _appSettings; UnitsSettings* _unitsSettings; AutoConnectSettings* _autoConnectSettings; @@ -89,7 +98,6 @@ private: #if !defined(NO_ARDUPILOT_DIALECT) APMMavlinkStreamRateSettings* _apmMavlinkStreamRateSettings; #endif - RemoteIDSettings* _remoteIDSettings; }; #endif diff --git a/src/Settings/UnitsSettings.cc b/src/Settings/UnitsSettings.cc index e290c17..90d496d 100644 --- a/src/Settings/UnitsSettings.cc +++ b/src/Settings/UnitsSettings.cc @@ -155,7 +155,7 @@ DECLARE_SETTINGSFACT_NO_FUNC(UnitsSettings, temperatureUnits) // Units settings can't be loaded from json since it creates an infinite loop of meta data loading. QStringList enumStrings; QVariantList enumValues; - enumStrings << "Celsius" << "Fahrenheit"; + enumStrings << "Celsius" << "Farenheit"; enumValues << QVariant::fromValue(static_cast(TemperatureUnitsCelsius)) << QVariant::fromValue(static_cast(TemperatureUnitsFarenheit)); FactMetaData* metaData = new FactMetaData(FactMetaData::valueTypeUint32, this); metaData->setName(temperatureUnitsName); diff --git a/src/Settings/Video.SettingsGroup.json b/src/Settings/Video.SettingsGroup.json index 805d60c..1fa43bf 100644 --- a/src/Settings/Video.SettingsGroup.json +++ b/src/Settings/Video.SettingsGroup.json @@ -106,7 +106,7 @@ "type": "uint32", "min": 1, "units": "s", - "default": 8 + "default": 2 }, { "name": "streamEnabled", diff --git a/src/Settings/VideoSettings.cc b/src/Settings/VideoSettings.cc index 89e8a6b..a6abdd1 100644 --- a/src/Settings/VideoSettings.cc +++ b/src/Settings/VideoSettings.cc @@ -29,8 +29,6 @@ const char* VideoSettings::videoSourceMPEGTS = QT_TRANSLATE_NOOP("Vid const char* VideoSettings::videoSource3DRSolo = QT_TRANSLATE_NOOP("VideoSettings", "3DR Solo (requires restart)"); const char* VideoSettings::videoSourceParrotDiscovery = QT_TRANSLATE_NOOP("VideoSettings", "Parrot Discovery"); const char* VideoSettings::videoSourceYuneecMantisG = QT_TRANSLATE_NOOP("VideoSettings", "Yuneec Mantis G"); -const char* VideoSettings::videoSourceHerelinkAirUnit = QT_TRANSLATE_NOOP("VideoSettings", "Herelink AirUnit"); -const char* VideoSettings::videoSourceHerelinkHotspot = QT_TRANSLATE_NOOP("VideoSettings", "Herelink Hotspot"); DECLARE_SETTINGGROUP(Video, "Video") { @@ -50,13 +48,6 @@ DECLARE_SETTINGGROUP(Video, "Video") videoSourceList.append(videoSourceParrotDiscovery); videoSourceList.append(videoSourceYuneecMantisG); #endif - -#ifdef QGC_HERELINK_AIRUNIT_VIDEO - videoSourceList.append(videoSourceHerelinkAirUnit); -#else - videoSourceList.append(videoSourceHerelinkHotspot); -#endif - #ifndef QGC_DISABLE_UVC QList cameras = QCameraInfo::availableCameras(); for (const QCameraInfo &cameraInfo: cameras) { @@ -90,12 +81,6 @@ DECLARE_SETTINGGROUP(Video, "Video") #ifdef Q_OS_MAC VideoDecoderOptions::ForceVideoDecoderDirectX3D, VideoDecoderOptions::ForceVideoDecoderVAAPI, -#endif -#ifdef Q_OS_ANDROID - VideoDecoderOptions::ForceVideoDecoderDirectX3D, - VideoDecoderOptions::ForceVideoDecoderVideoToolbox, - VideoDecoderOptions::ForceVideoDecoderVAAPI, - VideoDecoderOptions::ForceVideoDecoderNVIDIA, #endif }; @@ -153,8 +138,12 @@ DECLARE_SETTINGSFACT_NO_FUNC(VideoSettings, forceVideoDecoder) _forceVideoDecoderFact->setVisible( #ifdef Q_OS_IOS false +#else +#ifdef Q_OS_ANDROID + false #else true +#endif #endif ); @@ -225,16 +214,6 @@ bool VideoSettings::streamConfigured(void) qCDebug(VideoManagerLog) << "Testing configuration for MPEG-TS Stream:" << udpPort()->rawValue().toInt(); return udpPort()->rawValue().toInt() != 0; } - //-- If Herelink Air unit, good to go - if(vSource == videoSourceHerelinkAirUnit) { - qCDebug(VideoManagerLog) << "Stream configured for Herelink Air Unit"; - return true; - } - //-- If Herelink Hotspot, good to go - if(vSource == videoSourceHerelinkHotspot) { - qCDebug(VideoManagerLog) << "Stream configured for Herelink Hotspot"; - return true; - } return false; } diff --git a/src/Settings/VideoSettings.h b/src/Settings/VideoSettings.h index f947577..3a2bd5e 100644 --- a/src/Settings/VideoSettings.h +++ b/src/Settings/VideoSettings.h @@ -73,8 +73,6 @@ public: static const char* videoSource3DRSolo; static const char* videoSourceParrotDiscovery; static const char* videoSourceYuneecMantisG; - static const char* videoSourceHerelinkAirUnit; - static const char* videoSourceHerelinkHotspot; signals: void streamConfiguredChanged (bool configured); diff --git a/src/Terrain/TerrainQuery.cc b/src/Terrain/TerrainQuery.cc index 4da3986..8e32d00 100644 --- a/src/Terrain/TerrainQuery.cc +++ b/src/Terrain/TerrainQuery.cc @@ -10,7 +10,6 @@ #include "TerrainQuery.h" #include "QGCMapEngine.h" #include "QGeoMapReplyQGC.h" -#include "QGCFileDownload.h" #include "QGCApplication.h" #include @@ -33,8 +32,6 @@ QGC_LOGGING_CATEGORY(TerrainQueryVerboseLog, "TerrainQueryVerboseLog") Q_GLOBAL_STATIC(TerrainAtCoordinateBatchManager, _TerrainAtCoordinateBatchManager) Q_GLOBAL_STATIC(TerrainTileManager, _terrainTileManager) -static const auto kMapType = UrlFactory::kCopernicusElevationProviderKey; - TerrainAirMapQuery::TerrainAirMapQuery(QObject* parent) : TerrainQueryInterface(parent) { @@ -126,7 +123,7 @@ void TerrainAirMapQuery::_sendQuery(const QString& path, const QUrlQuery& urlQue _requestFailed(); return; } - QGCFileDownload::setIgnoreSSLErrorsIfNeeded(*networkReply); + networkReply->ignoreSslErrors(); connect(networkReply, &QNetworkReply::finished, this, &TerrainAirMapQuery::_requestFinished); connect(networkReply, &QNetworkReply::sslErrors, this, &TerrainAirMapQuery::_sslErrors); @@ -445,17 +442,13 @@ bool TerrainTileManager::getAltitudesForCoordinates(const QList& altitudes.push_back(elevation); } else { if (_state != State::Downloading) { - QNetworkRequest request = getQGCMapEngine()->urlFactory()->getTileURL( - kMapType, getQGCMapEngine()->urlFactory()->long2tileX(kMapType, coordinate.longitude(), 1), - getQGCMapEngine()->urlFactory()->lat2tileY(kMapType, coordinate.latitude(), 1), - 1, - &_networkManager); + QNetworkRequest request = getQGCMapEngine()->urlFactory()->getTileURL("Airmap Elevation", getQGCMapEngine()->urlFactory()->long2tileX("Airmap Elevation",coordinate.longitude(), 1), getQGCMapEngine()->urlFactory()->lat2tileY("Airmap Elevation", coordinate.latitude(), 1), 1, &_networkManager); qCDebug(TerrainQueryLog) << "TerrainTileManager::getAltitudesForCoordinates query from database" << request.url(); QGeoTileSpec spec; - spec.setX(getQGCMapEngine()->urlFactory()->long2tileX(kMapType, coordinate.longitude(), 1)); - spec.setY(getQGCMapEngine()->urlFactory()->lat2tileY(kMapType, coordinate.latitude(), 1)); + spec.setX(getQGCMapEngine()->urlFactory()->long2tileX("Airmap Elevation", coordinate.longitude(), 1)); + spec.setY(getQGCMapEngine()->urlFactory()->lat2tileY("Airmap Elevation", coordinate.latitude(), 1)); spec.setZoom(1); - spec.setMapId(getQGCMapEngine()->urlFactory()->getIdFromType(kMapType)); + spec.setMapId(getQGCMapEngine()->urlFactory()->getIdFromType("Airmap Elevation")); QGeoTiledMapReplyQGC* reply = new QGeoTiledMapReplyQGC(&_networkManager, request, spec); connect(reply, &QGeoTiledMapReplyQGC::terrainDone, this, &TerrainTileManager::_terrainDone); _state = State::Downloading; @@ -472,7 +465,7 @@ bool TerrainTileManager::getAltitudesForCoordinates(const QList& void TerrainTileManager::_tileFailed(void) { - QList noAltitudes; + QList noAltitudes; for (const QueuedRequestInfo_t& requestInfo: _requestQueue) { if (requestInfo.queryMode == QueryMode::QueryModeCoordinates) { @@ -496,7 +489,7 @@ void TerrainTileManager::_terrainDone(QByteArray responseBytes, QNetworkReply::N // remove from download queue QGeoTileSpec spec = reply->tileSpec(); - QString hash = QGCMapEngine::getTileHash(kMapType, spec.x(), spec.y(), spec.zoom()); + QString hash = QGCMapEngine::getTileHash("Airmap Elevation", spec.x(), spec.y(), spec.zoom()); // handle potential errors if (error != QNetworkReply::NoError) { @@ -563,9 +556,9 @@ void TerrainTileManager::_terrainDone(QByteArray responseBytes, QNetworkReply::N QString TerrainTileManager::_getTileHash(const QGeoCoordinate& coordinate) { QString ret = QGCMapEngine::getTileHash( - kMapType, - getQGCMapEngine()->urlFactory()->long2tileX(kMapType, coordinate.longitude(), 1), - getQGCMapEngine()->urlFactory()->lat2tileY(kMapType, coordinate.latitude(), 1), + "Airmap Elevation", + getQGCMapEngine()->urlFactory()->long2tileX("Airmap Elevation", coordinate.longitude(), 1), + getQGCMapEngine()->urlFactory()->lat2tileY("Airmap Elevation", coordinate.latitude(), 1), 1); qCDebug(TerrainQueryVerboseLog) << "Computing unique tile hash for " << coordinate << ret; diff --git a/src/TerrainTile.cc b/src/TerrainTile.cc index c651f2b..654847f 100644 --- a/src/TerrainTile.cc +++ b/src/TerrainTile.cc @@ -31,120 +31,140 @@ const char* TerrainTile::_jsonMinElevationKey = "min"; const char* TerrainTile::_jsonAvgElevationKey = "avg"; const char* TerrainTile::_jsonCarpetKey = "carpet"; -TerrainTile::TerrainTile(const QByteArray& byteArray) +TerrainTile::TerrainTile() + : _minElevation(-1.0) + , _maxElevation(-1.0) + , _avgElevation(-1.0) + , _data(nullptr) + , _gridSizeLat(-1) + , _gridSizeLon(-1) + , _isValid(false) { - // Copy tile info - _tileInfo = *reinterpret_cast(byteArray.constData()); - // Check feasibility - if ((_tileInfo.neLon - _tileInfo.swLon) < 0.0 || (_tileInfo.neLat - _tileInfo.swLat) < 0.0) { - qCWarning(TerrainTileLog) << this << "Tile extent is infeasible"; - _isValid = false; - return; +} + +TerrainTile::~TerrainTile() +{ + if (_data) { + for (int i = 0; i < _gridSizeLat; i++) { + delete[] _data[i]; + } + delete[] _data; + _data = nullptr; } +} - _cellSizeLat = (_tileInfo.neLat - _tileInfo.swLat) / _tileInfo.gridSizeLat; - _cellSizeLon = (_tileInfo.neLon - _tileInfo.swLon) / _tileInfo.gridSizeLon; - - qCDebug(TerrainTileLog) << this << "TileInfo: south west: " << _tileInfo.swLat << _tileInfo.swLon; - qCDebug(TerrainTileLog) << this << "TileInfo: north east: " << _tileInfo.neLat << _tileInfo.neLon; - qCDebug(TerrainTileLog) << this << "TileInfo: dimensions: " << _tileInfo.gridSizeLat << "by" << _tileInfo.gridSizeLat; - qCDebug(TerrainTileLog) << this << "TileInfo: min, max, avg: " << _tileInfo.minElevation << _tileInfo.maxElevation << _tileInfo.avgElevation; - qCDebug(TerrainTileLog) << this << "TileInfo: cell size: " << _cellSizeLat << _cellSizeLon; - +TerrainTile::TerrainTile(QByteArray byteArray) + : _minElevation(-1.0) + , _maxElevation(-1.0) + , _avgElevation(-1.0) + , _data(nullptr) + , _gridSizeLat(-1) + , _gridSizeLon(-1) + , _isValid(false) +{ int cTileHeaderBytes = static_cast(sizeof(TileInfo_t)); int cTileBytesAvailable = byteArray.size(); if (cTileBytesAvailable < cTileHeaderBytes) { - qCWarning(TerrainTileLog) << "Terrain tile binary data too small for TileInfo_s header"; + qWarning() << "Terrain tile binary data too small for TileInfo_s header"; return; } - int cTileDataBytes = static_cast(sizeof(int16_t)) * _tileInfo.gridSizeLat * _tileInfo.gridSizeLon; + const TileInfo_t* tileInfo = reinterpret_cast(byteArray.constData()); + _southWest.setLatitude(tileInfo->swLat); + _southWest.setLongitude(tileInfo->swLon); + _northEast.setLatitude(tileInfo->neLat); + _northEast.setLongitude(tileInfo->neLon); + _minElevation = tileInfo->minElevation; + _maxElevation = tileInfo->maxElevation; + _avgElevation = tileInfo->avgElevation; + _gridSizeLat = tileInfo->gridSizeLat; + _gridSizeLon = tileInfo->gridSizeLon; + + qCDebug(TerrainTileLog) << "Loading terrain tile: " << _southWest << " - " << _northEast; + qCDebug(TerrainTileLog) << "min:max:avg:sizeLat:sizeLon" << _minElevation << _maxElevation << _avgElevation << _gridSizeLat << _gridSizeLon; + + int cTileDataBytes = static_cast(sizeof(int16_t)) * _gridSizeLat * _gridSizeLon; if (cTileBytesAvailable < cTileHeaderBytes + cTileDataBytes) { - qCWarning(TerrainTileLog) << "Terrain tile binary data too small for tile data"; + qWarning() << "Terrain tile binary data too small for tile data"; return; } - _data = new int16_t*[_tileInfo.gridSizeLat]; - for (int k = 0; k < _tileInfo.gridSizeLat; k++) { - _data[k] = new int16_t[_tileInfo.gridSizeLon]; + _data = new int16_t*[_gridSizeLat]; + for (int k = 0; k < _gridSizeLat; k++) { + _data[k] = new int16_t[_gridSizeLon]; } int valueIndex = 0; const int16_t* pTileData = reinterpret_cast(&reinterpret_cast(byteArray.constData())[cTileHeaderBytes]); - for (int i = 0; i < _tileInfo.gridSizeLat; i++) { - for (int j = 0; j < _tileInfo.gridSizeLon; j++) { + for (int i = 0; i < _gridSizeLat; i++) { + for (int j = 0; j < _gridSizeLon; j++) { _data[i][j] = pTileData[valueIndex++]; } } _isValid = true; -} -TerrainTile::~TerrainTile() -{ - if (!_data) { - return; - } - - for (unsigned i = 0; i < static_cast(_tileInfo.gridSizeLat); i++) { - delete[] _data[i]; - } - - delete[] _data; + return; } double TerrainTile::elevation(const QGeoCoordinate& coordinate) const { - if (!_isValid || !_data) { - qCWarning(TerrainTileLog) << this << "Request for elevation, but tile is invalid."; + if (_isValid && _southWest.isValid() && _northEast.isValid()) { + qCDebug(TerrainTileLog) << "elevation: " << coordinate << " , in sw " << _southWest << " , ne " << _northEast; + + // The lat/lon values in _northEast and _southWest coordinates can have rounding errors such that the coordinate + // request may be slightly outside the tile box specified by these values. So we clamp the incoming values to the + // edges of the tile if needed. + + double clampedLon = qMax(coordinate.longitude(), _southWest.longitude()); + double clampedLat = qMax(coordinate.latitude(), _southWest.latitude()); + + // Calc the index of the southernmost and westernmost index data value + int lonIndex = qFloor((clampedLon - _southWest.longitude()) / tileValueSpacingDegrees); + int latIndex = qFloor((clampedLat - _southWest.latitude()) / tileValueSpacingDegrees); + + // Calc how far along in between the known values the requested lat/lon is fractionally + double lonIndexLongitude = _southWest.longitude() + (static_cast(lonIndex) * tileValueSpacingDegrees); + double lonFraction = (clampedLon - lonIndexLongitude) / tileValueSpacingDegrees; + double latIndexLatitude = _southWest.latitude() + (static_cast(latIndex) * tileValueSpacingDegrees); + double latFraction = (clampedLat - latIndexLatitude) / tileValueSpacingDegrees; + + // Calc the elevation as the average across the four known points + double known00 = _data[latIndex][lonIndex]; + double known01 = _data[latIndex][lonIndex+1]; + double known10 = _data[latIndex+1][lonIndex]; + double known11 = _data[latIndex+1][lonIndex+1]; + double lonValue1 = known00 + ((known01 - known00) * lonFraction); + double lonValue2 = known10 + ((known11 - known10) * lonFraction); + double latValue = lonValue1 + ((lonValue2 - lonValue1) * latFraction); + + return latValue; + } else { + qCWarning(TerrainTileLog) << "elevation: Internal error - invalid tile"; return qQNaN(); } - - const double latDeltaSw = coordinate.latitude() - _tileInfo.swLat; - const double lonDeltaSw = coordinate.longitude() - _tileInfo.swLon; - - const int16_t latIndex = qFloor(latDeltaSw / _cellSizeLat); - const int16_t lonIndex = qFloor(lonDeltaSw / _cellSizeLon); - - const bool latIndexInvalid = latIndex < 0 || latIndex > (_tileInfo.gridSizeLat - 1); - const bool lonIndexInvalid = lonIndex < 0 || lonIndex > (_tileInfo.gridSizeLon - 1); - - if (latIndexInvalid || lonIndexInvalid) { - qCWarning(TerrainTileLog) << this << "Internal error: coordinate" << coordinate << "outside tile bounds"; - return qQNaN(); - } - - const auto elevation = _data[latIndex][lonIndex]; - - // Print warning if elevation is outside min/max of tile meta data - if (elevation < _tileInfo.minElevation) { - qCWarning(TerrainTileLog) << this << "Warning: elevation read is below min elevation in tile:" << elevation << "<" << _tileInfo.minElevation; - } - else if (elevation > _tileInfo.maxElevation) { - qCWarning(TerrainTileLog) << this << "Warning: elevation read is above max elevation in tile:" << elevation << ">" << _tileInfo.maxElevation; - } - -#ifdef QT_DEBUG - qCDebug(TerrainTileLog) << this << "latIndex, lonIndex:" << latIndex << lonIndex << "elevation:" << elevation; -#endif - - return static_cast(elevation); } -QByteArray TerrainTile::serializeFromAirMapJson(const QByteArray& input) +QGeoCoordinate TerrainTile::centerCoordinate(void) const +{ + return _southWest.atDistanceAndAzimuth(_southWest.distanceTo(_northEast) / 2.0, _southWest.azimuthTo(_northEast)); +} + +QByteArray TerrainTile::serializeFromAirMapJson(QByteArray input) { QJsonParseError parseError; QJsonDocument document = QJsonDocument::fromJson(input, &parseError); if (parseError.error != QJsonParseError::NoError) { - qCWarning(TerrainTileLog) << "TerrainTile::serializeFromAirMapJson: Terrain tile json doc parse error" << parseError.errorString(); - return QByteArray(); + QByteArray emptyArray; + return emptyArray; } if (!document.isObject()) { - qCWarning(TerrainTileLog) << "TerrainTile::serializeFromAirMapJson: Terrain tile json doc is no object"; - return QByteArray(); + qCDebug(TerrainTileLog) << "Terrain tile json doc is no object"; + QByteArray emptyArray; + return emptyArray; } QJsonObject rootObject = document.object(); @@ -154,13 +174,15 @@ QByteArray TerrainTile::serializeFromAirMapJson(const QByteArray& input) { _jsonDataKey, QJsonValue::Object, true }, }; if (!JsonHelper::validateKeys(rootObject, rootVersionKeyInfoList, errorString)) { - qCWarning(TerrainTileLog) << "TerrainTile::serializeFromAirMapJson: Error in reading json: " << errorString; - return QByteArray(); + qCDebug(TerrainTileLog) << "Error in reading json: " << errorString; + QByteArray emptyArray; + return emptyArray; } if (rootObject[_jsonStatusKey].toString() != "success") { - qCWarning(TerrainTileLog) << "TerrainTile::serializeFromAirMapJson: Invalid terrain tile."; - return QByteArray(); + qCDebug(TerrainTileLog) << "Invalid terrain tile."; + QByteArray emptyArray; + return emptyArray; } const QJsonObject& dataObject = rootObject[_jsonDataKey].toObject(); QList dataVersionKeyInfoList = { @@ -169,8 +191,9 @@ QByteArray TerrainTile::serializeFromAirMapJson(const QByteArray& input) { _jsonCarpetKey, QJsonValue::Array, true }, }; if (!JsonHelper::validateKeys(dataObject, dataVersionKeyInfoList, errorString)) { - qCWarning(TerrainTileLog) << "TerrainTile::serializeFromAirMapJson: Error in reading json: " << errorString; - return QByteArray(); + qCDebug(TerrainTileLog) << "Error in reading json: " << errorString; + QByteArray emptyArray; + return emptyArray; } // Bounds @@ -180,24 +203,18 @@ QByteArray TerrainTile::serializeFromAirMapJson(const QByteArray& input) { _jsonNorthEastKey, QJsonValue::Array, true }, }; if (!JsonHelper::validateKeys(boundsObject, boundsVersionKeyInfoList, errorString)) { - qCWarning(TerrainTileLog) << "TerrainTile::serializeFromAirMapJson: Error in reading json: " << errorString; - return QByteArray(); + qCDebug(TerrainTileLog) << "Error in reading json: " << errorString; + QByteArray emptyArray; + return emptyArray; } const QJsonArray& swArray = boundsObject[_jsonSouthWestKey].toArray(); const QJsonArray& neArray = boundsObject[_jsonNorthEastKey].toArray(); if (swArray.count() < 2 || neArray.count() < 2 ) { - qCWarning(TerrainTileLog) << "TerrainTile::serializeFromAirMapJson: Incomplete bounding location"; - return QByteArray(); + qCDebug(TerrainTileLog) << "Incomplete bounding location"; + QByteArray emptyArray; + return emptyArray; } - const double swLat = swArray[0].toDouble(); - const double swLon = swArray[1].toDouble(); - const double neLat = neArray[0].toDouble(); - const double neLon = neArray[1].toDouble(); - - qCDebug(TerrainTileLog) << "Serialize: swArray: south west: " << (40.42 - swLat) << (-3.23 - swLon); - qCDebug(TerrainTileLog) << "Serialize: neArray: north east: " << neLat << neLon; - // Stats const QJsonObject& statsObject = dataObject[_jsonStatsKey].toObject(); QList statsVersionKeyInfoList = { @@ -206,14 +223,18 @@ QByteArray TerrainTile::serializeFromAirMapJson(const QByteArray& input) { _jsonAvgElevationKey, QJsonValue::Double, true }, }; if (!JsonHelper::validateKeys(statsObject, statsVersionKeyInfoList, errorString)) { - qCWarning(TerrainTileLog) << "TerrainTile::serializeFromAirMapJson: Error in reading json: " << errorString; - return QByteArray(); + qCDebug(TerrainTileLog) << "Error in reading json: " << errorString; + QByteArray emptyArray; + return emptyArray; } + // Carpet const QJsonArray& carpetArray = dataObject[_jsonCarpetKey].toArray(); + int gridSizeLat = carpetArray.count(); + int gridSizeLon = carpetArray[0].toArray().count(); + + TileInfo_t tileInfo; - // Tile meta data - TerrainTile::TileInfo_t tileInfo; tileInfo.swLat = swArray[0].toDouble(); tileInfo.swLon = swArray[1].toDouble(); tileInfo.neLat = neArray[0].toDouble(); @@ -221,34 +242,41 @@ QByteArray TerrainTile::serializeFromAirMapJson(const QByteArray& input) tileInfo.minElevation = static_cast(statsObject[_jsonMinElevationKey].toInt()); tileInfo.maxElevation = static_cast(statsObject[_jsonMaxElevationKey].toInt()); tileInfo.avgElevation = statsObject[_jsonAvgElevationKey].toDouble(); - tileInfo.gridSizeLat = static_cast(carpetArray.count()); - tileInfo.gridSizeLon = static_cast(carpetArray[0].toArray().count()); + tileInfo.gridSizeLat = static_cast(gridSizeLat); + tileInfo.gridSizeLon = static_cast(gridSizeLon); - qCDebug(TerrainTileLog) << "Serialize: TileInfo: south west: " << tileInfo.swLat << tileInfo.swLon; - qCDebug(TerrainTileLog) << "Serialize: TileInfo: north east: " << tileInfo.neLat << tileInfo.neLon; + // We require 1-arc second value spacing + double neCornerLatExpected = tileInfo.swLat + ((tileInfo.gridSizeLat - 1) * tileValueSpacingDegrees); + double neCornerLonExpected = tileInfo.swLon + ((tileInfo.gridSizeLon - 1) * tileValueSpacingDegrees); + if (!QGC::fuzzyCompare(tileInfo.neLat, neCornerLatExpected) || !QGC::fuzzyCompare(tileInfo.neLon, neCornerLonExpected)) { + qCWarning(TerrainTileLog) << QStringLiteral("serialize: Internal error - distance between values incorrect neExpected(%1, %2) neActual(%3, %4) sw(%5, %6) gridSize(%7, %8)") + .arg(neCornerLatExpected).arg(neCornerLonExpected).arg(tileInfo.neLat).arg(tileInfo.neLon).arg(tileInfo.swLat).arg(tileInfo.swLon).arg(tileInfo.gridSizeLat).arg(tileInfo.gridSizeLon); + QByteArray emptyArray; + return emptyArray; + } - const auto cTileNumHeaderBytes = static_cast(sizeof(TileInfo_t)); - const auto cTileNumDataBytes = static_cast(sizeof(int16_t)) * tileInfo.gridSizeLat * tileInfo.gridSizeLon; + int cTileHeaderBytes = static_cast(sizeof(TileInfo_t)); + int cTileDataBytes = static_cast(sizeof(int16_t)) * gridSizeLat * gridSizeLon; - QByteArray res; - res.resize(cTileNumHeaderBytes + cTileNumDataBytes); + QByteArray byteArray(cTileHeaderBytes + cTileDataBytes, 0); - TileInfo_t* pTileInfo = reinterpret_cast(res.data()); - int16_t* pTileData = reinterpret_cast(&reinterpret_cast(res.data())[cTileNumHeaderBytes]); + TileInfo_t* pTileInfo = reinterpret_cast(byteArray.data()); + int16_t* pTileData = reinterpret_cast(&reinterpret_cast(byteArray.data())[cTileHeaderBytes]); *pTileInfo = tileInfo; int valueIndex = 0; - for (unsigned i = 0; i < static_cast(tileInfo.gridSizeLat); i++) { + for (int i = 0; i < gridSizeLat; i++) { const QJsonArray& row = carpetArray[i].toArray(); - if (row.count() < tileInfo.gridSizeLon) { - qCDebug(TerrainTileLog) << "Expected row array of " << tileInfo.gridSizeLon << ", instead got " << row.count(); - return QByteArray(); + if (row.count() < gridSizeLon) { + qCDebug(TerrainTileLog) << "Expected row array of " << gridSizeLon << ", instead got " << row.count(); + QByteArray emptyArray; + return emptyArray; } - for (unsigned j = 0; j < static_cast(tileInfo.gridSizeLon); j++) { + for (int j = 0; j < gridSizeLon; j++) { pTileData[valueIndex++] = static_cast(row[j].toDouble()); } } - return res; + return byteArray; } diff --git a/src/TerrainTile.h b/src/TerrainTile.h index 0134593..bd1417d 100644 --- a/src/TerrainTile.h +++ b/src/TerrainTile.h @@ -16,7 +16,7 @@ Q_DECLARE_LOGGING_CATEGORY(TerrainTileLog) class TerrainTile { public: - TerrainTile() = default; + TerrainTile(); ~TerrainTile(); /** @@ -24,7 +24,7 @@ public: * * @param document */ - TerrainTile(const QByteArray& byteArray); + TerrainTile(QByteArray byteArray); /** * Check whether valid data is loaded @@ -46,29 +46,30 @@ public: * * @return minimum elevation */ - double minElevation(void) const { return _isValid ? static_cast(_tileInfo.minElevation) : qQNaN(); } + double minElevation(void) const { return _minElevation; } /** * Accessor for the maximum elevation of the tile * * @return maximum elevation */ - double maxElevation(void) const { return _isValid ? static_cast(_tileInfo.maxElevation) : qQNaN(); } + double maxElevation(void) const { return _maxElevation; } /** * Accessor for the average elevation of the tile * * @return average elevation */ - double avgElevation(void) const { return _isValid ? _tileInfo.avgElevation : qQNaN(); } + double avgElevation(void) const { return _avgElevation; } /** * Accessor for the center coordinate * * @return center coordinate */ + QGeoCoordinate centerCoordinate(void) const; - static QByteArray serializeFromAirMapJson(const QByteArray& input); + static QByteArray serializeFromAirMapJson(QByteArray input); static constexpr double tileSizeDegrees = 0.01; ///< Each terrain tile represents a square area .01 degrees in lat/lon static constexpr double tileValueSpacingDegrees = 1.0 / 3600; ///< 1 Arc-Second spacing of elevation values @@ -76,7 +77,7 @@ public: private: typedef struct { - double swLat, swLon, neLat, neLon; + double swLat,swLon, neLat, neLon; int16_t minElevation; int16_t maxElevation; double avgElevation; @@ -84,10 +85,16 @@ private: int16_t gridSizeLon; } TileInfo_t; - TileInfo_t _tileInfo; + QGeoCoordinate _southWest; /// South west corner of the tile + QGeoCoordinate _northEast; /// North east corner of the tile + + int16_t _minElevation; /// Minimum elevation in tile + int16_t _maxElevation; /// Maximum elevation in tile + double _avgElevation; /// Average elevation of the tile + int16_t** _data; /// 2D elevation data array - double _cellSizeLat; /// data grid size in latitude direction - double _cellSizeLon; /// data grid size in longitude direction + int16_t _gridSizeLat; /// data grid size in latitude direction + int16_t _gridSizeLon; /// data grid size in longitude direction bool _isValid; /// data loaded is valid // Json keys diff --git a/src/Vehicle/Actuators/ActuatorActions.cc b/src/Vehicle/Actuators/ActuatorActions.cc index 555ac42..81259ae 100644 --- a/src/Vehicle/Actuators/ActuatorActions.cc +++ b/src/Vehicle/Actuators/ActuatorActions.cc @@ -39,10 +39,11 @@ void Action::trigger() sendMavlinkRequest(); } -void Action::ackHandlerEntry(void* resultHandlerData, int /*compId*/, const mavlink_command_ack_t& ack, Vehicle::MavCmdResultFailureCode_t failureCode) +void Action::ackHandlerEntry(void* resultHandlerData, int compId, MAV_RESULT commandResult, uint8_t progress, + Vehicle::MavCmdResultFailureCode_t failureCode) { Action* action = (Action*)resultHandlerData; - action->ackHandler(static_cast(ack.result), failureCode); + action->ackHandler(commandResult, failureCode); } void Action::ackHandler(MAV_RESULT commandResult, Vehicle::MavCmdResultFailureCode_t failureCode) @@ -57,12 +58,9 @@ void Action::sendMavlinkRequest() { qCDebug(ActuatorsConfigLog) << "Sending actuator action, function:" << _outputFunction << "type:" << (int)_type; - Vehicle::MavCmdAckHandlerInfo_t handlerInfo = {}; - handlerInfo.resultHandler = ackHandlerEntry; - handlerInfo.resultHandlerData = this; - _vehicle->sendMavCommandWithHandler( - &handlerInfo, + ackHandlerEntry, // Ack callback + this, // Ack callback data MAV_COMP_ID_AUTOPILOT1, // the ID of the autopilot MAV_CMD_CONFIGURE_ACTUATOR, // the mavlink command (int)_type, // action type diff --git a/src/Vehicle/Actuators/ActuatorActions.h b/src/Vehicle/Actuators/ActuatorActions.h index ff27065..c96c502 100644 --- a/src/Vehicle/Actuators/ActuatorActions.h +++ b/src/Vehicle/Actuators/ActuatorActions.h @@ -48,7 +48,8 @@ public: Q_INVOKABLE void trigger(); private: - static void ackHandlerEntry(void* resultHandlerData, int compId, const mavlink_command_ack_t& ack, Vehicle::MavCmdResultFailureCode_t failureCode); + static void ackHandlerEntry(void* resultHandlerData, int compId, MAV_RESULT commandResult, uint8_t progress, + Vehicle::MavCmdResultFailureCode_t failureCode); void ackHandler(MAV_RESULT commandResult, Vehicle::MavCmdResultFailureCode_t failureCode); void sendMavlinkRequest(); diff --git a/src/Vehicle/Actuators/ActuatorTesting.cc b/src/Vehicle/Actuators/ActuatorTesting.cc index ad648b9..bee1fd3 100644 --- a/src/Vehicle/Actuators/ActuatorTesting.cc +++ b/src/Vehicle/Actuators/ActuatorTesting.cc @@ -120,10 +120,11 @@ void ActuatorTest::setActive(bool active) _active = active; } -void ActuatorTest::ackHandlerEntry(void* resultHandlerData, int /*compId*/, const mavlink_command_ack_t& ack, Vehicle::MavCmdResultFailureCode_t failureCode) +void ActuatorTest::ackHandlerEntry(void* resultHandlerData, int compId, MAV_RESULT commandResult, uint8_t progress, + Vehicle::MavCmdResultFailureCode_t failureCode) { ActuatorTest* actuatorTest = (ActuatorTest*)resultHandlerData; - actuatorTest->ackHandler(static_cast(ack.result), failureCode); + actuatorTest->ackHandler(commandResult, failureCode); } void ActuatorTest::ackHandler(MAV_RESULT commandResult, Vehicle::MavCmdResultFailureCode_t failureCode) @@ -189,12 +190,9 @@ void ActuatorTest::sendMavlinkRequest(int function, float value, float timeout) // TODO: consider using a lower command timeout - Vehicle::MavCmdAckHandlerInfo_t handlerInfo = {}; - handlerInfo.resultHandler = ackHandlerEntry; - handlerInfo.resultHandlerData = this; - _vehicle->sendMavCommandWithHandler( - &handlerInfo, + ackHandlerEntry, // Ack callback + this, // Ack callback data MAV_COMP_ID_AUTOPILOT1, // the ID of the autopilot MAV_CMD_ACTUATOR_TEST, // the mavlink command value, // value diff --git a/src/Vehicle/Actuators/ActuatorTesting.h b/src/Vehicle/Actuators/ActuatorTesting.h index de75249..1c52f38 100644 --- a/src/Vehicle/Actuators/ActuatorTesting.h +++ b/src/Vehicle/Actuators/ActuatorTesting.h @@ -110,7 +110,8 @@ private: void resetStates(); - static void ackHandlerEntry(void* resultHandlerData, int compId, const mavlink_command_ack_t& ack, Vehicle::MavCmdResultFailureCode_t failureCode); + static void ackHandlerEntry(void* resultHandlerData, int compId, MAV_RESULT commandResult, uint8_t progress, + Vehicle::MavCmdResultFailureCode_t failureCode); void ackHandler(MAV_RESULT commandResult, Vehicle::MavCmdResultFailureCode_t failureCode); void sendMavlinkRequest(int function, float value, float timeout); diff --git a/src/Vehicle/Actuators/Actuators.cc b/src/Vehicle/Actuators/Actuators.cc index 01231d4..06cd17e 100644 --- a/src/Vehicle/Actuators/Actuators.cc +++ b/src/Vehicle/Actuators/Actuators.cc @@ -103,9 +103,6 @@ void Actuators::updateGeometryImage() _imageRefreshFlag = !_imageRefreshFlag; emit imageRefreshFlagChanged(); - - _motorAssignmentEnabled = provider->numMotors() > 0; - emit motorAssignmentEnabledChanged(); } bool Actuators::isMultirotor() const @@ -239,7 +236,7 @@ void Actuators::parametersChanged() _actuatorTest.updateFunctions(actuators); // check if there are required functions, but not set on any output - QSet requiredFunctions = _mixer.getFunctions(true); + QSet requiredFunctions = _mixer.requiredFunctions(); _hasUnsetRequiredFunctions = false; for (int requiredFunction : requiredFunctions) { if (uniqueConfiguredFunctions.find(requiredFunction) == uniqueConfiguredFunctions.end()) { @@ -248,92 +245,11 @@ void Actuators::parametersChanged() } emit hasUnsetRequiredFunctionsChanged(); - updateFunctionMetadata(); - updateActuatorActions(); updateGeometryImage(); } -void Actuators::updateFunctionMetadata() -{ - // Update the function parameter metadata: - // - remove the mixer functions that are unused with the current configration (e.g. if 4 motors -> remove motors 5-N) - // - use the specific labels - QSet usedMixerFunctions = _mixer.getFunctions(false); - - QMap usedMixerLabels; - for (int usedMixerFunction : usedMixerFunctions) { - usedMixerLabels[usedMixerFunction] = _mixer.getSpecificLabelForFunction(usedMixerFunction); - } - - if (_usedMixerLabels == usedMixerLabels) { - // no update required - return; - } - _usedMixerLabels = usedMixerLabels; - - // Get the unused mixer functions - QSet removedMixerFunctions; - for(Mixer::ActuatorTypes::const_iterator iter = _mixer.actuatorTypes().constBegin(); - iter != _mixer.actuatorTypes().constEnd(); ++iter) { - if (iter.key() == "DEFAULT") - continue; - - for (int i = iter.value().functionMin; i <= iter.value().functionMax; ++i) { - if (!usedMixerFunctions.contains(i)) { - removedMixerFunctions.insert(i); - } - } - } - - // Now update all function facts (we need to treat them individually, as some might have extra functions) - for (int groupIdx = 0; groupIdx < _actuatorOutputs->count(); groupIdx++) { - ActuatorOutput* group = qobject_cast(_actuatorOutputs->get(groupIdx)); - - group->forEachOutputFunction([&](ActuatorOutputSubgroup* subgroup, ChannelConfigInstance*, Fact* fact) { - QStringList enumStrings = fact->enumStrings(); - if (!enumStrings.empty()) { - QVariantList enumValues = fact->enumValues(); - - // Replace or add - for (int usedMixerFunction : usedMixerFunctions) { - QString label = usedMixerLabels[usedMixerFunction]; - int index = enumValues.indexOf(usedMixerFunction); - if (index == -1) { - // Insert at the right place - bool inserted = false; - for (index = 0; index < enumValues.count() && !inserted; ++index) { - if (enumValues[index].toInt() > usedMixerFunction) { - enumValues.insert(index, usedMixerFunction); - enumStrings.insert(index, label); - inserted = true; - } - } - if (!inserted) { - enumValues.append(usedMixerFunction); - enumStrings.append(label); - } - } else { - enumStrings[index] = label; - } - } - - // Remove - for (int removedMixerFunction : removedMixerFunctions) { - int index = enumValues.indexOf(removedMixerFunction); - if (index != -1) { - enumValues.removeAt(index); - enumStrings.removeAt(index); - } - } - - fact->setEnumInfo(enumStrings, enumValues); - } - }); - } -} - void Actuators::updateActuatorActions() { _actuatorActions->clearAndDeleteContents(); @@ -399,7 +315,7 @@ bool Actuators::parseJson(const QJsonDocument &json) // parse outputs QJsonArray outputs = outputsJson.toArray(); - for (const auto &&outputJson : outputs) { + for (const auto &outputJson : outputs) { QJsonValue output = outputJson.toObject(); QString label = output["label"].toString(); @@ -428,12 +344,12 @@ bool Actuators::parseJson(const QJsonDocument &json) }; QJsonArray parameters = output["parameters"].toArray(); - for (const auto&& parameterJson : parameters) { + for (const auto& parameterJson : parameters) { currentActuatorOutput->addConfigParam(parseParam(parameterJson.toObject())); } QJsonArray subgroups = output["subgroups"].toArray(); - for (const auto&& subgroupJson : subgroups) { + for (const auto& subgroupJson : subgroups) { QJsonValue subgroup = subgroupJson.toObject(); QString subgroupLabel = subgroup["label"].toString(); ActuatorOutputSubgroup* actuatorSubgroup = new ActuatorOutputSubgroup(this, subgroupLabel); @@ -462,7 +378,7 @@ bool Actuators::parseJson(const QJsonDocument &json) } if (knownAction) { QJsonArray actuatorTypesArr = actionObj["actuator-types"].toArray(); - for (const auto&& type : actuatorTypesArr) { + for (const auto &type : actuatorTypesArr) { action.actuatorTypes.insert(type.toString()); } action.condition = Condition(actionObj["supported-if"].toString(), _vehicle->parameterManager()); @@ -473,12 +389,12 @@ bool Actuators::parseJson(const QJsonDocument &json) } QJsonArray parameters = subgroup["parameters"].toArray(); - for (const auto&& parameterJson : parameters) { + for (const auto& parameterJson : parameters) { actuatorSubgroup->addConfigParam(parseParam(parameterJson.toObject())); } QJsonArray channelParameters = subgroup["per-channel-parameters"].toArray(); - for (const auto&& channelParametersJson : channelParameters) { + for (const auto& channelParametersJson : channelParameters) { QJsonValue channelParameter = channelParametersJson.toObject(); Parameter param; param.parse(channelParameter); @@ -507,7 +423,7 @@ bool Actuators::parseJson(const QJsonDocument &json) } QJsonArray channels = subgroup["channels"].toArray(); - for (const auto&& channelJson : channels) { + for (const auto& channelJson : channels) { QJsonValue channel = channelJson.toObject(); QString channelLabel = channel["label"].toString(); int paramIndex = channel["param-index"].toInt(); @@ -563,7 +479,7 @@ bool Actuators::parseJson(const QJsonDocument &json) actuatorType.values.reversible = values["reversible"].toBool(); QJsonArray perItemParametersJson = actuatorTypeVal["per-item-parameters"].toArray(); - for (const auto&& perItemParameterJson : perItemParametersJson) { + for (const auto& perItemParameterJson : perItemParametersJson) { QJsonValue perItemParameter = perItemParameterJson.toObject(); Parameter param{}; param.parse(perItemParameter); @@ -589,15 +505,13 @@ bool Actuators::parseJson(const QJsonDocument &json) Mixer::MixerOptions mixerOptions{}; QJsonValue mixerConfigJson = mixerJson.toObject().value("config"); QJsonArray mixerConfigJsonArr = mixerConfigJson.toArray(); - for (const auto&& mixerConfigJson : mixerConfigJsonArr) { + for (const auto& mixerConfigJson : mixerConfigJsonArr) { QJsonValue mixerConfig = mixerConfigJson.toObject(); Mixer::MixerOption option{}; option.option = mixerConfig["option"].toString(); option.type = mixerConfig["type"].toString(); - option.title = mixerConfig["title"].toString(); - option.helpUrl = mixerConfig["help-url"].toString(); QJsonArray actuatorsJson = mixerConfig["actuators"].toArray(); - for (const auto&& actuatorJson : actuatorsJson) { + for (const auto& actuatorJson : actuatorsJson) { QJsonValue actuatorJsonVal = actuatorJson.toObject(); Mixer::MixerOption::ActuatorGroup actuator{}; actuator.groupLabel = actuatorJsonVal["group-label"].toString(); @@ -609,7 +523,7 @@ bool Actuators::parseJson(const QJsonDocument &json) actuator.actuatorType = actuatorJsonVal["actuator-type"].toString(); actuator.required = actuatorJsonVal["required"].toBool(false); QJsonArray parametersJson = actuatorJsonVal["parameters"].toArray(); - for (const auto&& parameterJson : parametersJson) { + for (const auto& parameterJson : parametersJson) { QJsonValue parameter = parameterJson.toObject(); Parameter mixerParameter{}; mixerParameter.parse(parameter); @@ -617,7 +531,7 @@ bool Actuators::parseJson(const QJsonDocument &json) } QJsonArray perItemParametersJson = actuatorJsonVal["per-item-parameters"].toArray(); - for (const auto&& parameterJson : perItemParametersJson) { + for (const auto& parameterJson : perItemParametersJson) { QJsonValue parameter = parameterJson.toObject(); Mixer::MixerParameter mixerParameter{}; mixerParameter.param.parse(parameter); @@ -646,7 +560,7 @@ bool Actuators::parseJson(const QJsonDocument &json) bool invalid = false; if (mixerParameter.param.name == "") { QJsonArray valuesJson = parameter["value"].toArray(); - for (const auto&& valueJson : valuesJson) { + for (const auto& valueJson : valuesJson) { mixerParameter.values.append(valueJson.toDouble()); } @@ -664,7 +578,7 @@ bool Actuators::parseJson(const QJsonDocument &json) actuator.itemLabelPrefix.append(actuatorJsonVal["item-label-prefix"].toString()); } else { QJsonArray itemLabelPrefixJson = actuatorJsonVal["item-label-prefix"].toArray(); - for (const auto&& itemLabelPrefix : itemLabelPrefixJson) { + for (const auto& itemLabelPrefix : itemLabelPrefixJson) { actuator.itemLabelPrefix.append(itemLabelPrefix.toString()); } if (actuator.fixedCount != actuator.itemLabelPrefix.size() && actuator.itemLabelPrefix.size() > 1) { @@ -681,13 +595,13 @@ bool Actuators::parseJson(const QJsonDocument &json) QList rules; QJsonValue mixerRulesJson = mixerJson.toObject().value("rules"); QJsonArray mixerRulesJsonArr = mixerRulesJson.toArray(); - for (const auto&& mixerRuleJson : mixerRulesJsonArr) { + for (const auto& mixerRuleJson : mixerRulesJsonArr) { QJsonValue mixerRule = mixerRuleJson.toObject(); Mixer::Rule rule{}; rule.selectIdentifier = mixerRule["select-identifier"].toString(); QJsonArray identifiersJson = mixerRule["apply-identifiers"].toArray(); - for (const auto&& identifierJson : identifiersJson) { + for (const auto& identifierJson : identifiersJson) { rule.applyIdentifiers.append(identifierJson.toString()); } @@ -698,7 +612,7 @@ bool Actuators::parseJson(const QJsonDocument &json) if (ok) { QJsonArray itemsArr = itemsJson.value(itemKey).toArray(); QList items{}; - for (const auto&& itemJson : itemsArr) { + for (const auto& itemJson : itemsArr) { QJsonObject itemObj = itemJson.toObject(); Mixer::Rule::RuleItem item{}; @@ -760,7 +674,13 @@ bool Actuators::showUi() const bool Actuators::initMotorAssignment() { GeometryImage::VehicleGeometryImageProvider* provider = GeometryImage::VehicleGeometryImageProvider::instance(); - int numMotors = provider->numMotors(); + int numMotors = 0; + QList& actuators = provider->actuators(); + for (const auto& actuator : actuators) { + if (actuator.type == ActuatorGeometry::Type::Motor) { + ++numMotors; + } + } // get the minimum function for motors bool ret = false; diff --git a/src/Vehicle/Actuators/Actuators.h b/src/Vehicle/Actuators/Actuators.h index 4e1e54b..2f552a6 100644 --- a/src/Vehicle/Actuators/Actuators.h +++ b/src/Vehicle/Actuators/Actuators.h @@ -33,7 +33,6 @@ public: Q_PROPERTY(bool imageRefreshFlag READ imageRefreshFlag NOTIFY imageRefreshFlagChanged) Q_PROPERTY(bool hasUnsetRequiredFunctions READ hasUnsetRequiredFunctions NOTIFY hasUnsetRequiredFunctionsChanged) Q_PROPERTY(bool motorAssignmentActive READ motorAssignmentActive NOTIFY motorAssignmentActiveChanged) - Q_PROPERTY(bool motorAssignmentEnabled READ motorAssignmentEnabled NOTIFY motorAssignmentEnabledChanged) Q_PROPERTY(QString motorAssignmentMessage READ motorAssignmentMessage NOTIFY motorAssignmentMessageChanged) Q_PROPERTY(ActuatorTesting::ActuatorTest* actuatorTest READ actuatorTest CONSTANT) @@ -76,7 +75,6 @@ public: Q_INVOKABLE void spinCurrentMotor() { _motorAssignment.spinCurrentMotor(); } Q_INVOKABLE void abortMotorAssignment(); bool motorAssignmentActive() const { return _motorAssignment.active(); } - bool motorAssignmentEnabled() const { return _motorAssignmentEnabled; } const QString& motorAssignmentMessage() const { return _motorAssignment.message(); } public slots: @@ -88,7 +86,6 @@ signals: void imageRefreshFlagChanged(); void hasUnsetRequiredFunctionsChanged(); void motorAssignmentActiveChanged(); - void motorAssignmentEnabledChanged(); void motorAssignmentMessageChanged(); void actuatorActionsChanged(); @@ -106,8 +103,6 @@ private: void highlightActuators(bool highlight); - void updateFunctionMetadata(); - QSet _subscribedFacts{}; QJsonDocument _jsonMetadata; bool _init{false}; @@ -117,11 +112,9 @@ private: ActuatorTesting::ActuatorTest _actuatorTest; Mixer::Mixers _mixer; MotorAssignment _motorAssignment; - bool _motorAssignmentEnabled{false}; bool _hasUnsetRequiredFunctions{false}; bool _imageRefreshFlag{false}; ///< indicator to QML to reload the image int _selectedActuatorOutput{0}; Vehicle* _vehicle{nullptr}; - QMap _usedMixerLabels; }; diff --git a/src/Vehicle/Actuators/GeometryImage.cc b/src/Vehicle/Actuators/GeometryImage.cc index e83c2b4..bd7a819 100644 --- a/src/Vehicle/Actuators/GeometryImage.cc +++ b/src/Vehicle/Actuators/GeometryImage.cc @@ -415,14 +415,3 @@ int VehicleGeometryImageProvider::getHighlightedMotorIndexAtPos(const QPointF &p } return -1; } - -int VehicleGeometryImageProvider::numMotors() const -{ - int numMotors = 0; - for (const auto& actuator : _actuators) { - if (actuator.type == ActuatorGeometry::Type::Motor) { - ++numMotors; - } - } - return numMotors; -} diff --git a/src/Vehicle/Actuators/GeometryImage.h b/src/Vehicle/Actuators/GeometryImage.h index 5e0021c..34a0b1b 100644 --- a/src/Vehicle/Actuators/GeometryImage.h +++ b/src/Vehicle/Actuators/GeometryImage.h @@ -50,8 +50,6 @@ public: QList& actuators() { return _actuators; } - int numMotors() const; - private: VehicleGeometryImageProvider(); ~VehicleGeometryImageProvider() = default; diff --git a/src/Vehicle/Actuators/Mixer.cc b/src/Vehicle/Actuators/Mixer.cc index e81bdda..952fcc9 100644 --- a/src/Vehicle/Actuators/Mixer.cc +++ b/src/Vehicle/Actuators/Mixer.cc @@ -15,215 +15,6 @@ using namespace Mixer; -ChannelConfigInstance* ChannelConfig::instantiate(int paramIndex, int actuatorTypeIndex, - ParameterManager* parameterManager, std::function factAddedCb) -{ - QString param = _parameter.param.name; - int usedParamIndex; - if (_isActuatorTypeConfig) { - usedParamIndex = actuatorTypeIndex + indexOffset(); - } else { - usedParamIndex = paramIndex + indexOffset(); - } - param.replace("${i}", QString::number(usedParamIndex)); - - Fact* fact = nullptr; - if (param == "" && !_isActuatorTypeConfig) { // constant value - float value = 0.f; - if (fixedValues().size() == 1) { - value = fixedValues()[0]; - } else if (paramIndex < fixedValues().size()) { - value = fixedValues()[paramIndex]; - } - - FactMetaData* metaData = new FactMetaData(FactMetaData::valueTypeFloat, "", this); - metaData->setReadOnly(true); - metaData->setDecimalPlaces(4); - fact = new Fact("", metaData, this); - fact->setRawValue(value); - - } else if (parameterManager->parameterExists(FactSystem::defaultComponentId, param)) { - fact = parameterManager->getParameter(FactSystem::defaultComponentId, param); - if (displayOption() == Parameter::DisplayOption::Bitset) { - fact = new FactBitset(this, fact, usedParamIndex); - } else if (displayOption() == Parameter::DisplayOption::BoolTrueIfPositive) { - fact = new FactFloatAsBool(this, fact); - } - factAddedCb(function(), fact); - } else { - qCDebug(ActuatorsConfigLog) << "ActuatorOutputChannel: Param does not exist:" << param; - } - - ChannelConfigInstance* instance = new ChannelConfigInstance(this, fact, *this); - channelInstanceCreated(instance); - return instance; -} - -void ChannelConfig::channelInstanceCreated(ChannelConfigInstance* instance) -{ - _instances.append(instance); - connect(instance, &ChannelConfigInstance::visibleChanged, - this, &ChannelConfig::instanceVisibleChanged); -} - -void ChannelConfig::instanceVisibleChanged() -{ - bool visible = false; - for (const auto& instance : _instances) { - if (instance->visible()) { - visible = true; - } - } - - if (visible != _visible) { - _visible = visible; - emit visibleChanged(); - } -} - -ChannelConfigInstance* ChannelConfigVirtualAxis::instantiate(int paramIndex, int actuatorTypeIndex, - ParameterManager* parameterManager, std::function factAddedCb) -{ - ChannelConfigInstance* instance = new ChannelConfigInstanceVirtualAxis(this, *this); - channelInstanceCreated(instance); - return instance; -} - -void ChannelConfigInstanceVirtualAxis::allInstancesInitialized(QmlObjectListModel* configInstances) -{ - for (int i = 0; i < configInstances->count(); ++i) { - auto channelConfigInstance = configInstances->value(i); - if (channelConfigInstance->channelConfig()->function() == Function::AxisX) { - _axes[0] = channelConfigInstance; - } else if (channelConfigInstance->channelConfig()->function() == Function::AxisY) { - _axes[1] = channelConfigInstance; - } else if (channelConfigInstance->channelConfig()->function() == Function::AxisZ) { - _axes[2] = channelConfigInstance; - } - } - Q_ASSERT(_axes[0] && _axes[1] && _axes[2]); - - for (int i = 0; i < 3; ++i) { - if (!_axes[i]->fact()) - return; - } - - // Initialize fact - QStringList enumStrings{tr("Custom"), tr("Upwards"), tr("Downwards"), tr("Forwards"), tr("Backwards"), - tr("Leftwards"), tr("Rightwards")}; - QVariantList enumValues{0, 1, 2, 3, 4, 5, 6}; - FactMetaData* metaData = new FactMetaData(FactMetaData::valueTypeUint32, this); - metaData->setEnumInfo(enumStrings, enumValues); - _fact = new Fact("", metaData, this); - setFactFromAxes(); - - connect(_fact, &Fact::rawValueChanged, this, &ChannelConfigInstanceVirtualAxis::setAxesFromFact); - for (int i=0; i < 3; ++i) { - connect(_axes[i]->fact(), &Fact::rawValueChanged, - this, [this](){ ChannelConfigInstanceVirtualAxis::setFactFromAxes(true); }); - } - // Inherit visibility & enabled from the first axis - connect(_axes[0], &ChannelConfigInstance::visibleChanged, - this, &ChannelConfigInstanceVirtualAxis::axisVisibleChanged); - connect(_axes[0], &ChannelConfigInstance::enabledChanged, - this, &ChannelConfigInstanceVirtualAxis::axisEnableChanged); - axisVisibleChanged(); - axisEnableChanged(); -} - -void ChannelConfigInstanceVirtualAxis::axisVisibleChanged() -{ - if (_axes[0]->visibleRule() != visibleRule()) { - setVisibleRule(_axes[0]->visibleRule()); - } -} - -void ChannelConfigInstanceVirtualAxis::axisEnableChanged() -{ - if (_axes[0]->enabledRule() != enabledRule()) { - setEnabledRule(_axes[0]->enabledRule()); - } -} - -void ChannelConfigInstanceVirtualAxis::setFactFromAxes(bool keepVisible) -{ - if (_ignoreChange) { - return; - } - _ignoreChange = true; - float x = _axes[0]->fact()->rawValue().toFloat(); - float y = _axes[1]->fact()->rawValue().toFloat(); - float z = _axes[2]->fact()->rawValue().toFloat(); - Direction direction{Direction::Custom}; // set to custom if no match - const float eps = 0.00001f; - if (fabsf(x) < eps && fabsf(y) < eps && fabsf(z + 1.f) < eps) { - direction = Direction::Upwards; - } else if (fabsf(x) < eps && fabsf(y) < eps && fabsf(z - 1.f) < eps) { - direction = Direction::Downwards; - } else if (fabsf(x - 1.f) < eps && fabsf(y) < eps && fabsf(z) < eps) { - direction = Direction::Forwards; - } else if (fabsf(x + 1.f) < eps && fabsf(y) < eps && fabsf(z) < eps) { - direction = Direction::Backwards; - } else if (fabsf(x) < eps && fabsf(y + 1.f) < eps && fabsf(z) < eps) { - direction = Direction::Leftwards; - } else if (fabsf(x) < eps && fabsf(y - 1.f) < eps && fabsf(z) < eps) { - direction = Direction::Rightwards; - } - _fact->setRawValue((uint32_t)direction); - - bool visible = direction == Direction::Custom || keepVisible; - for(int i=0; i < 3; ++i) { - _axes[i]->setVisibleAxis(visible); - } - _ignoreChange = false; -} - -void ChannelConfigInstanceVirtualAxis::setAxesFromFact() -{ - if (_ignoreChange) { - return; - } - _ignoreChange = true; - int directionIdx = _fact->rawValue().toInt(); - - if (directionIdx > 0) { - Direction direction = (Direction)directionIdx; - float x{}, y{}, z{}; - switch (direction) { - case Direction::Upwards: - x = 0.f; y = 0.f; z = -1.f; - break; - case Direction::Downwards: - x = 0.f; y = 0.f; z = 1.f; - break; - case Direction::Forwards: - x = 1.f; y = 0.f; z = 0.f; - break; - case Direction::Backwards: - x = -1.f; y = 0.f; z = 0.f; - break; - case Direction::Leftwards: - x = 0.f; y = -1.f; z = 0.f; - break; - case Direction::Rightwards: - x = 0.f; y = 1.f; z = 0.f; - break; - case Direction::Custom: - break; - } - _axes[0]->fact()->setRawValue(x); - _axes[1]->fact()->setRawValue(y); - _axes[2]->fact()->setRawValue(z); - } - - - bool visible = directionIdx == 0; - for(int i=0; i < 3; ++i) { - _axes[i]->setVisibleAxis(visible); - } - _ignoreChange = false; -} - MixerChannel::MixerChannel(QObject *parent, const QString &label, int actuatorFunction, int paramIndex, int actuatorTypeIndex, QmlObjectListModel &channelConfigs, ParameterManager* parameterManager, const Rule* rule, std::function factAddedCb) @@ -232,11 +23,44 @@ MixerChannel::MixerChannel(QObject *parent, const QString &label, int actuatorFu { for (int i = 0; i < channelConfigs.count(); ++i) { auto channelConfig = channelConfigs.value(i); + QString param = channelConfig->parameter(); + int usedParamIndex; + if (channelConfig->isActuatorTypeConfig()) { + usedParamIndex = actuatorTypeIndex + channelConfig->indexOffset(); + } else { + usedParamIndex = paramIndex + channelConfig->indexOffset(); + } + param.replace("${i}", QString::number(usedParamIndex)); - ChannelConfigInstance* instance = channelConfig->instantiate(paramIndex, actuatorTypeIndex, parameterManager, factAddedCb); - Fact* fact = instance->fact(); + Fact* fact = nullptr; + if (param == "" && !channelConfig->isActuatorTypeConfig()) { // constant value + float value = 0.f; + if (channelConfig->fixedValues().size() == 1) { + value = channelConfig->fixedValues()[0]; + } else if (paramIndex < channelConfig->fixedValues().size()) { + value = channelConfig->fixedValues()[paramIndex]; + } + + FactMetaData* metaData = new FactMetaData(FactMetaData::valueTypeFloat, "", this); + metaData->setReadOnly(true); + metaData->setDecimalPlaces(4); + fact = new Fact("", metaData, this); + fact->setRawValue(value); + + } else if (parameterManager->parameterExists(FactSystem::defaultComponentId, param)) { + fact = parameterManager->getParameter(FactSystem::defaultComponentId, param); + if (channelConfig->displayOption() == Parameter::DisplayOption::Bitset) { + fact = new FactBitset(channelConfig, fact, usedParamIndex); + } else if (channelConfig->displayOption() == Parameter::DisplayOption::BoolTrueIfPositive) { + fact = new FactFloatAsBool(channelConfig, fact); + } + factAddedCb(channelConfig->function(), fact); + } else { + qCDebug(ActuatorsConfigLog) << "ActuatorOutputChannel: Param does not exist:" << param; + } // if we have a valid rule, check the identifiers + int applyIdentifierIdx = -1; if (rule) { if (channelConfig->identifier() == rule->selectIdentifier) { _ruleSelectIdentifierIdx = _configInstances->count(); @@ -246,7 +70,7 @@ MixerChannel::MixerChannel(QObject *parent, const QString &label, int actuatorFu } else { for (int i = 0; i < rule->applyIdentifiers.size(); ++i) { if (channelConfig->identifier() == rule->applyIdentifiers[i]) { - instance->setRuleApplyIdentifierIdx(i); + applyIdentifierIdx = i; } } } @@ -256,14 +80,10 @@ MixerChannel::MixerChannel(QObject *parent, const QString &label, int actuatorFu } } + ChannelConfigInstance* instance = new ChannelConfigInstance(this, fact, *channelConfig, applyIdentifierIdx); _configInstances->append(instance); } - for (int i = 0; i < _configInstances->count(); ++i) { - auto channelConfigInstance = _configInstances->value(i); - channelConfigInstance->allInstancesInitialized(_configInstances); - } - applyRule(true); } @@ -302,8 +122,8 @@ void MixerChannel::applyRule(bool noConstraints) // here we could notify the user that a constraint got applied... configInstance->fact()->setRawValue(factValue); } - configInstance->setVisibleRule(!ruleItem.hidden); - configInstance->setEnabledRule(!ruleItem.disabled); + configInstance->setVisible(!ruleItem.hidden); + configInstance->setEnabled(!ruleItem.disabled); } } @@ -311,8 +131,8 @@ void MixerChannel::applyRule(bool noConstraints) // no rule set for this value, just reset for (int i = 0; i < _configInstances->count(); ++i) { ChannelConfigInstance* configInstance = _configInstances->value(i); - configInstance->setVisibleRule(true); - configInstance->setEnabledRule(true); + configInstance->setVisible(true); + configInstance->setEnabled(true); } } _currentSelectIdentifierValue = value; @@ -460,18 +280,9 @@ void Mixers::update() } const Rule* selectedRule{nullptr}; // at most 1 rule can be applied - int axisIdx[3]{-1, -1, -1}; for (const auto& perItemParam : actuatorGroup.perItemParameters) { currentMixerGroup->addChannelConfig(new ChannelConfig(currentMixerGroup, perItemParam, false)); - if (perItemParam.function == Function::AxisX) { - axisIdx[0] = currentMixerGroup->channelConfigs()->count() - 1; - } else if (perItemParam.function == Function::AxisY) { - axisIdx[1] = currentMixerGroup->channelConfigs()->count() - 1; - } else if (perItemParam.function == Function::AxisZ) { - axisIdx[2] = currentMixerGroup->channelConfigs()->count() - 1; - } - if (!perItemParam.identifier.isEmpty()) { for (const auto& rule : _rules) { if (rule.selectIdentifier == perItemParam.identifier) { @@ -481,18 +292,6 @@ void Mixers::update() } } - // Add virtual axis dropdown configuration param if all 3 axes are found - if (axisIdx[0] >= 0 && axisIdx[1] >= 0 && axisIdx[2] >= 0) { - ChannelConfig* axisXConfig = currentMixerGroup->channelConfigs()->value(axisIdx[0]); - MixerParameter parameter = axisXConfig->config(); // use axisX as base (somewhat arbitrary) - parameter.function = Function::Unspecified; - parameter.param.name = ""; - parameter.param.label = tr("Axis"); - parameter.identifier = ""; - ChannelConfig* virtualChannelConfig = new ChannelConfigVirtualAxis(currentMixerGroup, parameter); - currentMixerGroup->channelConfigs()->insert(axisIdx[0], virtualChannelConfig); - } - // 'count' param if (actuatorGroup.count != "") { currentMixerGroup->setCountParam(new ConfigParameter(currentMixerGroup, getFact(actuatorGroup.count), @@ -518,7 +317,7 @@ void Mixers::update() } if (itemLabelPrefix != "") { label = itemLabelPrefix + " (" + label + ")"; - _functionsSpecificLabel[actuatorFunction] = itemLabelPrefix; + _functionsSpecificLabel[actuatorFunction] = label; } } auto factAdded = [this](Function function, Fact* fact) { @@ -549,37 +348,20 @@ void Mixers::update() QString Mixers::getSpecificLabelForFunction(int function) const { // Try to get it from the actuator type param - Fact* typeFact = nullptr; - for (int mixerGroupIdx = 0; !typeFact && mixerGroupIdx < _groups->count(); ++mixerGroupIdx) { + for (int mixerGroupIdx = 0; mixerGroupIdx < _groups->count(); ++mixerGroupIdx) { Mixer::MixerConfigGroup* mixerGroup = _groups->value(mixerGroupIdx); - for (int mixerChannelIdx = 0; !typeFact && mixerChannelIdx < mixerGroup->channels()->count(); ++mixerChannelIdx) { + for (int mixerChannelIdx = 0; mixerChannelIdx < mixerGroup->channels()->count(); ++mixerChannelIdx) { Mixer::MixerChannel* mixerChannel = mixerGroup->channels()->value(mixerChannelIdx); if (mixerChannel->actuatorFunction() != function) { continue; } - typeFact = mixerChannel->getFact(Function::Type); - } - } - if (typeFact) { - // Now check if we have multiple functions configured with the same type. - // If so, add the function label to disambiguate - for (int mixerGroupIdx = 0; mixerGroupIdx < _groups->count(); ++mixerGroupIdx) { - Mixer::MixerConfigGroup* mixerGroup = _groups->value(mixerGroupIdx); - for (int mixerChannelIdx = 0; mixerChannelIdx < mixerGroup->channels()->count(); ++mixerChannelIdx) { - Mixer::MixerChannel* mixerChannel = mixerGroup->channels()->value(mixerChannelIdx); - - if (mixerChannel->actuatorFunction() == function) { - continue; - } - Fact* typeFactOther = mixerChannel->getFact(Function::Type); - if (typeFactOther && typeFactOther->rawValue() == typeFact->rawValue()) { - return typeFact->enumOrValueString() + " (" + _functions.value(function).label +")"; - } + Fact* typeFact = mixerChannel->getFact(Function::Type); + if (typeFact) { + return typeFact->enumOrValueString() + " (" + _functions.value(function).label +")"; } } - return typeFact->enumOrValueString(); } const auto iter = _functionsSpecificLabel.find(function); @@ -589,12 +371,12 @@ QString Mixers::getSpecificLabelForFunction(int function) const return *iter; } -QSet Mixers::getFunctions(bool requiredOnly) const +QSet Mixers::requiredFunctions() const { QSet ret; for (int mixerGroupIdx = 0; mixerGroupIdx < _groups->count(); ++mixerGroupIdx) { Mixer::MixerConfigGroup* mixerGroup = _groups->value(mixerGroupIdx); - if (!requiredOnly || mixerGroup->group().required) { + if (mixerGroup->group().required) { for (int mixerChannelIdx = 0; mixerChannelIdx < mixerGroup->channels()->count(); ++mixerChannelIdx) { const Mixer::MixerChannel* mixerChannel = mixerGroup->channels()->value(mixerChannelIdx); if (mixerChannel->actuatorFunction() != 0) { @@ -615,21 +397,6 @@ QString Mixers::configuredType() const return _mixerOptions[_selectedMixer].type; } -QString Mixers::title() const -{ - if (_selectedMixer == -1) { - return ""; - } - return _mixerOptions[_selectedMixer].title; -} -QString Mixers::helpUrl() const -{ - if (_selectedMixer == -1) { - return ""; - } - return _mixerOptions[_selectedMixer].helpUrl; -} - Fact* Mixers::getFact(const QString& paramName) { if (!_parameterManager->parameterExists(FactSystem::defaultComponentId, paramName)) { diff --git a/src/Vehicle/Actuators/Mixer.h b/src/Vehicle/Actuators/Mixer.h index 955b519..08bb6e6 100644 --- a/src/Vehicle/Actuators/Mixer.h +++ b/src/Vehicle/Actuators/Mixer.h @@ -78,8 +78,6 @@ struct MixerOption }; QString option{}; QString type{}; ///< Mixer type, e.g. multirotor - QString title{}; - QString helpUrl{}; QList actuators{}; }; @@ -128,8 +126,6 @@ private: const bool _advanced; }; -class ChannelConfigInstance; - /** * Config parameters that apply to individual channels */ @@ -142,15 +138,16 @@ public: : QObject(parent), _parameter(parameter), _isActuatorTypeConfig(isActuatorTypeConfig) {} Q_PROPERTY(QString label READ label CONSTANT) - Q_PROPERTY(bool visible READ visible NOTIFY visibleChanged) + Q_PROPERTY(bool visible READ visible CONSTANT) Q_PROPERTY(bool advanced READ advanced CONSTANT) const QString& label() const { return _parameter.param.label; } + const QString& parameter() const { return _parameter.param.name; } Function function() const { return _parameter.function; } bool advanced() const { return _parameter.param.advanced; } bool isActuatorTypeConfig() const { return _isActuatorTypeConfig; } - bool visible() const { return _visible; } + bool visible() const { return true; } const QList& fixedValues() const { return _parameter.values; } @@ -158,37 +155,9 @@ public: int indexOffset() const { return _parameter.param.indexOffset; } const QString& identifier() const { return _parameter.identifier; } - - const MixerParameter& config() const { return _parameter; } - - virtual ChannelConfigInstance* instantiate(int paramIndex, int actuatorTypeIndex, - ParameterManager* parameterManager, std::function factAddedCb); - -signals: - void visibleChanged(); -protected: - void channelInstanceCreated(ChannelConfigInstance* instance); - -private slots: - void instanceVisibleChanged(); - private: const MixerParameter _parameter; const bool _isActuatorTypeConfig; ///< actuator type config instead of mixer channel config - bool _visible{true}; ///< this is false if none of the instances is visible - QList _instances; -}; - -class ChannelConfigVirtualAxis : public ChannelConfig -{ - Q_OBJECT -public: - ChannelConfigVirtualAxis(QObject* parent, const MixerParameter& parameter) - : ChannelConfig(parent, parameter) {} - - ChannelConfigInstance* instantiate(int paramIndex, int actuatorTypeIndex, - ParameterManager* parameterManager, std::function factAddedCb) override; -private: }; /** @@ -198,8 +167,8 @@ class ChannelConfigInstance : public QObject { Q_OBJECT public: - ChannelConfigInstance(QObject* parent, Fact* fact, ChannelConfig& config) - : QObject(parent), _fact(fact), _config(config) {} + ChannelConfigInstance(QObject* parent, Fact* fact, ChannelConfig& config, int ruleApplyIdentifierIdx) + : QObject(parent), _fact(fact), _config(config), _ruleApplyIdentifierIdx(ruleApplyIdentifierIdx) {} Q_PROPERTY(ChannelConfig* config READ channelConfig CONSTANT) Q_PROPERTY(Fact* fact READ fact CONSTANT) @@ -210,66 +179,26 @@ public: Fact* fact() { return _fact; } - bool visible() const { return _visibleRule && _visibleAxis; } - bool enabled() const { return _enabledRule; } + bool visible() const { return _visible; } + bool enabled() const { return _enabled; } - bool visibleRule() const { return _visibleRule; } - bool enabledRule() const { return _enabledRule; } - - void setVisibleRule(bool visible) { _visibleRule = visible; emit visibleChanged(); } - void setEnabledRule(bool enabled) { _enabledRule = enabled; emit enabledChanged(); } - - void setVisibleAxis(bool visible) { _visibleAxis = visible; emit visibleChanged(); } + // controlled via rules + void setVisible(bool visible) { _visible = visible; emit visibleChanged(); } + void setEnabled(bool enabled) { _enabled = enabled; emit enabledChanged(); } int ruleApplyIdentifierIdx() const { return _ruleApplyIdentifierIdx; } - void setRuleApplyIdentifierIdx(int idx) { _ruleApplyIdentifierIdx = idx; } - - virtual void allInstancesInitialized(QmlObjectListModel* configInstances) {} signals: void visibleChanged(); void enabledChanged(); +private: -protected: Fact* _fact{nullptr}; - -private: ChannelConfig& _config; - int _ruleApplyIdentifierIdx{-1}; + const int _ruleApplyIdentifierIdx; - bool _visibleRule{true}; - bool _enabledRule{true}; - - bool _visibleAxis{true}; -}; - -class ChannelConfigInstanceVirtualAxis : public ChannelConfigInstance -{ - Q_OBJECT -public: - enum class Direction { - Custom = 0, - Upwards = 1, - Downwards = 2, - Forwards = 3, - Backwards = 4, - Leftwards = 5, - Rightwards = 6, - }; - ChannelConfigInstanceVirtualAxis(QObject* parent, ChannelConfig& config) - : ChannelConfigInstance(parent, nullptr, config) {} - - void allInstancesInitialized(QmlObjectListModel* configInstances) override; - -private slots: - void setFactFromAxes(bool keepVisible = false); - void setAxesFromFact(); - void axisVisibleChanged(); - void axisEnableChanged(); - -private: - ChannelConfigInstance* _axes[3]{}; - bool _ignoreChange{false}; + bool _visible{true}; + bool _enabled{true}; }; class MixerChannel : public QObject @@ -377,14 +306,9 @@ public: const QMap& functions, const Rules& rules); Q_PROPERTY(QmlObjectListModel* groups READ groups NOTIFY groupsChanged) - Q_PROPERTY(QString title READ title NOTIFY groupsChanged) - Q_PROPERTY(QString helpUrl READ helpUrl NOTIFY groupsChanged) QmlObjectListModel* groups() { return _groups; } - QString title() const; - QString helpUrl() const; - const ActuatorTypes& actuatorTypes() const { return _actuatorTypes; } /** @@ -397,9 +321,9 @@ public: QString getSpecificLabelForFunction(int function) const; /** - * Get the set of all (required) actuator functions + * Get the set of all required actuator functions */ - QSet getFunctions(bool requiredOnly) const; + QSet requiredFunctions() const; QString configuredType() const; diff --git a/src/Vehicle/Actuators/MotorAssignment.cc b/src/Vehicle/Actuators/MotorAssignment.cc index ea64793..7682ef8 100644 --- a/src/Vehicle/Actuators/MotorAssignment.cc +++ b/src/Vehicle/Actuators/MotorAssignment.cc @@ -17,7 +17,7 @@ MotorAssignment::MotorAssignment(QObject* parent, Vehicle* vehicle, QmlObjectListModel* actuators) : QObject(parent), _vehicle(vehicle), _actuators(actuators) { - _spinTimer.setInterval(_spinTimeoutDefaultSec); + _spinTimer.setInterval(1000); _spinTimer.setSingleShot(true); connect(&_spinTimer, &QTimer::timeout, this, &MotorAssignment::spinTimeout); } @@ -141,7 +141,6 @@ void MotorAssignment::start() } _state = State::Running; emit activeChanged(); - _spinTimer.setInterval(_assignMotors ? _spinTimeoutHighSec : _spinTimeoutDefaultSec); _spinTimer.start(); } @@ -170,7 +169,6 @@ void MotorAssignment::selectMotor(int motorIndex) emit activeChanged(); } else { // spin the next motor after some time - _spinTimer.setInterval(_spinTimeoutDefaultSec); _spinTimer.start(); } } @@ -197,10 +195,11 @@ void MotorAssignment::spinTimeout() spinCurrentMotor(); } -void MotorAssignment::ackHandlerEntry(void* resultHandlerData, int /*compId*/, const mavlink_command_ack_t& ack, Vehicle::MavCmdResultFailureCode_t failureCode) +void MotorAssignment::ackHandlerEntry(void* resultHandlerData, int compId, MAV_RESULT commandResult, uint8_t progress, + Vehicle::MavCmdResultFailureCode_t failureCode) { MotorAssignment* motorAssignment = (MotorAssignment*)resultHandlerData; - motorAssignment->ackHandler(static_cast(ack.result), failureCode); + motorAssignment->ackHandler(commandResult, failureCode); } void MotorAssignment::ackHandler(MAV_RESULT commandResult, Vehicle::MavCmdResultFailureCode_t failureCode) @@ -216,12 +215,9 @@ void MotorAssignment::sendMavlinkRequest(int function, float value) { qCDebug(ActuatorsConfigLog) << "Sending actuator test function:" << function << "value:" << value; - Vehicle::MavCmdAckHandlerInfo_t handlerInfo = {}; - handlerInfo.resultHandler = ackHandlerEntry; - handlerInfo.resultHandlerData = this; - _vehicle->sendMavCommandWithHandler( - &handlerInfo, + ackHandlerEntry, // Ack callback + this, // Ack callback data MAV_COMP_ID_AUTOPILOT1, // the ID of the autopilot MAV_CMD_ACTUATOR_TEST, // the mavlink command value, // value diff --git a/src/Vehicle/Actuators/MotorAssignment.h b/src/Vehicle/Actuators/MotorAssignment.h index 7b7fb60..6613889 100644 --- a/src/Vehicle/Actuators/MotorAssignment.h +++ b/src/Vehicle/Actuators/MotorAssignment.h @@ -59,10 +59,8 @@ private slots: void spinTimeout(); private: - static constexpr int _spinTimeoutDefaultSec = 1000; - static constexpr int _spinTimeoutHighSec = 3000; ///< wait a bit longer after assigning motors, so ESCs can initialize - - static void ackHandlerEntry(void* resultHandlerData, int compId, const mavlink_command_ack_t& ack, Vehicle::MavCmdResultFailureCode_t failureCode); + static void ackHandlerEntry(void* resultHandlerData, int compId, MAV_RESULT commandResult, uint8_t progress, + Vehicle::MavCmdResultFailureCode_t failureCode); void ackHandler(MAV_RESULT commandResult, Vehicle::MavCmdResultFailureCode_t failureCode); void sendMavlinkRequest(int function, float value); diff --git a/src/Vehicle/Autotune.cpp b/src/Vehicle/Autotune.cpp index 2c7fea1..8b6e18b 100644 --- a/src/Vehicle/Autotune.cpp +++ b/src/Vehicle/Autotune.cpp @@ -41,7 +41,7 @@ void Autotune::autotuneRequest() //----------------------------------------------------------------------------- -void Autotune::ackHandler(void* resultHandlerData, int compId, const mavlink_command_ack_t& ack, Vehicle::MavCmdResultFailureCode_t failureCode) +void Autotune::ackHandler(void* resultHandlerData, int compId, MAV_RESULT commandResult, uint8_t progress, Vehicle::MavCmdResultFailureCode_t failureCode) { Q_UNUSED(compId); Q_UNUSED(failureCode); @@ -49,38 +49,23 @@ void Autotune::ackHandler(void* resultHandlerData, int compId, const mavlink_com auto * autotune = static_cast(resultHandlerData); if (autotune->_autotuneInProgress) { - if (failureCode == Vehicle::MavCmdResultCommandResultOnly) { - if ((ack.result == MAV_RESULT_IN_PROGRESS) || (ack.result == MAV_RESULT_ACCEPTED)) { - autotune->handleAckStatus(ack.progress); - } - else if (ack.result == MAV_RESULT_FAILED) { - autotune->handleAckFailure(); - } - else { - autotune->handleAckError(ack.result); - } - } else { + if ((commandResult == MAV_RESULT_IN_PROGRESS) || (commandResult == MAV_RESULT_ACCEPTED)) { + autotune->handleAckStatus(progress); + } + else if (commandResult == MAV_RESULT_FAILED) { autotune->handleAckFailure(); } + else { + autotune->handleAckError(commandResult); + } + emit autotune->autotuneChanged(); - } else { + } + else { qWarning() << "Ack received for a command different from MAV_CMD_DO_AUTOTUNE_ENABLE ot wrong UI state."; } } -void Autotune::progressHandler(void* progressHandlerData, int compId, const mavlink_command_ack_t& ack) -{ - Q_UNUSED(compId); - - auto * autotune = static_cast(progressHandlerData); - - if (autotune->_autotuneInProgress) { - autotune->handleAckStatus(ack.progress); - emit autotune->autotuneChanged(); - } else { - qWarning() << "Ack received for a command different from MAV_CMD_DO_AUTOTUNE_ENABLE ot wrong UI state."; - } -} //----------------------------------------------------------------------------- bool Autotune::autotuneEnabled() @@ -177,14 +162,9 @@ void Autotune::stopTimers() //----------------------------------------------------------------------------- void Autotune::sendMavlinkRequest() { - Vehicle::MavCmdAckHandlerInfo_t handlerInfo = {}; - handlerInfo.resultHandler = ackHandler; - handlerInfo.resultHandlerData = this; - handlerInfo.progressHandler = progressHandler; - handlerInfo.progressHandlerData = this; - _vehicle->sendMavCommandWithHandler( - &handlerInfo, + ackHandler, // Ack callback + this, // Ack callback data MAV_COMP_ID_AUTOPILOT1, // the ID of the autopilot MAV_CMD_DO_AUTOTUNE_ENABLE, // the mavlink command 1, // request autotune diff --git a/src/Vehicle/Autotune.h b/src/Vehicle/Autotune.h index e7019fd..6da1883 100644 --- a/src/Vehicle/Autotune.h +++ b/src/Vehicle/Autotune.h @@ -28,8 +28,7 @@ public: Q_INVOKABLE void autotuneRequest (); - static void ackHandler (void* resultHandlerData, int compId, const mavlink_command_ack_t& ack, Vehicle::MavCmdResultFailureCode_t failureCode); - static void progressHandler (void* progressHandlerData, int compId, const mavlink_command_ack_t& ack); + static void ackHandler(void* resultHandlerData, int compId, MAV_RESULT commandResult, uint8_t progress, Vehicle::MavCmdResultFailureCode_t failureCode); bool autotuneEnabled (); bool autotuneInProgress () { return _autotuneInProgress; } diff --git a/src/Vehicle/CMakeLists.txt b/src/Vehicle/CMakeLists.txt index b703f7b..e137e7f 100644 --- a/src/Vehicle/CMakeLists.txt +++ b/src/Vehicle/CMakeLists.txt @@ -34,16 +34,14 @@ add_library(Vehicle ComponentInformationCache.h ComponentInformationManager.cc ComponentInformationManager.h - ComponentInformationTranslation.cc - ComponentInformationTranslation.h EventHandler.cc EventHandler.h FTPManager.cc FTPManager.h GPSRTKFactGroup.cc GPSRTKFactGroup.h - HealthAndArmingCheckReport.cc - HealthAndArmingCheckReport.h + HealthAndArmingChecks.cc + HealthAndArmingChecks.h ImageProtocolManager.cc ImageProtocolManager.h InitialConnectStateMachine.cc @@ -56,8 +54,6 @@ add_library(Vehicle MultiVehicleManager.h StateMachine.cc StateMachine.h - StandardModes.cc - StandardModes.h SysStatusSensorInfo.cc SysStatusSensorInfo.h TerrainFactGroup.cc @@ -73,14 +69,10 @@ add_library(Vehicle VehicleClockFactGroup.h VehicleDistanceSensorFactGroup.cc VehicleDistanceSensorFactGroup.h - VehicleEFIFactGroup.cc - VehicleEFIFactGroup.h VehicleEscStatusFactGroup.cc VehicleEscStatusFactGroup.h VehicleEstimatorStatusFactGroup.cc VehicleEstimatorStatusFactGroup.h - VehicleGeneratorFactGroup.cc - VehicleGeneratorFactGroup.h VehicleLocalPositionFactGroup.cc VehicleLocalPositionFactGroup.h VehicleLocalPositionSetpointFactGroup.cc @@ -104,8 +96,6 @@ add_library(Vehicle VehicleWindFactGroup.h VehicleHygrometerFactGroup.cc VehicleHygrometerFactGroup.h - RemoteIDManager.h - RemoteIDManager.cc ${EXTRA_SRC} ) @@ -117,7 +107,6 @@ target_link_libraries(Vehicle compression libevents_generated libevents_parser - libevents_health_and_arming_checks PUBLIC qgc ) diff --git a/src/Vehicle/ClockFact.json b/src/Vehicle/ClockFact.json index aab3552..53c4120 100644 --- a/src/Vehicle/ClockFact.json +++ b/src/Vehicle/ClockFact.json @@ -8,11 +8,6 @@ "shortDesc": "Time", "type": "string" }, -{ - "name": "currentUTCTime", - "shortDesc": "UTC Time", - "type": "string" -}, { "name": "currentDate", "shortDesc": "Date", diff --git a/src/Vehicle/CompInfo.h b/src/Vehicle/CompInfo.h index d5121f9..bcfffd6 100644 --- a/src/Vehicle/CompInfo.h +++ b/src/Vehicle/CompInfo.h @@ -36,10 +36,12 @@ public: uint32_t crcMetaDataFallback() const { return _uris.crcMetaDataFallback; } bool crcMetaDataValid() const { return _uris.crcMetaDataValid; } bool crcMetaDataFallbackValid() const { return _uris.crcMetaDataFallbackValid; } + uint32_t crcTranslation() const { return _uris.crcTranslation; } + bool crcTranslationValid() const { return _uris.crcTranslationValid; } void setUriMetaData(const QString& uri, uint32_t crc); - virtual void setJson(const QString& metaDataJsonFileName) = 0; + virtual void setJson(const QString& metaDataJsonFileName, const QString& translationJsonFileName) = 0; bool available() const { return !_uris.uriMetaData.isEmpty(); } @@ -53,9 +55,13 @@ private: struct Uris { bool crcMetaDataValid = false; bool crcMetaDataFallbackValid = false; + bool crcTranslationValid = false; + bool crcTranslationFallbackValid = false; uint32_t crcMetaData = 0; uint32_t crcMetaDataFallback = 0; + uint32_t crcTranslation = 0; + uint32_t crcTranslationFallback = 0; QString uriMetaData; QString uriMetaDataFallback; diff --git a/src/Vehicle/CompInfoActuators.cc b/src/Vehicle/CompInfoActuators.cc index 9e2f5a4..82d083e 100644 --- a/src/Vehicle/CompInfoActuators.cc +++ b/src/Vehicle/CompInfoActuators.cc @@ -16,10 +16,10 @@ CompInfoActuators::CompInfoActuators(uint8_t compId, Vehicle* vehicle, QObject* } -void CompInfoActuators::setJson(const QString& metadataJsonFileName) +void CompInfoActuators::setJson(const QString& metadataJsonFileName, const QString& translationJsonFileName) { if (!metadataJsonFileName.isEmpty()) { - vehicle->setActuatorsMetadata(compId, metadataJsonFileName); + vehicle->setActuatorsMetadata(compId, metadataJsonFileName, translationJsonFileName); } } diff --git a/src/Vehicle/CompInfoActuators.h b/src/Vehicle/CompInfoActuators.h index 749a000..3f3f1b8 100644 --- a/src/Vehicle/CompInfoActuators.h +++ b/src/Vehicle/CompInfoActuators.h @@ -25,7 +25,7 @@ public: CompInfoActuators(uint8_t compId, Vehicle* vehicle, QObject* parent = nullptr); // Overrides from CompInfo - void setJson(const QString& metadataJsonFileName) override; + void setJson(const QString& metadataJsonFileName, const QString& translationJsonFileName) override; private: }; diff --git a/src/Vehicle/CompInfoEvents.cc b/src/Vehicle/CompInfoEvents.cc index ac993ac..348f42c 100644 --- a/src/Vehicle/CompInfoEvents.cc +++ b/src/Vehicle/CompInfoEvents.cc @@ -16,8 +16,8 @@ CompInfoEvents::CompInfoEvents(uint8_t compId, Vehicle* vehicle, QObject* parent } -void CompInfoEvents::setJson(const QString& metadataJsonFileName) +void CompInfoEvents::setJson(const QString& metadataJsonFileName, const QString& translationJsonFileName) { - vehicle->setEventsMetadata(compId, metadataJsonFileName); + vehicle->setEventsMetadata(compId, metadataJsonFileName, translationJsonFileName); } diff --git a/src/Vehicle/CompInfoEvents.h b/src/Vehicle/CompInfoEvents.h index a66369d..c70d1ad 100644 --- a/src/Vehicle/CompInfoEvents.h +++ b/src/Vehicle/CompInfoEvents.h @@ -25,7 +25,7 @@ public: CompInfoEvents(uint8_t compId, Vehicle* vehicle, QObject* parent = nullptr); // Overrides from CompInfo - void setJson(const QString& metadataJsonFileName) override; + void setJson(const QString& metadataJsonFileName, const QString& translationJsonFileName) override; private: }; diff --git a/src/Vehicle/CompInfoGeneral.cc b/src/Vehicle/CompInfoGeneral.cc index f51aa2a..7a297e2 100644 --- a/src/Vehicle/CompInfoGeneral.cc +++ b/src/Vehicle/CompInfoGeneral.cc @@ -39,7 +39,7 @@ void CompInfoGeneral::setUris(CompInfo &compInfo) const } } -void CompInfoGeneral::setJson(const QString& metadataJsonFileName) +void CompInfoGeneral::setJson(const QString& metadataJsonFileName, const QString& /*translationJsonFileName*/) { if (metadataJsonFileName.isEmpty()) { return; @@ -82,12 +82,14 @@ void CompInfoGeneral::setJson(const QString& metadataJsonFileName) uris.crcMetaDataFallback = typeValue["fileCrcFallback"].toVariant().toLongLong(); uris.crcMetaDataFallbackValid = typeValue.toObject().contains("fileCrcFallback"); uris.uriTranslation = typeValue["translationUri"].toString(); + uris.crcTranslation = typeValue["translationFileCrc"].toVariant().toLongLong(); + uris.crcTranslationValid = typeValue.toObject().contains("translationFileCrc"); uris.uriTranslationFallback = typeValue["translationUriFallback"].toString(); + uris.crcTranslationFallback = typeValue["translationFileCrcFallback"].toVariant().toLongLong(); + uris.crcTranslationFallbackValid = typeValue.toObject().contains("translationFileCrcFallback"); if (uris.uriMetaData.isEmpty() || !uris.crcMetaDataValid) { - // The CRC is optional for dynamically updated metadata, and once we want to support that this logic needs - // to be updated. - qCDebug(CompInfoGeneralLog) << "Metadata missing fields: type:uri:crcValid" << type << + qCWarning(CompInfoGeneralLog) << "Metadata missing required fields: type:uri:crcValid" << type << uris.uriMetaData << uris.crcMetaDataValid; continue; } diff --git a/src/Vehicle/CompInfoGeneral.h b/src/Vehicle/CompInfoGeneral.h index 8969a83..fc7e820 100644 --- a/src/Vehicle/CompInfoGeneral.h +++ b/src/Vehicle/CompInfoGeneral.h @@ -35,7 +35,7 @@ public: void setUris(CompInfo& compInfo) const; // Overrides from CompInfo - void setJson(const QString& metadataJsonFileName) override; + void setJson(const QString& metadataJsonFileName, const QString& translationJsonFileName) override; private: QMap _supportedTypes; diff --git a/src/Vehicle/CompInfoParam.cc b/src/Vehicle/CompInfoParam.cc index 11339dd..84445de 100644 --- a/src/Vehicle/CompInfoParam.cc +++ b/src/Vehicle/CompInfoParam.cc @@ -30,9 +30,9 @@ CompInfoParam::CompInfoParam(uint8_t compId, Vehicle* vehicle, QObject* parent) } -void CompInfoParam::setJson(const QString& metadataJsonFileName) +void CompInfoParam::setJson(const QString& metadataJsonFileName, const QString& translationJsonFileName) { - qCDebug(CompInfoParamLog) << "setJson: metadataJsonFileName" << metadataJsonFileName; + qCDebug(CompInfoParamLog) << "setJson: metadataJsonFileName:translationJsonFileName" << metadataJsonFileName << translationJsonFileName; if (metadataJsonFileName.isEmpty()) { // This will fall back to using the old FirmwarePlugin mechanism for parameter meta data. diff --git a/src/Vehicle/CompInfoParam.h b/src/Vehicle/CompInfoParam.h index 37d1878..ad15c21 100644 --- a/src/Vehicle/CompInfoParam.h +++ b/src/Vehicle/CompInfoParam.h @@ -32,7 +32,7 @@ public: FactMetaData* factMetaDataForName(const QString& name, FactMetaData::ValueType_t type); // Overrides from CompInfo - void setJson(const QString& metadataJsonFileName) override; + void setJson(const QString& metadataJsonFileName, const QString& translationJsonFileName) override; static void _cachePX4MetaDataFile(const QString& metaDataFile); diff --git a/src/Vehicle/ComponentInformationManager.cc b/src/Vehicle/ComponentInformationManager.cc index 20bd1ca..08141f3 100644 --- a/src/Vehicle/ComponentInformationManager.cc +++ b/src/Vehicle/ComponentInformationManager.cc @@ -11,13 +11,17 @@ #include "Vehicle.h" #include "FTPManager.h" #include "QGCLZMA.h" +#include "JsonHelper.h" #include "CompInfoGeneral.h" #include "CompInfoParam.h" #include "CompInfoEvents.h" #include "CompInfoActuators.h" +#include "QGCFileDownload.h" #include "QGCApplication.h" #include +#include +#include QGC_LOGGING_CATEGORY(ComponentInformationManagerLog, "ComponentInformationManagerLog") @@ -34,11 +38,9 @@ const int ComponentInformationManager::_cStates = sizeof(ComponentInformationMan const RequestMetaDataTypeStateMachine::StateFn RequestMetaDataTypeStateMachine::_rgStates[]= { RequestMetaDataTypeStateMachine::_stateRequestCompInfo, - RequestMetaDataTypeStateMachine::_stateRequestCompInfoDeprecated, RequestMetaDataTypeStateMachine::_stateRequestMetaDataJson, RequestMetaDataTypeStateMachine::_stateRequestMetaDataJsonFallback, RequestMetaDataTypeStateMachine::_stateRequestTranslationJson, - RequestMetaDataTypeStateMachine::_stateRequestTranslate, RequestMetaDataTypeStateMachine::_stateRequestComplete, }; @@ -47,9 +49,7 @@ const int RequestMetaDataTypeStateMachine::_cStates = sizeof(RequestMetaDataType ComponentInformationManager::ComponentInformationManager(Vehicle* vehicle) : _vehicle (vehicle) , _requestTypeStateMachine (this) - , _cachedFileDownload(new QGCCachedFileDownload(this, QStandardPaths::writableLocation(QStandardPaths::CacheLocation) + QLatin1String("/QGCCompInfoFileDownloadCache"))) , _fileCache(ComponentInformationCache::defaultInstance()) - , _translation(new ComponentInformationTranslation(this, _cachedFileDownload)) { _compInfoMap[MAV_COMP_ID_AUTOPILOT1][COMP_METADATA_TYPE_GENERAL] = new CompInfoGeneral (MAV_COMP_ID_AUTOPILOT1, vehicle, this); _compInfoMap[MAV_COMP_ID_AUTOPILOT1][COMP_METADATA_TYPE_PARAMETER] = new CompInfoParam (MAV_COMP_ID_AUTOPILOT1, vehicle, this); @@ -233,23 +233,11 @@ static void _requestMessageResultHandler(void* resultHandlerData, MAV_RESULT res { RequestMetaDataTypeStateMachine* requestMachine = static_cast(resultHandlerData); - if (result == MAV_RESULT_ACCEPTED) { - mavlink_component_metadata_t componentMetadata; - mavlink_msg_component_metadata_decode(&message, &componentMetadata); - requestMachine->compInfo()->setUriMetaData(componentMetadata.uri, componentMetadata.file_crc); - } // else: try deprecated COMPONENT_INFORMATION - - requestMachine->advance(); -} - -static void _requestMessageResultHandlerDeprecated(void* resultHandlerData, MAV_RESULT result, Vehicle::RequestMessageResultHandlerFailureCode_t failureCode, const mavlink_message_t &message) -{ - RequestMetaDataTypeStateMachine* requestMachine = static_cast(resultHandlerData); - if (result == MAV_RESULT_ACCEPTED) { mavlink_component_information_t componentInformation; mavlink_msg_component_information_decode(&message, &componentInformation); requestMachine->compInfo()->setUriMetaData(componentInformation.general_metadata_uri, componentInformation.general_metadata_file_crc); + // TODO: handle peripherals } else { switch (failureCode) { case Vehicle::RequestMessageFailureCommandError: @@ -279,41 +267,6 @@ void RequestMetaDataTypeStateMachine::_stateRequestCompInfo(StateMachine* stateM return; } - if (weakLink.expired()) { - qCDebug(ComponentInformationManagerLog) << QStringLiteral("_stateRequestCompInfo Skipping component information %1 request due to no primary link").arg(requestMachine->typeToString()); - stateMachine->advance(); - } else { - SharedLinkInterfacePtr sharedLink = weakLink.lock(); - if (sharedLink->linkConfiguration()->isHighLatency() || sharedLink->isPX4Flow() || sharedLink->isLogReplay()) { - qCDebug(ComponentInformationManagerLog) << QStringLiteral("_stateRequestCompInfo Skipping component information %1 request due to link type").arg(requestMachine->typeToString()); - stateMachine->advance(); - } else { - qCDebug(ComponentInformationManagerLog) << "Requesting component metadata" << requestMachine->typeToString(); - vehicle->requestMessage( - _requestMessageResultHandler, - stateMachine, - MAV_COMP_ID_AUTOPILOT1, - MAVLINK_MSG_ID_COMPONENT_METADATA); - } - } -} - -void RequestMetaDataTypeStateMachine::_stateRequestCompInfoDeprecated(StateMachine* stateMachine) -{ - RequestMetaDataTypeStateMachine* requestMachine = static_cast(stateMachine); - Vehicle* vehicle = requestMachine->_compMgr->vehicle(); - WeakLinkInterfacePtr weakLink = vehicle->vehicleLinkManager()->primaryLink(); - - if (requestMachine->_compInfo->type != COMP_METADATA_TYPE_GENERAL) { - requestMachine->advance(); - return; - } - if (requestMachine->_compInfo->crcMetaDataValid()) { - qCDebug(ComponentInformationManagerLog) << "COMPONENT_METADATA available, skipping COMPONENT_INFORMATION"; - requestMachine->advance(); - return; - } - if (weakLink.expired()) { qCDebug(ComponentInformationManagerLog) << QStringLiteral("_stateRequestCompInfo Skipping component information %1 request due to no primary link").arg(requestMachine->typeToString()); stateMachine->advance(); @@ -325,7 +278,7 @@ void RequestMetaDataTypeStateMachine::_stateRequestCompInfoDeprecated(StateMachi } else { qCDebug(ComponentInformationManagerLog) << "Requesting component information" << requestMachine->typeToString(); vehicle->requestMessage( - _requestMessageResultHandlerDeprecated, + _requestMessageResultHandler, stateMachine, MAV_COMP_ID_AUTOPILOT1, MAVLINK_MSG_ID_COMPONENT_INFORMATION); @@ -391,7 +344,7 @@ void RequestMetaDataTypeStateMachine::_httpDownloadComplete(QString remoteFile, { qCDebug(ComponentInformationManagerLog) << "RequestMetaDataTypeStateMachine::_httpDownloadComplete remoteFile:localFile:errorMsg" << remoteFile << localFile << errorMsg; - disconnect(qobject_cast(sender()), &QGCCachedFileDownload::downloadComplete, this, &RequestMetaDataTypeStateMachine::_httpDownloadComplete); + disconnect(qobject_cast(sender()), &QGCFileDownload::downloadComplete, this, &RequestMetaDataTypeStateMachine::_httpDownloadComplete); if (errorMsg.isEmpty()) { if (_currentFileName) { *_currentFileName = _downloadCompleteJsonWorker(localFile); @@ -419,7 +372,7 @@ void RequestMetaDataTypeStateMachine::_requestFile(const QString& cacheFileTag, qCDebug(ComponentInformationManagerLog) << "Downloading json" << uri; if (_uriIsMAVLinkFTP(uri)) { connect(ftpManager, &FTPManager::downloadComplete, this, &RequestMetaDataTypeStateMachine::_ftpDownloadComplete); - if (ftpManager->download(MAV_COMP_ID_AUTOPILOT1, uri, QStandardPaths::writableLocation(QStandardPaths::TempLocation))) { + if (ftpManager->download(uri, QStandardPaths::writableLocation(QStandardPaths::TempLocation))) { _downloadStartTime.start(); connect(ftpManager, &FTPManager::commandProgress, this, &RequestMetaDataTypeStateMachine::_ftpDownloadProgress); } else { @@ -428,14 +381,13 @@ void RequestMetaDataTypeStateMachine::_requestFile(const QString& cacheFileTag, advance(); } } else { - connect(_compMgr->_cachedFileDownload, &QGCCachedFileDownload::downloadComplete, this, - &RequestMetaDataTypeStateMachine::_httpDownloadComplete); - if (_compMgr->_cachedFileDownload->download(uri, crcValid ? 0 : ComponentInformationManager::cachedFileMaxAgeSec)) { + QGCFileDownload* download = new QGCFileDownload(this); + connect(download, &QGCFileDownload::downloadComplete, this, &RequestMetaDataTypeStateMachine::_httpDownloadComplete); + if (download->download(uri)) { _downloadStartTime.start(); } else { - qCWarning(ComponentInformationManagerLog) << "RequestMetaDataTypeStateMachine::_requestFile QGCCachedFileDownload::download returned failure"; - disconnect(_compMgr->_cachedFileDownload, &QGCCachedFileDownload::downloadComplete, this, - &RequestMetaDataTypeStateMachine::_httpDownloadComplete); + qCWarning(ComponentInformationManagerLog) << "RequestMetaDataTypeStateMachine::_requestFile QGCFileDownload::download returned failure"; + disconnect(download, &QGCFileDownload::downloadComplete, this, &RequestMetaDataTypeStateMachine::_httpDownloadComplete); advance(); } } @@ -483,39 +435,11 @@ void RequestMetaDataTypeStateMachine::_stateRequestTranslationJson(StateMachine* { RequestMetaDataTypeStateMachine* requestMachine = static_cast(stateMachine); CompInfo* compInfo = requestMachine->compInfo(); + const QString fileTag = ComponentInformationManager::_getFileCacheTag( + compInfo->type, compInfo->crcTranslation(), true); const QString uri = compInfo->uriTranslation(); - requestMachine->_requestFile("", false, uri, requestMachine->_jsonTranslationFileName); -} - -void RequestMetaDataTypeStateMachine::_stateRequestTranslate(StateMachine* stateMachine) -{ - RequestMetaDataTypeStateMachine* requestMachine = static_cast(stateMachine); - requestMachine->_jsonMetadataTranslatedFileName = ""; - if (requestMachine->_jsonTranslationFileName.isEmpty()) { - requestMachine->advance(); - } else { - connect(requestMachine->_compMgr->translation(), &ComponentInformationTranslation::downloadComplete, - requestMachine, &RequestMetaDataTypeStateMachine::_downloadAndTranslationComplete); - if (!requestMachine->_compMgr->translation()->downloadAndTranslate(requestMachine->_jsonTranslationFileName, - requestMachine->_jsonMetadataFileName, - ComponentInformationManager::cachedFileMaxAgeSec)) { - disconnect(requestMachine->_compMgr->translation(), &ComponentInformationTranslation::downloadComplete, - requestMachine, &RequestMetaDataTypeStateMachine::_downloadAndTranslationComplete); - qCDebug(ComponentInformationManagerLog) << "downloadAndTranslate() failed"; - requestMachine->advance(); - } - } -} - -void RequestMetaDataTypeStateMachine::_downloadAndTranslationComplete(QString translatedJsonTempFile, QString errorMsg) -{ - disconnect(_compMgr->translation(), &ComponentInformationTranslation::downloadComplete, - this, &RequestMetaDataTypeStateMachine::_downloadAndTranslationComplete); - _jsonMetadataTranslatedFileName = translatedJsonTempFile; - if (!errorMsg.isEmpty()) { - qCWarning(ComponentInformationManagerLog) << "Metadata translation failed:" << errorMsg; - } - advance(); + requestMachine->_jsonTranslationCrcValid = compInfo->crcTranslationValid(); + requestMachine->_requestFile(fileTag, compInfo->crcTranslationValid(), uri, requestMachine->_jsonTranslationFileName); } void RequestMetaDataTypeStateMachine::_stateRequestComplete(StateMachine* stateMachine) @@ -523,12 +447,7 @@ void RequestMetaDataTypeStateMachine::_stateRequestComplete(StateMachine* stateM RequestMetaDataTypeStateMachine* requestMachine = static_cast(stateMachine); CompInfo* compInfo = requestMachine->compInfo(); - if (requestMachine->_jsonMetadataTranslatedFileName.isEmpty()) { - compInfo->setJson(requestMachine->_jsonMetadataFileName); - } else { - compInfo->setJson(requestMachine->_jsonMetadataTranslatedFileName); - QFile(requestMachine->_jsonMetadataTranslatedFileName).remove(); - } + compInfo->setJson(requestMachine->_jsonMetadataFileName, requestMachine->_jsonTranslationFileName); // if we don't have a CRC we didn't cache the file and we need to delete it if (!requestMachine->_jsonMetadataCrcValid && !requestMachine->_jsonMetadataFileName.isEmpty()) { diff --git a/src/Vehicle/ComponentInformationManager.h b/src/Vehicle/ComponentInformationManager.h index 2ecfde6..30170ba 100644 --- a/src/Vehicle/ComponentInformationManager.h +++ b/src/Vehicle/ComponentInformationManager.h @@ -13,7 +13,6 @@ #include "QGCMAVLink.h" #include "StateMachine.h" #include "ComponentInformationCache.h" -#include "ComponentInformationTranslation.h" #include @@ -46,15 +45,12 @@ private slots: void _ftpDownloadProgress (float progress); void _httpDownloadComplete (QString remoteFile, QString localFile, QString errorMsg); QString _downloadCompleteJsonWorker (const QString& jsonFileName); - void _downloadAndTranslationComplete(QString translatedJsonTempFile, QString errorMsg); private: static void _stateRequestCompInfo (StateMachine* stateMachine); - static void _stateRequestCompInfoDeprecated (StateMachine* stateMachine); static void _stateRequestMetaDataJson (StateMachine* stateMachine); static void _stateRequestMetaDataJsonFallback(StateMachine* stateMachine); static void _stateRequestTranslationJson (StateMachine* stateMachine); - static void _stateRequestTranslate (StateMachine* stateMachine); static void _stateRequestComplete (StateMachine* stateMachine); static bool _uriIsMAVLinkFTP (const QString& uri); @@ -63,7 +59,6 @@ private: ComponentInformationManager* _compMgr = nullptr; CompInfo* _compInfo = nullptr; QString _jsonMetadataFileName; - QString _jsonMetadataTranslatedFileName; bool _jsonMetadataCrcValid = false; QString _jsonTranslationFileName; bool _jsonTranslationCrcValid = false; @@ -83,8 +78,6 @@ class ComponentInformationManager : public StateMachine Q_OBJECT public: - static constexpr int cachedFileMaxAgeSec = 3 * 24 * 3600; ///< 3 days - ComponentInformationManager(Vehicle* vehicle); typedef void (*RequestAllCompleteFn)(void* requestAllCompleteFnData); @@ -99,7 +92,6 @@ public: const StateFn* rgStates (void) const final; ComponentInformationCache& fileCache() { return _fileCache; } - ComponentInformationTranslation* translation() { return _translation; } float progress() const; @@ -126,9 +118,7 @@ private: RequestMetaDataTypeStateMachine _requestTypeStateMachine; RequestAllCompleteFn _requestAllCompleteFn = nullptr; void* _requestAllCompleteFnData = nullptr; - QGCCachedFileDownload* _cachedFileDownload = nullptr; ComponentInformationCache& _fileCache; - ComponentInformationTranslation* _translation = nullptr; QMap> _compInfoMap; diff --git a/src/Vehicle/ComponentInformationTranslation.cc b/src/Vehicle/ComponentInformationTranslation.cc deleted file mode 100644 index 382e2bd..0000000 --- a/src/Vehicle/ComponentInformationTranslation.cc +++ /dev/null @@ -1,341 +0,0 @@ -/**************************************************************************** - * - * (c) 2022 QGROUNDCONTROL PROJECT - * - * QGroundControl is licensed according to the terms in the file - * COPYING.md in the root of the source code directory. - * - ****************************************************************************/ - - -#include "ComponentInformationTranslation.h" -#include "JsonHelper.h" -#include "QGCLZMA.h" - -#include -#include -#include -#include - -QGC_LOGGING_CATEGORY(ComponentInformationTranslationLog, "ComponentInformationTranslationLog") - -ComponentInformationTranslation::ComponentInformationTranslation(QObject* parent, - QGCCachedFileDownload* cachedFileDownload) - : QObject(parent), _cachedFileDownload(cachedFileDownload) -{ -} - -bool ComponentInformationTranslation::downloadAndTranslate(const QString& summaryJsonFile, - const QString& toTranslateJsonFile, int maxCacheAgeSec) -{ - // Parse summary: find url for current locale - _toTranslateJsonFile = toTranslateJsonFile; - QString locale = QLocale::system().name(); - QString url = getUrlFromSummaryJson(summaryJsonFile, locale); - if (url.isEmpty()) { - return false; - } - - // Download file - connect(_cachedFileDownload, &QGCCachedFileDownload::downloadComplete, this, &ComponentInformationTranslation::onDownloadCompleted); - if (!_cachedFileDownload->download(url, maxCacheAgeSec)) { - qCWarning(ComponentInformationTranslationLog) << "Metadata translation download failed"; - disconnect(_cachedFileDownload, &QGCCachedFileDownload::downloadComplete, this, &ComponentInformationTranslation::onDownloadCompleted); - return false; - } - return true; -} - -QString ComponentInformationTranslation::getUrlFromSummaryJson(const QString &summaryJsonFile, const QString &locale) -{ - QString errorString; - QJsonDocument jsonDoc; - - if (!JsonHelper::isJsonFile(summaryJsonFile, jsonDoc, errorString)) { - qCWarning(ComponentInformationTranslationLog) << "Metadata translation summary json file open failed:" << errorString; - return ""; - } - QJsonObject jsonObj = jsonDoc.object(); - - QJsonObject localeObj = jsonObj[locale].toObject(); - if (localeObj.isEmpty()) { - qCWarning(ComponentInformationTranslationLog) << "Locale " << locale << " not found in json"; - return ""; - } - - QString url = localeObj["url"].toString(); - if (url.isEmpty()) { - qCWarning(ComponentInformationTranslationLog) << "Locale " << locale << ": no url set"; - } - return url; -} - -void ComponentInformationTranslation::onDownloadCompleted(QString remoteFile, QString localFile, QString errorMsg) -{ - disconnect(_cachedFileDownload, &QGCCachedFileDownload::downloadComplete, this, &ComponentInformationTranslation::onDownloadCompleted); - - QString tsFileName = localFile; - bool deleteFile = false; - if (errorMsg.isEmpty()) { - - // Decompress if needed - if (localFile.endsWith(".lzma", Qt::CaseInsensitive) || localFile.endsWith(".xz", Qt::CaseInsensitive)) { - tsFileName = QDir(QStandardPaths::writableLocation(QStandardPaths::TempLocation)).absoluteFilePath("qgc_translation_file_decompressed.ts"); - if (QGCLZMA::inflateLZMAFile(localFile, tsFileName)) { - deleteFile = true; - } else { - errorMsg = "Inflate of compressed json failed, " + remoteFile; - } - } - } - - // Translate json file to new temp file - QString translatedJsonFilename; - if (errorMsg.isEmpty()) { - translatedJsonFilename = translateJsonUsingTS(_toTranslateJsonFile, tsFileName); - if (translatedJsonFilename.isEmpty()) { - errorMsg = "Failed to translate json file"; - } - } - - if (deleteFile) { - QFile(localFile).remove(); - } - - emit downloadComplete(translatedJsonFilename, errorMsg); -} - -QString ComponentInformationTranslation::translateJsonUsingTS(const QString &toTranslateJsonFile, const QString &tsFile) -{ - qCInfo(ComponentInformationTranslationLog) << "Translating" << toTranslateJsonFile << "using" << tsFile; - - // Open JSON and get the 'translation' object - QString errorString; - QJsonDocument jsonDoc; - - if (!JsonHelper::isJsonFile(toTranslateJsonFile, jsonDoc, errorString)) { - qCWarning(ComponentInformationTranslationLog) << "Metadata json file to translate open failed:" << errorString; - return ""; - } - QJsonObject jsonObj = jsonDoc.object(); - - QJsonObject translationObj = jsonObj["translation"].toObject(); - if (translationObj.isEmpty()) { - qCWarning(ComponentInformationTranslationLog) << "json file does not contain 'translation' object"; - return ""; - } - - - // Open and parse TS file into a hash table - QHash translations; - QFile xmlFile(tsFile); - if (!xmlFile.open(QIODevice::ReadOnly)) { - qCWarning(ComponentInformationTranslationLog) << "Failed opening TS file"; - return ""; - } - - QXmlStreamReader xml(xmlFile.readAll()); - xmlFile.close(); - if (xml.hasError()) { - qCWarning(ComponentInformationTranslationLog) << "Badly formed TS (XML)" << xml.errorString(); - return ""; - } - - bool insideTS = false; - - while (!xml.atEnd()) { - if (xml.isStartElement()) { - QString elementName = xml.name().toString(); - - if (elementName == "TS") { - insideTS = true; - } else if (insideTS && elementName == "context") { - // Read whole - QString name; - QString translation; - bool insideMessage = false; - while (!xml.atEnd()) { - - if (xml.isStartElement()) { - if (xml.name().toString() == "message") { - insideMessage = true; - } else if (xml.name().toString() == "name" && !insideMessage) { - name = xml.readElementText(); - } else if (xml.name().toString() == "translation" && insideMessage) { - translation = xml.readElementText(); - } - } else if (xml.isEndElement()) { - if (xml.name().toString() == "context") { - break; - } else if (xml.name().toString() == "message") { - insideMessage = false; - } - } - - xml.readNext(); - } - - if (name != "" && translation != "") { - translations[name] = translation; - } - } - - } else if (xml.isEndElement()) { - QString elementName = xml.name().toString(); - - if (elementName == "TS") { - insideTS = false; - } - } - xml.readNext(); - } - - if (translations.isEmpty()) { - qCWarning(ComponentInformationTranslationLog) << "No translations found in TS file"; - return ""; - } - - // Translate the json document - jsonDoc.setObject(translate(translationObj, translations, jsonDoc.object())); - - // Write to file - QString translatedFileName = QDir(QStandardPaths::writableLocation(QStandardPaths::TempLocation)).absoluteFilePath("qgc_translated_metadata.json"); - - QFile translatedFile(translatedFileName); - if (!translatedFile.open(QFile::WriteOnly|QFile::Truncate)) { - errorString = tr("File open failed: file:error %1 %2").arg(translatedFile.fileName()).arg(translatedFile.errorString()); - return ""; - } - translatedFile.write(jsonDoc.toJson()); - translatedFile.close(); - - qCInfo(ComponentInformationTranslationLog) << "JSON file" << toTranslateJsonFile << "successfully translated to" << translatedFileName; - return translatedFileName; -} - -QJsonObject ComponentInformationTranslation::translate(const QJsonObject& translationObj, - const QHash& translations, QJsonObject doc) -{ - QJsonObject defs = translationObj["$defs"].toObject(); - if (translationObj.contains("items")) { - doc = translateItems("", defs, translationObj["items"].toObject(), translations, doc); - } - if (translationObj.contains("$ref")) { - doc = translateItems("", defs, defs[getRefName(translationObj["$ref"].toString())].toObject(), translations, doc); - } - return doc; -} - -QJsonObject ComponentInformationTranslation::translateItems(const QString& prefix, const QJsonObject& defs, - const QJsonObject& translationObj, - const QHash& translations, - QJsonObject jsonData) -{ - for (auto translationItemIter = translationObj.begin(); translationItemIter != translationObj.end(); ++translationItemIter) { - QStringList translationKeys; - if (translationItemIter.key() == "*") { - translationKeys = jsonData.keys(); - } else { - translationKeys.append(translationItemIter.key()); - } - for (const auto& jsonItem : translationKeys) { - QString nextPrefix = prefix + '/' + jsonItem; - QJsonObject nextTranslationObj = translationItemIter.value().toObject(); - if (jsonData.contains(jsonItem)) { - jsonData[jsonItem] = translateTranslationItems(nextPrefix, defs, nextTranslationObj, translations, jsonData[jsonItem]); - } - } - } - return jsonData; -} - -QString ComponentInformationTranslation::getRefName(const QString& ref) -{ - // expected format: '#/$defs/' - return ref.mid(8); -} - -QJsonValue ComponentInformationTranslation::translateTranslationItems(const QString& prefix, const QJsonObject& defs, - const QJsonObject& translationObj, - const QHash& translations, - QJsonValue jsonData) -{ - if (translationObj.contains("list")) { - QJsonObject translationList = translationObj["list"].toObject(); - QString key = translationList["key"].toString(); - int idx = 0; - QJsonArray array = jsonData.toArray(); - for (const auto& listEntry : array) { - QString value; - if (!key.isEmpty() && listEntry.toObject().contains(key)) { - value = listEntry.toObject()[key].toString(); - } else { - value = QString::number(idx); - } - array[idx] = translateTranslationItems(prefix + '/' + value, defs, translationList, translations, listEntry); - ++idx; - } - jsonData = array; - } - if (translationObj.contains("translate")) { - for (const auto& translateName : translationObj["translate"].toArray()) { - QString translateNameStr = translateName.toString(); - if (jsonData.toObject().contains(translateNameStr)) { - if (jsonData[translateNameStr].isString()) { - auto lookupIter = translations.find(prefix + '/' + translateNameStr); - if (lookupIter != translations.end()) { - // We need to copy as there's no way to modify nested elements! See https://bugreports.qt.io/browse/QTBUG-25723 - QJsonObject obj = jsonData.toObject(); - obj.insert(translateNameStr, lookupIter.value()); - jsonData = obj; - } - } else if (jsonData[translateNameStr].isArray()) { // List of strings - QJsonArray jsonArray = jsonData[translateNameStr].toArray(); - for (int i=0; i < jsonArray.count(); ++i) { - auto lookupIter = translations.find(prefix + '/' + translateNameStr + '/' + QString::number(i)); - if (lookupIter != translations.end()) { - jsonArray.replace(i, lookupIter.value()); - } - } - QJsonObject obj = jsonData.toObject(); - obj[translateNameStr] = jsonArray; - jsonData = obj; - } - } - } - } - - if (translationObj.contains("translate-global")) { - for (const auto& translateName : translationObj["translate-global"].toArray()) { - QString translateNameStr = translateName.toString(); - if (jsonData.toObject().contains(translateNameStr)) { - if (jsonData[translateNameStr].isString()) { - auto lookupIter = translations.find("$globals/" + translateNameStr + "/" + jsonData[translateNameStr].toString()); - if (lookupIter != translations.end()) { - QJsonObject obj = jsonData.toObject(); - obj.insert(translateNameStr, lookupIter.value()); - jsonData = obj; - } - } else if (jsonData[translateNameStr].isArray()) { // List of strings - QJsonArray jsonArray = jsonData[translateNameStr].toArray(); - for (int i=0; i < jsonArray.count(); ++i) { - auto lookupIter = translations.find("$globals/" + translateNameStr + '/' + jsonArray[i].toString()); - if (lookupIter != translations.end()) { - jsonArray.replace(i, lookupIter.value()); - } - } - QJsonObject obj = jsonData.toObject(); - obj[translateNameStr] = jsonArray; - jsonData = obj; - } - } - } - } - if (translationObj.contains("items")) { - jsonData = translateItems(prefix, defs, translationObj["items"].toObject(), translations, jsonData.toObject()); - } - if (translationObj.contains("$ref")) { - jsonData = translateTranslationItems(prefix, defs, defs[getRefName(translationObj["$ref"].toString())].toObject(), translations, jsonData); - } - return jsonData; -} diff --git a/src/Vehicle/ComponentInformationTranslation.h b/src/Vehicle/ComponentInformationTranslation.h deleted file mode 100644 index f31ac5a..0000000 --- a/src/Vehicle/ComponentInformationTranslation.h +++ /dev/null @@ -1,55 +0,0 @@ -/**************************************************************************** - * - * (c) 2022 QGROUNDCONTROL PROJECT - * - * QGroundControl is licensed according to the terms in the file - * COPYING.md in the root of the source code directory. - * - ****************************************************************************/ - -#pragma once - -#include -#include - -#include "QGCLoggingCategory.h" -#include "QGCCachedFileDownload.h" - -Q_DECLARE_LOGGING_CATEGORY(ComponentInformationTranslationLog) - -class ComponentInformationTranslation : public QObject -{ - Q_OBJECT - -public: - ComponentInformationTranslation(QObject* parent, QGCCachedFileDownload* cachedFileDownload); - - /// Download translation file according to the currently set locale and translate the json file. - /// emits downloadComplete() when done (with a temporary file that should be deleted) - /// @param summaryJsonFile json file with url's to translation files (.ts) - /// @param toTranslateJsonFile json file to be translated - /// @param maxCacheAgeSec Maximum age of cached item in seconds - /// @return true: Asynchronous download has started, false: Download initialization failed - bool downloadAndTranslate(const QString& summaryJsonFile, const QString& toTranslateJsonFile, int maxCacheAgeSec); - - QString translateJsonUsingTS(const QString& toTranslateJsonFile, const QString& tsFile); - -signals: - void downloadComplete(QString translatedJsonTempFile, QString errorMsg); - -private slots: - void onDownloadCompleted(QString remoteFile, QString localFile, QString errorMsg); -private: - QString getUrlFromSummaryJson(const QString& summaryJsonFile, const QString& locale); - - static QJsonObject translate(const QJsonObject& translationObj, const QHash& translations, QJsonObject doc); - - static QJsonObject translateItems(const QString& prefix, const QJsonObject& defs, const QJsonObject& translationObj, - const QHash& translations, QJsonObject jsonData); - static QJsonValue translateTranslationItems(const QString& prefix, const QJsonObject& defs, const QJsonObject& translationObj, - const QHash& translations, QJsonValue jsonData); - static QString getRefName(const QString& ref); - - QGCCachedFileDownload* _cachedFileDownload = nullptr; - QString _toTranslateJsonFile; -}; diff --git a/src/Vehicle/EFIFact.json b/src/Vehicle/EFIFact.json deleted file mode 100644 index e7c7f3d..0000000 --- a/src/Vehicle/EFIFact.json +++ /dev/null @@ -1,122 +0,0 @@ -{ - "version": 1, - "fileType": "FactMetaData", - "QGC.MetaData.Facts": -[ -{ - "name": "health", - "shortDesc": "Health", - "type": "int8" -}, -{ - "name": "ecuIndex", - "shortDesc": "Ecu Index", - "type": "float", - "decimalPlaces": 1, - "units": "A" -}, -{ - "name": "rpm", - "shortDesc": "Rpm", - "type": "float", - "decimalPlaces": 1 -}, -{ - "name": "fuelConsumed", - "shortDesc": "Fuel Consumed", - "type": "float", - "decimalPlaces": 1, - "units": "cm^3" -}, -{ - "name": "fuelFlow", - "shortDesc": "Fuel Flow", - "type": "float", - "decimalPlaces": 1, - "units": "cm^3/min" -}, -{ - "name": "engineLoad", - "shortDesc": "Engine Load", - "type": "float", - "decimalPlaces": 1, - "units": "%" -}, -{ - "name": "throttlePos", - "shortDesc": "Throttle Position", - "type": "float", - "decimalPlaces": 1, - "units": "%" -}, -{ - "name": "sparkTime", - "shortDesc": "Spark dwell time", - "type": "float", - "decimalPlaces": 1, - "units": "ms" -}, -{ - "name": "baroPress", - "shortDesc": "BarometricPressure", - "type": "float", - "decimalPlaces": 1, - "units": "kPa" -}, -{ - "name": "intakePress", - "shortDesc": "Intake mainfold pressure", - "type": "float", - "decimalPlaces": 1, - "units": "kPa" -}, -{ - "name": "intakeTemp", - "shortDesc": "Intake mainfold temperature", - "type": "float", - "decimalPlaces": 1, - "units": "°C" -}, -{ - "name": "cylinderTemp", - "shortDesc": "Cylinder head temperature", - "type": "float", - "decimalPlaces": 1, - "units": "°C" -}, -{ - "name": "ignTime", - "shortDesc": "Ignition Timing", - "type": "float", - "decimalPlaces": 1, - "units": "deg" -}, -{ - "name": "injTime", - "shortDesc": "Injection Time", - "type": "float", - "decimalPlaces": 1, - "units": "ms" -}, -{ - "name": "exGasTemp", - "shortDesc": "Exhaust gas Temperature", - "type": "float", - "decimalPlaces": 1, - "units": "°C" -}, -{ - "name": "throttleOut", - "shortDesc": "Throttle Out", - "type": "float", - "decimalPlaces": 1, - "units": "%" -}, -{ - "name": "ptComp", - "shortDesc": "Pt Compensation", - "type": "float", - "decimalPlaces": 1 -} -] -} \ No newline at end of file diff --git a/src/Vehicle/EventHandler.cc b/src/Vehicle/EventHandler.cc index 0c8f578..7a84141 100644 --- a/src/Vehicle/EventHandler.cc +++ b/src/Vehicle/EventHandler.cc @@ -23,8 +23,7 @@ EventHandler::EventHandler(QObject* parent, const QString& profile, handle_event _sendRequestCB(sendRequestCB), _compid(componentId) { - auto error_cb = [componentId, this](int num_events_lost) { - _healthAndArmingChecks.reset(); + auto error_cb = [componentId](int num_events_lost) { qCWarning(EventsLog) << "Events got lost:" << num_events_lost << "comp_id:" << componentId; }; @@ -42,12 +41,6 @@ EventHandler::EventHandler(QObject* parent, const QString& profile, handle_event _parser.formatters().url = [](const std::string& content, const std::string& link) { return ""+content+""; }; - _parser.formatters().param = [](const std::string& content) { - return ""+content+""; }; - - _parser.formatters().escape = [](const std::string& str) { - return QString::fromStdString(str).toHtmlEscaped().toStdString(); }; - events::ReceiveProtocol::Callbacks callbacks{error_cb, _sendRequestCB, std::bind(&EventHandler::gotEvent, this, std::placeholders::_1), timeout_cb}; _protocol = new events::ReceiveProtocol(callbacks, ourSystemId, ourComponentId, systemId, componentId); @@ -82,10 +75,6 @@ void EventHandler::gotEvent(const mavlink_event_t& event) qCDebug(EventsLog) << "Got Event: ID:" << parsed_event->id() << "namespace:" << parsed_event->eventNamespace().c_str() << "name:" << parsed_event->name().c_str() << "msg:" << parsed_event->message().c_str(); - if (_healthAndArmingChecks.handleEvent(*parsed_event)) { - _healthAndArmingChecksValid = true; - emit healthAndArmingChecksUpdated(); - } _handleEventCB(std::move(parsed_event)); } @@ -94,9 +83,13 @@ void EventHandler::handleEvents(const mavlink_message_t& message) _protocol->processMessage(message); } -void EventHandler::setMetadata(const QString &metadataJsonFileName) +void EventHandler::setMetadata(const QString &metadataJsonFileName, const QString &translationJsonFileName) { - if (_parser.loadDefinitionsFile(metadataJsonFileName.toStdString())) { + auto translate = [](const std::string& s) { + // TODO: use translation file + return s; + }; + if (_parser.loadDefinitionsFile(metadataJsonFileName.toStdString(), translate)) { if (_parser.hasDefinitions()) { // do we have queued events? for (const auto& event : _pendingEvents) { @@ -109,13 +102,3 @@ void EventHandler::setMetadata(const QString &metadataJsonFileName) } } -int EventHandler::getModeGroup(int32_t customMode) -{ - events::parser::Parser::NavigationModeGroups groups = _parser.navigationModeGroups(_compid); - for (auto groupIter : groups.groups) { - if (groupIter.second.find(customMode) != groupIter.second.end()) { - return groupIter.first; - } - } - return -1; -} diff --git a/src/Vehicle/EventHandler.h b/src/Vehicle/EventHandler.h index 0b69f52..ae794f6 100644 --- a/src/Vehicle/EventHandler.h +++ b/src/Vehicle/EventHandler.h @@ -15,8 +15,9 @@ #include +#include "HealthAndArmingChecks.h" + #include -#include #include #include @@ -35,29 +36,16 @@ public: void handleEvents(const mavlink_message_t& message); - void setMetadata(const QString& metadataJsonFileName); - - const events::HealthAndArmingChecks::Results& healthAndArmingCheckResults() const { return _healthAndArmingChecks.results(); } - bool healthAndArmingCheckResultsValid() const { return _healthAndArmingChecksValid; } - - int getModeGroup(int32_t customMode); - - bool healthAndArmingChecksSupported() const { - const auto& protocols = _parser.supportedProtocols(_compid); - return protocols.find("health_and_arming_check") != protocols.end(); - } - -signals: - void healthAndArmingChecksUpdated(); + void setMetadata(const QString& metadataJsonFileName, const QString& translationJsonFileName); + HealthAndArmingCheckHandler& healthAndArmingChecks() { return _healthAndArmingChecks; } private: void gotEvent(const mavlink_event_t& event); events::ReceiveProtocol* _protocol{nullptr}; QTimer _timer; events::parser::Parser _parser; - events::HealthAndArmingChecks _healthAndArmingChecks; - bool _healthAndArmingChecksValid{false}; + HealthAndArmingCheckHandler _healthAndArmingChecks; QVector _pendingEvents; ///< stores incoming events until we have the metadata loaded handle_event_f _handleEventCB; send_request_event_message_f _sendRequestCB; diff --git a/src/Vehicle/FTPManager.cc b/src/Vehicle/FTPManager.cc index 4b3d3c2..4de6048 100644 --- a/src/Vehicle/FTPManager.cc +++ b/src/Vehicle/FTPManager.cc @@ -34,9 +34,9 @@ FTPManager::FTPManager(Vehicle* vehicle) Q_ASSERT(sizeof(MavlinkFTP::RequestHeader) == 12); } -bool FTPManager::download(uint8_t fromCompId, const QString& fromURI, const QString& toDir, const QString& fileName, bool checksize) +bool FTPManager::download(const QString& fromURI, const QString& toDir) { - qCDebug(FTPManagerLog) << "download fromURI:" << fromURI << "to:" << toDir << "fromCompId:" << fromCompId; + qCDebug(FTPManagerLog) << "download fromURI:" << fromURI << "to:" << toDir; if (!_rgStateMachine.isEmpty()) { qCDebug(FTPManagerLog) << "Cannot download. Already in another operation"; @@ -56,9 +56,8 @@ bool FTPManager::download(uint8_t fromCompId, const QString& fromURI, const QStr _downloadState.reset(); _downloadState.toDir.setPath(toDir); - _downloadState.checksize = checksize; - if (!_parseURI(fromCompId, fromURI, _downloadState.fullPathOnVehicle, _ftpCompId)) { + if (!_parseURI(fromURI, _downloadState.fullPathOnVehicle, _ftpCompId)) { qCWarning(FTPManagerLog) << "_parseURI failed"; return false; } @@ -73,11 +72,7 @@ bool FTPManager::download(uint8_t fromCompId, const QString& fromURI, const QStr } lastDirSlashIndex++; // move past slash - if (fileName.isEmpty()) { - _downloadState.fileName = _downloadState.fullPathOnVehicle.right(_downloadState.fullPathOnVehicle.size() - lastDirSlashIndex); - } else { - _downloadState.fileName = fileName; - } + _downloadState.fileName = _downloadState.fullPathOnVehicle.right(_downloadState.fullPathOnVehicle.size() - lastDirSlashIndex); qCDebug(FTPManagerLog) << "_downloadState.fullPathOnVehicle:_downloadState.fileName" << _downloadState.fullPathOnVehicle << _downloadState.fileName; @@ -171,8 +166,7 @@ void FTPManager::_downloadComplete(const QString& errorMsg) void FTPManager::_mavlinkMessageReceived(const mavlink_message_t& message) { - if (message.msgid != MAVLINK_MSG_ID_FILE_TRANSFER_PROTOCOL || - message.sysid != _vehicle->id() || message.compid != _ftpCompId) { + if (message.msgid != MAVLINK_MSG_ID_FILE_TRANSFER_PROTOCOL || message.compid != _ftpCompId) { return; } @@ -300,7 +294,7 @@ void FTPManager::_openFileROAckOrNak(const MavlinkFTP::Request* ackOrNak) } } else if (ackOrNak->hdr.opcode == MavlinkFTP::kRspNak) { qCDebug(FTPManagerLog) << "_handlOpenFileROAck: Nak -" << _errorMsgFromNak(ackOrNak); - _downloadComplete(tr("Download failed") + ": " + _errorMsgFromNak(ackOrNak)); + _downloadComplete(tr("Download failed")); } } @@ -392,22 +386,18 @@ void FTPManager::_burstReadFileAckOrNak(const MavlinkFTP::Request* ackOrNak) emit commandProgress((float)(_downloadState.bytesWritten) / (float)_downloadState.fileSize); } } else if (ackOrNak->hdr.opcode == MavlinkFTP::kRspNak) { + if (ackOrNak->hdr.seqNumber != _expectedIncomingSeqNumber) { + qCDebug(FTPManagerLog) << "_burstReadFileAckOrNak: Disregarding Nak due to incorrect sequence actual:expected" << ackOrNak->hdr.seqNumber << _expectedIncomingSeqNumber; + return; + } + MavlinkFTP::ErrorCode_t errorCode = static_cast(ackOrNak->data[0]); if (errorCode == MavlinkFTP::kErrEOF) { // Burst sequence has gone through the whole file - if (ackOrNak->hdr.seqNumber != _expectedIncomingSeqNumber) { - qCDebug(FTPManagerLog) << "_burstReadFileAckOrNak: EOF Nak" - "with incorrect sequence nr actual:expected" - << ackOrNak->hdr.seqNumber << _expectedIncomingSeqNumber; - /* We have received the EOF Nak but out of sequence, i.e. data is missing */ - _expectedIncomingSeqNumber = ackOrNak->hdr.seqNumber; - _burstReadFileWorker(true); /* Retry from last expected offset */ - } else { - qCDebug(FTPManagerLog) << "_burstReadFileAckOrNak EOF"; - _advanceStateMachine(); - } - } else { /* Don't care is this is out of sequence */ + qCDebug(FTPManagerLog) << "_burstReadFileAckOrNak EOF"; + _advanceStateMachine(); + } else { qCDebug(FTPManagerLog) << "_burstReadFileAckOrNak: Nak -" << _errorMsgFromNak(ackOrNak); _downloadComplete(tr("Download failed")); } @@ -452,7 +442,7 @@ void FTPManager::_fillMissingBlocksWorker(bool firstRequest) _sendRequestExpectAck(&request); } else { // We should have the full file now - if (_downloadState.checksize == false || _downloadState.bytesWritten == _downloadState.fileSize) { + if (_downloadState.bytesWritten == _downloadState.fileSize) { _advanceStateMachine(); } else { qCDebug(FTPManagerLog) << "_fillMissingBlocksWorker: no missing blocks but file still incomplete - bytesWritten:fileSize" << _downloadState.bytesWritten << _downloadState.fileSize; @@ -529,7 +519,7 @@ void FTPManager::_fillMissingBlocksAckOrNak(const MavlinkFTP::Request* ackOrNak) if (errorCode == MavlinkFTP::kErrEOF) { qCDebug(FTPManagerLog) << "_fillMissingBlocksAckOrNak EOF"; - if (_downloadState.checksize == false || _downloadState.bytesWritten == _downloadState.fileSize) { + if (_downloadState.bytesWritten == _downloadState.fileSize) { // We've successfully complete filling in all missing blocks _advanceStateMachine(); return; @@ -627,10 +617,10 @@ void FTPManager::_sendRequestExpectAck(MavlinkFTP::Request* request) } } -bool FTPManager::_parseURI(uint8_t fromCompId, const QString& uri, QString& parsedURI, uint8_t& compId) +bool FTPManager::_parseURI(const QString& uri, QString& parsedURI, uint8_t& compId) { parsedURI = uri; - compId = (fromCompId == MAV_COMP_ID_ALL) ? (uint8_t)MAV_COMP_ID_AUTOPILOT1 : fromCompId; + compId = MAV_COMP_ID_AUTOPILOT1; // Pull scheme off the front if there QString ftpPrefix(QStringLiteral("%1://").arg(mavlinkFTPScheme)); @@ -652,8 +642,6 @@ bool FTPManager::_parseURI(uint8_t fromCompId, const QString& uri, QString& pars qCWarning(FTPManagerLog) << "Incorrect format for component id" << uri; return false; } - - qCDebug(FTPManagerLog) << "Found compId in MAVLink FTP URI: " << compId; parsedURI.replace(QRegularExpression("\\[\\;comp\\=\\d+\\]"), ""); } diff --git a/src/Vehicle/FTPManager.h b/src/Vehicle/FTPManager.h index 10e9095..b932c5f 100644 --- a/src/Vehicle/FTPManager.h +++ b/src/Vehicle/FTPManager.h @@ -32,19 +32,12 @@ public: FTPManager(Vehicle* vehicle); /// Downloads the specified file. - /// @param fromCompId Component id of the component to download from. If fromCompId is MAV_COMP_ID_ALL, then MAV_COMP_ID_AUTOPILOT1 is used. - /// @param fromURI File to download from component, fully qualified path. May be in the format "mftp://[;comp=]..." where the component id - /// is specified. If component id is not specified, then the id set via fromCompId is used. - /// @param toDir Local directory to download file to - /// @param filename (optional) - /// @param checksize (optional, default true) If true compare the filesize indicated in the open - /// response with the transmitted filesize. If false the transmission is tftp style - /// and the indicated filesize from MAVFTP fileopen response is ignored. - /// This is used for the APM parameter download where the filesize is wrong due to - /// a dynamic file creation on the vehicle. + /// @param fromURI File to download from vehicle, fully qualified path. May be in the format "mftp://[;comp=]..." where the component id is specified. + /// If component id is not specified MAV_COMP_ID_AUTOPILOT1 is used. + /// @param toDir Local directory to download file to /// @return true: download has started, false: error, no download /// Signals downloadComplete, commandError, commandProgress - bool download(uint8_t fromCompId, const QString& fromURI, const QString& toDir, const QString& fileName="", bool checksize = true); + bool download(const QString& fromURI, const QString& toDir); /// Cancel the current operation /// This will emit downloadComplete() when done, and if there's currently a download in progress @@ -96,7 +89,6 @@ private: uint32_t fileSize; ///< Size of file being downloaded QFile file; int retryCount; - bool checksize; bool inProgress() const { return fileSize > 0; } @@ -137,7 +129,7 @@ private: void _fillRequestDataWithString(MavlinkFTP::Request* request, const QString& str); void _fillMissingBlocksWorker (bool firstRequest); void _burstReadFileWorker (bool firstRequest); - bool _parseURI (uint8_t fromCompId, const QString& uri, QString& parsedURI, uint8_t& compId); + bool _parseURI (const QString& uri, QString& parsedURI, uint8_t& compId); void _terminateSessionBegin (void); void _terminateSessionAckOrNak (const MavlinkFTP::Request* ackOrNak); diff --git a/src/Vehicle/FTPManagerTest.cc b/src/Vehicle/FTPManagerTest.cc index e1b4a0e..8233cd6 100644 --- a/src/Vehicle/FTPManagerTest.cc +++ b/src/Vehicle/FTPManagerTest.cc @@ -33,7 +33,7 @@ void FTPManagerTest::_testCaseWorker(const TestCase_t& testCase) QSignalSpy spyDownloadComplete(ftpManager, &FTPManager::downloadComplete); // void downloadComplete (const QString& file, const QString& errorMsg); - ftpManager->download(MAV_COMP_ID_AUTOPILOT1, testCase.file, QStandardPaths::writableLocation(QStandardPaths::TempLocation)); + ftpManager->download(testCase.file, QStandardPaths::writableLocation(QStandardPaths::TempLocation)); QCOMPARE(spyDownloadComplete.wait(10000), true); QCOMPARE(spyDownloadComplete.count(), 1); @@ -53,7 +53,7 @@ void FTPManagerTest::_sizeTestCaseWorker(int fileSize) QSignalSpy spyDownloadComplete(ftpManager, &FTPManager::downloadComplete); - ftpManager->download(MAV_COMP_ID_AUTOPILOT1, filename, QStandardPaths::writableLocation(QStandardPaths::TempLocation)); + ftpManager->download(filename, QStandardPaths::writableLocation(QStandardPaths::TempLocation)); QCOMPARE(spyDownloadComplete.wait(10000), true); QCOMPARE(spyDownloadComplete.count(), 1); @@ -106,7 +106,7 @@ void FTPManagerTest::_testLostPackets(void) QSignalSpy spyDownloadComplete(ftpManager, &FTPManager::downloadComplete); _mockLink->mockLinkFTP()->enableRandromDrops(true); - ftpManager->download(MAV_COMP_ID_AUTOPILOT1, filename, QStandardPaths::writableLocation(QStandardPaths::TempLocation)); + ftpManager->download(filename, QStandardPaths::writableLocation(QStandardPaths::TempLocation)); QCOMPARE(spyDownloadComplete.wait(10000), true); QCOMPARE(spyDownloadComplete.count(), 1); diff --git a/src/Vehicle/GeneratorFact.json b/src/Vehicle/GeneratorFact.json deleted file mode 100644 index d5f8e6f..0000000 --- a/src/Vehicle/GeneratorFact.json +++ /dev/null @@ -1,77 +0,0 @@ -{ - "version": 1, - "fileType": "FactMetaData", - "QGC.MetaData.Facts": -[ -{ - "name": "status", - "shortDesc": "Status", - "type": "uint64" -}, -{ - "name": "genSpeed", - "shortDesc": "Generator Speed", - "type": "uint16", - "units": "rpm" -}, -{ - "name": "batteryCurrent", - "shortDesc": "Battery Current", - "type": "float", - "decimalPlaces": 1, - "units": "A" -}, -{ - "name": "loadCurrent", - "shortDesc": "Load Current", - "type": "float", - "decimalPlaces": 1, - "units": "A" -}, -{ - "name": "powerGenerated", - "shortDesc": "Power Generated", - "type": "float", - "decimalPlaces": 1, - "units": "W" -}, -{ - "name": "busVoltage", - "shortDesc": "Bus Voltage", - "type": "float", - "decimalPlaces": 1, - "units": "V" -}, -{ - "name": "rectifierTemp", - "shortDesc": "Rectifier Temperature", - "type": "int16", - "units": "°C" -}, -{ - "name": "batCurrentSetpoint", - "shortDesc": "Battery Current Setpoint", - "type": "float", - "decimalPlaces": 1, - "units": "A" -}, -{ - "name": "genTemp", - "shortDesc": "Generator Temperature", - "type": "int16", - "units": "°C" -}, -{ - "name": "runtime", - "shortDesc": "runtime", - "type": "uint32", - "units": "sec" -}, -{ - "name": "timeMaintenance", - "shortDesc": "Time until Maintenance", - "type": "int32", - "units": "sec" -} -] -} \ No newline at end of file diff --git a/src/Vehicle/HealthAndArmingCheckReport.cc b/src/Vehicle/HealthAndArmingCheckReport.cc deleted file mode 100644 index 4232573..0000000 --- a/src/Vehicle/HealthAndArmingCheckReport.cc +++ /dev/null @@ -1,95 +0,0 @@ -/**************************************************************************** - * - * (c) 2022 QGROUNDCONTROL PROJECT - * - * QGroundControl is licensed according to the terms in the file - * COPYING.md in the root of the source code directory. - * - ****************************************************************************/ - -#include "HealthAndArmingCheckReport.h" -#include "QGCMAVLink.h" - -#include - -HealthAndArmingCheckReport::HealthAndArmingCheckReport() -{ -#if 0 // to test the UI - _problemsForCurrentMode->append(new HealthAndArmingCheckProblem("No global position", "", "error")); - _problemsForCurrentMode->append(new HealthAndArmingCheckProblem("No RC", "Details", "warning")); - _problemsForCurrentMode->append(new HealthAndArmingCheckProblem("Accel uncalibrated", "Details test", "error")); - _problemsForCurrentMode->append(new HealthAndArmingCheckProblem("Gyro uncalibrated", "Details SDLOG_PROFILE", "error")); - _problemsForCurrentMode->append(new HealthAndArmingCheckProblem( - "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.", - "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.
    Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum", "")); - _supported = true; - emit updated(); -#endif -} - -HealthAndArmingCheckReport::~HealthAndArmingCheckReport() -{ - _problemsForCurrentMode->clearAndDeleteContents(); -} - -void HealthAndArmingCheckReport::update(uint8_t compid, const events::HealthAndArmingChecks::Results& results, - int flightModeGroup) -{ - if (compid != MAV_COMP_ID_AUTOPILOT1) { - // only autopilot supported atm - return; - } - if (flightModeGroup == -1) { - qWarning() << "Flight mode group not set"; - return; - } - _supported = true; - - _problemsForCurrentMode->clearAndDeleteContents(); - _hasWarningsOrErrors = false; - for (const auto& check : results.checks(flightModeGroup)) { - QString severity = ""; - if (events::externalLogLevel(check.log_levels) <= events::Log::Error) { - severity = "error"; - _hasWarningsOrErrors = true; - } else if (events::externalLogLevel(check.log_levels) <= events::Log::Warning) { - severity = "warning"; - _hasWarningsOrErrors = true; - } - QString description = QString::fromStdString(check.description); - _problemsForCurrentMode->append(new HealthAndArmingCheckProblem(QString::fromStdString(check.message), - description.replace("\n", "
    "), severity)); - } - - _canArm = results.canArm(flightModeGroup); - if (_missionModeGroup != -1) { - // TODO: use results.canRun(_missionModeGroup) while armed - _canStartMission = results.canArm(_missionModeGroup); - } - if (_takeoffModeGroup != -1) { - _canTakeoff = results.canArm(_takeoffModeGroup); - } - - const auto& healthComponents = results.healthComponents().health_components; - - // GPS state - const auto gpsStateIter = healthComponents.find("gps"); - if (gpsStateIter != healthComponents.end()) { - const events::HealthAndArmingChecks::HealthComponent& gpsState = gpsStateIter->second; - if (gpsState.health.error || gpsState.arming_check.error) { - _gpsState = "red"; - } else if (gpsState.health.warning || gpsState.arming_check.warning) { - _gpsState = "yellow"; - } else { - _gpsState = "green"; - } - } - - emit updated(); -} - -void HealthAndArmingCheckReport::setModeGroups(int takeoffModeGroup, int missionModeGroup) -{ - _takeoffModeGroup = takeoffModeGroup; - _missionModeGroup = missionModeGroup; -} diff --git a/src/Vehicle/HealthAndArmingCheckReport.h b/src/Vehicle/HealthAndArmingCheckReport.h deleted file mode 100644 index 511ac21..0000000 --- a/src/Vehicle/HealthAndArmingCheckReport.h +++ /dev/null @@ -1,92 +0,0 @@ -/**************************************************************************** - * - * (c) 2022 QGROUNDCONTROL PROJECT - * - * QGroundControl is licensed according to the terms in the file - * COPYING.md in the root of the source code directory. - * - ****************************************************************************/ - -#pragma once - -#include - -#include -#include - -class HealthAndArmingCheckProblem : public QObject -{ - Q_OBJECT -public: - HealthAndArmingCheckProblem(const QString& message, const QString& description, const QString& severity) - : _message(message), _description(description), _severity(severity) {} - - Q_PROPERTY(QString message READ message CONSTANT) - Q_PROPERTY(QString description READ description CONSTANT) - Q_PROPERTY(QString severity READ severity CONSTANT) - Q_PROPERTY(bool expanded READ expanded WRITE setExpanded NOTIFY expandedChanged) - - const QString& message() const { return _message; } - const QString& description() const { return _description; } - const QString& severity() const { return _severity; } - - bool expanded() const { return _expanded; } - void setExpanded(bool expanded) { _expanded = expanded; emit expandedChanged(); } - -signals: - void expandedChanged(); -private: - const QString _message; - const QString _description; - const QString _severity; - bool _expanded{false}; -}; - - -class HealthAndArmingCheckReport : public QObject -{ - Q_OBJECT -public: - - Q_PROPERTY(bool supported READ supported NOTIFY updated) - Q_PROPERTY(bool canArm READ canArm NOTIFY updated) - Q_PROPERTY(bool canTakeoff READ canTakeoff NOTIFY updated) - Q_PROPERTY(bool canStartMission READ canStartMission NOTIFY updated) - Q_PROPERTY(bool hasWarningsOrErrors READ hasWarningsOrErrors NOTIFY updated) - Q_PROPERTY(QString gpsState READ gpsState NOTIFY updated) - Q_PROPERTY(QmlObjectListModel* problemsForCurrentMode READ problemsForCurrentMode NOTIFY updated) - - HealthAndArmingCheckReport(); - virtual ~HealthAndArmingCheckReport(); - - bool supported() const { return _supported; } - bool canArm() const { return _canArm; } - bool canTakeoff() const { return _canTakeoff; } - bool canStartMission() const { return _canStartMission; } - bool hasWarningsOrErrors() const { return _hasWarningsOrErrors; } - - const QString& gpsState() const { return _gpsState; } - - QmlObjectListModel* problemsForCurrentMode() { return _problemsForCurrentMode; } - - void update(uint8_t compid, const events::HealthAndArmingChecks::Results& results, int flightModeGroup); - - void setModeGroups(int takeoffModeGroup, int missionModeGroup); - -signals: - void updated(); - -private: - bool _supported{false}; - bool _canArm{true}; ///< whether arming is possible for the current mode - bool _canTakeoff{true}; - bool _canStartMission{true}; - bool _hasWarningsOrErrors{false}; - QString _gpsState{}; - - int _takeoffModeGroup{-1}; - int _missionModeGroup{-1}; - - QmlObjectListModel* _problemsForCurrentMode = new QmlObjectListModel(this); ///< list of HealthAndArmingCheckProblem* -}; - diff --git a/src/Vehicle/HealthAndArmingChecks.cc b/src/Vehicle/HealthAndArmingChecks.cc new file mode 100644 index 0000000..ff8be64 --- /dev/null +++ b/src/Vehicle/HealthAndArmingChecks.cc @@ -0,0 +1,125 @@ +/**************************************************************************** + * + * (c) 2020 QGROUNDCONTROL PROJECT + * + * QGroundControl is licensed according to the terms in the file + * COPYING.md in the root of the source code directory. + * + ****************************************************************************/ + +#include "HealthAndArmingChecks.h" + +#include + +QGC_LOGGING_CATEGORY(HealthAndArmingChecks, "HealthAndArmingChecks"); + +using health_component_t = events::common::enums::health_component_t; +using navigation_mode_category_t = events::common::enums::navigation_mode_category_t; + +void HealthAndArmingCheckHandler::handleEvent(const events::parser::ParsedEvent& event) +{ + Type type; + if (event.eventNamespace() == "common" && event.name() == "arming_check_summary") { + type = Type::ArmingCheckSummary; + } else if (event.eventNamespace() == "common" && event.name() == "health_summary") { + type = Type::HealthSummary; + } else { + type = Type::Other; + } + + // the expected order of receiving is: + // - ArmingCheckSummary + // - N Other + // - HealthSummary + + if (type != _expectedEvent) { + if (_expectedEvent == Type::Other && type == Type::HealthSummary) { + // all good + } else if (type == Type::ArmingCheckSummary) { + qCDebug(HealthAndArmingChecks) << "Unexpected ArmingCheckSummary event, resetting. Expected:" << (int)_expectedEvent; + // accept & reset + } else { + qCDebug(HealthAndArmingChecks) << "Unexpected event, resetting. Expected:" << (int)_expectedEvent + << "Got:" << (int)type; + _expectedEvent = Type::ArmingCheckSummary; + return; + } + } + + switch (type) { + case Type::ArmingCheckSummary: + reset(); + if (event.id() == (uint32_t)events::common::event_id_t::arming_check_summary) { + ArmingCheckSummary &arming = _results[_currentResult].arming; + events::common::decode_arming_check_summary(event.eventData(), arming.error, arming.warning, arming.canArm); + _expectedEvent = Type::Other; + } + break; + case Type::Other: { + Check check; + check.type = event.group() == "health" ? CheckType::Health : CheckType::ArmingCheck; + check.message = QString::fromStdString(event.message()); + check.description = QString::fromStdString(event.description()); + check.affectedModes = (events::common::enums::navigation_mode_category_t)event.argumentValue(0).value.val_uint8_t; + check.affectedHealthComponentIndex = event.argumentValue(1).value.val_uint8_t; + check.logLevel = events::externalLogLevel(event.eventData().log_levels); + _results[_currentResult].checks.append(check); + } + break; + case Type::HealthSummary: + if (event.id() == (uint32_t)events::common::event_id_t::health_summary) { + HealthSummary &health = _results[_currentResult].health; + events::common::decode_health_summary(event.eventData(), health.isPresent, health.error, health.warning); + _currentResult = (_currentResult + 1) % 2; + emit update(); + testReport(); + } + reset(); + break; + } +} + +void HealthAndArmingCheckHandler::reset() +{ + _results[_currentResult].reset(); + _expectedEvent = Type::ArmingCheckSummary; +} + +void HealthAndArmingCheckHandler::testReport() +{ + // just for testing... +// qWarning() << "Got Health/Arming checks update"; +// qWarning() << "Arming possible in current mode: " << (results().arming.canArm & navigation_mode_category_t::current); +// qWarning() << "Can a mission be flown: " << (results().arming.canArm & navigation_mode_category_t::mission); +// qWarning() << "Autonomous (e.g. Takeoff) flight possible: " << (results().arming.canArm & navigation_mode_category_t::autonomous); +// +// QString gps_icon_color; +// if ((results().health.error & health_component_t::sensor_gps) || +// (results().health.error & health_component_t::global_position_estimate) || +// (results().arming.error & health_component_t::sensor_gps) || +// (results().arming.error & health_component_t::global_position_estimate)) { +// gps_icon_color = "red"; +// } else if((results().health.warning & health_component_t::sensor_gps) || +// (results().health.warning & health_component_t::global_position_estimate) || +// (results().arming.warning & health_component_t::sensor_gps) || +// (results().arming.warning & health_component_t::global_position_estimate)) { +// gps_icon_color = "yellow"; +// } else { +// gps_icon_color = "green"; +// } +// qWarning() << "GPS/Position icon color: " << gps_icon_color; +// +// // display events that are relevant for current mode: +// qWarning() << "Current flight mode:"; +// for (const auto& check : results().checks) { +// if (check.affectedModes & navigation_mode_category_t::current) { +// qWarning() << " " << (int)check.logLevel << check.message; +// } +// } +// qWarning() << "Other flight modes:"; +// for (const auto& check : results().checks) { +// if (!(check.affectedModes & navigation_mode_category_t::current)) { +// qWarning() << " " << (int)check.logLevel << check.message; +// } +// } +} diff --git a/src/Vehicle/HealthAndArmingChecks.h b/src/Vehicle/HealthAndArmingChecks.h new file mode 100644 index 0000000..1ea15d9 --- /dev/null +++ b/src/Vehicle/HealthAndArmingChecks.h @@ -0,0 +1,84 @@ +/**************************************************************************** + * + * (c) 2020 QGROUNDCONTROL PROJECT + * + * QGroundControl is licensed according to the terms in the file + * COPYING.md in the root of the source code directory. + * + ****************************************************************************/ + +#pragma once + +#include +#include +#include + +#include +#include + +Q_DECLARE_LOGGING_CATEGORY(HealthAndArmingChecks) + +class HealthAndArmingCheckHandler : public QObject +{ + Q_OBJECT +public: + + enum class CheckType { + ArmingCheck, + Health + }; + struct Check { + CheckType type; + QString message; + QString description; + events::common::enums::navigation_mode_category_t affectedModes; + uint8_t affectedHealthComponentIndex; ///< index for events::common::enums::health_component_t, can be 0xff + events::Log logLevel; + }; + + struct HealthSummary { + events::common::enums::health_component_t isPresent; + events::common::enums::health_component_t error; + events::common::enums::health_component_t warning; + }; + struct ArmingCheckSummary { + events::common::enums::health_component_t error; + events::common::enums::health_component_t warning; + events::common::enums::navigation_mode_category_t canArm; + }; + + struct Results { + HealthSummary health{}; + ArmingCheckSummary arming{}; + QVector checks{}; + + void reset() { + health = {}; + arming = {}; + checks.clear(); + } + }; + + void handleEvent(const events::parser::ParsedEvent& event); + + const Results& results() const { return _results[(_currentResult + 1) % 2]; } + +signals: + void update(); +private: + + enum class Type { + ArmingCheckSummary, + Other, + HealthSummary, + }; + + void reset(); + + void testReport(); + + Type _expectedEvent{Type::ArmingCheckSummary}; + Results _results[2]; ///< store the last full set and currently updating one + int _currentResult{0}; ///< index for the currently updating/adding results +}; + diff --git a/src/Vehicle/InitialConnectStateMachine.cc b/src/Vehicle/InitialConnectStateMachine.cc index 1d178c7..84d31f1 100644 --- a/src/Vehicle/InitialConnectStateMachine.cc +++ b/src/Vehicle/InitialConnectStateMachine.cc @@ -21,7 +21,6 @@ QGC_LOGGING_CATEGORY(InitialConnectStateMachineLog, "InitialConnectStateMachineL const StateMachine::StateFn InitialConnectStateMachine::_rgStates[] = { InitialConnectStateMachine::_stateRequestAutopilotVersion, InitialConnectStateMachine::_stateRequestProtocolVersion, - InitialConnectStateMachine::_stateRequestStandardModes, InitialConnectStateMachine::_stateRequestCompInfo, InitialConnectStateMachine::_stateRequestParameters, InitialConnectStateMachine::_stateRequestMission, @@ -33,7 +32,6 @@ const StateMachine::StateFn InitialConnectStateMachine::_rgStates[] = { const int InitialConnectStateMachine::_rgProgressWeights[] = { 1, //_stateRequestCapabilities 1, //_stateRequestProtocolVersion - 1, //_stateRequestStandardModes 5, //_stateRequestCompInfo 5, //_stateRequestParameters 2, //_stateRequestMission @@ -218,15 +216,12 @@ void InitialConnectStateMachine::_stateRequestProtocolVersion(StateMachine* stat if (sharedLink->linkConfiguration()->isHighLatency() || sharedLink->isPX4Flow() || sharedLink->isLogReplay()) { qCDebug(InitialConnectStateMachineLog) << "Skipping REQUEST_MESSAGE:PROTOCOL_VERSION request due to link type"; connectMachine->advance(); - } else if (vehicle->apmFirmware()) { - qCDebug(InitialConnectStateMachineLog) << "Skipping REQUEST_MESSAGE:PROTOCOL_VERSION request due to Ardupilot firmware"; - connectMachine->advance(); } else { qCDebug(InitialConnectStateMachineLog) << "Sending REQUEST_MESSAGE:PROTOCOL_VERSION"; vehicle->requestMessage(_protocolVersionRequestMessageHandler, connectMachine, MAV_COMP_ID_AUTOPILOT1, - MAVLINK_MSG_ID_PROTOCOL_VERSION); + MAVLINK_MSG_ID_AUTOPILOT_VERSION); } } } @@ -284,24 +279,6 @@ void InitialConnectStateMachine::_stateRequestCompInfo(StateMachine* stateMachin vehicle->_componentInformationManager->requestAllComponentInformation(_stateRequestCompInfoComplete, connectMachine); } -void InitialConnectStateMachine::_stateRequestStandardModes(StateMachine *stateMachine) -{ - InitialConnectStateMachine* connectMachine = static_cast(stateMachine); - Vehicle* vehicle = connectMachine->_vehicle; - - qCDebug(InitialConnectStateMachineLog) << "_stateRequestStandardModes"; - connect(vehicle->_standardModes, &StandardModes::requestCompleted, connectMachine, - &InitialConnectStateMachine::standardModesRequestCompleted); - vehicle->_standardModes->request(); -} - -void InitialConnectStateMachine::standardModesRequestCompleted() -{ - disconnect(_vehicle->_standardModes, &StandardModes::requestCompleted, this, - &InitialConnectStateMachine::standardModesRequestCompleted); - advance(); -} - void InitialConnectStateMachine::_stateRequestCompInfoComplete(void* requestAllCompleteFnData) { InitialConnectStateMachine* connectMachine = static_cast(requestAllCompleteFnData); @@ -341,8 +318,6 @@ void InitialConnectStateMachine::_stateRequestMission(StateMachine* stateMachine } else { qCDebug(InitialConnectStateMachineLog) << "_stateRequestMission"; vehicle->_missionManager->loadFromVehicle(); - connect(vehicle->_missionManager, &MissionManager::progressPct, connectMachine, - &InitialConnectStateMachine::gotProgressUpdate); } } } @@ -353,9 +328,6 @@ void InitialConnectStateMachine::_stateRequestGeoFence(StateMachine* stateMachin Vehicle* vehicle = connectMachine->_vehicle; SharedLinkInterfacePtr sharedLink = vehicle->vehicleLinkManager()->primaryLink().lock(); - disconnect(vehicle->_missionManager, &MissionManager::progressPct, connectMachine, - &InitialConnectStateMachine::gotProgressUpdate); - if (!sharedLink) { qCDebug(InitialConnectStateMachineLog) << "_stateRequestGeoFence: Skipping first geofence load request due to no primary link"; connectMachine->advance(); @@ -367,8 +339,6 @@ void InitialConnectStateMachine::_stateRequestGeoFence(StateMachine* stateMachin if (vehicle->_geoFenceManager->supported()) { qCDebug(InitialConnectStateMachineLog) << "_stateRequestGeoFence"; vehicle->_geoFenceManager->loadFromVehicle(); - connect(vehicle->_geoFenceManager, &GeoFenceManager::progressPct, connectMachine, - &InitialConnectStateMachine::gotProgressUpdate); } else { qCDebug(InitialConnectStateMachineLog) << "_stateRequestGeoFence: skipped due to no support"; vehicle->_firstGeoFenceLoadComplete(); @@ -383,9 +353,6 @@ void InitialConnectStateMachine::_stateRequestRallyPoints(StateMachine* stateMac Vehicle* vehicle = connectMachine->_vehicle; SharedLinkInterfacePtr sharedLink = vehicle->vehicleLinkManager()->primaryLink().lock(); - disconnect(vehicle->_geoFenceManager, &GeoFenceManager::progressPct, connectMachine, - &InitialConnectStateMachine::gotProgressUpdate); - if (!sharedLink) { qCDebug(InitialConnectStateMachineLog) << "_stateRequestRallyPoints: Skipping first rally point load request due to no primary link"; connectMachine->advance(); @@ -396,8 +363,6 @@ void InitialConnectStateMachine::_stateRequestRallyPoints(StateMachine* stateMac } else { if (vehicle->_rallyPointManager->supported()) { vehicle->_rallyPointManager->loadFromVehicle(); - connect(vehicle->_rallyPointManager, &RallyPointManager::progressPct, connectMachine, - &InitialConnectStateMachine::gotProgressUpdate); } else { qCDebug(InitialConnectStateMachineLog) << "_stateRequestRallyPoints: skipping due to no support"; vehicle->_firstRallyPointLoadComplete(); @@ -411,9 +376,6 @@ void InitialConnectStateMachine::_stateSignalInitialConnectComplete(StateMachine InitialConnectStateMachine* connectMachine = static_cast(stateMachine); Vehicle* vehicle = connectMachine->_vehicle; - disconnect(vehicle->_rallyPointManager, &RallyPointManager::progressPct, connectMachine, - &InitialConnectStateMachine::gotProgressUpdate); - connectMachine->advance(); qCDebug(InitialConnectStateMachineLog) << "Signalling initialConnectComplete"; emit vehicle->initialConnectComplete(); diff --git a/src/Vehicle/InitialConnectStateMachine.h b/src/Vehicle/InitialConnectStateMachine.h index 44ed2e8..7218e39 100644 --- a/src/Vehicle/InitialConnectStateMachine.h +++ b/src/Vehicle/InitialConnectStateMachine.h @@ -37,13 +37,11 @@ signals: private slots: void gotProgressUpdate(float progressValue); - void standardModesRequestCompleted(); private: static void _stateRequestAutopilotVersion (StateMachine* stateMachine); static void _stateRequestProtocolVersion (StateMachine* stateMachine); static void _stateRequestCompInfo (StateMachine* stateMachine); - static void _stateRequestStandardModes (StateMachine* stateMachine); static void _stateRequestCompInfoComplete (void* requestAllCompleteFnData); static void _stateRequestParameters (StateMachine* stateMachine); static void _stateRequestMission (StateMachine* stateMachine); diff --git a/src/Vehicle/MAVLinkLogManager.cc b/src/Vehicle/MAVLinkLogManager.cc index cee13aa..e43f6ab 100644 --- a/src/Vehicle/MAVLinkLogManager.cc +++ b/src/Vehicle/MAVLinkLogManager.cc @@ -150,7 +150,7 @@ MAVLinkLogProcessor::valid() bool MAVLinkLogProcessor::create(MAVLinkLogManager* manager, const QString path, uint8_t id) { - _fileName = _fileName.asprintf("%s/%03d-%s%s", + _fileName.asprintf("%s/%03d-%s%s", path.toLatin1().data(), id, QDateTime::currentDateTime().toString("yyyy-MM-dd-hh-mm-ss-zzz").toLocal8Bit().data(), diff --git a/src/Vehicle/RemoteIDManager.cc b/src/Vehicle/RemoteIDManager.cc deleted file mode 100644 index f88fc3a..0000000 --- a/src/Vehicle/RemoteIDManager.cc +++ /dev/null @@ -1,430 +0,0 @@ -/**************************************************************************** - * - * (c) 2009-2022 QGROUNDCONTROL PROJECT - * - * QGroundControl is licensed according to the terms in the file - * COPYING.md in the root of the source code directory. - * - ****************************************************************************/ - -#include "RemoteIDManager.h" -#include "QGCApplication.h" -#include "SettingsManager.h" -#include "RemoteIDSettings.h" -#include "QGCQGeoCoordinate.h" -#include "PositionManager.h" - -#include - -QGC_LOGGING_CATEGORY(RemoteIDManagerLog, "RemoteIDManagerLog") - -#define AREA_COUNT 1 -#define AREA_RADIUS 0 -#define SENDING_RATE_MSEC 1000 -#define ALLOWED_GPS_DELAY 5000 -#define RID_TIMEOUT 2500 // Messages should be arriving at 1 Hz, so we set a 2 second timeout - -const uint8_t* RemoteIDManager::_id_or_mac_unknown = {NULL}; - -RemoteIDManager::RemoteIDManager(Vehicle* vehicle) - : QObject (vehicle) - , _mavlink (nullptr) - , _vehicle (vehicle) - , _settings (nullptr) - , _armStatusGood (false) - , _commsGood (false) - , _gcsGPSGood (false) - , _basicIDGood (true) - , _GCSBasicIDValid (false) - , _operatorIDGood (false) - , _emergencyDeclared (false) - , _targetSystem (0) // By default 0 means broadcast - , _targetComponent (0) // By default 0 means broadcast - , _enforceSendingSelfID (false) -{ - _mavlink = qgcApp()->toolbox()->mavlinkProtocol(); - _settings = qgcApp()->toolbox()->settingsManager()->remoteIDSettings(); - _positionManager = qgcApp()->toolbox()->qgcPositionManager(); - - // Timer to track a healthy RID device. When expired we let the operator know - _odidTimeoutTimer.setSingleShot(true); - _odidTimeoutTimer.setInterval(RID_TIMEOUT); - connect(&_odidTimeoutTimer, &QTimer::timeout, this, &RemoteIDManager::_odidTimeout); - - // Timer to send messages at a constant rate - _sendMessagesTimer.setInterval(SENDING_RATE_MSEC); - connect(&_sendMessagesTimer, &QTimer::timeout, this, &RemoteIDManager::_sendMessages); - - // GCS GPS position updates to track the health of the GPS data - connect(_positionManager, &QGCPositionManager::positionInfoUpdated, this, &RemoteIDManager::_updateLastGCSPositionInfo); - - // Check changes in basic id settings as long as they are modified - connect(_settings->basicID(), &Fact::rawValueChanged, this, &RemoteIDManager::_checkGCSBasicID); - connect(_settings->basicIDType(), &Fact::rawValueChanged, this, &RemoteIDManager::_checkGCSBasicID); - connect(_settings->basicIDUaType(), &Fact::rawValueChanged, this, &RemoteIDManager::_checkGCSBasicID); - - // Assign vehicle sysid and compid. GCS must target these messages to autopilot, and autopilot will redirect them to RID device - _targetSystem = _vehicle->id(); - _targetComponent = _vehicle->compId(); -} - -void RemoteIDManager::mavlinkMessageReceived(mavlink_message_t& message ) -{ - switch (message.msgid) { - // So far we are only listening to this one, as heartbeat won't be sent if connected by CAN - case MAVLINK_MSG_ID_OPEN_DRONE_ID_ARM_STATUS: - _handleArmStatus(message); - default: - break; - } -} - -// This slot will be called if we stop receiving heartbeats for more than RID_TIMEOUT seconds -void RemoteIDManager::_odidTimeout() -{ - _commsGood = false; - _sendMessagesTimer.stop(); // We stop sending messages if the communication with the RID device is down - emit commsGoodChanged(); - qCDebug(RemoteIDManagerLog) << "We stopped receiving heartbeat from RID device."; -} - -// Parsing of the ARM_STATUS message comming from the RID device -void RemoteIDManager::_handleArmStatus(mavlink_message_t& message) -{ - // Compid must be ODID_TXRX_X - if ( (message.compid < MAV_COMP_ID_ODID_TXRX_1) || (message.compid > MAV_COMP_ID_ODID_TXRX_3) ) { - // or same as autopilot, in the case of Ardupilot and CAN RID modules - if (message.compid != MAV_COMP_ID_AUTOPILOT1) { - return; - } - } - - // Sanity check, only get messages from same sysid - if (_vehicle->id() != message.sysid) { - return; - } - - // We set the targetsystem - if (_targetSystem != message.sysid) { - _targetSystem = message.sysid; - qCDebug(RemoteIDManagerLog) << "Subscribing to ODID messages coming from system " << _targetSystem; - } - - if (!_commsGood) { - _commsGood = true; - _sendMessagesTimer.start(); // Start sending our messages - _checkGCSBasicID(); // Check if basicID is good to send - checkOperatorID(); // Check if OperatorID is good in case we want to send it from start because of the settings - emit commsGoodChanged(); - qCDebug(RemoteIDManagerLog) << "Receiving ODID_ARM_STATUS from RID device"; - } - - // Restart the timeout - _odidTimeoutTimer.start(); - - // CompId and sysId are correct, we can proceed - mavlink_open_drone_id_arm_status_t armStatus; - mavlink_msg_open_drone_id_arm_status_decode(&message, &armStatus); - - if (armStatus.status == MAV_ODID_ARM_STATUS_GOOD_TO_ARM && !_armStatusGood) { - // If good to arm, even if basic ID is not set on GCS, it was set by remoteID parameters, so GCS one would be optional in this case - if (!_basicIDGood) { - _basicIDGood = true; - emit basicIDGoodChanged(); - } - _armStatusGood = true; - emit armStatusGoodChanged(); - qCDebug(RemoteIDManagerLog) << "Arm status GOOD TO ARM."; - } - - if (armStatus.status == MAV_ODID_ARM_STATUS_PRE_ARM_FAIL_GENERIC) { - _armStatusGood = false; - _armStatusError = QString::fromLocal8Bit(armStatus.error); - // Check if the error is because of missing basic id - if (armStatus.error == QString("missing basic_id message")) { - _basicIDGood = false; - qCDebug(RemoteIDManagerLog) << "Arm status error, basic_id is not set in RID device nor in GCS!"; - emit basicIDGoodChanged(); - } - emit armStatusGoodChanged(); - emit armStatusErrorChanged(); - qCDebug(RemoteIDManagerLog) << "Arm status error:" << _armStatusError; - } -} - -// Function that sends messages periodically -void RemoteIDManager::_sendMessages() -{ - // We only send RemoteID messages if we have it enabled in General settings - if (!_settings->enable()->rawValue().toBool()) { - return; - } - - // We always try to send System - _sendSystem(); - - // only send it if the information is correct and the tickbox in settings is set - if (_GCSBasicIDValid && _settings->sendBasicID()->rawValue().toBool()) { - _sendBasicID(); - } - - // We only send selfID if the pilot wants it or in case of a declared emergency. If an emergency is cleared - // we also keep sending the message, to be sure the non emergency state makes it up to the vehicle - if (_settings->sendSelfID()->rawValue().toBool() || _emergencyDeclared || _enforceSendingSelfID) { - _sendSelfIDMsg(); - } - - // We only send the OperatorID if the pilot wants it or if the region we have set is europe. - // To be able to send it, it needs to be filled correclty - if ((_settings->sendOperatorID()->rawValue().toBool() || (_settings->region()->rawValue().toInt() == Region::EU)) && _operatorIDGood) { - _sendOperatorID(); - } - -} - -void RemoteIDManager::_sendSelfIDMsg() -{ - WeakLinkInterfacePtr weakLink = _vehicle->vehicleLinkManager()->primaryLink(); - SharedLinkInterfacePtr sharedLink = weakLink.lock(); - - if (sharedLink) { - mavlink_message_t msg; - - mavlink_msg_open_drone_id_self_id_pack_chan(_mavlink->getSystemId(), - _mavlink->getComponentId(), - sharedLink->mavlinkChannel(), - &msg, - _targetSystem, - _targetComponent, - _id_or_mac_unknown, - _emergencyDeclared ? 1 : _settings->selfIDType()->rawValue().toInt(), // If emergency is delcared we send directly a 1 (1 = EMERGENCY) - _getSelfIDDescription()); // Depending on the type of SelfID we send a different description - _vehicle->sendMessageOnLinkThreadSafe(sharedLink.get(), msg); - } -} - -// We need to return the correct description for the self ID type we have selected -const char* RemoteIDManager::_getSelfIDDescription() -{ - QByteArray bytesFree = (_settings->selfIDFree()->rawValue().toString()).toLocal8Bit(); - QByteArray bytesEmergency = (_settings->selfIDEmergency()->rawValue().toString()).toLocal8Bit(); - QByteArray bytesExtended = (_settings->selfIDExtended()->rawValue().toString()).toLocal8Bit(); - - const char* descriptionToSend; - - if (_emergencyDeclared) { - // If emergency is declared we dont care about the settings and we send emergency directly - descriptionToSend = bytesEmergency.data(); - } else { - switch (_settings->selfIDType()->rawValue().toInt()) { - case 0: - descriptionToSend = bytesFree.data(); - break; - case 1: - descriptionToSend = bytesEmergency.data(); - break; - case 2: - descriptionToSend = bytesExtended.data(); - break; - default: - descriptionToSend = bytesEmergency.data(); - } - } - - return descriptionToSend; -} - -void RemoteIDManager::_sendOperatorID() -{ - WeakLinkInterfacePtr weakLink = _vehicle->vehicleLinkManager()->primaryLink(); - SharedLinkInterfacePtr sharedLink = weakLink.lock(); - - if (sharedLink) { - mavlink_message_t msg; - - QByteArray bytesOperatorID = (_settings->operatorID()->rawValue().toString()).toLocal8Bit(); - const char* descriptionToSend = bytesOperatorID.data(); - - mavlink_msg_open_drone_id_operator_id_pack_chan( - _mavlink->getSystemId(), - _mavlink->getComponentId(), - sharedLink->mavlinkChannel(), - &msg, - _targetSystem, - _targetComponent, - _id_or_mac_unknown, - _settings->operatorIDType()->rawValue().toInt(), - descriptionToSend); - - _vehicle->sendMessageOnLinkThreadSafe(sharedLink.get(), msg); - } -} - -void RemoteIDManager::_sendSystem() -{ - QGeoCoordinate gcsPosition; - QGeoPositionInfo geoPositionInfo; - // Location types: - // 0 -> TAKEOFF (not supported yet) - // 1 -> LIVE GNNS - // 2 -> FIXED - if (_settings->locationType()->rawValue().toUInt() == LocationTypes::FIXED) { - // For FIXED location, we first check that the values are valid. Then we populate our position - if (_settings->latitudeFixed()->rawValue().toFloat() >= -90 && _settings->latitudeFixed()->rawValue().toFloat() <= 90 && _settings->longitudeFixed()->rawValue().toFloat() >= -180 && _settings->longitudeFixed()->rawValue().toFloat() <= 180) { - gcsPosition = QGeoCoordinate(_settings->latitudeFixed()->rawValue().toFloat(), _settings->longitudeFixed()->rawValue().toFloat(), _settings->altitudeFixed()->rawValue().toFloat()); - geoPositionInfo = QGeoPositionInfo(gcsPosition, QDateTime::currentDateTime().currentDateTimeUtc()); - if (!_gcsGPSGood) { - _gcsGPSGood = true; - emit gcsGPSGoodChanged(); - } - } else { - gcsPosition = QGeoCoordinate(0,0,0); - geoPositionInfo = QGeoPositionInfo(gcsPosition, QDateTime::currentDateTime().currentDateTimeUtc()); - if (_gcsGPSGood) { - _gcsGPSGood = false; - emit gcsGPSGoodChanged(); - qCDebug(RemoteIDManagerLog) << "The provided coordinates for FIXED position are invalid."; - } - } - } else { - // For Live GNSS we take QGC GPS data - gcsPosition = _positionManager->gcsPosition(); - geoPositionInfo = _positionManager->geoPositionInfo(); - - // GPS position needs to be valid before checking other stuff - if (geoPositionInfo.isValid()) { - // If we dont have altitude for FAA then the GPS data is no good - if ((_settings->region()->rawValue().toInt() == Region::FAA) && !(gcsPosition.altitude() >= 0) && _gcsGPSGood) { - _gcsGPSGood = false; - emit gcsGPSGoodChanged(); - qCDebug(RemoteIDManagerLog) << "GCS GPS data error (no altitude): Altitude data is mandatory for GCS GPS data in FAA regions."; - return; - } - - // If the GPS data is older than ALLOWED_GPS_DELAY we cannot use this data - if (_lastGeoPositionTimeStamp.msecsTo(QDateTime::currentDateTime().currentDateTimeUtc()) > ALLOWED_GPS_DELAY) { - if (_gcsGPSGood) { - _gcsGPSGood = false; - emit gcsGPSGoodChanged(); - qCDebug(RemoteIDManagerLog) << "GCS GPS data is older than 5 seconds"; - } - } else { - if (!_gcsGPSGood) { - _gcsGPSGood = true; - emit gcsGPSGoodChanged(); - } - } - } else { - _gcsGPSGood = false; - emit gcsGPSGoodChanged(); - qCDebug(RemoteIDManagerLog) << "GCS GPS data is not valid."; - } - - } - - WeakLinkInterfacePtr weakLink = _vehicle->vehicleLinkManager()->primaryLink(); - SharedLinkInterfacePtr sharedLink = weakLink.lock(); - - if (sharedLink) { - mavlink_message_t msg; - - mavlink_msg_open_drone_id_system_pack_chan(_mavlink->getSystemId(), - _mavlink->getComponentId(), - sharedLink->mavlinkChannel(), - &msg, - _targetSystem, - _targetComponent, - _id_or_mac_unknown, - _settings->locationType()->rawValue().toUInt(), - _settings->classificationType()->rawValue().toUInt(), - _gcsGPSGood ? ( gcsPosition.latitude() * 1.0e7 ) : 0, // If position not valid, send a 0 - _gcsGPSGood ? ( gcsPosition.longitude() * 1.0e7 ) : 0, // If position not valid, send a 0 - AREA_COUNT, - AREA_RADIUS, - -1000.0f, - -1000.0f, - _settings->categoryEU()->rawValue().toUInt(), - _settings->classEU()->rawValue().toUInt(), - _gcsGPSGood ? gcsPosition.altitude() : 0, // If position not valid, send a 0 - _timestamp2019()), // Time stamp needs to be since 00:00:00 1/1/2019 - _vehicle->sendMessageOnLinkThreadSafe(sharedLink.get(), msg); - } -} - -// Returns seconds elapsed since 00:00:00 1/1/2019 -uint32_t RemoteIDManager::_timestamp2019() -{ - uint32_t secsSinceEpoch2019 = 1546300800; // Secs elapsed since epoch to 1-1-2019 - - return ((QDateTime::currentDateTime().currentSecsSinceEpoch()) - secsSinceEpoch2019); -} - -void RemoteIDManager::_sendBasicID() -{ - WeakLinkInterfacePtr weakLink = _vehicle->vehicleLinkManager()->primaryLink(); - SharedLinkInterfacePtr sharedLink = weakLink.lock(); - - if (sharedLink) { - mavlink_message_t msg; - - QString basicIDTemp = _settings->basicID()->rawValue().toString(); - QByteArray ba = basicIDTemp.toLocal8Bit(); - // To make sure the buffer is large enough to fit the message. It will add padding bytes if smaller, or exclude the extra ones if bigger - ba.resize(MAVLINK_MSG_OPEN_DRONE_ID_BASIC_ID_FIELD_UAS_ID_LEN); - - mavlink_msg_open_drone_id_basic_id_pack_chan(_mavlink->getSystemId(), - _mavlink->getComponentId(), - sharedLink->mavlinkChannel(), - &msg, - _targetSystem, - _targetComponent, - _id_or_mac_unknown, - _settings->basicIDType()->rawValue().toUInt(), - _settings->basicIDUaType()->rawValue().toUInt(), - reinterpret_cast(ba.constData())), - - _vehicle->sendMessageOnLinkThreadSafe(sharedLink.get(), msg); - } -} - -void RemoteIDManager::_checkGCSBasicID() -{ - QString basicID = _settings->basicID()->rawValue().toString(); - - if (!basicID.isEmpty() && (_settings->basicIDType()->rawValue().toInt() >= 0) && (_settings->basicIDUaType()->rawValue().toInt() >= 0)) { - _GCSBasicIDValid = true; - } else { - _GCSBasicIDValid = false; - } -} - -void RemoteIDManager::checkOperatorID() -{ - QString operatorID = _settings->operatorID()->rawValue().toString(); - - if (!operatorID.isEmpty() && (_settings->operatorIDType()->rawValue().toInt() >= 0)) { - _operatorIDGood = true; - } else { - _operatorIDGood = false; - } - emit operatorIDGoodChanged(); -} - -void RemoteIDManager::setEmergency(bool declare) -{ - _emergencyDeclared = declare; - emit emergencyDeclaredChanged(); - // Wether we are starting an emergency or cancelling it, we need to enforce sending - // this message. Otherwise, if non optimal connection quality, vehicle RID device - // could remain in the wrong state. It is clarified to the user in remoteidsettings.qml - _enforceSendingSelfID = true; - - qCDebug(RemoteIDManagerLog) << ( declare ? "Emergency declared." : "Emergency cleared."); -} - -void RemoteIDManager::_updateLastGCSPositionInfo(QGeoPositionInfo update) -{ - if (update.isValid()) { - _lastGeoPositionTimeStamp = update.timestamp().toUTC(); - } -} \ No newline at end of file diff --git a/src/Vehicle/RemoteIDManager.h b/src/Vehicle/RemoteIDManager.h deleted file mode 100644 index d256e92..0000000 --- a/src/Vehicle/RemoteIDManager.h +++ /dev/null @@ -1,128 +0,0 @@ -/**************************************************************************** - * - * (c) 2009-2022 QGROUNDCONTROL PROJECT - * - * QGroundControl is licensed according to the terms in the file - * COPYING.md in the root of the source code directory. - * - ****************************************************************************/ - -#pragma once - -#include -#include -#include - -#include "QGCLoggingCategory.h" -#include "QGCMAVLink.h" -#include "Vehicle.h" - -Q_DECLARE_LOGGING_CATEGORY(RemoteIDManagerLog) - -class RemoteIDSettings; -class QGCPositionManager; - -// Supporting Opend Dron ID protocol -class RemoteIDManager : public QObject -{ - Q_OBJECT - -public: - RemoteIDManager(Vehicle* vehicle); - - Q_PROPERTY (bool armStatusGood READ armStatusGood NOTIFY armStatusGoodChanged) - Q_PROPERTY (QString armStatusError READ armStatusError NOTIFY armStatusErrorChanged) - Q_PROPERTY (bool commsGood READ commsGood NOTIFY commsGoodChanged) - Q_PROPERTY (bool gcsGPSGood READ gcsGPSGood NOTIFY gcsGPSGoodChanged) - Q_PROPERTY (bool basicIDGood READ basicIDGood NOTIFY basicIDGoodChanged) - Q_PROPERTY (bool emergencyDeclared READ emergencyDeclared NOTIFY emergencyDeclaredChanged) - Q_PROPERTY (bool operatorIDGood READ operatorIDGood NOTIFY operatorIDGoodChanged) - - - // Check that the information filled by the pilot operatorID is good - Q_INVOKABLE void checkOperatorID(); - - // Declare emergency - Q_INVOKABLE void setEmergency(bool declare); - - bool armStatusGood (void) const { return _armStatusGood; } - QString armStatusError (void) const { return _armStatusError; } - bool commsGood (void) const { return _commsGood; } - bool gcsGPSGood (void) const { return _gcsGPSGood; } - bool basicIDGood (void) const { return _basicIDGood; } - bool emergencyDeclared (void) const { return _emergencyDeclared;} - bool operatorIDGood (void) const { return _operatorIDGood; } - - void mavlinkMessageReceived (mavlink_message_t& message); - - enum LocationTypes { - TAKEOFF, - LiveGNSS, - FIXED - }; - - enum Region { - FAA, - EU - }; - -signals: - void armStatusGoodChanged(); - void armStatusErrorChanged(); - void commsGoodChanged(); - void gcsGPSGoodChanged(); - void basicIDGoodChanged(); - void emergencyDeclaredChanged(); - void operatorIDGoodChanged(); - -private slots: - void _odidTimeout(); - void _sendMessages(); - void _updateLastGCSPositionInfo(QGeoPositionInfo update); - void _checkGCSBasicID(); - -private: - void _handleArmStatus(mavlink_message_t& message); - - // Self ID - void _sendSelfIDMsg (); - const char* _getSelfIDDescription(); - - // Operator ID - void _sendOperatorID (); - - // System - void _sendSystem(); - uint32_t _timestamp2019(); - - // Basic ID - void _sendBasicID(); - - MAVLinkProtocol* _mavlink; - Vehicle* _vehicle; - RemoteIDSettings* _settings; - QGCPositionManager* _positionManager; - - // Flags ODID - bool _armStatusGood; - QString _armStatusError; - bool _commsGood; - bool _gcsGPSGood; - bool _basicIDGood; - bool _GCSBasicIDValid; - bool _operatorIDGood; - - bool _emergencyDeclared; - QDateTime _lastGeoPositionTimeStamp; - int _targetSystem; - int _targetComponent; - - // After emergency cleared, this makes sure the non emergency selfID message makes it to the vehicle - bool _enforceSendingSelfID; - - static const uint8_t* _id_or_mac_unknown; - - // Timers - QTimer _odidTimeoutTimer; - QTimer _sendMessagesTimer; -}; \ No newline at end of file diff --git a/src/Vehicle/RequestMessageTest.cc b/src/Vehicle/RequestMessageTest.cc index c422475..12e90c5 100644 --- a/src/Vehicle/RequestMessageTest.cc +++ b/src/Vehicle/RequestMessageTest.cc @@ -38,21 +38,21 @@ void RequestMessageTest::_testCaseWorker(TestCase_t& testCase) MultiVehicleManager* vehicleMgr = qgcApp()->toolbox()->multiVehicleManager(); Vehicle* vehicle = vehicleMgr->activeVehicle(); - _mockLink->clearReceivedMavCommandCounts(); + _mockLink->clearSendMavCommandCounts(); _mockLink->setRequestMessageFailureMode(testCase.failureMode); vehicle->requestMessage(_requestMessageResultHandler, &testCase, MAV_COMP_ID_AUTOPILOT1, MAVLINK_MSG_ID_DEBUG); QVERIFY(QTest::qWaitFor([&]() { return testCase.resultHandlerCalled; }, 10000)); QCOMPARE(vehicle->_findMavCommandListEntryIndex(MAV_COMP_ID_AUTOPILOT1, MAV_CMD_REQUEST_MESSAGE), -1); - QCOMPARE(_mockLink->receivedMavCommandCount(MAV_CMD_REQUEST_MESSAGE), testCase.expectedSendCount); + QCOMPARE(_mockLink->sendMavCommandCount(MAV_CMD_REQUEST_MESSAGE), testCase.expectedSendCount); // We should be able to do it twice in a row without any duplicate command problems testCase.resultHandlerCalled = false; - _mockLink->clearReceivedMavCommandCounts(); + _mockLink->clearSendMavCommandCounts(); vehicle->requestMessage(_requestMessageResultHandler, &testCase, MAV_COMP_ID_AUTOPILOT1, MAVLINK_MSG_ID_DEBUG); QVERIFY(QTest::qWaitFor([&]() { return testCase.resultHandlerCalled; }, 10000)); QCOMPARE(vehicle->_findMavCommandListEntryIndex(MAV_COMP_ID_AUTOPILOT1, MAV_CMD_REQUEST_MESSAGE), -1); - QCOMPARE(_mockLink->receivedMavCommandCount(MAV_CMD_REQUEST_MESSAGE), testCase.expectedSendCount); + QCOMPARE(_mockLink->sendMavCommandCount(MAV_CMD_REQUEST_MESSAGE), testCase.expectedSendCount); _disconnectMockLink(); } @@ -77,19 +77,19 @@ void RequestMessageTest::_duplicateCommand(void) MultiVehicleManager* vehicleMgr = qgcApp()->toolbox()->multiVehicleManager(); Vehicle* vehicle = vehicleMgr->activeVehicle(); - _mockLink->clearReceivedMavCommandCounts(); + _mockLink->clearSendMavCommandCounts(); _mockLink->setRequestMessageFailureMode(testCase.failureMode); QVERIFY(false == vehicle->isMavCommandPending(MAV_COMP_ID_AUTOPILOT1, MAV_CMD_REQUEST_MESSAGE)); vehicle->requestMessage(_requestMessageResultHandler, &testCase, MAV_COMP_ID_AUTOPILOT1, MAVLINK_MSG_ID_DEBUG); - QVERIFY(QTest::qWaitFor([&]() { return _mockLink->receivedMavCommandCount(MAV_CMD_REQUEST_MESSAGE) == 1; }, 10)); + QVERIFY(QTest::qWaitFor([&]() { return _mockLink->sendMavCommandCount(MAV_CMD_REQUEST_MESSAGE) == 1; }, 10)); QCOMPARE(testCase.resultHandlerCalled, false); vehicle->requestMessage(_requestMessageResultHandler, &testCase, MAV_COMP_ID_AUTOPILOT1, MAVLINK_MSG_ID_DEBUG); // Duplicate command returns immediately QCOMPARE(testCase.resultHandlerCalled, true); - QCOMPARE(_mockLink->receivedMavCommandCount(MAV_CMD_REQUEST_MESSAGE), testCase.expectedSendCount); + QCOMPARE(_mockLink->sendMavCommandCount(MAV_CMD_REQUEST_MESSAGE), testCase.expectedSendCount); QVERIFY(vehicle->_findMavCommandListEntryIndex(MAV_COMP_ID_AUTOPILOT1, MAV_CMD_REQUEST_MESSAGE) != -1); QVERIFY(true == vehicle->isMavCommandPending(MAV_COMP_ID_AUTOPILOT1, MAV_CMD_REQUEST_MESSAGE)); @@ -123,13 +123,13 @@ void RequestMessageTest::_compIdAllFailure(void) MultiVehicleManager* vehicleMgr = qgcApp()->toolbox()->multiVehicleManager(); Vehicle* vehicle = vehicleMgr->activeVehicle(); - _mockLink->clearReceivedMavCommandCounts(); + _mockLink->clearSendMavCommandCounts(); _mockLink->setRequestMessageFailureMode(testCase.failureMode); vehicle->requestMessage(_requestMessageResultHandler, &testCase, MAV_COMP_ID_ALL, MAVLINK_MSG_ID_DEBUG); QCOMPARE(testCase.resultHandlerCalled, true); QCOMPARE(vehicle->_findMavCommandListEntryIndex(MAV_COMP_ID_ALL, MAV_CMD_REQUEST_MESSAGE), -1); - QCOMPARE(_mockLink->receivedMavCommandCount(MAV_CMD_REQUEST_MESSAGE), 0); + QCOMPARE(_mockLink->sendMavCommandCount(MAV_CMD_REQUEST_MESSAGE), 0); _disconnectMockLink(); } diff --git a/src/Vehicle/SendMavCommandWithHandlerTest.cc b/src/Vehicle/SendMavCommandWithHandlerTest.cc index 6f6023c..bf403ac 100644 --- a/src/Vehicle/SendMavCommandWithHandlerTest.cc +++ b/src/Vehicle/SendMavCommandWithHandlerTest.cc @@ -13,47 +13,28 @@ #include "MockLink.h" SendMavCommandWithHandlerTest::TestCase_t SendMavCommandWithHandlerTest::_rgTestCases[] = { - { MockLink::MAV_CMD_MOCKLINK_ALWAYS_RESULT_ACCEPTED, MAV_RESULT_ACCEPTED, false, Vehicle::MavCmdResultCommandResultOnly, 1 }, - { MockLink::MAV_CMD_MOCKLINK_ALWAYS_RESULT_FAILED, MAV_RESULT_FAILED, false, Vehicle::MavCmdResultCommandResultOnly, 1 }, - { MockLink::MAV_CMD_MOCKLINK_SECOND_ATTEMPT_RESULT_ACCEPTED, MAV_RESULT_ACCEPTED, false, Vehicle::MavCmdResultCommandResultOnly, 2 }, - { MockLink::MAV_CMD_MOCKLINK_SECOND_ATTEMPT_RESULT_FAILED, MAV_RESULT_FAILED, false, Vehicle::MavCmdResultCommandResultOnly, 2 }, - { MockLink::MAV_CMD_MOCKLINK_NO_RESPONSE, MAV_RESULT_FAILED, false, Vehicle::MavCmdResultFailureNoResponseToCommand, Vehicle::_mavCommandMaxRetryCount }, - { MockLink::MAV_CMD_MOCKLINK_NO_RESPONSE_NO_RETRY, MAV_RESULT_FAILED, false, Vehicle::MavCmdResultFailureNoResponseToCommand, 1 }, - { MockLink::MAV_CMD_MOCKLINK_RESULT_IN_PROGRESS_ACCEPTED, MAV_RESULT_ACCEPTED, true, Vehicle::MavCmdResultCommandResultOnly, 1 }, - { MockLink::MAV_CMD_MOCKLINK_RESULT_IN_PROGRESS_FAILED, MAV_RESULT_FAILED, true, Vehicle::MavCmdResultCommandResultOnly, 1 }, - { MockLink::MAV_CMD_MOCKLINK_RESULT_IN_PROGRESS_NO_ACK, MAV_RESULT_FAILED, true, Vehicle::MavCmdResultFailureNoResponseToCommand, 1 }, + { MockLink::MAV_CMD_MOCKLINK_ALWAYS_RESULT_ACCEPTED, MAV_RESULT_ACCEPTED, 0, Vehicle::MavCmdResultCommandResultOnly, 1 }, + { MockLink::MAV_CMD_MOCKLINK_ALWAYS_RESULT_FAILED, MAV_RESULT_FAILED, 0, Vehicle::MavCmdResultCommandResultOnly, 1 }, + { MockLink::MAV_CMD_MOCKLINK_SECOND_ATTEMPT_RESULT_ACCEPTED, MAV_RESULT_ACCEPTED, 0, Vehicle::MavCmdResultCommandResultOnly, 2 }, + { MockLink::MAV_CMD_MOCKLINK_SECOND_ATTEMPT_RESULT_FAILED, MAV_RESULT_FAILED, 0, Vehicle::MavCmdResultCommandResultOnly, 2 }, + { MockLink::MAV_CMD_MOCKLINK_NO_RESPONSE, MAV_RESULT_FAILED, 0, Vehicle::MavCmdResultFailureNoResponseToCommand, Vehicle::_mavCommandMaxRetryCount }, + { MockLink::MAV_CMD_MOCKLINK_NO_RESPONSE_NO_RETRY, MAV_RESULT_FAILED, 0, Vehicle::MavCmdResultFailureNoResponseToCommand, 1 }, }; -bool SendMavCommandWithHandlerTest::_resultHandlerCalled = false; -bool SendMavCommandWithHandlerTest::_progressHandlerCalled = false; +bool SendMavCommandWithHandlerTest::_handlerCalled = false; -void SendMavCommandWithHandlerTest::_mavCmdResultHandler(void* resultHandlerData, int compId, const mavlink_command_ack_t& ack, Vehicle::MavCmdResultFailureCode_t failureCode) +void SendMavCommandWithHandlerTest::_mavCmdResultHandler(void* resultHandlerData, int compId, MAV_RESULT commandResult, uint8_t progress, Vehicle::MavCmdResultFailureCode_t failureCode) { TestCase_t* testCase = static_cast(resultHandlerData); - _resultHandlerCalled = true; + _handlerCalled = true; - QCOMPARE(MAV_COMP_ID_AUTOPILOT1, compId); - QCOMPARE(testCase->expectedCommandResult, ack.result); + QCOMPARE(compId, MAV_COMP_ID_AUTOPILOT1); + QCOMPARE(testCase->expectedCommandResult, commandResult); + QCOMPARE(testCase->progress, progress); QCOMPARE(testCase->expectedFailureCode, failureCode); } -void SendMavCommandWithHandlerTest::_mavCmdProgressHandler(void* progressHandlerData, int compId, const mavlink_command_ack_t& ack) -{ - TestCase_t* testCase = static_cast(progressHandlerData); - MultiVehicleManager* vehicleMgr = qgcApp()->toolbox()->multiVehicleManager(); - Vehicle* vehicle = vehicleMgr->activeVehicle(); - - _progressHandlerCalled = true; - - QCOMPARE(MAV_COMP_ID_AUTOPILOT1, compId); - QCOMPARE(MAV_RESULT_IN_PROGRESS, ack.result); - QCOMPARE(1, ack.progress); - - // Command should still be in list - QVERIFY(vehicle->_findMavCommandListEntryIndex(MAV_COMP_ID_AUTOPILOT1, testCase->command) != -1); -} - void SendMavCommandWithHandlerTest::_testCaseWorker(TestCase_t& testCase) { _connectMockLinkNoInitialConnectSequence(); @@ -61,25 +42,12 @@ void SendMavCommandWithHandlerTest::_testCaseWorker(TestCase_t& testCase) MultiVehicleManager* vehicleMgr = qgcApp()->toolbox()->multiVehicleManager(); Vehicle* vehicle = vehicleMgr->activeVehicle(); - Vehicle::MavCmdAckHandlerInfo_t handlerInfo = {}; - handlerInfo.resultHandler = _mavCmdResultHandler; - handlerInfo.resultHandlerData = &testCase; - handlerInfo.progressHandler = _mavCmdProgressHandler; - handlerInfo.progressHandlerData = &testCase; - - _resultHandlerCalled = false; - _progressHandlerCalled = false; - - _mockLink->clearReceivedMavCommandCounts(); - vehicle->sendMavCommandWithHandler(&handlerInfo, MAV_COMP_ID_AUTOPILOT1, testCase.command); - - if (testCase.expectInProgressResult) { - QVERIFY(QTest::qWaitFor([&]() { return _progressHandlerCalled; }, 10000)); - } - - QVERIFY(QTest::qWaitFor([&]() { return _resultHandlerCalled; }, 10000)); - QCOMPARE(_mockLink->receivedMavCommandCount(testCase.command), testCase.expectedSendCount); - QCOMPARE(vehicle->_findMavCommandListEntryIndex(MAV_COMP_ID_AUTOPILOT1, testCase.command), -1); + _handlerCalled = false; + _mockLink->clearSendMavCommandCounts(); + vehicle->sendMavCommandWithHandler(_mavCmdResultHandler, &testCase, MAV_COMP_ID_AUTOPILOT1, testCase.command); + QVERIFY(QTest::qWaitFor([&]() { return _handlerCalled; }, 10000)); + QCOMPARE(vehicle->_findMavCommandListEntryIndex(MAV_COMP_ID_AUTOPILOT1, testCase.command), -1); + QCOMPARE(_mockLink->sendMavCommandCount(testCase.command), testCase.expectedSendCount); _disconnectMockLink(); } @@ -104,35 +72,27 @@ void SendMavCommandWithHandlerTest::_duplicateCommand(void) MultiVehicleManager* vehicleMgr = qgcApp()->toolbox()->multiVehicleManager(); Vehicle* vehicle = vehicleMgr->activeVehicle(); - Vehicle::MavCmdAckHandlerInfo_t handlerInfo = {}; - handlerInfo.resultHandler = _mavCmdResultHandler; - handlerInfo.resultHandlerData = &testCase; - handlerInfo.progressHandler = _mavCmdProgressHandler; - handlerInfo.progressHandlerData = &testCase; - - _resultHandlerCalled = false; - _progressHandlerCalled = false; - - _mockLink->clearReceivedMavCommandCounts(); + _handlerCalled = false; + _mockLink->clearSendMavCommandCounts(); vehicle->sendMavCommand(MAV_COMP_ID_AUTOPILOT1, testCase.command, true /* showError */); - QVERIFY(QTest::qWaitFor([&]() { return _mockLink->receivedMavCommandCount(testCase.command) == 1; }, 10)); - QVERIFY(!_resultHandlerCalled); - QVERIFY(!_progressHandlerCalled); - vehicle->sendMavCommandWithHandler(&handlerInfo, MAV_COMP_ID_AUTOPILOT1, testCase.command); + QVERIFY(QTest::qWaitFor([&]() { return _mockLink->sendMavCommandCount(testCase.command) == 1; }, 10)); + QVERIFY(!_handlerCalled); + vehicle->sendMavCommandWithHandler(_mavCmdResultHandler, &testCase, MAV_COMP_ID_AUTOPILOT1, testCase.command); // Duplicate command response should happen immediately - QVERIFY(_resultHandlerCalled); + QVERIFY(_handlerCalled); QVERIFY(vehicle->_findMavCommandListEntryIndex(MAV_COMP_ID_AUTOPILOT1, testCase.command) != -1); - QCOMPARE(_mockLink->receivedMavCommandCount(testCase.command), 1); + QCOMPARE(_mockLink->sendMavCommandCount(testCase.command), 1); } -void SendMavCommandWithHandlerTest::_compIdAllFailureMavCmdResultHandler(void* /*resultHandlerData*/, int compId, const mavlink_command_ack_t& ack, Vehicle::MavCmdResultFailureCode_t failureCode) +void SendMavCommandWithHandlerTest::_compIdAllMavCmdResultHandler(void* /*resultHandlerData*/, int compId, MAV_RESULT commandResult, uint8_t progress, Vehicle::MavCmdResultFailureCode_t failureCode) { - _resultHandlerCalled = true; + _handlerCalled = true; - QCOMPARE(compId, MAV_COMP_ID_ALL); - QCOMPARE(ack.result, MAV_RESULT_FAILED); - QCOMPARE(failureCode, Vehicle::MavCmdResultCommandResultOnly); + QCOMPARE(compId, MAV_COMP_ID_ALL); + QCOMPARE(commandResult, MAV_RESULT_FAILED); + QCOMPARE(progress, 0); + QCOMPARE(failureCode, Vehicle::MavCmdResultCommandResultOnly); } void SendMavCommandWithHandlerTest::_compIdAllFailure(void) @@ -146,17 +106,12 @@ void SendMavCommandWithHandlerTest::_compIdAllFailure(void) MultiVehicleManager* vehicleMgr = qgcApp()->toolbox()->multiVehicleManager(); Vehicle* vehicle = vehicleMgr->activeVehicle(); - Vehicle::MavCmdAckHandlerInfo_t handlerInfo = {}; - handlerInfo.resultHandler = _compIdAllFailureMavCmdResultHandler; - - _resultHandlerCalled = false; - - _mockLink->clearReceivedMavCommandCounts(); - vehicle->sendMavCommandWithHandler(&handlerInfo, MAV_COMP_ID_ALL, testCase.command); - - QCOMPARE(_resultHandlerCalled, true); + _handlerCalled = false; + _mockLink->clearSendMavCommandCounts(); + vehicle->sendMavCommandWithHandler(_compIdAllMavCmdResultHandler, nullptr, MAV_COMP_ID_ALL, testCase.command); + QCOMPARE(_handlerCalled, true); QCOMPARE(vehicle->_findMavCommandListEntryIndex(MAV_COMP_ID_ALL, testCase.command), -1); - QCOMPARE(_mockLink->receivedMavCommandCount(testCase.command), testCase.expectedSendCount); + QCOMPARE(_mockLink->sendMavCommandCount(testCase.command), testCase.expectedSendCount); _disconnectMockLink(); } diff --git a/src/Vehicle/SendMavCommandWithHandlerTest.h b/src/Vehicle/SendMavCommandWithHandlerTest.h index 1d97c5e..4f70bd0 100644 --- a/src/Vehicle/SendMavCommandWithHandlerTest.h +++ b/src/Vehicle/SendMavCommandWithHandlerTest.h @@ -25,19 +25,17 @@ private: typedef struct { MAV_CMD command; MAV_RESULT expectedCommandResult; - bool expectInProgressResult; + uint8_t progress; Vehicle::MavCmdResultFailureCode_t expectedFailureCode; int expectedSendCount; } TestCase_t; void _testCaseWorker(TestCase_t& testCase); - static void _mavCmdResultHandler (void* resultHandlerData, int compId, const mavlink_command_ack_t& ack, Vehicle::MavCmdResultFailureCode_t failureCode); - static void _mavCmdProgressHandler (void* progressHandlerData, int compId, const mavlink_command_ack_t& ack); - static void _compIdAllFailureMavCmdResultHandler(void* resultHandlerData, int compId, const mavlink_command_ack_t& ack, Vehicle::MavCmdResultFailureCode_t failureCode); + static void _mavCmdResultHandler (void* resultHandlerData, int compId, MAV_RESULT commandResult, uint8_t progress, Vehicle::MavCmdResultFailureCode_t failureCode); + static void _compIdAllMavCmdResultHandler (void* resultHandlerData, int compId, MAV_RESULT commandResult, uint8_t progress, Vehicle::MavCmdResultFailureCode_t failureCode); - static bool _resultHandlerCalled; - static bool _progressHandlerCalled; + static bool _handlerCalled; static TestCase_t _rgTestCases[]; }; diff --git a/src/Vehicle/SendMavCommandWithSignallingTest.cc b/src/Vehicle/SendMavCommandWithSignallingTest.cc index ff1c26e..a5b0139 100644 --- a/src/Vehicle/SendMavCommandWithSignallingTest.cc +++ b/src/Vehicle/SendMavCommandWithSignallingTest.cc @@ -19,9 +19,6 @@ SendMavCommandWithSignallingTest::TestCase_t SendMavCommandWithSignallingTest::_ { MockLink::MAV_CMD_MOCKLINK_SECOND_ATTEMPT_RESULT_FAILED, MAV_RESULT_FAILED, Vehicle::MavCmdResultCommandResultOnly, 2 }, { MockLink::MAV_CMD_MOCKLINK_NO_RESPONSE, MAV_RESULT_FAILED, Vehicle::MavCmdResultFailureNoResponseToCommand, Vehicle::_mavCommandMaxRetryCount }, { MockLink::MAV_CMD_MOCKLINK_NO_RESPONSE_NO_RETRY, MAV_RESULT_FAILED, Vehicle::MavCmdResultFailureNoResponseToCommand, 1 }, - { MockLink::MAV_CMD_MOCKLINK_RESULT_IN_PROGRESS_ACCEPTED, MAV_RESULT_ACCEPTED, Vehicle::MavCmdResultCommandResultOnly, 1 }, - { MockLink::MAV_CMD_MOCKLINK_RESULT_IN_PROGRESS_FAILED, MAV_RESULT_FAILED, Vehicle::MavCmdResultCommandResultOnly, 1 }, - { MockLink::MAV_CMD_MOCKLINK_RESULT_IN_PROGRESS_NO_ACK, MAV_RESULT_FAILED, Vehicle::MavCmdResultFailureNoResponseToCommand, 1 }, }; void SendMavCommandWithSignallingTest::_testCaseWorker(TestCase_t& testCase) @@ -32,7 +29,7 @@ void SendMavCommandWithSignallingTest::_testCaseWorker(TestCase_t& testCase) Vehicle* vehicle = vehicleMgr->activeVehicle(); QSignalSpy spyResult(vehicle, &Vehicle::mavCommandResult); - _mockLink->clearReceivedMavCommandCounts(); + _mockLink->clearSendMavCommandCounts(); vehicle->sendMavCommand(MAV_COMP_ID_AUTOPILOT1, testCase.command, true /* showError */); @@ -45,7 +42,7 @@ void SendMavCommandWithSignallingTest::_testCaseWorker(TestCase_t& testCase) QCOMPARE(arguments.at(3).toInt(), testCase.expectedCommandResult); QCOMPARE(arguments.at(4).value(), testCase.expectedFailureCode); QCOMPARE(vehicle->_findMavCommandListEntryIndex(MAV_COMP_ID_AUTOPILOT1, MockLink::MAV_CMD_MOCKLINK_ALWAYS_RESULT_ACCEPTED), -1); - QCOMPARE(_mockLink->receivedMavCommandCount(testCase.command), testCase.expectedSendCount); + QCOMPARE(_mockLink->sendMavCommandCount(testCase.command), testCase.expectedSendCount); _disconnectMockLink(); } @@ -67,7 +64,7 @@ void SendMavCommandWithSignallingTest::_duplicateCommand(void) Vehicle* vehicle = vehicleMgr->activeVehicle(); vehicle->sendMavCommand(MAV_COMP_ID_AUTOPILOT1, MockLink::MAV_CMD_MOCKLINK_NO_RESPONSE, true /* showError */); - QVERIFY(QTest::qWaitFor([&]() { return _mockLink->receivedMavCommandCount(MockLink::MAV_CMD_MOCKLINK_NO_RESPONSE) == 1; }, 10)); + QVERIFY(QTest::qWaitFor([&]() { return _mockLink->sendMavCommandCount(MockLink::MAV_CMD_MOCKLINK_NO_RESPONSE) == 1; }, 10)); QSignalSpy spyResult(vehicle, &Vehicle::mavCommandResult); vehicle->sendMavCommand(MAV_COMP_ID_AUTOPILOT1, MockLink::MAV_CMD_MOCKLINK_NO_RESPONSE, true /* showError */); @@ -79,6 +76,6 @@ void SendMavCommandWithSignallingTest::_duplicateCommand(void) QCOMPARE(arguments.at(2).toInt(), (int)MockLink::MAV_CMD_MOCKLINK_NO_RESPONSE); QCOMPARE(arguments.at(3).toInt(), (int)MAV_RESULT_FAILED); QCOMPARE(arguments.at(4).value(), Vehicle::MavCmdResultFailureDuplicateCommand); - QCOMPARE(_mockLink->receivedMavCommandCount(MockLink::MAV_CMD_MOCKLINK_NO_RESPONSE), 1); + QCOMPARE(_mockLink->sendMavCommandCount(MockLink::MAV_CMD_MOCKLINK_NO_RESPONSE), 1); QVERIFY(vehicle->_findMavCommandListEntryIndex(MAV_COMP_ID_AUTOPILOT1, MockLink::MAV_CMD_MOCKLINK_NO_RESPONSE) != -1); } diff --git a/src/Vehicle/StandardModes.cc b/src/Vehicle/StandardModes.cc deleted file mode 100644 index e58ca90..0000000 --- a/src/Vehicle/StandardModes.cc +++ /dev/null @@ -1,183 +0,0 @@ -/**************************************************************************** - * - * (c) 2022 QGROUNDCONTROL PROJECT - * - * QGroundControl is licensed according to the terms in the file - * COPYING.md in the root of the source code directory. - * - ****************************************************************************/ - -#include "Vehicle.h" -#include "StandardModes.h" - -QGC_LOGGING_CATEGORY(StandardModesLog, "StandardModesLog") - - -static void requestMessageResultHandler(void* resultHandlerData, MAV_RESULT result, - Vehicle::RequestMessageResultHandlerFailureCode_t failureCode, const mavlink_message_t &message) -{ - StandardModes* standardModes = static_cast(resultHandlerData); - standardModes->gotMessage(result, message); -} - -StandardModes::StandardModes(QObject *parent, Vehicle *vehicle) - : QObject(parent), _vehicle(vehicle) -{ -} - -void StandardModes::gotMessage(MAV_RESULT result, const mavlink_message_t &message) -{ - _requestActive = false; - if (_wantReset) { - _wantReset = false; - request(); - return; - } - - if (result == MAV_RESULT_ACCEPTED) { - mavlink_available_modes_t availableModes; - mavlink_msg_available_modes_decode(&message, &availableModes); - bool cannotBeSet = availableModes.properties & MAV_MODE_PROPERTY_NOT_USER_SELECTABLE; - bool advanced = availableModes.properties & MAV_MODE_PROPERTY_ADVANCED; - availableModes.mode_name[sizeof(availableModes.mode_name)-1] = '\0'; - QString name = availableModes.mode_name; - switch (availableModes.standard_mode) { - case MAV_STANDARD_MODE_POSITION_HOLD: - name = "Position"; - break; - case MAV_STANDARD_MODE_ORBIT: - name = "Orbit"; - break; - case MAV_STANDARD_MODE_CRUISE: - name = "Cruise"; - break; - case MAV_STANDARD_MODE_ALTITUDE_HOLD: - name = "Altitude"; - break; - case MAV_STANDARD_MODE_RETURN_HOME: - name = "Return"; - break; - case MAV_STANDARD_MODE_SAFE_RECOVERY: - name = "Safe Recovery"; - break; - case MAV_STANDARD_MODE_MISSION: - name = "Mission"; - break; - case MAV_STANDARD_MODE_LAND: - name = "Land"; - break; - case MAV_STANDARD_MODE_TAKEOFF: - name = "Takeoff"; - break; - } - - if (name == "Takeoff" || name == "VTOL Takeoff" || name == "Orbit" || name == "Land" || name == "Return") { // These are exposed in the UI as separate buttons - cannotBeSet = true; - } - - qCDebug(StandardModesLog) << "Got mode:" << name << ", idx:" << availableModes.mode_index << ", custom_mode" << availableModes.custom_mode; - - _nextModes[availableModes.custom_mode] = Mode{name, availableModes.standard_mode, advanced, cannotBeSet}; - - if (availableModes.mode_index >= availableModes.number_modes) { // We are done - qCDebug(StandardModesLog) << "Completed, num modes:" << _nextModes.size(); - _modes = _nextModes; - ensureUniqueModeNames(); - _hasModes = true; - emit modesUpdated(); - emit requestCompleted(); - - } else { - requestMode(availableModes.mode_index + 1); - } - - } else { - qCDebug(StandardModesLog) << "Failed to retrieve available modes" << result; - emit requestCompleted(); - } -} - -void StandardModes::ensureUniqueModeNames() -{ - // Ensure mode names are unique. This should generally already be the case, but e.g. during development when - // restarting dynamic modes, it might not be. - for (auto iter = _modes.begin(); iter != _modes.end(); ++iter) { - int duplicateIdx = 0; - for (auto iter2 = iter + 1; iter2 != _modes.end(); ++iter2) { - if (iter.value().name == iter2.value().name) { - iter2.value().name += QStringLiteral(" (%1)").arg(duplicateIdx + 1); - ++duplicateIdx; - } - } - } -} - -void StandardModes::request() -{ -#ifdef DAILY_BUILD // Disable use of development/WIP MAVLink messages for release builds - if (_requestActive) { - // If we are in the middle of waiting for a request, wait for the response first - _wantReset = true; - return; - } - - _nextModes.clear(); - - qCDebug(StandardModesLog) << "Requesting available modes"; - // Request one at a time. This could be improved by requesting all, but we can't use Vehicle::requestMessage for that - StandardModes::requestMode(1); -#else - emit requestCompleted(); -#endif // DAILY_BUILD -} - -void StandardModes::requestMode(int modeIndex) -{ - _requestActive = true; - _vehicle->requestMessage( - requestMessageResultHandler, - this, - MAV_COMP_ID_AUTOPILOT1, - MAVLINK_MSG_ID_AVAILABLE_MODES, modeIndex); -} - -void StandardModes::availableModesMonitorReceived(uint8_t seq) -{ - if (_lastSeq != seq) { - qCDebug(StandardModesLog) << "Available modes changed, re-requesting"; - _lastSeq = seq; - request(); - } -} - -QStringList StandardModes::flightModes() -{ - QStringList ret; - for (const auto& mode : _modes) { - if (mode.cannotBeSet) { - continue; - } - ret += mode.name; - } - return ret; -} - -QString StandardModes::flightMode(uint32_t custom_mode) const -{ - auto iter = _modes.find(custom_mode); - if (iter != _modes.end()) { - return iter->name; - } - return tr("Unknown %2").arg(custom_mode); -} - -bool StandardModes::setFlightMode(const QString &flightMode, uint32_t *custom_mode) -{ - for (auto iter = _modes.constBegin(); iter != _modes.constEnd(); ++iter) { - if (iter->name == flightMode) { - *custom_mode = iter.key(); - return true; - } - } - return false; -} diff --git a/src/Vehicle/StandardModes.h b/src/Vehicle/StandardModes.h deleted file mode 100644 index 948511a..0000000 --- a/src/Vehicle/StandardModes.h +++ /dev/null @@ -1,69 +0,0 @@ -/**************************************************************************** - * - * (c) 2022 QGROUNDCONTROL PROJECT - * - * QGroundControl is licensed according to the terms in the file - * COPYING.md in the root of the source code directory. - * - ****************************************************************************/ - -#pragma once - -#include "QGCLoggingCategory.h" -#include "QGCMAVLink.h" -#include -#include - -Q_DECLARE_LOGGING_CATEGORY(StandardModesLog) - -class Vehicle; - -class StandardModes : public QObject -{ -Q_OBJECT - -public: - struct Mode { - QString name; - uint8_t standardMode; - bool advanced; - bool cannotBeSet; - }; - - StandardModes(QObject* parent, Vehicle* vehicle); - - void request(); - - void availableModesMonitorReceived(uint8_t seq); - - bool supported() const { return _hasModes; } - - QStringList flightModes(); - - QString flightMode(uint32_t custom_mode) const; - - bool setFlightMode(const QString& flightMode, uint32_t* custom_mode); - - void gotMessage(MAV_RESULT result, const mavlink_message_t &message); -signals: - void modesUpdated(); - void requestCompleted(); - -private: - - void requestMode(int modeIndex); - void ensureUniqueModeNames(); - - Vehicle*const _vehicle; - - bool _requestActive{false}; - bool _wantReset{false}; - QMap _nextModes; ///< Modes added by current request - - bool _hasModes{false}; - - int _lastSeq{-1}; - - QMap _modes; ///< key is custom_mode -}; - diff --git a/src/Vehicle/Vehicle.cc b/src/Vehicle/Vehicle.cc index a808339..9cf7e3d 100644 --- a/src/Vehicle/Vehicle.cc +++ b/src/Vehicle/Vehicle.cc @@ -1,4 +1,4 @@ -/**************************************************************************** +/**************************************************************************** * * (c) 2009-2020 QGROUNDCONTROL PROJECT * @@ -55,15 +55,16 @@ #include "MockLink.h" #endif #include "Autotune.h" -#include "RemoteIDManager.h" + +#if defined(QGC_AIRMAP_ENABLED) +#include "AirspaceVehicleManager.h" +#endif QGC_LOGGING_CATEGORY(VehicleLog, "VehicleLog") #define UPDATE_TIMER 50 #define DEFAULT_LAT 38.965767f #define DEFAULT_LON -120.083923f -#define SET_HOME_TERRAIN_ALT_MAX 10000 -#define SET_HOME_TERRAIN_ALT_MIN -500 const QString guided_mode_not_supported_by_vehicle = QObject::tr("Guided mode not supported by Vehicle."); @@ -84,20 +85,17 @@ const char* Vehicle::_groundSpeedFactName = "groundSpeed"; const char* Vehicle::_climbRateFactName = "climbRate"; const char* Vehicle::_altitudeRelativeFactName = "altitudeRelative"; const char* Vehicle::_altitudeAMSLFactName = "altitudeAMSL"; -const char* Vehicle::_altitudeAboveTerrFactName = "altitudeAboveTerr"; const char* Vehicle::_altitudeTuningFactName = "altitudeTuning"; const char* Vehicle::_altitudeTuningSetpointFactName = "altitudeTuningSetpoint"; const char* Vehicle::_flightDistanceFactName = "flightDistance"; const char* Vehicle::_flightTimeFactName = "flightTime"; const char* Vehicle::_distanceToHomeFactName = "distanceToHome"; -const char* Vehicle::_timeToHomeFactName = "timeToHome"; const char* Vehicle::_missionItemIndexFactName = "missionItemIndex"; const char* Vehicle::_headingToNextWPFactName = "headingToNextWP"; const char* Vehicle::_headingToHomeFactName = "headingToHome"; const char* Vehicle::_distanceToGCSFactName = "distanceToGCS"; const char* Vehicle::_hobbsFactName = "hobbs"; const char* Vehicle::_throttlePctFactName = "throttlePct"; -const char* Vehicle::_imuTempFactName = "imuTemp"; const char* Vehicle::_gpsFactGroupName = "gps"; const char* Vehicle::_gps2FactGroupName = "gps2"; @@ -113,8 +111,6 @@ const char* Vehicle::_escStatusFactGroupName = "escStatus"; const char* Vehicle::_estimatorStatusFactGroupName = "estimatorStatus"; const char* Vehicle::_terrainFactGroupName = "terrain"; const char* Vehicle::_hygrometerFactGroupName = "hygrometer"; -const char* Vehicle::_generatorFactGroupName = "generator"; -const char* Vehicle::_efiFactGroupName = "efi"; // Standard connected vehicle Vehicle::Vehicle(LinkInterface* link, @@ -149,7 +145,6 @@ Vehicle::Vehicle(LinkInterface* link, , _climbRateFact (0, _climbRateFactName, FactMetaData::valueTypeDouble) , _altitudeRelativeFact (0, _altitudeRelativeFactName, FactMetaData::valueTypeDouble) , _altitudeAMSLFact (0, _altitudeAMSLFactName, FactMetaData::valueTypeDouble) - , _altitudeAboveTerrFact (0, _altitudeAboveTerrFactName, FactMetaData::valueTypeDouble) , _altitudeTuningFact (0, _altitudeTuningFactName, FactMetaData::valueTypeDouble) , _altitudeTuningSetpointFact (0, _altitudeTuningSetpointFactName, FactMetaData::valueTypeDouble) , _xTrackErrorFact (0, _xTrackErrorFactName, FactMetaData::valueTypeDouble) @@ -157,14 +152,12 @@ Vehicle::Vehicle(LinkInterface* link, , _flightDistanceFact (0, _flightDistanceFactName, FactMetaData::valueTypeDouble) , _flightTimeFact (0, _flightTimeFactName, FactMetaData::valueTypeElapsedTimeInSeconds) , _distanceToHomeFact (0, _distanceToHomeFactName, FactMetaData::valueTypeDouble) - , _timeToHomeFact (0, _timeToHomeFactName, FactMetaData::valueTypeDouble) , _missionItemIndexFact (0, _missionItemIndexFactName, FactMetaData::valueTypeUint16) , _headingToNextWPFact (0, _headingToNextWPFactName, FactMetaData::valueTypeDouble) , _headingToHomeFact (0, _headingToHomeFactName, FactMetaData::valueTypeDouble) , _distanceToGCSFact (0, _distanceToGCSFactName, FactMetaData::valueTypeDouble) , _hobbsFact (0, _hobbsFactName, FactMetaData::valueTypeString) , _throttlePctFact (0, _throttlePctFactName, FactMetaData::valueTypeUint16) - , _imuTempFact (0, _imuTempFactName, FactMetaData::valueTypeInt16) , _gpsFactGroup (this) , _gps2FactGroup (this) , _windFactGroup (this) @@ -178,15 +171,13 @@ Vehicle::Vehicle(LinkInterface* link, , _escStatusFactGroup (this) , _estimatorStatusFactGroup (this) , _hygrometerFactGroup (this) - , _generatorFactGroup (this) - , _efiFactGroup (this) , _terrainFactGroup (this) , _terrainProtocolHandler (new TerrainProtocolHandler(this, &_terrainFactGroup, this)) { _linkManager = _toolbox->linkManager(); - connect(_joystickManager, &JoystickManager::activeJoystickChanged, this, &Vehicle::_loadJoystickSettings); - connect(qgcApp()->toolbox()->multiVehicleManager(), &MultiVehicleManager::activeVehicleChanged, this, &Vehicle::_activeVehicleChanged); + connect(_joystickManager, &JoystickManager::activeJoystickChanged, this, &Vehicle::_loadSettings); + connect(qgcApp()->toolbox()->multiVehicleManager(), &MultiVehicleManager::activeVehicleAvailableChanged, this, &Vehicle::_loadSettings); _mavlink = _toolbox->mavlinkProtocol(); qCDebug(VehicleLog) << "Link started with Mavlink " << (_mavlink->getCurrentVersion() >= 200 ? "V2" : "V1"); @@ -214,6 +205,17 @@ Vehicle::Vehicle(LinkInterface* link, _settingsManager->videoSettings()->lowLatencyMode()->setRawValue(true); } + //-- Airspace Management +#if defined(QGC_AIRMAP_ENABLED) + AirspaceManager* airspaceManager = _toolbox->airspaceManager(); + if (airspaceManager) { + _airspaceVehicleManager = airspaceManager->instantiateVehicle(*this); + if (_airspaceVehicleManager) { + connect(_airspaceVehicleManager, &AirspaceVehicleManager::trafficUpdate, this, &Vehicle::_trafficUpdate); + } + } +#endif + _autopilotPlugin = _firmwarePlugin->autopilotPlugin(this); _autopilotPlugin->setParent(this); @@ -262,9 +264,6 @@ Vehicle::Vehicle(LinkInterface* link, // Start csv logger connect(&_csvLogTimer, &QTimer::timeout, this, &Vehicle::_writeCsvLine); _csvLogTimer.start(1000); - - // Start timer to limit altitude above terrain queries - _altitudeAboveTerrQueryTimer.restart(); } // Disconnected Vehicle for offline editing @@ -301,7 +300,6 @@ Vehicle::Vehicle(MAV_AUTOPILOT firmwareType, , _climbRateFact (0, _climbRateFactName, FactMetaData::valueTypeDouble) , _altitudeRelativeFact (0, _altitudeRelativeFactName, FactMetaData::valueTypeDouble) , _altitudeAMSLFact (0, _altitudeAMSLFactName, FactMetaData::valueTypeDouble) - , _altitudeAboveTerrFact (0, _altitudeAboveTerrFactName, FactMetaData::valueTypeDouble) , _altitudeTuningFact (0, _altitudeTuningFactName, FactMetaData::valueTypeDouble) , _altitudeTuningSetpointFact (0, _altitudeTuningSetpointFactName, FactMetaData::valueTypeDouble) , _xTrackErrorFact (0, _xTrackErrorFactName, FactMetaData::valueTypeDouble) @@ -315,7 +313,6 @@ Vehicle::Vehicle(MAV_AUTOPILOT firmwareType, , _distanceToGCSFact (0, _distanceToGCSFactName, FactMetaData::valueTypeDouble) , _hobbsFact (0, _hobbsFactName, FactMetaData::valueTypeString) , _throttlePctFact (0, _throttlePctFactName, FactMetaData::valueTypeUint16) - , _imuTempFact (0, _imuTempFactName, FactMetaData::valueTypeInt16) , _gpsFactGroup (this) , _gps2FactGroup (this) , _windFactGroup (this) @@ -367,12 +364,8 @@ void Vehicle::_commonInit() connect(this, &Vehicle::coordinateChanged, this, &Vehicle::_updateDistanceToGCS); connect(this, &Vehicle::homePositionChanged, this, &Vehicle::_updateDistanceHeadingToHome); connect(this, &Vehicle::hobbsMeterChanged, this, &Vehicle::_updateHobbsMeter); - connect(this, &Vehicle::coordinateChanged, this, &Vehicle::_updateAltAboveTerrain); - // Initialize alt above terrain to Nan so frontend can display it correctly in case the terrain query had no response - _altitudeAboveTerrFact.setRawValue(qQNaN()); connect(_toolbox->qgcPositionManager(), &QGCPositionManager::gcsPositionChanged, this, &Vehicle::_updateDistanceToGCS); - connect(_toolbox->qgcPositionManager(), &QGCPositionManager::gcsPositionChanged, this, &Vehicle::_updateHomepoint); _missionManager = new MissionManager(this); connect(_missionManager, &MissionManager::error, this, &Vehicle::_missionManagerError); @@ -385,16 +378,12 @@ void Vehicle::_commonInit() connect(_missionManager, &MissionManager::sendComplete, _trajectoryPoints, &TrajectoryPoints::clear); connect(_missionManager, &MissionManager::newMissionItemsAvailable, _trajectoryPoints, &TrajectoryPoints::clear); - _standardModes = new StandardModes (this, this); _componentInformationManager = new ComponentInformationManager (this); _initialConnectStateMachine = new InitialConnectStateMachine (this); _ftpManager = new FTPManager (this); _imageProtocolManager = new ImageProtocolManager (); _vehicleLinkManager = new VehicleLinkManager (this); - connect(_standardModes, &StandardModes::modesUpdated, this, &Vehicle::flightModesChanged); - connect(_standardModes, &StandardModes::modesUpdated, this, [this](){ Vehicle::flightModeChanged(flightMode()); }); - _parameterManager = new ParameterManager(this); connect(_parameterManager, &ParameterManager::parametersReadyChanged, this, &Vehicle::_parametersReady); @@ -415,9 +404,6 @@ void Vehicle::_commonInit() connect(_rallyPointManager, &RallyPointManager::error, this, &Vehicle::_rallyPointManagerError); connect(_rallyPointManager, &RallyPointManager::loadComplete, this, &Vehicle::_firstRallyPointLoadComplete); - // Remote ID manager might want to acces parameters so make sure to create it after - _remoteIDManager = new RemoteIDManager(this); - // Flight modes can differ based on advanced mode connect(_toolbox->corePlugin(), &QGCCorePlugin::showAdvancedUIChanged, this, &Vehicle::flightModesChanged); @@ -437,7 +423,6 @@ void Vehicle::_commonInit() _addFact(&_climbRateFact, _climbRateFactName); _addFact(&_altitudeRelativeFact, _altitudeRelativeFactName); _addFact(&_altitudeAMSLFact, _altitudeAMSLFactName); - _addFact(&_altitudeAboveTerrFact, _altitudeAboveTerrFactName); _addFact(&_altitudeTuningFact, _altitudeTuningFactName); _addFact(&_altitudeTuningSetpointFact, _altitudeTuningSetpointFactName); _addFact(&_xTrackErrorFact, _xTrackErrorFactName); @@ -445,13 +430,11 @@ void Vehicle::_commonInit() _addFact(&_flightDistanceFact, _flightDistanceFactName); _addFact(&_flightTimeFact, _flightTimeFactName); _addFact(&_distanceToHomeFact, _distanceToHomeFactName); - _addFact(&_timeToHomeFact, _timeToHomeFactName); _addFact(&_missionItemIndexFact, _missionItemIndexFactName); _addFact(&_headingToNextWPFact, _headingToNextWPFactName); _addFact(&_headingToHomeFact, _headingToHomeFactName); _addFact(&_distanceToGCSFact, _distanceToGCSFactName); _addFact(&_throttlePctFact, _throttlePctFactName); - _addFact(&_imuTempFact, _imuTempFactName); _hobbsFact.setRawValue(QVariant(QString("0000:00:00"))); _addFact(&_hobbsFact, _hobbsFactName); @@ -469,8 +452,6 @@ void Vehicle::_commonInit() _addFactGroup(&_escStatusFactGroup, _escStatusFactGroupName); _addFactGroup(&_estimatorStatusFactGroup, _estimatorStatusFactGroupName); _addFactGroup(&_hygrometerFactGroup, _hygrometerFactGroupName); - _addFactGroup(&_generatorFactGroup, _generatorFactGroupName); - _addFactGroup(&_efiFactGroup, _efiFactGroupName); _addFactGroup(&_terrainFactGroup, _terrainFactGroupName); // Add firmware-specific fact groups, if provided @@ -495,8 +476,16 @@ void Vehicle::_commonInit() _settingsManager->videoSettings()->lowLatencyMode()->setRawValue(true); } - // enable Joystick if appropriate - _loadJoystickSettings(); + //-- Airspace Management +#if defined(QGC_AIRMAP_ENABLED) + AirspaceManager* airspaceManager = _toolbox->airspaceManager(); + if (airspaceManager) { + _airspaceVehicleManager = airspaceManager->instantiateVehicle(*this); + if (_airspaceVehicleManager) { + connect(_airspaceVehicleManager, &AirspaceVehicleManager::trafficUpdate, this, &Vehicle::_trafficUpdate); + } + } +#endif } Vehicle::~Vehicle() @@ -511,6 +500,16 @@ Vehicle::~Vehicle() delete _mav; _mav = nullptr; + + if (_joystickManager) { + _startJoystick(false); + } + +#if defined(QGC_AIRMAP_ENABLED) + if (_airspaceVehicleManager) { + delete _airspaceVehicleManager; + } +#endif } void Vehicle::prepareDelete() @@ -657,7 +656,6 @@ void Vehicle::_mavlinkMessageReceived(LinkInterface* link, mavlink_message_t mes _ftpManager->_mavlinkMessageReceived(message); _parameterManager->mavlinkMessageReceived(message); _imageProtocolManager->mavlinkMessageReceived(message); - _remoteIDManager->mavlinkMessageReceived(message); _waitForMavlinkMessageMessageReceived(message); @@ -689,7 +687,7 @@ void Vehicle::_mavlinkMessageReceived(LinkInterface* link, mavlink_message_t mes _handleSysStatus(message); break; case MAVLINK_MSG_ID_RAW_IMU: - _handleRawImuTemp(message); + emit mavlinkRawImu(message); break; case MAVLINK_MSG_ID_SCALED_IMU: emit mavlinkScaledImu1(message); @@ -724,6 +722,9 @@ void Vehicle::_mavlinkMessageReceived(LinkInterface* link, mavlink_message_t mes case MAVLINK_MSG_ID_VFR_HUD: _handleVfrHud(message); break; + // case MAVLINK_MSG_ID_RANGEFINDER: + // _handleRangefinder(message); + // break; case MAVLINK_MSG_ID_NAV_CONTROLLER_OUTPUT: _handleNavControllerOutput(message); break; @@ -760,9 +761,6 @@ void Vehicle::_mavlinkMessageReceived(LinkInterface* link, mavlink_message_t mes case MAVLINK_MSG_ID_OBSTACLE_DISTANCE: _handleObstacleDistance(message); break; - case MAVLINK_MSG_ID_FENCE_STATUS: - _handleFenceStatus(message); - break; case MAVLINK_MSG_ID_EVENT: case MAVLINK_MSG_ID_CURRENT_EVENT_SEQUENCE: @@ -782,30 +780,12 @@ void Vehicle::_mavlinkMessageReceived(LinkInterface* link, mavlink_message_t mes } } break; -#ifdef DAILY_BUILD // Disable use of development/WIP MAVLink messages for release builds - case MAVLINK_MSG_ID_AVAILABLE_MODES_MONITOR: - { - // Avoid duplicate requests during initial connection setup - if (!_initialConnectStateMachine || !_initialConnectStateMachine->active()) { - mavlink_available_modes_monitor_t availableModesMonitor; - mavlink_msg_available_modes_monitor_decode(&message, &availableModesMonitor); - _standardModes->availableModesMonitorReceived(availableModesMonitor.seq); - } - break; - } - case MAVLINK_MSG_ID_CURRENT_MODE: - _handleCurrentMode(message); - break; -#endif // DAILY_BUILD // Following are ArduPilot dialect messages #if !defined(NO_ARDUPILOT_DIALECT) case MAVLINK_MSG_ID_CAMERA_FEEDBACK: _handleCameraFeedback(message); break; - case MAVLINK_MSG_ID_RANGEFINDER: - _handleRangefinder(message); - break; #endif } @@ -827,14 +807,6 @@ void Vehicle::_handleCameraFeedback(const mavlink_message_t& message) qCDebug(VehicleLog) << "_handleCameraFeedback coord:index" << imageCoordinate << feedback.img_idx; _cameraTriggerPoints.append(new QGCQGeoCoordinate(imageCoordinate, this)); } - -void Vehicle::_handleRangefinder(mavlink_message_t& message) -{ - - mavlink_rangefinder_t rangefinder; - mavlink_msg_rangefinder_decode(&message, &rangefinder); - _rangeFinderDistFact.setRawValue(qIsNaN(rangefinder.distance) ? 0 : rangefinder.distance); -} #endif void Vehicle::_handleOrbitExecutionStatus(const mavlink_message_t& message) @@ -925,15 +897,6 @@ void Vehicle::_chunkedStatusTextCompleted(uint8_t compId) bool ardupilotPrearm = messageText.startsWith(QStringLiteral("PreArm")); bool px4Prearm = messageText.startsWith(QStringLiteral("preflight"), Qt::CaseInsensitive) && severity >= MAV_SEVERITY_CRITICAL; if (ardupilotPrearm || px4Prearm) { - // check if expected as event - auto eventData = _events.find(compId); - if (eventData != _events.end()) { - if (eventData->data()->healthAndArmingChecksSupported()) { - qCDebug(VehicleLog) << "Dropping preflight message (expected as event):" << messageText; - return; - } - } - // Limit repeated PreArm message to once every 10 seconds if (_noisySpokenPrearmMap.contains(messageText) && _noisySpokenPrearmMap[messageText].msecsTo(QTime::currentTime()) < (10 * 1000)) { skipSpoken = true; @@ -960,11 +923,12 @@ void Vehicle::_chunkedStatusTextCompleted(uint8_t compId) qgcApp()->toolbox()->audioOutput()->say(messageText); } } - emit textMessageReceived(id(), compId, severity, messageText.toHtmlEscaped(), ""); + emit textMessageReceived(id(), compId, severity, messageText); } void Vehicle::_handleStatusText(mavlink_message_t& message) { + QByteArray b; QString messageText; mavlink_statustext_t statustext; @@ -972,9 +936,9 @@ void Vehicle::_handleStatusText(mavlink_message_t& message) uint8_t compId = message.compid; - char b[MAVLINK_MSG_STATUSTEXT_FIELD_TEXT_LEN+1]; - strncpy(b, statustext.text, MAVLINK_MSG_STATUSTEXT_FIELD_TEXT_LEN); - b[sizeof(b)-1] = '\0'; + b.resize(MAVLINK_MSG_STATUSTEXT_FIELD_TEXT_LEN+1); + strncpy(b.data(), statustext.text, MAVLINK_MSG_STATUSTEXT_FIELD_TEXT_LEN); + b[b.length()-1] = '\0'; messageText = QString(b); bool includesNullTerminator = messageText.length() < MAVLINK_MSG_STATUSTEXT_FIELD_TEXT_LEN; @@ -1032,11 +996,16 @@ void Vehicle::_handleVfrHud(mavlink_message_t& message) _altitudeTuningOffset = vfrHud.alt; } _altitudeTuningFact.setRawValue(vfrHud.alt - _altitudeTuningOffset); - if (!qIsNaN(vfrHud.groundspeed) && !qIsNaN(_distanceToHomeFact.cookedValue().toDouble())) { - _timeToHomeFact.setRawValue(_distanceToHomeFact.cookedValue().toDouble() / vfrHud.groundspeed); - } } +void Vehicle::_handleRangefinder(mavlink_message_t& message) +{ + // mavlink_rangefinder_t rangefinder; + // mavlink_msg_rangefinder_decode(&message, &rangefinder); + // _rangeFinderDistFact.setRawValue(qIsNaN(rangefinder.distance) ? 0 : rangefinder.distance); +} + + void Vehicle::_handleNavControllerOutput(mavlink_message_t& message) { mavlink_nav_controller_output_t navControllerOutput; @@ -1352,7 +1321,7 @@ QString Vehicle::vehicleUIDStr() { QString uid; uint8_t* pUid = (uint8_t*)(void*)&_uid; - uid = uid.asprintf("%02X:%02X:%02X:%02X:%02X:%02X:%02X:%02X", + uid.asprintf("%02X:%02X:%02X:%02X:%02X:%02X:%02X:%02X", pUid[0] & 0xff, pUid[1] & 0xff, pUid[2] & 0xff, @@ -1520,7 +1489,6 @@ void Vehicle::_setHomePosition(QGeoCoordinate& homeCoord) { if (homeCoord != _homePosition) { _homePosition = homeCoord; - qCDebug(VehicleLog) << "new home location set at coordinate: " << homeCoord; emit homePositionChanged(_homePosition); } } @@ -1607,6 +1575,7 @@ void Vehicle::_handleEvent(uint8_t comp_id, std::unique_ptrgroup() == "health" || event->group() == "arming_check") { + _events[comp_id]->healthAndArmingChecks().handleEvent(*event.get()); // these are displayed separately return; } @@ -1621,38 +1590,13 @@ void Vehicle::_handleEvent(uint8_t comp_id, std::unique_ptrgroup() == "default" && severity != -1) { std::string message = event->message(); std::string description = event->description(); - - if (event->type() == "append_health_and_arming_messages" && event->numArguments() > 0) { - uint32_t customMode = event->argumentValue(0).value.val_uint32_t; - const QSharedPointer& eventHandler = _events[comp_id]; - int modeGroup = eventHandler->getModeGroup(customMode); - std::vector checks = eventHandler->healthAndArmingCheckResults().checks(modeGroup); - QList messageChecks; - for (const auto& check : checks) { - if (events::externalLogLevel(check.log_levels) <= events::Log::Warning) { - messageChecks.append(check.message); - } + if (message.size() > 0) { + // TODO: handle this properly in the UI (e.g. with an expand button to display the description, clickable URL's + params)... + QString msg = QString::fromStdString(message); + if (description.size() > 0) { + msg += "
    " + QString::fromStdString(description).replace("\n", "
    ") + "
    "; } - if (messageChecks.empty()) { - // Add all - for (const auto& check : checks) { - messageChecks.append(check.message); - } - } - if (!message.empty() && !messageChecks.empty()) { - message += "\n"; - } - if (messageChecks.size() == 1) { - message += messageChecks[0]; - } else { - for (const auto& messageCheck : messageChecks) { - message += "- " + messageCheck + "\n"; - } - } - } - - if (!message.empty()) { - emit textMessageReceived(id(), comp_id, severity, QString::fromStdString(message), QString::fromStdString(description)); + emit textMessageReceived(id(), comp_id, severity, msg); } } } @@ -1683,50 +1627,16 @@ EventHandler& Vehicle::_eventHandler(uint8_t compid) sendRequestEventMessageCB, _mavlink->getSystemId(), _mavlink->getComponentId(), _id, compid)}; eventData = _events.insert(compid, eventHandler); - - // connect health and arming check updates - connect(eventHandler.data(), &EventHandler::healthAndArmingChecksUpdated, this, [compid, this]() { - const QSharedPointer& eventHandler = _events[compid]; - _healthAndArmingCheckReport.update(compid, eventHandler->healthAndArmingCheckResults(), - eventHandler->getModeGroup(_has_custom_mode_user_intention ? _custom_mode_user_intention : _custom_mode)); - }); - connect(this, &Vehicle::flightModeChanged, this, [compid, this]() { - const QSharedPointer& eventHandler = _events[compid]; - if (eventHandler->healthAndArmingCheckResultsValid()) { - _healthAndArmingCheckReport.update(compid, eventHandler->healthAndArmingCheckResults(), - eventHandler->getModeGroup(_has_custom_mode_user_intention ? _custom_mode_user_intention : _custom_mode)); - } - }); } return *eventData->data(); } -void Vehicle::setEventsMetadata(uint8_t compid, const QString& metadataJsonFileName) +void Vehicle::setEventsMetadata(uint8_t compid, const QString& metadataJsonFileName, const QString& translationJsonFileName) { - _eventHandler(compid).setMetadata(metadataJsonFileName); - - // get the mode group for some well-known flight modes - int modeGroups[2]{-1, -1}; - const QString modes[2]{"Takeoff", "Mission"}; - for (size_t i = 0; i < sizeof(modeGroups)/sizeof(modeGroups[0]); ++i) { - uint8_t base_mode; - uint32_t custom_mode; - if (setFlightModeCustom(modes[i], &base_mode, &custom_mode)) { - modeGroups[i] = _eventHandler(compid).getModeGroup(custom_mode); - if (modeGroups[i] == -1) { - qCDebug(VehicleLog) << "Failed to get mode group for mode" << modes[i] << "(Might not be in metadata)"; - } - } - } - _healthAndArmingCheckReport.setModeGroups(modeGroups[0], modeGroups[1]); - - // Request arming checks to be reported - sendMavCommand(_defaultComponentId, - MAV_CMD_RUN_PREARM_CHECKS, - false); + _eventHandler(compid).setMetadata(metadataJsonFileName, translationJsonFileName); } -void Vehicle::setActuatorsMetadata(uint8_t compid, const QString& metadataJsonFileName) +void Vehicle::setActuatorsMetadata(uint8_t compid, const QString& metadataJsonFileName, const QString& translationJsonFileName) { if (!_actuators) { _actuators = new Actuators(this, this); @@ -1774,20 +1684,6 @@ void Vehicle::_handleHeartbeat(mavlink_message_t& message) } } -void Vehicle::_handleCurrentMode(mavlink_message_t& message) -{ - mavlink_current_mode_t currentMode; - mavlink_msg_current_mode_decode(&message, ¤tMode); - if (currentMode.intended_custom_mode != 0) { // 0 == unknown/not supplied - _has_custom_mode_user_intention = true; - bool changed = _custom_mode_user_intention != currentMode.intended_custom_mode; - _custom_mode_user_intention = currentMode.intended_custom_mode; - if (changed) { - emit flightModeChanged(flightMode()); - } - } -} - void Vehicle::_handleRadioStatus(mavlink_message_t& message) { @@ -1927,12 +1823,12 @@ int Vehicle::motorCount() switch (_vehicleType) { case MAV_TYPE_HELICOPTER: return 1; - case MAV_TYPE_VTOL_TAILSITTER_DUOROTOR: + case MAV_TYPE_VTOL_DUOROTOR: return 2; case MAV_TYPE_TRICOPTER: return 3; case MAV_TYPE_QUADROTOR: - case MAV_TYPE_VTOL_TAILSITTER_QUADROTOR: + case MAV_TYPE_VTOL_QUADROTOR: return 4; case MAV_TYPE_HEXAROTOR: return 6; @@ -2073,9 +1969,14 @@ void Vehicle::_handleTextMessage(int newCount) _messageCount = newCount; emit messageCountChanged(); } + QString errMsg = pMh->getLatestError(); + if(errMsg != _latestError) { + _latestError = errMsg; + emit latestErrorChanged(); + } } -void Vehicle::resetAllMessages() +void Vehicle::resetMessages() { // Reset Counts int count = _currentMessageCount; @@ -2093,52 +1994,18 @@ void Vehicle::resetAllMessages() } } -// Reset warning counts only -void Vehicle::resetErrorLevelMessages() -{ - int prevMessageCount = _currentMessageCount; - MessageType_t prevMessagetype = _currentMessageType; - - _currentMessageCount -= _currentErrorCount; - _currentErrorCount = 0; - - if (_currentWarningCount > 0) { - _currentMessageType = MessageWarning; - } else if (_currentNormalCount > 0) { - _currentMessageType = MessageNormal; - } else { - _currentMessageType = MessageNone; - } - - if (prevMessageCount != _currentMessageCount) { - emit newMessageCountChanged(); - } - if (prevMessagetype != _currentMessageType) { - emit messageTypeChanged(); - } -} - -// this function called in three cases: -// 1. On constructor of vehicle, to see if we should enable a joystick -// 2. When there is a new active joystick -// 3. When the active joystick is disconnected (even if there isnt a new one) -void Vehicle::_loadJoystickSettings() +void Vehicle::_loadSettings() { QSettings settings; settings.beginGroup(QString(_settingsGroup).arg(_id)); - - if (_toolbox->joystickManager()->activeJoystick()) { - qCDebug(JoystickLog) << "Vehicle " << this->id() << " Notified of an active joystick. Loading setting joystickenabled: " << settings.value(_joystickEnabledSettingsKey, false).toBool(); + // Joystick enabled is a global setting so first make sure there are any joysticks connected + if (_toolbox->joystickManager()->joysticks().count()) { setJoystickEnabled(settings.value(_joystickEnabledSettingsKey, false).toBool()); - } else { - qCDebug(JoystickLog) << "Vehicle " << this->id() << " Notified that there is no active joystick"; - setJoystickEnabled(false); + _startJoystick(true); } } -// This is called from the UI when a deliberate action is taken to enable or disable the joystick -// This save allows the joystick enable state to persist restarts, disconnections of the joystick etc -void Vehicle::saveJoystickSettings() +void Vehicle::_saveSettings() { QSettings settings; settings.beginGroup(QString(_settingsGroup).arg(_id)); @@ -2146,7 +2013,6 @@ void Vehicle::saveJoystickSettings() // The joystick enabled setting should only be changed if a joystick is present // since the checkbox can only be clicked if one is present if (_toolbox->joystickManager()->joysticks().count()) { - qCDebug(JoystickLog) << "Vehicle " << this->id() << " Saving setting joystickenabled: " << _joystickEnabled; settings.setValue(_joystickEnabledSettingsKey, _joystickEnabled); } } @@ -2158,48 +2024,25 @@ bool Vehicle::joystickEnabled() const void Vehicle::setJoystickEnabled(bool enabled) { - if (enabled){ - qCDebug(JoystickLog) << "Vehicle " << this->id() << " Joystick Enabled"; - } - else { - qCDebug(JoystickLog) << "Vehicle " << this->id() << " Joystick Disabled"; - } - - // _joystickEnabled is the runtime state - it determines whether a vehicle is using joystick data when it is active _joystickEnabled = enabled; - - // if we are the active vehicle, call start polling on the active joystick - // This routes the joystick signals to this vehicle - if (enabled && _toolbox->multiVehicleManager()->activeVehicle() == this){ - _captureJoystick(); - } - + _startJoystick(_joystickEnabled); + _saveSettings(); emit joystickEnabledChanged(_joystickEnabled); } -void Vehicle::_activeVehicleChanged(Vehicle *newActiveVehicle) -{ - // the new active vehicle should always capture the joystick - // even if the new active vehicle has joystick disabled - // capturing the joystick will stop the joystick data going to the inactive vehicle - if (newActiveVehicle == this){ - qCDebug(JoystickLog) << "Vehicle " << this->id() << " is the new active vehicle"; - _captureJoystick(); - } -} - -// tells the active joystick where to send data -void Vehicle::_captureJoystick() +void Vehicle::_startJoystick(bool start) { Joystick* joystick = _joystickManager->activeJoystick(); - - if(joystick){ - qCDebug(JoystickLog) << "Vehicle " << this->id() << " Capture Joystick" << joystick->name(); - joystick->startPolling(this); + if (joystick) { + if (start) { + joystick->startPolling(this); + } else { + joystick->stopPolling(); + joystick->wait(500); + } } } - QGeoCoordinate Vehicle::homePosition() { return _homePosition; @@ -2230,35 +2073,25 @@ bool Vehicle::flightModeSetAvailable() QStringList Vehicle::flightModes() { - if (_standardModes->supported()) { - return _standardModes->flightModes(); - } return _firmwarePlugin->flightModes(this); } +QStringList Vehicle::extraJoystickFlightModes() +{ + return _firmwarePlugin->extraJoystickFlightModes(this); +} + QString Vehicle::flightMode() const { - if (_standardModes->supported()) { - return _standardModes->flightMode(_custom_mode); - } return _firmwarePlugin->flightMode(_base_mode, _custom_mode); } -bool Vehicle::setFlightModeCustom(const QString& flightMode, uint8_t* base_mode, uint32_t* custom_mode) -{ - if (_standardModes->supported()) { - *base_mode = MAV_MODE_FLAG_CUSTOM_MODE_ENABLED; - return _standardModes->setFlightMode(flightMode, custom_mode); - } - return _firmwarePlugin->setFlightMode(flightMode, base_mode, custom_mode); -} - void Vehicle::setFlightMode(const QString& flightMode) { uint8_t base_mode; uint32_t custom_mode; - if (setFlightModeCustom(flightMode, &base_mode, &custom_mode)) { + if (_firmwarePlugin->setFlightMode(flightMode, &base_mode, &custom_mode)) { SharedLinkInterfacePtr sharedLink = vehicleLinkManager()->primaryLink().lock(); if (!sharedLink) { qCDebug(VehicleLog) << "setFlightMode: primary link gone!"; @@ -2271,23 +2104,15 @@ void Vehicle::setFlightMode(const QString& flightMode) // states. newBaseMode |= base_mode; - if (_firmwarePlugin->MAV_CMD_DO_SET_MODE_is_supported()) { - sendMavCommand(defaultComponentId(), - MAV_CMD_DO_SET_MODE, - true, // show error if fails - MAV_MODE_FLAG_CUSTOM_MODE_ENABLED, - custom_mode); - } else { - mavlink_message_t msg; - mavlink_msg_set_mode_pack_chan(_mavlink->getSystemId(), - _mavlink->getComponentId(), - sharedLink->mavlinkChannel(), - &msg, - id(), - newBaseMode, - custom_mode); - sendMessageOnLinkThreadSafe(sharedLink.get(), msg); - } + mavlink_message_t msg; + mavlink_msg_set_mode_pack_chan(_mavlink->getSystemId(), + _mavlink->getComponentId(), + sharedLink->mavlinkChannel(), + &msg, + id(), + newBaseMode, + custom_mode); + sendMessageOnLinkThreadSafe(sharedLink.get(), msg); } else { qCWarning(VehicleLog) << "FirmwarePlugin::setFlightMode failed, flightMode:" << flightMode; } @@ -2455,12 +2280,6 @@ void Vehicle::_parametersReady(bool parametersReady) _setupAutoDisarmSignalling(); _initialConnectStateMachine->advance(); } - - _multirotor_speed_limits_available = _firmwarePlugin->mulirotorSpeedLimitsAvailable(this); - _fixed_wing_airspeed_limits_available = _firmwarePlugin->fixedWingAirSpeedLimitsAvailable(this); - - emit haveMRSpeedLimChanged(); - emit haveFWSpeedLimChanged(); } void Vehicle::_sendQGCTimeToVehicle() @@ -2618,14 +2437,14 @@ QString Vehicle::vehicleTypeName() const { { MAV_TYPE_OCTOROTOR, tr("Octorotor")}, { MAV_TYPE_TRICOPTER, tr("Octorotor")}, { MAV_TYPE_FLAPPING_WING, tr("Flapping wing")}, - { MAV_TYPE_KITE, tr("Kite")}, + { MAV_TYPE_KITE, tr("Flapping wing")}, { MAV_TYPE_ONBOARD_CONTROLLER, tr("Onboard companion controller")}, - { MAV_TYPE_VTOL_TAILSITTER_DUOROTOR, tr("Two-rotor VTOL using control surfaces in vertical operation in addition. Tailsitter")}, - { MAV_TYPE_VTOL_TAILSITTER_QUADROTOR, tr("Quad-rotor VTOL using a V-shaped quad config in vertical operation. Tailsitter")}, + { MAV_TYPE_VTOL_DUOROTOR, tr("Two-rotor VTOL using control surfaces in vertical operation in addition. Tailsitter")}, + { MAV_TYPE_VTOL_QUADROTOR, tr("Quad-rotor VTOL using a V-shaped quad config in vertical operation. Tailsitter")}, { MAV_TYPE_VTOL_TILTROTOR, tr("Tiltrotor VTOL")}, - { MAV_TYPE_VTOL_FIXEDROTOR, tr("VTOL Fixedrotor")}, - { MAV_TYPE_VTOL_TAILSITTER, tr("VTOL Tailsitter")}, - { MAV_TYPE_VTOL_TILTWING, tr("VTOL Tiltwing")}, + { MAV_TYPE_VTOL_RESERVED2, tr("VTOL reserved 2")}, + { MAV_TYPE_VTOL_RESERVED3, tr("VTOL reserved 3")}, + { MAV_TYPE_VTOL_RESERVED4, tr("VTOL reserved 4")}, { MAV_TYPE_VTOL_RESERVED5, tr("VTOL reserved 5")}, { MAV_TYPE_GIMBAL, tr("Onboard gimbal")}, { MAV_TYPE_ADSB, tr("Onboard ADSB peripheral")}, @@ -2737,28 +2556,6 @@ double Vehicle::minimumTakeoffAltitude() return _firmwarePlugin->minimumTakeoffAltitude(this); } -double Vehicle::maximumHorizontalSpeedMultirotor() -{ - return _firmwarePlugin->maximumHorizontalSpeedMultirotor(this); -} - - -double Vehicle::maximumEquivalentAirspeed() -{ - return _firmwarePlugin->maximumEquivalentAirspeed(this); -} - - -double Vehicle::minimumEquivalentAirspeed() -{ - return _firmwarePlugin->minimumEquivalentAirspeed(this); -} - -bool Vehicle::hasGripper() const -{ - return _firmwarePlugin->hasGripper(this); -} - void Vehicle::startMission() { _firmwarePlugin->startMission(this); @@ -2790,26 +2587,6 @@ void Vehicle::guidedModeChangeAltitude(double altitudeChange, bool pauseVehicle) _firmwarePlugin->guidedModeChangeAltitude(this, altitudeChange, pauseVehicle); } -void -Vehicle::guidedModeChangeGroundSpeedMetersSecond(double groundspeed) -{ - if (!guidedModeSupported()) { - qgcApp()->showAppMessage(guided_mode_not_supported_by_vehicle); - return; - } - _firmwarePlugin->guidedModeChangeGroundSpeedMetersSecond(this, groundspeed); -} - -void -Vehicle::guidedModeChangeEquivalentAirspeedMetersSecond(double airspeed) -{ - if (!guidedModeSupported()) { - qgcApp()->showAppMessage(guided_mode_not_supported_by_vehicle); - return; - } - _firmwarePlugin->guidedModeChangeEquivalentAirspeedMetersSecond(this, airspeed); -} - void Vehicle::guidedModeOrbit(const QGeoCoordinate& centerCoord, double radius, double amslAltitude) { if (!orbitModeSupported()) { @@ -2976,7 +2753,8 @@ void Vehicle::sendMavCommand(int compId, MAV_CMD command, bool showError, float { _sendMavCommandWorker(false, // commandInt showError, - nullptr, // no handlers + nullptr, // resultHandler + nullptr, // resultHandlerData compId, command, MAV_FRAME_GLOBAL, @@ -2997,11 +2775,12 @@ void Vehicle::sendCommand(int compId, int command, bool showError, double param1 static_cast(param7)); } -void Vehicle::sendMavCommandWithHandler(const MavCmdAckHandlerInfo_t* ackHandlerInfo, int compId, MAV_CMD command, float param1, float param2, float param3, float param4, float param5, float param6, float param7) +void Vehicle::sendMavCommandWithHandler(MavCmdResultHandler resultHandler, void *resultHandlerData, int compId, MAV_CMD command, float param1, float param2, float param3, float param4, float param5, float param6, float param7) { _sendMavCommandWorker(false, // commandInt false, // showError - ackHandlerInfo, + resultHandler, + resultHandlerData, compId, command, MAV_FRAME_GLOBAL, @@ -3012,18 +2791,8 @@ void Vehicle::sendMavCommandInt(int compId, MAV_CMD command, MAV_FRAME frame, bo { _sendMavCommandWorker(true, // commandInt showError, - nullptr, // no handlers - compId, - command, - frame, - param1, param2, param3, param4, param5, param6, param7); -} - -void Vehicle::sendMavCommandIntWithHandler(const MavCmdAckHandlerInfo_t* ackHandlerInfo, int compId, MAV_CMD command, MAV_FRAME frame, float param1, float param2, float param3, float param4, double param5, double param6, float param7) -{ - _sendMavCommandWorker(true, // commandInt - false, // showError - ackHandlerInfo, + nullptr, // resultHandler + nullptr, // resultHandlerData compId, command, frame, @@ -3071,7 +2840,6 @@ bool Vehicle::_sendMavCommandShouldRetry(MAV_CMD command) case MAV_CMD_REQUEST_PROTOCOL_VERSION: case MAV_CMD_REQUEST_MESSAGE: case MAV_CMD_PREFLIGHT_STORAGE: - case MAV_CMD_RUN_PREARM_CHECKS: return true; default: @@ -3083,7 +2851,7 @@ bool Vehicle::_commandCanBeDuplicated(MAV_CMD command) { // For some commands we don't care about response as much as we care about sending them regularly. // This test avoids commands not being sent due to an ACK not being received yet. - // MOTOR_TEST in ardusub is a case where we need a constant stream of commands so it doesn't time out. + // MOTOR_TEST in ardusub is a case where we need a constant stream of commands so it don't time out. switch (command) { case MAV_CMD_DO_MOTOR_TEST: return true; @@ -3092,30 +2860,19 @@ bool Vehicle::_commandCanBeDuplicated(MAV_CMD command) } } -void Vehicle::_sendMavCommandWorker( - bool commandInt, - bool showError, - const MavCmdAckHandlerInfo_t* ackHandlerInfo, - int targetCompId, - MAV_CMD command, - MAV_FRAME frame, - float param1, float param2, float param3, float param4, double param5, double param6, float param7) +void Vehicle::_sendMavCommandWorker(bool commandInt, bool showError, MavCmdResultHandler resultHandler, void* resultHandlerData, int targetCompId, MAV_CMD command, MAV_FRAME frame, float param1, float param2, float param3, float param4, float param5, float param6, float param7) { - // We can't send commands to compIdAll using this method. The reason being that we would get responses back possibly from multiple components - // which this code can't handle. - // We also can't send the majority of commands again if we are already waiting for a response from that same command. If we did that we would not be able to discern - // which ack was associated with which command. if ((targetCompId == MAV_COMP_ID_ALL) || (isMavCommandPending(targetCompId, command) && !_commandCanBeDuplicated(command))) { bool compIdAll = targetCompId == MAV_COMP_ID_ALL; QString rawCommandName = _toolbox->missionCommandTree()->rawName(command); qCDebug(VehicleLog) << QStringLiteral("_sendMavCommandWorker failing %1").arg(compIdAll ? "MAV_COMP_ID_ALL not supportded" : "duplicate command") << rawCommandName; + // If we send multiple versions of the same command to a component there is no way to discern which COMMAND_ACK we get back goes with which. + // Because of this we fail in that case. MavCmdResultFailureCode_t failureCode = compIdAll ? MavCmdResultCommandResultOnly : MavCmdResultFailureDuplicateCommand; - if (ackHandlerInfo && ackHandlerInfo->resultHandler) { - mavlink_command_ack_t ack = {}; - ack.result = MAV_RESULT_FAILED; - (*ackHandlerInfo->resultHandler)(ackHandlerInfo->resultHandlerData, targetCompId, ack, failureCode); + if (resultHandler) { + (*resultHandler)(resultHandlerData, targetCompId, MAV_RESULT_FAILED, 0, failureCode); } else { emit mavCommandResult(_id, targetCompId, command, MAV_RESULT_FAILED, failureCode); } @@ -3139,17 +2896,15 @@ void Vehicle::_sendMavCommandWorker( entry.command = command; entry.frame = frame; entry.showError = showError; - entry.ackHandlerInfo = {}; - if (ackHandlerInfo) { - entry.ackHandlerInfo = *ackHandlerInfo; - } - entry.rgParam1 = param1; - entry.rgParam2 = param2; - entry.rgParam3 = param3; - entry.rgParam4 = param4; - entry.rgParam5 = param5; - entry.rgParam6 = param6; - entry.rgParam7 = param7; + entry.resultHandler = resultHandler; + entry.resultHandlerData = resultHandlerData; + entry.rgParam[0] = param1; + entry.rgParam[1] = param2; + entry.rgParam[2] = param3; + entry.rgParam[3] = param4; + entry.rgParam[4] = param5; + entry.rgParam[5] = param6; + entry.rgParam[6] = param7; entry.maxTries = _sendMavCommandShouldRetry(command) ? _mavCommandMaxRetryCount : 1; entry.ackTimeoutMSecs = sharedLink->linkConfiguration()->isHighLatency() ? _mavCommandAckTimeoutMSecsHighLatency : _mavCommandAckTimeoutMSecs; entry.elapsedTimer.start(); @@ -3167,10 +2922,8 @@ void Vehicle::_sendMavCommandFromList(int index) if (++_mavCommandList[index].tryCount > commandEntry.maxTries) { qCDebug(VehicleLog) << "_sendMavCommandFromList giving up after max retries" << rawCommandName; _mavCommandList.removeAt(index); - if (commandEntry.ackHandlerInfo.resultHandler) { - mavlink_command_ack_t ack = {}; - ack.result = MAV_RESULT_FAILED; - (*commandEntry.ackHandlerInfo.resultHandler)(commandEntry.ackHandlerInfo.resultHandlerData, commandEntry.targetCompId, ack, MavCmdResultFailureNoResponseToCommand); + if (commandEntry.resultHandler) { + (*commandEntry.resultHandler)(commandEntry.resultHandlerData, commandEntry.targetCompId, MAV_RESULT_FAILED, 0, MavCmdResultFailureNoResponseToCommand); } else { emit mavCommandResult(_id, commandEntry.targetCompId, commandEntry.command, MAV_RESULT_FAILED, MavCmdResultFailureNoResponseToCommand); } @@ -3204,13 +2957,13 @@ void Vehicle::_sendMavCommandFromList(int index) cmd.target_component = commandEntry.targetCompId; cmd.command = commandEntry.command; cmd.frame = commandEntry.frame; - cmd.param1 = commandEntry.rgParam1; - cmd.param2 = commandEntry.rgParam2; - cmd.param3 = commandEntry.rgParam3; - cmd.param4 = commandEntry.rgParam4; - cmd.x = commandEntry.frame == MAV_FRAME_MISSION ? commandEntry.rgParam5 : commandEntry.rgParam5 * 1e7; - cmd.y = commandEntry.frame == MAV_FRAME_MISSION ? commandEntry.rgParam6 : commandEntry.rgParam6 * 1e7; - cmd.z = commandEntry.rgParam7; + cmd.param1 = commandEntry.rgParam[0]; + cmd.param2 = commandEntry.rgParam[1]; + cmd.param3 = commandEntry.rgParam[2]; + cmd.param4 = commandEntry.rgParam[3]; + cmd.x = commandEntry.frame == MAV_FRAME_MISSION ? commandEntry.rgParam[4] : commandEntry.rgParam[4] * 1e7; + cmd.y = commandEntry.frame == MAV_FRAME_MISSION ? commandEntry.rgParam[5] : commandEntry.rgParam[5] * 1e7; + cmd.z = commandEntry.rgParam[6]; mavlink_msg_command_int_encode_chan(_mavlink->getSystemId(), _mavlink->getComponentId(), sharedLink->mavlinkChannel(), @@ -3224,13 +2977,13 @@ void Vehicle::_sendMavCommandFromList(int index) cmd.target_component = commandEntry.targetCompId; cmd.command = commandEntry.command; cmd.confirmation = 0; - cmd.param1 = commandEntry.rgParam1; - cmd.param2 = commandEntry.rgParam2; - cmd.param3 = commandEntry.rgParam3; - cmd.param4 = commandEntry.rgParam4; - cmd.param5 = static_cast(commandEntry.rgParam5); - cmd.param6 = static_cast(commandEntry.rgParam6); - cmd.param7 = commandEntry.rgParam7; + cmd.param1 = commandEntry.rgParam[0]; + cmd.param2 = commandEntry.rgParam[1]; + cmd.param3 = commandEntry.rgParam[2]; + cmd.param4 = commandEntry.rgParam[3]; + cmd.param5 = commandEntry.rgParam[4]; + cmd.param6 = commandEntry.rgParam[5]; + cmd.param7 = commandEntry.rgParam[6]; mavlink_msg_command_long_encode_chan(_mavlink->getSystemId(), _mavlink->getComponentId(), sharedLink->mavlinkChannel(), @@ -3291,27 +3044,12 @@ void Vehicle::_handleCommandAck(mavlink_message_t& message) #endif int entryIndex = _findMavCommandListEntryIndex(message.compid, static_cast(ack.command)); + bool commandInList = false; if (entryIndex != -1) { - if (ack.result == MAV_RESULT_IN_PROGRESS) { - MavCommandListEntry_t commandEntry; - if (px4Firmware() && ack.command == MAV_CMD_DO_AUTOTUNE_ENABLE) { - // HacK to support PX4 autotune which does not send final result ack and just sends in progress - commandEntry = _mavCommandList.takeAt(entryIndex); - } else { - commandEntry = _mavCommandList.at(entryIndex); // Command has not completed yet, don't remove - } - - commandEntry.maxTries = 1; // Vehicle responsed to command so don't retry - commandEntry.elapsedTimer.restart(); // We've heard from vehicle, restart elapsed timer for no ack received timeout - - if (commandEntry.ackHandlerInfo.progressHandler) { - (*commandEntry.ackHandlerInfo.progressHandler)(commandEntry.ackHandlerInfo.progressHandlerData, message.compid, ack); - } - } else { - MavCommandListEntry_t commandEntry = _mavCommandList.takeAt(entryIndex); - - if (commandEntry.ackHandlerInfo.resultHandler) { - (*commandEntry.ackHandlerInfo.resultHandler)(commandEntry.ackHandlerInfo.resultHandlerData, message.compid, ack, MavCmdResultCommandResultOnly); + MavCommandListEntry_t commandEntry = _mavCommandList.takeAt(entryIndex); + if (commandEntry.command == ack.command) { + if (commandEntry.resultHandler) { + (*commandEntry.resultHandler)(commandEntry.resultHandlerData, message.compid, static_cast(ack.result), ack.progress, MavCmdResultCommandResultOnly); } else { if (commandEntry.showError) { switch (ack.result) { @@ -3334,8 +3072,11 @@ void Vehicle::_handleCommandAck(mavlink_message_t& message) } emit mavCommandResult(_id, message.compid, ack.command, ack.result, MavCmdResultCommandResultOnly); } + commandInList = true; } - } else { + } + + if (!commandInList) { qCDebug(VehicleLog) << "_handleCommandAck Ack not in list" << rawCommandName; } @@ -3399,13 +3140,10 @@ void Vehicle::requestMessage(RequestMessageResultHandler resultHandler, void* re _waitForMavlinkMessage(_requestMessageWaitForMessageResultHandler, pInfo, pInfo->msgId, 1000); - Vehicle::MavCmdAckHandlerInfo_t handlerInfo = {}; - handlerInfo.resultHandler = _requestMessageCmdResultHandler; - handlerInfo.resultHandlerData = pInfo; - _sendMavCommandWorker(false, // commandInt false, // showError - &handlerInfo, + _requestMessageCmdResultHandler, + pInfo, // resultHandlerData compId, MAV_CMD_REQUEST_MESSAGE, MAV_FRAME_GLOBAL, @@ -3413,13 +3151,13 @@ void Vehicle::requestMessage(RequestMessageResultHandler resultHandler, void* re param1, param2, param3, param4, param5, 0); } -void Vehicle::_requestMessageCmdResultHandler(void* resultHandlerData, int /*compId*/, const mavlink_command_ack_t& ack, MavCmdResultFailureCode_t failureCode) +void Vehicle::_requestMessageCmdResultHandler(void* resultHandlerData, int /*compId*/, MAV_RESULT result, uint8_t progress, MavCmdResultFailureCode_t failureCode) { RequestMessageInfo_t* pInfo = static_cast(resultHandlerData); Vehicle* vehicle = pInfo->vehicle; pInfo->commandAckReceived = true; - if (ack.result != MAV_RESULT_ACCEPTED) { + if (result != MAV_RESULT_ACCEPTED) { mavlink_message_t message; RequestMessageResultHandlerFailureCode_t requestMessageFailureCode; @@ -3436,12 +3174,12 @@ void Vehicle::_requestMessageCmdResultHandler(void* resultHandlerData, int /*com } vehicle->_waitForMavlinkMessageClear(); - (*pInfo->resultHandler)(pInfo->resultHandlerData, static_cast(ack.result), requestMessageFailureCode, message); + (*pInfo->resultHandler)(pInfo->resultHandlerData, result, requestMessageFailureCode, message); return; } if (pInfo->messageReceived) { - (*pInfo->resultHandler)(pInfo->resultHandlerData, static_cast(ack.result), RequestMessageNoFailure, pInfo->message); + (*pInfo->resultHandler)(pInfo->resultHandlerData, result, RequestMessageNoFailure, pInfo->message); delete pInfo; } else { vehicle->_waitForMavlinkMessageTimeoutActive = true; @@ -3510,14 +3248,16 @@ QString Vehicle::firmwareVersionTypeString() const } } -void Vehicle::_rebootCommandResultHandler(void* resultHandlerData, int /*compId*/, const mavlink_command_ack_t& ack, MavCmdResultFailureCode_t failureCode) +void Vehicle::_rebootCommandResultHandler(void* resultHandlerData, int /*compId*/, MAV_RESULT commandResult, uint8_t progress, MavCmdResultFailureCode_t failureCode) { + Q_UNUSED(progress) + Vehicle* vehicle = static_cast(resultHandlerData); - if (ack.result != MAV_RESULT_ACCEPTED) { + if (commandResult != MAV_RESULT_ACCEPTED) { switch (failureCode) { case MavCmdResultCommandResultOnly: - qCDebug(VehicleLog) << QStringLiteral("MAV_CMD_PREFLIGHT_REBOOT_SHUTDOWN error(%1)").arg(ack.result); + qCDebug(VehicleLog) << QStringLiteral("MAV_CMD_PREFLIGHT_REBOOT_SHUTDOWN error(%1)").arg(commandResult); break; case MavCmdResultFailureNoResponseToCommand: qCDebug(VehicleLog) << "MAV_CMD_PREFLIGHT_REBOOT_SHUTDOWN failed: no response from vehicle"; @@ -3534,11 +3274,7 @@ void Vehicle::_rebootCommandResultHandler(void* resultHandlerData, int /*compId* void Vehicle::rebootVehicle() { - Vehicle::MavCmdAckHandlerInfo_t handlerInfo = {}; - handlerInfo.resultHandler = _rebootCommandResultHandler; - handlerInfo.resultHandlerData = this; - - sendMavCommandWithHandler(&handlerInfo, _defaultComponentId, MAV_CMD_PREFLIGHT_REBOOT_SHUTDOWN, 1); + sendMavCommandWithHandler(_rebootCommandResultHandler, this, _defaultComponentId, MAV_CMD_PREFLIGHT_REBOOT_SHUTDOWN, 1); } void Vehicle::startCalibration(Vehicle::CalibrationType calType) @@ -3876,7 +3612,7 @@ void Vehicle::_handleADSBVehicle(const mavlink_message_t& message) mavlink_msg_adsb_vehicle_decode(&message, &adsbVehicleMsg); if ((adsbVehicleMsg.flags & ADSB_FLAGS_VALID_COORDS) && adsbVehicleMsg.tslc <= maxTimeSinceLastSeen) { - ADSBVehicle::ADSBVehicleInfo_t vehicleInfo; + ADSBVehicle::VehicleInfo_t vehicleInfo; vehicleInfo.availableFlags = 0; vehicleInfo.icaoAddress = adsbVehicleMsg.ICAO_address; @@ -3902,17 +3638,6 @@ void Vehicle::_handleADSBVehicle(const mavlink_message_t& message) } } -void Vehicle::_handleRawImuTemp(mavlink_message_t& message) -{ - // This is used by compass calibration - emit mavlinkRawImu(message); - - mavlink_raw_imu_t imuRaw; - mavlink_msg_raw_imu_decode(&message, &imuRaw); - - _imuTempFact.setRawValue(imuRaw.temperature == 0 ? 0 : imuRaw.temperature * 0.01); -} - void Vehicle::_updateDistanceHeadingToHome() { if (coordinate().isValid() && homePosition().isValid()) { @@ -3966,24 +3691,6 @@ void Vehicle::_updateDistanceToGCS() } } -void Vehicle::_updateHomepoint() -{ - const bool setHomeCmdSupported = firmwarePlugin()->supportedMissionCommands(vehicleClass()).contains(MAV_CMD_DO_SET_HOME); - const bool updateHomeActivated = _toolbox->settingsManager()->flyViewSettings()->updateHomePosition()->rawValue().toBool(); - if(setHomeCmdSupported && updateHomeActivated){ - QGeoCoordinate gcsPosition = _toolbox->qgcPositionManager()->gcsPosition(); - if (coordinate().isValid() && gcsPosition.isValid()) { - sendMavCommand(defaultComponentId(), - MAV_CMD_DO_SET_HOME, false, - 0, - 0, 0, 0, - static_cast(gcsPosition.latitude()) , - static_cast(gcsPosition.longitude()), - static_cast(gcsPosition.altitude())); - } - } -} - void Vehicle::_updateHobbsMeter() { _hobbsFact.setRawValue(hobbsMeter()); @@ -4014,6 +3721,21 @@ void Vehicle::_vehicleParamLoaded(bool ready) } } +void Vehicle::_trafficUpdate(bool /*alert*/, QString /*traffic_id*/, QString /*vehicle_id*/, QGeoCoordinate /*location*/, float /*heading*/) +{ +#if 0 + // This is ifdef'ed out for now since this code doesn't mesh with the recent ADSB manager changes. Also airmap isn't in any + // released build. So not going to waste time trying to fix up unused code. + if (_trafficVehicleMap.contains(traffic_id)) { + _trafficVehicleMap[traffic_id]->update(alert, location, heading); + } else { + ADSBVehicle* vehicle = new ADSBVehicle(location, heading, alert, this); + _trafficVehicleMap[traffic_id] = vehicle; + _adsbVehicles.append(vehicle); + } +#endif +} + void Vehicle::_mavlinkMessageStatus(int uasId, uint64_t totalSent, uint64_t totalReceived, uint64_t totalLoss, float lossPercent) { if(uasId == _id) { @@ -4149,125 +3871,8 @@ void Vehicle::flashBootloader() } #endif -void Vehicle::doSetHome(const QGeoCoordinate& coord) -{ - if (coord.isValid()) { - // If for some reason we already did a query and it hasn't arrived yet, disconnect signals and unset current query. TerrainQuery system will - // automatically delete that forgotten query. This could happen if we send 2 do_set_home commands one after another, so usually the latest one - // is the one we would want to arrive to the vehicle, so it is fine to forget about the previous ones in case it could happen. - if (_currentDoSetHomeTerrainAtCoordinateQuery) { - disconnect(_currentDoSetHomeTerrainAtCoordinateQuery, &TerrainAtCoordinateQuery::terrainDataReceived, this, &Vehicle::_doSetHomeTerrainReceived); - _currentDoSetHomeTerrainAtCoordinateQuery = nullptr; - } - // Save the coord for using when our terrain data arrives. If there was a pending terrain query paired with an older coordinate it is safe to - // Override now, as we just disconnected the signal that would trigger the command sending - _doSetHomeCoordinate = coord; - // Now setup and trigger the new terrain query - _currentDoSetHomeTerrainAtCoordinateQuery = new TerrainAtCoordinateQuery(true /* autoDelet */); - connect(_currentDoSetHomeTerrainAtCoordinateQuery, &TerrainAtCoordinateQuery::terrainDataReceived, this, &Vehicle::_doSetHomeTerrainReceived); - QList rgCoord; - rgCoord.append(coord); - _currentDoSetHomeTerrainAtCoordinateQuery->requestData(rgCoord); - } -} - -// This will be called after our query started in doSetHome arrives -void Vehicle::_doSetHomeTerrainReceived(bool success, QList heights) -{ - if (success) { - double terrainAltitude = heights[0]; - // Coord and terrain alt sanity check - if (_doSetHomeCoordinate.isValid() && terrainAltitude <= SET_HOME_TERRAIN_ALT_MAX && terrainAltitude >= SET_HOME_TERRAIN_ALT_MIN) { - sendMavCommand( - defaultComponentId(), - MAV_CMD_DO_SET_HOME, - true, // show error if fails - 0, - 0, - 0, - static_cast(qQNaN()), - _doSetHomeCoordinate.latitude(), - _doSetHomeCoordinate.longitude(), - terrainAltitude); - - } else if (_doSetHomeCoordinate.isValid()) { - qCDebug(VehicleLog) << "_doSetHomeTerrainReceived: internal error, elevation data out of limits "; - } else { - qCDebug(VehicleLog) << "_doSetHomeTerrainReceived: internal error, cached home coordinate is not valid"; - } - } else { - qgcApp()->showAppMessage(tr("Set Home failed, terrain data not available for selected coordinate")); - } - // Clean up - _currentDoSetHomeTerrainAtCoordinateQuery = nullptr; - _doSetHomeCoordinate = QGeoCoordinate(); // So isValid() will no longer return true, for extra safety -} - -void Vehicle::_updateAltAboveTerrain() -{ - // We won't do another query if the previous query was done closer than 2 meters from current position - // or if altitude change has been less than 0.5 meters since then. - const qreal minimumDistanceTraveled = 2; - const float minimumAltitudeChanged = 0.5f; - - // This is not super elegant but it works to limit the amount of queries we do. It seems more than 500ms is not possible to get - // serviced on time. It is not a big deal if it is not serviced on time as terrain queries can manage that just fine, but QGC would - // use resources to service those queries, and it is pointless, so this is a quick workaround to not waste that little computing time - int altitudeAboveTerrQueryMinInterval = 500; - if (_altitudeAboveTerrQueryTimer.elapsed() < altitudeAboveTerrQueryMinInterval) { - // qCDebug(VehicleLog) << "_updateAltAboveTerrain: minimum 500ms interval between queries not reached, returning"; - return; - } - // Sanity check, although it is very unlikely that vehicle coordinate is not valid - if (_coordinate.isValid()) { - // Check for minimum distance and altitude traveled before doing query, to not do a lot of queries of the same data - if (_altitudeAboveTerrLastCoord.isValid() && !qIsNaN(_altitudeAboveTerrLastRelAlt)) { - if (_altitudeAboveTerrLastCoord.distanceTo(_coordinate) < minimumDistanceTraveled && fabs(_altitudeRelativeFact.rawValue().toFloat() - _altitudeAboveTerrLastRelAlt) < minimumAltitudeChanged ) { - return; - } - } - _altitudeAboveTerrLastCoord = _coordinate; - _altitudeAboveTerrLastRelAlt = _altitudeRelativeFact.rawValue().toFloat(); - - // If for some reason we already did a query and it hasn't arrived yet, disconnect signals and unset current query. TerrainQuery system will - // automatically delete that forgotten query. - if (_altitudeAboveTerrTerrainAtCoordinateQuery) { - // qCDebug(VehicleLog) << "_updateAltAboveTerrain: cleaning previous query, no longer needed"; - disconnect(_altitudeAboveTerrTerrainAtCoordinateQuery, &TerrainAtCoordinateQuery::terrainDataReceived, this, &Vehicle::_altitudeAboveTerrainReceived); - _altitudeAboveTerrTerrainAtCoordinateQuery = nullptr; - } - // Now setup and trigger the new terrain query - _altitudeAboveTerrTerrainAtCoordinateQuery = new TerrainAtCoordinateQuery(true /* autoDelet */); - connect(_altitudeAboveTerrTerrainAtCoordinateQuery, &TerrainAtCoordinateQuery::terrainDataReceived, this, &Vehicle::_altitudeAboveTerrainReceived); - QList rgCoord; - rgCoord.append(_coordinate); - _altitudeAboveTerrTerrainAtCoordinateQuery->requestData(rgCoord); - _altitudeAboveTerrQueryTimer.restart(); - } -} - -void Vehicle::_altitudeAboveTerrainReceived(bool success, QList heights) -{ - if (!success) { - qCDebug(VehicleLog) << "_altitudeAboveTerrainReceived: terrain data not available for vehicle coordinate"; - } else { - // Query was succesful, save the data. - double terrainAltitude = heights[0]; - double altitudeAboveTerrain = altitudeAMSL()->rawValue().toDouble() - terrainAltitude; - _altitudeAboveTerrFact.setRawValue(altitudeAboveTerrain); - } - // Clean up - _altitudeAboveTerrTerrainAtCoordinateQuery = nullptr; -} - void Vehicle::gimbalControlValue(double pitch, double yaw) { - if (apmFirmware()) { - // ArduPilot firmware treats this values as centi-degrees - pitch *= 100; - yaw *= 100; - } - //qDebug() << "Gimbal:" << pitch << yaw; sendMavCommand( _defaultComponentId, @@ -4336,42 +3941,6 @@ void Vehicle::_handleObstacleDistance(const mavlink_message_t& message) _objectAvoidance->update(&o); } -void Vehicle::_handleFenceStatus(const mavlink_message_t& message) -{ - mavlink_fence_status_t fenceStatus; - - mavlink_msg_fence_status_decode(&message, &fenceStatus); - - qCDebug(VehicleLog) << "_handleFenceStatus breach_status" << fenceStatus.breach_status; - - static qint64 lastUpdate = 0; - qint64 now = QDateTime::currentMSecsSinceEpoch(); - if (fenceStatus.breach_status == 1) { - if (now - lastUpdate > 3000) { - lastUpdate = now; - QString breachTypeStr; - switch (fenceStatus.breach_type) { - case FENCE_BREACH_NONE: - return; - case FENCE_BREACH_MINALT: - breachTypeStr = tr("minimum altitude"); - break; - case FENCE_BREACH_MAXALT: - breachTypeStr = tr("maximum altitude"); - break; - case FENCE_BREACH_BOUNDARY: - breachTypeStr = tr("boundary"); - break; - default: - break; - } - - qgcApp()->toolbox()->audioOutput()->say(breachTypeStr + " " + tr("fence breached")); - } - } else { - lastUpdate = now; - } -} void Vehicle::updateFlightDistance(double distance) { _flightDistanceFact.setRawValue(_flightDistanceFact.rawValue().toDouble() + distance); @@ -4481,31 +4050,3 @@ void Vehicle::triggerSimpleCamera() 0.0, 0.0, 0.0, 0.0, // param 1-4 unused 1.0); // trigger camera } - -void Vehicle::setGripperAction(GRIPPER_ACTIONS gripperAction) -{ - sendMavCommand( - _defaultComponentId, - MAV_CMD_DO_GRIPPER, - false, // Don't show errors - 0, // Param1: Gripper ID (Always set to 0) - gripperAction, // Param2: Gripper Action - 0, 0, 0, 0, 0); // Param 3 ~ 7 : unused -} - -void Vehicle::sendGripperAction(GRIPPER_OPTIONS gripperOption) -{ - switch(gripperOption) { - case Gripper_release: - setGripperAction(GRIPPER_ACTION_RELEASE); - break; - case Gripper_grab: - setGripperAction(GRIPPER_ACTION_GRAB); - break; - case Invalid_option: - qDebug("unknown function"); - break; - default: - break; - } -} diff --git a/src/Vehicle/Vehicle.h b/src/Vehicle/Vehicle.h index 87bf0b2..31d9c76 100644 --- a/src/Vehicle/Vehicle.h +++ b/src/Vehicle/Vehicle.h @@ -46,11 +46,6 @@ #include "RallyPointManager.h" #include "FTPManager.h" #include "ImageProtocolManager.h" -#include "HealthAndArmingCheckReport.h" -#include "TerrainQuery.h" -#include "StandardModes.h" -#include "VehicleGeneratorFactGroup.h" -#include "VehicleEFIFactGroup.h" class Actuators; class EventHandler; @@ -77,7 +72,10 @@ class LinkInterface; class LinkManager; class InitialConnectStateMachine; class Autotune; -class RemoteIDManager; + +#if defined(QGC_AIRMAP_ENABLED) +class AirspaceVehicleManager; +#endif namespace events { namespace parser { @@ -167,6 +165,7 @@ public: Q_PROPERTY(bool autoDisarm READ autoDisarm NOTIFY autoDisarmChanged) Q_PROPERTY(bool flightModeSetAvailable READ flightModeSetAvailable CONSTANT) Q_PROPERTY(QStringList flightModes READ flightModes NOTIFY flightModesChanged) + Q_PROPERTY(QStringList extraJoystickFlightModes READ extraJoystickFlightModes NOTIFY flightModesChanged) Q_PROPERTY(QString flightMode READ flightMode WRITE setFlightMode NOTIFY flightModeChanged) Q_PROPERTY(TrajectoryPoints* trajectoryPoints MEMBER _trajectoryPoints CONSTANT) Q_PROPERTY(QmlObjectListModel* cameraTriggerPoints READ cameraTriggerPoints CONSTANT) @@ -179,6 +178,7 @@ public: Q_PROPERTY(int newMessageCount READ newMessageCount NOTIFY newMessageCountChanged) Q_PROPERTY(int messageCount READ messageCount NOTIFY messageCountChanged) Q_PROPERTY(QString formattedMessages READ formattedMessages NOTIFY formattedMessagesChanged) + Q_PROPERTY(QString latestError READ latestError NOTIFY latestErrorChanged) Q_PROPERTY(bool joystickEnabled READ joystickEnabled WRITE setJoystickEnabled NOTIFY joystickEnabledChanged) Q_PROPERTY(int flowImageIndex READ flowImageIndex NOTIFY flowImageIndexChanged) Q_PROPERTY(int rcRSSI READ rcRSSI NOTIFY rcRSSIChanged) @@ -247,7 +247,6 @@ public: Q_PROPERTY(qreal gimbalPitch READ gimbalPitch NOTIFY gimbalPitchChanged) Q_PROPERTY(qreal gimbalYaw READ gimbalYaw NOTIFY gimbalYawChanged) Q_PROPERTY(bool gimbalData READ gimbalData NOTIFY gimbalDataChanged) - Q_PROPERTY(bool hasGripper READ hasGripper CONSTANT) Q_PROPERTY(bool isROIEnabled READ isROIEnabled NOTIFY isROIEnabledChanged) Q_PROPERTY(CheckList checkListState READ checkListState WRITE setCheckListState NOTIFY checkListStateChanged) Q_PROPERTY(bool readyToFlyAvailable READ readyToFlyAvailable NOTIFY readyToFlyAvailableChanged) ///< true: readyToFly signalling is available on this vehicle @@ -272,14 +271,11 @@ public: Q_PROPERTY(bool roiModeSupported READ roiModeSupported CONSTANT) ///< Orbit mode is supported by this vehicle Q_PROPERTY(bool takeoffVehicleSupported READ takeoffVehicleSupported CONSTANT) ///< Guided takeoff supported Q_PROPERTY(QString gotoFlightMode READ gotoFlightMode CONSTANT) ///< Flight mode vehicle is in while performing goto - Q_PROPERTY(bool haveMRSpeedLimits READ haveMRSpeedLimits NOTIFY haveMRSpeedLimChanged) - Q_PROPERTY(bool haveFWSpeedLimits READ haveFWSpeedLimits NOTIFY haveFWSpeedLimChanged) Q_PROPERTY(ParameterManager* parameterManager READ parameterManager CONSTANT) Q_PROPERTY(VehicleLinkManager* vehicleLinkManager READ vehicleLinkManager CONSTANT) Q_PROPERTY(VehicleObjectAvoidance* objectAvoidance READ objectAvoidance CONSTANT) Q_PROPERTY(Autotune* autotune READ autotune CONSTANT) - Q_PROPERTY(RemoteIDManager* remoteIDManager READ remoteIDManager CONSTANT) // FactGroup object model properties @@ -295,21 +291,18 @@ public: Q_PROPERTY(Fact* climbRate READ climbRate CONSTANT) Q_PROPERTY(Fact* altitudeRelative READ altitudeRelative CONSTANT) Q_PROPERTY(Fact* altitudeAMSL READ altitudeAMSL CONSTANT) - Q_PROPERTY(Fact* altitudeAboveTerr READ altitudeAboveTerr CONSTANT) Q_PROPERTY(Fact* altitudeTuning READ altitudeTuning CONSTANT) Q_PROPERTY(Fact* altitudeTuningSetpoint READ altitudeTuningSetpoint CONSTANT) Q_PROPERTY(Fact* xTrackError READ xTrackError CONSTANT) Q_PROPERTY(Fact* rangeFinderDist READ rangeFinderDist CONSTANT) Q_PROPERTY(Fact* flightDistance READ flightDistance CONSTANT) Q_PROPERTY(Fact* distanceToHome READ distanceToHome CONSTANT) - Q_PROPERTY(Fact* timeToHome READ timeToHome CONSTANT) Q_PROPERTY(Fact* missionItemIndex READ missionItemIndex CONSTANT) Q_PROPERTY(Fact* headingToNextWP READ headingToNextWP CONSTANT) Q_PROPERTY(Fact* headingToHome READ headingToHome CONSTANT) Q_PROPERTY(Fact* distanceToGCS READ distanceToGCS CONSTANT) Q_PROPERTY(Fact* hobbs READ hobbs CONSTANT) Q_PROPERTY(Fact* throttlePct READ throttlePct CONSTANT) - Q_PROPERTY(Fact* imuTemp READ imuTemp CONSTANT) Q_PROPERTY(FactGroup* gps READ gpsFactGroup CONSTANT) Q_PROPERTY(FactGroup* gps2 READ gps2FactGroup CONSTANT) @@ -325,11 +318,8 @@ public: Q_PROPERTY(FactGroup* localPosition READ localPositionFactGroup CONSTANT) Q_PROPERTY(FactGroup* localPositionSetpoint READ localPositionSetpointFactGroup CONSTANT) Q_PROPERTY(FactGroup* hygrometer READ hygrometerFactGroup CONSTANT) - Q_PROPERTY(FactGroup* generator READ generatorFactGroup CONSTANT) - Q_PROPERTY(FactGroup* efi READ efiFactGroup CONSTANT) Q_PROPERTY(QmlObjectListModel* batteries READ batteries CONSTANT) Q_PROPERTY(Actuators* actuators READ actuators CONSTANT) - Q_PROPERTY(HealthAndArmingCheckReport* healthAndArmingCheckReport READ healthAndArmingCheckReport CONSTANT) Q_PROPERTY(int firmwareMajorVersion READ firmwareMajorVersion NOTIFY firmwareVersionChanged) Q_PROPERTY(int firmwareMinorVersion READ firmwareMinorVersion NOTIFY firmwareVersionChanged) @@ -347,8 +337,7 @@ public: Q_INVOKABLE void resetCounters (); // Called when the message drop-down is invoked to clear current count - Q_INVOKABLE void resetAllMessages(); - Q_INVOKABLE void resetErrorLevelMessages(); + Q_INVOKABLE void resetMessages(); Q_INVOKABLE void virtualTabletJoystickValue(double roll, double pitch, double yaw, double thrust); @@ -364,15 +353,6 @@ public: /// @return The minimum takeoff altitude (relative) for guided takeoff. Q_INVOKABLE double minimumTakeoffAltitude(); - /// @return Maximum horizontal speed multirotor. - Q_INVOKABLE double maximumHorizontalSpeedMultirotor(); - - /// @return Maximum equivalent airspeed. - Q_INVOKABLE double maximumEquivalentAirspeed(); - - /// @return Minumum equivalent airspeed. - Q_INVOKABLE double minimumEquivalentAirspeed(); - /// Command vehicle to move to specified location (altitude is included and relative) Q_INVOKABLE void guidedModeGotoLocation(const QGeoCoordinate& gotoCoord); @@ -381,13 +361,6 @@ public: /// @param pauseVehicle true: pause vehicle prior to altitude change Q_INVOKABLE void guidedModeChangeAltitude(double altitudeChange, bool pauseVehicle); - /// Command vehicle to change groundspeed - /// @param groundspeed Target horizontal groundspeed - Q_INVOKABLE void guidedModeChangeGroundSpeedMetersSecond(double groundspeed); - /// Command vehicle to change equivalent airspeed - /// @param airspeed Target equivalent airspeed - Q_INVOKABLE void guidedModeChangeEquivalentAirspeedMetersSecond(double airspeed); - /// Command vehicle to orbit given center point /// @param centerCoord Orit around this point /// @param radius Distance from vehicle to centerCoord @@ -464,11 +437,6 @@ public: #if !defined(NO_ARDUPILOT_DIALECT) Q_INVOKABLE void flashBootloader(); #endif - /// Set home from flight map coordinate - Q_INVOKABLE void doSetHome(const QGeoCoordinate& coord); - - /// Save the joystick enable setting to the settings group - Q_INVOKABLE void saveJoystickSettings(void); bool isInitialConnectComplete() const; bool guidedModeSupported () const; @@ -477,9 +445,6 @@ public: bool roiModeSupported () const; bool takeoffVehicleSupported () const; QString gotoFlightMode () const; - bool hasGripper () const; - bool haveMRSpeedLimits() const { return _multirotor_speed_limits_available; } - bool haveFWSpeedLimits() const { return _fixed_wing_airspeed_limits_available; } // Property accessors @@ -494,7 +459,6 @@ public: // Property accesors int id() const{ return _id; } - int compId() const{ return _compID; } MAV_AUTOPILOT firmwareType() const { return _firmwareType; } MAV_TYPE vehicleType() const { return _vehicleType; } QGCMAVLink::VehicleClass_t vehicleClass(void) const { return QGCMAVLink::vehicleClass(_vehicleType); } @@ -526,28 +490,11 @@ public: bool flightModeSetAvailable (); QStringList flightModes (); + QStringList extraJoystickFlightModes (); QString flightMode () const; void setFlightMode (const QString& flightMode); bool airship() const; - - /** - * @brief Send MAV_CMD_DO_GRIPPER command to trigger specified action in the vehicle - * - * @param gripperAction Gripper action to trigger - */ - - enum GRIPPER_OPTIONS - { - Gripper_release = GRIPPER_ACTION_RELEASE, - Gripper_grab = GRIPPER_ACTION_GRAB, - Invalid_option = GRIPPER_ACTIONS_ENUM_END, - }; - Q_ENUM(GRIPPER_OPTIONS) - - void setGripperAction(GRIPPER_ACTIONS gripperAction); - Q_INVOKABLE void sendGripperAction(GRIPPER_OPTIONS gripperOption); - bool fixedWing() const; bool multiRotor() const; bool vtol() const; @@ -598,6 +545,7 @@ public: int newMessageCount () const{ return _currentMessageCount; } int messageCount () const{ return _messageCount; } QString formattedMessages (); + QString latestError () { return _latestError; } float latitude () { return static_cast(_coordinate.latitude()); } float longitude () { return static_cast(_coordinate.longitude()); } bool mavPresent () { return _mav != nullptr; } @@ -689,21 +637,18 @@ public: Fact* climbRate () { return &_climbRateFact; } Fact* altitudeRelative () { return &_altitudeRelativeFact; } Fact* altitudeAMSL () { return &_altitudeAMSLFact; } - Fact* altitudeAboveTerr () { return &_altitudeAboveTerrFact; } Fact* altitudeTuning () { return &_altitudeTuningFact; } Fact* altitudeTuningSetpoint () { return &_altitudeTuningSetpointFact; } Fact* xTrackError () { return &_xTrackErrorFact; } Fact* rangeFinderDist () { return &_rangeFinderDistFact; } Fact* flightDistance () { return &_flightDistanceFact; } Fact* distanceToHome () { return &_distanceToHomeFact; } - Fact* timeToHome () { return &_timeToHomeFact; } Fact* missionItemIndex () { return &_missionItemIndexFact; } Fact* headingToNextWP () { return &_headingToNextWPFact; } Fact* headingToHome () { return &_headingToHomeFact; } Fact* distanceToGCS () { return &_distanceToGCSFact; } Fact* hobbs () { return &_hobbsFact; } Fact* throttlePct () { return &_throttlePctFact; } - Fact* imuTemp () { return &_imuTempFact; } FactGroup* gpsFactGroup () { return &_gpsFactGroup; } FactGroup* gps2FactGroup () { return &_gps2FactGroup; } @@ -719,8 +664,6 @@ public: FactGroup* estimatorStatusFactGroup () { return &_estimatorStatusFactGroup; } FactGroup* terrainFactGroup () { return &_terrainFactGroup; } FactGroup* hygrometerFactGroup () { return &_hygrometerFactGroup; } - FactGroup* generatorFactGroup () { return &_generatorFactGroup; } - FactGroup* efiFactGroup () { return &_efiFactGroup; } QmlObjectListModel* batteries () { return &_batteryFactGroupListModel; } MissionManager* missionManager () { return _missionManager; } @@ -733,7 +676,6 @@ public: ComponentInformationManager* compInfoManager () { return _componentInformationManager; } VehicleObjectAvoidance* objectAvoidance () { return _objectAvoidance; } Autotune* autotune () const { return _autotune; } - RemoteIDManager* remoteIDManager () { return _remoteIDManager; } static const int cMaxRcChannels = 18; @@ -771,38 +713,16 @@ public: MavCmdResultFailureDuplicateCommand, ///< Unable to send command since duplicate is already being waited on for response } MavCmdResultFailureCode_t; - /// Callback for sendMavCommandWithHandler which handles MAV_RESULT_IN_PROGRESS acks - /// @param progressHandlerData Opaque data passed in to sendMavCommand call - /// @param ack Received COMMAND_ACK - typedef void (*MavCmdProgressHandler)(void* progressHandlerData, int compId, const mavlink_command_ack_t& ack); - - /// Callback for sendMavCommandWithHandler which handles all acks which are not MAV_RESULT_IN_PROGRESS - /// @param resultHandlerData Opaque data passed in to sendMavCommand call - /// @param ack Received COMMAND_ACK - /// @param failureCode Failure reason. If not MavCmdResultCommandResultOnly only ack.result == MAV_RESULT_FAILED is valid. - typedef void (*MavCmdResultHandler)(void* resultHandlerData, int compId, const mavlink_command_ack_t& ack, MavCmdResultFailureCode_t failureCode); - - // Callback info for sendMavCommandWithHandler - typedef struct MavCmdAckHandlerInfo_s { - MavCmdResultHandler resultHandler; ///> nullptr for no handler - void* resultHandlerData; - MavCmdProgressHandler progressHandler; - void* progressHandlerData; ///> nullptr for no handler - } MavCmdAckHandlerInfo_t; - - /// Sends the command and calls the callback with the result - void sendMavCommandWithHandler( - const MavCmdAckHandlerInfo_t* ackHandlerInfo, ///> nullptr to signale no handlers - int compId, MAV_CMD command, - float param1 = 0.0f, float param2 = 0.0f, float param3 = 0.0f, float param4 = 0.0f, float param5 = 0.0f, float param6 = 0.0f, float param7 = 0.0f); + /// Callback for sendMavCommandWithHandler + /// @param resultHandleData Opaque data passed in to sendMavCommand call + /// @param commandResult Ack result for command send + /// @param failureCode Failure reason + typedef void (*MavCmdResultHandler)(void* resultHandlerData, int compId, MAV_RESULT commandResult, uint8_t progress, MavCmdResultFailureCode_t failureCode); /// Sends the command and calls the callback with the result /// @param resultHandler Callback for result, nullptr for no callback /// @param resultHandleData Opaque data passed through callback - void sendMavCommandIntWithHandler( - const MavCmdAckHandlerInfo_t* ackHandlerInfo, ///> nullptr to signale no handlers - int compId, MAV_CMD command, MAV_FRAME frame, - float param1 = 0.0f, float param2 = 0.0f, float param3 = 0.0f, float param4 = 0.0f, double param5 = 0.0f, double param6 = 0.0f, float param7 = 0.0f); + void sendMavCommandWithHandler(MavCmdResultHandler resultHandler, void* resultHandlerData, int compId, MAV_CMD command, float param1 = 0.0f, float param2 = 0.0f, float param3 = 0.0f, float param4 = 0.0f, float param5 = 0.0f, float param6 = 0.0f, float param7 = 0.0f); typedef enum { RequestMessageNoFailure, @@ -911,10 +831,8 @@ public: double loadProgress () const { return _loadProgress; } - void setEventsMetadata(uint8_t compid, const QString& metadataJsonFileName); - void setActuatorsMetadata(uint8_t compid, const QString& metadataJsonFileName); - - HealthAndArmingCheckReport* healthAndArmingCheckReport() { return &_healthAndArmingCheckReport; } + void setEventsMetadata(uint8_t compid, const QString& metadataJsonFileName, const QString& translationJsonFileName); + void setActuatorsMetadata(uint8_t compid, const QString& metadataJsonFileName, const QString& translationJsonFileName); public slots: void setVtolInFwdFlight (bool vtolInFwdFlight); @@ -946,7 +864,7 @@ signals: void capabilityBitsChanged (uint64_t capabilityBits); void toolIndicatorsChanged (); void modeIndicatorsChanged (); - void textMessageReceived (int uasid, int componentid, int severity, QString text, QString description); + void textMessageReceived (int uasid, int componentid, int severity, QString text); void calibrationEventReceived (int uasid, int componentid, int severity, QSharedPointer event); void checkListStateChanged (); void messagesReceivedChanged (); @@ -957,6 +875,7 @@ signals: void messageCountChanged (); void formattedMessagesChanged (); void newFormattedMessage (QString formattedMessage); + void latestErrorChanged (); void longitudeChanged (); void currentConfigChanged (); void flowImageIndexChanged (); @@ -979,8 +898,6 @@ signals: void readyToFlyChanged (bool readyToFy); void allSensorsHealthyChanged (bool allSensorsHealthy); void requiresGpsFixChanged (); - void haveMRSpeedLimChanged (); - void haveFWSpeedLimChanged (); void firmwareVersionChanged (); void firmwareCustomVersionChanged (); @@ -1050,26 +967,23 @@ private slots: void _updateMissionItemIndex (); void _updateHeadingToNextWP (); void _updateDistanceToGCS (); - void _updateHomepoint (); void _updateHobbsMeter (); void _vehicleParamLoaded (bool ready); void _sendQGCTimeToVehicle (); void _mavlinkMessageStatus (int uasId, uint64_t totalSent, uint64_t totalReceived, uint64_t totalLoss, float lossPercent); + void _trafficUpdate (bool alert, QString traffic_id, QString vehicle_id, QGeoCoordinate location, float heading); void _orbitTelemetryTimeout (); void _updateFlightTime (); void _gotProgressUpdate (float progressValue); - void _doSetHomeTerrainReceived (bool success, QList heights); - void _updateAltAboveTerrain (); - void _altitudeAboveTerrainReceived (bool sucess, QList heights); private: - void _loadJoystickSettings (); - void _activeVehicleChanged (Vehicle* newActiveVehicle); - void _captureJoystick (); + void _joystickChanged (Joystick* joystick); + void _loadSettings (); + void _saveSettings (); + void _startJoystick (bool start); void _handlePing (LinkInterface* link, mavlink_message_t& message); void _handleHomePosition (mavlink_message_t& message); void _handleHeartbeat (mavlink_message_t& message); - void _handleCurrentMode (mavlink_message_t& message); void _handleRadioStatus (mavlink_message_t& message); void _handleRCChannels (mavlink_message_t& message); void _handleBatteryStatus (mavlink_message_t& message); @@ -1080,6 +994,7 @@ private: void _handleGlobalPositionInt (mavlink_message_t& message); void _handleAltitude (mavlink_message_t& message); void _handleVfrHud (mavlink_message_t& message); + void _handleRangefinder (mavlink_message_t& message); void _handleNavControllerOutput (mavlink_message_t& message); void _handleHighLatency (mavlink_message_t& message); void _handleHighLatency2 (mavlink_message_t& message); @@ -1090,16 +1005,13 @@ private: void _handleOrbitExecutionStatus (const mavlink_message_t& message); void _handleGimbalOrientation (const mavlink_message_t& message); void _handleObstacleDistance (const mavlink_message_t& message); - void _handleFenceStatus (const mavlink_message_t& message); void _handleEvent(uint8_t comp_id, std::unique_ptr event); // ArduPilot dialect messages #if !defined(NO_ARDUPILOT_DIALECT) void _handleCameraFeedback (const mavlink_message_t& message); - void _handleRangefinder (mavlink_message_t& message); #endif void _handleCameraImageCaptured (const mavlink_message_t& message); void _handleADSBVehicle (const mavlink_message_t& message); - void _handleRawImuTemp (mavlink_message_t& message); void _missionManagerError (int errorCode, const QString& errorMsg); void _geoFenceManagerError (int errorCode, const QString& errorMsg); void _rallyPointManagerError (int errorCode, const QString& errorMsg); @@ -1121,9 +1033,8 @@ private: void _chunkedStatusTextCompleted (uint8_t compId); void _setMessageInterval (int messageId, int rate); EventHandler& _eventHandler (uint8_t compid); - bool setFlightModeCustom (const QString& flightMode, uint8_t* base_mode, uint32_t* custom_mode); - static void _rebootCommandResultHandler(void* resultHandlerData, int compId, const mavlink_command_ack_t& ack, MavCmdResultFailureCode_t failureCode); + static void _rebootCommandResultHandler(void* resultHandlerData, int compId, MAV_RESULT commandResult, uint8_t progress, MavCmdResultFailureCode_t failureCode); int _id; ///< Mavlink system id int _defaultComponentId; @@ -1157,6 +1068,7 @@ private: int _currentWarningCount = 0; int _currentNormalCount = 0; MessageType_t _currentMessageType = MessageNone; + QString _latestError; int _updateCount = 0; int _rcRSSI = 255; double _rcRSSIstore = 255; @@ -1208,12 +1120,13 @@ private: ComponentInformationManager* _componentInformationManager = nullptr; VehicleObjectAvoidance* _objectAvoidance = nullptr; Autotune* _autotune = nullptr; +#if defined(QGC_AIRMAP_ENABLED) + AirspaceVehicleManager* _airspaceVehicleManager = nullptr; +#endif bool _armed = false; ///< true: vehicle is armed uint8_t _base_mode = 0; ///< base_mode from HEARTBEAT uint32_t _custom_mode = 0; ///< custom_mode from HEARTBEAT - uint32_t _custom_mode_user_intention = 0; ///< custom_mode_user_intention from CURRENT_MODE - bool _has_custom_mode_user_intention = false; /// Used to store a message being sent by sendMessageMultiple typedef struct { @@ -1290,7 +1203,6 @@ private: static const int _orbitTelemetryTimeoutMsecs = 3000; // No telemetry for this amount and orbit will go inactive QMap> _events; ///< One protocol handler for each component ID - HealthAndArmingCheckReport _healthAndArmingCheckReport; MAVLinkStreamConfig _mavlinkStreamConfig; @@ -1334,27 +1246,22 @@ private: mavlink_message_t message; } RequestMessageInfo_t; - static void _requestMessageCmdResultHandler (void* resultHandlerData, int compId, const mavlink_command_ack_t& ack, MavCmdResultFailureCode_t failureCode); + static void _requestMessageCmdResultHandler (void* resultHandlerData, int compId, MAV_RESULT result, uint8_t progress, MavCmdResultFailureCode_t failureCode); static void _requestMessageWaitForMessageResultHandler (void* resultHandlerData, bool noResponsefromVehicle, const mavlink_message_t& message); typedef struct MavCommandListEntry { - int targetCompId = MAV_COMP_ID_AUTOPILOT1; - bool useCommandInt = false; - MAV_CMD command; - MAV_FRAME frame; - float rgParam1 = 0; - float rgParam2 = 0; - float rgParam3 = 0; - float rgParam4 = 0; - double rgParam5 = 0; - double rgParam6 = 0; - float rgParam7 = 0; - bool showError = true; - MavCmdAckHandlerInfo_t ackHandlerInfo; - int maxTries = _mavCommandMaxRetryCount; - int tryCount = 0; - QElapsedTimer elapsedTimer; - int ackTimeoutMSecs = _mavCommandAckTimeoutMSecs; + int targetCompId = MAV_COMP_ID_AUTOPILOT1; + bool useCommandInt = false; + MAV_CMD command; + MAV_FRAME frame; + float rgParam[7] = { 0 }; + bool showError = true; + MavCmdResultHandler resultHandler; + void* resultHandlerData = nullptr; + int maxTries = _mavCommandMaxRetryCount; + int tryCount = 0; + QElapsedTimer elapsedTimer; + int ackTimeoutMSecs = _mavCommandAckTimeoutMSecs; } MavCommandListEntry_t; QList _mavCommandList; @@ -1364,11 +1271,7 @@ private: static const int _mavCommandAckTimeoutMSecs = 3000; static const int _mavCommandAckTimeoutMSecsHighLatency = 120000; - void _sendMavCommandWorker ( - bool commandInt, bool showError, - const MavCmdAckHandlerInfo_t* ackHandlerInfo, ///> nullptr to signale no handlers - int compId, MAV_CMD command, MAV_FRAME frame, - float param1, float param2, float param3, float param4, double param5, double param6, float param7); + void _sendMavCommandWorker (bool commandInt, bool showError, MavCmdResultHandler resultHandler, void* resultHandlerData, int compId, MAV_CMD command, MAV_FRAME frame, float param1, float param2, float param3, float param4, float param5, float param6, float param7); void _sendMavCommandFromList(int index); int _findMavCommandListEntryIndex(int targetCompId, MAV_CMD command); bool _sendMavCommandShouldRetry(MAV_CMD command); @@ -1378,10 +1281,6 @@ private: float _altitudeTuningOffset = qQNaN(); // altitude offset, so the plotted value is around 0 - // these flags are used to determine if the speed change action from fly view should be shown - bool _multirotor_speed_limits_available = false; - bool _fixed_wing_airspeed_limits_available = false; - // FactGroup facts Fact _rollFact; @@ -1396,7 +1295,6 @@ private: Fact _climbRateFact; Fact _altitudeRelativeFact; Fact _altitudeAMSLFact; - Fact _altitudeAboveTerrFact; Fact _altitudeTuningFact; Fact _altitudeTuningSetpointFact; Fact _xTrackErrorFact; @@ -1404,14 +1302,12 @@ private: Fact _flightDistanceFact; Fact _flightTimeFact; Fact _distanceToHomeFact; - Fact _timeToHomeFact; Fact _missionItemIndexFact; Fact _headingToNextWPFact; Fact _headingToHomeFact; Fact _distanceToGCSFact; Fact _hobbsFact; Fact _throttlePctFact; - Fact _imuTempFact; VehicleGPSFactGroup _gpsFactGroup; VehicleGPS2FactGroup _gps2FactGroup; @@ -1426,8 +1322,6 @@ private: VehicleEscStatusFactGroup _escStatusFactGroup; VehicleEstimatorStatusFactGroup _estimatorStatusFactGroup; VehicleHygrometerFactGroup _hygrometerFactGroup; - VehicleGeneratorFactGroup _generatorFactGroup; - VehicleEFIFactGroup _efiFactGroup; TerrainFactGroup _terrainFactGroup; QmlObjectListModel _batteryFactGroupListModel; @@ -1441,8 +1335,6 @@ private: ImageProtocolManager* _imageProtocolManager = nullptr; InitialConnectStateMachine* _initialConnectStateMachine = nullptr; Actuators* _actuators = nullptr; - RemoteIDManager* _remoteIDManager = nullptr; - StandardModes* _standardModes = nullptr; static const char* _rollFactName; static const char* _pitchFactName; @@ -1456,7 +1348,6 @@ private: static const char* _climbRateFactName; static const char* _altitudeRelativeFactName; static const char* _altitudeAMSLFactName; - static const char* _altitudeAboveTerrFactName; static const char* _altitudeTuningFactName; static const char* _altitudeTuningSetpointFactName; static const char* _xTrackErrorFactName; @@ -1464,14 +1355,12 @@ private: static const char* _flightDistanceFactName; static const char* _flightTimeFactName; static const char* _distanceToHomeFactName; - static const char* _timeToHomeFactName; static const char* _missionItemIndexFactName; static const char* _headingToNextWPFactName; static const char* _headingToHomeFactName; static const char* _distanceToGCSFactName; static const char* _hobbsFactName; static const char* _throttlePctFactName; - static const char* _imuTempFactName; static const char* _gpsFactGroupName; static const char* _gps2FactGroupName; @@ -1486,8 +1375,6 @@ private: static const char* _escStatusFactGroupName; static const char* _estimatorStatusFactGroupName; static const char* _hygrometerFactGroupName; - static const char* _generatorFactGroupName; - static const char* _efiFactGroupName; static const char* _terrainFactGroupName; static const int _vehicleUIUpdateRateMSecs = 100; @@ -1495,17 +1382,6 @@ private: // Settings keys static const char* _settingsGroup; static const char* _joystickEnabledSettingsKey; - - // Terrain query members, used to get terrain altitude for doSetHome() - TerrainAtCoordinateQuery* _currentDoSetHomeTerrainAtCoordinateQuery = nullptr; - QGeoCoordinate _doSetHomeCoordinate; - - // Terrain query members, used to get altitude above terrain Fact - QElapsedTimer _altitudeAboveTerrQueryTimer; - TerrainAtCoordinateQuery* _altitudeAboveTerrTerrainAtCoordinateQuery = nullptr; - // We use this to limit above terrain altitude queries based on distance and altitude change - QGeoCoordinate _altitudeAboveTerrLastCoord; - float _altitudeAboveTerrLastRelAlt = qQNaN(); }; Q_DECLARE_METATYPE(Vehicle::MavCmdResultFailureCode_t) diff --git a/src/Vehicle/VehicleClockFactGroup.cc b/src/Vehicle/VehicleClockFactGroup.cc index 210a9c9..c2c8d1a 100644 --- a/src/Vehicle/VehicleClockFactGroup.cc +++ b/src/Vehicle/VehicleClockFactGroup.cc @@ -11,29 +11,24 @@ #include "Vehicle.h" const char* VehicleClockFactGroup::_currentTimeFactName = "currentTime"; -const char* VehicleClockFactGroup::_currentUTCTimeFactName = "currentUTCTime"; const char* VehicleClockFactGroup::_currentDateFactName = "currentDate"; VehicleClockFactGroup::VehicleClockFactGroup(QObject* parent) : FactGroup(1000, ":/json/Vehicle/ClockFact.json", parent) , _currentTimeFact (0, _currentTimeFactName, FactMetaData::valueTypeString) - , _currentUTCTimeFact (0, _currentUTCTimeFactName, FactMetaData::valueTypeString) , _currentDateFact (0, _currentDateFactName, FactMetaData::valueTypeString) { _addFact(&_currentTimeFact, _currentTimeFactName); - _addFact(&_currentUTCTimeFact, _currentUTCTimeFactName); _addFact(&_currentDateFact, _currentDateFactName); // Start out as not available "--.--" _currentTimeFact.setRawValue(std::numeric_limits::quiet_NaN()); - _currentUTCTimeFact.setRawValue(std::numeric_limits::quiet_NaN()); _currentDateFact.setRawValue(std::numeric_limits::quiet_NaN()); } void VehicleClockFactGroup::_updateAllValues() { _currentTimeFact.setRawValue(QTime::currentTime().toString()); - _currentUTCTimeFact.setRawValue(QDateTime::currentDateTimeUtc().time().toString()); _currentDateFact.setRawValue(QDateTime::currentDateTime().toString(QLocale::system().dateFormat(QLocale::ShortFormat))); _setTelemetryAvailable(true); diff --git a/src/Vehicle/VehicleClockFactGroup.h b/src/Vehicle/VehicleClockFactGroup.h index ddeda24..0b886b8 100644 --- a/src/Vehicle/VehicleClockFactGroup.h +++ b/src/Vehicle/VehicleClockFactGroup.h @@ -22,15 +22,12 @@ public: VehicleClockFactGroup(QObject* parent = nullptr); Q_PROPERTY(Fact* currentTime READ currentTime CONSTANT) - Q_PROPERTY(Fact* currentUTCTime READ currentUTCTime CONSTANT) Q_PROPERTY(Fact* currentDate READ currentDate CONSTANT) Fact* currentTime () { return &_currentTimeFact; } - Fact* currentUTCTime () { return &_currentUTCTimeFact; } Fact* currentDate () { return &_currentDateFact; } static const char* _currentTimeFactName; - static const char* _currentUTCTimeFactName; static const char* _currentDateFactName; static const char* _settingsGroup; @@ -40,6 +37,5 @@ private slots: private: Fact _currentTimeFact; - Fact _currentUTCTimeFact; Fact _currentDateFact; }; diff --git a/src/Vehicle/VehicleEFIFactGroup.cc b/src/Vehicle/VehicleEFIFactGroup.cc deleted file mode 100644 index 72d9b48..0000000 --- a/src/Vehicle/VehicleEFIFactGroup.cc +++ /dev/null @@ -1,114 +0,0 @@ -#include "VehicleEFIFactGroup.h" -#include "Vehicle.h" - -const char* VehicleEFIFactGroup::_healthFactName = "health"; -const char* VehicleEFIFactGroup::_ecuIndexFactName = "ecuIndex"; -const char* VehicleEFIFactGroup::_rpmFactName = "rpm"; -const char* VehicleEFIFactGroup::_fuelConsumedFactName = "fuelConsumed"; -const char* VehicleEFIFactGroup::_fuelFlowFactName = "fuelFlow"; -const char* VehicleEFIFactGroup::_engineLoadFactName = "engineLoad"; -const char* VehicleEFIFactGroup::_throttlePosFactName = "throttlePos"; -const char* VehicleEFIFactGroup::_sparkTimeFactName = "sparkTime"; -const char* VehicleEFIFactGroup::_baroPressFactName = "baroPress"; -const char* VehicleEFIFactGroup::_intakePressFactName = "intakePress"; -const char* VehicleEFIFactGroup::_intakeTempFactName = "intakeTemp"; -const char* VehicleEFIFactGroup::_cylinderTempFactName = "cylinderTemp"; -const char* VehicleEFIFactGroup::_ignTimeFactName = "ignTime"; -const char* VehicleEFIFactGroup::_injTimeFactName = "injTime"; -const char* VehicleEFIFactGroup::_exGasTempFactName = "exGasTemp"; -const char* VehicleEFIFactGroup::_throttleOutFactName = "throttleOut"; -const char* VehicleEFIFactGroup::_ptCompFactName = "ptComp"; - - -VehicleEFIFactGroup::VehicleEFIFactGroup(QObject* parent) - : FactGroup(1000, ":/json/Vehicle/EFIFact.json", parent) - , _healthFact (0, _healthFactName, FactMetaData::valueTypeInt8) - , _ecuIndexFact (0, _ecuIndexFactName, FactMetaData::valueTypeFloat) - , _rpmFact (0, _rpmFactName, FactMetaData::valueTypeFloat) - , _fuelConsumedFact (0, _fuelConsumedFactName, FactMetaData::valueTypeFloat) - , _fuelFlowFact (0, _fuelFlowFactName, FactMetaData::valueTypeFloat) - , _engineLoadFact (0, _engineLoadFactName, FactMetaData::valueTypeFloat) - , _throttlePosFact (0, _throttlePosFactName, FactMetaData::valueTypeFloat) - , _sparkTimeFact (0, _sparkTimeFactName, FactMetaData::valueTypeFloat) - , _baroPressFact (0, _baroPressFactName, FactMetaData::valueTypeFloat) - , _intakePressFact (0, _intakePressFactName, FactMetaData::valueTypeFloat) - , _intakeTempFact (0, _intakeTempFactName, FactMetaData::valueTypeFloat) - , _cylinderTempFact (0, _cylinderTempFactName, FactMetaData::valueTypeFloat) - , _ignTimeFact (0, _ignTimeFactName, FactMetaData::valueTypeFloat) - , _injTimeFact (0, _injTimeFactName, FactMetaData::valueTypeFloat) - , _exGasTempFact (0, _exGasTempFactName, FactMetaData::valueTypeFloat) - , _throttleOutFact (0, _throttleOutFactName, FactMetaData::valueTypeFloat) - , _ptCompFact (0, _ptCompFactName, FactMetaData::valueTypeFloat) -{ - _addFact(&_healthFact, _healthFactName); - _addFact(&_ecuIndexFact, _ecuIndexFactName); - _addFact(&_rpmFact, _rpmFactName); - _addFact(&_fuelConsumedFact, _fuelConsumedFactName); - _addFact(&_fuelFlowFact, _fuelFlowFactName); - _addFact(&_engineLoadFact, _engineLoadFactName); - _addFact(&_sparkTimeFact, _sparkTimeFactName); - _addFact(&_throttlePosFact, _throttlePosFactName); - _addFact(&_baroPressFact, _baroPressFactName); - _addFact(&_intakePressFact, _intakePressFactName); - _addFact(&_intakeTempFact, _intakeTempFactName); - _addFact(&_cylinderTempFact, _cylinderTempFactName); - _addFact(&_ignTimeFact, _ignTimeFactName); - _addFact(&_exGasTempFact, _exGasTempFactName); - _addFact(&_injTimeFact, _injTimeFactName); - _addFact(&_throttleOutFact, _throttleOutFactName); - _addFact(&_ptCompFact, _ptCompFactName); - - // Start out as not available "--.--" - _healthFact.setRawValue(qQNaN()); - _ecuIndexFact.setRawValue(qQNaN()); - _rpmFact.setRawValue(qQNaN()); - _fuelConsumedFact.setRawValue(qQNaN()); - _fuelFlowFact.setRawValue(qQNaN()); - _engineLoadFact.setRawValue(qQNaN()); - _sparkTimeFact.setRawValue(qQNaN()); - _throttlePosFact.setRawValue(qQNaN()); - _baroPressFact.setRawValue(qQNaN()); - _intakePressFact.setRawValue(qQNaN()); - _intakeTempFact.setRawValue(qQNaN()); - _cylinderTempFact.setRawValue(qQNaN()); - _ignTimeFact.setRawValue(qQNaN()); - _exGasTempFact.setRawValue(qQNaN()); - _injTimeFact.setRawValue(qQNaN()); - _throttleOutFact.setRawValue(qQNaN()); - _ptCompFact.setRawValue(qQNaN()); -} - -void VehicleEFIFactGroup::handleMessage(Vehicle* /* vehicle */, mavlink_message_t& message) -{ - switch (message.msgid) { - case MAVLINK_MSG_ID_EFI_STATUS: - _handleEFIStatus(message); - break; - default: - break; - } -} - -void VehicleEFIFactGroup::_handleEFIStatus(mavlink_message_t& message) -{ - mavlink_efi_status_t efi; - mavlink_msg_efi_status_decode(&message, &efi); - - health()->setRawValue (efi.health == INT8_MAX ? qQNaN() : efi.health); - ecuIndex()->setRawValue (efi.ecu_index); - rpm()->setRawValue (efi.rpm); - fuelConsumed()->setRawValue (efi.fuel_consumed); - fuelFlow()->setRawValue (efi.fuel_flow); - engineLoad()->setRawValue (efi.engine_load); - throttlePos()->setRawValue (efi.throttle_position); - sparkTime()->setRawValue (efi.spark_dwell_time); - baroPress()->setRawValue (efi.barometric_pressure); - intakePress()->setRawValue (efi.intake_manifold_pressure); - intakeTemp()->setRawValue (efi.intake_manifold_temperature); - cylinderTemp()->setRawValue (efi.cylinder_head_temperature); - ignTime()->setRawValue (efi.ignition_timing); - injTime()->setRawValue (efi.injection_time); - exGasTemp()->setRawValue (efi.exhaust_gas_temperature); - throttleOut()->setRawValue (efi.throttle_out); - ptComp()->setRawValue (efi.pt_compensation); -} diff --git a/src/Vehicle/VehicleEFIFactGroup.h b/src/Vehicle/VehicleEFIFactGroup.h deleted file mode 100644 index 879a7a9..0000000 --- a/src/Vehicle/VehicleEFIFactGroup.h +++ /dev/null @@ -1,94 +0,0 @@ -#pragma once - -#include "FactGroup.h" -#include "QGCMAVLink.h" - -class VehicleEFIFactGroup : public FactGroup -{ - Q_OBJECT - -public: - VehicleEFIFactGroup(QObject* parent = nullptr); - - Q_PROPERTY(Fact* health READ health CONSTANT) - Q_PROPERTY(Fact* ecuIndex READ ecuIndex CONSTANT) - Q_PROPERTY(Fact* rpm READ rpm CONSTANT) - Q_PROPERTY(Fact* fuelConsumed READ fuelConsumed CONSTANT) - Q_PROPERTY(Fact* fuelFlow READ fuelFlow CONSTANT) - Q_PROPERTY(Fact* engineLoad READ engineLoad CONSTANT) - Q_PROPERTY(Fact* throttlePos READ throttlePos CONSTANT) - Q_PROPERTY(Fact* sparkTime READ sparkTime CONSTANT) - Q_PROPERTY(Fact* baroPress READ baroPress CONSTANT) - Q_PROPERTY(Fact* intakePress READ intakePress CONSTANT) - Q_PROPERTY(Fact* intakeTemp READ intakeTemp CONSTANT) - Q_PROPERTY(Fact* cylinderTemp READ cylinderTemp CONSTANT) - Q_PROPERTY(Fact* ignTime READ ignTime CONSTANT) - Q_PROPERTY(Fact* injTime READ injTime CONSTANT) - Q_PROPERTY(Fact* exGasTemp READ exGasTemp CONSTANT) - Q_PROPERTY(Fact* throttleOut READ throttleOut CONSTANT) - Q_PROPERTY(Fact* ptComp READ ptComp CONSTANT) - Q_PROPERTY(Fact* ignVoltage READ ignVoltage CONSTANT) - - Fact* health () { return &_healthFact; } - Fact* ecuIndex () { return &_ecuIndexFact; } - Fact* rpm () { return &_rpmFact; } - Fact* fuelConsumed () { return &_fuelConsumedFact; } - Fact* fuelFlow () { return &_fuelFlowFact; } - Fact* engineLoad () { return &_engineLoadFact; } - Fact* throttlePos () { return &_throttlePosFact; } - Fact* sparkTime () { return &_sparkTimeFact; } - Fact* baroPress () { return &_baroPressFact; } - Fact* intakePress () { return &_intakePressFact; } - Fact* intakeTemp () { return &_intakeTempFact; } - Fact* cylinderTemp () { return &_cylinderTempFact; } - Fact* ignTime () { return &_ignTimeFact; } - Fact* injTime () { return &_injTimeFact; } - Fact* exGasTemp () { return &_exGasTempFact; } - Fact* throttleOut () { return &_throttleOutFact; } - Fact* ptComp () { return &_ptCompFact; } - Fact* ignVoltage () { return &_ignVoltageFact; } - - // Overrides from FactGroup - virtual void handleMessage(Vehicle* vehicle, mavlink_message_t& message) override; - - static const char* _healthFactName; - static const char* _ecuIndexFactName; - static const char* _rpmFactName; - static const char* _fuelConsumedFactName; - static const char* _fuelFlowFactName; - static const char* _engineLoadFactName; - static const char* _throttlePosFactName; - static const char* _sparkTimeFactName; - static const char* _baroPressFactName; - static const char* _intakePressFactName; - static const char* _intakeTempFactName; - static const char* _cylinderTempFactName; - static const char* _ignTimeFactName; - static const char* _injTimeFactName; - static const char* _exGasTempFactName; - static const char* _throttleOutFactName; - static const char* _ptCompFactName; - static const char* _ignVoltageFactName; - -protected: - void _handleEFIStatus(mavlink_message_t& message); - - Fact _healthFact; - Fact _ecuIndexFact; - Fact _rpmFact; - Fact _fuelConsumedFact; - Fact _fuelFlowFact; - Fact _engineLoadFact; - Fact _throttlePosFact; - Fact _sparkTimeFact; - Fact _baroPressFact; - Fact _intakePressFact; - Fact _intakeTempFact; - Fact _cylinderTempFact; - Fact _ignTimeFact; - Fact _injTimeFact; - Fact _exGasTempFact; - Fact _throttleOutFact; - Fact _ptCompFact; - Fact _ignVoltageFact; -}; diff --git a/src/Vehicle/VehicleFact.json b/src/Vehicle/VehicleFact.json index 5336b00..f6688d3 100644 --- a/src/Vehicle/VehicleFact.json +++ b/src/Vehicle/VehicleFact.json @@ -80,13 +80,6 @@ "decimalPlaces": 1, "units": "m" }, -{ - "name": "altitudeAboveTerr", - "shortDesc": "Alt (Above Terrain)", - "type": "double", - "decimalPlaces": 1, - "units": "m" -}, { "name": "flightDistance", "shortDesc": "Flight Distance", @@ -101,13 +94,6 @@ "decimalPlaces": 1, "units": "m" }, -{ - "name": "timeToHome", - "shortDesc": "Time to Home", - "type": "double", - "decimalPlaces": 1, - "units": "s" -}, { "name": "headingToHome", "shortDesc": "Heading to Home", @@ -150,12 +136,6 @@ "shortDesc": "Throttle %", "type": "uint16", "units": "%" -}, -{ - "name": "imuTemp", - "shortDesc": "Imu temperature", - "type": "int16", - "units": "°C" } ] } diff --git a/src/Vehicle/VehicleGeneratorFactGroup.cc b/src/Vehicle/VehicleGeneratorFactGroup.cc deleted file mode 100644 index 9cfbd7d..0000000 --- a/src/Vehicle/VehicleGeneratorFactGroup.cc +++ /dev/null @@ -1,110 +0,0 @@ -#include "VehicleGeneratorFactGroup.h" -#include "Vehicle.h" -#include - -const char* VehicleGeneratorFactGroup::_statusFactName = "status"; -const char* VehicleGeneratorFactGroup::_genSpeedFactName = "genSpeed"; -const char* VehicleGeneratorFactGroup::_batteryCurrentFactName = "batteryCurrent"; -const char* VehicleGeneratorFactGroup::_loadCurrentFactName = "loadCurrent"; -const char* VehicleGeneratorFactGroup::_powerGeneratedFactName = "powerGenerated"; -const char* VehicleGeneratorFactGroup::_busVoltageFactName = "busVoltage"; -const char* VehicleGeneratorFactGroup::_rectifierTempFactName = "rectifierTemp"; -const char* VehicleGeneratorFactGroup::_batCurrentSetpointFactName = "batCurrentSetpoint"; -const char* VehicleGeneratorFactGroup::_genTempFactName = "genTemp"; -const char* VehicleGeneratorFactGroup::_runtimeFactName = "runtime"; -const char* VehicleGeneratorFactGroup::_timeMaintenanceFactName = "timeMaintenance"; - -VehicleGeneratorFactGroup::VehicleGeneratorFactGroup(QObject* parent) - : FactGroup(1000, ":/json/Vehicle/GeneratorFact.json", parent) - , _statusFact (0, _statusFactName, FactMetaData::valueTypeUint64) - , _genSpeedFact (0, _genSpeedFactName, FactMetaData::valueTypeUint16) - , _batteryCurrentFact (0, _batteryCurrentFactName, FactMetaData::valueTypeFloat) - , _loadCurrentFact (0, _loadCurrentFactName, FactMetaData::valueTypeFloat) - , _powerGeneratedFact (0, _powerGeneratedFactName, FactMetaData::valueTypeFloat) - , _busVoltageFact (0, _busVoltageFactName, FactMetaData::valueTypeFloat) - , _rectifierTempFact (0, _rectifierTempFactName, FactMetaData::valueTypeInt16) - , _batCurrentSetpointFact (0, _batCurrentSetpointFactName, FactMetaData::valueTypeFloat) - , _genTempFact (0, _genTempFactName, FactMetaData::valueTypeInt16) - , _runtimeFact (0, _runtimeFactName, FactMetaData::valueTypeUint32) - , _timeMaintenanceFact (0, _timeMaintenanceFactName, FactMetaData::valueTypeInt32) -{ - _addFact(&_statusFact, _statusFactName); - _addFact(&_genSpeedFact, _genSpeedFactName); - _addFact(&_batteryCurrentFact, _batteryCurrentFactName); - _addFact(&_loadCurrentFact, _loadCurrentFactName); - _addFact(&_powerGeneratedFact, _powerGeneratedFactName); - _addFact(&_busVoltageFact, _busVoltageFactName); - _addFact(&_batCurrentSetpointFact, _batCurrentSetpointFactName); - _addFact(&_rectifierTempFact, _rectifierTempFactName); - _addFact(&_genTempFact, _genTempFactName); - _addFact(&_runtimeFact, _runtimeFactName); - _addFact(&_timeMaintenanceFact, _timeMaintenanceFactName); - - // Start out as not available "--.--" - _statusFact.setRawValue(qQNaN()); - _genSpeedFact.setRawValue(qQNaN()); - _batteryCurrentFact.setRawValue(qQNaN()); - _loadCurrentFact.setRawValue(qQNaN()); - _powerGeneratedFact.setRawValue(qQNaN()); - _busVoltageFact.setRawValue(qQNaN()); - _batCurrentSetpointFact.setRawValue(qQNaN()); - _rectifierTempFact.setRawValue(qQNaN()); - _genTempFact.setRawValue(qQNaN()); - _runtimeFact.setRawValue(qQNaN()); - _timeMaintenanceFact.setRawValue(qQNaN()); -} - -void VehicleGeneratorFactGroup::handleMessage(Vehicle* /* vehicle */, mavlink_message_t& message) -{ - switch (message.msgid) { - case MAVLINK_MSG_ID_GENERATOR_STATUS: - _handleGeneratorStatus(message); - break; - default: - break; - } -} - -void VehicleGeneratorFactGroup::_handleGeneratorStatus(mavlink_message_t& message) -{ - mavlink_generator_status_t generator; - mavlink_msg_generator_status_decode(&message, &generator); - - status()->setRawValue (generator.status == UINT16_MAX ? qQNaN() : generator.status); - _updateGeneratorFlags(); - genSpeed()->setRawValue (generator.generator_speed == UINT16_MAX ? qQNaN() : generator.generator_speed); - batteryCurrent()->setRawValue (generator.battery_current); - loadCurrent()->setRawValue (generator.load_current); - powerGenerated()->setRawValue (generator.power_generated); - busVoltage()->setRawValue (generator.bus_voltage); - rectifierTemp()->setRawValue (generator.rectifier_temperature == INT16_MAX ? qQNaN() : generator.rectifier_temperature); - batCurrentSetpoint()->setRawValue (generator.bat_current_setpoint); - genTemp()->setRawValue (generator.generator_temperature == INT16_MAX ? qQNaN() : generator.generator_temperature); - runtime()->setRawValue (generator.runtime == UINT32_MAX ? qQNaN() : generator.runtime); - timeMaintenance()->setRawValue (generator.time_until_maintenance == INT32_MAX ? qQNaN() : generator.time_until_maintenance); -} - -void VehicleGeneratorFactGroup::_updateGeneratorFlags() { - - // Check the status received, and convert it to a List with the state of each flag - int statusFlag = _statusFact.rawValue().toInt(); - - // No need to update the list if we have the same flags - if ( statusFlag == _prevFlag) { - return; - } - - _prevFlag = statusFlag; - _flagsListGenerator.clear(); - - std::bitset<23> bitsetFlags(statusFlag); - - for (size_t i=0; i + * (c) 2009-2020 QGROUNDCONTROL PROJECT * * QGroundControl is licensed according to the terms in the file * COPYING.md in the root of the source code directory. @@ -46,7 +46,7 @@ void VehicleHygrometerFactGroup::_handleHygrometerSensor(mavlink_message_t& mess mavlink_hygrometer_sensor_t hygrometer; mavlink_msg_hygrometer_sensor_decode(&message, &hygrometer); - _hygroTempFact.setRawValue(hygrometer.temperature/100.f); + _hygroTempFact.setRawValue(hygrometer.temperature); _hygroHumiFact.setRawValue(hygrometer.humidity); _hygroIDFact.setRawValue(hygrometer.id); } diff --git a/src/VehicleSetup/FirmwareUpgrade.qml b/src/VehicleSetup/FirmwareUpgrade.qml index 5d4611d..35ff42a 100644 --- a/src/VehicleSetup/FirmwareUpgrade.qml +++ b/src/VehicleSetup/FirmwareUpgrade.qml @@ -66,6 +66,12 @@ SetupPage { property bool _singleFirmwareMode: QGroundControl.corePlugin.options.firmwareUpgradeSingleURL.length != 0 ///< true: running in special single firmware download mode + function cancelFlash() { + statusTextArea.append(highlightPrefix + qsTr("Upgrade cancelled") + highlightSuffix) + statusTextArea.append("------------------------------------------") + controller.cancel() + } + function setupPageCompleted() { controller.startBoardSearch() _defaultFirmwareIsPX4 = _defaultFirmwareFact.rawValue === _defaultFimwareTypePX4 // we don't want this to be bound and change as radios are selected @@ -130,17 +136,15 @@ SetupPage { } } - onShowFirmwareSelectDlg: firmwareSelectDialogComponent.createObject(mainWindow).open() + onShowFirmwareSelectDlg: mainWindow.showComponentDialog(firmwareSelectDialogComponent, title, mainWindow.showDialogDefaultWidth, StandardButton.Ok | StandardButton.Cancel) onError: statusTextArea.append(flashFailText) } Component { id: firmwareSelectDialogComponent - QGCPopupDialog { - id: firmwareSelectDialog - title: qsTr("Firmware Setup") - buttons: StandardButton.Ok | StandardButton.Cancel + QGCViewDialog { + id: pixhawkFirmwareSelectDialog property bool showFirmwareTypeSelection: _advanced.checked property bool px4Flow: controller.px4FlowBoard @@ -185,7 +189,7 @@ SetupPage { onError: reject() } - onAccepted: { + function accept() { if (_singleFirmwareMode) { controller.flashSingleFirmwareMode(controller.selectedFirmwareBuildType) } else { @@ -204,23 +208,14 @@ SetupPage { } else { if (controller.apmFirmwareNames.length === 0) { // Not ready yet, or no firmware available - mainWindow.showMessageDialog(firmwareSelectDialog.title, qsTr("Either firmware list is still downloading, or no firmware is available for current selection.")) - firmwareSelectDialog.preventClose = true return } - if (ardupilotFirmwareSelectionCombo.currentIndex == -1) { - mainWindow.showMessageDialog(firmwareSelectDialog.title, qsTr("You must choose a board type.")) - firmwareSelectDialog.preventClose = true - return - } - var firmwareUrl = controller.apmFirmwareUrls[ardupilotFirmwareSelectionCombo.currentIndex] if (firmwareUrl == "") { - mainWindow.showMessageDialog(firmwareSelectDialog.title, qsTr("No firmware was found for the current selection.")) - firmwareSelectDialog.preventClose = true return } controller.flashFirmwareUrl(controller.apmFirmwareUrls[ardupilotFirmwareSelectionCombo.currentIndex]) + hideDialog() return } } @@ -231,14 +226,13 @@ SetupPage { } else { controller.flash(stack, firmwareBuildType, vehicleType) } + hideDialog() } } function reject() { - statusTextArea.append(highlightPrefix + qsTr("Upgrade cancelled") + highlightSuffix) - statusTextArea.append("------------------------------------------") - controller.cancel() - close() + hideDialog() + cancelFlash() } ListModel { @@ -301,166 +295,212 @@ SetupPage { } } - ColumnLayout { - width: Math.max(ScreenTools.defaultFontPixelWidth * 40, firmwareRadiosColumn.width) - spacing: globals.defaultTextHeight / 2 - - QGCLabel { - Layout.fillWidth: true - wrapMode: Text.WordWrap - text: (_singleFirmwareMode || !QGroundControl.apmFirmwareSupported) ? _singleFirmwareLabel : (px4Flow ? _px4FlowLabel : _pixhawkLabel) - - readonly property string _px4FlowLabel: qsTr("Detected PX4 Flow board. The firmware you use on the PX4 Flow must match the AutoPilot firmware type you are using on the vehicle:") - readonly property string _pixhawkLabel: qsTr("Detected Pixhawk board. You can select from the following flight stacks:") - readonly property string _singleFirmwareLabel: qsTr("Press Ok to upgrade your vehicle.") - } + QGCFlickable { + anchors.fill: parent + contentHeight: mainColumn.height Column { - id: firmwareRadiosColumn - spacing: 0 + id: mainColumn + anchors.left: parent.left + anchors.right: parent.right + spacing: globals.defaultTextHeight - visible: !_singleFirmwareMode && !px4Flow && QGroundControl.apmFirmwareSupported + QGCLabel { + width: parent.width + wrapMode: Text.WordWrap + text: (_singleFirmwareMode || !QGroundControl.apmFirmwareSupported) ? _singleFirmwareLabel : (px4Flow ? _px4FlowLabel : _pixhawkLabel) - Component.onCompleted: { - if(!QGroundControl.apmFirmwareSupported) { - _defaultFirmwareFact.rawValue = _defaultFimwareTypePX4 - firmwareVersionChanged(firmwareBuildTypeList) + readonly property string _px4FlowLabel: qsTr("Detected PX4 Flow board. The firmware you use on the PX4 Flow must match the AutoPilot firmware type you are using on the vehicle:") + readonly property string _pixhawkLabel: qsTr("Detected Pixhawk board. You can select from the following flight stacks:") + readonly property string _singleFirmwareLabel: qsTr("Press Ok to upgrade your vehicle.") + } + + QGCLabel { text: qsTr("Flight Stack"); visible: QGroundControl.apmFirmwareSupported } + + Column { + + Component.onCompleted: { + if(!QGroundControl.apmFirmwareSupported) { + _defaultFirmwareFact.rawValue = _defaultFimwareTypePX4 + firmwareVersionChanged(firmwareBuildTypeList) + } + } + + QGCRadioButton { + id: px4FlightStackRadio + text: qsTr("PX4 Pro ") + font.bold: _defaultFirmwareIsPX4 + checked: _defaultFirmwareIsPX4 + visible: !_singleFirmwareMode && !px4Flow && QGroundControl.apmFirmwareSupported + + onClicked: { + _defaultFirmwareFact.rawValue = _defaultFimwareTypePX4 + firmwareVersionChanged(firmwareBuildTypeList) + } + } + + QGCRadioButton { + id: apmFlightStack + text: qsTr("ArduPilot") + font.bold: !_defaultFirmwareIsPX4 + checked: !_defaultFirmwareIsPX4 + visible: !_singleFirmwareMode && !px4Flow && QGroundControl.apmFirmwareSupported + + onClicked: { + _defaultFirmwareFact.rawValue = _defaultFimwareTypeAPM + firmwareVersionChanged(firmwareBuildTypeList) + } } } - QGCRadioButton { - id: px4FlightStackRadio - text: qsTr("PX4 Pro ") - font.bold: _defaultFirmwareIsPX4 - checked: _defaultFirmwareIsPX4 + FactComboBox { + anchors.left: parent.left + anchors.right: parent.right + visible: !px4Flow && apmFlightStack.checked + fact: _firmwareUpgradeSettings.apmChibiOS + indexModel: false + } - onClicked: { - _defaultFirmwareFact.rawValue = _defaultFimwareTypePX4 - firmwareVersionChanged(firmwareBuildTypeList) + FactComboBox { + id: apmVehicleTypeCombo + anchors.left: parent.left + anchors.right: parent.right + visible: !px4Flow && apmFlightStack.checked + fact: _firmwareUpgradeSettings.apmVehicleType + indexModel: false + } + + QGCComboBox { + id: ardupilotFirmwareSelectionCombo + anchors.left: parent.left + anchors.right: parent.right + visible: !px4Flow && apmFlightStack.checked && !controller.downloadingFirmwareList && controller.apmFirmwareNames.length !== 0 + model: controller.apmFirmwareNames + onModelChanged: currentIndex = controller.apmFirmwareNamesBestIndex + } + + QGCLabel { + anchors.left: parent.left + anchors.right: parent.right + wrapMode: Text.WordWrap + text: qsTr("Downloading list of available firmwares...") + visible: controller.downloadingFirmwareList + } + + QGCLabel { + anchors.left: parent.left + anchors.right: parent.right + wrapMode: Text.WordWrap + text: qsTr("No Firmware Available") + visible: !controller.downloadingFirmwareList && (QGroundControl.apmFirmwareSupported && controller.apmFirmwareNames.length === 0) + } + + QGCComboBox { + id: px4FlowTypeSelectionCombo + anchors.left: parent.left + anchors.right: parent.right + visible: px4Flow + model: px4FlowFirmwareList + textRole: "text" + currentIndex: _defaultFirmwareIsPX4 ? 0 : 1 + } + + Row { + width: parent.width + spacing: ScreenTools.defaultFontPixelWidth / 2 + visible: !px4Flow + + Rectangle { + height: 1 + width: ScreenTools.defaultFontPixelWidth * 5 + color: qgcPal.text + anchors.verticalCenter: _advanced.verticalCenter + } + + QGCCheckBox { + id: _advanced + text: qsTr("Advanced settings") + checked: px4Flow ? true : false + + onClicked: { + firmwareBuildTypeCombo.currentIndex = 0 + firmwareWarningMessageVisible = false + updatePX4VersionDisplay() + } + } + + Rectangle { + height: 1 + width: ScreenTools.defaultFontPixelWidth * 5 + color: qgcPal.text + anchors.verticalCenter: _advanced.verticalCenter } } - QGCRadioButton { - id: apmFlightStack - text: qsTr("ArduPilot") - font.bold: !_defaultFirmwareIsPX4 - checked: !_defaultFirmwareIsPX4 + QGCLabel { + width: parent.width + wrapMode: Text.WordWrap + visible: showFirmwareTypeSelection + text: _singleFirmwareMode ? qsTr("Select the standard version or one from the file system (previously downloaded):") : + (px4Flow ? qsTr("Select which version of the firmware you would like to install:") : + qsTr("Select which version of the above flight stack you would like to install:")) + } - onClicked: { - _defaultFirmwareFact.rawValue = _defaultFimwareTypeAPM - firmwareVersionChanged(firmwareBuildTypeList) + QGCComboBox { + id: firmwareBuildTypeCombo + anchors.left: parent.left + anchors.right: parent.right + visible: showFirmwareTypeSelection + textRole: "text" + model: _singleFirmwareMode ? singleFirmwareModeTypeList : (px4Flow ? px4FlowTypeList : firmwareBuildTypeList) + + onActivated: { + controller.selectedFirmwareBuildType = model.get(index).firmwareType + if (model.get(index).firmwareType === FirmwareUpgradeController.BetaFirmware) { + firmwareWarningMessageVisible = true + firmwareVersionWarningLabel.text = qsTr("WARNING: BETA FIRMWARE. ") + + qsTr("This firmware version is ONLY intended for beta testers. ") + + qsTr("Although it has received FLIGHT TESTING, it represents actively changed code. ") + + qsTr("Do NOT use for normal operation.") + } else if (model.get(index).firmwareType === FirmwareUpgradeController.DeveloperFirmware) { + firmwareWarningMessageVisible = true + firmwareVersionWarningLabel.text = qsTr("WARNING: CONTINUOUS BUILD FIRMWARE. ") + + qsTr("This firmware has NOT BEEN FLIGHT TESTED. ") + + qsTr("It is only intended for DEVELOPERS. ") + + qsTr("Run bench tests without props first. ") + + qsTr("Do NOT fly this without additional safety precautions. ") + + qsTr("Follow the forums actively when using it.") + } else { + firmwareWarningMessageVisible = false + } + updatePX4VersionDisplay() } } - } - FactComboBox { - Layout.fillWidth: true - visible: !px4Flow && apmFlightStack.checked - fact: _firmwareUpgradeSettings.apmChibiOS - indexModel: false - } - - FactComboBox { - id: apmVehicleTypeCombo - Layout.fillWidth: true - visible: !px4Flow && apmFlightStack.checked - fact: _firmwareUpgradeSettings.apmVehicleType - indexModel: false - } - - QGCComboBox { - id: ardupilotFirmwareSelectionCombo - Layout.fillWidth: true - visible: !px4Flow && apmFlightStack.checked && !controller.downloadingFirmwareList && controller.apmFirmwareNames.length !== 0 - model: controller.apmFirmwareNames - onModelChanged: currentIndex = controller.apmFirmwareNamesBestIndex - } - - QGCLabel { - Layout.fillWidth: true - wrapMode: Text.WordWrap - text: qsTr("Downloading list of available firmwares...") - visible: controller.downloadingFirmwareList - } - - QGCLabel { - Layout.fillWidth: true - wrapMode: Text.WordWrap - text: qsTr("No Firmware Available") - visible: !controller.downloadingFirmwareList && (QGroundControl.apmFirmwareSupported && controller.apmFirmwareNames.length === 0) - } - - QGCComboBox { - id: px4FlowTypeSelectionCombo - Layout.fillWidth: true - visible: px4Flow - model: px4FlowFirmwareList - textRole: "text" - currentIndex: _defaultFirmwareIsPX4 ? 0 : 1 - } - - QGCCheckBox { - id: _advanced - text: qsTr("Advanced settings") - checked: px4Flow ? true : false - visible: !px4Flow - - onClicked: { - firmwareBuildTypeCombo.currentIndex = 0 - firmwareWarningMessageVisible = false - updatePX4VersionDisplay() + QGCLabel { + id: firmwareVersionWarningLabel + width: parent.width + wrapMode: Text.WordWrap + visible: firmwareWarningMessageVisible } - } - - QGCLabel { - Layout.fillWidth: true - wrapMode: Text.WordWrap - visible: showFirmwareTypeSelection - text: _singleFirmwareMode ? qsTr("Select the standard version or one from the file system (previously downloaded):") : - (px4Flow ? qsTr("Select which version of the firmware you would like to install:") : - qsTr("Select which version of the above flight stack you would like to install:")) - } - - QGCComboBox { - id: firmwareBuildTypeCombo - Layout.fillWidth: true - visible: showFirmwareTypeSelection - textRole: "text" - model: _singleFirmwareMode ? singleFirmwareModeTypeList : (px4Flow ? px4FlowTypeList : firmwareBuildTypeList) - - onActivated: { - controller.selectedFirmwareBuildType = model.get(index).firmwareType - if (model.get(index).firmwareType === FirmwareUpgradeController.BetaFirmware) { - firmwareWarningMessageVisible = true - firmwareVersionWarningLabel.text = qsTr("WARNING: BETA FIRMWARE. ") + - qsTr("This firmware version is ONLY intended for beta testers. ") + - qsTr("Although it has received FLIGHT TESTING, it represents actively changed code. ") + - qsTr("Do NOT use for normal operation.") - } else if (model.get(index).firmwareType === FirmwareUpgradeController.DeveloperFirmware) { - firmwareWarningMessageVisible = true - firmwareVersionWarningLabel.text = qsTr("WARNING: CONTINUOUS BUILD FIRMWARE. ") + - qsTr("This firmware has NOT BEEN FLIGHT TESTED. ") + - qsTr("It is only intended for DEVELOPERS. ") + - qsTr("Run bench tests without props first. ") + - qsTr("Do NOT fly this without additional safety precautions. ") + - qsTr("Follow the forums actively when using it.") - } else { - firmwareWarningMessageVisible = false - } - updatePX4VersionDisplay() - } - } - - QGCLabel { - id: firmwareVersionWarningLabel - Layout.fillWidth: true - wrapMode: Text.WordWrap - visible: firmwareWarningMessageVisible - } - } // ColumnLayout - } // QGCPopupDialog + } // Column + } // QGCFLickable + } // QGCViewDialog } // Component - firmwareSelectDialogComponent + Component { + id: firmwareWarningDialog + + QGCViewMessage { + message: firmwareWarningMessage + + function accept() { + hideDialog() + controller.doFirmwareUpgrade(); + } + } + } + ProgressBar { id: progressBar Layout.preferredWidth: parent.width diff --git a/src/VehicleSetup/FirmwareUpgradeController.cc b/src/VehicleSetup/FirmwareUpgradeController.cc index 7524a12..b0ef691 100644 --- a/src/VehicleSetup/FirmwareUpgradeController.cc +++ b/src/VehicleSetup/FirmwareUpgradeController.cc @@ -62,7 +62,6 @@ static QMap px4_board_name_map { {54, "px4_fmu-v6u_default"}, {56, "px4_fmu-v6c_default"}, {57, "ark_fmu-v6x_default"}, - {58, "px4_fmu-v6xrt_default"}, {55, "sky-drones_smartap-airlink_default"}, {88, "airmind_mindpx-v2_default"}, {12, "bitcraze_crazyflie_default"}, @@ -110,6 +109,8 @@ FirmwareUpgradeController::FirmwareUpgradeController(void) : _singleFirmwareURL (qgcApp()->toolbox()->corePlugin()->options()->firmwareUpgradeSingleURL()) , _singleFirmwareMode (!_singleFirmwareURL.isEmpty()) , _downloadingFirmwareList (false) + , _downloadManager (nullptr) + , _downloadNetworkReply (nullptr) , _statusLog (nullptr) , _selectedFirmwareBuildType (StableFirmware) , _image (nullptr) @@ -141,7 +142,7 @@ FirmwareUpgradeController::FirmwareUpgradeController(void) connect(_threadController, &PX4FirmwareUpgradeThreadController::eraseComplete, this, &FirmwareUpgradeController::_eraseComplete); connect(_threadController, &PX4FirmwareUpgradeThreadController::flashComplete, this, &FirmwareUpgradeController::_flashComplete); connect(_threadController, &PX4FirmwareUpgradeThreadController::updateProgress, this, &FirmwareUpgradeController::_updateProgress); - + connect(&_eraseTimer, &QTimer::timeout, this, &FirmwareUpgradeController::_eraseProgressTick); #if !defined(NO_ARDUPILOT_DIALECT) @@ -259,7 +260,7 @@ void FirmwareUpgradeController::_foundBoard(bool firstAttempt, const QSerialPort DefaultVehicleFirmware); } } - + qCDebug(FirmwareUpgradeLog) << _boardType << _boardTypeName; emit boardFound(); } @@ -283,12 +284,12 @@ void FirmwareUpgradeController::_foundBoardInfo(int bootloaderVersion, int board _bootloaderVersion = static_cast(bootloaderVersion); _bootloaderBoardID = static_cast(boardID); _bootloaderBoardFlashSize = static_cast(flashSize); - + _appendStatusLog(tr("Connected to bootloader:")); _appendStatusLog(tr(" Version: %1").arg(_bootloaderVersion)); _appendStatusLog(tr(" Board ID: %1").arg(_bootloaderBoardID)); _appendStatusLog(tr(" Flash size: %1").arg(_bootloaderBoardFlashSize)); - + if (_startFlashWhenBootloaderFound) { flash(_startFlashWhenBootloaderFoundFirmwareIdentity); } else { @@ -379,7 +380,7 @@ void FirmwareUpgradeController::_getFirmwareFile(FirmwareIdentifier firmwareId) return; } } - + if (_firmwareFilename.isEmpty()) { _errorCancel(tr("No firmware file selected")); } else { @@ -391,10 +392,10 @@ void FirmwareUpgradeController::_getFirmwareFile(FirmwareIdentifier firmwareId) void FirmwareUpgradeController::_downloadFirmware(void) { Q_ASSERT(!_firmwareFilename.isEmpty()); - + _appendStatusLog(tr("Downloading firmware...")); _appendStatusLog(tr(" From: %1").arg(_firmwareFilename)); - + QGCFileDownload* downloader = new QGCFileDownload(this); connect(downloader, &QGCFileDownload::downloadComplete, this, &FirmwareUpgradeController::_firmwareDownloadComplete); connect(downloader, &QGCFileDownload::downloadProgress, this, &FirmwareUpgradeController::_firmwareDownloadProgress); @@ -415,23 +416,23 @@ void FirmwareUpgradeController::_firmwareDownloadComplete(QString /*remoteFile*/ { if (errorMsg.isEmpty()) { _appendStatusLog(tr("Download complete")); - + FirmwareImage* image = new FirmwareImage(this); - + connect(image, &FirmwareImage::statusMessage, this, &FirmwareUpgradeController::_status); connect(image, &FirmwareImage::errorMessage, this, &FirmwareUpgradeController::_error); - + if (!image->load(localFile, _bootloaderBoardID)) { _errorCancel(tr("Image load failed")); return; } - + // We can't proceed unless we have the bootloader if (!_bootloaderFound) { _errorCancel(tr("Bootloader not found")); return; } - + if (_bootloaderBoardFlashSize != 0 && image->imageSize() > _bootloaderBoardFlashSize) { _errorCancel(tr("Image size of %1 is too large for board flash size %2").arg(image->imageSize()).arg(_bootloaderBoardFlashSize)); return; @@ -464,7 +465,7 @@ void FirmwareUpgradeController::_flashComplete(void) { delete _image; _image = nullptr; - + _appendStatusLog(tr("Upgrade complete"), true); _appendStatusLog("------------------------------------------", false); emit flashComplete(); @@ -475,7 +476,7 @@ void FirmwareUpgradeController::_error(const QString& errorString) { delete _image; _image = nullptr; - + _errorCancel(QString("Error: %1").arg(errorString)); } @@ -504,16 +505,16 @@ void FirmwareUpgradeController::_eraseProgressTick(void) void FirmwareUpgradeController::_appendStatusLog(const QString& text, bool critical) { Q_ASSERT(_statusLog); - + QVariant returnedValue; QVariant varText; - + if (critical) { varText = QString("%1").arg(text); } else { varText = text; } - + QMetaObject::invokeMethod(_statusLog, "append", Q_RETURN_ARG(QVariant, returnedValue), @@ -687,7 +688,7 @@ void FirmwareUpgradeController::_downloadArduPilotManifest(void) QGCFileDownload* downloader = new QGCFileDownload(this); connect(downloader, &QGCFileDownload::downloadComplete, this, &FirmwareUpgradeController::_ardupilotManifestDownloadComplete); - downloader->download(QStringLiteral("https://firmware.ardupilot.org/manifest.json.gz")); + downloader->download(QStringLiteral("http://firmware.ardupilot.org/manifest.json.gz")); } void FirmwareUpgradeController::_ardupilotManifestDownloadComplete(QString remoteFile, QString localFile, QString errorMsg) diff --git a/src/VehicleSetup/FirmwareUpgradeController.h b/src/VehicleSetup/FirmwareUpgradeController.h index abd99b0..90ebb50 100644 --- a/src/VehicleSetup/FirmwareUpgradeController.h +++ b/src/VehicleSetup/FirmwareUpgradeController.h @@ -226,6 +226,9 @@ private: QString _firmwareFilename; ///< Image which we are going to flash to the board + QNetworkAccessManager* _downloadManager; ///< Used for firmware file downloading across the internet + QNetworkReply* _downloadNetworkReply; ///< Used for firmware file downloading across the internet + /// @brief Thread controller which is used to run bootloader commands on separate thread PX4FirmwareUpgradeThreadController* _threadController; diff --git a/src/VehicleSetup/JoystickConfig.qml b/src/VehicleSetup/JoystickConfig.qml index c7d4f1b..3ba6e90 100644 --- a/src/VehicleSetup/JoystickConfig.qml +++ b/src/VehicleSetup/JoystickConfig.qml @@ -48,9 +48,7 @@ SetupPage { height: bar.height + joyLoader.height readonly property real labelToMonitorMargin: ScreenTools.defaultFontPixelWidth * 3 - - property var _activeJoystick: joystickManager.activeJoystick - property bool _allowJoystickSelection: QGroundControl.corePlugin.options.allowJoystickSelection + property var _activeJoystick: joystickManager.activeJoystick function setupPageCompleted() { controller.start() @@ -64,31 +62,20 @@ SetupPage { id: bar width: parent.width Component.onCompleted: { - if (_activeJoystick) { - if (_activeJoystick.axisCount == 0) { - currentIndex = _allowJoystickSelection ? 0 : 1 - } else { - currentIndex = _activeJoystick.calibrated ? 0 : 2 - } - } else { - currentIndex = 0 - } + currentIndex = _activeJoystick && _activeJoystick.calibrated ? 0 : 2 } anchors.top: parent.top QGCTabButton { text: qsTr("General") - visible: _allowJoystickSelection } QGCTabButton { text: qsTr("Button Assigment") } QGCTabButton { text: qsTr("Calibration") - visible: _activeJoystick.axisCount != 0 } QGCTabButton { text: qsTr("Advanced") - visible: _activeJoystick.axisCount != 0 } } diff --git a/src/VehicleSetup/JoystickConfigController.cc b/src/VehicleSetup/JoystickConfigController.cc index 256f450..64f6200 100644 --- a/src/VehicleSetup/JoystickConfigController.cc +++ b/src/VehicleSetup/JoystickConfigController.cc @@ -538,7 +538,6 @@ void JoystickConfigController::_writeCalibration() Vehicle* vehicle = qgcApp()->toolbox()->multiVehicleManager()->activeVehicle(); if (vehicle) { vehicle->setJoystickEnabled(true); - vehicle->saveJoystickSettings(); } } diff --git a/src/VehicleSetup/JoystickConfigGeneral.qml b/src/VehicleSetup/JoystickConfigGeneral.qml index 8a479a1..e6b8428 100644 --- a/src/VehicleSetup/JoystickConfigGeneral.qml +++ b/src/VehicleSetup/JoystickConfigGeneral.qml @@ -21,14 +21,9 @@ import QGroundControl.FactSystem 1.0 import QGroundControl.FactControls 1.0 Item { - width: mainCol.width + (ScreenTools.defaultFontPixelWidth * 2) - height: mainCol.height + (ScreenTools.defaultFontPixelHeight * 2) - + width: mainCol.width + (ScreenTools.defaultFontPixelWidth * 2) + height: mainCol.height + (ScreenTools.defaultFontPixelHeight * 2) readonly property real axisMonitorWidth: ScreenTools.defaultFontPixelWidth * 32 - - property bool _buttonsOnly: _activeJoystick.axisCount == 0 - property bool _requiresCalibration: !_activeJoystick.calibrated && !_buttonsOnly - Column { id: mainCol anchors.centerIn: parent @@ -40,17 +35,14 @@ Item { //--------------------------------------------------------------------- //-- Enable Joystick QGCLabel { - text: _requiresCalibration ? qsTr("Enable not allowed (Calibrate First)") : qsTr("Enable joystick input") + text: _activeJoystick ? _activeJoystick.calibrated ? qsTr("Enable joystick input") : qsTr("Enable not allowed (Calibrate First)") : "" Layout.alignment: Qt.AlignVCenter Layout.minimumWidth: ScreenTools.defaultFontPixelWidth * 36 } QGCCheckBox { id: enabledSwitch - enabled: !_requiresCalibration - onClicked: { - globals.activeVehicle.joystickEnabled = checked - globals.activeVehicle.saveJoystickSettings() - } + enabled: _activeJoystick ? _activeJoystick.calibrated : false + onClicked: globals.activeVehicle.joystickEnabled = checked Component.onCompleted: { checked = globals.activeVehicle.joystickEnabled } @@ -104,11 +96,9 @@ Item { QGCLabel { text: qsTr("RC Mode:") Layout.alignment: Qt.AlignVCenter - visible: !_buttonsOnly } Row { spacing: ScreenTools.defaultFontPixelWidth - visible: !_buttonsOnly QGCRadioButton { text: "1" checked: controller.transmitterMode === 1 @@ -151,7 +141,6 @@ Item { radius: ScreenTools.defaultFontPixelWidth * 0.5 width: axisGrid.width + (ScreenTools.defaultFontPixelWidth * 2) height: axisGrid.height + (ScreenTools.defaultFontPixelHeight * 2) - visible: !_buttonsOnly GridLayout { id: axisGrid columns: 2 diff --git a/src/VehicleSetup/SetupView.qml b/src/VehicleSetup/SetupView.qml index cd190b3..70946d1 100644 --- a/src/VehicleSetup/SetupView.qml +++ b/src/VehicleSetup/SetupView.qml @@ -260,16 +260,12 @@ Rectangle { id: joystickButton imageResource: "/qmlimages/Joystick.png" setupIndicator: true - setupComplete: _activeJoystick ? _activeJoystick.calibrated || _buttonsOnly : false + setupComplete: joystickManager.activeJoystick ? joystickManager.activeJoystick.calibrated : false exclusiveGroup: setupButtonGroup visible: _fullParameterVehicleAvailable && joystickManager.joysticks.length !== 0 - text: _forcedToButtonsOnly ? qsTr("Buttons") : qsTr("Joystick") + text: qsTr("Joystick") Layout.fillWidth: true onClicked: showPanel(this, "JoystickConfig.qml") - - property var _activeJoystick: joystickManager.activeJoystick - property bool _buttonsOnly: _activeJoystick ? _activeJoystick.axisCount == 0 : false - property bool _forcedToButtonsOnly: !QGroundControl.corePlugin.options.allowJoystickSelection && _buttonsOnly } Repeater { diff --git a/src/VideoManager/VideoManager.cc b/src/VideoManager/VideoManager.cc index fd6d90a..c181776 100644 --- a/src/VideoManager/VideoManager.cc +++ b/src/VideoManager/VideoManager.cc @@ -124,12 +124,10 @@ VideoManager::setToolbox(QGCToolbox *toolbox) }); connect(_videoReceiver[0], &VideoReceiver::onStartComplete, this, [this](VideoReceiver::STATUS status) { - qCDebug(VideoManagerLog) << "Video 0 Start complete, status: " << status; if (status == VideoReceiver::STATUS_OK) { _videoStarted[0] = true; if (_videoSink[0] != nullptr) { - qCDebug(VideoManagerLog) << "Video 0 start decoding"; - // It is absolutely ok to have video receiver active (streaming) and decoding not active + // It is absolytely ok to have video receiver active (streaming) and decoding not active // It should be handy for cases when you have many streams and want to show only some of them // NOTE that even if decoder did not start it is still possible to record video _videoReceiver[0]->startDecoding(_videoSink[0]); @@ -143,24 +141,17 @@ VideoManager::setToolbox(QGCToolbox *toolbox) } }); - connect(_videoReceiver[0], &VideoReceiver::onStopComplete, this, [this](VideoReceiver::STATUS status) { - qCDebug(VideoManagerLog) << "Video 0 Stop complete, status: " << status; + connect(_videoReceiver[0], &VideoReceiver::onStopComplete, this, [this](VideoReceiver::STATUS) { _videoStarted[0] = false; - if (status == VideoReceiver::STATUS_INVALID_URL) { - qCDebug(VideoManagerLog) << "Invalid video URL. Not restarting"; - } else { - _startReceiver(0); - } + _startReceiver(0); }); connect(_videoReceiver[0], &VideoReceiver::decodingChanged, this, [this](bool active){ - qCDebug(VideoManagerLog) << "Video 0 decoding changed, active: " << (active ? "yes" : "no"); _decoding = active; emit decodingChanged(); }); connect(_videoReceiver[0], &VideoReceiver::recordingChanged, this, [this](bool active){ - qCDebug(VideoManagerLog) << "Video 0 recording changed, active: " << (active ? "yes" : "no"); _recording = active; if (!active) { _subtitleWriter.stopCapturingTelemetry(); @@ -169,12 +160,10 @@ VideoManager::setToolbox(QGCToolbox *toolbox) }); connect(_videoReceiver[0], &VideoReceiver::recordingStarted, this, [this](){ - qCDebug(VideoManagerLog) << "Video 0 recording started"; _subtitleWriter.startCapturingTelemetry(_videoFile); }); connect(_videoReceiver[0], &VideoReceiver::videoSizeChanged, this, [this](QSize size){ - qCDebug(VideoManagerLog) << "Video 0 resized. New resolution: " << size.width() << "x" << size.height(); _videoSize = ((quint32)size.width() << 16) | (quint32)size.height(); emit videoSizeChanged(); }); @@ -470,28 +459,16 @@ void VideoManager::_updateUVC() { #ifndef QGC_DISABLE_UVC - QString oldUvcVideoSrcID = _uvcVideoSourceID; - if (!hasVideo() || isGStreamer()) { - _uvcVideoSourceID = ""; - } else { - QString videoSource = _videoSettings->videoSource()->rawValue().toString(); - QList cameras = QCameraInfo::availableCameras(); - for (const QCameraInfo &cameraInfo : cameras) { - if (cameraInfo.description() == videoSource) { - _uvcVideoSourceID = cameraInfo.deviceName(); - qCDebug(VideoManagerLog) - << "Found USB source:" << _uvcVideoSourceID << " Name:" << videoSource; - break; - } + QString videoSource = _videoSettings->videoSource()->rawValue().toString(); + QList cameras = QCameraInfo::availableCameras(); + for (const QCameraInfo &cameraInfo: cameras) { + if(cameraInfo.description() == videoSource) { + _videoSourceID = cameraInfo.deviceName(); + emit videoSourceIDChanged(); + qCDebug(VideoManagerLog) << "Found USB source:" << _videoSourceID << " Name:" << videoSource; + break; } } - - if (oldUvcVideoSrcID != _uvcVideoSourceID) { - qCDebug(VideoManagerLog) << "UVC changed from [" << oldUvcVideoSrcID << "] to [" << _uvcVideoSourceID << "]"; - emit uvcVideoSourceIDChanged(); - emit isUvcChanged(); - } - #endif } @@ -500,16 +477,10 @@ void VideoManager::_videoSourceChanged() { _updateUVC(); - _updateSettings(0); emit hasVideoChanged(); emit isGStreamerChanged(); - emit isUvcChanged(); emit isAutoStreamChanged(); - if (hasVideo()) { - _restartVideo(0); - } else { - stopVideo(); - } + _restartVideo(0); } //----------------------------------------------------------------------------- @@ -565,26 +536,12 @@ VideoManager::isGStreamer() videoSource == VideoSettings::videoSource3DRSolo || videoSource == VideoSettings::videoSourceParrotDiscovery || videoSource == VideoSettings::videoSourceYuneecMantisG || - videoSource == VideoSettings::videoSourceHerelinkAirUnit || - videoSource == VideoSettings::videoSourceHerelinkHotspot || autoStreamConfigured(); #else return false; #endif } -bool -VideoManager::isUvc() -{ -#ifndef QGC_DISABLE_UVC - auto isUvc = hasVideo() && !_uvcVideoSourceID.isEmpty(); - qCDebug(VideoManagerLog) << "Is Video source UVC: " << (isUvc ? "yes" : "no"); - return isUvc; -#else - return false; -#endif -} - //----------------------------------------------------------------------------- #ifndef QGC_DISABLE_UVC bool @@ -712,7 +669,11 @@ VideoManager::_updateSettings(unsigned id) settingsChanged |= _updateVideoUri(id, pTinfo->uri()); break; case VIDEO_STREAM_TYPE_RTPUDP: - settingsChanged |= _updateVideoUri(id, QStringLiteral("udp://0.0.0.0:%1").arg(pTinfo->uri())); + settingsChanged |= _updateVideoUri( + id, + pInfo->uri().contains("udp://") + ? pInfo->uri() // Specced case + : QStringLiteral("udp://0.0.0.0:%1").arg(pInfo->uri())); break; case VIDEO_STREAM_TYPE_MPEG_TS_H264: settingsChanged |= _updateVideoUri(id, QStringLiteral("mpegts://0.0.0.0:%1").arg(pTinfo->uri())); @@ -743,19 +704,6 @@ VideoManager::_updateSettings(unsigned id) settingsChanged |= _updateVideoUri(0, QStringLiteral("udp://0.0.0.0:8888")); else if (source == VideoSettings::videoSourceYuneecMantisG) settingsChanged |= _updateVideoUri(0, QStringLiteral("rtsp://192.168.42.1:554/live")); - else if (source == VideoSettings::videoSourceHerelinkAirUnit) - settingsChanged |= _updateVideoUri(0, QStringLiteral("rtsp://192.168.0.10:8554/H264Video")); - else if (source == VideoSettings::videoSourceHerelinkHotspot) - settingsChanged |= _updateVideoUri(0, QStringLiteral("rtsp://192.168.43.1:8554/fpv_stream")); - else if (source == VideoSettings::videoDisabled || source == VideoSettings::videoSourceNoVideo) - settingsChanged |= _updateVideoUri(0, ""); - else { - settingsChanged |= _updateVideoUri(0, ""); - if (!isUvc()) { - qCCritical(VideoManagerLog) - << "Video source URI \"" << source << "\" is not supported. Please add support!"; - } - } return settingsChanged; } @@ -807,9 +755,9 @@ VideoManager::_restartVideo(unsigned id) _updateSettings(id); bool newLowLatencyStreaming = _lowLatencyStreaming[id]; QString newUri = _videoUri[id]; - qCDebug(VideoManagerLog) << "New Video URI " << newUri; + // FIXME: AV: use _updateSettings() result to check if settings were changed - if (_videoStarted[id] && oldUri == newUri && oldLowLatencyStreaming == newLowLatencyStreaming) { + if (oldUri == newUri && oldLowLatencyStreaming == newLowLatencyStreaming && _videoStarted[id]) { qCDebug(VideoManagerLog) << "No sense to restart video streaming, skipped" << id; return; } @@ -837,11 +785,7 @@ void VideoManager::_startReceiver(unsigned id) { #if defined(QGC_GST_STREAMING) - const QString source = _videoSettings->videoSource()->rawValue().toString(); - const unsigned rtsptimeout = _videoSettings->rtspTimeout()->rawValue().toUInt(); - /* The gstreamer rtsp source will switch to tcp if udp is not available after 5 seconds. - So we should allow for some negotiation time for rtsp */ - const unsigned timeout = (source == VideoSettings::videoSourceRTSP ? rtsptimeout : 2 ); + const unsigned timeout = _videoSettings->rtspTimeout()->rawValue().toUInt(); if (id > 1) { qCDebug(VideoManagerLog) << "Unsupported receiver id" << id; diff --git a/src/VideoManager/VideoManager.h b/src/VideoManager/VideoManager.h index e936ba7..543b1af 100644 --- a/src/VideoManager/VideoManager.h +++ b/src/VideoManager/VideoManager.h @@ -38,9 +38,8 @@ public: Q_PROPERTY(bool hasVideo READ hasVideo NOTIFY hasVideoChanged) Q_PROPERTY(bool isGStreamer READ isGStreamer NOTIFY isGStreamerChanged) - Q_PROPERTY(bool isUvc READ isUvc NOTIFY isUvcChanged) Q_PROPERTY(bool isTaisync READ isTaisync WRITE setIsTaisync NOTIFY isTaisyncChanged) - Q_PROPERTY(QString uvcVideoSourceID READ uvcVideoSourceID NOTIFY uvcVideoSourceIDChanged) + Q_PROPERTY(QString videoSourceID READ videoSourceID NOTIFY videoSourceIDChanged) Q_PROPERTY(bool uvcEnabled READ uvcEnabled CONSTANT) Q_PROPERTY(bool fullScreen READ fullScreen WRITE setfullScreen NOTIFY fullScreenChanged) Q_PROPERTY(VideoReceiver* videoReceiver READ videoReceiver CONSTANT) @@ -59,10 +58,9 @@ public: virtual bool hasVideo (); virtual bool isGStreamer (); - virtual bool isUvc (); virtual bool isTaisync () { return _isTaisync; } virtual bool fullScreen () { return _fullScreen; } - virtual QString uvcVideoSourceID () { return _uvcVideoSourceID; } + virtual QString videoSourceID () { return _videoSourceID; } virtual double aspectRatio (); virtual double thermalAspectRatio (); virtual double hfov (); @@ -116,8 +114,7 @@ public: signals: void hasVideoChanged (); void isGStreamerChanged (); - void isUvcChanged (); - void uvcVideoSourceIDChanged (); + void videoSourceIDChanged (); void fullScreenChanged (); void isAutoStreamChanged (); void isTaisyncChanged (); @@ -173,7 +170,7 @@ protected: QAtomicInteger _recording = false; QAtomicInteger _videoSize = 0; VideoSettings* _videoSettings = nullptr; - QString _uvcVideoSourceID; + QString _videoSourceID; bool _fullScreen = false; Vehicle* _activeVehicle = nullptr; }; diff --git a/src/VideoReceiver/GStreamer.cc b/src/VideoReceiver/GStreamer.cc index 4fe2b10..0515d6a 100644 --- a/src/VideoReceiver/GStreamer.cc +++ b/src/VideoReceiver/GStreamer.cc @@ -136,12 +136,10 @@ GStreamer::blacklist(VideoSettings::VideoDecoderOptions option) case VideoSettings::ForceVideoDecoderDefault: break; case VideoSettings::ForceVideoDecoderSoftware: - for(auto name : {"avdec_h264", "avdec_h265"}) { - changeRank(name, GST_RANK_PRIMARY + 1); - } + changeRank("avdec_h264", GST_RANK_PRIMARY + 1); break; case VideoSettings::ForceVideoDecoderVAAPI: - for(auto name : {"vaapimpeg2dec", "vaapimpeg4dec", "vaapih263dec", "vaapih264dec", "vaapih265dec", "vaapivc1dec"}) { + for(auto name : {"vaapimpeg2dec", "vaapimpeg4dec", "vaapih263dec", "vaapih264dec", "vaapivc1dec"}) { changeRank(name, GST_RANK_PRIMARY + 1); } break; diff --git a/src/VideoReceiver/GstVideoReceiver.cc b/src/VideoReceiver/GstVideoReceiver.cc index 620706c..479b6bd 100644 --- a/src/VideoReceiver/GstVideoReceiver.cc +++ b/src/VideoReceiver/GstVideoReceiver.cc @@ -63,7 +63,6 @@ GstVideoReceiver::GstVideoReceiver(QObject* parent) GstVideoReceiver::~GstVideoReceiver(void) { - stop(); _slotHandler.shutdown(); } @@ -123,7 +122,7 @@ GstVideoReceiver::start(const QString& uri, unsigned timeout, int buffer) _lastSourceFrameTime = 0; - _teeProbeId = gst_pad_add_probe(pad, GST_PAD_PROBE_TYPE_BUFFER, _teeProbe, this, nullptr); + gst_pad_add_probe(pad, GST_PAD_PROBE_TYPE_BUFFER, _teeProbe, this, nullptr); gst_object_unref(pad); pad = nullptr; @@ -288,15 +287,6 @@ GstVideoReceiver::stop(void) qCDebug(VideoReceiverLog) << "Stopping" << _uri; - if (_teeProbeId != 0) { - GstPad* sinkpad; - if ((sinkpad = gst_element_get_static_pad(_tee, "sink")) != nullptr) { - gst_pad_remove_probe(sinkpad, _teeProbeId); - sinkpad = nullptr; - } - _teeProbeId = 0; - } - if (_pipeline != nullptr) { GstBus* bus; @@ -1361,7 +1351,6 @@ GstVideoReceiver::_onBusMessage(GstBus* bus, GstMessage* msg, gpointer data) gst_message_parse_error(msg, &error, &debug); if (debug != nullptr) { - qCDebug(VideoReceiverLog) << "GStreamer debug: " << debug; g_free(debug); debug = nullptr; } diff --git a/src/VideoReceiver/GstVideoReceiver.h b/src/VideoReceiver/GstVideoReceiver.h index 44aa4f1..db63de8 100644 --- a/src/VideoReceiver/GstVideoReceiver.h +++ b/src/VideoReceiver/GstVideoReceiver.h @@ -148,9 +148,7 @@ protected: qint64 _lastSourceFrameTime; qint64 _lastVideoFrameTime; bool _resetVideoSink; - gulong _videoSinkProbeId = 0; - - gulong _teeProbeId = 0; + gulong _videoSinkProbeId; QTimer _watchdogTimer; diff --git a/src/VideoReceiver/README.md b/src/VideoReceiver/README.md index 06fea54..db79152 100644 --- a/src/VideoReceiver/README.md +++ b/src/VideoReceiver/README.md @@ -68,11 +68,11 @@ The build system is setup to use pkgconfig and it will find the necessary header ### Mac OS -Download the gstreamer framework from here: http://gstreamer.freedesktop.org/data/pkg/osx. Supported version is 1.18.6. QGC may work with newer version, but it is untested. +Download the gstreamer framework from here: http://gstreamer.freedesktop.org/data/pkg/osx. Supported version is 1.18.1. QGC may work with newer version, but it is untested. You need two packages: -- [gstreamer-1.0-devel-1.18.6-x86_64.pkg](https://gstreamer.freedesktop.org/data/pkg/osx/1.18.6/gstreamer-1.0-devel-1.18.6-x86_64.pkg) -- [gstreamer-1.0-1.18.6-x86_64.pkg](https://gstreamer.freedesktop.org/data/pkg/osx/1.18.6/gstreamer-1.0-1.18.6-x86_64.pkg) +- [gstreamer-1.0-devel-1.18.1-x86_64.pkg](https://gstreamer.freedesktop.org/data/pkg/osx/1.18.1/gstreamer-1.0-devel-1.18.1-x86_64.pkg) +- [gstreamer-1.0-1.18.1-x86_64.pkg](https://gstreamer.freedesktop.org/data/pkg/osx/1.18.1/gstreamer-1.0-1.18.1-x86_64.pkg) The installer places them under /Library/Frameworks/GStreamer.framework, which is where the QGC build system will look for it. That's all that is needed. When you build QGC and it finds the gstreamer framework, it automatically builds video streaming support. diff --git a/src/VideoReceiver/VideoReceiver.pri b/src/VideoReceiver/VideoReceiver.pri index 4d51aa9..7dc6245 100644 --- a/src/VideoReceiver/VideoReceiver.pri +++ b/src/VideoReceiver/VideoReceiver.pri @@ -25,7 +25,9 @@ LinuxBuild { CONFIG += VideoEnabled INCLUDEPATH += $$GST_ROOT/Headers LIBS += -F/Library/Frameworks -framework GStreamer - QMAKE_LIBDIR += $$GST_ROOT/Versions/1.0/lib/ + QMAKE_LFLAGS += -Wl,-rpath,@executable_path/../Frameworks/GStreamer.framework/Versions/1.0/lib + QMAKE_LFLAGS += -Wl,-rpath,@executable_path/../Frameworks/GStreamer.framework/Versions/1.0 + QMAKE_LFLAGS += -Wl,-rpath,/Library/Frameworks/GStreamer.framework/Versions/1.0 } } else:iOSBuild { #- gstreamer framework installed by the gstreamer iOS SDK installer (default to home directory) @@ -39,11 +41,6 @@ LinuxBuild { #- gstreamer installed by default under c:/gstreamer GST_ROOT = c:/gstreamer/1.0/msvc_x86_64 - !exists($$GST_ROOT) { - # In GitHub actions windows runner installation is on D drive, so try there as well - GST_ROOT = d:/gstreamer/1.0/msvc_x86_64 - } - exists($$GST_ROOT) { CONFIG += VideoEnabled diff --git a/src/VideoReceiver/gstqgcvideosinkbin.c b/src/VideoReceiver/gstqgcvideosinkbin.c index ed962e5..6ed2db4 100644 --- a/src/VideoReceiver/gstqgcvideosinkbin.c +++ b/src/VideoReceiver/gstqgcvideosinkbin.c @@ -16,7 +16,6 @@ #include #include -#include GST_DEBUG_CATEGORY_STATIC(gst_qgc_video_sink_bin_debug); #define GST_CAT_DEFAULT gst_qgc_video_sink_bin_debug @@ -65,12 +64,12 @@ enum { static GstBinClass *parent_class; -static void _vsb_init(GTypeInstance *instanceData, void *vsbVoid); +static void _vsb_init(GstQgcVideoSinkBin *vsb); static void _vsb_dispose(GObject *object); static void _vsb_get_property(GObject *object, guint prop_id, GValue *value, GParamSpec *pspec); static void _vsb_set_property(GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec); static GType _vsb_get_type(void); -static void _vsb_class_init(void *klass, void *classData); +static void _vsb_class_init(GstQgcVideoSinkBinClass *klass); static gboolean _vsb_sink_pad_query(GstPad* pad, GstObject* parent, GstQuery* query) @@ -112,13 +111,8 @@ _vsb_sink_pad_query(GstPad* pad, GstObject* parent, GstQuery* query) } static void -_vsb_init(GTypeInstance *instanceData, void *vsbVoid) +_vsb_init(GstQgcVideoSinkBin *vsb) { - Q_UNUSED(vsbVoid); - - GstQgcVideoSinkBin *vsb; - vsb = (GstQgcVideoSinkBin *)instanceData; - gboolean initialized = FALSE; GstElement* glcolorconvert = NULL; GstPad* pad = NULL; @@ -332,10 +326,8 @@ _vsb_get_type(void) } static void -_vsb_class_init(void *klass, void *classData) +_vsb_class_init(GstQgcVideoSinkBinClass *klass) { - Q_UNUSED(classData); - GObjectClass *gobject_klass; GstElementClass *gstelement_klass; diff --git a/src/api/QGCCorePlugin.cc b/src/api/QGCCorePlugin.cc index 318c7a9..4bc51f7 100644 --- a/src/api/QGCCorePlugin.cc +++ b/src/api/QGCCorePlugin.cc @@ -54,6 +54,10 @@ public: #if defined(QGC_GST_MICROHARD_ENABLED) if(pMicrohard) delete pMicrohard; +#endif +#if defined(QGC_AIRMAP_ENABLED) + if(pAirmap) + delete pAirmap; #endif if(pMAVLink) delete pMAVLink; @@ -67,8 +71,6 @@ public: if(pQmlTest) delete pQmlTest; #endif - if(pRemoteID) - delete pRemoteID; if(defaultOptions) delete defaultOptions; } @@ -81,6 +83,9 @@ public: #endif #if defined(QGC_GST_MICROHARD_ENABLED) QmlComponentInfo* pMicrohard = nullptr; +#endif +#if defined(QGC_AIRMAP_ENABLED) + QmlComponentInfo* pAirmap = nullptr; #endif QmlComponentInfo* pMAVLink = nullptr; QmlComponentInfo* pConsole = nullptr; @@ -90,7 +95,6 @@ public: QmlComponentInfo* pDebug = nullptr; QmlComponentInfo* pQmlTest = nullptr; #endif - QmlComponentInfo* pRemoteID = nullptr; QGCOptions* defaultOptions = nullptr; QVariantList settingsList; @@ -150,14 +154,17 @@ QVariantList &QGCCorePlugin::settingsPages() QUrl::fromUserInput("qrc:/qml/MicrohardSettings.qml"), QUrl::fromUserInput("")); _p->settingsList.append(QVariant::fromValue(reinterpret_cast(_p->pMicrohard))); +#endif +#if defined(QGC_AIRMAP_ENABLED) + _p->pAirmap = new QmlComponentInfo(tr("AirMap"), + QUrl::fromUserInput("qrc:/qml/AirmapSettings.qml"), + QUrl::fromUserInput("")); + _p->settingsList.append(QVariant::fromValue(reinterpret_cast(_p->pAirmap))); #endif _p->pMAVLink = new QmlComponentInfo(tr("MAVLink"), QUrl::fromUserInput("qrc:/qml/MavlinkSettings.qml"), QUrl::fromUserInput("qrc:/res/waves.svg")); _p->settingsList.append(QVariant::fromValue(reinterpret_cast(_p->pMAVLink))); - _p->pRemoteID = new QmlComponentInfo(tr("Remote ID"), - QUrl::fromUserInput("qrc:/qml/RemoteIDSettings.qml")); - _p->settingsList.append(QVariant::fromValue(reinterpret_cast(_p->pRemoteID))); _p->pConsole = new QmlComponentInfo(tr("Console"), QUrl::fromUserInput("qrc:/qml/QGroundControl/Controls/AppMessages.qml")); _p->settingsList.append(QVariant::fromValue(reinterpret_cast(_p->pConsole))); @@ -248,13 +255,6 @@ bool QGCCorePlugin::adjustSettingMetaData(const QString& settingsGroup, FactMeta return true; } #endif - -#ifndef __android__ - if (metaData.name() == AppSettings::androidSaveToSDCardName) { - // This only shows on android builds - return false; - } -#endif } return true; // Show setting in ui diff --git a/src/api/QGCOptions.h b/src/api/QGCOptions.h index 7b5926d..43f0116 100644 --- a/src/api/QGCOptions.h +++ b/src/api/QGCOptions.h @@ -80,7 +80,6 @@ public: Q_PROPERTY(bool showMavlinkLogOptions READ showMavlinkLogOptions CONSTANT) Q_PROPERTY(bool enableSaveMainWindowPosition READ enableSaveMainWindowPosition CONSTANT) Q_PROPERTY(QStringList surveyBuiltInPresetNames READ surveyBuiltInPresetNames CONSTANT) - Q_PROPERTY(bool allowJoystickSelection READ allowJoystickSelection NOTIFY allowJoystickSelectionChanged) Q_PROPERTY(QGCFlyViewOptions* flyView READ flyViewOptions CONSTANT) @@ -126,7 +125,6 @@ public: virtual bool disableVehicleConnection () const { return false; } ///< true: vehicle connection is disabled virtual bool checkFirmwareVersion () const { return true; } virtual bool showMavlinkLogOptions () const { return true; } - virtual bool allowJoystickSelection () const { return true; } ///< false: custom build has automatically enabled a specific joystick /// Desktop builds save the main application size and position on close (and restore it on open) virtual bool enableSaveMainWindowPosition () const { return true; } virtual QStringList surveyBuiltInPresetNames () const { return QStringList(); } // Built in presets cannot be deleted @@ -157,7 +155,6 @@ signals: void showFirmwareUpgradeChanged (bool show); void missionWaypointsOnlyChanged (bool missionWaypointsOnly); void multiVehicleEnabledChanged (bool multiVehicleEnabled); - void allowJoystickSelectionChanged (bool allow); void showOfflineMapExportChanged (); void showOfflineMapImportChanged (); void showMissionAbsoluteAltitudeChanged (); diff --git a/src/comm/LinkManager.cc b/src/comm/LinkManager.cc index 864ef8c..afa440f 100644 --- a/src/comm/LinkManager.cc +++ b/src/comm/LinkManager.cc @@ -46,9 +46,8 @@ QGC_LOGGING_CATEGORY(LinkManagerLog, "LinkManagerLog") QGC_LOGGING_CATEGORY(LinkManagerVerboseLog, "LinkManagerVerboseLog") -const char* LinkManager::_defaultUDPLinkName = "UDP Link (AutoConnect)"; -const char* LinkManager::_mavlinkForwardingLinkName = "MAVLink Forwarding Link"; -const char* LinkManager::_mavlinkForwardingSupportLinkName = "MAVLink Support Forwarding Link"; +const char* LinkManager::_defaultUDPLinkName = "UDP Link (AutoConnect)"; +const char* LinkManager::_mavlinkForwardingLinkName = "MAVLink Forwarding Link"; const int LinkManager::_autoconnectUpdateTimerMSecs = 1000; #ifdef Q_OS_WIN @@ -161,9 +160,6 @@ bool LinkManager::createConnectedLink(SharedLinkConfigurationPtr& config, bool i _mavlinkProtocol->setVersion(_mavlinkProtocol->getCurrentVersion()); if (!link->_connect()) { - link->_freeMavlinkChannel(); - _rgLinks.removeAt(_rgLinks.indexOf(link)); - config->setLink(nullptr); return false; } @@ -175,21 +171,10 @@ bool LinkManager::createConnectedLink(SharedLinkConfigurationPtr& config, bool i SharedLinkInterfacePtr LinkManager::mavlinkForwardingLink() { - for (auto& link : _rgLinks) { - SharedLinkConfigurationPtr linkConfig = link->linkConfiguration(); + for (int i = 0; i < _rgLinks.count(); i++) { + SharedLinkConfigurationPtr linkConfig = _rgLinks[i]->linkConfiguration(); if (linkConfig->type() == LinkConfiguration::TypeUdp && linkConfig->name() == _mavlinkForwardingLinkName) { - return link; - } - } - - return nullptr; -} - -SharedLinkInterfacePtr LinkManager::mavlinkForwardingSupportLink() -{ - for (auto& link : _rgLinks) { - SharedLinkConfigurationPtr linkConfig = link->linkConfiguration(); - if (linkConfig->type() == LinkConfiguration::TypeUdp && linkConfig->name() == _mavlinkForwardingSupportLinkName) { + SharedLinkInterfacePtr& link = _rgLinks[i]; return link; } } @@ -422,8 +407,16 @@ void LinkManager::_addMAVLinkForwardingLink(void) } if (!foundMAVLinkForwardingLink) { + qCDebug(LinkManagerLog) << "New MAVLink forwarding port added"; + + UDPConfiguration* udpConfig = new UDPConfiguration(_mavlinkForwardingLinkName); + udpConfig->setDynamic(true); + QString hostName = _toolbox->settingsManager()->appSettings()->forwardMavlinkHostName()->rawValue().toString(); - _createDynamicForwardLink(_mavlinkForwardingLinkName, hostName); + udpConfig->addHost(hostName); + + SharedLinkConfigurationPtr config = addConfiguration(udpConfig); + createConnectedLink(config); } } } @@ -467,7 +460,6 @@ void LinkManager::_addZeroConfAutoConnectLink(void) if(service.type().startsWith("_mavlink._udp")) { static QString udpName("ZeroConf UDP"); if (checkIfConnectionLinkExist(LinkConfiguration::TypeUdp, udpName)) { - qCDebug(LinkManagerVerboseLog) << "Connection already exist"; return; } @@ -483,12 +475,12 @@ void LinkManager::_addZeroConfAutoConnectLink(void) if(service.type().startsWith("_mavlink._tcp")) { static QString tcpName("ZeroConf TCP"); if (checkIfConnectionLinkExist(LinkConfiguration::TypeTcp, tcpName)) { - qCDebug(LinkManagerVerboseLog) << "Connection already exist"; return; } auto link = new TCPConfiguration(tcpName); - link->setHost(hostname); + QHostAddress address(hostname); + link->setAddress(address); link->setPort(service.port()); link->setAutoConnect(true); link->setDynamic(true); @@ -713,8 +705,8 @@ void LinkManager::_updateSerialPorts() _commPortList.clear(); _commPortDisplayList.clear(); #ifndef NO_SERIAL_LINK - QList portList = QGCSerialPortInfo::availablePorts(); - for (const QGCSerialPortInfo &info: portList) + QList portList = QSerialPortInfo::availablePorts(); + for (const QSerialPortInfo &info: portList) { QString port = info.systemLocation().trimmed(); _commPortList += port; @@ -816,14 +808,6 @@ void LinkManager::removeConfiguration(LinkConfiguration* config) } } -void LinkManager::createMavlinkForwardingSupportLink(void) -{ - QString hostName = _toolbox->settingsManager()->appSettings()->forwardMavlinkAPMSupportHostName()->rawValue().toString(); - _createDynamicForwardLink(_mavlinkForwardingSupportLinkName, hostName); - _mavlinkSupportForwardingEnabled = true; - emit mavlinkSupportForwardingEnabledChanged(); -} - void LinkManager::_removeConfiguration(LinkConfiguration* config) { _qmlConfigurations.removeOne(config); @@ -920,16 +904,3 @@ bool LinkManager::_isSerialPortConnected(void) #endif return false; } - -void LinkManager::_createDynamicForwardLink(const char* linkName, QString hostName) -{ - UDPConfiguration* udpConfig = new UDPConfiguration(linkName); - udpConfig->setDynamic(true); - - udpConfig->addHost(hostName); - - SharedLinkConfigurationPtr config = addConfiguration(udpConfig); - createConnectedLink(config); - - qCDebug(LinkManagerLog) << "New dynamic MAVLink forwarding port added: " << linkName << " hostname: " << hostName; -} \ No newline at end of file diff --git a/src/comm/LinkManager.h b/src/comm/LinkManager.h index 1c24584..7895a03 100644 --- a/src/comm/LinkManager.h +++ b/src/comm/LinkManager.h @@ -52,22 +52,20 @@ public: LinkManager(QGCApplication* app, QGCToolbox* toolbox); ~LinkManager(); - Q_PROPERTY(bool isBluetoothAvailable READ isBluetoothAvailable CONSTANT) - Q_PROPERTY(QmlObjectListModel* linkConfigurations READ _qmlLinkConfigurations CONSTANT) - Q_PROPERTY(QStringList linkTypeStrings READ linkTypeStrings CONSTANT) - Q_PROPERTY(QStringList serialBaudRates READ serialBaudRates CONSTANT) - Q_PROPERTY(QStringList serialPortStrings READ serialPortStrings NOTIFY commPortStringsChanged) - Q_PROPERTY(QStringList serialPorts READ serialPorts NOTIFY commPortsChanged) - Q_PROPERTY(bool mavlinkSupportForwardingEnabled READ mavlinkSupportForwardingEnabled NOTIFY mavlinkSupportForwardingEnabledChanged) + Q_PROPERTY(bool isBluetoothAvailable READ isBluetoothAvailable CONSTANT) + Q_PROPERTY(QmlObjectListModel* linkConfigurations READ _qmlLinkConfigurations CONSTANT) + Q_PROPERTY(QStringList linkTypeStrings READ linkTypeStrings CONSTANT) + Q_PROPERTY(QStringList serialBaudRates READ serialBaudRates CONSTANT) + Q_PROPERTY(QStringList serialPortStrings READ serialPortStrings NOTIFY commPortStringsChanged) + Q_PROPERTY(QStringList serialPorts READ serialPorts NOTIFY commPortsChanged) /// Create/Edit Link Configuration - Q_INVOKABLE LinkConfiguration* createConfiguration (int type, const QString& name); - Q_INVOKABLE LinkConfiguration* startConfigurationEditing (LinkConfiguration* config); - Q_INVOKABLE void cancelConfigurationEditing (LinkConfiguration* config) { delete config; } - Q_INVOKABLE bool endConfigurationEditing (LinkConfiguration* config, LinkConfiguration* editedConfig); - Q_INVOKABLE bool endCreateConfiguration (LinkConfiguration* config); - Q_INVOKABLE void removeConfiguration (LinkConfiguration* config); - Q_INVOKABLE void createMavlinkForwardingSupportLink (void); + Q_INVOKABLE LinkConfiguration* createConfiguration (int type, const QString& name); + Q_INVOKABLE LinkConfiguration* startConfigurationEditing (LinkConfiguration* config); + Q_INVOKABLE void cancelConfigurationEditing (LinkConfiguration* config) { delete config; } + Q_INVOKABLE bool endConfigurationEditing (LinkConfiguration* config, LinkConfiguration* editedConfig); + Q_INVOKABLE bool endCreateConfiguration (LinkConfiguration* config); + Q_INVOKABLE void removeConfiguration (LinkConfiguration* config); // Called to signal app shutdown. Disconnects all links while turning off auto-connect. Q_INVOKABLE void shutdown(void); @@ -78,12 +76,11 @@ public: bool isBluetoothAvailable (void); - QList links (void) { return _rgLinks; } - QStringList linkTypeStrings (void) const; - QStringList serialBaudRates (void); - QStringList serialPortStrings (void); - QStringList serialPorts (void); - bool mavlinkSupportForwardingEnabled (void) { return _mavlinkSupportForwardingEnabled; } + QList links (void) { return _rgLinks; } + QStringList linkTypeStrings (void) const; + QStringList serialBaudRates (void); + QStringList serialPortStrings (void); + QStringList serialPorts (void); void loadLinkConfigurationList(); void saveLinkConfigurationList(); @@ -107,9 +104,6 @@ public: /// Returns pointer to the mavlink forwarding link, or nullptr if it does not exist SharedLinkInterfacePtr mavlinkForwardingLink(); - /// Returns pointer to the mavlink support forwarding link, or nullptr if it does not exist - SharedLinkInterfacePtr mavlinkForwardingSupportLink(); - void disconnectAll(void); #ifdef QT_DEBUG @@ -142,7 +136,6 @@ public: signals: void commPortStringsChanged(); void commPortsChanged(); - void mavlinkSupportForwardingEnabledChanged(); private slots: void _linkDisconnected (void); @@ -157,7 +150,6 @@ private: void _addZeroConfAutoConnectLink (void); void _addMAVLinkForwardingLink (void); bool _isSerialPortConnected (void); - void _createDynamicForwardLink (const char* linkName, QString hostName); #ifndef NO_SERIAL_LINK bool _portAlreadyConnected (const QString& portName); @@ -198,10 +190,8 @@ private: static const char* _defaultUDPLinkName; static const char* _mavlinkForwardingLinkName; - static const char* _mavlinkForwardingSupportLinkName; static const int _autoconnectUpdateTimerMSecs; static const int _autoconnectConnectDelayMSecs; - bool _mavlinkSupportForwardingEnabled = false; }; diff --git a/src/comm/MAVLinkProtocol.cc b/src/comm/MAVLinkProtocol.cc index 93f17ba..6daef39 100644 --- a/src/comm/MAVLinkProtocol.cc +++ b/src/comm/MAVLinkProtocol.cc @@ -272,18 +272,6 @@ void MAVLinkProtocol::receiveBytes(LinkInterface* link, QByteArray b) } } - // MAVLink forwarding support - bool forwardingSupportEnabled = _linkMgr->mavlinkSupportForwardingEnabled(); - if (forwardingSupportEnabled) { - SharedLinkInterfacePtr forwardingSupportLink = _linkMgr->mavlinkForwardingSupportLink(); - - if (forwardingSupportLink) { - uint8_t buf[MAVLINK_MAX_PACKET_LEN]; - int len = mavlink_msg_to_send_buffer(buf, &_message); - forwardingSupportLink->writeBytesThreadSafe((const char*)buf, len); - } - } - //----------------------------------------------------------------- // Log data if (!_logSuspendError && !_logSuspendReplay && _tempLogFile.isOpen()) { diff --git a/src/comm/MockLink.cc b/src/comm/MockLink.cc index 025662f..1659c21 100644 --- a/src/comm/MockLink.cc +++ b/src/comm/MockLink.cc @@ -55,9 +55,6 @@ constexpr MAV_CMD MockLink::MAV_CMD_MOCKLINK_SECOND_ATTEMPT_RESULT_ACCEPTED; constexpr MAV_CMD MockLink::MAV_CMD_MOCKLINK_SECOND_ATTEMPT_RESULT_FAILED; constexpr MAV_CMD MockLink::MAV_CMD_MOCKLINK_NO_RESPONSE; constexpr MAV_CMD MockLink::MAV_CMD_MOCKLINK_NO_RESPONSE_NO_RETRY; -constexpr MAV_CMD MockLink::MAV_CMD_MOCKLINK_RESULT_IN_PROGRESS_ACCEPTED; -constexpr MAV_CMD MockLink::MAV_CMD_MOCKLINK_RESULT_IN_PROGRESS_FAILED; -constexpr MAV_CMD MockLink::MAV_CMD_MOCKLINK_RESULT_IN_PROGRESS_NO_ACK; // The LinkManager is only forward declared in the header, so a static_assert is here instead to ensure we update if the value changes. static_assert(LinkManager::invalidMavlinkChannel() == std::numeric_limits::max(), "update MockLink::_mavlinkAuxChannel"); @@ -202,23 +199,15 @@ void MockLink::run(void) QTimer timer1HzTasks; QTimer timer10HzTasks; QTimer timer500HzTasks; - QTimer timerStatusText; - QObject::connect(&timer1HzTasks, &QTimer::timeout, this, &MockLink::_run1HzTasks); - QObject::connect(&timer10HzTasks, &QTimer::timeout, this, &MockLink::_run10HzTasks); + QObject::connect(&timer1HzTasks, &QTimer::timeout, this, &MockLink::_run1HzTasks); + QObject::connect(&timer10HzTasks, &QTimer::timeout, this, &MockLink::_run10HzTasks); QObject::connect(&timer500HzTasks, &QTimer::timeout, this, &MockLink::_run500HzTasks); - QObject::connect(&timerStatusText, &QTimer::timeout, this, &MockLink::_sendStatusTextMessages); timer1HzTasks.start(1000); timer10HzTasks.start(100); timer500HzTasks.start(2); - // Wait a little bit for the ui to finish loading up before sending out status text messages - if (_sendStatusText) { - timerStatusText.setSingleShot(true); - timerStatusText.start(10000); - } - // Send first set right away _run1HzTasks(); _run10HzTasks(); @@ -253,6 +242,10 @@ void MockLink::_run1HzTasks(void) } else { _sendHomePosition(); } + if (_sendStatusText) { + _sendStatusText = false; + _sendStatusTextMessages(); + } } } } @@ -434,7 +427,7 @@ void MockLink::_sendSysStatus(void) 4200 * 4, // voltage_battery 8000, // current_battery _battery1PctRemaining, // battery_remaining - 0,0,0,0,0,0,0,0,0); + 0,0,0,0,0,0); respondWithMavlinkMessage(msg); } @@ -1055,53 +1048,6 @@ void MockLink::_handleFTP(const mavlink_message_t& msg) _mockLinkFTP->mavlinkMessageReceived(msg); } -void MockLink::_handleInProgressCommandLong(const mavlink_command_long_t& request) -{ - uint8_t commandResult = MAV_RESULT_UNSUPPORTED; - - switch (request.command) { - case MockLink::MAV_CMD_MOCKLINK_RESULT_IN_PROGRESS_ACCEPTED: - // Test command which sends in progress messages and then acceptance ack - commandResult = MAV_RESULT_ACCEPTED; - break; - case MockLink::MAV_CMD_MOCKLINK_RESULT_IN_PROGRESS_FAILED: - // Test command which sends in progress messages and then failure ack - commandResult = MAV_RESULT_FAILED; - break; - case MockLink::MAV_CMD_MOCKLINK_RESULT_IN_PROGRESS_NO_ACK: - // Test command which sends in progress messages and then never sends final result ack - break; - } - - mavlink_message_t commandAck; - - mavlink_msg_command_ack_pack_chan(_vehicleSystemId, - _vehicleComponentId, - mavlinkChannel(), - &commandAck, - request.command, - MAV_RESULT_IN_PROGRESS, - 1, // progress - 0, // result_param2 - 0, // target_system - 0); // target_component - respondWithMavlinkMessage(commandAck); - - if (request.command != MockLink::MAV_CMD_MOCKLINK_RESULT_IN_PROGRESS_NO_ACK) { - mavlink_msg_command_ack_pack_chan(_vehicleSystemId, - _vehicleComponentId, - mavlinkChannel(), - &commandAck, - request.command, - commandResult, - 0, // progress - 0, // result_param2 - 0, // target_system - 0); // target_component - respondWithMavlinkMessage(commandAck); - } -} - void MockLink::_handleCommandLong(const mavlink_message_t& msg) { static bool firstCmdUser3 = true; @@ -1113,7 +1059,7 @@ void MockLink::_handleCommandLong(const mavlink_message_t& msg) mavlink_msg_command_long_decode(&msg, &request); - _receivedMavCommandCountMap[static_cast(request.command)]++; + _sendMavCommandCountMap[static_cast(request.command)]++; switch (request.command) { case MAV_CMD_COMPONENT_ARM_DISARM: @@ -1161,7 +1107,7 @@ void MockLink::_handleCommandLong(const mavlink_message_t& msg) commandResult = MAV_RESULT_FAILED; break; case MAV_CMD_MOCKLINK_SECOND_ATTEMPT_RESULT_ACCEPTED: - // Test command which does not respond to first request and returns MAV_RESULT_ACCEPTED on second attempt + // Test command which returns MAV_RESULT_ACCEPTED on second attempt if (firstCmdUser3) { firstCmdUser3 = false; return; @@ -1171,7 +1117,7 @@ void MockLink::_handleCommandLong(const mavlink_message_t& msg) } break; case MAV_CMD_MOCKLINK_SECOND_ATTEMPT_RESULT_FAILED: - // Test command which does not respond to first request and returns MAV_RESULT_FAILED on second attempt + // Test command which returns MAV_RESULT_FAILED on second attempt if (firstCmdUser4) { firstCmdUser4 = false; return; @@ -1182,12 +1128,7 @@ void MockLink::_handleCommandLong(const mavlink_message_t& msg) break; case MAV_CMD_MOCKLINK_NO_RESPONSE: case MAV_CMD_MOCKLINK_NO_RESPONSE_NO_RETRY: - // Test command which never responds - return; - case MockLink::MAV_CMD_MOCKLINK_RESULT_IN_PROGRESS_ACCEPTED: - case MockLink::MAV_CMD_MOCKLINK_RESULT_IN_PROGRESS_FAILED: - case MockLink::MAV_CMD_MOCKLINK_RESULT_IN_PROGRESS_NO_ACK: - _handleInProgressCommandLong(request); + // No response return; } @@ -1740,7 +1681,7 @@ bool MockLink::_handleRequestMessage(const mavlink_command_long_t& request, bool } return true; - case MAVLINK_MSG_ID_COMPONENT_METADATA: + case MAVLINK_MSG_ID_COMPONENT_INFORMATION: if (_firmwareType == MAV_AUTOPILOT_PX4) { _sendGeneralMetaData(); return true; @@ -1777,18 +1718,21 @@ void MockLink::_sendGeneralMetaData(void) { mavlink_message_t responseMsg; #if 1 - char metaDataURI[MAVLINK_MSG_COMPONENT_METADATA_FIELD_URI_LEN] = "mftp://[;comp=1]general.json"; + char metaDataURI[MAVLINK_MSG_COMPONENT_INFORMATION_FIELD_GENERAL_METADATA_URI_LEN] = "mftp://[;comp=1]general.json"; #else - char metaDataURI[MAVLINK_MSG_COMPONENT_METADATA_FIELD_URI_LEN] = "https://bit.ly/31nm0fs"; + char metaDataURI[MAVLINK_MSG_COMPONENT_INFORMATION_FIELD_GENERAL_METADATA_URI_LEN] = "https://bit.ly/31nm0fs"; #endif + char peripheralsMetaDataURI[MAVLINK_MSG_COMPONENT_INFORMATION_FIELD_PERIPHERALS_METADATA_URI_LEN] = ""; - mavlink_msg_component_metadata_pack_chan(_vehicleSystemId, - _vehicleComponentId, - mavlinkChannel(), - &responseMsg, - 0, // time_boot_ms - 100, // general_metadata_file_crc - metaDataURI); + mavlink_msg_component_information_pack_chan(_vehicleSystemId, + _vehicleComponentId, + mavlinkChannel(), + &responseMsg, + 0, // time_boot_ms + 100, // general_metadata_file_crc + metaDataURI, + 0, // peripherals_metadata_file_crc + peripheralsMetaDataURI); respondWithMavlinkMessage(responseMsg); } diff --git a/src/comm/MockLink.h b/src/comm/MockLink.h index dca13e9..a729fb0 100644 --- a/src/comm/MockLink.h +++ b/src/comm/MockLink.h @@ -162,19 +162,16 @@ public: static MockLink* startAPMArduSubMockLink (bool sendStatusText, MockConfiguration::FailureMode_t failureMode = MockConfiguration::FailNone); static MockLink* startAPMArduRoverMockLink (bool sendStatusText, MockConfiguration::FailureMode_t failureMode = MockConfiguration::FailNone); - // Special commands for testing Vehicle::sendMavCommandWithHandler + // Special commands for testing COMMAND_LONG handlers. By default all commands except for MAV_CMD_MOCKLINK_NO_RESPONSE_NO_RETRY should retry. static constexpr MAV_CMD MAV_CMD_MOCKLINK_ALWAYS_RESULT_ACCEPTED = MAV_CMD_USER_1; static constexpr MAV_CMD MAV_CMD_MOCKLINK_ALWAYS_RESULT_FAILED = MAV_CMD_USER_2; static constexpr MAV_CMD MAV_CMD_MOCKLINK_SECOND_ATTEMPT_RESULT_ACCEPTED = MAV_CMD_USER_3; static constexpr MAV_CMD MAV_CMD_MOCKLINK_SECOND_ATTEMPT_RESULT_FAILED = MAV_CMD_USER_4; static constexpr MAV_CMD MAV_CMD_MOCKLINK_NO_RESPONSE = MAV_CMD_USER_5; static constexpr MAV_CMD MAV_CMD_MOCKLINK_NO_RESPONSE_NO_RETRY = static_cast(MAV_CMD_USER_5 + 1); - static constexpr MAV_CMD MAV_CMD_MOCKLINK_RESULT_IN_PROGRESS_ACCEPTED = static_cast(MAV_CMD_USER_5 + 2); - static constexpr MAV_CMD MAV_CMD_MOCKLINK_RESULT_IN_PROGRESS_FAILED = static_cast(MAV_CMD_USER_5 + 3); - static constexpr MAV_CMD MAV_CMD_MOCKLINK_RESULT_IN_PROGRESS_NO_ACK = static_cast(MAV_CMD_USER_5 + 4); - void clearReceivedMavCommandCounts(void) { _receivedMavCommandCountMap.clear(); } - int receivedMavCommandCount(MAV_CMD command) { return _receivedMavCommandCountMap[command]; } + void clearSendMavCommandCounts(void) { _sendMavCommandCountMap.clear(); } + int sendMavCommandCount(MAV_CMD command) { return _sendMavCommandCountMap[command]; } typedef enum { FailRequestMessageNone, @@ -192,11 +189,10 @@ private slots: // LinkInterface overrides void _writeBytes(const QByteArray bytes) final; - void _writeBytesQueued (const QByteArray bytes); - void _run1HzTasks (void); - void _run10HzTasks (void); - void _run500HzTasks (void); - void _sendStatusTextMessages(void); + void _writeBytesQueued(const QByteArray bytes); + void _run1HzTasks(void); + void _run10HzTasks(void); + void _run500HzTasks(void); private: // LinkInterface overrides @@ -223,7 +219,6 @@ private: void _handleParamRequestRead (const mavlink_message_t& msg); void _handleFTP (const mavlink_message_t& msg); void _handleCommandLong (const mavlink_message_t& msg); - void _handleInProgressCommandLong (const mavlink_command_long_t& request); void _handleManualControl (const mavlink_message_t& msg); void _handlePreFlightCalibration (const mavlink_command_long_t& request); void _handleLogRequestList (const mavlink_message_t& msg); @@ -237,6 +232,7 @@ private: void _sendVibration (void); void _sendSysStatus (void); void _sendBatteryStatus (void); + void _sendStatusTextMessages (void); void _sendChunkedStatusText (uint16_t chunkId, bool missingChunks); void _respondWithAutopilotVersion (void); void _sendRCChannels (void); @@ -314,7 +310,7 @@ private: RequestMessageFailureMode_t _requestMessageFailureMode = FailRequestMessageNone; - QMap _receivedMavCommandCountMap; + QMap _sendMavCommandCountMap; QMap> _mapParamName2Value; QMap> _mapParamName2MavParamType; diff --git a/src/comm/MockLinkFTP.cc b/src/comm/MockLinkFTP.cc index d8fba00..e531f51 100644 --- a/src/comm/MockLinkFTP.cc +++ b/src/comm/MockLinkFTP.cc @@ -125,8 +125,6 @@ void MockLinkFTP::_openCommand(uint8_t senderSystemId, uint8_t senderComponentId tmpFilename = ":MockLink/Parameter.MetaData.json"; } else if (path == "/parameter.json.xz") { tmpFilename = ":MockLink/Parameter.MetaData.json.xz"; - } else if (_BinParamFileEnabled && path == "@PARAM/param.pck") { - tmpFilename = ":MockLink/Arduplane.params.ftp.bin"; } if (!tmpFilename.isEmpty()) { @@ -146,8 +144,7 @@ void MockLinkFTP::_openCommand(uint8_t senderSystemId, uint8_t senderComponentId // Data contains file length response.hdr.size = sizeof(uint32_t); - /* Ardupilot sends constant wrong file size for parameter file due to dynamic on the fly generation */ - response.openFileLength = (path == "@PARAM/param.pck" ? 1024*1024 : _currentFile.size()); + response.openFileLength = _currentFile.size(); _sendResponse(senderSystemId, senderComponentId, &response, outgoingSeqNumber); } diff --git a/src/comm/MockLinkFTP.h b/src/comm/MockLinkFTP.h index 24fa784..3cab8e1 100644 --- a/src/comm/MockLinkFTP.h +++ b/src/comm/MockLinkFTP.h @@ -54,7 +54,6 @@ public: void mavlinkMessageReceived(const mavlink_message_t& message); void enableRandromDrops(bool enable) { _randomDropsEnabled = enable; } - void enableBinParamFile(bool enable) { _BinParamFileEnabled = enable; } static const char* sizeFilenamePrefix; @@ -93,7 +92,6 @@ private: uint16_t _lastReplySequence = 0; mavlink_message_t _lastReply; bool _randomDropsEnabled = false; - bool _BinParamFileEnabled = false; static const uint8_t _sessionId = 1; ///< We only support a single fixed session }; diff --git a/src/comm/MockLinkOptionsDlg.qml b/src/comm/MockLinkOptionsDlg.qml index 079de09..be9fb77 100644 --- a/src/comm/MockLinkOptionsDlg.qml +++ b/src/comm/MockLinkOptionsDlg.qml @@ -23,7 +23,7 @@ QGCPopupDialog { title: qsTr("MockLink Options") buttons: StandardButton.Close - property var link + property var link: dialogProperties.link ColumnLayout { spacing: ScreenTools.defaultFontPixelHeight / 2 @@ -33,7 +33,7 @@ QGCPopupDialog { text: qsTr("Stop Heartbeats") onClicked: { link.setCommLost(true) - close() + reject() } } @@ -42,7 +42,7 @@ QGCPopupDialog { text: qsTr("Start Heartbeats") onClicked: { link.setCommLost(false) - close() + reject() } } @@ -51,7 +51,7 @@ QGCPopupDialog { text: qsTr("Connection Removed") onClicked: { link.simulateConnectionRemoved() - close() + reject() } } } diff --git a/src/comm/Mocklink.Arduplane.params.ftp.bin b/src/comm/Mocklink.Arduplane.params.ftp.bin deleted file mode 100644 index a38a672ce1295abea40d50a8dcaee5a3f9ef5e9c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15213 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 kgu2PGKNTMTj=USW QGCSerialPortInfo::availablePorts(void) VidPidPair_t vidPid(portInfo.vendorIdentifier(), portInfo.productIdentifier()); if (seenSerialNumbers.contains(vidPid) && seenSerialNumbers[vidPid].contains(portInfo.serialNumber())) { // Some boards are a composite USB device, with the first port being mavlink and the second something else. We only expose to first mavlink port. - // However internal NMEA devices can present like this, so dont skip anything with NMEA in description - if(!portInfo.description().contains("NMEA")) - { - qCDebug(QGCSerialPortInfoLog) << "Skipping secondary port on same device" << portInfo.portName() << portInfo.vendorIdentifier() << portInfo.productIdentifier() << portInfo.serialNumber(); - continue; - } + qCDebug(QGCSerialPortInfoLog) << "Skipping secondary port on same device" << portInfo.portName() << portInfo.vendorIdentifier() << portInfo.productIdentifier() << portInfo.serialNumber(); + continue; } seenSerialNumbers[vidPid].append(portInfo.serialNumber()); } diff --git a/src/comm/SerialLink.cc b/src/comm/SerialLink.cc index 8527212..ca523ef 100644 --- a/src/comm/SerialLink.cc +++ b/src/comm/SerialLink.cc @@ -177,11 +177,7 @@ bool SerialLink::_hardwareConnect(QSerialPort::SerialPortError& error, QString& _port = new QSerialPort(_serialConfig->portName(), this); -#ifdef Q_OS_ANDROID - QObject::connect(_port, SIGNAL(&QSerialPort::error), this, SLOT(&SerialLink::linkError)); -#else - QObject::connect(_port, &QSerialPort::errorOccurred, this, &SerialLink::linkError); -#endif + QObject::connect(_port, static_cast(&QSerialPort::error), this, &SerialLink::linkError); QObject::connect(_port, &QIODevice::readyRead, this, &SerialLink::_readBytes); // After the bootloader times out, it still can take a second or so for the Pixhawk USB driver to come up and make diff --git a/src/comm/TCPLink.cc b/src/comm/TCPLink.cc index d932bda..6eafbc3 100644 --- a/src/comm/TCPLink.cc +++ b/src/comm/TCPLink.cc @@ -50,7 +50,7 @@ void TCPLink::_writeDebugBytes(const QByteArray data) ascii.append(219); } } - qDebug() << "Sent" << size << "bytes to" << _tcpConfig->host() << ":" << _tcpConfig->port() << "data:"; + qDebug() << "Sent" << size << "bytes to" << _tcpConfig->address().toString() << ":" << _tcpConfig->port() << "data:"; qDebug() << bytes; qDebug() << "ASCII:" << ascii; } @@ -117,7 +117,7 @@ bool TCPLink::_hardwareConnect() QSignalSpy errorSpy(_socket, &QAbstractSocket::errorOccurred); QObject::connect(_socket, &QAbstractSocket::errorOccurred, this, &TCPLink::_socketError); - _socket->connectToHost(_tcpConfig->host(), _tcpConfig->port()); + _socket->connectToHost(_tcpConfig->address(), _tcpConfig->port()); // Give the socket a second to connect to the other side otherwise error out if (!_socket->waitForConnected(1000)) @@ -155,16 +155,48 @@ bool TCPLink::isConnected() const //-------------------------------------------------------------------------- //-- TCPConfiguration +static bool is_ip(const QString& address) +{ + int a,b,c,d; + if (sscanf(address.toStdString().c_str(), "%d.%d.%d.%d", &a, &b, &c, &d) != 4 + && strcmp("::1", address.toStdString().c_str())) { + return false; + } else { + return true; + } +} + +static QString get_ip_address(const QString& address) +{ + if(is_ip(address)) + return address; + // Need to look it up + QHostInfo info = QHostInfo::fromName(address); + if (info.error() == QHostInfo::NoError) + { + QList hostAddresses = info.addresses(); + for (int i = 0; i < hostAddresses.size(); i++) + { + // Exclude all IPv6 addresses + if (!hostAddresses.at(i).toString().contains(":")) + { + return hostAddresses.at(i).toString(); + } + } + } + return {}; +} + TCPConfiguration::TCPConfiguration(const QString& name) : LinkConfiguration(name) { _port = QGC_TCP_PORT; - _host = QLatin1String("0.0.0.0"); + _address = QHostAddress::Any; } TCPConfiguration::TCPConfiguration(TCPConfiguration* source) : LinkConfiguration(source) { _port = source->port(); - _host = source->host(); + _address = source->address(); } void TCPConfiguration::copyFrom(LinkConfiguration *source) @@ -173,7 +205,7 @@ void TCPConfiguration::copyFrom(LinkConfiguration *source) auto* usource = qobject_cast(source); Q_ASSERT(usource != nullptr); _port = usource->port(); - _host = usource->host(); + _address = usource->address(); } void TCPConfiguration::setPort(quint16 port) @@ -181,16 +213,26 @@ void TCPConfiguration::setPort(quint16 port) _port = port; } +void TCPConfiguration::setAddress(const QHostAddress& address) +{ + _address = address; +} + void TCPConfiguration::setHost(const QString host) { - _host = host; + QString ipAdd = get_ip_address(host); + if(ipAdd.isEmpty()) { + qWarning() << "TCP:" << "Could not resolve host:" << host; + } else { + _address = QHostAddress(ipAdd); + } } void TCPConfiguration::saveSettings(QSettings& settings, const QString& root) { settings.beginGroup(root); settings.setValue("port", (int)_port); - settings.setValue("host", _host); + settings.setValue("host", address().toString()); settings.endGroup(); } @@ -198,6 +240,7 @@ void TCPConfiguration::loadSettings(QSettings& settings, const QString& root) { settings.beginGroup(root); _port = (quint16)settings.value("port", QGC_TCP_PORT).toUInt(); - _host = settings.value("host", _host).toString(); + QString address = settings.value("host", _address.toString()).toString(); + _address = QHostAddress(address); settings.endGroup(); } diff --git a/src/comm/TCPLink.h b/src/comm/TCPLink.h index d7f0fc4..489d8bd 100644 --- a/src/comm/TCPLink.h +++ b/src/comm/TCPLink.h @@ -43,8 +43,10 @@ public: TCPConfiguration(TCPConfiguration* source); quint16 port (void) const { return _port; } - QString host (void) const { return _host; } + const QHostAddress& address (void) { return _address; } + const QString host (void) { return _address.toString(); } void setPort (quint16 port); + void setAddress (const QHostAddress& address); void setHost (const QString host); //LinkConfiguration overrides @@ -60,7 +62,7 @@ signals: void hostChanged(void); private: - QString _host; + QHostAddress _address; quint16 _port; }; diff --git a/src/comm/USBBoardInfo.json b/src/comm/USBBoardInfo.json index 813a5cb..cba910b 100644 --- a/src/comm/USBBoardInfo.json +++ b/src/comm/USBBoardInfo.json @@ -17,16 +17,13 @@ { "vendorID": 7052, "productID": 54, "boardClass": "Pixhawk", "name": "PX4 FMU V6U" }, { "vendorID": 12677, "productID": 53, "boardClass": "Pixhawk", "name": "PX4 FMU V6X" }, { "vendorID": 12677, "productID": 56, "boardClass": "Pixhawk", "name": "PX4 FMU V6C" }, - { "vendorID": 13891, "productID": 29, "boardClass": "Pixhawk", "name": "PX4 FMU V6X-RT" }, { "vendorID": 9900, "productID": 64, "boardClass": "Pixhawk", "name": "TAP V1" }, { "vendorID": 9900, "productID": 65, "boardClass": "Pixhawk", "name": "ASC V1" }, { "vendorID": 9900, "productID": 22, "boardClass": "Pixhawk", "name": "Crazyflie 2" }, { "vendorID": 9900, "productID": 1, "boardClass": "Pixhawk", "name": "Omnibus F4 SD" }, { "vendorID": 8137, "productID": 28, "boardClass": "Pixhawk", "name": "PX4 FMUK66 v3.x" }, { "vendorID": 1155, "productID": 41775, "boardClass": "Pixhawk", "name": "PX4 FMU ModalAI FCv1" }, - { "vendorID": 1155, "productID": 41776, "boardClass": "Pixhawk", "name": "PX4 FMU ModalAI FCv2" }, { "vendorID":12642, "productID": 75, "boardClass": "Pixhawk", "name": "PX4 DurandalV1" }, - { "vendorID":12642, "productID": 80, "boardClass": "Pixhawk", "name": "Holybro Kakute Flight Controller" }, { "vendorID": 4104, "productID": 1, "boardClass": "Pixhawk", "name": "PX4 FMU UVify Core" }, { "vendorID": 12643, "productID": 76, "boardClass": "Pixhawk", "name": "CUAV Flight Controller" }, { "vendorID": 1155, "productID": 55, "boardClass": "Pixhawk", "name": "PX4 FMU SmartAP AIRLink" }, @@ -38,10 +35,7 @@ { "vendorID": 12642, "productID": 0, "boardClass": "Pixhawk", "name": "Holybro" }, - { "vendorID": 11694, "productID": 0, "boardClass": "Pixhawk", "name": "CubePilot" }, - - { "vendorID": 13735, "productID": 1, "boardClass": "Pixhawk", "name": "ThePeach FCC-K1" }, - { "vendorID": 13735, "productID": 2, "boardClass": "Pixhawk", "name": "ThePeach FCC-R1" }, + { "vendorID": 11694, "productID": 0, "boardClass": "Pixhawk", "name": "Hex/ProfiCNC" }, { "vendorID": 9900, "productID": 21, "boardClass": "PX4 Flow", "name": "PX4 Flow" }, @@ -64,8 +58,6 @@ { "regExp": "^PX4 BL FMU v6U.x$", "boardClass": "Pixhawk" }, { "regExp": "^PX4 FMU v6X.x$", "boardClass": "Pixhawk" }, { "regExp": "^PX4 BL FMU v6X.x$", "boardClass": "Pixhawk" }, - { "regExp": "^PX4 FMU v6XRT.x$", "boardClass": "Pixhawk" }, - { "regExp": "^PX4 BL FMU v6XRT.x$", "boardClass": "Pixhawk" }, { "regExp": "^PX4 FMU v5X.x$", "boardClass": "Pixhawk" }, { "regExp": "^PX4 BL FMU v5X.x$", "boardClass": "Pixhawk" }, { "regExp": "^PX4 FMU v5.x$", "boardClass": "Pixhawk" }, diff --git a/src/qgcunittest/CMakeLists.txt b/src/qgcunittest/CMakeLists.txt index 9de2956..c1228f2 100644 --- a/src/qgcunittest/CMakeLists.txt +++ b/src/qgcunittest/CMakeLists.txt @@ -6,8 +6,6 @@ add_library(qgcunittest #FileManagerTest.h ComponentInformationCacheTest.cc ComponentInformationCacheTest.h - ComponentInformationTranslationTest.cc - ComponentInformationTranslationTest.h GeoTest.cc GeoTest.h #MainWindowTest.cc diff --git a/src/qgcunittest/ComponentInformationTranslationTest.cc b/src/qgcunittest/ComponentInformationTranslationTest.cc deleted file mode 100644 index 3e1c477..0000000 --- a/src/qgcunittest/ComponentInformationTranslationTest.cc +++ /dev/null @@ -1,46 +0,0 @@ -/**************************************************************************** - * - * (c) 2021 QGROUNDCONTROL PROJECT - * - * QGroundControl is licensed according to the terms in the file - * COPYING.md in the root of the source code directory. - * - ****************************************************************************/ - - -#include "ComponentInformationTranslationTest.h" - -void ComponentInformationTranslationTest::_basic_test() -{ - QString translationJson = ":/unittest/TranslationTest.json"; - QString translationTs = ":/unittest/TranslationTest_de_DE.ts"; - ComponentInformationTranslation* translation = new ComponentInformationTranslation(this, new QGCCachedFileDownload(this, "")); - QString tempFilename = translation->translateJsonUsingTS(translationJson, translationTs); - - QVERIFY(!tempFilename.isEmpty()); - - // Compare json files - QFile translationJsonFile(translationJson); - QVERIFY(translationJsonFile.open(QFile::ReadOnly | QFile::Text)); - QByteArray expectedOutput = translationJsonFile.readAll().replace("translate-me", "TRANSLATED"); - - QJsonDocument expectedJson; - readJson(expectedOutput, expectedJson); - - QFile tempJson(tempFilename); - QVERIFY(tempJson.open(QFile::ReadOnly | QFile::Text)); - QByteArray translatedOutput = tempJson.readAll(); - QJsonDocument translatedJson; - readJson(translatedOutput, translatedJson); - - QVERIFY(expectedJson == translatedJson); -} - -void ComponentInformationTranslationTest::readJson(const QByteArray& bytes, QJsonDocument& jsonDoc) -{ - QJsonParseError parseError; - jsonDoc = QJsonDocument::fromJson(bytes, &parseError); - QTEST_ASSERT(parseError.error == QJsonParseError::NoError); - QVERIFY(!jsonDoc.isEmpty()); -} - diff --git a/src/qgcunittest/ComponentInformationTranslationTest.h b/src/qgcunittest/ComponentInformationTranslationTest.h deleted file mode 100644 index e1d9908..0000000 --- a/src/qgcunittest/ComponentInformationTranslationTest.h +++ /dev/null @@ -1,34 +0,0 @@ -/**************************************************************************** - * - * (c) 2021 QGROUNDCONTROL PROJECT - * - * QGroundControl is licensed according to the terms in the file - * COPYING.md in the root of the source code directory. - * - ****************************************************************************/ - - -#pragma once - -#include "ComponentInformationTranslation.h" - -#include "UnitTest.h" - -#include -#include -#include - -class ComponentInformationTranslationTest : public UnitTest -{ - Q_OBJECT - -public: - ComponentInformationTranslationTest() = default; - virtual ~ComponentInformationTranslationTest() = default; - -private slots: - void _basic_test(); -private: - void readJson(const QByteArray& bytes, QJsonDocument& jsonDoc); -}; - diff --git a/src/qgcunittest/RadioConfigTest.cc b/src/qgcunittest/RadioConfigTest.cc index f60a4bd..123b7a5 100644 --- a/src/qgcunittest/RadioConfigTest.cc +++ b/src/qgcunittest/RadioConfigTest.cc @@ -365,6 +365,16 @@ void RadioConfigTest::_fullCalibrationWorker(MAV_AUTOPILOT firmwareType) for (int channel=0; channel<_chanMax(); channel++) { if (_channelSettings()[channel].function == function) { + if (_px4Vehicle()) { + // Make sure this function isn't being use for a switch + QStringList switchList; + switchList << "RC_MAP_MODE_SW" << "RC_MAP_LOITER_SW" << "RC_MAP_RETURN_SW" << "RC_MAP_POSCTL_SW" << "RC_MAP_ACRO_SW"; + + for (const QString &switchParam: switchList) { + Q_ASSERT(_vehicle->parameterManager()->getParameter(FactSystem::defaultComponentId, switchParam)->rawValue().toInt() != channel + 1); + } + } + _rgFunctionChannelMap[function] = channel; found = true; diff --git a/src/qgcunittest/TranslationTest.json b/src/qgcunittest/TranslationTest.json deleted file mode 100644 index cb24643..0000000 --- a/src/qgcunittest/TranslationTest.json +++ /dev/null @@ -1,151 +0,0 @@ -{ - "version": 1, - "translation": { - "items": { - "first_element": { - "items": { - "first_list_element": { - "list": { - "key": "name", - "translate": ["label", "text"] - } - }, - "second_list_element": { - "list": { - "translate": ["label", "text"] - } - }, - "object1": { - "translate": ["list_of_strings"] - }, - "object2": { - "items": { - "*": { - "translate": ["name"] - } - } - } - } - }, - "second_element": { - "items": { - "*": { - "translate-global": ["category"] - } - } - }, - "third_element": { - "items": { - "subgroups": { - "$ref": "#/$defs/recursive-def" - } - } - } - }, - "$defs": { - "recursive-def": { - "list": { - "translate": ["description"], - "items": { - "subgroups": { - "$ref": "#/$defs/recursive-def" - } - } - } - } - } - }, - - "first_element": { - "first_list_element": [ - { - "name": "1. element", - "label": "translate-me-list1-1.0", - "text": "translate-me-list1-1.1" - }, - { - "name": "2. element", - "label": "translate-me-list1-2.0", - "text": "translate-me-list1-2.1" - }, - { - "name": "3. element", - "label": "translate-me-list1-3.0", - "text": "translate-me-list1-3.1" - } - ], - "second_list_element": [ - { - "name": "1. element", - "label": "translate-me-list2-1.0", - "text": "translate-me-list2-1.1" - }, - { - "name": "2. element", - "label": "translate-me-list2-2.0", - "text": "translate-me-list2-2.1" - }, - { - "name": "3. element", - "label": "translate-me-list2-3.0", - "text": "translate-me-list2-3.1" - } - ], - "object1": { - "list_of_strings": ["translate-me-list-of-strings-1", "translate-me-list-of-strings-2", "translate-me-list-of-strings-3"] - }, - "object2": { - "key1": { - "name": "translate-me-name1" - }, - "key2": { - "name": "translate-me-name2" - }, - "key3": { - "name": "translate-me-name3" - } - } - }, - "second_element": { - "element1": { - "category": "translate-me-global-cat1" - }, - "element2": { - "category": "translate-me-global-cat2" - }, - "element3": { - "category": "translate-me-global-cat1" - }, - "element4": { - "category": "translate-me-global-cat2" - }, - "element5": { - "category": "translate-me-global-cat <> special symbol" - } - }, - "third_element": { - "subgroups": [ - { - "description": "translate-me-subgroup1", - "subgroups": [ - { - "description": "translate-me-subgroup1-1", - "subgroups": [ - { - "description": "translate-me-subgroup1-1-1" - } - ] - }, - { - "description": "translate-me-subgroup1-2", - "subgroups": [ - { - "description": "translate-me-subgroup1-2-1" - } - ] - } - ] - } - ] - } -} diff --git a/src/qgcunittest/TranslationTest_de_DE.ts b/src/qgcunittest/TranslationTest_de_DE.ts deleted file mode 100644 index 5666215..0000000 --- a/src/qgcunittest/TranslationTest_de_DE.ts +++ /dev/null @@ -1,186 +0,0 @@ - - - - - /first_element/first_list_element/1. element/label - - translate-me-list1-1.0 - TRANSLATED-list1-1.0 - - - - /first_element/first_list_element/1. element/text - - translate-me-list1-1.1 - TRANSLATED-list1-1.1 - - - - /first_element/first_list_element/2. element/label - - translate-me-list1-2.0 - TRANSLATED-list1-2.0 - - - - /first_element/first_list_element/2. element/text - - translate-me-list1-2.1 - TRANSLATED-list1-2.1 - - - - /first_element/first_list_element/3. element/label - - translate-me-list1-3.0 - TRANSLATED-list1-3.0 - - - - /first_element/first_list_element/3. element/text - - translate-me-list1-3.1 - TRANSLATED-list1-3.1 - - - - /first_element/second_list_element/0/label - - translate-me-list2-1.0 - TRANSLATED-list2-1.0 - - - - /first_element/second_list_element/0/text - - translate-me-list2-1.1 - TRANSLATED-list2-1.1 - - - - /first_element/second_list_element/1/label - - translate-me-list2-2.0 - TRANSLATED-list2-2.0 - - - - /first_element/second_list_element/1/text - - translate-me-list2-2.1 - TRANSLATED-list2-2.1 - - - - /first_element/second_list_element/2/label - - translate-me-list2-3.0 - TRANSLATED-list2-3.0 - - - - /first_element/second_list_element/2/text - - translate-me-list2-3.1 - TRANSLATED-list2-3.1 - - - - /first_element/object1/list_of_strings/0 - - translate-me-list-of-strings-1 - TRANSLATED-list-of-strings-1 - - - - /first_element/object1/list_of_strings/1 - - translate-me-list-of-strings-2 - TRANSLATED-list-of-strings-2 - - - - /first_element/object1/list_of_strings/2 - - translate-me-list-of-strings-3 - TRANSLATED-list-of-strings-3 - - - - /first_element/object2/key1/name - - translate-me-name1 - TRANSLATED-name1 - - - - /first_element/object2/key2/name - - translate-me-name2 - TRANSLATED-name2 - - - - /first_element/object2/key3/name - - translate-me-name3 - TRANSLATED-name3 - - - - /third_element/subgroups/0/description - - translate-me-subgroup1 - TRANSLATED-subgroup1 - - - - /third_element/subgroups/0/subgroups/0/description - - translate-me-subgroup1-1 - TRANSLATED-subgroup1-1 - - - - /third_element/subgroups/0/subgroups/0/subgroups/0/description - - translate-me-subgroup1-1-1 - TRANSLATED-subgroup1-1-1 - - - - /third_element/subgroups/0/subgroups/1/description - - translate-me-subgroup1-2 - TRANSLATED-subgroup1-2 - - - - /third_element/subgroups/0/subgroups/1/subgroups/0/description - - translate-me-subgroup1-2-1 - TRANSLATED-subgroup1-2-1 - - - - $globals/category/translate-me-global-cat <> special symbol - - translate-me-global-cat <> special symbol - TRANSLATED-global-cat <> special symbol - - - - $globals/category/translate-me-global-cat2 - - translate-me-global-cat2 - TRANSLATED-global-cat2 - - - - $globals/category/translate-me-global-cat1 - - translate-me-global-cat1 - TRANSLATED-global-cat1 - - - diff --git a/src/qgcunittest/UnitTestList.cc b/src/qgcunittest/UnitTestList.cc index ec912e8..222c49f 100644 --- a/src/qgcunittest/UnitTestList.cc +++ b/src/qgcunittest/UnitTestList.cc @@ -12,7 +12,6 @@ // ones are enabled/disabled #include "ComponentInformationCacheTest.h" -#include "ComponentInformationTranslationTest.h" #include "FactSystemTestGeneric.h" #include "FactSystemTestPX4.h" //#include "FileDialogTest.h" @@ -53,7 +52,6 @@ #include "InitialConnectTest.h" UT_REGISTER_TEST(ComponentInformationCacheTest) -UT_REGISTER_TEST(ComponentInformationTranslationTest) UT_REGISTER_TEST(FactSystemTestGeneric) UT_REGISTER_TEST(FactSystemTestPX4) //UT_REGISTER_TEST(FileDialogTest) diff --git a/src/uas/UASMessageHandler.cc b/src/uas/UASMessageHandler.cc index 13e9539..f801cfd 100644 --- a/src/uas/UASMessageHandler.cc +++ b/src/uas/UASMessageHandler.cc @@ -103,19 +103,13 @@ void UASMessageHandler::_activeVehicleChanged(Vehicle* vehicle) } } -void UASMessageHandler::handleTextMessage(int, int compId, int severity, QString text, QString description) +void UASMessageHandler::handleTextMessage(int, int compId, int severity, QString text) { // Hack to prevent calibration messages from cluttering things up if (_activeVehicle->px4Firmware() && text.startsWith(QStringLiteral("[cal] "))) { return; } - text = text.replace("\n", "
    "); - // TODO: handle text + description separately in the UI - if (!description.isEmpty()) { - text += "
    " + description.replace("\n", "
    ") + "
    "; - } - // Color the output depending on the message severity. We have 3 distinct cases: // 1: If we have an ERROR or worse, make it bigger, bolder, and highlight it red. // 2: If we have a warning or notice, just make it bold and color it orange. @@ -195,6 +189,10 @@ void UASMessageHandler::handleTextMessage(int, int compId, int severity, QString } message->_setFormatedText(QString("[%2%3]%4 %5
    ").arg(style).arg(dateString).arg(compString).arg(severityText).arg(text)); + if (message->severityIsError()) { + _latestError = severityText + " " + text; + } + _mutex.unlock(); emit textMessageReceived(message); diff --git a/src/uas/UASMessageHandler.h b/src/uas/UASMessageHandler.h index 6cb329d..402eccd 100644 --- a/src/uas/UASMessageHandler.h +++ b/src/uas/UASMessageHandler.h @@ -37,7 +37,7 @@ public: */ int getSeverity() const { return _severity; } /** - * @brief Get (html escaped) message text (e.g. "[pm] sending list") + * @brief Get message text (e.g. "[pm] sending list") */ QString getText() { return _text; } /** @@ -98,6 +98,10 @@ public: * @brief Get normal message count (Resets count once read) */ int getNormalCount(); + /** + * @brief Get latest error message + */ + QString getLatestError() { return _latestError; } /// Begin to show message which are errors in the toolbar void showErrorsInToolbar(void) { _showErrorsInToolbar = true; } @@ -111,10 +115,9 @@ public slots: * @param uasid UAS Id * @param componentid Component Id * @param severity Message severity - * @param text Message Text (html escaped) - * @param description Optional detailed description (html escaped) + * @param text Message Text */ - void handleTextMessage(int uasid, int componentid, int severity, QString text, QString description); + void handleTextMessage(int uasid, int componentid, int severity, QString text); signals: /** @@ -141,6 +144,7 @@ private: int _errorCountTotal; int _warningCount; int _normalCount; + QString _latestError; bool _showErrorsInToolbar; MultiVehicleManager* _multiVehicleManager; }; diff --git a/src/ui/AppSettings.qml b/src/ui/AppSettings.qml index ded4121..b7a717c 100644 --- a/src/ui/AppSettings.qml +++ b/src/ui/AppSettings.qml @@ -30,18 +30,11 @@ Rectangle { property bool _first: true - property bool _commingFromRIDSettings: false - QGCPalette { id: qgcPal } Component.onCompleted: { //-- Default Settings - if (globals.commingFromRIDIndicator) { - __rightPanel.source = "qrc:/qml/RemoteIDSettings.qml" - globals.commingFromRIDIndicator = false - } else { - __rightPanel.source = QGroundControl.corePlugin.settingsPages[QGroundControl.corePlugin.defaultSettings].url - } + __rightPanel.source = QGroundControl.corePlugin.settingsPages[QGroundControl.corePlugin.defaultSettings].url } QGCFlickable { @@ -69,7 +62,6 @@ Rectangle { text: modelData.title autoExclusive: true Layout.fillWidth: true - visible: modelData.url != "qrc:/qml/RemoteIDSettings.qml" ? true : QGroundControl.settingsManager.remoteIDSettings.enable.rawValue onClicked: { if (mainWindow.preventViewSwitch()) { @@ -82,20 +74,10 @@ Rectangle { } Component.onCompleted: { - if (globals.commingFromRIDIndicator) { - _commingFromRIDSettings = true - } if(_first) { _first = false checked = true } - if (_commingFromRIDSettings) { - checked = false - _commingFromRIDSettings = false - if (modelData.url == "qrc:/qml/RemoteIDSettings.qml") { - checked = true - } - } } } } diff --git a/src/ui/MainRootWindow.qml b/src/ui/MainRootWindow.qml index 93274b3..a8d5ece 100644 --- a/src/ui/MainRootWindow.qml +++ b/src/ui/MainRootWindow.qml @@ -48,6 +48,8 @@ ApplicationWindow { property var rgPromptIds: QGroundControl.corePlugin.firstRunPromptsToShow() property int nextPromptIdIndex: 0 + onRgPromptIdsChanged: console.log(QGroundControl.corePlugin, QGroundControl.corePlugin.firstRunPromptsToShow()) + function clearNextPromptSignal() { if (currentDialog) { currentDialog.closed.disconnect(nextPrompt) @@ -56,10 +58,8 @@ ApplicationWindow { function nextPrompt() { if (nextPromptIdIndex < rgPromptIds.length) { - var component = Qt.createComponent(QGroundControl.corePlugin.firstRunPromptResource(rgPromptIds[nextPromptIdIndex])); - currentDialog = component.createObject(mainWindow) + currentDialog = showPopupDialogFromSource(QGroundControl.corePlugin.firstRunPromptResource(rgPromptIds[nextPromptIdIndex])) currentDialog.closed.connect(nextPrompt) - currentDialog.open() nextPromptIdIndex++ } else { currentDialog = null @@ -86,9 +86,6 @@ ApplicationWindow { property var planMasterControllerPlanView: null property var currentPlanMissionItem: planMasterControllerPlanView ? planMasterControllerPlanView.missionController.currentPlanViewItem : null - - // Property to manage RemoteID quick acces to settings page - property bool commingFromRIDIndicator: false } /// Default color palette used throughout the UI @@ -170,19 +167,26 @@ ApplicationWindow { //------------------------------------------------------------------------- //-- Global simple message dialog - function showMessageDialog(dialogTitle, dialogText, buttons = StandardButton.Ok, acceptFunction = null) { - simpleMessageDialogComponent.createObject(mainWindow, { title: dialogTitle, text: dialogText, buttons: buttons, acceptFunction: acceptFunction }).open() - } - - // This variant is only meant to be called by QGCApplication - function _showMessageDialog(dialogTitle, dialogText) { - showMessageDialog(dialogTitle, dialogText) + function showMessageDialog(dialogTitle, dialogText) { + showPopupDialogFromComponent(simpleMessageDialog, { title: dialogTitle, text: dialogText }) } Component { - id: simpleMessageDialogComponent + id: simpleMessageDialog - QGCSimpleMessageDialog { + QGCPopupDialog { + title: dialogProperties.title + buttons: StandardButton.Ok + + ColumnLayout { + QGCLabel { + id: textLabel + wrapMode: Text.WordWrap + text: dialogProperties.text + Layout.fillWidth: true + Layout.maximumWidth: mainWindow.width / 2 + } + } } } @@ -191,6 +195,53 @@ ApplicationWindow { window: mainWindow } + //------------------------------------------------------------------------- + //-- Global complex dialog + + /// Shows a QGCViewDialogContainer based dialog + /// @param component The dialog contents + /// @param title Title for dialog + /// @param charWidth Width of dialog in characters + /// @param buttons Buttons to show in dialog using StandardButton enum + + readonly property int showDialogFullWidth: -1 ///< Use for full width dialog + readonly property int showDialogDefaultWidth: 40 ///< Use for default dialog width + + function showComponentDialog(component, title, charWidth, buttons) { + var dialogWidth = charWidth === showDialogFullWidth ? mainWindow.width : ScreenTools.defaultFontPixelWidth * charWidth + var dialog = dialogDrawerComponent.createObject(mainWindow, { width: dialogWidth, dialogComponent: component, dialogTitle: title, dialogButtons: buttons }) + mainWindow.pushPreventViewSwitch() + dialog.open() + } + + Component { + id: dialogDrawerComponent + QGCViewDialogContainer { + y: mainWindow.header.height + height: mainWindow.height - mainWindow.header.height + onClosed: mainWindow.popPreventViewSwitch() + } + } + + // Dialogs based on QGCPopupDialog + + function showPopupDialogFromComponent(component, properties) { + var dialog = popupDialogContainerComponent.createObject(mainWindow, { dialogComponent: component, dialogProperties: properties }) + dialog.open() + return dialog + } + + function showPopupDialogFromSource(source, properties) { + var dialog = popupDialogContainerComponent.createObject(mainWindow, { dialogSource: source, dialogProperties: properties }) + dialog.open() + return dialog + } + + Component { + id: popupDialogContainerComponent + QGCPopupDialogContainer { } + } + property bool _forceClose: false function finishCloseProcess() { @@ -207,48 +258,63 @@ ApplicationWindow { // Unsaved missions - then // Pending parameter writes - then // Active connections - - property string closeDialogTitle: qsTr("Close %1").arg(QGroundControl.appName) - - function checkForUnsavedMission() { - if (globals.planMasterControllerPlanView && globals.planMasterControllerPlanView.dirty) { - showMessageDialog(closeDialogTitle, - qsTr("You have a mission edit in progress which has not been saved/sent. If you close you will lose changes. Are you sure you want to close?"), - StandardButton.Yes | StandardButton.No, - function() { checkForPendingParameterWrites() }) - } else { - checkForPendingParameterWrites() - } - } - - function checkForPendingParameterWrites() { - for (var index=0; index 5 + color: qgcPal.alertText + MouseArea { + anchors.fill: parent + onClicked: { + criticalVehicleMessageFlick.flick(0,-500) } } } @@ -679,42 +733,4 @@ ApplicationWindow { indicatorPopup.currentIndicator = null } } - - // We have to create the popup windows for the Analyze pages here so that the creation context is rooted - // to mainWindow. Otherwise if they are rooted to the AnalyzeView itself they will die when the analyze viewSwitch - // closes. - - function createrWindowedAnalyzePage(title, source) { - var windowedPage = windowedAnalyzePage.createObject(mainWindow) - windowedPage.title = title - windowedPage.source = source - } - - Component { - id: windowedAnalyzePage - - Window { - width: ScreenTools.defaultFontPixelWidth * 100 - height: ScreenTools.defaultFontPixelHeight * 40 - visible: true - - property alias source: loader.source - - Rectangle { - color: QGroundControl.globalPalette.window - anchors.fill: parent - - Loader { - id: loader - anchors.fill: parent - onLoaded: item.popped = true - } - } - - onClosing: { - visible = false - source = "" - } - } - } } diff --git a/src/ui/preferences/GeneralSettings.qml b/src/ui/preferences/GeneralSettings.qml index 1b9b9d6..43c77e4 100644 --- a/src/ui/preferences/GeneralSettings.qml +++ b/src/ui/preferences/GeneralSettings.qml @@ -181,77 +181,6 @@ Rectangle { property Fact _showDumbCameraControl: QGroundControl.settingsManager.flyViewSettings.showSimpleCameraControl } - FactCheckBox { - text: qsTr("Update home position based on device location. This will affect return to home") - fact: _updateHomePosition - visible: _updateHomePosition.visible - property Fact _updateHomePosition: QGroundControl.settingsManager.flyViewSettings.updateHomePosition - } - - FactCheckBox { - text: qsTr("Enable Custom Actions") - visible: _enableCustomActions.visible - fact: _enableCustomActions - - property Fact _enableCustomActions: QGroundControl.settingsManager.flyViewSettings.enableCustomActions - } - - //----------------------------------------------------------------- - //-- CustomAction definition path - GridLayout { - id: customActions - - columns: 2 - visible: QGroundControl.settingsManager.flyViewSettings.enableCustomActions.rawValue - - onVisibleChanged: { - if (jsonFile.rawValue === "" && ScreenTools.isMobile) { - jsonFile.rawValue = _defaultFile - } - } - - property Fact jsonFile: QGroundControl.settingsManager.flyViewSettings.customActionDefinitions - property string _defaultDir: QGroundControl.settingsManager.appSettings.customActionsSavePath - property string _defaultFile: _defaultDir + "/CustomActions.json" - - QGCLabel { - text: qsTr("Custom Action Definitions") - - Layout.columnSpan: 2 - Layout.alignment: Qt.AlignHCenter - } - - QGCTextField { - Layout.fillWidth: true - readOnly: true - text: customActions.jsonFile.rawValue === "" ? qsTr("") : customActions.jsonFile.rawValue - } - QGCButton { - visible: !ScreenTools.isMobile - text: qsTr("Browse") - onClicked: customActionPathBrowseDialog.openForLoad() - QGCFileDialog { - id: customActionPathBrowseDialog - title: qsTr("Choose the Custom Action Definitions file") - folder: customActions.jsonFile.rawValue - selectExisting: true - selectFolder: false - onAcceptedForLoad: customActions.jsonFile.rawValue = file - nameFilters: ["JSON files (*.json)"] - } - } - // The file loader on Android doesn't work, so we hard code the path to the - // JSON file. However, we need a button to force a refresh if the JSON file - // is changed. - QGCButton { - visible: ScreenTools.isMobile - text: qsTr("Reload") - onClicked: { - customActions.jsonFile.valueChanged(customActions.jsonFile.rawValue) - } - } - } - GridLayout { columns: 2 @@ -364,7 +293,7 @@ Rectangle { QGCLabel { id: videoFileFormatLabel - text: qsTr("Record File Format") + text: qsTr("File Format") visible: _showSaveVideoSettings && _videoSettings.recordingFormat.visible } FactComboBox { @@ -685,13 +614,6 @@ Rectangle { property Fact _audioMuted: QGroundControl.settingsManager.appSettings.audioMuted } - FactCheckBox { - text: qsTr("Save application data to SD Card") - fact: _androidSaveToSDCard - visible: _androidSaveToSDCard.visible - property Fact _androidSaveToSDCard: QGroundControl.settingsManager.appSettings.androidSaveToSDCard - } - FactCheckBox { text: qsTr("Check for Internet connection") fact: _checkInternet @@ -723,17 +645,11 @@ Rectangle { } } } - - // Check box to show/hide Remote ID submenu in App settings - FactCheckBox { - text: qsTr("Enable Remote ID") - fact: _remoteIDEnable - visible: _remoteIDEnable.visible - property Fact _remoteIDEnable: QGroundControl.settingsManager.remoteIDSettings.enable - } } } + //----------------------------------------------------------------- + //-- Save path RowLayout { id: pathRow anchors.margins: _margins @@ -899,7 +815,7 @@ Rectangle { visible: nmeaPortCombo.currentText !== gpsUdpPort && nmeaPortCombo.currentText !== gpsDisabled id: nmeaBaudCombo Layout.preferredWidth: _comboFieldWidth - model: [1200, 2400, 4800, 9600, 19200, 38400, 57600, 115200, 230400, 460800, 921600] + model: [4800, 9600, 19200, 38400, 57600, 115200] onActivated: { if (index != -1) { @@ -1107,7 +1023,7 @@ Rectangle { FactTextField { fact: adsbGrid.adsbSettings.adsbServerHostAddress visible: adsbGrid.adsbSettings.adsbServerHostAddress.visible - Layout.fillWidth: true + Layout.preferredWidth: _valueFieldWidth } QGCLabel { diff --git a/src/ui/preferences/LinkSettings.qml b/src/ui/preferences/LinkSettings.qml index 0a3a27e..1c19711 100644 --- a/src/ui/preferences/LinkSettings.qml +++ b/src/ui/preferences/LinkSettings.qml @@ -78,7 +78,6 @@ Rectangle { onClicked: { checked = true _currentSelection = object - console.log("clicked", object, object.link) } } } @@ -130,20 +129,12 @@ Rectangle { QGCButton { text: qsTr("Disconnect") enabled: _currentSelection && _currentSelection.link - onClicked: { - _currentSelection.link.disconnect() - _currentSelection.linkChanged() - } + onClicked: _currentSelection.link.disconnect() } QGCButton { text: qsTr("MockLink Options") visible: _currentSelection && _currentSelection.link && _currentSelection.link.isMockLink - onClicked: mockLinkOptionDialog.open() - - MockLinkOptionsDlg { - id: mockLinkOptionDialog - link: _currentSelection ? _currentSelection.link : undefined - } + onClicked: mainWindow.showPopupDialogFromSource("qrc:/unittest/MockLinkOptionsDlg.qml", { link: _currentSelection.link }) } } diff --git a/src/ui/preferences/MavlinkSettings.qml b/src/ui/preferences/MavlinkSettings.qml index 8174d82..b0370ef 100644 --- a/src/ui/preferences/MavlinkSettings.qml +++ b/src/ui/preferences/MavlinkSettings.qml @@ -33,10 +33,7 @@ Rectangle { property real _columnSpacing: ScreenTools.defaultFontPixelHeight * 0.25 property bool _uploadedSelected: false property bool _showMavlinkLog: QGroundControl.corePlugin.options.showMavlinkLogOptions - property bool _showAPMStreamRates: QGroundControl.apmFirmwareSupported && QGroundControl.settingsManager.apmMavlinkStreamRateSettings.visible && _isAPM - property var _activeVehicle: QGroundControl.multiVehicleManager.activeVehicle - property bool _isPX4: _activeVehicle ? _activeVehicle.px4Firmware : false - property bool _isAPM: _activeVehicle ? _activeVehicle.apmFirmware : false + property bool _showAPMStreamRates: QGroundControl.apmFirmwareSupported && QGroundControl.settingsManager.apmMavlinkStreamRateSettings.visible property Fact _disableDataPersistenceFact: QGroundControl.settingsManager.appSettings.disableAllPersistence property bool _disableDataPersistence: _disableDataPersistenceFact ? _disableDataPersistenceFact.rawValue : false @@ -372,7 +369,7 @@ Rectangle { height: mavlogLabel.height anchors.margins: ScreenTools.defaultFontPixelWidth anchors.horizontalCenter: parent.horizontalCenter - visible: _showMavlinkLog && _isPX4 + visible: _showMavlinkLog QGCLabel { id: mavlogLabel text: qsTr("MAVLink 2.0 Logging (PX4 Pro Only)") @@ -385,7 +382,7 @@ Rectangle { color: qgcPal.windowShade anchors.margins: ScreenTools.defaultFontPixelWidth anchors.horizontalCenter: parent.horizontalCenter - visible: _showMavlinkLog && _isPX4 + visible: _showMavlinkLog Column { id: mavlogColumn width: gcsColumn.width @@ -435,7 +432,7 @@ Rectangle { height: logLabel.height anchors.margins: ScreenTools.defaultFontPixelWidth anchors.horizontalCenter: parent.horizontalCenter - visible: _showMavlinkLog && _isPX4 + visible: _showMavlinkLog QGCLabel { id: logLabel text: qsTr("MAVLink 2.0 Log Uploads (PX4 Pro Only)") @@ -448,7 +445,7 @@ Rectangle { color: qgcPal.windowShade anchors.margins: ScreenTools.defaultFontPixelWidth anchors.horizontalCenter: parent.horizontalCenter - visible: _showMavlinkLog && _isPX4 + visible: _showMavlinkLog Column { id: logColumn spacing: _columnSpacing @@ -627,8 +624,8 @@ Rectangle { text: QGroundControl.mavlinkLogManager.feedback enabled: !_disableDataPersistence style: TextAreaStyle { - textColor: qgcPal.textFieldText - backgroundColor: qgcPal.textField + textColor: qgcPal.windowShade + backgroundColor: qgcPal.text } } } diff --git a/src/ui/preferences/RemoteIDSettings.qml b/src/ui/preferences/RemoteIDSettings.qml deleted file mode 100644 index 11f723f..0000000 --- a/src/ui/preferences/RemoteIDSettings.qml +++ /dev/null @@ -1,922 +0,0 @@ -/**************************************************************************** - * - * (c) 2009-2022 QGROUNDCONTROL PROJECT - * - * QGroundControl is licensed according to the terms in the file - * COPYING.md in the root of the source code directory. - * - ****************************************************************************/ - -import QtQuick 2.3 -import QtQuick.Controls 1.2 -import QtQuick.Controls.Styles 1.4 -import QtQuick.Dialogs 1.2 -import QtQuick.Layouts 1.2 - -import QGroundControl 1.0 -import QGroundControl.FactSystem 1.0 -import QGroundControl.FactControls 1.0 -import QGroundControl.Controls 1.0 -import QGroundControl.ScreenTools 1.0 -import QGroundControl.MultiVehicleManager 1.0 -import QGroundControl.Palette 1.0 - -Rectangle { - id: remoteIDRoot - color: qgcPal.window - anchors.fill: parent - - // Visual properties - property real _margins: ScreenTools.defaultFontPixelWidth - property real _labelWidth: ScreenTools.defaultFontPixelWidth * 28 - property real _valueWidth: ScreenTools.defaultFontPixelWidth * 24 - property real _columnSpacing: ScreenTools.defaultFontPixelHeight * 0.25 - property real _comboFieldWidth: ScreenTools.defaultFontPixelWidth * 30 - property real _valueFieldWidth: ScreenTools.defaultFontPixelWidth * 10 - property int _borderWidth: 3 - // Flags visual properties - property real flagsWidth: ScreenTools.defaultFontPixelWidth * 15 - property real flagsHeight: ScreenTools.defaultFontPixelWidth * 7 - property int radiusFlags: 5 - - // Flag to get active vehicle and active RID - property var _activeRID: _activeVehicle && _activeVehicle.remoteIDManager ? _activeVehicle.remoteIDManager : null - - // Healthy connection with RID device - property bool commsGood: _activeVehicle && _activeVehicle.remoteIDManager ? _activeVehicle.remoteIDManager.commsGood : false - - // General properties - property var _activeVehicle: QGroundControl.multiVehicleManager.activeVehicle - property int _regionOperation: QGroundControl.settingsManager.remoteIDSettings.region.value - property int _locationType: QGroundControl.settingsManager.remoteIDSettings.locationType.value - property int _classificationType: QGroundControl.settingsManager.remoteIDSettings.classificationType.value - - enum RegionOperation { - FAA, - EU - } - - enum LocationType { - TAKEOFF, - LIVE, - FIXED - } - - enum ClassificationType { - UNDEFINED, - EU - } - - // GPS properties - property var gcsPosition: QGroundControl.qgcPositionManger.gcsPosition - property real gcsHeading: QGroundControl.qgcPositionManger.gcsHeading - property real gcsHDOP: QGroundControl.qgcPositionManger.gcsPositionHorizontalAccuracy - property string gpsDisabled: "Disabled" - property string gpsUdpPort: "UDP Port" - - QGCPalette { id: qgcPal } - - // Function to get the corresponding Self ID label depending on the Self ID Type selected - function getSelfIdLabelText() { - switch (selfIDComboBox.currentIndex) { - case 0: - return QGroundControl.settingsManager.remoteIDSettings.selfIDFree.shortDescription - break - case 1: - return QGroundControl.settingsManager.remoteIDSettings.selfIDEmergency.shortDescription - break - case 2: - return QGroundControl.settingsManager.remoteIDSettings.selfIDExtended.shortDescription - break - default: - return QGroundControl.settingsManager.remoteIDSettings.selfIDFree.shortDescription - } - } - - // Function to get the corresponding Self ID fact depending on the Self ID Type selected - function getSelfIDFact() { - switch (selfIDComboBox.currentIndex) { - case 0: - return QGroundControl.settingsManager.remoteIDSettings.selfIDFree - break - case 1: - return QGroundControl.settingsManager.remoteIDSettings.selfIDEmergency - break - case 2: - return QGroundControl.settingsManager.remoteIDSettings.selfIDExtended - break - default: - return QGroundControl.settingsManager.remoteIDSettings.selfIDFree - } - } - - // Function to move flickable to desire position - function getFlickableToPosition(y) { - flicakbleRID.contentY = y - } - - Item { - id: flagsItem - anchors.top: parent.top - anchors.horizontalCenter: parent.horizontalCenter - anchors.horizontalCenterOffset: ScreenTools.defaultFontPixelWidth // Need this to account for the slight offset in the flickable - width: flicakbleRID.innerWidth - height: flagsColumn.height - - ColumnLayout { - id: flagsColumn - anchors.horizontalCenter: parent.horizontalCenter - spacing: _margins - - // ---------------------------------------- STATUS ----------------------------------------- - // Status flags. Visual representation for the state of all necesary information for remoteID - // to work propely. - Rectangle { - id: flagsRectangle - Layout.preferredHeight: statusGrid.height + (_margins * 2) - Layout.preferredWidth: statusGrid.width + (_margins * 2) - color: qgcPal.windowShade - visible: _activeVehicle - Layout.fillWidth: true - - GridLayout { - id: statusGrid - anchors.margins: _margins - anchors.top: parent.top - anchors.horizontalCenter: parent.horizontalCenter - rows: 1 - rowSpacing: _margins * 3 - columnSpacing: _margins * 2 - - Rectangle { - id: armFlag - Layout.preferredHeight: flagsHeight - Layout.preferredWidth: flagsWidth - color: _activeRID ? (_activeVehicle.remoteIDManager.armStatusGood ? qgcPal.colorGreen : qgcPal.colorRed) : qgcPal.colorGrey - radius: radiusFlags - visible: commsGood - - QGCLabel { - anchors.fill: parent - text: qsTr("ARM STATUS") - wrapMode: Text.WordWrap - horizontalAlignment: Text.AlignHCenter - verticalAlignment: Text.AlignVCenter - font.bold: true - } - - // On clikced we go to the corresponding settings - MouseArea { - anchors.fill: parent - onClicked: getFlickableToPosition(flicakbleRID.armstatusY) - } - - } - - Rectangle { - id: commsFlag - Layout.preferredHeight: flagsHeight - Layout.preferredWidth: flagsWidth - color: _activeRID ? (_activeVehicle.remoteIDManager.commsGood ? qgcPal.colorGreen : qgcPal.colorRed) : qgcPal.colorGrey - radius: radiusFlags - - QGCLabel { - anchors.fill: parent - text: _activeRID && _activeVehicle.remoteIDManager.commsGood ? qsTr("RID COMMS") : qsTr("NOT CONNECTED") - wrapMode: Text.WordWrap - horizontalAlignment: Text.AlignHCenter - verticalAlignment: Text.AlignVCenter - font.bold: true - } - } - - Rectangle { - id: gpsFlag - Layout.preferredHeight: flagsHeight - Layout.preferredWidth: flagsWidth - color: _activeRID ? (_activeVehicle.remoteIDManager.gcsGPSGood ? qgcPal.colorGreen : qgcPal.colorRed) : qgcPal.colorGrey - radius: radiusFlags - visible: commsGood - - QGCLabel { - anchors.fill: parent - text: qsTr("GCS GPS") - wrapMode: Text.WordWrap - horizontalAlignment: Text.AlignHCenter - verticalAlignment: Text.AlignVCenter - font.bold: true - } - - // On clikced we go to the corresponding settings - MouseArea { - anchors.fill: parent - onClicked: getFlickableToPosition(flicakbleRID.gpsY) - } - } - - Rectangle { - id: basicIDFlag - Layout.preferredHeight: flagsHeight - Layout.preferredWidth: flagsWidth - color: _activeRID ? (_activeVehicle.remoteIDManager.basicIDGood ? qgcPal.colorGreen : qgcPal.colorRed) : qgcPal.colorGrey - radius: radiusFlags - visible: commsGood - - QGCLabel { - anchors.fill: parent - text: qsTr("BASIC ID") - wrapMode: Text.WordWrap - horizontalAlignment: Text.AlignHCenter - verticalAlignment: Text.AlignVCenter - font.bold: true - } - - // On clikced we go to the corresponding settings - MouseArea { - anchors.fill: parent - onClicked: getFlickableToPosition(flicakbleRID.basicIDY) - } - } - - Rectangle { - id: operaotrIDFlag - Layout.preferredHeight: flagsHeight - Layout.preferredWidth: flagsWidth - color: _activeRID ? (_activeVehicle.remoteIDManager.operatorIDGood ? qgcPal.colorGreen : qgcPal.colorRed) : qgcPal.colorGrey - radius: radiusFlags - visible: commsGood && _activeRID ? (QGroundControl.settingsManager.remoteIDSettings.sendOperatorID.value || _regionOperation == RemoteIDSettings.RegionOperation.EU) : false - - QGCLabel { - anchors.fill: parent - text: qsTr("OPERATOR ID") - wrapMode: Text.WordWrap - horizontalAlignment: Text.AlignHCenter - verticalAlignment: Text.AlignVCenter - font.bold: true - } - - // On clicked we go to the corresponding settings - MouseArea { - anchors.fill: parent - onClicked: getFlickableToPosition(flicakbleRID.operatorIDY) - } - } - } - } - } - } - - QGCFlickable { - id: flicakbleRID - clip: true - anchors.top: flagsItem.visible ? flagsItem.bottom : parent.top - anchors.left: parent.left - anchors.right: parent.right - anchors.bottom: parent.bottom - anchors.margins: ScreenTools.defaultFontPixelWidth - contentHeight: outerItem.height - contentWidth: outerItem.width - flickableDirection: Flickable.VerticalFlick - - property var innerWidth: settingsItem.width - - // Properties to position flickable - property var armstatusY: armStatusLabel.y - property var gpsY: gpsLabel.y - property var basicIDY: basicIDLabel.y - property var operatorIDY: operatorIDLabel.y - - Item { - id: outerItem - width: Math.max(remoteIDRoot.width, settingsItem.width) - height: settingsItem.height - - ColumnLayout { - id: settingsItem - anchors.horizontalCenter: parent.horizontalCenter - spacing: _margins - - // ----------------------------------------------------------------------------------------- - // ---------------------------------------- ARM STATUS ----------------------------------------- - // Arm status error - QGCLabel { - id: armStatusLabel - text: qsTr("ARM STATUS") - Layout.alignment: Qt.AlignHCenter - font.pointSize: ScreenTools.mediumFontPointSize - visible: _activeVehicle && !_activeVehicle.remoteIDManager.armStatusGood - } - - Rectangle { - id: armStatusRectangle - Layout.preferredHeight: armStatusGrid.height + (_margins * 2) - Layout.preferredWidth: armStatusGrid.width + (_margins * 2) - color: qgcPal.windowShade - Layout.fillWidth: true - border.width: _borderWidth - border.color: _activeRID ? (_activeVehicle.remoteIDManager.armStatusGood ? color : qgcPal.colorRed) : color - - visible: _activeVehicle && !_activeVehicle.remoteIDManager.armStatusGood - - GridLayout { - id: armStatusGrid - anchors.margins: _margins - anchors.top: parent.top - anchors.horizontalCenter: parent.horizontalCenter - columns: 2 - rowSpacing: _margins * 3 - columnSpacing: _margins * 2 - - QGCLabel { - text: qsTr("Arm status error: ") - Layout.fillWidth: true - } - QGCLabel { - text: _activeVehicle ? _activeVehicle.remoteIDManager.armStatusError : "" - Layout.fillWidth: true - } - } - } - // ----------------------------------------------------------------------------------------- - - // ---------------------------------------- REGION ----------------------------------------- - // Region of operation to accomodate for different requirements - QGCLabel { - id: regionLabel - text: qsTr("Region") - Layout.alignment: Qt.AlignHCenter - font.pointSize: ScreenTools.mediumFontPointSize - } - - Rectangle { - id: regionRectangle - Layout.preferredHeight: regionGrid.height + (_margins * 2) - Layout.preferredWidth: regionGrid.width + (_margins * 2) - color: qgcPal.windowShade - visible: true - Layout.fillWidth: true - - GridLayout { - id: regionGrid - anchors.margins: _margins - anchors.top: parent.top - anchors.horizontalCenter: parent.horizontalCenter - columns: 2 - rowSpacing: _margins * 3 - columnSpacing: _margins * 2 - - QGCLabel { - text: QGroundControl.settingsManager.remoteIDSettings.region.shortDescription - visible: QGroundControl.settingsManager.remoteIDSettings.region.visible - Layout.fillWidth: true - } - FactComboBox { - fact: QGroundControl.settingsManager.remoteIDSettings.region - visible: QGroundControl.settingsManager.remoteIDSettings.region.visible - Layout.fillWidth: true - sizeToContents: true - // In case we change from EU to FAA having the location Type to FIXED, since its not supported in FAA - // we need to change it to Live GNSS - onActivated: { - if (currentIndex == RemoteIDSettings.RegionOperation.FAA && QGroundControl.settingsManager.remoteIDSettings.locationType.value != RemoteIDSettings.LocationType.LIVE) - QGroundControl.settingsManager.remoteIDSettings.locationType.value = RemoteIDSettings.LocationType.LIVE - } - } - - QGCLabel { - text: QGroundControl.settingsManager.remoteIDSettings.classificationType.shortDescription - visible: _regionOperation == RemoteIDSettings.RegionOperation.EU - Layout.fillWidth: true - } - FactComboBox { - fact: QGroundControl.settingsManager.remoteIDSettings.classificationType - visible: _regionOperation == RemoteIDSettings.RegionOperation.EU - Layout.fillWidth: true - sizeToContents: true - } - - QGCLabel { - text: QGroundControl.settingsManager.remoteIDSettings.categoryEU.shortDescription - visible: (_classificationType == RemoteIDSettings.ClassificationType.EU) && (_regionOperation == RemoteIDSettings.RegionOperation.EU) - Layout.fillWidth: true - } - FactComboBox { - fact: QGroundControl.settingsManager.remoteIDSettings.categoryEU - visible: (_classificationType == RemoteIDSettings.ClassificationType.EU) && (_regionOperation == RemoteIDSettings.RegionOperation.EU) - Layout.fillWidth: true - sizeToContents: true - } - - QGCLabel { - text: QGroundControl.settingsManager.remoteIDSettings.classEU.shortDescription - visible: (_classificationType == RemoteIDSettings.ClassificationType.EU) && (_regionOperation == RemoteIDSettings.RegionOperation.EU) - Layout.fillWidth: true - } - FactComboBox { - fact: QGroundControl.settingsManager.remoteIDSettings.classEU - visible: (_classificationType == RemoteIDSettings.ClassificationType.EU) && (_regionOperation == RemoteIDSettings.RegionOperation.EU) - Layout.fillWidth: true - sizeToContents: true - } - } - } - // ----------------------------------------------------------------------------------------- - - // ----------------------------------------- GPS ------------------------------------------- - // Data representation and connection options for GCS GPS. - QGCLabel { - id: gpsLabel - text: qsTr("GPS GCS") - Layout.alignment: Qt.AlignHCenter - font.pointSize: ScreenTools.mediumFontPointSize - } - - Rectangle { - id: gpsRectangle - Layout.preferredHeight: gpsGrid.height + gpsGridData.height + (_margins * 3) - Layout.preferredWidth: gpsGrid.width + (_margins * 2) - color: qgcPal.windowShade - visible: true - Layout.fillWidth: true - - border.width: _borderWidth - border.color: _activeRID ? (_activeVehicle.remoteIDManager.gcsGPSGood ? color : qgcPal.colorRed) : color - - property var locationTypeValue: QGroundControl.settingsManager.remoteIDSettings.locationType.value - - // In case we change from FAA to EU region, having selected Location Type FIXED, - // We have to change the currentindex to the locationType forced when we change region - onLocationTypeValueChanged: { - if (locationTypeComboBox.currentIndex != locationTypeValue) { - locationTypeComboBox.currentIndex = locationTypeValue - } - } - - GridLayout { - id: gpsGridData - anchors.margins: _margins - anchors.top: parent.top - anchors.horizontalCenter: parent.horizontalCenter - rowSpacing: _margins - columns: 2 - columnSpacing: _margins * 2 - - QGCLabel { - text: QGroundControl.settingsManager.remoteIDSettings.locationType.shortDescription - visible: QGroundControl.settingsManager.remoteIDSettings.locationType.visible - Layout.fillWidth: true - } - FactComboBox { - id: locationTypeComboBox - fact: QGroundControl.settingsManager.remoteIDSettings.locationType - visible: QGroundControl.settingsManager.remoteIDSettings.locationType.visible - Layout.fillWidth: true - sizeToContents: true - - onActivated: { - // FAA doesnt allow to set a Fixed position. Is either Live GNSS or Takeoff - if (_regionOperation == RemoteIDSettings.RegionOperation.FAA) { - if (currentIndex != 1) { - QGroundControl.settingsManager.remoteIDSettings.locationType.value = 1 - currentIndex = 1 - } - } else { - // TODO: this lines below efectively disable TAKEOFF option. Uncoment when we add support for it - if (currentIndex == 0) { - QGroundControl.settingsManager.remoteIDSettings.locationType.value = 1 - currentIndex = 1 - } else { - QGroundControl.settingsManager.remoteIDSettings.locationType.value = index - currentIndex = index - } - // -------------------------------------------------------------------------------------------------- - } - } - } - - QGCLabel { - text: qsTr("Latitude Fixed(-90 to 90)") - visible: _locationType == RemoteIDSettings.LocationType.FIXED - Layout.fillWidth: true - } - FactTextField { - visible: _locationType == RemoteIDSettings.LocationType.FIXED - Layout.fillWidth: true - fact: QGroundControl.settingsManager.remoteIDSettings.latitudeFixed - } - - QGCLabel { - text: qsTr("Longitude Fixed(-180 to 180)") - visible: _locationType == RemoteIDSettings.LocationType.FIXED - Layout.fillWidth: true - } - FactTextField { - visible: _locationType == RemoteIDSettings.LocationType.FIXED - Layout.fillWidth: true - fact: QGroundControl.settingsManager.remoteIDSettings.longitudeFixed - } - - QGCLabel { - text: qsTr("Altitude Fixed") - visible: _locationType == RemoteIDSettings.LocationType.FIXED - Layout.fillWidth: true - } - FactTextField { - visible: _locationType == RemoteIDSettings.LocationType.FIXED - Layout.fillWidth: true - fact: QGroundControl.settingsManager.remoteIDSettings.altitudeFixed - } - - QGCLabel { - text: qsTr("Latitude") - Layout.fillWidth: true - visible: _locationType != RemoteIDSettings.LocationType.TAKEOFF - } - QGCLabel { - text: gcsPosition.isValid ? gcsPosition.latitude : "N/A" - Layout.fillWidth: true - visible: _locationType != RemoteIDSettings.LocationType.TAKEOFF - } - - QGCLabel { - text: qsTr("Longitude") - Layout.fillWidth: true - visible: _locationType != RemoteIDSettings.LocationType.TAKEOFF - } - QGCLabel { - text: gcsPosition.isValid ? gcsPosition.longitude : "N/A" - Layout.fillWidth: true - visible: _locationType != RemoteIDSettings.LocationType.TAKEOFF - } - - QGCLabel { - text: _regionOperation == RemoteIDSettings.RegionOperation.FAA ? - qsTr("Altitude") + qsTr(" (Mandatory)") : - qsTr("Altitude") - Layout.fillWidth: true - visible: _locationType != RemoteIDSettings.LocationType.TAKEOFF - } - QGCLabel { - text: gcsPosition.isValid && !isNaN(gcsPosition.altitude) ? gcsPosition.altitude : "N/A" - Layout.fillWidth: true - visible: _locationType != RemoteIDSettings.LocationType.TAKEOFF - } - - QGCLabel { - text: qsTr("Heading") - Layout.fillWidth: true - visible: _locationType != RemoteIDSettings.LocationType.TAKEOFF - } - QGCLabel { - text: gcsPosition.isValid && !isNaN(gcsHeading) ? gcsHeading : "N/A" - Layout.fillWidth: true - visible: _locationType != RemoteIDSettings.LocationType.TAKEOFF - } - - QGCLabel { - text: qsTr("Hor. Accuracy") - Layout.fillWidth: true - visible: _locationType != RemoteIDSettings.LocationType.TAKEOFF - } - QGCLabel { - text: gcsPosition.isValid && gcsHDOP ? ( gcsHDOP + " m" ) : "N/A" - Layout.fillWidth: true - visible: _locationType != RemoteIDSettings.LocationType.TAKEOFF - } - } - - GridLayout { - id: gpsGrid - visible: !ScreenTools.isMobile - && QGroundControl.settingsManager.autoConnectSettings.autoConnectNmeaPort.visible - && QGroundControl.settingsManager.autoConnectSettings.autoConnectNmeaBaud.visible - && _locationType != RemoteIDSettings.LocationType.TAKEOFF - anchors.margins: _margins - anchors.top: gpsGridData.bottom - anchors.horizontalCenter: parent.horizontalCenter - rowSpacing: _margins * 3 - columns: 2 - columnSpacing: _margins * 2 - - QGCLabel { - text: qsTr("NMEA External GPS Device") - } - QGCComboBox { - id: nmeaPortCombo - Layout.preferredWidth: _comboFieldWidth - - model: ListModel { - } - - onActivated: { - if (index != -1) { - QGroundControl.settingsManager.autoConnectSettings.autoConnectNmeaPort.value = textAt(index); - } - } - Component.onCompleted: { - model.append({text: gpsDisabled}) - model.append({text: gpsUdpPort}) - - for (var i in QGroundControl.linkManager.serialPorts) { - nmeaPortCombo.model.append({text:QGroundControl.linkManager.serialPorts[i]}) - } - var index = nmeaPortCombo.find(QGroundControl.settingsManager.autoConnectSettings.autoConnectNmeaPort.valueString); - nmeaPortCombo.currentIndex = index; - if (QGroundControl.linkManager.serialPorts.length === 0) { - nmeaPortCombo.model.append({text: "Serial "}) - } - } - } - - QGCLabel { - visible: nmeaPortCombo.currentText !== gpsUdpPort && nmeaPortCombo.currentText !== gpsDisabled - text: qsTr("NMEA GPS Baudrate") - } - QGCComboBox { - visible: nmeaPortCombo.currentText !== gpsUdpPort && nmeaPortCombo.currentText !== gpsDisabled - id: nmeaBaudCombo - Layout.preferredWidth: _comboFieldWidth - model: [1200, 2400, 4800, 9600, 19200, 38400, 57600, 115200, 230400, 460800, 921600] - - onActivated: { - if (index != -1) { - QGroundControl.settingsManager.autoConnectSettings.autoConnectNmeaBaud.value = textAt(index); - } - } - Component.onCompleted: { - var index = nmeaBaudCombo.find(QGroundControl.settingsManager.autoConnectSettings.autoConnectNmeaBaud.valueString); - nmeaBaudCombo.currentIndex = index; - } - } - - QGCLabel { - text: qsTr("NMEA stream UDP port") - visible: nmeaPortCombo.currentText === gpsUdpPort - } - FactTextField { - visible: nmeaPortCombo.currentText === gpsUdpPort - Layout.preferredWidth: _valueFieldWidth - fact: QGroundControl.settingsManager.autoConnectSettings.nmeaUdpPort - } - } - } - // ----------------------------------------------------------------------------------------- - - // -------------------------------------- BASIC ID ------------------------------------------- - QGCLabel { - id: basicIDLabel - text: qsTr("BASIC ID") - Layout.alignment: Qt.AlignHCenter - font.pointSize: ScreenTools.mediumFontPointSize - } - - Rectangle { - id: basicIDRectangle - Layout.preferredHeight: basicIDGrid.height + basicIDnote.height + (_margins * 4) - Layout.preferredWidth: basicIDGrid.width + basicIDnote.width + (_margins * 2) - color: qgcPal.windowShade - Layout.fillWidth: true - - border.width: _borderWidth - border.color: _activeRID ? (_activeVehicle.remoteIDManager.basicIDGood ? color : qgcPal.colorRed) : color - - QGCLabel { - id: basicIDnote - anchors.margins: _margins - anchors.top: parent.top - anchors.horizontalCenter: parent.horizontalCenter - anchors.bottomMargin: _margins * 2 - width: basicIDGrid.width - text: qsTr("Note: This parameter is optional if Basic ID is already set on RID device. " + - "On that case, this one will be registered as Basic ID 2") - wrapMode: Text.Wrap - visible: QGroundControl.settingsManager.remoteIDSettings.basicIDType.visible - - } - - GridLayout { - id: basicIDGrid - anchors.margins: _margins - anchors.top: basicIDnote.bottom - anchors.horizontalCenter: parent.horizontalCenter - columns: 2 - rowSpacing: _margins * 3 - columnSpacing: _margins * 2 - - QGCLabel { - text: QGroundControl.settingsManager.remoteIDSettings.basicIDType.shortDescription - visible: QGroundControl.settingsManager.remoteIDSettings.basicIDType.visible - Layout.fillWidth: true - } - FactComboBox { - fact: QGroundControl.settingsManager.remoteIDSettings.basicIDType - visible: QGroundControl.settingsManager.remoteIDSettings.basicIDType.visible - Layout.fillWidth: true - sizeToContents: true - } - - QGCLabel { - text: QGroundControl.settingsManager.remoteIDSettings.basicIDUaType.shortDescription - visible: QGroundControl.settingsManager.remoteIDSettings.basicIDUaType.visible - Layout.fillWidth: true - } - FactComboBox { - fact: QGroundControl.settingsManager.remoteIDSettings.basicIDUaType - visible: QGroundControl.settingsManager.remoteIDSettings.basicIDUaType.visible - Layout.fillWidth: true - sizeToContents: true - } - - QGCLabel { - text: _activeRID && _activeVehicle.remoteIDManager.basicIDGood ? - QGroundControl.settingsManager.remoteIDSettings.basicID.shortDescription : - QGroundControl.settingsManager.remoteIDSettings.basicID.shortDescription + qsTr(" (Mandatory)") - visible: QGroundControl.settingsManager.remoteIDSettings.basicID.visible - Layout.alignment: Qt.AlignHCenter - Layout.fillWidth: true - } - FactTextField { - fact: QGroundControl.settingsManager.remoteIDSettings.basicID - visible: QGroundControl.settingsManager.remoteIDSettings.basicID.visible - Layout.fillWidth: true - } - - QGCLabel { - text: QGroundControl.settingsManager.remoteIDSettings.sendBasicID.shortDescription - Layout.fillWidth: true - visible: QGroundControl.settingsManager.remoteIDSettings.basicID.visible - } - FactCheckBox { - fact: QGroundControl.settingsManager.remoteIDSettings.sendBasicID - visible: QGroundControl.settingsManager.remoteIDSettings.basicID.visible - } - } - } - // ------------------------------------------------------------------------------------------ - - // ------------------------------------ OPERATOR ID ---------------------------------------- - QGCLabel { - id: operatorIDLabel - text: qsTr("Operator ID") - Layout.alignment: Qt.AlignHCenter - font.pointSize: ScreenTools.mediumFontPointSize - } - - Rectangle { - id: operatorIDRectangle - Layout.preferredHeight: operatorIDGrid.height + (_margins * 3) - Layout.preferredWidth: operatorIDGrid.width + (_margins * 2) - color: qgcPal.windowShade - Layout.fillWidth: true - - border.width: _borderWidth - border.color: (_regionOperation == RemoteIDSettings.RegionOperation.EU || QGroundControl.settingsManager.remoteIDSettings.sendOperatorID.value) ? - (_activeRID && !_activeVehicle.remoteIDManager.operatorIDGood ? qgcPal.colorRed : color) : color - - GridLayout { - id: operatorIDGrid - anchors.margins: _margins - anchors.top: parent.top - anchors.horizontalCenter: parent.horizontalCenter - columns: 2 - rowSpacing: _margins * 3 - columnSpacing: _margins * 2 - - QGCLabel { - text: QGroundControl.settingsManager.remoteIDSettings.operatorIDType.shortDescription - visible: QGroundControl.settingsManager.remoteIDSettings.operatorIDType.visible - Layout.fillWidth: true - } - FactComboBox { - id: operatorIDFactComboBox - fact: QGroundControl.settingsManager.remoteIDSettings.operatorIDType - visible: QGroundControl.settingsManager.remoteIDSettings.operatorIDType.visible && (QGroundControl.settingsManager.remoteIDSettings.operatorIDType.enumValues.length > 1) - Layout.fillWidth: true - sizeToContents: true - } - QGCLabel{ - text: QGroundControl.settingsManager.remoteIDSettings.operatorIDType.enumStringValue - visible: !operatorIDFactComboBox.visible - Layout.fillWidth: true - } - - QGCLabel { - text: _regionOperation == RemoteIDSettings.RegionOperation.FAA ? - QGroundControl.settingsManager.remoteIDSettings.operatorID.shortDescription : - QGroundControl.settingsManager.remoteIDSettings.operatorID.shortDescription + qsTr(" (Mandatory)") - visible: QGroundControl.settingsManager.remoteIDSettings.operatorID.visible - Layout.alignment: Qt.AlignHCenter - Layout.fillWidth: true - } - FactTextField { - id: operatorIDTextField - fact: QGroundControl.settingsManager.remoteIDSettings.operatorID - visible: QGroundControl.settingsManager.remoteIDSettings.operatorID.visible - Layout.fillWidth: true - maximumLength: 20 // Maximum defined by Mavlink definition of OPEN_DRONE_ID_OPERATOR_ID message - onEditingFinished: { - if (_activeVehicle) { - _activeVehicle.remoteIDManager.checkOperatorID() - } - } - - } - - QGCLabel { - text: QGroundControl.settingsManager.remoteIDSettings.sendOperatorID.shortDescription - Layout.fillWidth: true - visible: _regionOperation == RemoteIDSettings.RegionOperation.FAA - } - FactCheckBox { - fact: QGroundControl.settingsManager.remoteIDSettings.sendOperatorID - visible: _regionOperation == RemoteIDSettings.RegionOperation.FAA - onClicked: { - if (checked) { - if (_activeVehicle) { - _activeVehicle.remoteIDManager.checkOperatorID() - } - } - } - } - } - } - // ----------------------------------------------------------------------------------------- - - // -------------------------------------- SELF ID ------------------------------------------ - QGCLabel { - id: selfIDLabel - text: qsTr("Self ID") - Layout.alignment: Qt.AlignHCenter - font.pointSize: ScreenTools.mediumFontPointSize - } - - Rectangle { - id: selfIDRectangle - Layout.preferredHeight: selfIDGrid.height + selfIDnote.height + (_margins * 3) - Layout.preferredWidth: selfIDGrid.width + (_margins * 2) - color: qgcPal.windowShade - visible: true - Layout.fillWidth: true - - GridLayout { - id: selfIDGrid - anchors.margins: _margins - anchors.top: parent.top - anchors.horizontalCenter: parent.horizontalCenter - columns: 2 - rowSpacing: _margins * 3 - columnSpacing: _margins * 2 - - QGCLabel { - text: QGroundControl.settingsManager.remoteIDSettings.selfIDType.shortDescription - visible: QGroundControl.settingsManager.remoteIDSettings.selfIDType.visible - Layout.fillWidth: true - } - FactComboBox { - id: selfIDComboBox - fact: QGroundControl.settingsManager.remoteIDSettings.selfIDType - visible: QGroundControl.settingsManager.remoteIDSettings.selfIDType.visible - Layout.fillWidth: true - sizeToContents: true - } - - QGCLabel { - text: getSelfIdLabelText() - Layout.fillWidth: true - } - FactTextField { - fact: getSelfIDFact() - Layout.fillWidth: true - maximumLength: 23 // Maximum defined by Mavlink definition of OPEN_DRONE_ID_SELF_ID message - } - - QGCLabel { - text: QGroundControl.settingsManager.remoteIDSettings.sendSelfID.shortDescription - Layout.fillWidth: true - } - FactCheckBox { - fact: QGroundControl.settingsManager.remoteIDSettings.sendSelfID - visible: QGroundControl.settingsManager.remoteIDSettings.sendSelfID.visible - } - } - - QGCLabel { - id: selfIDnote - width: selfIDGrid.width - anchors.margins: _margins - anchors.top: selfIDGrid.bottom - anchors.horizontalCenter: parent.horizontalCenter - anchors.bottomMargin: _margins * 2 - text: qsTr("Note: Even if this box is unset, QGroundControl will send self ID message " + - "if an emergency is set, or after it has been cleared. \ - The message for each kind of selfID is saved and preserves reboots. Select " + - "each type on the Self ID type dropdown to configure the message to be sent") - wrapMode: Text.Wrap - visible: QGroundControl.settingsManager.remoteIDSettings.selfIDType.visible - } - } - // ----------------------------------------------------------------------------------------- - } - } - } -} diff --git a/src/ui/toolbar/APMSupportForwardingIndicator.qml b/src/ui/toolbar/APMSupportForwardingIndicator.qml deleted file mode 100644 index 91e1a4a..0000000 --- a/src/ui/toolbar/APMSupportForwardingIndicator.qml +++ /dev/null @@ -1,75 +0,0 @@ -/**************************************************************************** - * - * (c) 2009-2023 QGROUNDCONTROL PROJECT - * - * QGroundControl is licensed according to the terms in the file - * COPYING.md in the root of the source code directory. - * - ****************************************************************************/ - -import QtQuick 2.11 -import QtQuick.Layouts 1.11 - -import QGroundControl 1.0 -import QGroundControl.Controls 1.0 -import QGroundControl.ScreenTools 1.0 -import QGroundControl.Palette 1.0 - -//------------------------------------------------------------------------- -//-- Telemetry RSSI -Item { - id: _root - anchors.top: parent.top - anchors.bottom: parent.bottom - width: forwardingSupportIcon.width * 1.1 - - property bool showIndicator: QGroundControl.linkManager.mavlinkSupportForwardingEnabled - - Component { - id: forwardingSupportInfo - - Rectangle { - width: telemGrid.width + ScreenTools.defaultFontPixelWidth * 3 - height: telemGrid.height + ScreenTools.defaultFontPixelHeight * 2 - radius: ScreenTools.defaultFontPixelHeight * 0.5 - color: qgcPal.window - - GridLayout { - id: telemGrid - anchors.margins: ScreenTools.defaultFontPixelHeight - columnSpacing: ScreenTools.defaultFontPixelWidth - columns: 2 - anchors.centerIn: parent - - QGCLabel { - Layout.columnSpan: 2 - text: qsTr("Mavlink traffic is being forwarded to a support server") - } - - QGCLabel { - text: qsTr("Server name:") - } - QGCLabel { - text: QGroundControl.settingsManager.appSettings.forwardMavlinkAPMSupportHostName.value - } - } - } - } - - Image { - id: forwardingSupportIcon - anchors.top: parent.top - anchors.bottom: parent.bottom - width: height - sourceSize.height: height - source: "/qmlimages/ForwardingSupportIconGreen.svg" - fillMode: Image.PreserveAspectFit - } - - MouseArea { - anchors.fill: parent - onClicked: { - mainWindow.showIndicatorPopup(_root, forwardingSupportInfo) - } - } -} diff --git a/src/ui/toolbar/CMakeLists.txt b/src/ui/toolbar/CMakeLists.txt index a3bcb71..eff7ef2 100644 --- a/src/ui/toolbar/CMakeLists.txt +++ b/src/ui/toolbar/CMakeLists.txt @@ -2,7 +2,6 @@ add_custom_target(UiToolbarQml SOURCES ArmedIndicator.qml BatteryIndicator.qml - FlightModeMenuIndicator.qml GPSIndicator.qml GPSRTKIndicator.qml JoystickIndicator.qml diff --git a/src/ui/toolbar/FlightModeMenuIndicator.qml b/src/ui/toolbar/FlightModeMenuIndicator.qml deleted file mode 100644 index 5ac65c8..0000000 --- a/src/ui/toolbar/FlightModeMenuIndicator.qml +++ /dev/null @@ -1,102 +0,0 @@ -/**************************************************************************** - * - * (c) 2009-2022 QGROUNDCONTROL PROJECT - * - * QGroundControl is licensed according to the terms in the file - * COPYING.md in the root of the source code directory. - * - ****************************************************************************/ - -import QtQuick 2.11 -import QtQuick.Layouts 1.11 - -import QGroundControl 1.0 -import QGroundControl.Controls 1.0 -import QGroundControl.MultiVehicleManager 1.0 -import QGroundControl.ScreenTools 1.0 -import QGroundControl.Palette 1.0 - -Item { - id: _root - Layout.preferredWidth: rowLayout.width - - property real fontPointSize: ScreenTools.largeFontPointSize - property var activeVehicle: QGroundControl.multiVehicleManager.activeVehicle - - Component { - id: flightModeMenu - - Rectangle { - width: flickable.width + (ScreenTools.defaultFontPixelWidth * 2) - height: flickable.height + (ScreenTools.defaultFontPixelWidth * 2) - radius: ScreenTools.defaultFontPixelHeight * 0.5 - color: qgcPal.window - border.color: qgcPal.text - - QGCFlickable { - id: flickable - anchors.margins: ScreenTools.defaultFontPixelWidth - anchors.top: parent.top - anchors.left: parent.left - width: mainLayout.width - height: _fullWindowHeight <= mainLayout.height ? _fullWindowHeight : mainLayout.height - flickableDirection: Flickable.VerticalFlick - contentHeight: mainLayout.height - contentWidth: mainLayout.width - - property real _fullWindowHeight: mainWindow.contentItem.height - (indicatorPopup.padding * 2) - (ScreenTools.defaultFontPixelWidth * 2) - - ColumnLayout { - id: mainLayout - spacing: ScreenTools.defaultFontPixelWidth / 2 - - Repeater { - model: activeVehicle ? activeVehicle.flightModes : [] - - QGCButton { - text: modelData - Layout.fillWidth: true - onClicked: { - activeVehicle.flightMode = text - mainWindow.hideIndicatorPopup() - } - } - } - } - } - } - } - - RowLayout { - id: rowLayout - spacing: 0 - height: parent.height - - QGCColoredImage { - id: flightModeIcon - width: ScreenTools.defaultFontPixelWidth * 2 - height: ScreenTools.defaultFontPixelHeight * 0.75 - fillMode: Image.PreserveAspectFit - mipmap: true - color: qgcPal.text - source: "/qmlimages/FlightModesComponentIcon.png" - Layout.alignment: Qt.AlignVCenter - } - - Item { - Layout.preferredWidth: ScreenTools.defaultFontPixelWidth / 2 - height: 1 - } - - QGCLabel { - text: activeVehicle ? activeVehicle.flightMode : qsTr("N/A", "No data to display") - font.pointSize: fontPointSize - Layout.alignment: Qt.AlignVCenter - } - } - - QGCMouseArea { - anchors.fill: parent - onClicked: mainWindow.showIndicatorPopup(_root, flightModeMenu) - } -} diff --git a/src/ui/toolbar/GPSRTKIndicator.qml b/src/ui/toolbar/GPSRTKIndicator.qml index 5af5598..4ff4f74 100644 --- a/src/ui/toolbar/GPSRTKIndicator.qml +++ b/src/ui/toolbar/GPSRTKIndicator.qml @@ -23,7 +23,7 @@ Item { anchors.top: parent.top anchors.bottom: parent.bottom - property bool showIndicator: QGroundControl.gpsRtk ? QGroundControl.gpsRtk.connected.value : false + property bool showIndicator: QGroundControl.gpsRtk.connected.value Component { id: gpsInfo diff --git a/src/ui/toolbar/Images/RidEmergencyBackground.svg b/src/ui/toolbar/Images/RidEmergencyBackground.svg deleted file mode 100644 index b1fa258..0000000 --- a/src/ui/toolbar/Images/RidEmergencyBackground.svg +++ /dev/null @@ -1 +0,0 @@ -RID_EMERGENCY_BACKGROUND_SVG \ No newline at end of file diff --git a/src/ui/toolbar/Images/RidEmergencyBackgroundHighlight.svg b/src/ui/toolbar/Images/RidEmergencyBackgroundHighlight.svg deleted file mode 100644 index 634a7aa..0000000 --- a/src/ui/toolbar/Images/RidEmergencyBackgroundHighlight.svg +++ /dev/null @@ -1 +0,0 @@ -RID_EMERGENCY_BACKGROUND_HIGHLIGHT_SVG \ No newline at end of file diff --git a/src/ui/toolbar/Images/RidFlagBackgroundGreen.svg b/src/ui/toolbar/Images/RidFlagBackgroundGreen.svg deleted file mode 100644 index b0a11b2..0000000 --- a/src/ui/toolbar/Images/RidFlagBackgroundGreen.svg +++ /dev/null @@ -1 +0,0 @@ -RID_FLAG_BACKGROUND_GREEN_SVG \ No newline at end of file diff --git a/src/ui/toolbar/Images/RidFlagBackgroundRed.svg b/src/ui/toolbar/Images/RidFlagBackgroundRed.svg deleted file mode 100644 index b8e72be..0000000 --- a/src/ui/toolbar/Images/RidFlagBackgroundRed.svg +++ /dev/null @@ -1 +0,0 @@ -RID_FLAG_BACKGROUND_RED_SVG \ No newline at end of file diff --git a/src/ui/toolbar/Images/RidIconGreen.svg b/src/ui/toolbar/Images/RidIconGreen.svg deleted file mode 100644 index 741e0f7..0000000 --- a/src/ui/toolbar/Images/RidIconGreen.svg +++ /dev/null @@ -1 +0,0 @@ -RID_ICON_GREEN_SVG \ No newline at end of file diff --git a/src/ui/toolbar/Images/RidIconGrey.svg b/src/ui/toolbar/Images/RidIconGrey.svg deleted file mode 100644 index f0fe62e..0000000 --- a/src/ui/toolbar/Images/RidIconGrey.svg +++ /dev/null @@ -1 +0,0 @@ -RID_ICON_GREY_SVG \ No newline at end of file diff --git a/src/ui/toolbar/Images/RidIconRed.svg b/src/ui/toolbar/Images/RidIconRed.svg deleted file mode 100644 index 4c8b717..0000000 --- a/src/ui/toolbar/Images/RidIconRed.svg +++ /dev/null @@ -1 +0,0 @@ -REID_ICON_RED_SVG \ No newline at end of file diff --git a/src/ui/toolbar/Images/RidIconYellow.svg b/src/ui/toolbar/Images/RidIconYellow.svg deleted file mode 100644 index fcc5f35..0000000 --- a/src/ui/toolbar/Images/RidIconYellow.svg +++ /dev/null @@ -1 +0,0 @@ -RID_ICON_YELLOW_SVG \ No newline at end of file diff --git a/src/ui/toolbar/MainStatusIndicator.qml b/src/ui/toolbar/MainStatusIndicator.qml index 1e2ff5f..67fbd81 100644 --- a/src/ui/toolbar/MainStatusIndicator.qml +++ b/src/ui/toolbar/MainStatusIndicator.qml @@ -15,7 +15,6 @@ import QGroundControl.Controls 1.0 import QGroundControl.MultiVehicleManager 1.0 import QGroundControl.ScreenTools 1.0 import QGroundControl.Palette 1.0 -import QGroundControl.FactSystem 1.0 RowLayout { id: _root @@ -27,7 +26,6 @@ RowLayout { property bool _armed: _activeVehicle ? _activeVehicle.armed : false property real _margins: ScreenTools.defaultFontPixelWidth property real _spacing: ScreenTools.defaultFontPixelWidth / 2 - property bool _healthAndArmingChecksSupported: _activeVehicle ? _activeVehicle.healthAndArmingCheckReport.supported : false QGCLabel { id: mainStatusLabel @@ -51,17 +49,6 @@ RowLayout { } if (_activeVehicle.armed) { _mainStatusBGColor = "green" - - if (_healthAndArmingChecksSupported) { - if (_activeVehicle.healthAndArmingCheckReport.canArm) { - if (_activeVehicle.healthAndArmingCheckReport.hasWarningsOrErrors) { - _mainStatusBGColor = "yellow" - } - } else { - _mainStatusBGColor = "red" - } - } - if (_activeVehicle.flying) { return mainStatusLabel._flyingText } else if (_activeVehicle.landing) { @@ -70,19 +57,7 @@ RowLayout { return mainStatusLabel._armedText } } else { - if (_healthAndArmingChecksSupported) { - if (_activeVehicle.healthAndArmingCheckReport.canArm) { - if (_activeVehicle.healthAndArmingCheckReport.hasWarningsOrErrors) { - _mainStatusBGColor = "yellow" - } else { - _mainStatusBGColor = "green" - } - return mainStatusLabel._readyToFlyText - } else { - _mainStatusBGColor = "red" - return mainStatusLabel._notReadyToFlyText - } - } else if (_activeVehicle.readyToFlyAvailable) { + if (_activeVehicle.readyToFlyAvailable) { if (_activeVehicle.readyToFly) { _mainStatusBGColor = "green" return mainStatusLabel._readyToFlyText @@ -107,7 +82,7 @@ RowLayout { } } - QGCMouseArea { + MouseArea { anchors.left: parent.left anchors.right: parent.right anchors.verticalCenter: parent.verticalCenter @@ -122,10 +97,29 @@ RowLayout { height: 1 } - FlightModeMenuIndicator { + QGCColoredImage { + id: flightModeIcon + width: ScreenTools.defaultFontPixelWidth * 2 + height: ScreenTools.defaultFontPixelHeight * 0.75 + fillMode: Image.PreserveAspectFit + mipmap: true + color: qgcPal.text + source: "/qmlimages/FlightModesComponentIcon.png" + visible: flightModeMenu.visible + } + + Item { + Layout.preferredWidth: ScreenTools.defaultFontPixelWidth / 2 + height: 1 + visible: flightModeMenu.visible + } + + FlightModeMenu { id: flightModeMenu Layout.preferredHeight: _root.height - fontPointSize: _vehicleInAir ? ScreenTools.largeFontPointSize : ScreenTools.defaultFontPointSize + verticalAlignment: Text.AlignVCenter + font.pointSize: _vehicleInAir ? ScreenTools.largeFontPointSize : ScreenTools.defaultFontPointSize + mouseAreaLeftMargin: -(flightModeMenu.x - flightModeIcon.x) visible: _activeVehicle } @@ -175,10 +169,7 @@ RowLayout { spacing: _spacing QGCButton { - Layout.leftMargin: _healthAndArmingChecksSupported ? width / 2 : 0 - Layout.alignment: _healthAndArmingChecksSupported ? Qt.AlignLeft : Qt.AlignHCenter - // FIXME: forceArm is not possible anymore if _healthAndArmingChecksSupported == true - enabled: _armed || !_healthAndArmingChecksSupported || _activeVehicle.healthAndArmingCheckReport.canArm + Layout.alignment: Qt.AlignHCenter text: _armed ? qsTr("Disarm") : (forceArm ? qsTr("Force Arm") : qsTr("Arm")) property bool forceArm: false @@ -203,7 +194,6 @@ RowLayout { QGCLabel { Layout.alignment: Qt.AlignHCenter text: qsTr("Sensor Status") - visible: !_healthAndArmingChecksSupported } GridLayout { @@ -211,7 +201,6 @@ RowLayout { columnSpacing: _spacing rows: _activeVehicle.sysStatusSensorInfo.sensorNames.length flow: GridLayout.TopToBottom - visible: !_healthAndArmingChecksSupported Repeater { model: _activeVehicle.sysStatusSensorInfo.sensorNames @@ -229,126 +218,6 @@ RowLayout { } } } - - - QGCLabel { - text: qsTr("Arming Check Report:") - visible: _healthAndArmingChecksSupported && _activeVehicle.healthAndArmingCheckReport.problemsForCurrentMode.count > 0 - } - // List health and arming checks - QGCListView { - visible: _healthAndArmingChecksSupported - anchors.margins: ScreenTools.defaultFontPixelHeight - spacing: ScreenTools.defaultFontPixelWidth - width: mainWindow.width * 0.66666 - height: contentHeight - model: _activeVehicle ? _activeVehicle.healthAndArmingCheckReport.problemsForCurrentMode : null - delegate: listdelegate - } - - FactPanelController { - id: controller - } - - Component { - id: listdelegate - - Column { - width: parent ? parent.width : 0 - Row { - width: parent.width - QGCLabel { - id: message - text: object.message - wrapMode: Text.WordWrap - textFormat: TextEdit.RichText - width: parent.width - arrowDownIndicator.width - color: object.severity == 'error' ? qgcPal.colorRed : object.severity == 'warning' ? qgcPal.colorOrange : qgcPal.text - MouseArea { - anchors.fill: parent - onClicked: { - if (object.description != "") - object.expanded = !object.expanded - } - } - } - - QGCColoredImage { - id: arrowDownIndicator - height: 1.5 * ScreenTools.defaultFontPixelWidth - width: height - source: "/qmlimages/arrow-down.png" - color: qgcPal.text - visible: object.description != "" - MouseArea { - anchors.fill: parent - onClicked: object.expanded = !object.expanded - } - } - } - Rectangle { - property var margin: ScreenTools.defaultFontPixelWidth - id: descriptionRect - width: parent.width - height: description.height + margin - color: qgcPal.windowShade - visible: false - Connections { - target: object - function onExpandedChanged() { - if (object.expanded) { - description.height = description.preferredHeight - } else { - description.height = 0 - } - } - } - - Behavior on height { - NumberAnimation { - id: animation - duration: 150 - onRunningChanged: { - descriptionRect.visible = animation.running || object.expanded - } - } - } - QGCLabel { - id: description - anchors.centerIn: parent - width: parent.width - parent.margin * 2 - height: 0 - text: object.description - textFormat: TextEdit.RichText - wrapMode: Text.WordWrap - clip: true - property var fact: null - onLinkActivated: { - if (link.startsWith('param://')) { - var paramName = link.substr(8); - fact = controller.getParameterFact(-1, paramName, true) - if (fact != null) { - paramEditorDialogComponent.createObject(mainWindow).open() - } - } else { - Qt.openUrlExternally(link); - } - } - } - - Component { - id: paramEditorDialogComponent - - ParameterEditorDialog { - title: qsTr("Edit Parameter") - fact: description.fact - destroyOnClose: true - } - } - } - } - } - } } } diff --git a/src/ui/toolbar/MainToolBar.qml b/src/ui/toolbar/MainToolBar.qml index 9a183ff..d1069c2 100644 --- a/src/ui/toolbar/MainToolBar.qml +++ b/src/ui/toolbar/MainToolBar.qml @@ -33,12 +33,6 @@ Rectangle { property bool _communicationLost: _activeVehicle ? _activeVehicle.vehicleLinkManager.communicationLost : false property color _mainStatusBGColor: qgcPal.brandingPurple - function dropMessageIndicatorTool() { - if (currentToolbar === flyViewToolbar) { - indicatorLoader.item.dropMessageIndicatorTool(); - } - } - QGCPalette { id: qgcPal } /// Bottom single pixel divider diff --git a/src/ui/toolbar/MainToolBarIndicators.qml b/src/ui/toolbar/MainToolBarIndicators.qml index 7a384a4..1434244 100644 --- a/src/ui/toolbar/MainToolBarIndicators.qml +++ b/src/ui/toolbar/MainToolBarIndicators.qml @@ -24,10 +24,6 @@ Row { property var _activeVehicle: QGroundControl.multiVehicleManager.activeVehicle property real _toolIndicatorMargins: ScreenTools.defaultFontPixelHeight * 0.66 - function dropMessageIndicatorTool() { - toolIndicatorsRepeater.dropMessageIndicatorTool(); - } - Repeater { id: appRepeater model: QGroundControl.corePlugin.toolBarIndicators @@ -40,18 +36,7 @@ Row { } Repeater { - id: toolIndicatorsRepeater - model: _activeVehicle ? _activeVehicle.toolIndicators : [] - - function dropMessageIndicatorTool() { - for (var i=0; i 0 && _activeVehicle.rcRSSI <= 100 : false diff --git a/src/ui/toolbar/RemoteIDIndicator.qml b/src/ui/toolbar/RemoteIDIndicator.qml deleted file mode 100644 index 26e29f6..0000000 --- a/src/ui/toolbar/RemoteIDIndicator.qml +++ /dev/null @@ -1,358 +0,0 @@ -/**************************************************************************** - * - * (c) 2009-2022 QGROUNDCONTROL PROJECT - * - * QGroundControl is licensed according to the terms in the file - * COPYING.md in the root of the source code directory. - * - ****************************************************************************/ - -import QtQuick 2.11 -import QtQuick.Layouts 1.11 - -import QGroundControl 1.0 -import QGroundControl.Controls 1.0 -import QGroundControl.MultiVehicleManager 1.0 -import QGroundControl.ScreenTools 1.0 -import QGroundControl.Palette 1.0 - -//------------------------------------------------------------------------- -//-- Remote ID Indicator -Item { - id: _root - width: remoteIDIcon.width * 1.1 - anchors.top: parent.top - anchors.bottom: parent.bottom - - property bool showIndicator: QGroundControl.settingsManager.remoteIDSettings.enable.value - - property var _activeVehicle: QGroundControl.multiVehicleManager.activeVehicle - property int remoteIDState: getRemoteIDState() - - property bool gpsFlag: _activeVehicle && _activeVehicle.remoteIDManager ? _activeVehicle.remoteIDManager.gcsGPSGood : false - property bool basicIDFlag: _activeVehicle && _activeVehicle.remoteIDManager ? _activeVehicle.remoteIDManager.basicIDGood : false - property bool armFlag: _activeVehicle && _activeVehicle.remoteIDManager ? _activeVehicle.remoteIDManager.armStatusGood : false - property bool commsFlag: _activeVehicle && _activeVehicle.remoteIDManager ? _activeVehicle.remoteIDManager.commsGood : false - property bool emergencyDeclared: _activeVehicle && _activeVehicle.remoteIDManager ? _activeVehicle.remoteIDManager.emergencyDeclared : false - property bool operatorIDFlag: _activeVehicle && _activeVehicle.remoteIDManager ? _activeVehicle.remoteIDManager.operatorIDGood : false - - property int _regionOperation: QGroundControl.settingsManager.remoteIDSettings.region.value - - // Flags visual properties - property real flagsWidth: ScreenTools.defaultFontPixelWidth * 10 - property real flagsHeight: ScreenTools.defaultFontPixelWidth * 5 - property int radiusFlags: 5 - - // Visual properties - property real _margins: ScreenTools.defaultFontPixelWidth - - enum RIDState { - HEALTHY, - WARNING, - ERROR, - UNAVAILABLE - } - - enum RegionOperation { - FAA, - EU - } - - function getRIDIcon() { - switch (remoteIDState) { - case RemoteIDIndicator.RIDState.HEALTHY: - return "/qmlimages/RidIconGreen.svg" - break - case RemoteIDIndicator.RIDState.WARNING: - return "/qmlimages/RidIconYellow.svg" - break - case RemoteIDIndicator.RIDState.ERROR: - return "/qmlimages/RidIconRed.svg" - break - case RemoteIDIndicator.RIDState.UNAVAILABLE: - return "/qmlimages/RidIconGrey.svg" - break - default: - return "/qmlimages/RidIconGrey.svg" - } - } - - function getRemoteIDState() { - if (!_activeVehicle) { - return RemoteIDIndicator.RIDState.UNAVAILABLE - } - // We need to have comms and arm healthy to even be in any other state other than ERROR - if (!commsFlag || !armFlag || emergencyDeclared) { - return RemoteIDIndicator.RIDState.ERROR - } - if (!gpsFlag || !basicIDFlag) { - return RemoteIDIndicator.RIDState.WARNING - } - if (_regionOperation == RemoteIDIndicator.RegionOperation.EU || QGroundControl.settingsManager.remoteIDSettings.sendOperatorID.value) { - if (!operatorIDFlag) { - return RemoteIDIndicator.RIDState.WARNING - } - } - return RemoteIDIndicator.RIDState.HEALTHY - } - - function goToSettings() { - if (!mainWindow.preventViewSwitch()) { - globals.commingFromRIDIndicator = true - mainWindow.showSettingsTool() - } - } - - Component { - id: remoteIDInfo - - Rectangle { - width: remoteIDCol.width + ScreenTools.defaultFontPixelWidth * 3 - height: remoteIDCol.height + ScreenTools.defaultFontPixelHeight * 2 + (emergencyButtonItem.visible ? emergencyButtonItem.height : 0) - radius: ScreenTools.defaultFontPixelHeight * 0.5 - color: qgcPal.window - border.color: qgcPal.text - - Column { - id: remoteIDCol - spacing: ScreenTools.defaultFontPixelHeight * 0.5 - width: Math.max(remoteIDGrid.width, remoteIDLabel.width) - anchors.margins: ScreenTools.defaultFontPixelHeight - anchors.top: parent.top - anchors.horizontalCenter: parent.horizontalCenter - - QGCLabel { - id: remoteIDLabel - text: qsTr("RemoteID Status") - font.family: ScreenTools.demiboldFontFamily - anchors.horizontalCenter: parent.horizontalCenter - } - - GridLayout { - id: remoteIDGrid - anchors.margins: ScreenTools.defaultFontPixelHeight - columnSpacing: ScreenTools.defaultFontPixelWidth - anchors.horizontalCenter: parent.horizontalCenter - columns: 2 - - Image { - id: armFlagImage - width: flagsWidth - height: flagsHeight - source: armFlag ? "/qmlimages/RidFlagBackgroundGreen.svg" : "/qmlimages/RidFlagBackgroundRed.svg" - fillMode: Image.PreserveAspectFit - sourceSize.height: height - visible: commsFlag - - QGCLabel { - anchors.fill: parent - text: qsTr("ARM STATUS") - wrapMode: Text.WordWrap - horizontalAlignment: Text.AlignHCenter - verticalAlignment: Text.AlignVCenter - font.bold: true - font.pointSize: ScreenTools.smallFontPointSize - } - - QGCMouseArea { - anchors.fill: parent - onClicked: goToSettings() - } - } - - Image { - id: commsFlagImage - width: flagsWidth - height: flagsHeight - source: commsFlag ? "/qmlimages/RidFlagBackgroundGreen.svg" : "/qmlimages/RidFlagBackgroundRed.svg" - fillMode: Image.PreserveAspectFit - sourceSize.height: height - - QGCLabel { - anchors.fill: parent - text: commsFlag ? qsTr("RID COMMS") : qsTr("NOT CONNECTED") - wrapMode: Text.WordWrap - horizontalAlignment: Text.AlignHCenter - verticalAlignment: Text.AlignVCenter - font.bold: true - font.pointSize: ScreenTools.smallFontPointSize - } - - QGCMouseArea { - anchors.fill: parent - onClicked: goToSettings() - } - } - - Image { - id: gpsFlagImage - width: flagsWidth - height: flagsHeight - source: gpsFlag ? "/qmlimages/RidFlagBackgroundGreen.svg" : "/qmlimages/RidFlagBackgroundRed.svg" - fillMode: Image.PreserveAspectFit - sourceSize.height: height - visible: commsFlag - - QGCLabel { - anchors.fill: parent - text: qsTr("GCS GPS") - wrapMode: Text.WordWrap - horizontalAlignment: Text.AlignHCenter - verticalAlignment: Text.AlignVCenter - font.bold: true - font.pointSize: ScreenTools.smallFontPointSize - } - - QGCMouseArea { - anchors.fill: parent - onClicked: goToSettings() - } - } - - Image { - id: basicIDFlagIge - width: flagsWidth - height: flagsHeight - source: basicIDFlag ? "/qmlimages/RidFlagBackgroundGreen.svg" : "/qmlimages/RidFlagBackgroundRed.svg" - fillMode: Image.PreserveAspectFit - sourceSize.height: height - visible: commsFlag - - QGCLabel { - anchors.fill: parent - text: qsTr("BASIC ID") - wrapMode: Text.WordWrap - horizontalAlignment: Text.AlignHCenter - verticalAlignment: Text.AlignVCenter - font.bold: true - font.pointSize: ScreenTools.smallFontPointSize - } - - QGCMouseArea { - anchors.fill: parent - onClicked: goToSettings() - } - } - - Image { - id: operatorIDFlagImage - width: flagsWidth - height: flagsHeight - source: operatorIDFlag ? "/qmlimages/RidFlagBackgroundGreen.svg" : "/qmlimages/RidFlagBackgroundRed.svg" - fillMode: Image.PreserveAspectFit - sourceSize.height: height - visible: commsFlag && _activeVehicle ? (QGroundControl.settingsManager.remoteIDSettings.sendOperatorID.value || _regionOperation == RemoteIDIndicator.RegionOperation.EU) : false - - QGCLabel { - anchors.fill: parent - text: qsTr("OPERATOR ID") - wrapMode: Text.WordWrap - horizontalAlignment: Text.AlignHCenter - verticalAlignment: Text.AlignVCenter - font.bold: true - font.pointSize: ScreenTools.smallFontPointSize - } - - QGCMouseArea { - anchors.fill: parent - onClicked: goToSettings() - } - } - } - } - - Item { - id: emergencyButtonItem - anchors.top: remoteIDCol.bottom - anchors.left: parent.left - anchors.right: parent.right - height: emergencyDeclareLabel.height + emergencyButton.height + (_margins * 4) - visible: commsFlag - - QGCLabel { - id: emergencyDeclareLabel - text: emergencyDeclared ? qsTr("EMERGENCY HAS BEEN DECLARED, Press and Hold for 3 seconds to cancel") : qsTr("Press and Hold below button to declare emergency") - font.family: ScreenTools.demiboldFontFamily - anchors.top: parent.top - anchors.left: parent.left - anchors.right: parent.right - anchors.margins: _margins - anchors.topMargin: _margins * 3 - wrapMode: Text.WordWrap - horizontalAlignment: Text.AlignHCenter - visible: true - } - - Image { - id: emergencyButton - width: flagsWidth * 2 - height: flagsHeight * 1.5 - source: "/qmlimages/RidEmergencyBackground.svg" - sourceSize.height: height - anchors.horizontalCenter: parent.horizontalCenter - anchors.top: emergencyDeclareLabel.bottom - anchors.margins: _margins - visible: true - - QGCLabel { - anchors.fill: parent - text: emergencyDeclared ? qsTr("Clear Emergency") : qsTr("EMERGENCY") - wrapMode: Text.WordWrap - horizontalAlignment: Text.AlignHCenter - verticalAlignment: Text.AlignVCenter - font.bold: true - font.pointSize: ScreenTools.largeFontPointSize - } - - Timer { - id: emergencyButtonTimer - interval: 350 - onTriggered: { - if (emergencyButton.source == "/qmlimages/RidEmergencyBackgroundHighlight.svg" ) { - emergencyButton.source = "/qmlimages/RidEmergencyBackground.svg" - } else { - emergencyButton.source = "/qmlimages/RidEmergencyBackgroundHighlight.svg" - } - } - } - - MouseArea { - anchors.fill: parent - hoverEnabled: true - onEntered: emergencyButton.source = "/qmlimages/RidEmergencyBackgroundHighlight.svg" - onExited: emergencyButton.source = "/qmlimages/RidEmergencyBackground.svg" - pressAndHoldInterval: emergencyDeclared ? 3000 : 800 - onPressAndHold: { - if (emergencyButton.source == "/qmlimages/RidEmergencyBackgroundHighlight.svg" ) { - emergencyButton.source = "/qmlimages/RidEmergencyBackground.svg" - } else { - emergencyButton.source = "/qmlimages/RidEmergencyBackgroundHighlight.svg" - } - emergencyButtonTimer.restart() - if (_activeVehicle) { - _activeVehicle.remoteIDManager.setEmergency(!emergencyDeclared) - } - } - } - } - } - } - } - - Image { - id: remoteIDIcon - width: height - anchors.top: parent.top - anchors.bottom: parent.bottom - source: getRIDIcon() - fillMode: Image.PreserveAspectFit - sourceSize.height: height - } - - MouseArea { - anchors.fill: parent - onClicked: { - mainWindow.showIndicatorPopup(_root, remoteIDInfo) - } - } -} diff --git a/translations/qgc_json_zh_CN.ts b/translations/qgc_json_zh_CN.ts index fae275b..26ae498 100644 --- a/translations/qgc_json_zh_CN.ts +++ b/translations/qgc_json_zh_CN.ts @@ -595,7 +595,7 @@ .mavCmdInfo[MAV_CMD_NAV_PATHPLANNING].param2.label, Full planning - 全面规划 + 本地规划 .mavCmdInfo[MAV_CMD_NAV_PATHPLANNING].param2.enumStrings, @@ -625,7 +625,7 @@ .mavCmdInfo[MAV_CMD_NAV_ALTITUDE_WAIT].friendlyName, Altitude wait - 高度等待 + 高度差 .mavCmdInfo[MAV_CMD_NAV_VTOL_TAKEOFF].friendlyName, @@ -1435,7 +1435,7 @@ .mavCmdInfo[MAV_CMD_DO_GRIPPER].param1.label, Gripper id - 夹持器 id + 夹持器 .mavCmdInfo[MAV_CMD_DO_GRIPPER].param2.label, diff --git a/translations/qgc_source_tr_TR.ts b/translations/qgc_source_tr_TR.ts index 00b2006..4c33eaa 100644 --- a/translations/qgc_source_tr_TR.ts +++ b/translations/qgc_source_tr_TR.ts @@ -510,85 +510,85 @@ Flight mode channel: - Uçuş modu kanalı: + Flight mode channel: Not assigned - Atanmamış + Not assigned Channel 1 - Kanal 1 + Channel 1 Channel 2 - Kanal 2 + Channel 2 Channel 3 - Kanal 3 + Channel 3 Channel 4 - Kanal 4 + Channel 4 Channel 5 - Kanal 5 + Channel 5 Channel 6 - Kanal 6 + Channel 6 Channel 7 - Kanal 7 + Channel 7 Channel 8 - Kanal 8 + Channel 8 Flight Mode - Uçuş Modu + Flight Mode Simple - Basit + Simple Super-Simple - Ultra Basit (Super-Simple) + Super-Simple Simple Mode - Basit Mod + Simple Mode @@ -600,12 +600,12 @@ Channel option %1 : - Kanal seçeneği %1: + Channel option %1 : Flight Modes - Uçuş Modları + Flight Modes @@ -618,7 +618,7 @@ Off - Kapalı + Off @@ -753,19 +753,19 @@ Angle - Açı + Angle Distance - Mesafe + Distance Height - Yükseklik + Height diff --git a/translations/qgc_source_zh_CN.ts b/translations/qgc_source_zh_CN.ts index 33fcfb8..0575d82 100644 --- a/translations/qgc_source_zh_CN.ts +++ b/translations/qgc_source_zh_CN.ts @@ -4851,7 +4851,7 @@ Click Ok to start the auto-tuning process. Yaw - 偏航 + 水平 @@ -8263,7 +8263,7 @@ Click Ok to start the auto-tuning process. Toggle Arm - 切换锁定 + 拨杆解锁 @@ -10559,7 +10559,7 @@ Click Ok to start the auto-tuning process. Connected to Vehicle %1 - 已连接到载具 %1 + 已连接到飞机 %1

  2. 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

    HD4x0)7q^%5nm653^33VG8u_n|Kya_8& zlHmn9o)r(LX2i+Dq8(m&m7LpXBqSu6M3!aTT6rZ^Mz}dg8yDLq=(E|lP@vt z3j(?VRajHKdm8A;e=!R-NI*y}O2yV9AZ5}8y~bS$$P=p!f0vN7D2r4!5aLac2!S3# zr!W#mLK;iR$B9j{bm%Jt+Pj*Vq`1>3>d}Wd73kTmlwB2^4bKQyX0owc64wYp>>BQK zG?q@DAkk&T)odg~m}s)1iwkFnJd=&cSPAR`wF5eEz(6{of2wURiqfUwajI^zj~p%m zg**-wCehg#nKNi0O=7#J$Vr-PP2dxtG)_3#(nf*esVH`OY!twmaF%yX)zgE}`R>>J zA_A5l7SyRY$sVog0&*gj5w+ua!wx2YtGl+zmd!?7a;<1clC?}f|B^P*;hzYilMO>` z9xBTd1`Z&bf8E33bwwf*AllET`i)Mci85>(O_4iddoq(Ga^3?s%tbUaqIq~5DUnN} zJln5;3mL!+DB+-%A zHj4Ocw11n}Bhn__a&8AfYHhlLGQubZm-bb)>(t3ie{8l|H^Q%oEh=pX?^GvZeY7~b z@n(+5UOuBtgk<@o;fSL0kqBn(XCpCE5^hp>gakKff)%)CJW+>1XG5)^xOtl8dx8d>SHAnUsg zC36%xf5oRKk{2R;vlyDFu%S@JVzhNeujklTbh%vga-be{W4YK^>Zzzs_R5US}l$94;A`{7m z9I3!k(ndY|xb)Kb{OM$(Zh5qWHrYq=Oi=2zpcOLNA~M?q8fhj&)(Z?xO?2Z{K&6w7 ze`Ie7bv<*uDCpVncj-;~h_@WkQXtF@klzGo14g9h;i5~krxGgVc^`U>Z^$K4o>x$) z<2Kp8c1tqOsFf$o9!)5A;D68&4pWE$=}7`I+o@erxRK&+UvyLAt!RWxY6(L5aB5#^ zZNy&UIM62I5|<8bNL~|BCqoC!WVEwTf3B49q5&loXgCN3aE!%NO}Kk>JovVSD|jG% z?ImAj40tTjC=J6y^r>xVE-s3)K-E!JJhY&0*$_H1TOuV{ea6mx5*r2E!wJ-l#wC5N zwzsOK6N-(_CAi|o>b^dMO(=JaNP4k`c<7e^dK^Lft3w8%~VrBY-f$pWQ_ zf_<$qUmJ^RHZ&)CB%5dyH~Q#Io=cPRnBEzX(WfQ5hVvsX3w=~&0#BYwf6rjlB1CQ! zPT#{Q9x3hh&zaV4UJn#oe1Q3#9>eK;4|UD zgIhJt0@+4EKrG5X|HzUyf7wgCJO~zt01v{FTrI@KKyRSU54|B<8e*w45QaTVYzEg}ZLE zq%h)y6m>JTwPH;nF|`6YYZ7$CodAdPRESa@}`e*k4sUU)GrX_Jk~PXukS zLFfaAJr^9xK#l+)%0y4$+YyRxvTX#uB!*ote0ZE=;AN6(+Yz(t0J7tx#npq9-<2oo774`u-YQ6{>!*g7eb4G}#i5Zk8D zoDjFXKKJrnrITn_ev5A%0tLK9*j!Pba* z1y8Z^zYq;zZV1@m{2R5YknrHIo|5h+TZ_5fMr34CH#bxhX&@WI^WJ|r25%D58yl;V zKfS*Uf60(+r=ClGk-z>18ZRaOHO5L*2e*hJZ;)_Nv1oflZK=9t~1?3U0jMKpq}i2t3f@j#xdx9@C#dE0fR?#}DM3L89>jx^Oao zgb)b3d+G|L5C5_GHUe=Hq3N4w)xp`QH{nThW3Dd9a4Rdv9*@jwD` zf1x78)gh}#FapEl4sVl7W2E!bZFnv2s)KZS$1O62^#(AZ z6@oIccmoR{G$^=()(?LYQF~N{>H%{z%QTIXTBGm>3tM@*5O97jP>3Lx2HX|AKJcIp z7QSG>kOvE4F^K2`g)te_r2tIPq`?9Ze`O%33Ia2lK&S=585-c=0#FkPdtI=k0YV@L zZbIe+YB(YA1_Wz4VJHiMPAA-MVITw(^tr(F1j8Q-G`YB}=H^^9Y{Cl)bS@F#K!**G zl_Pc=!{Nbqj~HH$+iZ;E3kn;?_$9;@UyY#1CqYCCGa#sd1QyEPpw$_3kO+E=f5%S5 z{y!tR4gW(IaPZ(Kug{^u_+M{igI}IT3ujI!+yO!x8QeXllV7**dV{xQdWAJaYFjPQA(=R;P{J$++lT_AY&wKT9Aog~}J=0^$7dMHc`7H0KLk!Y=@TIxQWSkITmen?k+J?S6Q@65l#GLf4aLyQ@enxcZ){ag=0iVnY@y&E2?)X@8v^72*U<#Y!YFYD*4-(lZyv6j5qq{A)- zC(?z&)w*yOEtkO)Ptv8v)w*^`T3tmSEiR^=mg{Mzr5c-Q=}hkre=pp-tH|F1Ml^!! zr)s;4^1d`K?xMWustF!27Z=-#5KH0tV_b{K6@LCMcv({si&lfXwfMp%h3*N%y^vA3 z_i?}R7KvHX0s|>7yL97!%0~Dt4lPLoJ3fQht{|0cnKJV8Z2|xM8_=! zn0~4$F1vuDvicUJxCBpG#GQA93nPya`YIzv{@0BI@wGttTcuUd2?DWks2+yPqI(g= zQZA=u}^T=>7%|7njttU1(Ttf8>?5P|PZZfwE;a;v%}v zp;}8?*TX9Y*<$f_WX6jd)KE5XVJG=%tHrZO$p3!GCsca0DJmW6xetH4x4xJY*DkYM z)}|Kx!hQNqq3Q5h(9B=(^wUH;IQQ7iDcHvI)Yk1if|7RJG<4Z~j=o6SibRKw;Jsdd z!y(6>_TH$5e+}8%q%$$oO`0^4wrq%2GCG`K0!EV?KkbvYJ)r25*|Z=139 zP4Cape=ml#-R=MV{!YoSs=a>7M$`HFBj`*|Ep z2+bdn{Y@TWKj2gP>)K1_?GOL(Z9DwtPwyJ|wRXL-!_PZjUNpUr{x$sLf3O|2ydSBC z-XkwHhC)7H>;vc6887`)-T9#NLK^Gjwde2hf7C7T>;Jk3eJ5}13jGcLcks+T4s9@@ zqq92x@j;zyGZm6q#CL0+$u@0RJ!QQmiNW3d*@mIe8Uu*WvUaZT#=0-^W81Z_wP=!n zIm7D-uHUJ4UCvj|H?IM2-eSQX>TeUz&)Rn=5-Zv3Dp;QKV2A;T5{oUvh*W^p00031 zf542`5f|I-U%RF2y2W z33`&=bMa)+=RKa1B=mG=kD^{hae;ZDg5b|gBu4y#Tmu>Y`l|ACwDp2}#Zf%6y~)uwRDJ&L6@beH8w`MH zDY#%M(xL!-^NHTFWB~)IQi?k?e{G2qq)eWz3(jW!3bMkRqF4%1udiob>bZ37Sy?UyYSqpa=jN+c!$76}cz`}srkha)u(1;vW6##@ zW8elJff49|g2p|Yxt>hSUP1<5ks;oZt}bYTE^2G*PH$PWXo0%xS>S3Of6;M3bm{A` zbZlE7R#-D2Y&2bJ6&N)}45G>sKxCfyYcp{7htq5894}0>|;z-YB2#$-G;>@;rX6`o86A7I3Bmf2XIqr)S*>SnB)= zbc&iWh-|p;GxZ(j1sSucTzy&@JYEbHEVY^nSZ-%!%YZV`q~Pe!>!mcQq|2t3n*mEb zCe+Dt=2iRi>K(l}weI*wA_p7L2LOClNR4`IgOI_*Wrh!QC+Sr|#faOm9g~4F5Yr-1 zv4mqq^ol_{5CbtFe-Mpf6gE4k10f&;#9!zOe1R_z1tLJ)h`K=+-(%78H-42ac2sF*@6=mNNaS|9}k0kJ?}5LcoskOi?o7Kj585U_$PUI1J`qrV4M zAPz)8xQMDT6-)uBKnjQgB7t}iO5!LO1)@L{hypPnf&@_b2|R%(5Pt+>K;Xpcs1BPz z69@xQ5T;Q&WCBbe4n#nR1n77P&w(5Wf#3+up%P94NFWKsfdB~1;So9lMj#D@KERP{<;87_9r5jDx8~(r3mX%+Er$!MYUa(H z8CA|RGpsqvr3Ze_GtCLxg?8Eo_UoksQxglTBkhcK7?11yUw^%KXKr%ySG9Rp1Q|}_ zBY(|?a^S5!k?rf~ma9g_G-2Ge7%`=rre^q|UxYkLdWTES?_-$N^t6wWN&X+fI7q6}~+cD29TuBOfvwz2=m83Ry4;k!Ad|!><_N;GO>&Hi?!6<0)xk)rmA2}gE$PJ7h)kXZ|C z*1giI@qcX6xYk>K-5dL8mE_)Em;dQ7aA{kt}7g12eBI=#NSoU!1{n)AxlO2&%q z>@}0qF8v(DTCS>iy>`TFc#zks^@;J|!;=1dIbE;pSWDjRvP$#%N{$#c`&(CFUB|e5 zIRbWm=h$=SJiY9_d#|-!X|(8*#7UX)h`LI~R)1Wg??%eMU^^1{!=UTTNghcc;z?R; z@Kz|%iN?wlNjW{_k$IeVlH8LZSQ6aXZ{mGZC`LE2va)7XtLcJf(=r3EgR<2Q=;|D)GuRZmTS4U zVm38y-g7#IY~t!#^KWrrWPMv+-*R0#hkwPmw`^Rr_pa79VrBi9?Dlysa&>3Xt+Onx zjlP$%j;rvD^*fdZuB@`I?6ShsH_xM#^*{^e<66Ti${Mw*lViGxW1kP=Z0xjbEP9{I z4^Q@iLW9Z7i9g}|{S~;B*~C8HgoC;ex;a{II}S!BYGYo6hE^-emU<$s_j zt*GUjsHFR5@kmCw`9ZrIn4-he4K8hpQQImy@dpuDV7RQwGY)1~JfW6puZR-}cr0f|x)J%s|LJP27-(xPJ!>z23 z74IBF0wY&zXoFX|fva+~Z>!j2n7*skvBPn?8Nw?^hg2yYNeyZoZ2vp9Wq*ZUU>aUK z&Wh@tcBL!i9UXZdIFMOY+AYV2P9_~njt|1D(!KRMXty&*U|mlH-tW*OD^&ArCxPL4O3{*3$w2hjsczb9CkrL#nE-nFr`5;G`>% z^=b_9%)$zsxPy5YDwOeDLFEYA@Vj+|6=mShISk+(F2DuCK+F?uYLE;uTbqK4AleEt zWEOY8=ZjvJDn5JCIV)M1l7*(P3oEfM?-k`M#e1Ma2(5t?eHX4cqJOQ+u<~R zk*1;3?C;}nIXA?6V;4L-k5|n$jExOlLM6~J%Y$Yq^{zuJd>VHWSSC8|}Jk%Cm=K1#n1uSOCWXCMC-L2_a?$aRG+M{#!i{9v( z*k}!my3gOdUAN??_r>@b~{U>T?9cM|?5+ugi0V~LDv$mC3t87*a<%L^2 z*&TL;QSYHo7&_Aa(Sak$Jn~CZ>l&F=ZehIA!oIo2RARnl?SI?VOi~K+WHqU1>Ev9Q zr{@{V#RF5C5_Yxxy*1>`^1g1FU+UD_RObwtswzygvceXtw)$FO&vRUzWo2#6Ua@4` ztFEspk0(+^U7uSNbS>CAHu>lE-Qr4H?BI8m?^-*G+byf~=4;WWr}*@iMtWs$?S%jO zJG|4P#EVih1AoP3(3;(^gx<=~GyBU$c0J>-Xgj%zDUyP;UzfGDYEsH;&FjnzJ>Q=n z*{R)J-do7r5AWm=RqI~$cr*9iKiq$d<%QPu@XdR~q~G1~n{#_(>Brx#$w95vMf(r= z5DhEhZSFken|Gx6THFOkD`=O<0DmkggxeYA$4b5nE`KoIl3KSbTbIWRf1d|Uu|49w zMLY0$(L$rq_uD;w#^xt+JeDGDTFJCuJc)OT#Kld88Xt>UVJfWOEKN#^#%4paSl8;i zw!9_ZywCwtSueFMuPk;Z1${9z^6 zvuf*=ihn}Iao5a?sj7C^c{L;7^cidOTSC)j3C?Fi?nuy+^q&n@GnQQb;RD8el#rz8 zotf4N#4j-16I8kV(F2q+gZ*YCxq(5Fu+rIr2fadz*$nzG?~$M{!qkR}pvcJn^1z_D z$nJ%}QDoak30?@jg2E*Y8#Hgd1XtBj1g_c|%zy9|9)VbC4)uA2$rig5TUS3s3uRIWlxsI)gQ8oT$O-glnF6##Kj=-fjow*krps$EA_ z0!3J{bP7Dj6FeuaZk!gip{c=cNtb%T)5=ipnWX*{^f1;G%oMg1tO=~HSD!1Gy*qM< zsef-N$X;XEve(eFLe|5@hzX@BzS5MmiZx)&h#hFXC}<;9=otto{mWMkkWeM2^_kG> zT~CNfnrc^MIqEk-j7eU7#r4YlC3~jkM7^o||M2tfo~luCvW_=<=9(Sn&O94)IN{G| zKN0kuJlgY_sZ!c>@HyHz4+s0dL;jkn(tq=MzAa%*mb@b$w{gn%JJkm~^t${bQD)?x zGHa6Z)LdMbdvlu1yg!18Atgi!(>a&-qRA_XyQYL9ONdJCdr9u@!l%1>DNenmswLpeX_N3?YfNN< ziN2tkzLX`sNGZ#7A|94TMD6(8M_~18+t~M(2&9jns|FL%wqg{lGQu zjh&ABF>F3<%+AKfJIHxTefN_i3#R`GUaKV)kDi%4K4Cjwy5XL?TfwL zavfc#;zity0wn6n-fHhvg{4(PY7h#7gMbip^=sI=KW%Si#e#+VS8)wjINx+Y0}{_b zv*u}C22i44SSDdg z3Q2=n5E2AX01!w(0vc?Pc3eR4RHn^<$P$E11myjy+D7LrAP^55XA>5pZ%kEyX;$1K za`QE*xA^i_`jnL4Bg0Fr2JTqjepnq$S2EwK%N|fq8 zG!IcJ5UIZ_Kvwpl!Or*sjW~h`(394uJEH=WVJ!h%^qWjbs|9t#M}y$TPjmX0G%jgy z$Fomc%8E?WOzOz@0(EUb+^a?HG!g%ea7 z+;H#l1zEs9^y1yXA7i4~XIUQji04Zp#ROELUNg_oML@JDyri#a}bJxbBsp-DvyGo z?An-gkyrTHQ7tBXz{b3{`sHWMQ(9T3)c-xvB)78N0=x>MN)OMSe0+SC#MfR)~!J3P#N1}PPb?-d2DRU}(IWVN7}qWBe!%{fz&je5fs)+DXk z{GbpKyvX$dwOJvA1kS0dc>$DcsZ5#!9^ZXJLiNoSM1O@DREJ|#Akor@PFhAZWxB5K zedRkW3YW|0jce#X%!H^N7Tzohq{k2+YMF|>{`?PO@pHPoXL%6uKB)kdE`+Dw7C@=2 z1u3;w*;;g6#m?1CL46eJt_ae#f^p}8D*|-XvxJ7yzT;4P5C27ad&*qok&hWSn%9Lm z0I_xc$$xliz+It$LjGI~alIxeb*j@akZ}m2+CZ~cn~^k74Ax_iEScyp_kf4IT=8IU^yl-srL=Jvd^iwk&6(ET6+QQCjvNOu_O4w?x*zQRck~S&i zgsOrG(;{2&kw#l+_EK}d0St}^&ziYCSQ(KhjUci5m=7EyX)?rsvlC?^8wJD5Xr`wK zCx2*?Kn4n;;6FU)ozWXyTgbVB^r`31V%PFS40lSyhCZf#i~s+$_BR$&u*hpXKrZ*l z!Xt1AnDDH|5#T(;_|tJ6yMKq|uT`W|?Yfc`xHEpu{R<{ygL8kakN@Oa zFARzjx%`}#Z8LIF(ASpcFWD_>d$737)_=UW|5GNjm;=KR0w><30NL(H#cBBqWY-5^ z{&yQ$hRtfEElBbyWCCbuuOr4dvbBIt=_SOE=Sc1DhU0lwP9bslKX8g-c0(eLb#qv# zC{5a)&*?aFtcAEJAGp%!#rdNKUF+!1$c$tp(`UgRY_T9cu2En!qS|SH3#`sFet*|G z*|>ulHxU_*l~OeIKNrvO(9Xya5-mBL84tm1lh3=J4oECEw>V?39^5rB}X|VxPKheCm-Qm z?3&#S6b*E{b`<7B5-5ygGAxSLXB=-nxUtF+RNBS%L257*&#*!y&cF{ zXR#w`7kLRL?GK2ZCXx6Bjf`DxZlXB-yMvGgmw*B@1gH9Rxvis9r?6=d zQ>y*3V?&89M_vuv3WY5>D1T@LQBKgHJ4Dl4K0t>s@I6dC2SW8?en%eMpOsIgI;X0q50WHuUrtPlz%8RL7cS2P;Ojp zKMYMFV}z_jsSqQCP=wrU`9}0|#6=;9qDAgZ+=U`FR;p07@AP>?le8D%X9Q~?a+;c} zCtMf%H&9W~nlr(z@L`6?glNt5MKCaH*cX#>ikomsTNNo8$~A(DEnX<)qhhw-uL#u& z>40M75RF0bi0y0AYfu7Sim9(R>UQwcA8c|fQe)^ms67(Q$Ym(P;Q&d6sY;69crzd@P9sJCCv!BMhEvbLRRQ< z14!^?l3EmaBEXRm9C4Z#ZuQ%a^iokuR7+`Q1vj%&tu$$;>m90TT4Vpd4EmghDrOk@ zHu3&^f8W<5JGMEj^f=plGwykCmR1s`>4#EJ+-K&~bSF`VbU#pAO6c;lGNs!MJk$)v zY}J6#&l$6nz<;>@31|0DNp-p1TJQ23Cd1#?oJQ*TNC<$a>De_YmfpVU=Dp&nBZrz@B z4TR!l)&mwj9Ab`?+18i!YG9TUnq|Lx&=145ml9y=Ngmu`DKBpL2@J1 zd4!_4lQ%Ur!#D|vu*>4b+#R^_(2W+l4njsihv%z{NPWN7u{$LOZn)R435@0dOF8Q2 zuH%yY_ff*lJ6r1IY&Id__4}Wk=dj+;#lH4MPREeTNQ6jYx z@Bs8~CGd=xCPX7ITZOkVPa_wkpQYEZP%%xKPgm-ePmb)+3M5DE|?5AqOl z4;?%Afe^HirbM0r8KH_MAQ{m33?Zlc9~pVgz<>KF+puig4l{*xg6UILndTQ;N8&-6 zq4!95kU!gQq@h-Ho>(lP)X>?Gk)-!%afx^+`1j+|5+Ju!LB0`j2_?Y{%+u_5iQ(QQ zLO$(A04Pra{ZP9SPZ%HPeb(+CiD#RS5QL^Z7qycBx8kAd2MX7s;z_kZ2Y>*8LrVbw zfPepg)_%$^G42b*e_{YfUPN{!Oa%AvmcS%{kDL*G6rmfT7zX*N^?yjShlTWXIOU%3 z?2uXt*w=CFmC)~Z@~qQq#L&tq1s;1B;?txh$^_eOm<*}Y2r{%2WruQ({pIz|v+``J zJw}`C*3wKohM0+RTOWFSXxdW;mpnyVBs!-W`PDAqR{ zrnT4En!Va9J))KfKpGwjK*Fz;egyHyalYrFRHZL(xOA93rI%mqoUxRF zjJ-i)KNf(Zrt7$q+JCtd3h`DLHF*K>1T-5hc@|`%C=|JY@@q#Xoj<^?yxWF23x6}k z0X9xSW^eU<%R0$oYyn?Xx$OG{MC4!mC!LKl+eao7AA()9O==Rk=Mx&p|LEg(Wn!@) zZ6@!Of5`#U2DFTljw6mxa@vmP)#Bs;_!OIN60jgWAU%I)V!#J&BH5PhtW&2D>Hrb* z9}@+FaQRL0qDdzf#^;OJ3!euMEq|gwP2p7o1I}~8U(t`$_>fKnd@2vL;%gtNgw5GM z->}Px2U~DHjlJ?IhtRu9mEINsSlz5a*Z)3+69GP~2wH6w{-~sD=$~!klK{5GN4f#a zjE&o%_+Qn$A8Ba2nHd6#O?g(7;oRU=R3~tt=M&AgpYQ}M_eW5qgh8jFNq=l#pX)(} z45xCP4}ZW=&msWaZb(XQH&zu1%k&2`7=YyqgCx{g5PqO;K_T3`?TJ)_jy?k#SX_9Z zdkvCnqk;~A&RTl}G*M7)pgW(B08Y~NdQ-@)kV7GqK}WWXTgFMs4but*;p(?R=|r|Q zDyM4c)76cQ8iHv?jY4T_%75VRc8+%CckL_Jc6cA&;C!;%;HtgR>ZYfW4@Xb}6nwSZ z1UVi>nZ9XEdcZXS&#=v>m1rla?(O~J%mGnGc^VidKhtpCrna?t_A;{COR^QE=*+lI zD8D0AsXOQ{>()Vx<8S^*rqYk&yK_jQHj?U-zHnMJ%(=puaFcfinSV2!?sS1f|6A1m zJ0{R%vcifUV;&<5Kj>tvn{N_Hkb}KYS<6sTa~3I)7;N?4D9=344Rr}wSjbxiwhEi@ z{Y}&f>c}_WBw6TMDq;>maZRS!rW@Yjgx?wsnP0=V*H(B`&IW-C$AD*tpiWc?252}a zGz1vX;;Ou2l1F9|*nc_1V@WB2-Kl*OFw)~=e=yYcz)QTgd6iVj1aWW>i8$D=P9<&+KdMPCdJXA-lq|>=hg5|As zMZ27`l};e5Wa@QA5dF>tsP2bxj&AE?%azRM?F2{=*9qR<)_-ubHfve7@$C%T2}IED z#AhCQ2)_nGu8t>}3Ml9E7)3b2f(WS*Rr@={QQPwuF#(ydVW8$gUqXS7)%n~qoazb# z?F~UtXy2C`ydpAei{3RV&Xr@@9kzkaUQIyeDs6$fcV&W1%JXKSZJ>yU4xN?3vokwTu2!bVMcTrk!8ZDv`I<-kX8VH&j(4%8}^PI z!hT}>5;r|vZvDkXEfN3Tizt@ZG=eBD(%c8yl|&EzLSz4kOwm_2$gD|;Exmd{-Y?J6lvZ?hOVk4OHtg; ziLMz*`8F%c>|3=K$>R!-o?e`qg^8R~ONny6^j=@RmYS7ac3fqnyS%jD?L*z`oK;qn@q6VuY!jy8 z$#2v@@psZ{n#8M}X)g1dq|tTE#7o;U+8n0ggMV(NCDvlQOKx_1s%}u8l}sx&-;QIJ znf0E{$68opmdHrt4S6@F&bzqcxtg8l^L5Lg*>~Y5MMa5}Jd88b{yOX3 z-+y-`&825UEeihTPZlXq(ut$}nt}ai#<^;w=})N@lscSTiUu+J$msLmqC$D?@Hg*6 z4#Arp{uSg8`|uOd_a2NOaG~7)wDVqdJMlvPWh1{fG}rN4F54%vO;BWIhw$$d3H3wT zx*|`6G|A?8nP}lAro0x*Eu`{N&{)w4Yk!V3#&>Vd{N@Li`8vz)3ejwnKl=Wca@LF* zQzTEdIeZ2!PNhhGW-IpLdo|L`eS$ThV861 zEeGP`V#dDK(PbZSmVo{9*6Pzi)-{PdJx9W1$Jv}LY3Q1z(x$4nJA)UaJm_e&2!BRL zmbYqlde=&0)xrZL9AEF3HvzQe<9YQnMz>i#FyM!`(0ig1S>$9Sl7ZVb_V;B;#S>j- zcoxepdAlohk^0yT|HgC4y_Rj2)tB7!WGm5AS0>Tu86iTVfx;H2@T#4_QFDo4JI3SGf~+FoQ=x_ z@h*UETGcYp1ONa4000012v#MGr)>;+}{?JCtG@@2ihlodpW>Q`NAsav>Yz1(KUnLNP-Efjn)&%8Ev49CQ z@AM#`k6^tI2I&C|y1AU-QfY`_-2`+Z42Cd^HYN>+llQ{mujC@}AaQu7v&cP4F%?*`a-`3SeX65NX8DJX6OLGYT#0H zTks4+$+SQMrH1D-n+`cZ6BcK;@ss_~8yohi>W0W@n++fY^yDgpf5Li@PF;X?0q_a; z1)}>NK;kTXRv%li-sJA=7d+82$UAzN7eEH?ON>2WvB+8jg9e9aC4W2^`!c5qD#~L) zH*O#x<5D!X$}GePi{xsI68r_aUahC%>Z(0`!*e-0+B7E(y$cnEN!Bne`YTylZSRaGUZjw8rlN|Po_Gs#*> z6B(kRrXHCuxk_k>NlS%06|K@g=rvQ^F)Kt_pem}63F(gn8B(n}S%Pj$J4evrH46n$ zS+Xz*N=6ld-uAKje!ylvV7?hQL#Vn#gfULzsf-pP#W98olYhgAr%=a}9&xO69)hS9 zIA>$~nF3j$$-@BVI^6%47uB%`mz|5Idiw( z_(L4uKhV_TPIzEa+%06E5dFZR6iEw4MLOO?fkVYmKz~S)YXTRd1woD!F@eQ^lw%Kb zR;{Z04ET4>?!9^QjYacD8H@M6od|#h-F0*4$e2lA$6_((eD}SDpEvZJ)EsvrH><1U}+qYvP>z$_imho-<9d*szIalVW8Sz(q`JEcXhULW1 znzm}TcS+U1l(?~!SjrUJs8MkAH&q5^-2{FAHh0{s7lt)t$Ffc*`gScV#d~+Sa1-`K zXn7Cn^K)?)hZAZ6e z1b=wB#ipnd*DRC$Nz$?&#+}-Jr!tLuV(F+pdO4C!Nigj%5WFx4>&fjxRb0J)uY*|a z#M^Hd#=PsJoS;qeb)#6&6O&$}t{(JKVekEg+rg%;Ttn|APuSOBo<6Ppj?9ZueMUVt znRM$y?<%@ZwdN7V7u#QQT5(k_+%?Zt>wi(j*G^Aob@aaGQli9IGM|Fy}KlYBkq zS#e03a^qZid!EBY@Zz=#BIUNvd@=3ETlQ<7Zr4=cyz62$S+f)H<`rm=O;3svrGLj6 zbNZ}WO434crLb8UKejIJFsH)#Ab>A9`u2LI=afzieRGAyZxIP zwl9a4BQ8JNwrU5?vvVVf8mAfjDkMH`TmKH%cU`~Ea&O$pPit~Rsfeq$wEL7Vv~zB5 zbfQeONfYj4v_80E=dr?WP^45^vwwZR%6gG{A*JUuSi05_U7h!sX=jWY}n_O_^ znyciCl85JuI#8yoRPPr47YTZi8<*cUhxV~K39^O zNf4tZ>CWYsqv~Blj2vLml~UH;^sWSfOp%NhFWxSCE9(kX77!n?&3{FYMFn_wDo_ZQ zzalIok^43&=8OIWIO$&=>j{F+rWpOPO%YBd%y~SX?fOM?ar-;{9SglG(Ug8MB4H#_ z3wi2GkpxmA)eB^To`NMZlHZb?e^~WrTL!BynV+6iE^ze=w}>M+Oef$1*>!Y1IcEy8LYnC)`677QyWeVrLR z-i)@AgDRIPl5uazOXiC=7~6TtnlcukKrvvz(by4Jx@J3Fk?g0@yh|?9cK1{JfDIQi z$)+|X0D#f~5Tr@#C>>0o4kqIjqP0e+Q&v=>zYce=Y!BSY+J7nh4^V%w3(J=o*~Cq# zRaj>eQ!Jn(lN~9pW&t~~gV2ta+8lOW-$`ZpNzsu^mGkI2Ss@i29iqZ?q8WrW)rn~* zQM7Y)I%6*RV}(P?I^=Y8m`K%9I_dT+Ga)OEQa6{V(n?G@fw-J2Q?A_z#8YWfq$wOH z$<<#REm7a1`G3y3NwRPxSEh0>v{Nw^UepsO$J47=Qo7Vh{ONS+@Dxbx-}pQ=E5$pQ zWUy{8gu0u=EbBI?vIhDQ`(n_D8fF#g!pkEcr>sqvSuHAmh&aqOd zx4Hl8AVHorWGg@MLus_VoIAeexlHVY8GrFhBIrpu;A8%Uk7`j{!ZLD4vIPJ9E}s;^ z8E_&l+(U}Ti@g$vDRM3!{QDLj;&iW8c=V+qOY$ox$u5g8au1q>Z@J>{N6>|Q$h6lP7nSiT>Vm&)rDpebYV|!o@2-tsK&Yx{lO#j?^3a?L9Aw71e<*mpLZNZJ4|owcYXRT&N}P z)Y*Msc&mA07SUA1AQ7~qB*Nel8GrnD{$jom#p0@n=BDj zGw`k+To`N(PgHq|yO*zE28jw_wuvp`+l+yQ$LvSoCt6wh1^oY}!iU(j1wmVaLt9~& zLHHbdj+xeNaZ`zM zo>Ck2EvY-8e-nnLqx)G7^|dOs#G104*-ftxDs%t~jor3$UE9jjXxlrq%Hfs!B^lJT z-;nn4yGbZ2ALSMfsK9!R+In$KY;8;AR)JER#jtg?l{jr%R8>xGyQEbJR!6SUv#{L^ zeQUCXTSc*~g@OZ#jCH<1zkdPQ^XIHKe{I)*oejGJ{&)&o@U5(PLt+-yt%Z`JZi}dd zvhd9iuS76!*tP+5BWn|#)6|6#jEO7Me*^(doE~TXJx@;9xkn2AVNPF@XLv+UNAu0O zQ1tYqNl)67AL7pVP=bU24^4e^5&(bzfM?}i^R2(ikRU(o+HcOl&wpLvi$tBCWlLl| ztCPlz5~W9}(o+$0q&Th1MUBzoj?U2qWkl(5t{e>=h}3r6$W8gaUoMiNrpv!Fj`WOk z^x_Pert0Yv>!)YAE8>IO=|q@$f=IbR=Lh!?xZuNA8{zsqaeQ7+h9_U+(2pNz5B>C1 zIN{HC&>!z;$e>lP<$na69~^J)!mfuwjND%*rw-)3utC%LhU`5~Eu8OAMXa+eJ*moB z0U__L1o+sjXe3ayM2ECqwy^k3_5idW;jBI3)fiJ-B$(P*v)a;8H_kBFLOcS;M9t#i zxVI5rox60p**7{h2%SvdYY4~y@77D5?m(-|MM1$&ydpXR_<#C!n|iaOV{tiEVW2Jj zh&H$PpmiC2SkqS@i4y>kG6j6y&3YTvFS2syCnI*2PC~seNr?9aHnLp=cOdCp50D?R zR~vG~of2k-t+;R3x_QIH9zjgwkollo%)o)pcJBcdF?Wdc)KKris(Ag0T1pC4Pc;pN zz|&|QjeF5jpMTD9u(tucTaCh#^hogFV>en1JY*Er9Rx7d02E{>I4L(kn&U2e^`YK* z@P6DgojBy-VCGAo(>{k!hs4KykpGDj>U7ero8f*<7+X{slg22y*r7lGr5b{DjZL7r zE1^&CB83P1BOwjQU9vV@iaZI*U8b73i^uDe#|~37!+#r_k9FAW0@?perz!#t0NvUF zMS!XyF6hGV!nL_4)89u!4!(lY#7@ySq1Wbo!uk*0hLUG6bI7Ve*%P?yJ9>?Y6u`BW;}ob^7z6-WhjV}PB@O0j|!TOoZ+vP8Kv}tg9_7m zDqZ6kIDhpO+t_rd3Aph{$!0(d=^JUY!ana3O?;=92CTsblZGG^qBR~UZUeh*qE7&} zb0s;;L4?ebXbv7DqPwHjkH#P6rTLiASh3innnhd}Xsg)(b2%SA1AdDmf`<;AJLQjl zit>rTqi(q-`TM=Fh*uua#sx(i`YIj?9un$fOn(E@(`Vn0C@LX>6!dE2`bhI(^gZdg zQ}dNf*sf;PQH6Ebm`Rq@Z7_ghp^#NR8)yaywcj`RJ{<)4cmONc#$3-7%k4kqxfyng zybn~(pc%2!XU;<_FS(deI8~L`&Qgx8RH%&^GB&Nsq)J!VHgE{$rYw${HmM;FMgz0M zvwxI^a!`z;j9$%n8&)h`Oxn+FWJ1^g-kQpU44GB1jmNkNJZr-NQd|^Rl{vJvb;Mw1 z)hNBJr8|A(c{a9)x`6`*azpkt&6}@sb43x+X*7?GouwH#27^O|K?s_@%=7eKP)NQs zs_SD3dENjLmNpTVtLv&CF@J+^40KIvqow2n8)=kU2qpu$p+*(;ea(wo z=zF0BMwbw&K?8!`CL(Q&H|KAep9cnE@9}A@UC}avzpzz9O3ci9;A!QI5m>e<09D7+ z0NJw71dLw3gj{ZvnwoqK5I4IBRU(n78VV^JViyr?nT*U})wS(461#=Xv5NtSI)9z| zG--w|iawfy;Nd=+gQV`zxZk~P*8Y;;Et*kTh?g0{GT@M1Y`IBjBha?i<-Uwb5U7|{ zPF*<0bl4DD1IFeqjcIDjoV@Su#3&ImBlV}}3eIp3mP-q=jYo70e2_JGPL)psOw38j zY=N18h%N+c;t0ufbHVrO6h#|yad^E=J8j+Pwj5Z?7 z#-_HJAC*7GX(z_QjGMO7vG^_sJ8gyy zUo-VV)MjX*Q zD*%<2G(p*mwy!nkO9K*K0)G}wM!3qfqzDltw#SG>6wKT?Y}%vCX>j6v8f|`F5y9`B z_jYP4Z~x%aog(m1apO1t-4gN+OJVs8Z0QaTUJeuih{t=>T7B8JzW4<$7j27dxvOoRr>&fD25sCf z-4nuVAdQjZ_^Pn&*rP3(@K%A!gm-5VV3#@2 z3)e4Q78wr@nr|i8Rew@h^i7<(K1P>=cfvJ7)P#JEzP~C{Drag{C4ua$aUDJQm{VR+a#QwGNVc}EseOQ3xN;`B zSH4_Mu&#X~k$-z@TG|>Y8^5w8vo&La#l(dP@>=_n(zigfTwCMCSoR+^L3l&;c4ND7 z-LXYO0xHjjk?~eGk6yld3CdQozzz8^UZ$${BpbY)4Tau;sdL(wNnnk=te4DMwKhsK zTl!U48TQ(1GqF)>Mn4Nq{ri8<PV$gGg>MX--}k;sWMPTU19$&^!UbU;9BfR6hyDTsLE*GsWxwtP%Y zlkBG0#(zlOJ7`>wzGy`;Tg0$$qd#&L6hyMfDR7Ox8zjsVo`b&iE`DD zy}P~Ky&_M!(}zJ@;AmgfcWbA}+&`?_v=_+r48BBtmMcE|(Z=&`ET)?46t4jq{jV>~ zZNh7vyl2&RH8>&486H#mx%Zd3T7T6!laqGhW?i?iy^zx|eF^>_>PG7qR;?mGg*#7^8uM3Gou zH)v3(>qbApI3JU{VDh?-gqFIQ^fI*Jo_;~V6sYG6IWlGt>*G-!?oh|LucuMaZ%!-S z0e^s5I2s5Kp+k;=ym;C)?`M1z7 zDIW905|>zxN-B6riZm0`xvkZ>k&9d-;HL`%kaB~6qO)qy(b0^~;EVi>Tw zyGLY9kbsz1Esqi2L2mgM+((R3p0}|R1D%=@?~!BHp<~dDtNy0zjThbH*(ZXyTP^f-9c?fjrU#KF$F&g_rR8Ki+dmENEn$Hw0ml>D z`MB;5zSx~jQ~tcckUQwuwK>;x8N60adeCpdKg<%^(y)RqI7tVe1At?ny@LH zFQQmx0z8i2y&eqHk)|3yf3ZuErNBll{VSlPOdzsmWoDQx*&^OkQ?5 zCiP*u2CmDvxDN}9wk<<;oN&W(f?R6^oL^)Ui(R{yBvt1#xj)fw_yNOh$maX7a$Q;J z-$x&V)`~7TA!ZHH{(pa57_CQw^~_YK8vIcE(rH`Wums!~7#8s8$Ds}WX8ic*Y)!~? zEPJcyl`LV$|L7F-zBdN8PCs<}mSJE${MnTLu-ze+Hm$`CHbJcGIdQqft$W~Qdnwbw zgtcvR-7gT(9Cm*VK%);v{ya`=U55x?=;_EuC`;fv+E&2S_J4<2#{Xud8`dBebB(2( zVXa*kl`3{-{o1Ilw#8VD$Jy~Rzk@c^!m*jT8v5Hc&uuJDh9s@h`@L+#W37P+iqm{4 zS+bqnj!5mg#qwl@ha{(vf+JAuBL#8D)zEJrp7(*pzVP=+hZt@FBC;4j*c?<2Bh}Vz zev!EdBw_X9+<)x5a*#DG1sVE!7PT3urQNXKUb3V@+bR)4D_LKvO=Rt8<)E?tLA>qG zgPXmPN|6Azxw}YRr>2|ByE$xCaDw-{j0X))e#m|+v}XcH5hm6VKYo@Li8d!j5{vMA z4zO-+m1z_ppK%ML`_Locz-D-}`fJ6%Njax zY^r={K7Rl?n#U1|F?@AKWk4KT>PU=je52?mu+TAc_-lI@eKy~lo|2y9N67#6fvNXu zi>7Hel=vMTeKfRjV*=0BHtMr|aE4T&T9$$hMU{-GP?=inp1&=>Xn>yv=)-IRO7=wj zEFbm$V3#@g>&_Km8fWt+wnx|Ku^L2t4P|v^bAJv^cOS@pFve|bLxm(aNs%EjJ?03h z5+))^Il<$qW#g{`Hs_Tet$6Laq}?V>650Bup1#eX_~u&IvW~Wv9!o6lF?}X6?OCYE^d&q4I|ksnqi8ll9Pf1!TH|=X^aF3H*Rc3 zV}F~I&s0D69rCfJ*2%L&p^?CF$+fk{dyMdIZ~HJ&c~ zUG+*Yfo$XdPqHjRir9|X`yvn@CV#~}ey_8RWUb9$!99q6>^waD8S<%DdjNV9hzPAp zrts|FuW!#ICi2CEXZyPCAqLov4J@U9AO9-+2%jK?qNd)mkxsrS=>+T}e@B{1(pR4; z@nZKO8^D%_XBjzRg`Gb9_!jxH-uLv+I*~(SvCs*T--SF=ns}c;g8Z6)#eaLmmlI~R znF|W4D8H)=)dXs}%KIPz9JUCNAhan>n$*A5tn=n7-%=ozEauK>hM)jvK$yQKgN9rC zP5n?*aw_Top$b&v67){3nLv<|(k2N)ZlT@&Ym+Q+B2)IYpM4_4?;$e;hjOg&38bpB zr^Y0xcA^>dF($$8Is^znw7EA07z-qp)RK||@&@Br zfzVb+Ee~=e*+`HeK1}n9nSn5=9rF7Ad8sO_O)~2td`72Ypv57mR_~>?s>U2&4DikWx%IG{Na-| zmKW&?)0h71GEXNL!C}k=h1h?kensDFv7c+;vFHMP6RKNav^Dj%O)Ke<2CxAPi`7t~ zj)c!33c;G~L{KDPbKvN|ES_q9h}Q@CLI^iORu4F4;3wk(;lSK~q&Nw5pTcL}@47y-4qaXp>&uVg zrA(>P=RG{nqy5F%OXq*nCB6)d>PU;D?o)u8CE7o*-N}EQ3oe7iw+hahWcTH= zxg*9ryl-&tw?w(I0&Gike~JBcSI&VKiY1Wy-N>tw-gOt5eWI{&yeuDQC5Q`ySdrVd z>l3QILtM<1ffbQH8KIVJ&@0@eMowk<*R7W_wUitjnkQ$>e){rN%l|RuNzWV)NfEM~ zb3M~cmAJNEabABH%c^de2V}~)F<#6eGx5-Td@Cbak+>vgEJ_vVw~GF+roWJsTG1>v zXdz?5iSS_67s_iEw#NZF^LMlPl7@RL##Sg#`}IfcHm)RI^*a@?ZU!b5oBP9*sW7K>-&SH$XT>^I3h$U<14t>xKDt7Gg` ze>!f{_zJq%{lz|XydDJ~W5%gKyknK!Ht*Jy(qGl7mAYDEoqn-yeCuSDM!20K8NSV1 zd>`2}$m@TBX-`2_9PqY11rL}5em)%D-pct#Ko<}F|G%NL(I60_8j^T)AxmqEc zHoyCuwq^xZtC8NyYIaRwy;!j`|6BJ^XsEKISjcfMoByhklUblIedF^m%s{=6UKO;>3A%-hs2zRjf&C z8dg{O)QS}9ZTh1+VpFw#saD5)hO1n1QCE4Zf(@PXkOAKHU(NJMTy@p0sj5sVPXemU ziTZ_#vr_QR>-FKSRzVmll`f6i`&XU`@L2^I%^vlEhSt4vvaNdk>$|G6mMXf$NNwX@ z3DbY`W+`SKJm~244^`x-x2aXdwLUy6VqJHXzU}Gf)fLUk#W-oxtmgPjK5AP zSA8P3b(|DqM5CjD8SzQd-(s?8{1nKO&E~--sc;`U0TP!*_KW-EmGc*YX>FG34={p9{bZFSbR=OEtL ziO7j7*d(Q)>MxxUQ+bb`2?z|QdA}?#j zUr}Sf$QxJYF9eIVAK%7H^qYUovk38H$^>vxVucv;sOuV~hV{U*emE3odavU02IiaU zo;diwN&fj2`~@3>Eeig+MWbPzmg!-h*cimy-@Z6YVpVvFrM;(5tMyt7`&-{{wQe~P5s2%nRg=*+t7@w@U0A2ANu^KA(+fScvu<8w%HhVGUL_W{ zR#IbBvHB@0pOoEQ(wj3UPQ+8fepP*RgC>2V4{^qBPpS-BO;49qs}t#5nPIj_HPNCp zs8vdvMy*Wza|PV^{O5l;>;+ZoOnPhnnKmcQ36#h5ldWaRcRe>>^_Pf}C@1Lod>|RW zRf15fljee1dOa?I&6jfKLeeTt@|V?oF_}X_6e4^8b6J%twR%|!nV(^Le|Dg0Hgl@eZ`H=TuYP|ncjBDoHqhC`m*|nK z?m2%E@{6|d{wZOYf47QVv?TVI#*CD5!rIcy0d{WZQFVOp*o05Zb=w`Swp>BcoV>^= zT)K&`uQ1uobH=80`cLk2WT}3kO;gdSc-x!F-j0YD<=a)MN*Z*`2DBZp28DJ4PN=;c zf@}j@zz;zBXPti{Bz*}WFgN@sAIiF3ez!x}-0QQt5Mu`f66FBGCVomm^n}hHa!>Br z+giLNaoue+qLJ9zlGV+=k_XLQHnU1o8QEbI>zpBzqFY5vfo>Nb8f_S=b1U)}Zm{EC z2u8$}C9cf&>3gIsUlO44pywDc3LN8E%VJ#gH=4>TK0tpgX}*hm-yeVS%!fSAEy=#+ z%YQM=jZku3PN4mg{Ws=@sf+W%i~Km{>q5RWc5&A%+^oarjnbpkIEha<;;&~a7YUM$ z8+yb1sEu>Ul^kTzJJ#=F$S84g#1JWUg(-4&G%iu#MDe7zSkqIwL6$BG559+Zkq@qr zgds#GJ<)%W9P~r~!O_Qf<+CyIM2Lnu;tvQqPiONGlg8-qMMs1S_2}p4tWg9OyntOW z$?=K$+2UEq=v<--a^w#ytU{syHmXw@IZU##AKHSrjZ6N5^>$PFx9EZu+jN)2b+gBlKZtHP`WE)30yA91u9 z!~n+)#O~9`4WsQbykN&Q&a`TY*FXcHi-uKd4igXfU<@`!`1lMAX2d}F3>i$M@bDR` zOO~z;3puw6kxvkpbHN7abAnr2b!*#$uTslzM z`sROHpGXUEawkp-S{wN_Q%h;p)ul);B^@hxcmhQ67V_KjDjn$zXP|>km~w)C82p(I zI)n03iMRW)OyMylr%eM^#yWZptYe)))n2b@4H99Ou_N4Ips=vqpMk+ZW4S&9283=P zpjaRF-pg)Z!!l-7Hn(de?AG>j^5S%bpHhGJ>ACGxYn_4X#}%0?oV?@&kv`&72kL#k zLV-|$gFXNOJhhX}2|e#*=x3FK=A5TI$QfPG8qgCgoM@s?!d}9`XWGFV@3D%NW?dcn&_AT z=gxj~dD2k*^%U|E6C@gj%V*t!1_^p*?EoMEBQB6$tC`!-sSlxmzMs}w)2E=zihckJ zsNXqCnh^ki6!xn^G56`YxJm zwd69GINBx8-vGJAt573OvVyhw0bz?QeRh(dcnbvoz+McaK!qt8kD!6`@1N|>9v#Js zSzbi}xWEdZ(PQ=kSy^bB_M!g3+btmGRM}?O>{4Y#yQT$1vJOEE-e*gcl4beA{evH5 zH3`I|{~wM)Zvh(nm@B+loHsAkO!ZN746EwLyv zlEF|(DL%|lUgR8*Jbz-9fE-pL^%xDGn63}mnLedC_S)3k@@qq#>%bmj%-TWZ;!V1U z8V7?54M~pP)r=xqw{Cw5)`_VrhxxaxsG(<~$_(Hh%F}F?R<-eN^b2TKscu`b+|CN% zOd`u_&g4R3Gh7Bi)nBI>NveqlBlURW%GGf;(K~Z=2ef&lBx%-NgU#WEP3BNBn8wW< zf-clb0y;DeoSt<6Sv1Xd^(c9d38)#y#fzrkS(8a(IYLGj?ec#`aILb97dpcy}h4T#gQR_->G?!1FEUrffiYJ$fg!5Mzw zjL|!r#ul^n#lX;vUC4hH1Ud;QR%|YO;|(EAoi&W*{W<2T9X4t=Gt-9-gPM#~+L;bb zG?VENH#pYF^KF0ZY-fd21_T-y)Nr;L4td~B`$cSFhR16|jEg-C?7`T;M2e`8v7Qd{vp9kCjWwI~vHBJ~C~^;XHSV}o*f%p4&i}$Jm_(Kt2*at{Ze|V{ z)Od3cETtjWjl|odTT@A+=r%j5rdc!>UJWx&aXyBj(f>w%%ry2dlZlDvg7D?6`Q(O4AY^14eurL@olO`&F zfYq)*?MuXd#u&=MGLB5ta}`Ggd)(5!uObME5hGXNfGF3**#Nib<%el`x!Yjr2HE(mZjcE}z#t&FeN^c1DFTfcFFpke za=zmh!V>>d1qc+aN0H%)OG;c<; z46NY70_rxg)8yxiCi~w?uj?QJwY7D10K*5Tt@D48>%@4@>jdJg?dH602gi=3mA0r3 zA5l&yg}ku_-$NY`VpJCL7b!tr-GiOh7Hy$a(28 zaWH?QPR^*9>6mwRSk>P>)875=34S&v=Q0=VV{N#lhmS$GQ(ETXbXbo*P@a1mAnS79 z-fti3V~Q#^H4GB)Jk=c=*kM|-=vSG-f4Uxe47UAHKdAQXF$A$Z{=wrT(x=3KhHDLj zi`pT9gRdTT9_cRIIQUh3@t{5S7&FLYyib3|X<)}-LxbD((uY7b({#X@ zmVH3+?f73Deo69>(E*;c7vXWJ(zt)#0}qMDt^>!811Gt5n0e^JjBF zmcw&}W0-S=v#**qhe}%Q8Q1)fG02DdJ#>xA2zF-?DPR|PUe65ajbeY9OMokH zR<}EI$zWN7cgi`TGzwk(p%X1CX4wz`czh;w0*a(zk@5u(=sbN3sc0%v5A&X$LsU{wdJB5P+;o6BJ+~ z3*6t5ZLBL|aB9Vz`UWlvQb2z{<_-RzhA9X-tQ;N`3ec9nGTCvo;Zm01fk6MZ;w=)F z-SXNs3GomG7hLH6v;yNV{XBd^1dRPn`US7_1Ukjh&aiMfj;UrX#c|_g8C|Nzr7zoF ztJAM~$!(U#jk9lTiET2+!P%coA*lfJ$HyOoc^#iy;dQo)!()Nxqw#;5c_--aO~lV1 zWMPpXg9cB$KG+*Ot`cYSb;XhXDURYOC;*HA z0000$$e9cM_P)FA?)#YUbDy=^XV2VUwB~MURhXNAtst0EFbO%qGBbL;(#DLvUNCxS zPlDu&=)E&8kvgk&xzk_jqMfIgD_vI)(ap$JVHuhgm7EPpBnXKhNk}5YCmOTB*ET!R z61ztN9z$#&OW1$kJZ-*Xfw1&+BA76=tr#T2lA~7JnWX95%ZL$c^dyN83b>?YdI$*D zQsc49@?h+)M5*?>!+DE~7jY}k*>^a1iyu@$%49SB zcRkntSsOj0FjUZ0?-Pm-vGa%-9Xa4N&LqvzUhBb$q0SKEzDikjlNxpY&azx z(XbqVz@XiOyb6z$@DA~h2=Q3Jl@B6-2mm68@YaJ5ApbFEF%B|8SkIVuvdSkBC(%IC zAZf@nXf#YXQ0f$hiov3O?!JyUNS65=0Qh>-{m0h_?_*%&#dd3&C^seF9-bneJgJ~= zl-tU9^Y4Fdv@4)iu?jhUu!0`C71o3|<6UiCpr^g97zHN+y{69fYApSKU z@DPyor|t<9zo36Np#2)3D4;O=YwJfH6ls5jPW2N83cSAsCsYKY;Q4Dc0QdKb^}jBi zFze?k{YZW%q=x1`ukU=S&RZjgFcW(YA(QEKh{Q;3Ivs-FsR;HPHn|VrWp?iF{9W3Y zF9d(Qh{v*M$_HP(lRy-jy@xNX->JRv4Xw^`tS12{hs~Skcz0C3h3zM)$%NNPbTDy1eQm`Wt z7A0n>+`Mw^tL=OPylL)TcGt0;EoQ$Va5aCB*0$~L-D(wr0PR&a%>u5=p4%@iuuC@y zf3$4u*?ZQ{hK&|Kq_~GeSz9=sy+EIypxC8r_;Phno2g|Ja7HN%bQJctYgWbSXk){j}Em}Yh3#D>R}|3RjX4e#;J?^y41Su zyz%Ya(0Nf3I3VDi)hf*@w_}-EeyPU~w8I42c;0&aS(`tll675~ZkR6D&lUpT%E~KB zkasJ%s!dI^c%~{}lPu4fFX{T(&?bLRXkN>UmYGd-qK30>x@_U%g{w+J&%Mw5Qj9O1 z)N}TpI;U^+=Po+G{lC(Fb*1vCPxn*m{Vivt+)SHiYggH?OAEb&2b%FfnV+0aoph%) z3Y9Lhzvoc7vjgo}^F_IDrNrB7i+9`f3URmDVeE`UyRpzEJ&HDzh4dM7@??KKsNb3F zadzG|ljibW^lNsEmaF#(>uc;Rcka#ZqoF65B_Ei zJ7t=LX2W^2>2R)I=~k)p3Z;K>ukpY$78$wt8UHT%)>p5TYu}lw)a)nf)pGuwKUbG^ zraXGO?dFs!d*2#gvDmK@D%tieKM_4xv|EHp+-q)x_PbN1o%%OWvQ}O-)~@D^ zxn%2Il|~mM&HJp%S{~oU;Dq-W^N))U+TB*u+s+2=W9x34Ox(Wmxx7AsfZMrgGuKO$ zMT22Bm@e=#%C?-KzD0j+)%xJ=%k15{{?F(~Kl$w4o}yJzGCa=;j$6gvv28NuHWh4^ zc`a$wn|3Wc8j1d;NK>+AxW1Mn1uY}Sx3+3k`Pie>EcX3Ig{a>N)9)^sU2D=C*OYbb zQ|h<=p3lsmQjyO@`|g`rvaL*ZkLBIW`;fuITLcd6;fea6J1Boq-oCh7Qf^myo3@*8 z_tu~~vu{Vrum9A{4VrTnl`-W?t~)aCbpLiEzRkHwB+D(*thp}1njJNXW!-sFI(;Q& zOOrb#aF%QvOonYGvzD8mX#aE`nTEe-cwSZ-obO4n>en(lXF8xl=gV^yEwQqleKHJb z(V>%Q$2}+~27iC`lZ~-ZqSI$3+RGCU=>Hq=m_PQcxrBd{1K4%TF^XEAYpUpJ|}+pkSX-H8!>gLx{--f{TSn=p1GU%iR^z^ zhuMF7NFmHbI&P0DDx{l5mfMmsB zxDn6a90V+Ucg7!sg|Gilxw?@Jr>k0tTrlU*oEi@ShGhsjwi=Xk| z>}?x1h7Esz!@8GF3P1TTZ_XF>7IXY=$^77=s|hUZV`r<+`q-zh`1*s~7mr1+w9$q3 zWIvGtWsiOMdZRz?XZsGYPHfm4Hiivh!`QGkY=9pdHir!j=);DvVSC$#4f(@ee&a;r zwA|D?j^fyXw$MKlN;t7$Z~d^lW2_PkKX*_>m?MATL7Owi;f7ZH!j25eGC&~^sK(f~lkC!{t{SQd5iYd>g zfZ0xW0n)670czpIz*;qRf&Q}rW!AQW0WyE#GxpR9iVj-y9|p09-UGMsbRdPi7}Ry& z2YT*JVDRwjP?q^)gFBmpg~0L7bb;wU(F4Tc{r8vLSk>Xbh_YSq~Xb&TqJf^_XUmu_g;!# zxfVRydx0VH!e=0T*RSpPsJ0*+bS(H9$G5sU2P*!UDLAaS;GrJ05mol8yLCNP?8Q45 zwNt?z#-fKKzV*JydAuNLZlb22EsxGJmA_Z$yM^K_hM zMz=AMS)q$u4JMNCC%g(gES7FY9*=W|K;0NBB4mG^0p#g%T@O+E+$ZMz(j=ANnkEojNrJJY&%Tif-!*MULC>myJFzPYHow0 zz5Pgxx0gqG-pc|8XIIm@x9yCNAemFV!7*Vqj-m<<`Kep)1cn5-(5TQnIL^FE`z61F z(0zjKhNMANg3i5rK|aNh6Z(JX24pq$r2_bJt_36o*eoD$S|zbYc6$*R6>Gu$x>qxT z_izemxs?_1pyt&sATGi)km36@Hb{qtu*M(Vw-cY;zpB{3B0(U#_#|5l8RUTYT1tR< zQ83_YX=5frL^!pHtI~Se&ii_UKEP@s$&?4a_!L{-M5`!iBTYS*+`WIaxP4LuOAk8& z)J97MW{xvB#bD5Q)3CJY&f&veUAJwBo@E=G+iQIGQ*C54F88MApN15#%Z%ue-+dCK$rswyDYpV3%Fj9D zfVXZ|*M3z&>EbVNx^RC|NWFh5j=g^c$C%B6yK!j(KJF$EYTP;-;N#@=O5N|f7A+Ls z8x!t^2F3`UD)S8UOtylTx>W7jz zDd4QlWjkZ`!!B9MeXw)ti+H?@a49WF2@fEYGZ)#&BxS%@F{{O(o8t9ktBv+@{MH+9 zUfceGLe8#Gf+F4yBWtO^7oE%%<<~ca#}{*~xptm0!TBNktBQn*6JEvgC4Pj6ZrL?) znlL{ahBz@SXxwffXIpNSB}cHGHff(F>=LQm` zaSjU@N+QV0o=UdSeu2j83^Wn2K;MV4cIf4)8AG`TR6 zXrZdLbgi-6WJ3BfT0XEc7&G&wGYc^xQUuQRk}7{uj8-gZNi4H!JLub^3?%}+f|K

    r6Uv(e^jR~o7C=b0= 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ƵpKqM(0=2sjR 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

9E3w?C&pr>OBAKThq(gcAKZ*9p}W*Ja{4 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%0D8Ie%UpNS>!eL^*Jo80hPpt5&xRy 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 RX`OqCl4SFtF(Wga(Z9n3!F~V$ literal 0 HcmV?d00001 diff --git a/Spiri/qml/.gitkeep b/Spiri/qml/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/Spiri/resources/icon/spiri.ico b/Spiri/resources/icon/spiri.ico new file mode 100644 index 0000000000000000000000000000000000000000..a6081f6eb77835278a44f53b116f74f3d5503115 GIT binary patch literal 4286 zcmeHL%S#(U7~lQ}J@qVj>9L0%EEouiHbg``6l@DdM1QahQOI^;BCSAMOaN0z%2vOwEPHXlp2m&~+AYq9LhQP(} zC%TIC@mB~%R>@a8DCBeazOf4X(jo#rw=#VuzKM9iia7lW*^_N0U+sXQ_wnxabIiXq z>&@+lYCUvI%O^C+bEs|~BncN`7l<9iDhtk1CiZ3zNjzTaZ02rlCXm!)f3 z1M)qO{AS?w{6r?5Qh3#ax&w6w{tpM_HNL#O442DwZGy7dEWBPX7={5a?P&u81DKti zMIaDBE|)_xnM5j;0?V=}l}cpHSzIZ}P$-1n-d?n~w?m`RU}k0peSLjsX=y=scQ?ky z#$YrWF*!L2y)s_v{HETd#BTh@$qrAwzd*4dU|>=H#Y~F+Zn#>fl8&q?(Qz> zGRJD*9~~VL41>Wy^hY8QjEsyBeVv`17#bSF@bECqW;5E_+8}c?nM}~>bcn@b73-IM zZ*Fde)oLZ0r>3S53dy0x{1iHQkPmz5Hb*W1d<3i|u| zNlmS-t^G5ljOX|JmAqU74u=EzeEIo9xllnMKiA1?tKRAk)E&5*14Zdo$dwl1&WI4s zUyH6b$t6dJB0P3Hd1P|uYxVQ7hSR6lsEvb7`N4;As~iL_tpXuMct!JmpX9tdb$ zFQRdyh^K*bUYC?~>0$QG4DLSkjb!cghod|UrU*28 o25&wkA)HDrNszR(6*E$=o%*s(@q~bbAcq21)_L*&fa^a03%H|L&j0`b literal 0 HcmV?d00001 diff --git a/Spiri/resources/icon/spiri1.ico b/Spiri/resources/icon/spiri1.ico new file mode 100644 index 0000000000000000000000000000000000000000..fe7d8b34e5748fe28c68cf8489d37499b555b896 GIT binary patch literal 175693 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 literal 0 HcmV?d00001 diff --git a/Spiri/resources/images/Spiri-release.svg b/Spiri/resources/images/Spiri-release.svg new file mode 100644 index 0000000..637f515 --- /dev/null +++ b/Spiri/resources/images/Spiri-release.svg @@ -0,0 +1 @@ +release: v4.2.9releasev1.0.0 \ No newline at end of file diff --git a/Spiri/resources/images/Spiri_black_120.ico b/Spiri/resources/images/Spiri_black_120.ico new file mode 100644 index 0000000000000000000000000000000000000000..7ab55147a082a510dcee6124ef7eba378c51ef7b GIT binary patch literal 35649 zcmeFZg;!fa-!+Q67k6u+xLa|jK#}6^Uc5k%K%i)FFD?~|ySuv;mk`_uQl#jYKF|Bz zb^nEX*PEQIbtIFVnKQG0`?qJGgMfetfB$ z+VG=y@XtL48hp<&)Xe+e_r0{0WDzPSsSgq0B~|2Qbo|UtIxusX6}~>d$jjU5>H1FL zVtH;v#(2`T6}4fsKI;?ilB0yL>&l>!qmh^>5Dr{J(Uz|fdah*&OxCZZ=dODxq`SL@ zH`!uBbNI(+^mWZH9@@1?Y<>8D&-EoZtnF^A3sZ;`eD12aRJm^tiRZ z8f9lfB%+5epdwUmb8t7eSv&br{P(dFk0F{!dW@Xt{MXSB-`kb(UbqR95ik?~v$*7- z$an1qU$lZ<^FJ>bs$-j>n3-G}rpq*N{1s4N2Rrt-<)n<1G5+V54?ZC&$gLTl$;!(^ zFdt`EgI(9{0#(Ot@y$BZB>*1FUih6&ZuIea|5Hn5=;u|yM%}pSw+*nH@j2u9XuPLj-y z`DZRT4{4)K7+vYZe@h<{6?D6`dJVC&{7-9rhVQuA``2*)+KvdmmEo=}%KSg)20upo zzsLT!UH<>jCww#K#F5ns68A+@Yftr^E0TV^wGi;u4(EHTmRUTbOpr;LINW~ah{J1u)@f-^!C5YYRJBJvaDSh84FF7VGlMGP_ze%H3FZAw- zdZr+b(l=pMUsCI0SQOGvjZy=ILYT=FEci-HT3+}?Gtks38QhL{!;m&CZ%`9?(G1gj zR>nJw`pu3D0Q`({$kG-MNh|i2&bk7MY$dvs%4rI;`i1=AS=t9x@m8x9YzM~)g>kY( z`*(dzgnGDf^z(?GO#1@W0G#ajB5uCwnh3t9DBhDwxn;@NK~LKd_); z0Esq++Sgi+^HP3Ar2MLosIMhVdbtzBi&QMN$BI@~p`;hAhs@7xi;n z>)V?UEkc(cIZ$>QY4kEe!TV`tl3E^AM%*+u6c4OdHp4pAgxbsQ8S)@lw~=0QZ7(s% zH->eRlc&EOL^!7wh+Nf2qto+-qeyt!W8@Jdhd4OsY*TG->4_2Af{XrqfCE0?u7?i>BTgZ?5vZ7 zvX7lGyiRjQus@D4lRiQLsRYY~w8x4-OOk4sII#)^O@NllETrnu7r80WnIw<8mL~`^ zL~_RvIf2ge(wiF1{6FE3Dl_E0Eb}HM4hjiQ9Oa3KvGvTP zR}D-WwJ%Cjt9Y7pnh{z-@YBRG>LPDXx}<)UQdcHk$GG1$KtR@pz4|kF21MX1@o~sL z_?AWd9oyqlQMkEbCF5J#GU#1eD37Nra^gX*pqXned6 zmIols0KVx-fazk`Ipb6r#yw{#N>E5I84>)y>lDLxkTg9&klVbv=Qnn>&!|i_odlYs zRM#jGQcjbJ_<_nbrHl$7HIg@svRn zT?BFNd8utmzEf&$J)Nxo1CFzX^a8O9O2Oj!Y{Kievudv82;7i2J*cpp$aNu&kXDc& zMRLjBnred@$0LCenP-$$2L7`9S+v7P*y(o6|+$ujT}IzpZgbivJ| z)S9lPOB9a#WhTLTPGe`*Z?bm9cs`koPh49LqOV`NM4jpj4x(2ypphoWm3@sVJ0HnG zfrJ!hpb%vu8+pQD8}h9+desc?b>#z&C6{a^!OvnYHexZ)Dy2jw6-7cj-7i*8sv+-} z61bo0LHI%b1lNN|<1-r8I{Y!6`Y(Q>u0%^qm@Y|RdX zJcgMdO(Br(XI4(oc=F?$uks9@RP?n(b;N1HeL@JTOB9Hhp>q(JCEvJHA)$NR;ZeLN?qvqalKf%@#`yN&75&JI6fs6DyDtn_ zQbo;`{no=q*98pMIiK^aKGX^rQL|CjdJ41 z=WDJ6-pg>!moT0h$KjvVbKc}7(>(q(@$0QM^aym4OKpdXB-jBQ1 z;ad7oT9Vh*xJ+Phwe8~@NILWXStj?e#_hEb(texD1e#iDj(XsuBfi6{qxyxSB8mN$ z5@VbC4UWfkB-`CXu707}aipV~8>M2&Ly}P5mtK=hNqW`(@HC6K!y&_c@wo57iS3Dq z-}FK+(~C=+LK^x$K)1`|rDwv;_oOW1<5299Ly`|}+e0@y=chl1{VffhFBXOTDKa$p z(=O^DUyinc|(GVoFTB1|}`NelW;E%jTgAW!Jrc&`h|)^Hz@iC^-UzPAokNdErp z6Uv2AC0R_)I*FsSsY1h-3L7o zC1t1}WmAJp*mbnSHb*gvm_v7(P9at9BdSfZ!JX8f`KROGQCfF^!DdMNt===L-^Hvy zW{Q7GCyLHO%jlP*$lg}rr^+|D!8jY{!#OZ?U>4P}Fh$7MuI(~E6A;4+WWko?C;#<^ zi>T9%@A2;U(^C0Lq!^l(`W`)R-|u^+w_4XxNX%blbUh(g)L&~gL7}5ZcZ*Xx?qe0~ zi8rc{4p4MlS)YqKG6RmbK5oo^Ag4SSX#u6$Fh*QIGY&(}G6L+I3l7?|uROBL5(I}u z8=K*o(~p}+b5je=v#WYyzZ&lBG&m5oU|O1{*ZNGpoTo#0X8Luj9i28Z<{@!0w?{oD^yGudOza|0tZ`_HGh~xakR_rE$+*af-l$Q62$GT+ z!Y_q8v1r4yBO*$Q-}%BP-R{AnpYXj;WkjPt?DN>SH5lWlB$!JO&@!%hO9 z3N}5@aElB)cO82)j!`aln5TcEXxl8%xqdJRHeC*@rbN#JZWc2qyob(3v+8n8Q%3 zG`%7}3=~LF$}>9XhF)#xHy^YLMp2<{N`LY8#zp#NyW!-*pRzbS^#+lMl?6nPOo>=9 zi`E%<9&ezjq8aybj>!?n+G2jZw7nl)M=e&1#^SGgi17LqhTXnyIi9CZEwxWX{>JYh z{pnDcw1Ht96P|Xn6|c$t*J$*DBD)a<{jVx3-4jqkwqK_C+mZOVRx^|$_`H zm&1ZCdC(WV@_y&3133k@rDYu5!`ivgcex{D+x964n5h}knNG2DArg#nQ=Q(Osx%+I zeL(kgz@hiubmR9m81bCtO|<1{jY&BJplIMZ8hi{F9|+R}K98Gj{sHo#cBY`>hy8{) zRPSV>$dwdw^H)b@gI>!FG{onQ$Q2##COFCqo^Ndv%l@iyA+~Yjm}&jPKKIpTYU&Nh zjD_AfOBbTH+!DLgp>wowDegkoh4Arv4LUCO%vIHgCEEfE`F(Ci5XObd)|Q zAge@E4Oq{ZnD@*vCj{UfqFZ87>8&^XQ6SZ0{`A{$uNrM-Zp9-R#fiIGD61PnAt=t; zMvI>;^*<=BhK*Q}#3G89Nwd}7;gnf%&+Eids?GJT3^CIXSvfYBzF`>Ycx4g@?MyRh z{DEj&rs?Cia-6A#ebu$~tseTWdo*=$OBluAv6UdKf$cs;u-XvG_)sa`h}`j3C@k{0 zFo$9h&111?$F=KiT`k5)VmPHDmcZ42v@J*aL=@77h#pBVxj^@>Wu7>UIB^+s1Esu} z?x}J_=3dAm4|%-jqQ-Mjmq~m;M8)yC)`(J~x>sSXqx7?WZZgsaV#Y~N*Xa_<&yG$s z(_b>e-fZ$u>m5K@-xHw(m5jaNHWEh%J~h9lggjEjv}C76}b9o zF^h6J9=$8+_27Q}p^k?y(W1VPciP@E@|(`hAHDk%zg)J+2IOgSkDg%c;5MQ$I&_^E zHk`eyb+7hu^nX{HZeQeCP%!Y$oZ~2ZM+Z$hkv@uDxwm=uM}CVjvoL9oL%g{-(N_Oe zq@^VSmFg5KJ$MNpxc4I>Ukyn@nqJA3aa@(^E+4t6w@!wpp#a~*L}`F^iGs_UN%u6g zJhVMoE@AE>q05i7B`$G^VafeN-I`xCK0J<$kVv<6N^cwMe;HO1oaOPfwP5!VvU+zi zN7z>Aa?G0-5TetzN1>B%k=;%vc=SR^7X)@O{tKN67-4|6;nD5|JGrkvqc@_W=b0Yr%tZbVJB*9$+zWo zld@A}ty+Z(`vR@I~!?A(3sW|%cy zk+zDem<4en$7)PP$n@!&anW3mg=oUH8TiIs(v!md$YljW**RhSzCv- zVUBF#x#7eN%5-7Sk;HL+K+rwoU@|(VIqTG+&`BZhvy3X!P`^0JP~dSwVAG3YpZLMg z55QTByomYDM((0~v4&M-Gq>Bt5@kuR^@qPLG*3n7(FJ~~4`0)NmQDRo!2b&-iXObt zg#=r-=a+Z<;!n=--cC=tV%5zJ8gyILZ8}yq%qB{-F8$4`MDZn7eD{_Hw^>2XljfHp8|ZsL(%^9HT5%4IsD)F_q`?PwvDk$9WPKy3NTG2T+PBBktM z#3@Ql6%Md1VtxL@(3{fiJFs^Lb$gDQ2SiL*oO2+3k(ozDMB_p(Xh-L~!}H2sreyPf z?IMP4H01Zt3lKT|T&AVv#p@8MrCT}5TVEqB8NxvU;>GN>;AcLhEaB=qiNoS`Da%Yt zpa-2$>1yH%MAT7ha7=mpS=O++E>Qg5h`MDm%DZ40O1<*_?K+#bF*j^|ED1jGFwTk? zKKFfu!n)vyBDTiwqMbUU-QD-w4F!rFsSB;O08KciAks$}N@M#Ar9#=2?_s?441DX- z9h3~ludHRhX)TgQ>tbBul!Y1IO-pq3A(tT^@N_$fA-$TEmC&HyORUd+dj*%(c-pl4 zWrjp!)f06}tC#6JZ=yMCV4(~JQ}i_yd{ok9Yz0;hDa}ULjyViid-QU?X~{$%6%>9t ze8URzL6OG2E(bA_cfWf+O=#ZETjoisk8M!)963#Wx-B=fLU*L;AkYfALjUOfmghZWnin zN4_Y3fD1W$Q#Iqpa;yY2HwogKqK}hv_?WiRz~w1`MKzq<{$PjJqQJFl#{{;ir$c@d z{zv3_Iz#bdz}V~HTZEcQh$)R2F?Xm!)?P`L9q?zF>VH*fI2Fc-YF^hRYJQ_1$DzVk8HYi~7F?-l3HsWjD8ah$9 zqG12inErPAgI?S07H)CUF0MSAJk!iU75TSAtesLf$`TjxpWnKDJ!i(^97=~T2?mwf zvJ?am+7JF>Ee6?m>4g3yu+5gq)}o&v*cU8`k*_jd(kWaO<1c(f#4(stiX{BvmB>PB z{-PCuZz{}jePls|{N2;OWz630mkboioNvbv=lhuHu;upOk6USp(lEm5Ul?tE#7sKh zPW@kdP0^<@FTHVrK6d!@`8le_8ogph*Y&E`?2@q|GXC*VgaRKh4N z)%l1VhAsKfd~7YA9F7sT_eL*$ci4+whvdtaW1_fDZr^(nYTAFZdpx)(%tPYUxB{|a z{#lm5JWC#Bc$zsFBQnGl$t5bJ~pqL^8$TkP-x$CK=>_A%z~JW!ovFt!)w7yuRqRV&0|xry%pj9fVbx~tj<&n z{KeHR27@Gv_7VrkJ3#HftT(H!2z2cQq3c3pgxvU=$G<0^nA6)* z9Ki)0kZ9jqKBmoXX#$scW~zR@pwEF8t2EV%dxGWl&O9t1qXt6t(0+{Vr=T3F3{CZ5 z@lY|GnF)r1fo;@d+oHqUX_a+9a&=K7s3uuuOV;?c{QXeaWL=kC2Dwa{2^94t7J92N z-WXA+4aEt3+%IQFD??Kp`1Qp}?!Id%>bGQu9Yd31qV3YBI+>h+Q4{KR-w+!Sx$hbb z6Gs@lP%E`IQEeJaclFqWz*jLp=Mj=i=q`$hEAXv zx!#*J?io+1G~0i}hI*-nP=i9f%9zFq<2>?aI2xws*`9Al1n*!&i_lJnXi%-yx3(bQ z+g@vb@!?FQjomn!WnvFAg(75fT$cr@m__O=>rH30>L;XTZ=CG+j{U=e;vuwXo^LbA zWmL7OJFpyA9#>k*#xWGH4DW7EMJwAbFdzRKg6I1Pdplc(LoL4nPHyIrSslnErs!L_ zekQuXC%QA=AXzOBy=UMf?8PBh(JQt(x?7zP>MIl8AmxSx3dZtH1E5w>sU_`N!)fHw zj0>Ne5E3gF8TDH5lIXiFB!-|4v1PPCA`JnYJmuGYBLz;(FA@rNn`Zhx*d4#?;rbil z(Rsk35X%5f{haWmm4mSogonHYb;;*}z)g&KfR;NeA=ekj@()3+e~hy3dS{D#i?A$s zSkZ591f|Qb1Vjg^I{*E^FaC_98GTO>r-)HXp^d{ZL8+PSmW7V74t!vBp70e74txjC zRR0i8zZZJjaAl?_l$tCu>>aNYz0W&zBZJJnVugnXgdq4-eap-rz#ycb*JYXB+ATkj zRtqSP^?I~p9>{ej;xH8q-H7`^?p`&+rTBg;?Hf&IZ40|aN*PA$PQXd7T|Cl8v}WXn zF(#?UDF&0W^p8J2yoA%k);5htdIbO`nPBy8RO5(DVPSL|!bA#rf6_~}?U$EzHjV^2 zod;*l3rdt4o!&BO8wp-duc7K+3KsXK#a}p7Es(-Rv@meO4qE@8E;YPhgK^r(_`Nr0 z)br14=~9qj5G6KRnR}X?OX%=UrYXO{G+EJ)k2@+f9^Yg9i>jSOdb0dubo$MVcWR|I zDbz??f%KKX(%&bkgmFfHYMj01_eKov2-JkOWqX_{EU<;W(@h# z#pt28iK}&Z*}8-gg8j?CF-}~3`$k@f?l!mN*PQr6_$WzQJnGOcIS|WtmQ}a2_D1<% zjY*^&`4vx(%I=di5lsI8`SWdY`2Q!4RL>9*+yYp!a^Xp8?5B9~m^EPQ2R>#QIbz5F zGsTx`y%^V@lSPY)43l0NuXn=PH2BFJ?CX8dKAM7|&YA5ktkv2Na$|NtHcKA~bM!Cp zacUkRppt4O;%OY?AgtgoD4Q$$`YI_~Mwu5Qdj!|TV&FU1b$0IeJh`8|5L6^rb}{aJ{zHOkk%UwSit$Lk3^Osk z+o@KGU`1wQlQvb=;yKN-jz(mj625SGKbp&jg^U{}pkX5F8s)BPO2~=oDQnXbO2|pJ zt@M`lb>+QDI)Sp`pWVadL}Vq3Dq5qH4e6Gzw5xsOemHNbFVh`V2zMIs)ledgURBX6v-*QxuCusH ze0d6w(ZA)TkL|+M0cR?lges?L622Z2ETHDu2L^mTCQ?bFecUu$Rm_}M8b1ZbMhDg_ z*?2g8yG}aVwATQk(&1bd8b_O|vZjgQnnEFgMy|y5Cy_Vja7Md1vOoP#A_zelRSiKh zhqUYt|JVNHpNW9l8Of3__g}*fD>oumAYeb8>A!BL14|_0JKDTJJUC3lOBb}Gu%7Sc z8pp@}cQX=G6B^)mDeC=SchBWNcaN{DDBpiKY2Qfy?;rnfQ~z)0`rqO7|5*UBXvH*e zX2ActwMi#-`K~PWAt-PE?DZh|Z9{N=EveD*jq{3>Tkglsf2l~d4-&B-gyJ8DzwgEl z)N1ZU z-``}W_mEmLc5@)tS-@ZOPBLtW@s&hux*Q7#6OPb;FgUkRqXHF$1T40ac@Q2HtwLVb zzSlKZ2cT_{bU<-FOx{Vk%ZnM$uwF>LicaN4|Wtk~L#lMUq^1EzR$$X`c#s z|L8ZXM_~06HL+czmUt&VK-Ei;lP=MNItHAsByd?!U?E5~cHXDayl z>Ly)gX=U}c(gCpKcBFKHc(yMCYV$F0k1ewdv+1nD0^kMZHDPyrB->T(f6%`sBANiyLi$wG#k;h zgiGw4B5dPEh7S^_0y%)auM;f??#c+;Y5Hc-WtFX^r?VLY2^yv+f1VE?JIqo16J$N; zp6Y*p=-aBB%DdY(CT(A%;_D24*k@PwWPQ*jZ|QSxilz$6B9a=()~kC8s+(*IAL%|>H?GHjpTi6 z^P-trSW3-(jQ6p1aFc(W1_qE;0%th_1)OQ zgp!1SCIshG!-p0lx<%1>uh=RlR_iMdq^&{`>k&g5jZ;_>J6GFU+{e8QZh^66g&Hml zxaF=1{hzt7nhUAztn*#xQ!cDN?C=evAf(pZTnEg!0W46#Ho`pr$Thh^19_i@9{AO1 z`GGe;xWk||g~V@pgg{c?!~<0xVO`YdGp10)dypsY)~5@?E6F4CXNiZCI=HRCF^^$- zg0!FSCI4}U#WsAI|KXhY?)o})6QEr11x22Am*EgOC-6MYKua5N_O2-iKijRd1?&#| z(4EbXSdp3fLBYmc-)ujj2n@^(xa^#clb>oR|M+*YEgnpIB2Rb^Q4cub9fDT2ojDnM zWZ$R$#X;Sq57@gF@rfnlH2U&7_vU9d{raQwUe5rTIS!^gN1oS@zr>3Z_0wcJgFskh)LxmN#%M2;5M{=Ok(W9yESXTFkV9Z zR{Pat-|7cIfN?!Iy`HY|B zsWk6A&g2z1uA%T6JA5m&u%mjoqAY?%_fLOJ_Tkg+HNe@A5Nr%C;hz*iw&ygQ1>i%F zh-_F89jpcdX0GjViCz^Z=7k?xZJ>ZcXLJB5rcUyZQ_VhL31cB~3#(fxJUpt|{! z(_6M>5()CjK1(%tyt}Ys2^sZ{DssbYk9wHbH^*Idx~r?H-@5iXB>S9<$zUG9J@D0@ z`|F%Jc+E}U{92_c(L<2J$gH3ieMJk(@;TsKfq6O`Wd~6UN1g~VDYCp-X#kajYr3%k z;u#*_bT40$>)d%gD+ssl_F{AQFLvGt-WG5gfgxL$QmRG))ez2ryUob$3b!Ek8;Eay z1F7XjXs2G1Tl6x#J`sKR@5bYbaq#_K2z=L!4?|%7i)|)}xqctsi0L?g;OaWz%V1-< z+Wbu$#IvIY`PwgsImSFi?b)=2+Its2|&J;Us%=%8aUO2$VuV>uj~ ztW~0{0j+L)=j5smo zr>P&^k1Lv7FOkgar%f6f^&&zH&KW~;Q6x3^GwHiYGR)6R{z!(Jkt+9o3bGON4hSP9 zv%G9rqw)-b0j2`nj}F0Nc@SHD*3&^&K|;2Qd-Tp$tD#pez1#(;U6>lQ+_@+}vO_k) zd_{*josB6618*0M*CDL}Un#n7%>wBkl8ZcZy8!15Q8m^6yYKgDZ_{?*aZlnhh_~eZ zBzwTMwwxK`uP0btx^CmcS=)A*@Ol&o1ln&t9rE%p#^3~HNIYS4HzU0K&3{?0nO*h1 zGNs$UZMTi@-=0}qL|+brbD!V&bqE2I`-b$YAIVIg>0U1A9Ae`eIsLve>EHN7;CJD} z_RTvpoZs!HeyqOBrNLSsZfGi{8YS&#scN4c2*KbtZ}p3a6t1At0Ojko!`+K6_b4VL zB7|3ZL02gnk`((LFHc+|syBW^0XH`N+hLnK5BkqfmVP@)N+uyGO$Qy}hUNO)FgIbe zB>H#7LppRRQ(k%i0*hOT+iqOpHK;s<&RKQHOE%3oa1-0S`}3k{T4O4eQbW%gDzh>1B+ld9%RjvBj;u)Y^K8 zM3)eVyLDK>z4N-l&GLf6UJTK((fd<_)2EiZ4u`S6MOa*$bXECsxgseNB+k72OJp|` z_Iw6&pAcLuC+Wz!MVGombnX0W7r1Y{;VMj%q%b&GJ+yZEq&@DLSfv1cg5Tw}Wb8qB zd`~Uabs1oe;$ZD%`fzclU{UiczKiS)Wqxq}$>sxFQ0S~<-taX<^sJ=_8%Dmk#LGInhg6TS7 zk@Gn=1tIq0FD~asw`*)tm?SqEQGE2t;sm`S438Tty-P26-IGS4#w!#;S@me#esevK z5BX=b=8)&L+JH@r`RzLYN~2#q4%^ykxa@lT&}d+@xrZcVJGDW+|AxD<i&=&?VP ztb!S?cR@pF`{LD-H==m|AgwhO{{+qUt?zdzc}H%ucu3K=ks|Gg85MGmVC=Tb*>?3| z+?Zzrb-BSHO~ z@eH+!91JziiN7rvo*Gc#RJR?({+?fay?`&Nl1mj3I9(L@!Q*0opq+KPQ?Sa-XnSZ= z0m5luw8{+x2}%yna_g8}_Xv0e+Nv^)WaT1&y;>RplwAmHH%<0ZeprvG`R@XmFjGMx z;{CguM)knphlh=K@TA~J)A@p+o?8#BajcSS$Y_!YUyqR0BisY z71iURMsVn(F$ey!6>WbQ5lUrKNBg2u)7VsCmrqv+Yis4AzLZ~=E#u2QR3JL&oEB@N z`TK#)`TX9F1Z0eU@sy0?*#wwGe`0n&n_&g(xb*>(iay@iP?bpX#lR`~SG$y=wbt$r z8&{pbgZhBy6DLg#G;oi}y2PWzKYH&4YBH%}Ouu~TOArs`m@0UE-_duM%T9u|`l*f+ z?f#yJk8ex9ysK*i^=zc2O?1b<9Rpx_ZpGJm7f&`-G{0}Y&EZyIsxMC0EI9N0y~{3o z^hU3%Nir8|bewfg{aniAzGNBM;`MOk525sVVOt+p{*Cl<})zv*`O!Z{JL#1i# zru{Dsi)P1PAlS|LMC@mW4^OVJd-MD!s6rIJ=ng@KHY=FG{xevRR;c)N^#X-&hSO{; zoh#hNsQ=pkq0@tw=okIZhKJlgp84;5E4^mOz>~z*1drk)j1Fy|niK?MR>0U_VZW!u z>%2OGZo+<|nuqT5M8X9M*@A_?7C?fNA!=o7?4SPzd;W+UN#b2P*(ZUS~l6 z8oSP%0i-1REYw0w3t_EIo*nPz(IYTf9FslQ8}hyKSt}2X%HD*K^)(X2gs);X8oNC~ z(|RQzPQs|%T7Q||7Wfs5?z^!=x&xTc+PCqjy~cUDo_pv#O_ks|a%FH&x^YJVg@}Gh zpa`T)o7ms7?xC_R?rkyq?e{-nQejWfcm6yFMfvGUOd9WzvLz7#iT7&`um}?NTWFVP zf6M!q+1Ssg)}JGCn~Mt1?-x7py5O1jN<+VbW?KU^sI%SRvh#Zh*?G~f8L`pd6<7lq zs&2V%bo<6jH}V?^k9TfeVXx+~B_Azw+o!eBDwE9k6??$G9x_@S-;XN-==}7F zT>uH~dQR8e{zHzFSsIkM`+}@oq%m)U`OZcf!PkrRmB90@Gy>r}eb?rmxFKw>0GZb_ z*PK%EeqP`BHrIVOP8-Ggx6*l|zdu9Z9GnVr9^tc&a`D`J)neyk{UrVTu%)M{1r4`1 z_ywhb`Jtz)6-~!=>A`z=fbnkysY5BR&P0?^mF`_# zr%7(qv67bA0qcCo!v9PrFuzXQj?d$T=ol^uGi%=2xRB+Ry3)FQ4*GD=FqqN#=QXwW zaL)&wflm-eY+01&A~08Pk`m3X$x>>!hT;>juxi;O#5%H|*!R_dR1LB4kfwT|9Q#KTbUy)^CVX7=jje zvtS($v`zNhtC);u=FgWIHLH06t@`&j6-20XnFymzuUr90)cL)e=3RY0t4+r{?=%$C zH*;Zu_Da}!Pf!XQ{Ye&nB?Y8oP)L){dY;est@53Z5D&IV(fu4=8J}E}DFt>tN?_mx z*u1}PN)ns9@U-Mg;IpIV^R+X3D<7oy+V!v1wK%Mm`-j5kUIy^js=!@#5okB^yZx7j z4?e%ug++bqZ&Ca_T(L7@_U23GZrJVYYIQd{+*7~p*+ghppoQpk{TD+t`$b3VOGe;t zMN4Dfqr3Bgdlb15YtJ3^S{;{{W4S*Ez6+6(DiT%Srd2_vsjYd>iV|52*BD#&^L}*0 z;BfF^&3+kdU@z-e$H~fI5vM-kr+1p&RemHYsE!944D zaBV+ScXL{Raig%2T4T#UzS-`)F=-{d+uBmEe1fO7y}y3u9knwAG;-WV?^(fTN*NAn zpYqnMGID(=Q)F4KrLM~B-0gn4dICd;@AepdTeLCaFw$p;Yos-_zgP z?@NJK6GJGf0Gw^QyKU6qz^tY1;O9Da?W>ghM--{YP5dDj^eF5NdBSTf(gyBM`6lc3)2pgBG=Hz!u;>Lz42iyz}|=@*P5B=fIn zYT01Qpl=&coy;1qUUzOK^plcwi&Je6@x~6EFEbMy^vrM*&%WRSHZ?H34XX(LosPZX z20N)fZR9#DI5-qNKB3w|~w3v>4SNRUsKl@$Pwc%s=GcdyxWV+B z+u0?nK|FjjRXoOO-(rcv2)N45NLO&4IIiVb_&=QieCesy(BZJMi&%9iSdU)3jQd%MHWc zYnGO6Jz#0?fZvL8QRnOHBsbUtO=o29JumWty;F~`%;s(6axw!-~}*n@V)x*a9YQmXWH3r>N2#r zN_LU07T^35`^)HjtAsrG6HsQW;uB2wtsPc9KW*wDzlPK)=_hvm%6_=EJ%>Z<^2yny zsqbd#@~<(p**f0C1EbTapk0xaHw6*_rG50uGg}LT^`MJIsv&JxaCTK4uR|_7rry0A zO_+OqUKnaC1>;{|a2auHZ~tCdX!JF&KOa<@YMUCaSZ#Y56z&AAx^>aO)A%oSe*%Gl zKYe~#4~m7e`qL?&6?ec48gb~JhLzTCLN`*l(Gc!Ak0=K6b*t)PI}y;=-=g&8sz-k(wn$L1?O8IN^yTBR)s&mW51B_ zwk;v+Ru^-3qkpeNkwl+hgd6EeRs{+3?fEOIDuEIA= zY*Xke<06*g!vKx1)n?65V;wxl0BK5m?ErsdABR!0+V!RjscHnD0c#obpI|D5gWC_5nbhYM}tpaimxl9mhz z+m%@7tm#ZCEVZ|>5!&z>*D^3BFOYlU16TXGEKY^ddgJ5c1NfoeniThA4b&L0(zF)H zKPma(!lIolwEyvMpm5!XyWHX6$8E0QHBN_xB)YD~tCOYDA1oIbd_r%LuFibBR!@7# zhJ{qr7K5+=h{9dnQ;d(tcf+Ud}aQ+HnlzUf0 z7x=SF?K$t?+>~z}w?Q?6zG;vkp7=q59s9CgVe$q3iw zJD{?&`zr6Y-G@J8WX;IU$WOeVFWslT!3dY>y0z@Lq~q;pGSa}BzzP%Rcez!Xwi;Fh z5YMe_)A28rv!Il`jjKOiZ9exgc!?IP@qfZNcpPy)GH+jTjV-nugi_P%a~ zLBH=;rL=V&PQB zHvEApNbC!329=CwwLdwmR(~buB>*#yX+H^=;NF6{JC_U_bK9wbtq`xtmge1b z4wL3-5`NE~uO25Tl32ZaqzaKn-Nbiq zAGJs!v(a>%cV~B(>&%)?NRsCtXdy%*Z{B*(@?Ae(O${X}(PFN8_PnpSEUFeBcxjn% zdc*ES>ol`2DLGK;FcJK;XKZrnxi7{Y^++z06^i<@uSC~324`JA3>qk}h8MT;NNe(A z!6s%*Rj2uaW6{v6vo@HhS>oq)`OB}fzcg+d*eyQ_e3wa-S9ZgI4;J)7zqq`h)i!$5 zvs5Q^DgP-A7Rg+c7*cW0J8dZoQ4yj{MgJVfZcsf*u*^bKCmy_*Sz#dB|{BYkIqhR-T>jNK~KWJHd` z`N`4RloGWE%KvHat-s<3wk}W@9D=*M1sOtuYw!do1b250?iSoa2reN=0t9ykcemi~ z&fpI7I=T0IYrVhWUDo_Ci#1(c-Bn$EYM;ILsaxLDIj-+>)8P`x45I7xlGA&BGli(yKi-f?=r~yXx86x)*|Lwgo@%xR zt0tP3@RlRYVv_TIOy8A5^tv*>F)TV-X0@I3-sIHG`R!FzO3MpnvFFfe#e}fv)wnE z>WLi;qjR;EQ|H(E-;;w}-Zx#07+DZFNn14nnj; z&VS(#bQ`t477mpUb0K1t$$2wGuL=a4vZ77Tme(E)8ueCF92>q{cSO61MGEb4vbtA0 zeXm~I78dPykR)t!cAa}EwOKErq}4Efg}JvC41EIuRx0ABZbYH8A4seFSX)p4hA&iT zPx*Q!aJoXjb~DZRvaPL+8g_~e3)G}?=Eo9yJT1(v?=Ec!VKdnaI1xd7et5;R^!;>S z*$*AaT27?C_W<4wtfwQtQoL}KBNJEPtv|O3+!_gA{rQk|E&=cX&U2Le_|(>f=r%9_ z=2u~KAhCPBA?L?aork$mJo{tYhtBgZC@QaZ1lf!`=51VF68i5fb~pjIrU0ui8JcI%P2#RU zwXWzSn(InTzaxWl^?6!;kU6RQlC!Mu8Ul4Yn}Jtq^yIbM@a)Xj9x%m%w3m(rj24AD zrYOf3(9cOT3gw_c^)DUdJ34DU?EC0GIl};QL7*n;n%<)JoMM?!oi87tNksu27qb1{ zcx|xvwDP;b*Ka_Rd8NsE{voVGR`gz#!e`0(c;vvuCjw)l{4fJJYZ3#UW~RxxP09LU8gL{ln8=Ktoc#pj9K(EMyOgJRZS_y zu}y7RT#o?|diCSoK0}2nJ`P5cw#;;$ZN0qs;@;j*47(wn-^SZ+LPr%LB}&Y-fBXm_ zW861BJ1dM(X$VW}2Y6a2amjP7EL9|1Srgs@i3b^YpVO~oy2;(QWI-rpIf#!#Z!Wo= zI$*f6VK>{SSL*RWy=?#>M&x=Dn`rwY!na-)fE$HxP3C9aDidEV``n0lJ{=myYd<}e zQIxU=G6dR4Zg&XLf;|fm-o~qA(dZVK8E%MwQZ|VewJ&$meFHdfUAkFe9 z8KSgDroD=b{8P6I4SZTu)De93MXeST$#TEC=9s1~9D z`}L1F!9gD0dCMHX^u&W=m5*hFZ#g7IwvQeAfFNDuhU-e>cjk}>AwKT)H$OhBN6GtB z%@*{W`{AO*y8F>Z4W|^n&0Cl9m5*S1jb_X$e2nLCvB&S#nSR58F^Y9uW~E8iy!4wl zzT1Y*6Vw3cl?0?WpasN+!2l}*9l_79tlXFWofCj2t<_8sE8bJotTi`c@U7ec+?kce z_2k6%7<`=i+CRa>#wp&rPY4J&XY9OKiP04Jm^s^=1&Rw{W!kki3J>ar{k_eF(I0mT zxwY=}aA)KFHt;=<6U#%kT8p#~KrOx%Stao+FTZ?X554%iKLT#peHr^Lw%?jBbN@Nb z)e3wg6LszC!27Rr{{GCoB5_*ua~O^a5YbD2Z{Lk1Nn{*~9SRKIx4!=V{(gV)?;)_g{Fw{9)w*u>pen z44O%LrSm2U8IU%8$5sqMIx7SOgxd*a|KNGo-I|Na#XBh8Tj=2o@!w35cKH% zTAT9)hmwK_Hm)7uH_`$mh+v|YJt#pX%>h8BLevtT2RBcivxy|<`LZaH@f{ltUYS07 z$PxOVy}W=?j_&vF`of;K8h9*7@V~P>DXs@Kd4=j~ZMvfqhG>13=ynWL{AwWedjYO6 zgwX;qe*Qgny__*l=+(r|vP%=dlXBi;Ggy~W)w?_=Eh8-b6!*cY@$#6v_BXa}r3n(& z5-hMRVss5sV9*gd5Z)H(T_U&M4!)i50&h;Ua$Ce zM&8bk`G01y>Lu%^g0KrJiCx4fIXc3!Iq%>7Sjab!!|+c^=QLnPv(o~kuqgzk(cqRX zfrrLXL5?~!%;3th`b*Y&LCQoE62IABPz5}PqUtuYU!0E&zA!aE=I$3g)|hz;JH z5uy}Vx5Sdm5Qo0N+<;8@5K^6?ZIEqwV=vnJAdry|PhTv`&fRSE;s3Qe^CgAlIm=^( zl=}HJ-1&5sf}0ive9P$|{(deBwUAUv?CF#5P4nup&Kjel3Iu7Rpy8=V%+^6V-})gv zD$MusIxL=?h3GQz(7P{BS}9e;RI_93rrGi1-31lFnTFiExjt&Y7XdftDfI|MBGA`q zC}P*GxzW!80nDE!94lm5#3B%Rl|U;X&nNPgHBe*bP_qiD1Gnb!WbapZ)f-!l^4<}? z)tJMwW~_Lz=Z0!QMoi`Ft7wfD=q~3ju`z*a${3-sVT~28!A1IPLtqoy49dx*Z;ne2 zG5EJaj@J$;#i#MNBa^jZYQ;b}q~8M(?i(M+Q4+Jq^*>L_p|LAyCPYBbIussTyh1ed zm5!68_Io4B^t7+Lh_3XLxgYLyNi1Obs$uQ%VsZD&tASm1gQ`%@`;C!zK}GG#JH|b; zfd2(94%-ycv~}!XRvQ0pf@H$GmpZoCt@s$!a=YCM*PYeFgk6bcrd5srG07LD4fX_G zhPB;|IMVoRx;P9Z8&(*>*DX2-3B&Hj{zb-+dmdOIN8Q|p!16j%(`OS#p;e6MOpi8l zzU5Cz_!}m_F9GoHw!H&**T0xG3=sJ|Q)=Bu-Vf>n8%4oK()Hreu)sSrKV69Ng{$`O z`zU2BI?tn@KWxV9M)*Km7h9&slG#(cgNccs%yuI=@0C3MPM)Scz7em@k4f#wv}?8I?r5VUp$Lwd`8G)Mr9! zn0;L)bkYqZg?GD`i)!yY6r|U-TTIJVL6RXMqw>y+_Vvd5lLg0cVvarXTq_1X$J-Db zlSb^}bfkCN`0=6T1!Ao|zb)w?%g?Py*}fZS6yAH^E7Wq@l9OpD!mhMmRFV78j|T&h z=G*MlM;yGlP*l(QDmJ!~T8xI~qw^u5rrsxW#$<0H*!B&*XZu7Ty zWzF#`(9kK_x_GSkwTdn**X$6J*hdGXmFSZ4>)B6Fdr( z>XOijQv+PXtMZ11Gs;WfT5(vmN48&`uAJN@#PTp2B@(I4b3i+5ye2>y!+-K8?=RxX z;MM%XXkvK~`M1D`Z>af?hu0qP5U3xtYk)cDD7fP}{fB)|baN|X;IYomZyN3ZQJB#= zRj|9jtcKs+^`W4ixU;jYAd{FSth_xyJFF z=h0;`V${)m(tz+cZdHqn(+|_6NHMHoA?q)E zksjpmn})xQdZm@KV2P+39))VoS#MLU$djX$=xL!>>j-C8gitis$$lQqv}wHn0QLk7 z9@1ymzK2t}usY+_LJu)+T{Hc6(g-}!efu1IkCN(f!Yg8SP?P}S* z=Ve8K?TL^(J6qu|Lf5WEB0+VbQzg3omgK|I6%9@=-BVq7@2a1vR>oXAjSd{6A~$+V zm(%2n@RoEDD@X=4TSYb<#G5z^KF?Lm4jC9<&o((ZU4*F(?HwOM{T^Kx@WJN~H;{*A zhsq7X3)XFJ+}_M79b&V-_wHdrK>&{7DY^{=#?OMF0N9{r6PEs@=*+P|eerTFQXi|j zD|i9Txa3nQe(B7LvwYU`c}LhA$Zn=%FoB38rBGs6=jkce$~73aabGLn;xV9lvxvF* zV|DpTsUtXGF9@Y_(V@9kerV7uY7w3DXN3xm)$r`0gudS18+kimd|dW%jr3d<@Tz9l$xPY-2-}eN@rYYJ6+{ zSo?-oM_DeD1Gl$*Vr5Sy!MJ=|{!~i4PMFW@W*jSQXzW}dV+zwGMcxkJA&DtEYP9t7 zaCJ{jfrk|1eLbfUdXLpgGd-^xYOBB*CYc@=SW@b+0&pTu7y37-z&E2{^kJb!F{s@30PJtcoWI#U4T%mSR&xCm*KZKq-2KYAB;!P9TT z9Mnmn;PXvcvsq#f?b&Z#>D&{FYQ0&SE6ERCLtnz|d|jzS2=3C@8HcZ&)K7M8jA$wm z{)RHO_t`73ek8+!=a1VC+tOvnG1my58R}I+JE?cCDP^9o@s(MC9rjtyODmOBfJsfo ze{pE2IWt+_*o=lQnPpxyZ+DP$X^3dhbNg091XA9ioGi_i68re@Hy^(uy!u&?s+tE` zNpzpVSE6qEw+&j%B=6#*tU{1uwc9)&-W)38%kQNY>vZVnCi4~<_Do>3M$exvuC zlryUFGwIl9mlLdRx8?J3(GZB5S2tR}@f>)4AeEg)GQWP_|DZIX6*l;q#%@x0)2QGA7Sg}O9{%t?g<{vAc%hNtHp~Kd1shE`230QBi({0odSb%ccH4#1 za&LQBE!1&LW2U63(o?he9Gvd#0urZG%kB^~~(_Nzp98sJ*FD`D2x)#nH4#^iND=1bvsEz;~UyBSBx1;tB_V z(5ACfPd5HIEjuWHDGC9$x0fY0x}t`d#b#(SFQJ%|>H&s?o4=0OZwh8f8#lKF64D>> zJbwxI@)z3<@O&CDQmG7wL;I6&ybFO?Tk zh2(Hs&+lHI`#1y?yKbes7!XPuqFwsFb@)j8V^FbfKkWaw09~}JB?=)nM(Wa)Ln4t` z3@3S2LEesLfqdr_>SACdLl;D9y;u2HIk$ruDp$%U{>z5!Uxnrv3tGN|yur*&v%{My5^?#QuJIG-%HxSjSZg>`BNcr-n@q-oHpNBV5b z%rsrnJEviylQ-@%!t{D9N1ujc^U8xudI@he+cvneyey@)?PTH_Z*;G8L#4V~@V>r( zQ=)&egB4obkuWOU<-(;B>BFctEuL#rglC0oh}&*c-}JB;R}YzY(a<}VU>4I^l}XO< zox$fm_=;sFLw?;aF#ST;{?$ggwWleC>n6U%13&Y&YIga9(5Ing)njB*7VG0c)g|$5 zH`2{(qQ}4E>qxgk^H=swQ$fpluSw~hiabA(^|9Vh-@|k+c-GSj&_+>{#o2`+%B>kI z1%hB)d^Ca>Kou_dO#^Bif#|6-yAcf=c$4IVgBta zjh(PHJbrFF*l6=~27sM;ss6TYI>Kg80W=)jm8MAxkEgW;TmZ(BIHUyyxF%R`;u#`v zJTIUq2jKFfa<$#qZjKK~IYfBSpPpNb=* zf8`p)>w$hY+Xr0#r@}&R0dN`)9`~cv(C!jRe;30> zFK>Gde`$Gtf+^|8oFWEZJOpYeP*0t+x^x={w?~c(;*}}?}khu=wZQa$%id# zVw*+Kpsr^MCm`jCn=Qggvn~ZizM{aw?KKxV9~VT(FB8WJt2meK`se6IL<7$Z<-$GB zBd{ZMgu)Bq8Q>ZddX^iWZyty+=OlLoq1V1DSo`6-`Y{JB*h*t=+YHz14g#^1-rF_s zfZzD_^o`}zlrAny)`0`LQI;rrouR|Q_B;<>^zrPoCHx&hlf)# z-4gW+RW~_}2`9F_iKJNFZgt^#Z3tm>hn;1o6l zg!oDNmtZYxO_5Bl1q)jIy!87kC+lw@vBCluM_P1fBApsMU;k?aN9F`}ohbVoU*x)g z%O7Vym#M=?JQm>BH>3{?Qe>6aGD_pcmVIB(EIHAa!S1#j&ilkV(}f&lNIcEv;b=kK z#)z7pTcbb5-Pq!_W;V%N|8>w7Cbp0F2UrC!=p<90DnD-mMVkB<4I(BsJ zBPl)fB9H4j@MX- z2fR^_G&Vud#CW31?}1_=)=x?Oc0t2C5fb4nmH+2dyh!hkHl6s0?t ztmTxm_u7ec-;4y)5-roB8cT;@XYm2;jsX|sdaganTo*;Gx9lGb3n_n35Q~DPTXhZ% z1MPTwIaJsB^4aMX#7YOCtl^$;`kqyxQRLJ2Y z<5IMJB8<~b_oE2scIU@>9h80XK5JtUBUT6XZ5U`q=4|Gr*!}1*%B^-qOJ_UR3!p|a zCUwIOAM$^sf7}2Pkz>~q>eX5w|}@&Jr%_wn!j zN1>wQGWt?T$U#%{^&G;btUq>3NFkCz{5RYEJYT=^p}k2YWcYf*^o}y}#Yw|~jqgRb z@&@*-USwpqk@t9?lq1@?KXMo2?JJJ{DIi)spi@cZ2KlE73O~Q|S+jl+MM;uRF{NR( zH&$tymsP!V!49I79+KDlGJK8T<@lK_C4XL)?s=s>9vNW+b59z#5ZXvC_PB!7uv45v z|FvD@kOy`CeZK48z6g1oMUfi8mU}DjoU#!6 zV?90?M91vup(bKF^%M|q=0USi%={FzLfC7#8mHb^I3jE%pe4)V_4MB(j5yff0F52PSC~x+^#W`XFM>witItL7u3s_|lPh@B_eG9%l%u zk(-D%xze%WO=uWlge|4q?M+M)dd|4!M9V^}$TKlNuJyQ4A#0@2T3)R4Rp6`9$VSa? zX~WyT@aAow*3|n)Pk05kO@WBc1u|6jXYKV4ZHFIysdmU@yvYdZ9IIf#qe! zbN*rK&DMTDd)?eIn$}e%EY|97Cv}3UVQk@}={e^jSxJ*+9#^^9Kb8sIiLJ^l>QIW!Q&I4bV@d0BJrJgToS~i<5+^@U zVGqw7DhyE=?}U>~p@09Sihs1>B;?hJk7?HXpq%)chCUS5@gxv05>W=)Z9#^~bhv1s zqQ@#_82&4d3S+%EJlAl!sEJgN^cwEgrbxTs!6hq>=ZlspI{xTz*4E20XpbYHJTNNw zb8J;(_XEdT!wQ$u`Q1Q@)ZTwCK@e5Fz{;(~SDkDoL%cc+aAtrzg6tafM^Q*~N;k=T z6v;vy{CIY5+DaW8a)BI%%&eTd3Z;*f#H?$6WKP+5*!9I|p_%+@B9Jea`W0SNx$9@K z6{Q~0`wW6xFLqj6-bloOF!=i?T3-l3$qLN>==8G4lP^|yMOmOGhLVKBz3oEytw;A76wq2 zwcf==&e~;t8|K?|Q&j@v)Un)%p{fR%m)inf5v-@1r@M_n02`1M7*QPYOMRurIKO(6 zk&Uet*8^k`@7;{dtG~lpd8J$mKmjQZpS7A^rtIRN|LRg!bTIKg{8sY z($BU-=;+^(CPs}%+v*oDSd;d=!XhW=|BRI9sfMxKFY4N_rq3Bc4DL;Xox1Ctg-{zw zlNgU177c+SOiAVo-kE>|La0MTl^Nmj8pJ?VZQmdW()?~a6y2WJ7zTm**$vFT1fZsp z48(?aPoAvqNy)ZX&fMf*`8d}PD0O8{QkoqWaw!!0VTNAwj19M)7^?ZNbx4&x3Wq4Y zClFn7VtwwA{6vxbsV?NGfQ*6>(~HVkTZ7nL>N}>(5UKjGtW&JC{2#HPWn}Fr76Rw6 zDBG=}`^!xVZ7y*W;x0@|2FC9B?$&Y^7~Ah;eTd)|<*2AeGt5XHLeqkLi7eL)x6 zwA1}Bl02ZvJv`=StNW6DSZUT{;dz{~5@U>GdseQ}t#x`)DEAgFIwSya_^yXS|t%zYmV_x!R21Z|F_zExGJpnWVv zAn91w?=#)uI<(c9_nSj2$D|RQBjuOYuq5W@j;Z+j1*G0DcM@gW4E?@#?hzVHq*$4{cr>h zR?)8;ra%04Gg`-*$^ey!BXT(idV1S()6)UFgikdi{p_!Uu5*uz{i(IO3)axXpXFjxOU)aZ#2)%e6uSpdk?C!Pm z?6l5cHbmmc(56Orke;maF5}{k@^()iyJPKyr%4+@;rk-D4W`vU*FzP2_+L+iGDIQ5 zU7X5G2oEi{Mq6sHl+f)5(mfSt{c=a5G$NVbx}=TXFYGs*X=)mCqjJe*apKAa8f9RQ zuI*Nq$%He>SKJRzRe1Ke_nX=44^qa>IM{W8z*M1JCz~bEM;|?({hn=a&2Qf$wnRCi zK8w7tf8I0(K)egY%-Nrp#)+n|5QE_4W?}fo(w4(Kh(c(3mYJM*7AnLIYxeQT#TO<7 z`z3IOCtdC{_F=7ABm_IND=Im@s~DUU#bppo$AKgGvwcYL!`!I@ctc9=Rr|J~2qm%q zwK{8O#2gYyCvDxAq}4l39C!fD`y(Ze5QR_z3b=H3l&tYYQut!Erz=X)`KA>M+~Gka z{q0ANrPA9q1{N;y^-_oTQ#&EAZ@o%w6@&UjkKrJvey|rw3N)jPFW-oBHjm3y ze*TPPFsbbFVXa9%Afo(vSt!T^`Q4je)-+WyG(rsjS@?BO=El` z0WrRT{BN8vefSwy4d@PdV!im=2dH5zCMh<>dc-TS1h;pHD}usT6?{gpAFIK&m3`gA zaA~N%1SXZvWTg{Zv<8R+jcpfotLs~u6ri-`jEe9%ls!|_f!_Z(2)p4Vc*S|5@h!Ws zK_2^OI~6#)7ScqS=%Q61nHwf{mkBSMzuHz!Z%!ojdIR7@_xqnk?S|IT}5>^^cYVzrq_{tS6Qr@cr%D z%9zB)thGZcVxruyrI(8Nzr?r<0KRSRGGe~X&bLK}_z(@supolO#HHIr+t#xduKbv? z*aYJ3Y&t{O;I8v7N82n%i<`UcLQCiX>7#IfkD9zc6wnP`esqMZ!a<_QRIKdoOXY5L z4hok~WI|I|=#$NXgKaYG(u-(=5#wwH;^Dnd49?P){O9SIPZJgxK7a$ zAjOTCM&9`uIjOPZt5mUklXOV9dSZG|-|4m3T6YR{Fyd>uSXNj&1AhJ)PX+S&=_K$z zFKTd4&B^`*iR1b3hjtU{zij3`p30x5@U4`r7NaP(dD(9$PW^sN> zx}ylV$V*xG>T9LsHOR}Tk7$?e0%;R;_B&u;QmJh=#)ImgfG2K!&NKn>m&5HE!&`%> zvo};d3p5l4>A)S<098E|bG%^sW*1B!ryKhw0w+!UW|M`2Oj+_mt*?8q%+27(p4i2J zGF-?nZpE_Yg);Zu7yj9Ot6^C2OJ3L%K7+rsgrek9UOF4=&|sJ%wrU5ZC^~lXw}VGT zF;?%p!vpP*IrsK=Fbp=IGOoD(+`AiZ0+$+#_Y-ji1y`eG^SA;(+6eO2=#y@W4D>g| zGYtg{?Rw5R>9iE{0^uFH!A)LYd7wWccs`FvjK_#g^eUEJpC2t8pae%+#1F&tXuA>)BAw6JjD*g@CHJm*BRn zXn^zuZezjR-MHpPyJ;LL8YB!$`-j$#R~f?jN?m^zgig;wuw>R|jp(AdlC`_5_~V0y zp&1YngA8Cydk`Ur=N45IB)Ro>JDwxttAXvIIwB6Vs1W@4l3JbUXN(+Cv=1K7@R1yR zXhRTbn$~+F>dcNYQ$1GoSy!Z}?Tn3_);s%l&Mt*lu|F-jHUVwDj4u7mWr7t|bBZE) zAPp852^MY`E#&C4nM5q22sAXHqrfr;%Q8IuVqV_VOgiXOCygCHY6TO!-8XFvgSE#yLNw~Ps$So=<7^4@5Z>CC5%XAzKzW5WmSVr)yA5G7VK`fVD=HVkU7sh0!+ z5P0c??<}CpD6J5AWYscxw0~u{bFn~G$Y2oIr%ulML`iv$@}U)QJlH@p>!MJ_D^86b z?$*?dtxG?Y%p=vthWW{1udLS$H!7V{{b!uzQrm zA@_=2V=D?y*d(#@$uHRF?eAUfa?^z*9XN8{uL_q4Bv$Qy_4C5cDjXTc-9U}5a=|#g zUiqU4_#%*ltMb0Q0ydo9%BUuaf}avdS{tcSf!iLN8Vi5aYP{n3mAFV=;Pkz!Qf+>V zL;HrRe&tli_waHmNFg|ml3SAo4L`QjkRN<*Nwiv8lUJUG`+K z5ndQS-O_K}Q;F3n06JVJCYr^LrZ7T+6f;A;j;VoZpX!+|1@_&Lw>x$YDX`fMrRjj9PjRAJ}JlXwcHjA>%Km zFym(6ZmAo}<%$Z5w;EvbT>h0KS#xzQXZIq>yjGMtk%wewV*|a0zbhuOmNQ)1*7CF# z+xLa$)0%E-0;VG*Jf7~dnj%Rx_|u#$&Om$`ieX9696#Epw7}uvtZsxzt0>RUS}BE| z>qCa0`vBiIJ=N9#vt#}1-UQRKX8$Ep$k)7NH_yn06fG|fs~_^IN~Y*E+5}CMikdT_qMEDUiVNil^_QGNOD`lPpE`9m-j&+&eb| zvX0KE>L=HE{cm{R-RReUZ#po1JeRDP<`pvLT9}hwK6mA9=jP4;_YO&7m&&FSMkG;H zm8#S?LpXiD_bBoi#Ji3?dR!J2;_80z#`@%=I}m##$8hR6d>G&5V45ipy!5JKuDOQS zzTmuFPt1@g=@PlVLs^UPfRInQS7`{5Zs|A=NWHT7j9`Zc;?ws=Q@ZQ(pifH+lB#@P zK<*YKKw3*?CLPD}Ud5_$!Gi608a+G~z=7Yq7q>W(d`I~0zzGh|5P5o_%w@4uFA~Av z`aQdDox-XYHnf2MRH7;Fk&JA=!ZfwYvFdE@$>n2`3<23VFi87&+q#<968GIMI(jm96 zXZvaABrB#6z(7d@nSrZ#{0Q1WR@R3n9+)9k@|b<$7uczjmTt7~9^WZ%c(2B;T_qK= z_%bNP$T*U<$`rjclk>z&n=-+uIg(#OuofBS+^gx_XU|9fB{F{av`fko`XoGUWbV8f z-CqBc3qafJvXq`USRw~*sNWppf|6Knw5VBZU5&QlCTZ}$CTD%Zl*>9c=ZX*xBpYD$ z!C#zo%Rh0OUss_LuSRV=G>sf_o}af|hm85b-yPS}M*&5NCnXj{K$KI${}ArCAhpk% zi9#oVmd9;kyvyFUms23;ukG&?@Lzmh@0W&dWidbWr$D7yYdOOI&?cfjy_8e73FudC zVU8Bpan^BCIG9|1>eF?87O>nL6RPC`H0F>mo)I$0beKQ^F4Iwc>1k^wA%qyC#wrlO*U)Ulsi%@P%szrG?9neF*(= z*YX*26*j~7=H(wUH2CBN)oq2We-+l)r9g?Xud=Wzta{LeFTBQj2KA}JA*XU*s3zY? z8!0q`o7J-?Bv-5rUWdP=B~F|in6Ntk;o!y=1Pn33Fd72k?P0)^ZKlV`JPWelt%OM; zNr+Ss^+mY^hDa*n9!FfcN-p=w-@_r~r@JyX2TSzj_xeE0`*iK!TVUPO7kZ&*mR@(e|vk@&wWeCU3Lyg+`yp;=Oe!H8u=FF(WGF_@uesFbgmEjnOSsu zV2?w`;9Dur!Di@QJ!(tqYUWhdL6zOl8-ma;lnfotUlLRH8Fr(f`Vl!#N0xG5q%Z=d z-=czXpQ^T4F)mzDFtM%2sHkEASia`No;mVK?n9M)O*3}l`@qF7jGpIH*Bw8yFYN5< zH{Y|b+PRvI{zy>&LNlpov<08-MCzjLBm0@Wypc@P{|2;lnKbmuZ;1L$p8@FbUNjuz z_X!U3-7V)0i$sWU1*-WW(|-yFz@g>$*P_Oi{y-_aw0ghN2>n)$r9Z_+Pagj2UU{%d~_aUT|2-%p-tFbTIVF;UK*jIj<8ZrK%rN-+# z1@@2f^$yf6Z-$?mIyBmplPwYvmR1B} z)LgrHV=wuDonGfM4|R)2+o|Pvk9j;(j6bG%_#QJF!rOw-Tl$uVEoiy@xNf9^0=Q~UHmkqr2qanT zDJr#Nsxf#q$|owb&umL73^pY;6q#L9rbs(aewUg<7jVEM%;TLZqNpb6ef%NEoRA3hx9&AKyy{cB{v1vchhxkG@F zvBDv-T%ugd_Ha9sh{D|qX(JAxVHw!LcbXE zB_Jw3h4fF+GDV^3%aRe0Lh=)>%zpCUih!Vru5CB}Zw4eciSh$_b1OtfmPS6tE6(cj zB&px~cQA9c7iKYAo38d(;&p22>7k*?j~kreQ3|>I7r%!t{a#kP|0-q7-vp>WK>2EentZ< z9?mK|V0-+JJw(O;@RM*v!GICNzXRL=BGjz(x8pDWZ7u|84zqK&;6Gd=xm-?wBGlAh zrT^dNtP+6c-rhoh0-*m6_#+(%G9=cnlmBmXm;n8V4>czR5RLxpZ4U;N#^{{5&B1HIKZo9Fy*b8qATZWE2~->v4q-W~u9s`6;||6M$AJA?i=^8f#t z_NReJ2BLeJA-=O<=#|jFwff)l6eimq|4FA+*H)Dv%%Aw!pv9YKn1gTmXiWG*;pscY z`CEZO7)aWGeg3P5)PEnz;<4nPnsi`%H-YT?KSdib1jFsK-;@C~T5!PMJ831UG6|#L F{|D|N8p;3w literal 0 HcmV?d00001 diff --git a/Spiri/resources/images/Spiri_black_160.jpg b/Spiri/resources/images/Spiri_black_160.jpg new file mode 100644 index 0000000000000000000000000000000000000000..2fdf40d7311781f6841545f65db261a44fc5e6f0 GIT binary patch literal 52719 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