diff --git a/flight/CopterControl/System/coptercontrol.c b/flight/CopterControl/System/coptercontrol.c
index 9cc651e0f..916718ea5 100644
--- a/flight/CopterControl/System/coptercontrol.c
+++ b/flight/CopterControl/System/coptercontrol.c
@@ -84,7 +84,20 @@ int main()
/* swap the stack to use the IRQ stack */
Stack_Change();
- /* Start the FreeRTOS scheduler which should never returns.*/
+ /* Start the FreeRTOS scheduler, which should never return.
+ *
+ * NOTE: OpenPilot runs an operating system (FreeRTOS), which constantly calls
+ * (schedules) function files (modules). These functions never return from their
+ * while loops, which explains why each module has a while(1){} segment. Thus,
+ * the OpenPilot software actually starts at the vTaskStartScheduler() function,
+ * even though this is somewhat obscure.
+ *
+ * In addition, there are many main() functions in the OpenPilot firmware source tree
+ * This is because each main() refers to a separate hardware platform. Of course,
+ * C only allows one main(), so only the relevant main() function is compiled when
+ * making a specific firmware.
+ *
+ */
vTaskStartScheduler();
/* If all is well we will never reach here as the scheduler will now be running. */
diff --git a/ground/openpilotgcs/share/openpilotgcs/dials/default/flightmode-status.svg b/ground/openpilotgcs/share/openpilotgcs/dials/default/flightmode-status.svg
index 56f2ae83b..3a9f27ba4 100755
--- a/ground/openpilotgcs/share/openpilotgcs/dials/default/flightmode-status.svg
+++ b/ground/openpilotgcs/share/openpilotgcs/dials/default/flightmode-status.svg
@@ -1272,9 +1272,9 @@
style="opacity:0.98000004;fill:#ffffff;fill-opacity:1;stroke:#e31717;stroke-width:3.18836617;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
id="value"
width="132.66878"
- height="13.323594"
- x="15.425945"
- y="33.75214"
+ height="23"
+ x="15"
+ y="41"
ry="3.4474616"
inkscape:label="#rect2989" />
diff --git a/ground/openpilotgcs/src/plugins/config/airframe.ui b/ground/openpilotgcs/src/plugins/config/airframe.ui
index 1224614b5..0dcc5ec57 100644
--- a/ground/openpilotgcs/src/plugins/config/airframe.ui
+++ b/ground/openpilotgcs/src/plugins/config/airframe.ui
@@ -2571,6 +2571,9 @@ margin:1px;
true
+
+ Qt::StrongFocus
+
Overall level of feed forward (in percentage).
@@ -2600,6 +2603,9 @@ margin:1px;
true
+
+ Qt::StrongFocus
+
In miliseconds.
When tuning: Slowly raise accel time from zero to just
@@ -2629,6 +2635,9 @@ its target speed.
true
+
+ Qt::StrongFocus
+
When tuning: Slowly raise decel time from zero to just
under the level where the motor starts to undershoot
@@ -2667,6 +2676,9 @@ Do it after accel time is setup.
-
+
+ Qt::StrongFocus
+
Limits how much the engines can accelerate or decelerate.
In 'units per second', a sound default is 1000.
@@ -2704,6 +2716,9 @@ In 'units per second', a sound default is 1000.
-
+
+ Qt::StrongFocus
+
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
<html><head><meta name="qrichtext" content="1" /><style type="text/css">
@@ -2719,6 +2734,9 @@ p, li { white-space: pre-wrap; }
-
+
+ Qt::StrongFocus
+
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
<html><head><meta name="qrichtext" content="1" /><style type="text/css">
@@ -2734,6 +2752,9 @@ p, li { white-space: pre-wrap; }
-
+
+ Qt::StrongFocus
+
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
<html><head><meta name="qrichtext" content="1" /><style type="text/css">
diff --git a/ground/openpilotgcs/src/plugins/config/camerastabilization.ui b/ground/openpilotgcs/src/plugins/config/camerastabilization.ui
index b734ce54f..828cded66 100644
--- a/ground/openpilotgcs/src/plugins/config/camerastabilization.ui
+++ b/ground/openpilotgcs/src/plugins/config/camerastabilization.ui
@@ -51,6 +51,9 @@ QGroupBox::title {
-
+
+ Qt::StrongFocus
+
Enable CameraStabilization module
@@ -106,6 +109,9 @@ QGroupBox::title {
-
+
+ Qt::StrongFocus
+
Camera yaw angle for 100% output value, deg.
@@ -122,6 +128,9 @@ have to define channel output range using Output configuration tab.
-
+
+ Qt::StrongFocus
+
Camera pitch angle for 100% output value, deg.
@@ -138,6 +147,9 @@ have to define channel output range using Output configuration tab.
-
+
+ Qt::StrongFocus
+
Camera roll angle for 100% output value, deg.
@@ -154,6 +166,9 @@ have to define channel output range using Output configuration tab.
-
+
+ Qt::StrongFocus
+
Yaw output channel for camera gimbal
@@ -166,6 +181,9 @@ have to define channel output range using Output configuration tab.
-
+
+ Qt::StrongFocus
+
Pitch output channel for camera gimbal
@@ -178,6 +196,9 @@ have to define channel output range using Output configuration tab.
-
+
+ Qt::StrongFocus
+
Roll output channel for camera gimbal
@@ -356,6 +377,9 @@ margin:1px;
-
+
+ Qt::StrongFocus
+
Input channel to control camera yaw
@@ -370,6 +394,9 @@ Don't forget to map this channel using Input configuration tab.
-
+
+ Qt::StrongFocus
+
Input channel to control camera pitch
@@ -384,6 +411,9 @@ Don't forget to map this channel using Input configuration tab.
-
+
+ Qt::StrongFocus
+
Input channel to control camera roll
@@ -405,6 +435,9 @@ Don't forget to map this channel using Input configuration tab.
-
+
+ Qt::StrongFocus
+
Axis stabilization mode
@@ -420,6 +453,9 @@ AxisLock: camera remembers tracking attitude. Input controls the rate of deflect
-
+
+ Qt::StrongFocus
+
Maximum camera yaw deflection for 100% input in Attitude mode, deg.
@@ -433,6 +469,9 @@ AxisLock: camera remembers tracking attitude. Input controls the rate of deflect
-
+
+ Qt::StrongFocus
+
Maximum camera yaw rate for 100% input in AxisLock mode, deg/s.
@@ -446,6 +485,9 @@ AxisLock: camera remembers tracking attitude. Input controls the rate of deflect
-
+
+ Qt::StrongFocus
+
Input low-pass filter response time for yaw axis, ms.
@@ -461,6 +503,9 @@ This option smoothes the stick input. Zero value disables LPF.
-
+
+ Qt::StrongFocus
+
Axis stabilization mode
@@ -476,6 +521,9 @@ AxisLock: camera remembers tracking attitude. Input controls the rate of deflect
-
+
+ Qt::StrongFocus
+
Maximum camera pitch deflection for 100% input in Attitude mode, deg.
@@ -489,6 +537,9 @@ AxisLock: camera remembers tracking attitude. Input controls the rate of deflect
-
+
+ Qt::StrongFocus
+
Maximum camera pitch rate for 100% input in AxisLock mode, deg/s.
@@ -502,6 +553,9 @@ AxisLock: camera remembers tracking attitude. Input controls the rate of deflect
-
+
+ Qt::StrongFocus
+
Input low-pass filter response time for pitch axis, ms.
@@ -517,6 +571,9 @@ This option smoothes the stick input. Zero value disables LPF.
-
+
+ Qt::StrongFocus
+
Axis stabilization mode
@@ -532,6 +589,9 @@ AxisLock: camera remembers tracking attitude. Input controls the rate of deflect
-
+
+ Qt::StrongFocus
+
Maximum camera roll deflection for 100% input in Attitude mode, deg.
@@ -545,6 +605,9 @@ AxisLock: camera remembers tracking attitude. Input controls the rate of deflect
-
+
+ Qt::StrongFocus
+
Maximum camera roll rate for 100% input in AxisLock mode, deg/s.
@@ -558,6 +621,9 @@ AxisLock: camera remembers tracking attitude. Input controls the rate of deflect
-
+
+ Qt::StrongFocus
+
Input low-pass filter response time for roll axis, ms.
@@ -615,6 +681,9 @@ This option smoothes the stick input. Zero value disables LPF.
-
+
+ Qt::StrongFocus
+
Stick input deadband for all axes in AxisLock mode, deg/s.
diff --git a/ground/openpilotgcs/src/plugins/config/configcamerastabilizationwidget.cpp b/ground/openpilotgcs/src/plugins/config/configcamerastabilizationwidget.cpp
index eece2e214..86ac30080 100644
--- a/ground/openpilotgcs/src/plugins/config/configcamerastabilizationwidget.cpp
+++ b/ground/openpilotgcs/src/plugins/config/configcamerastabilizationwidget.cpp
@@ -89,6 +89,8 @@ ConfigCameraStabilizationWidget::ConfigCameraStabilizationWidget(QWidget *parent
connect(m_camerastabilization->camerastabilizationSaveRAM, SIGNAL(clicked()), this, SLOT(applySettings()));
connect(m_camerastabilization->camerastabilizationSaveSD, SIGNAL(clicked()), this, SLOT(saveSettings()));
connect(m_camerastabilization->camerastabilizationHelp, SIGNAL(clicked()), this, SLOT(openHelp()));
+
+ disbleMouseWheelEvents();
}
ConfigCameraStabilizationWidget::~ConfigCameraStabilizationWidget()
diff --git a/ground/openpilotgcs/src/plugins/config/configcamerastabilizationwidget.h b/ground/openpilotgcs/src/plugins/config/configcamerastabilizationwidget.h
index 41fd5dc4d..743435adb 100644
--- a/ground/openpilotgcs/src/plugins/config/configcamerastabilizationwidget.h
+++ b/ground/openpilotgcs/src/plugins/config/configcamerastabilizationwidget.h
@@ -41,7 +41,6 @@ class ConfigCameraStabilizationWidget: public ConfigTaskWidget
public:
ConfigCameraStabilizationWidget(QWidget *parent = 0);
~ConfigCameraStabilizationWidget();
-
private:
Ui_CameraStabilizationWidget *m_camerastabilization;
virtual void enableControls(bool enable);
diff --git a/ground/openpilotgcs/src/plugins/config/configstabilizationwidget.cpp b/ground/openpilotgcs/src/plugins/config/configstabilizationwidget.cpp
index f34e40900..7306475a4 100644
--- a/ground/openpilotgcs/src/plugins/config/configstabilizationwidget.cpp
+++ b/ground/openpilotgcs/src/plugins/config/configstabilizationwidget.cpp
@@ -52,6 +52,8 @@ ConfigStabilizationWidget::ConfigStabilizationWidget(QWidget *parent) : ConfigTa
connect(m_stabilization->checkBox_3,SIGNAL(stateChanged(int)),this,SLOT(linkCheckBoxes(int)));
connect(this,SIGNAL(widgetContentsChanged(QWidget*)),this,SLOT(processLinkedWidgets(QWidget*)));
+
+ disbleMouseWheelEvents();
}
diff --git a/ground/openpilotgcs/src/plugins/config/configtxpidwidget.cpp b/ground/openpilotgcs/src/plugins/config/configtxpidwidget.cpp
index 27df06ef9..1d65eaf1c 100644
--- a/ground/openpilotgcs/src/plugins/config/configtxpidwidget.cpp
+++ b/ground/openpilotgcs/src/plugins/config/configtxpidwidget.cpp
@@ -67,6 +67,8 @@ ConfigTxPIDWidget::ConfigTxPIDWidget(QWidget *parent) : ConfigTaskWidget(parent)
enableControls(false);
populateWidgets();
refreshWidgetsValues();
+
+ disbleMouseWheelEvents();
}
ConfigTxPIDWidget::~ConfigTxPIDWidget()
diff --git a/ground/openpilotgcs/src/plugins/config/configtxpidwidget.h b/ground/openpilotgcs/src/plugins/config/configtxpidwidget.h
index 9723e141f..14eb5925d 100644
--- a/ground/openpilotgcs/src/plugins/config/configtxpidwidget.h
+++ b/ground/openpilotgcs/src/plugins/config/configtxpidwidget.h
@@ -37,7 +37,6 @@ class ConfigTxPIDWidget : public ConfigTaskWidget
public:
ConfigTxPIDWidget(QWidget *parent = 0);
~ConfigTxPIDWidget();
-
private:
Ui_TxPIDWidget *m_txpid;
diff --git a/ground/openpilotgcs/src/plugins/config/configvehicletypewidget.cpp b/ground/openpilotgcs/src/plugins/config/configvehicletypewidget.cpp
index dfbb023e2..b16236fa0 100644
--- a/ground/openpilotgcs/src/plugins/config/configvehicletypewidget.cpp
+++ b/ground/openpilotgcs/src/plugins/config/configvehicletypewidget.cpp
@@ -233,6 +233,7 @@ ConfigVehicleTypeWidget::ConfigVehicleTypeWidget(QWidget *parent) : ConfigTaskWi
setupGroundVehicleUI( m_aircraft->groundVehicleType->currentText() );
setupFixedWingUI( m_aircraft->fixedWingType->currentText() );
+ disbleMouseWheelEvents();
}
@@ -244,7 +245,6 @@ ConfigVehicleTypeWidget::~ConfigVehicleTypeWidget()
// Do nothing
}
-
/**
Slot for switching the airframe type. We do it explicitely
rather than a signal in the UI, because we want to force a fitInView of the quad shapes.
diff --git a/ground/openpilotgcs/src/plugins/config/input.ui b/ground/openpilotgcs/src/plugins/config/input.ui
index 915df3d4b..da2a59ddd 100644
--- a/ground/openpilotgcs/src/plugins/config/input.ui
+++ b/ground/openpilotgcs/src/plugins/config/input.ui
@@ -291,6 +291,9 @@ margin:1px;
0
+
+ Qt::StrongFocus
+
-
@@ -301,6 +304,9 @@ margin:1px;
0
+
+ Qt::StrongFocus
+
-
@@ -311,6 +317,9 @@ margin:1px;
0
+
+ Qt::StrongFocus
+
-
@@ -324,13 +333,25 @@ margin:1px;
-
-
+
+
+ Qt::StrongFocus
+
+
-
-
+
+
+ Qt::StrongFocus
+
+
-
-
+
+
+ Qt::StrongFocus
+
+
-
@@ -343,13 +364,25 @@ margin:1px;
-
-
+
+
+ Qt::StrongFocus
+
+
-
-
+
+
+ Qt::StrongFocus
+
+
-
-
+
+
+ Qt::StrongFocus
+
+
-
@@ -424,6 +457,9 @@ margin:1px;
26
+
+ Qt::StrongFocus
+
@@ -434,6 +470,9 @@ margin:1px;
26
+
+ Qt::StrongFocus
+
Select the stabilization mode on this position (manual/stabilized/auto)
@@ -460,6 +499,9 @@ margin:1px;
26
+
+ Qt::StrongFocus
+
@@ -499,6 +541,9 @@ margin:1px;
81
+
+ Qt::StrongFocus
+
This slider moves when you move the flight mode switch
on your remote. Setup the flightmode channel on the RC Input tab
@@ -572,6 +617,9 @@ if you have not done so already.
-
+
+ Qt::StrongFocus
+
Indicate the control used for arming the airframe, in addition to setting the throttle to its minimum position. In other terms "Throttle Off".
@@ -603,6 +651,9 @@ if you have not done so already.
-
+
+ Qt::StrongFocus
+
After the time indicated here, the frame go back to disarmed state.
@@ -733,17 +784,30 @@ Applies and Saves all settings to SD
fmsSlider
fmsModePos3
- fmsSsPos3Roll
- fmsSsPos3Pitch
- fmsSsPos3Yaw
fmsModePos2
- fmsSsPos2Roll
- fmsSsPos2Pitch
- fmsSsPos2Yaw
fmsModePos1
fmsSsPos1Roll
fmsSsPos1Pitch
fmsSsPos1Yaw
+ fmsSsPos2Roll
+ fmsSsPos2Pitch
+ fmsSsPos2Yaw
+ fmsSsPos3Roll
+ fmsSsPos3Pitch
+ fmsSsPos3Yaw
+ tabWidget
+ deadband
+ configurationWizard
+ runCalibration
+ graphicsView
+ wzBack
+ wzNext
+ wzCancel
+ armControl
+ armTimeout
+ inputHelp
+ saveRCInputToRAM
+ saveRCInputToSD
diff --git a/ground/openpilotgcs/src/plugins/config/inputchannelform.cpp b/ground/openpilotgcs/src/plugins/config/inputchannelform.cpp
index 7561e111f..dbab48cac 100644
--- a/ground/openpilotgcs/src/plugins/config/inputchannelform.cpp
+++ b/ground/openpilotgcs/src/plugins/config/inputchannelform.cpp
@@ -4,7 +4,7 @@
#include "manualcontrolsettings.h"
inputChannelForm::inputChannelForm(QWidget *parent,bool showlegend) :
- QWidget(parent),
+ ConfigTaskWidget(parent),
ui(new Ui::inputChannelForm)
{
ui->setupUi(this);
@@ -36,12 +36,16 @@ inputChannelForm::inputChannelForm(QWidget *parent,bool showlegend) :
// a spin box fixes this
connect(ui->channelNumberDropdown,SIGNAL(currentIndexChanged(int)),this,SLOT(channelDropdownUpdated(int)));
connect(ui->channelNumber,SIGNAL(valueChanged(int)),this,SLOT(channelNumberUpdated(int)));
+
+ disbleMouseWheelEvents();
}
+
inputChannelForm::~inputChannelForm()
{
delete ui;
}
+
void inputChannelForm::setName(QString &name)
{
ui->channelName->setText(name);
diff --git a/ground/openpilotgcs/src/plugins/config/inputchannelform.h b/ground/openpilotgcs/src/plugins/config/inputchannelform.h
index c6534dc48..606ef2d78 100644
--- a/ground/openpilotgcs/src/plugins/config/inputchannelform.h
+++ b/ground/openpilotgcs/src/plugins/config/inputchannelform.h
@@ -7,7 +7,7 @@ namespace Ui {
class inputChannelForm;
}
-class inputChannelForm : public QWidget
+class inputChannelForm : public ConfigTaskWidget
{
Q_OBJECT
diff --git a/ground/openpilotgcs/src/plugins/config/inputchannelform.ui b/ground/openpilotgcs/src/plugins/config/inputchannelform.ui
index b53bbb6bf..a32599c30 100644
--- a/ground/openpilotgcs/src/plugins/config/inputchannelform.ui
+++ b/ground/openpilotgcs/src/plugins/config/inputchannelform.ui
@@ -65,6 +65,9 @@
16777215
+
+ Qt::StrongFocus
+
-
@@ -75,6 +78,9 @@
25
+
+ Qt::StrongFocus
+
QAbstractSpinBox::NoButtons
@@ -94,6 +100,9 @@
25
+
+ Qt::StrongFocus
+
QAbstractSpinBox::NoButtons
@@ -275,6 +284,9 @@ font:bold;
22
+
+ Qt::StrongFocus
+
Qt::Horizontal
@@ -300,6 +312,9 @@ font:bold;
16777215
+
+ Qt::StrongFocus
+
7
@@ -471,6 +486,15 @@ font:bold;
+
+ channelNumber
+ channelGroup
+ channelNumberDropdown
+ channelMin
+ channelNeutral
+ channelMax
+ channelRev
+
diff --git a/ground/openpilotgcs/src/plugins/config/outputchannelform.cpp b/ground/openpilotgcs/src/plugins/config/outputchannelform.cpp
index 64e7df893..530244777 100644
--- a/ground/openpilotgcs/src/plugins/config/outputchannelform.cpp
+++ b/ground/openpilotgcs/src/plugins/config/outputchannelform.cpp
@@ -29,7 +29,7 @@
#include "configoutputwidget.h"
OutputChannelForm::OutputChannelForm(const int index, QWidget *parent, const bool showLegend) :
- QWidget(parent),
+ ConfigTaskWidget(parent),
ui(),
m_index(index),
m_inChannelTest(false)
@@ -70,6 +70,8 @@ OutputChannelForm::OutputChannelForm(const int index, QWidget *parent, const boo
ui.actuatorLink->setChecked(false);
connect(ui.actuatorLink, SIGNAL(toggled(bool)),
this, SLOT(linkToggled(bool)));
+
+ disbleMouseWheelEvents();
}
OutputChannelForm::~OutputChannelForm()
diff --git a/ground/openpilotgcs/src/plugins/config/outputchannelform.h b/ground/openpilotgcs/src/plugins/config/outputchannelform.h
index 7d492dc1a..873a5ea50 100644
--- a/ground/openpilotgcs/src/plugins/config/outputchannelform.h
+++ b/ground/openpilotgcs/src/plugins/config/outputchannelform.h
@@ -29,10 +29,9 @@
#include
#include "ui_outputchannelform.h"
+#include "configtaskwidget.h"
-class ConfigOnputWidget;
-
-class OutputChannelForm : public QWidget
+class OutputChannelForm : public ConfigTaskWidget
{
Q_OBJECT
diff --git a/ground/openpilotgcs/src/plugins/config/stabilization.ui b/ground/openpilotgcs/src/plugins/config/stabilization.ui
index 5c79c104f..02a2c97e7 100755
--- a/ground/openpilotgcs/src/plugins/config/stabilization.ui
+++ b/ground/openpilotgcs/src/plugins/config/stabilization.ui
@@ -10198,7 +10198,7 @@ border-radius: 5;
Full Stick
-Angle
+Angle (deg)
Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter
@@ -10226,7 +10226,7 @@ Angle
- 100
+ 180
50
@@ -10245,7 +10245,7 @@ Angle
objname:StabilizationSettings
fieldname:RollMax
haslimits:yes
- scale:1.8
+ scale:1.0
buttongroup:3,10
@@ -10269,17 +10269,17 @@ Angle
Qt::StrongFocus
- 200
+ 180
- 200
+ 180
objname:StabilizationSettings
fieldname:RollMax
haslimits:yes
- scale:1.8
+ scale:1.0
buttongroup:3,10
@@ -10322,7 +10322,7 @@ Angle
- 100
+ 180
50
@@ -10341,7 +10341,7 @@ Angle
objname:StabilizationSettings
fieldname:PitchMax
haslimits:yes
- scale:1.8
+ scale:1.0
buttongroup:3,10
@@ -10365,17 +10365,17 @@ Angle
Qt::StrongFocus
- 200
+ 180
- 200
+ 180
objname:StabilizationSettings
fieldname:PitchMax
haslimits:yes
- scale:1.8
+ scale:1.0
buttongroup:3,10
@@ -10418,7 +10418,7 @@ Angle
- 100
+ 180
50
@@ -10437,7 +10437,7 @@ Angle
objname:StabilizationSettings
fieldname:YawMax
haslimits:yes
- scale:1.8
+ scale:1.0
buttongroup:3,10
@@ -10461,17 +10461,17 @@ Angle
Qt::StrongFocus
- 200
+ 180
- 200
+ 180
objname:StabilizationSettings
fieldname:YawMax
haslimits:yes
- scale:1.8
+ scale:1.0
buttongroup:3,10
@@ -10490,7 +10490,7 @@ Angle
Full Stick
-Rate
+Rate (deg/s)
Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter
@@ -10518,7 +10518,7 @@ Rate
- 100
+ 500
50
@@ -10538,7 +10538,7 @@ Rate
fieldname:ManualRate
element:Roll
haslimits:yes
- scale:5
+ scale:1
buttongroup:3,10
@@ -10562,10 +10562,10 @@ Rate
Qt::StrongFocus
- 200
+ 500
- 200
+ 180
@@ -10573,7 +10573,7 @@ Rate
fieldname:ManualRate
element:Roll
haslimits:yes
- scale:5
+ scale:1
buttongroup:3,10
@@ -10600,7 +10600,7 @@ Rate
- 100
+ 500
50
@@ -10620,7 +10620,7 @@ Rate
fieldname:ManualRate
element:Pitch
haslimits:yes
- scale:5
+ scale:1
buttongroup:3,10
@@ -10644,10 +10644,10 @@ Rate
Qt::StrongFocus
- 200
+ 500
- 200
+ 180
@@ -10655,7 +10655,7 @@ Rate
fieldname:ManualRate
element:Pitch
haslimits:yes
- scale:5
+ scale:1
buttongroup:3,10
@@ -10682,7 +10682,7 @@ Rate
- 100
+ 500
50
@@ -10702,7 +10702,7 @@ Rate
fieldname:ManualRate
element:Yaw
haslimits:yes
- scale:5
+ scale:1
buttongroup:3,10
@@ -10726,10 +10726,10 @@ Rate
Qt::StrongFocus
- 200
+ 500
- 200
+ 180
@@ -10737,7 +10737,7 @@ Rate
fieldname:ManualRate
element:Yaw
haslimits:yes
- scale:5
+ scale:1
buttongroup:3,10
@@ -10784,7 +10784,7 @@ Attitude
- 100
+ 500
50
@@ -10804,7 +10804,7 @@ Attitude
fieldname:MaximumRate
element:Roll
haslimits:yes
- scale:5
+ scale:1
buttongroup:3,10
@@ -10828,7 +10828,7 @@ Attitude
Qt::StrongFocus
- 200
+ 500
200
@@ -10839,7 +10839,7 @@ Attitude
fieldname:MaximumRate
element:Roll
haslimits:yes
- scale:5
+ scale:1
buttongroup:3,10
@@ -10866,7 +10866,7 @@ Attitude
- 100
+ 500
50
@@ -10886,7 +10886,7 @@ Attitude
fieldname:MaximumRate
element:Pitch
haslimits:yes
- scale:5
+ scale:1
buttongroup:3,10
@@ -10910,7 +10910,7 @@ Attitude
Qt::StrongFocus
- 200
+ 500
200
@@ -10921,7 +10921,7 @@ Attitude
fieldname:MaximumRate
element:Pitch
haslimits:yes
- scale:5
+ scale:1
buttongroup:3,10
@@ -10948,7 +10948,7 @@ Attitude
- 100
+ 500
50
@@ -10968,7 +10968,7 @@ Attitude
fieldname:MaximumRate
element:Yaw
haslimits:yes
- scale:5
+ scale:1
buttongroup:3,10
@@ -10992,7 +10992,7 @@ Attitude
Qt::StrongFocus
- 200
+ 500
200
@@ -11003,7 +11003,7 @@ Attitude
fieldname:MaximumRate
element:Yaw
haslimits:yes
- scale:5
+ scale:1
buttongroup:3,10
@@ -11885,7 +11885,7 @@ border-radius: 4;
0
- -403
+ 0
673
1079
@@ -14743,7 +14743,7 @@ Then lower the value by 20% or so.
- 6
+ 5
0.000100000000000
@@ -14791,7 +14791,7 @@ Then lower the value by 20% or so.
- 6
+ 5
0.000100000000000
@@ -14841,7 +14841,7 @@ You can usually go for higher values for Yaw factors.
- 6
+ 5
0.000100000000000
@@ -14924,7 +14924,7 @@ value as the Kp.
- 6
+ 5
0.000100000000000
@@ -14988,7 +14988,7 @@ value as the Kp.
- 6
+ 5
0.000100000000000
@@ -15052,7 +15052,7 @@ value as the Kp.
- 6
+ 5
0.000100000000000
@@ -15299,7 +15299,7 @@ value as the Kp.
- 6
+ 4
1.000000000000000
@@ -15346,7 +15346,7 @@ value as the Kp.
- 6
+ 4
1.000000000000000
@@ -15396,7 +15396,7 @@ value as the Kp.
- 6
+ 4
1.000000000000000
@@ -18302,7 +18302,7 @@ border-radius: 5;
- 6
+ 3
0.100000000000000
@@ -18346,7 +18346,7 @@ border-radius: 5;
- 6
+ 3
0.100000000000000
@@ -18393,7 +18393,7 @@ border-radius: 5;
- 6
+ 3
0.100000000000000
@@ -18475,7 +18475,7 @@ border-radius: 5;
- 6
+ 3
0.100000000000000
@@ -18535,7 +18535,7 @@ border-radius: 5;
- 6
+ 3
0.100000000000000
@@ -18598,7 +18598,7 @@ border-radius: 5;
- 6
+ 3
0.100000000000000
@@ -18676,7 +18676,7 @@ border-radius: 5;
- 6
+ 2
0.100000000000000
@@ -18720,7 +18720,7 @@ border-radius: 5;
- 6
+ 2
0.100000000000000
@@ -18767,7 +18767,7 @@ border-radius: 5;
- 6
+ 2
0.100000000000000
diff --git a/ground/openpilotgcs/src/plugins/config/txpid.ui b/ground/openpilotgcs/src/plugins/config/txpid.ui
index 3bfce4cd7..9862bfad1 100644
--- a/ground/openpilotgcs/src/plugins/config/txpid.ui
+++ b/ground/openpilotgcs/src/plugins/config/txpid.ui
@@ -34,6 +34,9 @@
-
+
+ Qt::StrongFocus
+
This module will periodically update values of stabilization PID settings
depending on configured input control channels. New values of stabilization
@@ -191,6 +194,9 @@ margin:1px;
-
+
+ Qt::StrongFocus
+
Select PID option or option pair to update.
Set to Disabled if not used.
@@ -199,6 +205,9 @@ Set to Disabled if not used.
-
+
+ Qt::StrongFocus
+
Select input used as a control source for this instance.
It can be one of Accessory channels or Throttle channel.
@@ -219,6 +228,9 @@ used, for instance, to decrease PID value when increasing Throttle.
-
+
+ Qt::StrongFocus
+
Minimum PID value mapped to Accessory channel = 0 or
Throttle channel lesser or equal to Throttle Min value.
@@ -233,6 +245,9 @@ Throttle channel lesser or equal to Throttle Min value.
-
+
+ Qt::StrongFocus
+
Maximum PID value mapped to Accessory channel = 1 or
Throttle channel greater or equal to Throttle Max value.
@@ -254,6 +269,9 @@ Throttle channel greater or equal to Throttle Max value.
-
+
+ Qt::StrongFocus
+
Select PID option or option pair to update.
Set to Disabled if not used.
@@ -262,6 +280,9 @@ Set to Disabled if not used.
-
+
+ Qt::StrongFocus
+
Select input used as a control source for this instance.
It can be one of Accessory channels or Throttle channel.
@@ -282,6 +303,9 @@ used, for instance, to decrease PID value when increasing Throttle.
-
+
+ Qt::StrongFocus
+
Minimum PID value mapped to Accessory channel = 0 or
Throttle channel lesser or equal to Throttle Min value.
@@ -296,6 +320,9 @@ Throttle channel lesser or equal to Throttle Min value.
-
+
+ Qt::StrongFocus
+
Maximum PID value mapped to Accessory channel = 1 or
Throttle channel greater or equal to Throttle Max value.
@@ -317,6 +344,9 @@ Throttle channel greater or equal to Throttle Max value.
-
+
+ Qt::StrongFocus
+
Select PID option or option pair to update.
Set to Disabled if not used.
@@ -325,6 +355,9 @@ Set to Disabled if not used.
-
+
+ Qt::StrongFocus
+
Select input used as a control source for this instance.
It can be one of Accessory channels or Throttle channel.
@@ -345,6 +378,9 @@ used, for instance, to decrease PID value when increasing Throttle.
-
+
+ Qt::StrongFocus
+
Minimum PID value mapped to Accessory channel = 0 or
Throttle channel lesser or equal to Throttle Min value.
@@ -359,6 +395,9 @@ Throttle channel lesser or equal to Throttle Min value.
-
+
+ Qt::StrongFocus
+
Maximum PID value mapped to Accessory channel = 1 or
Throttle channel greater or equal to Throttle Max value.
@@ -380,6 +419,9 @@ Throttle channel greater or equal to Throttle Max value.
-
+
+ Qt::StrongFocus
+
PID values update mode which can be set to:
- Never: this disables PID updates (but module still will be run if enabled),
@@ -403,6 +445,9 @@ only when system is armed without disabling the module.
-
+
+ Qt::StrongFocus
+
Throttle channel lower bound mapped to PID Min value
@@ -416,6 +461,9 @@ only when system is armed without disabling the module.
-
+
+ Qt::StrongFocus
+
Throttle channel upper bound mapped to PID Max value
@@ -578,6 +626,21 @@ margin:1px;
Apply
Save
scrollArea
+ PID1
+ Input1
+ MinPID1
+ MaxPID1
+ PID2
+ Input2
+ MinPID2
+ MaxPID2
+ PID3
+ Input3
+ MinPID3
+ MaxPID3
+ ThrottleMin
+ ThrottleMax
+ UpdateMode
diff --git a/ground/openpilotgcs/src/plugins/coreplugin/coreconstants.h b/ground/openpilotgcs/src/plugins/coreplugin/coreconstants.h
index f02315d2f..3398a3c89 100644
--- a/ground/openpilotgcs/src/plugins/coreplugin/coreconstants.h
+++ b/ground/openpilotgcs/src/plugins/coreplugin/coreconstants.h
@@ -49,6 +49,7 @@ const char * const GCS_VERSION_LONG = GCS_VERSION;
const char * const GCS_AUTHOR = "OpenPilot Project";
const char * const GCS_YEAR = "2011";
+const char * const GCS_HELP = "http://wiki.openpilot.org";
#ifdef GCS_REVISION
const char * const GCS_REVISION_STR = STRINGIFY(GCS_REVISION);
#else
diff --git a/ground/openpilotgcs/src/plugins/coreplugin/mainwindow.cpp b/ground/openpilotgcs/src/plugins/coreplugin/mainwindow.cpp
index 1849b4e8b..b35f21cc3 100644
--- a/ground/openpilotgcs/src/plugins/coreplugin/mainwindow.cpp
+++ b/ground/openpilotgcs/src/plugins/coreplugin/mainwindow.cpp
@@ -83,6 +83,7 @@
#include
#include
#include
+#include
/*
#ifdef Q_OS_UNIX
@@ -731,10 +732,7 @@ void MainWindow::registerDefaultActions()
cmd = am->registerAction(tmpaction, Constants::G_HELP_HELP, m_globalContext);
mhelp->addAction(cmd, Constants::G_HELP_HELP);
tmpaction->setEnabled(true);
-#ifdef Q_WS_MAC
- cmd->action()->setMenuRole(QAction::ApplicationSpecificRole);
-#endif
- connect(tmpaction, SIGNAL(triggered()), this, SLOT(aboutPlugins()));
+ connect(tmpaction, SIGNAL(triggered()), this, SLOT(showHelp()));
// About sep
#ifndef Q_WS_MAC // doesn't have the "About" actions in the Help menu
@@ -870,6 +868,11 @@ void MainWindow::applyTabBarSettings(QTabWidget::TabPosition pos, bool movable)
m_modeStack->setMovable(movable);
}
+void MainWindow::showHelp()
+{
+ QDesktopServices::openUrl( QUrl(Constants::GCS_HELP, QUrl::StrictMode) );
+}
+
ActionManager *MainWindow::actionManager() const
{
return m_actionManager;
diff --git a/ground/openpilotgcs/src/plugins/coreplugin/mainwindow.h b/ground/openpilotgcs/src/plugins/coreplugin/mainwindow.h
index 7d1c61ebc..7ae640fef 100644
--- a/ground/openpilotgcs/src/plugins/coreplugin/mainwindow.h
+++ b/ground/openpilotgcs/src/plugins/coreplugin/mainwindow.h
@@ -163,6 +163,7 @@ private slots:
void modeChanged(Core::IMode *mode);
void showUavGadgetMenus(bool show, bool hasSplitter);
void applyTabBarSettings(QTabWidget::TabPosition pos, bool movable);
+ void showHelp();
private:
void updateContextObject(IContext *context);
diff --git a/ground/openpilotgcs/src/plugins/pfd/pfdgadgetwidget.cpp b/ground/openpilotgcs/src/plugins/pfd/pfdgadgetwidget.cpp
index 072c54be3..7fedb99ab 100644
--- a/ground/openpilotgcs/src/plugins/pfd/pfdgadgetwidget.cpp
+++ b/ground/openpilotgcs/src/plugins/pfd/pfdgadgetwidget.cpp
@@ -304,7 +304,7 @@ void PFDGadgetWidget::updateAirspeed(UAVObject *object) {
UAVObjectField* eastField = object->getField("East");
if (northField && eastField) {
double val = floor(sqrt(pow(northField->getDouble(),2) + pow(eastField->getDouble(),2))*10)/10;
- groundspeedTarget = 3.6*val*speedScaleHeight/3000;
+ groundspeedTarget = 3.6*val*speedScaleHeight/30;
if (!dialTimer.isActive())
dialTimer.start(); // Rearm the dial Timer which might be stopped.
@@ -321,7 +321,7 @@ void PFDGadgetWidget::updateAltitude(UAVObject *object) {
UAVObjectField* downField = object->getField("Down");
if (downField) {
// The altitude scale represents 30 meters
- altitudeTarget = -floor(downField->getDouble()*10)/10*altitudeScaleHeight/3000;
+ altitudeTarget = -floor(downField->getDouble()*10)/10*altitudeScaleHeight/30;
if (!dialTimer.isActive())
dialTimer.start(); // Rearm the dial Timer which might be stopped.
diff --git a/ground/openpilotgcs/src/plugins/uavobjectwidgetutils/configtaskwidget.cpp b/ground/openpilotgcs/src/plugins/uavobjectwidgetutils/configtaskwidget.cpp
index 4bb570295..51bafbb2d 100644
--- a/ground/openpilotgcs/src/plugins/uavobjectwidgetutils/configtaskwidget.cpp
+++ b/ground/openpilotgcs/src/plugins/uavobjectwidgetutils/configtaskwidget.cpp
@@ -367,7 +367,7 @@ void ConfigTaskWidget::forceShadowUpdates()
setDirty(true);
}
/**
- * SLOT function called when on of the widgets contents added to the framework changes
+ * SLOT function called when one of the widgets contents added to the framework changes
*/
void ConfigTaskWidget::widgetsContentsChanged()
{
@@ -412,7 +412,8 @@ void ConfigTaskWidget::widgetsContentsChanged()
}
}
}
- smartsave->resetIcons();
+ if(smartsave)
+ smartsave->resetIcons();
setDirty(true);
}
/**
@@ -1144,6 +1145,30 @@ void ConfigTaskWidget::loadWidgetLimits(QWidget * widget,UAVObjectField * field,
}
}
+void ConfigTaskWidget::disbleMouseWheelEvents()
+{
+ //Disable mouse wheel events
+ foreach( QSpinBox * sp, findChildren() ) {
+ sp->installEventFilter( this );
+ }
+ foreach( QDoubleSpinBox * sp, findChildren() ) {
+ sp->installEventFilter( this );
+ }
+ foreach( QSlider * sp, findChildren() ) {
+ sp->installEventFilter( this );
+ }
+}
+
+bool ConfigTaskWidget::eventFilter( QObject * obj, QEvent * evt ) {
+ //Filter all wheel events, and ignore them
+ if ( evt->type() == QEvent::Wheel &&
+ (qobject_cast( obj ) || qobject_cast( obj ) ))
+ {
+ evt->ignore();
+ return true;
+ }
+ return QWidget::eventFilter( obj, evt );
+}
/**
@}
@}
diff --git a/ground/openpilotgcs/src/plugins/uavobjectwidgetutils/configtaskwidget.h b/ground/openpilotgcs/src/plugins/uavobjectwidgetutils/configtaskwidget.h
index deb297e32..a0e1feb7b 100644
--- a/ground/openpilotgcs/src/plugins/uavobjectwidgetutils/configtaskwidget.h
+++ b/ground/openpilotgcs/src/plugins/uavobjectwidgetutils/configtaskwidget.h
@@ -46,6 +46,7 @@
#include "uavobjectwidgetutils_global.h"
#include
#include
+#include
class UAVOBJECTWIDGETUTILS_EXPORT ConfigTaskWidget: public QWidget
{
@@ -85,6 +86,9 @@ public:
ConfigTaskWidget(QWidget *parent = 0);
~ConfigTaskWidget();
+ void disbleMouseWheelEvents();
+ bool eventFilter( QObject * obj, QEvent * evt );
+
void saveObjectToSD(UAVObject *obj);
UAVObjectManager* getObjectManager();
static double listMean(QList list);
diff --git a/ground/openpilotgcs/src/plugins/uavsettingsimportexport/importsummary.cpp b/ground/openpilotgcs/src/plugins/uavsettingsimportexport/importsummary.cpp
index a7bf6f367..eb45634ff 100644
--- a/ground/openpilotgcs/src/plugins/uavsettingsimportexport/importsummary.cpp
+++ b/ground/openpilotgcs/src/plugins/uavsettingsimportexport/importsummary.cpp
@@ -71,18 +71,23 @@ void ImportSummaryDialog::addLine(QString uavObjectName, QString text, bool stat
{
ui->importSummaryList->setRowCount(ui->importSummaryList->rowCount()+1);
int row = ui->importSummaryList->rowCount()-1;
- ui->progressBar->setMaximum(row);
ui->importSummaryList->setCellWidget(row,0,new QCheckBox(ui->importSummaryList));
QTableWidgetItem *objName = new QTableWidgetItem(uavObjectName);
ui->importSummaryList->setItem(row, 1, objName);
QCheckBox *box = dynamic_cast(ui->importSummaryList->cellWidget(row,0));
ui->importSummaryList->setItem(row,2,new QTableWidgetItem(text));
+
+ //Disable editability and selectability in table elements
+ ui->importSummaryList->item(row,1)->setFlags(!Qt::ItemIsEditable);
+ ui->importSummaryList->item(row,2)->setFlags(!Qt::ItemIsEditable);
+
if (status) {
box->setChecked(true);
} else {
box->setChecked(false);
box->setEnabled(false);
}
+
this->repaint();
this->showEvent(NULL);
}
@@ -92,11 +97,22 @@ void ImportSummaryDialog::addLine(QString uavObjectName, QString text, bool stat
*/
void ImportSummaryDialog::doTheSaving()
{
+ int itemCount=0;
ExtensionSystem::PluginManager *pm = ExtensionSystem::PluginManager::instance();
UAVObjectManager *objManager = pm->getObject();
UAVObjectUtilManager *utilManager = pm->getObject();
connect(utilManager, SIGNAL(saveCompleted(int,bool)), this, SLOT(updateSaveCompletion()));
+ for(int i=0; i < ui->importSummaryList->rowCount(); i++) {
+ QCheckBox *box = dynamic_cast(ui->importSummaryList->cellWidget(i,0));
+ if (box->isChecked()) {
+ ++itemCount;
+ }
+ }
+ if(itemCount==0)
+ return;
+ ui->progressBar->setMaximum(itemCount+1);
+ ui->progressBar->setValue(1);
for(int i=0; i < ui->importSummaryList->rowCount(); i++) {
QString uavObjectName = ui->importSummaryList->item(i,1)->text();
QCheckBox *box = dynamic_cast(ui->importSummaryList->cellWidget(i,0));
@@ -106,12 +122,21 @@ void ImportSummaryDialog::doTheSaving()
this->repaint();
}
}
+
+ ui->saveToFlash->setEnabled(false);
+ ui->closeButton->setEnabled(false);
+
}
void ImportSummaryDialog::updateSaveCompletion()
{
ui->progressBar->setValue(ui->progressBar->value()+1);
+ if(ui->progressBar->value()==ui->progressBar->maximum())
+ {
+ ui->saveToFlash->setEnabled(true);
+ ui->closeButton->setEnabled(true);
+ }
}
void ImportSummaryDialog::changeEvent(QEvent *e)
diff --git a/ground/openpilotgcs/src/plugins/uavsettingsimportexport/uavsettingsimportexportfactory.cpp b/ground/openpilotgcs/src/plugins/uavsettingsimportexport/uavsettingsimportexportfactory.cpp
index 3552ad752..9c0088efa 100644
--- a/ground/openpilotgcs/src/plugins/uavsettingsimportexport/uavsettingsimportexportfactory.cpp
+++ b/ground/openpilotgcs/src/plugins/uavsettingsimportexport/uavsettingsimportexportfactory.cpp
@@ -79,14 +79,14 @@ UAVSettingsImportExportFactory::UAVSettingsImportExportFactory(QObject *parent):
ac->addAction(cmd, Core::Constants::G_FILE_SAVE);
connect(cmd->action(), SIGNAL(triggered(bool)), this, SLOT(importUAVSettings()));
+ ac = am->actionContainer(Core::Constants::M_HELP);
cmd = am->registerAction(new QAction(this),
"UAVSettingsImportExportPlugin.UAVDataExport",
QList() <<
Core::Constants::C_GLOBAL_ID);
cmd->action()->setText(tr("Export UAV Data..."));
- ac->addAction(cmd, Core::Constants::G_FILE_SAVE);
+ ac->addAction(cmd, Core::Constants::G_HELP_HELP);
connect(cmd->action(), SIGNAL(triggered(bool)), this, SLOT(exportUAVData()));
-
}
// Slot called by the menu manager on user action
diff --git a/ground/openpilotgcs/src/plugins/uploader/devicewidget.cpp b/ground/openpilotgcs/src/plugins/uploader/devicewidget.cpp
index 38bf2aefc..39c7618c5 100644
--- a/ground/openpilotgcs/src/plugins/uploader/devicewidget.cpp
+++ b/ground/openpilotgcs/src/plugins/uploader/devicewidget.cpp
@@ -516,22 +516,47 @@ void deviceWidget::setProgress(int percent)
}
/**
-
-Opens an open file dialog.
-
-*/
+ *Opens an open file dialog.
+ */
QString deviceWidget::setOpenFileName()
{
QFileDialog::Options options;
QString selectedFilter;
+ QString fwDirectoryStr;
+ QDir fwDirectory;
+
+ //Format filename for file chooser
+#ifdef Q_OS_WIN
+ fwDirectoryStr=QCoreApplication::applicationDirPath();
+ fwDirectory=QDir(fwDirectoryStr);
+ fwDirectory.cdUp();
+ fwDirectory.cd("firmware");
+ fwDirectoryStr=fwDirectory.absolutePath();
+#elif defined Q_OS_LINUX
+ fwDirectoryStr=QCoreApplication::applicationDirPath();
+ fwDirectory=QDir(fwDirectoryStr);
+ fwDirectory.cd("../../..");
+ fwDirectoryStr=fwDirectory.absolutePath();
+ fwDirectoryStr=fwDirectoryStr+"/fw_"+myDevice->lblBrdName->text().toLower()+"/fw_"+myDevice->lblBrdName->text().toLower()+".opfw";
+#elif defined Q_OS_MAC
+ fwDirectoryStr=QCoreApplication::applicationDirPath();
+ fwDirectory=QDir(fwDirectoryStr);
+ fwDirectory.cd("../../../../../..");
+ fwDirectoryStr=fwDirectory.absolutePath();
+ fwDirectoryStr=fwDirectoryStr+"/fw_"+myDevice->lblBrdName->text().toLower()+"/fw_"+myDevice->lblBrdName->text().toLower()+".opfw";
+#endif
QString fileName = QFileDialog::getOpenFileName(this,
tr("Select firmware file"),
- "",
+ fwDirectoryStr,
tr("Firmware Files (*.opfw *.bin)"),
&selectedFilter,
options);
return fileName;
}
+
+/**
+ *Set the save file name
+ */
QString deviceWidget::setSaveFileName()
{
QFileDialog::Options options;
diff --git a/ground/openpilotgcs/src/plugins/uploader/devicewidget.h b/ground/openpilotgcs/src/plugins/uploader/devicewidget.h
index 3530c3d6a..cf011f066 100644
--- a/ground/openpilotgcs/src/plugins/uploader/devicewidget.h
+++ b/ground/openpilotgcs/src/plugins/uploader/devicewidget.h
@@ -40,6 +40,8 @@
#include
#include "uavobjectutilmanager.h"
#include "devicedescriptorstruct.h"
+#include
+#include
using namespace OP_DFU;
class deviceWidget : public QWidget
{