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

Merge remote-tracking branch 'origin/next' into thread/OP-1554_Enum_Scopes

This commit is contained in:
m_thread 2014-10-28 00:47:00 +01:00
commit 4fc3bc4d3f
44 changed files with 2383 additions and 614 deletions

View File

@ -1,3 +1,22 @@
--- RELEASE-14.10-RC4 ---
This release candidate does add the following fixes/enhancements over the previous RC3
The full list of features, improvements and bugfixes in this RC4 is accessible here:
http://progress.openpilot.org/issues/?filter=11862
** Improvement
* [OP-1571] Cloud config enhancements.
* [OP-1556] Improve ESC calibration.
** Bug
* [OP-1572] Wrong frame type displayed in PFD gadget
* [OP-1570] The Vehicle gadget defaults as a quad x with + mixes 100 100 50
* [OP-1568] Black tooltip over Telemetry monitor
* [OP-1567] Fix bugs in Wizard
* [OP-1564] Incorrect display of Thrust mode in PFD Module
* [OP-1562] Welcome plugin warnings
* [OP-1559] GPS setup wizard should not say "Main Port"
--- RELEASE-14.10 ---
This release mainly focuses on flight performance, especially aimed at mini multirotors and adds support for the OpenPilot Platinum GPS (V9).
This version supports the CopterControl, CC3D, Atom and the Revolution Flight controllers as well as the OPLink Modems.
@ -12,7 +31,6 @@ Some key addition in this release:
- Redesigned PFD artwork and addition of multifunctional slide out panels;
- Support for additional Flexi-IO serial port for Revolution;
- External (ws281x compatible) status LED support;
- Several OPLink reliability improvements;
- Considerable flight performance improvements
The full list of features, improvements and bugfixes in this release is accessible here:
@ -128,7 +146,6 @@ NOTE: If you were using OPLink at power levels lower than 100mW, please redo a r
* [OP-1510] - Don't force operating at 100mW
* [OP-1513] - Filter every temperature measurement used for temperature calibration
* [OP-1517] - Setup Wizard - sets SBus and GPS to main port
* [OP-1522] - Improve Robustness of OPLink radio
* [OP-1526] - Reverse all motors not working?
* [OP-1532] - OPLINKMINI and Revo do not communicate correctly
* [OP-1536] - The Revo ComBridge outputs garbage at the end of transmissions

View File

@ -0,0 +1 @@
This folder is here to host downloaded or bundled vehicle settings template files (.optmpl).

View File

@ -0,0 +1 @@
This folder is here to host downloaded or bundled vehicle settings template files (.optmpl).

View File

@ -0,0 +1 @@
This folder is here to host downloaded or bundled vehicle settings template files (.optmpl).

View File

@ -0,0 +1 @@
This folder is here to host downloaded or bundled vehicle settings template files (.optmpl).

View File

@ -0,0 +1 @@
This folder is here to host downloaded or bundled vehicle settings template files (.optmpl).

View File

@ -1 +1 @@
<html>Here you will find help for tunning Attitude Stabilization</html>
<html>Here you will find help for tuning Attitude Stabilization</html>

View File

@ -1 +1 @@
<html>Here you will find help for tunning Attitude Stabilization</html>
<html>Here you will find help for tuning Attitude Stabilization</html>

View File

