diff options
| author | Shlomo Hecht <shlomo@twine-s.com> | 2020-11-02 16:38:19 +0200 |
|---|---|---|
| committer | Shlomo Hecht <shlomo@twine-s.com> | 2020-11-02 16:38:19 +0200 |
| commit | 9b3914f2aa4bb0dc50ee27321f7fa9caec8d05be (patch) | |
| tree | 7a83927793e6c3e05131c39ca7cbcb92449a3980 /Software/Embedded_SW/Embedded/Modules/AlarmHandling | |
| parent | f83a99d14efab540c664a4bed826caf213e7074d (diff) | |
| download | Tango-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.c | 39 |
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); } |
