1
0
mirror of https://bitbucket.org/librepilot/librepilot.git synced 2025-02-20 10:54:14 +01:00

Merge branch 'next' into cyr/OP-1739_GNSS

This commit is contained in:
Erik Gustavsson 2015-03-04 18:07:31 +01:00
commit ccbe05dff5
25 changed files with 2203 additions and 1809 deletions

View File

@ -14,7 +14,7 @@
height="79.57505"
id="svg3604"
version="1.1"
inkscape:version="0.48.4 r9939"
inkscape:version="0.48.5 r10040"
sodipodi:docname="system-health.svg"
inkscape:export-filename="C:\NoBackup\OpenPilot\mainboard-health.png"
inkscape:export-xdpi="269.53"
@ -27,10 +27,10 @@
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="7.4934872"
inkscape:cx="56.515743"
inkscape:cy="39.787525"
inkscape:current-layer="background"
inkscape:zoom="6.5977991"
inkscape:cx="55.083588"
inkscape:cy="24.071773"
inkscape:current-layer="layer45"
id="namedview3608"
showgrid="true"
inkscape:window-width="1280"
@ -40,8 +40,12 @@
inkscape:window-maximized="1"
showguides="true"
inkscape:guide-bbox="true"
inkscape:snap-global="false"
units="mm">
inkscape:snap-global="true"
units="mm"
inkscape:snap-bbox="true"
inkscape:snap-bbox-midpoints="true"
inkscape:snap-nodes="false"
inkscape:snap-grids="false">
<sodipodi:guide
id="guide3857"
position="68.372091,-63.708224"
@ -687,7 +691,7 @@
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
<dc:title />
</cc:Work>
</rdf:RDF>
</metadata>
@ -696,7 +700,8 @@
transform="translate(-497.66563,-344.28037)"
id="background"
inkscape:groupmode="layer"
inkscape:label="Background">
inkscape:label="Background"
sodipodi:insensitive="true">
<rect
ry="1.6"
y="344.58401"
@ -754,14 +759,6 @@
x="499.66107"
y="360.58862"
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
style="fill:#333333;fill-opacity:1;stroke:none"
id="rect1234"
@ -770,25 +767,16 @@
x="499.72488"
y="408.94675"
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
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"
x="529.24725"
x="527.35309"
y="379.43469"
id="text5334"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan4263"
x="529.24725"
x="527.35309"
y="379.43469">SYSTEM HEALTH</tspan></text>
<text
xml:space="preserve"
@ -918,8 +906,8 @@
id="Airspeed"
width="23.751532"
height="10.102088"
x="557.14178"
y="362.48087"
x="557.61102"
y="362.46414"
ry="0.99014992"
inkscape:label="#rect4550-8-1-4-21-5-13" />
<rect
@ -1005,6 +993,15 @@
y="410.80194"
ry="1.111892"
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
style="fill:#28170b;fill-opacity:1;stroke:none;display:inline"
id="EventSystem"
@ -1674,6 +1671,50 @@
inkscape:label="#rect4550"
rx="1.2054718" />
</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
inkscape:groupmode="layer"
id="g5417"
@ -1798,7 +1839,8 @@
inkscape:groupmode="layer"
id="g5438"
inkscape:label="SystemConfiguration-Critical"
style="display:none">
style="display:none"
sodipodi:insensitive="true">
<rect
style="fill:#d40000;fill-opacity:1;stroke:none;display:inline"
id="SystemConfiguration-Critical"
@ -1813,7 +1855,8 @@
inkscape:groupmode="layer"
id="g5441"
inkscape:label="BootFault-Critical"
style="display:none">
style="display:none"
sodipodi:insensitive="true">
<rect
style="fill:#d40000;fill-opacity:1;stroke:none;display:inline"
id="BootFault-Critical"
@ -1827,7 +1870,8 @@
inkscape:groupmode="layer"
id="g5445"
inkscape:label="Battery-Critical"
style="display:none">
style="display:none"
sodipodi:insensitive="true">
<rect
style="fill:#d40000;fill-opacity:1;stroke:none;display:inline"
id="Battery-Critical"
@ -1842,7 +1886,8 @@
inkscape:groupmode="layer"
id="g5448"
inkscape:label="Telemetry-Critical"
style="display:none">
style="display:none"
sodipodi:insensitive="true">
<rect
style="fill:#d40000;fill-opacity:1;stroke:none;display:inline"
id="Telemetry-Critical"
@ -1857,7 +1902,8 @@
inkscape:groupmode="layer"
id="g5451"
inkscape:label="FlightTime-Critical"
style="display:none">
style="display:none"
sodipodi:insensitive="true">
<rect
style="fill:#d40000;fill-opacity:1;stroke:none;display:inline"
id="FlightTime-Critical"
@ -1872,7 +1918,8 @@
inkscape:groupmode="layer"
id="g5454"
inkscape:label="I2C-Critical"
style="display:none">
style="display:none"
sodipodi:insensitive="true">
<rect
style="fill:#d40000;fill-opacity:1;stroke:none;display:inline"
id="I2C-Critical"
@ -1887,7 +1934,8 @@
inkscape:groupmode="layer"
id="g5457"
inkscape:label="EventSystem-Critical"
style="display:none">
style="display:none"
sodipodi:insensitive="true">
<rect
style="fill:#d40000;fill-opacity:1;stroke:none;display:inline"
id="EventSystem-Critical"
@ -2282,13 +2330,13 @@
<path
inkscape:connector-curvature="0"
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"
sodipodi:nodetypes="cc" />
<path
inkscape:connector-curvature="0"
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"
sodipodi:nodetypes="cc" />
</g>
@ -2439,7 +2487,8 @@
style="display:inline"
inkscape:label="Foreground"
id="foreground"
inkscape:groupmode="layer">
inkscape:groupmode="layer"
sodipodi:insensitive="true">
<rect
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"
@ -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"
id="text5330-7-7">
<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"
inkscape:connector-curvature="0" />
<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"
inkscape:connector-curvature="0" />
<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"
inkscape:connector-curvature="0" />
<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"
inkscape:connector-curvature="0" />
</g>
@ -2903,6 +2952,17 @@
width="13.522519"
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" />
<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
inkscape:groupmode="layer"
@ -2948,12 +3008,12 @@
id="g4267">
<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"
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"
inkscape:connector-curvature="0" />
<path
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"
inkscape:connector-curvature="0" />
<path
@ -2964,14 +3024,14 @@
sodipodi:cy="35.07505"
sodipodi:rx="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:end="6.2500167"
sodipodi:open="true"
transform="matrix(0.85787666,0,0,0.89340749,1.4093898,2.5721417)" />
<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"
d="m 13,30.727043 0,2.607972"
d="M 13,30.727043 L 13,33.335015"
id="path4265"
inkscape:connector-curvature="0" />
</g>
@ -2981,12 +3041,12 @@
style="display:inline">
<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"
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"
inkscape:connector-curvature="0" />
<path
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"
inkscape:connector-curvature="0" />
<path
@ -2997,14 +3057,14 @@
sodipodi:cy="35.07505"
sodipodi:rx="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:end="6.2500167"
sodipodi:open="true"
transform="matrix(0.85787666,0,0,0.89340749,1.4093898,2.5721417)" />
<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"
d="m 13,30.727043 0,2.607972"
d="M 13,30.727043 L 13,33.335015"
id="path4265-8"
inkscape:connector-curvature="0" />
</g>

