diff --git a/ground/src/plugins/uavobjects/telemetrysettings.cpp b/ground/src/plugins/uavobjects/telemetrysettings.cpp new file mode 100644 index 000000000..7f3dff06d --- /dev/null +++ b/ground/src/plugins/uavobjects/telemetrysettings.cpp @@ -0,0 +1,122 @@ +/** + ****************************************************************************** + * + * @file telemetrysettings.cpp + * @author The OpenPilot Team, http://www.openpilot.org Copyright (C) 2010. + * @brief Implementation of the TelemetrySettings object. This file has been + * automatically generated by the UAVObjectGenerator. + * + * @note Object definition file: telemetrysettings.xml. + * This is an automatically generated file. + * DO NOT modify manually. + * + * @see The GNU Public License (GPL) Version 3 + * + *****************************************************************************/ +/* + * 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 "telemetrysettings.h" +#include "uavobjectfield.h" + +const QString TelemetrySettings::NAME = QString("TelemetrySettings"); + +/** + * Constructor + */ +TelemetrySettings::TelemetrySettings(): UAVDataObject(OBJID, ISSINGLEINST, ISSETTINGS, NAME) +{ + // Create fields + QList fields; + QStringList SpeedElemNames; + SpeedElemNames.append("0"); + QStringList SpeedEnumOptions; + SpeedEnumOptions.append("9600"); + SpeedEnumOptions.append("57600"); + fields.append( new UAVObjectField(QString("Speed"), QString(""), UAVObjectField::ENUM, SpeedElemNames, SpeedEnumOptions) ); + + // Initialize object + initializeFields(fields, (quint8*)&data, NUMBYTES); + // Set the default field values + setDefaultFieldValues(); +} + +/** + * Get the default metadata for this object + */ +UAVObject::Metadata TelemetrySettings::getDefaultMetadata() +{ + UAVObject::Metadata metadata; + metadata.gcsTelemetryAcked = 1; + metadata.gcsTelemetryUpdateMode = UAVObject::UPDATEMODE_ONCHANGE; + metadata.gcsTelemetryUpdatePeriod = 0; + metadata.flightTelemetryAcked = 1; + metadata.flightTelemetryUpdateMode = UAVObject::UPDATEMODE_ONCHANGE; + metadata.flightTelemetryUpdatePeriod = 0; + metadata.loggingUpdateMode = UAVObject::UPDATEMODE_NEVER; + metadata.loggingUpdatePeriod = 0; + return metadata; +} + +/** + * Initialize object fields with the default values. + * If a default value is not specified the object fields + * will be initialized to zero. + */ +void TelemetrySettings::setDefaultFieldValues() +{ + data.Speed = 1; + +} + +/** + * Get the object data fields + */ +TelemetrySettings::DataFields TelemetrySettings::getData() +{ + QMutexLocker locker(mutex); + return data; +} + +/** + * Set the object data fields + */ +void TelemetrySettings::setData(const DataFields& data) +{ + QMutexLocker locker(mutex); + this->data = data; + emit objectUpdatedAuto(this); // trigger object updated event + emit objectUpdated(this); +} + +/** + * Create a clone of this object, a new instance ID must be specified. + * Do not use this function directly to create new instances, the + * UAVObjectManager should be used instead. + */ +UAVDataObject* TelemetrySettings::clone(quint32 instID) +{ + TelemetrySettings* obj = new TelemetrySettings(); + obj->initialize(instID, this->getMetaObject()); + return obj; +} + +/** + * Static function to retrieve an instance of the object. + */ +TelemetrySettings* TelemetrySettings::GetInstance(UAVObjectManager* objMngr, quint32 instID) +{ + return dynamic_cast(objMngr->getObject(TelemetrySettings::OBJID, instID)); +} diff --git a/ground/src/plugins/uavobjects/telemetrysettings.h b/ground/src/plugins/uavobjects/telemetrysettings.h new file mode 100644 index 000000000..7e47ac09f --- /dev/null +++ b/ground/src/plugins/uavobjects/telemetrysettings.h @@ -0,0 +1,78 @@ +/** + ****************************************************************************** + * + * @file telemetrysettings.h + * @author The OpenPilot Team, http://www.openpilot.org Copyright (C) 2010. + * @brief Implementation of the TelemetrySettings object. This file has been + * automatically generated by the UAVObjectGenerator. + * + * @note Object definition file: telemetrysettings.xml. + * This is an automatically generated file. + * DO NOT modify manually. + * + * @see The GNU Public License (GPL) Version 3 + * + *****************************************************************************/ +/* + * 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 TELEMETRYSETTINGS_H +#define TELEMETRYSETTINGS_H + +#include "uavdataobject.h" +#include "uavobjectmanager.h" + +class UAVOBJECTS_EXPORT TelemetrySettings: public UAVDataObject +{ + Q_OBJECT + +public: + // Field structure + typedef struct { + quint8 Speed; + + } __attribute__((packed)) DataFields; + + // Field information + // Field Speed information + /* Enumeration options for field Speed */ + typedef enum { SPEED_9600=0, SPEED_57600=1, } SpeedOptions; + + + // Constants + static const quint32 OBJID = 2785592614U; + static const QString NAME; + static const bool ISSINGLEINST = 1; + static const bool ISSETTINGS = 1; + static const quint32 NUMBYTES = sizeof(DataFields); + + // Functions + TelemetrySettings(); + + DataFields getData(); + void setData(const DataFields& data); + Metadata getDefaultMetadata(); + UAVDataObject* clone(quint32 instID); + + static TelemetrySettings* GetInstance(UAVObjectManager* objMngr, quint32 instID = 0); + +private: + DataFields data; + + void setDefaultFieldValues(); + +}; + +#endif // TELEMETRYSETTINGS_H diff --git a/ground/src/plugins/uavobjects/uavobjects.pro b/ground/src/plugins/uavobjects/uavobjects.pro index 4fa5da65c..f6871f6c4 100644 --- a/ground/src/plugins/uavobjects/uavobjects.pro +++ b/ground/src/plugins/uavobjects/uavobjects.pro @@ -18,7 +18,8 @@ HEADERS += uavobjects_global.h \ flighttelemetrystats.h \ systemstats.h \ systemalarms.h \ - objectpersistence.h + objectpersistence.h \ + telemetrysettings.h SOURCES += uavobject.cpp \ uavmetaobject.cpp \ uavobjectmanager.cpp \ @@ -34,6 +35,7 @@ SOURCES += uavobject.cpp \ flighttelemetrystats.cpp \ systemstats.cpp \ systemalarms.cpp \ - objectpersistence.cpp + objectpersistence.cpp \ + telemetrysettings.cpp DEFINES += UAVOBJECTS_LIBRARY OTHER_FILES += UAVObjects.pluginspec diff --git a/ground/src/plugins/uavobjects/uavobjectsinit.cpp b/ground/src/plugins/uavobjects/uavobjectsinit.cpp index 2d48e3c3d..4dc628d56 100644 --- a/ground/src/plugins/uavobjects/uavobjectsinit.cpp +++ b/ground/src/plugins/uavobjects/uavobjectsinit.cpp @@ -39,6 +39,7 @@ #include "objectpersistence.h" #include "systemalarms.h" #include "systemstats.h" +#include "telemetrysettings.h" /** @@ -56,5 +57,6 @@ void UAVObjectsInitialize(UAVObjectManager* objMngr) objMngr->registerObject( new ObjectPersistence() ); objMngr->registerObject( new SystemAlarms() ); objMngr->registerObject( new SystemStats() ); + objMngr->registerObject( new TelemetrySettings() ); } diff --git a/ground/src/plugins/uavtalk/telemetrymonitor.cpp b/ground/src/plugins/uavtalk/telemetrymonitor.cpp index c9a2714af..c354e32ad 100644 --- a/ground/src/plugins/uavtalk/telemetrymonitor.cpp +++ b/ground/src/plugins/uavtalk/telemetrymonitor.cpp @@ -203,7 +203,7 @@ void TelemetryMonitor::processStatsUpdates() else if ( gcsStats.Status == GCSTelemetryStats::STATUS_CONNECTED ) { // Check if the connection is still active and the the autopilot is still connected - if (flightStats.Status == FlightTelemetryStats::STATUS_DISCONNECTED || telStats.rxBytes == 0) + if (flightStats.Status == FlightTelemetryStats::STATUS_DISCONNECTED || telStats.rxObjects == 0) { gcsStats.Status = GCSTelemetryStats::STATUS_DISCONNECTED; } diff --git a/ground/src/shared/uavobjectdefinition/telemetrysettings.xml b/ground/src/shared/uavobjectdefinition/telemetrysettings.xml new file mode 100644 index 000000000..74641d718 --- /dev/null +++ b/ground/src/shared/uavobjectdefinition/telemetrysettings.xml @@ -0,0 +1,8 @@ + + + + + + + +