1
0
mirror of https://bitbucket.org/librepilot/librepilot.git synced 2025-02-20 10:54:14 +01:00

Update to SystemAlarms UAVObject.

Added:
Battery
Flight Time
I2C
GPS
Also added new alarm state of "Uninitialised"

no code to set these alarms yet.

As this changes UAVObjects both flight and GCS software will need to be recompiled to stay in sync.

git-svn-id: svn://svn.openpilot.org/OpenPilot/trunk@2294 ebee16cc-31ac-478f-84a7-5cbb03baadba
This commit is contained in:
andrew 2010-12-27 07:25:52 +00:00 committed by andrew
parent bd5316eda0
commit 39cb30d56f
7 changed files with 63 additions and 19 deletions

View File

@ -41,7 +41,7 @@
#define SYSTEMALARMS_H
// Object constants
#define SYSTEMALARMS_OBJID 2311311584U
#define SYSTEMALARMS_OBJID 2311314672U
#define SYSTEMALARMS_NAME "SystemAlarms"
#define SYSTEMALARMS_METANAME "SystemAlarmsMeta"
#define SYSTEMALARMS_ISSINGLEINST 1
@ -71,18 +71,18 @@
// Object data
typedef struct {
uint8_t Alarm[10];
uint8_t Alarm[14];
} __attribute__((packed)) SystemAlarmsData;
// Field information
// Field Alarm information
/* Enumeration options for field Alarm */
typedef enum { SYSTEMALARMS_ALARM_OK=0, SYSTEMALARMS_ALARM_WARNING=1, SYSTEMALARMS_ALARM_ERROR=2, SYSTEMALARMS_ALARM_CRITICAL=3 } SystemAlarmsAlarmOptions;
typedef enum { SYSTEMALARMS_ALARM_OK=0, SYSTEMALARMS_ALARM_WARNING=1, SYSTEMALARMS_ALARM_ERROR=2, SYSTEMALARMS_ALARM_CRITICAL=3, SYSTEMALARMS_ALARM_UNINITIALISED=4 } SystemAlarmsAlarmOptions;
/* Array element names for field Alarm */
typedef enum { SYSTEMALARMS_ALARM_OUTOFMEMORY=0, SYSTEMALARMS_ALARM_STACKOVERFLOW=1, SYSTEMALARMS_ALARM_CPUOVERLOAD=2, SYSTEMALARMS_ALARM_EVENTSYSTEM=3, SYSTEMALARMS_ALARM_SDCARD=4, SYSTEMALARMS_ALARM_TELEMETRY=5, SYSTEMALARMS_ALARM_MANUALCONTROL=6, SYSTEMALARMS_ALARM_ACTUATOR=7, SYSTEMALARMS_ALARM_STABILIZATION=8, SYSTEMALARMS_ALARM_AHRSCOMMS=9 } SystemAlarmsAlarmElem;
typedef enum { SYSTEMALARMS_ALARM_OUTOFMEMORY=0, SYSTEMALARMS_ALARM_STACKOVERFLOW=1, SYSTEMALARMS_ALARM_CPUOVERLOAD=2, SYSTEMALARMS_ALARM_EVENTSYSTEM=3, SYSTEMALARMS_ALARM_SDCARD=4, SYSTEMALARMS_ALARM_TELEMETRY=5, SYSTEMALARMS_ALARM_MANUALCONTROL=6, SYSTEMALARMS_ALARM_ACTUATOR=7, SYSTEMALARMS_ALARM_STABILIZATION=8, SYSTEMALARMS_ALARM_AHRSCOMMS=9, SYSTEMALARMS_ALARM_BATTERY=10, SYSTEMALARMS_ALARM_FLIGHTTIME=11, SYSTEMALARMS_ALARM_I2C=12, SYSTEMALARMS_ALARM_GPS=13 } SystemAlarmsAlarmElem;
/* Number of elements for field Alarm */
#define SYSTEMALARMS_ALARM_NUMELEM 10
#define SYSTEMALARMS_ALARM_NUMELEM 14
// Generic interface functions

View File

@ -80,6 +80,20 @@ static void setDefaults(UAVObjHandle obj, uint16_t instId)
// Initialize object fields to their default values
UAVObjGetInstanceData(obj, instId, &data);
memset(&data, 0, sizeof(SystemAlarmsData));
data.Alarm[0] = 4;
data.Alarm[1] = 4;
data.Alarm[2] = 4;
data.Alarm[3] = 4;
data.Alarm[4] = 4;
data.Alarm[5] = 4;
data.Alarm[6] = 4;
data.Alarm[7] = 4;
data.Alarm[8] = 4;
data.Alarm[9] = 4;
data.Alarm[10] = 4;
data.Alarm[11] = 4;
data.Alarm[12] = 4;
data.Alarm[13] = 4;
UAVObjSetInstanceData(obj, instId, &data);

View File