Before

Width:  |  Height:  |  Size: 106 KiB

After

Width:  |  Height:  |  Size: 109 KiB

View File

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

View File

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

View File

@ -57,7 +57,7 @@
<item>
<widget class="QScrollArea" name="scrollArea">
<property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Expanding">
<sizepolicy hsizetype="Expanding" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
@ -72,9 +72,9 @@
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>750</width>
<height>729</height>
<y>-103</y>
<width>748</width>
<height>811</height>
</rect>
</property>
<layout class="QVBoxLayout" name="verticalLayout">
@ -95,24 +95,6 @@
</property>
<item>
<widget class="QGroupBox" name="groupBox_2">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>0</width>
<height>0</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>16777215</width>
<height>16777215</height>
</size>
</property>
<property name="title">
<string>Module Control</string>
</property>
@ -139,24 +121,6 @@
</item>
<item>
<widget class="QGroupBox" name="groupBox_5">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>0</width>
<height>110</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>16777215</width>
<height>16777215</height>
</size>
</property>
<property name="title">
<string>Basic Settings (Stabilization)</string>
</property>
@ -381,24 +345,6 @@ font:bold;</string>
</item>
<item>
<widget class="QGroupBox" name="groupBox">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>0</width>
<height>187</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>16777215</width>
<height>16777215</height>
</size>
</property>
<property name="title">
<string>Advanced Settings (Control)</string>
</property>
@ -863,12 +809,6 @@ value.</string>
</item>
<item>
<widget class="QGroupBox" name="groupBox_3">
<property name="minimumSize">
<size>
<width>0</width>
<height>187</height>
</size>
</property>
<property name="title">
<string>Expert Settings (Attitude Filter and Feed Forward)</string>
</property>
@ -1324,18 +1264,6 @@ The same value is used for all axes.</string>
</item>
<item>
<widget class="QGroupBox" name="groupBox_4">
<property name="minimumSize">
<size>
<width>0</width>
<height>50</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>16777215</width>
<height>16777215</height>
</size>
</property>
<property name="title">
<string>Messages</string>
</property>

