1
0
mirror of https://bitbucket.org/librepilot/librepilot.git synced 2025-02-27 16:54:15 +01:00

Merge branch 'thread/OP-1222_FW_Wizard' of ssh://git.openpilot.org/OpenPilot into laurent/OP-1222_FW_Wizard

This commit is contained in:
Laurent Lalanne 2014-09-03 00:44:25 +02:00
commit 61e65734b2
15 changed files with 448 additions and 310 deletions

View File

@ -26,109 +26,47 @@
*/
#include "airspeedpage.h"
#include "ui_airspeed.h"
#include "setupwizard.h"
AirSpeedPage::AirSpeedPage(SetupWizard *wizard, QWidget *parent) :
AbstractWizardPage(wizard, parent),
ui(new Ui::AirSpeedPage)
{
ui->setupUi(this);
QSvgRenderer *renderer = new QSvgRenderer();
renderer->load(QString(":/configgadget/images/fixedwing-shapes.svg"));
m_airspeedPic = new QGraphicsSvgItem();
m_airspeedPic->setSharedRenderer(renderer);
QGraphicsScene *scene = new QGraphicsScene(this);
scene->addItem(m_airspeedPic);
ui->typeGraphicsView->setScene(scene);
setupAirSpeedPageTypesCombo();
// Default to Software Estimation
connect(ui->typeCombo, SIGNAL(currentIndexChanged(int)), this, SLOT(updateImageAndDescription()));
ui->typeCombo->setCurrentIndex(0);
}
SelectionPage(wizard, QString(":/setupwizard/resources/airspeed-shapes.svg"), parent)
{}
AirSpeedPage::~AirSpeedPage()
{
delete ui;
}
{}
void AirSpeedPage::initializePage()
bool AirSpeedPage::validatePage(SelectionItem *selectedItem)
{
updateAvailableTypes();
updateImageAndDescription();
}
// TODO
bool AirSpeedPage::validatePage()
{
SetupWizard::VEHICLE_SUB_TYPE type = (SetupWizard::VEHICLE_SUB_TYPE)ui->typeCombo->itemData(ui->typeCombo->currentIndex()).toInt();
getWizard()->setVehicleSubType(type);
getWizard()->setAirspeedType((SetupWizard::AIRSPEED_TYPE)selectedItem->id());
return true;
}
void AirSpeedPage::fitInView()
void AirSpeedPage::setupSelection(Selection *selection)
{
if (m_airspeedPic) {
ui->typeGraphicsView->setSceneRect(m_airspeedPic->boundingRect());
ui->typeGraphicsView->fitInView(m_airspeedPic, Qt::KeepAspectRatio);
}
}
void AirSpeedPage::resizeEvent(QResizeEvent *event)
{
Q_UNUSED(event);
fitInView();
}
void AirSpeedPage::showEvent(QShowEvent *event)
{
Q_UNUSED(event);
fitInView();
}
// TODO
void AirSpeedPage::setupAirSpeedPageTypesCombo()
{
ui->typeCombo->addItem(tr("Aileron Dual Servos"), SetupWizard::FIXED_WING_DUAL_AILERON);
m_descriptions << tr("This setup expects a traditional airframe using two independent aileron servos on their own channel (not connected by Y adapter) plus an elevator and a rudder. ");
ui->typeCombo->addItem(tr("Aileron Single Servo"), SetupWizard::FIXED_WING_AILERON);
m_descriptions << tr("This setup expects a traditional airframe using a single alieron servo or two servos connected by a Y adapter plus an elevator and a rudder. ");
ui->typeCombo->addItem(tr("Elevon"), SetupWizard::FIXED_WING_ELEVON);
m_descriptions << tr("This setup currently expects a flying-wing setup, an elevon plus rudder setup is not yet supported. Setup should include only two elevons, and should explicitly not include a rudder.");
}
void AirSpeedPage::updateAvailableTypes()
{}
// TODO
void AirSpeedPage::updateImageAndDescription()
{
SetupWizard::VEHICLE_SUB_TYPE type = (SetupWizard::VEHICLE_SUB_TYPE)ui->typeCombo->itemData(ui->typeCombo->currentIndex()).toInt();
QString elementId = "";
QString description = m_descriptions.at(ui->typeCombo->currentIndex());
switch (type) {
case SetupWizard::FIXED_WING_DUAL_AILERON:
elementId = "aileron";
break;
case SetupWizard::FIXED_WING_AILERON:
elementId = "aileron-single";
break;
case SetupWizard::FIXED_WING_ELEVON:
elementId = "elevon";
break;
default:
elementId = "";
break;
}
m_airspeedPic->setElementId(elementId);
ui->typeGraphicsView->setSceneRect(m_airspeedPic->boundingRect());
ui->typeGraphicsView->fitInView(m_airspeedPic, Qt::KeepAspectRatio);
ui->typeDescription->setText(description);
selection->setTitle(tr("OpenPilot Airspeed Sensor Selection"));
selection->setText(tr("This part of the wizard will help you select and configure a way to obtain "
"airspeed data. OpenPilot support three methods to achieve this, one is a "
"software estimation technique and the other two utilize hardware sensors.\n\n"
"Please select how you wish to obtain airspeed data below:"));
selection->addItem(tr("Estimated"),
tr("This option uses an intelligent estimation algorithm which utilizes the OpenPilot INS/GPS "
"to estimate wind speed and subtract it from ground speed obtained from the GPS.\n\n"
"This solution is highly accurate in normal level flight with the drawback of being less "
"accurate in rapid altitude changes.\n\n"),
"estimated",
SetupWizard::ESTIMATE);
selection->addItem(tr("EagleTree"),
tr("Select this option to use the Airspeed MicroSensor V3 from EagleTree, this is an accurate "
"airspeed sensor that includes on-board Temperature Compensation.\n\n"
"Selecting this option will set your board's Flexi-Port in to I2C mode."),
"eagletree",
SetupWizard::EAGLETREE);
selection->addItem(tr("MS4525 Based"),
tr("Select this option to use an airspeed sensor based on the MS4525DO pressure transducer "
"from Measurement Specialties. This includes the PixHawk sensor and their clones.\n\n"
"Selecting this option will set your board's Flexi-Port in to I2C mode."),
"ms4525",
SetupWizard::MS4525);
}

