1
0
mirror of https://bitbucket.org/librepilot/librepilot.git synced 2025-01-18 03:52:11 +01:00

Add AHRS attitude module and driver skeletons

- New Attitude module for AHRS (skeleton)
 - New AttitudeSettings UAVobject
 - New AttitudeActual UAVobject
 - Regenerated UAVobjects
 - Added new UAVobjects to OpenPilot and GCS builds
 - New PiOS driver for OpenPilot AHRS (stubs only)

git-svn-id: svn://svn.openpilot.org/OpenPilot/trunk@655 ebee16cc-31ac-478f-84a7-5cbb03baadba
This commit is contained in:
stac 2010-05-24 16:33:36 +00:00 committed by stac
parent e892dcb033
commit 69de42db49
23 changed files with 1433 additions and 1 deletions

View File

@ -87,6 +87,8 @@ MODACTUATOR = $(OPMODULEDIR)/Actuator
MODACTUATORINC = $(MODACTUATOR)/inc
MODALTITUDE = $(OPMODULEDIR)/Altitude
MODALTITUDEINC = $(MODALTITUDE)/inc
MODATTITUDE = $(OPMODULEDIR)/Attitude
MODATTITUDEINC = $(MODATTITUDE)/inc
PIOS = ../PiOS
PIOSINC = $(PIOS)/inc
PIOSSTM32F10X = $(PIOS)/STM32F10x
@ -120,6 +122,7 @@ SRC += $(MODGPS)/GPS.c $(MODGPS)/buffer.c
SRC += $(MODMANUALCONTROL)/manualcontrol.c
SRC += $(MODACTUATOR)/actuator.c
SRC += $(MODALTITUDE)/altitude.c
SRC += $(MODATTITUDE)/attitude.c
## OPENPILOT:
SRC += $(OPSYSTEM)/openpilot.c
@ -159,6 +162,8 @@ SRC += $(OPUAVOBJ)/manualcontrolsettings.c
SRC += $(OPUAVOBJ)/attitudedesired.c
SRC += $(OPUAVOBJ)/stabilizationsettings.c
SRC += $(OPUAVOBJ)/altitudeactual.c
SRC += $(OPUAVOBJ)/attitudeactual.c
SRC += $(OPUAVOBJ)/attitudesettings.c
## PIOS Hardware (STM32F10x)
SRC += $(PIOSSTM32F10X)/pios_sys.c
@ -183,6 +188,7 @@ SRC += $(PIOSSTM32F10X)/pios_exti.c
SRC += $(PIOSCOMMON)/pios_sdcard.c
SRC += $(PIOSCOMMON)/pios_com.c
SRC += $(PIOSCOMMON)/pios_bmp085.c
SRC += $(PIOSCOMMON)/pios_opahrs.c
SRC += $(PIOSCOMMON)/printf-stdarg.c
## CMSIS for STM32
@ -286,6 +292,8 @@ EXTRAINCDIRS += $(MODACTUATOR)
EXTRAINCDIRS += $(MODACTUATORINC)
EXTRAINCDIRS += $(MODALTITUDE)
EXTRAINCDIRS += $(MODALTITUDEINC)
EXTRAINCDIRS += $(MODATTITUDE)
EXTRAINCDIRS += $(MODATTITUDEINC)
EXTRAINCDIRS += $(PIOS)
EXTRAINCDIRS += $(PIOSINC)
EXTRAINCDIRS += $(PIOSSTM32F10X)
@ -429,7 +437,7 @@ LDFLAGS +=-T$(LINKERSCRIPTPATH)/link_stm32f10x_$(MODEL).ld
# see openocd.pdf/openocd.texi for further information
#
OOCD_LOADFILE+=$(OUTDIR)/$(TARGET).elf
# if OpenOCD is in the $PATH just set OPENOCDEXE=openocd
# if OpenOCD is in the $PATH just set OOCD_EXE=openocd
OOCD_EXE=openocd
# debug level
OOCD_CL=-d0

View File

