From da74d65fbf7c84f369cc1cf6d82ae9b71fe08c74 Mon Sep 17 00:00:00 2001 From: Giovanni Di Sirio Date: Mon, 13 Sep 2021 07:51:30 +0000 Subject: [PATCH] More details in report. git-svn-id: svn://svn.code.sf.net/p/chibios/svn/trunk@14752 27425a3e-05d8-49a3-a47f-9c15f0e5edd8 --- testrt/VT_STORM/source/vt_storm.c | 30 ++++++++++++++++++++---------- 1 file changed, 20 insertions(+), 10 deletions(-) diff --git a/testrt/VT_STORM/source/vt_storm.c b/testrt/VT_STORM/source/vt_storm.c index eb1417394..3b9a3e854 100644 --- a/testrt/VT_STORM/source/vt_storm.c +++ b/testrt/VT_STORM/source/vt_storm.c @@ -232,7 +232,6 @@ static void guard_cb(virtual_timer_t *vtp, void *p) { */ void vt_storm_execute(const vt_storm_config_t *cfg) { unsigned i; - bool delta_warning; config = cfg; @@ -277,7 +276,7 @@ void vt_storm_execute(const vt_storm_config_t *cfg) { #endif for (i = 1; i <= VT_STORM_CFG_ITERATIONS; i++) { - bool dw; + bool warning; chprintf(cfg->out, "Iteration %d\r\n", i); chThdSleep(TIME_MS2I(10)); @@ -286,9 +285,10 @@ void vt_storm_execute(const vt_storm_config_t *cfg) { vtcus = 0; delay = TIME_MS2I(5); - saturated = false; - delta_warning = false; + saturated = false; + warning = false; do { + rfcu_mask_t mask; sysinterval_t decrease; /* Starting sweepers.*/ @@ -300,7 +300,7 @@ void vt_storm_execute(const vt_storm_config_t *cfg) { chVTSetI(&sweeperm3, delay - 3, sweeperm3_cb, NULL); chVTSetI(&sweeperp3, delay + 3, sweeperp3_cb, NULL); chVTSetI(&wrapper, (sysinterval_t) - 1, wrapper_cb, NULL); - chVTSetContinuousI(&continuous, CH_CFG_ST_TIMEDELTA * 10, continuous_cb, NULL); + chVTSetContinuousI(&continuous, TIME_US2I(50), continuous_cb, NULL); chVTSetI(&guard0, TIME_MS2I(250) + (CH_CFG_TIME_QUANTUM / 2), guard_cb, NULL); chVTSetI(&guard1, TIME_MS2I(250) + (CH_CFG_TIME_QUANTUM - 1), guard_cb, NULL); chVTSetI(&guard2, TIME_MS2I(250) + (CH_CFG_TIME_QUANTUM + 1), guard_cb, NULL); @@ -324,18 +324,28 @@ void vt_storm_execute(const vt_storm_config_t *cfg) { chVTResetI(&guard3); /* Check for relevant RFCU events.*/ - dw = chRFCUGetAndClearFaultsI(CH_RFCU_VT_INSUFFICIENT_DELTA | - CH_RFCU_VT_SKIPPED_DEADLINE) != (rfcu_mask_t)0; + mask = chRFCUGetAndClearFaultsI(CH_RFCU_VT_INSUFFICIENT_DELTA | + CH_RFCU_VT_SKIPPED_DEADLINE); chSysUnlock(); if (saturated) { chprintf(cfg->out, "#"); break; } - else if (dw) { + else if (mask == CH_RFCU_VT_INSUFFICIENT_DELTA) { + palToggleLine(config->line); + chprintf(cfg->out, "x"); + warning = true; + } + else if (mask == CH_RFCU_VT_SKIPPED_DEADLINE) { palToggleLine(config->line); chprintf(cfg->out, "+"); - delta_warning = true; + warning = true; + } + else if (mask == (CH_RFCU_VT_INSUFFICIENT_DELTA | CH_RFCU_VT_SKIPPED_DEADLINE)) { + palToggleLine(config->line); + chprintf(cfg->out, "*"); + warning = true; } else { palToggleLine(config->line); @@ -351,7 +361,7 @@ void vt_storm_execute(const vt_storm_config_t *cfg) { delay = delay - decrease; } while (delay >= (sysinterval_t)VT_STORM_CFG_MIN_DELAY); - if (delta_warning) { + if (warning) { chprintf(cfg->out, "\r\nRFCU warning detected", TIME_I2US(delay), delay); } else {