aboutsummaryrefslogtreecommitdiffstats
path: root/Software/Embedded_SW
diff options
context:
space:
mode:
authorMirta <mirta@twine-s.com>2020-10-26 17:29:07 +0200
committerMirta <mirta@twine-s.com>2020-10-26 17:29:07 +0200
commit338d613fbf2d4e5302b66909ec7c703637829587 (patch)
treeaba8dd810e4179a9ee3cee38a488dae866da1cab /Software/Embedded_SW
parentf2c99ab2efc63254672a54dec5821139e6921638 (diff)
parent60b7dee587fe3d8449c22bffd3c590c27aa735d5 (diff)
downloadTango-338d613fbf2d4e5302b66909ec7c703637829587.tar.gz
Tango-338d613fbf2d4e5302b66909ec7c703637829587.zip
Merge branch 'master' of https://twinetfs.visualstudio.com/Tango/_git/Tango
Diffstat (limited to 'Software/Embedded_SW')
-rw-r--r--Software/Embedded_SW/Embedded/Modules/AlarmHandling/AlarmHandling.c84
-rw-r--r--Software/Embedded_SW/Embedded/Modules/General/MachineStatus.c64
-rw-r--r--Software/Embedded_SW/Embedded/Modules/General/MachineStatus.h2
-rw-r--r--Software/Embedded_SW/Embedded/Modules/Waste/Waste_maint.c2
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;