/* * process.c * * Created on: 4 במרץ 2018 * Author: shlomo */ //******************************************************************************************************************** #include #include "include.h" #include "process.h" #include "heaters/heaters_ex.h" #include "PMR/Printing/ProcessParameters.pb-c.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" double dyeingspeed = 0; double dryerbufferlength = 0; double mininkuptake = 0; double feedertension = 0; double pullertension = 0; double windertension = 0; double headairflow = 0; double dryerairflow = 0; int32_t tableindex = 0; uint32_t HandleProcessParameters(ProcessParameters* ProcessParams) { uint32_t status = 0; 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 (ProcessParams->has_dyeingspeed) { dyeingspeed = ProcessParams->dyeingspeed; } if (ProcessParams->has_dryerbufferlength) { dryerbufferlength = ProcessParams->dryerbufferlength; } if (ProcessParams->has_mininkuptake) { mininkuptake = ProcessParams->mininkuptake; } if (ProcessParams->has_feedertension) { feedertension = ProcessParams->feedertension; } if (ProcessParams->has_pullertension) { pullertension = ProcessParams->pullertension; } if (ProcessParams->has_windertension) { windertension = ProcessParams->windertension; } if (ProcessParams->has_headairflow) { headairflow = ProcessParams->headairflow; } if (ProcessParams->has_dryerairflow) { dryerairflow = ProcessParams->dryerairflow; } return status; } 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_response__pack, &upload_process_parameters_response__get_packed_size); container_buffer = malloc(message_container__get_packed_size(&responseContainer)); status = HandleProcessParameters(ProcessParams); if (status) { responseContainer.has_error = true; responseContainer.error = (ErrorCode)status; } size_t container_size = message_container__pack(&responseContainer, container_buffer); free(responseContainer.data.data); SendChars(container_buffer, container_size); //free(container_buffer); //free(requestContainer); upload_process_parameters_request__free_unpacked(request,NULL); }