@ -0,0 +1,121 @@
/**
******************************************************************************
*
* @file attitude.c
* @author The OpenPilot Team, http://www.openpilot.org Copyright (C) 2010.
* @brief Module to read the attitude solution from the AHRS on a periodic basis.
*
* @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
*/
/**
* Input object: AttitudeSettings
* Output object: AttitudeActual
*
* This module will periodically update the value of latest attitude solution
* that is available from the AHRS.
* The module settings can configure how often AHRS is polled for a new solution.
*
* The module executes in its own thread.
*
* UAVObjects are automatically generated by the UAVObjectGenerator from
* the object definition XML file.
*
* Modules have no API, all communication to other modules is done through UAVObjects.
* However modules may use the API exposed by shared libraries.
* See the OpenPilot wiki for more details.
* http://www.openpilot.org/OpenPilot_Application_Architecture
*
*/
#include "attitude.h"
#include "attitudeactual.h" // object that will be updated by the module
#include "attitudesettings.h" // object holding module settings
#include "pios_opahrs.h" // library for OpenPilot AHRS access functions
// Private constants
#define STACK_SIZE 200
#define TASK_PRIORITY (tskIDLE_PRIORITY+1)
// Private types
// Private variables
static xTaskHandle taskHandle;
// Private functions
static void attitudeTask(void* parameters);
/**
* Initialise the module, called on startup
* \returns 0 on success or -1 if initialisation failed
*/
int32_t AttitudeInitialize(void)
{
// Start main task
xTaskCreate(attitudeTask, (signed char*)"Attitude", STACK_SIZE, NULL, TASK_PRIORITY, &taskHandle);
return 0;
}
/**
* Module thread, should not return.
*/
static void attitudeTask(void* parameters)
{
AttitudeSettingsData settings;
AttitudeActualData data;
// Main task loop
while (1)
{
// Update settings with latest value
AttitudeSettingsGet(&settings);
// Get the current object data
AttitudeActualGet(&data);
// Query the latest attitude solution from the AHRS
PIOS_OPAHRS_ReadAttitude();
// Update the data
data.seq++;
data.q1 += 0.111;
data.q2 += 1.1;
data.q3 += 7.0;
data.q4 -= 2.321;
data.ex += 0.01;
data.ey -= 0.03;
data.ez += 0.05;
// Update the ExampleObject, after this function is called
// notifications to any other modules listening to that object
// will be sent and the GCS object will be updated through the
// telemetry link. All operations will take place asynchronously
// and the following call will return immediately.
AttitudeActualSet(&data);
// Since this module executes at fixed time intervals, we need to
// block the task until it is time for the next update.
// The settings field is in ms, to convert to RTOS ticks we need
// to divide by portTICK_RATE_MS.
vTaskDelay( settings.UpdatePeriod / portTICK_RATE_MS );
}
}

View File

@ -0,0 +1,34 @@
/**
******************************************************************************
*
* @file attitude.h
* @author The OpenPilot Team, http://www.openpilot.org Copyright (C) 2010.
* @brief Module to read the attitude solution from the AHRS on a periodic basis.
*
* @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 ATTITUDE_H
#define ATTITUDE_H
#include "openpilot.h"
int32_t AttitudeInitialize(void);
#endif // ATTITUDE_H

View File

@ -46,6 +46,7 @@
#define PIOS_INCLUDE_USB_HID
#define PIOS_INCLUDE_USB
#define PIOS_INCLUDE_BMP085
#define PIOS_INCLUDE_OPAHRS
#define PIOS_INCLUDE_COM
#define PIOS_INCLUDE_SDCARD
#define PIOS_INCLUDE_SETTINGS

View File

@ -36,6 +36,7 @@
#include "manualcontrol.h"
#include "actuator.h"
#include "altitude.h"
#include "attitude.h"
/* Task Priorities */
#define PRIORITY_TASK_HOOKS (tskIDLE_PRIORITY + 3)
@ -136,6 +137,7 @@ void OpenPilotInit()
ManualControlInitialize();
ActuatorInitialize();
AltitudeInitialize();
AttitudeInitialize();
/* Create test tasks */
//xTaskCreate(TaskTesting, (signed portCHAR *)"Testing", configMINIMAL_STACK_SIZE , NULL, 4, NULL);

View File

