diff --git a/src/FirmwarePlugin/APM/APMParameterFactMetaData.Copter.3.5.xml b/src/FirmwarePlugin/APM/APMParameterFactMetaData.Copter.3.5.xml
index 5829ed8..9e439ca 100644
--- a/src/FirmwarePlugin/APM/APMParameterFactMetaData.Copter.3.5.xml
+++ b/src/FirmwarePlugin/APM/APMParameterFactMetaData.Copter.3.5.xml
@@ -1336,6 +1336,7 @@
Throw
Avoid_ADSB
Guided_NoGPS
+SafeRTL
@@ -1358,6 +1359,7 @@
Throw
Avoid_ADSB
Guided_NoGPS
+SafeRTL
@@ -1380,6 +1382,7 @@
Throw
Avoid_ADSB
Guided_NoGPS
+SafeRTL
@@ -1402,6 +1405,7 @@
Throw
Avoid_ADSB
Guided_NoGPS
+SafeRTL
@@ -1424,6 +1428,7 @@
Throw
Avoid_ADSB
Guided_NoGPS
+SafeRTL
@@ -1446,6 +1451,7 @@
Throw
Avoid_ADSB
Guided_NoGPS
+SafeRTL
diff --git a/src/FirmwarePlugin/APM/APMParameterFactMetaData.Plane.3.7.xml b/src/FirmwarePlugin/APM/APMParameterFactMetaData.Plane.3.7.xml
index 07622b6..2610b02 100644
--- a/src/FirmwarePlugin/APM/APMParameterFactMetaData.Plane.3.7.xml
+++ b/src/FirmwarePlugin/APM/APMParameterFactMetaData.Plane.3.7.xml
@@ -1094,6 +1094,7 @@
Throw
Avoid_ADSB
Guided_NoGPS
+SafeRTL
@@ -1116,6 +1117,7 @@
Throw
Avoid_ADSB
Guided_NoGPS
+SafeRTL
@@ -1138,6 +1140,7 @@
Throw
Avoid_ADSB
Guided_NoGPS
+SafeRTL
@@ -1160,6 +1163,7 @@
Throw
Avoid_ADSB
Guided_NoGPS
+SafeRTL
@@ -1182,6 +1186,7 @@
Throw
Avoid_ADSB
Guided_NoGPS
+SafeRTL
@@ -1204,6 +1209,7 @@
Throw
Avoid_ADSB
Guided_NoGPS
+SafeRTL
diff --git a/src/FirmwarePlugin/APM/APMParameterFactMetaData.Plane.3.8.xml b/src/FirmwarePlugin/APM/APMParameterFactMetaData.Plane.3.8.xml
index 91f87f9..db7fe3b 100644
--- a/src/FirmwarePlugin/APM/APMParameterFactMetaData.Plane.3.8.xml
+++ b/src/FirmwarePlugin/APM/APMParameterFactMetaData.Plane.3.8.xml
@@ -1013,6 +1013,7 @@
Throw
Avoid_ADSB
Guided_NoGPS
+SafeRTL
@@ -1035,6 +1036,7 @@
Throw
Avoid_ADSB
Guided_NoGPS
+SafeRTL
@@ -1057,6 +1059,7 @@
Throw
Avoid_ADSB
Guided_NoGPS
+SafeRTL
@@ -1079,6 +1082,7 @@
Throw
Avoid_ADSB
Guided_NoGPS
+SafeRTL
@@ -1101,6 +1105,7 @@
Throw
Avoid_ADSB
Guided_NoGPS
+SafeRTL
@@ -1123,6 +1128,7 @@
Throw
Avoid_ADSB
Guided_NoGPS
+SafeRTL
diff --git a/src/FirmwarePlugin/APM/APMParameterFactMetaData.Rover.3.2.xml b/src/FirmwarePlugin/APM/APMParameterFactMetaData.Rover.3.2.xml
index 91f87f9..db7fe3b 100644
--- a/src/FirmwarePlugin/APM/APMParameterFactMetaData.Rover.3.2.xml
+++ b/src/FirmwarePlugin/APM/APMParameterFactMetaData.Rover.3.2.xml
@@ -1013,6 +1013,7 @@
Throw
Avoid_ADSB
Guided_NoGPS
+SafeRTL
@@ -1035,6 +1036,7 @@
Throw
Avoid_ADSB
Guided_NoGPS
+SafeRTL
@@ -1057,6 +1059,7 @@
Throw
Avoid_ADSB
Guided_NoGPS
+SafeRTL
@@ -1079,6 +1082,7 @@
Throw
Avoid_ADSB
Guided_NoGPS
+SafeRTL
@@ -1101,6 +1105,7 @@
Throw
Avoid_ADSB
Guided_NoGPS
+SafeRTL
@@ -1123,6 +1128,7 @@
Throw
Avoid_ADSB
Guided_NoGPS
+SafeRTL
diff --git a/src/FirmwarePlugin/APM/ArduCopterFirmwarePlugin.cc b/src/FirmwarePlugin/APM/ArduCopterFirmwarePlugin.cc
index 2d05daa..b32d49f 100644
--- a/src/FirmwarePlugin/APM/ArduCopterFirmwarePlugin.cc
+++ b/src/FirmwarePlugin/APM/ArduCopterFirmwarePlugin.cc
@@ -41,6 +41,8 @@ APMCopterMode::APMCopterMode(uint32_t mode, bool settable) :
enumToString.insert(THROW, "Throw");
enumToString.insert(AVOID_ADSB,"Avoid ADSB");
enumToString.insert(GUIDED_NOGPS,"Guided No GPS");
+ enumToString.insert(SAFE_RTL,"Safe RTL");
+
setEnumToStringMapping(enumToString);
}
@@ -66,6 +68,8 @@ ArduCopterFirmwarePlugin::ArduCopterFirmwarePlugin(void)
supportedFlightModes << APMCopterMode(APMCopterMode::THROW ,true);
supportedFlightModes << APMCopterMode(APMCopterMode::AVOID_ADSB,true);
supportedFlightModes << APMCopterMode(APMCopterMode::GUIDED_NOGPS,true);
+ supportedFlightModes << APMCopterMode(APMCopterMode::SAFE_RTL,true);
+
setSupportedModes(supportedFlightModes);
diff --git a/src/FirmwarePlugin/APM/ArduCopterFirmwarePlugin.h b/src/FirmwarePlugin/APM/ArduCopterFirmwarePlugin.h
index d517660..ce1d9c8 100644
--- a/src/FirmwarePlugin/APM/ArduCopterFirmwarePlugin.h
+++ b/src/FirmwarePlugin/APM/ArduCopterFirmwarePlugin.h
@@ -41,8 +41,9 @@ public:
THROW = 18,
AVOID_ADSB = 19,
GUIDED_NOGPS= 20,
+ SAFE_RTL = 21, //Safe Return to Launch
};
- static const int modeCount = 21;
+ static const int modeCount = 22;
APMCopterMode(uint32_t mode, bool settable);
};