git-svn-id: svn://svn.code.sf.net/p/chibios/svn/trunk@14725 27425a3e-05d8-49a3-a47f-9c15f0e5edd8

This commit is contained in:
Giovanni Di Sirio 2021-09-01 13:27:46 +00:00
parent 99bda6d99f
commit ca85e9e28f
1 changed files with 18 additions and 3 deletions

View File

@ -232,6 +232,7 @@ static void guard_cb(virtual_timer_t *vtp, void *p) {
*/ */
void vt_storm_execute(const vt_storm_config_t *cfg) { void vt_storm_execute(const vt_storm_config_t *cfg) {
unsigned i; unsigned i;
bool delta_warning;
config = cfg; config = cfg;
@ -284,7 +285,8 @@ void vt_storm_execute(const vt_storm_config_t *cfg) {
vtcus = 0; vtcus = 0;
delay = TIME_US2I(128); delay = TIME_US2I(128);
saturated = false; saturated = false;
delta_warning = false;
do { do {
sysinterval_t decrease; sysinterval_t decrease;
@ -319,12 +321,20 @@ void vt_storm_execute(const vt_storm_config_t *cfg) {
chVTResetI(&guard1); chVTResetI(&guard1);
chVTResetI(&guard2); chVTResetI(&guard2);
chVTResetI(&guard3); chVTResetI(&guard3);
/* Check for relevant RFCU events.*/
delta_warning = chRFCUGetAndClearFaultsI(CH_RFCU_VT_INSUFFICIENT_DELTA |
CH_RFCU_VT_SKIPPED_DEADLINE) != (rfcu_mask_t)0;
chSysUnlock(); chSysUnlock();
if (saturated) { if (saturated) {
chprintf(cfg->out, "#"); chprintf(cfg->out, "#");
break; break;
} }
else if (delta_warning) {
chprintf(cfg->out, "+");
break;
}
palToggleLine(config->line); palToggleLine(config->line);
chprintf(cfg->out, "."); chprintf(cfg->out, ".");
@ -338,14 +348,19 @@ void vt_storm_execute(const vt_storm_config_t *cfg) {
delay = delay - decrease; delay = delay - decrease;
} while (delay >= (sysinterval_t)VT_STORM_CFG_MIN_DELAY); } while (delay >= (sysinterval_t)VT_STORM_CFG_MIN_DELAY);
if (delta_warning) {
chprintf(cfg->out, "\r\nRFCU warning detected", TIME_I2US(delay), delay);
}
else {
chprintf(cfg->out, "\r\nNo warnings");
}
if (saturated) { if (saturated) {
chprintf(cfg->out, "\r\nSaturated at %u uS %u ticks", TIME_I2US(delay), delay); chprintf(cfg->out, "\r\nSaturated at %u uS %u ticks", TIME_I2US(delay), delay);
chprintf(cfg->out, "\r\nContinuous ticks %u\r\n\r\n", vtcus);
} }
else { else {
chprintf(cfg->out, "\r\nNon saturated"); chprintf(cfg->out, "\r\nNon saturated");
chprintf(cfg->out, "\r\nContinuous ticks %u\r\n\r\n", vtcus);
} }
chprintf(cfg->out, "\r\nContinuous ticks %u\r\n\r\n", vtcus);
} }
} }