From c2ad66a1133b79bb59505985e7f4cd2bc2c96aed Mon Sep 17 00:00:00 2001 From: Shlomo Hecht Date: Thu, 13 Sep 2018 14:23:36 +0300 Subject: thread alarms --- .../Embedded/Modules/AlarmHandling/AlarmHandling.c | 24 ++++++++++++++++++++-- 1 file changed, 22 insertions(+), 2 deletions(-) (limited to 'Software/Embedded_SW/Embedded/Modules') diff --git a/Software/Embedded_SW/Embedded/Modules/AlarmHandling/AlarmHandling.c b/Software/Embedded_SW/Embedded/Modules/AlarmHandling/AlarmHandling.c index 5eb184a4c..5b52eda1c 100644 --- a/Software/Embedded_SW/Embedded/Modules/AlarmHandling/AlarmHandling.c +++ b/Software/Embedded_SW/Embedded/Modules/AlarmHandling/AlarmHandling.c @@ -306,6 +306,24 @@ void AlarmHandlingSetAlarm(uint32_t AlarmId, bool value) if (AlarmItem[Alarm_i].EventType == AlarmId) { AlarmItem[Alarm_i].Status = value; + if (value == true) + { + AlarmHandlingConsequentActions(Alarm_i, AlarmItem[Alarm_i].Severity); + // report the alarm! + AlarmItem[Alarm_i].EventPtr = malloc (sizeof(Event)); + if (AlarmItem[Alarm_i].EventPtr) + { + event__init(AlarmItem[Alarm_i].EventPtr); + AlarmItem[Alarm_i].EventPtr->has_type = true; + AlarmItem[Alarm_i].EventPtr->type = AlarmItem[Alarm_i].EventType; + AlarmItem[Alarm_i].EventPtr->message = AlarmItem[Alarm_i].EventName; + } + } + else + { + if (AlarmItem[Alarm_i].EventPtr) + free (AlarmItem[Alarm_i].EventPtr); + } break; } } @@ -418,7 +436,7 @@ uint32_t AlarmHandlingLoop(uint32_t tick) } break; case DoNotPollAlarm: - Status = AlarmItem[Alarm_i].Status; + Status = AlarmItem[Alarm_i].Status; break; default: break; @@ -591,7 +609,9 @@ uint32_t ResolveEventRequestFunc(MessageContainer* requestContainer) if (AlarmItem[Alarm_i].EventType == request->type) { AlarmItem[Alarm_i].Status = false; - status = OK; + if (AlarmItem[Alarm_i].EventPtr) + free (AlarmItem[Alarm_i].EventPtr); + status = OK; break; } } -- cgit v1.3.1