From a04e33ccc66122e85e1846a62c9b161da4eb0490 Mon Sep 17 00:00:00 2001 From: peabody124 Date: Sat, 4 Dec 2010 17:34:16 +0000 Subject: [PATCH] OP-192 Flight/ManualControl: Add an ArmedTimeout field to the ManualControlSettings so that planes can disable the timeout feature for gliding (holding roll on a plane not so good). Note: This will require you to reconfigure your ManualControlSettings git-svn-id: svn://svn.openpilot.org/OpenPilot/trunk@2185 ebee16cc-31ac-478f-84a7-5cbb03baadba --- .../OpenPilot/Modules/ManualControl/manualcontrol.c | 3 +-- .../OpenPilot/UAVObjects/inc/manualcontrolsettings.h | 4 +++- flight/OpenPilot/UAVObjects/manualcontrolsettings.c | 1 + .../src/plugins/uavobjects/manualcontrolsettings.cpp | 4 ++++ .../src/plugins/uavobjects/manualcontrolsettings.h | 4 +++- .../src/plugins/uavobjects/manualcontrolsettings.py | 12 +++++++++++- .../uavobjectdefinition/manualcontrolsettings.xml | 1 + 7 files changed, 24 insertions(+), 5 deletions(-) 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 @@ +