@ -300,12 +300,15 @@ function [] = OPLogConvert()
PipXtremeModemSettings(1).Frequency = 0;
PipXtremeModemSettings(1).Max_RF_Bandwidth = 0;
PipXtremeModemSettings(1).Max_Tx_Power = 0;
PipXtremeModemSettings(1).Tx_Data_Wait = 0;
PipXtremeModemSettings(1).AES_Encryption = 0;
PipXtremeModemSettings(1).AES_EncryptionKey = zeros(1,16);
PipXtremeModemSettings(1).Paired_Serial_Number = 0;
pipxtrememodemstatusIdx = 1;
PipXtremeModemStatus.timestamp = 0;
PipXtremeModemStatus(1).Firmware_Version_Major = 0;
PipXtremeModemStatus(1).Firmware_Version_Minor = 0;
PipXtremeModemStatus(1).Serial_Number = 0;
PipXtremeModemStatus(1).Up_Time = 0;
PipXtremeModemStatus(1).Frequency = 0;
@ -350,7 +353,7 @@ function [] = OPLogConvert()
systemalarmsIdx = 1;
SystemAlarms.timestamp = 0;
SystemAlarms(1).Alarm = zeros(1,10);
SystemAlarms(1).Alarm = zeros(1,14);
systemsettingsIdx = 1;
SystemSettings.timestamp = 0;
@ -488,10 +491,10 @@ function [] = OPLogConvert()
case 572614706
ObjectPersistence(objectpersistenceIdx) = ReadObjectPersistenceObject(fid, timestamp);
objectpersistenceIdx = objectpersistenceIdx + 1;
case 3822692478
case 444830632
PipXtremeModemSettings(pipxtrememodemsettingsIdx) = ReadPipXtremeModemSettingsObject(fid, timestamp);
pipxtrememodemsettingsIdx = pipxtrememodemsettingsIdx + 1;
case 539085060
case 2490854928
PipXtremeModemStatus(pipxtrememodemstatusIdx) = ReadPipXtremeModemStatusObject(fid, timestamp);
pipxtrememodemstatusIdx = pipxtrememodemstatusIdx + 1;
case 3765671478
@ -506,7 +509,7 @@ function [] = OPLogConvert()
case 3792991236
StabilizationSettings(stabilizationsettingsIdx) = ReadStabilizationSettingsObject(fid, timestamp);
stabilizationsettingsIdx = stabilizationsettingsIdx + 1;
case 2311311584
case 2311314672
SystemAlarms(systemalarmsIdx) = ReadSystemAlarmsObject(fid, timestamp);
systemalarmsIdx = systemalarmsIdx + 1;
case 59202798
@ -1099,6 +1102,7 @@ function [PipXtremeModemSettings] = ReadPipXtremeModemSettingsObject(fid, timest
PipXtremeModemSettings.Frequency = double(fread(fid, 1, 'uint32'));
PipXtremeModemSettings.Max_RF_Bandwidth = double(fread(fid, 1, 'uint8'));
PipXtremeModemSettings.Max_Tx_Power = double(fread(fid, 1, 'uint8'));
PipXtremeModemSettings.Tx_Data_Wait = double(fread(fid, 1, 'uint8'));
PipXtremeModemSettings.AES_Encryption = double(fread(fid, 1, 'uint8'));
PipXtremeModemSettings.AES_EncryptionKey = double(fread(fid, 16, 'uint8'));
PipXtremeModemSettings.Paired_Serial_Number = double(fread(fid, 1, 'uint32'));
@ -1115,6 +1119,8 @@ function [PipXtremeModemStatus] = ReadPipXtremeModemStatusObject(fid, timestamp)
end
PipXtremeModemStatus.timestamp = timestamp;
PipXtremeModemStatus.Firmware_Version_Major = double(fread(fid, 1, 'uint8'));
PipXtremeModemStatus.Firmware_Version_Minor = double(fread(fid, 1, 'uint8'));
PipXtremeModemStatus.Serial_Number = double(fread(fid, 1, 'uint32'));
PipXtremeModemStatus.Up_Time = double(fread(fid, 1, 'uint32'));
PipXtremeModemStatus.Frequency = double(fread(fid, 1, 'uint32'));
@ -1209,7 +1215,7 @@ function [SystemAlarms] = ReadSystemAlarmsObject(fid, timestamp)
end
SystemAlarms.timestamp = timestamp;
SystemAlarms.Alarm = double(fread(fid, 10, 'uint8'));
SystemAlarms.Alarm = double(fread(fid, 14, 'uint8'));
% read CRC
fread(fid, 1, 'uint8');
end

View File

@ -54,11 +54,16 @@ SystemAlarms::SystemAlarms(): UAVDataObject(OBJID, ISSINGLEINST, ISSETTINGS, NAM
AlarmElemNames.append("Actuator");
AlarmElemNames.append("Stabilization");
AlarmElemNames.append("AHRSComms");
AlarmElemNames.append("Battery");
AlarmElemNames.append("FlightTime");
AlarmElemNames.append("I2C");
AlarmElemNames.append("GPS");
QStringList AlarmEnumOptions;
AlarmEnumOptions.append("OK");
AlarmEnumOptions.append("Warning");
AlarmEnumOptions.append("Error");
AlarmEnumOptions.append("Critical");
AlarmEnumOptions.append("Uninitialised");
fields.append( new UAVObjectField(QString("Alarm"), QString(""), UAVObjectField::ENUM, AlarmElemNames, AlarmEnumOptions) );
// Initialize object
@ -95,6 +100,20 @@ UAVObject::Metadata SystemAlarms::getDefaultMetadata()
*/
void SystemAlarms::setDefaultFieldValues()
{
data.Alarm[0] = 4;
data.Alarm[1] = 4;
data.Alarm[2] = 4;
data.Alarm[3] = 4;
data.Alarm[4] = 4;
data.Alarm[5] = 4;
data.Alarm[6] = 4;
data.Alarm[7] = 4;
data.Alarm[8] = 4;
data.Alarm[9] = 4;
data.Alarm[10] = 4;
data.Alarm[11] = 4;
data.Alarm[12] = 4;
data.Alarm[13] = 4;
}

View File

@ -43,22 +43,22 @@ class UAVOBJECTS_EXPORT SystemAlarms: public UAVDataObject
public:
// Field structure
typedef struct {
quint8 Alarm[10];
quint8 Alarm[14];
} __attribute__((packed)) DataFields;
// Field information
// Field Alarm information
/* Enumeration options for field Alarm */
typedef enum { ALARM_OK=0, ALARM_WARNING=1, ALARM_ERROR=2, ALARM_CRITICAL=3 } AlarmOptions;
typedef enum { ALARM_OK=0, ALARM_WARNING=1, ALARM_ERROR=2, ALARM_CRITICAL=3, ALARM_UNINITIALISED=4 } AlarmOptions;
/* Array element names for field Alarm */
typedef enum { ALARM_OUTOFMEMORY=0, ALARM_STACKOVERFLOW=1, ALARM_CPUOVERLOAD=2, ALARM_EVENTSYSTEM=3, ALARM_SDCARD=4, ALARM_TELEMETRY=5, ALARM_MANUALCONTROL=6, ALARM_ACTUATOR=7, ALARM_STABILIZATION=8, ALARM_AHRSCOMMS=9 } AlarmElem;
typedef enum { ALARM_OUTOFMEMORY=0, ALARM_STACKOVERFLOW=1, ALARM_CPUOVERLOAD=2, ALARM_EVENTSYSTEM=3, ALARM_SDCARD=4, ALARM_TELEMETRY=5, ALARM_MANUALCONTROL=6, ALARM_ACTUATOR=7, ALARM_STABILIZATION=8, ALARM_AHRSCOMMS=9, ALARM_BATTERY=10, ALARM_FLIGHTTIME=11, ALARM_I2C=12, ALARM_GPS=13 } AlarmElem;
/* Number of elements for field Alarm */
static const quint32 ALARM_NUMELEM = 10;
static const quint32 ALARM_NUMELEM = 14;
// Constants
static const quint32 OBJID = 2311311584U;
static const quint32 OBJID = 2311314672U;
static const QString NAME;
static const QString DESCRIPTION;
static const bool ISSINGLEINST = 1;

View File

@ -40,7 +40,7 @@ _fields = [ \
uavobject.UAVObjectField(
'Alarm',
'b',
10,
14,
[
'OutOfMemory',
'StackOverflow',
@ -52,12 +52,17 @@ _fields = [ \
'Actuator',
'Stabilization',
'AHRSComms',
'Battery',
'FlightTime',
'I2C',
'GPS',
],
{
'0' : 'OK',
'1' : 'Warning',
'2' : 'Error',
'3' : 'Critical',
'4' : 'Uninitialised',
}
),
]
@ -65,7 +70,7 @@ _fields = [ \
class SystemAlarms(uavobject.UAVObject):
## Object constants
OBJID = 2311311584
OBJID = 2311314672
NAME = "SystemAlarms"
METANAME = "SystemAlarmsMeta"
ISSINGLEINST = 1

View File

@ -1,8 +1,8 @@
<xml>
<object name="SystemAlarms" singleinstance="true" settings="false">
<description>Alarms from OpenPilot to indicate failure conditions or warnings. Set by various modules.</description>
<field name="Alarm" units="" type="enum" options="OK,Warning,Error,Critical"
elementnames="OutOfMemory,StackOverflow,CPUOverload,EventSystem,SDCard,Telemetry,ManualControl,Actuator,Stabilization,AHRSComms"/>
<field name="Alarm" units="" type="enum" options="OK,Warning,Error,Critical,Uninitialised"
elementnames="OutOfMemory,StackOverflow,CPUOverload,EventSystem,SDCard,Telemetry,ManualControl,Actuator,Stabilization,AHRSComms,Battery,FlightTime,I2C,GPS" defaultvalue="Uninitialised"/>
<access gcs="readwrite" flight="readwrite"/>
<telemetrygcs acked="true" updatemode="onchange" period="0"/>
<telemetryflight acked="true" updatemode="periodic" period="4000"/>