/* * ids_ex.h * * Created on: 30 APR 2018 * Author: shlomo */ #ifndef MODULES_IDS_IDS_EX_H_ #define MODULES_IDS_IDS_EX_H_ #include "PMR/Hardware/HardwarePIDControl.pb-c.h" #include "PMR/EmbeddedParameters/DispenserRunningData.pb-c.h" #include "PMR/EmbeddedParameters/DispenserData.pb-c.h" typedef enum { LimitSwitchAlarmEmpty_1, //MOTO_DISPENSER_1 = 6, LimitSwitchAlarmEmpty_2, //MOTO_DISPENSER_2 = 7, LimitSwitchAlarmEmpty_3, //MOTO_DISPENSER_3 = 8, LimitSwitchAlarmEmpty_4, //MOTO_DISPENSER_4 = 9, LimitSwitchAlarmEmpty_5, //MOTO_DISPENSER_5 = 10, LimitSwitchAlarmEmpty_6, //MOTO_DISPENSER_6 = 11, LimitSwitchAlarmEmpty_7, //MOTO_DISPENSER_7 = 12, LimitSwitchAlarmEmpty_8, //MOTO_DISPENSER_8 = 13, LimitSwitchAlarmLow_1, //MOTO_DISPENSER_1 = 6, LimitSwitchAlarmLow_2, //MOTO_DISPENSER_2 = 7, LimitSwitchAlarmLow_3, //MOTO_DISPENSER_3 = 8, LimitSwitchAlarmLow_4, //MOTO_DISPENSER_4 = 9, LimitSwitchAlarmLow_5, //MOTO_DISPENSER_5 = 10, LimitSwitchAlarmLow_6, //MOTO_DISPENSER_6 = 11, LimitSwitchAlarmLow_7, //MOTO_DISPENSER_7 = 12, LimitSwitchAlarmLow_8, //MOTO_DISPENSER_8 = 13, }LimitSwitchAlarms; typedef enum { AutoHoming_off, AutoHoming_PowerOff, AutoHoming_PowerOn_off, AutoHoming_JobEnd_PowerOn_off, }AutoHoming_Config_enum; extern AutoHoming_Config_enum AutoHoming_Config; extern bool EnableLubrication; extern bool EnableIntersegment; extern double IntersegmentLength; extern DispenserRunningData IDS_Dispenser_Data[MAX_SYSTEM_DISPENSERS]; //extern DispenserData IDSDispenserData; extern DispenserRunningData **dispenserdata; extern bool ActuatorsCleaningSequence; extern bool short_cycle; extern bool DispenserUsedInJob[MAX_SYSTEM_DISPENSERS]; extern int32_t CurrentDispenserSpeed[MAX_SYSTEM_DISPENSERS]; extern bool DispenserLastMovementDown[MAX_SYSTEM_DISPENSERS]; bool IDS_MapDispenserUsedinJob(void *JobDetails); void IDS_ModuleInit (void); void Calculateinit(void); void IDS_Dispenser_Content_Init (void); uint32_t IDSPrepareState(void *JobDetails); void IDSPrepareStart(void); //this function returns preparation ratio for the most cool heater (current temperature/ target temerature) double IdsPrepareProgress(void); uint32_t IDSPreSegmentState(void *SegmentDetails, int SegmentId); uint32_t IDSCheckSegmentData(void *SegmentDetails, int SegmentId); uint32_t IDSSegmentState(void *SegmentDetails, int SegmentId); uint32_t IDSDistanceToSpoolState(void); uint32_t IDSEndState(void); uint32_t IDS_StartLubrication(void); uint32_t IDS_StopLubrication(void); uint32_t IDS_DispenserPidRequestMessage(HardwarePidControl* request); //uint32_t IDS_DispenserControlInit(); void IDS_Dispenser_Init(uint8_t DispenserId); bool isDispenserInConfig(int DispenserId); uint32_t IDS_HomeDispenser (uint32_t deviceID, uint32_t speed , callback_fptr callback); uint32_t IDS_StopHomeDispenser (uint32_t deviceID); uint32_t IDS_HomeDispenserWaitForHomingEnd(uint32_t DispenserId, uint32_t timeout , callback_fptr callback); bool IDS_IsHomingActive(uint32_t DispenserId); uint32_t IDS_EmptyDispenser (uint32_t deviceID, uint32_t speed , callback_fptr callback); uint32_t IDS_Dispenser_Alarm_On (uint8_t deviceID); uint32_t IDS_Dispenser_Alarm_Off (uint8_t deviceID); uint32_t IDS_CheckDispenserLimitSwitch (LimitSwitchAlarms LS_Id); uint32_t IDS_Dispenser_Build_Pressure(int DispenserId, callback_fptr callback); void IDS_Dispenser_SetTimeOutValues(uint32_t CloseTimeout, uint32_t OpenTimeout); void IDS_Dispenser_SetBackLashValues(double initialdispenserpressure, uint32_t initialdispensertimeout, uint32_t initialdispensertimelag, uint32_t initialdispenserspeed); void IDS_Dispenser_SetPrepareValues( uint32_t DispenserBuildPressureSpeed, double DispenserBuildPressureLimit, uint32_t DispenserBuildPressureTimeout, uint32_t DispenserBuildPressureLag); void IDS_Dispenser_SetPreSegmentWFCFValues(double dispenserpresegmentwfcf, double ids_presegment_wfcf_timebeforesegment); void IDS_Dispenser_SetPreSegmentCleaningValues(double ids_cleaningspeed,double ids_cleaningstartspraypresegmenttime ,double ids_cleaningstopbeforesegmenttime,double ids_leftcleaningmotorspeed,double ids_rightcleaningmotorspeed); void IDS_Dispenser_SetAutoHoming_Config(AutoHoming_Config_enum Config); double Get_WFCF(void); double Get_WFCF_Time(void); bool Set_Check_Pressure_Bypass(int); uint32_t IDS_Dispenser_Close_Valve_And_Stop_Motor(int DispenserId, callback_fptr callback); uint32_t IDS_Dispenser_Start_Motor_and_Open_Valve(int DispenserId, int MotorSpeed, callback_fptr callback); void DispensersCollectionCall(void); uint32_t IDS_Dispenser_Store_Data (void); uint32_t IDS_MapDispenserUsedinFileJob(void *JobDetails); float CalculateDispenserPressure (int DispenserId); float GetDispenserPressure(int DispenserId); int32_t IdsGetMotorSpeed(uint32_t DispenserId); void DispenserDataRequestFunc(MessageContainer* requestContainer); void IDS_Start_Pid_Testing(int DispenserId); void IDS_Stop_Pid_Testing(int DispenserId); uint32_t cleaningMotorCBFunction (uint32_t deviceID, uint32_t Parameter1); uint32_t IDS_Cleaning_stop_cleaner_motor(); #endif /* MODULES_IDS_IDS_EX_H_ */