mirror of
https://bitbucket.org/librepilot/librepilot.git
synced 2025-02-20 10:54:14 +01:00
LP-293 Added severity level parameter to AlarmString(). Reverted alarm sort order to natural severity levels (highest to lowest): ERROR, CRITICAL, WARNING, OK
This commit is contained in:
parent
8f937e0508
commit
72582d1100
@ -323,25 +323,21 @@ static const char *const systemalarms_extendedalarmstatus_names[] = {
|
||||
[SYSTEMALARMS_EXTENDEDALARMSTATUS_BADTHROTTLEORCOLLECTIVEINPUTRANGE] = "CFG:THR-COL",
|
||||
};
|
||||
|
||||
static const SystemAlarmsAlarmOptions severity_order[] = {
|
||||
SYSTEMALARMS_ALARM_CRITICAL, SYSTEMALARMS_ALARM_WARNING, SYSTEMALARMS_ALARM_ERROR
|
||||
};
|
||||
|
||||
size_t AlarmString(SystemAlarmsData *alarm, char *buffer, size_t buffer_size, SystemAlarmsAlarmOptions *state)
|
||||
size_t AlarmString(SystemAlarmsData *alarm, char *buffer, size_t buffer_size, SystemAlarmsAlarmOptions level, SystemAlarmsAlarmOptions *highestSeverity)
|
||||
{
|
||||
size_t bytes_written = 0;
|
||||
|
||||
PIOS_STATIC_ASSERT(NELEM(systemalarms_alarm_names) == SYSTEMALARMS_ALARM_NUMELEM);
|
||||
|
||||
for (unsigned order = 0; order < NELEM(severity_order); ++order) {
|
||||
for (unsigned severity = SYSTEMALARMS_ALARM_ERROR; severity >= level; --severity) {
|
||||
// should we prepend severity level here? No, not for now.
|
||||
|
||||
for (unsigned i = 0; i < SYSTEMALARMS_ALARM_NUMELEM; ++i) {
|
||||
if ((SystemAlarmsAlarmToArray(alarm->Alarm)[i] == severity_order[order])
|
||||
if ((SystemAlarmsAlarmToArray(alarm->Alarm)[i] == severity)
|
||||
&& (systemalarms_alarm_names[i])) {
|
||||
if (state) { // they are already sorted by severity as we are processing in specific order
|
||||
*state = severity_order[order];
|
||||
state = 0;
|
||||
if (highestSeverity) { // they are already sorted by severity as we are processing in specific order
|
||||
*highestSeverity = severity;
|
||||
highestSeverity = 0;
|
||||
}
|
||||
|
||||
// in which case should we dig into extended alarm status?
|
||||
|
@ -48,7 +48,7 @@ int32_t AlarmsHasErrors();
|
||||
int32_t AlarmsHasCritical();
|
||||
SystemAlarmsAlarmOptions AlarmsGetHighestSeverity();
|
||||
|
||||
size_t AlarmString(SystemAlarmsData *alarm, char *buffer, size_t buffer_size, SystemAlarmsAlarmOptions *state);
|
||||
size_t AlarmString(SystemAlarmsData *alarm, char *buffer, size_t buffer_size, SystemAlarmsAlarmOptions level, SystemAlarmsAlarmOptions *highestSeverity);
|
||||
|
||||
#endif // ALARMS_H
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user