diff options
| author | Shlomo Hecht <shlomo@twine-s.com> | 2018-09-13 14:23:36 +0300 |
|---|---|---|
| committer | Shlomo Hecht <shlomo@twine-s.com> | 2018-09-13 14:23:36 +0300 |
| commit | c2ad66a1133b79bb59505985e7f4cd2bc2c96aed (patch) | |
| tree | db8bdfb74cca31ee159bbf9473fa241f48f3fbc7 /Software/Embedded_SW/Embedded/Modules | |
| parent | ed6e480c629afc48be49dd38ea0f85dd8c01c175 (diff) | |
| download | Tango-c2ad66a1133b79bb59505985e7f4cd2bc2c96aed.tar.gz Tango-c2ad66a1133b79bb59505985e7f4cd2bc2c96aed.zip | |
thread alarms
Diffstat (limited to 'Software/Embedded_SW/Embedded/Modules')
| -rw-r--r-- | Software/Embedded_SW/Embedded/Modules/AlarmHandling/AlarmHandling.c | 24 |
1 files changed, 22 insertions, 2 deletions
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; } } |
