[modules] add min/max periodic time to sys_mon

This commit is contained in:
Felix Ruess
2013-08-23 23:27:24 +02:00
parent 8817bd54dc
commit 3bf713a831
3 changed files with 30 additions and 12 deletions
+2
View File
@@ -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"/>
+26 -12
View File
@@ -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;
@@ -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;
}
@@ -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;
+2
View File
@@ -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