mirror of
https://bitbucket.org/librepilot/librepilot.git
synced 2024-12-01 09:24:10 +01:00
OP-4 Flight/System Created CPU utilization measurement and created object to report system information (load, heap and time)
git-svn-id: svn://svn.openpilot.org/OpenPilot/trunk@519 ebee16cc-31ac-478f-84a7-5cbb03baadba
This commit is contained in:
parent
ed48dc25de
commit
40beb15129
@ -127,6 +127,7 @@ SRC += $(OPUAVOBJ)/eventdispatcher.c
|
|||||||
#SRC += $(OPTESTS)/test_I2c_PCF8570.c
|
#SRC += $(OPTESTS)/test_I2c_PCF8570.c
|
||||||
#SRC += $(OPTESTS)/test_BMP085.c
|
#SRC += $(OPTESTS)/test_BMP085.c
|
||||||
#SRC += $(OPTESTS)/test_uavobjects.c
|
#SRC += $(OPTESTS)/test_uavobjects.c
|
||||||
|
#SRC += $(OPTESTS)/test_cpuload.c
|
||||||
|
|
||||||
|
|
||||||
## UAVOBJECTS
|
## UAVOBJECTS
|
||||||
@ -137,6 +138,8 @@ SRC += $(OPUAVOBJ)/settingspersistence.c
|
|||||||
SRC += $(OPUAVOBJ)/gpsobject.c
|
SRC += $(OPUAVOBJ)/gpsobject.c
|
||||||
SRC += $(OPUAVOBJ)/gcstelemetrystats.c
|
SRC += $(OPUAVOBJ)/gcstelemetrystats.c
|
||||||
SRC += $(OPUAVOBJ)/flighttelemetrystats.c
|
SRC += $(OPUAVOBJ)/flighttelemetrystats.c
|
||||||
|
SRC += $(OPUAVOBJ)/systemstats.c
|
||||||
|
SRC += $(OPUAVOBJ)/systemalarms.c
|
||||||
|
|
||||||
## PIOS Hardware (STM32F10x)
|
## PIOS Hardware (STM32F10x)
|
||||||
SRC += $(PIOSSTM32F10X)/pios_sys.c
|
SRC += $(PIOSSTM32F10X)/pios_sys.c
|
||||||
|
@ -73,7 +73,7 @@ char NmeaPacket[NMEA_BUFFERSIZE];
|
|||||||
// Private constants
|
// Private constants
|
||||||
//#define MAX_QUEUE_SIZE 20
|
//#define MAX_QUEUE_SIZE 20
|
||||||
#define STACK_SIZE configMINIMAL_STACK_SIZE
|
#define STACK_SIZE configMINIMAL_STACK_SIZE
|
||||||
#define TASK_PRIORITY (tskIDLE_PRIORITY + 10)
|
#define TASK_PRIORITY (tskIDLE_PRIORITY + 3)
|
||||||
//#define REQ_TIMEOUT_MS 500
|
//#define REQ_TIMEOUT_MS 500
|
||||||
//#define MAX_RETRIES 3
|
//#define MAX_RETRIES 3
|
||||||
|
|
||||||
|
@ -26,15 +26,24 @@
|
|||||||
|
|
||||||
#include "systemmod.h"
|
#include "systemmod.h"
|
||||||
#include "settingspersistence.h"
|
#include "settingspersistence.h"
|
||||||
|
#include "systemstats.h"
|
||||||
|
|
||||||
// Private constants
|
// Private constants
|
||||||
|
#define STATS_UPDATE_PERIOD_MS 1000
|
||||||
|
#define IDLE_COUNTS_PER_SEC_AT_NO_LOAD 995998 // calibrated by running tests/test_cpuload.c
|
||||||
|
// must be updated if the FreeRTOS or compiler
|
||||||
|
// optimisation options are changed.
|
||||||
|
|
||||||
// Private types
|
// Private types
|
||||||
|
|
||||||
// Private variables
|
// Private variables
|
||||||
|
static uint32_t idleCounter;
|
||||||
|
static uint32_t idleCounterClear;
|
||||||
|
static xSemaphoreHandle mutex;
|
||||||
|
|
||||||
// Private functions
|
// Private functions
|
||||||
static void ObjectUpdatedCb(UAVObjEvent* ev);
|
static void ObjectUpdatedCb(UAVObjEvent* ev);
|
||||||
|
static void StatsUpdateCb(UAVObjEvent* ev);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Initialise the module, called on startup.
|
* Initialise the module, called on startup.
|
||||||
@ -42,9 +51,20 @@ static void ObjectUpdatedCb(UAVObjEvent* ev);
|
|||||||
*/
|
*/
|
||||||
int32_t SystemModInitialize(void)
|
int32_t SystemModInitialize(void)
|
||||||
{
|
{
|
||||||
|
UAVObjEvent ev;
|
||||||
|
|
||||||
|
// Create the mutex
|
||||||
|
mutex = xSemaphoreCreateRecursiveMutex();
|
||||||
|
|
||||||
// Listen for ExampleObject1 updates, connect a callback function
|
// Listen for ExampleObject1 updates, connect a callback function
|
||||||
SettingsPersistenceConnectCallback(&ObjectUpdatedCb);
|
SettingsPersistenceConnectCallback(&ObjectUpdatedCb);
|
||||||
|
|
||||||
|
// Create periodic event that will be used to update the system stats
|
||||||
|
idleCounter = 0;
|
||||||
|
idleCounterClear = 0;
|
||||||
|
memset(&ev, 0, sizeof(UAVObjEvent));
|
||||||
|
EventPeriodicCallbackCreate(&ev, StatsUpdateCb, STATS_UPDATE_PERIOD_MS);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -73,4 +93,36 @@ static void ObjectUpdatedCb(UAVObjEvent* ev)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Called periodically to update the system stats
|
||||||
|
*/
|
||||||
|
static void StatsUpdateCb(UAVObjEvent* ev)
|
||||||
|
{
|
||||||
|
SystemStatsData stats;
|
||||||
|
|
||||||
|
// Get stats and update
|
||||||
|
SystemStatsGet(&stats);
|
||||||
|
stats.FlightTime = xTaskGetTickCount()*portTICK_RATE_MS;
|
||||||
|
stats.HeapRemaining = xPortGetFreeHeapSize();
|
||||||
|
stats.CPULoad = 100 - (uint8_t)round(100.0*((float)idleCounter/(float)(STATS_UPDATE_PERIOD_MS/1000))/(float)IDLE_COUNTS_PER_SEC_AT_NO_LOAD);
|
||||||
|
idleCounterClear = 1;
|
||||||
|
SystemStatsSet(&stats);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Called by the RTOS when the CPU is idle, used to measure the CPU idle time.
|
||||||
|
*/
|
||||||
|
void vApplicationIdleHook(void)
|
||||||
|
{
|
||||||
|
// Called when the scheduler has no tasks to run
|
||||||
|
if (idleCounterClear == 0)
|
||||||
|
{
|
||||||
|
++idleCounter;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
idleCounter = 0;
|
||||||
|
idleCounterClear = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@ -283,6 +283,8 @@ static void telemetryRxTask(void* parameters)
|
|||||||
//PIOS_LED_Toggle(LED1);
|
//PIOS_LED_Toggle(LED1);
|
||||||
UAVTalkProcessInputStream(PIOS_COM_ReceiveBuffer(inputPort));
|
UAVTalkProcessInputStream(PIOS_COM_ReceiveBuffer(inputPort));
|
||||||
}
|
}
|
||||||
|
vTaskDelay(1); // <- remove when blocking calls are implemented
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -322,12 +322,4 @@ static void TaskSDCard(void *pvParameters)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Idle hook function
|
|
||||||
*/
|
|
||||||
void vApplicationIdleHook(void)
|
|
||||||
{
|
|
||||||
/* Called when the scheduler has no tasks to run */
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
|
89
flight/OpenPilot/Tests/test_cpuload.c
Normal file
89
flight/OpenPilot/Tests/test_cpuload.c
Normal file
@ -0,0 +1,89 @@
|
|||||||
|
/**
|
||||||
|
******************************************************************************
|
||||||
|
*
|
||||||
|
* @file test_cpuload.c
|
||||||
|
* @author The OpenPilot Team, http://www.openpilot.org Copyright (C) 2010.
|
||||||
|
* @brief Calibration for the CPU load calculation
|
||||||
|
* @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
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This file is used to calculate the number of counts we get when
|
||||||
|
* the CPU is fully idle (no load). This is used by systemmod.c to
|
||||||
|
* calculate the CPU load. This calibration should be run whenever
|
||||||
|
* changes are made in the FreeRTOS configuration or on the compiler
|
||||||
|
* optimisation parameters.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "openpilot.h"
|
||||||
|
|
||||||
|
// Local constants
|
||||||
|
#define BENCHMARK_DURATION_MS 10000
|
||||||
|
|
||||||
|
// Local functions
|
||||||
|
static void testTask(void *pvParameters);
|
||||||
|
|
||||||
|
// Variables
|
||||||
|
static uint32_t idleCounter = 0;
|
||||||
|
static uint32_t idleCounterClear = 0;
|
||||||
|
|
||||||
|
int main()
|
||||||
|
{
|
||||||
|
PIOS_SYS_Init();
|
||||||
|
|
||||||
|
// Create test task
|
||||||
|
xTaskCreate(testTask, (signed portCHAR *)"Test", 1000 , NULL, 1, NULL);
|
||||||
|
|
||||||
|
// Start the FreeRTOS scheduler
|
||||||
|
vTaskStartScheduler();
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
static void testTask(void *pvParameters)
|
||||||
|
{
|
||||||
|
uint32_t countsPerSecond = 0;
|
||||||
|
|
||||||
|
while (1)
|
||||||
|
{
|
||||||
|
// Delay until enough required test duration
|
||||||
|
vTaskDelay( BENCHMARK_DURATION_MS / portTICK_RATE_MS );
|
||||||
|
|
||||||
|
// Calculate counts per second, set breakpoint here
|
||||||
|
countsPerSecond = idleCounter / (BENCHMARK_DURATION_MS/1000);
|
||||||
|
|
||||||
|
// Reset and start again - do not clear idleCounter directly!
|
||||||
|
// SET BREAKPOINT HERE and read the countsPerSecond variable
|
||||||
|
// this should be used to update IDLE_COUNTS_PER_SEC_AT_NO_LOAD in systemmod.c
|
||||||
|
idleCounterClear = 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void vApplicationIdleHook(void)
|
||||||
|
{
|
||||||
|
/* Called when the scheduler has no tasks to run */
|
||||||
|
if (idleCounterClear == 0)
|
||||||
|
{
|
||||||
|
++idleCounter;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
idleCounter = 0;
|
||||||
|
idleCounterClear = 0;
|
||||||
|
}
|
||||||
|
}
|
78
flight/OpenPilot/UAVObjects/inc/systemalarms.h
Normal file
78
flight/OpenPilot/UAVObjects/inc/systemalarms.h
Normal file
@ -0,0 +1,78 @@
|
|||||||
|
/**
|
||||||
|
******************************************************************************
|
||||||
|
*
|
||||||
|
* @file systemalarms.h
|
||||||
|
* @author The OpenPilot Team, http://www.openpilot.org Copyright (C) 2010.
|
||||||
|
* @brief Implementation of the SystemAlarms object. This file has been
|
||||||
|
* automatically generated by the UAVObjectGenerator.
|
||||||
|
*
|
||||||
|
* @note Object definition file: systemalarms.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 SYSTEMALARMS_H
|
||||||
|
#define SYSTEMALARMS_H
|
||||||
|
|
||||||
|
#include "openpilot.h"
|
||||||
|
|
||||||
|
// Object constants
|
||||||
|
#define SYSTEMALARMS_OBJID 1784134234U
|
||||||
|
#define SYSTEMALARMS_NAME "SystemAlarms"
|
||||||
|
#define SYSTEMALARMS_ISSINGLEINST 1
|
||||||
|
#define SYSTEMALARMS_ISSETTINGS 0
|
||||||
|
#define SYSTEMALARMS_NUMBYTES sizeof(SystemAlarmsData)
|
||||||
|
|
||||||
|
// Object access macros
|
||||||
|
#define SystemAlarmsGet(dataOut) UAVObjGetData(SystemAlarmsHandle(), dataOut)
|
||||||
|
#define SystemAlarmsSet(dataIn) UAVObjSetData(SystemAlarmsHandle(), dataIn)
|
||||||
|
#define SystemAlarmsInstGet(instId, dataOut) UAVObjGetInstanceData(SystemAlarmsHandle(), instId, dataOut)
|
||||||
|
#define SystemAlarmsInstSet(instId, dataIn) UAVObjSetInstanceData(SystemAlarmsHandle(), instId, dataIn)
|
||||||
|
#define SystemAlarmsConnectQueue(queue) UAVObjConnectQueue(SystemAlarmsHandle(), queue, EV_MASK_ALL_UPDATES)
|
||||||
|
#define SystemAlarmsConnectCallback(cb) UAVObjConnectCallback(SystemAlarmsHandle(), cb, EV_MASK_ALL_UPDATES)
|
||||||
|
#define SystemAlarmsCreateInstance() UAVObjCreateInstance(SystemAlarmsHandle())
|
||||||
|
#define SystemAlarmsRequestUpdate() UAVObjRequestUpdate(SystemAlarmsHandle())
|
||||||
|
#define SystemAlarmsRequestInstUpdate(instId) UAVObjRequestInstanceUpdate(SystemAlarmsHandle(), instId)
|
||||||
|
#define SystemAlarmsUpdated() UAVObjUpdated(SystemAlarmsHandle())
|
||||||
|
#define SystemAlarmsInstUpdated(instId) UAVObjUpdated(SystemAlarmsHandle(), instId)
|
||||||
|
#define SystemAlarmsGetMetadata(dataOut) UAVObjGetMetadata(SystemAlarmsHandle(), dataOut)
|
||||||
|
#define SystemAlarmsSetMetadata(dataIn) UAVObjSetMetadata(SystemAlarmsHandle(), dataIn)
|
||||||
|
|
||||||
|
// Object data
|
||||||
|
typedef struct {
|
||||||
|
uint8_t Type;
|
||||||
|
uint8_t Severity;
|
||||||
|
uint8_t Active;
|
||||||
|
uint32_t Info;
|
||||||
|
|
||||||
|
} __attribute__((packed)) SystemAlarmsData;
|
||||||
|
|
||||||
|
// Enumeration types
|
||||||
|
typedef enum { SYSTEMALARMS_TYPE_NONE=0, SYSTEMALARMS_TYPE_STACKOVERFLOW=1, SYSTEMALARMS_TYPE_OUTOFMEMORY=2, } SYSTEMALARMSTYPEEnum;
|
||||||
|
typedef enum { SYSTEMALARMS_SEVERITY_INFO=0, SYSTEMALARMS_SEVERITY_WARNING=1, SYSTEMALARMS_SEVERITY_ERROR=2, SYSTEMALARMS_SEVERITY_CRITICAL=3, } SYSTEMALARMSSEVERITYEnum;
|
||||||
|
typedef enum { SYSTEMALARMS_ACTIVE_TRUE=0, SYSTEMALARMS_ACTIVE_FALSE=1, } SYSTEMALARMSACTIVEEnum;
|
||||||
|
|
||||||
|
|
||||||
|
// Generic interface functions
|
||||||
|
int32_t SystemAlarmsInitialize();
|
||||||
|
UAVObjHandle SystemAlarmsHandle();
|
||||||
|
|
||||||
|
#endif // SYSTEMALARMS_H
|
74
flight/OpenPilot/UAVObjects/inc/systemstats.h
Normal file
74
flight/OpenPilot/UAVObjects/inc/systemstats.h
Normal file
@ -0,0 +1,74 @@
|
|||||||
|
/**
|
||||||
|
******************************************************************************
|
||||||
|
*
|
||||||
|
* @file systemstats.h
|
||||||
|
* @author The OpenPilot Team, http://www.openpilot.org Copyright (C) 2010.
|
||||||
|
* @brief Implementation of the SystemStats object. This file has been
|
||||||
|
* automatically generated by the UAVObjectGenerator.
|
||||||
|
*
|
||||||
|
* @note Object definition file: systemstats.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 SYSTEMSTATS_H
|
||||||
|
#define SYSTEMSTATS_H
|
||||||
|
|
||||||
|
#include "openpilot.h"
|
||||||
|
|
||||||
|
// Object constants
|
||||||
|
#define SYSTEMSTATS_OBJID 680908530U
|
||||||
|
#define SYSTEMSTATS_NAME "SystemStats"
|
||||||
|
#define SYSTEMSTATS_ISSINGLEINST 1
|
||||||
|
#define SYSTEMSTATS_ISSETTINGS 0
|
||||||
|
#define SYSTEMSTATS_NUMBYTES sizeof(SystemStatsData)
|
||||||
|
|
||||||
|
// Object access macros
|
||||||
|
#define SystemStatsGet(dataOut) UAVObjGetData(SystemStatsHandle(), dataOut)
|
||||||
|
#define SystemStatsSet(dataIn) UAVObjSetData(SystemStatsHandle(), dataIn)
|
||||||
|
#define SystemStatsInstGet(instId, dataOut) UAVObjGetInstanceData(SystemStatsHandle(), instId, dataOut)
|
||||||
|
#define SystemStatsInstSet(instId, dataIn) UAVObjSetInstanceData(SystemStatsHandle(), instId, dataIn)
|
||||||
|
#define SystemStatsConnectQueue(queue) UAVObjConnectQueue(SystemStatsHandle(), queue, EV_MASK_ALL_UPDATES)
|
||||||
|
#define SystemStatsConnectCallback(cb) UAVObjConnectCallback(SystemStatsHandle(), cb, EV_MASK_ALL_UPDATES)
|
||||||
|
#define SystemStatsCreateInstance() UAVObjCreateInstance(SystemStatsHandle())
|
||||||
|
#define SystemStatsRequestUpdate() UAVObjRequestUpdate(SystemStatsHandle())
|
||||||
|
#define SystemStatsRequestInstUpdate(instId) UAVObjRequestInstanceUpdate(SystemStatsHandle(), instId)
|
||||||
|
#define SystemStatsUpdated() UAVObjUpdated(SystemStatsHandle())
|
||||||
|
#define SystemStatsInstUpdated(instId) UAVObjUpdated(SystemStatsHandle(), instId)
|
||||||
|
#define SystemStatsGetMetadata(dataOut) UAVObjGetMetadata(SystemStatsHandle(), dataOut)
|
||||||
|
#define SystemStatsSetMetadata(dataIn) UAVObjSetMetadata(SystemStatsHandle(), dataIn)
|
||||||
|
|
||||||
|
// Object data
|
||||||
|
typedef struct {
|
||||||
|
uint32_t FlightTime;
|
||||||
|
uint16_t HeapRemaining;
|
||||||
|
uint8_t CPULoad;
|
||||||
|
|
||||||
|
} __attribute__((packed)) SystemStatsData;
|
||||||
|
|
||||||
|
// Enumeration types
|
||||||
|
|
||||||
|
|
||||||
|
// Generic interface functions
|
||||||
|
int32_t SystemStatsInitialize();
|
||||||
|
UAVObjHandle SystemStatsHandle();
|
||||||
|
|
||||||
|
#endif // SYSTEMSTATS_H
|
73
flight/OpenPilot/UAVObjects/systemalarms.c
Normal file
73
flight/OpenPilot/UAVObjects/systemalarms.c
Normal file
@ -0,0 +1,73 @@
|
|||||||
|
/**
|
||||||
|
******************************************************************************
|
||||||
|
*
|
||||||
|
* @file systemalarms.c
|
||||||
|
* @author The OpenPilot Team, http://www.openpilot.org Copyright (C) 2010.
|
||||||
|
* @brief Implementation of the SystemAlarms object. This file has been
|
||||||
|
* automatically generated by the UAVObjectGenerator.
|
||||||
|
*
|
||||||
|
* @note Object definition file: systemalarms.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 "systemalarms.h"
|
||||||
|
|
||||||
|
// Private variables
|
||||||
|
static UAVObjHandle handle;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Initialize object.
|
||||||
|
* \return 0 Success
|
||||||
|
* \return -1 Failure
|
||||||
|
*/
|
||||||
|
int32_t SystemAlarmsInitialize()
|
||||||
|
{
|
||||||
|
UAVObjMetadata metadata;
|
||||||
|
|
||||||
|
// Register object with the object manager
|
||||||
|
handle = UAVObjRegister(SYSTEMALARMS_OBJID, SYSTEMALARMS_NAME, 0, SYSTEMALARMS_ISSINGLEINST, SYSTEMALARMS_ISSETTINGS, SYSTEMALARMS_NUMBYTES);
|
||||||
|
if (handle == 0) return -1;
|
||||||
|
|
||||||
|
// Initialize metadata
|
||||||
|
metadata.telemetryAcked = 1;
|
||||||
|
metadata.telemetryUpdateMode = UPDATEMODE_ONCHANGE;
|
||||||
|
metadata.telemetryUpdatePeriod = 0;
|
||||||
|
metadata.gcsTelemetryAcked = 1;
|
||||||
|
metadata.gcsTelemetryUpdateMode = UPDATEMODE_ONCHANGE;
|
||||||
|
metadata.gcsTelemetryUpdatePeriod = 0;
|
||||||
|
metadata.loggingUpdateMode = UPDATEMODE_ONCHANGE;
|
||||||
|
metadata.loggingUpdatePeriod = 0;
|
||||||
|
UAVObjSetMetadata(handle, &metadata);
|
||||||
|
|
||||||
|
// Done
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get object handle
|
||||||
|
*/
|
||||||
|
UAVObjHandle SystemAlarmsHandle()
|
||||||
|
{
|
||||||
|
return handle;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
73
flight/OpenPilot/UAVObjects/systemstats.c
Normal file
73
flight/OpenPilot/UAVObjects/systemstats.c
Normal file
@ -0,0 +1,73 @@
|
|||||||
|
/**
|
||||||
|
******************************************************************************
|
||||||
|
*
|
||||||
|
* @file systemstats.c
|
||||||
|
* @author The OpenPilot Team, http://www.openpilot.org Copyright (C) 2010.
|
||||||
|
* @brief Implementation of the SystemStats object. This file has been
|
||||||
|
* automatically generated by the UAVObjectGenerator.
|
||||||
|
*
|
||||||
|
* @note Object definition file: systemstats.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 "systemstats.h"
|
||||||
|
|
||||||
|
// Private variables
|
||||||
|
static UAVObjHandle handle;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Initialize object.
|
||||||
|
* \return 0 Success
|
||||||
|
* \return -1 Failure
|
||||||
|
*/
|
||||||
|
int32_t SystemStatsInitialize()
|
||||||
|
{
|
||||||
|
UAVObjMetadata metadata;
|
||||||
|
|
||||||
|
// Register object with the object manager
|
||||||
|
handle = UAVObjRegister(SYSTEMSTATS_OBJID, SYSTEMSTATS_NAME, 0, SYSTEMSTATS_ISSINGLEINST, SYSTEMSTATS_ISSETTINGS, SYSTEMSTATS_NUMBYTES);
|
||||||
|
if (handle == 0) return -1;
|
||||||
|
|
||||||
|
// Initialize metadata
|
||||||
|
metadata.telemetryAcked = 1;
|
||||||
|
metadata.telemetryUpdateMode = UPDATEMODE_PERIODIC;
|
||||||
|
metadata.telemetryUpdatePeriod = 1000;
|
||||||
|
metadata.gcsTelemetryAcked = 1;
|
||||||
|
metadata.gcsTelemetryUpdateMode = UPDATEMODE_NEVER;
|
||||||
|
metadata.gcsTelemetryUpdatePeriod = 0;
|
||||||
|
metadata.loggingUpdateMode = UPDATEMODE_PERIODIC;
|
||||||
|
metadata.loggingUpdatePeriod = 1000;
|
||||||
|
UAVObjSetMetadata(handle, &metadata);
|
||||||
|
|
||||||
|
// Done
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get object handle
|
||||||
|
*/
|
||||||
|
UAVObjHandle SystemStatsHandle()
|
||||||
|
{
|
||||||
|
return handle;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
@ -35,6 +35,8 @@
|
|||||||
#include "gcstelemetrystats.h"
|
#include "gcstelemetrystats.h"
|
||||||
#include "gpsobject.h"
|
#include "gpsobject.h"
|
||||||
#include "settingspersistence.h"
|
#include "settingspersistence.h"
|
||||||
|
#include "systemalarms.h"
|
||||||
|
#include "systemstats.h"
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -50,5 +52,7 @@ void UAVObjectsInitializeAll()
|
|||||||
GCSTelemetryStatsInitialize();
|
GCSTelemetryStatsInitialize();
|
||||||
GpsObjectInitialize();
|
GpsObjectInitialize();
|
||||||
SettingsPersistenceInitialize();
|
SettingsPersistenceInitialize();
|
||||||
|
SystemAlarmsInitialize();
|
||||||
|
SystemStatsInitialize();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -23,11 +23,11 @@
|
|||||||
#define configTICK_RATE_HZ ( ( portTickType ) 1000 )
|
#define configTICK_RATE_HZ ( ( portTickType ) 1000 )
|
||||||
#define configMAX_PRIORITIES ( ( unsigned portBASE_TYPE ) 5 )
|
#define configMAX_PRIORITIES ( ( unsigned portBASE_TYPE ) 5 )
|
||||||
#define configMINIMAL_STACK_SIZE ( ( unsigned short ) 256 )
|
#define configMINIMAL_STACK_SIZE ( ( unsigned short ) 256 )
|
||||||
#define configTOTAL_HEAP_SIZE ( ( size_t ) ( 20 * 1024 ) )
|
#define configTOTAL_HEAP_SIZE ( ( size_t ) ( 45 * 1024 ) )
|
||||||
#define configMAX_TASK_NAME_LEN ( 16 )
|
#define configMAX_TASK_NAME_LEN ( 16 )
|
||||||
#define configUSE_TRACE_FACILITY 0
|
#define configUSE_TRACE_FACILITY 0
|
||||||
#define configUSE_16_BIT_TICKS 0
|
#define configUSE_16_BIT_TICKS 0
|
||||||
#define configIDLE_SHOULD_YIELD 1
|
#define configIDLE_SHOULD_YIELD 0
|
||||||
#define configUSE_MUTEXES 1
|
#define configUSE_MUTEXES 1
|
||||||
#define configUSE_RECURSIVE_MUTEXES 1
|
#define configUSE_RECURSIVE_MUTEXES 1
|
||||||
#define configUSE_COUNTING_SEMAPHORES 0
|
#define configUSE_COUNTING_SEMAPHORES 0
|
||||||
|
Loading…
Reference in New Issue
Block a user