View File

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

View File

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

View File

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

Before

Width:  |  Height:  |  Size: 10 KiB

After

Width:  |  Height:  |  Size: 12 KiB

View File

@ -116,8 +116,8 @@
<rect>
<x>0</x>
<y>0</y>
<width>774</width>
<height>497</height>
<width>1228</width>
<height>661</height>
</rect>
</property>
<layout class="QGridLayout" name="gridLayout">
@ -274,8 +274,7 @@
</item>
</layout>
</widget>
<widget class="QWidget" name="wizard">
</widget>
<widget class="QWidget" name="wizard"/>
</widget>
</item>
</layout>
@ -491,8 +490,8 @@
<rect>
<x>0</x>
<y>0</y>
<width>730</width>
<height>554</height>
<width>1228</width>
<height>661</height>
</rect>
</property>
<layout class="QGridLayout" name="gridLayout_7" rowstretch="1,0,0,0">
@ -723,13 +722,13 @@ font:bold;</string>
<widget class="QFrame" name="frame_3">
<property name="minimumSize">
<size>
<width>106</width>
<width>90</width>
<height>0</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>105</width>
<width>90</width>
<height>16777215</height>
</size>
</property>
@ -1127,13 +1126,13 @@ font:bold;</string>
<property name="minimumSize">
<size>
<width>0</width>
<height>230</height>
<height>275</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>16777215</width>
<height>230</height>
<height>275</height>
</size>
</property>
<property name="title">
@ -1349,7 +1348,7 @@ font:bold;</string>
<property name="maximumSize">
<size>
<width>16777215</width>
<height>150</height>
<height>200</height>
</size>
</property>
<property name="focusPolicy">
@ -1759,6 +1758,12 @@ font:bold;</string>
</item>
<item row="1" column="12">
<widget class="QSpinBox" name="fmsPosNum">
<property name="maximumSize">
<size>
<width>16777215</width>
<height>29</height>
</size>
</property>
<property name="toolTip">
<string>Number of positions your FlightMode switch has.
@ -2214,8 +2219,8 @@ font:bold;</string>
<rect>
<x>0</x>
<y>0</y>
<width>544</width>
<height>169</height>
<width>1228</width>
<height>661</height>
</rect>
</property>
<layout class="QVBoxLayout" name="verticalLayout_2">

View File

