diff --git a/flight/OpenPilot/Modules/ManualControl/manualcontrol.c b/flight/OpenPilot/Modules/ManualControl/manualcontrol.c
index 2b10a23a8..d9093b748 100644
--- a/flight/OpenPilot/Modules/ManualControl/manualcontrol.c
+++ b/flight/OpenPilot/Modules/ManualControl/manualcontrol.c
@@ -49,7 +49,6 @@
#define UPDATE_PERIOD_MS 20
#define THROTTLE_FAILSAFE -0.1
#define FLIGHT_MODE_LIMIT 1.0/3.0
-#define ARMED_TIMEOUT_MS 30000
#define ARMED_TIME_MS 1000
//safe band to allow a bit of calibration error or trim offset (in microseconds)
#define CONNECTION_OFFSET 150
@@ -288,7 +287,7 @@ static void manualControlTask(void *parameters)
lowThrottleStart = lastSysTime;
} else if (cmd.Throttle >= 0)
lowThrottleDetected = 0;
- else if((cmd.Throttle < 0) && (timeDifferenceMs(lowThrottleStart, lastSysTime) > ARMED_TIMEOUT_MS)) {
+ else if((cmd.Throttle < 0) && (timeDifferenceMs(lowThrottleStart, lastSysTime) > settings.ArmedTimeout)) {
cmd.Armed = MANUALCONTROLCOMMAND_ARMED_FALSE;
ManualControlCommandSet(&cmd);
}
diff --git a/flight/OpenPilot/UAVObjects/inc/manualcontrolsettings.h b/flight/OpenPilot/UAVObjects/inc/manualcontrolsettings.h
index 81a2b02ac..77367f48d 100644
--- a/flight/OpenPilot/UAVObjects/inc/manualcontrolsettings.h
+++ b/flight/OpenPilot/UAVObjects/inc/manualcontrolsettings.h
@@ -41,7 +41,7 @@
#define MANUALCONTROLSETTINGS_H
// Object constants
-#define MANUALCONTROLSETTINGS_OBJID 3505967188U
+#define MANUALCONTROLSETTINGS_OBJID 157988682U
#define MANUALCONTROLSETTINGS_NAME "ManualControlSettings"
#define MANUALCONTROLSETTINGS_METANAME "ManualControlSettingsMeta"
#define MANUALCONTROLSETTINGS_ISSINGLEINST 1
@@ -89,6 +89,7 @@ typedef struct {
int16_t ChannelMax[8];
int16_t ChannelNeutral[8];
int16_t ChannelMin[8];
+ uint16_t ArmedTimeout;
} __attribute__((packed)) ManualControlSettingsData;
@@ -159,6 +160,7 @@ typedef enum { MANUALCONTROLSETTINGS_POS3FLIGHTMODE_MANUAL=0, MANUALCONTROLSETTI
// Field ChannelMin information
/* Number of elements for field ChannelMin */
#define MANUALCONTROLSETTINGS_CHANNELMIN_NUMELEM 8
+// Field ArmedTimeout information
// Generic interface functions
diff --git a/flight/OpenPilot/UAVObjects/manualcontrolsettings.c b/flight/OpenPilot/UAVObjects/manualcontrolsettings.c
index fde2f28f4..1a54493d1 100644
--- a/flight/OpenPilot/UAVObjects/manualcontrolsettings.c
+++ b/flight/OpenPilot/UAVObjects/manualcontrolsettings.c
@@ -125,6 +125,7 @@ static void setDefaults(UAVObjHandle obj, uint16_t instId)
data.ChannelMin[5] = 1000;
data.ChannelMin[6] = 1000;
data.ChannelMin[7] = 1000;
+ data.ArmedTimeout = 30000;
UAVObjSetInstanceData(obj, instId, &data);
diff --git a/ground/src/plugins/uavobjects/manualcontrolsettings.cpp b/ground/src/plugins/uavobjects/manualcontrolsettings.cpp
index e22bb7ba5..3d0aeb491 100644
--- a/ground/src/plugins/uavobjects/manualcontrolsettings.cpp
+++ b/ground/src/plugins/uavobjects/manualcontrolsettings.cpp
@@ -231,6 +231,9 @@ ManualControlSettings::ManualControlSettings(): UAVDataObject(OBJID, ISSINGLEINS
ChannelMinElemNames.append("6");
ChannelMinElemNames.append("7");
fields.append( new UAVObjectField(QString("ChannelMin"), QString("us"), UAVObjectField::INT16, ChannelMinElemNames, QStringList()) );
+ QStringList ArmedTimeoutElemNames;
+ ArmedTimeoutElemNames.append("0");
+ fields.append( new UAVObjectField(QString("ArmedTimeout"), QString("ms"), UAVObjectField::UINT16, ArmedTimeoutElemNames, QStringList()) );
// Initialize object
initializeFields(fields, (quint8*)&data, NUMBYTES);
@@ -309,6 +312,7 @@ void ManualControlSettings::setDefaultFieldValues()
data.ChannelMin[5] = 1000;
data.ChannelMin[6] = 1000;
data.ChannelMin[7] = 1000;
+ data.ArmedTimeout = 30000;
}
diff --git a/ground/src/plugins/uavobjects/manualcontrolsettings.h b/ground/src/plugins/uavobjects/manualcontrolsettings.h
index 8544ee2b7..174e3e12f 100644
--- a/ground/src/plugins/uavobjects/manualcontrolsettings.h
+++ b/ground/src/plugins/uavobjects/manualcontrolsettings.h
@@ -61,6 +61,7 @@ public:
qint16 ChannelMax[8];
qint16 ChannelNeutral[8];
qint16 ChannelMin[8];
+ quint16 ArmedTimeout;
} __attribute__((packed)) DataFields;
@@ -131,10 +132,11 @@ public:
// Field ChannelMin information
/* Number of elements for field ChannelMin */
static const quint32 CHANNELMIN_NUMELEM = 8;
+ // Field ArmedTimeout information
// Constants
- static const quint32 OBJID = 3505967188U;
+ static const quint32 OBJID = 157988682U;
static const QString NAME;
static const bool ISSINGLEINST = 1;
static const bool ISSETTINGS = 1;
diff --git a/ground/src/plugins/uavobjects/manualcontrolsettings.py b/ground/src/plugins/uavobjects/manualcontrolsettings.py
index 65608db8e..26e7958fd 100644
--- a/ground/src/plugins/uavobjects/manualcontrolsettings.py
+++ b/ground/src/plugins/uavobjects/manualcontrolsettings.py
@@ -337,12 +337,22 @@ _fields = [ \
{
}
),
+ uavobject.UAVObjectField(
+ 'ArmedTimeout',
+ 'H',
+ 1,
+ [
+ '0',
+ ],
+ {
+ }
+ ),
]
class ManualControlSettings(uavobject.UAVObject):
## Object constants
- OBJID = 3505967188
+ OBJID = 157988682
NAME = "ManualControlSettings"
METANAME = "ManualControlSettingsMeta"
ISSINGLEINST = 1
diff --git a/ground/src/shared/uavobjectdefinition/manualcontrolsettings.xml b/ground/src/shared/uavobjectdefinition/manualcontrolsettings.xml
index f44470785..0f79578c8 100644
--- a/ground/src/shared/uavobjectdefinition/manualcontrolsettings.xml
+++ b/ground/src/shared/uavobjectdefinition/manualcontrolsettings.xml
@@ -19,6 +19,7 @@
+