@ -0,0 +1,102 @@
/**
******************************************************************************
*
* @file attitudeactual.c
* @author The OpenPilot Team, http://www.openpilot.org Copyright (C) 2010.
* @brief Implementation of the AttitudeActual object. This file has been
* automatically generated by the UAVObjectGenerator.
*
* @note Object definition file: attitudeactual.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 "openpilot.h"
#include "attitudeactual.h"
// Private variables
static UAVObjHandle handle;
// Private functions
static void setDefaults(UAVObjHandle obj, uint16_t instId);
/**
* Initialize object.
* \return 0 Success
* \return -1 Failure
*/
int32_t AttitudeActualInitialize()
{
// Register object with the object manager
handle = UAVObjRegister(ATTITUDEACTUAL_OBJID, ATTITUDEACTUAL_NAME, ATTITUDEACTUAL_METANAME, 0,
ATTITUDEACTUAL_ISSINGLEINST, ATTITUDEACTUAL_ISSETTINGS, ATTITUDEACTUAL_NUMBYTES, &setDefaults);
// Done
if (handle != 0)
{
return 0;
}
else
{
return -1;
}
}
/**
* Initialize object fields and metadata with the default values.
* If a default value is not specified the object fields
* will be initialized to zero.
*/
static void setDefaults(UAVObjHandle obj, uint16_t instId)
{
AttitudeActualData data;
UAVObjMetadata metadata;
// Initialize object fields to their default values
UAVObjGetInstanceData(obj, instId, &data);
memset(&data, 0, sizeof(AttitudeActualData));
UAVObjSetInstanceData(obj, instId, &data);
// Initialize object metadata to their default values
metadata.access = ACCESS_READWRITE;
metadata.gcsAccess = ACCESS_READWRITE;
metadata.telemetryAcked = 1;
metadata.telemetryUpdateMode = UPDATEMODE_PERIODIC;
metadata.telemetryUpdatePeriod = 1000;
metadata.gcsTelemetryAcked = 1;
metadata.gcsTelemetryUpdateMode = UPDATEMODE_MANUAL;
metadata.gcsTelemetryUpdatePeriod = 0;
metadata.loggingUpdateMode = UPDATEMODE_NEVER;
metadata.loggingUpdatePeriod = 0;
UAVObjSetMetadata(obj, &metadata);
}
/**
* Get object handle
*/
UAVObjHandle AttitudeActualHandle()
{
return handle;
}

View File

@ -0,0 +1,103 @@
/**
******************************************************************************
*
* @file attitudesettings.c
* @author The OpenPilot Team, http://www.openpilot.org Copyright (C) 2010.
* @brief Implementation of the AttitudeSettings object. This file has been
* automatically generated by the UAVObjectGenerator.
*
* @note Object definition file: attitudesettings.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 "openpilot.h"
#include "attitudesettings.h"
// Private variables
static UAVObjHandle handle;
// Private functions
static void setDefaults(UAVObjHandle obj, uint16_t instId);
/**
* Initialize object.
* \return 0 Success
* \return -1 Failure
*/
int32_t AttitudeSettingsInitialize()
{
// Register object with the object manager
handle = UAVObjRegister(ATTITUDESETTINGS_OBJID, ATTITUDESETTINGS_NAME, ATTITUDESETTINGS_METANAME, 0,
ATTITUDESETTINGS_ISSINGLEINST, ATTITUDESETTINGS_ISSETTINGS, ATTITUDESETTINGS_NUMBYTES, &setDefaults);
// Done
if (handle != 0)
{
return 0;
}
else
{
return -1;
}
}
/**
* Initialize object fields and metadata with the default values.
* If a default value is not specified the object fields
* will be initialized to zero.
*/
static void setDefaults(UAVObjHandle obj, uint16_t instId)
{
AttitudeSettingsData data;
UAVObjMetadata metadata;
// Initialize object fields to their default values
UAVObjGetInstanceData(obj, instId, &data);
memset(&data, 0, sizeof(AttitudeSettingsData));
data.UpdatePeriod = 500;
UAVObjSetInstanceData(obj, instId, &data);
// Initialize object metadata to their default values
metadata.access = ACCESS_READWRITE;
metadata.gcsAccess = ACCESS_READWRITE;
metadata.telemetryAcked = 1;
metadata.telemetryUpdateMode = UPDATEMODE_ONCHANGE;
metadata.telemetryUpdatePeriod = 0;
metadata.gcsTelemetryAcked = 1;
metadata.gcsTelemetryUpdateMode = UPDATEMODE_ONCHANGE;
metadata.gcsTelemetryUpdatePeriod = 0;
metadata.loggingUpdateMode = UPDATEMODE_NEVER;
metadata.loggingUpdatePeriod = 0;
UAVObjSetMetadata(obj, &metadata);
}
/**
* Get object handle
*/
UAVObjHandle AttitudeSettingsHandle()
{
return handle;
}

View File

@ -0,0 +1,86 @@
##
##############################################################################
#
# @file attitudesettings.py
# @author The OpenPilot Team, http://www.openpilot.org Copyright (C) 2010.
# @brief Implementation of the AttitudeSettings object. This file has been
# automatically generated by the UAVObjectGenerator.
#
# @note Object definition file: attitudesettings.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(
'UpdatePeriod',
'i',
1,
[
'0',
],
{
}
),
]
class AttitudeSettings(uavobject.UAVObject):
## Object constants
OBJID = 3446368842
NAME = "AttitudeSettings"
METANAME = "AttitudeSettingsMeta"
ISSINGLEINST = 1
ISSETTINGS = 1
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 = AttitudeSettings()
print (x)
if __name__ == "__main__":
#import pdb ; pdb.run('main()')
main()

