diff options
| author | Mirta <mirta@twine-s.com> | 2020-10-26 17:29:07 +0200 |
|---|---|---|
| committer | Mirta <mirta@twine-s.com> | 2020-10-26 17:29:07 +0200 |
| commit | 338d613fbf2d4e5302b66909ec7c703637829587 (patch) | |
| tree | aba8dd810e4179a9ee3cee38a488dae866da1cab /Software/Embedded_SW/Embedded/Modules | |
| parent | f2c99ab2efc63254672a54dec5821139e6921638 (diff) | |
| parent | 60b7dee587fe3d8449c22bffd3c590c27aa735d5 (diff) | |
| download | Tango-338d613fbf2d4e5302b66909ec7c703637829587.tar.gz Tango-338d613fbf2d4e5302b66909ec7c703637829587.zip | |
Merge branch 'master' of https://twinetfs.visualstudio.com/Tango/_git/Tango
Diffstat (limited to 'Software/Embedded_SW/Embedded/Modules')
4 files changed, 93 insertions, 59 deletions
diff --git a/Software/Embedded_SW/Embedded/Modules/AlarmHandling/AlarmHandling.c b/Software/Embedded_SW/Embedded/Modules/AlarmHandling/AlarmHandling.c index 968ef689b..42f60a151 100644 --- a/Software/Embedded_SW/Embedded/Modules/AlarmHandling/AlarmHandling.c +++ b/Software/Embedded_SW/Embedded/Modules/AlarmHandling/AlarmHandling.c @@ -1044,6 +1044,7 @@ uint32_t AlarmHandling_ControlTrigger(uint32_t IfIndex, uint32_t ReadValue) return OK; } void AlarmHandlingInternalSetAlarm(uint32_t AlarmId, bool value); +StartEventsNotificationResponse PersistentEventsResponse = START_EVENTS_NOTIFICATION_RESPONSE__INIT; void AlarmHandlingSetAlarm(uint32_t AlarmId, bool value) { @@ -1059,46 +1060,77 @@ void AlarmHandlingSetAlarm(uint32_t AlarmId, bool value) } void AlarmHandlingInternalSetAlarm(uint32_t AlarmId, bool value) { - int Alarm_i; + int Alarm_i,Event_i; + Event **re_events; if (AlarmItem == NULL) return; for (Alarm_i = 0;Alarm_i < NumOfSystemAlarms;Alarm_i++) { if (AlarmItem[Alarm_i].EventType == AlarmId) { - if (AlarmState[Alarm_i].Status != value) + if (0) // PERSISTENT ALARM { - if (value == true) + PersistentEventsResponse.n_events++; + if (PersistentEventsResponse.events == NULL) + PersistentEventsResponse.events = (Event **)my_malloc(sizeof(Event*)*PersistentEventsResponse.n_events); + else { - // no need to call consequent actionsAlarmHandlingConsequentActions(Alarm_i, AlarmItem[Alarm_i].Severity); - // report the alarm! - AlarmState[Alarm_i].EventPtr = my_malloc (sizeof(Event)); - if (AlarmState[Alarm_i].EventPtr) + re_events = (Event **)my_malloc(sizeof(Event*)*PersistentEventsResponse.n_events); + for (Event_i = 0;Event_i < (PersistentEventsResponse.n_events-1);Event_i++) { - event__init(AlarmState[Alarm_i].EventPtr); - AlarmState[Alarm_i].EventPtr->has_type = true; - AlarmState[Alarm_i].EventPtr->type = AlarmItem[Alarm_i].EventType; - AlarmState[Alarm_i].EventPtr->message = NULL;//AlarmItem[Alarm_i].EventName; - AlarmState[Alarm_i].Status = value; - } - ReportWithPackageFilter(AlarmFilter,"Alarm ON ", __FILE__,AlarmState[Alarm_i].EventPtr,AlarmItem[Alarm_i].EventType, RpMessage, value, Alarm_i); - if ((AlarmItem[Alarm_i].Severity == DEBUG_LOG_CATEGORY__Critical)&&(JobIsActive())) - { - JobEndReason = getEndReason(Alarm_i); - SendJobProgress(0.0,0, false, "Critical alarm!!!!"); - AbortJob("Critical alarm"); - ReportWithPackageFilter(AlarmFilter, AlarmReasonStr,__FILE__,__LINE__,Alarm_i,RpError, 0,0); + re_events[Event_i] = PersistentEventsResponse.events[Event_i]; } + my_free(PersistentEventsResponse.events); + PersistentEventsResponse.events = re_events; } - else + AlarmState[Alarm_i].EventPtr = my_malloc (sizeof(Event)); + if (AlarmState[Alarm_i].EventPtr) { - ReportWithPackageFilter(AlarmFilter,"Alarm OFF ", __FILE__,__LINE__,AlarmItem[Alarm_i].EventType, RpMessage, value, Alarm_i); - if (AlarmState[Alarm_i].EventPtr) + event__init(AlarmState[Alarm_i].EventPtr); + AlarmState[Alarm_i].EventPtr->has_type = true; + AlarmState[Alarm_i].EventPtr->type = AlarmItem[Alarm_i].EventType; + AlarmState[Alarm_i].EventPtr->message = NULL;//AlarmItem[Alarm_i].EventName; + } + AlarmState[Alarm_i].Status = true; + PersistentEventsResponse.events[PersistentEventsResponse.n_events] = AlarmState[Alarm_i].EventPtr; + ReportWithPackageFilter(AlarmFilter,"Persistent Alarm ", __FILE__,PersistentEventsResponse.n_events,AlarmItem[Alarm_i].EventType, RpMessage, value, Alarm_i); + } + else + { + if (AlarmState[Alarm_i].Status != value) + { + if (value == true) { - my_free(AlarmState[Alarm_i].EventPtr); - AlarmState[Alarm_i].EventPtr = NULL; + // no need to call consequent actionsAlarmHandlingConsequentActions(Alarm_i, AlarmItem[Alarm_i].Severity); + // report the alarm! + AlarmState[Alarm_i].EventPtr = my_malloc (sizeof(Event)); + if (AlarmState[Alarm_i].EventPtr) + { + event__init(AlarmState[Alarm_i].EventPtr); + AlarmState[Alarm_i].EventPtr->has_type = true; + AlarmState[Alarm_i].EventPtr->type = AlarmItem[Alarm_i].EventType; + AlarmState[Alarm_i].EventPtr->message = NULL;//AlarmItem[Alarm_i].EventName; + AlarmState[Alarm_i].Status = value; + } + ReportWithPackageFilter(AlarmFilter,"Alarm ON ", __FILE__,AlarmState[Alarm_i].EventPtr,AlarmItem[Alarm_i].EventType, RpMessage, value, Alarm_i); + if ((AlarmItem[Alarm_i].Severity == DEBUG_LOG_CATEGORY__Critical)&&(JobIsActive())) + { + JobEndReason = getEndReason(Alarm_i); + SendJobProgress(0.0,0, false, "Critical alarm!!!!"); + AbortJob("Critical alarm"); + ReportWithPackageFilter(AlarmFilter, AlarmReasonStr,__FILE__,__LINE__,Alarm_i,RpError, 0,0); + } + } + else + { + ReportWithPackageFilter(AlarmFilter,"Alarm OFF ", __FILE__,__LINE__,AlarmItem[Alarm_i].EventType, RpMessage, value, Alarm_i); + if (AlarmState[Alarm_i].EventPtr) + { + my_free(AlarmState[Alarm_i].EventPtr); + AlarmState[Alarm_i].EventPtr = NULL; + } + AlarmState[Alarm_i].Status = value; } - AlarmState[Alarm_i].Status = value; } } break; diff --git a/Software/Embedded_SW/Embedded/Modules/General/MachineStatus.c b/Software/Embedded_SW/Embedded/Modules/General/MachineStatus.c index d5816ab42..147015f98 100644 --- a/Software/Embedded_SW/Embedded/Modules/General/MachineStatus.c +++ b/Software/Embedded_SW/Embedded/Modules/General/MachineStatus.c @@ -239,7 +239,7 @@ return OK; * */ char WasteEmptyingToken[36+1] = {0}; -uint32_t CartridgeStateUpdate(CartridgeSlot Slot,CartridgeState State) +uint32_t CartridgeStateUpdate(CartridgeSlot Slot,CartridgeState State, double percentage) { if (WasteEmptyingToken[0] == 0) return ERROR; @@ -248,44 +248,46 @@ uint32_t CartridgeStateUpdate(CartridgeSlot Slot,CartridgeState State) CartridgeStatus CartridgeStatus = CARTRIDGE_STATUS__INIT; Cartridge CartData = CARTRIDGE__INIT; StartInkFillingStatusResponse response = START_INK_FILLING_STATUS_RESPONSE__INIT; - response.status->n_cartridgesstatuses = MAX_CARTRIDGES; + response.status->n_cartridgesstatuses = 1; response.status->cartridgesstatuses[0] = &CartridgeStatus; CartridgeStatus.has_state = true; CartridgeStatus.state = State; CartridgeStatus.cartridge = &CartData; + if (percentage>1) + { + CartridgeStatus.has_progresspercentage = true; + CartridgeStatus.progresspercentage = percentage + } CartData.has_slot = true; CartData.slot = Slot; - - - /* -struct _CartridgeStatus -{ - ProtobufCMessage base; - Cartridge *cartridge; - protobuf_c_boolean has_state; - CartridgeState state; - protobuf_c_boolean has_progresspercentage; - double progresspercentage; - char *message; -}; - size_t n_cartridgesstatuses; - CartridgeStatus **cartridgesstatuses; -typedef enum _CartridgeState { - CARTRIDGE_STATE__None = 0, - CARTRIDGE_STATE__Absent = 1, - CARTRIDGE_STATE__Exists = 2, - CARTRIDGE_STATE__Inserted = 3, - CARTRIDGE_STATE__Filling = 4, - CARTRIDGE_STATE__FillingCompleted = 5, - CARTRIDGE_STATE__Emptying = 6, - CARTRIDGE_STATE__EmptyingCompleted = 7, - CARTRIDGE_STATE__Empty = 8, - CARTRIDGE_STATE__Full = 9, - CARTRIDGE_STATE__Error = 10 - PROTOBUF_C__FORCE_ENUM_TO_BE_INT_SIZE(CARTRIDGE_STATE) -} CartridgeState; + struct _CartridgeStatus + { + ProtobufCMessage base; + Cartridge *cartridge; + protobuf_c_boolean has_state; + CartridgeState state; + protobuf_c_boolean has_progresspercentage; + double progresspercentage; + char *message; + }; + size_t n_cartridgesstatuses; + CartridgeStatus **cartridgesstatuses; + typedef enum _CartridgeState { + CARTRIDGE_STATE__None = 0, + CARTRIDGE_STATE__Absent = 1, + CARTRIDGE_STATE__Exists = 2, + CARTRIDGE_STATE__Inserted = 3, + CARTRIDGE_STATE__Filling = 4, + CARTRIDGE_STATE__FillingCompleted = 5, + CARTRIDGE_STATE__Emptying = 6, + CARTRIDGE_STATE__EmptyingCompleted = 7, + CARTRIDGE_STATE__Empty = 8, + CARTRIDGE_STATE__Full = 9, + CARTRIDGE_STATE__Error = 10 + PROTOBUF_C__FORCE_ENUM_TO_BE_INT_SIZE(CARTRIDGE_STATE) + } CartridgeState; */ responseContainer = createContainer(MESSAGE_TYPE__StartInkFillingStatusResponse, WasteEmptyingToken, false, &response, &start_ink_filling_status_response__pack, &start_ink_filling_status_response__get_packed_size); diff --git a/Software/Embedded_SW/Embedded/Modules/General/MachineStatus.h b/Software/Embedded_SW/Embedded/Modules/General/MachineStatus.h index b421785cc..b3b773b1e 100644 --- a/Software/Embedded_SW/Embedded/Modules/General/MachineStatus.h +++ b/Software/Embedded_SW/Embedded/Modules/General/MachineStatus.h @@ -18,7 +18,7 @@ void SetMachineStatus (MachineState State); int MachineUpdateResponseFunc(void); uint32_t StartInkFillingStatusRequestFunc(MessageContainer* requestContainer); -uint32_t CartridgeStateUpdate(CartridgeSlot Slot,CartridgeState State); +uint32_t CartridgeStateUpdate(CartridgeSlot Slot,CartridgeState State, double percentage); diff --git a/Software/Embedded_SW/Embedded/Modules/Waste/Waste_maint.c b/Software/Embedded_SW/Embedded/Modules/Waste/Waste_maint.c index 5d8941463..1de7f1319 100644 --- a/Software/Embedded_SW/Embedded/Modules/Waste/Waste_maint.c +++ b/Software/Embedded_SW/Embedded/Modules/Waste/Waste_maint.c @@ -447,7 +447,7 @@ void Waste_StateMachine(void) Report("add control Cartridge Cover Door", __FILE__, __LINE__, 0, RpMessage, 0, 0); SetWastePump(OPEN); - Report("WasteTankStateEmptying set Pump Open", __FILE__, __LINE__, activeCart, RpMessage, 0, 0); + Report("WasteTankStateEmptying set Pump Open", __FILE__, activeCart, wasteLevel, RpMessage, wasteLevelEmpty, 0); //start emptying WasteTankState = WasteTankStateEmptying; |
