From 01822d7a0cee6b62bcc9aba09fa990238562cc42 Mon Sep 17 00:00:00 2001 From: Alessio Morale Date: Tue, 4 Feb 2014 20:49:36 +0100 Subject: [PATCH 01/19] OP-1212 Fix priority queue handling and use it for setting processing --- flight/modules/Telemetry/telemetry.c | 45 +++++++++++----------------- 1 file changed, 17 insertions(+), 28 deletions(-) diff --git a/flight/modules/Telemetry/telemetry.c b/flight/modules/Telemetry/telemetry.c index ef1ab9ea4..4b90cbf5a 100644 --- a/flight/modules/Telemetry/telemetry.c +++ b/flight/modules/Telemetry/telemetry.c @@ -45,7 +45,6 @@ #define TASK_PRIORITY_RX (tskIDLE_PRIORITY + 2) #define TASK_PRIORITY_TX (tskIDLE_PRIORITY + 2) #define TASK_PRIORITY_RADRX (tskIDLE_PRIORITY + 2) -#define TASK_PRIORITY_TXPRI (tskIDLE_PRIORITY + 2) #define REQ_TIMEOUT_MS 250 #define MAX_RETRIES 2 #define STATS_UPDATE_PERIOD_MS 4000 @@ -59,8 +58,6 @@ static xQueueHandle queue; #if defined(PIOS_TELEM_PRIORITY_QUEUE) static xQueueHandle priorityQueue; -static xTaskHandle telemetryTxPriTaskHandle; -static void telemetryTxPriTask(void *parameters); #else #define priorityQueue queue #endif @@ -119,11 +116,6 @@ int32_t TelemetryStart(void) PIOS_TASK_MONITOR_RegisterTask(TASKINFO_RUNNING_RADIORX, radioRxTaskHandle); #endif -#if defined(PIOS_TELEM_PRIORITY_QUEUE) - xTaskCreate(telemetryTxPriTask, (signed char *)"TelPriTx", STACK_SIZE_BYTES / 4, NULL, TASK_PRIORITY_TXPRI, &telemetryTxPriTaskHandle); - PIOS_TASK_MONITOR_RegisterTask(TASKINFO_RUNNING_TELEMETRYTXPRI, telemetryTxPriTaskHandle); -#endif - return 0; } @@ -276,7 +268,12 @@ static void updateObject(UAVObjHandle obj, int32_t eventType) eventMask |= EV_LOGGING_MANUAL; break; } - UAVObjConnectQueue(obj, priorityQueue, eventMask); + if(UAVObjIsSettings(obj)){ + UAVObjConnectQueue(obj, priorityQueue, eventMask); + } else { + UAVObjConnectQueue(obj, queue, eventMask); + } + } /** @@ -374,32 +371,24 @@ static void telemetryTxTask(__attribute__((unused)) void *parameters) // Loop forever while (1) { - // Wait for queue message - if (xQueueReceive(queue, &ev, portMAX_DELAY) == pdTRUE) { - // Process event - processObjEvent(&ev); - } - } -} - -/** - * Telemetry transmit task, high priority - */ + /** + * Tries to empty the high priority queue before handling any standard priority item + */ #if defined(PIOS_TELEM_PRIORITY_QUEUE) -static void telemetryTxPriTask(__attribute__((unused)) void *parameters) -{ - UAVObjEvent ev; - - // Loop forever - while (1) { + // Loop forever + while (xQueueReceive(priorityQueue, &ev, 1) == pdTRUE) { + // Process event + processObjEvent(&ev); + } +#endif // Wait for queue message - if (xQueueReceive(priorityQueue, &ev, portMAX_DELAY) == pdTRUE) { + if (xQueueReceive(queue, &ev, 1) == pdTRUE) { // Process event processObjEvent(&ev); } } } -#endif + /** * Telemetry receive task. Processes queue events and periodic updates. From 13f1f3f23acdb6bd0dcbda5789f36dc69c70a303 Mon Sep 17 00:00:00 2001 From: Alessio Morale Date: Tue, 4 Feb 2014 21:03:42 +0100 Subject: [PATCH 02/19] OP-1212 Add "priority" attribute to uavojects that grant them higher priority when sent with telemetry --- flight/modules/Telemetry/telemetry.c | 11 ++++----- flight/uavobjects/inc/uavobject.h.template | 1 + flight/uavobjects/inc/uavobjectmanager.h | 4 ++-- flight/uavobjects/uavobject.c.template | 2 +- flight/uavobjects/uavobjectmanager.c | 24 +++++++++++++++++-- .../generators/generator_common.cpp | 3 +++ ground/uavobjgenerator/uavobjectparser.cpp | 12 +++++++++- ground/uavobjgenerator/uavobjectparser.h | 1 + 8 files changed, 46 insertions(+), 12 deletions(-) diff --git a/flight/modules/Telemetry/telemetry.c b/flight/modules/Telemetry/telemetry.c index 4b90cbf5a..ea98d32bb 100644 --- a/flight/modules/Telemetry/telemetry.c +++ b/flight/modules/Telemetry/telemetry.c @@ -268,12 +268,11 @@ static void updateObject(UAVObjHandle obj, int32_t eventType) eventMask |= EV_LOGGING_MANUAL; break; } - if(UAVObjIsSettings(obj)){ + if (UAVObjIsPriority(obj)) { UAVObjConnectQueue(obj, priorityQueue, eventMask); } else { UAVObjConnectQueue(obj, queue, eventMask); } - } /** @@ -376,10 +375,10 @@ static void telemetryTxTask(__attribute__((unused)) void *parameters) */ #if defined(PIOS_TELEM_PRIORITY_QUEUE) // Loop forever - while (xQueueReceive(priorityQueue, &ev, 1) == pdTRUE) { - // Process event - processObjEvent(&ev); - } + while (xQueueReceive(priorityQueue, &ev, 1) == pdTRUE) { + // Process event + processObjEvent(&ev); + } #endif // Wait for queue message if (xQueueReceive(queue, &ev, 1) == pdTRUE) { diff --git a/flight/uavobjects/inc/uavobject.h.template b/flight/uavobjects/inc/uavobject.h.template index 599ba4fb8..a17a657a6 100644 --- a/flight/uavobjects/inc/uavobject.h.template +++ b/flight/uavobjects/inc/uavobject.h.template @@ -44,6 +44,7 @@ #define $(NAMEUC)_OBJID $(OBJIDHEX) #define $(NAMEUC)_ISSINGLEINST $(ISSINGLEINST) #define $(NAMEUC)_ISSETTINGS $(ISSETTINGS) +#define $(NAMEUC)_ISPRIORITY $(ISPRIORITY) #define $(NAMEUC)_NUMBYTES sizeof($(NAME)Data) /* Generic interface functions */ diff --git a/flight/uavobjects/inc/uavobjectmanager.h b/flight/uavobjects/inc/uavobjectmanager.h index c3813ef74..c50c14d76 100644 --- a/flight/uavobjects/inc/uavobjectmanager.h +++ b/flight/uavobjects/inc/uavobjectmanager.h @@ -147,8 +147,7 @@ typedef struct { int32_t UAVObjInitialize(); void UAVObjGetStats(UAVObjStats *statsOut); void UAVObjClearStats(); -UAVObjHandle UAVObjRegister(uint32_t id, - int32_t isSingleInstance, int32_t isSettings, uint32_t numBytes, UAVObjInitializeCallback initCb); +UAVObjHandle UAVObjRegister(uint32_t id, bool isSingleInstance, bool isSettings, bool isPriority, uint32_t num_bytes, UAVObjInitializeCallback initCb); UAVObjHandle UAVObjGetByID(uint32_t id); uint32_t UAVObjGetID(UAVObjHandle obj); uint32_t UAVObjGetNumBytes(UAVObjHandle obj); @@ -158,6 +157,7 @@ uint16_t UAVObjCreateInstance(UAVObjHandle obj_handle, UAVObjInitializeCallback bool UAVObjIsSingleInstance(UAVObjHandle obj); bool UAVObjIsMetaobject(UAVObjHandle obj); bool UAVObjIsSettings(UAVObjHandle obj); +bool UAVObjIsPriority(UAVObjHandle obj); int32_t UAVObjUnpack(UAVObjHandle obj_handle, uint16_t instId, const uint8_t *dataIn); int32_t UAVObjPack(UAVObjHandle obj_handle, uint16_t instId, uint8_t *dataOut); uint8_t UAVObjUpdateCRC(UAVObjHandle obj_handle, uint16_t instId, uint8_t crc); diff --git a/flight/uavobjects/uavobject.c.template b/flight/uavobjects/uavobject.c.template index b9f45b5ae..395279bd1 100644 --- a/flight/uavobjects/uavobject.c.template +++ b/flight/uavobjects/uavobject.c.template @@ -65,7 +65,7 @@ int32_t $(NAME)Initialize(void) // Register object with the object manager handle = UAVObjRegister($(NAMEUC)_OBJID, - $(NAMEUC)_ISSINGLEINST, $(NAMEUC)_ISSETTINGS, $(NAMEUC)_NUMBYTES, &$(NAME)SetDefaults); + $(NAMEUC)_ISSINGLEINST, $(NAMEUC)_ISSETTINGS, $(NAMEUC)_ISPRIORITY, $(NAMEUC)_NUMBYTES, &$(NAME)SetDefaults); // Done return handle ? 0 : -1; diff --git a/flight/uavobjects/uavobjectmanager.c b/flight/uavobjects/uavobjectmanager.c index f5077c982..02441a44e 100644 --- a/flight/uavobjects/uavobjectmanager.c +++ b/flight/uavobjects/uavobjectmanager.c @@ -108,6 +108,7 @@ struct UAVOBase { bool isMeta : 1; bool isSingle : 1; bool isSettings : 1; + bool isPriority : 1; } flags; } __attribute__((packed)); @@ -339,7 +340,7 @@ static struct UAVOData *UAVObjAllocMulti(uint32_t num_bytes) * \return */ UAVObjHandle UAVObjRegister(uint32_t id, - int32_t isSingleInstance, int32_t isSettings, + bool isSingleInstance, bool isSettings, bool isPriority, uint32_t num_bytes, UAVObjInitializeCallback initCb) { @@ -368,8 +369,11 @@ UAVObjHandle UAVObjRegister(uint32_t id, uavo_data->instance_size = num_bytes; if (isSettings) { uavo_data->base.flags.isSettings = true; + // settings defaults to being sent with priority + uavo_data->base.flags.isPriority = true; + } else { + uavo_data->base.flags.isPriority = isPriority; } - /* Initialize the embedded meta UAVO */ UAVObjInitMetaData(&uavo_data->metaObj); @@ -605,6 +609,22 @@ bool UAVObjIsSettings(UAVObjHandle obj_handle) return uavo_base->flags.isSettings; } +/** + * Is this a prioritized object? + * \param[in] obj The object handle + * \return True (1) if this is a prioritized object + */ +bool UAVObjIsPriority(UAVObjHandle obj_handle) +{ + PIOS_Assert(obj_handle); + + /* Recover the common object header */ + struct UAVOBase *uavo_base = (struct UAVOBase *)obj_handle; + + return uavo_base->flags.isPriority; +} + + /** * Unpack an object from a byte array * \param[in] obj The object handle diff --git a/ground/uavobjgenerator/generators/generator_common.cpp b/ground/uavobjgenerator/generators/generator_common.cpp index 3a96ca982..83ce1dd13 100644 --- a/ground/uavobjgenerator/generators/generator_common.cpp +++ b/ground/uavobjgenerator/generators/generator_common.cpp @@ -72,6 +72,9 @@ void replaceCommonTags(QString & out, ObjectInfo *info) // Replace $(ISSETTINGS) tag out.replace(QString("$(ISSETTINGS)"), boolTo01String(info->isSettings)); out.replace(QString("$(ISSETTINGSTF)"), boolToTRUEFALSEString(info->isSettings)); + // Replace $(ISPRIORITY) tag + out.replace(QString("$(ISPRIORITY)"), boolTo01String(info->isPriority)); + out.replace(QString("$(ISPRIORITYTF)"), boolToTRUEFALSEString(info->isPriority)); // Replace $(GCSACCESS) tag value = accessModeStr[info->gcsAccess]; out.replace(QString("$(GCSACCESS)"), value); diff --git a/ground/uavobjgenerator/uavobjectparser.cpp b/ground/uavobjgenerator/uavobjectparser.cpp index d0cfb0449..a8534088c 100644 --- a/ground/uavobjgenerator/uavobjectparser.cpp +++ b/ground/uavobjgenerator/uavobjectparser.cpp @@ -623,9 +623,19 @@ QString UAVObjectParser::processObjectAttributes(QDomNode & node, ObjectInfo *in } else if (attr.nodeValue().compare(QString("false")) == 0) { info->isSettings = false; } else { - return QString("Object:settings attribute value is invalid"); + return QString("Object:settings attribute value is invalid (true|false)"); } + // Get priority attribute + attr = attributes.namedItem("priority"); + info->isPriority = false; + if (!attr.isNull()) { + if (attr.nodeValue().compare(QString("true")) == 0) { + info->isPriority = true; + } else if (attr.nodeValue().compare(QString("false")) != 0) { + return QString("Object:priority attribute value is invalid (true|false)"); + } + } // Settings objects can only have a single instance if (info->isSettings && !info->isSingleInst) { diff --git a/ground/uavobjgenerator/uavobjectparser.h b/ground/uavobjgenerator/uavobjectparser.h index d6ae4b60c..9028af325 100644 --- a/ground/uavobjgenerator/uavobjectparser.h +++ b/ground/uavobjgenerator/uavobjectparser.h @@ -84,6 +84,7 @@ typedef struct { quint32 id; bool isSingleInst; bool isSettings; + bool isPriority; AccessMode gcsAccess; AccessMode flightAccess; bool flightTelemetryAcked; From 43c369324801da0b310329ccca3f5f222e3eff2b Mon Sep 17 00:00:00 2001 From: Alessio Morale Date: Tue, 4 Feb 2014 21:04:08 +0100 Subject: [PATCH 03/19] OP-1212 add priority flag to some uavobjects --- shared/uavobjectdefinition/firmwareiapobj.xml | 2 +- shared/uavobjectdefinition/objectpersistence.xml | 2 +- shared/uavobjectdefinition/systemalarms.xml | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/shared/uavobjectdefinition/firmwareiapobj.xml b/shared/uavobjectdefinition/firmwareiapobj.xml index f83c8aa67..c9b82f98e 100644 --- a/shared/uavobjectdefinition/firmwareiapobj.xml +++ b/shared/uavobjectdefinition/firmwareiapobj.xml @@ -1,5 +1,5 @@ - + Queries board for SN, model, revision, and sends reset command diff --git a/shared/uavobjectdefinition/objectpersistence.xml b/shared/uavobjectdefinition/objectpersistence.xml index 9b29721df..fb39b3e0f 100644 --- a/shared/uavobjectdefinition/objectpersistence.xml +++ b/shared/uavobjectdefinition/objectpersistence.xml @@ -1,5 +1,5 @@ - + Someone who knows please enter this diff --git a/shared/uavobjectdefinition/systemalarms.xml b/shared/uavobjectdefinition/systemalarms.xml index f3763ad53..1dae9b7d5 100644 --- a/shared/uavobjectdefinition/systemalarms.xml +++ b/shared/uavobjectdefinition/systemalarms.xml @@ -1,5 +1,5 @@ - + Alarms from OpenPilot to indicate failure conditions or warnings. Set by various modules. Some modules may have a module defined Status and Substatus fields that details its condition. From 55fc327e3c18e80d3d76beaa8f5be66614ef01d6 Mon Sep 17 00:00:00 2001 From: Alessio Morale Date: Fri, 7 Feb 2014 18:28:39 +0100 Subject: [PATCH 04/19] OP-1212 prioritize FlightTelemetryStats, GCSTelemetryStats, OplinkStatus. --- shared/uavobjectdefinition/flighttelemetrystats.xml | 2 +- shared/uavobjectdefinition/gcstelemetrystats.xml | 2 +- shared/uavobjectdefinition/oplinkstatus.xml | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/shared/uavobjectdefinition/flighttelemetrystats.xml b/shared/uavobjectdefinition/flighttelemetrystats.xml index aa22bb097..09ae7515c 100644 --- a/shared/uavobjectdefinition/flighttelemetrystats.xml +++ b/shared/uavobjectdefinition/flighttelemetrystats.xml @@ -1,5 +1,5 @@ - + Maintains the telemetry statistics from the OpenPilot flight computer. diff --git a/shared/uavobjectdefinition/gcstelemetrystats.xml b/shared/uavobjectdefinition/gcstelemetrystats.xml index 540861c11..087a6de6f 100644 --- a/shared/uavobjectdefinition/gcstelemetrystats.xml +++ b/shared/uavobjectdefinition/gcstelemetrystats.xml @@ -1,5 +1,5 @@ - + The telemetry statistics from the ground computer diff --git a/shared/uavobjectdefinition/oplinkstatus.xml b/shared/uavobjectdefinition/oplinkstatus.xml index bcceb3751..07fda4375 100644 --- a/shared/uavobjectdefinition/oplinkstatus.xml +++ b/shared/uavobjectdefinition/oplinkstatus.xml @@ -1,5 +1,5 @@ - + OPLink device status. From 4a29db4983fb92894ff01420555a84898cb8d1ab Mon Sep 17 00:00:00 2001 From: Alessio Morale Date: Fri, 7 Feb 2014 18:29:19 +0100 Subject: [PATCH 05/19] OP-1212 Remove priority task from taskinfo --- .../openpilotgcs/default_configurations/Developer.xml | 10 ---------- .../default_configurations/OpenPilotGCS.xml | 10 ---------- .../default_configurations/OpenPilotGCS_wide.xml | 10 ---------- shared/uavobjectdefinition/taskinfo.xml | 1 - 4 files changed, 31 deletions(-) diff --git a/ground/openpilotgcs/share/openpilotgcs/default_configurations/Developer.xml b/ground/openpilotgcs/share/openpilotgcs/default_configurations/Developer.xml index 430eeac3f..d9f913524 100644 --- a/ground/openpilotgcs/share/openpilotgcs/default_configurations/Developer.xml +++ b/ground/openpilotgcs/share/openpilotgcs/default_configurations/Developer.xml @@ -2301,16 +2301,6 @@ 0 0 - - 4294945280 - None - StackRemaining-TelemetryTxPri - TaskInfo - 1.72723371101889e-77 - 1 - 1.72723371101889e-77 - 0 - 4294945280 None diff --git a/ground/openpilotgcs/share/openpilotgcs/default_configurations/OpenPilotGCS.xml b/ground/openpilotgcs/share/openpilotgcs/default_configurations/OpenPilotGCS.xml index decf3135b..024a026a9 100644 --- a/ground/openpilotgcs/share/openpilotgcs/default_configurations/OpenPilotGCS.xml +++ b/ground/openpilotgcs/share/openpilotgcs/default_configurations/OpenPilotGCS.xml @@ -2374,16 +2374,6 @@ 0 0 - - 4289331327 - None - StackRemaining-TelemetryTxPri - TaskInfo - 0 - 1 - 0 - 0 - 4294901760 None diff --git a/ground/openpilotgcs/share/openpilotgcs/default_configurations/OpenPilotGCS_wide.xml b/ground/openpilotgcs/share/openpilotgcs/default_configurations/OpenPilotGCS_wide.xml index c66b7188a..6d6dcf897 100644 --- a/ground/openpilotgcs/share/openpilotgcs/default_configurations/OpenPilotGCS_wide.xml +++ b/ground/openpilotgcs/share/openpilotgcs/default_configurations/OpenPilotGCS_wide.xml @@ -2309,16 +2309,6 @@ 0 0 - - 4294945280 - None - StackRemaining-TelemetryTxPri - TaskInfo - 0 - 1 - 0 - 0 - 4294945280 None diff --git a/shared/uavobjectdefinition/taskinfo.xml b/shared/uavobjectdefinition/taskinfo.xml index c5ddc5058..0540e8a04 100644 --- a/shared/uavobjectdefinition/taskinfo.xml +++ b/shared/uavobjectdefinition/taskinfo.xml @@ -23,7 +23,6 @@ FlightPlan TelemetryTx - TelemetryTxPri TelemetryRx RadioRx From 7a39d93952bbed939e5c819cf6110cb0025955d9 Mon Sep 17 00:00:00 2001 From: Alessio Morale Date: Fri, 7 Feb 2014 18:36:33 +0100 Subject: [PATCH 06/19] OP-1212 handle priority queues for setUpdatePeriod and setLoggingPeriod --- flight/modules/Telemetry/telemetry.c | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/flight/modules/Telemetry/telemetry.c b/flight/modules/Telemetry/telemetry.c index ea98d32bb..134c85c80 100644 --- a/flight/modules/Telemetry/telemetry.c +++ b/flight/modules/Telemetry/telemetry.c @@ -268,6 +268,7 @@ static void updateObject(UAVObjHandle obj, int32_t eventType) eventMask |= EV_LOGGING_MANUAL; break; } + // note that all setting objects have implicitly IsPriority=true if (UAVObjIsPriority(obj)) { UAVObjConnectQueue(obj, priorityQueue, eventMask); } else { @@ -375,7 +376,7 @@ static void telemetryTxTask(__attribute__((unused)) void *parameters) */ #if defined(PIOS_TELEM_PRIORITY_QUEUE) // Loop forever - while (xQueueReceive(priorityQueue, &ev, 1) == pdTRUE) { + while (xQueueReceive(priorityQueue, &ev, 0) == pdTRUE) { // Process event processObjEvent(&ev); } @@ -476,9 +477,11 @@ static int32_t setUpdatePeriod(UAVObjHandle obj, int32_t updatePeriodMs) ev.instId = UAVOBJ_ALL_INSTANCES; ev.event = EV_UPDATED_PERIODIC; - ret = EventPeriodicQueueUpdate(&ev, queue, updatePeriodMs); + xQueueHandle targetQueue = UAVObjIsPriority(obj) ? priorityQueue : queue; + + ret = EventPeriodicQueueUpdate(&ev, targetQueue, updatePeriodMs); if (ret == -1) { - ret = EventPeriodicQueueCreate(&ev, queue, updatePeriodMs); + ret = EventPeriodicQueueCreate(&ev, targetQueue, updatePeriodMs); } return ret; } @@ -500,9 +503,11 @@ static int32_t setLoggingPeriod(UAVObjHandle obj, int32_t updatePeriodMs) ev.instId = UAVOBJ_ALL_INSTANCES; ev.event = EV_LOGGING_PERIODIC; - ret = EventPeriodicQueueUpdate(&ev, queue, updatePeriodMs); + xQueueHandle targetQueue = UAVObjIsPriority(obj) ? priorityQueue : queue; + + ret = EventPeriodicQueueUpdate(&ev, targetQueue, updatePeriodMs); if (ret == -1) { - ret = EventPeriodicQueueCreate(&ev, queue, updatePeriodMs); + ret = EventPeriodicQueueCreate(&ev, targetQueue, updatePeriodMs); } return ret; } From a0baa17299891eed770b7e8eab7eaedab4208a19 Mon Sep 17 00:00:00 2001 From: Alessio Morale Date: Fri, 7 Feb 2014 18:37:56 +0100 Subject: [PATCH 07/19] Add a proper description for ObjectPersistence --- shared/uavobjectdefinition/objectpersistence.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/shared/uavobjectdefinition/objectpersistence.xml b/shared/uavobjectdefinition/objectpersistence.xml index fb39b3e0f..4f0c146a0 100644 --- a/shared/uavobjectdefinition/objectpersistence.xml +++ b/shared/uavobjectdefinition/objectpersistence.xml @@ -1,6 +1,6 @@ - Someone who knows please enter this + Used by gcs to handle object persistence to flash memory From 8bdadaaff2e8f1142985dc0744ea53fbc21f6d6a Mon Sep 17 00:00:00 2001 From: Alessio Morale Date: Fri, 7 Feb 2014 20:01:02 +0100 Subject: [PATCH 08/19] OP-1212 better wait on priority queue than std queue --- flight/modules/Telemetry/telemetry.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/flight/modules/Telemetry/telemetry.c b/flight/modules/Telemetry/telemetry.c index 134c85c80..b07bb85a5 100644 --- a/flight/modules/Telemetry/telemetry.c +++ b/flight/modules/Telemetry/telemetry.c @@ -376,13 +376,13 @@ static void telemetryTxTask(__attribute__((unused)) void *parameters) */ #if defined(PIOS_TELEM_PRIORITY_QUEUE) // Loop forever - while (xQueueReceive(priorityQueue, &ev, 0) == pdTRUE) { + while (xQueueReceive(priorityQueue, &ev, 1) == pdTRUE) { // Process event processObjEvent(&ev); } #endif // Wait for queue message - if (xQueueReceive(queue, &ev, 1) == pdTRUE) { + if (xQueueReceive(queue, &ev, 0) == pdTRUE) { // Process event processObjEvent(&ev); } From d7c18b1022bde6888420d6880e07f4e6445d1be4 Mon Sep 17 00:00:00 2001 From: Alessio Morale Date: Mon, 10 Feb 2014 21:53:08 +0100 Subject: [PATCH 09/19] OP-1166 there was still a problem with ManualcontrolSettings.channelMin. This is a hacky workaround until the binding framework does not allow for a cleaner solution. --- ground/openpilotgcs/src/plugins/config/configinputwidget.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/ground/openpilotgcs/src/plugins/config/configinputwidget.cpp b/ground/openpilotgcs/src/plugins/config/configinputwidget.cpp index c6f7313a6..c8400300f 100644 --- a/ground/openpilotgcs/src/plugins/config/configinputwidget.cpp +++ b/ground/openpilotgcs/src/plugins/config/configinputwidget.cpp @@ -91,6 +91,7 @@ ConfigInputWidget::ConfigInputWidget(QWidget *parent) : addWidgetBinding("ManualControlSettings", "ChannelGroups", inpForm->ui->channelGroup, index); addWidgetBinding("ManualControlSettings", "ChannelNeutral", inpForm->ui->channelNeutral, index); addWidgetBinding("ManualControlSettings", "ChannelNeutral", inpForm->ui->neutralValue, index); + addWidgetBinding("ManualControlSettings", "ChannelMax", inpForm->ui->channelMax, index); addWidgetBinding("ManualControlSettings", "ChannelMin", inpForm->ui->channelMin, index); addWidgetBinding("ManualControlSettings", "ChannelMax", inpForm->ui->channelMax, index); From 9bb09bb4a1db15ca49b861c8c890f5a2029fbc4d Mon Sep 17 00:00:00 2001 From: Alessio Morale Date: Tue, 11 Feb 2014 12:22:03 +0100 Subject: [PATCH 10/19] OP-1100 fix app plist for invalid file associations --- ground/openpilotgcs/src/app/Info.plist | 169 ------------------------- 1 file changed, 169 deletions(-) diff --git a/ground/openpilotgcs/src/app/Info.plist b/ground/openpilotgcs/src/app/Info.plist index 297c81b5c..fd048113f 100644 --- a/ground/openpilotgcs/src/app/Info.plist +++ b/ground/openpilotgcs/src/app/Info.plist @@ -2,175 +2,6 @@ - CFBundleDocumentTypes - - - CFBundleTypeRole - Editor - CFBundleTypeIconFile - profile.icns - CFBundleTypeExtensions - - pro - - CFBundleTypeName - Qt Project File - LSHandlerRank - Default - - - CFBundleTypeRole - Editor - CFBundleTypeIconFile - prifile.icns - CFBundleTypeExtensions - - pri - - CFBundleTypeName - Qt Project Include File - LSHandlerRank - Default - - - CFBundleTypeRole - Editor - CFBundleTypeExtensions - - qrc - - CFBundleTypeName - Qt Resource File - LSHandlerRank - Default - - - CFBundleTypeRole - Editor - CFBundleTypeExtensions - - ui - - CFBundleTypeName - Qt UI File - - - CFBundleTypeExtensions - - h - hpp - - CFBundleTypeName - Header File - CFBundleTypeOSTypes - - TEXT - utxt - - CFBundleTypeRole - Editor - - - CFBundleTypeExtensions - - cc - CC - cp - CP - cpp - CPP - cxx - CXX - c++ - C++ - - CFBundleTypeName - C++ Source File - CFBundleTypeOSTypes - - TEXT - utxt - - CFBundleTypeRole - Editor - - - CFBundleTypeExtensions - - mm - MM - - CFBundleTypeName - Objective-C++ Source File - CFBundleTypeOSTypes - - TEXT - utxt - - CFBundleTypeRole - Editor - - - CFBundleTypeExtensions - - m - - CFBundleTypeName - Objective-C Source File - CFBundleTypeOSTypes - - TEXT - utxt - - CFBundleTypeRole - Editor - - - CFBundleTypeExtensions - - c - C - - CFBundleTypeName - C Source File - CFBundleTypeOSTypes - - TEXT - utxt - - CFBundleTypeRole - Editor - - - CFBundleTypeExtensions - - txt - text - - CFBundleTypeName - Text File - CFBundleTypeOSTypes - - TEXT - - CFBundleTypeRole - Editor - - - CFBundleTypeExtensions - - * - - CFBundleTypeName - NSStringPboardType - CFBundleTypeOSTypes - - **** - - CFBundleTypeRole - Editor - - CFBundleGetInfoString OpenPilot GCS; Copyright OpenPilot CFBundleIconFile From 21b0049a68ddb0a4e81335864cb68a693004b1c0 Mon Sep 17 00:00:00 2001 From: Alessio Morale Date: Tue, 11 Feb 2014 16:51:56 +0100 Subject: [PATCH 11/19] OP-1218 fix missing "ret =" --- flight/modules/RadioComBridge/RadioComBridge.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/flight/modules/RadioComBridge/RadioComBridge.c b/flight/modules/RadioComBridge/RadioComBridge.c index 55fb1f1e4..c9aa96c39 100644 --- a/flight/modules/RadioComBridge/RadioComBridge.c +++ b/flight/modules/RadioComBridge/RadioComBridge.c @@ -518,7 +518,7 @@ static void serialRxTask(__attribute__((unused)) void *parameters) int32_t ret = -2; uint8_t count = 5; while(count-- > 0 && ret < -1){ - PIOS_COM_SendBufferNonBlocking(PIOS_COM_RADIO, data->serialRxBuf, bytes_to_process); + ret = PIOS_COM_SendBufferNonBlocking(PIOS_COM_RADIO, data->serialRxBuf, bytes_to_process); } } } else { From 49bc5b8cbd64186536bc9f558eacd447a71ab3a2 Mon Sep 17 00:00:00 2001 From: Alessio Morale Date: Sat, 15 Feb 2014 15:32:57 +0100 Subject: [PATCH 12/19] OP-1212 fix GCS plot configurations --- .../default_configurations/Developer.xml | 136 +++++++++--------- .../default_configurations/OpenPilotGCS.xml | 8 +- .../OpenPilotGCS_wide.xml | 72 +++++----- 3 files changed, 108 insertions(+), 108 deletions(-) diff --git a/ground/openpilotgcs/share/openpilotgcs/default_configurations/Developer.xml b/ground/openpilotgcs/share/openpilotgcs/default_configurations/Developer.xml index d9f913524..da68bae35 100644 --- a/ground/openpilotgcs/share/openpilotgcs/default_configurations/Developer.xml +++ b/ground/openpilotgcs/share/openpilotgcs/default_configurations/Developer.xml @@ -2252,116 +2252,116 @@ 1000 240 - 4294945280 + 4294901760 None StackRemaining-System TaskInfo - 1.02360527502876e-306 + 0 1 - 6.92921153577169e-310 + 0 0 4294945280 None + StackRemaining-CallbackScheduler0 + TaskInfo + 0 + 1 + 0 + 0 + + + 4278190335 + None + StackRemaining-CallbackScheduler1 + TaskInfo + 0 + 1 + 0 + 0 + + + 4294967040 + None + StackRemaining-ManualControl + TaskInfo + 0 + 1 + 0 + 0 + + + 4278255615 + None + StackRemaining-Stabilization + TaskInfo + 0 + 1 + 0 + 0 + + + 4294923775 + None StackRemaining-Actuator TaskInfo 0 1 0 0 - - - 4294945280 + + + 4289331327 None - StackRemaining-Guidance - TaskInfo - 6.92921442421083e-310 - 1 - -1.29073709209104e-231 - 0 - - - 4294945280 - None - StackRemaining-Watchdog - TaskInfo - 6.92920724098472e-310 - 1 - 3.91299991506267e-321 - 0 - - - 4294945280 - None - StackRemaining-TelemetryTx + StackRemaining-Sensors TaskInfo 0 1 0 0 - - - 4294945280 - None - StackRemaining-TelemetryRx - TaskInfo - 6.92921438535612e-310 - 1 - 1.72723371101889e-77 - 0 - - - 4294945280 - None - StackRemaining-GPS - TaskInfo - 1.72723371101889e-77 - 1 - 1.03979250816176e-312 - 0 - - - 4294945280 - None - StackRemaining-ManualControl - TaskInfo - 6.92921438705062e-310 - 1 - 6.92921152810932e-310 - 0 4294945280 None StackRemaining-Altitude TaskInfo - 7.4109846876187e-323 + 0 1 - 1.72723371101889e-77 + 0 0 - 4294945280 + 4283760767 None - StackRemaining-AHRSComms + StackRemaining-TelemetryTx TaskInfo - 5.43472210425371e-323 + 0 1 - 1.72723371101889e-77 + 0 0 - 4294945280 + 4294901760 None - StackRemaining-Stabilization + StackRemaining-TelemetryRx TaskInfo - 1.72723371101889e-77 + 0 1 - 1.72723371101889e-77 + 0 0 - 12 + + 4283782527 + None + StackRemaining-RadioRx + TaskInfo + 0 + 1 + 0 + 0 + + 11 1 1000 diff --git a/ground/openpilotgcs/share/openpilotgcs/default_configurations/OpenPilotGCS.xml b/ground/openpilotgcs/share/openpilotgcs/default_configurations/OpenPilotGCS.xml index 024a026a9..a070aafb2 100644 --- a/ground/openpilotgcs/share/openpilotgcs/default_configurations/OpenPilotGCS.xml +++ b/ground/openpilotgcs/share/openpilotgcs/default_configurations/OpenPilotGCS.xml @@ -2374,7 +2374,7 @@ 0 0 - + 4294901760 None StackRemaining-TelemetryRx @@ -2383,8 +2383,8 @@ 1 0 0 - - + + 4283782527 None StackRemaining-RadioRx @@ -2393,7 +2393,7 @@ 1 0 0 - + 12 1 1000 diff --git a/ground/openpilotgcs/share/openpilotgcs/default_configurations/OpenPilotGCS_wide.xml b/ground/openpilotgcs/share/openpilotgcs/default_configurations/OpenPilotGCS_wide.xml index 6d6dcf897..065fd0813 100644 --- a/ground/openpilotgcs/share/openpilotgcs/default_configurations/OpenPilotGCS_wide.xml +++ b/ground/openpilotgcs/share/openpilotgcs/default_configurations/OpenPilotGCS_wide.xml @@ -2260,7 +2260,7 @@ 1000 240 - 4294945280 + 4294901760 None StackRemaining-System TaskInfo @@ -2272,47 +2272,37 @@ 4294945280 None - StackRemaining-Actuator + StackRemaining-CallbackScheduler0 TaskInfo 0 1 0 0 - - 4294945280 - None - StackRemaining-Guidance - TaskInfo - 0 - 1 - 0 - 0 - - - 4294945280 - None - StackRemaining-Watchdog - TaskInfo - 0 - 1 - 0 - 0 - - 4294945280 + 4278190335 None - StackRemaining-TelemetryTx + StackRemaining-CallbackScheduler1 TaskInfo 0 1 0 0 - - 4294945280 + + 4294967040 None - StackRemaining-TelemetryRx + StackRemaining-ManualControl + TaskInfo + 0 + 1 + 0 + 0 + + + 4278255615 + None + StackRemaining-Stabilization TaskInfo 0 1 @@ -2320,9 +2310,9 @@ 0 - 4294945280 + 4294923775 None - StackRemaining-GPS + StackRemaining-Actuator TaskInfo 0 1 @@ -2330,9 +2320,9 @@ 0 - 4294945280 + 4289331327 None - StackRemaining-ManualControl + StackRemaining-Sensors TaskInfo 0 1 @@ -2350,9 +2340,9 @@ 0 - 4294945280 + 4283760767 None - StackRemaining-AHRSComms + StackRemaining-TelemetryTx TaskInfo 0 1 @@ -2360,16 +2350,26 @@ 0 - 4294945280 + 4294901760 None - StackRemaining-Stabilization + StackRemaining-TelemetryRx TaskInfo 0 1 0 0 - 12 + + 4283782527 + None + StackRemaining-RadioRx + TaskInfo + 0 + 1 + 0 + 0 + + 11 1 1000 From 8cd5cfe2ebb424eb1b48f1b563c39ef1d3b85a25 Mon Sep 17 00:00:00 2001 From: Alessio Morale Date: Sat, 15 Feb 2014 17:20:45 +0100 Subject: [PATCH 13/19] OP-1218 format/consmetic/comments fixes --- .../modules/RadioComBridge/RadioComBridge.c | 14 ++--- flight/pios/common/pios_com.c | 57 ++++++++++--------- 2 files changed, 36 insertions(+), 35 deletions(-) diff --git a/flight/modules/RadioComBridge/RadioComBridge.c b/flight/modules/RadioComBridge/RadioComBridge.c index c9aa96c39..be3eae65b 100644 --- a/flight/modules/RadioComBridge/RadioComBridge.c +++ b/flight/modules/RadioComBridge/RadioComBridge.c @@ -415,9 +415,9 @@ static void radioRxTask(__attribute__((unused)) void *parameters) // Send the data straight to the telemetry port. // FIXME following call can fail (with -2 error code) if buffer is full // it is the caller responsibility to retry in such cases... - int32_t ret = -2; + int32_t ret = -2; uint8_t count = 5; - while(count-- > 0 && ret < -1){ + while (count-- > 0 && ret < -1) { ret = PIOS_COM_SendBufferNonBlocking(PIOS_COM_TELEMETRY, serial_data, bytes_to_process); } } @@ -515,9 +515,9 @@ static void serialRxTask(__attribute__((unused)) void *parameters) // Send the data over the radio link. // FIXME following call can fail (with -2 error code) if buffer is full // it is the caller responsibility to retry in such cases... - int32_t ret = -2; + int32_t ret = -2; uint8_t count = 5; - while(count-- > 0 && ret < -1){ + while (count-- > 0 && ret < -1) { ret = PIOS_COM_SendBufferNonBlocking(PIOS_COM_RADIO, data->serialRxBuf, bytes_to_process); } } @@ -551,7 +551,7 @@ static int32_t UAVTalkSendHandler(uint8_t *buf, int32_t length) // it is the caller responsibility to retry in such cases... ret = -2; uint8_t count = 5; - while(count-- > 0 && ret < -1){ + while (count-- > 0 && ret < -1) { ret = PIOS_COM_SendBufferNonBlocking(outputPort, buf, length); } } else { @@ -579,9 +579,9 @@ static int32_t RadioSendHandler(uint8_t *buf, int32_t length) if (outputPort && PIOS_COM_Available(outputPort)) { // FIXME following call can fail (with -2 error code) if buffer is full // it is the caller responsibility to retry in such cases... - int32_t ret = -2; + int32_t ret = -2; uint8_t count = 5; - while(count-- > 0 && ret < -1){ + while (count-- > 0 && ret < -1) { ret = PIOS_COM_SendBufferNonBlocking(outputPort, buf, length); } return ret; diff --git a/flight/pios/common/pios_com.c b/flight/pios/common/pios_com.c index 31f67176a..a467aad28 100644 --- a/flight/pios/common/pios_com.c +++ b/flight/pios/common/pios_com.c @@ -274,35 +274,35 @@ int32_t PIOS_COM_ChangeBaud(uint32_t com_id, uint32_t baud) static int32_t PIOS_COM_SendBufferNonBlockingInternal(struct pios_com_dev *com_dev, const uint8_t *buffer, uint16_t len) { -PIOS_Assert(com_dev); -PIOS_Assert(com_dev->has_tx); -if (com_dev->driver->available && !com_dev->driver->available(com_dev->lower_id)) { - /* - * Underlying device is down/unconnected. - * Dump our fifo contents and act like an infinite data sink. - * Failure to do this results in stale data in the fifo as well as - * possibly having the caller block trying to send to a device that's - * no longer accepting data. - */ - fifoBuf_clearData(&com_dev->tx); - return len; -} - -if (len > fifoBuf_getFree(&com_dev->tx)) { - /* Buffer cannot accept all requested bytes (retry) */ - return -2; -} - -uint16_t bytes_into_fifo = fifoBuf_putData(&com_dev->tx, buffer, len); - -if (bytes_into_fifo > 0) { - /* More data has been put in the tx buffer, make sure the tx is started */ - if (com_dev->driver->tx_start) { - com_dev->driver->tx_start(com_dev->lower_id, - fifoBuf_getUsed(&com_dev->tx)); + PIOS_Assert(com_dev); + PIOS_Assert(com_dev->has_tx); + if (com_dev->driver->available && !com_dev->driver->available(com_dev->lower_id)) { + /* + * Underlying device is down/unconnected. + * Dump our fifo contents and act like an infinite data sink. + * Failure to do this results in stale data in the fifo as well as + * possibly having the caller block trying to send to a device that's + * no longer accepting data. + */ + fifoBuf_clearData(&com_dev->tx); + return len; } -} -return bytes_into_fifo; + + if (len > fifoBuf_getFree(&com_dev->tx)) { + /* Buffer cannot accept all requested bytes (retry) */ + return -2; + } + + uint16_t bytes_into_fifo = fifoBuf_putData(&com_dev->tx, buffer, len); + + if (bytes_into_fifo > 0) { + /* More data has been put in the tx buffer, make sure the tx is started */ + if (com_dev->driver->tx_start) { + com_dev->driver->tx_start(com_dev->lower_id, + fifoBuf_getUsed(&com_dev->tx)); + } + } + return bytes_into_fifo; } /** @@ -346,6 +346,7 @@ int32_t PIOS_COM_SendBufferNonBlocking(uint32_t com_id, const uint8_t *buffer, u * \param[in] len buffer length * \return -1 if port not available * \return -2 if mutex can't be taken; + * \return -3 if data cannot be sent in the max allotted time of 5000msec * \return number of bytes transmitted on success */ int32_t PIOS_COM_SendBuffer(uint32_t com_id, const uint8_t *buffer, uint16_t len) From da5ef3b3ccfdfdf00ac7ba6298b9c46853de7717 Mon Sep 17 00:00:00 2001 From: Alessio Morale Date: Sat, 15 Feb 2014 22:01:00 +0100 Subject: [PATCH 14/19] OP-1218 Raise time PIOS_COM_SendBuffer waits to acquire sendbuffer semaphore --- flight/pios/common/pios_com.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/flight/pios/common/pios_com.c b/flight/pios/common/pios_com.c index a467aad28..e80ad9a91 100644 --- a/flight/pios/common/pios_com.c +++ b/flight/pios/common/pios_com.c @@ -359,7 +359,7 @@ int32_t PIOS_COM_SendBuffer(uint32_t com_id, const uint8_t *buffer, uint16_t len } PIOS_Assert(com_dev->has_tx); #if defined(PIOS_INCLUDE_FREERTOS) - if (xSemaphoreTake(com_dev->sendbuffer_sem, 0) != pdTRUE) { + if (xSemaphoreTake(com_dev->sendbuffer_sem, 5) != pdTRUE) { return -2; } #endif /* PIOS_INCLUDE_FREERTOS */ From f6c7b5c185544e10377727003e7a9b5ec7ab450b Mon Sep 17 00:00:00 2001 From: Philippe Renon Date: Mon, 17 Feb 2014 21:32:30 +0100 Subject: [PATCH 15/19] OP-1228 disabled telemetry monitor option page creation to fix gcs crash - a fully functional option page will be re-introduced with OP-1185 +review OPReview --- .../openpilotgcs/src/plugins/telemetry/monitorgadgetfactory.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ground/openpilotgcs/src/plugins/telemetry/monitorgadgetfactory.cpp b/ground/openpilotgcs/src/plugins/telemetry/monitorgadgetfactory.cpp index bdd675458..8eb384464 100644 --- a/ground/openpilotgcs/src/plugins/telemetry/monitorgadgetfactory.cpp +++ b/ground/openpilotgcs/src/plugins/telemetry/monitorgadgetfactory.cpp @@ -81,5 +81,5 @@ IUAVGadgetConfiguration *MonitorGadgetFactory::createConfiguration(QSettings *qS IOptionsPage *MonitorGadgetFactory::createOptionsPage(IUAVGadgetConfiguration *config) { - return new MonitorGadgetOptionsPage(qobject_cast(config)); + return 0; //new MonitorGadgetOptionsPage(qobject_cast(config)); } From b846ba3a1e35e9daf81a5cc2c45ec1e17bf50449 Mon Sep 17 00:00:00 2001 From: Corvus Corax Date: Mon, 17 Feb 2014 23:32:54 +0100 Subject: [PATCH 16/19] OP-942 changed taskinfo to be non acked too --- shared/uavobjectdefinition/taskinfo.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/shared/uavobjectdefinition/taskinfo.xml b/shared/uavobjectdefinition/taskinfo.xml index c5ddc5058..2132cd8a0 100644 --- a/shared/uavobjectdefinition/taskinfo.xml +++ b/shared/uavobjectdefinition/taskinfo.xml @@ -108,8 +108,8 @@ - - + + From dad05235e327e912c7ca9f376ab438c48e0624e3 Mon Sep 17 00:00:00 2001 From: Alessio Morale Date: Thu, 20 Feb 2014 00:16:11 +0100 Subject: [PATCH 17/19] Update WHATSNEW.txt for release --- WHATSNEW.txt | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/WHATSNEW.txt b/WHATSNEW.txt index 5bfddcace..0bccc1016 100644 --- a/WHATSNEW.txt +++ b/WHATSNEW.txt @@ -1,3 +1,10 @@ +--- RELEASE-14.01-RC4 --- Cruising Ratt --- +this issue includes the following fixes to previous RC3: +OP-1228 OP-1218 + +Full list of bug fixed in this release is accessible here +http://progress.openpilot.org/issues/?filter=11364 + --- RELEASE-14.01-RC3 --- Cruising Ratt --- this issue includes the following fixes to previous RC2: OP-1088 OP-1141 OP-1166 OP-1187 OP-1191 OP-1195 OP-1211 OP-1218 From 92839fe95df663c855b8b31787fcb502270c12de Mon Sep 17 00:00:00 2001 From: Alessio Morale Date: Fri, 21 Feb 2014 19:19:24 +0100 Subject: [PATCH 18/19] Uncrustify --- .../openpilotgcs/src/plugins/telemetry/monitorgadgetfactory.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ground/openpilotgcs/src/plugins/telemetry/monitorgadgetfactory.cpp b/ground/openpilotgcs/src/plugins/telemetry/monitorgadgetfactory.cpp index 8eb384464..62526cd1d 100644 --- a/ground/openpilotgcs/src/plugins/telemetry/monitorgadgetfactory.cpp +++ b/ground/openpilotgcs/src/plugins/telemetry/monitorgadgetfactory.cpp @@ -81,5 +81,5 @@ IUAVGadgetConfiguration *MonitorGadgetFactory::createConfiguration(QSettings *qS IOptionsPage *MonitorGadgetFactory::createOptionsPage(IUAVGadgetConfiguration *config) { - return 0; //new MonitorGadgetOptionsPage(qobject_cast(config)); + return 0; // new MonitorGadgetOptionsPage(qobject_cast(config)); } From 8c46e1a895605553bf59f7a43f2960a9cbb3aa07 Mon Sep 17 00:00:00 2001 From: Alessio Morale Date: Sat, 22 Feb 2014 12:31:32 +0100 Subject: [PATCH 19/19] Update WHATSNEW for release --- WHATSNEW.txt | 135 +++++++++++++++++++++++++++++++++++++++++++-------- 1 file changed, 114 insertions(+), 21 deletions(-) diff --git a/WHATSNEW.txt b/WHATSNEW.txt index 0bccc1016..2cb236948 100644 --- a/WHATSNEW.txt +++ b/WHATSNEW.txt @@ -1,19 +1,5 @@ ---- RELEASE-14.01-RC4 --- Cruising Ratt --- -this issue includes the following fixes to previous RC3: -OP-1228 OP-1218 - -Full list of bug fixed in this release is accessible here -http://progress.openpilot.org/issues/?filter=11364 - ---- RELEASE-14.01-RC3 --- Cruising Ratt --- -this issue includes the following fixes to previous RC2: -OP-1088 OP-1141 OP-1166 OP-1187 OP-1191 OP-1195 OP-1211 OP-1218 - -Full list of bug fixed in this release is accessible here -http://progress.openpilot.org/issues/?filter=11361 - ---- RELEASE-14.01-RC2 --- Cruising Ratt --- -This is the RC2 for the first 2014 software release. +--- RELEASE-14.01 --- Cruising Ratt --- +This is the first 2014 software release. This version still supports the CopterControl and CC3D. It includes some major "under the hood" changes like migration to Qt5.1 and QtQuick2 widgets, an overhaul of UAVTalk to improve @@ -27,12 +13,119 @@ Some additions in this release: the full list of features, improvements and bufixes shipping in this release is accessible here: -http://progress.openpilot.org/browse/OP/fixforversion/10220 +http://progress.openpilot.org/issues/?filter=11260 -Issues fixes since RC1 release -http://progress.openpilot.org/issues/?jql=labels%20%3D%20%2214.01-rc1%22 -OP-1166 OP-1168 OP-1169 OP-1176 OP-1177 OP-1178 OP-1179 OP-1180 -OP-1182 OP-1183 OP-1184 OP-1187 OP-1188 OP-1192 +** Improvement + * [OP-771] - Change Wizard wording for better usability + * [OP-791] - Integrate About Authors, OpenPilot GCS, Plugins dialogs into a single dialog window + * [OP-803] - Gadgets get their configuration set twice when restoring workspaces during GCS startup + * [OP-835] - Upgrade GCS to use Qt 5.1.0 + * [OP-883] - Make system and flight targets cleanup, pass 01 + * [OP-913] - Poor UAVObject data structure alignment on flight side causes performance degradation + * [OP-951] - Add -Wshadow to flight CFLAGS and fix compilation breakage that results + * [OP-966] - Scope Plugin Cleanup + * [OP-984] - Provide multi PID banks, these should be assignable per flight mode. + * [OP-996] - Add GCS option to remember the last selected workspace + * [OP-1022] - Additional improvements for altitude hold + * [OP-1036] - Improvements to Fixed Wing PathFollower and Nav + * [OP-1059] - Typo (2x) in OpenPilot Setup Wizard - Output Calibration Window + * [OP-1063] - Multirotor Configuration + * [OP-1071] - Make map "emergency" lines less strong and dashed + * [OP-1079] - Update to FreeRTOS v7.5.2 + * [OP-1082] - Add a ticker on the Welcome page showing Jira activity alongside the 'Project News' + * [OP-1083] - Fix minor English spelling errors in stabilization tooltips + * [OP-1085] - Upgrade GCS to use Qt 5.1.1 + * [OP-1094] - Turn on Progress for large SDK downloads / remove for MD5 files + * [OP-1104] - Create BL version 6 to support larger firmware + * [OP-1105] - If firmware .info blob is missing, test string is too long + * [OP-1107] - Convert About dialog to QTQuick 2.0 and cleanup code. + * [OP-1110] - Move Welcome screen to QtQuick 2 + * [OP-1111] - Move About to QtQuick2 + * [OP-1112] - Update contributors in GCS + * [OP-1113] - Convert new PFD design to QtQuik2 + * [OP-1117] - Implement Horizon mode + * [OP-1120] - Waypoint upload to board should be transacted + * [OP-1133] - UAVTalk - expose send/request all instances of multi instance uav objects + related uavtalk fixes + * [OP-1137] - Make Configuration Checkbox checked by default during uninstall + * [OP-1141] - Add a further bias correction to barometer to better handle thermal variations + * [OP-1143] - Missing Linux udev rules for Revolution boards + * [OP-1153] - Provide a mean to instrument SystemMod stack utilization + * [OP-1154] - Config Option to Automatically Increase Copter Throttle per 1/cos(bank_angle) + * [OP-1158] - Add flight plan consistency checks + * [OP-1160] - Some dev Env improvements, git hooks for messages, make prepare etc. + +** Task + * [OP-775] - Add ARM DSP library to OP codebase + * [OP-813] - Manage merge of translation work to French + * [OP-839] - Disable pyMyte dependency until really used + * [OP-901] - Update STM32 StdPeriphLib to current + * [OP-1087] - Update Qt used from Makefile to 5.1.1 for Windows and Mac + * [OP-1109] - Created share Qt5 QtQuick2 port branch + * [OP-1115] - Remove old artwork from the Artwork folder in Git + * [OP-1119] - Write GCS plugin to access and display on board logs through uavtalk and export .opl files from logged uavobjects + * [OP-1058] - UAVO:Implement a structured named accessors for multielement fields (Flight side) + +** Bug + * [OP-844] - Fix header comments in altitudehold.c + * [OP-845] - Fix reading serial number from USB device on mac platform + * [OP-846] - make qt_sdk_install fails + * [OP-865] - PWM output 6 does not work on RM + * [OP-887] - Provide some standard method of calibrating CPU speed and load measurement for boards + * [OP-924] - PPM output does not have failsafe + * [OP-934] - Incorrect timeout handling in rfm22b receiver + * [OP-971] - Add UI to set AccellTau with revo board + * [OP-1004] - UAVObjectBrowser, buttons don't work when scientific display is turned on + * [OP-1014] - Com port connections are not working on OPLink + * [OP-1018] - Zero point initialization in ETASv3 Airspeed sensor buggy + * [OP-1027] - Segfault in UAVObjectBrowser when "Request"ing a UAVObjectCategory + * [OP-1042] - Revo firmware version isn't read correctly through OPLink + * [OP-1046] - Waypoint upload incomplete, no visual confirmation of failed uploads in uavobjectbrowser and waypoint editor + * [OP-1048] - Attitude is not working with AccelTau > 0 + * [OP-1049] - CC3D attitude estimation failure after multiple settings changes and reboots + * [OP-1067] - Invalid value for "LinkState" + * [OP-1076] - CF Attitude filter in next randomly re-initializes on arming. + * [OP-1078] - GCS segfaults if you close it after playing a log file + * [OP-1080] - Unreliable detection of board through OPLink + * [OP-1095] - GCS crashing on macosx 10.9 upon connection of oplink mini + * [OP-1098] - CDC driver fails installation in Windows 8 or 8.1 + * [OP-1099] - Hidden icons in Configuration tab + * [OP-1101] - Tools.mk has a few tabs and they need to be converted to spaces + * [OP-1102] - OP GCS registers some file types is should not + * [OP-1103] - GCS can not be compiled on OSX 10.8 after update to Qt5.1.1 + * [OP-1108] - Minor bugs found while reading the code + * [OP-1114] - QGLWidget prohibits QListWidgetItem, set AA_DontCreateNativeWidgetSiblings as work around + * [OP-1118] - QComboBox in UAVObjectBrowser does not stay in focus on Mac OSX + * [OP-1121] - GCS will not exit if the Waypoint editor/PathPlanner dialog is open + * [OP-1123] - GCS assertion failure when loading a waypoint file + * [OP-1125] - UAVTalk - acking/nacking multi instance uavobjects is broken (when sending individual instances) + * [OP-1132] - LIBEAY32.dll missing from installer + * [OP-1139] - Add higher order correction to MS5611 driver for low and very low temperature compensation + * [OP-1142] - No yaw in Horizon mode + * [OP-1145] - OPLM to GCS link not reliable + * [OP-1148] - Futaba R7008SB S.Bus protocol not supported + * [OP-1151] - PFD display - inverted flight + * [OP-1152] - Check Stack usage for CopterControl & CC3D + * [OP-1155] - Fix OSX Packaging for GCS + * [OP-1157] - sin_lookup_deg() returns garbage for negative angles + * [OP-1166] - GCS misses yaw neutral setting on sync from initial connection + * [OP-1167] - New flight mode switch position UAVO to work better with SITL, HITL + * [OP-1168] - GCS Reload Board Data button doesn't work + * [OP-1169] - GCS UAVO object titles off by one + * [OP-1176] - Cruise Control checkboxes use wrong Default button + * [OP-1177] - AltHold - Need a setting to allow disabling of bank angle throttle compensation in AH + * [OP-1178] - After re-factoring of ConfigTaskWidget code the OPLink config page does not work reliably. + * [OP-1179] - About box not working in Linux64 build (but probably the same is for Linux32) + * [OP-1180] - GCS AltHold Tab - Reload button and update in real time + * [OP-1181] - on radio configuration the pitch slider has maxed out on its own three times randomly + * [OP-1182] - Telemetry monitor widget is too small on Mac + * [OP-1183] - UAVBrowser displays hex string as decimal + * [OP-1184] - Scope gadget - Stack monitor configurations need a cleanup + * [OP-1188] - Optimize Stabilization Module stack size usage + * [OP-1191] - Revo OPLink bug in GCS + * [OP-1192] - Even though Throttle is off there is motor movement in some situations. + * [OP-1211] - dT calculation in Stabilization and other modules unsafe + * [OP-1218] - PIOS_COM is not thread safe + * [OP-1228] - GCS Quits unexpectedly --- RELEASE-13.06.04 --- This maintenance release includes the following fixes missing in (previously not released to public) RELEASE-13.06.03.