1
0
mirror of https://bitbucket.org/librepilot/librepilot.git synced 2025-01-19 04:52:12 +01:00

Merge branch 'rel-15.02' into samguns/zh_CN_GCS

This commit is contained in:
samguns 2015-03-02 10:03:09 +08:00
commit 45f589627e
21 changed files with 2101 additions and 1663 deletions

View File

@ -1,3 +1,66 @@
--- RELEASE-15.02 RC2
This release introduces major flight performance improvements, enhancements as well as bug fixes. Many enhancements have been made to reducing dead-time of the communication between the flight controller and ESCs. In our testing, we have found this to be not only the best flight performance so far in the OpenPilot project but the best flight performance of any project we have tested against. This is a recommended upgrade for everyone and the more skilled of a pilot you are, the more you will love this release.
A key improvement that helped achieve this was the addition of the PWMSync code path, this is now enabled by default. Some restrictions applies to CC3D/CC as it needs a compatible input method to enable PWMSync. Compatible input methods are PPM, S.Bus, DSM and OPLink. This release also introduces support for OneShot125 capable ESCs, such as the KISS ESCs and all ESCs supported in BLHeli V13 and above. Note that OneShot125 support has the same restrictions as PWMSync for CC and CC3D.
Note for CC3D/CC: To support PWMSync/OneShot125 PPM input pin has changed from earlier releases to the last pin on the input IO port, please refer to the connection diagram in the setup wizard to see the required new pin layout for PPM.
Other enhancements include key parts of the GCS translated to Chinese and further OPLink reliability additions allowing us to confidently say it can be used as a primary control link as well as for telemetry.
The full list of features, improvements and bugfixes in this release is accessible here:
https://progress.openpilot.org/issues/?filter=12161
Release Notes - OpenPilot - Version RELEASE-15.02
** Bug
* [OP-969] - Input Configuration Wizard has scrollbars showing up and next/previous buttons are pushed down out of sight
* [OP-1466] - Gcs crashes on Helicopter config tab
* [OP-1522] - Improve Robustness of OPLink radio
* [OP-1601] - Still not enough ram on CC for gps to be usable
* [OP-1644] - Radio Setup Wiz problem with 6 flight modes
* [OP-1670] - cruise control conflict with flight modes (rate & acro +)
* [OP-1680] - OPLink control limited to 1000-1896
* [OP-1682] - Overflow issue with pwm rx and CC3D
* [OP-1686] - Slave OPLM should receive PPM in PPM_only mode
* [OP-1706] - Output Reverse checkboxes tick them selves when min equals max
* [OP-1718] - FW vehicle setup wizard may strip servo gears
* [OP-1722] - libusb include is incorrect.
* [OP-1728] - FW servos ignore set neutral
* [OP-1733] - version-info.py should check for version-info.json not git repo.
* [OP-1735] - Build fails with a tilde (~) in path.
* [OP-1737] - Min/max will be greyed even if motor output test is canceled
* [OP-1741] - Repo path is incorrect in version_info.pro
* [OP-1743] - cc3d fails to connect once "next " is loaded 2-23-15
* [OP-1744] - Vehicle config wizard produces a bad configuration
* [OP-1754] - Vehicle Wizard bad config when setting PPM in and RapidESC out
** Improvement
* [OP-1576] - Remove tx resent accounting from OPlink
* [OP-1635] - Remove Quad H from wizard to avoid confusion with Quad X
* [OP-1650] - Reduce telemetry to improve OPLink
* [OP-1658] - Sensor driver API and overhaul of sensor module
* [OP-1683] - Support synchronous (OneShot) and OneShot125 output mode
* [OP-1685] - Support OneShot/OneShot125 for CC* targets
* [OP-1694] - Make package make rule non-nested
* [OP-1698] - Add easy to set channel passtrough GCS functionality
* [OP-1704] - Add support for sanity check custom hooks
* [OP-1755] - Add additional path for cloudconfigs
** New Feature
* [OP-1723] - RCCar Forward/reverse support
** Task
* [OP-1721] - C++ enable flight controller and upgrade ARM tools
* [OP-1738] - change default flight modes and thrust settings
** Sub task
* [OP-1748] - Chinese translation for 15.02
* [OP-1752] - Add Alarm sub status to SystemHealth
--- RELEASE-15.01 --- Look Ma, No hands --- --- RELEASE-15.01 --- Look Ma, No hands ---
This release mainly focuses on a new feature, GPSAssist which is a new form of assisted control for multirotors. This release mainly focuses on a new feature, GPSAssist which is a new form of assisted control for multirotors.
Assisted Control provides assistance functions on top of existing flight modes. GPSAssist is the Assisted Control provides assistance functions on top of existing flight modes. GPSAssist is the

View File

@ -14,7 +14,7 @@
height="79.57505" height="79.57505"
id="svg3604" id="svg3604"
version="1.1" version="1.1"
inkscape:version="0.48.4 r9939" inkscape:version="0.48.5 r10040"
sodipodi:docname="system-health.svg" sodipodi:docname="system-health.svg"
inkscape:export-filename="C:\NoBackup\OpenPilot\mainboard-health.png" inkscape:export-filename="C:\NoBackup\OpenPilot\mainboard-health.png"
inkscape:export-xdpi="269.53" inkscape:export-xdpi="269.53"
@ -27,10 +27,10 @@
borderopacity="1.0" borderopacity="1.0"
inkscape:pageopacity="0.0" inkscape:pageopacity="0.0"
inkscape:pageshadow="2" inkscape:pageshadow="2"
inkscape:zoom="7.4934872" inkscape:zoom="6.5977991"
inkscape:cx="56.515743" inkscape:cx="55.083588"
inkscape:cy="39.787525" inkscape:cy="24.071773"
inkscape:current-layer="background" inkscape:current-layer="layer45"
id="namedview3608" id="namedview3608"
showgrid="true" showgrid="true"
inkscape:window-width="1280" inkscape:window-width="1280"
@ -40,8 +40,12 @@
inkscape:window-maximized="1" inkscape:window-maximized="1"
showguides="true" showguides="true"
inkscape:guide-bbox="true" inkscape:guide-bbox="true"
inkscape:snap-global="false" inkscape:snap-global="true"
units="mm"> units="mm"
inkscape:snap-bbox="true"
inkscape:snap-bbox-midpoints="true"
inkscape:snap-nodes="false"
inkscape:snap-grids="false">
<sodipodi:guide <sodipodi:guide
id="guide3857" id="guide3857"
position="68.372091,-63.708224" position="68.372091,-63.708224"
@ -687,7 +691,7 @@
<dc:format>image/svg+xml</dc:format> <dc:format>image/svg+xml</dc:format>
<dc:type <dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title> <dc:title />
</cc:Work> </cc:Work>
</rdf:RDF> </rdf:RDF>
</metadata> </metadata>
@ -696,7 +700,8 @@
transform="translate(-497.66563,-344.28037)" transform="translate(-497.66563,-344.28037)"
id="background" id="background"
inkscape:groupmode="layer" inkscape:groupmode="layer"
inkscape:label="Background"> inkscape:label="Background"
sodipodi:insensitive="true">
<rect <rect
ry="1.6" ry="1.6"
y="344.58401" y="344.58401"
@ -754,14 +759,6 @@
x="499.66107" x="499.66107"
y="360.58862" y="360.58862"
ry="0" /> ry="0" />
<rect
style="fill:#241c1c;fill-opacity:1;stroke:#ffffff;stroke-width:0.45410183;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;display:inline"
id="rect4550-8-7-82"
width="10.470912"
height="8.5405388"
x="547.97754"
y="411.27975"
ry="1" />
<rect <rect
style="fill:#333333;fill-opacity:1;stroke:none" style="fill:#333333;fill-opacity:1;stroke:none"
id="rect1234" id="rect1234"
@ -770,25 +767,16 @@
x="499.72488" x="499.72488"
y="408.94675" y="408.94675"
ry="0" /> ry="0" />
<rect
style="fill:#28170b;fill-opacity:1;stroke:none;display:inline"
id="CPUOverload"
width="19.142458"
height="9.4961557"
x="588.72668"
y="410.80194"
ry="1.111892"
inkscape:label="#rect4550-8" />
<text <text
xml:space="preserve" xml:space="preserve"
style="font-size:6px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#ffffff;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans Bold" style="font-size:6px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#ffffff;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans Bold"
x="529.24725" x="527.35309"
y="379.43469" y="379.43469"
id="text5334" id="text5334"
sodipodi:linespacing="125%"><tspan sodipodi:linespacing="125%"><tspan
sodipodi:role="line" sodipodi:role="line"
id="tspan4263" id="tspan4263"
x="529.24725" x="527.35309"
y="379.43469">SYSTEM HEALTH</tspan></text> y="379.43469">SYSTEM HEALTH</tspan></text>
<text <text
xml:space="preserve" xml:space="preserve"
@ -918,8 +906,8 @@
id="Airspeed" id="Airspeed"
width="23.751532" width="23.751532"
height="10.102088" height="10.102088"
x="557.14178" x="557.61102"
y="362.48087" y="362.46414"
ry="0.99014992" ry="0.99014992"
inkscape:label="#rect4550-8-1-4-21-5-13" /> inkscape:label="#rect4550-8-1-4-21-5-13" />
<rect <rect
@ -1005,6 +993,15 @@
y="410.80194" y="410.80194"
ry="1.111892" ry="1.111892"
inkscape:label="#rect4550-8" /> inkscape:label="#rect4550-8" />
<rect
style="fill:#28170b;fill-opacity:1;stroke:none;display:inline"
id="CPUOverload"
width="19.142458"
height="9.4961557"
x="588.72668"
y="410.80194"
ry="1.111892"
inkscape:label="#rect4550-8" />
<rect <rect
style="fill:#28170b;fill-opacity:1;stroke:none;display:inline" style="fill:#28170b;fill-opacity:1;stroke:none;display:inline"
id="EventSystem" id="EventSystem"
@ -1674,6 +1671,50 @@
inkscape:label="#rect4550" inkscape:label="#rect4550"
rx="1.2054718" /> rx="1.2054718" />
</g> </g>
<g
inkscape:groupmode="layer"
id="layer45"
inkscape:label="BootFault-RebootRequired">
<rect
style="fill:#d40000;fill-opacity:1;stroke:none;display:inline"
id="BootFault-RebootRequired"
width="13.110236"
height="10.107105"
x="80.806435"
y="51.972187"
ry="0.98050147"
inkscape:label="#rect4550-8-1-4-21-1" />
</g>
<g
inkscape:groupmode="layer"
id="layer43"
inkscape:label="SystemConfiguration-FlightMode"
style="display:inline">
<rect
style="fill:#d40000;fill-opacity:1;stroke:none;display:inline"
id="SystemConfiguration-FlightMode"
width="13.110236"
height="10.107105"
x="80.806435"
y="51.972187"
ry="0.98050147"
inkscape:label="#rect4550-8-1-4-21-1" />
</g>
<g
inkscape:groupmode="layer"
id="layer44"
inkscape:label="SystemConfiguration-UnsupportedConfig_OneShot"
style="display:none">
<rect
style="fill:#d40000;fill-opacity:1;stroke:none;display:inline"
id="SystemConfiguration-UnsupportedConfig_OneShot"
width="13.110236"
height="10.107105"
x="80.775131"
y="51.938683"
ry="0.98050147"
inkscape:label="#rect4550-8-1-4-21-1" />
</g>
<g <g
inkscape:groupmode="layer" inkscape:groupmode="layer"
id="g5417" id="g5417"
@ -1798,7 +1839,8 @@
inkscape:groupmode="layer" inkscape:groupmode="layer"
id="g5438" id="g5438"
inkscape:label="SystemConfiguration-Critical" inkscape:label="SystemConfiguration-Critical"
style="display:none"> style="display:none"
sodipodi:insensitive="true">
<rect <rect
style="fill:#d40000;fill-opacity:1;stroke:none;display:inline" style="fill:#d40000;fill-opacity:1;stroke:none;display:inline"
id="SystemConfiguration-Critical" id="SystemConfiguration-Critical"
@ -1813,7 +1855,8 @@
inkscape:groupmode="layer" inkscape:groupmode="layer"
id="g5441" id="g5441"
inkscape:label="BootFault-Critical" inkscape:label="BootFault-Critical"
style="display:none"> style="display:none"
sodipodi:insensitive="true">
<rect <rect
style="fill:#d40000;fill-opacity:1;stroke:none;display:inline" style="fill:#d40000;fill-opacity:1;stroke:none;display:inline"
id="BootFault-Critical" id="BootFault-Critical"
@ -1827,7 +1870,8 @@
inkscape:groupmode="layer" inkscape:groupmode="layer"
id="g5445" id="g5445"
inkscape:label="Battery-Critical" inkscape:label="Battery-Critical"
style="display:none"> style="display:none"
sodipodi:insensitive="true">
<rect <rect
style="fill:#d40000;fill-opacity:1;stroke:none;display:inline" style="fill:#d40000;fill-opacity:1;stroke:none;display:inline"
id="Battery-Critical" id="Battery-Critical"
@ -1842,7 +1886,8 @@
inkscape:groupmode="layer" inkscape:groupmode="layer"
id="g5448" id="g5448"
inkscape:label="Telemetry-Critical" inkscape:label="Telemetry-Critical"
style="display:none"> style="display:none"
sodipodi:insensitive="true">
<rect <rect
style="fill:#d40000;fill-opacity:1;stroke:none;display:inline" style="fill:#d40000;fill-opacity:1;stroke:none;display:inline"
id="Telemetry-Critical" id="Telemetry-Critical"
@ -1857,7 +1902,8 @@
inkscape:groupmode="layer" inkscape:groupmode="layer"
id="g5451" id="g5451"
inkscape:label="FlightTime-Critical" inkscape:label="FlightTime-Critical"
style="display:none"> style="display:none"
sodipodi:insensitive="true">
<rect <rect
style="fill:#d40000;fill-opacity:1;stroke:none;display:inline" style="fill:#d40000;fill-opacity:1;stroke:none;display:inline"
id="FlightTime-Critical" id="FlightTime-Critical"
@ -1872,7 +1918,8 @@
inkscape:groupmode="layer" inkscape:groupmode="layer"
id="g5454" id="g5454"
inkscape:label="I2C-Critical" inkscape:label="I2C-Critical"
style="display:none"> style="display:none"
sodipodi:insensitive="true">
<rect <rect
style="fill:#d40000;fill-opacity:1;stroke:none;display:inline" style="fill:#d40000;fill-opacity:1;stroke:none;display:inline"
id="I2C-Critical" id="I2C-Critical"
@ -1887,7 +1934,8 @@
inkscape:groupmode="layer" inkscape:groupmode="layer"
id="g5457" id="g5457"
inkscape:label="EventSystem-Critical" inkscape:label="EventSystem-Critical"
style="display:none"> style="display:none"
sodipodi:insensitive="true">
<rect <rect
style="fill:#d40000;fill-opacity:1;stroke:none;display:inline" style="fill:#d40000;fill-opacity:1;stroke:none;display:inline"
id="EventSystem-Critical" id="EventSystem-Critical"
@ -2282,13 +2330,13 @@
<path <path
inkscape:connector-curvature="0" inkscape:connector-curvature="0"
id="path6233-9-9-86-6" id="path6233-9-9-86-6"
d="m 55.345762,52.390536 22.271395,9.258692" d="M 55.345762,52.390536 L 77.617157,61.649228"
style="fill:#ff0000;stroke:#ff0000;stroke-width:1.36421418;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:none;display:inline" style="fill:#ff0000;stroke:#ff0000;stroke-width:1.36421418;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:none;display:inline"
sodipodi:nodetypes="cc" /> sodipodi:nodetypes="cc" />
<path <path
inkscape:connector-curvature="0" inkscape:connector-curvature="0"
id="path6233-9-9-4-5-1" id="path6233-9-9-4-5-1"
d="M 55.34692,61.535992 77.626653,52.32014" d="M 55.34692,61.535992 L 77.626653,52.32014"
style="fill:#ff0000;stroke:#ff0000;stroke-width:1.36357629;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:none;display:inline" style="fill:#ff0000;stroke:#ff0000;stroke-width:1.36357629;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:none;display:inline"
sodipodi:nodetypes="cc" /> sodipodi:nodetypes="cc" />
</g> </g>
@ -2439,7 +2487,8 @@
style="display:inline" style="display:inline"
inkscape:label="Foreground" inkscape:label="Foreground"
id="foreground" id="foreground"
inkscape:groupmode="layer"> inkscape:groupmode="layer"
sodipodi:insensitive="true">
<rect <rect
inkscape:label="#rect3054" inkscape:label="#rect3054"
style="fill:none;stroke:#000000;stroke-width:1.09511685;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;display:inline" style="fill:none;stroke:#000000;stroke-width:1.09511685;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;display:inline"
@ -2479,19 +2528,19 @@
style="font-size:6px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#ffffff;fill-opacity:1;stroke:none;display:inline;font-family:Arial;-inkscape-font-specification:Arial Bold" style="font-size:6px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#ffffff;fill-opacity:1;stroke:none;display:inline;font-family:Arial;-inkscape-font-specification:Arial Bold"
id="text5330-7-7"> id="text5330-7-7">
<path <path
d="m 20.933331,9.2802429 -0.94336,0 -0.375,-0.9755859 -1.716797,0 -0.354492,0.9755859 -0.919922,0 1.672852,-4.2949219 0.916992,0 1.719727,4.2949219 m -1.59668,-1.6992187 -0.591797,-1.59375 -0.580078,1.59375 1.171875,0" d="M 20.933331,9.2802429 L 19.989971,9.2802429 L 19.614971,8.304657 L 17.898174,8.304657 L 17.543682,9.2802429 L 16.62376,9.2802429 L 18.296612,4.985321 L 19.213604,4.985321 L 20.933331,9.2802429 M 19.336651,7.5810242 L 18.744854,5.9872742 L 18.164776,7.5810242 L 19.336651,7.5810242"
id="path4659" id="path4659"
inkscape:connector-curvature="0" /> inkscape:connector-curvature="0" />
<path <path
d="m 21.929424,9.2802429 0,-3.5683594 -1.274414,0 0,-0.7265625 3.413086,0 0,0.7265625 -1.271484,0 0,3.5683594 -0.867188,0" d="M 21.929424,9.2802429 L 21.929424,5.7118835 L 20.65501,5.7118835 L 20.65501,4.985321 L 24.068096,4.985321 L 24.068096,5.7118835 L 22.796612,5.7118835 L 22.796612,9.2802429 L 21.929424,9.2802429"
id="path4661" id="path4661"
inkscape:connector-curvature="0" /> inkscape:connector-curvature="0" />
<path <path
d="m 25.585674,9.2802429 0,-3.5683594 -1.274414,0 0,-0.7265625 3.413086,0 0,0.7265625 -1.271484,0 0,3.5683594 -0.867188,0" d="M 25.585674,9.2802429 L 25.585674,5.7118835 L 24.31126,5.7118835 L 24.31126,4.985321 L 27.724346,4.985321 L 27.724346,5.7118835 L 26.452862,5.7118835 L 26.452862,9.2802429 L 25.585674,9.2802429"
id="path4663" id="path4663"
inkscape:connector-curvature="0" /> inkscape:connector-curvature="0" />
<path <path
d="m 28.24876,9.2802429 0,-4.2949219 0.867188,0 0,4.2949219 -0.867188,0" d="M 28.24876,9.2802429 L 28.24876,4.985321 L 29.115948,4.985321 L 29.115948,9.2802429 L 28.24876,9.2802429"
id="path4665" id="path4665"
inkscape:connector-curvature="0" /> inkscape:connector-curvature="0" />
</g> </g>
@ -2903,6 +2952,17 @@
width="13.522519" width="13.522519"
id="rect4796-2-7-4-0" id="rect4796-2-7-4-0"
style="fill:none;stroke:#ffffff;stroke-width:0.70866144;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;display:inline" /> style="fill:none;stroke:#ffffff;stroke-width:0.70866144;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;display:inline" />
<text
xml:space="preserve"
style="font-size:7.38898897px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:none;font-family:Arial;-inkscape-font-specification:Sans Bold"
x="85.050056"
y="59.663887"
id="text3468"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan3470"
x="85.050056"
y="59.663887">?</tspan></text>
</g> </g>
<g <g
inkscape:groupmode="layer" inkscape:groupmode="layer"
@ -2948,12 +3008,12 @@
id="g4267"> id="g4267">
<path <path
style="fill:none;stroke:#000000;stroke-width:0.29055119;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" style="fill:none;stroke:#000000;stroke-width:0.29055119;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m 10,34.57505 3,-5 3,5 z" d="M 10,34.57505 L 13,29.57505 L 16,34.57505 z"
id="path4256" id="path4256"
inkscape:connector-curvature="0" /> inkscape:connector-curvature="0" />
<path <path
style="fill:#feff4e;fill-opacity:1;stroke:none" style="fill:#feff4e;fill-opacity:1;stroke:none"
d="m 10.290063,34.407528 c 0.0054,-0.0098 0.6154,-1.028176 1.355653,-2.263122 1.065577,-1.777675 1.351802,-2.238983 1.374175,-2.214756 0.034,0.03682 2.687605,4.461874 2.687605,4.481753 0,0.0076 -1.221113,0.01389 -2.713585,0.01389 -1.492472,0 -2.709203,-0.008 -2.703848,-0.01777 z" d="M 10.290063,34.407528 C 10.295463,34.397728 10.905463,33.379352 11.645716,32.144406 C 12.711293,30.366731 12.997518,29.905423 13.019891,29.92965 C 13.053891,29.96647 15.707496,34.391524 15.707496,34.411403 C 15.707496,34.419003 14.486383,34.425293 12.993911,34.425293 C 11.501439,34.425293 10.284708,34.417293 10.290063,34.407523 z"
id="path4258" id="path4258"
inkscape:connector-curvature="0" /> inkscape:connector-curvature="0" />
<path <path
@ -2964,14 +3024,14 @@
sodipodi:cy="35.07505" sodipodi:cy="35.07505"
sodipodi:rx="0.5" sodipodi:rx="0.5"
sodipodi:ry="0.5" sodipodi:ry="0.5"
d="m 14,35.07505 a 0.5,0.5 0 1 1 -2.75e-4,-0.01658" d="M 14,35.07505 A 0.5,0.5 0 1 1 13.999725,35.058469"
sodipodi:start="0" sodipodi:start="0"
sodipodi:end="6.2500167" sodipodi:end="6.2500167"
sodipodi:open="true" sodipodi:open="true"
transform="matrix(0.85787666,0,0,0.89340749,1.4093898,2.5721417)" /> transform="matrix(0.85787666,0,0,0.89340749,1.4093898,2.5721417)" />
<path <path
style="fill:none;stroke:#000000;stroke-width:0.78661418;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" style="fill:none;stroke:#000000;stroke-width:0.78661418;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m 13,30.727043 0,2.607972" d="M 13,30.727043 L 13,33.335015"
id="path4265" id="path4265"
inkscape:connector-curvature="0" /> inkscape:connector-curvature="0" />
</g> </g>
@ -2981,12 +3041,12 @@
style="display:inline"> style="display:inline">
<path <path
style="fill:none;stroke:#000000;stroke-width:0.29024163;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" style="fill:none;stroke:#000000;stroke-width:0.29024163;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m 10,34.57505 3,-5 3,5 z" d="M 10,34.57505 L 13,29.57505 L 16,34.57505 z"
id="path4256-0" id="path4256-0"
inkscape:connector-curvature="0" /> inkscape:connector-curvature="0" />
<path <path
style="fill:#feff4e;fill-opacity:1;stroke:none" style="fill:#feff4e;fill-opacity:1;stroke:none"
d="m 10.290063,34.407528 c 0.0054,-0.0098 0.6154,-1.028176 1.355653,-2.263122 1.065577,-1.777675 1.351802,-2.238983 1.374175,-2.214756 0.034,0.03682 2.687605,4.461874 2.687605,4.481753 0,0.0076 -1.221113,0.01389 -2.713585,0.01389 -1.492472,0 -2.709203,-0.008 -2.703848,-0.01777 z" d="M 10.290063,34.407528 C 10.295463,34.397728 10.905463,33.379352 11.645716,32.144406 C 12.711293,30.366731 12.997518,29.905423 13.019891,29.92965 C 13.053891,29.96647 15.707496,34.391524 15.707496,34.411403 C 15.707496,34.419003 14.486383,34.425293 12.993911,34.425293 C 11.501439,34.425293 10.284708,34.417293 10.290063,34.407523 z"
id="path4258-9" id="path4258-9"
inkscape:connector-curvature="0" /> inkscape:connector-curvature="0" />
<path <path
@ -2997,14 +3057,14 @@
sodipodi:cy="35.07505" sodipodi:cy="35.07505"
sodipodi:rx="0.5" sodipodi:rx="0.5"
sodipodi:ry="0.5" sodipodi:ry="0.5"
d="m 14,35.07505 a 0.5,0.5 0 1 1 -2.75e-4,-0.01658" d="M 14,35.07505 A 0.5,0.5 0 1 1 13.999725,35.058469"
sodipodi:start="0" sodipodi:start="0"
sodipodi:end="6.2500167" sodipodi:end="6.2500167"
sodipodi:open="true" sodipodi:open="true"
transform="matrix(0.85787666,0,0,0.89340749,1.4093898,2.5721417)" /> transform="matrix(0.85787666,0,0,0.89340749,1.4093898,2.5721417)" />
<path <path
style="fill:none;stroke:#000000;stroke-width:0.78661418;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" style="fill:none;stroke:#000000;stroke-width:0.78661418;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m 13,30.727043 0,2.607972" d="M 13,30.727043 L 13,33.335015"
id="path4265-8" id="path4265-8"
inkscape:connector-curvature="0" /> inkscape:connector-curvature="0" />
</g> </g>

