mirror of
https://bitbucket.org/librepilot/librepilot.git
synced 2025-01-18 03:52:11 +01:00
Created a new UAVObject utility plugin to make UAVObject access much easier for all plugins
git-svn-id: svn://svn.openpilot.org/OpenPilot/trunk@2829 ebee16cc-31ac-478f-84a7-5cbb03baadba
This commit is contained in:
parent
ba7e7ba85d
commit
d666a61bf5
@ -49,6 +49,7 @@ plugin_uavtalk.depends += plugin_coreplugin
|
||||
plugin_opmap.subdir = opmap
|
||||
plugin_opmap.depends = plugin_coreplugin
|
||||
plugin_opmap.depends += plugin_uavobjects
|
||||
plugin_opmap.depends += plugin_uavobjectutil
|
||||
SUBDIRS += plugin_opmap
|
||||
|
||||
# Scope UAVGadget
|
||||
@ -162,11 +163,17 @@ plugin_pipxtreme.depends += plugin_uavobjects
|
||||
plugin_pipxtreme.depends += plugin_rawhid
|
||||
SUBDIRS += plugin_pipxtreme
|
||||
|
||||
#Scope2 gadget
|
||||
#plugin_scope2.subdir = scope2
|
||||
#plugin_scope2.depends = plugin_coreplugin
|
||||
#plugin_scope2.depends += plugin_uavobjects
|
||||
#SUBDIRS += plugin_scope2
|
||||
#Scope OpenGL Gadget
|
||||
#plugin_scopeogl.subdir = scopeogl
|
||||
#plugin_scopeogl.depends = plugin_coreplugin
|
||||
#plugin_scopeogl.depends += plugin_uavobjects
|
||||
#SUBDIRS += plugin_scopeogl
|
||||
|
||||
# UAV Object Utility plugin
|
||||
plugin_uavobjectutil.subdir = uavobjectutil
|
||||
plugin_uavobjectutil.depends = plugin_coreplugin
|
||||
plugin_uavobjectutil.depends += plugin_uavobjects
|
||||
SUBDIRS += plugin_uavobjectutil
|
||||
|
||||
# Magic Waypoint gadget
|
||||
plugin_magicwaypoint.subdir = magicwaypoint
|
||||
|
@ -0,0 +1,10 @@
|
||||
<plugin name="UAVObjectUtil" version="1.0.0" compatVersion="1.0.0">
|
||||
<vendor>The OpenPilot Project</vendor>
|
||||
<copyright>(C) 2010 OpenPilot Project</copyright>
|
||||
<license>The GNU Public License (GPL) Version 3</license>
|
||||
<description>Easy access to UAVOBjects</description>
|
||||
<url>http://www.openpilot.org</url>
|
||||
<dependencyList>
|
||||
<dependency name="Core" version="1.0.0"/>
|
||||
</dependencyList>
|
||||
</plugin>
|
@ -0,0 +1,6 @@
|
||||
include(uavobjectutil_dependencies.pri)
|
||||
|
||||
# Add the include path to the built-in uavobject include files.
|
||||
INCLUDEPATH += $$PWD
|
||||
|
||||
LIBS *= -l$$qtLibraryTarget(UAVObjectUtil)
|
@ -0,0 +1,14 @@
|
||||
TEMPLATE = lib
|
||||
TARGET = UAVObjectUtil
|
||||
DEFINES += UAVOBJECTUTIL_LIBRARY
|
||||
include(../../openpilotgcsplugin.pri)
|
||||
include(uavobjectutil_dependencies.pri)
|
||||
|
||||
HEADERS += uavobjectutil_global.h \
|
||||
uavobjectutilmanager.h \
|
||||
uavobjectutilplugin.h
|
||||
|
||||
SOURCES += uavobjectutilmanager.cpp \
|
||||
uavobjectutilplugin.cpp
|
||||
|
||||
OTHER_FILES += UAVObjectUtil.pluginspec
|
@ -0,0 +1,3 @@
|
||||
include(../../plugins/coreplugin/coreplugin.pri)
|
||||
include(../../libs/utils/utils.pri)
|
||||
include(../../plugins/uavobjects/uavobjects.pri)
|
@ -0,0 +1,40 @@
|
||||
/**
|
||||
******************************************************************************
|
||||
*
|
||||
* @file uavobjectutil_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 UAVObjectUtilPlugin UAVObjectUtil Plugin
|
||||
* @{
|
||||
* @brief The UAVUObjectUtil 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 UAVOBJECTUTIL_GLOBAL_H
|
||||
#define UAVOBJECTUTIL_GLOBAL_H
|
||||
|
||||
#include <QtCore/qglobal.h>
|
||||
|
||||
#if defined(UAVOBJECTUTIL_LIBRARY)
|
||||
# define UAVOBJECTUTIL_EXPORT Q_DECL_EXPORT
|
||||
#else
|
||||
# define UAVOBJECTUTIL_EXPORT Q_DECL_IMPORT
|
||||
#endif
|
||||
|
||||
#endif
|
@ -0,0 +1,195 @@
|
||||
/**
|
||||
******************************************************************************
|
||||
*
|
||||
* @file uavobjectutilmanager.cpp
|
||||
* @author The OpenPilot Team, http://www.openpilot.org Copyright (C) 2010.
|
||||
* @see The GNU Public License (GPL) Version 3
|
||||
* @addtogroup GCSPlugins GCS Plugins
|
||||
* @{
|
||||
* @addtogroup UAVObjectUtilPlugin UAVObjectUtil Plugin
|
||||
* @{
|
||||
* @brief The UAVUObjectUtil 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
|
||||
*/
|
||||
|
||||
#include "uavobjectutilmanager.h"
|
||||
|
||||
#include "utils/homelocationutil.h"
|
||||
|
||||
#include "extensionsystem/pluginmanager.h"
|
||||
#include "uavobjectmanager.h"
|
||||
#include "uavobject.h"
|
||||
|
||||
#include <QMutexLocker>
|
||||
#include <QDebug>
|
||||
|
||||
UAVObjectUtilManager::UAVObjectUtilManager()
|
||||
{
|
||||
mutex = new QMutex(QMutex::Recursive);
|
||||
}
|
||||
|
||||
UAVObjectUtilManager::~UAVObjectUtilManager()
|
||||
{
|
||||
if (mutex)
|
||||
{
|
||||
delete mutex;
|
||||
mutex = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
// ******************************
|
||||
// HomeLocation
|
||||
|
||||
int UAVObjectUtilManager::setHomeLocation(double LLA[3], bool save_to_sdcard)
|
||||
{
|
||||
double ECEF[3];
|
||||
double RNE[9];
|
||||
double Be[3];
|
||||
|
||||
QMutexLocker locker(mutex);
|
||||
|
||||
if (Utils::HomeLocationUtil().getDetails(LLA, ECEF, RNE, Be) < 0)
|
||||
return -1; // error
|
||||
|
||||
// ******************
|
||||
// save the new home location details
|
||||
|
||||
ExtensionSystem::PluginManager *pm = ExtensionSystem::PluginManager::instance();
|
||||
if (!pm) return -2;
|
||||
|
||||
UAVObjectManager *obm = pm->getObject<UAVObjectManager>();
|
||||
if (!obm) return -3;
|
||||
|
||||
UAVDataObject *obj = dynamic_cast<UAVDataObject*>(obm->getObject(QString("HomeLocation")));
|
||||
if (!obj) return -4;
|
||||
|
||||
UAVObjectField *ECEF_field = obj->getField(QString("ECEF"));
|
||||
if (!ECEF_field) return -5;
|
||||
|
||||
UAVObjectField *RNE_field = obj->getField(QString("RNE"));
|
||||
if (!RNE_field) return -6;
|
||||
|
||||
UAVObjectField *Be_field = obj->getField(QString("Be"));
|
||||
if (!Be_field) return -7;
|
||||
|
||||
obj->getField("Latitude")->setDouble(LLA[0] * 10e6);
|
||||
obj->getField("Longitude")->setDouble(LLA[1] * 10e6);
|
||||
obj->getField("Altitude")->setDouble(LLA[2]);
|
||||
|
||||
for (int i = 0; i < 3; i++)
|
||||
ECEF_field->setDouble(ECEF[i] * 100, i);
|
||||
|
||||
for (int i = 0; i < 9; i++)
|
||||
RNE_field->setDouble(RNE[i], i);
|
||||
|
||||
for (int i = 0; i < 3; i++)
|
||||
Be_field->setDouble(Be[i], i);
|
||||
|
||||
obj->getField("Set")->setValue("TRUE");
|
||||
|
||||
obj->updated();
|
||||
|
||||
// ******************
|
||||
// save the new location to SD card
|
||||
|
||||
if (save_to_sdcard)
|
||||
{
|
||||
// saveObjectToSD(obj);
|
||||
}
|
||||
|
||||
// ******************
|
||||
// debug
|
||||
|
||||
qDebug() << "setting HomeLocation UAV Object .. " << endl;
|
||||
QString s;
|
||||
s = " LAT:" + QString::number(LLA[0], 'f', 7) + " LON:" + QString::number(LLA[1], 'f', 7) + " ALT:" + QString::number(LLA[2], 'f', 1);
|
||||
qDebug() << s << endl;
|
||||
s = " ECEF "; for (int i = 0; i < 3; i++) s += " " + QString::number((int)(ECEF[i] * 100));
|
||||
qDebug() << s << endl;
|
||||
s = " RNE "; for (int i = 0; i < 9; i++) s += " " + QString::number(RNE[i], 'f', 7);
|
||||
qDebug() << s << endl;
|
||||
s = " Be "; for (int i = 0; i < 3; i++) s += " " + QString::number(Be[i], 'f', 2);
|
||||
qDebug() << s << endl;
|
||||
|
||||
// ******************
|
||||
|
||||
return 0; // OK
|
||||
}
|
||||
|
||||
int UAVObjectUtilManager::getHomeLocation(bool &set, double LLA[3])
|
||||
{
|
||||
QMutexLocker locker(mutex);
|
||||
|
||||
ExtensionSystem::PluginManager *pm = ExtensionSystem::PluginManager::instance();
|
||||
if (!pm) return -1;
|
||||
|
||||
UAVObjectManager *obm = pm->getObject<UAVObjectManager>();
|
||||
if (!obm) return -2;
|
||||
|
||||
UAVDataObject *obj = dynamic_cast<UAVDataObject*>(obm->getObject(QString("HomeLocation")));
|
||||
if (!obj) return -3;
|
||||
|
||||
set = obj->getField("Set")->getValue().toBool();
|
||||
|
||||
LLA[0] = obj->getField("Latitude")->getDouble();
|
||||
LLA[1] = obj->getField("Longitude")->getDouble();
|
||||
LLA[2] = obj->getField("Altitude")->getDouble();
|
||||
|
||||
return 0; // OK
|
||||
}
|
||||
|
||||
int UAVObjectUtilManager::getHomeLocation(bool &set, double LLA[3], double ECEF[3], double RNE[9], double Be[3])
|
||||
{
|
||||
QMutexLocker locker(mutex);
|
||||
|
||||
ExtensionSystem::PluginManager *pm = ExtensionSystem::PluginManager::instance();
|
||||
if (!pm) return -1;
|
||||
|
||||
UAVObjectManager *obm = pm->getObject<UAVObjectManager>();
|
||||
if (!obm) return -2;
|
||||
|
||||
UAVDataObject *obj = dynamic_cast<UAVDataObject*>(obm->getObject(QString("HomeLocation")));
|
||||
if (!obj) return -3;
|
||||
|
||||
UAVObjectField *ECEF_field = obj->getField(QString("ECEF"));
|
||||
if (!ECEF_field) return -4;
|
||||
|
||||
UAVObjectField *RNE_field = obj->getField(QString("RNE"));
|
||||
if (!RNE_field) return -5;
|
||||
|
||||
UAVObjectField *Be_field = obj->getField(QString("Be"));
|
||||
if (!Be_field) return -6;
|
||||
|
||||
set = obj->getField("Set")->getValue().toBool();
|
||||
|
||||
LLA[0] = obj->getField("Latitude")->getDouble();
|
||||
LLA[1] = obj->getField("Longitude")->getDouble();
|
||||
LLA[2] = obj->getField("Altitude")->getDouble();
|
||||
|
||||
for (int i = 0; i < 3; i++)
|
||||
ECEF[i] = ECEF_field->getDouble(i);
|
||||
|
||||
for (int i = 0; i < 9; i++)
|
||||
RNE[i] = RNE_field->getDouble(i);
|
||||
|
||||
for (int i = 0; i < 3; i++)
|
||||
Be[i] = Be_field->getDouble(i);
|
||||
|
||||
return 0; // OK
|
||||
}
|
||||
|
||||
// ******************************
|
@ -0,0 +1,55 @@
|
||||
/**
|
||||
******************************************************************************
|
||||
*
|
||||
* @file uavobjectmanager.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 UAVOBJECTUTILMANAGER_H
|
||||
#define UAVOBJECTUTILMANAGER_H
|
||||
|
||||
#include "uavobjectutil_global.h"
|
||||
|
||||
#include <QtGlobal>
|
||||
#include <QObject>
|
||||
#include <QMutex>
|
||||
|
||||
class UAVOBJECTUTIL_EXPORT UAVObjectUtilManager: public QObject
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
UAVObjectUtilManager();
|
||||
~UAVObjectUtilManager();
|
||||
|
||||
int setHomeLocation(double LLA[3], bool save_to_sdcard);
|
||||
int getHomeLocation(bool &set, double LLA[3]);
|
||||
int getHomeLocation(bool &set, double LLA[3], double ECEF[3], double RNE[9], double Be[3]);
|
||||
|
||||
private:
|
||||
QMutex *mutex;
|
||||
|
||||
};
|
||||
|
||||
|
||||
#endif
|
@ -0,0 +1,67 @@
|
||||
/**
|
||||
******************************************************************************
|
||||
*
|
||||
* @file uavobjectutilplugin.cpp
|
||||
* @author The OpenPilot Team, http://www.openpilot.org Copyright (C) 2010.
|
||||
* @see The GNU Public License (GPL) Version 3
|
||||
* @addtogroup GCSPlugins GCS Plugins
|
||||
* @{
|
||||
* @addtogroup UAVObjectUtilPlugin UAVObjectUtil Plugin
|
||||
* @{
|
||||
* @brief The UAVUObjectUtil 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
|
||||
*/
|
||||
|
||||
#include "uavobjectutilplugin.h"
|
||||
|
||||
UAVObjectUtilPlugin::UAVObjectUtilPlugin()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
UAVObjectUtilPlugin::~UAVObjectUtilPlugin()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void UAVObjectUtilPlugin::extensionsInitialized()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
bool UAVObjectUtilPlugin::initialize(const QStringList & arguments, QString * errorString)
|
||||
{
|
||||
Q_UNUSED(arguments)
|
||||
Q_UNUSED(errorString)
|
||||
|
||||
// Create object manager and expose object
|
||||
UAVObjectUtilManager *objUtilMngr = new UAVObjectUtilManager();
|
||||
addAutoReleasedObject(objUtilMngr);
|
||||
|
||||
// Initialize UAVObjects
|
||||
// UAVObjectUtilInitialize(objMngr);
|
||||
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
void UAVObjectUtilPlugin::shutdown()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
Q_EXPORT_PLUGIN(UAVObjectUtilPlugin)
|
@ -0,0 +1,49 @@
|
||||
/**
|
||||
******************************************************************************
|
||||
*
|
||||
* @file uavobjectutilplugin.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 UAVObjectUtilPlugin UAVObjectUtil Plugin
|
||||
* @{
|
||||
* @brief The UAVUObjectUtil 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 UAVOBJECTUTILPLUGIN_H
|
||||
#define UAVOBJECTUTILPLUGIN_H
|
||||
|
||||
#include "uavobjectutil_global.h"
|
||||
#include <extensionsystem/iplugin.h>
|
||||
#include <QtPlugin>
|
||||
#include "uavobjectutilmanager.h"
|
||||
|
||||
class UAVOBJECTUTIL_EXPORT UAVObjectUtilPlugin: public ExtensionSystem::IPlugin
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
UAVObjectUtilPlugin();
|
||||
~UAVObjectUtilPlugin();
|
||||
|
||||
void extensionsInitialized();
|
||||
bool initialize(const QStringList & arguments, QString * errorString);
|
||||
void shutdown();
|
||||
};
|
||||
|
||||
#endif
|
Loading…
x
Reference in New Issue
Block a user