From e891cd2dc36a1dcdafab1ad4d15cefbd659ceaf5 Mon Sep 17 00:00:00 2001 From: Fredrik Arvidsson Date: Wed, 1 Aug 2012 00:21:15 +0200 Subject: [PATCH 001/105] Added some more wizard pages. The basic structure for multirotors is in place. --- .../setupwizard/pages/controllerpage.cpp | 19 +- .../src/plugins/setupwizard/pages/endpage.ui | 37 ++-- .../plugins/setupwizard/pages/flashpage.cpp | 48 +++++ .../src/plugins/setupwizard/pages/flashpage.h | 50 +++++ .../plugins/setupwizard/pages/flashpage.ui | 70 +++++++ .../plugins/setupwizard/pages/inputpage.cpp | 64 +++++++ .../src/plugins/setupwizard/pages/inputpage.h | 50 +++++ .../plugins/setupwizard/pages/inputpage.ui | 177 ++++++++++++++++++ .../setupwizard/pages/levellingpage.cpp | 48 +++++ .../plugins/setupwizard/pages/levellingpage.h | 50 +++++ .../setupwizard/pages/levellingpage.ui | 96 ++++++++++ .../plugins/setupwizard/pages/outputpage.cpp | 55 ++++++ .../plugins/setupwizard/pages/outputpage.h | 50 +++++ .../plugins/setupwizard/pages/outputpage.ui | 123 ++++++++++++ .../plugins/setupwizard/pages/summarypage.cpp | 52 +++++ .../plugins/setupwizard/pages/summarypage.h | 51 +++++ .../plugins/setupwizard/pages/summarypage.ui | 124 ++++++++++++ .../src/plugins/setupwizard/setupwizard.cpp | 114 ++++++++++- .../src/plugins/setupwizard/setupwizard.h | 20 +- .../src/plugins/setupwizard/setupwizard.pro | 26 ++- 20 files changed, 1283 insertions(+), 41 deletions(-) create mode 100644 ground/openpilotgcs/src/plugins/setupwizard/pages/flashpage.cpp create mode 100644 ground/openpilotgcs/src/plugins/setupwizard/pages/flashpage.h create mode 100644 ground/openpilotgcs/src/plugins/setupwizard/pages/flashpage.ui create mode 100644 ground/openpilotgcs/src/plugins/setupwizard/pages/inputpage.cpp create mode 100644 ground/openpilotgcs/src/plugins/setupwizard/pages/inputpage.h create mode 100644 ground/openpilotgcs/src/plugins/setupwizard/pages/inputpage.ui create mode 100644 ground/openpilotgcs/src/plugins/setupwizard/pages/levellingpage.cpp create mode 100644 ground/openpilotgcs/src/plugins/setupwizard/pages/levellingpage.h create mode 100644 ground/openpilotgcs/src/plugins/setupwizard/pages/levellingpage.ui create mode 100644 ground/openpilotgcs/src/plugins/setupwizard/pages/outputpage.cpp create mode 100644 ground/openpilotgcs/src/plugins/setupwizard/pages/outputpage.h create mode 100644 ground/openpilotgcs/src/plugins/setupwizard/pages/outputpage.ui create mode 100644 ground/openpilotgcs/src/plugins/setupwizard/pages/summarypage.cpp create mode 100644 ground/openpilotgcs/src/plugins/setupwizard/pages/summarypage.h create mode 100644 ground/openpilotgcs/src/plugins/setupwizard/pages/summarypage.ui diff --git a/ground/openpilotgcs/src/plugins/setupwizard/pages/controllerpage.cpp b/ground/openpilotgcs/src/plugins/setupwizard/pages/controllerpage.cpp index 7d66957d9..a0bff4c73 100644 --- a/ground/openpilotgcs/src/plugins/setupwizard/pages/controllerpage.cpp +++ b/ground/openpilotgcs/src/plugins/setupwizard/pages/controllerpage.cpp @@ -78,6 +78,7 @@ bool ControllerPage::isComplete() const bool ControllerPage::validatePage() { getWizard()->setControllerType((SetupWizard::CONTROLLER_TYPE)ui->boardTypeCombo->itemData(ui->boardTypeCombo->currentIndex()).toInt()); + getWizard()->setControllerSelectionMode(ui->manualCB->isChecked() ? SetupWizard::CONTROLLER_SELECTION_MANUAL : SetupWizard::CONTROLLER_SELECTION_AUTOMATIC); return true; } @@ -115,13 +116,13 @@ void ControllerPage::setupDeviceList() void ControllerPage::setupBoardTypes() { QVariant v(0); - ui->boardTypeCombo->addItem("", SetupWizard::CONTROLLER_UNKNOWN); - ui->boardTypeCombo->addItem("OpenPilot CopterControl (CC)", SetupWizard::CONTROLLER_CC); - ui->boardTypeCombo->addItem("OpenPilot CopterControl (CC3D)", SetupWizard::CONTROLLER_CC3D); - ui->boardTypeCombo->addItem("OpenPilot Revolution", SetupWizard::CONTROLLER_REVO); - ui->boardTypeCombo->model()->setData(ui->boardTypeCombo->model()->index(ui->boardTypeCombo->count() - 1, 0), v, Qt::UserRole - 1); - ui->boardTypeCombo->addItem("OP PipX Modem", SetupWizard::CONTROLLER_PIPX); - ui->boardTypeCombo->model()->setData(ui->boardTypeCombo->model()->index(ui->boardTypeCombo->count() - 1, 0), v, Qt::UserRole - 1); + ui->boardTypeCombo->addItem(tr(""), SetupWizard::CONTROLLER_UNKNOWN); + ui->boardTypeCombo->addItem(tr("OpenPilot CopterControl"), SetupWizard::CONTROLLER_CC); + ui->boardTypeCombo->addItem(tr("OpenPilot CopterControl 3D"), SetupWizard::CONTROLLER_CC3D); + ui->boardTypeCombo->addItem(tr("OpenPilot Revolution"), SetupWizard::CONTROLLER_REVO); + //ui->boardTypeCombo->model()->setData(ui->boardTypeCombo->model()->index(ui->boardTypeCombo->count() - 1, 0), v, Qt::UserRole - 1); + ui->boardTypeCombo->addItem(tr("OpenPilot PipX Radio Modem"), SetupWizard::CONTROLLER_PIPX); + //ui->boardTypeCombo->model()->setData(ui->boardTypeCombo->model()->index(ui->boardTypeCombo->count() - 1, 0), v, Qt::UserRole - 1); } void ControllerPage::setControllerType(SetupWizard::CONTROLLER_TYPE type) @@ -201,12 +202,12 @@ void ControllerPage::identificationModeChanged() ui->boardTypeCombo->setEnabled(true); ui->connectButton->setEnabled(false); ui->boardTypeCombo->setCurrentIndex(1); - ui->boardTypeCombo->model()->setData(ui->boardTypeCombo->model()->index(0, 0), QVariant(0), Qt::UserRole - 1); + //ui->boardTypeCombo->model()->setData(ui->boardTypeCombo->model()->index(0, 0), QVariant(0), Qt::UserRole - 1); } else { ui->connectButton->setEnabled(ui->deviceCombo->count() > 0); ui->deviceCombo->setEnabled(!m_connectionManager->isConnected()); - ui->boardTypeCombo->model()->setData(ui->boardTypeCombo->model()->index(0, 0), QVariant(1), Qt::UserRole - 1); + //ui->boardTypeCombo->model()->setData(ui->boardTypeCombo->model()->index(0, 0), QVariant(1), Qt::UserRole - 1); ui->boardTypeCombo->setCurrentIndex(0); ui->boardTypeCombo->setEnabled(false); } diff --git a/ground/openpilotgcs/src/plugins/setupwizard/pages/endpage.ui b/ground/openpilotgcs/src/plugins/setupwizard/pages/endpage.ui index f72b2d718..4c52939d1 100644 --- a/ground/openpilotgcs/src/plugins/setupwizard/pages/endpage.ui +++ b/ground/openpilotgcs/src/plugins/setupwizard/pages/endpage.ui @@ -25,7 +25,7 @@ 20 20 550 - 141 + 281 @@ -33,13 +33,15 @@ <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:12pt; font-weight:600;">Setup complete</span></p> -<p style="-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:8pt;"></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt;">The wizard have now gathered enough information to create a baseline configuration for your OpenPilot controller board to use with your vehicle.</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:12pt; font-weight:600;">Congratulations!</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:12pt; font-weight:600;">Setup wizard is completed.</span></p> +<p style="-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;"></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt;">This part of the setup procedure is now complete and you are one step away from having a complete setup of your OpenPilot controller.</span></p> <p style="-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:10pt;"></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt;">You now have two choices:</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt;">- Upload configuration directly to the currently connected OpenPilot controller board.</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt;">- Save the configuration to a file for later uploading using the configuration import plugin in GCS.</span></p></body></html> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt;">To complete the setup please push the Input Wizard button below to close this wizard and go directly to the Input Wizard.</span></p> +<p style="-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:10pt;"></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt;">Or close this wizard and go to the Input tab in the Configuration Plugin and run the wizard to configure the input signals to be used before trying to operate your vehicle. If you already have performed the Input configuration you can skip this step. </span></p> +<p style="-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:10pt;"></p></body></html> Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop @@ -48,30 +50,17 @@ p, li { white-space: pre-wrap; } true - + - 420 - 290 - 125 - 23 - - - - Save configuration... - - - - - - 420 + 430 340 - 125 + 131 23 - Upload configuration + Go to Input Wizard... diff --git a/ground/openpilotgcs/src/plugins/setupwizard/pages/flashpage.cpp b/ground/openpilotgcs/src/plugins/setupwizard/pages/flashpage.cpp new file mode 100644 index 000000000..452adaf02 --- /dev/null +++ b/ground/openpilotgcs/src/plugins/setupwizard/pages/flashpage.cpp @@ -0,0 +1,48 @@ +/** + ****************************************************************************** + * + * @file flashpage.cpp + * @author The OpenPilot Team, http://www.openpilot.org Copyright (C) 2012. + * @addtogroup + * @{ + * @addtogroup FlashPage + * @{ + * @brief + *****************************************************************************/ +/* + * 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 + * the Free Software Foundation; either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "flashpage.h" +#include "ui_flashpage.h" +#include "setupwizard.h" + +FlashPage::FlashPage(SetupWizard *wizard, QWidget *parent) : + AbstractWizardPage(wizard, parent), + + ui(new Ui::FlashPage) +{ + ui->setupUi(this); +} + +FlashPage::~FlashPage() +{ + delete ui; +} + +bool FlashPage::validatePage() +{ + return true; +} diff --git a/ground/openpilotgcs/src/plugins/setupwizard/pages/flashpage.h b/ground/openpilotgcs/src/plugins/setupwizard/pages/flashpage.h new file mode 100644 index 000000000..7aeb7ffc4 --- /dev/null +++ b/ground/openpilotgcs/src/plugins/setupwizard/pages/flashpage.h @@ -0,0 +1,50 @@ +/** + ****************************************************************************** + * + * @file flashpage.h + * @author The OpenPilot Team, http://www.openpilot.org Copyright (C) 2012. + * @addtogroup + * @{ + * @addtogroup FlashPage + * @{ + * @brief + *****************************************************************************/ +/* + * 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 + * the Free Software Foundation; either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef FLASHPAGE_H +#define FLASHPAGE_H + +#include "abstractwizardpage.h" + +namespace Ui { +class FlashPage; +} + +class FlashPage : public AbstractWizardPage +{ + Q_OBJECT + +public: + explicit FlashPage(SetupWizard *wizard, QWidget *parent = 0); + ~FlashPage(); + bool validatePage(); + +private: + Ui::FlashPage *ui; +}; + +#endif // FLASHPAGE_H diff --git a/ground/openpilotgcs/src/plugins/setupwizard/pages/flashpage.ui b/ground/openpilotgcs/src/plugins/setupwizard/pages/flashpage.ui new file mode 100644 index 000000000..fccf257e4 --- /dev/null +++ b/ground/openpilotgcs/src/plugins/setupwizard/pages/flashpage.ui @@ -0,0 +1,70 @@ + + + FlashPage + + + + 0 + 0 + 600 + 400 + + + + WizardPage + + + + + 20 + 20 + 541 + 201 + + + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:12pt; font-weight:600;">OpenPilot configuration ready to save</span></p> +<p style="-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;"></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt;">The wizard is now ready to write the configuration directly to your OpenPilot controller. This is only possible if the controller is connected and identified in the first step of this wizard. If the controller is not connected, or if the controller type was selected manually you can instead of writing the configuration to the controller save it to disk for later use.</span></p> +<p style="-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:10pt;"></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt;">If any of the selections made in this wizard requires a reboot of the controller then that will be performed in this step.</span></p> +<p style="-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:10pt;"></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt;">If you by any reason do not want to write the configuration directly to the controller you can choose to save the configuration to disk and then exit this wizard.</span></p></body></html> + + + Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop + + + true + + + + + + 20 + 240 + 561 + 141 + + + + + 0 + 0 + + + + Write configuration to controller or save + + + Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter + + + + + + diff --git a/ground/openpilotgcs/src/plugins/setupwizard/pages/inputpage.cpp b/ground/openpilotgcs/src/plugins/setupwizard/pages/inputpage.cpp new file mode 100644 index 000000000..706077a57 --- /dev/null +++ b/ground/openpilotgcs/src/plugins/setupwizard/pages/inputpage.cpp @@ -0,0 +1,64 @@ +/** + ****************************************************************************** + * + * @file inputpage.cpp + * @author The OpenPilot Team, http://www.openpilot.org Copyright (C) 2012. + * @addtogroup + * @{ + * @addtogroup InputPage + * @{ + * @brief + *****************************************************************************/ +/* + * 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 + * the Free Software Foundation; either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "inputpage.h" +#include "ui_inputpage.h" +#include "setupwizard.h" + +InputPage::InputPage(SetupWizard *wizard, QWidget *parent) : + AbstractWizardPage(wizard, parent), + + ui(new Ui::InputPage) +{ + ui->setupUi(this); +} + +InputPage::~InputPage() +{ + delete ui; +} + +bool InputPage::validatePage() +{ + if(ui->pwmButton->isChecked()) { + getWizard()->setInputType(SetupWizard::INPUT_PWM); + } + else if(ui->ppmButton->isChecked()) { + getWizard()->setInputType(SetupWizard::INPUT_PPM); + } + else if(ui->sbusButton->isChecked()) { + getWizard()->setInputType(SetupWizard::INPUT_SBUS); + } + else if(ui->spectrumButton->isChecked()) { + getWizard()->setInputType(SetupWizard::INPUT_DSM); + } + else { + getWizard()->setInputType(SetupWizard::INPUT_PWM); + } + + return true; +} diff --git a/ground/openpilotgcs/src/plugins/setupwizard/pages/inputpage.h b/ground/openpilotgcs/src/plugins/setupwizard/pages/inputpage.h new file mode 100644 index 000000000..162146859 --- /dev/null +++ b/ground/openpilotgcs/src/plugins/setupwizard/pages/inputpage.h @@ -0,0 +1,50 @@ +/** + ****************************************************************************** + * + * @file inputpage.h + * @author The OpenPilot Team, http://www.openpilot.org Copyright (C) 2012. + * @addtogroup + * @{ + * @addtogroup InputPage + * @{ + * @brief + *****************************************************************************/ +/* + * 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 + * the Free Software Foundation; either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef INPUTPAGE_H +#define INPUTPAGE_H + +#include "abstractwizardpage.h" + +namespace Ui { +class InputPage; +} + +class InputPage : public AbstractWizardPage +{ + Q_OBJECT + +public: + explicit InputPage(SetupWizard *wizard, QWidget *parent = 0); + ~InputPage(); + bool validatePage(); + +private: + Ui::InputPage *ui; +}; + +#endif // INPUTPAGE_H diff --git a/ground/openpilotgcs/src/plugins/setupwizard/pages/inputpage.ui b/ground/openpilotgcs/src/plugins/setupwizard/pages/inputpage.ui new file mode 100644 index 000000000..0313ea314 --- /dev/null +++ b/ground/openpilotgcs/src/plugins/setupwizard/pages/inputpage.ui @@ -0,0 +1,177 @@ + + + InputPage + + + + 0 + 0 + 600 + 400 + + + + WizardPage + + + + + 20 + 20 + 541 + 171 + + + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:12pt; font-weight:600;">OpenPilot basic input signal configuration</span></p> +<p style="-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;"></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt;">The OpenPilot controller supports many different types of input signals. Please select the type of input that matches your Receiver configuration. If you are unsure leave the default option selected and continue the wizard.</span></p> +<p style="-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:10pt;"></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt;">Some input options require the OpenPilot controller to be rebooted before the changes can take place. If an option that requires a reboot is selected the controller will be rebooted at the end of this wizard after the configuration is written to the controller.</span></p></body></html> + + + Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop + + + true + + + + + + 20 + 200 + 561 + 181 + + + + + 0 + 0 + + + + Supported input signal types + + + Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter + + + + + 50 + 40 + 100 + 100 + + + + Tricopter, Quadcopter, Hexacopter, Octocopter + + + PWM +One cable +per channel + + + true + + + true + + + true + + + false + + + + + + 170 + 40 + 100 + 100 + + + + Airplane, Sloper, Jet + + + PPM +One cable +for all channels + + + true + + + true + + + false + + + + + + 290 + 40 + 100 + 100 + + + + Airplane, Sloper, Jet + + + Futaba +S.Bus + + + true + + + true + + + false + + + + + + 410 + 40 + 100 + 100 + + + + Airplane, Sloper, Jet + + + Spectrum +Satellite + + + true + + + true + + + false + + + + + + + diff --git a/ground/openpilotgcs/src/plugins/setupwizard/pages/levellingpage.cpp b/ground/openpilotgcs/src/plugins/setupwizard/pages/levellingpage.cpp new file mode 100644 index 000000000..0fbf9a385 --- /dev/null +++ b/ground/openpilotgcs/src/plugins/setupwizard/pages/levellingpage.cpp @@ -0,0 +1,48 @@ +/** + ****************************************************************************** + * + * @file levellingpage.cpp + * @author The OpenPilot Team, http://www.openpilot.org Copyright (C) 2012. + * @addtogroup + * @{ + * @addtogroup LevellingPage + * @{ + * @brief + *****************************************************************************/ +/* + * 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 + * the Free Software Foundation; either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "levellingpage.h" +#include "ui_levellingpage.h" +#include "setupwizard.h" + +LevellingPage::LevellingPage(SetupWizard *wizard, QWidget *parent) : + AbstractWizardPage(wizard, parent), + + ui(new Ui::LevellingPage) +{ + ui->setupUi(this); +} + +LevellingPage::~LevellingPage() +{ + delete ui; +} + +bool LevellingPage::validatePage() +{ + return true; +} diff --git a/ground/openpilotgcs/src/plugins/setupwizard/pages/levellingpage.h b/ground/openpilotgcs/src/plugins/setupwizard/pages/levellingpage.h new file mode 100644 index 000000000..4d45729a8 --- /dev/null +++ b/ground/openpilotgcs/src/plugins/setupwizard/pages/levellingpage.h @@ -0,0 +1,50 @@ +/** + ****************************************************************************** + * + * @file levellingpage.h + * @author The OpenPilot Team, http://www.openpilot.org Copyright (C) 2012. + * @addtogroup + * @{ + * @addtogroup LevellingPage + * @{ + * @brief + *****************************************************************************/ +/* + * 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 + * the Free Software Foundation; either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef LEVELLINGPAGE_H +#define LEVELLINGPAGE_H + +#include "abstractwizardpage.h" + +namespace Ui { +class LevellingPage; +} + +class LevellingPage : public AbstractWizardPage +{ + Q_OBJECT + +public: + explicit LevellingPage(SetupWizard *wizard, QWidget *parent = 0); + ~LevellingPage(); + bool validatePage(); + +private: + Ui::LevellingPage *ui; +}; + +#endif // LEVELLINGPAGE_H diff --git a/ground/openpilotgcs/src/plugins/setupwizard/pages/levellingpage.ui b/ground/openpilotgcs/src/plugins/setupwizard/pages/levellingpage.ui new file mode 100644 index 000000000..2fa973dfd --- /dev/null +++ b/ground/openpilotgcs/src/plugins/setupwizard/pages/levellingpage.ui @@ -0,0 +1,96 @@ + + + LevellingPage + + + + 0 + 0 + 600 + 400 + + + + WizardPage + + + + + 20 + 20 + 541 + 201 + + + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:12pt; font-weight:600;">OpenPilot controller levelling procedure</span></p> +<p style="-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;"></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt;">This step can only be performed if you have the OpenPilot controller connected and identified by the first step in this wizard.</span></p> +<p style="-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:10pt;"></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt;">The wizard needs to get information from the controller about in which position the vehicle normally is considered to be level. To be able to successfully perform these measurements you need to place the vehicle on a flat and as level as possible surface. Example of such surfaces could be a table top or the floor. Be careful to assure that the vehicle really is level since this step will affect the accelerometer and gyro bias in the controller software.</span></p> +<p style="-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:10pt;"></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt;">To perform the levelling, please push the Level button and wait for the process to finish.</span></p></body></html> + + + Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop + + + true + + + + + + 20 + 250 + 561 + 131 + + + + + 0 + 0 + + + + Accelerometer and gyro bias measurement + + + Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter + + + + + 20 + 90 + 531 + 23 + + + + 0 + + + + + + 424 + 40 + 91 + 23 + + + + Level... + + + + + + + diff --git a/ground/openpilotgcs/src/plugins/setupwizard/pages/outputpage.cpp b/ground/openpilotgcs/src/plugins/setupwizard/pages/outputpage.cpp new file mode 100644 index 000000000..3e7313c37 --- /dev/null +++ b/ground/openpilotgcs/src/plugins/setupwizard/pages/outputpage.cpp @@ -0,0 +1,55 @@ +/** + ****************************************************************************** + * + * @file outputpage.cpp + * @author The OpenPilot Team, http://www.openpilot.org Copyright (C) 2012. + * @addtogroup + * @{ + * @addtogroup OutputPage + * @{ + * @brief + *****************************************************************************/ +/* + * 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 + * the Free Software Foundation; either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "outputpage.h" +#include "ui_outputpage.h" +#include "setupwizard.h" + +OutputPage::OutputPage(SetupWizard *wizard, QWidget *parent) : + AbstractWizardPage(wizard, parent), + + ui(new Ui::OutputPage) +{ + ui->setupUi(this); +} + +OutputPage::~OutputPage() +{ + delete ui; +} + +bool OutputPage::validatePage() +{ + if(ui->rapidESCButton->isChecked()) { + getWizard()->setESCType(SetupWizard::ESC_RAPID); + } + else { + getWizard()->setESCType(SetupWizard::ESC_DEFAULT); + } + + return true; +} diff --git a/ground/openpilotgcs/src/plugins/setupwizard/pages/outputpage.h b/ground/openpilotgcs/src/plugins/setupwizard/pages/outputpage.h new file mode 100644 index 000000000..3a7130238 --- /dev/null +++ b/ground/openpilotgcs/src/plugins/setupwizard/pages/outputpage.h @@ -0,0 +1,50 @@ +/** + ****************************************************************************** + * + * @file outputpage.h + * @author The OpenPilot Team, http://www.openpilot.org Copyright (C) 2012. + * @addtogroup + * @{ + * @addtogroup OutputPage + * @{ + * @brief + *****************************************************************************/ +/* + * 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 + * the Free Software Foundation; either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef OUTPUTPAGE_H +#define OUTPUTPAGE_H + +#include "abstractwizardpage.h" + +namespace Ui { +class OutputPage; +} + +class OutputPage : public AbstractWizardPage +{ + Q_OBJECT + +public: + explicit OutputPage(SetupWizard *wizard, QWidget *parent = 0); + ~OutputPage(); + bool validatePage(); + +private: + Ui::OutputPage *ui; +}; + +#endif // OUTPUTPAGE_H diff --git a/ground/openpilotgcs/src/plugins/setupwizard/pages/outputpage.ui b/ground/openpilotgcs/src/plugins/setupwizard/pages/outputpage.ui new file mode 100644 index 000000000..37a5a9bb5 --- /dev/null +++ b/ground/openpilotgcs/src/plugins/setupwizard/pages/outputpage.ui @@ -0,0 +1,123 @@ + + + OutputPage + + + + 0 + 0 + 600 + 400 + + + + WizardPage + + + + + 20 + 20 + 541 + 151 + + + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:12pt; font-weight:600;">OpenPilot basic output signal configuration</span></p> +<p style="-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;"></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt;">To set an optimal configuration of the output signals powering your motors used by your OpenPilot controller the wizard needs to know what type of Electronic Speed Controllers (ESC) you will use and what their capabilities are.</span></p> +<p style="-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:10pt;"></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt;">Please select one of the options below. If you are unsure about the capabilities of your ESC:s just leave the default option selected and continue the wizard.</span></p></body></html> + + + Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop + + + true + + + + + + 20 + 200 + 561 + 181 + + + + + 0 + 0 + + + + Supported speed controller types + + + Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter + + + + + 50 + 40 + 100 + 100 + + + + Tricopter, Quadcopter, Hexacopter, Octocopter + + + Default ESC +50 Hz + + + true + + + true + + + true + + + false + + + + + + 170 + 40 + 100 + 100 + + + + Airplane, Sloper, Jet + + + Rapid ESC +400 Hz + + + true + + + true + + + false + + + + + + + diff --git a/ground/openpilotgcs/src/plugins/setupwizard/pages/summarypage.cpp b/ground/openpilotgcs/src/plugins/setupwizard/pages/summarypage.cpp new file mode 100644 index 000000000..046fd6ae2 --- /dev/null +++ b/ground/openpilotgcs/src/plugins/setupwizard/pages/summarypage.cpp @@ -0,0 +1,52 @@ +/** + ****************************************************************************** + * + * @file summarypage.cpp + * @author The OpenPilot Team, http://www.openpilot.org Copyright (C) 2012. + * @addtogroup + * @{ + * @addtogroup SummaryPage + * @{ + * @brief + *****************************************************************************/ +/* + * 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 + * the Free Software Foundation; either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "summarypage.h" +#include "ui_summarypage.h" +#include "setupwizard.h" + +SummaryPage::SummaryPage(SetupWizard *wizard, QWidget *parent) : + AbstractWizardPage(wizard, parent), + ui(new Ui::SummaryPage) +{ + ui->setupUi(this); +} + +SummaryPage::~SummaryPage() +{ + delete ui; +} + +bool SummaryPage::validatePage() +{ + return true; +} + +void SummaryPage::initializePage() +{ + ui->configurationSummary->setText(getWizard()->getSummaryText()); +} diff --git a/ground/openpilotgcs/src/plugins/setupwizard/pages/summarypage.h b/ground/openpilotgcs/src/plugins/setupwizard/pages/summarypage.h new file mode 100644 index 000000000..3f21a39e8 --- /dev/null +++ b/ground/openpilotgcs/src/plugins/setupwizard/pages/summarypage.h @@ -0,0 +1,51 @@ +/** + ****************************************************************************** + * + * @file summarypage.h + * @author The OpenPilot Team, http://www.openpilot.org Copyright (C) 2012. + * @addtogroup + * @{ + * @addtogroup SummaryPage + * @{ + * @brief + *****************************************************************************/ +/* + * 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 + * the Free Software Foundation; either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef SUMMARYPAGE_H +#define SUMMARYPAGE_H + +#include "abstractwizardpage.h" + +namespace Ui { +class SummaryPage; +} + +class SummaryPage : public AbstractWizardPage +{ + Q_OBJECT + +public: + explicit SummaryPage(SetupWizard *wizard, QWidget *parent = 0); + ~SummaryPage(); + bool validatePage(); + void initializePage(); + +private: + Ui::SummaryPage *ui; +}; + +#endif // SUMMARYPAGE_H diff --git a/ground/openpilotgcs/src/plugins/setupwizard/pages/summarypage.ui b/ground/openpilotgcs/src/plugins/setupwizard/pages/summarypage.ui new file mode 100644 index 000000000..4c91ec369 --- /dev/null +++ b/ground/openpilotgcs/src/plugins/setupwizard/pages/summarypage.ui @@ -0,0 +1,124 @@ + + + SummaryPage + + + + 0 + 0 + 600 + 400 + + + + WizardPage + + + + + 20 + 20 + 541 + 211 + + + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:12pt; font-weight:600;">OpenPilot configuration summary</span></p> +<p style="-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;"></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt;">The first part of this wizard is now complete. The information required to create a basic OpenPilot controller configuration has been collected and a configuration can be created and saved.</span></p> +<p style="-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:10pt;"></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt;">Below is a summary of the configuration and a button that links to a schematic picture illustrating how to connect selected hardware and the OpenPilotController with the current configuration.</span></p> +<p style="-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:10pt;"></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt;">To complete the wizard and write the confguration directly to the OpenPilot controller, or if no OpenPilotController is connected save the configuration to disk for later usage, please continue to the next and last step of this wizard.</span></p></body></html> + + + Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop + + + true + + + + + + 20 + 240 + 561 + 140 + + + + + 0 + 0 + + + + Summary of configuration + + + Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter + + + + + 440 + 20 + 100 + 100 + + + + Tricopter, Quadcopter, Hexacopter, Octocopter + + + Hardware +Configuration +Illustration + + + false + + + false + + + true + + + false + + + + + + 20 + 20 + 400 + 100 + + + + + 10 + + + + Qt::ScrollBarAlwaysOn + + + Qt::ScrollBarAlwaysOff + + + Qt::TextSelectableByKeyboard|Qt::TextSelectableByMouse + + + + + + + diff --git a/ground/openpilotgcs/src/plugins/setupwizard/setupwizard.cpp b/ground/openpilotgcs/src/plugins/setupwizard/setupwizard.cpp index f11762bf6..ba56e556e 100644 --- a/ground/openpilotgcs/src/plugins/setupwizard/setupwizard.cpp +++ b/ground/openpilotgcs/src/plugins/setupwizard/setupwizard.cpp @@ -34,13 +34,21 @@ #include "pages/fixedwingpage.h" #include "pages/helipage.h" #include "pages/surfacepage.h" +#include "pages/inputpage.h" +#include "pages/outputpage.h" +#include "pages/levellingpage.h" +#include "pages/summarypage.h" +#include "pages/flashpage.h" #include "pages/notyetimplementedpage.h" SetupWizard::SetupWizard(QWidget *parent) : QWizard(parent) { setWindowTitle("OpenPilot Setup Wizard"); + m_controllerSelectionMode = CONTROLLER_SELECTION_UNKNOWN; m_controllerType = CONTROLLER_UNKNOWN; m_vehicleType = VEHICLE_UNKNOWN; + m_escType = ESC_UNKNOWN; + m_inputType = INPUT_UNKNOWN; createPages(); } @@ -55,6 +63,8 @@ int SetupWizard::nextId() const case CONTROLLER_CC: case CONTROLLER_CC3D: return PAGE_VEHICLES; + case CONTROLLER_REVO: + case CONTROLLER_PIPX: default: return PAGE_NOTYETIMPLEMENTED; } @@ -62,19 +72,35 @@ int SetupWizard::nextId() const case PAGE_VEHICLES: { switch(getVehicleType()) { + case VEHICLE_MULTI: + return PAGE_MULTI; case VEHICLE_FIXEDWING: return PAGE_FIXEDWING; case VEHICLE_HELI: return PAGE_HELI; case VEHICLE_SURFACE: return PAGE_SURFACE; - case VEHICLE_MULTI: - return PAGE_MULTI; default: return PAGE_NOTYETIMPLEMENTED; } } case PAGE_MULTI: + return PAGE_INPUT; + case PAGE_INPUT: + return PAGE_OUTPUT; + case PAGE_OUTPUT: + { + if(getControllerSelectionMode() == CONTROLLER_SELECTION_AUTOMATIC) { + return PAGE_LEVELLING; + } else { + return PAGE_SUMMARY; + } + } + case PAGE_LEVELLING: + return PAGE_SUMMARY; + case PAGE_SUMMARY: + return PAGE_FLASH; + case PAGE_FLASH: return PAGE_END; case PAGE_NOTYETIMPLEMENTED: return PAGE_END; @@ -83,6 +109,85 @@ int SetupWizard::nextId() const } } +QString SetupWizard::getSummaryText() +{ + QString summary = ""; + summary.append(tr("Controller type: ")); + switch(getControllerType()) + { + case CONTROLLER_CC: + summary.append(tr("OpenPilot CopterControl")); + break; + case CONTROLLER_CC3D: + summary.append(tr("OpenPilot CopterControl 3D")); + break; + case CONTROLLER_REVO: + summary.append(tr("OpenPilot Revolution")); + break; + case CONTROLLER_PIPX: + summary.append(tr("OpenPilot PipX Radio Modem")); + break; + default: + summary.append(tr("Unknown")); + break; + } + + summary.append('\n'); + summary.append(tr("Vehicle type: ")); + switch (getVehicleType()) + { + case VEHICLE_MULTI: + summary.append(tr("Multirotor")); + break; + case VEHICLE_FIXEDWING: + summary.append(tr("Fixed wing")); + break; + case VEHICLE_HELI: + summary.append(tr("Helicopter")); + break; + case VEHICLE_SURFACE: + summary.append(tr("Surface vehicle")); + break; + default: + summary.append(tr("Unknown")); + } + + summary.append('\n'); + summary.append(tr("Input type: ")); + switch (getInputType()) + { + case INPUT_PWM: + summary.append(tr("PWM (One cable per channel)")); + break; + case INPUT_PPM: + summary.append(tr("PPM (One cable for all channels)")); + break; + case INPUT_SBUS: + summary.append(tr("Futaba S.Bus")); + break; + case INPUT_DSM: + summary.append(tr("Spectrum satellite")); + break; + default: + summary.append(tr("Unknown")); + } + + summary.append('\n'); + summary.append(tr("ESC type: ")); + switch (getInputType()) + { + case ESC_DEFAULT: + summary.append(tr("Default ESC (50 Hz)")); + break; + case ESC_RAPID: + summary.append(tr("Rapid ESC (400 Hz)")); + break; + default: + summary.append(tr("Unknown")); + } + return summary; +} + void SetupWizard::createPages() { setPage(PAGE_START, new StartPage(this)); @@ -92,6 +197,11 @@ void SetupWizard::createPages() setPage(PAGE_FIXEDWING, new FixedWingPage(this)); setPage(PAGE_HELI, new HeliPage(this)); setPage(PAGE_SURFACE, new SurfacePage(this)); + setPage(PAGE_INPUT, new InputPage(this)); + setPage(PAGE_OUTPUT, new OutputPage(this)); + setPage(PAGE_LEVELLING, new LevellingPage(this)); + setPage(PAGE_SUMMARY, new SummaryPage(this)); + setPage(PAGE_FLASH, new FlashPage(this)); setPage(PAGE_NOTYETIMPLEMENTED, new NotYetImplementedPage(this)); setPage(PAGE_END, new EndPage(this)); diff --git a/ground/openpilotgcs/src/plugins/setupwizard/setupwizard.h b/ground/openpilotgcs/src/plugins/setupwizard/setupwizard.h index 34b20dd81..4eec34156 100644 --- a/ground/openpilotgcs/src/plugins/setupwizard/setupwizard.h +++ b/ground/openpilotgcs/src/plugins/setupwizard/setupwizard.h @@ -37,11 +37,17 @@ class SetupWizard : public QWizard public: SetupWizard(QWidget *parent = 0); int nextId() const; + enum CONTROLLER_SELECTION_MODE {CONTROLLER_SELECTION_AUTOMATIC, CONTROLLER_SELECTION_MANUAL, CONTROLLER_SELECTION_UNKNOWN}; enum CONTROLLER_TYPE {CONTROLLER_UNKNOWN, CONTROLLER_CC, CONTROLLER_CC3D, CONTROLLER_REVO, CONTROLLER_PIPX}; enum VEHICLE_TYPE {VEHICLE_UNKNOWN, VEHICLE_MULTI, VEHICLE_FIXEDWING, VEHICLE_HELI, VEHICLE_SURFACE}; enum MULTI_ROTOR_SUB_TYPE {MULTI_ROTOR_UNKNOWN, MULTI_ROTOR_TRI_Y, MULTI_ROTOR_QUAD_X, MULTI_ROTOR_QUAD_PLUS, MULTI_ROTOR_HEXA, MULTI_ROTOR_HEXA_H, MULTI_ROTOR_HEXA_COAX_Y, MULTI_ROTOR_OCTO, MULTI_ROTOR_OCTO_V, MULTI_ROTOR_OCTO_COAX_X, MULTI_ROTOR_OCTO_COAX_PLUS}; + enum ESC_TYPE {ESC_DEFAULT, ESC_RAPID, ESC_UNKNOWN}; + enum INPUT_TYPE {INPUT_PWM, INPUT_PPM, INPUT_SBUS, INPUT_DSM, INPUT_UNKNOWN}; + + void setControllerSelectionMode(SetupWizard::CONTROLLER_SELECTION_MODE mode) { m_controllerSelectionMode = mode; } + SetupWizard::CONTROLLER_SELECTION_MODE getControllerSelectionMode() const { return m_controllerSelectionMode; } void setControllerType(SetupWizard::CONTROLLER_TYPE type) { m_controllerType = type; } SetupWizard::CONTROLLER_TYPE getControllerType() const { return m_controllerType; } @@ -49,13 +55,25 @@ public: void setVehicleType(SetupWizard::VEHICLE_TYPE type) { m_vehicleType = type; } SetupWizard::VEHICLE_TYPE getVehicleType() const { return m_vehicleType; } + void setInputType(SetupWizard::INPUT_TYPE type) { m_inputType = type; } + SetupWizard::INPUT_TYPE getInputType() const { return m_inputType; } + + void setESCType(SetupWizard::ESC_TYPE type) { m_escType = type; } + SetupWizard::ESC_TYPE getESCType() const { return m_escType; } + + QString getSummaryText(); + private: enum {PAGE_START, PAGE_CONTROLLER, PAGE_VEHICLES, PAGE_MULTI, PAGE_FIXEDWING, - PAGE_HELI, PAGE_SURFACE, PAGE_NOTYETIMPLEMENTED, PAGE_END}; + PAGE_HELI, PAGE_SURFACE, PAGE_INPUT, PAGE_OUTPUT, PAGE_LEVELLING, + PAGE_FLASH, PAGE_SUMMARY, PAGE_NOTYETIMPLEMENTED, PAGE_END}; void createPages(); + CONTROLLER_SELECTION_MODE m_controllerSelectionMode; CONTROLLER_TYPE m_controllerType; VEHICLE_TYPE m_vehicleType; + INPUT_TYPE m_inputType; + ESC_TYPE m_escType; }; #endif // SETUPWIZARD_H diff --git a/ground/openpilotgcs/src/plugins/setupwizard/setupwizard.pro b/ground/openpilotgcs/src/plugins/setupwizard/setupwizard.pro index 98ece1c83..721f76ed6 100644 --- a/ground/openpilotgcs/src/plugins/setupwizard/setupwizard.pro +++ b/ground/openpilotgcs/src/plugins/setupwizard/setupwizard.pro @@ -18,8 +18,14 @@ HEADERS += setupwizardplugin.h \ pages/fixedwingpage.h \ pages/helipage.h \ pages/surfacepage.h \ - pages/abstractwizardpage.h -SOURCES += setupwizardplugin.cpp \ + pages/abstractwizardpage.h \ + pages/outputpage.h \ + pages/inputpage.h \ + pages/summarypage.h \ + pages/flashpage.h \ + pages/levellingpage.h + +SOURCES += setupwizardplugin.cpp \ setupwizard.cpp \ pages/startpage.cpp \ pages/endpage.cpp \ @@ -30,8 +36,13 @@ SOURCES += setupwizardplugin.cpp \ pages/fixedwingpage.cpp \ pages/helipage.cpp \ pages/surfacepage.cpp \ - pages/abstractwizardpage.cpp - + pages/abstractwizardpage.cpp \ + pages/outputpage.cpp \ + pages/inputpage.cpp \ + pages/summarypage.cpp \ + pages/flashpage.cpp \ + pages/levellingpage.cpp + OTHER_FILES += SetupWizard.pluginspec FORMS += \ @@ -43,7 +54,12 @@ FORMS += \ pages/multipage.ui \ pages/fixedwingpage.ui \ pages/helipage.ui \ - pages/surfacepage.ui + pages/surfacepage.ui \ + pages/outputpage.ui \ + pages/inputpage.ui \ + pages/summarypage.ui \ + pages/flashpage.ui \ + pages/levellingpage.ui RESOURCES += \ wizardResources.qrc From 6913b1b4de290e75118af4c5d2ce8dc7b1b465de Mon Sep 17 00:00:00 2001 From: Fredrik Arvidsson Date: Thu, 2 Aug 2012 13:44:14 +0200 Subject: [PATCH 002/105] Added Levelling functionality. --- .../src/plugins/setupwizard/levellingutil.cpp | 179 ++++++++++++++++++ .../src/plugins/setupwizard/levellingutil.h | 95 ++++++++++ .../setupwizard/pages/controllerpage.cpp | 2 +- .../setupwizard/pages/levellingpage.cpp | 78 +++++++- .../plugins/setupwizard/pages/levellingpage.h | 14 ++ .../setupwizard/pages/levellingpage.ui | 12 +- .../src/plugins/setupwizard/setupwizard.cpp | 20 +- .../src/plugins/setupwizard/setupwizard.h | 21 ++ .../src/plugins/setupwizard/setupwizard.pro | 6 +- 9 files changed, 409 insertions(+), 18 deletions(-) create mode 100644 ground/openpilotgcs/src/plugins/setupwizard/levellingutil.cpp create mode 100644 ground/openpilotgcs/src/plugins/setupwizard/levellingutil.h diff --git a/ground/openpilotgcs/src/plugins/setupwizard/levellingutil.cpp b/ground/openpilotgcs/src/plugins/setupwizard/levellingutil.cpp new file mode 100644 index 000000000..0678ad136 --- /dev/null +++ b/ground/openpilotgcs/src/plugins/setupwizard/levellingutil.cpp @@ -0,0 +1,179 @@ +/** + ****************************************************************************** + * + * @file levellingutil.cpp + * @author The OpenPilot Team, http://www.openpilot.org Copyright (C) 2012. + * @addtogroup + * @{ + * @addtogroup LevellingUtil + * @{ + * @brief + *****************************************************************************/ +/* + * 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 + * the Free Software Foundation; either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "levellingutil.h" +#include "extensionsystem/pluginmanager.h" +#include "uavobjectmanager.h" +#include "attitudesettings.h" +#include "accels.h" +#include "gyros.h" + + +LevellingUtil::LevellingUtil(long measurementCount, long measurementPeriod) : QObject(), + m_isMeasuring(false), m_measurementCount(measurementCount), m_measurementPeriod(measurementPeriod) +{ +} + +void LevellingUtil::start() +{ + if(!m_isMeasuring) { + startMeasurement(); + + // Set up timeout timer + connect(&m_timeoutTimer, SIGNAL(timeout()), this, SLOT(timeout())); + m_timeoutTimer.start(m_measurementCount * m_measurementPeriod * 2); + } +} + +void LevellingUtil::abort() +{ + if(m_isMeasuring) { + stopMeasurement(); + } +} + +void LevellingUtil::measurementsUpdated(UAVObject *obj) +{ + QMutexLocker locker(&m_measurementMutex); + + m_receivedUpdates++; + emit progress(m_receivedUpdates, m_measurementCount); + + if(m_receivedUpdates < m_measurementCount) { + ExtensionSystem::PluginManager *pm = ExtensionSystem::PluginManager::instance(); + UAVObjectManager * uavObjectManager = pm->getObject(); + Q_ASSERT(uavObjectManager); + + Accels * accels = Accels::GetInstance(uavObjectManager); + Accels::DataFields accelsData = accels->getData(); + + m_accelerometerX.append(accelsData.x); + m_accelerometerY.append(accelsData.y); + m_accelerometerZ.append(accelsData.z); + + Gyros * gyros = Gyros::GetInstance(uavObjectManager); + Gyros::DataFields gyrosData = gyros->getData(); + + m_gyroX.append(gyrosData.x); + m_gyroY.append(gyrosData.y); + m_gyroZ.append(gyrosData.z); + } + else if (m_receivedUpdates >= m_measurementCount) { + stopMeasurement(); + emit done(calculateLevellingData()); + } +} + +void LevellingUtil::timeout() +{ + QMutexLocker locker(&m_measurementMutex); + + stopMeasurement(); + emit timeout(tr("Calibration timed out before receiving required updates.")); +} + +void LevellingUtil::startMeasurement() +{ + QMutexLocker locker(&m_measurementMutex); + + m_isMeasuring = true; + + // Reset variables + m_receivedUpdates = 0; + m_accelerometerX.clear(); + m_accelerometerY.clear(); + m_accelerometerZ.clear(); + m_gyroX.clear(); + m_gyroY.clear(); + m_gyroZ.clear(); + + ExtensionSystem::PluginManager *pm = ExtensionSystem::PluginManager::instance(); + UAVObjectManager * uavObjectManager = pm->getObject(); + Q_ASSERT(uavObjectManager); + + // Disable gyro bias correction to see raw data + AttitudeSettings::DataFields attitudeSettingsData = AttitudeSettings::GetInstance(uavObjectManager)->getData(); + attitudeSettingsData.BiasCorrectGyro = AttitudeSettings::BIASCORRECTGYRO_FALSE; + AttitudeSettings::GetInstance(uavObjectManager)->setData(attitudeSettingsData); + + // Set up to receive updates + UAVDataObject *uavObject = Accels::GetInstance(uavObjectManager); + connect(uavObject, SIGNAL(objectUpdated(UAVObject*)), this, SLOT(measurementsUpdated(UAVObject*))); + + // Set update period + m_previousMetaData = uavObject->getMetadata(); + UAVObject::Metadata newMetaData = m_previousMetaData; + UAVObject::SetFlightTelemetryUpdateMode(newMetaData, UAVObject::UPDATEMODE_PERIODIC); + newMetaData.flightTelemetryUpdatePeriod = m_measurementPeriod; + uavObject->setMetadata(newMetaData); +} + +void LevellingUtil::stopMeasurement() +{ + m_isMeasuring = false; + + //Stop timeout timer + m_timeoutTimer.stop(); + disconnect(&m_timeoutTimer, SIGNAL(timeout()), this, SLOT(timeout())); + + ExtensionSystem::PluginManager *pm = ExtensionSystem::PluginManager::instance(); + UAVObjectManager * uavObjectManager = pm->getObject(); + Q_ASSERT(uavObjectManager); + + // Stop listening for updates + UAVDataObject *uavObject = Accels::GetInstance(uavObjectManager); + disconnect(uavObject, SIGNAL(objectUpdated(UAVObject*)), this, SLOT(measurementsUpdated(UAVObject*))); + uavObject->setMetadata(m_previousMetaData); + + // Enable gyro bias correction again + AttitudeSettings::DataFields attitudeSettingsData = AttitudeSettings::GetInstance(uavObjectManager)->getData(); + attitudeSettingsData.BiasCorrectGyro = AttitudeSettings::BIASCORRECTGYRO_TRUE; + AttitudeSettings::GetInstance(uavObjectManager)->setData(attitudeSettingsData); +} + +accelGyroBias LevellingUtil::calculateLevellingData() +{ + accelGyroBias bias; + bias.m_accelerometerXBias = listMean(m_accelerometerX) / ACCELERATION_SCALE; + bias.m_accelerometerYBias = listMean(m_accelerometerY) / ACCELERATION_SCALE; + bias.m_accelerometerZBias = (listMean(m_accelerometerZ) + G) / ACCELERATION_SCALE; + + bias.m_gyroXBias = listMean(m_gyroX) * 100.0f; + bias.m_gyroYBias = listMean(m_gyroY) * 100.0f; + bias.m_gyroZBias = listMean(m_gyroZ) * 100.0f; + return bias; +} + +double LevellingUtil::listMean(QList list) +{ + double accum = 0; + for(int i = 0; i < list.size(); i++) { + accum += list.at(i); + } + return accum / list.size(); +} + diff --git a/ground/openpilotgcs/src/plugins/setupwizard/levellingutil.h b/ground/openpilotgcs/src/plugins/setupwizard/levellingutil.h new file mode 100644 index 000000000..0db8a23c0 --- /dev/null +++ b/ground/openpilotgcs/src/plugins/setupwizard/levellingutil.h @@ -0,0 +1,95 @@ +/** + ****************************************************************************** + * + * @file levellingutil.h + * @author The OpenPilot Team, http://www.openpilot.org Copyright (C) 2012. + * @addtogroup + * @{ + * @addtogroup LevellingUtil + * @{ + * @brief + *****************************************************************************/ +/* + * 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 + * the Free Software Foundation; either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef LEVELLINGUTIL_H +#define LEVELLINGUTIL_H + +#include +#include +#include + +#include "uavobject.h" + +struct accelGyroBias { + float m_accelerometerXBias; + float m_accelerometerYBias; + float m_accelerometerZBias; + + float m_gyroXBias; + float m_gyroYBias; + float m_gyroZBias; +}; + +class LevellingUtil : public QObject +{ + Q_OBJECT +public: + explicit LevellingUtil(long measurementCount, long measurementPeriod); + +signals: + void progress(long current, long total); + void done(accelGyroBias measuredBias); + void timeout(QString message); + +public slots: + void start(); + void abort(); + +private slots: + void measurementsUpdated(UAVObject * obj); + void timeout(); + +private: + static const float G = 9.81f; + static const float ACCELERATION_SCALE = 0.004f * 9.81f; + + QMutex m_measurementMutex; + QTimer m_timeoutTimer; + + bool m_isMeasuring; + long m_receivedUpdates; + + long m_measurementCount; + long m_measurementPeriod; + + UAVObject::Metadata m_previousMetaData; + + QList m_accelerometerX; + QList m_accelerometerY; + QList m_accelerometerZ; + QList m_gyroX; + QList m_gyroY; + QList m_gyroZ; + + void stop(); + void startMeasurement(); + void stopMeasurement(); + accelGyroBias calculateLevellingData(); + double listMean(QList list); +}; + +#endif // LEVELLINGUTIL_H diff --git a/ground/openpilotgcs/src/plugins/setupwizard/pages/controllerpage.cpp b/ground/openpilotgcs/src/plugins/setupwizard/pages/controllerpage.cpp index a0bff4c73..54e63ad5d 100644 --- a/ground/openpilotgcs/src/plugins/setupwizard/pages/controllerpage.cpp +++ b/ground/openpilotgcs/src/plugins/setupwizard/pages/controllerpage.cpp @@ -38,7 +38,7 @@ ControllerPage::ControllerPage(SetupWizard *wizard, QWidget *parent) : { ui->setupUi(this); - m_connectionManager = Core::ICore::instance()->connectionManager(); + m_connectionManager = getWizard()->getConnectionManager(); Q_ASSERT(m_connectionManager); connect(m_connectionManager, SIGNAL(availableDevicesChanged(QLinkedList)), this, SLOT(devicesChanged(QLinkedList))); diff --git a/ground/openpilotgcs/src/plugins/setupwizard/pages/levellingpage.cpp b/ground/openpilotgcs/src/plugins/setupwizard/pages/levellingpage.cpp index 0fbf9a385..8128a3717 100644 --- a/ground/openpilotgcs/src/plugins/setupwizard/pages/levellingpage.cpp +++ b/ground/openpilotgcs/src/plugins/setupwizard/pages/levellingpage.cpp @@ -25,20 +25,24 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ +#include #include "levellingpage.h" #include "ui_levellingpage.h" #include "setupwizard.h" LevellingPage::LevellingPage(SetupWizard *wizard, QWidget *parent) : - AbstractWizardPage(wizard, parent), - - ui(new Ui::LevellingPage) + AbstractWizardPage(wizard, parent), + ui(new Ui::LevellingPage), m_levellingUtil(0) { ui->setupUi(this); + connect(ui->levelButton, SIGNAL(clicked()), this, SLOT(performLevelling())); } LevellingPage::~LevellingPage() { + if(m_levellingUtil) { + delete m_levellingUtil; + } delete ui; } @@ -46,3 +50,71 @@ bool LevellingPage::validatePage() { return true; } + +bool LevellingPage::isComplete() +{ + return getWizard()->isLevellingPerformed(); +} + +void LevellingPage::performLevelling() +{ + if(!getWizard()->getConnectionManager()->isConnected()) { + QMessageBox msgBox; + msgBox.setText(tr("An OpenPilot controller must be connected to your computer to perform bias calculations.\nPlease connect your OpenPilot controller to continue.")); + msgBox.setStandardButtons(QMessageBox::Ok); + msgBox.setDefaultButton(QMessageBox::Ok); + msgBox.exec(); + return; + } + + if(!m_levellingUtil) + { + ui->levelButton->setEnabled(false); + + // Measure every 100ms * 100times = 10s + m_levellingUtil = new LevellingUtil(BIAS_CYCLES, BIAS_PERIOD); + connect(m_levellingUtil, SIGNAL(progress(long,long)), this, SLOT(levellingProgress(long,long))); + connect(m_levellingUtil, SIGNAL(done(accelGyroBias)), this, SLOT(levellingDone(accelGyroBias))); + connect(m_levellingUtil, SIGNAL(timeout(QString)), this, SLOT(levellingTimeout(QString))); + } + m_levellingUtil->start(); +} + +void LevellingPage::levellingProgress(long current, long total) +{ + if(!ui->levellinProgressBar->maximum() != (int)total) { + ui->levellinProgressBar->setMaximum((int)total); + } + if(ui->levellinProgressBar->value() != (int)current) { + ui->levellinProgressBar->setValue((int)current); + } +} + +void LevellingPage::levellingDone(accelGyroBias bias) +{ + stopLevelling(); + getWizard()->setLevellingBias(bias); + emit completeChanged(); +} + +void LevellingPage::levellingTimeout(QString message) +{ + stopLevelling(); + + QMessageBox msgBox; + msgBox.setText(message); + msgBox.setStandardButtons(QMessageBox::Ok); + msgBox.setDefaultButton(QMessageBox::Ok); + msgBox.exec(); +} + +void LevellingPage::stopLevelling() +{ + if(m_levellingUtil) + { + disconnect(m_levellingUtil, SIGNAL(progress(long,long)), this, SLOT(levellingProgress(long,long))); + disconnect(m_levellingUtil, SIGNAL(done(accelGyroBias)), this, SLOT(levellingDone(accelGyroBias))); + disconnect(m_levellingUtil, SIGNAL(timeout(QString)), this, SLOT(levellingTimeout(QString))); + ui->levelButton->setEnabled(true); + } +} diff --git a/ground/openpilotgcs/src/plugins/setupwizard/pages/levellingpage.h b/ground/openpilotgcs/src/plugins/setupwizard/pages/levellingpage.h index 4d45729a8..870ae5e6f 100644 --- a/ground/openpilotgcs/src/plugins/setupwizard/pages/levellingpage.h +++ b/ground/openpilotgcs/src/plugins/setupwizard/pages/levellingpage.h @@ -29,6 +29,7 @@ #define LEVELLINGPAGE_H #include "abstractwizardpage.h" +#include "levellingutil.h" namespace Ui { class LevellingPage; @@ -42,9 +43,22 @@ public: explicit LevellingPage(SetupWizard *wizard, QWidget *parent = 0); ~LevellingPage(); bool validatePage(); + bool isComplete(); + +private slots: + void performLevelling(); + void levellingProgress(long current, long total); + void levellingDone(accelGyroBias bias); + void levellingTimeout(QString message); private: + static const int BIAS_CYCLES = 100; + static const int BIAS_PERIOD = 100; + Ui::LevellingPage *ui; + LevellingUtil *m_levellingUtil; + + void stopLevelling(); }; #endif // LEVELLINGPAGE_H diff --git a/ground/openpilotgcs/src/plugins/setupwizard/pages/levellingpage.ui b/ground/openpilotgcs/src/plugins/setupwizard/pages/levellingpage.ui index 2fa973dfd..9cf9ee148 100644 --- a/ground/openpilotgcs/src/plugins/setupwizard/pages/levellingpage.ui +++ b/ground/openpilotgcs/src/plugins/setupwizard/pages/levellingpage.ui @@ -33,7 +33,7 @@ p, li { white-space: pre-wrap; } <p style="-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:10pt;"></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt;">The wizard needs to get information from the controller about in which position the vehicle normally is considered to be level. To be able to successfully perform these measurements you need to place the vehicle on a flat and as level as possible surface. Example of such surfaces could be a table top or the floor. Be careful to assure that the vehicle really is level since this step will affect the accelerometer and gyro bias in the controller software.</span></p> <p style="-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:10pt;"></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt;">To perform the levelling, please push the Level button and wait for the process to finish.</span></p></body></html> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt;">To perform the levelling, please push the Calculate button and wait for the process to finish.</span></p></body></html> Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop @@ -63,7 +63,7 @@ p, li { white-space: pre-wrap; } Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter - + 20 @@ -76,17 +76,17 @@ p, li { white-space: pre-wrap; } 0 - + - 424 + 414 40 - 91 + 101 23 - Level... + Calculate... diff --git a/ground/openpilotgcs/src/plugins/setupwizard/setupwizard.cpp b/ground/openpilotgcs/src/plugins/setupwizard/setupwizard.cpp index ba56e556e..2b32d7a31 100644 --- a/ground/openpilotgcs/src/plugins/setupwizard/setupwizard.cpp +++ b/ground/openpilotgcs/src/plugins/setupwizard/setupwizard.cpp @@ -41,14 +41,12 @@ #include "pages/flashpage.h" #include "pages/notyetimplementedpage.h" -SetupWizard::SetupWizard(QWidget *parent) : QWizard(parent) +SetupWizard::SetupWizard(QWidget *parent) : QWizard(parent), + m_controllerSelectionMode(CONTROLLER_SELECTION_UNKNOWN), m_controllerType(CONTROLLER_UNKNOWN), + m_vehicleType(VEHICLE_UNKNOWN), m_inputType(INPUT_UNKNOWN), m_escType(ESC_UNKNOWN), + m_levellingPerformed(false), m_connectionManager(0) { setWindowTitle("OpenPilot Setup Wizard"); - m_controllerSelectionMode = CONTROLLER_SELECTION_UNKNOWN; - m_controllerType = CONTROLLER_UNKNOWN; - m_vehicleType = VEHICLE_UNKNOWN; - m_escType = ESC_UNKNOWN; - m_inputType = INPUT_UNKNOWN; createPages(); } @@ -185,6 +183,16 @@ QString SetupWizard::getSummaryText() default: summary.append(tr("Unknown")); } + + summary.append('\n'); + summary.append(tr("Accel & Gyro bias calibrated: ")); + if (isLevellingPerformed()) { + summary.append(tr("Yes")); + } + else { + summary.append(tr("No")); + } + return summary; } diff --git a/ground/openpilotgcs/src/plugins/setupwizard/setupwizard.h b/ground/openpilotgcs/src/plugins/setupwizard/setupwizard.h index 4eec34156..b88f5e4c9 100644 --- a/ground/openpilotgcs/src/plugins/setupwizard/setupwizard.h +++ b/ground/openpilotgcs/src/plugins/setupwizard/setupwizard.h @@ -29,6 +29,9 @@ #define SETUPWIZARD_H #include +#include "levellingutil.h" +#include +#include class SetupWizard : public QWizard { @@ -61,8 +64,21 @@ public: void setESCType(SetupWizard::ESC_TYPE type) { m_escType = type; } SetupWizard::ESC_TYPE getESCType() const { return m_escType; } + void setLevellingBias(accelGyroBias bias) { m_levellingBias = bias; m_levellingPerformed = true; } + bool isLevellingPerformed() { return m_levellingPerformed; } + accelGyroBias getLevellingBias() const { return m_levellingBias; } + + QString getSummaryText(); + Core::ConnectionManager* getConnectionManager() { + if (!m_connectionManager) { + m_connectionManager = Core::ICore::instance()->connectionManager(); + Q_ASSERT(m_connectionManager); + } + return m_connectionManager; + } + private: enum {PAGE_START, PAGE_CONTROLLER, PAGE_VEHICLES, PAGE_MULTI, PAGE_FIXEDWING, PAGE_HELI, PAGE_SURFACE, PAGE_INPUT, PAGE_OUTPUT, PAGE_LEVELLING, @@ -74,6 +90,11 @@ private: VEHICLE_TYPE m_vehicleType; INPUT_TYPE m_inputType; ESC_TYPE m_escType; + bool m_levellingPerformed; + accelGyroBias m_levellingBias; + + Core::ConnectionManager *m_connectionManager; + }; #endif // SETUPWIZARD_H diff --git a/ground/openpilotgcs/src/plugins/setupwizard/setupwizard.pro b/ground/openpilotgcs/src/plugins/setupwizard/setupwizard.pro index 721f76ed6..ff858f29d 100644 --- a/ground/openpilotgcs/src/plugins/setupwizard/setupwizard.pro +++ b/ground/openpilotgcs/src/plugins/setupwizard/setupwizard.pro @@ -23,7 +23,8 @@ HEADERS += setupwizardplugin.h \ pages/inputpage.h \ pages/summarypage.h \ pages/flashpage.h \ - pages/levellingpage.h + pages/levellingpage.h \ + levellingutil.h SOURCES += setupwizardplugin.cpp \ setupwizard.cpp \ @@ -41,7 +42,8 @@ SOURCES += setupwizardplugin.cpp \ pages/inputpage.cpp \ pages/summarypage.cpp \ pages/flashpage.cpp \ - pages/levellingpage.cpp + pages/levellingpage.cpp \ + levellingutil.cpp OTHER_FILES += SetupWizard.pluginspec From 86f210e7f49a75a76af20efcf8d85a196cabacde Mon Sep 17 00:00:00 2001 From: Fredrik Arvidsson Date: Fri, 3 Aug 2012 18:31:47 +0200 Subject: [PATCH 003/105] OP-39 Added code to jump from the SetupWizard directly to the InputWizard in the ConfigurationPlugin to complete the vehicle setup and realize the 1-2-Fly idea. Re-factored some code in the ConfigurationPlugin. Fixed a bug in the Levelling page when performing levelling multiple times. --- .../src/libs/utils/mytabbedstackwidget.h | 1 + .../src/plugins/config/configgadgetfactory.cpp | 11 ++++++++--- .../src/plugins/config/configgadgetfactory.h | 9 ++++++++- .../src/plugins/config/configgadgetwidget.cpp | 8 ++++++++ .../src/plugins/config/configgadgetwidget.h | 1 + .../src/plugins/config/configinputwidget.cpp | 1 + .../src/plugins/config/configinputwidget.h | 6 +++--- .../src/plugins/config/configplugin.cpp | 2 +- .../src/plugins/setupwizard/pages/endpage.cpp | 18 +++++++++++++++++- .../src/plugins/setupwizard/pages/endpage.h | 3 +++ .../setupwizard/pages/levellingpage.cpp | 18 ++++++++++-------- .../plugins/setupwizard/pages/levellingpage.h | 2 +- .../src/plugins/setupwizard/setupwizard.cpp | 2 +- .../src/plugins/setupwizard/setupwizard.pro | 3 ++- 14 files changed, 65 insertions(+), 20 deletions(-) diff --git a/ground/openpilotgcs/src/libs/utils/mytabbedstackwidget.h b/ground/openpilotgcs/src/libs/utils/mytabbedstackwidget.h index f32524ce5..5faad8222 100644 --- a/ground/openpilotgcs/src/libs/utils/mytabbedstackwidget.h +++ b/ground/openpilotgcs/src/libs/utils/mytabbedstackwidget.h @@ -52,6 +52,7 @@ public: void insertCornerWidget(int index, QWidget *widget); int cornerWidgetCount() { return m_cornerWidgetCount; } QWidget * currentWidget(){return m_stackWidget->currentWidget();} + QWidget * getWidget(int index) {return m_stackWidget->widget(index);} signals: void currentAboutToShow(int index,bool * proceed); diff --git a/ground/openpilotgcs/src/plugins/config/configgadgetfactory.cpp b/ground/openpilotgcs/src/plugins/config/configgadgetfactory.cpp index 37447b01a..b468adf02 100644 --- a/ground/openpilotgcs/src/plugins/config/configgadgetfactory.cpp +++ b/ground/openpilotgcs/src/plugins/config/configgadgetfactory.cpp @@ -25,14 +25,14 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #include "configgadgetfactory.h" -#include "configgadgetwidget.h" #include "configgadget.h" #include "configgadgetconfiguration.h" #include "configgadgetoptionspage.h" #include ConfigGadgetFactory::ConfigGadgetFactory(QObject *parent) : - IUAVGadgetFactory(QString("ConfigGadget"), tr("Config Gadget"), parent) + IUAVGadgetFactory(QString("ConfigGadget"), tr("Config Gadget"), parent), + gadgetWidget(0) { } @@ -42,7 +42,7 @@ ConfigGadgetFactory::~ConfigGadgetFactory() Core::IUAVGadget* ConfigGadgetFactory::createGadget(QWidget *parent) { - ConfigGadgetWidget* gadgetWidget = new ConfigGadgetWidget(parent); + gadgetWidget = new ConfigGadgetWidget(parent); return new ConfigGadget(QString("ConfigGadget"), gadgetWidget, parent); } @@ -55,3 +55,8 @@ IOptionsPage *ConfigGadgetFactory::createOptionsPage(IUAVGadgetConfiguration *co { return new ConfigGadgetOptionsPage(qobject_cast(config)); } + +void ConfigGadgetFactory::startInputWizard() +{ + gadgetWidget->startInputWizard(); +} diff --git a/ground/openpilotgcs/src/plugins/config/configgadgetfactory.h b/ground/openpilotgcs/src/plugins/config/configgadgetfactory.h index 8d371e746..77963a842 100644 --- a/ground/openpilotgcs/src/plugins/config/configgadgetfactory.h +++ b/ground/openpilotgcs/src/plugins/config/configgadgetfactory.h @@ -28,6 +28,9 @@ #define CONFIGGADGETFACTORY_H #include +#include "configgadgetwidget.h" +#include "config_global.h" + namespace Core { class IUAVGadget; @@ -36,7 +39,7 @@ class IUAVGadgetFactory; using namespace Core; -class ConfigGadgetFactory: public Core::IUAVGadgetFactory +class CONFIG_EXPORT ConfigGadgetFactory: public Core::IUAVGadgetFactory { Q_OBJECT public: @@ -47,6 +50,10 @@ public: IUAVGadget *createGadget(QWidget *parent); IUAVGadgetConfiguration *createConfiguration(QSettings* qSettings); IOptionsPage *createOptionsPage(IUAVGadgetConfiguration *config); + void startInputWizard(); + +private: + ConfigGadgetWidget* gadgetWidget; }; #endif // CONFIGGADGETFACTORY_H diff --git a/ground/openpilotgcs/src/plugins/config/configgadgetwidget.cpp b/ground/openpilotgcs/src/plugins/config/configgadgetwidget.cpp index c12dbaee8..df49eb5db 100644 --- a/ground/openpilotgcs/src/plugins/config/configgadgetwidget.cpp +++ b/ground/openpilotgcs/src/plugins/config/configgadgetwidget.cpp @@ -127,6 +127,14 @@ ConfigGadgetWidget::~ConfigGadgetWidget() // TODO: properly delete all the tabs in ftw before exiting } +void ConfigGadgetWidget::startInputWizard() +{ + ftw->setCurrentIndex(ConfigGadgetWidget::input); + ConfigInputWidget* inputWidget = dynamic_cast(ftw->getWidget(ConfigGadgetWidget::input)); + Q_ASSERT(inputWidget); + inputWidget->startInputWizard(); +} + void ConfigGadgetWidget::resizeEvent(QResizeEvent *event) { diff --git a/ground/openpilotgcs/src/plugins/config/configgadgetwidget.h b/ground/openpilotgcs/src/plugins/config/configgadgetwidget.h index 5e9dc6e67..0b2331329 100644 --- a/ground/openpilotgcs/src/plugins/config/configgadgetwidget.h +++ b/ground/openpilotgcs/src/plugins/config/configgadgetwidget.h @@ -51,6 +51,7 @@ public: ConfigGadgetWidget(QWidget *parent = 0); ~ConfigGadgetWidget(); enum widgetTabs {hardware=0, aircraft, input, output, sensors, stabilization, camerastabilization, txpid, pipxtreme}; + void startInputWizard(); public slots: void onAutopilotConnect(); diff --git a/ground/openpilotgcs/src/plugins/config/configinputwidget.cpp b/ground/openpilotgcs/src/plugins/config/configinputwidget.cpp index 7952b3d70..27d830b01 100644 --- a/ground/openpilotgcs/src/plugins/config/configinputwidget.cpp +++ b/ground/openpilotgcs/src/plugins/config/configinputwidget.cpp @@ -280,6 +280,7 @@ void ConfigInputWidget::openHelp() QDesktopServices::openUrl( QUrl("http://wiki.openpilot.org/display/Doc/Input+Configuration", QUrl::StrictMode) ); } + void ConfigInputWidget::goToWizard() { QMessageBox msgBox; diff --git a/ground/openpilotgcs/src/plugins/config/configinputwidget.h b/ground/openpilotgcs/src/plugins/config/configinputwidget.h index 418fbdfee..25f029e63 100644 --- a/ground/openpilotgcs/src/plugins/config/configinputwidget.h +++ b/ground/openpilotgcs/src/plugins/config/configinputwidget.h @@ -57,7 +57,7 @@ public: enum txMovements{moveLeftVerticalStick,moveRightVerticalStick,moveLeftHorizontalStick,moveRightHorizontalStick,moveAccess0,moveAccess1,moveAccess2,moveFlightMode,centerAll,moveAll,nothing}; enum txMovementType{vertical,horizontal,jump,mix}; enum txType {acro, heli}; -public slots: + void startInputWizard() { goToWizard(); } private: bool growing; @@ -133,6 +133,7 @@ private: void wizardSetUpStep(enum wizardSteps); void wizardTearDownStep(enum wizardSteps); + private slots: void wzNext(); void wzBack(); @@ -150,11 +151,10 @@ private slots: void invertControls(); void simpleCalibration(bool state); void updateCalibration(); + protected: void resizeEvent(QResizeEvent *event); virtual void enableControls(bool enable); - - }; #endif diff --git a/ground/openpilotgcs/src/plugins/config/configplugin.cpp b/ground/openpilotgcs/src/plugins/config/configplugin.cpp index 30418094c..fd3a30544 100644 --- a/ground/openpilotgcs/src/plugins/config/configplugin.cpp +++ b/ground/openpilotgcs/src/plugins/config/configplugin.cpp @@ -99,7 +99,7 @@ void ConfigPlugin::extensionsInitialized() void ConfigPlugin::shutdown() { - // Do nothing + // Do nothing } /** diff --git a/ground/openpilotgcs/src/plugins/setupwizard/pages/endpage.cpp b/ground/openpilotgcs/src/plugins/setupwizard/pages/endpage.cpp index dda55196e..2df3f9e79 100644 --- a/ground/openpilotgcs/src/plugins/setupwizard/pages/endpage.cpp +++ b/ground/openpilotgcs/src/plugins/setupwizard/pages/endpage.cpp @@ -26,16 +26,32 @@ */ #include "endpage.h" #include "ui_endpage.h" +#include +#include +#include EndPage::EndPage(SetupWizard *wizard, QWidget *parent) : AbstractWizardPage(wizard, parent), ui(new Ui::EndPage) { - setFinalPage(true); ui->setupUi(this); + setFinalPage(true); + connect(ui->inputWizardButton, SIGNAL(clicked()), this, SLOT(openInputWizard())); } EndPage::~EndPage() { delete ui; } + +void EndPage::openInputWizard() +{ + Core::ModeManager::instance()->activateModeByWorkspaceName("Configuration"); + + getWizard()->close(); + + ExtensionSystem::PluginManager *pm = ExtensionSystem::PluginManager::instance(); + ConfigGadgetFactory* configGadgetFactory = pm->getObject(); + Q_ASSERT(configGadgetFactory); + configGadgetFactory->startInputWizard(); +} diff --git a/ground/openpilotgcs/src/plugins/setupwizard/pages/endpage.h b/ground/openpilotgcs/src/plugins/setupwizard/pages/endpage.h index afbeb6177..dfbad7942 100644 --- a/ground/openpilotgcs/src/plugins/setupwizard/pages/endpage.h +++ b/ground/openpilotgcs/src/plugins/setupwizard/pages/endpage.h @@ -42,6 +42,9 @@ public: explicit EndPage(SetupWizard *wizard, QWidget *parent = 0); ~EndPage(); +private slots: + void openInputWizard(); + private: Ui::EndPage *ui; }; diff --git a/ground/openpilotgcs/src/plugins/setupwizard/pages/levellingpage.cpp b/ground/openpilotgcs/src/plugins/setupwizard/pages/levellingpage.cpp index 8128a3717..cabde07b7 100644 --- a/ground/openpilotgcs/src/plugins/setupwizard/pages/levellingpage.cpp +++ b/ground/openpilotgcs/src/plugins/setupwizard/pages/levellingpage.cpp @@ -51,16 +51,18 @@ bool LevellingPage::validatePage() return true; } -bool LevellingPage::isComplete() +bool LevellingPage::isComplete() const { - return getWizard()->isLevellingPerformed(); + return const_cast(this)->getWizard()->isLevellingPerformed() && + ui->levelButton->isEnabled(); } void LevellingPage::performLevelling() { if(!getWizard()->getConnectionManager()->isConnected()) { QMessageBox msgBox; - msgBox.setText(tr("An OpenPilot controller must be connected to your computer to perform bias calculations.\nPlease connect your OpenPilot controller to continue.")); + msgBox.setText(tr("An OpenPilot controller must be connected to your computer to perform bias " + "calculations.\nPlease connect your OpenPilot controller to continue.")); msgBox.setStandardButtons(QMessageBox::Ok); msgBox.setDefaultButton(QMessageBox::Ok); msgBox.exec(); @@ -69,14 +71,14 @@ void LevellingPage::performLevelling() if(!m_levellingUtil) { - ui->levelButton->setEnabled(false); - // Measure every 100ms * 100times = 10s m_levellingUtil = new LevellingUtil(BIAS_CYCLES, BIAS_PERIOD); - connect(m_levellingUtil, SIGNAL(progress(long,long)), this, SLOT(levellingProgress(long,long))); - connect(m_levellingUtil, SIGNAL(done(accelGyroBias)), this, SLOT(levellingDone(accelGyroBias))); - connect(m_levellingUtil, SIGNAL(timeout(QString)), this, SLOT(levellingTimeout(QString))); } + connect(m_levellingUtil, SIGNAL(progress(long,long)), this, SLOT(levellingProgress(long,long))); + connect(m_levellingUtil, SIGNAL(done(accelGyroBias)), this, SLOT(levellingDone(accelGyroBias))); + connect(m_levellingUtil, SIGNAL(timeout(QString)), this, SLOT(levellingTimeout(QString))); + ui->levelButton->setEnabled(false); + emit completeChanged(); m_levellingUtil->start(); } diff --git a/ground/openpilotgcs/src/plugins/setupwizard/pages/levellingpage.h b/ground/openpilotgcs/src/plugins/setupwizard/pages/levellingpage.h index 870ae5e6f..b5f555ecc 100644 --- a/ground/openpilotgcs/src/plugins/setupwizard/pages/levellingpage.h +++ b/ground/openpilotgcs/src/plugins/setupwizard/pages/levellingpage.h @@ -43,7 +43,7 @@ public: explicit LevellingPage(SetupWizard *wizard, QWidget *parent = 0); ~LevellingPage(); bool validatePage(); - bool isComplete(); + bool isComplete() const; private slots: void performLevelling(); diff --git a/ground/openpilotgcs/src/plugins/setupwizard/setupwizard.cpp b/ground/openpilotgcs/src/plugins/setupwizard/setupwizard.cpp index 2b32d7a31..f68c942ef 100644 --- a/ground/openpilotgcs/src/plugins/setupwizard/setupwizard.cpp +++ b/ground/openpilotgcs/src/plugins/setupwizard/setupwizard.cpp @@ -172,7 +172,7 @@ QString SetupWizard::getSummaryText() summary.append('\n'); summary.append(tr("ESC type: ")); - switch (getInputType()) + switch (getESCType()) { case ESC_DEFAULT: summary.append(tr("Default ESC (50 Hz)")); diff --git a/ground/openpilotgcs/src/plugins/setupwizard/setupwizard.pro b/ground/openpilotgcs/src/plugins/setupwizard/setupwizard.pro index ff858f29d..d3a6dc0da 100644 --- a/ground/openpilotgcs/src/plugins/setupwizard/setupwizard.pro +++ b/ground/openpilotgcs/src/plugins/setupwizard/setupwizard.pro @@ -6,7 +6,8 @@ QT += svg include(../../openpilotgcsplugin.pri) include(../../plugins/coreplugin/coreplugin.pri) include(../../plugins/uavobjectutil/uavobjectutil.pri) - +include(../../plugins/config/config.pri) + HEADERS += setupwizardplugin.h \ setupwizard.h \ pages/startpage.h \ From bc6709cfb30681617326e20249e517bfe8a5d687 Mon Sep 17 00:00:00 2001 From: Fredrik Arvidsson Date: Mon, 13 Aug 2012 19:52:39 +0200 Subject: [PATCH 004/105] Added button imgaes for the wizard and created a resource file to host them. --- .../plugins/setupwizard/pages/flashpage.ui | 5 +- .../plugins/setupwizard/pages/inputpage.ui | 2 +- .../plugins/setupwizard/pages/vehiclepage.ui | 118 +++++++++++++++--- .../setupwizard/resources/bttn-heli-down.png | Bin 0 -> 3474 bytes .../setupwizard/resources/bttn-heli-over.png | Bin 0 -> 3479 bytes .../setupwizard/resources/bttn-heli-up.png | Bin 0 -> 4211 bytes .../setupwizard/resources/bttn-land-down.png | Bin 0 -> 3995 bytes .../setupwizard/resources/bttn-land-over.png | Bin 0 -> 3772 bytes .../setupwizard/resources/bttn-land-up.png | Bin 0 -> 4772 bytes .../setupwizard/resources/bttn-multi-down.png | Bin 0 -> 6634 bytes .../setupwizard/resources/bttn-multi-over.png | Bin 0 -> 5990 bytes .../setupwizard/resources/bttn-multi-up.png | Bin 0 -> 7872 bytes .../setupwizard/resources/bttn-plane-down.png | Bin 0 -> 3917 bytes .../setupwizard/resources/bttn-plane-over.png | Bin 0 -> 3900 bytes .../setupwizard/resources/bttn-plane-up.png | Bin 0 -> 4773 bytes .../plugins/setupwizard/wizardResources.qrc | 15 ++- 16 files changed, 118 insertions(+), 22 deletions(-) create mode 100644 ground/openpilotgcs/src/plugins/setupwizard/resources/bttn-heli-down.png create mode 100644 ground/openpilotgcs/src/plugins/setupwizard/resources/bttn-heli-over.png create mode 100644 ground/openpilotgcs/src/plugins/setupwizard/resources/bttn-heli-up.png create mode 100644 ground/openpilotgcs/src/plugins/setupwizard/resources/bttn-land-down.png create mode 100644 ground/openpilotgcs/src/plugins/setupwizard/resources/bttn-land-over.png create mode 100644 ground/openpilotgcs/src/plugins/setupwizard/resources/bttn-land-up.png create mode 100644 ground/openpilotgcs/src/plugins/setupwizard/resources/bttn-multi-down.png create mode 100644 ground/openpilotgcs/src/plugins/setupwizard/resources/bttn-multi-over.png create mode 100644 ground/openpilotgcs/src/plugins/setupwizard/resources/bttn-multi-up.png create mode 100644 ground/openpilotgcs/src/plugins/setupwizard/resources/bttn-plane-down.png create mode 100644 ground/openpilotgcs/src/plugins/setupwizard/resources/bttn-plane-over.png create mode 100644 ground/openpilotgcs/src/plugins/setupwizard/resources/bttn-plane-up.png diff --git a/ground/openpilotgcs/src/plugins/setupwizard/pages/flashpage.ui b/ground/openpilotgcs/src/plugins/setupwizard/pages/flashpage.ui index fccf257e4..a354302b8 100644 --- a/ground/openpilotgcs/src/plugins/setupwizard/pages/flashpage.ui +++ b/ground/openpilotgcs/src/plugins/setupwizard/pages/flashpage.ui @@ -31,9 +31,8 @@ p, li { white-space: pre-wrap; } <p style="-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;"></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt;">The wizard is now ready to write the configuration directly to your OpenPilot controller. This is only possible if the controller is connected and identified in the first step of this wizard. If the controller is not connected, or if the controller type was selected manually you can instead of writing the configuration to the controller save it to disk for later use.</span></p> <p style="-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:10pt;"></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt;">If any of the selections made in this wizard requires a reboot of the controller then that will be performed in this step.</span></p> -<p style="-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:10pt;"></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt;">If you by any reason do not want to write the configuration directly to the controller you can choose to save the configuration to disk and then exit this wizard.</span></p></body></html> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt;">If any of the selections made in this wizard requires a reboot of the controller then that will have to be performed after this step by power cycling the OpenPilot controller board.</span></p> +<p style="-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:10pt;"></p></body></html> Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop diff --git a/ground/openpilotgcs/src/plugins/setupwizard/pages/inputpage.ui b/ground/openpilotgcs/src/plugins/setupwizard/pages/inputpage.ui index 0313ea314..0512ac8c3 100644 --- a/ground/openpilotgcs/src/plugins/setupwizard/pages/inputpage.ui +++ b/ground/openpilotgcs/src/plugins/setupwizard/pages/inputpage.ui @@ -31,7 +31,7 @@ p, li { white-space: pre-wrap; } <p style="-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;"></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt;">The OpenPilot controller supports many different types of input signals. Please select the type of input that matches your Receiver configuration. If you are unsure leave the default option selected and continue the wizard.</span></p> <p style="-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:10pt;"></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt;">Some input options require the OpenPilot controller to be rebooted before the changes can take place. If an option that requires a reboot is selected the controller will be rebooted at the end of this wizard after the configuration is written to the controller.</span></p></body></html> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt;">Some input options require the OpenPilot controller to be rebooted before the changes can take place. If an option that requires a reboot is selected the controller will need to be rebooted at the end of this wizard after the configuration is written to the controller.</span></p></body></html> Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop diff --git a/ground/openpilotgcs/src/plugins/setupwizard/pages/vehiclepage.ui b/ground/openpilotgcs/src/plugins/setupwizard/pages/vehiclepage.ui index fdc2d47d2..ef49dbd5f 100644 --- a/ground/openpilotgcs/src/plugins/setupwizard/pages/vehiclepage.ui +++ b/ground/openpilotgcs/src/plugins/setupwizard/pages/vehiclepage.ui @@ -61,21 +61,40 @@ p, li { white-space: pre-wrap; } Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter - + 50 40 100 - 100 + 120 Tricopter, Quadcopter, Hexacopter, Octocopter + + false + + + QToolButton { border: none } + Multirotor + + + :/setupwizard/resources/bttn-multi-up.png + :/setupwizard/resources/bttn-multi-down.png + :/setupwizard/resources/bttn-multi-down.png + :/setupwizard/resources/bttn-multi-down.png:/setupwizard/resources/bttn-multi-up.png + + + + 100 + 100 + + true @@ -85,84 +104,149 @@ p, li { white-space: pre-wrap; } true - - false + + Qt::ToolButtonTextUnderIcon + + + true - + 170 40 100 - 100 + 120 Airplane, Sloper, Jet + + QToolButton { border: none } + Fixed wing + + + :/setupwizard/resources/bttn-plane-up.png + :/setupwizard/resources/bttn-plane-down.png + :/setupwizard/resources/bttn-plane-down.png + :/setupwizard/resources/bttn-plane-down.png:/setupwizard/resources/bttn-plane-up.png + + + + 100 + 100 + + true + + false + true - - false + + Qt::ToolButtonTextUnderIcon + + + true - + 290 40 100 - 100 + 120 + + QToolButton { border: none } + Helicopter + + + :/setupwizard/resources/bttn-heli-up.png + :/setupwizard/resources/bttn-heli-down.png + :/setupwizard/resources/bttn-heli-down.png + :/setupwizard/resources/bttn-heli-down.png:/setupwizard/resources/bttn-heli-up.png + + + + 100 + 100 + + true true - - false + + Qt::ToolButtonTextUnderIcon + + + true - + 410 40 100 - 100 + 120 Car, Boat, U-Boat + + QToolButton { border: none } + Surface + + + :/setupwizard/resources/bttn-land-up.png + :/setupwizard/resources/bttn-land-down.png + :/setupwizard/resources/bttn-land-down.png + :/setupwizard/resources/bttn-land-down.png:/setupwizard/resources/bttn-land-up.png + + + + 100 + 100 + + true true - - false + + Qt::ToolButtonTextUnderIcon + + + true - + + + diff --git a/ground/openpilotgcs/src/plugins/setupwizard/resources/bttn-heli-down.png b/ground/openpilotgcs/src/plugins/setupwizard/resources/bttn-heli-down.png new file mode 100644 index 0000000000000000000000000000000000000000..0d75a7ba851551ce503561f451052bce00a63b07 GIT binary patch literal 3474 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 literal 0 HcmV?d00001 diff --git a/ground/openpilotgcs/src/plugins/setupwizard/resources/bttn-land-over.png b/ground/openpilotgcs/src/plugins/setupwizard/resources/bttn-land-over.png new file mode 100644 index 0000000000000000000000000000000000000000..8d6336bc4830c19d39e5404108e128e7e20c1e66 GIT binary patch literal 3772 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 JN()lle*mOTjt>9; literal 0 HcmV?d00001 diff --git a/ground/openpilotgcs/src/plugins/setupwizard/resources/bttn-land-up.png b/ground/openpilotgcs/src/plugins/setupwizard/resources/bttn-land-up.png new file mode 100644 index 0000000000000000000000000000000000000000..7d90f4a2d49ed091aef8948ba9ee37b1a9af09ed GIT binary patch literal 4772 zcmbVQcT`hLw}((fLXjed9)nVaBoG2bItjfBT#BFs5+Jn1BuEhyL0SOmHc%;sE(j=s zAc9B{6r=Q_6h%NldJ#pxaPRfL_s3n|TkD;5&Y3+k`}f;r_N+B)5^b$bc)7*6Sy)(j z%}mj!m@SF<1#odP|1}%Pa%Lk+#W+*#iQd!@EE&&YfFpY1!DfM2AN(mi78iEzC0?6_ zh0UAb;7oP4vP5|i168p5Ix3-o`&29}+IpcRtd~EY3iibN5Q20d%Z<+)FWW0U2wS!l z6{^1ucna8)Rb`689!2$VV!rK$n` z`++d6k#XLrQ)uJAZ83W~5ML^lgn~jtLPAtR)KrLMA1GW)OKYD)RaKd(p-c%2qGCgp zgD5h;8PIr&7nwk!5{N>WiXQH)?(Z-sZ>RK=jq!AJgGx&`)3!+f5L0bU5=P4o9xPic%-)r`^v)q= z?ZBqVJ!A<4;Vyjqp&8ij)ZhbgPl*TcVQ;mLt1-NxZ9M^ZmNq}kiq5WTf8>1w80UBQ z)>gaNqq7__p|$U%+Ahk4SH-L&c_bmX^{tXos;PIQy;8wVas`4 zr?4})Y{7`p1IDZ!VVoNW3ExDshOB-5 zLAqhvblZz=9jWI$mFyx1WvyIbEH1}z+<0ABegxQSl1;%A#3s~X4C7SgtnuK%33wgu zPLA-bUAcqHdo$a4VNCD&8;xg|ZJLLH@og_bq0oVr!in6DQlJKmOQ}qJ)K>K|mxbbI zy)<>(`XTGG^$ukTok-E3R&Gks!S?o2c_n3Uo~9$9xz+I1Z_R#gU#W&ZFXODsJ2E&h zF!9ZImfl5%LfTu>r3RY~%SS=?C)s&vHLv7*Yd>6{e0_`CN|+OQrat=VKnj$P4P`I~ceu0FUmAm3|6KRfNA3w!H7S*c?} zYK~-awU7!mNMgZGWQ4iMD|9`niu@93$L4RX;qfLBc<(D-pCNW{1RUL+S`+O6;vGHk zVNPx%i&m7RJiPi$h;&W_#A9ZAPNFmt@_FVM*1FDdcQ>0xXN;s)ZAnEBg@kl7X89-4 zdxsxxCc<1xzc}<+B(lu4CG;G8JchYg_o{n!YjdJwqyq>NtC1P4RU81M7Hd>k1svX; zU1|i+S%wUVHn{?CYe~js@vOORx7BqS^$jd&lH6WEk(IG8Lqp2%FqS7IwOr!2Ll$G4 zJ{7+570`Vw`9`}sXwbpe0d&LNf$uI#t3K|zB~a5Qs?YSI4ShG?p*#UFFqe6*srhij z&6lB`OR25vYQIn)2kQ77hTLOypMuQ7GXp9qh!vrup$CM{#+E%YUfIoR1i;o-NrH{H zWvmy=gA5Ia-95hU43uZkEpgM%DxY1ycP58?sh7r`UHrBb**GRS zfO@{#&tH`HbRr(g*Y82{4K?m`IX#h}c0EYnOG5;1|p?m0n_K?l1CF6|uTgBJg&U3xzDXy<6N#IJ8?ey#V`n*wEvh!t;%1abl zQ*#=a!jK&!-K*qPFpGcSjUUKLU2Um$bz1}-v+M;g3dzn~H7JfVPy%bbzmhC0v!kUKHl8 zjN37KJP~s#(j|#scO*6H&B-us+4+n?Uw1zhs@NX;Z52Zc+^_LmoOVMEJ3mxjKf_EZ za&&e*g(gR?-~)^|^xPgk-51^A|CDqgGGX9)lP5CE*rxv17FgwxTic_pzI$0_O8yy@k@l*>8ko-G-kO4euQVoRpwO5y=j*>arv52+)oiJ4UdqwI>j0V4*8 zKAYZBD@$1E*-WYqpLfg9LK8OcTtBAX+5);DuLr%W0jbJ3U*!CJ}ZQ z7~Y0~$aKCT&iHn~v6+;-3H2-d&&mvpD8P%~N0Yj$@mFd24I}bBwRx4nBtTKup_|#w zg6TIa+Inmpr_(Xt1Q&YM-JgG#{%ZI=z0^sfSW3=wP8pI)IaGWa zwd%C?P4DN$%&ap5+VQ+f=I7|^h(#$lXE5f9OXtUzGZ^Q(2l}q%6+eG)G&Sz2Q8Q{P zEfk~DZ$y4MGOy3p01#NYFeSsYRJ}bV-FOvC8csa>Yf)?Mdu;va+oU&FADa_&{jT}d z>Ez{BA4naV4)E7YCU6LvYD+ri2VZTL4%nD|i>*c6P)lMkkWtWW>C7yJlqn$8pfMzIjxm#?U$EBFKgEqg2<*rnTuvj_dd?I`B+}KE`WmGYZxY;OoQThWr$%#|F2?rfo7Zr( zNvWfVTgmj{;MA-(??e^gd|irIUW<47R#nD@ zezdY169c(?yf(bkDB%yEodiky)i3jzxz~&#)Z8HHhC=|sDC&io_K}jw!o~#1=J_*K zPNR2CTfv(tnY~!CcpK+Ve=136!Dz3*uByE(p4O>fI9Ak+^fn@>RSRe(@rwJ{F9(hp*oK#>#lv;TOEoX;$F>$+*{uPtOu8lSIUa zl&^k=ENlSWs!Kd_Ic}Km-Sx6~E|X;8NzS!fzx+^H@nxr4>NSW9)RGk~pkSe@ zK0`4~itN09{AP-?yJK`NVoy^>_pO$1nBCg_b?#c98O>>k=cn`2#i>pPRehc|R!WuI zDA@F-Qa~(MrZroRV=8aYXOF#ZGC}y5KoL;n^SzJs&Fr1ouf`jEHs`BsviyGT#sd?H zxAm0lr9L7{&7>Su^&a^ND4LT=b7LY1_l5QcJ-}2AmfLYA<{2W6bmR%S`R;3Xw5_Y# z)k;98-5nL*&rgJXf}p~4GxQwJM7bJ7WoOZXEr2TfJk>7FR9!ZTUIl<13lY?_W9& z@9<*9<#IkB{iUSTU)-^)J-s#~GIKV%;Yd+upI6b0M}b||h%SHKt1h-f0o9G{e09U` zV|rVB2lPcMIBOE<{5XO3R?a~V%h(zZ#Vii{{C$B3*9z*2F10N(bQw2MCzUnaz(hpD z(^$J8Q-SP2ZyDzoeZ~(wkkK4M@Dn!@!Wd|t+h2Mi&2UjpA;9q1SWh^tcV8}I6cx$h z@c3$kSZ5x{GW&ADT9}E+0WmQ#XK06l?}R-MWJ<;-55#KPKQv^4P=P{C!o#0DY=R`s zaqPv}+t~2m%E_6T#IW0Otrzs0YIYUEU%Y^cdkGYRoi%5MyC$ZYNAR4^j|6T@?5cyv zTV5J#Yk^&2Y7-|7>zY?yzTmY>$H;n2FR(F>?LeBDX2sm7W5gj-#}&Kq`*n47fg?3| zQPl0AqxUbYy1}On0)@2;^nNztd#-I0!j8R$`U}1_WQl9}_{n2;@23dFEmOYDd2Mhhd}n3qnZO=gU*{=LlYTIn&GSU%I)34}MI@JPX?TX4pkrEio`OVvLY?cb%?Cr)5t^D26 z`NOPGuL>HgrV%b>)A zfxd3;yvXD0&bzsLh%#J(o@J!Ob;Eqpc0uyx{98vxS>-J5m%$XW+BXb@W#-bNAc4DW zDIHfpB^j)sG*-b~@R7J+o~F5I5TE6Y?JdyPpex$JivBWk7T3*JKxt|g`CM$4V4fRO cVn3lREOJp5_$epIxBYt~GmJI5($FLNKQ$a$4*&oF literal 0 HcmV?d00001 diff --git a/ground/openpilotgcs/src/plugins/setupwizard/resources/bttn-multi-down.png b/ground/openpilotgcs/src/plugins/setupwizard/resources/bttn-multi-down.png new file mode 100644 index 0000000000000000000000000000000000000000..7da5b4fdca238a7c328497dd2c85ea8894847a67 GIT binary patch literal 6634 zcmbVxcQjmE`>@`75K#vgQAZi0_fZpF5Yd@obVeDyWt2pX7KEq~M2U>vMTj8ho`85^l@-M+52#*9q~1 znuZvdIfb}8$vN|=C<7Fc@;CyXP=5yi($m8WA&*qz`9oJ8*T0?y@&NvT_`56d{4JEF zz7asf+Ybtm7LyWn5|@wwfWcxCAZajILIfZwE+GjN$30+C36Q)rSYA>F@K52var1MA z$(um5{^5liDe<`a`}@cPfk8n*VnI@3-hM7X2{}2rYZ{W0qBsaqM6j2?15(rr!TT=- z2o&Mu2lw%ZdwT({DLOcM2ly-T;3WNf37$Us`u`#9h4@ENIF$jB4n9B$F>#=$=k>b& zKqLH3p#MjV{|b#T3-*BmO`r(x06!<3Jz%{5BI9)Tzcac9#7QG>=m*Cc#lZvO?G)e% z_43z+DDmLFh&jWZQS`d(?gr~>Utsk9lV^N|MG?7`2K?{`@iDKYxqGO z{Js6myuCgC^#CJRZ+~xutG5q8!xRj-Z2|Xk_6|Y_UYqCd)k2_t@Ia`umY=sL;E#Ug z;s1sI|9jnk<2wKU=nRMx26*ip|Ch7;JB9PW>+XMCA2;|<@IbwA5#xsojs2PW3Oqb! zR$Yji8FFT)fE>wquW9IaXPLq;gT5#AC{2Ls7d3kN9DFXXJ&o{lE$7u%3BnkjqFy!f z4S)_Eq(7bBhlunRai%5aXWcPc3H9#2Y$_)YxI5<>lgFdu*V<6CSxwW*JxyY=RQE*N@Lw1}*i?;i> znoc?8UksZpyZiAFg7egfM{5KtEMt*771L%z9NoRnR{4>~`$6AHSd<*MC@Rf3f$1YX zTqZOHnejtc0tq}i0`H__-l&3lJxbmV(`3A>m;8NLTy8+PBX_-l>dMz&kg-UV)iyu3W-=2ctVS%NK1A1SHI zGF3-p?TL)b*78_0$?{}<%nn$4Zyi2+9FRapYxAz)E4ym)M_I^P`NO-rAMpQ5V2(O8 zD_f1k1HvCXBg#WU|j^yavTG>-AS*iSG%z zleab*>P=Ln1B0_?^sBMM&q#)=^o4@i6=zLuL%$c@eYmcd0OPGz=OgJ#b*Qu|w@&ou z1O!-DKJa|i9H@Jo7z^kl6Q*l@}!ih&t)HM-Mh-ROI(~A7ZDeHiljnK)JAZ7rY zkWZ)nq(l0bl;0v6WUtBEyi^U9rDe`rUT5eiU4kj}w(q@s$R%VMnjbhiLz~(*O5Mmb zHZj#xgsm@R$xYe@y~~O)I!CE5vmx);R99Q5Ro6aLtBy0SbML4tFIs5rlObEccknbv z&}6D~aW?*t;97PIeI*(s8+kMC0hyI299(wJn#3VNq(MTXeNt;vWQ2SjSyyGwEznI? zxp~u9qK4&aS&5$IQ+z;~*T~D!qS&e(p{P7M5m>16X$%4S=mlg z3va(%O>nb>^U^a;W5U(^YcDGWI|=TG3l@fZ2ysT92Kc8^dD~$blo%F39*K2buwqkbvsR#2088iR>HUA@(wj3;Z4$# z>c|pZ^cgZJ?9HzRYw$gevU8=4J~41&&qRGf?}SiUQCGKNX~O`m<#_k31LWX3EashZ zw8{&5vuvE*cDH*lE`I6hHjg@=^TaTN_i`%Q7y* z5Hxty_j0ymM~Fy2mih6GNnW{9f@tf;tsi(3OvFgnFve`ru!Y?{Z3Ek0m&MDJmP~)1NB$)X%CEI?$>n?hWDs4i@Mo`R>WHe(9bd~s@A=%)oHg*O6}I|ZGB}D zKd!Awv}}mgUheX}+_}0s&NHmvgWzBEl_=gU>MCYl3Dr$&xnSB}tTH>YY?US#yhYr% z9cnPB5kxcCA;4c$-@<4(YC{ZNO$)^ToDExgfApAsLWyDf_mS}Na}R4-@BX@OZThhI^X3!?G99F zdl>I95L01fcW?FZ$k=Lxx8x4X`;3FYz$ct=9#0flngTAs)qDc zpmf^do1DaHBz=a;$cm$r%OOeMbI0`e-7Zt<{u}xX{YTUc&$7pjtVZ5WXj$pL85q8~ zdLtG8B}8eLT_%RhF8A)2i2YZgJp6MuSJOc*;zu8sW3VQydhUMMQU7rd4=U;>z+nMS zLLX!|nNE4w&}I%c$JoSpy-8>_2d&tDm;!r?&#ghKrvaabmgS#nQla1M4-eO+ z8t%|BuOiLjK7Q!1;@@a;k^8LLckewxZLWkm3~VFp#aUk8 z_LVWP@fEqyp2`2I8xM@ms)~EDpY!R*?wd$e@k~9={|IeRpe)Lzw)` zDmnK0$67OAh*k@>Cf&*)6-RckkY`5p(nO}#1U`7~kBpLo>IVhYr>=P34|L#Ld$kbn zelNg0q538U60o~z&K)Ai__7i)r{*tK4yRl&JsEV|jF}EQ@&YY?_@M1`@oJ?&^1=5e z<;{IOY(riMGMqP@xLj1k)L~&}?-gCeJc5*A#ig0zwSf~|SaMByrC?Y8l4#+tB<#LN zW5yq|*0(j`ce||CV{XJ9!4P&cgg+K^o$>*BNixqC?dcY}Tn|4~R0_$aR#eb5_hGlF zkl`yQG0W+&aRaSCc2;eu%K-l1a~=6E{_+uVg+M~&{hu|`ZQjwA`H{R37spr7djTK% z@_&Beu#{bg3wI2#(Jnh{buC@!O2M0tP}=wxD7Jo>GZU|P4=wEi{aaW8dE?guD{}@< zZZE4JIWX>~DUp5KJn6SIwp+x@64v8-dAbT`OE+amq~=J{@_Huh*j*61Yab%mZ3E;y zkNNZ8xZiVANVuUzi;#dw3H==ZzBD1T@hnc8RaY3!|9zD(h$L+8Ts0>o%RPuazWX_F zvR{StUWEKJW2fk+7A8u*mUvVGalAk>Fhf0}rkDj~&we z(Hq#BecQ{Wq9t**ZMa{a4jcTh8eG7%&w7mz!~c*d%)>ew-s7#Ay3Yp5Ej{ z_f^+U*f0EAT)<1k)Scxg)#la~fYO-9Au~F>@Xq^zSpMUgnbR+>7bo+t6R3{f7IGOZ z`tKtM)+NNuL@D?k*!teNtLeCO493>waYD$2bPL{7*{Wr(!nWh%yNHgSVj1F zvA}VYb996r*f)p&`v_FhtP=FH7F%y(Uh1_J5*xypIf*`<`-stwKCvr=p^y^7Hx0Wl z41UrP_c={uKw@4F15QIixrZ@qz3gN5kz5an&U@@Z4ez=^KP<{8n`Uovl8-U1kwN?n zzD<~Q{M<4%M}C_KuxzKVehv!o)EjC67GZSo%4V|q*xpj3nWlctz0hCnF1*g0?u#yS211tXS_w zHpdg#^5z|k!>=~Jgig`8OVOWhf{#bWdamO3+#c!($6bj>L@|9eMPwK2c|IHmmbH4( zy941T)}_Xz8MZ^})`#;eBz(@e29#pE= zgTs%q&KJP+p|3RUmZr^2j0@$Df*M_qj??|JUaGGj_22*4i6LV2z0BL@&Pzr=sw55T zWD?ouWLS!|-z|DBU&9Q~y_x>(SyCGbF9FYapTO-B1mS0y&&53JBK#@rQPYpl^!;hr zyAxss-h3f?v7HS298W@8T-5|u&oss~x1;G#wSOx|1G`k5P^XyW z_n&|eUNW9rxE!i19sLA0zWWKU@^OTn^GHz)K9m)NEzK!|n^|yf#7Iv0++kMNYlR&< zXGNsFWW4eCn4z)f*S3H*(IQ#OOhu^S>$7Lf2@j@3Z*&OdBwb5wpbW4>viE$FP-CH2 zplh6K@iJ_vC$B{hnDx@Kb5N827}kB@~JP(o(laBS$EXE8e0hZrv3Gsc4#T^{mY zgc3)}1{Z$E7b=^l8e5z0Eu~|r!MInhY7+e->lzeO69v9&Lfy`JpAVq;l9LR|2$VcP zX&}rMC{*oq2?tYIN0cj`0U3x=zh>A)JhLZFRkueEHw^5VlI1K{c!Xo|W1hDBY~kpC z9UjK&lBob={=Q0ikT`_L4tw(nlU2eRk3HJEl~}+f>cTDd0O@&T9ZL{KT+>{H5Y&Hg ztZx!0?WRGe5*9@NLjMusG*o2f-Oaa(Zl%vR#3nJ{CQ_OWNfK{T!8jH54TFd{?+h`0 z#Pc31A8SoHjy=A}grjsCqm0*1BS1|vp5f!mPQ^BTd90qDwitEql&4Vm5t^K^9=a$P zZ&3mVu|6a@_nXLfDo^`Z4x$Otkxf8P*0q$Fk2Oe*d+lWqVDNOXtD^i;+x9Ul1ynIQ z^TBGKwK+u8{6jM1>Aq9zqD)P){=a>fDb0045z3pVoksajZqP4XHMc{Egzd9sBY@+r z>D;@K!Eb5;OY;X0yzniH-L@nbnK^b~GPx3HJKBFzw$~C$bFAF0wtte&o@e7Pjv_LK zXugtsIPyZ6Xz1S}q23U6MbQ=9f#0raPXc8euZ4{-;}-nOYWHG{cALg!8d8A= zdhWy(WuVMSoANZA*}xvlVZM_Y;PYZ_VF7HzS)8@d077b4U8823dos&*;9@$JTTUOj zm+~iH|JF!Qk#&t#WY{fqNjC2gsy6-1nabqDrDOhAFK5d3|9eLiAtJk86?z>EDzUnPyH9+ z6@d%opv>%pqK?~!7CqOOih~*1gJ^~3z`$)no0(Ouigm*2<>KDc^| z;++MIxr5PDns3vUF_X8A$OSu3g=gi0)`x_R?^O&`VKQdJlX2G@&0v#-Lk@L4UN}Is zED?R5Q!yhw5GU357o&RlzJ?-eN)heh$Sr$@$?%370~7M6Btf_>-&MYlZ%4~??I_Rc zxIrf*NeUeqB$BJ}xKsQ|)4Wy76@a3y71pMnDi&=i<;@xbA>#h#Pjc1dAUqDd*(+0~ z5L#K9V~7`eCRI&%R|~B41b~(5^XjD-jl9xTl=N({DP#-0d{h_Vb5X#^5s?uaI&}E9 zBsb&B_H3TmOp=qJi;wK)Unba(yuuZD)bbR*xpYhGvH0Pk4i_&in}SoI$I_iI#3Hct zW>wY-wI!z;BRRWHby>U$LEMz2k+LZ_x}U!--?9E&CH<=JzZt$=uk%N4{z&bclz7Po6#@ zy2A)}>6^d$-5SYK7;I0}k#)RiSZ7mSqgfj%QC3qRZ#P_MEqkt~luGC-F~bHM%q)H? zjuz-xty$OjdFOUohkzi~E3Qc)`Nc;S$zbuT?Ud*QGI)5l^aqBbl(Ahd>~x`oLHu8e zzRy{>cEtpqUY5S4qu-*{T$#K;R|Kf#KGM(aer6Z_0PgRJCe=5C0AeoA#w(;)jLq*4 z)g~9g(dU7Ysc-PSH@E&`FbD#2a7>Vm*K{R%O^d68=!;x=RR2_;AWwMq0zRP<3&7g8gqf7&7o-iA0Qg**c?9 zki+(B3ILa$RDEpNhd#GC7sn+~Py8Mm*K-T&*WT}^R5TpZd^=8AEgZo=UmKAam3@f_ z(Z_?whslrfD;0)%P&kcQZJEbTCpYnII%{2|Tz2zFwNqJ@lAAD(W+(1gTM?XD83<-L z`Ye)N>>ZM~xbLK8&2@`;0#zI0Tbz`G#uf%5N`~g$K$wT-IsAS@&7K82w^cv&M|a@V qg44*Ksw5Fl^9Ft(&96v&5_Bx1Gp=?QL;ti5N#s>?~aV0uqL52hj4r__UxCVH4W8nY*@CM$>mSk&cqV7T@ z$YXxP$dd`bNdW+GEwUHJ#RE$MIb(5nPlV{ktJk6+yemS~M#)sc)JqTRhQAc(gGC3L zS-AvyxTv{`YH5PtWOW(=0+xgUkqI|Febvbb(ZA`c)9!!228)9J1|fMMME?=W*7Pz+ zkLZI1Dapg+TofP>kg~EoL{Uju86pdUDnOuM1=>$p4x*^8q^u5A0sZR`rE&9dy`gT2 z)c+SR+7m+5jYRTN2ZR0n{pI~(@Awkk`u@vMG?RhJ7%wnHUI9!X{MPGlXkU^g z_P@pWkI=qW0bW?JCDxaC%g2T0j~iltkZHF2-x>V|q)DT0?t`Z}1#=Tgbh$;qdXfy0 z2vOP>c~`uvI!YI%q5whaBNb5)6a)g%(Nln;P&z0bh>EhZA_Vn^#(%<9g~5<|P$d-< z1gQ+6Ve6{tqL2_36jE754XFxK`Gafd=}W?Rx?unC#nbry3s?Dn#Z}ky!D2{6A1fm9 z=AQ_->_#LJecgy&AU(7)=%NkY)0OD&EA`tw|7eTE`r!SruKGSi0_bo1s^k9y|NmR> ze{fy@KQ;r?gaQ8!j{gxXe_qid@b~S%L!b8W@8rRH(lW+}mKvj!t49C;SBfE0$BI0@ zI%yLph)QJI9Ik0KB!e3nTCdH9tANRmRaH5rkf15%Z9n*C%NYhQW^m&rI&9I z%T9P_{xr+)YQ++#rx4*xz4A_}4UoD;c*mlh1snqQtyiWEjn9z&z<4UyQhWWK8nKC6^LU#I zDb)I9&eB!+ioU9rX)CZ}bGFU=qgNYS+cP}XxovB)&jV-+3K0?#%DwyRCngrL%UoJs zKi>6izLQ#p#-w1`SN(q;ES*<&?TVY&`{X;Yxiz2_q4jfLtT#*JIhzBQ_Uh{Dsc3LB z+1B&r=T@{if?L8gecLf#|4~CNXM46{RsP6e7mcE{NscC>H&YGf?tn=2%y5@{sJrNT z`d)XU~@D3Lz*Pz!g}o(ASNfiZc@OtFr6cBU09Uju=X+dfWpg0Mjk8Kp@9yu4AN5ahunuMi zt-suSd(QEGD3GZmnuGbl#1E>uR(NIeq4d-}hT*r2Pp-NbQ?@turth9M*E%MVkJg^g zZ%lbyj`HcaGNDG>=xfHl)HD{Xf0%o}~o?yG;2r z%MY%Jrg;>;>&3BB(#eMxyUaBaFWNbZc*{o3gM~x|@40rb)#}a%*c3ZT?(xyi zd&jm%DpS1EuRo_;dmy6sp#3Co*t=-?1~&#XQu|+rKaV!r{HKG@z41NWeCpXs#Vh&M zroAc5tF`(S0sarn&X1?a^N*?y7Bh_FkuwT}`!Hku>K3^c%MXu1lTQG9ug^J1< zXDkMdPJgfeY)25hHDYlWuQ3oV**JTqlH8%eHzL#NFr+Q7te+}z!@xNqWU)65?LTq9 zpCm+{2^~T%bz28^)Q%5c;VEBvxcR`K(f#~}t2R&54c)EB{2qvt_N@?pHJR%hfd(!O zy^jP4&n&i`n`F#?!Asc)N+piuc8~OpZjkvecl&1Uyih@)Sh|hA>Pq=@2R(hV();O# z&G}fZ{vTyHc*PvWUW@UT$W(WTY*&Fz z*vEjeP<0}vhh)3Kon@{#U`x8@KdQUFV={Eys=*g`B5fhSv67s-%x};0O5bse{IySI zIXD z5gc7O`1&loGCVtAF^yN)_>EuB{i}77-JrMRYtHNoFA7?SDF@~e5$r(TyGo?~T<+1aA)+%!_93xmn0ti?63CxhDyxr`R$145YF9O=qTD zsQ5B|>%D#c3L7#kCGV?Q;)UyI<<~quMDy-h1K|Mi+naBgAQZ#>3C~xA>pZUCu75LQ zbk&iN<2pHt|H_*KU9rnPakejUc8rn3!ax0DNM>E^Bw}l`?R4iCmOfaVc!CeR4p|a-Jm4&Hh?KQzy~5jldu!Mj{Q04jk83JAOq_wVGiqZ1d$rjVFz&cdv@{+z zG~7zMJvaidwuH}To$AUfbk1d_GB{PtGXL10kA0cPw+S@YD?gf?g51UB`uwO@vJJD2Sy-PPOh6uro9@i*aa@~6y)~) zW~#NyrSERav;_uWt~|u0+Yp;} z#(1@h7zXk*V#j9KVwr!Zsc7+F%UhadG2*RaR|i6pcaRa1BDkDIns(`Dqe`z z`lsrvY>vFP3VZVDXW80UfvL?%8^RbmU{C@4?2J%LrgILhRUqWYXqEqy!kr)cy=zon zT|*GNFkDq%zb33mDBZcj@*5+ZU+g%U8-D*Be3mVi+y}d~l{!Qj4d-ke3VtW`wB2Jf|QF3FFt$L8s^Pe0e@)(D=eR+Rb8FW^}~A*myY|1=9+5q^+8bI6fuUzH;e-9 z_2p`4P;SD=UB6^gjGrSd_BWSHD?7%YSmf)YBxOc_C`PAWO(Vz~hgbD8!v-2@1$yW+ zMaRVX^V@iZl5-US-!#yu%>m7$n?Euv{XyA*%fYv1ZmKgZ+tjN+nY#WrD;k?JwYTsw-!1r7wkK?nVGhN;%Sh0prz9I6vG4 zdM|Xv-vvVO**K(s$n&j!4KScmMiQ5GYs@ar)T>*6e_LyS+fIJSgJn|I!HFI=aM2{) z?PnluY&rKSN82O~cyH#NOl3??OTJx*`NxFyDGOtU!mf6&%4BZk=#Z}4kZ@Lae2jZ7 zt@n$oOR>PU6*5|UiDOnaj)j!|P!uOeTDy^HBP~PoiWzwNjMa3hr{ipClufoU8OoX=151_wW zM?Pw6O&ZqaPaS(=X(6h->^bi1bRKB_@g7K}yjJ-v|9qBol*0Lk%P-vWsFFYB6sx|3 zyNk6Xo|y3-Ze$RS2uJ5{tXHG`-dG$93042xE=V+6-f=Nujcwn?a!C)e!7(u0JKL6P z(q68d$h7>&94AFW&J)^*}aPV&qdd@JsDy0Y+bt2*)6@_=9ARt?{EON ze(9?%TS z$EclV%5U%@866Yg*~m^I|4)wECL0x37+ZB$pHJVJjniX~y75tc>kZTS z7)hL0(ob*x{e?vHj(MFIyLc)q+baHY>hlG9Cs}r_;->xneZx-FP)2f-*KkObC$2N)?BPh2rk9Y$iF1 z*V=7BBdEZ3qik-CgI;=Peh%^odM;1r`r4>FjnE4(k)aQ@xKFMiihVfA$`tAlqYip8u8hOM^%1pzEdcn6En6NIOU z;+)e)>+w4-DQ}{29@lf>xT4Q?&f6tiE>rVv1>xiri=tlpMri0$wjl0?k}Qikn{wG| zjhe@$e&d)6k%p09P3mPqfo8Aq%65u@k8F#$TyQ1vPcub??p*Z{$b(wyrm(amDghk) zw{YW#q;SholFb$`M`5np8G6xyG?vQbP0uxts!gMy61z26u3|(DH0zn!vw|!1*~jc* z!y&$D#)0aigHGK>h-CV}r@f3upsBmRjv;c%yMfzCTAQi?C5k?)ic`C+l-lGiDsR^x z^)2QSGqvM3)UJ+Pk;!<~afOcIYvw@qc%e7mQItbXRl7L({P7TDb5}tmTAFo8d+U-q zor3YxG{Ja|eCwowu`MKa0?l_@Zoy$-M3)gWPB_IJT&BbvUmp`xF?7Ut(w>Q;*PV76 zG$Jj#*HZ*jvKx!(#i$qNjqQ;sV@IJanK$GNOe{oa8)TP;w-4172<|2pN3!BxnV-cS z7kXD@B}HDUc)Yf>)4yV_a)RlhdNFOdQ7mNB7Y6qy{Pm@zoVLKisYkqR@>ArV1UDwq z*~J<5SQUEf4u|>&^ndT=|5nZ3>$95{gg|dUPnbgpk=_?^?ZSYmxc06%*gfcSFEf|T z$i?TE%&I$N#l~UTawU#mgD!Oap1!bV#e?{D<*ixj8#NR@N8CL-{}?gklz7nuMX)K@i{D|`d)`LyXwCYv^gNa=jCTxyS`d`NU!uuIZ- zCsw-jUZ{yy;=c)C#7(!duWr~8+)6F(8#GeD01;r##fPjD0y^5QP7+=c?ezO$C*>ng zjcK$_)13IidR$GGJ-=t-F|ICGjxaU>{xb^~n3(jeJ#x|&M^Y^k;MKJQni|5V;{5xA zzT`$YQ^M>lFIx@R6a-xn7$2t8Z}mr!TLpx_r6;^`y)4e{kS2EuE6gE0AC)!|Y@8ar z#?D++7uGXm{e05zTCeE-`UPC|f+43(bbd+bOPbs+2N9J$YIBidbF&q7aX0U6c-K^% z?M&8f6>GLfZJ=Zui&%gr)`z+m*I(UAMXjgdviYKu+7bBBUxmcBq&x9hn=uPjF~C^> z@z?QQ?4HuQdr6Dmb~FU}DT-^ggJ8SB;&Q7-nOkplyi zg>rYi5XlP#t6o7~j~gtAE_>pZ@9W}bqfRG^l{~vc0Vn!UVu(7%H)`X>CPMxiZ8ncm z8vzG@UMLtrs~hSyUYQYef=cujECs8Z3lJX-Hfmabh!)BJ5P;kLa-eGvcKHF5YN+GM zsk5?-P&AU)B$1)CNFU+rAQ!BtZ3|5AS~W%&W;HRU+=0A0%=>jmSwUzw|Ar*N#e+ww z4yuuLq?=E6Pd!1|emsJfE|xqi5#to|J?Vto1E31Jz*c~Tw&5vyhFPgn8?`>XteQ$}D!moVc6*{SZ5(53YAKT)mT3v$5{))#IwolLd5rGQS#ZKbX{Hr&28TZ7B=?)b&dulPlaKi=O1 z?MFYAB!yl_td!N7fsYT3zb5dc*=Nr+DCYhY1E>Yj7V9=C`fq^reNz0>6lbZoce^uJ zF_#$$o=S3Mlu+%uG@Zh-zz}Zz7~bk%gSmRA1y#Lf4rx0#(RFXH3-)EG5Ep5CI-1$4 z-gCbm32E%U8P2)w@nN8_M_66MbtUaCM$hy+3N=*yZif&Th~nmQLcGY}kH2(vKCMlF51C9(8i literal 0 HcmV?d00001 diff --git a/ground/openpilotgcs/src/plugins/setupwizard/resources/bttn-multi-up.png b/ground/openpilotgcs/src/plugins/setupwizard/resources/bttn-multi-up.png new file mode 100644 index 0000000000000000000000000000000000000000..882d6edfa23f33de14c746a0334d2be2f7e4f52c GIT binary patch literal 7872 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 literal 0 HcmV?d00001 diff --git a/ground/openpilotgcs/src/plugins/setupwizard/resources/bttn-plane-down.png b/ground/openpilotgcs/src/plugins/setupwizard/resources/bttn-plane-down.png new file mode 100644 index 0000000000000000000000000000000000000000..42bfddd28758f73deb0b9b2f5a49850588246cf5 GIT binary patch literal 3917 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 LT4G8JT*ChW*3;{I literal 0 HcmV?d00001 diff --git a/ground/openpilotgcs/src/plugins/setupwizard/resources/bttn-plane-over.png b/ground/openpilotgcs/src/plugins/setupwizard/resources/bttn-plane-over.png new file mode 100644 index 0000000000000000000000000000000000000000..d99efed99da4116fdf7192d311b63d9018e9cccb GIT binary patch literal 3900 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 QvvHrb#@peFEWASh2S51PrT_o{ literal 0 HcmV?d00001 diff --git a/ground/openpilotgcs/src/plugins/setupwizard/resources/bttn-plane-up.png b/ground/openpilotgcs/src/plugins/setupwizard/resources/bttn-plane-up.png new file mode 100644 index 0000000000000000000000000000000000000000..4ccb6567d4d2f02b0b8e7fcdbe2f45739b918909 GIT binary patch literal 4773 zcmbVQXH-*JyN-kop@>oyGNJb*)Pw*bKm-J&2~mm!2xTM$k^rF#sEG6?MG#N{8KsFx zQE7r8T~w+dy(tJvSL6#bE zWfacL0<2FW6ToUpDvGX97!0hgt^`w6Q&)#6fZZzYQdv1LFi~O41aO_8&(en#lT?( zhK4W$br>D3hea47G&KO z4(w9RI6WeofIU@TmJw>C*@QY#xFSeaDdLTf^k%JfIErbo2 z-eJ%-{Jg(0%dWQrKoZAPb1J2Hz~7PCMLUf>ZJE<%tax|0@!DZnrjWbSWcRbhJKypT z8+Uvp01^+lW20Y5N=cd9K78MAB$4{v=xx-s?pBv7o78~24Gl=I<-sDY&NJ@&RnZGP zs-kt*I0UW-d>UGTTV`H_w?;vcjf|)V{@8Za)R83$C%F5VnsUm?%UjypcdPUV0Qk#6CMU)gpM3FJfmoSj@76o> zRhuCYynAzc5;me}%AFQx=N?K^%Jlc#ZSD3eE_g|PX$uokbhaREGXrXNW-ANc|4N5{ zjl;glnp1|K!TYKd79v&n6eNP{aI5wo^#qB~a?u#cTqDp30L+oZUYZxGK8Ft3_KW(^ z*-B{@6^k{);O#inUBDUVqzcRItVUo1ZZYS@i%0w0D%YW?_Vwv0XW@jc%rhoSin!M~ zm=URbQ;hvN3{%)g31GXr%XIzmv2`I250~cVZ!{i}7ny2Xl9WQxd5qx(-n}Rx<`I*4 z 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 ajsd)E$|0q1k6k?aab#?0ZcvVKj`|O1U|=%< literal 0 HcmV?d00001 diff --git a/ground/openpilotgcs/src/plugins/setupwizard/wizardResources.qrc b/ground/openpilotgcs/src/plugins/setupwizard/wizardResources.qrc index 1358ce976..cb4e3d5a3 100644 --- a/ground/openpilotgcs/src/plugins/setupwizard/wizardResources.qrc +++ b/ground/openpilotgcs/src/plugins/setupwizard/wizardResources.qrc @@ -1,3 +1,16 @@ - + + resources/bttn-heli-down.png + resources/bttn-heli-over.png + resources/bttn-heli-up.png + resources/bttn-land-down.png + resources/bttn-land-over.png + resources/bttn-land-up.png + resources/bttn-multi-down.png + resources/bttn-multi-over.png + resources/bttn-multi-up.png + resources/bttn-plane-down.png + resources/bttn-plane-over.png + resources/bttn-plane-up.png + From 2b541219bf0f53fc02e1eede1aafd65345031961 Mon Sep 17 00:00:00 2001 From: Fredrik Arvidsson Date: Wed, 15 Aug 2012 01:04:54 +0200 Subject: [PATCH 005/105] OP-39 Added condition for multirotor type. If PWM input option is enable only up to Hex is selectable, otherwise Octo is selectable to. Added initial configuration code that applies the users choices in the UAVOs. Changed order of pages so that Input page comes before vehicle page. --- .../plugins/setupwizard/pages/flashpage.cpp | 1 + .../plugins/setupwizard/pages/flashpage.ui | 17 +- .../plugins/setupwizard/pages/multipage.cpp | 20 +- .../src/plugins/setupwizard/pages/multipage.h | 3 + .../src/plugins/setupwizard/setupwizard.cpp | 203 +++++++++++++++++- .../src/plugins/setupwizard/setupwizard.h | 29 ++- 6 files changed, 264 insertions(+), 9 deletions(-) diff --git a/ground/openpilotgcs/src/plugins/setupwizard/pages/flashpage.cpp b/ground/openpilotgcs/src/plugins/setupwizard/pages/flashpage.cpp index 452adaf02..713270d83 100644 --- a/ground/openpilotgcs/src/plugins/setupwizard/pages/flashpage.cpp +++ b/ground/openpilotgcs/src/plugins/setupwizard/pages/flashpage.cpp @@ -35,6 +35,7 @@ FlashPage::FlashPage(SetupWizard *wizard, QWidget *parent) : ui(new Ui::FlashPage) { ui->setupUi(this); + connect(ui->applyButton, SIGNAL(clicked()), wizard, SLOT(writeConfiguration())); } FlashPage::~FlashPage() diff --git a/ground/openpilotgcs/src/plugins/setupwizard/pages/flashpage.ui b/ground/openpilotgcs/src/plugins/setupwizard/pages/flashpage.ui index a354302b8..37929e802 100644 --- a/ground/openpilotgcs/src/plugins/setupwizard/pages/flashpage.ui +++ b/ground/openpilotgcs/src/plugins/setupwizard/pages/flashpage.ui @@ -45,9 +45,9 @@ p, li { white-space: pre-wrap; } 20 - 240 + 230 561 - 141 + 151 @@ -62,6 +62,19 @@ p, li { white-space: pre-wrap; } Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter + + + + 440 + 30 + 100 + 100 + + + + Apply + + diff --git a/ground/openpilotgcs/src/plugins/setupwizard/pages/multipage.cpp b/ground/openpilotgcs/src/plugins/setupwizard/pages/multipage.cpp index 56ffa5fb0..9963422ea 100644 --- a/ground/openpilotgcs/src/plugins/setupwizard/pages/multipage.cpp +++ b/ground/openpilotgcs/src/plugins/setupwizard/pages/multipage.cpp @@ -57,16 +57,23 @@ MultiPage::~MultiPage() void MultiPage::initializePage() { + updateAvailableTypes(); updateImageAndDescription(); } +bool MultiPage::validatePage() +{ + SetupWizard::VEHICLE_SUB_TYPE type = (SetupWizard::VEHICLE_SUB_TYPE) ui->typeCombo->itemData(ui->typeCombo->currentIndex()).toInt(); + getWizard()->setVehicleSubType(type); +} + void MultiPage::setupMultiTypesCombo() { ui->typeCombo->addItem("Tricopter", SetupWizard::MULTI_ROTOR_TRI_Y); ui->typeCombo->addItem("Quadcopter X", SetupWizard::MULTI_ROTOR_QUAD_X); ui->typeCombo->addItem("Quadcopter +", SetupWizard::MULTI_ROTOR_QUAD_PLUS); ui->typeCombo->addItem("Hexacopter", SetupWizard::MULTI_ROTOR_HEXA); - ui->typeCombo->addItem("Hexacopter Coax", SetupWizard::MULTI_ROTOR_HEXA_COAX_Y); + ui->typeCombo->addItem("Hexacopter Coax (Y6)", SetupWizard::MULTI_ROTOR_HEXA_COAX_Y); ui->typeCombo->addItem("Hexacopter H", SetupWizard::MULTI_ROTOR_HEXA_H); ui->typeCombo->addItem("Octocopter", SetupWizard::MULTI_ROTOR_OCTO); ui->typeCombo->addItem("Octocopter Coax X", SetupWizard::MULTI_ROTOR_OCTO_COAX_X); @@ -74,9 +81,18 @@ void MultiPage::setupMultiTypesCombo() ui->typeCombo->addItem("Octocopter V", SetupWizard::MULTI_ROTOR_OCTO_V); } +void MultiPage::updateAvailableTypes() +{ + QVariant enable = (getWizard()->getInputType() == SetupWizard::INPUT_PWM) ? QVariant(0) : QVariant(1 | 32); + ui->typeCombo->model()->setData(ui->typeCombo->model()->index(6, 0), enable, Qt::UserRole - 1); + ui->typeCombo->model()->setData(ui->typeCombo->model()->index(7, 0), enable, Qt::UserRole - 1); + ui->typeCombo->model()->setData(ui->typeCombo->model()->index(8, 0), enable, Qt::UserRole - 1); + ui->typeCombo->model()->setData(ui->typeCombo->model()->index(9, 0), enable, Qt::UserRole - 1); +} + void MultiPage::updateImageAndDescription() { - SetupWizard::MULTI_ROTOR_SUB_TYPE type = (SetupWizard::MULTI_ROTOR_SUB_TYPE) ui->typeCombo->itemData(ui->typeCombo->currentIndex()).toInt(); + SetupWizard::VEHICLE_SUB_TYPE type = (SetupWizard::VEHICLE_SUB_TYPE) ui->typeCombo->itemData(ui->typeCombo->currentIndex()).toInt(); QString elementId = ""; QString description = "Descriptive text with information about "; description.append(ui->typeCombo->currentText()); diff --git a/ground/openpilotgcs/src/plugins/setupwizard/pages/multipage.h b/ground/openpilotgcs/src/plugins/setupwizard/pages/multipage.h index bc9f822ad..0ffa84a36 100644 --- a/ground/openpilotgcs/src/plugins/setupwizard/pages/multipage.h +++ b/ground/openpilotgcs/src/plugins/setupwizard/pages/multipage.h @@ -46,11 +46,14 @@ public: ~MultiPage(); void initializePage(); + bool validatePage(); + private: Ui::MultiPage *ui; void setupMultiTypesCombo(); QGraphicsSvgItem *multiPic; + void updateAvailableTypes(); private slots: void updateImageAndDescription(); diff --git a/ground/openpilotgcs/src/plugins/setupwizard/setupwizard.cpp b/ground/openpilotgcs/src/plugins/setupwizard/setupwizard.cpp index f68c942ef..313623248 100644 --- a/ground/openpilotgcs/src/plugins/setupwizard/setupwizard.cpp +++ b/ground/openpilotgcs/src/plugins/setupwizard/setupwizard.cpp @@ -40,6 +40,11 @@ #include "pages/summarypage.h" #include "pages/flashpage.h" #include "pages/notyetimplementedpage.h" +#include "extensionsystem/pluginmanager.h" +#include "hwsettings.h" +#include "actuatorsettings.h" +#include "attitudesettings.h" + SetupWizard::SetupWizard(QWidget *parent) : QWizard(parent), m_controllerSelectionMode(CONTROLLER_SELECTION_UNKNOWN), m_controllerType(CONTROLLER_UNKNOWN), @@ -47,6 +52,7 @@ SetupWizard::SetupWizard(QWidget *parent) : QWizard(parent), m_levellingPerformed(false), m_connectionManager(0) { setWindowTitle("OpenPilot Setup Wizard"); + setOption(QWizard::IndependentPages, false); createPages(); } @@ -60,7 +66,7 @@ int SetupWizard::nextId() const { case CONTROLLER_CC: case CONTROLLER_CC3D: - return PAGE_VEHICLES; + return PAGE_INPUT; case CONTROLLER_REVO: case CONTROLLER_PIPX: default: @@ -83,9 +89,9 @@ int SetupWizard::nextId() const } } case PAGE_MULTI: - return PAGE_INPUT; - case PAGE_INPUT: return PAGE_OUTPUT; + case PAGE_INPUT: + return PAGE_VEHICLES; case PAGE_OUTPUT: { if(getControllerSelectionMode() == CONTROLLER_SELECTION_AUTOMATIC) { @@ -196,6 +202,197 @@ QString SetupWizard::getSummaryText() return summary; } +void SetupWizard::applyConfiguration() +{ + UAVObjectManager* uavoMgr = getUAVObjectManager(); + applyHardwareConfiguration(uavoMgr); + applyVehicleConfiguration(uavoMgr); + applyOutputConfiguration(uavoMgr); + applyLevellingConfiguration(uavoMgr); +} + +UAVObjectManager* SetupWizard::getUAVObjectManager() +{ + ExtensionSystem::PluginManager *pm = ExtensionSystem::PluginManager::instance(); + UAVObjectManager * uavObjectManager = pm->getObject(); + Q_ASSERT(uavObjectManager); + return uavObjectManager; +} + +void SetupWizard::applyHardwareConfiguration(UAVObjectManager* uavoMgr) +{ + HwSettings* hwSettings = HwSettings::GetInstance(uavoMgr); + + switch(getControllerType()) + { + case CONTROLLER_CC: + case CONTROLLER_CC3D: + // Reset all ports + hwSettings->setCC_RcvrPort(HwSettings::CC_RCVRPORT_DISABLED); + hwSettings->setCC_FlexiPort(HwSettings::CC_FLEXIPORT_DISABLED); + hwSettings->setCC_MainPort(HwSettings::CC_MAINPORT_DISABLED); + switch(getInputType()) + { + case INPUT_PWM: + hwSettings->setCC_RcvrPort(HwSettings::CC_RCVRPORT_PWM); + break; + case INPUT_PPM: + hwSettings->setCC_RcvrPort(HwSettings::CC_RCVRPORT_PPM); + break; + case INPUT_SBUS: + hwSettings->setCC_MainPort(HwSettings::CC_MAINPORT_SBUS); + break; + case INPUT_DSM: + // TODO: Handle all of the DSM types ?? Which is most common? + hwSettings->setCC_MainPort(HwSettings::CC_MAINPORT_DSM2); + break; + } + break; + case CONTROLLER_REVO: + // TODO: Implement Revo settings + break; + } +} + +void SetupWizard::applyVehicleConfiguration(UAVObjectManager *uavoMgr) +{ + + switch(getVehicleType()) + { + case VEHICLE_MULTI: + { + switch(getVehicleSubType()) + { + case SetupWizard::MULTI_ROTOR_TRI_Y: + setupTriCopter(uavoMgr); + break; + case SetupWizard::MULTI_ROTOR_QUAD_X: + case SetupWizard::MULTI_ROTOR_QUAD_PLUS: + setupQuadCopter(uavoMgr); + break; + case SetupWizard::MULTI_ROTOR_HEXA: + case SetupWizard::MULTI_ROTOR_HEXA_COAX_Y: + case SetupWizard::MULTI_ROTOR_HEXA_H: + setupHexaCopter(uavoMgr); + break; + case SetupWizard::MULTI_ROTOR_OCTO: + case SetupWizard::MULTI_ROTOR_OCTO_COAX_X: + case SetupWizard::MULTI_ROTOR_OCTO_COAX_PLUS: + case SetupWizard::MULTI_ROTOR_OCTO_V: + setupOctoCopter(uavoMgr); + break; + } + break; + } + case VEHICLE_FIXEDWING: + case VEHICLE_HELI: + case VEHICLE_SURFACE: + // TODO: Implement settings for other vehicle types? + break; + } +} + +void SetupWizard::applyOutputConfiguration(UAVObjectManager *uavoMgr) +{ + ActuatorSettings* actSettings = ActuatorSettings::GetInstance(uavoMgr); + switch(getVehicleType()) + { + case VEHICLE_MULTI: + { + actSettings->setChannelUpdateFreq(0, DEFAULT_ESC_FREQUENCE); + actSettings->setChannelUpdateFreq(1, DEFAULT_ESC_FREQUENCE); + actSettings->setChannelUpdateFreq(2, DEFAULT_ESC_FREQUENCE); + actSettings->setChannelUpdateFreq(3, DEFAULT_ESC_FREQUENCE); + + qint16 updateFrequence = DEFAULT_ESC_FREQUENCE; + switch(getESCType()) + { + case ESC_DEFAULT: + updateFrequence = DEFAULT_ESC_FREQUENCE; + break; + case ESC_RAPID: + updateFrequence = RAPID_ESC_FREQUENCE; + break; + } + + switch(getVehicleSubType()) + { + case SetupWizard::MULTI_ROTOR_TRI_Y: + actSettings->setChannelUpdateFreq(0, updateFrequence); + break; + case SetupWizard::MULTI_ROTOR_QUAD_X: + case SetupWizard::MULTI_ROTOR_QUAD_PLUS: + actSettings->setChannelUpdateFreq(0, updateFrequence); + actSettings->setChannelUpdateFreq(1, updateFrequence); + break; + case SetupWizard::MULTI_ROTOR_HEXA: + case SetupWizard::MULTI_ROTOR_HEXA_COAX_Y: + case SetupWizard::MULTI_ROTOR_HEXA_H: + case SetupWizard::MULTI_ROTOR_OCTO: + case SetupWizard::MULTI_ROTOR_OCTO_COAX_X: + case SetupWizard::MULTI_ROTOR_OCTO_COAX_PLUS: + case SetupWizard::MULTI_ROTOR_OCTO_V: + actSettings->setChannelUpdateFreq(0, updateFrequence); + actSettings->setChannelUpdateFreq(1, updateFrequence); + actSettings->setChannelUpdateFreq(2, updateFrequence); + actSettings->setChannelUpdateFreq(3, updateFrequence); + break; + } + break; + } + case VEHICLE_FIXEDWING: + case VEHICLE_HELI: + case VEHICLE_SURFACE: + // TODO: Implement settings for other vehicle types? + break; + } +} + +void SetupWizard::applyLevellingConfiguration(UAVObjectManager *uavoMgr) +{ + if(isLevellingPerformed()) + { + accelGyroBias bias = getLevellingBias(); + AttitudeSettings::DataFields attitudeSettingsData = AttitudeSettings::GetInstance(uavoMgr)->getData(); + attitudeSettingsData.AccelBias[0] += bias.m_accelerometerXBias; + attitudeSettingsData.AccelBias[1] += bias.m_accelerometerYBias; + attitudeSettingsData.AccelBias[2] += bias.m_accelerometerZBias; + attitudeSettingsData.GyroBias[0] = -bias.m_gyroXBias; + attitudeSettingsData.GyroBias[1] = -bias.m_gyroYBias; + attitudeSettingsData.GyroBias[2] = -bias.m_gyroZBias; + AttitudeSettings::GetInstance(uavoMgr)->setData(attitudeSettingsData); + } +} + +void SetupWizard::setupTriCopter(UAVObjectManager *uavoMgr) +{ + +} + +void SetupWizard::setupQuadCopter(UAVObjectManager *uavoMgr) +{ +} + +void SetupWizard::setupHexaCopter(UAVObjectManager *uavoMgr) +{ +} + +void SetupWizard::setupOctoCopter(UAVObjectManager *uavoMgr) +{ +} + +void SetupWizard::exportConfiguration() +{ + applyConfiguration(); + // Call export configuration function... +} + +void SetupWizard::writeConfiguration() +{ + applyConfiguration(); + // Call Save UAVOs to controller +} + void SetupWizard::createPages() { setPage(PAGE_START, new StartPage(this)); diff --git a/ground/openpilotgcs/src/plugins/setupwizard/setupwizard.h b/ground/openpilotgcs/src/plugins/setupwizard/setupwizard.h index b88f5e4c9..55246afa0 100644 --- a/ground/openpilotgcs/src/plugins/setupwizard/setupwizard.h +++ b/ground/openpilotgcs/src/plugins/setupwizard/setupwizard.h @@ -32,6 +32,8 @@ #include "levellingutil.h" #include #include +#include "uavobjectmanager.h" + class SetupWizard : public QWizard { @@ -43,9 +45,10 @@ public: enum CONTROLLER_SELECTION_MODE {CONTROLLER_SELECTION_AUTOMATIC, CONTROLLER_SELECTION_MANUAL, CONTROLLER_SELECTION_UNKNOWN}; enum CONTROLLER_TYPE {CONTROLLER_UNKNOWN, CONTROLLER_CC, CONTROLLER_CC3D, CONTROLLER_REVO, CONTROLLER_PIPX}; enum VEHICLE_TYPE {VEHICLE_UNKNOWN, VEHICLE_MULTI, VEHICLE_FIXEDWING, VEHICLE_HELI, VEHICLE_SURFACE}; - enum MULTI_ROTOR_SUB_TYPE {MULTI_ROTOR_UNKNOWN, MULTI_ROTOR_TRI_Y, MULTI_ROTOR_QUAD_X, MULTI_ROTOR_QUAD_PLUS, + enum VEHICLE_SUB_TYPE {MULTI_ROTOR_UNKNOWN, MULTI_ROTOR_TRI_Y, MULTI_ROTOR_QUAD_X, MULTI_ROTOR_QUAD_PLUS, MULTI_ROTOR_HEXA, MULTI_ROTOR_HEXA_H, MULTI_ROTOR_HEXA_COAX_Y, MULTI_ROTOR_OCTO, - MULTI_ROTOR_OCTO_V, MULTI_ROTOR_OCTO_COAX_X, MULTI_ROTOR_OCTO_COAX_PLUS}; + MULTI_ROTOR_OCTO_V, MULTI_ROTOR_OCTO_COAX_X, MULTI_ROTOR_OCTO_COAX_PLUS, FIXED_WING_AILERON, + FIXED_WING_VTAIL, HELI_CCPM}; enum ESC_TYPE {ESC_DEFAULT, ESC_RAPID, ESC_UNKNOWN}; enum INPUT_TYPE {INPUT_PWM, INPUT_PPM, INPUT_SBUS, INPUT_DSM, INPUT_UNKNOWN}; @@ -58,6 +61,9 @@ public: void setVehicleType(SetupWizard::VEHICLE_TYPE type) { m_vehicleType = type; } SetupWizard::VEHICLE_TYPE getVehicleType() const { return m_vehicleType; } + void setVehicleSubType(SetupWizard::VEHICLE_SUB_TYPE type) { m_vehicleSubType = type; } + SetupWizard::VEHICLE_SUB_TYPE getVehicleSubType() const { return m_vehicleSubType; } + void setInputType(SetupWizard::INPUT_TYPE type) { m_inputType = type; } SetupWizard::INPUT_TYPE getInputType() const { return m_inputType; } @@ -78,8 +84,14 @@ public: } return m_connectionManager; } +public slots: + void exportConfiguration(); + void writeConfiguration(); private: + static const qint16 DEFAULT_ESC_FREQUENCE = 50; + static const qint16 RAPID_ESC_FREQUENCE = 50; + enum {PAGE_START, PAGE_CONTROLLER, PAGE_VEHICLES, PAGE_MULTI, PAGE_FIXEDWING, PAGE_HELI, PAGE_SURFACE, PAGE_INPUT, PAGE_OUTPUT, PAGE_LEVELLING, PAGE_FLASH, PAGE_SUMMARY, PAGE_NOTYETIMPLEMENTED, PAGE_END}; @@ -88,6 +100,7 @@ private: CONTROLLER_SELECTION_MODE m_controllerSelectionMode; CONTROLLER_TYPE m_controllerType; VEHICLE_TYPE m_vehicleType; + VEHICLE_SUB_TYPE m_vehicleSubType; INPUT_TYPE m_inputType; ESC_TYPE m_escType; bool m_levellingPerformed; @@ -95,6 +108,18 @@ private: Core::ConnectionManager *m_connectionManager; + UAVObjectManager *getUAVObjectManager(); + + void applyConfiguration(); + void applyHardwareConfiguration(UAVObjectManager *uavoMgr); + void applyVehicleConfiguration(UAVObjectManager *uavoMgr); + void applyOutputConfiguration(UAVObjectManager *uavoMgr); + void applyLevellingConfiguration(UAVObjectManager *uavoMgr); + + void setupTriCopter(UAVObjectManager *uavoMgr); + void setupQuadCopter(UAVObjectManager *uavoMgr); + void setupHexaCopter(UAVObjectManager *uavoMgr); + void setupOctoCopter(UAVObjectManager *uavoMgr); }; #endif // SETUPWIZARD_H From 16d0252d12e30810d59d0405b85cf0757cf72cfe Mon Sep 17 00:00:00 2001 From: Fredrik Arvidsson Date: Thu, 16 Aug 2012 00:27:40 +0200 Subject: [PATCH 006/105] OP-39 Added some basic code to reset the mixers. Started to implement mixer configuration for all multirotors. --- .../src/plugins/setupwizard/setupwizard.cpp | 83 ++++++++++++++----- .../src/plugins/setupwizard/setupwizard.h | 6 +- 2 files changed, 68 insertions(+), 21 deletions(-) diff --git a/ground/openpilotgcs/src/plugins/setupwizard/setupwizard.cpp b/ground/openpilotgcs/src/plugins/setupwizard/setupwizard.cpp index 313623248..7fdcc921c 100644 --- a/ground/openpilotgcs/src/plugins/setupwizard/setupwizard.cpp +++ b/ground/openpilotgcs/src/plugins/setupwizard/setupwizard.cpp @@ -45,7 +45,6 @@ #include "actuatorsettings.h" #include "attitudesettings.h" - SetupWizard::SetupWizard(QWidget *parent) : QWizard(parent), m_controllerSelectionMode(CONTROLLER_SELECTION_UNKNOWN), m_controllerType(CONTROLLER_UNKNOWN), m_vehicleType(VEHICLE_UNKNOWN), m_inputType(INPUT_UNKNOWN), m_escType(ESC_UNKNOWN), @@ -222,29 +221,29 @@ UAVObjectManager* SetupWizard::getUAVObjectManager() void SetupWizard::applyHardwareConfiguration(UAVObjectManager* uavoMgr) { HwSettings* hwSettings = HwSettings::GetInstance(uavoMgr); - + HwSettings::DataFields data = hwSettings->getData(); switch(getControllerType()) { case CONTROLLER_CC: case CONTROLLER_CC3D: // Reset all ports - hwSettings->setCC_RcvrPort(HwSettings::CC_RCVRPORT_DISABLED); - hwSettings->setCC_FlexiPort(HwSettings::CC_FLEXIPORT_DISABLED); - hwSettings->setCC_MainPort(HwSettings::CC_MAINPORT_DISABLED); + data.CC_RcvrPort = HwSettings::CC_RCVRPORT_DISABLED; + data.CC_FlexiPort = HwSettings::CC_FLEXIPORT_DISABLED; + data.CC_MainPort = HwSettings::CC_MAINPORT_DISABLED; switch(getInputType()) { case INPUT_PWM: - hwSettings->setCC_RcvrPort(HwSettings::CC_RCVRPORT_PWM); + data.CC_RcvrPort = HwSettings::CC_RCVRPORT_PWM; break; case INPUT_PPM: - hwSettings->setCC_RcvrPort(HwSettings::CC_RCVRPORT_PPM); + data.CC_RcvrPort = HwSettings::CC_RCVRPORT_PPM; break; case INPUT_SBUS: - hwSettings->setCC_MainPort(HwSettings::CC_MAINPORT_SBUS); + data.CC_MainPort = HwSettings::CC_MAINPORT_SBUS; break; case INPUT_DSM: // TODO: Handle all of the DSM types ?? Which is most common? - hwSettings->setCC_MainPort(HwSettings::CC_MAINPORT_DSM2); + data.CC_MainPort = HwSettings::CC_MAINPORT_DSM2; break; } break; @@ -252,6 +251,7 @@ void SetupWizard::applyHardwareConfiguration(UAVObjectManager* uavoMgr) // TODO: Implement Revo settings break; } + hwSettings->setData(data); } void SetupWizard::applyVehicleConfiguration(UAVObjectManager *uavoMgr) @@ -261,6 +261,8 @@ void SetupWizard::applyVehicleConfiguration(UAVObjectManager *uavoMgr) { case VEHICLE_MULTI: { + resetVehicleConfig(uavoMgr); + switch(getVehicleSubType()) { case SetupWizard::MULTI_ROTOR_TRI_Y: @@ -299,10 +301,12 @@ void SetupWizard::applyOutputConfiguration(UAVObjectManager *uavoMgr) { case VEHICLE_MULTI: { - actSettings->setChannelUpdateFreq(0, DEFAULT_ESC_FREQUENCE); - actSettings->setChannelUpdateFreq(1, DEFAULT_ESC_FREQUENCE); - actSettings->setChannelUpdateFreq(2, DEFAULT_ESC_FREQUENCE); - actSettings->setChannelUpdateFreq(3, DEFAULT_ESC_FREQUENCE); + ActuatorSettings::DataFields data = actSettings->getData(); + + data.ChannelUpdateFreq[0] = DEFAULT_ESC_FREQUENCE; + data.ChannelUpdateFreq[1] = DEFAULT_ESC_FREQUENCE; + data.ChannelUpdateFreq[3] = DEFAULT_ESC_FREQUENCE; + data.ChannelUpdateFreq[4] = DEFAULT_ESC_FREQUENCE; qint16 updateFrequence = DEFAULT_ESC_FREQUENCE; switch(getESCType()) @@ -318,12 +322,12 @@ void SetupWizard::applyOutputConfiguration(UAVObjectManager *uavoMgr) switch(getVehicleSubType()) { case SetupWizard::MULTI_ROTOR_TRI_Y: - actSettings->setChannelUpdateFreq(0, updateFrequence); + data.ChannelUpdateFreq[0] = updateFrequence; break; case SetupWizard::MULTI_ROTOR_QUAD_X: case SetupWizard::MULTI_ROTOR_QUAD_PLUS: - actSettings->setChannelUpdateFreq(0, updateFrequence); - actSettings->setChannelUpdateFreq(1, updateFrequence); + data.ChannelUpdateFreq[0] = updateFrequence; + data.ChannelUpdateFreq[1] = updateFrequence; break; case SetupWizard::MULTI_ROTOR_HEXA: case SetupWizard::MULTI_ROTOR_HEXA_COAX_Y: @@ -332,12 +336,13 @@ void SetupWizard::applyOutputConfiguration(UAVObjectManager *uavoMgr) case SetupWizard::MULTI_ROTOR_OCTO_COAX_X: case SetupWizard::MULTI_ROTOR_OCTO_COAX_PLUS: case SetupWizard::MULTI_ROTOR_OCTO_V: - actSettings->setChannelUpdateFreq(0, updateFrequence); - actSettings->setChannelUpdateFreq(1, updateFrequence); - actSettings->setChannelUpdateFreq(2, updateFrequence); - actSettings->setChannelUpdateFreq(3, updateFrequence); + data.ChannelUpdateFreq[0] = updateFrequence; + data.ChannelUpdateFreq[1] = updateFrequence; + data.ChannelUpdateFreq[3] = updateFrequence; + data.ChannelUpdateFreq[4] = updateFrequence; break; } + actSettings->setData(data); break; } case VEHICLE_FIXEDWING: @@ -364,8 +369,46 @@ void SetupWizard::applyLevellingConfiguration(UAVObjectManager *uavoMgr) } } + +void SetupWizard::resetVehicleConfig(UAVObjectManager *uavoMgr) +{ + // Reset all mixers + MixerSettings* mSettings = MixerSettings::GetInstance(uavoMgr); + + QString mixerTypePattern = "Mixer%1Type"; + QString mixerVectorPattern = "Mixer%1Vector"; + for(int i = 1; i <= 10; i++) { + UAVObjectField *field = mSettings->getField(mixerTypePattern.arg(i)); + Q_ASSERT(field); + field->setValue(field->getOptions().at(0)); + + field = mSettings->getField(mixerVectorPattern.arg(i)); + Q_ASSERT(field); + for(int i = 0; i < field->getNumElements(); i++){ + field->setValue(0, i); + } + } + mSettings->setData(mSettings->getData()); + +} + + void SetupWizard::setupTriCopter(UAVObjectManager *uavoMgr) { + // Typical vehicle setup + // 1. Setup and apply mixer + // 2. Setup GUI data + + double mixer [8][3] = { + { 0.5, 1, 0}, + { 0.5, -1, 0}, + { -1, 0, 0}, + { 0, 0, 0}, + { 0, 0, 0}, + { 0, 0, 0}, + { 0, 0, 0}, + { 0, 0, 0} + }; } diff --git a/ground/openpilotgcs/src/plugins/setupwizard/setupwizard.h b/ground/openpilotgcs/src/plugins/setupwizard/setupwizard.h index 55246afa0..4fcd97422 100644 --- a/ground/openpilotgcs/src/plugins/setupwizard/setupwizard.h +++ b/ground/openpilotgcs/src/plugins/setupwizard/setupwizard.h @@ -33,6 +33,7 @@ #include #include #include "uavobjectmanager.h" +#include "mixersettings.h" class SetupWizard : public QWizard @@ -90,7 +91,7 @@ public slots: private: static const qint16 DEFAULT_ESC_FREQUENCE = 50; - static const qint16 RAPID_ESC_FREQUENCE = 50; + static const qint16 RAPID_ESC_FREQUENCE = 400; enum {PAGE_START, PAGE_CONTROLLER, PAGE_VEHICLES, PAGE_MULTI, PAGE_FIXEDWING, PAGE_HELI, PAGE_SURFACE, PAGE_INPUT, PAGE_OUTPUT, PAGE_LEVELLING, @@ -116,6 +117,9 @@ private: void applyOutputConfiguration(UAVObjectManager *uavoMgr); void applyLevellingConfiguration(UAVObjectManager *uavoMgr); + void resetVehicleConfig(UAVObjectManager *uavoMgr); + void resetMixerVectors(MixerSettings::DataFields data, qint8 channelIndex); + void setupTriCopter(UAVObjectManager *uavoMgr); void setupQuadCopter(UAVObjectManager *uavoMgr); void setupHexaCopter(UAVObjectManager *uavoMgr); From 98b5bc305b6537f5d98f50c3f518ccf022b8bc35 Mon Sep 17 00:00:00 2001 From: Fredrik Arvidsson Date: Fri, 17 Aug 2012 00:47:31 +0200 Subject: [PATCH 007/105] OP-39 Re-factored the configuration code to be implemented in a separate helper class to enable it to be used in a better and more stand alone way. The actual wizard class does not contain any uavo configuration code at all now. Added an interface that provides all configuration parameters for a vehicle. Changed the default ESC to Rapid instead of Default 50Hz. Default ESC was renamed to Legacy ESC. Started to implement mixer configuration. Started to implement flight mode configuration code. Cleaned up some code and removed warnings. --- .../src/plugins/setupwizard/levellingutil.h | 11 +- .../plugins/setupwizard/pages/outputpage.cpp | 2 +- .../plugins/setupwizard/pages/outputpage.ui | 11 +- .../src/plugins/setupwizard/setupwizard.cpp | 244 +------------- .../src/plugins/setupwizard/setupwizard.h | 34 +- .../src/plugins/setupwizard/setupwizard.pro | 8 +- .../vehicleconfigurationhelper.cpp | 298 ++++++++++++++++++ .../setupwizard/vehicleconfigurationhelper.h | 80 +++++ .../vehicleconfigurationsource.cpp | 32 ++ .../setupwizard/vehicleconfigurationsource.h | 72 +++++ 10 files changed, 506 insertions(+), 286 deletions(-) create mode 100644 ground/openpilotgcs/src/plugins/setupwizard/vehicleconfigurationhelper.cpp create mode 100644 ground/openpilotgcs/src/plugins/setupwizard/vehicleconfigurationhelper.h create mode 100644 ground/openpilotgcs/src/plugins/setupwizard/vehicleconfigurationsource.cpp create mode 100644 ground/openpilotgcs/src/plugins/setupwizard/vehicleconfigurationsource.h diff --git a/ground/openpilotgcs/src/plugins/setupwizard/levellingutil.h b/ground/openpilotgcs/src/plugins/setupwizard/levellingutil.h index 0db8a23c0..fb8ffcdce 100644 --- a/ground/openpilotgcs/src/plugins/setupwizard/levellingutil.h +++ b/ground/openpilotgcs/src/plugins/setupwizard/levellingutil.h @@ -33,16 +33,7 @@ #include #include "uavobject.h" - -struct accelGyroBias { - float m_accelerometerXBias; - float m_accelerometerYBias; - float m_accelerometerZBias; - - float m_gyroXBias; - float m_gyroYBias; - float m_gyroZBias; -}; +#include "vehicleconfigurationsource.h" class LevellingUtil : public QObject { diff --git a/ground/openpilotgcs/src/plugins/setupwizard/pages/outputpage.cpp b/ground/openpilotgcs/src/plugins/setupwizard/pages/outputpage.cpp index 3e7313c37..d9903af57 100644 --- a/ground/openpilotgcs/src/plugins/setupwizard/pages/outputpage.cpp +++ b/ground/openpilotgcs/src/plugins/setupwizard/pages/outputpage.cpp @@ -48,7 +48,7 @@ bool OutputPage::validatePage() getWizard()->setESCType(SetupWizard::ESC_RAPID); } else { - getWizard()->setESCType(SetupWizard::ESC_DEFAULT); + getWizard()->setESCType(SetupWizard::ESC_LEGACY); } return true; diff --git a/ground/openpilotgcs/src/plugins/setupwizard/pages/outputpage.ui b/ground/openpilotgcs/src/plugins/setupwizard/pages/outputpage.ui index 37a5a9bb5..7b290cece 100644 --- a/ground/openpilotgcs/src/plugins/setupwizard/pages/outputpage.ui +++ b/ground/openpilotgcs/src/plugins/setupwizard/pages/outputpage.ui @@ -64,7 +64,7 @@ p, li { white-space: pre-wrap; } - 50 + 160 40 100 100 @@ -74,14 +74,14 @@ p, li { white-space: pre-wrap; } Tricopter, Quadcopter, Hexacopter, Octocopter - Default ESC + Legacy ESC 50 Hz true - true + false true @@ -93,7 +93,7 @@ p, li { white-space: pre-wrap; } - 170 + 30 40 100 100 @@ -109,6 +109,9 @@ p, li { white-space: pre-wrap; } true + + true + true diff --git a/ground/openpilotgcs/src/plugins/setupwizard/setupwizard.cpp b/ground/openpilotgcs/src/plugins/setupwizard/setupwizard.cpp index 7fdcc921c..0dc44c62d 100644 --- a/ground/openpilotgcs/src/plugins/setupwizard/setupwizard.cpp +++ b/ground/openpilotgcs/src/plugins/setupwizard/setupwizard.cpp @@ -41,11 +41,9 @@ #include "pages/flashpage.h" #include "pages/notyetimplementedpage.h" #include "extensionsystem/pluginmanager.h" -#include "hwsettings.h" -#include "actuatorsettings.h" -#include "attitudesettings.h" +#include "vehicleconfigurationhelper.h" -SetupWizard::SetupWizard(QWidget *parent) : QWizard(parent), +SetupWizard::SetupWizard(QWidget *parent) : QWizard(parent), VehicleConfigurationSource(), m_controllerSelectionMode(CONTROLLER_SELECTION_UNKNOWN), m_controllerType(CONTROLLER_UNKNOWN), m_vehicleType(VEHICLE_UNKNOWN), m_inputType(INPUT_UNKNOWN), m_escType(ESC_UNKNOWN), m_levellingPerformed(false), m_connectionManager(0) @@ -179,8 +177,8 @@ QString SetupWizard::getSummaryText() summary.append(tr("ESC type: ")); switch (getESCType()) { - case ESC_DEFAULT: - summary.append(tr("Default ESC (50 Hz)")); + case ESC_LEGACY: + summary.append(tr("Legacy ESC (50 Hz)")); break; case ESC_RAPID: summary.append(tr("Rapid ESC (400 Hz)")); @@ -201,239 +199,11 @@ QString SetupWizard::getSummaryText() return summary; } -void SetupWizard::applyConfiguration() -{ - UAVObjectManager* uavoMgr = getUAVObjectManager(); - applyHardwareConfiguration(uavoMgr); - applyVehicleConfiguration(uavoMgr); - applyOutputConfiguration(uavoMgr); - applyLevellingConfiguration(uavoMgr); -} - -UAVObjectManager* SetupWizard::getUAVObjectManager() -{ - ExtensionSystem::PluginManager *pm = ExtensionSystem::PluginManager::instance(); - UAVObjectManager * uavObjectManager = pm->getObject(); - Q_ASSERT(uavObjectManager); - return uavObjectManager; -} - -void SetupWizard::applyHardwareConfiguration(UAVObjectManager* uavoMgr) -{ - HwSettings* hwSettings = HwSettings::GetInstance(uavoMgr); - HwSettings::DataFields data = hwSettings->getData(); - switch(getControllerType()) - { - case CONTROLLER_CC: - case CONTROLLER_CC3D: - // Reset all ports - data.CC_RcvrPort = HwSettings::CC_RCVRPORT_DISABLED; - data.CC_FlexiPort = HwSettings::CC_FLEXIPORT_DISABLED; - data.CC_MainPort = HwSettings::CC_MAINPORT_DISABLED; - switch(getInputType()) - { - case INPUT_PWM: - data.CC_RcvrPort = HwSettings::CC_RCVRPORT_PWM; - break; - case INPUT_PPM: - data.CC_RcvrPort = HwSettings::CC_RCVRPORT_PPM; - break; - case INPUT_SBUS: - data.CC_MainPort = HwSettings::CC_MAINPORT_SBUS; - break; - case INPUT_DSM: - // TODO: Handle all of the DSM types ?? Which is most common? - data.CC_MainPort = HwSettings::CC_MAINPORT_DSM2; - break; - } - break; - case CONTROLLER_REVO: - // TODO: Implement Revo settings - break; - } - hwSettings->setData(data); -} - -void SetupWizard::applyVehicleConfiguration(UAVObjectManager *uavoMgr) -{ - - switch(getVehicleType()) - { - case VEHICLE_MULTI: - { - resetVehicleConfig(uavoMgr); - - switch(getVehicleSubType()) - { - case SetupWizard::MULTI_ROTOR_TRI_Y: - setupTriCopter(uavoMgr); - break; - case SetupWizard::MULTI_ROTOR_QUAD_X: - case SetupWizard::MULTI_ROTOR_QUAD_PLUS: - setupQuadCopter(uavoMgr); - break; - case SetupWizard::MULTI_ROTOR_HEXA: - case SetupWizard::MULTI_ROTOR_HEXA_COAX_Y: - case SetupWizard::MULTI_ROTOR_HEXA_H: - setupHexaCopter(uavoMgr); - break; - case SetupWizard::MULTI_ROTOR_OCTO: - case SetupWizard::MULTI_ROTOR_OCTO_COAX_X: - case SetupWizard::MULTI_ROTOR_OCTO_COAX_PLUS: - case SetupWizard::MULTI_ROTOR_OCTO_V: - setupOctoCopter(uavoMgr); - break; - } - break; - } - case VEHICLE_FIXEDWING: - case VEHICLE_HELI: - case VEHICLE_SURFACE: - // TODO: Implement settings for other vehicle types? - break; - } -} - -void SetupWizard::applyOutputConfiguration(UAVObjectManager *uavoMgr) -{ - ActuatorSettings* actSettings = ActuatorSettings::GetInstance(uavoMgr); - switch(getVehicleType()) - { - case VEHICLE_MULTI: - { - ActuatorSettings::DataFields data = actSettings->getData(); - - data.ChannelUpdateFreq[0] = DEFAULT_ESC_FREQUENCE; - data.ChannelUpdateFreq[1] = DEFAULT_ESC_FREQUENCE; - data.ChannelUpdateFreq[3] = DEFAULT_ESC_FREQUENCE; - data.ChannelUpdateFreq[4] = DEFAULT_ESC_FREQUENCE; - - qint16 updateFrequence = DEFAULT_ESC_FREQUENCE; - switch(getESCType()) - { - case ESC_DEFAULT: - updateFrequence = DEFAULT_ESC_FREQUENCE; - break; - case ESC_RAPID: - updateFrequence = RAPID_ESC_FREQUENCE; - break; - } - - switch(getVehicleSubType()) - { - case SetupWizard::MULTI_ROTOR_TRI_Y: - data.ChannelUpdateFreq[0] = updateFrequence; - break; - case SetupWizard::MULTI_ROTOR_QUAD_X: - case SetupWizard::MULTI_ROTOR_QUAD_PLUS: - data.ChannelUpdateFreq[0] = updateFrequence; - data.ChannelUpdateFreq[1] = updateFrequence; - break; - case SetupWizard::MULTI_ROTOR_HEXA: - case SetupWizard::MULTI_ROTOR_HEXA_COAX_Y: - case SetupWizard::MULTI_ROTOR_HEXA_H: - case SetupWizard::MULTI_ROTOR_OCTO: - case SetupWizard::MULTI_ROTOR_OCTO_COAX_X: - case SetupWizard::MULTI_ROTOR_OCTO_COAX_PLUS: - case SetupWizard::MULTI_ROTOR_OCTO_V: - data.ChannelUpdateFreq[0] = updateFrequence; - data.ChannelUpdateFreq[1] = updateFrequence; - data.ChannelUpdateFreq[3] = updateFrequence; - data.ChannelUpdateFreq[4] = updateFrequence; - break; - } - actSettings->setData(data); - break; - } - case VEHICLE_FIXEDWING: - case VEHICLE_HELI: - case VEHICLE_SURFACE: - // TODO: Implement settings for other vehicle types? - break; - } -} - -void SetupWizard::applyLevellingConfiguration(UAVObjectManager *uavoMgr) -{ - if(isLevellingPerformed()) - { - accelGyroBias bias = getLevellingBias(); - AttitudeSettings::DataFields attitudeSettingsData = AttitudeSettings::GetInstance(uavoMgr)->getData(); - attitudeSettingsData.AccelBias[0] += bias.m_accelerometerXBias; - attitudeSettingsData.AccelBias[1] += bias.m_accelerometerYBias; - attitudeSettingsData.AccelBias[2] += bias.m_accelerometerZBias; - attitudeSettingsData.GyroBias[0] = -bias.m_gyroXBias; - attitudeSettingsData.GyroBias[1] = -bias.m_gyroYBias; - attitudeSettingsData.GyroBias[2] = -bias.m_gyroZBias; - AttitudeSettings::GetInstance(uavoMgr)->setData(attitudeSettingsData); - } -} - - -void SetupWizard::resetVehicleConfig(UAVObjectManager *uavoMgr) -{ - // Reset all mixers - MixerSettings* mSettings = MixerSettings::GetInstance(uavoMgr); - - QString mixerTypePattern = "Mixer%1Type"; - QString mixerVectorPattern = "Mixer%1Vector"; - for(int i = 1; i <= 10; i++) { - UAVObjectField *field = mSettings->getField(mixerTypePattern.arg(i)); - Q_ASSERT(field); - field->setValue(field->getOptions().at(0)); - - field = mSettings->getField(mixerVectorPattern.arg(i)); - Q_ASSERT(field); - for(int i = 0; i < field->getNumElements(); i++){ - field->setValue(0, i); - } - } - mSettings->setData(mSettings->getData()); - -} - - -void SetupWizard::setupTriCopter(UAVObjectManager *uavoMgr) -{ - // Typical vehicle setup - // 1. Setup and apply mixer - // 2. Setup GUI data - - double mixer [8][3] = { - { 0.5, 1, 0}, - { 0.5, -1, 0}, - { -1, 0, 0}, - { 0, 0, 0}, - { 0, 0, 0}, - { 0, 0, 0}, - { 0, 0, 0}, - { 0, 0, 0} - }; - -} - -void SetupWizard::setupQuadCopter(UAVObjectManager *uavoMgr) -{ -} - -void SetupWizard::setupHexaCopter(UAVObjectManager *uavoMgr) -{ -} - -void SetupWizard::setupOctoCopter(UAVObjectManager *uavoMgr) -{ -} - -void SetupWizard::exportConfiguration() -{ - applyConfiguration(); - // Call export configuration function... -} - void SetupWizard::writeConfiguration() { - applyConfiguration(); - // Call Save UAVOs to controller + VehicleConfigurationHelper *helper = new VehicleConfigurationHelper(this); + Q_ASSERT(helper); + helper->setupVehicle(); } void SetupWizard::createPages() diff --git a/ground/openpilotgcs/src/plugins/setupwizard/setupwizard.h b/ground/openpilotgcs/src/plugins/setupwizard/setupwizard.h index 4fcd97422..566ec46ab 100644 --- a/ground/openpilotgcs/src/plugins/setupwizard/setupwizard.h +++ b/ground/openpilotgcs/src/plugins/setupwizard/setupwizard.h @@ -32,26 +32,16 @@ #include "levellingutil.h" #include #include -#include "uavobjectmanager.h" -#include "mixersettings.h" +#include "vehicleconfigurationsource.h" -class SetupWizard : public QWizard +class SetupWizard : public QWizard, public VehicleConfigurationSource { Q_OBJECT public: SetupWizard(QWidget *parent = 0); int nextId() const; - enum CONTROLLER_SELECTION_MODE {CONTROLLER_SELECTION_AUTOMATIC, CONTROLLER_SELECTION_MANUAL, CONTROLLER_SELECTION_UNKNOWN}; - enum CONTROLLER_TYPE {CONTROLLER_UNKNOWN, CONTROLLER_CC, CONTROLLER_CC3D, CONTROLLER_REVO, CONTROLLER_PIPX}; - enum VEHICLE_TYPE {VEHICLE_UNKNOWN, VEHICLE_MULTI, VEHICLE_FIXEDWING, VEHICLE_HELI, VEHICLE_SURFACE}; - enum VEHICLE_SUB_TYPE {MULTI_ROTOR_UNKNOWN, MULTI_ROTOR_TRI_Y, MULTI_ROTOR_QUAD_X, MULTI_ROTOR_QUAD_PLUS, - MULTI_ROTOR_HEXA, MULTI_ROTOR_HEXA_H, MULTI_ROTOR_HEXA_COAX_Y, MULTI_ROTOR_OCTO, - MULTI_ROTOR_OCTO_V, MULTI_ROTOR_OCTO_COAX_X, MULTI_ROTOR_OCTO_COAX_PLUS, FIXED_WING_AILERON, - FIXED_WING_VTAIL, HELI_CCPM}; - enum ESC_TYPE {ESC_DEFAULT, ESC_RAPID, ESC_UNKNOWN}; - enum INPUT_TYPE {INPUT_PWM, INPUT_PPM, INPUT_SBUS, INPUT_DSM, INPUT_UNKNOWN}; void setControllerSelectionMode(SetupWizard::CONTROLLER_SELECTION_MODE mode) { m_controllerSelectionMode = mode; } SetupWizard::CONTROLLER_SELECTION_MODE getControllerSelectionMode() const { return m_controllerSelectionMode; } @@ -86,13 +76,9 @@ public: return m_connectionManager; } public slots: - void exportConfiguration(); void writeConfiguration(); private: - static const qint16 DEFAULT_ESC_FREQUENCE = 50; - static const qint16 RAPID_ESC_FREQUENCE = 400; - enum {PAGE_START, PAGE_CONTROLLER, PAGE_VEHICLES, PAGE_MULTI, PAGE_FIXEDWING, PAGE_HELI, PAGE_SURFACE, PAGE_INPUT, PAGE_OUTPUT, PAGE_LEVELLING, PAGE_FLASH, PAGE_SUMMARY, PAGE_NOTYETIMPLEMENTED, PAGE_END}; @@ -108,22 +94,6 @@ private: accelGyroBias m_levellingBias; Core::ConnectionManager *m_connectionManager; - - UAVObjectManager *getUAVObjectManager(); - - void applyConfiguration(); - void applyHardwareConfiguration(UAVObjectManager *uavoMgr); - void applyVehicleConfiguration(UAVObjectManager *uavoMgr); - void applyOutputConfiguration(UAVObjectManager *uavoMgr); - void applyLevellingConfiguration(UAVObjectManager *uavoMgr); - - void resetVehicleConfig(UAVObjectManager *uavoMgr); - void resetMixerVectors(MixerSettings::DataFields data, qint8 channelIndex); - - void setupTriCopter(UAVObjectManager *uavoMgr); - void setupQuadCopter(UAVObjectManager *uavoMgr); - void setupHexaCopter(UAVObjectManager *uavoMgr); - void setupOctoCopter(UAVObjectManager *uavoMgr); }; #endif // SETUPWIZARD_H diff --git a/ground/openpilotgcs/src/plugins/setupwizard/setupwizard.pro b/ground/openpilotgcs/src/plugins/setupwizard/setupwizard.pro index d3a6dc0da..3f1876bfa 100644 --- a/ground/openpilotgcs/src/plugins/setupwizard/setupwizard.pro +++ b/ground/openpilotgcs/src/plugins/setupwizard/setupwizard.pro @@ -25,7 +25,9 @@ HEADERS += setupwizardplugin.h \ pages/summarypage.h \ pages/flashpage.h \ pages/levellingpage.h \ - levellingutil.h + levellingutil.h \ + vehicleconfigurationsource.h \ + vehicleconfigurationhelper.h SOURCES += setupwizardplugin.cpp \ setupwizard.cpp \ @@ -44,7 +46,9 @@ SOURCES += setupwizardplugin.cpp \ pages/summarypage.cpp \ pages/flashpage.cpp \ pages/levellingpage.cpp \ - levellingutil.cpp + levellingutil.cpp \ + vehicleconfigurationsource.cpp \ + vehicleconfigurationhelper.cpp OTHER_FILES += SetupWizard.pluginspec diff --git a/ground/openpilotgcs/src/plugins/setupwizard/vehicleconfigurationhelper.cpp b/ground/openpilotgcs/src/plugins/setupwizard/vehicleconfigurationhelper.cpp new file mode 100644 index 000000000..945d38b1e --- /dev/null +++ b/ground/openpilotgcs/src/plugins/setupwizard/vehicleconfigurationhelper.cpp @@ -0,0 +1,298 @@ +/** + ****************************************************************************** + * + * @file vehicleconfigurationhelper.cpp + * @author The OpenPilot Team, http://www.openpilot.org Copyright (C) 2012. + * @addtogroup + * @{ + * @addtogroup VehicleConfigurationHelper + * @{ + * @brief + *****************************************************************************/ +/* + * 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 + * the Free Software Foundation; either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "vehicleconfigurationhelper.h" +#include "extensionsystem/pluginmanager.h" +#include "hwsettings.h" +#include "actuatorsettings.h" +#include "attitudesettings.h" +#include "mixersettings.h" +#include "systemsettings.h" + +VehicleConfigurationHelper::VehicleConfigurationHelper(VehicleConfigurationSource *configSource) + : m_configSource(configSource), m_uavoManager(0) +{ + Q_ASSERT(m_configSource); + ExtensionSystem::PluginManager *pm = ExtensionSystem::PluginManager::instance(); + m_uavoManager = pm->getObject(); + Q_ASSERT(m_uavoManager); +} + +void VehicleConfigurationHelper::setupVehicle() +{ + applyHardwareConfiguration(); + applyVehicleConfiguration(); + applyOutputConfiguration(); + applyFlighModeConfiguration(); + applyLevellingConfiguration(); +} + +void VehicleConfigurationHelper::applyHardwareConfiguration() +{ + HwSettings* hwSettings = HwSettings::GetInstance(m_uavoManager); + HwSettings::DataFields data = hwSettings->getData(); + switch(m_configSource->getControllerType()) + { + case VehicleConfigurationSource::CONTROLLER_CC: + case VehicleConfigurationSource::CONTROLLER_CC3D: + // Reset all ports + data.CC_RcvrPort = HwSettings::CC_RCVRPORT_DISABLED; + data.CC_FlexiPort = HwSettings::CC_FLEXIPORT_DISABLED; + data.CC_MainPort = HwSettings::CC_MAINPORT_DISABLED; + switch(m_configSource->getInputType()) + { + case VehicleConfigurationSource::INPUT_PWM: + data.CC_RcvrPort = HwSettings::CC_RCVRPORT_PWM; + break; + case VehicleConfigurationSource::INPUT_PPM: + data.CC_RcvrPort = HwSettings::CC_RCVRPORT_PPM; + break; + case VehicleConfigurationSource::INPUT_SBUS: + data.CC_MainPort = HwSettings::CC_MAINPORT_SBUS; + break; + case VehicleConfigurationSource::INPUT_DSM: + // TODO: Handle all of the DSM types ?? Which is most common? + data.CC_MainPort = HwSettings::CC_MAINPORT_DSM2; + break; + default: + break; + } + break; + case VehicleConfigurationSource::CONTROLLER_REVO: + // TODO: Implement Revo settings + break; + default: + break; + } + hwSettings->setData(data); +} + +void VehicleConfigurationHelper::applyVehicleConfiguration() +{ + + switch(m_configSource->getVehicleType()) + { + case VehicleConfigurationSource::VEHICLE_MULTI: + { + resetGUIData(); + resetVehicleConfig(); + + switch(m_configSource->getVehicleSubType()) + { + case VehicleConfigurationSource::MULTI_ROTOR_TRI_Y: + setupTriCopter(); + break; + case VehicleConfigurationSource::MULTI_ROTOR_QUAD_X: + case VehicleConfigurationSource::MULTI_ROTOR_QUAD_PLUS: + setupQuadCopter(); + break; + case VehicleConfigurationSource::MULTI_ROTOR_HEXA: + case VehicleConfigurationSource::MULTI_ROTOR_HEXA_COAX_Y: + case VehicleConfigurationSource::MULTI_ROTOR_HEXA_H: + setupHexaCopter(); + break; + case VehicleConfigurationSource::MULTI_ROTOR_OCTO: + case VehicleConfigurationSource::MULTI_ROTOR_OCTO_COAX_X: + case VehicleConfigurationSource::MULTI_ROTOR_OCTO_COAX_PLUS: + case VehicleConfigurationSource::MULTI_ROTOR_OCTO_V: + setupOctoCopter(); + break; + default: + break; + } + break; + } + case VehicleConfigurationSource::VEHICLE_FIXEDWING: + case VehicleConfigurationSource::VEHICLE_HELI: + case VehicleConfigurationSource::VEHICLE_SURFACE: + // TODO: Implement settings for other vehicle types? + break; + default: + break; + } +} + +void VehicleConfigurationHelper::applyOutputConfiguration() +{ + ActuatorSettings* actSettings = ActuatorSettings::GetInstance(m_uavoManager); + switch(m_configSource->getVehicleType()) + { + case VehicleConfigurationSource::VEHICLE_MULTI: + { + ActuatorSettings::DataFields data = actSettings->getData(); + + data.ChannelUpdateFreq[0] = LEGACY_ESC_FREQUENCE; + data.ChannelUpdateFreq[1] = LEGACY_ESC_FREQUENCE; + data.ChannelUpdateFreq[3] = LEGACY_ESC_FREQUENCE; + data.ChannelUpdateFreq[4] = LEGACY_ESC_FREQUENCE; + + qint16 updateFrequence = LEGACY_ESC_FREQUENCE; + switch(m_configSource->getESCType()) + { + case VehicleConfigurationSource::ESC_LEGACY: + updateFrequence = LEGACY_ESC_FREQUENCE; + break; + case VehicleConfigurationSource::ESC_RAPID: + updateFrequence = RAPID_ESC_FREQUENCE; + break; + default: + break; + } + + switch(m_configSource->getVehicleSubType()) + { + case VehicleConfigurationSource::MULTI_ROTOR_TRI_Y: + data.ChannelUpdateFreq[0] = updateFrequence; + break; + case VehicleConfigurationSource::MULTI_ROTOR_QUAD_X: + case VehicleConfigurationSource::MULTI_ROTOR_QUAD_PLUS: + data.ChannelUpdateFreq[0] = updateFrequence; + data.ChannelUpdateFreq[1] = updateFrequence; + break; + case VehicleConfigurationSource::MULTI_ROTOR_HEXA: + case VehicleConfigurationSource::MULTI_ROTOR_HEXA_COAX_Y: + case VehicleConfigurationSource::MULTI_ROTOR_HEXA_H: + case VehicleConfigurationSource::MULTI_ROTOR_OCTO: + case VehicleConfigurationSource::MULTI_ROTOR_OCTO_COAX_X: + case VehicleConfigurationSource::MULTI_ROTOR_OCTO_COAX_PLUS: + case VehicleConfigurationSource::MULTI_ROTOR_OCTO_V: + data.ChannelUpdateFreq[0] = updateFrequence; + data.ChannelUpdateFreq[1] = updateFrequence; + data.ChannelUpdateFreq[3] = updateFrequence; + data.ChannelUpdateFreq[4] = updateFrequence; + break; + default: + break; + } + actSettings->setData(data); + break; + } + case VehicleConfigurationSource::VEHICLE_FIXEDWING: + case VehicleConfigurationSource::VEHICLE_HELI: + case VehicleConfigurationSource::VEHICLE_SURFACE: + // TODO: Implement settings for other vehicle types? + break; + default: + break; + } +} + +void VehicleConfigurationHelper::applyFlighModeConfiguration() +{ +} + +void VehicleConfigurationHelper::applyLevellingConfiguration() +{ + if(m_configSource->isLevellingPerformed()) + { + accelGyroBias bias = m_configSource->getLevellingBias(); + AttitudeSettings::DataFields attitudeSettingsData = AttitudeSettings::GetInstance(m_uavoManager)->getData(); + attitudeSettingsData.AccelBias[0] += bias.m_accelerometerXBias; + attitudeSettingsData.AccelBias[1] += bias.m_accelerometerYBias; + attitudeSettingsData.AccelBias[2] += bias.m_accelerometerZBias; + attitudeSettingsData.GyroBias[0] = -bias.m_gyroXBias; + attitudeSettingsData.GyroBias[1] = -bias.m_gyroYBias; + attitudeSettingsData.GyroBias[2] = -bias.m_gyroZBias; + AttitudeSettings::GetInstance(m_uavoManager)->setData(attitudeSettingsData); + } +} + + +void VehicleConfigurationHelper::resetVehicleConfig() +{ + // Reset all vehicle data + MixerSettings* mSettings = MixerSettings::GetInstance(m_uavoManager); + + // Reset feed forward, accel times etc + mSettings->setFeedForward(0.0f); + mSettings->setMaxAccel(1000.0f); + mSettings->setAccelTime(0.0f); + mSettings->setDecelTime(0.0f); + + // Reset throttle curves + QString throttlePattern = "ThrottleCurve%1"; + for(int i = 1; i <= 2; i++) { + UAVObjectField *field = mSettings->getField(throttlePattern.arg(i)); + Q_ASSERT(field); + for(int i = 0; i < field->getNumElements(); i++){ + field->setValue(i * ( 1.0f / field->getNumElements()), i); + } + } + + // Reset Mixer types and values + QString mixerTypePattern = "Mixer%1Type"; + QString mixerVectorPattern = "Mixer%1Vector"; + for(int i = 1; i <= 10; i++) { + UAVObjectField *field = mSettings->getField(mixerTypePattern.arg(i)); + Q_ASSERT(field); + field->setValue(field->getOptions().at(0)); + + field = mSettings->getField(mixerVectorPattern.arg(i)); + Q_ASSERT(field); + for(int i = 0; i < field->getNumElements(); i++){ + field->setValue(0, i); + } + } + + // Apply updates + mSettings->setData(mSettings->getData()); +} + +void VehicleConfigurationHelper::resetGUIData() +{ + SystemSettings * sSettings = SystemSettings::GetInstance(m_uavoManager); + Q_ASSERT(sSettings); + SystemSettings::DataFields data = sSettings->getData(); + data.AirframeType = SystemSettings::AIRFRAMETYPE_CUSTOM; + for(int i = 0; i < SystemSettings::GUICONFIGDATA_NUMELEM; i++) + { + data.GUIConfigData[i] = 0; + } + sSettings->setData(data); +} + + +void VehicleConfigurationHelper::setupTriCopter() +{ + // Typical vehicle setup + // 1. Setup and apply mixer + // 2. Setup GUI data + mixerSettings mixer; + mixer.channels[0].type = 0; +} + +void VehicleConfigurationHelper::setupQuadCopter() +{ +} + +void VehicleConfigurationHelper::setupHexaCopter() +{ +} + +void VehicleConfigurationHelper::setupOctoCopter() +{ +} diff --git a/ground/openpilotgcs/src/plugins/setupwizard/vehicleconfigurationhelper.h b/ground/openpilotgcs/src/plugins/setupwizard/vehicleconfigurationhelper.h new file mode 100644 index 000000000..4c795d8c1 --- /dev/null +++ b/ground/openpilotgcs/src/plugins/setupwizard/vehicleconfigurationhelper.h @@ -0,0 +1,80 @@ +/** + ****************************************************************************** + * + * @file vehicleconfigurationhelper.h + * @author The OpenPilot Team, http://www.openpilot.org Copyright (C) 2012. + * @addtogroup + * @{ + * @addtogroup VehicleConfigurationHelper + * @{ + * @brief + *****************************************************************************/ +/* + * 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 + * the Free Software Foundation; either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef VEHICLECONFIGURATIONHELPER_H +#define VEHICLECONFIGURATIONHELPER_H + +#include "vehicleconfigurationsource.h" +#include "uavobjectmanager.h" + +struct channelSettings { + int type; + int throttle1; + int throttle2; + int roll; + int pitch; + int yaw; + + channelSettings() : type(), throttle1(), throttle2(), roll(), pitch(), yaw() {} + + channelSettings(int t, int th1, int th2, int r, int p, int y) + : type(t), throttle1(th1), throttle2(th2), roll(r), pitch(p), yaw(y) {} +}; + +struct mixerSettings { + channelSettings channels[10]; +}; + +class VehicleConfigurationHelper +{ +public: + VehicleConfigurationHelper(VehicleConfigurationSource* configSource); + void setupVehicle(); +private: + static const qint16 LEGACY_ESC_FREQUENCE = 50; + static const qint16 RAPID_ESC_FREQUENCE = 400; + + VehicleConfigurationSource *m_configSource; + UAVObjectManager *m_uavoManager; + + void applyHardwareConfiguration(); + void applyVehicleConfiguration(); + void applyOutputConfiguration(); + void applyFlighModeConfiguration(); + void applyLevellingConfiguration(); + + void resetVehicleConfig(); + void resetGUIData(); + + void setupTriCopter(); + void setupQuadCopter(); + void setupHexaCopter(); + void setupOctoCopter(); + +}; + +#endif // VEHICLECONFIGURATIONHELPER_H diff --git a/ground/openpilotgcs/src/plugins/setupwizard/vehicleconfigurationsource.cpp b/ground/openpilotgcs/src/plugins/setupwizard/vehicleconfigurationsource.cpp new file mode 100644 index 000000000..3acb2400d --- /dev/null +++ b/ground/openpilotgcs/src/plugins/setupwizard/vehicleconfigurationsource.cpp @@ -0,0 +1,32 @@ +/** + ****************************************************************************** + * + * @file vehicleconfigurationsource.cpp + * @author The OpenPilot Team, http://www.openpilot.org Copyright (C) 2012. + * @addtogroup + * @{ + * @addtogroup VehicleConfigurationSource + * @{ + * @brief + *****************************************************************************/ +/* + * 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 + * the Free Software Foundation; either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "vehicleconfigurationsource.h" + +VehicleConfigurationSource::VehicleConfigurationSource() +{ +} diff --git a/ground/openpilotgcs/src/plugins/setupwizard/vehicleconfigurationsource.h b/ground/openpilotgcs/src/plugins/setupwizard/vehicleconfigurationsource.h new file mode 100644 index 000000000..fb4924fe7 --- /dev/null +++ b/ground/openpilotgcs/src/plugins/setupwizard/vehicleconfigurationsource.h @@ -0,0 +1,72 @@ +/** + ****************************************************************************** + * + * @file vehicleconfigurationsource.h + * @author The OpenPilot Team, http://www.openpilot.org Copyright (C) 2012. + * @addtogroup + * @{ + * @addtogroup VehicleConfigurationSource + * @{ + * @brief + *****************************************************************************/ +/* + * 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 + * the Free Software Foundation; either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef VEHICLECONFIGURATIONSOURCE_H +#define VEHICLECONFIGURATIONSOURCE_H + +#include + +struct accelGyroBias { + float m_accelerometerXBias; + float m_accelerometerYBias; + float m_accelerometerZBias; + + float m_gyroXBias; + float m_gyroYBias; + float m_gyroZBias; +}; + +class VehicleConfigurationSource +{ +public: + VehicleConfigurationSource(); + + enum CONTROLLER_SELECTION_MODE {CONTROLLER_SELECTION_AUTOMATIC, CONTROLLER_SELECTION_MANUAL, CONTROLLER_SELECTION_UNKNOWN}; + enum CONTROLLER_TYPE {CONTROLLER_UNKNOWN, CONTROLLER_CC, CONTROLLER_CC3D, CONTROLLER_REVO, CONTROLLER_PIPX}; + enum VEHICLE_TYPE {VEHICLE_UNKNOWN, VEHICLE_MULTI, VEHICLE_FIXEDWING, VEHICLE_HELI, VEHICLE_SURFACE}; + enum VEHICLE_SUB_TYPE {MULTI_ROTOR_UNKNOWN, MULTI_ROTOR_TRI_Y, MULTI_ROTOR_QUAD_X, MULTI_ROTOR_QUAD_PLUS, + MULTI_ROTOR_HEXA, MULTI_ROTOR_HEXA_H, MULTI_ROTOR_HEXA_COAX_Y, MULTI_ROTOR_OCTO, + MULTI_ROTOR_OCTO_V, MULTI_ROTOR_OCTO_COAX_X, MULTI_ROTOR_OCTO_COAX_PLUS, FIXED_WING_AILERON, + FIXED_WING_VTAIL, HELI_CCPM}; + enum ESC_TYPE {ESC_RAPID, ESC_LEGACY, ESC_UNKNOWN}; + enum INPUT_TYPE {INPUT_PWM, INPUT_PPM, INPUT_SBUS, INPUT_DSM, INPUT_UNKNOWN}; + + virtual VehicleConfigurationSource::CONTROLLER_SELECTION_MODE getControllerSelectionMode() const = 0; + virtual VehicleConfigurationSource::CONTROLLER_TYPE getControllerType() const = 0; + virtual VehicleConfigurationSource::VEHICLE_TYPE getVehicleType() const = 0; + virtual VehicleConfigurationSource::VEHICLE_SUB_TYPE getVehicleSubType() const = 0; + virtual VehicleConfigurationSource::INPUT_TYPE getInputType() const = 0; + virtual VehicleConfigurationSource::ESC_TYPE getESCType() const = 0; + + virtual bool isLevellingPerformed() = 0; + virtual accelGyroBias getLevellingBias() const = 0; + + virtual QString getSummaryText() = 0; + +}; + +#endif // VEHICLECONFIGURATIONSOURCE_H From 9205400cf01696a7259c9c84a1991ce3b4aff6d9 Mon Sep 17 00:00:00 2001 From: Fredrik Arvidsson Date: Sun, 19 Aug 2012 23:25:50 +0200 Subject: [PATCH 008/105] OP-39 Implemented functionality for reliable writing of UAVOs to controller board. Removed the option to configure the board without having it connected. Added Tri, QuadX and QuadP configuration code. Updated some of the texts. --- .../setupwizard/pages/controllerpage.cpp | 26 +- .../setupwizard/pages/controllerpage.h | 1 - .../setupwizard/pages/controllerpage.ui | 18 +- .../plugins/setupwizard/pages/flashpage.cpp | 36 +- .../src/plugins/setupwizard/pages/flashpage.h | 8 +- .../plugins/setupwizard/pages/flashpage.ui | 50 ++- .../setupwizard/pages/levellingpage.cpp | 2 +- .../setupwizard/pages/levellingpage.ui | 10 +- .../src/plugins/setupwizard/setupwizard.cpp | 57 ++- .../src/plugins/setupwizard/setupwizard.h | 6 - .../vehicleconfigurationhelper.cpp | 381 ++++++++++++++++-- .../setupwizard/vehicleconfigurationhelper.h | 42 +- .../setupwizard/vehicleconfigurationsource.h | 2 - 13 files changed, 527 insertions(+), 112 deletions(-) diff --git a/ground/openpilotgcs/src/plugins/setupwizard/pages/controllerpage.cpp b/ground/openpilotgcs/src/plugins/setupwizard/pages/controllerpage.cpp index 54e63ad5d..24d5a578e 100644 --- a/ground/openpilotgcs/src/plugins/setupwizard/pages/controllerpage.cpp +++ b/ground/openpilotgcs/src/plugins/setupwizard/pages/controllerpage.cpp @@ -45,7 +45,6 @@ ControllerPage::ControllerPage(SetupWizard *wizard, QWidget *parent) : connect(m_connectionManager, SIGNAL(deviceConnected(QIODevice*)), this, SLOT(connectionStatusChanged())); connect(m_connectionManager, SIGNAL(deviceDisconnected()), this, SLOT(connectionStatusChanged())); - connect(ui->manualCB, SIGNAL(toggled(bool)), this, SLOT(identificationModeChanged())); connect(ui->connectButton, SIGNAL(clicked()), this, SLOT(connectDisconnect())); setupBoardTypes(); @@ -71,14 +70,12 @@ void ControllerPage::initializePage() bool ControllerPage::isComplete() const { - return (ui->manualCB->isChecked() && ui->boardTypeCombo->currentIndex() > 0) || - (!ui->manualCB->isChecked() && m_connectionManager->isConnected() && ui->boardTypeCombo->currentIndex() > 0); + return m_connectionManager->isConnected() && ui->boardTypeCombo->currentIndex() > 0; } bool ControllerPage::validatePage() { getWizard()->setControllerType((SetupWizard::CONTROLLER_TYPE)ui->boardTypeCombo->itemData(ui->boardTypeCombo->currentIndex()).toInt()); - getWizard()->setControllerSelectionMode(ui->manualCB->isChecked() ? SetupWizard::CONTROLLER_SELECTION_MANUAL : SetupWizard::CONTROLLER_SELECTION_AUTOMATIC); return true; } @@ -172,7 +169,6 @@ void ControllerPage::connectionStatusChanged() ui->deviceCombo->setEnabled(false); ui->connectButton->setText(tr("Disconnect")); ui->boardTypeCombo->setEnabled(false); - ui->manualCB->setEnabled(false); QString connectedDeviceName = m_connectionManager->getCurrentDevice().devName; for(int i = 0; i < ui->deviceCombo->count(); ++i) { if(connectedDeviceName == ui->deviceCombo->itemData(i, Qt::ToolTipRole).toString()) { @@ -188,32 +184,12 @@ void ControllerPage::connectionStatusChanged() ui->deviceCombo->setEnabled(true); ui->connectButton->setText(tr("Connect")); ui->boardTypeCombo->setEnabled(false); - ui->manualCB->setEnabled(true); ui->boardTypeCombo->model()->setData(ui->boardTypeCombo->model()->index(0, 0), QVariant(0), Qt::UserRole - 1); setControllerType(SetupWizard::CONTROLLER_UNKNOWN); } emit completeChanged(); } -void ControllerPage::identificationModeChanged() -{ - if(ui->manualCB->isChecked()) { - ui->deviceCombo->setEnabled(false); - ui->boardTypeCombo->setEnabled(true); - ui->connectButton->setEnabled(false); - ui->boardTypeCombo->setCurrentIndex(1); - //ui->boardTypeCombo->model()->setData(ui->boardTypeCombo->model()->index(0, 0), QVariant(0), Qt::UserRole - 1); - } - else { - ui->connectButton->setEnabled(ui->deviceCombo->count() > 0); - ui->deviceCombo->setEnabled(!m_connectionManager->isConnected()); - //ui->boardTypeCombo->model()->setData(ui->boardTypeCombo->model()->index(0, 0), QVariant(1), Qt::UserRole - 1); - ui->boardTypeCombo->setCurrentIndex(0); - ui->boardTypeCombo->setEnabled(false); - } - emit completeChanged(); -} - void ControllerPage::connectDisconnect() { if(m_connectionManager->isConnected()) { diff --git a/ground/openpilotgcs/src/plugins/setupwizard/pages/controllerpage.h b/ground/openpilotgcs/src/plugins/setupwizard/pages/controllerpage.h index b9b8ae111..177976731 100644 --- a/ground/openpilotgcs/src/plugins/setupwizard/pages/controllerpage.h +++ b/ground/openpilotgcs/src/plugins/setupwizard/pages/controllerpage.h @@ -60,7 +60,6 @@ private: private slots: void devicesChanged(QLinkedList devices); void connectionStatusChanged(); - void identificationModeChanged(); void connectDisconnect(); }; diff --git a/ground/openpilotgcs/src/plugins/setupwizard/pages/controllerpage.ui b/ground/openpilotgcs/src/plugins/setupwizard/pages/controllerpage.ui index a949d6a1d..61a6d1ff7 100644 --- a/ground/openpilotgcs/src/plugins/setupwizard/pages/controllerpage.ui +++ b/ground/openpilotgcs/src/plugins/setupwizard/pages/controllerpage.ui @@ -32,9 +32,7 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt;">To continue we need to know what kind of OpenPilot board you want the wizard to create a configuration for. The wizard will try to automatically detect what type of board you have connected.</span></p> <p style="-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:10pt;"></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt;">Please connect the board to a free usb port on your computer, or if a serial modem like BlueTooth, PipX or other is used, then power up the board and select the device to connect with from the list below. Then press Connect.</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt;">If the board already is connected and succesfully detected the board type will allready be displayed. You can disconnect and select another device if you need to detect another board.</span></p> -<p style="-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:10pt;"></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt;">If your board isnt detected or if you want to create a configuration for a board that is not connected. Then select the Manual selection option below and select the board type from the drop down menu.</span></p></body></html> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt;">If the board already is connected and succesfully detected the board type will allready be displayed. You can disconnect and select another device if you need to detect another board.</span></p></body></html> Qt::AutoText @@ -99,19 +97,6 @@ p, li { white-space: pre-wrap; } Connect - - - - 441 - 33 - 101 - 17 - - - - Manual selection - - @@ -153,7 +138,6 @@ p, li { white-space: pre-wrap; } deviceCombo connectButton boardTypeCombo - manualCB label_2 label_3 diff --git a/ground/openpilotgcs/src/plugins/setupwizard/pages/flashpage.cpp b/ground/openpilotgcs/src/plugins/setupwizard/pages/flashpage.cpp index 713270d83..f7438c8be 100644 --- a/ground/openpilotgcs/src/plugins/setupwizard/pages/flashpage.cpp +++ b/ground/openpilotgcs/src/plugins/setupwizard/pages/flashpage.cpp @@ -28,14 +28,14 @@ #include "flashpage.h" #include "ui_flashpage.h" #include "setupwizard.h" +#include "vehicleconfigurationhelper.h" FlashPage::FlashPage(SetupWizard *wizard, QWidget *parent) : AbstractWizardPage(wizard, parent), - - ui(new Ui::FlashPage) + ui(new Ui::FlashPage), m_successfulWrite(false) { ui->setupUi(this); - connect(ui->applyButton, SIGNAL(clicked()), wizard, SLOT(writeConfiguration())); + connect(ui->saveButton, SIGNAL(clicked()), this, SLOT(writeToController())); } FlashPage::~FlashPage() @@ -47,3 +47,33 @@ bool FlashPage::validatePage() { return true; } + +bool FlashPage::isComplete() const +{ + return m_successfulWrite; +} + +void FlashPage::writeToController() +{ + ui->saveButton->setEnabled(false); + VehicleConfigurationHelper helper(getWizard()); + connect(&helper, SIGNAL(saveProgress(int, int, QString)),this, SLOT(saveProgress(int, int, QString))); + m_successfulWrite = helper.setupVehicle(); + disconnect(&helper, SIGNAL(saveProgress(int, int, QString)),this, SLOT(saveProgress(int, int, QString))); + emit completeChanged(); + ui->saveProgressLabel->setText(QString("%2").arg(m_successfulWrite ? "green" : "red", ui->saveProgressLabel->text())); + ui->saveButton->setEnabled(true); +} + +void FlashPage::saveProgress(int total, int current, QString description) +{ + if(ui->saveProgressBar->maximum() != total) { + ui->saveProgressBar->setMaximum(total); + } + if(ui->saveProgressBar->value() != current) { + ui->saveProgressBar->setValue(current); + } + if(ui->saveProgressLabel->text() != description) { + ui->saveProgressLabel->setText(description); + } +} diff --git a/ground/openpilotgcs/src/plugins/setupwizard/pages/flashpage.h b/ground/openpilotgcs/src/plugins/setupwizard/pages/flashpage.h index 7aeb7ffc4..45e83ed61 100644 --- a/ground/openpilotgcs/src/plugins/setupwizard/pages/flashpage.h +++ b/ground/openpilotgcs/src/plugins/setupwizard/pages/flashpage.h @@ -42,9 +42,15 @@ public: explicit FlashPage(SetupWizard *wizard, QWidget *parent = 0); ~FlashPage(); bool validatePage(); + bool isComplete() const; -private: +private: Ui::FlashPage *ui; + bool m_successfulWrite; + +private slots: + void writeToController(); + void saveProgress(int total, int current, QString description); }; #endif // FLASHPAGE_H diff --git a/ground/openpilotgcs/src/plugins/setupwizard/pages/flashpage.ui b/ground/openpilotgcs/src/plugins/setupwizard/pages/flashpage.ui index 37929e802..f4ad3f7a5 100644 --- a/ground/openpilotgcs/src/plugins/setupwizard/pages/flashpage.ui +++ b/ground/openpilotgcs/src/plugins/setupwizard/pages/flashpage.ui @@ -29,9 +29,11 @@ p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:12pt; font-weight:600;">OpenPilot configuration ready to save</span></p> <p style="-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;"></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt;">The wizard is now ready to write the configuration directly to your OpenPilot controller. This is only possible if the controller is connected and identified in the first step of this wizard. If the controller is not connected, or if the controller type was selected manually you can instead of writing the configuration to the controller save it to disk for later use.</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt;">The wizard is now ready to write the configuration directly to your OpenPilot controller. </span></p> <p style="-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:10pt;"></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt;">If any of the selections made in this wizard requires a reboot of the controller then that will have to be performed after this step by power cycling the OpenPilot controller board.</span></p> +<p style="-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:10pt;"></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt;">Press next to write the configuration.</span></p> <p style="-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:10pt;"></p></body></html> @@ -45,9 +47,9 @@ p, li { white-space: pre-wrap; } 20 - 230 - 561 - 151 + 250 + 560 + 130 @@ -57,22 +59,48 @@ p, li { white-space: pre-wrap; } - Write configuration to controller or save + Write configuration to controller Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter - + - 440 - 30 - 100 - 100 + 20 + 90 + 530 + 23 + + + + 0 + + + + + + 22 + 65 + 491 + 16 - Apply + Ready... + + + + + + 415 + 40 + 100 + 23 + + + + Write... diff --git a/ground/openpilotgcs/src/plugins/setupwizard/pages/levellingpage.cpp b/ground/openpilotgcs/src/plugins/setupwizard/pages/levellingpage.cpp index cabde07b7..5438f1a83 100644 --- a/ground/openpilotgcs/src/plugins/setupwizard/pages/levellingpage.cpp +++ b/ground/openpilotgcs/src/plugins/setupwizard/pages/levellingpage.cpp @@ -84,7 +84,7 @@ void LevellingPage::performLevelling() void LevellingPage::levellingProgress(long current, long total) { - if(!ui->levellinProgressBar->maximum() != (int)total) { + if(ui->levellinProgressBar->maximum() != (int)total) { ui->levellinProgressBar->setMaximum((int)total); } if(ui->levellinProgressBar->value() != (int)current) { diff --git a/ground/openpilotgcs/src/plugins/setupwizard/pages/levellingpage.ui b/ground/openpilotgcs/src/plugins/setupwizard/pages/levellingpage.ui index 9cf9ee148..e86ae3eaf 100644 --- a/ground/openpilotgcs/src/plugins/setupwizard/pages/levellingpage.ui +++ b/ground/openpilotgcs/src/plugins/setupwizard/pages/levellingpage.ui @@ -47,8 +47,8 @@ p, li { white-space: pre-wrap; } 20 250 - 561 - 131 + 560 + 130 @@ -68,7 +68,7 @@ p, li { white-space: pre-wrap; } 20 90 - 531 + 530 23 @@ -79,9 +79,9 @@ p, li { white-space: pre-wrap; } - 414 + 415 40 - 101 + 100 23 diff --git a/ground/openpilotgcs/src/plugins/setupwizard/setupwizard.cpp b/ground/openpilotgcs/src/plugins/setupwizard/setupwizard.cpp index 0dc44c62d..155accd14 100644 --- a/ground/openpilotgcs/src/plugins/setupwizard/setupwizard.cpp +++ b/ground/openpilotgcs/src/plugins/setupwizard/setupwizard.cpp @@ -44,7 +44,7 @@ #include "vehicleconfigurationhelper.h" SetupWizard::SetupWizard(QWidget *parent) : QWizard(parent), VehicleConfigurationSource(), - m_controllerSelectionMode(CONTROLLER_SELECTION_UNKNOWN), m_controllerType(CONTROLLER_UNKNOWN), + m_controllerType(CONTROLLER_UNKNOWN), m_vehicleType(VEHICLE_UNKNOWN), m_inputType(INPUT_UNKNOWN), m_escType(ESC_UNKNOWN), m_levellingPerformed(false), m_connectionManager(0) { @@ -90,13 +90,7 @@ int SetupWizard::nextId() const case PAGE_INPUT: return PAGE_VEHICLES; case PAGE_OUTPUT: - { - if(getControllerSelectionMode() == CONTROLLER_SELECTION_AUTOMATIC) { - return PAGE_LEVELLING; - } else { - return PAGE_SUMMARY; - } - } + return PAGE_LEVELLING; case PAGE_LEVELLING: return PAGE_SUMMARY; case PAGE_SUMMARY: @@ -139,6 +133,46 @@ QString SetupWizard::getSummaryText() { case VEHICLE_MULTI: summary.append(tr("Multirotor")); + + summary.append('\n'); + summary.append(tr("Vehicle sub type: ")); + switch (getVehicleSubType()) + { + case SetupWizard::MULTI_ROTOR_TRI_Y: + summary.append(tr("Tricopter")); + break; + case SetupWizard::MULTI_ROTOR_QUAD_X: + summary.append(tr("Quadcopter X")); + break; + case SetupWizard::MULTI_ROTOR_QUAD_PLUS: + summary.append(tr("Quadcopter +")); + break; + case SetupWizard::MULTI_ROTOR_HEXA: + summary.append(tr("Hexacopter")); + break; + case SetupWizard::MULTI_ROTOR_HEXA_COAX_Y: + summary.append(tr("Hexacopter Coax (Y6)")); + break; + case SetupWizard::MULTI_ROTOR_HEXA_H: + summary.append(tr("Hexacopter H")); + break; + case SetupWizard::MULTI_ROTOR_OCTO: + summary.append(tr("Octocopter")); + break; + case SetupWizard::MULTI_ROTOR_OCTO_COAX_X: + summary.append(tr("Octocopter Coax X")); + break; + case SetupWizard::MULTI_ROTOR_OCTO_COAX_PLUS: + summary.append(tr("Octocopter Coax +")); + break; + case SetupWizard::MULTI_ROTOR_OCTO_V: + summary.append(tr("Octocopter V")); + break; + default: + summary.append(tr("Unknown")); + break; + } + break; case VEHICLE_FIXEDWING: summary.append(tr("Fixed wing")); @@ -199,13 +233,6 @@ QString SetupWizard::getSummaryText() return summary; } -void SetupWizard::writeConfiguration() -{ - VehicleConfigurationHelper *helper = new VehicleConfigurationHelper(this); - Q_ASSERT(helper); - helper->setupVehicle(); -} - void SetupWizard::createPages() { setPage(PAGE_START, new StartPage(this)); diff --git a/ground/openpilotgcs/src/plugins/setupwizard/setupwizard.h b/ground/openpilotgcs/src/plugins/setupwizard/setupwizard.h index 566ec46ab..e687108e4 100644 --- a/ground/openpilotgcs/src/plugins/setupwizard/setupwizard.h +++ b/ground/openpilotgcs/src/plugins/setupwizard/setupwizard.h @@ -43,9 +43,6 @@ public: SetupWizard(QWidget *parent = 0); int nextId() const; - void setControllerSelectionMode(SetupWizard::CONTROLLER_SELECTION_MODE mode) { m_controllerSelectionMode = mode; } - SetupWizard::CONTROLLER_SELECTION_MODE getControllerSelectionMode() const { return m_controllerSelectionMode; } - void setControllerType(SetupWizard::CONTROLLER_TYPE type) { m_controllerType = type; } SetupWizard::CONTROLLER_TYPE getControllerType() const { return m_controllerType; } @@ -75,8 +72,6 @@ public: } return m_connectionManager; } -public slots: - void writeConfiguration(); private: enum {PAGE_START, PAGE_CONTROLLER, PAGE_VEHICLES, PAGE_MULTI, PAGE_FIXEDWING, @@ -84,7 +79,6 @@ private: PAGE_FLASH, PAGE_SUMMARY, PAGE_NOTYETIMPLEMENTED, PAGE_END}; void createPages(); - CONTROLLER_SELECTION_MODE m_controllerSelectionMode; CONTROLLER_TYPE m_controllerType; VEHICLE_TYPE m_vehicleType; VEHICLE_SUB_TYPE m_vehicleSubType; diff --git a/ground/openpilotgcs/src/plugins/setupwizard/vehicleconfigurationhelper.cpp b/ground/openpilotgcs/src/plugins/setupwizard/vehicleconfigurationhelper.cpp index 945d38b1e..aab9de186 100644 --- a/ground/openpilotgcs/src/plugins/setupwizard/vehicleconfigurationhelper.cpp +++ b/ground/openpilotgcs/src/plugins/setupwizard/vehicleconfigurationhelper.cpp @@ -34,7 +34,9 @@ #include "systemsettings.h" VehicleConfigurationHelper::VehicleConfigurationHelper(VehicleConfigurationSource *configSource) - : m_configSource(configSource), m_uavoManager(0) + : m_configSource(configSource), m_uavoManager(0), + m_transactionOK(false), m_transactionTimeout(false), m_currentTransactionObjectID(-1), + m_progress(0) { Q_ASSERT(m_configSource); ExtensionSystem::PluginManager *pm = ExtensionSystem::PluginManager::instance(); @@ -42,13 +44,45 @@ VehicleConfigurationHelper::VehicleConfigurationHelper(VehicleConfigurationSourc Q_ASSERT(m_uavoManager); } -void VehicleConfigurationHelper::setupVehicle() +bool VehicleConfigurationHelper::setupVehicle() { + m_progress = 0; + clearModifiedObjects(); + resetVehicleConfig(); + resetGUIData(); + if(!saveChangesToController()) + { + return false; + } + applyHardwareConfiguration(); applyVehicleConfiguration(); applyOutputConfiguration(); applyFlighModeConfiguration(); applyLevellingConfiguration(); + + bool result = saveChangesToController(); + if(result) { + emit saveProgress(PROGRESS_STEPS, ++m_progress, tr("Done!")); + } + else { + emit saveProgress(PROGRESS_STEPS, ++m_progress, tr("Failed!")); + } + return result; +} + +void VehicleConfigurationHelper::addModifiedObject(UAVDataObject *object, QString description) +{ + m_modifiedObjects << new QPair(object, description); +} + +void VehicleConfigurationHelper::clearModifiedObjects() +{ + for(int i = 0; i < m_modifiedObjects.count(); i++) { + QPair *pair = m_modifiedObjects.at(i); + delete pair; + } + m_modifiedObjects.clear(); } void VehicleConfigurationHelper::applyHardwareConfiguration() @@ -88,7 +122,8 @@ void VehicleConfigurationHelper::applyHardwareConfiguration() default: break; } - hwSettings->setData(data); + //hwSettings->setData(data); + addModifiedObject(hwSettings, tr("Writing hardware settings")); } void VehicleConfigurationHelper::applyVehicleConfiguration() @@ -98,9 +133,6 @@ void VehicleConfigurationHelper::applyVehicleConfiguration() { case VehicleConfigurationSource::VEHICLE_MULTI: { - resetGUIData(); - resetVehicleConfig(); - switch(m_configSource->getVehicleSubType()) { case VehicleConfigurationSource::MULTI_ROTOR_TRI_Y: @@ -188,7 +220,8 @@ void VehicleConfigurationHelper::applyOutputConfiguration() default: break; } - actSettings->setData(data); + //actSettings->setData(data); + addModifiedObject(actSettings, tr("Writing output rate settings")); break; } case VehicleConfigurationSource::VEHICLE_FIXEDWING: @@ -210,17 +243,179 @@ void VehicleConfigurationHelper::applyLevellingConfiguration() if(m_configSource->isLevellingPerformed()) { accelGyroBias bias = m_configSource->getLevellingBias(); - AttitudeSettings::DataFields attitudeSettingsData = AttitudeSettings::GetInstance(m_uavoManager)->getData(); - attitudeSettingsData.AccelBias[0] += bias.m_accelerometerXBias; - attitudeSettingsData.AccelBias[1] += bias.m_accelerometerYBias; - attitudeSettingsData.AccelBias[2] += bias.m_accelerometerZBias; - attitudeSettingsData.GyroBias[0] = -bias.m_gyroXBias; - attitudeSettingsData.GyroBias[1] = -bias.m_gyroYBias; - attitudeSettingsData.GyroBias[2] = -bias.m_gyroZBias; - AttitudeSettings::GetInstance(m_uavoManager)->setData(attitudeSettingsData); + AttitudeSettings* attitudeSettings = AttitudeSettings::GetInstance(m_uavoManager); + Q_ASSERT(attitudeSettings); + AttitudeSettings::DataFields data = attitudeSettings->getData(); + + data.AccelBias[0] += bias.m_accelerometerXBias; + data.AccelBias[1] += bias.m_accelerometerYBias; + data.AccelBias[2] += bias.m_accelerometerZBias; + data.GyroBias[0] = -bias.m_gyroXBias; + data.GyroBias[1] = -bias.m_gyroYBias; + data.GyroBias[2] = -bias.m_gyroZBias; + + //AttitudeSettings::GetInstance(m_uavoManager)->setData(data); + addModifiedObject(attitudeSettings, tr("Writing levelling bias settings")); } } +void VehicleConfigurationHelper::applyMixerConfiguration(mixerSettings mixer) +{ + // Set all mixer data + MixerSettings* mSettings = MixerSettings::GetInstance(m_uavoManager); + + // Set Mixer types and values + QString mixerTypePattern = "Mixer%1Type"; + QString mixerVectorPattern = "Mixer%1Vector"; + for(int i = 0; i < 10; i++) { + UAVObjectField *field = mSettings->getField(mixerTypePattern.arg(i + 1)); + Q_ASSERT(field); + field->setValue(field->getOptions().at(mixer.channels[i].type)); + + field = mSettings->getField(mixerVectorPattern.arg(i + 1)); + Q_ASSERT(field); + field->setValue((mixer.channels[i].throttle1 * 127) / 100, 0); + field->setValue((mixer.channels[i].throttle2 * 127) / 100, 1); + field->setValue((mixer.channels[i].roll * 127) / 100, 2); + field->setValue((mixer.channels[i].pitch * 127) / 100, 3); + field->setValue((mixer.channels[i].yaw *127) / 100, 4); + } + + // Apply updates + //mSettings->setData(mSettings->getData()); + addModifiedObject(mSettings, tr("Writing mixer settings")); + +} + +void VehicleConfigurationHelper::applyMultiGUISettings(SystemSettings::AirframeTypeOptions airframe, GUIConfigDataUnion guiConfig) +{ + SystemSettings * sSettings = SystemSettings::GetInstance(m_uavoManager); + Q_ASSERT(sSettings); + SystemSettings::DataFields data = sSettings->getData(); + data.AirframeType = airframe; + + for (int i = 0; i < (int)(SystemSettings::GUICONFIGDATA_NUMELEM); i++) { + data.GUIConfigData[i] = guiConfig.UAVObject[i]; + } + + sSettings->setData(data); + addModifiedObject(sSettings, tr("Writing vehicle settings")); +} + +bool VehicleConfigurationHelper::saveChangesToController() +{ + qDebug() << "Saving modified objects to controller. " << m_modifiedObjects.count() << " objects in found."; + const int OUTER_TIMEOUT = 3000 * 20; // 10 seconds timeout for saving all objects + const int INNER_TIMEOUT = 2000; // 1 second timeout on every save attempt + + ExtensionSystem::PluginManager *pm = ExtensionSystem::PluginManager::instance(); + Q_ASSERT(pm); + UAVObjectUtilManager* utilMngr = pm->getObject(); + Q_ASSERT(utilMngr); + + QTimer outerTimeoutTimer; + outerTimeoutTimer.setSingleShot(true); + + QTimer innerTimeoutTimer; + innerTimeoutTimer.setSingleShot(true); + + connect(utilMngr, SIGNAL(saveCompleted(int ,bool)), this, SLOT(uAVOTransactionCompleted(int, bool))); + connect(&innerTimeoutTimer, SIGNAL(timeout()), &m_eventLoop, SLOT(quit())); + connect(&outerTimeoutTimer, SIGNAL(timeout()), this, SLOT(saveChangesTimeout())); + + outerTimeoutTimer.start(OUTER_TIMEOUT); + for(int i = 0; i < m_modifiedObjects.count(); i++) { + QPair *objPair = m_modifiedObjects.at(i); + m_transactionOK = false; + UAVDataObject* obj = objPair->first; + QString objDescription = objPair->second; + if(UAVObject::GetGcsAccess(obj->getMetadata()) != UAVObject::ACCESS_READONLY && obj->isSettings()) { + + emit saveProgress(PROGRESS_STEPS, ++m_progress, objDescription); + + m_currentTransactionObjectID = obj->getObjID(); + + connect(obj, SIGNAL(transactionCompleted(UAVObject* ,bool)), this, SLOT(uAVOTransactionCompleted(UAVObject*, bool))); + while(!m_transactionOK && !m_transactionTimeout) { + // Allow the transaction to take some time + innerTimeoutTimer.start(INNER_TIMEOUT); + + // Set object updated + obj->updated(); + if(!m_transactionOK) { + m_eventLoop.exec(); + } + innerTimeoutTimer.stop(); + } + disconnect(obj, SIGNAL(transactionCompleted(UAVObject* ,bool)), this, SLOT(uAVOTransactionCompleted(UAVObject*, bool))); + if(m_transactionOK) { + qDebug() << "Object " << obj->getName() << " was successfully updated."; + m_transactionOK = false; + m_currentTransactionObjectID = obj->getObjID(); + // Try to save until success or timeout + while(!m_transactionOK && !m_transactionTimeout) { + // Allow the transaction to take some time + innerTimeoutTimer.start(INNER_TIMEOUT); + + // Persist object in controller + utilMngr->saveObjectToSD(obj); + if(!m_transactionOK) { + m_eventLoop.exec(); + } + innerTimeoutTimer.stop(); + } + m_currentTransactionObjectID = -1; + } + + if(!m_transactionOK) { + qDebug() << "Transaction timed out when trying to save: " << obj->getName(); + } + else { + qDebug() << "Object " << obj->getName() << " was successfully saved."; + } + } + else { + qDebug() << "Trying to save a UAVDataObject that is read only or is not a settings object."; + } + if(m_transactionTimeout) { + qDebug() << "Transaction timed out when trying to save " << m_modifiedObjects.count() << " objects."; + break; + } + } + + outerTimeoutTimer.stop(); + disconnect(&outerTimeoutTimer, SIGNAL(timeout()), this, SLOT(saveChangesTimeout())); + disconnect(&innerTimeoutTimer, SIGNAL(timeout()), &m_eventLoop, SLOT(quit())); + disconnect(utilMngr, SIGNAL(saveCompleted(int, bool)), this, SLOT(uAVOTransactionCompleted(int, bool))); + + qDebug() << "Finished saving modified objects to controller. Success = " << m_transactionOK; + + clearModifiedObjects(); + return m_transactionOK; +} + +void VehicleConfigurationHelper::uAVOTransactionCompleted(int oid, bool success) +{ + if(oid == m_currentTransactionObjectID) + { + m_transactionOK = success; + m_eventLoop.quit(); + } +} + +void VehicleConfigurationHelper::uAVOTransactionCompleted(UAVObject *object, bool success) +{ + if(object) { + uAVOTransactionCompleted(object->getObjID(), success); + } +} + +void VehicleConfigurationHelper::saveChangesTimeout() +{ + m_transactionOK = false; + m_transactionTimeout = true; + m_eventLoop.quit(); +} void VehicleConfigurationHelper::resetVehicleConfig() { @@ -238,8 +433,8 @@ void VehicleConfigurationHelper::resetVehicleConfig() for(int i = 1; i <= 2; i++) { UAVObjectField *field = mSettings->getField(throttlePattern.arg(i)); Q_ASSERT(field); - for(int i = 0; i < field->getNumElements(); i++){ - field->setValue(i * ( 1.0f / field->getNumElements()), i); + for(quint32 i = 0; i < field->getNumElements(); i++){ + field->setValue(i * ( 1.0f / (field->getNumElements() - 1)), i); } } @@ -253,13 +448,14 @@ void VehicleConfigurationHelper::resetVehicleConfig() field = mSettings->getField(mixerVectorPattern.arg(i)); Q_ASSERT(field); - for(int i = 0; i < field->getNumElements(); i++){ + for(quint32 i = 0; i < field->getNumElements(); i++){ field->setValue(0, i); } } // Apply updates - mSettings->setData(mSettings->getData()); + //mSettings->setData(mSettings->getData()); + addModifiedObject(mSettings, tr("Preparing mixer settings")); } void VehicleConfigurationHelper::resetGUIData() @@ -268,11 +464,11 @@ void VehicleConfigurationHelper::resetGUIData() Q_ASSERT(sSettings); SystemSettings::DataFields data = sSettings->getData(); data.AirframeType = SystemSettings::AIRFRAMETYPE_CUSTOM; - for(int i = 0; i < SystemSettings::GUICONFIGDATA_NUMELEM; i++) - { + for(quint32 i = 0; i < SystemSettings::GUICONFIGDATA_NUMELEM; i++) { data.GUIConfigData[i] = 0; } - sSettings->setData(data); + //sSettings->setData(data); + addModifiedObject(sSettings, tr("Preparing vehicle settings")); } @@ -281,12 +477,151 @@ void VehicleConfigurationHelper::setupTriCopter() // Typical vehicle setup // 1. Setup and apply mixer // 2. Setup GUI data + mixerSettings mixer; - mixer.channels[0].type = 0; + mixer.channels[0].type = MIXER_TYPE_MOTOR; + mixer.channels[0].throttle1 = 100; + mixer.channels[0].throttle2 = 0; + mixer.channels[0].roll = 100; + mixer.channels[0].pitch = 50; + mixer.channels[0].yaw = 0; + + mixer.channels[1].type = MIXER_TYPE_MOTOR; + mixer.channels[1].throttle1 = 100; + mixer.channels[1].throttle2 = 0; + mixer.channels[1].roll = -100; + mixer.channels[1].pitch = 50; + mixer.channels[1].yaw = 0; + + mixer.channels[2].type = MIXER_TYPE_MOTOR; + mixer.channels[2].throttle1 = 100; + mixer.channels[2].throttle2 = 0; + mixer.channels[2].roll = 0; + mixer.channels[2].pitch = -100; + mixer.channels[2].yaw = 0; + + mixer.channels[3].type = MIXER_TYPE_SERVO; + mixer.channels[3].throttle1 = 0; + mixer.channels[3].throttle2 = 0; + mixer.channels[3].roll = 0; + mixer.channels[3].pitch = 0; + mixer.channels[3].yaw = 100; + + applyMixerConfiguration(mixer); + + GUIConfigDataUnion guiSettings = getGUIConfigData(); + + guiSettings.multi.VTOLMotorNW = 1; + guiSettings.multi.VTOLMotorNE = 2; + guiSettings.multi.VTOLMotorS = 3; + guiSettings.multi.TRIYaw = 4; + + applyMultiGUISettings(SystemSettings::AIRFRAMETYPE_TRI, guiSettings); +} + +GUIConfigDataUnion VehicleConfigurationHelper::getGUIConfigData() +{ + GUIConfigDataUnion configData; + + SystemSettings * systemSettings = SystemSettings::GetInstance(m_uavoManager); + Q_ASSERT(systemSettings); + SystemSettings::DataFields systemSettingsData = systemSettings->getData(); + + for(int i = 0; i < (int)(SystemSettings::GUICONFIGDATA_NUMELEM); i++) { + configData.UAVObject[i] = 0; //systemSettingsData.GUIConfigData[i]; + } + + return configData; } void VehicleConfigurationHelper::setupQuadCopter() { + mixerSettings mixer; + GUIConfigDataUnion guiSettings = getGUIConfigData(); + SystemSettings::AirframeTypeOptions frame; + + switch(m_configSource->getVehicleSubType()) + { + case VehicleConfigurationSource::MULTI_ROTOR_QUAD_PLUS: { + frame = SystemSettings::AIRFRAMETYPE_QUADP; + mixer.channels[0].type = MIXER_TYPE_MOTOR; + mixer.channels[0].throttle1 = 100; + mixer.channels[0].throttle2 = 0; + mixer.channels[0].roll = 0; + mixer.channels[0].pitch = 100; + mixer.channels[0].yaw = -50; + + mixer.channels[1].type = MIXER_TYPE_MOTOR; + mixer.channels[1].throttle1 = 100; + mixer.channels[1].throttle2 = 0; + mixer.channels[1].roll = -100; + mixer.channels[1].pitch = 0; + mixer.channels[1].yaw = 50; + + mixer.channels[2].type = MIXER_TYPE_MOTOR; + mixer.channels[2].throttle1 = 100; + mixer.channels[2].throttle2 = 0; + mixer.channels[2].roll = 0; + mixer.channels[2].pitch = -100; + mixer.channels[2].yaw = -50; + + mixer.channels[3].type = MIXER_TYPE_MOTOR; + mixer.channels[3].throttle1 = 100; + mixer.channels[3].throttle2 = 0; + mixer.channels[3].roll = 100; + mixer.channels[3].pitch = 0; + mixer.channels[3].yaw = 50; + + guiSettings.multi.VTOLMotorN = 1; + guiSettings.multi.VTOLMotorE = 2; + guiSettings.multi.VTOLMotorS = 3; + guiSettings.multi.VTOLMotorW = 4; + + break; + } + case VehicleConfigurationSource::MULTI_ROTOR_QUAD_X: { + frame = SystemSettings::AIRFRAMETYPE_QUADX; + mixer.channels[0].type = MIXER_TYPE_MOTOR; + mixer.channels[0].throttle1 = 100; + mixer.channels[0].throttle2 = 0; + mixer.channels[0].roll = 50; + mixer.channels[0].pitch = 50; + mixer.channels[0].yaw = -50; + + mixer.channels[1].type = MIXER_TYPE_MOTOR; + mixer.channels[1].throttle1 = 100; + mixer.channels[1].throttle2 = 0; + mixer.channels[1].roll = -50; + mixer.channels[1].pitch = 50; + mixer.channels[1].yaw = 50; + + mixer.channels[2].type = MIXER_TYPE_MOTOR; + mixer.channels[2].throttle1 = 100; + mixer.channels[2].throttle2 = 0; + mixer.channels[2].roll = -50; + mixer.channels[2].pitch = -50; + mixer.channels[2].yaw = -50; + + mixer.channels[3].type = MIXER_TYPE_MOTOR; + mixer.channels[3].throttle1 = 100; + mixer.channels[3].throttle2 = 0; + mixer.channels[3].roll = 50; + mixer.channels[3].pitch = -50; + mixer.channels[3].yaw = 50; + + guiSettings.multi.VTOLMotorNW = 1; + guiSettings.multi.VTOLMotorNE = 2; + guiSettings.multi.VTOLMotorSW = 3; + guiSettings.multi.VTOLMotorSE = 4; + + break; + } + default: + break; + } + applyMixerConfiguration(mixer); + applyMultiGUISettings(frame, guiSettings); + } void VehicleConfigurationHelper::setupHexaCopter() diff --git a/ground/openpilotgcs/src/plugins/setupwizard/vehicleconfigurationhelper.h b/ground/openpilotgcs/src/plugins/setupwizard/vehicleconfigurationhelper.h index 4c795d8c1..9ee7c1beb 100644 --- a/ground/openpilotgcs/src/plugins/setupwizard/vehicleconfigurationhelper.h +++ b/ground/openpilotgcs/src/plugins/setupwizard/vehicleconfigurationhelper.h @@ -28,8 +28,12 @@ #ifndef VEHICLECONFIGURATIONHELPER_H #define VEHICLECONFIGURATIONHELPER_H +#include +#include #include "vehicleconfigurationsource.h" #include "uavobjectmanager.h" +#include "systemsettings.h" +#include "cfg_vehicletypes/vehicleconfig.h" struct channelSettings { int type; @@ -49,24 +53,52 @@ struct mixerSettings { channelSettings channels[10]; }; -class VehicleConfigurationHelper +class VehicleConfigurationHelper : public QObject { + Q_OBJECT + public: VehicleConfigurationHelper(VehicleConfigurationSource* configSource); - void setupVehicle(); + bool setupVehicle(); + +signals: + void saveProgress(int total, int current, QString description); + private: static const qint16 LEGACY_ESC_FREQUENCE = 50; static const qint16 RAPID_ESC_FREQUENCE = 400; + static const int MIXER_TYPE_DISABLED = 0; + static const int MIXER_TYPE_MOTOR = 1; + static const int MIXER_TYPE_SERVO = 2; + + static const int PROGRESS_STEPS = 8; + VehicleConfigurationSource *m_configSource; UAVObjectManager *m_uavoManager; + QList* > m_modifiedObjects; + void addModifiedObject(UAVDataObject* object, QString description); + void clearModifiedObjects(); + void applyHardwareConfiguration(); void applyVehicleConfiguration(); void applyOutputConfiguration(); void applyFlighModeConfiguration(); void applyLevellingConfiguration(); + void applyMixerConfiguration(mixerSettings mixer); + + GUIConfigDataUnion getGUIConfigData(); + void applyMultiGUISettings(SystemSettings::AirframeTypeOptions airframe, GUIConfigDataUnion guiConfig); + + bool saveChangesToController(); + QEventLoop m_eventLoop; + bool m_transactionOK; + bool m_transactionTimeout; + int m_currentTransactionObjectID; + int m_progress; + void resetVehicleConfig(); void resetGUIData(); @@ -75,6 +107,12 @@ private: void setupHexaCopter(); void setupOctoCopter(); +private slots: + void uAVOTransactionCompleted(UAVObject* object, bool success); + void uAVOTransactionCompleted(int oid, bool success); + void saveChangesTimeout(); + + }; #endif // VEHICLECONFIGURATIONHELPER_H diff --git a/ground/openpilotgcs/src/plugins/setupwizard/vehicleconfigurationsource.h b/ground/openpilotgcs/src/plugins/setupwizard/vehicleconfigurationsource.h index fb4924fe7..b1109ce54 100644 --- a/ground/openpilotgcs/src/plugins/setupwizard/vehicleconfigurationsource.h +++ b/ground/openpilotgcs/src/plugins/setupwizard/vehicleconfigurationsource.h @@ -45,7 +45,6 @@ class VehicleConfigurationSource public: VehicleConfigurationSource(); - enum CONTROLLER_SELECTION_MODE {CONTROLLER_SELECTION_AUTOMATIC, CONTROLLER_SELECTION_MANUAL, CONTROLLER_SELECTION_UNKNOWN}; enum CONTROLLER_TYPE {CONTROLLER_UNKNOWN, CONTROLLER_CC, CONTROLLER_CC3D, CONTROLLER_REVO, CONTROLLER_PIPX}; enum VEHICLE_TYPE {VEHICLE_UNKNOWN, VEHICLE_MULTI, VEHICLE_FIXEDWING, VEHICLE_HELI, VEHICLE_SURFACE}; enum VEHICLE_SUB_TYPE {MULTI_ROTOR_UNKNOWN, MULTI_ROTOR_TRI_Y, MULTI_ROTOR_QUAD_X, MULTI_ROTOR_QUAD_PLUS, @@ -55,7 +54,6 @@ public: enum ESC_TYPE {ESC_RAPID, ESC_LEGACY, ESC_UNKNOWN}; enum INPUT_TYPE {INPUT_PWM, INPUT_PPM, INPUT_SBUS, INPUT_DSM, INPUT_UNKNOWN}; - virtual VehicleConfigurationSource::CONTROLLER_SELECTION_MODE getControllerSelectionMode() const = 0; virtual VehicleConfigurationSource::CONTROLLER_TYPE getControllerType() const = 0; virtual VehicleConfigurationSource::VEHICLE_TYPE getVehicleType() const = 0; virtual VehicleConfigurationSource::VEHICLE_SUB_TYPE getVehicleSubType() const = 0; From 10b9f00fac111e5f8d290c90497d6e40fa3b4980 Mon Sep 17 00:00:00 2001 From: Fredrik Arvidsson Date: Mon, 20 Aug 2012 00:14:17 +0200 Subject: [PATCH 009/105] OP-39 Added setting of default flightmodes.. --- .../vehicleconfigurationhelper.cpp | 33 ++++++++++++++++--- .../setupwizard/vehicleconfigurationhelper.h | 2 +- 2 files changed, 30 insertions(+), 5 deletions(-) diff --git a/ground/openpilotgcs/src/plugins/setupwizard/vehicleconfigurationhelper.cpp b/ground/openpilotgcs/src/plugins/setupwizard/vehicleconfigurationhelper.cpp index aab9de186..0de560ec4 100644 --- a/ground/openpilotgcs/src/plugins/setupwizard/vehicleconfigurationhelper.cpp +++ b/ground/openpilotgcs/src/plugins/setupwizard/vehicleconfigurationhelper.cpp @@ -32,6 +32,7 @@ #include "attitudesettings.h" #include "mixersettings.h" #include "systemsettings.h" +#import "manualcontrolsettings.h" VehicleConfigurationHelper::VehicleConfigurationHelper(VehicleConfigurationSource *configSource) : m_configSource(configSource), m_uavoManager(0), @@ -122,7 +123,7 @@ void VehicleConfigurationHelper::applyHardwareConfiguration() default: break; } - //hwSettings->setData(data); + hwSettings->setData(data); addModifiedObject(hwSettings, tr("Writing hardware settings")); } @@ -181,6 +182,7 @@ void VehicleConfigurationHelper::applyOutputConfiguration() data.ChannelUpdateFreq[1] = LEGACY_ESC_FREQUENCE; data.ChannelUpdateFreq[3] = LEGACY_ESC_FREQUENCE; data.ChannelUpdateFreq[4] = LEGACY_ESC_FREQUENCE; + data.MotorsSpinWhileArmed = ActuatorSettings::MOTORSSPINWHILEARMED_FALSE; qint16 updateFrequence = LEGACY_ESC_FREQUENCE; switch(m_configSource->getESCType()) @@ -220,7 +222,7 @@ void VehicleConfigurationHelper::applyOutputConfiguration() default: break; } - //actSettings->setData(data); + actSettings->setData(data); addModifiedObject(actSettings, tr("Writing output rate settings")); break; } @@ -236,6 +238,28 @@ void VehicleConfigurationHelper::applyOutputConfiguration() void VehicleConfigurationHelper::applyFlighModeConfiguration() { + ManualControlSettings* controlSettings = ManualControlSettings::GetInstance(m_uavoManager); + Q_ASSERT(controlSettings); + + ManualControlSettings::DataFields data = controlSettings->getData(); + data.Stabilization1Settings[0] = ManualControlSettings::STABILIZATION1SETTINGS_ATTITUDE; + data.Stabilization1Settings[1] = ManualControlSettings::STABILIZATION1SETTINGS_ATTITUDE; + data.Stabilization1Settings[2] = ManualControlSettings::STABILIZATION1SETTINGS_AXISLOCK; + data.Stabilization2Settings[0] = ManualControlSettings::STABILIZATION2SETTINGS_ATTITUDE; + data.Stabilization2Settings[1] = ManualControlSettings::STABILIZATION2SETTINGS_ATTITUDE; + data.Stabilization2Settings[2] = ManualControlSettings::STABILIZATION2SETTINGS_RATE; + data.Stabilization3Settings[0] = ManualControlSettings::STABILIZATION3SETTINGS_RATE; + data.Stabilization3Settings[1] = ManualControlSettings::STABILIZATION3SETTINGS_RATE; + data.Stabilization3Settings[2] = ManualControlSettings::STABILIZATION3SETTINGS_RATE; + data.FlightModeNumber = 3; + data.FlightModePosition[0] = ManualControlSettings::FLIGHTMODEPOSITION_STABILIZED1; + data.FlightModePosition[1] = ManualControlSettings::FLIGHTMODEPOSITION_STABILIZED1; + data.FlightModePosition[2] = ManualControlSettings::FLIGHTMODEPOSITION_STABILIZED1; + data.FlightModePosition[3] = ManualControlSettings::FLIGHTMODEPOSITION_STABILIZED1; + data.FlightModePosition[4] = ManualControlSettings::FLIGHTMODEPOSITION_STABILIZED1; + data.FlightModePosition[5] = ManualControlSettings::FLIGHTMODEPOSITION_STABILIZED1; + controlSettings->setData(data); + addModifiedObject(controlSettings, tr("Writing flight mode settings")); } void VehicleConfigurationHelper::applyLevellingConfiguration() @@ -254,7 +278,7 @@ void VehicleConfigurationHelper::applyLevellingConfiguration() data.GyroBias[1] = -bias.m_gyroYBias; data.GyroBias[2] = -bias.m_gyroZBias; - //AttitudeSettings::GetInstance(m_uavoManager)->setData(data); + attitudeSettings->setData(data); addModifiedObject(attitudeSettings, tr("Writing levelling bias settings")); } } @@ -263,6 +287,7 @@ void VehicleConfigurationHelper::applyMixerConfiguration(mixerSettings mixer) { // Set all mixer data MixerSettings* mSettings = MixerSettings::GetInstance(m_uavoManager); + Q_ASSERT(mSettings); // Set Mixer types and values QString mixerTypePattern = "Mixer%1Type"; @@ -467,7 +492,7 @@ void VehicleConfigurationHelper::resetGUIData() for(quint32 i = 0; i < SystemSettings::GUICONFIGDATA_NUMELEM; i++) { data.GUIConfigData[i] = 0; } - //sSettings->setData(data); + sSettings->setData(data); addModifiedObject(sSettings, tr("Preparing vehicle settings")); } diff --git a/ground/openpilotgcs/src/plugins/setupwizard/vehicleconfigurationhelper.h b/ground/openpilotgcs/src/plugins/setupwizard/vehicleconfigurationhelper.h index 9ee7c1beb..d5efb543f 100644 --- a/ground/openpilotgcs/src/plugins/setupwizard/vehicleconfigurationhelper.h +++ b/ground/openpilotgcs/src/plugins/setupwizard/vehicleconfigurationhelper.h @@ -72,7 +72,7 @@ private: static const int MIXER_TYPE_MOTOR = 1; static const int MIXER_TYPE_SERVO = 2; - static const int PROGRESS_STEPS = 8; + static const int PROGRESS_STEPS = 9; VehicleConfigurationSource *m_configSource; UAVObjectManager *m_uavoManager; From c483d429375c28506c4b8fe441a2898cf6d46ee0 Mon Sep 17 00:00:00 2001 From: Fredrik Arvidsson Date: Tue, 21 Aug 2012 01:07:38 +0200 Subject: [PATCH 010/105] OP-39 Added mixer and motor configuration for Hexa and Octocopters. Changed so that the Flex port is set to be serial telemetry port by default. Added some description texts for the different multirotor types. Fixed disabling/enabling of Cancel and Back buttons during processing like bias calculation and saving of configuration. Converted summary text to html and added some formatting of the text. Added message if no controller is connected on saving the configuration. --- .../setupwizard/pages/controllerpage.ui | 4 +- .../plugins/setupwizard/pages/flashpage.cpp | 17 +- .../plugins/setupwizard/pages/inputpage.ui | 6 +- .../setupwizard/pages/levellingpage.cpp | 10 +- .../setupwizard/pages/levellingpage.ui | 6 +- .../plugins/setupwizard/pages/multipage.cpp | 50 +- .../src/plugins/setupwizard/pages/multipage.h | 2 + .../plugins/setupwizard/pages/multipage.ui | 3 +- .../plugins/setupwizard/pages/outputpage.ui | 8 +- .../plugins/setupwizard/pages/startpage.ui | 4 +- .../plugins/setupwizard/pages/summarypage.ui | 15 +- .../src/plugins/setupwizard/setupwizard.cpp | 22 +- .../vehicleconfigurationhelper.cpp | 480 +++++++++++++++++- 13 files changed, 569 insertions(+), 58 deletions(-) diff --git a/ground/openpilotgcs/src/plugins/setupwizard/pages/controllerpage.ui b/ground/openpilotgcs/src/plugins/setupwizard/pages/controllerpage.ui index 61a6d1ff7..14d37b737 100644 --- a/ground/openpilotgcs/src/plugins/setupwizard/pages/controllerpage.ui +++ b/ground/openpilotgcs/src/plugins/setupwizard/pages/controllerpage.ui @@ -29,9 +29,9 @@ p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:12pt; font-weight:600;">OpenPilot board identification</span></p> <p style="-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:8pt;"></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt;">To continue we need to know what kind of OpenPilot board you want the wizard to create a configuration for. The wizard will try to automatically detect what type of board you have connected.</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt;">To continue the wizard needs to know what kind of OpenPilot controller you want to create a configuration for. The wizard will try to automatically detect what type of board you have when connected.</span></p> <p style="-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:10pt;"></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt;">Please connect the board to a free usb port on your computer, or if a serial modem like BlueTooth, PipX or other is used, then power up the board and select the device to connect with from the list below. Then press Connect.</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt;">Please connect the board to a free usb port on your computer, or if a serial modem like BlueTooth, PipX or other is used, power up the board and select the device to connect with from the list below. Then press 'Connect'.</span></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt;">If the board already is connected and succesfully detected the board type will allready be displayed. You can disconnect and select another device if you need to detect another board.</span></p></body></html> diff --git a/ground/openpilotgcs/src/plugins/setupwizard/pages/flashpage.cpp b/ground/openpilotgcs/src/plugins/setupwizard/pages/flashpage.cpp index f7438c8be..79014eaf5 100644 --- a/ground/openpilotgcs/src/plugins/setupwizard/pages/flashpage.cpp +++ b/ground/openpilotgcs/src/plugins/setupwizard/pages/flashpage.cpp @@ -25,6 +25,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ +#include #include "flashpage.h" #include "ui_flashpage.h" #include "setupwizard.h" @@ -55,14 +56,28 @@ bool FlashPage::isComplete() const void FlashPage::writeToController() { + if(!getWizard()->getConnectionManager()->isConnected()) { + QMessageBox msgBox; + msgBox.setText(tr("An OpenPilot controller must be connected to your computer to save the " + "configuration.\nPlease connect your OpenPilot controller to your computer and try again.")); + msgBox.setStandardButtons(QMessageBox::Ok); + msgBox.setDefaultButton(QMessageBox::Ok); + msgBox.exec(); + return; + } + ui->saveButton->setEnabled(false); + getWizard()->button(QWizard::CancelButton)->setEnabled(false); + getWizard()->button(QWizard::BackButton)->setEnabled(false); VehicleConfigurationHelper helper(getWizard()); connect(&helper, SIGNAL(saveProgress(int, int, QString)),this, SLOT(saveProgress(int, int, QString))); m_successfulWrite = helper.setupVehicle(); disconnect(&helper, SIGNAL(saveProgress(int, int, QString)),this, SLOT(saveProgress(int, int, QString))); - emit completeChanged(); ui->saveProgressLabel->setText(QString("%2").arg(m_successfulWrite ? "green" : "red", ui->saveProgressLabel->text())); ui->saveButton->setEnabled(true); + getWizard()->button(QWizard::CancelButton)->setEnabled(true); + getWizard()->button(QWizard::BackButton)->setEnabled(true); + emit completeChanged(); } void FlashPage::saveProgress(int total, int current, QString description) diff --git a/ground/openpilotgcs/src/plugins/setupwizard/pages/inputpage.ui b/ground/openpilotgcs/src/plugins/setupwizard/pages/inputpage.ui index 0512ac8c3..75cd62c94 100644 --- a/ground/openpilotgcs/src/plugins/setupwizard/pages/inputpage.ui +++ b/ground/openpilotgcs/src/plugins/setupwizard/pages/inputpage.ui @@ -29,7 +29,7 @@ p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:12pt; font-weight:600;">OpenPilot basic input signal configuration</span></p> <p style="-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;"></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt;">The OpenPilot controller supports many different types of input signals. Please select the type of input that matches your Receiver configuration. If you are unsure leave the default option selected and continue the wizard.</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt;">The OpenPilot controller supports many different types of input signals. Please select the type of input that matches your receiver configuration. If you are unsure just leave the default option selected and continue the wizard.</span></p> <p style="-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:10pt;"></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt;">Some input options require the OpenPilot controller to be rebooted before the changes can take place. If an option that requires a reboot is selected the controller will need to be rebooted at the end of this wizard after the configuration is written to the controller.</span></p></body></html> @@ -44,9 +44,9 @@ p, li { white-space: pre-wrap; } 20 - 200 + 220 561 - 181 + 160 diff --git a/ground/openpilotgcs/src/plugins/setupwizard/pages/levellingpage.cpp b/ground/openpilotgcs/src/plugins/setupwizard/pages/levellingpage.cpp index 5438f1a83..10afada80 100644 --- a/ground/openpilotgcs/src/plugins/setupwizard/pages/levellingpage.cpp +++ b/ground/openpilotgcs/src/plugins/setupwizard/pages/levellingpage.cpp @@ -62,7 +62,7 @@ void LevellingPage::performLevelling() if(!getWizard()->getConnectionManager()->isConnected()) { QMessageBox msgBox; msgBox.setText(tr("An OpenPilot controller must be connected to your computer to perform bias " - "calculations.\nPlease connect your OpenPilot controller to continue.")); + "calculations.\nPlease connect your OpenPilot controller to your computer and try again.")); msgBox.setStandardButtons(QMessageBox::Ok); msgBox.setDefaultButton(QMessageBox::Ok); msgBox.exec(); @@ -74,11 +74,15 @@ void LevellingPage::performLevelling() // Measure every 100ms * 100times = 10s m_levellingUtil = new LevellingUtil(BIAS_CYCLES, BIAS_PERIOD); } + emit completeChanged(); + connect(m_levellingUtil, SIGNAL(progress(long,long)), this, SLOT(levellingProgress(long,long))); connect(m_levellingUtil, SIGNAL(done(accelGyroBias)), this, SLOT(levellingDone(accelGyroBias))); connect(m_levellingUtil, SIGNAL(timeout(QString)), this, SLOT(levellingTimeout(QString))); + getWizard()->button(QWizard::CancelButton)->setEnabled(false); + getWizard()->button(QWizard::BackButton)->setEnabled(false); ui->levelButton->setEnabled(false); - emit completeChanged(); + m_levellingUtil->start(); } @@ -118,5 +122,7 @@ void LevellingPage::stopLevelling() disconnect(m_levellingUtil, SIGNAL(done(accelGyroBias)), this, SLOT(levellingDone(accelGyroBias))); disconnect(m_levellingUtil, SIGNAL(timeout(QString)), this, SLOT(levellingTimeout(QString))); ui->levelButton->setEnabled(true); + getWizard()->button(QWizard::CancelButton)->setEnabled(true); + getWizard()->button(QWizard::BackButton)->setEnabled(true); } } diff --git a/ground/openpilotgcs/src/plugins/setupwizard/pages/levellingpage.ui b/ground/openpilotgcs/src/plugins/setupwizard/pages/levellingpage.ui index e86ae3eaf..da1f582e7 100644 --- a/ground/openpilotgcs/src/plugins/setupwizard/pages/levellingpage.ui +++ b/ground/openpilotgcs/src/plugins/setupwizard/pages/levellingpage.ui @@ -27,13 +27,11 @@ <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:12pt; font-weight:600;">OpenPilot controller levelling procedure</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:12pt; font-weight:600;">OpenPilot controller levelling calibration procedure</span></p> <p style="-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;"></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt;">This step can only be performed if you have the OpenPilot controller connected and identified by the first step in this wizard.</span></p> -<p style="-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:10pt;"></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt;">The wizard needs to get information from the controller about in which position the vehicle normally is considered to be level. To be able to successfully perform these measurements you need to place the vehicle on a flat and as level as possible surface. Example of such surfaces could be a table top or the floor. Be careful to assure that the vehicle really is level since this step will affect the accelerometer and gyro bias in the controller software.</span></p> <p style="-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:10pt;"></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt;">To perform the levelling, please push the Calculate button and wait for the process to finish.</span></p></body></html> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt;">To perform the levelling, please push the 'Calculate' button and wait for the process to finish.</span></p></body></html> Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop diff --git a/ground/openpilotgcs/src/plugins/setupwizard/pages/multipage.cpp b/ground/openpilotgcs/src/plugins/setupwizard/pages/multipage.cpp index 9963422ea..37419eabb 100644 --- a/ground/openpilotgcs/src/plugins/setupwizard/pages/multipage.cpp +++ b/ground/openpilotgcs/src/plugins/setupwizard/pages/multipage.cpp @@ -69,16 +69,42 @@ bool MultiPage::validatePage() void MultiPage::setupMultiTypesCombo() { - ui->typeCombo->addItem("Tricopter", SetupWizard::MULTI_ROTOR_TRI_Y); - ui->typeCombo->addItem("Quadcopter X", SetupWizard::MULTI_ROTOR_QUAD_X); - ui->typeCombo->addItem("Quadcopter +", SetupWizard::MULTI_ROTOR_QUAD_PLUS); - ui->typeCombo->addItem("Hexacopter", SetupWizard::MULTI_ROTOR_HEXA); - ui->typeCombo->addItem("Hexacopter Coax (Y6)", SetupWizard::MULTI_ROTOR_HEXA_COAX_Y); - ui->typeCombo->addItem("Hexacopter H", SetupWizard::MULTI_ROTOR_HEXA_H); - ui->typeCombo->addItem("Octocopter", SetupWizard::MULTI_ROTOR_OCTO); - ui->typeCombo->addItem("Octocopter Coax X", SetupWizard::MULTI_ROTOR_OCTO_COAX_X); - ui->typeCombo->addItem("Octocopter Coax +", SetupWizard::MULTI_ROTOR_OCTO_COAX_PLUS); - ui->typeCombo->addItem("Octocopter V", SetupWizard::MULTI_ROTOR_OCTO_V); + ui->typeCombo->addItem(tr("Tricopter"), SetupWizard::MULTI_ROTOR_TRI_Y); + m_descriptions << tr("The Tricopter uses three motors and one servo. The servo is used to give yaw authority to the aft motor. " + "The fore motors are rotating in opposite directions. The Tricopter is known for its sweeping yaw movement and " + "it is very well suited for FPV since the front rotors are spread wide apart."); + + ui->typeCombo->addItem(tr("Quadcopter X"), SetupWizard::MULTI_ROTOR_QUAD_X); + m_descriptions << tr("The X Quadcopter uses four motors and is the most common multi rotor configuration. Two of the motors rotates clockwise " + "and two counter clockwise. The motors positioned diagonal of each other rotates in the same direction. " + "This setup is perfect for sport flying and is also commonly used for FPV platforms."); + + ui->typeCombo->addItem(tr("Quadcopter +"), SetupWizard::MULTI_ROTOR_QUAD_PLUS); + m_descriptions << tr("The Plus(+) Quadcopter uses four motors and is similar to the X Quadcopter but the forward direction is offset by 45 degrees. " + "The motors fore and aft rotates in one direction and the motors steerboard and port rotates in the other. " + "This setup was one of the first to be used and is still used for sport flying. This configuration is not that well suited " + "for FPV since the fore rotor tend to be in the way of the camera."); + + ui->typeCombo->addItem(tr("Hexacopter"), SetupWizard::MULTI_ROTOR_HEXA); + m_descriptions << tr("Hexacopter"); + + ui->typeCombo->addItem(tr("Hexacopter Coax (Y6)"), SetupWizard::MULTI_ROTOR_HEXA_COAX_Y); + m_descriptions << tr("Hexacopter Coax (Y6)"); + + ui->typeCombo->addItem(tr("Hexacopter H"), SetupWizard::MULTI_ROTOR_HEXA_H); + m_descriptions << tr("Hexacopter H"); + + ui->typeCombo->addItem(tr("Octocopter"), SetupWizard::MULTI_ROTOR_OCTO); + m_descriptions << tr("Octocopter"); + + ui->typeCombo->addItem(tr("Octocopter Coax X"), SetupWizard::MULTI_ROTOR_OCTO_COAX_X); + m_descriptions << tr("Octocopter Coax X"); + + ui->typeCombo->addItem(tr("Octocopter Coax +"), SetupWizard::MULTI_ROTOR_OCTO_COAX_PLUS); + m_descriptions << tr("Octocopter Coax +"); + + ui->typeCombo->addItem(tr("Octocopter V"), SetupWizard::MULTI_ROTOR_OCTO_V); + m_descriptions << tr("Octocopter V"); } void MultiPage::updateAvailableTypes() @@ -94,9 +120,7 @@ void MultiPage::updateImageAndDescription() { SetupWizard::VEHICLE_SUB_TYPE type = (SetupWizard::VEHICLE_SUB_TYPE) ui->typeCombo->itemData(ui->typeCombo->currentIndex()).toInt(); QString elementId = ""; - QString description = "Descriptive text with information about "; - description.append(ui->typeCombo->currentText()); - description.append(" multirotors."); + QString description = m_descriptions.at(ui->typeCombo->currentIndex()); switch(type) { case SetupWizard::MULTI_ROTOR_TRI_Y: diff --git a/ground/openpilotgcs/src/plugins/setupwizard/pages/multipage.h b/ground/openpilotgcs/src/plugins/setupwizard/pages/multipage.h index 0ffa84a36..a4d8ebf42 100644 --- a/ground/openpilotgcs/src/plugins/setupwizard/pages/multipage.h +++ b/ground/openpilotgcs/src/plugins/setupwizard/pages/multipage.h @@ -30,6 +30,7 @@ #include #include +#include #include "abstractwizardpage.h" @@ -54,6 +55,7 @@ private: void setupMultiTypesCombo(); QGraphicsSvgItem *multiPic; void updateAvailableTypes(); + QList m_descriptions; private slots: void updateImageAndDescription(); diff --git a/ground/openpilotgcs/src/plugins/setupwizard/pages/multipage.ui b/ground/openpilotgcs/src/plugins/setupwizard/pages/multipage.ui index 2c33fb4d5..d6d62f704 100644 --- a/ground/openpilotgcs/src/plugins/setupwizard/pages/multipage.ui +++ b/ground/openpilotgcs/src/plugins/setupwizard/pages/multipage.ui @@ -31,7 +31,8 @@ p, li { white-space: pre-wrap; } <p style="-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;"></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt;">This part of the wizard will set up the OpenPilot controller for use with a flying platform with multiple rotors. The wizard supports the most common types of multirotors. Other variants of multirotors can be configured by using custom configuration options in the configuration plugin in GCS.</span></p> <p style="-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:10pt;"></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt;">Please select the type of multirotor you want to create a configuration for below:</span></p></body></html> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt;">Please select the type of multirotor you want to create a configuration for below:</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt;">(Depending on input configuration all types may not be available to select from the list.)</span></p></body></html> Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop diff --git a/ground/openpilotgcs/src/plugins/setupwizard/pages/outputpage.ui b/ground/openpilotgcs/src/plugins/setupwizard/pages/outputpage.ui index 7b290cece..37cd5c209 100644 --- a/ground/openpilotgcs/src/plugins/setupwizard/pages/outputpage.ui +++ b/ground/openpilotgcs/src/plugins/setupwizard/pages/outputpage.ui @@ -44,9 +44,9 @@ p, li { white-space: pre-wrap; } 20 - 200 + 220 561 - 181 + 161 @@ -64,7 +64,7 @@ p, li { white-space: pre-wrap; } - 160 + 290 40 100 100 @@ -93,7 +93,7 @@ p, li { white-space: pre-wrap; } - 30 + 160 40 100 100 diff --git a/ground/openpilotgcs/src/plugins/setupwizard/pages/startpage.ui b/ground/openpilotgcs/src/plugins/setupwizard/pages/startpage.ui index 0f656f35c..e6a293d90 100644 --- a/ground/openpilotgcs/src/plugins/setupwizard/pages/startpage.ui +++ b/ground/openpilotgcs/src/plugins/setupwizard/pages/startpage.ui @@ -36,12 +36,12 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:12pt; font-weight:600;">Welcome to the OpenPilot Setup Wizard</span></p> <p style="-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:8pt;"></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt;">This wizard will guide you through the basic steps of setting up your OpenPilot controller board. The following pages contains simple questions about your vehicle and its characteristics. </span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt;">From the information </span><span style=" font-size:10pt;">gathered</span><span style=" font-size:10pt;"> the wizard will create a baseline configuration that should be good enough for you to get a quick start using your OpenPilot product.</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt;">From the information gathered the wizard will create a baseline configuration that should be good enough for you to get a quick start using your OpenPilot product.</span></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt;">The baseline configuration can, if desired, be uploaded to the OpenPilot Controller board at the end of this wizard.</span></p> <p style="-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:10pt;"></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt;">This wizard does not contain the full range of settings available in the GCS Config plugin. All configuration parameters can be changed at later by using the GCS Config plugin.</span></p> <p style="-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:10pt;"></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt;">Ok, lets start the configuration by clicking on the 'Next' button below.</span></p></body></html> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt;">Ok, lets start the configuration by clicking on the 'Next'/'Continue' button below.</span></p></body></html> Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop diff --git a/ground/openpilotgcs/src/plugins/setupwizard/pages/summarypage.ui b/ground/openpilotgcs/src/plugins/setupwizard/pages/summarypage.ui index 4c91ec369..68f0ea8fa 100644 --- a/ground/openpilotgcs/src/plugins/setupwizard/pages/summarypage.ui +++ b/ground/openpilotgcs/src/plugins/setupwizard/pages/summarypage.ui @@ -30,10 +30,9 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:12pt; font-weight:600;">OpenPilot configuration summary</span></p> <p style="-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;"></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt;">The first part of this wizard is now complete. The information required to create a basic OpenPilot controller configuration has been collected and a configuration can be created and saved.</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt;">Below is a summary of the configuration and a button that links to a diagram illustrating how to connect required hardware and the OpenPilotController with the current configuration.</span></p> <p style="-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:10pt;"></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt;">Below is a summary of the configuration and a button that links to a schematic picture illustrating how to connect selected hardware and the OpenPilotController with the current configuration.</span></p> -<p style="-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:10pt;"></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt;">To complete the wizard and write the confguration directly to the OpenPilot controller, or if no OpenPilotController is connected save the configuration to disk for later usage, please continue to the next and last step of this wizard.</span></p></body></html> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt;">To complete the wizard and write the configuration directly to the OpenPilot controller please continue to the next and last step of this wizard.</span></p></body></html> Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop @@ -46,9 +45,9 @@ p, li { white-space: pre-wrap; } 20 - 240 + 220 561 - 140 + 160 @@ -67,7 +66,7 @@ p, li { white-space: pre-wrap; } 440 - 20 + 34 100 100 @@ -97,9 +96,9 @@ Illustration 20 - 20 + 30 400 - 100 + 110 diff --git a/ground/openpilotgcs/src/plugins/setupwizard/setupwizard.cpp b/ground/openpilotgcs/src/plugins/setupwizard/setupwizard.cpp index 155accd14..942eb5d93 100644 --- a/ground/openpilotgcs/src/plugins/setupwizard/setupwizard.cpp +++ b/ground/openpilotgcs/src/plugins/setupwizard/setupwizard.cpp @@ -107,7 +107,7 @@ int SetupWizard::nextId() const QString SetupWizard::getSummaryText() { QString summary = ""; - summary.append(tr("Controller type: ")); + summary.append("").append(tr("Controller type: ")).append(""); switch(getControllerType()) { case CONTROLLER_CC: @@ -127,15 +127,15 @@ QString SetupWizard::getSummaryText() break; } - summary.append('\n'); - summary.append(tr("Vehicle type: ")); + summary.append("
"); + summary.append("").append(tr("Vehicle type: ")).append(""); switch (getVehicleType()) { case VEHICLE_MULTI: summary.append(tr("Multirotor")); - summary.append('\n'); - summary.append(tr("Vehicle sub type: ")); + summary.append("
"); + summary.append("").append(tr("Vehicle sub type: ")).append(""); switch (getVehicleSubType()) { case SetupWizard::MULTI_ROTOR_TRI_Y: @@ -187,8 +187,8 @@ QString SetupWizard::getSummaryText() summary.append(tr("Unknown")); } - summary.append('\n'); - summary.append(tr("Input type: ")); + summary.append("
"); + summary.append("").append(tr("Input type: ")).append(""); switch (getInputType()) { case INPUT_PWM: @@ -207,8 +207,8 @@ QString SetupWizard::getSummaryText() summary.append(tr("Unknown")); } - summary.append('\n'); - summary.append(tr("ESC type: ")); + summary.append("
"); + summary.append("").append(tr("ESC type: ")).append(""); switch (getESCType()) { case ESC_LEGACY: @@ -221,8 +221,8 @@ QString SetupWizard::getSummaryText() summary.append(tr("Unknown")); } - summary.append('\n'); - summary.append(tr("Accel & Gyro bias calibrated: ")); + summary.append("
"); + summary.append("").append(tr("Accel & Gyro bias calibrated: ")).append(""); if (isLevellingPerformed()) { summary.append(tr("Yes")); } diff --git a/ground/openpilotgcs/src/plugins/setupwizard/vehicleconfigurationhelper.cpp b/ground/openpilotgcs/src/plugins/setupwizard/vehicleconfigurationhelper.cpp index 0de560ec4..125f5d938 100644 --- a/ground/openpilotgcs/src/plugins/setupwizard/vehicleconfigurationhelper.cpp +++ b/ground/openpilotgcs/src/plugins/setupwizard/vehicleconfigurationhelper.cpp @@ -96,7 +96,10 @@ void VehicleConfigurationHelper::applyHardwareConfiguration() case VehicleConfigurationSource::CONTROLLER_CC3D: // Reset all ports data.CC_RcvrPort = HwSettings::CC_RCVRPORT_DISABLED; - data.CC_FlexiPort = HwSettings::CC_FLEXIPORT_DISABLED; + + //Default flexiport to be active telemetry link + data.CC_FlexiPort = HwSettings::CC_FLEXIPORT_TELEMETRY; + data.CC_MainPort = HwSettings::CC_MAINPORT_DISABLED; switch(m_configSource->getInputType()) { @@ -500,10 +503,13 @@ void VehicleConfigurationHelper::resetGUIData() void VehicleConfigurationHelper::setupTriCopter() { // Typical vehicle setup - // 1. Setup and apply mixer + // 1. Setup mixer data // 2. Setup GUI data + // 3. Apply changes mixerSettings mixer; + GUIConfigDataUnion guiSettings = getGUIConfigData(); + mixer.channels[0].type = MIXER_TYPE_MOTOR; mixer.channels[0].throttle1 = 100; mixer.channels[0].throttle2 = 0; @@ -532,15 +538,12 @@ void VehicleConfigurationHelper::setupTriCopter() mixer.channels[3].pitch = 0; mixer.channels[3].yaw = 100; - applyMixerConfiguration(mixer); - - GUIConfigDataUnion guiSettings = getGUIConfigData(); - guiSettings.multi.VTOLMotorNW = 1; guiSettings.multi.VTOLMotorNE = 2; guiSettings.multi.VTOLMotorS = 3; guiSettings.multi.TRIYaw = 4; + applyMixerConfiguration(mixer); applyMultiGUISettings(SystemSettings::AIRFRAMETYPE_TRI, guiSettings); } @@ -646,13 +649,476 @@ void VehicleConfigurationHelper::setupQuadCopter() } applyMixerConfiguration(mixer); applyMultiGUISettings(frame, guiSettings); - } void VehicleConfigurationHelper::setupHexaCopter() { + mixerSettings mixer; + GUIConfigDataUnion guiSettings = getGUIConfigData(); + SystemSettings::AirframeTypeOptions frame; + + switch(m_configSource->getVehicleSubType()) + { + case VehicleConfigurationSource::MULTI_ROTOR_HEXA: { + frame = SystemSettings::AIRFRAMETYPE_HEXA; + + mixer.channels[0].type = MIXER_TYPE_MOTOR; + mixer.channels[0].throttle1 = 100; + mixer.channels[0].throttle2 = 0; + mixer.channels[0].roll = 0; + mixer.channels[0].pitch = 33; + mixer.channels[0].yaw = -33; + + mixer.channels[1].type = MIXER_TYPE_MOTOR; + mixer.channels[1].throttle1 = 100; + mixer.channels[1].throttle2 = 0; + mixer.channels[1].roll = -50; + mixer.channels[1].pitch = 33; + mixer.channels[1].yaw = 33; + + mixer.channels[2].type = MIXER_TYPE_MOTOR; + mixer.channels[2].throttle1 = 100; + mixer.channels[2].throttle2 = 0; + mixer.channels[2].roll = -50; + mixer.channels[2].pitch = -33; + mixer.channels[2].yaw = -33; + + mixer.channels[3].type = MIXER_TYPE_MOTOR; + mixer.channels[3].throttle1 = 100; + mixer.channels[3].throttle2 = 0; + mixer.channels[3].roll = 0; + mixer.channels[3].pitch = -33; + mixer.channels[3].yaw = 33; + + mixer.channels[4].type = MIXER_TYPE_MOTOR; + mixer.channels[4].throttle1 = 100; + mixer.channels[4].throttle2 = 0; + mixer.channels[4].roll = 50; + mixer.channels[4].pitch = -33; + mixer.channels[4].yaw = -33; + + mixer.channels[5].type = MIXER_TYPE_MOTOR; + mixer.channels[5].throttle1 = 100; + mixer.channels[5].throttle2 = 0; + mixer.channels[5].roll = 50; + mixer.channels[5].pitch = 33; + mixer.channels[5].yaw = 33; + + guiSettings.multi.VTOLMotorN = 1; + guiSettings.multi.VTOLMotorNE = 2; + guiSettings.multi.VTOLMotorSE = 3; + guiSettings.multi.VTOLMotorS = 4; + guiSettings.multi.VTOLMotorSW = 5; + guiSettings.multi.VTOLMotorNW = 6; + + break; + } + case VehicleConfigurationSource::MULTI_ROTOR_HEXA_COAX_Y: { + frame = SystemSettings::AIRFRAMETYPE_HEXACOAX; + + mixer.channels[0].type = MIXER_TYPE_MOTOR; + mixer.channels[0].throttle1 = 100; + mixer.channels[0].throttle2 = 0; + mixer.channels[0].roll = 100; + mixer.channels[0].pitch = 25; + mixer.channels[0].yaw = -66; + + mixer.channels[1].type = MIXER_TYPE_MOTOR; + mixer.channels[1].throttle1 = 100; + mixer.channels[1].throttle2 = 0; + mixer.channels[1].roll = 100; + mixer.channels[1].pitch = 25; + mixer.channels[1].yaw = 66; + + mixer.channels[2].type = MIXER_TYPE_MOTOR; + mixer.channels[2].throttle1 = 100; + mixer.channels[2].throttle2 = 0; + mixer.channels[2].roll = -100; + mixer.channels[2].pitch = 25; + mixer.channels[2].yaw = -66; + + mixer.channels[3].type = MIXER_TYPE_MOTOR; + mixer.channels[3].throttle1 = 100; + mixer.channels[3].throttle2 = 0; + mixer.channels[3].roll = -100; + mixer.channels[3].pitch = 25; + mixer.channels[3].yaw = 66; + + mixer.channels[4].type = MIXER_TYPE_MOTOR; + mixer.channels[4].throttle1 = 100; + mixer.channels[4].throttle2 = 0; + mixer.channels[4].roll = 0; + mixer.channels[4].pitch = -50; + mixer.channels[4].yaw = -66; + + mixer.channels[5].type = MIXER_TYPE_MOTOR; + mixer.channels[5].throttle1 = 100; + mixer.channels[5].throttle2 = 0; + mixer.channels[5].roll = 0; + mixer.channels[5].pitch = -50; + mixer.channels[5].yaw = 66; + + guiSettings.multi.VTOLMotorNW = 1; + guiSettings.multi.VTOLMotorW = 2; + guiSettings.multi.VTOLMotorNE = 3; + guiSettings.multi.VTOLMotorE = 4; + guiSettings.multi.VTOLMotorS = 5; + guiSettings.multi.VTOLMotorSE = 6; + + break; + } + case VehicleConfigurationSource::MULTI_ROTOR_HEXA_H: { + frame = SystemSettings::AIRFRAMETYPE_HEXAX; + + mixer.channels[0].type = MIXER_TYPE_MOTOR; + mixer.channels[0].throttle1 = 100; + mixer.channels[0].throttle2 = 0; + mixer.channels[0].roll = -33; + mixer.channels[0].pitch = 50; + mixer.channels[0].yaw = -33; + + mixer.channels[1].type = MIXER_TYPE_MOTOR; + mixer.channels[1].throttle1 = 100; + mixer.channels[1].throttle2 = 0; + mixer.channels[1].roll = -33; + mixer.channels[1].pitch = 0; + mixer.channels[1].yaw = 33; + + mixer.channels[2].type = MIXER_TYPE_MOTOR; + mixer.channels[2].throttle1 = 100; + mixer.channels[2].throttle2 = 0; + mixer.channels[2].roll = -33; + mixer.channels[2].pitch = -50; + mixer.channels[2].yaw = -33; + + mixer.channels[3].type = MIXER_TYPE_MOTOR; + mixer.channels[3].throttle1 = 100; + mixer.channels[3].throttle2 = 0; + mixer.channels[3].roll = -33; + mixer.channels[3].pitch = -50; + mixer.channels[3].yaw = 33; + + mixer.channels[4].type = MIXER_TYPE_MOTOR; + mixer.channels[4].throttle1 = 100; + mixer.channels[4].throttle2 = 0; + mixer.channels[4].roll = 33; + mixer.channels[4].pitch = 0; + mixer.channels[4].yaw = -33; + + mixer.channels[5].type = MIXER_TYPE_MOTOR; + mixer.channels[5].throttle1 = 100; + mixer.channels[5].throttle2 = 0; + mixer.channels[5].roll = 33; + mixer.channels[5].pitch = 50; + mixer.channels[5].yaw = -33; + + guiSettings.multi.VTOLMotorNE = 1; + guiSettings.multi.VTOLMotorE = 2; + guiSettings.multi.VTOLMotorSE = 3; + guiSettings.multi.VTOLMotorSW = 4; + guiSettings.multi.VTOLMotorW = 5; + guiSettings.multi.VTOLMotorNW = 6; + + break; + } + default: + break; + } + applyMixerConfiguration(mixer); + applyMultiGUISettings(frame, guiSettings); } void VehicleConfigurationHelper::setupOctoCopter() { + mixerSettings mixer; + GUIConfigDataUnion guiSettings = getGUIConfigData(); + SystemSettings::AirframeTypeOptions frame; + + switch(m_configSource->getVehicleSubType()) + { + case VehicleConfigurationSource::MULTI_ROTOR_OCTO: { + frame = SystemSettings::AIRFRAMETYPE_OCTO; + + mixer.channels[0].type = MIXER_TYPE_MOTOR; + mixer.channels[0].throttle1 = 100; + mixer.channels[0].throttle2 = 0; + mixer.channels[0].roll = 0; + mixer.channels[0].pitch = 33; + mixer.channels[0].yaw = -25; + + mixer.channels[1].type = MIXER_TYPE_MOTOR; + mixer.channels[1].throttle1 = 100; + mixer.channels[1].throttle2 = 0; + mixer.channels[1].roll = -33; + mixer.channels[1].pitch = 33; + mixer.channels[1].yaw = 25; + + mixer.channels[2].type = MIXER_TYPE_MOTOR; + mixer.channels[2].throttle1 = 100; + mixer.channels[2].throttle2 = 0; + mixer.channels[2].roll = -33; + mixer.channels[2].pitch = 0; + mixer.channels[2].yaw = -25; + + mixer.channels[3].type = MIXER_TYPE_MOTOR; + mixer.channels[3].throttle1 = 100; + mixer.channels[3].throttle2 = 0; + mixer.channels[3].roll = -33; + mixer.channels[3].pitch = -33; + mixer.channels[3].yaw = 25; + + mixer.channels[4].type = MIXER_TYPE_MOTOR; + mixer.channels[4].throttle1 = 100; + mixer.channels[4].throttle2 = 0; + mixer.channels[4].roll = 0; + mixer.channels[4].pitch = -33; + mixer.channels[4].yaw = -25; + + mixer.channels[5].type = MIXER_TYPE_MOTOR; + mixer.channels[5].throttle1 = 100; + mixer.channels[5].throttle2 = 0; + mixer.channels[5].roll = 33; + mixer.channels[5].pitch = -33; + mixer.channels[5].yaw = 25; + + mixer.channels[6].type = MIXER_TYPE_MOTOR; + mixer.channels[6].throttle1 = 100; + mixer.channels[6].throttle2 = 0; + mixer.channels[6].roll = 33; + mixer.channels[6].pitch = 0; + mixer.channels[6].yaw = -25; + + mixer.channels[7].type = MIXER_TYPE_MOTOR; + mixer.channels[7].throttle1 = 100; + mixer.channels[7].throttle2 = 0; + mixer.channels[7].roll = 33; + mixer.channels[7].pitch = 33; + mixer.channels[7].yaw = 25; + + guiSettings.multi.VTOLMotorN = 1; + guiSettings.multi.VTOLMotorNE = 2; + guiSettings.multi.VTOLMotorE = 3; + guiSettings.multi.VTOLMotorSE = 4; + guiSettings.multi.VTOLMotorS = 5; + guiSettings.multi.VTOLMotorSW = 6; + guiSettings.multi.VTOLMotorW = 7; + guiSettings.multi.VTOLMotorNW = 8; + + break; + } + case VehicleConfigurationSource::MULTI_ROTOR_OCTO_COAX_X: { + frame = SystemSettings::AIRFRAMETYPE_OCTOCOAXX; + + mixer.channels[0].type = MIXER_TYPE_MOTOR; + mixer.channels[0].throttle1 = 100; + mixer.channels[0].throttle2 = 0; + mixer.channels[0].roll = 50; + mixer.channels[0].pitch = 50; + mixer.channels[0].yaw = -50; + + mixer.channels[1].type = MIXER_TYPE_MOTOR; + mixer.channels[1].throttle1 = 100; + mixer.channels[1].throttle2 = 0; + mixer.channels[1].roll = 50; + mixer.channels[1].pitch = 50; + mixer.channels[1].yaw = 50; + + mixer.channels[2].type = MIXER_TYPE_MOTOR; + mixer.channels[2].throttle1 = 100; + mixer.channels[2].throttle2 = 0; + mixer.channels[2].roll = -50; + mixer.channels[2].pitch = 50; + mixer.channels[2].yaw = -50; + + mixer.channels[3].type = MIXER_TYPE_MOTOR; + mixer.channels[3].throttle1 = 100; + mixer.channels[3].throttle2 = 0; + mixer.channels[3].roll = -50; + mixer.channels[3].pitch = 50; + mixer.channels[3].yaw = 50; + + mixer.channels[4].type = MIXER_TYPE_MOTOR; + mixer.channels[4].throttle1 = 100; + mixer.channels[4].throttle2 = 0; + mixer.channels[4].roll = -50; + mixer.channels[4].pitch = -50; + mixer.channels[4].yaw = -50; + + mixer.channels[5].type = MIXER_TYPE_MOTOR; + mixer.channels[5].throttle1 = 100; + mixer.channels[5].throttle2 = 0; + mixer.channels[5].roll = -50; + mixer.channels[5].pitch = -50; + mixer.channels[5].yaw = 50; + + mixer.channels[6].type = MIXER_TYPE_MOTOR; + mixer.channels[6].throttle1 = 100; + mixer.channels[6].throttle2 = 0; + mixer.channels[6].roll = 50; + mixer.channels[6].pitch = -50; + mixer.channels[6].yaw = -50; + + mixer.channels[7].type = MIXER_TYPE_MOTOR; + mixer.channels[7].throttle1 = 100; + mixer.channels[7].throttle2 = 0; + mixer.channels[7].roll = 50; + mixer.channels[7].pitch = -50; + mixer.channels[7].yaw = 50; + + guiSettings.multi.VTOLMotorNW = 1; + guiSettings.multi.VTOLMotorN = 2; + guiSettings.multi.VTOLMotorNE = 3; + guiSettings.multi.VTOLMotorE = 4; + guiSettings.multi.VTOLMotorSE = 5; + guiSettings.multi.VTOLMotorS = 6; + guiSettings.multi.VTOLMotorSW = 7; + guiSettings.multi.VTOLMotorW = 8; + + break; + } + case VehicleConfigurationSource::MULTI_ROTOR_OCTO_COAX_PLUS: { + frame = SystemSettings::AIRFRAMETYPE_OCTOCOAXP; + + mixer.channels[0].type = MIXER_TYPE_MOTOR; + mixer.channels[0].throttle1 = 100; + mixer.channels[0].throttle2 = 0; + mixer.channels[0].roll = 0; + mixer.channels[0].pitch = 100; + mixer.channels[0].yaw = -50; + + mixer.channels[1].type = MIXER_TYPE_MOTOR; + mixer.channels[1].throttle1 = 100; + mixer.channels[1].throttle2 = 0; + mixer.channels[1].roll = 0; + mixer.channels[1].pitch = 100; + mixer.channels[1].yaw = 50; + + mixer.channels[2].type = MIXER_TYPE_MOTOR; + mixer.channels[2].throttle1 = 100; + mixer.channels[2].throttle2 = 0; + mixer.channels[2].roll = -100; + mixer.channels[2].pitch = 0; + mixer.channels[2].yaw = -50; + + mixer.channels[3].type = MIXER_TYPE_MOTOR; + mixer.channels[3].throttle1 = 100; + mixer.channels[3].throttle2 = 0; + mixer.channels[3].roll = -100; + mixer.channels[3].pitch = 0; + mixer.channels[3].yaw = 50; + + mixer.channels[4].type = MIXER_TYPE_MOTOR; + mixer.channels[4].throttle1 = 100; + mixer.channels[4].throttle2 = 0; + mixer.channels[4].roll = 0; + mixer.channels[4].pitch = -100; + mixer.channels[4].yaw = -50; + + mixer.channels[5].type = MIXER_TYPE_MOTOR; + mixer.channels[5].throttle1 = 100; + mixer.channels[5].throttle2 = 0; + mixer.channels[5].roll = 0; + mixer.channels[5].pitch = -100; + mixer.channels[5].yaw = 50; + + mixer.channels[6].type = MIXER_TYPE_MOTOR; + mixer.channels[6].throttle1 = 100; + mixer.channels[6].throttle2 = 0; + mixer.channels[6].roll = 100; + mixer.channels[6].pitch = 0; + mixer.channels[6].yaw = -50; + + mixer.channels[7].type = MIXER_TYPE_MOTOR; + mixer.channels[7].throttle1 = 100; + mixer.channels[7].throttle2 = 0; + mixer.channels[7].roll = 100; + mixer.channels[7].pitch = 0; + mixer.channels[7].yaw = 50; + + guiSettings.multi.VTOLMotorN = 1; + guiSettings.multi.VTOLMotorNE = 2; + guiSettings.multi.VTOLMotorE = 3; + guiSettings.multi.VTOLMotorSE = 4; + guiSettings.multi.VTOLMotorS = 5; + guiSettings.multi.VTOLMotorSW = 6; + guiSettings.multi.VTOLMotorW = 7; + guiSettings.multi.VTOLMotorNW = 8; + + break; + } + case VehicleConfigurationSource::MULTI_ROTOR_OCTO_V: { + frame = SystemSettings::AIRFRAMETYPE_OCTOV; + mixer.channels[0].type = MIXER_TYPE_MOTOR; + mixer.channels[0].throttle1 = 100; + mixer.channels[0].throttle2 = 0; + mixer.channels[0].roll = -25; + mixer.channels[0].pitch = 8; + mixer.channels[0].yaw = -25; + + mixer.channels[1].type = MIXER_TYPE_MOTOR; + mixer.channels[1].throttle1 = 100; + mixer.channels[1].throttle2 = 0; + mixer.channels[1].roll = -25; + mixer.channels[1].pitch = 25; + mixer.channels[1].yaw = 25; + + mixer.channels[2].type = MIXER_TYPE_MOTOR; + mixer.channels[2].throttle1 = 100; + mixer.channels[2].throttle2 = 0; + mixer.channels[2].roll = -25; + mixer.channels[2].pitch = -25; + mixer.channels[2].yaw = -25; + + mixer.channels[3].type = MIXER_TYPE_MOTOR; + mixer.channels[3].throttle1 = 100; + mixer.channels[3].throttle2 = 0; + mixer.channels[3].roll = -25; + mixer.channels[3].pitch = -8; + mixer.channels[3].yaw = 25; + + mixer.channels[4].type = MIXER_TYPE_MOTOR; + mixer.channels[4].throttle1 = 100; + mixer.channels[4].throttle2 = 0; + mixer.channels[4].roll = 25; + mixer.channels[4].pitch = -8; + mixer.channels[4].yaw = -25; + + mixer.channels[5].type = MIXER_TYPE_MOTOR; + mixer.channels[5].throttle1 = 100; + mixer.channels[5].throttle2 = 0; + mixer.channels[5].roll = 25; + mixer.channels[5].pitch = -25; + mixer.channels[5].yaw = 25; + + mixer.channels[6].type = MIXER_TYPE_MOTOR; + mixer.channels[6].throttle1 = 100; + mixer.channels[6].throttle2 = 0; + mixer.channels[6].roll = 25; + mixer.channels[6].pitch = 25; + mixer.channels[6].yaw = -25; + + mixer.channels[7].type = MIXER_TYPE_MOTOR; + mixer.channels[7].throttle1 = 100; + mixer.channels[7].throttle2 = 0; + mixer.channels[7].roll = 25; + mixer.channels[7].pitch = 8; + mixer.channels[7].yaw = 25; + + guiSettings.multi.VTOLMotorN = 1; + guiSettings.multi.VTOLMotorNE = 2; + guiSettings.multi.VTOLMotorE = 3; + guiSettings.multi.VTOLMotorSE = 4; + guiSettings.multi.VTOLMotorS = 5; + guiSettings.multi.VTOLMotorSW = 6; + guiSettings.multi.VTOLMotorW = 7; + guiSettings.multi.VTOLMotorNW = 8; + + break; + } + default: + break; + } + + applyMixerConfiguration(mixer); + applyMultiGUISettings(frame, guiSettings); } From 8e66133b2d9f3f55981fe5fcdc6064fbc8da5af3 Mon Sep 17 00:00:00 2001 From: Fredrik Arvidsson Date: Tue, 21 Aug 2012 23:10:38 +0200 Subject: [PATCH 011/105] OP-39 Added reset of stabilization data to default values when wizard writes its configuration. --- .../setupwizard/vehicleconfigurationhelper.cpp | 15 ++++++++++++++- .../setupwizard/vehicleconfigurationhelper.h | 3 ++- 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/ground/openpilotgcs/src/plugins/setupwizard/vehicleconfigurationhelper.cpp b/ground/openpilotgcs/src/plugins/setupwizard/vehicleconfigurationhelper.cpp index 125f5d938..1bac27ec5 100644 --- a/ground/openpilotgcs/src/plugins/setupwizard/vehicleconfigurationhelper.cpp +++ b/ground/openpilotgcs/src/plugins/setupwizard/vehicleconfigurationhelper.cpp @@ -33,6 +33,7 @@ #include "mixersettings.h" #include "systemsettings.h" #import "manualcontrolsettings.h" +#import "stabilizationsettings.h" VehicleConfigurationHelper::VehicleConfigurationHelper(VehicleConfigurationSource *configSource) : m_configSource(configSource), m_uavoManager(0), @@ -61,6 +62,7 @@ bool VehicleConfigurationHelper::setupVehicle() applyOutputConfiguration(); applyFlighModeConfiguration(); applyLevellingConfiguration(); + applyStabilizationConfiguration(); bool result = saveChangesToController(); if(result) { @@ -282,10 +284,21 @@ void VehicleConfigurationHelper::applyLevellingConfiguration() data.GyroBias[2] = -bias.m_gyroZBias; attitudeSettings->setData(data); - addModifiedObject(attitudeSettings, tr("Writing levelling bias settings")); + addModifiedObject(attitudeSettings, tr("Writing gyro and accelerometer bias settings")); } } +void VehicleConfigurationHelper::applyStabilizationConfiguration() +{ + StabilizationSettings *stabSettings = StabilizationSettings::GetInstance(m_uavoManager); + Q_ASSERT(stabSettings); + StabilizationSettings::DataFields data = stabSettings->getData(); + + StabilizationSettings defaultSettings; + stabSettings->setData(defaultSettings.getData()); + addModifiedObject(stabSettings, tr("Writing stabilization settings")); +} + void VehicleConfigurationHelper::applyMixerConfiguration(mixerSettings mixer) { // Set all mixer data diff --git a/ground/openpilotgcs/src/plugins/setupwizard/vehicleconfigurationhelper.h b/ground/openpilotgcs/src/plugins/setupwizard/vehicleconfigurationhelper.h index d5efb543f..d24fa973c 100644 --- a/ground/openpilotgcs/src/plugins/setupwizard/vehicleconfigurationhelper.h +++ b/ground/openpilotgcs/src/plugins/setupwizard/vehicleconfigurationhelper.h @@ -72,7 +72,7 @@ private: static const int MIXER_TYPE_MOTOR = 1; static const int MIXER_TYPE_SERVO = 2; - static const int PROGRESS_STEPS = 9; + static const int PROGRESS_STEPS = 10; VehicleConfigurationSource *m_configSource; UAVObjectManager *m_uavoManager; @@ -86,6 +86,7 @@ private: void applyOutputConfiguration(); void applyFlighModeConfiguration(); void applyLevellingConfiguration(); + void applyStabilizationConfiguration(); void applyMixerConfiguration(mixerSettings mixer); From cd0ff804ebb3da9d2dc02b32b6bfa973c7a4e101 Mon Sep 17 00:00:00 2001 From: Fredrik Arvidsson Date: Thu, 23 Aug 2012 16:28:57 +0200 Subject: [PATCH 012/105] OP-39 Added new graphics for buttons. Added fix trying to handle when config plugin is not loaded in workspace and we are trying to jump to Input Wizard on the end page of the wizard. --- .../plugins/config/configgadgetfactory.cpp | 5 +- .../src/plugins/setupwizard/pages/endpage.cpp | 20 ++- .../plugins/setupwizard/pages/inputpage.ui | 130 ++++++++++++++---- .../plugins/setupwizard/pages/outputpage.ui | 76 +++++++--- .../setupwizard/resources/bttn-ESC-down.png | Bin 0 -> 5210 bytes .../setupwizard/resources/bttn-ESC-up.png | Bin 0 -> 6017 bytes .../setupwizard/resources/bttn-ppm-down.png | Bin 0 -> 4522 bytes .../setupwizard/resources/bttn-ppm-up.png | Bin 0 -> 5202 bytes .../setupwizard/resources/bttn-pwm-down.png | Bin 0 -> 4679 bytes .../setupwizard/resources/bttn-pwm-up.png | Bin 0 -> 5357 bytes .../setupwizard/resources/bttn-rapid-down.png | Bin 0 -> 8691 bytes .../setupwizard/resources/bttn-rapid-up.png | Bin 0 -> 9396 bytes .../setupwizard/resources/bttn-sat-down.png | Bin 0 -> 3793 bytes .../setupwizard/resources/bttn-sat-up.png | Bin 0 -> 4467 bytes .../setupwizard/resources/bttn-sbus-down.png | Bin 0 -> 4166 bytes .../setupwizard/resources/bttn-sbus-up.png | Bin 0 -> 4755 bytes .../vehicleconfigurationhelper.cpp | 4 +- .../plugins/setupwizard/wizardResources.qrc | 12 ++ 18 files changed, 190 insertions(+), 57 deletions(-) create mode 100644 ground/openpilotgcs/src/plugins/setupwizard/resources/bttn-ESC-down.png create mode 100644 ground/openpilotgcs/src/plugins/setupwizard/resources/bttn-ESC-up.png create mode 100644 ground/openpilotgcs/src/plugins/setupwizard/resources/bttn-ppm-down.png create mode 100644 ground/openpilotgcs/src/plugins/setupwizard/resources/bttn-ppm-up.png create mode 100644 ground/openpilotgcs/src/plugins/setupwizard/resources/bttn-pwm-down.png create mode 100644 ground/openpilotgcs/src/plugins/setupwizard/resources/bttn-pwm-up.png create mode 100644 ground/openpilotgcs/src/plugins/setupwizard/resources/bttn-rapid-down.png create mode 100644 ground/openpilotgcs/src/plugins/setupwizard/resources/bttn-rapid-up.png create mode 100644 ground/openpilotgcs/src/plugins/setupwizard/resources/bttn-sat-down.png create mode 100644 ground/openpilotgcs/src/plugins/setupwizard/resources/bttn-sat-up.png create mode 100644 ground/openpilotgcs/src/plugins/setupwizard/resources/bttn-sbus-down.png create mode 100644 ground/openpilotgcs/src/plugins/setupwizard/resources/bttn-sbus-up.png diff --git a/ground/openpilotgcs/src/plugins/config/configgadgetfactory.cpp b/ground/openpilotgcs/src/plugins/config/configgadgetfactory.cpp index b468adf02..2a1996729 100644 --- a/ground/openpilotgcs/src/plugins/config/configgadgetfactory.cpp +++ b/ground/openpilotgcs/src/plugins/config/configgadgetfactory.cpp @@ -58,5 +58,8 @@ IOptionsPage *ConfigGadgetFactory::createOptionsPage(IUAVGadgetConfiguration *co void ConfigGadgetFactory::startInputWizard() { - gadgetWidget->startInputWizard(); + if(gadgetWidget) + { + gadgetWidget->startInputWizard(); + } } diff --git a/ground/openpilotgcs/src/plugins/setupwizard/pages/endpage.cpp b/ground/openpilotgcs/src/plugins/setupwizard/pages/endpage.cpp index 2df3f9e79..5c445d5ba 100644 --- a/ground/openpilotgcs/src/plugins/setupwizard/pages/endpage.cpp +++ b/ground/openpilotgcs/src/plugins/setupwizard/pages/endpage.cpp @@ -29,6 +29,7 @@ #include #include #include +#include EndPage::EndPage(SetupWizard *wizard, QWidget *parent) : AbstractWizardPage(wizard, parent), @@ -46,12 +47,19 @@ EndPage::~EndPage() void EndPage::openInputWizard() { - Core::ModeManager::instance()->activateModeByWorkspaceName("Configuration"); - - getWizard()->close(); - ExtensionSystem::PluginManager *pm = ExtensionSystem::PluginManager::instance(); ConfigGadgetFactory* configGadgetFactory = pm->getObject(); - Q_ASSERT(configGadgetFactory); - configGadgetFactory->startInputWizard(); + + if(configGadgetFactory) { + Core::ModeManager::instance()->activateModeByWorkspaceName("Configuration"); + getWizard()->close(); + configGadgetFactory->startInputWizard(); + } + else { + QMessageBox msgBox; + msgBox.setText(tr("Unable to open Input Wizard since the Config Plugin is not\nloaded in the current workspace.")); + msgBox.setStandardButtons(QMessageBox::Ok); + msgBox.setDefaultButton(QMessageBox::Ok); + msgBox.exec(); + } } diff --git a/ground/openpilotgcs/src/plugins/setupwizard/pages/inputpage.ui b/ground/openpilotgcs/src/plugins/setupwizard/pages/inputpage.ui index 75cd62c94..d69b5dd3f 100644 --- a/ground/openpilotgcs/src/plugins/setupwizard/pages/inputpage.ui +++ b/ground/openpilotgcs/src/plugins/setupwizard/pages/inputpage.ui @@ -44,9 +44,9 @@ p, li { white-space: pre-wrap; } 20 - 220 + 200 561 - 160 + 181 @@ -61,22 +61,36 @@ p, li { white-space: pre-wrap; } Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter - + 50 40 100 - 100 + 120 Tricopter, Quadcopter, Hexacopter, Octocopter + + QToolButton { border: none } + - PWM -One cable -per channel + PWM + + + + :/setupwizard/resources/bttn-pwm-up.png + :/setupwizard/resources/bttn-pwm-down.png + :/setupwizard/resources/bttn-pwm-down.png + :/setupwizard/resources/bttn-pwm-down.png:/setupwizard/resources/bttn-pwm-up.png + + + + 100 + 100 + true @@ -87,26 +101,43 @@ per channel true - - false + + Qt::ToolButtonTextUnderIcon + + + true - + 170 40 100 - 100 + 120 Airplane, Sloper, Jet + + QToolButton { border: none } + - PPM -One cable -for all channels + PPM + + + + :/setupwizard/resources/bttn-ppm-up.png + :/setupwizard/resources/bttn-ppm-down.png + :/setupwizard/resources/bttn-ppm-down.png + :/setupwizard/resources/bttn-ppm-down.png:/setupwizard/resources/bttn-ppm-up.png + + + + 100 + 100 + true @@ -114,25 +145,43 @@ for all channels true - - false + + Qt::ToolButtonTextUnderIcon + + + true - + 290 40 100 - 100 + 120 Airplane, Sloper, Jet + + QToolButton { border: none } + - Futaba -S.Bus + Futaba + + + + :/setupwizard/resources/bttn-sbus-up.png + :/setupwizard/resources/bttn-sbus-down.png + :/setupwizard/resources/bttn-sbus-down.png + :/setupwizard/resources/bttn-sbus-down.png:/setupwizard/resources/bttn-sbus-up.png + + + + 100 + 100 + true @@ -140,25 +189,43 @@ S.Bus true - - false + + Qt::ToolButtonTextUnderIcon + + + true - + 410 40 100 - 100 + 120 Airplane, Sloper, Jet + + QToolButton { border: none } + - Spectrum -Satellite + Spectrum + + + + :/setupwizard/resources/bttn-sat-up.png + :/setupwizard/resources/bttn-sat-down.png + :/setupwizard/resources/bttn-sat-down.png + :/setupwizard/resources/bttn-sat-down.png:/setupwizard/resources/bttn-sat-up.png + + + + 100 + 100 + true @@ -166,12 +233,17 @@ Satellite true - - false + + Qt::ToolButtonTextUnderIcon + + + true - + + + diff --git a/ground/openpilotgcs/src/plugins/setupwizard/pages/outputpage.ui b/ground/openpilotgcs/src/plugins/setupwizard/pages/outputpage.ui index 37cd5c209..13b95bd6b 100644 --- a/ground/openpilotgcs/src/plugins/setupwizard/pages/outputpage.ui +++ b/ground/openpilotgcs/src/plugins/setupwizard/pages/outputpage.ui @@ -44,9 +44,9 @@ p, li { white-space: pre-wrap; } 20 - 220 + 200 561 - 161 + 181 @@ -61,21 +61,36 @@ p, li { white-space: pre-wrap; } Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter - + - 290 + 300 40 - 100 - 100 + 200 + 120 Tricopter, Quadcopter, Hexacopter, Octocopter + + QToolButton { border: none } + - Legacy ESC -50 Hz + Standard ESC + + + + :/setupwizard/resources/bttn-ESC-up.png + :/setupwizard/resources/bttn-ESC-down.png + :/setupwizard/resources/bttn-ESC-down.png + :/setupwizard/resources/bttn-ESC-down.png:/setupwizard/resources/bttn-ESC-up.png + + + + 200 + 100 + true @@ -86,25 +101,43 @@ p, li { white-space: pre-wrap; } true - - false + + Qt::ToolButtonTextUnderIcon + + + true - + - 160 + 60 40 - 100 - 100 + 200 + 120 Airplane, Sloper, Jet + + QToolButton { border: none } + - Rapid ESC -400 Hz + Rapid ESC + + + + :/setupwizard/resources/bttn-rapid-up.png + :/setupwizard/resources/bttn-rapid-down.png + :/setupwizard/resources/bttn-rapid-down.png + :/setupwizard/resources/bttn-rapid-down.png:/setupwizard/resources/bttn-rapid-up.png + + + + 200 + 100 + true @@ -115,12 +148,17 @@ p, li { white-space: pre-wrap; } true - - false + + Qt::ToolButtonTextUnderIcon + + + true - + + + diff --git a/ground/openpilotgcs/src/plugins/setupwizard/resources/bttn-ESC-down.png b/ground/openpilotgcs/src/plugins/setupwizard/resources/bttn-ESC-down.png new file mode 100644 index 0000000000000000000000000000000000000000..26899fb5af90dc4827b5446cdd7b76aadb6a6bc8 GIT binary patch literal 5210 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 literal 0 HcmV?d00001 diff --git a/ground/openpilotgcs/src/plugins/setupwizard/resources/bttn-ppm-down.png b/ground/openpilotgcs/src/plugins/setupwizard/resources/bttn-ppm-down.png new file mode 100644 index 0000000000000000000000000000000000000000..03706d360cce6cef09bea664ac7819175a0bc47b GIT binary patch literal 4522 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 literal 0 HcmV?d00001 diff --git a/ground/openpilotgcs/src/plugins/setupwizard/resources/bttn-pwm-up.png b/ground/openpilotgcs/src/plugins/setupwizard/resources/bttn-pwm-up.png new file mode 100644 index 0000000000000000000000000000000000000000..25d3624dd5c3825d748953535b794dc9ffb90dbd GIT binary patch literal 5357 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 literal 0 HcmV?d00001 diff --git a/ground/openpilotgcs/src/plugins/setupwizard/resources/bttn-rapid-up.png b/ground/openpilotgcs/src/plugins/setupwizard/resources/bttn-rapid-up.png new file mode 100644 index 0000000000000000000000000000000000000000..66808dca8f2507c59e97822c616c343a06aa6f10 GIT binary patch literal 9396 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 literal 0 HcmV?d00001 diff --git a/ground/openpilotgcs/src/plugins/setupwizard/resources/bttn-sat-up.png b/ground/openpilotgcs/src/plugins/setupwizard/resources/bttn-sat-up.png new file mode 100644 index 0000000000000000000000000000000000000000..37e16c2cbc768dae24e9892c7500d2bcc19af945 GIT binary patch literal 4467 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 JPvDoX{}0C53ON7( literal 0 HcmV?d00001 diff --git a/ground/openpilotgcs/src/plugins/setupwizard/resources/bttn-sbus-down.png b/ground/openpilotgcs/src/plugins/setupwizard/resources/bttn-sbus-down.png new file mode 100644 index 0000000000000000000000000000000000000000..ffea88361550b67712d65db5453cd1d0b45abf4e GIT binary patch literal 4166 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 literal 0 HcmV?d00001 diff --git a/ground/openpilotgcs/src/plugins/setupwizard/resources/bttn-sbus-up.png b/ground/openpilotgcs/src/plugins/setupwizard/resources/bttn-sbus-up.png new file mode 100644 index 0000000000000000000000000000000000000000..9937ac0b4b733c88f3f06e7a91393b7a2887184e GIT binary patch literal 4755 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/bttn-plane-down.png resources/bttn-plane-over.png resources/bttn-plane-up.png + resources/bttn-ESC-down.png + resources/bttn-ESC-up.png + resources/bttn-ppm-down.png + resources/bttn-ppm-up.png + resources/bttn-pwm-down.png + resources/bttn-pwm-up.png + resources/bttn-rapid-down.png + resources/bttn-rapid-up.png + resources/bttn-sat-down.png + resources/bttn-sat-up.png + resources/bttn-sbus-down.png + resources/bttn-sbus-up.png From bc9181ba04e39d455353ee19b3c591c82e55937e Mon Sep 17 00:00:00 2001 From: Fredrik Arvidsson Date: Thu, 23 Aug 2012 18:37:55 +0200 Subject: [PATCH 013/105] OP-39 Added dialog for the connection diagram. --- .../plugins/setupwizard/connectiondiagram.cpp | 41 +++++++++ .../plugins/setupwizard/connectiondiagram.h | 49 +++++++++++ .../plugins/setupwizard/connectiondiagram.ui | 83 +++++++++++++++++++ .../src/plugins/setupwizard/setupwizard.pro | 9 +- 4 files changed, 179 insertions(+), 3 deletions(-) create mode 100644 ground/openpilotgcs/src/plugins/setupwizard/connectiondiagram.cpp create mode 100644 ground/openpilotgcs/src/plugins/setupwizard/connectiondiagram.h create mode 100644 ground/openpilotgcs/src/plugins/setupwizard/connectiondiagram.ui diff --git a/ground/openpilotgcs/src/plugins/setupwizard/connectiondiagram.cpp b/ground/openpilotgcs/src/plugins/setupwizard/connectiondiagram.cpp new file mode 100644 index 000000000..38b52a021 --- /dev/null +++ b/ground/openpilotgcs/src/plugins/setupwizard/connectiondiagram.cpp @@ -0,0 +1,41 @@ +/** + ****************************************************************************** + * + * @file connectiondiagram.cpp + * @author The OpenPilot Team, http://www.openpilot.org Copyright (C) 2012. + * @addtogroup + * @{ + * @addtogroup ConnectionDiagram + * @{ + * @brief + *****************************************************************************/ +/* + * 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 + * the Free Software Foundation; either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "connectiondiagram.h" +#include "ui_connectiondiagram.h" + +ConnectionDiagram::ConnectionDiagram(QWidget *parent) : + QDialog(parent), + ui(new Ui::ConnectionDiagram) +{ + ui->setupUi(this); +} + +ConnectionDiagram::~ConnectionDiagram() +{ + delete ui; +} diff --git a/ground/openpilotgcs/src/plugins/setupwizard/connectiondiagram.h b/ground/openpilotgcs/src/plugins/setupwizard/connectiondiagram.h new file mode 100644 index 000000000..7718c1e0e --- /dev/null +++ b/ground/openpilotgcs/src/plugins/setupwizard/connectiondiagram.h @@ -0,0 +1,49 @@ +/** + ****************************************************************************** + * + * @file connectiondiagram.h + * @author The OpenPilot Team, http://www.openpilot.org Copyright (C) 2012. + * @addtogroup + * @{ + * @addtogroup ConnectionDiagram + * @{ + * @brief + *****************************************************************************/ +/* + * 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 + * the Free Software Foundation; either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef CONNECTIONDIAGRAM_H +#define CONNECTIONDIAGRAM_H + +#include + +namespace Ui { +class ConnectionDiagram; +} + +class ConnectionDiagram : public QDialog +{ + Q_OBJECT + +public: + explicit ConnectionDiagram(QWidget *parent = 0); + ~ConnectionDiagram(); + +private: + Ui::ConnectionDiagram *ui; +}; + +#endif // CONNECTIONDIAGRAM_H diff --git a/ground/openpilotgcs/src/plugins/setupwizard/connectiondiagram.ui b/ground/openpilotgcs/src/plugins/setupwizard/connectiondiagram.ui new file mode 100644 index 000000000..8c4e74b45 --- /dev/null +++ b/ground/openpilotgcs/src/plugins/setupwizard/connectiondiagram.ui @@ -0,0 +1,83 @@ + + + ConnectionDiagram + + + + 0 + 0 + 600 + 400 + + + + Dialog + + + true + + + true + + + + + + QFrame::WinPanel + + + Qt::ScrollBarAlwaysOff + + + Qt::ScrollBarAlwaysOff + + + + + + + Qt::Horizontal + + + QDialogButtonBox::Close|QDialogButtonBox::Save + + + + + + + + + buttonBox + accepted() + ConnectionDiagram + accept() + + + 248 + 254 + + + 157 + 274 + + + + + buttonBox + rejected() + ConnectionDiagram + reject() + + + 316 + 260 + + + 286 + 274 + + + + + diff --git a/ground/openpilotgcs/src/plugins/setupwizard/setupwizard.pro b/ground/openpilotgcs/src/plugins/setupwizard/setupwizard.pro index 3f1876bfa..3301cf077 100644 --- a/ground/openpilotgcs/src/plugins/setupwizard/setupwizard.pro +++ b/ground/openpilotgcs/src/plugins/setupwizard/setupwizard.pro @@ -27,7 +27,8 @@ HEADERS += setupwizardplugin.h \ pages/levellingpage.h \ levellingutil.h \ vehicleconfigurationsource.h \ - vehicleconfigurationhelper.h + vehicleconfigurationhelper.h \ + connectiondiagram.h SOURCES += setupwizardplugin.cpp \ setupwizard.cpp \ @@ -48,7 +49,8 @@ SOURCES += setupwizardplugin.cpp \ pages/levellingpage.cpp \ levellingutil.cpp \ vehicleconfigurationsource.cpp \ - vehicleconfigurationhelper.cpp + vehicleconfigurationhelper.cpp \ + connectiondiagram.cpp OTHER_FILES += SetupWizard.pluginspec @@ -66,7 +68,8 @@ FORMS += \ pages/inputpage.ui \ pages/summarypage.ui \ pages/flashpage.ui \ - pages/levellingpage.ui + pages/levellingpage.ui \ + connectiondiagram.ui RESOURCES += \ wizardResources.qrc From 49bdb731f5db9a5e15af43d188c09e455cc459e2 Mon Sep 17 00:00:00 2001 From: Fredrik Arvidsson Date: Fri, 24 Aug 2012 00:48:09 +0200 Subject: [PATCH 014/105] OP-39 Added button for Radio Config Wizard. Cleaned up the GUI, removed all group boxes and aligned components on pages. Changed place of rapid and default esc buttons. Set the size of the wizard to a fix size. Updated some of the texts. Changed font sizes. Added resources. Started the connection diagram implementation. --- .../plugins/setupwizard/connectiondiagram.cpp | 24 +- .../plugins/setupwizard/connectiondiagram.h | 13 +- .../setupwizard/pages/controllerpage.ui | 164 +- .../src/plugins/setupwizard/pages/endpage.ui | 49 +- .../plugins/setupwizard/pages/flashpage.ui | 103 +- .../plugins/setupwizard/pages/inputpage.ui | 384 +- .../setupwizard/pages/levellingpage.ui | 58 +- .../plugins/setupwizard/pages/multipage.ui | 161 +- .../plugins/setupwizard/pages/outputpage.ui | 204 +- .../plugins/setupwizard/pages/summarypage.cpp | 8 + .../plugins/setupwizard/pages/summarypage.h | 3 + .../plugins/setupwizard/pages/summarypage.ui | 114 +- .../plugins/setupwizard/pages/vehiclepage.ui | 390 +- .../resources/bttn-txwizard-off.png | Bin 0 -> 13667 bytes .../resources/bttn-txwizard-on.png | Bin 0 -> 13809 bytes .../resources/connection-diagrams.svg | 9951 +++++++++++++++++ .../src/plugins/setupwizard/setupwizard.cpp | 3 +- .../plugins/setupwizard/wizardResources.qrc | 3 + 18 files changed, 10767 insertions(+), 865 deletions(-) create mode 100644 ground/openpilotgcs/src/plugins/setupwizard/resources/bttn-txwizard-off.png create mode 100644 ground/openpilotgcs/src/plugins/setupwizard/resources/bttn-txwizard-on.png create mode 100644 ground/openpilotgcs/src/plugins/setupwizard/resources/connection-diagrams.svg diff --git a/ground/openpilotgcs/src/plugins/setupwizard/connectiondiagram.cpp b/ground/openpilotgcs/src/plugins/setupwizard/connectiondiagram.cpp index 38b52a021..91faef46d 100644 --- a/ground/openpilotgcs/src/plugins/setupwizard/connectiondiagram.cpp +++ b/ground/openpilotgcs/src/plugins/setupwizard/connectiondiagram.cpp @@ -25,14 +25,34 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ +#include +#include #include "connectiondiagram.h" #include "ui_connectiondiagram.h" -ConnectionDiagram::ConnectionDiagram(QWidget *parent) : - QDialog(parent), +ConnectionDiagram::ConnectionDiagram(QWidget *parent, VehicleConfigurationSource* configSource) : + QDialog(parent), m_configSource(configSource), ui(new Ui::ConnectionDiagram) { + setWindowTitle(tr("Connection Diagram")); ui->setupUi(this); + + QGraphicsScene *scene = new QGraphicsScene(this); + ui->connectionDiagram->setScene(scene); + ui->connectionDiagram->setViewportUpdateMode(QGraphicsView::FullViewportUpdate); + m_renderer = new QSvgRenderer(); + if (m_renderer->load(QString(":/setupwizard/resources/connection-diagrams.svg")) && m_renderer->isValid()) + { + scene->clear(); + QGraphicsSvgItem* ccPic = new QGraphicsSvgItem(); + ccPic->setSharedRenderer(m_renderer); + ccPic->setElementId("cc"); + scene->addItem(ccPic); + qDebug() << "Scene complete"; + + //ui->connectionDiagram->setSceneRect(ccPic->boundingRect()); + //ui->connectionDiagram->fitInView(ccPic, Qt::KeepAspectRatio); + } } ConnectionDiagram::~ConnectionDiagram() diff --git a/ground/openpilotgcs/src/plugins/setupwizard/connectiondiagram.h b/ground/openpilotgcs/src/plugins/setupwizard/connectiondiagram.h index 7718c1e0e..546bd4f39 100644 --- a/ground/openpilotgcs/src/plugins/setupwizard/connectiondiagram.h +++ b/ground/openpilotgcs/src/plugins/setupwizard/connectiondiagram.h @@ -29,6 +29,12 @@ #define CONNECTIONDIAGRAM_H #include +#include +#include + +#include +#include "vehicleconfigurationsource.h" + namespace Ui { class ConnectionDiagram; @@ -39,11 +45,16 @@ class ConnectionDiagram : public QDialog Q_OBJECT public: - explicit ConnectionDiagram(QWidget *parent = 0); + explicit ConnectionDiagram(QWidget *parent, VehicleConfigurationSource *configSource); ~ConnectionDiagram(); private: Ui::ConnectionDiagram *ui; + VehicleConfigurationSource *m_configSource; + + QSvgRenderer *m_renderer; + QHash m_vehicleImageMap; + QHash m_receiverImageMap; }; #endif // CONNECTIONDIAGRAM_H diff --git a/ground/openpilotgcs/src/plugins/setupwizard/pages/controllerpage.ui b/ground/openpilotgcs/src/plugins/setupwizard/pages/controllerpage.ui index 14d37b737..1bb92aabe 100644 --- a/ground/openpilotgcs/src/plugins/setupwizard/pages/controllerpage.ui +++ b/ground/openpilotgcs/src/plugins/setupwizard/pages/controllerpage.ui @@ -19,20 +19,19 @@ 20 20 550 - 241 + 201
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"> +</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8pt; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:12pt; font-weight:600;">OpenPilot board identification</span></p> -<p style="-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:8pt;"></p> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt;">To continue the wizard needs to know what kind of OpenPilot controller you want to create a configuration for. The wizard will try to automatically detect what type of board you have when connected.</span></p> -<p style="-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:10pt;"></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt;">Please connect the board to a free usb port on your computer, or if a serial modem like BlueTooth, PipX or other is used, power up the board and select the device to connect with from the list below. Then press 'Connect'.</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt;">If the board already is connected and succesfully detected the board type will allready be displayed. You can disconnect and select another device if you need to detect another board.</span></p></body></html> +<p style="-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:10pt;"><br /></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt;">Please connect the board to a free usb port on your computer, or if a serial modem like BlueTooth, PipX or other is used, power up the board and select the device to connect with from the list below. Then press 'Connect'. If the board already is connected and succesfully detected the board type will already be displayed. You can disconnect and select another device if you need to detect another board.</span></p></body></html> Qt::AutoText @@ -44,102 +43,81 @@ p, li { white-space: pre-wrap; } true
- + - 20 - 270 - 560 - 110 + 490 + 350 + 70 + 23 + + + + Connect + + + + + + 40 + 350 + 125 + 16 - 8 + 10 + 50 + false - - OpenPilot board type + + Detected board type: + + + + + false + + + + 170 + 350 + 300 + 22 + + + + + + + 170 + 310 + 300 + 22 + + + + + + + 40 + 310 + 121 + 16 + + + + + 10 + 50 + false + + + + Connection device: - - - false - - - - 150 - 70 - 260 - 22 - - - - - - - 150 - 30 - 260 - 22 - - - - - - - 434 - 70 - 111 - 23 - - - - Connect - - - - - - 20 - 32 - 121 - 16 - - - - - 75 - true - - - - Connection device: - - - - - - 20 - 72 - 131 - 16 - - - - - 75 - true - - - - Detected board type: - - - deviceCombo - connectButton - boardTypeCombo - label_2 - label_3 diff --git a/ground/openpilotgcs/src/plugins/setupwizard/pages/endpage.ui b/ground/openpilotgcs/src/plugins/setupwizard/pages/endpage.ui index 4c52939d1..adeb1b87d 100644 --- a/ground/openpilotgcs/src/plugins/setupwizard/pages/endpage.ui +++ b/ground/openpilotgcs/src/plugins/setupwizard/pages/endpage.ui @@ -25,23 +25,23 @@ 20 20 550 - 281 + 211
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"> +</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8pt; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:12pt; font-weight:600;">Congratulations!</span></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:12pt; font-weight:600;">Setup wizard is completed.</span></p> -<p style="-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;"></p> +<p style="-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;"><br /></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt;">This part of the setup procedure is now complete and you are one step away from having a complete setup of your OpenPilot controller.</span></p> -<p style="-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:10pt;"></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt;">To complete the setup please push the Input Wizard button below to close this wizard and go directly to the Input Wizard.</span></p> -<p style="-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:10pt;"></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt;">Or close this wizard and go to the Input tab in the Configuration Plugin and run the wizard to configure the input signals to be used before trying to operate your vehicle. If you already have performed the Input configuration you can skip this step. </span></p> -<p style="-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:10pt;"></p></body></html> +<p style="-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:10pt;"><br /></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt;">To complete the setup please push the Radio Setup Wizard button below to close this wizard and go directly to the Radio Setup Wizard.</span></p> +<p style="-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:10pt;"><br /></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt;">Or close this wizard and go to the Input tab in the Configuration Plugin and run the </span><span style=" font-size:10pt;">Radio Setup Wizard</span><span style=" font-size:10pt;"> to configure the input signals to be used before trying to operate your vehicle. If you already have performed the Radio configuration you can skip this step. </span></p> +<p style="-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:10pt;"><br /></p></body></html> Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop @@ -50,20 +50,41 @@ p, li { white-space: pre-wrap; } true - + - 430 - 340 - 131 - 23 + 200 + 270 + 200 + 100 + + QToolButton { border: none } + Go to Input Wizard... + + + :/setupwizard/resources/bttn-txwizard-off.png + :/setupwizard/resources/bttn-txwizard-on.png + :/setupwizard/resources/bttn-txwizard-off.png + :/setupwizard/resources/bttn-txwizard-off.png:/setupwizard/resources/bttn-txwizard-off.png + + + + 200 + 100 + + + + true + - + + + diff --git a/ground/openpilotgcs/src/plugins/setupwizard/pages/flashpage.ui b/ground/openpilotgcs/src/plugins/setupwizard/pages/flashpage.ui index f4ad3f7a5..5e8d5c9a1 100644 --- a/ground/openpilotgcs/src/plugins/setupwizard/pages/flashpage.ui +++ b/ground/openpilotgcs/src/plugins/setupwizard/pages/flashpage.ui @@ -26,15 +26,15 @@ <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"> +</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8pt; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:12pt; font-weight:600;">OpenPilot configuration ready to save</span></p> -<p style="-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;"></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt;">The wizard is now ready to write the configuration directly to your OpenPilot controller. </span></p> -<p style="-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:10pt;"></p> +<p style="-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;"><br /></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt;">The wizard is now ready to save the configuration directly to your OpenPilot controller. </span></p> +<p style="-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:10pt;"><br /></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt;">If any of the selections made in this wizard requires a reboot of the controller then that will have to be performed after this step by power cycling the OpenPilot controller board.</span></p> -<p style="-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:10pt;"></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt;">Press next to write the configuration.</span></p> -<p style="-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:10pt;"></p></body></html> +<p style="-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:10pt;"><br /></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt;">Press the Save button to save the configuration.</span></p> +<p style="-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:10pt;"><br /></p></body></html>
Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop @@ -43,66 +43,49 @@ p, li { white-space: pre-wrap; } true - + - 20 - 250 - 560 - 130 + 490 + 350 + 70 + 23 - - - 0 - 0 - + + Save - - Write configuration to controller + + + + + 42 + 325 + 491 + 16 + - - Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter + + + 10 + + + + Ready... + + + + + + 40 + 350 + 450 + 23 + + + + 0 - - - - 20 - 90 - 530 - 23 - - - - 0 - - - - - - 22 - 65 - 491 - 16 - - - - Ready... - - - - - - 415 - 40 - 100 - 23 - - - - Write... - - diff --git a/ground/openpilotgcs/src/plugins/setupwizard/pages/inputpage.ui b/ground/openpilotgcs/src/plugins/setupwizard/pages/inputpage.ui index d69b5dd3f..768282200 100644 --- a/ground/openpilotgcs/src/plugins/setupwizard/pages/inputpage.ui +++ b/ground/openpilotgcs/src/plugins/setupwizard/pages/inputpage.ui @@ -40,206 +40,204 @@ p, li { white-space: pre-wrap; } true - + - 20 - 200 - 561 - 181 + 430 + 250 + 100 + 120 - - - 0 - 0 - + + + 10 + - - Supported input signal types + + Airplane, Sloper, Jet - - Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter + + QToolButton { border: none } + + + Spectrum + + + + :/setupwizard/resources/bttn-sat-up.png + :/setupwizard/resources/bttn-sat-down.png + :/setupwizard/resources/bttn-sat-down.png + :/setupwizard/resources/bttn-sat-down.png:/setupwizard/resources/bttn-sat-up.png + + + + 100 + 100 + + + + true + + + true + + + Qt::ToolButtonTextUnderIcon + + + true + + + + + + 70 + 250 + 100 + 120 + + + + + 10 + + + + Tricopter, Quadcopter, Hexacopter, Octocopter + + + QToolButton { border: none } + + + PWM + + + + :/setupwizard/resources/bttn-pwm-up.png + :/setupwizard/resources/bttn-pwm-down.png + :/setupwizard/resources/bttn-pwm-down.png + :/setupwizard/resources/bttn-pwm-down.png:/setupwizard/resources/bttn-pwm-up.png + + + + 100 + 100 + + + + true + + + true + + + true + + + Qt::ToolButtonTextUnderIcon + + + true + + + + + + 190 + 250 + 100 + 120 + + + + + 10 + + + + Airplane, Sloper, Jet + + + QToolButton { border: none } + + + PPM + + + + :/setupwizard/resources/bttn-ppm-up.png + :/setupwizard/resources/bttn-ppm-down.png + :/setupwizard/resources/bttn-ppm-down.png + :/setupwizard/resources/bttn-ppm-down.png:/setupwizard/resources/bttn-ppm-up.png + + + + 100 + 100 + + + + true + + + true + + + Qt::ToolButtonTextUnderIcon + + + true + + + + + + 310 + 250 + 100 + 120 + + + + + 10 + + + + Airplane, Sloper, Jet + + + QToolButton { border: none } + + + Futaba + + + + :/setupwizard/resources/bttn-sbus-up.png + :/setupwizard/resources/bttn-sbus-down.png + :/setupwizard/resources/bttn-sbus-down.png + :/setupwizard/resources/bttn-sbus-down.png:/setupwizard/resources/bttn-sbus-up.png + + + + 100 + 100 + + + + true + + + true + + + Qt::ToolButtonTextUnderIcon + + + true - - - - 50 - 40 - 100 - 120 - - - - Tricopter, Quadcopter, Hexacopter, Octocopter - - - QToolButton { border: none } - - - PWM - - - - :/setupwizard/resources/bttn-pwm-up.png - :/setupwizard/resources/bttn-pwm-down.png - :/setupwizard/resources/bttn-pwm-down.png - :/setupwizard/resources/bttn-pwm-down.png:/setupwizard/resources/bttn-pwm-up.png - - - - 100 - 100 - - - - true - - - true - - - true - - - Qt::ToolButtonTextUnderIcon - - - true - - - - - - 170 - 40 - 100 - 120 - - - - Airplane, Sloper, Jet - - - QToolButton { border: none } - - - PPM - - - - :/setupwizard/resources/bttn-ppm-up.png - :/setupwizard/resources/bttn-ppm-down.png - :/setupwizard/resources/bttn-ppm-down.png - :/setupwizard/resources/bttn-ppm-down.png:/setupwizard/resources/bttn-ppm-up.png - - - - 100 - 100 - - - - true - - - true - - - Qt::ToolButtonTextUnderIcon - - - true - - - - - - 290 - 40 - 100 - 120 - - - - Airplane, Sloper, Jet - - - QToolButton { border: none } - - - Futaba - - - - :/setupwizard/resources/bttn-sbus-up.png - :/setupwizard/resources/bttn-sbus-down.png - :/setupwizard/resources/bttn-sbus-down.png - :/setupwizard/resources/bttn-sbus-down.png:/setupwizard/resources/bttn-sbus-up.png - - - - 100 - 100 - - - - true - - - true - - - Qt::ToolButtonTextUnderIcon - - - true - - - - - - 410 - 40 - 100 - 120 - - - - Airplane, Sloper, Jet - - - QToolButton { border: none } - - - Spectrum - - - - :/setupwizard/resources/bttn-sat-up.png - :/setupwizard/resources/bttn-sat-down.png - :/setupwizard/resources/bttn-sat-down.png - :/setupwizard/resources/bttn-sat-down.png:/setupwizard/resources/bttn-sat-up.png - - - - 100 - 100 - - - - true - - - true - - - Qt::ToolButtonTextUnderIcon - - - true - - diff --git a/ground/openpilotgcs/src/plugins/setupwizard/pages/levellingpage.ui b/ground/openpilotgcs/src/plugins/setupwizard/pages/levellingpage.ui index da1f582e7..34ba4204d 100644 --- a/ground/openpilotgcs/src/plugins/setupwizard/pages/levellingpage.ui +++ b/ground/openpilotgcs/src/plugins/setupwizard/pages/levellingpage.ui @@ -40,53 +40,31 @@ p, li { white-space: pre-wrap; } true - + - 20 - 250 - 560 - 130 + 490 + 350 + 70 + 23 - - - 0 - 0 - + + Calculate - - Accelerometer and gyro bias measurement + + + + + 40 + 350 + 450 + 23 + - - Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter + + 0 - - - - 20 - 90 - 530 - 23 - - - - 0 - - - - - - 415 - 40 - 100 - 23 - - - - Calculate... - - diff --git a/ground/openpilotgcs/src/plugins/setupwizard/pages/multipage.ui b/ground/openpilotgcs/src/plugins/setupwizard/pages/multipage.ui index d6d62f704..8f15a2973 100644 --- a/ground/openpilotgcs/src/plugins/setupwizard/pages/multipage.ui +++ b/ground/openpilotgcs/src/plugins/setupwizard/pages/multipage.ui @@ -41,105 +41,88 @@ p, li { white-space: pre-wrap; } true - + - 20 - 180 - 561 - 200 + 390 + 200 + 170 + 170 + + + + + 0 + 0 + + + + QFrame::NoFrame + + + 0 + + + 0 + + + Qt::ScrollBarAlwaysOff + + + Qt::ScrollBarAlwaysOff + + + false + + + + + + 40 + 200 + 90 + 16 10 + 50 + false - - Multirotor type selection + + Multirotor type: + + + + + + 140 + 198 + 230 + 22 + + + + + + + 40 + 240 + 330 + 130 + + + + Qt::ScrollBarAlwaysOn + + + Qt::ScrollBarAlwaysOff + + + Qt::TextSelectableByKeyboard|Qt::TextSelectableByMouse - - - - 20 - 32 - 121 - 16 - - - - - 75 - true - - - - Multirotor type: - - - - - - 150 - 30 - 220 - 22 - - - - - - - 390 - 30 - 150 - 150 - - - - - 0 - 0 - - - - QFrame::NoFrame - - - 0 - - - 0 - - - Qt::ScrollBarAlwaysOff - - - Qt::ScrollBarAlwaysOff - - - false - - - - - - 20 - 69 - 351 - 111 - - - - Qt::ScrollBarAlwaysOn - - - Qt::ScrollBarAlwaysOff - - - Qt::TextSelectableByKeyboard|Qt::TextSelectableByMouse - - diff --git a/ground/openpilotgcs/src/plugins/setupwizard/pages/outputpage.ui b/ground/openpilotgcs/src/plugins/setupwizard/pages/outputpage.ui index 13b95bd6b..4a366b60e 100644 --- a/ground/openpilotgcs/src/plugins/setupwizard/pages/outputpage.ui +++ b/ground/openpilotgcs/src/plugins/setupwizard/pages/outputpage.ui @@ -40,121 +40,109 @@ p, li { white-space: pre-wrap; } true - + - 20 - 200 - 561 - 181 + 320 + 250 + 200 + 120 - - - 0 - 0 - + + + 10 + - - Supported speed controller types + + Airplane, Sloper, Jet - - Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter + + QToolButton { border: none } + + + Rapid ESC + + + + :/setupwizard/resources/bttn-rapid-up.png + :/setupwizard/resources/bttn-rapid-down.png + :/setupwizard/resources/bttn-rapid-down.png + :/setupwizard/resources/bttn-rapid-down.png:/setupwizard/resources/bttn-rapid-up.png + + + + 200 + 100 + + + + true + + + true + + + true + + + Qt::ToolButtonTextUnderIcon + + + true + + + + + + 80 + 250 + 200 + 120 + + + + + 10 + + + + Tricopter, Quadcopter, Hexacopter, Octocopter + + + QToolButton { border: none } + + + Standard ESC + + + + :/setupwizard/resources/bttn-ESC-up.png + :/setupwizard/resources/bttn-ESC-down.png + :/setupwizard/resources/bttn-ESC-down.png + :/setupwizard/resources/bttn-ESC-down.png:/setupwizard/resources/bttn-ESC-up.png + + + + 200 + 100 + + + + true + + + false + + + true + + + Qt::ToolButtonTextUnderIcon + + + true - - - - 300 - 40 - 200 - 120 - - - - Tricopter, Quadcopter, Hexacopter, Octocopter - - - QToolButton { border: none } - - - Standard ESC - - - - :/setupwizard/resources/bttn-ESC-up.png - :/setupwizard/resources/bttn-ESC-down.png - :/setupwizard/resources/bttn-ESC-down.png - :/setupwizard/resources/bttn-ESC-down.png:/setupwizard/resources/bttn-ESC-up.png - - - - 200 - 100 - - - - true - - - false - - - true - - - Qt::ToolButtonTextUnderIcon - - - true - - - - - - 60 - 40 - 200 - 120 - - - - Airplane, Sloper, Jet - - - QToolButton { border: none } - - - Rapid ESC - - - - :/setupwizard/resources/bttn-rapid-up.png - :/setupwizard/resources/bttn-rapid-down.png - :/setupwizard/resources/bttn-rapid-down.png - :/setupwizard/resources/bttn-rapid-down.png:/setupwizard/resources/bttn-rapid-up.png - - - - 200 - 100 - - - - true - - - true - - - true - - - Qt::ToolButtonTextUnderIcon - - - true - - diff --git a/ground/openpilotgcs/src/plugins/setupwizard/pages/summarypage.cpp b/ground/openpilotgcs/src/plugins/setupwizard/pages/summarypage.cpp index 046fd6ae2..c4846e782 100644 --- a/ground/openpilotgcs/src/plugins/setupwizard/pages/summarypage.cpp +++ b/ground/openpilotgcs/src/plugins/setupwizard/pages/summarypage.cpp @@ -28,12 +28,14 @@ #include "summarypage.h" #include "ui_summarypage.h" #include "setupwizard.h" +#include "connectiondiagram.h" SummaryPage::SummaryPage(SetupWizard *wizard, QWidget *parent) : AbstractWizardPage(wizard, parent), ui(new Ui::SummaryPage) { ui->setupUi(this); + connect(ui->illustrationButton, SIGNAL(clicked()), this, SLOT(showDiagram())); } SummaryPage::~SummaryPage() @@ -50,3 +52,9 @@ void SummaryPage::initializePage() { ui->configurationSummary->setText(getWizard()->getSummaryText()); } + +void SummaryPage::showDiagram() +{ + ConnectionDiagram diagram(this, getWizard()); + diagram.exec(); +} diff --git a/ground/openpilotgcs/src/plugins/setupwizard/pages/summarypage.h b/ground/openpilotgcs/src/plugins/setupwizard/pages/summarypage.h index 3f21a39e8..616f82392 100644 --- a/ground/openpilotgcs/src/plugins/setupwizard/pages/summarypage.h +++ b/ground/openpilotgcs/src/plugins/setupwizard/pages/summarypage.h @@ -46,6 +46,9 @@ public: private: Ui::SummaryPage *ui; + +private slots: + void showDiagram(); }; #endif // SUMMARYPAGE_H diff --git a/ground/openpilotgcs/src/plugins/setupwizard/pages/summarypage.ui b/ground/openpilotgcs/src/plugins/setupwizard/pages/summarypage.ui index 68f0ea8fa..11f646232 100644 --- a/ground/openpilotgcs/src/plugins/setupwizard/pages/summarypage.ui +++ b/ground/openpilotgcs/src/plugins/setupwizard/pages/summarypage.ui @@ -41,81 +41,59 @@ p, li { white-space: pre-wrap; } true - + - 20 - 220 - 561 - 160 + 460 + 250 + 100 + 100 - - - 0 - 0 - + + Tricopter, Quadcopter, Hexacopter, Octocopter - - Summary of configuration - - - Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter - - - - - 440 - 34 - 100 - 100 - - - - Tricopter, Quadcopter, Hexacopter, Octocopter - - - Hardware + + Hardware Configuration Illustration - - - false - - - false - - - true - - - false - - - - - - 20 - 30 - 400 - 110 - - - - - 10 - - - - Qt::ScrollBarAlwaysOn - - - Qt::ScrollBarAlwaysOff - - - Qt::TextSelectableByKeyboard|Qt::TextSelectableByMouse - - + + + false + + + false + + + true + + + false + + + + + + 40 + 230 + 400 + 140 + + + + + 10 + + + + Qt::ScrollBarAlwaysOn + + + Qt::ScrollBarAlwaysOff + + + Qt::TextSelectableByKeyboard|Qt::TextSelectableByMouse + diff --git a/ground/openpilotgcs/src/plugins/setupwizard/pages/vehiclepage.ui b/ground/openpilotgcs/src/plugins/setupwizard/pages/vehiclepage.ui index ef49dbd5f..c9811b049 100644 --- a/ground/openpilotgcs/src/plugins/setupwizard/pages/vehiclepage.ui +++ b/ground/openpilotgcs/src/plugins/setupwizard/pages/vehiclepage.ui @@ -40,209 +40,207 @@ p, li { white-space: pre-wrap; } true - + - 20 - 200 - 561 - 181 + 430 + 250 + 100 + 120 - - - 0 - 0 - + + + 10 + - - Supported vehicle types + + Car, Boat, U-Boat - - Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter + + QToolButton { border: none } + + + Surface + + + + :/setupwizard/resources/bttn-land-up.png + :/setupwizard/resources/bttn-land-down.png + :/setupwizard/resources/bttn-land-down.png + :/setupwizard/resources/bttn-land-down.png:/setupwizard/resources/bttn-land-up.png + + + + 100 + 100 + + + + true + + + true + + + Qt::ToolButtonTextUnderIcon + + + true + + + + + + 70 + 250 + 100 + 120 + + + + + 10 + + + + Tricopter, Quadcopter, Hexacopter, Octocopter + + + false + + + QToolButton { border: none } + + + Multirotor + + + + :/setupwizard/resources/bttn-multi-up.png + :/setupwizard/resources/bttn-multi-down.png + :/setupwizard/resources/bttn-multi-down.png + :/setupwizard/resources/bttn-multi-down.png:/setupwizard/resources/bttn-multi-up.png + + + + 100 + 100 + + + + true + + + true + + + true + + + Qt::ToolButtonTextUnderIcon + + + true + + + + + + 190 + 250 + 100 + 120 + + + + + 10 + + + + Airplane, Sloper, Jet + + + QToolButton { border: none } + + + Fixed wing + + + + :/setupwizard/resources/bttn-plane-up.png + :/setupwizard/resources/bttn-plane-down.png + :/setupwizard/resources/bttn-plane-down.png + :/setupwizard/resources/bttn-plane-down.png:/setupwizard/resources/bttn-plane-up.png + + + + 100 + 100 + + + + true + + + false + + + true + + + Qt::ToolButtonTextUnderIcon + + + true + + + + + + 310 + 250 + 100 + 120 + + + + + 10 + + + + QToolButton { border: none } + + + Helicopter + + + + :/setupwizard/resources/bttn-heli-up.png + :/setupwizard/resources/bttn-heli-down.png + :/setupwizard/resources/bttn-heli-down.png + :/setupwizard/resources/bttn-heli-down.png:/setupwizard/resources/bttn-heli-up.png + + + + 100 + 100 + + + + true + + + true + + + Qt::ToolButtonTextUnderIcon + + + true - - - - 50 - 40 - 100 - 120 - - - - Tricopter, Quadcopter, Hexacopter, Octocopter - - - false - - - QToolButton { border: none } - - - Multirotor - - - - :/setupwizard/resources/bttn-multi-up.png - :/setupwizard/resources/bttn-multi-down.png - :/setupwizard/resources/bttn-multi-down.png - :/setupwizard/resources/bttn-multi-down.png:/setupwizard/resources/bttn-multi-up.png - - - - 100 - 100 - - - - true - - - true - - - true - - - Qt::ToolButtonTextUnderIcon - - - true - - - - - - 170 - 40 - 100 - 120 - - - - Airplane, Sloper, Jet - - - QToolButton { border: none } - - - Fixed wing - - - - :/setupwizard/resources/bttn-plane-up.png - :/setupwizard/resources/bttn-plane-down.png - :/setupwizard/resources/bttn-plane-down.png - :/setupwizard/resources/bttn-plane-down.png:/setupwizard/resources/bttn-plane-up.png - - - - 100 - 100 - - - - true - - - false - - - true - - - Qt::ToolButtonTextUnderIcon - - - true - - - - - - 290 - 40 - 100 - 120 - - - - QToolButton { border: none } - - - Helicopter - - - - :/setupwizard/resources/bttn-heli-up.png - :/setupwizard/resources/bttn-heli-down.png - :/setupwizard/resources/bttn-heli-down.png - :/setupwizard/resources/bttn-heli-down.png:/setupwizard/resources/bttn-heli-up.png - - - - 100 - 100 - - - - true - - - true - - - Qt::ToolButtonTextUnderIcon - - - true - - - - - - 410 - 40 - 100 - 120 - - - - Car, Boat, U-Boat - - - QToolButton { border: none } - - - Surface - - - - :/setupwizard/resources/bttn-land-up.png - :/setupwizard/resources/bttn-land-down.png - :/setupwizard/resources/bttn-land-down.png - :/setupwizard/resources/bttn-land-down.png:/setupwizard/resources/bttn-land-up.png - - - - 100 - 100 - - - - true - - - true - - - Qt::ToolButtonTextUnderIcon - - - true - - diff --git a/ground/openpilotgcs/src/plugins/setupwizard/resources/bttn-txwizard-off.png b/ground/openpilotgcs/src/plugins/setupwizard/resources/bttn-txwizard-off.png new file mode 100644 index 0000000000000000000000000000000000000000..bb0aab3048678d86f7093cec3424aa0e5abdaaed GIT binary patch literal 13667 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 literal 0 HcmV?d00001 diff --git a/ground/openpilotgcs/src/plugins/setupwizard/resources/bttn-txwizard-on.png b/ground/openpilotgcs/src/plugins/setupwizard/resources/bttn-txwizard-on.png new file mode 100644 index 0000000000000000000000000000000000000000..98eecd4effa645a91a50f73de0d5c108bffc039e GIT binary patch literal 13809 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 literal 0 HcmV?d00001 diff --git a/ground/openpilotgcs/src/plugins/setupwizard/resources/connection-diagrams.svg b/ground/openpilotgcs/src/plugins/setupwizard/resources/connection-diagrams.svg new file mode 100644 index 000000000..5639b4c41 --- /dev/null +++ b/ground/openpilotgcs/src/plugins/setupwizard/resources/connection-diagrams.svg @@ -0,0 +1,9951 @@ + + + +image/svg+xml1234 + + +Satellite + + +Throttle + + +Roll + + +Pitch + + +Yaw + + +Flight Mode + + + \ No newline at end of file diff --git a/ground/openpilotgcs/src/plugins/setupwizard/setupwizard.cpp b/ground/openpilotgcs/src/plugins/setupwizard/setupwizard.cpp index 942eb5d93..5f2ba88f6 100644 --- a/ground/openpilotgcs/src/plugins/setupwizard/setupwizard.cpp +++ b/ground/openpilotgcs/src/plugins/setupwizard/setupwizard.cpp @@ -48,8 +48,9 @@ SetupWizard::SetupWizard(QWidget *parent) : QWizard(parent), VehicleConfiguratio m_vehicleType(VEHICLE_UNKNOWN), m_inputType(INPUT_UNKNOWN), m_escType(ESC_UNKNOWN), m_levellingPerformed(false), m_connectionManager(0) { - setWindowTitle("OpenPilot Setup Wizard"); + setWindowTitle(tr("OpenPilot Setup Wizard")); setOption(QWizard::IndependentPages, false); + setFixedSize(640, 530); createPages(); } diff --git a/ground/openpilotgcs/src/plugins/setupwizard/wizardResources.qrc b/ground/openpilotgcs/src/plugins/setupwizard/wizardResources.qrc index 913782e7d..8f7563d25 100644 --- a/ground/openpilotgcs/src/plugins/setupwizard/wizardResources.qrc +++ b/ground/openpilotgcs/src/plugins/setupwizard/wizardResources.qrc @@ -24,5 +24,8 @@ resources/bttn-sat-up.png resources/bttn-sbus-down.png resources/bttn-sbus-up.png + resources/bttn-txwizard-off.png + resources/bttn-txwizard-on.png + resources/connection-diagrams.svg From f2ffd1fb9935dbc62d97eab1c07fd6bac9e03938 Mon Sep 17 00:00:00 2001 From: Laura Sebesta Date: Wed, 22 Aug 2012 08:25:54 +0200 Subject: [PATCH 015/105] Changed DIAGNOSTICS flag to be individual to each module instead of global. The upshot is the stack usage monitor can be turned on at a lower RAM threshold. --- flight/CopterControl/Makefile | 22 +++++++++++++++++--- flight/Modules/Actuator/actuator.c | 6 +++--- flight/Modules/Stabilization/stabilization.c | 6 +++--- flight/Modules/System/systemmod.c | 8 +++---- flight/PipXtreme/Makefile | 21 ++++++++++++++++--- flight/Revolution/Makefile | 6 +++++- flight/SimPosix/Makefile | 8 ++++++- 7 files changed, 59 insertions(+), 18 deletions(-) diff --git a/flight/CopterControl/Makefile b/flight/CopterControl/Makefile index f786df65c..3f2a119ad 100644 --- a/flight/CopterControl/Makefile +++ b/flight/CopterControl/Makefile @@ -38,9 +38,13 @@ OUTDIR := $(TOP)/build/$(TARGET) DEBUG ?= NO # Include objects that are just nice information to show -DIAGNOSTICS ?= NO +STACK_DIAGNOSTICS ?= NO +MIXERSTATUS_DIAGNOSTICS ?= NO +RATEDESIRED_DIAGNOSTICS ?= NO +I2C_WDG_STATS_DIAGNOSTICS ?= NO DIAG_TASKS ?= NO + # Set to YES to build a FW version that will erase all flash memory ERASE_FLASH ?= NO # Set to YES to use the Servo output pins for debugging via scope or logic analyser @@ -474,8 +478,20 @@ ifeq ($(DEBUG),YES) CFLAGS += -DDEBUG endif -ifeq ($(DIAGNOSTICS),YES) -CFLAGS += -DDIAGNOSTICS +ifeq ($(STACK_DIAGNOSTICS),YES) +CFLAGS += -DSTACK_DIAGNOSTICS +endif + +ifeq ($(MIXERSTATUS_DIAGNOSTICS),YES) +CFLAGS += -DMIXERSTATUS_DIAGNOSTICS +endif + +ifeq ($(RATEDESIRED_DIAGNOSTICS),YES) +CFLAGS += -DRATEDESIRED_DIAGNOSTICS +endif + +ifeq ($(I2C_WDG_STATS_DIAGNOSTICS),YES) +CFLAGS += -DI2C_WDG_STATS_DIAGNOSTICS endif ifeq ($(DIAG_TASKS),YES) diff --git a/flight/Modules/Actuator/actuator.c b/flight/Modules/Actuator/actuator.c index e59d50957..6bd471666 100644 --- a/flight/Modules/Actuator/actuator.c +++ b/flight/Modules/Actuator/actuator.c @@ -126,7 +126,7 @@ int32_t ActuatorInitialize() // Primary output of this module ActuatorCommandInitialize(); -#if defined(DIAGNOSTICS) +#if defined(MIXERSTATUS_DIAGNOSTICS) // UAVO only used for inspecting the internal status of the mixer during debug MixerStatusInitialize(); #endif @@ -212,7 +212,7 @@ static void actuatorTask(void* parameters) ActuatorDesiredGet(&desired); ActuatorCommandGet(&command); -#if defined(DIAGNOSTICS) +#if defined(MIXERSTATUS_DIAGNOSTICS) MixerStatusGet(&mixerStatus); #endif int nMixers = 0; @@ -362,7 +362,7 @@ static void actuatorTask(void* parameters) // Update in case read only (eg. during servo configuration) ActuatorCommandGet(&command); -#if defined(DIAGNOSTICS) +#if defined(MIXERSTATUS_DIAGNOSTICS) MixerStatusSet(&mixerStatus); #endif diff --git a/flight/Modules/Stabilization/stabilization.c b/flight/Modules/Stabilization/stabilization.c index 43bb9b0d5..a484cc132 100644 --- a/flight/Modules/Stabilization/stabilization.c +++ b/flight/Modules/Stabilization/stabilization.c @@ -127,7 +127,7 @@ int32_t StabilizationInitialize() // Initialize variables StabilizationSettingsInitialize(); ActuatorDesiredInitialize(); -#if defined(DIAGNOSTICS) +#if defined(RATEDESIRED_DIAGNOSTICS) RateDesiredInitialize(); #endif @@ -176,7 +176,7 @@ static void stabilizationTask(void* parameters) AttitudeActualGet(&attitudeActual); GyrosGet(&gyrosData); -#if defined(DIAGNOSTICS) +#if defined(RATEDESIRED_DIAGNOSTICS) RateDesiredGet(&rateDesired); #endif @@ -308,7 +308,7 @@ static void stabilizationTask(void* parameters) } uint8_t shouldUpdate = 1; -#if defined(DIAGNOSTICS) +#if defined(RATEDESIRED_DIAGNOSTICS) RateDesiredSet(&rateDesired); #endif ActuatorDesiredGet(&actuatorDesired); diff --git a/flight/Modules/System/systemmod.c b/flight/Modules/System/systemmod.c index 715c26d72..870273a1e 100644 --- a/flight/Modules/System/systemmod.c +++ b/flight/Modules/System/systemmod.c @@ -82,7 +82,7 @@ static void objectUpdatedCb(UAVObjEvent * ev); static void updateStats(); static void updateSystemAlarms(); static void systemTask(void *parameters); -#if defined(DIAGNOSTICS) +#if defined(I2C_WDG_STATS_DIAGNOSTICS) static void updateI2Cstats(); static void updateWDGstats(); #endif @@ -118,7 +118,7 @@ int32_t SystemModInitialize(void) #if defined(DIAG_TASKS) TaskInfoInitialize(); #endif -#if defined(DIAGNOSTICS) +#if defined(I2C_WDG_STATS_DIAGNOSTICS) I2CStatsInitialize(); WatchdogStatusInitialize(); #endif @@ -168,7 +168,7 @@ static void systemTask(void *parameters) // Update the system alarms updateSystemAlarms(); -#if defined(DIAGNOSTICS) +#if defined(I2C_WDG_STATS_DIAGNOSTICS) updateI2Cstats(); updateWDGstats(); #endif @@ -301,7 +301,7 @@ static void objectUpdatedCb(UAVObjEvent * ev) /** * Called periodically to update the I2C statistics */ -#if defined(DIAGNOSTICS) +#if defined(I2C_WDG_STATS_DIAGNOSTICS) static void updateI2Cstats() { #if defined(PIOS_INCLUDE_I2C) diff --git a/flight/PipXtreme/Makefile b/flight/PipXtreme/Makefile index 63f2e7907..8538908f0 100644 --- a/flight/PipXtreme/Makefile +++ b/flight/PipXtreme/Makefile @@ -38,7 +38,10 @@ OUTDIR := $(TOP)/build/$(TARGET) DEBUG ?= NO # Include objects that are just nice information to show -DIAGNOSTICS ?= NO +STACK_DIAGNOSTICS ?= NO +MIXERSTATUS_DIAGNOSTICS ?= NO +RATEDESIRED_DIAGNOSTICS ?= NO +I2C_WDG_STATS_DIAGNOSTICS ?= NO # Set to YES to build a FW version that will erase all flash memory ERASE_FLASH ?= NO @@ -378,8 +381,20 @@ ifeq ($(DEBUG),YES) CFLAGS = -DDEBUG endif -ifeq ($(DIAGNOSTICS),YES) -CFLAGS = -DDIAGNOSTICS +ifeq ($(STACK_DIAGNOSTICS),YES) +CFLAGS += -DSTACK_DIAGNOSTICS +endif + +ifeq ($(MIXERSTATUS_DIAGNOSTICS),YES) +CFLAGS += -DMIXERSTATUS_DIAGNOSTICS +endif + +ifeq ($(RATEDESIRED_DIAGNOSTICS),YES) +CFLAGS += -DRATEDESIRED_DIAGNOSTICS +endif + +ifeq ($(I2C_WDG_STATS_DIAGNOSTICS),YES) +CFLAGS += -DI2C_WDG_STATS_DIAGNOSTICS endif CFLAGS += -g$(DEBUGF) diff --git a/flight/Revolution/Makefile b/flight/Revolution/Makefile index ce8a45b6d..cc222f744 100644 --- a/flight/Revolution/Makefile +++ b/flight/Revolution/Makefile @@ -255,7 +255,11 @@ endif # common architecture-specific flags from the device-specific library makefile CFLAGS += $(ARCHFLAGS) -CFLAGS += -DDIAGNOSTICS +CFLAGS += -DSTACK_DIAGNOSTICS +CFLAGS += -DMIXERSTATUS_DIAGNOSTICS +CFLAGS += -DRATEDESIRED_DIAGNOSTICS +CFLAGS += -DI2C_WDG_STATS_DIAGNOSTICS + CFLAGS += -DDIAG_TASKS # This is not the best place for these. Really should abstract out diff --git a/flight/SimPosix/Makefile b/flight/SimPosix/Makefile index 84a9bb060..616ef5995 100644 --- a/flight/SimPosix/Makefile +++ b/flight/SimPosix/Makefile @@ -250,7 +250,13 @@ endif CFLAGS += $(ARCHFLAGS) CFLAGS += $(UAVOBJDEFINE) -CFLAGS += -DDIAGNOSTICS + +CFLAGS += -DSTACK_DIAGNOSTICS +CFLAGS += -DMIXERSTATUS_DIAGNOSTICS +CFLAGS += -DRATEDESIRED_DIAGNOSTICS +CFLAGS += -DI2C_WDG_STATS_DIAGNOSTICS + + CFLAGS += -DDIAG_TASKS # This is not the best place for these. Really should abstract out From 929bf73504a4a9492a57d700afcf6f96d13fb645 Mon Sep 17 00:00:00 2001 From: Laura Sebesta Date: Thu, 23 Aug 2012 07:41:43 +0200 Subject: [PATCH 016/105] Missed adding a diagnostics refactor to the commit. --- flight/PipXtreme/System/inc/FreeRTOSConfig.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/flight/PipXtreme/System/inc/FreeRTOSConfig.h b/flight/PipXtreme/System/inc/FreeRTOSConfig.h index 994956008..0c515b7f7 100755 --- a/flight/PipXtreme/System/inc/FreeRTOSConfig.h +++ b/flight/PipXtreme/System/inc/FreeRTOSConfig.h @@ -76,7 +76,7 @@ NVIC value of 255. */ #endif /* Enable run time stats collection */ -#if defined(DIAGNOSTICS) +#if defined(STACK_DIAGNOSTICS) #define configCHECK_FOR_STACK_OVERFLOW 2 #define configGENERATE_RUN_TIME_STATS 1 From 4d701a2f7a7939bef2c18a36aece2c9af4685fd9 Mon Sep 17 00:00:00 2001 From: Fredrik Arvidsson Date: Fri, 24 Aug 2012 16:22:21 +0200 Subject: [PATCH 017/105] OP-39 Updated some GUI. Changed stylesheet on some elements. Switched button graphix and added new graphix. --- .../plugins/setupwizard/pages/flashpage.ui | 43 +++++++++++++---- .../plugins/setupwizard/pages/inputpage.ui | 16 ++----- .../setupwizard/pages/levellingpage.ui | 45 +++++++++++++++--- .../plugins/setupwizard/pages/outputpage.ui | 12 ++--- .../plugins/setupwizard/pages/vehiclepage.ui | 16 ++----- .../resources/bttn-calculate-down.png | Bin 0 -> 5752 bytes .../resources/bttn-calculate-up.png | Bin 0 -> 8234 bytes .../setupwizard/resources/bttn-rapid-down.png | Bin 8691 -> 0 bytes .../setupwizard/resources/bttn-rapid-up.png | Bin 9396 -> 0 bytes .../setupwizard/resources/bttn-turbo-down.png | Bin 0 -> 5780 bytes .../setupwizard/resources/bttn-turbo-up.png | Bin 0 -> 6598 bytes .../plugins/setupwizard/wizardResources.qrc | 6 ++- 12 files changed, 89 insertions(+), 49 deletions(-) create mode 100644 ground/openpilotgcs/src/plugins/setupwizard/resources/bttn-calculate-down.png create mode 100644 ground/openpilotgcs/src/plugins/setupwizard/resources/bttn-calculate-up.png delete mode 100644 ground/openpilotgcs/src/plugins/setupwizard/resources/bttn-rapid-down.png delete mode 100644 ground/openpilotgcs/src/plugins/setupwizard/resources/bttn-rapid-up.png create mode 100644 ground/openpilotgcs/src/plugins/setupwizard/resources/bttn-turbo-down.png create mode 100644 ground/openpilotgcs/src/plugins/setupwizard/resources/bttn-turbo-up.png diff --git a/ground/openpilotgcs/src/plugins/setupwizard/pages/flashpage.ui b/ground/openpilotgcs/src/plugins/setupwizard/pages/flashpage.ui index 5e8d5c9a1..89f3d5e40 100644 --- a/ground/openpilotgcs/src/plugins/setupwizard/pages/flashpage.ui +++ b/ground/openpilotgcs/src/plugins/setupwizard/pages/flashpage.ui @@ -43,25 +43,37 @@ p, li { white-space: pre-wrap; } true - + - 490 - 350 - 70 - 23 + 200 + 250 + 200 + 70 + + QToolButton { border: none } + Save + + + 200 + 70 + + + + Qt::ToolButtonIconOnly + 42 - 325 - 491 + 330 + 441 16 @@ -79,13 +91,28 @@ p, li { white-space: pre-wrap; } 40 350 - 450 + 520 23 + + QProgressBar { + border: 2px solid grey; + border-radius: 5px; + text-align: center; + } +QProgressBar::chunk { + background-color: #3D6699; + width: 10px; + margin: 0.5px; + } + 0 + + + diff --git a/ground/openpilotgcs/src/plugins/setupwizard/pages/inputpage.ui b/ground/openpilotgcs/src/plugins/setupwizard/pages/inputpage.ui index 768282200..8681fd49a 100644 --- a/ground/openpilotgcs/src/plugins/setupwizard/pages/inputpage.ui +++ b/ground/openpilotgcs/src/plugins/setupwizard/pages/inputpage.ui @@ -66,9 +66,7 @@ p, li { white-space: pre-wrap; } :/setupwizard/resources/bttn-sat-up.png - :/setupwizard/resources/bttn-sat-down.png - :/setupwizard/resources/bttn-sat-down.png - :/setupwizard/resources/bttn-sat-down.png:/setupwizard/resources/bttn-sat-up.png + :/setupwizard/resources/bttn-sat-down.png:/setupwizard/resources/bttn-sat-up.png @@ -115,9 +113,7 @@ p, li { white-space: pre-wrap; } :/setupwizard/resources/bttn-pwm-up.png - :/setupwizard/resources/bttn-pwm-down.png - :/setupwizard/resources/bttn-pwm-down.png - :/setupwizard/resources/bttn-pwm-down.png:/setupwizard/resources/bttn-pwm-up.png + :/setupwizard/resources/bttn-pwm-down.png:/setupwizard/resources/bttn-pwm-up.png @@ -167,9 +163,7 @@ p, li { white-space: pre-wrap; } :/setupwizard/resources/bttn-ppm-up.png - :/setupwizard/resources/bttn-ppm-down.png - :/setupwizard/resources/bttn-ppm-down.png - :/setupwizard/resources/bttn-ppm-down.png:/setupwizard/resources/bttn-ppm-up.png + :/setupwizard/resources/bttn-ppm-down.png:/setupwizard/resources/bttn-ppm-up.png @@ -216,9 +210,7 @@ p, li { white-space: pre-wrap; } :/setupwizard/resources/bttn-sbus-up.png - :/setupwizard/resources/bttn-sbus-down.png - :/setupwizard/resources/bttn-sbus-down.png - :/setupwizard/resources/bttn-sbus-down.png:/setupwizard/resources/bttn-sbus-up.png + :/setupwizard/resources/bttn-sbus-down.png:/setupwizard/resources/bttn-sbus-up.png diff --git a/ground/openpilotgcs/src/plugins/setupwizard/pages/levellingpage.ui b/ground/openpilotgcs/src/plugins/setupwizard/pages/levellingpage.ui index 34ba4204d..17687d2c1 100644 --- a/ground/openpilotgcs/src/plugins/setupwizard/pages/levellingpage.ui +++ b/ground/openpilotgcs/src/plugins/setupwizard/pages/levellingpage.ui @@ -40,33 +40,64 @@ p, li { white-space: pre-wrap; } true - + - 490 - 350 - 70 - 23 + 200 + 250 + 200 + 70 + + QToolButton { border: none } + Calculate + + + :/setupwizard/resources/bttn-calculate-up.png + :/setupwizard/resources/bttn-calculate-down.png:/setupwizard/resources/bttn-calculate-up.png + + + + 200 + 70 + + 40 350 - 450 + 520 23 + + QProgressBar { + border: 2px solid grey; + border-radius: 5px; + text-align: center; + } +QProgressBar::chunk { + background-color: #3D6699; + width: 10px; + margin: 0.5px; + } + 0 + + + - + + + diff --git a/ground/openpilotgcs/src/plugins/setupwizard/pages/outputpage.ui b/ground/openpilotgcs/src/plugins/setupwizard/pages/outputpage.ui index 4a366b60e..2773cbca9 100644 --- a/ground/openpilotgcs/src/plugins/setupwizard/pages/outputpage.ui +++ b/ground/openpilotgcs/src/plugins/setupwizard/pages/outputpage.ui @@ -61,14 +61,12 @@ p, li { white-space: pre-wrap; } QToolButton { border: none } - Rapid ESC + Turbo PWM - :/setupwizard/resources/bttn-rapid-up.png - :/setupwizard/resources/bttn-rapid-down.png - :/setupwizard/resources/bttn-rapid-down.png - :/setupwizard/resources/bttn-rapid-down.png:/setupwizard/resources/bttn-rapid-up.png + :/setupwizard/resources/bttn-turbo-down.png + :/setupwizard/resources/bttn-turbo-up.png:/setupwizard/resources/bttn-turbo-down.png @@ -118,9 +116,7 @@ p, li { white-space: pre-wrap; } :/setupwizard/resources/bttn-ESC-up.png - :/setupwizard/resources/bttn-ESC-down.png - :/setupwizard/resources/bttn-ESC-down.png - :/setupwizard/resources/bttn-ESC-down.png:/setupwizard/resources/bttn-ESC-up.png + :/setupwizard/resources/bttn-ESC-down.png:/setupwizard/resources/bttn-ESC-up.png diff --git a/ground/openpilotgcs/src/plugins/setupwizard/pages/vehiclepage.ui b/ground/openpilotgcs/src/plugins/setupwizard/pages/vehiclepage.ui index c9811b049..864e62194 100644 --- a/ground/openpilotgcs/src/plugins/setupwizard/pages/vehiclepage.ui +++ b/ground/openpilotgcs/src/plugins/setupwizard/pages/vehiclepage.ui @@ -66,9 +66,7 @@ p, li { white-space: pre-wrap; } :/setupwizard/resources/bttn-land-up.png - :/setupwizard/resources/bttn-land-down.png - :/setupwizard/resources/bttn-land-down.png - :/setupwizard/resources/bttn-land-down.png:/setupwizard/resources/bttn-land-up.png + :/setupwizard/resources/bttn-land-down.png:/setupwizard/resources/bttn-land-up.png @@ -118,9 +116,7 @@ p, li { white-space: pre-wrap; } :/setupwizard/resources/bttn-multi-up.png - :/setupwizard/resources/bttn-multi-down.png - :/setupwizard/resources/bttn-multi-down.png - :/setupwizard/resources/bttn-multi-down.png:/setupwizard/resources/bttn-multi-up.png + :/setupwizard/resources/bttn-multi-down.png:/setupwizard/resources/bttn-multi-up.png @@ -170,9 +166,7 @@ p, li { white-space: pre-wrap; } :/setupwizard/resources/bttn-plane-up.png - :/setupwizard/resources/bttn-plane-down.png - :/setupwizard/resources/bttn-plane-down.png - :/setupwizard/resources/bttn-plane-down.png:/setupwizard/resources/bttn-plane-up.png + :/setupwizard/resources/bttn-plane-down.png:/setupwizard/resources/bttn-plane-up.png @@ -219,9 +213,7 @@ p, li { white-space: pre-wrap; } :/setupwizard/resources/bttn-heli-up.png - :/setupwizard/resources/bttn-heli-down.png - :/setupwizard/resources/bttn-heli-down.png - :/setupwizard/resources/bttn-heli-down.png:/setupwizard/resources/bttn-heli-up.png + :/setupwizard/resources/bttn-heli-down.png:/setupwizard/resources/bttn-heli-up.png diff --git a/ground/openpilotgcs/src/plugins/setupwizard/resources/bttn-calculate-down.png b/ground/openpilotgcs/src/plugins/setupwizard/resources/bttn-calculate-down.png new file mode 100644 index 0000000000000000000000000000000000000000..5681d474eeab587c918e4042e3f0b34dac832e4b GIT binary patch literal 5752 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 literal 0 HcmV?d00001 diff --git a/ground/openpilotgcs/src/plugins/setupwizard/resources/bttn-calculate-up.png b/ground/openpilotgcs/src/plugins/setupwizard/resources/bttn-calculate-up.png new file mode 100644 index 0000000000000000000000000000000000000000..c2e2add72ec8fda25ac1a5a5f468a539033db170 GIT binary patch literal 8234 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 literal 0 HcmV?d00001 diff --git a/ground/openpilotgcs/src/plugins/setupwizard/resources/bttn-rapid-down.png b/ground/openpilotgcs/src/plugins/setupwizard/resources/bttn-rapid-down.png deleted file mode 100644 index 276c26c6b680b6cebcbf323e447ee71431c1ed9e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8691 zcmbVyby!r-zc9_xjYuvlv2-paxpXf`2?7!;T}yW@DG1UHtAKjexZ9 z;_v>x_rCXe?tA}u&vRzZ%$!fnCuYuko)ZJpQYONu#YaO!BT`jS(0zDLJ`_g)&O=SE zobynlJ@!yE@_6R*%EQ|N0Y{UwcCmy5Rh=ws;JR=NYhSm1xFi}H<|{irBM&1@4GAk3 zCti!cFuXoau7Am_TOPX5b$3h9u88V{}9SZ z69$xbLBN3!ULhVUegOfXhzPHMFhoQ|fEy^tFCfUr|8R@&2nb6+L?i@7f&ach58M#e zuOxI8l>W`@p(h2h_3&_&;N$c5_U82#;&nmT@Ck^Ei~pq|D9G~w!Q<}h>|x=<F>P$1?}#k3;!=M{zqtcJzrNipDx_p#S>xmV2@W%{y~1w-T%($FW`eT650s62cuXx zD!5pAI>DViR28H^4{vy_?W`pfp^BpX0t!kB!ioZl0s;bZ^8A8|igJo_0-_=!!UBr_ z(D>9MR~;sODGD6^F#T?#32fTiclp55q|l9a8;e%JuIB9;Q#Qod*J(T zT%rFJS3({ExA1U5=()H!{^J2KTNe)(cUu=%p!_otAlT5(+1kb1o#U^0{$sWZaD<%~ z+*%3Y;spGcekJVw2mT@oLV|*F@(=~+g9H!rhRO?zi$etEk)<)gb}-GS`80P&<3oR~U3SI9mU_0w zT(RZ^Pp51RC4d8~!?=T-zg!c|sw(~>FqzdM^CtfTmrOswk`ec!OyJZV%f`)~%y!#$ zp2NviKw&`vKR-VQlmol~Mbbi?GOwwraCj>6W~B-d~PyJCXP5ocIMBdmws$1W|BWo$nsmXKm844QX7X z@Hp)xGB1OHsh~8d5r4lniz+AIRg0KpfX~;%?O4R!xko-8#BX@cGi$a zp2x%#g&Mt*1173ft1#0)k>(%ZipGMUQ1madMYg=wO-jzA(B7d#(esYz)j+boQ)dGy zRao&N)Du;oEw@5xFa|azQt^<8*Yb(|>moX@Cvq1Txtdv1YKCm;6lU=X$3N;c>1KY4 zd@)c6m5Qh$_#>7~-k2QeI`Wz<2xyDa2z|v=}#}R)Dt^p-OFOvqgR})7z zen??H#9YcPbmjfCdYVo=@snGQAnoke z>=&RwSbJi}WXu$!@>sR1wK~0)&N&vumJ$Vh2bW9R%F?wjZB#QbCs-8mrsc^9WY^5% zPwRPAsDl_Mjjf&s-8?0a@s+m{($|}U-ECT4uUIo4$fU?W8ct7=a>ME-9t4^MB*nf2 zWx||3X-*pH$hM}b8Q1KKG9df5@X+*DEtzC}Q`dxuq+dem?EzJj~ zm<8WR4T$^4#!zMFFsE=Mru#fioTLK}o=K~Fa6f9bHy+ z{vc03aLSWbr?t6fp@ja9>VS2D_$vFCSoocys{(!Z- zdtsAS!!SGQ`zwmfFUMIU?zIwj$-p0#_h-~oV%#ZW2+(t>gSjwCxRMJE0@92WW;@)YqrJs%_Bb1C>t zo)0wmQ2;XN$|fH!rhWUwv_N$y<}CauAT%w|dMTu>cXQl0w$50rFxi%>?3w8@6whtU z`nCPNF`Y?HfD9nI_p=haH-Ic&;kQqqMw6=!FLLVQlbPDZ#~0A-`XjhyYC3F&oQoTP zz1LjYl##_*IeHfJ1UF7a`hJe)3A#NUJ;>30^bGF_#sza%xdS3`s>}_HTiYn5XS~=q zuwm;t5nU)on=Hce^VSJ8a^lmnfoQ&xP{9(kx1hlZGt#YQsaAWvn39pDI_B0%iE{Rf zJ47VbRA(9Q4yw3AMgz+a3x1PGD?MX}6X(pukP@p|3)968>~ZLT<6D>pCPx2N!}0*cA8ZUD)xMPD;RsWXY`j@Ge(pI_o+9qyZ*AWReyZk$oe9lFb;6 zt1;=Pc0$F@v2m8$le3J02kf`1TyOhWq#wl*g43tVwbM>+wQ}OuEZ>30(JVi;oQg;f z=L~*mbDULdK4)T9GbsRg3LW3o8CLFHp(K0y2rNwXod^__GiP%#cWD^{Vs0#vO(_Nt z!JYjv12(*lugq>o0$wYBrIsVEms|gVE4{Ca|*!xoipV(J*I_QwAA@|F<4Grnm z-!2IgN$f$N0FasXQ&mby9~28PQb9jZX#1IKWq|~-O*UXrQka`LlD@cm^IMX3 zr38xA`L_#}v1FA@xf00!jFgv;DyK?XidEUuV0?C{^{lZBU714$+k)~Dz5Q0*l>Ms3~5zGbt)c*K7ggu z_gAZdoN)kku0m6G^o59Gh~?spfP(O=rLXn;s5edwDZvV0LIf+_bBx`MPK4%tjwp`I zByJBn0(HG*AQuO2{pvPtXHc$RuUS~0N>sakj4feqq-cIKNlq)xk~VBsRzUGc?dN2K zU{=Ok4T8@?GelT+MG_(+&6h1=%f~ZDw48dxWt1@uV^+2W@)}epp|CJgYWWW2^PsPu z%`u&Pr1-w%G+w2Jk)L~uUGGlscAyf;=EG`Of=*JdZ`@11yk@ITYN`9fVhS#^{LG#G zH18F>D5f`i#t%0}KqkVstkwcg*fRjXi1@V?1Zo>YPn?f#An`(06GEjgKKT;8qZa(S zbqfz`d>eUoj8E-TPIKEIQw`ECD_%SCGY&LK1FYKH4&J$IV69a8yNe6cXXbos9EG9;|303QP<0TA1z& zPB3(FyckQR8@cud)l?L(PKbCBr3NHP@(l4$Fn`ry#}-eV%e$5cYx2q{5BtpWIx%6Y zXOkLbE-qsjiJ*90sz<{X&HG&WD(O>SYdNAY8DH0gHB-2#_ zw{V)f;fcs_jH(IVkhKM5-j^jG@Abv_0fK3M->(0cYlMh_Mu)@%6GpAb4~rivwtFY1=FB|J#jcD2@3;FYGOh~ zKJ>+KZ-Lv4GmNnLOBRE+iHI3H_?{ofmf_B9!4e|V47~1T(OhJdYBsQvb-`LM98&;f zR$_+oOA+GSB{b27&!@j{YG!cvNT!b!z|0~Zh_a>Ru|uA|fZ}n}3$|}!`l^-Db_36= zn9=J$86(|UQ{z4E)Tl`8E3A)qS;Evsf%#Eq;w9x&L@DNa^3*6OKmcX1u0#xnW6YwA zE+zX$NX?4bx})IzNo6Sws^&ed=D!0iAH|;4+&@)0Vi?>u_fNzs?Dz(`+uai<7~2Z; zZSrK0DCJ~ycXKkU(nYlZ(&{D6Z4yT;{ON-MsIW_J=SopmX%TtCBRh(+qUw$&4qscs zKWC-Q;>)@)e9sAed=&jwxE}_|wyBhijEWb}w=1D{LMJ;t@=u><8|Q@XQGx2YO6^xp zUxIv8T6SN%aRDt4P?t0947}}0BaG=CTPha54BFgLoJC~!e|CA_0Ef+ax91yfx76n^ zTg{y$Wg(zKY}c6i2Bw6;ZMt7SDw5^41(!YmsL;R368t8?x!C|C_$IF{IQmnnIc|^I zLA}E%hh2@Jx!a(imAdy+4=cdcatUn1X+#o%`_)}6zxB@vanOEhJ@K!D;HxfZ*`wIY z*`s@itOz#MN&i@{I!D#H%9e5ot?1g@=51FynC+A}TcFPT#h~b$(V}vQTxF=m@mIc& z?^LaleR)-Q!MAru7p~4{qXUmk^Ny5*7kVwW>$aITU+fG?+3YN&sx<}Md3~rv*D+i4 zi*vw4ryT2mPu}WNW>6$kQ7eTIF8f_c8H+s0^~&emx``dIFD>p@UA|sGWI@EkiL&yY zCBG|R{>p2xpSp>=maVa zhn5`=yDld=)_rR3sOmEE+i$MKUA%bDKJ7X~Rpw`OQ|q%ull9bBFMZqpHWd3T-PC5L z8k4`B0P1~_b+#IFb}U4PQT95Lzh`7&7VC&0cuC#r8HMeiMR!bOQuHrv5gVIgoM@b` zx!>^Hol<$sD`T6>?&9#2pXMhdUkEauxw9XOyPpnb7(KU2N`*$yMY8scMn$B)s3y(& z7VervSb~3_FM4KfczYsqI)kX7Wy%&ox(srP-M{ysUKb0^hCT1($k6Z0-ti!9%}tI8`~piP5aKk2e{UxX|0-n-du7`a*- zWIAHFTDD0Su2|HC)>WYJ`{H*0tf1(CrXc zoocM~`di<|&BfkZAHGUJhA^q~T1kTced? zIac~D7#ZaKopvys-m5m?quK_jPp9COOwea3rppm?$L&Gfbj@{jWU5bIz@nvFMJ}H- zH2@Fpj5WxZO6sRF_1)e0vmtgGl14y8ljJLZKRqx->=6PQNIW#e6{`ccV3~UFV1r$e zZYVmQ@4Y#GO*NZCN5-&~crfO_H8vkCqnruiMt%k^&(=OoDArPWpBpv2rzR}@#c=tw zJttte`=w7`l}=-T1^xyMylqDw)6j)HI~Os4mHm33bSa(Kv7T=m=r+L|bUWL7gs%tQ zmok%$8m4sXOU+CAX_!7xP;?4|O1_a#!n0T}H%Y)Po8a2Z3Y!xYy}r?2$q*2LB(gsa z#;O{a8I-#9*zD#smvrWi3abW^l*H&!5uPju{E;@Or<%`>+SH-MGb~RQZAz#MKeuT9hihKCNX1w#1w6&pF%L{=dYVbm#L)@ zLjW2g7^=v<2Rko2Gf$!N{-sp2`*;N}6@ElS82Yo9opR1`b_y2H8PWwUQu*4Hod}{_ z$hGg*56-%JsXbsLBqwv7vfSIUkCPm=BbhJ`-O0vFRWVSR)lFFS!591T^gkZsVW#@6 zQM}$cWPR4mlEh+Xc+o!Qp9Z2JlLOoFsUz8bQ7G4QO`?P%0=P3FZ`cwThTHDkKg6v? zL}*LZf@eHW%g66q{ga&YE4E=qhO9@pX3K%ar`ATKa!G(I3OyaD$e=Jr<6_z$-_ZG= z1ktTjrTuQ9jG?feCF*@I#Vi$qDN2+d`XSlsdtxOd*6wxH3(U6T6^6WcIl8aC*!V*r?7X?BQT0@=wol98zJuD!ls%C7fV$SUN-KxH06dU z)mP8Uu=cN4KqIE8KB}RYarq=p{ZRA^GG^`$shL9{6@VI_vH=HCGh^GdSI5mOx=Rd} zE2CD>_e}v!LYUn@)G=~b|0F1ezgcl|;AbY3m&b5say*=>w{fFTUrOzq>cM}adb;z) zU5xTiw>dGkCXP2wL+rStTz5~z8YeMbe4129zrlB&Pz_wIN2kAjXfy7dFW|n}o(Rne zi!N<@hTOHeWIrw2L;qMCLEhnJ@iUvla;HBzJl5F@7B|seP*#8-MJ@Z;o>2UAA*g&-#=5_#8%Fipaq39V760RqRn}R&y zq=(ap4PY97@QjpjF@9yuV&~?2jGbS_7kiwGsud=*p{`-(EPI@YD(jPEy?gJMC-rq> zT^821yb+vui7HwR1MiF`S0AzsudgJcMWh31hK3l2x@*z!?RDNDH<^51q;Xqxc*R{V z^n892p#n;|tn5Z<`{A5-ebqWd#L|Sgo@{9__D6LwE%&b`9<6f~V@ol?VSLVh`SSwu zZlpb*%pqJq#kKDd%25{r?rx69bL<(98MT#buvwMG&=R3rN+tNc@oaQ7K|y% z28rq&j&pB26L2GvlzG8WMNSmy7Be@rk<6=KmbKx7sKcCpD4)!7pxgHF`$x?Ij+^Ob zI}wBL=qOP4T0`T%(lLJf!=7*#B}P;ju}8dnt`|O%FIYBT&splY0-C447sfz*R#}+X zjilH$SPI1Km)5{IYYevtY0Q@6ZN8H#s#sJbw1yI6LxD0-qxz!^t^ND!1+~1v>!~yf zxk`Zw7h_3(`fR#<|6?x$(S{Iw(J)x}%L}6CiF40wg)`7FK|QZ5+~0jT$dChk{MIe# zJ+uAIFn_sYFGKJdMVJO5>Cd~$yF9KRWVCB;E!62g(yRT9$HesvopU@kSVm3I9a4Pi32IswFzPMn3q0^P6-thK z3io7%ecNwB6lNMp6?$&klcWQRqlu!ZPQ!1+fEtRcAKfbY+duWRmmM!>^k6KIdTq#&#RnOlX;d0murEsx$P72)h7hnkT)n@QjVdv1ESw@RmWyC za#prsxm@g@1(Rmu6}lz7rqN1e*DPYZ3=~S>nknIe%B<{@?Q3{@}oqrqG(MJ4I=ZD0@N zJ_rV=EY?=p93>r*YsJt-MH1tOk=|$&$m>HeXeY`3Zkh^h@=ZKnjbVYMou$w{5u~syTAwPctxNQ$KP%c=i+ZesXy> zI*fQ`=W~6-2O{M0F4n|Zg~~6GIBq6sB*PF-@q6FyTiTR+*;(DF?$eOoIx*lQKdFMQ zKF9HkEDR3Ap>Jj_zx5_&pbpeo84_VSs2`FX z52xTnDJE;NzGj^3nC@nrEZ+n|1Rz2@*<7g+n~I+NofTJEpB!!Cj-?J{Gp4u7myWh$ zLENSV7#;owaIz|1?wsEjZ(bGaeYK!**ox$lt^Uq{{iP)Bn}29dOH8QthSAo!DSmak ztj*v&RYwXe9DWghhz5xrm#sMW6GQp}x<|3FQS%sN#i$QrDm@C6VWEr537e*ytdysp zmEFd;RIZYziCv?kINi?*F87usdGjJ9LN%%mdf(84^u`Cp>7ud6fx#VGXFbIAfM@cL zxFhK%{Yv-+Ijx7ETv$Pe!>b7BG}fiTSUAE1X;nW-w6bUI-rbf%G%BJDhc_$@Da*o; zCCh^ z=|dIZ8_@%%LOkO`E3QP%J7v=tUcK!tK;rG9>sr4aCAksq&m|^1VLt0zYx8|Jo|)5^ z{0^&>dW5z!^$;eRNWg|e&Dg<%^?cLbv{Ap*@mohQx7(djGw5L#^hEOuusSl?;1H@A zzfLV#FG9Go_k1~;WacY6wGqq=qlb7Px_{(0v?-Bdjr4lG15B-1Ii@60_F8}teEa9b z<0yv5byVFBq)XKY#3!-GqcbJs7bf4gfXdo!j6soDSqm)}a?%G9S(O0Knh+l0<&S+u zq8A${FTc9%P#V|!2(teP9L~4)?mvXe=eOp9q3yB};i`t@56P#puq0z*G7CZ3O<9%< zY9G_`U@jdnnc4KrF6BT;HciHglc6S4`O5~3<&nFb!L#c;p#^O-j!7P@l#Q0#A3BFU zO#w?j#%+EE1%bb0(Wl6OWB~NvvX|6W@oTQ6QQUvpLC_NNzIUR!j|WbbOZ-Y6#YVm$ z@J;4s3KKww)1@YnQiiPsobw9M>d zEJ$T*hTWl|XtqjSWg)V}8?YaVu7t9R*ajPOPShfg3e?8+Y$+`m;}R6ewjRHJF2EE) ztlIM;<^bVX!k~1j39enN-6M1oPwah_Fo42IwqnPTwmgyQ`e=^iFgbI#dz zVzQ1J(uOXRq>}WNR&C+)=D!uDk>!6%`UdB1DJnueGj6vqDvvg^bAu1FJILuq^(~X> zepQDNnLR1F!^ki7TG4ItMFDm8G&idd#!dZcehk@nWlVI5FPL<1r4%at z$|k-LH(k3(QK;w4*NMXMyn^~-^=ko?A1E#Bc}QFPSNPi^{qmMi7meA*L#n>CG{x|yPQuLOSQ(^Ey2=U*08>2t z%&)_}%8sBYm(fYXf`S4-(SMcycLzX)Wgf+ak57hSUKtrwj~o{jJx8c>Nu#visxx<} zY{+C_h7ov~T$rG|Oz5Ao3N5;?1;os5Qx%^0o@thJS)62c?LZVcBlx#cMERF|_ro#G znBX=={?{5MxCXr6rGlI%Jcyn)#&m9YCX-0jV6AGioKw|i_RwvrfZ*5 zrBA;xoNatK>M3q9xmE+OH2V|h|LJjXY13{@=j`i0h^g+acGQNd})4-5}^WJwX>)d8=Cl09qsVCVKtqFr~B}sSAVsM5lb%EdN{i gZyk)wV00X`C;l@op*zXie}BVJRn$_bfW8d-KYX<2KL7v# diff --git a/ground/openpilotgcs/src/plugins/setupwizard/resources/bttn-rapid-up.png b/ground/openpilotgcs/src/plugins/setupwizard/resources/bttn-rapid-up.png deleted file mode 100644 index 66808dca8f2507c59e97822c616c343a06aa6f10..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9396 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 NZ4G_IbGU8z{{w>C{5=2w literal 0 HcmV?d00001 diff --git a/ground/openpilotgcs/src/plugins/setupwizard/wizardResources.qrc b/ground/openpilotgcs/src/plugins/setupwizard/wizardResources.qrc index 8f7563d25..9a24b6780 100644 --- a/ground/openpilotgcs/src/plugins/setupwizard/wizardResources.qrc +++ b/ground/openpilotgcs/src/plugins/setupwizard/wizardResources.qrc @@ -18,8 +18,6 @@ resources/bttn-ppm-up.png resources/bttn-pwm-down.png resources/bttn-pwm-up.png - resources/bttn-rapid-down.png - resources/bttn-rapid-up.png resources/bttn-sat-down.png resources/bttn-sat-up.png resources/bttn-sbus-down.png @@ -27,5 +25,9 @@ resources/bttn-txwizard-off.png resources/bttn-txwizard-on.png resources/connection-diagrams.svg + resources/bttn-calculate-down.png + resources/bttn-calculate-up.png + resources/bttn-turbo-down.png + resources/bttn-turbo-up.png From 66534ae91cb3f7c5997eb7358cf071689fe2d200 Mon Sep 17 00:00:00 2001 From: Fredrik Arvidsson Date: Mon, 27 Aug 2012 07:19:46 +0200 Subject: [PATCH 018/105] OP-39 Fiddling around with connection diagram. Updated some GUI. Started on motor calibration function. --- .../plugins/setupwizard/connectiondiagram.cpp | 151 +- .../plugins/setupwizard/connectiondiagram.h | 10 +- .../plugins/setupwizard/connectiondiagram.ui | 9 + .../plugins/setupwizard/pages/flashpage.ui | 3 + .../plugins/setupwizard/pages/inputpage.ui | 8 +- .../setupwizard/pages/levellingpage.cpp | 7 +- .../setupwizard/pages/levellingpage.ui | 3 + .../plugins/setupwizard/pages/multipage.cpp | 6 + .../plugins/setupwizard/pages/multipage.ui | 9 +- .../plugins/setupwizard/pages/outputpage.ui | 8 +- .../plugins/setupwizard/pages/startpage.ui | 16 +- .../plugins/setupwizard/pages/summarypage.ui | 2 +- .../resources/connection-diagrams.svg | 11526 ++++++++-------- .../src/plugins/setupwizard/setupwizard.h | 8 +- .../vehicleconfigurationhelper.cpp | 21 +- .../setupwizard/vehicleconfigurationhelper.h | 5 +- .../setupwizard/vehicleconfigurationsource.h | 6 +- 17 files changed, 6240 insertions(+), 5558 deletions(-) diff --git a/ground/openpilotgcs/src/plugins/setupwizard/connectiondiagram.cpp b/ground/openpilotgcs/src/plugins/setupwizard/connectiondiagram.cpp index 91faef46d..9ca7f5db4 100644 --- a/ground/openpilotgcs/src/plugins/setupwizard/connectiondiagram.cpp +++ b/ground/openpilotgcs/src/plugins/setupwizard/connectiondiagram.cpp @@ -31,31 +31,142 @@ #include "ui_connectiondiagram.h" ConnectionDiagram::ConnectionDiagram(QWidget *parent, VehicleConfigurationSource* configSource) : - QDialog(parent), m_configSource(configSource), - ui(new Ui::ConnectionDiagram) + QDialog(parent), ui(new Ui::ConnectionDiagram), m_configSource(configSource), m_background(0) { - setWindowTitle(tr("Connection Diagram")); ui->setupUi(this); - - QGraphicsScene *scene = new QGraphicsScene(this); - ui->connectionDiagram->setScene(scene); - ui->connectionDiagram->setViewportUpdateMode(QGraphicsView::FullViewportUpdate); - m_renderer = new QSvgRenderer(); - if (m_renderer->load(QString(":/setupwizard/resources/connection-diagrams.svg")) && m_renderer->isValid()) - { - scene->clear(); - QGraphicsSvgItem* ccPic = new QGraphicsSvgItem(); - ccPic->setSharedRenderer(m_renderer); - ccPic->setElementId("cc"); - scene->addItem(ccPic); - qDebug() << "Scene complete"; - - //ui->connectionDiagram->setSceneRect(ccPic->boundingRect()); - //ui->connectionDiagram->fitInView(ccPic, Qt::KeepAspectRatio); - } + setWindowTitle(tr("Connection Diagram")); + setupGraphicsScene(); } ConnectionDiagram::~ConnectionDiagram() { delete ui; } + +void ConnectionDiagram::resizeEvent(QResizeEvent *event) +{ + QWidget::resizeEvent(event); + ui->connectionDiagram->fitInView(m_background, Qt::KeepAspectRatio); +} + +void ConnectionDiagram::showEvent(QShowEvent * event) +{ + QWidget::showEvent(event); + ui->connectionDiagram->fitInView(m_background, Qt::KeepAspectRatio); +} + +void ConnectionDiagram::setupGraphicsScene() +{ + QGraphicsScene *scene = new QGraphicsScene(this); + ui->connectionDiagram->setScene(scene); + ui->connectionDiagram->setViewportUpdateMode(QGraphicsView::FullViewportUpdate); + m_renderer = new QSvgRenderer(); + if (QFile::exists(QString(":/setupwizard/resources/connection-diagrams.svg")) && + m_renderer->load(QString(":/setupwizard/resources/connection-diagrams.svg")) && + m_renderer->isValid()) + { + scene->clear(); + m_background = new QGraphicsSvgItem(); + m_background->setSharedRenderer(m_renderer); + m_background->setElementId("background"); + m_background->setVisible(true); + m_background->setFlags(QGraphicsItem::ItemClipsChildrenToShape | QGraphicsItem::ItemClipsToShape); + scene->addItem(m_background); + + QList elementsToShow; + + switch(m_configSource->getControllerType()) + { + case VehicleConfigurationSource::CONTROLLER_CC: + case VehicleConfigurationSource::CONTROLLER_CC3D: + case VehicleConfigurationSource::CONTROLLER_REVO: + case VehicleConfigurationSource::CONTROLLER_PIPX: + default: + elementsToShow << "controller"; + break; + } + + switch (m_configSource->getVehicleType()) + { + case VehicleConfigurationSource::VEHICLE_MULTI: + switch (m_configSource->getVehicleSubType()) + { + case VehicleConfigurationSource::MULTI_ROTOR_TRI_Y: + elementsToShow << "tri"; + break; + case VehicleConfigurationSource::MULTI_ROTOR_QUAD_X: + elementsToShow << "quad-x"; + break; + case VehicleConfigurationSource::MULTI_ROTOR_QUAD_PLUS: + elementsToShow << "quad-p"; + break; + case VehicleConfigurationSource::MULTI_ROTOR_HEXA: + elementsToShow << "hexa"; + break; + case VehicleConfigurationSource::MULTI_ROTOR_HEXA_COAX_Y: + elementsToShow << "hexa-y"; + break; + case VehicleConfigurationSource::MULTI_ROTOR_HEXA_H: + elementsToShow << "hexa-h"; + break; + default: + break; + } + break; + case VehicleConfigurationSource::VEHICLE_FIXEDWING: + case VehicleConfigurationSource::VEHICLE_HELI: + case VehicleConfigurationSource::VEHICLE_SURFACE: + default: + break; + } + + switch (m_configSource->getInputType()) + { + case VehicleConfigurationSource::INPUT_PWM: + elementsToShow << "pwm" << "receiver" ; + break; + case VehicleConfigurationSource::INPUT_PPM: + elementsToShow << "receiver" << "ppm"; + break; + case VehicleConfigurationSource::INPUT_SBUS: + elementsToShow << "sbus"; + break; + case VehicleConfigurationSource::INPUT_DSM: + elementsToShow << "satellite"; + break; + default: + break; + } + + setupGraphicsSceneItems(scene, elementsToShow); + + ui->connectionDiagram->setSceneRect(m_background->boundingRect()); + ui->connectionDiagram->fitInView(m_background, Qt::KeepAspectRatio); + + qDebug() << "Scene complete"; + } +} + +void ConnectionDiagram::setupGraphicsSceneItems(QGraphicsScene *scene, QList elementsToShow) +{ + foreach(QString elementId, elementsToShow) { + if(m_renderer->elementExists(elementId)) { + QGraphicsSvgItem* element = new QGraphicsSvgItem(); + element->setSharedRenderer(m_renderer); + element->setElementId(elementId); + element->setVisible(true); + scene->addItem(element); + + QMatrix matrix = m_renderer->matrixForElement(elementId); + QRectF orig = matrix.mapRect(m_renderer->boundsOnElement(elementId)); + element->setPos(orig.x(),orig.y()); + qDebug() << "Adding " << elementId << " to scene at " << element->pos(); + } + else + { + qDebug() << "Element " << elementId << " not found in renderer!"; + } + } +} + + diff --git a/ground/openpilotgcs/src/plugins/setupwizard/connectiondiagram.h b/ground/openpilotgcs/src/plugins/setupwizard/connectiondiagram.h index 546bd4f39..2063403a5 100644 --- a/ground/openpilotgcs/src/plugins/setupwizard/connectiondiagram.h +++ b/ground/openpilotgcs/src/plugins/setupwizard/connectiondiagram.h @@ -53,8 +53,14 @@ private: VehicleConfigurationSource *m_configSource; QSvgRenderer *m_renderer; - QHash m_vehicleImageMap; - QHash m_receiverImageMap; + QGraphicsSvgItem* m_background; + + void setupGraphicsScene(); + void setupGraphicsSceneItems(QGraphicsScene *scene, QList elementsToShow); +protected: + void resizeEvent(QResizeEvent *event); + void showEvent(QShowEvent *event); + }; #endif // CONNECTIONDIAGRAM_H diff --git a/ground/openpilotgcs/src/plugins/setupwizard/connectiondiagram.ui b/ground/openpilotgcs/src/plugins/setupwizard/connectiondiagram.ui index 8c4e74b45..27221c4c7 100644 --- a/ground/openpilotgcs/src/plugins/setupwizard/connectiondiagram.ui +++ b/ground/openpilotgcs/src/plugins/setupwizard/connectiondiagram.ui @@ -31,6 +31,15 @@ Qt::ScrollBarAlwaysOff + + + + 255 + 255 + 255 + + + diff --git a/ground/openpilotgcs/src/plugins/setupwizard/pages/flashpage.ui b/ground/openpilotgcs/src/plugins/setupwizard/pages/flashpage.ui index 89f3d5e40..131d02540 100644 --- a/ground/openpilotgcs/src/plugins/setupwizard/pages/flashpage.ui +++ b/ground/openpilotgcs/src/plugins/setupwizard/pages/flashpage.ui @@ -52,6 +52,9 @@ p, li { white-space: pre-wrap; } 70 + + Write configuration to controller + QToolButton { border: none } diff --git a/ground/openpilotgcs/src/plugins/setupwizard/pages/inputpage.ui b/ground/openpilotgcs/src/plugins/setupwizard/pages/inputpage.ui index 8681fd49a..7446dbbc3 100644 --- a/ground/openpilotgcs/src/plugins/setupwizard/pages/inputpage.ui +++ b/ground/openpilotgcs/src/plugins/setupwizard/pages/inputpage.ui @@ -55,7 +55,7 @@ p, li { white-space: pre-wrap; } - Airplane, Sloper, Jet + Spectrum Satellite QToolButton { border: none } @@ -102,7 +102,7 @@ p, li { white-space: pre-wrap; } - Tricopter, Quadcopter, Hexacopter, Octocopter + PWM - One cable per channel QToolButton { border: none } @@ -152,7 +152,7 @@ p, li { white-space: pre-wrap; } - Airplane, Sloper, Jet + PPM - One cable for all channels QToolButton { border: none } @@ -199,7 +199,7 @@ p, li { white-space: pre-wrap; } - Airplane, Sloper, Jet + Futaba S-BUS QToolButton { border: none } diff --git a/ground/openpilotgcs/src/plugins/setupwizard/pages/levellingpage.cpp b/ground/openpilotgcs/src/plugins/setupwizard/pages/levellingpage.cpp index 10afada80..34ef253f5 100644 --- a/ground/openpilotgcs/src/plugins/setupwizard/pages/levellingpage.cpp +++ b/ground/openpilotgcs/src/plugins/setupwizard/pages/levellingpage.cpp @@ -69,6 +69,10 @@ void LevellingPage::performLevelling() return; } + getWizard()->button(QWizard::CancelButton)->setEnabled(false); + getWizard()->button(QWizard::BackButton)->setEnabled(false); + ui->levelButton->setEnabled(false); + if(!m_levellingUtil) { // Measure every 100ms * 100times = 10s @@ -79,9 +83,6 @@ void LevellingPage::performLevelling() connect(m_levellingUtil, SIGNAL(progress(long,long)), this, SLOT(levellingProgress(long,long))); connect(m_levellingUtil, SIGNAL(done(accelGyroBias)), this, SLOT(levellingDone(accelGyroBias))); connect(m_levellingUtil, SIGNAL(timeout(QString)), this, SLOT(levellingTimeout(QString))); - getWizard()->button(QWizard::CancelButton)->setEnabled(false); - getWizard()->button(QWizard::BackButton)->setEnabled(false); - ui->levelButton->setEnabled(false); m_levellingUtil->start(); } diff --git a/ground/openpilotgcs/src/plugins/setupwizard/pages/levellingpage.ui b/ground/openpilotgcs/src/plugins/setupwizard/pages/levellingpage.ui index 17687d2c1..493dbea91 100644 --- a/ground/openpilotgcs/src/plugins/setupwizard/pages/levellingpage.ui +++ b/ground/openpilotgcs/src/plugins/setupwizard/pages/levellingpage.ui @@ -49,6 +49,9 @@ p, li { white-space: pre-wrap; } 70 + + Calculate gyro and accelerometer bias + QToolButton { border: none } diff --git a/ground/openpilotgcs/src/plugins/setupwizard/pages/multipage.cpp b/ground/openpilotgcs/src/plugins/setupwizard/pages/multipage.cpp index 37419eabb..6d10509b7 100644 --- a/ground/openpilotgcs/src/plugins/setupwizard/pages/multipage.cpp +++ b/ground/openpilotgcs/src/plugins/setupwizard/pages/multipage.cpp @@ -65,6 +65,7 @@ bool MultiPage::validatePage() { SetupWizard::VEHICLE_SUB_TYPE type = (SetupWizard::VEHICLE_SUB_TYPE) ui->typeCombo->itemData(ui->typeCombo->currentIndex()).toInt(); getWizard()->setVehicleSubType(type); + return true; } void MultiPage::setupMultiTypesCombo() @@ -94,6 +95,8 @@ void MultiPage::setupMultiTypesCombo() ui->typeCombo->addItem(tr("Hexacopter H"), SetupWizard::MULTI_ROTOR_HEXA_H); m_descriptions << tr("Hexacopter H"); + // Fredrik Arvidsson(m_thread) 2012-08-26 Disable Octos until further notice + /* ui->typeCombo->addItem(tr("Octocopter"), SetupWizard::MULTI_ROTOR_OCTO); m_descriptions << tr("Octocopter"); @@ -105,15 +108,18 @@ void MultiPage::setupMultiTypesCombo() ui->typeCombo->addItem(tr("Octocopter V"), SetupWizard::MULTI_ROTOR_OCTO_V); m_descriptions << tr("Octocopter V"); + */ } void MultiPage::updateAvailableTypes() { + /* QVariant enable = (getWizard()->getInputType() == SetupWizard::INPUT_PWM) ? QVariant(0) : QVariant(1 | 32); ui->typeCombo->model()->setData(ui->typeCombo->model()->index(6, 0), enable, Qt::UserRole - 1); ui->typeCombo->model()->setData(ui->typeCombo->model()->index(7, 0), enable, Qt::UserRole - 1); ui->typeCombo->model()->setData(ui->typeCombo->model()->index(8, 0), enable, Qt::UserRole - 1); ui->typeCombo->model()->setData(ui->typeCombo->model()->index(9, 0), enable, Qt::UserRole - 1); + */ } void MultiPage::updateImageAndDescription() diff --git a/ground/openpilotgcs/src/plugins/setupwizard/pages/multipage.ui b/ground/openpilotgcs/src/plugins/setupwizard/pages/multipage.ui index 8f15a2973..a369f1019 100644 --- a/ground/openpilotgcs/src/plugins/setupwizard/pages/multipage.ui +++ b/ground/openpilotgcs/src/plugins/setupwizard/pages/multipage.ui @@ -26,13 +26,12 @@ <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"> +</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8pt; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:12pt; font-weight:600;">OpenPilot multirotor configuration</span></p> -<p style="-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;"></p> +<p style="-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;"><br /></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt;">This part of the wizard will set up the OpenPilot controller for use with a flying platform with multiple rotors. The wizard supports the most common types of multirotors. Other variants of multirotors can be configured by using custom configuration options in the configuration plugin in GCS.</span></p> -<p style="-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:10pt;"></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt;">Please select the type of multirotor you want to create a configuration for below:</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt;">(Depending on input configuration all types may not be available to select from the list.)</span></p></body></html> +<p style="-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:10pt;"><br /></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt;">Please select the type of multirotor you want to create a configuration for below:</span></p></body></html> Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop diff --git a/ground/openpilotgcs/src/plugins/setupwizard/pages/outputpage.ui b/ground/openpilotgcs/src/plugins/setupwizard/pages/outputpage.ui index 2773cbca9..45090f1e6 100644 --- a/ground/openpilotgcs/src/plugins/setupwizard/pages/outputpage.ui +++ b/ground/openpilotgcs/src/plugins/setupwizard/pages/outputpage.ui @@ -55,7 +55,7 @@ p, li { white-space: pre-wrap; } - Airplane, Sloper, Jet + Turbo PWM ESC 400Hz QToolButton { border: none } @@ -65,8 +65,8 @@ p, li { white-space: pre-wrap; } - :/setupwizard/resources/bttn-turbo-down.png - :/setupwizard/resources/bttn-turbo-up.png:/setupwizard/resources/bttn-turbo-down.png + :/setupwizard/resources/bttn-turbo-up.png + :/setupwizard/resources/bttn-turbo-down.png:/setupwizard/resources/bttn-turbo-up.png @@ -105,7 +105,7 @@ p, li { white-space: pre-wrap; } - Tricopter, Quadcopter, Hexacopter, Octocopter + Standard ESC 50Hz QToolButton { border: none } diff --git a/ground/openpilotgcs/src/plugins/setupwizard/pages/startpage.ui b/ground/openpilotgcs/src/plugins/setupwizard/pages/startpage.ui index e6a293d90..75ab147d7 100644 --- a/ground/openpilotgcs/src/plugins/setupwizard/pages/startpage.ui +++ b/ground/openpilotgcs/src/plugins/setupwizard/pages/startpage.ui @@ -24,7 +24,7 @@ 20 20 - 550 + 581 350 @@ -32,15 +32,21 @@ <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"> +</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8pt; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:12pt; font-weight:600;">Welcome to the OpenPilot Setup Wizard</span></p> -<p style="-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:8pt;"></p> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt;">This wizard will guide you through the basic steps of setting up your OpenPilot controller board. The following pages contains simple questions about your vehicle and its characteristics. </span></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt;">From the information gathered the wizard will create a baseline configuration that should be good enough for you to get a quick start using your OpenPilot product.</span></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt;">The baseline configuration can, if desired, be uploaded to the OpenPilot Controller board at the end of this wizard.</span></p> -<p style="-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:10pt;"></p> +<p style="-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:10pt;"><br /></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt;">This wizard does not contain the full range of settings available in the GCS Config plugin. All configuration parameters can be changed at later by using the GCS Config plugin.</span></p> -<p style="-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:10pt;"></p> +<p style="-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:10pt;"><br /></p> +<p style="-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:10pt;"><br /></p> +<p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:12pt; font-weight:600; color:#ff0000;">REMOVE ALL PROPELLERS FROM THE VEHICHLE </span></p> +<p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:12pt; font-weight:600; color:#ff0000;">BEFORE PROCEEDING!</span></p> +<p style="-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:10pt;"><br /></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt;">Ignoring the above request will put you in a</span><span style=" font-size:10pt; font-weight:600; color:#ff0000;"> risk of serious injury</span><span style=" font-size:10pt;">!</span></p> +<p style="-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:10pt;"><br /></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt;">Ok, lets start the configuration by clicking on the 'Next'/'Continue' button below.</span></p></body></html> diff --git a/ground/openpilotgcs/src/plugins/setupwizard/pages/summarypage.ui b/ground/openpilotgcs/src/plugins/setupwizard/pages/summarypage.ui index 11f646232..85b332d21 100644 --- a/ground/openpilotgcs/src/plugins/setupwizard/pages/summarypage.ui +++ b/ground/openpilotgcs/src/plugins/setupwizard/pages/summarypage.ui @@ -51,7 +51,7 @@ p, li { white-space: pre-wrap; } - Tricopter, Quadcopter, Hexacopter, Octocopter + Show connection diagram for configuration Hardware diff --git a/ground/openpilotgcs/src/plugins/setupwizard/resources/connection-diagrams.svg b/ground/openpilotgcs/src/plugins/setupwizard/resources/connection-diagrams.svg index 5639b4c41..853902d13 100644 --- a/ground/openpilotgcs/src/plugins/setupwizard/resources/connection-diagrams.svg +++ b/ground/openpilotgcs/src/plugins/setupwizard/resources/connection-diagrams.svg @@ -13,8 +13,8 @@ id="svg4183" version="1.1" inkscape:version="0.48.2 r9819" - width="4065.2493" - height="1760.019" + width="1100" + height="550" xml:space="preserve" sodipodi:docname="connection-diagrams.svg">1234 - - - diff --git a/ground/openpilotgcs/src/plugins/setupwizard/outputcalibrationutil.cpp b/ground/openpilotgcs/src/plugins/setupwizard/outputcalibrationutil.cpp new file mode 100644 index 000000000..0c2e10746 --- /dev/null +++ b/ground/openpilotgcs/src/plugins/setupwizard/outputcalibrationutil.cpp @@ -0,0 +1,92 @@ +/** + ****************************************************************************** + * + * @file outputcalibrationutil.cpp + * @author The OpenPilot Team, http://www.openpilot.org Copyright (C) 2012. + * @addtogroup + * @{ + * @addtogroup OutputCalibrationUtil + * @{ + * @brief + *****************************************************************************/ +/* + * 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 + * the Free Software Foundation; either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "outputcalibrationutil.h" +#include "actuatorcommand.h" +#include "extensionsystem/pluginmanager.h" + +OutputCalibrationUtil::OutputCalibrationUtil(QObject *parent) : + QObject(parent), m_outputChannel(0) +{ + ExtensionSystem::PluginManager *pm = ExtensionSystem::PluginManager::instance(); + m_uavObjectManager = pm->getObject(); + Q_ASSERT(m_uavObjectManager); +} + +void OutputCalibrationUtil::startChannelOutput(quint16 channel) +{ + if(m_outputChannel == 0 && channel > 0 && channel <= ActuatorCommand::CHANNEL_NUMELEM) + { + ActuatorCommand *actuatorCommand = ActuatorCommand::GetInstance(m_uavObjectManager); + Q_ASSERT(actuatorCommand); + UAVObject::Metadata metaData = actuatorCommand->getMetadata(); + + m_savedActuatorMetadata = metaData; + UAVObject::SetFlightAccess(metaData, UAVObject::ACCESS_READONLY); + UAVObject::SetFlightTelemetryUpdateMode(metaData, UAVObject::UPDATEMODE_ONCHANGE); + UAVObject::SetGcsTelemetryAcked(metaData, false); + UAVObject::SetGcsTelemetryUpdateMode(metaData, UAVObject::UPDATEMODE_ONCHANGE); + metaData.gcsTelemetryUpdatePeriod = 100; + + actuatorCommand->setMetadata(metaData); + actuatorCommand->updated(); + + //Start output... + m_outputChannel = channel; + } +} + +void OutputCalibrationUtil::stopChannelOutput() +{ + if(m_outputChannel > 0) + { + //Stop output... + ActuatorCommand *actuatorCommand = ActuatorCommand::GetInstance(m_uavObjectManager); + Q_ASSERT(actuatorCommand); + UAVObject::Metadata metaData = actuatorCommand->getMetadata(); + + // Restore metadata to what it was before + metaData = m_savedActuatorMetadata; + actuatorCommand->setMetadata(metaData); + actuatorCommand->updated(); + + m_outputChannel = 0; + } +} + +void OutputCalibrationUtil::setChannelOutputValue(quint16 value) +{ + if(m_outputChannel > 0) + { + //Set output value + ActuatorCommand *actuatorCommand = ActuatorCommand::GetInstance(m_uavObjectManager); + Q_ASSERT(actuatorCommand); + ActuatorCommand::DataFields data = actuatorCommand->getData(); + data.Channel[m_outputChannel - 1] = value; + actuatorCommand->setData(data); + } +} diff --git a/ground/openpilotgcs/src/plugins/setupwizard/outputcalibrationutil.h b/ground/openpilotgcs/src/plugins/setupwizard/outputcalibrationutil.h new file mode 100644 index 000000000..82149a22d --- /dev/null +++ b/ground/openpilotgcs/src/plugins/setupwizard/outputcalibrationutil.h @@ -0,0 +1,57 @@ +/** + ****************************************************************************** + * + * @file outputcalibrationutil.h + * @author The OpenPilot Team, http://www.openpilot.org Copyright (C) 2012. + * @addtogroup + * @{ + * @addtogroup OutputCalibrationUtil + * @{ + * @brief + *****************************************************************************/ +/* + * 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 + * the Free Software Foundation; either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef OUTPUTCALIBRATIONUTIL_H +#define OUTPUTCALIBRATIONUTIL_H + +#include +#include "uavobject.h" +#include "uavobjectmanager.h" + + +class OutputCalibrationUtil : public QObject +{ + Q_OBJECT +public: + explicit OutputCalibrationUtil(QObject *parent = 0); + +signals: + +public slots: + void startChannelOutput(quint16 channel); + void stopChannelOutput(); + + void setChannelOutputValue(quint16 value); + +private: + quint16 m_outputChannel; + UAVObject::Metadata m_savedActuatorMetadata; + UAVObjectManager *m_uavObjectManager; + +}; + +#endif // OUTPUTCALIBRATIONUTIL_H diff --git a/ground/openpilotgcs/src/plugins/setupwizard/pages/flashpage.cpp b/ground/openpilotgcs/src/plugins/setupwizard/pages/flashpage.cpp index 79014eaf5..988312bef 100644 --- a/ground/openpilotgcs/src/plugins/setupwizard/pages/flashpage.cpp +++ b/ground/openpilotgcs/src/plugins/setupwizard/pages/flashpage.cpp @@ -68,7 +68,7 @@ void FlashPage::writeToController() ui->saveButton->setEnabled(false); getWizard()->button(QWizard::CancelButton)->setEnabled(false); - getWizard()->button(QWizard::BackButton)->setEnabled(false); + setCommitPage(true); VehicleConfigurationHelper helper(getWizard()); connect(&helper, SIGNAL(saveProgress(int, int, QString)),this, SLOT(saveProgress(int, int, QString))); m_successfulWrite = helper.setupVehicle(); @@ -76,7 +76,7 @@ void FlashPage::writeToController() ui->saveProgressLabel->setText(QString("%2").arg(m_successfulWrite ? "green" : "red", ui->saveProgressLabel->text())); ui->saveButton->setEnabled(true); getWizard()->button(QWizard::CancelButton)->setEnabled(true); - getWizard()->button(QWizard::BackButton)->setEnabled(true); + setCommitPage(false); emit completeChanged(); } diff --git a/ground/openpilotgcs/src/plugins/setupwizard/pages/levellingpage.cpp b/ground/openpilotgcs/src/plugins/setupwizard/pages/levellingpage.cpp index 992e7dd50..d806a3ffd 100644 --- a/ground/openpilotgcs/src/plugins/setupwizard/pages/levellingpage.cpp +++ b/ground/openpilotgcs/src/plugins/setupwizard/pages/levellingpage.cpp @@ -71,7 +71,6 @@ void LevellingPage::performLevelling() } getWizard()->button(QWizard::CancelButton)->setEnabled(false); - getWizard()->button(QWizard::BackButton)->setEnabled(false); ui->levelButton->setEnabled(false); if(!m_levellingUtil) @@ -122,8 +121,7 @@ void LevellingPage::stopLevelling() disconnect(m_levellingUtil, SIGNAL(progress(long,long)), this, SLOT(levellingProgress(long,long))); disconnect(m_levellingUtil, SIGNAL(done(accelGyroBias)), this, SLOT(levellingDone(accelGyroBias))); disconnect(m_levellingUtil, SIGNAL(timeout(QString)), this, SLOT(levellingTimeout(QString))); - ui->levelButton->setEnabled(true); getWizard()->button(QWizard::CancelButton)->setEnabled(true); - getWizard()->button(QWizard::BackButton)->setEnabled(true); + ui->levelButton->setEnabled(true); } } diff --git a/ground/openpilotgcs/src/plugins/setupwizard/pages/outputcalibrationpage.cpp b/ground/openpilotgcs/src/plugins/setupwizard/pages/outputcalibrationpage.cpp index 80c119116..b4aaed7cb 100644 --- a/ground/openpilotgcs/src/plugins/setupwizard/pages/outputcalibrationpage.cpp +++ b/ground/openpilotgcs/src/plugins/setupwizard/pages/outputcalibrationpage.cpp @@ -29,12 +29,213 @@ #include "ui_outputcalibrationpage.h" OutputCalibrationPage::OutputCalibrationPage(SetupWizard *wizard, QWidget *parent) : - AbstractWizardPage(wizard, parent), ui(new Ui::OutputCalibrationPage) + AbstractWizardPage(wizard, parent), ui(new Ui::OutputCalibrationPage), m_vehicleBoundsItem(0), + m_currentWizardIndex(0), m_calibrationUtil(0) { ui->setupUi(this); + + m_calibrationUtil = new OutputCalibrationUtil(); + + m_vehicleRenderer = new QSvgRenderer(); + if (QFile::exists(QString(":/setupwizard/resources/multirotor-shapes.svg")) && + m_vehicleRenderer->load(QString(":/setupwizard/resources/multirotor-shapes.svg")) && + m_vehicleRenderer->isValid()) + { + m_vehicleScene = new QGraphicsScene(this); + ui->vehicleView->setScene(m_vehicleScene); + } } OutputCalibrationPage::~OutputCalibrationPage() { + if(m_calibrationUtil) { + delete m_calibrationUtil; + } delete ui; } + +void OutputCalibrationPage::setupVehicle() +{ + m_wizardIndexes.clear(); + m_vehicleElementIds.clear(); + m_vehicleHighlightElementIndexes.clear(); + m_currentWizardIndex = 0; + m_vehicleScene->clear(); + switch(getWizard()->getVehicleSubType()) + { + case SetupWizard::MULTI_ROTOR_TRI_Y: + m_wizardIndexes << 0 << 1 << 2 << 1 << 2 << 1 << 2 << 3 << 4; + m_vehicleElementIds << "tri" << "tri-frame" << "tri-m1" << "tri-m2" << "tri-m3" << "tri-s1"; + m_vehicleHighlightElementIndexes << 0 << 1 << 1 << 2 << 2 << 3 << 3 << 4 << 4; + break; + case SetupWizard::MULTI_ROTOR_QUAD_X: + m_wizardIndexes << 0 << 1 << 2 << 1 << 2 << 1 << 2 << 1 << 2; + m_vehicleElementIds << "quad-x" << "quad-x-frame" << "quad-x-m1" << "quad-x-m2" << "quad-x-m3" << "quad-x-m4"; + m_vehicleHighlightElementIndexes << 0 << 1 << 1 << 2 << 2 << 3 << 3 << 4 << 4; + break; + case SetupWizard::MULTI_ROTOR_QUAD_PLUS: + m_wizardIndexes << 0 << 1 << 2 << 1 << 2 << 1 << 2 << 1 << 2; + m_vehicleElementIds << "quad-p" << "quad-p-frame" << "quad-p-m1" << "quad-p-m2" << "quad-p-m3" << "quad-p-m4"; + m_vehicleHighlightElementIndexes << 0 << 1 << 1 << 2 << 2 << 3 << 3 << 4 << 4; + break; + case SetupWizard::MULTI_ROTOR_HEXA: + m_wizardIndexes << 0 << 1 << 2 << 1 << 2 << 1 << 2 << 1 << 2 << 1 << 2 << 1 << 2; + m_vehicleElementIds << "hexa" << "hexa-frame" << "hexa-m1" << "hexa-m2" << "hexa-m3" << "hexa-m4" << "hexa-m5" << "hexa-m6"; + m_vehicleHighlightElementIndexes << 0 << 1 << 1 << 2 << 2 << 3 << 3 << 4 << 4 << 5 << 5 << 6 << 6; + break; + case SetupWizard::MULTI_ROTOR_HEXA_COAX_Y: + m_wizardIndexes << 0 << 1 << 2 << 1 << 2 << 1 << 2 << 1 << 2 << 1 << 2 << 1 << 2; + m_vehicleElementIds << "hexa-y6" << "hexa-y6-frame" << "hexa-y6-m1" << "hexa-y6-m2" << "hexa-y6-m3" << "hexa-y6-m4" << "hexa-y6-m5" << "hexa-y6-m6"; + m_vehicleHighlightElementIndexes << 0 << 1 << 1 << 2 << 2 << 3 << 3 << 4 << 4 << 5 << 5 << 6 << 6; + break; + case SetupWizard::MULTI_ROTOR_HEXA_H: + m_wizardIndexes << 0 << 1 << 2 << 1 << 2 << 1 << 2 << 1 << 2 << 1 << 2 << 1 << 2; + m_vehicleElementIds << "hexa-h" << "hexa-h-frame" << "hexa-h-m1" << "hexa-h-m2" << "hexa-h-m3" << "hexa-h-m4" << "hexa-h-m5" << "hexa-h-m6"; + m_vehicleHighlightElementIndexes << 0 << 1 << 1 << 2 << 2 << 3 << 3 << 4 << 4 << 5 << 5 << 6 << 6; + break; + default: + break; + } + setupVehicleItems(); +} + +void OutputCalibrationPage::setupVehicleItems() +{ + m_vehicleItems.clear(); + m_vehicleBoundsItem = new QGraphicsSvgItem(); + m_vehicleBoundsItem->setSharedRenderer(m_vehicleRenderer); + m_vehicleBoundsItem->setElementId(m_vehicleElementIds[0]); + m_vehicleBoundsItem->setZValue(-1); + m_vehicleBoundsItem->setOpacity(0); + m_vehicleScene->addItem(m_vehicleBoundsItem); + + QRectF parentBounds = m_vehicleRenderer->boundsOnElement(m_vehicleElementIds[0]); + + for(int i = 1; i < m_vehicleElementIds.size(); i++) + { + QGraphicsSvgItem *item = new QGraphicsSvgItem(); + item->setSharedRenderer(m_vehicleRenderer); + item->setElementId(m_vehicleElementIds[i]); + item->setZValue(i); + item->setOpacity(1.0); + QRectF itemBounds = m_vehicleRenderer->boundsOnElement(m_vehicleElementIds[i]); + item->setPos(itemBounds.x() - parentBounds.x(), itemBounds.y() - parentBounds.y()); + + m_vehicleScene->addItem(item); + m_vehicleItems << item; + } +} + +void OutputCalibrationPage::startWizard() +{ + ui->calibrationStack->setCurrentIndex(m_wizardIndexes[0]); + setupVehicleHighlightedPart(); +} + +void OutputCalibrationPage::setupVehicleHighlightedPart() +{ + qreal dimOpaque = m_currentWizardIndex == 0 ? 1.0 : 0.3; + qreal highlightOpaque = 1.0; + int highlightedIndex = m_vehicleHighlightElementIndexes[m_currentWizardIndex]; + for(int i = 0; i < m_vehicleItems.size(); i++) { + QGraphicsSvgItem* item = m_vehicleItems[i]; + item->setOpacity((highlightedIndex == i) ? highlightOpaque : dimOpaque); + } +} + +void OutputCalibrationPage::setWizardPage() +{ + m_calibrationUtil->stopChannelOutput(); + ui->backPageButton->setEnabled(m_currentWizardIndex > 0); + ui->nextPageButton->setEnabled(m_currentWizardIndex < (m_wizardIndexes.size() - 1)); + ui->calibrationStack->setCurrentIndex(m_wizardIndexes.at(m_currentWizardIndex)); + setupVehicleHighlightedPart(); +} + +void OutputCalibrationPage::initializePage() +{ + if(m_vehicleScene) { + setupVehicle(); + startWizard(); + } +} + +void OutputCalibrationPage::showEvent(QShowEvent *event) +{ + Q_UNUSED(event); + if(m_vehicleBoundsItem) { + ui->vehicleView->setSceneRect(m_vehicleBoundsItem->boundingRect()); + ui->vehicleView->fitInView(m_vehicleBoundsItem, Qt::KeepAspectRatio); + } +} + +void OutputCalibrationPage::on_nextPageButton_clicked() +{ + if(m_currentWizardIndex < m_wizardIndexes.size()) { + m_currentWizardIndex++; + setWizardPage(); + } +} + +void OutputCalibrationPage::on_backPageButton_clicked() +{ + if(m_currentWizardIndex > 0) { + m_currentWizardIndex--; + setWizardPage(); + } +} + +void OutputCalibrationPage::on_motorNeutralButton_toggled(bool checked) +{ + if(checked) { + m_calibrationUtil->startChannelOutput(m_vehicleHighlightElementIndexes[m_currentWizardIndex]); + m_calibrationUtil->setChannelOutputValue(ui->motorNeutralSlider->value()); + } + else { + m_calibrationUtil->setChannelOutputValue(ui->motorNeutralSlider->minimum()); + m_calibrationUtil->stopChannelOutput(); + } +} + +void OutputCalibrationPage::on_motorNeutralSlider_valueChanged(int value) +{ + if(ui->motorNeutralButton->isChecked()) + { + m_calibrationUtil->setChannelOutputValue(ui->motorNeutralSlider->value()); + } +} + +void OutputCalibrationPage::on_motorMaxButton_toggled(bool checked) +{ + +} + +void OutputCalibrationPage::on_motorMaxSlider_valueChanged(int position) +{ + +} + +void OutputCalibrationPage::on_servoCenterButton_toggled(bool checked) +{ + +} + +void OutputCalibrationPage::on_servoAngleButton_toggled(bool checked) +{ + +} + +void OutputCalibrationPage::on_servoMaxAngleSlider_valueChanged(int position) +{ + +} + +void OutputCalibrationPage::on_servoMinAngleSlider_valueChanged(int position) +{ + +} + +void OutputCalibrationPage::on_servoCenterSlider_valueChanged(int position) +{ + +} diff --git a/ground/openpilotgcs/src/plugins/setupwizard/pages/outputcalibrationpage.h b/ground/openpilotgcs/src/plugins/setupwizard/pages/outputcalibrationpage.h index 681c5f652..ecbdcca15 100644 --- a/ground/openpilotgcs/src/plugins/setupwizard/pages/outputcalibrationpage.h +++ b/ground/openpilotgcs/src/plugins/setupwizard/pages/outputcalibrationpage.h @@ -28,7 +28,10 @@ #ifndef OUTPUTCALIBRATIONPAGE_H #define OUTPUTCALIBRATIONPAGE_H +#include #include "abstractwizardpage.h" +#include "setupwizard.h" +#include "outputcalibrationutil.h" namespace Ui { class OutputCalibrationPage; @@ -41,9 +44,49 @@ class OutputCalibrationPage : public AbstractWizardPage public: explicit OutputCalibrationPage(SetupWizard *wizard, QWidget *parent = 0); ~OutputCalibrationPage(); + void initializePage(); + +protected: + void showEvent(QShowEvent *event); +private slots: + void on_nextPageButton_clicked(); + void on_backPageButton_clicked(); + + void on_motorNeutralButton_toggled(bool checked); + void on_motorNeutralSlider_valueChanged(int value); + + void on_motorMaxButton_toggled(bool checked); + void on_motorMaxSlider_valueChanged(int position); + + void on_servoCenterButton_toggled(bool checked); + void on_servoCenterSlider_valueChanged(int position); + + void on_servoAngleButton_toggled(bool checked); + void on_servoMaxAngleSlider_valueChanged(int position); + void on_servoMinAngleSlider_valueChanged(int position); + private: + void setupVehicle(); + void startWizard(); + void setupVehicleItems(); + void setupVehicleHighlightedPart(); + void setWizardPage(); + Ui::OutputCalibrationPage *ui; + QSvgRenderer *m_vehicleRenderer; + QGraphicsScene *m_vehicleScene; + QGraphicsSvgItem *m_vehicleBoundsItem; + + quint16 m_currentWizardIndex; + + QList m_vehicleElementIds; + QList m_vehicleItems; + QList m_vehicleHighlightElementIndexes; + QList m_wizardIndexes; + + OutputCalibrationUtil *m_calibrationUtil; + }; #endif // OUTPUTCALIBRATIONPAGE_H diff --git a/ground/openpilotgcs/src/plugins/setupwizard/pages/outputcalibrationpage.ui b/ground/openpilotgcs/src/plugins/setupwizard/pages/outputcalibrationpage.ui index a36237de2..401c80269 100644 --- a/ground/openpilotgcs/src/plugins/setupwizard/pages/outputcalibrationpage.ui +++ b/ground/openpilotgcs/src/plugins/setupwizard/pages/outputcalibrationpage.ui @@ -13,104 +13,617 @@ WizardPage - + - 310 + 300 40 - 250 - 250 + 270 + 270 QFrame::NoFrame - + - 110 - 341 - 380 - 20 + 20 + 40 + 270 + 291 - - Qt::Horizontal - - - QSlider::TicksBelow - - - 10 + + 1 + + + + + 0 + 10 + 261 + 281 + + + + <html><head/><body><p><span style=" font-size:10pt;">It is now time to calibrate the output levels for the signal controlling your vehichle. </span></p><p><span style=" font-size:10pt;">Depending on what vehichle you have selected, both motors controlled by ESC and servos controlled directly by the OpenPilot controller may have to be calibrated. <br/>The following steps will guide you safely through this process.<br/></span></p><p align="center"><span style=" font-size:14pt; font-weight:600; color:#ff0000;">VERY IMPORTANT!</span></p><p align="center"><br/><span style=" font-size:12pt; font-weight:600; color:#ff0000;">REMOVE ALL PROPELLERS FROM THE VEHICHLE BEFORE PROCEEDING!</span></p></body></html> + + + Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop + + + true + + + + + + + + 0 + 10 + 261 + 141 + + + + <html><head/><body><p>In this step we will set the neutral rate for the motor highlighted in the illustration to the right. <br/>Plase pay attention to the details and in particular the motors position and its rotation direction.</p><p>To find the neutral rate for this engine, press the Start button below and slide the slider to the right until the engine just starts to spin stably. <br/><br/>When done press button again to stop.</p></body></html> + + + Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop + + + true + + + + + false + + + + 10 + 200 + 241 + 19 + + + + 1000 + + + 1400 + + + 10 + + + 20 + + + Qt::Horizontal + + + false + + + QSlider::TicksBelow + + + 20 + + + + + + 90 + 240 + 75 + 23 + + + + Start + + + true + + + false + + + + + + + + 90 + 240 + 75 + 23 + + + + Start + + + true + + + false + + + + + + 0 + 10 + 261 + 171 + + + + <html><head/><body><p>Now it is time to find out the maximum rate for the motor highlighted in the illustration to the right. </p><p>To find the maximum rate for this engine, press the Start button below and slide the slider to the left until the engine just starts to slow down.</p><p>Running a brushless motor for a long time without proper cooling can in theory damage it. Therefore do not leave the motor running at full rate longer than neccesary.<br/><br/>When done press button again to stop.</p></body></html> + + + Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop + + + true + + + + + false + + + + 10 + 200 + 241 + 19 + + + + 1600 + + + 2000 + + + 10 + + + 20 + + + 2000 + + + Qt::Horizontal + + + false + + + false + + + QSlider::TicksBelow + + + 20 + + + + + + + + 0 + 10 + 261 + 141 + + + + <html><head/><body><p>This step calibrates the center position of the servo. To set the center position for this servo, press the Start button below and slide the slider to center the servo. </p><p>When done press button again to stop.</p></body></html> + + + Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop + + + true + + + + + false + + + + 10 + 200 + 241 + 19 + + + + 1000 + + + 2000 + + + 10 + + + 20 + + + 1500 + + + false + + + Qt::Horizontal + + + false + + + false + + + QSlider::TicksBelow + + + 40 + + + + + + 90 + 240 + 75 + 23 + + + + Start + + + true + + + false + + + + + + + + 90 + 240 + 75 + 23 + + + + Start + + + true + + + false + + + + + + 0 + 10 + 261 + 151 + + + + <html><head/><body><p>To save the servo and other hardware from damage we have to set the max and min angles for the servo. </p><p>To set the extreme angles for the servo, press the Start button below and select the top slider and slide it to the right until max angle is reached. Then select the lower slider and slide it left until the minimum angle is set.</p><p>When done press button again to stop.</p></body></html> + + + Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop + + + true + + + + + + 0 + 160 + 261 + 80 + + + + + + 10 + 40 + 16 + 17 + + + + + + + + + + 10 + 0 + 16 + 17 + + + + + + + true + + + + + + 39 + 0 + 211 + 20 + + + + 1500 + + + 2000 + + + 10 + + + 20 + + + 1500 + + + false + + + Qt::Horizontal + + + false + + + false + + + QSlider::TicksBelow + + + 40 + + + + + false + + + + 39 + 40 + 211 + 20 + + + + 1000 + + + 1500 + + + 10 + + + 20 + + + 1500 + + + false + + + Qt::Horizontal + + + false + + + false + + + QSlider::TicksBelow + + + 40 + + + + - + - 40 - 340 - 50 - 22 + 20 + 20 + 531 + 16 - - Qt::LeftToRight + + + 12 + 75 + true + + + + Output calibration - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter - + + + + + 148 + 340 + 75 + 23 + + + + > + + + + false - - QAbstractSpinBox::UpDownArrows - - - - - - - - - 2500 - - - 1000 - - - - 510 + 68 340 - 50 - 22 + 75 + 23 - - Qt::LeftToRight - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - QAbstractSpinBox::UpDownArrows - - - - - - - - - 2500 - - - 2000 + + < - + + + servoMaxAngleSliderRB + toggled(bool) + servoMaxAngleSlider + setEnabled(bool) + + + 37 + 208 + + + 164 + 209 + + + + + servoMinAngleSliderRB + toggled(bool) + servoMinAngleSlider + setEnabled(bool) + + + 37 + 248 + + + 164 + 249 + + + + + motorNeutralButton + toggled(bool) + motorNeutralSlider + setEnabled(bool) + + + 147 + 291 + + + 150 + 249 + + + + + motorMaxButton + toggled(bool) + motorMaxSlider + setEnabled(bool) + + + 147 + 291 + + + 150 + 249 + + + + + servoCenterButton + toggled(bool) + servoCenterSlider + setEnabled(bool) + + + 147 + 291 + + + 150 + 249 + + + + + servoAngleButton + toggled(bool) + sliderWidget + setEnabled(bool) + + + 147 + 291 + + + 150 + 239 + + + + diff --git a/ground/openpilotgcs/src/plugins/setupwizard/pages/startpage.ui b/ground/openpilotgcs/src/plugins/setupwizard/pages/startpage.ui index 75ab147d7..f6b649191 100644 --- a/ground/openpilotgcs/src/plugins/setupwizard/pages/startpage.ui +++ b/ground/openpilotgcs/src/plugins/setupwizard/pages/startpage.ui @@ -45,7 +45,7 @@ p, li { white-space: pre-wrap; } <p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:12pt; font-weight:600; color:#ff0000;">REMOVE ALL PROPELLERS FROM THE VEHICHLE </span></p> <p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:12pt; font-weight:600; color:#ff0000;">BEFORE PROCEEDING!</span></p> <p style="-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:10pt;"><br /></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt;">Ignoring the above request will put you in a</span><span style=" font-size:10pt; font-weight:600; color:#ff0000;"> risk of serious injury</span><span style=" font-size:10pt;">!</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt;">Ignoring the above request will put you in a</span><span style=" font-size:10pt; font-weight:600; color:#000000;"> risk of serious injury</span><span style=" font-size:10pt;">!</span></p> <p style="-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:10pt;"><br /></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt;">Ok, lets start the configuration by clicking on the 'Next'/'Continue' button below.</span></p></body></html> diff --git a/ground/openpilotgcs/src/plugins/setupwizard/pages/summarypage.ui b/ground/openpilotgcs/src/plugins/setupwizard/pages/summarypage.ui index 85b332d21..47cc2dbeb 100644 --- a/ground/openpilotgcs/src/plugins/setupwizard/pages/summarypage.ui +++ b/ground/openpilotgcs/src/plugins/setupwizard/pages/summarypage.ui @@ -26,13 +26,15 @@ <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"> +</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8pt; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:12pt; font-weight:600;">OpenPilot configuration summary</span></p> -<p style="-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;"></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt;">The first part of this wizard is now complete. The information required to create a basic OpenPilot controller configuration has been collected and a configuration can be created and saved.</span></p> +<p style="-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;"><br /></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt;">The first part of this wizard is now complete. All information required to create a basic OpenPilot controller configuration for a specific vehichle has been collected.</span></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt;">Below is a summary of the configuration and a button that links to a diagram illustrating how to connect required hardware and the OpenPilotController with the current configuration.</span></p> -<p style="-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:10pt;"></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt;">To complete the wizard and write the configuration directly to the OpenPilot controller please continue to the next and last step of this wizard.</span></p></body></html> +<p style="-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:10pt;"><br /></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt;">To continue the wizard and go through some basic configuration steps please continue to the next step of this wizard.</span></p> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt;">The following steps requires that your OpenPilot controller is set up according to the diagram and that the vehicle is </span><span style=" font-size:10pt; font-weight:600;">powered by a battery</span><span style=" font-size:10pt;"> as well as </span><span style=" font-size:10pt; font-weight:600;">connected to the computer</span><span style=" font-size:10pt;">.</span></p></body></html> Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop @@ -45,7 +47,7 @@ p, li { white-space: pre-wrap; } 460 - 250 + 260 100 100 @@ -75,9 +77,9 @@ Illustration 40 - 230 + 249 400 - 140 + 121 diff --git a/ground/openpilotgcs/src/plugins/setupwizard/resources/connection-diagrams.svg b/ground/openpilotgcs/src/plugins/setupwizard/resources/connection-diagrams.svg index 4e0fe2994..1f2219f3f 100644 --- a/ground/openpilotgcs/src/plugins/setupwizard/resources/connection-diagrams.svg +++ b/ground/openpilotgcs/src/plugins/setupwizard/resources/connection-diagrams.svg @@ -10,3735 +10,13 @@ xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" - id="svg4183" + id="svg12651" + height="519.51434" + width="1078.6002" version="1.1" inkscape:version="0.48.2 r9819" - width="1100" - height="550" - xml:space="preserve" - sodipodi:docname="connection-diagrams.svg">image/svg+xml + - 1 + 0 @@ -95,7 +95,7 @@ 1000 - 1400 + 1300 10 @@ -188,7 +188,7 @@ - 1600 + 1400 2000 @@ -267,7 +267,7 @@ 1500 - false + true Qt::Horizontal @@ -407,7 +407,7 @@ 1500 - false + true Qt::Horizontal @@ -453,7 +453,7 @@ 1500 - false + true Qt::Horizontal diff --git a/ground/openpilotgcs/src/plugins/setupwizard/vehicleconfigurationsource.h b/ground/openpilotgcs/src/plugins/setupwizard/vehicleconfigurationsource.h index 3f7cc9ed4..a80340726 100644 --- a/ground/openpilotgcs/src/plugins/setupwizard/vehicleconfigurationsource.h +++ b/ground/openpilotgcs/src/plugins/setupwizard/vehicleconfigurationsource.h @@ -42,9 +42,12 @@ struct accelGyroBias { }; struct actuatorChannelSettings { - qint16 channelMax; - qint16 channelNeutral; - qint16 channelMin; + quint16 channelMin; + quint16 channelNeutral; + quint16 channelMax; + + //Default values + actuatorChannelSettings(): channelMin(1000), channelNeutral(1080), channelMax(1800) {} }; struct actuatorSettings { From 3a38cb2cc1262658b7bb1f8d1978773c13c44d61 Mon Sep 17 00:00:00 2001 From: Fredrik Arvidsson Date: Fri, 7 Sep 2012 07:35:43 +0200 Subject: [PATCH 025/105] OP-39 Added new button graphix. Implemented servo min/max/neutral calibration. Added check for Actuator module alarm before running calibrarion. --- .../setupwizard/outputcalibrationutil.cpp | 35 +- .../setupwizard/outputcalibrationutil.h | 1 - .../setupwizard/pages/controllerpage.ui | 7 +- .../plugins/setupwizard/pages/flashpage.ui | 13 +- .../setupwizard/pages/levellingpage.cpp | 19 +- .../plugins/setupwizard/pages/levellingpage.h | 1 + .../pages/outputcalibrationpage.cpp | 108 +- .../setupwizard/pages/outputcalibrationpage.h | 7 +- .../pages/outputcalibrationpage.ui | 4 +- .../plugins/setupwizard/pages/summarypage.ui | 28 +- .../plugins/setupwizard/pages/vehiclepage.ui | 9 + .../resources/bttn-illustration-down.png | Bin 0 -> 6683 bytes .../resources/bttn-illustration-up.png | Bin 0 -> 8406 bytes .../setupwizard/resources/bttn-save-down.png | Bin 0 -> 4401 bytes .../setupwizard/resources/bttn-save-up.png | Bin 0 -> 6521 bytes .../resources/multirotor-shapes.svg | 2967 ++++++++++------- .../vehicleconfigurationhelper.cpp | 33 +- .../setupwizard/vehicleconfigurationhelper.h | 2 +- .../plugins/setupwizard/wizardResources.qrc | 4 + 19 files changed, 1903 insertions(+), 1335 deletions(-) create mode 100644 ground/openpilotgcs/src/plugins/setupwizard/resources/bttn-illustration-down.png create mode 100644 ground/openpilotgcs/src/plugins/setupwizard/resources/bttn-illustration-up.png create mode 100644 ground/openpilotgcs/src/plugins/setupwizard/resources/bttn-save-down.png create mode 100644 ground/openpilotgcs/src/plugins/setupwizard/resources/bttn-save-up.png diff --git a/ground/openpilotgcs/src/plugins/setupwizard/outputcalibrationutil.cpp b/ground/openpilotgcs/src/plugins/setupwizard/outputcalibrationutil.cpp index 83c752d87..ad7e68184 100644 --- a/ground/openpilotgcs/src/plugins/setupwizard/outputcalibrationutil.cpp +++ b/ground/openpilotgcs/src/plugins/setupwizard/outputcalibrationutil.cpp @@ -29,6 +29,7 @@ #include "actuatorcommand.h" #include "extensionsystem/pluginmanager.h" #include "vehicleconfigurationhelper.h" +#include "manualcontrolsettings.h" const quint16 OutputCalibrationUtil::UPDATE_CHANNEL_MAPPING[10] = {0, 0, 0, 1, 2, 3, 2, 2, 3, 3}; @@ -50,19 +51,37 @@ void OutputCalibrationUtil::setupOutputRates(const QList &outputRates) //Set actuator settings for channels ActuatorSettings *actuatorSettings = ActuatorSettings::GetInstance(m_uavObjectManager); Q_ASSERT(actuatorSettings); - ActuatorSettings::DataFields data = actuatorSettings->getData(); + ActuatorSettings::DataFields aData = actuatorSettings->getData(); for(int i = 0; i < outputRates.size(); i++) { - data.ChannelType[i] = ActuatorSettings::CHANNELTYPE_PWM; - data.ChannelAddr[i] = i; - data.ChannelMin[i] = 1000; - data.ChannelNeutral[i] = 1000; - data.ChannelMax[i] = 2000; - data.ChannelUpdateFreq[UPDATE_CHANNEL_MAPPING[i]] = outputRates[i]; + aData.ChannelType[i] = ActuatorSettings::CHANNELTYPE_PWM; + aData.ChannelAddr[i] = i; + aData.ChannelMin[i] = 1000; + aData.ChannelNeutral[i] = 1000; + aData.ChannelMax[i] = 2000; + aData.ChannelUpdateFreq[UPDATE_CHANNEL_MAPPING[i]] = outputRates[i]; } - actuatorSettings->setData(data); + actuatorSettings->setData(aData); actuatorSettings->updated(); + + ManualControlSettings *manualControlSettings = ManualControlSettings::GetInstance(m_uavObjectManager); + Q_ASSERT(manualControlSettings); + ManualControlSettings::DataFields cData = manualControlSettings->getData(); + cData.ChannelGroups[ManualControlSettings::CHANNELGROUPS_THROTTLE] = ManualControlSettings::CHANNELGROUPS_PWM; + cData.ChannelGroups[ManualControlSettings::CHANNELGROUPS_ROLL] = ManualControlSettings::CHANNELGROUPS_PWM; + cData.ChannelGroups[ManualControlSettings::CHANNELGROUPS_YAW] = ManualControlSettings::CHANNELGROUPS_PWM; + cData.ChannelGroups[ManualControlSettings::CHANNELGROUPS_PITCH] = ManualControlSettings::CHANNELGROUPS_PWM; + cData.ChannelGroups[ManualControlSettings::CHANNELGROUPS_FLIGHTMODE] = ManualControlSettings::CHANNELGROUPS_PWM; + + cData.ChannelNumber[ManualControlSettings::CHANNELGROUPS_THROTTLE] = 1; + cData.ChannelNumber[ManualControlSettings::CHANNELGROUPS_ROLL] = 2; + cData.ChannelNumber[ManualControlSettings::CHANNELGROUPS_YAW] = 3; + cData.ChannelNumber[ManualControlSettings::CHANNELGROUPS_PITCH] = 4; + cData.ChannelNumber[ManualControlSettings::CHANNELGROUPS_FLIGHTMODE] = 5; + + manualControlSettings->setData(cData); + manualControlSettings->updated(); } void OutputCalibrationUtil::startChannelOutput(quint16 channel, quint16 safeValue) diff --git a/ground/openpilotgcs/src/plugins/setupwizard/outputcalibrationutil.h b/ground/openpilotgcs/src/plugins/setupwizard/outputcalibrationutil.h index ae1a77223..38be02cb7 100644 --- a/ground/openpilotgcs/src/plugins/setupwizard/outputcalibrationutil.h +++ b/ground/openpilotgcs/src/plugins/setupwizard/outputcalibrationutil.h @@ -54,7 +54,6 @@ public slots: private: static const quint16 UPDATE_CHANNEL_MAPPING[10]; - VehicleConfigurationSource *m_configSource; actuatorSettings *m_actuatorSettings; qint16 m_outputChannel; quint16 m_safeValue; diff --git a/ground/openpilotgcs/src/plugins/setupwizard/pages/controllerpage.ui b/ground/openpilotgcs/src/plugins/setupwizard/pages/controllerpage.ui index 1bb92aabe..f608f43b8 100644 --- a/ground/openpilotgcs/src/plugins/setupwizard/pages/controllerpage.ui +++ b/ground/openpilotgcs/src/plugins/setupwizard/pages/controllerpage.ui @@ -19,7 +19,7 @@ 20 20 550 - 201 + 261 @@ -31,7 +31,10 @@ p, li { white-space: pre-wrap; } <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt;">To continue the wizard needs to know what kind of OpenPilot controller you want to create a configuration for. The wizard will try to automatically detect what type of board you have when connected.</span></p> <p style="-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:10pt;"><br /></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt;">Please connect the board to a free usb port on your computer, or if a serial modem like BlueTooth, PipX or other is used, power up the board and select the device to connect with from the list below. Then press 'Connect'. If the board already is connected and succesfully detected the board type will already be displayed. You can disconnect and select another device if you need to detect another board.</span></p></body></html> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt;">Please connect the board to a free usb port on your computer, or if a serial modem like BlueTooth, PipX or other is used, power up the board and select the device to connect with from the list below. Then press 'Connect'. If the board already is connected and succesfully detected the board type will already be displayed. You can disconnect and select another device if you need to detect another board.</span></p> +<p style="-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:10pt;"><br /></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt;">Important:</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt;">If you need to power your controller with an external power source if not using USB, please disconnect all components like ESC and servos connected to the output ports of the controller.</span></p></body></html> Qt::AutoText diff --git a/ground/openpilotgcs/src/plugins/setupwizard/pages/flashpage.ui b/ground/openpilotgcs/src/plugins/setupwizard/pages/flashpage.ui index 131d02540..75323607b 100644 --- a/ground/openpilotgcs/src/plugins/setupwizard/pages/flashpage.ui +++ b/ground/openpilotgcs/src/plugins/setupwizard/pages/flashpage.ui @@ -46,9 +46,9 @@ p, li { white-space: pre-wrap; } - 200 + 225 250 - 200 + 150 70 @@ -61,6 +61,11 @@ p, li { white-space: pre-wrap; } Save + + + :/setupwizard/resources/bttn-save-up.png + :/setupwizard/resources/bttn-save-down.png:/setupwizard/resources/bttn-save-up.png + 200 @@ -118,6 +123,8 @@ QProgressBar::chunk { - + + + diff --git a/ground/openpilotgcs/src/plugins/setupwizard/pages/levellingpage.cpp b/ground/openpilotgcs/src/plugins/setupwizard/pages/levellingpage.cpp index 1f96a6029..92726b1ae 100644 --- a/ground/openpilotgcs/src/plugins/setupwizard/pages/levellingpage.cpp +++ b/ground/openpilotgcs/src/plugins/setupwizard/pages/levellingpage.cpp @@ -58,6 +58,14 @@ bool LevellingPage::isComplete() const ui->levelButton->isEnabled(); } +void LevellingPage::enableButtons(bool enable) +{ + ui->levelButton->setEnabled(enable); + getWizard()->button(QWizard::NextButton)->setEnabled(enable); + getWizard()->button(QWizard::CancelButton)->setEnabled(enable); + getWizard()->button(QWizard::BackButton)->setEnabled(enable); +} + void LevellingPage::performLevelling() { if(!getWizard()->getConnectionManager()->isConnected()) { @@ -70,11 +78,7 @@ void LevellingPage::performLevelling() return; } - getWizard()->button(QWizard::BackButton)->setEnabled(false); - getWizard()->button(QWizard::NextButton)->setEnabled(false); - getWizard()->button(QWizard::CancelButton)->setEnabled(false); - - ui->levelButton->setEnabled(false); + enableButtons(false); if(!m_levellingUtil) { @@ -124,9 +128,6 @@ void LevellingPage::stopLevelling() disconnect(m_levellingUtil, SIGNAL(progress(long,long)), this, SLOT(levellingProgress(long,long))); disconnect(m_levellingUtil, SIGNAL(done(accelGyroBias)), this, SLOT(levellingDone(accelGyroBias))); disconnect(m_levellingUtil, SIGNAL(timeout(QString)), this, SLOT(levellingTimeout(QString))); - getWizard()->button(QWizard::BackButton)->setEnabled(true); - getWizard()->button(QWizard::NextButton)->setEnabled(true); - getWizard()->button(QWizard::CancelButton)->setEnabled(true); - ui->levelButton->setEnabled(true); + enableButtons(true); } } diff --git a/ground/openpilotgcs/src/plugins/setupwizard/pages/levellingpage.h b/ground/openpilotgcs/src/plugins/setupwizard/pages/levellingpage.h index 447851739..06b18ed75 100644 --- a/ground/openpilotgcs/src/plugins/setupwizard/pages/levellingpage.h +++ b/ground/openpilotgcs/src/plugins/setupwizard/pages/levellingpage.h @@ -59,6 +59,7 @@ private: LevellingUtil *m_levellingUtil; void stopLevelling(); + void enableButtons(bool enable); }; #endif // LEVELLINGPAGE_H diff --git a/ground/openpilotgcs/src/plugins/setupwizard/pages/outputcalibrationpage.cpp b/ground/openpilotgcs/src/plugins/setupwizard/pages/outputcalibrationpage.cpp index c83b83822..2584cd9c6 100644 --- a/ground/openpilotgcs/src/plugins/setupwizard/pages/outputcalibrationpage.cpp +++ b/ground/openpilotgcs/src/plugins/setupwizard/pages/outputcalibrationpage.cpp @@ -27,6 +27,8 @@ #include "outputcalibrationpage.h" #include "ui_outputcalibrationpage.h" +#include "systemalarms.h" +#include "uavobjectmanager.h" OutputCalibrationPage::OutputCalibrationPage(SetupWizard *wizard, QWidget *parent) : AbstractWizardPage(wizard, parent), ui(new Ui::OutputCalibrationPage), m_vehicleBoundsItem(0), @@ -60,6 +62,7 @@ void OutputCalibrationPage::setupVehicle() m_vehicleHighlightElementIndexes.clear(); m_currentWizardIndex = 0; m_vehicleScene->clear(); + m_channelUpdateRates.clear(); quint16 escUpdateRate = getEscUpdateRate(); quint16 servoUpdateRate = getServoUpdateRate(); switch(getWizard()->getVehicleSubType()) @@ -69,6 +72,8 @@ void OutputCalibrationPage::setupVehicle() m_vehicleElementIds << "tri" << "tri-frame" << "tri-m1" << "tri-m2" << "tri-m3" << "tri-s1"; m_vehicleHighlightElementIndexes << 0 << 1 << 1 << 2 << 2 << 3 << 3 << 4 << 4; m_channelUpdateRates << escUpdateRate << escUpdateRate << escUpdateRate << servoUpdateRate; + m_actuatorSettings.channels[4].channelMin = 1500; + m_actuatorSettings.channels[4].channelMax = 1500; break; case SetupWizard::MULTI_ROTOR_QUAD_X: m_wizardIndexes << 0 << 1 << 2 << 1 << 2 << 1 << 2 << 1 << 2; @@ -91,8 +96,8 @@ void OutputCalibrationPage::setupVehicle() break; case SetupWizard::MULTI_ROTOR_HEXA_COAX_Y: m_wizardIndexes << 0 << 1 << 2 << 1 << 2 << 1 << 2 << 1 << 2 << 1 << 2 << 1 << 2; - m_vehicleElementIds << "hexa-y6" << "hexa-y6-frame" << "hexa-y6-m1" << "hexa-y6-m2" << "hexa-y6-m3" << "hexa-y6-m4" - << "hexa-y6-m5" << "hexa-y6-m6"; + m_vehicleElementIds << "hexa-y6" << "hexa-y6-frame" << "hexa-y6-m2" << "hexa-y6-m1" << "hexa-y6-m4" << "hexa-y6-m3" + << "hexa-y6-m6" << "hexa-y6-m5"; m_vehicleHighlightElementIndexes << 0 << 1 << 1 << 2 << 2 << 3 << 3 << 4 << 4 << 5 << 5 << 6 << 6; m_channelUpdateRates << escUpdateRate << escUpdateRate << escUpdateRate << escUpdateRate << escUpdateRate << escUpdateRate; break; @@ -107,6 +112,9 @@ void OutputCalibrationPage::setupVehicle() break; } + VehicleConfigurationHelper helper(getWizard()); + helper.setupVehicle(false); + if(m_calibrationUtil) { delete m_calibrationUtil; m_calibrationUtil = 0; @@ -136,6 +144,7 @@ void OutputCalibrationPage::setupVehicleItems() item->setElementId(m_vehicleElementIds[i]); item->setZValue(i); item->setOpacity(1.0); + QRectF itemBounds = m_vehicleRenderer->boundsOnElement(m_vehicleElementIds[i]); item->setPos(itemBounds.x() - parentBounds.x(), itemBounds.y() - parentBounds.y()); @@ -234,27 +243,57 @@ void OutputCalibrationPage::on_motorNeutralButton_toggled(bool checked) { ui->motorNeutralButton->setText(checked ? tr("Stop") : tr("Start")); quint16 channel = getCurrentChannel(); - onStartButtonToggle(checked, channel, m_actuatorSettings.channels[channel].channelNeutral, 1000,ui->motorNeutralSlider); + onStartButtonToggle(ui->motorNeutralButton, channel, m_actuatorSettings.channels[channel].channelNeutral, 1000, ui->motorNeutralSlider); } -void OutputCalibrationPage::onStartButtonToggle(bool checked, quint16 channel, quint16 &value, quint16 safeValue, QSlider *slider) { - if(checked) { - enableButtons(false); - m_calibrationUtil->startChannelOutput(channel, safeValue); - slider->setValue(value); - m_calibrationUtil->setChannelOutputValue(slider->value()); +void OutputCalibrationPage::onStartButtonToggle(QAbstractButton *button, quint16 channel, quint16 value, quint16 safeValue, QSlider *slider) { + if(button->isChecked()) { + if(checkAlarms()) { + enableButtons(false); + m_calibrationUtil->startChannelOutput(channel, safeValue); + slider->setValue(value); + //m_calibrationUtil->setChannelOutputValue(value); + } + else { + button->setChecked(false); + } } else { - value = slider->value(); m_calibrationUtil->stopChannelOutput(); enableButtons(true); } } +bool OutputCalibrationPage::checkAlarms() +{ + ExtensionSystem::PluginManager *pm = ExtensionSystem::PluginManager::instance(); + UAVObjectManager *uavObjectManager = pm->getObject(); + Q_ASSERT(uavObjectManager); + SystemAlarms * systemAlarmsObj = SystemAlarms::GetInstance(uavObjectManager); + SystemAlarms::DataFields systemAlarms = systemAlarmsObj->getData(); + + if(systemAlarms.Alarm[SystemAlarms::ALARM_ACTUATOR] != SystemAlarms::ALARM_OK) { + QMessageBox mbox; + mbox.setText(QString(tr("The actuator module is in an error state.\n\n" + "This error can be caused by not having the board correctly connected or\n" + "if the board is not sufficiently powered by an external power source like\n" + "a battery. To use only USB as power source is not enough when the USB can't\n" + "power external components like ESCs and servos.\n\n" + "Please fix the error before continuing calibration."))); + mbox.setStandardButtons(QMessageBox::Ok); + mbox.setIcon(QMessageBox::Critical); + mbox.exec(); + return false; + } + return true; +} + void OutputCalibrationPage::on_motorNeutralSlider_valueChanged(int value) { if(ui->motorNeutralButton->isChecked()) { - m_calibrationUtil->setChannelOutputValue(ui->motorNeutralSlider->value()); + quint16 value = ui->motorNeutralSlider->value(); + m_calibrationUtil->setChannelOutputValue(value); + m_actuatorSettings.channels[getCurrentChannel()].channelNeutral = value; } } @@ -262,42 +301,73 @@ void OutputCalibrationPage::on_motorMaxButton_toggled(bool checked) { ui->motorNeutralButton->setText(checked ? tr("Stop") : tr("Start")); quint16 channel = getCurrentChannel(); - onStartButtonToggle(checked, channel, m_actuatorSettings.channels[channel].channelMax, 1000, ui->motorMaxSlider); + onStartButtonToggle(ui->motorMaxButton, channel, m_actuatorSettings.channels[channel].channelMax, 1000, ui->motorMaxSlider); } void OutputCalibrationPage::on_motorMaxSlider_valueChanged(int position) { if(ui->motorMaxButton->isChecked()) { - m_calibrationUtil->setChannelOutputValue(ui->motorMaxSlider->value()); + quint16 value = ui->motorMaxSlider->value(); + m_calibrationUtil->setChannelOutputValue(value); + m_actuatorSettings.channels[getCurrentChannel()].channelMax = value; } } void OutputCalibrationPage::on_servoCenterButton_toggled(bool checked) { - ui->motorNeutralButton->setText(checked ? tr("Stop") : tr("Start")); + ui->servoCenterButton->setText(checked ? tr("Stop") : tr("Start")); quint16 channel = getCurrentChannel(); m_actuatorSettings.channels[channel].channelNeutral = 1500; - onStartButtonToggle(checked, channel, m_actuatorSettings.channels[channel].channelNeutral, 1500, ui->servoCenterSlider); + onStartButtonToggle(ui->servoCenterButton, channel, m_actuatorSettings.channels[channel].channelNeutral, 1500, ui->servoCenterSlider); } void OutputCalibrationPage::on_servoCenterSlider_valueChanged(int position) { if(ui->servoCenterButton->isChecked()) { - m_calibrationUtil->setChannelOutputValue(ui->servoCenterSlider->value()); + quint16 value = ui->servoCenterSlider->value(); + m_calibrationUtil->setChannelOutputValue(value); + m_actuatorSettings.channels[getCurrentChannel()].channelNeutral = value; } } void OutputCalibrationPage::on_servoAngleButton_toggled(bool checked) { - + ui->servoAngleButton->setText(checked ? tr("Stop") : tr("Start")); + quint16 channel = getCurrentChannel(); + ui->servoMinAngleSlider->setValue(m_actuatorSettings.channels[channel].channelMax); + onStartButtonToggle(ui->servoAngleButton, channel, m_actuatorSettings.channels[channel].channelMin, 1500, ui->servoMinAngleSlider); } void OutputCalibrationPage::on_servoMaxAngleSlider_valueChanged(int position) { - + if(ui->servoAngleButton->isChecked()) { + quint16 value = ui->servoMaxAngleSlider->value(); + m_calibrationUtil->setChannelOutputValue(value); + m_actuatorSettings.channels[getCurrentChannel()].channelMax = value; + } } void OutputCalibrationPage::on_servoMinAngleSlider_valueChanged(int position) { - + if(ui->servoAngleButton->isChecked()) { + quint16 value = ui->servoMinAngleSlider->value(); + m_calibrationUtil->setChannelOutputValue(value); + m_actuatorSettings.channels[getCurrentChannel()].channelMin = value; + } +} + +void OutputCalibrationPage::on_servoMaxAngleSliderRB_toggled(bool checked) +{ + if(ui->servoAngleButton->isChecked() && ui->servoMaxAngleSliderRB->isChecked()) + { + m_calibrationUtil->setChannelOutputValue(ui->servoMaxAngleSlider->value()); + } +} + +void OutputCalibrationPage::on_servoMinAngleSliderRB_toggled(bool checked) +{ + if(ui->servoAngleButton->isChecked() && ui->servoMinAngleSliderRB->isChecked()) + { + m_calibrationUtil->setChannelOutputValue(ui->servoMinAngleSlider->value()); + } } diff --git a/ground/openpilotgcs/src/plugins/setupwizard/pages/outputcalibrationpage.h b/ground/openpilotgcs/src/plugins/setupwizard/pages/outputcalibrationpage.h index 855c66b1c..65cddb977 100644 --- a/ground/openpilotgcs/src/plugins/setupwizard/pages/outputcalibrationpage.h +++ b/ground/openpilotgcs/src/plugins/setupwizard/pages/outputcalibrationpage.h @@ -67,6 +67,10 @@ private slots: void on_servoMaxAngleSlider_valueChanged(int position); void on_servoMinAngleSlider_valueChanged(int position); + void on_servoMaxAngleSliderRB_toggled(bool checked); + + void on_servoMinAngleSliderRB_toggled(bool checked); + private: void setupVehicle(); void startWizard(); @@ -74,7 +78,8 @@ private: void setupVehicleHighlightedPart(); void setWizardPage(); void enableButtons(bool enable); - void onStartButtonToggle(bool checked, quint16 channel, quint16 &value, quint16 safeValue, QSlider *slider); + void onStartButtonToggle(QAbstractButton *button, quint16 channel, quint16 value, quint16 safeValue, QSlider *slider); + bool checkAlarms(); quint16 getCurrentChannel(); quint16 getEscUpdateRate(){ return getWizard()->getESCType() == VehicleConfigurationSource::ESC_RAPID ? diff --git a/ground/openpilotgcs/src/plugins/setupwizard/pages/outputcalibrationpage.ui b/ground/openpilotgcs/src/plugins/setupwizard/pages/outputcalibrationpage.ui index 74448ab07..f4f6e9e83 100644 --- a/ground/openpilotgcs/src/plugins/setupwizard/pages/outputcalibrationpage.ui +++ b/ground/openpilotgcs/src/plugins/setupwizard/pages/outputcalibrationpage.ui @@ -36,7 +36,7 @@ - 0 + 1 @@ -49,7 +49,7 @@ - <html><head/><body><p><span style=" font-size:10pt;">It is now time to calibrate the output levels for the signal controlling your vehichle. </span></p><p><span style=" font-size:10pt;">Depending on what vehichle you have selected, both motors controlled by ESC and servos controlled directly by the OpenPilot controller may have to be calibrated. <br/>The following steps will guide you safely through this process.<br/></span></p><p align="center"><span style=" font-size:14pt; font-weight:600; color:#ff0000;">VERY IMPORTANT!</span></p><p align="center"><br/><span style=" font-size:12pt; font-weight:600; color:#ff0000;">REMOVE ALL PROPELLERS FROM THE VEHICHLE BEFORE PROCEEDING!</span></p></body></html> + <html><head/><body><p><span style=" font-size:10pt;">It is now time to calibrate the output levels for the signals controlling your vehichle. </span></p><p align="center"><span style=" font-size:10pt; font-weight:600; color:#ff0000;">VERY IMPORTANT!</span><span style=" font-size:10pt;"><br/></span><span style=" font-size:10pt; font-weight:600; color:#ff0000;">REMOVE ALL PROPELLERS FROM THE VEHICHLE BEFORE PROCEEDING!</span></p><p><span style=" font-size:10pt; color:#000000;">Connect all components according to the illustration on the previous page and provide power using an external power supply like a battery to continue.</span></p><p><span style=" font-size:10pt;">Depending on what vehichle you have selected, both motors controlled by ESC and servos controlled directly by the OpenPilot controller may have to be calibrated. <br/>The following steps will guide you safely through this process.</span></p></body></html> Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop diff --git a/ground/openpilotgcs/src/plugins/setupwizard/pages/summarypage.ui b/ground/openpilotgcs/src/plugins/setupwizard/pages/summarypage.ui index 47cc2dbeb..9c054dcd1 100644 --- a/ground/openpilotgcs/src/plugins/setupwizard/pages/summarypage.ui +++ b/ground/openpilotgcs/src/plugins/setupwizard/pages/summarypage.ui @@ -43,7 +43,7 @@ p, li { white-space: pre-wrap; } true - + 460 @@ -55,10 +55,22 @@ p, li { white-space: pre-wrap; } Show connection diagram for configuration + + QToolButton { border: none } + - Hardware -Configuration -Illustration + + + + + :/setupwizard/resources/bttn-illustration-up.png + :/setupwizard/resources/bttn-illustration-down.png:/setupwizard/resources/bttn-illustration-up.png + + + + 100 + 100 + false @@ -69,8 +81,8 @@ Illustration true - - false + + Qt::ToolButtonIconOnly @@ -98,6 +110,8 @@ Illustration - + + + diff --git a/ground/openpilotgcs/src/plugins/setupwizard/pages/vehiclepage.ui b/ground/openpilotgcs/src/plugins/setupwizard/pages/vehiclepage.ui index 864e62194..a7b612f4b 100644 --- a/ground/openpilotgcs/src/plugins/setupwizard/pages/vehiclepage.ui +++ b/ground/openpilotgcs/src/plugins/setupwizard/pages/vehiclepage.ui @@ -41,6 +41,9 @@ p, li { white-space: pre-wrap; } + + false + 430 @@ -141,6 +144,9 @@ p, li { white-space: pre-wrap; } + + false + 190 @@ -191,6 +197,9 @@ p, li { white-space: pre-wrap; } + + false + 310 diff --git a/ground/openpilotgcs/src/plugins/setupwizard/resources/bttn-illustration-down.png b/ground/openpilotgcs/src/plugins/setupwizard/resources/bttn-illustration-down.png new file mode 100644 index 0000000000000000000000000000000000000000..a4402d5b029d27f465bd03949de874d7dadc0b89 GIT binary patch literal 6683 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 w@?gks7^;zO1IptV82|tP literal 0 HcmV?d00001 diff --git a/ground/openpilotgcs/src/plugins/setupwizard/resources/bttn-illustration-up.png b/ground/openpilotgcs/src/plugins/setupwizard/resources/bttn-illustration-up.png new file mode 100644 index 0000000000000000000000000000000000000000..5013d30b2a74b35f9eb54961ae0c5133c46a67d1 GIT binary patch literal 8406 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 \ No newline at end of file + id="g10143" + transform="matrix(1,0,0,-1,0,2688.54)" + style="display:inline" /> \ No newline at end of file diff --git a/ground/openpilotgcs/src/plugins/setupwizard/vehicleconfigurationhelper.cpp b/ground/openpilotgcs/src/plugins/setupwizard/vehicleconfigurationhelper.cpp index 024960bb7..875278016 100644 --- a/ground/openpilotgcs/src/plugins/setupwizard/vehicleconfigurationhelper.cpp +++ b/ground/openpilotgcs/src/plugins/setupwizard/vehicleconfigurationhelper.cpp @@ -49,15 +49,17 @@ VehicleConfigurationHelper::VehicleConfigurationHelper(VehicleConfigurationSourc Q_ASSERT(m_uavoManager); } -bool VehicleConfigurationHelper::setupVehicle() +bool VehicleConfigurationHelper::setupVehicle(bool save) { m_progress = 0; - clearModifiedObjects(); - resetVehicleConfig(); - resetGUIData(); - if(!saveChangesToController()) - { - return false; + if(save) { + clearModifiedObjects(); + resetVehicleConfig(); + resetGUIData(); + if(!saveChangesToController()) + { + return false; + } } applyHardwareConfiguration(); @@ -67,14 +69,17 @@ bool VehicleConfigurationHelper::setupVehicle() applyLevellingConfiguration(); applyStabilizationConfiguration(); - bool result = saveChangesToController(); - if(result) { - emit saveProgress(PROGRESS_STEPS, ++m_progress, tr("Done!")); + if(save) { + bool result = saveChangesToController(); + if(result) { + emit saveProgress(PROGRESS_STEPS, ++m_progress, tr("Done!")); + } + else { + emit saveProgress(PROGRESS_STEPS, ++m_progress, tr("Failed!")); + } + return result; } - else { - emit saveProgress(PROGRESS_STEPS, ++m_progress, tr("Failed!")); - } - return result; + return true; } void VehicleConfigurationHelper::addModifiedObject(UAVDataObject *object, QString description) diff --git a/ground/openpilotgcs/src/plugins/setupwizard/vehicleconfigurationhelper.h b/ground/openpilotgcs/src/plugins/setupwizard/vehicleconfigurationhelper.h index d4dde1ccb..f3065ed42 100644 --- a/ground/openpilotgcs/src/plugins/setupwizard/vehicleconfigurationhelper.h +++ b/ground/openpilotgcs/src/plugins/setupwizard/vehicleconfigurationhelper.h @@ -60,7 +60,7 @@ class VehicleConfigurationHelper : public QObject public: VehicleConfigurationHelper(VehicleConfigurationSource* configSource); - bool setupVehicle(); + bool setupVehicle(bool save = true); static const qint16 LEGACY_ESC_FREQUENCE; static const qint16 RAPID_ESC_FREQUENCE; diff --git a/ground/openpilotgcs/src/plugins/setupwizard/wizardResources.qrc b/ground/openpilotgcs/src/plugins/setupwizard/wizardResources.qrc index fef744911..342af58e5 100644 --- a/ground/openpilotgcs/src/plugins/setupwizard/wizardResources.qrc +++ b/ground/openpilotgcs/src/plugins/setupwizard/wizardResources.qrc @@ -30,5 +30,9 @@ resources/bttn-turbo-down.png resources/bttn-turbo-up.png resources/multirotor-shapes.svg + resources/bttn-illustration-down.png + resources/bttn-illustration-up.png + resources/bttn-save-down.png + resources/bttn-save-up.png From d337fcf1d8663475e54fbd2681e80740e917cc28 Mon Sep 17 00:00:00 2001 From: Fredrik Arvidsson Date: Sun, 9 Sep 2012 23:44:42 +0200 Subject: [PATCH 026/105] OP-39 Finished up motor/servo calibration, actuator settings. Bug fixes after initial testing end2end testing. I am making a note here: First successful 1-2-Fly! session ever! --- .../setupwizard/outputcalibrationutil.cpp | 40 --- .../setupwizard/outputcalibrationutil.h | 3 - .../setupwizard/pages/levellingpage.cpp | 1 + .../pages/outputcalibrationpage.cpp | 147 ++++----- .../setupwizard/pages/outputcalibrationpage.h | 18 +- .../pages/outputcalibrationpage.ui | 306 +++++++++--------- .../src/plugins/setupwizard/setupwizard.cpp | 5 + .../src/plugins/setupwizard/setupwizard.h | 6 +- .../vehicleconfigurationhelper.cpp | 97 +++--- .../setupwizard/vehicleconfigurationhelper.h | 10 +- .../setupwizard/vehicleconfigurationsource.h | 5 +- 11 files changed, 299 insertions(+), 339 deletions(-) diff --git a/ground/openpilotgcs/src/plugins/setupwizard/outputcalibrationutil.cpp b/ground/openpilotgcs/src/plugins/setupwizard/outputcalibrationutil.cpp index ad7e68184..5a52dab65 100644 --- a/ground/openpilotgcs/src/plugins/setupwizard/outputcalibrationutil.cpp +++ b/ground/openpilotgcs/src/plugins/setupwizard/outputcalibrationutil.cpp @@ -31,8 +31,6 @@ #include "vehicleconfigurationhelper.h" #include "manualcontrolsettings.h" -const quint16 OutputCalibrationUtil::UPDATE_CHANNEL_MAPPING[10] = {0, 0, 0, 1, 2, 3, 2, 2, 3, 3}; - OutputCalibrationUtil::OutputCalibrationUtil(QObject *parent) : QObject(parent), m_outputChannel(-1), m_safeValue(1000) { @@ -46,44 +44,6 @@ OutputCalibrationUtil::~OutputCalibrationUtil() stopChannelOutput(); } -void OutputCalibrationUtil::setupOutputRates(const QList &outputRates) -{ - //Set actuator settings for channels - ActuatorSettings *actuatorSettings = ActuatorSettings::GetInstance(m_uavObjectManager); - Q_ASSERT(actuatorSettings); - ActuatorSettings::DataFields aData = actuatorSettings->getData(); - - for(int i = 0; i < outputRates.size(); i++) { - aData.ChannelType[i] = ActuatorSettings::CHANNELTYPE_PWM; - aData.ChannelAddr[i] = i; - aData.ChannelMin[i] = 1000; - aData.ChannelNeutral[i] = 1000; - aData.ChannelMax[i] = 2000; - aData.ChannelUpdateFreq[UPDATE_CHANNEL_MAPPING[i]] = outputRates[i]; - } - - actuatorSettings->setData(aData); - actuatorSettings->updated(); - - ManualControlSettings *manualControlSettings = ManualControlSettings::GetInstance(m_uavObjectManager); - Q_ASSERT(manualControlSettings); - ManualControlSettings::DataFields cData = manualControlSettings->getData(); - cData.ChannelGroups[ManualControlSettings::CHANNELGROUPS_THROTTLE] = ManualControlSettings::CHANNELGROUPS_PWM; - cData.ChannelGroups[ManualControlSettings::CHANNELGROUPS_ROLL] = ManualControlSettings::CHANNELGROUPS_PWM; - cData.ChannelGroups[ManualControlSettings::CHANNELGROUPS_YAW] = ManualControlSettings::CHANNELGROUPS_PWM; - cData.ChannelGroups[ManualControlSettings::CHANNELGROUPS_PITCH] = ManualControlSettings::CHANNELGROUPS_PWM; - cData.ChannelGroups[ManualControlSettings::CHANNELGROUPS_FLIGHTMODE] = ManualControlSettings::CHANNELGROUPS_PWM; - - cData.ChannelNumber[ManualControlSettings::CHANNELGROUPS_THROTTLE] = 1; - cData.ChannelNumber[ManualControlSettings::CHANNELGROUPS_ROLL] = 2; - cData.ChannelNumber[ManualControlSettings::CHANNELGROUPS_YAW] = 3; - cData.ChannelNumber[ManualControlSettings::CHANNELGROUPS_PITCH] = 4; - cData.ChannelNumber[ManualControlSettings::CHANNELGROUPS_FLIGHTMODE] = 5; - - manualControlSettings->setData(cData); - manualControlSettings->updated(); -} - void OutputCalibrationUtil::startChannelOutput(quint16 channel, quint16 safeValue) { if(m_outputChannel < 0 && channel >= 0 && channel < ActuatorCommand::CHANNEL_NUMELEM) diff --git a/ground/openpilotgcs/src/plugins/setupwizard/outputcalibrationutil.h b/ground/openpilotgcs/src/plugins/setupwizard/outputcalibrationutil.h index 38be02cb7..dc9fc7fc8 100644 --- a/ground/openpilotgcs/src/plugins/setupwizard/outputcalibrationutil.h +++ b/ground/openpilotgcs/src/plugins/setupwizard/outputcalibrationutil.h @@ -46,15 +46,12 @@ public: signals: public slots: - void setupOutputRates(const QList &outputRates); void startChannelOutput(quint16 channel, quint16 safeValue); void stopChannelOutput(); void setChannelOutputValue(quint16 value); private: - static const quint16 UPDATE_CHANNEL_MAPPING[10]; - actuatorSettings *m_actuatorSettings; qint16 m_outputChannel; quint16 m_safeValue; UAVObject::Metadata m_savedActuatorCommandMetadata; diff --git a/ground/openpilotgcs/src/plugins/setupwizard/pages/levellingpage.cpp b/ground/openpilotgcs/src/plugins/setupwizard/pages/levellingpage.cpp index 92726b1ae..1384865a6 100644 --- a/ground/openpilotgcs/src/plugins/setupwizard/pages/levellingpage.cpp +++ b/ground/openpilotgcs/src/plugins/setupwizard/pages/levellingpage.cpp @@ -64,6 +64,7 @@ void LevellingPage::enableButtons(bool enable) getWizard()->button(QWizard::NextButton)->setEnabled(enable); getWizard()->button(QWizard::CancelButton)->setEnabled(enable); getWizard()->button(QWizard::BackButton)->setEnabled(enable); + QApplication::processEvents(); } void LevellingPage::performLevelling() diff --git a/ground/openpilotgcs/src/plugins/setupwizard/pages/outputcalibrationpage.cpp b/ground/openpilotgcs/src/plugins/setupwizard/pages/outputcalibrationpage.cpp index 2584cd9c6..a6389cb84 100644 --- a/ground/openpilotgcs/src/plugins/setupwizard/pages/outputcalibrationpage.cpp +++ b/ground/openpilotgcs/src/plugins/setupwizard/pages/outputcalibrationpage.cpp @@ -57,57 +57,53 @@ OutputCalibrationPage::~OutputCalibrationPage() void OutputCalibrationPage::setupVehicle() { + m_actuatorSettings = getWizard()->getActuatorSettings(); m_wizardIndexes.clear(); m_vehicleElementIds.clear(); m_vehicleHighlightElementIndexes.clear(); + m_channelIndex.clear(); m_currentWizardIndex = 0; m_vehicleScene->clear(); - m_channelUpdateRates.clear(); - quint16 escUpdateRate = getEscUpdateRate(); - quint16 servoUpdateRate = getServoUpdateRate(); switch(getWizard()->getVehicleSubType()) { case SetupWizard::MULTI_ROTOR_TRI_Y: - m_wizardIndexes << 0 << 1 << 2 << 1 << 2 << 1 << 2 << 3 << 4; + m_wizardIndexes << 0 << 1 << 2 << 1 << 2 << 1 << 2 << 3 << 4 << 5; m_vehicleElementIds << "tri" << "tri-frame" << "tri-m1" << "tri-m2" << "tri-m3" << "tri-s1"; - m_vehicleHighlightElementIndexes << 0 << 1 << 1 << 2 << 2 << 3 << 3 << 4 << 4; - m_channelUpdateRates << escUpdateRate << escUpdateRate << escUpdateRate << servoUpdateRate; - m_actuatorSettings.channels[4].channelMin = 1500; - m_actuatorSettings.channels[4].channelMax = 1500; + m_vehicleHighlightElementIndexes << 0 << 1 << 1 << 2 << 2 << 3 << 3 << 4 << 4 << 4; + m_channelIndex << 0 << 0 << 0 << 1 << 1 << 2 << 2 << 3 << 3 << 3; + m_actuatorSettings[4].channelMin = 1500; + m_actuatorSettings[4].channelMax = 1500; break; case SetupWizard::MULTI_ROTOR_QUAD_X: m_wizardIndexes << 0 << 1 << 2 << 1 << 2 << 1 << 2 << 1 << 2; m_vehicleElementIds << "quad-x" << "quad-x-frame" << "quad-x-m1" << "quad-x-m2" << "quad-x-m3" << "quad-x-m4"; m_vehicleHighlightElementIndexes << 0 << 1 << 1 << 2 << 2 << 3 << 3 << 4 << 4; - m_channelUpdateRates << escUpdateRate << escUpdateRate << escUpdateRate << escUpdateRate; + m_channelIndex << 0 << 0 << 0 << 1 << 1 << 2 << 2 << 3 << 3; break; case SetupWizard::MULTI_ROTOR_QUAD_PLUS: m_wizardIndexes << 0 << 1 << 2 << 1 << 2 << 1 << 2 << 1 << 2; m_vehicleElementIds << "quad-p" << "quad-p-frame" << "quad-p-m1" << "quad-p-m2" << "quad-p-m3" << "quad-p-m4"; m_vehicleHighlightElementIndexes << 0 << 1 << 1 << 2 << 2 << 3 << 3 << 4 << 4; - m_channelUpdateRates << escUpdateRate << escUpdateRate << escUpdateRate << escUpdateRate; + m_channelIndex << 0 << 0 << 0 << 1 << 1 << 2 << 2 << 3 << 3; break; case SetupWizard::MULTI_ROTOR_HEXA: m_wizardIndexes << 0 << 1 << 2 << 1 << 2 << 1 << 2 << 1 << 2 << 1 << 2 << 1 << 2; - m_vehicleElementIds << "hexa" << "hexa-frame" << "hexa-m1" << "hexa-m2" << "hexa-m3" << "hexa-m4" - << "hexa-m5" << "hexa-m6"; + m_vehicleElementIds << "hexa" << "hexa-frame" << "hexa-m1" << "hexa-m2" << "hexa-m3" << "hexa-m4" << "hexa-m5" << "hexa-m6"; m_vehicleHighlightElementIndexes << 0 << 1 << 1 << 2 << 2 << 3 << 3 << 4 << 4 << 5 << 5 << 6 << 6; - m_channelUpdateRates << escUpdateRate << escUpdateRate << escUpdateRate << escUpdateRate << escUpdateRate << escUpdateRate; + m_channelIndex << 0 << 0 << 0 << 1 << 1 << 2 << 2 << 3 << 3 << 4 << 4 << 5 << 5; break; case SetupWizard::MULTI_ROTOR_HEXA_COAX_Y: m_wizardIndexes << 0 << 1 << 2 << 1 << 2 << 1 << 2 << 1 << 2 << 1 << 2 << 1 << 2; - m_vehicleElementIds << "hexa-y6" << "hexa-y6-frame" << "hexa-y6-m2" << "hexa-y6-m1" << "hexa-y6-m4" << "hexa-y6-m3" - << "hexa-y6-m6" << "hexa-y6-m5"; - m_vehicleHighlightElementIndexes << 0 << 1 << 1 << 2 << 2 << 3 << 3 << 4 << 4 << 5 << 5 << 6 << 6; - m_channelUpdateRates << escUpdateRate << escUpdateRate << escUpdateRate << escUpdateRate << escUpdateRate << escUpdateRate; + m_vehicleElementIds << "hexa-y6" << "hexa-y6-frame" << "hexa-y6-m2" << "hexa-y6-m1" << "hexa-y6-m4" << "hexa-y6-m3" << "hexa-y6-m6" << "hexa-y6-m5"; + m_vehicleHighlightElementIndexes << 0 << 2 << 2 << 1 << 1 << 4 << 4 << 3 << 3 << 6 << 6 << 5 << 5; + m_channelIndex << 0 << 0 << 0 << 1 << 1 << 2 << 2 << 3 << 3 << 4 << 4 << 5 << 5; break; case SetupWizard::MULTI_ROTOR_HEXA_H: m_wizardIndexes << 0 << 1 << 2 << 1 << 2 << 1 << 2 << 1 << 2 << 1 << 2 << 1 << 2; - m_vehicleElementIds << "hexa-h" << "hexa-h-frame" << "hexa-h-m1" << "hexa-h-m2" << "hexa-h-m3" << "hexa-h-m4" - << "hexa-h-m5" << "hexa-h-m6"; + m_vehicleElementIds << "hexa-h" << "hexa-h-frame" << "hexa-h-m1" << "hexa-h-m2" << "hexa-h-m3" << "hexa-h-m4" << "hexa-h-m5" << "hexa-h-m6"; m_vehicleHighlightElementIndexes << 0 << 1 << 1 << 2 << 2 << 3 << 3 << 4 << 4 << 5 << 5 << 6 << 6; - m_channelUpdateRates << escUpdateRate << escUpdateRate << escUpdateRate << escUpdateRate << escUpdateRate << escUpdateRate; - break; + m_channelIndex << 0 << 0 << 0 << 1 << 1 << 2 << 2 << 3 << 3 << 4 << 4 << 5 << 5; + break; default: break; } @@ -120,7 +116,6 @@ void OutputCalibrationPage::setupVehicle() m_calibrationUtil = 0; } m_calibrationUtil = new OutputCalibrationUtil(); - m_calibrationUtil->setupOutputRates(m_channelUpdateRates); setupVehicleItems(); } @@ -172,28 +167,38 @@ void OutputCalibrationPage::setupVehicleHighlightedPart() void OutputCalibrationPage::setWizardPage() { + qDebug() << "Wizard index: " << m_currentWizardIndex; m_calibrationUtil->stopChannelOutput(); ui->backPageButton->setEnabled(m_currentWizardIndex > 0); ui->nextPageButton->setEnabled(m_currentWizardIndex < m_wizardIndexes.size() - 1); - int currentPageIndex = m_wizardIndexes.at(m_currentWizardIndex); + + QApplication::processEvents(); + + int currentPageIndex = m_wizardIndexes[m_currentWizardIndex]; + qDebug() << "Current page: " << currentPageIndex; ui->calibrationStack->setCurrentIndex(currentPageIndex); + int currentChannel = getCurrentChannel(); + qDebug() << "Current channel: " << currentChannel; if(currentChannel >= 0) { if(currentPageIndex == 1) { - ui->motorNeutralSlider->setValue(m_actuatorSettings.channels[currentChannel].channelNeutral); + ui->motorNeutralSlider->setValue(m_actuatorSettings[currentChannel].channelNeutral); } else if (currentPageIndex == 2) { - ui->motorMaxSlider->setValue(m_actuatorSettings.channels[currentChannel].channelMax); + ui->motorMaxSlider->setValue(m_actuatorSettings[currentChannel].channelMax); } else if(currentPageIndex == 3) { - ui->servoCenterSlider->setValue(m_actuatorSettings.channels[currentChannel].channelNeutral); + ui->servoCenterSlider->setValue(m_actuatorSettings[currentChannel].channelNeutral); } else if(currentPageIndex == 4) { - ui->servoMinAngleSlider->setValue(m_actuatorSettings.channels[currentChannel].channelMin); - ui->servoMaxAngleSlider->setValue(m_actuatorSettings.channels[currentChannel].channelMax); + ui->servoMinAngleSlider->setValue(m_actuatorSettings[currentChannel].channelMin); + } + else if(currentPageIndex == 5) { + ui->servoMaxAngleSlider->setValue(m_actuatorSettings[currentChannel].channelMax); } } setupVehicleHighlightedPart(); + QApplication::processEvents(); } void OutputCalibrationPage::initializePage() @@ -204,6 +209,12 @@ void OutputCalibrationPage::initializePage() } } +bool OutputCalibrationPage::validatePage() +{ + getWizard()->setActuatorSettings(m_actuatorSettings); + return true; +} + void OutputCalibrationPage::showEvent(QShowEvent *event) { Q_UNUSED(event); @@ -215,19 +226,23 @@ void OutputCalibrationPage::showEvent(QShowEvent *event) void OutputCalibrationPage::on_nextPageButton_clicked() { - m_currentWizardIndex++; - setWizardPage(); + if(m_currentWizardIndex < m_wizardIndexes.size() - 1) { + m_currentWizardIndex++; + setWizardPage(); + } } void OutputCalibrationPage::on_backPageButton_clicked() { - m_currentWizardIndex--; - setWizardPage(); + if(m_currentWizardIndex > 0) { + m_currentWizardIndex--; + setWizardPage(); + } } quint16 OutputCalibrationPage::getCurrentChannel() { - return m_vehicleHighlightElementIndexes[m_currentWizardIndex] - 1; + return m_channelIndex[m_currentWizardIndex]; } void OutputCalibrationPage::enableButtons(bool enable) @@ -237,13 +252,14 @@ void OutputCalibrationPage::enableButtons(bool enable) getWizard()->button(QWizard::NextButton)->setEnabled(enable); getWizard()->button(QWizard::CancelButton)->setEnabled(enable); getWizard()->button(QWizard::BackButton)->setEnabled(enable); + QApplication::processEvents(); } void OutputCalibrationPage::on_motorNeutralButton_toggled(bool checked) { ui->motorNeutralButton->setText(checked ? tr("Stop") : tr("Start")); quint16 channel = getCurrentChannel(); - onStartButtonToggle(ui->motorNeutralButton, channel, m_actuatorSettings.channels[channel].channelNeutral, 1000, ui->motorNeutralSlider); + onStartButtonToggle(ui->motorNeutralButton, channel, m_actuatorSettings[channel].channelNeutral, 1000, ui->motorNeutralSlider); } void OutputCalibrationPage::onStartButtonToggle(QAbstractButton *button, quint16 channel, quint16 value, quint16 safeValue, QSlider *slider) { @@ -252,7 +268,7 @@ void OutputCalibrationPage::onStartButtonToggle(QAbstractButton *button, quint16 enableButtons(false); m_calibrationUtil->startChannelOutput(channel, safeValue); slider->setValue(value); - //m_calibrationUtil->setChannelOutputValue(value); + m_calibrationUtil->setChannelOutputValue(value); } else { button->setChecked(false); @@ -269,10 +285,11 @@ bool OutputCalibrationPage::checkAlarms() ExtensionSystem::PluginManager *pm = ExtensionSystem::PluginManager::instance(); UAVObjectManager *uavObjectManager = pm->getObject(); Q_ASSERT(uavObjectManager); - SystemAlarms * systemAlarmsObj = SystemAlarms::GetInstance(uavObjectManager); - SystemAlarms::DataFields systemAlarms = systemAlarmsObj->getData(); + SystemAlarms * systemAlarms = SystemAlarms::GetInstance(uavObjectManager); + Q_ASSERT(systemAlarms); + SystemAlarms::DataFields data = systemAlarms->getData(); - if(systemAlarms.Alarm[SystemAlarms::ALARM_ACTUATOR] != SystemAlarms::ALARM_OK) { + if(data.Alarm[SystemAlarms::ALARM_ACTUATOR] != SystemAlarms::ALARM_OK) { QMessageBox mbox; mbox.setText(QString(tr("The actuator module is in an error state.\n\n" "This error can be caused by not having the board correctly connected or\n" @@ -293,7 +310,7 @@ void OutputCalibrationPage::on_motorNeutralSlider_valueChanged(int value) if(ui->motorNeutralButton->isChecked()) { quint16 value = ui->motorNeutralSlider->value(); m_calibrationUtil->setChannelOutputValue(value); - m_actuatorSettings.channels[getCurrentChannel()].channelNeutral = value; + m_actuatorSettings[getCurrentChannel()].channelNeutral = value; } } @@ -301,7 +318,7 @@ void OutputCalibrationPage::on_motorMaxButton_toggled(bool checked) { ui->motorNeutralButton->setText(checked ? tr("Stop") : tr("Start")); quint16 channel = getCurrentChannel(); - onStartButtonToggle(ui->motorMaxButton, channel, m_actuatorSettings.channels[channel].channelMax, 1000, ui->motorMaxSlider); + onStartButtonToggle(ui->motorMaxButton, channel, m_actuatorSettings[channel].channelMax, 1000, ui->motorMaxSlider); } void OutputCalibrationPage::on_motorMaxSlider_valueChanged(int position) @@ -309,7 +326,7 @@ void OutputCalibrationPage::on_motorMaxSlider_valueChanged(int position) if(ui->motorMaxButton->isChecked()) { quint16 value = ui->motorMaxSlider->value(); m_calibrationUtil->setChannelOutputValue(value); - m_actuatorSettings.channels[getCurrentChannel()].channelMax = value; + m_actuatorSettings[getCurrentChannel()].channelMax = value; } } @@ -317,8 +334,8 @@ void OutputCalibrationPage::on_servoCenterButton_toggled(bool checked) { ui->servoCenterButton->setText(checked ? tr("Stop") : tr("Start")); quint16 channel = getCurrentChannel(); - m_actuatorSettings.channels[channel].channelNeutral = 1500; - onStartButtonToggle(ui->servoCenterButton, channel, m_actuatorSettings.channels[channel].channelNeutral, 1500, ui->servoCenterSlider); + m_actuatorSettings[channel].channelNeutral = 1500; + onStartButtonToggle(ui->servoCenterButton, channel, m_actuatorSettings[channel].channelNeutral, 1500, ui->servoCenterSlider); } void OutputCalibrationPage::on_servoCenterSlider_valueChanged(int position) @@ -326,48 +343,34 @@ void OutputCalibrationPage::on_servoCenterSlider_valueChanged(int position) if(ui->servoCenterButton->isChecked()) { quint16 value = ui->servoCenterSlider->value(); m_calibrationUtil->setChannelOutputValue(value); - m_actuatorSettings.channels[getCurrentChannel()].channelNeutral = value; + m_actuatorSettings[getCurrentChannel()].channelNeutral = value; } } -void OutputCalibrationPage::on_servoAngleButton_toggled(bool checked) +void OutputCalibrationPage::on_servoMinAngleButton_toggled(bool checked) { - ui->servoAngleButton->setText(checked ? tr("Stop") : tr("Start")); + ui->servoMinAngleButton->setText(checked ? tr("Stop") : tr("Start")); quint16 channel = getCurrentChannel(); - ui->servoMinAngleSlider->setValue(m_actuatorSettings.channels[channel].channelMax); - onStartButtonToggle(ui->servoAngleButton, channel, m_actuatorSettings.channels[channel].channelMin, 1500, ui->servoMinAngleSlider); -} - -void OutputCalibrationPage::on_servoMaxAngleSlider_valueChanged(int position) -{ - if(ui->servoAngleButton->isChecked()) { - quint16 value = ui->servoMaxAngleSlider->value(); - m_calibrationUtil->setChannelOutputValue(value); - m_actuatorSettings.channels[getCurrentChannel()].channelMax = value; - } + onStartButtonToggle(ui->servoMinAngleButton, channel, m_actuatorSettings[channel].channelMin, 1500, ui->servoMinAngleSlider); } void OutputCalibrationPage::on_servoMinAngleSlider_valueChanged(int position) { - if(ui->servoAngleButton->isChecked()) { - quint16 value = ui->servoMinAngleSlider->value(); - m_calibrationUtil->setChannelOutputValue(value); - m_actuatorSettings.channels[getCurrentChannel()].channelMin = value; - } + quint16 value = ui->servoMinAngleSlider->value(); + m_calibrationUtil->setChannelOutputValue(value); + m_actuatorSettings[getCurrentChannel()].channelMin = value; } -void OutputCalibrationPage::on_servoMaxAngleSliderRB_toggled(bool checked) +void OutputCalibrationPage::on_servoMaxAngleButton_toggled(bool checked) { - if(ui->servoAngleButton->isChecked() && ui->servoMaxAngleSliderRB->isChecked()) - { - m_calibrationUtil->setChannelOutputValue(ui->servoMaxAngleSlider->value()); - } + ui->servoMaxAngleButton->setText(checked ? tr("Stop") : tr("Start")); + quint16 channel = getCurrentChannel(); + onStartButtonToggle(ui->servoMaxAngleButton, channel, m_actuatorSettings[channel].channelMax, 1500, ui->servoMaxAngleSlider); } -void OutputCalibrationPage::on_servoMinAngleSliderRB_toggled(bool checked) +void OutputCalibrationPage::on_servoMaxAngleSlider_valueChanged(int position) { - if(ui->servoAngleButton->isChecked() && ui->servoMinAngleSliderRB->isChecked()) - { - m_calibrationUtil->setChannelOutputValue(ui->servoMinAngleSlider->value()); - } + quint16 value = ui->servoMaxAngleSlider->value(); + m_calibrationUtil->setChannelOutputValue(value); + m_actuatorSettings[getCurrentChannel()].channelMax = value; } diff --git a/ground/openpilotgcs/src/plugins/setupwizard/pages/outputcalibrationpage.h b/ground/openpilotgcs/src/plugins/setupwizard/pages/outputcalibrationpage.h index 65cddb977..c67bff74b 100644 --- a/ground/openpilotgcs/src/plugins/setupwizard/pages/outputcalibrationpage.h +++ b/ground/openpilotgcs/src/plugins/setupwizard/pages/outputcalibrationpage.h @@ -46,6 +46,7 @@ public: explicit OutputCalibrationPage(SetupWizard *wizard, QWidget *parent = 0); ~OutputCalibrationPage(); void initializePage(); + bool validatePage(); protected: void showEvent(QShowEvent *event); @@ -63,13 +64,11 @@ private slots: void on_servoCenterButton_toggled(bool checked); void on_servoCenterSlider_valueChanged(int position); - void on_servoAngleButton_toggled(bool checked); - void on_servoMaxAngleSlider_valueChanged(int position); + void on_servoMinAngleButton_toggled(bool checked); void on_servoMinAngleSlider_valueChanged(int position); - void on_servoMaxAngleSliderRB_toggled(bool checked); - - void on_servoMinAngleSliderRB_toggled(bool checked); + void on_servoMaxAngleButton_toggled(bool checked); + void on_servoMaxAngleSlider_valueChanged(int position); private: void setupVehicle(); @@ -82,11 +81,6 @@ private: bool checkAlarms(); quint16 getCurrentChannel(); - quint16 getEscUpdateRate(){ return getWizard()->getESCType() == VehicleConfigurationSource::ESC_RAPID ? - VehicleConfigurationHelper::RAPID_ESC_FREQUENCE : VehicleConfigurationHelper::LEGACY_ESC_FREQUENCE; } - - quint16 getServoUpdateRate(){ return VehicleConfigurationHelper::LEGACY_ESC_FREQUENCE; } - Ui::OutputCalibrationPage *ui; QSvgRenderer *m_vehicleRenderer; QGraphicsScene *m_vehicleScene; @@ -97,10 +91,10 @@ private: QList m_vehicleElementIds; QList m_vehicleItems; QList m_vehicleHighlightElementIndexes; + QList m_channelIndex; QList m_wizardIndexes; - QList m_channelUpdateRates; - actuatorSettings m_actuatorSettings; + QList m_actuatorSettings; OutputCalibrationUtil *m_calibrationUtil; diff --git a/ground/openpilotgcs/src/plugins/setupwizard/pages/outputcalibrationpage.ui b/ground/openpilotgcs/src/plugins/setupwizard/pages/outputcalibrationpage.ui index f4f6e9e83..f3c0652e2 100644 --- a/ground/openpilotgcs/src/plugins/setupwizard/pages/outputcalibrationpage.ui +++ b/ground/openpilotgcs/src/plugins/setupwizard/pages/outputcalibrationpage.ui @@ -36,7 +36,7 @@ - 1 + 5 @@ -306,7 +306,7 @@ - + 90 @@ -335,7 +335,7 @@ - <html><head/><body><p>To save the servo and other hardware from damage we have to set the max and min angles for the servo. </p><p>To set the extreme angles for the servo, press the Start button below and select the top slider and slide it to the right until max angle is reached. Then select the lower slider and slide it left until the minimum angle is set.</p><p>When done press button again to stop.</p></body></html> + <html><head/><body><p>To save the servo and other hardware from damage we have to set the max and min angles for the servo. </p><p>To set the minimum angle for the servo, press the Start button below and select the top slider and slide it to the left until min angle is reached.</p><p>When done press button again to stop.</p></body></html> Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop @@ -344,133 +344,137 @@ true - + + + false + + + + 10 + 200 + 241 + 20 + + + + 1000 + + + 1500 + + + 10 + + + 20 + + + 1500 + + + true + + + Qt::Horizontal + + + false + + + false + + + QSlider::TicksBelow + + + 40 + + + + + + + + 90 + 240 + 75 + 23 + + + + Start + + + true + + + false + + + + + false + + + + 10 + 200 + 241 + 20 + + + + 1500 + + + 2000 + + + 10 + + + 20 + + + 1500 + + + true + + + Qt::Horizontal + + + false + + + false + + + QSlider::TicksBelow + + + 40 + + + 0 - 160 + 10 261 - 80 + 151 - - - - 10 - 40 - 16 - 17 - - - - - - - - - - 10 - 0 - 16 - 17 - - - - - - - true - - - - - - 39 - 0 - 211 - 20 - - - - 1500 - - - 2000 - - - 10 - - - 20 - - - 1500 - - - true - - - Qt::Horizontal - - - false - - - false - - - QSlider::TicksBelow - - - 40 - - - - - false - - - - 39 - 40 - 211 - 20 - - - - 1000 - - - 1500 - - - 10 - - - 20 - - - 1500 - - - true - - - Qt::Horizontal - - - false - - - false - - - QSlider::TicksBelow - - - 40 - - + + <html><head/><body><p>To set the maximum angle for the servo, press the Start button below and select the top slider and slide it to the right until max angle is reached.</p><p>When done press button again to stop.</p></body></html> + + + Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop + + + true + @@ -529,38 +533,6 @@ - - servoMaxAngleSliderRB - toggled(bool) - servoMaxAngleSlider - setEnabled(bool) - - - 37 - 208 - - - 164 - 209 - - - - - servoMinAngleSliderRB - toggled(bool) - servoMinAngleSlider - setEnabled(bool) - - - 37 - 248 - - - 164 - 249 - - - motorNeutralButton toggled(bool) @@ -610,9 +582,9 @@ - servoAngleButton + servoMaxAngleButton toggled(bool) - sliderWidget + servoMaxAngleSlider setEnabled(bool) @@ -621,7 +593,23 @@ 150 - 239 + 249 + + + + + servoMinAngleButton + toggled(bool) + servoMinAngleSlider + setEnabled(bool) + + + 147 + 291 + + + 150 + 249 diff --git a/ground/openpilotgcs/src/plugins/setupwizard/setupwizard.cpp b/ground/openpilotgcs/src/plugins/setupwizard/setupwizard.cpp index ff304322c..a74c026f2 100644 --- a/ground/openpilotgcs/src/plugins/setupwizard/setupwizard.cpp +++ b/ground/openpilotgcs/src/plugins/setupwizard/setupwizard.cpp @@ -43,6 +43,7 @@ #include "pages/notyetimplementedpage.h" #include "extensionsystem/pluginmanager.h" #include "vehicleconfigurationhelper.h" +#include "actuatorsettings.h" SetupWizard::SetupWizard(QWidget *parent) : QWizard(parent), VehicleConfigurationSource(), m_controllerType(CONTROLLER_UNKNOWN), @@ -52,6 +53,10 @@ SetupWizard::SetupWizard(QWidget *parent) : QWizard(parent), VehicleConfiguratio setWindowTitle(tr("OpenPilot Setup Wizard")); setOption(QWizard::IndependentPages, false); setFixedSize(640, 530); + for(int i = 0; i < ActuatorSettings::CHANNELMAX_NUMELEM; i++) + { + m_actuatorSettings << actuatorChannelSettings(); + } createPages(); } diff --git a/ground/openpilotgcs/src/plugins/setupwizard/setupwizard.h b/ground/openpilotgcs/src/plugins/setupwizard/setupwizard.h index 571beb6c6..ae57e613c 100644 --- a/ground/openpilotgcs/src/plugins/setupwizard/setupwizard.h +++ b/ground/openpilotgcs/src/plugins/setupwizard/setupwizard.h @@ -63,9 +63,9 @@ public: bool isLevellingPerformed() const { return m_levellingPerformed; } accelGyroBias getLevellingBias() const { return m_levellingBias; } - void setActuatorSettings(actuatorSettings neutralSettings) { m_actuatorNeutralConfig = neutralSettings; } + void setActuatorSettings(QList actuatorSettings) { m_actuatorSettings = actuatorSettings; } bool isMotorCalibrationPerformed() const { return m_motorCalibrationPerformed; } - actuatorSettings getActuatorSettings() const { return m_actuatorNeutralConfig; } + QList getActuatorSettings() const { return m_actuatorSettings; } QString getSummaryText(); @@ -93,7 +93,7 @@ private: accelGyroBias m_levellingBias; bool m_motorCalibrationPerformed; - actuatorSettings m_actuatorNeutralConfig; + QList m_actuatorSettings; Core::ConnectionManager *m_connectionManager; }; diff --git a/ground/openpilotgcs/src/plugins/setupwizard/vehicleconfigurationhelper.cpp b/ground/openpilotgcs/src/plugins/setupwizard/vehicleconfigurationhelper.cpp index 875278016..42b0de356 100644 --- a/ground/openpilotgcs/src/plugins/setupwizard/vehicleconfigurationhelper.cpp +++ b/ground/openpilotgcs/src/plugins/setupwizard/vehicleconfigurationhelper.cpp @@ -52,14 +52,12 @@ VehicleConfigurationHelper::VehicleConfigurationHelper(VehicleConfigurationSourc bool VehicleConfigurationHelper::setupVehicle(bool save) { m_progress = 0; - if(save) { - clearModifiedObjects(); - resetVehicleConfig(); - resetGUIData(); - if(!saveChangesToController()) - { - return false; - } + clearModifiedObjects(); + resetVehicleConfig(); + resetGUIData(); + if(!saveChangesToController(save)) + { + return false; } applyHardwareConfiguration(); @@ -68,18 +66,16 @@ bool VehicleConfigurationHelper::setupVehicle(bool save) applyFlighModeConfiguration(); applyLevellingConfiguration(); applyStabilizationConfiguration(); + applyManualControlDefaults(); - if(save) { - bool result = saveChangesToController(); - if(result) { - emit saveProgress(PROGRESS_STEPS, ++m_progress, tr("Done!")); - } - else { - emit saveProgress(PROGRESS_STEPS, ++m_progress, tr("Failed!")); - } - return result; + bool result = saveChangesToController(save); + if(result) { + emit saveProgress(PROGRESS_STEPS, ++m_progress, tr("Done!")); } - return true; + else { + emit saveProgress(PROGRESS_STEPS, ++m_progress, tr("Failed!")); + } + return result; } void VehicleConfigurationHelper::addModifiedObject(UAVDataObject *object, QString description) @@ -189,13 +185,13 @@ void VehicleConfigurationHelper::applyActuatorConfiguration() case VehicleConfigurationSource::VEHICLE_MULTI: { ActuatorSettings::DataFields data = actSettings->getData(); - actuatorSettings actuatorSettings = m_configSource->getActuatorSettings(); + QList actuatorSettings = m_configSource->getActuatorSettings(); for(quint16 i = 0; i < ActuatorSettings::CHANNELMAX_NUMELEM; i++) { data.ChannelType[i] = ActuatorSettings::CHANNELTYPE_PWM; data.ChannelAddr[i] = i; - data.ChannelMin[i] = actuatorSettings.channels[i].channelMin; - data.ChannelNeutral[i] = actuatorSettings.channels[i].channelNeutral; - data.ChannelMax[i] = actuatorSettings.channels[i].channelMax; + data.ChannelMin[i] = actuatorSettings[i].channelMin; + data.ChannelNeutral[i] = actuatorSettings[i].channelNeutral; + data.ChannelMax[i] = actuatorSettings[i].channelMax; } data.MotorsSpinWhileArmed = ActuatorSettings::MOTORSSPINWHILEARMED_FALSE; @@ -241,7 +237,7 @@ void VehicleConfigurationHelper::applyActuatorConfiguration() break; } actSettings->setData(data); - addModifiedObject(actSettings, tr("Writing output rate settings")); + addModifiedObject(actSettings, tr("Writing actuator settings")); break; } case VehicleConfigurationSource::VEHICLE_FIXEDWING: @@ -336,7 +332,7 @@ void VehicleConfigurationHelper::applyMixerConfiguration(mixerSettings mixer) } // Apply updates - //mSettings->setData(mSettings->getData()); + mSettings->setData(mSettings->getData()); addModifiedObject(mSettings, tr("Writing mixer settings")); } @@ -356,7 +352,28 @@ void VehicleConfigurationHelper::applyMultiGUISettings(SystemSettings::AirframeT addModifiedObject(sSettings, tr("Writing vehicle settings")); } -bool VehicleConfigurationHelper::saveChangesToController() +void VehicleConfigurationHelper::applyManualControlDefaults() +{ + ManualControlSettings *mcSettings = ManualControlSettings::GetInstance(m_uavoManager); + Q_ASSERT(mcSettings); + ManualControlSettings::DataFields cData = mcSettings->getData(); + cData.ChannelGroups[ManualControlSettings::CHANNELGROUPS_THROTTLE] = ManualControlSettings::CHANNELGROUPS_PWM; + cData.ChannelGroups[ManualControlSettings::CHANNELGROUPS_ROLL] = ManualControlSettings::CHANNELGROUPS_PWM; + cData.ChannelGroups[ManualControlSettings::CHANNELGROUPS_YAW] = ManualControlSettings::CHANNELGROUPS_PWM; + cData.ChannelGroups[ManualControlSettings::CHANNELGROUPS_PITCH] = ManualControlSettings::CHANNELGROUPS_PWM; + cData.ChannelGroups[ManualControlSettings::CHANNELGROUPS_FLIGHTMODE] = ManualControlSettings::CHANNELGROUPS_PWM; + + cData.ChannelNumber[ManualControlSettings::CHANNELGROUPS_THROTTLE] = 1; + cData.ChannelNumber[ManualControlSettings::CHANNELGROUPS_ROLL] = 2; + cData.ChannelNumber[ManualControlSettings::CHANNELGROUPS_YAW] = 3; + cData.ChannelNumber[ManualControlSettings::CHANNELGROUPS_PITCH] = 4; + cData.ChannelNumber[ManualControlSettings::CHANNELGROUPS_FLIGHTMODE] = 5; + + mcSettings->setData(cData); + addModifiedObject(mcSettings, tr("Writing manual control defaults")); +} + +bool VehicleConfigurationHelper::saveChangesToController(bool save) { qDebug() << "Saving modified objects to controller. " << m_modifiedObjects.count() << " objects in found."; const int OUTER_TIMEOUT = 3000 * 20; // 10 seconds timeout for saving all objects @@ -404,21 +421,23 @@ bool VehicleConfigurationHelper::saveChangesToController() disconnect(obj, SIGNAL(transactionCompleted(UAVObject* ,bool)), this, SLOT(uAVOTransactionCompleted(UAVObject*, bool))); if(m_transactionOK) { qDebug() << "Object " << obj->getName() << " was successfully updated."; - m_transactionOK = false; - m_currentTransactionObjectID = obj->getObjID(); - // Try to save until success or timeout - while(!m_transactionOK && !m_transactionTimeout) { - // Allow the transaction to take some time - innerTimeoutTimer.start(INNER_TIMEOUT); + if(save) { + m_transactionOK = false; + m_currentTransactionObjectID = obj->getObjID(); + // Try to save until success or timeout + while(!m_transactionOK && !m_transactionTimeout) { + // Allow the transaction to take some time + innerTimeoutTimer.start(INNER_TIMEOUT); - // Persist object in controller - utilMngr->saveObjectToSD(obj); - if(!m_transactionOK) { - m_eventLoop.exec(); + // Persist object in controller + utilMngr->saveObjectToSD(obj); + if(!m_transactionOK) { + m_eventLoop.exec(); + } + innerTimeoutTimer.stop(); } - innerTimeoutTimer.stop(); + m_currentTransactionObjectID = -1; } - m_currentTransactionObjectID = -1; } if(!m_transactionOK) { @@ -665,8 +684,8 @@ void VehicleConfigurationHelper::setupQuadCopter() guiSettings.multi.VTOLMotorNW = 1; guiSettings.multi.VTOLMotorNE = 2; - guiSettings.multi.VTOLMotorSW = 3; - guiSettings.multi.VTOLMotorSE = 4; + guiSettings.multi.VTOLMotorSE = 3; + guiSettings.multi.VTOLMotorSW = 4; break; } diff --git a/ground/openpilotgcs/src/plugins/setupwizard/vehicleconfigurationhelper.h b/ground/openpilotgcs/src/plugins/setupwizard/vehicleconfigurationhelper.h index f3065ed42..0810d3390 100644 --- a/ground/openpilotgcs/src/plugins/setupwizard/vehicleconfigurationhelper.h +++ b/ground/openpilotgcs/src/plugins/setupwizard/vehicleconfigurationhelper.h @@ -68,16 +68,11 @@ signals: void saveProgress(int total, int current, QString description); private: - - static const qint16 ACTUATOR_MIN = 1000; - static const qint16 ACTUATOR_NEUTRAL = 1000; - static const qint16 ACTUATOR_MAX = 2000; - static const int MIXER_TYPE_DISABLED = 0; static const int MIXER_TYPE_MOTOR = 1; static const int MIXER_TYPE_SERVO = 2; - static const int PROGRESS_STEPS = 10; + static const int PROGRESS_STEPS = 11; VehicleConfigurationSource *m_configSource; UAVObjectManager *m_uavoManager; @@ -92,13 +87,14 @@ private: void applyFlighModeConfiguration(); void applyLevellingConfiguration(); void applyStabilizationConfiguration(); + void applyManualControlDefaults(); void applyMixerConfiguration(mixerSettings mixer); GUIConfigDataUnion getGUIConfigData(); void applyMultiGUISettings(SystemSettings::AirframeTypeOptions airframe, GUIConfigDataUnion guiConfig); - bool saveChangesToController(); + bool saveChangesToController(bool save); QEventLoop m_eventLoop; bool m_transactionOK; bool m_transactionTimeout; diff --git a/ground/openpilotgcs/src/plugins/setupwizard/vehicleconfigurationsource.h b/ground/openpilotgcs/src/plugins/setupwizard/vehicleconfigurationsource.h index a80340726..f84d02316 100644 --- a/ground/openpilotgcs/src/plugins/setupwizard/vehicleconfigurationsource.h +++ b/ground/openpilotgcs/src/plugins/setupwizard/vehicleconfigurationsource.h @@ -50,9 +50,6 @@ struct actuatorChannelSettings { actuatorChannelSettings(): channelMin(1000), channelNeutral(1080), channelMax(1800) {} }; -struct actuatorSettings { - actuatorChannelSettings channels[ActuatorSettings::CHANNELADDR_NUMELEM]; -}; class VehicleConfigurationSource { @@ -78,7 +75,7 @@ public: virtual accelGyroBias getLevellingBias() const = 0; virtual bool isMotorCalibrationPerformed() const = 0; - virtual actuatorSettings getActuatorSettings() const = 0; + virtual QList getActuatorSettings() const = 0; virtual QString getSummaryText() = 0; }; From 37abf82fc28d4640bed153bb83b6d6354fc3505a Mon Sep 17 00:00:00 2001 From: Fredrik Arvidsson Date: Mon, 10 Sep 2012 22:37:39 +0200 Subject: [PATCH 027/105] OP-39 Added saving as image to the connection diagram dialog. --- .../plugins/setupwizard/connectiondiagram.cpp | 25 ++++-- .../plugins/setupwizard/connectiondiagram.h | 6 +- .../plugins/setupwizard/connectiondiagram.ui | 82 ++++++++++++------- 3 files changed, 74 insertions(+), 39 deletions(-) diff --git a/ground/openpilotgcs/src/plugins/setupwizard/connectiondiagram.cpp b/ground/openpilotgcs/src/plugins/setupwizard/connectiondiagram.cpp index 6ded9bda6..f3dbd2dca 100644 --- a/ground/openpilotgcs/src/plugins/setupwizard/connectiondiagram.cpp +++ b/ground/openpilotgcs/src/plugins/setupwizard/connectiondiagram.cpp @@ -27,6 +27,7 @@ #include #include +#include #include "connectiondiagram.h" #include "ui_connectiondiagram.h" @@ -62,8 +63,8 @@ void ConnectionDiagram::setupGraphicsScene() m_renderer->load(QString(":/setupwizard/resources/connection-diagrams.svg")) && m_renderer->isValid()) { - QGraphicsScene *scene = new QGraphicsScene(this); - ui->connectionDiagram->setScene(scene); + m_scene = new QGraphicsScene(this); + ui->connectionDiagram->setScene(m_scene); //ui->connectionDiagram->setViewportUpdateMode(QGraphicsView::FullViewportUpdate); m_background = new QGraphicsSvgItem(); @@ -72,7 +73,7 @@ void ConnectionDiagram::setupGraphicsScene() m_background->setOpacity(0); //m_background->setFlags(QGraphicsItem::ItemClipsToShape); m_background->setZValue(-1); - scene->addItem(m_background); + m_scene->addItem(m_background); QList elementsToShow; @@ -139,7 +140,7 @@ void ConnectionDiagram::setupGraphicsScene() break; } - setupGraphicsSceneItems(scene, elementsToShow); + setupGraphicsSceneItems(elementsToShow); ui->connectionDiagram->setSceneRect(m_background->boundingRect()); ui->connectionDiagram->fitInView(m_background, Qt::KeepAspectRatio); @@ -148,7 +149,7 @@ void ConnectionDiagram::setupGraphicsScene() } } -void ConnectionDiagram::setupGraphicsSceneItems(QGraphicsScene *scene, QList elementsToShow) +void ConnectionDiagram::setupGraphicsSceneItems(QList elementsToShow) { qreal z = 0; QRectF backgBounds = m_renderer->boundsOnElement("background"); @@ -168,7 +169,7 @@ void ConnectionDiagram::setupGraphicsSceneItems(QGraphicsScene *scene, QListboundsOnElement(elementId); //element->setPos(orig.x() - backgBounds.x(), orig.y() - backgBounds.y()); - scene->addItem(element); + m_scene->addItem(element); qDebug() << "Adding " << elementId << " to scene at " << element->pos(); } else { @@ -177,4 +178,14 @@ void ConnectionDiagram::setupGraphicsSceneItems(QGraphicsScene *scene, QListrender(&painter); + QString fileName = QFileDialog::getSaveFileName(this, tr("Save File"), "", tr("Images (*.png *.xpm *.jpg)")); + if(!fileName.isEmpty()) { + image.save(fileName); + } +} diff --git a/ground/openpilotgcs/src/plugins/setupwizard/connectiondiagram.h b/ground/openpilotgcs/src/plugins/setupwizard/connectiondiagram.h index 2063403a5..e03ed6b0e 100644 --- a/ground/openpilotgcs/src/plugins/setupwizard/connectiondiagram.h +++ b/ground/openpilotgcs/src/plugins/setupwizard/connectiondiagram.h @@ -54,13 +54,17 @@ private: QSvgRenderer *m_renderer; QGraphicsSvgItem* m_background; + QGraphicsScene *m_scene; void setupGraphicsScene(); - void setupGraphicsSceneItems(QGraphicsScene *scene, QList elementsToShow); + void setupGraphicsSceneItems(QList elementsToShow); protected: void resizeEvent(QResizeEvent *event); void showEvent(QShowEvent *event); +private slots: + + void on_saveButton_clicked(); }; #endif // CONNECTIONDIAGRAM_H diff --git a/ground/openpilotgcs/src/plugins/setupwizard/connectiondiagram.ui b/ground/openpilotgcs/src/plugins/setupwizard/connectiondiagram.ui index 690364a6d..7e86a99a2 100644 --- a/ground/openpilotgcs/src/plugins/setupwizard/connectiondiagram.ui +++ b/ground/openpilotgcs/src/plugins/setupwizard/connectiondiagram.ui @@ -43,48 +43,68 @@ - - - Qt::Horizontal - - - QDialogButtonBox::Close|QDialogButtonBox::Save - - + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + 0 + 0 + + + + Save + + + + + + + + 0 + 0 + + + + Close + + + true + + + + - buttonBox - accepted() + closeButton + clicked() ConnectionDiagram - accept() + close() - 248 - 254 + 752 + 418 - 157 - 274 - - - - - buttonBox - rejected() - ConnectionDiagram - reject() - - - 316 - 260 - - - 286 - 274 + 399 + 219 From 7d7d1644bcbaff2afe5bd12494d1fd6e282e004b Mon Sep 17 00:00:00 2001 From: Fredrik Arvidsson Date: Mon, 10 Sep 2012 22:55:02 +0200 Subject: [PATCH 028/105] OP-39 Fixed disabling of wizard buttons during bias calculation and saving of configuration. --- .../plugins/setupwizard/pages/flashpage.cpp | 20 +++++++++++++------ .../src/plugins/setupwizard/pages/flashpage.h | 3 ++- .../setupwizard/pages/levellingpage.cpp | 1 - .../src/plugins/setupwizard/setupwizard.cpp | 2 +- 4 files changed, 17 insertions(+), 9 deletions(-) diff --git a/ground/openpilotgcs/src/plugins/setupwizard/pages/flashpage.cpp b/ground/openpilotgcs/src/plugins/setupwizard/pages/flashpage.cpp index 988312bef..c31cda0c6 100644 --- a/ground/openpilotgcs/src/plugins/setupwizard/pages/flashpage.cpp +++ b/ground/openpilotgcs/src/plugins/setupwizard/pages/flashpage.cpp @@ -66,20 +66,28 @@ void FlashPage::writeToController() return; } - ui->saveButton->setEnabled(false); - getWizard()->button(QWizard::CancelButton)->setEnabled(false); - setCommitPage(true); + enableButtons(false); VehicleConfigurationHelper helper(getWizard()); connect(&helper, SIGNAL(saveProgress(int, int, QString)),this, SLOT(saveProgress(int, int, QString))); + m_successfulWrite = helper.setupVehicle(); + disconnect(&helper, SIGNAL(saveProgress(int, int, QString)),this, SLOT(saveProgress(int, int, QString))); ui->saveProgressLabel->setText(QString("%2").arg(m_successfulWrite ? "green" : "red", ui->saveProgressLabel->text())); - ui->saveButton->setEnabled(true); - getWizard()->button(QWizard::CancelButton)->setEnabled(true); - setCommitPage(false); + enableButtons(true); + emit completeChanged(); } +void FlashPage::enableButtons(bool enable) +{ + ui->saveButton->setEnabled(enable); + getWizard()->button(QWizard::NextButton)->setEnabled(enable); + getWizard()->button(QWizard::CancelButton)->setEnabled(enable); + getWizard()->button(QWizard::BackButton)->setEnabled(enable); + QApplication::processEvents(); +} + void FlashPage::saveProgress(int total, int current, QString description) { if(ui->saveProgressBar->maximum() != total) { diff --git a/ground/openpilotgcs/src/plugins/setupwizard/pages/flashpage.h b/ground/openpilotgcs/src/plugins/setupwizard/pages/flashpage.h index 45e83ed61..6602926ea 100644 --- a/ground/openpilotgcs/src/plugins/setupwizard/pages/flashpage.h +++ b/ground/openpilotgcs/src/plugins/setupwizard/pages/flashpage.h @@ -44,9 +44,10 @@ public: bool validatePage(); bool isComplete() const; -private: +private: Ui::FlashPage *ui; bool m_successfulWrite; + void enableButtons(bool enable); private slots: void writeToController(); diff --git a/ground/openpilotgcs/src/plugins/setupwizard/pages/levellingpage.cpp b/ground/openpilotgcs/src/plugins/setupwizard/pages/levellingpage.cpp index 1384865a6..6d7340f4e 100644 --- a/ground/openpilotgcs/src/plugins/setupwizard/pages/levellingpage.cpp +++ b/ground/openpilotgcs/src/plugins/setupwizard/pages/levellingpage.cpp @@ -85,7 +85,6 @@ void LevellingPage::performLevelling() { m_levellingUtil = new LevellingUtil(BIAS_CYCLES, BIAS_RATE); } - emit completeChanged(); connect(m_levellingUtil, SIGNAL(progress(long,long)), this, SLOT(levellingProgress(long,long))); connect(m_levellingUtil, SIGNAL(done(accelGyroBias)), this, SLOT(levellingDone(accelGyroBias))); diff --git a/ground/openpilotgcs/src/plugins/setupwizard/setupwizard.cpp b/ground/openpilotgcs/src/plugins/setupwizard/setupwizard.cpp index a74c026f2..a7b24ec50 100644 --- a/ground/openpilotgcs/src/plugins/setupwizard/setupwizard.cpp +++ b/ground/openpilotgcs/src/plugins/setupwizard/setupwizard.cpp @@ -53,7 +53,7 @@ SetupWizard::SetupWizard(QWidget *parent) : QWizard(parent), VehicleConfiguratio setWindowTitle(tr("OpenPilot Setup Wizard")); setOption(QWizard::IndependentPages, false); setFixedSize(640, 530); - for(int i = 0; i < ActuatorSettings::CHANNELMAX_NUMELEM; i++) + for(quint16 i = 0; i < ActuatorSettings::CHANNELMAX_NUMELEM; i++) { m_actuatorSettings << actuatorChannelSettings(); } From a5335a0acea831aa8b00751edef17e19c7e925c9 Mon Sep 17 00:00:00 2001 From: Fredrik Arvidsson Date: Tue, 11 Sep 2012 20:05:07 +0200 Subject: [PATCH 029/105] OP-39 Minor fixes --- .../src/plugins/setupwizard/pages/outputcalibrationpage.cpp | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/ground/openpilotgcs/src/plugins/setupwizard/pages/outputcalibrationpage.cpp b/ground/openpilotgcs/src/plugins/setupwizard/pages/outputcalibrationpage.cpp index a6389cb84..30750d807 100644 --- a/ground/openpilotgcs/src/plugins/setupwizard/pages/outputcalibrationpage.cpp +++ b/ground/openpilotgcs/src/plugins/setupwizard/pages/outputcalibrationpage.cpp @@ -198,7 +198,6 @@ void OutputCalibrationPage::setWizardPage() } } setupVehicleHighlightedPart(); - QApplication::processEvents(); } void OutputCalibrationPage::initializePage() @@ -316,7 +315,7 @@ void OutputCalibrationPage::on_motorNeutralSlider_valueChanged(int value) void OutputCalibrationPage::on_motorMaxButton_toggled(bool checked) { - ui->motorNeutralButton->setText(checked ? tr("Stop") : tr("Start")); + ui->motorMaxButton->setText(checked ? tr("Stop") : tr("Start")); quint16 channel = getCurrentChannel(); onStartButtonToggle(ui->motorMaxButton, channel, m_actuatorSettings[channel].channelMax, 1000, ui->motorMaxSlider); } From 463c14bf8445968e50b9757e49ad49391a698338 Mon Sep 17 00:00:00 2001 From: Fredrik Arvidsson Date: Thu, 13 Sep 2012 23:49:08 +0200 Subject: [PATCH 030/105] OP-39 Removed the motor max rate calibration steps from the wizard. Hardcoded max rate to 1900 ms for now. Fixed a bug with button enable/disable in the output calibration page. --- .../pages/outputcalibrationpage.cpp | 65 ++++------- .../setupwizard/pages/outputcalibrationpage.h | 3 - .../pages/outputcalibrationpage.ui | 109 +----------------- .../setupwizard/vehicleconfigurationsource.h | 2 +- 4 files changed, 29 insertions(+), 150 deletions(-) diff --git a/ground/openpilotgcs/src/plugins/setupwizard/pages/outputcalibrationpage.cpp b/ground/openpilotgcs/src/plugins/setupwizard/pages/outputcalibrationpage.cpp index 30750d807..bbf625e2e 100644 --- a/ground/openpilotgcs/src/plugins/setupwizard/pages/outputcalibrationpage.cpp +++ b/ground/openpilotgcs/src/plugins/setupwizard/pages/outputcalibrationpage.cpp @@ -67,42 +67,42 @@ void OutputCalibrationPage::setupVehicle() switch(getWizard()->getVehicleSubType()) { case SetupWizard::MULTI_ROTOR_TRI_Y: - m_wizardIndexes << 0 << 1 << 2 << 1 << 2 << 1 << 2 << 3 << 4 << 5; + m_wizardIndexes << 0 << 1 << 1 << 1 << 2 << 3 << 4; m_vehicleElementIds << "tri" << "tri-frame" << "tri-m1" << "tri-m2" << "tri-m3" << "tri-s1"; - m_vehicleHighlightElementIndexes << 0 << 1 << 1 << 2 << 2 << 3 << 3 << 4 << 4 << 4; - m_channelIndex << 0 << 0 << 0 << 1 << 1 << 2 << 2 << 3 << 3 << 3; + m_vehicleHighlightElementIndexes << 0 << 1 << 2 << 3 << 4 << 4 << 4; + m_channelIndex << 0 << 0 << 1 << 2 << 3 << 3 << 3; m_actuatorSettings[4].channelMin = 1500; m_actuatorSettings[4].channelMax = 1500; break; case SetupWizard::MULTI_ROTOR_QUAD_X: - m_wizardIndexes << 0 << 1 << 2 << 1 << 2 << 1 << 2 << 1 << 2; + m_wizardIndexes << 0 << 1 << 1 << 1 << 1; m_vehicleElementIds << "quad-x" << "quad-x-frame" << "quad-x-m1" << "quad-x-m2" << "quad-x-m3" << "quad-x-m4"; - m_vehicleHighlightElementIndexes << 0 << 1 << 1 << 2 << 2 << 3 << 3 << 4 << 4; - m_channelIndex << 0 << 0 << 0 << 1 << 1 << 2 << 2 << 3 << 3; + m_vehicleHighlightElementIndexes << 0 << 1 << 2 << 3 << 4; + m_channelIndex << 0 << 0 << 1 << 2 << 3; break; case SetupWizard::MULTI_ROTOR_QUAD_PLUS: - m_wizardIndexes << 0 << 1 << 2 << 1 << 2 << 1 << 2 << 1 << 2; + m_wizardIndexes << 0 << 1 << 1 << 1 << 1; m_vehicleElementIds << "quad-p" << "quad-p-frame" << "quad-p-m1" << "quad-p-m2" << "quad-p-m3" << "quad-p-m4"; - m_vehicleHighlightElementIndexes << 0 << 1 << 1 << 2 << 2 << 3 << 3 << 4 << 4; - m_channelIndex << 0 << 0 << 0 << 1 << 1 << 2 << 2 << 3 << 3; + m_vehicleHighlightElementIndexes << 0 << 1 << 2 << 3 << 4; + m_channelIndex << 0 << 0 << 1 << 2 << 3; break; case SetupWizard::MULTI_ROTOR_HEXA: - m_wizardIndexes << 0 << 1 << 2 << 1 << 2 << 1 << 2 << 1 << 2 << 1 << 2 << 1 << 2; + m_wizardIndexes << 0 << 1 << 1 << 1 << 1 << 1 << 1; m_vehicleElementIds << "hexa" << "hexa-frame" << "hexa-m1" << "hexa-m2" << "hexa-m3" << "hexa-m4" << "hexa-m5" << "hexa-m6"; - m_vehicleHighlightElementIndexes << 0 << 1 << 1 << 2 << 2 << 3 << 3 << 4 << 4 << 5 << 5 << 6 << 6; - m_channelIndex << 0 << 0 << 0 << 1 << 1 << 2 << 2 << 3 << 3 << 4 << 4 << 5 << 5; + m_vehicleHighlightElementIndexes << 0 << 1 << 2 << 3 << 4 << 5 << 6; + m_channelIndex << 0 << 0 << 1 << 2 << 3 << 4 << 5; break; case SetupWizard::MULTI_ROTOR_HEXA_COAX_Y: - m_wizardIndexes << 0 << 1 << 2 << 1 << 2 << 1 << 2 << 1 << 2 << 1 << 2 << 1 << 2; + m_wizardIndexes << 0 << 1 << 1 << 1 << 1 << 1 << 1; m_vehicleElementIds << "hexa-y6" << "hexa-y6-frame" << "hexa-y6-m2" << "hexa-y6-m1" << "hexa-y6-m4" << "hexa-y6-m3" << "hexa-y6-m6" << "hexa-y6-m5"; - m_vehicleHighlightElementIndexes << 0 << 2 << 2 << 1 << 1 << 4 << 4 << 3 << 3 << 6 << 6 << 5 << 5; - m_channelIndex << 0 << 0 << 0 << 1 << 1 << 2 << 2 << 3 << 3 << 4 << 4 << 5 << 5; + m_vehicleHighlightElementIndexes << 0 << 2 << 1 << 4 << 3 << 6 << 5; + m_channelIndex << 0 << 0 << 1 << 2 << 3 << 4 << 5; break; case SetupWizard::MULTI_ROTOR_HEXA_H: - m_wizardIndexes << 0 << 1 << 2 << 1 << 2 << 1 << 2 << 1 << 2 << 1 << 2 << 1 << 2; + m_wizardIndexes << 0 << 1 << 1 << 1 << 1 << 1 << 1; m_vehicleElementIds << "hexa-h" << "hexa-h-frame" << "hexa-h-m1" << "hexa-h-m2" << "hexa-h-m3" << "hexa-h-m4" << "hexa-h-m5" << "hexa-h-m6"; - m_vehicleHighlightElementIndexes << 0 << 1 << 1 << 2 << 2 << 3 << 3 << 4 << 4 << 5 << 5 << 6 << 6; - m_channelIndex << 0 << 0 << 0 << 1 << 1 << 2 << 2 << 3 << 3 << 4 << 4 << 5 << 5; + m_vehicleHighlightElementIndexes << 0 << 1 << 2 << 3 << 4 << 5 << 6; + m_channelIndex << 0 << 0 << 1 << 2 << 3 << 4 << 5; break; default: break; @@ -184,16 +184,13 @@ void OutputCalibrationPage::setWizardPage() if(currentPageIndex == 1) { ui->motorNeutralSlider->setValue(m_actuatorSettings[currentChannel].channelNeutral); } - else if (currentPageIndex == 2) { - ui->motorMaxSlider->setValue(m_actuatorSettings[currentChannel].channelMax); - } - else if(currentPageIndex == 3) { + else if(currentPageIndex == 2) { ui->servoCenterSlider->setValue(m_actuatorSettings[currentChannel].channelNeutral); } - else if(currentPageIndex == 4) { + else if(currentPageIndex == 3) { ui->servoMinAngleSlider->setValue(m_actuatorSettings[currentChannel].channelMin); } - else if(currentPageIndex == 5) { + else if(currentPageIndex == 4) { ui->servoMaxAngleSlider->setValue(m_actuatorSettings[currentChannel].channelMax); } } @@ -246,8 +243,8 @@ quint16 OutputCalibrationPage::getCurrentChannel() void OutputCalibrationPage::enableButtons(bool enable) { - ui->nextPageButton->setEnabled(enable); - ui->backPageButton->setEnabled(enable); + ui->nextPageButton->setEnabled(enable && (m_currentWizardIndex < m_wizardIndexes.size() - 1)); + ui->backPageButton->setEnabled(enable && (m_currentWizardIndex > 0)); getWizard()->button(QWizard::NextButton)->setEnabled(enable); getWizard()->button(QWizard::CancelButton)->setEnabled(enable); getWizard()->button(QWizard::BackButton)->setEnabled(enable); @@ -313,22 +310,6 @@ void OutputCalibrationPage::on_motorNeutralSlider_valueChanged(int value) } } -void OutputCalibrationPage::on_motorMaxButton_toggled(bool checked) -{ - ui->motorMaxButton->setText(checked ? tr("Stop") : tr("Start")); - quint16 channel = getCurrentChannel(); - onStartButtonToggle(ui->motorMaxButton, channel, m_actuatorSettings[channel].channelMax, 1000, ui->motorMaxSlider); -} - -void OutputCalibrationPage::on_motorMaxSlider_valueChanged(int position) -{ - if(ui->motorMaxButton->isChecked()) { - quint16 value = ui->motorMaxSlider->value(); - m_calibrationUtil->setChannelOutputValue(value); - m_actuatorSettings[getCurrentChannel()].channelMax = value; - } -} - void OutputCalibrationPage::on_servoCenterButton_toggled(bool checked) { ui->servoCenterButton->setText(checked ? tr("Stop") : tr("Start")); diff --git a/ground/openpilotgcs/src/plugins/setupwizard/pages/outputcalibrationpage.h b/ground/openpilotgcs/src/plugins/setupwizard/pages/outputcalibrationpage.h index c67bff74b..f66e29e88 100644 --- a/ground/openpilotgcs/src/plugins/setupwizard/pages/outputcalibrationpage.h +++ b/ground/openpilotgcs/src/plugins/setupwizard/pages/outputcalibrationpage.h @@ -58,9 +58,6 @@ private slots: void on_motorNeutralButton_toggled(bool checked); void on_motorNeutralSlider_valueChanged(int value); - void on_motorMaxButton_toggled(bool checked); - void on_motorMaxSlider_valueChanged(int position); - void on_servoCenterButton_toggled(bool checked); void on_servoCenterSlider_valueChanged(int position); diff --git a/ground/openpilotgcs/src/plugins/setupwizard/pages/outputcalibrationpage.ui b/ground/openpilotgcs/src/plugins/setupwizard/pages/outputcalibrationpage.ui index f3c0652e2..470a79c4b 100644 --- a/ground/openpilotgcs/src/plugins/setupwizard/pages/outputcalibrationpage.ui +++ b/ground/openpilotgcs/src/plugins/setupwizard/pages/outputcalibrationpage.ui @@ -36,7 +36,7 @@ - 5 + 2 @@ -136,89 +136,6 @@ - - - - - 90 - 240 - 75 - 23 - - - - Start - - - true - - - false - - - - - - 0 - 10 - 261 - 171 - - - - <html><head/><body><p>Now it is time to find out the maximum rate for the motor highlighted in the illustration to the right. </p><p>To find the maximum rate for this engine, press the Start button below and slide the slider to the left until the engine just starts to slow down.</p><p>Running a brushless motor for a long time without proper cooling can in theory damage it. Therefore do not leave the motor running at full rate longer than neccesary.<br/><br/>When done press button again to stop.</p></body></html> - - - Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop - - - true - - - - - false - - - - 10 - 200 - 241 - 19 - - - - 1400 - - - 2000 - - - 10 - - - 20 - - - 2000 - - - Qt::Horizontal - - - false - - - false - - - QSlider::TicksBelow - - - 20 - - - @@ -550,25 +467,9 @@ - motorMaxButton + servoMinAngleButton toggled(bool) - motorMaxSlider - setEnabled(bool) - - - 147 - 291 - - - 150 - 249 - - - - - servoCenterButton - toggled(bool) - servoCenterSlider + servoMinAngleSlider setEnabled(bool) @@ -598,9 +499,9 @@ - servoMinAngleButton + servoCenterButton toggled(bool) - servoMinAngleSlider + servoCenterSlider setEnabled(bool) diff --git a/ground/openpilotgcs/src/plugins/setupwizard/vehicleconfigurationsource.h b/ground/openpilotgcs/src/plugins/setupwizard/vehicleconfigurationsource.h index f84d02316..41aca3e28 100644 --- a/ground/openpilotgcs/src/plugins/setupwizard/vehicleconfigurationsource.h +++ b/ground/openpilotgcs/src/plugins/setupwizard/vehicleconfigurationsource.h @@ -47,7 +47,7 @@ struct actuatorChannelSettings { quint16 channelMax; //Default values - actuatorChannelSettings(): channelMin(1000), channelNeutral(1080), channelMax(1800) {} + actuatorChannelSettings(): channelMin(1000), channelNeutral(1080), channelMax(1900) {} }; From 3236f432b9d3132b0706fff0526ec7d648346dfe Mon Sep 17 00:00:00 2001 From: Kevin Vertucio Date: Fri, 14 Sep 2012 11:32:09 -0400 Subject: [PATCH 031/105] Content revisions and updates to SetupWizard plugin Corrected grammar and spelling. Revised Wizard introduction, multirotor platform descriptions for QuadX, Quad+, Tricopter. Signed-off-by: Kevin Vertucio --- .../plugins/setupwizard/pages/multipage.cpp | 10 +++--- .../plugins/setupwizard/pages/startpage.ui | 33 ++++++++++--------- .../plugins/setupwizard/pages/vehiclepage.ui | 12 +++---- 3 files changed, 28 insertions(+), 27 deletions(-) diff --git a/ground/openpilotgcs/src/plugins/setupwizard/pages/multipage.cpp b/ground/openpilotgcs/src/plugins/setupwizard/pages/multipage.cpp index 6d10509b7..3b986d6e9 100644 --- a/ground/openpilotgcs/src/plugins/setupwizard/pages/multipage.cpp +++ b/ground/openpilotgcs/src/plugins/setupwizard/pages/multipage.cpp @@ -71,18 +71,18 @@ bool MultiPage::validatePage() void MultiPage::setupMultiTypesCombo() { ui->typeCombo->addItem(tr("Tricopter"), SetupWizard::MULTI_ROTOR_TRI_Y); - m_descriptions << tr("The Tricopter uses three motors and one servo. The servo is used to give yaw authority to the aft motor. " - "The fore motors are rotating in opposite directions. The Tricopter is known for its sweeping yaw movement and " + m_descriptions << tr("The Tricopter uses three motors and one servo. The servo is used to give yaw authority to the rear motor. " + "The front motors are rotating in opposite directions. The Tricopter is known for its sweeping yaw movement and " "it is very well suited for FPV since the front rotors are spread wide apart."); ui->typeCombo->addItem(tr("Quadcopter X"), SetupWizard::MULTI_ROTOR_QUAD_X); - m_descriptions << tr("The X Quadcopter uses four motors and is the most common multi rotor configuration. Two of the motors rotates clockwise " - "and two counter clockwise. The motors positioned diagonal of each other rotates in the same direction. " + m_descriptions << tr("The X Quadcopter uses four motors and is the most common multi rotor configuration. Two of the motors rotate clockwise " + "and two counter clockwise. The motors positioned diagonal to each other rotate in the same direction. " "This setup is perfect for sport flying and is also commonly used for FPV platforms."); ui->typeCombo->addItem(tr("Quadcopter +"), SetupWizard::MULTI_ROTOR_QUAD_PLUS); m_descriptions << tr("The Plus(+) Quadcopter uses four motors and is similar to the X Quadcopter but the forward direction is offset by 45 degrees. " - "The motors fore and aft rotates in one direction and the motors steerboard and port rotates in the other. " + "The motors front and rear rotate in clockwise and the motors right and left rotate counter-clockwise. " "This setup was one of the first to be used and is still used for sport flying. This configuration is not that well suited " "for FPV since the fore rotor tend to be in the way of the camera."); diff --git a/ground/openpilotgcs/src/plugins/setupwizard/pages/startpage.ui b/ground/openpilotgcs/src/plugins/setupwizard/pages/startpage.ui index f6b649191..209d53e26 100644 --- a/ground/openpilotgcs/src/plugins/setupwizard/pages/startpage.ui +++ b/ground/openpilotgcs/src/plugins/setupwizard/pages/startpage.ui @@ -32,22 +32,23 @@ <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:12pt; font-weight:600;">Welcome to the OpenPilot Setup Wizard</span></p> -<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt;">This wizard will guide you through the basic steps of setting up your OpenPilot controller board. The following pages contains simple questions about your vehicle and its characteristics. </span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt;">From the information gathered the wizard will create a baseline configuration that should be good enough for you to get a quick start using your OpenPilot product.</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt;">The baseline configuration can, if desired, be uploaded to the OpenPilot Controller board at the end of this wizard.</span></p> -<p style="-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:10pt;"><br /></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt;">This wizard does not contain the full range of settings available in the GCS Config plugin. All configuration parameters can be changed at later by using the GCS Config plugin.</span></p> -<p style="-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:10pt;"><br /></p> -<p style="-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:10pt;"><br /></p> -<p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:12pt; font-weight:600; color:#ff0000;">REMOVE ALL PROPELLERS FROM THE VEHICHLE </span></p> -<p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:12pt; font-weight:600; color:#ff0000;">BEFORE PROCEEDING!</span></p> -<p style="-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:10pt;"><br /></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt;">Ignoring the above request will put you in a</span><span style=" font-size:10pt; font-weight:600; color:#000000;"> risk of serious injury</span><span style=" font-size:10pt;">!</span></p> -<p style="-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:10pt;"><br /></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt;">Ok, lets start the configuration by clicking on the 'Next'/'Continue' button below.</span></p></body></html> +</style></head><body style=" font-family:'Lucida Grande'; font-size:13pt; font-weight:400; font-style:normal;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'MS Shell Dlg 2'; font-size:12pt; font-weight:600;">Welcome to the OpenPilot Setup Wizard</span></p> +<p style="-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:'MS Shell Dlg 2'; font-size:8pt;"></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'MS Shell Dlg 2'; font-size:8pt;"><br /></span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'MS Shell Dlg 2'; font-size:10pt;">This wizard will guide you through the basic steps required to setup your OpenPilot controller for the first time. You will be asked questions about your platform (multirotor/heli/fixed-wing) which this wizard will use to configure your aircraft for a safe maiden flight. </span></p> +<p style="-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:'MS Shell Dlg 2'; font-size:10pt;"></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'MS Shell Dlg 2'; font-size:10pt;">This wizard does not configure all any of the advanced settings available in the GCS Configuration. All basic and advanced configuration parameters can be modified later by using the GCS Configuration plugin.</span></p> +<p style="-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:'MS Shell Dlg 2'; font-size:10pt;"></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'MS Shell Dlg 2'; font-size:10pt;"><br /></span></p> +<p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'MS Shell Dlg 2'; font-size:12pt; font-weight:600; color:#ff0000;">WARNING: YOU MUST REMOVE ALL PROPELLERS </span></p> +<p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'MS Shell Dlg 2'; font-size:12pt; font-weight:600; color:#ff0000;">FROM THE VEHICLE BEFORE PROCEEDING!</span></p> +<p style="-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:'MS Shell Dlg 2'; font-size:10pt;"></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'MS Shell Dlg 2'; font-size:10pt;"><br /></span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'MS Shell Dlg 2'; font-size:10pt;">Disregarding this warning puts you at</span><span style=" font-family:'MS Shell Dlg 2'; font-size:10pt; font-weight:600; color:#000000;"> risk of very serious injury</span><span style=" font-family:'MS Shell Dlg 2'; font-size:10pt;">!</span></p> +<p style="-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:'MS Shell Dlg 2'; font-size:10pt;"></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'MS Shell Dlg 2'; font-size:10pt;"><br /></span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'MS Shell Dlg 2'; font-size:10pt;">Now that your props are removed we can get started. Ready?</span></p></body></html> Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop diff --git a/ground/openpilotgcs/src/plugins/setupwizard/pages/vehiclepage.ui b/ground/openpilotgcs/src/plugins/setupwizard/pages/vehiclepage.ui index a7b612f4b..609f84d24 100644 --- a/ground/openpilotgcs/src/plugins/setupwizard/pages/vehiclepage.ui +++ b/ground/openpilotgcs/src/plugins/setupwizard/pages/vehiclepage.ui @@ -26,12 +26,12 @@ <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:12pt; font-weight:600;">Vehicle type selection</span></p> -<p style="-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;"></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt;">To continue the wizard needs to know what type of vehicle that the OpenPilot controller board is going to be used with. This step is cruicial since most of the following configuration is unique per vehicle type.</span></p> -<p style="-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:8pt;"></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt;">So go ahead and select the type of vehicle you want to create a configuration for.</span></p></body></html> +</style></head><body style=" font-family:'Lucida Grande'; font-size:13pt; font-weight:400; font-style:normal;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'MS Shell Dlg 2'; font-size:12pt; font-weight:600;">Vehicle type selection</span></p> +<p style="-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:'MS Shell Dlg 2'; font-size:12pt; font-weight:600;"></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'MS Shell Dlg 2'; font-size:10pt;">To continue the wizard needs to know what type of vehicle that the OpenPilot controller board is going to be used with. This step is crucial since most of the following configuration is unique per vehicle type.</span></p> +<p style="-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:'MS Shell Dlg 2'; font-size:8pt;"></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'MS Shell Dlg 2'; font-size:10pt;">So go ahead and select the type of vehicle you want to create a configuration for.</span></p></body></html> Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop From e3b5727dc144f79af02e3364ace7bef4d9bb274a Mon Sep 17 00:00:00 2001 From: Fredrik Arvidsson Date: Sat, 15 Sep 2012 11:06:19 +0200 Subject: [PATCH 032/105] OP-39 Fixed some layout stuff. --- .../plugins/setupwizard/pages/startpage.ui | 33 +++++++++---------- 1 file changed, 16 insertions(+), 17 deletions(-) diff --git a/ground/openpilotgcs/src/plugins/setupwizard/pages/startpage.ui b/ground/openpilotgcs/src/plugins/setupwizard/pages/startpage.ui index 209d53e26..f450724d9 100644 --- a/ground/openpilotgcs/src/plugins/setupwizard/pages/startpage.ui +++ b/ground/openpilotgcs/src/plugins/setupwizard/pages/startpage.ui @@ -32,23 +32,22 @@ <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Lucida Grande'; font-size:13pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'MS Shell Dlg 2'; font-size:12pt; font-weight:600;">Welcome to the OpenPilot Setup Wizard</span></p> -<p style="-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:'MS Shell Dlg 2'; font-size:8pt;"></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'MS Shell Dlg 2'; font-size:8pt;"><br /></span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'MS Shell Dlg 2'; font-size:10pt;">This wizard will guide you through the basic steps required to setup your OpenPilot controller for the first time. You will be asked questions about your platform (multirotor/heli/fixed-wing) which this wizard will use to configure your aircraft for a safe maiden flight. </span></p> -<p style="-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:'MS Shell Dlg 2'; font-size:10pt;"></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'MS Shell Dlg 2'; font-size:10pt;">This wizard does not configure all any of the advanced settings available in the GCS Configuration. All basic and advanced configuration parameters can be modified later by using the GCS Configuration plugin.</span></p> -<p style="-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:'MS Shell Dlg 2'; font-size:10pt;"></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'MS Shell Dlg 2'; font-size:10pt;"><br /></span></p> -<p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'MS Shell Dlg 2'; font-size:12pt; font-weight:600; color:#ff0000;">WARNING: YOU MUST REMOVE ALL PROPELLERS </span></p> -<p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'MS Shell Dlg 2'; font-size:12pt; font-weight:600; color:#ff0000;">FROM THE VEHICLE BEFORE PROCEEDING!</span></p> -<p style="-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:'MS Shell Dlg 2'; font-size:10pt;"></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'MS Shell Dlg 2'; font-size:10pt;"><br /></span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'MS Shell Dlg 2'; font-size:10pt;">Disregarding this warning puts you at</span><span style=" font-family:'MS Shell Dlg 2'; font-size:10pt; font-weight:600; color:#000000;"> risk of very serious injury</span><span style=" font-family:'MS Shell Dlg 2'; font-size:10pt;">!</span></p> -<p style="-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:'MS Shell Dlg 2'; font-size:10pt;"></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'MS Shell Dlg 2'; font-size:10pt;"><br /></span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'MS Shell Dlg 2'; font-size:10pt;">Now that your props are removed we can get started. Ready?</span></p></body></html> +</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8pt; font-weight:400; font-style:normal;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:12pt; font-weight:600;">Welcome to the OpenPilot Setup Wizard</span></p> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt;">This wizard will guide you through the basic steps required to setup your OpenPilot controller for the first time. You will be asked questions about your platform (multirotor/heli/fixed-wing) which this wizard will use to configure your aircraft for a safe maiden flight. </span></p> +<p style="-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:10pt;"><br /></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt;">This wizard does not configure all any of the advanced settings available in the GCS Configuration. All basic and advanced configuration parameters can be modified later by using the GCS Configuration plugin.</span></p> +<p style="-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:10pt;"><br /></p> +<p style="-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:'Lucida Grande'; font-size:13pt;"><br /></p> +<p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:12pt; font-weight:600; color:#ff0000;">WARNING: YOU MUST REMOVE ALL PROPELLERS </span></p> +<p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:12pt; font-weight:600; color:#ff0000;">FROM THE VEHICLE BEFORE PROCEEDING!</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt;"><br /></span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt;">Disregarding this warning puts you at</span><span style=" font-size:10pt; font-weight:600; color:#000000;"> risk of very serious injury</span><span style=" font-size:10pt;">!</span></p> +<p style="-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:10pt;"><br /></p> +<p style="-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:'Lucida Grande'; font-size:13pt;"><br /></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt;">Now that your props are removed we can get started. Ready?</span></p></body></html> Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop From 098c0d43fdaf8b0dc69aac8ebc7882d8ea213d33 Mon Sep 17 00:00:00 2001 From: Fredrik Arvidsson Date: Sun, 16 Sep 2012 16:21:51 +0200 Subject: [PATCH 033/105] OP-39 Hopefully fixed the servo calibration neutral value issue. --- .../src/plugins/setupwizard/pages/outputcalibrationpage.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/ground/openpilotgcs/src/plugins/setupwizard/pages/outputcalibrationpage.cpp b/ground/openpilotgcs/src/plugins/setupwizard/pages/outputcalibrationpage.cpp index 7341d2c4f..812694f66 100644 --- a/ground/openpilotgcs/src/plugins/setupwizard/pages/outputcalibrationpage.cpp +++ b/ground/openpilotgcs/src/plugins/setupwizard/pages/outputcalibrationpage.cpp @@ -74,6 +74,7 @@ void OutputCalibrationPage::setupVehicle() m_actuatorSettings[3].channelMin = 1500; m_actuatorSettings[3].channelNeutral = 1500; m_actuatorSettings[3].channelMax = 1500; + getWizard()->setActuatorSettings(m_actuatorSettings); break; case SetupWizard::MULTI_ROTOR_QUAD_X: m_wizardIndexes << 0 << 1 << 1 << 1 << 1; From a6a7ed8157e5dc394cbf1ab36fa1a1562348315f Mon Sep 17 00:00:00 2001 From: lilvinz Date: Sun, 16 Sep 2012 21:44:09 +0200 Subject: [PATCH 034/105] pios_exti: added returnvalues to exti handlers which allows to use portEND_SWITCHING_ISR --- flight/PiOS/Common/pios_bma180.c | 5 +-- flight/PiOS/Common/pios_hmc5883.c | 6 ++-- flight/PiOS/Common/pios_l3gd20.c | 7 ++-- flight/PiOS/Common/pios_mpu6000.c | 7 ++-- flight/PiOS/STM32F10x/pios_exti.c | 60 ++++++++++++++++++++++++++++--- flight/PiOS/STM32F4xx/pios_exti.c | 56 +++++++++++++++++++++++++++-- flight/PiOS/inc/pios_bma180.h | 2 +- flight/PiOS/inc/pios_exti.h | 2 +- flight/PiOS/inc/pios_hmc5883.h | 2 +- flight/PiOS/inc/pios_l3gd20.h | 2 +- flight/PiOS/inc/pios_mpu6000.h | 2 +- 11 files changed, 130 insertions(+), 21 deletions(-) diff --git a/flight/PiOS/Common/pios_bma180.c b/flight/PiOS/Common/pios_bma180.c index 2a578dd5d..65b872e2c 100644 --- a/flight/PiOS/Common/pios_bma180.c +++ b/flight/PiOS/Common/pios_bma180.c @@ -434,7 +434,7 @@ int32_t PIOS_BMA180_Test() * @brief IRQ Handler. Read data from the BMA180 FIFO and push onto a local fifo. */ int32_t bma180_irqs = 0; -void PIOS_BMA180_IRQHandler(void) +bool PIOS_BMA180_IRQHandler(void) { bma180_irqs++; @@ -470,7 +470,8 @@ void PIOS_BMA180_IRQHandler(void) data.temperature = pios_bma180_dmabuf[7]; fifoBuf_putData(&dev->fifo, (uint8_t *) &data, sizeof(data)); - + + return false; } #endif /* PIOS_INCLUDE_BMA180 */ diff --git a/flight/PiOS/Common/pios_hmc5883.c b/flight/PiOS/Common/pios_hmc5883.c index 8891709fc..14d4f96fe 100644 --- a/flight/PiOS/Common/pios_hmc5883.c +++ b/flight/PiOS/Common/pios_hmc5883.c @@ -391,9 +391,11 @@ int32_t PIOS_HMC5883_Test(void) /** * @brief IRQ Handler */ -void PIOS_HMC5883_IRQHandler(void) +bool PIOS_HMC5883_IRQHandler(void) { - pios_hmc5883_data_ready = true; + pios_hmc5883_data_ready = true + + return false; } #endif /* PIOS_INCLUDE_HMC5883 */ diff --git a/flight/PiOS/Common/pios_l3gd20.c b/flight/PiOS/Common/pios_l3gd20.c index 3151d26e2..e98a66153 100644 --- a/flight/PiOS/Common/pios_l3gd20.c +++ b/flight/PiOS/Common/pios_l3gd20.c @@ -353,7 +353,7 @@ uint8_t PIOS_L3GD20_Test(void) /** * @brief IRQ Handler. Read all the data from onboard buffer */ -void PIOS_L3GD20_IRQHandler(void) +bool PIOS_L3GD20_IRQHandler(void) { l3gd20_irq++; @@ -375,7 +375,10 @@ void PIOS_L3GD20_IRQHandler(void) memcpy((uint8_t *) &(data.gyro_x), &rec[1], 6); data.temperature = PIOS_L3GD20_GetReg(PIOS_L3GD20_OUT_TEMP); - xQueueSend(dev->queue, (void *) &data, 0); + portBASE_TYPE xHigherPriorityTaskWoken; + xQueueSendToBackFromISR(dev->queue, (void *) &data, &xHigherPriorityTaskWoken); + + return xHigherPriorityTaskWoken == pdTRUE; } #endif /* L3GD20 */ diff --git a/flight/PiOS/Common/pios_mpu6000.c b/flight/PiOS/Common/pios_mpu6000.c index 56e8cccbd..46bd3569e 100644 --- a/flight/PiOS/Common/pios_mpu6000.c +++ b/flight/PiOS/Common/pios_mpu6000.c @@ -461,12 +461,15 @@ void PIOS_MPU6000_IRQHandler(void) data.gyro_y = mpu6000_rec_buf[5] << 8 | mpu6000_rec_buf[6]; data.gyro_z = mpu6000_rec_buf[7] << 8 | mpu6000_rec_buf[8]; #endif - - xQueueSend(dev->queue, (void *) &data, 0); + + portBASE_TYPE xHigherPriorityTaskWoken; + xQueueSendToBackFromISR(dev->queue, (void *) &data, &xHigherPriorityTaskWoken); mpu6000_irq++; mpu6000_time_us = PIOS_DELAY_DiffuS(timeval); + + return xHigherPriorityTaskWoken == pdTRUE; } #endif diff --git a/flight/PiOS/STM32F10x/pios_exti.c b/flight/PiOS/STM32F10x/pios_exti.c index 65a651f6f..41d40f14b 100644 --- a/flight/PiOS/STM32F10x/pios_exti.c +++ b/flight/PiOS/STM32F10x/pios_exti.c @@ -149,7 +149,7 @@ out_fail: return -1; } -static void PIOS_EXTI_generic_irq_handler(uint8_t line_index) +static bool PIOS_EXTI_generic_irq_handler(uint8_t line_index) { uint8_t cfg_index = pios_exti_line_to_cfg_map[line_index]; @@ -158,69 +158,119 @@ static void PIOS_EXTI_generic_irq_handler(uint8_t line_index) if (cfg_index > NELEMENTS(pios_exti_line_to_cfg_map) || cfg_index == PIOS_EXTI_INVALID) { /* Unconfigured interrupt just fired! */ - return; + return false; } struct pios_exti_cfg * cfg = &__start__exti + cfg_index; - cfg->vector(); + return cfg->vector(); } -/* Bind Interrupt Handlers */ - +#ifdef PIOS_INCLUDE_FREERTOS +#define PIOS_EXTI_HANDLE_LINE(line) \ + if (EXTI_GetITStatus(EXTI_Line##line) != RESET) { \ + EXTI_ClearITPendingBit(EXTI_Line##line); \ + xHigherPriorityTaskWoken |= PIOS_EXTI_generic_irq_handler(line); \ + } +#else #define PIOS_EXTI_HANDLE_LINE(line) \ if (EXTI_GetITStatus(EXTI_Line##line) != RESET) { \ EXTI_ClearITPendingBit(EXTI_Line##line); \ PIOS_EXTI_generic_irq_handler(line); \ } +#endif + +/* Bind Interrupt Handlers */ static void PIOS_EXTI_0_irq_handler (void) { +#ifdef PIOS_INCLUDE_FREERTOS + portBASE_TYPE xHigherPriorityTaskWoken = pdFALSE; +#endif PIOS_EXTI_HANDLE_LINE(0); +#ifdef PIOS_INCLUDE_FREERTOS + portEND_SWITCHING_ISR(xHigherPriorityTaskWoken); +#endif } void EXTI0_IRQHandler(void) __attribute__ ((alias ("PIOS_EXTI_0_irq_handler"))); static void PIOS_EXTI_1_irq_handler (void) { +#ifdef PIOS_INCLUDE_FREERTOS + portBASE_TYPE xHigherPriorityTaskWoken = pdFALSE; +#endif PIOS_EXTI_HANDLE_LINE(1); +#ifdef PIOS_INCLUDE_FREERTOS + portEND_SWITCHING_ISR(xHigherPriorityTaskWoken); +#endif } void EXTI1_IRQHandler(void) __attribute__ ((alias ("PIOS_EXTI_1_irq_handler"))); static void PIOS_EXTI_2_irq_handler (void) { +#ifdef PIOS_INCLUDE_FREERTOS + portBASE_TYPE xHigherPriorityTaskWoken = pdFALSE; +#endif PIOS_EXTI_HANDLE_LINE(2); +#ifdef PIOS_INCLUDE_FREERTOS + portEND_SWITCHING_ISR(xHigherPriorityTaskWoken); +#endif } void EXTI2_IRQHandler(void) __attribute__ ((alias ("PIOS_EXTI_2_irq_handler"))); static void PIOS_EXTI_3_irq_handler (void) { +#ifdef PIOS_INCLUDE_FREERTOS + portBASE_TYPE xHigherPriorityTaskWoken = pdFALSE; +#endif PIOS_EXTI_HANDLE_LINE(3); +#ifdef PIOS_INCLUDE_FREERTOS + portEND_SWITCHING_ISR(xHigherPriorityTaskWoken); +#endif } void EXTI3_IRQHandler(void) __attribute__ ((alias ("PIOS_EXTI_3_irq_handler"))); static void PIOS_EXTI_4_irq_handler (void) { +#ifdef PIOS_INCLUDE_FREERTOS + portBASE_TYPE xHigherPriorityTaskWoken = pdFALSE; +#endif PIOS_EXTI_HANDLE_LINE(4); +#ifdef PIOS_INCLUDE_FREERTOS + portEND_SWITCHING_ISR(xHigherPriorityTaskWoken); +#endif } void EXTI4_IRQHandler(void) __attribute__ ((alias ("PIOS_EXTI_4_irq_handler"))); static void PIOS_EXTI_9_5_irq_handler (void) { +#ifdef PIOS_INCLUDE_FREERTOS + portBASE_TYPE xHigherPriorityTaskWoken = pdFALSE; +#endif PIOS_EXTI_HANDLE_LINE(5); PIOS_EXTI_HANDLE_LINE(6); PIOS_EXTI_HANDLE_LINE(7); PIOS_EXTI_HANDLE_LINE(8); PIOS_EXTI_HANDLE_LINE(9); +#ifdef PIOS_INCLUDE_FREERTOS + portEND_SWITCHING_ISR(xHigherPriorityTaskWoken); +#endif } void EXTI9_5_IRQHandler(void) __attribute__ ((alias ("PIOS_EXTI_9_5_irq_handler"))); static void PIOS_EXTI_15_10_irq_handler (void) { +#ifdef PIOS_INCLUDE_FREERTOS + portBASE_TYPE xHigherPriorityTaskWoken = pdFALSE; +#endif PIOS_EXTI_HANDLE_LINE(10); PIOS_EXTI_HANDLE_LINE(11); PIOS_EXTI_HANDLE_LINE(12); PIOS_EXTI_HANDLE_LINE(13); PIOS_EXTI_HANDLE_LINE(14); PIOS_EXTI_HANDLE_LINE(15); +#ifdef PIOS_INCLUDE_FREERTOS + portEND_SWITCHING_ISR(xHigherPriorityTaskWoken); +#endif } void EXTI15_10_IRQHandler(void) __attribute__ ((alias ("PIOS_EXTI_15_10_irq_handler"))); diff --git a/flight/PiOS/STM32F4xx/pios_exti.c b/flight/PiOS/STM32F4xx/pios_exti.c index 9f9567d51..8259ce006 100644 --- a/flight/PiOS/STM32F4xx/pios_exti.c +++ b/flight/PiOS/STM32F4xx/pios_exti.c @@ -149,7 +149,7 @@ out_fail: return -1; } -static void PIOS_EXTI_generic_irq_handler(uint8_t line_index) +static bool PIOS_EXTI_generic_irq_handler(uint8_t line_index) { uint8_t cfg_index = pios_exti_line_to_cfg_map[line_index]; @@ -158,69 +158,119 @@ static void PIOS_EXTI_generic_irq_handler(uint8_t line_index) if (cfg_index > NELEMENTS(pios_exti_line_to_cfg_map) || cfg_index == PIOS_EXTI_INVALID) { /* Unconfigured interrupt just fired! */ - return; + return false; } struct pios_exti_cfg * cfg = &__start__exti + cfg_index; - cfg->vector(); + return cfg->vector(); } /* Bind Interrupt Handlers */ +#ifdef PIOS_INCLUDE_FREERTOS +#define PIOS_EXTI_HANDLE_LINE(line) \ + if (EXTI_GetITStatus(EXTI_Line##line) != RESET) { \ + EXTI_ClearITPendingBit(EXTI_Line##line); \ + xHigherPriorityTaskWoken |= PIOS_EXTI_generic_irq_handler(line); \ + } +#else #define PIOS_EXTI_HANDLE_LINE(line) \ if (EXTI_GetITStatus(EXTI_Line##line) != RESET) { \ EXTI_ClearITPendingBit(EXTI_Line##line); \ PIOS_EXTI_generic_irq_handler(line); \ } +#endif static void PIOS_EXTI_0_irq_handler (void) { +#ifdef PIOS_INCLUDE_FREERTOS + portBASE_TYPE xHigherPriorityTaskWoken = pdFALSE; +#endif PIOS_EXTI_HANDLE_LINE(0); +#ifdef PIOS_INCLUDE_FREERTOS + portEND_SWITCHING_ISR(xHigherPriorityTaskWoken); +#endif } void EXTI0_IRQHandler(void) __attribute__ ((alias ("PIOS_EXTI_0_irq_handler"))); static void PIOS_EXTI_1_irq_handler (void) { +#ifdef PIOS_INCLUDE_FREERTOS + portBASE_TYPE xHigherPriorityTaskWoken = pdFALSE; +#endif PIOS_EXTI_HANDLE_LINE(1); +#ifdef PIOS_INCLUDE_FREERTOS + portEND_SWITCHING_ISR(xHigherPriorityTaskWoken); +#endif } void EXTI1_IRQHandler(void) __attribute__ ((alias ("PIOS_EXTI_1_irq_handler"))); static void PIOS_EXTI_2_irq_handler (void) { +#ifdef PIOS_INCLUDE_FREERTOS + portBASE_TYPE xHigherPriorityTaskWoken = pdFALSE; +#endif PIOS_EXTI_HANDLE_LINE(2); +#ifdef PIOS_INCLUDE_FREERTOS + portEND_SWITCHING_ISR(xHigherPriorityTaskWoken); +#endif } void EXTI2_IRQHandler(void) __attribute__ ((alias ("PIOS_EXTI_2_irq_handler"))); static void PIOS_EXTI_3_irq_handler (void) { +#ifdef PIOS_INCLUDE_FREERTOS + portBASE_TYPE xHigherPriorityTaskWoken = pdFALSE; +#endif PIOS_EXTI_HANDLE_LINE(3); +#ifdef PIOS_INCLUDE_FREERTOS + portEND_SWITCHING_ISR(xHigherPriorityTaskWoken); +#endif } void EXTI3_IRQHandler(void) __attribute__ ((alias ("PIOS_EXTI_3_irq_handler"))); static void PIOS_EXTI_4_irq_handler (void) { +#ifdef PIOS_INCLUDE_FREERTOS + portBASE_TYPE xHigherPriorityTaskWoken = pdFALSE; +#endif PIOS_EXTI_HANDLE_LINE(4); +#ifdef PIOS_INCLUDE_FREERTOS + portEND_SWITCHING_ISR(xHigherPriorityTaskWoken); +#endif } void EXTI4_IRQHandler(void) __attribute__ ((alias ("PIOS_EXTI_4_irq_handler"))); static void PIOS_EXTI_9_5_irq_handler (void) { +#ifdef PIOS_INCLUDE_FREERTOS + portBASE_TYPE xHigherPriorityTaskWoken = pdFALSE; +#endif PIOS_EXTI_HANDLE_LINE(5); PIOS_EXTI_HANDLE_LINE(6); PIOS_EXTI_HANDLE_LINE(7); PIOS_EXTI_HANDLE_LINE(8); PIOS_EXTI_HANDLE_LINE(9); +#ifdef PIOS_INCLUDE_FREERTOS + portEND_SWITCHING_ISR(xHigherPriorityTaskWoken); +#endif } void EXTI9_5_IRQHandler(void) __attribute__ ((alias ("PIOS_EXTI_9_5_irq_handler"))); static void PIOS_EXTI_15_10_irq_handler (void) { +#ifdef PIOS_INCLUDE_FREERTOS + portBASE_TYPE xHigherPriorityTaskWoken = pdFALSE; +#endif PIOS_EXTI_HANDLE_LINE(10); PIOS_EXTI_HANDLE_LINE(11); PIOS_EXTI_HANDLE_LINE(12); PIOS_EXTI_HANDLE_LINE(13); PIOS_EXTI_HANDLE_LINE(14); PIOS_EXTI_HANDLE_LINE(15); +#ifdef PIOS_INCLUDE_FREERTOS + portEND_SWITCHING_ISR(xHigherPriorityTaskWoken); +#endif } void EXTI15_10_IRQHandler(void) __attribute__ ((alias ("PIOS_EXTI_15_10_irq_handler"))); diff --git a/flight/PiOS/inc/pios_bma180.h b/flight/PiOS/inc/pios_bma180.h index ef9627f00..51e65a6ec 100644 --- a/flight/PiOS/inc/pios_bma180.h +++ b/flight/PiOS/inc/pios_bma180.h @@ -103,7 +103,7 @@ extern float PIOS_BMA180_GetScale(); extern int32_t PIOS_BMA180_ReadFifo(struct pios_bma180_data * buffer); extern int32_t PIOS_BMA180_ReadAccels(struct pios_bma180_data * data); extern int32_t PIOS_BMA180_Test(); -extern void PIOS_BMA180_IRQHandler(); +extern bool PIOS_BMA180_IRQHandler(); #endif /* PIOS_BMA180_H */ diff --git a/flight/PiOS/inc/pios_exti.h b/flight/PiOS/inc/pios_exti.h index 73a3bb556..4b1203aa2 100644 --- a/flight/PiOS/inc/pios_exti.h +++ b/flight/PiOS/inc/pios_exti.h @@ -36,7 +36,7 @@ #include struct pios_exti_cfg { - void (* vector)(void); + bool (* vector)(void); uint32_t line; /* use EXTI_LineN macros */ struct stm32_gpio pin; struct stm32_irq irq; diff --git a/flight/PiOS/inc/pios_hmc5883.h b/flight/PiOS/inc/pios_hmc5883.h index 037dca788..d9c362e9d 100644 --- a/flight/PiOS/inc/pios_hmc5883.h +++ b/flight/PiOS/inc/pios_hmc5883.h @@ -107,7 +107,7 @@ extern bool PIOS_HMC5883_NewDataAvailable(void); extern int32_t PIOS_HMC5883_ReadMag(int16_t out[3]); extern uint8_t PIOS_HMC5883_ReadID(uint8_t out[4]); extern int32_t PIOS_HMC5883_Test(void); -extern void PIOS_HMC5883_IRQHandler(); +bool void PIOS_HMC5883_IRQHandler(); #endif /* PIOS_HMC5883_H */ /** diff --git a/flight/PiOS/inc/pios_l3gd20.h b/flight/PiOS/inc/pios_l3gd20.h index 83b2070b6..3a2e896fd 100644 --- a/flight/PiOS/inc/pios_l3gd20.h +++ b/flight/PiOS/inc/pios_l3gd20.h @@ -141,7 +141,7 @@ extern int32_t PIOS_L3GD20_SetRange(enum pios_l3gd20_range range); extern float PIOS_L3GD20_GetScale(); extern int32_t PIOS_L3GD20_ReadID(); extern uint8_t PIOS_L3GD20_Test(); -extern void PIOS_L3GD20_IRQHandler(); +bool void PIOS_L3GD20_IRQHandler(); #endif /* PIOS_L3GD20_H */ diff --git a/flight/PiOS/inc/pios_mpu6000.h b/flight/PiOS/inc/pios_mpu6000.h index 2a301bc4c..2c9f0f8bb 100644 --- a/flight/PiOS/inc/pios_mpu6000.h +++ b/flight/PiOS/inc/pios_mpu6000.h @@ -156,7 +156,7 @@ extern int32_t PIOS_MPU6000_ReadID(); extern uint8_t PIOS_MPU6000_Test(); extern float PIOS_MPU6000_GetScale(); extern float PIOS_MPU6000_GetAccelScale(); -extern void PIOS_MPU6000_IRQHandler(void); +extern bool PIOS_MPU6000_IRQHandler(void); #endif /* PIOS_MPU6000_H */ From 806097fd5664573bdf4ec2806efbdea152c10936 Mon Sep 17 00:00:00 2001 From: Fredrik Arvidsson Date: Sun, 16 Sep 2012 23:03:15 +0200 Subject: [PATCH 035/105] OP-39 Added reboot page to wizard. User needing to reboot should NOT forget it now. Added code to invoke Vehicle Setup Wizard and Radio Wizard from Welcome page. --- .../plugins/config/configgadgetfactory.cpp | 24 +++++ .../src/plugins/config/configgadgetfactory.h | 2 + .../src/plugins/coreplugin/modemanager.cpp | 10 ++ .../src/plugins/coreplugin/modemanager.h | 1 + .../src/plugins/setupwizard/pages/endpage.cpp | 2 +- .../plugins/setupwizard/pages/rebootpage.cpp | 66 ++++++++++++++ .../plugins/setupwizard/pages/rebootpage.h | 57 ++++++++++++ .../plugins/setupwizard/pages/rebootpage.ui | 91 +++++++++++++++++++ .../src/plugins/setupwizard/setupwizard.cpp | 9 ++ .../src/plugins/setupwizard/setupwizard.h | 2 +- .../src/plugins/setupwizard/setupwizard.pro | 9 +- .../plugins/setupwizard/setupwizardplugin.cpp | 7 +- .../src/plugins/welcome/qml/main.qml | 4 +- .../src/plugins/welcome/welcomemode.cpp | 5 + .../src/plugins/welcome/welcomemode.h | 1 + 15 files changed, 281 insertions(+), 9 deletions(-) create mode 100644 ground/openpilotgcs/src/plugins/setupwizard/pages/rebootpage.cpp create mode 100644 ground/openpilotgcs/src/plugins/setupwizard/pages/rebootpage.h create mode 100644 ground/openpilotgcs/src/plugins/setupwizard/pages/rebootpage.ui diff --git a/ground/openpilotgcs/src/plugins/config/configgadgetfactory.cpp b/ground/openpilotgcs/src/plugins/config/configgadgetfactory.cpp index 2a1996729..a927f2179 100644 --- a/ground/openpilotgcs/src/plugins/config/configgadgetfactory.cpp +++ b/ground/openpilotgcs/src/plugins/config/configgadgetfactory.cpp @@ -29,6 +29,10 @@ #include "configgadgetconfiguration.h" #include "configgadgetoptionspage.h" #include +#include +#include +#include +#include ConfigGadgetFactory::ConfigGadgetFactory(QObject *parent) : IUAVGadgetFactory(QString("ConfigGadget"), tr("Config Gadget"), parent), @@ -43,6 +47,25 @@ ConfigGadgetFactory::~ConfigGadgetFactory() Core::IUAVGadget* ConfigGadgetFactory::createGadget(QWidget *parent) { gadgetWidget = new ConfigGadgetWidget(parent); + + // Add Menu entry + Core::ActionManager* am = Core::ICore::instance()->actionManager(); + Core::ActionContainer* ac = am->actionContainer(Core::Constants::M_TOOLS); + + Core::Command* cmd = am->registerAction(new QAction(this), + "ConfigPlugin.ShowInputWizard", + QList() << + Core::Constants::C_GLOBAL_ID); + cmd->setDefaultKeySequence(QKeySequence("Ctrl+R")); + cmd->action()->setText(tr("Radio Setup Wizard")); + + Core::ModeManager::instance()->addAction(cmd, 1); + + ac->appendGroup("Wizard"); + ac->addAction(cmd, "Wizard"); + + connect(cmd->action(), SIGNAL(triggered(bool)), this, SLOT(startInputWizard())); + return new ConfigGadget(QString("ConfigGadget"), gadgetWidget, parent); } @@ -60,6 +83,7 @@ void ConfigGadgetFactory::startInputWizard() { if(gadgetWidget) { + Core::ModeManager::instance()->activateModeByWorkspaceName("Configuration"); gadgetWidget->startInputWizard(); } } diff --git a/ground/openpilotgcs/src/plugins/config/configgadgetfactory.h b/ground/openpilotgcs/src/plugins/config/configgadgetfactory.h index 77963a842..f44f2c02a 100644 --- a/ground/openpilotgcs/src/plugins/config/configgadgetfactory.h +++ b/ground/openpilotgcs/src/plugins/config/configgadgetfactory.h @@ -50,6 +50,8 @@ public: IUAVGadget *createGadget(QWidget *parent); IUAVGadgetConfiguration *createConfiguration(QSettings* qSettings); IOptionsPage *createOptionsPage(IUAVGadgetConfiguration *config); + +public slots: void startInputWizard(); private: diff --git a/ground/openpilotgcs/src/plugins/coreplugin/modemanager.cpp b/ground/openpilotgcs/src/plugins/coreplugin/modemanager.cpp index aa5356705..85b3c4bde 100644 --- a/ground/openpilotgcs/src/plugins/coreplugin/modemanager.cpp +++ b/ground/openpilotgcs/src/plugins/coreplugin/modemanager.cpp @@ -326,3 +326,13 @@ void ModeManager::setFocusToCurrentMode() widget->setFocus(); } } + +void ModeManager::triggerAction(const QString &actionId) +{ + foreach(Command * command, m_actions.keys()){ + if(command->action()->objectName() == actionId) { + command->action()->trigger(); + break; + } + } +} diff --git a/ground/openpilotgcs/src/plugins/coreplugin/modemanager.h b/ground/openpilotgcs/src/plugins/coreplugin/modemanager.h index ccaf50607..d8fba46bd 100644 --- a/ground/openpilotgcs/src/plugins/coreplugin/modemanager.h +++ b/ground/openpilotgcs/src/plugins/coreplugin/modemanager.h @@ -82,6 +82,7 @@ public slots: void activateMode(const QString &id); void activateModeByWorkspaceName(const QString &id); void setFocusToCurrentMode(); + void triggerAction(const QString &actionId); private slots: void objectAdded(QObject *obj); diff --git a/ground/openpilotgcs/src/plugins/setupwizard/pages/endpage.cpp b/ground/openpilotgcs/src/plugins/setupwizard/pages/endpage.cpp index 5c445d5ba..34228c401 100644 --- a/ground/openpilotgcs/src/plugins/setupwizard/pages/endpage.cpp +++ b/ground/openpilotgcs/src/plugins/setupwizard/pages/endpage.cpp @@ -51,7 +51,7 @@ void EndPage::openInputWizard() ConfigGadgetFactory* configGadgetFactory = pm->getObject(); if(configGadgetFactory) { - Core::ModeManager::instance()->activateModeByWorkspaceName("Configuration"); + //Core::ModeManager::instance()->activateModeByWorkspaceName("Configuration"); getWizard()->close(); configGadgetFactory->startInputWizard(); } diff --git a/ground/openpilotgcs/src/plugins/setupwizard/pages/rebootpage.cpp b/ground/openpilotgcs/src/plugins/setupwizard/pages/rebootpage.cpp new file mode 100644 index 000000000..4a2100e3a --- /dev/null +++ b/ground/openpilotgcs/src/plugins/setupwizard/pages/rebootpage.cpp @@ -0,0 +1,66 @@ +/** + ****************************************************************************** + * + * @file rebootpage.cpp + * @author The OpenPilot Team, http://www.openpilot.org Copyright (C) 2012. + * @addtogroup + * @{ + * @addtogroup RebootPage + * @{ + * @brief + *****************************************************************************/ +/* + * 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 + * the Free Software Foundation; either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "rebootpage.h" +#include "ui_rebootpage.h" + +RebootPage::RebootPage(SetupWizard *wizard, QWidget *parent) : + AbstractWizardPage(wizard, parent), + ui(new Ui::RebootPage), m_toggl(false) +{ + ui->setupUi(this); + ui->yellowLabel->setVisible(false); + ui->redLabel->setVisible(true); +} + +RebootPage::~RebootPage() +{ + disconnect(&m_timer, SIGNAL(timeout()), this, SLOT(toggleLabel())); + m_timer.stop(); + delete ui; +} + +void RebootPage::initializePage() +{ + connect(&m_timer, SIGNAL(timeout()), this, SLOT(toggleLabel())); + m_timer.setInterval(500); + m_timer.setSingleShot(false); + m_timer.start(); +} + +bool RebootPage::validatePage() +{ + return true; +} + +void RebootPage::toggleLabel() +{ + m_toggl = !m_toggl; + ui->yellowLabel->setVisible(m_toggl); + ui->redLabel->setVisible(!m_toggl); + qDebug() << "Toggle = " << m_toggl; +} diff --git a/ground/openpilotgcs/src/plugins/setupwizard/pages/rebootpage.h b/ground/openpilotgcs/src/plugins/setupwizard/pages/rebootpage.h new file mode 100644 index 000000000..c3d32fca2 --- /dev/null +++ b/ground/openpilotgcs/src/plugins/setupwizard/pages/rebootpage.h @@ -0,0 +1,57 @@ +/** + ****************************************************************************** + * + * @file rebootpage.h + * @author The OpenPilot Team, http://www.openpilot.org Copyright (C) 2012. + * @addtogroup + * @{ + * @addtogroup RebootPage + * @{ + * @brief + *****************************************************************************/ +/* + * 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 + * the Free Software Foundation; either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef REBOOTPAGE_H +#define REBOOTPAGE_H + +#include "abstractwizardpage.h" + +namespace Ui { +class RebootPage; +} + +class RebootPage : public AbstractWizardPage +{ + Q_OBJECT + +public: + explicit RebootPage(SetupWizard *wizard, QWidget *parent = 0); + ~RebootPage(); + + void initializePage(); + bool validatePage(); + +private: + Ui::RebootPage *ui; + QTimer m_timer; + bool m_toggl; + +private slots: + void toggleLabel(); +}; + +#endif // REBOOTPAGE_H diff --git a/ground/openpilotgcs/src/plugins/setupwizard/pages/rebootpage.ui b/ground/openpilotgcs/src/plugins/setupwizard/pages/rebootpage.ui new file mode 100644 index 000000000..4218fa81b --- /dev/null +++ b/ground/openpilotgcs/src/plugins/setupwizard/pages/rebootpage.ui @@ -0,0 +1,91 @@ + + + RebootPage + + + + 0 + 0 + 600 + 400 + + + + WizardPage + + + + + 50 + 130 + 501 + 41 + + + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8pt; font-weight:400; font-style:normal;"> +<p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:18pt; color:#ff0000;">PLEASE REBOOT YOUR CONTROLLER</span></p></body></html> + + + Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop + + + true + + + + + + 50 + 180 + 501 + 61 + + + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8pt; font-weight:400; font-style:normal;"> +<p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt; color:#000000;">The configuration created by the wizard contains settings that require a reboot of your controller. Please power cycle the controller before continuing.</span></p></body></html> + + + Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop + + + true + + + + + + 50 + 130 + 501 + 41 + + + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8pt; font-weight:400; font-style:normal;"> +<p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:18pt; color:#ffd500;">PLEASE REBOOT YOUR CONTROLLER</span></p></body></html> + + + Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop + + + true + + + yellowLabel + redLabel + label_3 + + + + diff --git a/ground/openpilotgcs/src/plugins/setupwizard/setupwizard.cpp b/ground/openpilotgcs/src/plugins/setupwizard/setupwizard.cpp index 28328f9a4..993e632bf 100644 --- a/ground/openpilotgcs/src/plugins/setupwizard/setupwizard.cpp +++ b/ground/openpilotgcs/src/plugins/setupwizard/setupwizard.cpp @@ -41,6 +41,7 @@ #include "pages/flashpage.h" #include "pages/outputcalibrationpage.h" #include "pages/notyetimplementedpage.h" +#include "pages/rebootpage.h" #include "extensionsystem/pluginmanager.h" #include "vehicleconfigurationhelper.h" #include "actuatorsettings.h" @@ -105,6 +106,13 @@ int SetupWizard::nextId() const case PAGE_SUMMARY: return PAGE_LEVELLING; case PAGE_FLASH: + if(isRestartNeeded()) { + return PAGE_REBOOT; + } + else { + return PAGE_END; + } + case PAGE_REBOOT: return PAGE_END; case PAGE_NOTYETIMPLEMENTED: return PAGE_END; @@ -251,6 +259,7 @@ void SetupWizard::createPages() setPage(PAGE_CALIBRATION, new OutputCalibrationPage(this)); setPage(PAGE_SUMMARY, new SummaryPage(this)); setPage(PAGE_FLASH, new FlashPage(this)); + setPage(PAGE_REBOOT, new RebootPage(this)); setPage(PAGE_NOTYETIMPLEMENTED, new NotYetImplementedPage(this)); setPage(PAGE_END, new EndPage(this)); diff --git a/ground/openpilotgcs/src/plugins/setupwizard/setupwizard.h b/ground/openpilotgcs/src/plugins/setupwizard/setupwizard.h index 0b793a56d..8c908e92a 100644 --- a/ground/openpilotgcs/src/plugins/setupwizard/setupwizard.h +++ b/ground/openpilotgcs/src/plugins/setupwizard/setupwizard.h @@ -83,7 +83,7 @@ public: private: enum {PAGE_START, PAGE_CONTROLLER, PAGE_VEHICLES, PAGE_MULTI, PAGE_FIXEDWING, PAGE_HELI, PAGE_SURFACE, PAGE_INPUT, PAGE_OUTPUT, PAGE_LEVELLING, PAGE_CALIBRATION, - PAGE_FLASH, PAGE_SUMMARY, PAGE_NOTYETIMPLEMENTED, PAGE_END}; + PAGE_FLASH, PAGE_SUMMARY, PAGE_NOTYETIMPLEMENTED, PAGE_REBOOT, PAGE_END}; void createPages(); CONTROLLER_TYPE m_controllerType; diff --git a/ground/openpilotgcs/src/plugins/setupwizard/setupwizard.pro b/ground/openpilotgcs/src/plugins/setupwizard/setupwizard.pro index 977a99900..e94f4a4a4 100644 --- a/ground/openpilotgcs/src/plugins/setupwizard/setupwizard.pro +++ b/ground/openpilotgcs/src/plugins/setupwizard/setupwizard.pro @@ -30,7 +30,8 @@ HEADERS += setupwizardplugin.h \ vehicleconfigurationhelper.h \ connectiondiagram.h \ pages/outputcalibrationpage.h \ - outputcalibrationutil.h + outputcalibrationutil.h \ + pages/rebootpage.h SOURCES += setupwizardplugin.cpp \ setupwizard.cpp \ @@ -54,7 +55,8 @@ SOURCES += setupwizardplugin.cpp \ vehicleconfigurationhelper.cpp \ connectiondiagram.cpp \ pages/outputcalibrationpage.cpp \ - outputcalibrationutil.cpp + outputcalibrationutil.cpp \ + pages/rebootpage.cpp OTHER_FILES += SetupWizard.pluginspec @@ -74,7 +76,8 @@ FORMS += \ pages/flashpage.ui \ pages/levellingpage.ui \ connectiondiagram.ui \ - pages/outputcalibrationpage.ui + pages/outputcalibrationpage.ui \ + pages/rebootpage.ui RESOURCES += \ wizardResources.qrc diff --git a/ground/openpilotgcs/src/plugins/setupwizard/setupwizardplugin.cpp b/ground/openpilotgcs/src/plugins/setupwizard/setupwizardplugin.cpp index 9f5b5c67b..d36a747be 100644 --- a/ground/openpilotgcs/src/plugins/setupwizard/setupwizardplugin.cpp +++ b/ground/openpilotgcs/src/plugins/setupwizard/setupwizardplugin.cpp @@ -35,6 +35,7 @@ #include #include #include +#include SetupWizardPlugin::SetupWizardPlugin() { @@ -58,8 +59,10 @@ bool SetupWizardPlugin::initialize(const QStringList& args, QString *errMsg) "SetupWizardPlugin.ShowSetupWizard", QList() << Core::Constants::C_GLOBAL_ID); - cmd->setDefaultKeySequence(QKeySequence("Ctrl+W")); - cmd->action()->setText(tr("OpenPilot Setup Wizard")); + cmd->setDefaultKeySequence(QKeySequence("Ctrl+V")); + cmd->action()->setText(tr("Vehicle Setup Wizard")); + + Core::ModeManager::instance()->addAction(cmd, 1); ac->menu()->addSeparator(); ac->appendGroup("Wizard"); diff --git a/ground/openpilotgcs/src/plugins/welcome/qml/main.qml b/ground/openpilotgcs/src/plugins/welcome/qml/main.qml index f2f2a302c..ea370db82 100644 --- a/ground/openpilotgcs/src/plugins/welcome/qml/main.qml +++ b/ground/openpilotgcs/src/plugins/welcome/qml/main.qml @@ -36,12 +36,12 @@ Rectangle { WelcomePageButton { baseIconName: "bttn-vehwizard" - onClicked: welcomePlugin.openPage("VehWizard") + onClicked: welcomePlugin.triggerAction("SetupWizardPlugin.ShowSetupWizard") } WelcomePageButton { baseIconName: "bttn-txwizard" - onClicked: welcomePlugin.openPage("TxWizard") + onClicked: welcomePlugin.triggerAction("ConfigPlugin.ShowInputWizard") } } diff --git a/ground/openpilotgcs/src/plugins/welcome/welcomemode.cpp b/ground/openpilotgcs/src/plugins/welcome/welcomemode.cpp index cf36b3036..814a04bf4 100644 --- a/ground/openpilotgcs/src/plugins/welcome/welcomemode.cpp +++ b/ground/openpilotgcs/src/plugins/welcome/welcomemode.cpp @@ -127,4 +127,9 @@ void WelcomeMode::openPage(const QString &page) Core::ModeManager::instance()->activateModeByWorkspaceName(page); } +void WelcomeMode::triggerAction(const QString &actionId) +{ + Core::ModeManager::instance()->triggerAction(actionId); +} + } // namespace Welcome diff --git a/ground/openpilotgcs/src/plugins/welcome/welcomemode.h b/ground/openpilotgcs/src/plugins/welcome/welcomemode.h index 24b47613e..c1b259552 100644 --- a/ground/openpilotgcs/src/plugins/welcome/welcomemode.h +++ b/ground/openpilotgcs/src/plugins/welcome/welcomemode.h @@ -65,6 +65,7 @@ public: public slots: void openUrl(const QString &url); void openPage(const QString &page); + void triggerAction(const QString &actionId); private: WelcomeModePrivate *m_d; From 7363a2a266a23fd038118db3173e32b16115df91 Mon Sep 17 00:00:00 2001 From: Fredrik Arvidsson Date: Mon, 17 Sep 2012 07:12:30 +0200 Subject: [PATCH 036/105] OP-39 Unmade the mistake :) --- .../opmapcontrol/src/internals/projections/lks94projection.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ground/openpilotgcs/src/libs/opmapcontrol/src/internals/projections/lks94projection.h b/ground/openpilotgcs/src/libs/opmapcontrol/src/internals/projections/lks94projection.h index d32b6ee1c..d3e09b868 100644 --- a/ground/openpilotgcs/src/libs/opmapcontrol/src/internals/projections/lks94projection.h +++ b/ground/openpilotgcs/src/libs/opmapcontrol/src/internals/projections/lks94projection.h @@ -28,7 +28,7 @@ #define LKS94PROJECTION_H #include #include "cmath" -#include "C:/Users/Fredrik/development/OpenPilot/ground/openpilotgcs/src/libs/opmapcontrol/src/internals/pureprojection.h" +#include "../pureprojection.h" namespace projections { From b9597e96f911df5fe319787456dd3bd9a9e013e7 Mon Sep 17 00:00:00 2001 From: David Ankers Date: Mon, 17 Sep 2012 22:11:51 +1000 Subject: [PATCH 037/105] Spelling fix with input wizard, add a t to transmitter spotted by Drifter. Conflicts: ground/openpilotgcs/src/plugins/config/configinputwidget.cpp --- ground/openpilotgcs/src/plugins/config/configinputwidget.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ground/openpilotgcs/src/plugins/config/configinputwidget.cpp b/ground/openpilotgcs/src/plugins/config/configinputwidget.cpp index 5a4e7c176..47d713cd2 100644 --- a/ground/openpilotgcs/src/plugins/config/configinputwidget.cpp +++ b/ground/openpilotgcs/src/plugins/config/configinputwidget.cpp @@ -438,7 +438,7 @@ void ConfigInputWidget::wizardSetUpStep(enum wizardSteps step) m_config->graphicsView->setVisible(true); m_config->graphicsView->fitInView(m_txBackground, Qt::KeepAspectRatio ); setTxMovement(nothing); - m_config->wzText->setText(tr("Please choose your transmiter type.\n" + m_config->wzText->setText(tr("Please choose your transmitter type.\n" "Mode 1 means your throttle stick is on the right\n" "Mode 2 means your throttle stick is on the left\n")); m_config->wzBack->setEnabled(true); @@ -454,7 +454,7 @@ void ConfigInputWidget::wizardSetUpStep(enum wizardSteps step) break; case wizardChooseType: { - m_config->wzText->setText(tr("Please choose your transmiter mode.\n" + m_config->wzText->setText(tr("Please choose your transmitter mode.\n" "Acro means normal transmitter\n" "Heli means there is a collective pitch and throttle input\n" "If you are using a heli transmitter please engage throttle hold now please.\n")); From 715aa6543bb88af4cfa45b18b187a033816b438a Mon Sep 17 00:00:00 2001 From: David Ankers Date: Mon, 17 Sep 2012 22:26:21 +1000 Subject: [PATCH 038/105] Fixed a couple of more spelling mistakes spotted by Drifter (Thanks!) --- .../src/plugins/setupwizard/pages/outputcalibrationpage.ui | 2 +- .../openpilotgcs/src/plugins/setupwizard/pages/summarypage.ui | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/ground/openpilotgcs/src/plugins/setupwizard/pages/outputcalibrationpage.ui b/ground/openpilotgcs/src/plugins/setupwizard/pages/outputcalibrationpage.ui index f170685be..69e00c08e 100644 --- a/ground/openpilotgcs/src/plugins/setupwizard/pages/outputcalibrationpage.ui +++ b/ground/openpilotgcs/src/plugins/setupwizard/pages/outputcalibrationpage.ui @@ -49,7 +49,7 @@ - <html><head/><body><p><span style=" font-size:10pt;">It is now time to calibrate the output levels for the signals controlling your vehichle. </span></p><p align="center"><span style=" font-size:10pt; font-weight:600; color:#ff0000;">VERY IMPORTANT!</span><span style=" font-size:10pt;"><br/></span><span style=" font-size:10pt; font-weight:600; color:#ff0000;">REMOVE ALL PROPELLERS FROM THE VEHICHLE BEFORE PROCEEDING!</span></p><p><span style=" font-size:10pt; color:#000000;">Connect all components according to the illustration on the previous page and provide power using an external power supply like a battery to continue.</span></p><p><span style=" font-size:10pt;">Depending on what vehichle you have selected, both motors controlled by ESC and servos controlled directly by the OpenPilot controller may have to be calibrated. <br/>The following steps will guide you safely through this process.</span></p></body></html> + <html><head/><body><p><span style=" font-size:10pt;">It is now time to calibrate the output levels for the signals controlling your vehicle. </span></p><p align="center"><span style=" font-size:10pt; font-weight:600; color:#ff0000;">VERY IMPORTANT!</span><span style=" font-size:10pt;"><br/></span><span style=" font-size:10pt; font-weight:600; color:#ff0000;">REMOVE ALL PROPELLERS FROM THE VEHICLE BEFORE PROCEEDING!</span></p><p><span style=" font-size:10pt; color:#000000;">Connect all components according to the illustration on the previous page and provide power using an external power supply like a battery to continue.</span></p><p><span style=" font-size:10pt;">Depending on what vehicle you have selected, both motors controlled by ESC and servos controlled directly by the OpenPilot controller may have to be calibrated. <br/>The following steps will guide you safely through this process.</span></p></body></html> Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop diff --git a/ground/openpilotgcs/src/plugins/setupwizard/pages/summarypage.ui b/ground/openpilotgcs/src/plugins/setupwizard/pages/summarypage.ui index 9c054dcd1..cf9d87a86 100644 --- a/ground/openpilotgcs/src/plugins/setupwizard/pages/summarypage.ui +++ b/ground/openpilotgcs/src/plugins/setupwizard/pages/summarypage.ui @@ -29,7 +29,7 @@ p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8pt; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:12pt; font-weight:600;">OpenPilot configuration summary</span></p> <p style="-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;"><br /></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt;">The first part of this wizard is now complete. All information required to create a basic OpenPilot controller configuration for a specific vehichle has been collected.</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt;">The first part of this wizard is now complete. All information required to create a basic OpenPilot controller configuration for a specific vehicle has been collected.</span></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt;">Below is a summary of the configuration and a button that links to a diagram illustrating how to connect required hardware and the OpenPilotController with the current configuration.</span></p> <p style="-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:10pt;"><br /></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt;">To continue the wizard and go through some basic configuration steps please continue to the next step of this wizard.</span></p> From 633286ab730b90db2420482fff66514329672a03 Mon Sep 17 00:00:00 2001 From: David Ankers Date: Mon, 17 Sep 2012 22:30:01 +1000 Subject: [PATCH 039/105] Grammar change: accidently added and extra extra word. Drifter credit --- ground/openpilotgcs/src/plugins/setupwizard/pages/startpage.ui | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ground/openpilotgcs/src/plugins/setupwizard/pages/startpage.ui b/ground/openpilotgcs/src/plugins/setupwizard/pages/startpage.ui index f450724d9..7223e2aca 100644 --- a/ground/openpilotgcs/src/plugins/setupwizard/pages/startpage.ui +++ b/ground/openpilotgcs/src/plugins/setupwizard/pages/startpage.ui @@ -38,7 +38,7 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt;">This wizard will guide you through the basic steps required to setup your OpenPilot controller for the first time. You will be asked questions about your platform (multirotor/heli/fixed-wing) which this wizard will use to configure your aircraft for a safe maiden flight. </span></p> <p style="-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:10pt;"><br /></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt;">This wizard does not configure all any of the advanced settings available in the GCS Configuration. All basic and advanced configuration parameters can be modified later by using the GCS Configuration plugin.</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt;">This wizard does not configure all of the advanced settings available in the GCS Configuration. All basic and advanced configuration parameters can be modified later by using the GCS Configuration plugin.</span></p> <p style="-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:10pt;"><br /></p> <p style="-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:'Lucida Grande'; font-size:13pt;"><br /></p> <p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:12pt; font-weight:600; color:#ff0000;">WARNING: YOU MUST REMOVE ALL PROPELLERS </span></p> From 30c1523b80c0a9365886160a21a4b069465cc47c Mon Sep 17 00:00:00 2001 From: Fredrik Arvidsson Date: Mon, 17 Sep 2012 20:00:26 +0200 Subject: [PATCH 040/105] OP-39 Fixed a bug causing output rate for channel 2 and max channel rate for channel 0 to be wrong when configuring a hexacopter. --- .../src/plugins/setupwizard/vehicleconfigurationhelper.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ground/openpilotgcs/src/plugins/setupwizard/vehicleconfigurationhelper.cpp b/ground/openpilotgcs/src/plugins/setupwizard/vehicleconfigurationhelper.cpp index 42b0de356..855f24014 100644 --- a/ground/openpilotgcs/src/plugins/setupwizard/vehicleconfigurationhelper.cpp +++ b/ground/openpilotgcs/src/plugins/setupwizard/vehicleconfigurationhelper.cpp @@ -230,8 +230,8 @@ void VehicleConfigurationHelper::applyActuatorConfiguration() case VehicleConfigurationSource::MULTI_ROTOR_OCTO_V: data.ChannelUpdateFreq[0] = updateFrequence; data.ChannelUpdateFreq[1] = updateFrequence; + data.ChannelUpdateFreq[2] = updateFrequence; data.ChannelUpdateFreq[3] = updateFrequence; - data.ChannelUpdateFreq[4] = updateFrequence; break; default: break; From 57169ceeb20d133cd84450f969587247f5d95e71 Mon Sep 17 00:00:00 2001 From: Fredrik Arvidsson Date: Mon, 17 Sep 2012 21:40:42 +0200 Subject: [PATCH 041/105] OP-39 Fixed a bug when changing receiver type in wizard. The channel group type was not correctly set in manual control settings. Added support in code for all known DSM types (2/X10Bit/X11Bit). Still have to add/create GUI/Icons to enable selection of specific protocol. Renamed some enums to have better and more correct names. --- .../plugins/setupwizard/connectiondiagram.cpp | 4 +- .../plugins/setupwizard/pages/inputpage.cpp | 4 +- .../src/plugins/setupwizard/setupwizard.cpp | 8 +++- .../vehicleconfigurationhelper.cpp | 41 +++++++++++++++---- .../setupwizard/vehicleconfigurationsource.h | 2 +- 5 files changed, 47 insertions(+), 12 deletions(-) diff --git a/ground/openpilotgcs/src/plugins/setupwizard/connectiondiagram.cpp b/ground/openpilotgcs/src/plugins/setupwizard/connectiondiagram.cpp index f3dbd2dca..1b94c1cae 100644 --- a/ground/openpilotgcs/src/plugins/setupwizard/connectiondiagram.cpp +++ b/ground/openpilotgcs/src/plugins/setupwizard/connectiondiagram.cpp @@ -133,7 +133,9 @@ void ConnectionDiagram::setupGraphicsScene() case VehicleConfigurationSource::INPUT_SBUS: elementsToShow << "sbus"; break; - case VehicleConfigurationSource::INPUT_DSM: + case VehicleConfigurationSource::INPUT_DSMX10: + case VehicleConfigurationSource::INPUT_DSMX11: + case VehicleConfigurationSource::INPUT_DSM2: elementsToShow << "satellite"; break; default: diff --git a/ground/openpilotgcs/src/plugins/setupwizard/pages/inputpage.cpp b/ground/openpilotgcs/src/plugins/setupwizard/pages/inputpage.cpp index e19d850c4..b442db3a5 100644 --- a/ground/openpilotgcs/src/plugins/setupwizard/pages/inputpage.cpp +++ b/ground/openpilotgcs/src/plugins/setupwizard/pages/inputpage.cpp @@ -57,7 +57,7 @@ bool InputPage::validatePage() getWizard()->setInputType(SetupWizard::INPUT_SBUS); } else if(ui->spectrumButton->isChecked()) { - getWizard()->setInputType(SetupWizard::INPUT_DSM); + getWizard()->setInputType(SetupWizard::INPUT_DSM2); } else { getWizard()->setInputType(SetupWizard::INPUT_PWM); @@ -82,7 +82,7 @@ bool InputPage::restartNeeded(VehicleConfigurationSource::INPUT_TYPE selectedTyp return data.CC_RcvrPort != HwSettings::CC_RCVRPORT_PPM; case VehicleConfigurationSource::INPUT_SBUS: return data.CC_MainPort != HwSettings::CC_MAINPORT_SBUS; - case VehicleConfigurationSource::INPUT_DSM: + case VehicleConfigurationSource::INPUT_DSM2: // TODO: Handle all of the DSM types ?? Which is most common? return data.CC_MainPort != HwSettings::CC_MAINPORT_DSM2; default: diff --git a/ground/openpilotgcs/src/plugins/setupwizard/setupwizard.cpp b/ground/openpilotgcs/src/plugins/setupwizard/setupwizard.cpp index 993e632bf..95fc75747 100644 --- a/ground/openpilotgcs/src/plugins/setupwizard/setupwizard.cpp +++ b/ground/openpilotgcs/src/plugins/setupwizard/setupwizard.cpp @@ -217,9 +217,15 @@ QString SetupWizard::getSummaryText() case INPUT_SBUS: summary.append(tr("Futaba S.Bus")); break; - case INPUT_DSM: + case INPUT_DSM2: summary.append(tr("Spectrum satellite (DSM2)")); break; + case INPUT_DSMX10: + summary.append(tr("Spectrum satellite (DSMX10BIT)")); + break; + case INPUT_DSMX11: + summary.append(tr("Spectrum satellite (DSMX11BIT)")); + break; default: summary.append(tr("Unknown")); } diff --git a/ground/openpilotgcs/src/plugins/setupwizard/vehicleconfigurationhelper.cpp b/ground/openpilotgcs/src/plugins/setupwizard/vehicleconfigurationhelper.cpp index 855f24014..add4e8a29 100644 --- a/ground/openpilotgcs/src/plugins/setupwizard/vehicleconfigurationhelper.cpp +++ b/ground/openpilotgcs/src/plugins/setupwizard/vehicleconfigurationhelper.cpp @@ -118,8 +118,13 @@ void VehicleConfigurationHelper::applyHardwareConfiguration() case VehicleConfigurationSource::INPUT_SBUS: data.CC_MainPort = HwSettings::CC_MAINPORT_SBUS; break; - case VehicleConfigurationSource::INPUT_DSM: - // TODO: Handle all of the DSM types ?? Which is most common? + case VehicleConfigurationSource::INPUT_DSMX10: + data.CC_MainPort = HwSettings::CC_MAINPORT_DSMX10BIT; + break; + case VehicleConfigurationSource::INPUT_DSMX11: + data.CC_MainPort = HwSettings::CC_MAINPORT_DSMX11BIT; + break; + case VehicleConfigurationSource::INPUT_DSM2: data.CC_MainPort = HwSettings::CC_MAINPORT_DSM2; break; default: @@ -357,11 +362,33 @@ void VehicleConfigurationHelper::applyManualControlDefaults() ManualControlSettings *mcSettings = ManualControlSettings::GetInstance(m_uavoManager); Q_ASSERT(mcSettings); ManualControlSettings::DataFields cData = mcSettings->getData(); - cData.ChannelGroups[ManualControlSettings::CHANNELGROUPS_THROTTLE] = ManualControlSettings::CHANNELGROUPS_PWM; - cData.ChannelGroups[ManualControlSettings::CHANNELGROUPS_ROLL] = ManualControlSettings::CHANNELGROUPS_PWM; - cData.ChannelGroups[ManualControlSettings::CHANNELGROUPS_YAW] = ManualControlSettings::CHANNELGROUPS_PWM; - cData.ChannelGroups[ManualControlSettings::CHANNELGROUPS_PITCH] = ManualControlSettings::CHANNELGROUPS_PWM; - cData.ChannelGroups[ManualControlSettings::CHANNELGROUPS_FLIGHTMODE] = ManualControlSettings::CHANNELGROUPS_PWM; + + ManualControlSettings::ChannelGroupsOptions channelType = ManualControlSettings::CHANNELGROUPS_PWM; + switch(m_configSource->getInputType()) + { + case VehicleConfigurationSource::INPUT_PWM: + channelType = ManualControlSettings::CHANNELGROUPS_PWM; + break; + case VehicleConfigurationSource::INPUT_PPM: + channelType = ManualControlSettings::CHANNELGROUPS_PPM; + break; + case VehicleConfigurationSource::INPUT_SBUS: + channelType = ManualControlSettings::CHANNELGROUPS_SBUS; + break; + case VehicleConfigurationSource::INPUT_DSMX10: + case VehicleConfigurationSource::INPUT_DSMX11: + case VehicleConfigurationSource::INPUT_DSM2: + channelType = ManualControlSettings::CHANNELGROUPS_DSMMAINPORT; + break; + default: + break; + } + + cData.ChannelGroups[ManualControlSettings::CHANNELGROUPS_THROTTLE] = channelType; + cData.ChannelGroups[ManualControlSettings::CHANNELGROUPS_ROLL] = channelType; + cData.ChannelGroups[ManualControlSettings::CHANNELGROUPS_YAW] = channelType; + cData.ChannelGroups[ManualControlSettings::CHANNELGROUPS_PITCH] = channelType; + cData.ChannelGroups[ManualControlSettings::CHANNELGROUPS_FLIGHTMODE] = channelType; cData.ChannelNumber[ManualControlSettings::CHANNELGROUPS_THROTTLE] = 1; cData.ChannelNumber[ManualControlSettings::CHANNELGROUPS_ROLL] = 2; diff --git a/ground/openpilotgcs/src/plugins/setupwizard/vehicleconfigurationsource.h b/ground/openpilotgcs/src/plugins/setupwizard/vehicleconfigurationsource.h index f96402614..6332ee23b 100644 --- a/ground/openpilotgcs/src/plugins/setupwizard/vehicleconfigurationsource.h +++ b/ground/openpilotgcs/src/plugins/setupwizard/vehicleconfigurationsource.h @@ -63,7 +63,7 @@ public: MULTI_ROTOR_OCTO_V, MULTI_ROTOR_OCTO_COAX_X, MULTI_ROTOR_OCTO_COAX_PLUS, FIXED_WING_AILERON, FIXED_WING_VTAIL, HELI_CCPM}; enum ESC_TYPE {ESC_RAPID, ESC_LEGACY, ESC_UNKNOWN}; - enum INPUT_TYPE {INPUT_PWM, INPUT_PPM, INPUT_SBUS, INPUT_DSM, INPUT_UNKNOWN}; + enum INPUT_TYPE {INPUT_PWM, INPUT_PPM, INPUT_SBUS, INPUT_DSMX10, INPUT_DSMX11, INPUT_DSM2, INPUT_UNKNOWN}; virtual VehicleConfigurationSource::CONTROLLER_TYPE getControllerType() const = 0; virtual VehicleConfigurationSource::VEHICLE_TYPE getVehicleType() const = 0; From d80954e13a75ee9c31d6179336f47ac72a5f04ad Mon Sep 17 00:00:00 2001 From: Fredrik Arvidsson Date: Tue, 18 Sep 2012 12:48:57 +0200 Subject: [PATCH 042/105] OP-39 Changed the layout of the welcome screen and placed the wizard buttons grouped with all other buttons. --- .../src/plugins/welcome/qml/main.qml | 37 +++++++------------ 1 file changed, 13 insertions(+), 24 deletions(-) diff --git a/ground/openpilotgcs/src/plugins/welcome/qml/main.qml b/ground/openpilotgcs/src/plugins/welcome/qml/main.qml index ea370db82..8815a352a 100644 --- a/ground/openpilotgcs/src/plugins/welcome/qml/main.qml +++ b/ground/openpilotgcs/src/plugins/welcome/qml/main.qml @@ -24,27 +24,6 @@ Rectangle { smooth: true } - Column { - id: wizarButtonsColumn - - anchors { - top: parent.top - right: parent.right - margins: 8 - } - spacing: 8 - - WelcomePageButton { - baseIconName: "bttn-vehwizard" - onClicked: welcomePlugin.triggerAction("SetupWizardPlugin.ShowSetupWizard") - } - - WelcomePageButton { - baseIconName: "bttn-txwizard" - onClicked: welcomePlugin.triggerAction("ConfigPlugin.ShowInputWizard") - } - } - Column { id: buttonsGrid @@ -58,8 +37,7 @@ Rectangle { Row { //if the buttons grid overlaps vertically with the wizard buttons, //move it left to use only the space left to wizard buttons - property real availableWidth: buttonsGrid.y > wizarButtonsColumn.y+wizarButtonsColumn.height ? - container.width : wizarButtonsColumn.x + property real availableWidth: container.width x: (availableWidth-width)/2 spacing: 16 @@ -74,7 +52,7 @@ Rectangle { Grid { id: buttons - columns: 3 + columns: 4 spacing: 4 anchors.verticalCenter: parent.verticalCenter @@ -97,6 +75,11 @@ Rectangle { } WelcomePageButton { + baseIconName: "bttn-vehwizard" + onClicked: welcomePlugin.triggerAction("SetupWizardPlugin.ShowSetupWizard") + } + + WelcomePageButton { baseIconName: "scopes" label: "Scopes" onClicked: welcomePlugin.openPage("Scopes") @@ -113,6 +96,12 @@ Rectangle { label: "Firmware" onClicked: welcomePlugin.openPage("Firmware") } + + WelcomePageButton { + baseIconName: "bttn-txwizard" + onClicked: welcomePlugin.triggerAction("ConfigPlugin.ShowInputWizard") + } + } //icons grid } // images row From 8f8dd1261594d2cdea707993891fd560fa53df8b Mon Sep 17 00:00:00 2001 From: Kevin Vertucio Date: Wed, 19 Sep 2012 10:14:59 -0400 Subject: [PATCH 043/105] copy revisions and corrections in SetupWizard plugin Signed-off-by: Kevin Vertucio --- .../plugins/setupwizard/pages/outputpage.ui | 14 ++++---- .../plugins/setupwizard/pages/startpage.ui | 35 +++++++++++-------- 2 files changed, 28 insertions(+), 21 deletions(-) diff --git a/ground/openpilotgcs/src/plugins/setupwizard/pages/outputpage.ui b/ground/openpilotgcs/src/plugins/setupwizard/pages/outputpage.ui index 45090f1e6..ca335eabc 100644 --- a/ground/openpilotgcs/src/plugins/setupwizard/pages/outputpage.ui +++ b/ground/openpilotgcs/src/plugins/setupwizard/pages/outputpage.ui @@ -26,12 +26,14 @@ <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:12pt; font-weight:600;">OpenPilot basic output signal configuration</span></p> -<p style="-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;"></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt;">To set an optimal configuration of the output signals powering your motors used by your OpenPilot controller the wizard needs to know what type of Electronic Speed Controllers (ESC) you will use and what their capabilities are.</span></p> -<p style="-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:10pt;"></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt;">Please select one of the options below. If you are unsure about the capabilities of your ESC:s just leave the default option selected and continue the wizard.</span></p></body></html> +</style></head><body style=" font-family:'Lucida Grande'; font-size:13pt; font-weight:400; font-style:normal;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'MS Shell Dlg 2'; font-size:12pt; font-weight:600;">OpenPilot basic output signal configuration</span></p> +<p style="-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:'MS Shell Dlg 2'; font-size:12pt; font-weight:600;"></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'MS Shell Dlg 2'; font-size:10pt;">To set an optimal configuration of the output signals powering your motors used by your OpenPilot controller the wizard needs to know what type of Electronic Speed Controllers (ESC) you will use and what their capabilities are.</span></p> +<p style="-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:'MS Shell Dlg 2'; font-size:10pt;"></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'MS Shell Dlg 2'; font-size:10pt;">Please select one of the options below. If you are unsure about the capabilities of your ESC:s just leave the default option selected and continue the wizard.</span></p> +<p style="-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:'MS Shell Dlg 2'; font-size:10pt;"></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'MS Shell Dlg 2'; font-size:10pt;">To read more regarding ESC refresh rates, please see </span><a href="http://wiki.openpilot.org/display/Doc/TurboPWM+ESC%27s"><span style=" text-decoration: underline; color:#0000ff;">this article</span></a><span style=" font-family:'MS Shell Dlg 2'; font-size:10pt;"> in the OpenPilot WIki</span></p></body></html> Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop diff --git a/ground/openpilotgcs/src/plugins/setupwizard/pages/startpage.ui b/ground/openpilotgcs/src/plugins/setupwizard/pages/startpage.ui index 7223e2aca..48c41f15f 100644 --- a/ground/openpilotgcs/src/plugins/setupwizard/pages/startpage.ui +++ b/ground/openpilotgcs/src/plugins/setupwizard/pages/startpage.ui @@ -32,22 +32,27 @@ <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:12pt; font-weight:600;">Welcome to the OpenPilot Setup Wizard</span></p> -<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p> +</style></head><body style=" font-family:'Lucida Grande'; font-size:13pt; font-weight:400; font-style:normal;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'MS Shell Dlg 2'; font-size:12pt; font-weight:600;">Welcome to the OpenPilot Setup Wizard</span></p> +<p style="-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:'MS Shell Dlg 2'; font-size:8pt;"></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'MS Shell Dlg 2'; font-size:8pt;"><br /></span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'MS Shell Dlg 2'; font-size:10pt;">This wizard will guide you through the basic steps required to setup your OpenPilot controller for the first time. You will be asked questions about your platform (multirotor/heli/fixed-wing) which this wizard will use to configure your aircraft for your maiden flight. </span></p> +<p style="-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:'MS Shell Dlg 2'; font-size:10pt;"></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'MS Shell Dlg 2'; font-size:10pt;"><br /></span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'MS Shell Dlg 2'; font-size:10pt;">This wizard does not configure all of the advanced settings available in the GCS Configuration. All basic and advanced configuration parameters can be modified later by using the GCS Configuration plugin.</span></p> +<p style="-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:'MS Shell Dlg 2'; font-size:10pt;"></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'MS Shell Dlg 2'; font-size:10pt;"><br /></span></p> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt;">This wizard will guide you through the basic steps required to setup your OpenPilot controller for the first time. You will be asked questions about your platform (multirotor/heli/fixed-wing) which this wizard will use to configure your aircraft for a safe maiden flight. </span></p> -<p style="-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:10pt;"><br /></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt;">This wizard does not configure all of the advanced settings available in the GCS Configuration. All basic and advanced configuration parameters can be modified later by using the GCS Configuration plugin.</span></p> -<p style="-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:10pt;"><br /></p> -<p style="-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:'Lucida Grande'; font-size:13pt;"><br /></p> -<p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:12pt; font-weight:600; color:#ff0000;">WARNING: YOU MUST REMOVE ALL PROPELLERS </span></p> -<p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:12pt; font-weight:600; color:#ff0000;">FROM THE VEHICLE BEFORE PROCEEDING!</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt;"><br /></span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt;">Disregarding this warning puts you at</span><span style=" font-size:10pt; font-weight:600; color:#000000;"> risk of very serious injury</span><span style=" font-size:10pt;">!</span></p> -<p style="-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:10pt;"><br /></p> -<p style="-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:'Lucida Grande'; font-size:13pt;"><br /></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt;">Now that your props are removed we can get started. Ready?</span></p></body></html> +<p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'MS Shell Dlg 2'; font-size:12pt; font-weight:600; color:#ff0000;">WARNING: YOU MUST REMOVE ALL PROPELLERS </span></p> +<p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'MS Shell Dlg 2'; font-size:12pt; font-weight:600; color:#ff0000;">FROM THE VEHICLE BEFORE PROCEEDING!</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'MS Shell Dlg 2'; font-size:10pt;"><br /></span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'MS Shell Dlg 2'; font-size:10pt;">Disregarding this warning puts you at</span><span style=" font-family:'MS Shell Dlg 2'; font-size:10pt; font-weight:600; color:#000000;"> risk of very serious injury</span><span style=" font-family:'MS Shell Dlg 2'; font-size:10pt;">!</span></p> +<p style="-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:'MS Shell Dlg 2'; font-size:10pt;"></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'MS Shell Dlg 2'; font-size:10pt;"><br /></span></p> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'MS Shell Dlg 2'; font-size:10pt;">Now that your props are removed we can get started. Ready?</span></p></body></html> Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop From 607497758fe0dd9716e4a4827fbb6b126ef81b50 Mon Sep 17 00:00:00 2001 From: Fredrik Arvidsson Date: Thu, 20 Sep 2012 23:08:09 +0200 Subject: [PATCH 044/105] OP-39 Changed to one single wizard button on the welcome page. KISS :) --- .../plugins/setupwizard/pages/rebootpage.ui | 4 +-- .../plugins/welcome/qml/images/wizard-off.png | Bin 0 -> 22409 bytes .../plugins/welcome/qml/images/wizard-on.png | Bin 0 -> 22200 bytes .../src/plugins/welcome/qml/main.qml | 23 ++++++++---------- .../src/plugins/welcome/welcome.qrc | 2 ++ 5 files changed, 14 insertions(+), 15 deletions(-) create mode 100644 ground/openpilotgcs/src/plugins/welcome/qml/images/wizard-off.png create mode 100644 ground/openpilotgcs/src/plugins/welcome/qml/images/wizard-on.png diff --git a/ground/openpilotgcs/src/plugins/setupwizard/pages/rebootpage.ui b/ground/openpilotgcs/src/plugins/setupwizard/pages/rebootpage.ui index 4218fa81b..b808d13b1 100644 --- a/ground/openpilotgcs/src/plugins/setupwizard/pages/rebootpage.ui +++ b/ground/openpilotgcs/src/plugins/setupwizard/pages/rebootpage.ui @@ -42,7 +42,7 @@ p, li { white-space: pre-wrap; } 50 180 501 - 61 + 71 @@ -50,7 +50,7 @@ p, li { white-space: pre-wrap; } <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8pt; font-weight:400; font-style:normal;"> -<p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt; color:#000000;">The configuration created by the wizard contains settings that require a reboot of your controller. Please power cycle the controller before continuing.</span></p></body></html> +<p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt; color:#000000;">The configuration created by the wizard contains settings that require a reboot of your controller. Please power cycle the controller before continuing. To power cycle the controller remove all batteries and the usb cable for at least 30 seconds.</span></p></body></html> Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop diff --git a/ground/openpilotgcs/src/plugins/welcome/qml/images/wizard-off.png b/ground/openpilotgcs/src/plugins/welcome/qml/images/wizard-off.png new file mode 100644 index 0000000000000000000000000000000000000000..6e00e1526bd7fb15369eab73f5dd7d46b1709133 GIT binary patch literal 22409 zcmbTdWmsE5+b)W`6n8BWJh;0?<%=AL+vrZO%TB^Ck#0FZoSbN(e$l7_>*wd?mtsU)k?5*try+-UM5D<`^ob`-+jWphf*?NGv zt^d{G4gh22&Co!uoF&)T~g>7DH)84U$BfEu3i_D;?!LEiSd zL7IBDL9Vu4gNic?E!?0-~Jsd_Z0x4=*1NP?(DsC?+T@2IQsx?++u~ znzx;Un2v(df7^oJNisV5`g)4-@IW9CZU{fOhqogSuc)Xf50HoS@qeuCqZjCD&!c1SHBPGQ$7iwsW?FLnH#^^j5k{+JroB^c1qqJVEX?cEav=w@ZkSD^8b>x`~QO)58N4^f9di6N|*mBg6H7B%m1DH z@SFeLeeB)gea0K!IV@{jXAlr{TT~Tf^#YcTJJD;H76U784EIm-ws$(jy&N5d_Iflv z1Guv@0cx28PVw_Zc6StMZ{r+?&qiXw8J%Bst`!tnT4ND}hJuU&{<$>Z?O|H6nt z-i(MNZcfJ6V_NQi`WTT!Zc`)K`ijiy-IQx&!v$&*HfQ<~!$Zd|It}l@D_cKxE~X9Z z+m2mqN_;Cf&x_~;ou`&3>u}2+MYy^Te{EpTOLRd9Zq#XB2tQEC#3hK2imF_~X38{p z*c1NPf4`Hu7cmRf!r>h-3YITV5|O9N_BDU`34_6;T|OGrA^iv<=Z4MF>mn!Nn;lze zUo?h3Tzl+Z9=`mUcEkxdMx|*!VQJW-M>HmNEShtdQcAetP5)Iuq4C&3P=?`oh;4jU z-FwN!bmx(V@?bmtvf4`Dzn_Lf*Im^UFH8)`Zdz{(yxhInUpBe2Mo&iO!vRWpYP+R| z1P2G-Y;0_toptCwC$B%Bu}?QDMsIr2>}KQU7y~0-HP+K%oKHJ~FB{%6b)y>ElNx+neWB z{bGsGZzr(EZRwCb$gnV;q+wKs;TROV83T#|tr3F`NLpC?7yuaXXoh>UT9!BCUR0l- zlc|KCxkB5Fvh1kYGmtd32&AU;H+5iLp$})FyV!p`)?O~hJP%D2E98#I0iW?+)rvvW zZiigBkOyt^isXL4S`ph%=Oa0PpXJgWaZgT7g}XgeeNlpy)_X607ifq;Dw^o$V zsYL#MYDcvFtF<1uogqsQq~Ly6|uq z;lr))jQzN)Ji`GE>#420NLSr=S?dOzFJ`SR?429PVD|Cp>L`BZ9-a5z=}ch2=y$7F zgaibvZ)Ibx#xhe=ev3x-am>9cA5gZNdja~|+63f5+~ zkecE({@6neOpnRfZ_(;FEz&zTBHeUdhJY6^fjSz5=c0}aU|OSAO;X)>0XKT#waVy! zLd;IkLr#L5OF&Qyf!a|-|9S&Op^eTG)}xYkVNbVIMN>p54U{2}1tYLFPhU;vGhjZJE4F+VrD7@ z2Eel$G3Ik{lEG_`Tx=Xo)sco#X9NNFwm_sDAwq@rKR0U;iMR5z%cWWlk;#l`A_!!h zo4;q!!Xq@5kI>nB6x}`De85inJGv)J8vTs|EYyN;+Nb%2akvVegn|Yc*N
ChZ$4twtUA#h6w_Yv7+|i zp9(GvVx4tfCnS)GOceaK8V|r&!L_(GN)BN9-B!-$SSTh)fy@#N#VMSz+WCk#(}J5r z$qO|z3v8*@D#OPVI@7k=V<16m9$u^#|HMjt6YTcx^rixFrtax<;OR8WYQ{b0< z$8q669F$7wHc3HIpUx>1+9(NU@2y-IJKr(HY5;eCWCI=Z&>LxXX=`?@-!5X)8EnM! zkXco`b}NFG*^$(+2cQE@6wGL9I+$g3>^HoTHrXZ?4>ODzN{>G_SSU`z1@OhMD~{La zjVzdeA^OqS<$@yNqsLJoGnVtwLgLNyeo>M8kOEayW7MY2uoMV4gPP^YhDi|*B4 z&+25Km~h>p=k`Z5GA%kg^oT!-qoLq5hPw`Ye_pJ%`LNBDN?h%dqEYG!nBK`C~+ z_ntr&lf~VGeRIGRDBj9tHe#=P5zSk3tNWcOK4;(W^6-vvH%?L%%SRLRl?N5tC2{7Q z;)m}tMZAtj@7gY)NWrIuo0pazaTiBoA&&+WYr%8IhgBrZ9cpGaj?6(9F3 zt*T$6#e5c6zpbJf0j3KpX7h6Y%6{=&EHR;$NRNIwwuCe)ii;_dZN>0$a-+U14b-%~ z6TenDuMM9W)cX*AzsZ+0t@wCDPw!*ky(^gh?z9EN#neMa)u&4}B0V1^ z!y1%FXV&$1?Bu-E@*pA?6U!|3e8@$c>Ef<3YGdM4nz~+if!% zq&v+vQ3^Mkw@MKs8{AHEi-)@T!JOT!v$D6AS8^UzDDjsDRgZf2A|l~BMKZ^c1+2#-Yo0dZAZO7=?+gVCSRyHLJ@mO^uj5=S5O?! zKe|QnPu}_DF?&TIIOT%R(@pcvC#(%&=G}FPlZWVq$>PP*LRe?UqS>V70>J8<-cl;* zJyXENg2wRU4*J-1R)!7opw#qW$a6H-U%b)t;1^pSr@u#{?<8mrrkMK zv0wSBxKaX`bfItQqNjhjt47F~5CNEQ0GN9@Z=&Lni7g^~ntsMFdcc0#5xI#xkb5zFY0eXL6VYHM)6nu}#p{wg z4PrshgVdp{7nL6`dDS+ryOusVZEU#!L5KOl>^>=n8@WgzdQ|ASKU)?RF7ZQ87<;y~ zIpQ1iEbg#)HJ*Kj@1kXnzruX`X|UYZtNZd^^xh^Ts}*0D>??Hz$wezyWHu#+Ewqi1 zu$t+(Ne8X(ebO0MuFtkUVzJj~q67OuWr!k>D3F;2o#vT)?N+A9`}a?_@3NPm5SdsG z;cxr(%)E0<%d#Q+*nupAX{C0M4Jxwnr-#uNu}vXVhD(<_3nnH~(4&8cM+VNrnPq%Y zE~T)Qdy;2mVlt9ira7ArG>sGy%UKA7Aq;|QLf;n5FbU;wQhr_+Ih$pp4X?v>Pd*xl zQZ3NF+LN)tn-bL*uZtE86#N0WqkBHuskB&L&7?|XwOVHHWf;83jACUN zHht)%s(VvkQtbmCc+?w2)YB1Tm|$h`GKlGJVN9`x#_kv(q^^0|#>Aq(PQh$hDu*%` zudh;&*^^Q!1uQEdx4O-MG-3teYQV@Y%bT3q#A1geMO@cNVE}+zoGcm)}8~gC<=ijb|Br)IVux z*l;I^phJFUc?h(sMw)&Na)X+QT0}N7Ak#kSFpx%`ABhJsgNR$=Snr|!*Q!8%EgR(D z(c!=nAG*NCR}TSx*CLVWQKh^#PtKnG;ysWQ#&>^^+s8g3Z+8p+H8cR)PYy6q+`d!Qu0%) zp;LR-C6?O2)4)0cXsd;q1%B)-&*6}E;G=hPA6|`lhvah#1#ZagV#x5Rh~?@x-Ru3X z4vv*Sz8BQ!;%1&^pRGdvB%j`L?1m^z$?LSj z(02Bww zbOElngU_4l9XWGCwZ1DFu3kIhXd7_%Q%}NQuLIw~ZHmShm9#OVGHUpchYCAPx3hTK zW<-V;1vm^u&^+jSNa?`x7t=d}>~r!3<<6$vTiupRW;eXA%}`0nRQDUb)(0KH`e&zM zBKVhjorJRB=jHKVd2>|Z26m;&GqH)GR*~OY!i}O5|3XHYe>FgxXMHk7n1~6_?VIdI zg7iLri`bHCAWzhZ?nAfVZyNMhh+D0H)HSGNx>QFs5GrCB#XCAbwfxXiaa-=kGfoKe zk3-7fN6TJv45zTwaW|iKs&=k^ZnuI&;$dA(1GSno!Z3uGh*WTq zKySy%$nFkWMr&jiR^B2eQ)Z_)pFgi>T06{QNaJDd4rTn^$Al$Txq*a1I%@uJI4ZcD ztT;#4f;Bv_&{8#4XQLzK`taEeDuWMQHHTNqTn0_Ut>u1%j%x?8Pfr0=8QI@WJIXfU zs!ac62u{&`WroB4iNTDNRP`9zoJV%Glz-dn_(x9?$>__;jSHqrqO0XQA9Ur{+)>PR zae&%JnaG#5^~{ZdZav%)3bdxc-NI=!(h&Z4h?#onG`0vaEe+{cB9F5P?blh|7O@uJ zCLa({i%aaDm?+S4>2B5eboC$b;~SyJJ_WT^Z1etfPcZE4_0OKNM)>CENHoo zWYDT2Mq8h&}bkPl!1tu$XvT40{me*eJpD}yh5tfE?nYQ8q~7doGZX3gUb(cHL(e4eDp--ctxBE)R{*In zv>jQL8d-UFTzGzicYClQQe>t?66{$yqDvmzz}j1+*$L=34HDstW7!81|R*An1>YbvV-%yRik7D zCAjF}nJRpG(B;{pyRLRw4UCc55(avkNT+Wlh*v`$(HmwcRl1-UKYPM=jf&-r0}AOh zKtwhyFbRb=kt8$Z#4oHZEZpQjO>stZ3fHw|e^zO@e3fP6fPrH{gKbUM~UEWjw zj_~U~6(@CkMz**6^S@=i})&Q?7U|DUWC;H_9p!?$CSTDzN6 z-7_Pfi+mh8psp9Y-AnDL=~YaS!wJ5x&QA75SGM=fh%Mav(~CT^!Kt5s70I53Edoea z#gimOQH#Un`9N{;hnJt_iURUK(F?e^h=C6U=4h&ucz`e-wJ#{`_|*-eaah?0NKy}B zF&a>h#Bru{rispT@qT*bFT_U*G}uvz6T5xb#IE!p%`St;jCw<8iD_*8vjKX?IW`!m zadY{LxfU(E36J;zu{+SB91`jnGGam=z^%NG>uVj=00Ri}#C#GbJnDE)JZZSXq$zh6 zQ8M&|SmMpS5Zg>wJ56)C#@yc$-i=)sVisxpZ;ULbbX%|Q`OwM!K=rM{;RjBcdl6)` z2)kHgmkjHC(lX1aMS=R3tZ@4%o!u)RAZ*rrDogU?Tbsx%Ba+~mmU8M#=Fc*qSAWFv zUz_$YCEJHboS4xWOHNP@l9@<-@83*g7et!ed+d*hN-FsPg-Iz8GX6pxc_Q5$ts zsY(aD#LnO1`E!nqkbw{-cZh&5f%tp$(DNcTnYyDmN~Nbz08ORPvx`S5OE}7i#v`Qf4{H>`EiFZIz&1@j*lGyp>c=HMk`o! z4aaSZ4h>#uyaokbp=}3EyTWc+k(WO+CXMP zwN^WUK^L_U2=G80nHY$3++U> z>@_F%VMzLl34&UZ7ywXd_N?NQ`ORnw+1BAltgpzeNGIFk(eq~vV!|UcCH2v(QmmdO zH|d1f^&z%5%`h_s~$FA+(W#7f`!WW8xh(d$%Ic|RMJ5LPb;y`^PgACb8C2@H7gFr?p( z9fNSSeyR-U5U)fkRkQ*9irszu+`ARByHH8cvc@Z0uO71EB~2MQ_W?m|Rk8cEehv$A z%v9Ql;k|a9-0ts}A-1-S+xs*Bk88#JQa`^PQ3JHe*kcDvl7Igh>YGeYAh;#MRjNO1 zIP0bU>;A!(%5DZht%~r?Ok_H=jqHrkr~C1Mg9P8q^Ks;*10(e@B+^y0nyZ2f42A8* zF*9p*Te!RAlfL0!bo$zOcXE8|hpbk2+2xf@{ju2l((E#wE879%Q$Q(B`>sPt?}glRhTxvv+~2*odZGA`)|S->j3R z=v5Hvk2*o=?Z6=hREtL*F{{AdtdFkC2jP$FA2zR<_qwE>s=>epd9>H`T?a!i?Kk|% zwDLoOt$r49$f=dnEsC2G%2)p;=!92_E<&JRr=z`&{w;xv z&J>Q)c~CBJb?2`u2|3Ii_}a5bca#?3tO}e!SGzt@CgARO%=f&zlHRwu4Bgqo8n>4e zap^D)WAj@?3%dJrTi3LFL?CL4OW_Sq2?P`_~cJT9m>7ePP1ga_Bg{x zUHogTsNB0~M*2!^aKU`#IFkEhjLropW!Df0XiJLdgWxBz_SUdK&&fHWH==GV-zNU% zO1F>i-6`pY$e|VT4-f0$T)CfI@&904sKp|4dp9o$XiV~R{S?wfC{q4<>bLb#7^-{0 zPuFy#={q@mJQf)DM6-p&)Jjh8Ar`pA=O@Pj(jWvpXB)kFmGDgrbewoHQyAOxJF}$# zTa8^dE$}>%TeU1EYRLwfx$JLDe0(iN_DLLZKxS3TE!o!@4t0i0|E%~{8%TNFCysA^ z64!G=)9h%U0y~k27EILzJLH&ipTT@Pe{@2u20Bg;N6RKr0GKDNutxkdrJTaZpsPRB z)*8c&SsYU5DRZvsuP*ai;cHj6x``69zRhw*7#X%N8*g!>!p{duhHocG@**_W_>A6Q z1n~p)y7Eswg2@`TbON%?lTVbjrfnD12-=*Woi{##GY#Szb1_;1Gb(xS6F}A!55xl9 zvp?!aE%gIgtd;cD z$+NpHG4#iBVeMeUex`D7QA7uZc#6MGc}*mU#65tQop#5l@QP*V`6nvH{UahaUo*Z9 z&EjwNHw`{=kb2`{#G63>sGebcTz50z#!5R0=n^6C8qo0YZuDCEy_%j!lE#~ZG2bU4 zh*b?%)bE0+pWEsTlJfd_*mO=HGx}T@^&{!VnX0V;RLYRCv4m=85* zg5o<$mVG)d=&%Z1zF1SuANQAbiy}RgJ3eczpmb}W$P&S~UKy?8-BPHE zjbbTCkFFg)VqJp`t(Fl<3hrYhk}UW)vZUGinusWmJJjtPaXBN{QK5F)ERBl{FBlo} zT2-Dr=F)VYbU*BzV$!(MPO;B3Cn5nb{xFZE7m>T}yt= z^Q~(nNXO9IW3sqHVe8#;%pWe#@+uFtI`kq6pOnOrN3L8c-z1@0!knf*=3R81p=W!% zi0g8F-!MoNIsM}VQ_Qha>y%Hw^TMRPH7?h1piPeWI&d>kgkq(Nh!wM?-o1*qkmBlj z{F{%%-ZRtUGnGI40lA%SSDtV+f^gLD_l0BpTKIh^$&DHPN?cz%-^*a$BV|(m;3nAr zoWAcE{uRL|10`jKYWh)OTbAEjJ1&gH_;i8%s&!oL-zrKes*t^0pZc7 zaQ`(J>}r&%rK=M&Cdy-m^LC7l)od$*h&lJ6JFO(m*!fLrxb$;5UvyGCpT%rUf;mRR ztGnG$EQwXq2;uOE6VO;q(`ick?5#}YGK@OxR3&-=i_(p*j?$fgbN?XMduT-f6Cle+ zWMRs$=c2!V5d0?({01!k;(+R2=wXEdTrEwJ!u(LC8YF}0&PrJRURWLqYq|S|l`Ypk z5Vb0F3fg$2NLE8ssu6EB=lV{7M5d95skxB#gNXu*=xqWO-%Yrbu?b>SS*KR4a<^W@ z%}X7MV}+EZ2@>o9x}*nf9U51$B^@cM+9ZALN(SEr)|&9l^D1pVM^$MpN?llVYdTo^ zN#^aj;HXC~Rog!Z`67(5ZI)EABp1)T<%A6ORcuGocj*U!)RTLGp=e}Sh0T(5Q;ckwUI*``kl%F`owQi_vG{;))Zx| z<=K{1;$>B6-Wt)h*i2GslTVS-v~t42D87~Q>U+I(ii5q+Hp&MF1pl?#zP*=ff7nYa z*4_1S)U^^1#ma)&t=T6!rnlz;{x#Bzytt6V9gX}&b5DuOIU$&zQ4D;e!(dD(K6&%D zTV(S~8y1K$DoF{v;t1!OMzzRI`)j0M9on)SFKUtcmckkuW z-(Og5EP_IcNAtayeFIb&Lz36%Z;<;+#HEL`KE%_N#Gp#}m{y-ujxO(}%5&p@8mDmD z=yIMXYX% z@W2sijsw4dz=~8->@uql&U41!N3CC?u1iaZYSS0W!M_IVk<2^!;Pam)t3R=b<>5M- zbOO#ugWzqA(qeO^n5>3`?{iR`yp$qS@XiNXwH2tj7y*6TzAu-Vguee<4M$$(ZzI&9 z4EW|xl%Imv9~-@bda29Pah3>>qA%oj%XXMyfku&IdXh3E-e*tj6=0qI$n>nu>w>A> z%@lOK-5+#PCHxSduaW7oWZZR<7+?<~!|^uhXAZCxNc-xq7RNZYUSY!Lhh-}pBxZwl z2X~Un0&m<;h(W?t{@Ft8v~(eWAqgc}uuLBwl0VYlp5NUEP}b3iL{`C6legBJC+0d^ z*nVMs5vQ_?UooF2>w@)w`+i=VB_zX8#AUo(5ubkd4;bV#v?Yylzja?L;XpsHb2ZQk z3#zfBAJ}rB;!wIZ@~%GS5D=w#?ai3TVCHFYd8SrrLUgk(C?#*Q*R|YVDe>r#%4}W$ z$_(omdPgYRiWhVa2)J{EdHJ0^e<#CVtgy24!aR#S7|jIetgLUtxXU9#*H(~O3d03e>LD+K)U@nc^*jcUzeb|!>p8Li!IBX>TBmPUNaX*!<&%MOH@I#zgi2 zQ)tQSa_-sfbdWRqbZ7lISfuRp<~NqORPd=Femy#0;guZAAqxH}5HT8=KW91EZaGXC zTG)65pB3?C)1dWwXRgJhhD{2rOr}zK7P+)e@S)iYA~El;WbSL!D0mD!<&oTuLr6Xt z1zyx99B3z!hb|xZeR-FH;iB0DNkVf5QqLcNxTv!8rJ`=gB_a_!8AfyGNHPC3k46_F& z?MoKYIH>8*pLWW2?IqaTI;0W%$G*LuBCAA26(A}Q^}Ze<`yrGuz7QO;pc7L~=Lq|pE$T`dz_qKhT5I{_j9*(j(Ea@T&d z!%>rDm%~P2b_&lf$6Wa|PbF1Yakj}LlI2}0)IOZLy=2VgtK7fV9ww`m`B|UMHuS@- zPhKIPj7}dJXc|+fmrxpQuqDo?x)P%nBa;)GLy!Q#C0H25M6N>kaq{QN*ea)s!zUTT z!U4Vn-BQ=#2S6{t<&nrNv1s#y)nQ?V_?H=s$UYY&wdz6Wxypnwa;bIJo{C!2+r#%( zDrzzp!F1aeHR6|k?7h^1LLMw+Wr4hCpL#ABXqLV+r|Gf%q_GWrkHXpDX7=N{Z;l+1 zD#+|(9b*k5bk=@-l)Hk97vTueE{ZBg@b*ikyuS3vui;OA#G6`49To6*qzJywp3R#p@RVZu z5kkLqhe^dpXUP~LXJb(@cf$*tpo9?x-PX`z161+R)HH16(T>Gxa_j|d%^Ohen^im? zvk1-i(=b6R4{md>n}0M%vyg8iyzcyh%7%c-hlF+BJ>}z`j==oHN5MAEYQKRziv_7^ zV8})3$0Szq-&<~7UW`0l?dIz3aS)A;-jwKt0dR(XI{s-8k!Rffods%0VxG6iZ!lcE zY_nxTO?YDKn_hK#N_m(g!7S63!4#=*B?P2#fmEsyQ3(;4aWPrI&{ljjw9%rEHpz>a z(e{Rp#zvTuGKSJ~Rtu}_WBMN{gc&2Z3dnZpt}W^r~b z=t7?xbR?i@0ISca#5&R-l_i-a&#F_{MIns;m&6 zhe<1vmt_z9lF+<^hw)rj}!W>bE3CRG6v%hn78UHH?r5DmgW6{Et!skuziQA7mDFnW~7LU-r zq|%(BnI_q&_timLL`frIrq>_mc4IXUE2}XQeWmNEePWqx`>YnAI3?N1Vo5pFGLdeP zaweDnFLx{B$`Zfjx3^P;ft~NIpfY@w9J%j>x1+7O>Y}xFsQpy6`2x;7)Ii3J@tO^$ zzkiORaVYscq~jr*+6Vk`MI|rs^s>`tjo4X>8xN|=ma6GFcjgi#vHlZ_$7)e2qWAiP z#O-g1>c0;5jF+p3R2Z4D0X6gZAQj5JxbsCV9qsLOHQ*J+aPishNj~Aq3;*P_#oO_t zaFe&oWLG)p{qEAd54$1fC46tp7ASC}UQAEMPsD@fDyY(p!Zy~Xe#6v_PM!xi?7x;+ z(XjVTW8zMBY`(>2c@=irvK$FQOEsS-LS|0J{vhCln2v@R^9=~1=RMa&Qo|ACb{d!} zo1{M=u$22r$8b3^HmT!WzRuY{k;qrw*Y&ehEe1|?kyDPo7-pV{jjRQA{jr3|ycqDu z#(XBWn_c7Tf4}#~^KkA9CO>;%QMO~hd(3aq3$&)9TKn5fG)2QApSNS`FJ;L0`(gMr zmt#%vZK)$k_$o88r3-wr_Xbbt`~i8HBw(u=Tq9rH*)=@=PL|Goe_yau6ZX2i+Van5 zDrl(vM|W{vw}vSr zHS(XnY<~q5ji*rjm9fL<-vH*u9LF?l%9Gi#tt^iTfrPHv8OY$=MTg z!|u6!$PWDcRXM#ePfd2}(S!;hinJhAH4AOsjUZ$rsON<;eP1)d0aU62nS$Ya-X_(r zMEhvDr_`d8 z1Z<3nUX$6HyXViluD*g3&n!KhNeu{PFkv_FZ7F_~g!Nt-eEjBPnFIOq!+{ulLDHX; zXjFRn&2&1(b3u>7q?uj!UNY7PNp5%s84axAO}H{Fp4&-y@_Oc2(Gwe*x%#m6m$#$O zog%7M`||mUM-G+g-pHl0Sxb}#&Cr+#IgyGyha)KGZdU78Tc_!o*$-C9 z`m2UCCPXsE$$lUkPKoCj)x!c^{z$?&V5NYCIuStj%og=3hRr9^X2;F6-Q+Ug#X zlFJ%=Q{~irPbzR9bB6FC>u-f*v5x7{BEqfx3G$dHuJ<5sd6j zf*w-Ugn(qeVTXnfI_Xv_i3J-w26z)mSgxy7+!pgj>Gyj}6G8y4Xd9eu z=T|xe&!_6vBr3#A^7p_I%KFmTuy4!}Unbj8>ztuAapalsUB1uu(aw*Uq%y{}|Kazc z0C<(Q^de)qd-Nh0mr@g;&HGv3*=<0CeFFMW*sk(nmeo8C2)-gs`o&`o(pkF~FT~O{x5J%$ng#NIEW>EM)}&+B3B7Gf z#7ux6D=zd^-D*5rFM@}o@+(>JCu|T(QxgKnzzan6jSzG=QHIC0Ko4IAgGHNQ{9_90 zLInoQj`qiR$YDIZn2WCa&+onlpoVr26!aD}cS#?+W8`mu^9kY^eo+YvU&ATV=5 zzr6vOW<;b{p~$1aO)m$bsa2yk3BCe+w!rpa#8iUAN&T<<9@}MGs_@fvFLFO~{_S{Y zmmVU)?EG{LYt+)Av6ZWIMQxGHW-X#_HZB^R)p^fuX7*pWG{ZZVRura}E;jVDo#VeI zdf<*)GC>6}p?T<85XM8B^$~~(W}C1715knR;fP|wYCx^=Kj?Ci6j7Q4F#sKh%KVY( z-~Zu5iA=o7r+H#xrYp0VEbB}P(t&4`EXXu4UM6ty&L%h&M~zz)L|Tr)IhCswB&43^ znyrJbW>0am+@@;Ug7W2i&_BNEuNdb~KKUqs3+5a@@>wBqo1S6R)r&v9jy}*T!ZfuI zOndj)h)p7nbzxDIhBG!2J7YC{xm>E(z_7)(b%<2umnWfb^N4EBkvR|1WL8u%bsAgZ z9?r0M6Jmf@^wJk3HM85V1w4R!&U|i8krO~AnNO18ocaa-Ijyw-G)cZ4=Say7xC-I3Vivs2gGTQ_~wNe$U zU9`v;%n~?Dp{=~UvsNqW+5$6ZWltLg&TpWA?;Ko_J+Um#`4!oQ^|hUgp)na1S1FKR zX@B<&Kiy9(JN*KbwLxS)e?n-ALs6hrnh@2RD^k44`&+gu3g|!9cr7@>QJ1h-0c{oy zn*6~-5xHKkyTSR(Coc8i2<^DT5><5q4}j77C+ZHXD)mmY@=m7mHCib*bl|-vp`HGi zwxxS`fMtVZ)3KnGa6mVFRvQo=loIuNo%wEkq#9q?OpGm4h)xgsrQ=I-xixiTC^||v z9eb7c_=wMO)!7X=Tb8S)W1(F?Hvfi=<3Sy1=`Z2lO8<>GrNltf*{kNWlskec^kbe3 zC|!9ymqrGtHGrv3lFuz%0nr$<&=J=7?z_LE2L&)l(-Hr%Wr;ztK!0C255 zu=S^tdwZPgT(L`#`qqbFdA^nr)jZ^4(6Qd?E&If|>fVtp8Lr4<6jG_^OU4(Vv&bwv z^>RuDsB8=36{)a}Nf;EcLT0$qPC;pM79@p#XQAdhI@c?12jJ2%N;y2JL_(w!Kw#88 z{EFj}*LHxPU8g}<0VW(bgLHL!(Mi7Wa|nIpj9Mc7VGzczy!q>^M$||m=H92qx9O#E ztd(!&Y!sH}=EQ{XKr3*jVd%15PFs`rmm%(hH>(VYF1?R$ZxWl=YkRiHH`zIQv55)4 z=^O!v4b)KnvPB?~3@J~MH%Q3y!4D*86u;*MpmkChUDlX;>ZOa{V+W$;{9&|Kx>O_B zxOS#-h{YveVeQ|sk6x#ErQ0b_vI0gXlu_*kL&Qxvj1b3*#?a?Q4V$AL z@>dlEJ#+~!Bwkjsd-~eCzZx_~5R>21I1`JRb9m&mvKpj^n55ik}P{b`FF__ zl&}~Cx*&Jc7OaZwBP_r9g`Lj*_m_m13ZQj0dHY_CGtsv3NKgd4STAFmI-tBI6v5%) z3iO&g@3HkBj=&AJgL#&3aRhE|`L(B_L-ulr%d%{=h}Ud_e!XZ(>0o2{AF-+187h zS6j1WH;}Yz&H3rNE40M-um+BnT=|8~y>D75HZ{>4Y+u#&aXr3U{OAwTwVPp1Rdu%E zHOYc7PYZOy=uC@ zwa!!jDI-mN5)4v`Sb<`X;d7r3CjJ1);|qzQQj*^DiF(%sz~&GF zLiSC8VQ-46zy+Uyv^FLv{M^YN=E365N{r(7bM>(S+Y9bVF*4yk=OgoUwhsm^vTTmG zZ*SP;>L+5w?XMT4JiW|c^e#KM+lI0rCH0f0tbY67I&8Ul5IqCXJx>8`=PBSD!1yGA zzx|yo5!uqP=-HXCM;T!cckYwlyBEDtO3@PeI$f-{@rA-DsnznhHC5E|XSO)Rn|}=G zoi56@5e4)Kf+54l^|rz6`boMn)hC3rf+D1@vqIXmw65W-q8)C!zIh=nvqA6|Rz;iS z1r>>YixsHQZ0D->*O|ZWGizLilJcJ&w7fX$`uW;#kE><}1Xs81#qM?R{3W3vK~yr* zPND+AjTJ2pJbi>nheE?N;^>EbkyBL-SMD*DC}NT{6)9$+>OK*O zxN}}5k?jD4vU+h#0b2{-U5z91G@42rcY^TK4-m_<5T%&pIFbr01>ovJB?p>WxRy@^ zDF*PUhxj|6chl)P)U zafcnCPAUbbN2Q4R?XZ>`+OQXoRZ55`dV(4=75jY&I!bb)X)2&$&nvz%(!bwrTBEPa z3RXR9c5)UA~ciSsh z)2=uUk+VLO>{Bc!-0rcUDB~8tagL|$cV~|wb5zldBpe#0c8*r1d>o{jjeRNVowJTB zLN@?g-VH~k8Y1e`wpWvNio0WM3I*_;yL*s5h~3+#BBoIU%ew)^0TINg=Hp`gpf4Y| zy%7Y&nLRvpQ5-+)by9(gA>XbobU*ea;@{w!f5#?%3ov-SzfugIMg1zV?Ke|wO?*Q3 zp?y856?X#zbNAvM!E9{mvpJR<>@2);Q&hg?+pa4%)iMta@BfR^fz9rI<=^=(*W(Axn#LnPtJI*Th1EkI;4?uTn z7SSGEufs}(BvQ?(>>LW^JXF0>Zi50n*M*MtU2uOsC4JY;_Pd@Qfn7s2SUR5>2l2alu_1Q z1Gm!^CO@6ky{U6iO>Emob@fTr_$Y3!smaqJefDJS^TOHO3z*cjRjNN))>@}mu(bI6 zmO@hK#HCru=0YI+fam0igiej+G+VyM#BUnj&Jf}9K*rb5&qs<_x`81+Oz-;balE`U z%+?Sxoj~;#Ie+AA#u#$jax=b9ri1;jFzD^s_9Ivmy6U{P922wY9c4muebsSBrC0l05ZQfN6xB_ioby4gn8=NsCsCy z2=dQ}^Y=+Af6x6^OlajOHLjefl{ZE3Qs;4M9mFu`z*c$^q6{!*VprXi!)Qh5uZI!u zIG(m^-L489OF$#ZtZAF*p0#^>_XOOmzMb~CC#}rU#JXg9n)iu*)107K#cXsVPY`d=#l-p+kq7R(y=2}HCaum-k0vs( zFW>NkE8dxk)8z98HUSSgG;%-f{%)@6R23q8|O|WLtM2}2& zeFds9f{Dx^c2g&LUvZd*ZpcESo~DBZ0?Mg})<^>jhao}hg{^iC>yUECSwGEcCF}7L zue}oyD;);JSZmB#ytC^WL!99jj&U?Yh;=E(PsV+Ir?f#%w}*FFWEfQY1V`)29!!@U z^;w}^_^;pPG871q0lcJ!z|j{oZPCZ*rwzWA(A(C@W6XCVvC{rF)W|EqMzB}k`Ths; zw#9={@W<~C4FMP}w9Y5OYO-I2pfRp$LXI?XCrrNtokUvt+cQ`Xv$&@#8Tw0TOITgQ zX07ly8bV<$vY2J7B%~2Km}7eQx3t&6wn}zlG3|I*^Fm6trvr-oT|fB#F6knWhHlvc zZ<9}4X$|yR4s%L$FqI_GW281bHllEAa<{&=o`@>C=cQW$`k3Niub0Z8KP9aXlKYqR?r;2dX6=YuUoh&SV!2?`_o4}} z{$dw&ao!^QbKPfW-19@2LK?9#@t6M<3l;S0Da~Mr0jgteFOp?rf$E~g@5Y=hchKUk zk8}#5>b_Q`BTOR1eZ_^2kQq3jdR)Ium8OyhZf93*uD+@u>5zLP3{)X_ok^Tqxz3ndT(9q?WRTlBx}cOC_qatwcA4 z%>20j5*^qhn{LVgNf7VMSUZ>9_3bLamGC7$aEDY&MyBjGn5gi27-BEn+RJ?1&Kw!my;j9#60 zg&fS?4Byw@ost7E*1s?-*$x;>9kHtvH_8$Y122zL$}b-YE4ppry3kefmz_h=7M6G@44{b+kC$Q{d;9@bAx?sdpP_&;687@ zS7xaKD4nIM^2AVgLL;^lsYq!jJ8~=vRFg(8cunY=4k=JB1{>4t2MkjI4m>Zj0##%5 zyZjBWrsDy+OH;k!xreb1gJ zRTi5vbw&48Sx}|vrz+-vkFh!GI>2Pic6u(#i)J2^?(_ZVa^7%IW)EE0n17>}z2A+J z%#KGCmioc+b$nC^lp^}5l-o-skRTs5{ziW_P;<`5Bi6N5V!><`dr_!%dc0X)6Y)3< z*y5*f>7o!E{lo~gvxOZqjO5*PREC+WPDu*qGe{+uK6;)p?+jC3njxXoqbecF3)Kf^ z|8(Ka4b{EfyLZ2`{R_952;S&!fw;(aJfwJTn{&5GO^oL${fK%sv%FWF-U{}5uNf_h zVkurY?qXKm^g`>~DLeLI{Ji1W4i_md4*Pzh(R9vrG2miD-QGUNFBr}^AJ?(yth!`b zrv=-B#NR|U10!Eiov<%lywJN{Whu}oS(^8^#uMv1`%UAby$%iL^5DY8*O{6&4gTK~ zapUM1G#4#iZIuPv>vVp&h!7Sy4;23$hG4(Ni2K@S8guPw8-*_OJ=|A>5GF9X4X^fv zj<$}T9TIElVuy=qW1-jDuorY_*lpXe;?74fpm83*W8szw2UMqecCAQAD2*+RuiQ!S z--|9t?RidNY8yKjeJfGDotw@1;AikUC0c6&1*N^p@f|QUH1q;}I*m&er;b`*C}6hz z>}_w+pjFy_6cZ3@0bGVzBiHYa&3%_{aJN9aSdVbALnX~_fw+j!AZ~qx{Z=`ldgk*6 z0tG!;7LUanVaoj}Y$yVeutZ$-KnU4M;&m}w3rh35o>GWGvC6}iz@tv4;o(UOD1_Gp z0Es#~wm48k`_WiHfh6ZJ&M}BAzVwXX+R-$!YG~u!?DwiYCkG~vcB4nt{I?Y1co#`JXrvxE(xYSpk&kB zO8`XxrGB8)Us$QG#K0u&S(^X}5H4+ZVETdc zbzN^U8w#mwH~1x(RSA?<^YE+{pkbd3VVZxpA^phZ}NK#48EkT4qxxBGOR0VQD! z%4!A5ns6C6GVH!dF5^Z3C8h*JVlOU2Qkd9!21<%SZ2~AM!bAWi1Hh2zk^~~Ct+_xE zL2Uvkshor6NHDDflq_7vn7C-=o^%XIzV&Lk?I#JPvt|PY`$@Tz=yKiCnvOwf6`-UV zgVG{ENmqhdWk9i?P|Q%Cyu4BtVqp|u>%9tVsj;47P_UVoJL`Do6KZ(U-#Pdxoi$&uvts`)Iq-v6Xv*Cj9=iaBwYV5N=ll)KsJ2QbEV`=Zv8HMg zHWrJ{9$r&HZ9bpr-z&lBagq^GniqqTa0+YI!_yKHOqLRgy_PA~ncefa0<$;#FUjRu zZ|&1ur`cN8sv%-Op;%|d-BSsRCSgHoEHtF}Rl2XX(O^Y|)^kvs5y$;rzx_l2W$ggP zJ!BrfgjE#hEyL$7bJ^}!wosM=I~Vx%Gscv8R%FPh+@-xnM2Oa#Fzu--fF z#^-K{#v%1g=`4ZF-f9zVGVXGiSVg}$Z>wU4F6t%c&b8Z;(6F>&RDD?cTUfra5a8a$ z{Vy$;B^~YM6|vqe)~aMlO|C7)FeA#P$Ka(x*|?vFxpD&Y7By)b0dX^t*4Bii?z^0 zU!PmKEhAjqy>+^`E3C*lmMg@9+FYd+t7CA#%oeWQ<%^Z;7eYwMFK7$nw0)!j#@Vz+jg+`f z2A`2P#0cisZZoO@nDub?_hpN6%5bzF)pfH4DFmoi=yk#tB=(;!FL{5zXRFMlnlJ+z z_GDrzSAv22Rcj|&ohwQ%L2$7T1Sop83=ZoaHUvYk_%-QL+nq(Q{orD^Yt7O3WhLyy zd!II={b&+HH_!D~k5M+VHLw`bfJqZ5K`N3*<)Kncp<4>HrCD7Auzfq5K41Zao*)ULRE+L4IZ<_ z&`_xdRU518o!e%EJ&v#+kD>8gmF5GRnqj9t>XwMG4^jZz@1WZuDsiZ*hRV})Kb^f#4Vblj!zPdOE9tmddrt=#Y z&Pv_hL4D);8Kv!cgr1j^o@rZGgY1?cPtA9 z1uhOnHM=xgDi5j~=vl!%ajQot@nFPmd5*KZLcpAH(Jqb=&qCjLw+sunovvi}WHI6x zB?gop?6p_@K;Vu+@!M<671ApP%m<`ZXg>Rb5JY#iJ9C=3<>w}38l)CTY51A_YB=9tUSg=jy4PT*g;hz zRLN@KaS2JR5AnF+h|%F?T-c7H4P|*E=E5PS?Z-VNIdUiXfg)m1#E1nL0_l}52#Ke_ zCgOHG3@%Kp&*Fwf7lj47pz(7ms#Z3@pi!7X$tA(G4Vtkwyy5i3C(#e>LT+gTC6}(v zR5iNd|K0O9ISi;#h#|qM9NJg{rG>c7z2dK50TeM(P?0z+eQ8u`bK7B1GEUbj_Fm_lln}^GQ*|veII+m-MtVj}8)-*z- zd?WA^r6hMzgDwI0tun#PTHZNIMmm zn#2x+0E!qX44L~jnpWvY;-A1~8EyRrdR|HafpUJ8@tE|og)W>j1ZOiRsSO)4aR04- z!?9U@G5>M~a{;OjN;d=h zROsFzc@{h7CXIyM4}WvOK&S2vouN|;o%{ZR>e?vTS_;u?0KS;2tYpOTr~1??UP z7xd(y`+X5TN)v=hItUyDlHV~xQ1(+vqthi3)$*Gn2L3LB1cMn-nq!g{-3PQUEsYXp z3&Nzw{{0dKk0ewcF;X3PMHQ+KOtVAlK@WZO@7}%pm99r``iGK(Xg|vRcFm<;<&y57 zD-;*#Nscwbh1IPwg7=}Wb0EgL9C$tHCwIWm(9jF?DVE^J8VKm-SXN`N-&O$1D(n{M z_9~?XlsLy(53@-Lpoq~F6-fXk5l|vG6H&5atarfp_l|7^pongP$-YPcMT}MgjQ#o~ z@h|8`Hun-h5kL`RwW&zFen-(QPyj^?G3t?E1W*J}#1JDJz_gmnxY0lng_Xn*qxmXQ zWSo3^g zfKk9Oj4AL*sF&Sfu@oaZE|Fr6B{FfYy~GLAoegAjWzH4Dz9rM_^on zm4YQTYRGn|SOO0|N~O{V#(Wz~>$fi&0TclgF~q2;{YZ_4Hb7oj?6C91Ex}kD=u=Zu zZ&b$HK`*MFvWo&J0w`jLfm|Sz5BgL)ATR9v2$En7YXd6sEG;h<|Co&Tu$s55`g|jR zLIhC65ToVcqE}0QO!WZe#P^XGHnJWU3GJ(H_=45nEk& z48N-oC`1573^C#@8^c`x*pU=98+p19kPl$GsLNGuXm%9|9ng~Nq1YdlN@aOzap{e` z(bbhJ_3Y6}2@I5vuuW?<08f&6t2+6HEQUTmn*4Q7pAd~^>C41BJ;r~8|vZ3&Dv zDkG^H7`bu?T?A0X5M#9usgegtS3xPYgIw%@`T6sS1(Bs!+e2{y zM!-c3F;*{R++iygG)h$oW!d#8+TfyrEs|Hoq$8^KNZ`z!wqOD-@K`^RcS$dnQCJdy z5krhM0T_GWtzC*K+dxyYJu2XefdO#VgRwy3Co;JKlkWh1mL$R3T&8USx23 zn1UXDwif{zF~nHCa0#--1U=kY)C?{R1jN_x&OKV0000< KMNUMnLSTX~)5c2x literal 0 HcmV?d00001 diff --git a/ground/openpilotgcs/src/plugins/welcome/qml/images/wizard-on.png b/ground/openpilotgcs/src/plugins/welcome/qml/images/wizard-on.png new file mode 100644 index 0000000000000000000000000000000000000000..0f85087b3ab8484e7454be0c79a2d809851eb57d GIT binary patch literal 22200 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 FV1mwFjmH20 literal 0 HcmV?d00001 diff --git a/ground/openpilotgcs/src/plugins/welcome/qml/main.qml b/ground/openpilotgcs/src/plugins/welcome/qml/main.qml index 8815a352a..dc88c42bc 100644 --- a/ground/openpilotgcs/src/plugins/welcome/qml/main.qml +++ b/ground/openpilotgcs/src/plugins/welcome/qml/main.qml @@ -47,12 +47,12 @@ Rectangle { anchors.verticalCenterOffset: -2 //it looks better aligned to icons grid //hide the logo on the very small screen to fit the buttons - visible: parent.availableWidth > width + parent.spacing + buttons.width + visible: parent.availableWidth > width + parent.spacing + buttons.width + wizard.width } Grid { id: buttons - columns: 4 + columns: 3 spacing: 4 anchors.verticalCenter: parent.verticalCenter @@ -74,11 +74,6 @@ Rectangle { onClicked: welcomePlugin.openPage("System") } - WelcomePageButton { - baseIconName: "bttn-vehwizard" - onClicked: welcomePlugin.triggerAction("SetupWizardPlugin.ShowSetupWizard") - } - WelcomePageButton { baseIconName: "scopes" label: "Scopes" @@ -96,13 +91,15 @@ Rectangle { label: "Firmware" onClicked: welcomePlugin.openPage("Firmware") } - - WelcomePageButton { - baseIconName: "bttn-txwizard" - onClicked: welcomePlugin.triggerAction("ConfigPlugin.ShowInputWizard") - } - } //icons grid + + WelcomePageButton { + id: wizard + anchors.verticalCenter: parent.verticalCenter + baseIconName: "wizard" + onClicked: welcomePlugin.triggerAction("SetupWizardPlugin.ShowSetupWizard") + } + } // images row CommunityPanel { diff --git a/ground/openpilotgcs/src/plugins/welcome/welcome.qrc b/ground/openpilotgcs/src/plugins/welcome/welcome.qrc index 2fc8bf23c..5007edc6b 100644 --- a/ground/openpilotgcs/src/plugins/welcome/welcome.qrc +++ b/ground/openpilotgcs/src/plugins/welcome/welcome.qrc @@ -30,5 +30,7 @@ qml/images/bttn-txwizard-off.png qml/images/bttn-vehwizard-on.png qml/images/bttn-vehwizard-off.png + qml/images/wizard-off.png + qml/images/wizard-on.png From 7797a99bb13d08693403072577c844c144a3a363 Mon Sep 17 00:00:00 2001 From: Kevin Vertucio Date: Thu, 20 Sep 2012 21:34:14 -0400 Subject: [PATCH 045/105] copy/content revisions and corrections. More corrections in SetupWizard plugin Signed-off-by: Kevin Vertucio --- .../setupwizard/pages/controllerpage.ui | 21 ++++++++------- .../src/plugins/setupwizard/pages/endpage.ui | 4 +-- .../setupwizard/pages/fixedwingpage.ui | 2 +- .../plugins/setupwizard/pages/flashpage.ui | 22 ++++++++------- .../src/plugins/setupwizard/pages/helipage.ui | 2 +- .../plugins/setupwizard/pages/inputpage.ui | 4 +-- .../setupwizard/pages/levellingpage.ui | 12 ++++----- .../plugins/setupwizard/pages/multipage.ui | 2 +- .../pages/notyetimplementedpage.ui | 2 +- .../pages/outputcalibrationpage.ui | 27 ++++++++++++++++++- .../plugins/setupwizard/pages/outputpage.ui | 6 ++--- .../plugins/setupwizard/pages/summarypage.ui | 21 ++++++++------- .../plugins/setupwizard/pages/surfacepage.ui | 2 +- .../plugins/setupwizard/pages/vehiclepage.ui | 4 +-- 14 files changed, 83 insertions(+), 48 deletions(-) diff --git a/ground/openpilotgcs/src/plugins/setupwizard/pages/controllerpage.ui b/ground/openpilotgcs/src/plugins/setupwizard/pages/controllerpage.ui index f608f43b8..0a3182426 100644 --- a/ground/openpilotgcs/src/plugins/setupwizard/pages/controllerpage.ui +++ b/ground/openpilotgcs/src/plugins/setupwizard/pages/controllerpage.ui @@ -26,15 +26,18 @@ <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:12pt; font-weight:600;">OpenPilot board identification</span></p> -<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt;">To continue the wizard needs to know what kind of OpenPilot controller you want to create a configuration for. The wizard will try to automatically detect what type of board you have when connected.</span></p> -<p style="-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:10pt;"><br /></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt;">Please connect the board to a free usb port on your computer, or if a serial modem like BlueTooth, PipX or other is used, power up the board and select the device to connect with from the list below. Then press 'Connect'. If the board already is connected and succesfully detected the board type will already be displayed. You can disconnect and select another device if you need to detect another board.</span></p> -<p style="-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:10pt;"><br /></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt;">Important:</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt;">If you need to power your controller with an external power source if not using USB, please disconnect all components like ESC and servos connected to the output ports of the controller.</span></p></body></html> +</style></head><body style=" font-family:'Lucida Grande'; font-size:13pt; font-weight:400; font-style:normal;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'MS Shell Dlg 2'; font-size:12pt; font-weight:600;">OpenPilot board identification</span></p> +<p style="-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:'MS Shell Dlg 2'; font-size:8pt;"></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'MS Shell Dlg 2'; font-size:8pt;"><br /></span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'MS Shell Dlg 2'; font-size:10pt;">To continue, the wizard needs to determine the configuration required for the type of OpenPilot controller you have. When connected, the wizard will attempt to automatically detect the type of board.</span></p> +<p style="-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:'MS Shell Dlg 2'; font-size:10pt;"></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'MS Shell Dlg 2'; font-size:10pt;"><br /></span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'MS Shell Dlg 2'; font-size:10pt;">Please connect the board to a USB port on your computer, or if a serial modem like BlueTooth, PipX or other, power up the board and select the device from the list below. Then press </span><span style=" font-family:'MS Shell Dlg 2'; font-size:10pt; font-weight:600;">Connect</span><span style=" font-family:'MS Shell Dlg 2'; font-size:10pt;">. If the board is already connected and successfully detected, the board type will already be displayed. You can disconnect and select another device if you need to detect another board.</span></p> +<p style="-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:'MS Shell Dlg 2'; font-size:10pt;"></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'MS Shell Dlg 2'; font-size:10pt;"><br /></span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'MS Shell Dlg 2'; font-size:10pt;">Important:</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'MS Shell Dlg 2'; font-size:10pt;">If you need to power your controller with an external power source and are not using USB, please disconnect all components, such as ESCs and servos connected to the output ports of the controller.</span></p></body></html> Qt::AutoText diff --git a/ground/openpilotgcs/src/plugins/setupwizard/pages/endpage.ui b/ground/openpilotgcs/src/plugins/setupwizard/pages/endpage.ui index adeb1b87d..068203153 100644 --- a/ground/openpilotgcs/src/plugins/setupwizard/pages/endpage.ui +++ b/ground/openpilotgcs/src/plugins/setupwizard/pages/endpage.ui @@ -38,9 +38,9 @@ p, li { white-space: pre-wrap; } <p style="-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;"><br /></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt;">This part of the setup procedure is now complete and you are one step away from having a complete setup of your OpenPilot controller.</span></p> <p style="-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:10pt;"><br /></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt;">To complete the setup please push the Radio Setup Wizard button below to close this wizard and go directly to the Radio Setup Wizard.</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt;">To complete the setup please click the Radio Setup Wizard button below to close this wizard and go directly to the Radio Setup Wizard.</span></p> <p style="-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:10pt;"><br /></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt;">Or close this wizard and go to the Input tab in the Configuration Plugin and run the </span><span style=" font-size:10pt;">Radio Setup Wizard</span><span style=" font-size:10pt;"> to configure the input signals to be used before trying to operate your vehicle. If you already have performed the Radio configuration you can skip this step. </span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt;">Or, before trying to operate your vehicle, close this wizard, go to the Input tab in the Configuration plugin and run the Radio Setup Wizard to configure the input signals to be used. If you have already performed the Radio configuration, you can skip this step. </span></p> <p style="-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:10pt;"><br /></p></body></html> diff --git a/ground/openpilotgcs/src/plugins/setupwizard/pages/fixedwingpage.ui b/ground/openpilotgcs/src/plugins/setupwizard/pages/fixedwingpage.ui index 0e4fde978..ed0e963e9 100644 --- a/ground/openpilotgcs/src/plugins/setupwizard/pages/fixedwingpage.ui +++ b/ground/openpilotgcs/src/plugins/setupwizard/pages/fixedwingpage.ui @@ -27,7 +27,7 @@ <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:12pt; font-weight:600;">The fixed wing part the OpenPilot Setup Wizard is not yet implemented</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:12pt; font-weight:600;">The Fixed Wing section of the OpenPilot Setup Wizard is not yet implemented</span></p> <p style="-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:8pt;"></p></body></html> diff --git a/ground/openpilotgcs/src/plugins/setupwizard/pages/flashpage.ui b/ground/openpilotgcs/src/plugins/setupwizard/pages/flashpage.ui index 75323607b..f3e6743e2 100644 --- a/ground/openpilotgcs/src/plugins/setupwizard/pages/flashpage.ui +++ b/ground/openpilotgcs/src/plugins/setupwizard/pages/flashpage.ui @@ -26,15 +26,19 @@ <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:12pt; font-weight:600;">OpenPilot configuration ready to save</span></p> -<p style="-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;"><br /></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt;">The wizard is now ready to save the configuration directly to your OpenPilot controller. </span></p> -<p style="-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:10pt;"><br /></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt;">If any of the selections made in this wizard requires a reboot of the controller then that will have to be performed after this step by power cycling the OpenPilot controller board.</span></p> -<p style="-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:10pt;"><br /></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt;">Press the Save button to save the configuration.</span></p> -<p style="-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:10pt;"><br /></p></body></html> +</style></head><body style=" font-family:'Lucida Grande'; font-size:13pt; font-weight:400; font-style:normal;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'MS Shell Dlg 2'; font-size:12pt; font-weight:600;">OpenPilot configuration ready to save</span></p> +<p style="-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:'MS Shell Dlg 2'; font-size:12pt; font-weight:600;"></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'MS Shell Dlg 2'; font-size:12pt; font-weight:600;"><br /></span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'MS Shell Dlg 2'; font-size:10pt;">The wizard is now ready to save the configuration directly to your OpenPilot controller. </span></p> +<p style="-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:'MS Shell Dlg 2'; font-size:10pt;"></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'MS Shell Dlg 2'; font-size:10pt;"><br /></span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'MS Shell Dlg 2'; font-size:10pt;">If any of the selections made in this wizard require a reboot of the controller, then power cycling the OpenPilot controller board will have to be performed after you save in this step.</span></p> +<p style="-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:'MS Shell Dlg 2'; font-size:10pt;"></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'MS Shell Dlg 2'; font-size:10pt;"><br /></span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'MS Shell Dlg 2'; font-size:10pt;">Press the Save button to save the configuration.</span></p> +<p style="-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:'MS Shell Dlg 2'; font-size:10pt;"></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'MS Shell Dlg 2'; font-size:10pt;"><br /></span></p></body></html> Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop diff --git a/ground/openpilotgcs/src/plugins/setupwizard/pages/helipage.ui b/ground/openpilotgcs/src/plugins/setupwizard/pages/helipage.ui index c3c6efd11..8e14881d9 100644 --- a/ground/openpilotgcs/src/plugins/setupwizard/pages/helipage.ui +++ b/ground/openpilotgcs/src/plugins/setupwizard/pages/helipage.ui @@ -27,7 +27,7 @@ <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:12pt; font-weight:600;">The helicopter part the OpenPilot Setup Wizard is not yet implemented</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:12pt; font-weight:600;">The Helicopter section of the OpenPilot Setup Wizard is not yet implemented</span></p> <p style="-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:8pt;"></p></body></html> diff --git a/ground/openpilotgcs/src/plugins/setupwizard/pages/inputpage.ui b/ground/openpilotgcs/src/plugins/setupwizard/pages/inputpage.ui index 7446dbbc3..1b7b2575e 100644 --- a/ground/openpilotgcs/src/plugins/setupwizard/pages/inputpage.ui +++ b/ground/openpilotgcs/src/plugins/setupwizard/pages/inputpage.ui @@ -29,9 +29,9 @@ p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:12pt; font-weight:600;">OpenPilot basic input signal configuration</span></p> <p style="-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;"></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt;">The OpenPilot controller supports many different types of input signals. Please select the type of input that matches your receiver configuration. If you are unsure just leave the default option selected and continue the wizard.</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt;">The OpenPilot controller supports many different types of input signals. Please select the type of input that matches your receiver configuration. If you are unsure, just leave the default option selected and continue the wizard.</span></p> <p style="-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:10pt;"></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt;">Some input options require the OpenPilot controller to be rebooted before the changes can take place. If an option that requires a reboot is selected the controller will need to be rebooted at the end of this wizard after the configuration is written to the controller.</span></p></body></html> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt;">Some input options require the OpenPilot controller to be rebooted before the changes can take place. If an option that requires a reboot is selected, the controller will need to be rebooted at the end of this wizard after the configuration is written to the controller.</span></p></body></html> Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop diff --git a/ground/openpilotgcs/src/plugins/setupwizard/pages/levellingpage.ui b/ground/openpilotgcs/src/plugins/setupwizard/pages/levellingpage.ui index 493dbea91..ee29b25f0 100644 --- a/ground/openpilotgcs/src/plugins/setupwizard/pages/levellingpage.ui +++ b/ground/openpilotgcs/src/plugins/setupwizard/pages/levellingpage.ui @@ -26,12 +26,12 @@ <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:12pt; font-weight:600;">OpenPilot controller levelling calibration procedure</span></p> -<p style="-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;"></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt;">The wizard needs to get information from the controller about in which position the vehicle normally is considered to be level. To be able to successfully perform these measurements you need to place the vehicle on a flat and as level as possible surface. Example of such surfaces could be a table top or the floor. Be careful to assure that the vehicle really is level since this step will affect the accelerometer and gyro bias in the controller software.</span></p> -<p style="-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:10pt;"></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt;">To perform the levelling, please push the 'Calculate' button and wait for the process to finish.</span></p></body></html> +</style></head><body style=" font-family:'Lucida Grande'; font-size:13pt; font-weight:400; font-style:normal;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'MS Shell Dlg 2'; font-size:12pt; font-weight:600;">OpenPilot controller leveling calibration procedure</span></p> +<p style="-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:'MS Shell Dlg 2'; font-size:12pt; font-weight:600;"></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'MS Shell Dlg 2'; font-size:10pt;">The wizard needs to get information from the controller to determine in which position the vehicle is normally considered to be level. To be able to successfully perform these measurements, you need to place the vehicle on a surface that is as flat and level as possible. Examples of such surfaces could be a table top or the floor. Be careful to ensure that the vehicle really is level, since this step will affect the accelerometer and gyro bias in the controller software.</span></p> +<p style="-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:'MS Shell Dlg 2'; font-size:10pt;"></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'MS Shell Dlg 2'; font-size:10pt;">To perform the leveling, please push the Calculate button and wait for the process to finish. </span></p></body></html> Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop diff --git a/ground/openpilotgcs/src/plugins/setupwizard/pages/multipage.ui b/ground/openpilotgcs/src/plugins/setupwizard/pages/multipage.ui index a369f1019..0b00607c6 100644 --- a/ground/openpilotgcs/src/plugins/setupwizard/pages/multipage.ui +++ b/ground/openpilotgcs/src/plugins/setupwizard/pages/multipage.ui @@ -29,7 +29,7 @@ p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8pt; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:12pt; font-weight:600;">OpenPilot multirotor configuration</span></p> <p style="-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;"><br /></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt;">This part of the wizard will set up the OpenPilot controller for use with a flying platform with multiple rotors. The wizard supports the most common types of multirotors. Other variants of multirotors can be configured by using custom configuration options in the configuration plugin in GCS.</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt;">This part of the wizard will set up the OpenPilot controller for use with a flying platform utilizing multiple rotors. The wizard supports the most common types of multirotors. Other variants of multirotors can be configured by using custom configuration options in the Configuration plugin in the GCS.</span></p> <p style="-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:10pt;"><br /></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt;">Please select the type of multirotor you want to create a configuration for below:</span></p></body></html> diff --git a/ground/openpilotgcs/src/plugins/setupwizard/pages/notyetimplementedpage.ui b/ground/openpilotgcs/src/plugins/setupwizard/pages/notyetimplementedpage.ui index b5b54240d..776a53540 100644 --- a/ground/openpilotgcs/src/plugins/setupwizard/pages/notyetimplementedpage.ui +++ b/ground/openpilotgcs/src/plugins/setupwizard/pages/notyetimplementedpage.ui @@ -27,7 +27,7 @@ <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:12pt; font-weight:600;">This part the OpenPilot Setup Wizard is not yet implemented</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:12pt; font-weight:600;">This section of the OpenPilot Setup Wizard is not yet implemented</span></p> <p style="-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:8pt;"></p></body></html> diff --git a/ground/openpilotgcs/src/plugins/setupwizard/pages/outputcalibrationpage.ui b/ground/openpilotgcs/src/plugins/setupwizard/pages/outputcalibrationpage.ui index 69e00c08e..f98d5a497 100644 --- a/ground/openpilotgcs/src/plugins/setupwizard/pages/outputcalibrationpage.ui +++ b/ground/openpilotgcs/src/plugins/setupwizard/pages/outputcalibrationpage.ui @@ -49,7 +49,32 @@ - <html><head/><body><p><span style=" font-size:10pt;">It is now time to calibrate the output levels for the signals controlling your vehicle. </span></p><p align="center"><span style=" font-size:10pt; font-weight:600; color:#ff0000;">VERY IMPORTANT!</span><span style=" font-size:10pt;"><br/></span><span style=" font-size:10pt; font-weight:600; color:#ff0000;">REMOVE ALL PROPELLERS FROM THE VEHICLE BEFORE PROCEEDING!</span></p><p><span style=" font-size:10pt; color:#000000;">Connect all components according to the illustration on the previous page and provide power using an external power supply like a battery to continue.</span></p><p><span style=" font-size:10pt;">Depending on what vehicle you have selected, both motors controlled by ESC and servos controlled directly by the OpenPilot controller may have to be calibrated. <br/>The following steps will guide you safely through this process.</span></p></body></html> + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Lucida Grande'; font-size:13pt; font-weight:400; font-style:normal;"> +<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt;">It is now time to calibrate the output levels for the signals controlling your vehicle. </span></p> +<p align="center" style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt; font-weight:600; color:#ff0000;">VERY IMPORTANT!</span><span style=" font-size:10pt;"><br /></span><span style=" font-size:10pt; font-weight:600; color:#ff0000;">REMOVE ALL PROPELLERS FROM THE VEHICLE BEFORE PROCEEDING!</span></p> +<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt; color:#000000;">Connect all components according to the illustration on the previous page, and provide power using an external power supply like a battery to continue.</span></p> +<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt;">Depending on what vehicle you have selected, both the motors controlled by ESCs and/or servos controlled directly by the OpenPilot controller may have to be calibrated. The following steps will guide you safely through this process. </span></p> +<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">In this step we will set the neutral rate for the motor highlighted in the illustration to the right. </p> +<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt; color:#000000;">Please</span><span style=" font-size:10pt;"> pay attention to the </span><span style=" font-size:10pt; color:#000000;">details, and</span><span style=" font-size:10pt;"> in particular the </span><span style=" font-size:10pt; color:#000000;">motor’s</span><span style=" font-size:10pt; color:#0000ff;"> </span><span style=" font-size:10pt;">position and its rotation direction. </span></p> +<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt;">To find the neutral rate for this </span><span style=" font-size:10pt; color:#000000;">motor, click</span><span style=" font-size:10pt;"> the </span><span style=" font-size:10pt; font-weight:600; color:#000000;">Start</span><span style=" font-size:10pt;"> button below and </span><span style=" font-size:10pt; color:#000000;">move</span><span style=" font-size:10pt;"> the slider to the right </span><span style=" font-size:10pt; color:#000000;">just</span><span style=" font-size:10pt;"> until the </span><span style=" font-size:10pt; color:#000000;">motor</span><span style=" font-size:10pt;"> starts to spin </span><span style=" font-size:10pt; color:#000000;">smoothly</span><span style=" font-size:10pt;">. </span></p> +<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt;">When </span><span style=" font-size:10pt; color:#000000;">done, click the </span><span style=" font-size:10pt; font-weight:600; color:#000000;">Start</span><span style=" font-size:10pt;"> button again to stop.</span></p> +<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt;">This step calibrates the center position of the servo. To set the center position for this servo, click the Start button below and move the slider to center the servo. </span></p> +<p style="-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:10pt;"></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt;">When done, click the Start button again to stop. </span></p> +<p style="-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:10pt;"></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt;">To protect the servo and other hardware from damage, we have to set the max and min angles for the servo. </span></p> +<p style="-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:10pt;"></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt;">To set the minimum angle for the servo, click the Start button below, select the top slider and slide it to the left until min angle is reached.</span></p> +<p style="-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:10pt;"></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt;">When done, click the Start button again to stop. </span></p> +<p style="-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:10pt;"></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt;">To set the maximum angle for the servo, click the Start button below and select the top slider and slide it to the right until max angle is reached.</span></p> +<p style="-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:10pt;"></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt;">When done, click the Start button again to stop. </span></p> +<p style="-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:10pt;"></p></body></html> Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop diff --git a/ground/openpilotgcs/src/plugins/setupwizard/pages/outputpage.ui b/ground/openpilotgcs/src/plugins/setupwizard/pages/outputpage.ui index ca335eabc..a395ae4bc 100644 --- a/ground/openpilotgcs/src/plugins/setupwizard/pages/outputpage.ui +++ b/ground/openpilotgcs/src/plugins/setupwizard/pages/outputpage.ui @@ -29,11 +29,11 @@ p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'Lucida Grande'; font-size:13pt; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'MS Shell Dlg 2'; font-size:12pt; font-weight:600;">OpenPilot basic output signal configuration</span></p> <p style="-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:'MS Shell Dlg 2'; font-size:12pt; font-weight:600;"></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'MS Shell Dlg 2'; font-size:10pt;">To set an optimal configuration of the output signals powering your motors used by your OpenPilot controller the wizard needs to know what type of Electronic Speed Controllers (ESC) you will use and what their capabilities are.</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'MS Shell Dlg 2'; font-size:10pt;">To set an optimal configuration of the output signals powering your motors used by your OpenPilot controller the wizard needs to know what type of Electronic Speed Controllers (ESCs) you will use and what their capabilities are.</span></p> <p style="-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:'MS Shell Dlg 2'; font-size:10pt;"></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'MS Shell Dlg 2'; font-size:10pt;">Please select one of the options below. If you are unsure about the capabilities of your ESC:s just leave the default option selected and continue the wizard.</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'MS Shell Dlg 2'; font-size:10pt;">Please select one of the options below. If you are unsure about the capabilities of your ESCs, just leave the default option selected and continue the wizard.</span></p> <p style="-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:'MS Shell Dlg 2'; font-size:10pt;"></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'MS Shell Dlg 2'; font-size:10pt;">To read more regarding ESC refresh rates, please see </span><a href="http://wiki.openpilot.org/display/Doc/TurboPWM+ESC%27s"><span style=" text-decoration: underline; color:#0000ff;">this article</span></a><span style=" font-family:'MS Shell Dlg 2'; font-size:10pt;"> in the OpenPilot WIki</span></p></body></html> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'MS Shell Dlg 2'; font-size:10pt;">To read more regarding ESC refresh rates, please see </span><a href="http://wiki.openpilot.org/display/Doc/TurboPWM+ESC%27s"><span style=" text-decoration: underline; color:#0000ff;">this article</span></a><span style=" font-family:'MS Shell Dlg 2'; font-size:10pt;"> in the OpenPilot Wiki</span></p></body></html> Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop diff --git a/ground/openpilotgcs/src/plugins/setupwizard/pages/summarypage.ui b/ground/openpilotgcs/src/plugins/setupwizard/pages/summarypage.ui index cf9d87a86..b0e90baca 100644 --- a/ground/openpilotgcs/src/plugins/setupwizard/pages/summarypage.ui +++ b/ground/openpilotgcs/src/plugins/setupwizard/pages/summarypage.ui @@ -26,15 +26,18 @@ <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:12pt; font-weight:600;">OpenPilot configuration summary</span></p> -<p style="-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;"><br /></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt;">The first part of this wizard is now complete. All information required to create a basic OpenPilot controller configuration for a specific vehicle has been collected.</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt;">Below is a summary of the configuration and a button that links to a diagram illustrating how to connect required hardware and the OpenPilotController with the current configuration.</span></p> -<p style="-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:10pt;"><br /></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt;">To continue the wizard and go through some basic configuration steps please continue to the next step of this wizard.</span></p> -<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt;">The following steps requires that your OpenPilot controller is set up according to the diagram and that the vehicle is </span><span style=" font-size:10pt; font-weight:600;">powered by a battery</span><span style=" font-size:10pt;"> as well as </span><span style=" font-size:10pt; font-weight:600;">connected to the computer</span><span style=" font-size:10pt;">.</span></p></body></html> +</style></head><body style=" font-family:'Lucida Grande'; font-size:13pt; font-weight:400; font-style:normal;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'MS Shell Dlg 2'; font-size:12pt; font-weight:600;">OpenPilot configuration summary</span></p> +<p style="-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:'MS Shell Dlg 2'; font-size:12pt; font-weight:600;"></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'MS Shell Dlg 2'; font-size:12pt; font-weight:600;"><br /></span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'MS Shell Dlg 2'; font-size:10pt;">The first part of this wizard is now complete. All information required to create a basic OpenPilot controller configuration for a specific vehicle has been collected.</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'MS Shell Dlg 2'; font-size:10pt;">Below is a summary of the configuration and a button that links to a diagram illustrating how to connect required hardware and the OpenPilotController with the current configuration.</span></p> +<p style="-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:'MS Shell Dlg 2'; font-size:10pt;"></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'MS Shell Dlg 2'; font-size:10pt;"><br /></span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'MS Shell Dlg 2'; font-size:10pt;">To continue the wizard and go through some basic configuration steps, please continue to the next step of this wizard.</span></p> +<p style="-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:'MS Shell Dlg 2'; font-size:8pt;"></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'MS Shell Dlg 2'; font-size:8pt;"><br /></span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'MS Shell Dlg 2'; font-size:10pt;">The following steps require that your OpenPilot controller is set up according to the diagram, it is </span><span style=" font-family:'MS Shell Dlg 2'; font-size:10pt; font-weight:600;">connected to the computer</span><span style=" font-family:'MS Shell Dlg 2'; font-size:10pt;"> by USB, and that the vehicle is</span><span style=" font-family:'MS Shell Dlg 2'; font-size:10pt; font-weight:600;"> powered by a battery</span><span style=" font-family:'MS Shell Dlg 2'; font-size:10pt;">.</span></p></body></html> Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop diff --git a/ground/openpilotgcs/src/plugins/setupwizard/pages/surfacepage.ui b/ground/openpilotgcs/src/plugins/setupwizard/pages/surfacepage.ui index 988bc300a..d592a4eaf 100644 --- a/ground/openpilotgcs/src/plugins/setupwizard/pages/surfacepage.ui +++ b/ground/openpilotgcs/src/plugins/setupwizard/pages/surfacepage.ui @@ -27,7 +27,7 @@ <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:12pt; font-weight:600;">The surface vehicle part the OpenPilot Setup Wizard is not yet implemented</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:12pt; font-weight:600;">The Surface Vehicle section of the OpenPilot Setup Wizard is not yet implemented</span></p> <p style="-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:8pt;"></p></body></html> diff --git a/ground/openpilotgcs/src/plugins/setupwizard/pages/vehiclepage.ui b/ground/openpilotgcs/src/plugins/setupwizard/pages/vehiclepage.ui index 609f84d24..48ef24ac8 100644 --- a/ground/openpilotgcs/src/plugins/setupwizard/pages/vehiclepage.ui +++ b/ground/openpilotgcs/src/plugins/setupwizard/pages/vehiclepage.ui @@ -29,9 +29,9 @@ p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'Lucida Grande'; font-size:13pt; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'MS Shell Dlg 2'; font-size:12pt; font-weight:600;">Vehicle type selection</span></p> <p style="-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:'MS Shell Dlg 2'; font-size:12pt; font-weight:600;"></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'MS Shell Dlg 2'; font-size:10pt;">To continue the wizard needs to know what type of vehicle that the OpenPilot controller board is going to be used with. This step is crucial since most of the following configuration is unique per vehicle type.</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'MS Shell Dlg 2'; font-size:10pt;">To continue, the wizard needs to know what type of vehicle the OpenPilot controller board is going to be used with. This step is crucial, since most of the following configuration is unique per vehicle type.</span></p> <p style="-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:'MS Shell Dlg 2'; font-size:8pt;"></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'MS Shell Dlg 2'; font-size:10pt;">So go ahead and select the type of vehicle you want to create a configuration for.</span></p></body></html> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'MS Shell Dlg 2'; font-size:10pt;">Go ahead and select the type of vehicle you want to create a configuration for.</span></p></body></html> Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop From 98db6469f9be0a5112b429a7dc55805c1e0eb878 Mon Sep 17 00:00:00 2001 From: Kevin Vertucio Date: Fri, 21 Sep 2012 07:52:24 -0400 Subject: [PATCH 046/105] copy/content revisions and corrections Fixed some corrections missed in SetupWizard Signed-off-by: Kevin Vertucio --- .../pages/outputcalibrationpage.ui | 35 +++++++++++-------- .../plugins/setupwizard/pages/outputpage.ui | 2 +- .../plugins/setupwizard/pages/summarypage.ui | 4 +-- 3 files changed, 23 insertions(+), 18 deletions(-) diff --git a/ground/openpilotgcs/src/plugins/setupwizard/pages/outputcalibrationpage.ui b/ground/openpilotgcs/src/plugins/setupwizard/pages/outputcalibrationpage.ui index f98d5a497..6d06176d2 100644 --- a/ground/openpilotgcs/src/plugins/setupwizard/pages/outputcalibrationpage.ui +++ b/ground/openpilotgcs/src/plugins/setupwizard/pages/outputcalibrationpage.ui @@ -55,26 +55,33 @@ p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'Lucida Grande'; font-size:13pt; font-weight:400; font-style:normal;"> <p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt;">It is now time to calibrate the output levels for the signals controlling your vehicle. </span></p> <p align="center" style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt; font-weight:600; color:#ff0000;">VERY IMPORTANT!</span><span style=" font-size:10pt;"><br /></span><span style=" font-size:10pt; font-weight:600; color:#ff0000;">REMOVE ALL PROPELLERS FROM THE VEHICLE BEFORE PROCEEDING!</span></p> -<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt; color:#000000;">Connect all components according to the illustration on the previous page, and provide power using an external power supply like a battery to continue.</span></p> -<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt;">Depending on what vehicle you have selected, both the motors controlled by ESCs and/or servos controlled directly by the OpenPilot controller may have to be calibrated. The following steps will guide you safely through this process. </span></p> -<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">In this step we will set the neutral rate for the motor highlighted in the illustration to the right. </p> -<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt; color:#000000;">Please</span><span style=" font-size:10pt;"> pay attention to the </span><span style=" font-size:10pt; color:#000000;">details, and</span><span style=" font-size:10pt;"> in particular the </span><span style=" font-size:10pt; color:#000000;">motor’s</span><span style=" font-size:10pt; color:#0000ff;"> </span><span style=" font-size:10pt;">position and its rotation direction. </span></p> -<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt;">To find the neutral rate for this </span><span style=" font-size:10pt; color:#000000;">motor, click</span><span style=" font-size:10pt;"> the </span><span style=" font-size:10pt; font-weight:600; color:#000000;">Start</span><span style=" font-size:10pt;"> button below and </span><span style=" font-size:10pt; color:#000000;">move</span><span style=" font-size:10pt;"> the slider to the right </span><span style=" font-size:10pt; color:#000000;">just</span><span style=" font-size:10pt;"> until the </span><span style=" font-size:10pt; color:#000000;">motor</span><span style=" font-size:10pt;"> starts to spin </span><span style=" font-size:10pt; color:#000000;">smoothly</span><span style=" font-size:10pt;">. </span></p> -<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt;">When </span><span style=" font-size:10pt; color:#000000;">done, click the </span><span style=" font-size:10pt; font-weight:600; color:#000000;">Start</span><span style=" font-size:10pt;"> button again to stop.</span></p> -<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt;">This step calibrates the center position of the servo. To set the center position for this servo, click the Start button below and move the slider to center the servo. </span></p> -<p style="-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:10pt;"></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt;">Connect all components according to the illustration on the previous page, and provide power using an external power supply like a battery to continue.</span></p> +<p style="-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:10pt;"><br /></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt;">Depending on what vehicle you have selected, both the motors controlled by ESCs and/or servos controlled directly by the OpenPilot controller may have to be calibrated. </span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt;">The following steps will guide you safely through this process. </span></p> +<p style="-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:10pt;"><br /></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt;">In this step we will set the neutral rate for the motor highlighted in the illustration to the right. </span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt;">Please pay attention to the details, and in particular the motor’s position and its rotation direction.</span></p> +<p style="-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:10pt;"><br /></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt;">To find the neutral rate for this motor, click the Start button below and move the slider to the right just until the motor starts to spin smoothly. </span></p> +<p style="-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:10pt;"><br /></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt;">When done, click the Start button again to stop. </span></p> -<p style="-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:10pt;"></p> +<p style="-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:10pt;"><br /></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt;">This step calibrates the center position of the servo. To set the center position for this servo, click the Start button below and move the slider to center the servo. </span></p> +<p style="-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:10pt;"><br /></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt;">When done, click the Start button again to stop. </span></p> +<p style="-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:10pt;"><br /></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt;">To protect the servo and other hardware from damage, we have to set the max and min angles for the servo. </span></p> -<p style="-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:10pt;"></p> +<p style="-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:10pt;"><br /></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt;">To set the minimum angle for the servo, click the Start button below, select the top slider and slide it to the left until min angle is reached.</span></p> -<p style="-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:10pt;"></p> +<p style="-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:10pt;"><br /></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt;">When done, click the Start button again to stop. </span></p> -<p style="-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:10pt;"></p> +<p style="-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:10pt;"><br /></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt;">To set the maximum angle for the servo, click the Start button below and select the top slider and slide it to the right until max angle is reached.</span></p> -<p style="-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:10pt;"></p> +<p style="-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:10pt;"><br /></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt;">When done, click the Start button again to stop. </span></p> -<p style="-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:10pt;"></p></body></html> +<p style="-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:10pt;"><br /></p> +<p style="-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:10pt;"><br /></p></body></html> Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop diff --git a/ground/openpilotgcs/src/plugins/setupwizard/pages/outputpage.ui b/ground/openpilotgcs/src/plugins/setupwizard/pages/outputpage.ui index a395ae4bc..a89c1fc77 100644 --- a/ground/openpilotgcs/src/plugins/setupwizard/pages/outputpage.ui +++ b/ground/openpilotgcs/src/plugins/setupwizard/pages/outputpage.ui @@ -29,7 +29,7 @@ p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'Lucida Grande'; font-size:13pt; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'MS Shell Dlg 2'; font-size:12pt; font-weight:600;">OpenPilot basic output signal configuration</span></p> <p style="-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:'MS Shell Dlg 2'; font-size:12pt; font-weight:600;"></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'MS Shell Dlg 2'; font-size:10pt;">To set an optimal configuration of the output signals powering your motors used by your OpenPilot controller the wizard needs to know what type of Electronic Speed Controllers (ESCs) you will use and what their capabilities are.</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'MS Shell Dlg 2'; font-size:10pt;">To set an optimal configuration of the output signals powering your motors, the wizard needs to know what type of Electronic Speed Controllers (ESCs) you will use and what their capabilities are.</span></p> <p style="-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:'MS Shell Dlg 2'; font-size:10pt;"></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'MS Shell Dlg 2'; font-size:10pt;">Please select one of the options below. If you are unsure about the capabilities of your ESCs, just leave the default option selected and continue the wizard.</span></p> <p style="-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:'MS Shell Dlg 2'; font-size:10pt;"></p> diff --git a/ground/openpilotgcs/src/plugins/setupwizard/pages/summarypage.ui b/ground/openpilotgcs/src/plugins/setupwizard/pages/summarypage.ui index b0e90baca..ee6607842 100644 --- a/ground/openpilotgcs/src/plugins/setupwizard/pages/summarypage.ui +++ b/ground/openpilotgcs/src/plugins/setupwizard/pages/summarypage.ui @@ -33,10 +33,8 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'MS Shell Dlg 2'; font-size:10pt;">The first part of this wizard is now complete. All information required to create a basic OpenPilot controller configuration for a specific vehicle has been collected.</span></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'MS Shell Dlg 2'; font-size:10pt;">Below is a summary of the configuration and a button that links to a diagram illustrating how to connect required hardware and the OpenPilotController with the current configuration.</span></p> <p style="-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:'MS Shell Dlg 2'; font-size:10pt;"></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'MS Shell Dlg 2'; font-size:10pt;"><br /></span></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'MS Shell Dlg 2'; font-size:10pt;">To continue the wizard and go through some basic configuration steps, please continue to the next step of this wizard.</span></p> -<p style="-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:'MS Shell Dlg 2'; font-size:8pt;"></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'MS Shell Dlg 2'; font-size:8pt;"><br /></span></p> +<p style="-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:'MS Shell Dlg 2'; font-size:10pt;"></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'MS Shell Dlg 2'; font-size:10pt;">The following steps require that your OpenPilot controller is set up according to the diagram, it is </span><span style=" font-family:'MS Shell Dlg 2'; font-size:10pt; font-weight:600;">connected to the computer</span><span style=" font-family:'MS Shell Dlg 2'; font-size:10pt;"> by USB, and that the vehicle is</span><span style=" font-family:'MS Shell Dlg 2'; font-size:10pt; font-weight:600;"> powered by a battery</span><span style=" font-family:'MS Shell Dlg 2'; font-size:10pt;">.</span></p></body></html> From 6eaa2daab12ccf025ba305f5a644b0de21c6ffd7 Mon Sep 17 00:00:00 2001 From: Fredrik Arvidsson Date: Sat, 22 Sep 2012 11:21:12 +0200 Subject: [PATCH 047/105] OP-39 Fixed some layout issues on the output calibration page. --- .../pages/outputcalibrationpage.ui | 40 ++++--------------- 1 file changed, 8 insertions(+), 32 deletions(-) diff --git a/ground/openpilotgcs/src/plugins/setupwizard/pages/outputcalibrationpage.ui b/ground/openpilotgcs/src/plugins/setupwizard/pages/outputcalibrationpage.ui index 6d06176d2..5947e6e3c 100644 --- a/ground/openpilotgcs/src/plugins/setupwizard/pages/outputcalibrationpage.ui +++ b/ground/openpilotgcs/src/plugins/setupwizard/pages/outputcalibrationpage.ui @@ -52,36 +52,12 @@ <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Lucida Grande'; font-size:13pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt;">It is now time to calibrate the output levels for the signals controlling your vehicle. </span></p> -<p align="center" style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt; font-weight:600; color:#ff0000;">VERY IMPORTANT!</span><span style=" font-size:10pt;"><br /></span><span style=" font-size:10pt; font-weight:600; color:#ff0000;">REMOVE ALL PROPELLERS FROM THE VEHICLE BEFORE PROCEEDING!</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt;">Connect all components according to the illustration on the previous page, and provide power using an external power supply like a battery to continue.</span></p> -<p style="-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:10pt;"><br /></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt;">Depending on what vehicle you have selected, both the motors controlled by ESCs and/or servos controlled directly by the OpenPilot controller may have to be calibrated. </span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt;">The following steps will guide you safely through this process. </span></p> -<p style="-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:10pt;"><br /></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt;">In this step we will set the neutral rate for the motor highlighted in the illustration to the right. </span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt;">Please pay attention to the details, and in particular the motor’s position and its rotation direction.</span></p> -<p style="-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:10pt;"><br /></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt;">To find the neutral rate for this motor, click the Start button below and move the slider to the right just until the motor starts to spin smoothly. </span></p> -<p style="-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:10pt;"><br /></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt;">When done, click the Start button again to stop. </span></p> -<p style="-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:10pt;"><br /></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt;">This step calibrates the center position of the servo. To set the center position for this servo, click the Start button below and move the slider to center the servo. </span></p> -<p style="-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:10pt;"><br /></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt;">When done, click the Start button again to stop. </span></p> -<p style="-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:10pt;"><br /></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt;">To protect the servo and other hardware from damage, we have to set the max and min angles for the servo. </span></p> -<p style="-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:10pt;"><br /></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt;">To set the minimum angle for the servo, click the Start button below, select the top slider and slide it to the left until min angle is reached.</span></p> -<p style="-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:10pt;"><br /></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt;">When done, click the Start button again to stop. </span></p> -<p style="-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:10pt;"><br /></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt;">To set the maximum angle for the servo, click the Start button below and select the top slider and slide it to the right until max angle is reached.</span></p> -<p style="-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:10pt;"><br /></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt;">When done, click the Start button again to stop. </span></p> -<p style="-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:10pt;"><br /></p> -<p style="-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:10pt;"><br /></p></body></html> +</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8pt; font-weight:400; font-style:normal;"> +<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Lucida Grande'; font-size:10pt;">It is now time to calibrate the output levels for the signals controlling your vehicle. </span></p> +<p align="center" style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Lucida Grande'; font-size:10pt; font-weight:600; color:#ff0000;">VERY IMPORTANT!</span><span style=" font-family:'Lucida Grande'; font-size:10pt;"><br /></span><span style=" font-family:'Lucida Grande'; font-size:10pt; font-weight:600; color:#ff0000;">REMOVE ALL PROPELLERS FROM THE VEHICLE BEFORE PROCEEDING!</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Lucida Grande'; font-size:10pt;">Connect all components according to the illustration on the previous page, and provide power using an external power supply like a battery to continue.</span></p> +<p style="-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:'Lucida Grande'; font-size:10pt;"><br /></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Lucida Grande'; font-size:10pt;">Depending on what vehicle you have selected, both the motors controlled by ESCs and/or servos controlled directly by the OpenPilot controller may have to be calibrated. The following steps will guide you safely through this process. </span></p></body></html> Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop @@ -453,7 +429,7 @@ p, li { white-space: pre-wrap; } - 148 + 150 340 75 23 @@ -469,7 +445,7 @@ p, li { white-space: pre-wrap; } - 68 + 70 340 75 23 From 4e1081179b25f81f6e5cdda2052c6fdf92209d90 Mon Sep 17 00:00:00 2001 From: PT_Dreamer Date: Sat, 22 Sep 2012 23:17:06 +0100 Subject: [PATCH 048/105] GCS-Auto Tuning Added code to allow module to be enabled using the checkbox --- .../plugins/config/configautotunewidget.cpp | 26 +++++++++++++++++++ .../src/plugins/config/configautotunewidget.h | 4 ++- 2 files changed, 29 insertions(+), 1 deletion(-) diff --git a/ground/openpilotgcs/src/plugins/config/configautotunewidget.cpp b/ground/openpilotgcs/src/plugins/config/configautotunewidget.cpp index 33106be4c..63de056ad 100644 --- a/ground/openpilotgcs/src/plugins/config/configautotunewidget.cpp +++ b/ground/openpilotgcs/src/plugins/config/configautotunewidget.cpp @@ -13,6 +13,7 @@ #include "relaytuningsettings.h" #include "relaytuning.h" #include "stabilizationsettings.h" +#include "hwsettings.h" ConfigAutotuneWidget::ConfigAutotuneWidget(QWidget *parent) : ConfigTaskWidget(parent) @@ -28,6 +29,9 @@ ConfigAutotuneWidget::ConfigAutotuneWidget(QWidget *parent) : connect(m_autotune->rateTuning, SIGNAL(valueChanged(int)), this, SLOT(recomputeStabilization())); connect(m_autotune->attitudeTuning, SIGNAL(valueChanged(int)), this, SLOT(recomputeStabilization())); + addUAVObject("HwSettings"); + addWidget(m_autotune->enableAutoTune); + RelayTuning *relayTuning = RelayTuning::GetInstance(getObjectManager()); Q_ASSERT(relayTuning); if(relayTuning) @@ -134,3 +138,25 @@ void ConfigAutotuneWidget::recomputeStabilization() m_autotune->pitchAttitudeKp->setText(QString().number(stabSettings.PitchPI[StabilizationSettings::PITCHPI_KP])); m_autotune->pitchAttitudeKi->setText(QString().number(stabSettings.PitchPI[StabilizationSettings::PITCHPI_KI])); } +void ConfigAutotuneWidget::refreshWidgetsValues(UAVObject *obj) +{ + HwSettings *hwSettings = HwSettings::GetInstance(getObjectManager()); + if(obj==hwSettings) + { + bool dirtyBack=isDirty(); + HwSettings::DataFields hwSettingsData = hwSettings->getData(); + m_autotune->enableAutoTune->setChecked( + hwSettingsData.OptionalModules[HwSettings::OPTIONALMODULES_AUTOTUNE] == HwSettings::OPTIONALMODULES_ENABLED); + setDirty(dirtyBack); + } + ConfigTaskWidget::refreshWidgetsValues(obj); +} +void ConfigAutotuneWidget::updateObjectsFromWidgets() +{ + HwSettings *hwSettings = HwSettings::GetInstance(getObjectManager()); + HwSettings::DataFields hwSettingsData = hwSettings->getData(); + hwSettingsData.OptionalModules[HwSettings::OPTIONALMODULES_AUTOTUNE] = + m_autotune->enableAutoTune->isChecked() ? HwSettings::OPTIONALMODULES_ENABLED : HwSettings::OPTIONALMODULES_DISABLED; + hwSettings->setData(hwSettingsData); + ConfigTaskWidget::updateObjectsFromWidgets(); +} diff --git a/ground/openpilotgcs/src/plugins/config/configautotunewidget.h b/ground/openpilotgcs/src/plugins/config/configautotunewidget.h index 7a89ed373..c8ac2ba71 100644 --- a/ground/openpilotgcs/src/plugins/config/configautotunewidget.h +++ b/ground/openpilotgcs/src/plugins/config/configautotunewidget.h @@ -51,10 +51,12 @@ private: signals: public slots: - + void refreshWidgetsValues(UAVObject *obj); + void updateObjectsFromWidgets(); private slots: void recomputeStabilization(); void saveStabilization(); + void refreshValues(); }; #endif // CONFIGAUTOTUNE_H From 5ecf04fb159a5128be69d4f758c5e5d435703ca9 Mon Sep 17 00:00:00 2001 From: Fredrik Arvidsson Date: Sun, 23 Sep 2012 14:11:32 +0200 Subject: [PATCH 049/105] OP-39 Restricting connection device to USB when using the wizard. Changed text accordingly. --- .../setupwizard/pages/controllerpage.cpp | 6 +++++- .../setupwizard/pages/controllerpage.ui | 19 +++++++------------ 2 files changed, 12 insertions(+), 13 deletions(-) diff --git a/ground/openpilotgcs/src/plugins/setupwizard/pages/controllerpage.cpp b/ground/openpilotgcs/src/plugins/setupwizard/pages/controllerpage.cpp index 1a0c06457..b17c26ab6 100644 --- a/ground/openpilotgcs/src/plugins/setupwizard/pages/controllerpage.cpp +++ b/ground/openpilotgcs/src/plugins/setupwizard/pages/controllerpage.cpp @@ -70,7 +70,8 @@ void ControllerPage::initializePage() bool ControllerPage::isComplete() const { - return m_connectionManager->isConnected() && ui->boardTypeCombo->currentIndex() > 0; + return m_connectionManager->isConnected() && ui->boardTypeCombo->currentIndex() > 0 && + m_connectionManager->getCurrentDevice().getConName().startsWith("USB:", Qt::CaseInsensitive); } bool ControllerPage::validatePage() @@ -150,6 +151,9 @@ void ControllerPage::devicesChanged(QLinkedList devices) ui->deviceCombo->addItem(deviceItem.getConName()); QString deviceName = (const QString)deviceItem.getConName(); ui->deviceCombo->setItemData(ui->deviceCombo->count() - 1, deviceName, Qt::ToolTipRole); + if(!deviceName.startsWith("USB:", Qt::CaseInsensitive)) { + ui->deviceCombo->setItemData(ui->deviceCombo->count() - 1, QVariant(0), Qt::UserRole - 1); + } if(currSelectedDeviceName != "" && currSelectedDeviceName == deviceName) { indexOfSelectedItem = i; } diff --git a/ground/openpilotgcs/src/plugins/setupwizard/pages/controllerpage.ui b/ground/openpilotgcs/src/plugins/setupwizard/pages/controllerpage.ui index 0a3182426..8164d77e7 100644 --- a/ground/openpilotgcs/src/plugins/setupwizard/pages/controllerpage.ui +++ b/ground/openpilotgcs/src/plugins/setupwizard/pages/controllerpage.ui @@ -26,18 +26,13 @@ <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Lucida Grande'; font-size:13pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'MS Shell Dlg 2'; font-size:12pt; font-weight:600;">OpenPilot board identification</span></p> -<p style="-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:'MS Shell Dlg 2'; font-size:8pt;"></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'MS Shell Dlg 2'; font-size:8pt;"><br /></span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'MS Shell Dlg 2'; font-size:10pt;">To continue, the wizard needs to determine the configuration required for the type of OpenPilot controller you have. When connected, the wizard will attempt to automatically detect the type of board.</span></p> -<p style="-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:'MS Shell Dlg 2'; font-size:10pt;"></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'MS Shell Dlg 2'; font-size:10pt;"><br /></span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'MS Shell Dlg 2'; font-size:10pt;">Please connect the board to a USB port on your computer, or if a serial modem like BlueTooth, PipX or other, power up the board and select the device from the list below. Then press </span><span style=" font-family:'MS Shell Dlg 2'; font-size:10pt; font-weight:600;">Connect</span><span style=" font-family:'MS Shell Dlg 2'; font-size:10pt;">. If the board is already connected and successfully detected, the board type will already be displayed. You can disconnect and select another device if you need to detect another board.</span></p> -<p style="-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:'MS Shell Dlg 2'; font-size:10pt;"></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'MS Shell Dlg 2'; font-size:10pt;"><br /></span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'MS Shell Dlg 2'; font-size:10pt;">Important:</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'MS Shell Dlg 2'; font-size:10pt;">If you need to power your controller with an external power source and are not using USB, please disconnect all components, such as ESCs and servos connected to the output ports of the controller.</span></p></body></html> +</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8pt; font-weight:400; font-style:normal;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:12pt; font-weight:600;">OpenPilot board identification</span></p> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p> +<p style="-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:'Lucida Grande'; font-size:13pt;"><br /></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt;">To continue, the wizard needs to determine the configuration required for the type of OpenPilot controller you have. When connected, the wizard will attempt to automatically detect the type of board.</span></p> +<p style="-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:10pt;"><br /></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt;">Please connect the board to a USB port on your computer and select the device from the list below. Then press </span><span style=" font-size:10pt; font-weight:600;">Connect</span><span style=" font-size:10pt;">. If the board is already connected and successfully detected, the board type will already be displayed. You can disconnect and select another device if you need to detect another board.</span></p></body></html> Qt::AutoText From 3ef26a633ab09fc2407199822fd610264fe0a05f Mon Sep 17 00:00:00 2001 From: Fredrik Arvidsson Date: Sun, 23 Sep 2012 21:58:37 +0200 Subject: [PATCH 050/105] OP-39 Moved reboot page to directly after Rx config page. Added partial save to support changed hardware settings. Made it possible to skip leveling procedure. Changed some texts. Changed isRebootRequired() criteria. --- .../plugins/setupwizard/pages/flashpage.cpp | 1 + .../plugins/setupwizard/pages/inputpage.cpp | 2 +- .../setupwizard/pages/levellingpage.cpp | 4 +-- .../plugins/setupwizard/pages/rebootpage.cpp | 11 ++++---- .../plugins/setupwizard/pages/rebootpage.ui | 4 +-- .../src/plugins/setupwizard/setupwizard.cpp | 21 ++++++++++----- .../src/plugins/setupwizard/setupwizard.h | 1 + .../vehicleconfigurationhelper.cpp | 26 ++++++++++++------- .../setupwizard/vehicleconfigurationhelper.h | 3 +-- 9 files changed, 44 insertions(+), 29 deletions(-) diff --git a/ground/openpilotgcs/src/plugins/setupwizard/pages/flashpage.cpp b/ground/openpilotgcs/src/plugins/setupwizard/pages/flashpage.cpp index c31cda0c6..5a5900ac7 100644 --- a/ground/openpilotgcs/src/plugins/setupwizard/pages/flashpage.cpp +++ b/ground/openpilotgcs/src/plugins/setupwizard/pages/flashpage.cpp @@ -90,6 +90,7 @@ void FlashPage::enableButtons(bool enable) void FlashPage::saveProgress(int total, int current, QString description) { + qDebug() << "Progress " << current << "(" << total << ")"; if(ui->saveProgressBar->maximum() != total) { ui->saveProgressBar->setMaximum(total); } diff --git a/ground/openpilotgcs/src/plugins/setupwizard/pages/inputpage.cpp b/ground/openpilotgcs/src/plugins/setupwizard/pages/inputpage.cpp index b442db3a5..607df838a 100644 --- a/ground/openpilotgcs/src/plugins/setupwizard/pages/inputpage.cpp +++ b/ground/openpilotgcs/src/plugins/setupwizard/pages/inputpage.cpp @@ -62,7 +62,7 @@ bool InputPage::validatePage() else { getWizard()->setInputType(SetupWizard::INPUT_PWM); } - getWizard()->setRestartNeeded(restartNeeded(getWizard()->getInputType())); + getWizard()->setRestartNeeded(getWizard()->isRestartNeeded() || restartNeeded(getWizard()->getInputType())); return true; } diff --git a/ground/openpilotgcs/src/plugins/setupwizard/pages/levellingpage.cpp b/ground/openpilotgcs/src/plugins/setupwizard/pages/levellingpage.cpp index 6d7340f4e..a00959522 100644 --- a/ground/openpilotgcs/src/plugins/setupwizard/pages/levellingpage.cpp +++ b/ground/openpilotgcs/src/plugins/setupwizard/pages/levellingpage.cpp @@ -54,8 +54,8 @@ bool LevellingPage::validatePage() bool LevellingPage::isComplete() const { - return const_cast(this)->getWizard()->isLevellingPerformed() && - ui->levelButton->isEnabled(); + //const_cast(this)->getWizard()->isLevellingPerformed() && + return ui->levelButton->isEnabled(); } void LevellingPage::enableButtons(bool enable) diff --git a/ground/openpilotgcs/src/plugins/setupwizard/pages/rebootpage.cpp b/ground/openpilotgcs/src/plugins/setupwizard/pages/rebootpage.cpp index 4a2100e3a..43153380b 100644 --- a/ground/openpilotgcs/src/plugins/setupwizard/pages/rebootpage.cpp +++ b/ground/openpilotgcs/src/plugins/setupwizard/pages/rebootpage.cpp @@ -46,10 +46,12 @@ RebootPage::~RebootPage() void RebootPage::initializePage() { - connect(&m_timer, SIGNAL(timeout()), this, SLOT(toggleLabel())); - m_timer.setInterval(500); - m_timer.setSingleShot(false); - m_timer.start(); + if(!m_timer.isActive()) { + connect(&m_timer, SIGNAL(timeout()), this, SLOT(toggleLabel())); + m_timer.setInterval(500); + m_timer.setSingleShot(false); + m_timer.start(); + } } bool RebootPage::validatePage() @@ -62,5 +64,4 @@ void RebootPage::toggleLabel() m_toggl = !m_toggl; ui->yellowLabel->setVisible(m_toggl); ui->redLabel->setVisible(!m_toggl); - qDebug() << "Toggle = " << m_toggl; } diff --git a/ground/openpilotgcs/src/plugins/setupwizard/pages/rebootpage.ui b/ground/openpilotgcs/src/plugins/setupwizard/pages/rebootpage.ui index b808d13b1..f1720a3a5 100644 --- a/ground/openpilotgcs/src/plugins/setupwizard/pages/rebootpage.ui +++ b/ground/openpilotgcs/src/plugins/setupwizard/pages/rebootpage.ui @@ -42,7 +42,7 @@ p, li { white-space: pre-wrap; } 50 180 501 - 71 + 101 @@ -50,7 +50,7 @@ p, li { white-space: pre-wrap; } <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8pt; font-weight:400; font-style:normal;"> -<p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt; color:#000000;">The configuration created by the wizard contains settings that require a reboot of your controller. Please power cycle the controller before continuing. To power cycle the controller remove all batteries and the usb cable for at least 30 seconds.</span></p></body></html> +<p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt; color:#000000;">The configuration created by the wizard contains settings that require a reboot of your controller. Please power cycle the controller before continuing. To power cycle the controller remove all batteries and the usb cable for at least 30 seconds. </span></p></body></html> Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop diff --git a/ground/openpilotgcs/src/plugins/setupwizard/setupwizard.cpp b/ground/openpilotgcs/src/plugins/setupwizard/setupwizard.cpp index 95fc75747..7d30b6d1a 100644 --- a/ground/openpilotgcs/src/plugins/setupwizard/setupwizard.cpp +++ b/ground/openpilotgcs/src/plugins/setupwizard/setupwizard.cpp @@ -96,6 +96,14 @@ int SetupWizard::nextId() const case PAGE_MULTI: return PAGE_OUTPUT; case PAGE_INPUT: + if(isRestartNeeded()) { + saveHardwareSettings(); + return PAGE_REBOOT; + } + else { + return PAGE_VEHICLES; + } + case PAGE_REBOOT: return PAGE_VEHICLES; case PAGE_OUTPUT: return PAGE_SUMMARY; @@ -106,13 +114,6 @@ int SetupWizard::nextId() const case PAGE_SUMMARY: return PAGE_LEVELLING; case PAGE_FLASH: - if(isRestartNeeded()) { - return PAGE_REBOOT; - } - else { - return PAGE_END; - } - case PAGE_REBOOT: return PAGE_END; case PAGE_NOTYETIMPLEMENTED: return PAGE_END; @@ -271,3 +272,9 @@ void SetupWizard::createPages() setStartId(PAGE_START); } + +bool SetupWizard::saveHardwareSettings() const +{ + VehicleConfigurationHelper helper(const_cast(this)); + return helper.setupHardwareSettings(); +} diff --git a/ground/openpilotgcs/src/plugins/setupwizard/setupwizard.h b/ground/openpilotgcs/src/plugins/setupwizard/setupwizard.h index 8c908e92a..72458ffe6 100644 --- a/ground/openpilotgcs/src/plugins/setupwizard/setupwizard.h +++ b/ground/openpilotgcs/src/plugins/setupwizard/setupwizard.h @@ -85,6 +85,7 @@ private: PAGE_HELI, PAGE_SURFACE, PAGE_INPUT, PAGE_OUTPUT, PAGE_LEVELLING, PAGE_CALIBRATION, PAGE_FLASH, PAGE_SUMMARY, PAGE_NOTYETIMPLEMENTED, PAGE_REBOOT, PAGE_END}; void createPages(); + bool saveHardwareSettings() const; CONTROLLER_TYPE m_controllerType; VEHICLE_TYPE m_vehicleType; diff --git a/ground/openpilotgcs/src/plugins/setupwizard/vehicleconfigurationhelper.cpp b/ground/openpilotgcs/src/plugins/setupwizard/vehicleconfigurationhelper.cpp index add4e8a29..6d0a5946e 100644 --- a/ground/openpilotgcs/src/plugins/setupwizard/vehicleconfigurationhelper.cpp +++ b/ground/openpilotgcs/src/plugins/setupwizard/vehicleconfigurationhelper.cpp @@ -55,11 +55,11 @@ bool VehicleConfigurationHelper::setupVehicle(bool save) clearModifiedObjects(); resetVehicleConfig(); resetGUIData(); - if(!saveChangesToController(save)) - { + if(!saveChangesToController(save)) { return false; } + m_progress = 0; applyHardwareConfiguration(); applyVehicleConfiguration(); applyActuatorConfiguration(); @@ -69,12 +69,19 @@ bool VehicleConfigurationHelper::setupVehicle(bool save) applyManualControlDefaults(); bool result = saveChangesToController(save); - if(result) { - emit saveProgress(PROGRESS_STEPS, ++m_progress, tr("Done!")); - } - else { - emit saveProgress(PROGRESS_STEPS, ++m_progress, tr("Failed!")); - } + emit saveProgress(m_modifiedObjects.count() + 1, ++m_progress, result ? tr("Done!") : tr("Failed!")); + return result; +} + +bool VehicleConfigurationHelper::setupHardwareSettings(bool save) +{ + m_progress = 0; + clearModifiedObjects(); + applyHardwareConfiguration(); + applyManualControlDefaults(); + + bool result = saveChangesToController(save); + emit saveProgress(m_modifiedObjects.count() + 1, ++m_progress, result ? tr("Done!") : tr("Failed!")); return result; } @@ -429,7 +436,7 @@ bool VehicleConfigurationHelper::saveChangesToController(bool save) QString objDescription = objPair->second; if(UAVObject::GetGcsAccess(obj->getMetadata()) != UAVObject::ACCESS_READONLY && obj->isSettings()) { - emit saveProgress(PROGRESS_STEPS, ++m_progress, objDescription); + emit saveProgress(m_modifiedObjects.count() + 1, ++m_progress, objDescription); m_currentTransactionObjectID = obj->getObjID(); @@ -490,7 +497,6 @@ bool VehicleConfigurationHelper::saveChangesToController(bool save) qDebug() << "Finished saving modified objects to controller. Success = " << m_transactionOK; - clearModifiedObjects(); return m_transactionOK; } diff --git a/ground/openpilotgcs/src/plugins/setupwizard/vehicleconfigurationhelper.h b/ground/openpilotgcs/src/plugins/setupwizard/vehicleconfigurationhelper.h index 0810d3390..430594d7a 100644 --- a/ground/openpilotgcs/src/plugins/setupwizard/vehicleconfigurationhelper.h +++ b/ground/openpilotgcs/src/plugins/setupwizard/vehicleconfigurationhelper.h @@ -61,6 +61,7 @@ class VehicleConfigurationHelper : public QObject public: VehicleConfigurationHelper(VehicleConfigurationSource* configSource); bool setupVehicle(bool save = true); + bool setupHardwareSettings(bool save = true); static const qint16 LEGACY_ESC_FREQUENCE; static const qint16 RAPID_ESC_FREQUENCE; @@ -72,8 +73,6 @@ private: static const int MIXER_TYPE_MOTOR = 1; static const int MIXER_TYPE_SERVO = 2; - static const int PROGRESS_STEPS = 11; - VehicleConfigurationSource *m_configSource; UAVObjectManager *m_uavoManager; From dc10917f70e8e3b19ff669500032e8c7d973b4fe Mon Sep 17 00:00:00 2001 From: PT_Dreamer Date: Sun, 23 Sep 2012 22:50:05 +0100 Subject: [PATCH 051/105] GCS-Yaw mixing level reverse button Changed the slider values from -100/+100 to 0/100 and wrote the code for the invert checkbox. NOT TESTED --- .../src/plugins/config/airframe.ui | 2 +- .../src/plugins/config/autotune.ui | 35 ++++++------ .../configmultirotorwidget.cpp | 56 ++++++++++++------- .../cfg_vehicletypes/configmultirotorwidget.h | 2 +- 4 files changed, 55 insertions(+), 40 deletions(-) diff --git a/ground/openpilotgcs/src/plugins/config/airframe.ui b/ground/openpilotgcs/src/plugins/config/airframe.ui index 4b1b44d07..7171fcd2f 100755 --- a/ground/openpilotgcs/src/plugins/config/airframe.ui +++ b/ground/openpilotgcs/src/plugins/config/airframe.ui @@ -1092,7 +1092,7 @@ margin:1px; Typical value is 50% for + or X configuration on quads. - -100 + 0 100 diff --git a/ground/openpilotgcs/src/plugins/config/autotune.ui b/ground/openpilotgcs/src/plugins/config/autotune.ui index 9625c1060..1969aa064 100644 --- a/ground/openpilotgcs/src/plugins/config/autotune.ui +++ b/ground/openpilotgcs/src/plugins/config/autotune.ui @@ -21,12 +21,12 @@ - -1 + 6 - 0 + 1 @@ -80,17 +80,18 @@ <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Lucida Grande'; font-size:13pt; font-weight:400; font-style:normal;"> -<p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:20pt; font-weight:600; color:#ff0000;">WARNING:</span></p> -<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">This is an experimental plugin for the GCS that is going to make your aircraft shake etc so test with lots of space and be <span style=" font-weight:600;">very very wary</span> for it creating bad tuning values.  Basically there is no reason to think this will work at all.<br /><br />To use autotuning, here are the steps:</p> -<ul style="margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; -qt-list-indent: 1;"><li style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Go to the UAVOBrowser and under HwSettings.OptionalModules enable Autotune.  Click send then save.  Power cycle your board (disconnect battery AND usb).<br /></li> -<li style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">In Input configuration set one of your flight modes to &quot;Autotune&quot;<br /></li> -<li style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Take off, flip to autotune, keep it in the air while it's shaking<br /></li> -<li style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Land and disarm.  (note - you <span style=" font-weight:600;">MUST</span> stay in autotune mode through this point, leaving autotune before disarming aborts the process)<br /></li> -<li style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">We'd recommend checking your stabilization settings before trying them out. <br /></li> -<li style=" margin-top:0px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Test fly then new settings</li> -<li style=" margin-top:0px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">If you're ready to proceed, click the &quot;Enable Autotune Module&quot; checkbox below this text, and go to the next tab.</li></ul></body></html> +</style></head><body style=" font-family:'Ubuntu'; font-size:11pt; font-weight:400; font-style:normal;"> +<p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Lucida Grande'; font-size:20pt; font-weight:600; color:#ff0000;">WARNING:</span></p> +<p style="-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:'Lucida Grande'; font-size:13pt;"></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Lucida Grande'; font-size:13pt;"><br /></span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Lucida Grande'; font-size:13pt;">This is an experimental plugin for the GCS that is going to make your aircraft shake etc so test with lots of space and be </span><span style=" font-family:'Lucida Grande'; font-size:13pt; font-weight:600;">very very wary</span><span style=" font-family:'Lucida Grande'; font-size:13pt;"> for it creating bad tuning values.  Basically there is no reason to think this will work at all.<br /><br />To use autotuning, here are the steps:</span></p> +<ul style="margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; -qt-list-indent: 1;"><li style=" font-family:'Lucida Grande'; font-size:13pt;" style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Go to the UAVOBrowser and under HwSettings.OptionalModules enable Autotune.  Click send then save.  Power cycle your board (disconnect battery AND usb).<br /></li> +<li style=" font-family:'Lucida Grande'; font-size:13pt;" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">In Input configuration set one of your flight modes to &quot;Autotune&quot;<br /></li> +<li style=" font-family:'Lucida Grande'; font-size:13pt;" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Take off, flip to autotune, keep it in the air while it's shaking<br /></li> +<li style=" font-family:'Lucida Grande'; font-size:13pt;" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Land and disarm.  (note - you <span style=" font-weight:600;">MUST</span> stay in autotune mode through this point, leaving autotune before disarming aborts the process)<br /></li> +<li style=" font-family:'Lucida Grande'; font-size:13pt;" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">We'd recommend checking your stabilization settings before trying them out. <br /></li> +<li style=" font-family:'Lucida Grande'; font-size:13pt;" style=" margin-top:0px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Test fly then new settings</li> +<li style=" font-family:'Lucida Grande'; font-size:13pt;" style=" margin-top:0px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">If you're ready to proceed, click the &quot;Enable Autotune Module&quot; checkbox below this text, and go to the next tab.</li></ul></body></html> @@ -194,8 +195,8 @@ p, li { white-space: pre-wrap; } 0 0 - 709 - 588 + 717 + 602 @@ -690,8 +691,6 @@ Useful if you have accidentally changed some settings. - - - + diff --git a/ground/openpilotgcs/src/plugins/config/cfg_vehicletypes/configmultirotorwidget.cpp b/ground/openpilotgcs/src/plugins/config/cfg_vehicletypes/configmultirotorwidget.cpp index 79df8ece7..3c796a142 100644 --- a/ground/openpilotgcs/src/plugins/config/cfg_vehicletypes/configmultirotorwidget.cpp +++ b/ground/openpilotgcs/src/plugins/config/cfg_vehicletypes/configmultirotorwidget.cpp @@ -94,7 +94,7 @@ void ConfigMultiRotorWidget::setupUI(QString frameType) m_aircraft->mrRollMixLevel->setValue(100); m_aircraft->mrPitchMixLevel->setValue(100); - m_aircraft->mrYawMixLevel->setValue(50); + setYawMixLevel(50); m_aircraft->triYawChannelBox->setEnabled(true); } @@ -108,7 +108,7 @@ void ConfigMultiRotorWidget::setupUI(QString frameType) // init mixer levels m_aircraft->mrRollMixLevel->setValue(50); m_aircraft->mrPitchMixLevel->setValue(50); - m_aircraft->mrYawMixLevel->setValue(50); + setYawMixLevel(50); } else if (frameType == "QuadP" || frameType == "Quad +") { setComboCurrentIndex( m_aircraft->multirotorFrameType, m_aircraft->multirotorFrameType->findText("Quad +")); @@ -119,7 +119,7 @@ void ConfigMultiRotorWidget::setupUI(QString frameType) m_aircraft->mrRollMixLevel->setValue(100); m_aircraft->mrPitchMixLevel->setValue(100); - m_aircraft->mrYawMixLevel->setValue(50); + setYawMixLevel(50); } else if (frameType == "Hexa" || frameType == "Hexacopter") { @@ -131,7 +131,7 @@ void ConfigMultiRotorWidget::setupUI(QString frameType) m_aircraft->mrRollMixLevel->setValue(50); m_aircraft->mrPitchMixLevel->setValue(33); - m_aircraft->mrYawMixLevel->setValue(33); + setYawMixLevel(33); } else if (frameType == "HexaX" || frameType == "Hexacopter X" ) { setComboCurrentIndex( m_aircraft->multirotorFrameType, m_aircraft->multirotorFrameType->findText("Hexacopter X")); @@ -142,7 +142,7 @@ void ConfigMultiRotorWidget::setupUI(QString frameType) m_aircraft->mrRollMixLevel->setValue(33); m_aircraft->mrPitchMixLevel->setValue(50); - m_aircraft->mrYawMixLevel->setValue(33); + setYawMixLevel(33); } else if (frameType == "HexaCoax" || frameType == "Hexacopter Y6") @@ -155,7 +155,7 @@ void ConfigMultiRotorWidget::setupUI(QString frameType) m_aircraft->mrRollMixLevel->setValue(100); m_aircraft->mrPitchMixLevel->setValue(50); - m_aircraft->mrYawMixLevel->setValue(66); + setYawMixLevel(66); } else if (frameType == "Octo" || frameType == "Octocopter") @@ -168,7 +168,7 @@ void ConfigMultiRotorWidget::setupUI(QString frameType) m_aircraft->mrRollMixLevel->setValue(33); m_aircraft->mrPitchMixLevel->setValue(33); - m_aircraft->mrYawMixLevel->setValue(25); + setYawMixLevel(25); } else if (frameType == "OctoV" || frameType == "Octocopter V") { @@ -180,7 +180,7 @@ void ConfigMultiRotorWidget::setupUI(QString frameType) m_aircraft->mrRollMixLevel->setValue(25); m_aircraft->mrPitchMixLevel->setValue(25); - m_aircraft->mrYawMixLevel->setValue(25); + setYawMixLevel(25); } else if (frameType == "OctoCoaxP" || frameType == "Octo Coax +") @@ -193,7 +193,7 @@ void ConfigMultiRotorWidget::setupUI(QString frameType) m_aircraft->mrRollMixLevel->setValue(100); m_aircraft->mrPitchMixLevel->setValue(100); - m_aircraft->mrYawMixLevel->setValue(50); + setYawMixLevel(50); } else if (frameType == "OctoCoaxX" || frameType == "Octo Coax X") @@ -205,7 +205,7 @@ void ConfigMultiRotorWidget::setupUI(QString frameType) m_aircraft->mrRollMixLevel->setValue(50); m_aircraft->mrPitchMixLevel->setValue(50); - m_aircraft->mrYawMixLevel->setValue(50); + setYawMixLevel(50); } } @@ -259,6 +259,21 @@ QStringList ConfigMultiRotorWidget::getChannelDescriptions() return channelDesc; } +void ConfigMultiRotorWidget::setYawMixLevel(int value) +{ + if(value<0) + { + m_aircraft->mrYawMixLevel->setValue((-1)*value); + m_aircraft->TricopterRevMixercheckBox->setChecked(true); + } + else + { + m_aircraft->mrYawMixLevel->setValue(value); + m_aircraft->TricopterRevMixercheckBox->setChecked(false); + } + +} + @@ -500,7 +515,7 @@ void ConfigMultiRotorWidget::refreshWidgetsValues(QString frameType) m_aircraft->mrPitchMixLevel->setValue( value/1.27 ); value = getMixerVectorValue(mixer, channel, VehicleConfig::MIXERVECTOR_YAW); - m_aircraft->mrYawMixLevel->setValue( 1-value/1.27 ); + setYawMixLevel( 1-value/1.27 ); channel = m_aircraft->multiMotorChannelBox2->currentIndex() - 1; value = getMixerVectorValue(mixer, channel, VehicleConfig::MIXERVECTOR_ROLL); @@ -526,7 +541,7 @@ void ConfigMultiRotorWidget::refreshWidgetsValues(QString frameType) m_aircraft->mrPitchMixLevel->setValue( value/1.27 ); value = getMixerVectorValue(mixer, channel, VehicleConfig::MIXERVECTOR_YAW); - m_aircraft->mrYawMixLevel->setValue( 1-value/1.27 ); + setYawMixLevel( 1-value/1.27 ); value = getMixerVectorValue(mixer, channel, VehicleConfig::MIXERVECTOR_ROLL); m_aircraft->mrRollMixLevel->setValue( value/1.27); @@ -556,7 +571,7 @@ void ConfigMultiRotorWidget::refreshWidgetsValues(QString frameType) m_aircraft->mrPitchMixLevel->setValue( floor(value/1.27) ); value = getMixerVectorValue(mixer, channel, VehicleConfig::MIXERVECTOR_YAW); - m_aircraft->mrYawMixLevel->setValue( floor(-value/1.27) ); + setYawMixLevel( floor(-value/1.27) ); //change channels channel = m_aircraft->multiMotorChannelBox2->currentIndex() - 1; @@ -589,7 +604,7 @@ void ConfigMultiRotorWidget::refreshWidgetsValues(QString frameType) m_aircraft->mrPitchMixLevel->setValue( floor(value/1.27) ); value = getMixerVectorValue(mixer, channel, VehicleConfig::MIXERVECTOR_YAW); - m_aircraft->mrYawMixLevel->setValue( floor(-value/1.27) ); + setYawMixLevel( floor(-value/1.27) ); channel = m_aircraft->multiMotorChannelBox2->currentIndex() - 1; value = getMixerVectorValue(mixer, channel, VehicleConfig::MIXERVECTOR_ROLL); @@ -617,7 +632,7 @@ void ConfigMultiRotorWidget::refreshWidgetsValues(QString frameType) m_aircraft->mrPitchMixLevel->setValue( value/1.27 ); value = getMixerVectorValue(mixer, channel, VehicleConfig::MIXERVECTOR_YAW); - m_aircraft->mrYawMixLevel->setValue( value/1.27 ); + setYawMixLevel( value/1.27 ); channel = m_aircraft->multiMotorChannelBox2->currentIndex() - 1; value = getMixerVectorValue(mixer, channel, VehicleConfig::MIXERVECTOR_ROLL); @@ -648,7 +663,7 @@ void ConfigMultiRotorWidget::refreshWidgetsValues(QString frameType) m_aircraft->mrPitchMixLevel->setValue( floor(value/1.27) ); value = getMixerVectorValue(mixer, channel, VehicleConfig::MIXERVECTOR_YAW); - m_aircraft->mrYawMixLevel->setValue( floor(-value/1.27) ); + setYawMixLevel( floor(-value/1.27) ); //change channels channel = m_aircraft->multiMotorChannelBox2->currentIndex() - 1; @@ -660,7 +675,7 @@ void ConfigMultiRotorWidget::refreshWidgetsValues(QString frameType) m_aircraft->mrPitchMixLevel->setValue( floor(value/1.27) ); value = getMixerVectorValue(mixer, channel, VehicleConfig::MIXERVECTOR_YAW); - m_aircraft->mrYawMixLevel->setValue( floor(-value/1.27) ); + setYawMixLevel( floor(-value/1.27) ); //change channels channel = m_aircraft->multiMotorChannelBox2->currentIndex() - 1; @@ -672,7 +687,7 @@ void ConfigMultiRotorWidget::refreshWidgetsValues(QString frameType) m_aircraft->mrPitchMixLevel->setValue( floor(value/1.27) ); value = getMixerVectorValue(mixer, channel, VehicleConfig::MIXERVECTOR_YAW); - m_aircraft->mrYawMixLevel->setValue( floor(-value/1.27) ); + setYawMixLevel( floor(-value/1.27) ); //change channels channel = m_aircraft->multiMotorChannelBox3->currentIndex() - 1; @@ -705,7 +720,7 @@ void ConfigMultiRotorWidget::refreshWidgetsValues(QString frameType) m_aircraft->mrPitchMixLevel->setValue( floor(value/1.27) ); value = getMixerVectorValue(mixer, channel, VehicleConfig::MIXERVECTOR_YAW); - m_aircraft->mrYawMixLevel->setValue( floor(-value/1.27) ); + setYawMixLevel( floor(-value/1.27) ); value = getMixerVectorValue(mixer, channel, VehicleConfig::MIXERVECTOR_ROLL); m_aircraft->mrRollMixLevel->setValue( floor(value/1.27) ); @@ -959,7 +974,8 @@ bool ConfigMultiRotorWidget::setupMultiRotorMixer(double mixerFactors[8][3]) // and enable only the relevant channels: double pFactor = (double)m_aircraft->mrPitchMixLevel->value()/100; double rFactor = (double)m_aircraft->mrRollMixLevel->value()/100; - double yFactor = (double)m_aircraft->mrYawMixLevel->value()/100; + double invert=m_aircraft->TricopterRevMixercheckBox->isChecked() ? -1:1; + double yFactor =invert * (double)m_aircraft->mrYawMixLevel->value()/100; for (int i=0 ; i<8; i++) { if(mmList.at(i)->isEnabled()) { diff --git a/ground/openpilotgcs/src/plugins/config/cfg_vehicletypes/configmultirotorwidget.h b/ground/openpilotgcs/src/plugins/config/cfg_vehicletypes/configmultirotorwidget.h index 085aab106..54873369b 100644 --- a/ground/openpilotgcs/src/plugins/config/cfg_vehicletypes/configmultirotorwidget.h +++ b/ground/openpilotgcs/src/plugins/config/cfg_vehicletypes/configmultirotorwidget.h @@ -67,7 +67,7 @@ private: virtual void ResetActuators(GUIConfigDataUnion* configData); static QStringList getChannelDescriptions(); static const QString CHANNELBOXNAME; - + void setYawMixLevel(int); private slots: virtual void setupUI(QString airframeType); virtual void refreshWidgetsValues(QString frameType); From 616a27ca824f7cefa230d1d2f64bd4b97cdbcdfd Mon Sep 17 00:00:00 2001 From: chris pember Date: Sun, 23 Sep 2012 22:34:40 -0700 Subject: [PATCH 052/105] fixed that path error PT brought up in forum i hope --- ground/openpilotgcs/src/plugins/config/airframe.ui | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/ground/openpilotgcs/src/plugins/config/airframe.ui b/ground/openpilotgcs/src/plugins/config/airframe.ui index 4b1b44d07..60e578efb 100755 --- a/ground/openpilotgcs/src/plugins/config/airframe.ui +++ b/ground/openpilotgcs/src/plugins/config/airframe.ui @@ -3202,7 +3202,8 @@ p, li { white-space: pre-wrap; } <tr> <td style="border: none;"> <p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:14pt; font-weight:600; color:#ff0000;">SETTING UP FEED FORWARD REQUIRES CAUTION</span></p> -<p style="-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:'Ubuntu'; font-size:11pt;"><br /></p> +<p style="-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:'Ubuntu'; font-size:11pt;"></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:11pt;"><br /></span></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Beware: Feed Forward Tuning will launch all engines around mid-throttle, you have been warned!</p> <p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">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.</p></td></tr></table></body></html> @@ -3255,7 +3256,7 @@ p, li { white-space: pre-wrap; } - + :/core/images/helpicon.svg:/core/images/helpicon.svg @@ -3308,7 +3309,7 @@ p, li { white-space: pre-wrap; } - + From 85ed1c364dfc5c744242b56923d064d3c332a3e9 Mon Sep 17 00:00:00 2001 From: Laura Sebesta Date: Mon, 24 Sep 2012 10:24:37 +0200 Subject: [PATCH 053/105] Changed UAVO browser erase icon to reset icon. --- .../plugins/uavobjectbrowser/images/reset.png | Bin 0 -> 31001 bytes .../uavobjectbrowser/uavobjectbrowser.qrc | 1 + .../uavobjectbrowser/uavobjectbrowser.ui | 4 ++-- 3 files changed, 3 insertions(+), 2 deletions(-) create mode 100644 ground/openpilotgcs/src/plugins/uavobjectbrowser/images/reset.png diff --git a/ground/openpilotgcs/src/plugins/uavobjectbrowser/images/reset.png b/ground/openpilotgcs/src/plugins/uavobjectbrowser/images/reset.png new file mode 100644 index 0000000000000000000000000000000000000000..231922279f847b071ed5995ce2fa842a2461181f GIT binary patch literal 31001 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/up_alt.png images/trash.png images/1343241276_eye.png + images/reset.png diff --git a/ground/openpilotgcs/src/plugins/uavobjectbrowser/uavobjectbrowser.ui b/ground/openpilotgcs/src/plugins/uavobjectbrowser/uavobjectbrowser.ui index 959df59cc..e08c80535 100644 --- a/ground/openpilotgcs/src/plugins/uavobjectbrowser/uavobjectbrowser.ui +++ b/ground/openpilotgcs/src/plugins/uavobjectbrowser/uavobjectbrowser.ui @@ -128,14 +128,14 @@ - Erase + Resets UAV object setting to default values at next boot ... - :/uavobjectbrowser/images/trash.png:/uavobjectbrowser/images/trash.png + :/uavobjectbrowser/images/reset.png:/uavobjectbrowser/images/reset.png From c04318493a3d125349cb56e8c15663c901c99861 Mon Sep 17 00:00:00 2001 From: PT_Dreamer Date: Mon, 24 Sep 2012 13:38:14 +0100 Subject: [PATCH 054/105] GCS- Fixes compile error --- ground/openpilotgcs/src/plugins/config/configautotunewidget.h | 1 - 1 file changed, 1 deletion(-) diff --git a/ground/openpilotgcs/src/plugins/config/configautotunewidget.h b/ground/openpilotgcs/src/plugins/config/configautotunewidget.h index c8ac2ba71..466335d04 100644 --- a/ground/openpilotgcs/src/plugins/config/configautotunewidget.h +++ b/ground/openpilotgcs/src/plugins/config/configautotunewidget.h @@ -56,7 +56,6 @@ public slots: private slots: void recomputeStabilization(); void saveStabilization(); - void refreshValues(); }; #endif // CONFIGAUTOTUNE_H From 9d5d67a45a9343268cffceba74b63014f8472582 Mon Sep 17 00:00:00 2001 From: Laura Sebesta Date: Mon, 24 Sep 2012 22:01:19 +0200 Subject: [PATCH 055/105] Added swapping of artwork when multirotor direction reversed. --- .../src/plugins/config/airframe.ui | 6 +- .../configmultirotorwidget.cpp | 97 +- .../cfg_vehicletypes/configmultirotorwidget.h | 5 + .../config/configvehicletypewidget.cpp | 11 +- .../plugins/config/configvehicletypewidget.h | 1 + .../config/images/multirotor-shapes.svg | 5623 ++++++++++++++++- 6 files changed, 5527 insertions(+), 216 deletions(-) diff --git a/ground/openpilotgcs/src/plugins/config/airframe.ui b/ground/openpilotgcs/src/plugins/config/airframe.ui index 7171fcd2f..b6006b569 100755 --- a/ground/openpilotgcs/src/plugins/config/airframe.ui +++ b/ground/openpilotgcs/src/plugins/config/airframe.ui @@ -1450,7 +1450,7 @@ font: bold 12px; margin:1px; - Multirotor Yaw Direction + Multirotor Motor Direction Qt::AlignCenter @@ -1506,9 +1506,9 @@ margin:1px; - + - Reverse Yaw Mix + Reverse all motors diff --git a/ground/openpilotgcs/src/plugins/config/cfg_vehicletypes/configmultirotorwidget.cpp b/ground/openpilotgcs/src/plugins/config/cfg_vehicletypes/configmultirotorwidget.cpp index 3c796a142..be8ed83a1 100644 --- a/ground/openpilotgcs/src/plugins/config/cfg_vehicletypes/configmultirotorwidget.cpp +++ b/ground/openpilotgcs/src/plugins/config/cfg_vehicletypes/configmultirotorwidget.cpp @@ -49,7 +49,7 @@ const QString ConfigMultiRotorWidget::CHANNELBOXNAME = QString("multiMotorChanne /** Constructor */ -ConfigMultiRotorWidget::ConfigMultiRotorWidget(Ui_AircraftWidget *aircraft, QWidget *parent) : VehicleConfig(parent) +ConfigMultiRotorWidget::ConfigMultiRotorWidget(Ui_AircraftWidget *aircraft, QWidget *parent) : VehicleConfig(parent), invertMotors(1) { m_aircraft = aircraft; } @@ -87,7 +87,6 @@ void ConfigMultiRotorWidget::setupUI(QString frameType) if (frameType == "Tri" || frameType == "Tricopter Y") { setComboCurrentIndex( m_aircraft->multirotorFrameType, m_aircraft->multirotorFrameType->findText("Tricopter Y")); - quad->setElementId("tri"); //Enable all necessary motor channel boxes... enableComboBoxes(uiowner, CHANNELBOXNAME, 3, true); @@ -100,7 +99,6 @@ void ConfigMultiRotorWidget::setupUI(QString frameType) } else if (frameType == "QuadX" || frameType == "Quad X") { setComboCurrentIndex( m_aircraft->multirotorFrameType, m_aircraft->multirotorFrameType->findText("Quad X")); - quad->setElementId("quad-x"); //Enable all necessary motor channel boxes... enableComboBoxes(uiowner, CHANNELBOXNAME, 4, true); @@ -112,7 +110,6 @@ void ConfigMultiRotorWidget::setupUI(QString frameType) } else if (frameType == "QuadP" || frameType == "Quad +") { setComboCurrentIndex( m_aircraft->multirotorFrameType, m_aircraft->multirotorFrameType->findText("Quad +")); - quad->setElementId("quad-plus"); //Enable all necessary motor channel boxes... enableComboBoxes(uiowner, CHANNELBOXNAME, 4, true); @@ -124,7 +121,6 @@ void ConfigMultiRotorWidget::setupUI(QString frameType) else if (frameType == "Hexa" || frameType == "Hexacopter") { setComboCurrentIndex( m_aircraft->multirotorFrameType, m_aircraft->multirotorFrameType->findText("Hexacopter")); - quad->setElementId("quad-hexa"); //Enable all necessary motor channel boxes... enableComboBoxes(uiowner, CHANNELBOXNAME, 6, true); @@ -135,7 +131,6 @@ void ConfigMultiRotorWidget::setupUI(QString frameType) } else if (frameType == "HexaX" || frameType == "Hexacopter X" ) { setComboCurrentIndex( m_aircraft->multirotorFrameType, m_aircraft->multirotorFrameType->findText("Hexacopter X")); - quad->setElementId("quad-hexa-H"); //Enable all necessary motor channel boxes... enableComboBoxes(uiowner, CHANNELBOXNAME, 6, true); @@ -148,7 +143,6 @@ void ConfigMultiRotorWidget::setupUI(QString frameType) else if (frameType == "HexaCoax" || frameType == "Hexacopter Y6") { setComboCurrentIndex( m_aircraft->multirotorFrameType, m_aircraft->multirotorFrameType->findText("Hexacopter Y6")); - quad->setElementId("hexa-coax"); //Enable all necessary motor channel boxes... enableComboBoxes(uiowner, CHANNELBOXNAME, 6, true); @@ -161,7 +155,6 @@ void ConfigMultiRotorWidget::setupUI(QString frameType) else if (frameType == "Octo" || frameType == "Octocopter") { setComboCurrentIndex( m_aircraft->multirotorFrameType, m_aircraft->multirotorFrameType->findText("Octocopter")); - quad->setElementId("quad-octo"); //Enable all necessary motor channel boxes enableComboBoxes(uiowner, CHANNELBOXNAME, 8, true); @@ -173,7 +166,6 @@ void ConfigMultiRotorWidget::setupUI(QString frameType) else if (frameType == "OctoV" || frameType == "Octocopter V") { setComboCurrentIndex( m_aircraft->multirotorFrameType, m_aircraft->multirotorFrameType->findText("Octocopter V")); - quad->setElementId("quad-octo-v"); //Enable all necessary motor channel boxes enableComboBoxes(uiowner, CHANNELBOXNAME, 8, true); @@ -186,7 +178,6 @@ void ConfigMultiRotorWidget::setupUI(QString frameType) else if (frameType == "OctoCoaxP" || frameType == "Octo Coax +") { setComboCurrentIndex( m_aircraft->multirotorFrameType, m_aircraft->multirotorFrameType->findText("Octo Coax +")); - quad->setElementId("octo-coax-P"); //Enable all necessary motor channel boxes enableComboBoxes(uiowner, CHANNELBOXNAME, 8, true); @@ -199,13 +190,89 @@ void ConfigMultiRotorWidget::setupUI(QString frameType) else if (frameType == "OctoCoaxX" || frameType == "Octo Coax X") { setComboCurrentIndex( m_aircraft->multirotorFrameType, m_aircraft->multirotorFrameType->findText("Octo Coax X")); - quad->setElementId("octo-coax-X"); + //Enable all necessary motor channel boxes enableComboBoxes(uiowner, CHANNELBOXNAME, 8, true); m_aircraft->mrRollMixLevel->setValue(50); m_aircraft->mrPitchMixLevel->setValue(50); setYawMixLevel(50); + } + + //Draw the appropriate airframe + drawAirframe(frameType); +} + +void ConfigMultiRotorWidget::drawAirframe(QString frameType){ + + invertMotors = m_aircraft->MultirotorRevMixercheckBox->isChecked() ? -1:1; + + if (frameType == "Tri" || frameType == "Tricopter Y") { + if(invertMotors > 0) + quad->setElementId("tri"); + else + quad->setElementId("tri_reverse"); + } + else if (frameType == "QuadX" || frameType == "Quad X") { + if(invertMotors > 0) + quad->setElementId("quad-x"); + else + quad->setElementId("quad-x_reverse"); + } + else if (frameType == "QuadP" || frameType == "Quad +") { + if(invertMotors > 0) + quad->setElementId("quad-plus"); + else + quad->setElementId("quad-plus_reverse"); + } + else if (frameType == "Hexa" || frameType == "Hexacopter") + { + if(invertMotors > 0) + quad->setElementId("quad-hexa"); + else + quad->setElementId("quad-hexa_reverse"); + } + else if (frameType == "HexaX" || frameType == "Hexacopter X" ) { + if(invertMotors > 0) + quad->setElementId("quad-hexa-H"); + else + quad->setElementId("quad-hexa-H_reverse"); + } + else if (frameType == "HexaCoax" || frameType == "Hexacopter Y6") + { + if(invertMotors > 0) + quad->setElementId("hexa-coax"); + else + quad->setElementId("hexa-coax_reverse"); + } + else if (frameType == "Octo" || frameType == "Octocopter") + { + if(invertMotors > 0) + quad->setElementId("quad-octo"); + else + quad->setElementId("quad-octo_reverse"); + } + else if (frameType == "OctoV" || frameType == "Octocopter V") + { + if(invertMotors > 0) + quad->setElementId("quad-octo-v"); + else + quad->setElementId("quad-octo-v_reverse"); + } + else if (frameType == "OctoCoaxP" || frameType == "Octo Coax +") + { + if(invertMotors > 0) + quad->setElementId("octo-coax-P"); + else + quad->setElementId("octo-coax-P_reverse"); + + } + else if (frameType == "OctoCoaxX" || frameType == "Octo Coax X") + { + if(invertMotors > 0) + quad->setElementId("octo-coax-X"); + else + quad->setElementId("octo-coax-X_reverse"); } } @@ -264,12 +331,12 @@ void ConfigMultiRotorWidget::setYawMixLevel(int value) if(value<0) { m_aircraft->mrYawMixLevel->setValue((-1)*value); - m_aircraft->TricopterRevMixercheckBox->setChecked(true); + m_aircraft->MultirotorRevMixercheckBox->setChecked(true); } else { m_aircraft->mrYawMixLevel->setValue(value); - m_aircraft->TricopterRevMixercheckBox->setChecked(false); + m_aircraft->MultirotorRevMixercheckBox->setChecked(false); } } @@ -974,8 +1041,8 @@ bool ConfigMultiRotorWidget::setupMultiRotorMixer(double mixerFactors[8][3]) // and enable only the relevant channels: double pFactor = (double)m_aircraft->mrPitchMixLevel->value()/100; double rFactor = (double)m_aircraft->mrRollMixLevel->value()/100; - double invert=m_aircraft->TricopterRevMixercheckBox->isChecked() ? -1:1; - double yFactor =invert * (double)m_aircraft->mrYawMixLevel->value()/100; + invertMotors = m_aircraft->MultirotorRevMixercheckBox->isChecked() ? -1:1; + double yFactor =invertMotors * (double)m_aircraft->mrYawMixLevel->value()/100; for (int i=0 ; i<8; i++) { if(mmList.at(i)->isEnabled()) { diff --git a/ground/openpilotgcs/src/plugins/config/cfg_vehicletypes/configmultirotorwidget.h b/ground/openpilotgcs/src/plugins/config/cfg_vehicletypes/configmultirotorwidget.h index 54873369b..4ce10aae3 100644 --- a/ground/openpilotgcs/src/plugins/config/cfg_vehicletypes/configmultirotorwidget.h +++ b/ground/openpilotgcs/src/plugins/config/cfg_vehicletypes/configmultirotorwidget.h @@ -64,10 +64,15 @@ private: void setupMotors(QList motorList); void setupQuadMotor(int channel, double roll, double pitch, double yaw); + float invertMotors; + virtual void ResetActuators(GUIConfigDataUnion* configData); static QStringList getChannelDescriptions(); static const QString CHANNELBOXNAME; void setYawMixLevel(int); + + void drawAirframe(QString multiRotorType); + private slots: virtual void setupUI(QString airframeType); virtual void refreshWidgetsValues(QString frameType); diff --git a/ground/openpilotgcs/src/plugins/config/configvehicletypewidget.cpp b/ground/openpilotgcs/src/plugins/config/configvehicletypewidget.cpp index 7055851ef..05d17271f 100644 --- a/ground/openpilotgcs/src/plugins/config/configvehicletypewidget.cpp +++ b/ground/openpilotgcs/src/plugins/config/configvehicletypewidget.cpp @@ -215,6 +215,9 @@ ConfigVehicleTypeWidget::ConfigVehicleTypeWidget(QWidget *parent) : ConfigTaskWi connect(m_aircraft->ffTestBox2, SIGNAL(clicked(bool)), this, SLOT(enableFFTest())); connect(m_aircraft->ffTestBox3, SIGNAL(clicked(bool)), this, SLOT(enableFFTest())); + //Connect the multirotor motor reverse checkbox + connect(m_aircraft->MultirotorRevMixercheckBox, SIGNAL(clicked(bool)), this, SLOT(reverseMultirotorMotor())); + // Connect the help pushbutton connect(m_aircraft->airframeHelp, SIGNAL(clicked()), this, SLOT(openHelp())); enableControls(false); @@ -483,7 +486,7 @@ void ConfigVehicleTypeWidget::refreshWidgetsValues(UAVObject * o) UAVObjectField *field = system->getField(QString("AirframeType")); Q_ASSERT(field); // At this stage, we will need to have some hardcoded settings in this code, this - // is not ideal, but here you go. + // is not ideal, but there you go. QString frameType = field->getValue().toString(); setupAirframeUI(frameType); @@ -766,6 +769,12 @@ void ConfigVehicleTypeWidget::setComboCurrentIndex(QComboBox* box, int index) box->setCurrentIndex(index); } +void ConfigVehicleTypeWidget::reverseMultirotorMotor(){ + QString frameType = m_aircraft->multirotorFrameType->currentText(); + m_multirotor->drawAirframe(frameType); +} + + /** WHAT DOES THIS DO??? */ diff --git a/ground/openpilotgcs/src/plugins/config/configvehicletypewidget.h b/ground/openpilotgcs/src/plugins/config/configvehicletypewidget.h index 60ef74fbe..e4cea4cc2 100644 --- a/ground/openpilotgcs/src/plugins/config/configvehicletypewidget.h +++ b/ground/openpilotgcs/src/plugins/config/configvehicletypewidget.h @@ -95,6 +95,7 @@ private slots: void enableFFTest(); void openHelp(); + void reverseMultirotorMotor(); protected: void showEvent(QShowEvent *event); diff --git a/ground/openpilotgcs/src/plugins/config/images/multirotor-shapes.svg b/ground/openpilotgcs/src/plugins/config/images/multirotor-shapes.svg index de5f2bd64..8129d2746 100644 --- a/ground/openpilotgcs/src/plugins/config/images/multirotor-shapes.svg +++ b/ground/openpilotgcs/src/plugins/config/images/multirotor-shapes.svg @@ -14,12 +14,12 @@ version="1.1" inkscape:version="0.48.2 r9819" width="4065.2493" - height="1760.019" + height="3560.019" xml:space="preserve" sodipodi:docname="multirotor-shapes.svg">image/svg+xml \ No newline at end of file + inkscape:connector-curvature="0" /> \ No newline at end of file From 2caf635acdea534db217b7e29a6f32e7086dbce6 Mon Sep 17 00:00:00 2001 From: Laura Sebesta Date: Mon, 24 Sep 2012 22:36:39 +0200 Subject: [PATCH 056/105] A couple artwork fixes for reversed motors. --- .../configmultirotorwidget.cpp | 2 ++ .../config/images/multirotor-shapes.svg | 19 +++++++++++-------- 2 files changed, 13 insertions(+), 8 deletions(-) diff --git a/ground/openpilotgcs/src/plugins/config/cfg_vehicletypes/configmultirotorwidget.cpp b/ground/openpilotgcs/src/plugins/config/cfg_vehicletypes/configmultirotorwidget.cpp index be8ed83a1..a390eca95 100644 --- a/ground/openpilotgcs/src/plugins/config/cfg_vehicletypes/configmultirotorwidget.cpp +++ b/ground/openpilotgcs/src/plugins/config/cfg_vehicletypes/configmultirotorwidget.cpp @@ -814,6 +814,8 @@ void ConfigMultiRotorWidget::refreshWidgetsValues(QString frameType) } } + + drawAirframe(frameType); } diff --git a/ground/openpilotgcs/src/plugins/config/images/multirotor-shapes.svg b/ground/openpilotgcs/src/plugins/config/images/multirotor-shapes.svg index 8129d2746..92ec0177e 100644 --- a/ground/openpilotgcs/src/plugins/config/images/multirotor-shapes.svg +++ b/ground/openpilotgcs/src/plugins/config/images/multirotor-shapes.svg @@ -19,7 +19,7 @@ sodipodi:docname="multirotor-shapes.svg">image/svg+xml Date: Mon, 24 Sep 2012 21:41:41 -0700 Subject: [PATCH 057/105] merged kens branches, changed the wording a little on the pre-autotune page, just need someone to look at one small bit of oddness with the save and apply buttons on autotune page --- .../src/plugins/config/autotune.ui | 29 +++++++++---------- 1 file changed, 14 insertions(+), 15 deletions(-) diff --git a/ground/openpilotgcs/src/plugins/config/autotune.ui b/ground/openpilotgcs/src/plugins/config/autotune.ui index 1969aa064..c29cc6e11 100644 --- a/ground/openpilotgcs/src/plugins/config/autotune.ui +++ b/ground/openpilotgcs/src/plugins/config/autotune.ui @@ -26,7 +26,7 @@ - 1 + 0 @@ -80,18 +80,17 @@ <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Ubuntu'; font-size:11pt; font-weight:400; font-style:normal;"> -<p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Lucida Grande'; font-size:20pt; font-weight:600; color:#ff0000;">WARNING:</span></p> -<p style="-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:'Lucida Grande'; font-size:13pt;"></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Lucida Grande'; font-size:13pt;"><br /></span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Lucida Grande'; font-size:13pt;">This is an experimental plugin for the GCS that is going to make your aircraft shake etc so test with lots of space and be </span><span style=" font-family:'Lucida Grande'; font-size:13pt; font-weight:600;">very very wary</span><span style=" font-family:'Lucida Grande'; font-size:13pt;"> for it creating bad tuning values.  Basically there is no reason to think this will work at all.<br /><br />To use autotuning, here are the steps:</span></p> -<ul style="margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; -qt-list-indent: 1;"><li style=" font-family:'Lucida Grande'; font-size:13pt;" style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Go to the UAVOBrowser and under HwSettings.OptionalModules enable Autotune.  Click send then save.  Power cycle your board (disconnect battery AND usb).<br /></li> -<li style=" font-family:'Lucida Grande'; font-size:13pt;" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">In Input configuration set one of your flight modes to &quot;Autotune&quot;<br /></li> -<li style=" font-family:'Lucida Grande'; font-size:13pt;" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Take off, flip to autotune, keep it in the air while it's shaking<br /></li> -<li style=" font-family:'Lucida Grande'; font-size:13pt;" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Land and disarm.  (note - you <span style=" font-weight:600;">MUST</span> stay in autotune mode through this point, leaving autotune before disarming aborts the process)<br /></li> -<li style=" font-family:'Lucida Grande'; font-size:13pt;" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">We'd recommend checking your stabilization settings before trying them out. <br /></li> -<li style=" font-family:'Lucida Grande'; font-size:13pt;" style=" margin-top:0px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Test fly then new settings</li> -<li style=" font-family:'Lucida Grande'; font-size:13pt;" style=" margin-top:0px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">If you're ready to proceed, click the &quot;Enable Autotune Module&quot; checkbox below this text, and go to the next tab.</li></ul></body></html> +</style></head><body style=" font-family:'Lucida Grande'; font-size:13pt; font-weight:400; font-style:normal;"> +<p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:20pt; font-weight:600; color:#ff0000;">WARNING:</span></p> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">This is an experimental plugin for the GCS that is going to make your aircraft shake, etc, so test with lots of space and be <span style=" font-weight:600;">very very wary</span> for it creating bad tuning values.  Basically there is no reason to think this will work at all.<br /><br />To use autotuning, here are the steps:<br /></p> +<ul style="margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; -qt-list-indent: 1;"><li style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">On the <span style=" font-style:italic;">Input configuration</span> tab, <span style=" font-style:italic;">Flight Mode Switch Settings</span>, set one of your flight modes to &quot;Autotune&quot;.<br /></li> +<li style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Take off, change flight mode to autotune, keep it in the air while it's shaking.<br /></li> +<li style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Land and disarm.  (note - you <span style=" font-weight:600;">MUST</span> stay in autotune mode through this point, leaving autotune before disarming aborts the process)<br /></li> +<li style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">We'd recommend checking your stabilization settings before trying them out (ie: compare to what you currently use, if they are VASTLY different, probably a good indication bad things will happen).<br /></li> +<li style=" margin-top:0px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Test fly the new settings.</li> +<li style=" margin-top:0px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">If you're ready to proceed, click the <span style=" font-style:italic;">Enable Autotune Module</span> checkbox below this text, click <span style=" font-style:italic;">save</span> and go to the next tab.</li></ul></body></html> @@ -195,8 +194,8 @@ p, li { white-space: pre-wrap; } 0 0 - 717 - 602 + 709 + 598 From 36f830e4d386f494eedd0398ccc9e9113a54d931 Mon Sep 17 00:00:00 2001 From: chris pember Date: Mon, 24 Sep 2012 23:28:43 -0700 Subject: [PATCH 058/105] couple little tweaks, ys, this is endless --- .../openpilotgcs/src/plugins/config/autotune.ui | 6 +++--- .../src/plugins/config/camerastabilization.ui | 17 ++++++++++------- .../src/plugins/config/stabilization.ui | 11 +++++++---- 3 files changed, 20 insertions(+), 14 deletions(-) diff --git a/ground/openpilotgcs/src/plugins/config/autotune.ui b/ground/openpilotgcs/src/plugins/config/autotune.ui index c29cc6e11..e264ca0c7 100644 --- a/ground/openpilotgcs/src/plugins/config/autotune.ui +++ b/ground/openpilotgcs/src/plugins/config/autotune.ui @@ -21,7 +21,7 @@ - 6 + -1 @@ -194,8 +194,8 @@ p, li { white-space: pre-wrap; } 0 0 - 709 - 598 + 498 + 503 diff --git a/ground/openpilotgcs/src/plugins/config/camerastabilization.ui b/ground/openpilotgcs/src/plugins/config/camerastabilization.ui index 14f2aa74a..300aa126a 100755 --- a/ground/openpilotgcs/src/plugins/config/camerastabilization.ui +++ b/ground/openpilotgcs/src/plugins/config/camerastabilization.ui @@ -6,8 +6,8 @@ 0 0 - 942 - 692 + 786 + 566 @@ -26,8 +26,8 @@ Form - - 12 + + 14 @@ -45,6 +45,9 @@ Camera Stabilization + + -1 + 0 @@ -67,8 +70,8 @@ 0 0 - 912 - 598 + 741 + 559 @@ -1044,7 +1047,7 @@ value. 321 - 16 + 10 diff --git a/ground/openpilotgcs/src/plugins/config/stabilization.ui b/ground/openpilotgcs/src/plugins/config/stabilization.ui index f56c8348e..f930f53e0 100755 --- a/ground/openpilotgcs/src/plugins/config/stabilization.ui +++ b/ground/openpilotgcs/src/plugins/config/stabilization.ui @@ -453,6 +453,9 @@ false + + 14 + 12 @@ -598,7 +601,7 @@ 0 0 935 - 619 + 615 @@ -6934,7 +6937,7 @@ border-radius: 5; 0 0 - 920 + 567 644 @@ -16857,8 +16860,8 @@ border-radius: 5; 0 0 - 935 - 619 + 830 + 571 From b4ac6a0b861544d515c5b71ce87429315b909488 Mon Sep 17 00:00:00 2001 From: chris pember Date: Mon, 24 Sep 2012 23:46:34 -0700 Subject: [PATCH 059/105] couple little tweaks, is perfect on linux and windows, close enough on osx --- .../src/plugins/config/autotune.ui | 31 +++++++------ .../src/plugins/config/camerastabilization.ui | 13 ++++-- .../src/plugins/config/stabilization.ui | 46 +++++++++---------- .../openpilotgcs/src/plugins/config/txpid.ui | 6 +-- 4 files changed, 51 insertions(+), 45 deletions(-) diff --git a/ground/openpilotgcs/src/plugins/config/autotune.ui b/ground/openpilotgcs/src/plugins/config/autotune.ui index e264ca0c7..664e993b7 100644 --- a/ground/openpilotgcs/src/plugins/config/autotune.ui +++ b/ground/openpilotgcs/src/plugins/config/autotune.ui @@ -21,7 +21,10 @@ - -1 + 6 + + + 12 @@ -80,17 +83,17 @@ <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Lucida Grande'; font-size:13pt; font-weight:400; font-style:normal;"> -<p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:20pt; font-weight:600; color:#ff0000;">WARNING:</span></p> -<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">This is an experimental plugin for the GCS that is going to make your aircraft shake, etc, so test with lots of space and be <span style=" font-weight:600;">very very wary</span> for it creating bad tuning values.  Basically there is no reason to think this will work at all.<br /><br />To use autotuning, here are the steps:<br /></p> -<ul style="margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; -qt-list-indent: 1;"><li style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">On the <span style=" font-style:italic;">Input configuration</span> tab, <span style=" font-style:italic;">Flight Mode Switch Settings</span>, set one of your flight modes to &quot;Autotune&quot;.<br /></li> -<li style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Take off, change flight mode to autotune, keep it in the air while it's shaking.<br /></li> -<li style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Land and disarm.  (note - you <span style=" font-weight:600;">MUST</span> stay in autotune mode through this point, leaving autotune before disarming aborts the process)<br /></li> -<li style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">We'd recommend checking your stabilization settings before trying them out (ie: compare to what you currently use, if they are VASTLY different, probably a good indication bad things will happen).<br /></li> -<li style=" margin-top:0px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Test fly the new settings.</li> -<li style=" margin-top:0px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">If you're ready to proceed, click the <span style=" font-style:italic;">Enable Autotune Module</span> checkbox below this text, click <span style=" font-style:italic;">save</span> and go to the next tab.</li></ul></body></html> +</style></head><body style=" font-family:'Ubuntu'; font-size:11pt; font-weight:400; font-style:normal;"> +<p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Lucida Grande'; font-size:20pt; font-weight:600; color:#ff0000;">WARNING:</span></p> +<p style="-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:'Lucida Grande'; font-size:13pt;"><br /></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Lucida Grande'; font-size:13pt;"><br /></span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Lucida Grande'; font-size:13pt;">This is an experimental plugin for the GCS that is going to make your aircraft shake, etc, so test with lots of space and be </span><span style=" font-family:'Lucida Grande'; font-size:13pt; font-weight:600;">very very wary</span><span style=" font-family:'Lucida Grande'; font-size:13pt;"> for it creating bad tuning values.  Basically there is no reason to think this will work at all.<br /><br />To use autotuning, here are the steps:<br /></span></p> +<ul style="margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; -qt-list-indent: 1;"><li style=" font-family:'Lucida Grande'; font-size:13pt;" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">On the <span style=" font-style:italic;">Input configuration</span> tab, <span style=" font-style:italic;">Flight Mode Switch Settings</span>, set one of your flight modes to &quot;Autotune&quot;.<br /></li> +<li style=" font-family:'Lucida Grande'; font-size:13pt;" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Take off, change flight mode to autotune, keep it in the air while it's shaking.<br /></li> +<li style=" font-family:'Lucida Grande'; font-size:13pt;" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Land and disarm.  (note - you <span style=" font-weight:600;">MUST</span> stay in autotune mode through this point, leaving autotune before disarming aborts the process)<br /></li> +<li style=" font-family:'Lucida Grande'; font-size:13pt;" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">We'd recommend checking your stabilization settings before trying them out (ie: compare to what you currently use, if they are VASTLY different, probably a good indication bad things will happen).<br /></li> +<li style=" font-family:'Lucida Grande'; font-size:13pt;" style=" margin-top:0px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Test fly the new settings.</li> +<li style=" font-family:'Lucida Grande'; font-size:13pt;" style=" margin-top:0px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">If you're ready to proceed, click the <span style=" font-style:italic;">Enable Autotune Module</span> checkbox below this text, click <span style=" font-style:italic;">save</span> and go to the next tab.</li></ul></body></html> @@ -194,8 +197,8 @@ p, li { white-space: pre-wrap; } 0 0 - 498 - 503 + 711 + 596 diff --git a/ground/openpilotgcs/src/plugins/config/camerastabilization.ui b/ground/openpilotgcs/src/plugins/config/camerastabilization.ui index 300aa126a..f0a8fb8a0 100755 --- a/ground/openpilotgcs/src/plugins/config/camerastabilization.ui +++ b/ground/openpilotgcs/src/plugins/config/camerastabilization.ui @@ -27,7 +27,10 @@ - 14 + 6 + + + 12 @@ -46,7 +49,7 @@ - -1 + 6 0 @@ -70,8 +73,8 @@ 0 0 - 741 - 559 + 742 + 604 @@ -410,7 +413,7 @@ margin:1px; - -1 + 6 diff --git a/ground/openpilotgcs/src/plugins/config/stabilization.ui b/ground/openpilotgcs/src/plugins/config/stabilization.ui index f930f53e0..4ff6b33ff 100755 --- a/ground/openpilotgcs/src/plugins/config/stabilization.ui +++ b/ground/openpilotgcs/src/plugins/config/stabilization.ui @@ -7,7 +7,7 @@ 0 0 965 - 713 + 687 @@ -454,7 +454,7 @@ - 14 + 6 12 @@ -600,8 +600,8 @@ 0 0 - 935 - 615 + 937 + 595 @@ -641,12 +641,12 @@ false - - 6 - 12 + + 6 + @@ -4011,12 +4011,12 @@ value as the Kp. Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter - - 6 - 12 + + 6 + @@ -6937,8 +6937,8 @@ border-radius: 5; 0 0 - 567 - 644 + 540 + 663 @@ -7492,12 +7492,12 @@ border-radius: 5; false - - 6 - 12 + + 6 + @@ -13941,12 +13941,12 @@ border-radius: 5; Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter - - 6 - 12 + + 6 + @@ -16860,8 +16860,8 @@ border-radius: 5; 0 0 - 830 - 571 + 802 + 607 @@ -19491,12 +19491,12 @@ border-radius: 5; Integral Limits - - 6 - 12 + + 6 + diff --git a/ground/openpilotgcs/src/plugins/config/txpid.ui b/ground/openpilotgcs/src/plugins/config/txpid.ui index 9d4da0865..1c277d0fb 100755 --- a/ground/openpilotgcs/src/plugins/config/txpid.ui +++ b/ground/openpilotgcs/src/plugins/config/txpid.ui @@ -7,7 +7,7 @@ 0 0 789 - 615 + 484 @@ -113,8 +113,8 @@ 0 0 - 759 - 532 + 745 + 469 From b09041cb9f00bdaba9218e4cdf42d32c5cd8ee5e Mon Sep 17 00:00:00 2001 From: chris pember Date: Tue, 25 Sep 2012 00:16:31 -0700 Subject: [PATCH 060/105] moved the autotune checkbox up top like the other modules --- .../src/plugins/config/autotune.ui | 79 +++++++++---------- .../src/plugins/config/camerastabilization.ui | 33 +++----- 2 files changed, 49 insertions(+), 63 deletions(-) diff --git a/ground/openpilotgcs/src/plugins/config/autotune.ui b/ground/openpilotgcs/src/plugins/config/autotune.ui index 664e993b7..647e7b166 100644 --- a/ground/openpilotgcs/src/plugins/config/autotune.ui +++ b/ground/openpilotgcs/src/plugins/config/autotune.ui @@ -36,42 +36,10 @@ Pre-Autotune - + 12 - - 12 - - - 12 - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - + QFrame::StyledPanel @@ -93,18 +61,45 @@ p, li { white-space: pre-wrap; } <li style=" font-family:'Lucida Grande'; font-size:13pt;" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Land and disarm.  (note - you <span style=" font-weight:600;">MUST</span> stay in autotune mode through this point, leaving autotune before disarming aborts the process)<br /></li> <li style=" font-family:'Lucida Grande'; font-size:13pt;" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">We'd recommend checking your stabilization settings before trying them out (ie: compare to what you currently use, if they are VASTLY different, probably a good indication bad things will happen).<br /></li> <li style=" font-family:'Lucida Grande'; font-size:13pt;" style=" margin-top:0px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Test fly the new settings.</li> -<li style=" font-family:'Lucida Grande'; font-size:13pt;" style=" margin-top:0px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">If you're ready to proceed, click the <span style=" font-style:italic;">Enable Autotune Module</span> checkbox below this text, click <span style=" font-style:italic;">save</span> and go to the next tab.</li></ul></body></html> +<li style=" font-family:'Lucida Grande'; font-size:13pt;" style=" margin-top:0px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">If you're ready to proceed, click the <span style=" font-style:italic;">Enable Autotune Module</span> checkbox above this text, click <span style=" font-style:italic;">save</span> and go to the next tab.</li></ul></body></html> - - - - Enable Autotune Module - - - true + + + + Module Control + + + + + Enable Autotune Module + + + true + + + + + + + Qt::Horizontal + + + + 454 + 20 + + + + + + horizontalSpacer_5 + enableAutoTune + horizontalSpacer_4 + enableAutoTune + horizontalSpacer_5 diff --git a/ground/openpilotgcs/src/plugins/config/camerastabilization.ui b/ground/openpilotgcs/src/plugins/config/camerastabilization.ui index f0a8fb8a0..b2b756ca4 100755 --- a/ground/openpilotgcs/src/plugins/config/camerastabilization.ui +++ b/ground/openpilotgcs/src/plugins/config/camerastabilization.ui @@ -26,12 +26,6 @@ Form - - 6 - - - 12 - @@ -48,9 +42,6 @@ Camera Stabilization - - 6 - 0 @@ -73,8 +64,8 @@ 0 0 - 742 - 604 + 741 + 559 @@ -1038,24 +1029,24 @@ value. - - + + 4 - + Qt::Horizontal - 321 - 10 + 288 + 18 - + @@ -1104,7 +1095,7 @@ value. - + @@ -1135,7 +1126,7 @@ Apply or Save button afterwards. - + @@ -1168,7 +1159,7 @@ Apply or Save button afterwards. - + @@ -1195,7 +1186,7 @@ Apply or Save button afterwards. - + From e7e95412e86966aae18f4e67473532c253898adf Mon Sep 17 00:00:00 2001 From: Fredrik Arvidsson Date: Wed, 26 Sep 2012 00:42:17 +0200 Subject: [PATCH 061/105] OP-39 Fixed Wizard Style so that it looks ok on Mac and Windows Changed the output calibration part of the wizard so that it is a part of the wizard flow instead of a separate flow inside one page. --- .../setupwizard/pages/abstractwizardpage.h | 2 + .../plugins/setupwizard/pages/multipage.ui | 21 ++++++++ .../pages/outputcalibrationpage.cpp | 34 ++++++------- .../setupwizard/pages/outputcalibrationpage.h | 10 ++-- .../pages/outputcalibrationpage.ui | 51 ++++--------------- .../src/plugins/setupwizard/setupwizard.cpp | 24 ++++++++- .../src/plugins/setupwizard/setupwizard.h | 6 ++- 7 files changed, 83 insertions(+), 65 deletions(-) diff --git a/ground/openpilotgcs/src/plugins/setupwizard/pages/abstractwizardpage.h b/ground/openpilotgcs/src/plugins/setupwizard/pages/abstractwizardpage.h index 072d619e7..bb4960a32 100644 --- a/ground/openpilotgcs/src/plugins/setupwizard/pages/abstractwizardpage.h +++ b/ground/openpilotgcs/src/plugins/setupwizard/pages/abstractwizardpage.h @@ -42,6 +42,8 @@ private: public: SetupWizard* getWizard() { return m_wizard; } + virtual bool isFinished() { return true; } + virtual quint16 stage() { return 0; } }; diff --git a/ground/openpilotgcs/src/plugins/setupwizard/pages/multipage.ui b/ground/openpilotgcs/src/plugins/setupwizard/pages/multipage.ui index 0b00607c6..22e244836 100644 --- a/ground/openpilotgcs/src/plugins/setupwizard/pages/multipage.ui +++ b/ground/openpilotgcs/src/plugins/setupwizard/pages/multipage.ui @@ -55,6 +55,9 @@ p, li { white-space: pre-wrap; } 0 + + false + QFrame::NoFrame @@ -70,6 +73,24 @@ p, li { white-space: pre-wrap; } Qt::ScrollBarAlwaysOff + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + false diff --git a/ground/openpilotgcs/src/plugins/setupwizard/pages/outputcalibrationpage.cpp b/ground/openpilotgcs/src/plugins/setupwizard/pages/outputcalibrationpage.cpp index 812694f66..d91dddc81 100644 --- a/ground/openpilotgcs/src/plugins/setupwizard/pages/outputcalibrationpage.cpp +++ b/ground/openpilotgcs/src/plugins/setupwizard/pages/outputcalibrationpage.cpp @@ -32,7 +32,7 @@ OutputCalibrationPage::OutputCalibrationPage(SetupWizard *wizard, QWidget *parent) : AbstractWizardPage(wizard, parent), ui(new Ui::OutputCalibrationPage), m_vehicleBoundsItem(0), - m_currentWizardIndex(0), m_calibrationUtil(0) + m_currentWizardIndex(-1), m_calibrationUtil(0) { ui->setupUi(this); @@ -171,8 +171,6 @@ void OutputCalibrationPage::setWizardPage() { qDebug() << "Wizard index: " << m_currentWizardIndex; m_calibrationUtil->stopChannelOutput(); - ui->backPageButton->setEnabled(m_currentWizardIndex > 0); - ui->nextPageButton->setEnabled(m_currentWizardIndex < m_wizardIndexes.size() - 1); QApplication::processEvents(); @@ -211,8 +209,14 @@ void OutputCalibrationPage::initializePage() bool OutputCalibrationPage::validatePage() { - getWizard()->setActuatorSettings(m_actuatorSettings); - return true; + if(isFinished()) { + getWizard()->setActuatorSettings(m_actuatorSettings); + return true; + } else { + m_currentWizardIndex++; + setWizardPage(); + return false; + } } void OutputCalibrationPage::showEvent(QShowEvent *event) @@ -224,20 +228,17 @@ void OutputCalibrationPage::showEvent(QShowEvent *event) } } -void OutputCalibrationPage::on_nextPageButton_clicked() +void OutputCalibrationPage::customBackClicked() { - if(m_currentWizardIndex < m_wizardIndexes.size() - 1) { - m_currentWizardIndex++; - setWizardPage(); - } -} - -void OutputCalibrationPage::on_backPageButton_clicked() -{ - if(m_currentWizardIndex > 0) { + if(m_currentWizardIndex > 0) + { m_currentWizardIndex--; setWizardPage(); } + else + { + getWizard()->back(); + } } quint16 OutputCalibrationPage::getCurrentChannel() @@ -247,9 +248,8 @@ quint16 OutputCalibrationPage::getCurrentChannel() void OutputCalibrationPage::enableButtons(bool enable) { - ui->nextPageButton->setEnabled(enable && (m_currentWizardIndex < m_wizardIndexes.size() - 1)); - ui->backPageButton->setEnabled(enable && (m_currentWizardIndex > 0)); getWizard()->button(QWizard::NextButton)->setEnabled(enable); + getWizard()->button(QWizard::CustomButton1)->setEnabled(enable); getWizard()->button(QWizard::CancelButton)->setEnabled(enable); getWizard()->button(QWizard::BackButton)->setEnabled(enable); QApplication::processEvents(); diff --git a/ground/openpilotgcs/src/plugins/setupwizard/pages/outputcalibrationpage.h b/ground/openpilotgcs/src/plugins/setupwizard/pages/outputcalibrationpage.h index bf646e2f1..76af9534e 100644 --- a/ground/openpilotgcs/src/plugins/setupwizard/pages/outputcalibrationpage.h +++ b/ground/openpilotgcs/src/plugins/setupwizard/pages/outputcalibrationpage.h @@ -48,13 +48,15 @@ public: void initializePage(); bool validatePage(); + bool isFinished() { return m_currentWizardIndex >= m_wizardIndexes.size() - 1; } + protected: void showEvent(QShowEvent *event); -private slots: - void on_nextPageButton_clicked(); - void on_backPageButton_clicked(); +public slots: + void customBackClicked(); +private slots: void on_motorNeutralButton_toggled(bool checked); void on_motorNeutralSlider_valueChanged(int value); @@ -84,7 +86,7 @@ private: QGraphicsScene *m_vehicleScene; QGraphicsSvgItem *m_vehicleBoundsItem; - quint16 m_currentWizardIndex; + qint16 m_currentWizardIndex; QList m_vehicleElementIds; QList m_vehicleItems; diff --git a/ground/openpilotgcs/src/plugins/setupwizard/pages/outputcalibrationpage.ui b/ground/openpilotgcs/src/plugins/setupwizard/pages/outputcalibrationpage.ui index 5947e6e3c..22e0f0eec 100644 --- a/ground/openpilotgcs/src/plugins/setupwizard/pages/outputcalibrationpage.ui +++ b/ground/openpilotgcs/src/plugins/setupwizard/pages/outputcalibrationpage.ui @@ -19,7 +19,7 @@ 300 40 270 - 270 + 341 @@ -32,7 +32,7 @@ 20 40 270 - 291 + 341 @@ -45,7 +45,7 @@ 0 10 261 - 281 + 321 @@ -94,7 +94,7 @@ p, li { white-space: pre-wrap; } 10 - 200 + 250 241 19 @@ -128,7 +128,7 @@ p, li { white-space: pre-wrap; } 90 - 240 + 290 75 23 @@ -171,7 +171,7 @@ p, li { white-space: pre-wrap; } 10 - 200 + 250 241 19 @@ -214,7 +214,7 @@ p, li { white-space: pre-wrap; } 90 - 240 + 290 75 23 @@ -235,7 +235,7 @@ p, li { white-space: pre-wrap; } 90 - 240 + 290 75 23 @@ -276,7 +276,7 @@ p, li { white-space: pre-wrap; } 10 - 200 + 250 241 20 @@ -321,7 +321,7 @@ p, li { white-space: pre-wrap; } 90 - 240 + 290 75 23 @@ -343,7 +343,7 @@ p, li { white-space: pre-wrap; } 10 - 200 + 250 241 20 @@ -426,35 +426,6 @@ p, li { white-space: pre-wrap; } Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter - - - - 150 - 340 - 75 - 23 - - - - > - - - - - false - - - - 70 - 340 - 75 - 23 - - - - < - - diff --git a/ground/openpilotgcs/src/plugins/setupwizard/setupwizard.cpp b/ground/openpilotgcs/src/plugins/setupwizard/setupwizard.cpp index 7d30b6d1a..888e64035 100644 --- a/ground/openpilotgcs/src/plugins/setupwizard/setupwizard.cpp +++ b/ground/openpilotgcs/src/plugins/setupwizard/setupwizard.cpp @@ -39,9 +39,9 @@ #include "pages/levellingpage.h" #include "pages/summarypage.h" #include "pages/flashpage.h" -#include "pages/outputcalibrationpage.h" #include "pages/notyetimplementedpage.h" #include "pages/rebootpage.h" +#include "pages/outputcalibrationpage.h" #include "extensionsystem/pluginmanager.h" #include "vehicleconfigurationhelper.h" #include "actuatorsettings.h" @@ -53,12 +53,13 @@ SetupWizard::SetupWizard(QWidget *parent) : QWizard(parent), VehicleConfiguratio { setWindowTitle(tr("OpenPilot Setup Wizard")); setOption(QWizard::IndependentPages, false); - setFixedSize(640, 530); for(quint16 i = 0; i < ActuatorSettings::CHANNELMAX_NUMELEM; i++) { m_actuatorSettings << actuatorChannelSettings(); } createPages(); + setWizardStyle(QWizard::ModernStyle); + setFixedSize(640, 530); } int SetupWizard::nextId() const @@ -245,9 +246,11 @@ QString SetupWizard::getSummaryText() summary.append(tr("Unknown")); } + /* summary.append("
"); summary.append("").append(tr("Reboot required: ")).append(""); summary.append(isRestartNeeded() ? tr("Yes") : tr("No")); + */ return summary; } @@ -271,6 +274,23 @@ void SetupWizard::createPages() setPage(PAGE_END, new EndPage(this)); setStartId(PAGE_START); + + connect(button(QWizard::CustomButton1), SIGNAL(clicked()), this, SLOT(customBackClicked())); + setButtonText(QWizard::CustomButton1, buttonText(QWizard::BackButton)); + QList button_layout; + button_layout << QWizard::Stretch << QWizard::CustomButton1 << QWizard::NextButton << QWizard::CancelButton; + setButtonLayout(button_layout); + +} + +void SetupWizard::customBackClicked() +{ + if(currentId() == PAGE_CALIBRATION) { + static_cast(currentPage())->customBackClicked(); + } + else { + back(); + } } bool SetupWizard::saveHardwareSettings() const diff --git a/ground/openpilotgcs/src/plugins/setupwizard/setupwizard.h b/ground/openpilotgcs/src/plugins/setupwizard/setupwizard.h index 72458ffe6..1a8728714 100644 --- a/ground/openpilotgcs/src/plugins/setupwizard/setupwizard.h +++ b/ground/openpilotgcs/src/plugins/setupwizard/setupwizard.h @@ -35,7 +35,6 @@ #include "vehicleconfigurationsource.h" #include "vehicleconfigurationhelper.h" - class SetupWizard : public QWizard, public VehicleConfigurationSource { Q_OBJECT @@ -79,7 +78,8 @@ public: } return m_connectionManager; } - +private slots: + void customBackClicked(); private: enum {PAGE_START, PAGE_CONTROLLER, PAGE_VEHICLES, PAGE_MULTI, PAGE_FIXEDWING, PAGE_HELI, PAGE_SURFACE, PAGE_INPUT, PAGE_OUTPUT, PAGE_LEVELLING, PAGE_CALIBRATION, @@ -101,6 +101,8 @@ private: bool m_restartNeeded; + bool m_back; + Core::ConnectionManager *m_connectionManager; }; From efd953b00c8bb8c3f4defd10b3cbb5a689c2d421 Mon Sep 17 00:00:00 2001 From: Fredrik Arvidsson Date: Thu, 27 Sep 2012 08:18:50 +0200 Subject: [PATCH 062/105] OP-39 Fixed a bug in Welcome page button. --- .../openpilotgcs/src/plugins/welcome/qml/WelcomePageButton.qml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ground/openpilotgcs/src/plugins/welcome/qml/WelcomePageButton.qml b/ground/openpilotgcs/src/plugins/welcome/qml/WelcomePageButton.qml index 4874022be..9e5c1a74f 100644 --- a/ground/openpilotgcs/src/plugins/welcome/qml/WelcomePageButton.qml +++ b/ground/openpilotgcs/src/plugins/welcome/qml/WelcomePageButton.qml @@ -4,7 +4,7 @@ import QtQuick 1.1 Item { id: welcomeButton width: Math.max(116, icon.width) - height: 116 + height: icon.height z: 0 property string baseIconName From 4923655cd3b50e8d82fc914264265a55ba948c58 Mon Sep 17 00:00:00 2001 From: Laura Sebesta Date: Thu, 27 Sep 2012 18:51:12 +0200 Subject: [PATCH 063/105] Added global flag for enabling all diagnostic tools. --- flight/CopterControl/Makefile | 14 +++++++++----- flight/PipXtreme/Makefile | 16 ++++++++++++---- flight/Revolution/Makefile | 1 - flight/SimPosix/Makefile | 2 -- 4 files changed, 21 insertions(+), 12 deletions(-) diff --git a/flight/CopterControl/Makefile b/flight/CopterControl/Makefile index 3f2a119ad..c1b5042de 100644 --- a/flight/CopterControl/Makefile +++ b/flight/CopterControl/Makefile @@ -44,6 +44,8 @@ RATEDESIRED_DIAGNOSTICS ?= NO I2C_WDG_STATS_DIAGNOSTICS ?= NO DIAG_TASKS ?= NO +#Or just turn on all the above diagnostics. WARNING: This consumes massive amounts of memory. +ALL_DIGNOSTICS ?=NO # Set to YES to build a FW version that will erase all flash memory ERASE_FLASH ?= NO @@ -478,23 +480,25 @@ ifeq ($(DEBUG),YES) CFLAGS += -DDEBUG endif -ifeq ($(STACK_DIAGNOSTICS),YES) +#The following Makefile command, ifneq (, $(filter) $(A), $(B) $(C)) is equivalent +# to the pseudocode `if(A== B || A==C)` +ifneq (,$(filter YES,$(STACK_DIAGNOSTICS) $(ALL_DIGNOSTICS))) CFLAGS += -DSTACK_DIAGNOSTICS endif -ifeq ($(MIXERSTATUS_DIAGNOSTICS),YES) +ifneq (,$(filter YES,$(MIXERSTATUS_DIAGNOSTICS) $(ALL_DIGNOSTICS))) CFLAGS += -DMIXERSTATUS_DIAGNOSTICS endif -ifeq ($(RATEDESIRED_DIAGNOSTICS),YES) +ifneq (,$(filter YES,$(RATEDESIRED_DIAGNOSTICS) $(ALL_DIGNOSTICS))) CFLAGS += -DRATEDESIRED_DIAGNOSTICS endif -ifeq ($(I2C_WDG_STATS_DIAGNOSTICS),YES) +ifneq (,$(filter YES,$(I2C_WDG_STATS_DIAGNOSTICS) $(ALL_DIGNOSTICS))) CFLAGS += -DI2C_WDG_STATS_DIAGNOSTICS endif -ifeq ($(DIAG_TASKS),YES) +ifneq (,$(filter YES,$(DIAG_TASKS) $(ALL_DIGNOSTICS))) CFLAGS += -DDIAG_TASKS endif diff --git a/flight/PipXtreme/Makefile b/flight/PipXtreme/Makefile index 8538908f0..07c9e05d4 100644 --- a/flight/PipXtreme/Makefile +++ b/flight/PipXtreme/Makefile @@ -42,6 +42,10 @@ STACK_DIAGNOSTICS ?= NO MIXERSTATUS_DIAGNOSTICS ?= NO RATEDESIRED_DIAGNOSTICS ?= NO I2C_WDG_STATS_DIAGNOSTICS ?= NO +DIAG_TASKS ?= YES + +#Or just turn on all the above diagnostics. WARNING: This consumes massive amounts of memory. +ALL_DIGNOSTICS ?=NO # Set to YES to build a FW version that will erase all flash memory ERASE_FLASH ?= NO @@ -381,22 +385,26 @@ ifeq ($(DEBUG),YES) CFLAGS = -DDEBUG endif -ifeq ($(STACK_DIAGNOSTICS),YES) +ifneq (,$(filter YES,$(STACK_DIAGNOSTICS) $(ALL_DIGNOSTICS))) CFLAGS += -DSTACK_DIAGNOSTICS endif -ifeq ($(MIXERSTATUS_DIAGNOSTICS),YES) +ifneq (,$(filter YES,$(MIXERSTATUS_DIAGNOSTICS) $(ALL_DIGNOSTICS))) CFLAGS += -DMIXERSTATUS_DIAGNOSTICS endif -ifeq ($(RATEDESIRED_DIAGNOSTICS),YES) +ifneq (,$(filter YES,$(RATEDESIRED_DIAGNOSTICS) $(ALL_DIGNOSTICS))) CFLAGS += -DRATEDESIRED_DIAGNOSTICS endif -ifeq ($(I2C_WDG_STATS_DIAGNOSTICS),YES) +ifneq (,$(filter YES,$(I2C_WDG_STATS_DIAGNOSTICS) $(ALL_DIGNOSTICS))) CFLAGS += -DI2C_WDG_STATS_DIAGNOSTICS endif +ifneq (,$(filter YES,$(DIAG_TASKS) $(ALL_DIGNOSTICS))) +CFLAGS += -DDIAG_TASKS +endif + CFLAGS += -g$(DEBUGF) CFLAGS += -O$(OPT) CFLAGS += -mcpu=$(MCU) diff --git a/flight/Revolution/Makefile b/flight/Revolution/Makefile index cc222f744..ff76ddbfa 100644 --- a/flight/Revolution/Makefile +++ b/flight/Revolution/Makefile @@ -259,7 +259,6 @@ CFLAGS += -DSTACK_DIAGNOSTICS CFLAGS += -DMIXERSTATUS_DIAGNOSTICS CFLAGS += -DRATEDESIRED_DIAGNOSTICS CFLAGS += -DI2C_WDG_STATS_DIAGNOSTICS - CFLAGS += -DDIAG_TASKS # This is not the best place for these. Really should abstract out diff --git a/flight/SimPosix/Makefile b/flight/SimPosix/Makefile index 616ef5995..3d541b409 100644 --- a/flight/SimPosix/Makefile +++ b/flight/SimPosix/Makefile @@ -255,8 +255,6 @@ CFLAGS += -DSTACK_DIAGNOSTICS CFLAGS += -DMIXERSTATUS_DIAGNOSTICS CFLAGS += -DRATEDESIRED_DIAGNOSTICS CFLAGS += -DI2C_WDG_STATS_DIAGNOSTICS - - CFLAGS += -DDIAG_TASKS # This is not the best place for these. Really should abstract out From 1721479a12470584c854c1245eff63e3c7376a34 Mon Sep 17 00:00:00 2001 From: James Cotton Date: Thu, 27 Sep 2012 14:34:11 -0500 Subject: [PATCH 064/105] Fix for vinz' merge to pios_mpu6000 exti changes --- flight/PiOS/Common/pios_mpu6000.c | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/flight/PiOS/Common/pios_mpu6000.c b/flight/PiOS/Common/pios_mpu6000.c index 46bd3569e..ced67f4f5 100644 --- a/flight/PiOS/Common/pios_mpu6000.c +++ b/flight/PiOS/Common/pios_mpu6000.c @@ -400,21 +400,21 @@ uint32_t mpu6000_interval_us; uint32_t mpu6000_time_us; uint32_t mpu6000_transfer_size; -void PIOS_MPU6000_IRQHandler(void) +bool PIOS_MPU6000_IRQHandler(void) { static uint32_t timeval; mpu6000_interval_us = PIOS_DELAY_DiffuS(timeval); timeval = PIOS_DELAY_GetRaw(); if(!mpu6000_configured) - return; + return false; mpu6000_count = PIOS_MPU6000_FifoDepth(); if(mpu6000_count < sizeof(struct pios_mpu6000_data)) - return; + return false; if(PIOS_MPU6000_ClaimBus() != 0) - return; + return false; uint8_t mpu6000_send_buf[1+sizeof(struct pios_mpu6000_data)] = {PIOS_MPU6000_FIFO_REG | 0x80, 0, 0, 0, 0, 0, 0, 0, 0}; uint8_t mpu6000_rec_buf[1+sizeof(struct pios_mpu6000_data)]; @@ -422,7 +422,7 @@ void PIOS_MPU6000_IRQHandler(void) if(PIOS_SPI_TransferBlock(dev->spi_id, &mpu6000_send_buf[0], &mpu6000_rec_buf[0], sizeof(mpu6000_send_buf), NULL) < 0) { PIOS_MPU6000_ReleaseBus(); mpu6000_fails++; - return; + return false; } PIOS_MPU6000_ReleaseBus(); @@ -433,7 +433,7 @@ void PIOS_MPU6000_IRQHandler(void) if (mpu6000_count >= (sizeof(data) * 2)) { mpu6000_fifo_backup++; if(PIOS_MPU6000_ClaimBus() != 0) - return; + return false; uint8_t mpu6000_send_buf[1+sizeof(struct pios_mpu6000_data)] = {PIOS_MPU6000_FIFO_REG | 0x80, 0, 0, 0, 0, 0, 0, 0, 0}; uint8_t mpu6000_rec_buf[1+sizeof(struct pios_mpu6000_data)]; @@ -441,7 +441,7 @@ void PIOS_MPU6000_IRQHandler(void) if(PIOS_SPI_TransferBlock(dev->spi_id, &mpu6000_send_buf[0], &mpu6000_rec_buf[0], sizeof(mpu6000_send_buf), NULL) < 0) { PIOS_MPU6000_ReleaseBus(); mpu6000_fails++; - return; + return false; } PIOS_MPU6000_ReleaseBus(); From 1ba40ee9b068ad850f8044f6e3c14b95b81b11ec Mon Sep 17 00:00:00 2001 From: James Cotton Date: Thu, 27 Sep 2012 14:41:38 -0500 Subject: [PATCH 065/105] PIOS_EXTI: Make sure to use pdTRUE instead of true where appropriate. --- flight/PiOS/STM32F10x/pios_exti.c | 2 +- flight/PiOS/STM32F4xx/pios_exti.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/flight/PiOS/STM32F10x/pios_exti.c b/flight/PiOS/STM32F10x/pios_exti.c index 41d40f14b..b7b351a2f 100644 --- a/flight/PiOS/STM32F10x/pios_exti.c +++ b/flight/PiOS/STM32F10x/pios_exti.c @@ -169,7 +169,7 @@ static bool PIOS_EXTI_generic_irq_handler(uint8_t line_index) #define PIOS_EXTI_HANDLE_LINE(line) \ if (EXTI_GetITStatus(EXTI_Line##line) != RESET) { \ EXTI_ClearITPendingBit(EXTI_Line##line); \ - xHigherPriorityTaskWoken |= PIOS_EXTI_generic_irq_handler(line); \ + xHigherPriorityTaskWoken = PIOS_EXTI_generic_irq_handler(line) ? pdTRUE : xHigherPriorityTaskWoken; \ } #else #define PIOS_EXTI_HANDLE_LINE(line) \ diff --git a/flight/PiOS/STM32F4xx/pios_exti.c b/flight/PiOS/STM32F4xx/pios_exti.c index 8259ce006..8ef53492c 100644 --- a/flight/PiOS/STM32F4xx/pios_exti.c +++ b/flight/PiOS/STM32F4xx/pios_exti.c @@ -171,7 +171,7 @@ static bool PIOS_EXTI_generic_irq_handler(uint8_t line_index) #define PIOS_EXTI_HANDLE_LINE(line) \ if (EXTI_GetITStatus(EXTI_Line##line) != RESET) { \ EXTI_ClearITPendingBit(EXTI_Line##line); \ - xHigherPriorityTaskWoken |= PIOS_EXTI_generic_irq_handler(line); \ + xHigherPriorityTaskWoken = PIOS_EXTI_generic_irq_handler(line) ? pdTRUE : xHigherPriorityTaskWoken; \ } #else #define PIOS_EXTI_HANDLE_LINE(line) \ From e2389af30d1ae40fddb4047411a9dd17f05e9c21 Mon Sep 17 00:00:00 2001 From: chris pember Date: Thu, 27 Sep 2012 21:06:19 -0700 Subject: [PATCH 066/105] fixed the stylesheets vertical sliders. pushing to correct branch --- .../share/openpilotgcs/stylesheets/default_linux.qss | 2 ++ .../share/openpilotgcs/stylesheets/default_macos.qss | 2 ++ .../share/openpilotgcs/stylesheets/default_windows.qss | 2 ++ .../openpilotgcs/share/openpilotgcs/stylesheets/wide_linux.qss | 2 ++ .../openpilotgcs/share/openpilotgcs/stylesheets/wide_macos.qss | 2 ++ .../share/openpilotgcs/stylesheets/wide_windows.qss | 2 ++ 6 files changed, 12 insertions(+) diff --git a/ground/openpilotgcs/share/openpilotgcs/stylesheets/default_linux.qss b/ground/openpilotgcs/share/openpilotgcs/stylesheets/default_linux.qss index 558054cc1..97844c95a 100644 --- a/ground/openpilotgcs/share/openpilotgcs/stylesheets/default_linux.qss +++ b/ground/openpilotgcs/share/openpilotgcs/stylesheets/default_linux.qss @@ -66,6 +66,8 @@ Utils--StyledBar { background-color: qlineargradient(spread:pad, x1:0, y1:0, x2: width: 6px; border-radius: 2px; margin 0px -10px; + margin-top: 5px; + margin-bottom: 5px; } QSlider::sub-page:vertical { background: #fff; diff --git a/ground/openpilotgcs/share/openpilotgcs/stylesheets/default_macos.qss b/ground/openpilotgcs/share/openpilotgcs/stylesheets/default_macos.qss index 035fa5633..430d04d67 100644 --- a/ground/openpilotgcs/share/openpilotgcs/stylesheets/default_macos.qss +++ b/ground/openpilotgcs/share/openpilotgcs/stylesheets/default_macos.qss @@ -65,6 +65,8 @@ Utils--StyledBar { background-color: qlineargradient(spread:pad, x1:0, y1:0, x2: width: 6px; border-radius: 2px; margin 0px -10px; + margin-top: 5px; + margin-bottom: 5px; } QSlider::sub-page:vertical { background: #fff; diff --git a/ground/openpilotgcs/share/openpilotgcs/stylesheets/default_windows.qss b/ground/openpilotgcs/share/openpilotgcs/stylesheets/default_windows.qss index 035fa5633..430d04d67 100644 --- a/ground/openpilotgcs/share/openpilotgcs/stylesheets/default_windows.qss +++ b/ground/openpilotgcs/share/openpilotgcs/stylesheets/default_windows.qss @@ -65,6 +65,8 @@ Utils--StyledBar { background-color: qlineargradient(spread:pad, x1:0, y1:0, x2: width: 6px; border-radius: 2px; margin 0px -10px; + margin-top: 5px; + margin-bottom: 5px; } QSlider::sub-page:vertical { background: #fff; diff --git a/ground/openpilotgcs/share/openpilotgcs/stylesheets/wide_linux.qss b/ground/openpilotgcs/share/openpilotgcs/stylesheets/wide_linux.qss index 558054cc1..97844c95a 100644 --- a/ground/openpilotgcs/share/openpilotgcs/stylesheets/wide_linux.qss +++ b/ground/openpilotgcs/share/openpilotgcs/stylesheets/wide_linux.qss @@ -66,6 +66,8 @@ Utils--StyledBar { background-color: qlineargradient(spread:pad, x1:0, y1:0, x2: width: 6px; border-radius: 2px; margin 0px -10px; + margin-top: 5px; + margin-bottom: 5px; } QSlider::sub-page:vertical { background: #fff; diff --git a/ground/openpilotgcs/share/openpilotgcs/stylesheets/wide_macos.qss b/ground/openpilotgcs/share/openpilotgcs/stylesheets/wide_macos.qss index 035fa5633..430d04d67 100644 --- a/ground/openpilotgcs/share/openpilotgcs/stylesheets/wide_macos.qss +++ b/ground/openpilotgcs/share/openpilotgcs/stylesheets/wide_macos.qss @@ -65,6 +65,8 @@ Utils--StyledBar { background-color: qlineargradient(spread:pad, x1:0, y1:0, x2: width: 6px; border-radius: 2px; margin 0px -10px; + margin-top: 5px; + margin-bottom: 5px; } QSlider::sub-page:vertical { background: #fff; diff --git a/ground/openpilotgcs/share/openpilotgcs/stylesheets/wide_windows.qss b/ground/openpilotgcs/share/openpilotgcs/stylesheets/wide_windows.qss index 035fa5633..430d04d67 100644 --- a/ground/openpilotgcs/share/openpilotgcs/stylesheets/wide_windows.qss +++ b/ground/openpilotgcs/share/openpilotgcs/stylesheets/wide_windows.qss @@ -65,6 +65,8 @@ Utils--StyledBar { background-color: qlineargradient(spread:pad, x1:0, y1:0, x2: width: 6px; border-radius: 2px; margin 0px -10px; + margin-top: 5px; + margin-bottom: 5px; } QSlider::sub-page:vertical { background: #fff; From 519e3e2e3a44e2ee6708775ab6701a01b5b2d970 Mon Sep 17 00:00:00 2001 From: James Cotton Date: Fri, 28 Sep 2012 00:40:36 -0500 Subject: [PATCH 067/105] PIOS_EXTI: Make the line task macro now take in the xHigherTaskPriority variable name --- flight/PiOS/STM32F10x/pios_exti.c | 52 ++++++++++++++++++++----------- flight/PiOS/STM32F4xx/pios_exti.c | 52 ++++++++++++++++++++----------- 2 files changed, 66 insertions(+), 38 deletions(-) diff --git a/flight/PiOS/STM32F10x/pios_exti.c b/flight/PiOS/STM32F10x/pios_exti.c index b7b351a2f..9b8221bbe 100644 --- a/flight/PiOS/STM32F10x/pios_exti.c +++ b/flight/PiOS/STM32F10x/pios_exti.c @@ -166,13 +166,13 @@ static bool PIOS_EXTI_generic_irq_handler(uint8_t line_index) } #ifdef PIOS_INCLUDE_FREERTOS -#define PIOS_EXTI_HANDLE_LINE(line) \ +#define PIOS_EXTI_HANDLE_LINE(line, woken) \ if (EXTI_GetITStatus(EXTI_Line##line) != RESET) { \ EXTI_ClearITPendingBit(EXTI_Line##line); \ - xHigherPriorityTaskWoken = PIOS_EXTI_generic_irq_handler(line) ? pdTRUE : xHigherPriorityTaskWoken; \ + woken = PIOS_EXTI_generic_irq_handler(line) ? pdTRUE : woken; \ } #else -#define PIOS_EXTI_HANDLE_LINE(line) \ +#define PIOS_EXTI_HANDLE_LINE(line, woken) \ if (EXTI_GetITStatus(EXTI_Line##line) != RESET) { \ EXTI_ClearITPendingBit(EXTI_Line##line); \ PIOS_EXTI_generic_irq_handler(line); \ @@ -185,8 +185,10 @@ static void PIOS_EXTI_0_irq_handler (void) { #ifdef PIOS_INCLUDE_FREERTOS portBASE_TYPE xHigherPriorityTaskWoken = pdFALSE; +#else + bool xHigherPriorityTaskWoken; // dummy variable #endif - PIOS_EXTI_HANDLE_LINE(0); + PIOS_EXTI_HANDLE_LINE(0, xHigherPriorityTaskWoken); #ifdef PIOS_INCLUDE_FREERTOS portEND_SWITCHING_ISR(xHigherPriorityTaskWoken); #endif @@ -197,8 +199,10 @@ static void PIOS_EXTI_1_irq_handler (void) { #ifdef PIOS_INCLUDE_FREERTOS portBASE_TYPE xHigherPriorityTaskWoken = pdFALSE; +#else + bool xHigherPriorityTaskWoken; // dummy variable #endif - PIOS_EXTI_HANDLE_LINE(1); + PIOS_EXTI_HANDLE_LINE(1, xHigherPriorityTaskWoken); #ifdef PIOS_INCLUDE_FREERTOS portEND_SWITCHING_ISR(xHigherPriorityTaskWoken); #endif @@ -209,8 +213,10 @@ static void PIOS_EXTI_2_irq_handler (void) { #ifdef PIOS_INCLUDE_FREERTOS portBASE_TYPE xHigherPriorityTaskWoken = pdFALSE; +#else + bool xHigherPriorityTaskWoken; // dummy variable #endif - PIOS_EXTI_HANDLE_LINE(2); + PIOS_EXTI_HANDLE_LINE(2, xHigherPriorityTaskWoken); #ifdef PIOS_INCLUDE_FREERTOS portEND_SWITCHING_ISR(xHigherPriorityTaskWoken); #endif @@ -221,8 +227,10 @@ static void PIOS_EXTI_3_irq_handler (void) { #ifdef PIOS_INCLUDE_FREERTOS portBASE_TYPE xHigherPriorityTaskWoken = pdFALSE; +#else + bool xHigherPriorityTaskWoken; // dummy variable #endif - PIOS_EXTI_HANDLE_LINE(3); + PIOS_EXTI_HANDLE_LINE(3, xHigherPriorityTaskWoken); #ifdef PIOS_INCLUDE_FREERTOS portEND_SWITCHING_ISR(xHigherPriorityTaskWoken); #endif @@ -233,8 +241,10 @@ static void PIOS_EXTI_4_irq_handler (void) { #ifdef PIOS_INCLUDE_FREERTOS portBASE_TYPE xHigherPriorityTaskWoken = pdFALSE; +#else + bool xHigherPriorityTaskWoken; // dummy variable #endif - PIOS_EXTI_HANDLE_LINE(4); + PIOS_EXTI_HANDLE_LINE(4, xHigherPriorityTaskWoken); #ifdef PIOS_INCLUDE_FREERTOS portEND_SWITCHING_ISR(xHigherPriorityTaskWoken); #endif @@ -245,12 +255,14 @@ static void PIOS_EXTI_9_5_irq_handler (void) { #ifdef PIOS_INCLUDE_FREERTOS portBASE_TYPE xHigherPriorityTaskWoken = pdFALSE; +#else + bool xHigherPriorityTaskWoken; // dummy variable #endif - PIOS_EXTI_HANDLE_LINE(5); - PIOS_EXTI_HANDLE_LINE(6); - PIOS_EXTI_HANDLE_LINE(7); - PIOS_EXTI_HANDLE_LINE(8); - PIOS_EXTI_HANDLE_LINE(9); + PIOS_EXTI_HANDLE_LINE(5, xHigherPriorityTaskWoken); + PIOS_EXTI_HANDLE_LINE(6, xHigherPriorityTaskWoken); + PIOS_EXTI_HANDLE_LINE(7, xHigherPriorityTaskWoken); + PIOS_EXTI_HANDLE_LINE(8, xHigherPriorityTaskWoken); + PIOS_EXTI_HANDLE_LINE(9, xHigherPriorityTaskWoken); #ifdef PIOS_INCLUDE_FREERTOS portEND_SWITCHING_ISR(xHigherPriorityTaskWoken); #endif @@ -261,13 +273,15 @@ static void PIOS_EXTI_15_10_irq_handler (void) { #ifdef PIOS_INCLUDE_FREERTOS portBASE_TYPE xHigherPriorityTaskWoken = pdFALSE; +#else + bool xHigherPriorityTaskWoken; // dummy variable #endif - PIOS_EXTI_HANDLE_LINE(10); - PIOS_EXTI_HANDLE_LINE(11); - PIOS_EXTI_HANDLE_LINE(12); - PIOS_EXTI_HANDLE_LINE(13); - PIOS_EXTI_HANDLE_LINE(14); - PIOS_EXTI_HANDLE_LINE(15); + PIOS_EXTI_HANDLE_LINE(10, xHigherPriorityTaskWoken); + PIOS_EXTI_HANDLE_LINE(11, xHigherPriorityTaskWoken); + PIOS_EXTI_HANDLE_LINE(12, xHigherPriorityTaskWoken); + PIOS_EXTI_HANDLE_LINE(13, xHigherPriorityTaskWoken); + PIOS_EXTI_HANDLE_LINE(14, xHigherPriorityTaskWoken); + PIOS_EXTI_HANDLE_LINE(15, xHigherPriorityTaskWoken); #ifdef PIOS_INCLUDE_FREERTOS portEND_SWITCHING_ISR(xHigherPriorityTaskWoken); #endif diff --git a/flight/PiOS/STM32F4xx/pios_exti.c b/flight/PiOS/STM32F4xx/pios_exti.c index 8ef53492c..45efb2ae5 100644 --- a/flight/PiOS/STM32F4xx/pios_exti.c +++ b/flight/PiOS/STM32F4xx/pios_exti.c @@ -168,13 +168,13 @@ static bool PIOS_EXTI_generic_irq_handler(uint8_t line_index) /* Bind Interrupt Handlers */ #ifdef PIOS_INCLUDE_FREERTOS -#define PIOS_EXTI_HANDLE_LINE(line) \ +#define PIOS_EXTI_HANDLE_LINE(line, woken) \ if (EXTI_GetITStatus(EXTI_Line##line) != RESET) { \ EXTI_ClearITPendingBit(EXTI_Line##line); \ - xHigherPriorityTaskWoken = PIOS_EXTI_generic_irq_handler(line) ? pdTRUE : xHigherPriorityTaskWoken; \ + woken = PIOS_EXTI_generic_irq_handler(line) ? pdTRUE : woken; \ } #else -#define PIOS_EXTI_HANDLE_LINE(line) \ +#define PIOS_EXTI_HANDLE_LINE(line, woken) \ if (EXTI_GetITStatus(EXTI_Line##line) != RESET) { \ EXTI_ClearITPendingBit(EXTI_Line##line); \ PIOS_EXTI_generic_irq_handler(line); \ @@ -185,8 +185,10 @@ static void PIOS_EXTI_0_irq_handler (void) { #ifdef PIOS_INCLUDE_FREERTOS portBASE_TYPE xHigherPriorityTaskWoken = pdFALSE; +#else + bool xHigherPriorityTaskWoken; #endif - PIOS_EXTI_HANDLE_LINE(0); + PIOS_EXTI_HANDLE_LINE(0, xHigherPriorityTaskWoken); #ifdef PIOS_INCLUDE_FREERTOS portEND_SWITCHING_ISR(xHigherPriorityTaskWoken); #endif @@ -197,8 +199,10 @@ static void PIOS_EXTI_1_irq_handler (void) { #ifdef PIOS_INCLUDE_FREERTOS portBASE_TYPE xHigherPriorityTaskWoken = pdFALSE; +#else + bool xHigherPriorityTaskWoken; #endif - PIOS_EXTI_HANDLE_LINE(1); + PIOS_EXTI_HANDLE_LINE(1, xHigherPriorityTaskWoken); #ifdef PIOS_INCLUDE_FREERTOS portEND_SWITCHING_ISR(xHigherPriorityTaskWoken); #endif @@ -209,8 +213,10 @@ static void PIOS_EXTI_2_irq_handler (void) { #ifdef PIOS_INCLUDE_FREERTOS portBASE_TYPE xHigherPriorityTaskWoken = pdFALSE; +#else + bool xHigherPriorityTaskWoken; #endif - PIOS_EXTI_HANDLE_LINE(2); + PIOS_EXTI_HANDLE_LINE(2, xHigherPriorityTaskWoken); #ifdef PIOS_INCLUDE_FREERTOS portEND_SWITCHING_ISR(xHigherPriorityTaskWoken); #endif @@ -221,8 +227,10 @@ static void PIOS_EXTI_3_irq_handler (void) { #ifdef PIOS_INCLUDE_FREERTOS portBASE_TYPE xHigherPriorityTaskWoken = pdFALSE; +#else + bool xHigherPriorityTaskWoken; #endif - PIOS_EXTI_HANDLE_LINE(3); + PIOS_EXTI_HANDLE_LINE(3, xHigherPriorityTaskWoken); #ifdef PIOS_INCLUDE_FREERTOS portEND_SWITCHING_ISR(xHigherPriorityTaskWoken); #endif @@ -233,8 +241,10 @@ static void PIOS_EXTI_4_irq_handler (void) { #ifdef PIOS_INCLUDE_FREERTOS portBASE_TYPE xHigherPriorityTaskWoken = pdFALSE; +#else + bool xHigherPriorityTaskWoken; #endif - PIOS_EXTI_HANDLE_LINE(4); + PIOS_EXTI_HANDLE_LINE(4, xHigherPriorityTaskWoken); #ifdef PIOS_INCLUDE_FREERTOS portEND_SWITCHING_ISR(xHigherPriorityTaskWoken); #endif @@ -245,12 +255,14 @@ static void PIOS_EXTI_9_5_irq_handler (void) { #ifdef PIOS_INCLUDE_FREERTOS portBASE_TYPE xHigherPriorityTaskWoken = pdFALSE; +#else + bool xHigherPriorityTaskWoken; #endif - PIOS_EXTI_HANDLE_LINE(5); - PIOS_EXTI_HANDLE_LINE(6); - PIOS_EXTI_HANDLE_LINE(7); - PIOS_EXTI_HANDLE_LINE(8); - PIOS_EXTI_HANDLE_LINE(9); + PIOS_EXTI_HANDLE_LINE(5, xHigherPriorityTaskWoken); + PIOS_EXTI_HANDLE_LINE(6, xHigherPriorityTaskWoken); + PIOS_EXTI_HANDLE_LINE(7, xHigherPriorityTaskWoken); + PIOS_EXTI_HANDLE_LINE(8, xHigherPriorityTaskWoken); + PIOS_EXTI_HANDLE_LINE(9, xHigherPriorityTaskWoken); #ifdef PIOS_INCLUDE_FREERTOS portEND_SWITCHING_ISR(xHigherPriorityTaskWoken); #endif @@ -261,13 +273,15 @@ static void PIOS_EXTI_15_10_irq_handler (void) { #ifdef PIOS_INCLUDE_FREERTOS portBASE_TYPE xHigherPriorityTaskWoken = pdFALSE; +#else + bool xHigherPriorityTaskWoken; #endif - PIOS_EXTI_HANDLE_LINE(10); - PIOS_EXTI_HANDLE_LINE(11); - PIOS_EXTI_HANDLE_LINE(12); - PIOS_EXTI_HANDLE_LINE(13); - PIOS_EXTI_HANDLE_LINE(14); - PIOS_EXTI_HANDLE_LINE(15); + PIOS_EXTI_HANDLE_LINE(10, xHigherPriorityTaskWoken); + PIOS_EXTI_HANDLE_LINE(11, xHigherPriorityTaskWoken); + PIOS_EXTI_HANDLE_LINE(12, xHigherPriorityTaskWoken); + PIOS_EXTI_HANDLE_LINE(13, xHigherPriorityTaskWoken); + PIOS_EXTI_HANDLE_LINE(14, xHigherPriorityTaskWoken); + PIOS_EXTI_HANDLE_LINE(15, xHigherPriorityTaskWoken); #ifdef PIOS_INCLUDE_FREERTOS portEND_SWITCHING_ISR(xHigherPriorityTaskWoken); #endif From b0d8487e272d71d5fe234bc6075ea9c2a32eb3fa Mon Sep 17 00:00:00 2001 From: James Cotton Date: Fri, 28 Sep 2012 02:14:15 -0500 Subject: [PATCH 068/105] PIOS_RFM22: Make the irq return false for the exti changes --- flight/PiOS/Common/pios_rfm22b.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/flight/PiOS/Common/pios_rfm22b.c b/flight/PiOS/Common/pios_rfm22b.c index 1f65748ee..74230c7a1 100644 --- a/flight/PiOS/Common/pios_rfm22b.c +++ b/flight/PiOS/Common/pios_rfm22b.c @@ -172,7 +172,7 @@ uint32_t random32 = 0x459ab8d8; /* Local function forwared declarations */ static void PIOS_RFM22B_Supervisor(uint32_t ppm_id); static void rfm22_processInt(void); -static void PIOS_RFM22_EXT_Int(void); +static bool PIOS_RFM22_EXT_Int(void); static void rfm22_setTxMode(uint8_t mode); // SPI read/write functions @@ -751,12 +751,13 @@ uint8_t rfm22_read(uint8_t addr) // external interrupt -static void PIOS_RFM22_EXT_Int(void) +static bool PIOS_RFM22_EXT_Int(void) { rfm22_setDebug("Ext Int"); if (!exec_using_spi) rfm22_processInt(); rfm22_setDebug("Ext Done"); + return false; } void rfm22_disableExtInt(void) From dfa60f16b37f704aaebeb89367eee50a72ebee0a Mon Sep 17 00:00:00 2001 From: PT_Dreamer Date: Fri, 28 Sep 2012 11:53:19 +0100 Subject: [PATCH 069/105] Revert "Changed UAVO browser erase icon to reset icon." This reverts commit 85ed1c364dfc5c744242b56923d064d3c332a3e9. Change voted against by 2 lead devs on the review. --- .../plugins/uavobjectbrowser/images/reset.png | Bin 31001 -> 0 bytes .../uavobjectbrowser/uavobjectbrowser.qrc | 1 - .../uavobjectbrowser/uavobjectbrowser.ui | 4 ++-- 3 files changed, 2 insertions(+), 3 deletions(-) delete mode 100644 ground/openpilotgcs/src/plugins/uavobjectbrowser/images/reset.png diff --git a/ground/openpilotgcs/src/plugins/uavobjectbrowser/images/reset.png b/ground/openpilotgcs/src/plugins/uavobjectbrowser/images/reset.png deleted file mode 100644 index 231922279f847b071ed5995ce2fa842a2461181f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 31001 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/up_alt.png images/trash.png images/1343241276_eye.png - images/reset.png diff --git a/ground/openpilotgcs/src/plugins/uavobjectbrowser/uavobjectbrowser.ui b/ground/openpilotgcs/src/plugins/uavobjectbrowser/uavobjectbrowser.ui index e08c80535..959df59cc 100644 --- a/ground/openpilotgcs/src/plugins/uavobjectbrowser/uavobjectbrowser.ui +++ b/ground/openpilotgcs/src/plugins/uavobjectbrowser/uavobjectbrowser.ui @@ -128,14 +128,14 @@ - Resets UAV object setting to default values at next boot + Erase ... - :/uavobjectbrowser/images/reset.png:/uavobjectbrowser/images/reset.png + :/uavobjectbrowser/images/trash.png:/uavobjectbrowser/images/trash.png From b637bfaca9802514b6b2ea72b4c91b74ed900db5 Mon Sep 17 00:00:00 2001 From: PT_Dreamer Date: Fri, 28 Sep 2012 19:36:46 +0100 Subject: [PATCH 070/105] Revert "Changed UAVO browser erase icon to reset icon." This reverts commit 85ed1c364dfc5c744242b56923d064d3c332a3e9. --- .../plugins/uavobjectbrowser/images/reset.png | Bin 31001 -> 0 bytes .../uavobjectbrowser/uavobjectbrowser.qrc | 1 - .../uavobjectbrowser/uavobjectbrowser.ui | 4 ++-- 3 files changed, 2 insertions(+), 3 deletions(-) delete mode 100644 ground/openpilotgcs/src/plugins/uavobjectbrowser/images/reset.png diff --git a/ground/openpilotgcs/src/plugins/uavobjectbrowser/images/reset.png b/ground/openpilotgcs/src/plugins/uavobjectbrowser/images/reset.png deleted file mode 100644 index 231922279f847b071ed5995ce2fa842a2461181f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 31001 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/up_alt.png images/trash.png images/1343241276_eye.png - images/reset.png diff --git a/ground/openpilotgcs/src/plugins/uavobjectbrowser/uavobjectbrowser.ui b/ground/openpilotgcs/src/plugins/uavobjectbrowser/uavobjectbrowser.ui index e08c80535..959df59cc 100644 --- a/ground/openpilotgcs/src/plugins/uavobjectbrowser/uavobjectbrowser.ui +++ b/ground/openpilotgcs/src/plugins/uavobjectbrowser/uavobjectbrowser.ui @@ -128,14 +128,14 @@ - Resets UAV object setting to default values at next boot + Erase ... - :/uavobjectbrowser/images/reset.png:/uavobjectbrowser/images/reset.png + :/uavobjectbrowser/images/trash.png:/uavobjectbrowser/images/trash.png From fdec9ce1494377166d213cdacb42791f7c1be606 Mon Sep 17 00:00:00 2001 From: Fredrik Arvidsson Date: Sat, 29 Sep 2012 11:47:16 +0200 Subject: [PATCH 071/105] OP-39 Fixed a lot of textual stuff. Changed layout on some pages to make room for longer texts. Changed default neutral value for output from 1080 to 1000. Renamed 'Hexacopter H' to 'Hexacopter X' --- .../setupwizard/pages/controllerpage.ui | 15 ++++---- .../src/plugins/setupwizard/pages/endpage.ui | 4 +-- .../plugins/setupwizard/pages/flashpage.ui | 28 +++++++-------- .../plugins/setupwizard/pages/inputpage.ui | 2 +- .../setupwizard/pages/levellingpage.ui | 4 +-- .../plugins/setupwizard/pages/multipage.cpp | 2 +- .../pages/outputcalibrationpage.ui | 16 ++++----- .../plugins/setupwizard/pages/rebootpage.ui | 2 +- .../plugins/setupwizard/pages/startpage.ui | 34 +++++++------------ .../plugins/setupwizard/pages/summarypage.ui | 29 ++++++++-------- .../plugins/setupwizard/pages/vehiclepage.ui | 21 +++++++----- .../src/plugins/setupwizard/setupwizard.cpp | 2 +- .../setupwizard/vehicleconfigurationsource.h | 2 +- 13 files changed, 78 insertions(+), 83 deletions(-) diff --git a/ground/openpilotgcs/src/plugins/setupwizard/pages/controllerpage.ui b/ground/openpilotgcs/src/plugins/setupwizard/pages/controllerpage.ui index 8164d77e7..3b06fa756 100644 --- a/ground/openpilotgcs/src/plugins/setupwizard/pages/controllerpage.ui +++ b/ground/openpilotgcs/src/plugins/setupwizard/pages/controllerpage.ui @@ -29,10 +29,11 @@ p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8pt; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:12pt; font-weight:600;">OpenPilot board identification</span></p> <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p> -<p style="-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:'Lucida Grande'; font-size:13pt;"><br /></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt;">To continue, the wizard needs to determine the configuration required for the type of OpenPilot controller you have. When connected, the wizard will attempt to automatically detect the type of board.</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt;">To continue, the wizard needs to determine the configuration required for the type of OpenPilot controller you have. When connected, the wizard will attempt to automatically detect the type of board.</span></p> <p style="-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:10pt;"><br /></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt;">Please connect the board to a USB port on your computer and select the device from the list below. Then press </span><span style=" font-size:10pt; font-weight:600;">Connect</span><span style=" font-size:10pt;">. If the board is already connected and successfully detected, the board type will already be displayed. You can disconnect and select another device if you need to detect another board.</span></p></body></html> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt;">If the board is already connected and successfully detected, the board type will already be displayed. You can </span><span style=" font-size:10pt; font-weight:600;">Disconnect</span><span style=" font-size:10pt;"> and select another device if you need to detect another board.</span></p> +<p style="-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:10pt;"><br /></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt;">If your board is not connected please connect the board to a USB port on your computer and select the device from the list below. Then press </span><span style=" font-size:10pt; font-weight:600;">Connect</span><span style=" font-size:10pt;">.</span></p></body></html> Qt::AutoText @@ -47,9 +48,9 @@ p, li { white-space: pre-wrap; } - 490 + 460 350 - 70 + 100 23 @@ -85,7 +86,7 @@ p, li { white-space: pre-wrap; } 170 350 - 300 + 279 22 @@ -95,7 +96,7 @@ p, li { white-space: pre-wrap; } 170 310 - 300 + 279 22 diff --git a/ground/openpilotgcs/src/plugins/setupwizard/pages/endpage.ui b/ground/openpilotgcs/src/plugins/setupwizard/pages/endpage.ui index 068203153..c85c08176 100644 --- a/ground/openpilotgcs/src/plugins/setupwizard/pages/endpage.ui +++ b/ground/openpilotgcs/src/plugins/setupwizard/pages/endpage.ui @@ -25,7 +25,7 @@ 20 20 550 - 211 + 251 @@ -36,7 +36,7 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:12pt; font-weight:600;">Congratulations!</span></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:12pt; font-weight:600;">Setup wizard is completed.</span></p> <p style="-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;"><br /></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt;">This part of the setup procedure is now complete and you are one step away from having a complete setup of your OpenPilot controller.</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt;">This part of the setup procedure is now complete and you are one step away from completing the setup of your OpenPilot controller.</span></p> <p style="-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:10pt;"><br /></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt;">To complete the setup please click the Radio Setup Wizard button below to close this wizard and go directly to the Radio Setup Wizard.</span></p> <p style="-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:10pt;"><br /></p> diff --git a/ground/openpilotgcs/src/plugins/setupwizard/pages/flashpage.ui b/ground/openpilotgcs/src/plugins/setupwizard/pages/flashpage.ui index f3e6743e2..0f5f62e9f 100644 --- a/ground/openpilotgcs/src/plugins/setupwizard/pages/flashpage.ui +++ b/ground/openpilotgcs/src/plugins/setupwizard/pages/flashpage.ui @@ -19,26 +19,24 @@ 20 20 541 - 201 + 231 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Lucida Grande'; font-size:13pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'MS Shell Dlg 2'; font-size:12pt; font-weight:600;">OpenPilot configuration ready to save</span></p> -<p style="-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:'MS Shell Dlg 2'; font-size:12pt; font-weight:600;"></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'MS Shell Dlg 2'; font-size:12pt; font-weight:600;"><br /></span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'MS Shell Dlg 2'; font-size:10pt;">The wizard is now ready to save the configuration directly to your OpenPilot controller. </span></p> -<p style="-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:'MS Shell Dlg 2'; font-size:10pt;"></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'MS Shell Dlg 2'; font-size:10pt;"><br /></span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'MS Shell Dlg 2'; font-size:10pt;">If any of the selections made in this wizard require a reboot of the controller, then power cycling the OpenPilot controller board will have to be performed after you save in this step.</span></p> -<p style="-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:'MS Shell Dlg 2'; font-size:10pt;"></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'MS Shell Dlg 2'; font-size:10pt;"><br /></span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'MS Shell Dlg 2'; font-size:10pt;">Press the Save button to save the configuration.</span></p> -<p style="-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:'MS Shell Dlg 2'; font-size:10pt;"></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'MS Shell Dlg 2'; font-size:10pt;"><br /></span></p></body></html> +</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8pt; font-weight:400; font-style:normal;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:12pt; font-weight:600;">OpenPilot configuration ready to save</span></p> +<p style="-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;"><br /></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt;">The wizard is now ready to save the configuration directly to your OpenPilot controller. </span></p> +<p style="-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:10pt;"><br /></p> +<p style="-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:10pt;"><br /></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt;">If any of the selections made in this wizard require a reboot of the controller, then power cycling the OpenPilot controller board will have to be performed after you save in this step.</span></p> +<p style="-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:10pt;"><br /></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt;">Press the Save button to save the configuration.</span></p> +<p style="-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:10pt;"><br /></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt;"><br /></span></p></body></html> Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop @@ -51,7 +49,7 @@ p, li { white-space: pre-wrap; } 225 - 250 + 260 150 70 diff --git a/ground/openpilotgcs/src/plugins/setupwizard/pages/inputpage.ui b/ground/openpilotgcs/src/plugins/setupwizard/pages/inputpage.ui index 1b7b2575e..6212b1e3d 100644 --- a/ground/openpilotgcs/src/plugins/setupwizard/pages/inputpage.ui +++ b/ground/openpilotgcs/src/plugins/setupwizard/pages/inputpage.ui @@ -19,7 +19,7 @@ 20 20 541 - 171 + 221 diff --git a/ground/openpilotgcs/src/plugins/setupwizard/pages/levellingpage.ui b/ground/openpilotgcs/src/plugins/setupwizard/pages/levellingpage.ui index ee29b25f0..77152f792 100644 --- a/ground/openpilotgcs/src/plugins/setupwizard/pages/levellingpage.ui +++ b/ground/openpilotgcs/src/plugins/setupwizard/pages/levellingpage.ui @@ -19,7 +19,7 @@ 20 20 541 - 201 + 241 @@ -44,7 +44,7 @@ p, li { white-space: pre-wrap; } 200 - 250 + 270 200 70 diff --git a/ground/openpilotgcs/src/plugins/setupwizard/pages/multipage.cpp b/ground/openpilotgcs/src/plugins/setupwizard/pages/multipage.cpp index 3b986d6e9..26076f39e 100644 --- a/ground/openpilotgcs/src/plugins/setupwizard/pages/multipage.cpp +++ b/ground/openpilotgcs/src/plugins/setupwizard/pages/multipage.cpp @@ -92,7 +92,7 @@ void MultiPage::setupMultiTypesCombo() ui->typeCombo->addItem(tr("Hexacopter Coax (Y6)"), SetupWizard::MULTI_ROTOR_HEXA_COAX_Y); m_descriptions << tr("Hexacopter Coax (Y6)"); - ui->typeCombo->addItem(tr("Hexacopter H"), SetupWizard::MULTI_ROTOR_HEXA_H); + ui->typeCombo->addItem(tr("Hexacopter X"), SetupWizard::MULTI_ROTOR_HEXA_H); m_descriptions << tr("Hexacopter H"); // Fredrik Arvidsson(m_thread) 2012-08-26 Disable Octos until further notice diff --git a/ground/openpilotgcs/src/plugins/setupwizard/pages/outputcalibrationpage.ui b/ground/openpilotgcs/src/plugins/setupwizard/pages/outputcalibrationpage.ui index 22e0f0eec..6b6d8810f 100644 --- a/ground/openpilotgcs/src/plugins/setupwizard/pages/outputcalibrationpage.ui +++ b/ground/openpilotgcs/src/plugins/setupwizard/pages/outputcalibrationpage.ui @@ -16,7 +16,7 @@ - 300 + 310 40 270 341 @@ -31,7 +31,7 @@ 20 40 - 270 + 290 341 @@ -44,7 +44,7 @@ 0 10 - 261 + 270 321 @@ -55,7 +55,7 @@ p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8pt; font-weight:400; font-style:normal;"> <p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Lucida Grande'; font-size:10pt;">It is now time to calibrate the output levels for the signals controlling your vehicle. </span></p> <p align="center" style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Lucida Grande'; font-size:10pt; font-weight:600; color:#ff0000;">VERY IMPORTANT!</span><span style=" font-family:'Lucida Grande'; font-size:10pt;"><br /></span><span style=" font-family:'Lucida Grande'; font-size:10pt; font-weight:600; color:#ff0000;">REMOVE ALL PROPELLERS FROM THE VEHICLE BEFORE PROCEEDING!</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Lucida Grande'; font-size:10pt;">Connect all components according to the illustration on the previous page, and provide power using an external power supply like a battery to continue.</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Lucida Grande'; font-size:10pt;">Connect all components according to the illustration on the summary page, and provide power using an external power supply such as a battery before continuing.</span></p> <p style="-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:'Lucida Grande'; font-size:10pt;"><br /></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Lucida Grande'; font-size:10pt;">Depending on what vehicle you have selected, both the motors controlled by ESCs and/or servos controlled directly by the OpenPilot controller may have to be calibrated. The following steps will guide you safely through this process. </span></p></body></html> @@ -74,7 +74,7 @@ p, li { white-space: pre-wrap; } 0 10 261 - 141 + 221 @@ -151,7 +151,7 @@ p, li { white-space: pre-wrap; } 0 10 261 - 141 + 201 @@ -256,7 +256,7 @@ p, li { white-space: pre-wrap; } 0 10 261 - 151 + 211 @@ -388,7 +388,7 @@ p, li { white-space: pre-wrap; } 0 10 261 - 151 + 211 diff --git a/ground/openpilotgcs/src/plugins/setupwizard/pages/rebootpage.ui b/ground/openpilotgcs/src/plugins/setupwizard/pages/rebootpage.ui index f1720a3a5..a7340144f 100644 --- a/ground/openpilotgcs/src/plugins/setupwizard/pages/rebootpage.ui +++ b/ground/openpilotgcs/src/plugins/setupwizard/pages/rebootpage.ui @@ -42,7 +42,7 @@ p, li { white-space: pre-wrap; } 50 180 501 - 101 + 151 diff --git a/ground/openpilotgcs/src/plugins/setupwizard/pages/startpage.ui b/ground/openpilotgcs/src/plugins/setupwizard/pages/startpage.ui index 48c41f15f..3481e4b8e 100644 --- a/ground/openpilotgcs/src/plugins/setupwizard/pages/startpage.ui +++ b/ground/openpilotgcs/src/plugins/setupwizard/pages/startpage.ui @@ -32,27 +32,19 @@ <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Lucida Grande'; font-size:13pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'MS Shell Dlg 2'; font-size:12pt; font-weight:600;">Welcome to the OpenPilot Setup Wizard</span></p> -<p style="-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:'MS Shell Dlg 2'; font-size:8pt;"></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'MS Shell Dlg 2'; font-size:8pt;"><br /></span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'MS Shell Dlg 2'; font-size:10pt;">This wizard will guide you through the basic steps required to setup your OpenPilot controller for the first time. You will be asked questions about your platform (multirotor/heli/fixed-wing) which this wizard will use to configure your aircraft for your maiden flight. </span></p> -<p style="-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:'MS Shell Dlg 2'; font-size:10pt;"></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'MS Shell Dlg 2'; font-size:10pt;"><br /></span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'MS Shell Dlg 2'; font-size:10pt;">This wizard does not configure all of the advanced settings available in the GCS Configuration. All basic and advanced configuration parameters can be modified later by using the GCS Configuration plugin.</span></p> -<p style="-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:'MS Shell Dlg 2'; font-size:10pt;"></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'MS Shell Dlg 2'; font-size:10pt;"><br /></span></p> -<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p> -<p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'MS Shell Dlg 2'; font-size:12pt; font-weight:600; color:#ff0000;">WARNING: YOU MUST REMOVE ALL PROPELLERS </span></p> -<p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'MS Shell Dlg 2'; font-size:12pt; font-weight:600; color:#ff0000;">FROM THE VEHICLE BEFORE PROCEEDING!</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'MS Shell Dlg 2'; font-size:10pt;"><br /></span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'MS Shell Dlg 2'; font-size:10pt;">Disregarding this warning puts you at</span><span style=" font-family:'MS Shell Dlg 2'; font-size:10pt; font-weight:600; color:#000000;"> risk of very serious injury</span><span style=" font-family:'MS Shell Dlg 2'; font-size:10pt;">!</span></p> -<p style="-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:'MS Shell Dlg 2'; font-size:10pt;"></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'MS Shell Dlg 2'; font-size:10pt;"><br /></span></p> -<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'MS Shell Dlg 2'; font-size:10pt;">Now that your props are removed we can get started. Ready?</span></p></body></html> +</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8pt; font-weight:400; font-style:normal;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:12pt; font-weight:600;">Welcome to the OpenPilot Setup Wizard</span></p> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt;">This wizard will guide you through the basic steps required to setup your OpenPilot controller for the first time. You will be asked questions about your platform (multirotor/heli/fixed-wing) which this wizard will use to configure your aircraft for your maiden flight. </span></p> +<p style="-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:10pt;"><br /></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt;">This wizard does not configure all of the advanced settings available in the GCS Configuration. All basic and advanced configuration parameters can be modified later by using the GCS Configuration plugin.</span></p> +<p style="-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:10pt;"><br /></p> +<p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:12pt; font-weight:600; color:#ff0000;">WARNING: YOU MUST REMOVE ALL PROPELLERS </span></p> +<p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:12pt; font-weight:600; color:#ff0000;">FROM THE VEHICLE BEFORE PROCEEDING!</span></p> +<p style="-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:'Lucida Grande'; font-size:13pt;"><br /></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt;">Disregarding this warning puts you at</span><span style=" font-size:10pt; font-weight:600; color:#000000;"> risk of very serious injury</span><span style=" font-size:10pt;">!</span></p> +<p style="-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:10pt;"><br /></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt;">Now that your props are removed we can get started. Ready?</span></p></body></html> Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop diff --git a/ground/openpilotgcs/src/plugins/setupwizard/pages/summarypage.ui b/ground/openpilotgcs/src/plugins/setupwizard/pages/summarypage.ui index ee6607842..879cfeb52 100644 --- a/ground/openpilotgcs/src/plugins/setupwizard/pages/summarypage.ui +++ b/ground/openpilotgcs/src/plugins/setupwizard/pages/summarypage.ui @@ -19,23 +19,22 @@ 20 20 541 - 211 + 241 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Lucida Grande'; font-size:13pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'MS Shell Dlg 2'; font-size:12pt; font-weight:600;">OpenPilot configuration summary</span></p> -<p style="-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:'MS Shell Dlg 2'; font-size:12pt; font-weight:600;"></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'MS Shell Dlg 2'; font-size:12pt; font-weight:600;"><br /></span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'MS Shell Dlg 2'; font-size:10pt;">The first part of this wizard is now complete. All information required to create a basic OpenPilot controller configuration for a specific vehicle has been collected.</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'MS Shell Dlg 2'; font-size:10pt;">Below is a summary of the configuration and a button that links to a diagram illustrating how to connect required hardware and the OpenPilotController with the current configuration.</span></p> -<p style="-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:'MS Shell Dlg 2'; font-size:10pt;"></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'MS Shell Dlg 2'; font-size:10pt;">To continue the wizard and go through some basic configuration steps, please continue to the next step of this wizard.</span></p> -<p style="-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:'MS Shell Dlg 2'; font-size:10pt;"></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'MS Shell Dlg 2'; font-size:10pt;">The following steps require that your OpenPilot controller is set up according to the diagram, it is </span><span style=" font-family:'MS Shell Dlg 2'; font-size:10pt; font-weight:600;">connected to the computer</span><span style=" font-family:'MS Shell Dlg 2'; font-size:10pt;"> by USB, and that the vehicle is</span><span style=" font-family:'MS Shell Dlg 2'; font-size:10pt; font-weight:600;"> powered by a battery</span><span style=" font-family:'MS Shell Dlg 2'; font-size:10pt;">.</span></p></body></html> +</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8pt; font-weight:400; font-style:normal;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:12pt; font-weight:600;">OpenPilot configuration summary</span></p> +<p style="-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;"><br /></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt;">The first part of this wizard is now complete. All information required to create a basic OpenPilot controller configuration for a specific vehicle has been collected.</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt;">Below is a summary of the configuration and a button that links to a diagram illustrating how to connect required hardware and the OpenPilot Controller with the current configuration.</span></p> +<p style="-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:10pt;"><br /></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt;">To continue the wizard and go through some basic configuration steps, please continue to the next step of this wizard.</span></p> +<p style="-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:10pt;"><br /></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt;">The following steps require that your OpenPilot controller is set up according to the diagram, it is </span><span style=" font-size:10pt; font-weight:600;">connected to the computer</span><span style=" font-size:10pt;"> by USB, and that the vehicle is</span><span style=" font-size:10pt; font-weight:600;"> powered by a battery</span><span style=" font-size:10pt;">.</span></p></body></html> Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop @@ -48,7 +47,7 @@ p, li { white-space: pre-wrap; } 460 - 260 + 271 100 100 @@ -89,10 +88,10 @@ p, li { white-space: pre-wrap; } - 40 - 249 + 20 + 270 400 - 121 + 100 diff --git a/ground/openpilotgcs/src/plugins/setupwizard/pages/vehiclepage.ui b/ground/openpilotgcs/src/plugins/setupwizard/pages/vehiclepage.ui index 48ef24ac8..804887b2d 100644 --- a/ground/openpilotgcs/src/plugins/setupwizard/pages/vehiclepage.ui +++ b/ground/openpilotgcs/src/plugins/setupwizard/pages/vehiclepage.ui @@ -19,19 +19,21 @@ 20 20 550 - 131 + 221 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Lucida Grande'; font-size:13pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'MS Shell Dlg 2'; font-size:12pt; font-weight:600;">Vehicle type selection</span></p> -<p style="-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:'MS Shell Dlg 2'; font-size:12pt; font-weight:600;"></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'MS Shell Dlg 2'; font-size:10pt;">To continue, the wizard needs to know what type of vehicle the OpenPilot controller board is going to be used with. This step is crucial, since most of the following configuration is unique per vehicle type.</span></p> -<p style="-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:'MS Shell Dlg 2'; font-size:8pt;"></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'MS Shell Dlg 2'; font-size:10pt;">Go ahead and select the type of vehicle you want to create a configuration for.</span></p></body></html> +</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8pt; font-weight:400; font-style:normal;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:12pt; font-weight:600;">Vehicle type selection</span></p> +<p style="-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;"><br /></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt;">To continue, the wizard needs to know what type of vehicle the OpenPilot controller board is going to be used with. This step is crucial since much of the following configuration is unique per vehicle type.</span></p> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt;">Go ahead and select the type of vehicle for which you want to create a configuration.</span></p> +<p style="-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:10pt;"><br /></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt;">(The current version only provides functionality for multirotors.)</span></p></body></html> Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop @@ -105,7 +107,7 @@ p, li { white-space: pre-wrap; } - Tricopter, Quadcopter, Hexacopter, Octocopter + Tricopter, Quadcopter, Hexacopter false @@ -213,6 +215,9 @@ p, li { white-space: pre-wrap; } 10 + + CCPM Helicopters + QToolButton { border: none } diff --git a/ground/openpilotgcs/src/plugins/setupwizard/setupwizard.cpp b/ground/openpilotgcs/src/plugins/setupwizard/setupwizard.cpp index 888e64035..f91357b35 100644 --- a/ground/openpilotgcs/src/plugins/setupwizard/setupwizard.cpp +++ b/ground/openpilotgcs/src/plugins/setupwizard/setupwizard.cpp @@ -173,7 +173,7 @@ QString SetupWizard::getSummaryText() summary.append(tr("Hexacopter Coax (Y6)")); break; case SetupWizard::MULTI_ROTOR_HEXA_H: - summary.append(tr("Hexacopter H")); + summary.append(tr("Hexacopter X")); break; case SetupWizard::MULTI_ROTOR_OCTO: summary.append(tr("Octocopter")); diff --git a/ground/openpilotgcs/src/plugins/setupwizard/vehicleconfigurationsource.h b/ground/openpilotgcs/src/plugins/setupwizard/vehicleconfigurationsource.h index 6332ee23b..5e36902e9 100644 --- a/ground/openpilotgcs/src/plugins/setupwizard/vehicleconfigurationsource.h +++ b/ground/openpilotgcs/src/plugins/setupwizard/vehicleconfigurationsource.h @@ -47,7 +47,7 @@ struct actuatorChannelSettings { quint16 channelMax; //Default values - actuatorChannelSettings(): channelMin(1000), channelNeutral(1080), channelMax(1900) {} + actuatorChannelSettings(): channelMin(1000), channelNeutral(1000), channelMax(1900) {} }; From 4edf78d1cda9202edc7ac5402b292ec4e9a303d8 Mon Sep 17 00:00:00 2001 From: PT_Dreamer Date: Sat, 29 Sep 2012 22:44:52 +0100 Subject: [PATCH 072/105] GCS-No more hidden settings. --- .../plugins/coreplugin/generalsettings.cpp | 27 +------------------ .../src/plugins/coreplugin/generalsettings.h | 12 --------- 2 files changed, 1 insertion(+), 38 deletions(-) diff --git a/ground/openpilotgcs/src/plugins/coreplugin/generalsettings.cpp b/ground/openpilotgcs/src/plugins/coreplugin/generalsettings.cpp index 663f5e545..39a656de2 100644 --- a/ground/openpilotgcs/src/plugins/coreplugin/generalsettings.cpp +++ b/ground/openpilotgcs/src/plugins/coreplugin/generalsettings.cpp @@ -39,7 +39,6 @@ #include #include "ui_generalsettings.h" -#include using namespace Utils; using namespace Core::Internal; @@ -113,14 +112,8 @@ void GeneralSettings::fillLanguageBox() const QWidget *GeneralSettings::createPage(QWidget *parent) { m_page = new Ui::GeneralSettings(); - globalSettingsWidget *w = new globalSettingsWidget(parent); - connect(w,SIGNAL(showHidden()),this,SLOT(showHidden())); + QWidget *w = new QWidget(parent); m_page->setupUi(w); - m_page->labelUDP->setVisible(false); - m_page->cbUseUDPMirror->setVisible(false); - m_page->labelExpert->setVisible(false); - m_page->cbExpertMode->setVisible(false); - fillLanguageBox(); connect(m_page->checkAutoConnect,SIGNAL(stateChanged(int)),this,SLOT(slotAutoConnect(int))); m_page->checkBoxSaveOnExit->setChecked(m_saveSettingsOnExit); @@ -263,21 +256,3 @@ void GeneralSettings::slotAutoConnect(int value) else m_page->checkAutoSelect->setEnabled(true); } - -void GeneralSettings::showHidden() -{ - m_page->labelUDP->setVisible(true); - m_page->cbUseUDPMirror->setVisible(true); - m_page->labelExpert->setVisible(true); - m_page->cbExpertMode->setVisible(true); -} - -globalSettingsWidget::globalSettingsWidget(QWidget *parent):QWidget(parent){} - -void globalSettingsWidget::keyPressEvent(QKeyEvent *event) -{ - if(event->key()==Qt::Key_F7) - { - emit showHidden(); - } -} diff --git a/ground/openpilotgcs/src/plugins/coreplugin/generalsettings.h b/ground/openpilotgcs/src/plugins/coreplugin/generalsettings.h index 8b41d9b0f..8bd498fe8 100644 --- a/ground/openpilotgcs/src/plugins/coreplugin/generalsettings.h +++ b/ground/openpilotgcs/src/plugins/coreplugin/generalsettings.h @@ -69,7 +69,6 @@ private slots: void resetLanguage(); void showHelpForExternalEditor(); void slotAutoConnect(int); - void showHidden(); private: void fillLanguageBox() const; @@ -86,17 +85,6 @@ private: QList m_codecs; }; -class globalSettingsWidget:public QWidget -{ - Q_OBJECT -public: - globalSettingsWidget(QWidget * parent); -protected: - void keyPressEvent(QKeyEvent *); -signals: - void showHidden(); -}; - } // namespace Internal } // namespace Core From 2f4b1e69ddb8ea2d8056e4702ece2c34bcbe00dc Mon Sep 17 00:00:00 2001 From: Stacey Sheldon Date: Sat, 29 Sep 2012 19:09:27 -0400 Subject: [PATCH 073/105] rcvr: Support PPM and PWM at the same time on CC Adds a new mode for the receiver port (PPM+PWM) which will allow simultaneous use of 1 pin for PPM and the rest of the pins for PWM inputs. --- flight/CopterControl/System/pios_board.c | 28 +++++++++++++++++++ .../coptercontrol/board_hw_defs.c | 13 +++++++++ shared/uavobjectdefinition/hwsettings.xml | 2 +- 3 files changed, 42 insertions(+), 1 deletion(-) diff --git a/flight/CopterControl/System/pios_board.c b/flight/CopterControl/System/pios_board.c index ccbae3058..d0e8dc8cb 100644 --- a/flight/CopterControl/System/pios_board.c +++ b/flight/CopterControl/System/pios_board.c @@ -662,6 +662,33 @@ void PIOS_Board_Init(void) { } #endif /* PIOS_INCLUDE_PPM */ break; + case HWSETTINGS_CC_RCVRPORT_PPMPWM: + /* This is a combination of PPM and PWM inputs */ +#if defined(PIOS_INCLUDE_PPM) + { + uint32_t pios_ppm_id; + PIOS_PPM_Init(&pios_ppm_id, &pios_ppm_cfg); + + uint32_t pios_ppm_rcvr_id; + if (PIOS_RCVR_Init(&pios_ppm_rcvr_id, &pios_ppm_rcvr_driver, pios_ppm_id)) { + PIOS_Assert(0); + } + pios_rcvr_group_map[MANUALCONTROLSETTINGS_CHANNELGROUPS_PPM] = pios_ppm_rcvr_id; + } +#endif /* PIOS_INCLUDE_PPM */ +#if defined(PIOS_INCLUDE_PWM) + { + uint32_t pios_pwm_id; + PIOS_PWM_Init(&pios_pwm_id, &pios_pwm_with_ppm_cfg); + + uint32_t pios_pwm_rcvr_id; + if (PIOS_RCVR_Init(&pios_pwm_rcvr_id, &pios_pwm_rcvr_driver, pios_pwm_id)) { + PIOS_Assert(0); + } + pios_rcvr_group_map[MANUALCONTROLSETTINGS_CHANNELGROUPS_PWM] = pios_pwm_rcvr_id; + } +#endif /* PIOS_INCLUDE_PWM */ + break; } #if defined(PIOS_INCLUDE_GCSRCVR) @@ -683,6 +710,7 @@ void PIOS_Board_Init(void) { case HWSETTINGS_CC_RCVRPORT_DISABLED: case HWSETTINGS_CC_RCVRPORT_PWM: case HWSETTINGS_CC_RCVRPORT_PPM: + case HWSETTINGS_CC_RCVRPORT_PPMPWM: PIOS_Servo_Init(&pios_servo_cfg); break; case HWSETTINGS_CC_RCVRPORT_PPMOUTPUTS: diff --git a/flight/board_hw_defs/coptercontrol/board_hw_defs.c b/flight/board_hw_defs/coptercontrol/board_hw_defs.c index cc6ec4552..403657199 100644 --- a/flight/board_hw_defs/coptercontrol/board_hw_defs.c +++ b/flight/board_hw_defs/coptercontrol/board_hw_defs.c @@ -1134,6 +1134,19 @@ const struct pios_pwm_cfg pios_pwm_cfg = { .channels = pios_tim_rcvrport_all_channels, .num_channels = NELEMENTS(pios_tim_rcvrport_all_channels), }; + +const struct pios_pwm_cfg pios_pwm_with_ppm_cfg = { + .tim_ic_init = { + .TIM_ICPolarity = TIM_ICPolarity_Rising, + .TIM_ICSelection = TIM_ICSelection_DirectTI, + .TIM_ICPrescaler = TIM_ICPSC_DIV1, + .TIM_ICFilter = 0x0, + }, + /* Leave the first channel for PPM use and use the rest for PWM */ + .channels = &pios_tim_rcvrport_all_channels[1], + .num_channels = NELEMENTS(pios_tim_rcvrport_all_channels) - 1, +}; + #endif #if defined(PIOS_INCLUDE_I2C) diff --git a/shared/uavobjectdefinition/hwsettings.xml b/shared/uavobjectdefinition/hwsettings.xml index b225c6715..113f059fe 100644 --- a/shared/uavobjectdefinition/hwsettings.xml +++ b/shared/uavobjectdefinition/hwsettings.xml @@ -1,7 +1,7 @@ Selection of optional hardware configurations. - + From ed24d93ab13ed6aa664122f20bc393a397964458 Mon Sep 17 00:00:00 2001 From: Stacey Sheldon Date: Sat, 29 Sep 2012 21:47:26 -0400 Subject: [PATCH 074/105] gcs gamepad: teach GCS that an accel is not a gamepad The gcscontrolgadget expects all gamepad devices to have at least 4 axes of control. The SDL layer (on Linux anyway) will detect the accelerometer that's built into some laptops as a gamepad with 3 axes. This change prevents the accel from being selected and subsequently flooding the console with errors from gcscontrolgadget every 10ms. --- .../src/libs/sdlgamepad/sdlgamepad.cpp | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/ground/openpilotgcs/src/libs/sdlgamepad/sdlgamepad.cpp b/ground/openpilotgcs/src/libs/sdlgamepad/sdlgamepad.cpp index 2293c49ba..cbaa87453 100644 --- a/ground/openpilotgcs/src/libs/sdlgamepad/sdlgamepad.cpp +++ b/ground/openpilotgcs/src/libs/sdlgamepad/sdlgamepad.cpp @@ -93,8 +93,18 @@ bool SDLGamepad::setGamepad(qint16 index) { buttons = SDL_JoystickNumButtons(gamepad); axes = SDL_JoystickNumAxes(gamepad); - this->index = index; - return true; + + if (axes >= 4) { + this->index = index; + return true; + } + else + { + buttons = -1; + axes = -1; + this->index = -1; + qCritical("Gamepad has less than 4 axes"); + } } else { From 19875fb70b7e15e2cd5a8d9ae26dc9b8e749b029 Mon Sep 17 00:00:00 2001 From: Fredrik Arvidsson Date: Sun, 30 Sep 2012 13:35:35 +0200 Subject: [PATCH 075/105] OP-39 Fixed controller identification bug. Now using telemetry manager to receive notifications about connect/disconnect. Changed text on last page in wizard. --- .../plugins/setupwizard/pages/controllerpage.cpp | 16 +++++++++++----- .../plugins/setupwizard/pages/controllerpage.h | 2 ++ .../src/plugins/setupwizard/pages/endpage.ui | 2 -- 3 files changed, 13 insertions(+), 7 deletions(-) diff --git a/ground/openpilotgcs/src/plugins/setupwizard/pages/controllerpage.cpp b/ground/openpilotgcs/src/plugins/setupwizard/pages/controllerpage.cpp index b17c26ab6..deed9d6eb 100644 --- a/ground/openpilotgcs/src/plugins/setupwizard/pages/controllerpage.cpp +++ b/ground/openpilotgcs/src/plugins/setupwizard/pages/controllerpage.cpp @@ -42,8 +42,12 @@ ControllerPage::ControllerPage(SetupWizard *wizard, QWidget *parent) : Q_ASSERT(m_connectionManager); connect(m_connectionManager, SIGNAL(availableDevicesChanged(QLinkedList)), this, SLOT(devicesChanged(QLinkedList))); - connect(m_connectionManager, SIGNAL(deviceConnected(QIODevice*)), this, SLOT(connectionStatusChanged())); - connect(m_connectionManager, SIGNAL(deviceDisconnected()), this, SLOT(connectionStatusChanged())); + ExtensionSystem::PluginManager *pluginManager = ExtensionSystem::PluginManager::instance(); + Q_ASSERT(pluginManager); + m_telemtryManager = pluginManager->getObject(); + Q_ASSERT(m_telemtryManager); + connect(m_telemtryManager, SIGNAL(connected()), this, SLOT(connectionStatusChanged())); + connect(m_telemtryManager, SIGNAL(disconnected()), this, SLOT(connectionStatusChanged())); connect(ui->connectButton, SIGNAL(clicked()), this, SLOT(connectDisconnect())); @@ -70,7 +74,7 @@ void ControllerPage::initializePage() bool ControllerPage::isComplete() const { - return m_connectionManager->isConnected() && ui->boardTypeCombo->currentIndex() > 0 && + return m_telemtryManager->isConnected() && ui->boardTypeCombo->currentIndex() > 0 && m_connectionManager->getCurrentDevice().getConName().startsWith("USB:", Qt::CaseInsensitive); } @@ -82,7 +86,7 @@ bool ControllerPage::validatePage() bool ControllerPage::anyControllerConnected() { - return m_connectionManager->isConnected(); + return m_telemtryManager->isConnected(); } SetupWizard::CONTROLLER_TYPE ControllerPage::getControllerType() @@ -164,7 +168,7 @@ void ControllerPage::devicesChanged(QLinkedList devices) if(indexOfSelectedItem != -1) { ui->deviceCombo->setCurrentIndex(indexOfSelectedItem); } - connectionStatusChanged(); + //connectionStatusChanged(); } void ControllerPage::connectionStatusChanged() @@ -183,6 +187,7 @@ void ControllerPage::connectionStatusChanged() SetupWizard::CONTROLLER_TYPE type = getControllerType(); setControllerType(type); + qDebug() << "Connection status changed: Connected, controller type: " << getControllerType(); } else { ui->deviceCombo->setEnabled(true); @@ -190,6 +195,7 @@ void ControllerPage::connectionStatusChanged() ui->boardTypeCombo->setEnabled(false); ui->boardTypeCombo->model()->setData(ui->boardTypeCombo->model()->index(0, 0), QVariant(0), Qt::UserRole - 1); setControllerType(SetupWizard::CONTROLLER_UNKNOWN); + qDebug() << "Connection status changed: Disconnected"; } emit completeChanged(); } diff --git a/ground/openpilotgcs/src/plugins/setupwizard/pages/controllerpage.h b/ground/openpilotgcs/src/plugins/setupwizard/pages/controllerpage.h index c906fff5f..9370f4cd4 100644 --- a/ground/openpilotgcs/src/plugins/setupwizard/pages/controllerpage.h +++ b/ground/openpilotgcs/src/plugins/setupwizard/pages/controllerpage.h @@ -31,6 +31,7 @@ #include #include #include "setupwizard.h" +#include "uavtalk/telemetrymanager.h" #include "abstractwizardpage.h" namespace Ui { @@ -56,6 +57,7 @@ private: void setupBoardTypes(); void setControllerType(SetupWizard::CONTROLLER_TYPE type); Core::ConnectionManager *m_connectionManager; + TelemetryManager *m_telemtryManager; private slots: void devicesChanged(QLinkedList devices); diff --git a/ground/openpilotgcs/src/plugins/setupwizard/pages/endpage.ui b/ground/openpilotgcs/src/plugins/setupwizard/pages/endpage.ui index c85c08176..b8d9f104c 100644 --- a/ground/openpilotgcs/src/plugins/setupwizard/pages/endpage.ui +++ b/ground/openpilotgcs/src/plugins/setupwizard/pages/endpage.ui @@ -39,8 +39,6 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt;">This part of the setup procedure is now complete and you are one step away from completing the setup of your OpenPilot controller.</span></p> <p style="-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:10pt;"><br /></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt;">To complete the setup please click the Radio Setup Wizard button below to close this wizard and go directly to the Radio Setup Wizard.</span></p> -<p style="-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:10pt;"><br /></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt;">Or, before trying to operate your vehicle, close this wizard, go to the Input tab in the Configuration plugin and run the Radio Setup Wizard to configure the input signals to be used. If you have already performed the Radio configuration, you can skip this step. </span></p> <p style="-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:10pt;"><br /></p></body></html> From 949569fdec1167da95ff4636e09a512b4bde28cc Mon Sep 17 00:00:00 2001 From: Fredrik Arvidsson Date: Sun, 30 Sep 2012 14:19:31 +0200 Subject: [PATCH 076/105] OP-39 Added handling of switching to correct tab in input configuration section when starting Radio Setup Wizard. --- ground/openpilotgcs/src/plugins/config/configinputwidget.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/ground/openpilotgcs/src/plugins/config/configinputwidget.cpp b/ground/openpilotgcs/src/plugins/config/configinputwidget.cpp index fe01e17e3..f93e5b2d8 100644 --- a/ground/openpilotgcs/src/plugins/config/configinputwidget.cpp +++ b/ground/openpilotgcs/src/plugins/config/configinputwidget.cpp @@ -300,6 +300,8 @@ void ConfigInputWidget::goToWizard() msgBox.setStandardButtons(QMessageBox::Ok); msgBox.setDefaultButton(QMessageBox::Ok); msgBox.exec(); + + m_config->tabWidget->setCurrentIndex(0); wizardSetUpStep(wizardWelcome); m_config->graphicsView->fitInView(m_txBackground, Qt::KeepAspectRatio ); } From ede0c2ebf912e5e0c551358571988b8eebe75134 Mon Sep 17 00:00:00 2001 From: Fredrik Arvidsson Date: Sun, 30 Sep 2012 14:24:54 +0200 Subject: [PATCH 077/105] OP-39 Small adjustment. --- ground/openpilotgcs/src/plugins/config/configinputwidget.cpp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/ground/openpilotgcs/src/plugins/config/configinputwidget.cpp b/ground/openpilotgcs/src/plugins/config/configinputwidget.cpp index f93e5b2d8..4b561ef62 100644 --- a/ground/openpilotgcs/src/plugins/config/configinputwidget.cpp +++ b/ground/openpilotgcs/src/plugins/config/configinputwidget.cpp @@ -301,7 +301,10 @@ void ConfigInputWidget::goToWizard() msgBox.setDefaultButton(QMessageBox::Ok); msgBox.exec(); - m_config->tabWidget->setCurrentIndex(0); + // Set correct tab visible before starting wizard. + if(m_config->tabWidget->currentIndex() != 0) { + m_config->tabWidget->setCurrentIndex(0); + } wizardSetUpStep(wizardWelcome); m_config->graphicsView->fitInView(m_txBackground, Qt::KeepAspectRatio ); } From eed564a3c4e171e30976b22cdc51280b6140ae56 Mon Sep 17 00:00:00 2001 From: Fredrik Arvidsson Date: Sun, 30 Sep 2012 14:41:58 +0200 Subject: [PATCH 078/105] OP-39 Adding label to indicate when leveling is done in a more clear way. --- .../setupwizard/pages/levellingpage.cpp | 3 +++ .../setupwizard/pages/levellingpage.ui | 20 ++++++++++++++++++- 2 files changed, 22 insertions(+), 1 deletion(-) diff --git a/ground/openpilotgcs/src/plugins/setupwizard/pages/levellingpage.cpp b/ground/openpilotgcs/src/plugins/setupwizard/pages/levellingpage.cpp index a00959522..28dac7c33 100644 --- a/ground/openpilotgcs/src/plugins/setupwizard/pages/levellingpage.cpp +++ b/ground/openpilotgcs/src/plugins/setupwizard/pages/levellingpage.cpp @@ -80,6 +80,8 @@ void LevellingPage::performLevelling() } enableButtons(false); + ui->progressLabel->setText(QString(tr("Retrieving data..."))); + if(!m_levellingUtil) { @@ -128,6 +130,7 @@ void LevellingPage::stopLevelling() disconnect(m_levellingUtil, SIGNAL(progress(long,long)), this, SLOT(levellingProgress(long,long))); disconnect(m_levellingUtil, SIGNAL(done(accelGyroBias)), this, SLOT(levellingDone(accelGyroBias))); disconnect(m_levellingUtil, SIGNAL(timeout(QString)), this, SLOT(levellingTimeout(QString))); + ui->progressLabel->setText(QString(tr("Done!"))); enableButtons(true); } } diff --git a/ground/openpilotgcs/src/plugins/setupwizard/pages/levellingpage.ui b/ground/openpilotgcs/src/plugins/setupwizard/pages/levellingpage.ui index 77152f792..dae71e6b7 100644 --- a/ground/openpilotgcs/src/plugins/setupwizard/pages/levellingpage.ui +++ b/ground/openpilotgcs/src/plugins/setupwizard/pages/levellingpage.ui @@ -44,7 +44,7 @@ p, li { white-space: pre-wrap; } 200 - 270 + 260 200 70 @@ -98,6 +98,24 @@ QProgressBar::chunk { + + + + 42 + 330 + 511 + 16 + + + + + 10 + + + + + + From 138848453f19002a7edbf3edd24d545918f3f0e3 Mon Sep 17 00:00:00 2001 From: Fredrik Arvidsson Date: Sun, 30 Sep 2012 17:27:20 +0200 Subject: [PATCH 079/105] OP-39 Changed the Radio Setup Wizard to go to the Arming Settings screen after the last step in the wizard. Changed the info text in a dialog. --- .../openpilotgcs/src/plugins/config/configinputwidget.cpp | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/ground/openpilotgcs/src/plugins/config/configinputwidget.cpp b/ground/openpilotgcs/src/plugins/config/configinputwidget.cpp index 4b561ef62..6d2e4b3ea 100644 --- a/ground/openpilotgcs/src/plugins/config/configinputwidget.cpp +++ b/ground/openpilotgcs/src/plugins/config/configinputwidget.cpp @@ -296,7 +296,9 @@ void ConfigInputWidget::goToWizard() { QMessageBox msgBox; msgBox.setText(tr("Arming Settings are now set to Always Disarmed for your safety.")); - msgBox.setDetailedText(tr("You will have to reconfigure the arming settings manually when the wizard is finished.")); + msgBox.setDetailedText(tr("You will have to reconfigure the arming settings manually " + "when the wizard is finished. After the last step of the " + "wizard you will be taken to the Arming Settings screen.")); msgBox.setStandardButtons(QMessageBox::Ok); msgBox.setDefaultButton(QMessageBox::Ok); msgBox.exec(); @@ -370,6 +372,7 @@ void ConfigInputWidget::wzNext() case wizardFinish: wizardStep=wizardNone; m_config->stackedWidget->setCurrentIndex(0); + m_config->tabWidget->setCurrentIndex(2); break; default: Q_ASSERT(0); @@ -544,7 +547,8 @@ void ConfigInputWidget::wizardSetUpStep(enum wizardSteps step) connect(flightStatusObj, SIGNAL(objectUpdated(UAVObject*)), this, SLOT(moveSticks())); connect(accessoryDesiredObj0, SIGNAL(objectUpdated(UAVObject*)), this, SLOT(moveSticks())); m_config->wzText->setText(QString(tr("You have completed this wizard, please check below if the picture mimics your sticks movement.\n" - "These new settings aren't saved to the board yet, after pressing next you will go to the initial screen where you can save the configuration."))); + "These new settings aren't saved to the board yet, after pressing next you will go to the Arming Settings " + "screen where you can set your desired arming sequence and save the configuration."))); fastMdata(); manualSettingsData.ChannelNeutral[ManualControlSettings::CHANNELNEUTRAL_THROTTLE]= From 13f10949e849d32cbbe4e6623f5a62b6e32da1ee Mon Sep 17 00:00:00 2001 From: Fredrik Arvidsson Date: Mon, 1 Oct 2012 21:50:00 +0200 Subject: [PATCH 080/105] OP-39 Removed an unnecessary struct declaration. Changed some texts. Removed some empty lines. --- .../src/plugins/config/configinputwidget.cpp | 2 +- .../setupwizard/pages/abstractwizardpage.h | 2 - .../setupwizard/pages/controllerpage.ui | 2 +- .../plugins/setupwizard/pages/inputpage.ui | 8 +- .../plugins/setupwizard/pages/rebootpage.ui | 2 +- .../vehicleconfigurationhelper.cpp | 774 +++++++++--------- .../setupwizard/vehicleconfigurationhelper.h | 6 +- .../plugins/uploader/uploadergadgetwidget.cpp | 5 +- 8 files changed, 397 insertions(+), 404 deletions(-) diff --git a/ground/openpilotgcs/src/plugins/config/configinputwidget.cpp b/ground/openpilotgcs/src/plugins/config/configinputwidget.cpp index 6d2e4b3ea..e16d735d9 100644 --- a/ground/openpilotgcs/src/plugins/config/configinputwidget.cpp +++ b/ground/openpilotgcs/src/plugins/config/configinputwidget.cpp @@ -289,9 +289,9 @@ void ConfigInputWidget::resizeEvent(QResizeEvent *event) void ConfigInputWidget::openHelp() { - QDesktopServices::openUrl( QUrl("http://wiki.openpilot.org/x/04Cf", QUrl::StrictMode) ); } + void ConfigInputWidget::goToWizard() { QMessageBox msgBox; diff --git a/ground/openpilotgcs/src/plugins/setupwizard/pages/abstractwizardpage.h b/ground/openpilotgcs/src/plugins/setupwizard/pages/abstractwizardpage.h index bb4960a32..072d619e7 100644 --- a/ground/openpilotgcs/src/plugins/setupwizard/pages/abstractwizardpage.h +++ b/ground/openpilotgcs/src/plugins/setupwizard/pages/abstractwizardpage.h @@ -42,8 +42,6 @@ private: public: SetupWizard* getWizard() { return m_wizard; } - virtual bool isFinished() { return true; } - virtual quint16 stage() { return 0; } }; diff --git a/ground/openpilotgcs/src/plugins/setupwizard/pages/controllerpage.ui b/ground/openpilotgcs/src/plugins/setupwizard/pages/controllerpage.ui index 3b06fa756..885feda4c 100644 --- a/ground/openpilotgcs/src/plugins/setupwizard/pages/controllerpage.ui +++ b/ground/openpilotgcs/src/plugins/setupwizard/pages/controllerpage.ui @@ -33,7 +33,7 @@ p, li { white-space: pre-wrap; } <p style="-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:10pt;"><br /></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt;">If the board is already connected and successfully detected, the board type will already be displayed. You can </span><span style=" font-size:10pt; font-weight:600;">Disconnect</span><span style=" font-size:10pt;"> and select another device if you need to detect another board.</span></p> <p style="-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:10pt;"><br /></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt;">If your board is not connected please connect the board to a USB port on your computer and select the device from the list below. Then press </span><span style=" font-size:10pt; font-weight:600;">Connect</span><span style=" font-size:10pt;">.</span></p></body></html> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt;">If your board is not connected, please connect the board to a USB port on your computer and select the device from the list below. Then press </span><span style=" font-size:10pt; font-weight:600;">Connect</span><span style=" font-size:10pt;">.</span></p></body></html> Qt::AutoText diff --git a/ground/openpilotgcs/src/plugins/setupwizard/pages/inputpage.ui b/ground/openpilotgcs/src/plugins/setupwizard/pages/inputpage.ui index 6212b1e3d..af4129982 100644 --- a/ground/openpilotgcs/src/plugins/setupwizard/pages/inputpage.ui +++ b/ground/openpilotgcs/src/plugins/setupwizard/pages/inputpage.ui @@ -26,12 +26,12 @@ <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"> +</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8pt; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:12pt; font-weight:600;">OpenPilot basic input signal configuration</span></p> -<p style="-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;"></p> +<p style="-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;"><br /></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt;">The OpenPilot controller supports many different types of input signals. Please select the type of input that matches your receiver configuration. If you are unsure, just leave the default option selected and continue the wizard.</span></p> -<p style="-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:10pt;"></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt;">Some input options require the OpenPilot controller to be rebooted before the changes can take place. If an option that requires a reboot is selected, the controller will need to be rebooted at the end of this wizard after the configuration is written to the controller.</span></p></body></html> +<p style="-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:10pt;"><br /></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt;">Some input options require the OpenPilot controller to be rebooted before the changes can take place. If an option that requires a reboot is selected, you will be instructed to do so on the next page of this wizard.</span></p></body></html> Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop diff --git a/ground/openpilotgcs/src/plugins/setupwizard/pages/rebootpage.ui b/ground/openpilotgcs/src/plugins/setupwizard/pages/rebootpage.ui index a7340144f..46a0402cc 100644 --- a/ground/openpilotgcs/src/plugins/setupwizard/pages/rebootpage.ui +++ b/ground/openpilotgcs/src/plugins/setupwizard/pages/rebootpage.ui @@ -50,7 +50,7 @@ p, li { white-space: pre-wrap; } <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8pt; font-weight:400; font-style:normal;"> -<p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt; color:#000000;">The configuration created by the wizard contains settings that require a reboot of your controller. Please power cycle the controller before continuing. To power cycle the controller remove all batteries and the usb cable for at least 30 seconds. </span></p></body></html> +<p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt; color:#000000;">The configuration created by the wizard contains settings that require a reboot of your controller. Please power cycle the controller before continuing. To power cycle the controller remove all batteries and the USB cable for at least 30 seconds. </span></p></body></html> Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop diff --git a/ground/openpilotgcs/src/plugins/setupwizard/vehicleconfigurationhelper.cpp b/ground/openpilotgcs/src/plugins/setupwizard/vehicleconfigurationhelper.cpp index 6d0a5946e..709810bce 100644 --- a/ground/openpilotgcs/src/plugins/setupwizard/vehicleconfigurationhelper.cpp +++ b/ground/openpilotgcs/src/plugins/setupwizard/vehicleconfigurationhelper.cpp @@ -320,7 +320,7 @@ void VehicleConfigurationHelper::applyStabilizationConfiguration() addModifiedObject(stabSettings, tr("Writing stabilization settings")); } -void VehicleConfigurationHelper::applyMixerConfiguration(mixerSettings mixer) +void VehicleConfigurationHelper::applyMixerConfiguration(mixerChannelSettings channels[]) { // Set all mixer data MixerSettings* mSettings = MixerSettings::GetInstance(m_uavoManager); @@ -332,15 +332,15 @@ void VehicleConfigurationHelper::applyMixerConfiguration(mixerSettings mixer) for(int i = 0; i < 10; i++) { UAVObjectField *field = mSettings->getField(mixerTypePattern.arg(i + 1)); Q_ASSERT(field); - field->setValue(field->getOptions().at(mixer.channels[i].type)); + field->setValue(field->getOptions().at(channels[i].type)); field = mSettings->getField(mixerVectorPattern.arg(i + 1)); Q_ASSERT(field); - field->setValue((mixer.channels[i].throttle1 * 127) / 100, 0); - field->setValue((mixer.channels[i].throttle2 * 127) / 100, 1); - field->setValue((mixer.channels[i].roll * 127) / 100, 2); - field->setValue((mixer.channels[i].pitch * 127) / 100, 3); - field->setValue((mixer.channels[i].yaw *127) / 100, 4); + field->setValue((channels[i].throttle1 * 127) / 100, 0); + field->setValue((channels[i].throttle2 * 127) / 100, 1); + field->setValue((channels[i].roll * 127) / 100, 2); + field->setValue((channels[i].pitch * 127) / 100, 3); + field->setValue((channels[i].yaw *127) / 100, 4); } // Apply updates @@ -585,43 +585,43 @@ void VehicleConfigurationHelper::setupTriCopter() // 2. Setup GUI data // 3. Apply changes - mixerSettings mixer; + mixerChannelSettings channels[10]; GUIConfigDataUnion guiSettings = getGUIConfigData(); - mixer.channels[0].type = MIXER_TYPE_MOTOR; - mixer.channels[0].throttle1 = 100; - mixer.channels[0].throttle2 = 0; - mixer.channels[0].roll = 100; - mixer.channels[0].pitch = 50; - mixer.channels[0].yaw = 0; + channels[0].type = MIXER_TYPE_MOTOR; + channels[0].throttle1 = 100; + channels[0].throttle2 = 0; + channels[0].roll = 100; + channels[0].pitch = 50; + channels[0].yaw = 0; - mixer.channels[1].type = MIXER_TYPE_MOTOR; - mixer.channels[1].throttle1 = 100; - mixer.channels[1].throttle2 = 0; - mixer.channels[1].roll = -100; - mixer.channels[1].pitch = 50; - mixer.channels[1].yaw = 0; + channels[1].type = MIXER_TYPE_MOTOR; + channels[1].throttle1 = 100; + channels[1].throttle2 = 0; + channels[1].roll = -100; + channels[1].pitch = 50; + channels[1].yaw = 0; - mixer.channels[2].type = MIXER_TYPE_MOTOR; - mixer.channels[2].throttle1 = 100; - mixer.channels[2].throttle2 = 0; - mixer.channels[2].roll = 0; - mixer.channels[2].pitch = -100; - mixer.channels[2].yaw = 0; + channels[2].type = MIXER_TYPE_MOTOR; + channels[2].throttle1 = 100; + channels[2].throttle2 = 0; + channels[2].roll = 0; + channels[2].pitch = -100; + channels[2].yaw = 0; - mixer.channels[3].type = MIXER_TYPE_SERVO; - mixer.channels[3].throttle1 = 0; - mixer.channels[3].throttle2 = 0; - mixer.channels[3].roll = 0; - mixer.channels[3].pitch = 0; - mixer.channels[3].yaw = 100; + channels[3].type = MIXER_TYPE_SERVO; + channels[3].throttle1 = 0; + channels[3].throttle2 = 0; + channels[3].roll = 0; + channels[3].pitch = 0; + channels[3].yaw = 100; guiSettings.multi.VTOLMotorNW = 1; guiSettings.multi.VTOLMotorNE = 2; guiSettings.multi.VTOLMotorS = 3; guiSettings.multi.TRIYaw = 4; - applyMixerConfiguration(mixer); + applyMixerConfiguration(channels); applyMultiGUISettings(SystemSettings::AIRFRAMETYPE_TRI, guiSettings); } @@ -642,7 +642,7 @@ GUIConfigDataUnion VehicleConfigurationHelper::getGUIConfigData() void VehicleConfigurationHelper::setupQuadCopter() { - mixerSettings mixer; + mixerChannelSettings channels[10]; GUIConfigDataUnion guiSettings = getGUIConfigData(); SystemSettings::AirframeTypeOptions frame; @@ -650,33 +650,33 @@ void VehicleConfigurationHelper::setupQuadCopter() { case VehicleConfigurationSource::MULTI_ROTOR_QUAD_PLUS: { frame = SystemSettings::AIRFRAMETYPE_QUADP; - mixer.channels[0].type = MIXER_TYPE_MOTOR; - mixer.channels[0].throttle1 = 100; - mixer.channels[0].throttle2 = 0; - mixer.channels[0].roll = 0; - mixer.channels[0].pitch = 100; - mixer.channels[0].yaw = -50; + channels[0].type = MIXER_TYPE_MOTOR; + channels[0].throttle1 = 100; + channels[0].throttle2 = 0; + channels[0].roll = 0; + channels[0].pitch = 100; + channels[0].yaw = -50; - mixer.channels[1].type = MIXER_TYPE_MOTOR; - mixer.channels[1].throttle1 = 100; - mixer.channels[1].throttle2 = 0; - mixer.channels[1].roll = -100; - mixer.channels[1].pitch = 0; - mixer.channels[1].yaw = 50; + channels[1].type = MIXER_TYPE_MOTOR; + channels[1].throttle1 = 100; + channels[1].throttle2 = 0; + channels[1].roll = -100; + channels[1].pitch = 0; + channels[1].yaw = 50; - mixer.channels[2].type = MIXER_TYPE_MOTOR; - mixer.channels[2].throttle1 = 100; - mixer.channels[2].throttle2 = 0; - mixer.channels[2].roll = 0; - mixer.channels[2].pitch = -100; - mixer.channels[2].yaw = -50; + channels[2].type = MIXER_TYPE_MOTOR; + channels[2].throttle1 = 100; + channels[2].throttle2 = 0; + channels[2].roll = 0; + channels[2].pitch = -100; + channels[2].yaw = -50; - mixer.channels[3].type = MIXER_TYPE_MOTOR; - mixer.channels[3].throttle1 = 100; - mixer.channels[3].throttle2 = 0; - mixer.channels[3].roll = 100; - mixer.channels[3].pitch = 0; - mixer.channels[3].yaw = 50; + channels[3].type = MIXER_TYPE_MOTOR; + channels[3].throttle1 = 100; + channels[3].throttle2 = 0; + channels[3].roll = 100; + channels[3].pitch = 0; + channels[3].yaw = 50; guiSettings.multi.VTOLMotorN = 1; guiSettings.multi.VTOLMotorE = 2; @@ -687,33 +687,33 @@ void VehicleConfigurationHelper::setupQuadCopter() } case VehicleConfigurationSource::MULTI_ROTOR_QUAD_X: { frame = SystemSettings::AIRFRAMETYPE_QUADX; - mixer.channels[0].type = MIXER_TYPE_MOTOR; - mixer.channels[0].throttle1 = 100; - mixer.channels[0].throttle2 = 0; - mixer.channels[0].roll = 50; - mixer.channels[0].pitch = 50; - mixer.channels[0].yaw = -50; + channels[0].type = MIXER_TYPE_MOTOR; + channels[0].throttle1 = 100; + channels[0].throttle2 = 0; + channels[0].roll = 50; + channels[0].pitch = 50; + channels[0].yaw = -50; - mixer.channels[1].type = MIXER_TYPE_MOTOR; - mixer.channels[1].throttle1 = 100; - mixer.channels[1].throttle2 = 0; - mixer.channels[1].roll = -50; - mixer.channels[1].pitch = 50; - mixer.channels[1].yaw = 50; + channels[1].type = MIXER_TYPE_MOTOR; + channels[1].throttle1 = 100; + channels[1].throttle2 = 0; + channels[1].roll = -50; + channels[1].pitch = 50; + channels[1].yaw = 50; - mixer.channels[2].type = MIXER_TYPE_MOTOR; - mixer.channels[2].throttle1 = 100; - mixer.channels[2].throttle2 = 0; - mixer.channels[2].roll = -50; - mixer.channels[2].pitch = -50; - mixer.channels[2].yaw = -50; + channels[2].type = MIXER_TYPE_MOTOR; + channels[2].throttle1 = 100; + channels[2].throttle2 = 0; + channels[2].roll = -50; + channels[2].pitch = -50; + channels[2].yaw = -50; - mixer.channels[3].type = MIXER_TYPE_MOTOR; - mixer.channels[3].throttle1 = 100; - mixer.channels[3].throttle2 = 0; - mixer.channels[3].roll = 50; - mixer.channels[3].pitch = -50; - mixer.channels[3].yaw = 50; + channels[3].type = MIXER_TYPE_MOTOR; + channels[3].throttle1 = 100; + channels[3].throttle2 = 0; + channels[3].roll = 50; + channels[3].pitch = -50; + channels[3].yaw = 50; guiSettings.multi.VTOLMotorNW = 1; guiSettings.multi.VTOLMotorNE = 2; @@ -725,13 +725,13 @@ void VehicleConfigurationHelper::setupQuadCopter() default: break; } - applyMixerConfiguration(mixer); + applyMixerConfiguration(channels); applyMultiGUISettings(frame, guiSettings); } void VehicleConfigurationHelper::setupHexaCopter() { - mixerSettings mixer; + mixerChannelSettings channels[10]; GUIConfigDataUnion guiSettings = getGUIConfigData(); SystemSettings::AirframeTypeOptions frame; @@ -740,47 +740,47 @@ void VehicleConfigurationHelper::setupHexaCopter() case VehicleConfigurationSource::MULTI_ROTOR_HEXA: { frame = SystemSettings::AIRFRAMETYPE_HEXA; - mixer.channels[0].type = MIXER_TYPE_MOTOR; - mixer.channels[0].throttle1 = 100; - mixer.channels[0].throttle2 = 0; - mixer.channels[0].roll = 0; - mixer.channels[0].pitch = 33; - mixer.channels[0].yaw = -33; + channels[0].type = MIXER_TYPE_MOTOR; + channels[0].throttle1 = 100; + channels[0].throttle2 = 0; + channels[0].roll = 0; + channels[0].pitch = 33; + channels[0].yaw = -33; - mixer.channels[1].type = MIXER_TYPE_MOTOR; - mixer.channels[1].throttle1 = 100; - mixer.channels[1].throttle2 = 0; - mixer.channels[1].roll = -50; - mixer.channels[1].pitch = 33; - mixer.channels[1].yaw = 33; + channels[1].type = MIXER_TYPE_MOTOR; + channels[1].throttle1 = 100; + channels[1].throttle2 = 0; + channels[1].roll = -50; + channels[1].pitch = 33; + channels[1].yaw = 33; - mixer.channels[2].type = MIXER_TYPE_MOTOR; - mixer.channels[2].throttle1 = 100; - mixer.channels[2].throttle2 = 0; - mixer.channels[2].roll = -50; - mixer.channels[2].pitch = -33; - mixer.channels[2].yaw = -33; + channels[2].type = MIXER_TYPE_MOTOR; + channels[2].throttle1 = 100; + channels[2].throttle2 = 0; + channels[2].roll = -50; + channels[2].pitch = -33; + channels[2].yaw = -33; - mixer.channels[3].type = MIXER_TYPE_MOTOR; - mixer.channels[3].throttle1 = 100; - mixer.channels[3].throttle2 = 0; - mixer.channels[3].roll = 0; - mixer.channels[3].pitch = -33; - mixer.channels[3].yaw = 33; + channels[3].type = MIXER_TYPE_MOTOR; + channels[3].throttle1 = 100; + channels[3].throttle2 = 0; + channels[3].roll = 0; + channels[3].pitch = -33; + channels[3].yaw = 33; - mixer.channels[4].type = MIXER_TYPE_MOTOR; - mixer.channels[4].throttle1 = 100; - mixer.channels[4].throttle2 = 0; - mixer.channels[4].roll = 50; - mixer.channels[4].pitch = -33; - mixer.channels[4].yaw = -33; + channels[4].type = MIXER_TYPE_MOTOR; + channels[4].throttle1 = 100; + channels[4].throttle2 = 0; + channels[4].roll = 50; + channels[4].pitch = -33; + channels[4].yaw = -33; - mixer.channels[5].type = MIXER_TYPE_MOTOR; - mixer.channels[5].throttle1 = 100; - mixer.channels[5].throttle2 = 0; - mixer.channels[5].roll = 50; - mixer.channels[5].pitch = 33; - mixer.channels[5].yaw = 33; + channels[5].type = MIXER_TYPE_MOTOR; + channels[5].throttle1 = 100; + channels[5].throttle2 = 0; + channels[5].roll = 50; + channels[5].pitch = 33; + channels[5].yaw = 33; guiSettings.multi.VTOLMotorN = 1; guiSettings.multi.VTOLMotorNE = 2; @@ -794,47 +794,47 @@ void VehicleConfigurationHelper::setupHexaCopter() case VehicleConfigurationSource::MULTI_ROTOR_HEXA_COAX_Y: { frame = SystemSettings::AIRFRAMETYPE_HEXACOAX; - mixer.channels[0].type = MIXER_TYPE_MOTOR; - mixer.channels[0].throttle1 = 100; - mixer.channels[0].throttle2 = 0; - mixer.channels[0].roll = 100; - mixer.channels[0].pitch = 25; - mixer.channels[0].yaw = -66; + channels[0].type = MIXER_TYPE_MOTOR; + channels[0].throttle1 = 100; + channels[0].throttle2 = 0; + channels[0].roll = 100; + channels[0].pitch = 25; + channels[0].yaw = -66; - mixer.channels[1].type = MIXER_TYPE_MOTOR; - mixer.channels[1].throttle1 = 100; - mixer.channels[1].throttle2 = 0; - mixer.channels[1].roll = 100; - mixer.channels[1].pitch = 25; - mixer.channels[1].yaw = 66; + channels[1].type = MIXER_TYPE_MOTOR; + channels[1].throttle1 = 100; + channels[1].throttle2 = 0; + channels[1].roll = 100; + channels[1].pitch = 25; + channels[1].yaw = 66; - mixer.channels[2].type = MIXER_TYPE_MOTOR; - mixer.channels[2].throttle1 = 100; - mixer.channels[2].throttle2 = 0; - mixer.channels[2].roll = -100; - mixer.channels[2].pitch = 25; - mixer.channels[2].yaw = -66; + channels[2].type = MIXER_TYPE_MOTOR; + channels[2].throttle1 = 100; + channels[2].throttle2 = 0; + channels[2].roll = -100; + channels[2].pitch = 25; + channels[2].yaw = -66; - mixer.channels[3].type = MIXER_TYPE_MOTOR; - mixer.channels[3].throttle1 = 100; - mixer.channels[3].throttle2 = 0; - mixer.channels[3].roll = -100; - mixer.channels[3].pitch = 25; - mixer.channels[3].yaw = 66; + channels[3].type = MIXER_TYPE_MOTOR; + channels[3].throttle1 = 100; + channels[3].throttle2 = 0; + channels[3].roll = -100; + channels[3].pitch = 25; + channels[3].yaw = 66; - mixer.channels[4].type = MIXER_TYPE_MOTOR; - mixer.channels[4].throttle1 = 100; - mixer.channels[4].throttle2 = 0; - mixer.channels[4].roll = 0; - mixer.channels[4].pitch = -50; - mixer.channels[4].yaw = -66; + channels[4].type = MIXER_TYPE_MOTOR; + channels[4].throttle1 = 100; + channels[4].throttle2 = 0; + channels[4].roll = 0; + channels[4].pitch = -50; + channels[4].yaw = -66; - mixer.channels[5].type = MIXER_TYPE_MOTOR; - mixer.channels[5].throttle1 = 100; - mixer.channels[5].throttle2 = 0; - mixer.channels[5].roll = 0; - mixer.channels[5].pitch = -50; - mixer.channels[5].yaw = 66; + channels[5].type = MIXER_TYPE_MOTOR; + channels[5].throttle1 = 100; + channels[5].throttle2 = 0; + channels[5].roll = 0; + channels[5].pitch = -50; + channels[5].yaw = 66; guiSettings.multi.VTOLMotorNW = 1; guiSettings.multi.VTOLMotorW = 2; @@ -848,47 +848,47 @@ void VehicleConfigurationHelper::setupHexaCopter() case VehicleConfigurationSource::MULTI_ROTOR_HEXA_H: { frame = SystemSettings::AIRFRAMETYPE_HEXAX; - mixer.channels[0].type = MIXER_TYPE_MOTOR; - mixer.channels[0].throttle1 = 100; - mixer.channels[0].throttle2 = 0; - mixer.channels[0].roll = -33; - mixer.channels[0].pitch = 50; - mixer.channels[0].yaw = -33; + channels[0].type = MIXER_TYPE_MOTOR; + channels[0].throttle1 = 100; + channels[0].throttle2 = 0; + channels[0].roll = -33; + channels[0].pitch = 50; + channels[0].yaw = -33; - mixer.channels[1].type = MIXER_TYPE_MOTOR; - mixer.channels[1].throttle1 = 100; - mixer.channels[1].throttle2 = 0; - mixer.channels[1].roll = -33; - mixer.channels[1].pitch = 0; - mixer.channels[1].yaw = 33; + channels[1].type = MIXER_TYPE_MOTOR; + channels[1].throttle1 = 100; + channels[1].throttle2 = 0; + channels[1].roll = -33; + channels[1].pitch = 0; + channels[1].yaw = 33; - mixer.channels[2].type = MIXER_TYPE_MOTOR; - mixer.channels[2].throttle1 = 100; - mixer.channels[2].throttle2 = 0; - mixer.channels[2].roll = -33; - mixer.channels[2].pitch = -50; - mixer.channels[2].yaw = -33; + channels[2].type = MIXER_TYPE_MOTOR; + channels[2].throttle1 = 100; + channels[2].throttle2 = 0; + channels[2].roll = -33; + channels[2].pitch = -50; + channels[2].yaw = -33; - mixer.channels[3].type = MIXER_TYPE_MOTOR; - mixer.channels[3].throttle1 = 100; - mixer.channels[3].throttle2 = 0; - mixer.channels[3].roll = -33; - mixer.channels[3].pitch = -50; - mixer.channels[3].yaw = 33; + channels[3].type = MIXER_TYPE_MOTOR; + channels[3].throttle1 = 100; + channels[3].throttle2 = 0; + channels[3].roll = -33; + channels[3].pitch = -50; + channels[3].yaw = 33; - mixer.channels[4].type = MIXER_TYPE_MOTOR; - mixer.channels[4].throttle1 = 100; - mixer.channels[4].throttle2 = 0; - mixer.channels[4].roll = 33; - mixer.channels[4].pitch = 0; - mixer.channels[4].yaw = -33; + channels[4].type = MIXER_TYPE_MOTOR; + channels[4].throttle1 = 100; + channels[4].throttle2 = 0; + channels[4].roll = 33; + channels[4].pitch = 0; + channels[4].yaw = -33; - mixer.channels[5].type = MIXER_TYPE_MOTOR; - mixer.channels[5].throttle1 = 100; - mixer.channels[5].throttle2 = 0; - mixer.channels[5].roll = 33; - mixer.channels[5].pitch = 50; - mixer.channels[5].yaw = -33; + channels[5].type = MIXER_TYPE_MOTOR; + channels[5].throttle1 = 100; + channels[5].throttle2 = 0; + channels[5].roll = 33; + channels[5].pitch = 50; + channels[5].yaw = -33; guiSettings.multi.VTOLMotorNE = 1; guiSettings.multi.VTOLMotorE = 2; @@ -902,13 +902,13 @@ void VehicleConfigurationHelper::setupHexaCopter() default: break; } - applyMixerConfiguration(mixer); + applyMixerConfiguration(channels); applyMultiGUISettings(frame, guiSettings); } void VehicleConfigurationHelper::setupOctoCopter() { - mixerSettings mixer; + mixerChannelSettings channels[10]; GUIConfigDataUnion guiSettings = getGUIConfigData(); SystemSettings::AirframeTypeOptions frame; @@ -917,61 +917,61 @@ void VehicleConfigurationHelper::setupOctoCopter() case VehicleConfigurationSource::MULTI_ROTOR_OCTO: { frame = SystemSettings::AIRFRAMETYPE_OCTO; - mixer.channels[0].type = MIXER_TYPE_MOTOR; - mixer.channels[0].throttle1 = 100; - mixer.channels[0].throttle2 = 0; - mixer.channels[0].roll = 0; - mixer.channels[0].pitch = 33; - mixer.channels[0].yaw = -25; + channels[0].type = MIXER_TYPE_MOTOR; + channels[0].throttle1 = 100; + channels[0].throttle2 = 0; + channels[0].roll = 0; + channels[0].pitch = 33; + channels[0].yaw = -25; - mixer.channels[1].type = MIXER_TYPE_MOTOR; - mixer.channels[1].throttle1 = 100; - mixer.channels[1].throttle2 = 0; - mixer.channels[1].roll = -33; - mixer.channels[1].pitch = 33; - mixer.channels[1].yaw = 25; + channels[1].type = MIXER_TYPE_MOTOR; + channels[1].throttle1 = 100; + channels[1].throttle2 = 0; + channels[1].roll = -33; + channels[1].pitch = 33; + channels[1].yaw = 25; - mixer.channels[2].type = MIXER_TYPE_MOTOR; - mixer.channels[2].throttle1 = 100; - mixer.channels[2].throttle2 = 0; - mixer.channels[2].roll = -33; - mixer.channels[2].pitch = 0; - mixer.channels[2].yaw = -25; + channels[2].type = MIXER_TYPE_MOTOR; + channels[2].throttle1 = 100; + channels[2].throttle2 = 0; + channels[2].roll = -33; + channels[2].pitch = 0; + channels[2].yaw = -25; - mixer.channels[3].type = MIXER_TYPE_MOTOR; - mixer.channels[3].throttle1 = 100; - mixer.channels[3].throttle2 = 0; - mixer.channels[3].roll = -33; - mixer.channels[3].pitch = -33; - mixer.channels[3].yaw = 25; + channels[3].type = MIXER_TYPE_MOTOR; + channels[3].throttle1 = 100; + channels[3].throttle2 = 0; + channels[3].roll = -33; + channels[3].pitch = -33; + channels[3].yaw = 25; - mixer.channels[4].type = MIXER_TYPE_MOTOR; - mixer.channels[4].throttle1 = 100; - mixer.channels[4].throttle2 = 0; - mixer.channels[4].roll = 0; - mixer.channels[4].pitch = -33; - mixer.channels[4].yaw = -25; + channels[4].type = MIXER_TYPE_MOTOR; + channels[4].throttle1 = 100; + channels[4].throttle2 = 0; + channels[4].roll = 0; + channels[4].pitch = -33; + channels[4].yaw = -25; - mixer.channels[5].type = MIXER_TYPE_MOTOR; - mixer.channels[5].throttle1 = 100; - mixer.channels[5].throttle2 = 0; - mixer.channels[5].roll = 33; - mixer.channels[5].pitch = -33; - mixer.channels[5].yaw = 25; + channels[5].type = MIXER_TYPE_MOTOR; + channels[5].throttle1 = 100; + channels[5].throttle2 = 0; + channels[5].roll = 33; + channels[5].pitch = -33; + channels[5].yaw = 25; - mixer.channels[6].type = MIXER_TYPE_MOTOR; - mixer.channels[6].throttle1 = 100; - mixer.channels[6].throttle2 = 0; - mixer.channels[6].roll = 33; - mixer.channels[6].pitch = 0; - mixer.channels[6].yaw = -25; + channels[6].type = MIXER_TYPE_MOTOR; + channels[6].throttle1 = 100; + channels[6].throttle2 = 0; + channels[6].roll = 33; + channels[6].pitch = 0; + channels[6].yaw = -25; - mixer.channels[7].type = MIXER_TYPE_MOTOR; - mixer.channels[7].throttle1 = 100; - mixer.channels[7].throttle2 = 0; - mixer.channels[7].roll = 33; - mixer.channels[7].pitch = 33; - mixer.channels[7].yaw = 25; + channels[7].type = MIXER_TYPE_MOTOR; + channels[7].throttle1 = 100; + channels[7].throttle2 = 0; + channels[7].roll = 33; + channels[7].pitch = 33; + channels[7].yaw = 25; guiSettings.multi.VTOLMotorN = 1; guiSettings.multi.VTOLMotorNE = 2; @@ -987,61 +987,61 @@ void VehicleConfigurationHelper::setupOctoCopter() case VehicleConfigurationSource::MULTI_ROTOR_OCTO_COAX_X: { frame = SystemSettings::AIRFRAMETYPE_OCTOCOAXX; - mixer.channels[0].type = MIXER_TYPE_MOTOR; - mixer.channels[0].throttle1 = 100; - mixer.channels[0].throttle2 = 0; - mixer.channels[0].roll = 50; - mixer.channels[0].pitch = 50; - mixer.channels[0].yaw = -50; + channels[0].type = MIXER_TYPE_MOTOR; + channels[0].throttle1 = 100; + channels[0].throttle2 = 0; + channels[0].roll = 50; + channels[0].pitch = 50; + channels[0].yaw = -50; - mixer.channels[1].type = MIXER_TYPE_MOTOR; - mixer.channels[1].throttle1 = 100; - mixer.channels[1].throttle2 = 0; - mixer.channels[1].roll = 50; - mixer.channels[1].pitch = 50; - mixer.channels[1].yaw = 50; + channels[1].type = MIXER_TYPE_MOTOR; + channels[1].throttle1 = 100; + channels[1].throttle2 = 0; + channels[1].roll = 50; + channels[1].pitch = 50; + channels[1].yaw = 50; - mixer.channels[2].type = MIXER_TYPE_MOTOR; - mixer.channels[2].throttle1 = 100; - mixer.channels[2].throttle2 = 0; - mixer.channels[2].roll = -50; - mixer.channels[2].pitch = 50; - mixer.channels[2].yaw = -50; + channels[2].type = MIXER_TYPE_MOTOR; + channels[2].throttle1 = 100; + channels[2].throttle2 = 0; + channels[2].roll = -50; + channels[2].pitch = 50; + channels[2].yaw = -50; - mixer.channels[3].type = MIXER_TYPE_MOTOR; - mixer.channels[3].throttle1 = 100; - mixer.channels[3].throttle2 = 0; - mixer.channels[3].roll = -50; - mixer.channels[3].pitch = 50; - mixer.channels[3].yaw = 50; + channels[3].type = MIXER_TYPE_MOTOR; + channels[3].throttle1 = 100; + channels[3].throttle2 = 0; + channels[3].roll = -50; + channels[3].pitch = 50; + channels[3].yaw = 50; - mixer.channels[4].type = MIXER_TYPE_MOTOR; - mixer.channels[4].throttle1 = 100; - mixer.channels[4].throttle2 = 0; - mixer.channels[4].roll = -50; - mixer.channels[4].pitch = -50; - mixer.channels[4].yaw = -50; + channels[4].type = MIXER_TYPE_MOTOR; + channels[4].throttle1 = 100; + channels[4].throttle2 = 0; + channels[4].roll = -50; + channels[4].pitch = -50; + channels[4].yaw = -50; - mixer.channels[5].type = MIXER_TYPE_MOTOR; - mixer.channels[5].throttle1 = 100; - mixer.channels[5].throttle2 = 0; - mixer.channels[5].roll = -50; - mixer.channels[5].pitch = -50; - mixer.channels[5].yaw = 50; + channels[5].type = MIXER_TYPE_MOTOR; + channels[5].throttle1 = 100; + channels[5].throttle2 = 0; + channels[5].roll = -50; + channels[5].pitch = -50; + channels[5].yaw = 50; - mixer.channels[6].type = MIXER_TYPE_MOTOR; - mixer.channels[6].throttle1 = 100; - mixer.channels[6].throttle2 = 0; - mixer.channels[6].roll = 50; - mixer.channels[6].pitch = -50; - mixer.channels[6].yaw = -50; + channels[6].type = MIXER_TYPE_MOTOR; + channels[6].throttle1 = 100; + channels[6].throttle2 = 0; + channels[6].roll = 50; + channels[6].pitch = -50; + channels[6].yaw = -50; - mixer.channels[7].type = MIXER_TYPE_MOTOR; - mixer.channels[7].throttle1 = 100; - mixer.channels[7].throttle2 = 0; - mixer.channels[7].roll = 50; - mixer.channels[7].pitch = -50; - mixer.channels[7].yaw = 50; + channels[7].type = MIXER_TYPE_MOTOR; + channels[7].throttle1 = 100; + channels[7].throttle2 = 0; + channels[7].roll = 50; + channels[7].pitch = -50; + channels[7].yaw = 50; guiSettings.multi.VTOLMotorNW = 1; guiSettings.multi.VTOLMotorN = 2; @@ -1057,61 +1057,61 @@ void VehicleConfigurationHelper::setupOctoCopter() case VehicleConfigurationSource::MULTI_ROTOR_OCTO_COAX_PLUS: { frame = SystemSettings::AIRFRAMETYPE_OCTOCOAXP; - mixer.channels[0].type = MIXER_TYPE_MOTOR; - mixer.channels[0].throttle1 = 100; - mixer.channels[0].throttle2 = 0; - mixer.channels[0].roll = 0; - mixer.channels[0].pitch = 100; - mixer.channels[0].yaw = -50; + channels[0].type = MIXER_TYPE_MOTOR; + channels[0].throttle1 = 100; + channels[0].throttle2 = 0; + channels[0].roll = 0; + channels[0].pitch = 100; + channels[0].yaw = -50; - mixer.channels[1].type = MIXER_TYPE_MOTOR; - mixer.channels[1].throttle1 = 100; - mixer.channels[1].throttle2 = 0; - mixer.channels[1].roll = 0; - mixer.channels[1].pitch = 100; - mixer.channels[1].yaw = 50; + channels[1].type = MIXER_TYPE_MOTOR; + channels[1].throttle1 = 100; + channels[1].throttle2 = 0; + channels[1].roll = 0; + channels[1].pitch = 100; + channels[1].yaw = 50; - mixer.channels[2].type = MIXER_TYPE_MOTOR; - mixer.channels[2].throttle1 = 100; - mixer.channels[2].throttle2 = 0; - mixer.channels[2].roll = -100; - mixer.channels[2].pitch = 0; - mixer.channels[2].yaw = -50; + channels[2].type = MIXER_TYPE_MOTOR; + channels[2].throttle1 = 100; + channels[2].throttle2 = 0; + channels[2].roll = -100; + channels[2].pitch = 0; + channels[2].yaw = -50; - mixer.channels[3].type = MIXER_TYPE_MOTOR; - mixer.channels[3].throttle1 = 100; - mixer.channels[3].throttle2 = 0; - mixer.channels[3].roll = -100; - mixer.channels[3].pitch = 0; - mixer.channels[3].yaw = 50; + channels[3].type = MIXER_TYPE_MOTOR; + channels[3].throttle1 = 100; + channels[3].throttle2 = 0; + channels[3].roll = -100; + channels[3].pitch = 0; + channels[3].yaw = 50; - mixer.channels[4].type = MIXER_TYPE_MOTOR; - mixer.channels[4].throttle1 = 100; - mixer.channels[4].throttle2 = 0; - mixer.channels[4].roll = 0; - mixer.channels[4].pitch = -100; - mixer.channels[4].yaw = -50; + channels[4].type = MIXER_TYPE_MOTOR; + channels[4].throttle1 = 100; + channels[4].throttle2 = 0; + channels[4].roll = 0; + channels[4].pitch = -100; + channels[4].yaw = -50; - mixer.channels[5].type = MIXER_TYPE_MOTOR; - mixer.channels[5].throttle1 = 100; - mixer.channels[5].throttle2 = 0; - mixer.channels[5].roll = 0; - mixer.channels[5].pitch = -100; - mixer.channels[5].yaw = 50; + channels[5].type = MIXER_TYPE_MOTOR; + channels[5].throttle1 = 100; + channels[5].throttle2 = 0; + channels[5].roll = 0; + channels[5].pitch = -100; + channels[5].yaw = 50; - mixer.channels[6].type = MIXER_TYPE_MOTOR; - mixer.channels[6].throttle1 = 100; - mixer.channels[6].throttle2 = 0; - mixer.channels[6].roll = 100; - mixer.channels[6].pitch = 0; - mixer.channels[6].yaw = -50; + channels[6].type = MIXER_TYPE_MOTOR; + channels[6].throttle1 = 100; + channels[6].throttle2 = 0; + channels[6].roll = 100; + channels[6].pitch = 0; + channels[6].yaw = -50; - mixer.channels[7].type = MIXER_TYPE_MOTOR; - mixer.channels[7].throttle1 = 100; - mixer.channels[7].throttle2 = 0; - mixer.channels[7].roll = 100; - mixer.channels[7].pitch = 0; - mixer.channels[7].yaw = 50; + channels[7].type = MIXER_TYPE_MOTOR; + channels[7].throttle1 = 100; + channels[7].throttle2 = 0; + channels[7].roll = 100; + channels[7].pitch = 0; + channels[7].yaw = 50; guiSettings.multi.VTOLMotorN = 1; guiSettings.multi.VTOLMotorNE = 2; @@ -1126,61 +1126,61 @@ void VehicleConfigurationHelper::setupOctoCopter() } case VehicleConfigurationSource::MULTI_ROTOR_OCTO_V: { frame = SystemSettings::AIRFRAMETYPE_OCTOV; - mixer.channels[0].type = MIXER_TYPE_MOTOR; - mixer.channels[0].throttle1 = 100; - mixer.channels[0].throttle2 = 0; - mixer.channels[0].roll = -25; - mixer.channels[0].pitch = 8; - mixer.channels[0].yaw = -25; + channels[0].type = MIXER_TYPE_MOTOR; + channels[0].throttle1 = 100; + channels[0].throttle2 = 0; + channels[0].roll = -25; + channels[0].pitch = 8; + channels[0].yaw = -25; - mixer.channels[1].type = MIXER_TYPE_MOTOR; - mixer.channels[1].throttle1 = 100; - mixer.channels[1].throttle2 = 0; - mixer.channels[1].roll = -25; - mixer.channels[1].pitch = 25; - mixer.channels[1].yaw = 25; + channels[1].type = MIXER_TYPE_MOTOR; + channels[1].throttle1 = 100; + channels[1].throttle2 = 0; + channels[1].roll = -25; + channels[1].pitch = 25; + channels[1].yaw = 25; - mixer.channels[2].type = MIXER_TYPE_MOTOR; - mixer.channels[2].throttle1 = 100; - mixer.channels[2].throttle2 = 0; - mixer.channels[2].roll = -25; - mixer.channels[2].pitch = -25; - mixer.channels[2].yaw = -25; + channels[2].type = MIXER_TYPE_MOTOR; + channels[2].throttle1 = 100; + channels[2].throttle2 = 0; + channels[2].roll = -25; + channels[2].pitch = -25; + channels[2].yaw = -25; - mixer.channels[3].type = MIXER_TYPE_MOTOR; - mixer.channels[3].throttle1 = 100; - mixer.channels[3].throttle2 = 0; - mixer.channels[3].roll = -25; - mixer.channels[3].pitch = -8; - mixer.channels[3].yaw = 25; + channels[3].type = MIXER_TYPE_MOTOR; + channels[3].throttle1 = 100; + channels[3].throttle2 = 0; + channels[3].roll = -25; + channels[3].pitch = -8; + channels[3].yaw = 25; - mixer.channels[4].type = MIXER_TYPE_MOTOR; - mixer.channels[4].throttle1 = 100; - mixer.channels[4].throttle2 = 0; - mixer.channels[4].roll = 25; - mixer.channels[4].pitch = -8; - mixer.channels[4].yaw = -25; + channels[4].type = MIXER_TYPE_MOTOR; + channels[4].throttle1 = 100; + channels[4].throttle2 = 0; + channels[4].roll = 25; + channels[4].pitch = -8; + channels[4].yaw = -25; - mixer.channels[5].type = MIXER_TYPE_MOTOR; - mixer.channels[5].throttle1 = 100; - mixer.channels[5].throttle2 = 0; - mixer.channels[5].roll = 25; - mixer.channels[5].pitch = -25; - mixer.channels[5].yaw = 25; + channels[5].type = MIXER_TYPE_MOTOR; + channels[5].throttle1 = 100; + channels[5].throttle2 = 0; + channels[5].roll = 25; + channels[5].pitch = -25; + channels[5].yaw = 25; - mixer.channels[6].type = MIXER_TYPE_MOTOR; - mixer.channels[6].throttle1 = 100; - mixer.channels[6].throttle2 = 0; - mixer.channels[6].roll = 25; - mixer.channels[6].pitch = 25; - mixer.channels[6].yaw = -25; + channels[6].type = MIXER_TYPE_MOTOR; + channels[6].throttle1 = 100; + channels[6].throttle2 = 0; + channels[6].roll = 25; + channels[6].pitch = 25; + channels[6].yaw = -25; - mixer.channels[7].type = MIXER_TYPE_MOTOR; - mixer.channels[7].throttle1 = 100; - mixer.channels[7].throttle2 = 0; - mixer.channels[7].roll = 25; - mixer.channels[7].pitch = 8; - mixer.channels[7].yaw = 25; + channels[7].type = MIXER_TYPE_MOTOR; + channels[7].throttle1 = 100; + channels[7].throttle2 = 0; + channels[7].roll = 25; + channels[7].pitch = 8; + channels[7].yaw = 25; guiSettings.multi.VTOLMotorN = 1; guiSettings.multi.VTOLMotorNE = 2; @@ -1197,6 +1197,6 @@ void VehicleConfigurationHelper::setupOctoCopter() break; } - applyMixerConfiguration(mixer); + applyMixerConfiguration(channels); applyMultiGUISettings(frame, guiSettings); } diff --git a/ground/openpilotgcs/src/plugins/setupwizard/vehicleconfigurationhelper.h b/ground/openpilotgcs/src/plugins/setupwizard/vehicleconfigurationhelper.h index 430594d7a..44f2125b1 100644 --- a/ground/openpilotgcs/src/plugins/setupwizard/vehicleconfigurationhelper.h +++ b/ground/openpilotgcs/src/plugins/setupwizard/vehicleconfigurationhelper.h @@ -50,10 +50,6 @@ struct mixerChannelSettings { : type(t), throttle1(th1), throttle2(th2), roll(r), pitch(p), yaw(y) {} }; -struct mixerSettings { - mixerChannelSettings channels[10]; -}; - class VehicleConfigurationHelper : public QObject { Q_OBJECT @@ -88,7 +84,7 @@ private: void applyStabilizationConfiguration(); void applyManualControlDefaults(); - void applyMixerConfiguration(mixerSettings mixer); + void applyMixerConfiguration(mixerChannelSettings channels[]); GUIConfigDataUnion getGUIConfigData(); void applyMultiGUISettings(SystemSettings::AirframeTypeOptions airframe, GUIConfigDataUnion guiConfig); diff --git a/ground/openpilotgcs/src/plugins/uploader/uploadergadgetwidget.cpp b/ground/openpilotgcs/src/plugins/uploader/uploadergadgetwidget.cpp index 314914667..06efb17b1 100755 --- a/ground/openpilotgcs/src/plugins/uploader/uploadergadgetwidget.cpp +++ b/ground/openpilotgcs/src/plugins/uploader/uploadergadgetwidget.cpp @@ -71,8 +71,6 @@ UploaderGadgetWidget::UploaderGadgetWidget(QWidget *parent) : QWidget(parent) onAutopilotConnect(); versionMatchCheck(); } - - } @@ -687,7 +685,8 @@ void UploaderGadgetWidget::versionMatchCheck() "GCS version: %1 Firmware version: %2.")).arg(gcsVersion).arg(fwVersion); msg->showMessage(warning); } - } +} + void UploaderGadgetWidget::openHelp() { From a47687cff8f89da04317f1900451330ccc5f7d5f Mon Sep 17 00:00:00 2001 From: Fredrik Arvidsson Date: Tue, 2 Oct 2012 23:17:56 +0200 Subject: [PATCH 081/105] OP-39 Added correct dependencies to SetupWizard plugin specification. Renamed FlashPage to FlashDance, eeh, no SavePage :) Removed unnecessary dependency in setupwizard.pro Fixed a bug with the Next button on the first page. Fixed a bug with the cancel button on the last page. --- .../src/plugins/config/Config.pluginspec | 2 +- ground/openpilotgcs/src/plugins/plugins.pro | 1 - .../setupwizard/SetupWizard.pluginspec | 2 ++ .../pages/{flashpage.cpp => savepage.cpp} | 24 +++++++++---------- .../pages/{flashpage.h => savepage.h} | 20 ++++++++-------- .../pages/{flashpage.ui => savepage.ui} | 4 ++-- .../src/plugins/setupwizard/setupwizard.cpp | 18 +++++++++----- .../src/plugins/setupwizard/setupwizard.h | 4 +++- .../src/plugins/setupwizard/setupwizard.pro | 12 +++++----- 9 files changed, 48 insertions(+), 39 deletions(-) rename ground/openpilotgcs/src/plugins/setupwizard/pages/{flashpage.cpp => savepage.cpp} (86%) rename ground/openpilotgcs/src/plugins/setupwizard/pages/{flashpage.h => savepage.h} (82%) rename ground/openpilotgcs/src/plugins/setupwizard/pages/{flashpage.ui => savepage.ui} (98%) diff --git a/ground/openpilotgcs/src/plugins/config/Config.pluginspec b/ground/openpilotgcs/src/plugins/config/Config.pluginspec index 1ba1c8f76..f9ce7a7e5 100644 --- a/ground/openpilotgcs/src/plugins/config/Config.pluginspec +++ b/ground/openpilotgcs/src/plugins/config/Config.pluginspec @@ -1,4 +1,4 @@ - + The OpenPilot Project (C) 2010 OpenPilot Project GNU Public License (GPL) Version 3 diff --git a/ground/openpilotgcs/src/plugins/plugins.pro b/ground/openpilotgcs/src/plugins/plugins.pro index 48e41c770..a1653cf53 100644 --- a/ground/openpilotgcs/src/plugins/plugins.pro +++ b/ground/openpilotgcs/src/plugins/plugins.pro @@ -228,7 +228,6 @@ plugin_setupwizard.subdir = setupwizard plugin_setupwizard.depends = plugin_coreplugin plugin_setupwizard.depends += plugin_uavobjects plugin_setupwizard.depends += plugin_config -plugin_setupwizard.depends += plugin_uavsettingsimportexport SUBDIRS += plugin_setupwizard # Junsi Powerlog plugin diff --git a/ground/openpilotgcs/src/plugins/setupwizard/SetupWizard.pluginspec b/ground/openpilotgcs/src/plugins/setupwizard/SetupWizard.pluginspec index 4425b290e..8aa610ec8 100644 --- a/ground/openpilotgcs/src/plugins/setupwizard/SetupWizard.pluginspec +++ b/ground/openpilotgcs/src/plugins/setupwizard/SetupWizard.pluginspec @@ -6,5 +6,7 @@ http://www.openpilot.org + + diff --git a/ground/openpilotgcs/src/plugins/setupwizard/pages/flashpage.cpp b/ground/openpilotgcs/src/plugins/setupwizard/pages/savepage.cpp similarity index 86% rename from ground/openpilotgcs/src/plugins/setupwizard/pages/flashpage.cpp rename to ground/openpilotgcs/src/plugins/setupwizard/pages/savepage.cpp index 5a5900ac7..f3e03e0fb 100644 --- a/ground/openpilotgcs/src/plugins/setupwizard/pages/flashpage.cpp +++ b/ground/openpilotgcs/src/plugins/setupwizard/pages/savepage.cpp @@ -1,11 +1,11 @@ /** ****************************************************************************** * - * @file flashpage.cpp + * @file savepage.cpp * @author The OpenPilot Team, http://www.openpilot.org Copyright (C) 2012. * @addtogroup * @{ - * @addtogroup FlashPage + * @addtogroup SavePage * @{ * @brief *****************************************************************************/ @@ -26,35 +26,35 @@ */ #include -#include "flashpage.h" -#include "ui_flashpage.h" +#include "savepage.h" +#include "ui_savepage.h" #include "setupwizard.h" #include "vehicleconfigurationhelper.h" -FlashPage::FlashPage(SetupWizard *wizard, QWidget *parent) : +SavePage::SavePage(SetupWizard *wizard, QWidget *parent) : AbstractWizardPage(wizard, parent), - ui(new Ui::FlashPage), m_successfulWrite(false) + ui(new Ui::SavePage), m_successfulWrite(false) { ui->setupUi(this); connect(ui->saveButton, SIGNAL(clicked()), this, SLOT(writeToController())); } -FlashPage::~FlashPage() +SavePage::~SavePage() { delete ui; } -bool FlashPage::validatePage() +bool SavePage::validatePage() { return true; } -bool FlashPage::isComplete() const +bool SavePage::isComplete() const { return m_successfulWrite; } -void FlashPage::writeToController() +void SavePage::writeToController() { if(!getWizard()->getConnectionManager()->isConnected()) { QMessageBox msgBox; @@ -79,7 +79,7 @@ void FlashPage::writeToController() emit completeChanged(); } -void FlashPage::enableButtons(bool enable) +void SavePage::enableButtons(bool enable) { ui->saveButton->setEnabled(enable); getWizard()->button(QWizard::NextButton)->setEnabled(enable); @@ -88,7 +88,7 @@ void FlashPage::enableButtons(bool enable) QApplication::processEvents(); } -void FlashPage::saveProgress(int total, int current, QString description) +void SavePage::saveProgress(int total, int current, QString description) { qDebug() << "Progress " << current << "(" << total << ")"; if(ui->saveProgressBar->maximum() != total) { diff --git a/ground/openpilotgcs/src/plugins/setupwizard/pages/flashpage.h b/ground/openpilotgcs/src/plugins/setupwizard/pages/savepage.h similarity index 82% rename from ground/openpilotgcs/src/plugins/setupwizard/pages/flashpage.h rename to ground/openpilotgcs/src/plugins/setupwizard/pages/savepage.h index 6602926ea..d8382df93 100644 --- a/ground/openpilotgcs/src/plugins/setupwizard/pages/flashpage.h +++ b/ground/openpilotgcs/src/plugins/setupwizard/pages/savepage.h @@ -1,11 +1,11 @@ /** ****************************************************************************** * - * @file flashpage.h + * @file savepage.h * @author The OpenPilot Team, http://www.openpilot.org Copyright (C) 2012. * @addtogroup * @{ - * @addtogroup FlashPage + * @addtogroup SavePage * @{ * @brief *****************************************************************************/ @@ -25,27 +25,27 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -#ifndef FLASHPAGE_H -#define FLASHPAGE_H +#ifndef SAVEPAGE_H +#define SAVEPAGE_H #include "abstractwizardpage.h" namespace Ui { -class FlashPage; +class SavePage; } -class FlashPage : public AbstractWizardPage +class SavePage : public AbstractWizardPage { Q_OBJECT public: - explicit FlashPage(SetupWizard *wizard, QWidget *parent = 0); - ~FlashPage(); + explicit SavePage(SetupWizard *wizard, QWidget *parent = 0); + ~SavePage(); bool validatePage(); bool isComplete() const; private: - Ui::FlashPage *ui; + Ui::SavePage *ui; bool m_successfulWrite; void enableButtons(bool enable); @@ -54,4 +54,4 @@ private slots: void saveProgress(int total, int current, QString description); }; -#endif // FLASHPAGE_H +#endif // SAVEPAGE_H diff --git a/ground/openpilotgcs/src/plugins/setupwizard/pages/flashpage.ui b/ground/openpilotgcs/src/plugins/setupwizard/pages/savepage.ui similarity index 98% rename from ground/openpilotgcs/src/plugins/setupwizard/pages/flashpage.ui rename to ground/openpilotgcs/src/plugins/setupwizard/pages/savepage.ui index 0f5f62e9f..d5a5710ed 100644 --- a/ground/openpilotgcs/src/plugins/setupwizard/pages/flashpage.ui +++ b/ground/openpilotgcs/src/plugins/setupwizard/pages/savepage.ui @@ -1,7 +1,7 @@ - FlashPage - + SavePage + 0 diff --git a/ground/openpilotgcs/src/plugins/setupwizard/setupwizard.cpp b/ground/openpilotgcs/src/plugins/setupwizard/setupwizard.cpp index f91357b35..fd3b2a083 100644 --- a/ground/openpilotgcs/src/plugins/setupwizard/setupwizard.cpp +++ b/ground/openpilotgcs/src/plugins/setupwizard/setupwizard.cpp @@ -38,7 +38,7 @@ #include "pages/outputpage.h" #include "pages/levellingpage.h" #include "pages/summarypage.h" -#include "pages/flashpage.h" +#include "pages/savepage.h" #include "pages/notyetimplementedpage.h" #include "pages/rebootpage.h" #include "pages/outputcalibrationpage.h" @@ -111,10 +111,10 @@ int SetupWizard::nextId() const case PAGE_LEVELLING: return PAGE_CALIBRATION; case PAGE_CALIBRATION: - return PAGE_FLASH; + return PAGE_SAVE; case PAGE_SUMMARY: return PAGE_LEVELLING; - case PAGE_FLASH: + case PAGE_SAVE: return PAGE_END; case PAGE_NOTYETIMPLEMENTED: return PAGE_END; @@ -268,7 +268,7 @@ void SetupWizard::createPages() setPage(PAGE_LEVELLING, new LevellingPage(this)); setPage(PAGE_CALIBRATION, new OutputCalibrationPage(this)); setPage(PAGE_SUMMARY, new SummaryPage(this)); - setPage(PAGE_FLASH, new FlashPage(this)); + setPage(PAGE_SAVE, new SavePage(this)); setPage(PAGE_REBOOT, new RebootPage(this)); setPage(PAGE_NOTYETIMPLEMENTED, new NotYetImplementedPage(this)); setPage(PAGE_END, new EndPage(this)); @@ -278,9 +278,9 @@ void SetupWizard::createPages() connect(button(QWizard::CustomButton1), SIGNAL(clicked()), this, SLOT(customBackClicked())); setButtonText(QWizard::CustomButton1, buttonText(QWizard::BackButton)); QList button_layout; - button_layout << QWizard::Stretch << QWizard::CustomButton1 << QWizard::NextButton << QWizard::CancelButton; + button_layout << QWizard::Stretch << QWizard::CustomButton1 << QWizard::NextButton << QWizard::CancelButton << QWizard::FinishButton; setButtonLayout(button_layout); - + connect(this, SIGNAL(currentIdChanged(int)), this, SLOT(pageChanged(int))); } void SetupWizard::customBackClicked() @@ -293,6 +293,12 @@ void SetupWizard::customBackClicked() } } +void SetupWizard::pageChanged(int currId) +{ + button(QWizard::CustomButton1)->setVisible(currId != PAGE_START); + button(QWizard::CancelButton)->setVisible(currId != PAGE_END); +} + bool SetupWizard::saveHardwareSettings() const { VehicleConfigurationHelper helper(const_cast(this)); diff --git a/ground/openpilotgcs/src/plugins/setupwizard/setupwizard.h b/ground/openpilotgcs/src/plugins/setupwizard/setupwizard.h index 1a8728714..c6cf7e1ae 100644 --- a/ground/openpilotgcs/src/plugins/setupwizard/setupwizard.h +++ b/ground/openpilotgcs/src/plugins/setupwizard/setupwizard.h @@ -78,12 +78,14 @@ public: } return m_connectionManager; } + private slots: void customBackClicked(); + void pageChanged(int currId); private: enum {PAGE_START, PAGE_CONTROLLER, PAGE_VEHICLES, PAGE_MULTI, PAGE_FIXEDWING, PAGE_HELI, PAGE_SURFACE, PAGE_INPUT, PAGE_OUTPUT, PAGE_LEVELLING, PAGE_CALIBRATION, - PAGE_FLASH, PAGE_SUMMARY, PAGE_NOTYETIMPLEMENTED, PAGE_REBOOT, PAGE_END}; + PAGE_SAVE, PAGE_SUMMARY, PAGE_NOTYETIMPLEMENTED, PAGE_REBOOT, PAGE_END}; void createPages(); bool saveHardwareSettings() const; diff --git a/ground/openpilotgcs/src/plugins/setupwizard/setupwizard.pro b/ground/openpilotgcs/src/plugins/setupwizard/setupwizard.pro index e94f4a4a4..6d336a888 100644 --- a/ground/openpilotgcs/src/plugins/setupwizard/setupwizard.pro +++ b/ground/openpilotgcs/src/plugins/setupwizard/setupwizard.pro @@ -23,7 +23,6 @@ HEADERS += setupwizardplugin.h \ pages/outputpage.h \ pages/inputpage.h \ pages/summarypage.h \ - pages/flashpage.h \ pages/levellingpage.h \ levellingutil.h \ vehicleconfigurationsource.h \ @@ -31,7 +30,8 @@ HEADERS += setupwizardplugin.h \ connectiondiagram.h \ pages/outputcalibrationpage.h \ outputcalibrationutil.h \ - pages/rebootpage.h + pages/rebootpage.h \ + pages/savepage.h SOURCES += setupwizardplugin.cpp \ setupwizard.cpp \ @@ -48,7 +48,6 @@ SOURCES += setupwizardplugin.cpp \ pages/outputpage.cpp \ pages/inputpage.cpp \ pages/summarypage.cpp \ - pages/flashpage.cpp \ pages/levellingpage.cpp \ levellingutil.cpp \ vehicleconfigurationsource.cpp \ @@ -56,7 +55,8 @@ SOURCES += setupwizardplugin.cpp \ connectiondiagram.cpp \ pages/outputcalibrationpage.cpp \ outputcalibrationutil.cpp \ - pages/rebootpage.cpp + pages/rebootpage.cpp \ + pages/savepage.cpp OTHER_FILES += SetupWizard.pluginspec @@ -73,11 +73,11 @@ FORMS += \ pages/outputpage.ui \ pages/inputpage.ui \ pages/summarypage.ui \ - pages/flashpage.ui \ pages/levellingpage.ui \ connectiondiagram.ui \ pages/outputcalibrationpage.ui \ - pages/rebootpage.ui + pages/rebootpage.ui \ + pages/savepage.ui RESOURCES += \ wizardResources.qrc From 35f7b4903fdcbf192d416640b67049324290abca Mon Sep 17 00:00:00 2001 From: Laura Sebesta Date: Sun, 16 Sep 2012 18:03:48 +0200 Subject: [PATCH 082/105] Several files still needed to have comments removed. Missed merge in git. Retry. --- ground/openpilotgcs/src/libs/opmapcontrol/src/core/opmaps.cpp | 2 -- ground/openpilotgcs/src/plugins/gcscontrol/gcscontrolgadget.cpp | 1 - ground/openpilotgcs/src/plugins/gpsdisplay/nmeaparser.cpp | 1 - 3 files changed, 4 deletions(-) diff --git a/ground/openpilotgcs/src/libs/opmapcontrol/src/core/opmaps.cpp b/ground/openpilotgcs/src/libs/opmapcontrol/src/core/opmaps.cpp index 3b858d82f..86660fd3e 100644 --- a/ground/openpilotgcs/src/libs/opmapcontrol/src/core/opmaps.cpp +++ b/ground/openpilotgcs/src/libs/opmapcontrol/src/core/opmaps.cpp @@ -43,8 +43,6 @@ namespace core { LanguageStr=LanguageType().toShortString(Language); Cache::Instance(); -// OPMaps::MemoryCache(); - } diff --git a/ground/openpilotgcs/src/plugins/gcscontrol/gcscontrolgadget.cpp b/ground/openpilotgcs/src/plugins/gcscontrol/gcscontrolgadget.cpp index 485cd7b31..54447b84b 100644 --- a/ground/openpilotgcs/src/plugins/gcscontrol/gcscontrolgadget.cpp +++ b/ground/openpilotgcs/src/plugins/gcscontrol/gcscontrolgadget.cpp @@ -293,7 +293,6 @@ double GCSControlGadget::constrain(double value) void GCSControlGadget::buttonState(ButtonNumber number, bool pressed) { -// int state; if ((buttonSettings[number].ActionID>0)&&(buttonSettings[number].FunctionID>0)&&(pressed)) {//this button is configured ExtensionSystem::PluginManager *pm = ExtensionSystem::PluginManager::instance(); diff --git a/ground/openpilotgcs/src/plugins/gpsdisplay/nmeaparser.cpp b/ground/openpilotgcs/src/plugins/gpsdisplay/nmeaparser.cpp index cca79a565..87ecef211 100644 --- a/ground/openpilotgcs/src/plugins/gpsdisplay/nmeaparser.cpp +++ b/ground/openpilotgcs/src/plugins/gpsdisplay/nmeaparser.cpp @@ -301,7 +301,6 @@ void NMEAParser::nmeaProcessGPGSV(char *packet) const int sentence_total = tokenslist.at(1).toInt(); // Number of sentences for full data const int sentence_index = tokenslist.at(2).toInt(); // sentence x of y -// const int sat_count = tokenslist.at(3).toInt(); // Number of satellites in view int sats = (tokenslist.size() - 4) /4; for(int sat = 0; sat < sats; sat++) { From c8d9f89ea39ddd744ee7123b4d191d1ed8b47eca Mon Sep 17 00:00:00 2001 From: James Cotton Date: Wed, 3 Oct 2012 15:11:15 -0500 Subject: [PATCH 083/105] Default DIAG_TASK was on for PipX --- flight/PipXtreme/Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/flight/PipXtreme/Makefile b/flight/PipXtreme/Makefile index 07c9e05d4..2aa57825a 100644 --- a/flight/PipXtreme/Makefile +++ b/flight/PipXtreme/Makefile @@ -42,7 +42,7 @@ STACK_DIAGNOSTICS ?= NO MIXERSTATUS_DIAGNOSTICS ?= NO RATEDESIRED_DIAGNOSTICS ?= NO I2C_WDG_STATS_DIAGNOSTICS ?= NO -DIAG_TASKS ?= YES +DIAG_TASKS ?= NO #Or just turn on all the above diagnostics. WARNING: This consumes massive amounts of memory. ALL_DIGNOSTICS ?=NO From 6b2ac1cf39543be4597e91f93d180ac0bcc0a36c Mon Sep 17 00:00:00 2001 From: David Ankers Date: Thu, 4 Oct 2012 12:52:36 +1000 Subject: [PATCH 084/105] Spelling on browser config, add size settings to options so things don't get scrunched. --- .../share/openpilotgcs/default_configurations/OpenPilotGCS.xml | 2 ++ .../src/plugins/uavobjectbrowser/uavobjectbrowseroptionspage.ui | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/ground/openpilotgcs/share/openpilotgcs/default_configurations/OpenPilotGCS.xml b/ground/openpilotgcs/share/openpilotgcs/default_configurations/OpenPilotGCS.xml index cab264e14..a4148acc0 100644 --- a/ground/openpilotgcs/share/openpilotgcs/default_configurations/OpenPilotGCS.xml +++ b/ground/openpilotgcs/share/openpilotgcs/default_configurations/OpenPilotGCS.xml @@ -8,6 +8,8 @@ false en_AU true + 600 + 800 default false diff --git a/ground/openpilotgcs/src/plugins/uavobjectbrowser/uavobjectbrowseroptionspage.ui b/ground/openpilotgcs/src/plugins/uavobjectbrowser/uavobjectbrowseroptionspage.ui index 350fc440b..3b5cff751 100644 --- a/ground/openpilotgcs/src/plugins/uavobjectbrowser/uavobjectbrowseroptionspage.ui +++ b/ground/openpilotgcs/src/plugins/uavobjectbrowser/uavobjectbrowseroptionspage.ui @@ -118,7 +118,7 @@ - Only hilight nodes when value actually changes + Only highlight nodes when value actually changes From af7fffdab6df65295b9aa428a8c90d4f24eb7c8e Mon Sep 17 00:00:00 2001 From: David Ankers Date: Thu, 4 Oct 2012 13:09:54 +1000 Subject: [PATCH 085/105] Add Gadgets to HiTL screen --- .../default_configurations/OpenPilotGCS.xml | 18 +++++++++++++++--- .../OpenPilotGCS_wide.xml | 18 +++++++++++++++--- 2 files changed, 30 insertions(+), 6 deletions(-) diff --git a/ground/openpilotgcs/share/openpilotgcs/default_configurations/OpenPilotGCS.xml b/ground/openpilotgcs/share/openpilotgcs/default_configurations/OpenPilotGCS.xml index a4148acc0..6f936d75a 100644 --- a/ground/openpilotgcs/share/openpilotgcs/default_configurations/OpenPilotGCS.xml +++ b/ground/openpilotgcs/share/openpilotgcs/default_configurations/OpenPilotGCS.xml @@ -2671,8 +2671,20 @@ - EmptyGadget - uavGadget + + PfdQmlGadget + + NoTerrain + + uavGadget + + + MagicWaypointGadget + uavGadget + + 1 + @Variant(AAAACQAAAAIAAAACAAAB7wAAAAIAAAGU) + splitter GCSControlGadget @@ -2682,7 +2694,7 @@ uavGadget 1 - @Variant(AAAACQAAAAIAAAACAAAB6AAAAAIAAADC) + @Variant(AAAACQAAAAIAAAACAAADhAAAAAIAAAIX) splitter 2 diff --git a/ground/openpilotgcs/share/openpilotgcs/default_configurations/OpenPilotGCS_wide.xml b/ground/openpilotgcs/share/openpilotgcs/default_configurations/OpenPilotGCS_wide.xml index 960c10355..22997aa5e 100644 --- a/ground/openpilotgcs/share/openpilotgcs/default_configurations/OpenPilotGCS_wide.xml +++ b/ground/openpilotgcs/share/openpilotgcs/default_configurations/OpenPilotGCS_wide.xml @@ -2669,8 +2669,20 @@ - EmptyGadget - uavGadget + + PfdQmlGadget + + NoTerrain + + uavGadget + + + MagicWaypointGadget + uavGadget + + 1 + @Variant(AAAACQAAAAIAAAACAAAB7wAAAAIAAAGU) + splitter GCSControlGadget @@ -2680,7 +2692,7 @@ uavGadget 1 - @Variant(AAAACQAAAAIAAAACAAAB6AAAAAIAAADC) + @Variant(AAAACQAAAAIAAAACAAADhAAAAAIAAAIX) splitter 2 From ac8d399d8d321e07fa9c37d9161b8e27fd42e36d Mon Sep 17 00:00:00 2001 From: PT_Dreamer Date: Thu, 4 Oct 2012 12:15:20 +0100 Subject: [PATCH 086/105] GCS-Fixes Flight data tab icon not being displayed --- .../share/openpilotgcs/default_configurations/OpenPilotGCS.xml | 2 +- .../openpilotgcs/default_configurations/OpenPilotGCS_wide.xml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/ground/openpilotgcs/share/openpilotgcs/default_configurations/OpenPilotGCS.xml b/ground/openpilotgcs/share/openpilotgcs/default_configurations/OpenPilotGCS.xml index 6f936d75a..ec74ee336 100644 --- a/ground/openpilotgcs/share/openpilotgcs/default_configurations/OpenPilotGCS.xml +++ b/ground/openpilotgcs/share/openpilotgcs/default_configurations/OpenPilotGCS.xml @@ -2753,7 +2753,7 @@ false - :\core\images\ah.png + :/core/images/ah.png :/core/images/openpilot_logo_64.png :/core/images/config.png :/core/images/cog.png diff --git a/ground/openpilotgcs/share/openpilotgcs/default_configurations/OpenPilotGCS_wide.xml b/ground/openpilotgcs/share/openpilotgcs/default_configurations/OpenPilotGCS_wide.xml index 22997aa5e..8c9cfd2d2 100644 --- a/ground/openpilotgcs/share/openpilotgcs/default_configurations/OpenPilotGCS_wide.xml +++ b/ground/openpilotgcs/share/openpilotgcs/default_configurations/OpenPilotGCS_wide.xml @@ -2751,7 +2751,7 @@ false - :\core\images\ah.png + :/core/images/ah.png :/core/images/openpilot_logo_64.png :/core/images/config.png :/core/images/cog.png From 29111b352900296a40f1326ae4f8da8cde640423 Mon Sep 17 00:00:00 2001 From: PT_Dreamer Date: Thu, 4 Oct 2012 12:32:30 +0100 Subject: [PATCH 087/105] GCS-Map fixes Find place now works when the user presses enter Find place goes to zoom level 12. Don't go to UAV position on HW connect if "follow UAV" mode is not set --- .../src/plugins/opmap/opmapgadgetwidget.cpp | 12 ++++++++++-- .../src/plugins/opmap/opmapgadgetwidget.h | 2 ++ 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/ground/openpilotgcs/src/plugins/opmap/opmapgadgetwidget.cpp b/ground/openpilotgcs/src/plugins/opmap/opmapgadgetwidget.cpp index 19a2a0426..c4e084a89 100644 --- a/ground/openpilotgcs/src/plugins/opmap/opmapgadgetwidget.cpp +++ b/ground/openpilotgcs/src/plugins/opmap/opmapgadgetwidget.cpp @@ -866,8 +866,10 @@ void OPMapGadgetWidget::onTelemetryConnect() setHome(internals::PointLatLng(LLA[0], LLA[1]),LLA[2]); if (m_map) - m_map->SetCurrentPosition(m_home_position.coord); // set the map position - + { + if(m_map->UAV->GetMapFollowType()!=UAVMapFollowType::None) + m_map->SetCurrentPosition(m_home_position.coord); // set the map position + } // *********************** } @@ -2167,6 +2169,7 @@ void OPMapGadgetWidget::on_tbFind_clicked() { pal.setColor( m_widget->leFind->backgroundRole(), Qt::green); m_widget->leFind->setPalette(pal); + m_map->SetZoom(12); } else { @@ -2188,3 +2191,8 @@ void OPMapGadgetWidget::onOverlayOpacityActGroup_triggered(QAction *action) m_map->setOverlayOpacity(action->data().toReal()/100); emit overlayOpacityChanged(action->data().toReal()/100); } + +void OPMapGadgetWidget::on_leFind_returnPressed() +{ + on_tbFind_clicked(); +} diff --git a/ground/openpilotgcs/src/plugins/opmap/opmapgadgetwidget.h b/ground/openpilotgcs/src/plugins/opmap/opmapgadgetwidget.h index c58eade5e..fbac0b958 100644 --- a/ground/openpilotgcs/src/plugins/opmap/opmapgadgetwidget.h +++ b/ground/openpilotgcs/src/plugins/opmap/opmapgadgetwidget.h @@ -212,6 +212,8 @@ private slots: void on_tbFind_clicked(); void onHomeDoubleClick(HomeItem*); void onOverlayOpacityActGroup_triggered(QAction *action); + void on_leFind_returnPressed(); + private: int m_min_zoom; int m_max_zoom; From 2573e84e76b8689c6134df638411b8d73ad7362b Mon Sep 17 00:00:00 2001 From: David Ankers Date: Fri, 5 Oct 2012 10:18:29 +1000 Subject: [PATCH 088/105] Change Welcome screen icon by popular request --- ground/openpilotgcs/src/plugins/welcome/welcomemode.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ground/openpilotgcs/src/plugins/welcome/welcomemode.cpp b/ground/openpilotgcs/src/plugins/welcome/welcomemode.cpp index 814a04bf4..a109f328a 100644 --- a/ground/openpilotgcs/src/plugins/welcome/welcomemode.cpp +++ b/ground/openpilotgcs/src/plugins/welcome/welcomemode.cpp @@ -92,7 +92,7 @@ QString WelcomeMode::name() const QIcon WelcomeMode::icon() const { - return QIcon(QLatin1String(":/core/images/openpilot_logo_64.png")); + return QIcon(QLatin1String(":/core/images/openpiloticon.png")); } int WelcomeMode::priority() const From aaea66a5d05c3283af5bcff3a1b3e061ab1826a8 Mon Sep 17 00:00:00 2001 From: David Ankers Date: Fri, 5 Oct 2012 11:18:16 +1000 Subject: [PATCH 089/105] Fix splitter on Scopes screen --- .../share/openpilotgcs/default_configurations/OpenPilotGCS.xml | 2 +- .../openpilotgcs/default_configurations/OpenPilotGCS_wide.xml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/ground/openpilotgcs/share/openpilotgcs/default_configurations/OpenPilotGCS.xml b/ground/openpilotgcs/share/openpilotgcs/default_configurations/OpenPilotGCS.xml index ec74ee336..7c3f74cff 100644 --- a/ground/openpilotgcs/share/openpilotgcs/default_configurations/OpenPilotGCS.xml +++ b/ground/openpilotgcs/share/openpilotgcs/default_configurations/OpenPilotGCS.xml @@ -2638,7 +2638,7 @@ uavGadget 2 - @Variant(AAAACQAAAAIAAAACAAAClQAAAAIAAAB3) + @Variant(AAAACQAAAAIAAAACAAABhAAAAAIAAAGE) splitter 1 diff --git a/ground/openpilotgcs/share/openpilotgcs/default_configurations/OpenPilotGCS_wide.xml b/ground/openpilotgcs/share/openpilotgcs/default_configurations/OpenPilotGCS_wide.xml index 8c9cfd2d2..66cc39d88 100644 --- a/ground/openpilotgcs/share/openpilotgcs/default_configurations/OpenPilotGCS_wide.xml +++ b/ground/openpilotgcs/share/openpilotgcs/default_configurations/OpenPilotGCS_wide.xml @@ -2636,7 +2636,7 @@ uavGadget 2 - @Variant(AAAACQAAAAIAAAACAAAClQAAAAIAAAB3) + @Variant(AAAACQAAAAIAAAACAAABhAAAAAIAAAGE) splitter 1 From a536f74722688e1b99a3bb6745eec00e36a8b049 Mon Sep 17 00:00:00 2001 From: chris pember Date: Wed, 3 Oct 2012 23:46:46 -0700 Subject: [PATCH 090/105] temp fix for the sizing of the multi page that will allow folks on tiny screens to have a uavo browser if they want --- .../src/plugins/config/airframe.ui | 929 +++++++++--------- 1 file changed, 474 insertions(+), 455 deletions(-) diff --git a/ground/openpilotgcs/src/plugins/config/airframe.ui b/ground/openpilotgcs/src/plugins/config/airframe.ui index 7b1e92c8a..dda3534d4 100755 --- a/ground/openpilotgcs/src/plugins/config/airframe.ui +++ b/ground/openpilotgcs/src/plugins/config/airframe.ui @@ -6,8 +6,8 @@ 0 0 - 965 - 637 + 880 + 608 @@ -128,8 +128,8 @@ 0 0 - 935 - 537 + 850 + 508 @@ -1544,487 +1544,506 @@ margin:1px; false - + - - - + + + true + + + + + 0 + 0 + 800 + 386 + + + - - - - 0 - 0 - - - - - 75 - true - - - - Vehicle type: - - - - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - - - - - - 75 - true - - - - Channel Assignment - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - - - - - - 0 - 0 - - - - - 0 - 100 - - - - Output channel asignmets - - - - - - - 77 - 0 - - - - Engine - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - Select output channel for the engine - - - - - - - - 60 - 0 - - - - Aileron 1 - - - - - - - Select output channel for the first aileron (or elevon) - - - - - - - false - - - - 60 - 0 - - - - Aileron 2 - - - - - - - false - - - Select output channel for the second aileron (or elevon) - - - - - - - - 0 - 0 - - - - Motor - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - Select output channel for the first motor - - - - - - - false - - - - 47 - 0 - - - - Motor 2 - - - - - - - false - - - Select output channel for a second motor - - - - - - - Front Steering - - - - - - - Select output channel for the first steering actuator - - - - - - - Rear Steering - - - - - - - Select output channel for a second steering actuator - - - - - - - - - - true - - - - 0 - 0 - - - - Differential Steering Mix - - - - - - - - + + + + + + + + 0 + 0 + + + + + 75 + true + + + + Vehicle type: + + + + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + + + + + 75 + true + + + + Channel Assignment + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + + + + + 0 + 0 + + + + + 0 + 100 + + + + Output channel asignmets + + + + - 65 + 77 0 - Left % + Engine + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - 100 - - - 50 - - - Qt::Vertical + + + + Select output channel for the engine - - - - 50 - - - - - - - - - + + - 50 + 60 0 - Right % + Aileron 1 - - - - 100 - - - 50 - - - Qt::Vertical + + + + Select output channel for the first aileron (or elevon) - - + + + + false + + + + 60 + 0 + + - 50 + Aileron 2 + + + + + + + false + + + Select output channel for the second aileron (or elevon) + + + + + + + + 0 + 0 + + + + Motor + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + Select output channel for the first motor + + + + + + + false + + + + 47 + 0 + + + + Motor 2 + + + + + + + false + + + Select output channel for a second motor + + + + + + + Front Steering + + + + + + + Select output channel for the first steering actuator + + + + + + + Rear Steering + + + + + + + Select output channel for a second steering actuator - - - - - - - - - - - 0 - 100 - - - - Front throttle curve - - - - - - - 0 - 0 - - - - - 0 - 0 - - - - - 500 - 500 - - - - - 10 - 10 - - - - - 300 - 350 - - - - - - - - - - - - 0 - 0 - - - - Rear throttle curve - - - - - - - 0 - 0 - - - - - 0 - 0 - - - - - 500 - 500 - - - - - 10 - 10 - - - - - 300 - 350 - - - - - - + + + + + + true + + + + 0 + 0 + + + + Differential Steering Mix + + + + + + + + + + + 65 + 0 + + + + Left % + + + + + + + 100 + + + 50 + + + Qt::Vertical + + + + + + + 50 + + + + + + + + + + + + 50 + 0 + + + + Right % + + + + + + + 100 + + + 50 + + + Qt::Vertical + + + + + + + 50 + + + + + + + + + + + + + + + 0 + 100 + + + + Front throttle curve + + + + + + + 0 + 0 + + + + + 0 + 0 + + + + + 500 + 500 + + + + + 10 + 10 + + + + + 300 + 350 + + + + + + + + + + + + 0 + 0 + + + + Rear throttle curve + + + + + + + 0 + 0 + + + + + 0 + 0 + + + + + 500 + 500 + + + + + 10 + 10 + + + + + 300 + 350 + + + + + + + + + + + + + Qt::Vertical + + + + 20 + 40 + + + + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + 75 + true + + + + Mixer OK + + + + + + - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - - 75 - true - - - - Mixer OK - - - - - - + + @@ -2813,8 +2832,8 @@ margin:1px; 0 0 - 935 - 537 + 287 + 326 @@ -3202,7 +3221,7 @@ p, li { white-space: pre-wrap; } <tr> <td style="border: none;"> <p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:14pt; font-weight:600; color:#ff0000;">SETTING UP FEED FORWARD REQUIRES CAUTION</span></p> -<p style="-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:'Ubuntu'; font-size:11pt;"></p> +<p style="-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:'Ubuntu'; font-size:11pt;"><br /></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:11pt;"><br /></span></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Beware: Feed Forward Tuning will launch all engines around mid-throttle, you have been warned!</p> <p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">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.</p></td></tr></table></body></html> From d42f4089ed9ec8349c72302ae96bba55d45e9e35 Mon Sep 17 00:00:00 2001 From: David Ankers Date: Fri, 5 Oct 2012 15:26:45 +1000 Subject: [PATCH 091/105] Updated tab Icons from Steve, match the welcome screen icons --- .../src/plugins/coreplugin/images/ah.png | Bin 991 -> 1821 bytes .../src/plugins/coreplugin/images/cog.png | Bin 512 -> 1336 bytes .../src/plugins/coreplugin/images/config.png | Bin 610 -> 1213 bytes .../src/plugins/coreplugin/images/joystick.png | Bin 559 -> 1531 bytes .../src/plugins/coreplugin/images/scopes.png | Bin 710 -> 1188 bytes 5 files changed, 0 insertions(+), 0 deletions(-) diff --git a/ground/openpilotgcs/src/plugins/coreplugin/images/ah.png b/ground/openpilotgcs/src/plugins/coreplugin/images/ah.png index a0be19bed015964ab0e5b1f164eb27a5100d3e9b..646f24ad6e7e474bdaeb41697b7fcbf3e9224d4d 100644 GIT binary patch literal 1821 zcmbVNc~BE)6i)#QY5^4wq;%L>)S{K_5t5LFfJruihyesFhy`4dg~X6-+$<0jR1T}O zDArp?6hskgrJjtS2&h!F9R=y&(IQqx8I*Dio~YOjg6$uUe{^T}JKpzxzxTd(%;txO z204y%8^_^r9F@U%1UpZ#eh#0qqsPEof}N%_@)#zPN@CIpn&e0{R3Zr|4MZ{-K@ysb zEGK>j>p!D=~ZaR-k(a8`Z5{axFDC*5>c$+hf3}Nv$nmtDuaMG-%btXnf z838LJkw~R7VvzOp-4zTbmFhjQ(L53;He`^6FhK|xh71Ply@s{TOa%F_8z0m*M`f5u zD1tOoskEBSN0R3#n2p`X4OtagZ?G_0$0mhH!6|jBfiyBoTnw@&T#ZhH!H6##MWGKY zL}7t1f=F?NM1~3#C@SQMd?n~8$A_?dUt9q5dA_h*BtsB6Dv|L8a;XBv5vd#%z|v8y z(r9J~qnaGGt7GksV1*yWVltW}7>bUfsFcwP2-i{!W!6$AKo-g8B7lle>x@>3H9_z0 zi<7i2jnpV;$^Z;U7}I^g1DKCUVL4wSVn;cOAQFTp$8otxB0;4xJ}d-Bu$uo9HHdWv zvX;kx%4Jl<)}VFyzWCYA`}QG?Y|qeab5x^e%xuqvC~--Ycz!&; zE8RVsmJ?lWAYy3VUth_cwI2@|a}YW{m5T8U;13?SSK4GRY1pw;;&HAxYf^K-WYxUp zSi|vyd2Y?$?$18ZRT+13M|XG6H`jJ`>}reccXvwOxv$r+ef7)6Cr^Bg-cru&@v%+5 z!SYuNCw#p*&uzxW?K8-M3ynovqZ0B8D9No_kImX+iM_$6W3!H=7<={3e{N{Jnp=K! z?S`=@EB%o($C*=`h~7cP5dYHsz#O~ZavrU8+;_b?5-Rms&JhW7*MGHePAI=lZ~p1c zplxesXZ+s-6?Z*u%eLU(<;|<9tLe-yNM1cXAjdh$i9nq*vyR&c+Z;=~#&>&|*R;Lr zixCy}hftwAhuSY!iTd0Z@*B(UJUFtg2#V2{u0xD*^$OmF^c{lizN8AQe(%K3)fu+6 z{oo#bV5w!u3v4M$jQu_H!u5j18}56W8u)W7PKWn8_%FHIaiz^TZS_OQdEcI+#g8t# zb|=XF0yjRav~R8*>X=*l!*kQ+8W&=P1E{S_`+mJm&bScuZDFy}EeLvu_Y@`*QOU+-=ijJJCR zC+?;fYYi>*gN)CPu5u`?vYCU`xCGtGj(5})f$=R9_1m#oHp!EZK1nlOoVfsgbuO;P z_s+C<#a1`FLsJDc9KSU2nykXWwwW>2eJP_F8>qM*Np(X2YQ+ zcb{vV%BJ4GTeHP$a?qyvPpj)P@={tG6feUVeB4&2!#7`!oe~R(dCJqbgLd!To&V_9 zri?K<+2gCBbaB+-dy~$eD(UR8DeMBbNtCJFYF*hS^mW6|4rg6^zo2k@Ux(Y~#l0D8 z0rbS9p0MD+Mfaw!&41hZOHWfszfbZ@kLaoS0NqlGy3G-(`NY^m<~= b(?X6d2fME+@OW$QYyDv<<)L_mbZO2%Vn@T| delta 967 zcmV;&133Jh4&MhMiBL{Q4GJ0x0000DNk~Le0000I0000I2nGNE09MY9SCJtoe}PFv zK~#9!Y*gQG6jc=d?wva`%Wk{fZgo2Z+HI+Ax3riL5=9dbNTi7m&_wDJ8YxkDsPV_E zn&>}(iLB4WNO(dL5)*^b@IV69m&Tg5>C$zTVkzAvZFaZ2^W)CF+?j4$DLu)Z%$#%2 zcfRkOvrCqimXOV6;c*TE3Bhe>e|ppDib%cp-xGE?(rl%m%&Qe2TM1{vujGFCc>Keg z{R1!K|3>opJjTYxVB0l7ioy8aqnFxxM^46C_dz!z$|oB)30%iUeYF6seD~Jrj z(_J%}%znh*^TXGE ztKGS9;o|Z6`?;_VqpFe+JkxpTgCDKTNJ4m3m8c>bg&(llBBZLShvYCB(0uTnq^f^o zX8NzgsZ{$MTU{yAw)Bz9T|=i5QYd*w&?yoorY#)?BOy?wCa_rIpy8)NCpGjP8ckfi z`FXbR&)>sZ|G>~&yyeIjf30m681X|%x=PkH0>=vgd{pZKE+^2GFN_6uG*weQ%vjsL zRCMKc_V1E=ZqI>!r9@?ELAiAXfuaB`88?)4iBef8fQ{&edDxTAV0muxeYWPsUTK5^D*;?CR<|yKT%E z1Pax}GAq;ML|qg|wo_MJRCA*+U+9GJIVx*)*C@3G#(XlfA9o(CLWw1r&!mJ>^g9TyOUjpC^Q0{}exn~n2?&))z5002ovPDHLkV1mO0=bHck diff --git a/ground/openpilotgcs/src/plugins/coreplugin/images/cog.png b/ground/openpilotgcs/src/plugins/coreplugin/images/cog.png index 67de2c6ccbeac17742f56cf7391e72b2bf5033ba..97b835c58977aa871c1f4057b8f1dd193d3a95b9 100644 GIT binary patch literal 1336 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`k|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*9U+m@_g%B1$5BeXNr6bM+EIYV;~{3xK*A7;Nk-3KEmEQ%e+* zQqwc@Y?a>c-mj#PnPRIHZt82`Ti~3Uk?B!Ylp0*+7m{3+ootz+WN)WnQ(*-(AUCxn zQK2F?C$HG5!d3}vt`(3C64qBz04piUwpD^SD#ABF!8yMuRl!uxSU1_g&``n5OwZ87 z)XdCKN5ROz&`93^h|F{iO{`4Ktc=VRpg;*|TTx1yRgjAt)Gi>;Rw<*Tq`*pFzr4I$ zuiRKKzbIYb(9+TpWQLKEE>MMTab;dfVufyAu`kBtHuNWFoz#!AFNG#Ad)HBe}%?0@jth%@)C>7xhtg4GcDhpEegHnt0 zON)|$@sXws(+mtd{1$-}0$pR}Uz7=ql*AmD{N&Qy)VvZ;7h5Huj9yA+ij{$(1uzuN zO$^M949qMH4V_%v9G#8K-HeRPjV&!4jbLVA)9Y;E>}YA`W@g}O>11f=YUE_$Z0P80 z;OJuRY++$+=?2s5nO9trn3tRivo{lHFI2B7UcFY%MX8A;`9&f5`8lu@5Rj2yl3$#W zU!dR|Y^rCd;G3A7nFkU9MG(ZlE~!PCWvMA{Mftf3;1IUT#Nq-s7ehw_S5rqzCj(bk zBSS++Lt|GL7gtM1MSXIghhbXrhYXyJOc~awf1!NAA!*+9n%$ zL*r=Pq*=FLOK+YyI;)icGke(9F1jW{Ojw4XI4nNfX( zn}n^z_4@b|ffX{^_Msoz#B7qe)>|BsY}?T6xn&`j;FSf8j=};i`cfYsa>^gsv&2oa z&vyUeG*0CgPKIHk&oY81@A}A)JR`6*?akv;AqD-sQ<5Y6BVCqXlfQnfF6&Y6JN^ZC zgFM}I*InIZS(5E^#`tEBZp w!EuXK6TC`aGcCTg*lBZ2{Id0*w=*y^^csco`~91+7F3pby85}Sb4q9e0B2v+e*gdg delta 462 zcmV;<0Wto#3V;NV85jfr006c6H|hWY00d`2O+f$vugEtAis_LdCw~EwNklJZt!z7w_pH~wdQ;R)Gh%BbQFCx+Nm!4SuS-vkr`vhhrX zM*>w%e+v~?m@q~ImPAgtLkR_3U<2F8LP3W5=LJ*ZN|S5p#sf4YFr$p~Q~Z*0Ngxf2 zjk#J#<7EAlhzlrV53~GF&pIzcCN_lz9@05UeQ3|IN4G7jAjsg+mp2{jJG)tbC za!Ar^*y#WL=B_`1S40qM3WiMTK4Z8UA^mB%{nj3W;Ss%$jX6S0C5B$s>F_X@-WF~- z)`)Y^K4}ZqlPid!tKMnrw!57FuK8;|uSaT^-2cw~4GD-{2=bZkh5!Hn07*qoM6N<$ Ef~jE8!vFvP diff --git a/ground/openpilotgcs/src/plugins/coreplugin/images/config.png b/ground/openpilotgcs/src/plugins/coreplugin/images/config.png index 5c8213fef5ab969f03189d4367e32e597e38bd7f..650a00365476a3cc3e1d6b5b486407d3d851f882 100644 GIT binary patch literal 1213 zcmbVMO>Em#9Cuo%){Y9d6tOZ19$qvKYivKKc4Dh(>(~wpA|*;AtpZix*e{LM`lGhn zxV>~Mo0JJ5c4RjyZAhSLXagZln+Do#+J|=Fz{Uj?PB7L32PPpgp4+5wsCK}z{oecg z|NH&FeY!mLMt|SSeFQ=D7munHypr*=uLr+h{o{#_m*G&G38&q9*wlSQ$fjFEplIuJ zsDgBJW$`8&BZ%&XRhdUdL5tj-&vNllD{u}H!MHVSnR*$Yk}MLBAlSHk;P%urxkC7jPu zJ5J4%%0O{_1b8}~GFS+KAkc7>7X&y0I2LjYi*F$XMWFGlNhGiY|_m%?fP>J6h$%S;J6glNChiSs7EO$IMiWKQDFF%7h0|ZVn)5@E`>P? zd%6>X?UhQq#7@vo6iyiv=^g`Vma*+Pu5Ilgte}70*i$>Gu6T&4puk=74P1}r4o#X?pTAZAsvLI+!Pf>3u1)Uj(}yKQXxsaQ$zksi8! z)pZv-9Z+t#p&K+@4=B?-4M9maEGL%41=@*MMZUF+%!2RQU^~N-wTA}<70Rr}%VM6@ zG!8-;rZrX7L|NwY3eRS!HrD(Oxzy-X_t-&_h7u;ZGL>%9UtW2nep*(^p89{ ziwEnsqAFLT2es$=`f6Y>+qKA$x4JI9K)%=0dzt+F{(;t?^8MG?JLeAE>pw5wo&7j@ z@s4^fv0j$CTW2>Odf*|@uf1UW@#a|XoZ6w)PzVR7ZKhBdcB`zh&wG$82a{4y0AB?Xn zuMBP8ecaVM^wGN;4{Kojc(VE7nffP*{JrS+52U3`_0j9F_hj#{r-sXauYpG=FRu;E ze^*Ri-%oDIZ+5H0ME4hy*ND~@u}HiV{qzix=poJ*j~x4EfIA%jP>R}=dNKe0`ah4K BgX{nR delta 550 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 Date: Fri, 5 Oct 2012 08:16:26 +0200 Subject: [PATCH 092/105] Added first icons and started to fix with icon states. --- .../src/libs/utils/mylistwidget.h | 23 ++++++++++- .../src/plugins/config/configgadget.qrc | 8 ++++ .../src/plugins/config/configgadgetwidget.cpp | 36 ++++++++++++++---- .../plugins/config/images/hardware_normal.png | Bin 0 -> 26388 bytes .../config/images/hardware_selected.png | Bin 0 -> 24226 bytes .../plugins/config/images/input_normal.png | Bin 0 -> 34787 bytes .../plugins/config/images/input_selected.png | Bin 0 -> 37214 bytes .../plugins/config/images/output_normal.png | Bin 0 -> 29360 bytes .../plugins/config/images/output_selected.png | Bin 0 -> 29406 bytes .../plugins/config/images/vehicle_normal.png | Bin 0 -> 28029 bytes .../config/images/vehicle_selected.png | Bin 0 -> 32908 bytes 11 files changed, 59 insertions(+), 8 deletions(-) create mode 100644 ground/openpilotgcs/src/plugins/config/images/hardware_normal.png create mode 100644 ground/openpilotgcs/src/plugins/config/images/hardware_selected.png create mode 100644 ground/openpilotgcs/src/plugins/config/images/input_normal.png create mode 100644 ground/openpilotgcs/src/plugins/config/images/input_selected.png create mode 100644 ground/openpilotgcs/src/plugins/config/images/output_normal.png create mode 100644 ground/openpilotgcs/src/plugins/config/images/output_selected.png create mode 100644 ground/openpilotgcs/src/plugins/config/images/vehicle_normal.png create mode 100644 ground/openpilotgcs/src/plugins/config/images/vehicle_selected.png diff --git a/ground/openpilotgcs/src/libs/utils/mylistwidget.h b/ground/openpilotgcs/src/libs/utils/mylistwidget.h index 40059927e..59ac41b37 100644 --- a/ground/openpilotgcs/src/libs/utils/mylistwidget.h +++ b/ground/openpilotgcs/src/libs/utils/mylistwidget.h @@ -31,8 +31,29 @@ #include "utils_global.h" +#include #include +class ListWidgetItemDelegate : public QStyledItemDelegate +{ +public: + ListWidgetItemDelegate(QObject* parent = 0) : QStyledItemDelegate(parent) {} + + void paint(QPainter* painter, const QStyleOptionViewItem& option, const QModelIndex& index) const + { + Q_ASSERT(index.isValid()); + + QStyleOptionViewItemV4 opt = option; + initStyleOption(&opt, index); + + if (opt.state & QStyle::State_MouseOver) { + opt.icon = opt.icon.pixmap(opt.decorationSize, QIcon::Normal, QIcon::On); + opt.state &= ~QStyle::State_Selected; + } + QStyledItemDelegate::paint(painter, opt, index); + } +}; + /* * MyListWidget is a plain QListWidget but with the added option * to place the icon above the label in ListMode. This is achieved @@ -42,7 +63,7 @@ class QTCREATOR_UTILS_EXPORT MyListWidget : public QListWidget { Q_OBJECT public: - MyListWidget(QWidget *parent) : QListWidget(parent), m_iconAbove(false) { } + MyListWidget(QWidget *parent) : QListWidget(parent), m_iconAbove(false) { setItemDelegate(new ListWidgetItemDelegate());} void setIconAbove(bool iconAbove) { m_iconAbove = iconAbove; } protected: QStyleOptionViewItem viewOptions() const; diff --git a/ground/openpilotgcs/src/plugins/config/configgadget.qrc b/ground/openpilotgcs/src/plugins/config/configgadget.qrc index ffdb93e66..2393d0d55 100644 --- a/ground/openpilotgcs/src/plugins/config/configgadget.qrc +++ b/ground/openpilotgcs/src/plugins/config/configgadget.qrc @@ -19,5 +19,13 @@ images/TX2.svg images/camera.png images/txpid.png + images/output_selected.png + images/output_normal.png + images/input_selected.png + images/input_normal.png + images/hardware_normal.png + images/hardware_selected.png + images/vehicle_normal.png + images/vehicle_selected.png diff --git a/ground/openpilotgcs/src/plugins/config/configgadgetwidget.cpp b/ground/openpilotgcs/src/plugins/config/configgadgetwidget.cpp index 5a94ae5b1..5da9bd83d 100644 --- a/ground/openpilotgcs/src/plugins/config/configgadgetwidget.cpp +++ b/ground/openpilotgcs/src/plugins/config/configgadgetwidget.cpp @@ -68,16 +68,28 @@ ConfigGadgetWidget::ConfigGadgetWidget(QWidget *parent) : QWidget(parent) QWidget *qwd; qwd = new DefaultHwSettingsWidget(this); - ftw->insertTab(ConfigGadgetWidget::hardware, qwd, QIcon(":/configgadget/images/hw_config.png"), QString("HW Settings")); + QIcon *icon = new QIcon(); + icon->addFile(":/configgadget/images/hardware_normal.png", QSize(), QIcon::Normal, QIcon::Off); + icon->addFile(":/configgadget/images/hardware_selected.png", QSize(), QIcon::Normal, QIcon::On); + ftw->insertTab(ConfigGadgetWidget::hardware, qwd, *icon, QString("Hardware")); + icon = new QIcon(); + icon->addFile(":/configgadget/images/vehicle_normal.png", QSize(), QIcon::Normal, QIcon::Off); + icon->addFile(":/configgadget/images/vehicle_selected.png", QSize(), QIcon::Normal, QIcon::On); qwd = new ConfigVehicleTypeWidget(this); - ftw->insertTab(ConfigGadgetWidget::aircraft, qwd, QIcon(":/configgadget/images/Airframe.png"), QString("Aircraft")); + ftw->insertTab(ConfigGadgetWidget::aircraft, qwd, *icon, QString("Vehicle")); + icon = new QIcon(); + icon->addFile(":/configgadget/images/input_normal.png", QSize(), QIcon::Normal, QIcon::Off); + icon->addFile(":/configgadget/images/input_selected.png", QSize(), QIcon::Normal, QIcon::On); qwd = new ConfigInputWidget(this); - ftw->insertTab(ConfigGadgetWidget::input, qwd, QIcon(":/configgadget/images/Transmitter.png"), QString("Input")); + ftw->insertTab(ConfigGadgetWidget::input, qwd, *icon, QString("Input")); + icon = new QIcon(); + icon->addFile(":/configgadget/images/output_normal.png", QSize(), QIcon::Normal, QIcon::Off); + icon->addFile(":/configgadget/images/output_selected.png", QSize(), QIcon::Normal, QIcon::On); qwd = new ConfigOutputWidget(this); - ftw->insertTab(ConfigGadgetWidget::output, qwd, QIcon(":/configgadget/images/Servo.png"), QString("Output")); + ftw->insertTab(ConfigGadgetWidget::output, qwd, *icon, QString("Output")); qwd = new DefaultAttitudeWidget(this); ftw->insertTab(ConfigGadgetWidget::sensors, qwd, QIcon(":/configgadget/images/AHRS-v1.3.png"), QString("INS")); @@ -152,7 +164,11 @@ void ConfigGadgetWidget::onAutopilotDisconnect() { ftw->insertTab(ConfigGadgetWidget::sensors, qwd, QIcon(":/configgadget/images/AHRS-v1.3.png"), QString("INS")); ftw->removeTab(ConfigGadgetWidget::hardware); qwd = new DefaultHwSettingsWidget(this); - ftw->insertTab(ConfigGadgetWidget::hardware, qwd, QIcon(":/configgadget/images/hw_config.png"), QString("HW Settings")); + + QIcon *icon = new QIcon(); + icon->addFile(":/configgadget/images/hardware_normal.png", QSize(), QIcon::Normal, QIcon::Off); + icon->addFile(":/configgadget/images/hardware_selected.png", QSize(), QIcon::Normal, QIcon::On); + ftw->insertTab(ConfigGadgetWidget::hardware, qwd, *icon, QString("Hardware")); ftw->setCurrentIndex(ConfigGadgetWidget::hardware); emit autopilotDisconnected(); @@ -176,7 +192,10 @@ void ConfigGadgetWidget::onAutopilotConnect() { ftw->insertTab(ConfigGadgetWidget::sensors, qwd, QIcon(":/configgadget/images/AHRS-v1.3.png"), QString("Attitude")); ftw->removeTab(ConfigGadgetWidget::hardware); qwd = new ConfigCCHWWidget(this); - ftw->insertTab(ConfigGadgetWidget::hardware, qwd, QIcon(":/configgadget/images/hw_config.png"), QString("HW Settings")); + QIcon *icon = new QIcon(); + icon->addFile(":/configgadget/images/hardware_normal.png", QSize(), QIcon::Normal, QIcon::Off); + icon->addFile(":/configgadget/images/hardware_selected.png", QSize(), QIcon::Normal, QIcon::On); + ftw->insertTab(ConfigGadgetWidget::hardware, qwd, *icon, QString("HW Settings")); ftw->setCurrentIndex(ConfigGadgetWidget::hardware); } else if ((board & 0xff00) == 256 ) { // Mainboard family @@ -199,7 +218,10 @@ void ConfigGadgetWidget::onAutopilotConnect() { ftw->insertTab(ConfigGadgetWidget::sensors, qwd, QIcon(":/configgadget/images/AHRS-v1.3.png"), QString("Revo")); ftw->removeTab(ConfigGadgetWidget::hardware); qwd = new ConfigProHWWidget(this); - ftw->insertTab(ConfigGadgetWidget::hardware, qwd, QIcon(":/configgadget/images/hw_config.png"), QString("HW Settings")); + QIcon *icon = new QIcon(); + icon->addFile(":/configgadget/images/hardware_normal.png", QSize(), QIcon::Normal, QIcon::Off); + icon->addFile(":/configgadget/images/hardware_selected.png", QSize(), QIcon::Normal, QIcon::On); + ftw->insertTab(ConfigGadgetWidget::hardware, qwd, *icon, QString("Hardware")); ftw->setCurrentIndex(ConfigGadgetWidget::hardware); } } diff --git a/ground/openpilotgcs/src/plugins/config/images/hardware_normal.png b/ground/openpilotgcs/src/plugins/config/images/hardware_normal.png new file mode 100644 index 0000000000000000000000000000000000000000..077d9712e48756690c38780443fa5f15d54b56fc GIT binary patch literal 26388 zcmYg%1yoes7w?@Jx=T_*KtM#gyFn!t1Vp-}k&+w`5Tryz1f(SdDUq%r1QaQe?v`#C z`kndy@2&M%xQ21&-Z}T&z4tHno+uqHHDUsK0tkYL@2e|6f*?5f6At0wfQLihzh~e9 z-%Z`<1q2aNV*bIP)K9b!M4;`Uq@<%`@9OFL!rs-5<-U>-km(;e9z$7Jka>@lIQrUKxUr>F5-H7-anZ z)(u!z0>naT6R8Z@OF>`zpS)3l4EZ4{+lL(z(AYhQ|Gt5(I#gZ*q58-Ozd?9J5Wj9@ z_#Ft#A2RP|WAlZ=QXneTeFN#eyQO5S++e3tzDd`yOQ?hx=FpsckCg9A6r-l$~1ts5U-URoM^ z(4lB-@yj6a%C5}}WpL?q8YF#jax~Yxz#bxK5~7BMo@@JksF8QG{~dmq<fF z^#$V)YsY=dIzw)%MO_N_IOWus1HnAjD8+Yoe%$_ZZM`tdbB>Um6@kj1%fkETsf za#jd;xdOvsD=iNS=VmMRR4d_yxoDUodqEloq!pB4L(q4B6uFXi~z_w_4S)D5BX} zenwL1vOY`@Q5SghMvp~bopE2r11|CUnQDE4R5v6TdJ)m6Ch$Jwo36}XqAI1jLNWR< z)f~bBYfpjHcC2ydMKnYmS@l==U{QpqpzuYpd=yzMm=x3vH4L@J)C*Z|vI~<>;EUlS!gSj> zSrZE%e&?tsKkcBk6cl)EsLsPSLJ?2NN9G@?)FH-B5v3%^S@#xxzv8prABsP!e_S51 zt?_(G6IQ2ZOZ+)u?f4B>;yn+`-R|(E^riMCp(Tc;Tl>ZY>6Y^DpV5yOxE}p_{(x?o zY*~02$L6D;f_`r5qv^tIJ#vxwr-~)n)sM<_Ul&ped!(b*F z6WI8;nnIf5s&B|$%^h$f;TJ*DgCve525vsRFGcx9Gev~@2l_pF@n1|I2bQYp3q4-^ zg8%nJv3^my&cV@~D)z$T5#0yFuBf#id~TV@9(nGDE|)VCH4h>eoL--={p)h1In-_rEPY%{SVvZgdHMDq)mosQ=WYQne(#Xn_0Q@rHFV|6V>pwg)y~y{7Iv02b~Qgr+qV;&5(Dc4V=rZJiC>SC6f-_$40`e1 zgG%y=b^=X7_|(gV*UcawR)KS$|lm1%8Tg_C95qT3GJuctD93uoTRFcNw((B7>yr@K5T zN0^z!?>PH4NLxue#I9X_U6 zls>oP2wt`^w%M`r4T=s%jwwCkX42YM=hpOlx0%o=@{;|BP#({6T^Q$=w~ZRa8q;Z# z8PuuXEY5;5l1&1y-X*+sS1h`vnOJSNZnt9V-SgEZ{M*$Jm*^TkrX<{-j+Jk}VjJBf zs8-DXr}va=lpFV(osEHQOK;RKi4VmYcYC*fSN@uOEB0w8^LmS-jbi>?bza0ngL{mI zD@|XYOMH`de>q98cmw-x#1ova(zS1@xt)i#i?-;W~(gDBGMUTZ$!N*rJAHkz7ageHRZd^@Y?lPOUl&y?_Y{L>a6>1 z|Jbgr%-qW`Cizg5ypl}fLOee4op|=i_pPI2l}WzjUarZ8SJg^&xh>MQjWz{8`+BA1 z^giny>YeF{ZvUCCvKU3X3~n>{Hy#Ub4o@04o?OcQY@XDI>1z(#4%?jHKd(HID~&2z zLw`7THYw3^cHink{6SpevXNAe*8Lr3{3E0HD1PMbh8js1bMsaDj?X<}QDXhrPn`>F zZpts0)=uzePnd`$C%j|)zs}ul-wgaAbYP??P>o zne>yew9(542YNppCe}iS67BZ;W73n-1A}-^r_3jFs{L23`evV#y6)7IdCvb)xsG0y zYLx1GwqNVH|7~)a(xBELwM^2?dEIke`YLfqyQ|?-LuzT=Gsn7ZzosgG+mkhh46(lH z!={&e)Yl`!84@znO$UCiCqGV(W~rxxJUB1=dK$)kIJZk0wHwV2<+l{Zm8M@0%Nbuy zjqOYYKS%jw9SlyXo#2GO>c2`jiYHaVj!%j2i6D;H$Pky6kXVrOxLms^Q0lkt=g6SB z%DL((rJ?2vLJx0@_6>d<%ue1e{a=z8-Gv&j$ zlRHbQy%fL_%yn&lT5M3-R&b!b<4gB;cDYR_c#5A;|AG1R-BR(CIaJ zT!SDleh6AOhakz15Jcnp&g_RO1U-|xudJZwJF(gHGKPILaP>5{yZgN8e7#7vC~cbk zhcN|y6xHqay8|O*LZ-Cuh^^S$Ben#1e$!hqI68KrJe*Nhv{Dm4#)5k-ZQ^ZoIhx)@ zyd#e3{IFD^-u7ADJCP!7)7Gc5c--V9B`GDzKzWlnNtZDxT|Y_f=8j50i+oN|{K>+P zp2(BarrGnR*~c0~SSq?yD!TLUe(`2;y~*LChrlx`l|ksgXK!$z|6UGxJECo&qU*NM zfxjkY;o=e(L8hXshvx;JD_MGPoxiA2xO_U$GNm+ET78-x0S?j=w;p48K6cHkuBuo_ zgcL>9v^O1{JYkcULCIrI4ToQTnB9_#6}|4VPj|rm!GaeC8-NE^Ezjsp?xYeQK8U`R z#Wc@|dF#^aYerGsln?>>y(K&&&NqTRWRLp>SSY9V!*< zX)=E3W3`+y(pC7n+4kIj`nch;z(NR5kB%5NON^v33#cf*mXnd0?sG1iKruPCO@{^& z$^W&*+dP*L7e{BSvkMYHZ*o41Xg1V1;Em<&re|}#dH2XixpS>v)|IxiWThpAfq`Lm z(5uN7(R@^ilQnZudGw`50EgaN$=t=Iluc>wCuino+$^=-n!f!ij(=8LLHR>#l;cjv zW~!_S=QmX7^z}uGxgG@g`O&X=(nDnNUGD3D?=<_~ce~P0gvd zPMAyg_VAW}LP?pmy{nwF21lYgN1}f)6D=)jVZm~#GnS#wxW;9f*QDNazb%|lySKle zA;N-3gg(}QAiT|>XLcgNnMks7GJIEGr^=do?Md z-+5#mF4mix3`K9$z9gpG@UAzd+vu?t?6$20zqIu9ZU6ppJ;uX5BAFPys6}txk>IY**_ortXXMDkscC7PmZFkG|^qobJ`;FnV&v= zx|ju9*46h(g7SKaQ!Yw7aQ(5pFukFP$&dYgK?`kiG?wfJ$8N(T?xePk4lE8%P61)z zFay(<*t1v1HG6*^@}<<5wp2DXUD|~!&cl)E`Q+tRLRimhg`SvalFK7dw$M%fjT+no zqsmKRWLQzrX;f5Hfr#e$z+-KhyvvLJYiSM+4!469&8b>^iX%^Wu|!zS;CKz$hK+TO1z+v9{; zzx%ng3F3#j@AvQDS0k>M)LQA1;mlXNuep*Qu+yo`o%_nbGf||3yQD>GL&8%p`enLT z573oz=R%E#e;#fOKR;r)d-razg%H*+TwlaM@hz4rnE9*V;-1;iU>texfPjnHPRoi+ z^bfO(AHVHn59prNd*Vk&N3+wb%;7qD^9k+R6p0Zby(!VSchY(nl$g)RFxSQxv=?n? zWc1Q1DCnvNMwP0HTqZB9@QKZEbiryjxRK^RjDja1b{$=*(g1;AP`M zpVWX?x@Rt409ZEXZur*?u;Z9KxI)KY)0VYdoy8s<9nH>;kJmjH!rGicW-P)#3qw!m zTmv^9FD0NltFE|9Im`yc2hS6lp^i32D;gU$e(5$NGB-}Jf(++0=1xqtLBy)bo#{$n zUmT!&S}uBGpI4n-{QC9lI(qtc$QCtQRzWSaMubGnWp>k0`mw1X5Wv%gE^H-s@oW>#>Q6v&p=?ylYC-lOal- z%`UvRzaVkcmTRjVA&Z!>@L}Rl>-`rkR~s#|mwWNSH(i@gIbNhvf}Hv&f(&BC_$`H8|Zt~aSP&#jg3t%Q=MJ*vZ3X?!OCYg zP;BPqD&wQK<(#|t0S@c7VX`5?Z#z3X`GtgD@deBi8a{g#@Y2F!p3pf4`KFiB?KAm6 z8Eo!n$_Xw?Zt%hyw&YParA8UmVV4nfwpQ`DK#Tn97Sw!6dFbfxrCC!p^t6S6KjDiD z-8xmBY{9z6ew}A=Mqb|SXH9-Lg7-OtL%~|RK;mA>AYq%^-aT{Pss4@*Q+-+nOHr@^ zoU4&dumQOa6V{?>mu9lpr~UD9ad8VxCo^of@B`px@^d|Uav{u2b3K;gPEJm9TQ#$t z%onZ9=Jxjgy1>shqxY+sp|PWgE_eT^XI_(dZqtx>$C0bbIcZ#ceDEGk&^%3?%zigp zt@|R5!~MC3Ud}akKftc;&}6+L36MMcqQhk#6vU)0cPadBd{dj0loUjIv&5}xlG^BT zBAA2>6ei6?ob(|@C`cqr$`mgpS6^LvN4+``jn3-+6;>g+bdRjTc?0q$M z1(W~j@UXs4$qf)fAP{mHKdm#+fWpW;YxGS}PJ+-Db-Zkcmt~pveGHSGjt(Dn zRXL9CCd!>A`fileXwgUP9k#W#?H~rynEfN=p_jUw`KiG3&rc!}|>7dVTE5mf0Wd>*ltb zSes7OpDMod11`RW?e+p6wS5*pX?tDw^XJd&%Ze_hG)ezsp6cpqb>miZOx^o7!k8cF z2RGB2s~O4OkSu*x7ixB1Wv0ZPbcVgzi7-@^zsZY(C22Yj)4i@(>9wYa>iFp?dAVD5 z@vCfZqRR2JYozT7=H9M6l>%wg16_D?QxSap^r>UoXI4f;R`$xZBG}QKiWeKJei>#@ zd{HTQwHy%Ao+F9-4stX(RPLJl0@zD**Ylg z>qBi$0E*Y7Y2;)+J%n?GumLB%jZL{3PaEsUU;bWSVCu+dnHgsue!wjdqRqjxu*B^F z;vHMLpE_LtVrBQDw87n&Wr$Mlbn~ZUS&5)Q5tGV0Hea(N^>~xdyO)-h(7%5ZmIft&$kN=+6gdZl*IFfu0=%M)Sga$$3y3Ov2<~PO{b$U6)(j4mUbMBrgEqT@h(K|=&R@e;HxK4P zzQsX~2%g7Vjb2`tW%{k(QN02?*9^_jY`0=cRmBDubu{{)n%o;-=_{`7DPnUm=*+T~ z?F-VmH5ird5d3)1{%{+YIe=_qVlGk450w#Q4x)l2ECT%eyNf4NFXEq+je?q!iAw$s${G7E z{sqflizG9^H@oDn+#643{N*t8#bbz2r>*q$^n$Y{I|9W7eT3es=RL~280(Ua*xGUi z$I~233XXz+{)5$gfpRSvA2(9Y9WMtYYwTa&cJ*!DZ5k{;{B4T2>|(J=p`@5HBa1(<93g zIWTaayv+Q)dJvx}@j`Wad>o%@w+`2=*->CE?tIJUPx{<2<#CowL648IT7_Xp-HTN~ zsO6ljiUT>3*9yq$2xT{aTzQ@p4cXIH(jYQH2I$j#&r3!lJG9_%kBE;SLFfoId5^Y+ zhWyZXhs}QMtk#e%q!vANoOo>sEu`jaf|tn9p{B{01zXCKp*>)k58>&_@jom#<_%LW!6_D8@gI_jmN zsd)Ut*Xv2LWr3o~qh zSRvM;A`;t5BMhO^yTp>cr3nr*O^#R1)uFl_F}ZQ=jXqz8LC1VBdnl)<$o9{ga0p-P z(SKBiw6BSLq?Mm`(}uWRUYK5=H9`HssF!0-iE!}QI;?!OY84xtggU+p1A(b$fKZG% z=SpRk->4%cxogauoX~4a9^cjV3+RekA)KrNdHI455D!h5<)xAC`^ciAW|Es&vL|3Y z;C5t$?$Q$T%$l5PaJ&Ng%`)wBl5VpYSH7ZE?$1|)K`+MCe03pUSz zv*6JXB-q+4GsiHLU0Cy|*NcayYIR0*-cb z?uvoLh#>vX$xpv;U{pv*zaO3>e0JV$aFhi#g2NTm7=zU;ee{AfsC-gYhZ4HP3Az`34G4%g$2yz+wfCOy^VL3Cf)GU#s52?v8 zA9L^SuFMI9`4a|~`5jBv?%x%{>;VFaBDI~4830Ah5uS#UtN&_j)$kSv!rTw6X7pPQ zOkq(nsCInl_}{@H%yC8%7Mia@MvqC+%?!}gD@*{+!)2SWglT=ZW_qf};au@B)RF)7 z#wyc=c};8<$F9mYqVzgi>i!3B1{Ms|VFmaRv{?z42cVIB8;_8}lMsHu>4wc8Mvx!n z(jk0(Pvk9#AxyHZ-D3e)3{UF}^>>HbX#c+(rEPT!iwT0yPS&^6W(Qw3o$Oxqrg7bf zHc4UtGIDcmh?a@z_$C_g{f`YnjK<-LoHw>EQ+t=)R({jP#Kic{>=+vx`|eDLd@U*Q z(l-!H=|Fd2+1l9wkHD^c#?Y(_L%%EPURt+IBxw~0NQi`|q|jl?Ed{!n4w`zWHs`ND z3kt(bQvjWq>x?pM0y5w0kyL;_mzGvglS)Kacnbi@A%9vc=1jSvBsY_4?k) zaJVV@>O|nhg*ZkmgOJp={o(qo7P&E6#+LK|)CEOdNjdz+M_=al^B#&{pKbUqL~-)V z3e2Ag9d?Ej`Ul>ORc+t~iM2Np9~1`2+wZLcN8J|HPIZ5T;_4fHo%{Ch3ead9E7s;bH_EFPK2scmU)p5@3k2P}tL?;~y|KeUBn zGAemO2xS6cH6NmC909Z4X}OjK9A|exiFE#O(@A@j{^re&3ahT&Jh|%^7zr5p!?JXG z@%UJD#(zg9CN_4yRLE`@g&;kgTFFdHX*Ih@z7CCzjV+xY=?$cd2&v&S?Lec&J5|;8 zIw-Z}^@mOAV}E|Rb1^-8$vD&COF{gy9n@^-Fd3NKbxIC2KLD59`r4_ir(v4R`6WqnBQ_VkoCUSGaXKAN~ZHZHSK zsWWS#N;QEr>M7$2{o47nAX;X|@P!V-9ESm~>EZDhhg2OZ>|8cBoun&c#$jQ-4KIW9 zdebr`U8*Gy33ke;=8b5TT>G1UR)ThZ@Dp*p32hC5DOX*+Zc=B5xAW8Pc74n6Wrx=g zzeOeE_OT*bs(3eQg6uvAO=aeAwaFUe4$ot0G&R!DWfH>W0#Kx%aFNFQOYr8uGjNr< z%Y?O4@A6(P9$n927tZZzmAS2AwVc&ZfW$T#KeznV;GS~d`rm?7 zm+MBI^diVO=7bahR!Q2o^NW&w!fNIkeSa)&4)X7Ws`QBoD80UG4}5;6Z~NXv4qZ-J zFb2-Pezhec6Vz9Cn@<`=nuLo4r=BkC!oRr7G?TWVlXg$uUj)ewk0q zByRb=yZ%bsDrD}Hyid|{KdxY~S~MozWK%>>7%?jGYgq}mTTm#6%A z0jimWIpVZIa{yq?mW-+%JMa0ghHl!y@CL7#h(7S=)eut#)PcCMGhrQO>;C<{n2vky zDOuLgR?XF>UfPYCOx%LW4TY@Rc599KlM$h-I1oSve}Q6>b0YnfdtO0(?=PLiLYSq| z5kU+riQ8o848-grRaIP|_P4xYuW!A*lFw$JaLW7RUzo$qR9_iWdgvr{BUyIa#oB$g z>`hX(6&93yZaU&-YtB8qxbRzmVK%UA!%a}FNo2sE8Zj5f)*8OESibMFI^qN8$Zy}e zEx$&$`|X+eV;Bbda=kWl->{Cp*!t{0QM{xQnqKc~ZA6o7bdgF<(R@gxZUx}bDUrrY zd=0ky&FoUp=oPc4~8szglyt=Sog!Ztm4tcO6b{4-CVtK)6Si$h35??!;AYN51*Zb zMA;+4lEizvaWbDi-9V?a+8M~TJDWb^cz#1+CYTR#4@19H=LqdEI1QF>80>vZytm|h z*TZ|=_dNaZsc*uQQ47B4xm0vlBB_wM714#o(v)&yG zh4g!b>_Ki%v~pXE_gSq2HjbI5@Cpx#rgLCsAC4)|JgWtt@!{4o^Y+oX1%FS=^Ga9! z-Ndu{qQBSsZ+UT#{n-+gN_YD5dN0=TnuqgUHj6bGiwyR>0KK($fz)u&ouTyy)SjG+ z2MTkQpZ)@lk?FV-1T%BLlhrqT6XL~%)x&T&U#(9$RXU{BRNi|qU`kK0pOomXhU5c5 z+%IXJy7w~WiNW!>-PnXiBn4W~A6t0Pi~`iI9SgseGpC89W2w5lzTzr}pA(x)FD(2H zoyu>9Fi&V80Zrrk_8OJY`mimfSVN7r;pHc8yWUn2st9uRHGK(;GaTlS@B*5G;j1{SDRJY|)p$SprS2)qEGI0~}pZHL!1=#Fya} z#Bcpi@f}Ae2LvZym=~>1U;6uoRak9#uR(01=i|Au9J}pCS|7}x+@XL8tZDIw@cBPA z@2W1m|Hq}}5ll+Z&Ht|{h634K>`x(3fQ9a;yu|j%A0~d0)`?Z0X^`b%uX&B}KD>7=ubjYH*{8>kAC z8#!Hy-sWzdj7)Rqmj6X^Cak>YX&3k z<{XpP_{5Z>oDWa{nOk|;WX(bDIegO-1hlov@?Y6#mu;kuG{0A;!M1n!zb7rX;a&{b zz}de#@QVjJ4~Y&PJa4ICbMQ(hdFFZU|1HRGz_zRU-qS6r-42xxY`d3l?Qoz)$e!Q# zrL$P|-@3qA7wp296*qLKBPFN1uyPuq57_8Gws5LjI7k#tE~&I@%PXOwpo~SA(E`SU zr@kr8V+Eq;&CY{c)!%NOvvV;)DH!LcA2Lsi=i)TJ_AtQIzGxeW9|yV2c*3jxHmADk ztEYq4_!Ia?6sd9}((^Tp91TNMN88*8$(Yr$r2h20GTGs|ih9YUrg8e_VwMYHDMqRm zb@CT-WBp&EGN&`f9Ut$H8Q{L4@%_^;`^lWE!vPuEEQATNum8cLiEB+ve@PgxcvNI>_ck|(+7*OaD4u#^> zTU#prX*SbS*mH;GHj+~-uh!kzCUcB?c*692k$exmmCcBuP7q-VMx756Tw^E4DFYTi@sMkOM%gj9 z3Ms4rF0*EiVFuSmbQqnzegMgLvBV|YhpNSHQa-Y~6rm|Ix$ z#n!2=-VKgV(ME;C8i(>`RBS1Uh33k&s)6zW%KvBh#Jv{yF1O%;JHCdvYsU93%mgik6P!O zn%N+R_V)Ht8M)H{CaGn?qTwR8t)|01DcYO#9!C;8M@BD-K1J>{6FDEA&4h_S7f9;t zji8n~m_orX5@KQtYilgNX0+vO<-gU8Kx(0`_?XWi7b2ev-pQ0D5n)d}dza0?rzEbVLeTYrrg_Wn{oyI2ATH%VOK<0T&fPVAYA# z^)6|l9ye(3gfWEd)U_^uejmj9mFo=-3pNX}dF^QmoZtNdy~h`HT$!mNOz+hZ-nP#( zN!(c0c+LyDg&6_+_kk2paC}KZns&r@@80|m8dKEnF8{Wq|A^4Z+%nKW&D9a{!3&fh zKYf&!PWV?CQ1z%4xRjlXUfOe9chr@w|F2&D8btae-fRzQJOc ze*WaK2Wj)CQG&B3iCeP=m;xORz%TK1amIggs#?#!5~0})i( zO4%63)!OONC{{ffJm>!$>Ykfm1zZ50xqNXogRe4^#;h9pR{(lO!txzI-~-##7^i}( z6^kWQd)5D~k)wwk+N2C}o%y{RC<2}Jx>1SFrR7I~7Pf_zRqiO^$;`@?p*h>_vIBaG}?%sTGjC;HvrZxs-5 z)2=^#11+EI*A!Q`F)AP?_S#T7&YCp@XeSl@Y)LmRq8m%ernZj= zj$z7eLStias<@lVRO}!;+D51ejEzBRDCM+oCR-eEVA(Qc{TA}9DV??#b_2pZhKQ6c zLBrD4kDjf!{aN8;(eQ@vR@Lb4_HqwyenZvC&iXp{OsyLX+*uG23HJ-gwb{v{Rmr22 zvxGr%=C`mWjS?X^9;OWpatR z&z%GGM)h$uyrvz$_62R@m`O!;n~n+8DG_AWJE+(?32Q+*_Q!Xmuh5IM42;W#Zb+?6 z*;u*j=oZxBZ=y$E{(_#h3D;aKAq~H{aM=93g>|LT=OKsB@9ryG3D|2QkU1p&KKBq= zPl_$<-N;_Nc;UO)hAn;3&8FtJE-EIfGd9r%vX|*4+Tzo?fUza5=SpeA?r6VkbV*4` z^=lq-GzC3$S~IZnJ=>cmme8}z zFDdy3-1@p_BquJacGzKPp5AqeQ&1bZ`EDH-0+c-yO-Y^p(8)WJ>Q#y_Ef8V z>Fv>c&5@5PBLChhz<*M#4>qiM)TD8=iZ`x(r4&1g7(c)KbNQfdry@E+|V$&;U7|tv^Zb}B4gg37AKBbE)HDNr_^+r?<6X^ zZ|D7|6XMp{T*TgwLFRwb*)oF)iAdIK%YGxy#)LJ$0uO8H%VYK1iRyVnpj+VIaF;a! z4{=>sO03nRE~ZHd7M}R{F=$eD4(>GP$m{BJJ#&#ft8!UmgUdlUNR2h*rLZs+(xpuc zcS-5&3-BBC^*gKtIu_m87u-R;RnFB_y?h+ltHG9lC#PuMUJ@)diKQFB&PdI_MIFmpj?9AV@ z^_x=asckKbX};h)V4U6Bo^c#U-J{%<5raOqv>edk+!{V*3DA>#R4jJ`=R#M@59XAq zHS=;qVyR);=sKrs%SAzMPhj97WN}3Dosc@mFYV5EMvbo_6Ia=VS6o$mg*)A?DGJDG zIw%xw7~%1V9{QFJt&VuzKyHM|kWiUo_2}r4@?FgM_xhaMGmfZ%UK|m!{O0L|mysV- zFACxLKj4{3JA@7oOefDGQ7x4*?^7WBi@xkmueKR!h-#Vhko0I%04M9~s`iE&92+xwW2a6aXCs1O?mT zB$cb463<>21Y_oIgkaToIG07`huUS*g8~(_-ZL^YcXgggW&|D^U39u$fB@!F3ln_` zQc1|{lt3#(`X}9u+rk$x7EliDeQ9UUR>TB^goX|TY7`9I{TcdY&v}3mw-ALD!mLaR zg#`PKH|*5mCi9tfGGBo{yrpHRW5m58J?=5kY7-F&2NM^JV+GHsvXtqEz&uq&c{%cW zBic+k$Q;@;j7hh8++^Byb|x9|`n7<7#Qiz{uLGaqALdi-`ZIovSK5KeBtH^cq1$Vt zEBF0qSg+@17lff6p-%#V1)wJJhX@H7HL4z}E? zXQFA#h$$Cu?cK-l(3YW9L8f@zW0NDv-g_Z@A+Wh&QTg$Ze%!G-4`B)}x<8?FBc z*PN@=uD{1=!#x*75B~o2`-6xIxr=2?^34XUJ&3GXm`a&Wo$JA8_ZXC&gdA0>Gcq6x zF92K$4;z(4U%iRegfkGQ#Mto6oNRd-sh%jYZG0MpJZ(gc>&LrDfaT^N4z!+rG^K)P z@)4tDON%*ttj6OFJg@h4&RN1A4a8J$ zWyi_;W##mLZVW8M*vcCSct>&G`1|>mrRd!de2n<3|)p z556>PNmTxWl?1aH)tiO$P7hWskGwr-x7A#tAVgdDW=lsnWlxk$oI`+xA#XPyol2cd zTwOXoKhe&euJQJs`+@YBwaiv}2vZln^}`W&B=MQWvxD3i%zc*WV{xddsR4p1mOM#x zE#J6Qkl1fwPrOeQA7k$3_BI3dKyu9WYgsNB*)uJZI@!jWI|WTRP-MGFi3W6b6;ccN zG{&0eeuQH`tMkAH6tBXN=%@8Nw&&6A!akRh03G>3E5cX0Pb)hNd1bMK23EM}$S4>< z0CAr=DY|n6{^QLL)_nv*yW@+m zWmE1kKU;S!v#xks>*KR;a&`bqz3m8QJ7$Iz3>cEm(MV_3E9SVaC0uvY8 zwAbS8KH913d>V#5C11aqo0~(JQ6U^B$0S>vzQcCxuAr6@~W&x0Ca&ln3*F zzdZh!nrf-Wn2qVWW2X853xJab=yLG>??n2=`u3?2lwI*kd1+_rHbQiFUa^0X|8tEB ze*RCAwdl>FkWfIGlnzI_s?sR_g{V#5430Vgqds9xz#=^*d%f04{!Xa<#!?5DVBb6n zwsOadbjRys2s0ijvirVZ*xdpy9X9efczP^Vn9OaaT~gmCH}u1EiZ(yznr?iMB_RBM zd9&;D6b@~N2Z6kp#cNAB-8STPjoIYd5l#{lUqW8@946`kj&QXdyu-1l13&3LJu>R|-|*+Ta5}sb%#F{q$*QI7vmF zXk}00a23%gW~Y@Oguod;YgL`t2;CwZYtg%Yd=}XMM>p~2M$<~e^f;~h9PSjfE43C^ zPKsrRAJ|Xz^xVwhAiFRqRy*(YN$QUGDvrEP_O!Nt-ZW0Pd`sW2JJ2Y;KP^`+k$hBP z(^$sJ|FCRWjp#V>H#A3$;{7#<7)Xbqka7=z=Z+ZY^4~fTm8Xj(nwNnDUrqM#B?&-H zFCng9uDe1wsO*#au8KrdG77>I+&#ZX6QyiUkJCDmO&{CIxUJ~_MCA=dr;bQ(6Xl&R z?KYm`I1%`0mw3lEX9Uq=9MXyRb@~JBBUMC&VGLU%EGMvE6i`sD!st~nI|2ZA9wVSZqfSFx zyYhO%-ogTQJv)2R%lkG*H@kI`uUtilS}_w}=e-A}=LR}!S3{XscPREiqmD-nCk^Nr z&}ZV86^*z+A<0IBR2Ywf;$vdW9UTdSuk!d5VwL%o7lSfI#l&>WMiY9M`F)jV!|sh~ zpXs3#;59U)Z9v`vIj>XvM7MafX(Q3}e6W4T-`dmDb!7JbOKc4+<+?e@{(y(^NP6Yq zCCKQ1^>GnfO~?C}d&FUC?-}TsRF{yCb?T0Hngax&TDG}e4?x8SNnXKTty?7Aio#Jz z$sczQYbh#y(PjOkn-jqg z5Fmo+p0#5I)o#b;h>zp*?Y{cZXJCjx@y8%4rODqoSfpa2Xm1k?0WV7eo$tusEPP&Vzhzty@KceiCZa|mCW56b|CF78$( zM8KDid{>f^AFIy29=^@jdd}=i zcT!>yAC{|BnEF5B>y$e>ySnD;VP@1lO-oPsPz^iv{i2{J4Y)H z`CoUu(u_R7=?Rd7z+(aS7%&2UDu*&U3~A+sVjAk;IFKH2X4o$vm))fFU4Rn-fP75@ zCtmu3AH!jF=b`BrJ5A_6$<1Ne+1aJj5md{|AD?{D8z>wVkd}^V=udCQmEDDT_rdDH zAlF`!U4}y5BZbBu8(Fv+E8tZvkAaugy?pR7J^ja*aich#*IZ2Ti}SCUJBJ-dfz;*x z9jy#B05^3sP;ehVenbVH%=X7gD#ptk(>9+^?=U$)SQZa6xhy&4VZQ(nDvJ=?X=O(I zYFbx&?q&`hJ&i>bgn^l>Nr)j9Cnq%m$XkGg13;yDns5TIPN`lRa&d(bJ!nLN4zvD^ zx@V<}GCwRn6cwqpkR5l(fn1ZwbIHidcYpiS8f_|dWcnHp9kL5yIplAz(-d$;@+;OJ zD16MpI>P%dTl}2e!`xHKW}}GdjEk$B#FGdRcTWlIthDl>6vc;fAkmk>hx)I4#lR1z zcheu;U`jN=JX32p(Hr+{E&{ziih6o3AeJKR^mX-{CuL}l6<|U37<+1(lu8db@JCP% zyD+@456HU%fHExBD4&H8{eK*r08YR1InRcNZd29(H=y6N!EP-}00j`(#mAP596j>} z6C@ABAMSeQ%j;&uxc7oJR11MV4_^iF(B%SbTfN%)a0zlU-~F)462!@3tJ+}0xy1er znOm~>L5&~p7zX-vfkgF3#|3;ijzt_oo-M`2Cnpb+FiNBCXrqfK4{k2jPpHKvo;g59M+O7 z7^Mua@?+$n#T|$m85t#C)cyH>?oW>H-*qn+#HP;O;$k0bCD36uhxjSy=9h7BaWQ@< z_(ld1Dd`J#ab+nfDc>VpIn>f$y~(T321p8=>xt3win=I!;R#BsGdf)5FYQ15 z!uFv^(M9Ttsj)HICm)jcn6LiDW2Sf5-`yuE6?Ohvwg?7ox~(f|bCSc}Dc1!sfpLoK z`S>fm$^vb+eJ=lc5ma%0e( zUsH>$?UQq+zxGr^LPBbt>YFxCoUX>N5-kk%TGo#x1U12zeyCL?W0&)8gDIKXtG=Vl zZ3)jyt%>!*ANXFGiG_0SYkZth0Oe=qg)Z|o_z4ci$V z?|*HVh$C2o;W5}>AnAeDV2U#f{QVvPPvSOK_PsWGAbg0iwYLX7?o0%G@QDtWo%zOn zoaZ$JGZSREWQCX(Au+Ze9+yQULKZH^<>Cf6vqT_MAS0~~$4CFkr@zz=G8p+3#V`Np zz4}0bR0e7%pJ@#QTfm20J0#F=04o<_j1`>`>|_`Z_CF^U*fvl|w+EK2${gj01+G^i zDPrGhV3k?|{y*~f_lzf80(7@daL_Ip#4OJ^|m2MdZJ|KmukcQMcv+VxZr?&sr zeDl-gADt{NxE$IPXM~a;fs}&VoBKW*`88pC4W#Px10Hu$S%rHW9pM0fbgPqc&V03! zn1~+2&8Dic=+KJ35S~k0GC+D;E-cvF7{qQtDJmUD9l{Lffwh6ocCb|%#~ER($9{Wq zYY-J?+FnS}ETclR7D!aFke%fNRb4?%C(MAt15&6}b1qsG`RF|l6C5r#1$t>jP)$8K z7@by`>%mrY`AJw>Bj4?e6s8J=fmv9v70>+$Iv96^Q_Ps^N7v|TbDa)+u%!u+9;P{; zu;sxx-XD4>j4Px+9Y!UCwI3?*@4incL4X+%R6i=kH)$`dQ=*r}(5Z{<-(tHHdvuZd zyy|6vhJ7~fzF?*wMb5lNAH9?&nFCbn92M9~efsomvqbiY)5g}1~?if)@Oni$v z+TFU!0kFj6*+80n2Ua4@Gg!gc&T)Xhxq|$fiI%XBTi->lA>UKO9^Vb2Eecp9RK>g@(%Y+;6e>}F}7P- zeN0Jd#bthpm7pHRIHVdcd&YIO-(#klJLvW~UU~K%%^MbZcuS=R$Yju}!g!3=SLYJ+ zH*-Q-6{NwKSFQIJ{kOWCQehNNlF}KizZnq`5zP&%G3V(9M*`DF_P8Q`zG3!~m-VN0 z7LxBuAXO<6l%n+Bq>41@ z(m@~*MMXiqB8o^=dX*Ld0}%uZA|0ej6hWk`^!nD}e(&G=^D-QcknHTU&px}XJ=dI5 z=iFjZ!F?v~a3o=_z*UrURm31?I5s*r$@lYvIdNoUC-oEeXTwAZBhOQ%S6r1}JbVi1 zse>4v$hyGu^+{ZobOGfpsqxEOTi%RKv*|y%;w;?gc`wTeh{%qxv1y-)_i1F`&@p$~ zyPSw*%zxhpnB-c7K8^7mLOVwsY2$|N%`bzgW6xRoO>6J^{wrkV>7&?&$W)UYEGXZ^ zTdl7il%?PJct@FDT(PCFr247CsAv69svrU=qze2OQejiV6|83Za?FoYb3oOvSs?HH zso@08r9TEo5xph?#r{Ugw0HX94OtHg)P6UKEAl(9Mog`q*o*?TtY~Y9jJcfDaUJ7F zo%u4=bg8&HC9YT6(dq`>FAYM0;l3Q^COMGXykIOkGa4C=C`Fe>Odd?8N@OXTta}s7 zQ_n@y6bL0;%il5Xxj?ClUkcLG(}R@3Y+D~|6S1IR5o@GMA;&rq`h(;I*oGgc#PG%k zCoez#F+ztdHJB-I^C za_TFWl|BQw{UJ+<9VHI3Zh)+~%dwc7bKY*|xTUeYo{WY;i*nGo4*9hceuCA#CU z*fh%dIxnsutMd*QZ7;!XzA8(+OQ?m5uANi}>Ho`z7VuJ!-n+gq7ta8(4?sq67KQNj zM|-;V@0(mrK+N_Tsl9&jNR{FrMONqZ;~Ae_UFGQV`a-&|Hb5$)e;P7<=uTZ$SsD2D zPrr{41k0f3I-PIU*wMkEyv#&dpDOIgGRBUc@fXZM`afQj3EgR7yD}d!+SI;1(|-A{ z6NLZm$dDw05S)Dr&TJ^yO7{8k1_-Zn4LeZ~Cm&4KI{;MGZn+kmk#>DW(sZ=HKj+RW zWj@m+U+n(bKsk0;`96GN-`*fM#5=6@I=I{r$%7j^>V!yS&<3 z9)iTpyXv1QP3v`LN1SqPwE%HCm9D)D-g+r2MXad1GMX0S(fQAE9Sh<%=u|P@+d*vN z-EzjoX7_Zm{eY9{92)vK(zCmzg#lInJ?u3H`9lKhZ)xnPoPJ`f%W!SbbPBv27|VJ# zi*TPAj2Mh$^}8o??0sz7VX*607Rd{*FTuq;x9pN*`=xQgcVbjO zIu~+Z-5x!j@*oOxbP3|gaas(S-n*1qxbn4w^7s?m33h|K!ToEH4UtLKD}C_S8!qOa z>7ZA?V?<{r@;JV4+lFE5+M>H=Mw?iVGGJ>@l+?2Ah@~-1x(>j^Sl!>*993nV=(+O8 z&a>0K-SbY=vhei1+_ab}lY^XZ4sd=QG?!@j5@#FkQ0Lf{1Dx#Nm4`%wJO>^1t?<>W2m_sEn`(447k^ekf5N2;WR13o#sJe3QTm2G;uNFzC|~Q*-mYf~gHv z{@52O@+A+(o~L*(3-(ydZ5m7&C!El4FI>6k5P>f&Yz6igUHwgz2Q#@OmMwmiK0xI@;mE_^m7;-m+Epg%RW>8C8nwrHcQXgqoEe3J!VRG` z)I6bUb3>ce!aZBJa_9~b|E`da4Z%t=_x?7$uo?j`Bm~=?VX=vE;PKq}9~d_xt;~;eeG9yD@5#*&*ZFZ+b~#iuK3o{mqRD#S znn1t{B+eV^XP2@UxX^G@b;w#L6uliH`fRe$aBwCTwU(?2vEvH zCo^v>Cvgr>dU_^<2!~d`G1r8{t8~b3l12_Cz(T|yG7{7;967Tb@l`Wbrf-_gZPTa0 zq2FYro>^ee7kgzds;}gzyBtTa+*75ny=QPZBVzrjv9YlZK{m_zGm5OR5WaYETu)TF zFC^vg;lnFf(Nt`dr>a&(8=Tu#qG`A-a@Yl|7GJCdIno_|N@ zP~O`ndNPYWcU@_|Bj9T=M}}U|2Yd3P{)I6c5K`F2;6)cAkMnc8gh&o#E?sP&Yrd{f z7im~fpwvB)q$D&N<6GLEe*$++_T)W21mHSNc6RQ|f?{ryboFPa+%ov)?CI{Bv48t> z1|3&&@CcJuYT0t$w7-~~<;+ia5%k-aX-Mk^q8|>Vh3^zXzZ--sj)xSq#dVP*YRAgi zs|OyOTFIlpM$O9706VOsBh3`^XYgKqf_l|4_n0@)>`~MLN$P2*)7Ii^`H}uD ztA2lvfyVf)k%&kMD>I6_vgB2UD-io9{1PrOqdF-lG)}lIbfwO{*%D{3w)PJV4mVOw zAOjy@rH+EGW&g@`Dx-9A&4^o184BH-&hS^WeE4DjfF$1+WKv#Ul4NMLXKC+AxfI?Y zM>q)i943FiwN(U3DUv>IkHrn_iQw|5ZYvjEq-QKee2oLL+AM^9PWRNt9(ZQ~$XP{1 zLuv8*KrXr{zXOZ7)E2Vaa8#5GyRU;Z@?!br@!J}q zT~ol*mK8tIw4!Bm&z=?4A(HI)O26Gxw)?eEKkQyH6j>5l>9zlNfI2*)a)FXA5k@_D z$Jlm7Ge!T#KR?;sc30~5fTH(37*G%tF-2MqeQWwyIS*9r@RX6Wg+~i=n|qfBr*=u+ z7ER_{RXBb>ZCdMZlk1YjK7aVW4n@2T+w)1$;)xlR?v&Gf9Y7*@{6ZU|9jKgU(Vwan z`!|!(1m-dH-5C$WPgi8xuUI5EpeN#xSJx*toaFQ2Blc2h7*s7ql0_yHKp{}_ zHvSOOPwTlHOEQ&S`j)17g8g&pa_t2=&}Kz-up*y6#V}v#ul72LIfaQqlv$8ONv4iV z5u+OBr#n$DEIuC7G5v@@V-#Gq=Vw3gQ7?iSS*&d{xWXqx-@7I(q=Qb6U7l3^kM=nH z5JhOHaq@z20zR>vzBg>f1#~45aO#iBBSUm%jsd=h-#&Kjz8?V^k?oy7_3Xb#)zJ^q6KJNeJ@DhG z;lo9`9&7(}XXKpivyciocB0Bz{n{&fx>Gy?Xhv66T~Kba%dHND4j71g@Ywz@->MiaUP zco$a8+@rV9YQEx8zw#yTFgxa~KYn$YbJ1{7?{6 zZDB;9=b}#Gbf{4(K4>urkIn5HQTFeQd7}v!2~O-974O+4Y&;#f;V4XI2rk9;JoRdD zR}V@ZPPy|l=^q^>X#6A5j&cc3tECV8MtqgeF1b84TU@7bu5+^yiS1F$SNuuQ3*7pg zeexsKBLh;_Y>ltG?QL(1&aU31ij=>0kcY3=ly*9U=t1Zvy9qho(QMC{RS zF!`_TA(=j{OS4IygKf(j!p5Vmw{8R2w$aJc(k<+()4V^gN#Dic-`c4A&ts)c!9FbmwZ6h5O+{T zQ2l3APpP<$Lrbpc$~UVN9v8)fS&S?5W+{}-5+M(%0rgIpc`>Z6pB7FIom#N}X_o=! zQRv2JwqlQCWEe0)##<>bW-ceME+Jjq=MI%;li3`~g^Rx=yx ziax_sNNV<+eKQha%AKfl2&Cl8cJm;E1AYOMrn%kD+@cl^n5gztvLIdHdslZ5|-hZ4aKK--baih zeghX6ho@<2Ujzxsfj4BYNR>L(^tc(Ow}7ls`d)hoYv*+!do)A|7Zfb3v`&wI(QAUF z%89Vwf1wUfDk{UqHC0ve62NMn>MfLB|48ZVj(qYrDyvjhz76IS2_L-qZd=*dzUeKr zG|o3uNzp&A)v@?uSHlU;DN28eyu4?t$Y0!7Ynu~U()GH5fYl5Z8jA30V0X-4vt}$~ z%V5oLeUj6uPswD%CbF%ngPcZYER{ad)3Wp%TsC!{-MxfUTdwU-gsB-13$aE}QCd-v zv7%zneB0Blcaa%#rqdc zN%K8H5_um29eB+i8k9(~+$mcAfYlxt)HPOzY^f{O;m!1Fkg9QsK046Q)r&_DRwCoX z=dfJ;cevCv-Y@-$g>^z6=P+v;qxo+11D2FsaR!w7--W@%?fM8p6Zx+m781qc^35{+`l^vNcaPCJn!ntMWz$y+`3&^Cu>W5r)uX0NQC9P{SFBZ{W(zjs+6X& zBY#T*+qPdLXaF&eA)1qIEkCPlyi4p$ce{_fH#g93l+K9!_kf?{KI%VsB4z*INTi$F zk6D}I2_|u7bVwX2l0n(j&Na;2wcd^1r->SbU_3#X@XV(8SpRfTlQgTjabig|_A(p# z?6ZQC%?f+rPDYzcZcv76&zcE z%r7c`c%U}E=JX8KeVQJiJw^TQkL0TlBhcq5KE?D>Ahv3!!HZuj`@KaSC#{f?TI<)u zu>EAI!t4meHs7p>Rja;zx2%qW6rtE6#q)CY;6<-CW<0UG4w;E1P;8Gm6!%^V55ONp z7j{i!yM-c)La>wDmPJ}|M&#EHH|>xlJ}Qero`T@{!rn`Y#RF>pl@$J1lrpz-scI0I z(>1OsYeSDP0$cnT17DoiX8|i*ndy;-+XEjM#r^~npsjJgyKs*D3{ZTd?^^D%sK!dn> zw0_pI+x5Sws4yJ?6^E#Pf{n;h@Ok9=XL`qW2CIr1iC~1gzppQi{E1=Vg02`k1Kyw5 zDD9s{JIGx>%Rgdk6pZsCmggU1I_}`g1TpgGV_K2mKs$$_fq`TwxQKx3p|M%YK=iXt zLbizq-iqi+_;Cs-<>GJaGic8=^Tdl#MK6H~VdhgS91gT^+Am^YQ^S0}N^x z!Bt&o8tUhR2S&<*EplnPag>GdIRd-cH~==oq5Sk3AxTMIDeZ$1pJM@{Hcct^1a2rTfZs zeS6M>b4Ow&K2oqN=I1DU_9j|@J9Y)lmvXL%2WqPLt*i{2Y!#=k#6z zBfS`P^uEn9zK*I)GNKR1-~U&u!ry~meOpsk=+V^M!|8dIC)1RR!M0iq!&3Mrn>ND08zj>QatEX zV2&zC93&n`2e=u>SBKL6&O4;K&Wp5g@EI(Lwxr=-3gU<`GEAO_jW7`(&$dr>b#+;y z{%BPmPjJ6NuaHT1n0Gxuk)4Sr(fMXaQl)rrm!9WxoVmNLCO%s_b~%VSL*JgL^{1tX zRXb_Ashrry$H%u*V0*08vanZG_ttqjbS>NGqPcDf$f-{D=}e>0Oe67Eh+|tzecRt$ zAvU!6!I{w@Tt@cS#co}Kt_kM!eio6fw2_wfrlJ_?G$>D>q zb%gcMh44UYa6vl#PJDB7vs*#$6whscZ<;Ut*1+A(Aai@EvY|1|B}V@Ju77rZq85av zrTyu8*(NJba*{!01A-24bui{W2;3_nlXFw+8DxmB z45Clk$#tvmSoNi$aDr(O*V5QKjK!sGhI~1{@Xydw- zG&CymYyN$0gD(T&MjEn_K#C;Av^{68f&5+cL!Io{Vp%#l{b&0D@zz{p+1AM}x0B#? zfU%&~ID0K*`7gENx0@C=RzLP_Mjl6$q_G0}c;c7M9&cU~dO}cG*ji1XQlx`IO5{7a zwxT6^t6!Lc0vRnL>>HPDEkvSQdq)Ge`oWj93Y7Ox?~V>U77I zpE`v6yi{ca8i;y~*u&Ow5g?0)G>`oXeAf9nChD)fq%3h55=Q1h^UlJWdSh^VM^x^S zqa~>1#xLt~0`WFAwowg6;!pd7A}J?1B^8|kLGLG zUDq#BLF!b!64A|p1P9>U+YDI=+ypG4eC-_WEashDv>|yj4Y_A#E}z=wI&b*b-nT&N zJGS?hhQzxeCr~j!q}tEnzD4oicnlF$9Rx!#rF9|D;~{f>w&v=%z%@5iom?+}ysB?) z+M9+yOjA=-453lZx*?Uvu?aGC|LUKi`mkC>r7tHqav|SpOSHkiOl3L! zG(RRoE}m_}u$CSs99H40?{?+y59F4o)@q&#eO5H`+l<-IQRJA0E|cm`rD-xv>MBHb zLQW%jk}V(9MM$B4+WY3u39dRm7B?ehr^;TZi(t^eTz}m=mRL11>~$QOkzI*x zW6B$hn)@8pcb+;*-A=48DPCgygmZk<>!g1sqw`w1>bZM;n|me7-aes`Pj!OfvZ(Uv z!wJJ)S305=3^_ALHl%6U^zHVrY!Z2Z*gX%j-oi=suTYp(}n?pt0@qrX0f^g;&z-s}cDmQ7arRPb#nZOozcWHJFpCSkkpfN=~a=;=9m_;`3bd3Z8ER#9R0eC6Tb>}n4H{&uHqOH72tQ|R;I$Kp<7 zt+9Mbd|MD5`}=A+sKDiK>-oQ-+qx=<-$$_E*!UkcMD)dA_@&B>B#5`YKYNzf z_!Yx(**yVb?C*9g-ZyLz02L}L%gYMKY6l?x6L{DFTssRcNFQ}aw5^=+0s@PGz{6=XX4ntCu#AoQ8M%fZQ}L3ETSKig75TdY zGH8UuMTro{g8-11LIIxk_{M*juyS}Kng5rhe%*j~cg--t`tz|( zlL-&`sy?Y#;-k#?W8p&980GiezaEU=*{v+`U7^V@i2>Cw~0|4gm_`MeZSUh6qH~jrwp%)tf9_5AeR4dV) zbW-!dG3h%o<~#AOt;8dg*?)E^6D#A|!RTLEaesTG%oRCQ&A?+N@JEqB6t3?Snd(W% z-}S7KP|lO+(i%IbldClx2VJQTo6MSJHX33RYr>X@O_lKu#nP#PP8!F~+#gM@&-x@q zOhf2ttReF=4TdARS5T>_7i!HZGJSyXo9oC{b)gU8wfb^@@at5XN+f6_)V|=2+W81& zCQ;^PjlTLpD;F=GzcE_wL^PWuuhJ_B-=xM8`ROXi-_xyJBgu!8YCBNF`VGIlhql`2 z8(K@usqILOA3ABcDjY`~-A|d>no&u^M9V~HTBC%So?Vn=7DoaHEkeJGlQp&E$q$ZZ zl8c|zHo`(tCK`Nfe@T}948%D8+U)ow#8SPC8|No zmfAmS=TeI$^?{F>x9{Cr_FDIv$Qs=m%aIvwwvD3KSCqjD*VErGHEGs~*G1Pc?LP@C zJuAq3x=@mDNFtW>T)85@{%MtdR0)}=Z>H4HTgt~z3M;;(P0%_~Ih{LKZTd8mETl2& zq>mbp4{WJ#rf;I1_~8>oQoQYrcI2YTqQ;_jr17J!`lMAvGZ9DAYbYoowDV~rgDAt} znF&ulPcTKwZ`?G^G>$Yn9s$GBvZAuZGQ4NU&jt*WN-YdRD%GBe7_64!{P|e^tSnn^ z$AHeju~eocs?4#(!%*RCsOe1%rfIiUx30=p{k$5>)z%(nJX@OY{(LMh1m%&w;bK2I zYKCTlU-Ptlx?yOElPfFDmr@bY6fyq(^!S5=0@ms$FVtrr9h?oW;`HOt*hTUK?iFsj zB2ld-A^R6DWgpW&nv`pl>zAwVw24>l6=xTn0F-dWgPO46M&R@sw>cjf}`qBoP z>h)>NxypLC`VebJ8!E?!UzOeascoqt%^?Xla##dWGlb;~&ly6!f4m}>Hj-Y<9R9qo z5c2EfyPu>jhr_1wa(e*6!wXJFT zoO+or2aca+XMNA=+AEo>+85t<-jABk9Td&w&M_779_{W^LFliKDd6R%3A!wO3)NN8 z4R@^DU=y$vNHMOMs%|LsD?7J7pprk6f0er`zbY%SD7ru%D_ETR zc9Sbu&Nn^{rwlt2zS9fc{5y(e{m(kCI~1SuUDP|{NQFetXcO8op>#37v3V8mrAL>K zK0aE^aum{)s(Pp?#v@6Bz2m5r z>=nG#AgWISedeA4`NLf&?}{l)`APYtKPqZP>qve;DiQOPP{uzvBJ+EYh#Szw(B;S~ zFeW}0J+1PBhf(K9gGW2?{ccLDSOEJkkwU)prU=f`7>fBV^|3sMcW7_$`|r7AiO&bQcYCB=q|5K?3nQNxKV&fZ*Y@qDRIRL6z#Q%> z1qN@V5#~49#@Kouw@KadJ>&Gs&^C@hZI^J1&fjl3>mV*Wc+YUx--YbVPwkoOnh2OK z)mdLgX4A=2#KcyT&rzjQgiUkJ`>)eQdHn9knE&vjwESn2-H5}u!`8pWhdE}1AIsAJ zr4zan%*_5ESTg#tcY3BeCy+kGHP`aCUZts^L$&--}-=<+zwPyQ3`~jCU>TW z$3Bharyr%KcDMx>-fY8nXsYIVx_TJf`~5|PEKZEB_B#FM{TL1kmWXuMf|+x#}38_unJhe@}iO6`p(i&6&2SxVW$?!h2)bIhg$ZL&aNL&d!cqxiWtH zWeNwcpLUd9rneBx*Ku@AV1u7mRmmaxl5=-pD2$UL3~0j+qJmZr5;zp+x|r`*k5%kg z_Pf)q>c2ar4Vo>ZhCaYoL_68(*lAbTY44b*zi_2u$OE@oi@Fnoo!?~7A^lF1%D=EA z{{=+1wsr`RRc|dljvOmG@i)yL;ec=CI*o@-Sz*s(q9IVXi>EjHVj?)cjQtMi&F(;BAvLiA(0gC~>UWw@g>$#N`71_rbFo)b`meHG(@XPH+qXd8ez6f8!KXbSd z5f(nWG~qkr=@#7YUwC5K7ZzNz*jH@V2yM`uFeOS++u0=u+X6bmaB%$Z9`l?$5!&!OuI* z3UzK*xkne*=T8d9w>gk*OU0%i;AjXPUEKp7)=_8YJwqGfE5KC@y&4ah)voJmWreUW zHQe5dv~E4#Z#iIWJ^gET_}jRh6pM)Q=lD43-@kwL_$c+c$gAt?)ok>iiho#WbT6)) ziP?z=AfP!Wl(wWf-r3qx63N?Og5NA_;#9v&W^_uAAD(M!Er z>$%!*A@T?qFteHy|M>A^b#=Akv;n$&_(&_xwK;dTj;*UJ{_5%~H8nN7AW1$piZKvd z;i6ynBSY^+RzgC8z`x@QJb5-Nu^3#`2JQ=cs1p#3X%%PD5f~Odbp4qot;%O8O(2 z-}ke(-|Ts;@>*Wt8W|bgc7Pj>Y#d)4XJO{umJ(6?*}!>0Mvw=Y76k~9=Odd{VcTst zk}%ZIpFce~NMn*ZwzNIE-V(`Un@@Rd|KUD6;f5;Mz|*C|pq4KX9>sRTG2Kx_ws*HT zsFseamSz&vF{sL7Iy$;^;E%XM!ZCVfEas0ES3MlGQR1WX?z`X9p$yjr1qB`CNxcgG z2W{u={~AJf8mvqyb#i25l=Bte=!2TmMUbHw26!psmN&-=Bs~#8`(c6y;)&%YDek+j zu+JG87Xm<876)AUSPJTv1#A((JXDy%`Z~Pg6;d<{BQY^CZ}Ts2dGLD@_72$Un2yVbcf$&I6a?WgAj-*Q-SVuOEgb?1_q}{l}sN+XtBkC=OTAmOs ztc?~@N&q9eO<=i`z9s`mLCHN5dRLjQkx>f4Q)oo8u#Ma>MsII#c3M>g@86bm8kF!l z9fo2Q&UM9yAqTIGY`>MY{!~n%i%7VHP66&}iR zatAB<^QTWJ%c!WRyL8>K%Za}ASCU>U==8lT3tZ4#(6%_iEXT7QVG4wdve62tw+isp zB!$~4US8fX6aI9n5H&ax!Srz}z)hftcD=)NXA(xL_-d&=Vk5s`!b;DJHYD#b%cf;Tzs8yp7$P+L(O&Em<2E6S)xKKjIPGJy1En)N6CtHo#?yH z7BHWCIjLZanjZDUO(^sT&`pY2IwBD_oA9x1QBi z{hH8K7?K;p3I6|6FNb%e6%`eYPE5Sj4cRs@F*m;%+}+)!64$;L?N0*iIc8qJ>zxZi zK~&U7S2*Juad16+(7JxPQ`H+o#;Kvyb?+I4{aGR>pjAYLh2NBxat9x!=Kh?YpLYa* z?iyookhvO-1vpMqz-G2nL_I7lBq0o{SliHWt^qDMd2bI7DbSsknIMQOg)++)gDLzg z>4b|Y2wBF_M;6_bV?3TJ=G=kmqm10#UOa(T*huKvcWN4%3qR0NnSkV3J1cqtH*ZTO z+Vk%syQwJT+~m_WX(eP=<+D2&E}|{B4;GoZ-?(@@|vclMv|Ase9m_i9SwD#j!9X@=In&ZLlCTN4Y5 zNVhq5z95u&3x5zQ`{1yDwwp*sAteaKy7s_;sAEz#C-~@bFo^%^{OMPZ!ou!`*K0qBCG%dt<|yE+sL4Wk zElU#W(^f=Km-GTZ~r(yQH3K?32_QDxqS1C!s=-_EsLfHPa zfQwuU_RfMHVu^{6Fp$sfMWG}sJ8m!i65``q$&3XE@ZFTHOh{loF=56ZZwT=5um4>w zp35_CJONd1o;c|Fm@#~5Z$r2Y?ol*Rth+iDb~BZt!M+$*Zj6rNMAsBTA9Zb6@&}LR zMn*=)6nt84nP5|+Axs8dOx6oB)Vzr#>ySm+>uo`kD$4M-rn9YGKOguK|Qo; z(~_RWyR@1+AL*NRqL57$|HEHYkDZ~GeHKFDOKk@*&^-7|4s!j;yFahhHbzgipVdhQo$bzvi;L^HsX<<5 z1=mTK?nK)Gm8N&OI>k#TnNzKpAbj6{c-Pl%7zCcLIKda;OIlHc49a|zElltY zc1>bZTM*BqIm|q3Ze=-HeWtsljG~KXl_)}Py4xgDq>P+GICxXg+iA}!F-)RTdS_>8 zEpCs}lPGZC$ru|MF{;740VP#nTP}>C9T~=--m=`6!p64#D&s$>`*ob4iEUwz5Yc2d zx&&1RW}nNB3Rg4bz_soR8ItM>+c$4TfrOpAAw!G+{abYB{_^44#_};|P`s zUy{C=o~G8CXhkzVz%F5ft;3Ym0sN(2QSIY@H8ny|%h8?tK+A*q2A*UzBC8q6!kEOC zrnz93>CjWZ#|oV%=8As?7~{h#cO<|YVH*;XeUBqenCWZx$~`82aI?M5lgJ|4*`e#d0E%@UsCt~NcdJ$K~NBw5G5+Opohs3 zp`lYi6m7}jqC+a#jCc2Oh2rSnds%31b)qfh-bPD1-Wm3*{0lWR!5hM_}1G%Cf zJyr_?CNrqJ|K%FjTxcCL9Uiy2a0F8XWVBuc%A=G58a;z4d_)#|R|g2o@=371>sj(k z^Ga3$oTd_pQJ?ddwpyFmbsuWn-*!#7$L0-Nv_;q`CQR;st2)zv!U|u=aKUnbb_oKR z8Ul4rQ*8fjc|rUaJrq7-W6TK=r&QeO8PGrsq$*4y%FV^!WWuSM2+4s^=Is4Se2C`+ z11O=R#cl=}N?(KN(QIS@;HK13fC*bYM-MebXn{7RC$$Rf{DQV10+c;OTf4srW6=9! zRoi2P_Obz>v2_(e5g&$+Fb1B73lu__k&}b>Nl|cDCY%H5r$c8n$Nv?A_+P+cy1yM& z!anvb^*=CS_da>;bn+X=g%;DIB?x}d{QvJuqD0a>$g@V&&CT9fF0ufLOMVJrm7T^d zuIOUn0_h7|=5P3?>FabXqLu>!00vYE+V@Ix!q-X6DqXyq@;RJhq zgyOmYjqFKq#~=S~>6-Zt`456^3xF5ve2pG{&>?H%fG#>Pg-l{f(#UpKejz*FATeyd;`D2P9xG6WtVTO9tA?!Yh< zgmX#XBlesYJyd3Jai$eol`IwE7;VvEBt^{)|rwXR0MQP=dVKyY- z0_YYu+m`UnX_L*7(fjuqY@}NipLHfA?DJF@@vY7u#+f{S-j%Ns1r{=_1iM@oW_4+h z{3>X&+X`K{027kVcYE!ztcVAEzlEkPRY3hUEl5z#gm4&4|LAi$4a9V6v{< z(aV|Z59M@tSwb)$K8UnlD{@!;;^=Q2V2Jm`e>vq2eXq3G^J=dl3L4yz6LMxM8|IFa z)@jU=Lf4D9olDuyeN(jcaKq)<(X{_<$Lc!~g_r%n4{relg;07<0SY~a;0I4b4EnT} z5)Iw`{*CffEMFgXU|LAVn0d4$j6OgXCgOWi0O101$eYZJjLw*2m+C8z?&+aB=ndAv z>_pxB5VB2%J6qXvs*ZR%_eRK}zwD2o`RQr+v7@6NT{9M1)PB#Vw#TA(hWFJi-thH$ zizgDn16Cf&XniK$`Kf$HmP`)R)ov=(8WTj^n)U`(oxLz4KRA!|On31!gTtTm(Z%G8OvVp${7 z!fe}>bOuS~MwpN1T;zs_hPxi)e{nq7%vrWfPuWy`b;9xO+c)&kq+40ae;dm^S0o2C zJ$(cF9tTfGee4Jq<9_}6rMDxUJJKyC0!!&>msxD#L|vuH9jWp0@zxw?NS~>IE!?_JTweVx2q@q*~xSM+{uv0fz(a=^zu^!q|*!K;JD3Tfb^z5LSA0W$E z?haoo&cKmOBzx)c@2JCBgNV_IP7BD(dVK$sx!FeyC(M-@>refzSN4g8R%S*{BMCdr zup+h@3CKb;)~Ii6r?0sV%62yK5&H)-OfW#9Ii`d!eKNk0&=wih-dn$Y0}C_pZF|Pp zoRM6%;3V;MZ10E+H3qc5A_4gOQ}Iyxv#FN9gfWC3XSI!Rfa$_2lc^vQv2MnxW5GS1F`ayus87}Z!tWb{d6BvhNaHj-w z7$V23hE&Fr1M}=-uzl>&t9Ic@hUoV(gN7S>@kbw{4iP!jypal;tB)}@hhxx_{`_5V z0r?wa3KTu19$x0XJ8z2>GD4Y=0ksU_0*i9}@jx{Ecty|XP@0c`u4#KP4p}gG zY_Not2y9w>;k3T6uM8^!FKPl%LU>)`-pr#?!Fi)PS51s+E#exf<-Wojco2Xd z%9&&4UOq?sG~LrQ8~0QPQ9kx0X;2tmlF*=zfl8Uhj)tdKUT4of)}}yA*hQQF)!0MV zK$PPJQy3Fq&xq_PJ4r_i4@hQZf@)B0EF#5(JvqV-9%G?9kp=imQ-53s3G(UBE{ba+ z*M$|KxdGg`!4&nA1kKmk?YZ?;oXay9yM@P@)*T*2S_0@Gf~s?Cj{ZGmIcI-hN7_tjc1#@o ze@PRFQlCL2#JN^HPWF79y~~RZ<%rK2Ifl(Yghl&)W!W61g4lm+Qb{>6s;gV;U% zF1a&4Wvm!*^DX3Sn94t@Js^K%fwerB*!LX@=Wt4uRK zw1;VN>PSEM2zm8T!I~kEhFtImUxW1e17tyl&d2C1ayp3D1OsTCt9p3&L;cjR^9!@M zlF5--13-q3B7(P#jG2Y^@6D)S-&EuGL7VjSdvQbS(?BP&JwOlDAS&^h+txJwXZ|r< z1%fUZE|CA9kw?b|8dV<_pe?5xA96)*W4`6ku=&p;c~r5#nCzECOwByuL_Wg|RVRRP z!iCDfv}CT*4@_d#0zYmw<>^OTw4v*#TR+4wbZ2A!m#-F>(ST05ehq!LBZF&i-@FM? zcm;a@Ur~G|%emBDsr{b%=2|yPzKL2@XbL>Nzc2Gk$4~V3%yYP{uc-wEtszw30vLb> zJNrS&tqDQwQ)B2O4BmRt9x+FCP(R4ZSH}*UJn$-)RZ8{-b0B+yxcHGOQ8|;D?euc! zeX`Am2A2Y~nEZW|-qdXM{1|sDAE+gTqqmbDV|SCo@O*XS>TbS3 z!z4jn^$~#?S3MnbxWGZ%V{1T?9li`?z?KrxHvF3#-J(m@@6VD=z5x)UG-)YH^M2aH z@)cCFxdd1!7!U)sGB(Bp!2OG5nHYo^k6J#%n(u@1SPZTwsAXLQ?{kYS9W*;B9IHh$ zb^G6_qgVLy(o>ZA`RQ(Sh{O-i>ib{_70L+Kg9^GmTyUM{-}e|r9SIroeiIaGj@Min z6l76e(65t~&SGBhncovX6MNi8Zsc#;!^Jg|RH2XJgnYV6!N0mVGhIhFS+S|8+ zF9(pjn#_@fueS8@@d+a@+rEm>Y`!LO4-iVO{}Q}!jZa7zd3L?_N{ad~PwR7*Pe(a- zLYG*W$|1w&m)|hbbbk6-Mhd^aT#OI{7GRY5bfInUAf0*Rg!uSYfqZdYhaIlpql|mT z6>dEwCFOA3z86#dJx|r*5R#LM{T)-)Rin8#%EYU1nM6I%tWo$hKU5&I2&~h)NBM8r zc*-|s%XYfJp1;S1DSlFX#M!k|X5`IPG2-)u`0mP6vvu>JUER?nDNwqu1o%PYGVasy zJv8_QnpR6{BE1y!v-CT>uv5m9rOWc@Q>F+9j^{h4=~Gq}pVe+rmew!XG{{GzMtw(DtbI9hYOM&7owioZP3+naVtA+x{wgJZYYX z;H$V8)Ab9Vs+-~@w81KSH|xHkw}tY1T45yQy+sQ0Q)QDc%M-8y0|Ny`MI#`VTy10t zE`?7!cL(vo7x@NWawk;oXcSLSGtjB%>guZJdMKyB&t-{VY!s(sO&n02~y}F zJH}ACgKHqbD$Chi$(A)_5m051QT>h61J{e*vmyN98&i;a?j}o8fXIjuO8mtt%V#-r z{hT2cvo*$-$SCvr0?4McGo>7EL$MC$v;e(>olo!;C$tqMo)5o`t$u+e!W%d0!dVmc zlJts$({B=!JWh3RWW@IM(7ROX2%x1Z&ZtxH??<8f_Qd5B686-`YGlxT4ZQn;_n>fb zi%eHGW*g4nNvhJf*Fsa;>0D2cpsiXFfu|e7INP5p+5GEu!|kOxSnAyufzNH|_xl8x zKW?k@rG&e4L2(frL=} zjh{mF;3!Kyu35?5sCgr@(9h;oS%i;toBfUZ+Ohw3f3aS_1yR8P@py*P&+(Ax!dgL_ zQf;(6H0JA4w?GSDG(Ea^*>h3vGSr3c)@&R1&gPOeT*KOb&TjKKOud-CNu_RCPajhV z;pFwjBcN}lOK-oe8f|G`JV|~4wNyqM)!Ag#?1pRzyntmlp`odVh9j4hno|__i_Wba z{vCLskjoG6mVU)i>1#7ZNO>~6Z!6F^!Dq>#QRJIJTZmT?v1ttcfI$G%O%CjK9l!9e zBq%lte>MXn(Jg>deHTfuoY84KT*%GMjmnmX<%|_Xgz<7962oE&)o+PT&dzX&_T4{` zK1heCk)RT`c-Dnm7uo4zjF@J3C3(_$%xlB)K z96jKE>F0>d9-6Ke=gh3hnvDREOo$W@PeEyj@aygM18r|{5)<2&L4x;;X zvtO6CNdiuz`E(pUA`rG5y=&?q9HXZ0AGa}qM zf}h;tcjdn9MyDQ4p!Q*Fmr47xoz8i+wR>s+ zp@o=tv}XJv9N}2H+^=~9r}_za-i7jf#d3*?d>&Tj{YN}#z3Y9(%BFzrpUYs2IbN{hgvF4xc8UcfgVD%Jq{>iFKnrxlaDJD;{c z;W*_>JRw1`dUt+Uj@xy>@a9siPz(Qpk|jme7N-7}EPvrjQ~Gt@E;EQgSL!5CElJt0%kSmdBM#@XN!G@i)Xu?Ge&-e~f9utK$WZTTfXTouYdPYk7laR7 z7%FX*HuUpl%9>Gpm_b1^$6q4$JJ0NdP0GJ@dNUYl@*bRCAC?arC1b#A`61{4Nbf*BsSy%EOJK8^gf~Yu;6l}CT*ucb zt>$)(N>EaeI53FLZf>!E=dmMT7x{XcC{JN;bCc^V>BQ`av>HCB)?F@D8V?5&nBtS;v_MZ|TMj|7-XoVQx{Rs&<31>T6!B zu}G52j%CbEPTiH2un@Vy@Ey3pcI8JiUgrI8Hi0(KtFyhiS{*4a#h5=u+B!O2f(|vv zG{5dAx{67KCQ`S7ugZ|({8pZx#B8gp;dKo!pj_3EXk4UU*8csxK;Q`%I9`&&`90wM zpB?v!3rmA zT8pDV$Xq;Y9c})bpDxk>`le%YLpVi)>#Fi~V3rxw5{fojY7eVL%O&#k+;Sr2qWJ>V z$80Y<=RiZsFhcZ7zu;VNO4-G-&SM9sNPior1-jA&xWaWyF+)-$WNlmWdfFa0QFzL{ z<3MI4s)gIw!GI#1r|eKg)Hql4c(UFHjXmn{5uXJ;yN{5ga8@KYPkep6o}CQcYiZ|n zFo_k#MVD7CfD_A1#7ynuNMOMPQd7@(1GCAH0D^{Nyd^h2&8_J^gsx62jmk#T0Cy!>VZK^+@=a`_jTF zk;@v)$&1*K+!T3LE1-L}n_Q>7;#3UnL>Jt^(-XxB*3HlvJc}CuoXJsLdgP$cB(5Fc zx@zG9_^Q6usom!vwjPn_qS;Be3zGjzB%HvRhpY)J7TGrQw{wyII#1Yow7aHB20^^- z^ie{~{W2XIgU4A!*1{li(IuGuTYyIO-9qBKHZm*nMT7e9bH%BbqW7DJ_KuJ7>5(Mh zS5MLJHIobjo-~O4@tOLBnHkfysVV*P$u*bVv)jB~l;zV>a?Gg6(WRx4KHvevE=ca` zagke@8hIWhLPx^*C{?7h)her!)bjC!RYR=5oMDU%4X^y!qOvM1UhXMgen9G~A2Pnj z`fp^|+Qye+m5fZII+RN(uVX=`y{0C7GL7P!w3OuGTjV&mQKoLDL1ax$yz(;ZtB??| z1sVUyXOvH)24By&K(E5cYx{)85Oe=cIz1eo-;%=k=}kso?K|X@fi(`EZZP8~sf7FN zYczFST;X;}%!qZ8zxH`(qU=cbh4+U3UI&Ga19ixR-xo&|w#}BjQGu?JGr@(y(yzf| z%U{0gRcz{+UlaZaD^B))rJWcY9)$mKKiJ?9cPW>j+mH@)mcNBGb|+x^hV|QA3Ld*O$_t*QhVgmUO_^ z<`WK-t!)cd_nNi%Qh1=uK|~z}TV<0xt?lfuQX8r%oRriYOnyIp|Ka_~(owE!Z+LO< zSjz#&UjyC)-$3H}Rj!$CkA`ng1;9o@gRb92F{a4mfKlGirK2H?^k2q&Fy)YcB*nOD zVjp(!16F|5<2{RwwD!csN4(1~dgQsPQrm{&PJYKTLKhfu7vSXK1ISlY4i*8%@_Ay) zLt2)22qJVw6vtY@@|$j~jh!NflQ&Hs9B?pHT#ST$L1~eqcvLCAMuT;vq1A{M@7-gU zqx_QBe~_|5+mFB@2uf|!_7~9HS+|?iJ42J}VkdHGQwz{XUwvUpcvBMj{tN2Ge=9@? z123R`m@Ge|;(RqpP~Qx;@)`Q=VJ}D&^*`Vyue26&Cv&H}k1kWv zjP%BL5RQ<0;4>nYp{dmH7tut>TbyU7gC4%5w6zdwEggWHT2f4yn2^Y7B$+UN zWLgiE>3c2{wXzj8svrpeofiSSH9GJEr}%7sQRzRI9*Uh+a<7108(1oPcz77=Oz-qO zezRAUHVj0+#;@Yq0`EID)1cK>PzRQa?Z=8vN*+rT_rH!Ck7|$LwM-Tu?8e{&c5Lq| zbzfo1-B_5S?=p>1A7$A?Z~&*_R!rCd!-0=O)PGK{r(xlT67P`=B=-G2JRB{0WYFq% z=OD`VpVimt?$d!`%SXCTd&3W{*FZ`?h=q$M`gK)hem=`jn;nyz;g0Zk=!3iHynUR- zf>_-T^BWqdW?qCj0Ux|-b5G15<>>o5ve;nl_vzCo#fs;uL$%VzoIw@6grQ3@{cOg8 zH|Povc#v7#=>sh31D#&<(?+Gd2f9;=jVjW%U#TL;m;w-f<=P^u!Pa(|p~PEYRcCY9 z`2L*Z2v18tC}8nqqB`J z>|wHO_dGQ>G#B{*Nil;fS>}1)4djs?r3$Dbqfr9Qt1}O>rp9Hr&eU9LnD?=m7%lIM zOcD3iejRoo80UW!d@!1^hefc4>rNX8cjv&Vj@ul46cy1FxyD~aWF|V?qskOJ@|PeW z91#gN?iT1&Yrd12BL-eleiZ>Kce(`el~e55?}dOTy&#e+IkDcufM)~Fntz%lUPW(v znsHn{a#YS53$LUFlvB=oN`PN|_ryuu0m}4vEWlAD8oPDBai(==`?9Tf&X_jkb<7m71%R^-xE0oTTZkkI^C8NqRLrt zq8|iLZ3qEB=vrIMg)uIED8WqzHe#@Xv`#<DTfXl7~=nVl1nozsPS*b(1;)A0S-wDNGx)apw5Vq!SNWy)G5cH1t? zsMN69;t70P;Z6R|{x2kfhuyks{<5tH{8yEHw5B~xj5*;k2`VUkF(JMC4oAeCvuaYO zxv=oT^cMGt?$Tq_0W;f2wf%qR)^2XvB~&r7;>fJF^LNUS*DpykQrIHG@Ms%Xr}X&K zlwBNEwX06p70LnfOZXI*%0{q?w4%NEM&`!}HIJt!6sC#k2RPB%Y=!<+<*ll7 zKtHnZ)=9lO=Fuyv)E2>{eAn5bbB8xcT?UqS=+h1J0eQ zfR}gm*42l*?5!KUDncE+f8isMEI&3P!9jWScJ^w@G>jrX%aY&67+kTeKT6Jabknev zY~{ywpzO#QMV})Y+o7lE@;mae`k2f3Ksr$WQD;IF?tLNN@I1GYAb~*O0XD3DVKZuE zlYe`h1^G-E&_}lVei zCM;tshU}l7u+iuo0 zDJ>s~DfGt9)U3Q%%e^Fh-)}diJBzpSwLMSg3h(NVVjG#j+i1i-2a;~$^z_`8Yt?Ew z>JH@N=lZxG+8%~o6J82)_?UB^aFaxLtb0=@^`<1WnA{vXEj6Y6`1PLcYp;{@A|XM^KHU7T zdLH~(YgC@gaUN)LTxsj$ivPAg z;prCo{LvYiO{RDTRJRAj3;@sTji_IJLZ zz<(t4>hI!#M+Bk^Fj^2D7+gDMH@V4BHtx*@%BCP!i!Pr44c8TtCf1%V`@ydJE&$NH z@AXY^jSA|aw@X`lLM?63z<`~Rm;$*UyDh*C9-HF^n@K*JbQrOuB$xQTWT=*Yb+C~J zrvF01iep?L=ie^5_fZcV#dvfduKydUFopxf(O_=}oNusZ@YRc(bh~)0ag1q||K3>(j!_O}>)eyWkUktI@iAjJrSs?mxtKod1ve%QE zC3dj*osFph+%tv$@r9x1v*HFPRByJ{q6B(x!I^Vu_y&GRz^wT4M+oUW*eT7Gh<#sb zt8$M4Y5=x7)ba=Bhc9+9#KfpE%yv?+y!n%GzX8;eU-H%CoaQkoOFCqns|4Z(&1FU6 zyi~*e>2{!%VaXUdMMKlb@h}0c&~r{zj|??V2Pl7lZ~O*g)s!p*%i6aR%i!Qll$C$m z>5qE1g6E}huZ3*V{hQ1n0oUFt(<-J3QE+hb?8gqRsxKW195SlsYm{l5Qfe)Rv^OZF z7uHz#m`7Pto6l+MQzD)O(K3fGJqIVKz%OaMIaS7R|3;LPW5v6j>X2@2lAgRX^hF|l z?(%{4GyONG$S1#8e~WD#1-U)CZu?8Sw8L|9L`y2f&~Nu1e&G2NPJUXb&wxsJ4w9d> zBG@h{>_Iz$r#A+IE6(-b&E)lU%(06#j_s2d=su}VXpjV-09Yi zgv?_yi7|7FswfXOwvV0ga(T>hqa7}nuHkaiP*zp`CVV|upJIg(I2B=qnx>m3{b2*e zOv-!J)HEA_JPs3$?r~3Fn?j ze}XWOnfzYq40G&0egXHc5`%tD(cZhUMngby@TSUu%1NL1B1<8@gKuAgEfxsaola0T zN$~pKJmJF-`LDC)i6;YIrAzlQ{n_7=GbX7&LtpV+Z2$c>`V$;A32oQnP}w;v+^V2kEZ7;cVi^Z!f2jSF;3odECpc1 z8!=1y`8iEpg4BnR8)CUq|ADPiqq5&D$c8@S%L*9IwOc#-M8y6FuyFB1b5%O)!N;GN zudTE_loUS1)%>2+rFq_|^))}sOL4;br`%@qa=9ZdjD|Fo6J--!2;edQ56$N|5ss);+TdLMd=6 zL8v0aBfGM=7^|F@s`_L)*LsOgzW<|Dx%7{6liTG3w*AU(!N7)_4iK5FJc0GeUVXmd zPB|Z@`Ech?{e1W$;B1b0BGiet05CM514iC%NPA|}mJK*2hpmiQ&$?)Eq&}=eD{^MF zU#~gp+ei+%+At}cbK1+jvo!HmP?2R^x{-J=gMXvJgf-Y7IwU47{ibX8+;huigvA>n zCMeSFN)cREk)wJs->uQO1EQE)X}fI=wM`R!{0j89?i~(KDG7CkKDAuIsO{DeP8sb6 zn%>a^-lXya;47{Z#FP|q(*_|)-dyHRz59^hP%$A-^?a~hunql$@KyO3cUBM!QyGx^& zW!YOTBSyE=l7x#-ZzAr|7>s~4 zayKrJp2j9!gfLoDBq|I@?PUj)x~Wdt&Z@D^vYu-mB!_>;OI5#%8){h1<_WWYixju6 z1=&6e5UAIWtg(R$d*@MUJFER<-oZP94**SvcfC&d?4G-VVjwW8^t(*fmAnGSDV+j@ zcOKWVF1jct@(5)OU%5+?{f;5A{(EW0tdi{$xw~AEnxn)yGvYmhSakN1G%6LG>r7xO zKN0d;%p3vi4HyM!&e@p`H4c_QzLgvbZbat`8N>qDhjP?h4zMNDq|dzoCnT*8oaf+z z%`!`bYWl3A;I|Bbe-Qb^-%TqYn=4vS@v&LnQh!^vdjxMaYGE)Y>s@npDPUsuM9ri4 z>e?>bnz6)^&Uzc$dRcim=40E515Bt4hf8GLxl#MX$!eU5%zl%j``-p)GA2fI%g#s& zR6M#Mm2kO0)sj1II?J*s%kpK*5HI!jFqcl>SBy_hU;ux|%{%6;o@c*at-5j+nC1gc{(yCFB ziBbQ9>zpEy&Jx+F?C(#8AIqyr7jla+%mwKZlWv^```wFKTGXm<9^IN+<*D7-~j4OT@qNu!_JWM0WA5!bKPvC^LTP%Z-1^pJ)J*c zEL7OX!7sMz>d_lNcQN>7yczc|85+)S7{4?#?iuG$IvE9rS;Xf0tae|&l{9zL3fkv6 zW7S{$ssP3DvjEKV&A99&^+*t}Im~}v;JG;KYjH$w`0^jr3gfrnv*SvG^AV;c;0a9q zoER(DL_~J(M)l2#vSNq!mQGSr#JAkg&q+*N%((5*e;3%_aljBGzY_gg4%I4d+Xm4A zzfggW#whh!hxaExZ(Pi5j*xF;(QE%Q;Eylau(#stoDX|);KK}VS;zNVn|h)}yyWq~ zji$E6mg$OUdB9}6m$8c+AR?0#V>yWzQ1;>0xfM8&u`-}|@Q?0tcugQ?h}UjnU98lX zGK#kuwC44763SJg?`7qhtgKNveM6vbcHApDuCek?m6wV zC&|7f=#CA4MnWVH={g{8j>@mj$9h?*BZIi{OLcPAmAhW~OlC|io4YMKQmda+1>Ohs zMX5P!Ft8Eq8Qiro0~`x* z^LRgBcq!Q;9{-|@_e;X{#^9buuOE<3(fTM;yB#5c$MGW6dS?MeaXZUCDNL1321FM1 zRS(Fhan^c+Ykc_qJ2u@v&J@}B@d+xzn)RcIN|^jUiN16jncQK4qOBbmzas%(%l}T7 z3qSJ9TUOi9@=+j2z0KZNM`i-g!~D*`LBX!9t*&KuYAFw`+gwts@8z6)cT`yCEtYO~ ztt~YZG~IO5-&Wu%A2Se0-UnkIZ;oMLh-Ir6`4Cc8AK(e()5K#QCDrhJ{Oiz|i_%)2 zb0LWND%4htUf{!F39LmJNiu+1UhATmQpWWL-+7?xK$CrtCkc$RdXfcYSS zq*wo3WdVTuDygv|p&Z!iKBoYR$WL#NXiG$zmoBj9-x7~49^`LTd8hDnl}}<6p0ve! z5wMeTQNfArU8qSjrL=Q8ZdNuH!Y~>z9-!(Ut9=*erPjWb>(V3pF;vB=z7S_Jt31VB=G7Z712R(LU7p+guexsDhY9u^ELIiTt1wbR1^tKgmR@9Fb8X^0&SNN>jD&I9kiLJp) zljC^c{4Hg+;3W85bA|S?YMedh`~psevIpP2^;7}|xFItYKy(KFJpKrIaS{9-#i<|u z$t)eCL~e!@A-R#6H(-qK3)MlF`(M~@TiLLPmG)-*L2F1>F|C-i;yHBV)~tDepqRZO z0JQDqazkc9lGGvIFhjjt&}hIjww-yTU6Rg2UPJ&l2sKeeX#_aomemcL{g7W}7z)0_ zF~~F^v-T)Ba&6?M#Z;)}Dd{5pt1TBx$3puw z@E!q%*j2Xn$EOT=eezWk6As{tXi@`Y4geJoDGI&}Y3tcTZvm&qJUjcQa^?m|m?;7f z-wGj#oo0`t?cKT~{~@k8mcyrY!t;5KNi_5kV~zxjZeGj2d%R&6jWL3N$pN6*O7!Bg z<_#4ufjuBg5iJON5l5&2nqca*LFNGLmQGH16%(VtfBJ09-TPho^y0W$ zu~~Q>xcAieLW%Wvgq(n2JhNl1QW;kkcq`k^2NvSlOoI|KGw0BCSZg#tHmFBsm?JaE z1%(%wLMC(ZeKkwY0na1tSjb%%$Gn;$kPe8x0vHLEJdftThY`6&r2%|#P1pG8dmcz< zH)y8mC<~;R$dA0T59rfh8cgzUTR|JRThJ%JOlVxes_j3~ltx(Ff=!9%$smqHiMbv= zPX@KYQdoOlviKU*ycXK3t`mZKs*qize~vw1ymJ*&EZBSP`BF=8A?ees3fFoqvqeo1 z#}ED!T%TCBpwM-)!jHY#srZwqF8&w#(g54Wgd%4kp552}H1z0G_U~`p**^m3C)0nL z*&ov!xoh*54|Ak(XgE6Cj3dT#cB(Y#1BGmFEHl<;W^UH~q}2Z40;Jl8$OUCDwSyf|stE!b ztd-8Cc|KJ`l@&>bIVu|xJ~ory^0(wSzSqiGk7(W4@s-f=#FqNKK1H3AZ?QZR+nJY% z@M>AoQ>r&4g(s*I2H)cVehP0A4`l`Y|9^P+LF5OnW3k^h&bzE<>SCL;2Z#bE|8Ai+YNag z%1R+Fv!X$|FGrf4gD_tY!iU9iUK;!?8|VsbzJH>b8*S%jIJ{S*bC~K63-MPX=Bq-G zHtY$&-RD^@;ruaX~P0Xx#x;cWFu z=s*)Z-G#$~-<0EQUYaQh`H%5kzbAyGhFU`z3w5jZ@ZA7dokD2=sQos%?x%Hnd1K~h z_hrqGY}i~LuY>ItUI%uiKrY+%NBkLr7@e*ws8V*R;?;ab(^^o652-{>199*t@Ns%Rz6}gvY)Rm zb_6!bInoK_5^Mmpm*X;sz^ zjeU3qTHC!HL|==yk>z95UMU*%1D*rim|OCJk|DSFp<0SVsRCfY+e5nuS7j2N+^R++ zdQScOSF)vh&Q+G25$C3OATwUt?pK(s4+?|67ftD14XdphY}Nv} zur9(RgoogC5sJ9R((56D9Y>oaB_}soXbNZXUPQuktKT-!P#I|RPVEl9>$Ly^uC!Dr^)7U*+PKK%QyHK~L)g4#H2O4M)CZmQ z98nl=V{$qdvMV2Q8|h|YJ}q7HNxSPch`&WvnwvZ!%DYg_orvcs$gVk!mDh;H=oK!g z%0wol%B%$3(CZ*T2hwhp8+Ii_p#D!&)0;QH$0H}2LN_yc&o65lp~%9lUNtdDSy|Z~ ze62OT7B^ObOPy4KO+o;zzHB!TOnP4~KS&)T=jeH7U%z)~Tc135yoSBicc zsbk2>TumXMADPF+w>GUnPcn&(rqcT|$}9Jp1FU5gDyw|pSR}&b8OJpxL=p)yft~_L zji_9r{$$aR+vhH>FtF+NN!F{8N<=qeK%1o1)m1yR(dhlqX$*lV#TasobaaDUG)AtB zH6*c%v5IMc8bot-WzIe}P38lN?{6G;NohNB4>oo8DV21kcDg9i=&K@R70cK)yv?nK z?3KXuD)VP)a2SE_KYyl`Ia-i|Ay{NL>P7^;siCovE?|rK^I&3|`vatS9~G+84TPn zTL?~p$1pWJIa6TyGRIm@v*GpYm08P|zD4Xi3%m?BHv9IbmxDYxr=N58dc=^wIYrDM zX6EMRH0`AK(VbRrN(|O;0p9?a(OK0YZh&kAld}yf5`|iq49R((@XTf35w6+c{PU*a zGIvD~X97eEqBk<85nlZK{7pA3h9f|g4js~}CrFFDy7sRY5-i8lN5vak3+cnahO7Z< zYSXW^Eh~`??#hixV^pt#C{gpDieWUp@BtQ--n#qd6`)}B_V(@qMtH$vOh-*bSC()3 z%2{|}3T;C}_FGk1h7@0uy?ZMpFk?0V+BKj^K~r#&iHe5480aR?gz1D{9=;IJ>Z>g*xd(eMX4A{nSy;UU^#JA9_Vo zELYt2c3!~5M0qZ=s+?cC=KvZ?J<0ghpO1ajV~E7=#bU65s{@srC*eA0M}PQiHExNY z%XjUE3(FbXu!QDa+0@H6qD_2HXw;r8m_dae-Wh+_!uVS2J@Qn~A5{^~t^mDP((I7Z z5krZkcifBvb$jeCNj=$cN%8%F9yH(W6$c8v?c4u`vJGfHe^Rp<{Q7zQ+`t+zTzS{= z^T}Ro*Fx22L_glqbOqs(RF)^YJJJPvV*vd^s2kLNxh&f0RCxHsJ}PN8qm_F6~C+DUgck`_3xjb#$=zOAlaf5=U{JHOq&C9Flqm9Hg_LLT-=MQc@w zJ?$4;k@P}hqM@3I=+eSMkk+9D|3rI%kd*vpg?~Y#tZ<`dVSpffpuH9uJc2i#OwKne zQLh6l8GbI?D+jS2+q+S|TyuNLKh&!7Po5IwH;(6TTuCga6@7Iv}K7LD@;W)7`dRM!3PbDtGj{^FD{6VRU0Ph=VgL&XW(+q zVgoV39UNLXso6T|*1vEos0iQ(v*a>)Tn_AYaYFAnWqGnuG(n}Gy0U`GFN+2pH{s%R zzMx7>hsw;KiX${|AmzBDg+eD4(Oux|tpz7_&NW#LXNzGOTb2IC(cadL2b&9-ZC(sh zafa_yc^bmy2GaKgvZosx924&rcLGoIvDp4}mr@!ZUk;!@>K3)H#Po z@T(bfIR6ZD-viFguS;W+9DB@U5-(O+;)ZtJDM9=kk|LJl`lg%mM;JsDw?9PvcsTxz zDczTo;HA5yP9>ry^4X~=!Pa&Wqnvh^@Vvk8I*^qx$J=iY?~Z6WM3~ml%ATfd?ixum zfREy$zNzxc$&CTr^^589^kWMzStk^?E5~27FP~oDTA=cuwTXuo$(|`aoGyGk3cvba zob^u4j9e~YD1Y19#VoPdDGZfooB!M*EGZJddd`0tGYH)BMg2~X{Nyg3x-HF*pqAL$ zHx8ix)U$0h71jwBZgPZuc`qiwsUG@H4-FaIy#lrYMGz_v`zJPm(B?uIcrT{R=^7T< z8mv-PIqB)xNsT?_A-;G@01;BzzhDHEqwSnd>m-gPbbSY23wv|}-yuW~N7xv8$I~I+ z?k4r3Bb0I;CB)6yAELR$N>tjtR&(N~;bAb|JkNd5+rZ!n9MY#i&xbgM-0COTsi1mG zZ-h7zzo4tf(DU>V7D_1V6zsI}5=vUvJfA$oR%Z5}vvWgL#0pYFi()UbSM_`(RDUQC z{Ot;#1A{D0jO7L?sjOcc?pg9jX^9Gu>a(ym`Jnm?z_teMXb*7s8~9J*er;Sq*;$|} z2KWc}h`UI&z+Mv%LehS6U*OW>e+4SjzFE|Q2?2ow(^CRD8u*|8yPD0(&vqw&_GKSTJ>6Dq48Fa>oeicT0!ww|=v4Ft`5 z4Q|GTn7*Fg#bt4|C@Mi;hyhl2pU?kHfC$1yDk)v%@1$slh=NC{VNj=WUZ*5yJc0hN z#w&XwL@ZHfK)Spk48a1ag{Ek{h17J25Ct!V?m$JP(A`0oduZs^HR!G|{Ld(aD8Rl7 zBZBN+@UapVr9-^Tt_fPugPYI?lx31OWGxA?xEb~+K$F)XNqs9fJ?LWt)H%#RT?@fz zAW5@?xGNB87<9K^Kp+^3eFd@T>{%)8UaewS6$Lx>s#d8lB52aeQ5fk(-1we)JAp`!KQRv6#&z0odCYnqx` zSzewr=+Urq{$>?{ckgoQv^w)Vj#R=O9W1mj2}VgdMCp=Z7rMUh8@=H~Wl+Z6oB5Nf zi))}J;J8Nld-U%$S&Oou&6xaBv~r(eq~7o+YGhpbdif{e{?feIDT&Jb4d~-T6{4{8 zYwsLfNDd8!8LR_3myRH4uf^xfFA*3C;z7(JDu}SHdZt@+8A7<}XZS&oqn4n!`L{aN zJ{SaP6-9}DROi_LazU(6CrxPn=UzAjo|wQmQ!29rLs)`lkDMS=qNbE^QyQ^;&1>_Y zOh0vgdfygU7ki&4qjyOlbKv*=N3|3RFT{AS_Qx$3EO#$UFLNyO?b%Tk+*9*=jlHuZ za{JpugNrK+D>5tOt}mt3ElP85&%P@*XS|VWt5I28f4kZ&{vESSV6MVY44b~;o63@` z(Mu259~^m9uLU$S&Sr6&qWy^)4x$=8Dt4%afnKozb}7VK37g{fw34gPkrxr zC!$KnLi!H+J>{?L3XAfBTN`&c?zq3d`7XZP{hg1w>g!0GvqW;6Zli8f&DUl{HBRW( zUS4XKi*>g?4 zR63^fT!;RdN3T6v5bf3L)mth=F2pBfX#CfBEBCf>)7vX=ZyMb+>Kpn#R5CRF>PDXO z^$Drfyw$vky!nQ^w!yYy_3!E%UG;01ZQt5#)wg=b*(%t)v9_>vsMDz|sJuMhQrS|* zSk`2cX;M)*?%w@zw|=1heZ$3%E0g5YRrOx=5zg-S*xehxR&{S>wq-^%M?61Mrl5_V zqO0Jt<%;zG^q57_QgJSKIDbnu;_H6)x`ewmiUBn#jjm@Nywc-Qa3^n6*PY$H$v*~@ zkep~3Jt&@|BA&<5JKNv3Y!GnZ=dc+1^PnKFF0X6z-E{Sq?3Tw?{0#ED4Dw2$jkNzr zcfaO>*~$-9YGjt=qxlb!rkbWv?w?l$BwQrYttuxzHoOTcKXTq?S2C~`xH9G&1=F12=@u0gdb2D;xdstNn(_GlpXOYHZ+{CBSlql+V!w@ zYE%7LQIk5WdTMlK^vah?z6bsP(kl6mR$mUM4|~wX-HKcrAE9vmCt z45IJYo?YH!4!WE|71G7k<<2khL-t3)q^7+nx5=KKsBvhm{YE*mgZ8BR$Peqnyt;v)=u$`yaO_gCAVuYVlvalN%(svnU20 z)unwPv$;l9ukm)x+*V{ll%m$%)yl17DDj&@c17XUq0R4g-=@>#^0$$MO{OlU#f?19nhMQIcJ-+x`3I%OqgY4#je_@u~8@Crw~&$o_OGcP{9 zujpyIk8=Czw*F`CTA>|Xc6rX996E2>so$Sy=Pf^N9vo^`}o4fv~s&m1-FYsqiPt!lD=)U*}a_BqV$ zXq}@_Zg_UTEo7ICFg{kOpgh}#3H3SpdUP<)HXHd^_-uHvWhzK`tFqO!)oEXCQ+-Nv zHhxUi4nH%wJp+H(8B~P%F{67#9v6ecryr!!Ym%kDN*#Pk`*fpFUPVD+N%isBI<8C; zbsr^E$c`_;4_2|WNkn4DHYSFDy!=s|vzL?E;T8Vo>~H7B#p>zau3ql;fne$Dj{BCU zn_q%vg1ELz=jlzC!+GH%ga^kp2X{uwPBSlNW)etAUSe=A($}Ve-sE-ByKM|Xp_d^D z5d%TT1n{^HL4lGG^!F|VDZYdtcApHVuR0JEL8q^!ZXW#m-|c7A zrQ7)9AbT-VZ81{yv|ln5g7LM*&Dv?2Nx$@jGR<^0Ec3KD5?#VOZ%If6HgGo|{CsHK z@cEY~^VD0`p9vp@h!RNE>=%}nwhT9IvR-9{^|oUb>DRgCq(o~)rMd;WX3?kLXQZxP zMfsr;m{(8n2e87`C|+1JZ^Be`e-7gOI}r%{1B)(#&VPVK6aV+030i90t{-_}jiCn* z|2f4D4H-ung4f+U^gZ}HHtE*o zSzqw`3+RFxwrzQi5YYi+7-oclUu$XTb!?x`RnH;jcTcWuzJ^6>!4N7x>D$@E@YfD; zM!{VNg4>Wf11TeX5B_W+Eb`CcnONhDAXW4v6@n@xgk<@y@6WXKWMM)0$6!M!^(WzMsrvS`X2=W{`m1;3R?aN{USvU+UZP{LxhT$ z?_*Pw!V3m$7kj%Jedpywcv_Z3LC~Ag^(G@BjEzmUst~Np!i+_ZR2|#@`}d`v>oSnq zsEmC_WC0I5|HT&W>2T&AHBL^>1uVAlbla}M`-@+`7Yef#Qh3zqm)~GpIUe+FWzQ`Y zb|HW)TJ7Hf4e6L)Hx&^TVvv!*TbmQ}$j@)Lj79tSgP=Zga23OIyezDm$nF?S^ytwe zYdgDcYKc}vXdB&hJrR_GF0!oH9aT>YaR2ASbu`b^Fd<5Zy7^7|Z!?|4L<>Qjg=%tk zwry|WOU%{j>1pgj4E@f@MzxE(yZc1o?Dk~+nef=dgN-3KOpkDQ%j%`&%R5k`RkdSV zn(p173_2l<-D@Pij<5yd9*HA+gZJj4HWLSg7D0XZt}c9EcQtY?J`#q+@0aSGVD0^4v~m0OmO|p`GYq$1{>^_OXn7~0Om*2jZSeKpysN8= z_|kK7$FR*Ct$W|D2CrmU-Kw-CjMRRB*EKX8!B3WbXc+4A7{BEBMt>r&qh_BBTt)1#vB*``3BAKtan@^lq!hjS{!NAh5@P=B)F z1c(a3P2`(0HqS9nFBZXy;7=-PZ*9d9Ubr6TbYQMBs++P{0vrG@9T8Zs}Ap_Lsy7 zBDG==h3%1YW5{noSmL5oT$uDp%+-&F7SLbtXa1MW<~Hs-3P%&UIT1-)BC<4IY4>TL zk_rEeF*1Kucu_ZJ2N`QF8s}aZLe9a#f&FIH&IF4hys@pskJ?t&({}Dx>FfBEk6MRlm*OH*g#9v+CWjj-xQ}9Kz7>@Gt>ZgieO2WBf^V*obP_A!XW#PzU_k z^+@B1gX7!p_noS%s|mm7@zZb)un~QBK5cP2rRqWgde}RyJe0^-)vK}aIi*@L^qU+< z4HaacD!z|!VIF_jKzKL0j+^`P<%=9SEGp6m62D4%@7j3;%&+jIb&#vs+1j3jSXjUh zs&QEzd#@xS)(y|2{9{Xtp$@n@W!)Cq2>qe5w`ONjGp6C)_ z6ciMMZmq=!3?eolefr3lB2h5f1O&*2mUq3=850Q7#wARgRia zi|5;x3_nESrzVU?acyU3XR5s(dPSqc#Nt`(3^$2<>5h-wuw_!OzK5zH33eUW`vi~ z=NoC0cK79 zg=L;!*hkRqCi|@^bJ2sG4%~_aVdh|CLLV;;sL1N)w(|S1lv9;6OlpkLl1vcic^*0s zvHof1oKOl23v2XWrNb|(;^M9C?Q!sH5)uR|Xm(YNm8ZUmUIX1WqrhgQ1<~-r-}miJ z+_xEaubZ034$b3+kPgBH#W1ZbMcfaZ+Uj*IF&?M>2DEWkFhjap-w&^2w?b_LJHSSwAj$IYkt@@0Do;&TD zKDMU$sIl_iIdIsL76f!5dpFE0EoCN7o z@7Q%5*o_39S^3Gb6y4P*M(D>vu__x*wEggqkYkDYMnCif;jhzKMKESaZlDCL7XNZP zlcfuJxmw+vQkBl{=p6&TNa0CPQ2LPDE_KHawQAVPw=9C3iSp8!BjlXVuU43LFh9Ly zMOMU06_+FZ>iagXt>fruXRBp9!^}kuTld(>ZOs%ODLcDp@0YhKi z-mxo(C#UI#8IX`LN{+{Nj*xXK*brtX;i6f&re&jq11G`;oGWO1?(*qyTHtwjr%I2T zoJV=o4n?tT=NXJjgvvmbYUZ$z!;X%+Oi%q~l?YHEtO&MRg<| zgVZhk!7F{9rj)Ocv8cB<{g~;@^11^Z%quK#aUDDCD($tkdve#K=%R|LAVTp;CBggO zyyP>d6Y$;xXFA|WG2^b(*A_-y$hol2w>Ja2Q!#-_-JGYVr`Q1`PXG1j`h1$;mE<~S z#7G;2-huWrJBZbWRxzmR4$CBoVd0o*UsGnPNAs|5buU>&tdVznN0-&r{b4fb}xrj$DOwn23u%5pU_^Nw|GZD@2p_;HN#pDp6>(OUBs?+rK6o zbDkA>Gfky)mU7=PHI?G4!Iyq-$^uAp63ZEsd-(bH&EVEcybqX_9Ee6rwN8{FgW_A* z9z%(?fU#P!|Ix{46IxOj@Cq_kA$k|k6E+cvrJQLA+LrkB@UvYzd*}Y~*kRLnVg?la z0S^uhdA!R*@cZ@f#`%WT9wlOMg5eo5l&bhxRhXRj45CEDiF7A**ZBhPf^}JZn8X2t z05zihc5J6IV-JDVCL6xj`&kbq)ZG*wiM0+6PU9l%bzMSbYIuG?ha3%Gc9CA1AM z(AU=oPfF{CoI@buK_|7;Q&l9YWB*?rO1$3o+JEmIxfA04l?-{mt1O4t7QJzx=oq|6 z7EU;wCx{_byU~dV0WN0Fx6oQOAt%s*fJ2`8!|D9kAVFO4Ts+wNvNB#3E#od#IBsuG z>b?!$Uw)eLmKJOU;T#6NE;P(`J$3=|O%Rtbmjj+{nuOq8L}k0G7)GmGSgbYU&1|wq z>%HU{?r9eJnG*$&Aw-gR0Aj1Xxy=UzjEg^g_HsH{TfTrO+7!Tb7q!H~&dv@RENgyk z7a|>lqF{|X%g!*w++K$_jJLqV$;Q!fSZC<$e+tMwOod5hHDNTk&+lV%GnKYkA;pfd zQXz@tXHmqQx0bsS)Lf++1k};Xw+jCE|M!~zcrwx&ZTN=izD*=~j6WpKMGhMzK}1R* z#0KSrxCrOkDpOLm~*CgiR`R3akoUT1TDzGmmg z^Ya{#U-w;2B35U}_8UKwIJ~%chY{+WVnD#un6&+_7np$c`l|l#O!7OP-!Gu~GIDb~ z&_N_gN?1SRk9>-}8mW;5R5VY`3)9dal{vq(ET)cJbqb{uq%t7;t@=x5uWX+2{W_a> z<+(neZFPf{C>CxfBAnx(lT0Eqb%xp!5tBeP?_wP}P(Tvk=V6bDiJxh ztQebzM5Oo-(z6g(UzFHjy1@TeHb6FM5)WLcE*I4@GdkMc{KY{;NumWoYiG;nyC&@H z{og^23;y#<+2+{@;TF^f73((z;)UB9cR9HstRwWpkJDa;Mh!gs|7j7t7&E?za0C~Y z*`wElV5UsO`uy7G>&K*n?Tz1P{^-R~h3*WT-CB`13Gy~$;Tx2aF^>5lBKVJz8PD8% z&~kR#(J|8F{1lQbzr?pFtqK3>UneMGBWT=3@cr(xyak{4l>M+qpahVeR{Jhm&aFC?i6Rtx|{N zt?9pP*Dv*6*7da0wb8kc!Ry1tDU`FKt2RJ=@+#m`Qc3>s4{tOUd!bKPS0vk@@qx|J z2c|>PEv{VHg?NaeWWPA&_Zf&6u#u}5pQIp0P9-J+%__zg&<0M#CJ!z&dFKq2Rb@WS^Ch9W2 z@3(EPHf2*s?Wc}Mm4`-(5hra`0+}WP1p{i?f?8xHA{rsl(A_SlaGK@BQ0Tui0nob@ z%fk?Q>*{>oGpp(`lWQUK(e$;OG53`$EQ(KRuo^1#4io9J&la8?ZC!?Sz1l7%HDf6* z7rnL*TUPm=5AiMv`~N40OEs`(HRDlJhxHLcgDQ=lgMV%N%S(8(Of*Mj)|%(eUWpB+ zMSl-dJykJb&}Pha;=a(pi4Y8?=>6QFdmH))G8535ihkeo9f|`h3dG~4@ZPTN)amJV zZ5~|YEyc3ase^~6Ar5I#+dMPTg6bAy#nLFZvCBLSzG{M`(0{Ruq^$_Q#MZtVBCn#t z{b0RCdFrsu68y;E`so&_%3i{|*cY=?CJtH0oToF2 zZPD~zA^v`=BlR4O)Yh4xQeVBP%i&wf2@Ee4aX>es(10&zh`+!DDYSH46~4q$KQCmx zqYY8QrCcO9o+QRXcX5#?|HCHPtGlNd+xh0IWXp;JXQxwM^jy936GdMKaMS$pfepo< zO`NxLpBf3pcnbL&>_z*ACcW~R(z!P`d#r86q1WcIJVg*B{QxG=?}EGE++E|y2V zn9+m&e2aM4iPXE0`L4^&TP{7@&Ele2-#qvo;Tv`xt;2z{cleJ|D~4W=mJI|&E)|rE zlwI>-eKUPMbsYEL!Dn0GV6GQlQR_;D|5M!~MqCaN3=gHw(8PWT1g=zZ+;+2Xm{{br zPsXTm7iM;^R!lQ}#d|Y64UzLx=0Ps`Nw*c z)5H2jymfrMZTfwqzWqRd?yzptOZ7>$h{1$1Qk*SazYG)?=|5%kYH7?EOlD6@u!~2} zM&pTZKG6Q>^hJSGJw`ydzYHKmw#dcF2MulY=m`RS8!8Dkiv zrM|`#(kofyamide>Q6(Pg*j`ISP;5LOMctAAw8XdZ;Z^lH?11Rn=nSPU0k){ph0iI z*S+SU)@91J*rx-16!fX5L>dQ)gEOm-U>H46qA&D0pqSki8~iJ@7}ELb*{M-6q&boP zGw`)cWnKuX`FLlp4zEHndtYfV+QVioK(S1LwVu{2V>q8pB@446-)-pJ z0@!D5oPS4HGx5~HtaGj`)x();h1RdkPwi$p3_fxVgJMJ zyaC=!lOTOZIT}3@SX>X!+@-&k>ZDVL?UHpQsfMQXvCvmOsjXL6R5@ai^7J4cmb9_^ zY+7*c!P<`<4e_9|3sB_xjv8A0_KoUsll_FlJp4LZr8UrB2tDVc%NcO>U+>1*o*oL5 zHsn@}9SS%hn+Vw+_|UZM{`?cO1G&6-0~tt8)#TWD>OMc;U|&Rcw`M{#BF8bD@v8>W zd-J4$V7_8IS@ur?Tc>kdb$?@a5_w^1_nY$k;OX}P5m2h8b0ci{!_QrbJ_XaX<)DCY znqcn2h%JQ=RaF@^68d{*#?S31Hf^_OU1HB_TX;Jm_S=hjKkmN%$ zEqi^rlpclwG)pc^9Ssm~_z}*=XrU2Mjd&+v~SC%vO$Jdp-T~wQ3JCI(29<T= zU%i;-i$^6Qg&q;7uci7tWQX{6Gj>YVuy=ML!GfKsfcRL|9}2k0?SqG`CPt)cgv98= z)q-^&pIjluf?*FdrxVS-+e~r^>{?dyEeVq5Wd+$QM@II-YX76{!6D$g+`^#^-VceR{qNH{!0TtCbb86;%#9}DPXbK*DbP-bc) z6DoS0)a?yt_`^0UghsLC*hKnys&^^72!PGh1!NX49S^CoXg4x5LFyaR(wjbK+cC>G zr~R6BC&(*(Zp>$}lNO)K*~|L<_rjzs6=_#Q9h(o5wF{Z`_NG~ZCX04|Elt>WK7?h< z^U$`r=Ytf9!6`h0DAG3x8KiH78GRVU4R9a6n5w)=--+jtyHfz^V?TY<$C`r7Vz^A{ z)xo63sVU7nff;!qGxFebb7FA$+d%zxLZP4o2wHgPkrCiaeQrvmV>DmysZ$KvZLILl z9}Rn>+0zHPIzON9`b)C_!g&ou#^@ae*OC+(P#u@Tevs*Rty<4X+iIv6;vzN9RrrKd zs`6s|zSt=KRKHcwDU_U_7n%fTgbe6P&DcrE)GG=?#3BW|Qe7+%oGZqBbi}|at}SHq zFuo%rNpAX6XtD29uro3EKT$NyNJs;0Nos)V-0!_y&ngL$6Qxk{=yLGOaJq9gXlJ3K zJOChdY?Lq1x~qX=m3>-}vkMPp)x++x97`if^(yl38`G=r>7SQ=shCFVY$CwxX~sco zmtR_Zkz5*b7oU#Eh9Qsg9Z+f|nb5@!r1FLeWh~G8jLwURgi(W4W%sBZ0pb7NPAJT+ zfdcBw2*1MeHr|?t!l+Bw22~#4xv@SlV7SUvN>zSh zUZV!G)mP8mUmd(vrlCmtq>ts4dmo{0vgD@Gm5Q40-mTNce)<_=nv&ex&f6Cu&9{ge z=j7Zr)|LmiZx>v6P&GD534t160UI1lAwEiicx@~txY*ZyRgw{?gH=vW9{Mifs0^Ab zk|jsY-#yPW37iXIxh5JO_Z;)*^5Pwl@6oqj#w9_r#QZjyADKOsP44v9t_ zwDGb%M}ROISD+;9qAVH&eKiD8ld9k~C3TMXR*8ySO}da{yUrsA2`c>hBS~TcH%iekmNom2b!eNKt1Di4JFhq$*a!< z*oi8RcpwLL=@D^ZU{`7^hUMZS{Dmy>+_2HgY_DE1_IW>tqSv7)e|)}HBq3Mp*e9-6ZwQpy|W9a z1l@fU#lL3?skW*6s= zDmEA6ry2?5GE7dM{5_{rF$S7D!i)a)C6w~w8;Z5u2zi?$!Ehm*aoC5AW?xPUa7Qak z%a5NvLfYAUS_}T7Fk*u^;_@+36H(U2DvtGAkbcZL02D!Y>7c&M9SVZeo7?IYW6^^8 zjge=HKVN;1(|hudBfjLWYskgVpuI{L*B$D@lLHR-SA#kn1$`gzE;&a0T8{$Yg_eSRYz z4aH@*ty>$}7? zf7dy_RT2Bz5gtU$=G@>ZHp0N|pbM?GJ=l7h} zsT)iB`baQ|UyA+RZC<~4=_<>LK+Ff4?zKXyi>>sgVX7kIZmB!MqEN}&y#lf?of)mc zsjS+&Gjw5ff=TjQ18Dn+IM-ZXW%_zobp~x%w66{XiyqnJ*6&KKh8Y;a09$<6^}A?y zB}bL>rY1L~{bAvCCVWn01o^YUKaXp$r_sn)ZxiihlLHi=yVZqUO4(Hk23gNyO7Ho2 zwpde35O<+^RUQUCC0)xvE>ld@ioJYGIf(iYaA(Ul90hdUAwD9KX~=(q_tg)pgxGRtcM4m4ABFWmxlhlS~g-j@?^&MkO79e z95Q-gL!J%<97r;tYVG@?-g*ExA}vhz$mVNLLq4qMCX#dlbN7kj1DQ*=ZqPQ_)76Tl zMhvBBT`HtN1*YE~tD1Jo5M-eyTLywUT8Npn)W6ze#^)h1LID_^9?w8f0LSscuMMEq ztsQNR6M^XlZ-$jhfd#?s0v-K0$aanG%ndC0!QVY>Q; z24E2BC`O0alP-kJdB__wr2RbT)A9ltSvI)C?_Q-P38ZxT zuWr)XDK$WVi$4@xdgIZf5p&j{t=X0|*h>~784gRs>+*XK(_gWBlqp%-(GS-p;JbIP-26x{3$7^i_Kde z`VQv(L+r$7yYK}Wi6YDD?!Z~7WJTD}vT znG%tEk&%V}v}1|2&C*bApp`aEOJbBOe_jY2<-RQl5dzi5K(`YfQrE$)9D6rmIMnp7Q8yumuEb^bu2S0G#X4~osom9IXh3X&7hO3%b3|7;b<61?pyUc7Qg-m-WR{cB)@eB zA_FEgau>3$e;!)uS6pi)JNt^O3)u){3Tl=6h~g>()JB11(6YXD{~}nqWpz9^dE@uS zA|@be*OV2Ys*RE#4+1I)HUiqA%=dWD#S-pgUsDzJbZyal(LGJhKN<||zXe?{PI*~6bcFGubffE!=0`_;dYq4!b!7d`5#oh3QmI)+Dj{42uX&50QLNU>uc0ec z@U*1d*WswE?Q)k;zGVd&Dv(d~+ba`zfeA&QurP!6^`Dh+ee9?JE|Cf$-xCIo;83)& zD%q`$a=PC6LT?ikThSPZM0_KNy@th(`O8gOuveM%c4ao0P$mPR>C zqh)mc$?pwgSnKyMcXC9D0vz;8V3iXjBc5F{#urRsG3h(#4P!l{i+5)RQeSi7C-HQT zzC>@g{jOx=>^t6(kx`}l?cKm<_|xT@872Sz(Cv&{plGTxzjY;t54d-^n2w~9Nr(6^ zw*LqxuT_Y94nM{ z{(0*sa&TSml~@Y(S>{mUHBUK z1@Mm@78J#{m304*TL=4B=pSNRI#!z*v}*Fc3l2)%H;#Ghk#?E#sk2&!t6l~vaHvJ7 zfFnLgNEk?f%zE~IG9|?k|Nc+UOs#hwnwEIp$ouHY;Z{a6T5Iw(YP+7ki~O_g=5?Zx zt7Os0va{FYPv@f~VemjzT`2zv$7T^@niqz&la%08GO@cw0@lI*ap~;?MPfhSlbD6HU`MMdc4CZ21%3sWFhQz5n$}wsp05%CqZ}*eAPd zGM8vS-Q)t+2hfKyc|)Tpa|R*#0#0BvL$|8Oc=dmJlvH>jlhEz+ajRd*fPZ>lJIW*X z7K`gc*CavQgA1|g?C0II=d?4JsALsvJK9eDi?dP+;d9>m4<5J7S(^eb0eoO;bq3un zfh>c9sSm@`o|ODm00^6_=snFgL%78TH9%;#{ZIpS6KJ!!NaBzc^?cQ-G}+ z^EHm_yM$Q&@H+g7Ct(L^S(n(2b^+6Fo&N%w=SVX6ZxZQfKp)pllt{n1)C3bA%I1|V zZ?!0LO>f!aGX%ek1TH6Q16Q?5TVha3Yra4tfnRIBc^&_3+2lK-VL_iz2HZ0XFdi0R zWFLfa^3B~Y>3@7A&HBBfTr?>uT0q%IAY<3aZHIwV|`7OU4u{erw>)uYn3Kz)kX<7uhcT%rBQ+e=N>RbLKA_enfu{} z0(!S=&l=kVlhRnpLPf_u-==Yh_r5T4=gMmwl9`l|E1@J|EQ>X`Fn+Uu>(jK?Wc_ou zQpR_2(i*%E3R%s?1jqVawAErsA^otuqYvhy?lZU)uTqy>5cE6fgIclk9z*5;FR;-H z20-7!T``4`lre(wV|)EmZ~!1oz9mt~^vGC!tg=j8zRJ>b!*W?ImB)_-spC?-g`2 zqp2zxOt}CJZ6q|>Hhfb!A0Q3@h1zE?sswUSE^{cJcViDltVBg}2Eiw3X8$;VY#1AU zd9JeA22BuxxShVx!uZEcGyv64yd$-<&BR!4<>qxSbrGYFN!9HOFWf&L4Fg|bMiWd8 z$jdAB%*}ECJy6UYa%)H`vLa1uEW7H)e;F!?l+@-VGk9bFbfXz4NXeUA@5+;aCizhH z;ciICtDEfV48;N)R^+pdPiQIPNsg8G+U+VvzM))>xRtY0Gg>QE}l;VSfT1L36VMns?q$rEvWKGukyYYUSX&jH=i00&bs z;1$`64MGxmjh(Gg^k5uDbVUkCWi9niVHLa|P&U0-%IKG(K+2SeSlc-2$mV_h@q=+| zrj2^KKE7Ovf6;VaTC%PZfnKlx%r<5~2F|CvWC6_lb!ClNY$=hdYYlUx?b1VGM`uTi z&E5^)eJ`C}qg3r8zH14C{|Xxi5ua<^iP^znP?E+P85}d(ITBeV^!wS%Mv9Gxbn9g@kBk+{byi3bu{TIj|9w_efJtned z+*$Uk@g!6Frir?=cqH%uCveF5`+N?XVy!s^02|2a;6k~_EekdRIIU2~tzbt&3XBng zZt?dl1JJyjF$43yA<|1WKVx&wF2?N;jGTQ2^;j41q#a*Y7Ba$eCO-1hgbGO_1$R z1#x=7CCnk|%qN;BxjPMzAyo8+|NZe6@6ZmAJwWV%#`Cl+n17z~gMh98a#x$Na8>z< zcgXfrqwn>>|JqVgQhj!qsm-p=~f)w4n%k+~p#-ELcJRxY-%3 zQuR;s<&2Kr^09|GYk5OL;8;bosB$aWK#BoZ1hiuX!I9@*ab*Szb1ir^{e(04+%aZl}}^3H33b&ONzc%lK{pkK8Rfl)Q;hW<@|Lu(W0R3Agy$)Mt>P+ z+w$>VT3dqwK?HiUVE2;0)+Bq{WVbw0l>Z8be>}JUEo`-g0UG{LUFp2}ElaCXRh(VEy`2un_X+yb%KJYDPK$-EnuFV{rd+d*EKC!9+W3()Fc2~ z&hiJdXK!0xh1c|C$UZEOo?9*bzfteaZ>)M5zuGQvCrl_lYM5^9Xi5Z<0gYWIEnHOx z4Vr7$0x=qIDQ&Vrd1snQK}K{6fc)cUGJTesn)VcTWXM~Nqy)@w=1%*MB8-vu&jEQI z-Gd0e*GfdX_$)J%d8RFhzNMvQ_QHFBqt^C7fjh7hWMo@-=YR^bpZK~vKuH&2=;!B5 zG*RuKDVz6(A%SSus={KXDU6+-M@8$iCFtPwpB8hQv6R*K79Rcs=FmhSD5K80HUIH& z7Fmlefr?y&HF?%OwE(*C69GPWdiKs0QL{nXFNb}M&QQBfwCm&L;{t~h_7&w3<>itz zrFoo}wR^hxU>Xy@=?mv&jQ?$I7F$*eAP1d2JSeF#n3~yVnFhG3jisF(hMTF}i$6+r zCugUD-2#fVTW6D@%Zar^EO}D>*Um1M8 zcjQy7d$*Y%15QCVKE5%CpaNp$3G*=!-XAdT(Vr(k+V}=1JZ^gS@N?2J7}z=GmtosB zb5f8<3~P>6y+IGnFBm>MsBS#}_<~Dr@ctU(T;wVjn3x36tgSk#Fq~IYA_7#$HhhN& zjFA^M`H}d)xxFOSfQ|-N3~fs}kAb$M`FOEGAcy)_F^NpB8G?K{gI{XBS}|KK*0%ON z(%EsIvdQ-1?9?%k7|}D(e6fH&F1s}P&BY7Rk)o2r^*RF`KG|M7|MbX#+*~JEe1JnA zn1%!F``t|pM!a{d1TBD@=*nh(F_dUec;RHAXXHj-BSsCzD}&F5EWXZtAu?${^J>NYGz8vys*(86=%K>a#*aO^@17U$zUVt}!|UFl=k0H9 zk65Lf3nN5ua&q&p9;wmSp13WVosk;blZInJwKJY+<$4JPDC-EV4 zN}~+kMB4>zEyU!>fsO?m8(W&e8@Ettx(w27FYl7k^}ApM7~}6xLmA5}Gf!9`X+1tX z=SvI*Bi%6`3VdRFR5w`acM}ST-{P|51GtO0bwDez7|F9Wd7>Zwgo%wn0I2Aj^Jn5f z9ReR8^gi_-M_5h`m+HPVufX;vOB8bBx!P2^F#ai)y@`4F5^o`?B8H!dOvYu~) zil{yi?CI7)r7|_ew-TD51&(LwZ0#FJP3|}oM7@`b51a>n`0XkfQ~{ruajwQ;v=Cz5 zpTt_vwpz+8i18k=J-)z6ee1et2S0S5oSD&jZ>~{ey-Y1ls`xfhZa$Jj0=_H&uJ283 z2%(>#`e9H#p>5%1LNMex-8*F0u=ATf5@A^p_vX#z2f4kohx#1IjjjNPRyaneDo-er zL}I780F)$l^LW|%peMknXr@?W=uQ;w^V>OW*jY zvgefL(9HD%csopNuRie zg3$>O1D|jbCn{9LKmy3}s3=w1IoUXm7Wu0PoO2)gxtuTDpE)@>`4djpKIpj)$vKN; zxPo4fi8g6tRhYA8TH#VGHN=F^?0ep_?{Wc{ph~}Izc%3ip?H({LFC-?duL$ooGY|7 z(*ov@CFSIFP1WX`RYAT^`*b|dYw#{M7yVi?~R$@q6_hz@d zYP~?o5M(MOphHjsY(CQ(!SUQpI=f8yDVWFeTitR1W6bnGKgMZ9QD43f%vfLq1H^e} zS;6dt8J%;F=eqgay+8&i<7`)iz68;}3a(F!J$5w&d^)Bt3?w>8tCba3Tf7T{HRu%G zym=D{uCE%-Za2xv?_q`-=At)3KK%TYS=du~eow!I znPx=7ZW03M1d;Njl{atRCttH9qfrI#lTiSt|Li83_GRZE-)(%vOp`waKuMCY?|>^n z4Crx?Te^SHMXZLrGZ$?P*5FhFb8( zW&;3%SG%gtz}(c^{HHeYsiuMY5GSR^6e$Di;9))@GFJS-4lm~HLf(eBgxo+IL z*R~yKdf@VNetBdo;Qwm-5^pHm|Nna!j3vevMGV==5+U1ABxS7>va6&BDSKv!>`RnH zb}7nQA$y2QsFWqy$-eIl^LOM9J1SeS3~(rwK5H#W|>jNLx&o17aAl^z`nf0nUWlb?qHdx#d_`5!kIUyPfERny_x6Sv<=P*HW0mAURu_&{S%nbPxr zO<&jv=}=MYXw-Wj1(nF@tfZbK?>D_oRWQ0vz4@Gd@35d6|1H^S&SMDk^2<-lIU%I?*O zp%fn$1z8uQL?pQCSJaYn!^;N(co6Rfn_wJ0#^mq~!x!9=(9qvQL8%-gU$Q30Sm57y zkVloJUWeX0{)WUCYs_$?R%Y!IEU3d>`=Rpsj30q11XvEhBO>Pp;kLouL5R9%TeR-{ zR!lCq_%cgA>adIBkt)1g0Wmvg&wf0l-f20CXT-f8aB=Hb!;_odQfsx^6|hVL(sEJ1 zj~XWH{u*^CxK5aw7M3Sv^iKsR6MdhK5=Wh%>mKWMmEa>*nEmNIxbaqw4|_&b6WFjk z@Ss)o8SG`#;b^Uq))UVyLSBoN%%m*%@_BBo!_#W{VHd;AqB5r#V`x}hT!E1bKKj$n zQ^#Vn^W>Nz^_8F@@!(EWW)0o18=NfVWj!HBPAx)>MS5RsV@otW$zI#|xK5MGVH1xMj3iG=X=)VI0(h zg(tVWK+)f~o}kXV=iU;80~QSAS)kH(`mG(-?#>HC0hoB;uS(9?g*hYvKwLQEAd}6c z=+MfAxCf3Z!@8vVqVvE`CLS1&{u?0B!>=9lb#4=9P%ua_JN_E9} z{kjj{6lh8)y@rft@!ugIhkN|$-8#=LPk{kD&&+@1H?xLr5Dxl{|DZ%?#bM?4o<r~vZcG=Iam}Zu9ww8LyXmtk~v~`_v(1~bDO{lR-L7{yDr&**`p4#b8~iH z1pbf{c2f2qOQoRg87nmhU>b@e!Ss%koo}U|0;5hDWQ%_zB3JZDSf;sT>8 zaEE~E%v560!{ORH13L?pf-u2{%u5%2>hPm8#DU}2z62i|@cQX&) z%dJyyj<4%47pi)MMb~*X0>T4@Ol9H8cp+Xs{#XO?szOFR4j7iPkH@caPbvJ===jtr z#n)FRr*~-Zx`J);HRoj{h?xjtfnO&DSJ`&3&8HTU6NKn>$UWmQRtx6lO4uNA$jrt@ zH}67F+L=_=Q6u(BE%C{mft?|>2;=p1)-$7%hr-?io`r8v)W@knQ=%KNY0I3nOatP?%NiAU8|Si_Nrf_EpM^=(AMT28{Zv$rE3thSQax!_8cDvn`H{Ku!3VGN zjoQo)I3+y3n!`lxwa^cMg7@&&gv{!1%hfj=iQNs%ncHL4OTd2F=C2(WB7Jc1Ri%pg zf%&we_V%|+QsS}i=cFn_!+4UAkdrbfTnyeyR- z?9(Yebp zj8rPQTf=+`K}xVFY;U@UhlYCw(`Sdc3SK6s!EI@Z%^h}i^ATw&srphEXAN&+!tE{l4z-Y7<(KhcD!lkdhxLAFYimAPl_?%TYt_$Hd6fW0 zHG=N8bh^b1`VR^(dbN+scfjfOd(Rj0N0%&{JvbjHRwvw=QjJcmceonzl6@n`=yBy_ zlB|Y5RGBfOQO9_y25(n*HUK z?PJjtMMpZbrBA?%YQiD9qOyh^lU+!GlE1h2_?)?1NMcWx7%a@QYQ8_$CbivbXkgJ> z(`;aw7#P*eQbjettJ7S#c5M1)zq2B$gK^w8HquOm>cQDWRW%hL=5;fTlfH<&5M!X! zL$NW%#l^Dz6P4mZRKMjWF_ZsH3<}~XZ1o{-Y4i3K7V%Q4n-Wb26$Am{RTh7eIkSB} z{bW)Q9h73QXg|hkn&musv`JQG{cK3o6Cvrj4kcdITCIvPNG65$+TMJ3kf|{#`SD>r zHX*%fKH^b*`6MT`S2LBFX`LGF9aVrbi(I#2w{+Y7JP{v~WO+Zgrc%itm z^ynibsrf~t=QG*;;4TlU2A$?m^m|%`@4Gazz6We=qoK;M`@x5p_)E|O2<~wv(M(3$ zM7yg0!JP6*)^3HgZukDqGsGm@EI{zr*57UvaaMPnxAf2|in1u6W$~VtXUtMgosN}d z7CdaH8?h)lPjPm5X;r}7l_<)!P^~%pL&2aYKymdg4H5XM^1ep(R*p0!!%&pLxcVXc zHsH~^u%WaD3|iJLo!iFxt<*!o-~0r>o+~pKA(@p^iMZR`vgCHH7*%GECbLu>pyL_R zQKgM(6`Wa1R5Oq=a5%Y6!fNu~Mnw8cy?cV+$B<(7q4AdREM;HGp$uUe*?0T4!eb{~u_ir#s`(-(^5lBO)ot7s#LfqbVP4Sv z(Kma^lt7IY8q(3xzT5qbT&ZqiY&2TK@$q4IpN_SYBI&7G54~)|#&jC3w_Xs3_R?z4 zcfDrvj&}Wd9YbxYl!1wR`DV#MIwBDxp+%P-6=-QGAGw=S{9HY1l7r+J*?#tzWy5RP z20q#4mFUd_>aH?Z8f+9~fR4U*_+?%??m&l74eBwPs#E0pM zeIwoB+NJa1WR@uupxLM6IrgD&5yqsI-fV8FiqlTx7q<9c)NlqVmL~WP*rAC+df)D< zt8_gfXm)odix^1K+5Y@%S+lQAx{?_}Fs7(w-!!R@R1Dk?Jk`s=sq^&ut~bGET@=7- zU>^-Jhgwc)x!q395^H={oZ4`WcU3a1np%?speu=A(_{)TrFLy^>8|xdu@~m&_DRSPH%GYC{351cKUtgYP3NfxtFKNZH6JA zq8g`UAj^|;_l?W3=87R%^Qbs&R$ywBm6Ljs*`UX+8({n-59Hyj@!m?Y(;RK!x3%hdhmxwUf70qpgfl#{hQ<|05{^in>-j1_<&CH#vZ8(oGA4w{Kh+mAxYArQFJ#gLnL$t; zp1FCo`>w!Qw&nM{P|tnqP~XQS8J1oV8?EWtsd7Tg6wEbjzEDwB?!oUi!0s+FSn&M@;9-MT$9pcgD4_U17|)z*H})KCd&%8Oj8p< z83g`Xzw_Dkni{vji}mqh_IK}c0#hA*%3;JBz_g5)5)9AT01*|~$Lh!>;$M8On_4yt zadX7&@jpK<2pwj^b3Rjd06ZIcJT#BPUr1ob$aa3Bh0sfyh*!`LAZLN zKy&@)53lw1C*5y1-ifd=VA#k`8T16Au?<+KweGV)fr0 zxp;1L&n}Ab(aK9#zqmh&dS@rHe2{ptkzO99#UGI}S-)-!FD|;xCe{Jg(AH+>?#}v3 zQu2iXQF`$!yD-?nc&RrCUgudqc5bc*S0fF=(xxVhOR@KuW@ctyn!a-2M8T49u>gRP zj0+NWK2G${8JozWyM<@tIli#=OVi_*`GUe35Rq-Gp@0veu1!idSai-l>im4eW54$I1c}VTj5Q)V@F(oAJ4Dg0x>~6v~T`uAnDo8zWpJ-1l;fsC! z=_r8qh1N9@&We6{b*}M%QS_67l|cXnYLub&)bPh%)}Cz#9t479hL`_PbO-g2vT>&q z2nsB#eAgP%Kj?)bLDtOn+?>enM2Zm3Nv2(o0J2C>&UsQXDaPt6Mnd$_?dL}?qOhw! z>n7EKBWrJG=2PM4p3h({Rjhee&GH6N4a(m4%8p*ml{0umyMs=&3w!r zLy3*806jV9>E}PwW-}NsWL2RHN~i`n&itSE_X`S+Og@k+o6w(90bIp>rt1iZve(wu z7~ct9H03OnGAdMmodtTGsOo0*?wSkSxbQ27emPWws&8cUl$9bhTA+NoeVjK+u8jFv zW&TVw?Ota(>2ruxoz~?GrlxXA&CD)=cW?A5Qkaj$FJ5(i!z7HU>BHp|Is>YwcT|=Q zh}$q91Hn%LZbJSit=MZMY_f3iNlG#(n5sv6#hQEz&k6&&)}r76eybB7;$qIV=bv*f zFZ`JUtUjer^*7!qf6*X3U1U*5-=7E{x6=eeN^I4)rME_JaQmp=Ti%*oGW+gzD5lky zBlE_=pY$7* z6~%7nO@Wg&{%y$eMm2u%#f$(<)MByJC!Aig-EnNa`sVypz^SOe1#$L|kRC}|u74ew z$nU{G?tS7`x+TUKVb^T3Y)0{y;iOeAc9d*nFu$h_l?=LJKbj&+feGH>?q@cE%ipuY z&Xp)H=Q($>$$*~^aM0I2h<3$-xkxIsxAa$Qd_Y4<%Q2CwswYUw!w`EE`oph_*2}6P zT2q(b^o|*FvBTrD)QHt@>hCkM@B%C~Iaf!KK4KHA^-@-927eu`U{D&PIvjghSv#L8 zjuUm?^bWUcb>Yluo>NLyPcn(uK?@33YW9nazh)IC2sj%|JOJ|?7Jke+3hW#xG%y7X zAJt!Qx^eH=n~i2G=q9abf1#E&j8t_mAo#U-4}7D$!9;D)SzKEi<5^`8DMi~w_@*yf zh+)pQu&~t5{yvm)@GdH@O^_#kr|xETRBuCiqUj+nMnXOx(ahqH2@ltgEX>it?(Qz2 z7~~V($IYQ@6i9FVxTk)UiTe5b<5wIGHYahypyOEHGEPx^|G^wNJnNuWx|n_aP6@kh zQ_Fh+iN=gFQTO-1%BLIdPfaH?NYM(1Dt*k;^ z`o5}%XJ|tF6TD-Y>kHgvti~Midkx+(#eXp#X{Q;$X-Sfu=Uk_Pi2=AKkm`aw^bhJV z#hOvoj5j)b07%A?+VdYik*K>`q=3gR$CejIfz^gA3o4l1qm~~8w-&Ql}m^QkEN@4nY z$O;`)n9i_>o4Mql==zGY2z#mw)_E^LK3X;pL?^F{iYSo`AS)R+XQc$!!CI3OJno3r zJy&G?KB&Lns`fi8)M21`i+F2?WB1&-)p6hJgS=w==}i-sHy|N|8}8u7NFPK55hGL# ze^J^P7-?4liOk@lQ&G7k^QEq?X2m*H?ZX*4??+nJq)OD8 z!uA8{(!BOJGAr!yV@|*lXXh3=g;iaIr6bG+dx(WI;RWqLOTmH$NhvRX&G>h|03}1n z_;ca0qfbljt<%k2e!G}GF3!DUr}=hKchxsa{HDqx70@=|QxS1AcuI==D7gII(!PLf zEmI!}NrUh;W{Dq_2xpQ~QW}4~y3`^;Qtz1YJPN5xX+HmaD~Dqmy-y%DP4Y@gp%dwT zF`TILpjfEzT$8w9no2JqqQ`bI@d@D8gCy|`Gci!P`OI45y);GZomh|2Y)@_U46(dxX$h0h5*3+133C6JDF{Q1 z(fSc+kK?bmyLzPl+5${fz53%U==}5iV*L6m*(L|MLH+?7YDFrE5Q=r!MU{aKbyYEkInt>(;<5TFhSH}{B^CP5yA+(1g z5~_S-4&nF{9>$C-=6a<(E&iiJfhA8MBSDvEhSr*hxmOP4IAkpgdqoA9>6Cg!K`oA1#&CQvoMLx1+~U+)KLWUD(0UG z5?r*vJhCq&A7i3iFTA`I-%Zi`v}5R9PKGTt$QTlM(g>n7%D)mtgJ^+bt307GI45{u z>zyb4=+(px*LDJd?k_P1cu z^CIMQ4S*vA-cOTP-AmtOOy}NGbUr1@mZ#%|AZB-*1%D=W9oY0~{9&Tb9xk(o|Ph_o1?r@oMaVwS~nAf%JvMmGCTXzlT$HZWQtj z2qRz-PFQ%m&|AY+$`7?H@Izp#xb}u(6g`m%+7+-egP-=>jdIZ+R>oK~ z_X8AAVv13>I8VBUo4T=nUSt?sfdGM5pwWX{ZTNz^wG47N^#7Na0y1M+zhq1Gyg?}4 zU|9j7Wa3rmn{)hwE&=dla6jJ(9FKVyroSGi3%7Jg^SbpC(ti$pO1R7-L{gTH17;%# zhfDYj0V-0PJUZFmHNi2&fc%pdJ5z+X6#t`3I(_)Fjbs|08*#iMa94B!g<9iwy>EUo zn(n-N2>P153;8nv!c(GzT@*kk-ufIcg#-2PX|xPt2P~po*w=O#gFC~wnzbUH+zy$H(a)$ZKD zQ2a$HZSxPLHjC1ol8c?Ib}S;YpvMGT6j=DgBCH}?WuxYEU(cv8H7X}e>VAF6J-K5( z5L-ic;tkp3H~Ed$6+V)b*`+rUV)qsQX7BC3IkQ>g(Oe2?4)|w&?Ll4{gw6{bG+UPQ zt7ayI!&63KysN)gZ+-gEO&oLlOm$egjv1vreW3<2zQxnfpN=1v0LZX0dPQyFT>sm6 z5lqDac5SB5{QSNqX+mYAKkkU;*#&({L>*n{F9-qX$vrUI#g=VIs%0U&BDSTL$?af{ z`say#0qM*)L1rI>GooYFV0GJ14?_m=rLAry5PdbYA&h+KHkEb}qb)Dgh(5NUpbNYd zxN3ye{^RyE5wZk7`!bKY%Mc?I&E(bz>t2?=U|J5#T*DWTL?Gf-9gP1ArAk-WaNrE! zK)DN(+~?n${O)i#Pn)!QrB2Hsp^G627j}RRDP)8^t9I{+S}`6s_>ziGxGk^&>COz& zhi`I=gykWpr=5uGhgx}&Ae_Af)#=UQulzd_prQIG5HaH9>dydw&nAW>6)Rb>oEQUT zX87Vx%h9b^Tv&xYTPmc0u+f~SUXMSq8NP(Xz18Jyy;zUdYU-h`53ZR!7!)o| z9rY$;(2q%WDjiPn!`*&kda$I+quhGg;+_hV0%Vuq#FH$@1Hv)XhHS%cATx=--MfSO zImk-f1BsD-(t4Znf(SQr#UlEjry-RK{>4B|vwPj?C#d#HFQP6AZl5FS+hv+&rrpVY zNywAX6Cinz)BWh-5bSWjq3?_f=0AzTI{t{BuAx{hY_y z(1oy&7gsgh_K(vvCW%2tWH z2McT`FyaR%1xjfL0HJ$9m*jq{^`9~jQV{vKGx>d|7s@S;RFn61D6-Sbmk)2TKRE&N zti2B?SiZWty0VTuIvl`U|C%iTpIa(PmloLSjX8CIXT3&rch>zwcirCIKb3bWnq7(j zTmQDa0Xt|;zD?ap+pdCDP8k&AiYd_{JBeY^;A#Pm`PAO=>}n-LU;dcoS{Yq;xu&)g z{I7nj#L~nhjFQ$xt(v;ptx|EHP;)Gkoh>iNf~xB!D}VMNx^noPv9HR;E-2ERgbx3-I!;)2z? zmfSB}$Bcf}ex^F<8rQTDhdcF~+EU4V&hLf6dWqUT7~u_@+!FeMsQ?_{hC^>J^sJ+j zer*!WIyw#qf&=Q1Nvs)-CL`f!+~IfEuc-|${NW{@Pe`sh!y$k%BDii2u#TE}u|7}@ zk+(g)DaQ_@UBCl5ajp|4M)ux52r_tuk9lQy(FYj#L5{v?%c zBKuy0FKx%lP_sVL^lp%>BM>Gyc3|r={fMC3J(R3uF#n~KIMx=FX!v4+t<$xmPoFND zeJYKz)ad9>!)>q2b<0rmZty`iNFI{Z8(+)VKD_pFs^VWuC8XDQ>~pvrIC8fi2`wY=nByEF| zT+pFLI^HsvDld9^{9h`f9wEDJc`lkr=!E6j z--yHNfA}l=Xu!`6C8eduMgBCPwE)Fu-UW#+T^dMR=__0MY!twT-`k>8t1+q=EvBPp zmK%2#Mq1^nC~+FYUq_pbk?M^BzfG<>@(y5z6}QJ3m>R>Lui-He!!zi&X6nB#pAJ~; zkn{=cy`9vV%GVYVsHT@vNlvM6xz>3z@r;J-H%5ez0N55|vt6lAdg?eKM*M5}d>IwpXBx&Jga!E+43F@=MOa&EYSiZi(ON9ffw10v-fnr%<-+K@^qbzH%lD80v@X_lBhkh!0fuoO0a)Ib37CnO&DKz#`oAAI7 zlvOHPu6;N5bOsW3cJ|)yl{-9COA4A$AZYI~p^TBQOeV2@eBI@W<`>zum^@?|2bJu3 zXQcC~5bh}{L{NaLKC(U#Yr@9=BsH=N%u?>lh+9V%lH}9CGIvt*iNzx?)mmEg_wohz zx-0-WLNl^-)h!aZWxV+iEj4Ba1SXGw(;goUOkU-yu=9iCDD&&5!82H{W7c5@xDY*+ zEU)-r{tcG%(oevX6n=xOiiya|P;N3uR!6Xzg0$A6zK9r%1c5eACDh_mBf`M~Pl!-D z{+&O~Us~y>ohHOyCSJvAb7!58tmqEsBW`L&HJk`<7*@4wXYaDq^6&NNHxr-kAndJF zxbOOADFuRojIs$vM3&l`7h?z&@T*EX_E#vnGASuz1iQqJ=n0dG+v$|OG@4qUUzFNU zVa$e`*Jg}4h2^@6#3En}0)C2L4L2J4{qAO?55uyLv$M0T9cT>m^X;A7StTVU9}+Gy z5WO{H8U>TqzG>p9MuK74lkp#Bq?o~WHWo&qW@x)6U&aGE)M0E`M6 zy{SRg^O9!uPErsvGg%p6ceB=5YzU(3nI3gpQ)~=Q0<2uyQukKJpDcmpCkQNjj5Fyo zDO9%CPW%4x__#&=T;C4Ie(BfG&khoog9a;wyR_txZh9iwOq? z9#dyvZm^E7lqn9XBmM^ez-;qHwKVZ`sIZBEkl$OAD732i!WDcvhnNY+266F|cKt>^lWpYx39DEW4F|%3I2>*? z#|qYT)v>=ZB%-yxN;~)E!Xd-DKHoFpVlhhYC~-;3{ru|;R(lN8^LBlTHW*4;Z+82H z51(_3R*iLfIQu#j{xbTV+V3o$|97Qw={O81XJH{PxG1?lwH_0cWHm$1v7{UsZUp7W zQ1ZY$6MgDFY^N0V3AVp+aP`_ya10N%(cyF05Y?Rv>sM~$`Z@)PLhlZOdbh$JmTW1g zJiurWkEcNdbvEtzdsPh^_!S(XU>p8`;&FzmTo0N*5J-ajw3b^=D<>Xt6jyV5=yPAT zp5pIOItUes+T}D{*l9cH^#Q$`wK&64zj}nEY_`GmwA&rzy@!VPc6Vm!VbaeT0xg}I zHxUZirH_;oj~!ib0n;KF*a2-Jc+0y#@dWDh+EH91E=2sNIoCT zyGx71C;wF5OW7@>7{dW#<#DYJgsG3u>=evn{2SGPi~@BILO+Vp?~<$*_B=Gr6@DAi z1NSzpAPb`wM|s#U+72{V!=^VN)gIhx_k!@liU>HM7$C=g|BBRZwYg@stA|kyIgKg3 z3dT#L#(NYM7Y19DYM1sspn~TnR#sNFn7ZIk2mkrYi6PB1N5CGYQG|;Cg*C+{PbnNP z(qPeYtbq0p`3>&y@oD&fsvvx24L2l?;)th3~_H`ID6tCXg zyKc9Qd8-~KRZ2MP3%n~4@@u*Wy{W+}oK7y`Z-h*`4v1&BzXHNo%C--Kq`yi&g5osw zi_j`$aT_M1z&5%9g6i|VwwNM)ga~`E?dVFSFp)-BV2!*{%6|Ev} z2D#9~Styn;Q`-ISvLINM0QQdf-2a2}GLb=f_=rdNmmR&=_3S0J$VnLTLYsqNQ;3 ztK3@S`4{&8V29%D8EqAjv z*UM35Ab3bQY!6|Y3(9q3uW@|QskK8z??aJ#-=geu)$2@o+c$-8g!S_ee~C)h+=%@s*Ec(>(*d~BM;fy zH<`cs1rpe~Z=VS9MUrwnpmJqb$2z*YvOpQ;KODXZ2Csl>@C|_z5J&)cNzy)9_<)Dd zZRM{4n+B_SQYtgWBnD4zwC;)1NHo}0ySnzcUW)(m=&G_0yY8Im5nu%%BSvB`k|7D=QP7k{ty0zyw{rw>{&% zP_tp%s|W|>Xv#8jww&1!^@-IRxasIfN7(#TG&0IhR<`!ugHV&_#(!3|^nUE{`xDE- zdI(x>wjyyYHTtsAA=t_a8Za2O_?VmBg#zgvp+~*IrnA1TNSR~)RQs^!UR|OQji+Sr zeP`dlyP>9{($HPIe$0Q4t@o2rBTi1MK{RWgo&wFon>+d*#l9XU#DFA@eZ0RIDm<-B zEzf;>9Zx_j@~+SX&i|B*-evIA4G@Q;ZG$1$G}nHcW9b=eRhq} zjsJej5e5mq@KNLc_hU_NUP^KyfxJx&aW>$m%I5B~eIW(itp9fnaRR1X9UaQxdS z0nQ~XZVi76WgEZv?~9uzVV)_RQPh36-MAmI9^4oZkM)@&ev|eU#NDJ^24>`B+9W%Y zX?uZO?bY6)*0CbNwKeKnq*s%XP&=WpaF)_taK(()m%g4peo9Gtlocb19$LeHN= zygrL&9oFqoORpC%T@cPv8Nda~g=1g9D_1ykYaT5&2in}kMi~X%zkBco z-Qv!NxNWN;hr@}*q?OnZ6ewv9bt;_H^Gvxm!kYl=KQ7Fv;jUFrS6m{U08RU&CssTqbF)vBQ2$`y=Yk_|91~RyICo{Boo?J)LykvW5aog zL(Mgb1h?MkQ=@)!o~o0!@DM3y#<-m1lw3qx{kyT`;S#bMisD5K-}L^GGg!&AX*~VE zf3x`1DH&$1A{a_>1fhIny9PYB#br*(gO&P%xPNDrWQv|A!^s!@x-qv|ePh&_yIu$V z3ZY`P?V4G`zms}(wudriF+tucgAn}IsZhts{qr6l@nQe89Ro3dg&5tbMuaol$#v=D zVy2G!H=xbm?xE@x3@*I-g{QS;#-a{;QSkyCQseuJX9$Hkfrub)e%;tj*W#;B2z&Ow zfm%^4#h7Y1@yoNSW@5#u2;u&`#$QH2?jXssV z6dEWH{oy$BkPWF3%$PyBS(U>KNEj@YVj87~lg5RaLnskcZ3P!+YHq(LSs|%>EcF>| z^`|eOn7&YBv^94oCnpEdj@0^D00Y7YMy~H(P7Hzl1WeOOexqc?6VoVcGP1aW5L;G| z*?PtyWy5!H?vkyglaNyeUx4bW14O61Zvzs&>rff}qEsg$$)R&7ZXqP7N2hOtiX_>o zz~2g`6Xk49)kgx|(SM8ZE|f%#!kUq5#`vG|BCBdiuzi~f^1I9>9YA?a;4h5QsJAD ze3reexXN6zt&7OINC8pay$t%^I%!7|IdOK65f^**CxZ385IHq?mNo-1-dJDX<1*ps z%n}QL%M+vQT2moNImT1XxV43ry*h@BVMgN02szW7oau+qdZV^IP(iYq?3&pZU+rdI zHMiBE+!wipCLF?WfTeGyf<%M(j>DuBQN=Rc}XeP z-fS&^liRuP+Btyy(GRaLZ?J4@Wq;o^f;FDp88^o7+h48rx9;vY@xVjKxrKMIO=aDY zBS)r!aHKo3#_>Xh9PsW4x{ocikjSer)CknZEukgkfQ`D&#>`9$vcn3ps(zh}($W&c zeWH0u{St29ZU@}ln~;DAlLKV{2t|{QKrD?lITj`!8eZ59)!{5DC5JBK60#b>+)0*L z^XG)U*T_@L%cYY(14cKJJ-3OaUmu@@&o-rzc9Y1jVD@;m=DXX^H&dsy)zL6iR+s7U zde(Ps+SC=a)%Cr`nzp|gsiob$yf)H7Bif7Xy&1Y9WS(d)c$#t$X06mZqdkJft6zH# z+26gvGG~M^36e|9$?P!qgc0Gj*u3J(jD?MGVede4FBb~W{)|@)65UM3Zcv`BVC;Yh z9d_O-w@=dtlCwrey zV=U+>YnJw-?;iR5{|dUl-Cl6D;ZDhyHCleb#71ZxEJ;sPnnJ3&C+Ibc#s^na`H+pF zp&=HjR^RK~&4j-`1G-k-V18nvhpWLp)V5utJ9QJD;w7m6$)zpR{3`Q!!x=&rRfY_I zhLZRC2suoRtnH}{aagGHs9~=in{bYfb>C*kmo^^^T~O=ml09WIaLjGg*2`XUffeMRYKRdl%6gEqLW{S>eU`GLqKcBzhH>{=I=IiobVs-1FE*1?_=vu?5KP$5N zl)PCi9yelhkjQ}?A`aUeAm8+bjbh0VifKd_iuqisFYxc!k2m|~*2`zsw)wYow-tR0 zudys`B-HttFAx6t<3IZp~rch3%Bc=igffJP%#; z)2mbJ8eCZBf8T}gq8t)8v=m2-fbBSItOMtt=TD!5P1079bMIY@&w&HQ3FY~Hm#17T z)7ec*tm`xBVYrhSGSRTk75us}2rJ;i#>0E~sg16UK5w-F{JAp1EKR+m#>xTG2Y!;4 zjO0cn;zPtva#083z9Bh4KkM#m+yq=XoeiCNb{nh!SlYmH9G0f04xWLQQ2Ll(5pihe zGwi|BR|~8~-T8uxHn4NUkCTfv!Gkl?3vG+#v}U`9pKJ@CK+uz{RJ#I!S|>6tF`dm5GKk37-g?aqwGXG-|yC^~%MtngZsAaFIJ`pdh2eB|V=S}aPOdQwIi{CG# zmrR{;I{xjaSeRj(W?{3d{0X099V-^F)A8lRcUR53vSF=tN&c(H^6>J#v4I1cn}3h* zCp%muKdD_6WwLPrmVisZ5vq~J?bo-2j+XC8`S}r_ zyKX$J?R2b;dH&vL1XMd1>*BOdv|klwz1AdXZ$ ziao!rj@lhS9EqB4+s#z>Lbvqu-wf&qvKfM@1o6xvKiXiALaiJlRv6L`Ek_o1pDJmhR|#b9sg}o^>;mw<(rypVikffh zZy$yMV<0!QZ-{XLV(OC@*(H&*b=ox_3~k^Tr3#MK6#N{3n~MHHM|mW;Fz+BoU=`r& wY5pxN&`ePN09^w74}L+8-T%iQ63JvF;nLUQD~Y%X*hL-D1DjRh3EQCm1GZxr6aWAK literal 0 HcmV?d00001 diff --git a/ground/openpilotgcs/src/plugins/config/images/input_selected.png b/ground/openpilotgcs/src/plugins/config/images/input_selected.png new file mode 100644 index 0000000000000000000000000000000000000000..b4c2340ee353875a212d292d8d110d93c1f13dbf GIT binary patch literal 37214 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%0Ado4G424ei_5t^gREx! z741G3*ZOBZ5hg2h4<| z#mdXp0ZkL)=Hr%hMzFUR>G^)vX84DbVEiKZ(b{BvfD$ySYN~m zW!r|_qpRJ30*$oxE|z4#26$*Z8q%a&x7C^qdGUP9D)hbZ>#`38FtQh!6v!T_H5*~J z-e4;uAucHmI5XfrFr<9@&dv8*;K8!iXKACbO6WIiB<#sal#4eSr|2nh!ds6mDqiof z?#Y8cBG-qHo^{^EGHSeNGdt$`SyxW=4aUBYw3K@VDL-yhWQ;z6{Nn%!>nFeqf3SPQ zAWWLPc>Vo_y`4`%syqsm$T0bzRL|Eb@`nqDqY*~(pw!lz&3z65jz9$~#039!7?^o0 z5LTu<+b)0@bb?p=#7K8T*iD`7-d}{v$%4#>sNn!~+A^PGO8Lg`Qe-|AK*mEZhCT5e z`j+-w=|qU#M9_xd0B&CIP)U#77nN|VZxyA*1h{hm@zALc?$>bo!uE2nfSoBunQdW) zRib%F$8;EKacP%d4?mq+%sbqLi%_LS4D+5%-L)7UVLXSngEod0I(BkE9_J3h#k0zS z9NBonwBCK|NT&EqW?*nrT}fW9|18wkk)4^u^a0$Rc117={>WlNIy%r}zytPJ#n<&I zK+|LmHRkscH=xmGlyMhL_jD!?PDY7Cfqp~v3 zA*0?2Wu?rbNF2&Y#yL?Gh3q|&?3wL2=X;$#-^b(o7kqzA=f3Z2ysp={uIKZ4)pWh8 zb@4#a>oa4-V&}q?0sx#UoHIY1UE?u$!C5Gv??|!1(`6W*?jq>t zdPpP1z`}D&ig(PksVczl=}9DUOEqztwHZ6E!8TEBbkHv8IuZ$O8DP6$xhi$z>Q$wv zWUfEyKhltxDctJj#&jJ6bg0|ftl4-`$hk_{>v)Se0`=u6-pb6?NMNRK6)}W9V;v7$ zI0CCNE2-szo(i<{T?^p>;Y{R1mnMEYJKdoQuXqvFgje)N%CdOgfSt5mXC`(}VI*5P zSGkllD8vnc)ll9Iey96(BMYS1H>J%A4o2ns@aV-(%oQy*DULX2k|L{# zG^YEM>&-p$2KGz#v1QlrA1RW;^iKP9317mTzK=2aFCbk*d7Jou#ne}C;v(EnryM{i zu29A)x0516R_5_d95va47Vw1Y^AoSW8qIsED`ZD$?S#_pO(VM*#h<{SN>GO}{Tv*w z2H6b9Dr0P3s7U0xQauYtGm*?6v+c~!&|S?WU8+O;{R0o$a|N2bW^{|9UH{%Oib#!o zT2qhs(~IHHjFmgPWl-lMvI8q8G2vrkHlKRPzLH>j+1|<$i!L<(WMl*P7IlAijMY9i zVp_;jmcvlG>b2y-;?JF6^Zc3csMY39hkL!u@F_Pa8q7lXjol3Nz2GTl4sYWmFCt^OA3C&sV{^X(zg8G?@avtr`{!Sd1-MDJV$Rkx~ znBBvhO88WFo4LcED)6zIq5YlHjraMT$|wU87xVst+N9%wZtu4w*x%q!Uza(Sg^ewv zGR=ILfWQ89`)z#Ubj7r;ZpVP=(b}W8*&?6BfCcQ7%F(Q@QyC_AT~aUwGSsJED;b!w z52x#3!NDFt^X6`gA1EmB`fi>gJ_>53Vy9V?{8CYwWy+i@K#jp++|Uysc>$)Beu~5Y zfzxjpSfcH21uJ*GmAbS6F)pu~eYQ}6q(xQbkBhRF(RtQK&nC(JxmKa60Vrac_dO?8M@6ISpcUebQLkElT@YA`aU96?i3WI@3_-d zUhgpN!aKl+*fg?q%0j_7F5@6k1NOC_0czVPj14>iv@=6)VAA69BGhoMgf66wUd`c4U_HRiS<0jLHWe6MQ+&H1aAo$Q5xFNrFMo>P9f|ANra) z!$TAuVrzFu(M)UJ(h1j4M-CY22NOO;WxLb=;x4P86xoCxIy?aY)OA|E%80Ie&G)*M z$SfQKvS>ku7m4-z$mj^d!bwO9l6ZsFDE`z`zyc7ZYtu613IHNrSxYauzXY1rTLA|vKv&zQ(`+V-d;K+~23)O_wILvtCJlBGuyL>J?@ zFwYP0Ot_hoPhV+l%HW*E%k-G4s1%SkxVzX{8Ue8L?G(w@@o66Q&#HE)Z#VF)+#l6D zWc3&GO3?Y2MXl$#tf#b>0t72wgfo2%rw{dFGFWN2t{-;V;}#ib)dBF$y{4!D@nD4c zv+$R9O1Dh$U&`8Hi^ltoNX~~9RG+uG(c{5dMrw5oD;MaKn`WPAGv_Xwzgd&ugv<>p za`JO~{LJA?zj9@3n5%BHzY@rN$DxBUBVcPUeU*R07q*NbO#z%Mz^G=M@=yTgHE|+7 z>@DiWYcKq;ocN$RV|$|WDjG85%Nw%_ruNIxQ0Mm&W88&~o!hM#1JjP~&{(vCuQp(k zFN;>bXP4rzGA1lI+DM_nMrB&vtTwcq4sqtz9#4_?{)Z-R%{a+_^Ze5$^rSiwF6Flx z6wdhOPN}Y+SW_%+yWk^ySqoKNbtcb}?&DxzG7TH-W4W7hj9kG0aYx>5Wx_y2_@f~m zB?y*km(bTu?0{Ja*wWX{YLV~E-2mWb23CN?XTkB`$+>Te=ccSB_Shm;7%Fu?oauCc zwLJ=6MSFO!y$qtNb%ZVzepB5|RgLZR)(2~tmAgsnJSanL7PJt|E}(Ygkrad0qICXf zdk}gD8vbGEg~O6;CKVqvS@iniukk4ER&1p~LV@U&!29>-m#A{9pNt}cCgiEFssVHx z?+wu5nQ&&kV=$;>pKU!0?Dt6{YoAXZbsD^{(_Kc)7+V8m6+m*7Gy69%F8q*3Y2A4p z3xhn=9}Tq<*h=4F#<3VxdY-AvKhp|7EvLAy}r;2u|e*jn4{k+cJ9)% zr$~|2={X;>L&g=XioRMOVnaGYRY^(<#p`3M@69`#u7pZNvp6PR;>C6nMU`~wc8LCJ z>Xckdu-dp)V$nUUP}sboZojPlO?pg_MMS%`XbV6RDd3L8m3?le6knYi(!yK}S-QGP zlIwpcett5&k;YkBOOYizpM!)w0WTsR=iMNDi_-gZy3VxrI z)bv$u#eRVwA9O0zVT$xZOE@f7#S}0ZgcD9cmS$Tg1QQQ;_<2H)N|lP$U71zrK5#nG zz)5M-BLxvo+fizpyB-qaO;#6Ms9j;)uwT1c{~-Q=hf4El^V5OO0}wIZ@i{ z7m*HR3I5@SuMQun^vbQ?dz>>*;U}1Y06?4X5a~0XzF6;c*!c}tqDa^#*g7q46wGT! z7gqjN+|I`1mR^f>9v&69;Wa@PO{4Ky8tk6IC$}f+-8-BPXfy#qz{Jp-Z$gJaqzWnq zhaKe#HG@HlN`FaF15G7mBnOIHfo}3bmllS1rPR^IVkcj{Tj3}mZoHSP7C1hXqz#!Y z_~IXH_RGQ}D&1ZAqFh#^ZR%h*r-w|!`M1assQ8Hs#A=76KsB-8y|*;Ter)Fpt=mT; z-yaSV08b^}|Lxk@2)`}a9%aQ%kYs`sD#lo%bI$=>r^4|Kd5)a zq=Gvvii-PeMN;9_Dc1Ucymy4Q+Y`ymFKIvQj4nBpsodD-fX7_0s8whXXjDZ^H)V*` zH+kqrY_s-O>=-W9v4H5i_iDeK=&10(`zm*2!WaJ2wSdq^%WSGyp+cQ37q$0LW@c0* zyKxZApivNDSgwS?TeemaQOa59kB_5m!x5WJi_X6@#Ci@G4p>79?Ps4^_J8BmZ5;*d z2)hT!9(%oj z5Gq{^1&Xi!dlg!r4R7S;#jJvSR=tMf%#26j)wm{0U(U zMCjd-B`}*vtLzb9dP4p#Dpi%>0i=V`0|wYC?NLU8}k+ z+>r`ayj_v>W}f$Vf9NyO&!lNE;(?tp9q}KH?YsnWQ#?ABd5u$G_hqWK0PdU=^aSGp z{C)0I2;U5w5>+5GS6Ure#4Ts+jP@lrB{g0Hug?Yejxy&gh3jyv*10cA@d{+fs>KhLo zJKal*X`odp+L3y1kKzGKMT$HnA{$d=5hwI#)=Cx}VJ)ZUWx=C2E{Uz7tS|dI#An8R z|E_;UgMa8WQj5cL)^KdkZ{)_ZA|3X^#V*>1ZKjTcvbe^IRKb3#o@-N49O4lxDwUA3 zk0M42QmWi13Au6GHjdLeI2BjM3z zUS?M4EZ|k4f7Mo%Wgz;eE+bgqlpxJ)rX0wpMjuYVQW>R>diTUsD%HInzXbEz3%ez+ z2Y2Q8q`RI{&btx~K>k;T*5tcO`Cz|jsag~Ik@W{jg~p~NBZxGGPfp^4ueEpCViImc z%QpF5LPgnB%`AT$$8wtURo=JOuU-cgq;4(YYoaH6a{-W+XM3H|xnqn$LK%HNx=9*4 zN3qfSM+~GfAJM3W4h~XKEYAmxmwNc@?8cxQcWl$qkQ51Wg)1brG=(PI z6U;lL%&ewQ@yWj+Z{niMN-^2z{W3@Sj=>>$9acX0_JiQ9TqaB1N=JG@eP)oL(O84W zFKt(h(h|<8^$v#Q%$0^Q(rL^3`wM?_M^dRKGRzK<{0>2|E1~v|{_x5=SWLNb`pvbJ zqv44YpvF29>AeVoNP7qBj9tGJ2gQPpXQ>jxhX!nIBa9IFI(P}EGKx{i|r4@FO%Zzit8W71Yj zuO!6FodBb)K6*J>B3E^G`65h7j_%R2Pn2-Db0LJWK% z>7|Mk`5PxK8ky#-sevBWzpmR zue+ZXKd5m3x5N};@EdKGW9%>~^qX)V%Kp^?Z&|_IsJ_{}KaTW6H=w)*E}9|Owt?2^ zJ%*7A6y{m#*cxu=;TuN!BEbV8$hnFgiW;H#7Q=8!K=zlejus=9+|$9ocARJx2~HfO zeYjmP3cZ6IdC$lF=_&j3`8)^niwzn=mQ|Pd7f@n#yB^g`bS6{B?Ot$Gelr1)mXjd& zV|3~bg#H_=5xHyGC-iv!(9f!lUE~AGo(^go!hhaf)G>dzrU7`qpcI6TnN>e-U?9Lt z18f8WO0|oI1>YiXKoGW$evTAB_ba8iK}oD-=k)BZPHZQQ0*t^jr3P|O#9xk#5XEW^ zoTGz4@gc2jn`=TGe%e}Y1B#GTj-|(+{&8VxpKxJ?2DQ-Vgba`*0`_Lr&W3s^v}}l! zjYgk+)X>eZRr-%;_mAGsiG=nKF_ycBHTh$Y;LG#4RWSX=thv2|zuts(Ls zY5oZ<^|rW1b1BY3k%bOyw=AeasLP_ZHpVr37JNtvHq3TTM)}q4yZD>`i#?Iug-b4g zYO`zT-8?kss|R@+y7A?;&jNO#*n4EaWV-bvrgQz^H$6AEZsrFF?+?WdoL9J>ni-+U=fD;* z{cXJyk$mj;lBtQ-#8}v}3-CO&vFFwmxDC?kq*o#sqXtcf8W`4#VLM+fzj{OR?a3tg z*Vr(OKO^+h{)WLaZy2*JF!4;V{=Ojr^%TZ`Smi;u?;G56PsQ0B9W{#6yEXmoEqL_s}TEOKhda zPcWYhxk1N1#-ksG zK)w|vUZm$Iv7x;EO=GvRgAudT#kt?PI#9@xPIB@5`1t$xKQGlzN^SxMvpZSmLfNO| ztdKF;`NbNeN2{#rDY}KmGYZOo%Q+gD65qo@wjNL6Hmu$!*F>O{a44Yj8^p2APkp_1 zhU!E!t|kzsldxJ_rFT?As|w6JB?8IErwZMoY((Gq)o3N;P|t@YI`cCa7LXh1-bW#sgQXgBH7?SPWJDuwvXZc13nL6~sa7x#J zC?nimaeX!kD;%kn5D|Xhht zpIq!&v;>ci4a+A)phLH=l4N&|QRb(&9H^sXVEl{;IMR-;6A$*Ew`MXO1gJ$fp-`Wa z3@?1$h@FAkAIwE%%e{M+XU5s>)j3k-4F)d5+}Sj5LGB{SykPkx^Cst%?CkzMgL(Hb zaNVwUZ6((3#hQdX8+aj@2`TdJ${C(I*`l66O;QXqXPkcEf)EMI?9xyNtjY|EWUA z+qdON%0MRFybTw4B41Y<2*K}5eatY6=Z<{)`?Kn9jHKc}Q`* z7FinDP3E{{_s@CdCQH&m!bG$|7^pMpyJT*ouPmoYsQp&*^`wP9Oa&4Q+0V+?*@1H{ z)F)}MD`20I_Cj?!+Lwm^%039sn-|>?r+ud_C;22DWV=}A?hSIr_^S=)HDX=aVd`}R z_~es%kF&{5$6ce9pw!K$@90f`K$SjpU^kBT5dakfd1dwMv0vqpx4I&$bOkztVRQQ} z*dIUe1#egRoMthuyJ!V_JG57(3$tEMci|e-gIiE??+dNR4b`M#zrKgJ+F*;M*dS)) z8@0*OoVc(d%M9C%cFwCfw(n%v{azJUFU>3=uDe}PN6Y|w z{{{*WVod;yPHK6SZ)?(7YPptPOzU3M8<;2CB|AgQ`sj@zV!Z#JDfS@Qs!5R*iE%3I z*;=?aE>l@Dm7&n2K~*#g(o;GfDO`-$F?jU~vqZ+Oo~d1=|HG19s|xv zNGwm<_?PIvv7(vqS0phdp~~*<>a&q}YL#8IV|`5b-`x23WOI9Rv32LCm{hK!Yx-OB zdNG=Nn1b|`d*9_Z1)$WRvC;cyH)uVLp+)}yA1}h_73RT_r?uNR0g|kIodb72?-nOW zAQcm$%Iu^VJBm9E4lWfWHPS07PaK2=|0_#TT(sH&?eg5$1&Q4WFetKx70&7srEvn? z1zIqY*54ca^BPwk5~9sJw*%_$n3>PFT7FE`!TdBb-g`)>8sA`kUs`@lDsISOZgog* zyWaJDU%#csVa=^F9Yp&(gB0qIBfGa8$SibU&Th@z(*cr{*`11Qxl={DxC+w zlGg5UHmI?gh5sshD;dn(aA)sy) zwi}a-q=UfL%?3c1-YE<1<*;|YH5FQ8D=rD=!8 zqKn_^N7zSl*v)#y=G7+*&m4DpCb4^E4x#||T9!utRyTHrS6t#4pdfPv$LTUUU2)mH z@UhytTEnu=p?FaP8ZH4`H}Sl~pL7sJUhKqH^=+>nMJTpa{4o_EqIYVUFibz7@_4=B zpeh>%>n{6M@PK`U1{vW0?Q<{U%gW#vP30Aex54%D0Pcfg5 zLiab`Qcb@JdJyQwzI>?Vg&Xka^9>LEt(PM-C~;p%7Xw!B3?*Y9wCved*~MHAUCsA* z1{zAxxCySm={wXkCl2pAGEw)M))zpzjMU2tq8HSf3%tN)X##d;L_db!D7XrCU;NCW z(domRw67+AU<4j#Zo7EE7dB>%0GP=?n-_}OW`5E`-7(+g^!bY$CM+h8SHD4nj|(tL zT;0^+JRRK9yW+4MY{zDKV}0GaBI*_U;Vo06F(@}EF3w7( zvPo%aYGWu4@093KNsMcE28sU<{1(GzOiKGb;7@=Wz9~I?GJmpl#6Wzh?(Et{j{f z3*2}e|86-E^m@A@7hnGR<3~}fVVb;OCP?i;%aGX>7qnGg4)#k8i(EPg%Qp1MielF$ zRepTP+;iZB{=m^D*Q|GN3Coy&?PZoG>p=(LOQG?KZ_ASYUUtkXT8NB6J-JVF2vm(q z8&JbDv_#niD=dE3?mmOY-<+Mw-XkD7o78qDSPpjYflL?k_L@a&s7(&PsSg~i8Crs4 zVSQkL+_gd9Yq+ZxvlLn9n3);hu&K$vcW+G|#|KXB7M|~Hb}x3yebU{Y201DH<7W$R z<~q}tPS0qPgwcFu)L%D`0`~2 zg4op)xPO1Y{gj0eS9^=Y$ZO$G3{iCAnLkA+|Jy%9I|(-CDg0l!)o*p;*#3;^J=~Xv zH5kE;xw^3{sUlqVdFSlfEYlXj23delse^}!3D!0_Gvw_xaEZGNyyG3cuG1I5l6d-AbpmsR{@`#Hi%PwXrAsLc}zqcD$|zMAN*Xbj0@OqL7 zBk3%Fm*g1}2(nN~_>06$YE!S$&CGm_lqyjm^MFcxX$)A%6FC01&qJ-^rqwKlq8A&# zsfd|0iJhnbg$Rz0A>yLfLnojm!O0H&k|$qCR86{LZkI;LBkvNU*hjyH^EZ@OyN33H{pTidQP#!XL0tcd-0XCfa;LUPfK<@I*-TT%f_%%BUGU*mI>kcPTRiz z3!$4kmSOW}%@1e`)znpb@E4dvANEa51S4hZ;#zucbntTgmQQSK9!;#| z2{>SlREZ@{hs5HE+e+lV49l?fhsl}rSI!b*zsr4kT1(%Q6aD@B7=Tiq4FbqO4a%1}_t$Zn#iyJg-`-vc(+xHpeiMY~s3imvGoV7yELP~nvD3^rNGiYp zcw#I#{h~PvfadJi|Cf_sTmuqC+@U-zd;V6Cxq%5ZWMkNW(xey+ z!>B)j(BYAVQ~oL9Aio2e6Iy1{QiU@2w)dOap@5Oqz%iGP{oK#yZuhGXOdbL6QPcU! z3&k|$?S(Wn=X#cI87uhtrau3Zu$VQitpH|imx~Uj-6^}&HE*mZ5LF%r1sudK@d70d z@N(q*I7T0}n>fuq60Vi()C82*BBUW(=_>8-;Or2@<787L6fK6gTJY*2$Pr&mjN_gH z4M{APUjLRH5{|@#=KPcCKw<)8P?l!)UXS%&JcU{Q$XNX7uG4wXGmhAW2cZO|WJ;%h z3utSn!}z6;NLf9i4}YF*X-<&6TIx67=`8hD(=Z@S(el8GxpCFe`@UYKnAj4O7jnDp zb{1Rb-!hrPP~PJp%3xx8vwwe-7j6xyogYXSb6OI>`^-~YzU=9v>WfnUdmAv)c^0@> z=cbi#H}moy9NZqAPP@rpZapkt_aT4u$6_Nm9K`W?p1MS?%+G~;ZmrGP-`7Zz;XJC>f>TkbuaE?%|eo6^+-5C#IEsL$?fk>{I3!B8h zMr}?i4+LJ2NfV`?3{1vJUWQe=!^kaP_RAJ^yE~0QVTCgITF`Ay)k^fQwk>t=z1!E? z?+nEv%iur_(6`unKYcdjInXEr29w+n@j5kn@ne#TR+| zD^3giz#1*Vpd?O*6EBy@sf7;if#mrO z3b2LqKez;C|ADF8!w&-;)yA$-At&y$a9SVLw<$WEhE=u^MHp)TIu4ELgOGBN$9Du& z-HBLxeibi;Me)Qduj;0+bZ!A<#8sE*k)lFj)oYqKXwkQ%nCPV%NE6v za5um(iAgqIod~o~ZJ&uJI1(v+)#JFu4Wd}WIIakWZC3;+0G3*pPx`;X#f!2UqF61033BFeE?(p#2V%W$Z^hxAcvuYvKp zihHJ$1MT_J%w`B@3%gm)*<4>7q^2|D<+4{i0J1X$_FNx7zy*V$!@U}Cl}cx!IUAHma;92^`d z7FKOpsT)29NT3~sq0{38mV7Mw&s%ECAk`3RdjvVXUZ-}2QuEy*O;_0PEL&tAxFcGUMiF)$I_+AM>1?zgz#p?)}dwBd|%EvyaAc0&2&h>K#hp(*`P#VfB%PKjR}__Ixt(5;DJX=>NNkLQMwgzO-u0EoYoKoe{a zpCm;kpniS&6BXyYmI9uVyuIOi|C&zG|e=TLw8h?e1-|30+*+36}CSGuZY!UeW zyk;M=S0!1d%%NeQ@$A{NRyPk5tz|9|u|2&eDPP@Hz31CN+*s zymW$>XeFPK%V_D%0%?B3c{ETTyF#|ncsE`#kFVp)C~#3kI+%MG3FKW1|5j$72zdhwPrq$Ws^exm}wy~jp4;(uy@_Qm{clJ7xhZ=NU(s)@Bop!k|JE1m%Qx_WJ(Ver+h`_zGa=~hXaRr!gBhHx;L;->EhCYCDG+h>TjSFi51r#s*V zrYX%!he;}s$8(M@P3f*>F`UXpF`(W*AEiKbNzxYT6u~>82@w7Q4hrH&<<=%m&24CKVJEsGrDWvTUaL zpKP;YiN@9DcPFl-f2jppY6dOQ{eq3Fer=A@v0%|V5`baWo|@0F4LvON#GxgGcl=I! zj8Q{kQ0hTTS2|l&qoKT$f6;0W;a4BoFk=O=4A|=RHnqqf%M(N@vEA)G$0;>VFmbd? zDv~Sy1CBJ}H5f{Jm$MUh+Dp2{DM5QBku$VwEqn&J_aLVv8i7vDVV*q-%Z@#j(LSc3 zs=9Rq=nKOzpWRSh*W^eVv|(#{b+wh4x!_kov9OUzBM?eUBi>^UUTw+_YW7c<@5R3x zRj7uM*!8i>D8-R?uwr9WvL_3}JD|(kUtC;_ws_s+mu6*P#?+&t=J=f%xJ-e{nu)B@ zfzkKIH`xXPEiTEV`Mm|cd03o$dA=rbtL8PC(P0t22t=jDuuccb_(#v1;iXrjeq{KJ zFuJ+B1f{O%qr6ki3V9$sZzd_p>JGiZYBk!0C9VOx z&sY5RE>+bQ&S&&L*>ZU9r+HX2k>5%f4m&)zcP0v)Yi-~6)%?LWm&&Pl+rK-nww++y zPADDWRC9EKz#g;ZVvuLk37B@+hc8>mh87MxoA;t{gU`CLL0LqyjtQru*{E z(txa+aO8ELqcMSYVq!vS4bp+=5f&B!A6#_`dFU_LUigNj3*gJdpNB;)h(-2|PbaV>mzA{w$2};^UZjI1QNcT@&f5$U4kZ3XD(T!OUp#>)UPCasB6BZ znhv3FIQZsXm)#<>3RQ?!P$(iv{Q(UN$((bWH@ypKR-WOMw-rC!m};q_gt#7Wb9`PI z32veJ{U33wGaz0p?{H_N0By5=TpSvd;P;?9ulD!M7U+Q(|J?~2ycRn?)#)Nf{>%V{ z9pZb##60>h9?3#(7^wh12botG$!69RzuQ&oyu` zH26a=cd~S-{2&VP=7Fm|9U-T_ax8*2nOBgDh*C3(t8ku9ubWCu4VPu8APOfT0TD;1 zCqx=UJV)@0t0*C~I4b7z*|J~p^O^RO-(#1bX64sD9OO1k5FiOj(>28PZX-y`mD#D# zp@V$`%fEybgNb?EAWFgpTQ2vDYcL2CC@Xt|8%fX!!MvwQ2qC0)4pNjg5=*h6oMjF} zgu#%nlcgUJB4{B+-vs4SNKqYz$j#(6fC_LStC6QRE0FF@$ciuM_cVma#bo)xpvP~x z=wJoO5GRdYlq%#X1AUk1^QqVf(nx9z|$UFc#o4;kB>_xG?H81+~~r`a@*LfT&_-3x+y}? z^6S8`ZcH7 zr~KIZvq`|ELyslW) z76c2{DzO}PGYTQ`S-bHTyGhQiB*T<>`g)Wpm5FT;tgoyDK7=UqM~v0730jGKRb-Pu z>N!TFx{(X_7&Vj2xl#PHCd}*RZx1HIRT?6svF7?71+$4Uy_P`8kQI*M>ej%ej^*JT zj-u7$evo`y=Z&H8U%9_}e~JHM`Ng&Wm^jx)@#Q;=!B2ku&(AcO zRw-8{R`KmJ#gvSSv-N+xFEpgOo%l$(s<2VNMlbR`jf6+`ov~2*`wvR0iqfW;9T^-? zoNCrzw^IE`V}F=2Y4T;{&%O1Gb(}*lQnCoT(7`ANex@8o0!9ZWFUFcotx~4xSf)Wk zQK?&-nQK`TS*}K=f{lXybjhEI(=^j~(^v#W49hD@E0!uqj1G)O3=_*O3<9dvjl>OB z%89TVja7&w&6ypODKc<*Yc@Gj8oA{yVUSF2Y?<(*zZo#jgV04K>)rUq{z zuIFTx5gx&}`*`cd=KVbd+cGcM+G6D@$_wwPh--?QH0U3^u~#5i$$W`<`}!f#8h=^F zL14@h?T)}t0hUq;t(IGM=FcnAGtx~fH7fNg?`?KSR&SN%mUgJMnVkibD-CM$ne*Lq zNF2w@T{Ds8V8`W}UGdmfSKWTl`HuUY#P& zX~2AiXT@c}WuTZBpO=gGf%b;>cDBBDOQ}GqjFybn;MnL`(b!DZ?HsvVvtnyGYdNzy zs3xmN-j9SD-#0ef-LL=ksMKt`vHeB(qdR6LrbdsRG^khQR$ZTIt7BkApSy*fGl#Jyprt^TcG>L zSG0GH?=EGJzui^{=s!&VBjR8>K{+uezS2lDBGBiQYmhU2&w;_A#Xa;ODmMB-$cS); zyl@W7z>lGhUz)FvUOrj&{c@C>(~#4%^?spdTXNfJJ9069R3cv>&rIBXvUf-Yt+zU* zK$4#(`W*EkP)9{4*x}RKHIb(x$tG2^wM`{n6(`m^4D!eFuku&qS7fD@#Foq~N2QQW zLro((y{>td;V6}$Ygk*XFLnwlLtKYB;6w*21wV$LVSN3$x)K!bF4!H{&u=Nk6|^YP zDJ6zfg{*d0aXAkCO{(HLS<4(x9(N)S*9}~snIy3OZ5`ViNXi!;8Ez7xkl+?&$~<)| zQauwEuA|xH#Khy%2xf0C^DF=UDiJ#q6X9Pc>{FQYFPrWU%JuBa9DQ2NcT5~bjK`nc=+ zG+x&eh<$q4dK|b#rX;7L=2XlD*&ps}2x|ML{7r7Z?ZeYAULv&G62@1a)UHLQ^&{tQ z9(}ear;C`}-HuzKDalDMl`FWkQyU#N9Ddt-j(o5SufObn5!)ofo<=bIydmiWp4m;} zM&;6V!$!y8yG7kYy`0im67j&~CY$N+ zjt|f7)XTo~Ss-4a!@Ch-jQ>HlIi^w2<(p3BmPtl+U9&bp70wwfN>^d1YUV?S%ao z`#-;zZst8EPp`=Mok9MBZ2tR4GL-Sht)pYL1(A#~{)M*CMwOQ0F4^XGyRzZ&F&PEJ zcZP?C{|qI!zx?=QJ&SoUwawz!ek}3#+rs1alMDIb&IKcwk@h$HZ+2(*&l*k?s-r9Z zVA9WAo>V<_dAT)+^9ARE;2L@3Y|GbgY+vLI^%G}qY~CXunC9?gb6^vBrkuT>t)63$efHSqajVX#{M5|GlJEJw z1rCb060&AKng@o%PT&88Os6{RPsHV>3;^ zUoOt=ECxM8dKDZ@E#5o94-cKVOg>7aP{B*gN*swGi`dMQmcMi7r^2g?Kj&pC6Sfn) zc?_3Dmm}2-^dfil{+vPlSjW@4BZJAZvs9+kR4gt|=E3<>@tX^PZ*o4>(AS0_-|G;B2!)_i zEcp5df;>baXu}GE?q)&|gKLUqzd8ijyuYuiWa$0z}>5rQysx~M+=vmG7 z#tVJgdBev=JR_`{%mV5b8czJN>@u|EcNoQAna0#f6cQwy|C}7fSbxZ=T5BTv>~8n3yN-}j`9$ejdQs(Rjh;xLTs7KA#@ zKfrPfdpyylRnw!T6B<4z!3MFpy>c>>Y)b@fC74({8Xw1BVIbg^@8OAWV! zTA?ns?cA;%3D_3_{9thVeWF8|K-6XB!YZmc_l8RsBixb^LB8G;DAIIc_To(D4^xeU z8o|{L_LhU-yDmX%ug{-su41Mr37p?kh7g3b>#0&dw~oMkD30=jTuEpL@~}CoB0= z505kj;Wr9-zCs7udQZ}ZZIdR}5--m&dr#*YJGNT4vo~8=8eO^`*UX~$>0@;kv=p06 zMkt52l7o#s7tP`!GGspzMRxpb^R}GaMR9g%z$3jkv-;&O}5JwPgm=s2AK;FQaPyOOLeMguK5%AG^B( z61zSn)-(oNKJWPb`*+~O>5n27U4a+j6M@GKnBn~M`=;sP&XTbg7Xdwa+`B~n$J*%p z2X&^T4Gj&MIXS%;jP#Q4=1u>t=a#*jHC=fPE@ze|f@wjsU_Tk^c$;smz7nG28`s(`Mzkjg>6&n))+wS>~Ph0ZO?u?F)+dO|x!otGhD8bA_ zf1UL&kw09)F~GN_%h)oe$O@cTWo2cQDmNw(yQlE8((*!Z|MVRDq}=e*sl|LrS^}yv zd0tuI@er*lfxt&kLa&is7pg&<-yUs6LSetx*0Ac*te0sV*gcLxk@FrA#dJH_!1K%- z0WnAl#$C1TeB_DnZhnadPssDx>gCUAH!u{~WrdG%NCj}V*!TM7&N!mvmbq)V32HdP zIg;xnIFnTSu94WOr9hH%adC01Hb3pZ(+U6I;tGc&UFRdB+BAvmasXl1yZPbyNWNX7 z^WdWrC*~JR?a^szbmvPu7wmy2UO^1so*e}(%+H^8K@t?&i0EwxTwxb@m=xrK7w}!> zGS}~X*-_%|9eMdnsf_gWz-8Bqs;=;F-;CPNw%aB>a(Rjg&$$xrp=mHmuuG?l_Z2ZR zUfY~$n#)Z=XH9$mHfylf4fE$ew0IBhJ&99vkboF&!FNZln6WIuCM#k|)-%iM}0qPU7&bDFjJA3FVio z<2-tX+DwF^goK37Yx2*3@da(q23^e7b#^8Ii0UUW-`#Bq(m@m8jpJVSpGEiEcyE20 z-QBtT(bca!Dx1p|^1CG0kPNDtFx*&62>=gM93{ z<-ac(onfv)XA4??iV6MUD24!W0u*@s_~e@Qed7I7*~@X%sSJObW>@yZvLFgYwn1?` zVOw~Z7*rN^kr;kHI5=n-tzH~-ni2RXq?0Jl5<#(ePLfd&sX zCLV<$qa_YUE&lj%k*h*8`BxNn^BP(NXL9u;mI$Ns@L?x?v})j`D|V~vBDKjCH4sWb zp`p~12QU@>Cx`El=zLm2PALlfYLX-tJOBy9<_q9Dce_kNw_`U!K8elK;^c>WG}o zR(ATH2F%w4e)%IIf4-}7KI3{pUs_g%U7Meu7lB8yi;0FMeqL;98~_kzAnSu(2X}pG z+^49l$kyad?K)f)2|DE~EiJ8WY*bgK2FFbhETWIa4Rk|@#JuFEC2kJF$_E}u1<|am ztaRNG7e5e}mOf;^Yg-hP*f>-Yn1kqKK{$k6J}$d>3Vf_!5I!5x7wnNDLg6`wo%+GD4)jj`9;WFhEj?pwr~{@4>+D3l0rtZ#1u; zZ`5207EP^BtYC~05il1#QX3M*4bzLrN4xpCxfdfQH5M0NEH5g9=yuu<$OSY3v;)`& zMUWKwUy+qa25Z!h8_1oR!KEeklwqF0-wuJl`RM8CFBw=>`(%nCeFbgA-GXmHe$gmO z#P0g~dTg}nPpQDI*+8}j8Ho>9w8Hq3QNX~ z^X?jq>XYS@HU*KI-Hyo&jT`3;$9u;Mt}7;it0qan89bbw|CUHTY@{E*=K%9%!&_gY zSM*!Aba{Mn?Q_@6(26cSg;g9BtJ=V}NQ*SfokKX&cy?RD)nD4aF4k7odn zh-A&O)?^P>_`5Sw0Po6?$Dnb}KXo0?Qj$l4YnfnM1n}@V_`317l!T<@@!sj_X+E}_ z<6LRI^`Y2RIMVsYw`=zLp2Q0JlRWF7Qj7V34)#!|OIAwiL`oDv94vPmicH-wzu?%q z7__O&zqpDNM@Js|*~pV$6`4qmrCEfU7h}ZE+8U2C$JyB#CYj@us&8e_QlIvE^vVJx zmk2++2A?DfB2xtML--wGbb&$<#}L7;07=`3#Rv9 z-rt!(FE0j#f5i$h!^6W0iSkQSlh1KDSAKbP6&ea2iRYg!u6gfYB{ez90Bdr25X$}9 z5}$pFnYHjETXw^U{Ir!+Y=bqwp<2H$fNty!LJrq=acNIqE|^&O;GO#C)pF?H|6v_J zR^NKLwXkXD(Xq%evQeM7RzBru<>d6ov(B{rQMuvL;IK2oI19bZjF9B}!UUUCzjx2F z#eHqO-YFZPLhwbmESf_ z)(%cx3kDaUju_~p@g?>59&EYc#`w|ZY}w|~-T%^_{Eieqm$w2=z8>85Q;l(Dv&SZV z=f#$55Hm9W=PxDXgC{hL4{#>4ur=z%Qyk}geDbhlGALN&w={U}35{Us0^VI6R|Odv z5+fsp;1xQU-61Di?JN~kvQ<)1@$bvuze2$~Q!fF7LW$sqASq@(%W6b$(Gqhp$1fQf z-F{(~p1@9zyK#>mnG8#^JKg^Jl~%Ka`pTl>_y+sHI{5+KB>{!H$g0OpNn`ew<7)>& zU+H0vb~qokkS#Jh;V?%Xtju?K)ZhvUV1xH-!m(hjd?bZu5U%_gWqF6oLS}w`WT}%B z?A+w7ERN_$A;j@B)j@7(%JFdE^JikxUc&zf-haf%AKqoM1#)I##m4Q|3OH`dE(i-X zXp#v}*XU@Y;Nj2^(Ldnh_suk-E)%)WOPRxIz|G{7^(gY>A;0@Kw=4kO= z{i?|Y4JJ$iJPbu^N2ya1j}!f1FZR_Sw?98VB;AR}iKA<4mX|QNg4+qLP+@>Uck)lv zP0xBoKQ?)=5@eTZgW{&qBFd-!XqFsvaid*iYxC9xN{w1LPN<-3uhs}CV)E` zQR-Cg+p%N@4T(R71}k9S8_A4}zHhhuMK;rX?^wP*944ON@1y0myHJWged2ok2?Kvl?%5iiMQVZf&ec6F4% zO@UbyhLAhQSPHE61R6zx!znjHh#`u(LenLo|FM!41spTsILmarbAHiscYBo{65doN z^v|2*c#YB;K45rvWmp~Lj_E})L*=Cf3sik|&wOOrODhiCW2=GfETZ*DSW^3;%GRg7 z{}y#n2)iAOTG{C@WQYHKi;#%pP={N-z03;T*=eErirbl?fWrZG@x^WzI>Tz$$-yHx zh*XafopXNNQCmoGhcZGg70IBJ9isCBWEOaYmg~r4_E>V#2?%qOEJ?rzSH2kUDhOD` z5}ya(gRa&@03PrNo`2(T8OKrsM-hG2;F>oH9{xEz2N@K&5Gc1G=LBVjUb*d3C@?Bg&}jD+Ww(L>7iGpz2q^!D{rLjsh7H904+GcU z6Zwk-;V)uOwzHB07}ShV5f_2va7M`%f{o7LN(OT{qbbH9Q2>7mZjhTI zkta7WA<~T~F`R#Sc%0w6rT#ky&JRTX32b3QP{V(=xS+(y2T-u)AQ`@ZOGW084pVG( zirQ$u6>;>XLa@lY{~lVMIHW-g!oYc$(#(NlK~>%g?;y_v=cX2VWoepL zn^2S2XaYgFBDhR~9AHBSEnYzh;UM40{zf-&z)`L{!B1(vUoac2-vsvX+s6Hb{oPX} zvv?2eFM*UW4Nvj^5Yp)I7;ZU7h(HAcI`rQbvhmhuhkbQv=PNli*5ktv}3Z1_tH6=)OF&vZW=`7 zU;UZrIXHc7Gyxr^Ga91A*o?l%mZt%qE7b|ZOG4!8J z1d)GFHWF-5w>sO27H$QQ_uuy&?Vq{*0VV%380Z*X`ifM zU<_|Zvh4O03SBvyG;o&t#grfEI{COEr9|3VipKvrm%E*eD-30TkF4qUnZvqxj5;6EN{G>WV>u{IRPOo*Q?VqEEaOJdx$3Z zB)34_i7OC1p^3OUd0hFcZ~st2tgq32JpfC%o%slDNB2$%M%-FLBuC7D9;pmS>{mxx zj1M^j2In@EA&0B+KaZMdsb7CcS^9-q?t2e=sOTV?^ws{gket$SS>%2p^>_PVH~WzgduIlUO~l~PY|JY+Ij4Z ztN8AlT<`==kn_l``2^$%%dVUq~5^xq8>)M(UA64PcdboWxOi7CB7nPAAQ`6%d5euF;@hpmW zeSu>;#ilH!fpjpHZ>D&;P_HX!qFXs@oz1&(#H^ljKQ1nglR2LKqD{Rx+Po7Qd`Xq4 zmaG|1iFv!C_|*#s`R&ft@pUS}-nf{7R;owWKx}mn(hcSLiByOiJzT!v9N=s6llPQq@g50)P2k-dO5#vcPlYM2; zmTrt69wyS#(Rm6=?5u#WUTgENz%3-9vrBR2#5JneYple%(j1Ctf(hJHdlCfl#Kf=h zx_>As*+_lT2!mA?z1E0ovBlu8U${VNq>Sws6%&IS$(=owWF=qu_o)(aOpP6f?rPa?OD|42DjJRQ7@I#+~{`VX^ zR!!pW-I%EQ@?)k@bdB1HD##t=BPDHA=lUWZO!DpR6*XlH0@<{b;Re4 za)3yC5l-1|tZV#(CPuXHv(?cw1#zT=nE5v&bnBm(&1b=tstxmsg11BZzVfK6tAnQ+ zr~BO%W$)mSq#4hdGscxMqLgAA7ayL`nhN*_?N$;nNrf9MISy5ubMAkN{JOMi^b?Sb}_Uk}RB8QB>KFm=fCOq6n>)}IB zxiORuppim1Zx&h9JbmuRlBGqz=S>>(fiqc)G6uJk5g$3hb!t47sN?^W=3Y?7$f_=X zx^9(mK{=Np^>wX>+Db;WLox9CDdeNUJX9F=Eb(BDQO~Mp0jJ7TpB}MQKka?#JUTXR zV`Bp!wtcluQVN!4nXM_daJ72sPSa`;;gki`iGYBFtCaHcJwE4q2S`F&=6i8Ye*WO$ zp~UMak=Bghfc*T<93?ggBYOeE%PzHkWy4xuq-bD--i^#eIv55ccY zavUXd7}>PBvb5Mc#^E#F%)x{&%)269wZvU$(Vt}rDL*1CF1{vrpN*%v<6sHyj<4w5 z>!$hG$S7H}1cHD_SL?#E`icpB0Cd2o--hZDf7q1a#^f+g{Rbd8zb!YG4%Wd?V;o#f zsy1qGl2mUN=~opQ*C?g)sB%+j>4@0)`u=P2``eo?G;)s#=g(_qzcVJ&J0!^(jNk@T ziBuSv#WIB)9DVdHpoXKiqJo<$QK2cfh@X*#r5E%WrcmEDJ$}9N`TFcOZH$^m3a<8a z!6uQGmKN(bV%PA~OyhfC@wMl(cgIkU5=q0qt;}ZhGJ`xl>A~is@|V|UW3#iex<^Mz zkB`61Jt$jlMv!tc$9l$FT$x$V5eI$pM%HM$w!J>2YRqMHe1hv;?!~nP^Jmt(7DK@M|zGPG7PA2&wJ(SkkRSeHlz~Ov!2D*0p&2gWOJhb8x zpT4p=HxF>k#@C)s(qMi2H<#e*2!%617b0owchazZVL7vYaj`CW6N!Yj3J-N~sS~a| z*XNU{P?dlyP}_0*-J5;QUmxc!n=s#7B*%bPobm0EmX;**+~RlT+c`46lB&hY4$N$D zR2P!tJ&bXH0G$@#radisOCEnjqOPMOG%JhA@q51k7PMlLxg4wPWBRE-rxAOKGijuR znM%ayYV`j4^{Z|xWKE5b&_({&`QiM>p7TbRVne|~^YR`s?dIyMTL97CqE$biKSq_i z`Q^pk>@nV%S*e0qO*d8+Q0NU|YS$mSAry8A6?G9Py6=&G(WOo{4qgO%rts8Mf+@tv z_OMfSM0xrBxP($sDH)tz(Md-M-ESVY6cbcoD%L|WajLR`Nh1Euc7WdSW2UT{t7A1+ zi&-$tW4v0u$i6;l>S$absM*wIiu9bX8A-DajOEM%^*DKiL3j8!B~iGjSjyi`dhTMP zUhMqd8yKOD*%M#|$-6OHlCkSg9~((*>JlHGNivgxzRTB555o$h zzs421Moi1PjC-o*>y(A16@x{@AhZbD$UK=%6kZX?s1zOLHB?iQWgk3W?C$P#Fxoii zvHqZ>k-`HoYXzJiC_r;R9`t%TJ67Op8zic!5&FN(zmX>fwPSwoh8i2aQ&+b#qd)fa zN@8Z~pIcvdA8d&d0J=?PZm!(Fh85}e#+3x)UHakGn@K!Gd!~QUOM8u>VO2${MgF;j z=jiHpkJS8#`?)uc@XZH%JoQ9k^L~!4R=c-MSvn zO1t0t#WRPtk&o_A7<`Q)x8{J4);_Yt0YQeE{OPlou<7aP0Mx=s<&}M#U)d2I`Lg9a zUf@rwbYmre3c@8+d#rn254j)qGeH)We&)+=jK#$QZ({JiJ~INLJTE)tb#ml{*>@m4 z6mjZR8LO0=19?zc-V#ya6m^e6SUxK+PhLYtR`wn`ylt4sKdABfldc62rp6eo%n0~S zRk9<1&O$s(b~BkRPyJY8t6CK;*M<$q(vsLdEbgzU!5@#~k<7EL+MKJaOWTTE#y zNig>xZJOu_rqu!tW>W`pWrzk3uy0nVi0E!4Gi+C|w!?~ExsVcE_vP$th(XiT{H;tg zts_K{Km8q0oiK{tpejP8%}e-`*}_eNWcccCoYIXp&oooB8=O&j&f!`)4?)VQ*E z%8|80LR(EN3pqE(Xm4*HhF9ZQs+jVwSO#A#i}d)*+52ysgptZoZ0zjhg1eC($NgUT zihVKe7px###qrS8-eh^4lau*2TY3MElW(XbUR7_{&8*UBfBD2`MuQf2$?m5VR4_Bg z-vzWHftdP!%Iib!-3wRI@$aQ{zg_9JrjD2a)smp@{`nIQ=!S>~*M!f+mr2^UUx5;K z)vjo0iv&F->4Z?zzXjDAXMUW!{jtP^?)aSiQ^7N8Jn43Y`ohKL)mAU9JJ(RG9b#9> z+1?&MHC6KWZ+mOTf#nN4qrVRI;9Rmxl|sVYc;cqM4(V-hnT%cDB3^TG*Zo))QehFg z$x6FbcasLRHh_|L@8~oX|B1+iYv2p|r^N!cVrH~4*FiWo6oVbH;>ROTW@cv^9H5X! zw#oU2cZ6(h81dO<{o}$AT}~e)UO35)vcLLtd^PaU<>c*&Zp>! z(i;MST{e*Mws)W>EIwooFju8wi%6$Oj?DNKMr`RW-0z$;;(2aKN`in~9&EBvEFj%h zG{s+SZq^efpRl#XMypAnFi~H``L3Lg+-|?Xa%W)Qj+rwU`gJP9&?{vKOn+JAr@g<<| zIibf0C~N*sZYPzz7pAqxiR~AgW`V>zgtQp_WQXq88 z*ZI>m2_wnti9qJ)Sr!G%b(&oi_P4_`VFf9n%{ay@NXMpK91R@cPkCa@F(5Y9idqJ4 z`k?dO^kNA)z9j!Fjkp{A4d|g#N$_d6BL_gwY?wmfnTGKVn-y2Vp{}oJDiS%w_D>&)kYr&>$k3j zI%MN3M>0%kX=_{C*z`zo(vQ&|K7COybS;@R*g}8?!%lFCBtvMdB083gQ+ON;DN}}V znd5nvx=tu(tE)NbVvs{BU2EyACnCqxGuic;q$jJyr#G#eea@5}`r z?upg+Pd(=#44x|Qq5nN;jvBOSezjWQIH9(kSs+09^hFAf3is}rH>?d)Zloa_$wy%e~-B9e%oMr9BOL zUdo-is`fz~6%|~p@=^F7dnT&H@h*hbe@UU6YK~nN)awkDs*G{apvw{$$5Z$5V-)Z! zlH4&y&pP((kdcY1CC8$RAObnDnaz{mn?Uoz?z>QEAxJtN^{4VZH*Kwd{ozgR>=!)0 zA6=zRz#00$yaheOZ;Fx6Gk_&cIZEj9(*q1iOUKO!s()o?+I>EiJJQ(T!U7oLw_cXh z?D){>^QyQ6Q=#L<>GL9`$p>_}9WRK@XTzW8xKRXgye^g?`fJ)w_hQ(b_^_eVWq!UyF*v??n|GRBqGA{`X79?4N0OD3GKilVE6 zyHc0&E5ZFu#r)0I$s=Y!1D_q;WnEAPd~9@70+foNz`#GA{5ccswPsLt+sbSptD1~= zce#A0IG6=dV19acv@yFBq_d(&!Ydd4U^K@fvO+M=yOy*VtI8d$x{wRX(IQhp(0qF8 z_k43*ve#S4_jQoc<`P^jeVKUw!gt=Ydb7uaRk}L%SxLyF;$Zt?qFIk5E#6x)GO?hA zRh_>lYCI}|x0I<SnqQTj@E?MQyYIRM#qze zp!+FTMDgno;ct5fD@J_MUd0x3rIL!`M^&u$G#UhU&)OC(Irl@~cj|^XWg%7y zoFr~#Yg*e}l?6c#StcSqQKeS910PCF3fY833AdNCnRJ*SksSiO?g9|m>-MHXb7o@j z-o&Vlj!j%+COSFq<}MNdwO-7=UL)YQxLVV)olaH9!=vGM3^0J}seJzL9jDAz1@Am4+rWJG*Cn{r#@nJArkSxz=XEacFwni5y-M zl3^5bOWTgW^*9UOTFs$~Q(6W>=8pqcd4xGaWNz6>$=jZ3qw4H(SZykyIB=L?Sh!i)@ z#79RU`rCMJ1wbR^*v?GhVf!1}rYN7U(x5l^`SU9jhkBqW9*C(XHn%cMiKZp=YG$XL zB>}So_8Qk{90F*pg#J7JDxa#E8eLfa z9J0S^VSTaKjK6y4Y`!QvB=A^HOzhR07lf>|Jc6{b{IoH1C=>yY;;hH}D;A7bzSX+Y z@Rp-_y%!{eGDBgY89;8!t>nA|gMP2LD70bPN>ww8B^B2$<8tmt9*y$s$~i-f=_do3 zRdC^ceI^Qa`JOL5aCP;RV92ZM-;4y=w1EL52TN~SNq;fRo?x2bvv}T$G%;GUaG?hT z^LUX2RFCNnh0i>^oLSPI(H*JdG}`q_X!B6Nj7v!1PSXTEL+-`vmTi_4+}Ut!c8GdI z;ImUp_CuOpeoP~6?Rw>*QoO)@YQXUCO(6gQ3lGNwm1WoMe_6gfF#@_qbbx?^Tcl}P zdmf`bdu{5#NZm{CX=|$LO+_Q4u%6}6$Z{SoszkY_cQ4M`ofjfDr6)HDm`KL#abkq7 z(Gpwx`Vyz6rVeg!lCp40;9ZL1jg`JMyv%^;#l_IEp!0%#we_x7Svp!3?)xd`jDo|) zIuMph^Hi=?&~Q`^YcbK`(Pr(Z091`re^`k=(e)<^re@zZHA={dsXuAK%o$!q3OE{V z-pCknlq8dg=S8=I`~ajbP=pMI!x*)LO-qp;!Ro!zCwD~baY=zJn+Re4gdU#(NOR?B zAYWF_%`Zh%o7DN+m5ZQ0jLJ%{ml^4F%{#Nx@l+UA@MqkZe16x~OkKmE(22Ro#e;yj zpIU1qWRo@Q)S~fWsI^2>^-#7~u8!9dESiR+@n>5tu0xH)xBX&THG)<4MsP1)S z22~^QnF_&c%<(qQUQvS*h_B~76#l&ck|b3mup2!H)b{9z(a?}f-qu8)l;tLsAVkES z;6cq>V8^n_SA=WkH~xN$boG|HSU@8ptl#=db*ud=6QJZH{)uN`HBbJmHNjTwA*8ZMi!5Y<*pF#OtTgK5 z>gx0|OQXle$W))+5*h`weAg#rKZe*6kGl&{Xm`6={aI6qIPyLCs==AxaN)$~3~1_3 zz9*pKdbI1`1h;>*CEgerVZ5^n+<1tJ{;Y!k;7Y4JL z%<)C$!iA5jtX{mhd>><_!2axmG`~8w_p@w)0OM#gD5pzawbZNz&5sX)=y;+dW0p=8 z+YcyvUE?wCwenjZs?C|^G?PoMq$^)#hoG}Ve2be_gHHYBAGay~z}G;>PFH(8dBH=i zRBqnaadvyLIq;&TB&=m;hoe`?fRfd~ZGOM&S8x+Ijuwt>Ti(Z1JEr1tTGC$R%3z|X zqB;ku}I5^KCQBtIwU%t{r!9Me@+*1&{f*MJ}m4V~7IOB&a!*1NT5tUo_ z0%57GL@A`UC)WXWU%SAL{8TgmsG8e?-0FB4y*c(SPu$TzfR-P1>9@867=cD}-^6E2H% zBJO)MOwmj0U8vq&tKD5YLY6TC%Amei?QonRM=B^V_=4j6Ma)1^k{wZ_-SXbbU}kpS z!1(;G@-qW;` zwBG(gpu!zmJUjWxZIVd{b={hKn8E{8jk(6q_;|8kukHxd2wn3ZCwV~#?w%de9cPy* zd8kQMA+)EJfkvLh!O&6>&0E4U>7`DS5@6(6Y4*AI$&ZuT*4CKeUPpw<2!4ZQb_gdp z^^OGn@+cqx-(kcr$(?M1?US%NqZP!NlcE3*Tj}nN%*@Ig*iXAb82&L&0aqZ%>mV zbZ~loJu~kX^g0Ch^57jmv3@xfEwNAg>6q)v@A&78ENn+?j{gC3*}*`!>YH^ozM;|e z-AHNsf-lg;WqkK~f5U<%ph9(e5;@u*pOKnW3(1{CC`~CnFi*c}#VpCFfnEz4sGB2BeVC}VyAfJSB|owIT}5L? z-Z+X$KsNRf?SFdf>obq`lclrFoc!KT-_r6_B5wFvM5r3LnI~*2*K9xmx$9yvNH1V)^}SiURl3Z$f;X$>oH+cwQ^+N4uOKql^mVIBo zz+uA80#^Oq-A9(?GuBK;)d8TTomW#v3K>A4s~lfaA!t({cU1O#$X2}B{YFfmn!bajq3H1$-LFDT9r5oyWLYTKFQJm>#`Wv|S*h8g#Aq zTmo~N$BoQF2_?2cee2ql8xWap`a7lp`D3y!wTLZYg!$_3z6xAD>{ z5)Lori;^`^f%Z&B&8B{ZH8|vApvmvr)il$uY~K*2ZPjCy>2&0 zP1VfeB7Puz4cUofQfEn;1I{D?$(5yenGNr0W4MrH_JF=95;x&Jd;qg$ECzr zIP%@62Cs^M6}&nxo(Kuw{5fz`scU4!A9WR*-!x)}Eoy)75Yu)QchtCC-eC`FFAyBs|cv}ivU2^JyWC3pd~n-eAJ(z<_8 zO7x;6i?VU`A^;2!b+TuYq|qmGjwlr<5ZFzba${vE(Wk25rfFw)*<6rNR8B@R6z1~W zCycx%8pqoSqNa_H9iEAaiSIGu*q02li1>wC54CVDn3pIR;Ld{=yjSxwCC=1+*Rs3J zs=`H9m;{>Tb$hSbK&wrpbN7n%%LOSm{44NUTbD8b^_%arx2htoD-LLiMd)hGYG?4y zfX%JB^l&MZFNujsjg5x~Q@xPodsmSxI9Lq3uHx5~4%$5YoUHocK9YFfga{oV(By9Q zOw;|vdU3o&Yow+zU3>YOtlx&+%hH!9+0DD)hDr5C|1Dt)2|S~YgpMCV71hog+nKv(Vn0QsK_{`j^o=656^84vw(v@mx5@vus!t;Vf%=>ad z38U~8X;Al5H8y$e{)`pjq>m+r834w0Xa*Xp*#lYQPE?p)wgmE2`MT>>|1jlTBoqVZs%{Qt43APP2IQTB zLl*g;R{v&F)GqpI(4o)DKSA_&(B=zsVgx@=*63?OAC7n;Ch-xvJiDQD!qnuwNj%Oj zuKA*nMTmC|Ow9njCGWb_9(=1tCnpywTV-;V2<#f?14)4cJ9nem_=-AE=m}&%rVjF~fP}VSQC>K1Gg4~& z`yHpN9deabLZF7q9sqyq9{P21l~ybrW2q5`cSovm$ctB@nVWN zX}|arjB&DKSTu1FXf*3-mcK0oMlF1UI6y2r`0=?jjop!>I?z+{S+j`s5K_q#x0w#xdQHIDCw2^Qt6jRFWPkZam~`}IvV1^kOLSw55^gpaPs~s$d$}ZtvPJ*d3DHO{BTM(tm4I^8ztZID34Zm!7O%70Sqcbd8W7E>?7Tdfy z!fjv)TdcNi?>{RBE)n{7lS06;2Rx-ob2R4`7J5H_j^RTnf{^N#ET1~eBY#w`!=3wZ zWvX~^h=Dk2IN9L^39ekp#0{J4ieP;2gm-_9`#v=g;04o&KdHqYo=w0!v$Y69V%BHU0I%fjh}c#GlV`vWsG^k5v~a`FGw_T}MFw&B~)EcPu~ zLy=U95RxK>(n_0MqRo~)Woej&P-)+2W73<7?4fKkcu`cgge)^sQI;87Ght@F>+$}+ z0&rA@)_TlRvjzJdAu3P@cULw`4}lKQ;E0+_ zys=wS{eje#zdG0JV7#4x!Vx&_kf|wpmeTjaLDob0Je;u-h3LVNAJiDx5(>v( zW}En#x0cY2g*dKepQDi?fY?Exd@q~EJu@q#d_^=ENF$wdZr9WBz|p5Mu-5z}Nn zOZECTXz|Hmx8seEr>-d>C-$b7QLF)m6(%-nGT1dZ7QA|QcYlA~RrSr~J2BC`YjDVA zF^n7(r()h2U&zITDWS^|Ebdf+MRW+ZH>B7Mu)8F2t<_?7!T&Z2ZmSDgSFmBy*}^R(~FD43l{yy)f! zOVtvaOPhb3+5Nl&+TW|Aw`^W%PYvkNRhl}u=`Mo{UC0y2n{U1rYFCQU;5RGaIGL;& z5fOnm9A0x_9e^^xE23fYO!7bmZpj~G8YvV9kjCNX7vuGtTb)E;Uqw&Wt6X1?TUz<( zq3hh}7uT0=I-KM;Zhy|=DTuEHRyY<6kZXXFrCYk!eSEk%R%ElU6mNQzHad6z)2k)C zIuXG^fZ?}9LaNgXc(%rHI0%>P={1Wd+E!E5i$xX!+_KB}vxpjhaGMcQF8*C4o<#43 z?)G9Pcj4Es0B_s{Jz}BEzBR6dr&-%?i7$}sBw}Nh-C){mf6=Dv>GUA0rZ5;N44Nj0 zjr(M~;zg4(PqP#c2WuA$lz3(i>w5hgjPZ8G&RB2)6c;A%M+WNcS*qi{b8A(yr$O?i zOA@tLBc{Li0ivMgwUDjEBFcQO>r>-6!=B67Y2(C-ifhHT2A%^`^Mk6=)d+PL@2go< zPXjTBY4#6m5*7tr>tTwP51+r3Jac^axrjh@!%7bJAE|*t1MR+O-u^3Ze>pEFuup%P zm*IJBKuil3Els<&OYdaEi9=3JKF}OG78A3@C~RoZVq*i#jR+OB4z z@bN95Wk2>VgEk^C#XMnRqECcC&m1VYYqOn~@&-f}-I#W-JoKra2Yj_TPMdx1X9nAU z_zS!Ga$@ZKANq5x<^=KzQ$+hw>)JOGvH57#QfE)?mp{r-h}xgFI2#Rp+2yh-mb|V| zR+;v%YPz()D&zSftynu%$6Gqk8Z7D=lK^iK9#WTfq{^jkODT{OjNdp6-Rn| z-8|jQxe1T5DEFnSjP)Uun>}CkTr`=_YekmynM#^2s|tWswlBUkTe9iHrw^9XGbOI} z7^yklbX*pfYbmzVFlo?T{35a@c8hPzSBt!q{{C%%V1b0PnnKm{+PNeB82}<<4dk3} zCQq5Le0Fnl44F_zLKLbsrWeMY?Wp73Zb!Tu^$h8jMn*<`EpJPl^j%rzvSG3i2@_2` zSiivg49hJ!!=^_CAK8R4+iX@)UKEdp2~;Xe=4ap3TR&IfkVG6COQwmkv;q0P834rA z!j(r2Qg43r-Dqt5ZJob-W!3$Mu4Q}HJ1_q=Gf~I^B#JC2SsA1C24Mf&E4qS@A_p=; zSid`S(#6(0P{{*+g>L@>WzNZNatDS+LzpUlNZRk600FBC$a%T`%wLVEzmqhbzg39mrs-`(!J#D9k>Nlyv$8O52(-Iw{b`qdCF9M@vW{nZwRz$ zx|<1DUa#uh%y$s8Lqroc{nO#e69}~UZ+(ile2;K{S2Q-CX+Z*SA&u0HYB>IzY2g*B zE}00)C+bcF{Y_dVts}e7hwtg+DW3G7WY&sV%yF8?4W~7_D!o>i+qJyVQi-@$r+Q3^~1d zFRq;Qe{5{M``VtqT22>8Ou=)NvJVw*kH+uqg8d*p9y z{OJ`*z*Gj*ymfcPYK~Zk%RQevdPL7RKFEOg{s`rm*-*YNF(xy zn#i?1EUsUW`>lfFs;gg947HV0j%K%L;fzMIXh*!Coe_aj;?x$d(2kld&fs4O(ey3B7v?$m(AJN&&xR+=-;HVhgE!c) zLH?Vm$hKek9=WvX40+xOESV*b)TY`+i7(V#>A#E}d)DD+j9f4`+1D`|E&>L8?U*MhnZV zSSu9sMWPk7sD{P`c8@Bu0$w;ZL4vVyVxVf@NV}qEHvIz$xPpWX+y9XLSTbikxVI)* z)2arzRWdnf1L^^Pg>HVZp`P)~X{DYZWjOiJ z$4_i{^=s3ere_Lkj4#?nEtEU3dQ1rub;TQ~8F6AApMQuj2pwxdu=;fFZGzF|}Pd!=Ke#9v5@W?y~qhukGz}OUTo?q1tNujsfTl%G5g@FQuo& zpLjyCH&%F z=Kqp9en}6+%m?c>)tLOb>*{4=u92iBS!XJJVU;{!ly=n0`wtq~K1g!YKQneXqvNNm zzLM5kd^M9|{Tj}(10zd$32bP7S-v4_LWf}2AtdQ%6}`whB{H&fW%JU1>g>L72V%sa zh#dat`rNj;>-gPENh~p|tI?KJh?U#gcp2f=H9lmoG~MUSuiP&WLlH#3cc+d9HG4gPgfBLH zJE%C$&|}p9`Jx>5eoP)tMuz4a3~T*k#&BPvaOg0X6}9)#HJ>xw)+_E-qMlwn~rUKOM`Qz^cViuf;5e&3c<5XUs|7Cbs7m^hqWm zq6JBa$@_`ac*(Fs_B8^5)#dtc&)CsgoCM+=84&2uk+Bi6a-6DE_W`0TH4i#|hw(g- zd5u3Bo6F3gwh1VHMim*zJ;bMSc88$%JPBRm%DLY;o}E(WyBfo9_Ov_-m~GLBounF` zRc6EhQAjj4>AS>&4fl!eRNHZe`sNTo06)q(UtpGKqaI_x&XVKADPXi-OT?;) zhAvAz{PKdQK^HV2KC^=z3(6{_P)MB|S)+UUoHAJ4F%w(Xh7RBu1ohTFZM+^n)F6ZP z)N*X~SA#T7#ItOz&v}Uj76v_4Gr6h?yqaYX8Jd;AYLvLokAptOaj?v_TBG%S0g~zc z-h~HIV0;GAF5jD>zm;&)|PSCaF7(}C2( z-h*R|BXBlohFAmkGa^D^5$$2C+Il%i(xBJ-?O~GdcQ`o=IfiNun&p6^U9k;_UPKw* z<2Y#fK(1R-vZ->WeIE|v*6L8>GoN!uuknvSVxgusx|N|~g*AF%%Fx1Ph)swuq|CHs zOY=tBR(V!L0=)WzD@WPKnfztTy}drrHrT!7=}&7ayT4Ersx)WOm9L2CVYVCtHZocg z*j8EfCfhnNL;c|qNb%G4h5J}3xCNkiC4Em2i~Y$Wc9{ZZytlBhTA^67y%Bxad|z+xYOu~i zl*H0YJSS^|2m+3+SCm9MG@Jx$o?q=!)$}|FvFpSxXiJt~ z>+kPB`GeXb^@jA1jA*~2`L&eXkGbhx!nK?#nON@~$PPUbdlYb+zR#NJ>d-YgP{IBN zIweqR--hv|GnVT(-e?}4>@TAe2d5U7^%A%=_JM;_1&_H;@qXhucbC2?Dr(=%fD<;q zMl#yo4Nse=;812y%m0w+ zszeqPI5&OF?7MkGkKld7hxp(V4c6|L*2XkAP^gDhGzalAnzsONSp89OWXwk8ypm^ zrok*dFT;oNHW_PST5I84eAX;n$`eqkZj=F1On|l8K6zqU^7NnQ?~M1>YnK{^DKpqv z$6EOzAwe^E0dO#Z_auwP5IlT|`AxvI9?IzqWAlk_Zf?=Oij*uGou6K^z@|N^=M#lj z#_u0yWa2Wmz=tn_W<$oPIn0Hv*~9vUh1izHC+niC0SRP~ijr!Di}S(#?HP|>P(W_` zs3uWAe*Cx!*UG*7O5H|d2`2kArzBq1& zqSJckpr8;!^{Kz!zywB{VhlN1&Re#DGNBeP55#bwQrJlWIshzi0xYnRG}bt0rTHKp_aowO#1A3LKjZ#`VWCAWiCf`I zmh<{gS;(T=A$?Uu6+pV;5>6jb{#J6`4_s`lT*!x-Xo{xjO?i|5>wLi z^5vut;;o)t<_s!)8Njbfnc&Isj!NP7EG;c9&7Md#^*iiwQ1V`ADdZr+SPT}E@9T8+8RMx){OW>RHesyKhP=z!fJ zsL6Ax*m3N)j6m}2_Qxk@&ObUnORp{^{VY5`YXZ6z2Mn(_i&J)Ks80`9RT=xql8olg z$~t19gqZ;Kg9EP$_)FIr*(==tAb6Rq5B$!hpOA~O(0>G~ZS)J7_8oAN1LMcjAj%iY zX<=qQChpMiB<>QW%yaLAY9rc&TSPW&7cDHgdyOq5wMo=@E<0ls?Kcl|Gv1HkaMIxl zyw9!Dh#bFAlaBd%9i(b{dwaXTeywe9ztvh`75wP9#wq>OX1vvp1CW0JdDq*M6_tJX zC2OFH*eFf$cHz{iJ$2Jv%DY3CMp}^QPy?7iat~?so?3`4;ha9SmzL_n$-EyA)P$+O zeb0(y#ABP_kjG}+Si`9oAw7p8d){dD3~wWvbexy{0w3)k4~8f`y%KYS@qCdgiM3`h z*lUh$~*eQ)E`-=AuqF8EWl4l-Gy!NUDpyCedUv|A`~bbyF>XNB&$RY0d-2QLe% z4z!2ykH?o|Go~^yZ-O>$!CC{Is%`nk6=Q%XXd7w-J%%p?q@CR{2cXX%XGF@qR&&+~ zp*A0D>oEf~NoGA_E^C%-+|i{M>N| z!61pme-vmvALk{6z&*5T_DjUzmWvkH9qP@d8(!sZ`=z(wzAHoRJT$haSvw_nxDU?% zWq4W7yDEyXtGFwcUefW3n{~cW_k{6kpvCx0al^WMm!sz^m?G!>4~xe%nTQ_i_CqRt zQQolkSyt5Edp>UW5<_E$=qv$$J}o`H7HTXI&KDFEAPyZDkaP5g^Iy#01}PgL@9UT< ziZTqszo?!7L-RvIl{c-~*W}%)Ka&GQHpYO{-fTGZNy_k;&tJ*f!7!%lXIKgQHQQN^ zHH&-q04qgmp`*c{DMbby8qOyRWe>+gt3EDY~CqzDH4`0?_f(9oe?=A1H0EPV5Z^73T>=sW>%OuX<6`$u$V zHc1;x=yt3&Mo8tEn{^p}pgO|L-v|%@gH#}G)hEnzF}vTy4a5%_Kp^D^@;gqLMN>x$!_= zA92&b&j!(7+eLa|yx(w;bwH=#+A2L`PvjQ_Ue7vs6H)Y($-<4Onw)Q>vXoTHZk=y& z_gf0=YZ^MvwI@s7!yJP#vc-&2WEX5EHf2QVL*%Njc<|luBsd~0;*#%GKW-5fHZ%u? znmzB%kVjKzdli8h34ESk+yDM|-v_X*#jIQ!&1xVvPLJiSL{vIDOx}b~D^FC4v2++xHzV}6!^F&aPbV`a;+Wp6M z-)gmY?sCLE?zMBMX=o4~gk`~F+VP|UD*HKq-sbx3tI4Jx#-IuErK<~rxZX=e15@bb z%I-Y8?!{$e4xe9~79RvzM%@-iCl*k$QO}4c88!qakHfryBOa0yb_i1n3&YWzB8pvo z;n}nL^jBYrK9ZLcElbVH7zm;y4&Fn7M@llLvL8=+B;)oyTZ*|Hg%d2p3!lbxoLVsTb?AEHngebseiRGI z@tg1=QPdbNU7GY8IM8Yc(b11R%h#LBBeou|U=M@oTKSfRua?foBFB}*IwqzWRIP+R!K(Chs{W(8%gs2UU^0g^KH zumYezbNT%xi5*YdBDgURz=s`K75;*yiWv6yt;Nz7D>s@8-Qx_eBgFWUlC`|2`Q+s* z9qO8XLl1g>X-I$Nr7-ieFE^H!n(fh8pN4u;Fae2J`G%19Mh<8N05q;@q3{Hp2k504 zZQOV%$2C7aN2f5jcWs{V*$aj``V|!kHGDOhD%9T=H>Zej;C#p4;C#)9k;&1^0YMjw zj!g{}6-1zg#nBrnnU=vQLdL{|dcP90K$SUAQP0JP;_9B2AYRT) z3PIdJas!>q%bC~{h}*kekN)?QNd{==?k(sxt-CBq!Dyu|F4S|~^#~luev3jAj*3eE z=_{ZkI^;x=rVN?i@VU?M6aM$Y5=beE$JV!tOA3+}#Fl9Xd zZ(xVu4lH?8|K>PcVsVT_m3X`r$eqeimdK&{Tj)0}QBeoB?TvXZ$cKW<7c61yfO)k$ zRBZ&sHi#b<*B|Z{4|UwdNkTXc+DuJ}q?oX4$$%=(d~v)f zT*K{N$vJUB`hAL*I_1mvN4~}G#tsoJ;g2E`ZZEF!3*4GzNmSqBzcw(aHOEHeDGGza zy7%s-!PaLq8jD-UHBuKpSBWQgodd0f?9Sh}%^D&t#LZ1{ts5kdJ4kY6)rjBs!4@0X?437ZS3=wXkS%eP5pj|d@$f}cPJD56d79|z4B3Q$ngBGr3D*G z(N4rUmqRY@@yzKOwMh0X35!){P{oQ7k2MUyh%k*Dro};K1Qy3`TSgQxyo|0`2W)s@ zp^c=<=5Rq)awnp%@d)P@XsUKyzj-Uy3>*e}(ePP0B{L+*g9b>d83GEw zA*teoKq&@t?DOcX@bgwNj{c2BYlB?_lB-ZfqIde6wkKN#Z$?rj`P{8oobibQwQuNI;8C}T$MVMi|MQ$mK}F=-$OAqXA~q1gO`M@{t3#T@b?n}QxG zF8sqMOKr=>w3^_;qGb{D7+J0!w|mZz3<;Zzq`ON$>LTdWFV7Rm)KT(Ay<2>X$*qNRp$CM;#KJlDON@W7 zXjr%O0YIXo{tN; zL9@(haYCvtVc4DW#f%_B@dCwK;2Cl((V0;)<&`B0gg!5w=9I0#T;gV#Dj+N?;%_Z= zEHhXgA>?}G4s@L3XOxs;{jo4eU3$(rR(?+qfJpemd_JFi?#*1+WE+O@sgvH@+(~9i z6L#$+1WxU8#>g>gva|>9PYHr^UFNyaX1V7xc~A>(`Xi91={18p+9iw*4P|Sl%L}%( zJanC3@T%xv+Ks2Zrnmo^vCg=E|I*%DGd(Wb?GEuC+rlFLl@%lt1t;0;ycQO`vi_$wpG3V=SEpgQ2e zFJ+tsi&>UHPPl@+R;NUE9M=$JzvizWA0OvG?dfsvIoGc#kz6OH;N(miMkTmw>x5w~ z!XxE*WOPCTkMPSh1tx7(W1%gbuH^=Xh83vlc37+)t>krTdFA)2sw%RPiOER}FCzEh zO($oc%jk2je&i7&NahH4K0Ew3?r0Yq_u{N7C4|H7{Y}=Ar#%tV;1oXDwvvZq4eVA@4eX>Go;fR<}dgjSDW`LUb zp^8UhBQDx*)(eCtr0Lh$xeS+_PI6qd$x@GJ3E=;Ao0?BobjmGK>c>ZkM4}KJQttK! z=W+(U_G?W*9S zk2~NM;4&}c(aSt{;pgg?g7@DB22tR&KCT$IFs>(zH_WDvT;b{h(@etGK|N_Ltd^u!ByX>VKrJIZUBHG%_B)a) z{xW;-Dj<>D$tW#c-8nQ1+d4Vfb?$d?zK1%`Vvy~rD1f!!wsCEXI%PNw5h09llzyGS ze?v}8MlZM+-(M))tuysNXV0!Rw7VM^Cg{vL<#%QeF(qd;lLXeUI!}{9{#ekwa_mTJ z{vgkbtoNOH`>geG8OFLbG#~uuYyJdYD}IN?2ZBB{H67O6CYvq2v~WYe8IZTx*(<74 zl~5;bQ1LZ%`9xs9`%t-obX_#46bRmcv+faHh#Vcx&9qCR!iReZ2)`Eq_SsAhIt&b+c06-m10bwwIAdOwkBAk7BPi}S7x(VSBojINZe zzuTkocY zpJ+Hy*i}2oS-X1A*7)j7UH@eXF0W}ml3#_(QFlOoS4Q`surI`o`nZ1qdgGs+pdWrO zxc8YEqYOvi_L)hlWsVj7rk~BuFq9_j3*JeK*hhOP@4p$hVSDS`CcKt@^BMj7_5)XU zXqRnrsCcQ{bV6!sykIR43_d;(zm-h(7eAA9yf4)3q1@S{^w0;s7|o*r%rUpYvgE%< z@;`+M3vUR02H6(4)_S~Ui}+a++!IHy>`dK4f75bR$;7-D*;{jUo9<-lDj=qIhqC@Y zMb-5+wp??JJX-dxJfy#LJg&pE%)X;9*i@}I>A2!oLP#W|sz-#^uue~)kRvdR9h5Ra zD*yg`nEF8IBSRU^`#N8%Qq5ZN04Zy34wxt8UNf|xUNSS@Kvie_ADhcJ|f64+DAR?BBa^#z4&~%p$FQnZ(Ey z(e9(t@%?SeBX2(V9lXo`r00Ag-))z~@v=JccgdRPrG6{#S5`i}RWM=7i}-Rc z=_{AEeq3UHl)*lm$E%ViJ&`7)`V)qq*_`RkcM)S%B+j)Iu@9hI?gvvB35z8U{KB5C z*mst(O=PZ?;%$y=9Zv{0!TniT@YsM5ny=S7XCh7p&-MV(kn6HIs*UX@DJjo^#<*V^ z^^f6czx7YfsxG^+KjvJ5l>>N*JLDRsASy&fq4n>)LaU0>0wfYG8*z`l$NX|*=Ks*o5T8Lhz+zTzKDW<7K|Ixvn;MNf#H zKSw7rnTbiztNVNx8NGE@J$*$p)1 zYfWyt#pwR`AD31n5EybnKY$kA;LP{vLI46BN2;h?<;RhB0g#X}3OIl>%Ed`>#uI3M zYreFDpkpAofK-KBa5N);2z#zs0U&fC==^LUbD#(YAP4W?TLw(80Z3uguQ33ffBZ5W z0@$YWF+qw_0bT}|C)$9UGEhBi`Ai3}mI4?b+PqtW^G9t)*QP1Ce@JuhJ^0sDrVEUwcSuWhKEaGIW#W zDx;he)F}rc(Hr`bO$H-Nv$+2S0E$wXKyCLgLWZbohlb>yH&Z)a``t}K;JPf&N=*oEau+quVlUR z77D^S*BJl%oA+9+#Tb{(=pR1U&Pm*tDd&Hx`9k!=l~IE8&js-_BDIAZ0M1@0qp0b2!V(*kisPeHeX$ zAn)fVjAs0|Qg7%>-+pGndq(G-<$JCptey42GYJDZo z9-~`AG2$E`os-O5lsn?z$gY|wSG+b-88o#$%tai zdWHGZUfpUGYNI=O&w5WrI^J4eTwsDenL&~^{E60kc|rQ8S~9||DbSm5%PdCeM|DSi zZVPOPzs{A_XBSBOJnigRPpX(M&U^J!>`MMh-^%qBjupN=Tk`ySh=*mz=08Pl4|o`` zty(>I5vT?tkJc!j{WQ%IeA%%vzUiSiv@yz}9ae zB`>|1z4nskrSBbUv1YNyOsNCp83q|b860Ag7O&q_yqSMPacBR|phfa)2lI$p-8O{93gX>lexA)T@sFN;dKRnJ0FeY0Q zsm$7sd^XRxBl=U6qe9lORocbQ^G#+}rgfEmm06YEW~W^3R%L!gr%wCbGYqvxzk#rw zu%2u35OMyR`498CO7co(BUPotT8THF^L6RBDAy$iiXTvh2wnYG-t z+{xU97Nkvxjd=5`=65bP>sM?l?rt}C_{7>M-YvJjV`JZ-Ta#aNWum>Ny^^l7)i}+# zs$jyk5Bspd3NmJhXk+i9I?5p5Ak7pkOG@js}mxNNv0 zA2s?jDp@Mc=M3d-t4Dk|$lQ>0wH~G&p1Qu=%rGeW-aX$ucTCTf#kKWO^!}5Cr?;X8 zC9>2caydTEed=5>2snIbzZ5oln4jB_+q?B@rfyqq+kHEJw(yH=p=iO~>yJkIK4~qQ zt$tIdD9n)ZT&RvT(K5lfHmwOr-j__Zs+q*Lln1{#a@t{0`={n#xU9CUB0n!Pf7kJg zJg((a%b-c0Z-Ha%f)+}E;7kZ3d;==cS0JuLPca%8Tj<$w*kiu#=juu`F8}I(Y-uDG zwQ4YFBuCXmt@hOLxqbSRQp0z&mOYd@&h?rP43&1DJ?rOZsR?DF{7{-e^NVcgbIGRUM{}c8YBEVrNfZQ za4uJ=fH^0K*IPzasZ%=oMQX}J%{P2TY0a*`U4K0Y8mxASt;c`xNobMe&LI8l*^p9A zeD@l8vu4G*g^kFh7-_w$i`9efuTKXQGph=&e%<=gFffxMpSM#;*rM;HUwYA89(T*? z8khC2&T0?EdX=X(!^29jw3`F%bK|D7p z?vSs>Mr_VbZrPhyOWs{*aypI6=TKvM`mC05h9!#$H6=0|vdR(fJJ9`dHoft6)%#ZG z;RmA+Hh#@tE3l=`e3SJni`s|k$8;mrf@R~@;Xj=j$*iv;GwspMTCJtsD(^a6DnAc> zRaUnsvpBFgwUFB$oojNMJofpv%@N-5PxjCFjBUr!h1%z?nLCg>M&l30UCwTvH5{qe zK7F%soO$MLUt{e3aI2qal<0y~fVz3I_4_#2sH(;7QJRCki{ zKK>N&(+*wPI3im(;-*rX4oVEKULqai3F30)lJwBb*~`(*HP1P-y=U8I@QAY zEq-=tXBOpw3ohFKHmi3;5*s~?Pd!Yg(IQTMnLHRr6}MTSpr)w!Q{De!rLMK`nQb$AnXbNprZlc zgaCeS06?G=0Q^P*fKoO9u=u`k{Gbb-Yq_bdVG%O@=i)Bb`E$fPS>(2B(w5K5&_{LE z)m&%BXg3L7TelR>ft=e3yzz{$Qw@bm6Xil8`E%?I}*W39GgGpI(hhiK5%xP{nGy4-}wCz8}w!9X4{#f zF#q|{$-*2#B2l_XoeDO<=70o&qi(T-NRDs)g|A#wnJREN!zOhhXeT|IzN{Ccw+&C8DkTtj27*UK6P8c zG^_;)l5#hGN$vE=jDh#L6r54V?0XafwX)NP%8~BAud6qma1YMh3nU^?yTOVFzKRFe z|2~;4Eg=FgwD`M3pk0iQtk8>;3)#?-g~i?g?(3fV!|+7AgVF?Mfd>d~x+|BOFb~7C z>9mUUDADYvt=y;WY_9YqDq=Zw+3k?yQuWhPh6{X?=j6xOt$2)25_*AszoBpP^z<|> z)1?NArtNLTge74CHC(V!PI8cyZrmmVmA*bXGdB3Kpa{< zea$^@GfnumDg9MmCuw|pTjKZO=~A~N>LO62e4F+Dyxhl*s`M~v%Dy@|_9R;^A>^zl z629W+jKnH$ztcsNECwv{kcNlvPS4JsOZPuiyMK4W)ym3hf$%mtf^t}$pi*n!9_Kk( zyL7Tvs8>0rkqP!T<&4u?a@|~v#qG{VN?YNg(+y(1hXt$bx60`a%14*FCnqMbO-+G^ zbHNLpVQWKN9jCvmj)#J~qT7RaeB5igb6kF)+?s5E)i4 z6zf6l#}h4Gv2_t!p2yRZU2&FGhvDuy_=K&kE!0>%O6en|iZhJFJCPmJU<}E-L4%N> z!qJ|`uN{-_AOE90&hOdWTOCy2Q5cd`+5d8Vhj6~8o?LkPx==IIWol-oZ)k|x$%O70 zrnV`xYf|Rlns_TqVhOxsYHA8M*^Li;d@|_x(W+}NBclAfx@XG_;oZ1Lr@S+4RN4%) z)C8r;2H4SjM1JpIp+X{2Qlr5Th1&z8<+rl%zRli*bC#~%SYZ@?4aJ=$Vc)wo)ADz_ zeTV-UKYfB2=O41iP}Gm#Umit7w}}t-f^4~j>9{Kybx}vS5qZ{v;y4VuK)Hc?KB^iI zYw-n0>Uu1Ckoh>RZ{Vg~5LOIf_Zhy&Q))UG^3JN(?xd<^N|(v%?&X2gpqp#af|Bgdpx)W zqDA|TkiV7olNTSlcUkbgmEFf5B!7-uIewU!V1BAgcT6GICMmOE$v)%cE``n%@O`>&$ScO0lIAyin5T9&BfP-2q!8W-7X6God(zKzdArz z1}RH8l8o56Wo>W&;i#JsAyTd{{|rP1w6=Oypz7cE4DUksh44cQC(4(^J~RO%0YRR! zZ;nquijzv=unn!rj;1@Nap-$=p#~6sk5>`uOd@`ps}nZ6@tYxQ`N7zR2CV_JN2F?N zJ7niBnClqSY1qK3jM~|c;h&E9LDW;!K{Ec^j_}PrTV-Ws0(GY-CgeRV&%++ELP0*P=bhVhQ&SGG3(X zY;H%UQW0YUS`A#ZFnp1xd~>p{)TZXAeB`pcpP%1u?$P$#nO+0~ZE`jmLuV~cB=w+) zptY-x!k@cFED%0)pU4w_nRM>F^XDxMoaxwx#dEgTWfv$_t-3)?^wEOoZSms8eM#zTW2l{&MY9=+2~|de+z**YI!-->wrO{Pw~{`xF>@eI@MM z4k!SF2$HsUg})-DZm4}3dhI3zX1Vj4;?!=}nSUNNmS-7`7vqi>pD9=*7Pnd!g!nE^ zACHr~eF4Mo0o@`WmlhX+x{f{a$bESf0|y63cj(`r9||>mzqQY}mL#2-uiTp!LjERM zq$?)$co6nJB(R{CSt6HM@KwpE^W~7Ex!{|(pxvh4CgB!_Ah`R`gAyVX_weg+k0p?x z$D>(YF*Y^-2#UemvozE?(7aTA#6tn#zU6uHbNoe>RUN)&7=_Z{Mo*6At7o23T5u&YKHDMG>h(lcEk6#Lm~KgO3ls9rd8v+ z*VXs0tA`%`9w!Kg(f$1w8))5J39h{GW3}O=dDeHbof7dk9D|~Oxn9tl6Ut_tx|Q5`)ih! z7fz`09~X`}KnK2PIy^k2p?c^q<)>yxA+;fbldS~ev_9m1qC8fc|HN+Fpx%-hV=W48!LMT%UcRw>W(EsI?l$Qz<_m zLWJ6oytoolaMTdur-$2(!f6^p5^o)C*4EXb{tRSX?LO90KhOfRt>AUgV3Bs~HSKn)xvvQXPusFSR}L&`fTqp(N` zy$>+_`8<)(oD*wg&hTq^;GaK#79SO!af)RO)LCcV>5Co%7?Poe0#GS(6e+sBt?hJn zbubHcdV08NcWAP>78zi&$kO1j-BbBcq|N&myZw+w z(6EJPKMF7I&US`p!6f0kYj2g&6#u|n)Xf@rEldIBFgdyv^!LYbBy-me;Z6EzfAl6G z#7>+Y07L%y*?s$Uzy=tv)z4-h4QqHBm9W5$6TS;!9M8k{yMBX7RBm_e@Fk}e9*ir; zZ+Xt7^T5C~jC|$_Gn@wWRUXgQT}po4@wk`e-QH#Ldqf+t#C@3uhl9EDjY$hH{|>NJ%L=;RtmzALb03oN>&ZXC7=$0&3OYNCWaQo0zp>e1x%wGUX(V*pNf6%C z5O!%w=X@@i<})Me51O6NXpx2Ic=_PFxk=B%JW1gA?43H56tbHA-p*@@pI=Cj&R2VR zRiv{C!Co`?S#uNBChQWy1&Xhp6vjq^$~z{8+mcwDls?xj#n7OR`?8eshlDo|PkHY3 zjsa=U07_jvRBMSaK0bb=3RYyfPOKnf!KAZzC~*rOnTi<}(dZfoR^n12obMn1lJ7oY z0|;a^k}#Dq>7F!Mp!AHe1!fwp!sGYCrp`nNkSJW>uC8T83PnP@$r7lI(JNEU7i22g zbf)*9GZ0}e2sX~48LZ6P0ygL|g=0aN0GUz3Fx_?n`z|t+wVNdtVi6mUk;vbZvSfHesU zp7>t9cDXoc>|dEG&_b+(&tmc$3o#9Y6BxIht2}E!p-oyIGz2MzFbI8ZSp^okc+GJz z8;^o$t8eZ-Uq-+mlF`HwRzLARmLLH_{KyedY*~74hCwV&5)lqw1qOnlPP&N%C)T(@ zkD4WgA;rOZmGX4X`_Nw=fD}71t)^E78j6hSJ|R1b}qirOPTK z!BoCwh3+`!21fPkUa3oxG*+BK6TSu~@)Hw~N`eEYX29$8-kX(>|5L19g7*@mzTJI< za=o`(7z3eAmVqX~bS~)>0d@quSXaooUOETWSu*}Yo5{qV9B>U3fT>xn54ZXFe6|(W z2i*qG4?#H}B;QOt74`-cdjDs&kC;H(sRsA(dqPNd62!{Jt^AhDs06O73QDKGH2l+! z1@hbho!y_6ijy?Hn2qk9n$$IAI1Y^@p#aXGQnszh5aY^}K^qLWDaZ)#W)+_c4m__W zQeZf6^#Bx5pk*lXE}3Nx6)$X9$DLE+O1z0yE_v_`dPyE^0{Qt%J>YUvw9qb@4YW|; z;Do3zg3=1~L zOkdf9#@hV(DG%rPaZmi#B8wapyZ#>}g@IU=uTYHoSAU8OvJ{+ay{V@%`wJ2h|K5bG*@matmGJ{|~-n&MRj&Sz-*lm|-(TC!;=G zGuVd^<9oFM`1w5tj!ixY3xbj|L6=_KcrJfjyyI2parGdytE^< zPbH0;n+u)3j6OrrCjL+VY+lJ6EH$R zbR?|ab3qFpk5O_d$JTTHNCGokriKHAyHq3CDa))K+Aj|F}7l8RjC=D1V$sX%6!5?SlTC~Pa zk$mbrkGWBN>oQKvlw@5Uc#hT-gx(wFdOk!pcj73&h9`TRIXJvl?neha{{k}S+Hidg zIIUQ`en}`e1oPj&N~D0K^6n$2OW0AVXd}1%Fn1~VB0qqV_+L=4hZdTanl0|teDCcs1Q|0?D}@8&C^DhDK%W+Q&T4284DK+~~=JS!ppQ$T7FwFn2~cQf)Ag1ASB6 z;eW)Pyj6+-@gYwBkIi+t0^eMSKbDecYr><_A3XRab@ScVK{*fZ~Gg%6;hBpg8YxHtHvZoL^J-ymb7 zv|BULAD%|1vS{P%k}A&>Pm>sq+Rxk2fb5(=8!DuUpKL zi!9B&=1s3YlN*L9yhiuFi(NS`I2vgLFx`)Z+?*=FX!1b}B*Tu3Rv&A$Wjj#~RiiY# z52k#`{CkUa)K*JOj#s`wdv!JqdrlsMg^2E035i>;KHBZL^CW~Pye1g=Z>Pvhbn1B= zSByy3`O9ncVAcuujg@O4p%xr|XH%K#?7Q=X2!~O7~IBJqM(&t_NwJxz*};cI!%iRi$NAsr6ZVl%j2Ix*IJ@R!`N^) z8viY5wx4m2S`uAR*8S1obdzi{&?#|gq6gZ1Bl+L22S8>h6?)|pKFs9L%phFL(mFq~VEV8OC z=9tx8UJOi+Vjlg13)Y-!j`e8Tn~IFZIo7&qZu0|!3Yx?9lt)3ovEF3;^~k&QndzO9 zRe;C17#LpnZ64W4JmVKBhd>(J`TlX(BdnjifNh!bNmXGd3!6l>0PF$ zWjiXIOf5v}Bkz;zQ^V(!)A=)Qq_&85DrfuS=ZMbyqMzjH5iGTvfKv_B#D z5sTN~AQnx!^Cs9Iatb8UyVaQa2ECn3EOKUhNa7aGH8E}UeP|Bd7y;*l@VP4c(=$7} zQ*D}&7fURb<%tIiM<(4l$O=v_Zs~=Yr1&HJmfNVWhwZB%V6&n2`Pvc`MlUlEq+Ur9703{!FV)jE=vAAq(2@L zWq~a@g_cw0Y)Sm%;1aQ3k0DQ;MR)GWdUcZwUhDa5Fi@shAa6+AX;8cW}-j*yeU4iP6hc=VdT?kwZAAT;mnj~#64Pj z3U9tB8Ye4CkAsYm-TQMxtFb{QFQW?gjHcV)NyrI5HlMtj>Et~NeAj8Do{wJdpeUYk zizgouEn~!%#jLf$@KF2v#h|^sKBr~I3fFr5ENV{@uNE*mqRS{Go@M71hr4SjxJ+dj z9qab3Q!2TajLqo?&k|Ep7o|~)m%Ylc3lKz!XG<$It;Mg zAK4BlPS>rFrOvUJ6?ke*R%W32BWo!iMZO9;P(2sieOT=aN|OwZ`?r)I&i-JPymzSG z?Z!N&lp5>smR4KTZW2QqwJ5RJX*46a5=n)i8>Ha#+n!aDvDf=C`J`cHO3jV0MwK*V z({wbNmR=VQzpr6UE#5+D-v;FCnBD~PV?Mo*D54(OnpkSi@zdeZz3Nqc=dIDJeco4=zGkkD#M|9Qg;-ZAm00WlwEhyF$eWm1Ou4i;`-W>GIcKU{99Dp(+y~ z5-I2V%AGR@X#9i85J+NdH@BAQjt0q{di<|q^T=nPL6E%2l;&VMK`zdK;NlV?_9Vtt zU4{aE?CnESe{Yc*Z1e5t<%6zu;m;Zfw}v#^GS};EA#diAXtkxIq;xvD1kyRA@QR;u zNbCH$Gm?aP^GEq^?+{RLosj_FlI1Yb_@gILx8O$(dhFwLmEKdDPED4-B~{dBEcn6s z6T|WKWI&u@SMNq%v$;M(PHTOr3cGAC*tC`!k`-3<6vA3c^A&;O0APZ=lz%dAVUyz8 zA2LXhizU$p@9_QcDgEIMJrpuzc4{hrYva@R2xibl+TUE}`;rO)SQgK1U!e0tuh6g84G?Fm{iYkq)O%zo6E&}a{5k=ZJzZi*#I z>^=3Ms%oMa7e(IP8-Y=pu+esPOq67D2yRJBxdorz3@?k7GWhnKQu85X{-koL#;dnp zWh#;>(_D$zBH=!{Az`3w6*0Aj`D%j5s4Zq&(3xtZD6`MA-Qq&R?o+d{gB{L}mA?xR zvP(s+H~-xGe#8eTFY+lo=#1%oK8ey0Rgr%a3zgI_jL!$o!&Nzw(Z9T0G{){!QY27z zu}Et7cgeaV+RWQp&fWpGlVl_tNC`BKBR*Sddz$9B(=^wrSEw_eRrkpzMpIg;4ZN-sol8(blGy86mjS$*(mx1snQxB9B zhO0zrY0)lyb0O?)L3DH5T(TU#J;pS^YosCCP&8fT$Zx>!uA1W)n1Wt#o7Xqu`;;of z(VJ}}Z!m9+X&?CBZ<&vA2v={kk4^RQUBYQ?ae9+e*WG*)sjERY69hpKw}p|3krlt7 zRodpgsXR5z?j{$6%#{#N>pkMkbG!wXA6~Ya1M`j1jP$Gi?!ShgjnRn9kNAxi7>W~V|0juLNTU_CFEXdC-bl6P}nLtsv` z(u_19F)3qyT&%|FE`8V9wb`|Vm%thl2&vv)FS0MX{TD)Hkr6jHt=aHHXEL1r=EhC^ zmIchq{@^Rga>OK>O4ta}=5A=V5x_2#kV;Gnk0u$#Qqu)vTjnrzo3AogoGhh>A1#G$ zPkq9@69J2T|1=T#^PM1h?H3O^%T(uBm6PE1_L!D`u=lO>Z<-Qztt1K~C>CC1M=fy? zmDFPd-$fZ;Tsz)ij*^YOEj`*Oe`B$A+oA+x$E$EbhX->zuZ7+sPtD#)SA-};Hpg@; zYq6sJiRZ9ZYwr35DUn;CcFRK<^N|GVDO%9x5&Xqo zi0u4*@6sz3b^8s?gm%c=`h6Vn8!Nz- z`0fV#i(}RArK&J9bdv$eOeVH0gqLDN28!ZdWq!bc{HD9!;4|~~TJ?C?Zlg|2=TIT< z?Md2W6G(;;Vp*Ev<&XzCCCpipFV&XKP8L?6!`@6w64=-lxV{cJ&=L@ zS9shjmZs@%lY^D`)z#N}#PIX;^n_CQ-HOwM6U{&JN>aVLwB>I72xohp)xCYct82Vm zJk7S4fDXMhpNjl-|Nq=@^bO8Sg=WJZ!8zOKa4ezS5nq2530Pm)>os3lYTLez4(C2< zPMHD7&ifx@ViDzkG&X3BITv3k{`U&oq?A!lOzlK=@pTe04*kBtPyZIsmhCAT zEVnEDyq;#fFT17%zBaJdK8su#^$1KUV*^X{KQ{z$wmNUFB0?GFTU{4x9O7I;fPs*%EX}OeKceNdyzrn4l&dD7)vrkPQ(?6jXUYqb~{#ybhn1K`4cj+ zS65!6=1)((;GdooVky5r^ZbHPh3?f}-ao6^q$w`sTRt&!VGOUEM~nq!2tora1<^Yh z$ksbk4s4lQJZsT9=2E`qBPfU4ZHO&0w_u`@ChFpOjE3Rj8t3tKc|ga2H1DWBIu*M- z^(q6?$b`J3`zdOtD9u67E|j{yBhpJ)tzEx|SIG(aLrr`petDews?3jl{kHJ+_uggs zT)ghZGdGu7a&~JNGhPtQ(2qu z3(=i#pA8J?gj_u`=~cOU;zs_pMw{JYO9Zy?R|Nh zR+HbHz3oJ)`T(#|PkMJC7_)jn1POz3O{Z7TzyN)Ce^h%AQ>`@aWUVL=%GE*}yv+x1 zHuG&MN|O^$D`5&W^A1{6WL63G!=~z%|55kLVe3(CAATcEq9KpSE7O;WoeQI=c^^fu zcKZ(IZUp&e?r@)Dw-O^0eWeSnk%o_@bW#)hoAP77HeCIRK(Z3}mXo8zbAD%oBe^2CXy=sIb-BFP znWMgI*hE6hlZ4IwRblgF@@`XUPSc>Igu06JE0A&(2+jgKj}2Bi8My98f12}`9B3E) zHRU>*Z+=tlEA5{wo{0D?cRc0*Rh=84kQ(~p%Ft^HG-aX%+L|RUaMzCy6L}N)$`F+t zPIYYjqiR151^UR}pI)&TRwY7h$;9{pPR0uTCg!HH=Ddkf`Av(P%$%=HWQnn#bVCa+ zZZ1(GzTt9RO)bQj(!X99f7y;kvi6yU+UO2JDX?G@I0*BO}>KAd`x_y0Cxu&!@en0=94AY)ze z-1&gj!JAS^Bc?NqLw5?k%!rZDm@J5E2_x>Zid#L@ycn(L(MTmDN~%CcRv_T;{9fau zrFA)#$$_~b`^$+r^6vA;`L1^X?6s#hpLM3mv2m>Kn;dR>CK@#=q#NU>9bBJRRVUwH ztxN<{&=_&%YM4)Z>(wnF$&5u=>^6t4|WT8TFr7kPDXeB(}oFvUa z-{QNoDp6oGZPEkM*Q0KY0E5ev6?BeWgbleZg&&O{iFMXC(lFx}!$%bMmjVGdH zH&Wx0afP#;Oful8SiLa(@G(!VYf%#<2Jxa?YAcJ@HE@00HT857G6+4m5QRwpx@D(t z&Px(}zi-cK@$3dTdxX>!-=Q3z)A`;R&pRFOE{hzM7;s389#VU3Te_m?$Js7l{!`)A zze-AO`Ciezj!J2gEn~2b*XN`C@Y!jUd#OesjU&a=%2bU&Is2Pfe`Z^K-C?vqFHhCT z9BW#EnC-SIMZPR*p|w(g1yg@9tffR0tVL(`6v6pSZC`U|rj;ZGh0ttWFw6LI+}jFu zYo9jZmhEZ~Z5Cynb3*pii(xy&4hHVL5|1%}z7j#CH`9{ZrfhL3Y_ZCVXm93Iv~wii{`yb8Ols`c@u9pUT3jB0mO2Ld-n~%CZ4l} z-05!rnfM5!_$$%%Er9ketk@hl)h;xGq9SpHp)hpm!Q)2JnDs5jPnu=!M62T3p50He zr%u-66lg5>yr`dZmZ_gPlCrFkZ;qX_g~TF!46YQxe0NrN>W3EncfK)Zex_2}9UK!^ zx*bI`BPh+0YRH9X^pdMx`g7;q@O+;bsb|HF8l_ytH6Hq%2`N=-k5NSBO;vtXYeGkN zi$tvfa{!^2(nfUu;C@}MGIWpVyp;`rqVV3QT{JaRc9U`G%+>!?k=<0U3v}&5N&Gyu z+F@UwhLvmPMn%H3!+*rSXwXMYBJB7HGlpA98;znfA|IU`E6I?v>JAzSamb@RI}`?gjrRX`uD zk0(v7q3NNwLeLIU=sx=P=gm5!$LHxig7d*O;S|ctf*K9uu_^QqUzB`%Zbl<(xWV3W zcy+gfy(8n+t_RBlYNwp2pE=N5u_;P1QHspk*{AY6xZzj`(prtjn|g>*s$z0W$Q?d* z&io>PCTvyFx%?{aXw)|kL*ciH70BHMSlL#ueJiEwD!sukHbmu!J8Zl)+Q*e*?j2;# z9q|gDgiUxh7qw<^TuUSx{t@X?{?9b7_h!e=%@@3I0al{Rc{Mv9y_s&_UDF9-g{%TZ z=>FZ~CJLzs#~TU#-J!C?gP!En!@eW5LKv4(fd*B-Vn^x3-rfqR#HmO`rnhCh=J)15 zMNG4ro<~62o*;IQGBINIeq7ckMpj_tNbfL{V(=d_!_ui{F2-2E`6j^C^6e?j$ksfD zlEaTygFluLr(0&a=WU%ClfLH{eW%<`Y5a^khA(||okaQ{b0G+_bX8pt)4a5H!po%Yv7}m&f(T|R> zC;@6#fX~1Cky#VGF)G-(<#vS4U54m1k5__-O&yvF~TWEw;@U7^T@iOn-KTP09BDitd&iCOBkEa z;rRhh*BrZBfj~f&Fd5@~ci=TtiLw+e#Mmc4+#hj3tjkC{DZRrANXx@q$@N8fr(1ac zO@pfONi4+p4WeaK1(3!I8RAKzDNyvED}s9-yYgXcEU#pN-U#h{?|>-#Y-0wYt=ztwHG`7-e0Yn}N(H@ScBlby8FV$1O882>noPSGBL+ z_hpF_+{gjMD@Nl9w6NxJ?Zt?uB^0H!O8%1kSe(UZakyo6G2xoajv+>T3uho8*iIGj zh9}A{{EaKLh+EyONHpXafA*m~fH#6v&Jt~~6EC*GpJ4MOO6f(>bDxP1Jw0lFsxe?E zcC+Zm(~%GC7ANG@{$v>gis=(|M-^PU(@J=Fas|3#@u9a1)`F$?V3Z(nD&3*8q|e6> z#Q6TL9S^jBS4-g?HuIyTk!b8#tloe5wyrgK#59&vIo2}e=yK=PSw{z48u_9H_xB1wAs4`gMDg(Lb-eGt9i zz50eqZsHarI3CnS1t9R&k=RtSW#VWrxiGK?T+UevxYd?bLje3ifk+oF z*3bC*SGdAj_%S)$kswW!v=}U6dYwS!8Ib8O$tmP?al$Qp#zdXK7F&<1*z`3;U z)o-AFsPoj#-p&VK#$l<-TMOM)sVn?I{bZB~xwD||Xnm?y*o4fX;$rUp|#X89I zd+O_3rGOkLctk1YK>2trNK(H$xm<@;@z3a-#|$ZdwQk zHv4%C4p(RkL;LRjBtqq>ENmW$s0yT%8#(9i@FfPP)I^X6Z5ede(Ft#!{|~|nFY?oV z)6KGOz?29(rG8(!85o)cq&m9tRy#C)7De`tksMWMq zLmJjy4|_%ZKgoY&L%*FlPRHf{>6N1s93%YlPqEF01L~~e!ZGNbRxqx1-(iM+vz0nK zTPGQYtf`YbDUNL*F5L)pBtJ5!W}s6g>8{Q&;Adp@7E{PUgrm`YIGEp5v*fMqQp4vG z6*PtBh@eoKi~n&94_GCSaXAbkM-*adO8=v+Layk#4p7}lW!uD8hS^eRjb5rxzk1+~ zejJ^}ah&{OC!AIj;hyw{QU80p!aLh|>j<9r)80)%l2BZ>FU*z6lEgNiZJ}cl{V@(7u+8|Gg{c_jh+jYxN&$aFJr5+;^eQW&a!;_ zk4J_>jBv91j79W_1rx#`m&FHC{4784I6BlfS!}J%hcN8W{hj(=*_J%tazyqc9*j){ zr1x+5#l+J8rNGl%C?8P6o2JA$j=ul$?_|sSUHkMKM3-;5fNz=HskPWEZj4K3^Qwye zIBx~EaEstz%)Sk79f>m8yU2&$Gc?itkBWXd!;R<>QRhY~y{5$}`k!>*y8?xgxwo3A z{JyEPCOW8ed6nBmZI*QwZnBn~kq0y%GHwU}ym(l<;mfhBkf-I?aj@bc=8I>m@O)r+9>CKy3VfwS8$klwbJw zJqyM@_MMqXlq{u^(u`fAEG;OEkS$vXkr}%}RFXv2(8^ENEHkJOSxZG2sjM+&-)5e3 z>;L@UJujbkeH!Q7XSvR`U*8KEBdi|Z%0pnh?<|nz;@6-4(EUf7`qZKWF!fS}G=OCQ^PP?VS7s$ELI$U>@bVk8R74avXKFod0}bnfJrm3tY0vZOI5yLN@)8 zORZ;R)J+YOe&J>V_XAW;kx~8Ee-U3M2tD&(-U>AA0s;bI9x2`+hR5}bx(q}L^l#i! z<7U+Is!v$_NT^%w?(>&kwbOry{!Q2U;v|z$O*%;6oqDktvEo-u)BLvpLv^;TdP(g# z%_)KEroEw|NxOx2fCNXO)qc;8g?gsiJBk@L$iZmObA6u(VI{}NvS$?G2I1mg3Ob6g zd=kt+;(-JB6;{u1QikS=8D-nf&(xn?pjI0~OiM+QUtg}25q2yrVeVk+^Li*?uApq| zo^@mb1WUZ(@GGy5Q?njkxl|Z2$g_Dt6@)9X|zeP`}5H zp$$CHG@h$mFrQYbQ^q2jU9kQ#SMB1Rr=AqDb}|-3Br?_|q2^>- z&bjkHtvKzZYMvm=lHdI%bBoNjI9x}*uHeLHj|@^cw^x!|QbdF(rnqsLFWQtD8-8(M zv*aksuLw|FV?ORcQQeCQtyJ^AvFa`d_YQ8zmoN@~T#t7uB^>&)y6ES2G%rRErpj1# zHa*%T`s`p_O!M=8mf$M451@u)cSG+ zcwrf96K>tZdhW$rf;K8{piXFR&6gv{7FRv05Q0A8ir_N*?bBi*10MO;7|Bs1?417P z2yrEQWR~f?SfzG^n;CeS7J=3{w3(>hyC5yaxHOQf?7{{MD`d{f)xj&b#z}AIuFp1T zMatCQVsy!tf8y7>u&Q2Ye=O|ZV4O7$N9yBy9>SrjS98nWgd!?1xbTRNq)62BpPKva zXG&WkCB@Cn>HZEE*%!k9>pQ>R^P{~TawS15%?i%Icklrm)?`CA%#wF_=oOjM+%v`t zp$k^@9FZ@f`?*i#aHd*Zn47TqdtKa{UZkA#I{DX&(b%t>AR4Vr_l43?le2HQpTn%5 z%ZV!nLgVhD+A2b4l|a_$`BxT`25=ypJrMXZ;3YGb^`)aw3ndSlT>0 z)PjEA6f#fxA!~o>?=0jM=xR^Ku;yeSKgURP`&EB|GT-h3M zyv=L4gcL)7lyz^z#At-FMVC|@8s6FYt&xmoMoB`*_@Y9k&y%lJW3bpAMwy>_zpn2- z?Z!X%HU+xZLHW5vbNXnYs}BqM0Bf8=?nT_U*iOmRo`#ev+fHGcp=upt2&$E*(7I35 zHl2)&Hj;Wd)y(Ip8|cRWb=}y>eibVGnXHnQ$>$Dly~vv@=A=`;_ZJV;BYC+8%=s14mFPn?yY-;Lj`Ur#%h(0Ao#jK#7B&lojxyAquS9 z+{N@-odZ}v*J0cCV&r_bsR&!R&SK0Dx_|Mf)NHXwbsft(krQRpfT)?lruTR3aQ}tc zK11u_L@3v~t&r2h3gZNd68T_X>rpqPf^g#3funOTs_oSc1Pw~sWn9jaDTNzH-^8Xg zO&g>B{<{HV)3Hw-hUnRjH!PZfR;ab=fj86%?4tbczl0zwGi(p@ z3{Tz;j60Hi1I}RZ>nmf6)VH=;yi(;|U^kc7ee#IAFPTldhPQUjKOtbABZjwR)WK?*H-C0Ut$+iX@`!`m50!LkyMpk$F!?>Tj#F7IND9TiM3=LY(5{9 zux$V3K7nnlbfp*-ryUYd&i4qm|4z@}!(w+wPJN3rdsz0OwHWa1iP2@f9|)XqBJZJN zth@Jw^m6T#bt|=drjC`dS`#Yb7Jj7Ya&2gA9o}Atc@u7{G~p^Do0wQ2<{6-!3z9C~ zpp&nz+_ot6x2tgb9?Dnv7#oAv4sJ}g`mOkWBIkF|JN}Q?leUK7yKvKB6Qtb2-$l7U zP8E;6r8=T7$hjN2)DgIF@Z9-;6_e5W?O>Gxwzj$Z&MsOg5|TJsQG$e8ZXX z`Q@WV6Wwo*N(J?e^Jn(@;7eQ#R)XxRI{LFegnEb`@e?)O4Wrf*ZBTol8TBFmAlOt}Z& z3d7O^(-9lMJbc>o-0g#p^s5%Ur7L_2vf`9#xvZdc*QTl$vC+Twsjfaefu_*u2mU_z zc7GzQ#8u)>*F%$K$N1o%1@SV=@^$|IL#F+SM{Rv1mf!N@&R<7n#V|4ka<{2Fj`DMBH>;fgCAU(?xI1F^Faasz8_PDA(dP7X>_rMB(Z1m(%C z56fOQwab?D@79xzD?xASN|7Eyrn`U(U_rX(%DNl7N?4#%x&ZPLQsEm{P;w%}EJnC& zXKrS7u6EEDuY0m3>kkHH=L%u1zQ}{CbIk3O3Aa*?{#1K+(_o0~wRyveWrxV)nI*ai z_MUgNDuv5KiVVxyDd-Ziu$I36LD1p;^ZfLZgMAI>=r0}OQe~l_=eHihT-URRCXVYM z+47l69U>ikWKgrL()Zg}p3g@<(ayp)&h$yOJwvOw;g>*W2N%qa6^HQ*+n47~nnrrQ z<#37fS>P=kE2a;at^^>nkb*FM-aW*I)H6vt1@(H5piGmMk6X8o$p8rLfGmhvd-@fkHdO&0Q5I(p4x@Kzg-2}~$nz;jO8 zM>J{cJG^?1!0EN5>{2&sXhRmUtVuLYr&Xa2x%yv8MLs)8?CY_sT( z!i%N0HakPa94IP|dUj+~?{amXT{Ve2c6X%CAB^tUU&t(s8`t!~%_=Y&kEWZ%f&`wB zCdBi5Cn%}T6a#QXsr#)-!b!->WVYo`rh2rfV!25{SOK( zdj^Snc%MvLaQGtkh~Z<{7HG>rB-rV^vXa^FR8(y(Mx)z2;8@u zp~+}ay;_V#HqIlS=vk53zW(AE0|C>;{)$ZFrYJx}IDVjmHoJ?vQYuh+&a@qj1ff+?%2>g+iy3pGF7^B;3ZWmJ z1^3VqUA&O~Ec#eSat=G7ClN>dTx0a}HPw3V`4&_MB>Q6T~9LL9W@?Nf; zRC8me&>dd7HLr}Vy0W3)H^wUsMthF1dp>L!2?{(xkI~)cvaeU{7JbZ>GirvVw!CPwlGsMkAz}krhE`h zd@4$9AS?!|(GYNriM&sGL6cU*VQ1)s`{cW4ZFX`o4a`mn989mUW68jm7s}U8t<2-a z)lB;4)8sx{e`%o<>F^TiufFXt6pq0%E^zEQllyQEKX{$@Uga)aeB)EMcq~k;U(F*m z*wxt;e-o!;XgTAg!=FKjNcEE<`@)@aS|IIo^PQpqf#FSM9@}OW$1{orciObIP()=kV9&SLL=Sa1p+XO&|ldzz$j9UP%e>xx;+kam~kCrZ|_*5R84oJ9$n%R?% zIk~}(J9Q^(5_Ff1_-&Fb`}QMMK9OrW^dzs!Y1p1J%4?&^amYVD5YtYYR@0A{i$2r9 zQ?Q8E4uHj8|3hR!`6EP+Eo%(}HcQKSf&kiG`grA|JaatBR&=*3zehO#*uaUBqd|Nr zM}3lE0g_pi%Tfva7&Y}R*7Z9_IZI%5Eq3d|4p1!BAtKm#*yGjdzfQKwgSui(11og< zHLc6!AZ;w{%?O!&C5Y9d#nh>1uaKrNRyS+I&xuN`7Ay%z2!KkaE0-54TzOBY@9-Md z9Sq@Lek+1;YQpGT$H2^&XY199nSxmv?;CR@mEMo+M7Lcz!8v-NdyDW!B=XL@-cI|% zFtw)9a6*i??&4=;hOK@=5h>JMm;4{~#?_4tR>~t#skp$gS!)Pk4ASKpr_KQd|FjCX zDaYh&V^U!y8|&NMc$scpCX^JiSN~5zd^2H_`ase9UYG)@VLv; ziY;;BiG4-mT1sC9`quZT|7peVky3wf>>w8A9$go?VgT($`81$nf-o8X-3RXHU3Tg# zW)wrjvE=59NBeg;mdyq~_c)_Msba;@oEUCO7aRDfXs2+(2Qe@#7Vl=3;Pq|z=l4>@?4gyS=uOo>)=Ll%q!~FXdHBLAHo@H?X_!uC3 zUbJ_HpV&bwn{-gph}k9{9{@s>r_)}3Ydm*a3jLxQ``OX>N%V(-UvxRrZKHm3ch>Vdx2@Q-0jbHveeiDC5bZiY%aqsZ^?;|0^KYl31TQ31C+E}?8~l)S#*`Re9}dO z59bq>M<|YUlqPM;@u*uxq~k!Cq_Xu4@5S7swXNlBRs-oZ>j4DbkP0#|(Ni=A+hdAP z-0|j!nx6d{q~go_t}tZ}tRpg3S6VO`Dsjh$QjHL)`?pT2?q`T80%xGwG2-E5b?VIl!gjf;5uqduzM7GQf6SKMftU-YC{!0DGGWBXr zG`%aB?hqo|_xIgtSa|teuDb6BSOal8)TPrrdL#4)&eHfoI_ci}IJk%a83$5_U7 zG28mY=S$g zRs%_Ve{ZoFBv%Uzj2ix)j^Dr>;E#mWIr^ld0Of3tVr;t}@mXsTux}F)K%ax0JLOZ7 zFB}A=m;EYcuj%qQe+fX%_m2l-HosPRpWtm^?YOgUJm#=&!O~i3jgAK2&E3W6ftUDD6;Db{)BZ|Oc4>O$en99-|WH} zNhQKki+-Gf22dFGZ@j9#rPSG-1aaR&**?vs=$%zP`ZtXTvquhIq8f|pGaA{`e*7*F zTGl16QlC)Z0$5tk^-%9?@ih<#KlTb?+eW6(+3siz@JD-cvEI~v(tC6_)R3D~$6 zv1Vzx@Y;58iA(eW_pvoBk9zmNMtl z@+O%nB(|RgKEeO_{OV~M&=`L4W+tLH|8w*iGWyC1m~Wg*W2Ztu`FXU6z}&G>%iNr3hLM}tsE+H&8oUuBA8W41t6 zrynHUQ`1ZTjK3_`{5P!H?c*4d=HDH+4Td8M>u&Z)^73cEculPpKCGn9HXv38i`UO1 zm;M;%1241&+t%TAKe49)VpgpU)A57q?`U`8okKB`vYq|nZIZ+a-cJ>`Ge-QWeOK{? zyiWI_VkBN=a_%a5&y%LYuW$B-uGvXhWO!39%o@83uI^G(1L4Xril=e6`_bqL-OFtM*@1VlrjgQTv~ zfZ|J6%BD?Jc6Y0Psp1`~a*D!^EuX;fkLbgys~&0dy{;13% zQW0=UWT-^9zi#-Q_1)#!;)B5A5MUuVuEH=4k&bCqVgQ-)r}t3Q{i2>DWaQGDUG(RU z@y9<26V0vFMXYfu#J4?7#{&B#7mg-!hO2&g=!?d$fG8WNg_j`d{NC`B=Gf_toux+6 z=YlQH*M>)Z0aiu5IY=H4l*YfH4h|K;s4Ss}pyJ~sqPrT0CgINtw2m?}YeWZExKDeBTUwJiN_i*9 ztnU3?+N`r8eYuziwIwdwEBvELIHLk3BfEHOQs?boxVRp^oNol+@>#HqPZI@Y3jTNS zgAtsM=Z?)L+YxqAwD24rT$e5ZovB?ourJn9Ip*-lGY5JncfO zuU@v4D?m3iKcrU8?f7y{;PIypN(JJD9PeR}l<*+RAxc(87RYwaCoS?EERY%kk)1&D z3jpP4NzKs?lv~s@G?~9HG*y{Gv%QY&`Ge`Yg#aU`K$hY9=<@)vX*w?^n`qjuvucyX z76v{IcxRaezU{sTFa-QBrzPoLVX)_CpK~g8xQ1~wzHC&WoKdMvRNE@`8I9&z2`gTW z+QR}q4RK2UBWE+Z+NmK>E^i*~YU}5ntnkHnWn{(TH4|0lP32b!(97x-HUn>$$W;Q= zy%2~q`RL;*Aj(i1+je_Z_AU!mAx7&(L(CV!gk=Z)fv=GbOcyzoYc=2Re!pKt%7=X# zG$l5nLy*W)#F@_J1w*xP za!!XVJps(OJ=VCLsfulUBQbneuN`@cjwGmwcT29ura+yZQuKYO9PT;HX8(XwQl$6! zg!A+GZ|k!4#StYOGTtXmh?!AOGLXtneURt8Yeos*;n+ngj5Y%cU%mSnp&4b!+;4sCbaJS^u`{VDT0-=Y!H_`*9^{PK_j!=oeGzWa5waFmCMJ4C6mkm3eU~2ak z6YOaGZ7`Dh=SOsz;IF`=h00plASg0R)}F$7jsDIaaEHMyB6$GdL4DcJ^!o5m@{eQY zYZIFHDx6o#3uHc!^)tJwY2d+Ct@gco}$Kx_g4h^RXN za!d#Kh{ce$Jw_`7a{1v4#`Mz%Px4v*yGmT4!N4_s+i}s{S0hoxyYs>zp7&?ac{d5X zJ+-zpWSHm9<_fW37<8 zjmkH!0~rvbz*yjO^g$`Wup(4HTC0H89V?voD4@L|#t8YhK+k^QEI!DV9&=pZW$Cli zcf~?%Mg>q6n;TP$frgsM79RIK(N+4SUCz#(pz!#Oj6pS(Z)uUtH&oh0%$Cj7WNY;` zhm77@4DS`s&fdMH7D)}Esa=-c_EB?Ae>dQY!2$@YbQ6K!4RL<+ydPgiR8Y0dPw|0~ z&O;i5#8#Qf!r1X5R`!7kEizThdqPpfuQ#$A0N(@&L=s*ebLLSw(QLqrUTKVe|EoXM zhu3Jzdcf405n_$I*2*%HDOr{wy0+E>C@z{>34BDG^$s2T5UdgI_;K&{OWF3EuL?dpE`|XZyC) zGKAmwX|1OPjA*hM4_gzqd?)z&)*n)CDn0_yRe%-i3Dt1GSUf;GFJLdy+ci1D6g~TB z&A;Yn!1de*@*yXz{jPz$aMO|jdzb9JG^GUPSqR6tFSZ;2TAvWm{Pjwy+`)|og#*PgpkOUQ87rD=rLc4^FWTPZ zFg2PCYNxHnQcwWIYuc54QDyp-x75q7)Zr~>g;UqrnYC`DzFBcUz*=qr+NBjD?qr|K z?Vm#>vbI6OvJfP#?Z@UgN{r5edPnwv=nZepv(LuZOD7xH9u?&VZz=Mo9vF@6x@h7T z17O8c5%kG$4H)Dnkpn>O3hU8aWCG_R_$%Fx@ee&)3PxuZj2T(`@mTk4xW2epQqtSa zQq$lSSp5h>T^^%oB>BI{Zo{i<988-F648OIAce5frrKp?BFNzN1x_6uK0N6T=4lXz zMLYUsJgxZ3wo(b+7toLHRVZNR^EQ^{Xw*f#%}I#{lvfv~*Ld-Iij;Q%ikgLXE zEamV%@FY)(bV0(QARY)HDf6r!KE9z|#G!OzSAs8DWJ*Xby6z88Qu{3gFd+VTb5Abo zOx7&XKKU^p*=1me0=V|tm5UPbu4rbxc?=c_?A-klWKHBOVOQUxnYV94oFGhxdqL%x=;MGenEiYSaYdvH z$31k7HST23>jecX@&V;5vks6YWz(J;>@cU&0gt}$S$AMqZ)KRE=do}-H67*rQ5?sW z8KohDQFaQ9DP$_14q<%R1ZKyXFBotv00i$X8?y#OakVYGgBd>0;@mU8@rrRyjgTg@ z>Tb{{OhmQ`!u+wE(e??9s`P^`P8j;{vsY5&PPXP>GJ*5qQV!k)he~x4kXhKw6K-5Q zxqYgqgE`(!wn{=i?FC$35CDP!qZU3RPF=K5Zr>3z&onLsKCa-U^)DWj{_+qFkhmbj zED$#P7-RY8%YrZ_{3(N-t|F(1B!|M({C4t7*msz~ zKvBX9KCMeBWNPOI>WxJuN|0{TSYUu~#RO1yh$ZrKT=<*^8Rkw>DF@8Gx9wXex%S3a|6J^IUikxK!1OozQ)J{+N(?5;-v#Ih^i5N7&k zvha2`iN7T@8i07PqjBqiOIT_1lkE6cS45Vl@A`G=aI9=@;5$A!AY4fmbJ^i;i-MU* zgcHJchVOJuaC!?1kku$VX~YZqd+8XEqtrpj zlb4eHx>Egz72TQxK$xdjbB(3RWhqh)??_?p04g*hTX}Mh&nz9%%W6ksS5ME$LqOs0 zss;AO?3dy*)!2sE$moM+7mVxA7}qb^+xT!^os!P_umZvv5^(&pE}X9iN&=;7^bBqe zZcnaj?c{wWK0>>v7W-Mp-m73&KfYO9cWo1YL( zibo&K9f=mQIO4m_(23#m=X;#C@T)@0AN3?ChT8eTwiH<4GBt<9A1OjW5z;H~Hz?oO z_qsIQX=A3Wo4~=EE*^7a@nlUub||?pledZdwfON7h#FeaN-(zL=I-}o{`(b~FRH$s z`v>sN>s7yW=u2HxnDtIV#7JZ+Vr~bnV7(hK8ynRA9K{f1*LpugmCSQ??Sfh^i6^O# zBKurU3svdn%7xB-CGN3s&`i=ioC7ixc@G5DTMmHZi(Pf|Hoj#hBrYRA6X+D>T^Lr1 z^kF;ubH`?)oZi%5W766TmI*XBk-leoCM!&np$v^7?gbK;LauON8FzMISg1gZLS)HL z4d`1m5E00XM7~Yit^+wmd+~4DG<7L1Ec3#pLjv`G!piC^9SrD$01cg)(`4JgZi2|; z;psb;{9#;zupek0?c{vX@?UizUJ8*Qik&;);$m_=up4lp%BYAF4Gk?iJv3}9mnm#Q zG-uy;qAr($n~rU`^1_YlWjONe+K!mvji3Ua+*eGz;R2|6NG~>j#QI>RKkyA&Fdt9KQI&AwudmL2nF%4Le|R9lV={nbe%1^C_P5c^*g+ z{1a+4FpFb+Sx0Ofc$Ww7GD;)3e$Ehh!nQbxgV;eDE^PI3lu+?1!4`psJ~g65WEc5a zV|DJ+U+Te;sIqVj zS!OP_wBX9tcq%j0=J7)6WB5%2HK%PvRDb`aOu8m;(G$HUb2()`IweJ6@9E+)^x>hz@dEw6J48vSUe zD9y|GK{9vKd6u#7A>H5mX5l%R(DP5b@C}WT77Yn{^WjlK8AvDHXPEY`#J1PxQ?0Hb zaE5?%;3K@)6#S@mHf3m8zaMR<|JJDv)C!XyZg%(4S@9*hO5$$df!IPac1m7 zm+|$LiS*y2@juTvol|S7ThvI)*~Hg8ltX?K%vC@O^DJ8YYKk9IRmgpXww+N;dN0l_ zPH%;NO#Nuw0cCE>y06t+jFS3lcA^)X%z@hqh`uh_<{=j6$)CvC!82c;eFlL=bk>p^ zPDf4;vRm50)zT_1=#!NybJCnd$2G0amLVmYQ5(#VAT*?o~wj!m1DH`)r zH~k>}+txwT`vk7KtGri#N&^&#j?qa_4y+3DQl)WT^}LgdW{LUAp7?*745uV;ejr)@ z#Su-#@sN9lyWF2_RLuN!k*f3Hg*@t~$h7avFoHhpRb5&Cp;2 zYJ#&VVj|*ZLhb-RNkNO)7b4ad$~yoG&!y#_)^VtBp4$5mp*52w2K>|WlM%fXYG)YZ zz9Et_ZUd=68a>yzr`4|zzgV0QN07F`OvR*L0|9gs=JH~qo!f_GExf(WehciXuwn22 zT`|DZMp;l!CcrlWOv(Hb0P~Eb+Q=M%Ay5DJ?{cgs1($^lKMX_aQ+!~(Lg1&pHxQ&9 zIo|_kVN`W^8uefe@MAa74^CNr6cmS|U~FPeu!wXT_!|6I+ruJZ$pc%h#Y&zxcqqWF zZ3@&gK(@yWEjz@)j|=>~+rI)fvpqrcBhZG2@;xx!?6v;(6qbkgLl-bL88G}R+@go_ zBsddT{4gXk=#le30Fq!4U`<5&gs>Sr^S{l*3$TRYSHT{@l6xT)B}Oe!qKZMs97Nj< z*qAN@|F%QI1I42L4J6{Vul`$5{uKauy1A*By8R(A4^x_E08eDe?F1!hVDY z`5$cUcIO~?R?tJp?kb7~!>@w1RHDJw)D#0b!?u_InC;lg_AHuEfbhSSS)KsND}lfk zfLr-|gMjk9{m<=_{5ORSI}QFCnC-xkcU}EZhQHXm!~edN`BXwnM7ZcMTdKzk{9}df zJ5btfT)^^>qQua4%_`r_FL`ysi}yv4-+(2nke4E{RyXC}X@JVjUNj&Agn97Ml8r2J z4M?chc6{MiLXL#9*@D8MLz|hOP}xBb7cSoi``P_6&B~;|BIr%7RPharnI{)5$)T-) z2b!1%^D9lS@>rU>`b$?Ehk%qY@GEKcF+%*s(z2!)a07r7`?yaWbmOTQIFD-N+q%(z zi@8ezA$|a9r(9W(7KQ!(26kUd=2j``zxViDSSU zalKi0uV;*Ad!+6_eOJ_L+Oi~R<4V7ZVsAZeREJQqy{@Y8+l zBtL)cTjQ59i_Y842u0uBKHC!6yLS|HrCWV@R<&J_zhn_1N}Hq98Z+gk%mMA{9vScZ z+kf^KO?Kw#(=;sZ5A{m;ZyW@yK0rx{$P!I+M@f#e|8sc8C%kmNuvmMY&9sFPZEqzh zx-Bj8tfoCPSL?{qhP}9Gfo<}%-1Woej>4$8Ur@q-wKt%olPD!XB180%ixEobo1KL`HBIPJ3ms`QPa0Evs6Oc-e?VQA!3!3H<2)J2RiADiSr2}i&I|RB5@k0jkilmDR@WPY!L(#Q~C30-5 z6UXlytq|Sr36^e)QUz;My4iRX&5A^bCo$v4avmOl#9yl)xQM(6S*E*k=wdfZkKZ9G zzg2?Z1uYq~0O}*yDRX3GWIh>;sAfGmp2Xbc3DOA=iv{@*+?7Uwr)A#NHcq8u^(D+x zPVkdo94J@OFYaHnhsG!mLj1UMAH8WK+X+y5m52ug*)WJ0U2J$Lmd(QS&oF$V=~mHc zRJg=DiuIy@s$QG4Q#NaZj6>0Ta*xP?CIuRF8oE%Q9f!n9OG|G$VbRow3Y;hJ;!^=- zabizAYm$$0V=q&x?NRy@1TOBvi9X*Bb~@x&U0u!ErR-{G zx+brO(Yl4gqX`1=leTg%o2C+0Sgz1;BSOoQNxoRXx?v2xGe8)9M)DLPkkByb*#KHq zMa>}KV|R^aSxmBW4nF+gOOKc&PZzMBh*NGW(HM3VVepQjsFTGDSE`4$TBDypnQ$XE z&)x$z46#;?DBNl=d}3bY#nHE0Y?Oim^8WT-)<+&%+bv4dTe(YYv!f(2q8n&^1aFA? z);~$5qecndr=9!i3jew;m~{m-$YE`1j1m4^Usz6?5BjDYsR4PdRyH(jQ7_bo{HGAJ zx|y5nYP(rz0XE0Y!D42y?F zdcKZ~Fy*3gtAy`b?@0FB6tGuvvma&}Yr~r6)f_z1k*trR%n$pJ>X!k{8~3sLCD*Ml zdwXxSfL>e2ojWIvcF)-7dN177hsjx%xpkQ38(2527Ob6pKi-JdlE|`3I<;}c-~8T7 z(0ok2+GkiW#BVoAy+X{{;fj~nj2zg228vP4zDxdV)rY-NU<0SeG`~!Y#_fUs;%JH>O7ufki($}}PqzOQdy zTJ5K#TQMyRe$c#vV1DOEm-s5bD063q-aBf6rcnMZTYhy_L%(Vk(GIeMsVD&K*lp|X zZFLhFGq4lO(1D&O5efMi@IIKJs|^9LqN_RnzcmA_J${1J& z+!FZQZ;ktT!*_f@Ou{+U^(%g}asU%WXHj3hS{Rb=ndeDfk8fd0T+*5+s5o^_4GHMc z-z7`!QvG}gK_veq%kvaZHY;m<|qej}gRAfG)5y4jTeyt1|stsirFs7L_jP`|jC zfZy~@1v0%^CZlsbd&EH}s?8;jG4jm7i};tyE9`U)MH-U63{-o03xvhX)4RJrdsec( zt!#C3;rYyIq-y9h2Bzb?1Gp3x?&B!`7F7b>1p4_&Z^j>+<>=vO&@ZrXKM1#fM*uW% zW4QTLnQ=bCVHBNa)Jd$pph`IN>{A4oPcGd`&y;hhir+Db3!czT<~P6S3UAkQfF5%E z&OC=MV_qux-RC$8foE&1mf4%ida$xCHV8>OAiHw^o*bO9|fF|)>bgnBBWrDb8u z&F;5j2#PUviY!Up8lvi${j?M!rDz}vE|Ex>qY(4``}Z6jKmWSvbZ?|#zhl?aU7big z?7dNu%Hm8Nn4A2;6E-EG2;t@EbLp<7Y`Tn3ppzc&c0;Li+0(>3NUeH*0s3m~Lc#CQi&RslB)Sk?O8#H|Sd3gPyJ zI@?Mv@FUJA(~e3>e02jYE5BkEKef?=cDG*_RYj^lZ$e3FoBL@c(iu_*)KTrJ__9`U zw3o{dwN?X2{nx4O%i^I(IK6jQAZbeGz7t0uuo4wN-061q!Pd#$b(r}tCR|SYFQQ#o zdHlJL#>U?04YYONiXs>@!S_3y(487P5aT?NvM8|X@7?=Xxm|%&LK*S%-q9ytlBdXt zO%uB63CV!?K7I$S~CCAFZ|MO3Xh;K^8fLj(e zhh%v^&u9ol`jbUP*JBStDe9;e-|5M-dc7$;3Gxo(xu=BS{+~5;IpzZiXQUB}iCs+O zVgkUN6b)2??{b0B`h`Vf@E2K^Xh~zShrdt6vNM|{DXk5<@&Zx*J2ruiD=uJT@+Bp9 z#P%-)KRDqtW`CYv07n9B7MM5uKYEq^fBF&0AoD?jX(iIab)9{n-79q5@T9>@JyO*F E0e*4+DgXcg literal 0 HcmV?d00001 From 7e8aa7079cf64a63209e6bb2e69540f5d20dd96f Mon Sep 17 00:00:00 2001 From: David Ankers Date: Fri, 5 Oct 2012 17:39:13 +1000 Subject: [PATCH 093/105] Make uploader plugin board images looks nicer, spotted by Steve, fixed by Steve. --- .../plugins/uploader/images/gcs-board-cc.png | Bin 242450 -> 29334 bytes .../uploader/images/gcs-board-cc3d.png | Bin 250010 -> 28905 bytes 2 files changed, 0 insertions(+), 0 deletions(-) diff --git a/ground/openpilotgcs/src/plugins/uploader/images/gcs-board-cc.png b/ground/openpilotgcs/src/plugins/uploader/images/gcs-board-cc.png index c4e77c025ae55fdd399254f01f7281e2d12ca328..ee096b76e3a78e8bf53be2976251468a7d17b8e1 100644 GIT binary patch literal 29334 zcmaI7b9`h`(=OUcCYXtB+qP}noup&inb@|inb@{%PBQVtwr}3=obR0b$Ng^qdiUC> zdRDDk&#vBGt2#nSK@$E4&JO?p052^irt;P1|7U}N`udETF{l4(uwBHpTvYANT-=SE zOaa0mdt*}~XaB z;Q0cuHFYr}^02kBbLR2jC;2a2p0EA?oMt2;`Y#a|YkrddWt5h@5|OCAlPM8911r4= z6Eiar2L}T)8#@OFGaV5N6Eh1V)7P7Wo|%n@or8ykljwiHNWOY=0-5osh)MkKzP^t5 zNi1Ak9C#QR-QC?8+*ujyoy-}Txw*OjgTcZ=|0O~1>}ls>WX zmiBf;|3Ne|ws&>mC;77Ue+|Lb;s3zeIsb1reL0NL!^nY=nStp)L;7z)dHMf;QCr*p zBkk;>V)}pW{r?1ZR`YZ)WmGYBws&e`Z^nZ0({zu*aP{G#Wt7kD& zCrdX|kc5-HEzy4snaA>fv_(|nf5iLWx}g8r7N-AEm+{LO#{W$0|7)WE`_vbE{L8z&KfMB|_nfh-cUzd`}k)-O$gnq>T^~P&ijqpyQ*KYQ@%$$oZ{W#>k+?-p` zN`$ririjItc{AR%^{ybeg7zci=x*P3b36CwB z$8KI)C?%V=w~Z^vhSSt=?)bbayEd3AD|dDOZFEQ0BPiDO{!x@$5dW$Q+v|PN zcF2YzP%0@6R`oKM1F3jXalZL{`+45uzlDQ_vHxjWd?0uC9G(tYAuwg)p!4l#beuN& z*u>dG`F`-z;M#Y`e^~c^dX?P79P8Pq_fWrz{%Bgh$y?R)yIyApr<8$tyj;5r8kK8jA>qt&dHqX#%EPNe+7g=Ki*zZ^RUy=0YxkBaJS&IIZ>T8Bj~>hX{V=f9UB zd_PfCs9zgBe0*;9=F8m@m(+C*)0%vM|ArIYqbS>q1|3A~!~FJn+x?5CUVSiQr2lWSUe#3(8Li%%WdX+x^2kCztR}iJ+%m8u8 z0rhw4jR$!SjwyXf0?icKam0_=> zo37HE@B1_nJp6O|_pbd%=v4r7!Vn(GBT~<$`^LDW?EHP_*!%lMaTm1y;_5EEZm(O` z*z~Y8wjL`zez*Scse_nyC1zfZqpf8^(Hk4!liMG2Doz*Mf&Wc=`V$jg9D%eoi+Y+o^(F7UI~qV)M^ zw~sFh`u=K!Eh@$Uam2*X;II!rJ^2d;;%Nv2r{_!dzVe8iVw2i8tr}2NTS`o7Ef@-+ zwSu&CeX9E-Wcf+?E53l-HXA@t95HLEnT>Ma@DypZ8B(%Eyh%ZxxS^kcj z^k@;)IQ7$>YTZbtR!h#2iH%RRkKukZc~D93eh!QbXEr~pZX}+$Ap#H879#&!tpX;w z*a+EYLL7S7);@@*6!RZ>EyMBFNb0pekA_COZRCKF0^v<)dG}h!btC%Q@%4ec`M_=# zTyF)c3ai|T!uR>LjGX;iw*}%)w;M(sVdhw>^*R%1Aul+H;o;$T27&2ETq-ZP*x7tu zr81_RL{Q!c9TXEYYbKVD21}h@Y^<^Jq#~nkyS}e*b0I!$VqzlU#rb)+)l2fzJodqy zn(yKT^Np=Rs%>tBoKJQy&?L+K)e`Wr_j(h#+WQ10C^$15VgdyEkF&5+dA`^%qc#{jBn8G{%lIJ--`wf-|m~P zWAt;!q&q4a=3jqt-_h4o8?L?P>eletmBk+dnb&rm%`5{>r==&N*^SGhwk|F^R?n%a zajum9vhD-}pqu#b6*e?(tR^jN;}Q0$k`ZK0_$?iI0^& za$aS!a^iWEuvTUt)XV)91%aBdl?O_)9qtY75Bp-W%0AI0Fe5eA1UwR-6H-kWevcL0 z_VSs)ID1=MJP%XfPtmX2Y7EQ(P0&v0C>pzR5rz*^fawpeeW$QZu#%n}+qvB-vEr-( zg)Wi?v#X0+=+A*|bR+~^vVNsZ#CTydVXfey>Vat)B8Z7|goF{)#pw9_h(uI5m;2`k zwqNl_+sKUf2yhA1Xg~)Y>~uFMoAB(nEP=G9=+O?y!!d=H>E^XbjuqhSpN)TiFg)W* zPzzHZ@7niPY~55vqiRkYVLpQSusk%6poVQAu^{>GTNqL!LMZtkH=O(J=9HBiU!of< z7CLm}m3sj+RbRi+)MTy>N$a z^SLs{j^l7guu6J*Xc_N-vQoycZy$Lx-CbWd@BFD#d@pj|&1NJ@tMj`H>&qKW$-m}f z!Q~B5Yas6RBipad^RN;3-`?XvPEvAmBLg$@H6tJo*&_1Z1(xef1+0NO6xTS%Ve{o4 zj;{p^0e}F9#FRI%11yb3XVO{y9b*pIH(rSTH2M+~WO8SYLjOF6yHXe2Dn99vjk-@;tX?r}=qgq?dv|>q}hyb}l42~X$77`}Mh3k0P5hxC>Bm);3>mURa`5;^sG z7Iq6(6CjQXPe|XTQCo_KKneZV@IQN%kyIZkzDO&a0k* z*9&tNQaC_cUSt%1lLsNzcdt(LHr89hX~aZ5m`kipO=c1Q{(W511r43l)eT%F)=suJ z49UWCfZCA64O_-1&5bgaEtQYWan*r-bMWyDfs5sR@eU_UXpf=r>d5WxqS<4j+IDfT-vXMHIvp;Ct%ag8G!d9|r9pstpcOhWZ9hS45y)Cq%v&z6m4m`yMcFjxf_Jj2%?y~0< zgdlHRx=fJN-iG~(@VjOYYy{i?*Id8}?uExi{5Lxz6_gWo%kMU24;s5nksZ$q|fV0{9&aR~kw8+*Zq9r_oOU;@Upj4^&g*2QNAAEQ0lTJ6}a%gDiJ$nfFp>3Wc z-t#oXXmPUm3mgaV4FK34A0M~a9gMiqt91ZVY?bVVQ0B#XLW2!-z2Yx{#p(OC!32v* zU%a}i^^9lKL|mgd@o0j&dQOlCnSgYO6yN_@CgK1vGR_7`Mpbh$S(rVTG>d7G9+~DO zkm(jQnfTv#=N|=CibrNa0mA0yFX7@BP@Uy%Z2A!$^dY%3pG+rPTwI_f$ZF~>a?`Rc z=mQ*8^iTbE_w3;B5MhO&rpRs9?2JkGh;uinY0#kZH+^oW?*3)jM}A(soYs^rE~*)o zpH}z8R(GDr=pbs2=V$GDxD|B7Knjq;5LXk&rZlV_aVFnFy|LL2H`bO*EH^B0Q+@Yl zW}e&4tosumNw`Qtl$$T%OkAvH$wLK)npzJhmIqR#B=5~JNxZz=;FaPMA-qW!6JJRl3p*0jxPRpf%h)hDl{wE-VR;ndY zi;-?`-y>!WYL)5u7@veU5$0JhqHZ!&BgwB4$@LL35wL`Kjm47vVRNm0=r z`ZW4_?0fT%tPt(x<9alZOYeIuYgpLc&I1OQYdi-PI4*;+%;U5VQ&LY1mZKa6 z%*KM*vFr0pu9>|QU6w(!^>wGM5^!cm$3R!voa5ong?`DWmf4{3>xo#lKeUFatJ^h^ z#Xf$yx@U$UVFB-NTrd2VZi83*1aDDIG~DrL0B{CxDFI#a^LVT>Yh5&0N>aZlDjP!7 zCoi@)`0ePjJ{L1e*Z1cPk?miBE1ZUN|599?Lo!M&O3^n0p4|`K{r8fx)%hOx*W%a7 zQsS3o#S?*%sFKgTTrh09B<&t=CTeO+RER4TND6ed{()S6?aK-DGV2} zF~6um7s~V`QA6T{31!x1A$P8?L9;)*Au)hTFu(|uIEy>q9(-_x^C1jCs@rQMOAHR3 zCddoEOGMeDW@Z+kWu4+vjV7FT883p*ErTm)gT1!@6asELbRA+H-bF&zwM%@Ta2-B(7%do607ry8SU=Hbo3T??Yp=fmu~un1P}+q2cSnKo8TtGJ zSXOFs?f}e;9B~`}`!WA)QK3JCcbv`7xQ!ul&EGvAZVNbdZSH@%TS zm|B+>1DiH6u#5RiyVJrL3p+I)i=2t9(Z+9zA9WyaXgK|#Ay+_5+GlZTbLR0x;_(~J zxclrpw;PYMGFn4f-Y%X1@&tfLVB1n*Or{~3oKkDtDByDA(uc^2j{=i- zT1v55-l<)rvBm0&*dzAi7hp6AFDQ66IXM~s`ucjy+)Y-KdFk4Pg;WXv(<+i|`kVFm zTCCIGZsFflqsO(ek&1~MEJ1Dl>x-B8V-Of13iFINMcmfFpjvNaXCQ0<8P!L_wLDTs zN5^7kH>8kMhMVHEqRyZZ0SFq|#tA~P3bKzUuWq#`irmSq(05h)UY z$rnK@D=7^vA_Y)jA@)L$?qou}Kz}1{FqLEnc^U7l zm{qMiOiV9~j*rqfRDfQ&!ubkGXBTIN9rZIl|IqRz)S0Qb_eRxN1dp7OQdy%t#kgo{ zP(@#*WxXS4vU~P>mCfDi_dZ^bPK#?6dDWH~e2#AV;S&m6YGPsfQ_bJ>kDSlPk~2Y8 ziy{a7U(%_ayWk^jL7jl#vF&;1&QLlZUyr6Fr#?`Bp)f3eitPFq*WB(8M8F;V)pB)X z0etHK1k=cR(ornB(8K#YwcKnABNxH`n<;yEaATHJYy3viSX&#fL1(CNnD?`r>D>FW zi}GdjrexxYSD2jF@}jei&HOJO_j0H^hmwK;0y-L+1yOP)V$YGQM!3xKHOB>;s%w{g zqT)`hooG*09Obzvl(6y4m_~{MVTBw9a}L4(WT2*>q{5<9pxPzlGO#R z<>6*i83U8AU~6hC%94I>=Mu*Ef%PaP!16iqe>S#qR!t$8gFqcCc_1&-g9_&DHtE zJ_Qh>dT!s-%G`zpgHOgJf9oj}%sq70l0#ts8Hiyvh7#I{aE;~ZQ z6O#9fudO5w-^{U5$FsI&^IGS!rD4h`VnAGL?K>$Lk)rYUsI{%SfNKWUg%rNA(z)Jz zw4Y-_J7Z8mRLWkFp)pwK5?3*px9X0DK7`XYbfHuNpVgZkzcSz>xf{$Eh)#nHG*C}Y zPxievD&(E3;_H8t%SolAKp(Z4=aRNqD~ULs)7v(hUlQol`$#|OA)V$D3pR9R4Vfag zL2V`@5z_LQn(43wL8sdL--{(3r7QJdO4fsLq%+NRa<@ zHRq8ZHS%JGq~f6=qKm>ouQfHv;_kx@?}l5^RmSn{3bCx~nAvi6Ks&q>Y=rrjk~2X2 zQBlsbw<0}UKU61HFs>rehX~+u9)?@5cRg)gzS0_obYU=^rP60qA%t^pV4(|Fk}?rv z4tCl4tE$K^-p0+{_}L4#Ia(X7)nnWhn(RGF^C5*^3NgW5i0|U?DQqk%i-P%g^R4>m zw}F9P5S&T}{@4%48{P2D;-~ytf(;TTsz%x6x1cpkvoZhU3;0OKU6WHDj^S}Q3k+oI zAD*i;9IB4pAvj-Aw1+}Wl_HZoI?QB=L)FFDcpd`GKEI~5*NN7_t%+CqX^j(yn z>Aol)C-uYV(6F+IGL{CWY>`&=v~9+Tn=;bIb}%w5>+QRRiO~6dUJ?pm2SAVY**uCv z{pBz?7ToP=AW=;x0fVlKr3WK$|AXvPa(x{oNy=Vke+ZtCS;PT<0>`bh9 zYll_(UD30nIT7~&qzGP0))cb2rc%G~7wFJ^_YzdPwb4qW)Q#SmDMH!u`=EY;Q!CAe zfNP|v4Mw6&N4^PHi&0VKxw=Nskd@57`ugg;g0c>dgO)i2%qujMn9WzRFtQ%8Ys@Cy z)|5*~4jjY;2Uyn9cxb4vw|EbQFP!PCf^hh~MU`L&5}p@^Geeo+rmKdRiV9AbzWvPT zXVLn~;8Kv1zLIl;tstS|4nQfuvU9R8?3zaXYU$v_^G&G!Z3F*jTk0VrV~38euxhuu z4@^HufQFGn*{wY!llM(c-#nE}bK|G7fl?vqEMkI9Z4FPa9A@%j)fj5Ty>Pf8s;ywJ z$w5PdkqBGYw|!ti*Aj)MD68=>@u46d1PgDKQH7hYipqS^Bnm5<2g$-t%+G=Hbk3i| z@2BvZv-GSH7nz$f&k<%$@Xt+v?mimGSA0`IAC|P76jCY+3ntdL3wSK(r>Wq6kx28? zl?kH2i`9({xg-kt!suu??o{x<;cVXeHW0mlmqkm~F@h|zHC7$9oQ8ZXa-B&nT{5#d_8k#NcrP);$?4j;e9GPz zLg_ZjYWNciSAD5U0|2@gK`(RHt{b~OYl>GXfLSa^No0yL4nbL?4HI`EzfQ8a{r6`N9~DP$-(qpVw4eOf2)!zc?^ z<{6kIn6O~s%0LekHB>~&$jX$LwQyDrfH8T1Yhh<(^d|#Fv?_IMLxVhwq}U*gm{Zt; zW}=6~Z*cp;y8gXISsXO_WSR=fWc~K0vS5k&iFi*i{MtWAs{)71KA%V`W%NQy-}M)F zF}>+mcdX7I9qq72Svrq=dm%u(%a96>inExWqE*3q!XZ{L`Wdo5Qc1q_cehOLkbA)v zLosK~9&IetmEC(?i(yb!vI9p`n8l@0IjLwe8fO05!R+UxO>};E4%vgA05j1GNWCh; zRqP4Y_L;AYRV$Fld-yW~l1LEhiRNJ~H|o) z8CJm?ZiB{lzO97?l7xOMkT@k-&UgSsWkVn2-5Urn0F^e1g(&_Z83cW7RR zkP0G^JhrM|FFGEb!vi5sBVrOryU>441vJw{q{7AFU&&*Okko!2SHQw(ho|A z`p0tYb>cW6RcEoxiG;M7QCn>}_DX&bH5etQXfsn;zQa^UA$3X>}gn?F87)< zgV2~Es`nsoUMQjb`9`rPDYlHaH)lxT^&xFWCgcKIrRC%bXY_xj#EW2$5Yha+|K~`6EUWOz#ER7l z8z&kcr_Ha?>rT`lCn!J)+E`nXsIjrnU);rJV>>E*Xy&Ldz#6Z_CTxes%PZzX>h$N!R7Xa|9CEvrVkqX`5tcK^j1v>FK*|*d$OK%*#z6=? zB?dl-PsYN;KZ+;~n6BPB<9kLQXRqrZkZdQ?rMoA4Um>CzZ`A`HuTj8~6~1*%fa+BF zbX$cnx+tPjb#j3Vi&4X1PYaD|<&nP*8l4Vg>b`Dy-Cw1p6h3&aa#NCJ{NCPPmJmTR z+}mi)s^?4!!g27FxKus469;6POrciPd2TCgGGR1FVGie18tSHi{_tYlQ65(CV(eqf z?$QKg~68&Q}&s8*+Q*<#F_ zl5B+2HXLjez8}aNDuh|%W?VpNDgdzjWm})CEtA6{Sua%{lf2=%k_* zx9_bthEBn#eRA!82OkheZIY7l|GZM7$05`v+YzqTs#zC3z`rxx=$X%WzC_9GFvbri zqz60?LQZ=8G}FISaKYxvpi3UTjO+;7;?-FZV$ev9a$2Ca9G5w%1*w|K^V3d^88baGd<6rx2ad{& zm+~~9p)9JsqobtvJGCWynDyOjiY+0TT-Ys?I ze`^Y);2tFIz|36Ogo<&9cs$%$b)?pE85tQZvB!z7+ra8=?@}r6(lIhefPE0xydYph<8!RlnsEzuMNaTT5&#_ z6?WuL=u4p&TEU+I68a0J;D0OmHy}={Q3dpeB0HS5Yxs&j&kl6Q)7#-F{D^A|m{oy1 z!i}#=;SU35VHaI$rn-Lp?H#X0%F-}89|8xeD0rpdp84!Iba2s%uj!} zlN31=@|~7(_R12*-?%O^9po?_7vDPhWK5SKuC|pVcDTS_Pdq49P%O_RezT+^r$PP^ z0)=Eeq7eZ6+ZEBl>W-$O)E1;61>UL-u0#5PY%CmpEB);@xNz`h^bKSgRu)W=_Dm?* z3rDXa?I~3k$P#0X84H8-3(J2gK1p&2AET1}9GAX{BEZfNffnld27|W3L~Hw9w~Dr-gqm1 zcF4k{?{5Ongqk~*N-IXsB8#-i#ImL(T_kYlFqa|C?yN?nR0Aef zOOx!rbbf+%i#~8qL_!hsD4L1IR{vUSCsUY(jjev{iBka%EVyz+cc$@ApUku??G207 z1qySODc^jr@aX0C2ZWkk3L!RHtpuNN-o^d0|E{dsA>J~Ho-VD0$ZU3$(3<)b>_J15 z*}L4Fg`i1@VR(Mesi)WmC$(>+p{6#=ZJtMuOeTc^^$#cab(1emolxa>ZV3Px-VeXx zFB{v&h0%|069vPxBBmdlo>g@h; zNR~`mXk%tx)+CA)`I3Ll3}d#c`K+O{SNcp4a2XG=v9(f!Gg3Sc4e@A*1(PbQ4ruXg z%Ghj2MI#g~RvjifaPqNCYt&<7g%c4$Yi3D%zx&Dg6$;;b7^vf0m6)pnBV{A0BZnA# zlAg|QQf!hJIfHBHZLoFc^d|;27;(9}Fl;xbN*%0`zMn#h8j*}Lj;2v$BDKWJTygGl z*=b2Ww@rJ42;tPUfGT*+@5=UfUQU8T3BhB5b)2KqCkVJYl9=F*1Wo&j2m| zfpH~4pNaeZY2_S3G8}b-k|zjq__$WcFND)H@GOyoLA$*C+=lMAS~U^9-^Q&Q0()WR z#cOmLlHqv_ls!75mIhhX6mL$6?$>Hdgxi+%5D)*5MGyk>rlMV=`b#R_WlTelz&E<5U)F8cRccd26fIU)_2aYWnn^_-0#g!$hrw zd?Xe!0Sf{ChUkgl2=PQxEuOY$H=8X6ph2TYLb&Wv$oTGXVZ)JE(VKxGo|IEat2zxN z21VrEpFiv5%%TUpP$dBrvhjU>ioWyY_ug>1H#e5P!QSfe?3)Hb%!|bzt#~| zGodZf&C#mGP>1qdN)V55Y!hNR5GBcc+R z$b5=1^!bHCa>9+fl2I*frEW*MAR6PpwGy&pdH@r4@xVCD3ZJ_+8o$XXMx*1i7Mrs- zvvVqm7_*cVmn^s$0K9M$J#q&co>~=e`4N4905NGYLXXI6c>!tohH*`DTjS^>DIcG= z&nwWNM5IC`SMBJ{!Nd?^d35OVvc?>B?~ibU&gW%al#Ub<{12b&`2#f-K4mB@psoES z5hkKpZd(S$(4A@}y%6NF^qq{n63swmyP;f!C=)>k^(OjeJ#InP~oyBrbMnw`-(hK13#b8=3>omsEcbXegOGTHT!|(XjwIZEkGq*-h z0c8t&Zp*5yoSh~IDSKow%j{T3$c+w@GCKIJk3D!_<7rz7 zIvNJ<_YMyhOs0X=cXJM0c(NE}QLpWRV%=o12JkMQbao_pHNZ2|KypBt9{b!at0yw`tqsd@6>` zehy`PhB2AW4$Bj+pO4_s32G4cr9joFmpn}YJ}y3c=O1J zU3FMroXdLtIU&y(5gYiZj0;9o9wBy-yJ&HhujhH7-sob64Zmbl{NQ`33EMF^iKydP||C4iiyN^ZGL5Ymqna0=#2L) zaNw`_L=X?2^CtI_XI9?Npuu|0&_Zs96jTvd=Gizv zb_5*o@KeV1Vq;tWa+&5n42P+#ti-F!3rh&$pQU`pOQKXv?PmPp!9_VvPMk^P_ISOk zWW=SHhfF8oh7PN_^QiO}JLhaLY`jGA1<>GZ8t= z94)&JmNgD!Qj}wP4a|OXzNGO3A}j|5`8)zpQVxi4=2*FIXISOqp<2 z*U_P%m)YI|E!k3Rl==ADzi;{p5v=;I;?Iu;ViBIfASh4F483`w_`$yRb$AK)K-VMfOq6>+2e>6RCjZFsyMDX86vsy4T ztiN9NFuJywup|HIaKQR@bthUg&_-m2oB+nU(_pnclV40b8v|1l;?9TjpbSm~z^gZ& z2AM!!5RmneC}SAI@>EmU$wTcOK7B~}Xv*fsU`$|sD$wK>KTAIg9>t7NkM$qjyTUgD zcYM|x9UD3k^LG-mv*}i#d~q%d4B=grIyKeR$sH}j5AG`QkZbU(ri?ak9F~Z!EUk(M zi$PGkDv{=-$oY1r*Sx+Dcsy!tdD#%Y`(|d7Sxm|p;;!l`x6WV$L@KTY6Ofgi? z_E|^m6@iY9cS%fkHt-9c-}_hh3mH%0Djr>b~gusY!>0L63O#FiLlb>MNG2PeYEcs8xa#rsc@_*Q4ktfNKN-k&h_fVQ_FR@)x(7 zvOoxr$e7w#A!+J;a`2Of*ZKX*K&(v)kNx6n^gU$)_F6qOZUZ14XR=FRi1)P|eiu;fm4570L?;Y5{ z7`lfAi+k-urGsvMH346W``eBDm2GQAfig;=)$$o`sjeVVn>wp=1)q_>4OxeGKB+SH zIVcdn%P|qX=;0EROnd6^X48GxzC&AFF+#!eV2L60LMN28vCFA3+jB3uA>0fSl?G2%BhF(JDMVzJ-xcSTj9>G0TlOo z(5;NhZ>bXTB)yZs9F)58B2*D1r;?9h-AP~4;b;0Q|pE49({o?z5{YfW5MOU zZX6Dd2mgVj7M$Jr>-T!@FxR@?LmGs>AH~ov^`?LnHwx}){_gesH-Z8y8sj>Al9J7D zMe74w`%fVje|cI!ASAI@zGy6im0&t_G$j+q%Q_kcTKL4+F&+@VL0*WwiOP#YUWySS zBno;ME>U)%En)tJv{xcDg`wljNjh8zj{p{h0Y}WtiG|f-b7E#pK@q#Zlj8&=)Gu}H z-1e)eEH8BSj}oWOqHkPN-VZ}>eMS3An&GiIRRt;2g!&w?C+@Q{++Ss4f$|2>ojL(+ ze@U@1Z-NNlg?uzFPk(7hJqzny|Mk8^e}FkztX4@NDx8ZX&FO715&F5nDy16-1Eu9%Tsl9?`zWy|$|vasi#AK|_(&bYPtih#oJ*o4*kpB#;`=rJ$-W3J!8^gi;5xu@csUHI!pn`6Y6Gcr%6&#Hg=QPZ^!T6c) z)dsWXs#tKCNQYYHV3?QLDv}w80tIsP73BAGL5Xx~U#l^Nc5D6TY)zfn2n`1eQNx8L zK9<;w!pJESs3T80QH!mEC4tS(I0(SH#)Vn-C0E7boOtci_ypZ-pbn zizC;8pj*7JoKxXk!ez3`jc16B2|#ZWdLmp-23`5gd^t*nWZ?#P%>ARK9CX5_lfH{- zh@9Pk$p0oe$FFn_iTPtNRk>~i)loBC@2LhTUN}@`HHLev$8q9nvdI?xq{VUv zKXA_7)ji_xk1&?(OQ4G>Hncp3m;Eb()#+KnZk^FGYYy5IToVUs{C1_Jtims>r(EH1lg^6{pN2oSLqe_3#aD7s}S1P+W_p z-|C5lE(`LU(krvjgg#2Uxmb96gEXfMEZ9pH4p;*qB>F3K1Ml;u-BbW-#eV3ui$u}q z%xbAJ>qE*<~wPv;c{O z!cI9Xoo+C7U$zA+w2(z2Jo$D5g3Pn zH#*AV0IBD&1Ib1{Ap8n-hE}&iG()bVvD<&tLObU#1j)TT9nM*?U zKUoFxmV;B_ocy!SW+}L^lAc9l!0BgCNl8ge0$b~Si9O*5qlQvo+%Ld zIm$fSv$S?7|6-b&h6Y8lhPm^}=ro9?>xVX7B0U-Qa%rus*s-N>szQL&&&pimkRQCR zGfFY_@v$?B(AZ)cLDlAWB-wON60h)#K&>HpA4FaS9DhD+-(KRNE1My+{E_TSV_OiqkZZCxQv z5tsr_nk*^NZ8%sEBkUM7%_01;l!K*EqcuL#WD&s(jEIRbHI~m*+hHV6!l2OL7Jx*L zY?it2rtBhEz_X_yY9>r9jH;=j><04W+CgiyC#viU1rAImkt&)l8bTh%1uLO%gdYp{(*ZeID+n< za4VINC2ZpHS$2aK;spB4t4W*yg)0mM#JfxFO@4RH#n@#+rIngSwHC2Ha=a99V_aB! z*$UMX&gMHSu|ODv8=bO^%MjKY%61@^VYf|2I28a7N&})n!obgui}VmAwlF4{2EOwR zQ3~~%$imm_{>5P43nx?}(uAzki(k};7W-pWR_leVRz1cnj|gg?Nax;@iNye9tFYe{ zquzl!=7an*tB$na!t$MxL=>D#qQATIBqoQ~T}BY&m!iWfwVM~(bIn5%dxkdis(fiG zQppnvb(lSd<78Q`kIbD=$zfkiQAmP?-syOHuRqd~eBLJ?y+Pr zpw3F0da|Z|WjrWYc+RoK_qocKV6q5KO4^{WB0S;g4}m(529^e@fRUn`UNGc8OcwFQ zMjP=X9*8F7dpJdsCSdm2ZDKl~I22)NF;#*JQV{{>xJx&a!K~4!--fkX9R#X!I}&4` zVwDsn8OiO??L_HJe;7<*_qBc}^9vp`fE*T2fC3=O=yx=pe-Wbm-yk%P->e-Wi4 zCZGc#E^_AX&}$)$i@u1MgvUQ9V)RBuxUUtBu8mg`+0f|Iqh-mY?fX>w#OMgmqyW6a zIu-d)n2Flo7j`hlWjxBNJxT}*o0n7PECgV&1mAB|dheas=L+97u{Ka!E|VvxWJ$h0 zo|{kz(qS|FX|_-EOlK0F_$$Hpr^ei(0-R1Y*p4qVmUH=4LIhhhFUA}xcfbm3{^eB> z%l{?PhmbCuzG?AC*T0jB<2Truvg&4o$V;ONcR}4TTjs^3ImuV;jldWHPk2CoKb}sz z3)okkG`q`bRbCPAMQcb*l9ty&N=pbfsXpEByat^J01}#+$9)2I;0sJRik1`2Td{xC zrHE!=&}%^$Ax3Sv-&Df&-sqA&o)R9c9a8w#53WFLpG1?Tp34PcCdZNe#4)e1K6W7!S`6e#m&UZd^EPI zCqU(3_{!_`q045o@4GGTjum#*5;OoBLX;gr@;5phc(_ECa9*EvD{eeT$QHKiw3K^n zg0I@LvlvEeE&U+3o78%{X%uJ(;A2q+#t|Iue)?Xa=&Fe7k4P*l1^X7|eUneePAQ4y zu-6j1P!A|Vf>qzo66GOq$@WdE|;mRq_D zMEO-Jni&)k^3*r=_;A1AJkul9bnjZY#SIO$c9JQy_4=3dhAw-jbg)<;zA zZrF9V8&#se*__icrreqRf>UvfY2Ubzg^#T^Mbg|EO?z8&l z7JP$+(<=$}tzQ}&`FEnRv49&cg_=alPom z3ne-CFMs)qWOp0cJ5o;`S(G&rfC%>uy4}BIF#Q6ms3LV38Z0GW=jZ!8kC&paq|wa- zqlCw_-*O7#qK+{fCOv=&Hk>nO8g1UZ zje-G_B&=dp!f-G;h>ao<;t-ZDEL>RR&p!8Dcm@BrBlqxRK8<9S>}FDRIEH0(c06g82@x5eE>$i?CtiMrQEFuyrkM?~qYr z9&V1QTuq~8i>vG%KF6QOay0W8)*$1aulsx>yXwa>osugbsAk3ZdSp@KVx~`@Oh5kd z|D&&e{a^TIlSb^xacs)`$oEv5{;XNkS=Z6BFpvqoXU}dCMat}tG#DWIP;`TgX=Bdd zX!^@o%CiClm^9J}8`)MwT_+|kmqD0cP#})=B}SHZ^9TL{8`NBMF}d{TML&(g-JrjO7}BrJHxxg=u&01k@=N|%=a3WOs|e3 zHuv%3x`Lmn5z@hYN&w^waPrf|1F#l=``h1s&nz}wF4(xQ+lhMB{r(_Zw%NSmJLqqJ zeVRe_nlJ#q35Tz-FSBArDFkAMFsA4mk8RWkN7r4nji}M7Yt5Q9;?j`~sUz6dxP_Q< zR6}Wpm5ul_3hdE-1J?r(P2|@S7Brk!MPhJ$s3ArV7=+BAw?c=72o^m}>p;L_J)K^C z?R7a$cq<8A-;(sJKv3eg+Cm9QVLZkOV*$4cegl=DAiqHNHAYwxfKxqcstucKTl8j^ zxcAJ=G-+CdammTarmL^MS`tTaf2cx4Hak2Fqv+=N;Lq!=T8lqLD z@8diu7J_aJFhE2CtZHX=h+IrAfC=Y5EYlZXekt57E9{%pBO}nW0Vs7{N@rHC57d#M z4kRr#P4rV-BaRQYhQ+&a)247uHSQCD1E_Dh>1z7TZ+=4U?VUW2AzHa|m56M$_|aAc zz^v3g3lScQRQ@M{7uw6?WXGJxc$s6IOT>u(o@jcI4{(47?8cot_nTL)Ttrz}>EX2f zlL4Pv$#HQpG<(iW*6R-PO6w878!T<(#?r@&PZ~Y@MgSUf232$g?L*MN1^rI|Af!2g zNk)r_8m~e5C6P{s&iW2!uL(s(QiKojiOd;*Qf0CLcu*@4mFVFo7zLsiEPsf_;ap}b zh($0Xik_k!(fT6N+ViSwfv$~S+9)qYWCYnS2u+so@piH$i}Rs=1pq{r5v~>P9Dq;y zcB4H=cp;jkO-ET-G2MIb59!Na{v0ogC?1nVw07+|GWLOhSpW=YIG*r#Vv$AyP~RJG z0XnV0Ukql8n3iZZ9KXvT%rcHAt3J>CUFjTrGmU(pY*t+7&YCrs^@R!H_+_NtcWn8I zX_P2Hkf}dYd{@8w-Gd^!K6Cly5(R)mR<%((9tcNk_l9G^p}UNAHduW=Jv;}6A3id~ zmvN37m33@jLX{(D>`|?Jjg!mDM9JUER_d8&o+)AuK=kV61~>*RT)1%n5OhFLwZIVn zctDlFd12&8*0r97Wz=24KFCDE>z7`7DcrwM+MO`#BE~zQUq8+V%NV*T!f#rmBD)+L zZA(&8QmMY7o^HPRI=cVOP=K+bHNEcmDMFDw{O~U#3!lCIdRoSe0rslaYg3$( z@Tu)Xhc2#o0Fc_2tkw}5SsR&EFIy0Xh8RTi%~xK1RX}OgH^Wg~AmF4%SP)=AVHSLb zbC?ykv3damL%KZZ-#5BD)Hura6ns6IIa$)Q3Hqwialz=&BVh@n-UeWUn1`zcKvCJ~ zxF2*6J8#YTG^wPBzH!GF=qq3Of*c28U5%^Ox6v-g&CN|^ww+9S_Z(!9w@WfBm>jw$ zu36Q5N5s?<`29sZHW#s)aV65R;5UwpsIboY8(vhu|GNPQV}vKBj}_(%v$FD7+>~SJ z!ga346TK$WvASS-dWux{!$H0Nop)#t(>{XfYG=vu^3;rl>8g7I^sO)6d^0&1XvmZX zpdp%6rU^iSb{BBcmNBD29INo1aql`q@5HcPsapEtxDczVZbY${II;BvUARiHQ6ct2 zdHszy1pEMq+C|;Cb(oQHRl}z!wpejb*zU_}8QydU1_TxYisrEx06^@ug8RTdAOm{- zf(0x-chRzCbLrMwucc|zr)X{30>SW>v&uCFoe+9!W@b7sG7B3>X4Y+cC#Itq4QY@K6vPm04CDU7Wo?D4+aV*9F`^q8lZ!L038qR4jc#BEEqtr z76ShW?Eyr~mM#_13=kUKIY!r#0w7*vGAJUwKQg9_W8t_Ei-@GauNUbTGXjrjSPcMs zO=3L{y5G*7JIL;clFkUm9R*~gMz&Jn#)0!%l0o_2P|&_`!6KScUPj;iw_E6{Yc3E_ zLZ2KfA!0bL8xR&wOG{!4zn8vr>+J$`_&^bstl@jV4~9@uXJ=Qqo;Wfj zq(XV{u_007+;h*B@EI5Z`it5?2aE^*7Qmo3!p82E3z;QQ_yheA1@X|WFu2H!HrA{} z8ac+oDPzJzRbR7GJ!feI>n+!j-_8;j(>F5PO`>mn<0ii6i3}cZxas<^G%<|{L_O3dY7t`l`T3LRvdb=|qdazq zC-2>}R}y7U#6aY+eu&5a21CT;0|Ov#s+m_-Iy2vbrluBVt@B37ZZ@3|_*60`{8A_@ z{KFp}qnBQOQFN0my`|b{t{K_$B0ZhH`sFWEJc}$OBVfXzdtuO_`$1Pyod)15Q>k4L zhj3@WRq^}#@7I+1v^4tc4L3-y!|mI)(IC2B=>u)d+A-!7j^=MPIBdgUGuERReT>Gi zBVxlU5jDK67>@^-NWT_3KQMU;`5OTB$A(FL(+izZE^O&d3j$ViHmNDSZ(9^+g2UcQGzooqtt zNkvF_bzXbuP)$N%VIC{qGY!5$)0l?I@b#KUh+=g7oHVI`-gx6}3I;56-L=<>GLJBw zs>z7-{YlFVeh=ampCff^&z?P6TM4vLWAI|zSJd1Bh)6C#iWkH-L@~r86n;c2&@mq3 z8jUPbLjhNZkpUySE~u>S@j`+|ALDRq5andni=q5Jy6nADV7A>N} zfx_@*>QjoZMvk);GUMrDa7TZjD=P9M6R{Rud&$UwV21 zTl%d6X1Cu%e|h{bETufhbQd#-+*cTUmm~A#q-#P>;W5ZJ+QlaS#e4Qt(uEhE!{Q=# zT&s92@Tu=uWFL@u)YRB5+gt%G&;`K;YD^gjl;q*DO@4t_ZJ z|6mz|CvKt25Rc8!cjh502mS*RB=T0=SRY)gi3& z1+_LBs!ukY++Y~Qm~ow8LWpf;0HG)eq8Px0e!Fk)zA(UWuVk->q{ zl1Rs5#L?0k2MA#cv%+@(jHch zmv?k@6=71=u01n62$7<9&54B)_C7!bd|{q1k1kvJwCb;S#rT~bq17>F^#oG3~{Ycj-~p+~Cj4#qw? z03009S6p!g&6zuwa&vMdNy4}#!&r=>{!L<);gU-(kwpL}w(J$B?|}^C0@gB)2g3uO z<9*q*+vy5t4MCOY>h9!)mq|;O%sIhga?^1?kG$rD1lB?0qUeR^-w<+%G`d*Yyx-T? zcLo3Zx8vdEL#Zp|6YpW>yOCMYx_I$iwlE9z`h$}L-?07>6jA*C`@5)kVkw<-?m03k z+gLA)>}Fuhm_hI!nZOXI01U(_d}Z))0bK9C`>rq=imdLq{dOv2!vtUgNY}4lFRm55 zMuY@RV{BES@2x9;S5!=uv@kF)+$C@dF zQP~HB2<)hg9jojo>pWhJK-g(Tdqi3FZ=EEqc*?H%kcivl9SAY8tfA|Z& z*ayQ~TaC5C#%4zifVlCW{`4;TumAcTy|?u}7Q>a{WyL;mejS6VaTNl__B@0P?k0 zUll_Dy5wjZ<`~5<^i#M>kQ@M}McoPfov6gaXXvNn(v6Uj*+UMBiP3sqDxthg<_m8x-)RPrkHxv$-Jo0OBHI37h(sy(d&lw#4_zy5W3|KUIW zG2ES0?IEX_Pa*^?Vv#|EE~5A?#3R50!$+bjdV1JsI$$_H&Bx|NDlVq`+3H4&6(PNe zMMVNSY<7d}@$u#di%3FxNeOIhl#tzOVwNvq6(X4yE}Y8-+YAAT#)6}J&&E5x`V7EB zm~P9KZS>|FTj}MO-;x%>*f3GgD*7XT>&Ue0ZQaJfg`b+56U=IV}TQMft3qWE>FBSA!~vvWA;}X40e%BOC_m*W zUIJMt_zpazFTeb<=!{4(fM4>p*IpI9HgX51V|||5d+-P1n9#AK9WksbwDYx8QEFN; z>$zQWF8E}TuB8ELEd6hEM${G{wr6Oi2Ojt{t2Kjcfv=#w`>MqK1NRCW8Q}NKQEqWv0g9u0J7wSmf zerpRGBs-QN?)IK2JX=s+B?o4V-H+M=wgI>PL}g%?;a#l|E`YZa&qd`~Y& zx>t~0ge>)sodHKCeGcBqD|N+Vk3H?U2#0FbYlZjW5J4wQkqnfLqEUg zdAj)GizF-g4-Y*=HAiZ+y>)5i9>>G1=O1CUjqF9k7Ns{N8)?s?P=zY*1M`O;hbh6>Z z0Tiz%iJ{b3-^3uy5inw*Afx<&2Ognse)G#=9aaObv2oGJF*oZwarX3}uj3I0+W~s` z;lGl{?URO?Y~2p>{d||N_h&R(q0c9Y0bybCAhn|)ncrKA)r5KxZC5#6T9+IpQ^B6V8Mwi3zgobFykN9zru9+O5Z(mqMY4fj?Tt8$e zEAehj&liC4XL3HPS>N8uu+^>JGiEL8iE!=g+PhC;vapg>Y88BpXmW&JEyh-KV_T_X zEB4AC+SS!bNlD4%h;fJuCnhGEf!V|J&@Vv&V=kc4^PnzWsW7#*jkJINAvQGLqWkXq z6SH-*Y@Wl5|9yUbh8NZoqg}_TFyMy{K$Wt^tN)6lM;nq;QW9y!ip5fnIJ#Sgju8iu zlb}S*e%5ym9XdjrHg1%vF`2}O^2*39B#ueT_XcQEvWfod3^RRUK{RDhD|v%CU4zi~YG$|q6;>ul4&4s|O#Wp#b)% zi=w^*uhXWEPD)5ll_UVgPB^!6`YOvfsBej?c2W{!gv>PH&etlPEBJn@kvKYDy8S0w1REkG2N*!}dV2>-dwcun z(o5HbSL5;64}W9QYik<>cqo3tIgqag(Xw^x&f~W5jl4eSNNdhHhYf>;)Z&Y$l!SP) zbRDGMy*osYRmD?dM;~q5u|2#2O+?b=aBS7E=ZJbDb-li+jiP!E(^YZnDC8TYX*p3; z*)%}Dq++`Ck_*L2t(Z&gQ!-++pOYN#a7R?qvSXYBPFY}%D7*L#am=c!8UbJe-z%;e z7B1q%m6g@Bdv_)4dQUL;o)i@U`YK!3e`G87N*;qfCvqL9!hjz|b321U;=Yqt)!-9P zyhty;_@)>KC&qr-`_Dc1swl{-RxM$}W4>6!D_1U-in?P{zs60PknHEnKl2$%$97vS z^$a=(-TtbX9^CGw>ee3W=xi5D*9bn9vuE7b*eI420Kt-ns}9hH$~OAz9=~KKQ@~BP zpOZ%c&j7{5#_>d*5w0Q}ZftKFlf}pK(~WGbZVtP8un25chqTGV#xzn?&l2PR{_kyHusSiwHQ)-WYPNYjlxC>fXX$a7;!|mSN^Z7tA}>v-2z~K$|kkL3A?R8|xOr1|T+))F9`rqp6s&EXoZ#@{|f;d#AHc-s|Y- z5)s_f(@Wd7?G{7hfd?MtvFw#BXa?|03_Q43)}8FUe`0mO2sg@q$HymJwQJY@l6&uc zi2n0GZx^@0SnP)t34p%!)<$XHfl0*x!xC<6gzJL!o&gV?h}4Qqm4E()7o?1F4~xSZ zo;ca%QX(qHKbQiZ(OIo@KxIujqC(_kz4F&pg;btAm3Hrao8qD!6wBfbAy6bA{OVV~ z62~`U$j1HYjxB5-slTf3{TK^Wtl^iaWf?XsO!WGjZ%|fFHjCUeQFl5zv`q@1eDVc8 zUy|s2+qUfzHjIvT46=m!Pu;!pkv+^GH2_hvr}+kB={LW5h;@&BxcOsrK>#Ht#z74Y z$XI!p{`99OWc8{^b~xgAB?o9DGZ*}65Y6MUo^ksJ<=X?`e!&1hF;PI8CE4kCMNgP? z_#%zTrAGEMww2R5))RHIt+jji4oXc*pn`%z%FD}_G%wUtAcF=KXR1Y-N<3A^kKFq% zpc_39vncnJY-wgvCxaL|9~zk>Yz9{sfc^4IFNq$QnVH9`O0fVDwL3d^>}N}Sw>b9s zv6a8O@}mad#{xio5})OPeWs_UpMLnmUxpo^!xNx7yk@X`X-9>ZsNDUPi6;Vud3>`SINBZ^QfyO|{M_jdPwK$Sh&*{jT7q~)_1I zFxzI+$~3X!5y=4X05JIBE@kni9JDGfZ3TQ zy8hy`XyMZ3bk>6ckw@=k5qLi>Ted*Lk`F%k zf09)L&~$fqg&o4fo$s|)97^Pa<@|c*u(x>}R7MYyEl{U{k^@w&AtOgMTi>v8gH#rx z+XC7pBPoORylOty8Xm8ILmRb^3kTMZ>%{0g&8zPx%szMj=tsY#GtXQmll{aKZ_t)4 zJ9PJlw$~YS#KA$Y1lXIJ8YBS$PsIu-V3Oh?J(~m@TcbS&0P-S>AgPhy&pvb6WmGn$ zoV+0m`GyAR(Z4&JO=W`=tb5)!VduCAT(Z~yiK=?w#49|MNRJQ%duVocfDIc78k->~6D zJrUC{jDS@SRHX117i8&ac z#OPtxQ%ocK^0Me#kmsNonN}9p%wz#(ww`9{JNPywO7(OVQPUbD)inhwPO<(xAN}aZ^soQ=C26V?)C~uv zdm$+RnaoHoz3;yJXcOy*m@L##U~>NS_>+{<@+K|q{|niNI_b{k(Nqu@pdtUTvhUaT z7AcxoLf4)(i{@km#4hpaVN{dNL7w^@)N){pY~TzQ1V~ipf$OfhhH|rWnUVI;qDAF& z+t+TCjPRkMfv~$tnx3=DfqXy2v>$)`ceH8KdNvNSrS=!rEF=K*LsY-Poz=oXuQ_~J z*b%_P=cv?!MUCI6uBR5gceOFe0xC*;eEeaSB=bH=;QQDaP&XJ};z4_&s_M|?Yu230 zmKxTC$qfAteNA3@Lr5fmcpXlv zw9}ql+vzW%BAPtIMj7!YDoXUy?JJV$&R1M|6d@!|<27fWO_R%~^6U-Kz_vCD^s{be z);8}$idS`4keb?el6`-@)GEX02ZLnxtl3mtQp&$ArVB1uA?1>Yd5`8yR^4IojEYK= zd${}V|7DSUo!k?c6u?5Q36dDVv@kM|fsJI?#~*u)x*3>YJTwx5D@iRzW$oh_aQ3fQ zu>!x#`rF_BHkFUn@JRyTN9u?khY7bc>wJy@69s2xUtcdh`^?j>(!>GLm3kUBx1o#wzsyEx(B?pw#-ULV&+lrq$_Ce!D>Ed zk9;55&NttDvxvW%`esVcEuz7uePrWF?Hlybu68T6nX_aw=bFRStXn42h38)&JzKha zI_XPax}L7Q@;oVQ8a>v1tcxfRa7$Ya)VLfvR4X+m=(LKyF)%tXjsO$7DWHP`9L`9J z-MeRxupJ84!P+*%=8iZw3iKhK!Hx_>JA?V$%F4>8`Lpg115E!Aj_5HAk|PY-A8pvU z@xQQQH*VS}$(mZtfwD+7kAL~(DRdbd6Ntg0@(kb8$_1?>6n3zm0w$FARJIBq|Lb2V z)^4KLYl;5oJexdG<+Std_o$flvF7Xtz)2+wY4_Gmw5`=d zz32i!^^*7r<7e@r#Wbn3jHXU26 z3j*byxF#$LxSmkUj1)ACL6mMZi8YR5DZQx@I(32hRJap{66=v^Z0!8$kw+d`#pCTc z&443+vz-U>B3{jzNHHI_PD6UI-Xy8#upp7p2_pepCV(l>4^R2gjQ%rJs=*pYGawXj zH={RlLp|A}9ArzIKrM~+R5EFz{qq&BL)B11i(@)pb$BfQfos9&!!z zi;Dx@u#hnVKjf{q-ayw}bH2`cr!uda1&!wGNL5?7aFw(TLGcvYhyc_kz1JU958OA3 z^O1LG(R&Cg)`OVFK7DALq4r<$U*8G6})Jv-Sz_?m$B z@y8#R30HnY`0t*4>M6SIt6!!3+#K4%tb_i`s&hYliO}`X8~e(u&XefF$*|t&p*}5( z1#T3#d%vVd0c=NjF~H{tV+6Y%K_zkOJ*YM23xp#(=$L@T3FcI~pmHnWwTe0C{D1bY z1t_ZP4FBLFuUc6WgPKT^CTcY5grI2DNql6A6WcUnGM!{yJSK_?AeO}WS$+SfRv{t(&*_xQBI)ToaGe@id z(7z8KzA*$*AM2&^PG)4sQg&0&(tow$?#-JvDUh3)bht(ZxRN-%$J(V{srVd8T*{8}ej&#e2*`QnGa^cuzxeHWljIpfT#Ls+cK_ctXV9U^O>2MZ-V)f3^z>sy5M)X zJD0%1{iL$XXOzjD|chB@|3DSPol`z&do3aU&j+ zpH7=DeW0f?BzGh~UlkX%+G59yD7^B@%ec0$toZvsq@w)1VnTg!I$bSnA#CI8+Xi1} znL8BcOdN=eTn2;d_sRjUPc_rrD>O8y>uG%gHSlTeO0?oAx^=R$vUcp;xpPi!ZEdOH z2kbmfyb^c&bPmJO*L3K|c<~U{u3INFrcalNP<+|TkLSvE8iSu0tkT_=e6&=|Cae7N zDYFFnRY?zPomAI($_rDcDxFT%=aNN+4TCtJEj9Ix($wrOb6$Q{mPW3VCg9)0t@Q@@ zh75UJfr53m6uXXUO#WB!wfQW)RMdnS%pM*+Zm1$!3Ksh`lieBj)#BF#p9VbbUrK_K zl9EOM@4cLyoWFI)v+kAv#FuKVtE-#m@9&>3-w)NfDM3K{qFH>-xG33=6>R+Z+PDoW zj5g*GUkM2`i>Zg3G&a;pt7W&`H|90*^Y>TN&=WRpyb;JhU35nLdwIzd4LS0ZPma`& z@shvny(YcA-EY+22K4Q(j00NY1h1wy-YMXsP%HOyhaU@;mxKQKr}KK z0_10F4t9IiYq8BB!OeI$F){H?=(z`_n=Vs#-54`++42G6_H{=Sj+B*$FFO$mI1xS5=O(>F~MI80cNj&zc>T2_hd)C&fS#e|p9>A!O(K2PiSgFYRO0LpbY#V35D2ThsLyl!7 zi%*?N{?oUgvXHfdJYQBKD^jmYzcHTjWB|b3a#iMqJ}8zARnpwjHo=JbdvoW`1xS(s zkO4An+Rs%Kqbml7W7hLft%naD%#)29cS_&Bfy%I2{^_S`^a35qp`oEF^26m}>%wnu zXz;r@apFW7Sa0^plP8nJ1y;8PAXw)dK={|*y?d{)KQtOBTBZlVM_rEkAeHh96_w&U z=sCG^C{Y2>10tAdRi*VlA`c9evnNl<=FMAf)Q6~~R4Dp+r^;kWqr1eu;wcw?JXS9C zn*>8iF*>gE7yM?JwBFW&QeX^7Yr5DzSlWHJ^lG)W&#i%*LBcbHg|=H0ri*-@Yg}H#b6D zY`MF@911Jl1g)sRJZy-JQYZJ`FZ8O z(JI;Wo$d*W#>NIYP+TQvzda*E0ltY7CaPRKEzCzCtX{oZf`db#39Ls7BF!VY0kI`yI^bL^6dYPG- z*%1*D&$=S`Tm^tMNcQ0XR&~_)TlIei3o`SUSt0!b`iRxtSKI?fN!f*R<7^^v~1nFRbG7YC5ecLQCZr~3~bTna~wT-Tr8G+ ziH?q!4?kR?datlp9G}0xp`n4rLD>}djBwE9!lEm-f1@jipU-~*%GQL0gk@1tQIlbW zS;R$`$yGKAz2-d_BrgJJ4>$s$*2R>r7&eP!VEoj{Le)2>tqVZUo3freVkox9UA<0CBpQG4bQakH6{X=a=29S1(^CpE9X~ofMd?z?-b7sOZd=En8+47Z)dsi?1J~ zLn^-{iY=y%-^m5>_Xijxk?plA({wokgqgy0U+9azyRw*z=O%JXzdyas*j6y_qk5=> zhc8sE;;hzsJJvI)EFS85EU4eLD_!E_lWgrTI9IQw5WssIhRnb8?+XYBn1!2YB}YZ@ zhG7{e>wlpSu1`rxVJx@2yMZYzEKEN5;Dfu90c{3JG}vecm~gD4j-mS5Y4i!w(CEnh zp$C-x^0ZmU`roy0cEo>229Ht&Mv;+UL3bM=0|q>V8?edNXRjx8&Wm8IGtfVaB{nue zwZh<7RCXa~YHC^q@cj`Wyd^>O;>C-fgY}*_o6RqArtrXl1FQD#-TNo}EK2U8Wpc6o zHbWG@3vrs+(cbmeZD&3>eaC_JK&l5Gi^zk6M=Azm?a7GY!{t%vY1K8=^6|%CD65#! z3)V2R>%ax*pBWjs&?PskgaEQ7u2+t~V;%q)*U|n83k%=E-!eKoJG;1`pkOB6SJ0gg zhq~$A4nT_c9FF+}yS?QMz?^Xe+lyC6zoQu~X0yM_FXSK_8U}Ik@iK4TJQ+K7ylhKk z&25rQnlwSyt=j-l)=JKPi|pC6Pl;k$-w?G)V7+&6t&;ZkGk^Ykl?9ExTmajT$KQL7 zT7mtb=`@^T^mtHrPPeX7}`<;YQ00f*nM2k^qc5}$RpH)cMw_~>3(CRf}v z3#y^xg~3vc>FRq`rvs~%eU6z8+=G+7VQAcM-&u>mV_cQ}R|q_oNYXdQ+Kix}r_^gK z5GSjp@7bd&*x0q-Tg@4%mx@c5Wnb0-rR!n8+0aX81IT&K?2(S=dj){*uDWqBNi0C{ zO;;>j0Ix@^>7?=Fdjj8J`|7N;oXcK3l=O88UW+Rk5_ITrn)nsl_HXZ zo0lwEA|WB8mBGWz8oFTEZR>c!35i*?ijLxDNP~~?Ig^|P-@Ud>F1+^^9Q=G3B-!+K zI03#&fbVB?_TEg0trd9fp8#P70G5X9J;E30H{@hax^z-gQ)L>&ERzv(a&pw%Uk;g} zTV(3g7ho)$P|=FDYu2dJN#-QNcsL2&Z5FQmwE?rckO8^CDu6M3z;E5D*LREi;Ig>;x{EFMfLHEjg3`+T)cR(>T*v&asVRPks_Q~+MIZV{X_%o z;|%cK-3+J}bgRWM5MBmo9%|2mg{VFRu*N%KJSE|A2<#U^-HwI^4G^aLzxwK{D)!1I zN1RMf_T%&D=xCMH${vT;uQy+yo2WDQim~nz2DC9(C7A2aod9cl7g#l4drl@~$tJ^L z>_ouWFvly<-M}seF)=a92(iUyld7t!#v0(e#~9FNkgUbQzYZpv+)mic>3%5RSL3y@ zCs}SI3=C!?vlf||FzM;(D%xUeqgDsj3xmG5!hq8~$bcHoXpjJGO^!q`9zIT9#|^Ca zxc&RdgyG@gs=ADfNAOYS1L(8Cde0i*GXO}@X#p@I92q3g>Bc#84gB8o9v&XU>{*mf zXj-{6Mr@feEnvNHSk82>SPU2$0MrbUZ~&szKG6W6VH(%N9a0}y6706v(RZRXKcZ^} zmhB0!UMM~*3@;^ zZyb!8Gy^(@5z?MP5)a+%H!w&-^)X(E){y{V2K2Qkyq*l>;SzuufS-@`_V#`Q;2hW< z_`s^?Sr&lzZ7?8X0I<_lTU$FD*6V%%?0&mq_WL1b7yA18k|nPLTqeDkbp*b~#>Q=6 z)pr2cQUflA2zF{UH#Zjngul~^PX|CV*^hJ81CQ>Nnwpxoah;b8@EHK?@`AYB2JpMp0B?Iie69qLegPfs+m1%LYOjGgs{z{gVQ5UobHlyj z$~qw1q;-d7wOV&wzI-_ZPv3ySF#~$xAnJbl2}#UOX19L)mmQ?e{GTm(anuXP0AN>W z)!kinXJ^x(Zn7@nV3z`P%NgmQJBEHgMos{}Qap~~&>L>2dhSjy?tyuS_saS~Qu2*u iECYbXa*6d{0R{lAk|NDgN0}-B0000!O36f1=y#s2Ag z?>FCfXEK?|+_^dToPG9Md+l{1-zmx9VN+lO002BWSt(Tj09gj{;l)Hp{IXhRD1!LH za+1|?1psge|9+4Fnb~9j08*&6q~yDIR*vr-U9B9QKys3jASV|`n6;e+0N}X{|0-&$ zhC~*6zR{ubisH~X>>2ebkgAB7g5iLXO_%s20V-SY)+I|+VkX2#tw=zq+5O-hF==$O zz!BpIBynK9Ky!0ca8PuLKoJlq6k+Kt5Z-s^g6Yxf%ppQBt@n}~Y?wNp#^~H2|-HDTaQJnqs+XAMcDSMf^ zEvnBj@8CUNi#uGGE<|6Ioeh5v*f8Y#Ld9&{Ldu!x5dT@?nH&FBus^bS)=`sY;!uV9 zNUe0DExVp-{r7@`0xvX6HYeGx03DV;v^AZ9iji&0LScJSd_|eGY>~yqUldE#ZKpR@ ziYr}1&qI&h;yzHve#kZXfpzy>rf_2lTKHhV?bE)NdwI8_f1?Dm-P--c{Sct#$Y{7N zSk;t%%U#OkmLR@pbH0tnRG#fUb-wbH74IQBeDa~d_Y>ur=VkgVTk+XF5+#$1T-!R;QLF2f)i8nNo;xvj(igAcxAj(FvvyJn<| z1MJnhn#gi2WclKTbfOfoMbn-uovmY*a4e6ry9Z}F+QQm$pH^>g9_Y2OvZw(g3-=b( zd~oC<_qx4*y!!9u`71DD@`tk?V`x+L=WU(_TbPM6AJ83(6>;UZdJa9e^EvUq|6SgB zlly7;-0|2(TRVFf<9Ruij<&Y8u-r!XR36nsH;ZNN^_HdM?QesXat<1LfXvO#{{Dx@ z4*%AlM#rOwTV2deOia!VB;&5^3J2RhTz31n-Sl3qpb`|lLQbfqzxYWh>h){r@q1O; z}A)(qmesK*-h;t0!QtrC){?TBE&Nmrln7h*4_`yKzn@V&ny` zgBWNfIv9I!D}ED^d?b{@-~OrpKHLC|gY!1-@B4SMe6{|A;lgC?pO?>D-TpCeWe$Yo zf@y?Q1Lli|iyOQY$Ue8+J-7Wk zq)EVk^Dh0>L7?u7X#$r96J+eh*0O;3%Yh7&R5~0SoahovMyAyV30Yb0 z3}_^B(zlek^b8%8v9)iRHHbeGtVOK;&8b+)rhaLI#OHK?7z-b3q)cbw0Q^R&O_hYi zGR(D6E$8pBSSLBIPMtpMLS70Nhe?P0E)=Ufr21+%7{v*IE9k@`VNMj09lB^y*RnX8 zIK#AehkJW_x177G-E}Y5!^DO#k7W-|y+mb0v?PQ52v1mpA-RHY+bt z;*|uKo7BeDkp=Mp^hh*VayE^!Gr+1I&K#eEh}=5Mp5ET1e&nmjns0wV_jmrx8e-Ft8T75Hb6OCBioudIT(n7X^QDq^XEm;M+&W8S9Rz4j! zlkRm`%OlD4e#HhMaY9hKdtKhQi4c;I#N$#TTmRih)M9lsmekzrQT2N&vD?pSs=nKU(z@#Eoxdy8+nZ3B zS;s=hRzI)YjazX=z{&wG%G_)T=@I(`@v@#@!*SV@KXW1F#VlX$Ljkzy=kU_oJaEx@2a2nhQy;s&S1|qf7FkuyHI_ zpA#94NZLu)xklZT*ZD=`<6tgzYMR6lfXVa7w&~%)*z;!h>AmZX{o929c0%ueXH%fyi`-%hKPW}GqVfH7^EOR?#nz;bb;OOVpJN?Foth42dvrm3& z^BySJLWhBZ7PQd1Q@f{W{*#+`WG}sMOS%X|ji;&y)UX=$CjRaSu0i!^WUUz~r3iKG zq9}25qFi+(lTwm}Ki-G>jT;U^ZRt8iWruIg_#`dG0Z6P7)y)KcK6NWO4u#9spBKV| z*#%A@31UD(d|AlFw~)4{9LM!@57IN@qj3|5I^L6KTR+9W@!9^QpBlV3uX+E>#UM0DZ`!PMP|LdeyS~Qq>=_nZ=*5`+f#HQ~6Vf@%ukQ z4Ni^uZlU91Nk8nmFi{g=#ug{5P@j6e$(W;pzU3Gk6JP{4GKwjU*ci)s@#{JE4zbfx zb*pfYL=jIBNbSp*pXzu7p`n4U{L4nI^#4sO0Vd5e_3}BR3iVf_^dY5Il{ls-0NKE| zS6G>c^gy9NRW3}OXc3gyux>qvQZvruEi)t4bcfiG)R|dM0JnUKZ`;|Oqn7;I+}ZV$ zACa^_N&rjX>a%qFpb0T;IFd}daDlojx4=+Lp_1AunnK3gY8BUdK6|IkjP8)#x%abz zQaK-24a-OEb-AcamS<;(zG4FjfKp_*GkxLvGm=;Gb)KUg9*Ycrc^P(6K~972i3bxS zqeI!8jp(zyq{IR)Q%RtN*{RfX6EX?R$+|!g<~wj7e)r=VL4-0Tl890Y2;N?_WcR4i zw)Th$`lNFXaVZiU1DVR2EdQYaz&&gD1)30p8*0*7Q) z+Lki;fVIed((9%u_nH4|dRF|jftt3qW`Lw+0}exy6#Xjc=?28lwP6b!Ak$?In%h$e zA`j*i+>a@Q85oic*^OF7;SZ5Zngw8yg&nT02EFNAI&sMORW(oXwL)(1La|o)n_WSs zl?k{8X7?XA%grlA7ymhF)9?r9%h4%&BCVZ56!fPsGFBwBrnWXM4<#~Fnkg#>OA%O7 zD1>uaSQ#aN6HS?C$&JcABT{f%MrHh~e4jIF5xo=_2fN!8+jgm;n>&imQ72GV6%Q^z z7cEA0M7LjiQWoa{-v(}_*Xc7RALqo1(o~W&k=U1H{x71MuQ@laH&n~#K1j=Zkq6W< zO5aKflNxJ+0Kv=yBhs+~d^tulTqhQN2~#5>K&Ct!;-C5wN-^qud?6uRFq|YZ+_}De zm!GdKx#apG;y~lOk64(A-?KcjLqNz_vy)x*nGVY_9X>b>ep<&dre;)HSafrAQz=9t zoO^Td-OIcVRJMPqoM%w?MLVTU!*Z2i+{O4z{Oz%9V#~Bv*6^q_0ey;!EH_CZv7~H} zY78^_j$pgqXR=cCLUvw)!HCMbBno_B3ASyAD;+uMaoI`d&!9>@SV_4P1B$VJZCBXJ z*g%ec}BQ!GxlL5ksJGa?4R7t+_Kg#u_IOd$IRkh$h z;kK6MAQp9C*HlPU?T4HY6qWcQJCOtvfNeYwp$5W5QU=-XY=ndr1wvE1jjN%FuZwho zF@eDGuiswUeK=iG?y_IWGP+--?pkvgj+&=Y&je(f7SK75JYqX^`G^4!7GEt7K$Zf@L9C0C&f3L-koO_8zo@L1kOH~nRJ|__K7|Fw$64N?>oM}Ssg1Obw;>Ylned9AW5Z7US>#Bn12V0#_e|jUy~@Q~ zaNLBnwvO7tRZQfK5=2AtI?TIkMqYdP-Xnw{l*L`8|)x6}~vb@}zMlQ+!L(z7+ zRSPM3(8ttf60`RUG0s9PHC&kc-^%8#$8u7|l<;Fr`=j!CEJCK7zRjf`Os)gZTM{?$ zky=lG{AuK0tG+YRViCSw>GI!y{xY{OL7r*t-&!g9OcN84%G4`0H%v-${a+!GH z7I+(J#SCv$c_O+$#0F`W|L)w~-A!YGPg=P zC^?inbI~Fwkb>AIB*0bx;y^AyrjcCdhtqwe#irTHhwtScPdkuLZ+=HlP}nm(J4eV7 z@W;6>k;{+tXnH~B=gnQJ>A zg2{!SJTK<8o+hh|E>hEkJ@z_&gO)P;ZL|An*gHzE_BOn(ub!U0jro_0-Z+FH_?tu1 z3V)++B_;KcmwO~pj#dM6xGJ`FCdrHZduv~1GR>sB7#`9-lSlwfH&l?@D4s>81>APu zpgMX#h76(>jKUm70X6Vh@B=UlS-phHcjUm=^}3bUgwvPMp;{l71{7tbEN7aq=Ke?; zU3sn)?v-c)H(zHRNAK@;ZHI5nPYwul_P&;!8}kwWW_n2b%&PP_ALb1o>-usvY`rXkVq&1iOQ-$ zlWah09y3G-SBj+C)_9A~*(D9Sm0jq-?9a!;OWmY(*>lL`G4#7z+T<;?sgpU{Te}k# zbL%Ijn%KvflA!`zVT`k7u*MNw-0;IqI@f*J;Cj8erR7a&kdPIJS>+03u~TY zv90dPRk>}vtG82^^~J(-r+=ic7Z=JV636A50CUapJ4Icw`<1A|pZc-K<-l%*0$4mNU~+RSkc%o*o%2bVNn8A1^9Np7Q+ANG>sN z9FeVSv8jj!>w#lAd49|Yl(-sPTTH+%x;)y}Ua~(Gs3gyJa_9mQUZJx{>T2(1C=R~s ztj%0+S!&3%i$0l)suOuy-(kS2=7Tz-SI;O;F2!`%&$mG_3C7C7gb^@Cg9rtkqc7G% z-n6~>X6HS@LrG>=8fO2%-+&r{6ptQaV{0G?cT|MXhMZ~&3z%V+$MPxpR_9Wh##Vz? zKZiwTyCp8N*O=@x2a>O&Ci`8uK-^O@aEoH+;Wk@(BbI5^oNGcN zSAY{5HSC!kHVxh>{YiJ%`E+H|;BC%HcJKW-7TH**48HKy<;qaaF>#gab)qt@6f3tK zS<5o0ii~s3r`x0lYZD}zs=>bD3IGTLNwg-{9P9n~JV~2(ho6O!JQV^L+it*Hh| zLcSWjbr5xt;8@g(AK3mAILRLPw;UCV(oL1$O+#$<$~l|g3*4st7RWstJz`ngpQ867Ct(2PRVzg$i z<1qGY@EjLBs;2fcpJE)0@xB}j6)eN_)|Jm!Gq}6Ecc#VdGw)|7rq}DK5;3Lc_o^|k zPpP;1N60dJ;v@xHfNOR};v|}Xkf`N#H(`M^RL(eC{zIVtH%~ z3nkD0{9~o(B&39E313@RccA0>7uuNS;oE6D*>77EK!LEl*h)F2gwkoNd!zt*+`gxE zo6!g0AoGb3YEFUGZdy=+6*Tk5rVWQktu?Y*vX*pN5J)_ejP94ks7;^jr#kYxAOn}G zvq-;4?mH}iJXb*k4W1x$8BcS^%dvFM=FFLDKa<;^8Icw8X$oS8 zyUhaixg@$ao{s3{KF~Z#4}`ymmwudBl=i}d4caBSI97UiyQI*`C3WeXxW6O0V)2m;tv#gjY1`YFCLILaueSh0b~*z5D9&~ca++6qt>AL6fAWZ z3Y}ZaJgXWV-_BGNE}Y4>fWTc@4E#(XIJ|QO-n>AcdSumk09g>dEHDL`9w}Jd`({{> z(abUHH~YDtjSU_%OklF_@KfP{#0ZB|TLLwMu)OY^uMzrk&Msja0~{)6JAz(!JE}eh#C?NdBudZS^ly z){`lPL=O!#y>;G(m0dqSYWbW!)bKkFt)CEl6)A1TIKa&0MQm_=XJ7IX_Y<&7UJ&`DcgY%EfENp_PCckKw zcMM%WP|mv&GLF*cH#G3l%LTc&;nDPiM^$u0M!Q}xVNr^>XXBH| zmLSSvZ@d@a7y6QI9){Jt2Gp2hVbx1%TCjyqTQH&J^9Q8)-OO25QYi|wQDaQ-uq;?S zGH?<`M8Hwm-b9%nYf8R>Xy78tM)*=;?at7m}3Br-eenri=lcqVKd1uAJ7~7B=UqKDd#*D^)5#jY-buURsJEvM;L7Rx*g%zIl$6 zT~MHoqT+_85g21!sv=gHu=ixrEa;+MF4VS9D#6Mo1AC(fMGgTJq@VvxBr6xe+n}?; zySyvp-~7d8U-ZE`>05FGe2VToJ?mEy$S&!OI4Sl-`Lb zA(A6(=%A>h@Pb<+F^(PJ#K49 zh0K30&OhCCmdc6qPV7x)?{UqcmWFILi;~L~R9mhD%#G%lj7J=$10E?dP^?WGyguJxSGUS;QFAKbH4s%Z$6!0OR zj&*_Q_pCbQSh;GL-Fsks>%4KIv+V14#g}(hS;j>$S4dBnwaN=8yL)C`G zu*u{KMHsLSig<6ZOeY;97J(GDYcv;nesFR$m!_to+Zfw~PBbAXh95V8r%)&)AjKue zMzcJ9ZW`E;xWUYf@VNkkwwV&;UoQ zh>NV)nA7{==I6Al!r(ghi6Kiw0`s070hW5}>21xj*7dr-?8}-efqzww+~HD;e?^W9 z)lmbw7rnO+)V36uKHY9B0a~KTPKP9cnaaj!x2&?v`k zU%ikFaaxBLSc9k&$8`RaMuq!93{)VE@rK=6zZA~(J1`nhr6#Je?j>@7);ZBu> z>Lkv&Ey9yfgv=t+om!Y(gy6wUx<{eRQIFPzerG(^;b($+P4;KT*H?@-8d#MQJmnNx zM!Neer^mCss_&0lvI8O+UriMI=)4Fj%g9%g{M8+xsgMv-$kaQvoR&L4h&G>KZ(^c? z5PKHfg>t6&vnE8-R1LZLNP^SJFW!oLi#U&-qQ4iNO7lEL3nSZATZJeg$5QyZk+L88 zQ}far)6!cmhSb2oOAUO=!}%ilci%?1nJl^ zrZZAZ>1zyMuP}YqkREd$AFtE@t>XO+R#l(jUz`G_!=q!DpmA*|RfriyzY;)#2?e|d zfbnXaP-*6h3&-hwvi2#%x_=~y!2oO){qtweM2ZCp8tZ_=%NE);hWlf9WTXliU>ffkMRGi+Z!^y%I-FzqFP(RQ!6YKU?WlGMW! z>3uJ#-*{!;tkZRsAB<7cTpwc4=CRGozZ&4sgaiLpd=bMZnNaH+7>U4hnyCvz96%>i zCjD@Ai2``5;_fXF$kh6>b#gz&h>Wo}i^FnZjKs`*Ryx0e%c~-Mv?#R zkkbTJ!xcNer_MD8{~5P6()dzEXEip=vFi_K*IP^Z^>N$218r_a+aZ=$Xyb6ux=p=LWTsx|6Z}(mH6IKoZYb7vdPV8X>e&0Y1 z6zL!2}zLycVyVV85Tw_^xy7T!KY<)LUFJ2;l4@TJf?WQD)YjN(>$F z*e;>{SKlu~2wAAzEQz$e+MgR#u_s`JX+|Feg>s$|z|Sj32RwCa!(jJ(MroK?rWFN8TMt76_8=)3)%JNQz$Ssd?ArKYBK)cbraLuNl3l<{=b zHD`TmU95p`VUAv*xbzmgsOxb$jI&hrJ-I{@rW%V zc`p65>iI%96v@l<`;Y!r4d^IVyfIY~m$HGQZDU0sOeEaa7>B9!_KPkKFhVvuZav-2 zQQG%=`}QqAr>jS8Xyiy-lNx64y(%&dX5H+w5I}E)^MSU+1rFDXH$v^#{RCAG?$fXB z_YdvHPwC+*E%kgOD?pH`u>;M0fuDx%zXiHyVgWV0qG0b(cA5++V4gxI{)IFU^{3xU zeEL&6{n&ENw$jqJZYv4MzB~#b@AbFlee)>Cm+|yScwv10o^fkb1yhzpE`i1P1^#> z9tPJMoo5@MkaS#0CATeGtP)jCF9B+;?;Zka_x!MR_(67N+wnxvh%Ia!uY9 zGbrp7y+B(WHnJ^`6p8%D4~@2E^KiUzLL4YuwdU}&^y}9z%EpOd@&&@zzc@z_s2#$& zI}`UYB`Zc>J-Uo%lA1gVb8Nyy=roT$zxfoJ63)ydwT)V~aI`s`NVnKvOR7KA6IJm&_m5k%sXdwmhr~MoO~8i= zCnIQ-rbIU}t`;)N>_9BNTtcz6II^~Fkz9~X1NMTm(%TP{+j+Xk!#g-!l&MTOLGMEV zC=sa=pZgor%e(X{B~X6CQ+$e2^g@6>AwaKnwHJ7C@?xklL>v<^P=yiz!ru2jO%AK5 zW<-EMol)YC`kCe^@w=Bti_yB6^2TNiHn1SSw=1~d4 zK)+iLAD+KddA_Vw_TSuq)#Y`hecl#fQp({_PVlj8=xb?dIdAo2*==-Ezu?(xC;9xF z^n1bM5O6?JSa|AYa2kjs62_u<=UqXD96*Z}iu&cK*UbP`JfOjW)Z>M4gq~vuu}nO* zWP|FG>D&O&-#i&wPW&ZsQ#MxhVC_si$h_GsV}#IPRigYUkdMTH$z zT;nb<&|^U$vZQ=2Vz$)@c>}vQZ%uG5j6VODbmtQg{RHDm%{vY7?rywP)F}V9%P0@T z%*(BT6N?aEDOVV4!Hw(nYn)F3;j41*7uW|@QJ!Lg*KG2Mz#_C9$XvtDoFXEz8HeCz z)veRE)83}e-)z3ydK(fQ(_*_k{iO=4qdP?kdwhTXyqD$WoE?ps8LsoF-A@jSfR`1k z=X0t!)@$AhL9xuHl!E9+FpU0`iGS5d4Mm_?aie79uHO?h2ywd1?kMYyM ztQD4?q(#8O%*QH;9mt8^`GNGEGak}-$NH@oTNQk`h;=@1B(6>m$VE7eTWwK9o=BJk zLNx(0hR1zU59jy6S5j`?C?^Kh={O-wH}=rUjQmE|i+IHwI{f*Zw)3-ptwlHNLHk}C z2o>VPgmd=MSku~UVnM7rKH%WWJE9Lb<#$!*JV31V{brR)v(2FSOSIWg9Pzg33n5S7 z!}d@$uL~$2379nAm9*s4qo!qI>P;&3uE&Y9d*7jxeB)-1A0HKoQHVNXoFAeTGWfv1 zjcP57fA@Y=D}$8*T&PRaoP_LFk*qE;VoXqZY+!3G2j+!%#Po2n z6($}VVyp=Ti5OZW0*i>8gks@Egu^A>X!8{IrEdw#X1@G%Kps+{-FH2Hj>FA%9~6-k zg26?WNa$4wM@QAFkJvu1CNBRJDA$tHqO@ zF1AsA=mBUMx|8QRpENAid2keM2SipcpOEmMW4!bQmY0_!K!xz#JLs8MHUkaIJed>) zPGq>>T@y%^BK))+<$Bdalm{Y|6W8KwnPW?tm~rmV(B9vOpD08Prg-uy2((GSN9S#Y ze^v-I;amU2Db!YxoPtK-h7kuUBud59T5_Uh!j`M3W3Qh5l)x=VzzIFl>`P(Rh#D`K zlvT^Y%i+aVa1{HgZ!(Obq>TKFH%8TXh36gC_-^7S`!L~J`HYXPhsCosP2&-M zbDtNJU*Sy=ztar{;rx+6KB!{2ekq*v#_5d_MoaPamzV1g!5p4fAN?V(cMb3B$5@71 zZG+REwoCd}*u-o9+C#S50IH+q2v>xU?}oo*B&vNBQR+zFuTgA6*FL=FD{E!R!X>E! zqCXFBmQVQHj~4^`!k_oKt!*)~8({SZ5Ix&cw+Mq7J181EGjl3PUOGHbYzg$}`U6Bu z1Kx%(M$ww1Z@S&>w6Yha7{lo0YLyA(5fX* zBV5^&$!nb&`etveR6M$Tgw0k`YX9OlLMC!-c_ijoJ$Jl5#xz8Y!w)xbQ1@Di@3Pnr z58LcX^ZWJo9OWbEAGgLiQ7F*VAJLcE1!1l$N%g>Fr7 zs$LURLxJN8A{BwU#=bm4I52ez+0?LM8xvH?H`x^myi`$m+;QV&gi!9FdB!eT+dM-q zGfCBf@9L6}D0bfN^p0>zm6StVaZ{_WWi~0mck(pH&$#ADK)(`Rh0%d8xN8KTaZ+K0 zB%X3q(r59RDJywSMVU(S8B75MQ@=)}U=Bv!{%rpfYk1!N184m_jQUf>g1-FLi*!Q9 z`66D=+7pAHvyLmj^XUa|MyLGP1Wh-@StoBEZPL1Xw?@!tmvs>gp|8Kcf8kZ?sIqzg zK@99@wv4&uPvR2?T&iTQx8%)(weRD_Cm9~9kHoJ$bHh(onhKZfXcg5UPj79joi4M6uOjz_V-KjkqXjIs6B2m*o8d6fx+zdH~|>_G_Y`5b-|`E>kWPsK21xa zfi+&vZFNyzMeIxMm$}wLD?GS@BM-BkD5yw4C>NECsY~rgxOtZS&fN-SoWdfS_$#n} z3yqHeRl&*$GFjf*dr)1&QewPVkD$K7dgOz@JpC4(LCFq=@nlj3z z|8?5N_;F#0Q-fVaBj_9n9>s-A37)qc_=zWMj-JMK$#E0Wb%no@fo1%3$wT&tRpk zdk)=n!8~|Ab4S`{sf7J;=;izJ}Hb^lTVG#MPyBDWjPajy>**1@w*20*hzS{BeuU`M^6pT|V<=T!X z7Y#dCDEig-DsYJdk`>cak@#v-HH*BA5}?>*3`lIz4_bt z`dF73ut#0R88B&>DtLZA46_f|c~&@Q6BrU7SsZpo4rzi(j*iE)w9{KfY;Vc8A5Oo} zv&=>bWGYGLbvcBVPlNP;W?l@Be`Xlv7BZYh&?W=B)6%e!|47F64G|o#pNeA}n}B;H z!|5t2tXD6@p6IUF2L9SyqM2&6ckUi35n^N;^-zm>X)g7 z-`{Yac3vCuP~hEkK1JMpLcmvVzsM;T1(SG5@O~23(B!a6HfIVqZMG_QCX-4Tn$vEi z+pXBHix!ea3LPysDrn486+Q&jsf-$qnL5A|91|Fo)op2qie=hdhQ)~9SL*0{$x%ws z%O>+yD*>!fJG&uY9E>@?3A7NIaq{@5C9{QzWm3ScI59T`kWbv(wD(WnnSI7XeM5{* zvbe)lrXZ*qMT2J6uy0tigyR7lZDW_?)t7NfVsK%tbx7iqvP1 z?8C(EKKGN1$rGpFyqW8Ly@P|a;r24|yZw9pFGsX;Np7e=5|e6W;^%&@s@#^g7s*3} zH^gU*2B)_PzSQNuizB3i^Azg_90`$km{il!N0Jj3sDHHR*C`>%(l27x07?zgsed)- zQ%xrimfhZ3LsrF2WJCq?XqR}sq35yXIeM1+Fi!Hu>w@6)!#ndei@oNsO+d#w!hyn* zh3A=zK~rR1ut4EV%PEpi6ROfuB>5Fgr<91dPHiEASNKB@l-!o*-R0M~uznfhK@Gs| z4G94>t%QSAj!z=ysj8{6K>;p+M1s*glLXCsKju$j$fYYUMA$ml(O?z3{#<@!iBR>h2xI z&ipMDWHTqA9|Fy0zWkV0kp0r$(xZfBN+tn@5*Ml@!vsx5(aPU^PyO5r&l zktObvb18u3pf%i0h1-npL!k*P&~tk#w_Jn~2dor$q832p#obtz$VJ(eK%~xW={z1` z8oK!|g`gl>>{!7JqRbT$c!<^O1l<0PZ;%omg(HqBRWrDp33k20z*dzFL7d|751^O( zYV{3x^QMT-#P@>YwmL})HF9aF3%bkEBDX0j(2|j9foHfFAiH* zgrt)@-;y#Q+LW#p^xRK6n(oKXXEEYGsbA+*EliwN@^CG=f0_gk1!o^i6AtZ>K{k`( zK4FTs%t%^oSpQ?j@FYNJa?*dRI)otxSIi-dC^joWStiPb_rMOL`Qu9nFK?(`=M}H- zL*q*I%t^tlO}Dx+=&ONV@OJK}y*%I31!K

k4?UBUO4Na<2*d)gRB%&?k!1<{(#xvP+TyXQ3+F+G?afm z0pp@$M~{hAN8zKs(T#mZHHFGiLt!9)t0Fs7su`2`x;z+JN;Z{!G*GIWliNvra4yx~3pW ziDe!sz|uyc7t@72o5FLfJ>&ZqetKv^77?Zc{~CnDHv(9Yxfa4N9p$3x#0Y2BQsJg` zA2pkV%KZ|4u4}8{E>t)TBHvWyEc?LWeI8wHIb|rjAiZ(%u2Qq6w$WV^dk$(8pIpEk z#YsisT9e{pu>RH4%f684gz8JQo4iVPdiJM#%gnkLw|Fy3qf%h`0PhKN;O>K?Jj$!- zcbPN{vCDtRWgDQPDaDkm`-TA70|gO+fvIK1I?-Mv#K|9lXZc$=h-ur}kBA3RY3*>$OUQh)1oadBkAI0P(SZRPS9D%Cc=d)Le;8D@`+__tARnf zmGhshDoGJdweZ=TsS~{pTYWjAl5t=j^B(IyRzi}Fe8KI&4rKqrt=`gSH*{%{^qH@C zW+1bvSxh*MtVvNk^&656*oND`5f~H{0sD*qm%sc{4$M^htU@tuYBG#yxALsyNPTRs zxQ^zn^n#|`@@R`bnY4iC4W|3)I!ZX^(B9t92}eJi*Y3vxwxK`NQ!P^psHIi#QCs}( z+%LUF5FMGVn<*Zlq8o|;E#AlMab)v27TfT&IF*F0#npF1Lzyvj8e!Et!S2!@oy}p% zn9bhvcig-YNO||~`dxWt8hb9}* zC0Rh|oK=WsD-LC)T*=`ZA0QY)L(fuDrfwPLD=yEa#5&lNJ+(0Vk^BkG7&NVbTSy^Y zL-ScRT|E*$cknSh{!sAl^dGy+0O9jkdH63vge7F3YG_G?R=S%J>bKJ(ZMhPt$p|dT zGBtV>ViMnN^xBSHGA6Cd@?a?aUhMy9sa~#eyxu{%@n^mX5qOEkhpm92+0@^Ie$Zm! zB-%JLDHT-O-f!QC{+5;*8RV=S9NT+Yj_gE5=k{?^`Vd>j8vD@+-P1akOzsvaF0>$q zjWGuBb+|B@u+LZVV)ca;`(8aUb{e--KnOS$i}Rx<`9?db6P%OnqF?Oe2R3o(q{clv zUo4~so5Sq%j!+nxY9YB0OR#iJICO%m2Ovz_M61;y-yZ>xDucF}L{OziiMN%R7Li9f z7l{#}u-M|t5Dm!ywB?t6Ai69@+S;CFsz2g>Wn!?e+JLHt>oO6Z;r9f+3L11E+}U6z zgoj~j0q4gk&TgmsT8r?=V1pR4bGFYgR0J1c-Jm>Ki62<%Wi;2*_O<+e+xcWhNJwae zXrG@EOB@f&P79VxQ{op2)7Mmx>;}efcT&OC#XmIj+&5Ho?-WH@J+M~0Q9Cdoa|?0> zDu4K)=J_)}Jg*@v*@6z9ak!)Kp~OXpRZ$HW9p!zSL5N8NkK**HaO5H<-s-0%@K2R8dSobK#b=vLXKJyW*juZS4@`scl)jE zuTrsvr^eK&q2CFqhRg}LP~;ko$|j*MvJ%-uubUl!$I!F9RO8FanHYM$+?-XjB3?R; zXGPm$vPd+cBuX^48lz*di{eeQoUpw8RQk@!S77S2r-wLHFeEW za_K>Jt<<(?aOi%$&cs_gJMIjkv=P+qZcg)TZS+xV^d&cOz~V)FG{Vz$7g?J6^x=+V zpI|D#SQU2&Ux$D7U|Bj@rO*8AQF7Pi_UjGJDly^Z+p5=%s2u!5BMM9243Rn< zi4B)kzmrzZK5%x-c2eqOv)SoPAWmQf9kp_NSvcxC6_~tutG4j6uJK-fll=O*Jr8@o z+nQQZaZMn1ilgo7tlB6Zt0*BL4EStbvrWMF1~YR4CjKRf9xOWwol5hGN>N1wrO(x| zI1sh@>G2MKh^u~Hz-0&1rhy^?lck)63>Tv$1!+t?b(>xl^1Vfv7K!smoV?<^awZuX zqvjDy#6TvtK}wla@#76UvFpgM78}$;VL?@ph8P)vJ{W4tjLGeDTHu~0Sidcmw?_1n zN_XMMOQvF6D|J!V*?2-@GUPZqzzjSu(5~<{n@1d&iG-(41+9FgphaO3>?>`}Peg~7 zzamou-A3ipd;Tow`yYfoDQ#?Q%n=zlrPR8BgG_*4QdVqA6p7v|0IehWp31R$eaXU+ zbF-v`b5|ntr`O|Ya@ybZOI6Jwp9a(NI;2nl632orSI4f4qF@Y;*dr;3XTfVclmExK z=9vwG`@+iS{=7p(ar3^{)RY5r)-U25Iq<0Cr3Ipig1Jp^;+t@kUf?$P@iBJPcHm6u zPNo~7=*l-mKalDNRO&T;S($_`NvRN-*xTdvZ35-NQYwhHtovqnAj)E^n{ECxuUw3& zi>PhtXJHYAHz~gnN1Zy)9Ayaz@jM;yn^45Xl3dCP$C;U}TOXx}rBu__1$e(>8KHfI@yTQGO z{km2j^qg#pEJ`+1YIjJXh)m$U-Hr3zr1@WiPxR1sau_ge{^+;SmETjP1m?B=>#s^B zM6o4W`~1E&;vM^m5z3EEh|)5uU^a;ku3kfp@FcJ|saVmTjvB z*bq&+r>l)eN`!2Jllm%d+cd(CY6wv;J5vQmAoM#b8brG{CNva{m7P6r<4jUM5LS*w zBc;N=f)HHNTMo1@{JKCv?VEUO=D-#uC?(lf5Od|Gz@8)Gq(K>$$EwqdQUvybeZtrc%3ogcexpH@b^47M1TBsjJw zfhz(_BOaP!^+2CA{e=7#%WNN)&IwKq&4S76WS7M+Z7278X8f92hkgwMaRFR9mX(dF zDRqHY))TU7YNm6`$9I7!_WHh?sAO1WMbGz$0$_?khL7!s8!vHZcQ+m`;9cv-whm(z z7gSSpSoY8r{MZ6QW=Q5W`UuMNmvWuf8~OjF^dh5SP+ArZ81LMcIaa1Bfp$%vP zfocim`iD^km~u%VT*>kAapR}Q2kj$w=b;>r-V5Q1iV7lgCPlR(d6R-QByNcXE1s`5 z4ezQJoLB6dh~bT~a?=s7m^q=bu6yUY8MT?)nIk9G$VD|O+T*%u$`Yrd-1MJSUY5Q4 zt`Mk#ON%g60l89=4#LIeIJB)d=e8=+iHDZQ#VMfx{rVr`jNkww%Z6&G&+-3`>Vyf5(QsYrornLVf>8!${>e?_oAT3BscMd4s z(%{gIba!`mcQ;5#3?bd!jdV&kh)7FG{hRN(7pXJI@+Q8Gx`T*C7tpWK9jm;q|y04u`+LsiG6H1Np3E!*teUF=FG4U|gEg89}n2)6&z4x8*& z!_>+{$&sedZfk+xy;o;feo|wvC@dk;WA+aR2%M~x6q^{kSZ&WV5)nLW{`g(;99$51 zo#Q(sk}W=8R!Ma6$;^)nl`}))UQzYZ8CoXV%-!RF-|I?4OQ)ql+yYd*Ey?5%lp@tL zTg}TL-FdAo&UK>29JJDh(mnKYt$Yhsu(@;?gDCPtVY4Z*+x#lp2x11cdYYj$8RTfC))+B^0A28o97tON^Yga4&-`yrpj$x!#P5J9 zWH_-?UbSQ3w4`Qa#ye_W2aPm{4=9g4!tV2pN~N9}jCU~&0V=~Z&a;sbD`@a^NHTe*AFHe3Fm9~g zmQ+gUo54PW?-z|9TU1jita3^gq$#spRlqG=U^&j9-wG6?U|Q1_>14>~aB!mN^+gYF zXeqdhdkEA2InLQ`T<+a?JXR?V!Iep+XqDmv0`}k2-;u?4yXgtxM;WQn87MmDQ;Xt9ttz?T!ya2vJI zn%CWkic&nbdJ%z#Ufb4&GAX%!gj0C=fwKpL0;`yFJ;mr}h=|hxm64d=Y)HO}@Ll28 z?$Ky2c-qV-o>5hL_MZ13$M;1Up`3h#aiFl7f8~Wj5z}NL5e0CSYVd)8GE_t$PXznW zw6F9Abqry-*h)NxgDBOSWgZ_DJ|b#Q!eK)nUtxz=@TczYK!j#!}w z)JN~TbvL?qI-yhD-h{wBn$pm>N-9CMLmN@kLFl_1*#A5K>Yla-)Fk(oS^gWInu`_k ztP1vP`F`gE&sVV~~K~_kDkmsr z-|}bhGsqDqU#+rW!76{*#t1mdwEX*Bo=AqYLQ9Ds$YZq_WE_S|y*lJw}ewc=i2Bd_bKXu5ba=GE`EtrC2Y&af2bQY#B zf2gwg*6~gQmI7HBBTa2rTj4`aC-X>RLNfMgeX@pFJpn^`+RuE`|f`CNrSjRIla27gPS3cYEXu z?&j@w+o>nr=Ur}rC0A~0;eA$WPn#Z|MA!iNlHiBac69$MZvWt9I)ws4RSGB&(rLL_ zvA!tg?m`Bt&?DDWa!$A>RqbcM|Hp#!tD>}sbmZ&oSP;zw%Whn`)NjB73Ya4tRZwcL z(_hlrszM~N_GK!gErybS`Xni0#yRelhLU*~2njAQ4j#nKVG>fjePi6iM^FoBU{z62 z5y0=$+jv@QP!No*3PR<}VU8qO%7X$DL4D$ddK0sa^_K*A7qEp6Qfh=ssHl_-5vj}E zXfU=Y0n1%kRUZR+C|p)xamgG=cH`Of*ttxUGL0iu3>;l?o=blk8BzjyI)43YCwv)vJ)W(AXu&-v!xtw!Ie=;)LspiN?fs~5s zE=wZ=$K#?4G)g4oL-IU1s>3h8Tn8O%x4-<_)V-z?db)Wl)akp}diwi^_1WXP{^m^{ zFkHTFM_t;$)UE}jK81m)z2WSE8Qj^N$F1C;GKCum}UshqkQjX&I<0U_eVt#;)kC}P^KS;<~)#tt@)rKp5|THOq=ilY@6At|An zX7TydrmjYQ&RyTuS38dx0xPW0eBI7c@B-9HK4 z621J6(ynT)xRC$VCAmXdPTlLeIMjAn;#;(QALN0PyP=f#gAF;Ub0~uF& zBt>1OE#;XFqZ4S{4PUrCKe0Hhh9`~%g&?y!l?%tA5)p|aa6Fl&j`Q?395|iC?S5OZ z>b>Fz!Q#$Zs0OmkW(MX)c?9-wqi7{L<&%dhK{(h|Jet$j+<#@Pq-ZEbuD9N`k+}bAkzPiBcs3TB@{N@_kFBlnA=ch;|aG zKezkmI0iA z%;dqcHRo&`oI&=_tonPi9uwR7p*%YCuPJ6@kO&qysezT?vr4??49*B~Fl~<{cTj*9 z4H0TK!C5 zu~l!J5_gFbYa6_8buZ2fp6s zWXw<`VZ#PN60ld%WbLqlZB*Iq?i4R6b4_9(F+Pp!OLh07J}96E8L*|_x>{LUBHyk# zqgQqPvjY4?!|L#TC=K?_FCL6s^-}Zwh`@_oI!bD(B+vX(adF5ld+D9|JnE9`d8{{n z6?F^KVV7+UEjy7MNc1qwXi^lb?9QvrxZ`s+T7?|Ww^S}Di%BiW@HBMhc%D*ah^=R41$vgE<+|P6SJ8wc|;s1oJK_xUBD}agFHql z!$a}A4soRO0MZ1K#_?N8*gnIUUV{i8DaGF)&aa@Ik+S&izb zEm#Ras|wqSI)v4R4%ytg?*rTnkQ%y=b+buTcgZ^KQiZX!d4xRW2hA3u6Zac>{rwdw zkr&lz{nnM1@6@>g;T z0`MW2+p5}`RqRQz3$G#5T6k0(m#n0%S*mSEj4^D8z=V@T4a1H{S~Q#mPyqlnp^t?> z^jpqoxN6vOn?>_#Vd_VL4&}0~KtxjEN@bD4=^k5Z2 zYGg|k8%t}JH%bg!JZ2b9_ykEs%EqW?;Xv;S=jj=vpI&tEmSx7W|9b6D+rF&S4@fY} zv{lvxW3b{IDKk)dz%f<`3j<*fIcY5RsMaHWl&X)9;4-lN95!u*R-m=ArNahl?uBGT zMyR!os-sUGVaMP6>wYZQ`e)X^{MDUY(8D6)$(zAKm4rAm+VMpU)7?9Zl#lIB(mo>B zSG(~w>Nbk9{qX!1$hx%yP2wFN6Wp9~t(4@bx^%M`3mnb@z3Oll)VJ_7QIv2ZiVc%O z#r9ZnZOTVoKh1{4VtW`OiN~vOG8@~OPzw-sE{fV z%zvj5gvpTe09Xfxuj{l$yxfKsd}lEwZ}B1jy84G_y}6tPxQ-{^l7n)xY8;`eT+{A< zDFuCeJa+F}Zf;M$cQCc9Wx^#Y_XLNF4j==$16TsPN_0}vXZ?poD}XUKn2eQs*!lgn z+~}BXo@)0eURzdbqqwS(2`4^wWYB;`80RxE`XA3jAMLxaQIgIc2K^2ypG%0m+7s)N z&#oY(&^7ZfTzQAkL8Xqs5u_x+UAL<%E2Jd#jI3T`>EszfX>&c{TBZvcmG2BUc+0wq zjHuz5VVy8K5<%h%E|Rqu@ZgD1D=4S&bV&?qzJv53VahVPZcT&Xn8iF~pDv}Tu)c!I zEEIs*=q)%vkGzO73s6N^p=~}tD?Fby-b_I9tAwrR8qXh1Mp*G>vQ*t}*^KY({NZn1e|W^er6BO9LxR0jg!!Pv1vV1z(+ip15%F_R zTs^k!YOCj5s#u`BS4GMwMJS5WV$vc?75|10c9;cMto^3cW-@b7^uFPe=Op_3RaVzF zj3*HEYU|0_weNP_sXe^2{_m+CQ@UrHF9CujP;SQ+Maqr`4PQwmfK=F$mF+U_vZp)VX z7y*eFG5ZG-#Z})C{o&ZWptP37-B>kxuD=xN~1-3uDjF3-h!18sD#B%Je$(ozOzw$1LKkrM(S{qIjLjxAu(cz;CV=EpN4^3gZ@A{eM*O8lZVhe+Bc?e5pwdB0)MeAk>7KvlRX3P`#9 zu2p$s2gDKRLonjQm;bqNUpzucKV!D7GXY`OSq|MLsG4#|RHnJ9Q9^otm&&@0CvwHo zagM0Ln2AO9dA9uL70LT$NnHl}tHgtm*ymh~VJWvcV$7l$IMhV6zy$+_eVEjEZtv__ zWUo$&e@_(rQ-ky3i0dPO=D}uM>uHl^X8eh*TM>sfDTJKeHG=o{O)6V7%O!#oEaAeM ztlcv=!1hUviI_gg^o8oAg3a>wKTEI`Dmke%aZ#7)aUWO=V@hI$lB}+_T+V8`Xua!U zo%KMf5yfEH`0I=I!JUBYQ6uPNRrae;>Z8%PZ~>j+&mLvdXN+c@D{?&tAnpPug!8DlpZlQ8BhWiZP-Ab+WR8)SP9HIDX`q z4<=^qj$@u~=qYUax8ZP8&X*ISX2|O!2sN-&N#ZO;CUu5pqf)%m@Oc)WEVywrszqo7 z0#wA7aHg&J?qu8doyf%W-2l-p<4r74FcZ!Q}=R;e3B*O&-}g z;zao4<)EeR=j)8j%-+XG{B!KuFmz` z+)o?}nL;BrnvCD@klEMuK-5J9nUvx~W{_v_M9+=XSW>HmP&9UZr7D4#2figLLa{1c z-HE88S{D00uT=3@)XZCYCE@Z+w9$!;OI>v%PtO2EGQAM_U6m0kcH@GRE#4)sEsFHT zm}pJwFX=NCFma5D)SfkkN3&OKlp-d|bui@81XAC7Z05^1KrS|#^=F^(<>y?Q(LMP&mVB5C0B`LY`EY3EVSS5zJoo>Z2Z1PHs}cuSW+Vu$@i8R z9qxW^o&EV#{YuVNP*t7>e)ZjKtgIJ}z-wSf`P-z(Lag4kdG&MQOi%pFUHtCU%j49= zarg6a%j4w_Rw1GI`}=z|mHa7O%Pb>5KR;auqd1oEBI}^-Wfp%o1H3Z zu0ZF@qIbqywG=en*qVmx6bciOni#T?Jxs^4@f2(V3VKEo7^$pd z9;2A-$l2$tVL4aO@MkWf4>AdAg@LWv1oiE2f^amw9})0)-U_qh>6$Ti;&A$dB$U&5 zO=9M9=^Ts%hh|z^BG520eQi%of|&h$0qvBazkJ`C>vxn4N8y|aXw2onbWhe?t*R$I zbIg3ckcV}2P1%fBQrg&%AVE1{F-u^|8v=Ovd7#HRUFTJ^wL?iMwipiU35?}&o>WgH zC|p|l&J=Tn)9sAjCV*J;6T-yWNrjMJB#6WTfP#w#wy9n|0JSg;@FVlCA^jqA1T;aJ)8*nEfuI@9Kpf*gJkNRQJ)O>%_<~b-@iE#sLY_ zpl|y*hUTgUq!K|X>9Eebf2nB9@+@)2TFlETKp#JT+~%F~eCKyy?uX#)?0omPL@+jT zG;+tRGts_Gb}VH!q7Ywi3l|Sz<`|TP{PiwKC#_sVAQeV2;exc8)f6QW2NA9u7;U2XE3;JKAa2hn-(ABZ zQqb1J%E=8`RYk?)&#8m7Lc(!21(*_Qm{UK8lQXgtSAk_wTem)MWKaUj zk8%PeY<7fDBve{0t=KM?!#77cH?}|j%Lm73?0Igy^7z^XrrK$5x3@m5UIvr*G0m6Y|Izs)Jv1W z5u-(k`$VWyp3-N4QLswZg9)pGZF?7}P5+7icO>(pq$P^WikXY#q)7^!rjU{mRx=DF z8wmrhXu6n0@T)I`y3UbIr&O9@q4Z1HIUEI*jwZJDj1)J%1vT;(0zG9mBt2||cAXKm zA7j0dLPuQ`;iGDK9CBg`Y_MTgVq*ob!dqg#_uB)?F|F8Og!~IyOSBJ_Alz>1Mr3Sp zVHT6an|6Y(l4-k$4-~}b0&`zVmW%94z*N$%YG&*qb{GKm5xEK!f^l!82((?4Dz7i> znjeUcBW6C>x(c*OOMcstwBXWp86PSl8)BvXbo~oDwc2&|^_JL6b?L7u-oGgu&h_Zz z5IJ*w$S;K8YgVlA_^_rTv)ADk`%TqxSA$;lOB(>{nh-`fG~=o35q1fZO@yi>iAkmoklb4F zpRkdi!-s+Uon`T9t&J5AV-$bpa zgd9e+O0~BN{{QAKZkoGE&V0|jFYx>?@a_`H?lD=Mx8?YfhY>(}w?j*Yx4G*W7__D< zjx%;mOY3(6Q~g5gF4%D-0w`0CHQu*&9p~`OK=g&aZLWZx&sOFUdj~shH=8ZkmTJeD zHnp^Z#kL{GtpwPy|3!Oj>UW~ozPng#?#9LKR;E_RCYbu+v7scGTS%UcDy|f@kjkV6 zG`3awZ8CGj8?^*tMd?^h@stVAeW?;^5x&X2Pi%F}DwknpiNQB5bS7<^(D6IQg)gjL zl1)r-ZeME?X*_sY;6xK46y?!OfKnhU;TStY!&6f^dE$Ehs1jXU!AoNoYZC@4L?{;? zw8XKn?>OldNDN)B?NUe7aDm=0g4DADTlS~vV9ARD4nO@0hu!Q_*uE2uYE32#WbR!- ztzFPEfB8yv@PWm->}x7REmKw>an~ZC3HfgU`o`6!?dDFWI7*P^jd4gMftPph2DsyK z@WJ7J(DrgYBlY+8;8f;gj{g0{C>d|Mb?cn4soR)0CSw>C8Y`@9pNAQX`C`mq>aVL? z5>@n{?q;vLEh)3IizZ-d97je*e)Zjad1eETX-=9+i9Me?&eke1ww^t_7P%RZm9eG^cO$vbXf$*V_X$7P!R&T98zc4)EH%`ArguUPK*Skx+F8-Gsr#l#ly|v^SOw(vmRY&#$#=#uo3~13s)`JbRc{@}mwuYCN4oZ#D3}+M z(lJb!5pl13U<+PcC>R)-!P@(-YS(tu=!6(MEpB#BdZ#Sp@^J6=WTftL49=Sn#d?t_ zXA3e~t*@~yYIdPholhXe_!K~roVfVT=zgLtqC7M${O{4vH3>vg@aKjeC^e^_xvgSIJJ z=DB3CAP-sVHSPO9{?-0ez46D@XVmX(#cBaapGp=;A#wM{uOvuPQWEoVd35`_`&sp; zEqut$sL+iN01Od4K!=aVRB9BDLIUMTN%3l@(xCRcnl@f^8y^@Agk!)0h=z=;tiCVm zx}oY_m#IKaxI2>B|NckIewsE5H@Etu@AFUnhkN~gA%U~J^C9kTOo?|Sz3FyOl!CWY z+yEZQYTbFU{0slz^ZvV?^zImGXi&A!b$P@tzOr#iV*nBeMlTOj! zdO&Wnn8bA68?uU0sY*^jb)*8bq=$S=QgiGVx))IA_w>$j!|po6d8kUAq|AmRDSqicac+x4O}Tr*Tr{Qi z2>MjCMN@qZAQ$fca{mHpUmxOJ(hFYdKE1v>mk^9O%CrOqrYp%x27XDN#*PwBsyJ+q zE~LAyRZW_uCC=hw1Rz5(j?esSHqwV zCe17@+K#2xma3`L%0Nd z73AWmQMTjiq=^F~Q%>l2^iG7*U%(Nw&>)2eN9e2p0y(2scF={9kmgaQlETqIs;GjI z@%^UD8KPnx%M*o>mZDR6oiqLj0@-9bRymV=x0M4h~X^18f^3H7)tNF@~8; z*@f{KEocxAs^j2(`tBHGwfJ|O9gaacAeQvKkq{W_`!Rr>1KEC>6cqt_B|<(1(ToY@ zh)Z6sr%(`~5q5`0qj#LW@fcRmSOc{PBdG_{)(FY5G)m zl~}8VJ1-X?NWEh-U2z1O0~JW_j?4%~Py!SISyw^_{w0?%=y$~uC${27%hdF^Fl8MR z8P6(Ef6R4)NzAM#M8%J^PjUAbKb3>TUR+cKNK1iMiu?;o{YTMG2*9alqiO;lvJ%BB zCs}-`lH^(DN~Q)sn;zyxM$B?NIdlottDOEo8bVAhMm+)rDmah;HNTd#ZHjk)%6qP2 zL@ZboTOI-_Ncgk1ob@#yel6>@v`BxOP z$DdaWR}-+hKjL zm-OSAeUD_8f4(am^T@po5y%%sy6cMHcE|wRXM1XM(F*YfE(2tH`dcIr;R!+m_-@{IATOV2ycoB?CWu0h$7XiUOY2}~6g%yV+ zI+1Km2FFN;I!@5Q=1KrW{Z!!Y17-N}k4QZ7tt!m7I!czfvYOy8!i8q4v`~U~1V-3{ zgq|fhAeRRUP;6$|yR{f3`c%TaFYo!mY)(TfCWLYg__=R*;sT`QN;2^$d_yPsPEr^a zDv&i!VEXB;cZV%TtT);Qq0^{~DE&x3+tH9Z5-$(Gjo^6|ahJb3)r2G`L;eqD3+@pPX3 z9NlZG@3gx;tJ>I-q_piTlr*8{l;?TN3<@*!`jg*(aY%ZFP5}D3K?E%6-D$|7XElIN zeFbxROGgD|B5E;|HGHxq=JkPd_j{0UscM(!WWZOGYUI@pG1N$@a7y9?^dEG;^WYXB zmjmpp+dPwD+^4Y+RmyH-COWT47ji7++Vj|cQ+*NJ-1Jk zFTW!H2#rli@RDEJgbmsKtw%F24FvKQ7qQiTZ?JQaJ8ppDyS4s{*5i!-Lt#Pi1WUCF zt{8Lye8?`X!tNzD=DI9mS{ov>U#OPqu(}@OMKk!>J16LFV#1m@_f4N<5A(tLL5}mX zqE@1}dmVw}O2Y--J31z?#>!n_2;4t0GVEj^!xb=zx@_iuDNEZqDN+T{@KHC}O?lya zuHcG_C`T|2sG%+A9c@i(`%XGvxLnjyWcT_qyz4sSa9G&EMlxPXf7uH}-> zn;f9ij%bMgo_zt(rZM1v?Rx!6Aa}o+zZ?uqUF%k+J1VCdpXR2Q=Q0nDulWRB=SrqC z|7?9`_Q2fu*VMdo`|{(=*vt(vc^XBj+a!E$gH~4} zMUL2+PI@J&on7@9BjTBtMruj0Zu}kR10BuGmQvy1P6ti?b$NnFfGxD`2-(_>pRt$*LHQ*?ReC~5`%EyHj_axnNy@$ znQ+*od|rOiR`<|hRGqd>`^R&lo2SS6F7w}b6XG zHl_0M>tC}#`@uc?s8#mG`tITONdWMWsyYv}I(A9Udh(u+@{E8TIKoA>RI*~ibMy@r zG6%!8(rII)QkloG*4-76Dib6SnH)w6)Jmw|y1qw_3>$<}{dGI7{6nj_Y69NGH=D_f zln`ka!q1fO2@LE5?=>So#s!L4v~{9zss9lQ<}{_);8!lgDO~4(qyK`sSgi8#~C*SM$_d^63%_ zN(ta4iCi~sm^a$4#DW35%F`8I0pbUdI$#OGC=>%UKvXC_nB0RA(~~H%AUh!@xgd5! z_yBI9j*)vRXaftn1k_8x$SWmOV)5ojmD%5N%vbgj;dT!jI&ycrzF)Fh zR7Q8xQMTkplcSycKmUIDwrsU?H08kuI4I}wWKR;Za`LzvY!u=mVe*=VF)Ws5;*PMJ z+M9d&9(GaprYWIxp-haMyxX3| z?@n;JW7=$`h>f(lcQY(`C<|d(Fc1PL+LB}=u|ziZa}*Gnl&Zmi1st^8!#a%1AbJG1 zNh`OaVh&DAJ5~+2=Er8~x;o{@ABPF4_Cxn_u7!%jm%!3eL{Wlza@;o}Uj+q`PCaI6^w{ z`H#(*jy!Wq;sBL44pJCcUfqWB$^E3S>*>J}KoI9|p5f``cGy0h#Ek@ zKIP!UD`O#BOc+4fr6KT%GPu)rFoASie6V9C#N<&+bXMqMu@C5U2~Hd~?^!O;V=3LK5wmK%1zn&@rO3;06IQk@2tT6A@pyo8-Z!bl$*EFe{v<1^#KR{HFUR}duYglpDmhj zc_Ns!!a@8lKc#P`P~sxp|33Y0vAHW$t5U5LKb`~ckL=!|jkKouT-zz%yR`Il$6JA0 z@+eAGMqC}YWz*M$UlMg7MuA1BANB6tE^@L0PPS97v#80+W^7aqP{M5P-aWa?bbmqx zUd_eCK{gRWy247gx9DpRAiKwrSp0!EJ}=hYWS^Q(#j}bWit6nqhWo)+jX&&vDkV`y z?yA623{T+~>X=PHqt_(9cwu0|&Cq9N!S&JiUe2Nr22x0PO38xB)rwtGsm)gV6HwUF z;xRwOtbe17pz{|L8Pf6HpKM1TtNXT7!s5PFhW7v5{#(7_@{v35v<5 zy5b*dHQ6iKDc^)C1FiSQ!r@)!+>^#u-{=P?N=Yt}9e_5#cbAYV;~l)Wfrw6{FQ8u? zUZPLR?_Y4D$L7v9ux%{HAi;uU_&o8Ey5;b>bmPR?>Wl#}jQLxY(1Nyf0UG8aU{C^< zP;w$AQ*uEEBO}>gPcH8BZ3iSX2vj-nxXnyW6OuI4`61wf%rm!{sl_py--V9^u+Mz% z`pJeipHDW8yuAM57&+1gxfHh=ny)tANWw)&0KKb=)+v9|+YM)QxJ;%>bN*cdK%|tM zYe4EF)(@ZXiY2wC+((2V9v(fgE&E_ES*e2QglluSk<+prMs$9_-AND~9bFP4nkJE) z5?>2cW6Jd(83gYm6(~y)Ja*B$FtM;OiuV|b=r7}jz6?I{fl~&>&4n0i|6$3DeQFkl z-aHm$n>`27tGEGWQWMlT&bxAITIck1Y*PJ{ z9gAis?WE?6g_Nh@Vv8cwuvCtGe`FZVjQt>3W`IE&9{|lp`uGvzhF4r=+S6zgv2S?` zmzY9Q#Uq0zMQL_zzQ>K3O?_mFJ-q-ROTeG5W3w=4U5qzjJ>n##>I6zAY*`I#Q;g7y zsQrh};z<27&oVGBOFOHl0;Q+CU#*oB*5{cD+2CSI|g1* zTMoi*=8&K4kf_pZhYkW|jw->J61BsP?AR@ycL4Hl{`eYAMm|*MsEd(S0QolPxBudpFP>x$Wk~UmSug}_tE`psajr83l z>d{Ao?~2Hm`x8rDn`gUWOKSl~WtJb9n0H#IyqR)e9uKRjBu#O_LPDmO+CV99PG~J; z%JyTTVyeM>>EPD!eB zWgGlFK^ra!o@^zIn+P{2dGt8)^K`AJ$a^m_CQfWp|7XXii7+@LP)uU7OZHZ>#io0$ z(RIi_bCH%ySh}wk8}mS(n#Y4<$h>Q<-xvKe2l01obW)U;>dsC8HhV!094)zB{tv0{ zb|OBki(R>NHo}Gz5pm#(R%x$;pv)Zc{g~w#9RJJlPRC`2Pa#1W1sDNtH~od4FUVdn zfsvM;pLNr+&w*=-A|&9j4M=(DKhLJ0#{v#n-qX0b!zy=IAWs}-n4wzNmQjXXCWgQU zl(Ui(As7ZwjdpnY{yA2a6l|0hwyzC(``rt?O2Ow(01Y2dD}+T7#(pbxJzWy=#RXeI zqi$cWA1-27y91+{+L7%2A66az{A6v({lt)8yOF>VkHlbJws+wb8pXz@N-PD5se8vI z7Y7UHvPc3A?P9sv-_Le+Kq+9%iNRDH6Jrn#?4s1g9zUgt zg6kh$p#4#SmQEEGQU9qaIdh2pnw|*uYhskB)NeHWx8)sneu_~a^U8P^roU7?h! ziUlhHR5^m#f|LuHviX$xx+V{4++m5h@E4z^rGu`VXGRjRPErueWZQ4h*knFNj~4Uu zjW7CeGXQt#PfeeIjaXjm%=z6?{K@cdGE{l3+W z8?MJ8`$vR6mXNcDV;@6Lcca$9%`1T-siJUlo$rw&t`A#+@}ij?Vdrr-QU(#y^EFF`D|0NIG>LZ zy3Opz@cpB%_uH?^L(sy-Dk>|1GW(2AJ*$5Lea;fU?DVxRvEMn1;B##}RTPyf18&D{ z=NUZc@pttz!@s9z@b?UiKGYq0u%vj1Rbf=g&lH-@qq zb)ScJQ*KZh5nL3$(TzjOE-tr|SnqGnWRk zh-2MeG%zyUxp%Af_wnPwDdb>r8_t)Mg#{gErAP!F)y-vXBkfu<5bgC(V^FEY&3CLM zvs+sp#z!i879IcX(Q`E2indmj>H~KevFKWjPlw07o7A>E=3V-?B-hk&+`#m`nzobw z^J$I|hM^_zbDypIfPRfTF<_SF{=$pGzykmSF93g~>lJ9n=4wF#KpW`I=hFNIRZ}Mt z7=|4kdN(>PxW1O87&_U{@UX6w3cS?zQB4Fg_FwT6^SdBj(J26ZDXT_@r|TuLw!$PO zd1=ThLwq-n>%)G@N`z$232$Tp(vu%q|F*+AU%Ui)4KgyJE)`AR?=~h{I$D%QRM0c9 zo+#|>>>h`oHZ@&pDv$Yz7;9?@;zQlqW4%vX5V`&KAR!C`=uhY9+Y|Oa?7#*eLJW@g zjQn^@jr$PE&oYbOkh-XGI9;50hy*tvo!`FLzcz|Xp9-YLVn-w2>)7Lb$aL=+M6uw6 znHp@nRQo<|HaBn=7e?`oeYZ^`9X%Dhv5rhKI0O{6OOC1{+D^0Wsac})K8%3QvnhGG zgc@GWi&CcVJ)8rCS5Y@FIi(M=0#Q8MJ?$GC=Iu2j+%0&t)mwEpXczp;QHZdpSk>)`|vp zq!wI{=|IcnB~GGr^K|2&v(FW*h>~6GrFt+28_5=8>H4wj

pEdur(zV7f0fTbLJ1;t#pHFZ1zBIJPzs}5oBI2t+{^$(Ahps6Dx5N+!bSEmOxPOBuYOof< z>={1~24UyOUmWPse%_@BA;N?Xd*mp5@^I}~*O5l1fD`nZljCvwOAm+XcDfd6uIo#zQPy#(ez66IqSUL z86vVDc=cqLI!|3gUrK#siFDn?Lx7ALv+t?Q-8`KTd{T%EbL+g14W0=SR;E8Zm?3p3 zYO?8%xnYLM5;`u~)785gJ^P4V=N}r{L!4jU^l0HB--%t63O(w2WW*-d_MR( z6T@LjpR>-f>|%-5_otPOa_CqvcF!u2-YJUyR@jtRT$;6b<@m=GD*0$#P!S7hEZ5fm|iYTvvhR?Q8J-4+!u7`3jmDaZJzQ>hvHI{gN=1k%^Nk}T4fTqx7!`m+NH zoishQtrbL*Cf4r}3sWKGWzniu!>p^->LkgExpYu=sz|i_Y0bkegVLkBATtFkz|U;v z{5s+9zd}R?Ac55E65x1dGpZ6X#U}{weYTA0`p}2LlQN7?lOH)+t*!SFD3Ha)gCIGv zhNMPP-?kM=x*vLbg?_fj12V6Itnz%7D#IDza&`b0;ytrrHZJ;#f84gIk0J$1YL1V0 zj@j9H`iCmua`gKNpr`a$%fXQc9{ndfb?iwB_-S}ucb_Y&Dhy0L31nnsjyt|+9aHXI zs-n*giKCXlk>zGigDYpwZh;o$TXvo+izhf_)NnB%dU)J*%lBu!dkK|t!Y;;$M5I9F zhCT0O;mGB@Ou-k0d(#JKh#iDIBzaHE6R1$q{J!S1dz_91s-i-{lQxKFcZu!>r$2SJ z!?o3me=K}Ug2|L-WJOK3X$V)+4eLj`diz5|@2Ft;yvEfHt5FM{9A=_TQ6IP)J0p=z zu^itiiMf3d0#4NQWs)Q4H|)aTix$KP)unqGo`#YaUyFZ`BB(UmNU=Np$G};?2iyrb z7{uY_Yk=`}-hMF#*nuyt$bjDxfh5@FyNvaCMsAX32Q~!~aYfY-z&9nGRW-GSz!S`% zeqbuWNLotnh#_ZvgN@eXoZ{KRwQffka6Cdu1r|~;ObYcfJM^{%5$l0?XDdWI^o{zCP@UaFR?g{z>9Pu%xJ;D9n}9h z<$i}Ao&|Le<9GmQt+eQ%XOoOIE4yH+W0AyXD&!)p;Ftc$Uk`M)URO!O1_ZQrOPbWxC{t7 zeeMygC1AHfeVjWtFxP#cLX@vp^KkK{n(w#ghS$355)=&9QIe1Vd7t+f5N94i!KGNl zwm54kcQS}``q=JWxW+3S0s_Kn$G%N4kZlt7A1|xgq;rKV9B*yNKXVS|@CfkFO&ot} zx~5OHB_v~7{Blu<&WP&q2JDXqe^2`oHEyzMb{!RPy^SI>1-P@DFq;z#VFzOk5ltIfJp9f*t%atR73z&HxO8U~| ziO3s8>O(*gmiZ0l(wp>u54L0pE1;o7L_~KVdt7-*Ufbda^#65CdC7{;{v8(BV)!Cy z{{_#ExjZM&vD^2r?A<}W*XuF_e8o)530-j?ezUo3mAoNUzX>R+{CyOE)cb+@T0XB%B80oEkNLezCi4j`c*2uMVIyWCNulxy;KIbr1@7= z+7W4EbEUbiWF>Z`A%%af9xRvHbg6kI~H$T)Y0jL)x1sPdjJK(taWm{0dT2~_#Nq%JR*5~l!mF`jm z7H^)~-u^x@5s~8DR-)nM7Vjf?>6?{XNFx#qI@i2-cysJWVNTQ#bf`#7wBQu-rIF3A${j~{Qg)wx&@g|ODHPxB878Zg-JKmYY&;5MFw@(SmSdkx zWw0qQfv4__2-?Jh>Lp8eeR(?K)<5K1>l?MZ(_15^bwGky=RkjcezNrI`eeg0W_0~{ z61-s#<8SovKt9@Ym;V|xB^LO6X!^~F9aj$f*gM~dJ^SHZZ0%Xyf+7!a{S@kCEFDvT+^dV0J(5@`=7+K2U zEOJ7et6BP&6BLIzP1qN>o6d&hl2mH(n-=jwg^-;x)fb8Makg=4wldtb;U=RDwl#Wi z3vW3;uK}5e&93k+k9EXM>{ofB2m0lH#ojont(%94erzvTRuOGKpidRgV<5e1!i7Ee0X*^GMJ!MpB71=;-#PI=C1 z;Od`rc5FYl#+#S?nURfuYJOVs#vnsdRh4^dnuA)b#l*^DFNmiI-MiL?ixjQaw>O8$ zqcE^FZe-EVu{Sf>^fTCg#kadC%8aE+WtL0>?V+Hcyl&2dM;;gJAnTczR#K>*c=jb; zKDg55G&VNjr%$UI&aKyfZfoxaSfY*#k9DOcI9OF*O<%qC8eOmQD1M}v{^Gu+1=K#* ztjwTyx{Wp3p-?+n+hnrtV4u_7>b*G<7mNW!PozcOTj zrm%}wVPZOJ#7M!anq?>N%)*B+=_WN=1jB*dIc34cYp&g7L*@=PQ8s10?ahuOyO;KK zqsxu9+GS(q+SR|Dh<>r(MqDz4oj7IdcXR!1mLG;M-|4mjEI&n`&iYsV_6rk|lN;T4 zmHDd;hnDUHA={jKH8}FvL&=nk#bfljH9?`Ez9KI}xGT%0231q;WMk;=a0#t1QZlJ) zd+PP!;^mI1xKfE8rzLLo9O!GFThBkF1uY}xG-GR(8Tu{;ZIX;WPC;;(*_v|Xc8uO> zss4Al2=i#_{Gu--LaF{zsbV%;DX^QZ=;$%SFX(9A+voFr`h4W-$2v?W;j0j7)}$QIAi>B>XTE(ghM8R&K|fslI8@K6!sgT?+cAyI?hR z_%=(Ge_T3`B6Va=#euY+o{U>|C_3B%?u!qJXscRr$mGM?m0oA0(cCVao?D7SYVIR< z@egY1*|Ha27z&-31^#>9qP)CUg@NL)K5tlN@UO#4tC{%iCxS&>YWM4d*Mu+Xe|g?4 zJz5u8 zg@$|3TMRuZU!6GbAEb?J=qh;yeBcDkF`VhEKjZjkWCUI;3?Yf7imH>mdIBre*>Q^} zL|;)oMDx7O0>M$pWG9`LvULySiC*!bj><#m(SH-RHZ&+owf_d=yt7hD*2A6V31*F8BrjfEq4 z@o-om=9ARcCWIC#-R^6(HqeM3jD^?)J7%v6H~HgracfZ@gYPqBPo2UAn@49&$81-i z@QZjn?JicyW(SmGM8w2OmyNT&*i@!WoWjC=z(Usk@mTL^qmw8$r|_!+OD1c1XPf(T z(nkY^zO4m96YFhA;?YWHe8~aU#?zjFn!bju>;tIWCNBSV!Y1vp!D|t5B;6evwM-z!=PTw@#|rhS}AH4jeVe#2F8db_qt6f&ZSfXanm{P5j7Dx~@R z(U_d=U(j8p-am~vQztR|jr(m24qA0kdjW)?OZ7T_aVKXSkR1%CFH}U5X#c`NuJl|E zj7R$Ohsy=~F>}&_$mUT>)}k zoBdQ#E%b&&7FjAKsz1tHktiy@<7=A4<-I7_B9#+kZfXS07Z)q%UzhE0|3c1Y%i2g}b zpo!S##7;fE*b4gmAp-(!Ig-U6m;iEq<)pgua_n(TOZ7WhTNlYH@wr2eJ{v;5WGxoOxG4{LuP@AneVwbB?9WKIU zEOA*XNEqhULL^CpIKf{{#t(nY#9f`Y7^lfhW8I~VDutKF&Zpolpuz+`3n~WuP=S6K zTbi5K$YvoXzys^xDln>qVK$6uen(Vl9oML9cI$U#`|{MdQ5w#S9rL6~f^JI?m#-M~ zrVNC*z?Ek(|9x68z5ggLFHb~9wgcOE;m=f#?3HSq+;JBQ+|VHJX>nTaL!tDG z;0W4f!N9=qY`K{D(Hr#t!!0KxQVPV{&riX9^`GLRsiu^H+dPmto@ zAw>HFk@COit0$K1;D-1T-+pk3)W()?B}XsD?H^E9vV1GW0@@K}VHX>`L_vl3P-mr< zBu4ogYadCPJ(FN2w)~iZE{n?(tIRF#AgP0w+gTs+`+Xv18rIP^+4!Jp}vDupx%F%UE=Q5 z^q9qVPYXUb5Yw(bKJ;qS^hXg$p|t>?0Xhyi3~Sm>{@Z&>#~?4i<^Np(r`vme>&Y1J z-iiH}oiOKCQ1dK2U5kQBFYr`Z$qZx}=M)yoF<(O#DgEkSzH2gh*2}8w)?Qnd;Oy;8 zSf%*OO}q^q@n^q|s%3cGT;gZZt^R6M`O|ugz@_6{K5wFexlT?ixv?3@3u{jzrv2{H z0*g;-Ty~muX#VM(pULv+Vp`_?j6<{DFK;%=*SjGtW#EUqk>V#MU;2VTg87$UQ&gMb`;Ba?Qt$#0@1cWhG-W!uZ+&3^ z$vTa{(?Em112esMz1|aHmUT@6VXFXQoWJW0Fss{6Q3Rjt2Pge^aZiQ3T-tlD!0H3o z%-NjAEP~C=mB?onRvtH;ZkP_8I`Ood=B0rVe@LU?tI>yghh1edsI{G443H9k&}>kE zRY%}ebS;uZ7nqr_IMPtvH1G=8###IN=J41~o&nfiB)fybH~k!c+=vl|6z^j z{Z9ISzghL&PE1Hh;N<6@v=zTp*m3uZii#2pxM5|~D6+D$BAVg}Hi)#qW=2H8q~P6@ z9Hf$D7>pK1NE`1veH5pBTpGIDVU!r5O&0H~HU70!Z^;-;^m%Lit z*!mGw&_|zJ%(WvHtI$<3gFj6DN|C7d^T&Gs@r+?n1#V3*ZhzLxS$XY&UdUcRohtJU zh4v1aBsu~?Bx0&ovSpKA4a98w!${P^UPo(Eg4|l3jp}FRu^fvcQI4DfIQ(3vZeTld z*sfEBe{tUd*UNS2cX)#e(~>PAmSj00!c}A?jY4*c;aMx^eB>6wb^n_)HJ{Mu6>)~Z zcYT~~`#NycQS@uE`LRcAH-wA-Xbs#{kC6hRD#x~n9=*c-0DdOCnRr^wwD+?2!#Dh| zsT6Q)bbcfUmdohC2aqbCj&aJJiDgZPQEl#ryzJlq_pg7x-Iz)u7XhjZc-iSiGVLH_ zlQ2AE{P#ndNmg~s@A+h@gX0AM#!#(OTgIbN5Zjf0@6GfyfVSUl7l``d2(XiP0X9>q z(pQNae}^b4==&)`0TSiXPjdu`mu-p3HJ^d2$;AOkBSrv}+`8f?s7^eOQ z2J91M>h?I*#>U1~e^^c64lO0nw_M(ticapo+%>A2>-)Wr$?ibGQ5&9=BXIPeJ z;GrRjKcW=xF54DcZ@(kGuM9cUE|Bn{fYlQkt3jFwGw~X!Mm>KHfH_m&eAA1kvucsB z3T*aX$~)mYjX*k_Kbu9I$h*Dovhc2z>RhM8pp`bQcMcEV*EgmRmm2@g1g@vQ>*CUE zO8;zB=*z{7V|X-t7elF9>jX&eC2#DAiFl2xi3NZ5$Ov*QjmO`zH!XM~h z!03$|GcvadHNaz5MnY$S$bm@0a&(*^yi(umoznxnt=pfo8K>lIYrT$ZDez^g23OzH zcjVZw2{06!TVa|i=M*?gG{4&2jb122F#bCzb@L64K%s&5_V(Jkx2;BR%UuS*%ZaJt zUHcb4Ki=|)h>Vr=N4F>7G?HZg{}x3?253@sSkjRcpPLk*>0Gz+Yfae}@elg%uEI*o zcj&?8Aoj~UT#e7WqxhwqRxU0{mH+J1ohUhUfxjtVHgkK~@H#T?^U#&t#5&h(qYtF8 z{O5phHqJBk-?e1|v(+mrzRxZG^C@`u6KYr}n<3=PvHQmH$@LZ1y{BUOkTx(#?gc?ks{5t%+TN^BYmo}yoSo~}esyHB6*v|{4Y#do)&-x)!7--q13UkN;|_XntF8$p5Sd z4vm>H|FR!fdwRM3(Ub)>^PD}@DcI5U`U!Y1FQDiPGK!B}Zw*TbLdM0~>ts;~0w zd$|wu9}5k?G8*c0q)s#$P6I+Xng%oTq)jaK(-gxGN9Q+~m@AuMB(R3rdwtgrlcrj9 zEpc>>lW#lvDAL#>;D=_cgj{%Oh}i|^_Ajoh=c41n7`WpCVZ z;Hk(VBO`Ay&Y?2b)J~SRkOt_~K}Y;3!VwS(x<8j35pAp^TWj&AY`%Ye4GcUH-K4g++rSJmwR^X8bTThbL}o1 z%jN(V%ItF#F`||7&bc@_CBR%dGl9n(iB1UQ!C-k@dH~ZKJL6wg5jxp#qGf+gay*2x zZHu_X<$ze2Kj%Y~8iun&gM+Ps_wL+n+uIFlw!zI2-!hT5CSKt(KauBM@3d)*kMKGt7ZFK zeWFKLBj+^xUHdDaNL^(M9|BV9b-ya?U!w%Nbng=9QkFDxELI*9J36vfv@<$wPTmBM zsD-6a7^{7e-LNE9L|kTnUP0CNQIlRjp644AE?45tj~E8D)`*)7x2m)e=QQn~!Pf&U zbN+h<(Bl)f#mRcDQ}NJpB~8Z|Y1FX!7RiENOAq5aN6pPDW3c~#$p=?3u;So; zgLJYZ#QE|_&446FL_6Pmv9*H?T5DB^qJSY*=kAW*@^4O2uF}NYeoj>cp8&W?&~C$e zagYGHQ@en0$G%S|L-cc~)@YO;Mbh>eAaRQoIcW_?q4ZCA-|>nd`f|4&cz$VWwRHiY zxtNjCl`buZ0I>)w>~a0s1z@*~44?g+>C_|07jWJJde01H`o(Jf@QgH((~fk;BHyt8 zKJsPeD_1g<K`+~m~o-qNPBVE`v~)7;SA+bf{d|` zUDq|PZh!jZBCvEm{Kts+uLkY9=VqJolP>`}_t0}EApLI3QhhQAKE)*PMh-Zecf$%2 zeaSC{lz^@7vp`PW6o&r*Le4GlRX7MzZ)vok%U&vSpi+ z^}dr!$ysNPO-=TdD7Tp?=Xe?fP7F@&`0GHn;N&=B^0bCLIQeqbteyt5+LBhm%9JdN zffU;-k#?SLSXTwPEOU-Fwd&;eJ2HpT;g~Y8bxG;>GO4)b2F?CB>bc%*tLEHsAvqX| zAxYsvpqiWg${<0Ux~bOUW>28qSHykW&6C~XvWK+HDUjQ2W8LycP82ehAula2;v8d zeaLM0^WVk!&+R_4?RBCDZ1IyuQNvnXZ5>xbgC(+-;{dsnDFjquCF#*>!fU-<54eBYmngPr zTyWrvii*Db%_t#NuemeTb!J;29+Zbp$euE_&rG0V&*ZW<9njvH2J!w9XK75^E_WV| z5Uy&}71QM81f!1QHH0_;xHxcS#T>3YZE-wtB-D^?^Ax{ggj{Eb$h8?AZP}(Bmg%ux z+!aeqo(*%p7rVofxPKp<7V=v4DsBUjUFk?^=KITstwwNQBSOc~Q-7qYYsewMAaaz( zZ>EHhD4#Fis76HcwIoBj1T@Q%$PIUK&wcpGPY|M3F1(HsY}O<$O(f-k)hn%Sc4jb6 z2)1XWvG%e0wiRKGj!A){@?o*2fqNaa_jK3Azp0#aVT#q4X`e`lvOhYXtqd-V9%*qz zLO>#_9$c3vaT>c5ksB=_u6Y+zSQM`Noyi|rN>0l{Sb6jfeF!nB?ot-jct%;-uxF27 zE!Dn~Cn8O_;YYhSpabHM=q6&G)z7QVwcYMto*wwxl3BEW;Yll7fwaqOJ+rHzW5 zo_9;O|2U3~t^SYA&;w+{D8vtJb$c4$PGW?%v41)|M3P@t|9GE#ko93z@o9o_u5>_ma+Pk^AnMVC<`IMN1q*Rl&w26P63s6ZOf|&4@n(T3-G0Bzr5sMI7aw(C}i7LJU zL3X-hm-uqH$nz3p><)iTt$bXaPX@Aa6l>YU-@M;cMNywJYahgq3!z%3eE$--9M`NV z4=cy}t2lQx*Y*u8ThP7qG$&8`Y5@JGCbD{qp|iTi+?x1JrV%`20KbA-KQ$j>>jySO z25|3dkX+K`I;iprz4lOi2?ejyp1ui8Fj3_Ul+-{V?qnG-_W^dHz=&xyR6>rp)2u$` zxN&M!-;H_meckS-W|dZ@Zf>_P_BRwn6P8akgjk*WmRDhO_Y;U;{duqT zAxqGAlj`-_Cpg-mQ@v8>w_BQ10&D9WGgX>rn6R9D2Ml|Cc7Rt&l|=U-hrB!B`e17@gdY47@>-inI*)4-FJVef0mE-Z?kN-|vwOKlw$u zX)(ytVXKm2Hx8yDkE>37nWgbw)-^U$VR;7{kR16NA|H)ki|`>Wq8{dpm6IgUKPx9Y zx<~m`h;8EAJP3UmwGCvg6!sAX^QJ*4>n#*hr`{TL4K}EL%M*H!{DgO@%eeH(^Y@{1 z_Z$lm;)+CY#d+jmTNi)LSjdMsyxFvs_cVV5vu0G8FPA~61P8r`(a9~@kxOHnc7DGW zZS)tNxtJadbKRl&m~sBZ$<--5EOaMp86cpg)2%U(qb}aRn*kUJ2UQ)xPlCJdLdKe5 zR6Sm6EgSc#X_ZR~auyhGaJ5`qiNTbL20s=aCy?8piGG-vWfW9Z!8Hdz3W*91r)!7} z{2fO1S@*Mj5UM?_C=G;q0lauJ@xUBTj7r_A)sT&#grr1nA)%4%t}}W}a&cMqY)iAR z7J6wBpc2@5`#@+N-8a^@>lp*MOzuVnFp8`r z4x_G>JA!d)bllefNkmGAEiE{bfCQW4KnqXH6=L5Kp24R4`)s87hoz345J9FzYT!C; zylGQZs)G?lTqPcP*r`H=EP*zs$K{|JX;nTO_qcjQLLn9s3Auf_^_~h3Ry9#(D;E!# z7NM2~$=pg=Z$v0Jk9M+REW_V2be?&emeNsK>2My!pfUMA`Cg@vP?RiJR^3O{p1aT4;~4}(@p1N zzUqr4ePV9Zw{YLdTR(6b&_Zj8+%_oXNlJ9k;`^Cy?D~xK_Br@pKl__-u+{~-o$4v1j)~SPhQ7O>Ym@xjHF0FKvztU7jl!79tmeV#J$S$Lfm4ZfjG?};k*kie@8g9** zT7z2XPGfofX)(-g*r}8x=SU`vQ|AqEU#zh($JE*Y|Wzo@>c z#o{%L^Y0f7XL*;HwKvRcF(*?PRww(UMkYy$jIHgVHdyt}dp)H;4PHWL@ZPZJDa_(C z)zsrDtjD+|QIlB;kDvI*2XE*4`zO;TRIYXg>guL^=jtCzO}e%Z#E40>+6)e!!xbsn ziqsf(0G-0FC6O@IURknOxNcyCrR~-aQgj{^qO>+sDBxFYAeQyonj-xRf(Ig^55!W0 zpSx%5iy6GE8-Hr76cVfNfM*Xc+Xae*fiWw=>qkJ#%~5-}P9O2pADAaz<}YfxxWoE)N5q_a@A|Uu;Z{OUpxFsi>} zJy&x_tl(`wo}qvKstj_2#D<=29Px5TpLCsEFsLR1fa`f8Ya*YRjD!X?Ovg3rZ*mke z%G>ZzS^%7H-0;f+mSAX+@NI#UfmsZ2h7@AkZTC7kDXpyng za#JK>aR4@b2As@?Lq_s&jODeN1-J&c7-u}KDgk@QQ--;cvMng@?xEa~yLgOCREHsZ z%qNFVm?2KNUlR%9I=|#S-t$&!?h~&8gPrc1W6jS8)tO2~Q08GJUQ^I8k*`-VA(UX% zFI{Gx$BpJK>Bp)nJrApO3DfY-Iu`d@&Lce#-GbXv)if`u+Mc7@lXs6AEFR!ceX}X6 zWwS?$V!nm7S{QAhsKFDS^Bg5ZCQzqNt&M&Q<8?ivL+*rs>#z zwO2)>25JrOY#Og&MUW{Pb*(CY_r?5W;%jRM+JEPwCcvCzbpP^I1~3YBp1P#Kk@i() zX4^VOAs;E3Ln`T~u^Q;?L=T4d7o7q;cAuzx)`LaB%8|OiCU(cNh1@Ra?gJ@mybkD| zye*RhH|RP7iiXC=RiSP-JZ9rjGd70X+3>2a?D_MZrfbaS!i{G>uWdTSoY<5a>KfXn zdS-Kji5V=J^B6jI6Ib(ibzK)|8~!)20^uN_A|`JyxtTdc;VWPE3ojor%i@qTlx+|$FA-6tI zJL$a@fe?j{>~NN$5;$lb#adyobC`TV|HPX_?(@B}^-%>qjLIswOR8p_uK4n2Cz`ooAB-hE=fwQOdO&l4 zf!_*fO==)Og}~4~O2`bmUx&P}f!rH0C)yksJ~lD=+EGUUU0m{A*DDB5Zm41Ze9!qt z#AQY61zO(%PRWuTG*Obum@PdL6Menh=ZLQ3sEhiqpWrbR&mMdB1kS>L{3$lVA z6B->eda4 zW%yPB6ceT1Ezov$;+dYqYWha^@>gc(x)b5zb{2SW3!+cwC1>%N+t!Yf(UAG}!?kZ4 z8M=qZ5$snsN6`IP2LN;EWySvaYq6MSDeoEkPj>V!hL=T+iksNst%vofNbC*3B6g%J z|3fc3ifqsQGL}1dkC`7fnedK0K6FwWsIX^{NP;`K-+jv+fOU{JU@ql zf$8a$3a-|AO4UD3jd|Y@Pd^$;!z1w3Xq-or&2ri0)4i(gi-fuF$``XS13fW@SnidE zNPk(8X}aHwI|-W?8Ikll4ni*8AAOu~xv8}5EwPsE`jZmV-c?yHDxsFsqry)Fvh_hG z@^ugyr}~`KhS=9^F#3CbT6r`J8^{5KEMP~U5l0~4ydapw{ENOi&su*+G^ehas8-qN z7i>ha;t?e}=}~o(#fa3&UU=4q5N`oZaV$Xti-_=K20PzctNClZr;UwEh_$Mrpm-Sc*$b&B z$71D(b$xc$Pk9ci{pweAyMZ4+5b{rO@??iSE3~ww4^!Taar~NfP#V=8c%!d)H2`uf zFx-=bHajk!{dpf0bAIlINg-^NaAScm(t;~_5md~Hk;oYkI~+4v%8)&8a?N6H(=4() zb!?689}?^pI)6yM?3f1ae0|%p)o~zPU-Y5x7ST93X{C9SdLI*2DY; z6N&br4z7t^ytNH5PoX_Ca!RKMZ&l$zSGni6_BpRB1|)Ij-hWG~4P%UNVyR}s*m(wv zY6W5S^#%mRk7ZK;_oMC6*oTLQub=SsDZZLWUkVHPucS|AUHU8bVGggb^#M+=7k?N- zwnwFI+!91Z!M7IFujnCKf1>bx-s3w69>06imqzMWjl~&?R(a)uT2;`8KJ`wj&56Fr3Qa9P@Pf2ruP

)S|ZXkzfCuaP4Z?#z@G>$ezY`c6J^C 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%0Dx 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 z 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 diff --git a/ground/openpilotgcs/src/plugins/uploader/images/gcs-board-cc3d.png b/ground/openpilotgcs/src/plugins/uploader/images/gcs-board-cc3d.png index b9ad6fa4fc4abd8f9b1671206c61b2d3895b105d..69fd4aa8c7b7763b2e9a7e6525ba4a6291c41b3a 100644 GIT binary patch literal 28905 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 Wdt?kL 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�Uqb?K%dL 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 Y-CLOI-udw(3IDU9I9OaY_l^Jm0H^}E3jhEB From bcc39b7fad5e010aebc4913936179d323f3effef Mon Sep 17 00:00:00 2001 From: David Ankers Date: Fri, 5 Oct 2012 18:47:00 +1000 Subject: [PATCH 094/105] Make options window taller, turn on OpenGL by default on the map, we already use this for the QML PFD and no issues reported. --- .../openpilotgcs/default_configurations/OpenPilotGCS.xml | 8 ++++---- .../default_configurations/OpenPilotGCS_wide.xml | 8 ++++---- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/ground/openpilotgcs/share/openpilotgcs/default_configurations/OpenPilotGCS.xml b/ground/openpilotgcs/share/openpilotgcs/default_configurations/OpenPilotGCS.xml index 7c3f74cff..006e61d50 100644 --- a/ground/openpilotgcs/share/openpilotgcs/default_configurations/OpenPilotGCS.xml +++ b/ground/openpilotgcs/share/openpilotgcs/default_configurations/OpenPilotGCS.xml @@ -8,7 +8,7 @@ false en_AU true - 600 + 700 800 default false @@ -1685,7 +1685,7 @@ false mapquad.png true - false + true @@ -1705,7 +1705,7 @@ false airplanepip.png true - false + true @@ -1725,7 +1725,7 @@ false mapquad.png true - false + true diff --git a/ground/openpilotgcs/share/openpilotgcs/default_configurations/OpenPilotGCS_wide.xml b/ground/openpilotgcs/share/openpilotgcs/default_configurations/OpenPilotGCS_wide.xml index 66cc39d88..db715a74b 100644 --- a/ground/openpilotgcs/share/openpilotgcs/default_configurations/OpenPilotGCS_wide.xml +++ b/ground/openpilotgcs/share/openpilotgcs/default_configurations/OpenPilotGCS_wide.xml @@ -6,7 +6,7 @@ Notify Plugin settings true - 600 + 700 800 false Wide configuration @@ -1679,7 +1679,7 @@ false mapquad.png true - false + true @@ -1698,7 +1698,7 @@ false airplanepip.png true - false + true @@ -1717,7 +1717,7 @@ false mapquad.png true - false + true From 919202875e92a57f2c64b064edcd744bf1f61646 Mon Sep 17 00:00:00 2001 From: chris pember Date: Thu, 4 Oct 2012 21:12:19 -0700 Subject: [PATCH 095/105] temp fix for the sizing of the hitlv2 page to stop the squashing --- .../src/plugins/hitlv2/hitlv2optionspage.ui | 1029 +++++++++-------- 1 file changed, 554 insertions(+), 475 deletions(-) diff --git a/ground/openpilotgcs/src/plugins/hitlv2/hitlv2optionspage.ui b/ground/openpilotgcs/src/plugins/hitlv2/hitlv2optionspage.ui index 00a2f60aa..f82b350c3 100644 --- a/ground/openpilotgcs/src/plugins/hitlv2/hitlv2optionspage.ui +++ b/ground/openpilotgcs/src/plugins/hitlv2/hitlv2optionspage.ui @@ -6,29 +6,14 @@ 0 0 - 403 - 400 + 615 + 577 Form - - 3 - - - 0 - - - 0 - - - 0 - - - 3 - @@ -144,475 +129,569 @@ + + 6 + + + 6 + - - - Attitude data + + + QFrame::NoFrame - - - 3 - - - 3 - - - 3 - - - 3 - - - 0 - - - - - AttitudeRaw (gyro, accels) - - - true - - - true - - - false - - - - 3 - - - 3 - - - 0 - - - 0 - - - - - Refresh rate - - - - - - - ms - - - 10 - - - 100 - - - 20 - - - - - - - - - - AttitudeActual - - - true - - - true - - - false - - - - 3 - - - 3 - - - 0 - - - 0 - - - - - send raw data to board - - - - - - - - 75 - true - - - - - - - use values from simulator - - - true - - - - - - - - - - calculate from AttitudeRaw - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - - - - - - - Other data + + QFrame::Plain - - - 3 + + true + + + + + 0 + 0 + 574 + 391 + - - 3 - - - 3 - - - 3 - - - 0 - - - - - HomeLocation - - - true - - - true - - - false - - - - 3 + + + 0 + + + + + Attitude data - - 3 - - - 0 - - - 0 - - - - - Refresh rate - - - - - - - 0 - update once, or every N seconds - - - sec - - - 10 - - - - - - - - - - GPSPosition - - - true - - - true - - - false - - - - 3 - - - 3 - - - 0 - - - 0 - - - - - Refresh rate - - - - - - - ms - - - 100 - - - 2000 - - - 500 - - - - - - - - - - SonarAltitude - - - true - - - true - - - false - - - - 3 - - - 6 - - - 3 - - - 0 - - - 0 - - - - - - - Range detectioon - - - - - - - m - - - 1 - - - 10 - - - 5 - - - - - - - Refresh rate - - - - - - - ms - - - 20 - - - 2000 - - - 10 - - - 50 - - - - - - - - - - - - Map command from simulator - - - true - - - true - - - false - - - - 3 - - - 3 - - - 0 - - - 0 - - - - - - 75 - true - - - - to GCSReciver - - - true - - - - - - - false - - - to ManualCtrll (not implemented) - - - - - - - - - - 6 - - - - - Maximum output rate + + + 12 - - - - - - ms + + 3 - - 10 + + 18 - - 100 + + 3 - - 5 + + 0 - - 15 + + + + + 0 + 0 + + + + AttitudeRaw (gyro, accels) + + + true + + + true + + + false + + + + 6 + + + 12 + + + 0 + + + 12 + + + + + Refresh rate + + + + + + + ms + + + 10 + + + 100 + + + 20 + + + + + + + + + + + 0 + 0 + + + + AttitudeActual + + + true + + + true + + + false + + + + 6 + + + 12 + + + 0 + + + 12 + + + + + send raw data to board + + + + + + + + 75 + true + + + + + + + use values from simulator + + + true + + + + + + + + + + calculate from AttitudeRaw + + + + + + + + + + Qt::Vertical + + + QSizePolicy::Expanding + + + + 20 + 40 + + + + + + + + + + + Other data + + + + 12 - - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - + + 3 + + + 18 + + + 3 + + + 0 + + + + + + 0 + 0 + + + + HomeLocation + + + true + + + true + + + false + + + + 6 + + + 12 + + + 0 + + + 12 + + + + + + 0 + 0 + + + + Refresh rate + + + + + + + + 0 + 0 + + + + 0 - update once, or every N seconds + + + sec + + + 10 + + + + + + + + + + + 0 + 0 + + + + GPSPosition + + + true + + + true + + + false + + + + 6 + + + 12 + + + 0 + + + 12 + + + + + Refresh rate + + + + + + + ms + + + 100 + + + 2000 + + + 500 + + + + + + + + + + + 0 + 0 + + + + SonarAltitude + + + true + + + true + + + false + + + + 3 + + + 6 + + + 3 + + + 0 + + + 0 + + + + + 6 + + + 6 + + + + + Range detection + + + + + + + m + + + 1 + + + 10 + + + 5 + + + + + + + Refresh rate + + + + + + + ms + + + 20 + + + 2000 + + + 10 + + + 50 + + + + + + + + + + + + + 0 + 0 + + + + Map command from simulator + + + true + + + true + + + false + + + + 3 + + + 12 + + + 0 + + + 12 + + + + + + 75 + true + + + + to GCSReciver + + + true + + + + + + + false + + + to ManualCtrll (not implemented) + + + + + + + + + + 6 + + + + + Maximum output rate + + + + + + + ms + + + 10 + + + 100 + + + 5 + + + 15 + + + + + + + + + Qt::Vertical + + + QSizePolicy::Expanding + + + + 20 + 40 + + + + + + + + + From d765ac01d5d18a4fb507f0cbc73b1197c9718acf Mon Sep 17 00:00:00 2001 From: Fredrik Arvidsson Date: Fri, 5 Oct 2012 14:30:37 +0200 Subject: [PATCH 096/105] Added new icons and fixed icon states when selected/highlighted. --- .../src/libs/utils/mylistwidget.h | 23 +----------------- .../src/libs/utils/mytabbedstackwidget.cpp | 1 + .../src/plugins/config/configgadgetwidget.cpp | 13 +++++----- .../plugins/config/images/output_normal.png | Bin 29360 -> 20473 bytes .../plugins/config/images/output_selected.png | Bin 29406 -> 20691 bytes 5 files changed, 9 insertions(+), 28 deletions(-) diff --git a/ground/openpilotgcs/src/libs/utils/mylistwidget.h b/ground/openpilotgcs/src/libs/utils/mylistwidget.h index 59ac41b37..176063681 100644 --- a/ground/openpilotgcs/src/libs/utils/mylistwidget.h +++ b/ground/openpilotgcs/src/libs/utils/mylistwidget.h @@ -31,29 +31,8 @@ #include "utils_global.h" -#include #include -class ListWidgetItemDelegate : public QStyledItemDelegate -{ -public: - ListWidgetItemDelegate(QObject* parent = 0) : QStyledItemDelegate(parent) {} - - void paint(QPainter* painter, const QStyleOptionViewItem& option, const QModelIndex& index) const - { - Q_ASSERT(index.isValid()); - - QStyleOptionViewItemV4 opt = option; - initStyleOption(&opt, index); - - if (opt.state & QStyle::State_MouseOver) { - opt.icon = opt.icon.pixmap(opt.decorationSize, QIcon::Normal, QIcon::On); - opt.state &= ~QStyle::State_Selected; - } - QStyledItemDelegate::paint(painter, opt, index); - } -}; - /* * MyListWidget is a plain QListWidget but with the added option * to place the icon above the label in ListMode. This is achieved @@ -63,7 +42,7 @@ class QTCREATOR_UTILS_EXPORT MyListWidget : public QListWidget { Q_OBJECT public: - MyListWidget(QWidget *parent) : QListWidget(parent), m_iconAbove(false) { setItemDelegate(new ListWidgetItemDelegate());} + MyListWidget(QWidget *parent) : QListWidget(parent), m_iconAbove(false) {} void setIconAbove(bool iconAbove) { m_iconAbove = iconAbove; } protected: QStyleOptionViewItem viewOptions() const; diff --git a/ground/openpilotgcs/src/libs/utils/mytabbedstackwidget.cpp b/ground/openpilotgcs/src/libs/utils/mytabbedstackwidget.cpp index 3db71a316..24e12b833 100644 --- a/ground/openpilotgcs/src/libs/utils/mytabbedstackwidget.cpp +++ b/ground/openpilotgcs/src/libs/utils/mytabbedstackwidget.cpp @@ -48,6 +48,7 @@ MyTabbedStackWidget::MyTabbedStackWidget(QWidget *parent, bool isVertical, bool toplevelLayout->addWidget(m_stackWidget); m_listWidget->setFlow(QListView::TopToBottom); m_listWidget->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Expanding); + m_listWidget->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff); } else { toplevelLayout = new QVBoxLayout; toplevelLayout->addWidget(m_stackWidget); diff --git a/ground/openpilotgcs/src/plugins/config/configgadgetwidget.cpp b/ground/openpilotgcs/src/plugins/config/configgadgetwidget.cpp index 5da9bd83d..e675e66f5 100644 --- a/ground/openpilotgcs/src/plugins/config/configgadgetwidget.cpp +++ b/ground/openpilotgcs/src/plugins/config/configgadgetwidget.cpp @@ -70,24 +70,24 @@ ConfigGadgetWidget::ConfigGadgetWidget(QWidget *parent) : QWidget(parent) qwd = new DefaultHwSettingsWidget(this); QIcon *icon = new QIcon(); icon->addFile(":/configgadget/images/hardware_normal.png", QSize(), QIcon::Normal, QIcon::Off); - icon->addFile(":/configgadget/images/hardware_selected.png", QSize(), QIcon::Normal, QIcon::On); + icon->addFile(":/configgadget/images/hardware_selected.png", QSize(), QIcon::Selected, QIcon::Off); ftw->insertTab(ConfigGadgetWidget::hardware, qwd, *icon, QString("Hardware")); icon = new QIcon(); icon->addFile(":/configgadget/images/vehicle_normal.png", QSize(), QIcon::Normal, QIcon::Off); - icon->addFile(":/configgadget/images/vehicle_selected.png", QSize(), QIcon::Normal, QIcon::On); + icon->addFile(":/configgadget/images/vehicle_selected.png", QSize(), QIcon::Selected, QIcon::Off); qwd = new ConfigVehicleTypeWidget(this); ftw->insertTab(ConfigGadgetWidget::aircraft, qwd, *icon, QString("Vehicle")); icon = new QIcon(); icon->addFile(":/configgadget/images/input_normal.png", QSize(), QIcon::Normal, QIcon::Off); - icon->addFile(":/configgadget/images/input_selected.png", QSize(), QIcon::Normal, QIcon::On); + icon->addFile(":/configgadget/images/input_selected.png", QSize(), QIcon::Selected, QIcon::Off); qwd = new ConfigInputWidget(this); ftw->insertTab(ConfigGadgetWidget::input, qwd, *icon, QString("Input")); icon = new QIcon(); icon->addFile(":/configgadget/images/output_normal.png", QSize(), QIcon::Normal, QIcon::Off); - icon->addFile(":/configgadget/images/output_selected.png", QSize(), QIcon::Normal, QIcon::On); + icon->addFile(":/configgadget/images/output_selected.png", QSize(), QIcon::Selected, QIcon::Off); qwd = new ConfigOutputWidget(this); ftw->insertTab(ConfigGadgetWidget::output, qwd, *icon, QString("Output")); @@ -106,6 +106,7 @@ ConfigGadgetWidget::ConfigGadgetWidget(QWidget *parent) : QWidget(parent) qwd = new ConfigTxPIDWidget(this); ftw->insertTab(ConfigGadgetWidget::txpid, qwd, QIcon(":/configgadget/images/txpid.png"), QString("TxPID")); + ftw->setCurrentIndex(0); // ********************* // Listen to autopilot connection events @@ -167,7 +168,7 @@ void ConfigGadgetWidget::onAutopilotDisconnect() { QIcon *icon = new QIcon(); icon->addFile(":/configgadget/images/hardware_normal.png", QSize(), QIcon::Normal, QIcon::Off); - icon->addFile(":/configgadget/images/hardware_selected.png", QSize(), QIcon::Normal, QIcon::On); + icon->addFile(":/configgadget/images/hardware_selected.png", QSize(), QIcon::Selected, QIcon::Off); ftw->insertTab(ConfigGadgetWidget::hardware, qwd, *icon, QString("Hardware")); ftw->setCurrentIndex(ConfigGadgetWidget::hardware); @@ -194,7 +195,7 @@ void ConfigGadgetWidget::onAutopilotConnect() { qwd = new ConfigCCHWWidget(this); QIcon *icon = new QIcon(); icon->addFile(":/configgadget/images/hardware_normal.png", QSize(), QIcon::Normal, QIcon::Off); - icon->addFile(":/configgadget/images/hardware_selected.png", QSize(), QIcon::Normal, QIcon::On); + icon->addFile(":/configgadget/images/hardware_selected.png", QSize(), QIcon::Selected, QIcon::Off); ftw->insertTab(ConfigGadgetWidget::hardware, qwd, *icon, QString("HW Settings")); ftw->setCurrentIndex(ConfigGadgetWidget::hardware); } else if ((board & 0xff00) == 256 ) { diff --git a/ground/openpilotgcs/src/plugins/config/images/output_normal.png b/ground/openpilotgcs/src/plugins/config/images/output_normal.png index b7e7136896bb2214b10f2fdfa6971d2bcd3c97f1..f5754786c64d37ab43d880012d4203777a133e98 100644 GIT binary patch delta 17871 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 IekSJs0Kl=ccK`qY diff --git a/ground/openpilotgcs/src/plugins/config/images/output_selected.png b/ground/openpilotgcs/src/plugins/config/images/output_selected.png index 6d14fcd97d3b396b6ddeeef345d42ac4e21ca94d..016272b5e97261a1005ce2f2eca1a0bcdf785e07 100644 GIT binary patch delta 18091 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 delta 26874 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 SM}d!kPMtVwTx#eX^?v}XNG6d0 From a57435f183146d1c66c9b4ca0902c15736df1332 Mon Sep 17 00:00:00 2001 From: Fredrik Arvidsson Date: Fri, 5 Oct 2012 16:24:56 +0200 Subject: [PATCH 097/105] Added more new icons. --- .../src/plugins/config/configgadget.qrc | 2 ++ .../src/plugins/config/configgadgetwidget.cpp | 30 ++++++++++++------ .../src/plugins/config/images/ins_normal.png | Bin 0 -> 38934 bytes .../plugins/config/images/ins_selected.png | Bin 0 -> 39931 bytes 4 files changed, 23 insertions(+), 9 deletions(-) create mode 100644 ground/openpilotgcs/src/plugins/config/images/ins_normal.png create mode 100644 ground/openpilotgcs/src/plugins/config/images/ins_selected.png diff --git a/ground/openpilotgcs/src/plugins/config/configgadget.qrc b/ground/openpilotgcs/src/plugins/config/configgadget.qrc index 2393d0d55..8ad126f99 100644 --- a/ground/openpilotgcs/src/plugins/config/configgadget.qrc +++ b/ground/openpilotgcs/src/plugins/config/configgadget.qrc @@ -27,5 +27,7 @@ images/hardware_selected.png images/vehicle_normal.png images/vehicle_selected.png + images/ins_selected.png + images/ins_normal.png diff --git a/ground/openpilotgcs/src/plugins/config/configgadgetwidget.cpp b/ground/openpilotgcs/src/plugins/config/configgadgetwidget.cpp index e675e66f5..5a5a76fb3 100644 --- a/ground/openpilotgcs/src/plugins/config/configgadgetwidget.cpp +++ b/ground/openpilotgcs/src/plugins/config/configgadgetwidget.cpp @@ -91,8 +91,11 @@ ConfigGadgetWidget::ConfigGadgetWidget(QWidget *parent) : QWidget(parent) qwd = new ConfigOutputWidget(this); ftw->insertTab(ConfigGadgetWidget::output, qwd, *icon, QString("Output")); + icon = new QIcon(); + icon->addFile(":/configgadget/images/ins_normal.png", QSize(), QIcon::Normal, QIcon::Off); + icon->addFile(":/configgadget/images/ins_selected.png", QSize(), QIcon::Selected, QIcon::Off); qwd = new DefaultAttitudeWidget(this); - ftw->insertTab(ConfigGadgetWidget::sensors, qwd, QIcon(":/configgadget/images/AHRS-v1.3.png"), QString("INS")); + ftw->insertTab(ConfigGadgetWidget::sensors, qwd, *icon, QString("INS")); qwd = new ConfigStabilizationWidget(this); ftw->insertTab(ConfigGadgetWidget::stabilization, qwd, QIcon(":/configgadget/images/gyroscope.png"), QString("Stabilization")); @@ -106,7 +109,7 @@ ConfigGadgetWidget::ConfigGadgetWidget(QWidget *parent) : QWidget(parent) qwd = new ConfigTxPIDWidget(this); ftw->insertTab(ConfigGadgetWidget::txpid, qwd, QIcon(":/configgadget/images/txpid.png"), QString("TxPID")); - ftw->setCurrentIndex(0); + ftw->setCurrentIndex(ConfigGadgetWidget::hardware); // ********************* // Listen to autopilot connection events @@ -162,11 +165,14 @@ void ConfigGadgetWidget::onAutopilotDisconnect() { ftw->setCurrentIndex(ConfigGadgetWidget::hardware); ftw->removeTab(ConfigGadgetWidget::sensors); QWidget *qwd = new DefaultAttitudeWidget(this); - ftw->insertTab(ConfigGadgetWidget::sensors, qwd, QIcon(":/configgadget/images/AHRS-v1.3.png"), QString("INS")); + QIcon *icon = new QIcon(); + icon->addFile(":/configgadget/images/ins_normal.png", QSize(), QIcon::Normal, QIcon::Off); + icon->addFile(":/configgadget/images/ins_selected.png", QSize(), QIcon::Selected, QIcon::Off); + ftw->insertTab(ConfigGadgetWidget::sensors, qwd, *icon, QString("INS")); ftw->removeTab(ConfigGadgetWidget::hardware); qwd = new DefaultHwSettingsWidget(this); - QIcon *icon = new QIcon(); + icon = new QIcon(); icon->addFile(":/configgadget/images/hardware_normal.png", QSize(), QIcon::Normal, QIcon::Off); icon->addFile(":/configgadget/images/hardware_selected.png", QSize(), QIcon::Selected, QIcon::Off); ftw->insertTab(ConfigGadgetWidget::hardware, qwd, *icon, QString("Hardware")); @@ -189,14 +195,17 @@ void ConfigGadgetWidget::onAutopilotConnect() { // Delete the INS panel, replace with CC Panel: ftw->setCurrentIndex(ConfigGadgetWidget::hardware); ftw->removeTab(ConfigGadgetWidget::sensors); + QIcon *icon = new QIcon(); + icon->addFile(":/configgadget/images/ins_normal.png", QSize(), QIcon::Normal, QIcon::Off); + icon->addFile(":/configgadget/images/ins_selected.png", QSize(), QIcon::Selected, QIcon::Off); QWidget *qwd = new ConfigCCAttitudeWidget(this); - ftw->insertTab(ConfigGadgetWidget::sensors, qwd, QIcon(":/configgadget/images/AHRS-v1.3.png"), QString("Attitude")); + ftw->insertTab(ConfigGadgetWidget::sensors, qwd, *icon, QString("INS")); ftw->removeTab(ConfigGadgetWidget::hardware); qwd = new ConfigCCHWWidget(this); - QIcon *icon = new QIcon(); + icon = new QIcon(); icon->addFile(":/configgadget/images/hardware_normal.png", QSize(), QIcon::Normal, QIcon::Off); icon->addFile(":/configgadget/images/hardware_selected.png", QSize(), QIcon::Selected, QIcon::Off); - ftw->insertTab(ConfigGadgetWidget::hardware, qwd, *icon, QString("HW Settings")); + ftw->insertTab(ConfigGadgetWidget::hardware, qwd, *icon, QString("Hardware")); ftw->setCurrentIndex(ConfigGadgetWidget::hardware); } else if ((board & 0xff00) == 256 ) { // Mainboard family @@ -216,10 +225,13 @@ void ConfigGadgetWidget::onAutopilotConnect() { ftw->setCurrentIndex(ConfigGadgetWidget::hardware); ftw->removeTab(ConfigGadgetWidget::sensors); QWidget *qwd = new ConfigRevoWidget(this); - ftw->insertTab(ConfigGadgetWidget::sensors, qwd, QIcon(":/configgadget/images/AHRS-v1.3.png"), QString("Revo")); + QIcon *icon = new QIcon(); + icon->addFile(":/configgadget/images/ins_normal.png", QSize(), QIcon::Normal, QIcon::Off); + icon->addFile(":/configgadget/images/ins_selected.png", QSize(), QIcon::Selected, QIcon::Off); + ftw->insertTab(ConfigGadgetWidget::sensors, qwd, *icon, QString("Revo")); ftw->removeTab(ConfigGadgetWidget::hardware); qwd = new ConfigProHWWidget(this); - QIcon *icon = new QIcon(); + icon = new QIcon(); icon->addFile(":/configgadget/images/hardware_normal.png", QSize(), QIcon::Normal, QIcon::Off); icon->addFile(":/configgadget/images/hardware_selected.png", QSize(), QIcon::Normal, QIcon::On); ftw->insertTab(ConfigGadgetWidget::hardware, qwd, *icon, QString("Hardware")); diff --git a/ground/openpilotgcs/src/plugins/config/images/ins_normal.png b/ground/openpilotgcs/src/plugins/config/images/ins_normal.png new file mode 100644 index 0000000000000000000000000000000000000000..a43c42c27fbe4f038b8ccf2a1ccb1781f411d21c GIT binary patch literal 38934 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 literal 0 HcmV?d00001 diff --git a/ground/openpilotgcs/src/plugins/config/images/ins_selected.png b/ground/openpilotgcs/src/plugins/config/images/ins_selected.png new file mode 100644 index 0000000000000000000000000000000000000000..3fb4c027ba2bdd535f1b72b863e849fac15ad8d8 GIT binary patch literal 39931 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 TW4uTS0zaotm>CrsIz|5 Date: Fri, 5 Oct 2012 18:16:04 +0200 Subject: [PATCH 098/105] Added even more new icons. --- .../src/plugins/config/configgadget.qrc | 2 ++ .../src/plugins/config/configgadgetwidget.cpp | 5 ++++- .../config/images/stabilization_normal.png | Bin 0 -> 44542 bytes .../config/images/stabilization_selected.png | Bin 0 -> 50856 bytes 4 files changed, 6 insertions(+), 1 deletion(-) create mode 100644 ground/openpilotgcs/src/plugins/config/images/stabilization_normal.png create mode 100644 ground/openpilotgcs/src/plugins/config/images/stabilization_selected.png diff --git a/ground/openpilotgcs/src/plugins/config/configgadget.qrc b/ground/openpilotgcs/src/plugins/config/configgadget.qrc index 8ad126f99..f0109d68f 100644 --- a/ground/openpilotgcs/src/plugins/config/configgadget.qrc +++ b/ground/openpilotgcs/src/plugins/config/configgadget.qrc @@ -29,5 +29,7 @@ images/vehicle_selected.png images/ins_selected.png images/ins_normal.png + images/stabilization_selected.png + images/stabilization_normal.png diff --git a/ground/openpilotgcs/src/plugins/config/configgadgetwidget.cpp b/ground/openpilotgcs/src/plugins/config/configgadgetwidget.cpp index 5a5a76fb3..9b9f60991 100644 --- a/ground/openpilotgcs/src/plugins/config/configgadgetwidget.cpp +++ b/ground/openpilotgcs/src/plugins/config/configgadgetwidget.cpp @@ -97,8 +97,11 @@ ConfigGadgetWidget::ConfigGadgetWidget(QWidget *parent) : QWidget(parent) qwd = new DefaultAttitudeWidget(this); ftw->insertTab(ConfigGadgetWidget::sensors, qwd, *icon, QString("INS")); + icon = new QIcon(); + icon->addFile(":/configgadget/images/stabilization_normal.png", QSize(), QIcon::Normal, QIcon::Off); + icon->addFile(":/configgadget/images/stabilization_selected.png", QSize(), QIcon::Selected, QIcon::Off); qwd = new ConfigStabilizationWidget(this); - ftw->insertTab(ConfigGadgetWidget::stabilization, qwd, QIcon(":/configgadget/images/gyroscope.png"), QString("Stabilization")); + ftw->insertTab(ConfigGadgetWidget::stabilization, qwd, *icon, QString("Stabilization")); qwd = new ConfigAutotuneWidget(this); ftw->insertTab(ConfigGadgetWidget::autotune, qwd, QIcon(":/configgadget/images/gyroscope.png"), QString("Autotune")); diff --git a/ground/openpilotgcs/src/plugins/config/images/stabilization_normal.png b/ground/openpilotgcs/src/plugins/config/images/stabilization_normal.png new file mode 100644 index 0000000000000000000000000000000000000000..87b8157bdebee05a8e13884166cd5bf73c14c4d0 GIT binary patch literal 44542 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 literal 0 HcmV?d00001 diff --git a/ground/openpilotgcs/src/plugins/config/images/stabilization_selected.png b/ground/openpilotgcs/src/plugins/config/images/stabilization_selected.png new file mode 100644 index 0000000000000000000000000000000000000000..b2b0472a8298c893bf0bbfdf76fc2263b4f5461f GIT binary patch literal 50856 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 BvuywX literal 0 HcmV?d00001 From ffe6c0bcb5f5745440d7f5d3da3cf7a67eefb54b Mon Sep 17 00:00:00 2001 From: Fredrik Arvidsson Date: Sat, 6 Oct 2012 10:42:57 +0200 Subject: [PATCH 099/105] Added icons and updated some other code. --- .../src/libs/utils/mytabbedstackwidget.cpp | 9 ++- .../src/plugins/config/configgadget.qrc | 15 ++-- .../src/plugins/config/configgadgetwidget.cpp | 70 +++++++++--------- .../plugins/config/images/autotune_normal.png | Bin 0 -> 33616 bytes .../config/images/autotune_selected.png | Bin 0 -> 33616 bytes .../plugins/config/images/camstab_normal.png | Bin 0 -> 34378 bytes .../config/images/camstab_selected.png | Bin 0 -> 35871 bytes .../src/plugins/config/images/ins_normal.png | Bin 38934 -> 39464 bytes .../plugins/config/images/ins_selected.png | Bin 39931 -> 40570 bytes .../config/images/stabilization_normal.png | Bin 44542 -> 54106 bytes .../config/images/stabilization_selected.png | Bin 50856 -> 59643 bytes .../plugins/config/images/txpid_normal.png | Bin 0 -> 32819 bytes .../plugins/config/images/txpid_selected.png | Bin 0 -> 35059 bytes 13 files changed, 50 insertions(+), 44 deletions(-) create mode 100644 ground/openpilotgcs/src/plugins/config/images/autotune_normal.png create mode 100644 ground/openpilotgcs/src/plugins/config/images/autotune_selected.png create mode 100644 ground/openpilotgcs/src/plugins/config/images/camstab_normal.png create mode 100644 ground/openpilotgcs/src/plugins/config/images/camstab_selected.png create mode 100644 ground/openpilotgcs/src/plugins/config/images/txpid_normal.png create mode 100644 ground/openpilotgcs/src/plugins/config/images/txpid_selected.png diff --git a/ground/openpilotgcs/src/libs/utils/mytabbedstackwidget.cpp b/ground/openpilotgcs/src/libs/utils/mytabbedstackwidget.cpp index 24e12b833..4a28659a0 100644 --- a/ground/openpilotgcs/src/libs/utils/mytabbedstackwidget.cpp +++ b/ground/openpilotgcs/src/libs/utils/mytabbedstackwidget.cpp @@ -55,14 +55,19 @@ MyTabbedStackWidget::MyTabbedStackWidget(QWidget *parent, bool isVertical, bool toplevelLayout->addWidget(m_listWidget); m_listWidget->setFlow(QListView::LeftToRight); m_listWidget->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed); + m_listWidget->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff); } - if (m_iconAbove && m_vertical) + + if (m_iconAbove && m_vertical) { m_listWidget->setFixedWidth(90); // this should be computed instead + m_listWidget->setContentsMargins(0, 2, 0, 0); + } else { + m_listWidget->setContentsMargins(0, 0, 2, 0); + } toplevelLayout->setSpacing(0); toplevelLayout->setContentsMargins(0, 0, 0, 0); m_listWidget->setSpacing(0); - m_listWidget->setContentsMargins(0, 0, 0, 0); m_stackWidget->setContentsMargins(0, 0, 0, 0); setLayout(toplevelLayout); diff --git a/ground/openpilotgcs/src/plugins/config/configgadget.qrc b/ground/openpilotgcs/src/plugins/config/configgadget.qrc index f0109d68f..532ed8b95 100644 --- a/ground/openpilotgcs/src/plugins/config/configgadget.qrc +++ b/ground/openpilotgcs/src/plugins/config/configgadget.qrc @@ -1,24 +1,15 @@ images/help2.png - images/Airframe.png - images/Servo.png images/ahrs-calib.svg - images/AHRS-v1.3.png images/paper-plane.svg images/curve-bg.svg images/multirotor-shapes.svg images/ccpm_setup.svg images/PipXtreme.png - images/Transmitter.png images/help.png images/coptercontrol.svg - images/hw_config.png - images/gyroscope.png - images/TX.svg images/TX2.svg - images/camera.png - images/txpid.png images/output_selected.png images/output_normal.png images/input_selected.png @@ -31,5 +22,11 @@ images/ins_normal.png images/stabilization_selected.png images/stabilization_normal.png + images/autotune_selected.png + images/autotune_normal.png + images/txpid_selected.png + images/txpid_normal.png + images/camstab_selected.png + images/camstab_normal.png diff --git a/ground/openpilotgcs/src/plugins/config/configgadgetwidget.cpp b/ground/openpilotgcs/src/plugins/config/configgadgetwidget.cpp index 9b9f60991..12276bbca 100644 --- a/ground/openpilotgcs/src/plugins/config/configgadgetwidget.cpp +++ b/ground/openpilotgcs/src/plugins/config/configgadgetwidget.cpp @@ -67,10 +67,10 @@ ConfigGadgetWidget::ConfigGadgetWidget(QWidget *parent) : QWidget(parent) // ********************* QWidget *qwd; - qwd = new DefaultHwSettingsWidget(this); QIcon *icon = new QIcon(); icon->addFile(":/configgadget/images/hardware_normal.png", QSize(), QIcon::Normal, QIcon::Off); icon->addFile(":/configgadget/images/hardware_selected.png", QSize(), QIcon::Selected, QIcon::Off); + qwd = new DefaultHwSettingsWidget(this); ftw->insertTab(ConfigGadgetWidget::hardware, qwd, *icon, QString("Hardware")); icon = new QIcon(); @@ -103,14 +103,23 @@ ConfigGadgetWidget::ConfigGadgetWidget(QWidget *parent) : QWidget(parent) qwd = new ConfigStabilizationWidget(this); ftw->insertTab(ConfigGadgetWidget::stabilization, qwd, *icon, QString("Stabilization")); + icon = new QIcon(); + icon->addFile(":/configgadget/images/autotune_normal.png", QSize(), QIcon::Normal, QIcon::Off); + icon->addFile(":/configgadget/images/autotune_selected.png", QSize(), QIcon::Selected, QIcon::Off); qwd = new ConfigAutotuneWidget(this); - ftw->insertTab(ConfigGadgetWidget::autotune, qwd, QIcon(":/configgadget/images/gyroscope.png"), QString("Autotune")); + ftw->insertTab(ConfigGadgetWidget::autotune, qwd, *icon, QString("Autotune")); + icon = new QIcon(); + icon->addFile(":/configgadget/images/camstab_normal.png", QSize(), QIcon::Normal, QIcon::Off); + icon->addFile(":/configgadget/images/camstab_selected.png", QSize(), QIcon::Selected, QIcon::Off); qwd = new ConfigCameraStabilizationWidget(this); - ftw->insertTab(ConfigGadgetWidget::camerastabilization, qwd, QIcon(":/configgadget/images/camera.png"), QString("Camera Stab")); + ftw->insertTab(ConfigGadgetWidget::camerastabilization, qwd, *icon, QString("Camera Stab")); + icon = new QIcon(); + icon->addFile(":/configgadget/images/txpid_normal.png", QSize(), QIcon::Normal, QIcon::Off); + icon->addFile(":/configgadget/images/txpid_selected.png", QSize(), QIcon::Selected, QIcon::Off); qwd = new ConfigTxPIDWidget(this); - ftw->insertTab(ConfigGadgetWidget::txpid, qwd, QIcon(":/configgadget/images/txpid.png"), QString("TxPID")); + ftw->insertTab(ConfigGadgetWidget::txpid, qwd, *icon, QString("TxPID")); ftw->setCurrentIndex(ConfigGadgetWidget::hardware); // ********************* @@ -122,8 +131,9 @@ ConfigGadgetWidget::ConfigGadgetWidget(QWidget *parent) : QWidget(parent) connect(telMngr, SIGNAL(disconnected()), this, SLOT(onAutopilotDisconnect())); // And check whether by any chance we are not already connected - if (telMngr->isConnected()) + if (telMngr->isConnected()) { onAutopilotConnect(); + } help = 0; connect(ftw,SIGNAL(currentAboutToShow(int,bool*)),this,SLOT(tabAboutToChange(int,bool*)));//,Qt::BlockingQueuedConnection); @@ -134,7 +144,7 @@ ConfigGadgetWidget::ConfigGadgetWidget(QWidget *parent) : QWidget(parent) if (pipxStatusObj != NULL ) { connect(pipxStatusObj, SIGNAL(objectUpdated(UAVObject*)), this, SLOT(updatePipXStatus(UAVObject*))); } else { - qDebug() << "Error: Object is unknown (PipXStatus)."; + qDebug() << "Error: Object is unknown (PipXStatus)."; } // Create the timer that is used to timeout the connection to the PipX. @@ -145,8 +155,6 @@ ConfigGadgetWidget::ConfigGadgetWidget(QWidget *parent) : QWidget(parent) ConfigGadgetWidget::~ConfigGadgetWidget() { - // Do nothing - // TODO: properly delete all the tabs in ftw before exiting } @@ -160,24 +168,24 @@ void ConfigGadgetWidget::startInputWizard() void ConfigGadgetWidget::resizeEvent(QResizeEvent *event) { - QWidget::resizeEvent(event); } void ConfigGadgetWidget::onAutopilotDisconnect() { ftw->setCurrentIndex(ConfigGadgetWidget::hardware); ftw->removeTab(ConfigGadgetWidget::sensors); - QWidget *qwd = new DefaultAttitudeWidget(this); + QIcon *icon = new QIcon(); icon->addFile(":/configgadget/images/ins_normal.png", QSize(), QIcon::Normal, QIcon::Off); icon->addFile(":/configgadget/images/ins_selected.png", QSize(), QIcon::Selected, QIcon::Off); + QWidget *qwd = new DefaultAttitudeWidget(this); ftw->insertTab(ConfigGadgetWidget::sensors, qwd, *icon, QString("INS")); ftw->removeTab(ConfigGadgetWidget::hardware); - qwd = new DefaultHwSettingsWidget(this); icon = new QIcon(); icon->addFile(":/configgadget/images/hardware_normal.png", QSize(), QIcon::Normal, QIcon::Off); icon->addFile(":/configgadget/images/hardware_selected.png", QSize(), QIcon::Selected, QIcon::Off); + qwd = new DefaultHwSettingsWidget(this); ftw->insertTab(ConfigGadgetWidget::hardware, qwd, *icon, QString("Hardware")); ftw->setCurrentIndex(ConfigGadgetWidget::hardware); @@ -198,68 +206,64 @@ void ConfigGadgetWidget::onAutopilotConnect() { // Delete the INS panel, replace with CC Panel: ftw->setCurrentIndex(ConfigGadgetWidget::hardware); ftw->removeTab(ConfigGadgetWidget::sensors); + QIcon *icon = new QIcon(); icon->addFile(":/configgadget/images/ins_normal.png", QSize(), QIcon::Normal, QIcon::Off); icon->addFile(":/configgadget/images/ins_selected.png", QSize(), QIcon::Selected, QIcon::Off); QWidget *qwd = new ConfigCCAttitudeWidget(this); ftw->insertTab(ConfigGadgetWidget::sensors, qwd, *icon, QString("INS")); ftw->removeTab(ConfigGadgetWidget::hardware); - qwd = new ConfigCCHWWidget(this); + icon = new QIcon(); icon->addFile(":/configgadget/images/hardware_normal.png", QSize(), QIcon::Normal, QIcon::Off); icon->addFile(":/configgadget/images/hardware_selected.png", QSize(), QIcon::Selected, QIcon::Off); + qwd = new ConfigCCHWWidget(this); ftw->insertTab(ConfigGadgetWidget::hardware, qwd, *icon, QString("Hardware")); ftw->setCurrentIndex(ConfigGadgetWidget::hardware); - } else if ((board & 0xff00) == 256 ) { - // Mainboard family - Q_ASSERT(0); - /* - ftw->setCurrentIndex(ConfigGadgetWidget::hardware); - ftw->removeTab(ConfigGadgetWidget::sensors); - QWidget *qwd = new ConfigAHRSWidget(this); - ftw->insertTab(ConfigGadgetWidget::sensors, qwd, QIcon(":/configgadget/images/AHRS-v1.3.png"), QString("INS")); - ftw->removeTab(ConfigGadgetWidget::hardware); - qwd = new ConfigProHWWidget(this); - ftw->insertTab(ConfigGadgetWidget::hardware, qwd, QIcon(":/configgadget/images/hw_config.png"), QString("HW Settings")); - ftw->setCurrentIndex(ConfigGadgetWidget::hardware); - */ } else if ((board & 0xff00) == 0x0900) { // Revolution sensor calibration ftw->setCurrentIndex(ConfigGadgetWidget::hardware); ftw->removeTab(ConfigGadgetWidget::sensors); - QWidget *qwd = new ConfigRevoWidget(this); + QIcon *icon = new QIcon(); icon->addFile(":/configgadget/images/ins_normal.png", QSize(), QIcon::Normal, QIcon::Off); icon->addFile(":/configgadget/images/ins_selected.png", QSize(), QIcon::Selected, QIcon::Off); + QWidget *qwd = new ConfigRevoWidget(this); ftw->insertTab(ConfigGadgetWidget::sensors, qwd, *icon, QString("Revo")); ftw->removeTab(ConfigGadgetWidget::hardware); - qwd = new ConfigProHWWidget(this); + icon = new QIcon(); icon->addFile(":/configgadget/images/hardware_normal.png", QSize(), QIcon::Normal, QIcon::Off); icon->addFile(":/configgadget/images/hardware_selected.png", QSize(), QIcon::Normal, QIcon::On); + qwd = new ConfigProHWWidget(this); ftw->insertTab(ConfigGadgetWidget::hardware, qwd, *icon, QString("Hardware")); ftw->setCurrentIndex(ConfigGadgetWidget::hardware); + } else { + //Unknown board + Q_ASSERT(0); } } emit autopilotConnected(); } -void ConfigGadgetWidget::tabAboutToChange(int i,bool * proceed) +void ConfigGadgetWidget::tabAboutToChange(int i, bool * proceed) { Q_UNUSED(i); - *proceed=true; - ConfigTaskWidget * wid=qobject_cast(ftw->currentWidget()); - if(!wid) + *proceed = true; + ConfigTaskWidget * wid = qobject_cast(ftw->currentWidget()); + if(!wid) { return; + } if(wid->isDirty()) { int ans=QMessageBox::warning(this,tr("Unsaved changes"),tr("The tab you are leaving has unsaved changes," "if you proceed they will be lost." "Do you still want to proceed?"),QMessageBox::Yes,QMessageBox::No); - if(ans==QMessageBox::No) + if(ans==QMessageBox::No) { *proceed=false; - else + } else { wid->setDirty(false); + } } } diff --git a/ground/openpilotgcs/src/plugins/config/images/autotune_normal.png b/ground/openpilotgcs/src/plugins/config/images/autotune_normal.png new file mode 100644 index 0000000000000000000000000000000000000000..de8bc9fd2165608bc65660942526e77ed6656e8e GIT binary patch literal 33616 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 literal 0 HcmV?d00001 diff --git a/ground/openpilotgcs/src/plugins/config/images/autotune_selected.png b/ground/openpilotgcs/src/plugins/config/images/autotune_selected.png new file mode 100644 index 0000000000000000000000000000000000000000..de8bc9fd2165608bc65660942526e77ed6656e8e GIT binary patch literal 33616 zcmXV12RzjO|Nor3>^-tal7x_%y;pV-vNy>nSy?9`3L%8-kiD|UT}dig$;i5sWOMeJ z_ka8T{yna)bocqZ$LsxiJ;&=4XKbiVMb1VJK@gR$j>c^WA_9LUf=G$M+iuXWBk)G% zt7GX0K@<$Z#}pyE8S6Zyx$!QoQL6cIZ>qwYLAt}q$xahD^ zy`R6#{S{G(Bm-{<5w4;f#F?5{@r8-b8H_{&TT2SLv=Ax5ojbA>ITYT89Xuu_@z3axyynvqtd*B_FYn~QJ>4CpcoF-kiS zIb^AbdLiWsY`d^avNizlE zgmZ-Vv#w*Sg&^a+3H`%FjjWeD;>EmiYAM%xuKXl8|G@|!!<8^nQ0;vsSV;2q_cl)O zeZ8x+7LU1S$upFgS5s*yV*IUdr2>Ps#1$*hH1(U<1Pfi(A{Ku07QLiH;tgTtlC=P<{3i_3|m%$d>nOCNO*^e^~$ zzCC9&;nho)(z$Uv-jv5ohjUx;5s_@HwN_iQ{8vc)=}An7_Knw(^(KnHC>zyV-^;K) z(<-DGa(;XxE9qi>_RymbY>F?X3l@he+-WA0l+=60&`T^N5}zN4iG1l+tGg*omg>}3 z$6HBR@rAASZY8`uZqI43E)YQzbW%z8)T#=aZr7N^zGsm1&ywwrx~QvHTveDh!sgEG ze&A8F^tg>~CXLH5W61nx-?H{n#u9utkdi8fDXRCmn*eJz3ki!GYamO_8~qa2kr%AJ zreZQTR^KdU(q#IWSqL@>hB768Cr`VT#-GM6C~8_(UQ#|=PGPoV)@PbjW_u^BTFXr0 z&U_i!uk;GD@*LyUJM4Gd%H-e2mb<<8F;#vSZh0Cs)`u@NU6{Kb^X6X0|eXOoN~6mP%JMikX4tsC1Kuhd*`*QGRgd#hxoUT4apV- zN;7uC<7XK+ul>2kULvXAdc(!qvphW`-J(LL!lXibwNtu!y)>t!Q?uRjIFeem_tsVG ztJ-c!0~c}@@BF?qQ%YWX(LhmduUe$svzWc0T_X_XUAplmx62lptM5}f8{D~g#1STX zYI^E*RJx~4X+hjT$wxdzIl!XOBlXZnfm5`1YRg33rdvh5*dfg!WA0gU>##!6s8)g& z%}b9j*7JPxUSGVv6!8=DU*gv@STWehx^2)}a;-#OUtYhr|3`me|5&C}w&IO(@x|=L z?D1?&v;DoGd%{icn_66S>;K*>vD|3t@Q%JGYguezcF(3kt174J%2<0AjnvN6u(q&-Q$-T0*x%F@ocB1x z{XRTml)Ec8n>FxuLpiKxH+@;u&0>&ta6)3fiJ|Y>XOEma*(2I+%xrAca@nu{y{`H) zzg3k33+pTmppaLTLEvC-x+%89$aVHDTAy7ld)1*& zr9YD`mwPcQfX7Q*QLghwR7&!zhic`Q3{soiR^0x%2J}_BMAx77c)w^Cb^!U1sk%g!wrqSUjCWl>#DK5U6af&&EDPlrkI%t7C*5^AabNcm%vWm~G z&V#N$U6=pOUeC3nPA|{+mqG1K^?ULI73S`T^}T(~Dbb96fvNVWCiT`LltN2~OX;_P zetBincc#0hN2bynKW7>p#_`_68|)z+`;u#;Q&t@Zr%K%H)w@Kch@)J@~9zeYKKDw^I-8WUR8rtanLI?LG%yiO%eWtQ;v z%b&}>8o_^;56CbFTvT$C0WU);=SW7l1329{MenO+ZD(m^-^n_*a*X({CP=%TGsA-L?l`=A`9>g^L_c+fNlXg)BM^VD8iSY_`!pp8Kgu zc(EwoAwOWf-ST+5erkciyv01LM$XP_YyTa1b)%}osKahoWnJ~R`b_Mo zvenu2#O8FweRN>{&hWJM0daKH;92rs5{>$Wq|Btg7^;}n+?z_WvVW8xoi3l0st-C3 z^5-(26`u7~GhY-9$B(X#4-CH)v}M#aC`s@sCopt3KsZq2;S%XxvOQYsL6;8Ovm*rJ22--Z%=QW4*xWo1qYR7)Bt- zE=C|mBvnlqHBC%w`Rd68;tK`hiIL!sLIF1D{2ztx(0@PNj(+DVeGvg;U|`7gc}7CR zMcTmx{^MzBTpZb8;ib?_HmCQw4s)uJVI*BsChx%^@2wKcg*28KE!wE z7ZiSFx`JTsMf5C;l1S5pae-mU{Iqqu)N-EiW;D6Ujxth|QiW-^O8Es-1hY{1RSul2 zfV>JAUNHAr2xPYN1oLc-{+DRUx4(+g+D379nHnVA`F^#bFo z5b0CeG`{5^D*Ol~7<;h%wrHQ&OBb7Q^U4U!^mIqTYTI2{=xWhsXnBPB2&07-_G1)D ztT+)j0pFVmbEiFNEIb(s&(q)?&erEw7S#Rufrpf#P=JdLF}F4`!9pL0fOzQR>>oW! zNupRtYUb(-y<=)nRbB1q&PNT zrSb=*MZ-L`C&C?KgGXGS&>M5Jx5wV87mko*B)3^vTT=+x`lI<)&Y#@L$%%!Xy}RsA z>8pO%0uMGwW!&FcoK=aFv4FjHb8=(zPh->er$cGK#5xPgI*ZDagX(G#;p^8E27df_ zIWRal|F1v0<;kAl#fulyDZBA;B_0^e>}{zJ?RBi1P^OGlQ$AR07~EGn!_VWtYAZec_D#34s_IgX;pL3J zOWFOrIfkhgudmv@HslzucA9+nHh`=9#j*EZcxMaBSv<~EFdDpabGdd84!{@Y`eiVm z7y2?D9&Wol@bMuumX~Ah+1j2>apEhaexSK7+jAC8l1ffp7<#}7nX@6u@#gzmR;T#e z7w|5t5()|@FY1K}Key(42fJ{eDDWqX$}|QewM|ViX=zNKa(QuNp&Qxg8ojL`4s~^P z7A`I=BO@Bykaek!-Jg0vd!y##{x*as{HcecQ&Uq7Oj;^c$xQD#glhW`Ly##8GOY0I z`&pRKPa60uO_P^YR8*%)DSW4YUWj%D?J`GfG2f7seAe13`{T!td<)?ei`R?xMpy>C z>Qrg=f!n$eBe}za2b8I)sn4~F@Gnq!iqO3ZyPhv!z7R6LIiIELKfT=6==4r zwO83y;I&RrIo3|L5OZWP9L}N=XGn;Pnr}+IK9Z^IYN|cAbiu0Pv5bnDf zyv>)$r5NuMzLSklRX${JZum`ba&VXod# z?2L>C3F1mhXF`M(yHg>3L&HBud#hg;9`UhiV&#Jr!1Za!aR*aLe7ZON{!z-w%WuU- z;A78s1!X0ecINEwzn8|Ql`qGR)Ji~>QmI@xskn1?@#HeZ8x<9$%s?F*ahP{D5^?k+ zqigrdbVo3Qo}L~bngIr<;w)WhzJ5<$&}K< zPEDX;@QZM|T$*>*gE^hS^pJ3eB0-4WPJG0HUqfBRMG?6Xp|(yx&p)(odrXEo+i%|L zjX3EQ6^h@!DkLNn5gThmR4m9aG}HnOvLeGklzdXo(&z7$mzR&&d0}_*NBL~j?$oSf z>kIqapW0xUU84K_viLK^S@_Ei-#H>_X=$9#SwHII*w~nlsHkWJg9@zOja<^1NWlf# z*FE06b$GD5YyG^(k??ms;&hy_byaDLtmAZls?x&{#Pt8B&4oYq2o2@<=1h+|2tmd6 z_xEG$tgTPxIT?)0#bN1mxD43)8gnl;u+lHA#0Z4S zhoYkSAW62&;AyL@#buqD*G=0-nHuGs~4_-XD0ZC!G%b%ZIPT}(} zxm{*QNWkC|2KNpQ=Fd)#`S{K^oEC38sT|48feq=o`M}%zPv^mG_a@ekI!ZUQzq0Z$bg-pR7s#Cj1EUUe*Abh z&^Bl;I^sk^c}JqffA!)wU2F(7-d6ge?My`bB>xgRu&?#-p>o<(O;weHrzZvKbPAPV zA-vx=F~h{uT~ZCnw?WU!my{oTjBs~f%F{P6I9*Xbb|X;wpiZT)-2wyhQcAQ#a=)vL zw2It}4i9XGP-9Bz>FKX-72~2sL+AX8ii!yAT&|xh8Xz@!1ElkvT|3J^GL$?&M@RQ8 z#4}GiF^4&rkL{aXdWBCQysE5-_L4j*;^NF)S4UHx*8aoIS;f!|zr5}QcA4;RVlSh? zrW24edr)QGrvak_H|YM4gXZ|tXMsv}8oXOVs4aF>VZ@?hwdk)&AI1%K%h45|wYnZjQw89UaxQ|&LwQ_trk0Pbt z%8`SG^0pGx-czv-EEBV{Uk1E<%vP83pR70u@iA zgh#&S$JwwlG2jPm;1_2c*t&Ao|3-&ZR#swD^G<+@^SLHgt$;Bg5dJ}dVknVPMe4)_ znj07xNbTk!qh%nj53mlk$p7qoAPRYtcq-eqMv9CoY2;?X%Xmxg1(La0LK@pT&BhUZO6=J2JNS z!ahh+46RVA^nZ+~vv}|xg(AGTYLxrTfrYOPe81F*9zTnznbJOGz|RtQ-8pcsT4!cv z-YPQ+BM%D;Q;wCcrW?8s=W*P8ggPI!Xb1k!3y#C{8ZGj*%a{7UR35_p`@zKw5gRqI z)Y=pB?D;<-Nf*Su+vF{dIPTi!H6M%gg$UodPZu6MctE>Po%YLrWkR@O6%*FpSy`QZ z&|BX&-CJZTeDQ{oQn*}>p^=MtCOfzcT99E4pjltuQC6t6qGI(^ri2^6so51UTOv%+ z@%|^J^S{s>*EZSN*z}wy+i6q;!A&Cb$9j%1vcB8gE4HyMn-ZOSNZ1NGX&6){D2QiL zo~NSyo3^vckw!XT&LrX24Gaua(-)XwCzq7gh-+CY%xjwqQr#yZQv=P~pA2^iC}G{7 zS4&GuLbK0k=yB^@d1$a$h%V(WD_Z-R#IScG9&eQ+!UeMXl^W~nw%{LH*z?U;A)#$% zT^nxtuQ1LA%_k%g;cx6yBOct( z#NK5?t{f6>3tv2*NHtO-6J>`$Z1i3N({?5AfZr#IAgss6#PI0;Or5ZyGuEIefj7y) zY0L3CDSQSrR8(|$5k(O&%i|suTKvcOA5qRMpXS5>@RZd}q0cH=82a>7W&OR zAa`|hvv+LlBKUa7KbE&C+F*>+u~tn0)PDvj8KA&`a3`nvw0KIS6gyfR=D*p&M4bQV z$gY)wCt2quH5FCybo$xV^Bqy1IKGT)r4jY2S(Ve$(&Fjc)`gTm&)$F%`-$FHYJCub z)4u32-v6%}{#O(+?3h_qhlS5hKa({nfbNK{C0=NdJ21UbEH7LdYNfF$N^!E5kz^f_`!JEn=@Qk zpYl*T1RmK{l7Hg70iicUAUYKt#-2zGUR7)eHt4@0951%hjh%^6rcJTMz%0{40Nv3T z_pgf~^ZfyhfVnf!*Kp%G2k+)c44(!1%og^fyZc zX)_A>+r;weR>PH!H_1-&(V1Wxzpr4E*1PA#G)(kOx5l>ARMe<|NmF+pe;z^H`~BB~ z5lRjQ_RW6BD_#a88Ul<@c}TaFi1RO91{nqlsD}!xSKl|YBf+J>&YXkLD9V$2gsz>4 zd&GphEYKX!W$aY}dH_idw6T8Nh$c?7vVHr?hlstr)yaoK?a)vq`z4&L8fGKR?^Z5~ z#{h&yI8nISZqi+i(<*7`<^L{Q`Vgx``XD56Mx0@Y8qU+QTo5p|^&je83@7y@LiHRJ z7DYi7Mk>C49QbgZ4G{w$4-Q)Cej&QDr_dy5AKjsK9cJjo2JQJkdcM9z(|p>mnrOPu zp>k)ac@(N8O=Tpol3w@f7 zc6+v=fK&8Q_qNi|3c~Q$}LA;gqpKJqM|SK)Pd^K z^8=aFyZe|KneqRh4*x+JbpL#2;Jb}cimGemucpK4$o{*J0Y@!6zN-SkVv1#tff<+; zEXyU3YBm}d3h;7JUuGn)yCEeW!eYvr2p zJ&sE&D{8_Qot%u!hC#0^`Wvv zYOxxv-#4gURlwvp5<=*#=X~+TeWq=kKf@KTZghuCE$#%Z zKzhf2?ZDOZfVAvwguS!h<#TfHZ!Z%ogo0r<{r>+9yHig$=J@ErNXYP29k2ci!aJ{( zBR8igRfdp*`mh64`{siQNlH_pjTbxt7ZBmJ`Jj3g%5OZo9yz!Mft_O4_s%DV9ff^R zZohECn!|u+WD>?6^TV;s*yehE3DxzD&F*!uRp^7uI2$+U>4$oohB6MKJXRv2JlDwk z>z(J5e%4upmg%42&S+)^k=%Bn%}c(?V2}@7o?$9DfD*}lIkaI#9UN3dSHt2=wOb1B z+UZ-?S0_PR(?47O8+FJrYjFofxJ)3tWg$FcI$(IZOVm*P92*7Z$RxlQ_60hBuZLQa z4Gk9i&Wst_PWNtai(h1BHW5q%S>C3Xm5uEa9)B~k->La;t`sG_tvdDXbyJXA1>*gc zr&OUXQ3(jq)!dbldMri>KiHV*)>b|;d3U?4&5nM&+NS&HNbX5U2*_5bf_b5MB7+g2 zF(rRzAriL7OLG3R>n!fpf@$EA50Ce~e)RV{`1_AG(yp(s_W%kFDBz_& z@uTBouekTwX8ftD1;#3JIbS+M4rs}v#iXR7foi0~=QtHe`otBT76qMl-O9E50)5!& zK{Yl;cXcU!t$!J$kf_6VdpulTPL7(Xu8yE=p*7D_Rv!OA`USg;H}*>c`;es9IO;{= z^H&1Ae6oZ|4o=Pt zmk1Zz?VxbH)&P{ds60MhdJ*duNYey2=~**3QRf6sZTS>l{%~N=F(c!0pkyx*Ej}s! zGkG-8696ju#5GJRL%4x<)#I3aN&t7kq5wtAKpiMDl1FcEI@Pfh4ll+28<`8#5KQ}2 zs&wk{?)Ejj*_d4~YJWz2a zrl&Q0e0=)a;T^;$=(|LJKgphvgg5?NmIV9AZb+~io&piYfAuPjBrPJ`w*g+_!3(f` z2*(mHAfV`?yB)xXSYqn>z}CzL7c?G6TL`B4u1_{T%0mgn>+sRj zB0ie2erj+VEUc-aQT=t8qmTaG;6|6AHT8smcxb|7$4Ip8^bMPT_cxH~z~`5imfUZi z(m?gX8Kn%tboQ$7u9>NOHU=`@(@2jjaJ4jCl2*~pzzvS4wBW<(j zurEB2m1I~^i{^QGAYm3YH!~;eAnJu>PSAinwUN-!;Xi(jfq?w}pNu5?h7Q8|d*lJwTkDO_h##aL5N#a-7P{ zmgYkSK&1PlL#Q zk7e1c=`su_>|)07Hdo-hzcNXD7`!j%>N?| z9~vEv26c4Bp{E<1qacOw_ui_8u-#WM90$(8?_d!p?-qlFTpBFFZlzZsr6vhJ*OGO3 zviqgqO7jKHbgox>ApI3mW2&9Pyr@bXAjnx)knr1JWn+c+P>2%!=M&MBh1|GNqz%DpXo$goA*djOa>=wA&1L$^$)xx+RrQmeoAk47WFR%*@OY_J;kW z?&GE^7$zdebaeKV8(5~mz{~V;Dk<;Me;g$A&VvvTqb#aEty@Y&p(=Ptf%djg2lwuW zoEt1tP=(idlXbc+=>|xB3jhY0*;9Nwt(0SUE-KUugHe2TyrGj~DzdAFB@wMK)+-b! z1SIp)32dAV3FMNL2yIVKPY~2MKfv529jSjZs#sA$y|5OFF>j(g2NnxEyWVID=6m8t zs8Bz>pRvhYk=)OB6knlnYczB&uI^ycwDu%nxEVkwf+= z&>PT=poQyPh`pK{#5;r=m!yg>{MC68$&Oy%htixN>#QrJw+RuT2pAa|$(~|vHHN^F z^SxL1sv*nthex{})17|3X;P4|P1x#neIujhP+4oy<@ILFm(QOyX1r9e%J&inB+6bs z&o)T<@QB;c`juM{^`UA!G5F2e(63*NTH4wL0=N1D zk?cyX*3>>-TUz#Wc7V^z$iLXy+G=|Wm)~g6YVv$7weFZwMU1XO9~2&LZSSW|f%;-C z5<5FPn_fb=eubXQUEZ%NirNcBgc^3c$w58;({E7KWb_g2l1%t)(2fC6RS-X+j+5=a zptWh)XWb6Hn9eGwYl>y`E*yIm+q~k4;KYwk{d*(}GIN^tT5}s-mp6HWY3|0Y0}`Co zmcp%+XUWNQ=heiR=|YJ^%XX0<`Ps?f8Ren1h%pWodMFMwbYMyRG9BlM+)SZF`sk}y zP0q)jA~^7)larHb5fKr3r3AB;{QF2mSD0mVliOvsP_Ck6(%dK8x*W>k)1#J1ed!l9 z;p?6{r6Z9@!fFjF5yXJ?%?Pexop&3n_ucN#8v4!2!?8WWsuDEy%t)`RC+Qg(!{g)Q z>AT7}-wy}jW}n~cRE2Qjy%on@b9H4oz8Ho5lK?`&YtLSyHzjfX{RW{6LUzDnqY0%5 zH#6Hh_faM$CqL~BD$~evcrS;H=?zA4TEeE>VE6)T0{i4gnqn`#VtU{xw4V6L-_PrH zya8M-hoGPdKd<%Tn_i$k;{Ij({MqW|?gj1<9d)eLzM=gUl~_R11gB+XiP1i;-C1YM z)Ui`3XCzz!Fpd&7d)fldcTQYi5Fi7b;{%|C1})|U;x-c4uh*zz1ZUcU8JfLkHSFxT z6Z39H0t@w-3+pKyo(qMGWSk>*fNJ`)W$MI~lNhcV{qf5?=1BSG+^rWRzm@B9MI}Q@ ze@Fsh`%UD5m)G3VaM8kUggm9nO%4%e_@oa35spKm@_3U;fgA!9%=5Dd+u7N9latdk zImu>f*0aCgRH4$=))X_^D0KoV>b~h`%U$ zYMWxV2_TRvNM+2>jvOv58RkBoaT(W{#|iu$kakqGwMqDN@Ap9}dg(CSt#LhC?CQTp zqH?NtHok?^Te(!Xuc#!#-uoTjt-OFu%W#pOQcV4p-`w1M^3=<1vS#e5N;oVFWB16r zdc^1uer6kVH6-8$PYoR7$x2k?OajF6zP-*Vu(&iYU}?9CvywSRwh>C2ezd<9kxqa= zPc@sHF~t|=x3{-nA0?DCCG{pxl@)5?j|K&XB#jYWv6L#WA~*lifAd}@0O-1~jauh` zEHYtl^75LCyA&b^e?SY=OH*4NAq8E?B4TjOj!aJX#X2xTz%DJgPR2JplmRX(z8wds z_Od?w8~`88Hw@6eNYoN=IQW1D2-C z>ht`pXi$uSf2zSt_qG0k-e`@xl7&OOmS&khg>b{zF1}c$D3n{!HFuTrw86ICE@MJ4a(5IBA#BRySAR`xe;8`aRz0KD56fN9vD1Lzg1l;nF;AA9^j zo{cyj9asRv-F~NsZ4R{3G@(t<8Xg_JV8Xb%(F;NV_&>lAcvj-!&#j!SWAEWnwy{nc z+QoOxM=dW6vUzo0S^Z`W11?c#78WWX6+{lM z3lJ&O(w!CYHMI|CbK?K~+VAI@ij($RZ7T6_^z&or?Cd-)A#nTu`2G7FN)-aEF}~L} zH7cm!>_U@u?a!~Zrs;vq{dZ3kI()CNub6 zyU9LS2SMDy1D~vRWiL4z)DOz9t_?}Tgb-tX`+$Ipr>Cc17k7sIIeQ%I6sWPaqDjUA zrXs}7R4UG|H*Bz*tURMwiQu6#Ce6qa50Ev!I*U(C&hj@}y&uRaw2#vuO5wZ2LEZd| zk`_yY zn~LsPF)x@!3!9tAW$2oDNEgH>flnE9veoOrLVOOCD$HwmQ@`DOWV_sNP+3zmpA$Iy z5m*Vn|9-IYrRsjI=Wxe{D8aGXSa}oj2~XF8N9`az08H|TJGAox@_askL0gL);9}C= z#gGtvnSTfnKK(nTVBIEhaly1(=cTtDP~_#LPz11+NS|t$d|nVDSTbzPjuedG8&DNllKMS?%bYP z(kb3gEUTTn9If`e*KtUSs;1-Q|AmeRWKA909l--oP_RE1#FVEo^g2~Uz5 zT3Sdg)BAc;_{gHw3JM%m>MYiVPIC~=$4Cq{KxzPY0AH^(H+*ue%T1=dy`5e3WY?&u zsKIZrg}hyf7NJ6W4hTT^O0&z$r+Ino=B`i&6sjCycQr9{aIw!rp#syHyDlRw4S0T_ zChRV=%4JOVJvy-^XrCRIt=kT8+qszn8(yGF9#-x%&WeI zdq3Cpu@H;?Eo9|&_1`L4JwfHR>&e*^ZU3!$r)G!=S0XIry zDB;VG*}$f@UnG>d8AO9l6+l5YCrg0Cb(>OvK8|BjA*e^7cB-Jx?Rx4rEPiYL-Ki2A z3k&-1-*@x;SYUpGLwP-dCgi%r7`3i<`|?v$&Y?j)DC5=@5PQHLeDv3Da6hZW;o(C% z(2~*K)Ih0HGzxXk;kqQ~vOGp^mm$o|lJ)tg!WC~`&JVs8{}h~z;bD`MGf469Zz`}( zbBo}k0J{J%I0PCbepNz-k^Uf^vmpWlhJ3G}T`x*+rmLIHa!(H+=&zXLYsv^JfI;CTbM7APo&k@}F?~DMtBsJNRWnLNYFP z2sDQQx1U2X7SL*EKiSWJw$w-I>pW@8at0Hw3c-$K`wg(;=_MWulqywAUG!g%Pp8(_ zgwL50Xsl4|^#q8MHyK&t@rtj^#p{j$qwn9Zbd=Q8yj)4=omN~)$K+^lM0k-nCA_?x zIQ%=tVHAU*X^8weRRx+n?gr~VM4>#xOvr|+;{!oFjNf?C!z(8z2P!p>?(G@TNwtFW zQuQ)1aZDjVfbo7g8y0-4Z}OKIB_sKT-Mzg_psDT26E>g@$`3*KR>m^s^jlu zz-2vbduUxVCoXs-*y*WP^t6?180!<+OBs;#eo3aoF%Wx}?>l*V<) zQxL1lihMFzY${k#R0IbZzFv6#a~wm*RxyccrneE}v65f7a z7qsmqvLf?^!{<%qTYCg7gc1$(_1CTuLMHAb{rvov*4Jkw4#wqd8;F5NpiwlO{vlzM zAgW6bm@ELxTp?>Wrd$0=H&W^mU5bNtofNk(*u)p2eN{smx3hxRTeqA6-yie{Jf4my zZJzS6GBcwCSP|G<@s8@EQ{cpaC=W|=V?}D+Zruv%C?17&4i$)ri36DAt@YmL+bqzi z;J`p3$gf!?>mdpiZ25%({&w8DDb$txca7Tr?gWFzKlStlMK~8QPJMTmhHX|^TBz{r zUCJ|Wi4%GpK_?LJ40i!w*6o3ta^6r(OboS@cW+H(+EocCK%{ro1$(?e-1MEGRW!Vf zMBSTOlVPbH+eRI0`j(di>@=!Kt&+ZAL!3VxaDx(_sbBH{D(_DOjdQ@m=lbfK0J-&R zE`;&u(gU$m_Yl5Y#C=8^Q{62|sjYnH&Yf2-ztaP&GKlJ37nXpdGZ1@lEQxk)61w;T zXtjdyy4hXAmoLQNtK6+;pj-n3)dg;xG0)Uf4|C_gP%1#4@{JE1vhNa5xs-y!OTgF9 z1r++YCOeY-aQ=LG%`ub|oZ;lu9NU4kmj;-^nUfX-SreP3icg3yngvKG*6mNye$|LI zW6s8!Ydaekf>sEB=984I?`Wj3g^$-`Fjs)ZMTD}!3>(Q5nbC=Y>NL^ovtDt80c`!x zAIIP)V-B}l(pF)=vSGC)I4L3-n{fbBfoXAIKrqi;+})MjK2$jVV}nn5slnS4w8gtI z(;j=?!y73|`vIJ*n((~}3mYpxg(KzgKZpSXBbg5fvB*tFIJWU)xa|#cLpGp(Awidj z&CcBFFxc$+-)p%G5eM?xo{C6UP}sa26a1g|&P$O%cimuyIdY&1;lDZ^N!<=y30AHI zv|MR#*~kgtdAsAu@%>6BI!2q$CroyS-_6e@O#FKSP^15}F6K@(hBl8!4Y)RY#y((0 zEH&Ql3TVHf{F*QW+7`gCg1*zcp5ETnNs9Xu)o0sL10&*4f+_r^R*@75+t{5`pP-)zoaZhX@0J@(48W~t%bPdjn|hcZM7W*zfwRxKZ<(0^eGv%$q)&&2p3Hze z3o4?9T#nLof{-r2>QrX%m%Z~AHa0UC=AV23F3is2Ah+Ck01V{F$F7doTu#>cb$a_U zZi?_DzVJD?6T?+QduM0F=4?x(@>!9xnt0~tErzS-745TQ-L_zc?dZyPa>|jt<~))kE&C3S3ulR=YEkhtrc(SHE*^PUN%LeOqPz zegivhiS3>I;xo^CtC*fXP6H@!MLUGv-d=7?vC^@=*5vz0&;+v4_9v}@^XTY^ZDj)# z5M~i;v`|gQwhkP93rY20{HuiS;l-1H>rL|u)zG(Z6n{0f-IzFG)FQY$e#%NOrz;N$ zW1;vb2Wh}(1P3%ZIk|1Hu8qxJaTs4j{Ag4zch81KkZ>#j7gJJ71Th3qU*9uYe81QD zl7#LJ3G9Wlpn7_2xE=4(0`tt6bpMAwpo9Slls)k*BO~L6oE(s6%@1Vn-GQ-J5nE)+ z-u$r@-@^+s1|50y$_k-I$*n>`Opnm?&w^3&tYrwQWlKfb{mm)?wDU4oQU=K$$Hn+D zB{w%WpeT$QyC~_V1VnzYh1;{nc6(b1Fn(W%V7JMzrbPg6hO)#%>CsUdbNoiooCRZ~ z(b>(nFx*IVz0ls@{fvr2frVv-y^9b%0v6+7A0FOSecvu^Q6S#2y9WsrK+r`aWf0}S z0>Z{4sI912hp)bLDR~6q$6aHKwg-uUN#pm-M1W7sR$5Vef6J6h%JRZtzS2sPC~# z=~71+wv+J(btxLWk>FHwwCqQkZ=~jHn=oDuy_&gr4~{kGY5F7oq|>G{J_w9q?uY>7 zn~-!u)gnigO8~nK4Ys!7qW*{mf9gjxTIJ3u0jSO(e_YNn+{|%N117ntUXU7=yArJr zcQ#j9ZE7eX6yGk}cE>+CCYYJ^{QOC8`1a;7PBy-f)L?|IoR}r4_ki=8U8gAE8ajNy zwahXkn3tE9l7NR=KqF*zdzZqUBSt0;5G@qw3Oc2BBCgJaLV3X{W;(f?Ck7- z=|~+DXhIUxVF1GVyTP0-wfN{|f7##kJjyduYhh~qUbPbecsWfYd3KHj(aGEB{HHl| zJP{9mK)zBcK3Wb*lUn2cKt}@AK4!`uWN={Wi5Sg$nzmJ|o4f|xflGQtgpvGBR+gYP zp-LQr!~j5;n{yasBCZcn5xr#8n60Qfm*ho^_7Y7_FLta9`%t#_e#%D;nDIa$964CI zP{>0H6iUDrHzOq=YQJ2trDgY#$67xV;5S|)n4LgCNL}dM~;SfV}XCiI}VvO88IlUfys21EWFd?;2n=`fC2ATuF7i_ss?FJ9%HR(V+ z0**2(ML-SveE`+ifRvD4(rGT@>n8X}`c6ESn zKsm4)cxsxLS6&WG5(`_~F948%_WJLxNObARgNq$XBbts*5)#HqjGC&v$?ic%c_kj_ z2MUM76;Prb#L2<^^!ezAB&q6!#}xqo1IFJuWzr)=6c-K)80IM@93O0Qx0w32*Z2eD zKq;>m(9HAaF9rq-fyn`0!1>#0v$~RUm7hPqTo8~<+}ZKwIrIRnqC>^GvR<$Lv^O21 zhy96>XrGy_w_IUW0=Ga8zkEu_)F)nDT?OU*!8h4^JxI2)^Yc?szEZ8zc>C@lMu+bw zZY5&xO%af<=YY`vE0nWxOY73lyQ7};86UeSKQx1hUGU$(hmfV|R zN0MND9`5`zu0$$|OC zEsNi%U7P?B2X+Z`SOB{*3j;_ZczEW4`QIr+|9}8T5Om-vh^C9gx6POiL%G1CQ0I?~ z0F@fRg5P+KFH4q|Fi+!r@Tf|}nF3%8xNd;z!BoFFr=Ux%4|DzLCkEI z+dZ=G602VpV?@A!5&%-3v0394O*;*fXXWMR(5A;xYGmXtUpA0^`Up)=b_wC@cPbQo zSY< zWDJHJWdnxR#Kc7P5o!N)YSN?#=%ZNs-EcGf!)BA!7gOjd51XU11Sge-n>-^ zrU!TX=3HM~oOm730w4^9{*%c2*xa>u{q?P4bs9>A-9XRXOohL7RNe27&kAumJF_d_ zv#R3X$Wjfty8XM4b=oYXOkm`^VG|1HDmkeU?px?u);b~p5$A@iY+R@k=I2?fg>aK6 zze?vQ}e5z?s^`|oSaqdRR~oyAh|%>n7qgG^?nVAULcTwD&BnIEKT$n z*d^!om-5kY5|;^S`we2#zDif z@9Nm~cO%Oss|ZsJs_H(orU}4yb*-&&pwcELQUmE{Oi`?1<{p5s1;%L5ALVstyXriI0Pyu@&pYVnak;DMy((-c9^yA>+ zK?aER%}0NquYM$hz|jplJ6r@gU8-Ym%xXxo{|>ReP!6~P@wps+?yHs><_OZLQ3;;g zinw`3^j*fs@7?n6G{UE8W{)G^vHcm%`ySr%9c6wtn>A_XLBA5+4}c%=1c8m;H-!-- znSKrfy8?uSNv2|;RlZD00)j)#5uqwNaW?G01{_q$*B1bF2hX)RcS})I@8R_5d6S=e z!8xiz9y&X}vnE|J5e;s)jR6M~JVOH#pOMnxyTw9xRazYW|5|(VXej$XZv2|DW=~YM z_(mm!A}ZOkv?|JyorLTnOIc6CD<@$hiaqWyg2~lE7#(FV{6XITb7uZ z$C!C+Wv$tc5-S^1fl#xsjlT-)%Yyi^F?*OWrL%v?%QCFrzi5fV(mQnu=(M|3K_I605IVp%t}PDlHGY;n1U)V3dN z!P=13O&q!N=oW29FLi$U@#6=HecbJ$aPov9)6U#M#d!r)6kKyd)F<~Vap)7^%cj?^@ zD0ct?x4Jv6UpuFdrRgwJW}PntV}kPu8@igbM~8WIc7mf3cqL*U^?j*ofe|zGF}IeF zg4SQhpdBO^`s+A5JBE~$6e7v-^u7jI5#XLtm0q;vmv-BD5~Q0$FT$GM+xx0V z`LSI5@)xto?nzy=W(IxFEo2z_bkJ@3wKQ;rpV2qs7Y&@pz|uKr%A}q@n83yTG%pWs zgAx>PL4%*cP6@c-Kv&Dyai`=6&=G;`6jW}#EfEfLJ$08C|6XFI9ErPE*2k#0@K!uv zWOpRtx@^wXK9-@FDThL~>vL*Mnv#3`0pSP8-Q`vx1M(szMN4Kk^>|53BNiO1`Gwck zYx2TMWqbw?`KUd}BcKlM7cXAS2MNW-#s;XdmjF3rWH5QJ?OxR!t!SlEoS8DEfK3)0 z>Hl<6ZF1%D9np7-g6yGq(7M3l5YO`Gor}T2{Jr|(446?UFc3wv?H;pVx5zT6P8K*d zLBZ@{6F>(nX9m76S~e);2r-u{2%LNRvwAXkMjwYGPjG60hDqspnEPJ6TE{`Q!0ekB zMUd7t4{PVIEx&JS^1u~=Mt$MSM~N1zDF+t}>_ZO;y`F2dt}Y|({c*`-*TEVAqE66@ z992?sn3@cA2mak7$2`B!u?yf5qov{d6}GVviCpSA@0Pdw_D(R9*-`#rj}M5 z@F>1b{qZGE+^6trck_Z^A@knHy67?r)T&bacH5X2U{ygkab6O< zA5iBl+HQhxzaIfDat4`jTYW8z(KgKOg#IO*}|GfsY1|*!c@0BP&bD&UTFL$W`N( zp24lmTEd8rIK~;=0gn^DZ%K8v^M<#xyb2m+^_UhZKt~K6U?p^{TRO1$XrqbbkIsZR+>H8o+v?xU4d4j_< zaVq%hb?^8>JJF>rU?1-W;nOeguz)57pn{MtKzf=Z2@j!F2B!V5s#w{cwn}vgWde#?;7B4m<8&(irPCLV?x(%I-gu zgwGm$Iv~CVdh6%nS_C0hm#AxKG<0e$DNUZMY4O3x>tX z{$juqgSRJe``%t}E;ro)+JT@GSoOGDIou?p8Gg9sAR!1?nO$?>r)=G!ZwIvr;X&n7 zEq%6pYTqAd=BS($Tk9MvL9y%kzs{+|m`~9gOW^@=*IL@&G^r(rZO@cU1hlIi*Q4&) zo~d^4>O#1M`pkCvi}SopOKSiPc^4@{~yY;6w~O?5YGP$qBhT&}SxoDNBu`)Wo7 zMFl|3!;@Y4`h0H+S1Pld{C~fB-cF<8hKE&%sW2wxZ!bwI>eX#-)_8DI5_+sx0%#=r0)ueJvf=Y*h_xX?Ck(BY4Xo2W#nvlK zo9y9O($A)1He5s-$AfvoZG$NO^e&^bW>YRlA3Z^;Z9! z1uFT+LZ#fXQ{W`p7i$M^MO*!>jKb-lo6Q6)FT-c&(7mZ6u=7CgfTC~a9F3d?MkjfY{upk8r)Zf^7MSbg?<4D@qn`l|T3)-zzrK66mFF$~{Gt%?K0N-luQxQ)ot>HXb zL{9Uqsq%%<@9Q&CO_+*}eh@^Uu)M2lvx%EPq&5^usGenID1aL(AV9%B4iAf6%{6RE z;?2uLWl#XVqh5V5KY)i|XLP-D%wNBhlY4Y_f}f%7^dbjZXnO>X3ax%Rq!t1lPaD#y zsD~yLtd4Nw{L}lqh(P$J2Cq8-ZjQqA?=6&w48j&1UoKKSs%K9q94J36-(tv6U;>jp zP;E}7^8hOr)~Bj39Z=Z<%zZWYdlB#FEGGg0Pyqo%;TaH`J|tAKZ(4o%3}XcV=+TB) zbh5z!)r7hCb=RSGb$NVIQBh)xmPdk;veJ{LiQ5x@-D==F`V>};D4lKP11p0yWp;-ZO+j%;%sayt ziia@@k~g43U6rPiCfv!aiojWXJ(Q;X_WCElLWBQ2OS6G05PGd=U-8aX5Oz^21El~9 zs8ja}3c`5PIU(%crvS1O3bM+3BH_T}Gu#!f%rJ9j4xanw`R@N59SI&A?1gSJ3@4SH&**pz0G$E^|REkHP>fo@#`JJm)eWWAryvAs-DUJCQCYKjlYDOFoLGL|fPEK+xbws$+@0bzosFo1yjTL(6a+WQzAa^)_|Uv~`Y&=gWx%bUJSPNc#FyCgX8 zVh^9_WX_C=;ND(;MDgo5>Le_wd^E%k*_!|gH(`P83=AMnN2aI~FhwAz!PD~z#nAzO zBZA^h@f!e33u7>`82Su1D9oTvgb`*5_8(9m!hNVEo9^J@G{zPzPiVQH9j@TMY<#!h z*O1|5QW6ZD#h^9o;#c{mmRqsRp??JCRZUqav7Lj-_e?*eb?qGVl>rb%Iv?|&Zt8{8 z!tl}DVNEbNSUkb7PBz84{TMh|o+&sCP0zRAOQihxw-+NQ*`d!x<^|`$gd8036$Op4 zz0#E8E>4?--)>!D@4=A-+n$$0NLy%AOkXI9`)+Z;SU~cJy4<_-d%S&mX|SO$|2lIk`1CJ+NsowtD!;kcx6i4QA8Gu zYic1L4Zew(TSmtzP#=FOo%Ua|-uH|!@ch8=Ui|KAc{2CXqIXKAy-L2YXMQ!}09ECs zg8((o1gze3E3sBF33|;M2)@A%s7J22tcaXv?Pp_P05PT zyofSFdJ*ivzb{u-gZHP>ZGrD*Mx62hWI!GbWem3?aF1|VJ;3Qf^8t4`@RlJU<@qSI zwQc3JOBwkb8YG>Ek%juNtgQ3d7!I_y@yhr)D%`uUl=p7p-Z3Yc+SSe(wlUsPWPorj z2H;pxJs!B;X`q&eSRdYbw>E_Fc=CbDSA#|TT?l6#1(qk?$oq3;2ZL#eXrj>r4&)-8 zcfi-fq;{W%ct2RNPQ8kdIL}BrYh7dLnK389Vy4PPDT~IuR~d6#@h$YvT`SZZsC;F_ zRhg8F2gnL+dXgq|@p)7e%F~Mpw6;eE5F0KYj&9$=9A3{XezJ9iG8yhmCXbcO>c z=$Ndqq#iftY?q=_`}%$d;MbP}4>#&j{6>SCFW|Y5w9E}E`IQ)?gS{EiM5hv11;Msv za0;dg&-!IrSYb2os@G95xzNusDN#)=O5|7eh@zg$uj_!uqZr!I5JXXsj&L%JWwX*+ zH~PT1RQptb^@5KYk(^mHMP$ZyUt>q-REGYSL`(|!kQw4DZ03y60zGg?^1-H<(#?ET zDj@Z;EEch#uI%pV=@=XY53#*@A~p+EmWwO@Ga(98aWn_IZ%4i z94$6&fYNeZO?oYSK>XQTt(68l=AIbi&d`9YP4KfqU$cO{|iNtZ>K` zJo8&HmS?}@co&KUp5?@wIR7n^2CMwL+Gir^x6=pW58PT-bxIPT$ua+AoPRaRJnVb= zAZm4m$fdi*7p-bpW8faxv>t_}O6d!0;B(OwA4D=1qplx~xeLon<-F`X4gDKtsnqJPGVSvE531A$Y|fdoetDpqF>*$OlVe;gaLeZsmaIxGpTUW_E~mD-h^u=M7`8y6`{We0^(ISp(0cfdBol1AG4($2lt}3o!5sk^ZT$-NS25%9x5? zGXJWN8+`N)e501Z^+U$_hT>LcjF$!`C#! z$kriq4>9v1^U^LcDt9v9&Y^aB>LO_8Iot=*4w*3AyiZGJKR?_l)9xyNQGCNJTI-TpUgn!Xnt(Z$7CoV1Ak6p+{63=l zX^k_@lcC~nlWmS2BD%jAgGDxM{wEf-lN7+I@g%Q}X(WKRnvrDE7D5PRL)T~%tOTSh z=z%9Rn|0H8y7So^{1)@a#%LQt$Qcb4DzR4kScoVH4T9RO#oHuwhFMO!h~52t!_ye4 zI8Xwv=+X_+9~b2imuyU_G@i=4y3G)*qU+G9p>Kth3C&$=yTWj%TKDEq%Mg|XMzM?HLjrve5U_JKn3-gU<~+a~v9ZmYvh^NlcOOHG0-&%1)fp3D zu{bTs&S+pryt$Y8j^zWVWbkN5*v8|m59i}Sy7q6y5rZs%5-#dXir*9d)Kn(@Hbo71 zM>BD~&U7ciJCaChcJbGI3en(H%6Zr#1%~e4U6b+n+otR-|+)~4> zru!gq@|^nX2C&fVx}PQwyxIN{`PXOPT^kFs-jO>wm6r=Shv&437WNYa?uUHpUY$E5NGvN)EcO3V#9e*D<);7cIv!bCY-#XWJ7t*4b_&OFBRj91?#*QwG99;@T9>H(Bn1hqoSh#g`or?G=RlL7<9}q%u|i} zuX}Ci*!WVm3_3U;WD7 zrxIY9H)#uoDFy(K4oo62Kd3Um<%G;R_CjfqEKo_A#;ar!ToMf8#KaOVo#~H^8t8WS zuqH<2+BKjGwzgUxejOCDxINMO>dzeX@ldWwe`|XXc?m2`HhYq8!2Tis&(<{^WvUw@UPU$dzNx?zAST@@Tu~n4;B!h zfy&#Nn?!$^h+8t_eF3+8-MQj!@c|20G#z7`qR{WBz|ij`6KKu$g5n`7Reg8ypgWDU zWoyV6{lD_X8%tNI(8EK#=`d*LijHHT%Y1ct6kwpS^2gu{)Xq#LbI*a!5;XZRq)j+q z+ofD{hwQ;)h?O)`;IA3!J=j0Fn)-Z9WeN(!OoG2~$F1)~gN|t#Lfk{?%>A8;245y_ zk2NNEG1YsXfE0(>=#BF|K4=JK=R~U}=*;6(Z=_t)WC(t*U7>hlgFYw_X;zx|DZ>QylVmMT}5E{;5cI*UrA@f z-^Mz95Ymq|@=Nj?fYE8Oeg!-+*;MQZ8Efv2M@? zK}m1d${bCu?I2uAc8kCW@k)^p1BI2gc5dl!p*iKUVf-ZtvD2=?)>^o>NBoRnA2X~|ws_6DZNaJE zrD%bh5cvgP>fF=7svj9n$(4R|wbtybtS48`7#i}!SCp!_Ewhh>@xw~~rPk(FLOzii zSMHcnCPaxY@o0FfbBJ``gk^KBN;+Mb|A-uJFaMfNJI$7`Kl^GX!1aJIKuym*SSi8e zP~AN~eh{@_9`-MYgXC<2O=Kmp-l(YNwbPu@ncTT%r`|&SgRywnzf;Y4{1K- z=IRPN9`$L6Z3>k({%C%%MfmGQ&f$nzMs<=rr~r2tOJPA)i-6yIL(t% z{pZ=&4@g}&_{@L$ZG-2ZpI7?y+V#%TU+xod`BX=yBOZ&tX9-3;~OU9Ycm#7qUJ(4 zD4=OB*~NeN{jWAiipgq2HRtUa+o1ef{hqBB?h&+@0-zHt_vJb|=o1gB9caBO`EzQ& zV(d3yb78xO<*;}BFD#8$7>0$0=L8vspP>z^hSD=lwKSZ+!k5zQsEmh%hbT@4&Jo~4 zd_3fuj->`p9!72NKm~u9@Or3|>4rNjSRGS12`~9OBCO%A9*gOXF|biGK)Mw(WsBKnFwDRJ$Q;zE=6cDBXZEbf_RA^UT%02iMd<3{d=G4VfSK0&ZU2!&)j8g(?BQpq*|y!zi(*aa zJ11dE3Kw>4ezuCD8XNMlRjEPobM-}P>gUK^hs>BSX!3a8@!~}rIj^;vBXT;xf64LL zV0pCu_xjYS`M$Q`?!*Na5MQLxS?Gv0eZ9xBOu}pEAcKD2xaJ(v%rbzKu=j$~i23>= zv;XSV=9^`d7>s8=fKo?61p*e`@@X=70RQHk8%&Dc#}+>S^VyaDQwOAzF8u(pPo?in zvUE|grS9v}mN40h7wTAb1o{Zdik%2jC$Ily0@Hb4GOB399gx)%)(sSrE;ycTlMnt; zvPUj;2Cib2^nj-U6F8On7nl}EfzFdIDg%Itydp&f1#8i!lU9lfXW$u{EkpafbHKje zyz}eM_=Ee39*vjhgQnF#7NC_X@# z*HBzhG$ntjtZ>GvZ+rs+{hm(W@{STftTD7$*}l+Ja{>Wy)HdAqA|RsWBHnIpoa0<# zuI5^S6TkeMulOZO>_B5#;Q509 z!qm!p|G#W&H2vm9QqqED$~BBKVzrN9c(+*p!c{}Q`r{pV%MLmeC`A@ke@fU03 zAK!L!Yl-uP+84C7MU~^FGSqLg#wjT(444@-dm#jf6+@?yQ7g|VO_+ye=+`t%Cu1guvd(0Op{**FkN zPedza-vZ}+1r1Rd!*L2_62jiW#ekpYTTmiYl^e4}|Baan?n_loBPB=NU~z%QVz+Pq z7Tgasz{lN1#k%%h*Ku)*-9qIN=Je8*naWN%)fEd%y1HQWNaUfkPb*}4koCKhIt;_o z!y9fK(AhnlgPPj5@<%v8VPT0a(U3>}`Mpbz=i+#a7QfnC7av7Uo_)!}ouG~LUm5f} z3W8aX9QS_v4E5gMB7QNEHl!EHoK*5ySpbo`magxeJKq!iF1=*NVjtEimnADZoQ8*)Ehts8Espzz=D#v!z9UMUWI##H%oi0JD; z*#|Br#Xo-Ry7Ikt2IZUcJ!;XM+s_206vBRK5s}yiQHO&cZ6OXrG?2dGzxY_WUy0{f zN=x;PA>47vU6J?QERh7aq4DR*3e@VHmcxS38rOqN7W5BcJ2aFz{31zcoR8+GT@poQW0J}2tMqkL=`(Ch-bMqK|ip+Fu*kdqdghxyEfenQnBwwSw%ksuf^cmtI~Om2cd$7>Ont#r za#$+w?AjTO^+u<9{jMvgLx6=%6i%go>fSxq$59gJKhDp~|Mc9O zT%^U7j)4XwNJ$7G_FH&(zSJc45K4$GhaHeW7D!VY1#SEJy#fMgkcfrCE()qRfdmv; zYtkd&hJZFMZ;6|on>%~%scUWOe-$tEo=5iN?s&?~!UC0I@3@+WcNBB_5rgC6o4a*& zN;&j8EjF&YI@X{5mzm)hU)d#L|lD!~G=4go53$-0@}axTWyc zmA+>f&oFj(pF~P*mS&HEv<8e-O}TZDqHfF`88 z*6yXNw-iMHQ4#lc*dZ7j#mpec@8jpEvYQ{6ri_gLfkLqSj(%ne_(11=ox4+hQs<;A zOz9PS%s!QXzjfgu*gq$OH!DXC;y|SY4k<&Og`j}wP`rX;>j|#?=KVDb&y(e-FWE}a zScD_M=_;PyEb%bx{M&qIel)x70Q&FHo%;J*JCesnWain9zCMA6N*=2s6P-%gSO;WN zX})bP0)U0n3!ip{{9=Z#3N~GzmWxM)xu7EGkNfb@Hy6C0hc3U=s2sHS?;9_2^Oi~n z=a>DC&=-eG2n6`Tss%U4M-7(@p6lp@ih-hXq|Y%eJY$OF;&GVoV}0}kdIetsQ-0WB-zn(X5!knV#8z16xB(d!B78V7R^@SROQneEiRan9N> zZ2Ne8bf_9JWUgUr^}Mm+o!@qK-cWnWHRx@0K9dgktFUC*@>!h;5brN6G^iR~(uOgy_Gy>> zYQS+Rwg+{;=BDbrpUY-sXE(f`=mUdQtm?{3C?{M~sLNIh*HW&jH6bsu`sOe86z&Y> z;jAmlkxW{;EU_LJyEu%5(T>@BCMIqDm5|El9a1dM>3n zDhPlExtjPAx)ts&rr{o??7*8aBXEa>xiZOQ(Kgi;VKkZvl;)L6yg`2=55X!J$d67Z z=x9Mij2__7L%YiYba_nbH5^VotL>GRiOF-26sI^Xy7Ux{h>NbBvuq&x&h(2Dk0?|T4AE+MW7NzV>M`XaPCOd8`3E}8;y+ z6uZg%lT@7D;-gnrL0&%cQZ)b+uFHJTY&g&Q-MuRS66MdYs1<$V@i-0*X`7kxY9zu| z@p$V8IfITj6RFZ?b@D-tA4Xq|+!cbZ+MyEX(X%xm?F9Azfyx!49c}~#q0t|?TW2#3 zz?Y(CaoEcS0eMHM%tq0fo5cPBMc|}vGeE!|<<~DsxIIVZPq2bPpt>{^Z0VpseA{vu z=ZMsBY&LEII;hua17|^SYAiQ-LMhJxfD_S}Kc4$xRH&2zA1vo6>=xSqa3PmvPaMdm zNu(Iy%;6_cjk{A(luIdJALQMPnh-p5c7L1({D6xAiY^e}uARE}xMFQ!^Yr-m#LBz1 z_IY_&1G6xmD)TNnBoLVc>z$VeL+sQd1A$P#`z)dEQ509u5&VO){{d$XsNExxPBxpi zO3r){V3h!_WyECYKb&bo3n~cKGh>EGJk$^kg7Y4q>LuOG{dGAakx~1_J9b-fW5eC{ zN!%8zh~~iegji3F4E6S+_XBjMd6JK`1^D4K9p0AaW>4qWLL3@pTchrZ+<^apTmnLI z*~0Z@cJGYQz8)TJuv5oCwjC6pw-BxkE8otql~n^CVe2TsH*=zr&#dks$0TkIE6+xuC12wvw`QMN& z1nj!~)COEGZEGz}%YaW1DHeoWLmc^|h94kcAcTj78fXHr(freMJ&}l1J^<$)Mbql5 zi|k-5%hfLNveoaWm01BO#T0x5wZx6@+5Mzt%=5?U?O)Yg5E>L+-^f2zP&FMYHn00e zGAeJ;(!x|r+kkJtf5oz9Z9Jvm^CT0R2s?MkfbT8XU3-cxK7e8SV2p4`ULK^}0Ol}u zZ#h91(4eS$?_}m(k|SVM`mwGu2ihX}bgwdu=b{+JcN*9LsQExG4hlgK<)BND>fj)h zIS|KtE<^vM3wkKhOfg8kK;-Ny`=B0`fEU52*}Z$wjG5xpOLf{`AXEkd6$b}q?tQ0o zHdbd+FW+joqeINn?pIy@_BA*4rNafL^9dnW?VUUu&oWckJA%YF3J-nzFHD;tNfScI zSel-kulim#l#ys01&`4G`DG3wfH%I}hLTYKeua`2w5@jZ|Irhp{yP$88Xh5LzP0IF zzCIdN4$q$^h;T739h!fI7egbC$1n`Te<5K`4UPqX4-iD2qZwJ~D{~NtAEn)u-?<7; zRS~82fk@-iK{xP!tR5e<2G@qYAt4)0N@f`5MZ=+O;m`aC>`=r#p%C$909)T7tLgvq z`YM!}o(&h+UOx|6Y(IcD`p>0J&$xoPKy$d*0?| zsyqHnhNp=^d?JUhx7V;R%M3hVgUgNb9Ji8{Dj2pClkmnu$kfkAS99OJ$(wv?yVob| z*}t2a^Wf4|KBhNUf5+7KurB_UjvAw?$mLikIMrZSib3BA z+b94?lh<0{HaR~ps_rHh#<`@_!*4z!)kT^5k~PmSXInGq=Y2uGCu4s_nIi8$W3C@e zuOyMSkGQxYDp`zI(ILMl6K7;(AjxOdAA+-|lOuL_A-9q+y#g%AvEa&TVGmXFbr^~tR(9y&|3s|@-boHoMoOi-|`d4!)C5&6fn7N0^t$A1-#YDXio z>1-MwZXEQzf>AWvxmFgTD5$B)Fz6o}vc5)db8!>sWU8#;Z+pPk zPG`q&a&6{2BJW)1(+=cXW-;USN6g}1*_}sjA|qpCV|1CQ8)x|HW7$KYu7pU2Iac&h z@s#Rr%`I(_8O16f&vuILVY)>70|yJqXe?hx@`c2>#n3~^%#4gYPeVX8AHU+N$?I+U z2Joo-fiKoQ0+wjI;qWk~9AWl!0znATP)lhcL3rGDbQizIF7#HeS$5;eux-H?_XDcH zni{$7z3PeB_$+ypA6xfG!Q>?Gw0RX+B{kf-ry27FL~X&+=AD@J6e$IkfPOfw4OeU^ z^+9mYzcCOTMuuJ7p$rErPiZ|xYPG^`IPH}H9;TqvsrXlE8Bu8;(d!Ww6y(+G+`K8l zd)Gho=_eJ41dRG~ded)xvlwQ}b65+AaK_NsusZ+yrtNYIw>MLtKHXmfkr#$Y#1^z$ zoG)W8_nZFW-ssl-FV7h)t_hF7gr^d{eL+f1e%EE-qN5)R(KKO)hW$_L1>7a%^W@~DiILGO2r^DPs<-&k zcJCAWBugwh%cbpgwv5}8!Nv&|jP>QH9D4iK_ROPgx8sP>C`O8fN$U78w=~n!%h|XW zUvCc0OigXPfg`HUL)Hw}1BimpW) zH5@}?s3@m{n(ZQS{{pdER=gyBFMhT4 zP}QOWv}*I};Edc;pmSg1JYi=#+&5t+U}XZ2r?dq7Ii9Ck)E~0OY&)+CJ^n}sWGbNb z>oW83&Vyo%Vl|7A-SXHS$b$C%+kiH287d0aLWkbRc)g72#J|GP`F+8uZR0%Lp=F$M zS{oT%mbXND&D-1T{H)0de>}e4QEwB(2VKJ3GrrDq)wtQf_$jX$+L_oZ5RY)>Y-Y#A zzwQIl!ZvM<(Mr@=slS4G#nh$yMb-`-gQ2#GMO@nDY&jEz%)1VU(sdoCXHBdJ^dr-D zSjOoYUe?h%_mIW{jWsw~kA+xWttJwwttQA8UJXqXs5Edd1kmrx#U5BEpFVX@U^T*) zl6Nsvve6~!(s%+4reOZ*{0!@pWb3-2?d>exjesHK^kTEZ>ZA$T?EIMXF0n3oY?lM& z7~@W)15A6~;8nj0Q^}0y{;?&k3?3Of8+&${Yx-++bTrbnNPp}wB*DMkXFK1S!&5s1 zA$L%P(DIPL1M||?wi3iQy95nzo!7PkZ4nuxy&;pbA!fSi-#D&EP}T*Qd3Nd?O}+4@ z6%L{6ER{)vQ!DLu|CF}9G7kkDQx7XRcpG>M;BYull;o?g@UKz5=AmjA`X6=dkpK_GSQKTQ2DL#e)dw z?5lDYJ-U%f_uN|auf}6`$h!nSiem1{lfC4`vXt;S{hQ>M>LL&OvOXiEN17x2;ovCu z-vYgVi>~-^MX&WjXU>i2`sa;Lm!0`NoVP6VcPNzMk70S$ zgcT)4<`oPV%DhhAm}2;M6fE=uWl~bgQusoX4;J}R)9(f2NXAS-wNn0W7jKKw>=7yZ zR;KB6uwt)0Gqxp@G$mx$9hSt+z`-8aFGeNVJB_QuI|8ZbqC6$>3 z?v_kheWQrmR>s;0@I%5<1{{dq63Vr|p literal 0 HcmV?d00001 diff --git a/ground/openpilotgcs/src/plugins/config/images/camstab_normal.png b/ground/openpilotgcs/src/plugins/config/images/camstab_normal.png new file mode 100644 index 0000000000000000000000000000000000000000..07cf6c6c49e5ec4f6e9cd80935eda1f3ed16b0f2 GIT binary patch literal 34378 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 literal 0 HcmV?d00001 diff --git a/ground/openpilotgcs/src/plugins/config/images/camstab_selected.png b/ground/openpilotgcs/src/plugins/config/images/camstab_selected.png new file mode 100644 index 0000000000000000000000000000000000000000..30b82f0fec493451f90d18aa81a9bad1873e4ed7 GIT binary patch literal 35871 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 bYMBg`zhkuc2j@(KZ~=vdd=-2*Ffr#}rWxx< literal 0 HcmV?d00001 diff --git a/ground/openpilotgcs/src/plugins/config/images/ins_normal.png b/ground/openpilotgcs/src/plugins/config/images/ins_normal.png index a43c42c27fbe4f038b8ccf2a1ccb1781f411d21c..335f0ff34ee669e78adcb02f6101bb8d7ee39acf 100644 GIT binary patch delta 36864 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 B_%Z+h delta 48493 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 E092t5>xZZurjJ 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�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�Le|I&wtMTG4R)*@1U4# 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 literal 0 HcmV?d00001 From 2af2a732fb1763dec8b2edd8317e3505914c39b5 Mon Sep 17 00:00:00 2001 From: Fredrik Arvidsson Date: Sat, 6 Oct 2012 16:12:15 +0200 Subject: [PATCH 100/105] Complete set of new icons. --- .../src/libs/utils/mytabbedstackwidget.cpp | 4 +--- .../plugins/config/images/autotune_normal.png | Bin 33616 -> 33647 bytes .../config/images/autotune_selected.png | Bin 33616 -> 34370 bytes .../plugins/config/images/txpid_normal.png | Bin 32819 -> 32789 bytes .../plugins/config/images/txpid_selected.png | Bin 35059 -> 35083 bytes 5 files changed, 1 insertion(+), 3 deletions(-) diff --git a/ground/openpilotgcs/src/libs/utils/mytabbedstackwidget.cpp b/ground/openpilotgcs/src/libs/utils/mytabbedstackwidget.cpp index 4a28659a0..639052e57 100644 --- a/ground/openpilotgcs/src/libs/utils/mytabbedstackwidget.cpp +++ b/ground/openpilotgcs/src/libs/utils/mytabbedstackwidget.cpp @@ -60,13 +60,11 @@ MyTabbedStackWidget::MyTabbedStackWidget(QWidget *parent, bool isVertical, bool if (m_iconAbove && m_vertical) { m_listWidget->setFixedWidth(90); // this should be computed instead - m_listWidget->setContentsMargins(0, 2, 0, 0); - } else { - m_listWidget->setContentsMargins(0, 0, 2, 0); } toplevelLayout->setSpacing(0); toplevelLayout->setContentsMargins(0, 0, 0, 0); + m_listWidget->setContentsMargins(0, 0, 0, 0); m_listWidget->setSpacing(0); m_stackWidget->setContentsMargins(0, 0, 0, 0); setLayout(toplevelLayout); diff --git a/ground/openpilotgcs/src/plugins/config/images/autotune_normal.png b/ground/openpilotgcs/src/plugins/config/images/autotune_normal.png index de8bc9fd2165608bc65660942526e77ed6656e8e..5c7ca95f1fb183e4ac36da56e94bf22342f20c2c 100644 GIT binary patch delta 31127 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 A%>V!Z delta 31117 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 Uytx6}26Ei+v;k}JVTbVl2PTqc$^ZZW diff --git a/ground/openpilotgcs/src/plugins/config/images/txpid_normal.png b/ground/openpilotgcs/src/plugins/config/images/txpid_normal.png index be825b7af100e89e2cc987395c1a1f2a1bbf169c..79d2d1d7fe5a196ee85b9b26abaa252079391f6b 100644 GIT binary patch delta 30125 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 diff --git a/ground/openpilotgcs/src/plugins/config/images/txpid_selected.png b/ground/openpilotgcs/src/plugins/config/images/txpid_selected.png index 0c4fa2d65c540fb06f27a404083e460de5c9f18a..0e4fe57d1ea685596a1a2e8ebb1fd1fb8bcfd40f 100644 GIT binary patch delta 29082 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 delta 28980 zcmXt9byQT{*S-^!bcdv%pmZZSl&GXZNlQvg_Z>h%kQ61QL;;mf>A@fb326`*x*eJU z2KcV;Z+&acA1rR1v-h+2v!8v=xi4SA_mbfim`fn%9Szlo0h608{%_gGd{<7J80Gc) z5WUt(^zA~|#O}Pu=p;YP6X<>=TvRJOwLAI9Z1UjmP__STkXuh!|87~NUC-TA&5VcE zN$Dx1;xBH(xPNm~T1(3hxwuAHGz_l9S|7ocw4Lyn0donh+x|@j_F|sJ}<5`FXG;1rWhz`JwmXs9a~1_C6&+X3=ACM?d|RMH{r$>zKr&O5!t!( zz1GHYe$K>tSt%*=PfsQ%;woX9_eRA#{0pQG z#>ZK%@$;`-Tul4VKDRgJe@>(IjHXklCx|y&PeoQqNeMKWM?O4d;DCRSk~A>qs5jR_ zv!h4C+t@a1=Zijn-Uw|hv-q59ZtS9eWo(QC3n=IMulECi4a`D|Gy@hmI5ov9`9>WQ7&|a29{Z;R`TbhMU0f zwXYIqMo0aOq}W+|IJ5P1=^?5UNAh@i9f-+xdzN#wl zS!mYF9*Wr;-eZ^Gocg=)GoU#tidafU=3OONN$ck3wz|2gA(8RDN3<;tGLo}j=vhU}9pzmWU(|f1QevVTJ6W9ReCs4zS-A z%^tKOFch58pa(LgUBV>UsV>?nW&fb{!*){)7>IDKry`mseDE*~T6AxR3_nA3em_>@ z%6QEa`q5Ie=+nPV<*TG2Zhn4;pS``k`C*Hfa(4safz@b?$Q;7CBEWKo^6gjnjZEq2DIMCva$w`MORwGH#5OcOJD} zgod0>&EC3_jDMLA1rv}YEC(b0)K6PHL6$TF6S%(mAahrgYk^v;U@)Psu5NY%hr3wB zU7X`=zeQ07EX2!#NjleJ?D*iVFIRY>0V3gq9|;9d*!(uf!{MJ) zQAdN9b~}`5x`!epBjGX34UwCJ@|WXfGHeYqqw-OuC5Mxd+#}_>?S9M;2-3kFjxkyU48Uh>)$*> zpSnJZ#OY&2JG#94m6%gfQt(46;Ms%T-rf**JG;eG;J3+_`__hf=!aC8D^D(nu3tcq zc^3?>iV`|J2p!SottZaS=O-Hvhu%WD^uKt>Avu4%j>BoGt0T_wi5Dyn9y|cO)`vfO zFuX;(X3!h>APGyr!;CE}*hNA@!gTWOMS5^w3-lQ}+?uNNm{kVfaku9{Z%bPqmr~C~ zx1~2WHV(|rCW?m4k+X1ep6@*<(mS(d9Yr}Y>SrdP$OPQNlUvW zXk2OA{vjH+Q%HGPhK7Iu2)`3&`?rQ~ZiMFSE{q|rNpP4&*#;d4_;K{~9aUL&va+(a z=c`9=uYl((tKjCT;!CK|(AU z9vM;(Z24oGY>Fl(OerWS=U!S7uCQIcd{NcXa#r<92W^>3mL!WXu(#p~1 z#NM2ldjnC*6?#7K&x&%ilhg^B5c{Qpxd8(-y*f}LbVAKIH#;=6M}Aq>oiJRaa`xmO zm>T!s%CNS+l^yc!$k)=_H@59r{Eseef99|a2w;hikN+^QW($o!-(^K23AT#E#5K1W;xclJZ(Vcy+wXLnQ5p9u%#YnSy_aD8z6oaF-760PbUdb=XVVHh< z2^n@QF4Xh2J(6T+qwRd-#gE57K7?!X=atdJ-TVQji~|*wL#`MN`S~3@?rgpM{00@5 zvd%uGfzQ7@81pX4{ujb9{D_o-!poT%(9(6b^(@lD!ouHr?l-1Um$bx~I4@*=mQdC9 zj|B;)TMy2A;Z-8zye#*`OEl2Fg5fyZgIRM9FC&jsOk`H^?Ukp`uI zJc?^;4+zpOqapLLf@LU)3_gi}bgX<+8I~LSw`*B0V2kCgcW+?dnW~(O}Qryn{9DKY5EILTInlvd&WU^viYb5 zr>V$!L1}1sxzdvba|roS0$AD}gFVa4%Bnv+Je>JGJF8!PPKM7({7Z)S;!GRGrYvwb z4ME!R#YTA>CuB94tCsx|F|iB?Rn8?+akD3Os+>TCgoNlx!}AUr*Rc*{R%k(<>v<~F zRH*0l0Ld{*+Q$R(3Y*>|kuD z7la~x7BRv6DDod_!KW-S8t^86+$}lwbDA5*h}ZIf^i6o(Yq&@Tf#hN88Rc4I*j~d* z&dcuZI}t6~SAD1DW#5b(;3``zjmCO93#uA@;v}!9bmz6Tfv5ZX`yCAp4fO^MYd|TO*$zWOcKdV#wU=kX)Pe4M11&y5; zOb##EcpA61_T;U1-%X_$jd>-gAoOFFZGa{T;73<(KHu5wpFhpEd&|Ep)_gMmBm7gs z7u7rMr>ywbSGSE$HLiraP1VhPNV9BY!1Np3q^&4)i`eo3evW|`E`v_{vE-u7G!hB` zGUR5zIyCtQg(yw~`fX+ph=dTjLn7b5#-cB|nov3U6QhKWoiYovr-z2rF-NO`{}`}M zjs{7v)?8NgVo}SdfmE!B?$CVUlWR7%s(C>r@N|EGL33hcVj?CZgB5bDRi^jAE5&~v zPMCWG9ztbkyw2@%M`ve$#@n|cReT5ob0}NkMj@UG?C9T1;GR0L6A#`c>MrHgunk5~prqKQtHREL7QGrU|5dI3 z)j(uO(`0>Zt?E#XZm}|n^~g66@UsUDa)<_`+zN&k{=L1GD?wL#mlTiOutv0*4>~c# zzAO3mHPG)zUhqhjH>q{I0s5VQ5=6KE?k!J%;`8>u^wz5%^W})EP zc#@)Ec{gHzGbVPD;pyHc{tuXy8Pd^nPnNq=UVZr+L15FTPc}VOuW#s~KT`oetAV)6 zI!`$r2m@{J5J&^yTnc=Y+edq3Og_2Yc%x=(%d3`e;4Pn>gIZ!o8|or!TuAdmB)Dzk zq;JH|J9nyLiliY#8qoR~5m-6O;V}EH%WQ0U8$r+`BBH=z1`nEO1Q70tD14HGP>!Fa z2O%Bj_z#OHBwA7bs9Xp8>CCAa4^28N7r z;-R!8)`kiHNJqd9#?Vt$@!JOY_p1Nwgajf5!TG`x&oPDdh(=&iy^sW?=6|SbLE@gK zA{#iT+xiI(oiBk_gW+53a8&6GDJ<7vRUy>%(W@2F|GXLo4>R4TR(KcI!~w)YUjB#v zO)4J>c%9@*-7m6Y=*7+Z9}XvvA-teV9MRUgnEGQ2A747_V*pvS^R$U3kUlDuV~sad>Xek~K@z!k8`u2y@0M*)ZgPk8$qe4{kmE zrBB#=ETA$o4|LJZU5*Op(w~JZv8gxLB7*pc>0%bU#Uk8!@?@Llu;9mapo=(URs`|> zodUFgar;ii(G3#2w|1+hB{QQr%|ID;(&c55lB)KDzKo_el5A z_|_Rwdo;%{fM)v+A0619lfw!Fm$u$dQ>CNzuOyQm`V{C{eeA_hKO}~1xI(MADzkcP ztMT`n{ZmzVD?dAsQUBv=bOhA64aNTq{vhE%{GJn@#0tGX##&$Y2JX#o1GF|3dipcu zL#Ta>wAQaECkc*_W5BK%LIg_}gH_Gr9}kX4=pknP-+(~mr4SzEmnUd5qk*6sbiUm_ zxQ}0ceS0S|c`}*SVJEZQkk++f55iK>cX1LFGv9ShH z37#b|9W&N4r_EVgDwIL}58+Q9e|db~TV0p0L$9A7bc<Gx_MG$q#3X^ei*UM3v}#Xn(ebou29x9GP&_P2bbvyBVGpzaBrsoXA~hf z8W(iO|4Bn+$kC}yh6Lii2x5Pd57pLxSY!hOZ>=CL8p^UdAOTi2-Z7Q}Y&;cWYddPK z)>^!n9+q1+79W-tbw}~_|0l5?Tshm@bc@}bnC1O$TaGVa*Tpm- zAqAzj)yziWI|YWbpLRn;-d6}lWCQ)+2hSD=TN}+31JtH4E%yHk%4AA43d20y#~WJdilKJBikg&*{zoqxsp1h= zwZhRj-zEbd?&$LFUuluh|I&oj1-r0fsr1ISwM`+W~<)si(rlJcak zDnBn>q1;8PuE`*Fg|?qpk8z(pQ?Yr+d(5sUy#)i}WXxNI{&D}{!K(tS=xyO?J&d5{ z7(q^TU@r?6`0Gj6Hy2-=ov<%Jko(pqd?3-mCKCBkio5jaF(}f^8b1;Fj{|OA3MUGq zyf<>CloZd|4Iq`ZX*{uM+O*f?>HFs%4xR3qqB{f!lL8?#2Civ^PmU~J!B^7diIT%; zx0e!pT-;_eLs)Gon`~}~zu%X>{Y>^9Pw;p>_Ua3|@#5)>DKZ{|R+;fW&POuXQwLd; z3PUpwcFG@gC%Rd~pY!eZkaSTspe+Zyegw(yChMAN@BQ2;n7J1~Fq$hXOrZKZ4BKw3 z9?T)!?6@ov`9UN3(g824Wn#dgz<&^sx_?&YGKBj~z)05%W!)9@s_dB=lGTHEiQ;4| zDFK!z&1{z?v;^)JdEakB!@xPajgzBq56K2V#3g7ED@`d+ct`QteA?IhUl~oIoXbv` zJid&#{Oj_OE-%_z3v=Y?hgveNxtiN)vS0|HD?0?4<)EO9pohtg_h-9a$w#2PfxFbm zj~y4;b-}^&L^>U!;UAtQQGCYY)D5FcZZRw3qYr!G=Fh`7>q+s80{9M@efGs(3j7GC6iJ>)2U9}!tj9OlzxxIQ zuFH}0uui=2aT0#lkb<;oG;(J4bc{md=t(eE7^|C`WcZibOHXR9T7C~$Sc0HC-vO^e zBIl#UKozs}p&?{Cf(os&0s9dy>DM*+{D1mq zFu;{-d9k7+{XvP^56KMRqFT#_a8+cOJrnoy)bHBquFVvH*o+V3Nk^NYG$|Q=IN|TF zmN1!O+SUzLfYq8q0~_4pcKXLsN7@|OF4e19&->Y*=k;YCJe?FN2p|d0TIF)ghVcD7 z1otVvjbrQMwKEAz9l`L_@BQK<0oMWRk~QZNjm&j(Z|?)#{thHzI&RN6PB?%ucX?bDKv;+IvJBR;0br(%DjDfxW=EK_2A#@ zXu*1FH?=oFr~%o43#P8Xn^_I$ZEzu79|uQ-Q1jBz-PEXdyPlC%&I=eUcanA+;Xq&2 z#z%$Dx;*#Yt>7gK`lI8*6yDqS6dGl1w6|Af6;2#j^ES7=B?Z;! ziT1o<%WQs2)j&M+JGYbTPNPDwNN!CGwShxaPVF-YMNIuhJ}KGXiH#Ks)&i&7t&ti8 zA=1LfpN=p2=qREvNj1DhbCdU?)fr@9WF7{*XMqL7cCjo*dNtHQZuz835xtr0J9qcInd_zHypAUDsY&@e0HCZLXr) z>`9CeP#F*1`Z__sX9|=(6PxzBIoZK=W&8_avpdzt!xDUnzW!jIhXl1u=1HDdIj{SP zOLmVD39Dxk2_QT zg^#P`7rL)HdrMB)AyNjW^l<-*JQk#a{NTmU*Q|R7GyrV&G#j0!kTcrdnVbOaarV}1 z-WnQ~Gynq%3-`zhBipwvwC0UHX|^MMJr=*5e1|1bMo3Q!F5cGdJ~aQj#`~g>iicwg zS*9U2<#qGXH7>KA<1cLLRXgl_nIeGk6_eooasjVH9)^Zdv^^wb zDkTH*iuCbZayspc%l+^;9*Ki1?;eP%{Ypsrw$$#YcW_6-Q0sLcjPy6L45WT1H6KLN z+~Lx^*2rldZ&Md2o5`PRvdk)%F2;o60vxhLHTf!M$AH^1Z6wvxvIt@UR`R87R1JjLcdIi{C9we{{J=ug|nP6C)XvwI6SrG>V7F3WvgYmY7OH1Dww zU%PD=vMl(-_E}T1%lM-VCAQ$--u>}t>f!qiBiB!Rh(pHMf%<%57eCCJUzPv4FnJYV z9P!_To;FI5Cpoo}zFlkGxb2(~cSDe2C>vLbpEj5WYI-Zmd3`5l?(mm8guk{xOfIupd2x~al}^RS6kzj6F~4`%G+`#EfoFCLC?hY zxtA#2Wm>mi-%FryQY6v<{7N2HxO|N!GgLcB;3vMsWy8D2T2y0XYm^Mn3AGN0RtxGF z`7lTJ=O**N{;@u7OsaNjXdk|p-1_UIZAsog@jfA+Jz$%|r)zAUn54BY&GY_OZ2N(T zl!e6!7jw?dNV=puYrydOF_DcudbVS(WuWY%od`x}$`IQVG6FK%GF46(3x?$gWKgi| zzc8y4kQ?)1D)C&2$Q5_zmaj~^b`m&wowm-SK`$fx`6m|+^ay(Fqxa1@3t=78hTu|F z7v`*B`XE1+TVF_0N8{}FemJF{PgM1di5&>N`bFOPawuNGI!ZoospCT>xrMFe#~UdZ zUsFT@ha206X-hNU+fC8PhuNbeH-ReML$ev&%Nx1#ZAiyEIn0yNi7FBoM-zufs$#yT zTWV_yq=u$+=}ry9W7;nX>8&!~rp4Gk3!PmKRXYjZ1DW3W)dgf<4L2oTWyDSe_x-TZ zzkcIr>c{d-L=H!HB+5gzYAxbltnL;us%Y0)-WN~q{gnWIU;Cgbp(Z|k&>A~CxI%>z z7CK9zj;(RlI8+|Zj!6-b1I{^4>piSvF&6!POqm_p>u?|Qrd2_!dk>u|uZCY$N9M#Bs;PtSl+&`V{@3^_nh|*EWS|=6C>_CV#%gV9M1&8O zZeQ>FF(_wwpE+-VjkG;=L_+4k{KqSlf43D0rk)4FFvyTe zUaZd6dnk|umoC>Z58^oPgq&P;>agR)=Iim9iI{^%3L|gTeU?XJXSM6L3iT!y40@$; zpBnc?CC**3SKQ%YVpYXC-hf^DH0~A|mfL8>`{-Pbt&=nRqOBpp1rX>Fq4p2Wa#{C4t(h=+(hW1Z+b)x(#x}>hhqj47rd@|tK{F)Hz%jLBWiymj@j6lk}$FES*5f6KwBdHRn zvkVHlYONj~Q)qGWMr(idzb`aIxs8Z)VztJk!iZV_G~CWz@U;D^_HEquswsLSby`Gu zN9RX>%9b%6j$hick9u6U7kfkdq9b3wZ7wjnC$6;MjRGTXem%D2*!OXb2Ri^hB4+6& z#gO{j+MRjW+I_=uGynBfyb-IbL_Lz;ZKeI5Iis*TZOpxD@)d^D?sDC|XSg>mc9$fw z-{_eJ`0RWDEgNJ7XA&37M7bL_$gzW#V;mx;Gk5AwO**3`?0tb^!n-#4T|<9TBdS~P zsnHP`WtTbHWUmQH#i`tTMKoRwmiWcqjPB|cG^_?*vmJIcc zc2EKnbW_rB`Ln@ds`1dct+gUKkiOP9alGQVG$7{JD33KCJLqvPx=NC7Y({4y!;C6i z>4-CR`e-|Fzw><_Gj zsvg&Cir#S)YjHn|$o()Wq8fs44=gIosjE3{(7cwTZa05Z-)g~Y(*D!tNzpHk;>P`c z?IVY}9P-akAIzAt29frrle@NI?TH(ng5*Z^cpKI{4@Jq#egH^ya=$eyrYJ8xCWI;P zbop5NIH8mjYx=!2S23GtwbjOS>#JnBnz$o#j#d1Xp`hgb3|7<0Dt1q)jJcq`4j|Bw&#M|u=^_7#d zfW)zH-~dbIK^G|Ps$i?&Nng41vjO;+Aea`#0BdvK^0F{iE4J6Z@JbmdoY~%QVdY4R z&>CATxS&6RIdlxJET5gf_sgN#R$2$}Q??d??UyoO6_b90-7N;*$GSnwjqVZFp9+pT z0+=dyik2@_21C!PCN=p#36aGurXla|Fhx&^6HW993W8zmY+>_p+85?6vc+9xO-i$5 zjve{bDq9mP%l0JdM(4x9V|x8JfpensbsH`pK+Gop$-XLp{vg}WJoQ8Cox7EYQbf3&&UYx5K> zcD7XvPAm%0fP7v+1npdtEpu6ib&kz(1_j3*pJl_taAF z9fx9s?M4`7ipyWP@q(CocKYU7#lEF`z+bm#ucCMRbUO_z_8qho>>WPPUjF=++_Piz zhsl8u=5Z4RF)jYUHEpY*?v-XWNuE&Ue!p9mXA6;ohjP#RzRhU)gU0#;rhA&>iK2v==aXW!hYLqO#`=4ufp zfa?D8CM112`u6DWPL}@kOY<78TXtI!x&40AFAUaK2_-=j zIpL3cxn&OdURjJ?8T&%n5LG&`a;V@JA1iLw1#gzkC0cEOf$`B7AD6w!G@}{Up0k>f zxnyJwp4c?(>Mo_VxwMTtgt$@ zo9L0u*}ujL$D~Qw=1*NW7`0SuT%&8}zP*`9`!4Q8(stbxb&Yv@!-ng+AL6ym{WlAu zbh3j%n;R^%``{_o`Tb&6v31qOgH?Gv^Iq0gmqX8L7w_$QE8?;av9VKF&9AfP1-Lst zi}&6ulq1t)U3-pS+!{k^QwwjHf5@x9Vo~v~rQ(VbHeV)*Dew)i1?oMy(L%@F6>bHx zt4heLp_lFk1oPse-uh2q%{9A%*YR`@Bt%?CdPg{YtC=&N zmpX_O4~aX7l182~ewm508{>RdX!&&iES5?oP6zC?2ZoZ|l$n!FRGzVgGn$d`Dg%;r zIo3Gm(L99WZ&*!s{lN9x>{0hUNnd}zCnmVD-sE~XoxbAeera-`U>91O%C4QG+8)h* z)3>|BrOtZVu*F?tD+}!!l5hY;l*=nS#gDV1=1!AdQgSn!wP9!JErMz8a@-1V&kd=o zkpN#%pOG5*P(J=ftq>L;=a}Em@ocaL5}giyAvwi@FCQ4ByHRti*oo~?4Nv&z_qHl< zg)1D0M9&Ze)6Zlhuj;FnST|XT-n{f~i+wwM>P8A&k|dwA)l8n|r`)0FmIUe%+yr!t zA|n^>Yz^P})n-*maA~|qaZ=f4Hi*BzCILz&cQdm$-71sDxQ-(WZ0O^bvn#Ij^)>R3 zbYFL30X$gHm4{Ky>Pc)75(gbmqA}^8ai{itc^v0uHD@_5YQFtB&U$lU-K!S5(Id!t z1Z^JnC}$c|;6N?aUSqiV9h=uncclvlyymCU+3~eRDL!A=zU^Z~-)#+~2_9A)v4Pth zZk-G)@n$ws?&@Vr&{n?zd&D@~_BdO*OL?w8>2SAkzD^s$cbP+Lr8l58`(69w@f6z9 z=z*GNvB!l{Qbw^y?vrm~5flSdi_mUbIjQH$j9N7=&t_AcuaU|9iOcs<+p;5s6Wd8E z0b7>OF=m$Ja`W=7Aw3q|DW=W$x4}zw>gd)iK#<(`WGf`fde^sNQ^Oj;#Dm0lG;wFj z8lMnF9);^RTN=}h5^Lg!bKDWL(j=HR%#l%SvCU#<*N;)&u?qY4{s$b!>iX=r?3PDR znlcU{2ruCkq{vTEChW(;51;nQlJ&EU&tx@863ceV2ZzN<4)<(obEy#ks7O|tuo#d~AE+v5^&5`s5bmmd`_g>l7#s9*Sm*H{^eayIv#zui zqTM%S&&jSzN~rW?FBSHKCYQ$CPhT1cY7~FOvTI-prqS=hnSWC51*jkywoOFyp1rSb zc~Kh9YKGXKrAW<=kT}0GypxvSySYcfw?3%%J;=uGV&o^-^$Qia*Yla}+D8uS&r>8Q zBkZXN0!ySmQc9QSIVjWw9;=l;}r#49@Z?7M;K0yl&zUV-8?8E^DIsrlC?^F+X*I4Iai9#Qe9%?bg_1_g~Qi z0R)BLjt;$0KQuKHX?}WjM7C`w>2)s))Ljd#<$ujBx^(%k=aa3r-+srGo>Axw{~M6P zS8Nr*(J*u@?e(dq9lZ@VkSvkLMb|E$9asI}?N{SCV;u+o-1~T{1XR?8U3&MECdmsQ zY&~=uicqbO5@~iQ!WhGS7KnU)UfUVeN`C2~QMOh>q@oX12Bkoj{J|<1Uvc7&9`Q$*>>`Kf95J^JBbFTA_fWi;`OH1qT)&&m2@-9tCX(Vsi_2i+{su-lEl^-Qe2wetEn!XJSr9)mf7j%ZnTz{A|CLAGV6T)mlk zxiAryrA%x;Zz%AsAC(b6X<{c)n3l)KcG6xCHtur$wl$bJ5B84`j7f$4TxDoj1_laI zebZTwKMeTnTZy$S9dV~O0-q!=hq0EPp0n%NDLnxN|HQbC1t)KPVNi>2Swgn6h?H=i{VZry}t zbn{psiOp{~r^o&C4^02L>yn19yISCa2e+4ZpChj`bPx%j;|1;g{Ix7dRgA@V2Pdzd zc17fx&587up2}q=g#CJO*k79y?K%dIh_Tf-oGcl{nHGDKg)1yLnlF+#ydW|&PL4|Ripi_qGFQd}Bzwj>e#Mg&o_2eK8|>VJFT zp;mVgL8Q`OXNmUNrGfN&(cv`Uo4oB)))6}6SwXr^}s4&VF z3{2-6;loiVrgo={S|0g- zb)F{6$&T>a6&FxXM0C9U49YN`jj8%rJtDhE&JE`P$IURzubTbo>`98DonOvdE#;Lv z<85E#4%#n?zBSD@IaPJ)E*MA^pm`wbX)-9?wZExax20y>;rZqd-~O6x-mhjNUx(Q$ zzeMuf5a8BE1GFbLFp$`9@*oF|3+wE@&!5k!Kz1;GhGy$lfV-`r9qY5nX`i|~YSFqs zuig1pF*-{na|nOkPJ*F}?3;o+={#{U;| zGI&J=w$6=688ndO~L zw)#vF@nFkkqa*iiOv+DHdQ+?Sj)u>apG9$I&N`<8LRJc?@N7K* zM*m3v=A!iuxw@n1_{-dWXH*qydeF7V>>xI5VGGI>ysVKjuYR4*$f=umU}dIsI>EZj z&pb*8N14K*!3C>LQPN=HUBb2)!{$a$TDu1S5;h43^^qK{{5aB*y!7FBM-z>R$9vf+ z0UG=u_~=VV&h;+oTuQe?l9fb$-Fn<%n+gMtGnNMpUZu?3)rU+bgC`y>pRXlckvd`6?@nXNZn5%E zh|*U^KioS!7DCJH4^$b^(V(yPQ|Ppk`R@KAI7gJd~hCy1%Fnqknuxf}uJC z6~aJ=twvHr%ZwYH|*SQz+(T&30jRT@0R zZ*}Ya+#M9DhWiXf7pwb(zHe9fZM*rUvH;~dYI5J{+*MT8_u!x53bRuHn&@!MNf=WGT1-HVHFFmHJa^R%Ngu!Y07juBSlK9!< zOP<>bG%d#AM=e}0MxXq4SpdEh<&s>pL`+=>a|b@QA9JxshguymZ8HrD;V%G@iOjmngRf3{Iq zCLi#o+^46e(}-LbSX@T8ljMOE%1OCyDxTyTX4&kEhu%CQ3YX<}SUk6z(8)<~>mCxCtm?kG`$gLG>!=IPydy8{fD&dW`bH|%PY@P@+y7|!#c|e+ zWb^3$`!FB$-Kor93Q3m!j?>rh;_i!S+mukVs30=Z^g*wM>Z&;Dj2MtF`*pLG?PTB^ zbhegZH&Y4Tyi;#Yf{QW%$t#wfPglsC#I2|J!)tMfLr_U&LVy03hjXU;mgjYA(VC;T z2&~_Tf+*Xc>sjMZK&^b~D=mM&b@`g#=h`+ieReAcwK~k(Q}z+3=_ui|Nz%no4Y+uq z{nleNk0SW7r&IS#YTSaPtlV$|ZR#aWFcbfRvmVmRCus5uaii<3i`{-D*7fm(d zz5`%K)Jp%6rTnY#*i+Wu2>((3>3&LR2o3yVB%{5LJrD*qyzU;$<4cH;Er}+T{yOOcf@L9juL)_SdbZ{ z{<_{A;Gy_CemF}1t80n+@dKMHQo9si`MCf|hfpGcGyGZCU;Gxdj$NKaL{sSTHxccz zSG&Btd+!7sJVjIb1EFI^?gI}VP;()s4ze(lN8xS9M}m)VIC(suUU$ztUtkqoUT!$< z&0X}%*e6{j4YV23V^eKP<=BDF!z&@XVFD9(tl)RE16c3wA_JPKuMA(RUb$PWo=E?N z46iMyK)HGPXohw?Kr4)Wwr@nbbSmHcJdGwA1fGKU8BKn&Mlxju$JFQ==yV7mJk|O2>yh<%~QG?Y~#z+k-k?s& zQFMaZbYF%XYzO-2LcXs@0Zu7nH129nvh=AfJbjWRY@3r?S_hMs*HZHV{gKZ4>PfSw zhZ-es^E{k&!2ccG05jyshoztYLL#|!uG?rN&g^F#zyE`)E z3GbL;?PZYh@w{&y?ooxXKP;u~t~gh{wTxT+alZGnC@%F?e5kg2{Kgpvmy1hLoHBLY zUzrqYZEmp2BMi+JQFX@5vwv$FF`Hbo9p8j`6DWti0UQ0JH-11R@0@5p_NMNel`hp4 zuWc8D`~270o}>LX!&s(v6@)Vp^{O1xX30d{FX*<@rbl&DH&2Pbck}1JJu^cM-I{7` za$VTMd~CsN-bvISgq?)|B}J8nzQKV=_WUR}Od zQANsiO!c_@;wTW`6zF03q$uGpQBT|w*p@_;ba37rQd*Vk{bMDYoJ|6H9|J1*9h+CO8l_8#l^`*>oiE7GQ14AS|e-JL+-Q^y5mG0@a0zyv(x-ljfC^d zN!hy~p*O5^ij2y4TRD9y>?RlHU^Z@`tGXwX95pDDy{F^$1FLTx-wfDy7PSY7lq#`p zDsuf%zvoqIQEjFJ9V+Dvz5S4-c)RJ*7JZC~`=z;Wvr#g~H(+3l-+EUyq{N76-J@R| zMEG06?e`s#A&FL>rN*){kl>QGwFNHRYZNSpC9|=g-p(2x@EI~qCc>Bf`+|u2&y>W* zmgvcEoz}SR_VV1y5D%Jgt7GzO!v!kPmJ-Vs#{9|^o-fcDrT_=%yxQYM&Fz@_yqrDO ziX6kg6P0mF2u13Uxigoe-|SE=e1Uy)ZYWV;?LepYvRr7r{x>Pt2~*9^iqcb$DiCvr zBamqn<3^M0_hS5!$rdw;H8`33E~dV|G$Z0**9u+QK(}6I)q|t@@@hf9ZKEN$jPWoG z7S^&33`3`Dhw0DOcW97`5;4i@R`7X4tJjO--z|?l7`OfR8cGjC67-!Gh=*;9#!SsN zJdXY-=%$3#c1(mLsPQppvuRG517>U|VVFtm&5^`JG({oq-?1cAXs#>0aaM}qs3&^?x;8cRbbq_kZ7exvniEvR76zBQi50MP_DMA)BmZyss@vab;vHTlUDll9jFO zb+ct=Z@;%b-=D|*!{s&3>%3p%ykF;>=M%X1!f^d)^hSw>%u<8lwueUVaIJ#8IIeCM zIP|-pFyg4ae%;2JasaGu#Jlcc(OLDUTUP1m1qg?o)_T%U2ERCM{%ME~AV1u%qoC$) z*>QY}*KH$59&J+lOOVB%dGUd144;B$?aUtWR@ZgE>+*SRH`t`DsGwW;QTq#~nsa0G z-FmOz$v~>&;g(nWTj}*A8=R-q!u(vx@Dx1wBOCo~`HD0G@xNex!zSI^7M+Pf&rUYF zM`r@R9MjOXzZdb1Nh5b93jJpA%LQ&CIl%s#;I;=84u`g70cRK=8Ae#_5Z{xGEAD)ee3TTLkr5_9JB zZ5O3@jY+LEY;?{C*YD(#q1zb&IfQB9An8_&dhB=BfV$rG*bHtn(nLz z&>l#4Q)MRKRXa^;WEL?%?va35>3A?f6FoO z`Gi;+e!AGE3)94B5<%-ay<9R90rjqgSG4jXjFzjt#o-}*|kRbN;?PW>r33(}o zto0BI3e*N8x)t%L6AF0uFL6+a`nEk@YAFXhcE+oqQ|b~AA1=pcPjBOQK>NRw*YVSj zyGy)K?Do3{fW41q1%C`q8q(6$p)>@V64Nu^8}Rel7g?07AI?diR!Zkg+%J8Ej_xMM zrv@AU2BrE|Pvx#H4U5%{4X^J%z41D!7-0ssxSBMQn=8r$y%N5EtcKR8E?74|{>c@q zW#A{}dCE#4w!~-m}7w2Zd4e z{gHT~!2$C;{e5(?z#yl}uyJ^+oML`0(D=-@pTk#Q6mYsXS;3ATzwh=Xh#WW@f!Tq0 z%MvWl$ANC<43r#BOGNqbJYuUsf?PhY`nT<58vBO4%3+snd=kD!>{@H%@2J`ojOXYl z)J)!fB}+@H|FEDTd_@%S59hakf?S^9i4#GHRa&ZShAqz^c-Ycc*~4GTy_dMBbw_zQ zmJOvDhqX=OaiSaFjLtF^&p?^ZhJ%t)m8`_*9+nKA6!zUa_eO3Jpci3>g_P;WS7ytC z{O=A3S|Q_}`^?LxJ3sR8+b@blhk8Ka)e&1OlOoC${)q@y`{2!d1jSc1w1w>>d2}2w zSSgUP#_6(6m<~QVzqsv(njLCl$31|nLqWejFkmAp>7)jDZwbZO2Q+blYqWkUymoO@ zS}yC!kd;xj?*~PJ$g;YAtKMRVvQF(sV76424btTD$M?~VMsS`r?-OYL^hQ)Ay5i>N zj;sP6!X{o4d|x%)C-vpI4yA~}*BZ!tO`id$Mte?`m3jI)git1Gn*9?eW7oqlGyCFB z8`vvPMA$}vYBJ|CC6qhpL7JJp5r=Lfxvx*CneF*3-pq70f5N(rEi|?FB83+lI#KV} z5LuCR?R=v$-aGEX*N5SxKVARS?K%QyU9q??I|5}eR1W{z?{6@(pGjgtLbl)cW{_a; z)1Z|okHUd-DAr!9GM?Q{YLize304F1z5P^{{v^jOwbbzyNNusa@>2twO|DRXbO43( z3hs&hs_vs{{L0OpIREOpydm280hBC4sQIU3XvHm}MGi1_8}hx1W;tbk&kS9apHAZW zI)9sv#Cl1c{Ek4#C&4>Op=GY zHZi1@G6YC*sD_qBQ)Vqp*>{moAu7GRpjQtsQkP|BR#D!)v&*ECy$x_Zp<+n|=fjSm z80ES8ZRY{UN;326ODb;GdryJY8fwj3CF(4A;LeR38>kQpT(Y2q*UHQ_OXBmV=WIBt z!ZV_K#ZfbY`%m^l5b}wzK*1C@@AacPFU9p5kQzweeM0Q-VtzG!_JBCOnx8oQ0H(g0 zace(Fc|84lEeu)Wa>L-W7`cBNs|ZHk6G;J=79)ZV88I(Li$&D;NmgoQn5Dz{qaV=F z8b;p{g%v9gcY;ySF@A~*eBX9%Z+~Mk>Mn^K`LNr4a{;U)&KdjyKaR7yt5h4X;RdEx ztOpNQF{w$AwNc|p`mLkISqG7Trm?udnpO|>;k-X|vYSUWz&XRxd49lcE>i-lo5*Rz zTA<6IOayKz->bkcAjO3KKK7t*Z(H#|e!Yeh@(Ru%R&foul}_oyA&LHShCkys(#4B| zGIPx$EZSF%makiA*7k-CddPwmOlfGA)FfhXC&|r*O zzHYeZau>D&PGhba)HfLP-bEe4JVfjqyK=|_Nae`0mMG;(0~`;5H(r|vq*GAsB4utZ znX*GRdezkB5^koqn$fK%8Fkz@F#yr z!jH3b;6%U95AHqz-6Xp?$gvXcEYvp;dU^dIx-4YUBg~^l?rGdB z`S1buPd&+xMJcRe&(1~mb2gVQgMohSCt0ECj*W;vSmp#M8h38gQZvy&NDe*t7eWGI zR6+fIJ#}%4^nD}&K>IHGkz*f!SD9J9dP&s<(QcGuzXEuL=V1VjDGknCyq?k@xhiEm@P9KCXv=th40j=Ny6ZyxPz$<*^ybFu zJh78yNLRknxa@|})W3lrmcDNqghA^w!2&R;`ogg5n0|d46zNqvrNykKP$-6u|C)f( z`S`WS##bL5OA(2`(=C;RGU_+Yp_uvKfV0fAgW{}Pd=~92`OA#@lr$fz25x;BtrOs& zZ1De}6EKCI7&~)47$F90eihD;f*Caz#s5MfLtBiYu;8K#x*FjlyI^t67T4eKV#3!` z&^n5~WEjMjYgmxOV1LV>TC%}lG#K==3-HLT)RK)-z0Kd1kRbistM@Ix%i8as1^gCA zfy(}-K9o!#va?OSD>%AjX0e@xFuez?4enV8Y2dHlo~@y|?W8bF2v)uN5S9I{*SE|< zH+V3YXLfU{b+-ngxkwgZEcrD$iFy*ACPVbF0dvqM*5g*WxN3d!{cg#;E6Pdo7;I%t zVhO@=IjGN_FdjN(?W9Ol=Tsy1dtA_6(Pu9{vAeEi9No%&V}GXqsbg73Rm{oVMPc05 z@E(%xmG$)E6_!F7)7MahGyBgHG9!tNk{*!WEa`$VF*IOdOjZyCn4KKkriCv3;Ni6jN09qC=iVDEWytOjMs@Y!LC%CUua`f`O}~vZG1ZR=B8m4r+#BX+IdjD!LU3S-)h;`x-UW@W%o$;e9nwmQPy`R8}@3 zsXwp_U+h8S%*w+uNMwXfk4S;t#On9GQ$VmKkUVx6VvJNWUj(n*yBjN8$C6mJli~{S zBQoDF5LNUnC6`OWX6B|o>67C2Nx&uMRF^&e$y=;k)4@V9=MfR?>$tPq0mU`+nh&@{ zJ)aQSPxWZdoJ&Ct0g(2d^1$QvJIdzQD0EI>Y>RiPzdol%LsyID*PgklIQst*PO2j` zg`%emH=`G`2o{}jQimc%LVSF^rw59vKowdPB&Z< zfZ;dZHg8JKRUOWh%bfGw^0=*7v0-2>nA<$QSEmVK`53(FK3CP{$LFB3*zc%M5!2iA zxbji--sjFaC~3#T6X;kZc1X={>LEOw2M&>k#EXC`(MfA2dvs!V6G^SW$h@g?&~gpj zcS>E}cb)GQ*o->Nu1l{!vMQM*F|dZ#utCTaMv(&0Rfg%ro>s(!`iBP?KlT!|iHQc1 ze5o9k?_*V8t_oYXn{OX)Jg!dYK_ub3U?ETiv=nfjiqM=%L~GRh2PRR7hAl)!>>|S} zN9LPZ?DBh%PiPUZINm3Pe3V8GxQFI;M744xBfz{X@~B+=q{ui&+|tFsw<97?xy`Eb zfJPZj(_cpg+^J5ZFq{L zbdm2wzLR>ZD6&~Y+UOe1kYkf8S#(M$kesqL=1#eM${0oE3GvQPY!{`ITtd`4cM%D0xdT>gyRxu>ib)lQcl z3UdnN6*$I4-2Q_mydGP9UuFi}^G?c{1V<_jWG6T)dm1J-qwVJ)^GXnNUN2RoJNKfC zrq?+)$6&&c?BiR-`kl(tZ6V{#%!NvujuzEs4!h1MxYu;qN{BzkF6nAw8y4$mat` zo0XQEJ_lK5Qef7rh6q&xiWR_Kjvzq_`S(veqYu}Rqeclg0rsuR14Z~=*crRl6&((W z8YLkvJXb2ZSM;;XXQ2G75>3!@q>}Rfc&IQ9|0I#H7bCl5a#LKWtc|1a`5kP77V2K` zIF`EVl~g3nc(R*NE9}stfncrv;%ohkqX~g$XPUy=nPR$TV)?oFK|Vshjn}UC;IoIHytf2}S5xf&Dj?H)!KnC5;IC8o-}>Q8 z#~wC*860xk-AR2M>t+wXtd0cp5>c$mo)t;CnEr?|H8Kp+q$*iyp>RI4Jac4z8qh>_yy^_>|N_d|H13aFZ^_32O!l`ToN&KBJ%b)&RA_}QMx5Pk@ z6_39w@WrVx$n!<2dD!Il!+4+F=2N8RQ&->{)6lwrLzQ>^Qbo_|Su%%Xfzj{gajyU= zie!E}w?G+5z$s|P)D5UV`5~$di}XTRPIrcfN7JI2(u!_*5y;(r@MP7P;Vr z@#@+f+7%amMEdu-W_HICs5@$SFh2A$8K8I&IAqKIS@oSy=2l;zJy9j_ySLW)K^HZR zS|QlIxVQdm(zebdNoB19GPM}dSePjU-ZGTQ4#Un)GEB1qt5cf_>$Mbxu2UlZk_7(S zdA{G%81ses=yTn4buE1K2<)feZu6}n&YIRQ{CyT#JM1P=*?)S+>aB>o2WVx^zR;vr z{nzrn!&b|~xf}1_MZCg7(L4O)UqHMP5`(@oQ%%7Wosw4Tb_T+&PjX1P!UEmb+8CcX=3`lhUYIV-#^=ARaV`pJJ!$%hX^}a-0`E(%???ZLvIgcAcWiy=N`o%a9l~KLys_M3ymK47I=}9 zy3?zM&g>>BJi8#Wzi0{+BLmt@rUvKg7x>%R2Le~|um1unPvCSMeRoGZ@YL(~9C$L2 z*ivm({3Nd@faR?YQ2ZTjEr9~GJ;!`YMK`?|6=Z&$ig+%Zki9adq1Da&#aZ{)tO=)4 zY<^fqQ3K`J+@l~B_JE13-aoa}ADLa77xh_vGJD0nBu{E`A5D3@o)hQx){hGIY2DkY zEc_%W7y6_=Ved=E zPIItHSNHR719`Uj;T@WruZlzM9_Z@MMQT3(mM$N8OHuA*JEJ6t#^LYN=IX5MtSdIuM#mAew&U|+ouli1rLh4=% zIJ4-Xxk=LC%~Y}=kPx>}{Ocn7-6E4fk8ycFxN7TG*VtU3apqhrnsz+$d{Hj1mhmP8 z_mSo2$=oh8IwHtNlybuI{_N;N!C>M1)!Y#3u*%fro-U_}x3nEksOF5*yvSt;&~oJU z#LK7%8QQy~t@TH0zgiXrHjy18Aoiy?H$L_WFkf7|)HL3e1<5oTC#6QXteBh?4a|9E+G5>ySw!Ld0fbXYc4kM_j5ZUuEe;~9-4`#`zB3=7SQ@CwU^ zd=)JH2v&OaHfxj|iRY}a{L9Z~R5}6Y2M8$s3!2vhe+&(^B=+eZfR4TIJ*b_Kav=GVV0`%Vx5?zf`>Wm+F8j9qCg}6+yEy?}u@_-_?q6CJ_a7)LtJ|BUo*CoX znUPX|bC=k)7F9X_JQleZKpzoM=>*6fcr|m+1VGUpLVHm=xXl?vmLmbRjLD8a(YKb~ zU4^6zvcq{<-1kq|Uyau%7N(EHV;A@OUkMm7pT3hNnd<-_#Ua59W*)~0N5}x4hxV1B z%F{|F!Gzv#kY*Qxgz5z0Wd56PQp~4@YDpb_rf4PwUZLT&Lq*WTH)YA|9SIJ*%^_nW z;IBR)`XpzXoya|ze7KH5ZKq97QC0Q0LDF%@t$CsDcU6H$*mh_`F?PB3}OJgAlgq7q(GxNE+Z*iynpu3ITN-Ul1^EE-+pj9C%^v=L47FBMSOAAmH{+)zy2J=PQ+k*}z= zhp!baQAul2*ci=I&PKWSK{5Mz|2KMys34UhV6%qqn+TisCkj!5fNr|?%wZi5!TB(U z7)4@o3R8p-4gVmSk`!8%+hE7K#DF#-e<34h#i0J{8#BP05;(eH`8; z!iGl>G{gOy-%@H~JNNlc7#kNj4YZktmGDwph2(~RVW%Y3eJoGh(+5&S-wTg}p`7lb z$eO*GhbQ@h5{b|OyhL<5SZbPw14MG%qjk=1l$``*Xa{WZAK5$7Hn z4sk6D&}W2vJ*K}`ZV(-I`-gAbFuNw{@)OH+o}mQq z0A=u|{ND*c)EO$-7%E4%!pYB3UHe6vaGw)`eb>d5eR2lbJeJKP&Kn?SH{_WN)uHAo zKM9y4$BK~7Yu|^^?-)d3|21qB_2xSdSK6^oE)fJyqLliiY4J-;(@-lNg2A7X{TH%e zNn}2T5G6nn(Uu;fa3f)NaRW~#hSnSc`HLGUZBcz>x&8M7Nk@2J-x7k8!QZ02K@x0v z5D40|vmHD4+E9PRcT&y>`KGD+Wi5+y6ocC5)c%57npE&SWz7bU< zA%4IT+wl{Z$7Zm)iN?v4ykV?xp)=wk(fiq~Te%fjw&0VegoFmD1Xl}lsKIxde=mJV z1zmZHCkUa=pLzkO5SIF99wH$xiqk!?2|eU3eE8Acto4rhvq4QUru-t>G8kXNH$JZd z4iSpA`<&W)o0PN^fk8<~k#;bmJHRKPTY|ccXMIzT0NbSp!OT5W*1`q@EI!N@yOIe5 z%q3Oj=HkwFme17(kf@X-Xf8h(|YG-t5lFshs}^N<1gA5bVp^)ny| zB)d(-*-%_U>46YLqEZY$^ul@|d+QQb68if8g-4;PkY%;PZxtePSsh|7X!HP{v!}}i zY$EXpFEJQ70}!}9J2ake1O#~ueP;yTUD63~U-qgEK<@R%6EpV9FVHde5BV<*qO0im z=P&aKMHts33Un8hD<}1e|Y+k)+u>`ORKkzg7bgXwcXb)TYxw!qNQ=r+0;OM zm%fP`!k@ehJr_Vj-9qwlno0l)D518?k^C!*fAgOM(&X;xBSxuWnNJ)Ha}gnj}5@MK_0LFX`0;|_x5<*6HpqPQBJjF*TEZC^TPWq_D@6XDT_*p2(w7Lp1w$Bf39E((Hk{2gYR^Z z9>>W}sqvSC+x}6;PZug&r`rE^=o#J`J)B~Jwk-A%XZ2FW>^IZc;;a(K96XEORExpD zwjwt4AUOf6#1h9|GM*~-Qlr`wj6hczR+2?vyK??fq4;sNC_-}s<An5<1X7WmlP`d5D;H`fXkCIoljDM95DBwqEVyMjY{TnUl zSW`4uek{DGdg$rqHp>XAk8?mh#w5)qx7_NX!rz)$#2Z})s0E{J%Ezv?2!%>6-9U2x zr}xj&m=`sSWn*j2?55B?--swcvvTpRH8IYL37711wRU0Y`oFo-`CyAy0fLo=By73< z=8O21eldb{qpMgElDRK-W?BDJ`Y!PymudGi zkyfI6|5gKg^y7|F6M=&rcKru*tBEA?M?z?PtXh_~VvWhhOLJ0={|QI4#UJ0r7Og5x zj?IOGj|$;Deei^kNHMpX$?}3k)c-WAsrT>#8X3om`>R~69u+Yd29uEfN|e5gH&6Nc zyJ)C+Hv+4biPZgbJycJ-lQ82Lr#M%H4=a*oNozFxF9{x1>D+I0U ze-rx6IgB;F%N(M!5C&@aG~|0e0QQ~$5{Xp$KqBvoVkKaW*T`Yv?L`<6&Hry$2&_3B z5`@&*Cz{x;8jzDkCa<0c)`J)VM_wV1yBYY4NU@7PO%K>m+`vkTKy@zDv!#25}&IGHA0S;~e(GGzA;SE>| z6Ppv)!K3wdWpP$D7B32q`$GHnn8z3KglBJQCQJl^K z@dXLQ5Sb1%rQhq#XPVP>JQE@RfNfd^s6Sn3ANp96fqiM|%TzNg$)1K`TGTvycc%wvM|XLM-65BPLUOlQ^Zch0hH zKMJX1Qtw<=f|G-g6Zj|e+o3SpJv!0gE8hEwD@P+Y5D@gWP*)jX3#{n!?P*>P3cM=g zci9uZc56&ijR{$v?jM!cN)}-B2Lp-yrgXU3{r+`Qf^-KFvjIXOHAXZE`WN&g3KeUI zN*Cl&s9ugPW{pyTy81+!@53ush_E6F(8fQEF9u2+w@tN-8j|UO!teH-G`(4{epoQX z8`GH0qh_KNTR>;o4?-~7!ml_k6-tewu{on{J7u9wsW(G)ePualZN3*+l*zIN0(Q9WTJun^!)usOM zC?6fd@DQ&0=Iz@v)(>iDJV`y@ZmEBy{x?|DmZp*c@|ezfotBmsQ$wy(N7LKILq|^w z)+rP4)8qUv2RJk}#botnomX5}@540prGk&h&O?MRY`D0%8u3{Jep+5Etbhf<8DQ1D z3y&@!_Q~@j;^nY=^ynRX@JnY2#$MC(?13c3%jdK5+mvqS!W)`L zJkhH4PbkmgHO@sf8`g@~!TcLf2$0C{I2>!sw+yt!^S*rF*x$c@gKHZb;;{Oruc9&8 zwiQbM*2rMq*WM=J!UiIB@K1ioH3JjUUj%f6z^P17MFhC6ArDO`8nd*5SpdQTy?5`t z28TDPIVq|6^A=Bpf-}|S)RZnBWS1LrxVqwgoY>jfxw#0wsKMyrOp_1e6`A+6R>a zT-~5%o^Drf)GbKLUEoaCWXnUF2zUn~1M-AO4B8>y z6(9AVN<7qoMXMFM|1^^taU5AN3Tv^R~pMn zK$h}%iKsyHV|;qrUz+}H<2%r8+U6sd`;)Mu)myj!300(ug8jU;^t(?|1zJun?(VxA zBFo&6XoD3^gaqwp4_bo_&b;X?>FDSTTGyWw5V$7j_M9;cCc=L&x=G$Aox zK%4and@Zv7k@;@}PxJAUO;0j9lOz3u72+E{H>=Si$#;v=QK-E(d&mg;5Roab zMGZdxD1MPq_)k2$xBHQplL((-6x;i*g?(r<%z+f2CJ6KA-F?u0+@*6aR=gKK4m0>p zXqL-JiTb@;B5(WH?3{`yq}JHTsE9DEB|blY{2N_Re*O;250cAm+O`I}l-yEQ=#6vh z)hc{|=~{T20MR*!M60gd2=bHM1s{wYB;_)07TZ=e?UG@y$D0H~^iOrMKNd95k6W+s zcp)Rm?$XJB&dama=f66^L>4A!@uo-7R8NnZDafKKeVID;ocU6>r{qV2k05B+5<&lm zKc(NRWu+#iq@2}Q8H!#<3*!6R<~O;AHfde|Q|z6WCdi1+RD<}E*aGapDET~5O?OlT z7zzZ_D8CjH7vF$rq9#0^%;e|WnO@n>D&gL`G-h3x0=AoI83SKKrhtZc(o{UO0EI~` ziE^qd`r?!ivuw|2bEK!5SQkuhocb*Rx~}lvd6cdjQX$g!mY$yF!1D@0YN9VcZ+&^7 zH>9DbHvwDD&-WbA2LmA4137w+3Mni!P|;QV_P>PQP=%T&|9B?C4VezQgdJ~1zSr%W7PI3LSX3(fMi=4Zs|f*vGlO!!k} zg^5b+!bsd($}olIZ$|_)K2(>_q>}{(MxR{=w?(R`!6R*>vT2?<^~#Ie1xly&(tiZM z%@DtkLAW3{v&SdVcGqB}Iozan4^H#qP7Q0BT>m0o0GDkXkfC`Ze|Qs?d=W`VvWjjn zygqolE8Y16ez6Dd##|kVd|m|d#+Z6ZMTFT31muFKp$wBRm}Skiif+=rjzIH)F_*1? zkp0hNspid2&{cTyBUhQ7` zc-o+XsU3kCp-uX3Mx5aFXCd8y@w^V{@jM=+%NVfP^jK7@m5}Gc2Y=TJzX_UJq7sM& za-TfaG_EtKUu~fjm{tg_MReK&Qs0?7fXyp;t80OF?1z`HBvyFTzJw?F{RLTM|5l(X sr=+saLJa0(xB;d(T;v)a?t%p Date: Sat, 6 Oct 2012 01:44:20 +0100 Subject: [PATCH 101/105] GCS-Fix file copying on linux It got reverted on a merge --- ground/openpilotgcs/share/share.pro | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/ground/openpilotgcs/share/share.pro b/ground/openpilotgcs/share/share.pro index 7187dba04..ad1f45b68 100644 --- a/ground/openpilotgcs/share/share.pro +++ b/ground/openpilotgcs/share/share.pro @@ -9,7 +9,8 @@ equals(copydata, 1) { for(dir, DATACOLLECTIONS) { exists($$GCS_SOURCE_TREE/share/openpilotgcs/$$dir) { macx:data_copy.commands += $(COPY_DIR) $$targetPath(\"$$GCS_SOURCE_TREE/share/openpilotgcs/$$dir\") $$targetPath(\"$$GCS_DATA_PATH/\") $$addNewline() - !macx:data_copy.commands += $(COPY_DIR) $$targetPath(\"$$GCS_SOURCE_TREE/share/openpilotgcs/$$dir\") $$targetPath(\"$$GCS_DATA_PATH/$$dir\") $$addNewline() + !macx:data_copy.commands += $(MKDIR) $$targetPath(\"$$GCS_DATA_PATH/$$dir\") $$addNewline() + !macx:data_copy.commands += $(COPY_DIR) $$targetPath(\"$$GCS_SOURCE_TREE/share/openpilotgcs/$$dir\") $$targetPath(\"$$GCS_DATA_PATH/\") $$addNewline() } } From 9212bbeb20c4e1b90f3f7b671eb4ce759c2e4bee Mon Sep 17 00:00:00 2001 From: sambas Date: Sat, 6 Oct 2012 15:38:11 +0300 Subject: [PATCH 102/105] DSMx bindmode delay was too long, satellite binding works again. --- flight/PiOS/STM32F10x/pios_dsm.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/flight/PiOS/STM32F10x/pios_dsm.c b/flight/PiOS/STM32F10x/pios_dsm.c index cb838b56b..b35560d5d 100644 --- a/flight/PiOS/STM32F10x/pios_dsm.c +++ b/flight/PiOS/STM32F10x/pios_dsm.c @@ -128,7 +128,7 @@ static void PIOS_DSM_Bind(struct pios_dsm_dev *dsm_dev, uint8_t bind) GPIO_SetBits(cfg->bind.gpio, cfg->bind.init.GPIO_Pin); /* on CC works up to 140ms, guess bind window is around 20-140ms after power up */ - PIOS_DELAY_WaitmS(60); + PIOS_DELAY_WaitmS(20); for (int i = 0; i < bind ; i++) { /* RX line, drive low for 120us */ From b4fb4911cb06cd80cb7d489df0d769512e34a7ac Mon Sep 17 00:00:00 2001 From: Stacey Sheldon Date: Sat, 6 Oct 2012 23:09:09 -0400 Subject: [PATCH 103/105] HISTORY: Mentioned new ppm+pwm feature --- HISTORY.txt | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/HISTORY.txt b/HISTORY.txt index 54dc5c6d0..513b368a5 100644 --- a/HISTORY.txt +++ b/HISTORY.txt @@ -1,4 +1,9 @@ Short summary of changes. For a complete list see the git log. + +2012-10-06 +Receiver port can now be configured as PPM *and* PWM inputs. +Pin 1 is PPM, other pins are PWM inputs. + 2012-07-27 Added the ability to load stylesheets from external file according to operating system: macos.qss, linux.qss, windows.qss From b0182a47e3c1313b2733da2bf9902b86e2ecca08 Mon Sep 17 00:00:00 2001 From: Laura Sebesta Date: Sun, 7 Oct 2012 09:09:15 +0200 Subject: [PATCH 104/105] Fixed csv export error, and increased resolution of all variables to 10 significant digits. (10 sig. dig. are required for full resolution GPS latitude and longitude output.) --- ground/openpilotgcs/src/plugins/scope/plotdata.cpp | 2 +- ground/openpilotgcs/src/plugins/scope/scopegadgetwidget.cpp | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/ground/openpilotgcs/src/plugins/scope/plotdata.cpp b/ground/openpilotgcs/src/plugins/scope/plotdata.cpp index 57b17c193..c916b9cc5 100644 --- a/ground/openpilotgcs/src/plugins/scope/plotdata.cpp +++ b/ground/openpilotgcs/src/plugins/scope/plotdata.cpp @@ -165,7 +165,7 @@ bool ChronoPlotData::append(UAVObject* obj) //Perform scope math, if necessary if (mathFunction == "Boxcar average" || mathFunction == "Standard deviation"){ - //Put the new value at the front + //Put the new value at the back yDataHistory->append( currentValue ); // calculate average value diff --git a/ground/openpilotgcs/src/plugins/scope/scopegadgetwidget.cpp b/ground/openpilotgcs/src/plugins/scope/scopegadgetwidget.cpp index 7b53a060f..9798df0e7 100644 --- a/ground/openpilotgcs/src/plugins/scope/scopegadgetwidget.cpp +++ b/ground/openpilotgcs/src/plugins/scope/scopegadgetwidget.cpp @@ -677,13 +677,13 @@ int ScopeGadgetWidget::csvLoggingAddData() } else { - ss << QString().sprintf("%3.6g",plotData2->yData->last()); + ss << QString().sprintf("%3.10g",plotData2->yData->last()); m_csvLoggingDataValid=1; } } else { - ss << QString().sprintf("%3.6g",plotData2->yDataHistory->last()); + ss << QString().sprintf("%3.10g",plotData2->yData->last()); m_csvLoggingDataValid=1; } } From d664ec9705dd0e1016dafa4c8b38e8beef14433c Mon Sep 17 00:00:00 2001 From: PT_Dreamer Date: Sun, 7 Oct 2012 16:50:04 +0100 Subject: [PATCH 105/105] GCS-Try to fix linux file copy without braking Win --- ground/openpilotgcs/share/share.pro | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/ground/openpilotgcs/share/share.pro b/ground/openpilotgcs/share/share.pro index ad1f45b68..3c2a517b8 100644 --- a/ground/openpilotgcs/share/share.pro +++ b/ground/openpilotgcs/share/share.pro @@ -9,8 +9,9 @@ equals(copydata, 1) { for(dir, DATACOLLECTIONS) { exists($$GCS_SOURCE_TREE/share/openpilotgcs/$$dir) { macx:data_copy.commands += $(COPY_DIR) $$targetPath(\"$$GCS_SOURCE_TREE/share/openpilotgcs/$$dir\") $$targetPath(\"$$GCS_DATA_PATH/\") $$addNewline() - !macx:data_copy.commands += $(MKDIR) $$targetPath(\"$$GCS_DATA_PATH/$$dir\") $$addNewline() - !macx:data_copy.commands += $(COPY_DIR) $$targetPath(\"$$GCS_SOURCE_TREE/share/openpilotgcs/$$dir\") $$targetPath(\"$$GCS_DATA_PATH/\") $$addNewline() + win32:data_copy.commands += $(COPY_DIR) $$targetPath(\"$$GCS_SOURCE_TREE/share/openpilotgcs/$$dir\") $$targetPath(\"$$GCS_DATA_PATH/$$dir\") $$addNewline() + unix:data_copy.commands += $(MKDIR) $$targetPath(\"$$GCS_DATA_PATH/$$dir\") $$addNewline() + unix:data_copy.commands += $(COPY_DIR) $$targetPath(\"$$GCS_SOURCE_TREE/share/openpilotgcs/$$dir\") $$targetPath(\"$$GCS_DATA_PATH/\") $$addNewline() } }