aboutsummaryrefslogtreecommitdiffstats
path: root/Software/Embedded_SW/Embedded/Modules
diff options
context:
space:
mode:
authorShlomo Hecht <shlomo@twine-s.com>2018-09-13 14:23:36 +0300
committerShlomo Hecht <shlomo@twine-s.com>2018-09-13 14:23:36 +0300
commitc2ad66a1133b79bb59505985e7f4cd2bc2c96aed (patch)
treedb8bdfb74cca31ee159bbf9473fa241f48f3fbc7 /Software/Embedded_SW/Embedded/Modules
parented6e480c629afc48be49dd38ea0f85dd8c01c175 (diff)
downloadTango-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.c24
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;
}
}