@ -136,8 +136,8 @@
<rect>
<x>0</x>
<y>0</y>
<width>950</width>
<height>780</height>
<width>939</width>
<height>776</height>
</rect>
</property>
<layout class="QVBoxLayout" name="verticalLayout_3">
@ -2900,7 +2900,7 @@ border-radius: 5;</string>
<property name="maximumSize">
<size>
<width>16777215</width>
<height>160</height>
<height>16777215</height>
</size>
</property>
<property name="title">
@ -5626,7 +5626,7 @@ Then lower the value by 5 or so.</string>
<property name="maximumSize">
<size>
<width>16777215</width>
<height>135</height>
<height>16777215</height>
</size>
</property>
<property name="autoFillBackground">
@ -8244,8 +8244,8 @@ border-radius: 5;</string>
<rect>
<x>0</x>
<y>0</y>
<width>950</width>
<height>780</height>
<width>952</width>
<height>763</height>
</rect>
</property>
<layout class="QVBoxLayout" name="verticalLayout_29">
@ -18236,8 +18236,8 @@ border-radius: 5;</string>
<rect>
<x>0</x>
<y>0</y>
<width>950</width>
<height>780</height>
<width>952</width>
<height>763</height>
</rect>
</property>
<layout class="QVBoxLayout" name="verticalLayout_8" stretch="0,0,0,0,0,0">
@ -24082,8 +24082,8 @@ font:bold;</string>
<rect>
<x>0</x>
<y>0</y>
<width>950</width>
<height>780</height>
<width>952</width>
<height>763</height>
</rect>
</property>
<layout class="QVBoxLayout" name="verticalLayout_18">

View File

