From ba606c7054f137a7e769c5a9ecf8fe86cadeae8e Mon Sep 17 00:00:00 2001 From: edouard Date: Wed, 26 Jan 2011 22:21:54 +0000 Subject: [PATCH] OP-249 : GCS / Pause scopes during log replay if pause button is pressed. Was more difficult than planned! You will have to clean your GCS build or at least delete the scope and logging shadow build dirs in order for this to work properly. git-svn-id: svn://svn.openpilot.org/OpenPilot/trunk@2597 ebee16cc-31ac-478f-84a7-5cbb03baadba --- .../plugins/logging/LoggingGadget.pluginspec | 1 + .../src/plugins/logging/logging.pro | 2 - .../src/plugins/logging/logging.ui | 70 ++++---- .../plugins/logging/logging_dependencies.pri | 3 + .../plugins/logging/logginggadgetwidget.cpp | 143 ++++++++-------- .../src/plugins/logging/logginggadgetwidget.h | 123 ++++++------- .../openpilotgcs/src/plugins/scope/scope.pri | 3 + .../openpilotgcs/src/plugins/scope/scope.pro | 9 +- .../src/plugins/scope/scope_dependencies.pri | 5 + .../src/plugins/scope/scope_global.h | 41 +++++ .../src/plugins/scope/scopegadget.cpp | 162 +++++++++--------- .../src/plugins/scope/scopegadgetfactory.cpp | 131 +++++++------- .../src/plugins/scope/scopegadgetfactory.h | 116 +++++++------ .../src/plugins/scope/scopegadgetwidget.cpp | 8 +- .../src/plugins/scope/scopegadgetwidget.h | 4 +- .../src/plugins/scope/scopeplugin.cpp | 133 +++++++------- .../src/plugins/scope/scopeplugin.h | 96 ++++++----- 17 files changed, 577 insertions(+), 473 deletions(-) create mode 100644 ground/openpilotgcs/src/plugins/scope/scope.pri create mode 100644 ground/openpilotgcs/src/plugins/scope/scope_dependencies.pri create mode 100644 ground/openpilotgcs/src/plugins/scope/scope_global.h diff --git a/ground/openpilotgcs/src/plugins/logging/LoggingGadget.pluginspec b/ground/openpilotgcs/src/plugins/logging/LoggingGadget.pluginspec index 91e512d82..b6f9214d0 100644 --- a/ground/openpilotgcs/src/plugins/logging/LoggingGadget.pluginspec +++ b/ground/openpilotgcs/src/plugins/logging/LoggingGadget.pluginspec @@ -6,5 +6,6 @@ http://www.openpilot.org + diff --git a/ground/openpilotgcs/src/plugins/logging/logging.pro b/ground/openpilotgcs/src/plugins/logging/logging.pro index b0a4fa7e3..8d10d54a3 100644 --- a/ground/openpilotgcs/src/plugins/logging/logging.pro +++ b/ground/openpilotgcs/src/plugins/logging/logging.pro @@ -3,8 +3,6 @@ TARGET = LoggingGadget DEFINES += LOGGING_LIBRARY QT += svg include(../../openpilotgcsplugin.pri) -include(../../plugins/uavobjects/uavobjects.pri) -include(../../plugins/uavtalk/uavtalk.pri) include(logging_dependencies.pri) HEADERS += loggingplugin.h \ logfile.h \ diff --git a/ground/openpilotgcs/src/plugins/logging/logging.ui b/ground/openpilotgcs/src/plugins/logging/logging.ui index e3a3812e7..b5fa5b110 100644 --- a/ground/openpilotgcs/src/plugins/logging/logging.ui +++ b/ground/openpilotgcs/src/plugins/logging/logging.ui @@ -27,16 +27,16 @@ - + - + QLayout::SetNoConstraint - + 30 0 @@ -59,7 +59,7 @@ - + 30 0 @@ -79,31 +79,6 @@ - - - - - 100 - 0 - - - - -100 - - - 100 - - - Qt::Horizontal - - - QSlider::TicksBelow - - - 50 - - - @@ -120,6 +95,43 @@ + + + + + + Playback speed: + + + + + + + 10.000000000000000 + + + 0.100000000000000 + + + 1.000000000000000 + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + diff --git a/ground/openpilotgcs/src/plugins/logging/logging_dependencies.pri b/ground/openpilotgcs/src/plugins/logging/logging_dependencies.pri index a64caedc1..563cb1ff1 100644 --- a/ground/openpilotgcs/src/plugins/logging/logging_dependencies.pri +++ b/ground/openpilotgcs/src/plugins/logging/logging_dependencies.pri @@ -1 +1,4 @@ include(../../plugins/coreplugin/coreplugin.pri) +include(../../plugins/uavobjects/uavobjects.pri) +include(../../plugins/uavtalk/uavtalk.pri) +include(../../plugins/scope/scope.pri) diff --git a/ground/openpilotgcs/src/plugins/logging/logginggadgetwidget.cpp b/ground/openpilotgcs/src/plugins/logging/logginggadgetwidget.cpp index 6c5b5303e..2d4063b66 100644 --- a/ground/openpilotgcs/src/plugins/logging/logginggadgetwidget.cpp +++ b/ground/openpilotgcs/src/plugins/logging/logginggadgetwidget.cpp @@ -1,68 +1,75 @@ -/** - ****************************************************************************** - * - * @file GCSControlgadgetwidget.cpp - * @author The OpenPilot Team, http://www.openpilot.org Copyright (C) 2010. - * @addtogroup GCSPlugins GCS Plugins - * @{ - * @addtogroup GCSControlGadgetPlugin GCSControl Gadget Plugin - * @{ - * @brief A gadget to control the UAV, either from the keyboard or a joystick - *****************************************************************************/ -/* - * 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 "logginggadgetwidget.h" -#include "ui_logging.h" - -#include -#include -#include -#include -#include -#include -#include - -LoggingGadgetWidget::LoggingGadgetWidget(QWidget *parent) : QLabel(parent) -{ - m_logging = new Ui_Logging(); - m_logging->setupUi(this); -} - -LoggingGadgetWidget::~LoggingGadgetWidget() -{ - // Do nothing -} - -void LoggingGadgetWidget::setPlugin(LoggingPlugin * p) -{ - loggingPlugin = p; - connect(p,SIGNAL(stateChanged(QString)),this,SLOT(stateChanged(QString))); - connect(m_logging->playButton,SIGNAL(clicked()),p->getLogfile(),SLOT(resumeReplay())); - connect(m_logging->pauseButton,SIGNAL(clicked()),p->getLogfile(),SLOT(pauseReplay())); - connect(m_logging->playbackSpeed,SIGNAL(valueChanged(int)),p->getLogfile(),SLOT(setReplaySpeed(int))); - void pauseReplay(); - void resumeReplay(); -} - -void LoggingGadgetWidget::stateChanged(QString status) -{ - m_logging->statusLabel->setText(status); -} - -/** - * @} - * @} - */ +/** + ****************************************************************************** + * + * @file GCSControlgadgetwidget.cpp + * @author The OpenPilot Team, http://www.openpilot.org Copyright (C) 2010. + * @addtogroup GCSPlugins GCS Plugins + * @{ + * @addtogroup GCSControlGadgetPlugin GCSControl Gadget Plugin + * @{ + * @brief A gadget to control the UAV, either from the keyboard or a joystick + *****************************************************************************/ +/* + * 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 "logginggadgetwidget.h" +#include "ui_logging.h" + +#include +#include +#include +#include +#include +#include +#include + +LoggingGadgetWidget::LoggingGadgetWidget(QWidget *parent) : QLabel(parent) +{ + m_logging = new Ui_Logging(); + m_logging->setupUi(this); + + ExtensionSystem::PluginManager *pm = ExtensionSystem::PluginManager::instance(); + scpPlugin = pm->getObject(); + +} + +LoggingGadgetWidget::~LoggingGadgetWidget() +{ + // Do nothing +} + +void LoggingGadgetWidget::setPlugin(LoggingPlugin * p) +{ + loggingPlugin = p; + connect(p,SIGNAL(stateChanged(QString)),this,SLOT(stateChanged(QString))); + connect(m_logging->playButton,SIGNAL(clicked()),p->getLogfile(),SLOT(resumeReplay())); + connect(m_logging->playButton, SIGNAL(clicked()), scpPlugin, SLOT(startPlotting())); + connect(m_logging->pauseButton,SIGNAL(clicked()),p->getLogfile(),SLOT(pauseReplay())); + connect(m_logging->pauseButton, SIGNAL(clicked()), scpPlugin, SLOT(stopPlotting())); + connect(m_logging->playbackSpeed,SIGNAL(valueChanged(int)),p->getLogfile(),SLOT(setReplaySpeed(int))); + void pauseReplay(); + void resumeReplay(); +} + + +void LoggingGadgetWidget::stateChanged(QString status) +{ + m_logging->statusLabel->setText(status); +} + +/** + * @} + * @} + */ diff --git a/ground/openpilotgcs/src/plugins/logging/logginggadgetwidget.h b/ground/openpilotgcs/src/plugins/logging/logginggadgetwidget.h index fa362cc66..bee7028f3 100644 --- a/ground/openpilotgcs/src/plugins/logging/logginggadgetwidget.h +++ b/ground/openpilotgcs/src/plugins/logging/logginggadgetwidget.h @@ -1,59 +1,64 @@ -/** - ****************************************************************************** - * - * @file GCSControlgadgetwidget.h - * @author The OpenPilot Team, http://www.openpilot.org Copyright (C) 2010. - * @addtogroup GCSPlugins GCS Plugins - * @{ - * @addtogroup GCSControlGadgetPlugin GCSControl Gadget Plugin - * @{ - * @brief A place holder gadget plugin - *****************************************************************************/ -/* - * 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 LoggingGADGETWIDGET_H_ -#define LoggingGADGETWIDGET_H_ - -#include - -class Ui_Logging; -class LoggingPlugin; - -class LoggingGadgetWidget : public QLabel -{ - Q_OBJECT - -public: - LoggingGadgetWidget(QWidget *parent = 0); - ~LoggingGadgetWidget(); - void setPlugin(LoggingPlugin * p); - -protected slots: - void stateChanged(QString status); - -signals: - void pause(); - void play(); - -private: - Ui_Logging *m_logging; - LoggingPlugin * loggingPlugin; - - -}; - -#endif /* LoggingGADGETWIDGET_H_ */ +/** + ****************************************************************************** + * + * @file GCSControlgadgetwidget.h + * @author The OpenPilot Team, http://www.openpilot.org Copyright (C) 2010. + * @addtogroup GCSPlugins GCS Plugins + * @{ + * @addtogroup GCSControlGadgetPlugin GCSControl Gadget Plugin + * @{ + * @brief A place holder gadget plugin + *****************************************************************************/ +/* + * 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 LoggingGADGETWIDGET_H_ +#define LoggingGADGETWIDGET_H_ + +#include +#include "extensionsystem/pluginmanager.h" +#include "scope/scopeplugin.h" +#include "scope/scopegadgetfactory.h" + + +class Ui_Logging; +class LoggingPlugin; + +class LoggingGadgetWidget : public QLabel +{ + Q_OBJECT + +public: + LoggingGadgetWidget(QWidget *parent = 0); + ~LoggingGadgetWidget(); + void setPlugin(LoggingPlugin * p); + +protected slots: + void stateChanged(QString status); + +signals: + void pause(); + void play(); + +private: + Ui_Logging *m_logging; + LoggingPlugin * loggingPlugin; + ScopeGadgetFactory * scpPlugin; + + +}; + +#endif /* LoggingGADGETWIDGET_H_ */ diff --git a/ground/openpilotgcs/src/plugins/scope/scope.pri b/ground/openpilotgcs/src/plugins/scope/scope.pri new file mode 100644 index 000000000..99588122d --- /dev/null +++ b/ground/openpilotgcs/src/plugins/scope/scope.pri @@ -0,0 +1,3 @@ +include(scope_dependencies.pri) + +LIBS *= -l$$qtLibraryTarget(ScopeGadget) diff --git a/ground/openpilotgcs/src/plugins/scope/scope.pro b/ground/openpilotgcs/src/plugins/scope/scope.pro index c3e023d7a..7fef56df4 100644 --- a/ground/openpilotgcs/src/plugins/scope/scope.pro +++ b/ground/openpilotgcs/src/plugins/scope/scope.pro @@ -1,12 +1,11 @@ TEMPLATE = lib TARGET = ScopeGadget +DEFINES += SCOPE_LIBRARY include(../../openpilotgcsplugin.pri) -include(../../plugins/coreplugin/coreplugin.pri) -include(../../plugins/uavobjects/uavobjects.pri) -include(../../plugins/uavtalk/uavtalk.pri) -include(../../libs/qwt/qwt.pri) +include (scope_dependencies.pri) HEADERS += scopeplugin.h \ - plotdata.h + plotdata.h \ + scope_global.h HEADERS += scopegadgetoptionspage.h HEADERS += scopegadgetconfiguration.h HEADERS += scopegadget.h diff --git a/ground/openpilotgcs/src/plugins/scope/scope_dependencies.pri b/ground/openpilotgcs/src/plugins/scope/scope_dependencies.pri new file mode 100644 index 000000000..f743801a6 --- /dev/null +++ b/ground/openpilotgcs/src/plugins/scope/scope_dependencies.pri @@ -0,0 +1,5 @@ +include(../../plugins/uavobjects/uavobjects.pri) +include(../../plugins/coreplugin/coreplugin.pri) +include(../../libs/utils/utils.pri) +include(../../plugins/uavtalk/uavtalk.pri) +include(../../libs/qwt/qwt.pri) diff --git a/ground/openpilotgcs/src/plugins/scope/scope_global.h b/ground/openpilotgcs/src/plugins/scope/scope_global.h new file mode 100644 index 000000000..6da462245 --- /dev/null +++ b/ground/openpilotgcs/src/plugins/scope/scope_global.h @@ -0,0 +1,41 @@ +/** + ****************************************************************************** + * + * @file uavobjects_global.h + * @author The OpenPilot Team, http://www.openpilot.org Copyright (C) 2010. + * @see The GNU Public License (GPL) Version 3 + * @addtogroup GCSPlugins GCS Plugins + * @{ + * @addtogroup UAVObjectsPlugin UAVObjects Plugin + * @{ + * @brief The UAVUObjects GCS plugin + *****************************************************************************/ +/* + * 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 SCOPE_GLOBAL_H +#define SCOPE_GLOBAL_H + +#include + +#if defined(SCOPE_LIBRARY) +# define SCOPE_EXPORT Q_DECL_EXPORT +#else +# define SCOPE_EXPORT Q_DECL_IMPORT +#endif + +#endif // UAVOBJECTS_GLOBAL_H + diff --git a/ground/openpilotgcs/src/plugins/scope/scopegadget.cpp b/ground/openpilotgcs/src/plugins/scope/scopegadget.cpp index 3589a982d..41e126399 100644 --- a/ground/openpilotgcs/src/plugins/scope/scopegadget.cpp +++ b/ground/openpilotgcs/src/plugins/scope/scopegadget.cpp @@ -1,80 +1,82 @@ -/** - ****************************************************************************** - * - * @file scopegadget.cpp - * @author The OpenPilot Team, http://www.openpilot.org Copyright (C) 2010. - * @addtogroup GCSPlugins GCS Plugins - * @{ - * @addtogroup ScopePlugin Scope Gadget Plugin - * @{ - * @brief The scope Gadget, graphically plots the states of UAVObjects - *****************************************************************************/ -/* - * 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 "scopegadget.h" -#include "scopegadgetconfiguration.h" -#include "scopegadgetwidget.h" - -#include - -ScopeGadget::ScopeGadget(QString classId, ScopeGadgetWidget *widget, QWidget *parent) : - IUAVGadget(classId, parent), - m_widget(widget), - configLoaded(false) -{ -} - -void ScopeGadget::loadConfiguration(IUAVGadgetConfiguration* config) -{ - - ScopeGadgetConfiguration *sgConfig = qobject_cast(config); - ScopeGadgetWidget* widget = qobject_cast(m_widget); - - widget->setXWindowSize(sgConfig->dataSize()); - widget->setRefreshInterval(sgConfig->refreshInterval()); - - if(sgConfig->plotType() == SequencialPlot ) - widget->setupSequencialPlot(); - else if(sgConfig->plotType() == ChronoPlot) - widget->setupChronoPlot(); - // else if(sgConfig->plotType() == UAVObjectPlot) - // widget->setupUAVObjectPlot(); - - foreach (PlotCurveConfiguration* plotCurveConfig, sgConfig->plotCurveConfigs()) { - - QString uavObject = plotCurveConfig->uavObject; - QString uavField = plotCurveConfig->uavField; - int scale = plotCurveConfig->yScalePower; - QRgb color = plotCurveConfig->color; - - widget->addCurvePlot( - uavObject, - uavField, - scale, - QPen( QBrush(QColor(color),Qt::SolidPattern), - (qreal)2, - Qt::SolidLine, - Qt::SquareCap, - Qt::BevelJoin) - ); - } -} - -ScopeGadget::~ScopeGadget() -{ - -} +/** + ****************************************************************************** + * + * @file scopegadget.cpp + * @author The OpenPilot Team, http://www.openpilot.org Copyright (C) 2010. + * @addtogroup GCSPlugins GCS Plugins + * @{ + * @addtogroup ScopePlugin Scope Gadget Plugin + * @{ + * @brief The scope Gadget, graphically plots the states of UAVObjects + *****************************************************************************/ +/* + * 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 "scopeplugin.h" +#include "scopegadget.h" +#include "scopegadgetconfiguration.h" +#include "scopegadgetwidget.h" + +#include + +ScopeGadget::ScopeGadget(QString classId, ScopeGadgetWidget *widget, QWidget *parent) : + IUAVGadget(classId, parent), + m_widget(widget), + configLoaded(false) +{ + +} + +void ScopeGadget::loadConfiguration(IUAVGadgetConfiguration* config) +{ + + ScopeGadgetConfiguration *sgConfig = qobject_cast(config); + ScopeGadgetWidget* widget = qobject_cast(m_widget); + + widget->setXWindowSize(sgConfig->dataSize()); + widget->setRefreshInterval(sgConfig->refreshInterval()); + + if(sgConfig->plotType() == SequencialPlot ) + widget->setupSequencialPlot(); + else if(sgConfig->plotType() == ChronoPlot) + widget->setupChronoPlot(); + // else if(sgConfig->plotType() == UAVObjectPlot) + // widget->setupUAVObjectPlot(); + + foreach (PlotCurveConfiguration* plotCurveConfig, sgConfig->plotCurveConfigs()) { + + QString uavObject = plotCurveConfig->uavObject; + QString uavField = plotCurveConfig->uavField; + int scale = plotCurveConfig->yScalePower; + QRgb color = plotCurveConfig->color; + + widget->addCurvePlot( + uavObject, + uavField, + scale, + QPen( QBrush(QColor(color),Qt::SolidPattern), + (qreal)2, + Qt::SolidLine, + Qt::SquareCap, + Qt::BevelJoin) + ); + } +} + +ScopeGadget::~ScopeGadget() +{ + +} diff --git a/ground/openpilotgcs/src/plugins/scope/scopegadgetfactory.cpp b/ground/openpilotgcs/src/plugins/scope/scopegadgetfactory.cpp index bed659405..1c62c1f57 100644 --- a/ground/openpilotgcs/src/plugins/scope/scopegadgetfactory.cpp +++ b/ground/openpilotgcs/src/plugins/scope/scopegadgetfactory.cpp @@ -1,59 +1,72 @@ -/** - ****************************************************************************** - * - * @file scopegadgetfactory.cpp - * @author The OpenPilot Team, http://www.openpilot.org Copyright (C) 2010. - * @addtogroup GCSPlugins GCS Plugins - * @{ - * @addtogroup ScopePlugin Scope Gadget Plugin - * @{ - * @brief The scope Gadget, graphically plots the states of UAVObjects - *****************************************************************************/ -/* - * 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 "scopegadgetfactory.h" -#include "scopegadgetwidget.h" -#include "scopegadgetconfiguration.h" -#include "scopegadgetoptionspage.h" -#include "scopegadget.h" -#include - -ScopeGadgetFactory::ScopeGadgetFactory(QObject *parent) : - IUAVGadgetFactory(QString("ScopeGadget"), - tr("Scope Gadget"), - parent) -{ -} - -ScopeGadgetFactory::~ScopeGadgetFactory() -{ -} - -Core::IUAVGadget* ScopeGadgetFactory::createGadget(QWidget *parent) -{ - ScopeGadgetWidget* gadgetWidget = new ScopeGadgetWidget(parent); - return new ScopeGadget(QString("ScopeGadget"), gadgetWidget, parent); -} - -IUAVGadgetConfiguration *ScopeGadgetFactory::createConfiguration(QSettings* qSettings) -{ - return new ScopeGadgetConfiguration(QString("ScopeGadget"), qSettings); -} - -IOptionsPage *ScopeGadgetFactory::createOptionsPage(IUAVGadgetConfiguration *config) -{ - return new ScopeGadgetOptionsPage(qobject_cast(config)); -} +/** + ****************************************************************************** + * + * @file scopegadgetfactory.cpp + * @author The OpenPilot Team, http://www.openpilot.org Copyright (C) 2010. + * @addtogroup GCSPlugins GCS Plugins + * @{ + * @addtogroup ScopePlugin Scope Gadget Plugin + * @{ + * @brief The scope Gadget, graphically plots the states of UAVObjects + *****************************************************************************/ +/* + * 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 "scopegadgetfactory.h" +#include "scopegadgetwidget.h" +#include "scopegadgetconfiguration.h" +#include "scopegadgetoptionspage.h" +#include "scopegadget.h" +#include + +ScopeGadgetFactory::ScopeGadgetFactory(QObject *parent) : + IUAVGadgetFactory(QString("ScopeGadget"), + tr("Scope Gadget"), + parent) +{ +} + +ScopeGadgetFactory::~ScopeGadgetFactory() +{ +} + +void ScopeGadgetFactory::stopPlotting() +{ + emit onStopPlotting(); +} + +void ScopeGadgetFactory::startPlotting() +{ + emit onStartPlotting(); +} + + +Core::IUAVGadget* ScopeGadgetFactory::createGadget(QWidget *parent) +{ + ScopeGadgetWidget* gadgetWidget = new ScopeGadgetWidget(parent); + connect(this,SIGNAL(onStartPlotting()), gadgetWidget, SLOT(startPlotting())); + connect(this,SIGNAL(onStopPlotting()), gadgetWidget, SLOT(stopPlotting())); + return new ScopeGadget(QString("ScopeGadget"), gadgetWidget, parent); +} + +IUAVGadgetConfiguration *ScopeGadgetFactory::createConfiguration(QSettings* qSettings) +{ + return new ScopeGadgetConfiguration(QString("ScopeGadget"), qSettings); +} + +IOptionsPage *ScopeGadgetFactory::createOptionsPage(IUAVGadgetConfiguration *config) +{ + return new ScopeGadgetOptionsPage(qobject_cast(config)); +} diff --git a/ground/openpilotgcs/src/plugins/scope/scopegadgetfactory.h b/ground/openpilotgcs/src/plugins/scope/scopegadgetfactory.h index a3ccc5e97..16fd4f431 100644 --- a/ground/openpilotgcs/src/plugins/scope/scopegadgetfactory.h +++ b/ground/openpilotgcs/src/plugins/scope/scopegadgetfactory.h @@ -1,53 +1,63 @@ -/** - ****************************************************************************** - * - * @file scopegadgetfactory.h - * @author The OpenPilot Team, http://www.openpilot.org Copyright (C) 2010. - * @addtogroup GCSPlugins GCS Plugins - * @{ - * @addtogroup ScopePlugin Scope Gadget Plugin - * @{ - * @brief The scope Gadget, graphically plots the states of UAVObjects - *****************************************************************************/ -/* - * 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 SCOPEGADGETFACTORY_H_ -#define SCOPEGADGETFACTORY_H_ - -#include - -namespace Core -{ -class IUAVGadget; -class IUAVGadgetFactory; -} - -using namespace Core; - -class ScopeGadgetFactory : public IUAVGadgetFactory -{ - Q_OBJECT -public: - ScopeGadgetFactory(QObject *parent = 0); - ~ScopeGadgetFactory(); - - Core::IUAVGadget *createGadget(QWidget *parent); - IUAVGadgetConfiguration *createConfiguration(QSettings* qSettings); - IOptionsPage *createOptionsPage(IUAVGadgetConfiguration *config); -}; - -#endif // SCOPEGADGETFACTORY_H_ +/** + ****************************************************************************** + * + * @file scopegadgetfactory.h + * @author The OpenPilot Team, http://www.openpilot.org Copyright (C) 2010. + * @addtogroup GCSPlugins GCS Plugins + * @{ + * @addtogroup ScopePlugin Scope Gadget Plugin + * @{ + * @brief The scope Gadget, graphically plots the states of UAVObjects + *****************************************************************************/ +/* + * 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 SCOPEGADGETFACTORY_H_ +#define SCOPEGADGETFACTORY_H_ + +#include "scope_global.h" +#include + +namespace Core +{ +class IUAVGadget; +class IUAVGadgetFactory; +} + +using namespace Core; + +class SCOPE_EXPORT ScopeGadgetFactory : public IUAVGadgetFactory +{ + Q_OBJECT +public: + ScopeGadgetFactory(QObject *parent = 0); + ~ScopeGadgetFactory(); + + Core::IUAVGadget *createGadget(QWidget *parent); + IUAVGadgetConfiguration *createConfiguration(QSettings* qSettings); + IOptionsPage *createOptionsPage(IUAVGadgetConfiguration *config); + +public slots: + void stopPlotting(); + void startPlotting(); + +signals: + void onStopPlotting(); + void onStartPlotting(); + +}; + +#endif // SCOPEGADGETFACTORY_H_ diff --git a/ground/openpilotgcs/src/plugins/scope/scopegadgetwidget.cpp b/ground/openpilotgcs/src/plugins/scope/scopegadgetwidget.cpp index 93ab97da0..03dac9afb 100644 --- a/ground/openpilotgcs/src/plugins/scope/scopegadgetwidget.cpp +++ b/ground/openpilotgcs/src/plugins/scope/scopegadgetwidget.cpp @@ -67,21 +67,21 @@ ScopeGadgetWidget::ScopeGadgetWidget(QWidget *parent) : QwtPlot(parent) // running the scopes if we are not connected and not replaying logs // Also listen to disconnect actions from the user Core::ConnectionManager *cm = Core::ICore::instance()->connectionManager(); - connect(cm, SIGNAL(deviceDisconnected()), this, SLOT(onTelemetryDisconnected())); - connect(cm, SIGNAL(deviceConnected(QIODevice*)), this, SLOT(onTelemetryConnected())); + connect(cm, SIGNAL(deviceDisconnected()), this, SLOT(stopPlotting())); + connect(cm, SIGNAL(deviceConnected(QIODevice*)), this, SLOT(startPlotting())); } /** * Starts/stops telemetry */ -void ScopeGadgetWidget::onTelemetryConnected() +void ScopeGadgetWidget::startPlotting() { if(!replotTimer->isActive()) replotTimer->start(m_refreshInterval); } -void ScopeGadgetWidget::onTelemetryDisconnected() +void ScopeGadgetWidget::stopPlotting() { replotTimer->stop(); } diff --git a/ground/openpilotgcs/src/plugins/scope/scopegadgetwidget.h b/ground/openpilotgcs/src/plugins/scope/scopegadgetwidget.h index 936addd0d..e74fdc2b1 100644 --- a/ground/openpilotgcs/src/plugins/scope/scopegadgetwidget.h +++ b/ground/openpilotgcs/src/plugins/scope/scopegadgetwidget.h @@ -120,8 +120,8 @@ private slots: void uavObjectReceived(UAVObject*); void replotNewData(); void showCurve(QwtPlotItem *item, bool on); - void onTelemetryConnected(); - void onTelemetryDisconnected(); + void startPlotting(); + void stopPlotting(); private: diff --git a/ground/openpilotgcs/src/plugins/scope/scopeplugin.cpp b/ground/openpilotgcs/src/plugins/scope/scopeplugin.cpp index e1c11f2f9..889c29f3b 100644 --- a/ground/openpilotgcs/src/plugins/scope/scopeplugin.cpp +++ b/ground/openpilotgcs/src/plugins/scope/scopeplugin.cpp @@ -1,66 +1,67 @@ -/** - ****************************************************************************** - * - * @file scopeplugin.cpp - * @author The OpenPilot Team, http://www.openpilot.org Copyright (C) 2010. - * @addtogroup GCSPlugins GCS Plugins - * @{ - * @addtogroup ScopePlugin Scope Gadget Plugin - * @{ - * @brief The scope Gadget, graphically plots the states of UAVObjects - *****************************************************************************/ -/* - * 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 "scopeplugin.h" -#include "scopegadgetfactory.h" -#include -#include -#include -#include - - -ScopePlugin::ScopePlugin() -{ - // Do nothing -} - -ScopePlugin::~ScopePlugin() -{ - // Do nothing -} - -bool ScopePlugin::initialize(const QStringList& args, QString *errMsg) -{ - Q_UNUSED(args); - Q_UNUSED(errMsg); - mf = new ScopeGadgetFactory(this); - addAutoReleasedObject(mf); - - return true; -} - -void ScopePlugin::extensionsInitialized() -{ - // Do nothing -} - -void ScopePlugin::shutdown() -{ - // Do nothing -} -Q_EXPORT_PLUGIN(ScopePlugin) - +/** + ****************************************************************************** + * + * @file scopeplugin.cpp + * @author The OpenPilot Team, http://www.openpilot.org Copyright (C) 2010. + * @addtogroup GCSPlugins GCS Plugins + * @{ + * @addtogroup ScopePlugin Scope Gadget Plugin + * @{ + * @brief The scope Gadget, graphically plots the states of UAVObjects + *****************************************************************************/ +/* + * 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 "scopeplugin.h" +#include "scopegadgetfactory.h" +#include +#include +#include +#include + + +ScopePlugin::ScopePlugin() +{ + // Do nothing +} + +ScopePlugin::~ScopePlugin() +{ + // Do nothing +} + + +bool ScopePlugin::initialize(const QStringList& args, QString *errMsg) +{ + Q_UNUSED(args); + Q_UNUSED(errMsg); + mf = new ScopeGadgetFactory(this); + addAutoReleasedObject(mf); + + return true; +} + +void ScopePlugin::extensionsInitialized() +{ + // Do nothing +} + +void ScopePlugin::shutdown() +{ + // Do nothing +} +Q_EXPORT_PLUGIN(ScopePlugin) + diff --git a/ground/openpilotgcs/src/plugins/scope/scopeplugin.h b/ground/openpilotgcs/src/plugins/scope/scopeplugin.h index c2a0e501e..1abadcfee 100644 --- a/ground/openpilotgcs/src/plugins/scope/scopeplugin.h +++ b/ground/openpilotgcs/src/plugins/scope/scopeplugin.h @@ -1,46 +1,50 @@ -/** - ****************************************************************************** - * - * @file scopeplugin.h - * @author The OpenPilot Team, http://www.openpilot.org Copyright (C) 2010. - * @addtogroup GCSPlugins GCS Plugins - * @{ - * @addtogroup ScopePlugin Scope Gadget Plugin - * @{ - * @brief The scope Gadget, graphically plots the states of UAVObjects - *****************************************************************************/ -/* - * 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 SCOPEPLUGIN_H_ -#define SCOPEPLUGIN_H_ - -#include - -class ScopeGadgetFactory; - -class ScopePlugin : public ExtensionSystem::IPlugin -{ -public: - ScopePlugin(); - ~ScopePlugin(); - - void extensionsInitialized(); - bool initialize(const QStringList & arguments, QString * errorString); - void shutdown(); -private: - ScopeGadgetFactory *mf; -}; -#endif /* SCOPEPLUGIN_H_ */ +/** + ****************************************************************************** + * + * @file scopeplugin.h + * @author The OpenPilot Team, http://www.openpilot.org Copyright (C) 2010. + * @addtogroup GCSPlugins GCS Plugins + * @{ + * @addtogroup ScopePlugin Scope Gadget Plugin + * @{ + * @brief The scope Gadget, graphically plots the states of UAVObjects + *****************************************************************************/ +/* + * 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 SCOPEPLUGIN_H_ +#define SCOPEPLUGIN_H_ + +#include "scope_global.h" +#include + +class ScopeGadgetFactory; + +class ScopePlugin : public ExtensionSystem::IPlugin +{ +public: + ScopePlugin(); + ~ScopePlugin(); + + void extensionsInitialized(); + bool initialize(const QStringList & arguments, QString * errorString); + void shutdown(); + +private: + ScopeGadgetFactory *mf; + + +}; +#endif /* SCOPEPLUGIN_H_ */