1
0
mirror of https://bitbucket.org/librepilot/librepilot.git synced 2024-12-01 09:24:10 +01:00

Merge branch 'thread/15.02-RC1_fixes' of ssh://git.openpilot.org/OpenPilot into thread/15.02-RC1_fixes

This commit is contained in:
Laurent Lalanne 2015-02-28 14:16:49 +01:00
commit 190590e1a1
10 changed files with 1830 additions and 1552 deletions

View File

Before

Width:  |  Height:  |  Size: 114 KiB

After

Width:  |  Height:  |  Size: 114 KiB

View File

@ -1610,7 +1610,12 @@ p, li { white-space: pre-wrap; }
</style></head><body style=" font-family:'Ubuntu'; font-size:11pt; font-weight:400; font-style:normal;">
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Sans'; font-size:10pt;">Beware! Check </span><span style=" font-family:'Sans'; font-size:10pt; font-weight:600;">all three</span><span style=" font-family:'Sans'; font-size:10pt;"> checkboxes to test Feed Forward.</span></p>
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:&apos;Sans&apos;; font-size:10pt;&quot;&gt;It will run only if your airframe armed.&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
<translation type="unfinished"></translation>
<translation>&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0//EN&quot; &quot;http://www.w3.org/TR/REC-html40/strict.dtd&quot;&gt;
&lt;html&gt;&lt;head&gt;&lt;meta name=&quot;qrichtext&quot; content=&quot;1&quot; /&gt;&lt;style type=&quot;text/css&quot;&gt;
p, li { white-space: pre-wrap; }
&lt;/style&gt;&lt;/head&gt;&lt;body style=&quot; font-family:&apos;Ubuntu&apos;; font-size:11pt; font-weight:400; font-style:normal;&quot;&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:&apos;Sans&apos;; font-size:10pt;&quot;&gt;&lt;/span&gt;&lt;span style=&quot; font-family:&apos;Sans&apos;; font-size:10pt; font-weight:600;&quot;&gt;&lt;/span&gt;&lt;span style=&quot; font-family:&apos;Sans&apos;; font-size:10pt;&quot;&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:&apos;Sans&apos;; font-size:10pt;&quot;&gt;&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</translation>
</message>
<message>
<location/>
@ -1672,7 +1677,7 @@ p, li { white-space: pre-wrap; }
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:&apos;Lucida Grande&apos;; font-size:13pt;&quot;&gt;Beware: Feed Forward Tuning will launch all engines around mid-throttle, you have been warned!&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:&apos;Lucida Grande&apos;; font-size:13pt;&quot;&gt;Remove your props initially, and for fine-tuning, make sure your airframe is safely held in place. Wear glasses and protect your face and body.&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/body&gt;&lt;/html&gt;</source>
<translation type="unfinished">&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0//EN&quot; &quot;http://www.w3.org/TR/REC-html40/strict.dtd&quot;&gt;
<translation>&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0//EN&quot; &quot;http://www.w3.org/TR/REC-html40/strict.dtd&quot;&gt;
&lt;html&gt;&lt;head&gt;&lt;meta name=&quot;qrichtext&quot; content=&quot;1&quot; /&gt;&lt;style type=&quot;text/css&quot;&gt;
p, li { white-space: pre-wrap; }
&lt;/style&gt;&lt;/head&gt;&lt;body style=&quot; font-family:&apos;Ubuntu&apos;; font-size:11pt; font-weight:400; font-style:normal;&quot;&gt;
@ -2030,7 +2035,7 @@ p, li { white-space: pre-wrap; }
<message>
<location/>
<source>Telemetry</source>
<translation type="unfinished"></translation>
<translation></translation>
</message>
</context>
<context>
@ -2525,12 +2530,12 @@ p, li { white-space: pre-wrap; }
<message>
<location filename="../../../src/plugins/ipconnection/ipconnectionoptionspage.h" line="+57"/>
<source>settings</source>
<translation></translation>
<translation></translation>
</message>
<message>
<location filename="../../../src/plugins/ipconnection/ipconnectionoptionspage.ui"/>
<source>IP Network Telemetry</source>
<translation type="unfinished"></translation>
<translation></translation>
</message>
</context>
<context>
@ -5402,7 +5407,7 @@ The same value is used for all axes.</source>
<message>
<location/>
<source>Messages</source>
<translation></translation>
<translation></translation>
</message>
<message>
<location/>
@ -5412,7 +5417,7 @@ The same value is used for all axes.</source>
<message>
<location/>
<source>Telemetry speed:</source>
<translation></translation>
<translation>Telemetry波特</translation>
</message>
<message>
<location/>
@ -5437,7 +5442,7 @@ The same value is used for all axes.</source>
<message>
<location/>
<source>USB VCP Port</source>
<translation></translation>
<translation>USB VCP端口</translation>
</message>
<message>
<source>RcvrPort</source>
@ -5575,7 +5580,8 @@ A setting of 0.00 disables the filter.</source>
0.000.200.050.10
0.000.200.050.10
0.00</translation>
</message>
@ -5916,7 +5922,7 @@ p, li { white-space: pre-wrap; }
&lt;/style&gt;&lt;/head&gt;&lt;body style=&quot; font-family:&apos;MS Shell Dlg 2&apos;; font-size:8.25pt; font-weight:400; font-style:normal;&quot;&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:&apos;Ubuntu&apos;; font-size:11pt; font-weight:600;&quot;&gt;姿&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:&apos;Ubuntu&apos;; font-size:11pt; font-weight:600;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:&apos;Ubuntu&apos;; font-size:11pt;&quot;&gt;OpenPilot设备GCS连接后开始进行校准&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:&apos;Ubuntu&apos;; font-size:11pt;&quot;&gt;OpenPilot设备USB端口或telemetry与GCS连接后开始进行校准&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:&apos;Ubuntu&apos;; font-size:11pt;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</translation>
</message>
</context>
@ -5943,7 +5949,7 @@ p, li { white-space: pre-wrap; }
&lt;/style&gt;&lt;/head&gt;&lt;body style=&quot; font-family:&apos;MS Shell Dlg 2&apos;; font-size:8.25pt; font-weight:400; font-style:normal;&quot;&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:&apos;Ubuntu&apos;; font-size:11pt; font-weight:600;&quot;&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:&apos;Ubuntu&apos;; font-size:11pt; font-weight:600;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:&apos;Ubuntu&apos;; font-size:11pt;&quot;&gt;OpenPilot设备GCS连接&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:&apos;Ubuntu&apos;; font-size:11pt;&quot;&gt;OpenPilot设备USB端口或Telemetry与GCS连接&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:&apos;Ubuntu&apos;; font-size:11pt;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</translation>
</message>
</context>
@ -6096,7 +6102,7 @@ channel value for each flight mode.</source>
<source>After the time indicated here, the frame go back to disarmed state.
Set to 0 to disable (recommended for soaring fixed wings).</source>
<translation>
00</translation>
00</translation>
</message>
<message>
<location/>
@ -6577,7 +6583,7 @@ When using OneShot125 all values set in min/max and idle are divided by eight be
<message>
<location/>
<source>GroupBox</source>
<translation></translation>
<translation></translation>
</message>
<message>
<location/>
@ -8746,22 +8752,22 @@ only when system is armed without disabling the module.</source>
<message>
<location filename="../../../src/plugins/serialconnection/serialpluginoptions.ui"/>
<source>Form</source>
<translation type="unfinished"></translation>
<translation></translation>
</message>
<message>
<location/>
<source>Serial Connection</source>
<translation type="unfinished"></translation>
<translation></translation>
</message>
<message>
<location/>
<source>Serial telemetry speed:</source>
<translation type="unfinished"></translation>
<translation>telemetry波特率</translation>
</message>
<message>
<location filename="../../../src/plugins/serialconnection/serialpluginoptionspage.h" line="+61"/>
<source>settings</source>
<translation type="unfinished"></translation>
<translation></translation>
</message>
</context>
<context>
@ -9347,7 +9353,7 @@ p, li { white-space: pre-wrap; }
&lt;/style&gt;&lt;/head&gt;&lt;body style=&quot; font-family:&apos;Cantarell&apos;; font-size:11pt; font-weight:400; font-style:normal;&quot;&gt;
&lt;p align=&quot;center&quot; style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:&apos;MS Shell Dlg 2&apos;; font-size:12pt; font-weight:600;&quot;&gt;OpenPilot设置保存&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:&apos;MS Shell Dlg 2&apos;; font-size:10pt;&quot;&gt;OpenPilot设备中 &lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:&apos;MS Shell Dlg 2&apos;; font-size:10pt;&quot;&gt;OpenPilot设备可能会重启以激活某些设置项&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:&apos;MS Shell Dlg 2&apos;; font-size:10pt;&quot;&gt;OpenPilot设备可能会重启以激活设置项&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:&apos;MS Shell Dlg 2&apos;; font-size:10pt;&quot;&gt;Save&lt;/span&gt;&lt;/p&gt;
&lt;/body&gt;&lt;/html&gt;</translation>
</message>
@ -9806,7 +9812,7 @@ to bootloader mode.
(Only enabled if telemetry link is established, either
through serial or USB)</source>
<translation>bootloader模式PC的BIOS
(USB成功连接)</translation>
(Telemetry成功连接)</translation>
</message>
<message>
<location/>
@ -9824,7 +9830,7 @@ menu on the right.</source>
<translation>
bootloader模式绿LED常亮LED慢速闪烁
Telemetry连接尚未建立
</translation>
</message>
<message>
@ -9843,7 +9849,7 @@ menu on the right.</source>
<translation>使
LED慢速闪烁LED不亮
</translation>
Telemetry连接尚未建立</translation>
</message>
<message>
<location/>
@ -9856,7 +9862,7 @@ menu on the right.</source>
(Only enabled if telemetry link is established, either
through serial or USB)</source>
<translation>
USB连接成功后才能发送该命令</translation>
Telemetry连接成功后才能使用此命令</translation>
</message>
<message>
<location/>
@ -9885,7 +9891,7 @@ method using this combo box.
You can use this to force a communication channel when doing
a &quot;Boot&quot; (button on the left). It is updated automatically when
halting a running board.</source>
<translation>
<translation>Telemetry连接尚未建立
</translation>
@ -9984,8 +9990,8 @@ p, li { white-space: pre-wrap; }
&lt;/style&gt;&lt;/head&gt;&lt;body style=&quot; font-family:&apos;Ubuntu&apos;; font-size:11pt; font-weight:400; font-style:normal;&quot;&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;/p&gt;
&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;- &lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;- &amp;quot;&amp;quot;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;- Telemetry&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;- &amp;quot;&amp;quot;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;- &lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;- &lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;- &amp;quot;&amp;quot;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</translation>
@ -10125,27 +10131,27 @@ p, li { white-space: pre-wrap; }
<message>
<location filename="../../../src/plugins/config/config_cc_hw_widget.cpp" line="+91"/>
<source>Enable GPS module and reboot the board to be able to select GPS protocol</source>
<translation type="unfinished"></translation>
<translation>GPS协议</translation>
</message>
<message>
<location line="+32"/>
<source>Warning: you have configured more than one DebugConsole, this currently is not supported</source>
<translation type="unfinished"></translation>
<translation>DebugConsole</translation>
</message>
<message>
<location line="+6"/>
<source>Warning: you have configured both MainPort and FlexiPort for the same function, this currently is not supported</source>
<translation type="unfinished"></translation>
<translation>MainPort和FlexiPort不能同时配置为相同功能接口</translation>
</message>
<message>
<location line="+3"/>
<source>Warning: you have configured both USB HID Port and USB VCP Port for the same function, this currently is not supported</source>
<translation type="unfinished"></translation>
<translation>USB HID端口和VCP端口不能同时配置为相同功能接口</translation>
</message>
<message>
<location line="+3"/>
<source>Warning: you have disabled USB Telemetry on both USB HID Port and USB VCP Port, this currently is not supported</source>
<translation type="unfinished"></translation>
<translation>USBTelemetry功能从USB HID和VCP端口上同时关闭</translation>
</message>
<message>
<location line="+15"/>
@ -14875,7 +14881,7 @@ Note: for the OpenPilot v8 GPS please select the U-Blox option.</source>
<message>
<location filename="../../../src/plugins/telemetry/monitorgadgetfactory.cpp" line="+39"/>
<source>Telemetry Monitor</source>
<translation type="unfinished"></translation>
<translation type="unfinished">Telemetry</translation>
</message>
</context>
<context>
@ -15273,4 +15279,78 @@ Note: for the OpenPilot v8 GPS please select the U-Blox option.</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>InputWizardWidget</name>
<message>
<source>Welcome to the inputs configuration wizard.
Please follow the instructions on the screen and only move your controls when asked to.
Make sure you already configured your hardware settings on the proper tab and restarted your board.
You can press &apos;back&apos; at any time to return to the previous screen or press &apos;Cancel&apos; to quit the wizard.
</source>
<translation type="obsolete">使
退
</translation>
</message>
<message>
<source>Please choose your transmitter type:</source>
<translation type="obsolete"></translation>
</message>
<message>
<source>Acro: normal transmitter for fixed-wing or quad</source>
<translation type="obsolete">Acro</translation>
</message>
<message>
<source>Helicopter: has collective pitch and throttle input</source>
<translation type="obsolete">Helicopter</translation>
</message>
<message>
<source>Please choose your transmitter mode:</source>
<translation type="obsolete"></translation>
</message>
<message>
<source>For a Quad: Elevator is Pitch, Ailerons are Roll, and Rudder is Yaw.</source>
<translation type="obsolete"></translation>
</message>
<message>
<source>Please center all controls and trims and press Next when ready.
If your FlightMode switch has only two positions, leave it in either position.</source>
<translation type="obsolete">
</translation>
</message>
<message>
<source>Please move all controls to their maximum extents on both directions.
Press Next when ready.</source>
<translation type="obsolete">
</translation>
</message>
<message>
<source>Please check the picture below and correct all the sticks which show an inverted movement. Press Next when ready.</source>
<translation type="obsolete"></translation>
</message>
<message>
<source>You have completed this wizard, please check below if the picture mimics your sticks movement.
IMPORTANT: These new settings have not been saved to the board yet. After pressing Next you will go to the Arming Settings tab where you can set your desired arming sequence and save the configuration.</source>
<translation type="obsolete">
</translation>
</message>
<message>
<source>Back</source>
<translation type="obsolete"></translation>
</message>
<message>
<source>Cancel</source>
<translation type="obsolete"></translation>
</message>
</context>
</TS>

View File