View File

@ -0,0 +1,86 @@
/**
******************************************************************************
*
* @file attitudeactual.h
* @author The OpenPilot Team, http://www.openpilot.org Copyright (C) 2010.
* @brief Implementation of the AttitudeActual object. This file has been
* automatically generated by the UAVObjectGenerator.
*
* @note Object definition file: attitudeactual.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 ATTITUDEACTUAL_H
#define ATTITUDEACTUAL_H
// Object constants
#define ATTITUDEACTUAL_OBJID 1949256792U
#define ATTITUDEACTUAL_NAME "AttitudeActual"
#define ATTITUDEACTUAL_METANAME "AttitudeActualMeta"
#define ATTITUDEACTUAL_ISSINGLEINST 1
#define ATTITUDEACTUAL_ISSETTINGS 0
#define ATTITUDEACTUAL_NUMBYTES sizeof(AttitudeActualData)
// Object access macros
#define AttitudeActualGet(dataOut) UAVObjGetData(AttitudeActualHandle(), dataOut)
#define AttitudeActualSet(dataIn) UAVObjSetData(AttitudeActualHandle(), dataIn)
#define AttitudeActualInstGet(instId, dataOut) UAVObjGetInstanceData(AttitudeActualHandle(), instId, dataOut)
#define AttitudeActualInstSet(instId, dataIn) UAVObjSetInstanceData(AttitudeActualHandle(), instId, dataIn)
#define AttitudeActualConnectQueue(queue) UAVObjConnectQueue(AttitudeActualHandle(), queue, EV_MASK_ALL_UPDATES)
#define AttitudeActualConnectCallback(cb) UAVObjConnectCallback(AttitudeActualHandle(), cb, EV_MASK_ALL_UPDATES)
#define AttitudeActualCreateInstance() UAVObjCreateInstance(AttitudeActualHandle())
#define AttitudeActualRequestUpdate() UAVObjRequestUpdate(AttitudeActualHandle())
#define AttitudeActualRequestInstUpdate(instId) UAVObjRequestInstanceUpdate(AttitudeActualHandle(), instId)
#define AttitudeActualUpdated() UAVObjUpdated(AttitudeActualHandle())
#define AttitudeActualInstUpdated(instId) UAVObjUpdated(AttitudeActualHandle(), instId)
#define AttitudeActualGetMetadata(dataOut) UAVObjGetMetadata(AttitudeActualHandle(), dataOut)
#define AttitudeActualSetMetadata(dataIn) UAVObjSetMetadata(AttitudeActualHandle(), dataIn)
// Object data
typedef struct {
uint32_t seq;
float q1;
float q2;
float q3;
float q4;
float ex;
float ey;
float ez;
} __attribute__((packed)) AttitudeActualData;
// Field information
// Field seq information
// Field q1 information
// Field q2 information
// Field q3 information
// Field q4 information
// Field ex information
// Field ey information
// Field ez information
// Generic interface functions
int32_t AttitudeActualInitialize();
UAVObjHandle AttitudeActualHandle();
#endif // ATTITUDEACTUAL_H

View File

@ -0,0 +1,72 @@
/**
******************************************************************************
*
* @file attitudesettings.h
* @author The OpenPilot Team, http://www.openpilot.org Copyright (C) 2010.
* @brief Implementation of the AttitudeSettings object. This file has been
* automatically generated by the UAVObjectGenerator.
*
* @note Object definition file: attitudesettings.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 ATTITUDESETTINGS_H
#define ATTITUDESETTINGS_H
// Object constants
#define ATTITUDESETTINGS_OBJID 3446368842U
#define ATTITUDESETTINGS_NAME "AttitudeSettings"
#define ATTITUDESETTINGS_METANAME "AttitudeSettingsMeta"
#define ATTITUDESETTINGS_ISSINGLEINST 1
#define ATTITUDESETTINGS_ISSETTINGS 1
#define ATTITUDESETTINGS_NUMBYTES sizeof(AttitudeSettingsData)
// Object access macros
#define AttitudeSettingsGet(dataOut) UAVObjGetData(AttitudeSettingsHandle(), dataOut)
#define AttitudeSettingsSet(dataIn) UAVObjSetData(AttitudeSettingsHandle(), dataIn)
#define AttitudeSettingsInstGet(instId, dataOut) UAVObjGetInstanceData(AttitudeSettingsHandle(), instId, dataOut)
#define AttitudeSettingsInstSet(instId, dataIn) UAVObjSetInstanceData(AttitudeSettingsHandle(), instId, dataIn)
#define AttitudeSettingsConnectQueue(queue) UAVObjConnectQueue(AttitudeSettingsHandle(), queue, EV_MASK_ALL_UPDATES)
#define AttitudeSettingsConnectCallback(cb) UAVObjConnectCallback(AttitudeSettingsHandle(), cb, EV_MASK_ALL_UPDATES)
#define AttitudeSettingsCreateInstance() UAVObjCreateInstance(AttitudeSettingsHandle())
#define AttitudeSettingsRequestUpdate() UAVObjRequestUpdate(AttitudeSettingsHandle())
#define AttitudeSettingsRequestInstUpdate(instId) UAVObjRequestInstanceUpdate(AttitudeSettingsHandle(), instId)
#define AttitudeSettingsUpdated() UAVObjUpdated(AttitudeSettingsHandle())
#define AttitudeSettingsInstUpdated(instId) UAVObjUpdated(AttitudeSettingsHandle(), instId)
#define AttitudeSettingsGetMetadata(dataOut) UAVObjGetMetadata(AttitudeSettingsHandle(), dataOut)
#define AttitudeSettingsSetMetadata(dataIn) UAVObjSetMetadata(AttitudeSettingsHandle(), dataIn)
// Object data
typedef struct {
int32_t UpdatePeriod;
} __attribute__((packed)) AttitudeSettingsData;
// Field information
// Field UpdatePeriod information
// Generic interface functions
int32_t AttitudeSettingsInitialize();
UAVObjHandle AttitudeSettingsHandle();
#endif // ATTITUDESETTINGS_H

View File

@ -32,7 +32,9 @@
#include "actuatordesired.h"
#include "actuatorsettings.h"
#include "altitudeactual.h"
#include "attitudeactual.h"
#include "attitudedesired.h"
#include "attitudesettings.h"
#include "exampleobject1.h"
#include "exampleobject2.h"
#include "examplesettings.h"
@ -59,7 +61,9 @@ void UAVObjectsInitializeAll()
ActuatorDesiredInitialize();
ActuatorSettingsInitialize();
AltitudeActualInitialize();
AttitudeActualInitialize();
AttitudeDesiredInitialize();
AttitudeSettingsInitialize();
ExampleObject1Initialize();
ExampleObject2Initialize();
ExampleSettingsInitialize();

View File

@ -0,0 +1,54 @@
/**
******************************************************************************
*
* @file pios_opahrs.c
* @author The OpenPilot Team, http://www.openpilot.org Copyright (C) 2010.
* @brief IRQ Enable/Disable routines
* @see The GNU Public License (GPL) Version 3
* @defgroup PIOS_OPAHRS OPAHRS Functions
* @{
*
*****************************************************************************/
/*
* 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
*/
/* Project Includes */
#include "pios.h"
#if defined(PIOS_INCLUDE_OPAHRS)
/**
* Initialise the OpenPilot AHRS
*/
void PIOS_OPAHRS_Init(void)
{
}
void PIOS_OPAHRS_ReadAttitude(void)
{
}
int32_t PIOS_OPAHRS_Read(uint8_t address, uint8_t *buffer, uint8_t len)
{
return 0;
}
int32_t PIOS_OPAHRS_Write(uint8_t address, uint8_t buffer)
{
return 0;
}
#endif /* PIOS_INCLUDE_OPAHRS */

