22 changed files with 431 additions and 38 deletions
@ -0,0 +1,156 @@
@@ -0,0 +1,156 @@
|
||||
/*=====================================================================
|
||||
|
||||
QGroundControl Open Source Ground Control Station |
||||
|
||||
(c) 2009 - 2014 QGROUNDCONTROL PROJECT <http://www.qgroundcontrol.org>
|
||||
|
||||
This file is part of the QGROUNDCONTROL project |
||||
|
||||
QGROUNDCONTROL 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. |
||||
|
||||
QGROUNDCONTROL 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 QGROUNDCONTROL. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
======================================================================*/ |
||||
|
||||
/// @file
|
||||
/// @author Don Gagne <don@thegagnes.com>
|
||||
|
||||
#include "SafetyComponent.h" |
||||
#include "PX4RCCalibration.h" |
||||
#include "VehicleComponentSummaryItem.h" |
||||
#include "QGCQmlWidgetHolder.h" |
||||
|
||||
/// @brief Parameters which signal a change in setupComplete state
|
||||
static const char* triggerParams[] = { NULL }; |
||||
|
||||
SafetyComponent::SafetyComponent(UASInterface* uas, AutoPilotPlugin* autopilot, QObject* parent) : |
||||
PX4Component(uas, autopilot, parent), |
||||
_name(tr("Safety")) |
||||
{ |
||||
} |
||||
|
||||
QString SafetyComponent::name(void) const |
||||
{ |
||||
return _name; |
||||
} |
||||
|
||||
QString SafetyComponent::description(void) const |
||||
{ |
||||
return tr("The Safety Component is used to setup triggers for Return to Land as well as the settings for Return to Land itself."); |
||||
} |
||||
|
||||
QString SafetyComponent::icon(void) const |
||||
{ |
||||
return ":/files/images/px4/menu/remote.png"; |
||||
} |
||||
|
||||
bool SafetyComponent::requiresSetup(void) const |
||||
{ |
||||
return false; |
||||
} |
||||
|
||||
bool SafetyComponent::setupComplete(void) const |
||||
{ |
||||
// FIXME: What aboout invalid settings?
|
||||
return true; |
||||
} |
||||
|
||||
QString SafetyComponent::setupStateDescription(void) const |
||||
{ |
||||
const char* stateDescription; |
||||
|
||||
if (requiresSetup()) { |
||||
stateDescription = "Requires setup"; |
||||
} else { |
||||
stateDescription = "Setup complete"; |
||||
} |
||||
return QString(stateDescription); |
||||
} |
||||
|
||||
const char** SafetyComponent::setupCompleteChangedTriggerList(void) const |
||||
{ |
||||
return triggerParams; |
||||
} |
||||
|
||||
QStringList SafetyComponent::paramFilterList(void) const |
||||
{ |
||||
QStringList list; |
||||
|
||||
return list; |
||||
} |
||||
|
||||
QWidget* SafetyComponent::setupWidget(void) const |
||||
{ |
||||
QGCQmlWidgetHolder* holder = new QGCQmlWidgetHolder(); |
||||
Q_CHECK_PTR(holder); |
||||
|
||||
holder->setAutoPilot(_autopilot); |
||||
|
||||
holder->setSource(QUrl::fromUserInput("qrc:/qml/SafetyComponent.qml")); |
||||
|
||||
return holder; |
||||
} |
||||
|
||||
const QVariantList& SafetyComponent::summaryItems(void) |
||||
{ |
||||
// FIXME: No summary items yet
|
||||
#if 0 |
||||
if (!_summaryItems.count()) { |
||||
QString name; |
||||
QString state; |
||||
|
||||
// FIXME: Need to pull receiver type from RSSI value
|
||||
name = "Receiver type:"; |
||||
state = "n/a"; |
||||
|
||||
VehicleComponentSummaryItem* item = new VehicleComponentSummaryItem(name, state, this); |
||||
_summaryItems.append(QVariant::fromValue(item)); |
||||
|
||||
static const char* stickParams[] = { "RC_MAP_ROLL", "RC_MAP_PITCH", "RC_MAP_YAW", "RC_MAP_THROTTLE" }; |
||||
|
||||
QString summary("Chan "); |
||||
|
||||
bool allSticksMapped = true; |
||||
for (size_t i=0; i<sizeof(stickParams)/sizeof(stickParams[0]); i++) { |
||||
QVariant value; |
||||
|
||||
if (_paramMgr->getParameterValue(_paramMgr->getDefaultComponentId(), stickParams[i], value)) { |
||||
if (value.toInt() == 0) { |
||||
allSticksMapped = false; |
||||
break; |
||||
} else { |
||||
if (i != 0) { |
||||
summary += ","; |
||||
} |
||||
summary += value.toString(); |
||||
} |
||||
} else { |
||||
// Why is the parameter missing?
|
||||
Q_ASSERT(false); |
||||
summary += "?"; |
||||
} |
||||
} |
||||
|
||||
if (!allSticksMapped) { |
||||
summary = "Not mapped"; |
||||
} |
||||
|
||||
name = "Ail, Ele, Rud, Throt:"; |
||||
state = summary; |
||||
|
||||
item = new VehicleComponentSummaryItem(name, state, this); |
||||
_summaryItems.append(QVariant::fromValue(item)); |
||||
} |
||||
#endif |
||||
|
||||
return _summaryItems; |
||||
} |
@ -0,0 +1,60 @@
@@ -0,0 +1,60 @@
|
||||
/*=====================================================================
|
||||
|
||||
QGroundControl Open Source Ground Control Station |
||||
|
||||
(c) 2009 - 2014 QGROUNDCONTROL PROJECT <http://www.qgroundcontrol.org>
|
||||
|
||||
This file is part of the QGROUNDCONTROL project |
||||
|
||||
QGROUNDCONTROL 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. |
||||
|
||||
QGROUNDCONTROL 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 QGROUNDCONTROL. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
======================================================================*/ |
||||
|
||||
#ifndef SafetyComponent_H |
||||
#define SafetyComponent_H |
||||
|
||||
#include "PX4Component.h" |
||||
|
||||
/// @file
|
||||
/// @brief The Radio VehicleComponent is used to calibrate the trasmitter and assign function mapping
|
||||
/// to channels.
|
||||
/// @author Don Gagne <don@thegagnes.com>
|
||||
|
||||
class SafetyComponent : public PX4Component |
||||
{ |
||||
Q_OBJECT |
||||
|
||||
public: |
||||
SafetyComponent(UASInterface* uas, AutoPilotPlugin* autopilot, QObject* parent = NULL); |
||||
|
||||
// Virtuals from PX4Component
|
||||
virtual const char** setupCompleteChangedTriggerList(void) const; |
||||
|
||||
// Virtuals from VehicleComponent
|
||||
virtual QString name(void) const; |
||||
virtual QString description(void) const; |
||||
virtual QString icon(void) const; |
||||
virtual bool requiresSetup(void) const; |
||||
virtual bool setupComplete(void) const; |
||||
virtual QString setupStateDescription(void) const; |
||||
virtual QWidget* setupWidget(void) const; |
||||
virtual QStringList paramFilterList(void) const; |
||||
virtual const QVariantList& summaryItems(void); |
||||
|
||||
private: |
||||
const QString _name; |
||||
QVariantList _summaryItems; |
||||
}; |
||||
|
||||
#endif |
@ -0,0 +1,17 @@
@@ -0,0 +1,17 @@
|
||||
import QtQuick 2.2 |
||||
import QtQuick.Controls 1.2 |
||||
import QtQuick.Controls.Styles 1.2 |
||||
import QGroundControl.FactSystem 1.0 |
||||
|
||||
Rectangle { |
||||
QGCPalette { id: palette; colorGroup: QGCPalette.Active } |
||||
|
||||
width: 400 |
||||
height: 400 |
||||
color: palette.window |
||||
|
||||
Column { |
||||
Label { text: "Work in Progress"; color: palette.windowText } |
||||
Label { text: autopilot.parameters["RTL_RETURN_ALT"].value; color: palette.windowText } |
||||
} |
||||
} |
@ -0,0 +1,49 @@
@@ -0,0 +1,49 @@
|
||||
/*=====================================================================
|
||||
|
||||
QGroundControl Open Source Ground Control Station |
||||
|
||||
(c) 2009 - 2014 QGROUNDCONTROL PROJECT <http://www.qgroundcontrol.org>
|
||||
|
||||
This file is part of the QGROUNDCONTROL project |
||||
|
||||
QGROUNDCONTROL 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. |
||||
|
||||
QGROUNDCONTROL 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 QGROUNDCONTROL. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
======================================================================*/ |
||||
|
||||
/// @file
|
||||
/// @author Don Gagne <don@thegagnes.com>
|
||||
|
||||
#include "QGCQmlWidgetHolder.h" |
||||
|
||||
QGCQmlWidgetHolder::QGCQmlWidgetHolder(QWidget *parent) : |
||||
QWidget(parent) |
||||
{ |
||||
_ui.setupUi(this); |
||||
} |
||||
|
||||
QGCQmlWidgetHolder::~QGCQmlWidgetHolder() |
||||
{ |
||||
|
||||
} |
||||
|
||||
void QGCQmlWidgetHolder::setAutoPilot(AutoPilotPlugin* autoPilot) |
||||
{ |
||||
_ui.qmlWidget->rootContext()->setContextProperty("autopilot", autoPilot); |
||||
} |
||||
|
||||
void QGCQmlWidgetHolder::setSource(const QUrl& qmlUrl) |
||||
{ |
||||
_ui.qmlWidget->setSource(qmlUrl); |
||||
_ui.qmlWidget->setMinimumSize(_ui.qmlWidget->rootObject()->width(), _ui.qmlWidget->rootObject()->height()); |
||||
} |
@ -0,0 +1,59 @@
@@ -0,0 +1,59 @@
|
||||
/*=====================================================================
|
||||
|
||||
QGroundControl Open Source Ground Control Station |
||||
|
||||
(c) 2009 - 2014 QGROUNDCONTROL PROJECT <http://www.qgroundcontrol.org>
|
||||
|
||||
This file is part of the QGROUNDCONTROL project |
||||
|
||||
QGROUNDCONTROL 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. |
||||
|
||||
QGROUNDCONTROL 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 QGROUNDCONTROL. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
======================================================================*/ |
||||
|
||||
#ifndef QGCQmlWidgetHolder_h |
||||
#define QGCQmlWidgetHolder_h |
||||
|
||||
/// @file
|
||||
/// @author Don Gagne <don@thegagnes.com>
|
||||
|
||||
#include <QWidget> |
||||
|
||||
#include "ui_QGCQmlWidgetHolder.h" |
||||
#include "AutoPilotPlugin.h" |
||||
|
||||
namespace Ui { |
||||
class QGCQmlWidgetHolder; |
||||
} |
||||
|
||||
/// This is used to create widgets which are implemented in QML.
|
||||
|
||||
class QGCQmlWidgetHolder : public QWidget |
||||
{ |
||||
Q_OBJECT |
||||
|
||||
public: |
||||
explicit QGCQmlWidgetHolder(QWidget *parent = 0); |
||||
~QGCQmlWidgetHolder(); |
||||
|
||||
/// Sets the UAS into the widget which in turn will load facts into the context
|
||||
void setAutoPilot(AutoPilotPlugin* autoPilot); |
||||
|
||||
/// Sets the QML into the control
|
||||
void setSource(const QUrl& qmlUrl); |
||||
|
||||
private: |
||||
Ui::QGCQmlWidgetHolder _ui; |
||||
}; |
||||
|
||||
#endif |
@ -0,0 +1,32 @@
@@ -0,0 +1,32 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?> |
||||
<ui version="4.0"> |
||||
<class>QGCQmlWidgetHolder</class> |
||||
<widget class="QWidget" name="QGCQmlWidgetHolder"> |
||||
<property name="geometry"> |
||||
<rect> |
||||
<x>0</x> |
||||
<y>0</y> |
||||
<width>400</width> |
||||
<height>300</height> |
||||
</rect> |
||||
</property> |
||||
<property name="windowTitle"> |
||||
<string>Form</string> |
||||
</property> |
||||
<layout class="QVBoxLayout" name="verticalLayout"> |
||||
<item> |
||||
<widget class="QGCQuickWidget" name="qmlWidget" native="true"/> |
||||
</item> |
||||
</layout> |
||||
</widget> |
||||
<customwidgets> |
||||
<customwidget> |
||||
<class>QGCQuickWidget</class> |
||||
<extends>QQuickWidget</extends> |
||||
<header>QGCQuickWidget.h</header> |
||||
<container>1</container> |
||||
</customwidget> |
||||
</customwidgets> |
||||
<resources/> |
||||
<connections/> |
||||
</ui> |
Loading…
Reference in new issue