Skip to content

Commit

Permalink
[modules] add min/max periodic time to sys_mon
Browse files Browse the repository at this point in the history
  • Loading branch information
flixr committed Aug 23, 2013
1 parent 8817bd5 commit 3bf713a
Show file tree
Hide file tree
Showing 3 changed files with 30 additions and 12 deletions.
2 changes: 2 additions & 0 deletions conf/messages.xml
Expand Up @@ -255,6 +255,8 @@

<message name="SYS_MON" id="33">
<field name="periodic_time" type="uint16" unit="usec" alt_unit="msec" alt_unit_coef="0.001"/>
<field name="periodic_time_min" type="uint16" unit="usec" alt_unit="msec" alt_unit_coef="0.001"/>
<field name="periodic_time_max" type="uint16" unit="usec" alt_unit="msec" alt_unit_coef="0.001"/>
<field name="periodic_cycle" type="uint16" unit="usec" alt_unit="msec" alt_unit_coef="0.001"/>
<field name="periodic_cycle_min" type="uint16" unit="usec" alt_unit="msec" alt_unit_coef="0.001"/>
<field name="periodic_cycle_max" type="uint16" unit="usec" alt_unit="msec" alt_unit_coef="0.001"/>
Expand Down
38 changes: 26 additions & 12 deletions sw/airborne/modules/core/sys_mon.c
Expand Up @@ -27,24 +27,26 @@
#include "mcu_periph/usb_serial.h"
#endif

/* Global system monitor data (averaged over 1 sec) */
/** Global system monitor data (averaged over 1 sec) */
struct SysMon sys_mon;

/* Local vars */
uint16_t n_periodic;
uint16_t n_event;
uint32_t periodic_timer;
uint32_t periodic_cycle;
uint32_t event_timer;
uint32_t sum_time_periodic; ///< in usec
uint32_t sum_cycle_periodic; ///< in usec
uint32_t sum_time_event; ///< in usec
uint32_t min_time_event; ///< in usec
uint32_t sum_n_event;
static uint16_t n_periodic;
static uint16_t n_event;
static uint32_t periodic_timer;
static uint32_t periodic_cycle;
static uint32_t event_timer;
static uint32_t sum_time_periodic; ///< in usec
static uint32_t sum_cycle_periodic; ///< in usec
static uint32_t sum_time_event; ///< in usec
static uint32_t min_time_event; ///< in usec
static uint32_t sum_n_event;

void init_sysmon(void) {
sys_mon.cpu_load = 0;
sys_mon.periodic_time = 0;
sys_mon.periodic_time_min = 0xFFFF;
sys_mon.periodic_time_max = 0;
sys_mon.periodic_cycle = 0;
sys_mon.periodic_cycle_min = 0xFFFF;
sys_mon.periodic_cycle_max = 0;
Expand Down Expand Up @@ -75,13 +77,19 @@ void periodic_report_sysmon(void) {
sys_mon.cpu_load = 100 * sys_mon.periodic_cycle / sys_mon.periodic_time;
sys_mon.event_number = sum_n_event / n_periodic;

DOWNLINK_SEND_SYS_MON(DefaultChannel, DefaultDevice, &sys_mon.periodic_time, &sys_mon.periodic_cycle, &sys_mon.periodic_cycle_min, &sys_mon.periodic_cycle_max, &sys_mon.event_number, &sys_mon.cpu_load);
DOWNLINK_SEND_SYS_MON(DefaultChannel, DefaultDevice, &sys_mon.periodic_time,
&sys_mon.periodic_time_min, &sys_mon.periodic_time_max,
&sys_mon.periodic_cycle, &sys_mon.periodic_cycle_min,
&sys_mon.periodic_cycle_max, &sys_mon.event_number,
&sys_mon.cpu_load);
}

n_periodic = 0;
sum_time_periodic = 0;
sum_cycle_periodic = 0;
sum_n_event = 0;
sys_mon.periodic_time_min = 0xFFFF;
sys_mon.periodic_time_max = 0;
sys_mon.periodic_cycle_min = 0xFFFF;
sys_mon.periodic_cycle_max = 0;
}
Expand All @@ -96,6 +104,12 @@ void periodic_sysmon(void) {
periodic_cycle = periodic_usec - n_event * min_time_event;
sum_cycle_periodic += periodic_cycle;

/* remember min and max periodic times */
if (periodic_usec < sys_mon.periodic_time_min)
sys_mon.periodic_time_min = periodic_usec;
if (periodic_usec > sys_mon.periodic_time_max)
sys_mon.periodic_time_max = periodic_usec;

/* remember min and max periodic cycle times */
if (periodic_cycle < sys_mon.periodic_cycle_min)
sys_mon.periodic_cycle_min = periodic_cycle;
Expand Down
2 changes: 2 additions & 0 deletions sw/airborne/modules/core/sys_mon.h
Expand Up @@ -34,6 +34,8 @@
struct SysMon {
uint8_t cpu_load;
uint16_t periodic_time; ///< in usec
uint16_t periodic_time_min; ///< in usec
uint16_t periodic_time_max; ///< in usec
uint16_t periodic_cycle; ///< in usec
uint16_t periodic_cycle_min; ///< in usec
uint16_t periodic_cycle_max; ///< in usec
Expand Down

0 comments on commit 3bf713a

Please sign in to comment.