/* * I2C_Task.c * * Created on: Oct 23, 2019 * Author: shlomo */ #include #include #include "include.h" #include "inc/hw_memmap.h" #include #include #include #include #include "drivers/ADC_Sampling/adc.h" #include "drivers/I2C_Communication/Head_Card/ADC/Head_ADC.h" #include "Drivers/I2C_Communication/Head_Card/PT100/Head_PT100_ADC.h" #include "Drivers/I2C_Communication/Head_Card/IO_Ports/Heaters/Head_Heaters.h" #include "Drivers/I2C_Communication/Head_Card/Fan/Head_Fan.h" #include "Drivers/I2C_Communication/Head_Card/IO_Ports/Head_IO.h" #include #include #include #include #include #include #include "ADC_MUX/ADC_MUX.h" #include "modules/ids/ids_ex.h" #include #include extern Semaphore_Handle I2C_Sem; Task_Handle I2C_Task_Handle; Mailbox_Handle I2C_ReadingMsgQ = NULL; typedef enum { Head_IO_Initialization, Midtank_Pressure_Reading, Heater_Current_Reading, PT100_Reading, HeaterWriting, Head_Inputs_Reading,// I/O Head_Outputs_Latch_Writing, Head_ACT_ON_Writing, Head_Init_PT100, Actuators_Control, Actuators_Control_Stub, Actuators_Disable, HeadFanInit,//Initialization HeadFanControl, HeadFanReadTacho, HeadMagnetAction, HeadArcPressureAction, HeadValveAction, //DispenserReadData, // I2C4 moved to RFID task /* enum for WHS :*/ WHS_start, WHS_init_I2C_IO, WHS_init_fan, WHS_init_PT100, WHS_init_blower, WHS_init_A2D, WHS_PT100_Reading, //all READ_WHS_PT100_ID, //id WHS_init_Rheostat, WHS_SET_FAN_SPEED, WHS_READ_FAN_TACHO, WHS_READ_ALL_FAN_TACHO, WHS_SET_VOLT_BLOWER_CONTROL, WHS_SETPOINT_Q_BLOWER, WHS_SET_VOC_VALVE, WHS_READ_WASTE_TANK_PERIODIC, WHS_READ_WASTE_TANK_CONT, WHS_SET_VAlVE_CARTRIDGE, WHS_SET_PUMP, WHS_READ_ADC, WHS_READ_GAS_SENSOR, WHS_SET_RDAC, WHS_SET_CLEAN_AIR, WHS_I2C_EEPROM_WRITE, WHS_I2C_EEPROM_READ, WHS_I2C_RS485_DIRECTION_INIT, WHS_I2C_RS485_DIRECTION, WHS_stop }I2C_ReadingMessages; typedef struct I2C_ReadingMessage{ I2C_ReadingMessages messageId; uint32_t parameter; uint16_t parameter2; uint8_t* parameter3; }I2C_ReadingMessageStruc; void Trigger_Head_io_Init(void) { I2C_ReadingMessageStruc I2C_ReadingMessage; I2C_ReadingMessage.messageId = Head_IO_Initialization; if (I2C_ReadingMsgQ != NULL) Mailbox_post(I2C_ReadingMsgQ , &I2C_ReadingMessage, BIOS_NO_WAIT); return; } void Trigger_Heater_Current_Read(void) { I2C_ReadingMessageStruc I2C_ReadingMessage; I2C_ReadingMessage.messageId = Heater_Current_Reading; I2C_ReadingMessage.parameter = NUM_OF_CURRENT_HEATERS; if (I2C_ReadingMsgQ != NULL) Mailbox_post(I2C_ReadingMsgQ , &I2C_ReadingMessage, BIOS_NO_WAIT); Read_Heaters_Current(HEATER_DRYER_CURRENT_1); Read_Heaters_Current(HEATER_DRYER_CURRENT_2); return; } void Trigger_MidTank_Pressure_Read(void) { I2C_ReadingMessageStruc I2C_ReadingMessage; uint8_t Midtank_i; for (Midtank_i = 0;Midtank_i < MAX_SYSTEM_DISPENSERS;Midtank_i++) { I2C_ReadingMessage.messageId = Midtank_Pressure_Reading; I2C_ReadingMessage.parameter = Midtank_i; if (I2C_ReadingMsgQ != NULL) Mailbox_post(I2C_ReadingMsgQ , &I2C_ReadingMessage, BIOS_NO_WAIT); } return; } void Trigger_PT100_Read(void) { I2C_ReadingMessageStruc I2C_ReadingMessage; //uint8_t Midtank_i; I2C_ReadingMessage.messageId = PT100_Reading; if (I2C_ReadingMsgQ != NULL) Mailbox_post(I2C_ReadingMsgQ , &I2C_ReadingMessage, BIOS_NO_WAIT); return; } void Trigger_Head_Init_PT100(void) { I2C_ReadingMessageStruc I2C_ReadingMessage; //uint8_t Midtank_i; I2C_ReadingMessage.messageId = Head_Init_PT100; if (I2C_ReadingMsgQ != NULL) Mailbox_post(I2C_ReadingMsgQ , &I2C_ReadingMessage, BIOS_NO_WAIT); return; } void Trigger_Head_Actuators_Control(uint32_t Act_ID, bool Active_Low_Pwr, bool Direction) { I2C_ReadingMessageStruc I2C_ReadingMessage; //uint8_t Midtank_i; I2C_ReadingMessage.messageId = Actuators_Control; I2C_ReadingMessage.parameter = Act_ID; I2C_ReadingMessage.parameter2 = Active_Low_Pwr; I2C_ReadingMessage.parameter3 = (uint8_t *)Direction; if (I2C_ReadingMsgQ != NULL) Mailbox_post(I2C_ReadingMsgQ , &I2C_ReadingMessage, BIOS_NO_WAIT); return; } void Trigger_Head_Actuators_Stub(uint32_t Act_ID, bool Active_Low_Pwr, bool Direction) { I2C_ReadingMessageStruc I2C_ReadingMessage; I2C_ReadingMessage.messageId = Actuators_Control_Stub; I2C_ReadingMessage.parameter = Act_ID; I2C_ReadingMessage.parameter2 = Active_Low_Pwr; I2C_ReadingMessage.parameter3 = (uint8_t *)Direction; if (I2C_ReadingMsgQ != NULL) Mailbox_post(I2C_ReadingMsgQ , &I2C_ReadingMessage, BIOS_NO_WAIT); return; } void Trigger_Head_Actuators_Disable(void) { I2C_ReadingMessageStruc I2C_ReadingMessage; //uint8_t Midtank_i; I2C_ReadingMessage.messageId = Actuators_Disable; if (I2C_ReadingMsgQ != NULL) Mailbox_post(I2C_ReadingMsgQ , &I2C_ReadingMessage, BIOS_NO_WAIT); return; } void Trigger_Head_Config_Fans(void)//Initialization { I2C_ReadingMessageStruc I2C_ReadingMessage; I2C_ReadingMessage.messageId = HeadFanInit; if (I2C_ReadingMsgQ != NULL) Mailbox_post(I2C_ReadingMsgQ , &I2C_ReadingMessage, BIOS_NO_WAIT); return; } void Trigger_Head_Fan_Control(uint32_t Fan_ID, uint16_t PWM) { I2C_ReadingMessageStruc I2C_ReadingMessage; //uint8_t Midtank_i; if ((Fan_ID>=MAX_HEAD_FAN)||(PWM>0xFF)) return; I2C_ReadingMessage.messageId = HeadFanControl; I2C_ReadingMessage.parameter = Fan_ID; I2C_ReadingMessage.parameter2 = PWM; if (I2C_ReadingMsgQ != NULL) Mailbox_post(I2C_ReadingMsgQ , &I2C_ReadingMessage, BIOS_NO_WAIT); return; } void Trigger_Head_Read_Tacho(uint32_t Fan_ID) { I2C_ReadingMessageStruc I2C_ReadingMessage; I2C_ReadingMessage.messageId = HeadFanReadTacho; I2C_ReadingMessage.parameter = Fan_ID; if (I2C_ReadingMsgQ != NULL) Mailbox_post(I2C_ReadingMsgQ , &I2C_ReadingMessage, BIOS_NO_WAIT); return; } void Trigger_Head_Magnet(int direction) { I2C_ReadingMessageStruc I2C_ReadingMessage; //uint8_t Midtank_i; I2C_ReadingMessage.messageId = HeadMagnetAction; I2C_ReadingMessage.parameter = direction; if (I2C_ReadingMsgQ != NULL) Mailbox_post(I2C_ReadingMsgQ , &I2C_ReadingMessage, BIOS_NO_WAIT); return; } void Trigger_Head_PressureArc(bool Enable_Disable) { I2C_ReadingMessageStruc I2C_ReadingMessage; I2C_ReadingMessage.messageId = HeadArcPressureAction; I2C_ReadingMessage.parameter = Enable_Disable; if (I2C_ReadingMsgQ != NULL) Mailbox_post(I2C_ReadingMsgQ , &I2C_ReadingMessage, BIOS_NO_WAIT); return; } void Trigger_Head_MixerValve(int direction) { I2C_ReadingMessageStruc I2C_ReadingMessage; //uint8_t Midtank_i; I2C_ReadingMessage.messageId = HeadValveAction; I2C_ReadingMessage.parameter = direction; if (I2C_ReadingMsgQ != NULL) Mailbox_post(I2C_ReadingMsgQ , &I2C_ReadingMessage, BIOS_NO_WAIT); return; } //void Trigger_Dispenser_ReadData(int dispenserId) // I2C4 moved to RFID task //{ // I2C_ReadingMessageStruc I2C_ReadingMessage; // //uint8_t Midtank_i; // // I2C_ReadingMessage.messageId = DispenserReadData; // I2C_ReadingMessage.parameter = dispenserId; // if (I2C_ReadingMsgQ != NULL) // Mailbox_post(I2C_ReadingMsgQ , &I2C_ReadingMessage, BIOS_NO_WAIT); // return; //} void Trigger_HeaterWriting(void) { I2C_ReadingMessageStruc I2C_ReadingMessage; //uint8_t Midtank_i; I2C_ReadingMessage.messageId = HeaterWriting; if (I2C_ReadingMsgQ != NULL) Mailbox_post(I2C_ReadingMsgQ , &I2C_ReadingMessage, BIOS_NO_WAIT); return; } void Trigger_InputsReading(void) { I2C_ReadingMessageStruc I2C_ReadingMessage; //uint8_t Midtank_i; I2C_ReadingMessage.messageId = Head_Inputs_Reading; if (I2C_ReadingMsgQ != NULL) Mailbox_post(I2C_ReadingMsgQ , &I2C_ReadingMessage, BIOS_NO_WAIT); return; } void Trigger_OutputsLatchWriting(void) { I2C_ReadingMessageStruc I2C_ReadingMessage; //uint8_t Midtank_i; I2C_ReadingMessage.messageId = Head_Outputs_Latch_Writing; if (I2C_ReadingMsgQ != NULL) Mailbox_post(I2C_ReadingMsgQ , &I2C_ReadingMessage, BIOS_NO_WAIT); return; } void Trigger_ActOnWriting(void) { I2C_ReadingMessageStruc I2C_ReadingMessage; //uint8_t Midtank_i; I2C_ReadingMessage.messageId = Head_ACT_ON_Writing; if (I2C_ReadingMsgQ != NULL) Mailbox_post(I2C_ReadingMsgQ , &I2C_ReadingMessage, BIOS_NO_WAIT); return; } void Trigger_WHS_init_IO(void) { I2C_ReadingMessageStruc I2C_ReadingMessage; I2C_ReadingMessage.messageId = WHS_init_I2C_IO; if (I2C_ReadingMsgQ != NULL) Mailbox_post(I2C_ReadingMsgQ , &I2C_ReadingMessage, BIOS_NO_WAIT); return; } void Trigger_WHS_init_fan(void) { I2C_ReadingMessageStruc I2C_ReadingMessage; I2C_ReadingMessage.messageId = WHS_init_fan; if (I2C_ReadingMsgQ != NULL) Mailbox_post(I2C_ReadingMsgQ , &I2C_ReadingMessage, BIOS_NO_WAIT); return; } void Trigger_WHS_init_PT100(void) { I2C_ReadingMessageStruc I2C_ReadingMessage; I2C_ReadingMessage.messageId = WHS_init_PT100; if (I2C_ReadingMsgQ != NULL) Mailbox_post(I2C_ReadingMsgQ , &I2C_ReadingMessage, BIOS_NO_WAIT); return; } void Trigger_WHS_init_Blower(void) { I2C_ReadingMessageStruc I2C_ReadingMessage; I2C_ReadingMessage.messageId = WHS_init_blower; if (I2C_ReadingMsgQ != NULL) Mailbox_post(I2C_ReadingMsgQ , &I2C_ReadingMessage, BIOS_NO_WAIT); return; } void Trigger_WHS_MAX11614_Init(void) { I2C_ReadingMessageStruc I2C_ReadingMessage; I2C_ReadingMessage.messageId = WHS_init_A2D; if (I2C_ReadingMsgQ != NULL) Mailbox_post(I2C_ReadingMsgQ , &I2C_ReadingMessage, BIOS_NO_WAIT); return; } void Trigger_WHS_Rheostat_init(void) { I2C_ReadingMessageStruc I2C_ReadingMessage; I2C_ReadingMessage.messageId = WHS_init_Rheostat; if (I2C_ReadingMsgQ != NULL) Mailbox_post(I2C_ReadingMsgQ , &I2C_ReadingMessage, BIOS_NO_WAIT); return; } void Trigger_WHS_PT100_Read_All(void) { I2C_ReadingMessageStruc I2C_ReadingMessage; I2C_ReadingMessage.messageId = WHS_PT100_Reading; if (I2C_ReadingMsgQ != NULL) Mailbox_post(I2C_ReadingMsgQ , &I2C_ReadingMessage, BIOS_NO_WAIT); return; } void Trigger_ReadWHSPT100(uint8_t PT100_Id) { I2C_ReadingMessageStruc I2C_ReadingMessage; I2C_ReadingMessage.messageId = READ_WHS_PT100_ID; I2C_ReadingMessage.parameter = PT100_Id; if (I2C_ReadingMsgQ != NULL) Mailbox_post(I2C_ReadingMsgQ , &I2C_ReadingMessage, BIOS_NO_WAIT); return; } void Trigger_SetWHSFanSpeed(uint8_t fan_id, uint8_t speed) { I2C_ReadingMessageStruc I2C_ReadingMessage; //uint8_t Midtank_i; I2C_ReadingMessage.messageId = WHS_SET_FAN_SPEED; I2C_ReadingMessage.parameter = fan_id; I2C_ReadingMessage.parameter2 = speed; if (I2C_ReadingMsgQ != NULL) Mailbox_post(I2C_ReadingMsgQ , &I2C_ReadingMessage, BIOS_NO_WAIT); return; } void Trigger_ReadWHSFanTacho (uint8_t fan_id) { I2C_ReadingMessageStruc I2C_ReadingMessage; I2C_ReadingMessage.messageId = WHS_READ_FAN_TACHO; I2C_ReadingMessage.parameter = fan_id; if (I2C_ReadingMsgQ != NULL) Mailbox_post(I2C_ReadingMsgQ , &I2C_ReadingMessage, BIOS_NO_WAIT); return; } void Trigger_WHSReadAllFanTacho () { I2C_ReadingMessageStruc I2C_ReadingMessage; I2C_ReadingMessage.messageId = WHS_READ_ALL_FAN_TACHO; if (I2C_ReadingMsgQ != NULL) Mailbox_post(I2C_ReadingMsgQ , &I2C_ReadingMessage, BIOS_NO_WAIT); return; } void Trigger_SetWHSBlowerVoltage (uint16_t voltage) { I2C_ReadingMessageStruc I2C_ReadingMessage; //uint8_t Midtank_i; I2C_ReadingMessage.messageId = WHS_SET_VOLT_BLOWER_CONTROL; I2C_ReadingMessage.parameter = voltage; if (I2C_ReadingMsgQ != NULL) Mailbox_post(I2C_ReadingMsgQ , &I2C_ReadingMessage, BIOS_NO_WAIT); return; } //void Trigger_WHS_Set_Blower_Control_Closed_Loop (uint32_t setpoint_Q) //{ // I2C_ReadingMessageStruc I2C_ReadingMessage; // // I2C_ReadingMessage.messageId = WHS_SETPOINT_Q_BLOWER; // I2C_ReadingMessage.parameter = setpoint_Q; // // if (I2C_ReadingMsgQ != NULL) // Mailbox_post(I2C_ReadingMsgQ , &I2C_ReadingMessage, BIOS_NO_WAIT); // return; //} void Trigger_ReadWHS_Waste(uint32_t IfIndex, uint32_t BusyFlag) //0= OPEN_VOC_VALVE 1=CLOSE_VOC_VALVE { I2C_ReadingMessageStruc I2C_ReadingMessage; I2C_ReadingMessage.messageId = WHS_READ_WASTE_TANK_PERIODIC; if (I2C_ReadingMsgQ != NULL) Mailbox_post(I2C_ReadingMsgQ , &I2C_ReadingMessage, BIOS_NO_WAIT); return; } void Trigger_ReadWHS_WasteContinouos(uint32_t IfIndex, uint32_t BusyFlag) //0= OPEN_VOC_VALVE 1=CLOSE_VOC_VALVE { I2C_ReadingMessageStruc I2C_ReadingMessage; I2C_ReadingMessage.messageId = WHS_READ_WASTE_TANK_CONT; if (I2C_ReadingMsgQ != NULL) Mailbox_post(I2C_ReadingMsgQ , &I2C_ReadingMessage, BIOS_NO_WAIT); return; } void Trigger_SetWHS_VOC_Valve(bool value) //0= OPEN_VOC_VALVE 1=CLOSE_VOC_VALVE { I2C_ReadingMessageStruc I2C_ReadingMessage; I2C_ReadingMessage.messageId = WHS_SET_VOC_VALVE; I2C_ReadingMessage.parameter = value; if (I2C_ReadingMsgQ != NULL) Mailbox_post(I2C_ReadingMsgQ , &I2C_ReadingMessage, BIOS_NO_WAIT); return; } //void Trigger_WHS_Set_Valve(uint8_t valve_number, bool status) void Trigger_SetWHSValveWatseCartridge(uint8_t Cart_Id) { I2C_ReadingMessageStruc I2C_ReadingMessage; //uint8_t Midtank_i; I2C_ReadingMessage.messageId = WHS_SET_VAlVE_CARTRIDGE; I2C_ReadingMessage.parameter = Cart_Id; if (I2C_ReadingMsgQ != NULL) Mailbox_post(I2C_ReadingMsgQ , &I2C_ReadingMessage, BIOS_NO_WAIT); return; } //void Trigger_WHS_Set_Pump(bool status) void Trigger_SetWHSPump(bool status) { I2C_ReadingMessageStruc I2C_ReadingMessage; //uint8_t Midtank_i; I2C_ReadingMessage.messageId = WHS_SET_PUMP; I2C_ReadingMessage.parameter = status; if (I2C_ReadingMsgQ != NULL) Mailbox_post(I2C_ReadingMsgQ , &I2C_ReadingMessage, BIOS_NO_WAIT); return; } void Trigger_WHS_MAX11614_Read_allADC(void) { I2C_ReadingMessageStruc I2C_ReadingMessage; //uint8_t Midtank_i; I2C_ReadingMessage.messageId = WHS_READ_ADC; if (I2C_ReadingMsgQ != NULL) Mailbox_post(I2C_ReadingMsgQ , &I2C_ReadingMessage, BIOS_NO_WAIT); return; } void Trigger_WHS_MAX11614_Read_Gas_Sensor(void) { I2C_ReadingMessageStruc I2C_ReadingMessage; I2C_ReadingMessage.messageId = WHS_READ_GAS_SENSOR; if (I2C_ReadingMsgQ != NULL) Mailbox_post(I2C_ReadingMsgQ , &I2C_ReadingMessage, BIOS_NO_WAIT); return; } void Trigger_WHS_Set_RDAC(uint16_t value) { I2C_ReadingMessageStruc I2C_ReadingMessage; I2C_ReadingMessage.messageId = WHS_SET_RDAC; I2C_ReadingMessage.parameter = value; if (I2C_ReadingMsgQ != NULL) Mailbox_post(I2C_ReadingMsgQ , &I2C_ReadingMessage, BIOS_NO_WAIT); return; } void Trigger_WHS_set_Rheostat_to_CLEAN_AIR(void) { I2C_ReadingMessageStruc I2C_ReadingMessage; I2C_ReadingMessage.messageId = WHS_SET_CLEAN_AIR; if (I2C_ReadingMsgQ != NULL) Mailbox_post(I2C_ReadingMsgQ , &I2C_ReadingMessage, BIOS_NO_WAIT); return; } void Trigger_WHS_I2C_EEprom_Write(uint32_t address, uint16_t size, uint8_t *p_data) { I2C_ReadingMessageStruc I2C_ReadingMessage; #warning - need to handle the pages if(size > 256) { size = 256; Report("------------ trying to write size bigger than page to WHS eeprom -----------------", __FILE__, __LINE__, 0, RpMessage, (int)(size), 0); } I2C_ReadingMessage.messageId = WHS_I2C_EEPROM_WRITE; I2C_ReadingMessage.parameter = address; I2C_ReadingMessage.parameter2 = size; I2C_ReadingMessage.parameter3 = p_data; if (I2C_ReadingMsgQ != NULL) Mailbox_post(I2C_ReadingMsgQ , &I2C_ReadingMessage, BIOS_NO_WAIT); return; } void Trigger_WHS_I2C_EEprom_Read(uint32_t address, uint16_t size, uint8_t *p_data) { I2C_ReadingMessageStruc I2C_ReadingMessage; I2C_ReadingMessage.messageId = WHS_I2C_EEPROM_READ; I2C_ReadingMessage.parameter = address; I2C_ReadingMessage.parameter2 = size; I2C_ReadingMessage.parameter3 = p_data; if (I2C_ReadingMsgQ != NULL) Mailbox_post(I2C_ReadingMsgQ , &I2C_ReadingMessage, BIOS_NO_WAIT); return; } void Trigger_RS485_Direction(bool TX_OR_RX) { I2C_ReadingMessageStruc I2C_ReadingMessage; I2C_ReadingMessage.messageId = WHS_I2C_RS485_DIRECTION; I2C_ReadingMessage.parameter = TX_OR_RX; if (I2C_ReadingMsgQ != NULL) Mailbox_post(I2C_ReadingMsgQ , &I2C_ReadingMessage, BIOS_NO_WAIT); return; } void Trigger_RS485_Direction_Init() { I2C_ReadingMessageStruc I2C_ReadingMessage; I2C_ReadingMessage.messageId = WHS_I2C_RS485_DIRECTION_INIT; if (I2C_ReadingMsgQ != NULL) Mailbox_post(I2C_ReadingMsgQ , &I2C_ReadingMessage, BIOS_NO_WAIT); return; } void I2C_ReadingTask(UArg arg0, UArg arg1); void I2C_ReadingTask_Init(void) { Task_Params taskParams; I2C_ReadingMsgQ = Mailbox_create(sizeof(I2C_ReadingMessageStruc), 40, NULL,NULL); Task_Params_init(&taskParams); taskParams.instance->name = "I2C_Reading"; taskParams.priority = 17; taskParams.stackSize = 2048; I2C_Task_Handle = Task_create((Task_FuncPtr)I2C_ReadingTask, &taskParams, NULL); } void I2C_ReadingTask(UArg arg0, UArg arg1) { I2C_ReadingMessageStruc I2C_ReadingMessage; Semaphore_post(I2C_Sem); TEMPERATURE_SENSOR_ID_ENUM Sensor_i; I2C_Task_Handle = Task_self(); // double dbl_setpoint_Q = 0.0; while(1) { Mailbox_pend(I2C_ReadingMsgQ , &I2C_ReadingMessage, BIOS_WAIT_FOREVER); /* select the correct I2C bus */ if (I2C_ReadingMessage.messageId > WHS_start) { if (WHS_Type == WHS_TYPE_UNKNOWN) continue; Select_Main_WHS_Mux_Channel(); } else { if (Head_Type < HEAD_TYPE_UNKNOWN_WITH_CARD) continue; Select_Main_Head_Mux_Channel(); } //Report("------------ I2C task - messageId -------------", __FILE__,__LINE__, (int)(I2C_ReadingMessage.messageId), RpMessage, 0, 0); switch (I2C_ReadingMessage.messageId) { case Head_IO_Initialization: Head_IO_Init(); break; case Midtank_Pressure_Reading: //Report("Read_MidTank_Pressure_Sensor",__FILE__,__LINE__,255,RpWarning,0,0); Read_MidTank_Pressure_Sensor(I2C_ReadingMessage.parameter); break; case Heater_Current_Reading: //Report("Read_Heaters_Current",__FILE__,__LINE__,255,RpWarning,0,0); if((Head_Type > HEAD_TYPE_FLAT_WITHOUT_CARD)&&(I2C_ReadingMessage.parameter>=HEATER_DRYER_CURRENT_3)) Read_Head_ADC(I2C_ReadingMessage.parameter); // else // Read_Heaters_Current(I2C_ReadingMessage.parameter); break; case PT100_Reading: Set_HeadCard_PT100(); break; case HeaterWriting: Write_Head_Card_Heaters_Commands(); break; case Head_Init_PT100: HeadADCPT100_SensorInitConfig(); break; case Actuators_Control: HeadCard_Actuators_Control(I2C_ReadingMessage.parameter, /*(bool)I2C_ReadingMessage.parameter2,*/(bool)I2C_ReadingMessage.parameter3); break; case Actuators_Control_Stub: HeadCard_Actuators_Stub(I2C_ReadingMessage.parameter, (bool)I2C_ReadingMessage.parameter2,(bool)I2C_ReadingMessage.parameter3); break; case Actuators_Disable: HeadCard_Actuators_Disable(); break; case HeadFanInit: Head_Fans_Init(); break; case HeadFanControl: Head_Fan_PWM_Control(I2C_ReadingMessage.parameter, I2C_ReadingMessage.parameter2); break; case HeadFanReadTacho: Head_Fan_Read_Tacho(I2C_ReadingMessage.parameter); break; case HeadMagnetAction: if (I2C_ReadingMessage.parameter == OPEN_MAGNET) HeadCard_ActivateHeadMagnet(); else if (I2C_ReadingMessage.parameter == CLOSE_MAGNET) HeadCard_DeActivateHeadMagnet(); else //DISABLE_MAGNET HeadCard_HeadMagnet_Disable(); break; case HeadArcPressureAction: if (I2C_ReadingMessage.parameter == ENABLE) HeadCard_ActivateHeadPressureArcBlowers(); else if (I2C_ReadingMessage.parameter == DISABLE) HeadCard_DeActivateHeadPressureArcBlowers(); break; case HeadValveAction: HeadCard_Valve_Control(I2C_ReadingMessage.parameter); break; case Head_Inputs_Reading: Head_Read_IO_Reg(0x44, LOW_AND_HIGH);//BREAK__ZN1-12 + BREAK_HTIN Head_Read_IO_Reg(0x46, LOW_AND_HIGH);//READ HEAD CARD LS + ACT status + BREAK_HTOT break; case Head_Outputs_Latch_Writing: Head_Write_IO_Reg(0x42, LOW_AND_HIGH);//LATCH_RST - in over current + sensors card in ARC break; case Head_ACT_ON_Writing: Head_Write_IO_Reg(0x46,HIGH);//ACT ON break; // case DispenserReadData: // I2C4 moved to RFID task // Dispenser_EEPROM_Read_Data(I2C_ReadingMessage.parameter); // break; case WHS_PT100_Reading: for (Sensor_i = WHS_PT100_1_0X80_0; Sensor_i <= WHS_PT100_4_0X82_1; Sensor_i++) { WHS_PT100_Read( Sensor_i); } break; case READ_WHS_PT100_ID: for (Sensor_i = WHS_PT100_1_0X80_0; Sensor_i <= WHS_PT100_4_0X82_1; Sensor_i++) { WHS_PT100_Read( I2C_ReadingMessage.parameter); } break; case WHS_init_I2C_IO: WHS_IO_Init(); WHS_HW_Ver = WHS_Read_Hardware_Version(); break; case WHS_init_fan: init_WHS_fan(); break; case WHS_init_PT100: WHS_PT100_InitConfigReg(); break; case WHS_init_blower: WHS_init_Blower(); break; case WHS_init_A2D: WHS_MAX11614_Init(); break; case WHS_init_Rheostat: WHS_Rheostat_init(); break; case WHS_SET_FAN_SPEED: WHS_set_fan_speed(I2C_ReadingMessage.parameter, I2C_ReadingMessage.parameter2); //(fan_number, 0x20) break; case WHS_READ_FAN_TACHO: WHS_Read_fan_tach(I2C_ReadingMessage.parameter);//todo break; case WHS_READ_ALL_FAN_TACHO: Read_All_WHS_Fans_Tach(); break; case WHS_SET_VOLT_BLOWER_CONTROL: WHS_Set_Volt_Blower_Control(I2C_ReadingMessage.parameter); //(fan_number, 0x20) break; // case WHS_SETPOINT_Q_BLOWER: // dbl_setpoint_Q = (double)(I2C_ReadingMessage.parameter / 100) ; // WHS_Set_Blower_Control_Closed_Loop(dbl_setpoint_Q); // break; case WHS_READ_WASTE_TANK_CONT: waste_seq_cont(); break; case WHS_READ_WASTE_TANK_PERIODIC: waste_seq_step2(); break; case WHS_SET_VOC_VALVE: // Set_WHS_valve(VOC_VALVE, I2C_ReadingMessage.parameter, 0); Write_WHS_Valve_reg(); break; case WHS_SET_VAlVE_CARTRIDGE: // Set_WHS_valve(CARTRIDGE_VALVE, I2C_ReadingMessage.parameter, 0); Write_WHS_Valve_reg(); break; case WHS_SET_PUMP: // Write_WHS_pump(I2C_ReadingMessage.parameter); break; case WHS_READ_ADC: // WHS_MAX11614_Read_allADC(); break; case WHS_READ_GAS_SENSOR: // Read_Gas_Sensor(); break; case WHS_SET_RDAC: // WHS_WriteRdac(I2C_ReadingMessage.parameter); break; case WHS_SET_CLEAN_AIR: // //WHS_set_Rheostat_to_CLEAN_AIR(); Voc_Sensor_Zero_Calibration(); break; case WHS_I2C_EEPROM_WRITE: // WHS_I2C_EEprom_Write(I2C_ReadingMessage.parameter, I2C_ReadingMessage.parameter2, I2C_ReadingMessage.parameter3); break; case WHS_I2C_EEPROM_READ: // WHS_I2C_EEprom_Read(I2C_ReadingMessage.parameter, I2C_ReadingMessage.parameter2, I2C_ReadingMessage.parameter3); break; case WHS_I2C_RS485_DIRECTION_INIT: WHS_IO_RS485_Init(); break; case WHS_I2C_RS485_DIRECTION: RS485_Change_Direction(I2C_ReadingMessage.parameter); break; default: break; } } }