aboutsummaryrefslogtreecommitdiffstats
path: root/Software/Embedded_SW/Embedded/Modules/AlarmHandling
diff options
context:
space:
mode:
authorShlomo Hecht <shlomo@twine-s.com>2020-11-02 16:38:19 +0200
committerShlomo Hecht <shlomo@twine-s.com>2020-11-02 16:38:19 +0200
commit9b3914f2aa4bb0dc50ee27321f7fa9caec8d05be (patch)
tree7a83927793e6c3e05131c39ca7cbcb92449a3980 /Software/Embedded_SW/Embedded/Modules/AlarmHandling
parentf83a99d14efab540c664a4bed826caf213e7074d (diff)
downloadTango-9b3914f2aa4bb0dc50ee27321f7fa9caec8d05be.tar.gz
Tango-9b3914f2aa4bb0dc50ee27321f7fa9caec8d05be.zip
preparation for persistant alarms, handle temperature spike, handle voltage hystersis
Diffstat (limited to 'Software/Embedded_SW/Embedded/Modules/AlarmHandling')
-rw-r--r--Software/Embedded_SW/Embedded/Modules/AlarmHandling/AlarmHandling.c39
1 files changed, 32 insertions, 7 deletions
diff --git a/Software/Embedded_SW/Embedded/Modules/AlarmHandling/AlarmHandling.c b/Software/Embedded_SW/Embedded/Modules/AlarmHandling/AlarmHandling.c
index 881a02f8e..88ef35236 100644
--- a/Software/Embedded_SW/Embedded/Modules/AlarmHandling/AlarmHandling.c
+++ b/Software/Embedded_SW/Embedded/Modules/AlarmHandling/AlarmHandling.c
@@ -1078,14 +1078,14 @@ void AlarmHandlingInternalSetAlarm(uint32_t AlarmId, bool value)
if (AlarmItem[Alarm_i].EventType == AlarmId)
{
if (0) // PERSISTENT ALARM
+ //if ((AlarmItem[Alarm_i].EventType == EVENT_TYPE__UNINTENDED_RESET)) // PERSISTENT ALARM simulate
{
- PersistentEventsResponse.n_events++;
if (PersistentEventsResponse.events == NULL)
- PersistentEventsResponse.events = (Event **)my_malloc(sizeof(Event*)*PersistentEventsResponse.n_events);
+ PersistentEventsResponse.events = (Event **)my_malloc(sizeof(Event*)*(PersistentEventsResponse.n_events+1));
else
{
- re_events = (Event **)my_malloc(sizeof(Event*)*PersistentEventsResponse.n_events);
- for (Event_i = 0;Event_i < (PersistentEventsResponse.n_events-1);Event_i++)
+ re_events = (Event **)my_malloc(sizeof(Event*)*(PersistentEventsResponse.n_events+1));
+ for (Event_i = 0;Event_i < (PersistentEventsResponse.n_events);Event_i++)
{
re_events[Event_i] = PersistentEventsResponse.events[Event_i];
}
@@ -1100,8 +1100,9 @@ void AlarmHandlingInternalSetAlarm(uint32_t AlarmId, bool value)
AlarmState[Alarm_i].EventPtr->type = AlarmItem[Alarm_i].EventType;
AlarmState[Alarm_i].EventPtr->message = NULL;//AlarmItem[Alarm_i].EventName;
}
- AlarmState[Alarm_i].Status = true;
+ //AlarmState[Alarm_i].Status = true;
PersistentEventsResponse.events[PersistentEventsResponse.n_events] = AlarmState[Alarm_i].EventPtr;
+ PersistentEventsResponse.n_events++;
ReportWithPackageFilter(AlarmFilter,"Persistent Alarm ", __FILE__,PersistentEventsResponse.n_events,AlarmItem[Alarm_i].EventType, RpMessage, value, Alarm_i);
}
else
@@ -1751,6 +1752,7 @@ int LargeMessagesAH = 0;
void SendEventNotifications(void)
{
MessageContainer responseContainer;
+ int total_events_number = 0;
//StartEventsNotificationResponse EventsResponse = START_EVENTS_NOTIFICATION_RESPONSE__INIT;
int i,e=0;
@@ -1782,9 +1784,13 @@ void SendEventNotifications(void)
}
}
- if (EventsResponse.n_events)
+ total_events_number = PersistentEventsResponse.n_events + EventsResponse.n_events;
+ if (PersistentEventsResponse.n_events)
+ ReportWithPackageFilter(AlarmFilter,"PersistentEventsResponse found", __FILE__,PersistentEventsResponse.n_events,EventsResponse.n_events, RpMessage, total_events_number, 0);
+
+ if (total_events_number)
{
- EventsResponse.events = (Event **)my_malloc(sizeof(Event*)*EventsResponse.n_events);
+ EventsResponse.events = (Event **)my_malloc(sizeof(Event*)*total_events_number);
if(EventsResponse.events)
{
for (i = 0;i<NumOfSystemAlarms;i++)
@@ -1808,6 +1814,16 @@ void SendEventNotifications(void)
ReportWithPackageFilter(AlarmFilter,"Error in alarm numbers - small ", __FILE__,__LINE__,EventsResponse.n_events, RpFatalError, e, 0);
EventsResponse.n_events = e;
}
+ for (i = 0;i<PersistentEventsResponse.n_events;i++)
+ {
+ EventsResponse.events[e]=PersistentEventsResponse.events[i];
+ e++;
+ }
+ if (e!=total_events_number)
+ {
+ ReportWithPackageFilter(AlarmFilter,"Error in alarm numbers ", __FILE__,total_events_number,EventsResponse.n_events, RpFatalError, e, 0);
+ }
+ EventsResponse.n_events = e;
}
else
{
@@ -1841,6 +1857,15 @@ void SendEventNotifications(void)
AlarmHandlingStop();
if (EventsResponse.events)
my_free(EventsResponse.events);
+ if (PersistentEventsResponse.n_events)
+ {
+ for (i = 0;i<PersistentEventsResponse.n_events;i++)
+ my_free(PersistentEventsResponse.events[i]);
+ my_free(PersistentEventsResponse.events);
+ PersistentEventsResponse.events = NULL;
+ PersistentEventsResponse.n_events = 0;
+ }
+
//if (responseContainer.data.data)
// my_free(responseContainer.data.data);
}