#include #include #include #include #include "include.h" #include "driverlib/gpio.h" #include "Drivers/USB_Communication/USBCDCD.h" #include "StateMachines/Initialization/PowerOffSequence.h" #include "drivers/Flash_Memory/FATFS/ff.h" #include "drivers/Flash_Memory/FATFS/Control_File_System.h" #include "drivers/adc_sampling/adc.h" #include "drivers/Heater/TemperatureSensor.h" #include "drivers/ADC_Sampling/adc.h" #include "Drivers/I2C_Communication/Head_Card/PT100/PT100_ADC.h" #include "Drivers/I2C_Communication/Head_Card/Fan/fan_click.h" #include "Drivers/I2C_Communication/Head_Card/Fan/Head_Fan.h" #include "drivers/Motors/Motor.h" #include "drivers/FPGA/FPGA_SPI_Comm.h" #include "Modules/IFS/ifs.h" //#include "graphics_adapter.h" extern uint8_t Input_Voltage; extern uint8_t Test_Read_Buf[4]; extern uint8_t Head_Fan_PWM_Command[2]; extern uint16_t Head_Fan_Tach[2]; void Stub_ProgressRequest(MessageContainer* requestContainer) { MessageContainer responseContainer; ProgressRequest* request = progress_request__unpack(NULL, requestContainer->data.len, requestContainer->data.data); //writeLine("Progress Request..."); ProgressResponse response = PROGRESS_RESPONSE__INIT; if((request->amount == 0xDE) && (request->delay < 8) && (request->delay >= 0)) // read dispenser type + LS status { response.progress = ((Dispenser_struct[request->delay].Type) << 8) + Dispenser_struct[request->delay].Status; response.has_progress = true; } else if((request->amount == 0xAD) && (request->delay == 0xAD01)) //undef AUTO_HOME_DISPENSERS { #undef AUTO_HOME_DISPENSERS response.progress = 01; response.has_progress = true; } else if((request->amount == 0xAD) && (request->delay == 0xAD00)) //define AUTO_HOME_DISPENSERS { #define AUTO_HOME_DISPENSERS response.progress = 01; response.has_progress = true; } else if((request->amount == 0x01) && ((request->delay &0x010000) == 0x010000)) //change mode powerset01 { response.progress = Power_Step_01_Mode(((request->delay &0x00FF00)>>8), request->delay &0x0000FF); response.has_progress = true; } else if((request->amount == 0xAB) && (request->delay == 0xAB)) //Get pressure with flow (orifice flow meter) { response.progress = Calculate_Pitot_Pressure(true); response.has_progress = true; } else if((request->amount == 0xAB) && (request->delay == 0x0)) //measured sensor voltage without flow (orifice flow meter) { response.progress = Calculate_Pitot_Pressure(false); response.has_progress = true; } else if((request->amount == 0xFAC) /*&& (request->delay == 0xFAC)*/) //Head Fan control { //Head_Fan_PWM_Command[0] = (request->delay & 0xFF) ; //Test_Head_fan_Click(); Head_Fan_PWM_Control(0, request->delay & 0xFF); //response.progress = Fan_Click_Info.Product_ID; response.progress = Head_Fan_Tach[0]; response.has_progress = true; } else if((request->amount == 0x0A) && ((request->delay >= 0) && (request->delay < 8))) //read the midtank calibration { response.progress = Initial_Offset_A[request->delay]; response.has_progress = true; } else if((request->amount == 0xB) && ((request->delay >= 0) && (request->delay < 8))) //read the midtank calibration { response.progress = Slope_B[request->delay]; response.has_progress = true; } else if((request->amount == 0x5C4E) && (request->delay == 0x5C4E)) //Screw Home Pos dir { test_Home_Pos(); } else if((request->amount == 0x100) && (request->delay == 0x100)) //head card PT100 { Test_HeadCard_PT100(TEMP_SENSE_ANALOG_DYEINGH_TEMP1); //response.progress = (double)Test_Read_Buf[0]; response.progress = (double)Data_ADC_Head; response.has_progress = true; } else if((request->amount == 0xCF) && (request->delay == 0xCF)) //Create File System on the Drive { #ifdef WATCHDOG ROM_WatchdogResetDisable(WATCHDOG0_BASE); uint32_t timeout = 0xFFFFFFFFU; ROM_WatchdogReloadSet(WATCHDOG0_BASE, timeout); #endif FRESULT iFResult = Init_Flash_File_System(true); if(iFResult != FR_OK) { LOG_ERROR (iFResult, "Error during init Flash File System"); assert(iFResult); } #ifdef WATCHDOG ROM_WatchdogResetEnable(WATCHDOG0_BASE); timeout = 120000000*3; ROM_WatchdogReloadSet(WATCHDOG0_BASE, timeout); #endif } else if((request->amount == 0x0C) && (request->delay == 0x0C)) //Get Gas Sensor { response.progress = (double)Calculate_Gas_Power_Consumption(); response.has_progress = true; } else if((request->amount == 0xDD) && (request->delay == 0xDD)) //Read Input Voltage { CheckAcInputVoltage(); response.progress = (double)Input_Voltage; response.has_progress = true; } else if((request->amount == 0x0CE) && (request->delay == 0x0CE)) //Get Gas Sensor { FlashInitAndLoad(); response.progress = (double)OK; response.has_progress = true; } else if(request->amount == 0x0CC) //Cùøàøïâò÷ Vùêïâùàïíî ø÷ãôíîã÷ { ResponseDemo(request->delay); response.progress = (double)OK; response.has_progress = true; } else if((request->amount == 0xDF) && (request->delay == 0xDF)) //Power off { PowerOffInit(); } else { response.has_progress = true; int i = 0; for (i = 0; i < request->amount; i++) { response.progress = i; responseContainer = createContainer(MESSAGE_TYPE__ProgressResponse, requestContainer->token, false, &response, &progress_response__pack, &progress_response__get_packed_size); uint8_t* container_buffer = malloc(message_container__get_packed_size(&responseContainer)); size_t container_size = message_container__pack(&responseContainer, container_buffer); free(responseContainer.data.data); SendChars((char*)container_buffer, container_size); //free(container_buffer); int co = 0; for (co = 0; co < request->delay; co++) { __delay_cycles(1000000); } } } responseContainer = createContainer(MESSAGE_TYPE__ProgressResponse, requestContainer->token, true, &response, &progress_response__pack, &progress_response__get_packed_size); uint8_t* container_buffer = malloc(message_container__get_packed_size(&responseContainer)); size_t container_size = message_container__pack(&responseContainer, container_buffer); free(responseContainer.data.data); //writeLine("Progress Completed!"); SendChars((char*)container_buffer, container_size); //free(container_buffer); return; }