diff --git a/ground/src/plugins/uavobjects/gpstime.cpp b/ground/src/plugins/uavobjects/gpstime.cpp new file mode 100644 index 000000000..3fba6f51c --- /dev/null +++ b/ground/src/plugins/uavobjects/gpstime.cpp @@ -0,0 +1,143 @@ +/** + ****************************************************************************** + * + * @file gpstime.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 UAVObjectsPlugin UAVObjects Plugin + * @{ + * + * @note Object definition file: gpstime.xml. + * This is an automatically generated file. + * DO NOT modify manually. + * + * @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 + */ +#include "gpstime.h" +#include "uavobjectfield.h" + +const QString GPSTime::NAME = QString("GPSTime"); + +/** + * Constructor + */ +GPSTime::GPSTime(): UAVDataObject(OBJID, ISSINGLEINST, ISSETTINGS, NAME) +{ + // Create fields + QList fields; + QStringList MonthElemNames; + MonthElemNames.append("0"); + fields.append( new UAVObjectField(QString("Month"), QString(""), UAVObjectField::INT8, MonthElemNames, QStringList()) ); + QStringList DayElemNames; + DayElemNames.append("0"); + fields.append( new UAVObjectField(QString("Day"), QString(""), UAVObjectField::INT8, DayElemNames, QStringList()) ); + QStringList YearElemNames; + YearElemNames.append("0"); + fields.append( new UAVObjectField(QString("Year"), QString(""), UAVObjectField::INT16, YearElemNames, QStringList()) ); + QStringList HourElemNames; + HourElemNames.append("0"); + fields.append( new UAVObjectField(QString("Hour"), QString(""), UAVObjectField::INT8, HourElemNames, QStringList()) ); + QStringList MinuteElemNames; + MinuteElemNames.append("0"); + fields.append( new UAVObjectField(QString("Minute"), QString(""), UAVObjectField::INT8, MinuteElemNames, QStringList()) ); + QStringList SecondElemNames; + SecondElemNames.append("0"); + fields.append( new UAVObjectField(QString("Second"), QString(""), UAVObjectField::INT8, SecondElemNames, QStringList()) ); + + // Initialize object + initializeFields(fields, (quint8*)&data, NUMBYTES); + // Set the default field values + setDefaultFieldValues(); +} + +/** + * Get the default metadata for this object + */ +UAVObject::Metadata GPSTime::getDefaultMetadata() +{ + UAVObject::Metadata metadata; + metadata.flightAccess = ACCESS_READWRITE; + metadata.gcsAccess = ACCESS_READWRITE; + metadata.gcsTelemetryAcked = 0; + metadata.gcsTelemetryUpdateMode = UAVObject::UPDATEMODE_MANUAL; + metadata.gcsTelemetryUpdatePeriod = 0; + metadata.flightTelemetryAcked = 0; + metadata.flightTelemetryUpdateMode = UAVObject::UPDATEMODE_PERIODIC; + metadata.flightTelemetryUpdatePeriod = 10000; + metadata.loggingUpdateMode = UAVObject::UPDATEMODE_PERIODIC; + metadata.loggingUpdatePeriod = 30000; + 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 GPSTime::setDefaultFieldValues() +{ + +} + +/** + * Get the object data fields + */ +GPSTime::DataFields GPSTime::getData() +{ + QMutexLocker locker(mutex); + return data; +} + +/** + * Set the object data fields + */ +void GPSTime::setData(const DataFields& data) +{ + QMutexLocker locker(mutex); + // Get metadata + Metadata mdata = getMetadata(); + // Update object if the access mode permits + if ( mdata.gcsAccess == ACCESS_READWRITE ) + { + 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* GPSTime::clone(quint32 instID) +{ + GPSTime* obj = new GPSTime(); + obj->initialize(instID, this->getMetaObject()); + return obj; +} + +/** + * Static function to retrieve an instance of the object. + */ +GPSTime* GPSTime::GetInstance(UAVObjectManager* objMngr, quint32 instID) +{ + return dynamic_cast(objMngr->getObject(GPSTime::OBJID, instID)); +} diff --git a/ground/src/plugins/uavobjects/gpstime.h b/ground/src/plugins/uavobjects/gpstime.h new file mode 100644 index 000000000..472bffba7 --- /dev/null +++ b/ground/src/plugins/uavobjects/gpstime.h @@ -0,0 +1,88 @@ +/** + ****************************************************************************** + * + * @file gpstime.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 + * @{ + * + * @note Object definition file: gpstime.xml. + * This is an automatically generated file. + * DO NOT modify manually. + * + * @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 GPSTIME_H +#define GPSTIME_H + +#include "uavdataobject.h" +#include "uavobjectmanager.h" + +class UAVOBJECTS_EXPORT GPSTime: public UAVDataObject +{ + Q_OBJECT + +public: + // Field structure + typedef struct { + qint8 Month; + qint8 Day; + qint16 Year; + qint8 Hour; + qint8 Minute; + qint8 Second; + + } __attribute__((packed)) DataFields; + + // Field information + // Field Month information + // Field Day information + // Field Year information + // Field Hour information + // Field Minute information + // Field Second information + + + // Constants + static const quint32 OBJID = 1459613858U; + static const QString NAME; + static const bool ISSINGLEINST = 1; + static const bool ISSETTINGS = 0; + static const quint32 NUMBYTES = sizeof(DataFields); + + // Functions + GPSTime(); + + DataFields getData(); + void setData(const DataFields& data); + Metadata getDefaultMetadata(); + UAVDataObject* clone(quint32 instID); + + static GPSTime* GetInstance(UAVObjectManager* objMngr, quint32 instID = 0); + +private: + DataFields data; + + void setDefaultFieldValues(); + +}; + +#endif // GPSTIME_H diff --git a/ground/src/plugins/uavobjects/gpstime.py b/ground/src/plugins/uavobjects/gpstime.py new file mode 100644 index 000000000..1cec36a90 --- /dev/null +++ b/ground/src/plugins/uavobjects/gpstime.py @@ -0,0 +1,136 @@ +## +############################################################################## +# +# @file gpstime.py +# @author The OpenPilot Team, http://www.openpilot.org Copyright (C) 2010. +# @brief Implementation of the GPSTime object. This file has been +# automatically generated by the UAVObjectGenerator. +# +# @note Object definition file: gpstime.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 +# + + +import uavobject + +import struct +from collections import namedtuple + +# This is a list of instances of the data fields contained in this object +_fields = [ \ + uavobject.UAVObjectField( + 'Month', + 'b', + 1, + [ + '0', + ], + { + } + ), + uavobject.UAVObjectField( + 'Day', + 'b', + 1, + [ + '0', + ], + { + } + ), + uavobject.UAVObjectField( + 'Year', + 'h', + 1, + [ + '0', + ], + { + } + ), + uavobject.UAVObjectField( + 'Hour', + 'b', + 1, + [ + '0', + ], + { + } + ), + uavobject.UAVObjectField( + 'Minute', + 'b', + 1, + [ + '0', + ], + { + } + ), + uavobject.UAVObjectField( + 'Second', + 'b', + 1, + [ + '0', + ], + { + } + ), +] + + +class GPSTime(uavobject.UAVObject): + ## Object constants + OBJID = 1459613858 + NAME = "GPSTime" + METANAME = "GPSTimeMeta" + ISSINGLEINST = 1 + ISSETTINGS = 0 + + def __init__(self): + uavobject.UAVObject.__init__(self, + self.OBJID, + self.NAME, + self.METANAME, + 0, + self.ISSINGLEINST) + + for f in _fields: + self.add_field(f) + + def __str__(self): + s = ("0x%08X (%10u) %-30s %3u bytes format '%s'\n" + % (self.OBJID, self.OBJID, self.NAME, self.get_struct().size, self.get_struct().format)) + for f in self.get_tuple()._fields: + s += ("\t%s\n" % f) + return (s) + +def main(): + # Instantiate the object and dump out some interesting info + x = GPSTime() + print (x) + +if __name__ == "__main__": + #import pdb ; pdb.run('main()') + main() diff --git a/ground/src/shared/uavobjectdefinition/gpstime.xml b/ground/src/shared/uavobjectdefinition/gpstime.xml new file mode 100644 index 000000000..f4b7ebee4 --- /dev/null +++ b/ground/src/shared/uavobjectdefinition/gpstime.xml @@ -0,0 +1,15 @@ + + + Contains the GPS time from @ref GPSModule. Required to compute the world magnetic model correctly when setting the home location. + + + + + + + + + + + +