/* * process.c * * Created on: 4 במרץ 2018 * Author: shlomo */ //******************************************************************************************************************** #include "include.h" #include "process.h" #include #include "heaters/heaters_ex.h" #include "PMR/Printing/UploadProcessParametersRequest.pb-c.h" #include "PMR/Printing/UploadProcessParametersResponse.pb-c.h" #include "PMR/Hardware/HardwarePidControlType.pb-c.h" #include "PMR/common/MessageContainer.pb-c.h" void ProcessRequestFunc(MessageContainer* requestContainer) { MessageContainer responseContainer; uint8_t* container_buffer; uint32_t status = 0; UploadProcessParametersRequest* request = upload_process_parameters_request__unpack(NULL, requestContainer->data.len, requestContainer->data.data); ProcessParameters* ProcessParams = request->processparameters; UploadProcessParametersResponse response = UPLOAD_PROCESS_PARAMETERS_RESPONSE__INIT; responseContainer = createContainer(MESSAGE_TYPE__UploadProcessParametersResponse, requestContainer->token, true, &response, &upload_process_parameters_request__pack, &upload_process_parameters_request__get_packed_size); container_buffer = malloc(message_container__get_packed_size(&responseContainer)); /* * * uint32_t HeaterCommandRequestMessage(int HeaterId, bool OnOff, int Temperature) * struct _ProcessParameters { protobuf_c_boolean has_dyeingspeed; double dyeingspeed; protobuf_c_boolean has_dryerbufferlength; double dryerbufferlength; protobuf_c_boolean has_mininkuptake; double mininkuptake; protobuf_c_boolean has_feedertension; double feedertension; protobuf_c_boolean has_pullertension; double pullertension; protobuf_c_boolean has_windertension; double windertension; protobuf_c_boolean has_headairflow; double headairflow; protobuf_c_boolean has_dryerairflow; double dryerairflow; protobuf_c_boolean has_tableindex; int32_t tableindex; }; */ if (ProcessParams->has_mixertemp) { if(ProcessParams->mixertemp) status |= HeaterCommandRequestMessage(HARDWARE_PID_CONTROL_TYPE__MixerHeater, true, ProcessParams->mixertemp); else status |= HeaterCommandRequestMessage(HARDWARE_PID_CONTROL_TYPE__MixerHeater, false, ProcessParams->mixertemp); } if (ProcessParams->has_headzone1temp) { if(ProcessParams->headzone1temp) status |= HeaterCommandRequestMessage(HARDWARE_PID_CONTROL_TYPE__HeadHeaterZ1, true, ProcessParams->headzone1temp); else status |= HeaterCommandRequestMessage(HARDWARE_PID_CONTROL_TYPE__HeadHeaterZ1, false, ProcessParams->headzone1temp); } if (ProcessParams->has_headzone2temp) { if(ProcessParams->headzone2temp) status |= HeaterCommandRequestMessage(HARDWARE_PID_CONTROL_TYPE__HeadHeaterZ2, true, ProcessParams->headzone2temp); else status |= HeaterCommandRequestMessage(HARDWARE_PID_CONTROL_TYPE__HeadHeaterZ2, false, ProcessParams->headzone2temp); } if (ProcessParams->has_headzone3temp) { if(ProcessParams->headzone3temp) status |= HeaterCommandRequestMessage(HARDWARE_PID_CONTROL_TYPE__HeadHeaterZ3, true, ProcessParams->headzone3temp); else status |= HeaterCommandRequestMessage(HARDWARE_PID_CONTROL_TYPE__HeadHeaterZ3, false, ProcessParams->headzone3temp); } if (ProcessParams->has_dryerzone1temp) { if(ProcessParams->dryerzone1temp) status |= HeaterCommandRequestMessage(HARDWARE_PID_CONTROL_TYPE__DryerHeater1000w, true, ProcessParams->dryerzone1temp); else status |= HeaterCommandRequestMessage(HARDWARE_PID_CONTROL_TYPE__DryerHeater1000w, false, ProcessParams->dryerzone1temp); } if (ProcessParams->has_dryerzone2temp) { if(ProcessParams->dryerzone2temp) status |= HeaterCommandRequestMessage(HARDWARE_PID_CONTROL_TYPE__DryerHeater200w1, true, ProcessParams->dryerzone2temp); else status |= HeaterCommandRequestMessage(HARDWARE_PID_CONTROL_TYPE__DryerHeater200w1, false, ProcessParams->dryerzone2temp); } if (ProcessParams->has_dryerzone3temp) { if(ProcessParams->dryerzone3temp) status |= HeaterCommandRequestMessage(HARDWARE_PID_CONTROL_TYPE__DryerHeater200w2, true, ProcessParams->dryerzone3temp); else status |= HeaterCommandRequestMessage(HARDWARE_PID_CONTROL_TYPE__DryerHeater200w2, false, ProcessParams->dryerzone3temp); } if (status) { responseContainer.has_error = true; responseContainer.error = (ErrorCode)status; } size_t container_size = message_container__pack(&responseContainer, container_buffer); SendChars((char*)container_buffer, container_size); free(container_buffer); free(requestContainer); }