@ -167,7 +167,8 @@ void ConnectionDiagram::setupGraphicsScene()
case VehicleConfigurationSource::CONTROLLER_CC:
case VehicleConfigurationSource::CONTROLLER_CC3D:
prefix = "cc-";
if (m_configSource->getEscType() == VehicleConfigurationSource::ESC_ONESHOT) {
if (m_configSource->getEscType() == VehicleConfigurationSource::ESC_ONESHOT ||
m_configSource->getEscType() == VehicleConfigurationSource::ESC_RAPID) {
suffix = "-oneshot";
}
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();
foreach(QJsonObject * templ, m_templates.values()) {
delete templ;
}
m_templates.clear();
QDir templateDir(templateBasePath);
QDir templateDir(QString("%1/%2/").arg(Utils::PathUtils().InsertDataPath("%%DATAPATH%%cloudconfig")).arg(m_dir));
qDebug() << "Loading templates from base path:" << templateBasePath;
QStringList names;
names << "*.optmpl";
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()
{
QListWidgetItem *item;

View File

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

View File

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

View File

@ -30,13 +30,13 @@
inkscape:window-height="928"
id="namedview4616"
showgrid="false"
inkscape:zoom="1.9844144"
inkscape:cx="236.10597"
inkscape:cy="505.93946"
inkscape:zoom="0.70159644"
inkscape:cx="305.10274"
inkscape:cy="632.28327"
inkscape:window-x="0"
inkscape:window-y="27"
inkscape:window-maximized="1"
inkscape:current-layer="layer12"
inkscape:current-layer="layer17"
fit-margin-top="15"
fit-margin-left="15"
fit-margin-right="15"
@ -18146,7 +18146,7 @@
sodipodi:insensitive="true">
<g
style="display:inline"
id="sbus"
id="revo-sbus"
transform="matrix(0.4,0,0,0.4,53.475,-98.70912)">
<path
id="path9857-8-5-2"
@ -18221,47 +18221,46 @@
</g>
</g>
<g
sodipodi:insensitive="true"
style="display:none"
inkscape:label="revo-satellite"
id="g11310"
inkscape:groupmode="layer">
<g
transform="matrix(0.4,0,0,0.4,-131.04473,-97.93132)"
id="g11312">
id="revo-satellite">
<path
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"
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" />
<path
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"
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" />
<path
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"
style="fill:none;stroke:#1f4697;stroke-width:15.29999924;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none"
sodipodi:nodetypes="cccc" />
<path
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"
style="fill:none;stroke:#d81900;stroke-width:15.29999924;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none"
sodipodi:nodetypes="cccc" />
<path
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"
style="fill:none;stroke:#ec6004;stroke-width:15.29999924;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none"
sodipodi:nodetypes="cccc" />
<path
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"
style="fill:none;stroke:#000000;stroke-width:15.30000019;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none"
sodipodi:nodetypes="cccc" />
@ -18861,7 +18860,7 @@
inkscape:groupmode="layer">
<g
transform="matrix(0.4,0,0,0.4,53.475,-98.70912)"
id="g11325"
id="cc-sbus"
style="display:inline">
<path
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"
sodipodi:insensitive="true">
<g
id="satellite"
id="cc-satellite"
transform="matrix(0.4,0,0,0.4,-131.04473,-97.93132)">
<path
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"
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" />
<path
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"
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" />
@ -18960,25 +18959,25 @@
sodipodi:nodetypes="cccc"
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"
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" />
<path
sodipodi:nodetypes="cccc"
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"
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" />
<path
sodipodi:nodetypes="cccc"
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"
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" />
<path
sodipodi:nodetypes="cccc"
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"
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" />
<rect
rx="11.5"
@ -19544,11 +19543,11 @@
<g
inkscape:groupmode="layer"
id="layer23"
inkscape:label="generic-nmea"
inkscape:label="revo-generic-nmea"
style="display:none"
sodipodi:insensitive="true">
<g
id="generic-nmea">
id="revo-generic-nmea">
<g
id="g14377"
transform="matrix(0,0.77129601,-0.77129601,0,1404.0461,377.01359)">
@ -20431,11 +20430,11 @@
<g
inkscape:groupmode="layer"
id="layer28"
inkscape:label="OPGPS-v8-ublox"
inkscape:label="revo-OPGPS-v8-ublox"
style="display:none"
sodipodi:insensitive="true">
<g
id="OPGPS-v8-ublox">
id="revo-OPGPS-v8-ublox">
<path
sodipodi:nodetypes="ccccc"
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>
<path
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:rx="23.877298"
sodipodi:cy="572.3067"
@ -20594,7 +20593,7 @@
sodipodi:cy="572.3067"
sodipodi:rx="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)" />
<path
sodipodi:type="arc"
@ -20604,11 +20603,11 @@
sodipodi:cy="572.3067"
sodipodi:rx="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)" />
<path
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:rx="23.877298"
sodipodi:cy="572.3067"
@ -20732,11 +20731,11 @@
<g
inkscape:groupmode="layer"
id="layer36"
inkscape:label="OPGPS-v9"
style="display:none"
inkscape:label="revo-OPGPS-v9"
style="display:inline"
sodipodi:insensitive="true">
<g
id="OPGPS-v9">
id="revo-OPGPS-v9">
<rect
id="rect14138-8-9-5"
x="620.07581"
@ -20757,11 +20756,11 @@
sodipodi:cy="572.3067"
sodipodi:rx="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)" />
<path
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:rx="23.877298"
sodipodi:cy="572.3067"
@ -20885,7 +20884,7 @@
</g>
<path
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:rx="23.877298"
sodipodi:cy="572.3067"
@ -20901,7 +20900,7 @@
sodipodi:cy="572.3067"
sodipodi:rx="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)" />
<rect
id="rect7428"
@ -22804,13 +22803,13 @@
<g
inkscape:groupmode="layer"
id="layer5"
inkscape:label="flexi-generic-nmea"
style="display:inline"
inkscape:label="flexi-revo-generic-nmea"
style="display:none"
sodipodi:insensitive="true">
<g
transform="translate(-248,4.5990295e-6)"
style="display:inline"
id="flexi-generic-nmea">
id="flexi-revo-generic-nmea">
<g
id="g14377-12"
transform="matrix(0,0.77129601,-0.77129601,0,1404.0461,377.01359)">
@ -23699,7 +23698,7 @@
<g
transform="translate(-340,4.6e-6)"
style="display:inline"
id="flexi-OPGPS-v8-ublox">
id="flexi-revo-OPGPS-v8-ublox">
<path
sodipodi:nodetypes="cccc"
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>
<path
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:rx="23.877298"
sodipodi:cy="572.3067"
@ -23858,7 +23857,7 @@
sodipodi:cy="572.3067"
sodipodi:rx="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)" />
<path
sodipodi:type="arc"
@ -23868,11 +23867,11 @@
sodipodi:cy="572.3067"
sodipodi:rx="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)" />
<path
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:rx="23.877298"
sodipodi:cy="572.3067"
@ -23996,13 +23995,13 @@
<g
inkscape:groupmode="layer"
id="layer9"
inkscape:label="flexi-OPGPS-v9"
inkscape:label="flexi-revo-OPGPS-v9"
style="display:none"
sodipodi:insensitive="true">
<g
transform="translate(-240,4.5990295e-6)"
style="display:inline"
id="flexi-OPGPS-v9">
id="flexi-revo-OPGPS-v9">
<rect
id="rect14138-8-9-5-5"
x="620.07581"
@ -24023,11 +24022,11 @@
sodipodi:cy="572.3067"
sodipodi:rx="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)" />
<path
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:rx="23.877298"
sodipodi:cy="572.3067"
@ -24151,7 +24150,7 @@
</g>
<path
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:rx="23.877298"
sodipodi:cy="572.3067"
@ -24167,7 +24166,7 @@
sodipodi:cy="572.3067"
sodipodi:rx="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)" />
<rect
id="rect7428-5"
@ -24357,9 +24356,9 @@
<polygon
transform="matrix(1.5711089,0,0,1.5372108,235.33403,522.2062)"
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
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"
transform="matrix(1.5711089,0,0,1.5372108,357.19879,522.2062)" />
<g
@ -26082,7 +26081,7 @@
<g
inkscape:groupmode="layer"
id="layer40"
inkscape:label="nano-ms4525"
inkscape:label="nano-ms4525-speed-sensor"
style="display:none"
sodipodi:insensitive="true">
<g
@ -26575,7 +26574,7 @@
<polygon
style="fill-rule:evenodd"
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
style="fill-rule:evenodd"
id="path15-2"
@ -26589,7 +26588,7 @@
<polygon
style="fill:#ffffff;fill-rule:evenodd;stroke:#000000;stroke-width:0.82230002;stroke-miterlimit:2.61310005"
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
style="fill:#ffffff;fill-rule:evenodd;stroke:#000000;stroke-width:0.82230002;stroke-miterlimit:2.61310005"
id="path21-6"
@ -26598,7 +26597,7 @@
<polygon
style="fill:#c8c9ca;fill-rule:evenodd;stroke:#000000;stroke-width:0.82230002;stroke-miterlimit:2.61310005"
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
style="fill:#c8c9ca;fill-rule:evenodd;stroke:#000000;stroke-width:0.82230002;stroke-miterlimit:2.61310005"
id="path25-2"
@ -26615,7 +26614,7 @@
<g
inkscape:groupmode="layer"
id="layer41"
inkscape:label="nano-eagletree"
inkscape:label="nano-eagletree-speed-sensor"
style="display:none"
sodipodi:insensitive="true">
<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" />
<path
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:rx="5.4548922"
sodipodi:cy="501.66602"
@ -27589,7 +27588,7 @@
id="path8856-5-6-5-6-7-2-87-6-9" />
<path
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:rx="5.1442995"
sodipodi:cy="483.271"
@ -27605,11 +27604,11 @@
sodipodi:cy="483.271"
sodipodi:rx="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)" />
<path
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:rx="5.1442995"
sodipodi:cy="483.271"
@ -27625,7 +27624,7 @@
sodipodi:cy="483.271"
sodipodi:rx="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)" />
<g
id="g9542-2-1"
@ -27726,7 +27725,7 @@
<polygon
style="fill-rule:evenodd"
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
style="fill-rule:evenodd"
id="path15-2-6"
@ -27740,7 +27739,7 @@
<polygon
style="fill:#ffffff;fill-rule:evenodd;stroke:#000000;stroke-width:0.82230002;stroke-miterlimit:2.61310005"
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
style="fill:#ffffff;fill-rule:evenodd;stroke:#000000;stroke-width:0.82230002;stroke-miterlimit:2.61310005"
id="path21-6-0"
@ -27749,7 +27748,7 @@
<polygon
style="fill:#c8c9ca;fill-rule:evenodd;stroke:#000000;stroke-width:0.82230002;stroke-miterlimit:2.61310005"
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
style="fill:#c8c9ca;fill-rule:evenodd;stroke:#000000;stroke-width:0.82230002;stroke-miterlimit:2.61310005"
id="path25-2-1"
@ -27766,11 +27765,11 @@
<g
inkscape:groupmode="layer"
id="layer42"
inkscape:label="ms4525"
inkscape:label="revo-ms4525-speed-sensor"
style="display:none"
sodipodi:insensitive="true">
<g
id="ms4525-speed-sensor">
id="revo-ms4525-speed-sensor">
<path
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"
@ -28179,7 +28178,7 @@
<polygon
style="fill-rule:evenodd"
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
style="fill-rule:evenodd"
id="path15"
@ -28193,7 +28192,7 @@
<polygon
style="fill:#ffffff;fill-rule:evenodd;stroke:#000000;stroke-width:0.82230002;stroke-miterlimit:2.61310005"
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
style="fill:#ffffff;fill-rule:evenodd;stroke:#000000;stroke-width:0.82230002;stroke-miterlimit:2.61310005"
id="path21"
@ -28202,7 +28201,7 @@
<polygon
style="fill:#c8c9ca;fill-rule:evenodd;stroke:#000000;stroke-width:0.82230002;stroke-miterlimit:2.61310005"
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
style="fill:#c8c9ca;fill-rule:evenodd;stroke:#000000;stroke-width:0.82230002;stroke-miterlimit:2.61310005"
id="path25"
@ -28296,11 +28295,11 @@
<g
inkscape:groupmode="layer"
id="layer43"
inkscape:label="eagletree"
inkscape:label="revo-eagletree-speed-sensor"
style="display:none"
sodipodi:insensitive="true">
<g
id="eagletree-speed-sensor">
id="revo-eagletree-speed-sensor">
<g
transform="matrix(0.77129601,0,0,0.77129601,-4.0324,89.181843)"
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" />
<path
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:rx="5.4548922"
sodipodi:cy="501.66602"
@ -29270,7 +29269,7 @@
id="path8856-5-6-5-6-7-2-87-6-9-8" />
<path
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:rx="5.1442995"
sodipodi:cy="483.271"
@ -29286,11 +29285,11 @@
sodipodi:cy="483.271"
sodipodi:rx="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)" />
<path
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:rx="5.1442995"
sodipodi:cy="483.271"
@ -29306,7 +29305,7 @@
sodipodi:cy="483.271"
sodipodi:rx="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)" />
<g
id="g9542-2-1-6"
@ -29407,7 +29406,7 @@
<polygon
style="fill-rule:evenodd"
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
style="fill-rule:evenodd"
id="path15-2-6-3"
@ -29421,7 +29420,7 @@
<polygon
style="fill:#ffffff;fill-rule:evenodd;stroke:#000000;stroke-width:0.82230002;stroke-miterlimit:2.61310005"
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
style="fill:#ffffff;fill-rule:evenodd;stroke:#000000;stroke-width:0.82230002;stroke-miterlimit:2.61310005"
id="path21-6-0-1"
@ -29430,7 +29429,7 @@
<polygon
style="fill:#c8c9ca;fill-rule:evenodd;stroke:#000000;stroke-width:0.82230002;stroke-miterlimit:2.61310005"
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
style="fill:#c8c9ca;fill-rule:evenodd;stroke:#000000;stroke-width:0.82230002;stroke-miterlimit:2.61310005"
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;
break;
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;
} else {
data.CC_RcvrPort = HwSettings::CC_RCVRPORT_PPMNOONESHOT;
@ -376,18 +377,19 @@ void VehicleConfigurationHelper::applyActuatorConfiguration()
bankMode = ActuatorSettings::BANKMODE_PWM;
break;
case VehicleConfigurationSource::ESC_RAPID:
escFrequence = RAPID_ESC_FREQUENCY;
if ((m_configSource->getControllerType() == VehicleConfigurationSource::CONTROLLER_CC ||
m_configSource->getControllerType() == VehicleConfigurationSource::CONTROLLER_CC3D) &&
m_configSource->getInputType() == VehicleConfigurationSource::INPUT_PWM) {
bankMode = ActuatorSettings::BANKMODE_PWM;
bankMode = ActuatorSettings::BANKMODE_PWM;
escFrequence = RAPID_ESC_FREQUENCY;
} else {
bankMode = ActuatorSettings::BANKMODE_PWMSYNC;
bankMode = ActuatorSettings::BANKMODE_PWMSYNC;
escFrequence = PWMSYNC_ESC_FREQUENCY;
}
break;
case VehicleConfigurationSource::ESC_ONESHOT:
escFrequence = RAPID_ESC_FREQUENCY;
bankMode = ActuatorSettings::BANKMODE_ONESHOT125;
escFrequence = ONESHOT_ESC_FREQUENCY;
break;
default:
break;

View File

@ -59,6 +59,8 @@ public:
bool setupHardwareSettings(bool save = true);
static const qint16 LEGACY_ESC_FREQUENCY = 50;
static const qint16 RAPID_ESC_FREQUENCY = 490;
static const qint16 PWMSYNC_ESC_FREQUENCY = 0;
static const qint16 ONESHOT_ESC_FREQUENCY = 0;
static const qint16 ANALOG_SERVO_FREQUENCY = 50;
static const qint16 DIGITAL_SERVO_FREQUENCY = 333;
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 :
<ul>
<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>
</li>
</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-Warning.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 prefix="/systemhealth" lang="fr">
<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-Critical.html">html/fr/Magnetometer-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>
</RCC>

View File

@ -68,12 +68,15 @@ class Repo:
if self._rc == 0:
self._time = self._out
def _get_tag(self):
def _get_last_tag(self):
"""Get and store git tag for the HEAD commit"""
self._tag = None
self._exec('describe --tags --exact-match HEAD')
self._last_tag = None
self._num_commits_past_tag = None
self._exec('describe --tags --long')
if self._rc == 0:
self._tag = self._out.strip(' \t\n\r')
descriptions = self._out.rsplit('-', 2)
self._last_tag = descriptions[-3]
self._num_commits_past_tag = descriptions[-2]
def _get_branch(self):
"""Get and store current branch containing the HEAD commit"""
@ -102,7 +105,8 @@ class Repo:
self._hash = json_data['hash']
self._origin = json_data['origin']
self._time = json_data['time']
self._tag = json_data['tag']
self._last_tag = json_data['last_tag']
self._num_commits_past_tag = json_data['num_commits_past_tag']
self._branch = json_data['branch']
self._dirty = json_data['dirty']
@ -119,14 +123,15 @@ class Repo:
self._hash = self._out.strip(' \t\n\r')
self._get_origin()
self._get_time()
self._get_tag()
self._get_last_tag()
self._get_branch()
self._get_dirty()
else:
self._hash = None
self._origin = None
self._time = None
self._tag = None
self._last_tag = None
self._num_commits_past_tag = None
self._branch = None
self._dirty = None
@ -160,10 +165,10 @@ class Repo:
def tag(self, none = None):
"""Return git tag for the HEAD commit or given string if none"""
if self._tag == None:
if self._last_tag == None or self._num_commits_past_tag != 0:
return none
else:
return self._tag
return self._last_tag
def branch(self, none = None):
"""Return git branch containing the HEAD or given string if none"""
@ -180,22 +185,22 @@ class Repo:
return clean
def label(self):
"""Return package label (tag if defined, or date-hash if no tag)"""
"""Return package label (similar to git describe)"""
try:
if self._tag == None:
return ''.join([self.time('%Y%m%d'), "-", self.hash(8, 'untagged'), self.dirty()])
if self._num_commits_past_tag == 0:
return self._last_tag + self.dirty()
else:
return ''.join([self.tag(''), self.dirty()])
return self._last_tag + "+r" + self._num_commits_past_tag + "-g" + self.hash(7, '') + self.dirty()
except:
return None
def revision(self):
"""Return full revison string (tag if defined, or branch:hash date time if no tag)"""
try:
if self._tag == None:
return ''.join([self.branch('no-branch'), ":", self.hash(8, 'no-hash'), self.dirty(), self.time(' %Y%m%d %H:%M')])
if self._num_commits_past_tag == 0:
return self.tag('') + self.dirty()
else:
return ''.join([self.tag(''), self.dirty()])
return self.branch('no-branch') + ":" + self.hash(8, 'no-hash') + self.dirty() + self.time(' %Y%m%d %H:%M')
except:
return None
@ -220,7 +225,8 @@ class Repo:
json_data['hash'] = self._hash
json_data['origin'] = self._origin
json_data['time'] = self._time
json_data['tag'] = self._tag
json_data['last_tag'] = self._last_tag
json_data['num_commits_past_tag'] = self._num_commits_past_tag
json_data['branch'] = self._branch
json_data['dirty'] = self._dirty