Before

Width:  |  Height:  |  Size: 106 KiB

After

Width:  |  Height:  |  Size: 109 KiB

View File

@ -7,7 +7,7 @@
<x>0</x> <x>0</x>
<y>0</y> <y>0</y>
<width>850</width> <width>850</width>
<height>572</height> <height>694</height>
</rect> </rect>
</property> </property>
<property name="sizePolicy"> <property name="sizePolicy">
@ -29,7 +29,16 @@
<bool>false</bool> <bool>false</bool>
</property> </property>
<layout class="QGridLayout" name="gridLayout_17"> <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> <number>0</number>
</property> </property>
<item row="0" column="0"> <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{ <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)); 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: 1px outset #999;
border-radius: 3; border-radius: 6;
font:bold; font:bold;
} }
@ -100,8 +109,6 @@ QGroupBox::title {
subcontrol-origin: margin; subcontrol-origin: margin;
subcontrol-position: top center; /* position at the top center */ subcontrol-position: top center; /* position at the top center */
padding: 0 3px; 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> }</string>
</property> </property>
@ -109,7 +116,7 @@ QGroupBox::title {
<enum>QTabWidget::Rounded</enum> <enum>QTabWidget::Rounded</enum>
</property> </property>
<property name="currentIndex"> <property name="currentIndex">
<number>0</number> <number>1</number>
</property> </property>
<property name="documentMode"> <property name="documentMode">
<bool>false</bool> <bool>false</bool>
@ -119,42 +126,969 @@ QGroupBox::title {
<string>Basic settings</string> <string>Basic settings</string>
</attribute> </attribute>
<layout class="QGridLayout" name="gridLayout_6"> <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> <number>9</number>
</property> </property>
<property name="spacing"> <property name="spacing">
<number>6</number> <number>6</number>
</property> </property>
<item row="0" column="0"> <item row="0" column="4">
<layout class="QVBoxLayout" name="ccpmSettingsBox" stretch="0,1,1,0,0"> <widget class="QGroupBox" name="ccpmSwashImageBox">
<item>
<widget class="QGroupBox" name="SwashplateBox_2">
<property name="sizePolicy"> <property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Maximum"> <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="ccpmRevoMixingBox">
<property name="enabled">
<bool>true</bool>
</property>
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="MinimumExpanding">
<horstretch>0</horstretch> <horstretch>0</horstretch>
<verstretch>0</verstretch> <verstretch>0</verstretch>
</sizepolicy> </sizepolicy>
</property> </property>
<property name="minimumSize">
<size>
<width>70</width>
<height>100</height>
</size>
</property>
<property name="maximumSize"> <property name="maximumSize">
<size> <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> <height>16777215</height>
</size> </size>
</property> </property>
<property name="title"> <property name="title">
<string>Motor outputs</string> <string>Motor outputs</string>
</property> </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"> <layout class="QGridLayout" name="gridLayout_18">
<property name="horizontalSpacing"> <property name="leftMargin">
<number>3</number> <number>3</number>
</property> </property>
<property name="verticalSpacing"> <property name="topMargin">
<number>2</number> <number>30</number>
</property> </property>
<property name="margin"> <property name="rightMargin">
<number>3</number> <number>3</number>
</property> </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"> <widget class="QComboBox" name="ccpmTailChannel">
<property name="sizePolicy"> <property name="sizePolicy">
<sizepolicy hsizetype="MinimumExpanding" vsizetype="Fixed"> <sizepolicy hsizetype="MinimumExpanding" vsizetype="Fixed">
@ -171,12 +1105,12 @@ QGroupBox::title {
<property name="maximumSize"> <property name="maximumSize">
<size> <size>
<width>100</width> <width>100</width>
<height>16777215</height> <height>25</height>
</size> </size>
</property> </property>
</widget> </widget>
</item> </item>
<item row="1" column="1"> <item row="0" column="1">
<widget class="QComboBox" name="ccpmEngineChannel"> <widget class="QComboBox" name="ccpmEngineChannel">
<property name="sizePolicy"> <property name="sizePolicy">
<sizepolicy hsizetype="MinimumExpanding" vsizetype="Fixed"> <sizepolicy hsizetype="MinimumExpanding" vsizetype="Fixed">
@ -193,12 +1127,12 @@ QGroupBox::title {
<property name="maximumSize"> <property name="maximumSize">
<size> <size>
<width>100</width> <width>100</width>
<height>16777215</height> <height>25</height>
</size> </size>
</property> </property>
</widget> </widget>
</item> </item>
<item row="2" column="0"> <item row="1" column="0">
<widget class="QLabel" name="ccpmTailLabel"> <widget class="QLabel" name="ccpmTailLabel">
<property name="sizePolicy"> <property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Preferred"> <sizepolicy hsizetype="Fixed" vsizetype="Preferred">
@ -223,7 +1157,7 @@ QGroupBox::title {
</property> </property>
</widget> </widget>
</item> </item>
<item row="1" column="0"> <item row="0" column="0">
<widget class="QLabel" name="ccpmEngineLabel"> <widget class="QLabel" name="ccpmEngineLabel">
<property name="sizePolicy"> <property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Preferred"> <sizepolicy hsizetype="Fixed" vsizetype="Preferred">
@ -248,36 +1182,26 @@ QGroupBox::title {
</property> </property>
</widget> </widget>
</item> </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> </layout>
</widget> </widget>
</item> </item>
<item> <item>
<widget class="QGroupBox" name="SwashplateBox"> <widget class="QGroupBox" name="SwashplateBox">
<property name="sizePolicy"> <property name="sizePolicy">
<sizepolicy hsizetype="Maximum" vsizetype="Maximum"> <sizepolicy hsizetype="Fixed" vsizetype="MinimumExpanding">
<horstretch>0</horstretch> <horstretch>0</horstretch>
<verstretch>0</verstretch> <verstretch>12</verstretch>
</sizepolicy> </sizepolicy>
</property> </property>
<property name="minimumSize">
<size>
<width>200</width>
<height>0</height>
</size>
</property>
<property name="maximumSize"> <property name="maximumSize">
<size> <size>
<width>190</width> <width>16777215</width>
<height>16777215</height> <height>16777215</height>
</size> </size>
</property> </property>
@ -285,16 +1209,22 @@ QGroupBox::title {
<string>Swashplate outputs</string> <string>Swashplate outputs</string>
</property> </property>
<layout class="QGridLayout" name="gridLayout_19"> <layout class="QGridLayout" name="gridLayout_19">
<property name="horizontalSpacing"> <property name="leftMargin">
<number>3</number> <number>3</number>
</property> </property>
<property name="verticalSpacing"> <property name="topMargin">
<number>2</number> <number>30</number>
</property> </property>
<property name="margin"> <property name="rightMargin">
<number>3</number> <number>3</number>
</property> </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"> <widget class="QLabel" name="ccpmServoWLabel">
<property name="enabled"> <property name="enabled">
<bool>true</bool> <bool>true</bool>
@ -322,7 +1252,7 @@ QGroupBox::title {
</property> </property>
</widget> </widget>
</item> </item>
<item row="1" column="1"> <item row="0" column="1">
<widget class="QComboBox" name="ccpmServoWChannel"> <widget class="QComboBox" name="ccpmServoWChannel">
<property name="enabled"> <property name="enabled">
<bool>true</bool> <bool>true</bool>
@ -342,12 +1272,12 @@ QGroupBox::title {
<property name="maximumSize"> <property name="maximumSize">
<size> <size>
<width>100</width> <width>100</width>
<height>16777215</height> <height>25</height>
</size> </size>
</property> </property>
</widget> </widget>
</item> </item>
<item row="2" column="1"> <item row="1" column="1">
<widget class="QComboBox" name="ccpmServoXChannel"> <widget class="QComboBox" name="ccpmServoXChannel">
<property name="sizePolicy"> <property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Fixed"> <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
@ -364,12 +1294,12 @@ QGroupBox::title {
<property name="maximumSize"> <property name="maximumSize">
<size> <size>
<width>100</width> <width>100</width>
<height>16777215</height> <height>25</height>
</size> </size>
</property> </property>
</widget> </widget>
</item> </item>
<item row="4" column="1"> <item row="3" column="1">
<widget class="QComboBox" name="ccpmServoYChannel"> <widget class="QComboBox" name="ccpmServoYChannel">
<property name="enabled"> <property name="enabled">
<bool>true</bool> <bool>true</bool>
@ -389,12 +1319,12 @@ QGroupBox::title {
<property name="maximumSize"> <property name="maximumSize">
<size> <size>
<width>100</width> <width>100</width>
<height>16777215</height> <height>25</height>
</size> </size>
</property> </property>
</widget> </widget>
</item> </item>
<item row="2" column="0"> <item row="1" column="0">
<widget class="QLabel" name="ccpmServoXLabel"> <widget class="QLabel" name="ccpmServoXLabel">
<property name="sizePolicy"> <property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Preferred"> <sizepolicy hsizetype="Fixed" vsizetype="Preferred">
@ -419,7 +1349,7 @@ QGroupBox::title {
</property> </property>
</widget> </widget>
</item> </item>
<item row="6" column="1"> <item row="5" column="1">
<widget class="QComboBox" name="ccpmSingleServo"> <widget class="QComboBox" name="ccpmSingleServo">
<property name="sizePolicy"> <property name="sizePolicy">
<sizepolicy hsizetype="MinimumExpanding" vsizetype="Fixed"> <sizepolicy hsizetype="MinimumExpanding" vsizetype="Fixed">
@ -461,7 +1391,7 @@ QGroupBox::title {
</item> </item>
</widget> </widget>
</item> </item>
<item row="6" column="0"> <item row="5" column="0">
<widget class="QLabel" name="ccpmServoZLabel_3"> <widget class="QLabel" name="ccpmServoZLabel_3">
<property name="sizePolicy"> <property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Preferred"> <sizepolicy hsizetype="Fixed" vsizetype="Preferred">
@ -486,7 +1416,7 @@ QGroupBox::title {
</property> </property>
</widget> </widget>
</item> </item>
<item row="5" column="1"> <item row="4" column="1">
<widget class="QComboBox" name="ccpmServoZChannel"> <widget class="QComboBox" name="ccpmServoZChannel">
<property name="sizePolicy"> <property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Fixed"> <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
@ -503,12 +1433,12 @@ QGroupBox::title {
<property name="maximumSize"> <property name="maximumSize">
<size> <size>
<width>100</width> <width>100</width>
<height>16777215</height> <height>25</height>
</size> </size>
</property> </property>
</widget> </widget>
</item> </item>
<item row="5" column="0"> <item row="4" column="0">
<widget class="QLabel" name="ccpmServoZLabel"> <widget class="QLabel" name="ccpmServoZLabel">
<property name="sizePolicy"> <property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Preferred"> <sizepolicy hsizetype="Fixed" vsizetype="Preferred">
@ -533,7 +1463,7 @@ QGroupBox::title {
</property> </property>
</widget> </widget>
</item> </item>
<item row="4" column="0"> <item row="3" column="0">
<widget class="QLabel" name="ccpmServoYLabel"> <widget class="QLabel" name="ccpmServoYLabel">
<property name="enabled"> <property name="enabled">
<bool>true</bool> <bool>true</bool>
@ -561,117 +1491,51 @@ QGroupBox::title {
</property> </property>
</widget> </widget>
</item> </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> </layout>
</widget> </widget>
</item> </item>
<item> <item>
<widget class="QGroupBox" name="SwashplateBox_3"> <widget class="QGroupBox" name="SwashplateBox_3">
<property name="sizePolicy"> <property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Maximum"> <sizepolicy hsizetype="Fixed" vsizetype="MinimumExpanding">
<horstretch>0</horstretch> <horstretch>0</horstretch>
<verstretch>0</verstretch> <verstretch>0</verstretch>
</sizepolicy> </sizepolicy>
</property> </property>
<property name="minimumSize"> <property name="minimumSize">
<size> <size>
<width>70</width> <width>200</width>
<height>0</height> <height>0</height>
</size> </size>
</property> </property>
<property name="maximumSize"> <property name="maximumSize">
<size> <size>
<width>190</width> <width>16777215</width>
<height>16777215</height> <height>16777215</height>
</size> </size>
</property> </property>
<property name="title"> <property name="title">
<string>Swashplate Servo Angles</string> <string>Swashplate Servo Angles</string>
</property> </property>
<property name="alignment">
<set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter</set>
</property>
<layout class="QGridLayout" name="gridLayout_20"> <layout class="QGridLayout" name="gridLayout_20">
<property name="horizontalSpacing"> <property name="leftMargin">
<number>3</number> <number>3</number>
</property> </property>
<property name="verticalSpacing"> <property name="topMargin">
<number>2</number> <number>30</number>
</property> </property>
<property name="margin"> <property name="rightMargin">
<number>3</number> <number>3</number>
</property> </property>
<item row="1" column="1"> <property name="bottomMargin">
<widget class="QDoubleSpinBox" name="ccpmAngleW"> <number>3</number>
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property> </property>
<property name="minimumSize"> <property name="spacing">
<size> <number>3</number>
<width>85</width>
<height>0</height>
</size>
</property> </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"> <item row="2" column="0">
<widget class="QLabel" name="ccpmServoXLabel_2"> <widget class="QLabel" name="ccpmServoXLabel_2">
<property name="sizePolicy"> <property name="sizePolicy">
@ -798,7 +1662,7 @@ QGroupBox::title {
<property name="maximumSize"> <property name="maximumSize">
<size> <size>
<width>85</width> <width>85</width>
<height>16777215</height> <height>25</height>
</size> </size>
</property> </property>
<property name="decimals"> <property name="decimals">
@ -832,7 +1696,7 @@ QGroupBox::title {
<property name="maximumSize"> <property name="maximumSize">
<size> <size>
<width>85</width> <width>85</width>
<height>16777215</height> <height>25</height>
</size> </size>
</property> </property>
<property name="decimals"> <property name="decimals">
@ -863,7 +1727,7 @@ QGroupBox::title {
<property name="maximumSize"> <property name="maximumSize">
<size> <size>
<width>85</width> <width>85</width>
<height>16777215</height> <height>25</height>
</size> </size>
</property> </property>
<property name="decimals"> <property name="decimals">
@ -894,7 +1758,7 @@ QGroupBox::title {
<property name="maximumSize"> <property name="maximumSize">
<size> <size>
<width>85</width> <width>85</width>
<height>16777215</height> <height>25</height>
</size> </size>
</property> </property>
<property name="decimals"> <property name="decimals">
@ -908,21 +1772,64 @@ QGroupBox::title {
</property> </property>
</widget> </widget>
</item> </item>
<item row="0" column="0"> <item row="1" column="0">
<spacer name="verticalSpacer_7"> <widget class="QLabel" name="ccpmServoWLabel_2">
<property name="orientation"> <property name="enabled">
<enum>Qt::Vertical</enum> <bool>true</bool>
</property> </property>
<property name="sizeType"> <property name="sizePolicy">
<enum>QSizePolicy::Fixed</enum> <sizepolicy hsizetype="Fixed" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property> </property>
<property name="sizeHint" stdset="0"> <property name="minimumSize">
<size> <size>
<width>20</width> <width>80</width>
<height>20</height> <height>0</height>
</size> </size>
</property> </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> </item>
</layout> </layout>
</widget> </widget>
@ -930,14 +1837,20 @@ QGroupBox::title {
<item> <item>
<widget class="QGroupBox" name="SwashplateBox_4"> <widget class="QGroupBox" name="SwashplateBox_4">
<property name="sizePolicy"> <property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Maximum"> <sizepolicy hsizetype="Fixed" vsizetype="MinimumExpanding">
<horstretch>0</horstretch> <horstretch>0</horstretch>
<verstretch>0</verstretch> <verstretch>0</verstretch>
</sizepolicy> </sizepolicy>
</property> </property>
<property name="minimumSize">
<size>
<width>200</width>
<height>0</height>
</size>
</property>
<property name="maximumSize"> <property name="maximumSize">
<size> <size>
<width>190</width> <width>16777215</width>
<height>16777215</height> <height>16777215</height>
</size> </size>
</property> </property>
@ -945,23 +1858,29 @@ QGroupBox::title {
<string>CCPM Options</string> <string>CCPM Options</string>
</property> </property>
<layout class="QGridLayout" name="gridLayout_21"> <layout class="QGridLayout" name="gridLayout_21">
<property name="horizontalSpacing"> <property name="leftMargin">
<number>3</number> <number>3</number>
</property> </property>
<property name="verticalSpacing"> <property name="topMargin">
<number>2</number> <number>30</number>
</property> </property>
<property name="margin"> <property name="rightMargin">
<number>3</number> <number>3</number>
</property> </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"> <widget class="QCheckBox" name="ccpmCollectivePassthrough">
<property name="text"> <property name="text">
<string>Collective Pass through</string> <string>Collective Pass through</string>
</property> </property>
</widget> </widget>
</item> </item>
<item row="4" column="0"> <item row="3" column="0">
<widget class="QCheckBox" name="ccpmLinkRoll"> <widget class="QCheckBox" name="ccpmLinkRoll">
<property name="text"> <property name="text">
<string>Link Roll/Pitch</string> <string>Link Roll/Pitch</string>
@ -971,7 +1890,7 @@ QGroupBox::title {
</property> </property>
</widget> </widget>
</item> </item>
<item row="3" column="0"> <item row="2" column="0">
<widget class="QCheckBox" name="ccpmLinkCyclic"> <widget class="QCheckBox" name="ccpmLinkCyclic">
<property name="text"> <property name="text">
<string>Link Cyclic/Collective</string> <string>Link Cyclic/Collective</string>
@ -981,895 +1900,6 @@ QGroupBox::title {
</property> </property>
</widget> </widget>
</item> </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> </layout>
</widget> </widget>
</item> </item>
@ -1882,7 +1912,16 @@ margin:1px;
<string>Swashplate Levelling</string> <string>Swashplate Levelling</string>
</attribute> </attribute>
<layout class="QGridLayout" name="gridLayout_8"> <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> <number>9</number>
</property> </property>
<property name="spacing"> <property name="spacing">
@ -1890,13 +1929,16 @@ margin:1px;
</property> </property>
<item row="0" column="0"> <item row="0" column="0">
<layout class="QVBoxLayout" name="verticalLayout_8"> <layout class="QVBoxLayout" name="verticalLayout_8">
<property name="spacing">
<number>6</number>
</property>
<property name="leftMargin"> <property name="leftMargin">
<number>3</number> <number>3</number>
</property> </property>
<item> <item>
<widget class="QGroupBox" name="SwashLvlInstructionsBox"> <widget class="QGroupBox" name="SwashLvlInstructionsBox">
<property name="sizePolicy"> <property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Maximum"> <sizepolicy hsizetype="MinimumExpanding" vsizetype="MinimumExpanding">
<horstretch>0</horstretch> <horstretch>0</horstretch>
<verstretch>0</verstretch> <verstretch>0</verstretch>
</sizepolicy> </sizepolicy>
@ -1904,43 +1946,70 @@ margin:1px;
<property name="minimumSize"> <property name="minimumSize">
<size> <size>
<width>228</width> <width>228</width>
<height>0</height> <height>200</height>
</size> </size>
</property> </property>
<property name="title"> <property name="title">
<string>Commands</string> <string>Commands</string>
</property> </property>
<layout class="QVBoxLayout" name="verticalLayout"> <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> <number>3</number>
</property> </property>
<item> <item>
<spacer name="verticalSpacer_16"> <layout class="QHBoxLayout" name="horizontalLayout_9">
<property name="orientation"> <property name="spacing">
<enum>Qt::Vertical</enum> <number>3</number>
</property> </property>
<property name="sizeType"> <property name="leftMargin">
<enum>QSizePolicy::Fixed</enum> <number>3</number>
</property> </property>
<property name="sizeHint" stdset="0"> <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> <size>
<width>20</width> <width>85</width>
<height>20</height> <height>20</height>
</size> </size>
</property> </property>
</spacer> <property name="maximumSize">
</item> <size>
<item> <width>85</width>
<layout class="QHBoxLayout" name="horizontalLayout_9"> <height>16777215</height>
<property name="spacing"> </size>
<number>0</number>
</property> </property>
<property name="text">
<string>Prev</string>
</property>
</widget>
</item>
<item> <item>
<widget class="QPushButton" name="SwashLvlStartButton"> <widget class="QPushButton" name="SwashLvlStartButton">
<property name="minimumSize"> <property name="minimumSize">
<size> <size>
<width>85</width> <width>85</width>
<height>0</height> <height>20</height>
</size> </size>
</property> </property>
<property name="maximumSize"> <property name="maximumSize">
@ -1962,7 +2031,7 @@ margin:1px;
<property name="minimumSize"> <property name="minimumSize">
<size> <size>
<width>85</width> <width>85</width>
<height>0</height> <height>20</height>
</size> </size>
</property> </property>
<property name="maximumSize"> <property name="maximumSize">
@ -1980,18 +2049,27 @@ margin:1px;
</item> </item>
<item> <item>
<widget class="QTextEdit" name="SwashLvlStepInstruction"> <widget class="QTextEdit" name="SwashLvlStepInstruction">
<property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="MinimumExpanding">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize"> <property name="minimumSize">
<size> <size>
<width>0</width> <width>250</width>
<height>150</height> <height>20</height>
</size> </size>
</property> </property>
<property name="maximumSize"> <property name="maximumSize">
<size> <size>
<width>220</width> <width>500</width>
<height>450</height> <height>800</height>
</size> </size>
</property> </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"> <property name="horizontalScrollBarPolicy">
<enum>Qt::ScrollBarAlwaysOff</enum> <enum>Qt::ScrollBarAlwaysOff</enum>
</property> </property>
@ -2002,37 +2080,21 @@ margin:1px;
</item> </item>
<item> <item>
<layout class="QGridLayout" name="gridLayout_3"> <layout class="QGridLayout" name="gridLayout_3">
<item row="0" column="0"> <property name="topMargin">
<widget class="QPushButton" name="SwashLvlCancelButton"> <number>3</number>
<property name="enabled">
<bool>false</bool>
</property> </property>
<property name="minimumSize"> <property name="bottomMargin">
<size> <number>3</number>
<width>170</width>
<height>0</height>
</size>
</property> </property>
<property name="maximumSize"> <item row="2" column="0">
<size>
<width>170</width>
<height>16777215</height>
</size>
</property>
<property name="text">
<string>Cancel</string>
</property>
</widget>
</item>
<item row="1" column="0">
<widget class="QPushButton" name="SwashLvlFinishButton"> <widget class="QPushButton" name="SwashLvlFinishButton">
<property name="enabled"> <property name="enabled">
<bool>false</bool> <bool>false</bool>
</property> </property>
<property name="minimumSize"> <property name="minimumSize">
<size> <size>
<width>170</width> <width>85</width>
<height>0</height> <height>20</height>
</size> </size>
</property> </property>
<property name="maximumSize"> <property name="maximumSize">
@ -2046,6 +2108,28 @@ margin:1px;
</property> </property>
</widget> </widget>
</item> </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> </layout>
</item> </item>
</layout> </layout>
@ -2054,7 +2138,7 @@ margin:1px;
<item> <item>
<widget class="QGroupBox" name="SwashLvlStatusBox"> <widget class="QGroupBox" name="SwashLvlStatusBox">
<property name="sizePolicy"> <property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Maximum"> <sizepolicy hsizetype="MinimumExpanding" vsizetype="Fixed">
<horstretch>0</horstretch> <horstretch>0</horstretch>
<verstretch>0</verstretch> <verstretch>0</verstretch>
</sizepolicy> </sizepolicy>
@ -2062,36 +2146,78 @@ margin:1px;
<property name="minimumSize"> <property name="minimumSize">
<size> <size>
<width>200</width> <width>200</width>
<height>0</height> <height>130</height>
</size> </size>
</property> </property>
<property name="title"> <property name="title">
<string>Status</string> <string>Status</string>
</property> </property>
<layout class="QGridLayout" name="gridLayout_22"> <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"> <property name="horizontalSpacing">
<number>3</number> <number>3</number>
</property> </property>
<property name="verticalSpacing"> <property name="verticalSpacing">
<number>2</number> <number>2</number>
</property> </property>
<property name="margin"> <item row="0" column="0">
<number>3</number>
</property>
<item row="1" column="0">
<widget class="QListWidget" name="SwashLvlStepList"> <widget class="QListWidget" name="SwashLvlStepList">
<property name="sizePolicy">
<sizepolicy hsizetype="MinimumExpanding" vsizetype="MinimumExpanding">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize"> <property name="minimumSize">
<size> <size>
<width>220</width> <width>100</width>
<height>0</height> <height>0</height>
</size> </size>
</property> </property>
<property name="maximumSize"> <property name="maximumSize">
<size> <size>
<width>190</width> <width>100</width>
<height>125</height> <height>92</height>
</size> </size>
</property> </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"> <property name="editTriggers">
<set>QAbstractItemView::NoEditTriggers</set> <set>QAbstractItemView::NoEditTriggers</set>
</property> </property>
@ -2104,6 +2230,9 @@ margin:1px;
<property name="selectionBehavior"> <property name="selectionBehavior">
<enum>QAbstractItemView::SelectRows</enum> <enum>QAbstractItemView::SelectRows</enum>
</property> </property>
<property name="viewMode">
<enum>QListView::ListMode</enum>
</property>
<item> <item>
<property name="text"> <property name="text">
<string>Neutral</string> <string>Neutral</string>
@ -2152,41 +2281,9 @@ margin:1px;
</item> </item>
</widget> </widget>
</item> </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> </layout>
</widget> </widget>
</item> </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> </layout>
</item> </item>
<item row="0" column="1"> <item row="0" column="1">
@ -2195,7 +2292,7 @@ margin:1px;
<bool>true</bool> <bool>true</bool>
</property> </property>
<property name="sizePolicy"> <property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Expanding"> <sizepolicy hsizetype="Fixed" vsizetype="MinimumExpanding">
<horstretch>0</horstretch> <horstretch>0</horstretch>
<verstretch>0</verstretch> <verstretch>0</verstretch>
</sizepolicy> </sizepolicy>
@ -2203,13 +2300,13 @@ margin:1px;
<property name="minimumSize"> <property name="minimumSize">
<size> <size>
<width>70</width> <width>70</width>
<height>100</height> <height>250</height>
</size> </size>
</property> </property>
<property name="maximumSize"> <property name="maximumSize">
<size> <size>
<width>50</width> <width>16777215</width>
<height>600</height> <height>16777215</height>
</size> </size>
</property> </property>
<property name="title"> <property name="title">
@ -2220,27 +2317,20 @@ margin:1px;
</property> </property>
<layout class="QVBoxLayout" name="verticalLayout_5"> <layout class="QVBoxLayout" name="verticalLayout_5">
<property name="spacing"> <property name="spacing">
<number>0</number>
</property>
<property name="margin">
<number>3</number> <number>3</number>
</property> </property>
<item> <property name="leftMargin">
<spacer name="verticalSpacer_18"> <number>3</number>
<property name="orientation">
<enum>Qt::Vertical</enum>
</property> </property>
<property name="sizeType"> <property name="topMargin">
<enum>QSizePolicy::Fixed</enum> <number>30</number>
</property> </property>
<property name="sizeHint" stdset="0"> <property name="rightMargin">
<size> <number>3</number>
<width>20</width> </property>
<height>20</height> <property name="bottomMargin">
</size> <number>3</number>
</property> </property>
</spacer>
</item>
<item> <item>
<widget class="QLabel" name="label_17"> <widget class="QLabel" name="label_17">
<property name="enabled"> <property name="enabled">
@ -2338,7 +2428,7 @@ margin:1px;</string>
<item row="0" column="2"> <item row="0" column="2">
<widget class="QGroupBox" name="SwashLvlccpmSwashImageBox"> <widget class="QGroupBox" name="SwashLvlccpmSwashImageBox">
<property name="sizePolicy"> <property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Expanding"> <sizepolicy hsizetype="MinimumExpanding" vsizetype="MinimumExpanding">
<horstretch>1</horstretch> <horstretch>1</horstretch>
<verstretch>1</verstretch> <verstretch>1</verstretch>
</sizepolicy> </sizepolicy>
@ -2346,13 +2436,13 @@ margin:1px;</string>
<property name="minimumSize"> <property name="minimumSize">
<size> <size>
<width>200</width> <width>200</width>
<height>200</height> <height>300</height>
</size> </size>
</property> </property>
<property name="maximumSize"> <property name="maximumSize">
<size> <size>
<width>600</width> <width>16777215</width>
<height>600</height> <height>16777215</height>
</size> </size>
</property> </property>
<property name="sizeIncrement"> <property name="sizeIncrement">
@ -2380,13 +2470,22 @@ margin:1px;</string>
<bool>false</bool> <bool>false</bool>
</property> </property>
<layout class="QGridLayout" name="gridLayout_11"> <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"> <property name="horizontalSpacing">
<number>3</number> <number>6</number>
</property> </property>
<property name="margin"> <item row="0" column="0">
<number>3</number>
</property>
<item row="1" column="0">
<widget class="QSplitter" name="splitter_4"> <widget class="QSplitter" name="splitter_4">
<property name="orientation"> <property name="orientation">
<enum>Qt::Vertical</enum> <enum>Qt::Vertical</enum>
@ -2400,8 +2499,8 @@ margin:1px;</string>
</property> </property>
<property name="minimumSize"> <property name="minimumSize">
<size> <size>
<width>10</width> <width>250</width>
<height>10</height> <height>300</height>
</size> </size>
</property> </property>
<property name="maximumSize"> <property name="maximumSize">
@ -2475,22 +2574,6 @@ margin:1px;</string>
</widget> </widget>
</widget> </widget>
</item> </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> </layout>
</widget> </widget>
</item> </item>
@ -2501,7 +2584,16 @@ margin:1px;</string>
<string>Curve settings</string> <string>Curve settings</string>
</attribute> </attribute>
<layout class="QGridLayout" name="gridLayout_7"> <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> <number>9</number>
</property> </property>
<property name="spacing"> <property name="spacing">
@ -2554,7 +2646,16 @@ margin:1px;</string>
<bool>false</bool> <bool>false</bool>
</property> </property>
<layout class="QGridLayout" name="gridLayout"> <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> <number>0</number>
</property> </property>
<property name="spacing"> <property name="spacing">
@ -2627,7 +2728,16 @@ margin:1px;</string>
<string/> <string/>
</property> </property>
<layout class="QGridLayout" name="gridLayout_5"> <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> <number>0</number>
</property> </property>
<property name="spacing"> <property name="spacing">
@ -2695,7 +2805,16 @@ margin:1px;</string>
<string>Advanced settings</string> <string>Advanced settings</string>
</attribute> </attribute>
<layout class="QGridLayout" name="gridLayout_4"> <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> <number>9</number>
</property> </property>
<property name="spacing"> <property name="spacing">
@ -3140,7 +3259,6 @@ margin:1px;</string>
<tabstop>ccpmServoYChannel</tabstop> <tabstop>ccpmServoYChannel</tabstop>
<tabstop>ccpmServoZChannel</tabstop> <tabstop>ccpmServoZChannel</tabstop>
<tabstop>ccpmSingleServo</tabstop> <tabstop>ccpmSingleServo</tabstop>
<tabstop>ccpmAngleW</tabstop>
<tabstop>ccpmAngleX</tabstop> <tabstop>ccpmAngleX</tabstop>
<tabstop>ccpmAngleY</tabstop> <tabstop>ccpmAngleY</tabstop>
<tabstop>ccpmAngleZ</tabstop> <tabstop>ccpmAngleZ</tabstop>
@ -3150,9 +3268,7 @@ margin:1px;</string>
<tabstop>ccpmCollectiveSlider</tabstop> <tabstop>ccpmCollectiveSlider</tabstop>
<tabstop>ccpmCollectivespinBox</tabstop> <tabstop>ccpmCollectivespinBox</tabstop>
<tabstop>SwashplateImage</tabstop> <tabstop>SwashplateImage</tabstop>
<tabstop>SwashLvlStartButton</tabstop>
<tabstop>SwashLvlNextButton</tabstop> <tabstop>SwashLvlNextButton</tabstop>
<tabstop>SwashLvlStepInstruction</tabstop>
<tabstop>SwashLvlCancelButton</tabstop> <tabstop>SwashLvlCancelButton</tabstop>
<tabstop>SwashLvlFinishButton</tabstop> <tabstop>SwashLvlFinishButton</tabstop>
<tabstop>SwashLvlStepList</tabstop> <tabstop>SwashLvlStepList</tabstop>

View File

@ -40,8 +40,6 @@
#include <math.h> #include <math.h>
#define Pi 3.14159265358979323846
QStringList ConfigCcpmWidget::getChannelDescriptions() QStringList ConfigCcpmWidget::getChannelDescriptions()
{ {
// init a channel_numelem list of channel desc defaults // init a channel_numelem list of channel desc defaults
@ -181,16 +179,19 @@ ConfigCcpmWidget::ConfigCcpmWidget(QWidget *parent) :
Servos[i] = new QGraphicsSvgItem(); Servos[i] = new QGraphicsSvgItem();
Servos[i]->setSharedRenderer(renderer); Servos[i]->setSharedRenderer(renderer);
Servos[i]->setElementId(ServoNames.at(i)); Servos[i]->setElementId(ServoNames.at(i));
Servos[i]->setZValue(20);
m_aircraft->SwashplateImage->scene()->addItem(Servos[i]); m_aircraft->SwashplateImage->scene()->addItem(Servos[i]);
ServosText[i] = new QGraphicsTextItem(); ServosText[i] = new QGraphicsTextItem();
ServosText[i]->setDefaultTextColor(Qt::yellow); ServosText[i]->setDefaultTextColor(Qt::yellow);
ServosText[i]->setPlainText(QString("-")); ServosText[i]->setPlainText(QString("-"));
ServosText[i]->setFont(serifFont); ServosText[i]->setFont(serifFont);
ServosText[i]->setZValue(31);
ServosTextCircles[i] = new QGraphicsEllipseItem(1, 1, 30, 30); ServosTextCircles[i] = new QGraphicsEllipseItem(1, 1, 30, 30);
ServosTextCircles[i]->setBrush(brush); ServosTextCircles[i]->setBrush(brush);
ServosTextCircles[i]->setPen(pen2); ServosTextCircles[i]->setPen(pen2);
ServosTextCircles[i]->setZValue(30);
m_aircraft->SwashplateImage->scene()->addItem(ServosTextCircles[i]); m_aircraft->SwashplateImage->scene()->addItem(ServosTextCircles[i]);
m_aircraft->SwashplateImage->scene()->addItem(ServosText[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->SwashLvlStartButton, SIGNAL(clicked()), this, SLOT(SwashLvlStartButtonPressed()));
connect(m_aircraft->SwashLvlNextButton, SIGNAL(clicked()), this, SLOT(SwashLvlNextButtonPressed())); 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->SwashLvlCancelButton, SIGNAL(clicked()), this, SLOT(SwashLvlCancelButtonPressed()));
connect(m_aircraft->SwashLvlFinishButton, SIGNAL(clicked()), this, SLOT(SwashLvlFinishButtonPressed())); connect(m_aircraft->SwashLvlFinishButton, SIGNAL(clicked()), this, SLOT(SwashLvlFinishButtonPressed()));
@ -391,9 +393,13 @@ void ConfigCcpmWidget::UpdateType()
TypeText = m_aircraft->ccpmType->currentText(); TypeText = m_aircraft->ccpmType->currentText();
SingleServoIndex = m_aircraft->ccpmSingleServo->currentIndex(); 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->setEnabled(TypeInt == 0);
// 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->ccpmAdvancedSettingsTable->clearFocus();
}
m_aircraft->ccpmAngleW->setEnabled(TypeInt == 1); m_aircraft->ccpmAngleW->setEnabled(TypeInt == 1);
m_aircraft->ccpmAngleX->setEnabled(TypeInt == 1); m_aircraft->ccpmAngleX->setEnabled(TypeInt == 1);
@ -552,15 +558,19 @@ void ConfigCcpmWidget::ccpmSwashplateRedraw()
QRect size; QRect size;
double scale, xscale, yscale; double scale, xscale, yscale;
size = m_aircraft->SwashplateImage->rect(); size = m_aircraft->SwashplateImage->rect();
// If size = default, get size from other Img/tab
if (size.width() == 100) {
size = m_aircraft->SwashLvlSwashplateImage->rect();
}
xscale = size.width(); xscale = size.width();
yscale = size.height(); yscale = size.height();
scale = xscale; scale = xscale;
if (yscale < scale) { if (yscale < scale) {
scale = yscale; scale = yscale;
} }
scale /= 460.00; scale /= 540.00;
m_aircraft->SwashplateImage->resetTransform(); m_aircraft->SwashplateImage->resetTransform();
m_aircraft->SwashplateImage->scale(scale, scale); 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[1] = ((m_aircraft->ccpmServoXChannel->currentIndex() > 0) && (m_aircraft->ccpmServoXChannel->isEnabled()));
used[2] = ((m_aircraft->ccpmServoYChannel->currentIndex() > 0) && (m_aircraft->ccpmServoYChannel->isEnabled())); used[2] = ((m_aircraft->ccpmServoYChannel->currentIndex() > 0) && (m_aircraft->ccpmServoYChannel->isEnabled()));
used[3] = ((m_aircraft->ccpmServoZChannel->currentIndex() > 0) && (m_aircraft->ccpmServoZChannel->isEnabled())); used[3] = ((m_aircraft->ccpmServoZChannel->currentIndex() > 0) && (m_aircraft->ccpmServoZChannel->isEnabled()));
angle[0] = (CorrectionAngle + 180 + m_aircraft->ccpmAngleW->value()) * Pi / 180.00; angle[0] = (CorrectionAngle + 180 + m_aircraft->ccpmAngleW->value()) * M_PI / 180.00;
angle[1] = (CorrectionAngle + 180 + m_aircraft->ccpmAngleX->value()) * Pi / 180.00; angle[1] = (CorrectionAngle + 180 + m_aircraft->ccpmAngleX->value()) * M_PI / 180.00;
angle[2] = (CorrectionAngle + 180 + m_aircraft->ccpmAngleY->value()) * Pi / 180.00; angle[2] = (CorrectionAngle + 180 + m_aircraft->ccpmAngleY->value()) * M_PI / 180.00;
angle[3] = (CorrectionAngle + 180 + m_aircraft->ccpmAngleZ->value()) * Pi / 180.00; angle[3] = (CorrectionAngle + 180 + m_aircraft->ccpmAngleZ->value()) * M_PI / 180.00;
for (i = 0; i < CCPM_MAX_SWASH_SERVOS; i++) { for (i = 0; i < CCPM_MAX_SWASH_SERVOS; i++) {
@ -640,16 +650,16 @@ void ConfigCcpmWidget::ccpmSwashplateRedraw()
ServoLines[i]->setVisible(defined[i] != 0); 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); // m_aircraft->SwashplateImage->fitInView(SwashplateImg, Qt::KeepAspectRatio);
} }
void ConfigCcpmWidget::ccpmSwashplateUpdate() void ConfigCcpmWidget::ccpmSwashplateUpdate()
{ {
ccpmSwashplateRedraw();
SetUIComponentVisibilities();
UpdateMixer(); UpdateMixer();
SetUIComponentVisibilities();
ccpmSwashplateRedraw();
} }
void ConfigCcpmWidget::UpdateMixer() void ConfigCcpmWidget::UpdateMixer()
@ -685,8 +695,8 @@ void ConfigCcpmWidget::UpdateMixer()
; ;
} }
} }
int TypeInt = m_aircraft->ccpmType->count() - m_aircraft->ccpmType->currentIndex() - 1;
if (config.heli.SwashplateType > 0) { // not advanced settings if (TypeInt != 0) { // not advanced settings
// get the channel data from the ui // get the channel data from the ui
MixerChannelData[0] = m_aircraft->ccpmEngineChannel->currentIndex(); MixerChannelData[0] = m_aircraft->ccpmEngineChannel->currentIndex();
MixerChannelData[1] = m_aircraft->ccpmTailChannel->currentIndex(); MixerChannelData[1] = m_aircraft->ccpmTailChannel->currentIndex();
@ -762,11 +772,11 @@ void ConfigCcpmWidget::UpdateMixer()
table->item(i, 3)->setText( table->item(i, 3)->setText(
QString("%1").arg( QString("%1").arg(
(int)(127.0 * (RollConstant) (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( table->item(i, 4)->setText(
QString("%1").arg( QString("%1").arg(
(int)(127.0 * (PitchConstant) (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 // Yaw
table->item(i, 5)->setText(QString("%1").arg(0)); table->item(i, 5)->setText(QString("%1").arg(0));
} }
@ -779,10 +789,11 @@ void ConfigCcpmWidget::UpdateMixer()
} else { } else {
// advanced settings // advanced settings
QTableWidget *table = m_aircraft->ccpmAdvancedSettingsTable; QTableWidget *table = m_aircraft->ccpmAdvancedSettingsTable;
for (int i = 0; i < 6; i++) { for (int i = 0; i < 6; i++) {
Channel = table->item(i, 0)->text(); Channel = table->item(i, 0)->text();
if (Channel == "-") { if (Channel == "-") {
Channel = QString("9"); Channel = QString((int)ConfigCcpmWidget::CHANNEL_NUMELEM + 1);
} }
MixerChannelData[i] = Channel.toInt(); MixerChannelData[i] = Channel.toInt();
} }
@ -874,6 +885,15 @@ void ConfigCcpmWidget::SetUIComponentVisibilities()
m_aircraft->ccpmRollScalingBox->setVisible(!m_aircraft->ccpmLinkRoll->isChecked()); m_aircraft->ccpmRollScalingBox->setVisible(!m_aircraft->ccpmLinkRoll->isChecked());
m_aircraft->ccpmLinkRoll->setVisible(1); 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(); UpdateMixer();
// Set up some helper pointers // Set up some helper pointers
qint8 *mixers[8] = { mixerSettingsData.Mixer1Vector, qint8 *mixers[12] = { mixerSettingsData.Mixer1Vector,
mixerSettingsData.Mixer2Vector, mixerSettingsData.Mixer2Vector,
mixerSettingsData.Mixer3Vector, mixerSettingsData.Mixer3Vector,
mixerSettingsData.Mixer4Vector, mixerSettingsData.Mixer4Vector,
mixerSettingsData.Mixer5Vector, mixerSettingsData.Mixer5Vector,
mixerSettingsData.Mixer6Vector, mixerSettingsData.Mixer6Vector,
mixerSettingsData.Mixer7Vector, mixerSettingsData.Mixer7Vector,
mixerSettingsData.Mixer8Vector }; mixerSettingsData.Mixer8Vector,
mixerSettingsData.Mixer9Vector,
mixerSettingsData.Mixer10Vector,
mixerSettingsData.Mixer11Vector,
mixerSettingsData.Mixer12Vector };
quint8 *mixerTypes[8] = { quint8 *mixerTypes[12] = {
&mixerSettingsData.Mixer1Type, &mixerSettingsData.Mixer1Type,
&mixerSettingsData.Mixer2Type, &mixerSettingsData.Mixer2Type,
&mixerSettingsData.Mixer3Type, &mixerSettingsData.Mixer3Type,
@ -956,17 +980,20 @@ void ConfigCcpmWidget::setMixer()
&mixerSettingsData.Mixer5Type, &mixerSettingsData.Mixer5Type,
&mixerSettingsData.Mixer6Type, &mixerSettingsData.Mixer6Type,
&mixerSettingsData.Mixer7Type, &mixerSettingsData.Mixer7Type,
&mixerSettingsData.Mixer8Type &mixerSettingsData.Mixer8Type,
&mixerSettingsData.Mixer9Type,
&mixerSettingsData.Mixer10Type,
&mixerSettingsData.Mixer11Type,
&mixerSettingsData.Mixer12Type
}; };
// reset all to Disabled // reset all to Disabled
for (i = 0; i < 8; i++) { for (i = 0; i < 8; i++) {
*mixerTypes[i] = 0; *mixerTypes[i] = 0;
} }
// go through the user data and update the mixer matrix // go through the user data and update the mixer matrix
for (i = 0; i < 6; i++) { 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 // 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) { if (TypeText.compare(QString::fromUtf8("Coax 2 Servo 90º"), Qt::CaseInsensitive) == 0) {
*(mixerTypes[MixerChannelData[i] - 1]) = i > 1 ? *(mixerTypes[MixerChannelData[i] - 1]) = i > 1 ?
@ -977,7 +1004,6 @@ void ConfigCcpmWidget::setMixer()
MixerSettings::MIXER1TYPE_SERVO : MixerSettings::MIXER1TYPE_SERVO :
MixerSettings::MIXER1TYPE_MOTOR; MixerSettings::MIXER1TYPE_MOTOR;
} }
// Configure the vector // Configure the vector
for (j = 0; j < 5; j++) { for (j = 0; j < 5; j++) {
mixers[MixerChannelData[i] - 1][j] = m_aircraft->ccpmAdvancedSettingsTable->item(i, j + 1)->text().toInt(); mixers[MixerChannelData[i] - 1][j] = m_aircraft->ccpmAdvancedSettingsTable->item(i, j + 1)->text().toInt();
@ -1052,8 +1078,8 @@ void ConfigCcpmWidget::SwashLvlStartButtonPressed()
QMessageBox msgBox; QMessageBox msgBox;
int i; int i;
msgBox.setText("<h1>Swashplate Leveling Routine</h1>"); msgBox.setText(tr("<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.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.setStandardButtons(QMessageBox::Yes | QMessageBox::Cancel);
msgBox.setDefaultButton(QMessageBox::Cancel); msgBox.setDefaultButton(QMessageBox::Cancel);
msgBox.setIcon(QMessageBox::Information); msgBox.setIcon(QMessageBox::Information);
@ -1075,6 +1101,7 @@ void ConfigCcpmWidget::SwashLvlStartButtonPressed()
m_aircraft->SwashLvlStartButton->setEnabled(false); m_aircraft->SwashLvlStartButton->setEnabled(false);
m_aircraft->SwashLvlNextButton->setEnabled(true); m_aircraft->SwashLvlNextButton->setEnabled(true);
m_aircraft->SwashLvlPrevButton->setEnabled(false);
m_aircraft->SwashLvlCancelButton->setEnabled(true); m_aircraft->SwashLvlCancelButton->setEnabled(true);
m_aircraft->SwashLvlFinishButton->setEnabled(false); m_aircraft->SwashLvlFinishButton->setEnabled(false);
// clear status check boxes // clear status check boxes
@ -1136,6 +1163,7 @@ void ConfigCcpmWidget::SwashLvlStartButtonPressed()
m_aircraft->SwashLvlStartButton->setEnabled(true); m_aircraft->SwashLvlStartButton->setEnabled(true);
m_aircraft->SwashLvlNextButton->setEnabled(false); m_aircraft->SwashLvlNextButton->setEnabled(false);
m_aircraft->SwashLvlPrevButton->setEnabled(false);
m_aircraft->SwashLvlCancelButton->setEnabled(false); m_aircraft->SwashLvlCancelButton->setEnabled(false);
m_aircraft->SwashLvlFinishButton->setEnabled(false); m_aircraft->SwashLvlFinishButton->setEnabled(false);
break; break;
@ -1145,15 +1173,24 @@ void ConfigCcpmWidget::SwashLvlStartButtonPressed()
} }
} }
void ConfigCcpmWidget::SwashLvlPrevButtonPressed()
{
SwashLvlState--;
SwashLvlPrevNextButtonPressed();
}
void ConfigCcpmWidget::SwashLvlNextButtonPressed() void ConfigCcpmWidget::SwashLvlNextButtonPressed()
{ {
// ShowDisclaimer(2);
SwashLvlState++; SwashLvlState++;
SwashLvlPrevNextButtonPressed();
}
void ConfigCcpmWidget::SwashLvlPrevNextButtonPressed()
{
switch (SwashLvlState) { switch (SwashLvlState) {
case 0: case 0:
break; break;
case 1: // Neutral levelling case 1: // Neutral levelling
m_aircraft->SwashLvlPrevButton->setEnabled(false);
m_aircraft->SwashLvlStepList->setCurrentRow(0); m_aircraft->SwashLvlStepList->setCurrentRow(0);
// set spin boxes and swashplate servos to Neutral values // set spin boxes and swashplate servos to Neutral values
setSwashplateLevel(50); setSwashplateLevel(50);
@ -1170,9 +1207,10 @@ void ConfigCcpmWidget::SwashLvlNextButtonPressed()
} }
// issue user instructions // issue user instructions
m_aircraft->SwashLvlStepInstruction->setHtml( 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; break;
case 2: // Max levelling case 2: // Max levelling
m_aircraft->SwashLvlPrevButton->setEnabled(true);
// check Neutral status as complete // check Neutral status as complete
m_aircraft->SwashLvlStepList->item(0)->setCheckState(Qt::Checked); m_aircraft->SwashLvlStepList->item(0)->setCheckState(Qt::Checked);
m_aircraft->SwashLvlStepList->setCurrentRow(1); m_aircraft->SwashLvlStepList->setCurrentRow(1);
@ -1183,7 +1221,7 @@ void ConfigCcpmWidget::SwashLvlNextButtonPressed()
m_aircraft->SwashLvlPositionSpinBox->setValue(100); m_aircraft->SwashLvlPositionSpinBox->setValue(100);
// issue user instructions // issue user instructions
m_aircraft->SwashLvlStepInstruction->setText( 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; break;
case 3: // Min levelling case 3: // Min levelling
// check Max status as complete // check Max status as complete
@ -1196,10 +1234,11 @@ void ConfigCcpmWidget::SwashLvlNextButtonPressed()
m_aircraft->SwashLvlPositionSpinBox->setValue(0); m_aircraft->SwashLvlPositionSpinBox->setValue(0);
// issue user instructions // issue user instructions
m_aircraft->SwashLvlStepInstruction->setText( 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; break;
case 4: // levelling verification case 4: // levelling verification
// check Min status as complete // check Min status as complete
m_aircraft->SwashLvlNextButton->setEnabled(true);
m_aircraft->SwashLvlStepList->item(2)->setCheckState(Qt::Checked); m_aircraft->SwashLvlStepList->item(2)->setCheckState(Qt::Checked);
m_aircraft->SwashLvlStepList->setCurrentRow(3); m_aircraft->SwashLvlStepList->setCurrentRow(3);
// enable position slider // enable position slider
@ -1214,14 +1253,14 @@ void ConfigCcpmWidget::SwashLvlNextButtonPressed()
// issue user instructions // issue user instructions
m_aircraft->SwashLvlStepInstruction->setText( 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; break;
case 5: // levelling complete case 5: // levelling complete
// check verify status as complete // check verify status as complete
m_aircraft->SwashLvlStepList->item(3)->setCheckState(Qt::Checked); m_aircraft->SwashLvlStepList->item(3)->setCheckState(Qt::Checked);
// issue user instructions // issue user instructions
m_aircraft->SwashLvlStepInstruction->setText( 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 // disable position slider
m_aircraft->SwashLvlPositionSlider->setEnabled(false); m_aircraft->SwashLvlPositionSlider->setEnabled(false);
m_aircraft->SwashLvlPositionSpinBox->setEnabled(false); m_aircraft->SwashLvlPositionSpinBox->setEnabled(false);
@ -1233,6 +1272,7 @@ void ConfigCcpmWidget::SwashLvlNextButtonPressed()
m_aircraft->SwashLvlStartButton->setEnabled(false); m_aircraft->SwashLvlStartButton->setEnabled(false);
m_aircraft->SwashLvlNextButton->setEnabled(false); m_aircraft->SwashLvlNextButton->setEnabled(false);
m_aircraft->SwashLvlPrevButton->setEnabled(true);
m_aircraft->SwashLvlCancelButton->setEnabled(true); m_aircraft->SwashLvlCancelButton->setEnabled(true);
m_aircraft->SwashLvlFinishButton->setEnabled(true); m_aircraft->SwashLvlFinishButton->setEnabled(true);
@ -1256,6 +1296,7 @@ void ConfigCcpmWidget::SwashLvlCancelButtonPressed()
m_aircraft->SwashLvlStartButton->setEnabled(true); m_aircraft->SwashLvlStartButton->setEnabled(true);
m_aircraft->SwashLvlNextButton->setEnabled(false); m_aircraft->SwashLvlNextButton->setEnabled(false);
m_aircraft->SwashLvlPrevButton->setEnabled(false);
m_aircraft->SwashLvlCancelButton->setEnabled(false); m_aircraft->SwashLvlCancelButton->setEnabled(false);
m_aircraft->SwashLvlFinishButton->setEnabled(false); m_aircraft->SwashLvlFinishButton->setEnabled(false);
@ -1287,7 +1328,9 @@ void ConfigCcpmWidget::SwashLvlCancelButtonPressed()
enableSwashplateLevellingControl(false); enableSwashplateLevellingControl(false);
m_aircraft->SwashLvlStepInstruction->setText( 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->SwashLvlStartButton->setEnabled(true);
m_aircraft->SwashLvlNextButton->setEnabled(false); m_aircraft->SwashLvlNextButton->setEnabled(false);
m_aircraft->SwashLvlPrevButton->setEnabled(false);
m_aircraft->SwashLvlCancelButton->setEnabled(false); m_aircraft->SwashLvlCancelButton->setEnabled(false);
m_aircraft->SwashLvlFinishButton->setEnabled(false); m_aircraft->SwashLvlFinishButton->setEnabled(false);
@ -1327,23 +1371,25 @@ void ConfigCcpmWidget::SwashLvlFinishButtonPressed()
enableSwashplateLevellingControl(false); enableSwashplateLevellingControl(false);
m_aircraft->SwashLvlStepInstruction->setText( 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(0);
// ShowDisclaimer(2); // ShowDisclaimer(2);
ccpmSwashplateUpdate();
} }
int ConfigCcpmWidget::ShowDisclaimer(int messageID) int ConfigCcpmWidget::ShowDisclaimer(int messageID)
{ {
QMessageBox msgBox; QMessageBox msgBox;
msgBox.setText("<font color=red><h1>Warning!!!</h2></font>"); msgBox.setText(tr("<font color=red><h1>Warning!!!</h2></font>"));
int ret; int ret;
switch (messageID) { switch (messageID) {
case 0: case 0:
// Basic disclaimer // Basic disclaimer
msgBox.setInformativeText( 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.setStandardButtons(QMessageBox::Ok);
msgBox.setDefaultButton(QMessageBox::Ok); msgBox.setDefaultButton(QMessageBox::Ok);
msgBox.setIcon(QMessageBox::Information); msgBox.setIcon(QMessageBox::Information);
@ -1354,7 +1400,7 @@ int ConfigCcpmWidget::ShowDisclaimer(int messageID)
case 1: case 1:
// Not Tested disclaimer // Not Tested disclaimer
msgBox.setInformativeText( 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.setStandardButtons(QMessageBox::Yes | QMessageBox::Cancel);
msgBox.setDefaultButton(QMessageBox::Cancel); msgBox.setDefaultButton(QMessageBox::Cancel);
msgBox.setIcon(QMessageBox::Warning); msgBox.setIcon(QMessageBox::Warning);
@ -1370,7 +1416,7 @@ int ConfigCcpmWidget::ShowDisclaimer(int messageID)
case 2: case 2:
// DO NOT use // DO NOT use
msgBox.setInformativeText( 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.setStandardButtons(QMessageBox::Ok);
msgBox.setDefaultButton(QMessageBox::Ok); msgBox.setDefaultButton(QMessageBox::Ok);
msgBox.setIcon(QMessageBox::Critical); msgBox.setIcon(QMessageBox::Critical);

View File

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

View File

@ -13,7 +13,7 @@
height="400" height="400"
id="svg2816" id="svg2816"
version="1.1" version="1.1"
inkscape:version="0.47 r22583" inkscape:version="0.48.5 r10040"
sodipodi:docname="ccpm_setup.svg"> sodipodi:docname="ccpm_setup.svg">
<defs <defs
id="defs2818"> id="defs2818">
@ -24,28 +24,55 @@
inkscape:vp_z="400 : 200 : 1" inkscape:vp_z="400 : 200 : 1"
inkscape:persp3d-origin="200 : 133.33333 : 1" inkscape:persp3d-origin="200 : 133.33333 : 1"
id="perspective2854" /> 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> </defs>
<sodipodi:namedview <sodipodi:namedview
pagecolor="#000000" pagecolor="#edebe7"
bordercolor="#000000" bordercolor="#000000"
borderopacity="1.0" borderopacity="1.0"
inkscape:pageopacity="1.0" inkscape:pageopacity="1"
inkscape:pageshadow="0" inkscape:pageshadow="0"
inkscape:zoom="1.8725" inkscape:zoom="0.93625"
inkscape:cx="121.49533" inkscape:cx="329.50243"
inkscape:cy="328.17089" inkscape:cy="22.483153"
inkscape:document-units="px" inkscape:document-units="px"
inkscape:current-layer="layer3" inkscape:current-layer="g4008"
id="namedview2820" id="namedview2820"
showgrid="false" showgrid="false"
showguides="true" showguides="false"
inkscape:snap-global="true" inkscape:snap-global="true"
inkscape:window-width="1680" inkscape:window-width="1280"
inkscape:window-height="994" inkscape:window-height="928"
inkscape:window-x="-4" inkscape:window-x="0"
inkscape:window-y="-4" inkscape:window-y="27"
inkscape:window-maximized="1" inkscape:window-maximized="1"
inkscape:guide-bbox="true"> inkscape:guide-bbox="true"
inkscape:snap-bbox="true"
inkscape:snap-bbox-midpoints="true">
<sodipodi:guide <sodipodi:guide
position="0,0" position="0,0"
orientation="0,744.09448" orientation="0,744.09448"
@ -94,7 +121,7 @@
<dc:format>image/svg+xml</dc:format> <dc:format>image/svg+xml</dc:format>
<dc:type <dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title /> <dc:title></dc:title>
</cc:Work> </cc:Work>
</rdf:RDF> </rdf:RDF>
</metadata> </metadata>
@ -115,28 +142,31 @@
<g <g
id="g4008"> id="g4008">
<path <path
transform="matrix(0.99009901,0,0,0.99009901,-198.0198,201.9802)" id="path4127"
sodipodi:type="arc" 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:#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" 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)"
id="Ring" inkscape:connector-curvature="0"
sodipodi:cx="200" transform="matrix(1.0083769,0,0,1.0083769,2.0000001e-6,-3.35076)" />
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 <path
sodipodi:type="arc" 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"
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" 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" id="Rotor"
sodipodi:cx="220" inkscape:connector-curvature="0" />
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
id="g4119"
transform="translate(366.35514,38.451268)" />
</g> </g>
</g> </g>
<g <g
@ -255,12 +285,15 @@
x="158" x="158"
sodipodi:role="line" /></text> sodipodi:role="line" /></text>
<path <path
style="fill:#ff6e00;stroke:#ff6e00;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;fill-opacity:1" 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 150.1962,151.94369" d="M 185.60761,186.1126 L 150.1962,151.94369"
id="RadialZ" id="RadialZ"
inkscape:connector-type="polyline" inkscape:connector-type="polyline"
inkscape:connection-start="#path3622" inkscape:connection-start="#path3622"
inkscape:connection-end="#path3957" inkscape:connection-end="#path3957"
inkscape:label="#path3981" /> inkscape:label="#path3981"
inkscape:connection-start-point="d4"
inkscape:connection-end-point="d4"
inkscape:connector-curvature="0" />
</g> </g>
</svg> </svg>

Before

Width:  |  Height:  |  Size: 10 KiB

After

Width:  |  Height:  |  Size: 12 KiB

View File

@ -167,7 +167,8 @@ void ConnectionDiagram::setupGraphicsScene()
case VehicleConfigurationSource::CONTROLLER_CC: case VehicleConfigurationSource::CONTROLLER_CC:
case VehicleConfigurationSource::CONTROLLER_CC3D: case VehicleConfigurationSource::CONTROLLER_CC3D:
prefix = "cc-"; prefix = "cc-";
if (m_configSource->getEscType() == VehicleConfigurationSource::ESC_ONESHOT) { if (m_configSource->getEscType() == VehicleConfigurationSource::ESC_ONESHOT ||
m_configSource->getEscType() == VehicleConfigurationSource::ESC_RAPID) {
suffix = "-oneshot"; suffix = "-oneshot";
} }
break; break;

View File

@ -169,15 +169,11 @@ bool AirframeInitialTuningPage::airframeIsCompatible(int vehicleType, int vehicl
} }
} }
void AirframeInitialTuningPage::loadValidFiles() void AirframeInitialTuningPage::loadFilesInDir(QString templateBasePath)
{ {
ui->templateList->clear(); QDir templateDir(templateBasePath);
foreach(QJsonObject * templ, m_templates.values()) {
delete templ;
}
m_templates.clear();
QDir templateDir(QString("%1/%2/").arg(Utils::PathUtils().InsertDataPath("%%DATAPATH%%cloudconfig")).arg(m_dir)); qDebug() << "Loading templates from base path:" << templateBasePath;
QStringList names; QStringList names;
names << "*.optmpl"; names << "*.optmpl";
templateDir.setNameFilters(names); templateDir.setNameFilters(names);
@ -207,6 +203,18 @@ void AirframeInitialTuningPage::loadValidFiles()
} }
} }
void AirframeInitialTuningPage::loadValidFiles()
{
ui->templateList->clear();
foreach(QJsonObject * templ, m_templates.values()) {
delete templ;
}
m_templates.clear();
loadFilesInDir(QString("%1/%2/").arg(Utils::PathUtils().InsertDataPath("%%DATAPATH%%cloudconfig")).arg(m_dir));
loadFilesInDir(QString("%1/%2/").arg(Utils::PathUtils().InsertStoragePath("%%STOREPATH%%cloudconfig")).arg(m_dir));
}
void AirframeInitialTuningPage::setupTemplateList() void AirframeInitialTuningPage::setupTemplateList()
{ {
QListWidgetItem *item; QListWidgetItem *item;

View File

@ -44,7 +44,6 @@ public:
void initializePage(); void initializePage();
bool validatePage(); bool validatePage();
bool isComplete() const; bool isComplete() const;
public slots: public slots:
void templateSelectionChanged(); void templateSelectionChanged();
@ -59,6 +58,7 @@ private:
QGraphicsPixmapItem *m_photoItem; QGraphicsPixmapItem *m_photoItem;
void loadValidFiles(); void loadValidFiles();
void loadFilesInDir(QString templateBasePath);
void setupTemplateList(); void setupTemplateList();
QString getTemplateKey(QJsonObject *templ); QString getTemplateKey(QJsonObject *templ);
void updatePhoto(QJsonObject *templ); void updatePhoto(QJsonObject *templ);

View File

@ -80,6 +80,10 @@ void SavePage::writeToController()
enableButtons(true); enableButtons(true);
emit completeChanged(); emit completeChanged();
if (m_successfulWrite) {
getWizard()->next();
}
} }
void SavePage::enableButtons(bool enable) void SavePage::enableButtons(bool enable)

View File

@ -30,13 +30,13 @@
inkscape:window-height="928" inkscape:window-height="928"
id="namedview4616" id="namedview4616"
showgrid="false" showgrid="false"
inkscape:zoom="1.9844144" inkscape:zoom="0.70159644"
inkscape:cx="236.10597" inkscape:cx="305.10274"
inkscape:cy="505.93946" inkscape:cy="632.28327"
inkscape:window-x="0" inkscape:window-x="0"
inkscape:window-y="27" inkscape:window-y="27"
inkscape:window-maximized="1" inkscape:window-maximized="1"
inkscape:current-layer="layer12" inkscape:current-layer="layer17"
fit-margin-top="15" fit-margin-top="15"
fit-margin-left="15" fit-margin-left="15"
fit-margin-right="15" fit-margin-right="15"
@ -18146,7 +18146,7 @@
sodipodi:insensitive="true"> sodipodi:insensitive="true">
<g <g
style="display:inline" style="display:inline"
id="sbus" id="revo-sbus"
transform="matrix(0.4,0,0,0.4,53.475,-98.70912)"> transform="matrix(0.4,0,0,0.4,53.475,-98.70912)">
<path <path
id="path9857-8-5-2" id="path9857-8-5-2"
@ -18221,47 +18221,46 @@
</g> </g>
</g> </g>
<g <g
sodipodi:insensitive="true"
style="display:none" style="display:none"
inkscape:label="revo-satellite" inkscape:label="revo-satellite"
id="g11310" id="g11310"
inkscape:groupmode="layer"> inkscape:groupmode="layer">
<g <g
transform="matrix(0.4,0,0,0.4,-131.04473,-97.93132)" transform="matrix(0.4,0,0,0.4,-131.04473,-97.93132)"
id="g11312"> id="revo-satellite">
<path <path
style="fill:none;stroke:#777777;stroke-width:14.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none" style="fill:none;stroke:#777777;stroke-width:14.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none"
inkscape:connector-curvature="0" inkscape:connector-curvature="0"
stroke-miterlimit="4" stroke-miterlimit="4"
d="m 1250,1530 c -64.9,-5.97 -121,14.3 -171,40.7" d="M 1250,1530 C 1185.1,1524.03 1129,1544.3 1079,1570.7"
id="path11315" /> id="path11315" />
<path <path
style="fill:none;stroke:#777777;stroke-width:14.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none" style="fill:none;stroke:#777777;stroke-width:14.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none"
inkscape:connector-curvature="0" inkscape:connector-curvature="0"
stroke-miterlimit="4" stroke-miterlimit="4"
d="m 1490,1530 c 50.3,-1.09 115,5.3 155,36.6" d="M 1490,1530 C 1540.3,1528.91 1605,1535.3 1645,1566.6"
id="path11317" /> id="path11317" />
<path <path
id="path11319" id="path11319"
d="m 1371.2889,1318.8556 0,-124.7594 225,0 0,-141.368" d="M 1371.2889,1318.8556 L 1371.2889,1194.0962 L 1596.2889,1194.0962 L 1596.2889,1052.7282"
inkscape:connector-curvature="0" inkscape:connector-curvature="0"
style="fill:none;stroke:#1f4697;stroke-width:15.29999924;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none" style="fill:none;stroke:#1f4697;stroke-width:15.29999924;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none"
sodipodi:nodetypes="cccc" /> sodipodi:nodetypes="cccc" />
<path <path
id="path11321" id="path11321"
d="m 1356.2889,1318.8556 0,-139.7594 225,0 0,-126.368" d="M 1356.2889,1318.8556 L 1356.2889,1179.0962 L 1581.2889,1179.0962 L 1581.2889,1052.7282"
inkscape:connector-curvature="0" inkscape:connector-curvature="0"
style="fill:none;stroke:#d81900;stroke-width:15.29999924;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none" style="fill:none;stroke:#d81900;stroke-width:15.29999924;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none"
sodipodi:nodetypes="cccc" /> sodipodi:nodetypes="cccc" />
<path <path
id="path11323" id="path11323"
d="m 1386.2889,1318.8556 0,-109.7594 225.5,10e-5 0,-156.3681" d="M 1386.2889,1318.8556 L 1386.2889,1209.0962 L 1611.7889,1209.0963 L 1611.7889,1052.7282"
inkscape:connector-curvature="0" inkscape:connector-curvature="0"
style="fill:none;stroke:#ec6004;stroke-width:15.29999924;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none" style="fill:none;stroke:#ec6004;stroke-width:15.29999924;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none"
sodipodi:nodetypes="cccc" /> sodipodi:nodetypes="cccc" />
<path <path
id="path11325" id="path11325"
d="m 1342.571,1318.8556 0,-154.7594 223.7179,0 0,-111.368" d="M 1342.571,1318.8556 L 1342.571,1164.0962 L 1566.2889,1164.0962 L 1566.2889,1052.7282"
inkscape:connector-curvature="0" inkscape:connector-curvature="0"
style="fill:none;stroke:#000000;stroke-width:15.30000019;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none" style="fill:none;stroke:#000000;stroke-width:15.30000019;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none"
sodipodi:nodetypes="cccc" /> sodipodi:nodetypes="cccc" />
@ -18861,7 +18860,7 @@
inkscape:groupmode="layer"> inkscape:groupmode="layer">
<g <g
transform="matrix(0.4,0,0,0.4,53.475,-98.70912)" transform="matrix(0.4,0,0,0.4,53.475,-98.70912)"
id="g11325" id="cc-sbus"
style="display:inline"> style="display:inline">
<path <path
style="fill:none;stroke:#777777;stroke-width:14.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none" style="fill:none;stroke:#777777;stroke-width:14.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none"
@ -18942,17 +18941,17 @@
style="display:none" style="display:none"
sodipodi:insensitive="true"> sodipodi:insensitive="true">
<g <g
id="satellite" id="cc-satellite"
transform="matrix(0.4,0,0,0.4,-131.04473,-97.93132)"> transform="matrix(0.4,0,0,0.4,-131.04473,-97.93132)">
<path <path
id="path9857-8" id="path9857-8"
d="m 1250,1530 c -64.9,-5.97 -121,14.3 -171,40.7" d="M 1250,1530 C 1185.1,1524.03 1129,1544.3 1079,1570.7"
stroke-miterlimit="4" stroke-miterlimit="4"
inkscape:connector-curvature="0" inkscape:connector-curvature="0"
style="fill:none;stroke:#777777;stroke-width:14.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none" /> style="fill:none;stroke:#777777;stroke-width:14.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none" />
<path <path
id="path9857-8-5" id="path9857-8-5"
d="m 1490,1530 c 50.3,-1.09 115,5.3 155,36.6" d="M 1490,1530 C 1540.3,1528.91 1605,1535.3 1645,1566.6"
stroke-miterlimit="4" stroke-miterlimit="4"
inkscape:connector-curvature="0" inkscape:connector-curvature="0"
style="fill:none;stroke:#777777;stroke-width:14.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none" /> style="fill:none;stroke:#777777;stroke-width:14.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none" />
@ -18960,25 +18959,25 @@
sodipodi:nodetypes="cccc" sodipodi:nodetypes="cccc"
style="fill:none;stroke:#1f4697;stroke-width:15.29999924;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none" style="fill:none;stroke:#1f4697;stroke-width:15.29999924;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none"
inkscape:connector-curvature="0" inkscape:connector-curvature="0"
d="m 1371.2889,1318.8556 0,-124.7594 225,0 0,-141.368" d="M 1371.2889,1318.8556 L 1371.2889,1194.0962 L 1596.2889,1194.0962 L 1596.2889,1052.7282"
id="path8856-5-6" /> id="path8856-5-6" />
<path <path
sodipodi:nodetypes="cccc" sodipodi:nodetypes="cccc"
style="fill:none;stroke:#d81900;stroke-width:15.29999924;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none" style="fill:none;stroke:#d81900;stroke-width:15.29999924;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none"
inkscape:connector-curvature="0" inkscape:connector-curvature="0"
d="m 1356.2889,1318.8556 0,-139.7594 225,0 0,-126.368" d="M 1356.2889,1318.8556 L 1356.2889,1179.0962 L 1581.2889,1179.0962 L 1581.2889,1052.7282"
id="path8856-1-2" /> id="path8856-1-2" />
<path <path
sodipodi:nodetypes="cccc" sodipodi:nodetypes="cccc"
style="fill:none;stroke:#ec6004;stroke-width:15.29999924;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none" style="fill:none;stroke:#ec6004;stroke-width:15.29999924;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none"
inkscape:connector-curvature="0" inkscape:connector-curvature="0"
d="m 1386.2889,1318.8556 0,-109.7594 225.5,10e-5 0,-156.3681" d="M 1386.2889,1318.8556 L 1386.2889,1209.0962 L 1611.7889,1209.0963 L 1611.7889,1052.7282"
id="path8856-5-1-7-1-9" /> id="path8856-5-1-7-1-9" />
<path <path
sodipodi:nodetypes="cccc" sodipodi:nodetypes="cccc"
style="fill:none;stroke:#000000;stroke-width:15.30000019;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none" style="fill:none;stroke:#000000;stroke-width:15.30000019;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none"
inkscape:connector-curvature="0" inkscape:connector-curvature="0"
d="m 1342.571,1318.8556 0,-154.7594 223.7179,0 0,-111.368" d="M 1342.571,1318.8556 L 1342.571,1164.0962 L 1566.2889,1164.0962 L 1566.2889,1052.7282"
id="path8856-1-5-7" /> id="path8856-1-5-7" />
<rect <rect
rx="11.5" rx="11.5"
@ -19544,11 +19543,11 @@
<g <g
inkscape:groupmode="layer" inkscape:groupmode="layer"
id="layer23" id="layer23"
inkscape:label="generic-nmea" inkscape:label="revo-generic-nmea"
style="display:none" style="display:none"
sodipodi:insensitive="true"> sodipodi:insensitive="true">
<g <g
id="generic-nmea"> id="revo-generic-nmea">
<g <g
id="g14377" id="g14377"
transform="matrix(0,0.77129601,-0.77129601,0,1404.0461,377.01359)"> transform="matrix(0,0.77129601,-0.77129601,0,1404.0461,377.01359)">
@ -20431,11 +20430,11 @@
<g <g
inkscape:groupmode="layer" inkscape:groupmode="layer"
id="layer28" id="layer28"
inkscape:label="OPGPS-v8-ublox" inkscape:label="revo-OPGPS-v8-ublox"
style="display:none" style="display:none"
sodipodi:insensitive="true"> sodipodi:insensitive="true">
<g <g
id="OPGPS-v8-ublox"> id="revo-OPGPS-v8-ublox">
<path <path
sodipodi:nodetypes="ccccc" sodipodi:nodetypes="ccccc"
style="fill:none;stroke:#1f4697;stroke-width:6.11999989;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none" style="fill:none;stroke:#1f4697;stroke-width:6.11999989;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none"
@ -20578,7 +20577,7 @@
</g> </g>
<path <path
transform="matrix(0,0.40146247,-0.40146247,0,1015.7912,553.33859)" transform="matrix(0,0.40146247,-0.40146247,0,1015.7912,553.33859)"
d="M -12.73456,572.3067 C -12.73456,585.49377 -23.424791,596.184 -36.611858,596.184 C -49.798926,596.184 -60.489157,585.49377 -60.489157,572.3067 C -60.489157,559.11963 -49.798926,548.4294 -36.611858,548.4294 C -23.424791,548.4294 -12.73456,559.11963 -12.73456,572.3067 z" d="M -12.73456,572.3067 A 23.877298,23.877298 0 1 1 -60.489157,572.3067 A 23.877298,23.877298 0 1 1 -12.73456,572.3067 z"
sodipodi:ry="23.877298" sodipodi:ry="23.877298"
sodipodi:rx="23.877298" sodipodi:rx="23.877298"
sodipodi:cy="572.3067" sodipodi:cy="572.3067"
@ -20594,7 +20593,7 @@
sodipodi:cy="572.3067" sodipodi:cy="572.3067"
sodipodi:rx="23.877298" sodipodi:rx="23.877298"
sodipodi:ry="23.877298" sodipodi:ry="23.877298"
d="M -12.73456,572.3067 C -12.73456,585.49377 -23.424791,596.184 -36.611858,596.184 C -49.798926,596.184 -60.489157,585.49377 -60.489157,572.3067 C -60.489157,559.11963 -49.798926,548.4294 -36.611858,548.4294 C -23.424791,548.4294 -12.73456,559.11963 -12.73456,572.3067 z" d="M -12.73456,572.3067 A 23.877298,23.877298 0 1 1 -60.489157,572.3067 A 23.877298,23.877298 0 1 1 -12.73456,572.3067 z"
transform="matrix(0,0.40146247,-0.40146247,0,819.07458,553.33859)" /> transform="matrix(0,0.40146247,-0.40146247,0,819.07458,553.33859)" />
<path <path
sodipodi:type="arc" sodipodi:type="arc"
@ -20604,11 +20603,11 @@
sodipodi:cy="572.3067" sodipodi:cy="572.3067"
sodipodi:rx="23.877298" sodipodi:rx="23.877298"
sodipodi:ry="23.877298" sodipodi:ry="23.877298"
d="M -12.73456,572.3067 C -12.73456,585.49377 -23.424791,596.184 -36.611858,596.184 C -49.798926,596.184 -60.489157,585.49377 -60.489157,572.3067 C -60.489157,559.11963 -49.798926,548.4294 -36.611858,548.4294 C -23.424791,548.4294 -12.73456,559.11963 -12.73456,572.3067 z" d="M -12.73456,572.3067 A 23.877298,23.877298 0 1 1 -60.489157,572.3067 A 23.877298,23.877298 0 1 1 -12.73456,572.3067 z"
transform="matrix(0,0.40146247,-0.40146247,0,1015.7912,750.0552)" /> transform="matrix(0,0.40146247,-0.40146247,0,1015.7912,750.0552)" />
<path <path
transform="matrix(0,0.40146247,-0.40146247,0,819.07458,750.0552)" transform="matrix(0,0.40146247,-0.40146247,0,819.07458,750.0552)"
d="M -12.73456,572.3067 C -12.73456,585.49377 -23.424791,596.184 -36.611858,596.184 C -49.798926,596.184 -60.489157,585.49377 -60.489157,572.3067 C -60.489157,559.11963 -49.798926,548.4294 -36.611858,548.4294 C -23.424791,548.4294 -12.73456,559.11963 -12.73456,572.3067 z" d="M -12.73456,572.3067 A 23.877298,23.877298 0 1 1 -60.489157,572.3067 A 23.877298,23.877298 0 1 1 -12.73456,572.3067 z"
sodipodi:ry="23.877298" sodipodi:ry="23.877298"
sodipodi:rx="23.877298" sodipodi:rx="23.877298"
sodipodi:cy="572.3067" sodipodi:cy="572.3067"
@ -20732,11 +20731,11 @@
<g <g
inkscape:groupmode="layer" inkscape:groupmode="layer"
id="layer36" id="layer36"
inkscape:label="OPGPS-v9" inkscape:label="revo-OPGPS-v9"
style="display:none" style="display:inline"
sodipodi:insensitive="true"> sodipodi:insensitive="true">
<g <g
id="OPGPS-v9"> id="revo-OPGPS-v9">
<rect <rect
id="rect14138-8-9-5" id="rect14138-8-9-5"
x="620.07581" x="620.07581"
@ -20757,11 +20756,11 @@
sodipodi:cy="572.3067" sodipodi:cy="572.3067"
sodipodi:rx="23.877298" sodipodi:rx="23.877298"
sodipodi:ry="23.877298" sodipodi:ry="23.877298"
d="M -12.73456,572.3067 C -12.73456,585.49377 -23.424791,596.184 -36.611858,596.184 C -49.798926,596.184 -60.489157,585.49377 -60.489157,572.3067 C -60.489157,559.11963 -49.798926,548.4294 -36.611858,548.4294 C -23.424791,548.4294 -12.73456,559.11963 -12.73456,572.3067 z" d="M -12.73456,572.3067 A 23.877298,23.877298 0 1 1 -60.489157,572.3067 A 23.877298,23.877298 0 1 1 -12.73456,572.3067 z"
transform="matrix(0,-0.40146247,0.40146247,0,260.05873,720.82148)" /> transform="matrix(0,-0.40146247,0.40146247,0,260.05873,720.82148)" />
<path <path
transform="matrix(0,-0.40146247,0.40146247,0,260.05873,524.10489)" transform="matrix(0,-0.40146247,0.40146247,0,260.05873,524.10489)"
d="M -12.73456,572.3067 C -12.73456,585.49377 -23.424791,596.184 -36.611858,596.184 C -49.798926,596.184 -60.489157,585.49377 -60.489157,572.3067 C -60.489157,559.11963 -49.798926,548.4294 -36.611858,548.4294 C -23.424791,548.4294 -12.73456,559.11963 -12.73456,572.3067 z" d="M -12.73456,572.3067 A 23.877298,23.877298 0 1 1 -60.489157,572.3067 A 23.877298,23.877298 0 1 1 -12.73456,572.3067 z"
sodipodi:ry="23.877298" sodipodi:ry="23.877298"
sodipodi:rx="23.877298" sodipodi:rx="23.877298"
sodipodi:cy="572.3067" sodipodi:cy="572.3067"
@ -20885,7 +20884,7 @@
</g> </g>
<path <path
transform="matrix(0,-0.40146247,0.40146247,0,456.77534,720.82148)" transform="matrix(0,-0.40146247,0.40146247,0,456.77534,720.82148)"
d="M -12.73456,572.3067 C -12.73456,585.49377 -23.424791,596.184 -36.611858,596.184 C -49.798926,596.184 -60.489157,585.49377 -60.489157,572.3067 C -60.489157,559.11963 -49.798926,548.4294 -36.611858,548.4294 C -23.424791,548.4294 -12.73456,559.11963 -12.73456,572.3067 z" d="M -12.73456,572.3067 A 23.877298,23.877298 0 1 1 -60.489157,572.3067 A 23.877298,23.877298 0 1 1 -12.73456,572.3067 z"
sodipodi:ry="23.877298" sodipodi:ry="23.877298"
sodipodi:rx="23.877298" sodipodi:rx="23.877298"
sodipodi:cy="572.3067" sodipodi:cy="572.3067"
@ -20901,7 +20900,7 @@
sodipodi:cy="572.3067" sodipodi:cy="572.3067"
sodipodi:rx="23.877298" sodipodi:rx="23.877298"
sodipodi:ry="23.877298" sodipodi:ry="23.877298"
d="M -12.73456,572.3067 C -12.73456,585.49377 -23.424791,596.184 -36.611858,596.184 C -49.798926,596.184 -60.489157,585.49377 -60.489157,572.3067 C -60.489157,559.11963 -49.798926,548.4294 -36.611858,548.4294 C -23.424791,548.4294 -12.73456,559.11963 -12.73456,572.3067 z" d="M -12.73456,572.3067 A 23.877298,23.877298 0 1 1 -60.489157,572.3067 A 23.877298,23.877298 0 1 1 -12.73456,572.3067 z"
transform="matrix(0,-0.40146247,0.40146247,0,456.77534,524.10489)" /> transform="matrix(0,-0.40146247,0.40146247,0,456.77534,524.10489)" />
<rect <rect
id="rect7428" id="rect7428"
@ -22804,13 +22803,13 @@
<g <g
inkscape:groupmode="layer" inkscape:groupmode="layer"
id="layer5" id="layer5"
inkscape:label="flexi-generic-nmea" inkscape:label="flexi-revo-generic-nmea"
style="display:inline" style="display:none"
sodipodi:insensitive="true"> sodipodi:insensitive="true">
<g <g
transform="translate(-248,4.5990295e-6)" transform="translate(-248,4.5990295e-6)"
style="display:inline" style="display:inline"
id="flexi-generic-nmea"> id="flexi-revo-generic-nmea">
<g <g
id="g14377-12" id="g14377-12"
transform="matrix(0,0.77129601,-0.77129601,0,1404.0461,377.01359)"> transform="matrix(0,0.77129601,-0.77129601,0,1404.0461,377.01359)">
@ -23699,7 +23698,7 @@
<g <g
transform="translate(-340,4.6e-6)" transform="translate(-340,4.6e-6)"
style="display:inline" style="display:inline"
id="flexi-OPGPS-v8-ublox"> id="flexi-revo-OPGPS-v8-ublox">
<path <path
sodipodi:nodetypes="cccc" sodipodi:nodetypes="cccc"
style="fill:none;stroke:#000000;stroke-width:6.11999989;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none" style="fill:none;stroke:#000000;stroke-width:6.11999989;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none"
@ -23842,7 +23841,7 @@
</g> </g>
<path <path
transform="matrix(0,0.40146247,-0.40146247,0,1015.7912,553.33859)" transform="matrix(0,0.40146247,-0.40146247,0,1015.7912,553.33859)"
d="M -12.73456,572.3067 C -12.73456,585.49377 -23.424791,596.184 -36.611858,596.184 C -49.798926,596.184 -60.489157,585.49377 -60.489157,572.3067 C -60.489157,559.11963 -49.798926,548.4294 -36.611858,548.4294 C -23.424791,548.4294 -12.73456,559.11963 -12.73456,572.3067 z" d="M -12.73456,572.3067 A 23.877298,23.877298 0 1 1 -60.489157,572.3067 A 23.877298,23.877298 0 1 1 -12.73456,572.3067 z"
sodipodi:ry="23.877298" sodipodi:ry="23.877298"
sodipodi:rx="23.877298" sodipodi:rx="23.877298"
sodipodi:cy="572.3067" sodipodi:cy="572.3067"
@ -23858,7 +23857,7 @@
sodipodi:cy="572.3067" sodipodi:cy="572.3067"
sodipodi:rx="23.877298" sodipodi:rx="23.877298"
sodipodi:ry="23.877298" sodipodi:ry="23.877298"
d="M -12.73456,572.3067 C -12.73456,585.49377 -23.424791,596.184 -36.611858,596.184 C -49.798926,596.184 -60.489157,585.49377 -60.489157,572.3067 C -60.489157,559.11963 -49.798926,548.4294 -36.611858,548.4294 C -23.424791,548.4294 -12.73456,559.11963 -12.73456,572.3067 z" d="M -12.73456,572.3067 A 23.877298,23.877298 0 1 1 -60.489157,572.3067 A 23.877298,23.877298 0 1 1 -12.73456,572.3067 z"
transform="matrix(0,0.40146247,-0.40146247,0,819.07458,553.33859)" /> transform="matrix(0,0.40146247,-0.40146247,0,819.07458,553.33859)" />
<path <path
sodipodi:type="arc" sodipodi:type="arc"
@ -23868,11 +23867,11 @@
sodipodi:cy="572.3067" sodipodi:cy="572.3067"
sodipodi:rx="23.877298" sodipodi:rx="23.877298"
sodipodi:ry="23.877298" sodipodi:ry="23.877298"
d="M -12.73456,572.3067 C -12.73456,585.49377 -23.424791,596.184 -36.611858,596.184 C -49.798926,596.184 -60.489157,585.49377 -60.489157,572.3067 C -60.489157,559.11963 -49.798926,548.4294 -36.611858,548.4294 C -23.424791,548.4294 -12.73456,559.11963 -12.73456,572.3067 z" d="M -12.73456,572.3067 A 23.877298,23.877298 0 1 1 -60.489157,572.3067 A 23.877298,23.877298 0 1 1 -12.73456,572.3067 z"
transform="matrix(0,0.40146247,-0.40146247,0,1015.7912,750.0552)" /> transform="matrix(0,0.40146247,-0.40146247,0,1015.7912,750.0552)" />
<path <path
transform="matrix(0,0.40146247,-0.40146247,0,819.07458,750.0552)" transform="matrix(0,0.40146247,-0.40146247,0,819.07458,750.0552)"
d="M -12.73456,572.3067 C -12.73456,585.49377 -23.424791,596.184 -36.611858,596.184 C -49.798926,596.184 -60.489157,585.49377 -60.489157,572.3067 C -60.489157,559.11963 -49.798926,548.4294 -36.611858,548.4294 C -23.424791,548.4294 -12.73456,559.11963 -12.73456,572.3067 z" d="M -12.73456,572.3067 A 23.877298,23.877298 0 1 1 -60.489157,572.3067 A 23.877298,23.877298 0 1 1 -12.73456,572.3067 z"
sodipodi:ry="23.877298" sodipodi:ry="23.877298"
sodipodi:rx="23.877298" sodipodi:rx="23.877298"
sodipodi:cy="572.3067" sodipodi:cy="572.3067"
@ -23996,13 +23995,13 @@
<g <g
inkscape:groupmode="layer" inkscape:groupmode="layer"
id="layer9" id="layer9"
inkscape:label="flexi-OPGPS-v9" inkscape:label="flexi-revo-OPGPS-v9"
style="display:none" style="display:none"
sodipodi:insensitive="true"> sodipodi:insensitive="true">
<g <g
transform="translate(-240,4.5990295e-6)" transform="translate(-240,4.5990295e-6)"
style="display:inline" style="display:inline"
id="flexi-OPGPS-v9"> id="flexi-revo-OPGPS-v9">
<rect <rect
id="rect14138-8-9-5-5" id="rect14138-8-9-5-5"
x="620.07581" x="620.07581"
@ -24023,11 +24022,11 @@
sodipodi:cy="572.3067" sodipodi:cy="572.3067"
sodipodi:rx="23.877298" sodipodi:rx="23.877298"
sodipodi:ry="23.877298" sodipodi:ry="23.877298"
d="M -12.73456,572.3067 C -12.73456,585.49377 -23.424791,596.184 -36.611858,596.184 C -49.798926,596.184 -60.489157,585.49377 -60.489157,572.3067 C -60.489157,559.11963 -49.798926,548.4294 -36.611858,548.4294 C -23.424791,548.4294 -12.73456,559.11963 -12.73456,572.3067 z" d="M -12.73456,572.3067 A 23.877298,23.877298 0 1 1 -60.489157,572.3067 A 23.877298,23.877298 0 1 1 -12.73456,572.3067 z"
transform="matrix(0,-0.40146247,0.40146247,0,260.05873,720.82148)" /> transform="matrix(0,-0.40146247,0.40146247,0,260.05873,720.82148)" />
<path <path
transform="matrix(0,-0.40146247,0.40146247,0,260.05873,524.10489)" transform="matrix(0,-0.40146247,0.40146247,0,260.05873,524.10489)"
d="M -12.73456,572.3067 C -12.73456,585.49377 -23.424791,596.184 -36.611858,596.184 C -49.798926,596.184 -60.489157,585.49377 -60.489157,572.3067 C -60.489157,559.11963 -49.798926,548.4294 -36.611858,548.4294 C -23.424791,548.4294 -12.73456,559.11963 -12.73456,572.3067 z" d="M -12.73456,572.3067 A 23.877298,23.877298 0 1 1 -60.489157,572.3067 A 23.877298,23.877298 0 1 1 -12.73456,572.3067 z"
sodipodi:ry="23.877298" sodipodi:ry="23.877298"
sodipodi:rx="23.877298" sodipodi:rx="23.877298"
sodipodi:cy="572.3067" sodipodi:cy="572.3067"
@ -24151,7 +24150,7 @@
</g> </g>
<path <path
transform="matrix(0,-0.40146247,0.40146247,0,456.77534,720.82148)" transform="matrix(0,-0.40146247,0.40146247,0,456.77534,720.82148)"
d="M -12.73456,572.3067 C -12.73456,585.49377 -23.424791,596.184 -36.611858,596.184 C -49.798926,596.184 -60.489157,585.49377 -60.489157,572.3067 C -60.489157,559.11963 -49.798926,548.4294 -36.611858,548.4294 C -23.424791,548.4294 -12.73456,559.11963 -12.73456,572.3067 z" d="M -12.73456,572.3067 A 23.877298,23.877298 0 1 1 -60.489157,572.3067 A 23.877298,23.877298 0 1 1 -12.73456,572.3067 z"
sodipodi:ry="23.877298" sodipodi:ry="23.877298"
sodipodi:rx="23.877298" sodipodi:rx="23.877298"
sodipodi:cy="572.3067" sodipodi:cy="572.3067"
@ -24167,7 +24166,7 @@
sodipodi:cy="572.3067" sodipodi:cy="572.3067"
sodipodi:rx="23.877298" sodipodi:rx="23.877298"
sodipodi:ry="23.877298" sodipodi:ry="23.877298"
d="M -12.73456,572.3067 C -12.73456,585.49377 -23.424791,596.184 -36.611858,596.184 C -49.798926,596.184 -60.489157,585.49377 -60.489157,572.3067 C -60.489157,559.11963 -49.798926,548.4294 -36.611858,548.4294 C -23.424791,548.4294 -12.73456,559.11963 -12.73456,572.3067 z" d="M -12.73456,572.3067 A 23.877298,23.877298 0 1 1 -60.489157,572.3067 A 23.877298,23.877298 0 1 1 -12.73456,572.3067 z"
transform="matrix(0,-0.40146247,0.40146247,0,456.77534,524.10489)" /> transform="matrix(0,-0.40146247,0.40146247,0,456.77534,524.10489)" />
<rect <rect
id="rect7428-5" id="rect7428-5"
@ -24357,9 +24356,9 @@
<polygon <polygon
transform="matrix(1.5711089,0,0,1.5372108,235.33403,522.2062)" transform="matrix(1.5711089,0,0,1.5372108,235.33403,522.2062)"
id="polygon8706-1-0" id="polygon8706-1-0"
points="186.194,11.031 181.129,13.319 186.083,4.74 191.036,13.319 " /> points="186.083,4.74 191.036,13.319 186.194,11.031 181.129,13.319 " />
<polygon <polygon
points="191.036,13.319 186.194,11.031 181.129,13.319 186.083,4.74 " points="181.129,13.319 186.083,4.74 191.036,13.319 186.194,11.031 "
id="polygon10148-4" id="polygon10148-4"
transform="matrix(1.5711089,0,0,1.5372108,357.19879,522.2062)" /> transform="matrix(1.5711089,0,0,1.5372108,357.19879,522.2062)" />
<g <g
@ -26082,7 +26081,7 @@
<g <g
inkscape:groupmode="layer" inkscape:groupmode="layer"
id="layer40" id="layer40"
inkscape:label="nano-ms4525" inkscape:label="nano-ms4525-speed-sensor"
style="display:none" style="display:none"
sodipodi:insensitive="true"> sodipodi:insensitive="true">
<g <g
@ -26575,7 +26574,7 @@
<polygon <polygon
style="fill-rule:evenodd" style="fill-rule:evenodd"
id="polygon13-5" id="polygon13-5"
points="251.619,485.734 242.74,485.734 242.74,480.095 251.619,480.095 251.619,473.728 242.74,473.728 242.74,467.777 251.619,467.777 251.619,467.777 251.619,460.783 233.13,460.783 233.13,492.937 251.619,492.937 " /> points="242.74,485.734 242.74,480.095 251.619,480.095 251.619,473.728 242.74,473.728 242.74,467.777 251.619,467.777 251.619,467.777 251.619,460.783 233.13,460.783 233.13,492.937 251.619,492.937 251.619,485.734 " />
<path <path
style="fill-rule:evenodd" style="fill-rule:evenodd"
id="path15-2" id="path15-2"
@ -26589,7 +26588,7 @@
<polygon <polygon
style="fill:#ffffff;fill-rule:evenodd;stroke:#000000;stroke-width:0.82230002;stroke-miterlimit:2.61310005" style="fill:#ffffff;fill-rule:evenodd;stroke:#000000;stroke-width:0.82230002;stroke-miterlimit:2.61310005"
id="polygon19-3" id="polygon19-3"
points="253.082,364.946 253.082,454.937 220.283,454.937 220.283,364.946 220.283,364.946 " /> points="253.082,454.937 220.283,454.937 220.283,364.946 220.283,364.946 253.082,364.946 " />
<path <path
style="fill:#ffffff;fill-rule:evenodd;stroke:#000000;stroke-width:0.82230002;stroke-miterlimit:2.61310005" style="fill:#ffffff;fill-rule:evenodd;stroke:#000000;stroke-width:0.82230002;stroke-miterlimit:2.61310005"
id="path21-6" id="path21-6"
@ -26598,7 +26597,7 @@
<polygon <polygon
style="fill:#c8c9ca;fill-rule:evenodd;stroke:#000000;stroke-width:0.82230002;stroke-miterlimit:2.61310005" style="fill:#c8c9ca;fill-rule:evenodd;stroke:#000000;stroke-width:0.82230002;stroke-miterlimit:2.61310005"
id="polygon23-6" id="polygon23-6"
points="225.505,449.298 247.754,449.298 247.754,370.688 225.505,370.688 225.505,370.688 " /> points="247.754,449.298 247.754,370.688 225.505,370.688 225.505,370.688 225.505,449.298 " />
<path <path
style="fill:#c8c9ca;fill-rule:evenodd;stroke:#000000;stroke-width:0.82230002;stroke-miterlimit:2.61310005" style="fill:#c8c9ca;fill-rule:evenodd;stroke:#000000;stroke-width:0.82230002;stroke-miterlimit:2.61310005"
id="path25-2" id="path25-2"
@ -26615,7 +26614,7 @@
<g <g
inkscape:groupmode="layer" inkscape:groupmode="layer"
id="layer41" id="layer41"
inkscape:label="nano-eagletree" inkscape:label="nano-eagletree-speed-sensor"
style="display:none" style="display:none"
sodipodi:insensitive="true"> sodipodi:insensitive="true">
<g <g
@ -26779,7 +26778,7 @@
style="fill:#df181b;fill-opacity:1;stroke:#000000;stroke-width:0.77129602px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" /> style="fill:#df181b;fill-opacity:1;stroke:#000000;stroke-width:0.77129602px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
<path <path
transform="matrix(0.77129601,0,0,0.77129601,324.31484,-346.34006)" transform="matrix(0.77129601,0,0,0.77129601,324.31484,-346.34006)"
d="M 379.6109,501.66602 C 379.6109,504.54173 377.16866,506.87296 374.15601,506.87296 C 371.14335,506.87296 368.70111,504.54173 368.70111,501.66602 C 368.70111,498.7903 371.14335,496.45907 374.15601,496.45907 C 377.16866,496.45907 379.6109,498.7903 379.6109,501.66602 z" d="M 379.6109,501.66602 A 5.4548922,5.2069426 0 1 1 368.70111,501.66602 A 5.4548922,5.2069426 0 1 1 379.6109,501.66602 z"
sodipodi:ry="5.2069426" sodipodi:ry="5.2069426"
sodipodi:rx="5.4548922" sodipodi:rx="5.4548922"
sodipodi:cy="501.66602" sodipodi:cy="501.66602"
@ -27589,7 +27588,7 @@
id="path8856-5-6-5-6-7-2-87-6-9" /> id="path8856-5-6-5-6-7-2-87-6-9" />
<path <path
transform="translate(-136.3084,-443.63428)" transform="translate(-136.3084,-443.63428)"
d="M 656.58418,483.271 C 656.58418,486.11211 654.281,488.4153 651.43988,488.4153 C 648.59876,488.4153 646.29558,486.11211 646.29558,483.271 C 646.29558,480.42988 648.59876,478.1267 651.43988,478.1267 C 654.281,478.1267 656.58418,480.42988 656.58418,483.271 z" d="M 656.58418,483.271 A 5.1442995,5.1442995 0 1 1 646.29558,483.271 A 5.1442995,5.1442995 0 1 1 656.58418,483.271 z"
sodipodi:ry="5.1442995" sodipodi:ry="5.1442995"
sodipodi:rx="5.1442995" sodipodi:rx="5.1442995"
sodipodi:cy="483.271" sodipodi:cy="483.271"
@ -27605,11 +27604,11 @@
sodipodi:cy="483.271" sodipodi:cy="483.271"
sodipodi:rx="5.1442995" sodipodi:rx="5.1442995"
sodipodi:ry="5.1442995" sodipodi:ry="5.1442995"
d="M 656.58418,483.271 C 656.58418,486.11211 654.281,488.4153 651.43988,488.4153 C 648.59876,488.4153 646.29558,486.11211 646.29558,483.271 C 646.29558,480.42988 648.59876,478.1267 651.43988,478.1267 C 654.281,478.1267 656.58418,480.42988 656.58418,483.271 z" d="M 656.58418,483.271 A 5.1442995,5.1442995 0 1 1 646.29558,483.271 A 5.1442995,5.1442995 0 1 1 656.58418,483.271 z"
transform="translate(-136.3084,-463.68797)" /> transform="translate(-136.3084,-463.68797)" />
<path <path
transform="translate(-136.3084,-481.68799)" transform="translate(-136.3084,-481.68799)"
d="M 656.58418,483.271 C 656.58418,486.11211 654.281,488.4153 651.43988,488.4153 C 648.59876,488.4153 646.29558,486.11211 646.29558,483.271 C 646.29558,480.42988 648.59876,478.1267 651.43988,478.1267 C 654.281,478.1267 656.58418,480.42988 656.58418,483.271 z" d="M 656.58418,483.271 A 5.1442995,5.1442995 0 1 1 646.29558,483.271 A 5.1442995,5.1442995 0 1 1 656.58418,483.271 z"
sodipodi:ry="5.1442995" sodipodi:ry="5.1442995"
sodipodi:rx="5.1442995" sodipodi:rx="5.1442995"
sodipodi:cy="483.271" sodipodi:cy="483.271"
@ -27625,7 +27624,7 @@
sodipodi:cy="483.271" sodipodi:cy="483.271"
sodipodi:rx="5.1442995" sodipodi:rx="5.1442995"
sodipodi:ry="5.1442995" sodipodi:ry="5.1442995"
d="M 656.58418,483.271 C 656.58418,486.11211 654.281,488.4153 651.43988,488.4153 C 648.59876,488.4153 646.29558,486.11211 646.29558,483.271 C 646.29558,480.42988 648.59876,478.1267 651.43988,478.1267 C 654.281,478.1267 656.58418,480.42988 656.58418,483.271 z" d="M 656.58418,483.271 A 5.1442995,5.1442995 0 1 1 646.29558,483.271 A 5.1442995,5.1442995 0 1 1 656.58418,483.271 z"
transform="translate(-136.3084,-501.68802)" /> transform="translate(-136.3084,-501.68802)" />
<g <g
id="g9542-2-1" id="g9542-2-1"
@ -27726,7 +27725,7 @@
<polygon <polygon
style="fill-rule:evenodd" style="fill-rule:evenodd"
id="polygon13-5-7" id="polygon13-5-7"
points="251.619,485.734 242.74,485.734 242.74,480.095 251.619,480.095 251.619,473.728 242.74,473.728 242.74,467.777 251.619,467.777 251.619,467.777 251.619,460.783 233.13,460.783 233.13,492.937 251.619,492.937 " /> points="242.74,485.734 242.74,480.095 251.619,480.095 251.619,473.728 242.74,473.728 242.74,467.777 251.619,467.777 251.619,467.777 251.619,460.783 233.13,460.783 233.13,492.937 251.619,492.937 251.619,485.734 " />
<path <path
style="fill-rule:evenodd" style="fill-rule:evenodd"
id="path15-2-6" id="path15-2-6"
@ -27740,7 +27739,7 @@
<polygon <polygon
style="fill:#ffffff;fill-rule:evenodd;stroke:#000000;stroke-width:0.82230002;stroke-miterlimit:2.61310005" style="fill:#ffffff;fill-rule:evenodd;stroke:#000000;stroke-width:0.82230002;stroke-miterlimit:2.61310005"
id="polygon19-3-9" id="polygon19-3-9"
points="253.082,454.937 220.283,454.937 220.283,364.946 220.283,364.946 253.082,364.946 " /> points="220.283,454.937 220.283,364.946 220.283,364.946 253.082,364.946 253.082,454.937 " />
<path <path
style="fill:#ffffff;fill-rule:evenodd;stroke:#000000;stroke-width:0.82230002;stroke-miterlimit:2.61310005" style="fill:#ffffff;fill-rule:evenodd;stroke:#000000;stroke-width:0.82230002;stroke-miterlimit:2.61310005"
id="path21-6-0" id="path21-6-0"
@ -27749,7 +27748,7 @@
<polygon <polygon
style="fill:#c8c9ca;fill-rule:evenodd;stroke:#000000;stroke-width:0.82230002;stroke-miterlimit:2.61310005" style="fill:#c8c9ca;fill-rule:evenodd;stroke:#000000;stroke-width:0.82230002;stroke-miterlimit:2.61310005"
id="polygon23-6-4" id="polygon23-6-4"
points="247.754,449.298 247.754,370.688 225.505,370.688 225.505,370.688 225.505,449.298 " /> points="247.754,370.688 225.505,370.688 225.505,370.688 225.505,449.298 247.754,449.298 " />
<path <path
style="fill:#c8c9ca;fill-rule:evenodd;stroke:#000000;stroke-width:0.82230002;stroke-miterlimit:2.61310005" style="fill:#c8c9ca;fill-rule:evenodd;stroke:#000000;stroke-width:0.82230002;stroke-miterlimit:2.61310005"
id="path25-2-1" id="path25-2-1"
@ -27766,11 +27765,11 @@
<g <g
inkscape:groupmode="layer" inkscape:groupmode="layer"
id="layer42" id="layer42"
inkscape:label="ms4525" inkscape:label="revo-ms4525-speed-sensor"
style="display:none" style="display:none"
sodipodi:insensitive="true"> sodipodi:insensitive="true">
<g <g
id="ms4525-speed-sensor"> id="revo-ms4525-speed-sensor">
<path <path
id="rect3287-1" id="rect3287-1"
d="M 279.15532,401.95962 L 446.45368,401.95962 C 447.73557,401.95962 448.76756,402.99162 448.76756,404.27351 L 448.76756,516.11183 C 448.76756,517.39373 447.73557,518.42572 446.45368,518.42572 L 279.15532,518.42572 C 277.87342,518.42572 276.84143,517.39373 276.84143,516.11183 L 276.84143,404.27351 C 276.84143,402.99162 277.87342,401.95962 279.15532,401.95962 z" d="M 279.15532,401.95962 L 446.45368,401.95962 C 447.73557,401.95962 448.76756,402.99162 448.76756,404.27351 L 448.76756,516.11183 C 448.76756,517.39373 447.73557,518.42572 446.45368,518.42572 L 279.15532,518.42572 C 277.87342,518.42572 276.84143,517.39373 276.84143,516.11183 L 276.84143,404.27351 C 276.84143,402.99162 277.87342,401.95962 279.15532,401.95962 z"
@ -28179,7 +28178,7 @@
<polygon <polygon
style="fill-rule:evenodd" style="fill-rule:evenodd"
id="polygon13" id="polygon13"
points="242.74,480.095 251.619,480.095 251.619,473.728 242.74,473.728 242.74,467.777 251.619,467.777 251.619,467.777 251.619,460.783 233.13,460.783 233.13,492.937 251.619,492.937 251.619,485.734 242.74,485.734 " /> points="251.619,473.728 242.74,473.728 242.74,467.777 251.619,467.777 251.619,467.777 251.619,460.783 233.13,460.783 233.13,492.937 251.619,492.937 251.619,485.734 242.74,485.734 242.74,480.095 251.619,480.095 " />
<path <path
style="fill-rule:evenodd" style="fill-rule:evenodd"
id="path15" id="path15"
@ -28193,7 +28192,7 @@
<polygon <polygon
style="fill:#ffffff;fill-rule:evenodd;stroke:#000000;stroke-width:0.82230002;stroke-miterlimit:2.61310005" style="fill:#ffffff;fill-rule:evenodd;stroke:#000000;stroke-width:0.82230002;stroke-miterlimit:2.61310005"
id="polygon19" id="polygon19"
points="220.283,364.946 253.082,364.946 253.082,454.937 220.283,454.937 220.283,364.946 " /> points="253.082,454.937 220.283,454.937 220.283,364.946 220.283,364.946 253.082,364.946 " />
<path <path
style="fill:#ffffff;fill-rule:evenodd;stroke:#000000;stroke-width:0.82230002;stroke-miterlimit:2.61310005" style="fill:#ffffff;fill-rule:evenodd;stroke:#000000;stroke-width:0.82230002;stroke-miterlimit:2.61310005"
id="path21" id="path21"
@ -28202,7 +28201,7 @@
<polygon <polygon
style="fill:#c8c9ca;fill-rule:evenodd;stroke:#000000;stroke-width:0.82230002;stroke-miterlimit:2.61310005" style="fill:#c8c9ca;fill-rule:evenodd;stroke:#000000;stroke-width:0.82230002;stroke-miterlimit:2.61310005"
id="polygon23" id="polygon23"
points="225.505,370.688 225.505,449.298 247.754,449.298 247.754,370.688 225.505,370.688 " /> points="247.754,449.298 247.754,370.688 225.505,370.688 225.505,370.688 225.505,449.298 " />
<path <path
style="fill:#c8c9ca;fill-rule:evenodd;stroke:#000000;stroke-width:0.82230002;stroke-miterlimit:2.61310005" style="fill:#c8c9ca;fill-rule:evenodd;stroke:#000000;stroke-width:0.82230002;stroke-miterlimit:2.61310005"
id="path25" id="path25"
@ -28296,11 +28295,11 @@
<g <g
inkscape:groupmode="layer" inkscape:groupmode="layer"
id="layer43" id="layer43"
inkscape:label="eagletree" inkscape:label="revo-eagletree-speed-sensor"
style="display:none" style="display:none"
sodipodi:insensitive="true"> sodipodi:insensitive="true">
<g <g
id="eagletree-speed-sensor"> id="revo-eagletree-speed-sensor">
<g <g
transform="matrix(0.77129601,0,0,0.77129601,-4.0324,89.181843)" transform="matrix(0.77129601,0,0,0.77129601,-4.0324,89.181843)"
id="g6563-8"> id="g6563-8">
@ -28460,7 +28459,7 @@
style="fill:#df181b;fill-opacity:1;stroke:#000000;stroke-width:0.77129602px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" /> style="fill:#df181b;fill-opacity:1;stroke:#000000;stroke-width:0.77129602px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
<path <path
transform="matrix(0.77129601,0,0,0.77129601,-4.0324,147.80034)" transform="matrix(0.77129601,0,0,0.77129601,-4.0324,147.80034)"
d="M 379.6109,501.66602 C 379.6109,504.54173 377.16866,506.87296 374.15601,506.87296 C 371.14335,506.87296 368.70111,504.54173 368.70111,501.66602 C 368.70111,498.7903 371.14335,496.45907 374.15601,496.45907 C 377.16866,496.45907 379.6109,498.7903 379.6109,501.66602 z" d="M 379.6109,501.66602 A 5.4548922,5.2069426 0 1 1 368.70111,501.66602 A 5.4548922,5.2069426 0 1 1 379.6109,501.66602 z"
sodipodi:ry="5.2069426" sodipodi:ry="5.2069426"
sodipodi:rx="5.4548922" sodipodi:rx="5.4548922"
sodipodi:cy="501.66602" sodipodi:cy="501.66602"
@ -29270,7 +29269,7 @@
id="path8856-5-6-5-6-7-2-87-6-9-8" /> id="path8856-5-6-5-6-7-2-87-6-9-8" />
<path <path
transform="translate(-465.89215,50.457722)" transform="translate(-465.89215,50.457722)"
d="M 656.58418,483.271 C 656.58418,486.11211 654.281,488.4153 651.43988,488.4153 C 648.59876,488.4153 646.29558,486.11211 646.29558,483.271 C 646.29558,480.42988 648.59876,478.1267 651.43988,478.1267 C 654.281,478.1267 656.58418,480.42988 656.58418,483.271 z" d="M 656.58418,483.271 A 5.1442995,5.1442995 0 1 1 646.29558,483.271 A 5.1442995,5.1442995 0 1 1 656.58418,483.271 z"
sodipodi:ry="5.1442995" sodipodi:ry="5.1442995"
sodipodi:rx="5.1442995" sodipodi:rx="5.1442995"
sodipodi:cy="483.271" sodipodi:cy="483.271"
@ -29286,11 +29285,11 @@
sodipodi:cy="483.271" sodipodi:cy="483.271"
sodipodi:rx="5.1442995" sodipodi:rx="5.1442995"
sodipodi:ry="5.1442995" sodipodi:ry="5.1442995"
d="M 656.58418,483.271 C 656.58418,486.11211 654.281,488.4153 651.43988,488.4153 C 648.59876,488.4153 646.29558,486.11211 646.29558,483.271 C 646.29558,480.42988 648.59876,478.1267 651.43988,478.1267 C 654.281,478.1267 656.58418,480.42988 656.58418,483.271 z" d="M 656.58418,483.271 A 5.1442995,5.1442995 0 1 1 646.29558,483.271 A 5.1442995,5.1442995 0 1 1 656.58418,483.271 z"
transform="translate(-465.89215,30.404033)" /> transform="translate(-465.89215,30.404033)" />
<path <path
transform="translate(-465.89215,12.404008)" transform="translate(-465.89215,12.404008)"
d="M 656.58418,483.271 C 656.58418,486.11211 654.281,488.4153 651.43988,488.4153 C 648.59876,488.4153 646.29558,486.11211 646.29558,483.271 C 646.29558,480.42988 648.59876,478.1267 651.43988,478.1267 C 654.281,478.1267 656.58418,480.42988 656.58418,483.271 z" d="M 656.58418,483.271 A 5.1442995,5.1442995 0 1 1 646.29558,483.271 A 5.1442995,5.1442995 0 1 1 656.58418,483.271 z"
sodipodi:ry="5.1442995" sodipodi:ry="5.1442995"
sodipodi:rx="5.1442995" sodipodi:rx="5.1442995"
sodipodi:cy="483.271" sodipodi:cy="483.271"
@ -29306,7 +29305,7 @@
sodipodi:cy="483.271" sodipodi:cy="483.271"
sodipodi:rx="5.1442995" sodipodi:rx="5.1442995"
sodipodi:ry="5.1442995" sodipodi:ry="5.1442995"
d="M 656.58418,483.271 C 656.58418,486.11211 654.281,488.4153 651.43988,488.4153 C 648.59876,488.4153 646.29558,486.11211 646.29558,483.271 C 646.29558,480.42988 648.59876,478.1267 651.43988,478.1267 C 654.281,478.1267 656.58418,480.42988 656.58418,483.271 z" d="M 656.58418,483.271 A 5.1442995,5.1442995 0 1 1 646.29558,483.271 A 5.1442995,5.1442995 0 1 1 656.58418,483.271 z"
transform="translate(-465.89215,-7.5960203)" /> transform="translate(-465.89215,-7.5960203)" />
<g <g
id="g9542-2-1-6" id="g9542-2-1-6"
@ -29407,7 +29406,7 @@
<polygon <polygon
style="fill-rule:evenodd" style="fill-rule:evenodd"
id="polygon13-5-7-1" id="polygon13-5-7-1"
points="251.619,460.783 233.13,460.783 233.13,492.937 251.619,492.937 251.619,485.734 242.74,485.734 242.74,480.095 251.619,480.095 251.619,473.728 242.74,473.728 242.74,467.777 251.619,467.777 251.619,467.777 " /> points="233.13,492.937 251.619,492.937 251.619,485.734 242.74,485.734 242.74,480.095 251.619,480.095 251.619,473.728 242.74,473.728 242.74,467.777 251.619,467.777 251.619,467.777 251.619,460.783 233.13,460.783 " />
<path <path
style="fill-rule:evenodd" style="fill-rule:evenodd"
id="path15-2-6-3" id="path15-2-6-3"
@ -29421,7 +29420,7 @@
<polygon <polygon
style="fill:#ffffff;fill-rule:evenodd;stroke:#000000;stroke-width:0.82230002;stroke-miterlimit:2.61310005" style="fill:#ffffff;fill-rule:evenodd;stroke:#000000;stroke-width:0.82230002;stroke-miterlimit:2.61310005"
id="polygon19-3-9-3" id="polygon19-3-9-3"
points="253.082,454.937 220.283,454.937 220.283,364.946 220.283,364.946 253.082,364.946 " /> points="220.283,364.946 220.283,364.946 253.082,364.946 253.082,454.937 220.283,454.937 " />
<path <path
style="fill:#ffffff;fill-rule:evenodd;stroke:#000000;stroke-width:0.82230002;stroke-miterlimit:2.61310005" style="fill:#ffffff;fill-rule:evenodd;stroke:#000000;stroke-width:0.82230002;stroke-miterlimit:2.61310005"
id="path21-6-0-1" id="path21-6-0-1"
@ -29430,7 +29429,7 @@
<polygon <polygon
style="fill:#c8c9ca;fill-rule:evenodd;stroke:#000000;stroke-width:0.82230002;stroke-miterlimit:2.61310005" style="fill:#c8c9ca;fill-rule:evenodd;stroke:#000000;stroke-width:0.82230002;stroke-miterlimit:2.61310005"
id="polygon23-6-4-7" id="polygon23-6-4-7"
points="247.754,449.298 247.754,370.688 225.505,370.688 225.505,370.688 225.505,449.298 " /> points="225.505,370.688 225.505,370.688 225.505,449.298 247.754,449.298 247.754,370.688 " />
<path <path
style="fill:#c8c9ca;fill-rule:evenodd;stroke:#000000;stroke-width:0.82230002;stroke-miterlimit:2.61310005" style="fill:#c8c9ca;fill-rule:evenodd;stroke:#000000;stroke-width:0.82230002;stroke-miterlimit:2.61310005"
id="path25-2-1-5" id="path25-2-1-5"

Before

Width:  |  Height:  |  Size: 2.7 MiB

After

Width:  |  Height:  |  Size: 2.7 MiB

View File

@ -150,7 +150,8 @@ void VehicleConfigurationHelper::applyHardwareConfiguration()
data.CC_RcvrPort = HwSettings::CC_RCVRPORT_PWMNOONESHOT; data.CC_RcvrPort = HwSettings::CC_RCVRPORT_PWMNOONESHOT;
break; break;
case VehicleConfigurationSource::INPUT_PPM: case VehicleConfigurationSource::INPUT_PPM:
if (m_configSource->getEscType() == VehicleConfigurationSource::ESC_ONESHOT) { if (m_configSource->getEscType() == VehicleConfigurationSource::ESC_ONESHOT ||
m_configSource->getEscType() == VehicleConfigurationSource::ESC_RAPID) {
data.CC_RcvrPort = HwSettings::CC_RCVRPORT_PPM_PIN8ONESHOT; data.CC_RcvrPort = HwSettings::CC_RCVRPORT_PPM_PIN8ONESHOT;
} else { } else {
data.CC_RcvrPort = HwSettings::CC_RCVRPORT_PPMNOONESHOT; data.CC_RcvrPort = HwSettings::CC_RCVRPORT_PPMNOONESHOT;
@ -376,18 +377,19 @@ void VehicleConfigurationHelper::applyActuatorConfiguration()
bankMode = ActuatorSettings::BANKMODE_PWM; bankMode = ActuatorSettings::BANKMODE_PWM;
break; break;
case VehicleConfigurationSource::ESC_RAPID: case VehicleConfigurationSource::ESC_RAPID:
escFrequence = RAPID_ESC_FREQUENCY;
if ((m_configSource->getControllerType() == VehicleConfigurationSource::CONTROLLER_CC || if ((m_configSource->getControllerType() == VehicleConfigurationSource::CONTROLLER_CC ||
m_configSource->getControllerType() == VehicleConfigurationSource::CONTROLLER_CC3D) && m_configSource->getControllerType() == VehicleConfigurationSource::CONTROLLER_CC3D) &&
m_configSource->getInputType() == VehicleConfigurationSource::INPUT_PWM) { m_configSource->getInputType() == VehicleConfigurationSource::INPUT_PWM) {
bankMode = ActuatorSettings::BANKMODE_PWM; bankMode = ActuatorSettings::BANKMODE_PWM;
escFrequence = RAPID_ESC_FREQUENCY;
} else { } else {
bankMode = ActuatorSettings::BANKMODE_PWMSYNC; bankMode = ActuatorSettings::BANKMODE_PWMSYNC;
escFrequence = PWMSYNC_ESC_FREQUENCY;
} }
break; break;
case VehicleConfigurationSource::ESC_ONESHOT: case VehicleConfigurationSource::ESC_ONESHOT:
escFrequence = RAPID_ESC_FREQUENCY;
bankMode = ActuatorSettings::BANKMODE_ONESHOT125; bankMode = ActuatorSettings::BANKMODE_ONESHOT125;
escFrequence = ONESHOT_ESC_FREQUENCY;
break; break;
default: default:
break; break;

View File

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

View File

@ -0,0 +1,13 @@
<html>
<head>
<title></title>
<meta content="">
<style></style>
</head>
<body>
<h1>System Alarm</h1>
<p>
Reboot is required !!!
</p>
</body>
</html>

View File

@ -0,0 +1,18 @@
<html>
<head>
<title></title>
<meta content="">
<style></style>
</head>
<body>
<h1>System Configuration : FlightMode</h1>
<p>
There is a problem with flightmode configuration :
<ul>
<li>One Gps assisted mode is present and you are using a CC/CC3D.</li>
<li>One Gps assisted mode is present and you don't use "GPS Navigation (INS13)" and GPS configured.</li>
<li>One stabilised mode use a wrong thrust mode, like CruizeControl with Rate on Pitch/Roll.</li>
</ul>
</p>
</body>
</html>

View File

@ -0,0 +1,17 @@
<html>
<head>
<title></title>
<meta content="">
<style></style>
</head>
<body>
<h1>System Configuration : Unsupported Config OneShot</h1>
<p>
You have selected an unsupported config for PWMSync or OneShot :
<ul>
<li>Double check if RC Input used is compatible with this mode,</li>
<li>Double check your Output configuration.</li>
</ul>
</p>
</body>
</html>

View File

@ -0,0 +1,13 @@
<html>
<head>
<title></title>
<meta content="">
<style></style>
</head>
<body>
<h1>Alarme Système</h1>
<p>
Un redémarrage est nécessaire !!!
</p>
</body>
</html>

View File

@ -10,7 +10,7 @@
Une des conditions suivantes semble présente : Une des conditions suivantes semble présente :
<ul> <ul>
<li> <li>
<p>Vous avez réglé un mode GPS (PosHold, RTB) l'interrupteur de mode de vol, et vous avez sélectionné "Basic (Complementary)" comme algorithme d'estimation de l'attitude.</p> <p>Vous avez réglé un mode GPS (PosHold, RTB) sur un mode de vol, et vous avez sélectionné "Basic (Complementary)" comme algorithme d'estimation de l'attitude.</p>
<p>Sélectionnez "GPS Navigation (INS13)" dans l'onglet Config -> Attitude -> Paramètres -> Algorithme d'Estimation de l'Attitude.</p> <p>Sélectionnez "GPS Navigation (INS13)" dans l'onglet Config -> Attitude -> Paramètres -> Algorithme d'Estimation de l'Attitude.</p>
</li> </li>
</ul> </ul>

View File

@ -0,0 +1,18 @@
<html>
<head>
<title></title>
<meta content="">
<style></style>
</head>
<body>
<h1>Configuration Système : FlightMode</h1>
<p>
Il y a un problème avec la configuration des modes de vol :
<ul>
<li>Un mode assisté GPS est présent et vous utilisez une carte CC/CC3D.</li>
<li>Un mode assisté GPS est présent mais vous n'avez pas choisi "GPS Navigation (INS13)" et configuré un GPS.</li>
<li>Un mode de stabilisation utilise un mode de poussée incompatible, comme CruizeControl avec Rate en Pitch/Roll.</li>
</ul>
</p>
</body>
</html>

View File

@ -0,0 +1,17 @@
<html>
<head>
<title></title>
<meta content="">
<style></style>
</head>
<body>
<h1>Configuration Système: Mauvaise Config OneShot</h1>
<p>
Vous avez sélectionné une configuration incompatible avec PWMSync ou OneShot :
<ul>
<li>Vérifiez si votre configuration d'entrée Rc est compatible avec ces modes,</li>
<li>Vérifiez votre configuration des sorties.</li>
</ul>
</p>
</body>
</html>

View File

@ -31,6 +31,9 @@
<file>html/Magnetometer-Critical.html</file> <file>html/Magnetometer-Critical.html</file>
<file>html/Magnetometer-Warning.html</file> <file>html/Magnetometer-Warning.html</file>
<file>html/Stabilization-Critical.html</file> <file>html/Stabilization-Critical.html</file>
<file>html/SystemConfiguration-UnsupportedConfig_OneShot.html</file>
<file>html/SystemConfiguration-FlightMode.html</file>
<file>html/BootFault-RebootRequired.html</file>
</qresource> </qresource>
<qresource prefix="/systemhealth" lang="fr"> <qresource prefix="/systemhealth" lang="fr">
<file alias="html/Actuator-Critical.html">html/fr/Actuator-Critical.html</file> <file alias="html/Actuator-Critical.html">html/fr/Actuator-Critical.html</file>
@ -64,6 +67,9 @@
<file alias="html/Magnetometer-Warning.html">html/fr/Magnetometer-Warning.html</file> <file alias="html/Magnetometer-Warning.html">html/fr/Magnetometer-Warning.html</file>
<file alias="html/Magnetometer-Critical.html">html/fr/Magnetometer-Critical.html</file> <file alias="html/Magnetometer-Critical.html">html/fr/Magnetometer-Critical.html</file>
<file alias="html/Stabilization-Critical.html">html/fr/Stabilization-Critical.html</file> <file alias="html/Stabilization-Critical.html">html/fr/Stabilization-Critical.html</file>
<file alias="html/SystemConfiguration-UnsupportedConfig_OneShot.html">html/fr/SystemConfiguration-UnsupportedConfig_OneShot.html</file>
<file alias="html/SystemConfiguration-FlightMode.html">html/fr/SystemConfiguration-FlightMode.html</file>
<file alias="html/BootFault-RebootRequired.html">html/fr/BootFault-RebootRequired.html</file>
</qresource> </qresource>
</RCC> </RCC>