diff options
Diffstat (limited to 'Software/Embedded_SW/Embedded/Modules/General/process.c')
| -rw-r--r-- | Software/Embedded_SW/Embedded/Modules/General/process.c | 121 |
1 files changed, 121 insertions, 0 deletions
diff --git a/Software/Embedded_SW/Embedded/Modules/General/process.c b/Software/Embedded_SW/Embedded/Modules/General/process.c new file mode 100644 index 000000000..f15c65f22 --- /dev/null +++ b/Software/Embedded_SW/Embedded/Modules/General/process.c @@ -0,0 +1,121 @@ +/* + * process.c + * + * Created on: 4 במרץ 2018 + * Author: shlomo + */ +//******************************************************************************************************************** +#include "include.h" +#include "process.h" + +#include <Modules/Stubs_Handler/DataDef.h> +#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); +} |