View File

@ -1,11 +1,11 @@
/**
******************************************************************************
*
* @file fixedwingpage.h
* @author The OpenPilot Team, http://www.openpilot.org Copyright (C) 2012.
* @file airspeedpage.h
* @author The OpenPilot Team, http://www.openpilot.org Copyright (C) 2014.
* @addtogroup
* @{
* @addtogroup FixedWingPage
* @addtogroup AirSpeedPage
* @{
* @brief
*****************************************************************************/
@ -28,40 +28,18 @@
#ifndef AIRSPEEDPAGE_H
#define AIRSPEEDPAGE_H
#include <QtSvg/QGraphicsSvgItem>
#include <QtSvg/QSvgRenderer>
#include <QList>
#include "selectionpage.h"
#include "abstractwizardpage.h"
namespace Ui {
class AirSpeedPage;
}
class AirSpeedPage : public AbstractWizardPage {
class AirSpeedPage : public SelectionPage {
Q_OBJECT
public:
explicit AirSpeedPage(SetupWizard *wizard, QWidget *parent = 0);
~AirSpeedPage();
void initializePage();
bool validatePage();
void fitInView();
protected:
void resizeEvent(QResizeEvent *event);
void showEvent(QShowEvent *event);
private:
Ui::AirSpeedPage *ui;
void setupAirSpeedPageTypesCombo();
QGraphicsSvgItem *m_fixedwingPic;
void updateAvailableTypes();
QList<QString> m_descriptions;
private slots:
void updateImageAndDescription();
public:
bool validatePage(SelectionItem *selectedItem);
void setupSelection(Selection *selection);
};
#endif // AIRSPEEDPAGE_H

View File

@ -1,164 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>FixedWingPage</class>
<widget class="QWizardPage" name="FixedWingPage">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>600</width>
<height>400</height>
</rect>
</property>
<property name="windowTitle">
<string>WizardPage</string>
</property>
<layout class="QVBoxLayout" name="verticalLayout">
<item>
<widget class="QLabel" name="label">
<property name="text">
<string>&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0//EN&quot; &quot;http://www.w3.org/TR/REC-html40/strict.dtd&quot;&gt;
&lt;html&gt;&lt;head&gt;&lt;meta name=&quot;qrichtext&quot; content=&quot;1&quot; /&gt;&lt;style type=&quot;text/css&quot;&gt;
p, li { white-space: pre-wrap; }
&lt;/style&gt;&lt;/head&gt;&lt;body style=&quot; font-family:'MS Shell Dlg 2'; font-size:8pt; font-weight:400; font-style:normal;&quot;&gt;
&lt;p align=&quot;center&quot; style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-size:12pt; font-weight:600;&quot;&gt;OpenPilot Airspeed Sensor Configuration&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:12pt; font-weight:600;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-size:10pt;&quot;&gt;This part of the wizard will set up the OpenPilot controller for use with an airspeed sensor also commonly called a Pitot tube. The OpenPilot Platform supports multiple types of hardware airspeed sensors as well as an advanced software based wind speed estimation algorthym which requires no additional hardware although this is slightly less accurate than using a dedicated hardware sensor. &lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:10pt;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-size:10pt;&quot;&gt;Please select the type of airspeed sensor you wish to use below:&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
<property name="alignment">
<set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop</set>
</property>
<property name="wordWrap">
<bool>true</bool>
</property>
</widget>
</item>
<item>
<layout class="QHBoxLayout" name="horizontalLayout">
<property name="topMargin">
<number>4</number>
</property>
<item>
<layout class="QVBoxLayout" name="verticalLayout_2">
<item>
<layout class="QHBoxLayout" name="horizontalLayout_2">
<property name="rightMargin">
<number>4</number>
</property>
<item>
<widget class="QLabel" name="label_2">
<property name="minimumSize">
<size>
<width>125</width>
<height>36</height>
</size>
</property>
<property name="font">
<font>
<pointsize>10</pointsize>
<weight>50</weight>
<bold>false</bold>
</font>
</property>
<property name="text">
<string>Airspeed type:</string>
</property>
</widget>
</item>
<item>
<widget class="QComboBox" name="typeCombo">
<property name="minimumSize">
<size>
<width>125</width>
<height>20</height>
</size>
</property>
</widget>
</item>
</layout>
</item>
<item>
<widget class="QTextEdit" name="typeDescription">
<property name="sizePolicy">
<sizepolicy hsizetype="Maximum" vsizetype="Expanding">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="verticalScrollBarPolicy">
<enum>Qt::ScrollBarAlwaysOn</enum>
</property>
<property name="horizontalScrollBarPolicy">
<enum>Qt::ScrollBarAlwaysOff</enum>
</property>
<property name="textInteractionFlags">
<set>Qt::TextSelectableByKeyboard|Qt::TextSelectableByMouse</set>
</property>
</widget>
</item>
</layout>
</item>
<item>
<widget class="QGraphicsView" name="typeGraphicsView">
<property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Expanding">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>200</width>
<height>200</height>
</size>
</property>
<property name="autoFillBackground">
<bool>true</bool>
</property>
<property name="frameShape">
<enum>QFrame::NoFrame</enum>
</property>
<property name="lineWidth">
<number>0</number>
</property>
<property name="midLineWidth">
<number>0</number>
</property>
<property name="verticalScrollBarPolicy">
<enum>Qt::ScrollBarAlwaysOff</enum>
</property>
<property name="horizontalScrollBarPolicy">
<enum>Qt::ScrollBarAlwaysOff</enum>
</property>
<property name="backgroundBrush">
<brush brushstyle="NoBrush">
<color alpha="0">
<red>0</red>
<green>0</green>
<blue>0</blue>
</color>
</brush>
</property>
<property name="foregroundBrush">
<brush brushstyle="NoBrush">
<color alpha="0">
<red>0</red>
<green>0</green>
<blue>0</blue>
</color>
</brush>
</property>
<property name="interactive">
<bool>false</bool>
</property>
</widget>
</item>
</layout>
</item>
</layout>
</widget>
<resources/>
<connections/>
</ui>

View File

@ -35,9 +35,9 @@ FixedWingPage::FixedWingPage(SetupWizard *wizard, QWidget *parent) :
FixedWingPage::~FixedWingPage()
{}
bool FixedWingPage::validatePage(SelectionItem *seletedItem)
bool FixedWingPage::validatePage(SelectionItem *selectedItem)
{
getWizard()->setVehicleSubType((SetupWizard::VEHICLE_SUB_TYPE)seletedItem->id());
getWizard()->setVehicleSubType((SetupWizard::VEHICLE_SUB_TYPE)selectedItem->id());
return true;
}

View File

@ -38,7 +38,7 @@ public:
~FixedWingPage();
public:
bool validatePage(SelectionItem *seletedItem);
bool validatePage(SelectionItem *selectedItem);
void setupSelection(Selection *selection);
};

