mirror of
https://github.com/paparazzi/paparazzi.git
synced 2026-06-06 07:53:43 +08:00
[modules] add min/max periodic time to sys_mon
This commit is contained in:
@@ -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"/>
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user