aboutsummaryrefslogtreecommitdiffstats
path: root/Software/Embedded_SW/Embedded/Modules/AlarmHandling
diff options
context:
space:
mode:
authorShlomo Hecht <shlomo@twine-s.com>2019-04-02 15:16:32 +0300
committerShlomo Hecht <shlomo@twine-s.com>2019-04-02 15:16:32 +0300
commit3f6aecd92ceca69ffa5fc07ea0bbe93fd4097c85 (patch)
treea0e69764fe4eca3fc445f44e1f963a2a72e4327f /Software/Embedded_SW/Embedded/Modules/AlarmHandling
parent3713f74d0d811b869af5522a576e36f7e6a0ed2e (diff)
downloadTango-3f6aecd92ceca69ffa5fc07ea0bbe93fd4097c85.tar.gz
Tango-3f6aecd92ceca69ffa5fc07ea0bbe93fd4097c85.zip
Embedded SW Release note - Version 1.3.8.2
File upload: prevent on job, reduce priority (watchdog) Report: packages filters introduced, please feel free to use them. robustness in communication improved large number of segments and gradient support - initial at the end of job the screw does not return back rockers - adjust values before and after loading the cart
Diffstat (limited to 'Software/Embedded_SW/Embedded/Modules/AlarmHandling')
-rw-r--r--Software/Embedded_SW/Embedded/Modules/AlarmHandling/AlarmHandling.c57
1 files changed, 37 insertions, 20 deletions
diff --git a/Software/Embedded_SW/Embedded/Modules/AlarmHandling/AlarmHandling.c b/Software/Embedded_SW/Embedded/Modules/AlarmHandling/AlarmHandling.c
index 7c0f9a6c1..8e76badfe 100644
--- a/Software/Embedded_SW/Embedded/Modules/AlarmHandling/AlarmHandling.c
+++ b/Software/Embedded_SW/Embedded/Modules/AlarmHandling/AlarmHandling.c
@@ -337,7 +337,7 @@ const AlarmHandlingItemStruc HardCodedAlarmItem[MAX_SYSTEM_ALARMS]={
char AlarmStorePath[25] ="0://SysInfo//AlarmPrm.cfg";
-bool DispenserInUse[MAX_SYSTEM_DISPENSERS] = {false,false,false,false,false,false,false,false};
+//bool DispenserInUse[MAX_SYSTEM_DISPENSERS] = {false,false,false,false,false,false,false,false};
bool EventsNotificationRequestAccepted = false;
//read dispensers limit switches. 25 - send warning. up - stop job and send alarm
//Cone missing
@@ -471,7 +471,7 @@ uint32_t AlarmHandlingConsequentActions(uint32_t AlarmId, DebugLogCategory Sever
MotorStop(HARDWARE_MOTOR_TYPE__MOTO_DISPENSER_1+Disp_i,Hard_Hiz);
if (JobIsActive())
{
- if (DispenserInUse[Disp_i] == false)
+ if (DispenserUsedInJob[Disp_i] == false)
AlarmItem[AlarmId].Severity = DEBUG_LOG_CATEGORY__Info;
}
}
@@ -481,7 +481,7 @@ uint32_t AlarmHandlingConsequentActions(uint32_t AlarmId, DebugLogCategory Sever
MotorStop(HARDWARE_MOTOR_TYPE__MOTO_DISPENSER_1+Disp_i,Hard_Hiz);
if (JobIsActive())
{
- if (DispenserInUse[Disp_i] == false)
+ if (DispenserUsedInJob[Disp_i] == false)
AlarmItem[AlarmId].Severity = DEBUG_LOG_CATEGORY__Info;
}
break;
@@ -505,24 +505,26 @@ uint32_t AlarmHandlingConsequentActions(uint32_t AlarmId, DebugLogCategory Sever
}
JobEndReasonEnum AlarmHandlingPrepareJob(void *CurrentJob)
{
- JobTicket* JobTicket = CurrentJob;
+ //JobTicket* JobTicket = CurrentJob;
EventType HeaterEventType[MAX_HEATERS_NUM*2] = {EVENT_TYPE__DRYER_ZONE_1_OVERTEMPERATURE,EVENT_TYPE__DRYER_ZONE_2_OVERTEMPERATURE,EVENT_TYPE__DRYER_ZONE_1_OVERTEMPERATURE,EVENT_TYPE__DYEING_HEAD_ZONE_1_OVERTEMPERATURE,EVENT_TYPE__DYEING_HEAD_ZONE_2_OVERTEMPERATURE,
EVENT_TYPE__DYEING_HEAD_ZONE_3_OVERTEMPERATURE,EVENT_TYPE__DYEING_HEAD_ZONE_4_OVERTEMPERATURE,EVENT_TYPE__DYEING_HEAD_ZONE_5_OVERTEMPERATURE,EVENT_TYPE__DYEING_HEAD_ZONE_6_OVERTEMPERATURE,
EVENT_TYPE__MIXER_OVERTEMPERATURE};
EventType HeaterEventTypeUnder[MAX_HEATERS_NUM*2] = {EVENT_TYPE__DRYER_ZONE_1_UNDERTEMPERATURE_B,EVENT_TYPE__DRYER_ZONE_2_UNDERTEMPERATURE_B,EVENT_TYPE__DRYER_ZONE_1_UNDERTEMPERATURE_B,EVENT_TYPE__DYEING_HEAD_ZONE_1_UNDERTEMPERATURE_B,EVENT_TYPE__DYEING_HEAD_ZONE_2_UNDERTEMPERATURE_B,
EVENT_TYPE__DYEING_HEAD_ZONE_3_UNDERTEMPERATURE_B,EVENT_TYPE__DYEING_HEAD_ZONE_4_UNDERTEMPERATURE_B,EVENT_TYPE__DYEING_HEAD_ZONE_5_UNDERTEMPERATURE_B,EVENT_TYPE__DYEING_HEAD_ZONE_6_UNDERTEMPERATURE_B,
EVENT_TYPE__MIXER_UNDERTEMPERATURE_B};
- int Segment_i,Brush_i,Dispenser_i,DispenserId,Alarm_i,Heater_i,AlarmId=0;
+ int Dispenser_i,Alarm_i,Heater_i,AlarmId=0;
HeaterState HeaterState;
- for (Dispenser_i = 0;Dispenser_i < MAX_SYSTEM_DISPENSERS;Dispenser_i++)
- {
- DispenserInUse[Dispenser_i] = false;
- }
+ //for (Dispenser_i = 0;Dispenser_i < MAX_SYSTEM_DISPENSERS;Dispenser_i++)
+ //{
+ // DispenserInUse[Dispenser_i] = false;
+ //}
JobEndReasonEnum status = JOB_OK;
- if (JobTicket->n_segments == 0)
+ IDS_MapDispenserUsedinJob(CurrentJob);
+ if (n_segments == 0)
return OK;
- for (Segment_i=0;Segment_i<JobTicket->n_segments;Segment_i++)
+
+ /*for (Segment_i=0;Segment_i<JobTicket->n_segments;Segment_i++)
{
for (Brush_i=0;Brush_i<JobTicket->segments[Segment_i]->n_brushstops;Brush_i++)
{
@@ -540,11 +542,12 @@ JobEndReasonEnum AlarmHandlingPrepareJob(void *CurrentJob)
}//if dispensers
}//for brush
}//for segments
+ */
if (Configured[Module_IDS])
{
for (Dispenser_i=0;Dispenser_i<MAX_SYSTEM_DISPENSERS;Dispenser_i++)
{
- if (DispenserInUse[Dispenser_i] == true)
+ if (DispenserUsedInJob[Dispenser_i] == true)
{
for (Alarm_i = 0;Alarm_i<MAX_SYSTEM_ALARMS;Alarm_i++)
{
@@ -664,7 +667,6 @@ void AlarmHandlingInternalSetAlarm(uint32_t AlarmId, bool value)
{
if (AlarmState[Alarm_i].Status != value)
{
- AlarmState[Alarm_i].Status = value;
if (value == true)
{
// no need to call consequent actionsAlarmHandlingConsequentActions(Alarm_i, AlarmItem[Alarm_i].Severity);
@@ -676,12 +678,14 @@ void AlarmHandlingInternalSetAlarm(uint32_t AlarmId, bool value)
AlarmState[Alarm_i].EventPtr->has_type = true;
AlarmState[Alarm_i].EventPtr->type = AlarmItem[Alarm_i].EventType;
AlarmState[Alarm_i].EventPtr->message = AlarmItem[Alarm_i].EventName;
+ AlarmState[Alarm_i].Status = value;
Report("Alarm ON ", __FILE__,__LINE__,AlarmItem[Alarm_i].EventType, RpMessage, value, Alarm_i);
}
}
else
{
Report("Alarm OFF ", __FILE__,__LINE__,AlarmItem[Alarm_i].EventType, RpMessage, value, Alarm_i);
+ AlarmState[Alarm_i].Status = value;
if (AlarmState[Alarm_i].EventPtr)
my_free(AlarmState[Alarm_i].EventPtr);
}
@@ -1017,20 +1021,33 @@ void SendEventNotifications(void)
response.n_events++;
}
}
- response.events = (Event **)my_malloc(sizeof(Event*)*response.n_events);
- if(response.events)
+
+ if (response.n_events)
{
- for (i = 0;i<MAX_SYSTEM_ALARMS;i++)
+ response.events = (Event **)my_malloc(sizeof(Event*)*response.n_events);
+ if(response.events)
{
- if (AlarmState[i].Status == true)
+ for (i = 0;i<MAX_SYSTEM_ALARMS;i++)
{
- if (AlarmState[i].EventPtr)
+ if (AlarmState[i].Status == true)
{
- response.events[e]=AlarmState[i].EventPtr;
- e++;
+ if (AlarmState[i].EventPtr)
+ {
+ response.events[e]=AlarmState[i].EventPtr;
+ e++;
+ }
}
}
}
+ else
+ {
+ LOG_ERROR(response.n_events,"events malloc error");
+ return ERROR;
+ }
+ }
+ else
+ {
+ response.events = NULL;
}
responseContainer = createAllocatedContainer(MESSAGE_TYPE__StartEventsNotificationResponse, AlarmHandlingToken, false, &response, &start_events_notification_response__pack, &start_events_notification_response__get_packed_size,&alarm_response_buffer);
responseContainer.continuous = true;