View File

@ -0,0 +1,44 @@
/**
******************************************************************************
*
* @file pios_opahrs.h
* @author The OpenPilot Team, http://www.openpilot.org Copyright (C) 2010.
* @brief OpenPilot AHRS functions header.
* @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 PIOS_OPAHRS_H
#define PIOS_OPAHRS_H
/* Local Types */
/* Global Variables */
#if defined(PIOS_INCLUDE_FREERTOS)
extern xSemaphoreHandle PIOS_OPAHRS_EOT;
#else
extern int32_t PIOS_OPAHRS_EOT;
#endif
/* Public Functions */
extern void PIOS_OPAHRS_Init(void);
extern void PIOS_OPAHRS_ReadAttitude(void);
extern int32_t PIOS_OPAHRS_Read(uint8_t address, uint8_t *buffer, uint8_t len);
extern int32_t PIOS_OPAHRS_Write(uint8_t address, uint8_t buffer);
#endif /* PIOS_OPAHRS_H */

View File

@ -0,0 +1,147 @@
/**
******************************************************************************
*
* @file attitudeactual.cpp
* @author The OpenPilot Team, http://www.openpilot.org Copyright (C) 2010.
* @brief Implementation of the AttitudeActual object. This file has been
* automatically generated by the UAVObjectGenerator.
*
* @note Object definition file: attitudeactual.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 "attitudeactual.h"
#include "uavobjectfield.h"
const QString AttitudeActual::NAME = QString("AttitudeActual");
/**
* Constructor
*/
AttitudeActual::AttitudeActual(): UAVDataObject(OBJID, ISSINGLEINST, ISSETTINGS, NAME)
{
// Create fields
QList<UAVObjectField*> fields;
QStringList seqElemNames;
seqElemNames.append("0");
fields.append( new UAVObjectField(QString("seq"), QString("none"), UAVObjectField::UINT32, seqElemNames, QStringList()) );
QStringList q1ElemNames;
q1ElemNames.append("0");
fields.append( new UAVObjectField(QString("q1"), QString("none"), UAVObjectField::FLOAT32, q1ElemNames, QStringList()) );
QStringList q2ElemNames;
q2ElemNames.append("0");
fields.append( new UAVObjectField(QString("q2"), QString("none"), UAVObjectField::FLOAT32, q2ElemNames, QStringList()) );
QStringList q3ElemNames;
q3ElemNames.append("0");
fields.append( new UAVObjectField(QString("q3"), QString("none"), UAVObjectField::FLOAT32, q3ElemNames, QStringList()) );
QStringList q4ElemNames;
q4ElemNames.append("0");
fields.append( new UAVObjectField(QString("q4"), QString("none"), UAVObjectField::FLOAT32, q4ElemNames, QStringList()) );
QStringList exElemNames;
exElemNames.append("0");
fields.append( new UAVObjectField(QString("ex"), QString("none"), UAVObjectField::FLOAT32, exElemNames, QStringList()) );
QStringList eyElemNames;
eyElemNames.append("0");
fields.append( new UAVObjectField(QString("ey"), QString("none"), UAVObjectField::FLOAT32, eyElemNames, QStringList()) );
QStringList ezElemNames;
ezElemNames.append("0");
fields.append( new UAVObjectField(QString("ez"), QString("none"), UAVObjectField::FLOAT32, ezElemNames, QStringList()) );
// Initialize object
initializeFields(fields, (quint8*)&data, NUMBYTES);
// Set the default field values
setDefaultFieldValues();
}
/**
* Get the default metadata for this object
*/
UAVObject::Metadata AttitudeActual::getDefaultMetadata()
{
UAVObject::Metadata metadata;
metadata.flightAccess = ACCESS_READWRITE;
metadata.gcsAccess = ACCESS_READWRITE;
metadata.gcsTelemetryAcked = 1;
metadata.gcsTelemetryUpdateMode = UAVObject::UPDATEMODE_MANUAL;
metadata.gcsTelemetryUpdatePeriod = 0;
metadata.flightTelemetryAcked = 1;
metadata.flightTelemetryUpdateMode = UAVObject::UPDATEMODE_PERIODIC;
metadata.flightTelemetryUpdatePeriod = 1000;
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 AttitudeActual::setDefaultFieldValues()
{
}
/**
* Get the object data fields
*/
AttitudeActual::DataFields AttitudeActual::getData()
{
QMutexLocker locker(mutex);
return data;
}
/**
* Set the object data fields
*/
void AttitudeActual::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* AttitudeActual::clone(quint32 instID)
{
AttitudeActual* obj = new AttitudeActual();
obj->initialize(instID, this->getMetaObject());
return obj;
}
/**
* Static function to retrieve an instance of the object.
*/
AttitudeActual* AttitudeActual::GetInstance(UAVObjectManager* objMngr, quint32 instID)
{
return dynamic_cast<AttitudeActual*>(objMngr->getObject(AttitudeActual::OBJID, instID));
}

View File

@ -0,0 +1,90 @@
/**
******************************************************************************
*
* @file attitudeactual.h
* @author The OpenPilot Team, http://www.openpilot.org Copyright (C) 2010.
* @brief Implementation of the AttitudeActual object. This file has been
* automatically generated by the UAVObjectGenerator.
*
* @note Object definition file: attitudeactual.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 ATTITUDEACTUAL_H
#define ATTITUDEACTUAL_H
#include "uavdataobject.h"
#include "uavobjectmanager.h"
class UAVOBJECTS_EXPORT AttitudeActual: public UAVDataObject
{
Q_OBJECT
public:
// Field structure
typedef struct {
quint32 seq;
float q1;
float q2;
float q3;
float q4;
float ex;
float ey;
float ez;
} __attribute__((packed)) DataFields;
// Field information
// Field seq information
// Field q1 information
// Field q2 information
// Field q3 information
// Field q4 information
// Field ex information
// Field ey information
// Field ez information
// Constants
static const quint32 OBJID = 1949256792U;
static const QString NAME;
static const bool ISSINGLEINST = 1;
static const bool ISSETTINGS = 0;
static const quint32 NUMBYTES = sizeof(DataFields);
// Functions
AttitudeActual();
DataFields getData();
void setData(const DataFields& data);
Metadata getDefaultMetadata();
UAVDataObject* clone(quint32 instID);
static AttitudeActual* GetInstance(UAVObjectManager* objMngr, quint32 instID = 0);
private:
DataFields data;
void setDefaultFieldValues();
};
#endif // ATTITUDEACTUAL_H

View File

@ -0,0 +1,156 @@
##
##############################################################################
#
# @file attitudeactual.py
# @author The OpenPilot Team, http://www.openpilot.org Copyright (C) 2010.
# @brief Implementation of the AttitudeActual object. This file has been
# automatically generated by the UAVObjectGenerator.
#
# @note Object definition file: attitudeactual.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(
'seq',
'I',
1,
[
'0',
],
{
}
),
uavobject.UAVObjectField(
'q1',
'f',
1,
[
'0',
],
{
}
),
uavobject.UAVObjectField(
'q2',
'f',
1,
[
'0',
],
{
}
),
uavobject.UAVObjectField(
'q3',
'f',
1,
[
'0',
],
{
}
),
uavobject.UAVObjectField(
'q4',
'f',
1,
[
'0',
],
{
}
),
uavobject.UAVObjectField(
'ex',
'f',
1,
[
'0',
],
{
}
),
uavobject.UAVObjectField(
'ey',
'f',
1,
[
'0',
],
{
}
),
uavobject.UAVObjectField(
'ez',
'f',
1,
[
'0',
],
{
}
),
]
class AttitudeActual(uavobject.UAVObject):
## Object constants
OBJID = 1949256792
NAME = "AttitudeActual"
METANAME = "AttitudeActualMeta"
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 = AttitudeActual()
print (x)
if __name__ == "__main__":
#import pdb ; pdb.run('main()')
main()

View File

@ -0,0 +1,127 @@
/**
******************************************************************************
*
* @file attitudesettings.cpp
* @author The OpenPilot Team, http://www.openpilot.org Copyright (C) 2010.
* @brief Implementation of the AttitudeSettings object. This file has been
* automatically generated by the UAVObjectGenerator.
*
* @note Object definition file: attitudesettings.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 "attitudesettings.h"
#include "uavobjectfield.h"
const QString AttitudeSettings::NAME = QString("AttitudeSettings");
/**
* Constructor
*/
AttitudeSettings::AttitudeSettings(): UAVDataObject(OBJID, ISSINGLEINST, ISSETTINGS, NAME)
{
// Create fields
QList<UAVObjectField*> fields;
QStringList UpdatePeriodElemNames;
UpdatePeriodElemNames.append("0");
fields.append( new UAVObjectField(QString("UpdatePeriod"), QString("ms"), UAVObjectField::INT32, UpdatePeriodElemNames, QStringList()) );
// Initialize object
initializeFields(fields, (quint8*)&data, NUMBYTES);
// Set the default field values
setDefaultFieldValues();
}
/**
* Get the default metadata for this object
*/
UAVObject::Metadata AttitudeSettings::getDefaultMetadata()
{
UAVObject::Metadata metadata;
metadata.flightAccess = ACCESS_READWRITE;
metadata.gcsAccess = ACCESS_READWRITE;
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 AttitudeSettings::setDefaultFieldValues()
{
data.UpdatePeriod = 500;
}
/**
* Get the object data fields
*/
AttitudeSettings::DataFields AttitudeSettings::getData()
{
QMutexLocker locker(mutex);
return data;
}
/**
* Set the object data fields
*/
void AttitudeSettings::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* AttitudeSettings::clone(quint32 instID)
{
AttitudeSettings* obj = new AttitudeSettings();
obj->initialize(instID, this->getMetaObject());
return obj;
}
/**
* Static function to retrieve an instance of the object.
*/
AttitudeSettings* AttitudeSettings::GetInstance(UAVObjectManager* objMngr, quint32 instID)
{
return dynamic_cast<AttitudeSettings*>(objMngr->getObject(AttitudeSettings::OBJID, instID));
}

View File

@ -0,0 +1,76 @@
/**
******************************************************************************
*
* @file attitudesettings.h
* @author The OpenPilot Team, http://www.openpilot.org Copyright (C) 2010.
* @brief Implementation of the AttitudeSettings object. This file has been
* automatically generated by the UAVObjectGenerator.
*
* @note Object definition file: attitudesettings.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 ATTITUDESETTINGS_H
#define ATTITUDESETTINGS_H
#include "uavdataobject.h"
#include "uavobjectmanager.h"
class UAVOBJECTS_EXPORT AttitudeSettings: public UAVDataObject
{
Q_OBJECT
public:
// Field structure
typedef struct {
qint32 UpdatePeriod;
} __attribute__((packed)) DataFields;
// Field information
// Field UpdatePeriod information
// Constants
static const quint32 OBJID = 3446368842U;
static const QString NAME;
static const bool ISSINGLEINST = 1;
static const bool ISSETTINGS = 1;
static const quint32 NUMBYTES = sizeof(DataFields);
// Functions
AttitudeSettings();
DataFields getData();
void setData(const DataFields& data);
Metadata getDefaultMetadata();
UAVDataObject* clone(quint32 instID);
static AttitudeSettings* GetInstance(UAVObjectManager* objMngr, quint32 instID = 0);
private:
DataFields data;
void setDefaultFieldValues();
};
#endif // ATTITUDESETTINGS_H

View File

@ -0,0 +1,86 @@
##
##############################################################################
#
# @file attitudesettings.py
# @author The OpenPilot Team, http://www.openpilot.org Copyright (C) 2010.
# @brief Implementation of the AttitudeSettings object. This file has been
# automatically generated by the UAVObjectGenerator.
#
# @note Object definition file: attitudesettings.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(
'UpdatePeriod',
'i',
1,
[
'0',
],
{
}
),
]
class AttitudeSettings(uavobject.UAVObject):
## Object constants
OBJID = 3446368842
NAME = "AttitudeSettings"
METANAME = "AttitudeSettingsMeta"
ISSINGLEINST = 1
ISSETTINGS = 1
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 = AttitudeSettings()
print (x)
if __name__ == "__main__":
#import pdb ; pdb.run('main()')
main()

View File

@ -12,6 +12,8 @@ HEADERS += uavobjects_global.h \
uavobjectsplugin.h \
examplesettings.h \
altitudeactual.h \
attitudeactual.h \
attitudesettings.h \
exampleobject2.h \
exampleobject1.h \
gpsobject.h \
@ -37,6 +39,8 @@ SOURCES += uavobject.cpp \
uavobjectsinit.cpp \
uavobjectsplugin.cpp \
altitudeactual.cpp \
attitudeactual.cpp \
attitudesettings.cpp \
examplesettings.cpp \
exampleobject2.cpp \
exampleobject1.cpp \

View File

@ -34,7 +34,9 @@
#include "actuatordesired.h"
#include "actuatorsettings.h"
#include "altitudeactual.h"
#include "attitudeactual.h"
#include "attitudedesired.h"
#include "attitudesettings.h"
#include "exampleobject1.h"
#include "exampleobject2.h"
#include "examplesettings.h"
@ -61,7 +63,9 @@ void UAVObjectsInitialize(UAVObjectManager* objMngr)
objMngr->registerObject( new ActuatorDesired() );
objMngr->registerObject( new ActuatorSettings() );
objMngr->registerObject( new AltitudeActual() );
objMngr->registerObject( new AttitudeActual() );
objMngr->registerObject( new AttitudeDesired() );
objMngr->registerObject( new AttitudeSettings() );
objMngr->registerObject( new ExampleObject1() );
objMngr->registerObject( new ExampleObject2() );
objMngr->registerObject( new ExampleSettings() );

View File

@ -0,0 +1,16 @@
<xml>
<object name="AttitudeActual" singleinstance="true" settings="false">
<field name="seq" units="none" type="uint32" elements="1"/>
<field name="q1" units="none" type="float" elements="1"/>
<field name="q2" units="none" type="float" elements="1"/>
<field name="q3" units="none" type="float" elements="1"/>
<field name="q4" units="none" type="float" elements="1"/>
<field name="ex" units="none" type="float" elements="1"/>
<field name="ey" units="none" type="float" elements="1"/>
<field name="ez" units="none" type="float" elements="1"/>
<access gcs="readwrite" flight="readwrite"/>
<telemetrygcs acked="true" updatemode="manual" period="0"/>
<telemetryflight acked="true" updatemode="periodic" period="1000"/>
<logging updatemode="never" period="0"/>
</object>
</xml>

View File

@ -0,0 +1,9 @@
<xml>
<object name="AttitudeSettings" singleinstance="true" settings="true">
<field name="UpdatePeriod" units="ms" type="int32" elements="1" defaultvalue="500"/>
<access gcs="readwrite" flight="readwrite"/>
<telemetrygcs acked="true" updatemode="onchange" period="0"/>
<telemetryflight acked="true" updatemode="onchange" period="0"/>
<logging updatemode="never" period="0"/>
</object>
</xml>