@ -7,7 +7,7 @@
<x>0</x>
<y>0</y>
<width>850</width>
<height>572</height>
<height>694</height>
</rect>
</property>
<property name="sizePolicy">
@ -29,7 +29,16 @@
<bool>false</bool>
</property>
<layout class="QGridLayout" name="gridLayout_17">
<property name="margin">
<property name="leftMargin">
<number>0</number>
</property>
<property name="topMargin">
<number>0</number>
</property>
<property name="rightMargin">
<number>0</number>
</property>
<property name="bottomMargin">
<number>0</number>
</property>
<item row="0" column="0">
@ -92,7 +101,7 @@
<string notr="true">#SwashplateBox,#SwashplateBox_2,#SwashplateBox_3,#SwashplateBox_4,#ccpmSwashImageBox,#SwashLvlInstructionsBox,#SwashLvlccpmSwashImageBox,#SwashLvlccpmSliderBox,#SwashLvlStatusBox,#ThrottleCurveBox,#PitchCurveBox{
background-color: qlineargradient(spread:pad, x1:0.507, y1:0.869318, x2:0.507, y2:0.0965909, stop:0 rgba(243, 243, 243, 255), stop:1 rgba(250, 250, 250, 255));
border: 1px outset #999;
border-radius: 3;
border-radius: 6;
font:bold;
}
@ -100,16 +109,14 @@ QGroupBox::title {
subcontrol-origin: margin;
subcontrol-position: top center; /* position at the top center */
padding: 0 3px;
background-color: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1,
stop: 0 #FFOECE, stop: 1 #FFFFFF);
top: 5px;
top: 5px;
}</string>
</property>
<property name="tabShape">
<enum>QTabWidget::Rounded</enum>
</property>
<property name="currentIndex">
<number>0</number>
<number>1</number>
</property>
<property name="documentMode">
<bool>false</bool>
@ -119,42 +126,969 @@ QGroupBox::title {
<string>Basic settings</string>
</attribute>
<layout class="QGridLayout" name="gridLayout_6">
<property name="margin">
<property name="leftMargin">
<number>9</number>
</property>
<property name="topMargin">
<number>9</number>
</property>
<property name="rightMargin">
<number>9</number>
</property>
<property name="bottomMargin">
<number>9</number>
</property>
<property name="spacing">
<number>6</number>
</property>
<item row="0" column="0">
<layout class="QVBoxLayout" name="ccpmSettingsBox" stretch="0,1,1,0,0">
<item row="0" column="4">
<widget class="QGroupBox" name="ccpmSwashImageBox">
<property name="sizePolicy">
<sizepolicy hsizetype="MinimumExpanding" vsizetype="MinimumExpanding">
<horstretch>1</horstretch>
<verstretch>1</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>200</width>
<height>200</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>16777215</width>
<height>16777215</height>
</size>
</property>
<property name="sizeIncrement">
<size>
<width>10</width>
<height>10</height>
</size>
</property>
<property name="baseSize">
<size>
<width>200</width>
<height>200</height>
</size>
</property>
<property name="font">
<font>
<weight>75</weight>
<italic>false</italic>
<bold>true</bold>
</font>
</property>
<property name="title">
<string>Swashplate Layout</string>
</property>
<property name="alignment">
<set>Qt::AlignHCenter|Qt::AlignTop</set>
</property>
<property name="flat">
<bool>false</bool>
</property>
<property name="checkable">
<bool>false</bool>
</property>
<layout class="QGridLayout" name="gridLayout_10">
<property name="leftMargin">
<number>6</number>
</property>
<property name="topMargin">
<number>30</number>
</property>
<property name="rightMargin">
<number>6</number>
</property>
<property name="bottomMargin">
<number>6</number>
</property>
<property name="horizontalSpacing">
<number>6</number>
</property>
<item row="0" column="0">
<widget class="QSplitter" name="splitter_3">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<widget class="QGraphicsView" name="SwashplateImage">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Preferred">
<horstretch>1</horstretch>
<verstretch>1</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>100</width>
<height>100</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>1000</width>
<height>1000</height>
</size>
</property>
<property name="sizeIncrement">
<size>
<width>10</width>
<height>10</height>
</size>
</property>
<property name="baseSize">
<size>
<width>200</width>
<height>200</height>
</size>
</property>
<property name="frameShape">
<enum>QFrame::Box</enum>
</property>
<property name="frameShadow">
<enum>QFrame::Plain</enum>
</property>
<property name="lineWidth">
<number>1</number>
</property>
<property name="verticalScrollBarPolicy">
<enum>Qt::ScrollBarAlwaysOff</enum>
</property>
<property name="horizontalScrollBarPolicy">
<enum>Qt::ScrollBarAlwaysOff</enum>
</property>
<property name="backgroundBrush">
<brush brushstyle="DiagCrossPattern">
<color alpha="50">
<red>112</red>
<green>184</green>
<blue>138</blue>
</color>
</brush>
</property>
<property name="foregroundBrush">
<brush brushstyle="SolidPattern">
<color alpha="0">
<red>127</red>
<green>127</green>
<blue>127</blue>
</color>
</brush>
</property>
<property name="sceneRect">
<rectf>
<x>0.000000000000000</x>
<y>0.000000000000000</y>
<width>400.000000000000000</width>
<height>400.000000000000000</height>
</rectf>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
<property name="resizeAnchor">
<enum>QGraphicsView::AnchorViewCenter</enum>
</property>
</widget>
</widget>
</item>
</layout>
</widget>
</item>
<item row="0" column="3">
<layout class="QHBoxLayout" name="horizontalLayout_10">
<property name="sizeConstraint">
<enum>QLayout::SetMaximumSize</enum>
</property>
<property name="rightMargin">
<number>3</number>
</property>
<property name="bottomMargin">
<number>3</number>
</property>
<item>
<widget class="QGroupBox" name="SwashplateBox_2">
<widget class="QGroupBox" name="ccpmRevoMixingBox">
<property name="enabled">
<bool>true</bool>
</property>
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Maximum">
<sizepolicy hsizetype="Fixed" vsizetype="MinimumExpanding">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>70</width>
<height>100</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>190</width>
<width>16777215</width>
<height>16777215</height>
</size>
</property>
<property name="font">
<font>
<pointsize>9</pointsize>
<weight>75</weight>
<bold>true</bold>
</font>
</property>
<property name="styleSheet">
<string notr="true">QGroupBox::title {
background-color: qlineargradient(spread:reflect, x1:0.507, y1:0, x2:0.507, y2:0.772, stop:0.208955 rgba(74, 74, 74, 255), stop:0.78607 rgba(36, 36, 36, 255));
color: rgb(255, 255, 255);
border-radius: 5;
margin:1px;
}</string>
</property>
<property name="title">
<string>REVO</string>
</property>
<layout class="QVBoxLayout" name="verticalLayout_3">
<property name="spacing">
<number>3</number>
</property>
<property name="leftMargin">
<number>3</number>
</property>
<property name="topMargin">
<number>10</number>
</property>
<property name="rightMargin">
<number>3</number>
</property>
<property name="bottomMargin">
<number>3</number>
</property>
<item>
<widget class="QLabel" name="label_14">
<property name="enabled">
<bool>false</bool>
</property>
<property name="font">
<font>
<pointsize>7</pointsize>
</font>
</property>
<property name="text">
<string>100%</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
</widget>
</item>
<item>
<layout class="QHBoxLayout" name="horizontalLayout_2">
<item>
<widget class="QSlider" name="ccpmRevoSlider">
<property name="enabled">
<bool>true</bool>
</property>
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Expanding">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>0</width>
<height>100</height>
</size>
</property>
<property name="maximum">
<number>100</number>
</property>
<property name="singleStep">
<number>5</number>
</property>
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
</widget>
</item>
</layout>
</item>
<item>
<widget class="QLabel" name="label_13">
<property name="enabled">
<bool>false</bool>
</property>
<property name="font">
<font>
<pointsize>7</pointsize>
</font>
</property>
<property name="text">
<string>0%</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
</widget>
</item>
<item>
<widget class="QSpinBox" name="ccpmREVOspinBox"/>
</item>
</layout>
</widget>
</item>
<item>
<widget class="QGroupBox" name="ccpmPitchMixingBox">
<property name="enabled">
<bool>true</bool>
</property>
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="MinimumExpanding">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>70</width>
<height>100</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>16777215</width>
<height>16777215</height>
</size>
</property>
<property name="font">
<font>
<pointsize>9</pointsize>
<weight>75</weight>
<bold>true</bold>
</font>
</property>
<property name="styleSheet">
<string notr="true">QGroupBox::title {
background-color: qlineargradient(spread:reflect, x1:0.507, y1:0, x2:0.507, y2:0.772, stop:0.208955 rgba(74, 74, 74, 255), stop:0.78607 rgba(36, 36, 36, 255));
color: rgb(255, 255, 255);
border-radius: 5;
margin:1px;
}</string>
</property>
<property name="title">
<string>CCPM</string>
</property>
<property name="alignment">
<set>Qt::AlignBottom|Qt::AlignHCenter</set>
</property>
<layout class="QVBoxLayout" name="verticalLayout_4">
<property name="spacing">
<number>3</number>
</property>
<property name="leftMargin">
<number>3</number>
</property>
<property name="topMargin">
<number>10</number>
</property>
<property name="rightMargin">
<number>3</number>
</property>
<property name="bottomMargin">
<number>3</number>
</property>
<item>
<widget class="QLabel" name="label_15">
<property name="enabled">
<bool>true</bool>
</property>
<property name="font">
<font>
<pointsize>7</pointsize>
</font>
</property>
<property name="text">
<string>Collective</string>
</property>
<property name="scaledContents">
<bool>true</bool>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
</widget>
</item>
<item>
<layout class="QHBoxLayout" name="horizontalLayout">
<item>
<widget class="QSlider" name="ccpmCollectiveSlider">
<property name="enabled">
<bool>true</bool>
</property>
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Expanding">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>0</width>
<height>100</height>
</size>
</property>
<property name="maximum">
<number>100</number>
</property>
<property name="singleStep">
<number>5</number>
</property>
<property name="value">
<number>50</number>
</property>
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
</widget>
</item>
</layout>
</item>
<item>
<widget class="QLabel" name="label_16">
<property name="enabled">
<bool>true</bool>
</property>
<property name="font">
<font>
<pointsize>7</pointsize>
</font>
</property>
<property name="text">
<string>Cyclic</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
</widget>
</item>
<item>
<widget class="QSpinBox" name="ccpmCollectivespinBox">
<property name="maximum">
<number>100</number>
</property>
<property name="singleStep">
<number>5</number>
</property>
<property name="value">
<number>50</number>
</property>
</widget>
</item>
</layout>
</widget>
</item>
<item>
<widget class="QGroupBox" name="ccpmCollectiveScalingBox">
<property name="enabled">
<bool>true</bool>
</property>
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="MinimumExpanding">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>70</width>
<height>100</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>16777215</width>
<height>16777215</height>
</size>
</property>
<property name="font">
<font>
<pointsize>9</pointsize>
<weight>75</weight>
<bold>true</bold>
</font>
</property>
<property name="styleSheet">
<string notr="true">QGroupBox::title {
background-color: qlineargradient(spread:reflect, x1:0.507, y1:0, x2:0.507, y2:0.772, stop:0.208955 rgba(74, 74, 74, 255), stop:0.78607 rgba(36, 36, 36, 255));
color: rgb(255, 255, 255);
border-radius: 5;
margin:1px;
}</string>
</property>
<property name="title">
<string>Collective</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
<layout class="QVBoxLayout" name="verticalLayout_12">
<property name="spacing">
<number>3</number>
</property>
<property name="leftMargin">
<number>3</number>
</property>
<property name="topMargin">
<number>20</number>
</property>
<property name="rightMargin">
<number>3</number>
</property>
<property name="bottomMargin">
<number>3</number>
</property>
<item>
<layout class="QHBoxLayout" name="horizontalLayout_11">
<item>
<widget class="QSlider" name="ccpmCollectiveScale">
<property name="enabled">
<bool>true</bool>
</property>
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Expanding">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>0</width>
<height>100</height>
</size>
</property>
<property name="maximum">
<number>100</number>
</property>
<property name="singleStep">
<number>5</number>
</property>
<property name="value">
<number>50</number>
</property>
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
</widget>
</item>
</layout>
</item>
<item>
<widget class="QSpinBox" name="ccpmCollectiveScaleBox">
<property name="maximum">
<number>100</number>
</property>
<property name="singleStep">
<number>5</number>
</property>
<property name="value">
<number>50</number>
</property>
</widget>
</item>
</layout>
</widget>
</item>
<item>
<widget class="QGroupBox" name="ccpmCyclicScalingBox">
<property name="enabled">
<bool>true</bool>
</property>
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="MinimumExpanding">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>70</width>
<height>100</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>16777215</width>
<height>16777215</height>
</size>
</property>
<property name="font">
<font>
<pointsize>9</pointsize>
<weight>75</weight>
<bold>true</bold>
</font>
</property>
<property name="styleSheet">
<string notr="true">QGroupBox::title {
background-color: qlineargradient(spread:reflect, x1:0.507, y1:0, x2:0.507, y2:0.772, stop:0.208955 rgba(74, 74, 74, 255), stop:0.78607 rgba(36, 36, 36, 255));
color: rgb(255, 255, 255);
border-radius: 5;
margin:1px;
}</string>
</property>
<property name="title">
<string>Cyclic</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
<property name="checkable">
<bool>false</bool>
</property>
<layout class="QVBoxLayout" name="verticalLayout_7">
<property name="spacing">
<number>3</number>
</property>
<property name="leftMargin">
<number>3</number>
</property>
<property name="topMargin">
<number>20</number>
</property>
<property name="rightMargin">
<number>3</number>
</property>
<property name="bottomMargin">
<number>3</number>
</property>
<item>
<layout class="QHBoxLayout" name="horizontalLayout_7">
<item>
<widget class="QSlider" name="ccpmCyclicScale">
<property name="enabled">
<bool>true</bool>
</property>
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Expanding">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>0</width>
<height>100</height>
</size>
</property>
<property name="maximum">
<number>100</number>
</property>
<property name="singleStep">
<number>5</number>
</property>
<property name="value">
<number>50</number>
</property>
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
</widget>
</item>
</layout>
</item>
<item>
<widget class="QSpinBox" name="ccpmCyclicScaleBox">
<property name="maximum">
<number>100</number>
</property>
<property name="singleStep">
<number>5</number>
</property>
<property name="value">
<number>50</number>
</property>
</widget>
</item>
</layout>
</widget>
</item>
<item>
<widget class="QGroupBox" name="ccpmPitchScalingBox">
<property name="enabled">
<bool>true</bool>
</property>
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="MinimumExpanding">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>70</width>
<height>100</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>16777215</width>
<height>16777215</height>
</size>
</property>
<property name="font">
<font>
<pointsize>9</pointsize>
<weight>75</weight>
<bold>true</bold>
</font>
</property>
<property name="styleSheet">
<string notr="true">QGroupBox::title {
background-color: qlineargradient(spread:reflect, x1:0.507, y1:0, x2:0.507, y2:0.772, stop:0.208955 rgba(74, 74, 74, 255), stop:0.78607 rgba(36, 36, 36, 255));
color: rgb(255, 255, 255);
border-radius: 5;
margin:1px;
}</string>
</property>
<property name="title">
<string>Pitch</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
<layout class="QVBoxLayout" name="verticalLayout_13">
<property name="spacing">
<number>3</number>
</property>
<property name="leftMargin">
<number>3</number>
</property>
<property name="topMargin">
<number>20</number>
</property>
<property name="rightMargin">
<number>3</number>
</property>
<property name="bottomMargin">
<number>3</number>
</property>
<item>
<layout class="QHBoxLayout" name="horizontalLayout_12">
<item>
<widget class="QSlider" name="ccpmPitchScale">
<property name="enabled">
<bool>true</bool>
</property>
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Expanding">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>0</width>
<height>100</height>
</size>
</property>
<property name="maximum">
<number>100</number>
</property>
<property name="singleStep">
<number>5</number>
</property>
<property name="value">
<number>50</number>
</property>
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
</widget>
</item>
</layout>
</item>
<item>
<widget class="QSpinBox" name="ccpmPitchScaleBox">
<property name="maximum">
<number>100</number>
</property>
<property name="singleStep">
<number>5</number>
</property>
<property name="value">
<number>50</number>
</property>
</widget>
</item>
</layout>
</widget>
</item>
<item>
<widget class="QGroupBox" name="ccpmRollScalingBox">
<property name="enabled">
<bool>true</bool>
</property>
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="MinimumExpanding">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>70</width>
<height>100</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>16777215</width>
<height>16777215</height>
</size>
</property>
<property name="font">
<font>
<pointsize>9</pointsize>
<weight>75</weight>
<bold>true</bold>
</font>
</property>
<property name="styleSheet">
<string notr="true">QGroupBox::title {
background-color: qlineargradient(spread:reflect, x1:0.507, y1:0, x2:0.507, y2:0.772, stop:0.208955 rgba(74, 74, 74, 255), stop:0.78607 rgba(36, 36, 36, 255));
color: rgb(255, 255, 255);
border-radius: 5;
margin:1px;
}</string>
</property>
<property name="title">
<string>Roll</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
<layout class="QVBoxLayout" name="verticalLayout_10">
<property name="spacing">
<number>3</number>
</property>
<property name="leftMargin">
<number>3</number>
</property>
<property name="topMargin">
<number>20</number>
</property>
<property name="rightMargin">
<number>3</number>
</property>
<property name="bottomMargin">
<number>3</number>
</property>
<item>
<layout class="QHBoxLayout" name="horizontalLayout_8">
<item>
<widget class="QSlider" name="ccpmRollScale">
<property name="enabled">
<bool>true</bool>
</property>
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Expanding">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>0</width>
<height>100</height>
</size>
</property>
<property name="maximum">
<number>100</number>
</property>
<property name="singleStep">
<number>5</number>
</property>
<property name="value">
<number>50</number>
</property>
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
</widget>
</item>
</layout>
</item>
<item>
<widget class="QSpinBox" name="ccpmRollScaleBox">
<property name="maximum">
<number>100</number>
</property>
<property name="singleStep">
<number>5</number>
</property>
<property name="value">
<number>50</number>
</property>
</widget>
</item>
</layout>
</widget>
</item>
</layout>
</item>
<item row="0" column="0">
<layout class="QVBoxLayout" name="ccpmSettingsBox" stretch="0,1,1,0">
<item>
<widget class="QGroupBox" name="SwashplateBox_2">
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="MinimumExpanding">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>200</width>
<height>0</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>16777215</width>
<height>16777215</height>
</size>
</property>
<property name="title">
<string>Motor outputs</string>
</property>
<property name="alignment">
<set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter</set>
</property>
<property name="flat">
<bool>false</bool>
</property>
<property name="checkable">
<bool>false</bool>
</property>
<layout class="QGridLayout" name="gridLayout_18">
<property name="horizontalSpacing">
<property name="leftMargin">
<number>3</number>
</property>
<property name="verticalSpacing">
<number>2</number>
<property name="topMargin">
<number>30</number>
</property>
<property name="margin">
<property name="rightMargin">
<number>3</number>
</property>
<item row="2" column="1">
<property name="bottomMargin">
<number>3</number>
</property>
<property name="spacing">
<number>3</number>
</property>
<item row="1" column="1">
<widget class="QComboBox" name="ccpmTailChannel">
<property name="sizePolicy">
<sizepolicy hsizetype="MinimumExpanding" vsizetype="Fixed">
@ -171,12 +1105,12 @@ QGroupBox::title {
<property name="maximumSize">
<size>
<width>100</width>
<height>16777215</height>
<height>25</height>
</size>
</property>
</widget>
</item>
<item row="1" column="1">
<item row="0" column="1">
<widget class="QComboBox" name="ccpmEngineChannel">
<property name="sizePolicy">
<sizepolicy hsizetype="MinimumExpanding" vsizetype="Fixed">
@ -193,12 +1127,12 @@ QGroupBox::title {
<property name="maximumSize">
<size>
<width>100</width>
<height>16777215</height>
<height>25</height>
</size>
</property>
</widget>
</item>
<item row="2" column="0">
<item row="1" column="0">
<widget class="QLabel" name="ccpmTailLabel">
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Preferred">
@ -223,7 +1157,7 @@ QGroupBox::title {
</property>
</widget>
</item>
<item row="1" column="0">
<item row="0" column="0">
<widget class="QLabel" name="ccpmEngineLabel">
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Preferred">
@ -248,36 +1182,26 @@ QGroupBox::title {
</property>
</widget>
</item>
<item row="0" column="0">
<spacer name="verticalSpacer_5">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeType">
<enum>QSizePolicy::Fixed</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
</layout>
</widget>
</item>
<item>
<widget class="QGroupBox" name="SwashplateBox">
<property name="sizePolicy">
<sizepolicy hsizetype="Maximum" vsizetype="Maximum">
<sizepolicy hsizetype="Fixed" vsizetype="MinimumExpanding">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
<verstretch>12</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>200</width>
<height>0</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>190</width>
<width>16777215</width>
<height>16777215</height>
</size>
</property>
@ -285,16 +1209,22 @@ QGroupBox::title {
<string>Swashplate outputs</string>
</property>
<layout class="QGridLayout" name="gridLayout_19">
<property name="horizontalSpacing">
<property name="leftMargin">
<number>3</number>
</property>
<property name="verticalSpacing">
<number>2</number>
<property name="topMargin">
<number>30</number>
</property>
<property name="margin">
<property name="rightMargin">
<number>3</number>
</property>
<item row="1" column="0">
<property name="bottomMargin">
<number>3</number>
</property>
<property name="spacing">
<number>3</number>
</property>
<item row="0" column="0">
<widget class="QLabel" name="ccpmServoWLabel">
<property name="enabled">
<bool>true</bool>
@ -322,7 +1252,7 @@ QGroupBox::title {
</property>
</widget>
</item>
<item row="1" column="1">
<item row="0" column="1">
<widget class="QComboBox" name="ccpmServoWChannel">
<property name="enabled">
<bool>true</bool>
@ -342,12 +1272,12 @@ QGroupBox::title {
<property name="maximumSize">
<size>
<width>100</width>
<height>16777215</height>
<height>25</height>
</size>
</property>
</widget>
</item>
<item row="2" column="1">
<item row="1" column="1">
<widget class="QComboBox" name="ccpmServoXChannel">
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
@ -364,12 +1294,12 @@ QGroupBox::title {
<property name="maximumSize">
<size>
<width>100</width>
<height>16777215</height>
<height>25</height>
</size>
</property>
</widget>
</item>
<item row="4" column="1">
<item row="3" column="1">
<widget class="QComboBox" name="ccpmServoYChannel">
<property name="enabled">
<bool>true</bool>
@ -389,12 +1319,12 @@ QGroupBox::title {
<property name="maximumSize">
<size>
<width>100</width>
<height>16777215</height>
<height>25</height>
</size>
</property>
</widget>
</item>
<item row="2" column="0">
<item row="1" column="0">
<widget class="QLabel" name="ccpmServoXLabel">
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Preferred">
@ -419,7 +1349,7 @@ QGroupBox::title {
</property>
</widget>
</item>
<item row="6" column="1">
<item row="5" column="1">
<widget class="QComboBox" name="ccpmSingleServo">
<property name="sizePolicy">
<sizepolicy hsizetype="MinimumExpanding" vsizetype="Fixed">
@ -461,7 +1391,7 @@ QGroupBox::title {
</item>
</widget>
</item>
<item row="6" column="0">
<item row="5" column="0">
<widget class="QLabel" name="ccpmServoZLabel_3">
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Preferred">
@ -486,7 +1416,7 @@ QGroupBox::title {
</property>
</widget>
</item>
<item row="5" column="1">
<item row="4" column="1">
<widget class="QComboBox" name="ccpmServoZChannel">
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
@ -503,12 +1433,12 @@ QGroupBox::title {
<property name="maximumSize">
<size>
<width>100</width>
<height>16777215</height>
<height>25</height>
</size>
</property>
</widget>
</item>
<item row="5" column="0">
<item row="4" column="0">
<widget class="QLabel" name="ccpmServoZLabel">
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Preferred">
@ -533,7 +1463,7 @@ QGroupBox::title {
</property>
</widget>
</item>
<item row="4" column="0">
<item row="3" column="0">
<widget class="QLabel" name="ccpmServoYLabel">
<property name="enabled">
<bool>true</bool>
@ -561,117 +1491,51 @@ QGroupBox::title {
</property>
</widget>
</item>
<item row="0" column="0">
<spacer name="verticalSpacer_6">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeType">
<enum>QSizePolicy::Fixed</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
</layout>
</widget>
</item>
<item>
<widget class="QGroupBox" name="SwashplateBox_3">
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Maximum">
<sizepolicy hsizetype="Fixed" vsizetype="MinimumExpanding">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>70</width>
<width>200</width>
<height>0</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>190</width>
<width>16777215</width>
<height>16777215</height>
</size>
</property>
<property name="title">
<string>Swashplate Servo Angles</string>
</property>
<property name="alignment">
<set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter</set>
</property>
<layout class="QGridLayout" name="gridLayout_20">
<property name="horizontalSpacing">
<property name="leftMargin">
<number>3</number>
</property>
<property name="verticalSpacing">
<number>2</number>
<property name="topMargin">
<number>30</number>
</property>
<property name="margin">
<property name="rightMargin">
<number>3</number>
</property>
<property name="bottomMargin">
<number>3</number>
</property>
<property name="spacing">
<number>3</number>
</property>
<item row="1" column="1">
<widget class="QDoubleSpinBox" name="ccpmAngleW">
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>85</width>
<height>0</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>85</width>
<height>16777215</height>
</size>
</property>
<property name="decimals">
<number>0</number>
</property>
<property name="maximum">
<double>360.000000000000000</double>
</property>
<property name="singleStep">
<double>15.000000000000000</double>
</property>
</widget>
</item>
<item row="1" column="0">
<widget class="QLabel" name="ccpmServoWLabel_2">
<property name="enabled">
<bool>true</bool>
</property>
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>80</width>
<height>0</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>80</width>
<height>16777215</height>
</size>
</property>
<property name="text">
<string>Angle W</string>
</property>
</widget>
</item>
<item row="2" column="0">
<widget class="QLabel" name="ccpmServoXLabel_2">
<property name="sizePolicy">
@ -798,7 +1662,7 @@ QGroupBox::title {
<property name="maximumSize">
<size>
<width>85</width>
<height>16777215</height>
<height>25</height>
</size>
</property>
<property name="decimals">
@ -832,7 +1696,7 @@ QGroupBox::title {
<property name="maximumSize">
<size>
<width>85</width>
<height>16777215</height>
<height>25</height>
</size>
</property>
<property name="decimals">
@ -863,7 +1727,7 @@ QGroupBox::title {
<property name="maximumSize">
<size>
<width>85</width>
<height>16777215</height>
<height>25</height>
</size>
</property>
<property name="decimals">
@ -894,7 +1758,7 @@ QGroupBox::title {
<property name="maximumSize">
<size>
<width>85</width>
<height>16777215</height>
<height>25</height>
</size>
</property>
<property name="decimals">
@ -908,21 +1772,64 @@ QGroupBox::title {
</property>
</widget>
</item>
<item row="0" column="0">
<spacer name="verticalSpacer_7">
<property name="orientation">
<enum>Qt::Vertical</enum>
<item row="1" column="0">
<widget class="QLabel" name="ccpmServoWLabel_2">
<property name="enabled">
<bool>true</bool>
</property>
<property name="sizeType">
<enum>QSizePolicy::Fixed</enum>
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="sizeHint" stdset="0">
<property name="minimumSize">
<size>
<width>20</width>
<height>20</height>
<width>80</width>
<height>0</height>
</size>
</property>
</spacer>
<property name="maximumSize">
<size>
<width>80</width>
<height>16777215</height>
</size>
</property>
<property name="text">
<string>Angle W</string>
</property>
</widget>
</item>
<item row="1" column="1">
<widget class="QDoubleSpinBox" name="ccpmAngleW">
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>85</width>
<height>0</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>85</width>
<height>25</height>
</size>
</property>
<property name="decimals">
<number>0</number>
</property>
<property name="maximum">
<double>360.000000000000000</double>
</property>
<property name="singleStep">
<double>15.000000000000000</double>
</property>
</widget>
</item>
</layout>
</widget>
@ -930,14 +1837,20 @@ QGroupBox::title {
<item>
<widget class="QGroupBox" name="SwashplateBox_4">
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Maximum">
<sizepolicy hsizetype="Fixed" vsizetype="MinimumExpanding">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>200</width>
<height>0</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>190</width>
<width>16777215</width>
<height>16777215</height>
</size>
</property>
@ -945,23 +1858,29 @@ QGroupBox::title {
<string>CCPM Options</string>
</property>
<layout class="QGridLayout" name="gridLayout_21">
<property name="horizontalSpacing">
<property name="leftMargin">
<number>3</number>
</property>
<property name="verticalSpacing">
<number>2</number>
<property name="topMargin">
<number>30</number>
</property>
<property name="margin">
<property name="rightMargin">
<number>3</number>
</property>
<item row="2" column="0">
<property name="bottomMargin">
<number>3</number>
</property>
<property name="spacing">
<number>3</number>
</property>
<item row="1" column="0">
<widget class="QCheckBox" name="ccpmCollectivePassthrough">
<property name="text">
<string>Collective Pass through</string>
</property>
</widget>
</item>
<item row="4" column="0">
<item row="3" column="0">
<widget class="QCheckBox" name="ccpmLinkRoll">
<property name="text">
<string>Link Roll/Pitch</string>
@ -971,7 +1890,7 @@ QGroupBox::title {
</property>
</widget>
</item>
<item row="3" column="0">
<item row="2" column="0">
<widget class="QCheckBox" name="ccpmLinkCyclic">
<property name="text">
<string>Link Cyclic/Collective</string>
@ -981,895 +1900,6 @@ QGroupBox::title {
</property>
</widget>
</item>
<item row="1" column="0">
<spacer name="verticalSpacer_8">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeType">
<enum>QSizePolicy::Fixed</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
</layout>
</widget>
</item>
<item>
<spacer name="verticalSpacer_3">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>40</height>
</size>
</property>
</spacer>
</item>
</layout>
</item>
<item row="0" column="10">
<layout class="QVBoxLayout" name="ccpmSwashImageBox_2">
<property name="topMargin">
<number>0</number>
</property>
<property name="rightMargin">
<number>0</number>
</property>
<item>
<widget class="QGroupBox" name="ccpmSwashImageBox">
<property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Expanding">
<horstretch>1</horstretch>
<verstretch>1</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>200</width>
<height>200</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>600</width>
<height>600</height>
</size>
</property>
<property name="sizeIncrement">
<size>
<width>10</width>
<height>10</height>
</size>
</property>
<property name="baseSize">
<size>
<width>200</width>
<height>200</height>
</size>
</property>
<property name="font">
<font>
<weight>75</weight>
<italic>false</italic>
<bold>true</bold>
</font>
</property>
<property name="title">
<string>Swashplate Layout</string>
</property>
<property name="alignment">
<set>Qt::AlignHCenter|Qt::AlignTop</set>
</property>
<property name="flat">
<bool>false</bool>
</property>
<property name="checkable">
<bool>false</bool>
</property>
<layout class="QGridLayout" name="gridLayout_10">
<property name="horizontalSpacing">
<number>3</number>
</property>
<property name="margin">
<number>3</number>
</property>
<item row="1" column="0">
<widget class="QSplitter" name="splitter_3">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<widget class="QGraphicsView" name="SwashplateImage">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Preferred">
<horstretch>1</horstretch>
<verstretch>1</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>10</width>
<height>10</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>1000</width>
<height>1000</height>
</size>
</property>
<property name="sizeIncrement">
<size>
<width>10</width>
<height>10</height>
</size>
</property>
<property name="baseSize">
<size>
<width>200</width>
<height>200</height>
</size>
</property>
<property name="frameShape">
<enum>QFrame::Box</enum>
</property>
<property name="frameShadow">
<enum>QFrame::Plain</enum>
</property>
<property name="lineWidth">
<number>1</number>
</property>
<property name="verticalScrollBarPolicy">
<enum>Qt::ScrollBarAlwaysOff</enum>
</property>
<property name="horizontalScrollBarPolicy">
<enum>Qt::ScrollBarAlwaysOff</enum>
</property>
<property name="backgroundBrush">
<brush brushstyle="DiagCrossPattern">
<color alpha="50">
<red>112</red>
<green>184</green>
<blue>138</blue>
</color>
</brush>
</property>
<property name="foregroundBrush">
<brush brushstyle="SolidPattern">
<color alpha="0">
<red>127</red>
<green>127</green>
<blue>127</blue>
</color>
</brush>
</property>
<property name="sceneRect">
<rectf>
<x>0.000000000000000</x>
<y>0.000000000000000</y>
<width>400.000000000000000</width>
<height>400.000000000000000</height>
</rectf>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
<property name="resizeAnchor">
<enum>QGraphicsView::AnchorViewCenter</enum>
</property>
</widget>
</widget>
</item>
<item row="0" column="0">
<spacer name="verticalSpacer_9">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeType">
<enum>QSizePolicy::Fixed</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
</layout>
</widget>
</item>
</layout>
</item>
<item row="0" column="3">
<layout class="QHBoxLayout" name="horizontalLayout_10">
<property name="sizeConstraint">
<enum>QLayout::SetNoConstraint</enum>
</property>
<property name="rightMargin">
<number>3</number>
</property>
<property name="bottomMargin">
<number>3</number>
</property>
<item>
<widget class="QGroupBox" name="ccpmRevoMixingBox">
<property name="enabled">
<bool>true</bool>
</property>
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Expanding">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>50</width>
<height>100</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>50</width>
<height>600</height>
</size>
</property>
<property name="font">
<font>
<pointsize>9</pointsize>
<weight>75</weight>
<bold>true</bold>
</font>
</property>
<property name="styleSheet">
<string notr="true">QGroupBox::title {
background-color: qlineargradient(spread:reflect, x1:0.507, y1:0, x2:0.507, y2:0.772, stop:0.208955 rgba(74, 74, 74, 255), stop:0.78607 rgba(36, 36, 36, 255));
color: rgb(255, 255, 255);
border-radius: 5;
margin:1px;
}</string>
</property>
<property name="title">
<string>REVO</string>
</property>
<layout class="QVBoxLayout" name="verticalLayout_3">
<property name="spacing">
<number>0</number>
</property>
<property name="margin">
<number>3</number>
</property>
<item>
<widget class="QLabel" name="label_14">
<property name="enabled">
<bool>false</bool>
</property>
<property name="font">
<font>
<pointsize>7</pointsize>
</font>
</property>
<property name="text">
<string>100%</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
</widget>
</item>
<item>
<layout class="QHBoxLayout" name="horizontalLayout_2">
<item>
<widget class="QSlider" name="ccpmRevoSlider">
<property name="enabled">
<bool>true</bool>
</property>
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Expanding">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>0</width>
<height>100</height>
</size>
</property>
<property name="maximum">
<number>100</number>
</property>
<property name="singleStep">
<number>5</number>
</property>
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
</widget>
</item>
</layout>
</item>
<item>
<widget class="QLabel" name="label_13">
<property name="enabled">
<bool>false</bool>
</property>
<property name="font">
<font>
<pointsize>7</pointsize>
</font>
</property>
<property name="text">
<string>0%</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
</widget>
</item>
<item>
<widget class="QSpinBox" name="ccpmREVOspinBox"/>
</item>
</layout>
</widget>
</item>
<item>
<widget class="QGroupBox" name="ccpmPitchMixingBox">
<property name="enabled">
<bool>true</bool>
</property>
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Expanding">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>60</width>
<height>100</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>50</width>
<height>600</height>
</size>
</property>
<property name="font">
<font>
<pointsize>9</pointsize>
<weight>75</weight>
<bold>true</bold>
</font>
</property>
<property name="styleSheet">
<string notr="true">QGroupBox::title {
background-color: qlineargradient(spread:reflect, x1:0.507, y1:0, x2:0.507, y2:0.772, stop:0.208955 rgba(74, 74, 74, 255), stop:0.78607 rgba(36, 36, 36, 255));
color: rgb(255, 255, 255);
border-radius: 5;
margin:1px;
}</string>
</property>
<property name="title">
<string>CCPM</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
<layout class="QVBoxLayout" name="verticalLayout_4">
<property name="spacing">
<number>0</number>
</property>
<property name="margin">
<number>3</number>
</property>
<item>
<widget class="QLabel" name="label_15">
<property name="enabled">
<bool>true</bool>
</property>
<property name="font">
<font>
<pointsize>7</pointsize>
</font>
</property>
<property name="text">
<string>Collective</string>
</property>
<property name="scaledContents">
<bool>true</bool>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
</widget>
</item>
<item>
<layout class="QHBoxLayout" name="horizontalLayout">
<item>
<widget class="QSlider" name="ccpmCollectiveSlider">
<property name="enabled">
<bool>true</bool>
</property>
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Expanding">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>0</width>
<height>100</height>
</size>
</property>
<property name="maximum">
<number>100</number>
</property>
<property name="singleStep">
<number>5</number>
</property>
<property name="value">
<number>50</number>
</property>
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
</widget>
</item>
</layout>
</item>
<item>
<widget class="QLabel" name="label_16">
<property name="enabled">
<bool>true</bool>
</property>
<property name="font">
<font>
<pointsize>7</pointsize>
</font>
</property>
<property name="text">
<string>Cyclic</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
</widget>
</item>
<item>
<widget class="QSpinBox" name="ccpmCollectivespinBox">
<property name="maximum">
<number>100</number>
</property>
<property name="singleStep">
<number>5</number>
</property>
<property name="value">
<number>50</number>
</property>
</widget>
</item>
</layout>
</widget>
</item>
<item>
<widget class="QGroupBox" name="ccpmCollectiveScalingBox">
<property name="enabled">
<bool>true</bool>
</property>
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Expanding">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>70</width>
<height>100</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>50</width>
<height>600</height>
</size>
</property>
<property name="font">
<font>
<pointsize>9</pointsize>
<weight>75</weight>
<bold>true</bold>
</font>
</property>
<property name="styleSheet">
<string notr="true">QGroupBox::title {
background-color: qlineargradient(spread:reflect, x1:0.507, y1:0, x2:0.507, y2:0.772, stop:0.208955 rgba(74, 74, 74, 255), stop:0.78607 rgba(36, 36, 36, 255));
color: rgb(255, 255, 255);
border-radius: 5;
margin:1px;
}</string>
</property>
<property name="title">
<string>Collective</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
<layout class="QVBoxLayout" name="verticalLayout_12">
<property name="spacing">
<number>0</number>
</property>
<property name="margin">
<number>3</number>
</property>
<item>
<layout class="QHBoxLayout" name="horizontalLayout_11">
<item>
<widget class="QSlider" name="ccpmCollectiveScale">
<property name="enabled">
<bool>true</bool>
</property>
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Expanding">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>0</width>
<height>100</height>
</size>
</property>
<property name="maximum">
<number>100</number>
</property>
<property name="singleStep">
<number>5</number>
</property>
<property name="value">
<number>50</number>
</property>
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
</widget>
</item>
</layout>
</item>
<item>
<widget class="QSpinBox" name="ccpmCollectiveScaleBox">
<property name="maximum">
<number>100</number>
</property>
<property name="singleStep">
<number>5</number>
</property>
<property name="value">
<number>50</number>
</property>
</widget>
</item>
</layout>
</widget>
</item>
<item>
<widget class="QGroupBox" name="ccpmCyclicScalingBox">
<property name="enabled">
<bool>true</bool>
</property>
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Expanding">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>50</width>
<height>100</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>50</width>
<height>600</height>
</size>
</property>
<property name="font">
<font>
<pointsize>9</pointsize>
<weight>75</weight>
<bold>true</bold>
</font>
</property>
<property name="styleSheet">
<string notr="true">QGroupBox::title {
background-color: qlineargradient(spread:reflect, x1:0.507, y1:0, x2:0.507, y2:0.772, stop:0.208955 rgba(74, 74, 74, 255), stop:0.78607 rgba(36, 36, 36, 255));
color: rgb(255, 255, 255);
border-radius: 5;
margin:1px;
}</string>
</property>
<property name="title">
<string>Cyclic</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
<property name="checkable">
<bool>false</bool>
</property>
<layout class="QVBoxLayout" name="verticalLayout_7">
<property name="spacing">
<number>0</number>
</property>
<property name="margin">
<number>3</number>
</property>
<item>
<layout class="QHBoxLayout" name="horizontalLayout_7">
<item>
<widget class="QSlider" name="ccpmCyclicScale">
<property name="enabled">
<bool>true</bool>
</property>
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Expanding">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>0</width>
<height>100</height>
</size>
</property>
<property name="maximum">
<number>100</number>
</property>
<property name="singleStep">
<number>5</number>
</property>
<property name="value">
<number>50</number>
</property>
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
</widget>
</item>
</layout>
</item>
<item>
<widget class="QSpinBox" name="ccpmCyclicScaleBox">
<property name="maximum">
<number>100</number>
</property>
<property name="singleStep">
<number>5</number>
</property>
<property name="value">
<number>50</number>
</property>
</widget>
</item>
</layout>
</widget>
</item>
<item>
<widget class="QGroupBox" name="ccpmPitchScalingBox">
<property name="enabled">
<bool>true</bool>
</property>
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Expanding">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>50</width>
<height>100</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>50</width>
<height>600</height>
</size>
</property>
<property name="font">
<font>
<pointsize>9</pointsize>
<weight>75</weight>
<bold>true</bold>
</font>
</property>
<property name="styleSheet">
<string notr="true">QGroupBox::title {
background-color: qlineargradient(spread:reflect, x1:0.507, y1:0, x2:0.507, y2:0.772, stop:0.208955 rgba(74, 74, 74, 255), stop:0.78607 rgba(36, 36, 36, 255));
color: rgb(255, 255, 255);
border-radius: 5;
margin:1px;
}</string>
</property>
<property name="title">
<string>Pitch</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
<layout class="QVBoxLayout" name="verticalLayout_13">
<property name="spacing">
<number>0</number>
</property>
<property name="margin">
<number>3</number>
</property>
<item>
<layout class="QHBoxLayout" name="horizontalLayout_12">
<item>
<widget class="QSlider" name="ccpmPitchScale">
<property name="enabled">
<bool>true</bool>
</property>
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Expanding">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>0</width>
<height>100</height>
</size>
</property>
<property name="maximum">
<number>100</number>
</property>
<property name="singleStep">
<number>5</number>
</property>
<property name="value">
<number>50</number>
</property>
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
</widget>
</item>
</layout>
</item>
<item>
<widget class="QSpinBox" name="ccpmPitchScaleBox">
<property name="maximum">
<number>100</number>
</property>
<property name="singleStep">
<number>5</number>
</property>
<property name="value">
<number>50</number>
</property>
</widget>
</item>
</layout>
</widget>
</item>
<item>
<widget class="QGroupBox" name="ccpmRollScalingBox">
<property name="enabled">
<bool>true</bool>
</property>
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Expanding">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>50</width>
<height>100</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>50</width>
<height>600</height>
</size>
</property>
<property name="font">
<font>
<pointsize>9</pointsize>
<weight>75</weight>
<bold>true</bold>
</font>
</property>
<property name="styleSheet">
<string notr="true">QGroupBox::title {
background-color: qlineargradient(spread:reflect, x1:0.507, y1:0, x2:0.507, y2:0.772, stop:0.208955 rgba(74, 74, 74, 255), stop:0.78607 rgba(36, 36, 36, 255));
color: rgb(255, 255, 255);
border-radius: 5;
margin:1px;
}</string>
</property>
<property name="title">
<string>Roll</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
<layout class="QVBoxLayout" name="verticalLayout_10">
<property name="spacing">
<number>0</number>
</property>
<property name="margin">
<number>3</number>
</property>
<item>
<layout class="QHBoxLayout" name="horizontalLayout_8">
<item>
<widget class="QSlider" name="ccpmRollScale">
<property name="enabled">
<bool>true</bool>
</property>
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Expanding">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>0</width>
<height>100</height>
</size>
</property>
<property name="maximum">
<number>100</number>
</property>
<property name="singleStep">
<number>5</number>
</property>
<property name="value">
<number>50</number>
</property>
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
</widget>
</item>
</layout>
</item>
<item>
<widget class="QSpinBox" name="ccpmRollScaleBox">
<property name="maximum">
<number>100</number>
</property>
<property name="singleStep">
<number>5</number>
</property>
<property name="value">
<number>50</number>
</property>
</widget>
</item>
</layout>
</widget>
</item>
@ -1882,7 +1912,16 @@ margin:1px;
<string>Swashplate Levelling</string>
</attribute>
<layout class="QGridLayout" name="gridLayout_8">
<property name="margin">
<property name="leftMargin">
<number>9</number>
</property>
<property name="topMargin">
<number>9</number>
</property>
<property name="rightMargin">
<number>9</number>
</property>
<property name="bottomMargin">
<number>9</number>
</property>
<property name="spacing">
@ -1890,13 +1929,16 @@ margin:1px;
</property>
<item row="0" column="0">
<layout class="QVBoxLayout" name="verticalLayout_8">
<property name="spacing">
<number>6</number>
</property>
<property name="leftMargin">
<number>3</number>
</property>
<item>
<widget class="QGroupBox" name="SwashLvlInstructionsBox">
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Maximum">
<sizepolicy hsizetype="MinimumExpanding" vsizetype="MinimumExpanding">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
@ -1904,43 +1946,70 @@ margin:1px;
<property name="minimumSize">
<size>
<width>228</width>
<height>0</height>
<height>200</height>
</size>
</property>
<property name="title">
<string>Commands</string>
</property>
<layout class="QVBoxLayout" name="verticalLayout">
<property name="margin">
<property name="leftMargin">
<number>3</number>
</property>
<property name="topMargin">
<number>3</number>
</property>
<property name="rightMargin">
<number>3</number>
</property>
<property name="bottomMargin">
<number>3</number>
</property>
<item>
<spacer name="verticalSpacer_16">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeType">
<enum>QSizePolicy::Fixed</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item>
<layout class="QHBoxLayout" name="horizontalLayout_9">
<property name="spacing">
<number>0</number>
<number>3</number>
</property>
<property name="leftMargin">
<number>3</number>
</property>
<property name="topMargin">
<number>30</number>
</property>
<property name="rightMargin">
<number>3</number>
</property>
<property name="bottomMargin">
<number>3</number>
</property>
<item>
<widget class="QPushButton" name="SwashLvlPrevButton">
<property name="enabled">
<bool>false</bool>
</property>
<property name="minimumSize">
<size>
<width>85</width>
<height>20</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>85</width>
<height>16777215</height>
</size>
</property>
<property name="text">
<string>Prev</string>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="SwashLvlStartButton">
<property name="minimumSize">
<size>
<width>85</width>
<height>0</height>
<height>20</height>
</size>
</property>
<property name="maximumSize">
@ -1962,7 +2031,7 @@ margin:1px;
<property name="minimumSize">
<size>
<width>85</width>
<height>0</height>
<height>20</height>
</size>
</property>
<property name="maximumSize">
@ -1980,18 +2049,27 @@ margin:1px;
</item>
<item>
<widget class="QTextEdit" name="SwashLvlStepInstruction">
<property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="MinimumExpanding">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>0</width>
<height>150</height>
<width>250</width>
<height>20</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>220</width>
<height>450</height>
<width>500</width>
<height>800</height>
</size>
</property>
<property name="styleSheet">
<string notr="true">QTextEdit { padding-left:4; padding-top:4; padding-bottom:4; padding-right:4}</string>
</property>
<property name="horizontalScrollBarPolicy">
<enum>Qt::ScrollBarAlwaysOff</enum>
</property>
@ -2002,37 +2080,21 @@ margin:1px;
</item>
<item>
<layout class="QGridLayout" name="gridLayout_3">
<item row="0" column="0">
<widget class="QPushButton" name="SwashLvlCancelButton">
<property name="enabled">
<bool>false</bool>
</property>
<property name="minimumSize">
<size>
<width>170</width>
<height>0</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>170</width>
<height>16777215</height>
</size>
</property>
<property name="text">
<string>Cancel</string>
</property>
</widget>
</item>
<item row="1" column="0">
<property name="topMargin">
<number>3</number>
</property>
<property name="bottomMargin">
<number>3</number>
</property>
<item row="2" column="0">
<widget class="QPushButton" name="SwashLvlFinishButton">
<property name="enabled">
<bool>false</bool>
</property>
<property name="minimumSize">
<size>
<width>170</width>
<height>0</height>
<width>85</width>
<height>20</height>
</size>
</property>
<property name="maximumSize">
@ -2046,6 +2108,28 @@ margin:1px;
</property>
</widget>
</item>
<item row="1" column="0">
<widget class="QPushButton" name="SwashLvlCancelButton">
<property name="enabled">
<bool>false</bool>
</property>
<property name="minimumSize">
<size>
<width>85</width>
<height>20</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>170</width>
<height>16777215</height>
</size>
</property>
<property name="text">
<string>Cancel</string>
</property>
</widget>
</item>
</layout>
</item>
</layout>
@ -2054,7 +2138,7 @@ margin:1px;
<item>
<widget class="QGroupBox" name="SwashLvlStatusBox">
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Maximum">
<sizepolicy hsizetype="MinimumExpanding" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
@ -2062,36 +2146,78 @@ margin:1px;
<property name="minimumSize">
<size>
<width>200</width>
<height>0</height>
<height>130</height>
</size>
</property>
<property name="title">
<string>Status</string>
</property>
<layout class="QGridLayout" name="gridLayout_22">
<property name="leftMargin">
<number>3</number>
</property>
<property name="topMargin">
<number>30</number>
</property>
<property name="rightMargin">
<number>3</number>
</property>
<property name="bottomMargin">
<number>3</number>
</property>
<property name="horizontalSpacing">
<number>3</number>
</property>
<property name="verticalSpacing">
<number>2</number>
</property>
<property name="margin">
<number>3</number>
</property>
<item row="1" column="0">
<item row="0" column="0">
<widget class="QListWidget" name="SwashLvlStepList">
<property name="sizePolicy">
<sizepolicy hsizetype="MinimumExpanding" vsizetype="MinimumExpanding">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>220</width>
<width>100</width>
<height>0</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>190</width>
<height>125</height>
<width>100</width>
<height>92</height>
</size>
</property>
<property name="cursor" stdset="0">
<cursorShape>ArrowCursor</cursorShape>
</property>
<property name="focusPolicy">
<enum>Qt::NoFocus</enum>
</property>
<property name="frameShape">
<enum>QFrame::NoFrame</enum>
</property>
<property name="frameShadow">
<enum>QFrame::Sunken</enum>
</property>
<property name="lineWidth">
<number>0</number>
</property>
<property name="midLineWidth">
<number>0</number>
</property>
<property name="verticalScrollBarPolicy">
<enum>Qt::ScrollBarAlwaysOff</enum>
</property>
<property name="horizontalScrollBarPolicy">
<enum>Qt::ScrollBarAlwaysOff</enum>
</property>
<property name="autoScrollMargin">
<number>16</number>
</property>
<property name="editTriggers">
<set>QAbstractItemView::NoEditTriggers</set>
</property>
@ -2104,6 +2230,9 @@ margin:1px;
<property name="selectionBehavior">
<enum>QAbstractItemView::SelectRows</enum>
</property>
<property name="viewMode">
<enum>QListView::ListMode</enum>
</property>
<item>
<property name="text">
<string>Neutral</string>
@ -2152,41 +2281,9 @@ margin:1px;
</item>
</widget>
</item>
<item row="0" column="0">
<spacer name="verticalSpacer_19">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeType">
<enum>QSizePolicy::Fixed</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
</layout>
</widget>
</item>
<item>
<spacer name="verticalSpacer_4">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeType">
<enum>QSizePolicy::MinimumExpanding</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>0</height>
</size>
</property>
</spacer>
</item>
</layout>
</item>
<item row="0" column="1">
@ -2195,7 +2292,7 @@ margin:1px;
<bool>true</bool>
</property>
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Expanding">
<sizepolicy hsizetype="Fixed" vsizetype="MinimumExpanding">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
@ -2203,13 +2300,13 @@ margin:1px;
<property name="minimumSize">
<size>
<width>70</width>
<height>100</height>
<height>250</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>50</width>
<height>600</height>
<width>16777215</width>
<height>16777215</height>
</size>
</property>
<property name="title">
@ -2220,27 +2317,20 @@ margin:1px;
</property>
<layout class="QVBoxLayout" name="verticalLayout_5">
<property name="spacing">
<number>0</number>
</property>
<property name="margin">
<number>3</number>
</property>
<item>
<spacer name="verticalSpacer_18">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeType">
<enum>QSizePolicy::Fixed</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<property name="leftMargin">
<number>3</number>
</property>
<property name="topMargin">
<number>30</number>
</property>
<property name="rightMargin">
<number>3</number>
</property>
<property name="bottomMargin">
<number>3</number>
</property>
<item>
<widget class="QLabel" name="label_17">
<property name="enabled">
@ -2338,7 +2428,7 @@ margin:1px;</string>
<item row="0" column="2">
<widget class="QGroupBox" name="SwashLvlccpmSwashImageBox">
<property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Expanding">
<sizepolicy hsizetype="MinimumExpanding" vsizetype="MinimumExpanding">
<horstretch>1</horstretch>
<verstretch>1</verstretch>
</sizepolicy>
@ -2346,13 +2436,13 @@ margin:1px;</string>
<property name="minimumSize">
<size>
<width>200</width>
<height>200</height>
<height>300</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>600</width>
<height>600</height>
<width>16777215</width>
<height>16777215</height>
</size>
</property>
<property name="sizeIncrement">
@ -2380,13 +2470,22 @@ margin:1px;</string>
<bool>false</bool>
</property>
<layout class="QGridLayout" name="gridLayout_11">
<property name="leftMargin">
<number>6</number>
</property>
<property name="topMargin">
<number>30</number>
</property>
<property name="rightMargin">
<number>6</number>
</property>
<property name="bottomMargin">
<number>6</number>
</property>
<property name="horizontalSpacing">
<number>3</number>
<number>6</number>
</property>
<property name="margin">
<number>3</number>
</property>
<item row="1" column="0">
<item row="0" column="0">
<widget class="QSplitter" name="splitter_4">
<property name="orientation">
<enum>Qt::Vertical</enum>
@ -2400,8 +2499,8 @@ margin:1px;</string>
</property>
<property name="minimumSize">
<size>
<width>10</width>
<height>10</height>
<width>250</width>
<height>300</height>
</size>
</property>
<property name="maximumSize">
@ -2475,22 +2574,6 @@ margin:1px;</string>
</widget>
</widget>
</item>
<item row="0" column="0">
<spacer name="verticalSpacer_17">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeType">
<enum>QSizePolicy::Fixed</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
</layout>
</widget>
</item>
@ -2501,7 +2584,16 @@ margin:1px;</string>
<string>Curve settings</string>
</attribute>
<layout class="QGridLayout" name="gridLayout_7">
<property name="margin">
<property name="leftMargin">
<number>9</number>
</property>
<property name="topMargin">
<number>9</number>
</property>
<property name="rightMargin">
<number>9</number>
</property>
<property name="bottomMargin">
<number>9</number>
</property>
<property name="spacing">
@ -2554,7 +2646,16 @@ margin:1px;</string>
<bool>false</bool>
</property>
<layout class="QGridLayout" name="gridLayout">
<property name="margin">
<property name="leftMargin">
<number>0</number>
</property>
<property name="topMargin">
<number>0</number>
</property>
<property name="rightMargin">
<number>0</number>
</property>
<property name="bottomMargin">
<number>0</number>
</property>
<property name="spacing">
@ -2627,7 +2728,16 @@ margin:1px;</string>
<string/>
</property>
<layout class="QGridLayout" name="gridLayout_5">
<property name="margin">
<property name="leftMargin">
<number>0</number>
</property>
<property name="topMargin">
<number>0</number>
</property>
<property name="rightMargin">
<number>0</number>
</property>
<property name="bottomMargin">
<number>0</number>
</property>
<property name="spacing">
@ -2695,7 +2805,16 @@ margin:1px;</string>
<string>Advanced settings</string>
</attribute>
<layout class="QGridLayout" name="gridLayout_4">
<property name="margin">
<property name="leftMargin">
<number>9</number>
</property>
<property name="topMargin">
<number>9</number>
</property>
<property name="rightMargin">
<number>9</number>
</property>
<property name="bottomMargin">
<number>9</number>
</property>
<property name="spacing">
@ -3140,7 +3259,6 @@ margin:1px;</string>
<tabstop>ccpmServoYChannel</tabstop>
<tabstop>ccpmServoZChannel</tabstop>
<tabstop>ccpmSingleServo</tabstop>
<tabstop>ccpmAngleW</tabstop>
<tabstop>ccpmAngleX</tabstop>
<tabstop>ccpmAngleY</tabstop>
<tabstop>ccpmAngleZ</tabstop>
@ -3150,9 +3268,7 @@ margin:1px;</string>
<tabstop>ccpmCollectiveSlider</tabstop>
<tabstop>ccpmCollectivespinBox</tabstop>
<tabstop>SwashplateImage</tabstop>
<tabstop>SwashLvlStartButton</tabstop>
<tabstop>SwashLvlNextButton</tabstop>
<tabstop>SwashLvlStepInstruction</tabstop>
<tabstop>SwashLvlCancelButton</tabstop>
<tabstop>SwashLvlFinishButton</tabstop>
<tabstop>SwashLvlStepList</tabstop>

View File

@ -40,8 +40,6 @@
#include <math.h>
#define Pi 3.14159265358979323846
QStringList ConfigCcpmWidget::getChannelDescriptions()
{
// init a channel_numelem list of channel desc defaults
@ -181,16 +179,19 @@ ConfigCcpmWidget::ConfigCcpmWidget(QWidget *parent) :
Servos[i] = new QGraphicsSvgItem();
Servos[i]->setSharedRenderer(renderer);
Servos[i]->setElementId(ServoNames.at(i));
Servos[i]->setZValue(20);
m_aircraft->SwashplateImage->scene()->addItem(Servos[i]);
ServosText[i] = new QGraphicsTextItem();
ServosText[i]->setDefaultTextColor(Qt::yellow);
ServosText[i]->setPlainText(QString("-"));
ServosText[i]->setFont(serifFont);
ServosText[i]->setZValue(31);
ServosTextCircles[i] = new QGraphicsEllipseItem(1, 1, 30, 30);
ServosTextCircles[i]->setBrush(brush);
ServosTextCircles[i]->setPen(pen2);
ServosTextCircles[i]->setZValue(30);
m_aircraft->SwashplateImage->scene()->addItem(ServosTextCircles[i]);
m_aircraft->SwashplateImage->scene()->addItem(ServosText[i]);
@ -257,6 +258,7 @@ ConfigCcpmWidget::ConfigCcpmWidget(QWidget *parent) :
connect(m_aircraft->SwashLvlStartButton, SIGNAL(clicked()), this, SLOT(SwashLvlStartButtonPressed()));
connect(m_aircraft->SwashLvlNextButton, SIGNAL(clicked()), this, SLOT(SwashLvlNextButtonPressed()));
connect(m_aircraft->SwashLvlPrevButton, SIGNAL(clicked()), this, SLOT(SwashLvlPrevButtonPressed()));
connect(m_aircraft->SwashLvlCancelButton, SIGNAL(clicked()), this, SLOT(SwashLvlCancelButtonPressed()));
connect(m_aircraft->SwashLvlFinishButton, SIGNAL(clicked()), this, SLOT(SwashLvlFinishButtonPressed()));
@ -391,9 +393,13 @@ void ConfigCcpmWidget::UpdateType()
TypeText = m_aircraft->ccpmType->currentText();
SingleServoIndex = m_aircraft->ccpmSingleServo->currentIndex();
// set visibility of user settings
// set visibility of user settings (When Custom)
m_aircraft->ccpmAdvancedSettingsTable->setEnabled(TypeInt == 0);
m_aircraft->ccpmAdvancedSettingsTable->clearFocus();
// Clear advanced settings table if not Custom selected (Keep previous settings)
if (TypeText.compare(QString::fromUtf8("Custom - Advanced Settings"), Qt::CaseInsensitive) != 0) {
m_aircraft->ccpmAdvancedSettingsTable->clearFocus();
}
m_aircraft->ccpmAngleW->setEnabled(TypeInt == 1);
m_aircraft->ccpmAngleX->setEnabled(TypeInt == 1);
@ -552,15 +558,19 @@ void ConfigCcpmWidget::ccpmSwashplateRedraw()
QRect size;
double scale, xscale, yscale;
size = m_aircraft->SwashplateImage->rect();
// If size = default, get size from other Img/tab
if (size.width() == 100) {
size = m_aircraft->SwashLvlSwashplateImage->rect();
}
size = m_aircraft->SwashplateImage->rect();
xscale = size.width();
yscale = size.height();
scale = xscale;
if (yscale < scale) {
scale = yscale;
}
scale /= 460.00;
scale /= 540.00;
m_aircraft->SwashplateImage->resetTransform();
m_aircraft->SwashplateImage->scale(scale, scale);
@ -592,10 +602,10 @@ void ConfigCcpmWidget::ccpmSwashplateRedraw()
used[1] = ((m_aircraft->ccpmServoXChannel->currentIndex() > 0) && (m_aircraft->ccpmServoXChannel->isEnabled()));
used[2] = ((m_aircraft->ccpmServoYChannel->currentIndex() > 0) && (m_aircraft->ccpmServoYChannel->isEnabled()));
used[3] = ((m_aircraft->ccpmServoZChannel->currentIndex() > 0) && (m_aircraft->ccpmServoZChannel->isEnabled()));
angle[0] = (CorrectionAngle + 180 + m_aircraft->ccpmAngleW->value()) * Pi / 180.00;
angle[1] = (CorrectionAngle + 180 + m_aircraft->ccpmAngleX->value()) * Pi / 180.00;
angle[2] = (CorrectionAngle + 180 + m_aircraft->ccpmAngleY->value()) * Pi / 180.00;
angle[3] = (CorrectionAngle + 180 + m_aircraft->ccpmAngleZ->value()) * Pi / 180.00;
angle[0] = (CorrectionAngle + 180 + m_aircraft->ccpmAngleW->value()) * M_PI / 180.00;
angle[1] = (CorrectionAngle + 180 + m_aircraft->ccpmAngleX->value()) * M_PI / 180.00;
angle[2] = (CorrectionAngle + 180 + m_aircraft->ccpmAngleY->value()) * M_PI / 180.00;
angle[3] = (CorrectionAngle + 180 + m_aircraft->ccpmAngleZ->value()) * M_PI / 180.00;
for (i = 0; i < CCPM_MAX_SWASH_SERVOS; i++) {
@ -640,16 +650,16 @@ void ConfigCcpmWidget::ccpmSwashplateRedraw()
ServoLines[i]->setVisible(defined[i] != 0);
}
// m_aircraft->SwashplateImage->centerOn (CenterX, CenterY);
// m_aircraft->SwashplateImage->centerOn(CenterX, CenterY);
// m_aircraft->SwashplateImage->fitInView(SwashplateImg, Qt::KeepAspectRatio);
}
void ConfigCcpmWidget::ccpmSwashplateUpdate()
{
ccpmSwashplateRedraw();
SetUIComponentVisibilities();
UpdateMixer();
SetUIComponentVisibilities();
ccpmSwashplateRedraw();
}
void ConfigCcpmWidget::UpdateMixer()
@ -685,8 +695,8 @@ void ConfigCcpmWidget::UpdateMixer()
;
}
}
if (config.heli.SwashplateType > 0) { // not advanced settings
int TypeInt = m_aircraft->ccpmType->count() - m_aircraft->ccpmType->currentIndex() - 1;
if (TypeInt != 0) { // not advanced settings
// get the channel data from the ui
MixerChannelData[0] = m_aircraft->ccpmEngineChannel->currentIndex();
MixerChannelData[1] = m_aircraft->ccpmTailChannel->currentIndex();
@ -762,11 +772,11 @@ void ConfigCcpmWidget::UpdateMixer()
table->item(i, 3)->setText(
QString("%1").arg(
(int)(127.0 * (RollConstant)
* sin((180 + config.heli.CorrectionAngle + ThisAngle[i]) * Pi / 180.00)))); // Roll
* sin((180 + config.heli.CorrectionAngle + ThisAngle[i]) * M_PI / 180.00)))); // Roll
table->item(i, 4)->setText(
QString("%1").arg(
(int)(127.0 * (PitchConstant)
* cos((config.heli.CorrectionAngle + ThisAngle[i]) * Pi / 180.00)))); // Pitch
* cos((config.heli.CorrectionAngle + ThisAngle[i]) * M_PI / 180.00)))); // Pitch
// Yaw
table->item(i, 5)->setText(QString("%1").arg(0));
}
@ -779,10 +789,11 @@ void ConfigCcpmWidget::UpdateMixer()
} else {
// advanced settings
QTableWidget *table = m_aircraft->ccpmAdvancedSettingsTable;
for (int i = 0; i < 6; i++) {
Channel = table->item(i, 0)->text();
if (Channel == "-") {
Channel = QString("9");
Channel = QString((int)ConfigCcpmWidget::CHANNEL_NUMELEM + 1);
}
MixerChannelData[i] = Channel.toInt();
}
@ -874,6 +885,15 @@ void ConfigCcpmWidget::SetUIComponentVisibilities()
m_aircraft->ccpmRollScalingBox->setVisible(!m_aircraft->ccpmLinkRoll->isChecked());
m_aircraft->ccpmLinkRoll->setVisible(1);
}
// clear status check boxes
m_aircraft->SwashLvlStepList->item(0)->setCheckState(Qt::Unchecked);
m_aircraft->SwashLvlStepList->item(1)->setCheckState(Qt::Unchecked);
m_aircraft->SwashLvlStepList->item(2)->setCheckState(Qt::Unchecked);
m_aircraft->SwashLvlStepList->item(3)->setCheckState(Qt::Unchecked);
m_aircraft->SwashLvlStepList->item(0)->setBackground(Qt::transparent);
m_aircraft->SwashLvlStepList->item(1)->setBackground(Qt::transparent);
m_aircraft->SwashLvlStepList->item(2)->setBackground(Qt::transparent);
m_aircraft->SwashLvlStepList->item(3)->setBackground(Qt::transparent);
}
/**
@ -939,16 +959,20 @@ void ConfigCcpmWidget::setMixer()
UpdateMixer();
// Set up some helper pointers
qint8 *mixers[8] = { mixerSettingsData.Mixer1Vector,
mixerSettingsData.Mixer2Vector,
mixerSettingsData.Mixer3Vector,
mixerSettingsData.Mixer4Vector,
mixerSettingsData.Mixer5Vector,
mixerSettingsData.Mixer6Vector,
mixerSettingsData.Mixer7Vector,
mixerSettingsData.Mixer8Vector };
qint8 *mixers[12] = { mixerSettingsData.Mixer1Vector,
mixerSettingsData.Mixer2Vector,
mixerSettingsData.Mixer3Vector,
mixerSettingsData.Mixer4Vector,
mixerSettingsData.Mixer5Vector,
mixerSettingsData.Mixer6Vector,
mixerSettingsData.Mixer7Vector,
mixerSettingsData.Mixer8Vector,
mixerSettingsData.Mixer9Vector,
mixerSettingsData.Mixer10Vector,
mixerSettingsData.Mixer11Vector,
mixerSettingsData.Mixer12Vector };
quint8 *mixerTypes[8] = {
quint8 *mixerTypes[12] = {
&mixerSettingsData.Mixer1Type,
&mixerSettingsData.Mixer2Type,
&mixerSettingsData.Mixer3Type,
@ -956,17 +980,20 @@ void ConfigCcpmWidget::setMixer()
&mixerSettingsData.Mixer5Type,
&mixerSettingsData.Mixer6Type,
&mixerSettingsData.Mixer7Type,
&mixerSettingsData.Mixer8Type
&mixerSettingsData.Mixer8Type,
&mixerSettingsData.Mixer9Type,
&mixerSettingsData.Mixer10Type,
&mixerSettingsData.Mixer11Type,
&mixerSettingsData.Mixer12Type
};
// reset all to Disabled
for (i = 0; i < 8; i++) {
*mixerTypes[i] = 0;
}
// go through the user data and update the mixer matrix
for (i = 0; i < 6; i++) {
if (MixerChannelData[i] > 0) {
if ((MixerChannelData[i] > 0) && (MixerChannelData[i] < (int)ConfigCcpmWidget::CHANNEL_NUMELEM + 1)) {
// Set the mixer type. If Coax, then first two are motors. Otherwise, only first is motor
if (TypeText.compare(QString::fromUtf8("Coax 2 Servo 90º"), Qt::CaseInsensitive) == 0) {
*(mixerTypes[MixerChannelData[i] - 1]) = i > 1 ?
@ -977,7 +1004,6 @@ void ConfigCcpmWidget::setMixer()
MixerSettings::MIXER1TYPE_SERVO :
MixerSettings::MIXER1TYPE_MOTOR;
}
// Configure the vector
for (j = 0; j < 5; j++) {
mixers[MixerChannelData[i] - 1][j] = m_aircraft->ccpmAdvancedSettingsTable->item(i, j + 1)->text().toInt();
@ -1052,8 +1078,8 @@ void ConfigCcpmWidget::SwashLvlStartButtonPressed()
QMessageBox msgBox;
int i;
msgBox.setText("<h1>Swashplate Leveling Routine</h1>");
msgBox.setInformativeText("<b>You are about to start the Swashplate levelling routine.</b><p>This process will start by downloading the current configuration from the GCS to the OP hardware and will adjust your configuration at various stages.<p>The final state of your system should match the current configuration in the GCS config gadget.<p>Please ensure all ccpm settings in the GCS are correct before continuing.<p>If this process is interrupted, then the state of your OP board may not match the GCS configuration.<p><i>After completing this process, please check all settings before attempting to fly.</i><p><font color=red><b>Please disconnect your motor to ensure it will not spin up.</b></font><p><hr><i>Do you wish to proceed?</i>");
msgBox.setText(tr("<h1>Swashplate Leveling Routine</h1>"));
msgBox.setInformativeText(tr("<b>You are about to start the Swashplate levelling routine.</b><p>This process will start by downloading the current configuration from the GCS to the OP hardware and will adjust your configuration at various stages.<p>The final state of your system should match the current configuration in the GCS config gadget.</p><p>Please ensure all ccpm settings in the GCS are correct before continuing.</p><p>If this process is interrupted, then the state of your OP board may not match the GCS configuration.</p><p><i>After completing this process, please check all settings before attempting to fly.</i></p><p><font color=red><b>Please disconnect your motor to ensure it will not spin up.</b></font><p><hr><i>Do you wish to proceed?</i></p>"));
msgBox.setStandardButtons(QMessageBox::Yes | QMessageBox::Cancel);
msgBox.setDefaultButton(QMessageBox::Cancel);
msgBox.setIcon(QMessageBox::Information);
@ -1075,6 +1101,7 @@ void ConfigCcpmWidget::SwashLvlStartButtonPressed()
m_aircraft->SwashLvlStartButton->setEnabled(false);
m_aircraft->SwashLvlNextButton->setEnabled(true);
m_aircraft->SwashLvlPrevButton->setEnabled(false);
m_aircraft->SwashLvlCancelButton->setEnabled(true);
m_aircraft->SwashLvlFinishButton->setEnabled(false);
// clear status check boxes
@ -1136,6 +1163,7 @@ void ConfigCcpmWidget::SwashLvlStartButtonPressed()
m_aircraft->SwashLvlStartButton->setEnabled(true);
m_aircraft->SwashLvlNextButton->setEnabled(false);
m_aircraft->SwashLvlPrevButton->setEnabled(false);
m_aircraft->SwashLvlCancelButton->setEnabled(false);
m_aircraft->SwashLvlFinishButton->setEnabled(false);
break;
@ -1145,15 +1173,24 @@ void ConfigCcpmWidget::SwashLvlStartButtonPressed()
}
}
void ConfigCcpmWidget::SwashLvlPrevButtonPressed()
{
SwashLvlState--;
SwashLvlPrevNextButtonPressed();
}
void ConfigCcpmWidget::SwashLvlNextButtonPressed()
{
// ShowDisclaimer(2);
SwashLvlState++;
SwashLvlPrevNextButtonPressed();
}
void ConfigCcpmWidget::SwashLvlPrevNextButtonPressed()
{
switch (SwashLvlState) {
case 0:
break;
case 1: // Neutral levelling
m_aircraft->SwashLvlPrevButton->setEnabled(false);
m_aircraft->SwashLvlStepList->setCurrentRow(0);
// set spin boxes and swashplate servos to Neutral values
setSwashplateLevel(50);
@ -1170,9 +1207,10 @@ void ConfigCcpmWidget::SwashLvlNextButtonPressed()
}
// issue user instructions
m_aircraft->SwashLvlStepInstruction->setHtml(
"<h2>Neutral levelling</h2><p>Using adjustment of:<ul><li>servo horns<li>link lengths and<li>Neutral timing spinboxes to the right</ul><br>ensure that the swashplate is in the center of desired travel range and is level.");
tr("<h2>Neutral levelling</h2><p>Using adjustment of:<ul><li>Servo horns,</li><li>Link lengths,</li><li>Neutral triming spinboxes to the right</li></ul><br>Ensure that the swashplate is in the center of desired travel range and is level."));
break;
case 2: // Max levelling
m_aircraft->SwashLvlPrevButton->setEnabled(true);
// check Neutral status as complete
m_aircraft->SwashLvlStepList->item(0)->setCheckState(Qt::Checked);
m_aircraft->SwashLvlStepList->setCurrentRow(1);
@ -1183,7 +1221,7 @@ void ConfigCcpmWidget::SwashLvlNextButtonPressed()
m_aircraft->SwashLvlPositionSpinBox->setValue(100);
// issue user instructions
m_aircraft->SwashLvlStepInstruction->setText(
"<h2>Max levelling</h2><p>Using adjustment of:<ul><li>Max timing spinboxes to the right ONLY</ul><br>ensure that the swashplate is at the top of desired travel range and is level.");
tr("<h2>Max levelling</h2><p>Using adjustment of:<ul><li>Max triming spinboxes to the right ONLY</li></ul><br>Ensure that the swashplate is at the top of desired travel range and is level."));
break;
case 3: // Min levelling
// check Max status as complete
@ -1196,10 +1234,11 @@ void ConfigCcpmWidget::SwashLvlNextButtonPressed()
m_aircraft->SwashLvlPositionSpinBox->setValue(0);
// issue user instructions
m_aircraft->SwashLvlStepInstruction->setText(
"<h2>Min levelling</h2><p>Using adjustment of:<ul><li>Min timing spinboxes to the right ONLY</ul><br>ensure that the swashplate is at the bottom of desired travel range and is level.");
tr("<h2>Min levelling</h2><p>Using adjustment of:<ul><li>Min triming spinboxes to the right ONLY</li></ul><br>Ensure that the swashplate is at the bottom of desired travel range and is level."));
break;
case 4: // levelling verification
// check Min status as complete
m_aircraft->SwashLvlNextButton->setEnabled(true);
m_aircraft->SwashLvlStepList->item(2)->setCheckState(Qt::Checked);
m_aircraft->SwashLvlStepList->setCurrentRow(3);
// enable position slider
@ -1214,14 +1253,14 @@ void ConfigCcpmWidget::SwashLvlNextButtonPressed()
// issue user instructions
m_aircraft->SwashLvlStepInstruction->setText(
"<h2>levelling verification</h2><p>Adjust the slider to the right over it's full range and observe the swashplate motion. It should remain level over the entire range of travel.");
tr("<h2>Levelling verification</h2><p>Adjust the slider to the right over it's full range and observe the swashplate motion. It should remain level over the entire range of travel.</p>"));
break;
case 5: // levelling complete
// check verify status as complete
m_aircraft->SwashLvlStepList->item(3)->setCheckState(Qt::Checked);
// issue user instructions
m_aircraft->SwashLvlStepInstruction->setText(
"<h2>levelling complete</h2><p>Press the Finish button to save these settings to the SD card<p>Press the cancel button to return to the pre-levelling settings");
tr("<h2>Levelling complete</h2><p>Press the Finish button to save these settings to the SD card</p><p>Press the cancel button to return to the pre-levelling settings</p>"));
// disable position slider
m_aircraft->SwashLvlPositionSlider->setEnabled(false);
m_aircraft->SwashLvlPositionSpinBox->setEnabled(false);
@ -1233,6 +1272,7 @@ void ConfigCcpmWidget::SwashLvlNextButtonPressed()
m_aircraft->SwashLvlStartButton->setEnabled(false);
m_aircraft->SwashLvlNextButton->setEnabled(false);
m_aircraft->SwashLvlPrevButton->setEnabled(true);
m_aircraft->SwashLvlCancelButton->setEnabled(true);
m_aircraft->SwashLvlFinishButton->setEnabled(true);
@ -1256,6 +1296,7 @@ void ConfigCcpmWidget::SwashLvlCancelButtonPressed()
m_aircraft->SwashLvlStartButton->setEnabled(true);
m_aircraft->SwashLvlNextButton->setEnabled(false);
m_aircraft->SwashLvlPrevButton->setEnabled(false);
m_aircraft->SwashLvlCancelButton->setEnabled(false);
m_aircraft->SwashLvlFinishButton->setEnabled(false);
@ -1287,7 +1328,9 @@ void ConfigCcpmWidget::SwashLvlCancelButtonPressed()
enableSwashplateLevellingControl(false);
m_aircraft->SwashLvlStepInstruction->setText(
"<h2>Levelling Cancelled</h2><p>Previous settings have been restored.");
tr("<h2>Levelling Cancelled</h2><p>Previous settings have been restored."));
ccpmSwashplateUpdate();
}
@ -1299,6 +1342,7 @@ void ConfigCcpmWidget::SwashLvlFinishButtonPressed()
m_aircraft->SwashLvlStartButton->setEnabled(true);
m_aircraft->SwashLvlNextButton->setEnabled(false);
m_aircraft->SwashLvlPrevButton->setEnabled(false);
m_aircraft->SwashLvlCancelButton->setEnabled(false);
m_aircraft->SwashLvlFinishButton->setEnabled(false);
@ -1327,23 +1371,25 @@ void ConfigCcpmWidget::SwashLvlFinishButtonPressed()
enableSwashplateLevellingControl(false);
m_aircraft->SwashLvlStepInstruction->setText(
"<h2>Levelling Completed</h2><p>New settings have been saved to the SD card");
tr("<h2>Levelling Completed</h2><p>New settings have been saved to the SD card"));
ShowDisclaimer(0);
// ShowDisclaimer(2);
ccpmSwashplateUpdate();
}
int ConfigCcpmWidget::ShowDisclaimer(int messageID)
{
QMessageBox msgBox;
msgBox.setText("<font color=red><h1>Warning!!!</h2></font>");
msgBox.setText(tr("<font color=red><h1>Warning!!!</h2></font>"));
int ret;
switch (messageID) {
case 0:
// Basic disclaimer
msgBox.setInformativeText(
"<h2>This code has many configurations.</h2><p>Please double check all settings before attempting flight!");
tr("<h2>This code has many configurations.</h2><p>Please double check all settings before attempting flight!"));
msgBox.setStandardButtons(QMessageBox::Ok);
msgBox.setDefaultButton(QMessageBox::Ok);
msgBox.setIcon(QMessageBox::Information);
@ -1354,7 +1400,7 @@ int ConfigCcpmWidget::ShowDisclaimer(int messageID)
case 1:
// Not Tested disclaimer
msgBox.setInformativeText(
"<h2>The CCPM mixer code needs more testing!</h2><p><font color=red>Use it at your own risk!</font><p>Do you wish to continue?");
tr("<h2>The CCPM mixer code needs more testing!</h2><p><font color=red>Use it at your own risk!</font><p>Do you wish to continue?"));
msgBox.setStandardButtons(QMessageBox::Yes | QMessageBox::Cancel);
msgBox.setDefaultButton(QMessageBox::Cancel);
msgBox.setIcon(QMessageBox::Warning);
@ -1370,7 +1416,7 @@ int ConfigCcpmWidget::ShowDisclaimer(int messageID)
case 2:
// DO NOT use
msgBox.setInformativeText(
"<h2>The CCPM swashplate levelling code is NOT complete!</h2><p><font color=red>DO NOT use it for flight!</font>");
tr("<h2>The CCPM swashplate levelling code is NOT complete!</h2><p><font color=red>DO NOT use it for flight!</font>"));
msgBox.setStandardButtons(QMessageBox::Ok);
msgBox.setDefaultButton(QMessageBox::Ok);
msgBox.setIcon(QMessageBox::Critical);

View File

@ -120,7 +120,9 @@ private slots:
void UpdateType();
void SwashLvlStartButtonPressed();
void SwashLvlPrevButtonPressed();
void SwashLvlNextButtonPressed();
void SwashLvlPrevNextButtonPressed();
void SwashLvlCancelButtonPressed();
void SwashLvlFinishButtonPressed();

View File

@ -1,266 +1,299 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="400"
height="400"
id="svg2816"
version="1.1"
inkscape:version="0.47 r22583"
sodipodi:docname="ccpm_setup.svg">
<defs
id="defs2818">
<inkscape:perspective
sodipodi:type="inkscape:persp3d"
inkscape:vp_x="0 : 200 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_z="400 : 200 : 1"
inkscape:persp3d-origin="200 : 133.33333 : 1"
id="perspective2854" />
</defs>
<sodipodi:namedview
pagecolor="#000000"
bordercolor="#000000"
borderopacity="1.0"
inkscape:pageopacity="1.0"
inkscape:pageshadow="0"
inkscape:zoom="1.8725"
inkscape:cx="121.49533"
inkscape:cy="328.17089"
inkscape:document-units="px"
inkscape:current-layer="layer3"
id="namedview2820"
showgrid="false"
showguides="true"
inkscape:snap-global="true"
inkscape:window-width="1680"
inkscape:window-height="994"
inkscape:window-x="-4"
inkscape:window-y="-4"
inkscape:window-maximized="1"
inkscape:guide-bbox="true">
<sodipodi:guide
position="0,0"
orientation="0,744.09448"
id="guide2827" />
<sodipodi:guide
position="744.09448,0"
orientation="-1052.3622,0"
id="guide2829" />
<sodipodi:guide
position="744.09448,1052.3622"
orientation="0,-744.09448"
id="guide2831" />
<sodipodi:guide
position="0,1052.3622"
orientation="1052.3622,0"
id="guide2833" />
<sodipodi:guide
position="0,0"
orientation="0,400"
id="guide2835" />
<sodipodi:guide
position="400,0"
orientation="-400,0"
id="guide2837" />
<sodipodi:guide
position="400,400"
orientation="0,-400"
id="guide2839" />
<sodipodi:guide
position="0,400"
orientation="400,0"
id="guide2841" />
<inkscape:grid
type="xygrid"
id="grid2843"
empspacing="5"
visible="true"
enabled="true"
snapvisiblegridlinesonly="true" />
</sodipodi:namedview>
<metadata
id="metadata2822">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title />
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:label="SwashPlate"
inkscape:groupmode="layer"
id="layer1"
transform="translate(0,-652.36218)"
style="display:inline" />
<g
inkscape:groupmode="layer"
id="layer2"
inkscape:label="Rotor"
style="display:inline">
<g
id="Swashplate"
inkscape:label="#g4001">
<g
id="g4008">
<path
transform="matrix(0.99009901,0,0,0.99009901,-198.0198,201.9802)"
sodipodi:type="arc"
style="fill:#00003d;fill-opacity:1;stroke:#0000ff;stroke-width:4;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;display:inline"
id="Ring"
sodipodi:cx="200"
sodipodi:cy="200"
sodipodi:rx="200"
sodipodi:ry="200"
d="m 400,200 a 200,200 0 1 1 -400,0 200,200 0 1 1 400,0 z"
inkscape:label="#path2847" />
<path
sodipodi:type="arc"
style="color:#000000;fill:#9796ab;fill-opacity:0.80813958;fill-rule:evenodd;stroke:#b5b5bb;stroke-width:2.37170815;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
id="Rotor"
sodipodi:cx="220"
sodipodi:cy="207.5"
sodipodi:rx="45"
sodipodi:ry="12.5"
d="m 265,207.5 a 45,12.5 0 1 1 -90,0 45,12.5 0 1 1 90,0 z"
transform="matrix(0.52910053,0,0,1.9047619,-116.40212,4.7619059)"
inkscape:label="#path3622" />
</g>
</g>
</g>
<g
inkscape:groupmode="layer"
id="layer3"
inkscape:label="ServoWlayer"
style="display:inline">
<path
sodipodi:type="arc"
style="color:#000000;fill:#d86415;fill-opacity:1;fill-rule:evenodd;stroke:#00ff00;stroke-width:1.0002594;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:3;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
id="ServoW"
sodipodi:cx="0"
sodipodi:cy="397.5"
sodipodi:rx="10"
sodipodi:ry="7.5"
d="m 10,397.5 a 10,7.5 0 1 1 -20,0 10,7.5 0 1 1 20,0 z"
transform="matrix(0.94540297,0,0,1.2605373,140.4225,-455.65278)"
inkscape:label="#path3635" />
<text
xml:space="preserve"
style="font-size:16px;font-style:normal;font-weight:normal;fill:#1f5f00;fill-opacity:1;stroke:#00ff00;stroke-width:0.5;stroke-miterlimit:0.1;stroke-opacity:1;stroke-dasharray:none;font-family:Bitstream Vera Sans"
x="158"
y="41"
id="ServoWtext"
inkscape:label="#text3637"><tspan
sodipodi:role="line"
id="tspan3639"
x="158"
y="41">ServoW</tspan></text>
</g>
<g
style="display:inline"
inkscape:label="ServoXlayer"
id="g3925"
inkscape:groupmode="layer">
<path
transform="matrix(0.94540297,0,0,1.2605373,142.4225,-424.81942)"
d="m 10,397.5 a 10,7.5 0 1 1 -20,0 10,7.5 0 1 1 20,0 z"
sodipodi:ry="7.5"
sodipodi:rx="10"
sodipodi:cy="397.5"
sodipodi:cx="0"
id="ServoX"
style="color:#000000;fill:#d89615;fill-opacity:1;fill-rule:evenodd;stroke:#00ff00;stroke-width:1.0002594;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:3;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
sodipodi:type="arc"
inkscape:label="#path3927" />
<text
id="ServoXtext"
y="75.666656"
x="158"
style="font-size:16px;font-style:normal;font-weight:normal;fill:#1f5f00;fill-opacity:1;stroke:#00ff00;stroke-width:0.5;stroke-miterlimit:0.1;stroke-opacity:1;stroke-dasharray:none;font-family:Bitstream Vera Sans"
xml:space="preserve"
inkscape:label="#text3929"><tspan
y="75.666656"
x="158"
id="tspan3931"
sodipodi:role="line">ServoX</tspan></text>
</g>
<g
inkscape:groupmode="layer"
id="g3943"
inkscape:label="ServoYlayer"
style="display:inline">
<path
sodipodi:type="arc"
style="color:#000000;fill:#d8c815;fill-opacity:1;fill-rule:evenodd;stroke:#00ff00;stroke-width:1.0002594;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:3;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
id="ServoY"
sodipodi:cx="0"
sodipodi:cy="397.5"
sodipodi:rx="10"
sodipodi:ry="7.5"
d="m 10,397.5 a 10,7.5 0 1 1 -20,0 10,7.5 0 1 1 20,0 z"
transform="matrix(0.94540298,0,0,1.2605373,142.4225,-390.15277)"
inkscape:label="#path3947" />
<text
xml:space="preserve"
style="font-size:16px;font-style:normal;font-weight:normal;fill:#1f5f00;fill-opacity:1;stroke:#00ff00;stroke-width:0.5;stroke-miterlimit:0.1;stroke-opacity:1;stroke-dasharray:none;font-family:Bitstream Vera Sans"
x="158"
y="110.33333"
id="ServoYtext"
inkscape:label="#text3949"><tspan
sodipodi:role="line"
id="tspan3951"
x="158"
y="110.33333">ServoY</tspan></text>
</g>
<g
style="display:inline"
inkscape:label="ServoZlayer"
id="g3953"
inkscape:groupmode="layer">
<path
transform="matrix(0.94540298,0,0,1.2605373,142.4225,-355.4861)"
d="m 10,397.5 a 10,7.5 0 1 1 -20,0 10,7.5 0 1 1 20,0 z"
sodipodi:ry="7.5"
sodipodi:rx="10"
sodipodi:cy="397.5"
sodipodi:cx="0"
id="ServoZ"
style="color:#000000;fill:#d8f915;fill-opacity:1;fill-rule:evenodd;stroke:#00ff00;stroke-width:1.0002594;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:3;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
sodipodi:type="arc"
inkscape:label="#path3957" />
<text
id="ServoZtext"
y="145"
x="158"
style="font-size:16px;font-style:normal;font-weight:normal;fill:#1f5f00;fill-opacity:1;stroke:#00ff00;stroke-width:0.5;stroke-miterlimit:0.1;stroke-opacity:1;stroke-dasharray:none;font-family:Bitstream Vera Sans"
xml:space="preserve"
inkscape:label="#text3959"><tspan
id="tspan3963"
y="145"
x="158"
sodipodi:role="line">ServoZ</tspan><tspan
id="tspan3967"
y="165"
x="158"
sodipodi:role="line" /></text>
<path
style="fill:#ff6e00;stroke:#ff6e00;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;fill-opacity:1"
d="M 185.60761,186.1126 150.1962,151.94369"
id="RadialZ"
inkscape:connector-type="polyline"
inkscape:connection-start="#path3622"
inkscape:connection-end="#path3957"
inkscape:label="#path3981" />
</g>
</svg>
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="400"
height="400"
id="svg2816"
version="1.1"
inkscape:version="0.48.5 r10040"
sodipodi:docname="ccpm_setup.svg">
<defs
id="defs2818">
<inkscape:perspective
sodipodi:type="inkscape:persp3d"
inkscape:vp_x="0 : 200 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_z="400 : 200 : 1"
inkscape:persp3d-origin="200 : 133.33333 : 1"
id="perspective2854" />
<filter
inkscape:collect="always"
id="filter4111">
<feGaussianBlur
inkscape:collect="always"
stdDeviation="2.4480407"
id="feGaussianBlur4113" />
</filter>
<filter
inkscape:collect="always"
id="filter4149">
<feGaussianBlur
inkscape:collect="always"
stdDeviation="1.990099"
id="feGaussianBlur4151" />
</filter>
<filter
color-interpolation-filters="sRGB"
inkscape:collect="always"
id="filter4149-5">
<feGaussianBlur
inkscape:collect="always"
stdDeviation="1.990099"
id="feGaussianBlur4151-9" />
</filter>
</defs>
<sodipodi:namedview
pagecolor="#edebe7"
bordercolor="#000000"
borderopacity="1.0"
inkscape:pageopacity="1"
inkscape:pageshadow="0"
inkscape:zoom="0.93625"
inkscape:cx="329.50243"
inkscape:cy="22.483153"
inkscape:document-units="px"
inkscape:current-layer="g4008"
id="namedview2820"
showgrid="false"
showguides="false"
inkscape:snap-global="true"
inkscape:window-width="1280"
inkscape:window-height="928"
inkscape:window-x="0"
inkscape:window-y="27"
inkscape:window-maximized="1"
inkscape:guide-bbox="true"
inkscape:snap-bbox="true"
inkscape:snap-bbox-midpoints="true">
<sodipodi:guide
position="0,0"
orientation="0,744.09448"
id="guide2827" />
<sodipodi:guide
position="744.09448,0"
orientation="-1052.3622,0"
id="guide2829" />
<sodipodi:guide
position="744.09448,1052.3622"
orientation="0,-744.09448"
id="guide2831" />
<sodipodi:guide
position="0,1052.3622"
orientation="1052.3622,0"
id="guide2833" />
<sodipodi:guide
position="0,0"
orientation="0,400"
id="guide2835" />
<sodipodi:guide
position="400,0"
orientation="-400,0"
id="guide2837" />
<sodipodi:guide
position="400,400"
orientation="0,-400"
id="guide2839" />
<sodipodi:guide
position="0,400"
orientation="400,0"
id="guide2841" />
<inkscape:grid
type="xygrid"
id="grid2843"
empspacing="5"
visible="true"
enabled="true"
snapvisiblegridlinesonly="true" />
</sodipodi:namedview>
<metadata
id="metadata2822">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:label="SwashPlate"
inkscape:groupmode="layer"
id="layer1"
transform="translate(0,-652.36218)"
style="display:inline" />
<g
inkscape:groupmode="layer"
id="layer2"
inkscape:label="Rotor"
style="display:inline">
<g
id="Swashplate"
inkscape:label="#g4001">
<g
id="g4008">
<path
id="path4127"
d="M 199.0099,400 C 199.0099,509.91014 109.91014,599.0099 4e-6,599.0099 C -109.91013,599.0099 -199.0099,509.91014 -199.0099,400 C -199.0099,290.08987 -109.91013,200.9901 4e-6,200.9901 C 109.91014,200.9901 199.0099,290.08987 199.0099,400 z"
style="fill:#515455;fill-opacity:1;stroke:#515455;stroke-width:3.98019790999999978;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:0.58823532;display:inline;filter:url(#filter4149-5)"
inkscape:connector-curvature="0"
transform="matrix(1.0083769,0,0,1.0083769,2.0000001e-6,-3.35076)" />
<path
style="fill:#2f82f4;fill-opacity:1;stroke:#0000ff;stroke-width:3.96039605;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;display:inline"
d="M 198.01981,400 C 198.01981,509.36332 109.36332,598.0198 0,598.0198 C -109.36332,598.0198 -198.0198,509.36332 -198.0198,400 C -198.0198,290.63669 -109.36332,201.9802 0,201.9802 C 109.36332,201.9802 198.01981,290.63669 198.01981,400 z"
id="Ring"
inkscape:connector-curvature="0" />
<path
inkscape:connector-curvature="0"
id="path4089"
d="M 40.80068,400 C 40.80068,422.53358 22.533588,440.80068 3.7923656e-6,440.80068 C -22.533599,440.80068 -40.800676,422.53358 -40.800676,400 C -40.800676,377.4664 -22.533599,359.19932 3.7923656e-6,359.19932 C 22.533588,359.19932 40.80068,377.4664 40.80068,400 z"
style="color:#000000;fill:#515455;fill-opacity:1;fill-rule:nonzero;stroke:#515455;stroke-width:5.37709665;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;filter:url(#filter4111);enable-background:accumulate"
transform="matrix(1.0128731,0,0,1.0128731,-2.5746203e-8,-5.149238)" />
<path
style="color:#000000;fill:#9796ab;fill-opacity:0.80784314;fill-rule:nonzero;stroke:#b5b5bb;stroke-width:5.37709665;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
d="M 40.800678,400 C 40.800678,422.53358 22.53359,440.80068 6e-6,440.80068 C -22.533597,440.80068 -40.800674,422.53358 -40.800674,400 C -40.800674,377.4664 -22.533597,359.19932 6e-6,359.19932 C 22.53359,359.19932 40.800678,377.4664 40.800678,400 z"
id="Rotor"
inkscape:connector-curvature="0" />
</g>
<g
id="g4119"
transform="translate(366.35514,38.451268)" />
</g>
</g>
<g
inkscape:groupmode="layer"
id="layer3"
inkscape:label="ServoWlayer"
style="display:inline">
<path
sodipodi:type="arc"
style="color:#000000;fill:#d86415;fill-opacity:1;fill-rule:evenodd;stroke:#00ff00;stroke-width:1.0002594;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:3;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
id="ServoW"
sodipodi:cx="0"
sodipodi:cy="397.5"
sodipodi:rx="10"
sodipodi:ry="7.5"
d="m 10,397.5 a 10,7.5 0 1 1 -20,0 10,7.5 0 1 1 20,0 z"
transform="matrix(0.94540297,0,0,1.2605373,140.4225,-455.65278)"
inkscape:label="#path3635" />
<text
xml:space="preserve"
style="font-size:16px;font-style:normal;font-weight:normal;fill:#1f5f00;fill-opacity:1;stroke:#00ff00;stroke-width:0.5;stroke-miterlimit:0.1;stroke-opacity:1;stroke-dasharray:none;font-family:Bitstream Vera Sans"
x="158"
y="41"
id="ServoWtext"
inkscape:label="#text3637"><tspan
sodipodi:role="line"
id="tspan3639"
x="158"
y="41">ServoW</tspan></text>
</g>
<g
style="display:inline"
inkscape:label="ServoXlayer"
id="g3925"
inkscape:groupmode="layer">
<path
transform="matrix(0.94540297,0,0,1.2605373,142.4225,-424.81942)"
d="m 10,397.5 a 10,7.5 0 1 1 -20,0 10,7.5 0 1 1 20,0 z"
sodipodi:ry="7.5"
sodipodi:rx="10"
sodipodi:cy="397.5"
sodipodi:cx="0"
id="ServoX"
style="color:#000000;fill:#d89615;fill-opacity:1;fill-rule:evenodd;stroke:#00ff00;stroke-width:1.0002594;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:3;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
sodipodi:type="arc"
inkscape:label="#path3927" />
<text
id="ServoXtext"
y="75.666656"
x="158"
style="font-size:16px;font-style:normal;font-weight:normal;fill:#1f5f00;fill-opacity:1;stroke:#00ff00;stroke-width:0.5;stroke-miterlimit:0.1;stroke-opacity:1;stroke-dasharray:none;font-family:Bitstream Vera Sans"
xml:space="preserve"
inkscape:label="#text3929"><tspan
y="75.666656"
x="158"
id="tspan3931"
sodipodi:role="line">ServoX</tspan></text>
</g>
<g
inkscape:groupmode="layer"
id="g3943"
inkscape:label="ServoYlayer"
style="display:inline">
<path
sodipodi:type="arc"
style="color:#000000;fill:#d8c815;fill-opacity:1;fill-rule:evenodd;stroke:#00ff00;stroke-width:1.0002594;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:3;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
id="ServoY"
sodipodi:cx="0"
sodipodi:cy="397.5"
sodipodi:rx="10"
sodipodi:ry="7.5"
d="m 10,397.5 a 10,7.5 0 1 1 -20,0 10,7.5 0 1 1 20,0 z"
transform="matrix(0.94540298,0,0,1.2605373,142.4225,-390.15277)"
inkscape:label="#path3947" />
<text
xml:space="preserve"
style="font-size:16px;font-style:normal;font-weight:normal;fill:#1f5f00;fill-opacity:1;stroke:#00ff00;stroke-width:0.5;stroke-miterlimit:0.1;stroke-opacity:1;stroke-dasharray:none;font-family:Bitstream Vera Sans"
x="158"
y="110.33333"
id="ServoYtext"
inkscape:label="#text3949"><tspan
sodipodi:role="line"
id="tspan3951"
x="158"
y="110.33333">ServoY</tspan></text>
</g>
<g
style="display:inline"
inkscape:label="ServoZlayer"
id="g3953"
inkscape:groupmode="layer">
<path
transform="matrix(0.94540298,0,0,1.2605373,142.4225,-355.4861)"
d="m 10,397.5 a 10,7.5 0 1 1 -20,0 10,7.5 0 1 1 20,0 z"
sodipodi:ry="7.5"
sodipodi:rx="10"
sodipodi:cy="397.5"
sodipodi:cx="0"
id="ServoZ"
style="color:#000000;fill:#d8f915;fill-opacity:1;fill-rule:evenodd;stroke:#00ff00;stroke-width:1.0002594;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:3;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
sodipodi:type="arc"
inkscape:label="#path3957" />
<text
id="ServoZtext"
y="145"
x="158"
style="font-size:16px;font-style:normal;font-weight:normal;fill:#1f5f00;fill-opacity:1;stroke:#00ff00;stroke-width:0.5;stroke-miterlimit:0.1;stroke-opacity:1;stroke-dasharray:none;font-family:Bitstream Vera Sans"
xml:space="preserve"
inkscape:label="#text3959"><tspan
id="tspan3963"
y="145"
x="158"
sodipodi:role="line">ServoZ</tspan><tspan
id="tspan3967"
y="165"
x="158"
sodipodi:role="line" /></text>
<path
style="fill:#ff6e00;fill-opacity:1;stroke:#ff6e00;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="M 185.60761,186.1126 L 150.1962,151.94369"
id="RadialZ"
inkscape:connector-type="polyline"
inkscape:connection-start="#path3622"
inkscape:connection-end="#path3957"
inkscape:label="#path3981"
inkscape:connection-start-point="d4"
inkscape:connection-end-point="d4"
inkscape:connector-curvature="0" />
</g>
</svg>

Before

Width:  |  Height:  |  Size: 10 KiB

After

Width:  |  Height:  |  Size: 12 KiB

View File

@ -172,6 +172,7 @@ bool AirframeInitialTuningPage::airframeIsCompatible(int vehicleType, int vehicl
void AirframeInitialTuningPage::loadFilesInDir(QString templateBasePath)
{
QDir templateDir(templateBasePath);
qDebug() << "Loading templates from base path:" << templateBasePath;
QStringList names;
names << "*.optmpl";

View File

@ -151,7 +151,7 @@ void VehicleConfigurationHelper::applyHardwareConfiguration()
break;
case VehicleConfigurationSource::INPUT_PPM:
if (m_configSource->getEscType() == VehicleConfigurationSource::ESC_ONESHOT ||
m_configSource->getEscType() == VehicleConfigurationSource::ESC_RAPID) {
m_configSource->getEscType() == VehicleConfigurationSource::ESC_RAPID) {
data.CC_RcvrPort = HwSettings::CC_RCVRPORT_PPM_PIN8ONESHOT;
} else {
data.CC_RcvrPort = HwSettings::CC_RCVRPORT_PPMNOONESHOT;
@ -380,10 +380,10 @@ void VehicleConfigurationHelper::applyActuatorConfiguration()
if ((m_configSource->getControllerType() == VehicleConfigurationSource::CONTROLLER_CC ||
m_configSource->getControllerType() == VehicleConfigurationSource::CONTROLLER_CC3D) &&
m_configSource->getInputType() == VehicleConfigurationSource::INPUT_PWM) {
bankMode = ActuatorSettings::BANKMODE_PWM;
bankMode = ActuatorSettings::BANKMODE_PWM;
escFrequence = RAPID_ESC_FREQUENCY;
} else {
bankMode = ActuatorSettings::BANKMODE_PWMSYNC;
bankMode = ActuatorSettings::BANKMODE_PWMSYNC;
escFrequence = PWMSYNC_ESC_FREQUENCY;
}
break;

View File

@ -59,8 +59,8 @@ public:
bool setupHardwareSettings(bool save = true);
static const qint16 LEGACY_ESC_FREQUENCY = 50;
static const qint16 RAPID_ESC_FREQUENCY = 490;
static const qint16 PWMSYNC_ESC_FREQUENCY = 0;
static const qint16 ONESHOT_ESC_FREQUENCY = 0;
static const qint16 PWMSYNC_ESC_FREQUENCY = 0;
static const qint16 ONESHOT_ESC_FREQUENCY = 0;
static const qint16 ANALOG_SERVO_FREQUENCY = 50;
static const qint16 DIGITAL_SERVO_FREQUENCY = 333;
static const int MIXER_TYPE_NONE = 0;