View File

@ -0,0 +1,76 @@
/**
******************************************************************************
*
* @file fixedwingpage.cpp
* @author The OpenPilot Team, http://www.openpilot.org Copyright (C) 2012.
* @addtogroup
* @{
* @addtogroup FixedWingPage
* @{
* @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 "gpspage.h"
#include "setupwizard.h"
GpsPage::GpsPage(SetupWizard *wizard, QWidget *parent) :
SelectionPage(wizard, QString(":/setupwizard/resources/gps-shapes.svg"), parent)
{}
GpsPage::~GpsPage()
{}
bool GpsPage::validatePage(SelectionItem *selectedItem)
{
getWizard()->setGpsType((SetupWizard::GPS_TYPE)selectedItem->id());
return true;
}
void GpsPage::setupSelection(Selection *selection)
{
selection->setTitle(tr("OpenPilot GPS Selection"));
selection->setText(tr("Please select the type of GPS you wish to use. As well as OpenPilot hardware, "
"3rd party GPSs are supported also, although please note that performance could "
"be less than optimal as not all GPSs are created equal.\n\n"
"Please select your GPS type data below:"));
selection->addItem(tr("Disabled"),
tr("GPS Features are not to be enabled"),
"disabled",
SetupWizard::GPS_DISABLED);
selection->addItem(tr("OpenPilot Platinum"),
tr("Select this option to use the OpenPilot Platinum GPS with integrated Magnetometer "
"and Microcontroller connected to the Main Port of your controller.\n\n"
"Note: for the OpenPilot v8 GPS please select the U-Blox option."),
"platinum",
SetupWizard::GPS_PLAT);
selection->addItem(tr("U-Blox Based"),
tr("Select this option for the OpenPilot V8 GPS or generic U-Blox chipset GPSs connected"
"to the Main Port of your controller."),
"ublox",
SetupWizard::GPS_UBX);
selection->addItem(tr("NMEA Based"),
tr("Select this option for a generic NMEA based GPS connected to the Main Port of your"
"controller."),
"nmea",
SetupWizard::GPS_NMEA);
}

View File

@ -0,0 +1,45 @@
/**
******************************************************************************
*
* @file gpspage.h
* @author The OpenPilot Team, http://www.openpilot.org Copyright (C) 2014.
* @addtogroup
* @{
* @addtogroup GpsPage
* @{
* @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 GPSPAGE_H
#define GPSPAGE_H
#include "selectionpage.h"
class GpsPage : public SelectionPage {
Q_OBJECT
public:
explicit GpsPage(SetupWizard *wizard, QWidget *parent = 0);
~GpsPage();
public:
bool validatePage(SelectionItem *selectedItem);
void setupSelection(Selection *selection);
};
#endif // GPSPAGE_H

View File

@ -0,0 +1,108 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="744.09448819"
height="1052.3622047"
id="svg2"
version="1.1"
inkscape:version="0.48.5 r10040"
sodipodi:docname="airspeed-shapes.svg">
<defs
id="defs4" />
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="0.35"
inkscape:cx="375"
inkscape:cy="520"
inkscape:document-units="px"
inkscape:current-layer="layer1"
showgrid="false"
inkscape:window-width="1075"
inkscape:window-height="423"
inkscape:window-x="104"
inkscape:window-y="104"
inkscape:window-maximized="0" />
<metadata
id="metadata7">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1">
<flowRoot
xml:space="preserve"
id="flowRoot2985"
style="font-size:40px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"><flowRegion
id="flowRegion2987"><rect
id="rect2989"
width="148.57143"
height="54.285713"
x="137.14285"
y="120.93361" /></flowRegion><flowPara
id="flowPara2991">OpenPilo</flowPara></flowRoot> <g
id="eagletree">
<text
sodipodi:linespacing="125%"
id="text2997"
y="286.64789"
x="208.57143"
style="font-size:40px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
xml:space="preserve"><tspan
y="286.64789"
x="208.57143"
id="tspan2999"
sodipodi:role="line">Eagletree</tspan></text>
</g>
<g
id="ms4525">
<text
sodipodi:linespacing="125%"
id="text3001"
y="403.79074"
x="208.57143"
style="font-size:40px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
xml:space="preserve"><tspan
y="403.79074"
x="208.57143"
id="tspan3003"
sodipodi:role="line">MS4525</tspan></text>
</g>
<g
id="estimated"
inkscape:label="#estimated">
<text
sodipodi:linespacing="125%"
id="text3009"
y="140.93361"
x="205.71429"
style="font-size:40px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
xml:space="preserve"><tspan
y="140.93361"
x="205.71429"
id="tspan3011"
sodipodi:role="line">OpenPilot</tspan></text>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 3.5 KiB

View File

@ -0,0 +1,108 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="744.09448819"
height="1052.3622047"
id="svg2"
version="1.1"
inkscape:version="0.48.5 r10040"
sodipodi:docname="airspeed-shapes.svg">
<defs
id="defs4" />
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="0.35"
inkscape:cx="375"
inkscape:cy="520"
inkscape:document-units="px"
inkscape:current-layer="layer1"
showgrid="false"
inkscape:window-width="1075"
inkscape:window-height="423"
inkscape:window-x="104"
inkscape:window-y="104"
inkscape:window-maximized="0" />
<metadata
id="metadata7">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1">
<flowRoot
xml:space="preserve"
id="flowRoot2985"
style="font-size:40px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"><flowRegion
id="flowRegion2987"><rect
id="rect2989"
width="148.57143"
height="54.285713"
x="137.14285"
y="120.93361" /></flowRegion><flowPara
id="flowPara2991">OpenPilo</flowPara></flowRoot> <g
id="eagletree">
<text
sodipodi:linespacing="125%"
id="text2997"
y="286.64789"
x="208.57143"
style="font-size:40px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
xml:space="preserve"><tspan
y="286.64789"
x="208.57143"
id="tspan2999"
sodipodi:role="line">Eagletree</tspan></text>
</g>
<g
id="ms4525">
<text
sodipodi:linespacing="125%"
id="text3001"
y="403.79074"
x="208.57143"
style="font-size:40px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
xml:space="preserve"><tspan
y="403.79074"
x="208.57143"
id="tspan3003"
sodipodi:role="line">MS4525</tspan></text>
</g>
<g
id="estimated"
inkscape:label="#estimated">
<text
sodipodi:linespacing="125%"
id="text3009"
y="140.93361"
x="205.71429"
style="font-size:40px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
xml:space="preserve"><tspan
y="140.93361"
x="205.71429"
id="tspan3011"
sodipodi:role="line">OpenPilot</tspan></text>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 3.5 KiB

View File

@ -32,6 +32,8 @@
#include "pages/vehiclepage.h"
#include "pages/multipage.h"
#include "pages/fixedwingpage.h"
#include "pages/airspeedpage.h"
#include "pages/gpspage.h"
#include "pages/helipage.h"
#include "pages/surfacepage.h"
#include "pages/inputpage.h"
@ -132,11 +134,25 @@ int SetupWizard::nextId() const
if (getVehicleSubType() == MULTI_ROTOR_TRI_Y) {
return PAGE_SERVO;
} else {
switch (getControllerType()) {
case CONTROLLER_REVO:
case CONTROLLER_NANO:
return PAGE_GPS;
default:
return PAGE_SUMMARY;
}
}
case PAGE_SERVO:
{
switch (getControllerType()) {
case CONTROLLER_REVO:
case CONTROLLER_NANO:
return PAGE_GPS;
default:
return PAGE_SUMMARY;
}
}
case PAGE_BIAS_CALIBRATION:
return PAGE_OUTPUT_CALIBRATION;
@ -149,7 +165,7 @@ int SetupWizard::nextId() const
case VEHICLE_FIXEDWING:
return PAGE_AIRFRAMESTAB_FIXEDWING;
// TODO: Pages for Multi and heli
// TODO: PID selection pages for multi and heli
case VEHICLE_MULTI:
case VEHICLE_HELI:
case VEHICLE_SURFACE:
@ -158,6 +174,18 @@ int SetupWizard::nextId() const
}
}
case PAGE_GPS:
switch (getVehicleType()) {
case VEHICLE_FIXEDWING:
return PAGE_AIRSPEED;
default:
return PAGE_SUMMARY;
}
case PAGE_AIRSPEED:
return PAGE_SUMMARY;
case PAGE_AIRFRAMESTAB_FIXEDWING:
return PAGE_SAVE;
@ -167,8 +195,12 @@ int SetupWizard::nextId() const
case CONTROLLER_CC:
case CONTROLLER_CC3D:
case CONTROLLER_REVO:
switch (getVehicleType()) {
case VEHICLE_FIXEDWING:
return PAGE_OUTPUT_CALIBRATION;
default:
return PAGE_BIAS_CALIBRATION;
}
default:
return PAGE_NOTYETIMPLEMENTED;
}
@ -355,6 +387,8 @@ void SetupWizard::createPages()
setPage(PAGE_VEHICLES, new VehiclePage(this));
setPage(PAGE_MULTI, new MultiPage(this));
setPage(PAGE_FIXEDWING, new FixedWingPage(this));
setPage(PAGE_AIRSPEED, new AirSpeedPage(this));
setPage(PAGE_GPS, new GpsPage(this));
setPage(PAGE_HELI, new HeliPage(this));
setPage(PAGE_SURFACE, new SurfacePage(this));
setPage(PAGE_INPUT, new InputPage(this));

View File

@ -96,13 +96,23 @@ public:
return m_servoType;
}
void setGPSSetting(SetupWizard::GPS_SETTING setting)
void setAirspeedType(SetupWizard::AIRSPEED_TYPE setting)
{
m_gpsSetting = setting;
m_airspeedType = setting;
}
SetupWizard::GPS_SETTING getGPSSetting() const
SetupWizard::AIRSPEED_TYPE getAirspeedType() const
{
return m_gpsSetting;
return m_airspeedType;
}
void setGpsType(SetupWizard::GPS_TYPE setting)
{
m_gpsType = setting;
}
SetupWizard::GPS_TYPE getGpsType() const
{
return m_gpsType;
}
void setRadioSetting(SetupWizard::RADIO_SETTING setting)
@ -165,7 +175,7 @@ private slots:
void pageChanged(int currId);
private:
enum { PAGE_START, PAGE_CONTROLLER, PAGE_VEHICLES, PAGE_MULTI, PAGE_FIXEDWING,
PAGE_HELI, PAGE_SURFACE, PAGE_INPUT, PAGE_ESC, PAGE_SERVO,
PAGE_AIRSPEED, PAGE_GPS, PAGE_HELI, PAGE_SURFACE, PAGE_INPUT, PAGE_ESC, PAGE_SERVO,
PAGE_BIAS_CALIBRATION, PAGE_REVO_CALIBRATION, PAGE_OUTPUT_CALIBRATION,
PAGE_SAVE, PAGE_SUMMARY, PAGE_NOTYETIMPLEMENTED, PAGE_AIRFRAMESTAB_FIXEDWING,
PAGE_REBOOT, PAGE_END, PAGE_UPDATE };
@ -179,8 +189,8 @@ private:
INPUT_TYPE m_inputType;
ESC_TYPE m_escType;
SERVO_TYPE m_servoType;
GPS_SETTING m_gpsSetting;
AIRSPEED_TYPE m_airspeedType;
GPS_TYPE m_gpsType;
RADIO_SETTING m_radioSetting;
bool m_calibrationPerformed;

View File

@ -19,6 +19,8 @@ HEADERS += setupwizardplugin.h \
pages/notyetimplementedpage.h \
pages/multipage.h \
pages/fixedwingpage.h \
pages/airspeedpage.h \
pages/gpspage.h \
pages/helipage.h \
pages/surfacepage.h \
pages/abstractwizardpage.h \
@ -49,6 +51,8 @@ SOURCES += setupwizardplugin.cpp \
pages/notyetimplementedpage.cpp \
pages/multipage.cpp \
pages/fixedwingpage.cpp \
pages/airspeedpage.cpp \
pages/gpspage.cpp \
pages/helipage.cpp \
pages/surfacepage.cpp \
pages/abstractwizardpage.cpp \

View File

@ -64,8 +64,8 @@ public:
enum ESC_TYPE { ESC_RAPID, ESC_STANDARD, ESC_UNKNOWN };
enum SERVO_TYPE { SERVO_ANALOG, SERVO_DIGITAL, SERVO_UNKNOWN };
enum INPUT_TYPE { INPUT_PWM, INPUT_PPM, INPUT_SBUS, INPUT_DSMX10, INPUT_DSMX11, INPUT_DSM2, INPUT_UNKNOWN };
enum GPS_SETTING { GPS_UBX, GPS_NMEA, GPS_DISABLED };
enum AIRSPEED_TYPE { ESTIMATE, EAGLETREE, MS4525 };
enum GPS_TYPE { GPS_PLAT, GPS_UBX, GPS_NMEA, GPS_DISABLED };
enum RADIO_SETTING { RADIO_TELEMETRY, RADIO_DISABLED };
virtual VehicleConfigurationSource::CONTROLLER_TYPE getControllerType() const = 0;
@ -74,8 +74,8 @@ public:
virtual VehicleConfigurationSource::INPUT_TYPE getInputType() const = 0;
virtual VehicleConfigurationSource::ESC_TYPE getEscType() const = 0;
virtual VehicleConfigurationSource::SERVO_TYPE getServoType() const = 0;
virtual VehicleConfigurationSource::GPS_SETTING getGPSSetting() const = 0;
virtual VehicleConfigurationSource::AIRSPEED_TYPE getAirspeedType() const = 0;
virtual VehicleConfigurationSource::GPS_TYPE getGpsType() const = 0;
virtual VehicleConfigurationSource::RADIO_SETTING getRadioSetting() const = 0;
virtual bool isCalibrationPerformed() const = 0;

View File

@ -37,7 +37,7 @@
<file>resources/multirotor-shapes.svg</file>
<file>resources/fixedwing-shapes-wizard.svg</file>
<file>resources/fixedwing-shapes-wizard-no-numbers.svg</file>
<!-- these are different from the files in /config/images -->
<file>resources/airspeed-shapes.svg</file>
<file>resources/bttn-illustration-down.png</file>
<file>resources/bttn-illustration-up.png</file>
<file>resources/bttn-illustration-color-up.png</file>
@ -48,5 +48,6 @@
<file>resources/bttn-flash-up.png</file>
<file>resources/bttn-upgrade-down.png</file>
<file>resources/bttn-upgrade-up.png</file>
<file>resources/gps-shapes.svg</file>
</qresource>
</RCC>

View File

@ -164,7 +164,7 @@ void WelcomeMode::networkResponseReady(QNetworkReply *reply)
reply->deleteLater();
if (version != VersionInfo::tagOrHash8()) {
m_newVersionText = tr("(Update Available: %1)").arg(version);
m_newVersionText = tr("Update Available: %1").arg(version);
emit newVersionTextChanged();
}
}