@ -890,7 +890,7 @@ Item {
Text {
text: ["FixedWing", "FixedWingElevon", "FixedWingVtail", "VTOL", "HeliCP", "QuadX", "QuadP",
"Hexa+", "Octo+", "Custom", "HexaX", "HexaH", "OctoV", "OctoCoaxP", "OctoCoaxX", "OctoX", "HexaCoax",
"QuadH", "Hexa+", "Octo+", "Custom", "HexaX", "HexaH", "OctoV", "OctoCoaxP", "OctoCoaxX", "OctoX", "HexaCoax",
"Tricopter", "GroundVehicleCar", "GroundVehicleDiff", "GroundVehicleMoto"][SystemSettings.AirframeType]
anchors.right: parent.right
color: "white"

View File

@ -16,19 +16,19 @@ Item {
property variant flightmodeColors : ["gray", "green", "green", "green", "green", "green", "green", "red",
"cyan", "cyan", "cyan", "cyan", "cyan", "cyan", "cyan", "cyan", "cyan"]
// Manual,Rate,Attitude,AxisLock,WeakLeveling,VirtualBar,Rattitude,RelayRate,RelayAttitude,
// Manual,Rate,Attitude,AxisLock,WeakLeveling,VirtualBar,Acro+,Rattitude,RelayRate,RelayAttitude,
// AltitudeHold,AltitudeVario,CruiseControl + Auto mode (VTOL/Wing pathfollower)
// grey : 'disabled' modes
property variant thrustmodeColors : ["green", "grey", "grey", "grey", "grey", "grey", "grey", "grey", "grey",
property variant thrustmodeColors : ["green", "grey", "grey", "grey", "grey", "grey", "grey", "grey", "grey", "grey",
"green", "green", "green", "cyan"]
// SystemSettings.AirframeType 3 - 17 : VtolPathFollower, check ThrustControl
// SystemSettings.AirframeType 3 - 18 : VtolPathFollower, check ThrustControl
property var thrust_mode: FlightStatus.FlightMode < 7 ? StabilizationDesired.StabilizationMode_Thrust :
FlightStatus.FlightMode > 7 && SystemSettings.AirframeType > 2 && SystemSettings.AirframeType < 18
&& VtolPathFollowerSettings.ThrustControl == 1 ? 12 :
FlightStatus.FlightMode > 7 && SystemSettings.AirframeType < 3 ? 12: 0
FlightStatus.FlightMode > 7 && SystemSettings.AirframeType > 2 && SystemSettings.AirframeType < 19
&& VtolPathFollowerSettings.ThrustControl == 1 ? 13 :
FlightStatus.FlightMode > 7 && SystemSettings.AirframeType < 3 ? 13: 0
property real flight_time: Math.round(SystemStats.FlightTime / 1000)
@ -224,12 +224,12 @@ Item {
anchors.fill: parent
color: FlightStatus.FlightMode < 1 ? "grey" : warnings.thrustmodeColors[thrust_mode.toString()]
// Manual,Rate,Attitude,AxisLock,WeakLeveling,VirtualBar,Rattitude,RelayRate,RelayAttitude,
// Manual,Rate,Attitude,AxisLock,WeakLeveling,VirtualBar,Acro+,Rattitude,RelayRate,RelayAttitude,
// AltitudeHold,AltitudeVario,CruiseControl
// grey : 'disabled' modes
Text {
anchors.centerIn: parent
text: ["MANUAL"," "," ", " ", " ", " ", " ", " ", " ",
text: ["MANUAL"," "," ", " ", " ", " ", " ", " ", " ", " ",
"ALT HOLD", "ALT VARIO", "CRUISECTRL", "AUTO"][thrust_mode.toString()]
font {
family: "Arial"

View File

@ -2723,7 +2723,7 @@ p, li { white-space: pre-wrap; }
<message>
<location/>
<source>This space shows a description of the selected UAVObject.</source>
<translation type="unfinished"></translation>
<translation>Cet espace affiche une description de l&apos;UAVObject sélectionné.</translation>
</message>
</context>
<context>
@ -2757,7 +2757,7 @@ uniquement lorsque les valeurs changent</translation>
<message>
<location/>
<source>Unknown object color:</source>
<translation type="unfinished"></translation>
<translation>Couleur d&apos;objet inconnu :</translation>
</message>
</context>
<context>
@ -2777,8 +2777,8 @@ uniquement lorsque les valeurs changent</translation>
</message>
<message>
<location line="+17"/>
<source>Radio Setup Wizard</source>
<translation>Assistant Configuration Radio</translation>
<source>Transmitter Setup Wizard</source>
<translation>Assistant Configuration Émetteur</translation>
</message>
</context>
<context>
@ -4236,12 +4236,12 @@ p, li { white-space: pre-wrap; }
<message>
<location/>
<source>Vehicle name</source>
<translation type="unfinished"></translation>
<translation>Nom Véhicule</translation>
</message>
<message>
<location/>
<source>Enter name of vehicle. Max 20 characters.</source>
<translation type="unfinished"></translation>
<translation>Entrez le nom du véhicule : 20 caractères maximum.</translation>
</message>
<message>
<location/>
@ -4258,7 +4258,19 @@ 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"></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;MS Shell Dlg 2&apos;; font-size:8.25pt; font-weight:400; font-style:normal;&quot;&gt;
&lt;table border=&quot;0&quot; style=&quot;-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;&quot;&gt;
&lt;tr&gt;
&lt;td style=&quot;border: none;&quot;&gt;
&lt;p align=&quot;center&quot; 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:14pt; font-weight:600; color:#ff0000;&quot;&gt;LA MISE EN PLACE DE FEED FORWARD EXIGE DE LA PRUDENCE&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;&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;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;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;Attention : L&apos;activation du réglage Feed Forward lancera tous les moteurs à mi-gaz, vous avez é averti !&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;Dans un premier temps retirez vos hélices, puis pour affiner assurez-vous que le châssis est maintenu bien en place. Portez des lunettes et protégez-vous le visage et le corps.&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/body&gt;&lt;/html&gt;</translation>
</message>
</context>
<context>
@ -4728,7 +4740,7 @@ p, li { white-space: pre-wrap; }
<message>
<location/>
<source>Pitch</source>
<translation type="unfinished"></translation>
<translation></translation>
</message>
<message>
<location/>
@ -4744,27 +4756,27 @@ p, li { white-space: pre-wrap; }
<message>
<location/>
<source>RateKi</source>
<translation type="unfinished"></translation>
<translation></translation>
</message>
<message>
<location/>
<source>AttitudeKp</source>
<translation type="unfinished"></translation>
<translation></translation>
</message>
<message>
<location/>
<source>RateKp</source>
<translation type="unfinished"></translation>
<translation></translation>
</message>
<message>
<location/>
<source>AttitudeKi</source>
<translation type="unfinished"></translation>
<translation></translation>
</message>
<message>
<location/>
<source>Roll</source>
<translation type="unfinished"></translation>
<translation></translation>
</message>
<message>
<location/>
@ -7991,11 +8003,6 @@ Useful if you have accidentally changed some settings.</source>
<source>Use Advanced Configuration</source>
<translation>Utiliser Configuration Avancée</translation>
</message>
<message>
<location/>
<source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;How fast the vehicle should climb or descent to compensate a certain altitude difference. higher values could result in more accurate altitude hold but also more violent control actions, lower values are safer and ensure smoother flight. The default value should be fine for the majority of crafts.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
<translation>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Détermine la vitesse à laquelle doit monter ou descendre le véhicule pour compenser une certaine différence d&apos;altitude. Des valeurs plus élevées pourraient entraîner un maintien d&apos;altitude plus précis mais aussi des réactions plus violentes, des valeurs inférieures sont plus sûres et donnent un vol plus doux. La valeur par défaut devrait être bonne pour la plupart des appareils.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</translation>
</message>
<message>
<location/>
<source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;How much the vehicle should throttle up or down to compensate or achieve a certain vertical speed. Higher values lead to more aggressive throttle changes and could lead to oscillations. This is the most likely candidate to change depending on the crafts engine thrust. Heavy craft with weak engines might require higher values.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
@ -8362,6 +8369,11 @@ response (deg)</source>
<source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;This adjusts how much yaw stability your vehicle will have in Rate mode. A good starting point for Integral is double the Proportional value&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
<translation>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Ceci ajuste le niveau de stabilité en lacet de votre véhicule en mode Rate. Un bon point de départ pour l&apos;Intégrale est le double de la valeur Proportionnel&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</translation>
</message>
<message>
<location/>
<source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;How fast the vehicle should climb or descent to compensate a certain altitude difference. Higher values could result in more accurate altitude hold but also more violent control actions, lower values are safer and ensure smoother flight. The default value should be fine for the majority of crafts.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
<translation>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Détermine la vitesse à laquelle doit monter ou descendre le véhicule pour compenser une certaine différence d&apos;altitude. Des valeurs plus élevées pourraient entraîner un maintien d&apos;altitude plus précis mais aussi des réactions plus violentes, des valeurs inférieures sont plus sûres et donnent un vol plus doux. La valeur par défaut devrait être bonne pour la plupart des appareils.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</translation>
</message>
</context>
<context>
<name>TxPIDWidget</name>
@ -9200,7 +9212,7 @@ p, li { white-space: pre-wrap; }
</message>
<message>
<location/>
<location filename="../../../src/plugins/setupwizard/pages/controllerpage.cpp" line="+198"/>
<location filename="../../../src/plugins/setupwizard/pages/controllerpage.cpp" line="+201"/>
<source>Connect</source>
<translation>Connecter</translation>
</message>
@ -10976,7 +10988,7 @@ Double clic sur la légende ou le tracé pour afficher/cacher la légende.</tran
<context>
<name>SetupWizard</name>
<message>
<location filename="../../../src/plugins/setupwizard/setupwizard.cpp" line="+63"/>
<location filename="../../../src/plugins/setupwizard/setupwizard.cpp" line="+64"/>
<source>OpenPilot Setup Wizard</source>
<translation>Assistant Configuration OpenPilot</translation>
</message>
@ -12794,12 +12806,12 @@ Méfiez-vous de ne pas vous verrouiller l&apos;accès !</translation>
<message>
<location/>
<source>Resets</source>
<translation type="unfinished">Réinitialisations</translation>
<translation>Réinitialisations</translation>
</message>
<message>
<location/>
<source>Timeouts</source>
<translation type="unfinished">Temps Dépassé</translation>
<translation>Temps Dépassé</translation>
</message>
<message>
<location/>
@ -13604,7 +13616,7 @@ p, li { white-space: pre-wrap; }
<translation>Activité Projet</translation>
</message>
<message>
<location line="+130"/>
<location line="+131"/>
<source>Commented on </source>
<translation>Commenté sur </translation>
</message>
@ -14006,7 +14018,7 @@ Veuillez vérifier le fichier.
<context>
<name>MonitorWidget</name>
<message>
<location filename="../../../src/plugins/telemetry/monitorwidget.cpp" line="+216"/>
<location filename="../../../src/plugins/telemetry/monitorwidget.cpp" line="+218"/>
<source>Connected</source>
<translation>Connecté</translation>
</message>
@ -14435,7 +14447,7 @@ et même conduire au crash. A utiliser avec prudence.</translation>
<context>
<name>TelemetryPlugin</name>
<message>
<location filename="../../../src/plugins/telemetry/telemetryplugin.cpp" line="+157"/>
<location filename="../../../src/plugins/telemetry/telemetryplugin.cpp" line="+149"/>
<source>Firmware Version Mismatch!</source>
<translation>Incompatibilité des Versions de Firmware !</translation>
</message>
@ -14564,7 +14576,7 @@ et même conduire au crash. A utiliser avec prudence.</translation>
<context>
<name>ConfigRevoWidget</name>
<message>
<location filename="../../../src/plugins/config/configrevowidget.cpp" line="+329"/>
<location filename="../../../src/plugins/config/configrevowidget.cpp" line="+331"/>
<source>Temperature: %1°C</source>
<translation>Température : %1°C</translation>
</message>
@ -14586,23 +14598,6 @@ et même conduire au crash. A utiliser avec prudence.</translation>
<source>WizardPage</source>
<translation>Page d&apos;Assistant</translation>
</message>
<message>
<location/>
<source>&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;MS Shell Dlg 2&apos;; font-size:8pt; font-weight:400; font-style:normal;&quot;&gt;
&lt;p align=&quot;center&quot; 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-size:12pt; font-weight:600;&quot;&gt;Initial Tuning&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-size:12pt; 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;MS Shell Dlg 2,sans-serif&apos;;&quot;&gt;This section of the OpenPilot Wizard allows you to select a set of initial tunning parameters for your airframe. Presented below is a list of common airframe types, select the one that matches your airframe the closest, if unsure select the generic variant.&lt;/span&gt; &lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
<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;MS Shell Dlg 2&apos;; font-size:8pt; font-weight:400; font-style:normal;&quot;&gt;
&lt;p align=&quot;center&quot; 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-size:12pt; font-weight:600;&quot;&gt;Réglages de Départ&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-size:12pt; 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;MS Shell Dlg 2,sans-serif&apos;;&quot;&gt;Cette partie de l&apos;assistant de configuration vous permet de sélectionner des paramètres prédéfinis pour votre appareil. Vous trouverez ci-dessous une liste d&apos;appareils couramment utilisés, sélectionnez-en un qui correspond le mieux à votre appareil ou un modèle générique si vous avez un doute.&lt;/span&gt; &lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</translation>
</message>
<message>
<location/>
<source>Information about the Vehicle in short.</source>
@ -14665,13 +14660,34 @@ p, li { white-space: pre-wrap; }
</message>
<message>
<location line="+3"/>
<source>No vehicle selected!</source>
<translation>Pas de véhicule sélectionné !</translation>
<source>This option will use the current tuning settings saved on the controller, if your controller is currently unconfigured, then the OpenPilot firmware defaults will be used.
It is suggested that if this is a first time configuration of your controller, rather than use this option, instead select a tuning set that matches your own airframe as close as possible from the list above or if you are not able to fine one, then select the generic item from the list.</source>
<translation>Cette option utilise les paramètres de réglage actuels enregistrés dans la carte, si votre contrôleur n&apos;est pas actuellement configuré, alors les paramètres par défaut du firmware OpenPilot seront utilisés.
Il est suggéré que si cela est une première configuration de votre contrôleur, plutôt que d&apos;utiliser cette option, sélectionnez à la place un ensemble de réglages qui correspond le mieux à votre propre appareil dans la liste ci-dessus. Si vous n&apos;êtes pas en mesure d&apos;en choisir un, sélectionnez l&apos;élément générique de la liste.</translation>
</message>
<message>
<location line="+48"/>
<source>None</source>
<translation>Aucun</translation>
<location line="+59"/>
<source>Current Tuning</source>
<translation>Réglages Actuels</translation>
</message>
<message>
<location filename="../../../src/plugins/setupwizard/pages/airframeinitialtuningpage.ui"/>
<source>&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;MS Shell Dlg 2&apos;; font-size:8pt; font-weight:400; font-style:normal;&quot;&gt;
&lt;p align=&quot;center&quot; 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-size:12pt; font-weight:600;&quot;&gt;Initial Tuning&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-size:12pt; 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;MS Shell Dlg 2,sans-serif&apos;;&quot;&gt;This section of the OpenPilot Wizard allows you to select a set of initial tuning parameters for your airframe. Presented below is a list of common airframe types, select the one that matches your airframe the closest, if unsure select the generic variant.&lt;/span&gt; &lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
<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;MS Shell Dlg 2&apos;; font-size:8pt; font-weight:400; font-style:normal;&quot;&gt;
&lt;p align=&quot;center&quot; 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-size:12pt; font-weight:600;&quot;&gt;Réglages de Départ&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-size:12pt; 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;MS Shell Dlg 2,sans-serif&apos;;&quot;&gt;Cette partie de l&apos;assistant de configuration vous permet de sélectionner des paramètres prédéfinis pour votre appareil. Vous trouverez ci-dessous une liste d&apos;appareils couramment utilisés, sélectionnez-en un qui correspond le mieux à votre appareil ou un modèle générique si vous avez un doute.&lt;/span&gt; &lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</translation>
</message>
</context>
<context>
@ -14972,11 +14988,6 @@ p, li { white-space: pre-wrap; }
<source>Cancel</source>
<translation>Annuler</translation>
</message>
<message>
<location/>
<source>Ok</source>
<translation></translation>
</message>
<message>
<location filename="../../../src/plugins/setupwizard/vehicletemplateexportdialog.cpp" line="+87"/>
<source>Fixed Wing - Aileron</source>
@ -15058,23 +15069,25 @@ p, li { white-space: pre-wrap; }
<translation>Non Supporté</translation>
</message>
<message>
<location line="+65"/>
<source>Settings were exported to
%1</source>
<translation>Les paramètres ont é exportés vers
%1</translation>
<location line="+43"/>
<source>Export settings</source>
<translation>Exporter réglages</translation>
</message>
<message>
<location line="+2"/>
<location line="+0"/>
<source>OPTemplates</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+11"/>
<source>Settings could not be exported to
%1.
%1(%2).
Please try again.</source>
<translation>Les paramètres n&apos;ont pas é exportés vers
%1.
Veuillez essayer à nouveau.</translation>
<translation>Les réglages ne peuvent être exportés vers
%1(%2).</translation>
</message>
<message>
<location line="+8"/>
<location line="+9"/>
<source>Import Image</source>
<translation>Importer Image</translation>
</message>
@ -15083,6 +15096,11 @@ Veuillez essayer à nouveau.</translation>
<source>Images (*.png *.jpg)</source>
<translation></translation>
</message>
<message>
<location filename="../../../src/plugins/setupwizard/vehicletemplateexportdialog.ui"/>
<source>Export</source>
<translation>Exporter</translation>
</message>
</context>
<context>
<name>AirSpeedPage</name>
@ -15186,33 +15204,33 @@ Veuillez sélectionner votre type de GPS ci-dessous :</translation>
</message>
<message>
<location line="+1"/>
<source>Select this option to use the OpenPilot Platinum GPS with integrated Magnetometer and Microcontroller connected to the Main Port of your controller.
<source>Select this option to use the OpenPilot Platinum GPS with integrated Magnetometer and Microcontroller.
Note: for the OpenPilot v8 GPS please select the U-Blox option.</source>
<translation>Sélectionnez cette option pour utiliser le GPS OpenPilot Platinum avec Magnétomètre et Microcontrôleur intégré connecté sur le Main Port de votre contrôleur.
<translation>Sélectionnez cette option pour utiliser le GPS OpenPilot Platinum avec Magnétomètre et Microcontrôleur intégré.
A noter : Pour le GPS OpenPilot v8, veuillez choisir l&apos;option GPS U-Blox.</translation>
</message>
<message>
<location line="+6"/>
<source>U-Blox Based</source>
<translation>Basé sur U-Blox</translation>
<location line="+7"/>
<source>Select this option for the OpenPilot V8 GPS or generic U-Blox chipset based GPS.</source>
<translation>Sélectionnez cette option pour utiliser le GPS OpenPilot v8 ou un GPS U-Blox générique.</translation>
</message>
<message>
<location line="+1"/>
<source>Select this option for the OpenPilot V8 GPS or generic U-Blox chipset GPSs connectedto the Main Port of your controller.</source>
<translation>Sélectionnez cette option pour utiliser le GPS OpenPilot v8 ou un GPS U-Blox générique connecté sur le Main Port de votre contrôleur.</translation>
<location line="+5"/>
<source>Select this option for a generic NMEA based GPS.</source>
<translation>Sélectionnez cette option pour utiliser un GPS NMEA générique.</translation>
</message>
<message>
<location line="-6"/>
<source>U-Blox Based</source>
<translation>Basé sur U-Blox</translation>
</message>
<message>
<location line="+5"/>
<source>NMEA Based</source>
<translation>Basé sur NMEA</translation>
</message>
<message>
<location line="+1"/>
<source>Select this option for a generic NMEA based GPS connected to the Main Port of yourcontroller.</source>
<translation>Sélectionnez cette option pour utiliser un GPS NMEA générique connecté sur le Main Port de votre contrôleur.</translation>
</message>
</context>
<context>
<name>EscCalibrationPage</name>
@ -15223,12 +15241,20 @@ A noter : Pour le GPS OpenPilot v8, veuillez choisir l&apos;option GPS U-Blox.</
</message>
<message>
<location/>
<location filename="../../../src/plugins/setupwizard/pages/esccalibrationpage.cpp" line="+113"/>
<location filename="../../../src/plugins/setupwizard/pages/esccalibrationpage.cpp" line="+136"/>
<source>Start</source>
<translation>Démarrer</translation>
</message>
<message>
<location filename="../../../src/plugins/setupwizard/pages/esccalibrationpage.cpp" line="-12"/>
<location filename="../../../src/plugins/setupwizard/pages/esccalibrationpage.cpp" line="-87"/>
<location line="+46"/>
<location line="+26"/>
<location line="+9"/>
<source>%1 µs</source>
<translation></translation>
</message>
<message>
<location line="-18"/>
<source>Stop</source>
<translation>Arrêter</translation>
</message>
@ -15245,7 +15271,7 @@ A noter : Pour le GPS OpenPilot v8, veuillez choisir l&apos;option GPS U-Blox.</
<message>
<location/>
<source>The vehicle is NOT powered by any external power source but USB</source>
<translation>L&apos;appareil N&apos;EST PAS BRANCHE sur une source d&apos;alimentation externe
<translation type="unfinished">L&apos;appareil N&apos;EST PAS BRANCHÉ sur une source d&apos;alimentation externe
mais uniquement sur port USB</translation>
</message>
<message>
@ -15253,6 +15279,26 @@ mais uniquement sur port USB</translation>
<source>I confirm I have read and understood the above instructions in full</source>
<translation>Je confirme avoir lu et compris les instructions ci-dessus en totalité</translation>
</message>
<message>
<location/>
<source>ESC Output Level</source>
<translation>Niveau Sortie ESC</translation>
</message>
<message>
<location/>
<source>Low/Off</source>
<translation>Bas / Arrêté</translation>
</message>
<message>
<location/>
<source>N/A</source>
<translation type="unfinished"></translation>
</message>
<message>
<location/>
<source>High</source>
<translation>Haut</translation>
</message>
</context>
<context>
<name>UAVObjectBrowserWidget</name>
@ -15302,7 +15348,7 @@ mais uniquement sur port USB</translation>
<message>
<location line="-53"/>
<source>Multi</source>
<translation type="unfinished"></translation>
<translation></translation>
</message>
<message>
<location line="+1"/>

View File

@ -25419,7 +25419,7 @@ border-radius: 5;</string>
<item row="1" column="1">
<widget class="QSlider" name="AltKpSlider">
<property name="toolTip">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;How fast the vehicle should climb or descent to compensate a certain altitude difference. higher values could result in more accurate altitude hold but also more violent control actions, lower values are safer and ensure smoother flight. The default value should be fine for the majority of crafts.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;How fast the vehicle should climb or descent to compensate a certain altitude difference. Higher values could result in more accurate altitude hold but also more violent control actions, lower values are safer and ensure smoother flight. The default value should be fine for the majority of crafts.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
<property name="maximum">
<number>100</number>

View File

@ -1,5 +1,6 @@
<RCC>
<qresource prefix="/core">
<file>images/openpilot_logo_500.png</file>
<file>images/openpilot_logo_256.png</file>
<file>images/openpilot_logo_128.png</file>
<file>images/openpilot_logo_64.png</file>

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

View File

@ -28,6 +28,6 @@ OTHER_FILES += pathactioneditor.pluginspec
FORMS += pathactioneditor.ui
RESOURCES += pathactioneditor.qrc
RESOURCES +=

View File

@ -1,3 +0,0 @@
<RCC>
<qresource prefix="/pathactioneditor"/>
</RCC>

View File

@ -101,11 +101,11 @@ void AirframeInitialTuningPage::updatePhoto(QJsonObject *templ)
if (m_photoItem != NULL) {
ui->templateImage->scene()->removeItem(m_photoItem);
}
if (templ != NULL) {
if (templ != NULL && !templ->value("photo").isUndefined()) {
QByteArray imageData = QByteArray::fromBase64(templ->value("photo").toString().toLatin1());
photo.loadFromData(imageData, "PNG");
} else {
photo.load(":/core/images/opie_90x120.gif");
photo.load(":/core/images/openpilot_logo_500.png");
}
m_photoItem = ui->templateImage->scene()->addPixmap(photo);
ui->templateImage->setSceneRect(ui->templateImage->scene()->itemsBoundingRect());
@ -133,7 +133,12 @@ void AirframeInitialTuningPage::updateDescription(QJsonObject *templ)
description.append("<b>").append(tr("Comments: ")).append("</b>").append(templ->value("comment").toString());
ui->templateDescription->setText(description);
} else {
ui->templateDescription->setText(tr("No vehicle selected!"));
ui->templateDescription->setText(tr("This option will use the current tuning settings saved on the controller, if your controller "
"is currently unconfigured, then the OpenPilot firmware defaults will be used.\n\n"
"It is suggested that if this is a first time configuration of your controller, rather than "
"use this option, instead select a tuning set that matches your own airframe as close as "
"possible from the list above or if you are not able to fine one, then select the generic item "
"from the list."));
}
}
@ -165,14 +170,20 @@ void AirframeInitialTuningPage::loadValidFiles()
if (file.open(QFile::ReadOnly)) {
QByteArray jsonData = file.readAll();
QJsonDocument templateDoc = QJsonDocument::fromJson(jsonData);
QJsonObject json = templateDoc.object();
if (json["type"].toInt() == getWizard()->getVehicleType() &&
json["subtype"].toInt() == getWizard()->getVehicleSubType()) {
QString uuid = json["uuid"].toString();
if (!m_templates.contains(uuid)) {
m_templates[json["uuid"].toString()] = new QJsonObject(json);
QJsonParseError error;
QJsonDocument templateDoc = QJsonDocument::fromJson(jsonData, &error);
if (error.error == QJsonParseError::NoError) {
QJsonObject json = templateDoc.object();
if (json["type"].toInt() == getWizard()->getVehicleType() &&
json["subtype"].toInt() == getWizard()->getVehicleSubType()) {
QString uuid = json["uuid"].toString();
if (!m_templates.contains(uuid)) {
m_templates[json["uuid"].toString()] = new QJsonObject(json);
}
}
} else {
qDebug() << "Error parsing json file: "
<< fileName << ". Error was:" << error.errorString();
}
}
file.close();
@ -181,7 +192,7 @@ void AirframeInitialTuningPage::loadValidFiles()
void AirframeInitialTuningPage::setupTemplateList()
{
QListWidgetItem *item = new QListWidgetItem(tr("None"), ui->templateList);
QListWidgetItem *item = new QListWidgetItem(tr("Current Tuning"), ui->templateList);
item->setData(Qt::UserRole + 1, QVariant::fromValue((QJsonObject *)NULL));
foreach(QString templ, m_templates.keys()) {

View File

@ -23,7 +23,7 @@ p, li { white-space: pre-wrap; }
&lt;/style&gt;&lt;/head&gt;&lt;body style=&quot; font-family:'MS Shell Dlg 2'; font-size:8pt; font-weight:400; font-style:normal;&quot;&gt;
&lt;p align=&quot;center&quot; 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-size:12pt; font-weight:600;&quot;&gt;Initial Tuning&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-size:12pt; 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:'MS Shell Dlg 2,sans-serif';&quot;&gt;This section of the OpenPilot Wizard allows you to select a set of initial tunning parameters for your airframe. Presented below is a list of common airframe types, select the one that matches your airframe the closest, if unsure select the generic variant.&lt;/span&gt; &lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
&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:'MS Shell Dlg 2,sans-serif';&quot;&gt;This section of the OpenPilot Wizard allows you to select a set of initial tuning parameters for your airframe. Presented below is a list of common airframe types, select the one that matches your airframe the closest, if unsure select the generic variant.&lt;/span&gt; &lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
<property name="alignment">
<set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop</set>

View File

@ -80,6 +80,9 @@ bool ControllerPage::isComplete() const
bool ControllerPage::validatePage()
{
getWizard()->setControllerType((SetupWizard::CONTROLLER_TYPE)ui->boardTypeCombo->itemData(ui->boardTypeCombo->currentIndex()).toInt());
if (getWizard()->getControllerType() == SetupWizard::CONTROLLER_CC || getWizard()->getControllerType() == SetupWizard::CONTROLLER_CC3D) {
getWizard()->setGpsType(SetupWizard::GPS_DISABLED);
}
return true;
}

View File

@ -35,6 +35,8 @@
#include "vehicleconfigurationhelper.h"
#include "actuatorsettings.h"
#include <QThread>
EscCalibrationPage::EscCalibrationPage(SetupWizard *wizard, QWidget *parent) :
AbstractWizardPage(wizard, parent),
ui(new Ui::EscCalibrationPage), m_isCalibrating(false)
@ -44,9 +46,10 @@ EscCalibrationPage::EscCalibrationPage(SetupWizard *wizard, QWidget *parent) :
ui->outputHigh->setEnabled(false);
ui->outputLow->setEnabled(true);
ui->outputLevel->setEnabled(true);
ui->outputLevel->setText(QString(tr("%1 µs")).arg(LOW_PWM_OUTPUT_PULSE_LENGTH_MICROSECONDS));
ui->outputLevel->setText(QString(tr("%1 µs")).arg(OFF_PWM_OUTPUT_PULSE_LENGTH_MICROSECONDS));
connect(ui->startStopButton, SIGNAL(clicked()), this, SLOT(startStopButtonClicked()));
connect(ui->startButton, SIGNAL(clicked()), this, SLOT(startButtonClicked()));
connect(ui->stopButton, SIGNAL(clicked()), this, SLOT(stopButtonClicked()));
connect(ui->securityCheckBox1, SIGNAL(toggled(bool)), this, SLOT(securityCheckBoxesToggled()));
connect(ui->securityCheckBox2, SIGNAL(toggled(bool)), this, SLOT(securityCheckBoxesToggled()));
@ -82,14 +85,16 @@ void EscCalibrationPage::resetAllSecurityCheckboxes()
ui->securityCheckBox3->setChecked(false);
}
void EscCalibrationPage::startStopButtonClicked()
void EscCalibrationPage::startButtonClicked()
{
if (!m_isCalibrating) {
m_isCalibrating = true;
ui->startStopButton->setEnabled(false);
ui->startButton->setEnabled(false);
enableButtons(false);
ui->outputHigh->setEnabled(true);
ui->outputLow->setEnabled(false);
ui->nonconnectedLabel->setEnabled(false);
ui->connectedLabel->setEnabled(true);
ui->outputLevel->setText(QString(tr("%1 µs")).arg(HIGH_PWM_OUTPUT_PULSE_LENGTH_MICROSECONDS));
ExtensionSystem::PluginManager *pm = ExtensionSystem::PluginManager::instance();
UAVObjectManager *uavoManager = pm->getObject<UAVObjectManager>();
@ -102,34 +107,59 @@ void EscCalibrationPage::startStopButtonClicked()
Q_ASSERT(field);
if (field->getValue().toString() == field->getOptions().at(VehicleConfigurationHelper::MIXER_TYPE_MOTOR)) {
OutputCalibrationUtil *output = new OutputCalibrationUtil();
output->startChannelOutput(i, LOW_PWM_OUTPUT_PULSE_LENGTH_MICROSECONDS);
output->startChannelOutput(i, OFF_PWM_OUTPUT_PULSE_LENGTH_MICROSECONDS);
output->setChannelOutputValue(HIGH_PWM_OUTPUT_PULSE_LENGTH_MICROSECONDS);
m_outputs << output;
}
}
ui->startStopButton->setText(tr("Stop"));
ui->startStopButton->setEnabled(true);
} else {
m_isCalibrating = false;
ui->startStopButton->setEnabled(false);
ui->stopButton->setEnabled(true);
}
}
void EscCalibrationPage::stopButtonClicked()
{
if (m_isCalibrating) {
ui->stopButton->setEnabled(false);
ui->outputHigh->setEnabled(false);
// Set to low pwm out
foreach(OutputCalibrationUtil * output, m_outputs) {
output->setChannelOutputValue(LOW_PWM_OUTPUT_PULSE_LENGTH_MICROSECONDS);
}
ui->outputLevel->setText(QString(tr("%1 µs")).arg(LOW_PWM_OUTPUT_PULSE_LENGTH_MICROSECONDS));
QApplication::processEvents();
QThread::msleep(2000);
// Ramp down to off pwm out
for (int i = LOW_PWM_OUTPUT_PULSE_LENGTH_MICROSECONDS; i >= OFF_PWM_OUTPUT_PULSE_LENGTH_MICROSECONDS; i -= 10) {
foreach(OutputCalibrationUtil * output, m_outputs) {
output->setChannelOutputValue(i);
}
ui->outputLevel->setText(QString(tr("%1 µs")).arg(i));
QApplication::processEvents();
QThread::msleep(200);
}
// Stop output
foreach(OutputCalibrationUtil * output, m_outputs) {
output->stopChannelOutput();
delete output;
}
ui->outputLevel->setText(QString(tr("%1 µs")).arg(OFF_PWM_OUTPUT_PULSE_LENGTH_MICROSECONDS));
ui->outputHigh->setEnabled(false);
ui->outputLow->setEnabled(true);
ui->outputLevel->setText(QString(tr("%1 µs")).arg(LOW_PWM_OUTPUT_PULSE_LENGTH_MICROSECONDS));
ui->nonconnectedLabel->setEnabled(true);
ui->connectedLabel->setEnabled(false);
m_outputs.clear();
m_isCalibrating = false;
resetAllSecurityCheckboxes();
ui->startStopButton->setText(tr("Start"));
enableButtons(true);
}
}
void EscCalibrationPage::securityCheckBoxesToggled()
{
ui->startStopButton->setEnabled(ui->securityCheckBox1->isChecked() &&
ui->startButton->setEnabled(ui->securityCheckBox1->isChecked() &&
ui->securityCheckBox2->isChecked() &&
ui->securityCheckBox3->isChecked());
}

View File

@ -46,13 +46,15 @@ public:
void initializePage();
private slots:
void startStopButtonClicked();
void startButtonClicked();
void stopButtonClicked();
void securityCheckBoxesToggled();
void enableButtons(bool enable);
void resetAllSecurityCheckboxes();
private:
static const int LOW_PWM_OUTPUT_PULSE_LENGTH_MICROSECONDS = 1000;
static const int LOW_PWM_OUTPUT_PULSE_LENGTH_MICROSECONDS = 1050;
static const int OFF_PWM_OUTPUT_PULSE_LENGTH_MICROSECONDS = 900;
static const int HIGH_PWM_OUTPUT_PULSE_LENGTH_MICROSECONDS = 1900;
Ui::EscCalibrationPage *ui;
bool m_isCalibrating;

View File

@ -7,7 +7,7 @@
<x>0</x>
<y>0</y>
<width>600</width>
<height>507</height>
<height>585</height>
</rect>
</property>
<property name="windowTitle">
@ -16,6 +16,12 @@
<layout class="QVBoxLayout" name="verticalLayout">
<item>
<widget class="QLabel" name="label">
<property name="maximumSize">
<size>
<width>16777215</width>
<height>16777215</height>
</size>
</property>
<property name="text">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p align=&quot;center&quot;&gt;&lt;span style=&quot; font-size:12pt; font-weight:600;&quot;&gt;OpenPilot ESC Calibration Procedure&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot; font-size:10pt;&quot;&gt;As you have selected to use a MultiRotor and Fast / Flashed ESCs, we need to calibrate the endpoints of these ESCs so they can see the full throttle range sent from the flight controller. &lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot; font-size:10pt;&quot;&gt;This part of the wizard will tell you to connect the battery to your aircraft, before doing so you absolutely &lt;/span&gt;&lt;span style=&quot; font-size:10pt; font-weight:600; color:#f30f1d;&quot;&gt;must remove the propellers from all motors&lt;/span&gt;&lt;span style=&quot; font-size:10pt;&quot;&gt;. &lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot; font-size:10pt;&quot;&gt;The steps to perform this calibration are as follows:&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot; font-size:10pt;&quot;&gt;1. Confirm all safety questions&lt;br/&gt;2. Press the Start button when it becomes enabled&lt;br/&gt;3. Connect the battery to your airframe&lt;br/&gt;4. Wait for ESC calibration beep(s)&lt;br/&gt;5. Press the Stop button&lt;br/&gt;6. Wait for ESC confirmation beep(s)&lt;br/&gt;7. Disconnect battery&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
@ -65,354 +71,403 @@
</widget>
</item>
<item>
<widget class="QGroupBox" name="groupBox">
<property name="title">
<string>ESC Output Level</string>
<layout class="QHBoxLayout" name="horizontalLayout_3">
<property name="topMargin">
<number>0</number>
</property>
<layout class="QHBoxLayout" name="horizontalLayout_2">
<property name="leftMargin">
<number>9</number>
</property>
<property name="rightMargin">
<number>9</number>
</property>
<property name="bottomMargin">
<number>9</number>
</property>
<item>
<widget class="QPushButton" name="outputLow">
<property name="enabled">
<bool>false</bool>
</property>
<property name="minimumSize">
<size>
<width>100</width>
<height>22</height>
</size>
</property>
<property name="palette">
<palette>
<active>
<colorrole role="WindowText">
<brush brushstyle="SolidPattern">
<color alpha="255">
<red>255</red>
<green>255</green>
<blue>255</blue>
</color>
</brush>
</colorrole>
<colorrole role="Button">
<brush brushstyle="LinearGradientPattern">
<gradient startx="0.507000000000000" starty="0.000000000000000" endx="0.507000000000000" endy="0.772000000000000" type="LinearGradient" spread="ReflectSpread" coordinatemode="ObjectBoundingMode">
<gradientstop position="0.208955000000000">
<color alpha="255">
<red>34</red>
<green>34</green>
<blue>200</blue>
</color>
</gradientstop>
<gradientstop position="0.786070000000000">
<color alpha="255">
<red>6</red>
<green>6</green>
<blue>150</blue>
</color>
</gradientstop>
</gradient>
</brush>
</colorrole>
<colorrole role="Text">
<brush brushstyle="SolidPattern">
<color alpha="255">
<red>255</red>
<green>255</green>
<blue>255</blue>
</color>
</brush>
</colorrole>
<colorrole role="ButtonText">
<brush brushstyle="SolidPattern">
<color alpha="255">
<red>255</red>
<green>255</green>
<blue>255</blue>
</color>
</brush>
</colorrole>
<colorrole role="Base">
<brush brushstyle="LinearGradientPattern">
<gradient startx="0.507000000000000" starty="0.000000000000000" endx="0.507000000000000" endy="0.772000000000000" type="LinearGradient" spread="ReflectSpread" coordinatemode="ObjectBoundingMode">
<gradientstop position="0.208955000000000">
<color alpha="255">
<red>34</red>
<green>34</green>
<blue>200</blue>
</color>
</gradientstop>
<gradientstop position="0.786070000000000">
<color alpha="255">
<red>6</red>
<green>6</green>
<blue>150</blue>
</color>
</gradientstop>
</gradient>
</brush>
</colorrole>
<colorrole role="Window">
<brush brushstyle="LinearGradientPattern">
<gradient startx="0.507000000000000" starty="0.000000000000000" endx="0.507000000000000" endy="0.772000000000000" type="LinearGradient" spread="ReflectSpread" coordinatemode="ObjectBoundingMode">
<gradientstop position="0.208955000000000">
<color alpha="255">
<red>34</red>
<green>34</green>
<blue>200</blue>
</color>
</gradientstop>
<gradientstop position="0.786070000000000">
<color alpha="255">
<red>6</red>
<green>6</green>
<blue>150</blue>
</color>
</gradientstop>
</gradient>
</brush>
</colorrole>
</active>
<inactive>
<colorrole role="WindowText">
<brush brushstyle="SolidPattern">
<color alpha="255">
<red>255</red>
<green>255</green>
<blue>255</blue>
</color>
</brush>
</colorrole>
<colorrole role="Button">
<brush brushstyle="LinearGradientPattern">
<gradient startx="0.507000000000000" starty="0.000000000000000" endx="0.507000000000000" endy="0.772000000000000" type="LinearGradient" spread="ReflectSpread" coordinatemode="ObjectBoundingMode">
<gradientstop position="0.208955000000000">
<color alpha="255">
<red>34</red>
<green>34</green>
<blue>200</blue>
</color>
</gradientstop>
<gradientstop position="0.786070000000000">
<color alpha="255">
<red>6</red>
<green>6</green>
<blue>150</blue>
</color>
</gradientstop>
</gradient>
</brush>
</colorrole>
<colorrole role="Text">
<brush brushstyle="SolidPattern">
<color alpha="255">
<red>255</red>
<green>255</green>
<blue>255</blue>
</color>
</brush>
</colorrole>
<colorrole role="ButtonText">
<brush brushstyle="SolidPattern">
<color alpha="255">
<red>255</red>
<green>255</green>
<blue>255</blue>
</color>
</brush>
</colorrole>
<colorrole role="Base">
<brush brushstyle="LinearGradientPattern">
<gradient startx="0.507000000000000" starty="0.000000000000000" endx="0.507000000000000" endy="0.772000000000000" type="LinearGradient" spread="ReflectSpread" coordinatemode="ObjectBoundingMode">
<gradientstop position="0.208955000000000">
<color alpha="255">
<red>34</red>
<green>34</green>
<blue>200</blue>
</color>
</gradientstop>
<gradientstop position="0.786070000000000">
<color alpha="255">
<red>6</red>
<green>6</green>
<blue>150</blue>
</color>
</gradientstop>
</gradient>
</brush>
</colorrole>
<colorrole role="Window">
<brush brushstyle="LinearGradientPattern">
<gradient startx="0.507000000000000" starty="0.000000000000000" endx="0.507000000000000" endy="0.772000000000000" type="LinearGradient" spread="ReflectSpread" coordinatemode="ObjectBoundingMode">
<gradientstop position="0.208955000000000">
<color alpha="255">
<red>34</red>
<green>34</green>
<blue>200</blue>
</color>
</gradientstop>
<gradientstop position="0.786070000000000">
<color alpha="255">
<red>6</red>
<green>6</green>
<blue>150</blue>
</color>
</gradientstop>
</gradient>
</brush>
</colorrole>
</inactive>
<disabled>
<colorrole role="WindowText">
<brush brushstyle="SolidPattern">
<color alpha="255">
<red>159</red>
<green>158</green>
<blue>158</blue>
</color>
</brush>
</colorrole>
<colorrole role="Button">
<brush brushstyle="SolidPattern">
<color alpha="255">
<red>100</red>
<green>150</green>
<blue>255</blue>
</color>
</brush>
</colorrole>
<colorrole role="Text">
<brush brushstyle="SolidPattern">
<color alpha="255">
<red>159</red>
<green>158</green>
<blue>158</blue>
</color>
</brush>
</colorrole>
<colorrole role="ButtonText">
<brush brushstyle="SolidPattern">
<color alpha="255">
<red>159</red>
<green>158</green>
<blue>158</blue>
</color>
</brush>
</colorrole>
<colorrole role="Base">
<brush brushstyle="SolidPattern">
<color alpha="255">
<red>255</red>
<green>255</green>
<blue>255</blue>
</color>
</brush>
</colorrole>
<colorrole role="Window">
<brush brushstyle="SolidPattern">
<color alpha="255">
<red>242</red>
<green>241</green>
<blue>240</blue>
</color>
</brush>
</colorrole>
</disabled>
</palette>
</property>
<property name="styleSheet">
<string notr="true">QPushButton:enabled {
<item>
<widget class="QLabel" name="nonconnectedLabel">
<property name="minimumSize">
<size>
<width>155</width>
<height>70</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>155</width>
<height>70</height>
</size>
</property>
<property name="text">
<string/>
</property>
<property name="pixmap">
<pixmap resource="../wizardResources.qrc">:/setupwizard/resources/not-connected.png</pixmap>
</property>
<property name="scaledContents">
<bool>true</bool>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="connectedLabel">
<property name="enabled">
<bool>false</bool>
</property>
<property name="minimumSize">
<size>
<width>155</width>
<height>70</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>155</width>
<height>70</height>
</size>
</property>
<property name="text">
<string/>
</property>
<property name="pixmap">
<pixmap resource="../wizardResources.qrc">:/setupwizard/resources/connected.png</pixmap>
</property>
<property name="scaledContents">
<bool>true</bool>
</property>
</widget>
</item>
</layout>
</item>
<item>
<layout class="QHBoxLayout" name="horizontalLayout_4">
<property name="topMargin">
<number>0</number>
</property>
<item>
<widget class="QPushButton" name="outputLow">
<property name="enabled">
<bool>false</bool>
</property>
<property name="minimumSize">
<size>
<width>100</width>
<height>22</height>
</size>
</property>
<property name="palette">
<palette>
<active>
<colorrole role="WindowText">
<brush brushstyle="SolidPattern">
<color alpha="255">
<red>255</red>
<green>255</green>
<blue>255</blue>
</color>
</brush>
</colorrole>
<colorrole role="Button">
<brush brushstyle="LinearGradientPattern">
<gradient startx="0.507000000000000" starty="0.000000000000000" endx="0.507000000000000" endy="0.772000000000000" type="LinearGradient" spread="ReflectSpread" coordinatemode="ObjectBoundingMode">
<gradientstop position="0.208955000000000">
<color alpha="255">
<red>34</red>
<green>34</green>
<blue>200</blue>
</color>
</gradientstop>
<gradientstop position="0.786070000000000">
<color alpha="255">
<red>6</red>
<green>6</green>
<blue>150</blue>
</color>
</gradientstop>
</gradient>
</brush>
</colorrole>
<colorrole role="Text">
<brush brushstyle="SolidPattern">
<color alpha="255">
<red>255</red>
<green>255</green>
<blue>255</blue>
</color>
</brush>
</colorrole>
<colorrole role="ButtonText">
<brush brushstyle="SolidPattern">
<color alpha="255">
<red>255</red>
<green>255</green>
<blue>255</blue>
</color>
</brush>
</colorrole>
<colorrole role="Base">
<brush brushstyle="LinearGradientPattern">
<gradient startx="0.507000000000000" starty="0.000000000000000" endx="0.507000000000000" endy="0.772000000000000" type="LinearGradient" spread="ReflectSpread" coordinatemode="ObjectBoundingMode">
<gradientstop position="0.208955000000000">
<color alpha="255">
<red>34</red>
<green>34</green>
<blue>200</blue>
</color>
</gradientstop>
<gradientstop position="0.786070000000000">
<color alpha="255">
<red>6</red>
<green>6</green>
<blue>150</blue>
</color>
</gradientstop>
</gradient>
</brush>
</colorrole>
<colorrole role="Window">
<brush brushstyle="LinearGradientPattern">
<gradient startx="0.507000000000000" starty="0.000000000000000" endx="0.507000000000000" endy="0.772000000000000" type="LinearGradient" spread="ReflectSpread" coordinatemode="ObjectBoundingMode">
<gradientstop position="0.208955000000000">
<color alpha="255">
<red>34</red>
<green>34</green>
<blue>200</blue>
</color>
</gradientstop>
<gradientstop position="0.786070000000000">
<color alpha="255">
<red>6</red>
<green>6</green>
<blue>150</blue>
</color>
</gradientstop>
</gradient>
</brush>
</colorrole>
</active>
<inactive>
<colorrole role="WindowText">
<brush brushstyle="SolidPattern">
<color alpha="255">
<red>255</red>
<green>255</green>
<blue>255</blue>
</color>
</brush>
</colorrole>
<colorrole role="Button">
<brush brushstyle="LinearGradientPattern">
<gradient startx="0.507000000000000" starty="0.000000000000000" endx="0.507000000000000" endy="0.772000000000000" type="LinearGradient" spread="ReflectSpread" coordinatemode="ObjectBoundingMode">
<gradientstop position="0.208955000000000">
<color alpha="255">
<red>34</red>
<green>34</green>
<blue>200</blue>
</color>
</gradientstop>
<gradientstop position="0.786070000000000">
<color alpha="255">
<red>6</red>
<green>6</green>
<blue>150</blue>
</color>
</gradientstop>
</gradient>
</brush>
</colorrole>
<colorrole role="Text">
<brush brushstyle="SolidPattern">
<color alpha="255">
<red>255</red>
<green>255</green>
<blue>255</blue>
</color>
</brush>
</colorrole>
<colorrole role="ButtonText">
<brush brushstyle="SolidPattern">
<color alpha="255">
<red>255</red>
<green>255</green>
<blue>255</blue>
</color>
</brush>
</colorrole>
<colorrole role="Base">
<brush brushstyle="LinearGradientPattern">
<gradient startx="0.507000000000000" starty="0.000000000000000" endx="0.507000000000000" endy="0.772000000000000" type="LinearGradient" spread="ReflectSpread" coordinatemode="ObjectBoundingMode">
<gradientstop position="0.208955000000000">
<color alpha="255">
<red>34</red>
<green>34</green>
<blue>200</blue>
</color>
</gradientstop>
<gradientstop position="0.786070000000000">
<color alpha="255">
<red>6</red>
<green>6</green>
<blue>150</blue>
</color>
</gradientstop>
</gradient>
</brush>
</colorrole>
<colorrole role="Window">
<brush brushstyle="LinearGradientPattern">
<gradient startx="0.507000000000000" starty="0.000000000000000" endx="0.507000000000000" endy="0.772000000000000" type="LinearGradient" spread="ReflectSpread" coordinatemode="ObjectBoundingMode">
<gradientstop position="0.208955000000000">
<color alpha="255">
<red>34</red>
<green>34</green>
<blue>200</blue>
</color>
</gradientstop>
<gradientstop position="0.786070000000000">
<color alpha="255">
<red>6</red>
<green>6</green>
<blue>150</blue>
</color>
</gradientstop>
</gradient>
</brush>
</colorrole>
</inactive>
<disabled>
<colorrole role="WindowText">
<brush brushstyle="SolidPattern">
<color alpha="255">
<red>159</red>
<green>158</green>
<blue>158</blue>
</color>
</brush>
</colorrole>
<colorrole role="Button">
<brush brushstyle="SolidPattern">
<color alpha="255">
<red>100</red>
<green>150</green>
<blue>255</blue>
</color>
</brush>
</colorrole>
<colorrole role="Text">
<brush brushstyle="SolidPattern">
<color alpha="255">
<red>159</red>
<green>158</green>
<blue>158</blue>
</color>
</brush>
</colorrole>
<colorrole role="ButtonText">
<brush brushstyle="SolidPattern">
<color alpha="255">
<red>159</red>
<green>158</green>
<blue>158</blue>
</color>
</brush>
</colorrole>
<colorrole role="Base">
<brush brushstyle="SolidPattern">
<color alpha="255">
<red>255</red>
<green>255</green>
<blue>255</blue>
</color>
</brush>
</colorrole>
<colorrole role="Window">
<brush brushstyle="SolidPattern">
<color alpha="255">
<red>242</red>
<green>241</green>
<blue>240</blue>
</color>
</brush>
</colorrole>
</disabled>
</palette>
</property>
<property name="styleSheet">
<string notr="true">QPushButton:enabled {
background-color: qlineargradient(spread:reflect, x1:0.507, y1:0, x2:0.507, y2:0.772, stop:0.208955 rgba(34, 34, 200, 255), stop:0.78607 rgba(6, 6, 150, 255));
color: rgb(255, 255, 255);
border-radius: 5;
}</string>
</property>
<property name="text">
<string>Low/Off</string>
</property>
<property name="flat">
<bool>true</bool>
</property>
</widget>
</item>
<item>
<widget class="Line" name="line">
<property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="frameShadow">
<enum>QFrame::Sunken</enum>
</property>
<property name="lineWidth">
<number>1</number>
</property>
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="outputLevel">
<property name="enabled">
<bool>false</bool>
</property>
<property name="text">
<string>N/A</string>
</property>
</widget>
</item>
<item>
<widget class="Line" name="line_2">
<property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="outputHigh">
<property name="enabled">
<bool>false</bool>
</property>
<property name="minimumSize">
<size>
<width>100</width>
<height>22</height>
</size>
</property>
<property name="styleSheet">
<string notr="true">QPushButton:enabled {
</property>
<property name="text">
<string>Low/Off</string>
</property>
<property name="flat">
<bool>true</bool>
</property>
</widget>
</item>
<item>
<widget class="Line" name="line">
<property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="frameShadow">
<enum>QFrame::Sunken</enum>
</property>
<property name="lineWidth">
<number>1</number>
</property>
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="outputLevel">
<property name="enabled">
<bool>false</bool>
</property>
<property name="text">
<string>N/A</string>
</property>
</widget>
</item>
<item>
<widget class="Line" name="line_2">
<property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="outputHigh">
<property name="enabled">
<bool>false</bool>
</property>
<property name="minimumSize">
<size>
<width>100</width>
<height>22</height>
</size>
</property>
<property name="styleSheet">
<string notr="true">QPushButton:enabled {
background-color: qlineargradient(spread:reflect, x1:0.507, y1:0, x2:0.507, y2:0.772, stop:0.208955 rgba(200, 14, 14, 255), stop:0.78607 rgba(160, 6, 6, 255));
color: rgb(255, 255, 255);
border-radius: 5;
}</string>
</property>
<property name="text">
<string>High</string>
</property>
<property name="flat">
<bool>true</bool>
</property>
</widget>
</item>
</layout>
</widget>
</property>
<property name="text">
<string>High</string>
</property>
<property name="flat">
<bool>true</bool>
</property>
</widget>
</item>
</layout>
</item>
<item>
<layout class="QHBoxLayout" name="horizontalLayout">
@ -433,7 +488,7 @@
</spacer>
</item>
<item>
<widget class="QPushButton" name="startStopButton">
<widget class="QPushButton" name="startButton">
<property name="enabled">
<bool>false</bool>
</property>
@ -448,6 +503,22 @@
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="stopButton">
<property name="enabled">
<bool>false</bool>
</property>
<property name="minimumSize">
<size>
<width>0</width>
<height>0</height>
</size>
</property>
<property name="text">
<string>Stop</string>
</property>
</widget>
</item>
<item>
<spacer name="horizontalSpacer_2">
<property name="orientation">
@ -482,8 +553,10 @@
<tabstop>securityCheckBox1</tabstop>
<tabstop>securityCheckBox2</tabstop>
<tabstop>securityCheckBox3</tabstop>
<tabstop>startStopButton</tabstop>
<tabstop>startButton</tabstop>
</tabstops>
<resources/>
<resources>
<include location="../wizardResources.qrc"/>
</resources>
<connections/>
</ui>

View File

@ -65,20 +65,18 @@ void GpsPage::setupSelection(Selection *selection)
selection->addItem(tr("OpenPilot Platinum"),
tr("Select this option to use the OpenPilot Platinum GPS with integrated Magnetometer "
"and Microcontroller connected to the Main Port of your controller.\n\n"
"and Microcontroller.\n\n"
"Note: for the OpenPilot v8 GPS please select the U-Blox option."),
"OPGPS-v9",
SetupWizard::GPS_PLATINUM);
selection->addItem(tr("U-Blox Based"),
tr("Select this option for the OpenPilot V8 GPS or generic U-Blox chipset GPSs connected"
"to the Main Port of your controller."),
tr("Select this option for the OpenPilot V8 GPS or generic U-Blox chipset based GPS."),
"OPGPS-v8-ublox",
SetupWizard::GPS_UBX);
selection->addItem(tr("NMEA Based"),
tr("Select this option for a generic NMEA based GPS connected to the Main Port of your"
"controller."),
tr("Select this option for a generic NMEA based GPS."),
"generic-nmea",
SetupWizard::GPS_NMEA);
}

View File

@ -376,7 +376,7 @@ void OutputCalibrationPage::on_motorNeutralButton_toggled(bool checked)
ui->motorNeutralButton->setText(checked ? tr("Stop") : tr("Start"));
ui->motorNeutralSlider->setEnabled(checked);
quint16 channel = getCurrentChannel();
quint16 safeValue = m_actuatorSettings[channel].channelNeutral;
quint16 safeValue = m_actuatorSettings[channel].channelMin;
onStartButtonToggle(ui->motorNeutralButton, channel, m_actuatorSettings[channel].channelNeutral, safeValue, ui->motorNeutralSlider);
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 32 KiB

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 421 KiB

After

Width:  |  Height:  |  Size: 422 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 33 KiB

View File

@ -56,9 +56,11 @@
SetupWizard::SetupWizard(QWidget *parent) : QWizard(parent), VehicleConfigurationSource(),
m_controllerType(CONTROLLER_UNKNOWN),
m_vehicleType(VEHICLE_UNKNOWN), m_inputType(INPUT_UNKNOWN), m_escType(ESC_UNKNOWN),
m_servoType(SERVO_UNKNOWN), m_vehicleTemplate(NULL),
m_calibrationPerformed(false), m_restartNeeded(false), m_connectionManager(0)
m_vehicleType(VEHICLE_UNKNOWN), m_inputType(INPUT_UNKNOWN),
m_escType(ESC_UNKNOWN), m_servoType(SERVO_UNKNOWN),
m_airspeedType(AIRSPEED_DISABLED), m_gpsType(GPS_DISABLED),
m_vehicleTemplate(NULL), m_calibrationPerformed(false),
m_restartNeeded(false), m_connectionManager(NULL)
{
setWindowTitle(tr("OpenPilot Setup Wizard"));
setOption(QWizard::IndependentPages, false);

View File

@ -172,7 +172,6 @@ QString VehicleTemplateExportDialog::fixFilenameString(QString input, int trunca
.left(truncate);
}
void VehicleTemplateExportDialog::accept()
{
QJsonObject exportObject;
@ -202,33 +201,53 @@ void VehicleTemplateExportDialog::accept()
QUuid uuid = QUuid::createUuid();
exportObject["uuid"] = uuid.toString();
QByteArray bytes;
QBuffer buffer(&bytes);
buffer.open(QIODevice::WriteOnly);
m_image.scaled(IMAGE_SCALE_WIDTH, IMAGE_SCALE_HEIGHT, Qt::KeepAspectRatio,
Qt::SmoothTransformation).save(&buffer, "PNG");
exportObject["photo"] = QString::fromLatin1(bytes.toBase64().data());
if (!m_image.isNull()) {
QByteArray bytes;
QBuffer buffer(&bytes);
buffer.open(QIODevice::WriteOnly);
m_image.scaled(IMAGE_SCALE_WIDTH, IMAGE_SCALE_HEIGHT, Qt::KeepAspectRatio,
Qt::SmoothTransformation).save(&buffer, "PNG");
exportObject["photo"] = QString::fromLatin1(bytes.toBase64().data());
}
QJsonDocument saveDoc(exportObject);
QString fileName = QString("%1/%2/%3-%4-%5.optmpl")
.arg(EXPORT_BASE_NAME)
.arg(getTypeDirectory())
.arg(fixFilenameString(ui->Name->text(), 20))
.arg(fixFilenameString(ui->Type->text(), 30))
.arg(fixFilenameString(uuid.toString().right(12)));
QFile saveFile(fileName);
QDir dir;
dir.mkpath(QFileInfo(saveFile).absoluteDir().absolutePath());
if (saveFile.open(QIODevice::WriteOnly)) {
saveFile.write(saveDoc.toJson());
saveFile.close();
QMessageBox::information(this, "Export", tr("Settings were exported to \n%1").arg(QFileInfo(saveFile).absoluteFilePath()), QMessageBox::Ok);
} else {
QMessageBox::information(this, "Export", tr("Settings could not be exported to \n%1.\nPlease try again.")
.arg(QFileInfo(saveFile).absoluteFilePath()), QMessageBox::Ok);
const char *fileType = ".optmpl";
QString fileName = QString("%1-%2-%3%4")
.arg(fixFilenameString(ui->Name->text(), 20))
.arg(fixFilenameString(ui->Type->text(), 30))
.arg(fixFilenameString(uuid.toString().right(12)))
.arg(fileType);
QString fullPath = QString("%1%2%3%4%5")
.arg(EXPORT_BASE_NAME)
.arg(QDir::separator())
.arg(getTypeDirectory())
.arg(QDir::separator())
.arg(fileName);
QDir dir = QFileInfo(fullPath).absoluteDir();
if (!dir.exists()) {
fullPath = QString("%1%2%3").arg(QDir::homePath(), QDir::separator(), fileName);
}
fullPath = QFileDialog::getSaveFileName(this, tr("Export settings"), fullPath, QString("%1 (*%2)").arg(tr("OPTemplates", fileType)));
if (!fullPath.isEmpty()) {
if (!fullPath.endsWith(fileType)) {
fullPath.append(fileType);
}
QFile saveFile(fullPath);
if (saveFile.open(QIODevice::WriteOnly)) {
saveFile.write(saveDoc.toJson());
saveFile.close();
} else {
QMessageBox::information(this, "Export", tr("Settings could not be exported to \n%1(%2).\nPlease try again.")
.arg(QFileInfo(saveFile).absoluteFilePath(), saveFile.error()), QMessageBox::Ok);
}
QDialog::accept();
}
QDialog::accept();
}
void VehicleTemplateExportDialog::importImage()

View File

@ -66,9 +66,9 @@ private:
VehicleConfigurationSource::VEHICLE_SUB_TYPE m_subType;
QPixmap m_image;
QString fixFilenameString(QString input, int truncate = 100);
QString getTypeDirectory();
QString setupVehicleType();
QString fixFilenameString(QString input, int truncate = 100);
};
#endif // VEHICLETEMPLATEEXPORTDIALOG_H

View File

@ -531,7 +531,7 @@
<bool>false</bool>
</property>
<property name="text">
<string>Ok</string>
<string>Export</string>
</property>
</widget>
</item>

View File

@ -48,5 +48,7 @@
<file>resources/bttn-flash-up.png</file>
<file>resources/bttn-upgrade-down.png</file>
<file>resources/bttn-upgrade-up.png</file>
<file>resources/not-connected.png</file>
<file>resources/connected.png</file>
</qresource>
</RCC>

View File

@ -98,7 +98,7 @@ QGraphicsTextItem *createTextItem(QGraphicsSvgItem *parent, QString elementId, Q
MonitorWidget::MonitorWidget(QWidget *parent) :
QGraphicsView(parent), aspectRatioMode(Qt::KeepAspectRatio)
{
setMinimumSize(180, 25);
setMinimumSize(195, 25);
QGraphicsScene *scene = new QGraphicsScene();
@ -110,6 +110,8 @@ MonitorWidget::MonitorWidget(QWidget *parent) :
setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
setStyleSheet("QGraphicsView{background:transparent;}");
setBackgroundBrush(QBrush(Utils::StyleHelper::baseColor()));
setRenderHints(QPainter::Antialiasing | QPainter::TextAntialiasing);

View File

@ -68,20 +68,12 @@ bool TelemetryPlugin::initialize(const QStringList & args, QString *errMsg)
// TODO not so good... g is probalby leaked...
MonitorWidget *w = mf->createMonitorWidget(NULL);
w->setMaximumWidth(180);
//
// setAlignment(Qt::AlignCenter);
w->setMaximumWidth(195);
// no border
w->setFrameStyle(QFrame::NoFrame);
w->setWindowFlags(Qt::FramelessWindowHint);
// set svg background translucent
w->setStyleSheet("background:transparent;");
// set widget background translucent
w->setAttribute(Qt::WA_TranslucentBackground);
w->setBackgroundBrush(Qt::NoBrush);
// add monitor widget to connection manager

View File

@ -131,8 +131,9 @@ Item {
id: middleRow
anchors.left: parent.left
anchors.leftMargin: 25
property string prefix: ""
Text {
property string prefix: ""
width: container.width - anchors.leftMargin - icon.width - 24 - 8
wrapMode: Text.WrapAtWordBoundaryOrAnywhere
textFormat: Text.RichText
@ -140,37 +141,37 @@ Item {
text: {
switch(action) {
case "commented":
case "comment": parent.prefix = qsTr("Commented on "); break;
case "comment": prefix = qsTr("Commented on "); break;
case "post":
case "created": parent.prefix = qsTr("Created "); break;
case "create-and-start": parent.prefix = qsTr("Created and started "); break;
case "complete": parent.prefix = qsTr("Completed "); break;
case "created": prefix = qsTr("Created "); break;
case "create-and-start": prefix = qsTr("Created and started "); break;
case "complete": prefix = qsTr("Completed "); break;
case "close":
case "closed": parent.prefix = qsTr("Closed "); break;
case "abandon": parent.prefix = qsTr("Abandoned "); break;
case "commit": parent.prefix = qsTr("Committed "); break;
case "resolved": parent.prefix = qsTr("Resolved "); break;
case "start": parent.prefix = qsTr("Started "); break;
case "started": parent.prefix = qsTr("Started working on "); break;
case "stopped": parent.prefix = qsTr("Stopped working on "); break;
case "Code Review": parent.prefix = qsTr("Requested code review on "); break;
case "Testing": parent.prefix = qsTr("Requested testing of "); break;
case "": parent.prefix = qsTr("Updated "); break;
default: parent.prefix = action.substr(0, 1).toUpperCase() + action.substr(1) + " " ; break;
case "closed": prefix = qsTr("Closed "); break;
case "abandon": prefix = qsTr("Abandoned "); break;
case "commit": prefix = qsTr("Committed "); break;
case "resolved": prefix = qsTr("Resolved "); break;
case "start": prefix = qsTr("Started "); break;
case "started": prefix = qsTr("Started working on "); break;
case "stopped": prefix = qsTr("Stopped working on "); break;
case "Code Review": prefix = qsTr("Requested code review on "); break;
case "Testing": prefix = qsTr("Requested testing of "); break;
case "": prefix = qsTr("Updated "); break;
default: prefix = action.substr(0, 1).toUpperCase() + action.substr(1) + " " ; break;
}
parent.prefix = "<font color='#224d81'>" + parent.prefix + "</font>"
prefix = "<font color='#224d81'>" + prefix + "</font>"
if(action == "commented" || action == "comment" || (action == "" && actionSummary == "")) {
if(actionTargetTitle != actionTargetSummary) {
parent.prefix + actionTargetTitle + ": " + actionTargetSummary
prefix + actionTargetTitle + ": " + actionTargetSummary
} else {
parent.prefix + actionTargetTitle
prefix + actionTargetTitle
}
}
else {
if(actionSummary == "") {
parent.prefix + actionTitle
prefix + actionTitle
} else {
parent.prefix + actionTitle + ": " + actionSummary
prefix + actionTitle + ": " + actionSummary
}
}
}

View File

@ -4,6 +4,7 @@ Rectangle {
id: container
width: 1024
height: 768
anchors.horizontalCenter: parent.horizontalCenter
color: "#272727"
@ -115,31 +116,25 @@ Rectangle {
height: 18
anchors.horizontalCenter: parent.horizontalCenter
width: textOpVersion.width + textOpVersionAvailable.width
width: textOpVersion.width + textOpVersionAvailable.width + this.spacing
spacing: 16
Text {
id: textOpVersion
color: "#c4c0c0"
text: welcomePlugin.versionString
verticalAlignment: Text.AlignTop
anchors.left: parent.anchors.left
font.bold: true
styleColor: "#00000000"
horizontalAlignment: Text.AlignHCenter
font.pixelSize: 14
}
Text {
id: textOpVersionAvailable
color: "#5fcf07"
text: welcomePlugin.newVersionText
anchors.rightMargin: 0
font.bold: true
font.underline: true
styleColor: "#00000000"
horizontalAlignment: Text.AlignHCenter
font.pixelSize: 14
anchors.left: textOpVersion.right
MouseArea{
id: mouseAreaOpVersionAvailable
hoverEnabled: true

View File

@ -52,10 +52,14 @@ WelcomePlugin::WelcomePlugin()
WelcomePlugin::~WelcomePlugin()
{
// The below code is commented out to avoid having the application
// crash when it is terminated. TODO: Fix a real solution.
/*
if (m_welcomeMode) {
removeObject(m_welcomeMode);
delete m_welcomeMode;
}
*/
}
/*! Initializes the plugin. Returns true on success.

View File

@ -1,7 +1,7 @@
#
#
# Project: OpenPilot
# NSIS configuration file for OpenPilot GCS
# The OpenPilot Team, http://www.openpilot.org, Copyright (C) 2010-2013.
# The OpenPilot Team, http://www.openpilot.org, Copyright (C) 2010-2014.
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
@ -72,7 +72,7 @@
VIAddVersionKey "Comments" "${INSTALLER_NAME}. ${BUILD_DESCRIPTION}"
VIAddVersionKey "CompanyName" "The OpenPilot Team, http://www.openpilot.org"
VIAddVersionKey "LegalTrademarks" "${PRODUCT_NAME} is a trademark of The OpenPilot Team"
VIAddVersionKey "LegalCopyright" "© 2010-2013 The OpenPilot Team"
VIAddVersionKey "LegalCopyright" "© 2010-2014 The OpenPilot Team"
VIAddVersionKey "FileDescription" "${INSTALLER_NAME}"
;--------------------------------
@ -93,7 +93,7 @@
;--------------------------------
; Branding
BrandingText "© 2010-2013 The OpenPilot Team, http://www.openpilot.org"
BrandingText "© 2010-2014 The OpenPilot Team, http://www.openpilot.org"
!define MUI_ICON "${NSIS_DATA_TREE}\resources\openpilot.ico"
!define MUI_HEADERIMAGE

View File

@ -2,8 +2,8 @@
<object name="MixerSettings" singleinstance="true" settings="true" category="Control">
<description>Settings for the @ref ActuatorModule that controls the channel assignments for the mixer based on AircraftType</description>
<field name="MaxAccel" units="units/sec" type="float" elements="1" defaultvalue="1000"/>
<field name="MixerValueRoll" units="percent" type="int8" elements="1" defaultvalue="100"/>
<field name="MixerValuePitch" units="percent" type="int8" elements="1" defaultvalue="100"/>
<field name="MixerValueRoll" units="percent" type="int8" elements="1" defaultvalue="50"/>
<field name="MixerValuePitch" units="percent" type="int8" elements="1" defaultvalue="50"/>
<field name="MixerValueYaw" units="percent" type="int8" elements="1" defaultvalue="50"/>
<field name="FeedForward" units="" type="float" elements="1" defaultvalue="0"/>
<field name="AccelTime" units="ms" type="float" elements="1" defaultvalue="0"/>

View File

@ -16,7 +16,7 @@
<field name="PitchPI" units="" type="float" elementnames="Kp,Ki,ILimit" defaultvalue="2.5,0,50" limits="%BE:0:10; %BE:0:10; "/>
<field name="YawPI" units="" type="float" elementnames="Kp,Ki,ILimit"/>
<field name="AcroInsanityFactor" units="percent" type="float" elements="1" defaultvalue="0.5" limits="%BE:0.0:1.0"/>
<field name="AcroInsanityFactor" units="percent" type="float" elements="1" defaultvalue="0.4" limits="%BE:0.0:1.0"/>
<field name="EnablePiroComp" units="" type="enum" elements="1" options="FALSE,TRUE" defaultvalue="TRUE"/>

View File

@ -16,7 +16,7 @@
<field name="PitchPI" units="" type="float" elementnames="Kp,Ki,ILimit" defaultvalue="2.5,0,50" limits="%BE:0:10; %BE:0:10; "/>
<field name="YawPI" units="" type="float" elementnames="Kp,Ki,ILimit" defaultvalue="2.5,0,50" limits="%BE:0:10; %BE:0:10; "/>
<field name="AcroInsanityFactor" units="percent" type="float" elements="1" defaultvalue="0.5" limits="%BE:0.0:1.0"/>
<field name="AcroInsanityFactor" units="percent" type="float" elements="1" defaultvalue="0.4" limits="%BE:0.0:1.0"/>
<field name="EnablePiroComp" units="" type="enum" elements="1" options="FALSE,TRUE" defaultvalue="TRUE"/>

View File

@ -16,7 +16,7 @@
<field name="PitchPI" units="" type="float" elementnames="Kp,Ki,ILimit" defaultvalue="2.5,0,50" limits="%BE:0:10; %BE:0:10; "/>
<field name="YawPI" units="" type="float" elementnames="Kp,Ki,ILimit" defaultvalue="2.5,0,50" limits="%BE:0:10; %BE:0:10; "/>
<field name="AcroInsanityFactor" units="percent" type="float" elements="1" defaultvalue="0.5" limits="%BE:0.0:1.0"/>
<field name="AcroInsanityFactor" units="percent" type="float" elements="1" defaultvalue="0.4" limits="%BE:0.0:1.0"/>
<field name="EnablePiroComp" units="" type="enum" elements="1" options="FALSE,TRUE" defaultvalue="TRUE"/>

View File

@ -16,7 +16,7 @@
<field name="PitchPI" units="" type="float" elementnames="Kp,Ki,ILimit" defaultvalue="2.5,0,50" limits="%BE:0:10; %BE:0:10; "/>
<field name="YawPI" units="" type="float" elementnames="Kp,Ki,ILimit" defaultvalue="2.5,0,50" limits="%BE:0:10; %BE:0:10; "/>
<field name="AcroInsanityFactor" units="percent" type="float" elements="1" defaultvalue="0.5" limits="%BE:0.0:1.0"/>
<field name="AcroInsanityFactor" units="percent" type="float" elements="1" defaultvalue="0.4" limits="%BE:0.0:1.0"/>
<field name="EnablePiroComp" units="" type="enum" elements="1" options="FALSE,TRUE" defaultvalue="TRUE"/>